Index: branches/FACT++_part_filenames/.aux_dir/ar-lib
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/ar-lib	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/ar-lib	(revision 18732)
@@ -0,0 +1,270 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+# 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 <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+  echo "$me: $1" 1>&2
+  exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+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 in
+	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_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+  operation=$2
+  archive=$3
+  at_file_contents=`cat "$1"`
+  eval set x "$at_file_contents"
+  shift
+
+  for member
+  do
+    $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+  done
+}
+
+case $1 in
+  '')
+     func_error "no command.  Try '$0 --help' for more information."
+     ;;
+  -h | --h*)
+    cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "$me, version $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test $# -lt 3; then
+  func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+  if test $# -lt 2; then
+    func_error "you must specify a program, an action and an archive"
+  fi
+  case $1 in
+    -lib | -LIB \
+    | -ltcg | -LTCG \
+    | -machine* | -MACHINE* \
+    | -subsystem* | -SUBSYSTEM* \
+    | -verbose | -VERBOSE \
+    | -wx* | -WX* )
+      AR="$AR $1"
+      shift
+      ;;
+    *)
+      action=$1
+      shift
+      break
+      ;;
+  esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+  case $action in
+    d*) delete=yes  ;;
+    x*) extract=yes ;;
+    t*) list=yes    ;;
+    q*) quick=yes   ;;
+    r*) replace=yes ;;
+    s*) index=yes   ;;
+    S*)             ;; # the index is always updated implicitly
+    c*) create=yes  ;;
+    u*)             ;; # TODO: don't ignore the update modifier
+    v*)             ;; # TODO: don't ignore the verbose modifier
+    *)
+      func_error "unknown action specified"
+      ;;
+  esac
+  action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+  yes,* | ,yes)
+    ;;
+  yesyes*)
+    func_error "more than one action specified"
+    ;;
+  *)
+    func_error "no action specified"
+    ;;
+esac
+
+if test -n "$delete"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  for member
+  do
+    case $1 in
+      @*)
+        func_at_file "${1#@}" -REMOVE "$archive"
+        ;;
+      *)
+        func_file_conv "$1"
+        $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+        ;;
+    esac
+  done
+
+elif test -n "$extract"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  if test $# -gt 0; then
+    for member
+    do
+      case $1 in
+        @*)
+          func_at_file "${1#@}" -EXTRACT "$archive"
+          ;;
+        *)
+          func_file_conv "$1"
+          $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+          ;;
+      esac
+    done
+  else
+    $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+    do
+      $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+    done
+  fi
+
+elif test -n "$quick$replace"; then
+  if test ! -f "$orig_archive"; then
+    if test -z "$create"; then
+      echo "$me: creating $orig_archive"
+    fi
+    orig_archive=
+  else
+    orig_archive=$archive
+  fi
+
+  for member
+  do
+    case $1 in
+    @*)
+      func_file_conv "${1#@}"
+      set x "$@" "@$file"
+      ;;
+    *)
+      func_file_conv "$1"
+      set x "$@" "$file"
+      ;;
+    esac
+    shift
+    shift
+  done
+
+  if test -n "$orig_archive"; then
+    $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+  else
+    $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+  fi
+
+elif test -n "$list"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  $AR -NOLOGO -LIST "$archive" || exit $?
+fi
Index: branches/FACT++_part_filenames/.aux_dir/compile
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/compile	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/compile	(revision 18732)
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+# 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 <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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 <bug-automake@gnu.org>.
+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:
Index: branches/FACT++_part_filenames/.aux_dir/config.guess
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/config.guess	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/config.guess	(revision 18732)
@@ -0,0 +1,1558 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-06-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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 <http://www.gnu.org/licenses/>.
+#
+# 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").
+#
+# Originally written by Per Bothner.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2013 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    or1k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		case $UNAME_PROCESSOR in
+		    i386) UNAME_PROCESSOR=x86_64 ;;
+		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		esac
+	    fi
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+	"4"
+#else
+	""
+#endif
+	); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: branches/FACT++_part_filenames/.aux_dir/config.sub
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/config.sub	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/config.sub	(revision 18732)
@@ -0,0 +1,1791 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-08-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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 <http://www.gnu.org/licenses/>.
+#
+# 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 with a ChangeLog entry to config-patches@gnu.org.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2013 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* | \
+  kopensolaris*-gnu* | \
+  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 \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| 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 \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 \
+	| or1k | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| 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
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | 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-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| 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-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| 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-* \
+	| 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
+		;;
+	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
+		;;
+	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
+		;;
+	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
+		;;
+	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 | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | 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* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	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
+		;;
+	or1k-*)
+		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:
Index: branches/FACT++_part_filenames/.aux_dir/depcomp
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/depcomp	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/depcomp	(revision 18732)
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2013 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 <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/FACT++_part_filenames/.aux_dir/install-sh
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/install-sh	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/install-sh	(revision 18732)
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	# Protect names problematic for 'test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	[-=\(\)!]*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test X"$d" = X && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/FACT++_part_filenames/.aux_dir/ltmain.sh
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/ltmain.sh	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/ltmain.sh	(revision 18732)
@@ -0,0 +1,11156 @@
+#! /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 <gord@gnu.ai.mit.edu>, 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 <http://www.gnu.org/licenses/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.6 Debian-2.4.6-0.1"
+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 <http://www.gnu.org/licenses/>.
+
+# 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.nl >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.nl >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='[0m'
+        tc_bold='[1m';   tc_standout='[7m'
+        tc_red='[31m';   tc_green='[32m'
+        tc_blue='[34m';  tc_cyan='[36m'
+      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 <http://www.gnu.org/licenses/>.
+
+# 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 '<hooked_function_name>_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 (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool@gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    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 <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "$write_libobj"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name 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.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/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 <import library>.
+	            $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 >/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 *) &lt_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 <<EOF
+
+/* $cwrappersource - temporary wrapper executable 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 executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#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 <<EOF
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test yes = "$fast_install"; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  int rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, (size_t) argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (STREQ (argv[i], dumpscript_opt))
+	{
+EOF
+	    case $host in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (STREQ (argv[i], debug_opt))
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (STREQ (argv[i], ltwrapper_option_prefix))
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 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 <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    func_append newdeplibs " $i"
+		    i=
+		    ;;
+		  esac
+		fi
+		if test -n "$i"; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		    func_append newdeplibs " $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    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 I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      func_append newdeplibs " $i"
+		      i=
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i"; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		      func_append newdeplibs " $i"
+		    else
+		      droppeddeps=yes
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      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 a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_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\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test yes = "$want_nocaseglob"; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/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:
Index: branches/FACT++_part_filenames/.aux_dir/missing
===================================================================
--- branches/FACT++_part_filenames/.aux_dir/missing	(revision 18732)
+++ branches/FACT++_part_filenames/.aux_dir/missing	(revision 18732)
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 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 <http://www.gnu.org/licenses/>.
+
+# 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 <bug-automake@gnu.org>."
+    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:
Index: branches/FACT++_part_filenames/.macro_dir/ac_check_class.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ac_check_class.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ac_check_class.m4	(revision 18732)
@@ -0,0 +1,84 @@
+dnl @synopsis AC_CHECK_PACKAGE(PACKAGE, FUNCTION, LIBRARY , HEADERFILE [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Provides --with-PACKAGE, --with-PACKAGE-include and --with-PACKAGE-libdir
+dnl options to configure. Supports the now standard --with-PACKAGE=DIR 
+dnl approach where the package's include dir and lib dir are underneath DIR,
+dnl but also allows the include and lib directories to be specified seperately
+dnl
+dnl adds the extra -Ipath to CFLAGS if needed 
+dnl adds extra -Lpath to LD_FLAGS if needed
+dnl searches for the FUNCTION in the LIBRARY with 
+dnl AC_CHECK_LIBRARY and thus adds the lib to LIBS
+dnl
+dnl defines HAVE_PKG_PACKAGE if it is found, (where PACKAGE in the 
+dnl HAVE_PKG_PACKAGE is replaced with the actual first parameter passed)
+dnl note that autoheader will complain of not having the HAVE_PKG_PACKAGE and you 
+dnl will have to add it to acconfig.h manually
+dnl
+dnl @version $Id$
+dnl @author Caolan McNamara <caolan@skynet.ie>
+dnl
+dnl with fixes from...
+dnl Alexandre Duret-Lutz <duret_g@lrde.epita.fr>
+
+AC_DEFUN([AC_CHECK_CLASS],
+[
+
+AC_ARG_WITH($1,
+[  --with-$1[=DIR]	root directory of $1 installation],
+with_$1=$withval 
+if test "${with_$1}" != yes; then
+	$1_include="$withval/include" 
+	$1_libdir="$withval/lib"
+fi
+)
+
+AC_ARG_WITH($1-include,
+[  --with-$1-include=DIR        specify exact include dir for $1 headers (e.g. $4)],
+$1_include="$withval")
+
+AC_ARG_WITH($1-libdir,
+[  --with-$1-libdir=DIR        specify exact library dir for $1 library (e.g. lib$3)
+  --without-$1        disables $1 usage completely], 
+$1_libdir="$withval")
+
+if test "${with_$1}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${$1_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${$1_libdir}"
+	fi
+	if test "${$1_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${$1_include}"
+		CFLAGS="$CFLAGS -I${$1_include}"
+	fi
+
+        no_good=no
+
+	AC_CHECK_HEADER($4,,no_good=yes)
+        
+        AC_LANG_PUSH([C++])
+        AC_CHECK_CPP($3, [#include <$4>] , [$2],,no_good=yes, $7)
+        AC_LANG_POP([C++])
+
+	if test "$no_good" = yes; then
+dnl	broken
+		ifelse([$6], , , [$6])
+		
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+dnl	fixed
+		ifelse([$5], , , [$5])
+
+		AC_DEFINE(HAVE_PKG_$1)
+	fi
+
+fi
+
+])
Index: branches/FACT++_part_filenames/.macro_dir/ac_check_cpp.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ac_check_cpp.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ac_check_cpp.m4	(revision 18732)
@@ -0,0 +1,38 @@
+# AC_CHECK_CPPB(LIBRARY, [PROLOGUE], [BODY], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES])
+#
+# AC_LANG_PUSH([C++])
+# AC_CHECK_CPP(gmock,
+#   [#include ],
+#   [testing::Cardinality dummy],
+#   [HAVE_GMOCK=1],
+#   [AC_MSG_WARN([libgmock is not installed.])
+# AC_LANG_POP([C++])
+#
+
+AC_DEFUN([AC_CHECK_CPP], 
+[
+
+   m4_ifval([$4], , [AH_CHECK_LIB([$1])])
+
+   AS_LITERAL_IF([$1],
+   	[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])],
+   	[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1''_$3])])
+
+   AC_CACHE_CHECK([for $3 in -l$1], [ac_Lib], [
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-l$1 $6 $LIBS"
+   	AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],
+   		[AS_VAR_SET([ac_Lib], [yes])],
+   		[AS_VAR_SET([ac_Lib], [no])])
+   	LIBS=$ac_check_lib_save_LIBS])
+   	AS_IF([test AS_VAR_GET([ac_Lib]) = yes], [
+   		m4_default([$4], [
+           		AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
+   			LIBS="-l$1 $LIBS"
+   		])
+           ],
+   [$5])
+   AS_VAR_POPDEF([ac_Lib])
+
+])
+
Index: branches/FACT++_part_filenames/.macro_dir/ac_check_package.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ac_check_package.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ac_check_package.m4	(revision 18732)
@@ -0,0 +1,80 @@
+dnl @synopsis AC_CHECK_PACKAGE(PACKAGE, FUNCTION, LIBRARY , HEADERFILE [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Provides --with-PACKAGE, --with-PACKAGE-include and --with-PACKAGE-libdir
+dnl options to configure. Supports the now standard --with-PACKAGE=DIR 
+dnl approach where the package's include dir and lib dir are underneath DIR,
+dnl but also allows the include and lib directories to be specified seperately
+dnl
+dnl adds the extra -Ipath to CFLAGS if needed 
+dnl adds extra -Lpath to LD_FLAGS if needed
+dnl searches for the FUNCTION in the LIBRARY with 
+dnl AC_CHECK_LIBRARY and thus adds the lib to LIBS
+dnl
+dnl defines HAVE_PKG_PACKAGE if it is found, (where PACKAGE in the 
+dnl HAVE_PKG_PACKAGE is replaced with the actual first parameter passed)
+dnl note that autoheader will complain of not having the HAVE_PKG_PACKAGE and you 
+dnl will have to add it to acconfig.h manually
+dnl
+dnl @version $Id$
+dnl @author Caolan McNamara <caolan@skynet.ie>
+dnl
+dnl with fixes from...
+dnl Alexandre Duret-Lutz <duret_g@lrde.epita.fr>
+
+AC_DEFUN([AC_CHECK_PACKAGE],
+[
+
+AC_ARG_WITH($1,
+[  --with-$1[=DIR]	root directory of $1 installation],
+with_$1=$withval 
+if test "${with_$1}" != yes; then
+	$1_include="$withval/include" 
+	$1_libdir="$withval/lib"
+fi
+)
+
+AC_ARG_WITH($1-include,
+[  --with-$1-include=DIR        specify exact include dir for $1 headers (e.g. $4)],
+$1_include="$withval")
+
+AC_ARG_WITH($1-libdir,
+[  --with-$1-libdir=DIR        specify exact library dir for $1 library (e.g. lib$3)
+  --without-$1        disables $1 usage completely], 
+$1_libdir="$withval")
+
+if test "${with_$1}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${$1_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${$1_libdir}"
+	fi
+	if test "${$1_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${$1_include}"
+		CFLAGS="$CFLAGS -I${$1_include}"
+	fi
+
+        no_good=no
+
+	AC_CHECK_HEADER($4,,no_good=yes)
+	AC_CHECK_LIB($3,$2,,no_good=yes)
+	if test "$no_good" = yes; then
+dnl	broken
+		ifelse([$6], , , [$6])
+		
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+dnl	fixed
+		ifelse([$5], , , [$5])
+
+		AC_DEFINE(HAVE_PKG_$1)
+	fi
+
+fi
+
+])
Index: branches/FACT++_part_filenames/.macro_dir/ac_check_readline.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ac_check_readline.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ac_check_readline.m4	(revision 18732)
@@ -0,0 +1,58 @@
+dnl Rewritten from scratch. --wojtekka
+dnl $Id: readline.m4 1323 2003-01-19 17:28:54Z wojtekka $
+
+AC_DEFUN([AC_CHECK_READLINE],[
+  AC_SUBST(READLINE_LIBS)
+  AC_SUBST(READLINE_INCLUDES)
+
+  AC_ARG_WITH(readline,
+    [[  --with-readline[=dir]   Compile with readline/locate base dir]],
+    if test "x$withval" = "xno" ; then
+      without_readline=yes
+    elif test "x$withval" != "xyes" ; then
+      with_arg="$withval/include:-L$withval/lib $withval/include/readline:-L$withval/lib"
+    fi)
+
+  AC_MSG_CHECKING(for readline.h)
+
+  if test "x$without_readline" != "xyes"; then
+    for i in $with_arg \
+	     /usr/include: \
+	     /usr/local/include:-L/usr/local/lib \
+             /usr/freeware/include:-L/usr/freeware/lib32 \
+	     /usr/pkg/include:-L/usr/pkg/lib \
+	     /sw/include:-L/sw/lib \
+	     /cw/include:-L/cw/lib \
+	     /net/caladium/usr/people/piotr.nba/temp/pkg/include:-L/net/caladium/usr/people/piotr.nba/temp/pkg/lib \
+	     /boot/home/config/include:-L/boot/home/config/lib; do
+    
+      incl=`echo "$i" | sed 's/:.*//'`
+      lib=`echo "$i" | sed 's/.*://'`
+
+      if test -f $incl/readline/readline.h ; then
+        AC_MSG_RESULT($incl/readline/readline.h)
+        READLINE_LIBS="$lib -lreadline"
+	if test "$incl" != "/usr/include"; then
+	  READLINE_INCLUDES="-I$incl/readline -I$incl"
+	else
+	  READLINE_INCLUDES="-I$incl/readline"
+	fi
+        AC_DEFINE(HAVE_READLINE, 1, [define if You want readline])
+        have_readline=yes
+        break
+      elif test -f $incl/readline.h -a "x$incl" != "x/usr/include"; then
+        AC_MSG_RESULT($incl/readline.h)
+        READLINE_LIBS="$lib -lreadline"
+        READLINE_INCLUDES="-I$incl"
+        AC_DEFINE(HAVE_READLINE, 1, [define if You want readline])
+        have_readline=yes
+        break
+      fi
+    done
+  fi
+
+  if test "x$have_readline" != "xyes"; then
+    AC_MSG_RESULT(not found)
+  fi
+])
+
Index: branches/FACT++_part_filenames/.macro_dir/ac_find_motif.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ac_find_motif.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ac_find_motif.m4	(revision 18732)
@@ -0,0 +1,263 @@
+dnl
+dnl AC_FIND_MOTIF : find OSF/Motif or LessTif, and provide variables
+dnl     to easily use them in a Makefile.
+dnl
+dnl Adapted from a macro by Andreas Zeller.
+dnl
+dnl The variables provided are :
+dnl     MOTIF_LDFLAGS              (e.g. -L/usr/lesstif/lib -lXm)
+dnl     MOTIF_INCL           (e.g. -I/usr/lesstif/lib)
+dnl     motif_libraries         (e.g. /usr/lesstif/lib)
+dnl     motif_includes          (e.g. /usr/lesstif/include)
+dnl
+dnl The MOTIF_LDFLAGS and MOTIF_INCL variables should be fit to put on
+dnl your application's link line in your Makefile.
+dnl
+dnl Oleo CVS Id: motif.m4,v 1.9 1999/04/09 11:46:49 danny
+dnl LessTif CVS $Id: ac_find_motif.m4,v 1.3 2004/11/30 16:30:33 paul Exp $
+dnl
+AC_DEFUN([AC_FIND_MOTIF],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+AC_REQUIRE([AC_FIND_LIBXP])
+
+motif_includes=
+motif_libraries=
+
+dnl AC_ARG_WITH(motif,
+dnl [  --without-motif         do not use Motif widgets])
+dnl Treat --without-motif like
+dnl --without-motif-includes --without-motif-libraries.
+dnl if test "$with_motif" = "no"
+dnl then
+dnl   motif_includes=none
+dnl   motif_libraries=none
+dnl fi
+
+AC_ARG_WITH(motif-includes,
+[  --with-motif-includes=DIR    Motif include files are in DIR],
+motif_includes="$withval")
+
+AC_ARG_WITH(motif-libraries,
+[  --with-motif-libraries=DIR   Motif libraries are in DIR],
+motif_libraries="$withval")
+
+AC_MSG_CHECKING(for Motif)
+
+#
+#
+# Search the include files.
+#
+if test "$motif_includes" = ""; then
+AC_CACHE_VAL(ac_cv_motif_includes,
+[
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_includes="none"
+AC_TRY_COMPILE([#include <Xm/Xm.h>],[int a;],
+[
+# Xm/Xm.h is in the standard search path.
+ac_cv_motif_includes=
+],
+[
+# Xm/Xm.h is not in the standard search path.
+# Locate it and put its directory in `motif_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/include is used for fink under OSX
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+           /usr/include/Motif2.1 /usr/include/Motif2.0 /usr/include/Motif1.2  \
+           /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 \
+           /usr/X11/include /usr/X11R6/include /usr/X11R5/include \
+           /usr/dt/include /usr/openwin/include \
+           /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+           "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+           "${prefix}"/include/* /usr/include/* /usr/local/include/* \
+           /sw/include; do
+if test -f "$dir/Xm/Xm.h"; then
+ac_cv_motif_includes="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+])
+motif_includes="$ac_cv_motif_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$motif_libraries" = ""; then
+AC_CACHE_VAL(ac_cv_motif_libraries,
+[
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_libraries="none"
+AC_TRY_LINK([#include <Xm/Xm.h>],[XtToolkitInitialize();],
+[
+# libXm.a is in the standard search path.
+ac_cv_motif_libraries=
+],
+[
+# libXm.a is not in the standard search path.
+# Locate it and put its directory in `motif_libraries'
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/lesstif is used on Linux (Lesstif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/lib is used under fink on OSX
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+           /usr/lib/Motif2.1 /usr/lib/Motif2.0 /usr/lib/Motif1.2 \
+           /usr/lib/X11 /usr/lib/X11R6 /usr/lib/X11R5 \
+           /usr/X11/lib /usr/X11R6/lib /usr/X11R5/lib \
+           /usr/dt/lib /usr/openwin/lib \
+           /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+           /usr/lesstif*/lib /usr/lib/Lesstif* \
+           "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+           "${prefix}"/lib/* /usr/lib/* /usr/local/lib/* \
+           /sw/lib; do
+if test -d "$dir" && test "`ls $dir/libXm.* 2> /dev/null`" != ""; then
+ac_cv_motif_libraries="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+])
+#
+motif_libraries="$ac_cv_motif_libraries"
+fi
+#
+# Provide an easier way to link
+#
+if test "$motif_includes" = "none" -o "$motif_libraries" = "none"; then
+        with_motif="no"
+else
+        with_motif="yes"
+fi
+
+AC_FIND_LIBXP
+if test "$LT_HAVE_XP" = "yes"; then
+        XPLIB="-lXp -lXext"
+else
+        XPLIB=""
+fi
+
+if test "$with_motif" != "no"; then
+        if test "$motif_libraries" = ""; then
+                MOTIF_LDFLAGS="-lXm $XPLIB"
+                MOTIF_LIBS="-lXm $XPLIB"
+        else
+                MOTIF_LDFLAGS="-L$motif_libraries -lXm $XPLIB"
+                MOTIF_LIBS="-L$motif_libraries -lXm $XPLIB"
+        fi
+        if test "$motif_includes" != ""; then
+                MOTIF_INCL="-I$motif_includes"
+                MOTIF_CFLAGS="-I$motif_includes"
+        fi
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#       AC_DEFINE(HAVE_MOTIF)
+else
+        with_motif="no"
+fi
+#
+AC_SUBST(MOTIF_LDFLAGS)
+AC_SUBST(MOTIF_INCL)
+AC_SUBST(MOTIF_CFLAGS)
+AC_SUBST(MOTIF_LIBS)
+#
+#
+#
+motif_libraries_result="$motif_libraries"
+motif_includes_result="$motif_includes"
+test "$motif_libraries_result" = "" && motif_libraries_result="in default path"
+test "$motif_includes_result" = "" && motif_includes_result="in default path"
+test "$motif_libraries_result" = "none" && motif_libraries_result="(none)"
+test "$motif_includes_result" = "none" && motif_includes_result="(none)"
+AC_MSG_RESULT(
+  [libraries $motif_libraries_result, headers $motif_includes_result])
+])dnl
+
+dnl
+dnl Check for libXp
+dnl In fact this check ensures that
+dnl  - <X11/extensions/Print.h> and
+dnl  - both libXp libXext
+dnl are in place
+dnl Note that a simpler check only for the libraries would not
+dnl be sufficient perhaps.
+dnl If the test succeeds it defines Have_Libxp within our
+dnl Makefiles. Perhaps one should immediately add those libs
+dnl to link commands which include libXm version2.1?!
+dnl
+AC_DEFUN([AC_FIND_LIBXP],
+[AC_REQUIRE([AC_PATH_X])
+AC_CACHE_CHECK(whether libXp is available, lt_cv_libxp,
+[lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+AC_TRY_LINK([
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+],[
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+],
+lt_cv_libxp=yes,
+lt_cv_libxp=no)
+])
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+AM_CONDITIONAL(HAS_LIBXP, test "$lt_cv_libxp" = "yes")
+AC_SUBST(LT_HAVE_XP)
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+])
Index: branches/FACT++_part_filenames/.macro_dir/ax_cxx_compile_stdcxx_0x.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ax_cxx_compile_stdcxx_0x.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ax_cxx_compile_stdcxx_0x.m4	(revision 18732)
@@ -0,0 +1,107 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_0x.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_0X
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++0x
+#   standard.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#
+#   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 7
+
+AU_ALIAS([AC_CXX_COMPILE_STDCXX_0X], [AX_CXX_COMPILE_STDCXX_0X])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_0X], [
+  AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
+  ax_cv_cxx_compile_cxx0x_native,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_native=yes, ax_cv_cxx_compile_cxx0x_native=no)
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
+  ax_cv_cxx_compile_cxx0x_cxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_cxx=yes, ax_cv_cxx_compile_cxx0x_cxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
+  ax_cv_cxx_compile_cxx0x_gxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_gxx=yes, ax_cv_cxx_compile_cxx0x_gxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  if test "$ax_cv_cxx_compile_cxx0x_native" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_cxx" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then
+    AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
+  fi
+])
Index: branches/FACT++_part_filenames/.macro_dir/libtool.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/libtool.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/libtool.m4	(revision 18732)
@@ -0,0 +1,8388 @@
+# 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 <http://www.gnu.org/licenses/>.
+])
+
+# 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:
+#
+#    <var>='`$ECHO "$<var>" | $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 <bug-libtool@gnu.org>."
+
+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
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# 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 <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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<name>.so
+      # instead of lib<name>.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 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi])
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >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 <conftest2.i >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 <conftest2.i >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 <jrb3@best.com> 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 <jrb3@best.com> 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
Index: branches/FACT++_part_filenames/.macro_dir/ltoptions.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ltoptions.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ltoptions.m4	(revision 18732)
@@ -0,0 +1,437 @@
+# 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])])
Index: branches/FACT++_part_filenames/.macro_dir/ltsugar.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ltsugar.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ltsugar.m4	(revision 18732)
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 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
+])
Index: branches/FACT++_part_filenames/.macro_dir/ltversion.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/ltversion.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/ltversion.m4	(revision 18732)
@@ -0,0 +1,23 @@
+# 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)
+])
Index: branches/FACT++_part_filenames/.macro_dir/lt~obsolete.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/lt~obsolete.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/lt~obsolete.m4	(revision 18732)
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 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])])
Index: branches/FACT++_part_filenames/.macro_dir/mysql++_devel.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/mysql++_devel.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/mysql++_devel.m4	(revision 18732)
@@ -0,0 +1,131 @@
+#-######################################################################
+# mysql++.m4 - Example autoconf macro showing how to find MySQL++
+#	library and header files.
+#
+# Copyright (c) 2004-2009 by Educational Technology Resources, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+#
+# This 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with MySQL++; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+# USA
+#-######################################################################
+
+dnl @synopsis MYSQLPP_DEVEL
+dnl 
+dnl This macro tries to find the MySQL++ library and header files.
+dnl
+dnl We define the following configure script flags:
+dnl
+dnl		--with-mysqlpp: Give prefix for both library and headers, and try
+dnl			to guess subdirectory names for each.  (e.g. tack /lib and
+dnl			/include onto given dir name, and other common schemes.)
+dnl		--with-mysqlpp-lib: Similar to --with-mysqlpp, but for library only.
+dnl		--with-mysqlpp-include: Similar to --with-mysqlpp, but for headers
+dnl			only.
+dnl
+dnl This macro depends on having the default compiler and linker flags
+dnl set up for building programs against the MySQL C API.  The mysql.m4
+dnl macro in this directory fits this bill; run it first.
+dnl
+dnl @version 1.3, 2009/11/22
+dnl @author Warren Young <mysqlpp@etr-usa.com>
+
+AC_DEFUN([MYSQLPP_DEVEL],
+[
+	dnl
+	dnl Set up configure script macros
+	dnl
+	AC_ARG_WITH(mysqlpp,
+		[  --with-mysqlpp=<path>     path containing MySQL++ header and library subdirs],
+		[MYSQLPP_lib_check="$with_mysqlpp/lib64 $with_mysqlpp/lib $with_mysqlpp/lib64/mysql++ $with_mysqlpp/lib/mysql++"
+		  MYSQLPP_inc_check="$with_mysqlpp/include $with_mysqlpp/include/mysql++"],
+		[MYSQLPP_lib_check="/usr/local/mysql++/lib64 /usr/local/mysql++/lib /usr/local/lib64/mysql++ /usr/local/lib/mysql++ /opt/mysql++/lib64 /opt/mysql++/lib /usr/lib64/mysql++ /usr/lib/mysql++ /usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib"
+		  MYSQLPP_inc_check="/usr/local/mysql++/include /usr/local/include/mysql++ /opt/mysql++/include /usr/local/include/mysql++ /usr/local/include /usr/include/mysql++ /usr/include"])
+	AC_ARG_WITH(mysqlpp-lib,
+		[  --with-mysqlpp-lib=<path> directory path of MySQL++ library],
+		[MYSQLPP_lib_check="$with_mysqlpp_lib $with_mysqlpp_lib/lib64 $with_mysqlpp_lib/lib $with_mysqlpp_lib/lib64/mysql $with_mysqlpp_lib/lib/mysql"])
+	AC_ARG_WITH(mysqlpp-include,
+		[  --with-mysqlpp-include=<path> directory path of MySQL++ headers],
+		[MYSQLPP_inc_check="$with_mysqlpp_include $with_mysqlpp_include/include $with_mysqlpp_include/include/mysql"])
+
+	dnl
+	dnl Look for MySQL++ library
+	dnl
+	AC_CACHE_CHECK([for MySQL++ library location], [ac_cv_mysqlpp_lib],
+	[
+		for dir in $MYSQLPP_lib_check
+		do
+			if test -d "$dir" && \
+				( test -f "$dir/libmysqlpp.so" ||
+				  test -f "$dir/libmysqlpp.a" )
+			then
+				ac_cv_mysqlpp_lib=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_lib"
+		then
+			AC_MSG_ERROR([Didn't find the MySQL++ library dir in '$MYSQLPP_lib_check'])
+		fi
+
+		case "$ac_cv_mysqlpp_lib" in
+			/* ) ;;
+			* )  AC_MSG_ERROR([The MySQL++ library directory ($ac_cv_mysqlpp_lib) must be an absolute path.]) ;;
+		esac
+	])
+	AC_SUBST([MYSQLPP_LIB_DIR],[$ac_cv_mysqlpp_lib])
+
+	dnl
+	dnl Look for MySQL++ header file directory
+	dnl
+	AC_CACHE_CHECK([for MySQL++ include path], [ac_cv_mysqlpp_inc],
+	[
+		for dir in $MYSQLPP_inc_check
+		do
+			if test -d "$dir" && test -f "$dir/mysql++.h"
+			then
+				ac_cv_mysqlpp_inc=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_inc"
+		then
+			AC_MSG_ERROR([Didn't find the MySQL++ header dir in '$MYSQLPP_inc_check'])
+		fi
+
+		case "$ac_cv_mysqlpp_inc" in
+			/* ) ;;
+			* )  AC_MSG_ERROR([The MySQL++ header directory ($ac_cv_mysqlpp_inc) must be an absolute path.]) ;;
+		esac
+	])
+	AC_SUBST([MYSQLPP_INC_DIR],[$ac_cv_mysqlpp_inc])
+
+	dnl
+	dnl Now check that the above checks resulted in -I and -L flags that
+	dnl let us build actual programs against MySQL++.
+	dnl
+	case "$ac_cv_mysqlpp_lib" in
+	  /usr/lib) ;;
+	  *) LDFLAGS="$LDFLAGS -L${ac_cv_mysqlpp_lib}" ;;
+	esac
+	CPPFLAGS="$CPPFLAGS -I${ac_cv_mysqlpp_inc} -I${MYSQL_C_INC_DIR}"
+	AC_MSG_CHECKING([that we can build MySQL++ programs])
+	AC_COMPILE_IFELSE(
+		[AC_LANG_PROGRAM([#include <mysql++.h>],
+			[mysqlpp::Connection c(false)])],
+		AC_MSG_RESULT([yes]),
+		AC_MSG_ERROR([no]))
+]) dnl End MYSQLPP_DEVEL
+
Index: branches/FACT++_part_filenames/.macro_dir/mysql_devel.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/mysql_devel.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/mysql_devel.m4	(revision 18732)
@@ -0,0 +1,47 @@
+dnl @synopsis MYSQL_DEVEL
+dnl 
+dnl This macro tries to find MySQL C API header locations.
+dnl
+dnl Based on MYSQL_C_API_LOCATION from
+dnl
+dnl    @version 1.4, 2009/05/28
+dnl    @author Warren Young <mysqlpp@etr-usa.com>
+dnl
+AC_DEFUN([MYSQL_DEVEL],
+[
+	MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /sw/include/mysql"
+	AC_ARG_WITH(mysql-include,
+		[  --with-mysql-include=<path> directory path of MySQL header installation],
+		[MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql"])
+
+	#
+	# Look for MySQL C API headers
+	#
+	AC_MSG_CHECKING([for MySQL include directory])
+	MYSQL_C_INC_DIR=
+	for m in $MYSQL_inc_check
+	do
+		if test -d "$m" && test -f "$m/mysql.h"
+		then
+			MYSQL_C_INC_DIR=$m
+			break
+		fi
+	done
+
+	if test -z "$MYSQL_C_INC_DIR"
+	then
+		AC_MSG_ERROR([Didn't find the MySQL include dir in '$MYSQL_inc_check'])
+	fi
+
+	case "$MYSQL_C_INC_DIR" in
+		/* ) ;;
+		* )  AC_MSG_ERROR([The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path.]) ;;
+	esac
+
+	AC_MSG_RESULT([$MYSQL_C_INC_DIR])
+
+	CPPFLAGS="$CPPFLAGS -I${MYSQL_C_INC_DIR}"
+
+	AC_SUBST(MYSQL_C_INC_DIR)
+]) dnl MYSQL_DEVEL
+
Index: branches/FACT++_part_filenames/.macro_dir/qt4_do_it_all.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/qt4_do_it_all.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/qt4_do_it_all.m4	(revision 18732)
@@ -0,0 +1,214 @@
+dnl check a particular libname
+AC_DEFUN([QT4_TRY_LINK],
+[
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $1"
+	AC_TRY_LINK([
+	#include <qglobal.h>
+	#include <qstring.h>
+		],
+	[
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+	],
+	qt4_cv_libname=$1,
+	)
+	LIBS="$SAVE_LIBS"
+])
+
+dnl check we can do a compile
+AC_DEFUN([QT4_CHECK_COMPILE],
+[
+	AC_MSG_CHECKING([for Qt 4 library name])
+
+	AC_CACHE_VAL(qt4_cv_libname,
+	[
+		AC_LANG_CPLUSPLUS
+		SAVE_CXXFLAGS=$CXXFLAGS
+		CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
+		for libname in -lQtCore -lQtCore4 '-framework QtCore'
+		do
+			QT4_TRY_LINK($libname)
+			if test -n "$qt4_cv_libname"; then
+				QT4_CORE_LIB="$qt4_cv_libname"
+				break;
+			fi
+		done
+		qt4_cv_libname=
+		for libname in '-lQtCore -lQtGui -lQtSql' \
+		               '-lQtCore4 -lQtGui4 -lQtSql4' \
+		               '-framework QtCore -framework QtGui -framework QtSql'
+		do
+			QT4_TRY_LINK($libname)
+			if test -n "$qt4_cv_libname"; then
+				break;
+			fi
+		done
+		CXXFLAGS=$SAVE_CXXFLAGS
+	])
+
+	if test -z "$qt4_cv_libname"; then
+		AC_MSG_RESULT([failed])
+		if test "$FATAL" = 1 ; then
+			AC_MSG_ERROR([Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !])
+		fi
+	else
+		AC_MSG_RESULT([$qt4_cv_libname])
+	fi
+])
+
+dnl get Qt version we're using
+AC_DEFUN([QT4_GET_VERSION],
+[
+	AC_CACHE_CHECK([Qt 4 version],lyx_cv_qt4version,
+	[
+		AC_LANG_CPLUSPLUS
+		SAVE_CPPFLAGS=$CPPFLAGS
+		CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
+
+		cat > conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+#include "confdefs.h"
+#include <qglobal.h>
+"%%%"QT_VERSION_STR"%%%"
+EOF
+		lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+			grep '^"%%%"'  2>/dev/null | \
+			sed -e 's/"%%%"//g' -e 's/"//g'`
+		rm -f conftest.$ac_ext
+		CPPFLAGS=$SAVE_CPPFLAGS
+	])
+
+	QT4_VERSION=$lyx_cv_qt4version
+	AC_SUBST(QT4_VERSION)
+])
+
+dnl start here
+AC_DEFUN([QT4_DO_IT_ALL],
+[
+	dnl this variable is precious
+	AC_ARG_VAR(QT4DIR, [the place where the Qt 4 files are, e.g. /usr/lib/qt4])
+
+	dnl Please leave this alone. I use this file in
+	dnl oprofile.
+	FATAL=0
+
+	AC_ARG_WITH(qt4-dir, [AC_HELP_STRING([--with-qt4-dir], [where the root of Qt 4 is installed])],
+		[ qt4_cv_dir=`eval echo "$withval"/` ])
+
+	AC_ARG_WITH(qt4-includes, [AC_HELP_STRING([--with-qt4-includes], [where the Qt 4 includes are])],
+		[ qt4_cv_includes=`eval echo "$withval"` ])
+
+	AC_ARG_WITH(qt4-libraries, [AC_HELP_STRING([--with-qt4-libraries], [where the Qt 4 library is installed])],
+		[  qt4_cv_libraries=`eval echo "$withval"` ])
+
+	dnl pay attention to $QT4DIR unless overridden
+	if test -z "$qt4_cv_dir"; then
+		qt4_cv_dir=$QT4DIR
+	fi
+
+	dnl derive inc/lib if needed
+	if test -n "$qt4_cv_dir"; then
+		if test -z "$qt4_cv_includes"; then
+			qt4_cv_includes=$qt4_cv_dir/include
+		fi
+		if test -z "$qt4_cv_libraries"; then
+			qt4_cv_libraries=$qt4_cv_dir/lib
+		fi
+	fi
+
+	dnl compute the binary dir too
+	if test -n "$qt4_cv_dir"; then
+		qt4_cv_bin=$qt4_cv_dir/bin
+	fi
+
+	dnl Check if it possible to do a pkg-config
+	PKG_PROG_PKG_CONFIG
+	if test -n "$PKG_CONFIG" ; then
+		QT4_DO_PKG_CONFIG
+	fi
+	if test "$pkg_failed" != "no" ; then
+		QT4_DO_MANUAL_CONFIG
+	fi
+	AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH)
+	AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH)
+	AC_PATH_PROGS(RCC4, [rcc-qt4 rcc],[],$qt4_cv_bin:$PATH)
+])
+
+AC_DEFUN([QT4_DO_PKG_CONFIG],
+[
+	dnl tell pkg-config to look also in $qt4_cv_dir/lib.
+	save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+	if test -n "$qt4_cv_dir" ; then
+	  PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
+	  export PKG_CONFIG_PATH
+	fi
+	PKG_CHECK_MODULES(QT4_CORE, QtCore,,[:])
+	if test "$pkg_failed" = "no" ; then
+		QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
+		AC_SUBST(QT4_CORE_INCLUDES)
+		QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
+		AC_SUBST(QT4_CORE_LDFLAGS)
+		QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
+		AC_SUBST(QT4_CORE_LIB)
+	fi
+	PKG_CHECK_MODULES(QT4_FRONTEND, QtCore QtGui QtSql,,[:])
+	if test "$pkg_failed" = "no" ; then
+		QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
+		dnl QT4_LDFLAGS=$QT4_FRONTEND_LIBS
+		QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui QtSql`
+		AC_SUBST(QT4_INCLUDES)
+		AC_SUBST(QT4_LDFLAGS)
+		QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
+		AC_SUBST(QT4_VERSION)
+		QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui QtSql`
+		AC_SUBST(QT4_LIB)
+		LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui QtSql`"
+	fi
+])
+
+AC_DEFUN([QT4_DO_MANUAL_CONFIG],
+[
+	dnl Check for X libraries
+	AC_PATH_X
+	AC_PATH_XTRA
+	case $have_x in
+	    yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+	         CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
+	     no) AC_MSG_ERROR([Cannot find X window libraries and/or headers.]);;
+	disable) ;;
+	esac
+
+	dnl flags for compilation
+	QT4_INCLUDES=
+	QT4_LDFLAGS=
+	QT4_CORE_INCLUDES=
+	QT4_CORE_LDFLAGS=
+	if test -n "$qt4_cv_includes"; then
+		QT4_INCLUDES="-I$qt4_cv_includes"
+		for i in Qt QtCore QtGui QtSql; do
+			QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
+		done
+		QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
+	fi
+	if test -n "$qt4_cv_libraries"; then
+		QT4_LDFLAGS="-L$qt4_cv_libraries"
+		QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
+	fi
+	AC_SUBST(QT4_INCLUDES)
+	AC_SUBST(QT4_CORE_INCLUDES)
+	AC_SUBST(QT4_LDFLAGS)
+	AC_SUBST(QT4_CORE_LDFLAGS)
+
+	QT4_CHECK_COMPILE
+
+	QT4_LIB=$qt4_cv_libname;
+	AC_SUBST(QT4_LIB)
+	AC_SUBST(QT4_CORE_LIB)
+
+	if test -n "$qt4_cv_libname"; then
+		QT4_GET_VERSION
+	fi
+])
Index: branches/FACT++_part_filenames/.macro_dir/root_path.m4
===================================================================
--- branches/FACT++_part_filenames/.macro_dir/root_path.m4	(revision 18732)
+++ branches/FACT++_part_filenames/.macro_dir/root_path.m4	(revision 18732)
@@ -0,0 +1,135 @@
+dnl -*- mode: autoconf -*- 
+dnl
+dnl $Id: root.m4,v 1.3 2005/03/21 21:42:21 rdm Exp $
+dnl $Author: rdm $
+dnl $Date: 2005/03/21 21:42:21 $
+dnl
+dnl Autoconf macro to check for existence or ROOT on the system
+dnl Synopsis:
+dnl
+dnl  ROOT_PATH([MINIMUM-VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
+dnl
+dnl Some examples: 
+dnl 
+dnl    ROOT_PATH(3.03/05, , AC_MSG_ERROR(Your ROOT version is too old))
+dnl    ROOT_PATH(, AC_DEFINE([HAVE_ROOT]))
+dnl 
+dnl The macro defines the following substitution variables
+dnl
+dnl    ROOTCONF           full path to root-config
+dnl    ROOTEXEC           full path to root
+dnl    ROOTCINT           full path to rootcint
+dnl    ROOTLIBDIR         Where the ROOT libraries are 
+dnl    ROOTINCDIR         Where the ROOT headers are 
+dnl    ROOTETCDIR         Where the ROOT configuration is
+dnl    ROOTCFLAGS         Extra compiler flags
+dnl    ROOTLIBS           ROOT basic libraries 
+dnl    ROOTGLIBS          ROOT basic + GUI libraries
+dnl    ROOTAUXLIBS        Auxilary libraries and linker flags for ROOT
+dnl    ROOTAUXCFLAGS      Auxilary compiler flags 
+dnl    ROOTRPATH          Same as ROOTLIBDIR
+dnl
+dnl The macro will fail if root-config and rootcint isn't found.
+dnl
+dnl Christian Holm Christensen <cholm@nbi.dk>
+dnl
+AC_DEFUN([ROOT_PATH],
+[
+  AC_ARG_WITH([rootsys],
+              [AC_HELP_STRING([--with-rootsys],
+			      [path to the ROOT executables or top ROOT installation directory])],
+    			      [user_rootsys=$withval],
+			      [user_rootsys="none"])
+  if test ! x"$user_rootsys" = xnone; then
+    rootbin="$user_rootsys:$user_rootsys/bin"
+  elif test ! x"$ROOTSYS" = x ; then 
+    rootbin="$ROOTSYS/bin"
+  else 
+   rootbin=$PATH
+  fi
+
+  AC_MSG_CHECKING(for root in)
+  AC_MSG_RESULT($rootbin)
+
+  AC_PATH_PROG(ROOTCONF, root-config , no, $rootbin)
+  AC_PATH_PROG(ROOTEXEC, root , no, $rootbin)
+  AC_PATH_PROG(ROOTCINT, rootcint , no, $rootbin)
+	
+  if test ! x"$ROOTCONF" = "xno" && \
+     test ! x"$ROOTCINT" = "xno" ; then 
+
+    # define some variables 
+    ROOTLIBDIR=`$ROOTCONF --libdir`
+    ROOTINCDIR=`$ROOTCONF --incdir`
+#    ROOTETCDIR=`$ROOTCONF --etcdir`
+    ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags` 
+    ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
+    ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
+    ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
+    ROOTAUXLIBS=`$ROOTCONF --auxlibs`
+    ROOTRPATH=$ROOTLIBDIR
+    ROOTVERSION=`$ROOTCONF --version`
+    ROOTSOVERSION=`dirname $ROOTVERSION`
+	
+    if test $1 ; then 
+      AC_MSG_CHECKING(wether ROOT version >= [$1])
+      vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      requ=`echo $1 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      if test $vers -lt $requ ; then 
+        AC_MSG_RESULT(no)
+	no_root="yes"
+      else 
+        AC_MSG_RESULT(yes)
+      fi
+    fi
+  else
+    # otherwise, we say no_root
+    no_root="yes"
+  fi
+
+  AC_SUBST(ROOTLIBDIR)
+  AC_SUBST(ROOTINCDIR)
+#  AC_SUBST(ROOTETCDIR)
+  AC_SUBST(ROOTCFLAGS)
+  AC_SUBST(ROOTLIBS)
+  AC_SUBST(ROOTGLIBS) 
+  AC_SUBST(ROOTAUXLIBS)
+  AC_SUBST(ROOTAUXCFLAGS)
+  AC_SUBST(ROOTRPATH)
+  AC_SUBST(ROOTVERSION)
+  AC_SUBST(ROOTSOVERSION)
+
+  if test "x$no_root" = "x" ; then 
+    ifelse([$2], , :, [$2])     
+  else 
+    ifelse([$3], , :, [$3])     
+  fi
+])
+
+#
+# Macro to check if ROOT has a specific feature:
+#
+#   ROOT_FEATURE(FEATURE,[ACTION_IF_HAVE,[ACTION_IF_NOT]])
+#
+# For example 
+#
+#   ROOT_FEATURE([ldap],[AC_DEFINE([HAVE_ROOT_LDAP])])
+# 
+AC_DEFUN([ROOT_FEATURE],
+[
+  AC_REQUIRE([ROOT_PATH])
+  feat=$1
+  res=`$ROOTCONF --has-$feat` 
+  if test "x$res" = "xyes" ; then 
+    ifelse([$2], , :, [$2])     
+  else 
+    ifelse([$3], , :, [$3])     
+  fi
+
+  AC_MSG_CHECKING(whether root was built with --with-qt)
+  AC_MSG_RESULT($res)
+])
+
+#
+# EOF
+#
Index: branches/FACT++_part_filenames/COPYING
===================================================================
--- branches/FACT++_part_filenames/COPYING	(revision 18732)
+++ branches/FACT++_part_filenames/COPYING	(revision 18732)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 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 <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: branches/FACT++_part_filenames/Doxyfile
===================================================================
--- branches/FACT++_part_filenames/Doxyfile	(revision 18732)
+++ branches/FACT++_part_filenames/Doxyfile	(revision 18732)
@@ -0,0 +1,1647 @@
+# Doxyfile 1.7.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# 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.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = $(PROJECT)
+
+# 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)
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = $(DOCDIR)
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# 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 comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+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 behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = YES
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+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.
+
+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, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. 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 that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip 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.
+
+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 (the default)
+# 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.
+
+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.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT 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.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_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 and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = $(EXTRACT_ALL)
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If 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.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the 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.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_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 default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = YES
+
+# 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 default)
+# the group names will appear in their defined order.
+
+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 default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# 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 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 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. See the manual for examples.
+
+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. The 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.
+
+LAYOUT_FILE            =
+
+# 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.
+
+STRICT_PROTO_MATCHING = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           = doxygen.log
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = $(SRCDIR)
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. 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.
+
+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 pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = $(FILE_PATTERNS)
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = $(RECURSIVE)
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+#EXCLUDE                = $(EXCLUDE)
+EXCLUDE                = examples/ www/ scripts/ \
+                         src/dserver2.cc src/sched.cc \
+                         dim/WebDID *~
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = *.moc.* *.C
+
+# 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
+
+EXCLUDE_SYMBOLS        = Ui Ui_MainWindow
+
+# 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           = $(SRCDIR)
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = YES
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# 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.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = $(USE_HTAGS)
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = $(GENERATE_HTML)
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+#HTML_STYLESHEET        = Doxygen_monobook.css
+HTML_STYLESHEET        =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the stylesheet 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.
+# The allowed range is 0 to 359.
+
+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.
+
+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.
+
+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 NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP         = YES
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the 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. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = YES
+
+# 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, 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.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# 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.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, 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.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# When GENERATE_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.
+
+DOCSET_PUBLISHER_ID    = org.fact-project.www
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME  = FACT collaboration
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = $(GENERATE_HTMLHELP)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = $(GENERATE_CHI)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = YES
+
+# 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.
+
+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.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+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
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, 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.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+#  will be generated, which together with the HTML files, 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.
+
+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.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# 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.
+
+GENERATE_TREEVIEW      = YES
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES       = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 150
+
+# When 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.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# 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.
+
+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 before the changes have effect.
+
+FORMULA_TRANSPARENT    = YES
+
+# 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.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = $(GENERATE_LATEX)
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = $(DOXYGEN_PAPER_SIZE)
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = YES
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = $(GENERATE_RTF)
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = $(GENERATE_MAN)
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = $(GENERATE_XML)
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+#boost.tag=boost
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = $(PERL_PATH)
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = $(HAVE_DOT)
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS        = 0
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans.ttf
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+#$(ALL_GRAPHS)
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = YES
+#$(ALL_GRAPHS)
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = $(DOT_PATH)
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = YES
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
Index: branches/FACT++_part_filenames/INSTALL
===================================================================
--- branches/FACT++_part_filenames/INSTALL	(revision 18732)
+++ branches/FACT++_part_filenames/INSTALL	(revision 18732)
@@ -0,0 +1,365 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   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 warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
Index: branches/FACT++_part_filenames/MAINPAGE.md
===================================================================
--- branches/FACT++_part_filenames/MAINPAGE.md	(revision 18732)
+++ branches/FACT++_part_filenames/MAINPAGE.md	(revision 18732)
@@ -0,0 +1,382 @@
+/** @mainpage
+
+@brief FACT++ - The FACT slow control software
+
+@author thomas.bretz@phys.ethz.ch et al.
+<!--@version 1.0-->
+
+<hr width="100%">
+
+@section toc Table of contents
+<table border='1' bgcolor=#FAFAFA width='100%'>
+<tr>
+<td>
+<ul>
+<li> @ref install_sec
+    <ul>
+    <li> @ref rootwarning
+    <li> @ref packages
+    <li> @ref installroot
+    </ul>
+<li> @ref demos
+<li> @ref dimremarks
+<li> @ref addtab
+<li> @ref Documentation
+<li> @ref References
+    <ul>
+    <li> @ref generalref 
+    <li> @ref boostref
+    <li> @ref fitsref
+    <li> @ref qtroot
+    </ul>
+<li> @ref availableprograms
+<li> @ref Examples
+</ul>
+</tr>
+</td>
+</table>
+
+@section install_sec Installation
+
+FACT++ can be downloaded from the svn by
+
+\verbatim
+   svn checkout https://www.fact-project.org/svn/trunk/FACT++ [localdir]
+\endverbatim
+
+it includes a dim version which is automatically compiled.
+
+For compilation use
+
+\verbatim
+   ./configure
+   make
+\endverbatim
+
+Check the \b ./configure options with \b --help. It might look 
+confusing, but some features like FITS or QT4 can be switched off,
+if the necessary library is not at hand and the feature is not needed.
+For example, if the GUI is not needed its compilation can be switched
+off by disabling QT4 support with \b --without-qt4.
+
+If you use a custom built root version on your system without QT 
+support, but have a distribution packe (e.g. debian package) with
+QT support available, you can give the path to root executables,
+for example, with <B>--with-rootsys=/usr/bin</B>. All other paths
+are extracted from subsequent calls to \b root-config.
+
+Running \b ./configure will take some time. It tries to really check
+carefully that everything needed is available on your system, so that you 
+get errors before you start compilation.
+
+If \b ./configure fails and you send a bug report please attach
+the file config.log.
+
+If \b make fails and you send a bug report please attach
+the complete output of <B>make V=1</B>.
+
+\b Reminder: These programs use shared libraries, i.e. whenever you re-compile
+part of the project some of them might be re-compiled as well. As a result
+already running programs might crash unexpectedly! This is \b not a bug.
+
+In principle configure also supports
+
+\verbatim
+   make install
+\endverbatim
+
+which would install the package and the libraries in your system,
+although at the moment this is not recommended
+
+@subsection rootwarning ROOT warnings during compilation
+
+During compilation of the GUI you get some warning from root's
+TQtWidget.h. These warnings are completely harmless and can be ignored.
+However, it is sometimes advicable to get rid of them to get a clean
+compiler run which makes development easier.
+
+Therefore replace
+\verbatim
+inline void resize(const QSize &size) { QPixmap newSize(size); *(QPixmap *)this = newSize; }
+\endverbatim
+by
+\verbatim
+inline void resize(const QSize &sz) { QPixmap newSize(sz); *(QPixmap *)this = newSize; }
+\endverbatim
+in TQtWidget.h
+
+
+@subsection packages Required packages
+
+The following section gives a list of packages which were necessary after
+a fresh Ubuntu 11.04 installation. In addition to all the development
+packages the corresponding package with the library is needed.
+
+Note that a recent C++ compiler is needed supporting the latest C++0x 
+standard.
+
+<i>Required (configure will fail without them)</i>
+- subversion
+- gcc 
+- g++ 
+- make 
+- libreadline6-dev 
+- libboost-all-dev 
+- libx11-dev (needed for lesstif, qt4, root)
+
+<i>FITS file support (datalogger, event builder)</i>
+- libccfits-dev 
+
+<i>MySQL support (command line options, scheduler)</i>
+- libmysqlclient-dev (optional for MySQL support)
+- libmysql++-dev (option for MySQL support)
+
+<i>If you want 'did'</i>
+- lesstif2-dev
+
+<i>For JavaScrip support</i>
+- libv8-dev
+
+<i>To compile the GUIs</i>
+- libqt4-dev
+- root (see section about root, currently recommended versions 5.18/00b-5.26/00e)
+
+<i>To compile the raw data viewer</i>
+- libglu1-mesa-dev
+
+<i>To compile smartfact with astronomy support and moon</i>
+- libnova-dev
+
+<i>To compile tngweather</i>
+- libsoprano-dev
+
+<i>To compile skypeclient</i>
+- libdbus-1-dev
+- libdbus-glib-1-dev
+
+<i>To create your own documentation</i>
+- graphviz
+- doxygen
+- help2man
+- groff 
+- ps2pdf
+
+<i>To create JavaScript documentation</i>
+- jsdoc-toolkit
+
+<i>For developers</i>
+- autoconf
+- autoconf-archive
+- libtool
+- qt4-designer
+
+If you intend to change only Makefile.am but not configure.ac the \b automake
+package instead of the \b autoconf package should be enough.
+
+<i>Some nice to have (FACT++)</i>
+- colorgcc
+- colordiff
+
+<i>Some nice to have (system)</i>
+- fte
+- efte
+- htop
+
+<i>Documentation (usually accessible through http://localhost/ for the tools above:</I>
+- autoconf-doc
+- gcc-doc
+- graphviz-doc
+- libboost-doc
+- libmysql++-doc
+- libtool-doc
+- make-doc
+- qt4-dev-tools [qt4-assistant]
+- qt4-doc-html
+
+
+<!--
+VIEWER
+libqwt5-qt4-dev
+libqwt5-doc
+-->
+
+@subsection installroot How to install root 5.26/00 on Ubuntu 11.04 (natty)
+
+- install gpp4.4, gcc4.4, g++4.4 (root does not compile with gcc4.5)
+- make links to hidden X11 libraries:
+<B><pre>
+cd /usr/local
+sudo ln -s x86_64-linux-gnu/libX* .
+</pre></B>
+- in the root source directory
+<B><pre>
+./configure --enable-qt --with-cc=gcc-4.4 --with-cxx=g++-4.4 --with-xrootd-opts=--syslibs=/usr/lib/x86_64-linux-gnu --prefix=/usr/local
+</pre></B>
+- \b make
+- <b>sudo make install</b>
+- pray
+- don't forget to set LD_LIBRARY_PATH correctly before you try to start the fact gui
+
+
+@section demos Current demonstration programs
+
+- \b dserver2: A virtual board (A TCP/IP server). It is sending a
+  "hello" message after accepting a communication and then in 3s
+  intervals the current UTC time. The board can be set to state 1 or back
+  to state 0 (just as a demonstration)
+- \b dclient5: A control program. It accesses two viratual boards (start them
+  with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
+  command can be issued to get them to state 'Running'. In this state
+  an asynchronous time stamp can be requested sending the TIME command.
+  to get back from Running to Connected use STOP. 
+- \b test3: a dim console which allows to control all dim servers
+  by sending commands via the dim network.
+- Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
+  to switch between different console types (or no console in the case of
+  \b dclient5). In the console you get help with 'h' and the available
+  command with 'c' You get the avilable command-line options with --help
+
+First start the two dserver2s. Then start a dclient5 (if you want it
+with console use one of the -c options) and a test3 console (with one
+of the console options if you like) you can now control the hardware
+boards with the START, STOP and TIME commands or stop (Ctrl-C) and
+start one of the programs to see what's happening. In the test3 case
+you first have to \e cd to the server to which you want to talk by \b
+DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
+from test3 via Dim.
+
+@section dimremarks Remarks about Dim usage
+
+To be able to write all received data directly to the FITS files,
+padding has been disabled calling dic_diable_padding() and 
+dis_disable_padding(). This is done in our own error handler
+DimErrorRedirecter. Since this should be one of the first 
+objects created in any environment it is quite save. However, every
+Dim client or server in our network which does not use the 
+DimErrorRedirecter \b must call these two functions as early as
+possible.
+
+<!--
+@section exitcodes Exit Code
+@section newcommand How to add a new command?
+@section description How to add help textes to services and commands?
+-->
+
+@section blocking Blocking programs at startup
+
+At startup most programs try to resolve the name of the dim-dns
+as well as their local IP address. After this Dim is initialized 
+and tries to contact the dns. These are so far the only blocking operations.
+Be patient at program startup. They will usually timeout after a while and
+give you proper informations.
+
+
+@section addtab How to add a new tab in the gui?
+
+Do the following steps in exactly this order:
+- Insert the new page from the context menu of the QTabWidget
+- Copy the QDockWidget from one of the other tabs to the clipboard
+- Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
+- Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
+
+
+@section Documentation
+
+Each program has an extensive help text (except the examples). This
+help text can be displayed with the \b --help option. For each program
+a man-page is automatically created (from the help-output), which (at
+the moment) can be accessed with <B>man ./program.man</B> (Don't forget
+the ./ before the filename). With <B>make program.html</B> and 
+<B>make program.pdf</B> a HTML page and a pdf document can be created
+from the man-page.
+
+With <B>make doxygen-doc</B> the HTML documentation as well as a pdf
+with the whole code documentation can be created.
+
+@subsection FACT++ programs
+
+Each documentation is also available with <B>program --help</B> or
+<B>man ./program.man</B>.
+
+In alphabetic order:
+
+- <A HREF="man/biasctrl.html">biasctrl</A> [<A HREF="pdf/biasctrl.pdf">pdf</A>]
+- <A HREF="man/datalogger.html">datalogger</A> [<A HREF="pdf/datalogger.pdf">pdf</A>]
+- <A HREF="man/dimctrl.html">dimctrl</A> [<A HREF="pdf/dimctrl.pdf">pdf</A>]
+- <A HREF="man/drivectrl.html">drivectrl</A> [<A HREF="pdf/drivrctrl.pdf">pdf</A>]
+- <A HREF="man/evtserver.html">evtserver</A> [<A HREF="pdf/evtserver.pdf">pdf</A>]
+- <A HREF="man/fadctrl.html">fadctrl</A> [<A HREF="pdf/fadctrl.pdf">pdf</A>]
+- <A HREF="man/feedback.html">feedback</A> [<A HREF="pdf/feedback.pdf">pdf</A>]
+- <A HREF="man/fitsdump.html">fitsdump</A> [<A HREF="pdf/fitsdump.pdf">pdf</A>]
+- <A HREF="man/fitscheck.html">fitscheck</A> [<A HREF="pdf/fitscheck.pdf">pdf</A>]
+- <A HREF="man/fitsselect.html">fitsselect</A> [<A HREF="pdf/fitsselect.pdf">pdf</A>]
+- <A HREF="man/fscctrl.html">fscctrl</A> [<A HREF="pdf/fscctrl.pdf">pdf</A>]
+- <A HREF="man/ftmctrl.html">ftmctrl</A> [<A HREF="pdf/ftmctrl.pdf">pdf</A>]
+- <A HREF="man/getevent.html">getevent</A> [<A HREF="pdf/getevent.pdf">pdf</A>]
+- <A HREF="man/gpsctrl.html">gpsctrl</A> [<A HREF="pdf/gpsctrl.pdf">pdf</A>]
+- <A HREF="man/lidctrl.html">lidctrl</A> [<A HREF="pdf/lidctrl.pdf">pdf</A>]
+- <A HREF="man/magiclidar.html">magiclidar</A> [<A HREF="pdf/magiclidar.pdf">pdf</A>]
+- <A HREF="man/magicweather.html">magicweather</A> [<A HREF="pdf/magicweather.pdf">pdf</A>]
+- <A HREF="man/mcp.html">mcp</A> [<A HREF="pdf/mcp.pdf">pdf</A>]
+- <A HREF="man/pfminictrl.html">pfminictrl</A> [<A HREF="pdf/pfminictrl.pdf">pdf</A>]
+- <A HREF="man/pwrctrl.html">pwrctrl</A> [<A HREF="pdf/pwrctrl.pdf">pdf</A>]
+- <A HREF="man/ratecontrol.html">ratecontrol</A> [<A HREF="pdf/ratecontrol.pdf">pdf</A>]
+- <A HREF="man/ratescan.html">ratescan</A> [<A HREF="pdf/ratescan.pdf">pdf</A>]
+- <A HREF="man/showlog.html">showlog</A> [<A HREF="pdf/showlog.pdf">pdf</A>]
+- <A HREF="man/smartfact.html">smartfact</A> [<A HREF="pdf/smartfact.pdf">pdf</A>]
+- <A HREF="man/sqmctrl.html">sqmctrl</A> [<A HREF="pdf/sqmctrl.pdf">pdf</A>]
+- <A HREF="man/temperature.html">temperature</A> [<A HREF="pdf/temperature.pdf">pdf</A>]
+- <A HREF="man/timecheck.html">timecheck</A> [<A HREF="pdf/timecheck.pdf">pdf</A>]
+- <A HREF="man/tngweather.html">tngweather</A> [<A HREF="pdf/tngweather.pdf">pdf</A>]
+- <A HREF="man/zfits.html">zfits</A> [<A HREF="pdf/zfits.pdf">pdf</A>]
+
+@section References
+
+@subsection generalref General references
+- <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
+- <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
+- <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Sch&auml;ling: Die Boost C++ Bibliotheken</A>
+- <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+- <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+- <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
+- <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
+- <A HREF="http://qt.nokia.com/">Qt homepage</A>
+- <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
+
+@subsection boostref Boost references
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
+
+@subsection fitsref FITS references
+- <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
+- <A HREF="http://www.star.bris.ac.uk/~mbt/topcat/">topcat - <B>T</B>ool for <B>OP</B>erations on <B>C</B>atalogues <B>A</B>nd <B>T</B>ables
+
+@subsection qtroot How to integrate root in QT?
+
+- <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
+- <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
+
+
+@section availableprograms Available programs
+
+- dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
+- did: A simple graphical interface to analyse everything in a Dim network
+
+@section Examples
+
+There are a few example programs
+- \b ./argv: Example for usage of the class Configure (command line options, configuration file)
+- \b ./time: Example for the usage of the class Time (time input/output, conversion)
+- \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
+
+**/
Index: branches/FACT++_part_filenames/Makefile.am
===================================================================
--- branches/FACT++_part_filenames/Makefile.am	(revision 18732)
+++ branches/FACT++_part_filenames/Makefile.am	(revision 18732)
@@ -0,0 +1,728 @@
+include aminclude.am
+
+#-------------------------------------------------------------------------
+
+ACLOCAL_AMFLAGS = -I .macro_dir
+
+SVN_REVISION = -DREVISION=\"`svnversion -n .`\"
+
+DIM_FLAGS    = -DMIPSEL -DPROTOCOL=1 -Dunix -Dlinux
+BOOST_FLAGS  = -DBOOST_DISABLE_ASSERTS
+
+AM_CFLAGS   = -pedantic
+AM_CPPFLAGS = -Idim/dim -Ipal -Ierfa/src \
+   $(DIM_FLAGS) $(BOOST_FLAGS) $(ROOTCPPFLAGS) \
+   $(SVN_REVISION)
+
+AM_CXXFLAGS = $(ROOTCXXFLAGS) \
+   -Wall -Winit-self -Wpointer-arith -Wcast-align -Wextra -Wformat=2 \
+   -Woverloaded-virtual -Wnon-virtual-dtor -Wshadow
+
+# -no-undefined
+AM_LDFLAGS = -module -avoid-version
+
+#$(man3_MANS): doxygen-doc
+#DX_CLEANFILES = everything to clean.
+# Add to MOSTLYCLEANFILES.
+
+#-------------------------------------------------------------------------
+
+# Executables which are build by default ('all')
+bin_PROGRAMS = \
+	dns \
+	log logtime time argv \
+	ftmctrl \
+	fadctrl \
+	fscctrl \
+	gcn \
+	chatclient chatserv \
+	biasctrl drivectrl agilentctrl \
+	mcp feedback ratescan ratecontrol \
+	tngweather lidctrl gpsctrl pfminictrl sqmctrl pwrctrl \
+	magicweather magiclidar \
+	smartfact evtserver getevent \
+	temperature \
+	timecheck \
+	showlog \
+	fitsdump fitscheck fitsselect \
+	zfits
+
+if HAS_FITS
+bin_PROGRAMS += datalogger
+endif
+
+if HAS_V8
+bin_PROGRAMS += dimctrl dimserver
+endif
+
+if HAS_GUI
+bin_PROGRAMS += fact
+endif
+
+if HAS_DBUS
+bin_PROGRAMS += skypeclient
+endif
+
+if HAS_VIEWER
+bin_PROGRAMS += viewer
+endif
+
+if HAS_NOVA
+bin_PROGRAMS += moon
+endif
+
+if HAS_SQL
+if HAS_NOVA
+bin_PROGRAMS += makedata makeschedule
+if HAS_ROOT
+bin_PROGRAMS += makeplots rootifysql
+endif
+endif
+endif
+
+
+if HAS_LIBXP
+bin_PROGRAMS += did webDid
+endif
+
+# This is a trick to be able to build them but not having them in 'all'
+if IS_FALSE
+bin_PROGRAMS += \
+	ftm fsc fad \
+	test scheduler \
+	triggerschedule \
+	dclient5 dserver2 \
+	fitsloader fitsgrep \
+	sched astro readfits \
+	cosyctrl
+endif
+
+lib_LTLIBRARIES = \
+	libDim++.la libDim.la libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTime.la libTools.la \
+	libPal.la
+
+if HAS_HELP2MAN
+dist_man1_MANS = \
+	biasctrl.man \
+	datalogger.man \
+	dimctrl.man \
+	dimserver.man \
+	drivectrl.man \
+	evtserver.man \
+	fadctrl.man \
+	feedback.man \
+	fitsdump.man \
+	fitscheck.man \
+	fitsselect.man \
+	fscctrl.man \
+	ftmctrl.man \
+	getevent.man \
+	gpsctrl.man \
+	lidctrl.man \
+	magiclidar.man \
+	magicweather.man \
+	mcp.man \
+	pfminictrl.man \
+	pwrctrl.man \
+	ratecontrol.man \
+	ratescan.man \
+	showlog.man \
+	smartfact.man \
+	sqmctrl.man \
+	temperature.man \
+	timecheck.man \
+	tngweather.man \
+	zfits.man
+endif
+
+#-------------------------------------------------------------------------
+
+CLEANFILES =
+
+dist_noinst_SCRIPTS = autogen.sh
+
+EXTRA_DIST = \
+	Doxyfile \
+	dim/DIM_Performance.pdf \
+	dim/LICENSE.GPL \
+	dim/README.txt \
+	dim/README_v9.txt \
+	dim/README_v10.txt \
+	dim/README_v11.txt \
+	dim/README_v12.txt \
+	dim/README_v13.txt \
+	dim/README_v14.txt \
+	dim/README_v17.txt \
+	dim/README_v16.txt \
+	dim/README_v17.txt \
+	dim/README_v18.txt \
+	dim/README_v19.txt
+
+dns_LDADD    = libDim.la libDimExtension.la
+dns_SOURCES  = src/dns.c
+#dns_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+
+did_LDADD    = libDim.la 
+did_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+did_SOURCES  = \
+	dim/src/did/did.c dim/src/did/did.h \
+	dim/src/did/dui_util.c dim/src/did/dui_util.h \
+	dim/src/did/dui_colors.h
+
+webDid_LDADD    = libDim.la 
+webDid_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+webDid_SOURCES  = \
+	dim/src/webDid/webDid.c \
+	src/webServer.c \
+	dim/src/webDid/webTcpip.c
+
+
+#libDim_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+libDim_ladir = 
+libDim_la_HEADERS = \
+	dim/dim/dic.h \
+	dim/dim/dim_common.h \
+	dim/dim/dim.h \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dis.h 
+
+libDim_la_SOURCES = \
+	dim/src/dic.c \
+	dim/src/dis.c \
+	dim/src/dna.c \
+	dim/src/sll.c \
+	dim/src/dll.c  \
+	dim/src/hash.c \
+	dim/src/swap.c \
+	dim/src/copy_swap.c \
+	dim/src/open_dns.c \
+	dim/src/conn_handler.c \
+	dim/src/tcpip.c \
+	dim/src/dtq.c \
+	dim/src/dim_thr.c \
+	dim/src/utilities.c
+
+libDimExtension_la_SOURCES = src/DimSetup.cc src/DimSetup.h
+
+#libDimCpp_la_CXXFLAGS = $(AM_CXXFLAGS) $(DIM_FLAGS)
+libDim___ladir =
+libDim___la_HEADERS = \
+	dim/dim/dic.hxx \
+	dim/dim/dis.hxx \
+	dim/dim/dim_core.hxx \
+	dim/dim/dim.hxx \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dllist.hxx \
+	dim/dim/sllist.hxx \
+	dim/dim/tokenstring.hxx \
+	src/Dim.h
+libDim___la_SOURCES = \
+	dim/src/diccpp.cxx \
+	dim/src/dimcpp.cxx \
+	dim/src/discpp.cxx \
+	dim/src/tokenstring.cxx 
+
+# Divide into Readline / StateMachine / StateMachineDim / Tools?
+libStateMachine_la_SOURCES = \
+	src/WindowLog.h       src/WindowLog.cc \
+	src/Readline.h        src/Readline.cc \
+	src/ReadlineColor.h   src/ReadlineColor.cc \
+	src/ReadlineWindow.h  src/ReadlineWindow.cc \
+	src/Console.h         src/Console.cc \
+	src/Shell.h           src/Shell.cc \
+	\
+	src/EventImp.h        src/EventImp.cc \
+	src/Event.h           src/Event.cc \
+	src/State.h           src/State.cc \
+	src/Description.h     src/Description.cc \
+	src/MessageImp.h      src/MessageImp.cc \
+	src/Converter.h       src/Converter.cc \
+	src/StateMachineImp.h src/StateMachineImp.cc \
+	src/StateMachine.h    src/StateMachine.cc \
+	\
+	src/EventDim.h \
+	src/MessageDim.h         src/MessageDim.cc \
+	src/StateMachineDim.h    src/StateMachineDim.cc \
+	src/DimServerList.h      src/DimServerList.cc \
+	src/DimServiceInfoList.h src/DimServiceInfoList.cc \
+	src/DimNetworkList.h     src/DimNetwork.cc \
+	src/ServiceList.h        src/ServiceList.cc \
+	src/DimErrorRedirecter.h  \
+	src/DimErrorRedirecter.cc \
+	src/DimDescriptionService.h \
+	src/DimDescriptionService.cc \
+	\
+	src/Connection.h      src/Connection.cc \
+	src/ConnectionUSB.h   src/ConnectionUSB.cc \
+	\
+	FACT.h ByteOrder.h \
+	\
+	src/DimWriteStatistics.h src/DimWriteStatistics.cc
+
+libConfiguration_la_SOURCES = \
+	src/Configuration.h src/Configuration.cc \
+	src/FACT.h src/FACT.cc
+
+libTime_la_SOURCES  = src/Time.h src/Time.cc
+#libAstro_la_SOURCES = src/Astro.h src/Astro.cc
+libTools_la_SOURCES = src/tools.h src/tools.cc
+
+libPal_la_SOURCES = pal/pal.h \
+	pal/palDtt.c 		pal/palDat.c 		pal/palMappa.c		\
+	pal/palPrenut.c		pal/palEvp.c 		pal/palAoppa.c		\
+	pal/palAoppat.c		pal/palRefco.c 		pal/palRefro.c		\
+	pal/pal1Atmt.c 		pal/palDrange.c		pal/palOne2One.c        \
+	pal/pal1Atms.c 		pal/palMapqkz.c 	pal/palAopqk.c		\
+	pal/palRefz.c 		pal/palAmpqk.c 		pal/palRdplan.c		\
+	pal/palDt.c 		pal/palPvobs.c 		pal/palNut.c		\
+	pal/palDmoon.c 		pal/palPlanet.c 	pal/palNutc.c           \
+	pal/palDeuler.c \
+	\
+	erfa/src/gd2gc.c	erfa/src/p06e.c		erfa/src/c2s.c 		\
+	erfa/src/eform.c	erfa/src/s2c.c		erfa/src/pas.c		\
+	erfa/src/pmat06.c	erfa/src/epv00.c	erfa/src/plan94.c	\
+	erfa/src/anpm.c		erfa/src/obl06.c	erfa/src/dat.c		\
+        erfa/src/af2a.c		erfa/src/rxr.c		erfa/src/gmst06.c	\
+	erfa/src/sepp.c		erfa/src/rz.c		erfa/src/zp.c		\
+	erfa/src/rxpv.c		erfa/src/pn.c		erfa/src/cr.c		\
+	erfa/src/seps.c		erfa/src/ry.c		erfa/src/pdp.c		\
+	erfa/src/pnm06a.c	erfa/src/hfk5z.c	erfa/src/epj2jd.c	\
+	erfa/src/pv2s.c		erfa/src/tf2a.c		erfa/src/pm.c		\
+	erfa/src/sxp.c		erfa/src/a2af.c		erfa/src/rxp.c		\
+	erfa/src/pxp.c		erfa/src/fk5hip.c	erfa/src/fw2m.c		\
+	erfa/src/rx.c		erfa/src/tf2d.c		erfa/src/cal2jd.c	\
+	erfa/src/cp.c		erfa/src/nut06a.c	erfa/src/rm2v.c		\
+	erfa/src/nut00a.c	erfa/src/ee06a.c	erfa/src/fk5hz.c	\
+	erfa/src/epb2jd.c	erfa/src/refco.c	erfa/src/a2tf.c		\
+	erfa/src/fapa03.c	erfa/src/gst06a.c	erfa/src/faf03.c	\
+	erfa/src/faur03.c	erfa/src/faju03.c	erfa/src/fal03.c	\
+	erfa/src/fasa03.c	erfa/src/fame03.c 	erfa/src/fave03.c  	\
+	erfa/src/fama03.c 	erfa/src/faom03.c 	erfa/src/gst06.c	\
+	erfa/src/jd2cal.c	erfa/src/gd2gce.c	erfa/src/anp.c		\
+	erfa/src/fae03.c	erfa/src/ir.c		erfa/src/pfw06.c	\
+	erfa/src/bpn2xy.c	erfa/src/eors.c		erfa/src/s06.c		\
+	erfa/src/trxp.c		erfa/src/era00.c	erfa/src/epj.c		\
+	erfa/src/d2tf.c		erfa/src/epb.c		erfa/src/rv2m.c		\
+	erfa/src/pap.c		erfa/src/fad03.c	erfa/src/pmp.c		\
+	erfa/src/tr.c		erfa/src/falp03.c	
+
+dserver2_SOURCES = src/dserver2.cc 
+dserver2_LDADD   = libTime.la libTools.la
+
+ftm_SOURCES = src/ftm.cc src/HeadersFTM.cc
+ftm_LDADD   = libTime.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+
+fad_SOURCES = src/fad.cc src/HeadersFAD.cc
+fad_LDADD   = libTime.la libTools.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+
+fsc_SOURCES = src/fsc.cc
+fsc_LDADD   = libTime.la libTools.la
+
+
+log_SOURCES = src/log.cc
+log_LDADD   = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la
+
+
+logtime_SOURCES = src/logtime.cc
+logtime_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la
+
+moon_SOURCES = src/moon.cc
+moon_LDADD = libTime.la libConfiguration.la
+
+rootifysql_SOURCES = src/rootifysql.cc
+rootifysql_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+
+makeplots_SOURCES = src/makeplots.cc
+makeplots_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+
+makedata_SOURCES = src/makedata.cc
+makedata_LDADD = libTime.la libConfiguration.la
+
+makeschedule_SOURCES = src/makeschedule.cc
+makeschedule_LDADD = libTime.la libConfiguration.la libTools.la
+
+
+chatserv_SOURCES = src/chatserv.cc src/LocalControl.h
+chatserv_LDADD = libStateMachine.la libTools.la libConfiguration.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la
+
+
+dclient5_SOURCES = src/dclient5.cc src/LocalControl.h
+dclient5_LDADD   = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la \
+    libConfiguration.la
+
+ftmctrl_SOURCES = src/ftmctrl.cc src/LocalControl.h src/HeadersFTM.cc
+ftmctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+cosyctrl_SOURCES = src/cosyctrl.cc src/LocalControl.h src/HeadersFTM.cc
+cosyctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+drivectrl_SOURCES = src/drivectrl.cc src/LocalControl.h
+drivectrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la libPal.la
+
+agilentctrl_SOURCES = src/agilentctrl.cc src/LocalControl.h src/HeadersAgilent.h
+agilentctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magicweather_SOURCES = src/magicweather.cc src/LocalControl.h
+magicweather_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magiclidar_SOURCES = src/magiclidar.cc src/LocalControl.h
+magiclidar_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+tngweather_SOURCES = src/tngweather.cc src/LocalControl.h
+tngweather_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+lidctrl_SOURCES = src/lidctrl.cc src/LocalControl.h
+lidctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+gpsctrl_SOURCES = src/gpsctrl.cc src/LocalControl.h
+gpsctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pfminictrl_SOURCES = src/pfminictrl.cc src/LocalControl.h
+pfminictrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+sqmctrl_SOURCES = src/sqmctrl.cc src/LocalControl.h
+sqmctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+temperature_SOURCES = src/temperature.cc src/LocalControl.h
+temperature_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pwrctrl_SOURCES = src/pwrctrl.cc src/LocalControl.h \
+	src/HeadersPower.h src/HeadersPower.cc
+pwrctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+timecheck_SOURCES = src/timecheck.cc src/LocalControl.h
+timecheck_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+evtserver_SOURCES = src/evtserver.cc src/LocalControl.h
+evtserver_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+getevent_SOURCES = src/getevent.cc
+getevent_LDADD   = libTools.la libTime.la libConfiguration.la
+
+fadctrl_SOURCES = src/fadctrl.cc src/LocalControl.h src/HeadersFAD.cc \
+	src/EventBuilder.cc     src/EventBuilder.h \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/DataCalib.cc        src/DataCalib.h \
+	src/DataWriteRaw.cc     src/DataWriteRaw.h \
+	src/DrsCalib.h
+if HAS_FITS
+fadctrl_SOURCES += src/FitsFile.h src/FitsFile.cc \
+	src/DataWriteFits.cc    src/DataWriteFits.h \
+	src/DataWriteFits2.cc   src/DataWriteFits2.h
+endif
+fadctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+fscctrl_SOURCES = src/fscctrl.cc src/LocalControl.h
+fscctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+gcn_SOURCES = src/gcn.cc src/LocalControl.h
+gcn_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la -lQtXml
+
+biasctrl_SOURCES = src/biasctrl.cc src/LocalControl.h src/PixelMap.cc
+biasctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+mcp_SOURCES = src/mcp.cc src/LocalControl.h
+mcp_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+feedback_SOURCES = src/feedback.cc src/LocalControl.h src/PixelMap.cc
+feedback_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratescan_SOURCES = src/ratescan.cc src/LocalControl.h src/PixelMap.cc
+ratescan_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratecontrol_SOURCES = src/ratecontrol.cc src/LocalControl.h src/PixelMap.cc
+ratecontrol_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+
+argv_SOURCES = src/argv.cc
+argv_LDADD = libConfiguration.la
+
+
+dimctrl_SOURCES = src/dimctrl.cc \
+	src/StateMachineDimControl.cc src/StateMachineDimControl.h \
+	src/RemoteControl.cc src/RemoteControl.h \
+	src/InterpreterV8.cc src/InterpreterV8.h \
+	src/DimState.cc src/DimState.h
+dimctrl_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+dimserver_SOURCES = $(dimctrl_SOURCES)
+dimserver_LDADD = $(dimctrl_LDADD)
+
+
+chatclient_SOURCES = src/chatclient.cc src/ChatClient.h
+chatclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+skypeclient_SOURCES = src/skypeclient.cc src/ChatClient.h
+skypeclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+
+time_SOURCES = src/time.cc
+time_LDADD = libTime.la 
+
+#astro_SOURCES = src/astro.cc
+#astro_LDADD = libAstro.la libTime.la 
+
+test_SOURCES = src/test.cc
+test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+datalogger_SOURCES = src/datalogger.cc src/LocalControl.h src/DimState.cc src/DimState.h
+if HAS_FITS
+datalogger_SOURCES += src/FitsFile.h src/FitsFile.cc src/Fits.h src/Fits.cc
+endif
+datalogger_LDADD  = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+scheduler_SOURCES = src/scheduler.cc src/LocalControl.h 
+scheduler_LDADD   = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+fitsloader_SOURCES = src/fitsloader.cc src/LocalControl.h 
+fitsloader_LDADD   = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+fitsdump_SOURCES = src/fitsdump.cc 
+fitsdump_LDADD   = $(ROOTLDFLAGS) $(ROOTLIBS) libTools.la libConfiguration.la libTime.la
+
+fitscheck_SOURCES = src/fitscheck.cc 
+fitscheck_LDADD   = libConfiguration.la
+
+fitsselect_SOURCES = src/fitsselect.cc 
+fitsselect_LDADD   = libConfiguration.la
+
+
+readfits_SOURCES = src/readfits.cc src/ReadFits.h
+readfits_LDADD   = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+zfits_SOURCES = src/zfits.cc externals/huffmans.h
+zfits_LDADD   = libTime.la libConfiguration.la
+
+showlog_SOURCES = src/showlog.cc
+showlog_LDADD   = libTime.la libTools.la libConfiguration.la -lncurses src/WindowLog.lo 
+
+triggerschedule_SOURCES = src/triggerschedule.cc 
+triggerschedule_LDADD   = libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+#fitsCompressor_SOURCES = src/fitsCompressor.cc 
+#fitsCompressor_LDADD   = libConfiguration.la
+
+#fitsgrep_SOURCES = src/fitsgrep.cc
+#fitsgrep_LDADD   = libConfiguration.la
+
+# -----
+
+if HAS_GUI
+
+fact_DIALOGS = \
+	gui/design.ui
+
+fact_RESOURCES = \
+	gui/design.qrc
+
+fact_QT_SOURCES = \
+	gui/DockWindow.cc \
+	gui/MainWindow.cc \
+	gui/QCameraWidget.cc \
+	gui/BasicGlCamera.cc
+
+fact_SRCADD = $(fact_DIALOGS:.ui=.h) $(fact_RESOURCES:.qrc=.cc) $(fact_QT_SOURCES:.cc=.moc.cc)
+
+endif
+
+# -----
+
+if HAS_VIEWER
+
+viewer_DIALOGS = \
+	gui/RawEventsViewer/viewer.ui
+
+viewer_QT_SOURCES = \
+	gui/RawEventsViewer/RawEventsViewer.cc \
+	gui/BasicGlCamera.cc \
+	gui/QCameraWidget.cc \
+	gui/Q3DCameraWidget.cc
+
+viewer_SRCADD = $(viewer_DIALOGS:.ui=.h) $(viewer_RESOURCES:.qrc=.cc) $(viewer_QT_SOURCES:.cc=.moc.cc)
+
+endif
+
+
+
+BUILT_SOURCES = $(fact_SRCADD) $(viewer_SRCADD)
+	
+CLEANFILES += $(BUILT_SOURCES)
+
+EXTRA_DIST += \
+	$(fact_DIALOGS) $(fact_RESOURCES) \
+	$(viewer_DIALOGS) $(viewer_RESOURCES) 
+
+fact_LDADD = $(ROOTLDFLAGS) $(ROOTGLIBS) -lGQt $(QT4_LIB) $(QT4_LDFLAGS) -L. \
+	libDim++.la libDim.la libDimExtension.la \
+	libTools.la libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+fact_SOURCES = $(fact_SRCADD) $(fact_QT_SOURCES) \
+	gui/CheckBoxDelegate.cc gui/HtmlDelegate.cc \
+	gui/fact.cc gui/FactGui.cc src/HeadersFTM.cc \
+	src/PixelMap.cc
+
+# Switch off most qwt warnings
+viewer_CXXFLAGS = $(AM_CXXFLAGS) -Wno-shadow
+
+viewer_LDADD = $(QT4_LIB) $(QT4_LDFLAGS) -L. -lQtOpenGL -lGLU \
+	libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTools.la \
+	libTime.la libDim++.la libDim.la 
+
+viewer_SOURCES = $(viewer_SRCADD) $(viewer_QT_SOURCES) \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/FitsFile.cc  src/FitsFile.h \
+	src/Fits.cc      src/Fits.h \
+	src/PixelMap.cc
+
+
+
+#-------------------------------------------------------------------------
+
+SUFFIXES = .moc.cc
+
+.ui.h: $<
+	$(AM_V_GEN)$(UIC4) $< -o $@
+
+.h.moc.cc: $<
+	$(AM_V_GEN)$(MOC4) $(EXTRA_CPPFLAGS) $< -o $@
+
+.qrc.cc: $<
+	$(AM_V_GEN)$(RCC4) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@
+
+
+#-------------------------------------------------------------------------
+
+MAN_TARGETS = $(dist_man1_MANS)
+
+if HAS_GROFF
+
+MAN_TARGETS += $(dist_man1_MANS:.man=.html)
+EXTRA_DIST  += $(dist_man1_MANS:.man=.html) 
+CLEANFILES  += $(dist_man1_MANS:.man=.html) 
+
+if HAS_PS2PDF
+
+MAN_TARGETS += $(dist_man1_MANS:.man=.pdf)
+EXTRA_DIST  += $(dist_man1_MANS:.man=.pdf)
+CLEANFILES  += $(dist_man1_MANS:.man=.pdf)
+endif
+
+endif
+
+if HAS_JSDOC
+JAVA_SCRIPT_DOC=jsdoc
+endif
+
+$(dist_man1_MANS): $(dist_man1_MANS:.man=)
+	@mkdir -p man
+	$(AM_V_GEN)help2man -N -o $@ -m $(@:.man=) ./$(@:.man=)
+
+.man.html: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` -T html > $@
+
+.man.pdf: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` | ps2pdf - $@
+
+jsdoc:
+	@rm -rf www/dimctrl
+	$(AM_V_GEN)jsdoc -r=2 -d=www/dimctrl scripts | grep -v ^java
+
+
+doc: $(MAN_TARGETS) $(JAVA_SCRIPT_DOC) doxygen-run
+	@ln -sfv doxygen-doc/html/index.html doxygen-doc/html/main.html
+	@mkdir -vp doxygen-doc/html/pdf
+	@mkdir -vp doxygen-doc/html/man
+	@ln -sfv `pwd`/*.pdf doxygen-doc/html/pdf/
+	@ln -sfv `pwd`/*.html doxygen-doc/html/man/
+
+diff:
+	@svn diff | $(COLORDIFF)
+
+rdiff:
+	@svn diff -r BASE:HEAD . externals | $(COLORDIFF)
+
+status:
+	@svn status -u | grep -v ^\?
+
+#-------------------------------------------------------------------------
+
+# Overwrite rules for silent or other verbosity levels
+#AM_V_MAN = $(AM_MAN_$(V))
+#AM_MAN_ = $(AM_V_GEN)
+#AM_MAN_0 = @echo  "  MAN    "$@;
+
+#$(MyAnalysisDS): $(MyAnalysisH) $(MyAnalysisL)
+#	$(ROOTCINT) -f $@ -c -I$(top_builddir)/config $(INCLUDES) $^
+#	rootcint_files=`echo $@ | sed -ne 's/\(.*\)\..*/\1.cxx \1.h/p'` && \
+#        $(top_srcdir)/config/runsed $(top_srcdir)/config/rootcint.sed $$rootcint_files && \
+#        for i in $$rootcint_files; do \
+#          if test ! `diff $$i $(srcdir)/$$i >/dev/null 2>&1`; then \
+#            cp $$i $(srcdir)/; \
+#          fi; \
+#        done
+
+#CLEANFILES = *~ *.rej *.orig
+#MAINTAINERCLEANFILES = aclocal.m4 config.h.in configure Makefile.in \
+#        stamp-h.in stamp-h[0-9].in
+#DISTCLEANFILES = config.cache config.log
Index: branches/FACT++_part_filenames/Makefile.in
===================================================================
--- branches/FACT++_part_filenames/Makefile.in	(revision 18732)
+++ branches/FACT++_part_filenames/Makefile.in	(revision 18732)
@@ -0,0 +1,3601 @@
+# 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@
+bin_PROGRAMS = dns$(EXEEXT) log$(EXEEXT) logtime$(EXEEXT) \
+	time$(EXEEXT) argv$(EXEEXT) ftmctrl$(EXEEXT) fadctrl$(EXEEXT) \
+	fscctrl$(EXEEXT) gcn$(EXEEXT) chatclient$(EXEEXT) \
+	chatserv$(EXEEXT) biasctrl$(EXEEXT) drivectrl$(EXEEXT) \
+	agilentctrl$(EXEEXT) mcp$(EXEEXT) feedback$(EXEEXT) \
+	ratescan$(EXEEXT) ratecontrol$(EXEEXT) tngweather$(EXEEXT) \
+	lidctrl$(EXEEXT) gpsctrl$(EXEEXT) pfminictrl$(EXEEXT) \
+	sqmctrl$(EXEEXT) pwrctrl$(EXEEXT) magicweather$(EXEEXT) \
+	magiclidar$(EXEEXT) smartfact$(EXEEXT) evtserver$(EXEEXT) \
+	getevent$(EXEEXT) temperature$(EXEEXT) timecheck$(EXEEXT) \
+	showlog$(EXEEXT) fitsdump$(EXEEXT) fitscheck$(EXEEXT) \
+	fitsselect$(EXEEXT) zfits$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \
+	$(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
+	$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10)
+@HAS_FITS_TRUE@am__append_1 = datalogger
+@HAS_V8_TRUE@am__append_2 = dimctrl dimserver
+@HAS_GUI_TRUE@am__append_3 = fact
+@HAS_DBUS_TRUE@am__append_4 = skypeclient
+@HAS_VIEWER_TRUE@am__append_5 = viewer
+@HAS_NOVA_TRUE@am__append_6 = moon
+@HAS_NOVA_TRUE@@HAS_SQL_TRUE@am__append_7 = makedata makeschedule
+@HAS_NOVA_TRUE@@HAS_ROOT_TRUE@@HAS_SQL_TRUE@am__append_8 = makeplots rootifysql
+@HAS_LIBXP_TRUE@am__append_9 = did webDid
+
+# This is a trick to be able to build them but not having them in 'all'
+@IS_FALSE@am__append_10 = \
+@IS_FALSE@	ftm fsc fad \
+@IS_FALSE@	test scheduler \
+@IS_FALSE@	triggerschedule \
+@IS_FALSE@	dclient5 dserver2 \
+@IS_FALSE@	fitsloader fitsgrep \
+@IS_FALSE@	sched astro readfits \
+@IS_FALSE@	cosyctrl
+
+@HAS_FITS_TRUE@am__append_11 = src/FitsFile.h src/FitsFile.cc \
+@HAS_FITS_TRUE@	src/DataWriteFits.cc    src/DataWriteFits.h \
+@HAS_FITS_TRUE@	src/DataWriteFits2.cc   src/DataWriteFits2.h
+
+@HAS_FITS_TRUE@am__append_12 = src/FitsFile.h src/FitsFile.cc src/Fits.h src/Fits.cc
+@HAS_GROFF_TRUE@am__append_13 = $(dist_man1_MANS:.man=.html)
+@HAS_GROFF_TRUE@am__append_14 = $(dist_man1_MANS:.man=.html) 
+@HAS_GROFF_TRUE@am__append_15 = $(dist_man1_MANS:.man=.html) 
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_16 = $(dist_man1_MANS:.man=.pdf)
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_17 = $(dist_man1_MANS:.man=.pdf)
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_18 = $(dist_man1_MANS:.man=.pdf)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/.macro_dir/ac_check_class.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_cpp.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_package.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_readline.m4 \
+	$(top_srcdir)/.macro_dir/ac_find_motif.m4 \
+	$(top_srcdir)/.macro_dir/ax_cxx_compile_stdcxx_0x.m4 \
+	$(top_srcdir)/.macro_dir/libtool.m4 \
+	$(top_srcdir)/.macro_dir/ltoptions.m4 \
+	$(top_srcdir)/.macro_dir/ltsugar.m4 \
+	$(top_srcdir)/.macro_dir/ltversion.m4 \
+	$(top_srcdir)/.macro_dir/lt~obsolete.m4 \
+	$(top_srcdir)/.macro_dir/mysql++_devel.m4 \
+	$(top_srcdir)/.macro_dir/mysql_devel.m4 \
+	$(top_srcdir)/.macro_dir/qt4_do_it_all.m4 \
+	$(top_srcdir)/.macro_dir/root_path.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) $(dist_noinst_SCRIPTS) \
+	$(libDim___la_HEADERS) $(libDim_la_HEADERS) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = g++ gcc
+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)$(bindir)" \
+	"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(libDim___ladir)" \
+	"$(DESTDIR)$(libDim_ladir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libConfiguration_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libConfiguration_la_OBJECTS = src/Configuration.lo src/FACT.lo
+libConfiguration_la_OBJECTS = $(am_libConfiguration_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 = 
+libDim___la_LIBADD =
+am_libDim___la_OBJECTS = dim/src/diccpp.lo dim/src/dimcpp.lo \
+	dim/src/discpp.lo dim/src/tokenstring.lo
+libDim___la_OBJECTS = $(am_libDim___la_OBJECTS)
+libDim_la_LIBADD =
+am_libDim_la_OBJECTS = dim/src/dic.lo dim/src/dis.lo dim/src/dna.lo \
+	dim/src/sll.lo dim/src/dll.lo dim/src/hash.lo dim/src/swap.lo \
+	dim/src/copy_swap.lo dim/src/open_dns.lo \
+	dim/src/conn_handler.lo dim/src/tcpip.lo dim/src/dtq.lo \
+	dim/src/dim_thr.lo dim/src/utilities.lo
+libDim_la_OBJECTS = $(am_libDim_la_OBJECTS)
+libDimExtension_la_LIBADD =
+am_libDimExtension_la_OBJECTS = src/DimSetup.lo
+libDimExtension_la_OBJECTS = $(am_libDimExtension_la_OBJECTS)
+libPal_la_LIBADD =
+am_libPal_la_OBJECTS = pal/palDtt.lo pal/palDat.lo pal/palMappa.lo \
+	pal/palPrenut.lo pal/palEvp.lo pal/palAoppa.lo \
+	pal/palAoppat.lo pal/palRefco.lo pal/palRefro.lo \
+	pal/pal1Atmt.lo pal/palDrange.lo pal/palOne2One.lo \
+	pal/pal1Atms.lo pal/palMapqkz.lo pal/palAopqk.lo \
+	pal/palRefz.lo pal/palAmpqk.lo pal/palRdplan.lo pal/palDt.lo \
+	pal/palPvobs.lo pal/palNut.lo pal/palDmoon.lo pal/palPlanet.lo \
+	pal/palNutc.lo pal/palDeuler.lo erfa/src/gd2gc.lo \
+	erfa/src/p06e.lo erfa/src/c2s.lo erfa/src/eform.lo \
+	erfa/src/s2c.lo erfa/src/pas.lo erfa/src/pmat06.lo \
+	erfa/src/epv00.lo erfa/src/plan94.lo erfa/src/anpm.lo \
+	erfa/src/obl06.lo erfa/src/dat.lo erfa/src/af2a.lo \
+	erfa/src/rxr.lo erfa/src/gmst06.lo erfa/src/sepp.lo \
+	erfa/src/rz.lo erfa/src/zp.lo erfa/src/rxpv.lo erfa/src/pn.lo \
+	erfa/src/cr.lo erfa/src/seps.lo erfa/src/ry.lo erfa/src/pdp.lo \
+	erfa/src/pnm06a.lo erfa/src/hfk5z.lo erfa/src/epj2jd.lo \
+	erfa/src/pv2s.lo erfa/src/tf2a.lo erfa/src/pm.lo \
+	erfa/src/sxp.lo erfa/src/a2af.lo erfa/src/rxp.lo \
+	erfa/src/pxp.lo erfa/src/fk5hip.lo erfa/src/fw2m.lo \
+	erfa/src/rx.lo erfa/src/tf2d.lo erfa/src/cal2jd.lo \
+	erfa/src/cp.lo erfa/src/nut06a.lo erfa/src/rm2v.lo \
+	erfa/src/nut00a.lo erfa/src/ee06a.lo erfa/src/fk5hz.lo \
+	erfa/src/epb2jd.lo erfa/src/refco.lo erfa/src/a2tf.lo \
+	erfa/src/fapa03.lo erfa/src/gst06a.lo erfa/src/faf03.lo \
+	erfa/src/faur03.lo erfa/src/faju03.lo erfa/src/fal03.lo \
+	erfa/src/fasa03.lo erfa/src/fame03.lo erfa/src/fave03.lo \
+	erfa/src/fama03.lo erfa/src/faom03.lo erfa/src/gst06.lo \
+	erfa/src/jd2cal.lo erfa/src/gd2gce.lo erfa/src/anp.lo \
+	erfa/src/fae03.lo erfa/src/ir.lo erfa/src/pfw06.lo \
+	erfa/src/bpn2xy.lo erfa/src/eors.lo erfa/src/s06.lo \
+	erfa/src/trxp.lo erfa/src/era00.lo erfa/src/epj.lo \
+	erfa/src/d2tf.lo erfa/src/epb.lo erfa/src/rv2m.lo \
+	erfa/src/pap.lo erfa/src/fad03.lo erfa/src/pmp.lo \
+	erfa/src/tr.lo erfa/src/falp03.lo
+libPal_la_OBJECTS = $(am_libPal_la_OBJECTS)
+libStateMachine_la_LIBADD =
+am_libStateMachine_la_OBJECTS = src/WindowLog.lo src/Readline.lo \
+	src/ReadlineColor.lo src/ReadlineWindow.lo src/Console.lo \
+	src/Shell.lo src/EventImp.lo src/Event.lo src/State.lo \
+	src/Description.lo src/MessageImp.lo src/Converter.lo \
+	src/StateMachineImp.lo src/StateMachine.lo src/MessageDim.lo \
+	src/StateMachineDim.lo src/DimServerList.lo \
+	src/DimServiceInfoList.lo src/DimNetwork.lo src/ServiceList.lo \
+	src/DimErrorRedirecter.lo src/DimDescriptionService.lo \
+	src/Connection.lo src/ConnectionUSB.lo \
+	src/DimWriteStatistics.lo
+libStateMachine_la_OBJECTS = $(am_libStateMachine_la_OBJECTS)
+libTime_la_LIBADD =
+am_libTime_la_OBJECTS = src/Time.lo
+libTime_la_OBJECTS = $(am_libTime_la_OBJECTS)
+libTools_la_LIBADD =
+am_libTools_la_OBJECTS = src/tools.lo
+libTools_la_OBJECTS = $(am_libTools_la_OBJECTS)
+@HAS_FITS_TRUE@am__EXEEXT_1 = datalogger$(EXEEXT)
+@HAS_V8_TRUE@am__EXEEXT_2 = dimctrl$(EXEEXT) dimserver$(EXEEXT)
+@HAS_GUI_TRUE@am__EXEEXT_3 = fact$(EXEEXT)
+@HAS_DBUS_TRUE@am__EXEEXT_4 = skypeclient$(EXEEXT)
+@HAS_VIEWER_TRUE@am__EXEEXT_5 = viewer$(EXEEXT)
+@HAS_NOVA_TRUE@am__EXEEXT_6 = moon$(EXEEXT)
+@HAS_NOVA_TRUE@@HAS_SQL_TRUE@am__EXEEXT_7 = makedata$(EXEEXT) \
+@HAS_NOVA_TRUE@@HAS_SQL_TRUE@	makeschedule$(EXEEXT)
+@HAS_NOVA_TRUE@@HAS_ROOT_TRUE@@HAS_SQL_TRUE@am__EXEEXT_8 = makeplots$(EXEEXT) \
+@HAS_NOVA_TRUE@@HAS_ROOT_TRUE@@HAS_SQL_TRUE@	rootifysql$(EXEEXT)
+@HAS_LIBXP_TRUE@am__EXEEXT_9 = did$(EXEEXT) webDid$(EXEEXT)
+@IS_FALSE@am__EXEEXT_10 = ftm$(EXEEXT) fsc$(EXEEXT) fad$(EXEEXT) \
+@IS_FALSE@	test$(EXEEXT) scheduler$(EXEEXT) \
+@IS_FALSE@	triggerschedule$(EXEEXT) dclient5$(EXEEXT) \
+@IS_FALSE@	dserver2$(EXEEXT) fitsloader$(EXEEXT) \
+@IS_FALSE@	fitsgrep$(EXEEXT) sched$(EXEEXT) astro$(EXEEXT) \
+@IS_FALSE@	readfits$(EXEEXT) cosyctrl$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+am_agilentctrl_OBJECTS = src/agilentctrl.$(OBJEXT)
+agilentctrl_OBJECTS = $(am_agilentctrl_OBJECTS)
+agilentctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_argv_OBJECTS = src/argv.$(OBJEXT)
+argv_OBJECTS = $(am_argv_OBJECTS)
+argv_DEPENDENCIES = libConfiguration.la
+astro_SOURCES = astro.c
+astro_OBJECTS = astro.$(OBJEXT)
+astro_LDADD = $(LDADD)
+am_biasctrl_OBJECTS = src/biasctrl.$(OBJEXT) src/PixelMap.$(OBJEXT)
+biasctrl_OBJECTS = $(am_biasctrl_OBJECTS)
+biasctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_chatclient_OBJECTS = src/chatclient.$(OBJEXT)
+chatclient_OBJECTS = $(am_chatclient_OBJECTS)
+chatclient_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_chatserv_OBJECTS = src/chatserv.$(OBJEXT)
+chatserv_OBJECTS = $(am_chatserv_OBJECTS)
+chatserv_DEPENDENCIES = libStateMachine.la libTools.la \
+	libConfiguration.la libTime.la libDim++.la libDim.la \
+	libDimExtension.la
+am_cosyctrl_OBJECTS = src/cosyctrl.$(OBJEXT) src/HeadersFTM.$(OBJEXT)
+cosyctrl_OBJECTS = $(am_cosyctrl_OBJECTS)
+cosyctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am__datalogger_SOURCES_DIST = src/datalogger.cc src/LocalControl.h \
+	src/DimState.cc src/DimState.h src/FitsFile.h src/FitsFile.cc \
+	src/Fits.h src/Fits.cc
+@HAS_FITS_TRUE@am__objects_1 = src/FitsFile.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/Fits.$(OBJEXT)
+am_datalogger_OBJECTS = src/datalogger.$(OBJEXT) \
+	src/DimState.$(OBJEXT) $(am__objects_1)
+datalogger_OBJECTS = $(am_datalogger_OBJECTS)
+datalogger_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_dclient5_OBJECTS = src/dclient5.$(OBJEXT)
+dclient5_OBJECTS = $(am_dclient5_OBJECTS)
+dclient5_DEPENDENCIES = libDim++.la libDim.la libStateMachine.la \
+	libTime.la libTools.la libConfiguration.la
+am_did_OBJECTS = dim/src/did/did-did.$(OBJEXT) \
+	dim/src/did/did-dui_util.$(OBJEXT)
+did_OBJECTS = $(am_did_OBJECTS)
+did_DEPENDENCIES = libDim.la
+am_dimctrl_OBJECTS = src/dimctrl.$(OBJEXT) \
+	src/StateMachineDimControl.$(OBJEXT) \
+	src/RemoteControl.$(OBJEXT) src/InterpreterV8.$(OBJEXT) \
+	src/DimState.$(OBJEXT)
+dimctrl_OBJECTS = $(am_dimctrl_OBJECTS)
+dimctrl_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am__objects_2 = src/dimctrl.$(OBJEXT) \
+	src/StateMachineDimControl.$(OBJEXT) \
+	src/RemoteControl.$(OBJEXT) src/InterpreterV8.$(OBJEXT) \
+	src/DimState.$(OBJEXT)
+am_dimserver_OBJECTS = $(am__objects_2)
+dimserver_OBJECTS = $(am_dimserver_OBJECTS)
+dimserver_DEPENDENCIES = $(dimctrl_LDADD)
+am_dns_OBJECTS = src/dns.$(OBJEXT)
+dns_OBJECTS = $(am_dns_OBJECTS)
+dns_DEPENDENCIES = libDim.la libDimExtension.la
+am_drivectrl_OBJECTS = src/drivectrl.$(OBJEXT)
+drivectrl_OBJECTS = $(am_drivectrl_OBJECTS)
+drivectrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la \
+	libPal.la
+am_dserver2_OBJECTS = src/dserver2.$(OBJEXT)
+dserver2_OBJECTS = $(am_dserver2_OBJECTS)
+dserver2_DEPENDENCIES = libTime.la libTools.la
+am_evtserver_OBJECTS = src/evtserver.$(OBJEXT)
+evtserver_OBJECTS = $(am_evtserver_OBJECTS)
+evtserver_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am__fact_SOURCES_DIST = gui/design.h gui/design.cc \
+	gui/DockWindow.moc.cc gui/MainWindow.moc.cc \
+	gui/QCameraWidget.moc.cc gui/BasicGlCamera.moc.cc \
+	gui/DockWindow.cc gui/MainWindow.cc gui/QCameraWidget.cc \
+	gui/BasicGlCamera.cc gui/CheckBoxDelegate.cc \
+	gui/HtmlDelegate.cc gui/fact.cc gui/FactGui.cc \
+	src/HeadersFTM.cc src/PixelMap.cc
+am__objects_3 =
+@HAS_GUI_TRUE@am__objects_4 = gui/design.$(OBJEXT)
+@HAS_GUI_TRUE@am__objects_5 = gui/DockWindow.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/MainWindow.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/QCameraWidget.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.moc.$(OBJEXT)
+@HAS_GUI_TRUE@am__objects_6 = $(am__objects_3) $(am__objects_4) \
+@HAS_GUI_TRUE@	$(am__objects_5)
+@HAS_GUI_TRUE@am__objects_7 = gui/DockWindow.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/MainWindow.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/QCameraWidget.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.$(OBJEXT)
+am_fact_OBJECTS = $(am__objects_6) $(am__objects_7) \
+	gui/CheckBoxDelegate.$(OBJEXT) gui/HtmlDelegate.$(OBJEXT) \
+	gui/fact.$(OBJEXT) gui/FactGui.$(OBJEXT) \
+	src/HeadersFTM.$(OBJEXT) src/PixelMap.$(OBJEXT)
+fact_OBJECTS = $(am_fact_OBJECTS)
+am__DEPENDENCIES_1 =
+fact_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) libDim++.la \
+	libDim.la libDimExtension.la libTools.la libStateMachine.la \
+	libTime.la libTools.la libConfiguration.la
+am_fad_OBJECTS = src/fad.$(OBJEXT) src/HeadersFAD.$(OBJEXT)
+fad_OBJECTS = $(am_fad_OBJECTS)
+fad_DEPENDENCIES = libTime.la libTools.la libTools.la libDim++.la \
+	libDim.la libConfiguration.la libDimExtension.la
+am__fadctrl_SOURCES_DIST = src/fadctrl.cc src/LocalControl.h \
+	src/HeadersFAD.cc src/EventBuilder.cc src/EventBuilder.h \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/DataCalib.cc src/DataCalib.h src/DataWriteRaw.cc \
+	src/DataWriteRaw.h src/DrsCalib.h src/FitsFile.h \
+	src/FitsFile.cc src/DataWriteFits.cc src/DataWriteFits.h \
+	src/DataWriteFits2.cc src/DataWriteFits2.h
+@HAS_FITS_TRUE@am__objects_8 = src/FitsFile.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/DataWriteFits.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/DataWriteFits2.$(OBJEXT)
+am_fadctrl_OBJECTS = src/fadctrl.$(OBJEXT) src/HeadersFAD.$(OBJEXT) \
+	src/EventBuilder.$(OBJEXT) src/DataProcessorImp.$(OBJEXT) \
+	src/DataCalib.$(OBJEXT) src/DataWriteRaw.$(OBJEXT) \
+	$(am__objects_8)
+fadctrl_OBJECTS = $(am_fadctrl_OBJECTS)
+fadctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_feedback_OBJECTS = src/feedback.$(OBJEXT) src/PixelMap.$(OBJEXT)
+feedback_OBJECTS = $(am_feedback_OBJECTS)
+feedback_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_fitscheck_OBJECTS = src/fitscheck.$(OBJEXT)
+fitscheck_OBJECTS = $(am_fitscheck_OBJECTS)
+fitscheck_DEPENDENCIES = libConfiguration.la
+am_fitsdump_OBJECTS = src/fitsdump.$(OBJEXT)
+fitsdump_OBJECTS = $(am_fitsdump_OBJECTS)
+fitsdump_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libTools.la libConfiguration.la libTime.la
+fitsgrep_SOURCES = fitsgrep.c
+fitsgrep_OBJECTS = fitsgrep.$(OBJEXT)
+fitsgrep_LDADD = $(LDADD)
+am_fitsloader_OBJECTS = src/fitsloader.$(OBJEXT)
+fitsloader_OBJECTS = $(am_fitsloader_OBJECTS)
+fitsloader_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+am_fitsselect_OBJECTS = src/fitsselect.$(OBJEXT)
+fitsselect_OBJECTS = $(am_fitsselect_OBJECTS)
+fitsselect_DEPENDENCIES = libConfiguration.la
+am_fsc_OBJECTS = src/fsc.$(OBJEXT)
+fsc_OBJECTS = $(am_fsc_OBJECTS)
+fsc_DEPENDENCIES = libTime.la libTools.la
+am_fscctrl_OBJECTS = src/fscctrl.$(OBJEXT)
+fscctrl_OBJECTS = $(am_fscctrl_OBJECTS)
+fscctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ftm_OBJECTS = src/ftm.$(OBJEXT) src/HeadersFTM.$(OBJEXT)
+ftm_OBJECTS = $(am_ftm_OBJECTS)
+ftm_DEPENDENCIES = libTime.la libTools.la libDim++.la libDim.la \
+	libConfiguration.la libDimExtension.la
+am_ftmctrl_OBJECTS = src/ftmctrl.$(OBJEXT) src/HeadersFTM.$(OBJEXT)
+ftmctrl_OBJECTS = $(am_ftmctrl_OBJECTS)
+ftmctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la libConfiguration.la
+am_gcn_OBJECTS = src/gcn.$(OBJEXT)
+gcn_OBJECTS = $(am_gcn_OBJECTS)
+gcn_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_getevent_OBJECTS = src/getevent.$(OBJEXT)
+getevent_OBJECTS = $(am_getevent_OBJECTS)
+getevent_DEPENDENCIES = libTools.la libTime.la libConfiguration.la
+am_gpsctrl_OBJECTS = src/gpsctrl.$(OBJEXT)
+gpsctrl_OBJECTS = $(am_gpsctrl_OBJECTS)
+gpsctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_lidctrl_OBJECTS = src/lidctrl.$(OBJEXT)
+lidctrl_OBJECTS = $(am_lidctrl_OBJECTS)
+lidctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_log_OBJECTS = src/log.$(OBJEXT)
+log_OBJECTS = $(am_log_OBJECTS)
+log_DEPENDENCIES = libDim++.la libDim.la libStateMachine.la libTime.la \
+	libTools.la
+am_logtime_OBJECTS = src/logtime.$(OBJEXT)
+logtime_OBJECTS = $(am_logtime_OBJECTS)
+logtime_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la
+am_magiclidar_OBJECTS = src/magiclidar.$(OBJEXT)
+magiclidar_OBJECTS = $(am_magiclidar_OBJECTS)
+magiclidar_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_magicweather_OBJECTS = src/magicweather.$(OBJEXT)
+magicweather_OBJECTS = $(am_magicweather_OBJECTS)
+magicweather_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_makedata_OBJECTS = src/makedata.$(OBJEXT)
+makedata_OBJECTS = $(am_makedata_OBJECTS)
+makedata_DEPENDENCIES = libTime.la libConfiguration.la
+am_makeplots_OBJECTS = src/makeplots.$(OBJEXT)
+makeplots_OBJECTS = $(am_makeplots_OBJECTS)
+makeplots_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libTime.la libConfiguration.la
+am_makeschedule_OBJECTS = src/makeschedule.$(OBJEXT)
+makeschedule_OBJECTS = $(am_makeschedule_OBJECTS)
+makeschedule_DEPENDENCIES = libTime.la libConfiguration.la libTools.la
+am_mcp_OBJECTS = src/mcp.$(OBJEXT)
+mcp_OBJECTS = $(am_mcp_OBJECTS)
+mcp_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_moon_OBJECTS = src/moon.$(OBJEXT)
+moon_OBJECTS = $(am_moon_OBJECTS)
+moon_DEPENDENCIES = libTime.la libConfiguration.la
+am_pfminictrl_OBJECTS = src/pfminictrl.$(OBJEXT)
+pfminictrl_OBJECTS = $(am_pfminictrl_OBJECTS)
+pfminictrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_pwrctrl_OBJECTS = src/pwrctrl.$(OBJEXT) src/HeadersPower.$(OBJEXT)
+pwrctrl_OBJECTS = $(am_pwrctrl_OBJECTS)
+pwrctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ratecontrol_OBJECTS = src/ratecontrol.$(OBJEXT) \
+	src/PixelMap.$(OBJEXT)
+ratecontrol_OBJECTS = $(am_ratecontrol_OBJECTS)
+ratecontrol_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ratescan_OBJECTS = src/ratescan.$(OBJEXT) src/PixelMap.$(OBJEXT)
+ratescan_OBJECTS = $(am_ratescan_OBJECTS)
+ratescan_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_readfits_OBJECTS = src/readfits.$(OBJEXT)
+readfits_OBJECTS = $(am_readfits_OBJECTS)
+readfits_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+am_rootifysql_OBJECTS = src/rootifysql.$(OBJEXT)
+rootifysql_OBJECTS = $(am_rootifysql_OBJECTS)
+rootifysql_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libTime.la libConfiguration.la
+sched_SOURCES = sched.c
+sched_OBJECTS = sched.$(OBJEXT)
+sched_LDADD = $(LDADD)
+am_scheduler_OBJECTS = src/scheduler.$(OBJEXT)
+scheduler_OBJECTS = $(am_scheduler_OBJECTS)
+scheduler_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_showlog_OBJECTS = src/showlog.$(OBJEXT)
+showlog_OBJECTS = $(am_showlog_OBJECTS)
+showlog_DEPENDENCIES = libTime.la libTools.la libConfiguration.la \
+	src/WindowLog.lo
+am_skypeclient_OBJECTS = src/skypeclient.$(OBJEXT)
+skypeclient_OBJECTS = $(am_skypeclient_OBJECTS)
+skypeclient_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_smartfact_OBJECTS = src/smartfact.$(OBJEXT) src/PixelMap.$(OBJEXT)
+smartfact_OBJECTS = $(am_smartfact_OBJECTS)
+smartfact_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_sqmctrl_OBJECTS = src/sqmctrl.$(OBJEXT)
+sqmctrl_OBJECTS = $(am_sqmctrl_OBJECTS)
+sqmctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_temperature_OBJECTS = src/temperature.$(OBJEXT)
+temperature_OBJECTS = $(am_temperature_OBJECTS)
+temperature_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_test_OBJECTS = src/test.$(OBJEXT)
+test_OBJECTS = $(am_test_OBJECTS)
+test_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+am_time_OBJECTS = src/time.$(OBJEXT)
+time_OBJECTS = $(am_time_OBJECTS)
+time_DEPENDENCIES = libTime.la
+am_timecheck_OBJECTS = src/timecheck.$(OBJEXT)
+timecheck_OBJECTS = $(am_timecheck_OBJECTS)
+timecheck_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_tngweather_OBJECTS = src/tngweather.$(OBJEXT)
+tngweather_OBJECTS = $(am_tngweather_OBJECTS)
+tngweather_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_triggerschedule_OBJECTS = src/triggerschedule.$(OBJEXT)
+triggerschedule_OBJECTS = $(am_triggerschedule_OBJECTS)
+triggerschedule_DEPENDENCIES = libDim++.la libDim.la \
+	libDimExtension.la libConfiguration.la
+am__viewer_SOURCES_DIST = gui/RawEventsViewer/viewer.h \
+	gui/RawEventsViewer/RawEventsViewer.moc.cc \
+	gui/BasicGlCamera.moc.cc gui/QCameraWidget.moc.cc \
+	gui/Q3DCameraWidget.moc.cc \
+	gui/RawEventsViewer/RawEventsViewer.cc gui/BasicGlCamera.cc \
+	gui/QCameraWidget.cc gui/Q3DCameraWidget.cc \
+	src/DataProcessorImp.cc src/DataProcessorImp.h src/FitsFile.cc \
+	src/FitsFile.h src/Fits.cc src/Fits.h src/PixelMap.cc
+@HAS_VIEWER_TRUE@am__objects_9 = gui/RawEventsViewer/viewer-RawEventsViewer.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-BasicGlCamera.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-QCameraWidget.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-Q3DCameraWidget.moc.$(OBJEXT)
+@HAS_VIEWER_TRUE@am__objects_10 = $(am__objects_3) $(am__objects_9)
+@HAS_VIEWER_TRUE@am__objects_11 = gui/RawEventsViewer/viewer-RawEventsViewer.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-BasicGlCamera.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-QCameraWidget.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-Q3DCameraWidget.$(OBJEXT)
+am_viewer_OBJECTS = $(am__objects_10) $(am__objects_11) \
+	src/viewer-DataProcessorImp.$(OBJEXT) \
+	src/viewer-FitsFile.$(OBJEXT) src/viewer-Fits.$(OBJEXT) \
+	src/viewer-PixelMap.$(OBJEXT)
+viewer_OBJECTS = $(am_viewer_OBJECTS)
+viewer_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libDimExtension.la libConfiguration.la libStateMachine.la \
+	libTools.la libTime.la libDim++.la libDim.la
+viewer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(viewer_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_webDid_OBJECTS = dim/src/webDid/webDid-webDid.$(OBJEXT) \
+	src/webDid-webServer.$(OBJEXT) \
+	dim/src/webDid/webDid-webTcpip.$(OBJEXT)
+webDid_OBJECTS = $(am_webDid_OBJECTS)
+webDid_DEPENDENCIES = libDim.la
+am_zfits_OBJECTS = src/zfits.$(OBJEXT)
+zfits_OBJECTS = $(am_zfits_OBJECTS)
+zfits_DEPENDENCIES = libTime.la libConfiguration.la
+SCRIPTS = $(dist_noinst_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@
+depcomp = $(SHELL) $(top_srcdir)/.aux_dir/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+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 = 
+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 = $(libConfiguration_la_SOURCES) $(libDim___la_SOURCES) \
+	$(libDim_la_SOURCES) $(libDimExtension_la_SOURCES) \
+	$(libPal_la_SOURCES) $(libStateMachine_la_SOURCES) \
+	$(libTime_la_SOURCES) $(libTools_la_SOURCES) \
+	$(agilentctrl_SOURCES) $(argv_SOURCES) astro.c \
+	$(biasctrl_SOURCES) $(chatclient_SOURCES) $(chatserv_SOURCES) \
+	$(cosyctrl_SOURCES) $(datalogger_SOURCES) $(dclient5_SOURCES) \
+	$(did_SOURCES) $(dimctrl_SOURCES) $(dimserver_SOURCES) \
+	$(dns_SOURCES) $(drivectrl_SOURCES) $(dserver2_SOURCES) \
+	$(evtserver_SOURCES) $(fact_SOURCES) $(fad_SOURCES) \
+	$(fadctrl_SOURCES) $(feedback_SOURCES) $(fitscheck_SOURCES) \
+	$(fitsdump_SOURCES) fitsgrep.c $(fitsloader_SOURCES) \
+	$(fitsselect_SOURCES) $(fsc_SOURCES) $(fscctrl_SOURCES) \
+	$(ftm_SOURCES) $(ftmctrl_SOURCES) $(gcn_SOURCES) \
+	$(getevent_SOURCES) $(gpsctrl_SOURCES) $(lidctrl_SOURCES) \
+	$(log_SOURCES) $(logtime_SOURCES) $(magiclidar_SOURCES) \
+	$(magicweather_SOURCES) $(makedata_SOURCES) \
+	$(makeplots_SOURCES) $(makeschedule_SOURCES) $(mcp_SOURCES) \
+	$(moon_SOURCES) $(pfminictrl_SOURCES) $(pwrctrl_SOURCES) \
+	$(ratecontrol_SOURCES) $(ratescan_SOURCES) $(readfits_SOURCES) \
+	$(rootifysql_SOURCES) sched.c $(scheduler_SOURCES) \
+	$(showlog_SOURCES) $(skypeclient_SOURCES) $(smartfact_SOURCES) \
+	$(sqmctrl_SOURCES) $(temperature_SOURCES) $(test_SOURCES) \
+	$(time_SOURCES) $(timecheck_SOURCES) $(tngweather_SOURCES) \
+	$(triggerschedule_SOURCES) $(viewer_SOURCES) $(webDid_SOURCES) \
+	$(zfits_SOURCES)
+DIST_SOURCES = $(libConfiguration_la_SOURCES) $(libDim___la_SOURCES) \
+	$(libDim_la_SOURCES) $(libDimExtension_la_SOURCES) \
+	$(libPal_la_SOURCES) $(libStateMachine_la_SOURCES) \
+	$(libTime_la_SOURCES) $(libTools_la_SOURCES) \
+	$(agilentctrl_SOURCES) $(argv_SOURCES) astro.c \
+	$(biasctrl_SOURCES) $(chatclient_SOURCES) $(chatserv_SOURCES) \
+	$(cosyctrl_SOURCES) $(am__datalogger_SOURCES_DIST) \
+	$(dclient5_SOURCES) $(did_SOURCES) $(dimctrl_SOURCES) \
+	$(dimserver_SOURCES) $(dns_SOURCES) $(drivectrl_SOURCES) \
+	$(dserver2_SOURCES) $(evtserver_SOURCES) \
+	$(am__fact_SOURCES_DIST) $(fad_SOURCES) \
+	$(am__fadctrl_SOURCES_DIST) $(feedback_SOURCES) \
+	$(fitscheck_SOURCES) $(fitsdump_SOURCES) fitsgrep.c \
+	$(fitsloader_SOURCES) $(fitsselect_SOURCES) $(fsc_SOURCES) \
+	$(fscctrl_SOURCES) $(ftm_SOURCES) $(ftmctrl_SOURCES) \
+	$(gcn_SOURCES) $(getevent_SOURCES) $(gpsctrl_SOURCES) \
+	$(lidctrl_SOURCES) $(log_SOURCES) $(logtime_SOURCES) \
+	$(magiclidar_SOURCES) $(magicweather_SOURCES) \
+	$(makedata_SOURCES) $(makeplots_SOURCES) \
+	$(makeschedule_SOURCES) $(mcp_SOURCES) $(moon_SOURCES) \
+	$(pfminictrl_SOURCES) $(pwrctrl_SOURCES) \
+	$(ratecontrol_SOURCES) $(ratescan_SOURCES) $(readfits_SOURCES) \
+	$(rootifysql_SOURCES) sched.c $(scheduler_SOURCES) \
+	$(showlog_SOURCES) $(skypeclient_SOURCES) $(smartfact_SOURCES) \
+	$(sqmctrl_SOURCES) $(temperature_SOURCES) $(test_SOURCES) \
+	$(time_SOURCES) $(timecheck_SOURCES) $(tngweather_SOURCES) \
+	$(triggerschedule_SOURCES) $(am__viewer_SOURCES_DIST) \
+	$(webDid_SOURCES) $(zfits_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(dist_man1_MANS)
+HEADERS = $(libDim___la_HEADERS) $(libDim_la_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
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope
+am__DIST_COMMON = $(dist_man1_MANS) $(srcdir)/Makefile.in \
+	$(srcdir)/aminclude.am $(top_srcdir)/.aux_dir/ar-lib \
+	$(top_srcdir)/.aux_dir/compile \
+	$(top_srcdir)/.aux_dir/config.guess \
+	$(top_srcdir)/.aux_dir/config.sub \
+	$(top_srcdir)/.aux_dir/depcomp \
+	$(top_srcdir)/.aux_dir/install-sh \
+	$(top_srcdir)/.aux_dir/ltmain.sh \
+	$(top_srcdir)/.aux_dir/missing .aux_dir/ar-lib \
+	.aux_dir/compile .aux_dir/config.guess .aux_dir/config.sub \
+	.aux_dir/depcomp .aux_dir/install-sh .aux_dir/ltmain.sh \
+	.aux_dir/missing AUTHORS COPYING ChangeLog INSTALL NEWS README
+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)
+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@
+BOOST_ASIO_LIB = @BOOST_ASIO_LIB@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_DATE_TIME_LIB = @BOOST_DATE_TIME_LIB@
+BOOST_FILESYSTEM_LIB = @BOOST_FILESYSTEM_LIB@
+BOOST_LDFLAGS = @BOOST_LDFLAGS@
+BOOST_PROGRAM_OPTIONS_LIB = @BOOST_PROGRAM_OPTIONS_LIB@
+BOOST_REGEX_LIB = @BOOST_REGEX_LIB@
+BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@
+BOOST_THREAD_LIB = @BOOST_THREAD_LIB@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COLORDIFF = @COLORDIFF@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL = @CURL@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GROFF = @GROFF@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JSDOC = @JSDOC@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_HAVE_XP = @LT_HAVE_XP@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAILX = @MAILX@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MOC4 = @MOC4@
+MOTIF_CFLAGS = @MOTIF_CFLAGS@
+MOTIF_INCL = @MOTIF_INCL@
+MOTIF_LDFLAGS = @MOTIF_LDFLAGS@
+MOTIF_LIBS = @MOTIF_LIBS@
+MYSQLPP_INC_DIR = @MYSQLPP_INC_DIR@
+MYSQLPP_LIB_DIR = @MYSQLPP_LIB_DIR@
+MYSQL_C_INC_DIR = @MYSQL_C_INC_DIR@
+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@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PS2PDF = @PS2PDF@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+QT4DIR = @QT4DIR@
+QT4_CORE_CFLAGS = @QT4_CORE_CFLAGS@
+QT4_CORE_INCLUDES = @QT4_CORE_INCLUDES@
+QT4_CORE_LDFLAGS = @QT4_CORE_LDFLAGS@
+QT4_CORE_LIB = @QT4_CORE_LIB@
+QT4_CORE_LIBS = @QT4_CORE_LIBS@
+QT4_FRONTEND_CFLAGS = @QT4_FRONTEND_CFLAGS@
+QT4_FRONTEND_LIBS = @QT4_FRONTEND_LIBS@
+QT4_INCLUDES = @QT4_INCLUDES@
+QT4_LDFLAGS = @QT4_LDFLAGS@
+QT4_LIB = @QT4_LIB@
+QT4_VERSION = @QT4_VERSION@
+RANLIB = @RANLIB@
+RCC4 = @RCC4@
+READLINE_INCLUDES = @READLINE_INCLUDES@
+READLINE_LIBS = @READLINE_LIBS@
+ROOTAUXCFLAGS = @ROOTAUXCFLAGS@
+ROOTAUXLIBS = @ROOTAUXLIBS@
+ROOTCFLAGS = @ROOTCFLAGS@
+ROOTCINT = @ROOTCINT@
+ROOTCONF = @ROOTCONF@
+ROOTCPPFLAGS = @ROOTCPPFLAGS@
+ROOTCXXFLAGS = @ROOTCXXFLAGS@
+ROOTEXEC = @ROOTEXEC@
+ROOTGLIBS = @ROOTGLIBS@
+ROOTINCDIR = @ROOTINCDIR@
+ROOTLDFLAGS = @ROOTLDFLAGS@
+ROOTLIBDIR = @ROOTLIBDIR@
+ROOTLIBS = @ROOTLIBS@
+ROOTRPATH = @ROOTRPATH@
+ROOTSOVERSION = @ROOTSOVERSION@
+ROOTVERSION = @ROOTVERSION@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UIC4 = @UIC4@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_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@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+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@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@DX_COND_doc_TRUE@@DX_COND_html_TRUE@DX_CLEAN_HTML = @DX_DOCDIR@/html
+@DX_COND_chm_TRUE@@DX_COND_doc_TRUE@DX_CLEAN_CHM = @DX_DOCDIR@/chm
+@DX_COND_chi_TRUE@@DX_COND_chm_TRUE@@DX_COND_doc_TRUE@DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+@DX_COND_doc_TRUE@@DX_COND_man_TRUE@DX_CLEAN_MAN = @DX_DOCDIR@/man
+@DX_COND_doc_TRUE@@DX_COND_rtf_TRUE@DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+@DX_COND_doc_TRUE@@DX_COND_xml_TRUE@DX_CLEAN_XML = @DX_DOCDIR@/xml
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@DX_PS_GOAL = doxygen-ps
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@DX_PDF_GOAL = doxygen-pdf
+@DX_COND_doc_TRUE@@DX_COND_latex_TRUE@DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+@DX_COND_doc_TRUE@DX_CLEANFILES = \
+@DX_COND_doc_TRUE@    @DX_DOCDIR@/@PACKAGE@.tag \
+@DX_COND_doc_TRUE@    -r \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_HTML) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_CHM) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_CHI) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_MAN) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_RTF) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_XML) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_PS) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_PDF) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_LATEX)
+
+
+#-------------------------------------------------------------------------
+ACLOCAL_AMFLAGS = -I .macro_dir
+SVN_REVISION = -DREVISION=\"`svnversion -n .`\"
+DIM_FLAGS = -DMIPSEL -DPROTOCOL=1 -Dunix -Dlinux
+BOOST_FLAGS = -DBOOST_DISABLE_ASSERTS
+AM_CFLAGS = -pedantic
+AM_CPPFLAGS = -Idim/dim -Ipal -Ierfa/src \
+   $(DIM_FLAGS) $(BOOST_FLAGS) $(ROOTCPPFLAGS) \
+   $(SVN_REVISION)
+
+AM_CXXFLAGS = $(ROOTCXXFLAGS) \
+   -Wall -Winit-self -Wpointer-arith -Wcast-align -Wextra -Wformat=2 \
+   -Woverloaded-virtual -Wnon-virtual-dtor -Wshadow
+
+
+# -no-undefined
+AM_LDFLAGS = -module -avoid-version
+lib_LTLIBRARIES = \
+	libDim++.la libDim.la libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTime.la libTools.la \
+	libPal.la
+
+@HAS_HELP2MAN_TRUE@dist_man1_MANS = \
+@HAS_HELP2MAN_TRUE@	biasctrl.man \
+@HAS_HELP2MAN_TRUE@	datalogger.man \
+@HAS_HELP2MAN_TRUE@	dimctrl.man \
+@HAS_HELP2MAN_TRUE@	dimserver.man \
+@HAS_HELP2MAN_TRUE@	drivectrl.man \
+@HAS_HELP2MAN_TRUE@	evtserver.man \
+@HAS_HELP2MAN_TRUE@	fadctrl.man \
+@HAS_HELP2MAN_TRUE@	feedback.man \
+@HAS_HELP2MAN_TRUE@	fitsdump.man \
+@HAS_HELP2MAN_TRUE@	fitscheck.man \
+@HAS_HELP2MAN_TRUE@	fitsselect.man \
+@HAS_HELP2MAN_TRUE@	fscctrl.man \
+@HAS_HELP2MAN_TRUE@	ftmctrl.man \
+@HAS_HELP2MAN_TRUE@	getevent.man \
+@HAS_HELP2MAN_TRUE@	gpsctrl.man \
+@HAS_HELP2MAN_TRUE@	lidctrl.man \
+@HAS_HELP2MAN_TRUE@	magiclidar.man \
+@HAS_HELP2MAN_TRUE@	magicweather.man \
+@HAS_HELP2MAN_TRUE@	mcp.man \
+@HAS_HELP2MAN_TRUE@	pfminictrl.man \
+@HAS_HELP2MAN_TRUE@	pwrctrl.man \
+@HAS_HELP2MAN_TRUE@	ratecontrol.man \
+@HAS_HELP2MAN_TRUE@	ratescan.man \
+@HAS_HELP2MAN_TRUE@	showlog.man \
+@HAS_HELP2MAN_TRUE@	smartfact.man \
+@HAS_HELP2MAN_TRUE@	sqmctrl.man \
+@HAS_HELP2MAN_TRUE@	temperature.man \
+@HAS_HELP2MAN_TRUE@	timecheck.man \
+@HAS_HELP2MAN_TRUE@	tngweather.man \
+@HAS_HELP2MAN_TRUE@	zfits.man
+
+
+#-------------------------------------------------------------------------
+CLEANFILES = $(BUILT_SOURCES) $(am__append_15) $(am__append_18)
+dist_noinst_SCRIPTS = autogen.sh
+EXTRA_DIST = Doxyfile dim/DIM_Performance.pdf dim/LICENSE.GPL \
+	dim/README.txt dim/README_v9.txt dim/README_v10.txt \
+	dim/README_v11.txt dim/README_v12.txt dim/README_v13.txt \
+	dim/README_v14.txt dim/README_v17.txt dim/README_v16.txt \
+	dim/README_v17.txt dim/README_v18.txt dim/README_v19.txt \
+	$(fact_DIALOGS) $(fact_RESOURCES) $(viewer_DIALOGS) \
+	$(viewer_RESOURCES) $(am__append_14) $(am__append_17)
+dns_LDADD = libDim.la libDimExtension.la
+dns_SOURCES = src/dns.c
+#dns_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+did_LDADD = libDim.la 
+did_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+did_SOURCES = \
+	dim/src/did/did.c dim/src/did/did.h \
+	dim/src/did/dui_util.c dim/src/did/dui_util.h \
+	dim/src/did/dui_colors.h
+
+webDid_LDADD = libDim.la 
+webDid_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+webDid_SOURCES = \
+	dim/src/webDid/webDid.c \
+	src/webServer.c \
+	dim/src/webDid/webTcpip.c
+
+
+#libDim_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+libDim_ladir = 
+libDim_la_HEADERS = \
+	dim/dim/dic.h \
+	dim/dim/dim_common.h \
+	dim/dim/dim.h \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dis.h 
+
+libDim_la_SOURCES = \
+	dim/src/dic.c \
+	dim/src/dis.c \
+	dim/src/dna.c \
+	dim/src/sll.c \
+	dim/src/dll.c  \
+	dim/src/hash.c \
+	dim/src/swap.c \
+	dim/src/copy_swap.c \
+	dim/src/open_dns.c \
+	dim/src/conn_handler.c \
+	dim/src/tcpip.c \
+	dim/src/dtq.c \
+	dim/src/dim_thr.c \
+	dim/src/utilities.c
+
+libDimExtension_la_SOURCES = src/DimSetup.cc src/DimSetup.h
+
+#libDimCpp_la_CXXFLAGS = $(AM_CXXFLAGS) $(DIM_FLAGS)
+libDim___ladir = 
+libDim___la_HEADERS = \
+	dim/dim/dic.hxx \
+	dim/dim/dis.hxx \
+	dim/dim/dim_core.hxx \
+	dim/dim/dim.hxx \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dllist.hxx \
+	dim/dim/sllist.hxx \
+	dim/dim/tokenstring.hxx \
+	src/Dim.h
+
+libDim___la_SOURCES = \
+	dim/src/diccpp.cxx \
+	dim/src/dimcpp.cxx \
+	dim/src/discpp.cxx \
+	dim/src/tokenstring.cxx 
+
+
+# Divide into Readline / StateMachine / StateMachineDim / Tools?
+libStateMachine_la_SOURCES = \
+	src/WindowLog.h       src/WindowLog.cc \
+	src/Readline.h        src/Readline.cc \
+	src/ReadlineColor.h   src/ReadlineColor.cc \
+	src/ReadlineWindow.h  src/ReadlineWindow.cc \
+	src/Console.h         src/Console.cc \
+	src/Shell.h           src/Shell.cc \
+	\
+	src/EventImp.h        src/EventImp.cc \
+	src/Event.h           src/Event.cc \
+	src/State.h           src/State.cc \
+	src/Description.h     src/Description.cc \
+	src/MessageImp.h      src/MessageImp.cc \
+	src/Converter.h       src/Converter.cc \
+	src/StateMachineImp.h src/StateMachineImp.cc \
+	src/StateMachine.h    src/StateMachine.cc \
+	\
+	src/EventDim.h \
+	src/MessageDim.h         src/MessageDim.cc \
+	src/StateMachineDim.h    src/StateMachineDim.cc \
+	src/DimServerList.h      src/DimServerList.cc \
+	src/DimServiceInfoList.h src/DimServiceInfoList.cc \
+	src/DimNetworkList.h     src/DimNetwork.cc \
+	src/ServiceList.h        src/ServiceList.cc \
+	src/DimErrorRedirecter.h  \
+	src/DimErrorRedirecter.cc \
+	src/DimDescriptionService.h \
+	src/DimDescriptionService.cc \
+	\
+	src/Connection.h      src/Connection.cc \
+	src/ConnectionUSB.h   src/ConnectionUSB.cc \
+	\
+	FACT.h ByteOrder.h \
+	\
+	src/DimWriteStatistics.h src/DimWriteStatistics.cc
+
+libConfiguration_la_SOURCES = \
+	src/Configuration.h src/Configuration.cc \
+	src/FACT.h src/FACT.cc
+
+libTime_la_SOURCES = src/Time.h src/Time.cc
+#libAstro_la_SOURCES = src/Astro.h src/Astro.cc
+libTools_la_SOURCES = src/tools.h src/tools.cc
+libPal_la_SOURCES = pal/pal.h \
+	pal/palDtt.c 		pal/palDat.c 		pal/palMappa.c		\
+	pal/palPrenut.c		pal/palEvp.c 		pal/palAoppa.c		\
+	pal/palAoppat.c		pal/palRefco.c 		pal/palRefro.c		\
+	pal/pal1Atmt.c 		pal/palDrange.c		pal/palOne2One.c        \
+	pal/pal1Atms.c 		pal/palMapqkz.c 	pal/palAopqk.c		\
+	pal/palRefz.c 		pal/palAmpqk.c 		pal/palRdplan.c		\
+	pal/palDt.c 		pal/palPvobs.c 		pal/palNut.c		\
+	pal/palDmoon.c 		pal/palPlanet.c 	pal/palNutc.c           \
+	pal/palDeuler.c \
+	\
+	erfa/src/gd2gc.c	erfa/src/p06e.c		erfa/src/c2s.c 		\
+	erfa/src/eform.c	erfa/src/s2c.c		erfa/src/pas.c		\
+	erfa/src/pmat06.c	erfa/src/epv00.c	erfa/src/plan94.c	\
+	erfa/src/anpm.c		erfa/src/obl06.c	erfa/src/dat.c		\
+        erfa/src/af2a.c		erfa/src/rxr.c		erfa/src/gmst06.c	\
+	erfa/src/sepp.c		erfa/src/rz.c		erfa/src/zp.c		\
+	erfa/src/rxpv.c		erfa/src/pn.c		erfa/src/cr.c		\
+	erfa/src/seps.c		erfa/src/ry.c		erfa/src/pdp.c		\
+	erfa/src/pnm06a.c	erfa/src/hfk5z.c	erfa/src/epj2jd.c	\
+	erfa/src/pv2s.c		erfa/src/tf2a.c		erfa/src/pm.c		\
+	erfa/src/sxp.c		erfa/src/a2af.c		erfa/src/rxp.c		\
+	erfa/src/pxp.c		erfa/src/fk5hip.c	erfa/src/fw2m.c		\
+	erfa/src/rx.c		erfa/src/tf2d.c		erfa/src/cal2jd.c	\
+	erfa/src/cp.c		erfa/src/nut06a.c	erfa/src/rm2v.c		\
+	erfa/src/nut00a.c	erfa/src/ee06a.c	erfa/src/fk5hz.c	\
+	erfa/src/epb2jd.c	erfa/src/refco.c	erfa/src/a2tf.c		\
+	erfa/src/fapa03.c	erfa/src/gst06a.c	erfa/src/faf03.c	\
+	erfa/src/faur03.c	erfa/src/faju03.c	erfa/src/fal03.c	\
+	erfa/src/fasa03.c	erfa/src/fame03.c 	erfa/src/fave03.c  	\
+	erfa/src/fama03.c 	erfa/src/faom03.c 	erfa/src/gst06.c	\
+	erfa/src/jd2cal.c	erfa/src/gd2gce.c	erfa/src/anp.c		\
+	erfa/src/fae03.c	erfa/src/ir.c		erfa/src/pfw06.c	\
+	erfa/src/bpn2xy.c	erfa/src/eors.c		erfa/src/s06.c		\
+	erfa/src/trxp.c		erfa/src/era00.c	erfa/src/epj.c		\
+	erfa/src/d2tf.c		erfa/src/epb.c		erfa/src/rv2m.c		\
+	erfa/src/pap.c		erfa/src/fad03.c	erfa/src/pmp.c		\
+	erfa/src/tr.c		erfa/src/falp03.c	
+
+dserver2_SOURCES = src/dserver2.cc 
+dserver2_LDADD = libTime.la libTools.la
+ftm_SOURCES = src/ftm.cc src/HeadersFTM.cc
+ftm_LDADD = libTime.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+fad_SOURCES = src/fad.cc src/HeadersFAD.cc
+fad_LDADD = libTime.la libTools.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+fsc_SOURCES = src/fsc.cc
+fsc_LDADD = libTime.la libTools.la
+log_SOURCES = src/log.cc
+log_LDADD = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la
+logtime_SOURCES = src/logtime.cc
+logtime_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la
+moon_SOURCES = src/moon.cc
+moon_LDADD = libTime.la libConfiguration.la
+rootifysql_SOURCES = src/rootifysql.cc
+rootifysql_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+makeplots_SOURCES = src/makeplots.cc
+makeplots_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+makedata_SOURCES = src/makedata.cc
+makedata_LDADD = libTime.la libConfiguration.la
+makeschedule_SOURCES = src/makeschedule.cc
+makeschedule_LDADD = libTime.la libConfiguration.la libTools.la
+chatserv_SOURCES = src/chatserv.cc src/LocalControl.h
+chatserv_LDADD = libStateMachine.la libTools.la libConfiguration.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la
+
+dclient5_SOURCES = src/dclient5.cc src/LocalControl.h
+dclient5_LDADD = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la \
+    libConfiguration.la
+
+ftmctrl_SOURCES = src/ftmctrl.cc src/LocalControl.h src/HeadersFTM.cc
+ftmctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+cosyctrl_SOURCES = src/cosyctrl.cc src/LocalControl.h src/HeadersFTM.cc
+cosyctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+drivectrl_SOURCES = src/drivectrl.cc src/LocalControl.h
+drivectrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la libPal.la
+
+agilentctrl_SOURCES = src/agilentctrl.cc src/LocalControl.h src/HeadersAgilent.h
+agilentctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magicweather_SOURCES = src/magicweather.cc src/LocalControl.h
+magicweather_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magiclidar_SOURCES = src/magiclidar.cc src/LocalControl.h
+magiclidar_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+tngweather_SOURCES = src/tngweather.cc src/LocalControl.h
+tngweather_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+lidctrl_SOURCES = src/lidctrl.cc src/LocalControl.h
+lidctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+gpsctrl_SOURCES = src/gpsctrl.cc src/LocalControl.h
+gpsctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pfminictrl_SOURCES = src/pfminictrl.cc src/LocalControl.h
+pfminictrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+sqmctrl_SOURCES = src/sqmctrl.cc src/LocalControl.h
+sqmctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+temperature_SOURCES = src/temperature.cc src/LocalControl.h
+temperature_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pwrctrl_SOURCES = src/pwrctrl.cc src/LocalControl.h \
+	src/HeadersPower.h src/HeadersPower.cc
+
+pwrctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+timecheck_SOURCES = src/timecheck.cc src/LocalControl.h
+timecheck_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+evtserver_SOURCES = src/evtserver.cc src/LocalControl.h
+evtserver_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+getevent_SOURCES = src/getevent.cc
+getevent_LDADD = libTools.la libTime.la libConfiguration.la
+fadctrl_SOURCES = src/fadctrl.cc src/LocalControl.h src/HeadersFAD.cc \
+	src/EventBuilder.cc src/EventBuilder.h src/DataProcessorImp.cc \
+	src/DataProcessorImp.h src/DataCalib.cc src/DataCalib.h \
+	src/DataWriteRaw.cc src/DataWriteRaw.h src/DrsCalib.h \
+	$(am__append_11)
+fadctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+fscctrl_SOURCES = src/fscctrl.cc src/LocalControl.h
+fscctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+gcn_SOURCES = src/gcn.cc src/LocalControl.h
+gcn_LDADD = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la -lQtXml
+
+biasctrl_SOURCES = src/biasctrl.cc src/LocalControl.h src/PixelMap.cc
+biasctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+mcp_SOURCES = src/mcp.cc src/LocalControl.h
+mcp_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+feedback_SOURCES = src/feedback.cc src/LocalControl.h src/PixelMap.cc
+feedback_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratescan_SOURCES = src/ratescan.cc src/LocalControl.h src/PixelMap.cc
+ratescan_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratecontrol_SOURCES = src/ratecontrol.cc src/LocalControl.h src/PixelMap.cc
+ratecontrol_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+argv_SOURCES = src/argv.cc
+argv_LDADD = libConfiguration.la
+dimctrl_SOURCES = src/dimctrl.cc \
+	src/StateMachineDimControl.cc src/StateMachineDimControl.h \
+	src/RemoteControl.cc src/RemoteControl.h \
+	src/InterpreterV8.cc src/InterpreterV8.h \
+	src/DimState.cc src/DimState.h
+
+dimctrl_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+dimserver_SOURCES = $(dimctrl_SOURCES)
+dimserver_LDADD = $(dimctrl_LDADD)
+chatclient_SOURCES = src/chatclient.cc src/ChatClient.h
+chatclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+skypeclient_SOURCES = src/skypeclient.cc src/ChatClient.h
+skypeclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+time_SOURCES = src/time.cc
+time_LDADD = libTime.la 
+
+#astro_SOURCES = src/astro.cc
+#astro_LDADD = libAstro.la libTime.la 
+test_SOURCES = src/test.cc
+test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+datalogger_SOURCES = src/datalogger.cc src/LocalControl.h \
+	src/DimState.cc src/DimState.h $(am__append_12)
+datalogger_LDADD = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+scheduler_SOURCES = src/scheduler.cc src/LocalControl.h 
+scheduler_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+fitsloader_SOURCES = src/fitsloader.cc src/LocalControl.h 
+fitsloader_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+fitsdump_SOURCES = src/fitsdump.cc 
+fitsdump_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTools.la libConfiguration.la libTime.la
+fitscheck_SOURCES = src/fitscheck.cc 
+fitscheck_LDADD = libConfiguration.la
+fitsselect_SOURCES = src/fitsselect.cc 
+fitsselect_LDADD = libConfiguration.la
+readfits_SOURCES = src/readfits.cc src/ReadFits.h
+readfits_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+zfits_SOURCES = src/zfits.cc externals/huffmans.h
+zfits_LDADD = libTime.la libConfiguration.la
+showlog_SOURCES = src/showlog.cc
+showlog_LDADD = libTime.la libTools.la libConfiguration.la -lncurses src/WindowLog.lo 
+triggerschedule_SOURCES = src/triggerschedule.cc 
+triggerschedule_LDADD = libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+#fitsCompressor_SOURCES = src/fitsCompressor.cc 
+#fitsCompressor_LDADD   = libConfiguration.la
+
+#fitsgrep_SOURCES = src/fitsgrep.cc
+#fitsgrep_LDADD   = libConfiguration.la
+
+# -----
+@HAS_GUI_TRUE@fact_DIALOGS = \
+@HAS_GUI_TRUE@	gui/design.ui
+
+@HAS_GUI_TRUE@fact_RESOURCES = \
+@HAS_GUI_TRUE@	gui/design.qrc
+
+@HAS_GUI_TRUE@fact_QT_SOURCES = \
+@HAS_GUI_TRUE@	gui/DockWindow.cc \
+@HAS_GUI_TRUE@	gui/MainWindow.cc \
+@HAS_GUI_TRUE@	gui/QCameraWidget.cc \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.cc
+
+@HAS_GUI_TRUE@fact_SRCADD = $(fact_DIALOGS:.ui=.h) $(fact_RESOURCES:.qrc=.cc) $(fact_QT_SOURCES:.cc=.moc.cc)
+
+# -----
+@HAS_VIEWER_TRUE@viewer_DIALOGS = \
+@HAS_VIEWER_TRUE@	gui/RawEventsViewer/viewer.ui
+
+@HAS_VIEWER_TRUE@viewer_QT_SOURCES = \
+@HAS_VIEWER_TRUE@	gui/RawEventsViewer/RawEventsViewer.cc \
+@HAS_VIEWER_TRUE@	gui/BasicGlCamera.cc \
+@HAS_VIEWER_TRUE@	gui/QCameraWidget.cc \
+@HAS_VIEWER_TRUE@	gui/Q3DCameraWidget.cc
+
+@HAS_VIEWER_TRUE@viewer_SRCADD = $(viewer_DIALOGS:.ui=.h) $(viewer_RESOURCES:.qrc=.cc) $(viewer_QT_SOURCES:.cc=.moc.cc)
+BUILT_SOURCES = $(fact_SRCADD) $(viewer_SRCADD)
+fact_LDADD = $(ROOTLDFLAGS) $(ROOTGLIBS) -lGQt $(QT4_LIB) $(QT4_LDFLAGS) -L. \
+	libDim++.la libDim.la libDimExtension.la \
+	libTools.la libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+fact_SOURCES = $(fact_SRCADD) $(fact_QT_SOURCES) \
+	gui/CheckBoxDelegate.cc gui/HtmlDelegate.cc \
+	gui/fact.cc gui/FactGui.cc src/HeadersFTM.cc \
+	src/PixelMap.cc
+
+
+# Switch off most qwt warnings
+viewer_CXXFLAGS = $(AM_CXXFLAGS) -Wno-shadow
+viewer_LDADD = $(QT4_LIB) $(QT4_LDFLAGS) -L. -lQtOpenGL -lGLU \
+	libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTools.la \
+	libTime.la libDim++.la libDim.la 
+
+viewer_SOURCES = $(viewer_SRCADD) $(viewer_QT_SOURCES) \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/FitsFile.cc  src/FitsFile.h \
+	src/Fits.cc      src/Fits.h \
+	src/PixelMap.cc
+
+
+#-------------------------------------------------------------------------
+SUFFIXES = .moc.cc
+
+#-------------------------------------------------------------------------
+MAN_TARGETS = $(dist_man1_MANS) $(am__append_13) $(am__append_16)
+@HAS_JSDOC_TRUE@JAVA_SCRIPT_DOC = jsdoc
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .moc.cc .c .cc .cxx .h .html .lo .man .o .obj .pdf .qrc .ui
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/aminclude.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu 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;
+$(srcdir)/aminclude.am $(am__empty):
+
+$(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):
+
+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}; \
+	}
+src/$(am__dirstamp):
+	@$(MKDIR_P) src
+	@: > src/$(am__dirstamp)
+src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/$(DEPDIR)
+	@: > src/$(DEPDIR)/$(am__dirstamp)
+src/Configuration.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/FACT.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+libConfiguration.la: $(libConfiguration_la_OBJECTS) $(libConfiguration_la_DEPENDENCIES) $(EXTRA_libConfiguration_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libConfiguration_la_OBJECTS) $(libConfiguration_la_LIBADD) $(LIBS)
+dim/src/$(am__dirstamp):
+	@$(MKDIR_P) dim/src
+	@: > dim/src/$(am__dirstamp)
+dim/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/$(DEPDIR)
+	@: > dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/diccpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dimcpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/discpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/tokenstring.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+
+libDim++.la: $(libDim___la_OBJECTS) $(libDim___la_DEPENDENCIES) $(EXTRA_libDim___la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libDim___la_OBJECTS) $(libDim___la_LIBADD) $(LIBS)
+dim/src/dic.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dis.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dna.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/sll.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dll.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/hash.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/swap.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/copy_swap.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/open_dns.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/conn_handler.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/tcpip.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dtq.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dim_thr.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/utilities.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+
+libDim.la: $(libDim_la_OBJECTS) $(libDim_la_DEPENDENCIES) $(EXTRA_libDim_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libDim_la_OBJECTS) $(libDim_la_LIBADD) $(LIBS)
+src/DimSetup.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+libDimExtension.la: $(libDimExtension_la_OBJECTS) $(libDimExtension_la_DEPENDENCIES) $(EXTRA_libDimExtension_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libDimExtension_la_OBJECTS) $(libDimExtension_la_LIBADD) $(LIBS)
+pal/$(am__dirstamp):
+	@$(MKDIR_P) pal
+	@: > pal/$(am__dirstamp)
+pal/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) pal/$(DEPDIR)
+	@: > pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDtt.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDat.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palMappa.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palPrenut.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palEvp.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palAoppa.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palAoppat.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palRefco.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palRefro.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/pal1Atmt.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDrange.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palOne2One.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/pal1Atms.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palMapqkz.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palAopqk.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palRefz.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palAmpqk.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palRdplan.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDt.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palPvobs.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palNut.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDmoon.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palPlanet.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palNutc.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+pal/palDeuler.lo: pal/$(am__dirstamp) pal/$(DEPDIR)/$(am__dirstamp)
+erfa/src/$(am__dirstamp):
+	@$(MKDIR_P) erfa/src
+	@: > erfa/src/$(am__dirstamp)
+erfa/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) erfa/src/$(DEPDIR)
+	@: > erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/gd2gc.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/p06e.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/c2s.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/eform.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/s2c.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pas.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pmat06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/epv00.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/plan94.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/anpm.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/obl06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/dat.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/af2a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rxr.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/gmst06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/sepp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rz.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/zp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rxpv.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pn.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/cr.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/seps.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/ry.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pdp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pnm06a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/hfk5z.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/epj2jd.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pv2s.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/tf2a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pm.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/sxp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/a2af.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rxp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pxp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fk5hip.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fw2m.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rx.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/tf2d.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/cal2jd.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/cp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/nut06a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rm2v.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/nut00a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/ee06a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fk5hz.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/epb2jd.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/refco.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/a2tf.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fapa03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/gst06a.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/faf03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/faur03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/faju03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fal03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fasa03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fame03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fave03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fama03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/faom03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/gst06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/jd2cal.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/gd2gce.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/anp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fae03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/ir.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pfw06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/bpn2xy.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/eors.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/s06.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/trxp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/era00.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/epj.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/d2tf.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/epb.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/rv2m.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pap.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/fad03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/pmp.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/tr.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+erfa/src/falp03.lo: erfa/src/$(am__dirstamp) \
+	erfa/src/$(DEPDIR)/$(am__dirstamp)
+
+libPal.la: $(libPal_la_OBJECTS) $(libPal_la_DEPENDENCIES) $(EXTRA_libPal_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libPal_la_OBJECTS) $(libPal_la_LIBADD) $(LIBS)
+src/WindowLog.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Readline.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ReadlineColor.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/ReadlineWindow.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Console.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Shell.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/EventImp.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Event.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/State.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Description.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/MessageImp.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Converter.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineImp.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachine.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/MessageDim.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineDim.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimServerList.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimServiceInfoList.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimNetwork.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ServiceList.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/DimErrorRedirecter.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimDescriptionService.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Connection.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ConnectionUSB.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimWriteStatistics.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+libStateMachine.la: $(libStateMachine_la_OBJECTS) $(libStateMachine_la_DEPENDENCIES) $(EXTRA_libStateMachine_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libStateMachine_la_OBJECTS) $(libStateMachine_la_LIBADD) $(LIBS)
+src/Time.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+libTime.la: $(libTime_la_OBJECTS) $(libTime_la_DEPENDENCIES) $(EXTRA_libTime_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libTime_la_OBJECTS) $(libTime_la_LIBADD) $(LIBS)
+src/tools.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+libTools.la: $(libTools_la_OBJECTS) $(libTools_la_DEPENDENCIES) $(EXTRA_libTools_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libTools_la_OBJECTS) $(libTools_la_LIBADD) $(LIBS)
+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
+
+installcheck-binPROGRAMS: $(bin_PROGRAMS)
+	bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
+	  case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+	   *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+	  esac; \
+	  f=`echo "$$p" | \
+	     sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  for opt in --help --version; do \
+	    if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+	         2>c$${pid}_.err </dev/null \
+		 && test -n "`cat c$${pid}_.out`" \
+		 && test -z "`cat c$${pid}_.err`"; then :; \
+	    else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+	  done; \
+	done; rm -f c$${pid}_.???; exit $$bad
+src/agilentctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+agilentctrl$(EXEEXT): $(agilentctrl_OBJECTS) $(agilentctrl_DEPENDENCIES) $(EXTRA_agilentctrl_DEPENDENCIES) 
+	@rm -f agilentctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(agilentctrl_OBJECTS) $(agilentctrl_LDADD) $(LIBS)
+src/argv.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+argv$(EXEEXT): $(argv_OBJECTS) $(argv_DEPENDENCIES) $(EXTRA_argv_DEPENDENCIES) 
+	@rm -f argv$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(argv_OBJECTS) $(argv_LDADD) $(LIBS)
+
+astro$(EXEEXT): $(astro_OBJECTS) $(astro_DEPENDENCIES) $(EXTRA_astro_DEPENDENCIES) 
+	@rm -f astro$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(astro_OBJECTS) $(astro_LDADD) $(LIBS)
+src/biasctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/PixelMap.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+biasctrl$(EXEEXT): $(biasctrl_OBJECTS) $(biasctrl_DEPENDENCIES) $(EXTRA_biasctrl_DEPENDENCIES) 
+	@rm -f biasctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(biasctrl_OBJECTS) $(biasctrl_LDADD) $(LIBS)
+src/chatclient.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+chatclient$(EXEEXT): $(chatclient_OBJECTS) $(chatclient_DEPENDENCIES) $(EXTRA_chatclient_DEPENDENCIES) 
+	@rm -f chatclient$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(chatclient_OBJECTS) $(chatclient_LDADD) $(LIBS)
+src/chatserv.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+chatserv$(EXEEXT): $(chatserv_OBJECTS) $(chatserv_DEPENDENCIES) $(EXTRA_chatserv_DEPENDENCIES) 
+	@rm -f chatserv$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(chatserv_OBJECTS) $(chatserv_LDADD) $(LIBS)
+src/cosyctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersFTM.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+cosyctrl$(EXEEXT): $(cosyctrl_OBJECTS) $(cosyctrl_DEPENDENCIES) $(EXTRA_cosyctrl_DEPENDENCIES) 
+	@rm -f cosyctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(cosyctrl_OBJECTS) $(cosyctrl_LDADD) $(LIBS)
+src/datalogger.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimState.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/FitsFile.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Fits.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+datalogger$(EXEEXT): $(datalogger_OBJECTS) $(datalogger_DEPENDENCIES) $(EXTRA_datalogger_DEPENDENCIES) 
+	@rm -f datalogger$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(datalogger_OBJECTS) $(datalogger_LDADD) $(LIBS)
+src/dclient5.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+dclient5$(EXEEXT): $(dclient5_OBJECTS) $(dclient5_DEPENDENCIES) $(EXTRA_dclient5_DEPENDENCIES) 
+	@rm -f dclient5$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dclient5_OBJECTS) $(dclient5_LDADD) $(LIBS)
+dim/src/did/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/did
+	@: > dim/src/did/$(am__dirstamp)
+dim/src/did/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/did/$(DEPDIR)
+	@: > dim/src/did/$(DEPDIR)/$(am__dirstamp)
+dim/src/did/did-did.$(OBJEXT): dim/src/did/$(am__dirstamp) \
+	dim/src/did/$(DEPDIR)/$(am__dirstamp)
+dim/src/did/did-dui_util.$(OBJEXT): dim/src/did/$(am__dirstamp) \
+	dim/src/did/$(DEPDIR)/$(am__dirstamp)
+
+did$(EXEEXT): $(did_OBJECTS) $(did_DEPENDENCIES) $(EXTRA_did_DEPENDENCIES) 
+	@rm -f did$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(did_OBJECTS) $(did_LDADD) $(LIBS)
+src/dimctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineDimControl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/RemoteControl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/InterpreterV8.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+dimctrl$(EXEEXT): $(dimctrl_OBJECTS) $(dimctrl_DEPENDENCIES) $(EXTRA_dimctrl_DEPENDENCIES) 
+	@rm -f dimctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dimctrl_OBJECTS) $(dimctrl_LDADD) $(LIBS)
+
+dimserver$(EXEEXT): $(dimserver_OBJECTS) $(dimserver_DEPENDENCIES) $(EXTRA_dimserver_DEPENDENCIES) 
+	@rm -f dimserver$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dimserver_OBJECTS) $(dimserver_LDADD) $(LIBS)
+src/dns.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+dns$(EXEEXT): $(dns_OBJECTS) $(dns_DEPENDENCIES) $(EXTRA_dns_DEPENDENCIES) 
+	@rm -f dns$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(dns_OBJECTS) $(dns_LDADD) $(LIBS)
+src/drivectrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+drivectrl$(EXEEXT): $(drivectrl_OBJECTS) $(drivectrl_DEPENDENCIES) $(EXTRA_drivectrl_DEPENDENCIES) 
+	@rm -f drivectrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(drivectrl_OBJECTS) $(drivectrl_LDADD) $(LIBS)
+src/dserver2.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+dserver2$(EXEEXT): $(dserver2_OBJECTS) $(dserver2_DEPENDENCIES) $(EXTRA_dserver2_DEPENDENCIES) 
+	@rm -f dserver2$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dserver2_OBJECTS) $(dserver2_LDADD) $(LIBS)
+src/evtserver.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+evtserver$(EXEEXT): $(evtserver_OBJECTS) $(evtserver_DEPENDENCIES) $(EXTRA_evtserver_DEPENDENCIES) 
+	@rm -f evtserver$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(evtserver_OBJECTS) $(evtserver_LDADD) $(LIBS)
+gui/$(am__dirstamp):
+	@$(MKDIR_P) gui
+	@: > gui/$(am__dirstamp)
+gui/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/$(DEPDIR)
+	@: > gui/$(DEPDIR)/$(am__dirstamp)
+gui/design.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/DockWindow.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/MainWindow.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/QCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/BasicGlCamera.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/DockWindow.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/MainWindow.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/QCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/BasicGlCamera.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/CheckBoxDelegate.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/HtmlDelegate.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/fact.$(OBJEXT): gui/$(am__dirstamp) gui/$(DEPDIR)/$(am__dirstamp)
+gui/FactGui.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+
+fact$(EXEEXT): $(fact_OBJECTS) $(fact_DEPENDENCIES) $(EXTRA_fact_DEPENDENCIES) 
+	@rm -f fact$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fact_OBJECTS) $(fact_LDADD) $(LIBS)
+src/fad.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersFAD.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fad$(EXEEXT): $(fad_OBJECTS) $(fad_DEPENDENCIES) $(EXTRA_fad_DEPENDENCIES) 
+	@rm -f fad$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fad_OBJECTS) $(fad_LDADD) $(LIBS)
+src/fadctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/EventBuilder.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataProcessorImp.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataCalib.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteRaw.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteFits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteFits2.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fadctrl$(EXEEXT): $(fadctrl_OBJECTS) $(fadctrl_DEPENDENCIES) $(EXTRA_fadctrl_DEPENDENCIES) 
+	@rm -f fadctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fadctrl_OBJECTS) $(fadctrl_LDADD) $(LIBS)
+src/feedback.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+feedback$(EXEEXT): $(feedback_OBJECTS) $(feedback_DEPENDENCIES) $(EXTRA_feedback_DEPENDENCIES) 
+	@rm -f feedback$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(feedback_OBJECTS) $(feedback_LDADD) $(LIBS)
+src/fitscheck.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fitscheck$(EXEEXT): $(fitscheck_OBJECTS) $(fitscheck_DEPENDENCIES) $(EXTRA_fitscheck_DEPENDENCIES) 
+	@rm -f fitscheck$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitscheck_OBJECTS) $(fitscheck_LDADD) $(LIBS)
+src/fitsdump.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fitsdump$(EXEEXT): $(fitsdump_OBJECTS) $(fitsdump_DEPENDENCIES) $(EXTRA_fitsdump_DEPENDENCIES) 
+	@rm -f fitsdump$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsdump_OBJECTS) $(fitsdump_LDADD) $(LIBS)
+
+fitsgrep$(EXEEXT): $(fitsgrep_OBJECTS) $(fitsgrep_DEPENDENCIES) $(EXTRA_fitsgrep_DEPENDENCIES) 
+	@rm -f fitsgrep$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fitsgrep_OBJECTS) $(fitsgrep_LDADD) $(LIBS)
+src/fitsloader.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fitsloader$(EXEEXT): $(fitsloader_OBJECTS) $(fitsloader_DEPENDENCIES) $(EXTRA_fitsloader_DEPENDENCIES) 
+	@rm -f fitsloader$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsloader_OBJECTS) $(fitsloader_LDADD) $(LIBS)
+src/fitsselect.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fitsselect$(EXEEXT): $(fitsselect_OBJECTS) $(fitsselect_DEPENDENCIES) $(EXTRA_fitsselect_DEPENDENCIES) 
+	@rm -f fitsselect$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsselect_OBJECTS) $(fitsselect_LDADD) $(LIBS)
+src/fsc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+fsc$(EXEEXT): $(fsc_OBJECTS) $(fsc_DEPENDENCIES) $(EXTRA_fsc_DEPENDENCIES) 
+	@rm -f fsc$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fsc_OBJECTS) $(fsc_LDADD) $(LIBS)
+src/fscctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+fscctrl$(EXEEXT): $(fscctrl_OBJECTS) $(fscctrl_DEPENDENCIES) $(EXTRA_fscctrl_DEPENDENCIES) 
+	@rm -f fscctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fscctrl_OBJECTS) $(fscctrl_LDADD) $(LIBS)
+src/ftm.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+ftm$(EXEEXT): $(ftm_OBJECTS) $(ftm_DEPENDENCIES) $(EXTRA_ftm_DEPENDENCIES) 
+	@rm -f ftm$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ftm_OBJECTS) $(ftm_LDADD) $(LIBS)
+src/ftmctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+ftmctrl$(EXEEXT): $(ftmctrl_OBJECTS) $(ftmctrl_DEPENDENCIES) $(EXTRA_ftmctrl_DEPENDENCIES) 
+	@rm -f ftmctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ftmctrl_OBJECTS) $(ftmctrl_LDADD) $(LIBS)
+src/gcn.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+gcn$(EXEEXT): $(gcn_OBJECTS) $(gcn_DEPENDENCIES) $(EXTRA_gcn_DEPENDENCIES) 
+	@rm -f gcn$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(gcn_OBJECTS) $(gcn_LDADD) $(LIBS)
+src/getevent.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+getevent$(EXEEXT): $(getevent_OBJECTS) $(getevent_DEPENDENCIES) $(EXTRA_getevent_DEPENDENCIES) 
+	@rm -f getevent$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(getevent_OBJECTS) $(getevent_LDADD) $(LIBS)
+src/gpsctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+gpsctrl$(EXEEXT): $(gpsctrl_OBJECTS) $(gpsctrl_DEPENDENCIES) $(EXTRA_gpsctrl_DEPENDENCIES) 
+	@rm -f gpsctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(gpsctrl_OBJECTS) $(gpsctrl_LDADD) $(LIBS)
+src/lidctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+lidctrl$(EXEEXT): $(lidctrl_OBJECTS) $(lidctrl_DEPENDENCIES) $(EXTRA_lidctrl_DEPENDENCIES) 
+	@rm -f lidctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(lidctrl_OBJECTS) $(lidctrl_LDADD) $(LIBS)
+src/log.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+log$(EXEEXT): $(log_OBJECTS) $(log_DEPENDENCIES) $(EXTRA_log_DEPENDENCIES) 
+	@rm -f log$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(log_OBJECTS) $(log_LDADD) $(LIBS)
+src/logtime.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+logtime$(EXEEXT): $(logtime_OBJECTS) $(logtime_DEPENDENCIES) $(EXTRA_logtime_DEPENDENCIES) 
+	@rm -f logtime$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(logtime_OBJECTS) $(logtime_LDADD) $(LIBS)
+src/magiclidar.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+magiclidar$(EXEEXT): $(magiclidar_OBJECTS) $(magiclidar_DEPENDENCIES) $(EXTRA_magiclidar_DEPENDENCIES) 
+	@rm -f magiclidar$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(magiclidar_OBJECTS) $(magiclidar_LDADD) $(LIBS)
+src/magicweather.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+magicweather$(EXEEXT): $(magicweather_OBJECTS) $(magicweather_DEPENDENCIES) $(EXTRA_magicweather_DEPENDENCIES) 
+	@rm -f magicweather$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(magicweather_OBJECTS) $(magicweather_LDADD) $(LIBS)
+src/makedata.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+makedata$(EXEEXT): $(makedata_OBJECTS) $(makedata_DEPENDENCIES) $(EXTRA_makedata_DEPENDENCIES) 
+	@rm -f makedata$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(makedata_OBJECTS) $(makedata_LDADD) $(LIBS)
+src/makeplots.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+makeplots$(EXEEXT): $(makeplots_OBJECTS) $(makeplots_DEPENDENCIES) $(EXTRA_makeplots_DEPENDENCIES) 
+	@rm -f makeplots$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(makeplots_OBJECTS) $(makeplots_LDADD) $(LIBS)
+src/makeschedule.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+makeschedule$(EXEEXT): $(makeschedule_OBJECTS) $(makeschedule_DEPENDENCIES) $(EXTRA_makeschedule_DEPENDENCIES) 
+	@rm -f makeschedule$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(makeschedule_OBJECTS) $(makeschedule_LDADD) $(LIBS)
+src/mcp.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+mcp$(EXEEXT): $(mcp_OBJECTS) $(mcp_DEPENDENCIES) $(EXTRA_mcp_DEPENDENCIES) 
+	@rm -f mcp$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(mcp_OBJECTS) $(mcp_LDADD) $(LIBS)
+src/moon.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+moon$(EXEEXT): $(moon_OBJECTS) $(moon_DEPENDENCIES) $(EXTRA_moon_DEPENDENCIES) 
+	@rm -f moon$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(moon_OBJECTS) $(moon_LDADD) $(LIBS)
+src/pfminictrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+pfminictrl$(EXEEXT): $(pfminictrl_OBJECTS) $(pfminictrl_DEPENDENCIES) $(EXTRA_pfminictrl_DEPENDENCIES) 
+	@rm -f pfminictrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pfminictrl_OBJECTS) $(pfminictrl_LDADD) $(LIBS)
+src/pwrctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersPower.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+pwrctrl$(EXEEXT): $(pwrctrl_OBJECTS) $(pwrctrl_DEPENDENCIES) $(EXTRA_pwrctrl_DEPENDENCIES) 
+	@rm -f pwrctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pwrctrl_OBJECTS) $(pwrctrl_LDADD) $(LIBS)
+src/ratecontrol.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+ratecontrol$(EXEEXT): $(ratecontrol_OBJECTS) $(ratecontrol_DEPENDENCIES) $(EXTRA_ratecontrol_DEPENDENCIES) 
+	@rm -f ratecontrol$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ratecontrol_OBJECTS) $(ratecontrol_LDADD) $(LIBS)
+src/ratescan.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+ratescan$(EXEEXT): $(ratescan_OBJECTS) $(ratescan_DEPENDENCIES) $(EXTRA_ratescan_DEPENDENCIES) 
+	@rm -f ratescan$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ratescan_OBJECTS) $(ratescan_LDADD) $(LIBS)
+src/readfits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+readfits$(EXEEXT): $(readfits_OBJECTS) $(readfits_DEPENDENCIES) $(EXTRA_readfits_DEPENDENCIES) 
+	@rm -f readfits$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(readfits_OBJECTS) $(readfits_LDADD) $(LIBS)
+src/rootifysql.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+rootifysql$(EXEEXT): $(rootifysql_OBJECTS) $(rootifysql_DEPENDENCIES) $(EXTRA_rootifysql_DEPENDENCIES) 
+	@rm -f rootifysql$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(rootifysql_OBJECTS) $(rootifysql_LDADD) $(LIBS)
+
+sched$(EXEEXT): $(sched_OBJECTS) $(sched_DEPENDENCIES) $(EXTRA_sched_DEPENDENCIES) 
+	@rm -f sched$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sched_OBJECTS) $(sched_LDADD) $(LIBS)
+src/scheduler.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+scheduler$(EXEEXT): $(scheduler_OBJECTS) $(scheduler_DEPENDENCIES) $(EXTRA_scheduler_DEPENDENCIES) 
+	@rm -f scheduler$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS)
+src/showlog.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+showlog$(EXEEXT): $(showlog_OBJECTS) $(showlog_DEPENDENCIES) $(EXTRA_showlog_DEPENDENCIES) 
+	@rm -f showlog$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(showlog_OBJECTS) $(showlog_LDADD) $(LIBS)
+src/skypeclient.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+skypeclient$(EXEEXT): $(skypeclient_OBJECTS) $(skypeclient_DEPENDENCIES) $(EXTRA_skypeclient_DEPENDENCIES) 
+	@rm -f skypeclient$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(skypeclient_OBJECTS) $(skypeclient_LDADD) $(LIBS)
+src/smartfact.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+smartfact$(EXEEXT): $(smartfact_OBJECTS) $(smartfact_DEPENDENCIES) $(EXTRA_smartfact_DEPENDENCIES) 
+	@rm -f smartfact$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smartfact_OBJECTS) $(smartfact_LDADD) $(LIBS)
+src/sqmctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+sqmctrl$(EXEEXT): $(sqmctrl_OBJECTS) $(sqmctrl_DEPENDENCIES) $(EXTRA_sqmctrl_DEPENDENCIES) 
+	@rm -f sqmctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sqmctrl_OBJECTS) $(sqmctrl_LDADD) $(LIBS)
+src/temperature.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+temperature$(EXEEXT): $(temperature_OBJECTS) $(temperature_DEPENDENCIES) $(EXTRA_temperature_DEPENDENCIES) 
+	@rm -f temperature$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(temperature_OBJECTS) $(temperature_LDADD) $(LIBS)
+src/test.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) 
+	@rm -f test$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+src/time.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) 
+	@rm -f time$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
+src/timecheck.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+timecheck$(EXEEXT): $(timecheck_OBJECTS) $(timecheck_DEPENDENCIES) $(EXTRA_timecheck_DEPENDENCIES) 
+	@rm -f timecheck$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(timecheck_OBJECTS) $(timecheck_LDADD) $(LIBS)
+src/tngweather.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+tngweather$(EXEEXT): $(tngweather_OBJECTS) $(tngweather_DEPENDENCIES) $(EXTRA_tngweather_DEPENDENCIES) 
+	@rm -f tngweather$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(tngweather_OBJECTS) $(tngweather_LDADD) $(LIBS)
+src/triggerschedule.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+triggerschedule$(EXEEXT): $(triggerschedule_OBJECTS) $(triggerschedule_DEPENDENCIES) $(EXTRA_triggerschedule_DEPENDENCIES) 
+	@rm -f triggerschedule$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(triggerschedule_OBJECTS) $(triggerschedule_LDADD) $(LIBS)
+gui/RawEventsViewer/$(am__dirstamp):
+	@$(MKDIR_P) gui/RawEventsViewer
+	@: > gui/RawEventsViewer/$(am__dirstamp)
+gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/RawEventsViewer/$(DEPDIR)
+	@: > gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.$(OBJEXT):  \
+	gui/RawEventsViewer/$(am__dirstamp) \
+	gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-BasicGlCamera.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-QCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-Q3DCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/RawEventsViewer/viewer-RawEventsViewer.$(OBJEXT):  \
+	gui/RawEventsViewer/$(am__dirstamp) \
+	gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-BasicGlCamera.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-QCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-Q3DCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+src/viewer-DataProcessorImp.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-FitsFile.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-Fits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-PixelMap.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+
+viewer$(EXEEXT): $(viewer_OBJECTS) $(viewer_DEPENDENCIES) $(EXTRA_viewer_DEPENDENCIES) 
+	@rm -f viewer$(EXEEXT)
+	$(AM_V_CXXLD)$(viewer_LINK) $(viewer_OBJECTS) $(viewer_LDADD) $(LIBS)
+dim/src/webDid/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/webDid
+	@: > dim/src/webDid/$(am__dirstamp)
+dim/src/webDid/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/webDid/$(DEPDIR)
+	@: > dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+dim/src/webDid/webDid-webDid.$(OBJEXT):  \
+	dim/src/webDid/$(am__dirstamp) \
+	dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+src/webDid-webServer.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+dim/src/webDid/webDid-webTcpip.$(OBJEXT):  \
+	dim/src/webDid/$(am__dirstamp) \
+	dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+
+webDid$(EXEEXT): $(webDid_OBJECTS) $(webDid_DEPENDENCIES) $(EXTRA_webDid_DEPENDENCIES) 
+	@rm -f webDid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(webDid_OBJECTS) $(webDid_LDADD) $(LIBS)
+src/zfits.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+
+zfits$(EXEEXT): $(zfits_OBJECTS) $(zfits_DEPENDENCIES) $(EXTRA_zfits_DEPENDENCIES) 
+	@rm -f zfits$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(zfits_OBJECTS) $(zfits_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f dim/src/*.$(OBJEXT)
+	-rm -f dim/src/*.lo
+	-rm -f dim/src/did/*.$(OBJEXT)
+	-rm -f dim/src/webDid/*.$(OBJEXT)
+	-rm -f erfa/src/*.$(OBJEXT)
+	-rm -f erfa/src/*.lo
+	-rm -f gui/*.$(OBJEXT)
+	-rm -f gui/RawEventsViewer/*.$(OBJEXT)
+	-rm -f pal/*.$(OBJEXT)
+	-rm -f pal/*.lo
+	-rm -f src/*.$(OBJEXT)
+	-rm -f src/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/astro.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitsgrep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/conn_handler.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/copy_swap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/diccpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dim_thr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dimcpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/discpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dtq.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/hash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/open_dns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/sll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/swap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/tcpip.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/tokenstring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/did/$(DEPDIR)/did-did.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/did/$(DEPDIR)/did-dui_util.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/webDid/$(DEPDIR)/webDid-webDid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/a2af.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/a2tf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/af2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/anp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/anpm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/bpn2xy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/c2s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/cal2jd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/cp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/cr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/d2tf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/dat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/ee06a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/eform.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/eors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/epb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/epb2jd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/epj.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/epj2jd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/epv00.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/era00.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fad03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fae03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/faf03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/faju03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fal03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/falp03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fama03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fame03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/faom03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fapa03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fasa03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/faur03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fave03.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fk5hip.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fk5hz.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/fw2m.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/gd2gc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/gd2gce.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/gmst06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/gst06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/gst06a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/hfk5z.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/ir.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/jd2cal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/nut00a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/nut06a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/obl06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/p06e.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pas.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pdp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pfw06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/plan94.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pmat06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pnm06a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pv2s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/pxp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/refco.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rm2v.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rv2m.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rxp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rxpv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rxr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/ry.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/rz.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/s06.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/s2c.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/sepp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/seps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/sxp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/tf2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/tf2d.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/tr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/trxp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@erfa/src/$(DEPDIR)/zp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/BasicGlCamera.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/BasicGlCamera.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/CheckBoxDelegate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/DockWindow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/DockWindow.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/FactGui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/HtmlDelegate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/MainWindow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/MainWindow.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/QCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/QCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/design.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/fact.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-BasicGlCamera.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-QCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/pal1Atms.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/pal1Atmt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palAmpqk.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palAoppa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palAoppat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palAopqk.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDeuler.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDmoon.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDrange.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palDtt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palEvp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palMappa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palMapqkz.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palNut.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palNutc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palOne2One.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palPlanet.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palPrenut.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palPvobs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palRdplan.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palRefco.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palRefro.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pal/$(DEPDIR)/palRefz.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Configuration.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Connection.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ConnectionUSB.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Console.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Converter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataCalib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataProcessorImp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteFits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteFits2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteRaw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Description.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimDescriptionService.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimErrorRedirecter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimNetwork.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimServerList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimServiceInfoList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimSetup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimState.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimWriteStatistics.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Event.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/EventBuilder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/EventImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/FACT.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Fits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/FitsFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersFAD.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersFTM.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersPower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/InterpreterV8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MessageDim.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MessageImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/PixelMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Readline.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ReadlineColor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ReadlineWindow.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/RemoteControl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ServiceList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Shell.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/State.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineDim.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineDimControl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Time.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/WindowLog.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/agilentctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/biasctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chatclient.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chatserv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/cosyctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/datalogger.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dclient5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dimctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dns.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/drivectrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dserver2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/evtserver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fad.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fadctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/feedback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitscheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsloader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsselect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fsc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fscctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ftm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ftmctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gcn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getevent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gpsctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/lidctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/logtime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/magiclidar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/magicweather.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/makedata.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/makeplots.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/makeschedule.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/mcp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/moon.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pfminictrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pwrctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ratecontrol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ratescan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/readfits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rootifysql.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/scheduler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/showlog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/skypeclient.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/smartfact.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/sqmctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/temperature.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/time.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/timecheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/tngweather.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/tools.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/triggerschedule.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-DataProcessorImp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-Fits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-FitsFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-PixelMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/webDid-webServer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/zfits.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+dim/src/did/did-did.o: dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-did.o -MD -MP -MF dim/src/did/$(DEPDIR)/did-did.Tpo -c -o dim/src/did/did-did.o `test -f 'dim/src/did/did.c' || echo '$(srcdir)/'`dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-did.Tpo dim/src/did/$(DEPDIR)/did-did.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/did.c' object='dim/src/did/did-did.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-did.o `test -f 'dim/src/did/did.c' || echo '$(srcdir)/'`dim/src/did/did.c
+
+dim/src/did/did-did.obj: dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-did.obj -MD -MP -MF dim/src/did/$(DEPDIR)/did-did.Tpo -c -o dim/src/did/did-did.obj `if test -f 'dim/src/did/did.c'; then $(CYGPATH_W) 'dim/src/did/did.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/did.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-did.Tpo dim/src/did/$(DEPDIR)/did-did.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/did.c' object='dim/src/did/did-did.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-did.obj `if test -f 'dim/src/did/did.c'; then $(CYGPATH_W) 'dim/src/did/did.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/did.c'; fi`
+
+dim/src/did/did-dui_util.o: dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-dui_util.o -MD -MP -MF dim/src/did/$(DEPDIR)/did-dui_util.Tpo -c -o dim/src/did/did-dui_util.o `test -f 'dim/src/did/dui_util.c' || echo '$(srcdir)/'`dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-dui_util.Tpo dim/src/did/$(DEPDIR)/did-dui_util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/dui_util.c' object='dim/src/did/did-dui_util.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-dui_util.o `test -f 'dim/src/did/dui_util.c' || echo '$(srcdir)/'`dim/src/did/dui_util.c
+
+dim/src/did/did-dui_util.obj: dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-dui_util.obj -MD -MP -MF dim/src/did/$(DEPDIR)/did-dui_util.Tpo -c -o dim/src/did/did-dui_util.obj `if test -f 'dim/src/did/dui_util.c'; then $(CYGPATH_W) 'dim/src/did/dui_util.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/dui_util.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-dui_util.Tpo dim/src/did/$(DEPDIR)/did-dui_util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/dui_util.c' object='dim/src/did/did-dui_util.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-dui_util.obj `if test -f 'dim/src/did/dui_util.c'; then $(CYGPATH_W) 'dim/src/did/dui_util.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/dui_util.c'; fi`
+
+dim/src/webDid/webDid-webDid.o: dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webDid.o -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo -c -o dim/src/webDid/webDid-webDid.o `test -f 'dim/src/webDid/webDid.c' || echo '$(srcdir)/'`dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo dim/src/webDid/$(DEPDIR)/webDid-webDid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webDid.c' object='dim/src/webDid/webDid-webDid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webDid.o `test -f 'dim/src/webDid/webDid.c' || echo '$(srcdir)/'`dim/src/webDid/webDid.c
+
+dim/src/webDid/webDid-webDid.obj: dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webDid.obj -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo -c -o dim/src/webDid/webDid-webDid.obj `if test -f 'dim/src/webDid/webDid.c'; then $(CYGPATH_W) 'dim/src/webDid/webDid.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webDid.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo dim/src/webDid/$(DEPDIR)/webDid-webDid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webDid.c' object='dim/src/webDid/webDid-webDid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webDid.obj `if test -f 'dim/src/webDid/webDid.c'; then $(CYGPATH_W) 'dim/src/webDid/webDid.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webDid.c'; fi`
+
+src/webDid-webServer.o: src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/webDid-webServer.o -MD -MP -MF src/$(DEPDIR)/webDid-webServer.Tpo -c -o src/webDid-webServer.o `test -f 'src/webServer.c' || echo '$(srcdir)/'`src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/webDid-webServer.Tpo src/$(DEPDIR)/webDid-webServer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/webServer.c' object='src/webDid-webServer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/webDid-webServer.o `test -f 'src/webServer.c' || echo '$(srcdir)/'`src/webServer.c
+
+src/webDid-webServer.obj: src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/webDid-webServer.obj -MD -MP -MF src/$(DEPDIR)/webDid-webServer.Tpo -c -o src/webDid-webServer.obj `if test -f 'src/webServer.c'; then $(CYGPATH_W) 'src/webServer.c'; else $(CYGPATH_W) '$(srcdir)/src/webServer.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/webDid-webServer.Tpo src/$(DEPDIR)/webDid-webServer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/webServer.c' object='src/webDid-webServer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/webDid-webServer.obj `if test -f 'src/webServer.c'; then $(CYGPATH_W) 'src/webServer.c'; else $(CYGPATH_W) '$(srcdir)/src/webServer.c'; fi`
+
+dim/src/webDid/webDid-webTcpip.o: dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webTcpip.o -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo -c -o dim/src/webDid/webDid-webTcpip.o `test -f 'dim/src/webDid/webTcpip.c' || echo '$(srcdir)/'`dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webTcpip.c' object='dim/src/webDid/webDid-webTcpip.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webTcpip.o `test -f 'dim/src/webDid/webTcpip.c' || echo '$(srcdir)/'`dim/src/webDid/webTcpip.c
+
+dim/src/webDid/webDid-webTcpip.obj: dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webTcpip.obj -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo -c -o dim/src/webDid/webDid-webTcpip.obj `if test -f 'dim/src/webDid/webTcpip.c'; then $(CYGPATH_W) 'dim/src/webDid/webTcpip.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webTcpip.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webTcpip.c' object='dim/src/webDid/webDid-webTcpip.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webTcpip.obj `if test -f 'dim/src/webDid/webTcpip.c'; then $(CYGPATH_W) 'dim/src/webDid/webTcpip.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webTcpip.c'; fi`
+
+.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 $@ $<
+
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.o: gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.moc.o -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.o `test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.moc.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.o `test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.moc.cc
+
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj: gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.moc.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.moc.cc'; fi`
+
+gui/viewer-BasicGlCamera.moc.o: gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo -c -o gui/viewer-BasicGlCamera.moc.o `test -f 'gui/BasicGlCamera.moc.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.moc.cc' object='gui/viewer-BasicGlCamera.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.moc.o `test -f 'gui/BasicGlCamera.moc.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.moc.cc
+
+gui/viewer-BasicGlCamera.moc.obj: gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo -c -o gui/viewer-BasicGlCamera.moc.obj `if test -f 'gui/BasicGlCamera.moc.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.moc.cc' object='gui/viewer-BasicGlCamera.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.moc.obj `if test -f 'gui/BasicGlCamera.moc.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.moc.cc'; fi`
+
+gui/viewer-QCameraWidget.moc.o: gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo -c -o gui/viewer-QCameraWidget.moc.o `test -f 'gui/QCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.moc.cc' object='gui/viewer-QCameraWidget.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.moc.o `test -f 'gui/QCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/QCameraWidget.moc.cc
+
+gui/viewer-QCameraWidget.moc.obj: gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo -c -o gui/viewer-QCameraWidget.moc.obj `if test -f 'gui/QCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.moc.cc' object='gui/viewer-QCameraWidget.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.moc.obj `if test -f 'gui/QCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.moc.cc'; fi`
+
+gui/viewer-Q3DCameraWidget.moc.o: gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo -c -o gui/viewer-Q3DCameraWidget.moc.o `test -f 'gui/Q3DCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.moc.cc' object='gui/viewer-Q3DCameraWidget.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.moc.o `test -f 'gui/Q3DCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.moc.cc
+
+gui/viewer-Q3DCameraWidget.moc.obj: gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo -c -o gui/viewer-Q3DCameraWidget.moc.obj `if test -f 'gui/Q3DCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.moc.cc' object='gui/viewer-Q3DCameraWidget.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.moc.obj `if test -f 'gui/Q3DCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.moc.cc'; fi`
+
+gui/RawEventsViewer/viewer-RawEventsViewer.o: gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.o -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.o `test -f 'gui/RawEventsViewer/RawEventsViewer.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.o `test -f 'gui/RawEventsViewer/RawEventsViewer.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.cc
+
+gui/RawEventsViewer/viewer-RawEventsViewer.obj: gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.obj -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.cc'; fi`
+
+gui/viewer-BasicGlCamera.o: gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.o -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo -c -o gui/viewer-BasicGlCamera.o `test -f 'gui/BasicGlCamera.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.cc' object='gui/viewer-BasicGlCamera.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.o `test -f 'gui/BasicGlCamera.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.cc
+
+gui/viewer-BasicGlCamera.obj: gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.obj -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo -c -o gui/viewer-BasicGlCamera.obj `if test -f 'gui/BasicGlCamera.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.cc' object='gui/viewer-BasicGlCamera.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.obj `if test -f 'gui/BasicGlCamera.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.cc'; fi`
+
+gui/viewer-QCameraWidget.o: gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.o -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.Tpo -c -o gui/viewer-QCameraWidget.o `test -f 'gui/QCameraWidget.cc' || echo '$(srcdir)/'`gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.cc' object='gui/viewer-QCameraWidget.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.o `test -f 'gui/QCameraWidget.cc' || echo '$(srcdir)/'`gui/QCameraWidget.cc
+
+gui/viewer-QCameraWidget.obj: gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.obj -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.Tpo -c -o gui/viewer-QCameraWidget.obj `if test -f 'gui/QCameraWidget.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.cc' object='gui/viewer-QCameraWidget.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.obj `if test -f 'gui/QCameraWidget.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.cc'; fi`
+
+gui/viewer-Q3DCameraWidget.o: gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.o -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo -c -o gui/viewer-Q3DCameraWidget.o `test -f 'gui/Q3DCameraWidget.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.cc' object='gui/viewer-Q3DCameraWidget.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.o `test -f 'gui/Q3DCameraWidget.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.cc
+
+gui/viewer-Q3DCameraWidget.obj: gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.obj -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo -c -o gui/viewer-Q3DCameraWidget.obj `if test -f 'gui/Q3DCameraWidget.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.cc' object='gui/viewer-Q3DCameraWidget.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.obj `if test -f 'gui/Q3DCameraWidget.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.cc'; fi`
+
+src/viewer-DataProcessorImp.o: src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-DataProcessorImp.o -MD -MP -MF src/$(DEPDIR)/viewer-DataProcessorImp.Tpo -c -o src/viewer-DataProcessorImp.o `test -f 'src/DataProcessorImp.cc' || echo '$(srcdir)/'`src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-DataProcessorImp.Tpo src/$(DEPDIR)/viewer-DataProcessorImp.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/DataProcessorImp.cc' object='src/viewer-DataProcessorImp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-DataProcessorImp.o `test -f 'src/DataProcessorImp.cc' || echo '$(srcdir)/'`src/DataProcessorImp.cc
+
+src/viewer-DataProcessorImp.obj: src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-DataProcessorImp.obj -MD -MP -MF src/$(DEPDIR)/viewer-DataProcessorImp.Tpo -c -o src/viewer-DataProcessorImp.obj `if test -f 'src/DataProcessorImp.cc'; then $(CYGPATH_W) 'src/DataProcessorImp.cc'; else $(CYGPATH_W) '$(srcdir)/src/DataProcessorImp.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-DataProcessorImp.Tpo src/$(DEPDIR)/viewer-DataProcessorImp.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/DataProcessorImp.cc' object='src/viewer-DataProcessorImp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-DataProcessorImp.obj `if test -f 'src/DataProcessorImp.cc'; then $(CYGPATH_W) 'src/DataProcessorImp.cc'; else $(CYGPATH_W) '$(srcdir)/src/DataProcessorImp.cc'; fi`
+
+src/viewer-FitsFile.o: src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-FitsFile.o -MD -MP -MF src/$(DEPDIR)/viewer-FitsFile.Tpo -c -o src/viewer-FitsFile.o `test -f 'src/FitsFile.cc' || echo '$(srcdir)/'`src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-FitsFile.Tpo src/$(DEPDIR)/viewer-FitsFile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/FitsFile.cc' object='src/viewer-FitsFile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-FitsFile.o `test -f 'src/FitsFile.cc' || echo '$(srcdir)/'`src/FitsFile.cc
+
+src/viewer-FitsFile.obj: src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-FitsFile.obj -MD -MP -MF src/$(DEPDIR)/viewer-FitsFile.Tpo -c -o src/viewer-FitsFile.obj `if test -f 'src/FitsFile.cc'; then $(CYGPATH_W) 'src/FitsFile.cc'; else $(CYGPATH_W) '$(srcdir)/src/FitsFile.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-FitsFile.Tpo src/$(DEPDIR)/viewer-FitsFile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/FitsFile.cc' object='src/viewer-FitsFile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-FitsFile.obj `if test -f 'src/FitsFile.cc'; then $(CYGPATH_W) 'src/FitsFile.cc'; else $(CYGPATH_W) '$(srcdir)/src/FitsFile.cc'; fi`
+
+src/viewer-Fits.o: src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-Fits.o -MD -MP -MF src/$(DEPDIR)/viewer-Fits.Tpo -c -o src/viewer-Fits.o `test -f 'src/Fits.cc' || echo '$(srcdir)/'`src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-Fits.Tpo src/$(DEPDIR)/viewer-Fits.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/Fits.cc' object='src/viewer-Fits.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-Fits.o `test -f 'src/Fits.cc' || echo '$(srcdir)/'`src/Fits.cc
+
+src/viewer-Fits.obj: src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-Fits.obj -MD -MP -MF src/$(DEPDIR)/viewer-Fits.Tpo -c -o src/viewer-Fits.obj `if test -f 'src/Fits.cc'; then $(CYGPATH_W) 'src/Fits.cc'; else $(CYGPATH_W) '$(srcdir)/src/Fits.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-Fits.Tpo src/$(DEPDIR)/viewer-Fits.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/Fits.cc' object='src/viewer-Fits.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-Fits.obj `if test -f 'src/Fits.cc'; then $(CYGPATH_W) 'src/Fits.cc'; else $(CYGPATH_W) '$(srcdir)/src/Fits.cc'; fi`
+
+src/viewer-PixelMap.o: src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-PixelMap.o -MD -MP -MF src/$(DEPDIR)/viewer-PixelMap.Tpo -c -o src/viewer-PixelMap.o `test -f 'src/PixelMap.cc' || echo '$(srcdir)/'`src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-PixelMap.Tpo src/$(DEPDIR)/viewer-PixelMap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/PixelMap.cc' object='src/viewer-PixelMap.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-PixelMap.o `test -f 'src/PixelMap.cc' || echo '$(srcdir)/'`src/PixelMap.cc
+
+src/viewer-PixelMap.obj: src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-PixelMap.obj -MD -MP -MF src/$(DEPDIR)/viewer-PixelMap.Tpo -c -o src/viewer-PixelMap.obj `if test -f 'src/PixelMap.cc'; then $(CYGPATH_W) 'src/PixelMap.cc'; else $(CYGPATH_W) '$(srcdir)/src/PixelMap.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-PixelMap.Tpo src/$(DEPDIR)/viewer-PixelMap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/PixelMap.cc' object='src/viewer-PixelMap.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-PixelMap.obj `if test -f 'src/PixelMap.cc'; then $(CYGPATH_W) 'src/PixelMap.cc'; else $(CYGPATH_W) '$(srcdir)/src/PixelMap.cc'; fi`
+
+.cxx.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 $@ $<
+
+.cxx.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) '$<'`
+
+.cxx.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
+	-rm -rf dim/src/.libs dim/src/_libs
+	-rm -rf erfa/src/.libs erfa/src/_libs
+	-rm -rf pal/.libs pal/_libs
+	-rm -rf src/.libs src/_libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+install-man1: $(dist_man1_MANS)
+	@$(NORMAL_INSTALL)
+	@list1='$(dist_man1_MANS)'; \
+	list2=''; \
+	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='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	} | 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-libDim___laHEADERS: $(libDim___la_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(libDim___la_HEADERS)'; test -n "$(libDim___ladir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libDim___ladir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libDim___ladir)" || 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)$(libDim___ladir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libDim___ladir)" || exit $$?; \
+	done
+
+uninstall-libDim___laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libDim___la_HEADERS)'; test -n "$(libDim___ladir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libDim___ladir)'; $(am__uninstall_files_from_dir)
+install-libDim_laHEADERS: $(libDim_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(libDim_la_HEADERS)'; test -n "$(libDim_ladir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libDim_ladir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libDim_ladir)" || 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)$(libDim_ladir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libDim_ladir)" || exit $$?; \
+	done
+
+uninstall-libDim_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libDim_la_HEADERS)'; test -n "$(libDim_ladir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libDim_ladir)'; $(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"
+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-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
+	-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
+	-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-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) \
+		$(HEADERS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(libDim___ladir)" "$(DESTDIR)$(libDim_ladir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) 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)
+	-rm -f dim/src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/$(am__dirstamp)
+	-rm -f dim/src/did/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/did/$(am__dirstamp)
+	-rm -f dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/webDid/$(am__dirstamp)
+	-rm -f erfa/src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f erfa/src/$(am__dirstamp)
+	-rm -f gui/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/$(am__dirstamp)
+	-rm -f gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/RawEventsViewer/$(am__dirstamp)
+	-rm -f pal/$(DEPDIR)/$(am__dirstamp)
+	-rm -f pal/$(am__dirstamp)
+	-rm -f src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/$(am__dirstamp)
+
+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-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR) dim/src/$(DEPDIR) dim/src/did/$(DEPDIR) dim/src/webDid/$(DEPDIR) erfa/src/$(DEPDIR) gui/$(DEPDIR) gui/RawEventsViewer/$(DEPDIR) pal/$(DEPDIR) src/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libDim___laHEADERS install-libDim_laHEADERS \
+	install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am: installcheck-binPROGRAMS
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR) dim/src/$(DEPDIR) dim/src/did/$(DEPDIR) dim/src/webDid/$(DEPDIR) erfa/src/$(DEPDIR) gui/$(DEPDIR) gui/RawEventsViewer/$(DEPDIR) pal/$(DEPDIR) src/$(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-libDim___laHEADERS \
+	uninstall-libDim_laHEADERS uninstall-libLTLIBRARIES \
+	uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
+	clean-binPROGRAMS clean-cscope clean-generic \
+	clean-libLTLIBRARIES 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-compile distclean-generic distclean-libtool \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS 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-libDim___laHEADERS install-libDim_laHEADERS \
+	install-libLTLIBRARIES install-man install-man1 install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installcheck-binPROGRAMS \
+	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-libDim___laHEADERS uninstall-libDim_laHEADERS \
+	uninstall-libLTLIBRARIES uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	cd @DX_DOCDIR@/latex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(MAKEINDEX_PATH) refman.idx; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	countdown=5; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@               refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	do \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	   $(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	   countdown=`expr $$countdown - 1`; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	done; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	cd @DX_DOCDIR@/latex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_MAKEINDEX) refman.idx; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	countdown=5; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	do \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		countdown=`expr $$countdown - 1`; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@    	done;
+
+@DX_COND_doc_TRUE@.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+
+@DX_COND_doc_TRUE@doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+@DX_COND_doc_TRUE@	rm -rf @DX_DOCDIR@
+@DX_COND_doc_TRUE@	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+.ui.h: $<
+	$(AM_V_GEN)$(UIC4) $< -o $@
+
+.h.moc.cc: $<
+	$(AM_V_GEN)$(MOC4) $(EXTRA_CPPFLAGS) $< -o $@
+
+.qrc.cc: $<
+	$(AM_V_GEN)$(RCC4) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@
+
+$(dist_man1_MANS): $(dist_man1_MANS:.man=)
+	@mkdir -p man
+	$(AM_V_GEN)help2man -N -o $@ -m $(@:.man=) ./$(@:.man=)
+
+.man.html: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` -T html > $@
+
+.man.pdf: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` | ps2pdf - $@
+
+jsdoc:
+	@rm -rf www/dimctrl
+	$(AM_V_GEN)jsdoc -r=2 -d=www/dimctrl scripts | grep -v ^java
+
+doc: $(MAN_TARGETS) $(JAVA_SCRIPT_DOC) doxygen-run
+	@ln -sfv doxygen-doc/html/index.html doxygen-doc/html/main.html
+	@mkdir -vp doxygen-doc/html/pdf
+	@mkdir -vp doxygen-doc/html/man
+	@ln -sfv `pwd`/*.pdf doxygen-doc/html/pdf/
+	@ln -sfv `pwd`/*.html doxygen-doc/html/man/
+
+diff:
+	@svn diff | $(COLORDIFF)
+
+rdiff:
+	@svn diff -r BASE:HEAD . externals | $(COLORDIFF)
+
+status:
+	@svn status -u | grep -v ^\?
+
+#-------------------------------------------------------------------------
+
+# Overwrite rules for silent or other verbosity levels
+#AM_V_MAN = $(AM_MAN_$(V))
+#AM_MAN_ = $(AM_V_GEN)
+#AM_MAN_0 = @echo  "  MAN    "$@;
+
+#$(MyAnalysisDS): $(MyAnalysisH) $(MyAnalysisL)
+#	$(ROOTCINT) -f $@ -c -I$(top_builddir)/config $(INCLUDES) $^
+#	rootcint_files=`echo $@ | sed -ne 's/\(.*\)\..*/\1.cxx \1.h/p'` && \
+#        $(top_srcdir)/config/runsed $(top_srcdir)/config/rootcint.sed $$rootcint_files && \
+#        for i in $$rootcint_files; do \
+#          if test ! `diff $$i $(srcdir)/$$i >/dev/null 2>&1`; then \
+#            cp $$i $(srcdir)/; \
+#          fi; \
+#        done
+
+#CLEANFILES = *~ *.rej *.orig
+#MAINTAINERCLEANFILES = aclocal.m4 config.h.in configure Makefile.in \
+#        stamp-h.in stamp-h[0-9].in
+#DISTCLEANFILES = config.cache config.log
+
+# 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:
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/AmplVsOv.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/AmplVsOv.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/AmplVsOv.dim	(revision 18732)
@@ -0,0 +1,47 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Amplitude vs. Voltage Offset Measurement
+
+# ==========================================================================
+# Script for Amplitude vs. Voltage Offset Measurement
+
+# call it by: .x ScriptsForDimCtrl/AmplVsOv.dim V=<voltage_offset_value>
+
+# ----------------------------------------------------
+
+
+> changing feedback voltage offset to ${V}
+
+FEEDBACK/STOP                           # STOP FEEDBACK
+.w 1000                                 # wait 1 second
+
+FEEDBACK/START_CURRENT_CONTROL ${V}     # set Current_Control to given Offset value
+
+> ...checking if Voltage is ON
+# will ramp if not at nominal, will skip ramping if Voltage on
+.s BIAS_CONTROL 7 3000 1
+> Voltage is OFF, will ramp to nominal Voltage
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.s BIAS_CONTROL 9
+.s BIAS_CONTROL 5
+> ...ramping
+.s BIAS_CONTROL 9
+
+:1
+> Voltage is ON, waiting 45 sec for current_control to stabilize
+.w 42000                                # wait 30 second for the current updates
+
+> OPERATOR: Write down: V_offset ${V}, Med(V), Med(I) and the Run number to the Excel file
+
+> starting LPext with 1000 Events       # start external Lightpulser Run with 1000 Events
+# take a ExtLP run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+FEEDBACK/STOP                           # STOP FEEDBACK
+> ...Feedback stopped
+>
+> OPERATOR: make sure to restart the feedback with the correct offset when resuming data taking
+>
+> ...done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/BlinkenLights.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/BlinkenLights.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/BlinkenLights.dim	(revision 18732)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# This is a general test for DimCtrl scripts
+# it will just let the LEDs in the FAD tab next to the buttons
+# 'Fits' and 'None' blink
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Calib1024.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Calib1024.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Calib1024.dim	(revision 18732)
@@ -0,0 +1,30 @@
+#!dimctrl --exec
+
+# This sript takes a DRS Calibration for data of ROI=1024
+# Making sure bias is off
+.! echo `date -u` "First DRS Calibration Script starting up..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u` "-------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+FEEDBACK/ENABLE_OUTPUT 1
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FAD_CONTROL/START_DRS_CALIBRATION
+.! echo `date -u` "bias voltage is switched off" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Gain 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-gain
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking1.dim	(revision 18732)
@@ -0,0 +1,35 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking data when you are tracking wobble position 1
+
+# take a DRS CaLibration and physics Data afterwards
+# ==========================================================================
+
+# Move Telescope to Wobble Position 1
+>
+> --------------------------------------
+> data taking for Wobble 1
+> starting up...
+> --------------------------------------
+> OPERATOR:
+> make sure the telescope is tracking
+> wobble position 1 of the source
+> --------------------------------------
+
+# Take a DRS-Calibration before beginning to take physics Data
+.x ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
+
+> --------------------------------------
+> OPERATOR: Measure Sky Brightness
+> --------------------------------------
+
+# check feedback state before switching BIAS ON and ramping up to nominal Voltage
+.x ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim
+
+# taking a Data Set (1x Pedestal 1000 Bias On, 1x LPext 1000, 4x5min DataRun)
+.x ScriptsForDimCtrl/ServiceScripts/TakeData.dim
+
+> --------------------------------------
+> data taking for Wobble 1 finished
+> --------------------------------------
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/DataTaking2.dim	(revision 18732)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking data when you are tracking wobble position 2
+# ==========================================================================
+
+# Move Telescope to Wobble Position 2
+>
+> --------------------------------------
+> data taking for Wobble 2
+> starting up...
+> --------------------------------------
+> --------------------------------------
+> OPERATOR:
+> + make sure the telescope is tracking
+>   wobble position 2 of the source
+> + Measure Sky Brightness
+> --------------------------------------
+>
+
+# taking a Data Set (1x Pedestal 1000 Bias On, 1x LPext 1000, 4x5min DataRun)
+.x ScriptsForDimCtrl/ServiceScripts/TakeData.dim
+
+> --------------------------------------
+> data taking for Wobble 2 finished
+> --------------------------------------
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/FeedbackOn.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/FeedbackOn.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/FeedbackOn.dim	(revision 18732)
@@ -0,0 +1,125 @@
+#!dimctrl --exec
+
+# dimctrl script
+>
+> -------------------------------------------
+> Bias and Feedback StartUp (Current Calibration)
+> -------------------------------------------
+
+.w 2000
+# As a First step we want to calibrate the current, which are read from the bias crate,
+# and not take a DRS calibration, as it is mentioned in the data taking page...
+# so for this we should get the feedback and biasctrl programs into known states
+# I think it is good to try a RECONNECT to the bias, and make sure the voltage is off
+#
+# NOTE:
+# The ideas in the line above are both valid, but both not done.
+# This is *not good*
+
+# Since we do not know, what the feedback program is doing at the moment, we should as well,
+# tell it to keep its mouth shut ... just to be sure, we know whats going on
+> stopping feedback
+FEEDBACK/STOP
+.w 2000
+# stopping should always be possible, and end in state 'Connected'(6)
+.s FEEDBACK 6
+> ..done
+
+#BIAS_CONTROL/RECONNECT
+# If we were disconnected, and this was the first try of the night, the bias_ctrl should
+# be in state 'VoltageOff'(7) more or less immediately
+#.s BIAS_CONTROL 3
+#.s BIAS_CONTROL 7 5000
+# if these assumptions are all wrong, then we might have been properly connected anyway,
+# and just have to ramp down... lets do it, but wait forever, in case it does not work
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 2000
+.s BIAS_CONTROL 7
+> ...done
+
+# in case we reach this line, the voltages are all off, and the feedback does not do anything
+# So lets do the current calibration, therefor we tell the bias crate to ramp up just 1 single DAC count(~22mV)
+# the result of this action is, to get bias_ctrl into the state 'VoltageOn'(9), but since we only go one DAC count it shouldn't take long
+> setting bias globally to 1 DAC
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.w 2000
+.s BIAS_CONTROL 9
+> ...done
+
+# now we may tell the feedback program to calibrate the currents ...
+# I do not understand, if I have to explicitely allow the feedback program to generate output,
+# or if it just produces output...
+# As far as I understand, the feedback output enable status is the same,
+# as it was before I send the STOP command... so it is unknown at this point.
+# and in addition enabling or disabling the output, when STOPed is not possible as far as I know...
+# I try to enable it anyway.
+> enabling output for feedback
+FEEDBACK/ENABLE_OUTPUT yes
+.w 2000
+> ...done
+
+> calibrating bias crate current readings...
+FEEDBACK/CALIBRATE_CURRENTS
+.w 5000
+# in order to find out when the calibration ends, we have to wait for the transistion from state
+# 'Calibrating'(13) back to 'Connected'(6)
+.s FEEDBACK 13
+.s FEEDBACK 6
+
+# Thomas Bretz told me, that the feedback, after this step has disabled its output
+# and is in the mode, we might call 'temperature control' even there is no temerature beeing controlled.
+# I don't know where the voltage is ... in order to perform the calibration, the feedback had to
+# ramp up to 2V below the operational voltage, i.e. about 1V below the breakdown voltage
+
+# We want to take a DRS amplitude calibration so we have to ramp down the bias voltage.
+# this 10sec wait is needed in order for the bias not to disconect all the time...
+> ... current calibration done
+.w 10000
+
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 5000
+.s BIAS_CONTROL 7
+> ...done
+
+# now we want to take a run, with dark counts events
+# so we need to ramp up the voltage
+# we want to use the 'current control' more so we give the commands for this...
+> switching on current controll feedback ...
+FEEDBACK/STOP
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+# the feedback should be in state 'CurrentControl'(12) now
+.s FEEDBACK 12
+> ... done
+> switching on bias
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+.s BIAS_CONTROL 9
+> ...bias on
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done
+
+
+# at the end the bias voltage should be ramped down, since in a few seconds a shifter wit ha flashlight
+# will come out to open the shutter...
+> switching OFF bias ...
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+> ...done
+> ----------------------------------------------------
+> Bias and Feedback StartUp (Current Calibration)
+> ... done.
+> ----------------------------------------------------
+>
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/FirstDrsCalib.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/FirstDrsCalib.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/FirstDrsCalib.dim	(revision 18732)
@@ -0,0 +1,191 @@
+#!dimctrl --exec
+
+>
+> -------------------------------------------
+> First DRS Calibration Script starting up...
+> -------------------------------------------
+
+.w 2000
+# As a First step we want to calibrate the current, which are read from the bias crate,
+# and not take a DRS calibration, as it is mentioned in the data taking page...
+# so for this we should get the feedback and biasctrl programs into known states
+# I think it is good to try a RECONNECT to the bias, and make sure the voltage is off
+# Since we do not know, what the feedback program is doing at the moment, we should as well,
+# tell it to keep its mouth shut ... just to be sure, we know whats going on
+> stopping feedback
+FEEDBACK/STOP
+.w 2000
+# stopping should always be possible, and end in state 'Connected'(6)
+> ...waiting for FEEDBACK to be in state 6: Connected
+.s FEEDBACK 6
+> ..done
+
+#BIAS_CONTROL/RECONNECT
+# If we were disconnected, and this was the first try of the night, the bias_ctrl should
+# be in state 'VoltageOff'(7) more or less immediately
+#.s BIAS_CONTROL 3
+#.s BIAS_CONTROL 7 5000
+# if these assumptions are all wrong, then we might have been properly connected anyway,
+# and just have to ramp down... lets do it, but wait forever, in case it does not work
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 2000
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+
+# in case we reach this line, the voltages are all off, and the feedback does not do anything
+# So lets do the current calibration, therefor we tell the bias crate to ramp up just 1 single DAC count(~22mV)
+# the result of this action is, to get bias_ctrl into the state 'VoltageOn'(9), but since we only go one DAC count it shouldn't take long
+> setting bias globally to 1 DAC
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.w 2000
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...done
+
+# now we may tell the feedback program to calibrate the currents ...
+# I do not understand, if I have to explicitely allow the feedback program to generate output,
+# or if it just produces output...
+# As far as I understand, the feedback output enable status is the same,
+# as it was before I send the STOP command... so it is unknown at this point.
+# and in addition enabling or disabling the output, when STOPed is not possible as far as I know...
+# I try to enable it anyway.
+> enabling output for feedback
+FEEDBACK/ENABLE_OUTPUT yes
+.w 2000
+> ...done
+
+> calibrating bias crate current readings...
+FEEDBACK/CALIBRATE_CURRENTS
+.w 5000
+# in order to find out when the calibration ends, we have to wait for the transistion from state
+# 'Calibrating'(13) back to 'Connected'(6)
+> ...waiting for FEEDBACK to be in state 13: Calibrating
+.s FEEDBACK 13
+> ...waiting for FEEDBACK to be in state 6: Connected
+.s FEEDBACK 6
+
+# Thomas Bretz told me, that the feedback, after this is step has disabled its output
+# and is in the mode, we might call 'temperature control' even there is no temerature beeing controlled.
+# I don't know where the voltage is ... in order to perform the calibration, the feedback had to
+# ramp up to 2V below the operational voltage, i.e. about 1V below the breakdown voltage
+
+# We want to take a DRS amplitude calibration so we have to ramp down the bias voltage.
+# this 10sec wait is needed in order for the bias not to disconect all the time...
+> ... current calibration done
+.w 10000
+
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 5000
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+
+# So now we can take the 3 runs, which are called DRS amplitude calibration:
+# A pedestal run with ROI=1024
+# A gain calibration run with ROI=1024
+# and a second pedestal run, with the same ROI as our next data will be, i.e. ROI=300 in this case
+> taking DRS:Pedestal 1000 ...
+> ===================================================
+> OPERATOR: 
+> observe Events tab and make sure there are no patches 
+> with strange behaviour, which can be caused 
+> by DRS-CHIP Problems
+> ===================================================
+
+FAD_CONTROL/START_DRS_CALIBRATION
+###FAD_CONTROL/SET_FILE_FORMAT 0
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+> taking DRS:Gain 1000 ...
+MCP/START -1 1000 drs-gain
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+> taking Pedestal 1000 ...
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# okay this is the DRS calibration for the next few runs.
+# we are now asked to take again a pedestal run, which can be used, to
+# calculate the electronics noise for instance ... since the shutter is closed and the
+# voltage is off .. there should not be alot of signal in it :-)
+> taking crosscheck Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+###FAD_CONTROL/SET_FILE_FORMAT 0
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# now we want to take a run, with dark counts events
+# so we need to ramp up the voltage
+# we want to use the 'current control' more so we give the commands for this...
+> switching on current controll feedback ...
+FEEDBACK/STOP
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+# the feedback should be in state 'CurrentControl'(12) now
+# the feedback should be in state 'CurrentCtrlIdle'(9) now since 30.05.12
+> ...waiting for FEEDBACK to be in state 9: CurrentCtrlIdle
+.s FEEDBACK 9
+> ... done
+> switching on bias
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+> ...waiting for BIAS to be in state 5: Ramping
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...bias on
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done
+
+# so now we can take the dark count run ...
+# this might be changed in the future ... either the number of events or the the ROI might be changed
+# then the DRS calibration above, and the pedestal run in between have to be changed as well.
+> taking Pedestal with BIAS on 3000 ...
+MCP/START -1 3000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# at the end the bias voltage should be ramped down, since in a few seconds a shifter wit ha flashlight
+# will come out to open the shutter...
+> switching OFF bias ...
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+>
+> This is the end of First DRS Calibration
+> ----------------------------------------------------
+>
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/LP_rate_test.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/LP_rate_test.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/LP_rate_test.dim	(revision 18732)
@@ -0,0 +1,17 @@
+#!dimctrl --exec
+
+> ----------------------------------------------------
+> LP_rate_test.dim starting up.
+> ----------------------------------------------------
+
+.x ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
+
+.x ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim
+
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+> ----------------------------------------------------
+> LP_rate_test.dim finished
+> ----------------------------------------------------
+>
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/RampingBias.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/RampingBias.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/RampingBias.dim	(revision 18732)
@@ -0,0 +1,66 @@
+#!dimctrl --exec
+
+> --------------------------------------
+> test biasctrl
+> --------------------------------------
+> Ramping bias up and down
+
+# this is just a test, to check the order of states of biasctrl while ramping.
+
+> ...enabling feedback
+FEEDBACK/ENABLE_OUTPUT 1
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+# Bias ist Off  .. switching it on
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 5: Ramping
+.s BIAS_CONTROL 5
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 2000
+
+# Bias ist On .. switching it off
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+> --------------------------------------
+> ramped Bias up and down successfully
+> --------------------------------------
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Ratescan.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Ratescan.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Ratescan.dim	(revision 18732)
@@ -0,0 +1,106 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Ratescan
+# ==========================================================================
+# Script for taking a Ratescan
+
+# call it by: .x ScriptsForDimCtrl/Ratescan.dim mode=<trackmode> ra=<Right ascension> dec=<Declination> source=<source_name>
+# mode=0: Manual tracking Mode: set tracking in drivectrl manually
+# mode=1: Coordinate Mode: scripts sends tracking command to drivectrl with the given RaDec coordinates
+# mode=2: source Mode: scripts sends tracking command to drivectrl with the given source_name
+# ----------------------------------------------------
+
+> ======================================
+> RATESCAN
+> ======================================
+>-
+> Preparing Drive
+.j ${mode}
+
+# --------------------------------------
+
+:0
+> Manual tracking Mode
+> ---------------------
+> OPERATOR
+> change tracking in drivectrl manually
+>_
+> script will wait for drive
+> to be in state tracking
+>-
+.j 9
+
+# --------------------------------------
+
+:1
+> ...stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+> ...change tracking of telescope to:
+> ...Ra  = ${ra}
+> ...Dec = ${dec}
+>-
+DRIVE_CONTROL/TRACK ${ra} ${dec}
+.j 9
+
+# --------------------------------------
+
+:2
+> ...stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+> ...change tracking of telescope to:
+> ...${source}
+>-
+DRIVE_CONTROL/TRACK_SOURCE 0 0 "${source}"
+.j 9
+
+# --------------------------------------
+
+:9
+# check drive system
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+
+# check system status
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+>---------------------------------------
+#
+#> Preparing FTM_CONTROL
+#> ...configure Ratescan
+# FTM_CONTROL/CONFIGURE ratescan
+#
+#>---------------------------------------
+
+> Starting Ratescan
+> ...waiting for Ratescan
+>    to be in state 4: Connected
+.s RATE_SCAN 4 5000 256
+RATE_SCAN/START_THRESHOLD_SCAN 50 1000 -10
+.s RATE_SCAN 6 10000 257
+> ...processing ratescan
+.s RATE_SCAN 4 2700000 300
+> ...resetting FAD configuration
+FAD_CONTROL/RESET_CONFIGURE
+> ======================================
+> Ratescan finished
+> ======================================
+.j 301
+
+:256
+>---------------------------------------
+> Rate_Scan not in correct state
+>-
+> OPERATOR:
+> + check connection to ftm control
+>---------------------------------------
+.j 300
+
+:257
+>---------------------------------------
+> ratescan not started
+>---------------------------------------
+
+:300
+> ======================================
+> Ratescan NOT successfull
+> ======================================
+:301
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ResetCrate.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ResetCrate.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ResetCrate.dim	(revision 18732)
@@ -0,0 +1,54 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Reset Crate
+# ==========================================================================
+# Script for Reset of a crate
+
+# call it by: .x ScriptsForDimCtrl/ResetCrate.dim C=<nr_of_board_to_reset>
+
+# ----------------------------------------------------
+
+> ======================================
+> Crate-Reset for crate ${C}
+> ======================================
+>
+> ...resetting MCP
+MCP/RESET
+.w 5000
+> ...diconnecting FAD boards of crate ${C}
+.x ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim:${C}
+.w 2000
+
+> ...disconnecting All FTUs
+FTM_CONTROL/ENABLE_FTU -1 no
+.w 2000
+
+> ...checking state of FTM_Control
+> ...waiting for state 3: Idle
+.s FTM_CONTROL 3 2000 60
+.j 61
+
+# ---------------------------------------------------
+: 60
+> ...stopping trigger
+FTM_CONTROL/STOP_TRIGGER
+.s FTM_CONTROL 3
+# ---------------------------------------------------
+
+: 61
+> ...resetting crate
+FTM_CONTROL/RESET_CRATE ${C}
+.w 2000
+
+> ...connecting All FTUs
+FTM_CONTROL/ENABLE_FTU -1 yes
+.w 4000
+> ...pinging FTUs
+FTM_CONTROL/PING
+
+> ...connecting FAD boards of crate ${C}
+.x ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim:${C}
+> ======================================
+> Crate-Reset for crate ${C} finished
+> ======================================
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ResumeDataTaking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ResumeDataTaking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ResumeDataTaking.dim	(revision 18732)
@@ -0,0 +1,82 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# resume data taking
+# ==========================================================================
+# Script to resume data taking after it had to be aborted
+# during first run of four data runs
+
+# call it by: .x ScriptsForDimCtrl/ResumeDataTaking.dim N=<number of runs>
+# N = 1...4
+
+# ----------------------------------------------------
+
+> ======================================
+> resume taking ${N} data runs after
+> DataTaking was aborted...
+> ======================================
+> OPERATOR:
+> + make sure bias is switched on
+> + make sure feedback is running!!!
+> --------------------------------------
+
+# check if bias is ramped up and if feedback is running
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for FEEDBACK
+>    to be in state 12: CurrentControl
+.s FEEDBACK 12
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...bias is on
+> ...feedback-program is working
+> waiting 45sec for the current readings
+> --------------------------------------
+.w 45000
+
+.j ${N}
+
+#Data Taking with Full Trigger Area (4x5min)
+
+:4
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:3
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:2
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:1
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+> ======================================
+> resumed data taking finished
+> ======================================
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim	(revision 18732)
@@ -0,0 +1,100 @@
+#!dimctrl --exec
+
+> connecting to requested crate...
+
+# connect to crate 0
+: 0
+.w 3800
+FAD_CONTROL/CONNECT 0
+.w 3800
+FAD_CONTROL/CONNECT 1
+.w 3800
+FAD_CONTROL/CONNECT 2
+.w 3800
+FAD_CONTROL/CONNECT 3
+.w 3800
+FAD_CONTROL/CONNECT 4
+.w 3800
+FAD_CONTROL/CONNECT 5
+.w 3800
+FAD_CONTROL/CONNECT 6
+.w 3800
+FAD_CONTROL/CONNECT 7
+.w 3800
+FAD_CONTROL/CONNECT 8
+.w 3800
+FAD_CONTROL/CONNECT 9
+.j 255
+
+# connect to crate 1
+: 1
+FAD_CONTROL/CONNECT 10
+.w 3800
+FAD_CONTROL/CONNECT 11
+.w 3800
+FAD_CONTROL/CONNECT 12
+.w 3800
+FAD_CONTROL/CONNECT 13
+.w 3800
+FAD_CONTROL/CONNECT 14
+.w 3800
+FAD_CONTROL/CONNECT 15
+.w 3800
+FAD_CONTROL/CONNECT 16
+.w 3800
+FAD_CONTROL/CONNECT 17
+.w 3800
+FAD_CONTROL/CONNECT 18
+.w 3800
+FAD_CONTROL/CONNECT 19
+.j 255
+
+# connect to crate 2
+: 2
+FAD_CONTROL/CONNECT 20
+.w 3800
+FAD_CONTROL/CONNECT 21
+.w 3800
+FAD_CONTROL/CONNECT 22
+.w 3800
+FAD_CONTROL/CONNECT 23
+.w 3800
+FAD_CONTROL/CONNECT 24
+.w 3800
+FAD_CONTROL/CONNECT 25
+.w 3800
+FAD_CONTROL/CONNECT 26
+.w 3800
+FAD_CONTROL/CONNECT 27
+.w 3800
+FAD_CONTROL/CONNECT 28
+.w 3800
+FAD_CONTROL/CONNECT 29
+
+.j 255
+
+# connect to crate 3
+: 3
+FAD_CONTROL/CONNECT 30
+.w 3800
+FAD_CONTROL/CONNECT 31
+.w 3800
+FAD_CONTROL/CONNECT 32
+.w 3800
+FAD_CONTROL/CONNECT 33
+.w 3800
+FAD_CONTROL/CONNECT 34
+.w 3800
+FAD_CONTROL/CONNECT 35
+.w 3800
+FAD_CONTROL/CONNECT 36
+.w 3800
+FAD_CONTROL/CONNECT 37
+.w 3800
+FAD_CONTROL/CONNECT 38
+.w 3800
+FAD_CONTROL/CONNECT 39
+.j 255
+
+: 255
+> ... done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim	(revision 18732)
@@ -0,0 +1,62 @@
+#!dimctrl --exec
+
+> disconnecting from requested crate...
+
+# disconnect from crate 0
+: 0
+FAD_CONTROL/DISCONNECT 0
+FAD_CONTROL/DISCONNECT 1
+FAD_CONTROL/DISCONNECT 2
+FAD_CONTROL/DISCONNECT 3
+FAD_CONTROL/DISCONNECT 4
+FAD_CONTROL/DISCONNECT 5
+FAD_CONTROL/DISCONNECT 6
+FAD_CONTROL/DISCONNECT 7
+FAD_CONTROL/DISCONNECT 8
+FAD_CONTROL/DISCONNECT 9
+.j 255
+
+# disconnect from crate 1
+: 1
+FAD_CONTROL/DISCONNECT 10
+FAD_CONTROL/DISCONNECT 11
+FAD_CONTROL/DISCONNECT 12
+FAD_CONTROL/DISCONNECT 13
+FAD_CONTROL/DISCONNECT 14
+FAD_CONTROL/DISCONNECT 15
+FAD_CONTROL/DISCONNECT 16
+FAD_CONTROL/DISCONNECT 17
+FAD_CONTROL/DISCONNECT 18
+FAD_CONTROL/DISCONNECT 19
+.j 255
+
+# disconnect from crate 2
+: 2
+FAD_CONTROL/DISCONNECT 20
+FAD_CONTROL/DISCONNECT 21
+FAD_CONTROL/DISCONNECT 22
+FAD_CONTROL/DISCONNECT 23
+FAD_CONTROL/DISCONNECT 24
+FAD_CONTROL/DISCONNECT 25
+FAD_CONTROL/DISCONNECT 26
+FAD_CONTROL/DISCONNECT 27
+FAD_CONTROL/DISCONNECT 28
+FAD_CONTROL/DISCONNECT 29
+.j 255
+
+# disconnect from crate 3
+: 3
+FAD_CONTROL/DISCONNECT 30
+FAD_CONTROL/DISCONNECT 31
+FAD_CONTROL/DISCONNECT 32
+FAD_CONTROL/DISCONNECT 33
+FAD_CONTROL/DISCONNECT 34
+FAD_CONTROL/DISCONNECT 35
+FAD_CONTROL/DISCONNECT 36
+FAD_CONTROL/DISCONNECT 37
+FAD_CONTROL/DISCONNECT 38
+FAD_CONTROL/DISCONNECT 39
+.j 255
+
+: 255
+> ... done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim	(revision 18732)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Checking the system statuses if they are ready for data taking
+# ==========================================================================
+
+> --------------------------------------
+> Checking the system statuses of:
+> FEEDBACK, BIAS and FAD
+> --------------------------------------
+
+> ...waiting for FEEDBACK
+>    to be in state 12: CurrentControl
+.s FEEDBACK 12
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for FAD_CONTROL
+>    to be in state 4: Connected
+
+.s FAD_CONTROL 4
+> ...system statuses OK
+> --------------------------------------
+>-
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim	(revision 18732)
@@ -0,0 +1,10 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Checking drive system status to be ready for data taking
+# ==========================================================================
+
+>
+> ...waiting for DRIVE to be in state 9: OnTrack
+.s DRIVE_CONTROL 9
+> ...OK
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim	(revision 18732)
@@ -0,0 +1,60 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# check feedback state before switching BIAS ON and ramping up to nominal Voltage
+# ==========================================================================
+
+> checking feedback state
+.s FEEDBACK 12 10000 60 # Current Control?
+.j 61
+
+:60
+> ===================================================
+>  feedback is not in state "CurrentControl"
+>
+>  OPERATOR: 
+>  goto feedback console and check the state of 
+>  feedback by typing [st] to find out what the
+>  current state means and maybe needs to be done
+>
+>  this script will wait for state "CurrentControl"
+> ===================================================
+.s FEEDBACK 12 # Current Control?
+
+:61
+> ... Current/Temp control active and voltage output enabled
+
+> switching on bias ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+
+> checking biasctrl state
+.s BIAS_CONTROL 9 10000 70 # Voltage ON
+.j 71
+
+:70
+> ===================================================
+>  switching on bias not successfull
+>  biasctrl is not in state "VoltageOn"
+>
+>  OPERATOR:
+>  goto biasctrl console and check the state of
+>  biasctrl by typing [st] to find out what the
+>  current state means and maybe needs to be done
+> 
+>  this script will wait for state "VoltageOn"
+> ===================================================
+.s BIAS_CONTROL 9 # Voltage ON
+
+:71
+> ...set 1 DAC
+
+.s BIAS_CONTROL 5 # Ramping
+> ...ramping
+.s BIAS_CONTROL 9 # Voltage ON
+> ...bias ON
+
+
+# here one should wait 30..45sec according to TB
+> bias is on, and feedback-program is working, but we wait 45sec for the current readings...
+.w 45000
+> ... done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim	(revision 18732)
@@ -0,0 +1,14 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# stop drivectrl tracking the current source
+# ==========================================================================
+
+>
+> stopping tracking of current wobble position
+DRIVE_CONTROL/STOP
+> ...DRIVE: tracking stopped
+
+.s DRIVE_CONTROL 6
+> ...DRIVE: Armed
+> ...tracking stopped
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim	(revision 18732)
@@ -0,0 +1,44 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# bring Feedback to state CurrentContro Idle and switch on Bias
+# ==========================================================================
+
+> switching on current controll feedback
+FEEDBACK/STOP
+
+> ... starting current control feedback 
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+
+# the feedback should be in state 'CurrentCtrlIdle'(9) now since 30.05.12
+> ...waiting for FEEDBACK to be in state 9: CurrentCtrlIdle
+.s FEEDBACK 9
+> ... done, feedback running
+>
+> switching bias on, sending one DAC globally
+
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+
+> ...waiting for BIAS to be in state 5: Ramping
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...bias on
+
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done, bias on
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeData.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeData.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeData.dim	(revision 18732)
@@ -0,0 +1,40 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking a Data Set (1x Pedestal On, 1x LPext, 4x5min DataRun)
+# ==========================================================================
+
+>-
+
+# take a Pedestal run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim
+
+# take a ExtLP run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+#Data Taking with Full Trigger Area (4x5min)
+
+# taking Run 1/4
+> taking data run 1/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 2/4
+> taking data run 2/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 3/4
+> taking data run 3/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 4/4
+> taking data run 4/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+
+>-
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a 5min Data Run
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Data:FullTriggerArea 5min Run ...
+MCP/START 300 -1 data
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim	(revision 18732)
@@ -0,0 +1,112 @@
+#!dimctrl --exec
+
+>
+> -----------
+> script for DRS-Calibration before Data taking
+> starting up...
+> -----------
+>
+
+# enable feedback output
+FEEDBACK/ENABLE_OUTPUT 1
+
+# Making sure bias is off, before the DRS calibration starts
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+> ...ramping Voltage down
+>
+> ...waiting for BIAS to be in state 7: Voltage Off
+.s BIAS_CONTROL 7       # Voltage Off
+
+# starting the DRS calibration
+FAD_CONTROL/START_DRS_CALIBRATION
+> ...BIAS voltage is switched off
+>
+
+# taking first DRS:Pedestal with 1000 Events and ROI 1024
+> taking DRS:Pedestal 1000 ...
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Gain with 1000 Events and ROI 1024
+> taking DRS:Gain 1000 ...
+MCP/START -1 1000 drs-gain
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Pedestal 1000 Events and ROI 1024
+> taking DRS:Pedestal 1000 ...
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking again a DRS:Pedestal with 1000 Events and ROI 1024 for a crosscheck of calculated calibrations constants
+> taking crosscheck DRS:Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Time with 1000 Events and ROI 1024
+> taking DRS:Time 1000 ...
+MCP/START -1 1000 drs-time
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Time upshifted 1000 Events and ROI 1024
+> taking DRS:Time upshifted 1000 ...
+MCP/START -1 1000 drs-time-upshifted
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking a Pedestal with 1000 Events and ROI 300 for secondary baseline...
+> taking Pedestal 1000 for secondary baseline...
+FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking crosscheck Pedestal 1000 Events and ROI 300
+> taking crosscheck Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+
+> ----------------------------------------------------
+> This is the end of the
+> DRS-Calibration before Data taking
+> ----------------------------------------------------
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim	(revision 18732)
@@ -0,0 +1,21 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a Pedestal 1000 run with ROI 1024 with Bias ON
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Pedestal with ROI 1024 with BIAS on 1000 ...
+MCP/START -1 1000 drs-pedestal
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
+
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a external Lightpulser Run
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking External Light Pulser with BIAS on 1000 ...
+MCP/START -1 1000 light-pulser-ext
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+
+> ... done
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim	(revision 18732)
@@ -0,0 +1,21 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a Pedestal 1000 run with Bias ON
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Pedestal with BIAS on 1000 ...
+MCP/START -1 1000 pedestal
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
+
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim	(revision 18732)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 1218+304" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -5 "1ES 1218+304"
+>...sent tracking command for 1ES 1218+304 Wobble 1
+>COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -5 "1ES 1218+304"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim	(revision 18732)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 1218+304" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 175 "1ES 1218+304"
+>...sent tracking command for 1ES 1218+304 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 175 "1ES 1218+304"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES1959+650" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 155 "1ES 1959+650"
+>...sent tracking command for 1959 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 155 "1ES 1959+650"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES1959+650" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -25 "1ES 1959+650"
+>...sent tracking command for 1959 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -25 "1ES 1959+650"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 2344+51.4" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "1ES 2344+51.4"
+>...sent tracking command for 1ES 2344+51.4 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "1ES 2344+51.4"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 2344+51.4" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "1ES 2344+51.4"
+>...sent tracking command for 1ES 2344+51.4 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "1ES 2344+51.4"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Crab" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 50 Crab
+>...sent tracking command for Crab Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 50 Crab
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Crab" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -130 Crab
+> ...sent tracking command for Crab Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -130 Crab
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 421" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "Mrk 421"
+>...sent tracking command for Mrk 421 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "Mrk 421"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 421" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "Mrk 421"
+>...sent tracking command for Mrk 421 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "Mrk 421"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 501" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 158 "Mrk 501"
+>...sent tracking command for Mrk 501 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 158 "Mrk 501"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim	(revision 18732)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 501" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -22 "Mrk 501"
+>...sent tracking command for Mrk 501 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -22 "Mrk 501"
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim	(revision 18732)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Wait for drivectrl to reply that its tracking the given source
+# ==========================================================================
+
+# DRIVE: Moving
+> ...waiting for DRIVE_CONTROL
+>    to be in state 7: Moving
+.s DRIVE_CONTROL 7
+> ...moving
+
+# DRIVE: TRACKING
+> ...waiting for DRIVE_CONTROL
+>    to be in state 9: OnTrack
+.s DRIVE_CONTROL 
+> ...tracking requested wobble position
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Shutdown.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Shutdown.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Shutdown.dim	(revision 18732)
@@ -0,0 +1,81 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Shutdown
+# ==========================================================================
+# Script for Software Shutdown
+
+# call it by: .x ScriptsForDimCtrl/Shutdown.dim
+
+# ----------------------------------------------------
+
+> ======================================
+> SYSTEM SHUTDOWN
+> ======================================
+> BIAS_CONTROL
+> ...checking state of biasctrl
+.s BIAS_CONTROL 9 1000 2
+> ...voltage still ON
+> ...set global zero voltage
+BIAS_CONTROL/SET_GLOBAL_DAC 0
+> ...waiting for bias ramping
+.s BIAS_CONTROL 5
+> ...ramping
+
+:2
+.s BIAS_CONTROL 7 15000 4
+> ...VoltageOff
+> ...disconnecting biascrate
+BIAS_CONTROL/DISCONNECT
+.j 5
+
+:4
+> =============
+> Bias not in state VoltageOff
+> cannot disconnect Biascrate
+> OPERATOR:
+> turn of voltage and
+> disconnect bias crate manually
+> =============
+
+:5
+> DRIVE_CONTROL
+> ...parking telescope
+DRIVE_CONTROL/STOP
+.w 2000
+DRIVE_CONTROL/PARK
+
+> FTM_CONTROL
+> ...stopping trigger
+FTM_CONTROL/STOP_TRIGGER
+
+> ...disabling all FTUs
+FTM_CONTROL/ENABLE_FTU -1 no
+>-
+> FAD_CONTROL
+> ...stopping FADs
+FAD_CONTROL/STOP
+>-
+> --------------------------------------
+> OPERATOR:
+>-
+> [Software]
+> + close or make sure shutter is closed
+> + make sure telescope is really in
+>   parking postion
+> + close cosy
+>-
+> [Hardware]
+> + turn off bias crate
+> + shutdown interlock system
+> + turn off camera agilent
+> + turn off bias agilent
+> + turn off drive
+>-
+> NEVER switch of
+> the Interlock Systems' Agilent
+>-
+> --------------------------------------
+> SYSTEM SHUTDOWN finished
+> ======================================
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim	(revision 18732)
@@ -0,0 +1,73 @@
+#!dimctrl --exec
+
+# Move Telescope to Wobble Position 1
+.! echo `date -u`  "Data Taking script for Special Time Calibration Runs starting up... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+FEEDBACK/ENABLE_OUTPUT 1
+
+# Making sure bias is off
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+MCP/START -1 500 drs-time-upshifted
+.! echo `date -u`  "taking time cal 2GHz + 0ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay0.5
+.! echo `date -u`  "taking time cal 2GHz + 550ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay1.0
+.! echo `date -u`  "taking time cal 2GHz + 1000ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay1.5
+.! echo `date -u`  "taking time cal 2GHz + 1450ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay2.0
+.! echo `date -u`  "taking time cal 2GHz + 2050ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u` "This is the end of Data Taking of Crab Wobble 1" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Startup.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Startup.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Startup.dim	(revision 18732)
@@ -0,0 +1,116 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Startup
+# ==========================================================================
+# Script for Software Startup
+
+# call it by: .x ScriptsForDimCtrl/Startup.dim
+
+# ----------------------------------------------------
+
+> ======================================
+> SYSTEM STARTUP
+> ======================================
+> BIAS_CONTROL
+> ...checking state of biasctrl
+.s BIAS_CONTROL 1 1000 2
+> ...bias DISCONNECTED
+> ...reconnecting
+BIAS_CONTROL/RECONNECT
+
+:2
+> ...wating for state 7: VoltageOff
+.s BIAS_CONTROL 7 2000 3
+.j 4
+
+:3
+.s BIAS_CONTROL 9 2000 256
+> ...VoltageOn
+> ...ramping down
+BIAS_CONTROL/SET_GLOBAL_DAC 0
+> ...waiting for bias ramping
+.s BIAS_CONTROL 5
+> ...ramping
+.s BIAS_CONTROL 7 15000 4
+
+:4
+> ...connected, VoltageOff
+> Bias ready
+> --------------------------------------
+
+# --------------------------------------
+
+> FTM_CONTROL
+> ...enabling all FTUs
+FTM_CONTROL/ENABLE_FTU -1 yes
+> ...waiting 6 seconds
+.w 6000
+
+# --------------------------------------
+> FAD_CONTROL
+> ...starting FADs
+
+FAD_CONTROL/START
+> ...checking fadctrl state
+.s FAD_CONTROL 4 5000 5
+> ...connected
+> FADs Ready!
+> --------------------------------------
+>-
+.j 300
+
+# --------------------------------------
+:5
+> --------------------------------------
+> not all FADs are connected
+> sending two triggers to request update
+
+FAD_CONTROL/SEND_SINGLE_TRIGGER
+.w 3000
+
+FAD_CONTROL/SEND_SINGLE_TRIGGER
+.w 2000
+
+> ...checking fadctrl state again
+.s FAD_CONTROL 4 5000 6
+> ...connected
+.j 300
+
+# --------------------------------------
+:6
+> --------------------------------------
+> not all FADs are connected
+> --------------------------------------
+> OPERATOR:
+> + check for FAD or FTU Loss
+> + finish Startup manually
+> --------------------------------------
+.j 301
+
+# --------------------------------------
+
+:256
+> --------------------------------------
+> BIAS not properly connected
+> --------------------------------------
+> OPERATOR:
+> + check biasctrl
+> + finish Startup manually
+> --------------------------------------
+.j 301
+
+# --------------------------------------
+
+:300
+> ======================================
+> SYSTEM STARTUP finished successfully
+> ======================================
+
+# --------------------------------------
+
+:301
+> ======================================
+> SYSTEM STARTUP finished with PROBLEMS
+> ======================================
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1218.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1218.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1218.dim	(revision 18732)
@@ -0,0 +1,51 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES 1218+304
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take1218.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> 1ES 1218+304
+> ======================================
+> starting up...
+>
+
+# changing tracking to 1ES 1218+304 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of 1ES 1218+304 Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take1218.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to 1ES 1218+304 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to 1ES 1218+304 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1ES 1218+304 --> FINISHED
+> ======================================
+>
+
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1959.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1959.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Take1959.dim	(revision 18732)
@@ -0,0 +1,53 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES1959+650
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take1959.dim
+
+# ----------------------------------------------------
+
+
+>
+> ======================================
+> Data taking and tracking script for
+> 1959
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to 1959 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of 1959
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take1959.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to 1959 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to 1959 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1959 --> FINISHED
+> ======================================
+>
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/Take2344.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/Take2344.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/Take2344.dim	(revision 18732)
@@ -0,0 +1,52 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES 2344+54.4
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take2344.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> 1ES 2344+54.4
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take2344.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1ES 2344+54.4 --> FINISHED
+> ======================================
+>
+
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeCrab.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeCrab.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeCrab.dim	(revision 18732)
@@ -0,0 +1,50 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Crab
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeCrab.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> Crab
+> ======================================
+> starting up...
+>
+
+# changing tracking to Crab Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Crab Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeCrab.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Crab Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Crab Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Crab --> FINISHED
+> ======================================
+>
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk421.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk421.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk421.dim	(revision 18732)
@@ -0,0 +1,52 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Mrk 421
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeMrk421.dim
+
+# ----------------------------------------------------
+
+>
+> ======================================
+> Data taking and tracking script for
+> Mrk 421
+> ======================================
+> starting up...
+>
+
+# changing tracking to Mrk 421 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Mrk 421 Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeMrk421.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Mrk 421 --> FINISHED
+> ======================================
+>
+
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk501.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk501.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/TakeMrk501.dim	(revision 18732)
@@ -0,0 +1,53 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Mrk 501
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeMrk501.dim
+
+# ----------------------------------------------------
+
+
+>
+> ======================================
+> Data taking and tracking script for
+> Mrk 501
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to Mrk501 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Mrk501
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeMrk501.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk501 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk501 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Mrk 501 --> FINISHED
+> ======================================
+>
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/drs_ampl_calib.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/drs_ampl_calib.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/drs_ampl_calib.dim	(revision 18732)
@@ -0,0 +1,34 @@
+#!dimctrl --exec
+
+# DIMSCRIPT  -- drs_calib  --- this is the first part of former DataTaking1 .. the part which was different from DataTaking2
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "drs_calib -- starting up... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+FEEDBACK/ENABLE_OUTPUT no
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FAD_CONTROL/START_DRS_CALIBRATION
+.! echo `date -u`  "bias voltage is switched off" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Gain 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-gain
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "this is the end of drs_ampl_calib" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_data.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_data.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_data.dim	(revision 18732)
@@ -0,0 +1,30 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "take 4x data run with feedback ON " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+
+FEEDBACK/ENABLE_OUTPUT yes
+FAD_CONTROL/SET_FILE_FORMAT 2
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 1/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 2/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 3/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 4/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  " ... done ... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_on.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_on.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_on.dim	(revision 18732)
@@ -0,0 +1,35 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "switch on bias feedback - REF 100 " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+FEEDBACK/STOP
+.s FEEDBACK 6
+.w 500
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+.w 10000
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.s BIAS_CONTROL 9
+FEEDBACK/START_CURRENT_CONTROL 0.0
+.w 500
+FEEDBACK/ENABLE_OUTPUT yes
+
+#bad coding here
+.! echo `date -u`  "Waiting for 90 sec ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.w 90000
+.s BIAS_CONTROL 9
+FEEDBACK/STOP
+FEEDBACK/START_GLOBAL_FEEDBACK 25
+FEEDBACK/SET_REFERENCE 100
+
+FAD_CONTROL/SET_FILE_FORMAT 0
+.! echo `date -u`  "Starting Ext. Lightpulser run for 100 Events!!!!!" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 500 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+.! echo `date -u`  "@SHIFTER: please set BY HAND the FEEDBACK REFERENCE to the desired voltage setpoint" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "@SHIFTER: .... do: FEEDBACK/SET_REFERENCE <voltage in mV>" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_ped_n_lp.dim
===================================================================
--- branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_ped_n_lp.dim	(revision 18732)
+++ branches/FACT++_part_filenames/ScriptsForDimCtrl/fb_ped_n_lp.dim	(revision 18732)
@@ -0,0 +1,29 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "take ped and LPext" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+
+.! echo `date -u`  "take 100 LP events for the beedback to stabilize " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+FEEDBACK/ENABLE_OUTPUT yes
+FAD_CONTROL/SET_FILE_FORMAT 0
+FEEDBACK/SET_Ki 0.8
+MCP/START -1 500 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+FEEBACK/SET_Ki 0.55
+FEEDBACK/ENABLE_OUTPUT no
+FAD_CONTROL/SET_FILE_FORMAT 2
+.! echo `date -u`  "take PED " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "take LPext " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+FEEDBACK/ENABLE_OUTPUT yes
+.! echo `date -u`  " .. done .. " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/FACT++_part_filenames/aminclude.am
===================================================================
--- branches/FACT++_part_filenames/aminclude.am	(revision 18732)
+++ branches/FACT++_part_filenames/aminclude.am	(revision 18732)
@@ -0,0 +1,155 @@
+## --------------------------------- ##
+## Format-independent Doxygen rules. ##
+## --------------------------------- ##
+
+if DX_COND_doc
+
+## ------------------------------- ##
+## Rules specific for HTML output. ##
+## ------------------------------- ##
+
+if DX_COND_html
+
+DX_CLEAN_HTML = @DX_DOCDIR@/html
+
+endif DX_COND_html
+
+## ------------------------------ ##
+## Rules specific for CHM output. ##
+## ------------------------------ ##
+
+if DX_COND_chm
+
+DX_CLEAN_CHM = @DX_DOCDIR@/chm
+
+if DX_COND_chi
+
+DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+
+endif DX_COND_chi
+
+endif DX_COND_chm
+
+## ------------------------------ ##
+## Rules specific for MAN output. ##
+## ------------------------------ ##
+
+if DX_COND_man
+
+DX_CLEAN_MAN = @DX_DOCDIR@/man
+
+endif DX_COND_man
+
+## ------------------------------ ##
+## Rules specific for RTF output. ##
+## ------------------------------ ##
+
+if DX_COND_rtf
+
+DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+
+endif DX_COND_rtf
+
+## ------------------------------ ##
+## Rules specific for XML output. ##
+## ------------------------------ ##
+
+if DX_COND_xml
+
+DX_CLEAN_XML = @DX_DOCDIR@/xml
+
+endif DX_COND_xml
+
+## ----------------------------- ##
+## Rules specific for PS output. ##
+## ----------------------------- ##
+
+if DX_COND_ps
+
+DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+
+DX_PS_GOAL = doxygen-ps
+
+doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+
+@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_LATEX) refman.tex; \
+	$(MAKEINDEX_PATH) refman.idx; \
+	$(DX_LATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+               refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+	do \
+	   $(DX_LATEX) refman.tex; \
+	   countdown=`expr $$countdown - 1`; \
+	done; \
+	$(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+
+endif DX_COND_ps
+
+## ------------------------------ ##
+## Rules specific for PDF output. ##
+## ------------------------------ ##
+
+if DX_COND_pdf
+
+DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+
+DX_PDF_GOAL = doxygen-pdf
+
+doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+
+@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_PDFLATEX) refman.tex; \
+	$(DX_MAKEINDEX) refman.idx; \
+	$(DX_PDFLATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+		refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+	do \
+		$(DX_PDFLATEX) refman.tex; \
+		countdown=`expr $$countdown - 1`; \
+    	done;
+
+endif DX_COND_pdf
+
+## ------------------------------------------------- ##
+## Rules specific for LaTeX (shared for PS and PDF). ##
+## ------------------------------------------------- ##
+
+if DX_COND_latex
+
+DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+
+endif DX_COND_latex
+
+.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+
+doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+	rm -rf @DX_DOCDIR@
+	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+DX_CLEANFILES = \
+    @DX_DOCDIR@/@PACKAGE@.tag \
+    -r \
+    $(DX_CLEAN_HTML) \
+    $(DX_CLEAN_CHM) \
+    $(DX_CLEAN_CHI) \
+    $(DX_CLEAN_MAN) \
+    $(DX_CLEAN_RTF) \
+    $(DX_CLEAN_XML) \
+    $(DX_CLEAN_PS) \
+    $(DX_CLEAN_PDF) \
+    $(DX_CLEAN_LATEX)
+
+endif DX_COND_doc
Index: branches/FACT++_part_filenames/autogen.sh
===================================================================
--- branches/FACT++_part_filenames/autogen.sh	(revision 18732)
+++ branches/FACT++_part_filenames/autogen.sh	(revision 18732)
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Consider all files obsolete
+#autoreconf --force --install -I .macro_dir
+
+# Keep existing files - that doesn't overwrite ltmain.sh!
+autoreconf --install -I .macro_dir
Index: branches/FACT++_part_filenames/biasctrl.rc
===================================================================
--- branches/FACT++_part_filenames/biasctrl.rc	(revision 18732)
+++ branches/FACT++_part_filenames/biasctrl.rc	(revision 18732)
@@ -0,0 +1,3 @@
+database=readpo:readc0nf1g@10.0.100.21/programoptions
+console=2
+quiet=yes
Index: branches/FACT++_part_filenames/configure
===================================================================
--- branches/FACT++_part_filenames/configure	(revision 18732)
+++ branches/FACT++_part_filenames/configure	(revision 18732)
@@ -0,0 +1,29186 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for FACT++ 1.0.
+#
+# Report bugs to <thomas.bretz@phys.ethz.ch>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  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\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: thomas.bretz@phys.ethz.ch about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='FACT++'
+PACKAGE_TARNAME='FACTpp'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='FACT++ 1.0'
+PACKAGE_BUGREPORT='thomas.bretz@phys.ethz.ch'
+PACKAGE_URL='https://www.fact-project.org/svn/trunk/FACT++/'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+IS_TRUE_FALSE
+IS_TRUE_TRUE
+IS_FALSE_FALSE
+IS_FALSE_TRUE
+HAS_VIEWER_FALSE
+HAS_VIEWER_TRUE
+HAS_GUI_FALSE
+HAS_GUI_TRUE
+HAS_V8_FALSE
+HAS_V8_TRUE
+HAS_DBUS_FALSE
+HAS_DBUS_TRUE
+HAS_NOVA_FALSE
+HAS_NOVA_TRUE
+HAS_QWT_FALSE
+HAS_QWT_TRUE
+HAS_QGL_FALSE
+HAS_QGL_TRUE
+HAS_GLU_FALSE
+HAS_GLU_TRUE
+HAS_GL_FALSE
+HAS_GL_TRUE
+HAS_ZLIB_FALSE
+HAS_ZLIB_TRUE
+HAS_FITS_FALSE
+HAS_FITS_TRUE
+HAS_CCFITS_FALSE
+HAS_CCFITS_TRUE
+HAS_CFITSIO_FALSE
+HAS_CFITSIO_TRUE
+HAS_ROOT_QT_FALSE
+HAS_ROOT_QT_TRUE
+HAS_ROOT_FALSE
+HAS_ROOT_TRUE
+HAS_SQL_FALSE
+HAS_SQL_TRUE
+HAS_QT4_FALSE
+HAS_QT4_TRUE
+HAS_COLORGCC_FALSE
+HAS_COLORGCC_TRUE
+HAS_DOT_FALSE
+HAS_DOT_TRUE
+HAS_DOXYGEN_FALSE
+HAS_DOXYGEN_TRUE
+HAS_CURL_FALSE
+HAS_CURL_TRUE
+HAS_MAILX_FALSE
+HAS_MAILX_TRUE
+HAS_JSDOC_FALSE
+HAS_JSDOC_TRUE
+HAS_HELP2MAN_FALSE
+HAS_HELP2MAN_TRUE
+HAS_PS2PDF_FALSE
+HAS_PS2PDF_TRUE
+HAS_GROFF_FALSE
+HAS_GROFF_TRUE
+HAS_COLORDIFF_FALSE
+HAS_COLORDIFF_TRUE
+CURL
+MAILX
+JSDOC
+HELP2MAN
+PS2PDF
+GROFF
+COLORDIFF
+ROOTLDFLAGS
+ROOTCXXFLAGS
+ROOTCPPFLAGS
+ROOTSOVERSION
+ROOTVERSION
+ROOTRPATH
+ROOTAUXCFLAGS
+ROOTAUXLIBS
+ROOTGLIBS
+ROOTLIBS
+ROOTCFLAGS
+ROOTINCDIR
+ROOTLIBDIR
+ROOTCINT
+ROOTEXEC
+ROOTCONF
+RCC4
+UIC4
+MOC4
+QT4_LIB
+QT4_VERSION
+QT4_LDFLAGS
+QT4_INCLUDES
+QT4_FRONTEND_LIBS
+QT4_FRONTEND_CFLAGS
+QT4_CORE_LIB
+QT4_CORE_LDFLAGS
+QT4_CORE_INCLUDES
+QT4_CORE_LIBS
+QT4_CORE_CFLAGS
+QT4DIR
+BOOST_THREAD_LIB
+BOOST_REGEX_LIB
+BOOST_PROGRAM_OPTIONS_LIB
+BOOST_FILESYSTEM_LIB
+BOOST_DATE_TIME_LIB
+BOOST_ASIO_LIB
+BOOST_SYSTEM_LIB
+BOOST_LDFLAGS
+BOOST_CPPFLAGS
+MYSQLPP_INC_DIR
+MYSQLPP_LIB_DIR
+MYSQL_C_INC_DIR
+MOTIF_LIBS
+MOTIF_CFLAGS
+MOTIF_INCL
+MOTIF_LDFLAGS
+LT_HAVE_XP
+HAS_LIBXP_FALSE
+HAS_LIBXP_TRUE
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+READLINE_INCLUDES
+READLINE_LIBS
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+DOXYGEN_PAPER_SIZE
+DX_COND_latex_FALSE
+DX_COND_latex_TRUE
+DX_COND_pdf_FALSE
+DX_COND_pdf_TRUE
+DX_PDFLATEX
+DX_FLAG_pdf
+DX_COND_ps_FALSE
+DX_COND_ps_TRUE
+DX_EGREP
+DX_DVIPS
+DX_MAKEINDEX
+DX_LATEX
+DX_FLAG_ps
+DX_COND_html_FALSE
+DX_COND_html_TRUE
+DX_FLAG_html
+DX_COND_chi_FALSE
+DX_COND_chi_TRUE
+DX_FLAG_chi
+DX_COND_chm_FALSE
+DX_COND_chm_TRUE
+DX_HHC
+DX_FLAG_chm
+DX_COND_xml_FALSE
+DX_COND_xml_TRUE
+DX_FLAG_xml
+DX_COND_rtf_FALSE
+DX_COND_rtf_TRUE
+DX_FLAG_rtf
+DX_COND_man_FALSE
+DX_COND_man_TRUE
+DX_FLAG_man
+DX_COND_dot_FALSE
+DX_COND_dot_TRUE
+DX_DOT
+DX_FLAG_dot
+DX_COND_doc_FALSE
+DX_COND_doc_TRUE
+DX_PERL
+DX_DOXYGEN
+DX_FLAG_doc
+DX_DOCDIR
+DX_CONFIG
+DX_PROJECT
+DX_ENV
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+CXXCPP
+LT_SYS_LIBRARY_PATH
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+AWK
+RANLIB
+STRIP
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LIBTOOL
+ac_ct_AR
+AR
+DBUS_LIBS
+DBUS_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+EGREP
+GREP
+CPP
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_optimization
+enable_debug
+enable_static
+enable_shared
+with_pic
+enable_fast_install
+with_aix_soname
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_dependency_tracking
+enable_silent_rules
+enable_doxygen_doc
+enable_doxygen_dot
+enable_doxygen_man
+enable_doxygen_rtf
+enable_doxygen_xml
+enable_doxygen_chm
+enable_doxygen_chi
+enable_doxygen_html
+enable_doxygen_ps
+enable_doxygen_pdf
+with_readline
+with_x
+with_motif_includes
+with_motif_libraries
+with_zlib
+with_zlib_include
+with_zlib_libdir
+with_GL
+with_GL_include
+with_GL_libdir
+with_GLU
+with_GLU_include
+with_GLU_libdir
+with_nova
+with_nova_include
+with_nova_libdir
+with_cfitsio
+with_cfitsio_include
+with_cfitsio_libdir
+with_ccfits
+with_ccfits_include
+with_ccfits_libdir
+with_mysql_include
+with_mysqlpp
+with_mysqlpp_lib
+with_mysqlpp_include
+with_boost
+with_boost_libdir
+with_boost_system
+with_boost_asio
+with_boost_date_time
+with_boost_filesystem
+with_boost_program_options
+with_boost_regex
+with_boost_thread
+with_v8
+with_v8_include
+with_v8_libdir
+with_qt4
+with_qt4_dir
+with_qt4_includes
+with_qt4_libraries
+with_QGL
+with_QGL_include
+with_QGL_libdir
+with_qwt
+with_qwt_include
+with_qwt_libdir
+with_root
+with_rootsys
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+DBUS_CFLAGS
+DBUS_LIBS
+LT_SYS_LIBRARY_PATH
+CXXCPP
+DOXYGEN_PAPER_SIZE
+XMKMF
+QT4DIR
+QT4_CORE_CFLAGS
+QT4_CORE_LIBS
+QT4_FRONTEND_CFLAGS
+QT4_FRONTEND_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir runstatedir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures FACT++ 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/FACTpp]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of FACT++ 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-optimization  Compile with -O0 instead of -O3
+
+  --enable-debug          Compile with debugging symbols (-g)
+
+  --enable-static[=PKGS]  build static libraries [default=no]
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --disable-doxygen-doc   don't generate any doxygen documentation
+  --disable-doxygen-dot   don't generate graphics for doxygen documentation
+  --enable-doxygen-man    generate doxygen manual pages
+  --enable-doxygen-rtf    generate doxygen RTF documentation
+  --enable-doxygen-xml    generate doxygen XML documentation
+  --enable-doxygen-chm    generate doxygen compressed HTML help documentation
+  --enable-doxygen-chi    generate doxygen seperate compressed HTML help index
+                          file
+  --disable-doxygen-html  don't generate doxygen plain HTML documentation
+  --enable-doxygen-ps     generate doxygen PostScript documentation
+  --disable-doxygen-pdf   don't generate doxygen PDF documentation
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-aix-soname=aix|svr4|both
+                          shared library versioning (aka "SONAME") variant to
+                          provide on AIX, [default=aix].
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
+                          compiler's sysroot if not specified).
+  --with-readline[=dir]   Compile with readline/locate base dir
+  --with-x                use the X Window System
+  --with-motif-includes=DIR    Motif include files are in DIR
+  --with-motif-libraries=DIR   Motif libraries are in DIR
+  --with-zlib=DIR	root directory of zlib installation
+  --with-zlib-include=DIR        specify exact include dir for zlib headers (e.g. zlib.h)
+  --with-zlib-libdir=DIR        specify exact library dir for zlib library (e.g. libz)
+  --without-zlib        disables zlib usage completely
+  --with-GL=DIR	root directory of GL installation
+  --with-GL-include=DIR        specify exact include dir for GL headers (e.g. GL/gl.h)
+  --with-GL-libdir=DIR        specify exact library dir for GL library (e.g. libGL)
+  --without-GL        disables GL usage completely
+  --with-GLU=DIR	root directory of GLU installation
+  --with-GLU-include=DIR        specify exact include dir for GLU headers (e.g. GL/glu.h)
+  --with-GLU-libdir=DIR        specify exact library dir for GLU library (e.g. libGLU)
+  --without-GLU        disables GLU usage completely
+  --with-nova=DIR	root directory of nova installation
+  --with-nova-include=DIR        specify exact include dir for nova headers (e.g. libnova/julian_day.h)
+  --with-nova-libdir=DIR        specify exact library dir for nova library (e.g. libnova)
+  --without-nova        disables nova usage completely
+  --with-cfitsio=DIR	root directory of cfitsio installation
+  --with-cfitsio-include=DIR        specify exact include dir for cfitsio headers (e.g. fitsio.h)
+  --with-cfitsio-libdir=DIR        specify exact library dir for cfitsio library (e.g. libcfitsio)
+  --without-cfitsio        disables cfitsio usage completely
+  --with-ccfits=DIR	root directory of ccfits installation
+  --with-ccfits-include=DIR        specify exact include dir for ccfits headers (e.g. CCfits/CCfits)
+  --with-ccfits-libdir=DIR        specify exact library dir for ccfits library (e.g. libCCfits)
+  --without-ccfits        disables ccfits usage completely
+  --with-mysql-include=<path> directory path of MySQL header installation
+  --with-mysqlpp=<path>     path containing MySQL++ header and library subdirs
+  --with-mysqlpp-lib=<path> directory path of MySQL++ library
+  --with-mysqlpp-include=<path> directory path of MySQL++ headers
+  --with-boost[=ARG]      use Boost library from a standard location
+                          (ARG=yes), from the specified location (ARG=<path>),
+                          or disable it (ARG=no) [ARG=yes]
+  --with-boost-libdir=LIB_DIR
+                          Force given directory for boost libraries. Note that
+                          this will override library path detection, so use
+                          this parameter only if default library detection
+                          fails and you know exactly where your boost
+                          libraries are located.
+  --with-boost-system[=special-lib]
+                          use the System library from boost - it is possible
+                          to specify a certain library for the linker e.g.
+                          --with-boost-system=boost_system-gcc-mt
+  --with-boost-asio[=special-lib]
+                          use the ASIO library from boost - it is possible to
+                          specify a certain library for the linker e.g.
+                          --with-boost-asio=boost_system-gcc41-mt-1_34
+  --with-boost-date-time[=special-lib]
+                          use the Date_Time library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g.
+                          --with-boost-date-time=boost_date_time-gcc-mt-d-1_33_1
+  --with-boost-filesystem[=special-lib]
+                          use the Filesystem library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g. --with-boost-filesystem=boost_filesystem-gcc-mt
+  --with-boost-program-options[=special-lib]
+                          use the program options library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g.
+                          --with-boost-program-options=boost_program_options-gcc-mt-1_33_1
+  --with-boost-regex[=special-lib]
+                          use the Regex library from boost - it is possible to
+                          specify a certain library for the linker e.g.
+                          --with-boost-regex=boost_regex-gcc-mt-d-1_33_1
+  --with-boost-thread[=special-lib]
+                          use the Thread library from boost - it is possible
+                          to specify a certain library for the linker e.g.
+                          --with-boost-thread=boost_thread-gcc-mt
+  --with-v8=DIR	root directory of v8 installation
+  --with-v8-include=DIR        specify exact include dir for v8 headers (e.g. v8.h)
+  --with-v8-libdir=DIR        specify exact library dir for v8 library (e.g. libv8)
+  --without-v8        disables v8 usage completely
+  --without-qt4           Disable qt4, i.e. disable gui support.
+  --with-qt4-dir          where the root of Qt 4 is installed
+  --with-qt4-includes     where the Qt 4 includes are
+  --with-qt4-libraries    where the Qt 4 library is installed
+  --with-QGL=DIR	root directory of QGL installation
+  --with-QGL-include=DIR        specify exact include dir for QGL headers (e.g. QtOpenGL/QGLWidget)
+  --with-QGL-libdir=DIR        specify exact library dir for QGL library (e.g. libQtOpenGL)
+  --without-QGL        disables QGL usage completely
+  --with-qwt=DIR	root directory of qwt installation
+  --with-qwt-include=DIR        specify exact include dir for qwt headers (e.g. qwt_plot.h)
+  --with-qwt-libdir=DIR        specify exact library dir for qwt library (e.g. libqwt-qt4)
+  --without-qwt        disables qwt usage completely
+  --without-root          Disable root, i.e. disable gui support.
+  --with-rootsys          path to the ROOT executables or top ROOT
+                          installation directory
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config
+  DBUS_LIBS   linker flags for DBUS, overriding pkg-config
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
+  CXXCPP      C++ preprocessor
+  DOXYGEN_PAPER_SIZE
+              a4wide (default), a4, letter, legal or executive
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
+  QT4DIR      the place where the Qt 4 files are, e.g. /usr/lib/qt4
+  QT4_CORE_CFLAGS
+              C compiler flags for QT4_CORE, overriding pkg-config
+  QT4_CORE_LIBS
+              linker flags for QT4_CORE, overriding pkg-config
+  QT4_FRONTEND_CFLAGS
+              C compiler flags for QT4_FRONTEND, overriding pkg-config
+  QT4_FRONTEND_LIBS
+              linker flags for QT4_FRONTEND, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <thomas.bretz@phys.ethz.ch>.
+FACT++ home page: <https://www.fact-project.org/svn/trunk/FACT++/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+FACT++ configure 1.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------- ##
+## Report this to thomas.bretz@phys.ethz.ch ##
+## ---------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------- ##
+## Report this to thomas.bretz@phys.ethz.ch ##
+## ---------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by FACT++ $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_files="$ac_config_files Makefile"
+   # causes x/Makefile.in to be created if x/Makefile.am exists
+#AC_CONFIG_HEADERS([config.h])
+
+ac_aux_dir=
+for ac_dir in .aux_dir "$srcdir"/.aux_dir; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in .aux_dir \"$srcdir\"/.aux_dir" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+ # /usr/share/libtool/config /usr/share/automake-x.xx
+
+# Make sure none of the following will set -O2
+# Check whether --enable-optimization was given.
+if test "${enable_optimization+set}" = set; then :
+  enableval=$enable_optimization;
+fi
+
+if test "x$enable_optimization" != "xno"; then :
+  MYFLAGS+=" -O3"
+else
+  MYFLAGS+=" -O0"
+fi
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+fi
+
+if test "x$enable_debug" = "xyes"; then :
+  MYFLAGS+=" -g"
+fi
+
+CFLAGS+=$MYFLAGS
+CXXFLAGS+=$MYFLAGS
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in gcc
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in gcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+COLORGCC=`which colorgcc`
+if test -n "$COLORGCC"; then :
+
+    ac_config_links="$ac_config_links g++:$COLORGCC gcc:$COLORGCC"
+
+    PATH=./:$PATH
+
+fi
+
+#AC_PROG_CC_C99
+   case $ac_cv_prog_cc_stdc in #(
+  no) :
+    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+	{
+	case 's': // string
+	  str = va_arg (args_copy, const char *);
+	  break;
+	case 'd': // int
+	  number = va_arg (args_copy, int);
+	  break;
+	case 'f': // float
+	  fnumber = va_arg (args_copy, double);
+	  break;
+	default:
+	  break;
+	}
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+	  || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if ${ac_cv_prog_cc_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+######################################################################
+# GNUC extension support (needed for the event builder)
+######################################################################
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+######################################################################
+# Check for right C++ standard
+######################################################################
+
+#AC_CXX_HEADER_STDCXX_0X
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features without additional flags" >&5
+$as_echo_n "checking if g++ supports C++0x features without additional flags... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_native+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_native=yes
+else
+  ax_cv_cxx_compile_cxx0x_native=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_native" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_native" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features with -std=c++0x" >&5
+$as_echo_n "checking if g++ supports C++0x features with -std=c++0x... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_cxx+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++0x"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_cxx=yes
+else
+  ax_cv_cxx_compile_cxx0x_cxx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_cxx" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_cxx" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features with -std=gnu++0x" >&5
+$as_echo_n "checking if g++ supports C++0x features with -std=gnu++0x... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_gxx+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_gxx=yes
+else
+  ax_cv_cxx_compile_cxx0x_gxx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_gxx" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_gxx" >&6; }
+
+  if test "$ax_cv_cxx_compile_cxx0x_native" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_cxx" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then
+
+$as_echo "#define HAVE_STDCXX_0X /**/" >>confdefs.h
+
+  fi
+
+if test "$ax_cv_cxx_compile_cxx0x_cxx" != yes; then :
+  as_fn_error $? "C++0x standard (-std=c++0x) not supported by compiler." "$LINENO" 5
+fi
+
+# Postponed after the BOOST library tests otherwise the check for boost::thread fails
+#CXXFLAGS+=" -std=c++0x"
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
+$as_echo_n "checking for DBUS... " >&6; }
+
+if test -n "$DBUS_CFLAGS"; then
+    pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 dbus-glib-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "dbus-1 dbus-glib-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 dbus-glib-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$DBUS_LIBS"; then
+    pkg_cv_DBUS_LIBS="$DBUS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 dbus-glib-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "dbus-1 dbus-glib-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 dbus-glib-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 dbus-glib-1" 2>&1`
+        else
+	        DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 dbus-glib-1" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$DBUS_PKG_ERRORS" >&5
+
+	HAVE_DBUS=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	HAVE_DBUS=no
+else
+	DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS
+	DBUS_LIBS=$pkg_cv_DBUS_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_DBUS=yes
+fi
+
+CPPFLAGS+=" `pkg-config --cflags dbus-1 dbus-glib-1`"
+LDFLAGS+=" `pkg-config --libs dbus-1 dbus-glib-1`"
+
+# dbus-1
+# dbus-glib-1
+# QtOpenGL
+# gl
+# QtCore
+# cfitsio
+
+######################################################################
+# Setup the libtool and the language
+######################################################################
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar lib "link -lib"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar lib "link -lib"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
+$as_echo_n "checking the archiver ($AR) interface... " >&6; }
+if ${am_cv_ar_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+   am_cv_ar_interface=ar
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int some_variable = 0;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+  (eval $am_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
+        { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+  (eval $am_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+        if test "$ac_status" -eq 0; then
+          am_cv_ar_interface=lib
+        else
+          am_cv_ar_interface=unknown
+        fi
+      fi
+      rm -f conftest.lib libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
+
+case $am_cv_ar_interface in
+ar)
+  ;;
+lib)
+  # Microsoft lib, so override with the ar-lib wrapper script.
+  # FIXME: It is wrong to rewrite AR.
+  # But if we don't then we get into trouble of one sort or another.
+  # A longer-term fix would be to have automake use am__AR in this case,
+  # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+  # similar.
+  AR="$am_aux_dir/ar-lib $AR"
+  ;;
+unknown)
+  as_fn_error $? "could not determine $AR interface" "$LINENO" 5
+  ;;
+esac
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.6'
+macro_revision='2.4.6'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+# 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'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# 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*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+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
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    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
+
+fi
+
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# 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
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #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
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 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
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && 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_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
+
+#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_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_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && 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" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    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
+
+fi
+
+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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+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|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+  ac_path_lt_DD_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in dd; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >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
+      $ac_path_lt_DD_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_lt_DD"; then
+    :
+  fi
+else
+  ac_cv_path_lt_DD=$lt_DD
+fi
+
+rm -f conftest.i conftest2.i conftest.out
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 <conftest2.i >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"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
+
+
+
+
+
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; 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-%%"`
+}
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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" >&5
+	$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 >&5
+	# 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 >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $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 >&5
+      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 >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    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
+
+# 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$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+func_stripname_cnf ()
+{
+  case $2 in
+  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+
+
+
+
+# Set options
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; 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
+else
+  enable_static=no
+fi
+
+
+
+
+
+
+
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; 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
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; 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
+else
+  pic_mode=default
+fi
+
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; 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
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+  shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+  withval=$with_aix_soname; case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname
+else
+  if ${lt_cv_with_aix_soname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_with_aix_soname=aix
+fi
+
+    with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+  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
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+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
+
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+# 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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/${ac_tool_prefix}file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
+      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
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
+      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
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC=$CC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$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);}'
+
+
+
+
+
+
+
+# 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
+
+# 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
+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*
+
+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*
+
+
+## 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_prog_compiler_no_builtin_flag=
+
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## 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\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test yes = "$GCC"; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-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_prog_compiler_pic='-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
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    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_prog_compiler_pic='-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_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl='-Wl,-Wl,,'
+        lt_prog_compiler_pic='-PIC'
+        lt_prog_compiler_static='-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).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-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_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='$wl-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      case $cc_basename in
+      # old Intel for x86_64, which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-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_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## 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\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   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>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works"; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=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\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $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*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=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\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $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*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # 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'.
+  exclude_expsyms='_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.
+  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*)
+    link_all_deplibs=no
+    ;;
+  esac
+
+  ld_shlibs=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
+    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec='$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
+      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    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
+	ld_shlibs=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
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$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)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='$wl--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+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
+        archive_cmds='$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...
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $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
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$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'
+      archive_expsym_cmds='$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'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+      export_dynamic_flag_spec='$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.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='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
+	  whole_archive_flag_spec='$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
+	  whole_archive_flag_spec='$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
+	  whole_archive_flag_spec=
+	  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
+	  whole_archive_flag_spec='$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'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='$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'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+        if test yes = "$supports_anon_versioning"; then
+          archive_expsym_cmds='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*)
+	  export_dynamic_flag_spec='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
+	    archive_expsym_cmds='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
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$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
+	ld_shlibs=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
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	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
+	    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test no = "$ld_shlibs"; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$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.
+      hardcode_minus_L=yes
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=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
+	  export_symbols_cmds='$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
+	  export_symbols_cmds='`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.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='$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.
+	hardcode_direct=no
+	hardcode_direct_absolute=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
+	  hardcode_direct=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
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  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
+
+      export_dynamic_flag_spec='$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.
+      always_export_symbols=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.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`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_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$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
+	  hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$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.
+	 if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`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_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+	 hardcode_libdir_flag_spec='$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.
+	  no_undefined_flag=' $wl-bernotok'
+	  allow_undefined_flag=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  archive_expsym_cmds='$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.
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$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
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$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
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$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)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-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
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# 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.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $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, )='true'
+	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='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
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=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.
+	archive_cmds='$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.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag=$_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
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds="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"
+    module_expsym_cmds="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"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=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*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test yes = "$GCC"; then
+	archive_cmds='$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
+	archive_cmds='$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
+      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='$wl-E'
+      ;;
+
+    hpux10*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='$wl-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$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*)
+	  archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # 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)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS -b"
+   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>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test yes = "$lt_cv_prog_compiler__b"; then
+    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='$wl-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test yes = "$GCC"; then
+	archive_cmds='$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.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds='$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
+	link_all_deplibs=no
+      else
+	archive_cmds='$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'
+	archive_expsym_cmds='$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
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs=yes
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd* | bitrig*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec='$wl-E'
+	else
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$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'
+      archive_expsym_cmds='$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'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    osf3*)
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$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
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$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
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$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'
+	hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$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'
+	archive_expsym_cmds='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
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='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=''
+	  archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='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'
+	  archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='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
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=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
+	  whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=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.
+	archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='$wl-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$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.
+      no_undefined_flag='$wl-z,text'
+      allow_undefined_flag='$wl-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='$wl-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test sni = "$host_vendor"; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='$wl-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test no = "$ld_shlibs" && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds 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.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+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
+
+
+
+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<name>.so
+      # instead of lib<name>.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'
+
+      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`'
+
+  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.
+  hardcode_libdir_flag_spec='-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
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test yes = "$hardcode_automatic"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct" &&
+     # 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, )" &&
+     test no != "$hardcode_minus_L"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test relink = "$hardcode_action" ||
+   test yes = "$inherit_rpath"; 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
+
+
+
+
+
+
+  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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  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_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  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"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self=cross
+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 <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test yes = "$lt_cv_dlopen_self"; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self_static=cross
+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 <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+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"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+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"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report what library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test yes = "$enable_shared" || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+
+      if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$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.
+
+
+
+
+
+
+# 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
+
+
+  # save warnings/boilerplate of simple test code
+  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*
+
+  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*
+
+
+  # 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
+  compiler_CXX=$CC
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+  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_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test yes = "$GXX"; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_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
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$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'
+
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        export_dynamic_flag_spec_CXX='$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
+          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        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.
+        archive_cmds_CXX='$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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=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.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='$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.
+          hardcode_direct_CXX=no
+          hardcode_direct_absolute_CXX=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
+	    hardcode_direct_CXX=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
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  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
+
+        export_dynamic_flag_spec_CXX='$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.
+        always_export_symbols_CXX=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.
+          no_undefined_flag_CXX='-bernotok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`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_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$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
+	    hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$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.
+	    if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`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_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+	    hardcode_libdir_flag_spec_CXX='$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.
+	    no_undefined_flag_CXX=' $wl-bernotok'
+	    allow_undefined_flag_CXX=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    archive_expsym_cmds_CXX='$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.
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=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.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # 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.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $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, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='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, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$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...
+	    archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $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
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX=$_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
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_CXX="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"
+    module_expsym_cmds_CXX="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"
+       if test yes != "$lt_cv_apple_cc_single_mod"; then
+      archive_cmds_CXX="\$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"
+      archive_expsym_cmds_CXX="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
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      os2*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+	hardcode_minus_L_CXX=yes
+	allow_undefined_flag_CXX=unsupported
+	shrext_cmds=.dll
+	archive_cmds_CXX='$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'
+	archive_expsym_cmds_CXX='$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'
+	old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	enable_shared_with_static_runtimes_CXX=yes
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='$wl-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=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
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$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
+              archive_cmds_CXX='$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
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test no = "$with_gnu_ld"; then
+	  hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='$wl-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=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
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$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*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$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
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='$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.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='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++
+	    archive_cmds_CXX='$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.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        archive_cmds_CXX='$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
+	        archive_cmds_CXX='$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
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=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.
+	    archive_cmds_CXX='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'
+	    archive_expsym_cmds_CXX='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"'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$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."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$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
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='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`"'
+	      old_archive_cmds_CXX='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'
+	      archive_cmds_CXX='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'
+	      archive_expsym_cmds_CXX='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
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='$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
+
+	    hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$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++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$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
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # 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
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
+	      archive_expsym_cmds_CXX='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
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='$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'
+	      compiler_needs_object_CXX=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.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=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*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd* | bitrig*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='$wl-E'
+	    whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=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.
+	    archive_cmds_CXX='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'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	        archive_cmds_CXX='$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'
+	        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$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'
+	        archive_expsym_cmds_CXX='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'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # 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
+	      allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$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'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$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
+
+	      hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # 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
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='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'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=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?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=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.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$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.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      no_undefined_flag_CXX=' $wl-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='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.
+	        archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='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
+
+	      hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='$wl-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$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.
+	no_undefined_flag_CXX='$wl-z,text'
+	allow_undefined_flag_CXX='$wl-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='$wl-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+              '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+              '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$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
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+    GCC_CXX=$GXX
+    LD_CXX=$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...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_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
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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 "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX=$prev$p
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $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 "$postdeps_CXX"; then
+	   postdeps_CXX=$prev$p
+	 else
+	   postdeps_CXX="${postdeps_CXX} $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 "$predep_objects_CXX"; then
+	   predep_objects_CXX=$p
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX=$p
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+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.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test yes = "$GXX"; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-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_prog_compiler_pic_CXX='-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
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_CXX='$wl-static'
+	;;
+      esac
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    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_prog_compiler_pic_CXX=-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_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-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_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--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).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-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_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64, which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-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_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## 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\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   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>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=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\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $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*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=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\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   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_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $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*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_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
+      export_symbols_cmds_CXX='$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
+      export_symbols_cmds_CXX='`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*)
+    export_symbols_cmds_CXX=$ltdll_cmds
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds_CXX 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.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+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
+
+
+
+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<name>.so
+      # instead of lib<name>.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'
+
+      ;;
+    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`'
+
+  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.
+  hardcode_libdir_flag_spec_CXX='-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
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test yes = "$hardcode_automatic_CXX"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct_CXX" &&
+     # 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, CXX)" &&
+     test no != "$hardcode_minus_L_CXX"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test relink = "$hardcode_action_CXX" ||
+   test yes = "$inherit_rpath_CXX"; 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
+
+
+
+
+
+
+
+  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_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+#AC_PATH_XTRA
+
+######################################################################
+# Automake initial setup
+######################################################################
+am__api_version='1.15'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='FACTpp'
+ VERSION='1.0'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+
+
+######################################################################
+# DOXYGEN SUPPORT
+######################################################################
+
+### FIXME: Need a configure commandline switch
+DX_ENV="$DX_ENV EXTRACT_ALL='YES'"
+
+DX_ENV="$DX_ENV RECURSIVE='YES'"
+
+DX_ENV="$DX_ENV ALL_GRAPHS='NO'"
+  # change to yes to switch on call(er) graphs
+
+#DX_DOXYGEN_FEATURE(ON)
+                # sets HAVE_DOT
+#DX_HTML_FEATURE(ON)              # sets GENERATE_HTML (default)
+#DX_CHM_FEATURE(ON|OFF)           # sets GENERATE_HTMLHELP
+#DX_CHI_FEATURE(ON|OFF)           # sets GENERATE_CHI
+#DX_MAN_FEATURE(ON)               # sets GENERATE_MAN (segfaults)
+#DX_RTF_FEATURE(ON|OFF)           # sets GENERATE_RTF
+#DX_XML_FEATURE(ON|OFF)           # sets GENERATE_XML
+#DX_PDF_FEATURE(ON|OFF)           # sets GENERATE_PDF (default)
+                # sets GENERATE_PS  (default)
+
+
+# Files:
+DX_PROJECT=$PACKAGE_NAME
+
+DX_CONFIG=Doxyfile
+
+DX_DOCDIR=doxygen-doc
+
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV="$DX_ENV SRCDIR='$srcdir'"
+
+DX_ENV="$DX_ENV PROJECT='$DX_PROJECT'"
+
+DX_ENV="$DX_ENV DOCDIR='$DX_DOCDIR'"
+
+DX_ENV="$DX_ENV VERSION='$PACKAGE_VERSION'"
+
+
+# Doxygen itself:
+
+
+
+    # Check whether --enable-doxygen-doc was given.
+if test "${enable_doxygen_doc+set}" = set; then :
+  enableval=$enable_doxygen_doc;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_doc=1
+
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_doc=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-doc" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_doc=1
+
+
+
+fi
+
+if test "$DX_FLAG_doc" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}doxygen", so it can be a program name with args.
+set dummy ${ac_tool_prefix}doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOXYGEN="$DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOXYGEN=$ac_cv_path_DX_DOXYGEN
+if test -n "$DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOXYGEN" >&5
+$as_echo "$DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOXYGEN"; then
+  ac_pt_DX_DOXYGEN=$DX_DOXYGEN
+  # Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOXYGEN="$ac_pt_DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOXYGEN=$ac_cv_path_ac_pt_DX_DOXYGEN
+if test -n "$ac_pt_DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOXYGEN" >&5
+$as_echo "$ac_pt_DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOXYGEN" = x; then
+    DX_DOXYGEN=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOXYGEN=$ac_pt_DX_DOXYGEN
+  fi
+else
+  DX_DOXYGEN="$ac_cv_path_DX_DOXYGEN"
+fi
+
+if test "$DX_FLAG_doc$DX_DOXYGEN" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: doxygen not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args.
+set dummy ${ac_tool_prefix}perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PERL="$DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PERL=$ac_cv_path_DX_PERL
+if test -n "$DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PERL" >&5
+$as_echo "$DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PERL"; then
+  ac_pt_DX_PERL=$DX_PERL
+  # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PERL="$ac_pt_DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PERL=$ac_cv_path_ac_pt_DX_PERL
+if test -n "$ac_pt_DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PERL" >&5
+$as_echo "$ac_pt_DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PERL" = x; then
+    DX_PERL=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PERL=$ac_pt_DX_PERL
+  fi
+else
+  DX_PERL="$ac_cv_path_DX_PERL"
+fi
+
+if test "$DX_FLAG_doc$DX_PERL" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: perl not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_doc" = 1; then
+  DX_COND_doc_TRUE=
+  DX_COND_doc_FALSE='#'
+else
+  DX_COND_doc_TRUE='#'
+  DX_COND_doc_FALSE=
+fi
+
+if test "$DX_FLAG_doc" = 1; then
+    DX_ENV="$DX_ENV PERL_PATH='$DX_PERL'"
+
+    :
+else
+
+    :
+fi
+
+
+# Dot for graphics:
+
+
+
+    # Check whether --enable-doxygen-dot was given.
+if test "${enable_doxygen_dot+set}" = set; then :
+  enableval=$enable_doxygen_dot;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-dot requires doxygen-dot" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_dot=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-dot" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_dot=0
+
+
+
+fi
+
+if test "$DX_FLAG_dot" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dot", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOT="$DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOT=$ac_cv_path_DX_DOT
+if test -n "$DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOT" >&5
+$as_echo "$DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOT"; then
+  ac_pt_DX_DOT=$DX_DOT
+  # Extract the first word of "dot", so it can be a program name with args.
+set dummy dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOT="$ac_pt_DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOT=$ac_cv_path_ac_pt_DX_DOT
+if test -n "$ac_pt_DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOT" >&5
+$as_echo "$ac_pt_DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOT" = x; then
+    DX_DOT=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOT=$ac_pt_DX_DOT
+  fi
+else
+  DX_DOT="$ac_cv_path_DX_DOT"
+fi
+
+if test "$DX_FLAG_dot$DX_DOT" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will not generate graphics for doxygen documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will not generate graphics for doxygen documentation" >&2;}
+    DX_FLAG_dot=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_dot" = 1; then
+  DX_COND_dot_TRUE=
+  DX_COND_dot_FALSE='#'
+else
+  DX_COND_dot_TRUE='#'
+  DX_COND_dot_FALSE=
+fi
+
+if test "$DX_FLAG_dot" = 1; then
+    DX_ENV="$DX_ENV HAVE_DOT='YES'"
+
+             DX_ENV="$DX_ENV DOT_PATH='`expr ".$DX_DOT" : '\(\.\)[^/]*$' \| "x$DX_DOT" : 'x\(.*\)/[^/]*$'`'"
+
+    :
+else
+    DX_ENV="$DX_ENV HAVE_DOT='NO'"
+
+    :
+fi
+
+
+# Man pages generation:
+
+
+
+    # Check whether --enable-doxygen-man was given.
+if test "${enable_doxygen_man+set}" = set; then :
+  enableval=$enable_doxygen_man;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_man=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-man requires doxygen-man" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_man=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-man" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_man=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_man=0
+
+
+
+fi
+
+if test "$DX_FLAG_man" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_man" = 1; then
+  DX_COND_man_TRUE=
+  DX_COND_man_FALSE='#'
+else
+  DX_COND_man_TRUE='#'
+  DX_COND_man_FALSE=
+fi
+
+if test "$DX_FLAG_man" = 1; then
+    DX_ENV="$DX_ENV GENERATE_MAN='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_MAN='NO'"
+
+    :
+fi
+
+
+# RTF file generation:
+
+
+
+    # Check whether --enable-doxygen-rtf was given.
+if test "${enable_doxygen_rtf+set}" = set; then :
+  enableval=$enable_doxygen_rtf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_rtf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-rtf requires doxygen-rtf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_rtf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-rtf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_rtf=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_rtf=0
+
+
+
+fi
+
+if test "$DX_FLAG_rtf" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_rtf" = 1; then
+  DX_COND_rtf_TRUE=
+  DX_COND_rtf_FALSE='#'
+else
+  DX_COND_rtf_TRUE='#'
+  DX_COND_rtf_FALSE=
+fi
+
+if test "$DX_FLAG_rtf" = 1; then
+    DX_ENV="$DX_ENV GENERATE_RTF='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_RTF='NO'"
+
+    :
+fi
+
+
+# XML file generation:
+
+
+
+    # Check whether --enable-doxygen-xml was given.
+if test "${enable_doxygen_xml+set}" = set; then :
+  enableval=$enable_doxygen_xml;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_xml=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-xml requires doxygen-xml" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_xml=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-xml" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_xml=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_xml=0
+
+
+
+fi
+
+if test "$DX_FLAG_xml" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_xml" = 1; then
+  DX_COND_xml_TRUE=
+  DX_COND_xml_FALSE='#'
+else
+  DX_COND_xml_TRUE='#'
+  DX_COND_xml_FALSE=
+fi
+
+if test "$DX_FLAG_xml" = 1; then
+    DX_ENV="$DX_ENV GENERATE_XML='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_XML='NO'"
+
+    :
+fi
+
+
+# (Compressed) HTML help generation:
+
+
+
+    # Check whether --enable-doxygen-chm was given.
+if test "${enable_doxygen_chm+set}" = set; then :
+  enableval=$enable_doxygen_chm;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chm=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-chm requires doxygen-chm" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chm=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chm" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chm=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_chm=0
+
+
+
+fi
+
+if test "$DX_FLAG_chm" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}hhc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_HHC="$DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_HHC=$ac_cv_path_DX_HHC
+if test -n "$DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_HHC" >&5
+$as_echo "$DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_HHC"; then
+  ac_pt_DX_HHC=$DX_HHC
+  # Extract the first word of "hhc", so it can be a program name with args.
+set dummy hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_HHC="$ac_pt_DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_HHC=$ac_cv_path_ac_pt_DX_HHC
+if test -n "$ac_pt_DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_HHC" >&5
+$as_echo "$ac_pt_DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_HHC" = x; then
+    DX_HHC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_HHC=$ac_pt_DX_HHC
+  fi
+else
+  DX_HHC="$ac_cv_path_DX_HHC"
+fi
+
+if test "$DX_FLAG_chm$DX_HHC" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&5
+$as_echo "$as_me: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&2;}
+    DX_FLAG_chm=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_chm" = 1; then
+  DX_COND_chm_TRUE=
+  DX_COND_chm_FALSE='#'
+else
+  DX_COND_chm_TRUE='#'
+  DX_COND_chm_FALSE=
+fi
+
+if test "$DX_FLAG_chm" = 1; then
+    DX_ENV="$DX_ENV HHC_PATH='$DX_HHC'"
+
+             DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+             DX_ENV="$DX_ENV GENERATE_HTMLHELP='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_HTMLHELP='NO'"
+
+    :
+fi
+
+
+# Seperate CHI file generation.
+
+
+
+    # Check whether --enable-doxygen-chi was given.
+if test "${enable_doxygen_chi+set}" = set; then :
+  enableval=$enable_doxygen_chi;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chi=1
+
+
+test "$DX_FLAG_chm" = "1" \
+|| as_fn_error $? "doxygen-chi requires doxygen-chi" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chi=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chi" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chi=0
+
+
+test "$DX_FLAG_chm" = "1" || DX_FLAG_chi=0
+
+
+
+fi
+
+if test "$DX_FLAG_chi" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_chi" = 1; then
+  DX_COND_chi_TRUE=
+  DX_COND_chi_FALSE='#'
+else
+  DX_COND_chi_TRUE='#'
+  DX_COND_chi_FALSE=
+fi
+
+if test "$DX_FLAG_chi" = 1; then
+    DX_ENV="$DX_ENV GENERATE_CHI='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_CHI='NO'"
+
+    :
+fi
+
+
+# Plain HTML pages generation:
+
+
+
+    # Check whether --enable-doxygen-html was given.
+if test "${enable_doxygen_html+set}" = set; then :
+  enableval=$enable_doxygen_html;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-html requires doxygen-html" "$LINENO" 5
+
+test "$DX_FLAG_chm" = "0" \
+|| as_fn_error $? "doxygen-html contradicts doxygen-html" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_html=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-html" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_html=0
+
+
+test "$DX_FLAG_chm" = "0" || DX_FLAG_html=0
+
+
+
+fi
+
+if test "$DX_FLAG_html" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_html" = 1; then
+  DX_COND_html_TRUE=
+  DX_COND_html_FALSE='#'
+else
+  DX_COND_html_TRUE='#'
+  DX_COND_html_FALSE=
+fi
+
+if test "$DX_FLAG_html" = 1; then
+    DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+    :
+else
+    test "$DX_FLAG_chm" = 1 || DX_ENV="$DX_ENV GENERATE_HTML='NO'"
+
+    :
+fi
+
+
+# PostScript file generation:
+
+
+
+    # Check whether --enable-doxygen-ps was given.
+if test "${enable_doxygen_ps+set}" = set; then :
+  enableval=$enable_doxygen_ps;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_ps=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-ps requires doxygen-ps" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_ps=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-ps" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_ps=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_ps=0
+
+
+
+fi
+
+if test "$DX_FLAG_ps" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}latex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_LATEX="$DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_LATEX=$ac_cv_path_DX_LATEX
+if test -n "$DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_LATEX" >&5
+$as_echo "$DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_LATEX"; then
+  ac_pt_DX_LATEX=$DX_LATEX
+  # Extract the first word of "latex", so it can be a program name with args.
+set dummy latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_LATEX="$ac_pt_DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_LATEX=$ac_cv_path_ac_pt_DX_LATEX
+if test -n "$ac_pt_DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_LATEX" >&5
+$as_echo "$ac_pt_DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_LATEX" = x; then
+    DX_LATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_LATEX=$ac_pt_DX_LATEX
+  fi
+else
+  DX_LATEX="$ac_cv_path_DX_LATEX"
+fi
+
+if test "$DX_FLAG_ps$DX_LATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: latex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: latex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_ps$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dvips", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DVIPS="$DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DVIPS=$ac_cv_path_DX_DVIPS
+if test -n "$DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DVIPS" >&5
+$as_echo "$DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DVIPS"; then
+  ac_pt_DX_DVIPS=$DX_DVIPS
+  # Extract the first word of "dvips", so it can be a program name with args.
+set dummy dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DVIPS="$ac_pt_DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DVIPS=$ac_cv_path_ac_pt_DX_DVIPS
+if test -n "$ac_pt_DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DVIPS" >&5
+$as_echo "$ac_pt_DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DVIPS" = x; then
+    DX_DVIPS=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DVIPS=$ac_pt_DX_DVIPS
+  fi
+else
+  DX_DVIPS="$ac_cv_path_DX_DVIPS"
+fi
+
+if test "$DX_FLAG_ps$DX_DVIPS" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_ps$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_ps" = 1; then
+  DX_COND_ps_TRUE=
+  DX_COND_ps_FALSE='#'
+else
+  DX_COND_ps_TRUE='#'
+  DX_COND_ps_FALSE=
+fi
+
+if test "$DX_FLAG_ps" = 1; then
+
+    :
+else
+
+    :
+fi
+
+
+# PDF file generation:
+
+
+
+    # Check whether --enable-doxygen-pdf was given.
+if test "${enable_doxygen_pdf+set}" = set; then :
+  enableval=$enable_doxygen_pdf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-pdf requires doxygen-pdf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_pdf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-pdf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_pdf=0
+
+
+
+fi
+
+if test "$DX_FLAG_pdf" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PDFLATEX="$DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PDFLATEX=$ac_cv_path_DX_PDFLATEX
+if test -n "$DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PDFLATEX" >&5
+$as_echo "$DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PDFLATEX"; then
+  ac_pt_DX_PDFLATEX=$DX_PDFLATEX
+  # Extract the first word of "pdflatex", so it can be a program name with args.
+set dummy pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PDFLATEX="$ac_pt_DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PDFLATEX=$ac_cv_path_ac_pt_DX_PDFLATEX
+if test -n "$ac_pt_DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PDFLATEX" >&5
+$as_echo "$ac_pt_DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PDFLATEX" = x; then
+    DX_PDFLATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PDFLATEX=$ac_pt_DX_PDFLATEX
+  fi
+else
+  DX_PDFLATEX="$ac_cv_path_DX_PDFLATEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_PDFLATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_pdf$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_pdf" = 1; then
+  DX_COND_pdf_TRUE=
+  DX_COND_pdf_FALSE='#'
+else
+  DX_COND_pdf_TRUE='#'
+  DX_COND_pdf_FALSE=
+fi
+
+if test "$DX_FLAG_pdf" = 1; then
+
+    :
+else
+
+    :
+fi
+
+
+# LaTeX generation for PS and/or PDF:
+ if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then
+  DX_COND_latex_TRUE=
+  DX_COND_latex_FALSE='#'
+else
+  DX_COND_latex_TRUE='#'
+  DX_COND_latex_FALSE=
+fi
+
+if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then
+    DX_ENV="$DX_ENV GENERATE_LATEX='YES'"
+
+else
+    DX_ENV="$DX_ENV GENERATE_LATEX='NO'"
+
+fi
+
+# Paper size for PS and/or PDF:
+
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    DOXYGEN_PAPER_SIZE=""
+
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV="$DX_ENV PAPER_SIZE='$DOXYGEN_PAPER_SIZE'"
+
+;; #(
+*)
+    as_fn_error $? "unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'" "$LINENO" 5
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+#, DOXYFILE-PATH, [OUTPUT-DIR])
+
+#USE_HTAGS              = $(USE_HTAGS)
+
+######################################################################
+# pthread/Readline/NCurses (pthread needed by dim and boost)
+######################################################################
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Check for math library (some linux need this to compile cfitsio)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if ${ac_cv_lib_m_cos+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_cos=yes
+else
+  ac_cv_lib_m_cos=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+
+# Needed to compile dim
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case ${host_os} in
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+# Clang doesn't consider unrecognized options an error unless we specify
+# -Werror. We throw in some extra Clang-specific options to ensure that
+# this doesn't happen for GCC, which also accepts -Werror.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
+$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; }
+save_CFLAGS="$CFLAGS"
+ax_pthread_extra_flags="-Werror"
+CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void);
+int
+main ()
+{
+foo()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  ax_pthread_extra_flags=
+                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS="$save_CFLAGS"
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $attr; return attr /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  attr_name=$attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        done
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+$as_echo "$attr_name" >&6; }
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $attr_name
+_ACEOF
+
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        flag=no
+        case ${host_os} in
+            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+            osf* | hpux*) flag="-D_REENTRANT";;
+            solaris*)
+            if test "$GCC" = "yes"; then
+                flag="-D_REENTRANT"
+            else
+                # TODO: What about Clang on Solaris?
+                flag="-mt -D_REENTRANT"
+            fi
+            ;;
+        esac
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
+$as_echo "$flag" >&6; }
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+  ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: compile with *_r variant
+        if test "x$GCC" != xyes; then
+            case $host_os in
+                aix*)
+                case "x/$CC" in #(
+  x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
+    #handle absolute path differently from PATH based program lookup
+                   case "x$CC" in #(
+  x/*) :
+    if as_fn_executable_p ${CC}_r; then :
+  PTHREAD_CC="${CC}_r"
+fi ;; #(
+  *) :
+    for ac_prog in ${CC}_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+ ;;
+esac ;; #(
+  *) :
+     ;;
+esac
+                ;;
+            esac
+        fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+
+        :
+else
+        ax_pthread_ok=no
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+CPPFLAGS+=" "$PTHREAD_CFLAGS
+LDFLAGS+=" "$PTHREAD_CFLAGS
+
+
+# Needed to compile FACT++
+
+
+
+
+
+# Check whether --with-readline was given.
+if test "${with_readline+set}" = set; then :
+  withval=$with_readline; if test "x$withval" = "xno" ; then
+      without_readline=yes
+    elif test "x$withval" != "xyes" ; then
+      with_arg="$withval/include:-L$withval/lib $withval/include/readline:-L$withval/lib"
+    fi
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline.h" >&5
+$as_echo_n "checking for readline.h... " >&6; }
+
+  if test "x$without_readline" != "xyes"; then
+    for i in $with_arg \
+	     /usr/include: \
+	     /usr/local/include:-L/usr/local/lib \
+             /usr/freeware/include:-L/usr/freeware/lib32 \
+	     /usr/pkg/include:-L/usr/pkg/lib \
+	     /sw/include:-L/sw/lib \
+	     /cw/include:-L/cw/lib \
+	     /net/caladium/usr/people/piotr.nba/temp/pkg/include:-L/net/caladium/usr/people/piotr.nba/temp/pkg/lib \
+	     /boot/home/config/include:-L/boot/home/config/lib; do
+
+      incl=`echo "$i" | sed 's/:.*//'`
+      lib=`echo "$i" | sed 's/.*://'`
+
+      if test -f $incl/readline/readline.h ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $incl/readline/readline.h" >&5
+$as_echo "$incl/readline/readline.h" >&6; }
+        READLINE_LIBS="$lib -lreadline"
+	if test "$incl" != "/usr/include"; then
+	  READLINE_INCLUDES="-I$incl/readline -I$incl"
+	else
+	  READLINE_INCLUDES="-I$incl/readline"
+	fi
+
+$as_echo "#define HAVE_READLINE 1" >>confdefs.h
+
+        have_readline=yes
+        break
+      elif test -f $incl/readline.h -a "x$incl" != "x/usr/include"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $incl/readline.h" >&5
+$as_echo "$incl/readline.h" >&6; }
+        READLINE_LIBS="$lib -lreadline"
+        READLINE_INCLUDES="-I$incl"
+
+$as_echo "#define HAVE_READLINE 1" >>confdefs.h
+
+        have_readline=yes
+        break
+      fi
+    done
+  fi
+
+  if test "x$have_readline" != "xyes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+  fi
+
+if test "x$have_readline" != "xyes"; then :
+  as_fn_error $? "The readline library is not properly installed." "$LINENO" 5
+fi
+
+CPPFLAGS+=" "$READLINE_INCLUDES
+LDFLAGS+=" "$READLINE_LIBS
+
+# Needed to compile FACT++
+for ac_header in panel.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "panel.h" "ac_cv_header_panel_h" "$ac_includes_default"
+if test "x$ac_cv_header_panel_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PANEL_H 1
+_ACEOF
+
+else
+  as_fn_error $? "ncurses header not found" "$LINENO" 5
+fi
+
+done
+
+
+# Needed to compile FACT++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for update_panels in -lpanel" >&5
+$as_echo_n "checking for update_panels in -lpanel... " >&6; }
+if ${ac_cv_lib_panel_update_panels+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpanel  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char update_panels ();
+int
+main ()
+{
+return update_panels ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_panel_update_panels=yes
+else
+  ac_cv_lib_panel_update_panels=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_panel_update_panels" >&5
+$as_echo "$ac_cv_lib_panel_update_panels" >&6; }
+if test "x$ac_cv_lib_panel_update_panels" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPANEL 1
+_ACEOF
+
+  LIBS="-lpanel $LIBS"
+
+else
+  as_fn_error $? "ncurses panel library not found" "$LINENO" 5
+fi
+
+
+# Xm.h (lesstif/motif, needed to compile did)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libXp is available" >&5
+$as_echo_n "checking whether libXp is available... " >&6; }
+if ${lt_cv_libxp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+
+int
+main ()
+{
+
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_libxp=yes
+else
+  lt_cv_libxp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_libxp" >&5
+$as_echo "$lt_cv_libxp" >&6; }
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+ if test "$lt_cv_libxp" = "yes"; then
+  HAS_LIBXP_TRUE=
+  HAS_LIBXP_FALSE='#'
+else
+  HAS_LIBXP_TRUE='#'
+  HAS_LIBXP_FALSE=
+fi
+
+
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+
+
+
+
+
+motif_includes=
+motif_libraries=
+
+
+
+# Check whether --with-motif-includes was given.
+if test "${with_motif_includes+set}" = set; then :
+  withval=$with_motif_includes; motif_includes="$withval"
+fi
+
+
+
+# Check whether --with-motif-libraries was given.
+if test "${with_motif_libraries+set}" = set; then :
+  withval=$with_motif_libraries; motif_libraries="$withval"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Motif" >&5
+$as_echo_n "checking for Motif... " >&6; }
+
+#
+#
+# Search the include files.
+#
+if test "$motif_includes" = ""; then
+if ${ac_cv_motif_includes+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_includes="none"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <Xm/Xm.h>
+int
+main ()
+{
+int a;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+# Xm/Xm.h is in the standard search path.
+ac_cv_motif_includes=
+
+else
+
+# Xm/Xm.h is not in the standard search path.
+# Locate it and put its directory in `motif_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/include is used for fink under OSX
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+           /usr/include/Motif2.1 /usr/include/Motif2.0 /usr/include/Motif1.2  \
+           /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 \
+           /usr/X11/include /usr/X11R6/include /usr/X11R5/include \
+           /usr/dt/include /usr/openwin/include \
+           /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+           "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+           "${prefix}"/include/* /usr/include/* /usr/local/include/* \
+           /sw/include; do
+if test -f "$dir/Xm/Xm.h"; then
+ac_cv_motif_includes="$dir"
+break
+fi
+done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+
+fi
+
+motif_includes="$ac_cv_motif_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$motif_libraries" = ""; then
+if ${ac_cv_motif_libraries+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_libraries="none"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <Xm/Xm.h>
+int
+main ()
+{
+XtToolkitInitialize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+# libXm.a is in the standard search path.
+ac_cv_motif_libraries=
+
+else
+
+# libXm.a is not in the standard search path.
+# Locate it and put its directory in `motif_libraries'
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/lesstif is used on Linux (Lesstif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/lib is used under fink on OSX
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+           /usr/lib/Motif2.1 /usr/lib/Motif2.0 /usr/lib/Motif1.2 \
+           /usr/lib/X11 /usr/lib/X11R6 /usr/lib/X11R5 \
+           /usr/X11/lib /usr/X11R6/lib /usr/X11R5/lib \
+           /usr/dt/lib /usr/openwin/lib \
+           /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+           /usr/lesstif*/lib /usr/lib/Lesstif* \
+           "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+           "${prefix}"/lib/* /usr/lib/* /usr/local/lib/* \
+           /sw/lib; do
+if test -d "$dir" && test "`ls $dir/libXm.* 2> /dev/null`" != ""; then
+ac_cv_motif_libraries="$dir"
+break
+fi
+done
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+
+fi
+
+#
+motif_libraries="$ac_cv_motif_libraries"
+fi
+#
+# Provide an easier way to link
+#
+if test "$motif_includes" = "none" -o "$motif_libraries" = "none"; then
+        with_motif="no"
+else
+        with_motif="yes"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libXp is available" >&5
+$as_echo_n "checking whether libXp is available... " >&6; }
+if ${lt_cv_libxp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+
+int
+main ()
+{
+
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_libxp=yes
+else
+  lt_cv_libxp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_libxp" >&5
+$as_echo "$lt_cv_libxp" >&6; }
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+ if test "$lt_cv_libxp" = "yes"; then
+  HAS_LIBXP_TRUE=
+  HAS_LIBXP_FALSE='#'
+else
+  HAS_LIBXP_TRUE='#'
+  HAS_LIBXP_FALSE=
+fi
+
+
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+
+if test "$LT_HAVE_XP" = "yes"; then
+        XPLIB="-lXp -lXext"
+else
+        XPLIB=""
+fi
+
+if test "$with_motif" != "no"; then
+        if test "$motif_libraries" = ""; then
+                MOTIF_LDFLAGS="-lXm $XPLIB"
+                MOTIF_LIBS="-lXm $XPLIB"
+        else
+                MOTIF_LDFLAGS="-L$motif_libraries -lXm $XPLIB"
+                MOTIF_LIBS="-L$motif_libraries -lXm $XPLIB"
+        fi
+        if test "$motif_includes" != ""; then
+                MOTIF_INCL="-I$motif_includes"
+                MOTIF_CFLAGS="-I$motif_includes"
+        fi
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#       AC_DEFINE(HAVE_MOTIF)
+else
+        with_motif="no"
+fi
+#
+
+
+
+
+#
+#
+#
+motif_libraries_result="$motif_libraries"
+motif_includes_result="$motif_includes"
+test "$motif_libraries_result" = "" && motif_libraries_result="in default path"
+test "$motif_includes_result" = "" && motif_includes_result="in default path"
+test "$motif_libraries_result" = "none" && motif_libraries_result="(none)"
+test "$motif_includes_result" = "none" && motif_includes_result="(none)"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $motif_libraries_result, headers $motif_includes_result" >&5
+$as_echo "libraries $motif_libraries_result, headers $motif_includes_result" >&6; }
+
+
+CPPFLAGS+=" "$MOTIF_INCL
+LDFLAGS+=" "$MOTIF_LDFLAGS
+
+if test -z "$HAS_LIBXP_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Motif/lesstif not found!" >&5
+$as_echo "$as_me: WARNING:  Motif/lesstif not found!" >&2;}
+
+fi
+
+# Required in did.c
+LDFLAGS+=" -lXt -lX11 "
+
+# Check for zlib and exit with error if not found (defines HAVE_LIBZ)
+
+
+
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then :
+  withval=$with_zlib; with_zlib=$withval
+if test "${with_zlib}" != yes; then
+	zlib_include="$withval/include"
+	zlib_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-zlib-include was given.
+if test "${with_zlib_include+set}" = set; then :
+  withval=$with_zlib_include; zlib_include="$withval"
+fi
+
+
+
+# Check whether --with-zlib-libdir was given.
+if test "${with_zlib_libdir+set}" = set; then :
+  withval=$with_zlib_libdir; zlib_libdir="$withval"
+fi
+
+
+if test "${with_zlib}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${zlib_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${zlib_libdir}"
+	fi
+	if test "${zlib_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${zlib_include}"
+		CFLAGS="$CFLAGS -I${zlib_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5
+$as_echo_n "checking for inflateEnd in -lz... " >&6; }
+if ${ac_cv_lib_z_inflateEnd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inflateEnd ();
+int
+main ()
+{
+return inflateEnd ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_z_inflateEnd=yes
+else
+  ac_cv_lib_z_inflateEnd=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5
+$as_echo "$ac_cv_lib_z_inflateEnd" >&6; }
+if test "x$ac_cv_lib_z_inflateEnd" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+
+  LIBS="-lz $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_ZLIB=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_ZLIB=yes
+
+		$as_echo "#define HAVE_PKG_zlib 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Check for GL and GLU needed for the raw event viewer
+
+
+
+# Check whether --with-GL was given.
+if test "${with_GL+set}" = set; then :
+  withval=$with_GL; with_GL=$withval
+if test "${with_GL}" != yes; then
+	GL_include="$withval/include"
+	GL_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-GL-include was given.
+if test "${with_GL_include+set}" = set; then :
+  withval=$with_GL_include; GL_include="$withval"
+fi
+
+
+
+# Check whether --with-GL-libdir was given.
+if test "${with_GL_libdir+set}" = set; then :
+  withval=$with_GL_libdir; GL_libdir="$withval"
+fi
+
+
+if test "${with_GL}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${GL_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${GL_libdir}"
+	fi
+	if test "${GL_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${GL_include}"
+		CFLAGS="$CFLAGS -I${GL_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
+if test "x$ac_cv_header_GL_gl_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glLoadIdentity in -lGL" >&5
+$as_echo_n "checking for glLoadIdentity in -lGL... " >&6; }
+if ${ac_cv_lib_GL_glLoadIdentity+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char glLoadIdentity ();
+int
+main ()
+{
+return glLoadIdentity ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GL_glLoadIdentity=yes
+else
+  ac_cv_lib_GL_glLoadIdentity=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GL_glLoadIdentity" >&5
+$as_echo "$ac_cv_lib_GL_glLoadIdentity" >&6; }
+if test "x$ac_cv_lib_GL_glLoadIdentity" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGL 1
+_ACEOF
+
+  LIBS="-lGL $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_GL=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_GL=yes
+
+		$as_echo "#define HAVE_PKG_GL 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+
+
+# Check whether --with-GLU was given.
+if test "${with_GLU+set}" = set; then :
+  withval=$with_GLU; with_GLU=$withval
+if test "${with_GLU}" != yes; then
+	GLU_include="$withval/include"
+	GLU_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-GLU-include was given.
+if test "${with_GLU_include+set}" = set; then :
+  withval=$with_GLU_include; GLU_include="$withval"
+fi
+
+
+
+# Check whether --with-GLU-libdir was given.
+if test "${with_GLU_libdir+set}" = set; then :
+  withval=$with_GLU_libdir; GLU_libdir="$withval"
+fi
+
+
+if test "${with_GLU}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${GLU_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${GLU_libdir}"
+	fi
+	if test "${GLU_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${GLU_include}"
+		CFLAGS="$CFLAGS -I${GLU_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "GL/glu.h" "ac_cv_header_GL_glu_h" "$ac_includes_default"
+if test "x$ac_cv_header_GL_glu_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluNewTess in -lGLU" >&5
+$as_echo_n "checking for gluNewTess in -lGLU... " >&6; }
+if ${ac_cv_lib_GLU_gluNewTess+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGLU  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gluNewTess ();
+int
+main ()
+{
+return gluNewTess ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GLU_gluNewTess=yes
+else
+  ac_cv_lib_GLU_gluNewTess=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluNewTess" >&5
+$as_echo "$ac_cv_lib_GLU_gluNewTess" >&6; }
+if test "x$ac_cv_lib_GLU_gluNewTess" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGLU 1
+_ACEOF
+
+  LIBS="-lGLU $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_GLU=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_GLU=yes
+
+		$as_echo "#define HAVE_PKG_GLU 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Check for libnova
+
+
+
+# Check whether --with-nova was given.
+if test "${with_nova+set}" = set; then :
+  withval=$with_nova; with_nova=$withval
+if test "${with_nova}" != yes; then
+	nova_include="$withval/include"
+	nova_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-nova-include was given.
+if test "${with_nova_include+set}" = set; then :
+  withval=$with_nova_include; nova_include="$withval"
+fi
+
+
+
+# Check whether --with-nova-libdir was given.
+if test "${with_nova_libdir+set}" = set; then :
+  withval=$with_nova_libdir; nova_libdir="$withval"
+fi
+
+
+if test "${with_nova}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${nova_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${nova_libdir}"
+	fi
+	if test "${nova_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${nova_include}"
+		CFLAGS="$CFLAGS -I${nova_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "libnova/julian_day.h" "ac_cv_header_libnova_julian_day_h" "$ac_includes_default"
+if test "x$ac_cv_header_libnova_julian_day_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ln_get_julian_from_sys in -lnova" >&5
+$as_echo_n "checking for ln_get_julian_from_sys in -lnova... " >&6; }
+if ${ac_cv_lib_nova_ln_get_julian_from_sys+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnova  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ln_get_julian_from_sys ();
+int
+main ()
+{
+return ln_get_julian_from_sys ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nova_ln_get_julian_from_sys=yes
+else
+  ac_cv_lib_nova_ln_get_julian_from_sys=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nova_ln_get_julian_from_sys" >&5
+$as_echo "$ac_cv_lib_nova_ln_get_julian_from_sys" >&6; }
+if test "x$ac_cv_lib_nova_ln_get_julian_from_sys" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNOVA 1
+_ACEOF
+
+  LIBS="-lnova $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_NOVA=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_NOVA=yes
+
+		$as_echo "#define HAVE_PKG_nova 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Taken from http://code.google.com/p/autoconf-gl-macros/
+#AX_CHECK_GL
+#AX_CHECK_GLU
+#AX_CHECK_GLUT
+
+# Needed to compile FACT++
+
+
+
+# Check whether --with-cfitsio was given.
+if test "${with_cfitsio+set}" = set; then :
+  withval=$with_cfitsio; with_cfitsio=$withval
+if test "${with_cfitsio}" != yes; then
+	cfitsio_include="$withval/include"
+	cfitsio_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-cfitsio-include was given.
+if test "${with_cfitsio_include+set}" = set; then :
+  withval=$with_cfitsio_include; cfitsio_include="$withval"
+fi
+
+
+
+# Check whether --with-cfitsio-libdir was given.
+if test "${with_cfitsio_libdir+set}" = set; then :
+  withval=$with_cfitsio_libdir; cfitsio_libdir="$withval"
+fi
+
+
+if test "${with_cfitsio}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${cfitsio_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${cfitsio_libdir}"
+	fi
+	if test "${cfitsio_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${cfitsio_include}"
+		CFLAGS="$CFLAGS -I${cfitsio_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "fitsio.h" "ac_cv_header_fitsio_h" "$ac_includes_default"
+if test "x$ac_cv_header_fitsio_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffpss in -lcfitsio" >&5
+$as_echo_n "checking for ffpss in -lcfitsio... " >&6; }
+if ${ac_cv_lib_cfitsio_ffpss+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcfitsio  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ffpss ();
+int
+main ()
+{
+return ffpss ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_cfitsio_ffpss=yes
+else
+  ac_cv_lib_cfitsio_ffpss=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cfitsio_ffpss" >&5
+$as_echo "$ac_cv_lib_cfitsio_ffpss" >&6; }
+if test "x$ac_cv_lib_cfitsio_ffpss" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBCFITSIO 1
+_ACEOF
+
+  LIBS="-lcfitsio $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_CFITSIO=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_CFITSIO=yes
+
+		$as_echo "#define HAVE_PKG_cfitsio 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+#AC_CHECK_HEADERS([fitsio.h],,AC_MSG_ERROR([cfitsio headers not found]))
+#AC_CHECK_LIB([cfitsio], main,,AC_MSG_ERROR([cfitsio library not found]))
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+# Needed to compile FACT++
+
+
+
+
+# Check whether --with-ccfits was given.
+if test "${with_ccfits+set}" = set; then :
+  withval=$with_ccfits; with_ccfits=$withval
+if test "${with_ccfits}" != yes; then
+	ccfits_include="$withval/include"
+	ccfits_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-ccfits-include was given.
+if test "${with_ccfits_include+set}" = set; then :
+  withval=$with_ccfits_include; ccfits_include="$withval"
+fi
+
+
+
+# Check whether --with-ccfits-libdir was given.
+if test "${with_ccfits_libdir+set}" = set; then :
+  withval=$with_ccfits_libdir; ccfits_libdir="$withval"
+fi
+
+
+if test "${with_ccfits}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${ccfits_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${ccfits_libdir}"
+	fi
+	if test "${ccfits_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${ccfits_include}"
+		CFLAGS="$CFLAGS -I${ccfits_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "CCfits/CCfits" "ac_cv_header_CCfits_CCfits" "$ac_includes_default"
+if test "x$ac_cv_header_CCfits_CCfits" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lCCfits" >&5
+$as_echo_n "checking for main in -lCCfits... " >&6; }
+if ${ac_cv_lib_CCfits_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lCCfits  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_CCfits_main=yes
+else
+  ac_cv_lib_CCfits_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_CCfits_main" >&5
+$as_echo "$ac_cv_lib_CCfits_main" >&6; }
+if test "x$ac_cv_lib_CCfits_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBCCFITS 1
+_ACEOF
+
+  LIBS="-lCCfits $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_CCFITS=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_CCFITS=yes
+
+		$as_echo "#define HAVE_PKG_ccfits 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+#AC_CHECK_HEADERS([CCfits/CCfits],,
+#   AC_MSG_ERROR(CCfits headers not found))
+#AC_CHECK_LIB(CCfits, main,,
+#   AC_MSG_ERROR(CCfits library not found))
+
+######################################################################
+# MySQL(++) SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+
+	MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /sw/include/mysql"
+
+# Check whether --with-mysql-include was given.
+if test "${with_mysql_include+set}" = set; then :
+  withval=$with_mysql_include; MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql"
+fi
+
+
+	#
+	# Look for MySQL C API headers
+	#
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL include directory" >&5
+$as_echo_n "checking for MySQL include directory... " >&6; }
+	MYSQL_C_INC_DIR=
+	for m in $MYSQL_inc_check
+	do
+		if test -d "$m" && test -f "$m/mysql.h"
+		then
+			MYSQL_C_INC_DIR=$m
+			break
+		fi
+	done
+
+	if test -z "$MYSQL_C_INC_DIR"
+	then
+		as_fn_error $? "Didn't find the MySQL include dir in '$MYSQL_inc_check'" "$LINENO" 5
+	fi
+
+	case "$MYSQL_C_INC_DIR" in
+		/* ) ;;
+		* )  as_fn_error $? "The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path." "$LINENO" 5 ;;
+	esac
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MYSQL_C_INC_DIR" >&5
+$as_echo "$MYSQL_C_INC_DIR" >&6; }
+
+	CPPFLAGS="$CPPFLAGS -I${MYSQL_C_INC_DIR}"
+
+
+
+
+
+# Check whether --with-mysqlpp was given.
+if test "${with_mysqlpp+set}" = set; then :
+  withval=$with_mysqlpp; MYSQLPP_lib_check="$with_mysqlpp/lib64 $with_mysqlpp/lib $with_mysqlpp/lib64/mysql++ $with_mysqlpp/lib/mysql++"
+		  MYSQLPP_inc_check="$with_mysqlpp/include $with_mysqlpp/include/mysql++"
+else
+  MYSQLPP_lib_check="/usr/local/mysql++/lib64 /usr/local/mysql++/lib /usr/local/lib64/mysql++ /usr/local/lib/mysql++ /opt/mysql++/lib64 /opt/mysql++/lib /usr/lib64/mysql++ /usr/lib/mysql++ /usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib"
+		  MYSQLPP_inc_check="/usr/local/mysql++/include /usr/local/include/mysql++ /opt/mysql++/include /usr/local/include/mysql++ /usr/local/include /usr/include/mysql++ /usr/include"
+fi
+
+
+# Check whether --with-mysqlpp-lib was given.
+if test "${with_mysqlpp_lib+set}" = set; then :
+  withval=$with_mysqlpp_lib; MYSQLPP_lib_check="$with_mysqlpp_lib $with_mysqlpp_lib/lib64 $with_mysqlpp_lib/lib $with_mysqlpp_lib/lib64/mysql $with_mysqlpp_lib/lib/mysql"
+fi
+
+
+# Check whether --with-mysqlpp-include was given.
+if test "${with_mysqlpp_include+set}" = set; then :
+  withval=$with_mysqlpp_include; MYSQLPP_inc_check="$with_mysqlpp_include $with_mysqlpp_include/include $with_mysqlpp_include/include/mysql"
+fi
+
+
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL++ library location" >&5
+$as_echo_n "checking for MySQL++ library location... " >&6; }
+if ${ac_cv_mysqlpp_lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		for dir in $MYSQLPP_lib_check
+		do
+			if test -d "$dir" && \
+				( test -f "$dir/libmysqlpp.so" ||
+				  test -f "$dir/libmysqlpp.a" )
+			then
+				ac_cv_mysqlpp_lib=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_lib"
+		then
+			as_fn_error $? "Didn't find the MySQL++ library dir in '$MYSQLPP_lib_check'" "$LINENO" 5
+		fi
+
+		case "$ac_cv_mysqlpp_lib" in
+			/* ) ;;
+			* )  as_fn_error $? "The MySQL++ library directory ($ac_cv_mysqlpp_lib) must be an absolute path." "$LINENO" 5 ;;
+		esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mysqlpp_lib" >&5
+$as_echo "$ac_cv_mysqlpp_lib" >&6; }
+	MYSQLPP_LIB_DIR=$ac_cv_mysqlpp_lib
+
+
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL++ include path" >&5
+$as_echo_n "checking for MySQL++ include path... " >&6; }
+if ${ac_cv_mysqlpp_inc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		for dir in $MYSQLPP_inc_check
+		do
+			if test -d "$dir" && test -f "$dir/mysql++.h"
+			then
+				ac_cv_mysqlpp_inc=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_inc"
+		then
+			as_fn_error $? "Didn't find the MySQL++ header dir in '$MYSQLPP_inc_check'" "$LINENO" 5
+		fi
+
+		case "$ac_cv_mysqlpp_inc" in
+			/* ) ;;
+			* )  as_fn_error $? "The MySQL++ header directory ($ac_cv_mysqlpp_inc) must be an absolute path." "$LINENO" 5 ;;
+		esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mysqlpp_inc" >&5
+$as_echo "$ac_cv_mysqlpp_inc" >&6; }
+	MYSQLPP_INC_DIR=$ac_cv_mysqlpp_inc
+
+
+					case "$ac_cv_mysqlpp_lib" in
+	  /usr/lib) ;;
+	  *) LDFLAGS="$LDFLAGS -L${ac_cv_mysqlpp_lib}" ;;
+	esac
+	CPPFLAGS="$CPPFLAGS -I${ac_cv_mysqlpp_inc} -I${MYSQL_C_INC_DIR}"
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can build MySQL++ programs" >&5
+$as_echo_n "checking that we can build MySQL++ programs... " >&6; }
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <mysql++.h>
+int
+main ()
+{
+mysqlpp::Connection c(false)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  as_fn_error $? "no" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+LDFLAGS+=" -lmysqlpp"
+
+######################################################################
+# BOOST SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+
+
+# Check whether --with-boost was given.
+if test "${with_boost+set}" = set; then :
+  withval=$with_boost;
+    if test "$withval" = "no"; then
+        want_boost="no"
+    elif test "$withval" = "yes"; then
+        want_boost="yes"
+        ac_boost_path=""
+    else
+        want_boost="yes"
+        ac_boost_path="$withval"
+    fi
+
+else
+  want_boost="yes"
+fi
+
+
+
+
+# Check whether --with-boost-libdir was given.
+if test "${with_boost_libdir+set}" = set; then :
+  withval=$with_boost_libdir;
+        if test -d "$withval"
+        then
+                ac_boost_lib_path="$withval"
+        else
+                as_fn_error $? "--with-boost-libdir expected directory name" "$LINENO" 5
+        fi
+
+else
+  ac_boost_lib_path=""
+
+fi
+
+
+if test "x$want_boost" = "xyes"; then
+    boost_lib_version_req=1.40
+    boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([0-9]*\.[0-9]*\)'`
+    boost_lib_version_req_major=`expr $boost_lib_version_req : '\([0-9]*\)'`
+    boost_lib_version_req_minor=`expr $boost_lib_version_req : '[0-9]*\.\([0-9]*\)'`
+    boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+    if test "x$boost_lib_version_req_sub_minor" = "x" ; then
+        boost_lib_version_req_sub_minor="0"
+        fi
+    WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= $boost_lib_version_req" >&5
+$as_echo_n "checking for boostlib >= $boost_lib_version_req... " >&6; }
+    succeeded=no
+
+                        libsubdirs="lib"
+    ax_arch=`uname -m`
+    case $ax_arch in
+      x86_64)
+        libsubdirs="lib64 libx32 lib lib64"
+        ;;
+      ppc64|s390x|sparc64|aarch64|ppc64le)
+        libsubdirs="lib64 lib lib64 ppc64le"
+        ;;
+    esac
+
+
+    libsubdirs="lib/${host_cpu}-${host_os} $libsubdirs"
+
+    case ${host_cpu} in
+      i?86)
+        libsubdirs="lib/i386-${host_os} $libsubdirs"
+        ;;
+    esac
+
+                if test "$ac_boost_path" != ""; then
+        BOOST_CPPFLAGS="-I$ac_boost_path/include"
+        for ac_boost_path_tmp in $libsubdirs; do
+                if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
+                        BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
+                        break
+                fi
+        done
+    elif test "$cross_compiling" != yes; then
+        for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
+            if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
+                BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
+                break;
+            fi
+        done
+    fi
+
+            if test "$ac_boost_lib_path" != ""; then
+       BOOST_LDFLAGS="-L$ac_boost_lib_path"
+    fi
+
+    CPPFLAGS_SAVED="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+    export CPPFLAGS
+
+    LDFLAGS_SAVED="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+    export LDFLAGS
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+    #include <boost/version.hpp>
+
+int
+main ()
+{
+
+    #if BOOST_VERSION >= $WANT_BOOST_VERSION
+    // Everything is okay
+    #else
+    #  error Boost version is too old
+    #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    succeeded=yes
+    found_system=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+            if test "x$succeeded" != "xyes"; then
+        CPPFLAGS="$CPPFLAGS_SAVED"
+        LDFLAGS="$LDFLAGS_SAVED"
+        BOOST_CPPFLAGS=
+        BOOST_LDFLAGS=
+        _version=0
+        if test "$ac_boost_path" != ""; then
+            if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                    _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                    V_CHECK=`expr $_version_tmp \> $_version`
+                    if test "$V_CHECK" = "1" ; then
+                        _version=$_version_tmp
+                    fi
+                    VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                    BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
+                done
+                                if test -z "$BOOST_CPPFLAGS"; then
+                    if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
+                        BOOST_CPPFLAGS="-I$ac_boost_path"
+                    fi
+                fi
+            fi
+        else
+            if test "$cross_compiling" != yes; then
+                for ac_boost_path in /usr /usr/local /opt /opt/local ; do
+                    if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                        for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                            _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                            V_CHECK=`expr $_version_tmp \> $_version`
+                            if test "$V_CHECK" = "1" ; then
+                                _version=$_version_tmp
+                                best_path=$ac_boost_path
+                            fi
+                        done
+                    fi
+                done
+
+                VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
+                if test "$ac_boost_lib_path" = ""; then
+                    for libsubdir in $libsubdirs ; do
+                        if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                    done
+                    BOOST_LDFLAGS="-L$best_path/$libsubdir"
+                fi
+            fi
+
+            if test "x$BOOST_ROOT" != "x"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
+                    version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
+                    stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
+                        stage_version_shorten=`expr $stage_version : '\([0-9]*\.[0-9]*\)'`
+                    V_CHECK=`expr $stage_version_shorten \>\= $_version`
+                    if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: We will use a staged boost library from $BOOST_ROOT" >&5
+$as_echo "$as_me: We will use a staged boost library from $BOOST_ROOT" >&6;}
+                        BOOST_CPPFLAGS="-I$BOOST_ROOT"
+                        BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
+                    fi
+                fi
+            fi
+        fi
+
+        CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+        export CPPFLAGS
+        LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+        export LDFLAGS
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+        #include <boost/version.hpp>
+
+int
+main ()
+{
+
+        #if BOOST_VERSION >= $WANT_BOOST_VERSION
+        // Everything is okay
+        #else
+        #  error Boost version is too old
+        #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        succeeded=yes
+        found_system=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    fi
+
+    if test "$succeeded" != "yes" ; then
+        if test "$_version" = "0" ; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&5
+$as_echo "$as_me: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&6;}
+        else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Your boost libraries seems to old (version $_version)." >&5
+$as_echo "$as_me: Your boost libraries seems to old (version $_version)." >&6;}
+        fi
+        # execute ACTION-IF-NOT-FOUND (if present):
+        as_fn_error $? "The boost C++ libraries (>=1.40) are not properly installed." "$LINENO" 5
+
+    else
+
+
+
+$as_echo "#define HAVE_BOOST /**/" >>confdefs.h
+
+        # execute ACTION-IF-FOUND (if present):
+        :
+    fi
+
+    CPPFLAGS="$CPPFLAGS_SAVED"
+    LDFLAGS="$LDFLAGS_SAVED"
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BOOST_CPPFLAGS" >&5
+$as_echo_n "checking for BOOST_CPPFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOST_CPPFLAGS" >&5
+$as_echo "$BOOST_CPPFLAGS" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BOOST_LDFLAGS" >&5
+$as_echo_n "checking for BOOST_LDFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOST_LDFLAGS" >&5
+$as_echo "$BOOST_LDFLAGS" >&6; }
+
+# Keep this order AX_BOOST_FILESYSTEM needs AX_BOOST_SYSTEM_LIB
+
+
+# Check whether --with-boost-system was given.
+if test "${with_boost_system+set}" = set; then :
+  withval=$with_boost_system;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_system_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_system_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::System library is available" >&5
+$as_echo_n "checking whether the Boost::System library is available... " >&6; }
+if ${ax_cv_boost_system+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/system/error_code.hpp>
+int
+main ()
+{
+boost::system::system_category
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_system=yes
+else
+  ax_cv_boost_system=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_system" >&5
+$as_echo "$ax_cv_boost_system" >&6; }
+		if test "x$ax_cv_boost_system" = "xyes"; then
+
+
+
+$as_echo "#define HAVE_BOOST_SYSTEM /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+            if test "x$ax_boost_user_system_lib" = "x"; then
+                for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+				done
+                if test "x$link_system" != "xyes"; then
+                for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_system" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_system" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::System libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-asio was given.
+if test "${with_boost_asio+set}" = set; then :
+  withval=$with_boost_asio;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_asio_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_asio_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::ASIO library is available" >&5
+$as_echo_n "checking whether the Boost::ASIO library is available... " >&6; }
+if ${ax_cv_boost_asio+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ #include <boost/asio.hpp>
+
+int
+main ()
+{
+
+
+                                    boost::asio::io_service io;
+                                    boost::system::error_code timer_result;
+                                    boost::asio::deadline_timer t(io);
+                                    t.cancel();
+                                    io.run_one();
+									return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_asio=yes
+else
+  ax_cv_boost_asio=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_asio" >&5
+$as_echo "$ax_cv_boost_asio" >&6; }
+		if test "x$ax_cv_boost_asio" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_ASIO /**/" >>confdefs.h
+
+			BN=boost_system
+			BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_asio_lib" = "x"; then
+				for ax_lib in `ls $BOOSTLIBDIR/libboost_system*.so* $BOOSTLIBDIR/libboost_system*.dylib* $BOOSTLIBDIR/libboost_system*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_system.*\)\.so.*$;\1;' -e 's;^lib\(boost_system.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_system.*\)\.a.*$;\1;' ` ; do
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_ASIO_LIB="-l$ax_lib"  link_thread="yes" break
+else
+  link_thread="no"
+fi
+
+				done
+            else
+               for ax_lib in $ax_boost_user_asio_lib $BN-$ax_boost_user_asio_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_ASIO_LIB="-l$ax_lib"  link_asio="yes" break
+else
+  link_asio="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_asio" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_asio" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::ASIO libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-date-time was given.
+if test "${with_boost_date_time+set}" = set; then :
+  withval=$with_boost_date_time;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_date_time_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_date_time_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Date_Time library is available" >&5
+$as_echo_n "checking whether the Boost::Date_Time library is available... " >&6; }
+if ${ax_cv_boost_date_time+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/date_time/gregorian/gregorian_types.hpp>
+int
+main ()
+{
+using namespace boost::gregorian; date d(2002,Jan,10);
+                                     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_date_time=yes
+else
+  ax_cv_boost_date_time=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_date_time" >&5
+$as_echo "$ax_cv_boost_date_time" >&6; }
+		if test "x$ax_cv_boost_date_time" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_DATE_TIME /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_date_time_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_date_time*.so* $BOOSTLIBDIR/libboost_date_time*.dylib* $BOOSTLIBDIR/libboost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_date_time.*\)\.so.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+				done
+                if test "x$link_date_time" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_date_time*.dll* $BOOSTLIBDIR/boost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_date_time.*\)\.dll.*$;\1;' -e 's;^\(boost_date_time.*\)\.a.*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_date_time_lib boost_date_time-$ax_boost_user_date_time_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_date_time" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_date_time" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Date_Time libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-filesystem was given.
+if test "${with_boost_filesystem+set}" = set; then :
+  withval=$with_boost_filesystem;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_filesystem_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_filesystem_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+		LIBS_SAVED=$LIBS
+		LIBS="$LIBS $BOOST_SYSTEM_LIB"
+		export LIBS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Filesystem library is available" >&5
+$as_echo_n "checking whether the Boost::Filesystem library is available... " >&6; }
+if ${ax_cv_boost_filesystem+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/filesystem/path.hpp>
+int
+main ()
+{
+using namespace boost::filesystem;
+                                   path my_path( "foo/bar/data.txt" );
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_filesystem=yes
+else
+  ax_cv_boost_filesystem=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_filesystem" >&5
+$as_echo "$ax_cv_boost_filesystem" >&6; }
+		if test "x$ax_cv_boost_filesystem" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_FILESYSTEM /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_filesystem_lib" = "x"; then
+                for libextension in `ls -r $BOOSTLIBDIR/libboost_filesystem* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+				done
+                if test "x$link_filesystem" != "xyes"; then
+                for libextension in `ls -r $BOOSTLIBDIR/boost_filesystem* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+				done
+		    fi
+            else
+               for ax_lib in $ax_boost_user_filesystem_lib boost_filesystem-$ax_boost_user_filesystem_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_filesystem" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+		LDFLAGS="$LDFLAGS_SAVED"
+		LIBS="$LIBS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_filesystem" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Filesystem libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-program-options was given.
+if test "${with_boost_program_options+set}" = set; then :
+  withval=$with_boost_program_options;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_program_options_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_program_options_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+	    export want_boost
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Program_Options library is available" >&5
+$as_echo_n "checking whether the Boost::Program_Options library is available... " >&6; }
+if ${ax_cv_boost_program_options+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+				cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/program_options/errors.hpp>
+
+int
+main ()
+{
+boost::program_options::error err("Error message");
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_program_options=yes
+else
+  ax_cv_boost_program_options=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+					ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_program_options" >&5
+$as_echo "$ax_cv_boost_program_options" >&6; }
+		if test "$ax_cv_boost_program_options" = yes; then
+
+$as_echo "#define HAVE_BOOST_PROGRAM_OPTIONS /**/" >>confdefs.h
+
+                  BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+                if test "x$ax_boost_user_program_options_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_program_options*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.dylib* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.dylib.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.a.*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+				done
+                if test "x$link_program_options" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_program_options*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.a.*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+				done
+                fi
+                else
+                  for ax_lib in $ax_boost_user_program_options_lib boost_program_options-$ax_boost_user_program_options_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+                  done
+                fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+				if test "x$link_program_options" != "xyes"; then
+					as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+				fi
+		fi
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_program_options" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Program_Options libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-regex was given.
+if test "${with_boost_regex+set}" = set; then :
+  withval=$with_boost_regex;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_regex_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_regex_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Regex library is available" >&5
+$as_echo_n "checking whether the Boost::Regex library is available... " >&6; }
+if ${ax_cv_boost_regex+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/regex.hpp>
+
+int
+main ()
+{
+boost::regex r(); return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_regex=yes
+else
+  ax_cv_boost_regex=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_regex" >&5
+$as_echo "$ax_cv_boost_regex" >&6; }
+		if test "x$ax_cv_boost_regex" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_REGEX /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_regex_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_regex*.so* $BOOSTLIBDIR/libboost_regex*.dylib* $BOOSTLIBDIR/libboost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_regex.*\)\.so.*$;\1;' -e 's;^lib\(boost_regex.*\)\.dylib.*;\1;' -e 's;^lib\(boost_regex.*\)\.a.*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+				done
+                if test "x$link_regex" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_regex*.dll* $BOOSTLIBDIR/boost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_regex.*\)\.dll.*$;\1;' -e 's;^\(boost_regex.*\)\.a.*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_regex_lib boost_regex-$ax_boost_user_regex_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+               done
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the Boost::Regex library!" "$LINENO" 5
+            fi
+			if test "x$link_regex" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_regex" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Regex libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-thread was given.
+if test "${with_boost_thread+set}" = set; then :
+  withval=$with_boost_thread;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_thread_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_thread_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Thread library is available" >&5
+$as_echo_n "checking whether the Boost::Thread library is available... " >&6; }
+if ${ax_cv_boost_thread+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 if test "x$host_os" = "xsolaris" ; then
+				 CXXFLAGS="-pthreads $CXXFLAGS"
+			 elif test "x$host_os" = "xmingw32" ; then
+				 CXXFLAGS="-mthreads $CXXFLAGS"
+			 else
+				CXXFLAGS="-pthread $CXXFLAGS"
+			 fi
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/thread/thread.hpp>
+int
+main ()
+{
+boost::thread_group thrds;
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_thread=yes
+else
+  ax_cv_boost_thread=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_thread" >&5
+$as_echo "$ax_cv_boost_thread" >&6; }
+		if test "x$ax_cv_boost_thread" = "xyes"; then
+           if test "x$host_os" = "xsolaris" ; then
+			  BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+		   elif test "x$host_os" = "xmingw32" ; then
+			  BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+		   else
+			  BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+		   fi
+
+
+
+
+$as_echo "#define HAVE_BOOST_THREAD /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+                        case "x$host_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+            if test "x$ax_boost_user_thread_lib" = "x"; then
+                for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+				done
+                if test "x$link_thread" != "xyes"; then
+                for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_thread" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+                        else
+                           case "x$host_os" in
+                              *bsd* )
+				BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                              break;
+                              ;;
+                           esac
+
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_thread" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Thread libarary." "$LINENO" 5
+fi
+#AX_BOOST_IOSTREAMS
+#AX_BOOST_PYTHON
+#AX_BOOST_SERIALIZATION
+#AX_BOOST_SIGNALS
+#AX_BOOST_TEST_EXEC_MONITOR
+#AX_BOOST_UNIT_TEST_FRAMEWORK
+#AX_BOOST_WAVE
+#AX_BOOST_WSERIALIZATION
+
+LDFLAGS+=" "$BOOST_LDFLAGS
+LDFLAGS+=" "$BOOST_SYSTEM_LIB
+LDFLAGS+=" "$BOOST_ASIO_LIB
+LDFLAGS+=" "$BOOST_DATE_TIME_LIB
+LDFLAGS+=" "$BOOST_FILESYSTEM_LIB
+LDFLAGS+=" "$BOOST_PROGRAM_OPTIONS_LIB
+LDFLAGS+=" "$BOOST_REGEX_LIB
+LDFLAGS+=" "$BOOST_THREAD_LIB
+
+CPPFLAGS+=" "$BOOST_CPPFLAGS
+
+# Now we can safely add the compiler option for your prefered standard
+CXXFLAGS+=" -DTTTT -std=c++0x -DXXX "
+
+#AC_CHECK_HEADERS(
+#   [\
+#      boost/bind.hpp \
+#      boost/lexical_cast.hpp \
+#      boost/filesystem.hpp \
+#      boost/thread.hpp \
+#      boost/function.hpp \
+#      boost/regex.hpp \
+#      boost/asio.hpp \
+#      boost/enable_shared_from_this.hpp \
+#      boost/asio/deadline_timer.hpp \
+#      boost/date_time/posix_time/posix_time.hpp \
+#      boost/date_time/local_time/local_time.hpp \
+#      boost/date_time/gregorian/gregorian.hpp
+#   ], [],
+#   [
+#      echo "Error! At least one needed header of the boost C++ libararies is missing."
+#      exit -1
+#   ]
+#)
+
+######################################################################
+# v8 / JavaScript
+######################################################################
+
+
+
+
+# Check whether --with-v8 was given.
+if test "${with_v8+set}" = set; then :
+  withval=$with_v8; with_v8=$withval
+if test "${with_v8}" != yes; then
+	v8_include="$withval/include"
+	v8_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-v8-include was given.
+if test "${with_v8_include+set}" = set; then :
+  withval=$with_v8_include; v8_include="$withval"
+fi
+
+
+
+# Check whether --with-v8-libdir was given.
+if test "${with_v8_libdir+set}" = set; then :
+  withval=$with_v8_libdir; v8_libdir="$withval"
+fi
+
+
+if test "${with_v8}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${v8_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${v8_libdir}"
+	fi
+	if test "${v8_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${v8_include}"
+		CFLAGS="$CFLAGS -I${v8_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "v8.h" "ac_cv_header_v8_h" "$ac_includes_default"
+if test "x$ac_cv_header_v8_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for v8::HandleScope handle_scope in -lv8" >&5
+$as_echo_n "checking for v8::HandleScope handle_scope in -lv8... " >&6; }
+if ${ac_cv_lib_v8_v8__HandleScope_handle_scope+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lv8  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <v8.h>
+int
+main ()
+{
+v8::HandleScope handle_scope
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_v8_v8__HandleScope_handle_scope=yes
+else
+  ac_cv_lib_v8_v8__HandleScope_handle_scope=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_v8_v8__HandleScope_handle_scope" >&5
+$as_echo "$ac_cv_lib_v8_v8__HandleScope_handle_scope" >&6; }
+   	if test $ac_cv_lib_v8_v8__HandleScope_handle_scope = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBV8 1
+_ACEOF
+
+   			LIBS="-lv8 $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+	if test "$no_good" = yes; then
+		HAVE_V8=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_V8=yes
+
+		$as_echo "#define HAVE_PKG_v8 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+######################################################################
+# QT4/GUI SUPPORT
+######################################################################
+
+
+# Check whether --with-qt4 was given.
+if test "${with_qt4+set}" = set; then :
+  withval=$with_qt4;
+else
+
+
+
+			FATAL=0
+
+
+# Check whether --with-qt4-dir was given.
+if test "${with_qt4_dir+set}" = set; then :
+  withval=$with_qt4_dir;  qt4_cv_dir=`eval echo "$withval"/`
+fi
+
+
+
+# Check whether --with-qt4-includes was given.
+if test "${with_qt4_includes+set}" = set; then :
+  withval=$with_qt4_includes;  qt4_cv_includes=`eval echo "$withval"`
+fi
+
+
+
+# Check whether --with-qt4-libraries was given.
+if test "${with_qt4_libraries+set}" = set; then :
+  withval=$with_qt4_libraries;   qt4_cv_libraries=`eval echo "$withval"`
+fi
+
+
+		if test -z "$qt4_cv_dir"; then
+		qt4_cv_dir=$QT4DIR
+	fi
+
+		if test -n "$qt4_cv_dir"; then
+		if test -z "$qt4_cv_includes"; then
+			qt4_cv_includes=$qt4_cv_dir/include
+		fi
+		if test -z "$qt4_cv_libraries"; then
+			qt4_cv_libraries=$qt4_cv_dir/lib
+		fi
+	fi
+
+		if test -n "$qt4_cv_dir"; then
+		qt4_cv_bin=$qt4_cv_dir/bin
+	fi
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+	if test -n "$PKG_CONFIG" ; then
+
+		save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+	if test -n "$qt4_cv_dir" ; then
+	  PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
+	  export PKG_CONFIG_PATH
+	fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT4_CORE" >&5
+$as_echo_n "checking for QT4_CORE... " >&6; }
+
+if test -n "$QT4_CORE_CFLAGS"; then
+    pkg_cv_QT4_CORE_CFLAGS="$QT4_CORE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_CORE_CFLAGS=`$PKG_CONFIG --cflags "QtCore" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$QT4_CORE_LIBS"; then
+    pkg_cv_QT4_CORE_LIBS="$QT4_CORE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_CORE_LIBS=`$PKG_CONFIG --libs "QtCore" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        QT4_CORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "QtCore" 2>&1`
+        else
+	        QT4_CORE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "QtCore" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$QT4_CORE_PKG_ERRORS" >&5
+
+	:
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	:
+else
+	QT4_CORE_CFLAGS=$pkg_cv_QT4_CORE_CFLAGS
+	QT4_CORE_LIBS=$pkg_cv_QT4_CORE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+	if test "$pkg_failed" = "no" ; then
+		QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
+
+		QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
+
+		QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
+
+	fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT4_FRONTEND" >&5
+$as_echo_n "checking for QT4_FRONTEND... " >&6; }
+
+if test -n "$QT4_FRONTEND_CFLAGS"; then
+    pkg_cv_QT4_FRONTEND_CFLAGS="$QT4_FRONTEND_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore QtGui QtSql\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore QtGui QtSql") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_FRONTEND_CFLAGS=`$PKG_CONFIG --cflags "QtCore QtGui QtSql" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$QT4_FRONTEND_LIBS"; then
+    pkg_cv_QT4_FRONTEND_LIBS="$QT4_FRONTEND_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore QtGui QtSql\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore QtGui QtSql") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_FRONTEND_LIBS=`$PKG_CONFIG --libs "QtCore QtGui QtSql" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        QT4_FRONTEND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "QtCore QtGui QtSql" 2>&1`
+        else
+	        QT4_FRONTEND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "QtCore QtGui QtSql" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$QT4_FRONTEND_PKG_ERRORS" >&5
+
+	:
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	:
+else
+	QT4_FRONTEND_CFLAGS=$pkg_cv_QT4_FRONTEND_CFLAGS
+	QT4_FRONTEND_LIBS=$pkg_cv_QT4_FRONTEND_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+	if test "$pkg_failed" = "no" ; then
+		QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
+				QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui QtSql`
+
+
+		QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
+
+		QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui QtSql`
+
+		LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui QtSql`"
+	fi
+
+	fi
+	if test "$pkg_failed" != "no" ; then
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+	if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag
+    ac_cxx_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_cxx_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_cxx_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_cxx_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_cxx_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+	case $have_x in
+	    yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+	         CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
+	     no) as_fn_error $? "Cannot find X window libraries and/or headers." "$LINENO" 5;;
+	disable) ;;
+	esac
+
+		QT4_INCLUDES=
+	QT4_LDFLAGS=
+	QT4_CORE_INCLUDES=
+	QT4_CORE_LDFLAGS=
+	if test -n "$qt4_cv_includes"; then
+		QT4_INCLUDES="-I$qt4_cv_includes"
+		for i in Qt QtCore QtGui QtSql; do
+			QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
+		done
+		QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
+	fi
+	if test -n "$qt4_cv_libraries"; then
+		QT4_LDFLAGS="-L$qt4_cv_libraries"
+		QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
+	fi
+
+
+
+
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt 4 library name" >&5
+$as_echo_n "checking for Qt 4 library name... " >&6; }
+
+	if ${qt4_cv_libname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+		SAVE_CXXFLAGS=$CXXFLAGS
+		CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
+		for libname in -lQtCore -lQtCore4 '-framework QtCore'
+		do
+
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $libname"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	#include <qglobal.h>
+	#include <qstring.h>
+
+int
+main ()
+{
+
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  qt4_cv_libname=$libname
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LIBS="$SAVE_LIBS"
+
+			if test -n "$qt4_cv_libname"; then
+				QT4_CORE_LIB="$qt4_cv_libname"
+				break;
+			fi
+		done
+		qt4_cv_libname=
+		for libname in '-lQtCore -lQtGui -lQtSql' \
+		               '-lQtCore4 -lQtGui4 -lQtSql4' \
+		               '-framework QtCore -framework QtGui -framework QtSql'
+		do
+
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $libname"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	#include <qglobal.h>
+	#include <qstring.h>
+
+int
+main ()
+{
+
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  qt4_cv_libname=$libname
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LIBS="$SAVE_LIBS"
+
+			if test -n "$qt4_cv_libname"; then
+				break;
+			fi
+		done
+		CXXFLAGS=$SAVE_CXXFLAGS
+
+fi
+
+
+	if test -z "$qt4_cv_libname"; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+		if test "$FATAL" = 1 ; then
+			as_fn_error $? "Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !" "$LINENO" 5
+		fi
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $qt4_cv_libname" >&5
+$as_echo "$qt4_cv_libname" >&6; }
+	fi
+
+
+	QT4_LIB=$qt4_cv_libname;
+
+
+
+	if test -n "$qt4_cv_libname"; then
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Qt 4 version" >&5
+$as_echo_n "checking Qt 4 version... " >&6; }
+if ${lyx_cv_qt4version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+		SAVE_CPPFLAGS=$CPPFLAGS
+		CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
+
+		cat > conftest.$ac_ext <<EOF
+#line 24912 "configure"
+#include "confdefs.h"
+#include <qglobal.h>
+"%%%"QT_VERSION_STR"%%%"
+EOF
+		lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+			grep '^"%%%"'  2>/dev/null | \
+			sed -e 's/"%%%"//g' -e 's/"//g'`
+		rm -f conftest.$ac_ext
+		CPPFLAGS=$SAVE_CPPFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lyx_cv_qt4version" >&5
+$as_echo "$lyx_cv_qt4version" >&6; }
+
+	QT4_VERSION=$lyx_cv_qt4version
+
+
+	fi
+
+	fi
+	for ac_prog in moc-qt4 moc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MOC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MOC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MOC4="$MOC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MOC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MOC4=$ac_cv_path_MOC4
+if test -n "$MOC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC4" >&5
+$as_echo "$MOC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MOC4" && break
+done
+
+	for ac_prog in uic-qt4 uic
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UIC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $UIC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UIC4="$UIC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_UIC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+UIC4=$ac_cv_path_UIC4
+if test -n "$UIC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UIC4" >&5
+$as_echo "$UIC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$UIC4" && break
+done
+
+	for ac_prog in rcc-qt4 rcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RCC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $RCC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RCC4="$RCC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_RCC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+RCC4=$ac_cv_path_RCC4
+if test -n "$RCC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RCC4" >&5
+$as_echo "$RCC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$RCC4" && break
+done
+
+
+fi
+
+
+# This allows to list the QT4 stuff independantly later
+CPPFLAGS+=" "${QT4_INCLUDES}" "
+LDFLAGS+=" -lQtCore "
+
+
+
+# Check whether --with-QGL was given.
+if test "${with_QGL+set}" = set; then :
+  withval=$with_QGL; with_QGL=$withval
+if test "${with_QGL}" != yes; then
+	QGL_include="$withval/include"
+	QGL_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-QGL-include was given.
+if test "${with_QGL_include+set}" = set; then :
+  withval=$with_QGL_include; QGL_include="$withval"
+fi
+
+
+
+# Check whether --with-QGL-libdir was given.
+if test "${with_QGL_libdir+set}" = set; then :
+  withval=$with_QGL_libdir; QGL_libdir="$withval"
+fi
+
+
+if test "${with_QGL}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${QGL_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${QGL_libdir}"
+	fi
+	if test "${QGL_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${QGL_include}"
+		CFLAGS="$CFLAGS -I${QGL_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "QtOpenGL/QGLWidget" "ac_cv_header_QtOpenGL_QGLWidget" "$ac_includes_default"
+if test "x$ac_cv_header_QtOpenGL_QGLWidget" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for QGLWidget qgl in -lQtOpenGL" >&5
+$as_echo_n "checking for QGLWidget qgl in -lQtOpenGL... " >&6; }
+if ${ac_cv_lib_QtOpenGL_QGLWidget_qgl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lQtOpenGL  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <QtOpenGL/QGLWidget>
+int
+main ()
+{
+QGLWidget qgl
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_QtOpenGL_QGLWidget_qgl=yes
+else
+  ac_cv_lib_QtOpenGL_QGLWidget_qgl=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_QtOpenGL_QGLWidget_qgl" >&5
+$as_echo "$ac_cv_lib_QtOpenGL_QGLWidget_qgl" >&6; }
+   	if test $ac_cv_lib_QtOpenGL_QGLWidget_qgl = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBQTOPENGL 1
+_ACEOF
+
+   			LIBS="-lQtOpenGL $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+	if test "$no_good" = yes; then
+		HAVE_QGL=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_QGL=yes
+
+		$as_echo "#define HAVE_PKG_QGL 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+
+
+# Check whether --with-qwt was given.
+if test "${with_qwt+set}" = set; then :
+  withval=$with_qwt; with_qwt=$withval
+if test "${with_qwt}" != yes; then
+	qwt_include="$withval/include"
+	qwt_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-qwt-include was given.
+if test "${with_qwt_include+set}" = set; then :
+  withval=$with_qwt_include; qwt_include="$withval"
+fi
+
+
+
+# Check whether --with-qwt-libdir was given.
+if test "${with_qwt_libdir+set}" = set; then :
+  withval=$with_qwt_libdir; qwt_libdir="$withval"
+fi
+
+
+if test "${with_qwt}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${qwt_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${qwt_libdir}"
+	fi
+	if test "${qwt_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${qwt_include}"
+		CFLAGS="$CFLAGS -I${qwt_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "qwt_plot.h" "ac_cv_header_qwt_plot_h" "$ac_includes_default"
+if test "x$ac_cv_header_qwt_plot_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for QwtPlot qwt in -lqwt-qt4" >&5
+$as_echo_n "checking for QwtPlot qwt in -lqwt-qt4... " >&6; }
+if ${ac_cv_lib_qwt_qt4_QwtPlot_qwt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lqwt-qt4  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <qwt_plot.h>
+int
+main ()
+{
+QwtPlot qwt
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_qwt_qt4_QwtPlot_qwt=yes
+else
+  ac_cv_lib_qwt_qt4_QwtPlot_qwt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_qwt_qt4_QwtPlot_qwt" >&5
+$as_echo "$ac_cv_lib_qwt_qt4_QwtPlot_qwt" >&6; }
+   	if test $ac_cv_lib_qwt_qt4_QwtPlot_qwt = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBQWT_QT4 1
+_ACEOF
+
+   			LIBS="-lqwt-qt4 $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+	if test "$no_good" = yes; then
+		HAVE_QWT=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_QWT=yes
+
+		$as_echo "#define HAVE_PKG_qwt 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+######################################################################
+# ROOT SUPPORT
+######################################################################
+
+
+# Check whether --with-root was given.
+if test "${with_root+set}" = set; then :
+  withval=$with_root;
+else
+
+
+# Check whether --with-rootsys was given.
+if test "${with_rootsys+set}" = set; then :
+  withval=$with_rootsys; user_rootsys=$withval
+else
+  user_rootsys="none"
+fi
+
+  if test ! x"$user_rootsys" = xnone; then
+    rootbin="$user_rootsys:$user_rootsys/bin"
+  elif test ! x"$ROOTSYS" = x ; then
+    rootbin="$ROOTSYS/bin"
+  else
+   rootbin=$PATH
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for root in" >&5
+$as_echo_n "checking for root in... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rootbin" >&5
+$as_echo "$rootbin" >&6; }
+
+  # Extract the first word of "root-config ", so it can be a program name with args.
+set dummy root-config ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTCONF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTCONF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTCONF="$ROOTCONF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ROOTCONF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTCONF" && ac_cv_path_ROOTCONF="no"
+  ;;
+esac
+fi
+ROOTCONF=$ac_cv_path_ROOTCONF
+if test -n "$ROOTCONF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTCONF" >&5
+$as_echo "$ROOTCONF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "root ", so it can be a program name with args.
+set dummy root ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTEXEC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTEXEC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTEXEC="$ROOTEXEC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ROOTEXEC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTEXEC" && ac_cv_path_ROOTEXEC="no"
+  ;;
+esac
+fi
+ROOTEXEC=$ac_cv_path_ROOTEXEC
+if test -n "$ROOTEXEC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTEXEC" >&5
+$as_echo "$ROOTEXEC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "rootcint ", so it can be a program name with args.
+set dummy rootcint ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTCINT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTCINT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTCINT="$ROOTCINT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ROOTCINT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTCINT" && ac_cv_path_ROOTCINT="no"
+  ;;
+esac
+fi
+ROOTCINT=$ac_cv_path_ROOTCINT
+if test -n "$ROOTCINT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTCINT" >&5
+$as_echo "$ROOTCINT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+  if test ! x"$ROOTCONF" = "xno" && \
+     test ! x"$ROOTCINT" = "xno" ; then
+
+    # define some variables
+    ROOTLIBDIR=`$ROOTCONF --libdir`
+    ROOTINCDIR=`$ROOTCONF --incdir`
+#    ROOTETCDIR=`$ROOTCONF --etcdir`
+    ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags`
+    ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
+    ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
+    ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
+    ROOTAUXLIBS=`$ROOTCONF --auxlibs`
+    ROOTRPATH=$ROOTLIBDIR
+    ROOTVERSION=`$ROOTCONF --version`
+    ROOTSOVERSION=`dirname $ROOTVERSION`
+
+    if test 5.12/00 ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking wether ROOT version >= 5.12/00" >&5
+$as_echo_n "checking wether ROOT version >= 5.12/00... " >&6; }
+      vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      requ=`echo 5.12/00 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      if test $vers -lt $requ ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	no_root="yes"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+    fi
+  else
+    # otherwise, we say no_root
+    no_root="yes"
+  fi
+
+
+
+#  AC_SUBST(ROOTETCDIR)
+
+
+
+
+
+
+
+
+
+  if test "x$no_root" = "x" ; then
+    :
+  else
+    :
+  fi
+
+
+fi
+
+
+if test "$ROOTEXEC" != no -a -n "$ROOTVERSION"  ;
+then
+
+   ROOTCPPFLAGS=$ROOTCFLAGS
+   ROOTCXXFLAGS=$ROOTAUXCFLAGS
+   ROOTLDFLAGS="-L"$ROOTLIBDIR
+
+   #AC_CHECK_PROG(HAVE_ROOT_QT, libGQt.so.$ROOTSOVERSION, yes, no, $ROOTLIBDIR)
+   #AC_CHECK_PROG(HAVE_GQT,     libGQt.so.$ROOTSOVERSION, yes, no, $LD_LIBRARY_PATH)
+
+   # It seems it dooesn't work on older root versions
+
+
+  feat=qt
+  res=`$ROOTCONF --has-$feat`
+  if test "x$res" = "xyes" ; then
+    HAVE_ROOT_QT=yes
+  else
+    :
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether root was built with --with-qt" >&5
+$as_echo_n "checking whether root was built with --with-qt... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+
+
+
+fi
+
+
+######################################################################
+# Check if we have colordiff to colorize 'svn diff'
+######################################################################
+
+# Nice to have to support colored diff
+# Extract the first word of "colordiff", so it can be a program name with args.
+set dummy colordiff; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_COLORDIFF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$COLORDIFF"; then
+  ac_cv_prog_COLORDIFF="$COLORDIFF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_COLORDIFF="colordiff"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_COLORDIFF" && ac_cv_prog_COLORDIFF="cat"
+fi
+fi
+COLORDIFF=$ac_cv_prog_COLORDIFF
+if test -n "$COLORDIFF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COLORDIFF" >&5
+$as_echo "$COLORDIFF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "groff", so it can be a program name with args.
+set dummy groff; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GROFF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GROFF"; then
+  ac_cv_prog_GROFF="$GROFF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GROFF="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_GROFF" && ac_cv_prog_GROFF="no"
+fi
+fi
+GROFF=$ac_cv_prog_GROFF
+if test -n "$GROFF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
+$as_echo "$GROFF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "ps2pdf", so it can be a program name with args.
+set dummy ps2pdf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PS2PDF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PS2PDF"; then
+  ac_cv_prog_PS2PDF="$PS2PDF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PS2PDF="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_PS2PDF" && ac_cv_prog_PS2PDF="no"
+fi
+fi
+PS2PDF=$ac_cv_prog_PS2PDF
+if test -n "$PS2PDF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PS2PDF" >&5
+$as_echo "$PS2PDF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "help2man", so it can be a program name with args.
+set dummy help2man; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_HELP2MAN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HELP2MAN"; then
+  ac_cv_prog_HELP2MAN="$HELP2MAN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_HELP2MAN="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_HELP2MAN" && ac_cv_prog_HELP2MAN="no"
+fi
+fi
+HELP2MAN=$ac_cv_prog_HELP2MAN
+if test -n "$HELP2MAN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HELP2MAN" >&5
+$as_echo "$HELP2MAN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "jsdoc", so it can be a program name with args.
+set dummy jsdoc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JSDOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JSDOC"; then
+  ac_cv_prog_JSDOC="$JSDOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JSDOC="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_JSDOC" && ac_cv_prog_JSDOC="no"
+fi
+fi
+JSDOC=$ac_cv_prog_JSDOC
+if test -n "$JSDOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JSDOC" >&5
+$as_echo "$JSDOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "mailx", so it can be a program name with args.
+set dummy mailx; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MAILX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MAILX"; then
+  ac_cv_prog_MAILX="$MAILX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MAILX="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_MAILX" && ac_cv_prog_MAILX="no"
+fi
+fi
+MAILX=$ac_cv_prog_MAILX
+if test -n "$MAILX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAILX" >&5
+$as_echo "$MAILX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "curl", so it can be a program name with args.
+set dummy curl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CURL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CURL"; then
+  ac_cv_prog_CURL="$CURL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CURL="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_CURL" && ac_cv_prog_CURL="no"
+fi
+fi
+CURL=$ac_cv_prog_CURL
+if test -n "$CURL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5
+$as_echo "$CURL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+##########################################################################
+# debug compilation support
+##########################################################################
+#
+#AC_MSG_CHECKING([whether to build with debug information])
+#AC_ARG_ENABLE([debug],
+#    [AS_HELP_STRING([--enable-debug],
+#        [enable debug data generation (def=no)])],
+#    [debugit="$enableval"],
+#    [debugit=no])
+#AC_MSG_RESULT([$debugit])
+#
+#if test x"$debugit" = x"yes"; then
+#    AC_DEFINE([DEBUG],[],[Debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -g -Wall -Werror -Wno-uninitialized -O0"
+#else
+#    AC_DEFINE([NDEBUG],[],[No-debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -O3"
+#fi
+#
+
+##########################################################################
+# produce conditionals for Makefile.am and for summary
+##########################################################################
+
+ if test "$COLORDIFF" = colordiff; then
+  HAS_COLORDIFF_TRUE=
+  HAS_COLORDIFF_FALSE='#'
+else
+  HAS_COLORDIFF_TRUE='#'
+  HAS_COLORDIFF_FALSE=
+fi
+
+ if test "$GROFF" = yes; then
+  HAS_GROFF_TRUE=
+  HAS_GROFF_FALSE='#'
+else
+  HAS_GROFF_TRUE='#'
+  HAS_GROFF_FALSE=
+fi
+
+ if test "$PS2PDF" = yes; then
+  HAS_PS2PDF_TRUE=
+  HAS_PS2PDF_FALSE='#'
+else
+  HAS_PS2PDF_TRUE='#'
+  HAS_PS2PDF_FALSE=
+fi
+
+ if test "$HELP2MAN" = yes; then
+  HAS_HELP2MAN_TRUE=
+  HAS_HELP2MAN_FALSE='#'
+else
+  HAS_HELP2MAN_TRUE='#'
+  HAS_HELP2MAN_FALSE=
+fi
+
+ if test "$JSDOC" = yes; then
+  HAS_JSDOC_TRUE=
+  HAS_JSDOC_FALSE='#'
+else
+  HAS_JSDOC_TRUE='#'
+  HAS_JSDOC_FALSE=
+fi
+
+ if test "$MAILX" = yes; then
+  HAS_MAILX_TRUE=
+  HAS_MAILX_FALSE='#'
+else
+  HAS_MAILX_TRUE='#'
+  HAS_MAILX_FALSE=
+fi
+
+ if test "$CURL" = yes; then
+  HAS_CURL_TRUE=
+  HAS_CURL_FALSE='#'
+else
+  HAS_CURL_TRUE='#'
+  HAS_CURL_FALSE=
+fi
+
+ if test "$DX_DOXYGEN"; then
+  HAS_DOXYGEN_TRUE=
+  HAS_DOXYGEN_FALSE='#'
+else
+  HAS_DOXYGEN_TRUE='#'
+  HAS_DOXYGEN_FALSE=
+fi
+
+ if test "$DX_DOT"; then
+  HAS_DOT_TRUE=
+  HAS_DOT_FALSE='#'
+else
+  HAS_DOT_TRUE='#'
+  HAS_DOT_FALSE=
+fi
+
+ if test "$COLORGCC"; then
+  HAS_COLORGCC_TRUE=
+  HAS_COLORGCC_FALSE='#'
+else
+  HAS_COLORGCC_TRUE='#'
+  HAS_COLORGCC_FALSE=
+fi
+
+ if test "$QT4_VERSION"; then
+  HAS_QT4_TRUE=
+  HAS_QT4_FALSE='#'
+else
+  HAS_QT4_TRUE='#'
+  HAS_QT4_FALSE=
+fi
+
+ if test "$MYSQLPP_LIB_DIR" -a "$MYSQLPP_INC_DIR" ; then
+  HAS_SQL_TRUE=
+  HAS_SQL_FALSE='#'
+else
+  HAS_SQL_TRUE='#'
+  HAS_SQL_FALSE=
+fi
+
+ if test "$ROOTEXEC" != no -a -n "$ROOTVERSION"; then
+  HAS_ROOT_TRUE=
+  HAS_ROOT_FALSE='#'
+else
+  HAS_ROOT_TRUE='#'
+  HAS_ROOT_FALSE=
+fi
+
+ if test "$HAVE_ROOT_QT" = yes; then
+  HAS_ROOT_QT_TRUE=
+  HAS_ROOT_QT_FALSE='#'
+else
+  HAS_ROOT_QT_TRUE='#'
+  HAS_ROOT_QT_FALSE=
+fi
+
+ if test "$HAVE_CFITSIO" = yes; then
+  HAS_CFITSIO_TRUE=
+  HAS_CFITSIO_FALSE='#'
+else
+  HAS_CFITSIO_TRUE='#'
+  HAS_CFITSIO_FALSE=
+fi
+
+ if test "$HAVE_CCFITS" = yes; then
+  HAS_CCFITS_TRUE=
+  HAS_CCFITS_FALSE='#'
+else
+  HAS_CCFITS_TRUE='#'
+  HAS_CCFITS_FALSE=
+fi
+
+ if test "$HAVE_CFITSIO" = yes -a "$HAVE_CCFITS" = yes; then
+  HAS_FITS_TRUE=
+  HAS_FITS_FALSE='#'
+else
+  HAS_FITS_TRUE='#'
+  HAS_FITS_FALSE=
+fi
+
+ if test "$HAVE_ZLIB" = yes; then
+  HAS_ZLIB_TRUE=
+  HAS_ZLIB_FALSE='#'
+else
+  HAS_ZLIB_TRUE='#'
+  HAS_ZLIB_FALSE=
+fi
+
+ if test "$HAVE_GL" = yes; then
+  HAS_GL_TRUE=
+  HAS_GL_FALSE='#'
+else
+  HAS_GL_TRUE='#'
+  HAS_GL_FALSE=
+fi
+
+ if test "$HAVE_GLU" = yes; then
+  HAS_GLU_TRUE=
+  HAS_GLU_FALSE='#'
+else
+  HAS_GLU_TRUE='#'
+  HAS_GLU_FALSE=
+fi
+
+ if test "$HAVE_QGL" = yes; then
+  HAS_QGL_TRUE=
+  HAS_QGL_FALSE='#'
+else
+  HAS_QGL_TRUE='#'
+  HAS_QGL_FALSE=
+fi
+
+ if test "$HAVE_QWT" = yes; then
+  HAS_QWT_TRUE=
+  HAS_QWT_FALSE='#'
+else
+  HAS_QWT_TRUE='#'
+  HAS_QWT_FALSE=
+fi
+
+ if test "$HAVE_NOVA" = yes; then
+  HAS_NOVA_TRUE=
+  HAS_NOVA_FALSE='#'
+else
+  HAS_NOVA_TRUE='#'
+  HAS_NOVA_FALSE=
+fi
+
+ if test "$HAVE_DBUS" = yes; then
+  HAS_DBUS_TRUE=
+  HAS_DBUS_FALSE='#'
+else
+  HAS_DBUS_TRUE='#'
+  HAS_DBUS_FALSE=
+fi
+
+ if test "$HAVE_V8" = yes; then
+  HAS_V8_TRUE=
+  HAS_V8_FALSE='#'
+else
+  HAS_V8_TRUE='#'
+  HAS_V8_FALSE=
+fi
+
+
+ if test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ; then
+  HAS_GUI_TRUE=
+  HAS_GUI_FALSE='#'
+else
+  HAS_GUI_TRUE='#'
+  HAS_GUI_FALSE=
+fi
+
+ if test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_QWT" = yes; then
+  HAS_VIEWER_TRUE=
+  HAS_VIEWER_FALSE='#'
+else
+  HAS_VIEWER_TRUE='#'
+  HAS_VIEWER_FALSE=
+fi
+
+
+ if test "x" = "y"; then
+  IS_FALSE_TRUE=
+  IS_FALSE_FALSE='#'
+else
+  IS_FALSE_TRUE='#'
+  IS_FALSE_FALSE=
+fi
+
+ if test "x" = "x"; then
+  IS_TRUE_TRUE=
+  IS_TRUE_FALSE='#'
+else
+  IS_TRUE_TRUE='#'
+  IS_TRUE_FALSE=
+fi
+
+
+if test -z "$HAS_FITS_TRUE"; then :
+  $as_echo "#define HAVE_FITS 1" >>confdefs.h
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+  $as_echo "#define HAVE_ROOT 1" >>confdefs.h
+
+fi
+if test -z "$HAS_ZLIB_TRUE"; then :
+  $as_echo "#define HAVE_ZLIB 1" >>confdefs.h
+
+fi
+if test -z "$HAS_NOVA_TRUE"; then :
+  $as_echo "#define HAVE_NOVA 1" >>confdefs.h
+
+fi
+if test -z "$HAS_DBUS_TRUE"; then :
+  $as_echo "#define HAVE_DBUS 1" >>confdefs.h
+
+fi
+if test -z "$HAS_SQL_TRUE"; then :
+  $as_echo "#define HAVE_SQL 1" >>confdefs.h
+
+fi
+if test -z "$HAS_V8_TRUE"; then :
+  $as_echo "#define HAVE_V8 1" >>confdefs.h
+
+fi
+if test -z "$HAS_MAILX_TRUE"; then :
+  $as_echo "#define HAVE_MAILX 1" >>confdefs.h
+
+fi
+if test -z "$HAS_CURL_TRUE"; then :
+  $as_echo "#define HAVE_CURL 1" >>confdefs.h
+
+fi
+
+##########################################################################
+# print summary
+##########################################################################
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${DX_COND_doc_TRUE}" && test -z "${DX_COND_doc_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_doc\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_dot_TRUE}" && test -z "${DX_COND_dot_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_dot\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_man_TRUE}" && test -z "${DX_COND_man_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_man\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_rtf_TRUE}" && test -z "${DX_COND_rtf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_rtf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_xml_TRUE}" && test -z "${DX_COND_xml_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_xml\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chm_TRUE}" && test -z "${DX_COND_chm_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chm\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chi_TRUE}" && test -z "${DX_COND_chi_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_html_TRUE}" && test -z "${DX_COND_html_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_html\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_ps_TRUE}" && test -z "${DX_COND_ps_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_ps\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_pdf_TRUE}" && test -z "${DX_COND_pdf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_pdf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_latex_TRUE}" && test -z "${DX_COND_latex_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_latex\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_LIBXP_TRUE}" && test -z "${HAS_LIBXP_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_LIBXP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_LIBXP_TRUE}" && test -z "${HAS_LIBXP_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_LIBXP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_COLORDIFF_TRUE}" && test -z "${HAS_COLORDIFF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_COLORDIFF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GROFF_TRUE}" && test -z "${HAS_GROFF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GROFF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_PS2PDF_TRUE}" && test -z "${HAS_PS2PDF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_PS2PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_HELP2MAN_TRUE}" && test -z "${HAS_HELP2MAN_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_HELP2MAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_JSDOC_TRUE}" && test -z "${HAS_JSDOC_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_JSDOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_MAILX_TRUE}" && test -z "${HAS_MAILX_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_MAILX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_CURL_TRUE}" && test -z "${HAS_CURL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_CURL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DOXYGEN_TRUE}" && test -z "${HAS_DOXYGEN_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DOT_TRUE}" && test -z "${HAS_DOT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_COLORGCC_TRUE}" && test -z "${HAS_COLORGCC_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_COLORGCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QT4_TRUE}" && test -z "${HAS_QT4_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QT4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_SQL_TRUE}" && test -z "${HAS_SQL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_SQL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ROOT_TRUE}" && test -z "${HAS_ROOT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ROOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ROOT_QT_TRUE}" && test -z "${HAS_ROOT_QT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ROOT_QT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_CFITSIO_TRUE}" && test -z "${HAS_CFITSIO_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_CFITSIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_CCFITS_TRUE}" && test -z "${HAS_CCFITS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_CCFITS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_FITS_TRUE}" && test -z "${HAS_FITS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_FITS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ZLIB_TRUE}" && test -z "${HAS_ZLIB_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GL_TRUE}" && test -z "${HAS_GL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GLU_TRUE}" && test -z "${HAS_GLU_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GLU\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QGL_TRUE}" && test -z "${HAS_QGL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QGL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QWT_TRUE}" && test -z "${HAS_QWT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QWT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_NOVA_TRUE}" && test -z "${HAS_NOVA_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_NOVA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DBUS_TRUE}" && test -z "${HAS_DBUS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DBUS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_V8_TRUE}" && test -z "${HAS_V8_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_V8\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GUI_TRUE}" && test -z "${HAS_GUI_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GUI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_VIEWER_TRUE}" && test -z "${HAS_VIEWER_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_VIEWER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${IS_FALSE_TRUE}" && test -z "${IS_FALSE_FALSE}"; then
+  as_fn_error $? "conditional \"IS_FALSE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${IS_TRUE_TRUE}" && test -z "${IS_TRUE_FALSE}"; then
+  as_fn_error $? "conditional \"IS_TRUE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by FACT++ $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_links="$ac_config_links"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <thomas.bretz@phys.ethz.ch>.
+FACT++ home page: <https://www.fact-project.org/svn/trunk/FACT++/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+FACT++ config.status 1.0
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+
+# 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'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+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 SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
+nm_file_list_spec \
+lt_cv_truncate_bin \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; 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 reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; 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
+
+ac_aux_dir='$ac_aux_dir'
+
+# 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
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "g++") CONFIG_LINKS="$CONFIG_LINKS g++:$COLORGCC" ;;
+    "gcc") CONFIG_LINKS="$CONFIG_LINKS gcc:$COLORGCC" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES    :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $ac_source in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+	*) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "libtool":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
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# 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 <http://www.gnu.org/licenses/>.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags='CXX '
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# 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
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# 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.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# 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$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; 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-%%"`
+}
+
+
+# ### 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
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+
+  # 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"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# 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.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: ============================== summary =============================" >&5
+$as_echo "$as_me: ============================== summary =============================" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CFLAGS   = $CFLAGS" >&5
+$as_echo "$as_me:  CFLAGS   = $CFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CXXFLAGS = $CXXFLAGS" >&5
+$as_echo "$as_me:  CXXFLAGS = $CXXFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CPPFLAGS = $CPPFLAGS" >&5
+$as_echo "$as_me:  CPPFLAGS = $CPPFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  LDFLAGS  = $LDFLAGS" >&5
+$as_echo "$as_me:  LDFLAGS  = $LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  BOOST_CPPFLAGS = $BOOST_CPPFLAGS" >&5
+$as_echo "$as_me:  BOOST_CPPFLAGS = $BOOST_CPPFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  BOOST_LDFLAGS  = $BOOST_LDFLAGS" >&5
+$as_echo "$as_me:  BOOST_LDFLAGS  = $BOOST_LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+if test -z "$HAS_SQL_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR" >&5
+$as_echo "$as_me:  MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR" >&5
+$as_echo "$as_me:  MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_VERSION  = $QT4_VERSION" >&5
+$as_echo "$as_me:  QT4_VERSION  = $QT4_VERSION" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_LIB      = $QT4_LIB" >&5
+$as_echo "$as_me:  QT4_LIB      = $QT4_LIB" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_LDFLAGS  = $QT4_LDFLAGS" >&5
+$as_echo "$as_me:  QT4_LDFLAGS  = $QT4_LDFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_INCLUDES = $QT4_INCLUDES" >&5
+$as_echo "$as_me:  QT4_INCLUDES = $QT4_INCLUDES" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MOC4 = $MOC4" >&5
+$as_echo "$as_me:  MOC4 = $MOC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  UIC4 = $UIC4" >&5
+$as_echo "$as_me:  UIC4 = $UIC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  RCC4 = $RCC4" >&5
+$as_echo "$as_me:  RCC4 = $RCC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTVERSION   = $ROOTVERSION" >&5
+$as_echo "$as_me:  ROOTVERSION   = $ROOTVERSION" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTEXEC      = $ROOTEXEC" >&5
+$as_echo "$as_me:  ROOTEXEC      = $ROOTEXEC" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCONF      = $ROOTCONF" >&5
+$as_echo "$as_me:  ROOTCONF      = $ROOTCONF" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCINT      = $ROOTCINT" >&5
+$as_echo "$as_me:  ROOTCINT      = $ROOTCINT" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCPPFLAGS  = $ROOTCPPFLAGS" >&5
+$as_echo "$as_me:  ROOTCPPFLAGS  = $ROOTCPPFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCXXFLAGS  = $ROOTCXXFLAGS" >&5
+$as_echo "$as_me:  ROOTCXXFLAGS  = $ROOTCXXFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&5
+$as_echo "$as_me:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  nova                   / libnova.so         found: $HAVE_NOVA" >&5
+$as_echo "$as_me:  nova                   / libnova.so         found: $HAVE_NOVA" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  v8                     / 'v8.h' / libv8.so  found: $HAVE_V8" >&5
+$as_echo "$as_me:  v8                     / 'v8.h' / libv8.so  found: $HAVE_V8" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  GL                     / GL/gl.h            found: $HAVE_GL" >&5
+$as_echo "$as_me:  GL                     / GL/gl.h            found: $HAVE_GL" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  GLU                    / GL/glu.h           found: $HAVE_GLU" >&5
+$as_echo "$as_me:  GLU                    / GL/glu.h           found: $HAVE_GLU" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL" >&5
+$as_echo "$as_me:  QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  Qwt                    / qwt_plot.h         found: $HAVE_QWT" >&5
+$as_echo "$as_me:  Qwt                    / qwt_plot.h         found: $HAVE_QWT" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO" >&5
+$as_echo "$as_me:  cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS" >&5
+$as_echo "$as_me:  CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS" >&6;}
+if test -z "$HAS_SQL_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  MySQL/MySQL++          / 'mysql++.h'        found: yes" >&5
+$as_echo "$as_me:  MySQL/MySQL++          / 'mysql++.h'        found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  MySQL/MySQL++          / 'mysql++.h'        found: no" >&5
+$as_echo "$as_me:  MySQL/MySQL++          / 'mysql++.h'        found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS" >&5
+$as_echo "$as_me:  DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS" >&6;}
+if test -z "$HAS_LIBXP_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&6;}
+
+fi
+if test -z "$HAS_COLORDIFF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  colored svn diff       / 'colordiff'        found: yes" >&5
+$as_echo "$as_me:  colored svn diff       / 'colordiff'        found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  colored svn diff       / 'colordiff'        found: no" >&5
+$as_echo "$as_me:  colored svn diff       / 'colordiff'        found: no" >&6;}
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  JavaScript docu        / 'jsdoc'            found: yes" >&5
+$as_echo "$as_me:  JavaScript docu        / 'jsdoc'            found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  JavaScript docu        / 'jsdoc'            found: no" >&5
+$as_echo "$as_me:  JavaScript docu        / 'jsdoc'            found: no" >&6;}
+
+fi
+if test -z "$HAS_V8_TRUE"; then :
+
+   if test -z "$HAS_MAILX_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Mail support           / 'mailx'            found: yes" >&5
+$as_echo "$as_me:  Mail support           / 'mailx'            found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Mail support           / 'mailx'            found: no" >&5
+$as_echo "$as_me:  Mail support           / 'mailx'            found: no" >&6;}
+
+fi
+   if test -z "$HAS_CURL_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Curl support           / 'curl'             found: yes" >&5
+$as_echo "$as_me:  Curl support           / 'curl'             found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Curl support           / 'curl'             found: no" >&5
+$as_echo "$as_me:  Curl support           / 'curl'             found: no" >&6;}
+
+fi
+
+fi
+
+if test -z "$HAS_HELP2MAN_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  man-pages enabled      / 'help2man'         found: $HELP2MAN" >&5
+$as_echo "$as_me:  man-pages enabled      / 'help2man'         found: $HELP2MAN" >&6;}
+   if test -z "$HAS_GROFF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  build of html enabled  / 'groff'            found: yes" >&5
+$as_echo "$as_me:  build of html enabled  / 'groff'            found: yes" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}:  build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF" >&5
+$as_echo "$as_me:  build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  build of html and pdf  / 'groff'            found: no" >&5
+$as_echo "$as_me:  build of html and pdf  / 'groff'            found: no" >&6;}
+
+fi
+
+else
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  man, html, pdf enabled / 'help2man'         found: no" >&5
+$as_echo "$as_me:  man, html, pdf enabled / 'help2man'         found: no" >&6;}
+
+fi
+
+if test -z "$HAS_DOXYGEN_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN" >&5
+$as_echo "$as_me:  doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen docu enabled   / 'doxygen'          found: no" >&5
+$as_echo "$as_me:  doxygen docu enabled   / 'doxygen'          found: no" >&6;}
+
+fi
+if test -z "$HAS_DOT_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT" >&5
+$as_echo "$as_me:  doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen graphs enabled / 'dot' (graphviz)   found: no" >&5
+$as_echo "$as_me:  doxygen graphs enabled / 'dot' (graphviz)   found: no" >&6;}
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4 support enabled    /  QT4 toolkit       found: yes" >&5
+$as_echo "$as_me:  QT4 support enabled    /  QT4 toolkit       found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4 support enabled    /  QT4 toolkit       found: no" >&5
+$as_echo "$as_me:  QT4 support enabled    /  QT4 toolkit       found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC" >&5
+$as_echo "$as_me:  ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC" >&6;}
+if test -z "$HAS_ROOT_QT_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT built with --with-qt                   found: yes" >&5
+$as_echo "$as_me:  ROOT built with --with-qt                   found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT built with --with-qt                   found: no" >&5
+$as_echo "$as_me:  ROOT built with --with-qt                   found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Suggestions and hints:" >&5
+$as_echo "$as_me: Suggestions and hints:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - Add 'V=1' to you make-call to switch on verbose output." >&5
+$as_echo "$as_me:  - Add 'V=1' to you make-call to switch on verbose output." >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - Do not try to create man-pages with doxygen," >&5
+$as_echo "$as_me:  - Do not try to create man-pages with doxygen," >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    it does most probably not work." >&5
+$as_echo "$as_me:    it does most probably not work." >&6;}
+if test -z "$HAS_COLORGCC_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  - Install colorgcc to get colored compiler output." >&5
+$as_echo "$as_me:  - Install colorgcc to get colored compiler output." >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - If you send me a bug report about:" >&5
+$as_echo "$as_me:  - If you send me a bug report about:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    + configure: please attach the file config.log" >&5
+$as_echo "$as_me:    + configure: please attach the file config.log" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    + make: please send me the output of 'make V=1'" >&5
+$as_echo "$as_me:    + make: please send me the output of 'make V=1'" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Some interesting build targets:" >&5
+$as_echo "$as_me: Some interesting build targets:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  diff:          colored 'svn diff' if colordiff is installed" >&5
+$as_echo "$as_me:  diff:          colored 'svn diff' if colordiff is installed" >&6;}
+if test -z "$HAS_HELP2MAN_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  program.man:   build man-page from 'program --help'" >&5
+$as_echo "$as_me:  program.man:   build man-page from 'program --help'" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:                 (display with 'man ./program.man')" >&5
+$as_echo "$as_me:                 (display with 'man ./program.man')" >&6;}
+   if test -z "$HAS_GROFF_TRUE"; then :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}:  program.html:  build html page from man-page" >&5
+$as_echo "$as_me:  program.html:  build html page from man-page" >&6;}
+      if test -z "$HAS_PS2PDF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  program.pdf:   build pdf documentation from man page" >&5
+$as_echo "$as_me:  program.pdf:   build pdf documentation from man page" >&6;}
+
+fi
+
+fi
+
+fi
+if test -z "$HAS_DOXYGEN_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen-run:   build html documentation with doxygen" >&5
+$as_echo "$as_me:  doxygen-run:   build html documentation with doxygen" >&6;}
+#   AC_MSG_NOTICE([ doxygen-doc:   build html and pdf documentation with doxygen])
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  jsdoc:         build JavaScript documentation with jsdoc" >&5
+$as_echo "$as_me:  jsdoc:         build JavaScript documentation with jsdoc" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  doc:           build all buildable documentation" >&5
+$as_echo "$as_me:  doc:           build all buildable documentation" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+if test -z "$HAS_ZLIB_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  zlib not found. Support for reading .fits.gz disabled." >&5
+$as_echo "$as_me: WARNING:  zlib not found. Support for reading .fits.gz disabled." >&2;}
+
+fi
+if test -z "$HAS_LIBXP_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Motif/lesstif not found. The dim gui did will not be built!" >&5
+$as_echo "$as_me: WARNING:  Motif/lesstif not found. The dim gui did will not be built!" >&2;}
+
+fi
+if test -z "$HAS_FITS_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  FITS support disabled. cfitsio/CCfits missing!" >&5
+$as_echo "$as_me: WARNING:  FITS support disabled. cfitsio/CCfits missing!" >&2;}
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+  if test -z "$HAS_ROOT_QT_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  root found but it was built without the --with-qt option" >&5
+$as_echo "$as_me: WARNING:  root found but it was built without the --with-qt option" >&2;}
+
+fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  root not found - ROOT support disabled." >&5
+$as_echo "$as_me: WARNING:  root not found - ROOT support disabled." >&2;}
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  QT4 missing - GUIs disabled!" >&5
+$as_echo "$as_me: WARNING:  QT4 missing - GUIs disabled!" >&2;}
+fi
+if test -z "$HAS_GL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  GL not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  GL not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_GLU_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  GLU not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  GLU not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_QGL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  QtOpenGl not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  QtOpenGl not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_QWT_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Qwt not found - viewer will be disabled." >&5
+$as_echo "$as_me: WARNING:  Qwt not found - viewer will be disabled." >&2;}
+fi
+if test -z "$HAS_GUI_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Either of the necessary packages not found - fact GUI disabled!" >&5
+$as_echo "$as_me: WARNING:  Either of the necessary packages not found - fact GUI disabled!" >&2;}
+
+fi
+if test -z "$HAS_VIEWER_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Either of the necessary packages not found - viewer GUI disabled!" >&5
+$as_echo "$as_me: WARNING:  Either of the necessary packages not found - viewer GUI disabled!" >&2;}
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  JavaScript documentation disabled!" >&5
+$as_echo "$as_me: WARNING:  JavaScript documentation disabled!" >&2;}
+fi
+if test -z "$HAS_MAILX_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Mail functionality in JavaScript disabled!" >&5
+$as_echo "$as_me: WARNING:  Mail functionality in JavaScript disabled!" >&2;}
+fi
+if test -z "$HAS_CURL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Curl functionality in JavaScript disabled!" >&5
+$as_echo "$as_me: WARNING:  Curl functionality in JavaScript disabled!" >&2;}
+fi
+if test -z "$HAS_SQL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  database support globally disabled!" >&5
+$as_echo "$as_me: WARNING:  database support globally disabled!" >&2;}
+fi
+if test -z "$HAS_NOVA_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  libnova missing - smartfact will be compiles without astronomy support!" >&5
+$as_echo "$as_me: WARNING:  libnova missing - smartfact will be compiles without astronomy support!" >&2;}
+fi
+if test -z "$HAS_V8_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  libv8 missing - JavaScript support will be disabled!" >&5
+$as_echo "$as_me: WARNING:  libv8 missing - JavaScript support will be disabled!" >&2;}
+fi
+if test -z "$HAS_DBUS_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  DBus libraries missing - skypeclient will not be compiled!" >&5
+$as_echo "$as_me: WARNING:  DBus libraries missing - skypeclient will not be compiled!" >&2;}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
Index: branches/FACT++_part_filenames/configure.ac
===================================================================
--- branches/FACT++_part_filenames/configure.ac	(revision 18732)
+++ branches/FACT++_part_filenames/configure.ac	(revision 18732)
@@ -0,0 +1,616 @@
+######################################################################
+# Autoconf initial setup
+######################################################################
+
+#[AC_]PACKAGE_NAME
+#[AC_]PACKAGE_TARNAME
+#[AC_]PACKAGE_VERSION
+#[AC_]PACKAGE_STRING
+#[AC_]PACKAGE_BUGREPORT
+AC_INIT([FACT++],[1.0],[thomas.bretz@phys.ethz.ch],[FACTpp],[https://www.fact-project.org/svn/trunk/FACT++/])
+AC_PREREQ([2.65])
+AC_CONFIG_FILES([Makefile])   # causes x/Makefile.in to be created if x/Makefile.am exists
+#AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([.macro_dir])
+AC_CONFIG_AUX_DIR([.aux_dir]) # /usr/share/libtool/config /usr/share/automake-x.xx
+
+# Make sure none of the following will set -O2
+AC_ARG_ENABLE([optimization],
+    AS_HELP_STRING([--disable-optimization], [Compile with -O0 instead of -O3])
+)
+AS_IF([test "x$enable_optimization" != "xno"], [MYFLAGS+=" -O3"], [MYFLAGS+=" -O0"])
+
+AC_ARG_ENABLE([debug],
+    AS_HELP_STRING([--enable-debug], [Compile with debugging symbols (-g)])
+)
+AS_IF([test "x$enable_debug" = "xyes"], [MYFLAGS+=" -g"])
+
+CFLAGS+=$MYFLAGS
+CXXFLAGS+=$MYFLAGS
+
+AC_PROG_CC([gcc])
+AC_PROG_CXX([g++])
+
+COLORGCC=`which colorgcc`
+AS_IF([test -n "$COLORGCC"], [
+    AC_CONFIG_LINKS([g++:$COLORGCC gcc:$COLORGCC])
+    PATH=./:$PATH
+])
+
+#AC_PROG_CC_C99
+AC_PROG_CC_STDC
+
+######################################################################
+# GNUC extension support (needed for the event builder)
+######################################################################
+
+AC_USE_SYSTEM_EXTENSIONS(_GNU_SOURCE)
+
+######################################################################
+# Check for right C++ standard
+######################################################################
+
+#AC_CXX_HEADER_STDCXX_0X
+AC_CXX_COMPILE_STDCXX_0X
+AS_IF([test "$ax_cv_cxx_compile_cxx0x_cxx" != yes], 
+   AC_MSG_ERROR([C++0x standard (-std=c++0x) not supported by compiler.]))
+
+# Postponed after the BOOST library tests otherwise the check for boost::thread fails
+#CXXFLAGS+=" -std=c++0x"
+
+PKG_CHECK_MODULES(DBUS, dbus-1 dbus-glib-1, HAVE_DBUS=yes, HAVE_DBUS=no)
+
+CPPFLAGS+=" `pkg-config --cflags dbus-1 dbus-glib-1`"
+LDFLAGS+=" `pkg-config --libs dbus-1 dbus-glib-1`"
+
+# dbus-1
+# dbus-glib-1
+# QtOpenGL
+# gl
+# QtCore
+# cfitsio
+
+######################################################################
+# Setup the libtool and the language
+######################################################################
+
+AM_PROG_AR
+LT_INIT([disable-static])
+AC_LANG(C++)
+#AC_PATH_XTRA
+
+######################################################################
+# Automake initial setup
+######################################################################
+AM_INIT_AUTOMAKE([1.11 -Wall subdir-objects std-options no-define color-tests parallel-tests silent-rules])
+AM_SILENT_RULES([yes])
+
+AM_PROG_CC_C_O
+
+######################################################################
+# DOXYGEN SUPPORT
+######################################################################
+
+### FIXME: Need a configure commandline switch
+DX_ENV_APPEND(EXTRACT_ALL, YES)
+DX_ENV_APPEND(RECURSIVE,   YES)
+DX_ENV_APPEND(ALL_GRAPHS,  NO)  # change to yes to switch on call(er) graphs
+
+#DX_DOXYGEN_FEATURE(ON)
+DX_DOT_FEATURE(ON)                # sets HAVE_DOT
+#DX_HTML_FEATURE(ON)              # sets GENERATE_HTML (default)
+#DX_CHM_FEATURE(ON|OFF)           # sets GENERATE_HTMLHELP
+#DX_CHI_FEATURE(ON|OFF)           # sets GENERATE_CHI
+#DX_MAN_FEATURE(ON)               # sets GENERATE_MAN (segfaults)
+#DX_RTF_FEATURE(ON|OFF)           # sets GENERATE_RTF
+#DX_XML_FEATURE(ON|OFF)           # sets GENERATE_XML
+#DX_PDF_FEATURE(ON|OFF)           # sets GENERATE_PDF (default)
+DX_PS_FEATURE(OFF)                # sets GENERATE_PS  (default)
+DX_INIT_DOXYGEN($PACKAGE_NAME)#, DOXYFILE-PATH, [OUTPUT-DIR])
+
+#USE_HTAGS              = $(USE_HTAGS)
+
+######################################################################
+# pthread/Readline/NCurses (pthread needed by dim and boost)
+######################################################################
+
+AC_LANG_PUSH(C)
+
+# Check for math library (some linux need this to compile cfitsio)
+AC_CHECK_LIB([m],[cos])
+
+# Needed to compile dim
+ACX_PTHREAD
+
+CPPFLAGS+=" "$PTHREAD_CFLAGS
+LDFLAGS+=" "$PTHREAD_CFLAGS
+
+
+# Needed to compile FACT++
+AC_CHECK_READLINE
+AS_IF([test "x$have_readline" != "xyes"], 
+   AC_MSG_ERROR([The readline library is not properly installed.]))
+
+CPPFLAGS+=" "$READLINE_INCLUDES
+LDFLAGS+=" "$READLINE_LIBS
+
+# Needed to compile FACT++
+AC_CHECK_HEADERS([panel.h],, 
+   AC_MSG_ERROR([ncurses header not found]))
+   
+# Needed to compile FACT++
+AC_CHECK_LIB(panel, update_panels,, 
+   AC_MSG_ERROR([ncurses panel library not found]))
+
+# Xm.h (lesstif/motif, needed to compile did)
+AC_FIND_MOTIF
+
+CPPFLAGS+=" "$MOTIF_INCL
+LDFLAGS+=" "$MOTIF_LDFLAGS
+
+AM_COND_IF(HAS_LIBXP,, 
+   AC_MSG_WARN([ Motif/lesstif not found!])
+)
+
+# Required in did.c
+LDFLAGS+=" -lXt -lX11 "
+
+# Check for zlib and exit with error if not found (defines HAVE_LIBZ)
+AC_CHECK_PACKAGE(zlib, inflateEnd, z, zlib.h,
+		 HAVE_ZLIB=yes, HAVE_ZLIB=no)
+
+# Check for GL and GLU needed for the raw event viewer
+AC_CHECK_PACKAGE(GL, glLoadIdentity, GL, GL/gl.h, HAVE_GL=yes, HAVE_GL=no)
+AC_CHECK_PACKAGE(GLU, gluNewTess, GLU, GL/glu.h, HAVE_GLU=yes, HAVE_GLU=no)
+
+# Check for libnova
+AC_CHECK_PACKAGE(nova, ln_get_julian_from_sys, nova, libnova/julian_day.h, HAVE_NOVA=yes, HAVE_NOVA=no)
+
+# Taken from http://code.google.com/p/autoconf-gl-macros/
+#AX_CHECK_GL
+#AX_CHECK_GLU
+#AX_CHECK_GLUT
+
+# Needed to compile FACT++
+AC_CHECK_PACKAGE(cfitsio, ffpss, cfitsio, fitsio.h, 
+		 HAVE_CFITSIO=yes, HAVE_CFITSIO=no)
+
+#AC_CHECK_HEADERS([fitsio.h],,AC_MSG_ERROR([cfitsio headers not found]))
+#AC_CHECK_LIB([cfitsio], main,,AC_MSG_ERROR([cfitsio library not found]))
+
+AC_LANG_POP(C)
+
+# Needed to compile FACT++
+AC_CHECK_PACKAGE(ccfits, main, CCfits, CCfits/CCfits, 
+		 HAVE_CCFITS=yes, HAVE_CCFITS=no)
+
+#AC_CHECK_HEADERS([CCfits/CCfits],,
+#   AC_MSG_ERROR(CCfits headers not found))
+#AC_CHECK_LIB(CCfits, main,,
+#   AC_MSG_ERROR(CCfits library not found))
+
+######################################################################
+# MySQL(++) SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+MYSQL_DEVEL
+MYSQLPP_DEVEL
+
+LDFLAGS+=" -lmysqlpp"
+
+######################################################################
+# BOOST SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+AX_BOOST_BASE([1.40], [],
+   AC_MSG_ERROR([The boost C++ libraries (>=1.40) are not properly installed.])
+)
+
+AC_MSG_CHECKING([for BOOST_CPPFLAGS])
+AC_MSG_RESULT([$BOOST_CPPFLAGS])
+
+AC_MSG_CHECKING([for BOOST_LDFLAGS])
+AC_MSG_RESULT([$BOOST_LDFLAGS])
+
+# Keep this order AX_BOOST_FILESYSTEM needs AX_BOOST_SYSTEM_LIB
+AX_BOOST_SYSTEM
+AS_IF([test "x$ax_cv_boost_system" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::System libarary.]))
+
+AX_BOOST_ASIO
+AS_IF([test "x$ax_cv_boost_asio" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::ASIO libarary.]))
+
+AX_BOOST_DATE_TIME
+AS_IF([test "x$ax_cv_boost_date_time" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Date_Time libarary.]))
+
+AX_BOOST_FILESYSTEM
+AS_IF([test "x$ax_cv_boost_filesystem" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Filesystem libarary.]))
+
+AX_BOOST_PROGRAM_OPTIONS
+AS_IF([test "x$ax_cv_boost_program_options" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Program_Options libarary.]))
+
+AX_BOOST_REGEX
+AS_IF([test "x$ax_cv_boost_regex" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Regex libarary.]))
+
+AX_BOOST_THREAD
+AS_IF([test "x$ax_cv_boost_thread" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Thread libarary.]))
+#AX_BOOST_IOSTREAMS
+#AX_BOOST_PYTHON
+#AX_BOOST_SERIALIZATION
+#AX_BOOST_SIGNALS
+#AX_BOOST_TEST_EXEC_MONITOR
+#AX_BOOST_UNIT_TEST_FRAMEWORK
+#AX_BOOST_WAVE
+#AX_BOOST_WSERIALIZATION
+
+LDFLAGS+=" "$BOOST_LDFLAGS
+LDFLAGS+=" "$BOOST_SYSTEM_LIB
+LDFLAGS+=" "$BOOST_ASIO_LIB
+LDFLAGS+=" "$BOOST_DATE_TIME_LIB
+LDFLAGS+=" "$BOOST_FILESYSTEM_LIB
+LDFLAGS+=" "$BOOST_PROGRAM_OPTIONS_LIB
+LDFLAGS+=" "$BOOST_REGEX_LIB
+LDFLAGS+=" "$BOOST_THREAD_LIB
+
+CPPFLAGS+=" "$BOOST_CPPFLAGS
+
+# Now we can safely add the compiler option for your prefered standard
+CXXFLAGS+=" -DTTTT -std=c++0x -DXXX "
+
+#AC_CHECK_HEADERS(
+#   [\
+#      boost/bind.hpp \
+#      boost/lexical_cast.hpp \
+#      boost/filesystem.hpp \
+#      boost/thread.hpp \
+#      boost/function.hpp \
+#      boost/regex.hpp \
+#      boost/asio.hpp \
+#      boost/enable_shared_from_this.hpp \
+#      boost/asio/deadline_timer.hpp \
+#      boost/date_time/posix_time/posix_time.hpp \
+#      boost/date_time/local_time/local_time.hpp \
+#      boost/date_time/gregorian/gregorian.hpp 
+#   ], [],
+#   [
+#      echo "Error! At least one needed header of the boost C++ libararies is missing." 
+#      exit -1
+#   ]
+#)
+
+######################################################################
+# v8 / JavaScript
+######################################################################
+
+AC_CHECK_CLASS(v8, [v8::HandleScope handle_scope], v8, v8.h, 
+	HAVE_V8=yes, HAVE_V8=no)
+
+######################################################################
+# QT4/GUI SUPPORT
+######################################################################
+
+AC_ARG_WITH([qt4], 
+   [AS_HELP_STRING([--without-qt4], [Disable qt4, i.e. disable gui support.])],
+   [], [QT4_DO_IT_ALL])
+
+# This allows to list the QT4 stuff independantly later
+CPPFLAGS+=" "${QT4_INCLUDES}" "
+LDFLAGS+=" -lQtCore "
+AC_CHECK_CLASS(QGL, [QGLWidget qgl], QtOpenGL, QtOpenGL/QGLWidget,
+	HAVE_QGL=yes, HAVE_QGL=no)
+AC_CHECK_CLASS(qwt, [QwtPlot qwt],   qwt-qt4,  qwt_plot.h,
+	HAVE_QWT=yes, HAVE_QWT=no)
+
+######################################################################
+# ROOT SUPPORT
+######################################################################
+
+AC_ARG_WITH([root], 
+   [AS_HELP_STRING([--without-root], [Disable root, i.e. disable gui support.])],
+   [], [ROOT_PATH([5.12/00])]
+)
+
+if [test "$ROOTEXEC" != no -a -n "$ROOTVERSION"]  ;
+then
+
+   ROOTCPPFLAGS=$ROOTCFLAGS
+   ROOTCXXFLAGS=$ROOTAUXCFLAGS
+   ROOTLDFLAGS="-L"$ROOTLIBDIR
+
+   #AC_CHECK_PROG(HAVE_ROOT_QT, libGQt.so.$ROOTSOVERSION, yes, no, $ROOTLIBDIR)
+   #AC_CHECK_PROG(HAVE_GQT,     libGQt.so.$ROOTSOVERSION, yes, no, $LD_LIBRARY_PATH)
+
+   # It seems it dooesn't work on older root versions
+   ROOT_FEATURE([qt], [HAVE_ROOT_QT=yes])
+
+   AC_SUBST(ROOTCPPFLAGS)
+   AC_SUBST(ROOTCXXFLAGS)
+   AC_SUBST(ROOTLDFLAGS)
+fi
+
+
+######################################################################
+# Check if we have colordiff to colorize 'svn diff'
+######################################################################
+
+# Nice to have to support colored diff
+AC_CHECK_PROG(COLORDIFF, colordiff,    colordiff, cat)
+AC_CHECK_PROG(GROFF,     groff,        yes, no)
+AC_CHECK_PROG(PS2PDF,    ps2pdf,       yes, no)
+AC_CHECK_PROG(HELP2MAN,  help2man,     yes, no)
+AC_CHECK_PROG(JSDOC,     jsdoc,        yes, no)
+AC_CHECK_PROG(MAILX,     mailx,        yes, no)
+AC_CHECK_PROG(CURL,      curl,         yes, no)
+
+##########################################################################
+# debug compilation support
+##########################################################################
+#
+#AC_MSG_CHECKING([whether to build with debug information])
+#AC_ARG_ENABLE([debug],
+#    [AS_HELP_STRING([--enable-debug],
+#        [enable debug data generation (def=no)])],
+#    [debugit="$enableval"],
+#    [debugit=no])
+#AC_MSG_RESULT([$debugit])
+#
+#if test x"$debugit" = x"yes"; then
+#    AC_DEFINE([DEBUG],[],[Debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -g -Wall -Werror -Wno-uninitialized -O0"
+#else
+#    AC_DEFINE([NDEBUG],[],[No-debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -O3"
+#fi
+#
+
+##########################################################################
+# produce conditionals for Makefile.am and for summary
+##########################################################################
+
+AM_CONDITIONAL(HAS_COLORDIFF, [test "$COLORDIFF" = colordiff])
+AM_CONDITIONAL(HAS_GROFF,     [test "$GROFF" = yes])
+AM_CONDITIONAL(HAS_PS2PDF,    [test "$PS2PDF" = yes])
+AM_CONDITIONAL(HAS_HELP2MAN,  [test "$HELP2MAN" = yes])
+AM_CONDITIONAL(HAS_JSDOC,     [test "$JSDOC" = yes])
+AM_CONDITIONAL(HAS_MAILX,     [test "$MAILX" = yes])
+AM_CONDITIONAL(HAS_CURL,      [test "$CURL" = yes])
+AM_CONDITIONAL(HAS_DOXYGEN,   [test "$DX_DOXYGEN"])
+AM_CONDITIONAL(HAS_DOT,       [test "$DX_DOT"])
+AM_CONDITIONAL(HAS_COLORGCC,  [test "$COLORGCC"])
+AM_CONDITIONAL(HAS_QT4,       [test "$QT4_VERSION"])
+AM_CONDITIONAL(HAS_SQL,       [test "$MYSQLPP_LIB_DIR" -a "$MYSQLPP_INC_DIR" ])
+AM_CONDITIONAL(HAS_ROOT,      [test "$ROOTEXEC" != no -a -n "$ROOTVERSION"])
+AM_CONDITIONAL(HAS_ROOT_QT,   [test "$HAVE_ROOT_QT" = yes])
+AM_CONDITIONAL(HAS_CFITSIO,   [test "$HAVE_CFITSIO" = yes])
+AM_CONDITIONAL(HAS_CCFITS,    [test "$HAVE_CCFITS" = yes])
+AM_CONDITIONAL(HAS_FITS,      [test "$HAVE_CFITSIO" = yes -a "$HAVE_CCFITS" = yes])
+AM_CONDITIONAL(HAS_ZLIB,      [test "$HAVE_ZLIB" = yes])
+AM_CONDITIONAL(HAS_GL,        [test "$HAVE_GL" = yes])
+AM_CONDITIONAL(HAS_GLU,       [test "$HAVE_GLU" = yes])
+AM_CONDITIONAL(HAS_QGL,       [test "$HAVE_QGL" = yes])
+AM_CONDITIONAL(HAS_QWT,       [test "$HAVE_QWT" = yes])
+AM_CONDITIONAL(HAS_NOVA,      [test "$HAVE_NOVA" = yes])
+AM_CONDITIONAL(HAS_DBUS,      [test "$HAVE_DBUS" = yes])
+AM_CONDITIONAL(HAS_V8,        [test "$HAVE_V8" = yes])
+
+AM_CONDITIONAL(HAS_GUI,       [test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ])
+AM_CONDITIONAL(HAS_VIEWER,    [test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_QWT" = yes])
+
+AM_CONDITIONAL(IS_FALSE,      [test "x" = "y"])
+AM_CONDITIONAL(IS_TRUE,       [test "x" = "x"])
+
+AM_COND_IF(HAS_FITS,  [AC_DEFINE(HAVE_FITS)], )
+AM_COND_IF(HAS_ROOT,  [AC_DEFINE(HAVE_ROOT)], )
+AM_COND_IF(HAS_ZLIB,  [AC_DEFINE(HAVE_ZLIB)], )
+AM_COND_IF(HAS_NOVA,  [AC_DEFINE(HAVE_NOVA)], )
+AM_COND_IF(HAS_DBUS,  [AC_DEFINE(HAVE_DBUS)], )
+AM_COND_IF(HAS_SQL,   [AC_DEFINE(HAVE_SQL)],  )
+AM_COND_IF(HAS_V8,    [AC_DEFINE(HAVE_V8)],   )
+AM_COND_IF(HAS_MAILX, [AC_DEFINE(HAVE_MAILX)],)
+AM_COND_IF(HAS_CURL,  [AC_DEFINE(HAVE_CURL)],)
+
+##########################################################################
+# print summary
+##########################################################################
+
+AC_OUTPUT
+
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(============================== summary =============================)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CFLAGS   = $CFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CXXFLAGS = $CXXFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CPPFLAGS = $CPPFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ LDFLAGS  = $LDFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ BOOST_CPPFLAGS = $BOOST_CPPFLAGS])
+AC_MSG_NOTICE([ BOOST_LDFLAGS  = $BOOST_LDFLAGS])
+AC_MSG_NOTICE()
+AM_COND_IF(HAS_SQL, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR])
+   AC_MSG_NOTICE([ MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR])
+   AC_MSG_NOTICE()
+],[])
+AM_COND_IF(HAS_QT4, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ QT4_VERSION  = $QT4_VERSION])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ QT4_LIB      = $QT4_LIB])
+   AC_MSG_NOTICE([ QT4_LDFLAGS  = $QT4_LDFLAGS])
+   AC_MSG_NOTICE([ QT4_INCLUDES = $QT4_INCLUDES])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ MOC4 = $MOC4])
+   AC_MSG_NOTICE([ UIC4 = $UIC4])
+   AC_MSG_NOTICE([ RCC4 = $RCC4])
+   AC_MSG_NOTICE()
+],[])
+AM_COND_IF(HAS_ROOT, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ ROOTVERSION   = $ROOTVERSION])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ ROOTEXEC      = $ROOTEXEC])
+   AC_MSG_NOTICE([ ROOTCONF      = $ROOTCONF])
+   AC_MSG_NOTICE([ ROOTCINT      = $ROOTCINT])
+   AC_MSG_NOTICE([ ROOTCPPFLAGS  = $ROOTCPPFLAGS])
+   AC_MSG_NOTICE([ ROOTCXXFLAGS  = $ROOTCXXFLAGS])
+   AC_MSG_NOTICE()
+],[])
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ zlib                   / 'zlib.h'           found: $HAVE_ZLIB])
+AC_MSG_NOTICE([ nova                   / libnova.so         found: $HAVE_NOVA])
+AC_MSG_NOTICE([ v8                     / 'v8.h' / libv8.so  found: $HAVE_V8])
+AC_MSG_NOTICE([ GL                     / GL/gl.h            found: $HAVE_GL])
+AC_MSG_NOTICE([ GLU                    / GL/glu.h           found: $HAVE_GLU])
+AC_MSG_NOTICE([ QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL])
+AC_MSG_NOTICE([ Qwt                    / qwt_plot.h         found: $HAVE_QWT])
+AC_MSG_NOTICE([ cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO])
+AC_MSG_NOTICE([ CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS])
+AM_COND_IF(HAS_SQL,
+   AC_MSG_NOTICE([ MySQL/MySQL++          / 'mysql++.h'        found: yes]),
+   AC_MSG_NOTICE([ MySQL/MySQL++          / 'mysql++.h'        found: no])
+)
+AC_MSG_NOTICE([ DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS])
+AM_COND_IF(HAS_LIBXP,
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes]),
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no])
+)
+AM_COND_IF(HAS_COLORDIFF,
+   AC_MSG_NOTICE([ colored svn diff       / 'colordiff'        found: yes]),
+   AC_MSG_NOTICE([ colored svn diff       / 'colordiff'        found: no])
+)
+AM_COND_IF(HAS_JSDOC,
+   AC_MSG_NOTICE([ JavaScript docu        / 'jsdoc'            found: yes]),
+   AC_MSG_NOTICE([ JavaScript docu        / 'jsdoc'            found: no])
+)
+AM_COND_IF(HAS_V8,[
+   AM_COND_IF(HAS_MAILX,
+      AC_MSG_NOTICE([ Mail support           / 'mailx'            found: yes]),
+      AC_MSG_NOTICE([ Mail support           / 'mailx'            found: no])
+   )
+   AM_COND_IF(HAS_CURL,
+      AC_MSG_NOTICE([ Curl support           / 'curl'             found: yes]),
+      AC_MSG_NOTICE([ Curl support           / 'curl'             found: no])
+   )
+])
+
+AM_COND_IF(HAS_HELP2MAN,[
+   AC_MSG_NOTICE([ man-pages enabled      / 'help2man'         found: $HELP2MAN])
+   AM_COND_IF(HAS_GROFF,
+      AC_MSG_NOTICE([ build of html enabled  / 'groff'            found: yes])
+      AC_MSG_NOTICE([ build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF]),
+      AC_MSG_NOTICE([ build of html and pdf  / 'groff'            found: no])
+   )
+],[
+   AC_MSG_NOTICE([ man, html, pdf enabled / 'help2man'         found: no])
+])   
+
+AM_COND_IF(HAS_DOXYGEN,
+   AC_MSG_NOTICE([ doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN]),
+   AC_MSG_NOTICE([ doxygen docu enabled   / 'doxygen'          found: no])
+)
+AM_COND_IF(HAS_DOT,
+   AC_MSG_NOTICE([ doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT]),
+   AC_MSG_NOTICE([ doxygen graphs enabled / 'dot' (graphviz)   found: no])
+)
+AM_COND_IF(HAS_QT4,
+   AC_MSG_NOTICE([ QT4 support enabled    /  QT4 toolkit       found: yes]),
+   AC_MSG_NOTICE([ QT4 support enabled    /  QT4 toolkit       found: no])
+)
+AC_MSG_NOTICE([ ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC])
+AM_COND_IF(HAS_ROOT_QT,
+   AC_MSG_NOTICE([ ROOT built with --with-qt                   found: yes]),
+   AC_MSG_NOTICE([ ROOT built with --with-qt                   found: no])
+)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([Suggestions and hints:])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ - Add 'V=1' to you make-call to switch on verbose output.])
+AC_MSG_NOTICE([ - Do not try to create man-pages with doxygen,])
+AC_MSG_NOTICE([   it does most probably not work.])
+AM_COND_IF(HAS_COLORGCC,,
+   AC_MSG_NOTICE([ - Install colorgcc to get colored compiler output.])
+)
+AC_MSG_NOTICE([ - If you send me a bug report about:])
+AC_MSG_NOTICE([   + configure: please attach the file config.log])
+AC_MSG_NOTICE([   + make: please send me the output of 'make V=1'])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([Some interesting build targets:])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ diff:          colored 'svn diff' if colordiff is installed])
+AM_COND_IF(HAS_HELP2MAN,[
+   AC_MSG_NOTICE([ program.man:   build man-page from 'program --help'])
+   AC_MSG_NOTICE([                (display with 'man ./program.man')])
+   AM_COND_IF(HAS_GROFF,[
+      AC_MSG_NOTICE([ program.html:  build html page from man-page])
+      AM_COND_IF(HAS_PS2PDF,
+         AC_MSG_NOTICE([ program.pdf:   build pdf documentation from man page])
+      )
+   ])
+])
+AM_COND_IF(HAS_DOXYGEN,
+   AC_MSG_NOTICE([ doxygen-run:   build html documentation with doxygen])
+#   AC_MSG_NOTICE([ doxygen-doc:   build html and pdf documentation with doxygen])
+)
+AM_COND_IF(HAS_JSDOC,
+   AC_MSG_NOTICE([ jsdoc:         build JavaScript documentation with jsdoc])
+)
+AC_MSG_NOTICE([ doc:           build all buildable documentation])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AM_COND_IF(HAS_ZLIB,, 
+   AC_MSG_WARN([ zlib not found. Support for reading .fits.gz disabled.])
+)
+AM_COND_IF(HAS_LIBXP,, 
+   AC_MSG_WARN([ Motif/lesstif not found. The dim gui did will not be built!])
+)
+AM_COND_IF(HAS_FITS,, 
+   AC_MSG_WARN([ FITS support disabled. cfitsio/CCfits missing!])
+)
+AM_COND_IF(HAS_ROOT,  
+   [AM_COND_IF(HAS_ROOT_QT,, 
+      AC_MSG_WARN([ root found but it was built without the --with-qt option])
+   )],
+   AC_MSG_WARN([ root not found - ROOT support disabled.])
+)
+AM_COND_IF(HAS_QT4,, AC_MSG_WARN([ QT4 missing - GUIs disabled!]))
+AM_COND_IF(HAS_GL,,  AC_MSG_WARN([ GL not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_GLU,, AC_MSG_WARN([ GLU not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_QGL,, AC_MSG_WARN([ QtOpenGl not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_QWT,, AC_MSG_WARN([ Qwt not found - viewer will be disabled.]))
+AM_COND_IF(HAS_GUI, [], 
+      AC_MSG_WARN([ Either of the necessary packages not found - fact GUI disabled!])
+)
+AM_COND_IF(HAS_VIEWER, [], 
+      AC_MSG_WARN([ Either of the necessary packages not found - viewer GUI disabled!])
+)
+AM_COND_IF(HAS_JSDOC,,   AC_MSG_WARN([ JavaScript documentation disabled!]))
+AM_COND_IF(HAS_MAILX,,   AC_MSG_WARN([ Mail functionality in JavaScript disabled!]))
+AM_COND_IF(HAS_CURL,,    AC_MSG_WARN([ Curl functionality in JavaScript disabled!]))
+AM_COND_IF(HAS_SQL,,     AC_MSG_WARN([ database support globally disabled!]))
+AM_COND_IF(HAS_NOVA,,    AC_MSG_WARN([ libnova missing - smartfact will be compiles without astronomy support!]))
+AM_COND_IF(HAS_V8,,      AC_MSG_WARN([ libv8 missing - JavaScript support will be disabled!]))
+AM_COND_IF(HAS_DBUS,,    AC_MSG_WARN([ DBus libraries missing - skypeclient will not be compiled!]))
+AC_MSG_NOTICE()
Index: branches/FACT++_part_filenames/dim/LICENSE.GPL
===================================================================
--- branches/FACT++_part_filenames/dim/LICENSE.GPL	(revision 18732)
+++ branches/FACT++_part_filenames/dim/LICENSE.GPL	(revision 18732)
@@ -0,0 +1,20 @@
+DIM - Distributed Information Management System
+
+Copyright (C) 1993 CERN
+Author: C. Gaspar (clara.gaspar@cern.ch)
+
+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 at:
+http://www.opensource.org/licenses/gpl-license.html
+
+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
+
Index: branches/FACT++_part_filenames/dim/README.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README.txt	(revision 18732)
@@ -0,0 +1,112 @@
+
+                    DIM version 9.8 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 908
+	(version 9.8).
+  
+Changes for version 9.0:
+
+   In order to increase the compatibility between Windows and Linux and
+   to respect CVS rules the following modifications have been done:
+
+      - C++ files have been renamed from .cc to .cxx and include files from
+	.hh to .hxx
+
+      - Include files are in "./dim" directory
+        (Source files are now in the "./src" directory)
+
+      - Windows executables and libraries are in "./bin"
+      - Linux executables and libraries are "./linux"
+
+      - Windows developper studio setting are in "./Visual"
+      - Linux Makefiles are in the top directory
+
+Changes for version 9.1:
+
+    Fixed some "Harp" problems:
+      - Fixed a bug causing a loop in the timer handling 
+      - Optimized dns connection handling for many services
+      - Fixed a re-connection bug for clients 
+      
+Changes for version 9.2:
+
+      - Created the static methods:
+		DimServer::autoStartOff();
+		DimServer::autoStartOn();
+	Which prevents/allows DimServices to be declared to the Name Server as
+	soon as they are created. if "autoStart" is set Off the user has to call
+	DimServer::start(char *serverName) when all services have been declared.
+	By default autoStart is On
+
+Changes for version 9.3:
+
+      - Created a new Utility: DimBridge - It forwards DIM Services (and Commands)
+	from one Name Server to another (to bypass firewalls)
+      - Fixed a bug in tcpip.c - which prevents a DIM Server to send test messages to
+	himself (related to the above utility).
+
+Changes for version 9.4:
+
+      - Merged DID and XDID (DID should now work on all UNIX flavours)
+      - Allow users to select the ethernet interface (or to specify a complete 
+        ipname, with the domain, when not available by default):
+		setenv DIM_HOST_NODE <ipname>
+	Before starting up a DIM server 
+ 
+Changes for version 9.5:
+
+      - Added an environment variable DIM_DNS_PORT allowing users to specify a
+	different port number (default is 2505) for the DNS. This allows 
+	starting more than one DIM Name Servers (DNSs) on the same machine.
+      - Accomodated for a Solaris "feature": ioctl FIONREAD which should 
+        return the number of bytes waiting to be read on a socket sometimes 
+	returns '0' when there are bytes to read. This provoked undesired 
+        "disconnections" in BaBar.
+      - Fixed a bug related to the padding of structures (characters following
+        an odd number of shorts)
+      - Fixed a bug in the retry mechanism when writting to a full socket. The
+        problem appeared when the connection was killed while retrying.
+      - Did (Unix/Linux version) now allows sending formatted commands (i.e. 
+        structures) to a server. Also services are now visualised in a 
+	formatted manner.
+
+Changes for version 9.6:
+      - Fixed DID: it crashed when a server name was very big (Motif) and
+        it didn't remove servers that died while being in error (red).
+      - Fixed a bug in the client library: sometimes services where requested
+	from the name server more than once unnecessarily.
+      - Fixed a bug in the server library: Sometimes the server crashed if it 
+	was updating a service when the client was killed or died.
+
+Changes for version 9.7
+      - Fixed a bug introduced in version 9.6 (related to the last point).
+        Sometimes servers would leave some connections open and started using
+        all the CPU (involves dis.c and tcpip.c).
+      - Upgraded DID to support very long server names.
+
+Changes for version 9.8
+      - Fixed a bug in DID: it crashed when a service name to be viewed was
+        typed in by hand
+      - Fixed a bug in dis.c: Servers would not register their services with 
+        the DNS if the number of services was a multiple of 100.
+ 
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/FACT++_part_filenames/dim/README_v10.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v10.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v10.txt	(revision 18732)
@@ -0,0 +1,88 @@
+
+                    DIM version 10.5 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1005
+	(version 10.05).
+
+25/4/2002
+Changes for version 10.0:
+      - All source files are now common to Windows and Unix flavours 
+	(Linux included). Directories src/win and src/unix no longer 
+	necessary.
+      - Fixed hopefully all compiler warnings (especially on Solaris 8).
+      - In order to avoid potential deadlocks all tcpip writes (dna_write)
+	are done by a separate thread (the timer thread, via a special 
+	"immediate" queue). Except service updates and sending commands
+	(dna_write_nowait) since they are not blocking and to preserve
+	backward behaviour compatibility.
+      - Optimized servers, clients and the name servers for large number
+	of services
+      - Modified error messages to be more explicit
+
+01/5/2002
+Changes/Bug Fixes for Version 10.1:
+      - Fixed the DimRpc class, it would hang sometimes.
+      - Fixed a problem in the "immediate" timer handler (too slow)
+      - Added "const" to service names in DimInfo and DimService methods
+      - changed print_date_time to dim_print_date_time and made it 
+	available to users
+      - Open_dns didn't always return the correct value (DID wouldn't
+	reconnect to Dns on restart)
+      - Did (on Linux) now shows services in alphabetical order
+
+06/5/2002 
+Changes/Bug Fixes for Version 10.2:
+      - Fixed dtq.c and tcpip.c for Linux, dim_wait() would not always
+	return when required
+      - The distribution kit now also contains the shareable version of
+	the DIM library for Linux - libdim.so
+	The makefiles use the shareable version for creating Dns, Did 
+	and the examples (.setup adds dim/linux to LD_LIBRARY_PATH)  
+
+27/5/2002 
+Changes/Bug Fixes for Version 10.3:
+      - Changed dim include files not to include "windows.h" under
+	windows. This was causing a conflict with Gaudi.
+	(Had to change "DIM semaphores" from macros to subroutines)
+  
+18/7/2002 
+Changes/Bug Fixes for Version 10.4:
+      - Two consecutive client requests for the same service would not 
+	implement the "stamped" flag properly (dic.c)
+      - The DimBrowser class would not retreive service names containing
+	the character "@". Fixed.
+      - Re-fixed a bug that would make servers crash when clients exited
+	while servers were updating a service (dis.c).
+      - dtq_start_timer() did not always wait the requested amount of time.
+      - Did (Linux version) now also prints timestamp and quality flag
+	when Viewing service contents.
+  
+19/8/2002
+Changes/Bug Fixes for Version 10.5:
+      - Fixed DID for Solaris (had stopped working, Motif changed?) 
+      - Fixed a nasty bug that must have been there forever:
+	Several DIM processes (clients and Dns) execute at regular 
+	intervals a "test write" on open connections to find out the status
+	of the connection. These test writes where never cancelled when the
+	connection was closed. (noticed on Solaris/BaBar).
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/FACT++_part_filenames/dim/README_v11.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v11.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v11.txt	(revision 18732)
@@ -0,0 +1,96 @@
+
+                    DIM version 11.7 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1107
+	(version 11.07).
+
+23/8/2002
+Changes for version 11.0:
+      - Made Did (Solaris and Linux) run single threaded (to fix some
+	strange behaviour of Motif) 
+      - Created an "util" directory under "src". To keep DIM utilities.
+	Modified all makefiles and Visual Studio accordingly
+
+08/9/2002
+Changes for version 11.1:
+      - Fixed dnsExists on Solaris. Now dtq.c uses select instead of 
+	usleep (usleep is not thread safe). 
+
+12/9/2002
+Changes for version 11.2:
+      - dim_send_command and dim_get_service utilities where hanging on 
+	windows - fixed.  
+
+22/10/2002
+Changes for version 11.3:
+      - Replaced usleep by select in Did (linux), it was creating a 
+	deadlock with signals. (Did is not multithreaded because of 
+	Motif)
+      - Fixed two bugs in Dns - one is a design flaw, it was creating 
+	too many timer entries unnecessarily and using a lot of CPU 
+	(just to update did).
+	The second happened when a server tried to declare an existing 
+	service. The Dns correctly tried to kill the server, but if the 
+	server didn't die than the Dns would keep the connection busy 
+	instead of disconnecting it.
+      - The feature whereby a server disconnects after a timeout from a 
+	hanging (not consuming the data from the socket) client, in order 
+	to avoid the server hanging himself, had been commented out by
+	mistake. It's now back. 
+
+23/10/2002
+Changes for version 11.4:
+      - Related to the disconnection feature above. Replaced usleep by
+	select (with a timeout) when writing to a client. The default
+	timeout for a server to disconnect from a hanging client is now 
+	5 seconds. But it can be changed (or checked) by using:
+		- void dim_set_write_timeout(int secs)
+		- int dim_get_write_timeout()
+		or
+		- DimServer::setWriteTimeout(int secs);
+		- int DimServer::getWriteTimeout();
+ 
+31/10/2002
+Changes for version 11.5:
+      - Allowed tcpip writes to proceed in parallel with reads (in
+	different threads) in order to avoid deadlocks (this was 
+	previously protected by a semaphore).
+      - Removed old commented out code from all source files
+      (Note: These changes are not included in CVS tag v11r6)
+
+06/11/2002
+Changes for version 11.6:
+      - The Dns "forgot" to stop the test_write timer when a server
+	went into error. Fixed.
+
+25/11/2002
+Changes for version 11.7:
+      - Fixed some bugs in the RPC client implementation
+      - Created (and exported) a dim_usleep() routine based on select
+      - Implemented a dis_get_timeout(int service_id, int client_id) 
+	and a DimService::getTimeout(int client_id) which allows
+	servers to find out the timeout requested by a client
+      - When a server stopped serving a command using dis_remove_service
+	the client was not informed and continued using the "cached"
+	address instead of re-asking the name server. Fixed. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/FACT++_part_filenames/dim/README_v12.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v12.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v12.txt	(revision 18732)
@@ -0,0 +1,118 @@
+
+                    DIM version 12.11 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1211
+	(version 12.11).
+
+13/2/2003
+Changes for version 12.0:
+      - Included Java support in the same distribution kit and updated
+	the documentation on the WEB.
+	In order to make a dim shareable library to be used from java
+	on linux:
+		setenv JDK_INCLUDE <your jdk include directory>
+		gmake JDIM=yes all
+	The libraries are distributed for windows and linux 7.3
+	The java part is in jdim to run some examples:
+		java -classpath .../jdim/classes dim.test.TestServer
+		java -classpath .../jdim/classes dim.test.TestClient
+20/3/2003
+Changes for version 12.1:
+      - Removed all references to iostream.h in DIM include files and
+	source files in order to support Linux RedHat 8.0 and gcc 3.2
+
+19/6/2003
+Changes for version 12.2:
+      - Fixed a bug in the DimTimer class
+      - Added a missing "destructor" for DimCommand in Java.
+
+23/6/2003
+Changes for version 12.2-1:
+      - Changed the directory structure under jdim to respect the Java 
+	conventions
+
+02/7/2003
+Changes for version 12.3:
+      - Fixed a bug that made clients crash when a server released a 
+	command service.
+	Added the possibility of sending mixed services in the Java
+	implementation.
+
+04/7/2003
+Changes for version 12.3-1:
+      - The Java version was not correct in the previous ZIP 
+	(the loading of jdim.dll was not done properly)
+
+24/7/2003
+Changes for version 12.4:
+      - Fixed a bug in Did related to the size of displayed services
+      - Fixed a memory leak when servers received commands
+
+01/8/2003
+Changes for version 12.5:
+      - Clients would sometimes crash when receiving data for a service 
+	which they had just released, fixed.
+      - Clients could also potencially crash when failing to write to a 
+	server that had just disconnected, fixed.
+
+20/8/2003
+Changes for version 12.6:
+      - Clients would crash when releasing the same service twice, 
+	fixed.
+      - Exported through JNI the possibility of protecting DIM critical 
+	sections, so that dim_lock and dim_unlock can be used from Java.
+
+26/8/2003
+Changes for version 12.7:
+      - A client would sometimes crash when releasing the service inside
+	the service's callback. Fixed.
+      - A client would also sometimes crash if it releasead a service while
+	still connecting to this service. I.e. if a dic_info_service was 
+	immediately followed by a dis_release_service. Fixed.
+      - The server could also crash or hang is still connecting to a client 
+	when the service was removed. Fixed
+      - Found and fixed a small memory lead (allocating ids)
+	
+01/9/2003
+Changes for version 12.8:
+      - Implemented "short" and "longlong" (64 bit integer) in the C++ version
+	of both, servers and clients.
+      - Implemented boolean, byte, short and long in the Java version. 
+	
+03/9/2003
+Changes for version 12.9:
+      - Protected dis_set_quality and dis_set_timestamp against bad service_ids.
+      - Alowed dis_stop_serving() to be called before any dis_start_serving(),
+	before it would crash. 
+
+05/9/2003
+Changes for version 12.10:
+      - dis_stop_serving would sometimes crash when called from dis_remove_service,
+	fixed. 
+
+25/9/2003
+Changes for version 12.11:
+      - dic_command_callback() would sometimes not send the command if the 
+	callback reception immediatelly terminated the program. I.e. 
+	dim_send_command might not actually send the command. Fixed.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/FACT++_part_filenames/dim/README_v13.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v13.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v13.txt	(revision 18732)
@@ -0,0 +1,110 @@
+
+                    DIM version 13.10 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1310
+	(version 13.10).
+
+06/10/2003
+Changes for version 13.0:
+      - Fixed all know bugs resulting from:
+	- A modification done since v12 which allowed tcpip writes to 
+	  proceed in parallel with reads (in a different thread). This 
+	  created a few problems with the timming of connections and 
+	  disconnections.
+	- Extensive tests of the Java interface to DIM due to the DIP
+	  implementation tests.
+
+14/10/2003
+Changes for version 13.1:
+      - Fixed an extra bug related to having servers and clients within
+	the same process.
+
+13/11/2003
+Changes for version 13.2:
+      - Fixed a bug in the RPC client - the size of the message was 
+	sometimes wrong.
+      - When the number of DIM services declared by a server was a
+        multiple of 100 the clients would not get updated on server
+	restart - Fixed.
+      - If a client exited immediately after a command with callback
+        The server would sometimes not get the command - hopefully
+	fixed. 
+	Note: This is still the case for a command without callback 
+	(this is a feature of the asynchronous method). 
+
+2/12/2003
+Changes for version 13.3:
+      - Fixed the linux makefile (realclean).
+      - the C++ version of stop timer now returns the number of seconds 
+	left to sleep (used to be void).
+ 
+13/01/2004
+Changes for version 13.4:
+      - The DNS now accepts an environment variable "DIM_DNS_ACCEPTED_DOMAINS".
+	It will refuse connections from servers running outside these domains
+	(actually, at the moment it will kill the servers -> to be modified).
+	Ex.: DIM_DNS_NODE=cern.ch,slac.stanford.edu
+      - the Java version now implements a DimBrowser class, similar to the C++ 
+	one. And the complex data types are better handled.
+ 
+27/01/2004
+Changes for version 13.5:
+      - A socket close modification since v12r8 for Linux was causing problems,
+	put back as it was.
+      - dim_send_command had a limitation to 80 characters for a DIM service
+	name for no reason. DIM service names are limited to 128 characters.
+
+28/01/2004
+Changes for version 13.6:
+      - When sending an EXIT command to a server the client wouldn't behave
+	properly on Linux - fixed 
+
+30/01/2004
+Changes for version 13.7:
+      - Commands would sometimes be remembered by a client and sent later when
+	the server started up - fixed!
+
+06/02/2004
+Changes for version 13.8
+      - The Name server would only remember server names up to 40 characters,
+	so when asked for the list of servers known it would truncate the names.
+	Fixed.
+      - The handling of disconnections/reconnections for very "fast" servers was
+	causing problems to the client: callback not called or reconnection failed.
+	fixed.
+
+27/02/2004
+Changes for version 13.9
+      - Replaced "ctime()" in dim_print_date_time() by its reentrant version ctime_r
+	for the Linux version.
+      - Added selectiveUpdateService() to the methods in the Java class DimService.
+      - The user set server timestamp was being reset (and replaced by the current
+	time) if the service was sent to several clients - Fixed.
+      - Sometimes DIM commands could go out of order if a client was sending the same
+	command (different data) out very fast - fixed.
+
+16/03/2004
+Changes for version 13.10
+      - Fixed the DimBrowser Java class
+      - The timer thread was sometimes not counting time properly when interrupted
+	every second -> fixed.
+      - The Client sometimes forgot to call the command callback when the DNS died
+	while sending a command with callback -> fixed. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v14.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v14.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v14.txt	(revision 18732)
@@ -0,0 +1,290 @@
+
+                    DIM version 14.07 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1407
+	(version 14.07).
+
+07/04/2004
+Changes for version 14.0:
+      - Spring Cleanup
+	Cleaned up inline methods out of include files.
+	Fixed some virtual destructors
+	Removed some unnecessary system include files
+	Fixed ctime_r to work on all platforms (Solaris, LynxOS too)
+
+21/04/2004
+Changes for version 14.1:
+      - Now if a server declares an exit handler (DimServer::addExitHandler
+	or dis_add_exit_handler) the user is responsible for exiting.
+	DIM will not exit by itself anymore.
+      - The windows version now also distributes MSVCRTD.DLL.
+      - Fixed a bug where servers could get confused if similar longish
+	service names were used in different servers.   
+
+18/05/2004
+Changes for version 14.2:
+      - Cleaned up some "C" warnings
+      - Linux Did didn't display RPC formats properly - fixed.
+      - RPC structures were not transfered correctly back to the client,
+	the format of the structure was currupted - fixed.
+      - Added a New constructor and updateService method for the Java class 
+	DimService. These allow the creation and update of a DimService by
+	passing another DimService. The data and format of the DimService
+	will be copied to the new one. Usefull for structured data.
+
+02/06/2004
+Changes for version 14.2-1:
+      - Fixed a bug in the java version that would make DIP crash when 
+	extracting data items (file format.java)
+
+12/06/2004
+Changes for version 14.3:
+
+      - DIM Server Exit_handler: A server can specify an exit handler
+	by using:
+		dis_add_exit_handler(exitHandler) or 
+		DimServer::addExitHandler()/virtual void exitHandler()
+	The exitHandler will be called in the following conditions:
+		- DNS node undefined
+		- Services already declared in DNS
+		- DNS doesn't accept connections from this machine
+		- An EXIT command from a client
+	If the user doesn't declare an exit handler, the DIM server will
+	exit, otherwise it is up to the user.
+
+      - DIM Error_handler: A server or a client can specify an error_handler
+	by using:
+		dis_add_error_handler(errorHandler)
+		dic_add_error_handler(errorHandler) 
+		DimServer::addErrorHandler()/virtual void errorHandler(...)
+		DimClient::addErrorHandler()/virtual void errorHandler(...) 
+	The error_handler will be called whenever DIM wants to report an 
+	error (in this case all stdout/stderr prints will be suppressed).
+	The errorHandler is called with the following parameters:
+		int severity:
+			0: info
+			1: warning
+			2: error
+			3: fatal
+		int error_code
+			possible codes listed in dim_common.h
+		char *msg
+	If the user declared an error handler for a server and an error with
+	severity = fatal is received the exit handler will also be called.
+	For a client if an error with severity = fatal is received and there
+	is no error handler declared the process will exit.
+
+      - Java DIM: the same functionality is available in the form of a 
+	DimErrorHandler class and a DimExitHandler class which can be used as 
+	in the example:
+	public static void main(String[] args) {
+		DimErrorHandler erid = new DimErrorHandler()
+		{
+			public void errorHandler(int severity, int code, String msg)
+			{
+				System.out.println("Error: "+msg+" sev: "+
+					severity);
+			}
+		};
+		DimExitHandler exid = new DimExitHandler()
+		{
+			public void exitHandler(int code)
+			{
+				System.out.println("Exit: "+code);
+			}
+		};
+		...
+
+      - Getting and Setting the DIM_DNS_NODE from a program:
+	The calls:
+		dim_set_dns_node
+		dim_get_dns_node 
+        and the corresponding C++ calls:
+		DimServer::setDnsNode and DimServer::getDnsNode, 
+		DimClient::setDnsNode and DimClient::getDnsNode
+ 	already existed, 
+	they have now been complemented with:
+		dim_set_dns_port
+		dim_get_dns_port
+	and the static C++ calls: 
+		DimServer::setDnsNode(node, port),DimServer::getDnsPort(), 
+		DimClient::setDnsNode(node, port), DimClient::getDnsPort()
+
+      - In Java the folowing methods have been added to the classes DimServer
+	and DimClient:	
+		public static void setDnsNode(String nodes);
+		public static void setDnsNode(String nodes, int port);
+		public static String getDnsNode();
+		public static int getDnsPort();
+
+      - the Java method DimService.getName() has been added.
+
+      - In C++ the creation of a new DimService could fail, for example, if
+	the service already existed in this server, this was not reported, since
+	a constructor can't return a value.
+	With the new error handling mechanisms, a user can declare an error_handler,
+	check if the error code is DIMSVCDUPLC and generate an exception which
+	will be thrown withing the DimService creation.
+      - Dim used to pass timestamps between servers and clients as an integer
+	for seconds since January 1970 and a short for milliseconds.
+	Now it will be one integer also for the milliseconds. By default DIM
+	still uses milliseconds, but if a server passes nanoseconds to 
+	dis_set_timestamp the client will receive nanoseconds when doing 
+	dic_get_timestamp.
+
+08/07/2004
+Changes for version 14.4:
+
+      - Java DIM: In order to allow a different error handler to be called for the
+	server and the client (if both in the same process) The calls:
+		DimServer.addErrorHandler(DimErrorHandler handler) and 
+		DimClient.addErrorHandler(DimErrorHandler handler)
+	Should be called respectively by the server or the client in order to install
+	the Error Handler. For compatibitlity, the call:
+		DimServer.addExitHandler(DimErrorHandler handler)
+	was also added. 
+ 
+	They can now be used as in the example (for a server):
+	public static void main(String[] args) {
+		DimErrorHandler erid = new DimErrorHandler()
+		{
+			public void errorHandler(int severity, int code, String msg)
+			{
+				System.out.println("Error: "+msg+" sev: "+
+					severity);
+			}
+		};
+		DimServer.addErrorHandler(erid);
+		DimExitHandler exid = new DimExitHandler()
+		{
+			public void exitHandler(int code)
+			{
+				System.out.println("Exit: "+code);
+			}
+		};
+		DimServer.addExitHandler(exit);
+		...
+
+      - In a server it was already possible to find out inside a callback (for example
+	when a command was received):
+	    - from which client id the message came:
+		int dis_get_conn_id()
+            - The name of this client in the form <pid>@<node_name>
+		int dis_get_client(char *name)
+	The equivalent C++ calls:
+	    	int DimServer::getClientId();
+		char *DimServer::getClientName();
+	And Java calls:
+	    	int DimServer.getClientId();
+		String DimServer.getClientName();
+	Where also available.
+
+	These calls were now complemented in 3 ways:
+	1 - They can be done also by clients to find out which server is providing a service
+	    inside a callback (for example when a service is received).
+	    For this purpose the following "C" calls where added:
+	    - from which server id the message came:
+		int dic_get_conn_id()
+            - The name of this server in the form <server_name>@<node_name>
+		int dic_get_server(char *name)
+	      And The equivalent C++ calls:
+	    	int DimClient::getServerId();
+		char *DimClient::getServerName();
+	      And Java calls:
+	    	int DimClient.getServerId();
+		String DimClient.getServerName();
+	2 - These calls are also available inside the errorHandler callbacks.
+	    Can be used to find out if the error originated from a specific connection, 
+            in which case conn_id (or clientID or ServerId) != 0. 
+	    Or if it is a generic error, afecting all connections in which case conn_id = 0.
+	3 - A new type of calls has been added which allows to find out:
+	    For a server - which services are being used by the current client (i.e. the
+	    		   client that triggered the execution of this callback)
+	    For a client - Which services are being provided by the current server (i.e
+			   the server that triggered the execution of this callback)
+
+	    This calls are the following in "C":
+		- char *dis_get_client_services(conn_id)
+		- char *dic_get_server_services(conn_id)
+		They return a list of services separated by '\n'
+	    In C++:
+		- char **DimServer::getClientServices();
+		- char **DimClient::getServerServices();
+		They return an array of pointers to service names. The array is terminated by
+		a null pointer.
+	    In Java:
+		- String[] DimServer.getClientServices();
+		- String[] DimClient.getServerServices();
+
+	An example in C++ of the usage of the new calls in an ErrorHandler:
+
+	class ErrorHandler : public DimErrorHandler
+	{
+		void errorHandler(int severity, int code, char *msg)
+		{
+			int index = 0;
+			char **services;
+			cout << severity << " " << msg << endl;
+			services = DimClient::getServerServices();
+			cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+			while(services[index])
+			{
+				cout << services[index] << endl;
+				index++;
+			}
+		}
+	public:
+		ErrorHandler() {DimClient::addErrorHandler(this);}
+	};
+
+	And in Java:
+
+	...
+	DimErrorHandler eid = new DimErrorHandler()
+	{
+		public void errorHandler(int severity, int code, String msg)
+		{
+			System.out.println("Error: "+msg+" sev: "+severity);
+			String[] list = DimClient.getServerServices();
+			System.out.println("Services: ");
+			for(int i = 0; i < list.length; i++)
+				System.out.println(list[i]);
+		}
+	};
+	DimClient.addErrorHandler(eid);
+
+02/08/2004
+Changes for version 14.5:
+    - Fixed a bug in dic.c - related to commands terminating after a connection was closed,
+      affected in particular DimBrowser "RPC" calls. 
+
+02/08/2004
+Changes for version 14.6:
+    - Noticed that since the changes of version v14r4 the Dns was not printing any error
+      messages anymore - Fixed.
+    - In Windows SO_REUSEADDR doesn't work properly, so two DNSs could be running at the 
+      same time using the same port number on the same PC - Fixed, now like in Linux, the
+      second one exits (printing an error message).
+
+10/08/2004
+Changes for version 14.7:
+    - The TCPIP error "Host Unknown" was not treated or reported properly. A client could
+      report DNS found when the DNS node was set to be an unexisting machine - fixed.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v15.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v15.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v15.txt	(revision 18732)
@@ -0,0 +1,229 @@
+
+                    DIM version 15.23 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1523
+	(version 15.23).
+
+17/09/2004
+Changes for version 15.0:
+    - Changes for 64 bit machine (LP64 architecture) support
+	- All DIM "tags" are now longs instead of ints this affects:
+	    - Client callback parameters
+	    - Server callback parameters
+	    - Timer callback parameters
+	  (The reason is: tags were very often user to pass pointers) 
+	- DIM is now compiled with -fPIC by default on Linux
+	- The byte swapping and structure padding was fixed.
+
+14/10/2004
+Changes for version 15.1:
+    - Big Bug Fixed affecting the DIM_DNS for windows!!!!
+	- Windows has an hidden default limit of the number of sockets
+	  per process set to 64, only partially though, more sockets can
+	  be created with no problem but they are silently masked out
+          by the select call!
+	- Anyway this limit is now set to 1024.
+    - removed a few print statements.
+
+28/10/2004
+Changes for version 15.2:
+    - Removed some C++ style comments which did not compile on Solaris.
+
+02/11/2004
+Changes for version 15.3:
+    - Byte swapping was missing in one place when asking for stampped 
+      services (noticed on Solaris)
+
+11/11/2004
+Changes for version 15.4:
+    - Added two command line options to dim_send_command:
+	dim_send_command <cmnd_name> [<data>] [-dns <dim_dns_node>] [-s]
+        -dns allows setting the dim_dns_node, and -s means silent.      
+
+03/12/2004
+Changes for version 15.5:
+    - Changed the bahaviour of the DNS "KILL_SERVERS" command. Now if the
+      user declares a server exit_handler, the server will not exit (unless
+      the user code explicilty exits) and will continue running fine, 
+      otherwise the server exits as before.
+    - The exit_handler now gets as parameter the error code that caused the
+      exit request (so that the user can decide wether to exit or not) or 
+      the code sent by the client, if the EXIT request came from a client. 
+      As a result clients should not send exit codes lower than 0x100 in order 
+      not to be confused with the internal error codes.
+    - IMPORTANT NOTES:
+      - The behaviour of the user error_handler() changed. Now the
+	error_handler only gets called to report an error. If the user wants
+	to modify the automatic exit behaviour he/she has to also declare an
+	exit_handler. In previous versions if an error_handler was declared,
+	the exit_handler was not necessary.
+      - Also the Java version has changed since the ERROR codes changed.
+   
+07/12/2004
+Changes for version 15.5-1:
+    - Corrected a bug in include file dis.hxx introduced in v15r5
+
+08/12/2004
+Changes for version 15.6:
+    - Included support for Scheduling policies and priorities between DIM
+      threads by creating the calls:
+	- dim_set_scheduler_class(int sched_class)
+	- dim_get_scheduler_calss(int *sched_class)
+	- dim_set_priority(int dim_thread, int priority)
+	- dim_get_priority(int dim_thread, int priority)
+
+      These calls are only implemented on Linux and Windows and they have 
+      different behaviour on the two platforms:
+	- dim_set_scheduler_class(int sched_class)
+	On Windows:
+	  sched_class is the process's priority class:
+		-1 = IDLE_PRIORITY_CLASS
+		 0 = NORMAL_PRIORITY_CLASS
+		 1 = HIGH_PRIORITY_CLASS
+		 2 = REALTIME_PRIORITY_CLASS
+	On Linux:
+	  sched_class is the process's schedule policy:
+		 0 = SCHED_OTHER
+		 1 = SCHED_FIFO
+		 2 = SCHED_RR
+	  All threads in the process will be set to this sched_class
+	
+	- dim_set_priority(int dim_thread, int priority)
+	  where dim_thread : 1 - Main thread, 2 - IO thread, 3 - Timer thread
+	On Windows:
+	  priority is the thread's relative priority:
+		-3 = THREAD_PRIORITY_IDLE
+		-2 = THREAD_PRIORITY_LOWEST
+		-1 = THREAD_PRIORITY_BELOW_NORMAL
+		 0 = THREAD_PRIORITY_NORMAL
+		 1 = THREAD_PRIORITY_ABOVE_NORMAL
+		 2 = THREAD_PRIORITY_HIGHEST
+		 3 = THREAD_PRIORITY_TIME_CRITICAL
+
+	On Linux:
+	  priority is the thread's absolute priority:
+		 0 	for SCHED_OTHER
+		 1 - 99 for SCHED_FIFO or SCHED_RR
+
+03/02/2005
+Changes for version 15.7:
+    - Fixed a bug that made DIM servers crash when unplugging for a short time the
+      network cable.
+    - Linux executables and libraries are now compiled on Linux SLC3 with gcc 3.2.3
+    - Contains a new version of the DIM Tree Browser for WIndows. 
+
+02/03/2005
+Changes for version 15.8:
+    - Contains again a new version of the DIM Tree Browser for WIndows, now allows
+      to display structures correctly (Thanks to Serguei Sergueev). 
+    - DIM used old style predefined macros, for example linux instead of __linux__.
+      So it didn't compile when users used gcc/g++ -ansi -pedantic. Fixed.
+    - A check is now made on the length of a DIM service name. The service is 
+      discarded if the name is longer then 131 characters.
+
+04/04/2005
+Changes for version 15.9:
+    - Ported to MacOSX (Darwin). "OS" has to be defined as "Darwin":
+      	- Replaced ftime() by gettimeofday()
+	- Used sem_open instead of sem_init on Darwin. (sem_init not implemented).
+    - Made some order in the macro definition, so that it works whether for example 
+      unix or __unix__ are defined.
+    - Sometimes when a server received a command, the connection to the client wasn't
+      completely setup yet, so DimServer::getClientName() would not return the correct
+      result - Fixed.
+
+11/04/2005
+Changes for version 15.10:
+    - Fixed a memory leak that happened in clients when sending commands to a 
+      non-existing server.
+
+15/04/2005
+Changes for version 15.11:
+    - Optimized DIM for servers with many services (in particular the server library).
+    - Uses a better Hash function in Dns and servers.
+
+20/04/2005
+Changes for version 15.12:
+    - DIM did not update a service if it contained no data - fixed.
+
+22/04/2005
+Changes for version 15.13:
+    - Fixed a bug introduced in version 15.11, servers did not reconnect anymore
+      when the DNS restarted.
+
+02/05/2005
+Changes for version 15.14:
+    - Fixed several features or bugs related to the optimizations for many services:
+	- Sometimes a server declaring the same services would not exit properly
+	- If a browser was open it would slow down enourmously the start up of the 
+	  server
+	- A server sometimes crashed while declaring the services
+
+24/05/2005
+Changes for version 15.15:
+    - Fixed some warnings reported by "valgrind" mostly related to delete[]
+
+30/05/2005
+Changes for version 15.16:
+    - Fixed a bug related to a server name longer than 40 characters.
+
+16/06/2005
+Changes for version 15.17:
+    - Included the call keepWaiting() in DimRpcInfo. To allow multiple client
+      RPCs to use the same Server RPC (the user still has to provide an id).
+
+20/06/2005
+Changes for version 15.18:
+    - Included support for creating user threads:
+	- From "C":
+		int dim_start_thread(void (*thread_ast)(), long tag)
+	- From C++:
+		class DimThread
+		{
+		public:
+			DimThread();
+			virtual ~DimThread();
+			int start();
+			virtual void threadHandler() { };
+		};
+
+27/06/2005
+Changes for version 15.19:
+    - Added the possibility to decide not to update a service in a server callback
+      by returning a negative size (to be used with care, since the client will
+      timeout if the server stops responding for too long).
+
+15/08/2005
+Changes for version 15.20:
+    - Fixed a bug which could make a DIM server loop forever (happened to tmSrv)
+
+19/08/2005
+Changes for version 15.21:
+    - Fixed a bug in the DNS introduced in version v15r7: would not report and react
+      properly, in some ocasions, to previously declared services.
+
+05/10/2005
+Changes for version 15.22:
+    - Fixed some error messages reported by the DNS, they were not correct.
+
+04/11/2005
+Changes for version 15.23:
+    - Fixed several bugs in the timer handling mechanisms. Could provoke fake timeouts.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v16.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v16.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v16.txt	(revision 18732)
@@ -0,0 +1,182 @@
+
+                    DIM version 16.14 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1614.
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v17.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v17.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v17.txt	(revision 18732)
@@ -0,0 +1,319 @@
+
+                    DIM version 17.12 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1712.
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v18.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v18.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v18.txt	(revision 18732)
@@ -0,0 +1,376 @@
+
+                    DIM version 18.05 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1805.
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v19.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v19.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v19.txt	(revision 18732)
@@ -0,0 +1,750 @@
+
+                    DIM version 19.39 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1939.
+
+04/10/2012
+Changes for version 19.39:
+    - Unfortunately Windows, unlike Linux, does not use LP64 convention for 64 bits, 
+      i.e. the type long is a 32 bit variable (?!?!?!)
+      So created a dim_long type which can always hold a pointer
+ 
+
+09/08/2012
+Changes for version 19.38:
+    - The timeout used by clients and servers to try to reconnect to a DNS was supposed to be random,
+      to avoid all processes retrying at the same time, but it wasn't - fixed.
+
+
+27/06/2012
+Changes for version 19.37:
+    - DIM DNS crashed for servers with a task name bigger than 80 characters - Fixed.
+
+
+22/06/2012
+Changes for version 19.36:
+    - The internal "DIS_DNS/KILL_SERVERS" command can now be used to pass a user defined exit_code to
+      the servers. The servers will get this exit_code in their exit_handler.
+      Although the exit_code passed to the "DIS_DNS/KILL_SERVERS" command is an integer, only the lower
+      16 bits can be used, i.e. only these bits are passed to the servers.
+
+
+24/05/2012
+Changes for version 19.35:
+    - Fixed the DimInfo() default constructor, now if the default constructor is called, it doesn't cause the 
+      destructor to crash anymore.
+    - Made available to DimInfo, DimStampedInfo, DimUpdatedInfo and DimCurrentInfo the method: 
+      	- void subscribe(char *name, void *nolink, int nolinksize, int time, DimInfoHandler *handler)
+      Like this the default constructor can be called and then this method called later to subscribe
+      whenever needed.
+    - The behaviour of a giving a null pointer and size 0 as "no link" parameters was not completely
+      defined. The user could get back either a null pointer or an "invalid" pointer in the callbacks.
+      This is now well-defined: 
+        - If null pointer and size 0 is used at subscribe, the user will get null pointer and size 0 in the callback.
+        - If a negative size is passed at subscribe the callback is not called at all.
+
+
+03/05/2012
+Changes for version 19.34:
+    - Changed back to dna_write_nowait() the message that the server sends to the client when removing
+      a service. This was causing clients not to reconnect ever again when the server removed services.
+      (because the client would get the info much before the DNS, so it would keep trying to reconnect
+      and failing even though the service or even the server didn't exist anymore, without asking the DNS)
+    - Changed the client in order to avoid the behaviour above, i.e. if sending the service request fails it
+      asks the DNS again.
+
+
+23/04/2012
+Changes for version 19.33:
+    - A bug was introduced in v19r30. When trying to retry immediately, a dtq_start_timer(0)
+      was used (like for dna_write). This is not possible because the callback is not protected 
+      by a DIM lock. Fixed. (in v19r32)
+    - Small tidy up in dic.c and protecting the move_to_xxx functions.
+    - When a server received an unsubscribe from the last subscribed service of a client it was closing the
+      connection to the client, this is not good because there could be commands being sent. In any case
+      it should be up to the client to close the connection - Fixed.
+    - dim_send_command now accepts a "-i" argument to send integer data (default is string)
+
+
+30/03/2012
+Changes for version 19.31:
+    - changed dna_write to dna_write_nowait for servers when removing a service and for clients
+      when releasing and subscribing to a service. Dna_write cannot be used for the same connection
+      as dna_write_nowait as it will mingle the packets.
+    - Removed more compiler warnings.
+
+
+14/03/2012
+Changes for version 19.30:
+    - Sometimes when trying to open a connection to a server the client could backoff for too
+      long (10 seconds), now it will retry immediately and then at increasing intervals.
+    - dim_stop() would sometimes not properly stop all threads if a new connection was received
+      in the mean time.
+    - The DimServerDns destructor could crash, fixed.
+    - Removed some compiler warnings about variables set but not used.
+    - Two new functions available:
+	- dim_set_listen_backlog(int size)
+	- int dim_get_listen_backlog()
+    - The DNS will set the listen_backlog to 1024 at startup, but the OS will truncate it to
+      a maximum limit (available in /proc/sys/net/core/somaxconn, linux default=128), 
+      while for servers the constant SOMAXCONN is used.
+
+
+06/02/2012
+Changes for version 19.28:
+    - Added more log messages when a "Write Timeout" occurs to know where it originated.
+    - A server could sometimes not release the connection in case of a "Write Timeout", and
+      then keep on timing out for each message on this connection - fixed.
+
+
+19/01/2012
+Changes for version 19.27:
+    - Updated the DIM Makefiles for MacOSX (Darwin)
+    - Added New possibilities to change DIM timeouts:
+	- 2 New Environment variables:
+	    - DIM_WRITE_TMOUT				(default: 5)
+	    - DIM_KEEPALIVE_TMOUT			(default: 15)
+	- Same functionality as the functions:
+	    - dim_set_write_timeout(int secs)
+	    - int dim_get_write_timeout()
+	    - dim_set_keepalive_timeout(int secs)	//new
+	    - int dim_get_keepalive_timeout()		//new
+	- The functions have precedence over the environment variables.
+    - The server per client exit_handler functionality 
+      (provided by dis_add_client_exit_handler()/dis_set_client_exit_handler())
+      wan not always working correctly (in case of write timeouts) - fixed.
+    - Changed the reporting of "Write Tiemout":
+	- Used to report only: 
+	    - "ERROR: Write Timeout, disconnecting from..."
+	- Now reports:
+	    - "WARNING: Write Timeout, writing to ..."
+	    - If it disconnects: "ERROR: Write Timeout, disconnecting from ..."
+	    - If it reconnects later: "INFO: Re-connected to ..." 
+
+
+14/09/2011
+Changes for version 19.26:
+    - In the notes for version 19.08 there is the following:
+    	- Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      	  the wake_up event was triggered before dim_wait was called. Could affect smi++. Fixed.
+    - Amasingly enough this seems also to be the case for Linux, dim_wait could hang until there
+      was some new DIM activity, normally some timer firing... Fixed.
+    - The Linux DID now accepts an extra parameter: -dns=<dns_node_name>
+
+01/09/2011
+Changes for version 19.25:
+    - When a Client was releasing a service "at the same time" as the server was deleting the service,
+      The Connection could be released by mistake - fixed.
+    - The SERVICE_LIST service could be updated with an empty string if there were two consecutive 
+      dis_start_serving() - fixed.
+
+
+08/08/2011
+Changes for version 19.24:
+    - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
+      it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
+    - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
+      messages from the service that updates DID - Fixed.
+
+
+15/07/2011
+Changes for version 19.23:
+    - The new functions:
+	int DimClient::inCallback()
+	int DimServer::inCallback()
+      Can be used to find out if the function is being called in the context of a DIM callback
+      handler (they return 1 if yes, 0 if no).
+    - There was no way to "remove" an errorHandler or exitHandler in C++.
+      Now the following functions accept 0 as parameter:
+	DimClient::addErrorHandler(0)
+	DimServer::addErrorHandler(0)
+	DimServer::addExitHandler(0)
+	DimServer::addClientExitHandler(0)
+      In order to remove them.
+    - The Windows Visual Studio Manifest file distributed since version v19r19 was wrong, so the latest
+      DIM versions did not work on Windows machines without Visual Studio 8 installed - Fixed.
+
+
+21/06/2011
+Changes for version 19.22:
+    - DIM servers would hang when tring to exit due to "Services already declared", if the user
+      exitHandler() didn't directly call exit (instead tried to exit later in the main program).
+      Fixed.
+    - Servers accept now also 'B' or 'V' as format, they are both equivalent to 'C'.
+    - In Linux when a server printed "Write timeout, disconecting from XXX", it didn't always
+      disconnect properly, so the client would not always reconnect afterwards. Fixed. 
+
+
+31/05/2011
+Changes for version 19.21:
+    - Fixed a bug in DimRpcInfo: the timer for the timeout was started too late and sometimes the
+      RPC data was received in the meantime, so the timer was never stopped. 
+
+
+04/05/2011
+Changes for version 19.20:
+    - Fixed a bug added in v19r18: The <server_name>/SERVICE_LIST was no longer reporting correctly
+      the disappearence of services (by a "-<service_name>" ). Fixed.
+
+
+27/04/2011
+Changes for version 19.19:
+    - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8), 
+      which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
+
+
+07/04/2011
+Changes for version 19.18:
+    - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
+      information when used by several clients in paralel - fixed.
+
+
+11/03/2011
+Changes for version 19.17:
+    - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
+      from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
+    - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
+      handled, this made the forked children hang and not respond to DIM anymore - fixed.
+
+
+23/02/2011
+Changes for version 19.16:
+    - DimServer::stop() did not correctly clear the ServerName - fixed.
+    - The Linux DID now prints the DNS it is connected to in the title bar.
+
+
+20/12/2010
+Changes for version 19.15:
+    - Still fixing dis_stop_serving():
+        - The DNS sometimes gets a remove service message from a server, after the server has
+          closed the connection, this was not handled properly - fixed.
+        - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
+	- dtq.c now clears all timer_queues at dis_stop_serving()
+	- Added some protections in case of closed connections.
+
+
+10/12/2010
+Changes for version 19.14:
+    - Still fixing dis_stop_serving():
+	- Adedd pthread_join in linux to wait for threads to die
+	- the following dis_start_serving() would not reconnect to the DNS if the DNS connection
+          was pending (i.e. the DNS was stopped or restarted)
+
+
+06/12/2010
+Changes for version 19.13:
+    - Fixed a few compiler warnings in dis.c
+    - Added #ifndef PXI around some Windows setPriority calls
+    - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
+      could be done properly after for example a "fork()". Fixed.
+
+
+20/09/2010
+Changes for version 19.12:
+    - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
+
+
+07/06/2010
+Changes for version 19.11:
+    - Added some protections in update_service() in order to try to solve a DIP issue.
+      (related to very frequent updates of the same service in different threads) 
+    - Added the possibility of defining timeouts for:
+	- DimBrowser::getServices 
+	- DimBrowser::getServers 
+	- DimBrowser::getServerServices 
+	- DimBrowser::getServerClients
+    - Added the possibility of retrieving the time a command arrived:
+	- int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
+	- int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
+    - Added a "const" keyword to the "char *format" parameter in the constructors of
+	- DimService and DimCommand
+    - Added a call DimCommand::hasNext(), can be used when commands are queued.
+    - Fixed a memory leak when using DimService::setData and then dynamically deleting the
+      DimService 
+
+
+17/02/2010
+Changes for version 19.10:
+    - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
+      The DNS could crash when killing a server.
+    - Removed some compilation warnings 
+
+
+04/01/2010
+Changes for version 19.09:
+    - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
+      enable or disable printing a message per service update
+    - Tried to protect against:
+	- a service being deleted from the server while it is being updated
+        - a client unsubscribing from a service while it is being updated.
+    - Optimized the DNS when browsing for a service search pattern without wildcards
+      (i.e. browsing for a single service name) 
+
+
+13/11/2009
+Changes for version 19.08:
+    - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      the wake_up event was triggered before dim_wait was called. Could affect smi++.
+      Fixed.
+    - Fixed a compilation bug in dis.c that affected some platforms.
+
+
+30/10/2009
+Changes for version 19.07:
+    - Some more bugs related to being able to publish to more that one DNS fixed.
+
+
+28/10/2009
+Changes for version 19.06:
+    - When opening DNS connections, when the DNS is not there, from a process that is at the 
+      same time a client and a server only one pending connection was used now two separate 
+      ones are created.
+    - Tried to fix a few more problems related to dis_stop_serving...
+
+
+26/10/2009
+Changes for version 19.05:
+    - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
+      all services and then tried to re-declare new ones would fail (corrupted server name).
+      Affected in particular the DimBridge
+
+
+27/08/2009
+Changes for version 19.04:
+    - Added the following functions:
+	Server part:
+		C - dis_get_n_clients(int service_id)
+		C++ - int DimService::getNClients()
+	Client part (C++ only):
+		DimClient::setNoDataCopy()
+		This will prevent any data copy in the client and the user should make 
+                sure that the data received from DIM is not used outside the callback
+                in order to benefir from this feature.
+    - Fixed the Java DIM Jar file, it was wrong in the previous version.
+
+
+31/07/2009
+Changes for version 19.03:
+    - Removed some more compilation warnings.
+    - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when 
+      some server names were longer that 35 characters was very slow.
+
+
+06/07/2009
+Changes for version 19.02:
+    - Fixed a bug in the server part handling of RPCs, it created a memory leak.
+      It was using a separate thread to handle timeouts and there is no safe way to 
+      kill a thread from outside. Fixed.
+    	- the function dim_stop_thread() is now obsolete.
+    - Added the possibility to change the send and receive buffer sizes:
+	- int dim_set_write_buffer_size(int size)
+	- int dim_get_write_buffer_size()
+	- int dim_set_read_buffer_size(int size)
+	- int dim_get_read_buffer_size()
+      The default (and minimum) is 16384 bytes.
+      These calls should be done before any other DIM calls.
+    - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
+
+04/05/2009
+Changes for version 19.01:
+    - A server can now publish to more than one DNS.
+      To use an extra DNS:
+	- in "C":
+		long dnsid;
+		char extra_dns[128];
+		...
+		dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+		dnsid = dis_add_dns(extra_dns,0);
+		sprintf(name1,"NewService%d",i);
+		dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData), 
+					(void *)0, 0 );
+		dis_start_serving_dns(dnsid, "xx_new");
+
+	- in C++:
+		DimServerDns *newDns;
+		char *extraDns = 0;
+		DimService *new_servint;
+		...
+		extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+		if(extraDns)
+			newDns = new DimServerDns(extraDns, 0, "new_TEST");
+		...
+		if(extraDns)
+			new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+
+    - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
+    - Changed the makefiles so that the default on Linux is now 64 bits.
+	- The flag 32BITS=yes can be added in order to generate 32 bit code
+
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v20.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v20.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v20.txt	(revision 18732)
@@ -0,0 +1,871 @@
+
+                    DIM version 20r15 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 2015.
+
+01/09/2015
+Changes for version 2015:
+    - A DIM Server did not properly accept a DimServer::stop(), folowed by a DimServer::start(),
+      also DID didn't cope with the above, in particular if the server changed name - Fixed.
+
+
+09/03/2015
+Changes for version 2014:
+    - A DIM command could be discarded if the DNS connection went stale and the first attempt
+      to use it was to send a command. (Introduced a Keepalive between clients and the DNS)
+
+
+22/01/2014
+Changes for version 2013:
+    - Tried to improve in the DNS the handling of many connections at startup 
+      (and many applications "simultaneous" restart) 
+
+
+03/12/2014
+Changes for version 2012:
+    - In Linux the number of connections is now completely dynamic.
+      (replaced select by poll)
+    - Changed the default SEND and RECV buffer sizes per connection from 16Kb to 64Kb
+      (except for the DNS connections: 32 Kb, to limit the memory increase)
+    - Changed the DNS Keepalive timeout from 15 to 20 seconds (to use a little less CPU) 
+
+
+24/10/2014
+Changes for version 2011:
+    - Increased the Max. num of connections for DNS and servers to 16384 (from 8192)
+    - Increased also slightly the DNS hash table
+
+
+17/09/2014
+Changes for version 2010:
+    - When a client connects to a server using the IP Address, instead of IP name,
+      a reverse lookup "validity" test is no longer performed.
+    - Fixed the Error reporting for tcpip connections, messages like:
+      "(ERROR) Client Connecting to XXX on YYY: Success"
+      should no longer exist.
+    - The "C" version can now be called directly from C++ using only dis.h or dic.h
+      instead of dis.hxx or dic.hxx.
+      (several const definitions and "extern "C" added in included prototypes)
+
+
+17/07/2014
+Changes for version 2009:
+    - Tried to fix more "Invalid Service ID" messages when creating/deleting services/commands in a server.
+      (By protecting the service/command creation/destruction in C++)
+    - Fixed a problem for Raspberry Pi (where "char" is "unsigned char" by default)
+    - The feature of increasing the maximum nember of connections stopped working with glibc 2.19.
+      Fixed.
+
+
+05/04/2013
+Changes for version 2007:
+    - DIM servers were allocating a lot of (possibly) unnecessary memory at startup - fixed.
+    - Tried to fix "Invalid Service ID" messages when creating services/commands in a server.
+      (By protecting the service/command creation in C++)
+    - Fixed many compilation warnings when adding gcc flag -Wconvertion
+    - DIM releases are now:
+	- Windows:
+		- Compiled on Windows 7 Visual Studio 10
+		- Distributed in /bin32 for 32 bits and /bin for 64 bits
+	- Linux:
+		- Compiled on SLC6 with gcc 4.4
+		- Distributed in /linux for 64 bits 
+
+
+17/01/2013
+Changes for version 2006:
+    - Changes only affecting the Linux version of DIM:
+	- v20r5 changes related to removing the masking of signals could cause problems in single thread
+          applications, like smiGUI. The masking/unmasking of signals is now conditional, implemented by a 
+          global variable in the DIM shareable library.
+    	- Changed the DID makefile in order to make sure the correct libdim.so in used when linking.
+	- Changes in DID:
+		- When the list of nodes was long, the list was very slow to display - fixed.
+		- If it was really very long, it crashed - fixed.
+		- In nodes were reported by IPAdress, show servers by node didn't work - fixed.
+		
+		
+21/12/2012
+Changes for version 2005:
+    - Moved the WebDID sources to the src directory and the VS settings to the Visual directory
+    - In the Multithreaded (the default) version of DIM, signals are not touched anymore.
+      Before they were masked/unmasked at every dim lock/unlock occurence (Linux only).
+    - Fixes in WebDID:
+	- Now DIM nodes defined by an IP Address are shown properly (by IP Name)
+	- WebDID looks for the Javascript files in the same directory where its executable is
+          (independently of where it is started from) 
+
+
+21/11/2012
+Changes for version 2004:
+    - WebDid did not compile under SLC5, fixed.
+    - Removed several Compiler warnings under SLC5
+
+
+20/11/2012
+Changes for version 2003:
+    - Added the project settings for Visual Studio 10 in the Visual directory
+    - Added a bin64 directory containing binaries for Windows7 (and 2008 R2) 64 bits
+    - Added a prototype webDid. in order to use it:
+	- In the same machine when the DIM DNS runs start <dim>/WebDid/webDid
+	- In any machine from where the DIM DNS is reacheable on your favorite Web browser use as URL:
+		http://<DIM DNS node name>:2500 
+
+
+07/11/2012
+Changes for version 2002:
+    - Still problems with size=0 "no link" parameters - hopefully fixed.
+
+
+07/11/2012
+Changes for version 2001:
+    - First official release containing the Windows 64 bits fix.
+    - The changes in version v19r35 specifying the behaviour when giving a null pointer and size 0 as 
+      "no link" parameters only worked well in "C", not in C++ callbacks - fixed.
+ 
+
+04/10/2012
+Changes for version 19.39:
+    - Unfortunately Windows, unlike Linux, does not use LP64 convention for 64 bits, 
+      i.e. the type long is a 32 bit variable (?!?!?!)
+      So created a dim_long type which can always hold a pointer
+ 
+
+09/08/2012
+Changes for version 19.38:
+    - The timeout used by clients and servers to try to reconnect to a DNS was supposed to be random,
+      to avoid all processes retrying at the same time, but it wasn't - fixed.
+
+
+27/06/2012
+Changes for version 19.37:
+    - DIM DNS crashed for servers with a task name bigger than 80 characters - Fixed.
+
+
+22/06/2012
+Changes for version 19.36:
+    - The internal "DIS_DNS/KILL_SERVERS" command can now be used to pass a user defined exit_code to
+      the servers. The servers will get this exit_code in their exit_handler.
+      Although the exit_code passed to the "DIS_DNS/KILL_SERVERS" command is an integer, only the lower
+      16 bits can be used, i.e. only these bits are passed to the servers.
+
+
+24/05/2012
+Changes for version 19.35:
+    - Fixed the DimInfo() default constructor, now if the default constructor is called, it doesn't cause the 
+      destructor to crash anymore.
+    - Made available to DimInfo, DimStampedInfo, DimUpdatedInfo and DimCurrentInfo the method: 
+      	- void subscribe(char *name, void *nolink, int nolinksize, int time, DimInfoHandler *handler)
+      Like this the default constructor can be called and then this method called later to subscribe
+      whenever needed.
+    - The behaviour of giving a null pointer and size 0 as "no link" parameters was not completely
+      defined. The user could get back either a null pointer or an "invalid" pointer in the callbacks.
+      This is now well-defined: 
+        - If null pointer and size 0 is used at subscribe, the user will get null pointer and size 0 in the callback.
+        - If a negative size is passed at subscribe the callback is not called at all.
+
+
+03/05/2012
+Changes for version 19.34:
+    - Changed back to dna_write_nowait() the message that the server sends to the client when removing
+      a service. This was causing clients not to reconnect ever again when the server removed services.
+      (because the client would get the info much before the DNS, so it would keep trying to reconnect
+      and failing even though the service or even the server didn't exist anymore, without asking the DNS)
+    - Changed the client in order to avoid the behaviour above, i.e. if sending the service request fails it
+      asks the DNS again.
+
+
+23/04/2012
+Changes for version 19.33:
+    - A bug was introduced in v19r30. When trying to retry immediately, a dtq_start_timer(0)
+      was used (like for dna_write). This is not possible because the callback is not protected 
+      by a DIM lock. Fixed. (in v19r32)
+    - Small tidy up in dic.c and protecting the move_to_xxx functions.
+    - When a server received an unsubscribe from the last subscribed service of a client it was closing the
+      connection to the client, this is not good because there could be commands being sent. In any case
+      it should be up to the client to close the connection - Fixed.
+    - dim_send_command now accepts a "-i" argument to send integer data (default is string)
+
+
+30/03/2012
+Changes for version 19.31:
+    - changed dna_write to dna_write_nowait for servers when removing a service and for clients
+      when releasing and subscribing to a service. Dna_write cannot be used for the same connection
+      as dna_write_nowait as it will mingle the packets.
+    - Removed more compiler warnings.
+
+
+14/03/2012
+Changes for version 19.30:
+    - Sometimes when trying to open a connection to a server the client could backoff for too
+      long (10 seconds), now it will retry immediately and then at increasing intervals.
+    - dim_stop() would sometimes not properly stop all threads if a new connection was received
+      in the mean time.
+    - The DimServerDns destructor could crash, fixed.
+    - Removed some compiler warnings about variables set but not used.
+    - Two new functions available:
+	- dim_set_listen_backlog(int size)
+	- int dim_get_listen_backlog()
+    - The DNS will set the listen_backlog to 1024 at startup, but the OS will truncate it to
+      a maximum limit (available in /proc/sys/net/core/somaxconn, linux default=128), 
+      while for servers the constant SOMAXCONN is used.
+
+
+06/02/2012
+Changes for version 19.28:
+    - Added more log messages when a "Write Timeout" occurs to know where it originated.
+    - A server could sometimes not release the connection in case of a "Write Timeout", and
+      then keep on timing out for each message on this connection - fixed.
+
+
+19/01/2012
+Changes for version 19.27:
+    - Updated the DIM Makefiles for MacOSX (Darwin)
+    - Added New possibilities to change DIM timeouts:
+	- 2 New Environment variables:
+	    - DIM_WRITE_TMOUT				(default: 5)
+	    - DIM_KEEPALIVE_TMOUT			(default: 15)
+	- Same functionality as the functions:
+	    - dim_set_write_timeout(int secs)
+	    - int dim_get_write_timeout()
+	    - dim_set_keepalive_timeout(int secs)	//new
+	    - int dim_get_keepalive_timeout()		//new
+	- The functions have precedence over the environment variables.
+    - The server per client exit_handler functionality 
+      (provided by dis_add_client_exit_handler()/dis_set_client_exit_handler())
+      wan not always working correctly (in case of write timeouts) - fixed.
+    - Changed the reporting of "Write Tiemout":
+	- Used to report only: 
+	    - "ERROR: Write Timeout, disconnecting from..."
+	- Now reports:
+	    - "WARNING: Write Timeout, writing to ..."
+	    - If it disconnects: "ERROR: Write Timeout, disconnecting from ..."
+	    - If it reconnects later: "INFO: Re-connected to ..." 
+
+
+14/09/2011
+Changes for version 19.26:
+    - In the notes for version 19.08 there is the following:
+    	- Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      	  the wake_up event was triggered before dim_wait was called. Could affect smi++. Fixed.
+    - Amasingly enough this seems also to be the case for Linux, dim_wait could hang until there
+      was some new DIM activity, normally some timer firing... Fixed.
+    - The Linux DID now accepts an extra parameter: -dns=<dns_node_name>
+
+01/09/2011
+Changes for version 19.25:
+    - When a Client was releasing a service "at the same time" as the server was deleting the service,
+      The Connection could be released by mistake - fixed.
+    - The SERVICE_LIST service could be updated with an empty string if there were two consecutive 
+      dis_start_serving() - fixed.
+
+
+08/08/2011
+Changes for version 19.24:
+    - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
+      it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
+    - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
+      messages from the service that updates DID - Fixed.
+
+
+15/07/2011
+Changes for version 19.23:
+    - The new functions:
+	int DimClient::inCallback()
+	int DimServer::inCallback()
+      Can be used to find out if the function is being called in the context of a DIM callback
+      handler (they return 1 if yes, 0 if no).
+    - There was no way to "remove" an errorHandler or exitHandler in C++.
+      Now the following functions accept 0 as parameter:
+	DimClient::addErrorHandler(0)
+	DimServer::addErrorHandler(0)
+	DimServer::addExitHandler(0)
+	DimServer::addClientExitHandler(0)
+      In order to remove them.
+    - The Windows Visual Studio Manifest file distributed since version v19r19 was wrong, so the latest
+      DIM versions did not work on Windows machines without Visual Studio 8 installed - Fixed.
+
+
+21/06/2011
+Changes for version 19.22:
+    - DIM servers would hang when tring to exit due to "Services already declared", if the user
+      exitHandler() didn't directly call exit (instead tried to exit later in the main program).
+      Fixed.
+    - Servers accept now also 'B' or 'V' as format, they are both equivalent to 'C'.
+    - In Linux when a server printed "Write timeout, disconecting from XXX", it didn't always
+      disconnect properly, so the client would not always reconnect afterwards. Fixed. 
+
+
+31/05/2011
+Changes for version 19.21:
+    - Fixed a bug in DimRpcInfo: the timer for the timeout was started too late and sometimes the
+      RPC data was received in the meantime, so the timer was never stopped. 
+
+
+04/05/2011
+Changes for version 19.20:
+    - Fixed a bug added in v19r18: The <server_name>/SERVICE_LIST was no longer reporting correctly
+      the disappearence of services (by a "-<service_name>" ). Fixed.
+
+
+27/04/2011
+Changes for version 19.19:
+    - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8), 
+      which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
+
+
+07/04/2011
+Changes for version 19.18:
+    - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
+      information when used by several clients in paralel - fixed.
+
+
+11/03/2011
+Changes for version 19.17:
+    - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
+      from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
+    - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
+      handled, this made the forked children hang and not respond to DIM anymore - fixed.
+
+
+23/02/2011
+Changes for version 19.16:
+    - DimServer::stop() did not correctly clear the ServerName - fixed.
+    - The Linux DID now prints the DNS it is connected to in the title bar.
+
+
+20/12/2010
+Changes for version 19.15:
+    - Still fixing dis_stop_serving():
+        - The DNS sometimes gets a remove service message from a server, after the server has
+          closed the connection, this was not handled properly - fixed.
+        - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
+	- dtq.c now clears all timer_queues at dis_stop_serving()
+	- Added some protections in case of closed connections.
+
+
+10/12/2010
+Changes for version 19.14:
+    - Still fixing dis_stop_serving():
+	- Adedd pthread_join in linux to wait for threads to die
+	- the following dis_start_serving() would not reconnect to the DNS if the DNS connection
+          was pending (i.e. the DNS was stopped or restarted)
+
+
+06/12/2010
+Changes for version 19.13:
+    - Fixed a few compiler warnings in dis.c
+    - Added #ifndef PXI around some Windows setPriority calls
+    - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
+      could be done properly after for example a "fork()". Fixed.
+
+
+20/09/2010
+Changes for version 19.12:
+    - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
+
+
+07/06/2010
+Changes for version 19.11:
+    - Added some protections in update_service() in order to try to solve a DIP issue.
+      (related to very frequent updates of the same service in different threads) 
+    - Added the possibility of defining timeouts for:
+	- DimBrowser::getServices 
+	- DimBrowser::getServers 
+	- DimBrowser::getServerServices 
+	- DimBrowser::getServerClients
+    - Added the possibility of retrieving the time a command arrived:
+	- int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
+	- int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
+    - Added a "const" keyword to the "char *format" parameter in the constructors of
+	- DimService and DimCommand
+    - Added a call DimCommand::hasNext(), can be used when commands are queued.
+    - Fixed a memory leak when using DimService::setData and then dynamically deleting the
+      DimService 
+
+
+17/02/2010
+Changes for version 19.10:
+    - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
+      The DNS could crash when killing a server.
+    - Removed some compilation warnings 
+
+
+04/01/2010
+Changes for version 19.09:
+    - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
+      enable or disable printing a message per service update
+    - Tried to protect against:
+	- a service being deleted from the server while it is being updated
+        - a client unsubscribing from a service while it is being updated.
+    - Optimized the DNS when browsing for a service search pattern without wildcards
+      (i.e. browsing for a single service name) 
+
+
+13/11/2009
+Changes for version 19.08:
+    - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      the wake_up event was triggered before dim_wait was called. Could affect smi++.
+      Fixed.
+    - Fixed a compilation bug in dis.c that affected some platforms.
+
+
+30/10/2009
+Changes for version 19.07:
+    - Some more bugs related to being able to publish to more that one DNS fixed.
+
+
+28/10/2009
+Changes for version 19.06:
+    - When opening DNS connections, when the DNS is not there, from a process that is at the 
+      same time a client and a server only one pending connection was used now two separate 
+      ones are created.
+    - Tried to fix a few more problems related to dis_stop_serving...
+
+
+26/10/2009
+Changes for version 19.05:
+    - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
+      all services and then tried to re-declare new ones would fail (corrupted server name).
+      Affected in particular the DimBridge
+
+
+27/08/2009
+Changes for version 19.04:
+    - Added the following functions:
+	Server part:
+		C - dis_get_n_clients(int service_id)
+		C++ - int DimService::getNClients()
+	Client part (C++ only):
+		DimClient::setNoDataCopy()
+		This will prevent any data copy in the client and the user should make 
+                sure that the data received from DIM is not used outside the callback
+                in order to benefir from this feature.
+    - Fixed the Java DIM Jar file, it was wrong in the previous version.
+
+
+31/07/2009
+Changes for version 19.03:
+    - Removed some more compilation warnings.
+    - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when 
+      some server names were longer that 35 characters was very slow.
+
+
+06/07/2009
+Changes for version 19.02:
+    - Fixed a bug in the server part handling of RPCs, it created a memory leak.
+      It was using a separate thread to handle timeouts and there is no safe way to 
+      kill a thread from outside. Fixed.
+    	- the function dim_stop_thread() is now obsolete.
+    - Added the possibility to change the send and receive buffer sizes:
+	- int dim_set_write_buffer_size(int size)
+	- int dim_get_write_buffer_size()
+	- int dim_set_read_buffer_size(int size)
+	- int dim_get_read_buffer_size()
+      The default (and minimum) is 16384 bytes.
+      These calls should be done before any other DIM calls.
+    - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
+
+04/05/2009
+Changes for version 19.01:
+    - A server can now publish to more than one DNS.
+      To use an extra DNS:
+	- in "C":
+		long dnsid;
+		char extra_dns[128];
+		...
+		dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+		dnsid = dis_add_dns(extra_dns,0);
+		sprintf(name1,"NewService%d",i);
+		dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData), 
+					(void *)0, 0 );
+		dis_start_serving_dns(dnsid, "xx_new");
+
+	- in C++:
+		DimServerDns *newDns;
+		char *extraDns = 0;
+		DimService *new_servint;
+		...
+		extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+		if(extraDns)
+			newDns = new DimServerDns(extraDns, 0, "new_TEST");
+		...
+		if(extraDns)
+			new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+
+    - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
+    - Changed the makefiles so that the default on Linux is now 64 bits.
+	- The flag 32BITS=yes can be added in order to generate 32 bit code
+
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/FACT++_part_filenames/dim/README_v9.txt
===================================================================
--- branches/FACT++_part_filenames/dim/README_v9.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/README_v9.txt	(revision 18732)
@@ -0,0 +1,112 @@
+
+                    DIM version 9.8 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 908
+	(version 9.8).
+  
+Changes for version 9.0:
+
+   In order to increase the compatibility between Windows and Linux and
+   to respect CVS rules the following modifications have been done:
+
+      - C++ files have been renamed from .cc to .cxx and include files from
+	.hh to .hxx
+
+      - Include files are in "./dim" directory
+        (Source files are now in the "./src" directory)
+
+      - Windows executables and libraries are in "./bin"
+      - Linux executables and libraries are "./linux"
+
+      - Windows developper studio setting are in "./Visual"
+      - Linux Makefiles are in the top directory
+
+Changes for version 9.1:
+
+    Fixed some "Harp" problems:
+      - Fixed a bug causing a loop in the timer handling 
+      - Optimized dns connection handling for many services
+      - Fixed a re-connection bug for clients 
+      
+Changes for version 9.2:
+
+      - Created the static methods:
+		DimServer::autoStartOff();
+		DimServer::autoStartOn();
+	Which prevents/allows DimServices to be declared to the Name Server as
+	soon as they are created. if "autoStart" is set Off the user has to call
+	DimServer::start(char *serverName) when all services have been declared.
+	By default autoStart is On
+
+Changes for version 9.3:
+
+      - Created a new Utility: DimBridge - It forwards DIM Services (and Commands)
+	from one Name Server to another (to bypass firewalls)
+      - Fixed a bug in tcpip.c - which prevents a DIM Server to send test messages to
+	himself (related to the above utility).
+
+Changes for version 9.4:
+
+      - Merged DID and XDID (DID should now work on all UNIX flavours)
+      - Allow users to select the ethernet interface (or to specify a complete 
+        ipname, with the domain, when not available by default):
+		setenv DIM_HOST_NODE <ipname>
+	Before starting up a DIM server 
+ 
+Changes for version 9.5:
+
+      - Added an environment variable DIM_DNS_PORT allowing users to specify a
+	different port number (default is 2505) for the DNS. This allows 
+	starting more than one DIM Name Servers (DNSs) on the same machine.
+      - Accomodated for a Solaris "feature": ioctl FIONREAD which should 
+        return the number of bytes waiting to be read on a socket sometimes 
+	returns '0' when there are bytes to read. This provoked undesired 
+        "disconnections" in BaBar.
+      - Fixed a bug related to the padding of structures (characters following
+        an odd number of shorts)
+      - Fixed a bug in the retry mechanism when writting to a full socket. The
+        problem appeared when the connection was killed while retrying.
+      - Did (Unix/Linux version) now allows sending formatted commands (i.e. 
+        structures) to a server. Also services are now visualised in a 
+	formatted manner.
+
+Changes for version 9.6:
+      - Fixed DID: it crashed when a server name was very big (Motif) and
+        it didn't remove servers that died while being in error (red).
+      - Fixed a bug in the client library: sometimes services where requested
+	from the name server more than once unnecessarily.
+      - Fixed a bug in the server library: Sometimes the server crashed if it 
+	was updating a service when the client was killed or died.
+
+Changes for version 9.7
+      - Fixed a bug introduced in version 9.6 (related to the last point).
+        Sometimes servers would leave some connections open and started using
+        all the CPU (involves dis.c and tcpip.c).
+      - Upgraded DID to support very long server names.
+
+Changes for version 9.8
+      - Fixed a bug in DID: it crashed when a service name to be viewed was
+        typed in by hand
+      - Fixed a bug in dis.c: Servers would not register their services with 
+        the DNS if the number of services was a multiple of 100.
+ 
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/FACT++_part_filenames/dim/WebDID/did.js
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/did.js	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/did.js	(revision 18732)
@@ -0,0 +1,616 @@
+ 
+Ext.require(['*']);
+
+Ext.onReady(function(){
+
+
+    var randomNumber = Math.floor(Math.random()*10000001);
+
+    Ext.QuickTips.init();
+
+    var storeNodes = Ext.create('Ext.data.TreeStore', {
+        proxy: {
+            type: 'rest',
+            url: '/didData.json',
+	    extraParams: {
+		browser: randomNumber
+	    },
+            reader: {
+                type: 'json',
+                root: 'children'
+            }
+        },
+ 	autoLoad: false,
+        folderSort: true,
+        sorters: [{
+            property: 'text',
+            direction: 'ASC'
+        }],
+        root: {
+            text: 'TopNode',
+            id: 'src',
+            expanded: true
+        },
+        listeners: {
+		load: function(myStore, node, records, successful, eopts) {
+//			if(node.get('text') == "Nodes")
+//		document.write("I am here "+node.text+" "+node.get('text'));
+//				node.expand();
+//			serviceInfo.update(node.get('text'));
+//		var node = getNodeById('Nodes');
+//			node.expand();
+//			node.expandChildren();
+//		        searchInfo.update("Expanding " +node.get('text'));
+			setTimeout(expandRoot, 100);
+		}
+//		refresh: function(myStore, eopts) {
+//		        searchInfo.update("Refreshing");
+//			node.expand(1);
+//			serviceInfo.update("refresh "+myStore.getName());
+//		}
+//		beforeexpand: function( node, eopts) {
+//			this.load({
+//		        params: {
+//		            node: node.text
+//			}
+//			});
+//		}
+	}
+     });
+
+    function expandRoot()
+    {
+	var node;
+
+    	node = storeNodes.getRootNode();
+	node.expandChildren();
+    }
+
+    var storeServices = Ext.create('Ext.data.TreeStore', {
+        proxy: {
+            type: 'rest',
+            url: '/didServices.json',
+ 	    extraParams: {
+		browser: randomNumber
+	    },
+            reader: {
+                type: 'json',
+                root: 'children'
+            }
+        },
+        folderSort: true,
+        sorters: [{
+            property: 'text',
+            direction: 'ASC'
+        }],
+        root: {
+            text: 'TopNode',
+            id: 'src',
+            expanded: true
+        },
+        listeners: {
+		load: function(myStore, node, records, successful, eopts) {
+			node.expand(1);
+		}
+        }	
+    });
+
+    function clearServices()
+    {
+	storeServices.load();
+	serviceInfoArea.setVisible(1);
+	commandInfoArea.setVisible(0);
+	serviceInfoArea.update("");
+    }
+ 
+    var serviceInfoArea = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        id: 'details-panel',
+        title: 'Service Info',
+        width: 580,
+	flex: 3,
+        autoScroll: true,
+	border: false,
+        html: '',
+    	tools: [{ 
+		type: 'gear',
+		id: 'update',
+		handler: function(e, toolEl, panel, tc) {
+			UpdateButton = tc;
+			if(UpdateService)
+			{
+				UpdateService = 0;
+				tc.setType('refresh');
+//				tc.show();
+//console.log("changed icon 1", UpdateService);
+			}
+			else
+			{
+				UpdateService = 1;
+				tc.setType('gear');
+//				tc.show();
+//console.log("changed icon 2", UpdateService);
+			}
+		} 
+  	}]
+    });
+
+    var serviceButton = Ext.create('Ext.Button', {
+        text: 'Stop Updating',
+        margin: '5 5 5 5',
+	handler: function() {
+//console.log('changed icon');
+//	    var pattern = commandData.getRawValue();
+//	    query(pattern, -1);	
+	}
+    });
+/*
+    var serviceInfoArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+        id: 'svc-details-panel',
+        title: 'Service Info',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+//        html: 'Command test'
+	align:'stretch',
+    	tools: [{ 
+		type: 'gear',
+		handler: function(e, toolEl, panel, tc) {
+			UpdateButton = tc;
+			if(UpdateService)
+			{
+				UpdateService = 0;
+				tc.setType('refresh');
+//				tc.show();
+//console.log("changed icon 1", UpdateService);
+			}
+			else
+			{
+				UpdateService = 1;
+				tc.setType('gear');
+//				tc.show();
+				doGetService();
+//console.log("changed icon 2", UpdateService);
+			}
+		} 
+  	}],
+	items: [serviceButton,serviceInfo]	
+    });
+*/
+    var commandInfo = Ext.create('Ext.Panel', {
+        layout: 'fit',
+//        id: 'details-panel',
+//        title: 'Service Info',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+        margin: '5 5 5 5',
+        html: 'Some Info'
+    });
+
+
+    var commandData = Ext.create('Ext.form.field.Text', {
+        width: 400,
+//        id: 'pattern',
+	xtype: 'textfield',
+	name: 'Search pattern',
+	labelAlign: 'top',
+	fieldLabel: "Please enter items separated by spaces:<br />(for example: 2 0x123 'A' 23.4 \"a text\")",
+	labelPad: 5,
+	labelSeparator: "",
+//	labelWidth: 45,
+//	allowBlank: false,
+        margin: '5 5 5 5'
+    });
+
+    var commandButton = Ext.create('Ext.Button', {
+        text: 'Send',
+        margin: '5 5 5 5',
+	handler: function() {
+	    var pattern = commandData.getRawValue();
+	    query(pattern, -1);	
+	}
+    });
+	
+    var commandInfoArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+        id: 'cmd-details-panel',
+        title: 'Send Command',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+//        html: 'Command test'
+	align:'stretch',
+	items: [commandInfo, commandData, commandButton]	
+    });
+
+    var serviceCommandArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+//        title: 'Service Info',
+        width: 580,
+        region: 'east',
+	align:'stretch',
+	items: [serviceInfoArea, commandInfoArea]	
+    });
+/*
+    var serviceInfo = Ext.create('Ext.Panel', {
+        id: 'details-panel',
+        title: 'Service Info',
+        region: 'east',
+//        bodyStyle: 'padding-bottom:15px;background:#eee;',
+        autoScroll: true,
+        html: ''
+    });
+*/
+
+    var HTTPPacket = new XMLHttpRequest();
+    HTTPPacket.onreadystatechange = process;
+    var HTTPPollPacket = new XMLHttpRequest();
+    HTTPPollPacket.onreadystatechange = pollAnswer;
+    var HTTPQueryPacket = new XMLHttpRequest();
+    HTTPQueryPacket.onreadystatechange = queryAnswer;
+    var requestNumber = 0;
+    var LastService = "";
+    var LastId = "";    
+    var forceUpdate = 0;
+    var timeoutid;
+    var pollid;
+    var CurrService = "";
+    var OldNServices = 0;
+    var OldNServers = 0;
+    var OldNnodes = 0;
+    var OldNSearch = -1;
+    var UpdateService = 1;
+    var UpdateButton = 0;
+
+
+    function poll()
+    {
+//	if(!pollid)
+//		return;
+	requestNumber = requestNumber + 1;
+	HTTPPollPacket.open( "GET", "/didPoll.json/src?dimservice="+CurrService+"&reqNr="+requestNumber+"&reqId="+randomNumber+"&force=0", true ); 
+	HTTPPollPacket.send( null );
+    }
+    function pollAnswer()
+    {
+	var answer;
+	if ( HTTPPollPacket.readyState != 4 )
+		return;
+	answer = HTTPPollPacket.responseText;
+	if(answer == "")
+	{
+		pollid = setTimeout(poll, 5000);
+		return;
+	}
+	var items = answer.split(" ");
+	if((items[0] != OldNServices) || (items[1] != OldNServers))
+	{
+//	    storeHeader.load(); 
+	    headerList.update(items[1]+" Servers Known - "+items[0]+" Services Available (on "+items[2]+" nodes)");
+	}
+	if((items[1] != OldNServers) || (items[2] != OldNnodes))
+	{
+	    storeNodes.load();
+	    clearServices();
+	}
+	if(items[3] != 0)
+	    doGetService();
+	OldNServices = items[0];
+	OldNServers = items[1];
+	OldNnodes = items[2];
+	if(items[4] != OldNSearch)
+	{
+	    if(items[4] != 0)
+	        searchInfo.update("Showing: "+items[5]+" Servers - "+items[4]+" Services (on "+items[6]+" nodes)");
+	    else
+	        searchInfo.update("Showing: All");
+	    OldNSearch = items[4];
+	}
+	pollid = setTimeout(poll, 5000);
+    }
+
+    function query(pattern, force)
+    {
+	if(pollid)
+		clearTimeout(pollid);
+	pollid = 0;
+	requestNumber = requestNumber + 1;
+	HTTPQueryPacket.open( "GET", "/didQuery.json/src?dimservice="+pattern+"&reqNr="+requestNumber+"&reqId="+randomNumber+"&force="+force, true ); 
+	HTTPQueryPacket.send( null );
+    }
+    function queryAnswer()
+    {
+	var answer;
+	if ( HTTPQueryPacket.readyState != 4 )
+		return;
+	answer = HTTPQueryPacket.responseText;
+	if(answer == "load")
+	{
+		storeNodes.load(); 
+		clearServices();
+		poll();
+	}
+	else
+	pollid = setTimeout(poll, 1000);
+//	poll();
+    } 
+
+    function doGetService()
+    {
+	if(LastService != "")
+		getService(LastService, LastId);
+    }
+    function getService(name, id)
+    {
+	if(pollid)
+		clearTimeout(pollid);
+	pollid = 0;
+	forceUpdate = 0;
+	if(LastService != name)
+	{
+		forceUpdate = 1;
+		UpdateService = 1;
+		if(UpdateButton)
+			UpdateButton.setType('gear');
+		LastService = name;
+		LastId = id;
+	}
+	var items = id.split("|");
+	if(items.length == 3)
+	{
+//		serviceInfo.update(name + " is a DIM Command");
+		commandInfo.update(name + " is a DIM Command");
+//		serviceInfo.setVisible(0);
+//		commandInfoArea.setVisible(1);
+		CurrService = "";
+		forceUpdate = -1;
+//		return;
+	}
+	var name1 = name.replace(/\?/g,"%3F");
+	name1 = name1.replace(/\&/g,"%26");
+	if(forceUpdate != -1)
+		CurrService = name1;
+	requestNumber = requestNumber + 1;
+	if(UpdateService)
+	{
+		HTTPPacket.open( "GET", "/didServiceData.json/src?dimservice="+name1+"&id=src&reqNr="+requestNumber+"&reqId="+randomNumber+"&force="+forceUpdate, true ); 
+		HTTPPacket.send( null );
+	}
+    }
+    function process() 
+    {
+	serviceInfoArea.update("Updating - state "+HTTPPacket.readyState+"...");
+	if ( HTTPPacket.readyState != 4 )
+		return; 
+	if(HTTPPacket.responseText == "")
+	{
+//		timeoutid = window.setTimeout(doGetService, 5000);
+		pollid = setTimeout(poll, 5000);
+		return;
+	}
+	if(forceUpdate != -1)
+	{
+//		if(UpdateService)
+//		{
+			serviceInfoArea.update(HTTPPacket.responseText);
+			serviceInfoArea.setVisible(1);
+			commandInfoArea.setVisible(0);
+//		}
+	}
+	else
+	{
+		commandInfo.update(HTTPPacket.responseText);
+		serviceInfoArea.setVisible(0);
+		commandInfoArea.setVisible(1);
+	}
+//	timeoutid = window.setTimeout(doGetService, 5000);
+	pollid = setTimeout(poll, 5000);
+    } 
+
+    var serviceList = Ext.create('Ext.tree.Panel', {
+        title: 'Services',
+        width: 360,
+        height: 150,
+        store: storeServices,
+        rootVisible: false,
+	autoScroll: true,
+        listeners: {
+	    itemclick: function(view, rec, item, index, evtObj) {
+		getService(rec.get('text'),rec.get('id'));
+	    }
+        }	
+    });
+
+    var nodeTree = Ext.create('Ext.tree.Panel', {
+        title: 'Nodes & Servers',
+        width: 360,
+        height: 150,
+        store: storeNodes,
+        rootVisible: false,
+	autoScroll: true,
+//	deferRowRender: true,
+        listeners: {
+	    itemclick: function(view, rec, item, index, evtObj) {
+		if(rec.get('leaf') == true)
+		{
+		    storeServices.load({
+		        params: {
+		            dimserver: rec.get('text'),
+		            dimnode: rec.get('parentId'),
+			    dimserverid: rec.get('id')
+			}
+		    });
+		}
+	    }
+        }	
+    });
+/*    
+    var storeHeader = Ext.create('Ext.data.Store', {
+        proxy: {
+            type: 'rest',
+            url: '/didHeader.json',
+            reader: {
+                type: 'json',
+                root: 'items'
+            }
+        },
+//	autoLoad: true,
+        fields: ['text']
+    });
+
+    var headerList = Ext.create('Ext.grid.Panel', {
+        layout: 'fit',
+        title: 'DID - DIM Information Display',
+//        width: 500,
+        height: 70,
+        store: storeHeader,
+	hideHeaders: true,
+	columns: [{ text: 'Text', dataIndex: 'text', flex: 1 }]
+    });
+*/
+    var headerList = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        title: 'DID - DIM Information Display',
+        id: 'top-panel',
+        width: 2000,
+        height: 55,
+//        margin: '5 0 5 5',
+//	border: 0,
+        bodyPadding: '5 0 5 5',
+        html: ''
+    });
+
+    var searchButton = Ext.create('Ext.Button', {
+        text: 'Search',
+        margin: '2 0 5 5',
+	handler: function() {
+//		var pattern = getElementById('pattern');
+//		serviceInfo.update(inputArea.getRawValue());
+//		storeServices.removeAll();
+//		storeServices.load({
+//		        params: {
+//		            dimserver: "",
+//		            dimnode: "",
+//			    dimserverid: ""
+//			}
+//		});
+		clearServices();
+		var pattern = inputArea.getRawValue();
+		query(pattern, 0);	
+	}
+    });
+
+    var allButton = Ext.create('Ext.Button', {
+        text: 'Show All',
+        margin: '2 0 5 5',
+	handler: function() {
+//		var pattern = getElementById('pattern');
+//		serviceInfo.update(inputArea.getRawValue());
+//		var pattern = inputArea.getRawValue();
+//		query(pattern);	
+//		storeServices.removeAll();
+//		storeServices.load({
+//		        params: {
+//		            dimserver: "",
+//		            dimnode: "",
+//			    dimserverid: ""
+//			}
+//		});
+		clearServices();
+		var pattern = "";
+		query(pattern, 0);	
+	}
+    });
+	
+    var searchInfo = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        id: 'search-panel',
+//        title: 'Service Info',
+//       region: 'east',
+//        bodyStyle: 'padding-bottom:15px;background:#eee;',
+//        autoScroll: true,
+        margin: '5 0 5 10',
+//	bodyBorder: false,
+	border: 0,
+        html: ''
+    });
+
+    var inputArea = Ext.create('Ext.form.field.Text', {
+        width: 400,
+        id: 'pattern',
+	xtype: 'textfield',
+	name: 'Search pattern',
+	fieldLabel: 'pattern',
+	labelWidth: 45,
+//	allowBlank: false,
+        margin: '2 0 5 5'
+    });
+
+    var searchArea = Ext.create('Ext.form.Panel', {
+        layout: 'hbox',
+        title: 'Service Search',
+        width: 2000,
+//        height: 30,
+//        margins: '2 0 5 5',
+	items: [inputArea, searchButton, allButton, searchInfo]	
+    });
+    
+
+    Ext.create('Ext.Viewport', {
+        layout: 'border',
+        title: 'DID',
+        items: [{
+            layout: 'vbox',
+            id: 'layout-browser3',
+            region:'north',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            items: [headerList, searchArea]
+        },{
+            layout: 'fit',
+            id: 'layout-browser',
+            region:'west',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            width: 220,
+            minSize: 100,
+            maxSize: 500,
+            items: [nodeTree]
+        },{
+            layout: 'fit',
+            id: 'layout-browser1',
+            region:'center',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            minSize: 100,
+            maxSize: 500,
+//            items: [nodeTree, serviceList]
+            items: [serviceList]
+        },{
+            layout: 'fit',
+            id: 'layout-browser2',
+            region:'east',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            width: 580,
+            minSize: 100,
+            maxSize: 600,
+            items: [serviceCommandArea]
+        }
+        ],
+        renderTo: Ext.getBody()
+    });
+    commandInfoArea.setVisible(0);
+//    storeHeader.load(); 
+//    pollid = window.setTimeout(poll, 1000);
+    poll();
+});
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/bootstrap.js
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/bootstrap.js	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/bootstrap.js	(revision 18732)
@@ -0,0 +1,77 @@
+/*
+This file is part of Ext JS 4.2
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314)
+*/
+/**
+ * Load the library located at the same path with this file
+ *
+ * Will automatically load ext-all-dev.js if any of these conditions is true:
+ * - Current hostname is localhost
+ * - Current hostname is an IP v4 address
+ * - Current protocol is "file:"
+ *
+ * Will load ext-all.js (minified) otherwise
+ */
+(function() {
+    var scripts = document.getElementsByTagName('script'),
+        localhostTests = [
+            /^localhost$/,
+            /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?\b/ // IP v4
+        ],
+        host = window.location.hostname,
+        isDevelopment = null,
+        queryString = window.location.search,
+        test, path, i, ln, scriptSrc, match;
+
+    for (i = 0, ln = scripts.length; i < ln; i++) {
+        scriptSrc = scripts[i].src;
+
+        match = scriptSrc.match(/bootstrap\.js$/);
+
+        if (match) {
+            path = scriptSrc.substring(0, scriptSrc.length - match[0].length);
+            break;
+        }
+    }
+
+    if (queryString.match('(\\?|&)debug') !== null) {
+        isDevelopment = true;
+    }
+    else if (queryString.match('(\\?|&)nodebug') !== null) {
+        isDevelopment = false;
+    }
+
+    if (isDevelopment === null) {
+        for (i = 0, ln = localhostTests.length; i < ln; i++) {
+            test = localhostTests[i];
+
+            if (host.search(test) !== -1) {
+                isDevelopment = true;
+                break;
+            }
+        }
+    }
+
+    if (isDevelopment === null && window.location.protocol === 'file:') {
+        isDevelopment = true;
+    }
+
+    document.write('<script type="text/javascript" charset="UTF-8" src="' + 
+        path + 'ext-all' + (isDevelopment ? '-dev' : '') + '.js"></script>');
+})();
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/build.xml
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/build.xml	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/build.xml	(revision 18732)
@@ -0,0 +1,453 @@
+<project name="extjs" default="build" basedir=".">
+    <target name="find-cmd" unless="cmd.dir">
+        <!--
+        Run "sencha which" to find the Sencha Cmd basedir and get "cmd.dir" setup. We
+        need to execute the command with curdir set properly for Cmd to pick up that we
+        are running for an application.
+        -->
+        <exec executable="sencha" dir="${basedir}">
+            <arg value="which"/><arg value="-o=$cmddir$"/>
+        </exec>
+
+        <!-- Now read the generated properties file and delete it -->
+        <property file="$cmddir$"/>
+        <delete file="$cmddir$"/>
+    </target>
+
+    <target name="init-antcontrib" depends="find-cmd">
+        <echo>Using Sencha Cmd from ${cmd.dir}</echo>
+
+        <taskdef resource="net/sf/antcontrib/antlib.xml"
+                 loaderref="senchaloader">
+            <classpath>
+                <pathelement location="${cmd.dir}/lib/ant-contrib-1.0b3.jar"/>
+                <pathelement location="${cmd.dir}/lib/commons-httpclient-3.0.1.jar"/>
+                <pathelement location="${cmd.dir}/lib/commons-logging-1.0.4.jar"/>
+                <pathelement location="${cmd.dir}/lib/commons-codec-1.3.jar"/>
+            </classpath>
+        </taskdef>
+    </target>
+
+    <target name="init-sencha-cmd" depends="init-antcontrib">
+        <taskdef resource="com/sencha/ant/antlib.xml" 
+                 classpath="${cmd.dir}/sencha.jar"
+                 loaderref="senchaloader"/>
+    </target>
+
+    <target name="init-all" depends="init-sencha-cmd">
+        <property name="build.dir"          location="${basedir}"/>
+        <property name="build.docs.dir"     location="${build.dir}/docs"/>
+
+        <echo>build.dir: ${build.dir}</echo>
+    </target>
+
+    <!-- ****************************************************************** -->
+
+    <target name="build" depends="init-all"
+            description="Build the SDK from source">
+        <!--
+        Lay down the file header so we can append the rest from the compiler.
+        -->
+        <for list="ext-core,ext-foundation,ext-all-sandbox,ext-all-rtl-sandbox" param="file">
+            <sequential>
+                <for list=".js,-dev.js,-debug-w-comments.js" param="sfx">
+                    <sequential>
+                        <copy file="${build.dir}/file-header.js"
+                              tofile="${build.dir}/builds/@{file}@{sfx}" overwrite="true"/>
+                    </sequential>
+                </for>
+            </sequential>
+        </for>
+        <for list="ext,ext-all,ext-all-rtl" param="file">
+            <sequential>
+                <for list=".js,-dev.js,-debug-w-comments.js" param="sfx">
+                    <sequential>
+                        <copy file="${build.dir}/file-header.js"
+                              tofile="${build.dir}/@{file}@{sfx}" overwrite="true"/>
+                    </sequential>
+                </for>
+            </sequential>
+        </for>
+
+        <!--
+        Compile from sources and appending to stubs containing just the license header.
+        -->
+        <x-sencha-command dir="${basedir}">
+            compile
+                -ignore=diag
+
+                # Remove the license header from the source files:
+                -prefix
+                    ${basedir}/file-header.js
+
+                # Build *-dev.js files - these have all "debug" conditional code active
+                # for use in development mode.
+
+                -options=debug:true
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-all-rtl-dev.js
+                    and
+                    concatenate
+                        +append
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-rtl-sandbox-dev.js
+                    and
+
+
+                    exclude
+                        -namespace=Ext.rtl
+                    and
+
+
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-all-dev.js
+                    and
+                    concatenate
+                        +append
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-sandbox-dev.js
+                    and
+
+
+                    union
+                        -tag=core
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-dev.js
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/builds/ext-core-dev.js
+                    and
+
+
+                    union
+                        -tag=foundation
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/builds/ext-foundation-dev.js
+                    and
+
+                # Build *-debug-w-comments.js files - these are comment stripped to give
+                # *-debug.js files. These have normal whitespace and are intended to be
+                # debuggable versions of *-all.js files. They do not contain "dev mode"
+                # diagnostic code.
+                    
+                -options=debug:false
+                    include
+                        +all
+                    and
+
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-all-rtl-debug-w-comments.js
+                    and
+                    concatenate
+                        +append
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-rtl-sandbox-debug-w-comments.js
+                    and
+
+
+                    exclude
+                        -namespace=Ext.rtl
+                    and
+
+
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-all-debug-w-comments.js
+                    and
+                    concatenate
+                        +append
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-sandbox-debug-w-comments.js
+                    and
+
+
+                    union
+                        -tag=core
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/ext-debug-w-comments.js
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/builds/ext-core-debug-w-comments.js
+                    and
+
+
+                    union
+                        -tag=foundation
+                    and
+                    concatenate
+                        +append
+                        -output-file=${build.dir}/builds/ext-foundation-debug-w-comments.js
+                    and
+
+                # Generate bootstrap data in to ext-dev.js and ext-debug-w-comments.js to
+                # enable the dynamic loader.
+
+                    include
+                        +all
+                    and
+                    exclude
+                        -tag=core
+                    and
+
+                    metadata
+                        +append
+                        +alternates
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-debug-w-comments.js
+                    and
+                    metadata
+                        +append
+                        +alias
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-debug-w-comments.js
+                    and
+
+                    metadata
+                        +append
+                        +alternates
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-dev.js
+                    and
+                    metadata
+                        +append
+                        +alias
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-dev.js
+                    and
+            
+                # Optimize and compress the builds
+            
+                -options=debug:false
+                    include
+                        +all
+                    and
+                    optimize
+                        -define-rewrite
+                    and
+            
+            
+                    concatenate
+                        +append
+                        +yui
+                        -output-file=${build.dir}/ext-all-rtl.js
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-rtl-sandbox.js
+                    and
+            
+            
+                    exclude
+                        -namespace=Ext.rtl
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -output-file=${build.dir}/ext-all.js
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -sandbox=Ext4:x4-
+                        -output-file=${build.dir}/builds/ext-all-sandbox.js
+                    and
+            
+            
+                    union
+                        -tag=core
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -output-file=${build.dir}/ext.js
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -output-file=${build.dir}/builds/ext-core.js
+                    and
+            
+            
+                    union
+                        -tag=foundation
+                    and
+                    concatenate
+                        +append
+                        +yui
+                        -output-file=${build.dir}/builds/ext-foundation.js
+            
+        </x-sencha-command>
+
+        <!--
+        Strip comments and compress all flavors.
+        -->
+        <for list="ext,ext-all,ext-all-rtl,builds/ext-all-sandbox,builds/ext-all-rtl-sandbox,builds/ext-core,builds/ext-foundation"
+             param="kind">
+            <sequential>
+                <x-strip-js srcfile="${build.dir}/@{kind}-debug-w-comments.js"
+                            outfile="${build.dir}/@{kind}-debug.js"/>
+            </sequential>
+        </for>
+
+    </target>
+
+    <target name="examples" depends="init-all">
+        <x-sencha-command>
+            compile
+                --ignore=diag,rtl/
+                --classpath=${basedir}/examples/shared,${basedir}/examples/ux
+                --classpath=${basedir}/examples/desktop
+                --classpath=${basedir}/examples/portal
+                --classpath=${basedir}/examples/grouptabs
+                --classpath=${basedir}/examples/kitchensink
+                --classpath=${basedir}/examples/app/simple
+                --classpath=${basedir}/examples/simple-tasks
+                --classpath=${basedir}/examples/app/nested-loading
+                --classpath=${basedir}/examples/app/feed-viewer
+                --options=debug:false
+                    page
+                        --scripts=../common.js
+                        --input-file=${basedir}/examples/desktop/desktop.html
+                        --output=${build.dir}/examples/desktop/compiled-desktop.html
+                        --name=desktop
+                    and
+                    page
+                        --scripts=../common.js
+                        --input-file=${basedir}/examples/grouptabs/grouptabs.html
+                        --output=${build.dir}/examples/grouptabs/compiled-grouptabs.html
+                        --name=grouptabs
+                    and
+                    page
+                        --scripts=../common.js
+                        --input-file=${basedir}/examples/kitchensink/index.html
+                        --output=${build.dir}/examples/kitchensink/compiled-index.html
+                        --name=kitchensink
+                    and
+                    page
+                        --scripts=../../common.js
+                        --input-file=${basedir}/examples/app/simple/simple.html
+                        --output=${build.dir}/examples/app/simple/compiled-simple.html
+                        --name=simpleapp
+                    and
+                    page
+                        --scripts=../common.js
+                        --input-file=${basedir}/examples/simple-tasks/index.html
+                        --output=${build.dir}/examples/simple-tasks/compiled-index.html
+                        --name=simpletasks
+                    and
+                    page
+                        --scripts=../../common.js
+                        --input-file=${basedir}/examples/app/nested-loading/nested-loading.html
+                        --output=${build.dir}/examples/app/nested-loading/compiled-nested-loading.html
+                        --name=nested-loading
+                    and
+                    page
+                        --scripts=../../common.js
+                        --input-file=${basedir}/examples/app/feed-viewer/feed-viewer.html
+                        --output=${build.dir}/examples/app/feed-viewer/compiled-feed-viewer.html
+                        --name=feed-viewer
+                    and
+                    page
+                        --scripts=../common.js
+                        --input-file=${basedir}/examples/portal/portal.html
+                        --output=${build.dir}/examples/portal/compiled-portal.html
+                        --name=portal
+                    and
+                    intersect
+                        -min=6
+                        -set=desktop,grouptabs,kitchensink,simpleapp,simpletasks,nested-loading,feed-viewer,portal
+                    and
+                    save
+                        common
+                    and
+                    concatenate
+                        --strip-comments=true
+                        --output-file=${build.dir}/examples/common.js
+                    and
+                    restore
+                        portal
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/portal/all-classes.js
+                    and
+                    restore
+                        feed-viewer
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/app/feed-viewer/all-classes.js
+                    and
+                    restore
+                        nested-loading
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/app/nested-loading/all-classes.js
+                    and
+                    restore
+                        simpletasks
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/simple-tasks/all-classes.js
+                    and
+                    restore
+                        simpleapp
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/app/simple/all-classes.js
+                    and
+                    restore
+                        kitchensink
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/kitchensink/all-classes.js
+                    and
+                    restore
+                        grouptabs
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/grouptabs/all-classes.js
+                    and
+                    restore
+                        desktop
+                    and
+                    exclude
+                        -set=common
+                    and
+                    concatenate
+                        --output-file=${build.dir}/examples/desktop/all-classes.js
+        </x-sencha-command>
+    </target>
+</project>
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext-all.js
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext-all.js	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext-all.js	(revision 18732)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.2
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314)
+*/
+var Ext=Ext||{};if(!Ext.Direct){Ext.Direct={}}if(!Ext.Toolbar){Ext.Toolbar={}}if(!Ext.app){Ext.app={}}if(!Ext.app.domain){Ext.app.domain={}}if(!Ext.button){Ext.button={}}if(!Ext.chart){Ext.chart={}}if(!Ext.chart.axis){Ext.chart.axis={}}if(!Ext.chart.series){Ext.chart.series={}}if(!Ext.chart.theme){Ext.chart.theme={}}if(!Ext.container){Ext.container={}}if(!Ext.core){Ext.core={}}if(!Ext.data){Ext.data={}}if(!Ext.data.association){Ext.data.association={}}if(!Ext.data.flash){Ext.data.flash={}}if(!Ext.data.proxy){Ext.data.proxy={}}if(!Ext.data.reader){Ext.data.reader={}}if(!Ext.data.writer){Ext.data.writer={}}if(!Ext.dd){Ext.dd={}}if(!Ext.direct){Ext.direct={}}if(!Ext.dom){Ext.dom={}}if(!Ext.draw){Ext.draw={}}if(!Ext.draw.engine){Ext.draw.engine={}}if(!Ext.flash){Ext.flash={}}if(!Ext.form){Ext.form={}}if(!Ext.form.Action){Ext.form.Action={}}if(!Ext.form.action){Ext.form.action={}}if(!Ext.form.field){Ext.form.field={}}if(!Ext.fx){Ext.fx={}}if(!Ext.fx.target){Ext.fx.target={}}if(!Ext.grid){Ext.grid={}}if(!Ext.grid.column){Ext.grid.column={}}if(!Ext.grid.feature){Ext.grid.feature={}}if(!Ext.grid.header){Ext.grid.header={}}if(!Ext.grid.locking){Ext.grid.locking={}}if(!Ext.grid.plugin){Ext.grid.plugin={}}if(!Ext.grid.property){Ext.grid.property={}}if(!Ext.layout){Ext.layout={}}if(!Ext.layout.boxOverflow){Ext.layout.boxOverflow={}}if(!Ext.layout.component){Ext.layout.component={}}if(!Ext.layout.component.field){Ext.layout.component.field={}}if(!Ext.layout.container){Ext.layout.container={}}if(!Ext.layout.container.border){Ext.layout.container.border={}}if(!Ext.layout.container.boxOverflow){Ext.layout.container.boxOverflow={}}if(!Ext.list){Ext.list={}}if(!Ext.menu){Ext.menu={}}if(!Ext.panel){Ext.panel={}}if(!Ext.perf){Ext.perf={}}if(!Ext.picker){Ext.picker={}}if(!Ext.resizer){Ext.resizer={}}if(!Ext.rtl){Ext.rtl={}}if(!Ext.rtl.button){Ext.rtl.button={}}if(!Ext.rtl.dd){Ext.rtl.dd={}}if(!Ext.rtl.dom){Ext.rtl.dom={}}if(!Ext.rtl.form){Ext.rtl.form={}}if(!Ext.rtl.form.field){Ext.rtl.form.field={}}if(!Ext.rtl.grid){Ext.rtl.grid={}}if(!Ext.rtl.grid.column){Ext.rtl.grid.column={}}if(!Ext.rtl.grid.plugin){Ext.rtl.grid.plugin={}}if(!Ext.rtl.layout){Ext.rtl.layout={}}if(!Ext.rtl.layout.component){Ext.rtl.layout.component={}}if(!Ext.rtl.layout.component.field){Ext.rtl.layout.component.field={}}if(!Ext.rtl.layout.container){Ext.rtl.layout.container={}}if(!Ext.rtl.layout.container.boxOverflow){Ext.rtl.layout.container.boxOverflow={}}if(!Ext.rtl.panel){Ext.rtl.panel={}}if(!Ext.rtl.resizer){Ext.rtl.resizer={}}if(!Ext.rtl.selection){Ext.rtl.selection={}}if(!Ext.rtl.slider){Ext.rtl.slider={}}if(!Ext.rtl.tab){Ext.rtl.tab={}}if(!Ext.rtl.tip){Ext.rtl.tip={}}if(!Ext.rtl.tree){Ext.rtl.tree={}}if(!Ext.rtl.util){Ext.rtl.util={}}if(!Ext.rtl.view){Ext.rtl.view={}}if(!Ext.selection){Ext.selection={}}if(!Ext.slider){Ext.slider={}}if(!Ext.state){Ext.state={}}if(!Ext.tab){Ext.tab={}}if(!Ext.tip){Ext.tip={}}if(!Ext.toolbar){Ext.toolbar={}}if(!Ext.tree){Ext.tree={}}if(!Ext.tree.plugin){Ext.tree.plugin={}}if(!Ext.util){Ext.util={}}if(!Ext.ux){Ext.ux={}}if(!Ext.ux.form){Ext.ux.form={}}if(!Ext.view){Ext.view={}}if(!Ext.window){Ext.window={}}(function(j){var l=[],m=["constructor","toString","valueOf","toLocaleString"],k={},p={},b=0,h,c,o,g,a=function(){var r,q;c=Ext.Base;o=Ext.ClassManager;for(r=m.length;r-->0;){q=(1<<r);p[k[q]=m[r]]=q}for(r in p){b|=p[r]}b=~b;Function.prototype.$isFunction=1;g=Ext.Class.getPreprocessor("config").fn;for(h in c){if(c.hasOwnProperty(h)){l.push(h)}}j.derive=d;return d.apply(this,arguments)},e=function(y,u,x){var r=x.enumerableMembers,v=y.prototype,t,w,s,q;if(!u){return}for(t in u){q=u[t];if(q&&q.$isFunction&&!q.$isClass&&q!==Ext.emptyFn&&q!==Ext.identityFn){v[t]=w=q;w.$owner=y;w.$name=t}else{v[t]=q}}for(s=1;r;s<<=1){if(r&s){r&=~s;t=k[s];v[t]=w=u[t];w.$owner=y;w.$name=t}}},n=function(u){var q=function t(){return u.apply(this,arguments)||null},s,r;q.prototype=Ext.Object.chain(u.prototype);for(s=l.length;s-->0;){r=l[s];q[r]=c[r]}return q},d=function(v,y,R,q,x,F,w,O,t,H,B){var r=function A(){return this.constructor.apply(this,arguments)||null},Q=r,s={enumerableMembers:q&b,onCreated:B,onBeforeCreated:e,aliases:O},E=R.alternateClassName||[],M=Ext.global,I,L,N,D,K,U,T,u,J,z,P,G,C,S;for(N=l.length;N-->0;){T=l[N];r[T]=c[T]}if(R.$isFunction){R=R(r)}s.data=R;z=R.statics,R.$className=v;if(R.$className){r.$className=R.$className}r.extend(y);J=r.prototype;r.xtype=R.xtype=x[0];if(x){J.xtypes=x}J.xtypesChain=F;J.xtypesMap=w;R.alias=O;Q.triggerExtended(r,R,s);if(R.onClassExtended){r.onExtended(R.onClassExtended,r);delete R.onClassExtended}if(z){for(P in z){if(z.hasOwnProperty(P)){S=z[P];if(S&&S.$isFunction&&!S.$isClass&&S!==Ext.emptyFn&&S!==Ext.identityFn){r[P]=C=S;C.$owner=r;C.$name=P}r[P]=S}}}delete R.statics;if(R.inheritableStatics){r.addInheritableStatics(R.inheritableStatics)}if(J.onClassExtended){Q.onExtended(J.onClassExtended,Q);delete J.onClassExtended}if(R.config){g(r,R)}s.onBeforeCreated(r,s.data,s);for(N=0,K=t&&t.length;N<K;++N){r.mixin.apply(r,t[N])}for(N=0,K=O.length;N<K;N++){I=O[N];o.setAlias(r,I)}if(R.singleton){Q=new r()}if(!(E instanceof Array)){E=[E]}for(N=0,D=E.length;N<D;N++){L=E[N];o.classes[L]=Q;G=o.getName(Q);u=o.maps.nameToAlternates;if(G&&G!==L){o.maps.alternateToName[L]=G;E=u[G]||(u[G]=[]);E.push(L)}}for(N=0,K=H.length;N<K;N+=2){U=H[N];if(!U){U=M}U[H[N+1]]=Q}o.classes[v]=Q;G=o.getName(Q);u=o.maps.nameToAlternates;if(G&&G!==v){o.maps.alternateToName[v]=G;E=u[G]||(u[G]=[]);E.push(v)}delete J.alternateClassName;if(s.onCreated){s.onCreated.call(Q,Q)}if(v){o.triggerCreated(v)}return Q};j.derive=a}(Ext.cmd={}));var Ext=Ext||{};Ext._startTime=new Date().getTime();(function(){var a=this,d=Object.prototype,b=d.toString,l=true,m={toString:1},g=function(){},k=function(){var n=k.caller.caller;return n.$owner.prototype[n.$name].apply(this,arguments)},e,j=/\S/,h,c=/\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/;Function.prototype.$extIsFunction=true;Ext.global=a;for(e in m){l=null}if(l){l=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]}Ext.enumerables=l;Ext.apply=function(q,p,s){if(s){Ext.apply(q,s)}if(q&&p&&typeof p==="object"){var r,o,n;for(r in p){q[r]=p[r]}if(l){for(o=l.length;o--;){n=l[o];if(p.hasOwnProperty(n)){q[n]=p[n]}}}}return q};Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-"},Ext.buildSettings||{});Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:g,identityFn:function(n){return n},emptyString:new String(),baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(o,n){var p;if(o){for(p in n){if(o[p]===undefined){o[p]=n[p]}}}return o},iterate:function(n,p,o){if(Ext.isEmpty(n)){return}if(o===undefined){o=n}if(Ext.isIterable(n)){Ext.Array.each.call(Ext.Array,n,p,o)}else{Ext.Object.each.call(Ext.Object,n,p,o)}}});Ext.apply(Ext,{extend:(function(){var n=d.constructor,o=function(q){for(var p in q){if(!q.hasOwnProperty(p)){continue}this[p]=q[p]}};return function(p,u,s){if(Ext.isObject(u)){s=u;u=p;p=s.constructor!==n?s.constructor:function(){u.apply(this,arguments)}}var r=function(){},q,t=u.prototype;r.prototype=t;q=p.prototype=new r();q.constructor=p;p.superclass=t;if(t.constructor===n){t.constructor=u}p.override=function(v){Ext.override(p,v)};q.override=o;q.proto=q;p.override(s);p.extend=function(v){return Ext.extend(p,v)};return p}}()),override:function(q,r){if(q.$isClass){q.override(r)}else{if(typeof q=="function"){Ext.apply(q.prototype,r)}else{var n=q.self,o,p;if(n&&n.$isClass){for(o in r){if(r.hasOwnProperty(o)){p=r[o];if(typeof p=="function"){p.$name=o;p.$owner=n;p.$previous=q.hasOwnProperty(o)?q[o]:k}q[o]=p}}}else{Ext.apply(q,r)}}}return q}});Ext.apply(Ext,{valueFrom:function(p,n,o){return Ext.isEmpty(p,o)?n:p},typeOf:function(o){var n,p;if(o===null){return"null"}n=typeof o;if(n==="undefined"||n==="string"||n==="number"||n==="boolean"){return n}p=b.call(o);switch(p){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}if(n==="function"){return"function"}if(n==="object"){if(o.nodeType!==undefined){if(o.nodeType===3){return(j).test(o.nodeValue)?"textnode":"whitespace"}else{return"element"}}return"object"}},coerce:function(r,q){var p=Ext.typeOf(r),o=Ext.typeOf(q),n=typeof r==="string";if(p!==o){switch(o){case"string":return String(r);case"number":return Number(r);case"boolean":return n&&(!r||r==="false")?false:Boolean(r);case"null":return n&&(!r||r==="null")?null:r;case"undefined":return n&&(!r||r==="undefined")?undefined:r;case"date":return n&&isNaN(r)?Ext.Date.parse(r,Ext.Date.defaultFormat):Date(Number(r))}}return r},isEmpty:function(n,o){return(n===null)||(n===undefined)||(!o?n==="":false)||(Ext.isArray(n)&&n.length===0)},isArray:("isArray" in Array)?Array.isArray:function(n){return b.call(n)==="[object Array]"},isDate:function(n){return b.call(n)==="[object Date]"},isObject:(b.call(null)==="[object Object]")?function(n){return n!==null&&n!==undefined&&b.call(n)==="[object Object]"&&n.ownerDocument===undefined}:function(n){return b.call(n)==="[object Object]"},isSimpleObject:function(n){return n instanceof Object&&n.constructor===Object},isPrimitive:function(o){var n=typeof o;return n==="string"||n==="number"||n==="boolean"},isFunction:function(n){return !!(n&&n.$extIsFunction)},isNumber:function(n){return typeof n==="number"&&isFinite(n)},isNumeric:function(n){return !isNaN(parseFloat(n))&&isFinite(n)},isString:function(n){return typeof n==="string"},isBoolean:function(n){return typeof n==="boolean"},isElement:function(n){return n?n.nodeType===1:false},isTextNode:function(n){return n?n.nodeName==="#text":false},isDefined:function(n){return typeof n!=="undefined"},isIterable:function(n){if(!n||typeof n.length!=="number"||typeof n==="string"||n.$extIsFunction){return false}if(!n.propertyIsEnumerable){return !!n.item}if(n.hasOwnProperty("length")&&!n.propertyIsEnumerable("length")){return true}return c.test(b.call(n))}});Ext.apply(Ext,{clone:function(s){var r,q,o,n,t,p;if(s===null||s===undefined){return s}if(s.nodeType&&s.cloneNode){return s.cloneNode(true)}r=b.call(s);if(r==="[object Date]"){return new Date(s.getTime())}if(r==="[object Array]"){q=s.length;t=[];while(q--){t[q]=Ext.clone(s[q])}}else{if(r==="[object Object]"&&s.constructor===Object){t={};for(p in s){t[p]=Ext.clone(s[p])}if(l){for(o=l.length;o--;){n=l[o];if(s.hasOwnProperty(n)){t[n]=s[n]}}}}}return t||s},getUniqueGlobalNamespace:function(){var o=this.uniqueGlobalNamespace,n;if(o===undefined){n=0;do{o="ExtBox"+(++n)}while(Ext.global[o]!==undefined);Ext.global[o]=Ext;this.uniqueGlobalNamespace=o}return o},functionFactoryCache:{},cacheableFunctionFactory:function(){var s=this,p=Array.prototype.slice.call(arguments),o=s.functionFactoryCache,n,q,r;if(Ext.isSandboxed){r=p.length;if(r>0){r--;p[r]="var Ext=window."+Ext.name+";"+p[r]}}n=p.join("");q=o[n];if(!q){q=Function.prototype.constructor.apply(Function.prototype,p);o[n]=q}return q},functionFactory:function(){var p=this,n=Array.prototype.slice.call(arguments),o;if(Ext.isSandboxed){o=n.length;if(o>0){o--;n[o]="var Ext=window."+Ext.name+";"+n[o]}}return Function.prototype.constructor.apply(Function.prototype,n)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(n){throw new Error(n)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(p){var n=Ext.app.namespaces,o;for(o in p){if(p.hasOwnProperty(o)){n[o]=true}}},addNamespaces:function(p){var q=Ext.app.namespaces,o,n;if(!Ext.isArray(p)){p=[p]}for(o=0,n=p.length;o<n;o++){q[p[o]]=true}},clearNamespaces:function(){Ext.app.namespaces={}},getNamespace:function(o){var q=Ext.app.namespaces,n="",p;for(p in q){if(q.hasOwnProperty(p)&&p.length>n.length&&(p+"."===o.substring(0,p.length+1))){n=p}}return n===""?undefined:n}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;c<Math.max(h.length,g.length);c++){d=this.getComponentValue(h[c]);e=this.getComponentValue(g[c]);if(d<e){return -1}else{if(d>e){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,j=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(r,q){return e[q]},m=function(r,q){return(q in a)?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(r,q){if(r===null||r===undefined||q===null||q===undefined){return false}return q.length<=r.length};return{insert:function(t,u,r){if(!t){return u}if(!u){return t}var q=t.length;if(!r&&r!==0){r=q}if(r<0){r*=-1;if(r>=q){r=0}else{r=q-r}}if(r===0){t=u+t}else{if(r>=t.length){t+=u}else{t=t.substr(0,r)+u+t.substr(r)}}return t},startsWith:function(t,u,r){var q=c(t,u);if(q){if(r){t=t.toLowerCase();u=u.toLowerCase()}q=t.lastIndexOf(u,0)===0}return q},endsWith:function(u,r,t){var q=c(u,r);if(q){if(t){u=u.toLowerCase();r=r.toLowerCase()}q=u.indexOf(r,u.length-r.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return(!q)?q:String(q).replace(h,g)},htmlDecode:function(q){return(!q)?q:String(q).replace(d,m)},addCharacterEntities:function(r){var q=[],u=[],s,t;for(s in r){t=r[s];a[s]=t;e[t]=s;q.push(t);u.push(s)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+u.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(r,q){if(!Ext.isEmpty(q)){return r+(r.indexOf("?")===-1?"?":"&")+q}return r},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(s,q,t){if(s&&s.length>q){if(t){var u=s.substr(0,q-2),r=Math.max(u.lastIndexOf(" "),u.lastIndexOf("."),u.lastIndexOf("!"),u.lastIndexOf("?"));if(r!==-1&&r>=(q-15)){return u.substr(0,r)+"..."}}return s.substr(0,q-3)+"..."}return s},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(r,s,q){return r===s?q:s},leftPad:function(r,s,t){var q=String(r);t=t||" ";while(q.length<s){q=t+q}return q},format:function(r){var q=Ext.Array.toArray(arguments,1);return r.replace(j,function(s,t){return q[t]})},repeat:function(u,t,r){if(t<1){t=0}for(var q=[],s=t;s--;){q.push(u)}return q.join(r||"")},splitWords:function(q){if(q&&typeof q=="string"){return q.replace(p,"").split(l)}return q||[]}}}());Ext.String.resetCharacterEntities();Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new function(){var b=this,c=(0.9).toFixed()!=="1",a=Math;Ext.apply(this,{constrain:function(h,g,e){var d=parseFloat(h);return(d<g)?g:((d>e)?e:d)},snap:function(h,e,g,j){var d;if(h===undefined||h<g){return g||0}if(e){d=h%e;if(d!==0){h-=d;if(d*2>=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,j)},snapInRange:function(h,d,g,j){var e;g=(g||0);if(h===undefined||h<g){return g}if(d&&(e=((h-g)%d))){h-=e;e*=2;if(e>=d){h+=d}}if(j!==undefined){if(h>(j=b.snapInRange(j,d,g))){h=j}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,p=g.slice,r=(function(){var B=[],e,A=20;if(!B.splice){return false}while(A--){B.push("A")}B.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=B.length;B.splice(13,0,"XXX");if(e+1!=B.length){return false}return true}()),k="forEach" in g,v="map" in g,q="indexOf" in g,z="every" in g,c="some" in g,d="filter" in g,o=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),l=true,a,x,u,w;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(t){l=false}function n(A,e){return(e<0)?Math.max(0,A.length+e):Math.min(A.length,e)}function y(H,G,A,K){var L=K?K.length:0,C=H.length,I=n(H,G),F,J,B,e,D,E;if(I===C){if(L){H.push.apply(H,K)}}else{F=Math.min(A,C-I);J=I+F;B=J+L-F;e=C-J;D=C-F;if(B<J){for(E=0;E<e;++E){H[B+E]=H[J+E]}}else{if(B>J){for(E=e;E--;){H[B+E]=H[J+E]}}}if(L&&I===D){H.length=D;H.push.apply(H,K)}else{H.length=D+L;for(E=0;E<L;++E){H[I+E]=K[E]}}}return H}function j(C,e,B,A){if(A&&A.length){if(e===0&&!B){C.unshift.apply(C,A)}else{if(e<C.length){C.splice.apply(C,[e,B].concat(A))}else{C.push.apply(C,A)}}}else{C.splice(e,B)}return C}function b(B,e,A){return y(B,e,A)}function s(B,e,A){B.splice(e,A);return B}function m(D,e,B){var C=n(D,e),A=D.slice(e,n(D,C+B));if(arguments.length<4){y(D,C,B)}else{y(D,C,B,p.call(arguments,3))}return A}function h(e){return e.splice.apply(e,p.call(arguments,1))}x=r?s:b;u=r?j:y;w=r?h:m;a=Ext.Array={each:function(E,C,B,e){E=a.from(E);var A,D=E.length;if(e!==true){for(A=0;A<D;A++){if(C.call(B||E[A],E[A],A,E)===false){return A}}}else{for(A=D-1;A>-1;A--){if(C.call(B||E[A],E[A],A,E)===false){return A}}}return true},forEach:k?function(B,A,e){B.forEach(A,e)}:function(D,B,A){var e=0,C=D.length;for(;e<C;e++){B.call(A,D[e],e,D)}},indexOf:q?function(B,e,A){return g.indexOf.call(B,e,A)}:function(D,B,C){var e,A=D.length;for(e=(C<0)?Math.max(0,A+C):C||0;e<A;e++){if(D[e]===B){return e}}return -1},contains:q?function(A,e){return g.indexOf.call(A,e)!==-1}:function(C,B){var e,A;for(e=0,A=C.length;e<A;e++){if(C[e]===B){return true}}return false},toArray:function(B,D,e){if(!B||!B.length){return[]}if(typeof B==="string"){B=B.split("")}if(l){return p.call(B,D||0,e||B.length)}var C=[],A;D=D||0;e=e?((e<0)?B.length+e:e):B.length;for(A=D;A<e;A++){C.push(B[A])}return C},pluck:function(E,e){var A=[],B,D,C;for(B=0,D=E.length;B<D;B++){C=E[B];A.push(C[e])}return A},map:v?function(B,A,e){return B.map(A,e)}:function(E,D,C){var B=[],A=0,e=E.length;for(;A<e;A++){B[A]=D.call(C,E[A],A,E)}return B},every:z?function(B,A,e){return B.every(A,e)}:function(D,B,A){var e=0,C=D.length;for(;e<C;++e){if(!B.call(A,D[e],e,D)){return false}}return true},some:c?function(B,A,e){return B.some(A,e)}:function(D,B,A){var e=0,C=D.length;for(;e<C;++e){if(B.call(A,D[e],e,D)){return true}}return false},equals:function(D,C){var A=D.length,e=C.length,B;if(D===C){return true}if(A!==e){return false}for(B=0;B<A;++B){if(D[B]!==C[B]){return false}}return true},clean:function(D){var A=[],e=0,C=D.length,B;for(;e<C;e++){B=D[e];if(!Ext.isEmpty(B)){A.push(B)}}return A},unique:function(D){var C=[],e=0,B=D.length,A;for(;e<B;e++){A=D[e];if(a.indexOf(C,A)===-1){C.push(A)}}return C},filter:d?function(B,A,e){return B.filter(A,e)}:function(E,C,B){var A=[],e=0,D=E.length;for(;e<D;e++){if(C.call(B,E[e],e,E)){A.push(E[e])}}return A},findBy:function(D,C,B){var A=0,e=D.length;for(;A<e;A++){if(C.call(B||D,D[A],A)){return D[A]}}return null},from:function(B,A){if(B===undefined||B===null){return[]}if(Ext.isArray(B)){return(A)?p.call(B):B}var e=typeof B;if(B&&B.length!==undefined&&e!=="string"&&(e!=="function"||!B.apply)){return a.toArray(B)}return[B]},remove:function(B,A){var e=a.indexOf(B,A);if(e!==-1){x(B,e,1)}return B},include:function(A,e){if(!a.contains(A,e)){A.push(e)}},clone:function(e){return p.call(e)},merge:function(){var e=p.call(arguments),C=[],A,B;for(A=0,B=e.length;A<B;A++){C=C.concat(e[A])}return a.unique(C)},intersect:function(){var e=[],B=p.call(arguments),M,K,G,J,N,C,A,I,L,D,H,F,E;if(!B.length){return e}M=B.length;for(H=N=0;H<M;H++){C=B[H];if(!J||C.length<J.length){J=C;N=H}}J=a.unique(J);x(B,N,1);A=J.length;M=B.length;for(H=0;H<A;H++){I=J[H];D=0;for(F=0;F<M;F++){K=B[F];G=K.length;for(E=0;E<G;E++){L=K[E];if(I===L){D++;break}}}if(D===M){e.push(I)}}return e},difference:function(A,e){var F=p.call(A),D=F.length,C,B,E;for(C=0,E=e.length;C<E;C++){for(B=0;B<D;B++){if(F[B]===e[C]){x(F,B,1);B--;D--}}}return F},slice:([1,2].slice(1,undefined).length?function(B,A,e){return p.call(B,A,e)}:function(B,A,e){if(typeof A==="undefined"){return p.call(B)}if(typeof e==="undefined"){return p.call(B,A)}return p.call(B,A,e)}),sort:o?function(A,e){if(e){return A.sort(e)}else{return A.sort()}}:function(G,F){var D=G.length,C=0,E,e,B,A;for(;C<D;C++){B=C;for(e=C+1;e<D;e++){if(F){E=F(G[e],G[B]);if(E<0){B=e}}else{if(G[e]<G[B]){B=e}}}if(B!==C){A=G[C];G[C]=G[B];G[B]=A}}return G},flatten:function(B){var A=[];function e(C){var E,F,D;for(E=0,F=C.length;E<F;E++){D=C[E];if(Ext.isArray(D)){e(D)}else{A.push(D)}}return A}return e(B)},min:function(E,D){var A=E[0],e,C,B;for(e=0,C=E.length;e<C;e++){B=E[e];if(D){if(D(A,B)===1){A=B}}else{if(B<A){A=B}}}return A},max:function(E,D){var e=E[0],A,C,B;for(A=0,C=E.length;A<C;A++){B=E[A];if(D){if(D(e,B)===-1){e=B}}else{if(B>e){e=B}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(D){var A=0,e,C,B;for(e=0,C=D.length;e<C;e++){B=D[e];A+=B}return A},toMap:function(D,e,B){var C={},A=D.length;if(!e){while(A--){C[D[A]]=A+1}}else{if(typeof e=="string"){while(A--){C[D[A][e]]=A+1}}else{while(A--){C[e.call(B,D[A])]=A+1}}}return C},toValueMap:function(D,e,B){var C={},A=D.length;if(!e){while(A--){C[D[A]]=D[A]}}else{if(typeof e=="string"){while(A--){C[D[A][e]]=D[A]}}else{while(A--){C[e.call(B,D[A])]=D[A]}}}return C},erase:x,insert:function(B,A,e){return u(B,A,0,e)},replace:u,splice:w,push:function(C){var e=arguments.length,B=1,A;if(C===undefined){C=[]}else{if(!Ext.isArray(C)){C=[C]}}for(;B<e;B++){A=arguments[B];Array.prototype.push[Ext.isIterable(A)?"apply":"call"](C,A)}return C}};Ext.each=a.each;a.union=a.merge;Ext.min=a.min;Ext.max=a.max;Ext.sum=a.sum;Ext.mean=a.mean;Ext.flatten=a.flatten;Ext.clean=a.clean;Ext.unique=a.unique;Ext.pluck=a.pluck;Ext.toArray=function(){return a.toArray.apply(a,arguments)}}());Ext.Function={flexSetter:function(a){return function(d,c){var e,g;if(d===null){return this}if(typeof d!=="string"){for(e in d){if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}if(Ext.enumerables){for(g=Ext.enumerables.length;g--;){e=Ext.enumerables[g];if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}}}else{a.call(this,d,c)}return this}},bind:function(d,c,b,a){if(arguments.length===2){return function(){return d.apply(c,arguments)}}var g=d,e=Array.prototype.slice;return function(){var h=b||arguments;if(a===true){h=e.call(arguments,0);h=h.concat(b)}else{if(typeof a=="number"){h=e.call(arguments,0);Ext.Array.insert(h,a,b)}}return g.apply(c||Ext.global,h)}},pass:function(c,a,b){if(!Ext.isArray(a)){if(Ext.isIterable(a)){a=Ext.Array.clone(a)}else{a=a!==undefined?[a]:[]}}return function(){var d=[].concat(a);d.push.apply(d,arguments);return c.apply(b||this,d)}},alias:function(b,a){return function(){return b[a].apply(b,arguments)}},clone:function(a){return function(){return a.apply(this,arguments)}},createInterceptor:function(d,c,b,a){var e=d;if(!Ext.isFunction(c)){return d}else{a=Ext.isDefined(a)?a:null;return function(){var h=this,g=arguments;c.target=h;c.method=d;return(c.apply(b||h||Ext.global,g)!==false)?d.apply(h||Ext.global,g):a}}},createDelayed:function(e,c,d,b,a){if(d||b){e=Ext.Function.bind(e,d,b,a)}return function(){var h=this,g=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(h,g)},c)}},defer:function(e,c,d,b,a){e=Ext.Function.bind(e,d,b,a);if(c>0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,j,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(j);if(!g||(a>=b)){h()}else{j=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g<h;g++){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}else{if(Ext.isObject(k)){for(g in k){if(k.hasOwnProperty(g)){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}}else{j.push({name:e,value:k})}}return j},toQueryString:function(g,d){var h=[],e=[],l,k,m,c,n;for(l in g){if(g.hasOwnProperty(l)){h=h.concat(b.toQueryObjects(l,g[l],d))}}for(k=0,m=h.length;k<m;k++){c=h[k];n=c.value;if(Ext.isEmpty(n)){n=""}else{if(Ext.isDate(n)){n=Ext.Date.toString(n)}}e.push(encodeURIComponent(c.name)+"="+encodeURIComponent(String(n)))}return e.join("&")},fromQueryString:function(d,r){var m=d.replace(/^\?/,"").split("&"),u={},s,k,w,n,q,g,o,p,c,h,t,l,v,e;for(q=0,g=m.length;q<g;q++){o=m[q];if(o.length>0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p<c;p++){v=h[p];v=(v.length===2)?"":v.substring(1,v.length-1);l.push(v)}l.unshift(w);s=u;for(p=0,c=l.length;p<c;p++){v=l[p];if(p===c-1){if(Ext.isArray(s)&&v===""){s.push(n)}else{s[v]=n}}else{if(s[v]===undefined||typeof s[v]==="string"){e=l[p+1];s[v]=(Ext.isNumeric(e)||e==="")?[]:{}}s=s[v]}}}}}return u},each:function(c,e,d){for(var g in c){if(c.hasOwnProperty(g)){if(e.call(d||c,g,c[g],c)===false){return}}}},merge:function(k){var h=1,j=arguments.length,c=b.merge,e=Ext.clone,g,m,l,d;for(;h<j;h++){g=arguments[h];for(m in g){l=g[m];if(l&&l.constructor===Object){d=k[m];if(d&&d.constructor===Object){c(d,l)}else{k[m]=e(l)}}else{k[m]=l}}}return k},mergeIf:function(c){var h=1,j=arguments.length,e=Ext.clone,d,g,k;for(;h<j;h++){d=arguments[h];for(g in d){if(!(g in c)){k=d[g];if(k&&k.constructor===Object){c[g]=e(k)}else{c[g]=k}}}}return c},getKey:function(c,e){for(var d in c){if(c.hasOwnProperty(d)&&c[d]===e){return d}}return null},getValues:function(d){var c=[],e;for(e in d){if(d.hasOwnProperty(e)){c.push(d[e])}}return c},getKeys:(typeof Object.keys=="function")?function(c){if(!c){return[]}return Object.keys(c)}:function(c){var d=[],e;for(e in c){if(c.hasOwnProperty(e)){d.push(e)}}return d},getSize:function(c){var d=0,e;for(e in c){if(c.hasOwnProperty(e)){d++}}return d},isEmpty:function(c){for(var d in c){if(c.hasOwnProperty(d)){return false}}return true},equals:(function(){var c=function(g,e){var d;for(d in g){if(g.hasOwnProperty(d)){if(g[d]!==e[d]){return false}}}return true};return function(e,d){if(e===d){return true}if(e&&d){return c(e,d)&&c(d,e)}else{if(!e&&!d){return e===d}else{return false}}}})(),classify:function(g){var e=g,j=[],d={},c=function(){var l=0,m=j.length,n;for(;l<m;l++){n=j[l];this[n]=new d[n]()}},h,k;for(h in g){if(g.hasOwnProperty(h)){k=g[h];if(k&&k.constructor===Object){j.push(h);d[h]=b.classify(k)}}}c.prototype=e;return c}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf;Ext.urlEncode=function(){var c=Ext.Array.from(arguments),d="";if((typeof c[1]==="string")){d=c[1]+"&";c[1]=false}return d+b.toQueryString.apply(b,c)};Ext.urlDecode=function(){return b.fromQueryString.apply(b,arguments)}}());Ext.Date=new function(){var d=this,k=/(\\.)/g,a=/([gGhHisucUOPZ]|MS)/,e=/([djzmnYycU]|MS)/,j=/\\/gi,c=/\{(\d+)\}/g,g=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),b=["var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,","def = me.defaults,","from = Ext.Number.from,","results = String(input).match(me.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = me.clearTime(new Date);","y = from(y, from(def.y, dt.getFullYear()));","m = from(m, from(def.m - 1, dt.getMonth()));","dayMatched = d !== undefined;","d = from(d, from(def.d, dt.getDate()));","if (!dayMatched) {","dt.setDate(1);","dt.setMonth(m);","dt.setFullYear(y);","daysInMonth = me.getDaysInMonth(dt);","if (d > daysInMonth) {","d = daysInMonth;","}","}","h  = from(h, from(def.h, dt.getHours()));","i  = from(i, from(def.i, dt.getMinutes()));","s  = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||d.now()))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(j,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n<m;++n){p=q.charAt(n);o.push(p=="T"?"'T'":d.getFormatCode(p))}return o.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(u,l,t,q,o,p,n){q=q||0;o=o||0;p=p||0;n=n||0;var r=d.add(new Date(u<100?100:u,l-1,t,q,o,p,n),d.YEAR,u<100?u-100:0);return u==r.getFullYear()&&l==r.getMonth()+1&&t==r.getDate()&&q==r.getHours()&&o==r.getMinutes()&&p==r.getSeconds()&&n==r.getMilliseconds()},parse:function(m,o,l){var n=d.parseFunctions;if(n[o]==null){d.createParser(o)}return n[o].call(d,m,Ext.isDefined(l)?l:d.useStrict)},parseDate:function(m,n,l){return d.parse(m,n,l)},getFormatCode:function(m){var l=d.formatCodes[m];if(l){l=typeof l=="function"?l():l;d.formatCodes[m]=l}return l||("'"+Ext.String.escape(m)+"'")},createFormat:function(p){var o=[],l=false,n="",m;for(m=0;m<p.length;++m){n=p.charAt(m);if(!l&&n=="\\"){l=true}else{if(l){l=false;o.push("'"+Ext.String.escape(n)+"'")}else{o.push(d.getFormatCode(n))}}}d.formatFunctions[p]=Ext.functionFactory("return "+o.join("+"))},createParser:function(u){var m=d.parseRegexes.length,v=1,n=[],t=[],r=false,l="",p=0,q=u.length,s=[],o;for(;p<q;++p){l=u.charAt(p);if(!r&&l=="\\"){r=true}else{if(r){r=false;t.push(Ext.String.escape(l))}else{o=d.formatCodeToRegex(l,v);v+=o.g;t.push(o.s);if(o.g&&o.c){if(o.calcAtEnd){s.push(o.c)}else{n.push(o.c)}}}}}n=n.concat(s);d.parseRegexes[m]=new RegExp("^"+t.join("")+"$","i");d.parseFunctions[u]=Ext.functionFactory("input","strict",h(b,m,n.join("")))},parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var l=[],m=0;m<7;l.push(d.getShortDayName(m)),++m){}return{g:0,c:null,s:"(?:"+l.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+d.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:1,c:"W = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},F:function(){return{g:1,c:"m = parseInt(me.getMonthNumber(results[{0}]), 10);\n",s:"("+d.monthNames.join("|")+")"}},M:function(){for(var l=[],m=0;m<12;l.push(d.getShortMonthName(m)),++m){}return Ext.applyIf({s:"("+l.join("|")+")"},d.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p<n;++p){o.push(m[p].c)}return{g:1,c:o.join(""),s:[m[0].s,"(?:","-",m[1].s,"(?:","-",m[2].s,"(?:","(?:T| )?",m[3].s,":",m[4].s,"(?::",m[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(l,m){return d.format(l,m)},isEqual:function(m,l){if(m&&l){return(m.getTime()===l.getTime())}return !(m||l)},format:function(m,n){var l=d.formatFunctions;if(!Ext.isDate(m)){return""}if(l[n]==null){d.createFormat(n)}return l[n].call(m)+""},getTimezone:function(l){return l.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(l,m){var n=l.getTimezoneOffset();return(n>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p<l;q.setMonth(++p)){n+=d.getDaysInMonth(q)}return n+o.getDate()-1},getWeekOfYear:(function(){var l=86400000,m=7*l;return function(o){var p=Date.UTC(o.getFullYear(),o.getMonth(),o.getDate()+3)/l,n=Math.floor(p/7),q=new Date(n*m).getUTCFullYear();return n-Math.floor(Date.UTC(q,0,7)/m)+1}}()),isLeapYear:function(l){var m=l.getFullYear();return !!((m&3)==0&&(m%100||(m%400==0&&m)))},getFirstDayOfMonth:function(m){var l=(m.getDay()-(m.getDate()-1))%7;return(l<0)?(l+7):l},getLastDayOfMonth:function(l){return d.getLastDateOfMonth(l).getDay()},getFirstDateOfMonth:function(l){return new Date(l.getFullYear(),l.getMonth(),1)},getLastDateOfMonth:function(l){return new Date(l.getFullYear(),l.getMonth(),d.getDaysInMonth(l))},getDaysInMonth:(function(){var l=[31,28,31,30,31,30,31,31,30,31,30,31];return function(o){var n=o.getMonth();return n==1&&d.isLeapYear(o)?29:l[n]}}()),getSuffix:function(l){switch(l.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(l){return new Date(l.getTime())},isDST:function(l){return new Date(l.getFullYear(),0,1).getTimezoneOffset()!=l.getTimezoneOffset()},clearTime:function(l,p){if(p){return Ext.Date.clearTime(Ext.Date.clone(l))}var n=l.getDate(),m,o;l.setHours(0);l.setMinutes(0);l.setSeconds(0);l.setMilliseconds(0);if(l.getDate()!=n){for(m=1,o=d.add(l,Ext.Date.HOUR,m);o.getDate()!=n;m++,o=d.add(l,Ext.Date.HOUR,m)){}l.setDate(n);l.setHours(o.getHours())}return l},add:function(o,n,r){var s=Ext.Date.clone(o),l=Ext.Date,m,q,p=0;if(!n||r===0){return s}q=r-parseInt(r,10);r=parseInt(r,10);if(r){switch(n.toLowerCase()){case Ext.Date.MILLI:s.setTime(s.getTime()+r);break;case Ext.Date.SECOND:s.setTime(s.getTime()+r*1000);break;case Ext.Date.MINUTE:s.setTime(s.getTime()+r*60*1000);break;case Ext.Date.HOUR:s.setTime(s.getTime()+r*60*60*1000);break;case Ext.Date.DAY:s.setDate(s.getDate()+r);break;case Ext.Date.MONTH:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,r)).getDate())}s.setDate(m);s.setMonth(o.getMonth()+r);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,r)).getDate())}s.setDate(m);s.setFullYear(o.getFullYear()+r);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(s);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=(d.isLeapYear(s)?366:365);p=1000*60*60*24*m;break}if(p){s.setTime(s.getTime()+p*q)}}return s},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,t=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],r=t.length,n=q.length,o,u,v;for(v=0;v<r;v++){o=t[v];m[o]=d[o]}for(l=0;l<n;l++){u=q[l];m.prototype[u]=function(){var p=Array.prototype.slice.call(arguments);p.unshift(this);return d[u].apply(d,p)}}}})}();(function(a){var d=[],b=function(){},c=function(k,g,j,h){var e=function(){var l=this.callParent(arguments);k.apply(this,arguments);return l};e.$name=j;e.$owner=h;if(g){e.$previous=g.$previous;g.$previous=e}return e};Ext.apply(b,{$className:"Ext.Base",$isClass:true,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(k){var e=k.prototype,n,h,j,l,g,m;h=this.prototype=Ext.Object.chain(e);h.self=this;this.superclass=h.superclass=e;if(!k.$isClass){n=Ext.Base.prototype;for(j in n){if(j in h){h[j]=n[j]}}}m=e.$inheritableStatics;if(m){for(j=0,l=m.length;j<l;j++){g=m[j];if(!this.hasOwnProperty(g)){this[g]=k[g]}}}if(k.$onExtended){this.$onExtended=k.$onExtended.slice()}h.config=new h.configClass();h.initConfigList=h.initConfigList.slice();h.initConfigMap=Ext.clone(h.initConfigMap);h.configMap=Ext.Object.chain(h.configMap)},$onExtended:[],triggerExtended:function(){var h=this.$onExtended,g=h.length,e,j;if(g>0){for(e=0;e<g;e++){j=h[e];j.fn.apply(j.scope||this,arguments)}}},onExtended:function(g,e){this.$onExtended.push({fn:g,scope:e});return this},addConfig:function(j,n){var p=this.prototype,o=Ext.Class.configNameCache,k=p.configMap,l=p.initConfigList,h=p.initConfigMap,m=p.config,e,g,q;for(g in j){if(j.hasOwnProperty(g)){if(!k[g]){k[g]=true}q=j[g];e=o[g].initialized;if(!h[g]&&q!==null&&!p[e]){h[g]=true;l.push(g)}}}if(n){Ext.merge(m,j)}else{Ext.mergeIf(m,j)}p.configClass=Ext.Object.classify(m)},addStatics:function(e){var h,g;for(g in e){if(e.hasOwnProperty(g)){h=e[g];if(typeof h=="function"&&!h.$isClass&&h!==Ext.emptyFn&&h!==Ext.identityFn){h.$owner=this;h.$name=g}this[g]=h}}return this},addInheritableStatics:function(g){var k,e,j=this.prototype,h,l;k=j.$inheritableStatics;e=j.$hasInheritableStatics;if(!k){k=j.$inheritableStatics=[];e=j.$hasInheritableStatics={}}for(h in g){if(g.hasOwnProperty(h)){l=g[h];this[h]=l;if(!e[h]){e[h]=true;k.push(h)}}}return this},addMembers:function(g){var j=this.prototype,e=Ext.enumerables,m=[],k,l,h,n;for(h in g){m.push(h)}if(e){m.push.apply(m,e)}for(k=0,l=m.length;k<l;k++){h=m[k];if(g.hasOwnProperty(h)){n=g[h];if(typeof n=="function"&&!n.$isClass&&n!==Ext.emptyFn&&n!==Ext.identityFn){n.$owner=this;n.$name=h}j[h]=n}}return this},addMember:function(e,g){if(typeof g=="function"&&!g.$isClass&&g!==Ext.emptyFn&&g!==Ext.identityFn){g.$owner=this;g.$name=e}this.prototype[e]=g;return this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(k,h){var o=this.prototype,n=k.prototype,j,l,g,m,e;h=Ext.Array.from(h);for(j=0,l=h.length;j<l;j++){g=h[j];e=n[g];if(typeof e=="function"){m=Ext.Function.clone(e);m.$owner=this;m.$name=g;o[g]=m}else{o[g]=e}}return this},override:function(g){var o=this,q=Ext.enumerables,m=o.prototype,j=Ext.Function.clone,e,l,h,p,n,k;if(arguments.length===2){e=g;g={};g[e]=arguments[1];q=null}do{n=[];p=null;for(e in g){if(e=="statics"){p=g[e]}else{if(e=="inheritableStatics"){o.addInheritableStatics(g[e])}else{if(e=="config"){o.addConfig(g[e],true)}else{n.push(e)}}}}if(q){n.push.apply(n,q)}for(l=n.length;l--;){e=n[l];if(g.hasOwnProperty(e)){h=g[e];if(typeof h=="function"&&!h.$className&&h!==Ext.emptyFn&&h!==Ext.identityFn){if(typeof h.$owner!="undefined"){h=j(h)}h.$owner=o;h.$name=e;k=m[e];if(k){h.$previous=k}}m[e]=h}}m=o;g=p}while(g);return this},callParent:function(e){var g;return(g=this.callParent.caller)&&(g.$previous||((g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name])).apply(this,e||d)},callSuper:function(e){var g;return(g=this.callSuper.caller)&&((g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name]).apply(this,e||d)},mixin:function(g,h){var l=this,s=h.prototype,n=l.prototype,r,m,j,k,q,p,o,e;if(typeof s.onClassMixedIn!="undefined"){s.onClassMixedIn.call(h,l)}if(!n.hasOwnProperty("mixins")){if("mixins" in n){n.mixins=Ext.Object.chain(n.mixins)}else{n.mixins={}}}for(r in s){p=s[r];if(r==="mixins"){Ext.merge(n.mixins,p)}else{if(r==="xhooks"){for(o in p){e=p[o];e.$previous=Ext.emptyFn;if(n.hasOwnProperty(o)){c(e,n[o],o,l)}else{n[o]=c(e,null,o,l)}}}else{if(!(r==="mixinId"||r==="config")&&(n[r]===undefined)){n[r]=p}}}}m=s.$inheritableStatics;if(m){for(j=0,k=m.length;j<k;j++){q=m[j];if(!l.hasOwnProperty(q)){l[q]=h[q]}}}if("config" in s){l.addConfig(s.config,false)}n.mixins[g]=s;return l},getName:function(){return Ext.getClassName(this)},createAlias:a(function(g,e){this.override(g,function(){return this[e].apply(this,arguments)})}),addXtype:function(k){var g=this.prototype,j=g.xtypesMap,h=g.xtypes,e=g.xtypesChain;if(!g.hasOwnProperty("xtypesMap")){j=g.xtypesMap=Ext.merge({},g.xtypesMap||{});h=g.xtypes=g.xtypes?[].concat(g.xtypes):[];e=g.xtypesChain=g.xtypesChain?[].concat(g.xtypesChain):[];g.xtype=k}if(!j[k]){j[k]=true;h.push(k);e.push(k);Ext.ClassManager.setAlias(this,"widget."+k)}return this}});b.implement({isInstance:true,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var g=this.statics.caller,e=this.self;if(!g){return e}return g.$owner},callParent:function(g){var h,e=(h=this.callParent.caller)&&(h.$previous||((h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name]));return e.apply(this,g||d)},callSuper:function(g){var h,e=(h=this.callSuper.caller)&&((h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name]);return e.apply(this,g||d)},self:b,constructor:function(){return this},initConfig:function(h){var n=h,m=Ext.Class.configNameCache,k=new this.configClass(),q=this.initConfigList,j=this.configMap,p,l,o,g,e;this.initConfig=Ext.emptyFn;this.initialConfig=n||{};this.config=h=(n)?Ext.merge(k,h):k;if(n){q=q.slice();for(g in n){if(j[g]){if(n[g]!==null){q.push(g);this[m[g].initialized]=false}}}}for(l=0,o=q.length;l<o;l++){g=q[l];p=m[g];e=p.initialized;if(!this[e]){this[e]=true;this[p.set].call(this,h[g])}}return this},hasConfig:function(e){return Boolean(this.configMap[e])},setConfig:function(j,n){if(!j){return this}var h=Ext.Class.configNameCache,e=this.config,m=this.configMap,l=this.initialConfig,g,k;n=Boolean(n);for(g in j){if(n&&l.hasOwnProperty(g)){continue}k=j[g];e[g]=k;if(m[g]){this[h[g].set](k)}}return this},getConfig:function(g){var e=Ext.Class.configNameCache;return this[e[g].get]()},getInitialConfig:function(g){var e=this.config;if(!g){return e}else{return e[g]}},onConfigUpdate:function(l,n,o){var p=this.self,h,k,e,j,m,g;l=Ext.Array.from(l);o=o||this;for(h=0,k=l.length;h<k;h++){e=l[h];j="update"+Ext.String.capitalize(e);m=this[j]||Ext.emptyFn;g=function(){m.apply(this,arguments);o[n].apply(o,arguments)};g.$name=j;g.$owner=p;this[j]=g}},destroy:function(){this.destroy=Ext.emptyFn}});b.prototype.callOverridden=b.prototype.callParent;Ext.Base=b}(Ext.Function.flexSetter));(function(){var c,b=Ext.Base,g=[],e,d;for(e in b){if(b.hasOwnProperty(e)){g.push(e)}}d=g.length;function a(j){function h(){return this.constructor.apply(this,arguments)||null}return h}Ext.Class=c=function(j,k,h){if(typeof j!="function"){h=k;k=j;j=null}if(!k){k={}}j=c.create(j,k);c.process(j,k,h);return j};Ext.apply(c,{onBeforeCreated:function(j,k,h){j.addMembers(k);h.onCreated.call(j,j)},create:function(h,l){var j,k;if(!h){h=a()}for(k=0;k<d;k++){j=g[k];h[j]=b[j]}return h},process:function(h,p,l){var k=p.preprocessors||c.defaultPreprocessors,s=this.preprocessors,v={onBeforeCreated:this.onBeforeCreated},u=[],w,o,n,t,m,r,q;delete p.preprocessors;for(n=0,t=k.length;n<t;n++){w=k[n];if(typeof w=="string"){w=s[w];o=w.properties;if(o===true){u.push(w.fn)}else{if(o){for(m=0,r=o.length;m<r;m++){q=o[m];if(p.hasOwnProperty(q)){u.push(w.fn);break}}}}}else{u.push(w)}}v.onCreated=l?l:Ext.emptyFn;v.preprocessors=u;this.doProcess(h,p,v)},doProcess:function(j,n,h){var m=this,o=h.preprocessors,k=o.shift(),l=m.doProcess;for(;k;k=o.shift()){if(k.call(m,j,n,h,l)===false){return}}h.onBeforeCreated.apply(m,arguments)},preprocessors:{},registerPreprocessor:function(j,m,k,h,l){if(!h){h="last"}if(!k){k=[j]}this.preprocessors[j]={name:j,properties:k||false,fn:m};this.setDefaultPreprocessorPosition(j,h,l);return this},getPreprocessor:function(h){return this.preprocessors[h]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(h){this.defaultPreprocessors=Ext.Array.from(h);return this},setDefaultPreprocessorPosition:function(k,m,l){var h=this.defaultPreprocessors,j;if(typeof m=="string"){if(m==="first"){h.unshift(k);return this}else{if(m==="last"){h.push(k);return this}}m=(m==="after")?1:-1}j=Ext.Array.indexOf(h,l);if(j!==-1){Ext.Array.splice(h,Math.max(0,j+m),0,k)}return this},configNameCache:{},getConfigNameMap:function(k){var j=this.configNameCache,l=j[k],h;if(!l){h=k.charAt(0).toUpperCase()+k.substr(1);l=j[k]={internal:k,initialized:"_is"+h+"Initialized",apply:"apply"+h,update:"update"+h,set:"set"+h,get:"get"+h,doSet:"doSet"+h,changeEvent:k.toLowerCase()+"change"}}return l}});c.registerPreprocessor("extend",function(j,l,q){var m=Ext.Base,n=m.prototype,o=l.extend,h,p,k;delete l.extend;if(o&&o!==Object){h=o}else{h=m}p=h.prototype;if(!h.$isClass){for(k in n){if(!p[k]){p[k]=n[k]}}}j.extend(h);j.triggerExtended.apply(j,arguments);if(l.onClassExtended){j.onExtended(l.onClassExtended,j);delete l.onClassExtended}},true);c.registerPreprocessor("statics",function(h,j){h.addStatics(j.statics);delete j.statics});c.registerPreprocessor("inheritableStatics",function(h,j){h.addInheritableStatics(j.inheritableStatics);delete j.inheritableStatics});c.registerPreprocessor("config",function(h,l){var k=l.config,j=h.prototype;delete l.config;Ext.Object.each(k,function(o,x){var v=c.getConfigNameMap(o),r=v.internal,m=v.initialized,w=v.apply,p=v.update,u=v.set,n=v.get,z=(u in j)||l.hasOwnProperty(u),q=(w in j)||l.hasOwnProperty(w),s=(p in j)||l.hasOwnProperty(p),y,t;if(x===null||(!z&&!q&&!s)){j[r]=x;j[m]=true}else{j[m]=false}if(!z){l[u]=function(C){var B=this[r],A=this[w],D=this[p];if(!this[m]){this[m]=true}if(A){C=A.call(this,C,B)}if(typeof C!="undefined"){this[r]=C;if(D&&C!==B){D.call(this,C,B)}}return this}}if(!(n in j)||l.hasOwnProperty(n)){t=l[n]||false;if(t){y=function(){return t.apply(this,arguments)}}else{y=function(){return this[r]}}l[n]=function(){var A;if(!this[m]){this[m]=true;this[u](this.config[o])}A=this[n];if("$previous" in A){A.$previous=y}else{this[n]=y}return y.apply(this,arguments)}}});h.addConfig(k,true)});c.registerPreprocessor("mixins",function(l,p,h){var j=p.mixins,m,k,n,o;delete p.mixins;Ext.Function.interceptBefore(h,"onCreated",function(){if(j instanceof Array){for(n=0,o=j.length;n<o;n++){k=j[n];m=k.prototype.mixinId||k.$className;l.mixin(m,k)}}else{for(var q in j){if(j.hasOwnProperty(q)){l.mixin(q,j[q])}}}})});Ext.extend=function(k,l,j){if(arguments.length===2&&Ext.isObject(l)){j=l;l=k;k=null}var h;if(!l){throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.")}j.extend=l;j.preprocessors=["extend","statics","inheritableStatics","mixins","config"];if(k){h=new c(k,j);h.prototype.constructor=k}else{h=new c(j)}h.prototype.override=function(p){for(var n in p){if(p.hasOwnProperty(n)){this[n]=p[n]}}};return h}}());(function(c,e,h,d,g){function a(){function j(){return this.constructor.apply(this,arguments)||null}return j}var b=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:true,namespaceParseCache:{},instantiators:[],isCreated:function(n){var m=this.existCache,l,o,k,j,p;if(this.classes[n]||m[n]){return true}j=g;p=this.parseNamespace(n);for(l=0,o=p.length;l<o;l++){k=p[l];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return false}j=j[k]}}m[n]=true;this.triggerCreated(n);return true},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(s){var u=this.createdListeners,m=this.nameCreatedListeners,n=this.maps.nameToAlternates[s],t=[s],p,r,o,q,l,k;for(p=0,r=u.length;p<r;p++){l=u[p];l.fn.call(l.scope,s)}if(n){t.push.apply(t,n)}for(p=0,r=t.length;p<r;p++){k=t[p];u=m[k];if(u){for(o=0,q=u.length;o<q;o++){l=u[o];l.fn.call(l.scope,k)}delete m[k]}}},onCreated:function(n,m,l){var k=this.createdListeners,j=this.nameCreatedListeners,o={fn:n,scope:m};if(l){if(this.isCreated(l)){n.call(m,l);return}if(!j[l]){j[l]=[]}j[l].push(o)}else{k.push(o)}},parseNamespace:function(l){var j=this.namespaceParseCache,m,o,q,k,t,s,r,n,p;if(this.enableNamespaceParseCache){if(j.hasOwnProperty(l)){return j[l]}}m=[];o=this.namespaceRewrites;q=g;k=l;for(n=0,p=o.length;n<p;n++){t=o[n];s=t.from;r=t.to;if(k===s||k.substring(0,s.length)===s){k=k.substring(s.length);if(typeof r!="string"){q=r}else{m=m.concat(r.split("."))}break}}m.push(q);m=m.concat(k.split("."));if(this.enableNamespaceParseCache){j[l]=m}return m},setNamespace:function(m,p){var k=g,q=this.parseNamespace(m),o=q.length-1,j=q[o],n,l;for(n=0;n<o;n++){l=q[n];if(typeof l!="string"){k=l}else{if(!k[l]){k[l]={}}k=k[l]}}k[j]=p;return k[j]},createNamespaces:function(){var k=g,p,m,n,l,o,q;for(n=0,o=arguments.length;n<o;n++){p=this.parseNamespace(arguments[n]);for(l=0,q=p.length;l<q;l++){m=p[l];if(typeof m!="string"){k=m}else{if(!k[m]){k[m]={}}k=k[m]}}}return k},set:function(j,n){var m=this,p=m.maps,o=p.nameToAlternates,l=m.getName(n),k;m.classes[j]=m.setNamespace(j,n);if(l&&l!==j){p.alternateToName[j]=l;k=o[l]||(o[l]=[]);k.push(j)}return this},get:function(l){var n=this.classes,j,p,k,m,o;if(n[l]){return n[l]}j=g;p=this.parseNamespace(l);for(m=0,o=p.length;m<o;m++){k=p[m];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return null}j=j[k]}}return j},setAlias:function(j,k){var m=this.maps.aliasToName,n=this.maps.nameToAliases,l;if(typeof j=="string"){l=j}else{l=this.getName(j)}if(k&&m[k]!==l){m[k]=l}if(!n[l]){n[l]=[]}if(k){Ext.Array.include(n[l],k)}return this},addNameAliasMappings:function(j){var o=this.maps.aliasToName,p=this.maps.nameToAliases,m,n,l,k;for(m in j){n=p[m]||(p[m]=[]);for(k=0;k<j[m].length;k++){l=j[m][k];if(!o[l]){o[l]=m;n.push(l)}}}return this},addNameAlternateMappings:function(m){var j=this.maps.alternateToName,p=this.maps.nameToAlternates,l,n,o,k;for(l in m){n=p[l]||(p[l]=[]);for(k=0;k<m[l].length;k++){o=m[l][k];if(!j[o]){j[o]=l;n.push(o)}}}return this},getByAlias:function(j){return this.get(this.getNameByAlias(j))},getNameByAlias:function(j){return this.maps.aliasToName[j]||""},getNameByAlternate:function(j){return this.maps.alternateToName[j]||""},getAliasesByName:function(j){return this.maps.nameToAliases[j]||[]},getName:function(j){return j&&j.$className||""},getClass:function(j){return j&&j.self||null},create:function(k,m,j){var l=a();if(typeof m=="function"){m=m(l)}m.$className=k;return new c(l,m,function(){var n=m.postprocessors||b.defaultPostprocessors,u=b.postprocessors,v=[],t,p,s,o,r,q,w;delete m.postprocessors;for(p=0,s=n.length;p<s;p++){t=n[p];if(typeof t=="string"){t=u[t];q=t.properties;if(q===true){v.push(t.fn)}else{if(q){for(o=0,r=q.length;o<r;o++){w=q[o];if(m.hasOwnProperty(w)){v.push(t.fn);break}}}}}else{v.push(t)}}m.postprocessors=v;m.createdFn=j;b.processCreate(k,this,m)})},processCreate:function(m,k,o){var n=this,j=o.postprocessors.shift(),l=o.createdFn;if(!j){if(m){n.set(m,k)}if(l){l.call(k,k)}if(m){n.triggerCreated(m)}return}if(j.call(n,m,k,o,n.processCreate)!==false){n.processCreate(m,k,o)}},createOverride:function(m,q,k){var p=this,o=q.override,l=q.requires,j=q.uses,n=function(){var r,s;if(l){s=l;l=null;Ext.Loader.require(s,n)}else{r=p.get(o);delete q.override;delete q.requires;delete q.uses;Ext.override(r,q);p.triggerCreated(m);if(j){Ext.Loader.addUsedClasses(j)}if(k){k.call(r)}}};p.existCache[m]=true;p.onCreated(n,p,o);return p},instantiateByAlias:function(){var k=arguments[0],j=h.call(arguments),l=this.getNameByAlias(k);if(!l){l=this.maps.aliasToName[k];Ext.syncRequire(l)}j[0]=l;return this.instantiate.apply(this,j)},instantiate:function(){var l=arguments[0],n=typeof l,k=h.call(arguments,1),m=l,o,j;if(n!="function"){if(n!="string"&&k.length===0){k=[l];l=l.xclass}j=this.get(l)}else{j=l}if(!j){o=this.getNameByAlias(l);if(o){l=o;j=this.get(l)}}if(!j){o=this.getNameByAlternate(l);if(o){l=o;j=this.get(l)}}if(!j){Ext.syncRequire(l);j=this.get(l)}return this.getInstantiator(k.length)(j,k)},dynInstantiate:function(k,j){j=d(j,true);j.unshift(k);return this.instantiate.apply(this,j)},getInstantiator:function(m){var l=this.instantiators,n,k,j;n=l[m];if(!n){k=m;j=[];for(k=0;k<m;k++){j.push("a["+k+"]")}n=l[m]=new Function("c","a","return new c("+j.join(",")+")")}return n},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(k,n,l,j,m){if(!j){j="last"}if(!l){l=[k]}this.postprocessors[k]={name:k,properties:l||false,fn:n};this.setDefaultPostprocessorPosition(k,j,m);return this},setDefaultPostprocessors:function(j){this.defaultPostprocessors=d(j);return this},setDefaultPostprocessorPosition:function(k,n,m){var l=this.defaultPostprocessors,j;if(typeof n=="string"){if(n==="first"){l.unshift(k);return this}else{if(n==="last"){l.push(k);return this}}n=(n==="after")?1:-1}j=Ext.Array.indexOf(l,m);if(j!==-1){Ext.Array.splice(l,Math.max(0,j+n),0,k)}return this},getNamesByExpression:function(q){var o=this.maps.nameToAliases,r=[],j,n,l,k,s,m,p;if(q.indexOf("*")!==-1){q=q.replace(/\*/g,"(.*?)");s=new RegExp("^"+q+"$");for(j in o){if(o.hasOwnProperty(j)){l=o[j];if(j.search(s)!==-1){r.push(j)}else{for(m=0,p=l.length;m<p;m++){n=l[m];if(n.search(s)!==-1){r.push(j);break}}}}}}else{k=this.getNameByAlias(q);if(k){r.push(k)}else{k=this.getNameByAlternate(q);if(k){r.push(k)}else{r.push(q)}}}return r}};b.registerPostprocessor("alias",function(l,k,o){var j=o.alias,m,n;for(m=0,n=j.length;m<n;m++){e=j[m];this.setAlias(k,e)}},["xtype","alias"]);b.registerPostprocessor("singleton",function(k,j,m,l){if(m.singleton){l.call(this,k,new j(),m)}else{return true}return false});b.registerPostprocessor("alternateClassName",function(k,j,o){var m=o.alternateClassName,l,n,p;if(!(m instanceof Array)){m=[m]}for(l=0,n=m.length;l<n;l++){p=m[l];this.set(p,j)}});Ext.apply(Ext,{create:e(b,"instantiate"),widget:function(l,k){var p=l,m,n,j,o;if(typeof p!="string"){k=l;p=k.xtype}else{k=k||{}}if(k.isComponent){return k}m="widget."+p;n=b.getNameByAlias(m);if(!n){o=true}j=b.get(n);if(o||!j){return b.instantiateByAlias(m,k)}return new j(k)},createByAlias:e(b,"instantiateByAlias"),define:function(k,l,j){if(l.override){return b.createOverride.apply(b,arguments)}return b.create.apply(b,arguments)},undefine:function(q){var l=b.classes,s=b.maps,t=s.aliasToName,u=s.nameToAliases,w=s.alternateToName,o=s.nameToAlternates,j=u[q],r=o[q],m,v,k,n;delete b.namespaceParseCache[q];delete u[q];delete o[q];delete l[q];if(j){for(n=j.length;n--;){delete t[j[n]]}}if(r){for(n=r.length;n--;){delete w[r[n]]}}m=b.parseNamespace(q);v=m.length-1;k=m[0];for(n=1;n<v;n++){k=k[m[n]];if(!k){return}}try{delete k[m[v]]}catch(p){k[m[v]]=undefined}},getClassName:e(b,"getName"),getDisplayName:function(j){if(j){if(j.displayName){return j.displayName}if(j.$name&&j.$class){return Ext.getClassName(j.$class)+"#"+j.$name}if(j.$className){return j.$className}}return"Anonymous"},getClass:e(b,"getClass"),namespace:e(b,"createNamespaces")});Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;c.registerPreprocessor("className",function(j,k){if(k.$className){j.$className=k.$className}},true,"first");c.registerPreprocessor("alias",function(u,o){var s=u.prototype,l=d(o.xtype),j=d(o.alias),v="widget.",t=v.length,p=Array.prototype.slice.call(s.xtypesChain||[]),m=Ext.merge({},s.xtypesMap||{}),n,r,q,k;for(n=0,r=j.length;n<r;n++){q=j[n];if(q.substring(0,t)===v){k=q.substring(t);Ext.Array.include(l,k)}}u.xtype=o.xtype=l[0];o.xtypes=l;for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}o.xtypesChain=p;o.xtypesMap=m;Ext.Function.interceptAfter(o,"onClassCreated",function(){var w=s.mixins,y,x;for(y in w){if(w.hasOwnProperty(y)){x=w[y];l=x.xtypes;if(l){for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}}}}});for(n=0,r=l.length;n<r;n++){k=l[n];Ext.Array.include(j,v+k)}o.alias=j},["xtype","alias"])}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global));if(Ext._alternatesMetadata){Ext.ClassManager.addNameAlternateMappings(Ext._alternatesMetadata);Ext._alternatesMetadata=null}if(Ext._aliasMetadata){Ext.ClassManager.addNameAliasMappings(Ext._aliasMetadata);Ext._aliasMetadata=null}Ext.Loader=new function(){var l=this,b=Ext.ClassManager,u=Ext.Class,e=Ext.Function.flexSetter,p=Ext.Function.alias,a=Ext.Function.pass,d=Ext.Function.defer,h=Ext.Array.erase,o=["extend","mixins","requires"],w={},n=[],c=/\/\.\//g,g=/\./g,k=0;Ext.apply(l,{isInHistory:w,history:n,config:{enabled:false,scriptChainDelay:false,disableCaching:true,disableCachingParam:"_dc",garbageCollect:false,paths:{Ext:"."},preserveScripts:true,scriptCharset:undefined},setConfig:function(z,A){if(Ext.isObject(z)&&arguments.length===1){Ext.merge(l.config,z);if("paths" in z){Ext.app.collectNamespaces(z.paths)}}else{l.config[z]=(Ext.isObject(A))?Ext.merge(l.config[z],A):A;if(z==="paths"){Ext.app.collectNamespaces(A)}}return l},getConfig:function(z){if(z){return l.config[z]}return l.config},setPath:e(function(z,A){l.config.paths[z]=A;Ext.app.namespaces[z]=true;k++;return l}),addClassPathMappings:function(A){var z;if(k==0){l.config.paths=A}else{for(z in A){l.config.paths[z]=A[z]}}k++;return l},getPath:function(z){var B="",C=l.config.paths,A=l.getPrefix(z);if(A.length>0){if(A===z){return C[A]}B=C[A];z=z.substring(A.length+1)}if(B.length>0){B+="/"}return B.replace(c,"/")+z.replace(g,"/")+".js"},getPrefix:function(A){var C=l.config.paths,B,z="";if(C.hasOwnProperty(A)){return A}for(B in C){if(C.hasOwnProperty(B)&&B+"."===A.substring(0,B.length+1)){if(B.length>z.length){z=B}}}return z},isAClassNameWithAKnownPrefix:function(z){var A=l.getPrefix(z);return A!==""&&A!==z},require:function(B,A,z,C){if(A){A.call(z)}},syncRequire:function(){},exclude:function(z){return{require:function(C,B,A){return l.require(C,B,A,z)},syncRequire:function(C,B,A){return l.syncRequire(C,B,A,z)}}},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}C.call(B)}});var r=[],s={},v={},t={},q={},x=[],y=[],j={},m=function(z,A){return A.priority-z.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:r,isClassFileLoaded:s,isFileLoaded:v,readyListeners:x,optionalRequires:y,requiresMap:j,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:t,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var D=r.length,A,C,z,B;if(!D&&!l.scriptsLoading){return l.triggerReady()}for(A=0;A<D;A++){C=r[A];if(C){B=C.requires;if(B.length>l.numLoadedFiles){continue}for(z=0;z<B.length;){if(b.isCreated(B[z])){h(B,z,1)}else{z++}}if(C.requires.length===0){h(r,A,1);C.callback.call(C.scope);l.refreshQueue();break}}}return l},injectScriptElement:function(z,G,D,I,B){var H=document.createElement("script"),E=false,A=l.config,F=function(){if(!E){E=true;H.onload=H.onreadystatechange=H.onerror=null;if(typeof A.scriptChainDelay=="number"){d(G,A.scriptChainDelay,I)}else{G.call(I)}l.cleanupScriptElement(H,A.preserveScripts===false,A.garbageCollect)}},C=function(J){d(D,1,I);l.cleanupScriptElement(H,A.preserveScripts===false,A.garbageCollect)};H.type="text/javascript";H.onerror=C;B=B||A.scriptCharset;if(B){H.charset=B}if("addEventListener" in H){H.onload=F}else{if("readyState" in H){H.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){F()}}}else{H.onload=F}}H.src=z;(l.documentHead||document.getElementsByTagName("head")[0]).appendChild(H);return H},removeScriptElement:function(z){if(q[z]){l.cleanupScriptElement(q[z],true,!!l.getConfig("garbageCollect"));delete q[z]}return l},cleanupScriptElement:function(B,A,C){var D;B.onload=B.onreadystatechange=B.onerror=null;if(A){Ext.removeNode(B);if(C){for(D in B){try{if(D!="src"){B[D]=null}delete B[D]}catch(z){}}}}return l},loadScript:function(I){var C=l.getConfig(),B=typeof I=="string",A=B?I:I.url,E=!B&&I.onError,F=!B&&I.onLoad,H=!B&&I.scope,G=function(){l.numPendingFiles--;l.scriptsLoading--;if(E){E.call(H,"Failed loading '"+A+"', please verify that the file exists")}if(l.numPendingFiles+l.scriptsLoading===0){l.refreshQueue()}},D=function(){l.numPendingFiles--;l.scriptsLoading--;if(F){F.call(H)}if(l.numPendingFiles+l.scriptsLoading===0){l.refreshQueue()}},z;l.isLoading=true;l.numPendingFiles++;l.scriptsLoading++;z=C.disableCaching?(A+"?"+C.disableCachingParam+"="+Ext.Date.now()):A;q[A]=l.injectScriptElement(z,D,G)},loadScriptFile:function(A,H,F,K,z){if(v[A]){return l}var C=l.getConfig(),L=A+(C.disableCaching?("?"+C.disableCachingParam+"="+Ext.Date.now()):""),B=false,J,D,I,E="";K=K||l;l.isLoading=true;if(!z){I=function(){};q[A]=l.injectScriptElement(L,H,I,K)}else{if(typeof XMLHttpRequest!="undefined"){J=new XMLHttpRequest()}else{J=new ActiveXObject("Microsoft.XMLHTTP")}try{J.open("GET",L,false);J.send(null)}catch(G){B=true}D=(J.status===1223)?204:(J.status===0&&((self.location||{}).protocol=="file:"||(self.location||{}).protocol=="ionp:"))?200:J.status;B=B||(D===0);if(B){}else{if((D>=200&&D<300)||(D===304)){if(!Ext.isIE){E="\n//@ sourceURL="+A}Ext.globalEval(J.responseText+E);H.call(K)}else{}}J=null}},syncRequire:function(){var z=l.syncModeEnabled;if(!z){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!z){l.syncModeEnabled=false}l.refreshQueue()},require:function(R,I,C,E){var K={},B={},H=[],T=[],Q=[],A=[],G,S,M,L,z,F,P,O,N,J,D;if(E){E=(typeof E==="string")?[E]:E;for(O=0,J=E.length;O<J;O++){z=E[O];if(typeof z=="string"&&z.length>0){H=b.getNamesByExpression(z);for(N=0,D=H.length;N<D;N++){K[H[N]]=true}}}}R=(typeof R==="string")?[R]:(R?R:[]);if(I){if(I.length>0){G=function(){var V=[],U,W;for(U=0,W=A.length;U<W;U++){V.push(b.get(A[U]))}return I.apply(this,V)}}else{G=I}}else{G=Ext.emptyFn}C=C||Ext.global;for(O=0,J=R.length;O<J;O++){L=R[O];if(typeof L=="string"&&L.length>0){T=b.getNamesByExpression(L);D=T.length;for(N=0;N<D;N++){P=T[N];if(K[P]!==true){A.push(P);if(!b.isCreated(P)&&!B[P]){B[P]=true;Q.push(P)}}}}}if(Q.length>0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((Q.length>1)?"es":"")+": "+Q.join(", "))}}else{G.call(C);return l}S=l.syncModeEnabled;if(!S){r.push({requires:Q.slice(),callback:G,scope:C})}J=Q.length;for(O=0;O<J;O++){F=Q[O];M=l.getPath(F);if(S&&s.hasOwnProperty(F)){if(!s[F]){l.numPendingFiles--;l.removeScriptElement(M);delete s[F]}}if(!s.hasOwnProperty(F)){s[F]=false;t[F]=M;l.numPendingFiles++;l.loadScriptFile(M,a(l.onFileLoaded,[F,M],l),a(l.onFileLoadError,[F,M],l),l,S)}}if(S){G.call(C);if(J===1){return b.get(F)}}return l},onFileLoaded:function(B,A){var z=s[B];l.numLoadedFiles++;s[B]=true;v[A]=true;if(!z){l.numPendingFiles--}if(l.numPendingFiles===0){l.refreshQueue()}},onFileLoadError:function(B,A,z,C){l.numPendingFiles--;l.hasFileLoadError=true},addUsedClasses:function(B){var z,A,C;if(B){B=(typeof B=="string")?[B]:B;for(A=0,C=B.length;A<C;A++){z=B[A];if(typeof z=="string"&&!Ext.Array.contains(y,z)){y.push(z)}}}return l},triggerReady:function(){var z,A=y;if(l.isLoading){l.isLoading=false;if(A.length!==0){A=A.slice();y.length=0;l.require(A,l.triggerReady,l);return l}}Ext.Array.sort(x,m);while(x.length&&!l.isLoading){z=x.shift();z.fn.call(z.scope)}return l},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}if(!l.isLoading){C.call(B)}else{x.push({fn:C,scope:B,priority:(z&&z.priority)||0})}},historyPush:function(z){if(z&&s.hasOwnProperty(z)&&!w[z]){w[z]=true;n.push(z)}return l}});Ext.disableCacheBuster=function(A,B){var z=new Date();z.setTime(z.getTime()+(A?10*365:-1)*24*60*60*1000);z=z.toGMTString();document.cookie="ext-cache=1; expires="+z+"; path="+(B||"/")};Ext.require=p(l,"require");Ext.syncRequire=p(l,"syncRequire");Ext.exclude=p(l,"exclude");Ext.onReady=function(B,A,z){l.onReady(B,A,true,z)};u.registerPreprocessor("loader",function(P,D,O,N){var K=this,I=[],z,J=b.getName(P),C,B,H,G,M,F,A,L,E;for(C=0,H=o.length;C<H;C++){F=o[C];if(D.hasOwnProperty(F)){A=D[F];if(typeof A=="string"){I.push(A)}else{if(A instanceof Array){for(B=0,G=A.length;B<G;B++){M=A[B];if(typeof M=="string"){I.push(M)}}}else{if(typeof A!="function"){for(B in A){if(A.hasOwnProperty(B)){M=A[B];if(typeof M=="string"){I.push(M)}}}}}}}}if(I.length===0){return}l.require(I,function(){for(C=0,H=o.length;C<H;C++){F=o[C];if(D.hasOwnProperty(F)){A=D[F];if(typeof A=="string"){D[F]=b.get(A)}else{if(A instanceof Array){for(B=0,G=A.length;B<G;B++){M=A[B];if(typeof M=="string"){D[F][B]=b.get(M)}}}else{if(typeof A!="function"){for(var Q in A){if(A.hasOwnProperty(Q)){M=A[Q];if(typeof M=="string"){D[F][Q]=b.get(M)}}}}}}}}N.call(K,P,D,O)});return false},true,"after","className");b.registerPostprocessor("uses",function(B,A,C){var z=C.uses;if(z){l.addUsedClasses(z)}});b.onCreated(l.historyPush)}();if(Ext._classPathMetadata){Ext.Loader.addClassPathMappings(Ext._classPathMetadata);Ext._classPathMetadata=null}(function(){var a=document.getElementsByTagName("script"),b=a[a.length-1],d=b.src,c=d.substring(0,d.lastIndexOf("/")+1),e=Ext.Loader;e.setConfig({enabled:true,disableCaching:true,paths:{Ext:c+"src"}})})();Ext._endTime=new Date().getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()}Ext.Error=Ext.extend(Error,{statics:{ignore:false,raise:function(a){a=a||{};if(Ext.isString(a)){a={msg:a}}var c=this.raise.caller,b;if(c){if(c.$name){a.sourceMethod=c.$name}if(c.$owner){a.sourceClass=c.$owner.$className}}if(Ext.Error.handle(a)!==true){b=Ext.Error.prototype.toString.call(a);Ext.log({msg:b,level:"error",dump:a,stack:true});throw new Ext.Error(a)}},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(a){if(Ext.isString(a)){a={msg:a}}var b=this;Ext.apply(b,a);b.message=b.message||b.msg},toString:function(){var c=this,b=c.sourceClass?c.sourceClass:"",a=c.sourceMethod?"."+c.sourceMethod+"(): ":"",d=c.msg||"(No description provided)";return b+a+d}});Ext.deprecated=function(a){return Ext.emptyFn};Ext.JSON=(new (function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative},pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o,newline){if(o===null||o===undefined){return"null"}else{if(Ext.isDate(o)){return Ext.JSON.encodeDate(o)}else{if(Ext.isString(o)){return Ext.JSON.encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{if(o.toJSON){return o.toJSON()}else{if(Ext.isArray(o)){return encodeArray(o,newline)}else{if(Ext.isObject(o)){return encodeObject(o,newline)}else{if(typeof o==="function"){return"null"}}}}}}}}}return"undefined"},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\v":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArray=function(o,newline){var a=["[",""],len=o.length,i;for(i=0;i<len;i+=1){a.push(Ext.JSON.encodeValue(o[i]),",")}a[a.length-1]="]";return a.join("")},encodeObject=function(o,newline){var a=["{",""],i,val;for(i in o){val=o[i];if(!useHasOwn||o.hasOwnProperty(i)){if(typeof val==="function"||val===undefined){continue}a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(val),",")}}a[a.length-1]="}";return a.join("")};me.encodeString=encodeString;me.encodeValue=doEncode;me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};me.encode=function(o){if(!encodingFunction){encodingFunction=isNative()?JSON.stringify:me.encodeValue}return encodingFunction(o)};me.decode=function(json,safe){if(!decodingFunction){decodingFunction=isNative()?JSON.parse:doDecode}try{return decodingFunction(json)}catch(e){if(safe===true){return null}Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}})());Ext.encode=Ext.JSON.encode;Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1000,windowId:"ext-window",documentId:"ext-document",isReady:false,enableGarbageCollector:true,enableListenerCollection:true,rootHierarchyState:{},addCacheEntry:function(g,c,e){e=e||c.dom;var a=Ext.cache,b=g||(c&&c.id)||e.id,d=a[b]||(a[b]={data:{},events:{},dom:e,skipGarbageCollection:!!(e.getElementById||e.navigator)});if(c){c.$cache=d;d.el=c}return d},updateCacheEntry:function(a,b){a.dom=b;if(a.el){a.el.dom=b}return a},id:function(a,c){var b=this,d="";a=Ext.getDom(a,true)||{};if(a===document){a.id=b.documentId}else{if(a===window){a.id=b.windowId}}if(!a.id){if(b.isSandboxed){d=Ext.sandboxName.toLowerCase()+"-"}a.id=d+(c||"ext-gen")+(++Ext.idSeed)}return a.id},escapeId:(function(){var c=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,d=/([\W]{1})/g,b=/^(\d)/g,a=function(h,g){return"\\"+g},e=function(h,g){return"\\00"+g.charCodeAt(0).toString(16)+" "};return function(g){return c.test(g)?g:g.replace(d,a).replace(b,e)}}()),getBody:(function(){var a;return function(){return a||(a=Ext.get(document.body))}}()),getHead:(function(){var a;return function(){return a||(a=Ext.get(document.getElementsByTagName("head")[0]))}}()),getDoc:(function(){var a;return function(){return a||(a=Ext.get(document))}}()),getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b<c;b++){a=arguments[b];if(a){if(Ext.isArray(a)){this.destroy.apply(this,a)}else{if(a.isStore){a.destroyStore()}else{if(Ext.isFunction(a.destroy)){a.destroy()}else{if(a.dom){a.remove()}}}}}}},callback:function(g,e,c,b){var d,a;if(Ext.isFunction(g)){d=g}else{if(e&&Ext.isString(g)){d=e[g]}}if(d){c=c||[];e=e||window;if(b){Ext.defer(d,b,e,c)}else{a=d.apply(e,c)}}return a},resolveMethod:function(b,a){if(Ext.isFunction(b)){return b}return a[b]},htmlEncode:function(a){return Ext.String.htmlEncode(a)},htmlDecode:function(a){return Ext.String.htmlDecode(a)},urlAppend:function(a,b){return Ext.String.urlAppend(a,b)}});Ext.ns=Ext.namespace;window.undefined=window.undefined;(function(){var q=function(e){return e.test(Ext.userAgent)},v=document.compatMode=="CSS1Compat",H=function(T,S){var e;return(T&&(e=S.exec(Ext.userAgent)))?parseFloat(e[1]):0},r=document.documentMode,a=q(/opera/),x=a&&q(/version\/10\.5/),M=q(/\bchrome\b/),B=q(/webkit/),c=!M&&q(/safari/),K=c&&q(/applewebkit\/4/),I=c&&q(/version\/3/),F=c&&q(/version\/4/),l=c&&q(/version\/5\.0/),E=c&&q(/version\/5/),k=!a&&q(/msie/),L=k&&((q(/msie 7/)&&r!=8&&r!=9&&r!=10)||r==7),J=k&&((q(/msie 8/)&&r!=7&&r!=9&&r!=10)||r==8),G=k&&((q(/msie 9/)&&r!=7&&r!=8&&r!=10)||r==9),h=k&&((q(/msie 10/)&&r!=7&&r!=8&&r!=9)||r==10),O=k&&q(/msie 6/),b=!B&&q(/gecko/),R=b&&q(/rv:1\.9/),Q=b&&q(/rv:2\.0/),P=b&&q(/rv:5\./),t=b&&q(/rv:10\./),A=R&&q(/rv:1\.9\.0/),y=R&&q(/rv:1\.9\.1/),w=R&&q(/rv:1\.9\.2/),g=q(/windows|win32/),D=q(/macintosh|mac os x/),z=q(/linux/),n=null,o=H(true,/\bchrome\/(\d+\.\d+)/),j=H(true,/\bfirefox\/(\d+\.\d+)/),p=H(k,/msie (\d+\.\d+)/),u=H(a,/version\/(\d+\.\d+)/),d=H(c,/version\/(\d+\.\d+)/),C=H(B,/webkit\/(\d+\.\d+)/),s=/^https/i.test(window.location.protocol),m;try{document.execCommand("BackgroundImageCache",false,true)}catch(N){}m=function(){};m.info=m.warn=m.error=Ext.emptyFn;Ext.setVersion("extjs","4.2.1.883");Ext.apply(Ext,{SSL_SECURE_URL:s&&k?"javascript:''":"about:blank",plainTableCls:Ext.buildSettings.baseCSSPrefix+"table-plain",plainListCls:Ext.buildSettings.baseCSSPrefix+"list-plain",enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,getDom:function(T,S){if(!T||!document){return null}if(T.dom){return T.dom}else{if(typeof T=="string"){var U=Ext.getElementById(T);if(U&&k&&S){if(T==U.getAttribute("id")){return U}else{return null}}return U}else{return T}}},removeNode:O||L||J?(function(){var e;return function(U){if(U&&U.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(U):Ext.EventManager.removeAll(U);var S=Ext.cache,T=U.id;if(S[T]){delete S[T].dom;delete S[T]}if(J&&U.parentNode){U.parentNode.removeChild(U)}e=e||document.createElement("div");e.appendChild(U);e.innerHTML=""}}}()):function(T){if(T&&T.parentNode&&T.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(T):Ext.EventManager.removeAll(T);var e=Ext.cache,S=T.id;if(e[S]){delete e[S].dom;delete e[S]}T.parentNode.removeChild(T)}},isStrict:v,isIEQuirks:k&&(!v&&(O||L||J||G)),isOpera:a,isOpera10_5:x,isWebKit:B,isChrome:M,isSafari:c,isSafari3:I,isSafari4:F,isSafari5:E,isSafari5_0:l,isSafari2:K,isIE:k,isIE6:O,isIE7:L,isIE7m:O||L,isIE7p:k&&!O,isIE8:J,isIE8m:O||L||J,isIE8p:k&&!(O||L),isIE9:G,isIE9m:O||L||J||G,isIE9p:k&&!(O||L||J),isIE10:h,isIE10m:O||L||J||G||h,isIE10p:k&&!(O||L||J||G),isGecko:b,isGecko3:R,isGecko4:Q,isGecko5:P,isGecko10:t,isFF3_0:A,isFF3_5:y,isFF3_6:w,isFF4:4<=j&&j<5,isFF5:5<=j&&j<6,isFF10:10<=j&&j<11,isLinux:z,isWindows:g,isMac:D,chromeVersion:o,firefoxVersion:j,ieVersion:p,operaVersion:u,safariVersion:d,webKitVersion:C,isSecure:s,BLANK_IMAGE_URL:(O||L)?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(T,e,S){return Ext.isEmpty(T,S)?e:T},escapeRe:function(e){return e.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(V){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(V)})}else{var S={},U,e,T;for(e in V){if((U=e.split("@"))[1]){T=U[0];if(!S[T]){S[T]=Ext.select(T)}S[T].on(U[1],V[e])}}S=null}},getScrollbarSize:function(S){if(!Ext.isReady){return{}}if(S||!n){var e=document.body,T=document.createElement("div");T.style.width=T.style.height="100px";T.style.overflow="scroll";T.style.position="absolute";e.appendChild(T);n={width:T.offsetWidth-T.clientWidth,height:T.offsetHeight-T.clientHeight};e.removeChild(T)}return n},getScrollBarWidth:function(S){var e=Ext.getScrollbarSize(S);return e.width+2},copyTo:function(S,U,W,V){if(typeof W=="string"){W=W.split(/[,;\s]/)}var X,T=W?W.length:0,e;for(X=0;X<T;X++){e=W[X];if(V||U.hasOwnProperty(e)){S[e]=U[e]}}return S},destroyMembers:function(U){for(var T=1,S=arguments,e=S.length;T<e;T++){Ext.destroy(U[S[T]]);delete U[S[T]]}},log:m,partition:function(e,V){var W=[[],[]],S,U,T=e.length;for(S=0;S<T;S++){U=e[S];W[(V&&V(U,S,e))||(!V&&U)?0:1].push(U)}return W},invoke:function(e,V){var X=[],W=Array.prototype.slice.call(arguments,2),S,U,T=e.length;for(S=0;S<T;S++){U=e[S];if(U&&typeof U[V]=="function"){X.push(U[V].apply(U,W))}else{X.push(undefined)}}return X},zip:function(){var Y=Ext.partition(arguments,function(Z){return typeof Z!="function"}),V=Y[0],X=Y[1][0],e=Ext.max(Ext.pluck(V,"length")),U=[],W,T,S;for(W=0;W<e;W++){U[W]=[];if(X){U[W]=X.apply(X,Ext.pluck(V,W))}else{for(T=0,S=V.length;T<S;T++){U[W].push(V[T][W])}}}return U},toSentence:function(S,e){var V=S.length,U,T;if(V<=1){return S[0]}else{U=S.slice(0,V-1);T=S[V-1];return Ext.util.Format.format("{0} {1} {2}",U.join(", "),e||"and",T)}},setGlyphFontFamily:function(e){Ext._glyphFontFamily=e},useShims:O})}());Ext.application=function(a){var c,d,b;if(typeof a==="string"){Ext.require(a,function(){c=Ext.ClassManager.get(a)})}else{Ext.Loader.setPath(a.name,a.appFolder||"app");if(d=a.paths){for(b in d){if(d.hasOwnProperty(b)){Ext.Loader.setPath(b,d[b])}}}a["paths processed"]=true;Ext.define(a.name+".$application",Ext.apply({extend:"Ext.app.Application"},a),function(){c=this})}Ext.onReady(function(){Ext.app.Application.instance=new c()})};(function(){Ext.ns("Ext.util");var g=Ext.util.Format={},c=/<\/?[^>]+>/gi,j=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,k=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(l){return l!==undefined?l:""},defaultValue:function(m,l){return m!==undefined&&m!==""?m:l},substr:"ab".substr(-1)!="b"?function(m,o,l){var n=String(m);return(o<0)?n.substr(Math.max(n.length+o,0),l):n.substr(o,l)}:function(m,n,l){return String(m).substr(n,l)},lowercase:function(l){return String(l).toLowerCase()},uppercase:function(l){return String(l).toUpperCase()},usMoney:function(l){return g.currency(l,"$",2)},currency:function(n,p,m,l){var r="",q=",0",o=0;n=n-0;if(n<0){n=-n;r="-"}m=Ext.isDefined(m)?m:g.currencyPrecision;q+=(m>0?".":"");for(;o<m;o++){q+="0"}n=g.number(n,q);if((l||g.currencyAtEnd)===true){return Ext.String.format("{0}{1}{2}",r,n,p||g.currencySign)}else{return Ext.String.format("{0}{1}{2}",r,p||g.currencySign,n)}},date:function(l,m){if(!l){return""}if(!Ext.isDate(l)){l=new Date(Date.parse(l))}return Ext.Date.dateFormat(l,m||Ext.Date.defaultFormat)},dateRenderer:function(l){return function(m){return g.date(m,l)}},stripTags:function(l){return !l?l:String(l).replace(c,"")},stripScripts:function(l){return !l?l:String(l).replace(j,"")},fileSize:(function(){var l=1024,m=1048576,n=1073741824;return function(p){var o;if(p<l){if(p===1){o="1 byte"}else{o=p+" bytes"}}else{if(p<m){o=(Math.round(((p*10)/l))/10)+" KB"}else{if(p<n){o=(Math.round(((p*10)/m))/10)+" MB"}else{o=(Math.round(((p*10)/n))/10)+" GB"}}}return o}})(),math:(function(){var l={};return function(n,m){if(!l[m]){l[m]=Ext.functionFactory("v","return v "+m+";")}return l[m](n)}}()),round:function(n,m){var l=Number(n);if(typeof m=="number"){m=Math.pow(10,m);l=Math.round(n*m)/m}return l},number:function(t,o){if(!o){return t}var n=d[o];if(!n){var q=o,y=g.thousandSeparator,u=g.decimalSeparator,m,r,s,p=0,w,x,l;if(o.substr(o.length-2)=="/i"){if(!a){a=new RegExp("[^\\d\\"+g.decimalSeparator+"]","g")}o=o.substr(0,o.length-2);m=o.indexOf(y)!=-1;r=o.replace(a,"").split(u)}else{m=o.indexOf(",")!=-1;r=o.replace(k,"").split(".")}s=o.replace(h,"");if(r.length>2){}else{if(r.length===2){p=r[1].length;x=b.test(r[1])}}l=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(m?",thousandSeparator,thousands=[],j,n,i":"")+(s?',formatString="'+o+'",formatPattern=/[\\d,\\.#]+/':"")+(x?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+p+");"];if(m){if(p){l[l.length]='parts=fnum.split(".");';l[l.length]="fnum=parts[0];"}l[l.length]="if(v>=1000) {";l[l.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i<j;i+=n){if(i!==0){n=3;}thousands[thousands.length]=fnum.substr(i,n);}fnum=thousands.join(thousandSeparator);}";if(p){l[l.length]="fnum += utilFormat.decimalSeparator+parts[1];"}}else{if(p){l[l.length]='if(utilFormat.decimalSeparator!=="."){parts=fnum.split(".");fnum=parts[0]+utilFormat.decimalSeparator+parts[1];}'}}if(x){l[l.length]='fnum=fnum.replace(trailingZeroes,"");'}l[l.length]='if(neg&&fnum!=="'+(p?"0."+Ext.String.repeat("0",p):"0")+'")fnum="-"+fnum;';l[l.length]="return ";if(s){l[l.length]="formatString.replace(formatPattern, fnum);"}else{l[l.length]="fnum;"}l[l.length]="};";n=d[q]=Ext.functionFactory("Ext",l.join(""))(Ext)}return n(t)},numberRenderer:function(l){return function(m){return g.number(m,l)}},attributes:function(m){if(typeof m==="object"){var l=[],n;for(n in m){l.push(n,'="',n==="style"?Ext.DomHelper.generateStyles(m[n]):Ext.htmlEncode(m[n]),'"')}m=l.join("")}return m||""},plural:function(l,m,n){return l+" "+(l==1?m:(n?n:m+"s"))},nl2br:function(l){return Ext.isEmpty(l)?"":l.replace(e,"<br/>")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(m){m=m||0;if(typeof m==="number"){return{top:m,right:m,bottom:m,left:m}}var n=m.split(" "),l=n.length;if(l==1){n[1]=n[2]=n[3]=n[0]}else{if(l==2){n[2]=n[0];n[3]=n[1]}else{if(l==3){n[3]=n[1]}}}return{top:parseInt(n[0],10)||0,right:parseInt(n[1],10)||0,bottom:parseInt(n[2],10)||0,left:parseInt(n[3],10)||0}},escapeRegex:function(l){return l.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=Ext.Date.now(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;h<k||h<(k=e.length);++h){b=e[h];if(!(g=b.stopped)){c=b.taskRunTime+b.interval;if(c<=a){d=1;try{d=b.run.apply(b.scope||b,b.args||[++b.taskRunCount])}catch(j){try{if(b.onError){d=b.onError.call(b.scope||b,b,j)}}catch(l){}}b.taskRunTime=a;if(d===false||b.taskRunCount===b.repeat){m.stop(b);g=true}else{g=b.stopped;c=a+b.interval}}if(!g&&b.duration&&b.duration<=(a-b.taskStartTime)){m.stop(b);g=true}}if(g){b.pending=false;if(!o){o=e.slice(0,h)}}else{if(o){o.push(b)}if(n>c){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,Ext.Date.now())}if(m.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e<d.interval){e=d.interval}d.timerId=setTimeout(d.timerFn,e);d.nextExpires=b}}},1,0,0,0,0,0,[Ext.util,"TaskRunner"],function(){var b=this,a=b.prototype;a.destroy=a.stopAll;Ext.util.TaskManager=Ext.TaskManager=new b();b.Task=new Ext.Class({isTask:true,stopped:true,fireOnStart:false,constructor:function(c){Ext.apply(this,c)},restart:function(c){if(c!==undefined){this.interval=c}this.manager.start(this)},start:function(c){if(this.stopped){this.restart(c)}},stop:function(){this.manager.stop(this)}});a=b.Task.prototype;a.destroy=a.stop}));(Ext.cmd.derive("Ext.util.TaskManager",Ext.util.TaskRunner,{alternateClassName:["Ext.TaskManager"],singleton:true},0,0,0,0,0,0,[Ext.util,"TaskManager",Ext,"TaskManager"],0));(Ext.cmd.derive("Ext.perf.Accumulator",Ext.Base,(function(){var c=null,h=Ext.global.chrome,d,b=function(){b=function(){return new Date().getTime()};var m,n;if(Ext.isChrome&&h&&h.Interval){m=new h.Interval();m.start();b=function(){return m.microseconds()/1000}}else{if(window.ActiveXObject){try{n=new ActiveXObject("SenchaToolbox.Toolbox");Ext.senchaToolbox=n;b=function(){return n.milliseconds}}catch(o){}}else{if(Date.now){b=Date.now}}}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=b;return b()};function j(n,m){n.sum+=m;n.min=Math.min(n.min,m);n.max=Math.max(n.max,m)}function e(p){var n=p?p:(b()-this.time),o=this,m=o.accum;++m.count;if(!--m.depth){j(m.total,n)}j(m.pure,n-o.childTime);c=o.parent;if(c){++c.accum.childCount;c.childTime+=n}}function a(){return{min:Number.MAX_VALUE,max:0,sum:0}}function k(n,m){return function(){var p=n.enter(),o=m.apply(this,arguments);p.leave();return o}}function l(m){return Math.round(m*100)/100}function g(o,n,m,q){var p={avg:0,min:q.min,max:q.max,sum:0};if(o){m=m||0;p.sum=q.sum-n*m;p.avg=p.sum/o}return p}return{constructor:function(m){var n=this;n.count=n.childCount=n.depth=n.maxDepth=0;n.pure=a();n.total=a();n.name=m},statics:{getTimestamp:b},format:function(m){if(!d){d=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth<m.depth){m.maxDepth=m.depth}c=n;n.time=b();return n},monitor:function(o,n,m){var p=this.enter();if(m){o.apply(n,m)}else{o.call(n)}p.leave()},report:function(){Ext.log(this.format())},tap:function(u,w){var v=this,p=typeof w=="string"?[w]:w,t,x,r,q,o,n,m,s;s=function(){if(typeof u=="string"){t=Ext.global;q=u.split(".");for(r=0,o=q.length;r<o;++r){t=t[q[r]]}}else{t=u}for(r=0,o=p.length;r<o;++r){n=p[r];x=n.charAt(0)=="!";if(x){n=n.substring(1)}else{x=!(n in t.prototype)}m=x?t:t.prototype;m[n]=k(v,m[n])}};Ext.ClassManager.onCreated(s,v,u);return v}}}()),1,0,0,0,0,0,[Ext.perf,"Accumulator"],function(){Ext.perf.getTimestamp=this.getTimestamp}));(Ext.cmd.derive("Ext.perf.Monitor",Ext.Base,{singleton:true,alternateClassName:"Ext.Perf",constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var b=new Ext.perf.Accumulator("$"),g=b.total,c=Ext.perf.Accumulator.getTimestamp,e=0,h,a,d;d=c();do{h=b.enter();h.leave();++e}while(g.sum<100);a=c();return(a-d)/e},get:function(b){var c=this,a=c.accumulatorsByName[b];if(!a){c.accumulatorsByName[b]=a=new Ext.perf.Accumulator(b);c.accumulators.push(a)}return a},enter:function(a){return this.get(a).enter()},monitor:function(a,c,b){this.get(a).monitor(c,b)},report:function(){var c=this,b=c.accumulators,a=c.calibrate();b.sort(function(e,d){return(e.name<d.name)?-1:((d.name<e.name)?1:0)});c.updateGC();Ext.log("Calibration: "+Math.round(a*100)/100+" msec/sample");Ext.each(b,function(d){Ext.log(d.format(a))})},getData:function(c){var b={},a=this.accumulators;Ext.each(a,function(d){if(c||d.count){b[d.name]=d.getData()}});return b},reset:function(){Ext.each(this.accumulators,function(a){var b=a;b.count=b.childCount=b.depth=b.maxDepth=0;b.pure={min:Number.MAX_VALUE,max:0,sum:0};b.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var a=this.accumulatorsByName.GC,b=Ext.senchaToolbox,c;if(a){a.count=b.garbageCollectionCounter||0;if(a.count){c=a.pure;a.total.sum=c.sum=b.garbageCollectionMilliseconds;c.min=c.max=c.sum/a.count;c=a.total;c.min=c.max=c.sum/a.count}}},watchGC:function(){Ext.perf.getTimestamp();var a=Ext.senchaToolbox;if(a){this.get("GC");a.watchGarbageCollector(false)}},setup:function(c){if(!c){c={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}}this.currentConfig=c;var d,g,b,e,a;for(d in c){if(c.hasOwnProperty(d)){g=c[d];b=Ext.Perf.get(d);for(e in g){if(g.hasOwnProperty(e)){a=g[e];b.tap(e,a)}}}}this.watchGC()}},1,0,0,0,0,0,[Ext.perf,"Monitor",Ext,"Perf"],0));Ext.is={init:function(b){var c=this.platforms,e=c.length,d,a;b=b||window.navigator;for(d=0;d<e;d++){a=c[d];this[a.identity]=a.regex.test(b[a.property])}this.Desktop=this.Mac||this.Windows||(this.Linux&&!this.Android);this.Tablet=this.iPad;this.Phone=!this.Desktop&&!this.Tablet;this.iOS=this.iPhone||this.iPad||this.iPod;this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]};Ext.is.init();(function(){var a=function(g,e){var d=g.ownerDocument.defaultView,h=(d?d.getComputedStyle(g,null):g.currentStyle)||g.style;return h[e]},c={"IE6-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE6-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0],"IE7-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE7-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0],"IE8-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE8-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1],"IE9-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE9-strict":[0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1],"IE10-quirks":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1],"IE10-strict":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1]};function b(){var d=Ext.isIE6?"IE6":Ext.isIE7?"IE7":Ext.isIE8?"IE8":Ext.isIE9?"IE9":Ext.isIE10?"IE10":"";return d?d+(Ext.isStrict?"-strict":"-quirks"):""}Ext.supports={init:function(){var l=this,p=document,j=l.toRun||l.tests,h=j.length,d=h&&Ext.isReady&&p.createElement("div"),e=[],m=b(),k,g,o;if(d){d.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join("");p.body.appendChild(d)}g=c[m];while(h--){k=j[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(k,m){var j=["webkit","Moz","o","ms","khtml"],l="TransitionEnd",d=[j[0]+l,"transitionend",j[2]+l,j[3]+l,j[4]+l],h=j.length,g=0,e=false;for(;g<h;g++){if(a(m,j[g]+"TransitionProperty")){Ext.supports.CSS3Prefix=j[g];Ext.supports.CSS3TransitionEnd=d[g];e=true;break}}return e}},{identity:"RightMargin",fn:function(e,g){var d=e.defaultView;return !(d&&d.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px")}},{identity:"DisplayChangeInputSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<534.24}},{identity:"TransparentColor",fn:function(e,g,d){d=e.defaultView;return !(d&&d.getComputedStyle(g.lastChild,null).backgroundColor!="transparent")}},{identity:"ComputedStyle",fn:function(e,g,d){d=e.defaultView;return d&&d.getComputedStyle}},{identity:"Svg",fn:function(d){return !!d.createElementNS&&!!d.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(d){return !!d.createElement("canvas").getContext}},{identity:"Vml",fn:function(e){var g=e.createElement("div");g.innerHTML="<!--[if vml]><br/><br/><![endif]-->";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",j="linear-gradient(left top, black, white)",h="-moz-"+j,e="-ms-"+j,g="-o-"+j,n=[m+l,m+j,m+h,m+e,m+g];d.style.cssText=n.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,j){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d<e.length;d++){if(document.body.style[e[d]]!==undefined){return true}}return g}},{identity:"GeoLocation",fn:function(){return(typeof navigator!="undefined"&&"geolocation" in navigator)||(typeof google!="undefined"&&typeof google.gears!="undefined")}},{identity:"MouseEnterLeave",fn:function(d,e){return("onmouseenter" in e&&"onmouseleave" in e)}},{identity:"MouseWheel",fn:function(d,e){return("onmousewheel" in e)}},{identity:"Opacity",fn:function(d,e){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){return false}e.firstChild.style.cssText="opacity:0.73";return e.firstChild.style.opacity=="0.73"}},{identity:"Placeholder",fn:function(d){return"placeholder" in d.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)&&Ext.isIE10m}},{identity:"BoundingClientRect",fn:function(d,e){return Ext.isFunction(e.getBoundingClientRect)}},{identity:"RotatedBoundingClientRect",fn:function(){var d=document.body,e=false,h=document.createElement("div"),g=h.style;if(h.getBoundingClientRect){g.WebkitTransform=g.MozTransform=g.OTransform=g.transform="rotate(90deg)";g.width="100px";g.height="30px";d.appendChild(h);e=h.getBoundingClientRect().height!==100;d.removeChild(h)}return e}},{identity:"IncludePaddingInWidthCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetWidth==210}},{identity:"IncludePaddingInHeightCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetHeight==210}},{identity:"ArraySort",fn:function(){var d=[1,2,3,4,5].sort(function(){return 0});return d[0]===1&&d[1]===2&&d[2]===3&&d[3]===4&&d[4]===5}},{identity:"Range",fn:function(){return !!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var d=Ext.supports.Range?document.createRange():false;return d&&!!d.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['<div style="display:table;height:100%;">','<div style="width:51px;"></div>',"</div>"].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,j){j.innerHTML='<div id="b1" style="height:100px;width:100px;direction:rtl;position:relative;overflow:scroll"><div id="b2" style="position:relative;width:100%;height:20px;"></div><div id="b3" style="position:absolute;width:20px;height:20px;top:0px;right:0px"></div></div>';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='<span style="display:inline-block;zoom:1;height:60px;width:60px;"></span>';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(k,m,l,j){if(h){g.cancel()}a=k||a,e=m||e;d=l||d;b=j||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(p,r,t){var n=this,o,j,q,e,s,m,h,l,k,g;r=r||n.observable;if(!n.isListening(p,r)){j=n.createListener(p,r,t);if(n.firing){n.listeners=n.listeners.slice(0)}o=n.listeners;l=h=o.length;q=t&&t.priority;s=n._highestNegativePriorityIndex;m=(s!==undefined);if(q){e=(q<0);if(!e||m){for(k=(e?s:0);k<h;k++){g=o[k].o?o[k].o.priority||0:0;if(g<q){l=k;break}}}else{n._highestNegativePriorityIndex=l}}else{if(m){l=s}}if(!e&&l<=s){n._highestNegativePriorityIndex++}if(l===h){n.listeners[h]=j}else{a(n.listeners,l,[j])}}},createListener:function(h,g,l){g=g||this.observable;var j=this,k={fn:h,scope:g,ev:j},e=h;if(l){k.o=l;if(l.single){e=j.createSingle(e,k,l,g)}if(l.target){e=j.createTargeted(e,k,l,g)}if(l.delay){e=j.createDelayed(e,k,l,g)}if(l.buffer){e=j.createBuffered(e,k,l,g)}}k.fireFn=e;return k},findListener:function(k,j){var h=this.listeners,e=h.length,l,g;while(e--){l=h[e];if(l){g=l.scope;if(l.fn==k&&(g==(j||this.observable))){return e}}}return -1},isListening:function(g,e){return this.findListener(g,e)!==-1},removeListener:function(j,h){var l=this,g,n,m,e;g=l.findListener(j,h);if(g!=-1){n=l.listeners[g];m=l._highestNegativePriorityIndex;if(l.firing){l.listeners=l.listeners.slice(0)}if(n.task){n.task.cancel();delete n.task}e=n.tasks&&n.tasks.length;if(e){while(e--){n.tasks[e].cancel()}delete n.tasks}l.listeners.splice(g,1);if(m){if(g<m){l._highestNegativePriorityIndex--}else{if(g===m&&g===l.listeners.length){delete l._highestNegativePriorityIndex}}}return true}return false},clearListeners:function(){var g=this.listeners,e=g.length;while(e--){this.removeListener(g[e].fn,g[e].scope)}},suspend:function(){this.suspended+=1},resume:function(){if(this.suspended){this.suspended--}},fire:function(){var l=this,j=l.listeners,k=j.length,h,g,m,e;if(!l.suspended&&k>0){l.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h<k;h++){m=j[h];if(m.o){g[e]=m.o}if(m&&m.fireFn.apply(m.scope||l.observable,g)===false){return(l.firing=false)}}}l.firing=false;return true},createTargeted:function(g,h,j,e){return function(){if(j.target===arguments[0]){g.apply(e,arguments)}}},createBuffered:function(g,h,j,e){h.task=new c();return function(){h.task.delay(j.buffer,g,e,b(arguments))}},createDelayed:function(g,h,j,e){return function(){var k=new c();if(!h.tasks){h.tasks=[]}h.tasks.push(k);k.delay(j.delay||10,g,e,b(arguments))}},createSingle:function(g,h,j,e){return function(){var k=h.ev;if(k.removeListener(h.fn,e)&&k.observable){k.observable.hasListeners[k.name]--}return g.apply(e,arguments)}}}},1,0,0,0,0,0,[Ext.util,"Event"],0));Ext.EventManager=new function(){var b=this,h=document,g=window,e=/\\/g,c=Ext.baseCSSPrefix,a=!Ext.isIE9&&"addEventListener" in h,j,d=function(){var p=h.body||h.getElementsByTagName("body")[0],l=[c+"body"],k=[],m=Ext.supports.CSS3LinearGradient,o=Ext.supports.CSS3BorderRadius,n;if(!p){return false}n=p.parentNode;function q(r){l.push(c+r)}if(Ext.isIE&&Ext.isIE9m){q("ie");if(Ext.isIE6){q("ie6")}else{q("ie7p");if(Ext.isIE7){q("ie7")}else{q("ie8p");if(Ext.isIE8){q("ie8")}else{q("ie9p");if(Ext.isIE9){q("ie9")}}}}if(Ext.isIE7m){q("ie7m")}if(Ext.isIE8m){q("ie8m")}if(Ext.isIE9m){q("ie9m")}if(Ext.isIE7||Ext.isIE8){q("ie78")}}if(Ext.isIE10){q("ie10")}if(Ext.isGecko){q("gecko");if(Ext.isGecko3){q("gecko3")}if(Ext.isGecko4){q("gecko4")}if(Ext.isGecko5){q("gecko5")}}if(Ext.isOpera){q("opera")}if(Ext.isWebKit){q("webkit")}if(Ext.isSafari){q("safari");if(Ext.isSafari2){q("safari2")}if(Ext.isSafari3){q("safari3")}if(Ext.isSafari4){q("safari4")}if(Ext.isSafari5){q("safari5")}if(Ext.isSafari5_0){q("safari5_0")}}if(Ext.isChrome){q("chrome")}if(Ext.isMac){q("mac")}if(Ext.isLinux){q("linux")}if(!o){q("nbr")}if(!m){q("nlg")}if(n){if(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)){Ext.isBorderBox=false}else{Ext.isBorderBox=true}if(!Ext.isBorderBox){k.push(c+"content-box")}if(Ext.isStrict){k.push(c+"strict")}else{k.push(c+"quirks")}Ext.fly(n,"_internal").addCls(k)}Ext.fly(p,"_internal").addCls(l);return true};Ext.apply(b,{hasBoundOnReady:false,hasFiredReady:false,deferReadyEvent:1,onReadyChain:[],readyEvent:(function(){j=new Ext.util.Event();j.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||new Date().getTime();j.self.prototype.fire.apply(j,arguments);Ext._afterReadytime=new Date().getTime()};return j}()),idleEvent:new Ext.util.Event(),isReadyPaused:function(){return(/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady)},bindReadyEvent:function(){if(b.hasBoundOnReady){return}if(h.readyState=="complete"){b.onReadyEvent({type:h.readyState||"body"})}else{h.addEventListener("DOMContentLoaded",b.onReadyEvent,false);g.addEventListener("load",b.onReadyEvent,false);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){h.removeEventListener("DOMContentLoaded",b.onReadyEvent,false);g.removeEventListener("load",b.onReadyEvent,false)}if(!Ext.isReady){b.fireDocReady()}},fireDocReady:function(){if(!Ext.isReady){Ext._readyTime=new Date().getTime();Ext.isReady=true;Ext.supports.init();b.onWindowUnload();j.onReadyChain=b.onReadyChain;if(Ext.isNumber(b.deferReadyEvent)){Ext.Function.defer(b.fireReadyEvent,b.deferReadyEvent);b.hasDocReadyTimer=true}else{b.fireReadyEvent()}}},fireReadyEvent:function(){b.hasDocReadyTimer=false;b.isFiring=true;while(j.listeners.length&&!b.isReadyPaused()){j.fire()}b.isFiring=false;b.hasFiredReady=true;Ext.EventManager.idleEvent.fire()},onDocumentReady:function(m,l,k){k=k||{};k.single=true;j.addListener(m,l,k);if(!(b.isFiring||b.hasDocReadyTimer)){if(Ext.isReady){b.fireReadyEvent()}else{b.bindReadyEvent()}}},stoppedMouseDownEvent:new Ext.util.Event(),propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(k){var l;k=Ext.getDom(k);if(k===h||k===g){l=k===h?Ext.documentId:Ext.windowId}else{l=Ext.id(k)}if(!Ext.cache[l]){Ext.addCacheEntry(l,null,k)}return l},prepareListenerConfig:function(n,l,p){var q=b.propRe,m,o,k;for(m in l){if(l.hasOwnProperty(m)){if(!q.test(m)){o=l[m];if(typeof o=="function"){k=[n,m,o,l.scope,l]}else{k=[n,m,o.fn,o.scope,o]}if(p){b.removeListener.apply(b,k)}else{b.addListener.apply(b,k)}}}}},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(k,l){if(b.mouseEnterLeaveRe.test(k)&&!Ext.supports.MouseEnterLeave){if(l){l=Ext.Function.createInterceptor(l,b.contains)}k=k=="mouseenter"?"mouseover":"mouseout"}else{if(k=="mousewheel"&&!Ext.supports.MouseWheel&&!Ext.isOpera){k="DOMMouseScroll"}}return{eventName:k,fn:l}},contains:function(l){l=l.browserEvent||l;var k=l.currentTarget,m=b.getRelatedTarget(l);if(k&&k.firstChild){while(m){if(m===k){return false}m=m.parentNode;if(m&&(m.nodeType!=1)){m=null}}}return true},addListener:function(o,q,t,v,w){if(typeof q!=="string"){b.prepareListenerConfig(o,q);return}var n=o.dom||Ext.getDom(o),r,s,m,k,l,p,u;if(typeof t==="string"){t=Ext.resolveMethod(t,v||o)}w=w||{};s=b.normalizeEvent(q,t);m=b.createListenerWrap(n,q,s.fn,v,w);k=b.getEventListenerCache(o.dom?o:n,q);q=s.eventName;r=a||(Ext.isIE9&&!n.attachEvent);if(!r){l=b.normalizeId(n);if(l){p=Ext.cache[l][q];if(p&&p.firing){k=b.cloneEventListenerCache(n,q)}}}u=!!w.capture;k.push({fn:t,wrap:m,scope:v,capture:u});if(!r){if(k.length===1){l=b.normalizeId(n,true);t=Ext.Function.bind(b.handleSingleEvent,b,[l,q],true);Ext.cache[l][q]={firing:false,fn:t};n.attachEvent("on"+q,t)}}else{n.addEventListener(q,m,u)}if(n==h&&q=="mousedown"){b.stoppedMouseDownEvent.addListener(m)}},normalizeId:function(l,k){var m;if(l===document){m=Ext.documentId}else{if(l===window){m=Ext.windowId}else{m=l.id}}if(!m&&k){m=b.getId(l)}return m},handleSingleEvent:function(p,q,m){var n=b.getEventListenerCache(q,m),l=Ext.cache[q][m],k,o;if(l.firing){return}l.firing=true;for(o=0,k=n.length;o<k;++o){n[o].wrap(p)}l.firing=false},removeListener:function(t,v,w,y){if(typeof v!=="string"){b.prepareListenerConfig(t,v,true);return}var r=Ext.getDom(t),m,n=t.dom?t:Ext.get(r),k=b.getEventListenerCache(n,v),x=b.normalizeEvent(v).eventName,s=k.length,q,u,p,o,l;if(!r){return}p=a||(Ext.isIE9&&!r.detachEvent);if(typeof w==="string"){w=Ext.resolveMethod(w,y||t)}while(s--){o=k[s];if(o&&(!w||o.fn==w)&&(!y||o.scope===y)){l=o.wrap;if(l.task){clearTimeout(l.task);delete l.task}q=l.tasks&&l.tasks.length;if(q){while(q--){clearTimeout(l.tasks[q])}delete l.tasks}if(!p){m=b.normalizeId(r,true);u=Ext.cache[m][x];if(u&&u.firing){k=b.cloneEventListenerCache(r,x)}if(k.length===1){w=u.fn;delete Ext.cache[m][x];r.detachEvent("on"+x,w)}}else{r.removeEventListener(x,l,o.capture)}if(l&&r==h&&v=="mousedown"){b.stoppedMouseDownEvent.removeListener(l)}Ext.Array.erase(k,s,1)}}},removeAll:function(n){var o=(typeof n==="string")?n:n.id,l,m,k;if(o&&(l=Ext.cache[o])){m=l.events;for(k in m){if(m.hasOwnProperty(k)){b.removeListener(n,k)}}l.events={}}},purgeElement:function(n,l){var p=Ext.getDom(n),m=0,k,o;if(l){b.removeListener(n,l)}else{b.removeAll(n)}if(p&&p.childNodes){o=p.childNodes;for(k=o.length;m<k;m++){b.purgeElement(o[m],l)}}},createListenerWrap:function(r,l,o,n,k){k=k||{};var p,q,m=function(t,s){if(!q){p=["if(!"+Ext.name+") {return;}"];if(k.buffer||k.delay||k.freezeEvent){if(k.freezeEvent){p.push("e = X.EventObject.setEvent(e);")}p.push("e = new X.EventObjectImpl(e, "+(k.freezeEvent?"true":"false")+");")}else{p.push("e = X.EventObject.setEvent(e);")}if(k.delegate){p.push('var result, t = e.getTarget("'+(k.delegate+"").replace(e,"\\\\")+'", this);');p.push("if(!t) {return;}")}else{p.push("var t = e.target, result;")}if(k.target){p.push("if(e.target !== options.target) {return;}")}if(k.stopEvent){p.push("e.stopEvent();")}else{if(k.preventDefault){p.push("e.preventDefault();")}if(k.stopPropagation){p.push("e.stopPropagation();")}}if(k.normalized===false){p.push("e = e.browserEvent;")}if(k.buffer){p.push("(wrap.task && clearTimeout(wrap.task));");p.push("wrap.task = setTimeout(function() {")}if(k.delay){p.push("wrap.tasks = wrap.tasks || [];");p.push("wrap.tasks.push(setTimeout(function() {")}p.push("result = fn.call(scope || dom, e, t, options);");if(k.single){p.push("evtMgr.removeListener(dom, ename, fn, scope);")}if(l!=="mousemove"&&l!=="unload"){p.push("if (evtMgr.idleEvent.listeners.length) {");p.push("evtMgr.idleEvent.fire();");p.push("}")}if(k.delay){p.push("}, "+k.delay+"));")}if(k.buffer){p.push("}, "+k.buffer+");")}p.push("return result;");q=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",p.join("\n"))}return q.call(r,t,k,o,n,l,r,m,s,Ext,b)};return m},getEventCache:function(m){var l,k,n;if(!m){return[]}if(m.$cache){l=m.$cache}else{if(typeof m==="string"){n=m}else{n=b.getId(m)}l=Ext.cache[n]}k=l.events||(l.events={});return k},getEventListenerCache:function(m,k){var l=b.getEventCache(m);return l[k]||(l[k]=[])},cloneEventListenerCache:function(n,k){var m=b.getEventCache(n),l;if(m[k]){l=m[k].slice(0)}else{l=[]}m[k]=l;return l},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(k){b.stopPropagation(k);b.preventDefault(k)},stopPropagation:function(k){k=k.browserEvent||k;if(k.stopPropagation){k.stopPropagation()}else{k.cancelBubble=true}},preventDefault:function(k){k=k.browserEvent||k;if(k.preventDefault){k.preventDefault()}else{k.returnValue=false;try{if(k.ctrlKey||k.keyCode>111&&k.keyCode<124){k.keyCode=-1}}catch(l){}}},getRelatedTarget:function(k){k=k.browserEvent||k;var l=k.relatedTarget;if(!l){if(b.mouseLeaveRe.test(k.type)){l=k.toElement}else{if(b.mouseEnterRe.test(k.type)){l=k.fromElement}}}return b.resolveTextNode(l)},getPageX:function(k){return b.getPageXY(k)[0]},getPageY:function(k){return b.getPageXY(k)[1]},getPageXY:function(m){m=m.browserEvent||m;var l=m.pageX,o=m.pageY,n=h.documentElement,k=h.body;if(!l&&l!==0){l=m.clientX+(n&&n.scrollLeft||k&&k.scrollLeft||0)-(n&&n.clientLeft||k&&k.clientLeft||0);o=m.clientY+(n&&n.scrollTop||k&&k.scrollTop||0)-(n&&n.clientTop||k&&k.clientTop||0)}return[l,o]},getTarget:function(k){k=k.browserEvent||k;return b.resolveTextNode(k.target||k.srcElement)},resolveTextNode:Ext.isGecko?function(l){if(l){var k=HTMLElement.prototype.toString.call(l);if(k!=="[xpconnect wrapped native prototype]"&&k!=="[object XULElement]"){return l.nodeType==3?l.parentNode:l}}}:function(k){return k&&k.nodeType==3?k.parentNode:k},curWidth:0,curHeight:0,onWindowResize:function(n,m,l){var k=b.resizeEvent;if(!k){b.resizeEvent=k=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}k.addListener(n,m,l)},fireResize:function(){var k=Ext.Element.getViewWidth(),l=Ext.Element.getViewHeight();if(b.curHeight!=l||b.curWidth!=k){b.curHeight=l;b.curWidth=k;b.resizeEvent.fire(k,l)}},removeResizeListener:function(m,l){var k=b.resizeEvent;if(k){k.removeListener(m,l)}},onWindowUnload:function(n,m,l){var k=b.unloadEvent;if(!k){b.unloadEvent=k=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(n){k.addListener(n,m,l)}},fireUnload:function(){try{h=g=undefined;var p,l,n,m,k;b.unloadEvent.fire();if(Ext.isGecko3){p=Ext.ComponentQuery.query("gridview");l=0;n=p.length;for(;l<n;l++){p[l].scrollToTop()}}k=Ext.cache;for(m in k){if(k.hasOwnProperty(m)){b.removeAll(m)}}}catch(o){}},removeUnloadListener:function(m,l){var k=b.unloadEvent;if(k){k.removeListener(m,l)}},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var k=true;try{document.documentElement.doScroll("left")}catch(l){k=false}if(k&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return k},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var k=document.readyState;if(b.readyStatesRe.test(k)){b.onReadyEvent({type:k})}},bindReadyEvent:function(){var k=true;if(b.hasBoundOnReady){return}try{k=window.frameElement===undefined}catch(l){k=false}if(!k||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(m,l,k){Ext.Loader.onReady(m,l,true,k)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(l,j,h){var k=function(m,n){return j.apply(h,[m].concat(n))};this.captureArgs(l,k,h)},captureArgs:function(k,j,h){k.fireEventArgs=Ext.Function.createInterceptor(k.fireEventArgs,j,h)},observe:function(h,j){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(j)){h.on(j)}}return h},prepareClass:function(k,j){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||(j&&j.HasListeners)||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var j=this;Ext.apply(j,h);if(!j.hasListeners){j.hasListeners=new j.HasListeners()}j.events=j.events||{};if(j.listeners){j.on(j.listeners);j.listeners=null}if(j.bubbleEvents){j.enableBubble(j.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,r,k){var m=this,o=m.managedListeners=m.managedListeners||[],j,h;if(typeof l!=="string"){h=arguments.length>4?r:l;r=l;for(l in r){if(r.hasOwnProperty(l)){j=r[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,j.fn||j,j.scope||r.scope||q,j.fn?j:h,true)}}}if(r&&r.destroyable){return new b(m,p,r)}}else{if(typeof n==="string"){q=q||m;n=Ext.resolveMethod(n,q)}o.push({item:p,ename:l,fn:n,scope:q,options:r});p.on(l,n,q,r);if(!k&&r&&r.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(q,l,o,r){var n=this,s,j,p,h,m,k;if(typeof l!=="string"){s=l;for(l in s){if(s.hasOwnProperty(l)){j=s[l];if(!n.eventOptionsRe.test(l)){n.removeManagedListener(q,l,j.fn||j,j.scope||s.scope||r)}}}}else{p=n.managedListeners?n.managedListeners.slice():[];if(typeof o==="string"){r=r||n;o=Ext.resolveMethod(o,r)}for(m=0,h=p.length;m<h;m++){n.removeManagedListenerItem(false,p[m],q,l,o,r)}}},fireEvent:function(h){return this.fireEventArgs(h,g.call(arguments,1))},fireEventArgs:function(h,k){h=h.toLowerCase();var n=this,l=n.events,m=l&&l[h],j=true;if(m&&n.hasListeners[h]){j=n.continueFireEvent(h,k||d,m.bubble)}return j},continueFireEvent:function(k,m,j){var o=this,h,n,l=true;do{if(o.eventsSuspended){if((h=o.eventQueue)){h.push([k,m,j])}return l}else{n=o.events[k];if(n&&n!==true){if((l=n.fire.apply(n,m))===false){break}}}}while(j&&(o=o.getBubbleParent()));return l},getBubbleParent:function(){var j=this,h=j.getBubbleTarget&&j.getBubbleTarget();if(h&&h.isObservable){return h}return null},addListener:function(l,n,m,k){var p=this,j,o,h=0;if(typeof l!=="string"){k=l;for(l in k){if(k.hasOwnProperty(l)){j=k[l];if(!p.eventOptionsRe.test(l)){p.addListener(l,j.fn||j,j.scope||k.scope,j.fn?j:k)}}}if(k&&k.destroyable){return new b(p,k)}}else{l=l.toLowerCase();o=p.events[l];if(o&&o.isEvent){h=o.listeners.length}else{p.events[l]=o=new c(p,l)}if(typeof n==="string"){m=m||p;n=Ext.resolveMethod(n,m)}o.addListener(n,m,k);if(o.listeners.length!==h){p.hasListeners._incr_(l)}if(k&&k.destroyable){return new b(p,l,n,m,k)}}},removeListener:function(k,m,l){var o=this,j,n,h;if(typeof k!=="string"){h=k;for(k in h){if(h.hasOwnProperty(k)){j=h[k];if(!o.eventOptionsRe.test(k)){o.removeListener(k,j.fn||j,j.scope||h.scope)}}}}else{k=k.toLowerCase();n=o.events[k];if(n&&n.isEvent){if(typeof m==="string"){l=l||o;m=Ext.resolveMethod(m,l)}if(n.removeListener(m,l)){o.hasListeners._decr_(k)}}}},clearListeners:function(){var k=this.events,h=this.hasListeners,l,j;for(j in k){if(k.hasOwnProperty(j)){l=k[j];if(l.isEvent){delete h[j];l.clearListeners()}}}this.clearManagedListeners()},clearManagedListeners:function(){var j=this.managedListeners||[],k=0,h=j.length;for(;k<h;k++){this.removeManagedListenerItem(true,j[k])}this.managedListeners=[]},removeManagedListenerItem:function(j,h,n,k,m,l){if(j||(h.item===n&&h.ename===k&&(!m||h.fn===m)&&(!l||h.scope===l))){h.item.un(h.ename,h.fn,h.scope);if(!j){Ext.Array.remove(this.managedListeners,h)}}},addEvents:function(n){var m=this,l=m.events||(m.events={}),h,j,k;if(typeof n=="string"){for(j=arguments,k=j.length;k--;){h=j[k];if(!l[h]){l[h]=true}}}else{Ext.applyIf(m.events,n)}},hasListener:function(h){return !!this.hasListeners[h.toLowerCase()]},suspendEvents:function(h){this.eventsSuspended+=1;if(h&&!this.eventQueue){this.eventQueue=[]}},suspendEvent:function(j){var h=arguments.length,k,l;for(k=0;k<h;k++){l=this.events[arguments[k]];if(l&&l.suspend){l.suspend()}}},resumeEvent:function(){var h=arguments.length,j,k;for(j=0;j<h;j++){k=this.events[arguments[j]];if(k&&k.resume){k.resume()}}},resumeEvents:function(){var h=this,l=h.eventQueue,k,j;if(h.eventsSuspended&&!--h.eventsSuspended){delete h.eventQueue;if(l){k=l.length;for(j=0;j<k;j++){h.continueFireEvent.apply(h,l[j])}}}},relayEvents:function(j,l,o){var n=this,h=l.length,k=0,m,p={};for(;k<h;k++){m=l[k];p[m]=n.createRelayer(o?o+m:m)}n.mon(j,p,null,null,undefined);return new b(n,j,p)},createRelayer:function(h,j){var k=this;return function(){return k.fireEventArgs.call(k,h,j?g.apply(arguments,j):arguments)}},enableBubble:function(p){if(p){var n=this,o=(typeof p=="string")?arguments:p,m=o.length,k=n.events,j,l,h;for(h=0;h<m;++h){j=o[h].toLowerCase();l=k[j];if(!l||typeof l=="boolean"){k[j]=l=new c(n,j)}n.hasListeners._incr_(j);l.bubble=true}}}}},1,0,0,0,0,0,[Ext.util,"Observable"],function(){var b=this,e=b.prototype,c=function(){},g=function(h){if(!h.HasListeners){var j=h.prototype;b.prepareClass(h,this);h.onExtended(function(k){b.prepareClass(k)});if(j.onClassMixedIn){Ext.override(h,{onClassMixedIn:function(k){g.call(this,k);this.callParent(arguments)}})}else{j.onClassMixedIn=function(k){g.call(this,k)}}}},a;c.prototype={_decr_:function(h){if(!--this[h]){delete this[h]}},_incr_:function(h){if(this.hasOwnProperty(h)){++this[h]}else{this[h]=1}}};e.HasListeners=b.HasListeners=c;b.createAlias({on:"addListener",un:"removeListener",mon:"addManagedListener",mun:"removeManagedListener"});b.observeClass=b.observe;Ext.globalEvents=a=new b({events:{idle:Ext.EventManager.idleEvent,ready:Ext.EventManager.readyEvent}});Ext.on=function(){return a.addListener.apply(a,arguments)};Ext.un=function(){return a.removeListener.apply(a,arguments)};function d(o){var n=(this.methodEvents=this.methodEvents||{})[o],k,j,l,m=this,h;if(!n){this.methodEvents[o]=n={};n.originalFn=this[o];n.methodName=o;n.before=[];n.after=[];h=function(r,q,p){if((j=r.apply(q||m,p))!==undefined){if(typeof j=="object"){if(j.returnValue!==undefined){k=j.returnValue}else{k=j}l=!!j.cancel}else{if(j===false){l=true}else{k=j}}}};this[o]=function(){var r=Array.prototype.slice.call(arguments,0),q,s,p;k=j=undefined;l=false;for(s=0,p=n.before.length;s<p;s++){q=n.before[s];h(q.fn,q.scope,r);if(l){return k}}if((j=n.originalFn.apply(m,r))!==undefined){k=j}for(s=0,p=n.after.length;s<p;s++){q=n.after[s];h(q.fn,q.scope,r);if(l){return k}}return k}}return n}Ext.apply(e,{onClassMixedIn:g,beforeMethod:function(k,j,h){d.call(this,k).before.push({fn:j,scope:h})},afterMethod:function(k,j,h){d.call(this,k).after.push({fn:j,scope:h})},removeMethodListener:function(n,l,k){var m=this.getMethodEvent(n),j,h;for(j=0,h=m.before.length;j<h;j++){if(m.before[j].fn==l&&m.before[j].scope==k){Ext.Array.erase(m.before,j,1);return}}for(j=0,h=m.after.length;j<h;j++){if(m.after[j].fn==l&&m.after[j].scope==k){Ext.Array.erase(m.after,j,1);return}}},toggleEventLogging:function(h){Ext.util.Observable[h?"capture":"releaseCapture"](this,function(j){if(Ext.isDefined(Ext.global.console)){Ext.global.console.log(j,arguments)}})}})}));(Ext.cmd.derive("Ext.EventObjectImpl",Ext.Base,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,WHEEL_SCALE:(function(){var a;if(Ext.isGecko){a=3}else{if(Ext.isMac){if(Ext.isSafari&&Ext.webKitVersion>=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(l,j,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(j,h,g);return k},createMouseEvent:function(v,t,n,m,p,l,j,k,g,s,r,o,q){var h=v.createEvent("MouseEvents"),u=v.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(t,n,m,u,p,l,j,l,j,k,g,s,r,o,q)}else{h=v.createEvent("UIEvents");h.initEvent(t,n,m);h.view=u;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.metaKey=r;h.shiftKey=s;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,j,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,j,h,g,k);return m},fireEvent:function(j,g,h){j.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,j,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(u,t,n,m,p,l,j,k,g,s,r,o,q){var h=u.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.shiftKey=s;h.metaKey=r;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,j){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(j,g,h){j.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createHtmlEvent(j,h,g);d.fireEvent(n,j,m)}});function b(j,h){var g=(j!="mousemove");return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,j,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,j,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createUIEvent(n.ownerDocument,j,h,g,1);d.fireEvent(n,j,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var j=this,h=e[j.type]||a,g=k?(k.dom||k):j.getTarget();g=d.fixTarget(g);h(g,j)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g<c;g++){if(typeof k[g]=="string"){if(typeof k[g][0]=="@"){d=b.getAttributeNode(k[g].substring(1));h.push(d)}else{d=b.querySelectorAll(k[g]);for(e=0,a=d.length;e<a;e++){h.push(d[e])}}}}return h},selectNode:function(b,a){return this.select(b,a)[0]},is:function(a,b){if(typeof a=="string"){a=document.getElementById(a)}return this.select(b).indexOf(a)!==-1}},0,0,0,0,0,0,[Ext.dom,"AbstractQuery"],0));(Ext.cmd.derive("Ext.dom.AbstractHelper",Ext.Base,{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/^(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,styleSepRe:/\s*(?::|;)\s*/,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:(function(){var c=/([a-z])([A-Z])/g,b={};function a(d,g,e){return g+"-"+e.toLowerCase()}return function(d){return b[d]||(b[d]=d.replace(c,a))}}()),generateMarkup:function(j,b){var h=this,g=typeof j,e,a,k,d,c;if(g=="string"||g=="number"){b.push(j)}else{if(Ext.isArray(j)){for(d=0;d<j.length;d++){if(j[d]){h.generateMarkup(j[d],b)}}}else{k=j.tag||"div";b.push("<",k);for(e in j){if(j.hasOwnProperty(e)){a=j[e];if(!h.confRe.test(e)){if(typeof a=="object"){b.push(" ",e,'="');h.generateStyles(a,b).push('"')}else{b.push(" ",h.attributeTransform[e]||e,'="',a,'"')}}}}if(h.emptyTags.test(k)){b.push("/>")}else{b.push(">");if((a=j.tpl)){a.applyOut(j.tplData,b)}if((a=j.html)){b.push(a)}if((a=j.cn||j.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[k]||(c[k]="</"+k+">"))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b<a;){c.setStyle(d[b++],d[b++])}}else{if(Ext.isObject(d)){c.setStyle(d)}}}},insertHtml:function(c,g,d){var h={},a,b,j,e;c=c.toLowerCase();h.beforebegin=["BeforeBegin","previousSibling"];h.afterend=["AfterEnd","nextSibling"];b=g.ownerDocument.createRange();a="setStart"+(this.endRe.test(c)?"After":"Before");if(h[c]){b[a](g);j=b.createContextualFragment(d);g.parentNode.insertBefore(j,c=="beforebegin"?g:g.nextSibling);return g[(c=="beforebegin"?"previous":"next")+"Sibling"]}else{e=(c=="afterbegin"?"first":"last")+"Child";if(g.firstChild){b[a](g[e]);j=b.createContextualFragment(d);if(c=="afterbegin"){g.insertBefore(j,g.firstChild)}else{g.appendChild(j)}}else{g.innerHTML=d}return g[e]}throw'Illegal insertion point -> "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,j=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(j||k){m=c.activeElement||b;e=m&&m.tagName;if((k&&e=="TEXTAREA")||(j&&e=="INPUT"&&m.type=="text")){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(j){var k=j.elements||(document.forms[j]||Ext.getDom(j)).elements,u=false,t=encodeURIComponent,n="",m=k.length,p,g,s,w,v,q,l,r,h;for(q=0;q<m;q++){p=k[q];g=p.name;s=p.type;w=p.options;if(!p.disabled&&g){if(/select-(one|multiple)/i.test(s)){r=w.length;for(l=0;l<r;l++){h=w[l];if(h.selected){v=h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified;n+=Ext.String.format("{0}={1}&",t(g),t(v?h.value:h.text))}}}else{if(!(/file|undefined|reset|button/i.test(s))){if(!(/radio|checkbox/i.test(s)&&!p.checked)&&!(s=="submit"&&u)){n+=t(g)+"="+t(p.value)+"&";u=/submit/i.test(s)}}}}}return n.substr(0,n.length-1)}})});Ext.define("Ext.dom.AbstractElement_insertion",{override:"Ext.dom.AbstractElement",appendChild:function(d,c){var g=this,j,b,h,a;if(d.nodeType||d.dom||typeof d=="string"){d=Ext.getDom(d);g.dom.appendChild(d);return !c?Ext.get(d):d}else{if(d.length){j=Ext.fly(document.createDocumentFragment(),"_internal");b=d.length;Ext.DomHelper.useDom=true;for(h=0;h<b;h++){j.appendChild(d[h],c)}Ext.DomHelper.useDom=a;g.dom.appendChild(j.dom);return c?j.dom:j}else{return g.createChild(d,null,c)}}},appendTo:function(a){Ext.getDom(a).appendChild(this.dom);return this},insertBefore:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a);return this},insertAfter:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a.nextSibling);return this},insertFirst:function(b,a){b=b||{};if(b.nodeType||b.dom||typeof b=="string"){b=Ext.getDom(b);this.dom.insertBefore(b,this.dom.firstChild);return !a?Ext.get(b):b}else{return this.createChild(b,this.dom.firstChild,a)}},insertSibling:function(b,g,k){var j=this,l=Ext.core.DomHelper,m=l.useDom,n=(g||"before").toLowerCase()=="after",d,a,c,h;if(Ext.isArray(b)){a=Ext.fly(document.createDocumentFragment(),"_internal");c=b.length;l.useDom=true;for(h=0;h<c;h++){d=a.appendChild(b[h],k)}l.useDom=m;j.dom.parentNode.insertBefore(a.dom,n?j.dom.nextSibling:j.dom);return d}b=b||{};if(b.nodeType||b.dom){d=j.dom.parentNode.insertBefore(Ext.getDom(b),n?j.dom.nextSibling:j.dom);if(!k){d=Ext.get(d)}}else{if(n&&!j.dom.nextSibling){d=l.append(j.dom.parentNode,b,!k)}else{d=l[n?"insertAfter":"insertBefore"](j.dom,b,!k)}}return d},replace:function(a){a=Ext.get(a);this.insertBefore(a);a.remove();return this},replaceWith:function(a){var b=this;if(a.nodeType||a.dom||typeof a=="string"){a=Ext.get(a);b.dom.parentNode.insertBefore(a.dom,b.dom)}else{a=Ext.core.DomHelper.insertBefore(b.dom,a)}delete Ext.cache[b.id];Ext.removeNode(b.dom);b.id=Ext.id(b.dom=a);Ext.dom.AbstractElement.addToCache(b.isFlyweight?new Ext.dom.AbstractElement(b.dom):b);return b},createChild:function(b,a,c){b=b||{tag:"div"};if(a){return Ext.core.DomHelper.insertBefore(a,b,c!==true)}else{return Ext.core.DomHelper.append(this.dom,b,c!==true)}},wrap:function(b,c,a){var e=Ext.core.DomHelper.insertBefore(this.dom,b||{tag:"div"},true),d=e;if(a){d=Ext.DomQuery.selectNode(a,e.dom)}d.appendChild(this.dom);return c?e.dom:e},insertHtml:function(b,c,a){var d=Ext.core.DomHelper.insertHtml(b,this.dom,c);return a?Ext.get(d):d}});Ext.define("Ext.dom.AbstractElement_style",{override:"Ext.dom.AbstractElement"},function(){var d=this,n=/\w/g,r=/\s+/,c=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,k=Ext.supports.ClassList,e="padding",j="margin",a="border",s="-left",b="-right",p="-top",l="-bottom",q="-width",m={l:a+s+q,r:a+b+q,t:a+p+q,b:a+l+q},g={l:e+s,r:e+b,t:e+p,b:e+l},o={l:j+s,r:j+b,t:j+p,b:j+l},h=new d.Fly();Ext.override(d,{styleHooks:{},addStyles:function(A,z){var v=0,y=(A||"").match(n),x,t=y.length,w,u=[];if(t==1){v=Math.abs(parseFloat(this.getStyle(z[y[0]]))||0)}else{if(t){for(x=0;x<t;x++){w=y[x];u.push(z[w])}u=this.getStyle(u);for(x=0;x<t;x++){w=y[x];v+=Math.abs(parseFloat(u[z[w]])||0)}}}return v},addCls:(function(){var u=function(A){var B=this,x=B.dom,v=B.trimRe,C=A,w,D,y,z,E;if(typeof(A)=="string"){A=A.replace(v,"").split(r)}if(x&&A&&!!(z=A.length)){if(!x.className){x.className=A.join(" ")}else{w=x.classList;if(w){for(y=0;y<z;++y){E=A[y];if(E){if(!w.contains(E)){if(D){D.push(E)}else{D=x.className.replace(v,"");D=D?[D,E]:[E]}}}}if(D){x.className=D.join(" ")}}else{t(C)}}}return B},t=function(w){var x=this,y=x.dom,v;if(y&&w&&w.length){v=Ext.Element.mergeClsList(y.className,w);if(v.changed){y.className=v.join(" ")}}return x};return k?u:t})(),removeCls:function(v){var w=this,y=w.dom,x,t,u;if(typeof(v)=="string"){v=v.replace(w.trimRe,"").split(r)}if(y&&y.className&&v&&!!(t=v.length)){x=y.classList;if(t===1&&x){if(v[0]){x.remove(v[0])}}else{u=Ext.Element.removeCls(y.className,v);if(u.changed){y.className=u.join(" ")}}}return w},radioCls:function(x){var y=this.dom.parentNode.childNodes,u,w,t;x=Ext.isArray(x)?x:[x];for(w=0,t=y.length;w<t;w++){u=y[w];if(u&&u.nodeType==1){h.attach(u).removeCls(x)}}return this.addCls(x)},toggleCls:(function(){var t=function(v){var w=this,y=w.dom,x;if(y){v=v.replace(w.trimRe,"");if(v){x=y.classList;if(x){x.toggle(v)}else{u(v)}}}return w},u=function(v){return this.hasCls(v)?this.removeCls(v):this.addCls(v)};return k?t:u})(),hasCls:(function(){var t=function(w){var y=this.dom,v=false,x;if(y&&w){x=y.classList;if(x){v=x.contains(w)}else{v=u(w)}}return v},u=function(v){var w=this.dom;return w?v&&(" "+w.className+" ").indexOf(" "+v+" ")!==-1:false};return k?t:u})(),replaceCls:function(u,t){return this.removeCls(u).addCls(t)},isStyle:function(t,u){return this.getStyle(t)==u},getStyle:function(F,A){var B=this,w=B.dom,I=typeof F!="string",G=B.styleHooks,u=F,C=u,z=1,y,H,E,D,v,t,x;if(I){E={};u=C[0];x=0;if(!(z=C.length)){return E}}if(!w||w.documentElement){return E||""}y=w.style;if(A){t=y}else{t=w.ownerDocument.defaultView.getComputedStyle(w,null);if(!t){A=true;t=y}}do{D=G[u];if(!D){G[u]=D={name:d.normalize(u)}}if(D.get){v=D.get(w,B,A,t)}else{H=D.name;v=t[H]}if(!I){return v}E[u]=v;u=C[++x]}while(x<z);return E},getStyles:function(){var u=Ext.Array.slice(arguments),t=u.length,v;if(t&&typeof u[t-1]=="boolean"){v=u.pop()}return this.getStyle(u,v)},isTransparent:function(u){var t=this.getStyle(u);return t?c.test(t):false},setStyle:function(A,y){var w=this,z=w.dom,t=w.styleHooks,v=z.style,u=A,x;if(typeof u=="string"){x=t[u];if(!x){t[u]=x={name:d.normalize(u)}}y=(y==null)?"":y;if(x.set){x.set(z,y,w)}else{v[x.name]=y}if(x.afterSet){x.afterSet(z,y,w)}}else{for(u in A){if(A.hasOwnProperty(u)){x=t[u];if(!x){t[u]=x={name:d.normalize(u)}}y=A[u];y=(y==null)?"":y;if(x.set){x.set(z,y,w)}else{v[x.name]=y}if(x.afterSet){x.afterSet(z,y,w)}}}}return w},getHeight:function(u){var v=this.dom,t=u?(v.clientHeight-this.getPadding("tb")):v.offsetHeight;return t>0?t:0},getWidth:function(t){var v=this.dom,u=t?(v.clientWidth-this.getPadding("lr")):v.offsetWidth;return u>0?u:0},setWidth:function(t){var u=this;u.dom.style.width=d.addUnits(t);return u},setHeight:function(t){var u=this;u.dom.style.height=d.addUnits(t);return u},getBorderWidth:function(t){return this.addStyles(t,m)},getPadding:function(t){return this.addStyles(t,g)},margins:o,applyStyles:function(v){if(v){var u,t,w=this.dom;if(typeof v=="function"){v=v.call()}if(typeof v=="string"){v=Ext.util.Format.trim(v).split(/\s*(?::|;)\s*/);for(u=0,t=v.length;u<t;){w.style[d.normalize(v[u++])]=v[u++]}}else{if(typeof v=="object"){this.setStyle(v)}}}},setSize:function(v,t){var w=this,u=w.dom.style;if(Ext.isObject(v)){t=v.height;v=v.width}u.width=d.addUnits(v);u.height=d.addUnits(t);return w},getViewSize:function(){var t=document,u=this.dom;if(u==t||u==t.body){return{width:d.getViewportWidth(),height:d.getViewportHeight()}}else{return{width:u.clientWidth,height:u.clientHeight}}},getSize:function(u){var t=this.dom;return{width:Math.max(0,u?(t.clientWidth-this.getPadding("lr")):t.offsetWidth),height:Math.max(0,u?(t.clientHeight-this.getPadding("tb")):t.offsetHeight)}},repaint:function(){var t=this.dom;this.addCls(Ext.baseCSSPrefix+"repaint");setTimeout(function(){h.attach(t).removeCls(Ext.baseCSSPrefix+"repaint")},1);return this},getMargin:function(u){var v=this,x={t:"top",l:"left",r:"right",b:"bottom"},t,y,w;if(!u){w=[];for(t in v.margins){if(v.margins.hasOwnProperty(t)){w.push(v.margins[t])}}y=v.getStyle(w);if(y&&typeof y=="object"){for(t in v.margins){if(v.margins.hasOwnProperty(t)){y[x[t]]=parseFloat(y[v.margins[t]])||0}}}return y}else{return v.addStyles(u,v.margins)}},mask:function(u,y,C){var z=this,v=z.dom,w=(z.$cache||z.getCache()).data,t=w.mask,D,B,A="",x=Ext.baseCSSPrefix;z.addCls(x+"masked");if(z.getStyle("position")=="static"){z.addCls(x+"masked-relative")}if(t){t.remove()}if(y&&typeof y=="string"){A=" "+y}else{A=" "+x+"mask-gray"}D=z.createChild({cls:x+"mask"+((C!==false)?"":(" "+x+"mask-gray")),html:u?('<div class="'+(y||(x+"mask-message"))+'">'+u+"</div>"):""});B=z.getSize();w.mask=D;if(v===document.body){B.height=window.innerHeight;if(z.orientationHandler){Ext.EventManager.unOrientationChange(z.orientationHandler,z)}z.orientationHandler=function(){B=z.getSize();B.height=window.innerHeight;D.setSize(B)};Ext.EventManager.onOrientationChange(z.orientationHandler,z)}D.setSize(B);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.mask,v=Ext.baseCSSPrefix;if(t){t.remove();delete w.mask}u.removeCls([v+"masked",v+"masked-relative"]);if(u.dom===document.body){Ext.EventManager.unOrientationChange(u.orientationHandler,u);delete u.orientationHandler}}});Ext.onReady(function(){var B=Ext.supports,t,z,x,u,A;function y(G,D,F,C){var E=C[this.name]||"";return c.test(E)?"transparent":E}function w(I,F,H,E){var C=E.marginRight,D,G;if(C!="0px"){D=I.style;G=D.display;D.display="inline-block";C=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,null)).marginRight;D.display=G}return C}function v(J,G,I,F){var C=F.marginRight,E,D,H;if(C!="0px"){E=J.style;D=d.getRightMarginFixCleaner(J);H=E.display;E.display="inline-block";C=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,"")).marginRight;E.display=H;D()}return C}t=d.prototype.styleHooks;if(B.init){B.init()}if(!B.RightMargin){t.marginRight=t["margin-right"]={name:"marginRight",get:(B.DisplayChangeInputSelectionBug||B.DisplayChangeTextAreaSelectionBug)?v:w}}if(!B.TransparentColor){z=["background-color","border-color","color","outline-color"];for(x=z.length;x--;){u=z[x];A=d.normalize(u);t[u]=t[A]={name:A,get:y}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g<b&&e!=c&&e!=d){if(Ext.DomQuery.is(e,h)){return a?Ext.get(e):e}g++;e=e.parentNode}return null},findParentNode:function(d,b,a){var c=Ext.fly(this.dom.parentNode,"_internal");return c?c.findParent(d,b,a):null},up:function(c,a,b){return this.findParentNode(c,a,!b)},select:function(a,b){return Ext.dom.Element.select(a,this.dom,b)},query:function(a){return Ext.DomQuery.select(a,this.dom)},down:function(a,b){var c=Ext.DomQuery.selectNode(a,this.dom);return b?c:Ext.get(c)},child:function(a,b){var d,c=this,e;e=Ext.id(c.dom);e=Ext.escapeId(e);d=Ext.DomQuery.selectNode("#"+e+" > "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var j=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof j){if(c!=j.docEl&&c!=j.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return j.select(c)}else{if(c===k){if(!j.docEl){b=j.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);j.addToCache(b)}return j.docEl}else{if(c===window){if(!j.winEl){j.winEl=Ext.Object.chain(d.prototype);j.winEl.dom=window;j.winEl.id=Ext.id(window);j.addToCache(j.winEl)}return j.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g<b;g++){m=arguments[g];if(Ext.isString(m)){m=m.replace(a,"").split(l)}if(m){for(d=0,h=m.length;d<h;d++){c=m[d];if(!k[c]){if(g){e=true}k[c]=true}}}}for(c in k){n.push(c)}n.changed=e;return n},removeCls:function(a,b){var h={},g,c,d,k=[],e=false,j=this.whitespaceRe;if(a){if(Ext.isString(a)){a=a.replace(this.trimRe,"").split(j)}for(g=0,c=a.length;g<c;g++){h[a[g]]=true}}if(b){if(Ext.isString(b)){b=b.split(j)}for(g=0,c=b.length;g<c;g++){d=b[g];if(h[d]){e=true;delete h[d]}}}for(d in h){k.push(d)}k.changed=e;return k},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(a,b){var c=this,d=typeof a=="string"?document.getElementById(a):a,e;c.el=c;if(!d){return null}e=d.id;if(!b&&e&&Ext.cache[e]){return Ext.cache[e].el}c.dom=d;c.id=e||Ext.id(d);c.self.addToCache(c)},set:function(e,b){var c=this.dom,a,d;for(a in e){if(e.hasOwnProperty(a)){d=e[a];if(a=="style"){this.applyStyles(d)}else{if(a=="cls"){c.className=d}else{if(b!==false){if(d===undefined){c.removeAttribute(a)}else{c.setAttribute(a,d)}}else{c[a]=d}}}}}return this},defaultUnit:"px",is:function(a){return Ext.DomQuery.is(this.dom,a)},getValue:function(a){var b=this.dom.value;return a?parseInt(b,10):b},remove:function(){var a=this,b=a.dom;if(a.isAnimate){a.stopAnimation()}if(b){Ext.removeNode(b);delete a.dom}},contains:function(a){if(!a){return false}var b=this,c=a.dom||a;return(c===b.dom)||Ext.dom.AbstractElement.isAncestor(b.dom,c)},getAttribute:function(a,b){var c=this.dom;return c.getAttributeNS(b,a)||c.getAttribute(b+":"+a)||c.getAttribute(a)||c[a]},update:function(a){if(this.dom){this.dom.innerHTML=a}return this},setHTML:function(a){if(this.dom){this.dom.innerHTML=a}return this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){this.setVisible(false);return this},show:function(){this.setVisible(true);return this},setVisible:function(g,a){var b=this,e=b.self,d=b.getVisibilityMode(),c=Ext.baseCSSPrefix;switch(d){case e.VISIBILITY:b.removeCls([c+"hidden-display",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-visibility");break;case e.DISPLAY:b.removeCls([c+"hidden-visibility",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-display");break;case e.OFFSETS:b.removeCls([c+"hidden-visibility",c+"hidden-display"]);b[g?"removeCls":"addCls"](c+"hidden-offsets");break}return b},getVisibilityMode:function(){var b=(this.$cache||this.getCache()).data,a=b.visibilityMode;if(a===undefined){b.visibilityMode=a=this.self.DISPLAY}return a},setVisibilityMode:function(a){(this.$cache||this.getCache()).data.visibilityMode=a;return this},getCache:function(){var a=this,b=a.dom.id||Ext.id(a.dom);a.$cache=Ext.cache[b]||Ext.addCacheEntry(b,null,a.dom);return a.$cache}},1,0,0,0,0,0,[Ext.dom,"AbstractElement"],function(){var a=this;Ext.getDetachedBody=function(){var b=a.detachedBodyEl;if(!b){b=document.createElement("div");a.detachedBodyEl=b=new a.Fly(b);b.isDetachedBody=true}return b};Ext.getElementById=function(d){var c=document.getElementById(d),b;if(!c&&(b=a.detachedBodyEl)){c=b.dom.querySelector("#"+Ext.escapeId(d))}return c};Ext.get=function(b){return Ext.dom.Element.get(b)};this.addStatics({Fly:new Ext.Class({extend:a,isFly:true,constructor:function(b){this.dom=b;this.el=this},attach:function(b){this.dom=b;this.$cache=b.id?Ext.cache[b.id]:null;return this}}),_flyweights:{},fly:function(e,c){var d=null,b=a._flyweights;c=c||"_global";e=Ext.getDom(e);if(e){d=b[c]||(b[c]=new a.Fly());d.dom=e;d.$cache=e.id?Ext.cache[e.id]:null}return d}});Ext.fly=function(){return a.fly.apply(a,arguments)};(function(b){b.destroy=b.remove;if(document.querySelector){b.getById=function(e,c){var d=document.getElementById(e)||this.dom.querySelector("#"+Ext.escapeId(e));return c?d:(d?Ext.get(d):null)}}else{b.getById=function(e,c){var d=document.getElementById(e);return c?d:(d?Ext.get(d):null)}}}(this.prototype))}));(Ext.cmd.derive("Ext.dom.Helper",Ext.dom.AbstractHelper,(function(){var b="afterbegin",j="afterend",a="beforebegin",p="beforeend",m="<table>",h="</table>",c=m+"<tbody>",o="</tbody>"+h,l=c+"<tr>",e="</tr>"+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(r,x){var s,A=document,v,y,t,z,w,u;if(Ext.isArray(r)){s=A.createDocumentFragment();for(w=0,u=r.length;w<u;w++){this.createDom(r[w],s)}}else{if(typeof r=="string"){s=A.createTextNode(r)}else{s=A.createElement(r.tag||"div");v=!!s.setAttribute;for(y in r){if(!this.confRe.test(y)){t=r[y];if(y=="cls"){s.className=t}else{if(v){s.setAttribute(y,t)}else{s[y]=t}}}}Ext.DomHelper.applyStyles(s,r.style);if((z=r.children||r.cn)){this.createDom(z,s)}else{if(r.html){s.innerHTML=r.html}}}}if(x){x.appendChild(s)}return s},ieTable:function(w,r,x,v){q.innerHTML=[r,x,v].join("");var s=-1,u=q,t;while(++s<w){u=u.firstChild}t=u.nextSibling;if(t){t=u;u=document.createDocumentFragment();while(t){nx=t.nextSibling;u.appendChild(t);t=nx}}return u},insertIntoTable:function(A,t,s,u){var r,x,w=t==a,z=t==b,v=t==p,y=t==j;if(A=="td"&&(z||v)||!this.tableElRe.test(A)&&(w||y)){return null}x=w?s:y?s.nextSibling:z?s.firstChild:null;if(w||y){s=s.parentNode}if(A=="td"||(A=="tr"&&(v||z))){r=this.ieTable(4,l,u,e)}else{if(((A=="tbody"||A=="thead")&&(v||z))||(A=="tr"&&(w||y))){r=this.ieTable(3,c,u,o)}else{r=this.ieTable(2,m,u,h)}}s.insertBefore(r,x);return r},createContextualFragment:function(s){var r=document.createDocumentFragment(),t,u;q.innerHTML=s;u=q.childNodes;t=u.length;while(t--){r.appendChild(u[0])}return r},applyStyles:function(r,s){if(s){if(typeof s=="function"){s=s.call()}if(typeof s=="string"){s=Ext.dom.Element.parseStyles(s)}if(typeof s=="object"){Ext.fly(r,"_applyStyles").setStyle(s)}}},createHtml:function(r){return this.markup(r)},doInsert:function(u,w,v,x,t,r){u=u.dom||Ext.getDom(u);var s;if(this.useDom){s=this.createDom(w,null);if(r){u.appendChild(s)}else{(t=="firstChild"?u:u.parentNode).insertBefore(s,u[t]||u)}}else{s=this.insertHtml(x,u,this.markup(w))}return v?Ext.get(s,true):s},overwrite:function(t,s,u){var r;t=Ext.getDom(t);s=this.markup(s);if(Ext.isIE&&this.tableRe.test(t.tagName)){while(t.firstChild){t.removeChild(t.firstChild)}if(s){r=this.insertHtml("afterbegin",t,s);return u?Ext.get(r):r}return null}t.innerHTML=s;return u?Ext.get(t.firstChild):t.firstChild},insertHtml:function(t,w,u){var y,s,v,r,x;t=t.toLowerCase();if(w.insertAdjacentHTML){if(Ext.isIE&&this.tableRe.test(w.tagName)&&(x=this.insertIntoTable(w.tagName.toLowerCase(),t,w,u))){return x}if((y=g[t])){if(Ext.global.MSApp&&Ext.global.MSApp.execUnsafeLocalFunction){MSApp.execUnsafeLocalFunction(function(){w.insertAdjacentHTML(y[0],u)})}else{w.insertAdjacentHTML(y[0],u)}return w[y[1]]}}else{if(w.nodeType===3){t=t==="afterbegin"?"beforebegin":t;t=t==="beforeend"?"afterend":t}s=Ext.supports.CreateContextualFragment?w.ownerDocument.createRange():undefined;r="setStart"+(this.endRe.test(t)?"After":"Before");if(d[t]){if(s){s[r](w);x=s.createContextualFragment(u)}else{x=this.createContextualFragment(u)}w.parentNode.insertBefore(x,t==a?w:w.nextSibling);return w[(t==a?"previous":"next")+"Sibling"]}else{v=(t==b?"first":"last")+"Child";if(w.firstChild){if(s){s[r](w[v]);x=s.createContextualFragment(u)}else{x=this.createContextualFragment(u)}if(t==b){w.insertBefore(x,w.firstChild)}else{w.appendChild(x)}}else{w.innerHTML=u}return w[v]}}},createTemplate:function(s){var r=this.markup(s);return new Ext.Template(r)}}})(),0,0,0,0,0,0,[Ext.dom,"Helper"],function(){Ext.ns("Ext.core");Ext.DomHelper=Ext.core.DomHelper=new this()}));(Ext.cmd.derive("Ext.Template",Ext.Base,{inheritableStatics:{from:function(b,a){b=Ext.getDom(b);return new this(b.value||b.innerHTML,a||"")}},constructor:function(d){var g=this,b=arguments,a=[],c=0,e=b.length,h;g.initialConfig={};if(e===1&&Ext.isArray(d)){b=d;e=b.length}if(e>1){for(;c<e;c++){h=b[c];if(typeof h=="object"){Ext.apply(g.initialConfig,h);Ext.apply(g,h)}else{a.push(h)}}}else{a.push(d)}g.html=a.join("");if(g.compiled){g.compile()}},isTemplate:true,disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,apply:function(a){var h=this,d=h.disableFormats!==true,g=Ext.util.Format,c=h,b;if(h.compiled){return h.compiled(a).join("")}function e(j,l,n,k){if(n&&d){if(k){k=[a[l]].concat(Ext.functionFactory("return ["+k+"];")())}else{k=[a[l]]}if(n.substr(0,5)=="this."){return c[n.substr(5)].apply(c,k)}else{return g[n].apply(g,k)}}else{return a[l]!==undefined?a[l]:""}}b=h.html.replace(h.re,e);return b},applyOut:function(a,b){var c=this;if(c.compiled){b.push.apply(b,c.compiled(a))}else{b.push(c.apply(a))}return b},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){var me=this,fm=Ext.util.Format,useFormat=me.disableFormats!==true,body,bodyReturn;function fn(m,name,format,args){if(format&&useFormat){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this."+format.substr(5)+"("}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"',"+format+"values['"+name+"']"+args+") ,'"}bodyReturn=me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn);body="this.compiled = function(values){ return ['"+bodyReturn+"'];};";eval(body);return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(b,d,a,e){var c=Ext.DomHelper.insertHtml(b,Ext.getDom(d),this.apply(a));return e?Ext.get(c):c},overwrite:function(c,a,d){var b=Ext.DomHelper.overwrite(Ext.getDom(c),this.apply(a));return d?Ext.get(b):b}},1,0,0,0,0,0,[Ext,"Template"],0));(Ext.cmd.derive("Ext.XTemplateParser",Ext.Base,{constructor:function(a){Ext.apply(this,a)},doTpl:Ext.emptyFn,parse:function(n){var w=this,q=n.length,p={elseif:"elif"},r=w.topRe,c=w.actionsRe,e,d,k,o,h,l,j,v,u,b,g,a;w.level=0;w.stack=d=[];for(e=0;e<q;e=b){r.lastIndex=e;o=r.exec(n);if(!o){w.doText(n.substring(e,q));break}u=o.index;b=r.lastIndex;if(e<u){w.doText(n.substring(e,u))}if(o[1]){b=n.indexOf("%}",u+2);w.doEval(n.substring(u+2,b));b+=2}else{if(o[2]){b=n.indexOf("]}",u+2);w.doExpr(n.substring(u+2,b));b+=2}else{if(o[3]){w.doTag(o[3])}else{if(o[4]){g=null;while((v=c.exec(o[4]))!==null){k=v[2]||v[3];if(k){k=Ext.String.htmlDecode(k);h=v[1];h=p[h]||h;g=g||{};l=g[h];if(typeof l=="string"){g[h]=[l,k]}else{if(l){g[h].push(k)}else{g[h]=k}}}}if(!g){if(w.elseRe.test(o[4])){w.doElse()}else{if(w.defaultRe.test(o[4])){w.doDefault()}else{w.doTpl();d.push({type:"tpl"})}}}else{if(g["if"]){w.doIf(g["if"],g);d.push({type:"if"})}else{if(g["switch"]){w.doSwitch(g["switch"],g);d.push({type:"switch"})}else{if(g["case"]){w.doCase(g["case"],g)}else{if(g.elif){w.doElseIf(g.elif,g)}else{if(g["for"]){++w.level;if(a=w.propRe.exec(o[4])){g.propName=a[1]||a[2]}w.doFor(g["for"],g);d.push({type:"for",actions:g})}else{if(g.foreach){++w.level;if(a=w.propRe.exec(o[4])){g.propName=a[1]||a[2]}w.doForEach(g.foreach,g);d.push({type:"foreach",actions:g})}else{if(g.exec){w.doExec(g.exec,g);d.push({type:"exec",actions:g})}}}}}}}}}else{if(o[0].length===5){d.push({type:"tpl"})}else{j=d.pop();w.doEnd(j.type,j.actions);if(j.type=="for"||j.type=="foreach"){--w.level}}}}}}}},topRe:/(?:(\{\%)|(\{\[)|\{([^{}]+)\})|(?:<tpl([^>]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b<g;++b){a=d.intRe.exec(c[b]);c[b]=a?a[1]:("'"+c[b].replace(d.aposRe,"\\'")+"'")}d.body.push("case ",c.join(": case "),":\n")},doDefault:function(){var a=this,b=a.switches.length-1;if(a.switches[b]){a.body.push("break;\n")}else{a.switches[b]++}a.body.push("default:\n")},doEnd:function(b,d){var c=this,a=c.level-1;if(b=="for"||b=="foreach"){if(d.exec){c.doExec(d.exec)}c.body.push("}\n");c.body.push("parent=p",a,";values=r",a+1,";xcount=n"+a+";xindex=i",a,"+1;xkey=k",a,";\n")}else{if(b=="if"||b=="switch"){c.body.push("}\n")}}},doFor:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=0,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","if (c",b,"){if(a",b,"){n",b,"=c",b,".length;}else if (c",b,".isMixedCollection){c",b,"=c",b,".items;n",b,"=c",b,".length;}else if(c",b,".isStore){c",b,"=c",b,".data.items;n",b,"=c",b,".length;}else{c",b,"=[c",b,"];n",b,"=1;}}\n","for (xcount=n",b,";i",b,"<n"+b+";++i",b,"){\n","values=c",b,"[i",b,"]");if(h.propName){d.body.push(".",h.propName)}d.body.push("\n","xindex=i",b,"+1\n");if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=-1,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","for(k",b," in c",b,"){\n","xindex=++i",b,"+1;\n","xkey=k",b,";\n","values=c",b,"[k",b,"];");if(h.propName){d.body.push(".",h.propName)}if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {","  "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {","  return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,j,d,g,c;if(!a){return null}e=a[1];j=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(j&&h.useFormat){d=d?","+d:"";if(j.substr(0,5)!="this."){j="fm."+j+"("}else{j+="("}}else{return c}return j+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="<!-- -->text<!-- -->";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='<r><a:b xmlns:a="n"></a:b></r>';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}:function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n};function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}return result};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i<len;i++){c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1,d,j;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[],i,len;for(i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[],i,len;if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(i=0;i<len1;i++){c1[i]._qdiff=d}for(i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){id=unescapeCssSelector(id);var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return DQ={getStyle:function(el,name){return Ext.fly(el,"_DomQuery").getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root) {\n var mode; ++batch; var n = root || document;\n"],lastPath,matchers=DQ.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;path=setupEscapes(path);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){matched=false;for(j=0;j<matchersLn;j++){t=matchers[j];m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'Error parsing selector. Parsing failed at "'+path+'"'})}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||doc;if(typeof root=="string"){root=doc.getElementById(root)}var paths=path.split(","),results=[],i,len,subPath,result;for(i=0,len=paths.length;i<len;i++){subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=DQ.compile(subPath,type);if(!cache[subPath]){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})}}else{setupEscapes(subPath)}result=cache[subPath](root);if(result&&result!==doc){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-\.]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)===0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l===0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f===0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isFocusable()){results.push(c)}}return results},visible:function(candidates,deep){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isVisible(deep)){results.push(c)}}return results}}}}());Ext.query=Ext.DomQuery.select;Ext.define("Ext.dom.Element_anim",{override:"Ext.dom.Element",animate:function(b){var d=this,c,e,a=d.dom.id||Ext.id(d.dom);if(!Ext.fx.Manager.hasFxBlock(a)){if(b.listeners){c=b.listeners;delete b.listeners}if(b.internalListeners){b.listeners=b.internalListeners;delete b.internalListeners}e=new Ext.fx.Anim(d.anim(b));if(c){e.on(c)}Ext.fx.Manager.queueFx(e)}return d},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this,c=a.duration||Ext.fx.Anim.prototype.duration,e=a.easing||"ease",d;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));Ext.fx.Manager.setFxDefaults(b.id,{delay:0});d={target:b.dom,remove:a.remove,alternate:a.alternate||false,duration:c,easing:e,callback:a.callback,listeners:a.listeners,iterations:a.iterations||1,scope:a.scope,block:a.block,concurrent:a.concurrent,delay:a.delay||0,paused:true,keyframes:a.keyframes,from:a.from||{},to:Ext.apply({},a)};Ext.apply(d.to,a.to);delete d.to.to;delete d.to.from;delete d.to.remove;delete d.to.alternate;delete d.to.keyframes;delete d.to.iterations;delete d.to.listeners;delete d.to.target;delete d.to.paused;delete d.to.callback;delete d.to.scope;delete d.to.duration;delete d.to.easing;delete d.to.concurrent;delete d.to.block;delete d.to.stopAnimation;delete d.to.delay;return d},slideIn:function(d,c,e){var h=this,b=h.dom,l=b.style,k,a,g,j;d=d||"t";c=c||{};k=function(){var q=this,p=c.listeners,o=Ext.fly(b,"_anim"),r,m,s,n;if(!e){o.fixDisplay()}r=o.getBox();if((d=="t"||d=="b")&&r.height===0){r.height=b.scrollHeight}else{if((d=="l"||d=="r")&&r.width===0){r.width=b.scrollWidth}}m=o.getStyles("width","height","left","right","top","bottom","position","z-index",true);o.setSize(r.width,r.height);if(c.preserveScroll){g=o.cacheScrollValues()}n=o.wrap({id:Ext.id()+"-anim-wrap-for-"+o.dom.id,style:{visibility:e?"visible":"hidden"}});j=n.dom.parentNode;n.setPositioning(o.getPositioning(true));if(n.isStyle("position","static")){n.position("relative")}o.clearPositioning("auto");n.clip();if(g){g()}o.setStyle({visibility:"",position:"absolute"});if(e){n.setSize(r.width,r.height)}switch(d){case"t":s={from:{width:r.width+"px",height:"0px"},to:{width:r.width+"px",height:r.height+"px"}};l.bottom="0px";break;case"l":s={from:{width:"0px",height:r.height+"px"},to:{width:r.width+"px",height:r.height+"px"}};h.anchorAnimX(d);break;case"r":s={from:{x:r.x+r.width,width:"0px",height:r.height+"px"},to:{x:r.x,width:r.width+"px",height:r.height+"px"}};h.anchorAnimX(d);break;case"b":s={from:{y:r.y+r.height,width:r.width+"px",height:"0px"},to:{y:r.y,width:r.width+"px",height:r.height+"px"}};break;case"tl":s={from:{x:r.x,y:r.y,width:"0px",height:"0px"},to:{width:r.width+"px",height:r.height+"px"}};l.bottom="0px";h.anchorAnimX("l");break;case"bl":s={from:{y:r.y+r.height,width:"0px",height:"0px"},to:{y:r.y,width:r.width+"px",height:r.height+"px"}};h.anchorAnimX("l");break;case"br":s={from:{x:r.x+r.width,y:r.y+r.height,width:"0px",height:"0px"},to:{x:r.x,y:r.y,width:r.width+"px",height:r.height+"px"}};h.anchorAnimX("r");break;case"tr":s={from:{x:r.x+r.width,width:"0px",height:"0px"},to:{x:r.x,width:r.width+"px",height:r.height+"px"}};l.bottom="0px";h.anchorAnimX("r");break}n.show();a=Ext.apply({},c);delete a.listeners;a=new Ext.fx.Anim(Ext.applyIf(a,{target:n,duration:500,easing:"ease-out",from:e?s.to:s.from,to:e?s.from:s.to}));a.on("afteranimate",function(){var t=Ext.fly(b,"_anim");t.setStyle(m);if(e){if(c.useDisplay){t.setDisplayed(false)}else{t.hide()}}if(n.dom){if(n.dom.parentNode){n.dom.parentNode.insertBefore(t.dom,n.dom)}else{j.appendChild(t.dom)}n.remove()}if(g){g()}q.end()});if(p){a.on(p)}};h.animate({duration:c.duration?Math.max(c.duration,500)*2:1000,listeners:{beforeanimate:k}});return h},slideOut:function(a,b){return this.slideIn(a,b,true)},puff:function(e){var d=this,g=d.dom,b,c=d.getBox(),a=d.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",true);e=Ext.applyIf(e||{},{easing:"ease-out",duration:500,useDisplay:false});b=function(){var h=Ext.fly(g,"_anim");h.clearOpacity();h.show();this.to={width:c.width*2,height:c.height*2,x:c.x-(c.width/2),y:c.y-(c.height/2),opacity:0,fontSize:"200%"};this.on("afteranimate",function(){var j=Ext.fly(g,"_anim");if(j){if(e.useDisplay){j.setDisplayed(false)}else{j.hide()}j.setStyle(a);Ext.callback(e.callback,e.scope)}})};d.animate({duration:e.duration,easing:e.easing,listeners:{beforeanimate:{fn:b}}});return d},switchOff:function(c){var b=this,d=b.dom,a;c=Ext.applyIf(c||{},{easing:"ease-in",duration:500,remove:false,useDisplay:false});a=function(){var k=Ext.fly(d,"_anim"),j=this,h=k.getSize(),l=k.getXY(),g,e;k.clearOpacity();k.clip();e=k.getPositioning();g=new Ext.fx.Animator({target:d,duration:c.duration,easing:c.easing,keyframes:{33:{opacity:0.3},66:{height:1,y:l[1]+h.height/2},100:{width:1,x:l[0]+h.width/2}}});g.on("afteranimate",function(){var m=Ext.fly(d,"_anim");if(c.useDisplay){m.setDisplayed(false)}else{m.hide()}m.clearOpacity();m.setPositioning(e);m.setSize(h);j.end()})};b.animate({duration:(Math.max(c.duration,500)*2),listeners:{beforeanimate:{fn:a}},callback:c.callback,scope:c.scope});return b},frame:function(a,d,e){var c=this,g=c.dom,b;a=a||"#C3DAF9";d=d||1;e=e||{};b=function(){var l=Ext.fly(g,"_anim"),k=this,m,j,h;l.show();m=l.getBox();j=Ext.getBody().createChild({id:l.dom.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35000,border:"0px solid "+a}});h=new Ext.fx.Anim({target:j,duration:e.duration||1000,iterations:d,from:{top:m.y,left:m.x,borderWidth:0,opacity:1,height:m.height,width:m.width},to:{top:m.y-20,left:m.x-20,borderWidth:10,opacity:0,height:m.height+40,width:m.width+40}});h.on("afteranimate",function(){j.remove();k.end()})};c.animate({duration:(Math.max(e.duration,500)*2)||2000,listeners:{beforeanimate:{fn:b}},callback:e.callback,scope:e.scope});return c},ghost:function(a,d){var c=this,e=c.dom,b;a=a||"b";b=function(){var k=Ext.fly(e,"_anim"),j=k.getWidth(),h=k.getHeight(),l=k.getXY(),g=k.getPositioning(),m={opacity:0};switch(a){case"t":m.y=l[1]-h;break;case"l":m.x=l[0]-j;break;case"r":m.x=l[0]+j;break;case"b":m.y=l[1]+h;break;case"tl":m.x=l[0]-j;m.y=l[1]-h;break;case"bl":m.x=l[0]-j;m.y=l[1]+h;break;case"br":m.x=l[0]+j;m.y=l[1]+h;break;case"tr":m.x=l[0]+j;m.y=l[1]-h;break}this.to=m;this.on("afteranimate",function(){var n=Ext.fly(e,"_anim");if(n){n.hide();n.clearOpacity();n.setPositioning(g)}})};c.animate(Ext.applyIf(d||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:b}}));return c},highlight:function(d,b){var j=this,e=j.dom,l={},h,m,g,c,a,k;if(e.tagName.match(j.tableTagRe)){return j.select("div").highlight(d,b)}b=b||{};c=b.listeners||{};g=b.attr||"backgroundColor";l[g]=d||"ffff9c";if(!b.to){m={};m[g]=b.endColor||j.getColor(g,"ffffff","")}else{m=b.to}b.listeners=Ext.apply(Ext.apply({},c),{beforeanimate:function(){h=e.style[g];var n=Ext.fly(e,"_anim");n.clearOpacity();n.show();a=c.beforeanimate;if(a){k=a.fn||a;return k.apply(a.scope||c.scope||window,arguments)}},afteranimate:function(){if(e){e.style[g]=h}a=c.afteranimate;if(a){k=a.fn||a;k.apply(a.scope||c.scope||window,arguments)}}});j.animate(Ext.apply({},b,{duration:1000,easing:"ease-in",from:l,to:m}));return j},pause:function(a){var b=this;Ext.fx.Manager.setFxDefaults(b.id,{delay:a});return b},fadeIn:function(c){var a=this,b=a.dom;a.animate(Ext.apply({},c,{opacity:1,internalListeners:{beforeanimate:function(e){var d=Ext.fly(b,"_anim");if(d.isStyle("display","none")){d.setDisplayed("")}else{d.show()}}}}));return this},fadeOut:function(c){var a=this,b=a.dom;c=Ext.apply({opacity:0,internalListeners:{afteranimate:function(e){if(b&&e.to.opacity===0){var d=Ext.fly(b,"_anim");if(c.useDisplay){d.setDisplayed(false)}else{d.hide()}}}}},c);a.animate(c);return a},scale:function(a,b,c){this.animate(Ext.apply({},c,{width:a,height:b}));return this},shift:function(a){this.animate(a);return this},anchorAnimX:function(a){var b=(a==="l")?"right":"left";this.dom.style[b]="0px"}});Ext.define("Ext.dom.Element_dd",{override:"Ext.dom.Element",initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});Ext.define("Ext.dom.Element_fx",{override:"Ext.dom.Element"},function(){var b=Ext.dom.Element,j="visibility",g="display",o="none",e="hidden",n="visible",p="offsets",k="asclass",a="nosize",c="originalDisplay",d="visibilityMode",h="isVisible",m=Ext.baseCSSPrefix+"hide-offsets",l=function(r){var s=(r.$cache||r.getCache()).data,t=s[c];if(t===undefined){s[c]=t=""}return t},q=function(s){var t=(s.$cache||s.getCache()).data,r=t[d];if(r===undefined){t[d]=r=b.VISIBILITY}return r};b.override({originalDisplay:"",visibilityMode:1,setVisible:function(v,r){var t=this,u=t.dom,s=q(t);if(typeof r=="string"){switch(r){case g:s=b.DISPLAY;break;case j:s=b.VISIBILITY;break;case p:s=b.OFFSETS;break;case a:case k:s=b.ASCLASS;break}t.setVisibilityMode(s);r=false}if(!r||!t.anim){if(s==b.DISPLAY){return t.setDisplayed(v)}else{if(s==b.OFFSETS){t[v?"removeCls":"addCls"](m)}else{if(s==b.VISIBILITY){t.fixDisplay();u.style.visibility=v?"":e}else{if(s==b.ASCLASS){t[v?"removeCls":"addCls"](t.visibilityCls||b.visibilityCls)}}}}}else{if(v){t.setOpacity(0.01);t.setVisible(true)}if(!Ext.isObject(r)){r={duration:350,easing:"ease-in"}}t.animate(Ext.applyIf({callback:function(){if(!v){Ext.fly(u,"_internal").setVisible(false).setOpacity(1)}},to:{opacity:(v)?1:0}},r))}(t.$cache||t.getCache()).data[h]=v;return t},hasMetrics:function(){var r=q(this);return this.isVisible()||(r==b.OFFSETS)||(r==b.VISIBILITY)},toggle:function(r){var s=this;s.setVisible(!s.isVisible(),s.anim(r));return s},setDisplayed:function(r){if(typeof r=="boolean"){r=r?l(this):o}this.setStyle(g,r);return this},fixDisplay:function(){var r=this;if(r.isStyle(g,o)){r.setStyle(j,e);r.setStyle(g,l(r));if(r.isStyle(g,o)){r.setStyle(g,"block")}}},hide:function(r){if(typeof r=="string"){this.setVisible(false,r);return this}this.setVisible(false,this.anim(r));return this},show:function(r){if(typeof r=="string"){this.setVisible(true,r);return this}this.setVisible(true,this.anim(r));return this}})});Ext.define("Ext.dom.Element_position",{override:"Ext.dom.Element"},function(){var y,r=this,n="left",k="right",q="top",h="bottom",o="position",j="static",z="relative",v="z-index",u="BODY",c="padding",t="border",s="-left",m="-right",a="-top",l="-bottom",g="-width",e={l:t+s+g,r:t+m+g,t:t+a+g,b:t+l+g},d={l:c+s,r:c+m,t:c+a,b:c+l},w=[d.l,d.r,d.t,d.b],b=[e.l,e.r,e.t,e.b],x=Math.round,A=document,p=function(B){if(!y){y=new Ext.Element.Fly()}y.attach(B);return y};r.override({pxRe:/^\d+(?:\.\d*)?px$/i,inheritableStatics:{getX:function(B){return r.getXY(B)[0]},getXY:function(D){var G=A.body,C=A.documentElement,B=0,E=0,H=[0,0],F,J;D=Ext.getDom(D);if(D!=A&&D!=G){if(Ext.isIE){try{F=D.getBoundingClientRect();E=C.clientTop||G.clientTop;B=C.clientLeft||G.clientLeft}catch(I){F={left:0,top:0}}}else{F=D.getBoundingClientRect()}J=p(A).getScroll();H=[x(F.left+J.left-B),x(F.top+J.top-E)]}return H},getY:function(B){return r.getXY(B)[1]},setX:function(C,B){r.setXY(C,[B,false])},setXY:function(C,D){(C=Ext.fly(C,"_setXY")).position();var E=C.translatePoints(D),B=C.dom.style,F;B.right="auto";for(F in E){if(!isNaN(E[F])){B[F]=E[F]+"px"}}},setY:function(B,C){r.setXY(B,[false,C])}},center:function(B){return this.alignTo(B||A,"c-c")},clearPositioning:function(B){B=B||"";return this.setStyle({left:B,right:B,top:B,bottom:B,"z-index":"",position:j})},getAnchorToXY:function(E,B,D,C){return E.getAnchorXY(B,D,C)},getBottom:function(B){return(B?this.getLocalY():this.getY())+this.getHeight()},getBorderPadding:function(){var B=this.getStyle(w),C=this.getStyle(b);return{beforeX:(parseFloat(C[e.l])||0)+(parseFloat(B[d.l])||0),afterX:(parseFloat(C[e.r])||0)+(parseFloat(B[d.r])||0),beforeY:(parseFloat(C[e.t])||0)+(parseFloat(B[d.t])||0),afterY:(parseFloat(C[e.b])||0)+(parseFloat(B[d.b])||0)}},getCenterXY:function(){return this.getAlignToXY(A,"c-c")},getLeft:function(B){return B?this.getLocalX():this.getX()},getLocalX:function(){var D=this,C=D.dom.offsetParent,B=D.getStyle("left");if(!B||B==="auto"){B=0}else{if(D.pxRe.test(B)){B=parseFloat(B)}else{B=D.getX();if(C){B-=r.getX(C)}}}return B},getLocalXY:function(){var E=this,D=E.dom.offsetParent,C=E.getStyle(["left","top"]),B=C.left,F=C.top;if(!B||B==="auto"){B=0}else{if(E.pxRe.test(B)){B=parseFloat(B)}else{B=E.getX();if(D){B-=r.getX(D)}}}if(!F||F==="auto"){F=0}else{if(E.pxRe.test(F)){F=parseFloat(F)}else{F=E.getY();if(D){F-=r.getY(D)}}}return[B,F]},getLocalY:function(){var C=this,B=C.dom.offsetParent,D=C.getStyle("top");if(!D||D==="auto"){D=0}else{if(C.pxRe.test(D)){D=parseFloat(D)}else{D=C.getY();if(B){D-=r.getY(B)}}}return D},getPageBox:function(D){var G=this,E=G.dom,I=E.nodeName==u,J=I?Ext.Element.getViewWidth():E.offsetWidth,F=I?Ext.Element.getViewHeight():E.offsetHeight,L=G.getXY(),K=L[1],B=L[0]+J,H=L[1]+F,C=L[0];if(D){return new Ext.util.Region(K,B,H,C)}else{return{left:C,top:K,width:J,height:F,right:B,bottom:H}}},getPositioning:function(C){var B=this.getStyle(["left","top","position","z-index"]),D=this.dom;if(C){if(B.left==="auto"){B.left=D.offsetLeft+"px"}if(B.top==="auto"){B.top=D.offsetTop+"px"}}return B},getRight:function(B){return(B?this.getLocalX():this.getX())+this.getWidth()},getTop:function(B){return B?this.getLocalY():this.getY()},getX:function(){return r.getX(this.dom)},getXY:function(){return r.getXY(this.dom)},getY:function(){return r.getY(this.dom)},moveTo:function(B,D,C){return this.setXY([B,D],C)},position:function(F,E,B,D){var C=this;if(!F&&C.isStyle(o,j)){C.setStyle(o,z)}else{if(F){C.setStyle(o,F)}}if(E){C.setStyle(v,E)}if(B||D){C.setXY([B||false,D||false])}},setBottom:function(B){this.dom.style[h]=this.addUnits(B);return this},setBounds:function(C,F,E,B,D){return this.setBox({x:C,y:F,width:E,height:B},D)},setLeft:function(B){this.dom.style[n]=this.addUnits(B);return this},setLeftTop:function(E,D){var C=this,B=C.dom.style;B.left=C.addUnits(E);B.top=C.addUnits(D);return C},setLocalX:function(B){var C=this.dom.style;C.right="auto";C.left=(B===null)?"auto":B+"px"},setLocalXY:function(B,D){var C=this.dom.style;C.right="auto";if(B&&B.length){D=B[1];B=B[0]}if(B===null){C.left="auto"}else{if(B!==undefined){C.left=B+"px"}}if(D===null){C.top="auto"}else{if(D!==undefined){C.top=D+"px"}}},setLocalY:function(B){this.dom.style.top=(B===null)?"auto":B+"px"},setLocation:function(B,D,C){return this.setXY([B,D],C)},setPositioning:function(B){return this.setStyle(B)},setRight:function(B){this.dom.style[k]=this.addUnits(B);return this},setTop:function(B){this.dom.style[q]=this.addUnits(B);return this},setX:function(B,C){return this.setXY([B,this.getY()],C)},setXY:function(D,B){var C=this;if(!B||!C.anim){r.setXY(C.dom,D)}else{if(!Ext.isObject(B)){B={}}C.animate(Ext.applyIf({to:{x:D[0],y:D[1]}},B))}return this},setY:function(C,B){return this.setXY([this.getX(),C],B)}});r.getTrueXY=r.getXY});Ext.define("Ext.dom.Element_scroll",{override:"Ext.dom.Element",isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,j=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[j]=e;h[j]=e}else{b={to:{}};b.to[j]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var n=this,l=n.dom,j=n.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=j[0]+b.scrollLeft,o=j[1]+b.scrollTop,a=o+l.offsetHeight,p=g+l.offsetWidth,s=b.clientHeight,r=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),k=r+s,q=d+b.clientWidth,m;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){n.scrollChildFly.attach(l).highlight()}}},c)}else{n.scrollChildFly.attach(l).highlight()}}if(l.offsetHeight>s||o<r){m=o}else{if(a>k){m=a-s}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("top",m,c)}if(e!==false){m=null;if(l.offsetWidth>b.clientWidth||g<d){m=g}else{if(p>q){m=p-b.clientWidth}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("left",m,c)}}return n},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(k,a,c){if(!this.isScrollable()){return false}var j=this,e=j.dom,h=k==="r"||k==="l"?"left":"top",b=false,d,g;if(k==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=j.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=j.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var s=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",u="hidden",r="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",v="originalClip",b=/#document|body/i,w,g,p,d,t,j,x;if(!o||!o.getComputedStyle){s.prototype.getStyle=function(C,B){var O=this,J=O.dom,M=typeof C!="string",k=O.styleHooks,z=C,A=z,I=1,E=B,N,F,y,D,H,K,G;if(M){y={};z=A[0];G=0;if(!(I=A.length)){return y}}if(!J||J.documentElement){return y||""}F=J.style;if(B){K=F}else{K=J.currentStyle;if(!K){E=true;K=F}}do{D=k[z];if(!D){k[z]=D={name:s.normalize(z)}}if(D.get){H=D.get(J,O,E,K)}else{N=D.name;if(D.canThrow){try{H=K[N]}catch(L){H=""}}else{H=K?K[N]:""}}if(!M){return H}y[z]=H;z=A[++G]}while(G<I);return y}}s.override({getHeight:function(A,y){var z=this,B=z.isStyle("display","none"),k,C;if(B){return 0}k=z.dom.offsetHeight;if(Ext.supports.Direct2DBug){C=z.adjustDirect2DDimension(r);if(y){k+=C}else{if(C>0&&C<0.5){k++}}}if(A){k-=z.getBorderWidth("tb")+z.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,C){var A=this,D=A.dom,B=A.isStyle("display","none"),z,y,E;if(B){return 0}if(C&&Ext.supports.BoundingClientRect){z=D.getBoundingClientRect();y=(A.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(z.bottom-z.top):(z.right-z.left)}else{y=D.offsetWidth}if(Ext.supports.Direct2DBug&&!A.vertical){E=A.adjustDirect2DDimension(h);if(C){y+=E}else{if(E>0&&E<0.5){y++}}}if(k){y-=A.getBorderWidth("lr")+A.getPadding("lr")}return(y<0)?0:y},setWidth:function(y,k){var z=this;y=z.adjustWidth(y);if(!k||!z.anim){z.dom.style.width=z.addUnits(y)}else{if(!Ext.isObject(k)){k={}}z.animate(Ext.applyIf({to:{width:y}},k))}return z},setHeight:function(k,y){var z=this;k=z.adjustHeight(k);if(!y||!z.anim){z.dom.style.height=z.addUnits(k)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{height:k}},y))}return z},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(z,k,y){var A=this;if(Ext.isObject(z)){y=k;k=z.height;z=z.width}z=A.adjustWidth(z);k=A.adjustHeight(k);if(!y||!A.anim){A.dom.style.width=A.addUnits(z);A.dom.style.height=A.addUnits(k)}else{if(y===true){y={}}A.animate(Ext.applyIf({to:{width:z,height:k}},y))}return A},getViewSize:function(){var z=this,A=z.dom,y=b.test(A.nodeName),k;if(y){k={width:s.getViewWidth(),height:s.getViewHeight()}}else{k={width:A.clientWidth,height:A.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("lr")+y.getPadding("lr"))}return(z&&k<0)?0:k},adjustHeight:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("tb")+y.getPadding("tb"))}return(z&&k<0)?0:k},getColor:function(y,z,E){var B=this.getStyle(y),A=E||E===""?E:"#",D,k,C=0;if(!B||(/transparent|inherit/.test(B))){return z}if(/^r/.test(B)){B=B.slice(4,B.length-1).split(",");k=B.length;for(;C<k;C++){D=parseInt(B[C],10);A+=(D<16?"0":"")+D.toString(16)}}else{B=B.replace("#","");A+=B.length==3?B.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):B}return(A.length>5?A.toLowerCase():z)},setOpacity:function(y,k){var z=this;if(!z.dom){return z}if(!k||!z.anim){z.setStyle("opacity",y)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}z.animate(Ext.applyIf({to:{opacity:y}},k))}return z},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(z){var E=this,y=E.dom,C=E.getStyle("display"),B=y.style.display,F=y.style.position,D=z===h?0:1,k=y.currentStyle,A;if(C==="inline"){y.style.display="inline-block"}y.style.position=C.match(q)?"absolute":"static";A=(parseFloat(k[z])||parseFloat(k.msTransformOrigin.split(" ")[D])*2)%1;y.style.position=F;if(C==="inline"){y.style.display=B}return A},clip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(!z[e]){z[e]=true;k=y.getStyle([l,n,m]);z[v]={o:k[l],x:k[n],y:k[m]};y.setStyle(l,u);y.setStyle(n,u);y.setStyle(m,u)}return y},unclip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(z[e]){z[e]=false;k=z[v];if(k.o){y.setStyle(l,k.o)}if(k.x){y.setStyle(n,k.x)}if(k.y){y.setStyle(m,k.y)}}return y},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var y=Ext.get(this.insertHtml("beforeBegin","<div class='"+k+"'>"+Ext.String.format(s.boxMarkup,k)+"</div>"));Ext.DomQuery.selectNode("."+k+"-mc",y.dom).appendChild(this.dom);return y},getComputedHeight:function(){var y=this,k=Math.max(y.dom.offsetHeight,y.dom.clientHeight);if(!k){k=parseFloat(y.getStyle(r))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("tb")}}return k},getComputedWidth:function(){var y=this,k=Math.max(y.dom.offsetWidth,y.dom.clientWidth);if(!k){k=parseFloat(y.getStyle(h))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("lr")}}return k},getFrameWidth:function(y,k){return(k&&this.isBorderBox())?0:(this.getPadding(y)+this.getBorderWidth(y))},addClsOnOver:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.hover(function(){if(k&&C.call(y||A,A)===false){return}Ext.fly(B,a).addCls(z)},function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnFocus:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("focus",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z)});A.on("blur",function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnClick:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("mousedown",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z);var E=Ext.getDoc(),D=function(){Ext.fly(B,a).removeCls(z);E.removeListener("mouseup",D)};E.on("mouseup",D)});return A},getStyleSize:function(){var B=this,C=this.dom,y=b.test(C.nodeName),A,k,z;if(y){return{width:s.getViewWidth(),height:s.getViewHeight()}}A=B.getStyle([r,h],true);if(A.width&&A.width!="auto"){k=parseFloat(A.width);if(B.isBorderBox()){k-=B.getFrameWidth("lr")}}if(A.height&&A.height!="auto"){z=parseFloat(A.height);if(B.isBorderBox()){z-=B.getFrameWidth("tb")}}return{width:k||B.getWidth(true),height:z||B.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(s.unselectableCls);k.addCls(s.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(s.selectableCls);k.addCls(s.unselectableCls);return k},setVertical:function(B,y){var A=this,z=s.prototype,k;A.vertical=true;if(y){A.addCls(A.verticalCls=y)}A.setWidth=z.setHeight;A.setHeight=z.setWidth;if(!Ext.isIE9m){A.getWidth=z.getHeight;A.getHeight=z.getWidth}A.styleHooks=(B===270)?s.prototype.verticalStyleHooks270:s.prototype.verticalStyleHooks90},setHorizontal:function(){var y=this,k=y.verticalCls;delete y.vertical;if(k){delete y.verticalCls;y.removeCls(k)}delete y.setWidth;delete y.setHeight;if(!Ext.isIE9m){delete y.getWidth;delete y.getHeight}delete y.styleHooks}});s.prototype.styleHooks=w=Ext.dom.AbstractElement.prototype.styleHooks;s.prototype.verticalStyleHooks90=g=Ext.Object.chain(s.prototype.styleHooks);s.prototype.verticalStyleHooks270=p=Ext.Object.chain(s.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){w.fontSize=w["font-size"]={name:"fontSize",canThrow:true};w.fontStyle=w["font-style"]={name:"fontStyle",canThrow:true};w.fontFamily=w["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(A,y,z,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];t=d.length;while(t--){j=d[t];x="border"+j+"Width";w["border-"+j.toLowerCase()+"-width"]=w[x]={name:x,styleName:"border"+j+"Style",get:c}}}Ext.getDoc().on("selectstart",function(B,D){var C=document.documentElement,A=s.selectableCls,z=s.unselectableCls,k=D&&D.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(D&&D.nodeType===1&&D!==C){var y=Ext.fly(D);if(y.hasCls(A)){return}if(y.hasCls(z)){B.stopEvent();return}D=D.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,j=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:j});Ext.EventManager.onWindowResize(c,null);if(j){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,j,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+j,n[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(k,D,e){var E=this,B=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,F=document,C=F.documentElement,p=F.body,A=(C.scrollLeft||p.scrollLeft||0),w=(C.scrollTop||p.scrollTop||0),a,h,t,g,u,v,r,s,z,q,o,b,c,j,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];D=(!D||D=="?"?"tl-bl?":(!(/-/).test(D)&&D!==""?"tl-"+D:D||"tl-bl")).toLowerCase();D=E.convertPositionSpec(D);a=D.match(E._alignRe);q=a[1];o=a[2];z=!!a[3];h=E.getAnchorXY(q,true);t=E.getAnchorToXY(k,o,false);n=t[0]-h[0]+e[0];l=t[1]-h[1]+e[1];if(z){g=E.getWidth();u=E.getHeight();v=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);j=o.charAt(0);m=o.charAt(o.length-1);r=((b=="t"&&j=="b")||(b=="b"&&j=="t"));s=((c=="r"&&m=="l")||(c=="l"&&m=="r"));if(n+g>B+A){n=s?v.left-g:B+A-g}if(n<A){n=s?v.right:A}if(l+u>d+w){l=r?v.top-u:d+w-u}if(l<w){l=r?v.bottom:w}}return[n,l]},getAnchor:function(){var b=this.el,c=(b.$cache||b.getCache()).data,a;if(!b.dom){return}a=c._anchor;if(!a){a=c._anchor={}}return a},getAnchorXY:function(d,j,b){var h=this,k=h.getXY(),a=h.el,m=document,c=a.dom==m.body||a.dom==m,l=a.getScroll(),g=c?l.left:j?0:k[0],e=c?l.top:j?0:k[1];return h.calculateAnchorXY(d,g,e,b)},getBox:function(d,j){var e=this,n=j?e.getLocalXY():e.getXY(),k=n[0],g=n[1],l=e.getWidth(),b=e.getHeight(),c,a,m;if(d){c=e.getBorderPadding();a=c.beforeX;m=c.beforeY;k+=a;g+=m;l-=(a+c.afterX);b-=(m+c.afterY)}return{x:k,left:k,0:k,y:g,top:g,1:g,width:l,height:b,right:k+l,bottom:g+b}},calculateConstrainedPosition:function(h,b,m,d){var l=this,c,j=l.floatParent,e=j?j.getTargetEl():null,a,g,k,n=false;if(m&&j){a=e.getXY();g=e.getBorderPadding();a[0]+=g.beforeX;a[1]+=g.beforeY;if(b){k=[b[0]+a[0],b[1]+a[1]]}}else{k=b}h=h||l.constrainTo||e||l.container||l.el.parent();c=(l.constrainHeader?l.header:l).getConstrainVector(h,k,d);if(c){n=b||l.getPosition(m);n[0]+=c[0];n[1]+=c[1]}return n},getConstrainVector:function(e,c,a){var j=this.getRegion(),b=[0,0],g=(this.shadow&&this.constrainShadow&&!this.shadowDisabled)?this.shadow.getShadowSize():undefined,d=false,h=this.constraintInsets;if(!(e instanceof Ext.util.Region)){e=Ext.get(e.el||e).getViewRegion()}if(h){h=Ext.isObject(h)?h:Ext.Element.parseBox(h);e.adjust(h.top,h.right,h.bottom,h.length)}if(c){j.translateBy(c[0]-j.x,c[1]-j.y)}if(a){j.right=j.left+a[0];j.bottom=j.top+a[1]}if(g){e.adjust(g[0],-g[1],-g[2],g[3])}if(j.right>e.right){d=true;b[0]=(e.right-j.right)}if(j.left+b[0]<e.left){d=true;b[0]=(e.left-j.left)}if(j.bottom>e.bottom){d=true;b[1]=(e.bottom-j.bottom)}if(j.top+b[1]<e.top){d=true;b[1]=(e.top-j.top)}return d?b:false},getOffsetsTo:function(a){var c=this.getXY(),b=Ext.fly(a.el||a,"_internal").getXY();return[c[0]-b[0],c[1]-b[1]]},getRegion:function(){var a=this.getBox();return new Ext.util.Region(a.top,a.right,a.bottom,a.left)},getViewRegion:function(){var g=this,c=g.el,a=c.dom.nodeName==="BODY",e,k,h,j,d,b,l;if(a){k=c.getScroll();d=k.left;j=k.top;b=Ext.dom.AbstractElement.getViewportWidth();l=Ext.dom.AbstractElement.getViewportHeight()}else{e=g.getBorderPadding();h=g.getXY();d=h[0]+e.beforeX;j=h[1]+e.beforeY;b=g.getWidth(true);l=g.getHeight(true)}return new Ext.util.Region(j,d+b,j+l,d)},move:function(k,b,c){var g=this,n=g.getXY(),l=n[0],j=n[1],d=[l-b,j],m=[l+b,j],h=[l,j-b],a=[l,j+b],e={l:d,left:d,r:m,right:m,t:h,top:h,up:h,b:a,bottom:a,down:a};k=k.toLowerCase();g.setXY([e[k][0],e[k][1]],c)},removeAnchor:function(){var a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return this},setBox:function(e,a){var g=this,b=g.el,k=e.x,j=e.y,n=[k,j],l=e.width,d=e.height,c=(g.constrain||g.constrainHeader),m=c&&g.calculateConstrainedPosition(null,[k,j],false,[l,d]);if(m){k=m[0];j=m[1]}if(!a||!b.anim){g.setSize(l,d);g.setXY([k,j]);g.afterSetPosition(k,j)}else{g.animate(Ext.applyIf({to:{x:k,y:j,width:b.adjustWidth(l),height:b.adjustHeight(d)},listeners:{afteranimate:Ext.Function.bind(g.afterSetPosition,g,[k,j])}},a))}return g},setRegion:function(b,a){return this.setBox({x:b.left,y:b.top,width:b.right-b.left,height:b.bottom-b.top},a)},translatePoints:function(a,c){var b=this.translateXY(a,c);return{left:b.x,top:b.y}},translateXY:function(h,e){var d=this,b=d.el,j=b.getStyle(d._positionTopLeft),a=j.position=="relative",c=parseFloat(j.left),g=parseFloat(j.top),k=d.getXY();if(Ext.isArray(h)){e=h[1];h=h[0]}if(isNaN(c)){c=a?0:b.dom.offsetLeft}if(isNaN(g)){g=a?0:b.dom.offsetTop}c=(typeof h=="number")?h-k[0]+c:undefined;g=(typeof e=="number")?e-k[1]+g:undefined;return{x:c,y:g}}},0,0,0,0,0,0,[Ext.util,"Positionable"],0));(Ext.cmd.derive("Ext.dom.Element",Ext.dom.AbstractElement,function(a){var b="hidden",g=document,k="visibility",c="display",l="none",e=Ext.baseCSSPrefix+"masked",m=Ext.baseCSSPrefix+"masked-relative",j=Ext.baseCSSPrefix+"mask-msg",n=/^body/i,h,d=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},o=function(u){var t=[],p=-1,s,q;for(s=0;q=u[s];s++){if(q.scrollTop>0||q.scrollLeft>0){t[++p]=q}}return t};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(s,r){var p=this;r=r||p.dom;try{if(Number(s)){Ext.defer(p.focus,s,p,[null,r])}else{r.focus()}}catch(q){}return p},blur:function(){var p=this,r=p.dom;if(r!==document.body){try{r.blur()}catch(q){}return p}else{return p.focus(undefined,r)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,s,r){var t=this;t.on("mouseenter",q,s||t.dom,r);t.on("mouseleave",p,s||t.dom,r);return t},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(p,r){var s=this.dom,q;if(r){q=typeof s[r+":"+p];if(q!="undefined"&&q!="unknown"){return s[r+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return s[p]||null}:function(p,q){var r=this.dom;if(q){return r.getAttributeNS(q,p)||r.getAttribute(q+":"+p)}return r.getAttribute(p)||r[p]||null},cacheScrollValues:function(){var t=this,s,r,q,u=[],p=function(){for(q=0;q<s.length;q++){r=s[q];r.scrollLeft=u[q][0];r.scrollTop=u[q][1]}};if(!Ext.DomQuery.pseudos.isScrolled){Ext.DomQuery.pseudos.isScrolled=o}s=t.query(":isScrolled");for(q=0;q<s.length;q++){r=s[q];u[q]=[r.scrollLeft,r.scrollTop]}return p},autoBoxAdjust:true,isVisible:function(p){var r=this,s=r.dom,q=s.ownerDocument.documentElement;if(!h){h=new a.Fly()}while(s!==q){if(!s||s.nodeType===11||(h.attach(s)).isStyle(k,b)||h.isStyle(c,l)){return false}if(!p){break}s=s.parentNode}return true},isDisplayed:function(){return !this.isStyle(c,l)},enableDisplayMode:function(q){var p=this;p.setVisibilityMode(a.DISPLAY);if(!Ext.isEmpty(q)){(p.$cache||p.getCache()).data.originalDisplay=q}return p},mask:function(p,z,w){var B=this,s=B.dom,t=s.style.setExpression,v=(B.$cache||B.getCache()).data,r=v.maskShimEl,y=v.maskEl,q=v.maskMsg,u,x;if(!(n.test(s.tagName)&&B.getStyle("position")=="static")){B.addCls(m)}if(y){y.remove()}if(q){q.remove()}if(r){r.remove()}if(Ext.isIE6){r=Ext.DomHelper.append(s,{tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"},true);v.maskShimEl=r;r.setDisplayed(true)}Ext.DomHelper.append(s,[{cls:Ext.baseCSSPrefix+"mask",style:"top:0;left:0;"},{cls:z?j+" "+z:j,cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-inner",cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-text",html:p||""}}}]);q=Ext.get(s.lastChild);y=Ext.get(q.dom.previousSibling);v.maskMsg=q;v.maskEl=y;B.addCls(e);y.setDisplayed(true);if(typeof p=="string"){q.setDisplayed(true);q.center(B)}else{q.setDisplayed(false)}if(!Ext.supports.IncludePaddingInWidthCalculation&&t){try{y.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"');u='this.parentNode.clientWidth + "px"';if(r){r.dom.style.setExpression("width",u)}y.dom.style.setExpression("width",u)}catch(A){}}if(!Ext.supports.IncludePaddingInHeightCalculation&&t){try{x="this.parentNode."+(s==g.body?"scrollHeight":"offsetHeight")+' + "px"';if(r){r.dom.style.setExpression("height",x)}y.dom.style.setExpression("height",x)}catch(A){}}else{if(Ext.isIE9m&&!(Ext.isIE7&&Ext.isStrict)&&B.getStyle("height")=="auto"){if(r){r.setSize(undefined,w||B.getHeight())}y.setSize(undefined,w||B.getHeight())}}return y},unmask:function(){var t=this,u=(t.$cache||t.getCache()).data,s=u.maskEl,q=u.maskShimEl,p=u.maskMsg,r;if(s){r=s.dom.style;if(r.clearExpression){r.clearExpression("width");r.clearExpression("height")}if(s){s.remove();delete u.maskEl}if(p){p.remove();delete u.maskMsg}t.removeCls([e,m]);if(q){r=q.dom.style;if(r.clearExpression){r.clearExpression("width");r.clearExpression("height")}q.remove();delete u.maskShimEl}}},isMasked:function(){var r=this,t=(r.$cache||r.getCache()).data,q=t.maskEl,p=t.maskMsg,s=false;if(q&&q.isVisible()){if(p){p.center(r)}s=true}return s},createShim:function(){var p=g.createElement("iframe"),q;p.frameBorder="0";p.className=Ext.baseCSSPrefix+"shim";p.src=Ext.SSL_SECURE_URL;q=Ext.get(this.dom.parentNode.insertBefore(p,this.dom));q.autoBoxAdjust=false;return q},addKeyListener:function(q,s,r){var p;if(typeof q!="object"||Ext.isArray(q)){p={target:this,key:q,fn:s,scope:r}}else{p={target:this,key:q.key,shift:q.shift,ctrl:q.ctrl,alt:q.alt,fn:s,scope:r}}return new Ext.util.KeyMap(p)},addKeyMap:function(p){return new Ext.util.KeyMap(Ext.apply({target:this},p))},on:function(p,s,r,q){Ext.EventManager.on(this,p,s,r||this,q);return this},un:function(p,r,q){Ext.EventManager.un(this,p,r,q||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this);return this},select:function(p){return a.select(p,false,this.dom)}}},0,0,0,0,0,[[Ext.util.Positionable.prototype.mixinId||Ext.util.Positionable.$className,Ext.util.Positionable]],[Ext.dom,"Element",Ext,"Element",Ext.core,"Element"],function(){var DOC=document,EC=Ext.cache,Element=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/^a|button|embed|iframe|input|object|select|textarea$/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e<eLen;e++){me.on(eventName[e],fn)}return me}me.on(eventName,fn);return me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1,nx;if(data.isCleaned&&forceReclean!==true){return me}while(n){nx=n.nextSibling;if(n.nodeType==3){if(!(nonSpaceRe.test(n.nodeValue))){dom.removeChild(n)}else{if(nx&&nx.nodeType==3){n.appendData(Ext.String.trim(nx.data));dom.removeChild(nx);nx=n.nextSibling;n.nodeIndex=++ni}}}else{internalFly.attach(n).clean();n.nodeIndex=++ni}n=nx}data.isCleaned=true;return me},load:function(options){this.getLoader().load(options);return this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;if(!loader){data.loader=loader=new Ext.ElementLoader({target:me})}return loader},syncContent:function(source){source=Ext.getDom(source);var sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=this.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,destNode,sourceNode,nodeType,newAttrs,attLen,attName;if(Ext.isIE9m&&dest.mergeAttributes){dest.mergeAttributes(source,true);dest.src=source.src}else{newAttrs=source.attributes;attLen=newAttrs.length;for(i=0;i<attLen;i++){attName=newAttrs[i].name;if(attName!=="id"){dest.setAttribute(attName,newAttrs[i].value)}}}if(sourceLen!==destLen){dest.innerHTML=source.innerHTML;return}for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destNode=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destNode.nodeType||(nodeType===1&&sourceNode.tagName!==destNode.tagName)){dest.innerHTML=source.innerHTML;return}if(nodeType===3){destNode.data=sourceNode.data}else{if(sourceNode.id&&destNode.id!==sourceNode.id){destNode.id=sourceNode.id}destNode.style.cssText=sourceNode.style.cssText;destNode.className=sourceNode.className;internalFly.attach(destNode).syncContent(sourceNode)}}},update:function(html,loadScripts,callback){var me=this,id,dom,interval;if(!me.dom){return me}html=html||"";dom=me.dom;if(loadScripts!==true){dom.innerHTML=html;Ext.callback(callback,me);return me}id=Ext.id();html+='<span id="'+id+'"></span>';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b<d;++b){e.push(this.transformElement(c[b]))}return this},invoke:function(d,a){var g=this.elements,e=g.length,c,b;d=Ext.dom.Element.prototype[d];for(b=0;b<e;b++){c=g[b];if(c){d.apply(this.getElement(c),a)}}return this},item:function(b){var c=this.elements[b],a=null;if(c){a=this.getElement(c)}return a},slice:function(){return this.elements.slice.apply(this.elements,arguments)},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},insert:function(b,a){Ext.Array.insert(this.elements,b,a)},filter:function(b){var h=this,c=h.elements,g=c.length,d=[],e=0,j=typeof b=="function",k,a;for(;e<g;e++){a=c[e];k=false;if(a){a=h.getElement(a);if(j){k=b.call(a,a,h,e)!==false}else{k=a.is(b)}if(k){d.push(h.transformElement(a))}}}h.elements=d;return h},indexOf:function(a){return Ext.Array.indexOf(this.elements,this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g<a;g++){c.push(Ext.get(d[g]))}return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(e,j){e=[].concat(e);var d=this,g=d.elements,c=e.length,h,b,a;for(a=0;a<c;a++){h=e[a];if((b=(g[h]||g[h=d.indexOf(h)]))){if(j){if(b.dom){b.remove()}else{Ext.removeNode(b)}}Ext.Array.erase(g,h,1)}}return d}},1,0,0,0,0,0,[Ext.dom,"CompositeElementLite",Ext,"CompositeElementLite"],function(){this.importElementMethods();this.prototype.on=this.prototype.addListener;if(Ext.DomQuery){Ext.dom.Element.selectorFunction=Ext.DomQuery.select}Ext.dom.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return new Ext.CompositeElementLite(c)};Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}}));(Ext.cmd.derive("Ext.dom.CompositeElement",Ext.dom.CompositeElementLite,{alternateClassName:"Ext.CompositeElement",getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}},0,0,0,0,0,0,[Ext.dom,"CompositeElement",Ext,"CompositeElement"],function(){Ext.dom.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)}}));Ext.select=Ext.Element.select;(Ext.cmd.derive("Ext.util.HashMap",Ext.Base,{generation:0,constructor:function(a){a=a||{};var c=this,b=a.keyFn;c.initialConfig=a;c.addEvents("add","clear","remove","replace");c.mixins.observable.constructor.call(c,a);c.clear(true);if(b){c.getKey=b}},getCount:function(){return this.length},getData:function(a,b){if(b===undefined){b=a;a=this.getKey(b)}return[a,b]},getKey:function(a){return a.id},add:function(a,c){var b=this;if(arguments.length===1){c=a;a=b.getKey(c)}if(b.containsKey(a)){return b.replace(a,c)}b.map[a]=c;++b.length;b.generation++;if(b.hasListeners.add){b.fireEvent("add",b,a,c)}return c},replace:function(b,d){var c=this,e=c.map,a;if(arguments.length===1){d=b;b=c.getKey(d)}if(!c.containsKey(b)){c.add(b,d)}a=e[b];e[b]=d;c.generation++;if(c.hasListeners.replace){c.fireEvent("replace",c,b,d,a)}return d},remove:function(b){var a=this.findKey(b);if(a!==undefined){return this.removeAtKey(a)}return false},removeAtKey:function(a){var b=this,c;if(b.containsKey(a)){c=b.map[a];delete b.map[a];--b.length;b.generation++;if(b.hasListeners.remove){b.fireEvent("remove",b,a,c)}return true}return false},get:function(a){var b=this.map;return b.hasOwnProperty(a)?b[a]:undefined},clear:function(a){var b=this;if(a||b.generation){b.map={};b.length=0;b.generation=a?0:b.generation+1}if(a!==true&&b.hasListeners.clear){b.fireEvent("clear",b)}return b},containsKey:function(a){var b=this.map;return b.hasOwnProperty(a)&&b[a]!==undefined},contains:function(a){return this.containsKey(this.findKey(a))},getKeys:function(){return this.getArray(true)},getValues:function(){return this.getArray(false)},getArray:function(d){var a=[],b,c=this.map;for(b in c){if(c.hasOwnProperty(b)){a.push(d?b:c[b])}}return a},each:function(d,c){var a=Ext.apply({},this.map),b,e=this.length;c=c||this;for(b in a){if(a.hasOwnProperty(b)){if(d.call(c,b,a[b],e)===false){break}}}return this},clone:function(){var c=new this.self(this.initialConfig),b=this.map,a;c.suspendEvents();for(a in b){if(b.hasOwnProperty(a)){c.add(a,b[a])}}c.resumeEvents();return c},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a]===b){return a}}return undefined}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.util,"HashMap"],0));(Ext.cmd.derive("Ext.AbstractManager",Ext.Base,{typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.HashMap();this.types={}},get:function(a){return this.all.get(a)},register:function(a){this.all.add(a)},unregister:function(a){this.all.remove(a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b},isRegistered:function(a){return this.types[a]!==undefined},create:function(a,d){var b=a[this.typeName]||a.type||d,c=this.types[b];return new c(a)},onAvailable:function(g,c,b){var a=this.all,d,e;if(a.containsKey(g)){d=a.get(g);c.call(b||d,d)}else{e=function(k,h,j){if(h==g){c.call(b||j,j);a.un("add",e)}};a.on("add",e)}},each:function(b,a){this.all.each(b,a||this)},getCount:function(){return this.all.getCount()}},1,0,0,0,0,0,[Ext,"AbstractManager"],0));(Ext.cmd.derive("Ext.ComponentManager",Ext.AbstractManager,{alternateClassName:"Ext.ComponentMgr",singleton:true,typeName:"xtype",create:function(a,b){if(typeof a=="string"){return Ext.widget(a)}if(a.isComponent){return a}return Ext.widget(a.xtype||b,a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b;a.prototype[this.typeName]=b}},0,0,0,0,0,0,[Ext,"ComponentManager",Ext,"ComponentMgr"],function(){Ext.getCmp=function(a){return Ext.ComponentManager.get(a)}}));(Ext.cmd.derive("Ext.ComponentQuery",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext,"ComponentQuery"],function(){var j=this,m=Ext.dom.Query.operators,p=/(\d*)n\+?(\d*)/,a=/\D/,n=["var r = [],","i = 0,","it = items,","l = it.length,","c;","for (; i < l; i++) {","c = it[i];","if (c.{0}) {","r.push(c);","}","}","return r;"].join(""),g=function(t,s){return s.method.apply(this,[t].concat(s.args))},b=function(u,y){var s=[],v=0,x=u.length,w,t=y!==">";for(;v<x;v++){w=u[v];if(w.getRefItems){s=s.concat(w.getRefItems(t))}}return s},h=function(t){var s=[],u=0,w=t.length,v;for(;u<w;u++){v=t[u];while(!!(v=v.getRefOwner())){s.push(v)}}return s},q=function(t,y,x){if(y==="*"){return t.slice()}else{var s=[],u=0,w=t.length,v;for(;u<w;u++){v=t[u];if(v.isXType(y,x)){s.push(v)}}return s}},l=function(t,w){var s=[],u=0,x=t.length,v;for(;u<x;u++){v=t[u];if(v.hasCls(w)){s.push(v)}}return s},r=function(A,B,v,u){var E=[],z=0,t=A.length,D,w,C,s,y,x;if(B.charAt(0)==="@"){D=true;B=B.substr(1)}if(B.charAt(0)==="?"){D=true;w=true;B=B.substr(1)}for(;z<t;z++){C=A[z];if(!D||C.hasOwnProperty(B)){s=C[B];if(w){E.push(C)}else{if(v==="~="){if(s){if(!Ext.isArray(s)){s=s.split(" ")}for(y=0,x=s.length;y<x;y++){if(m[v](Ext.coerce(s[y],u),u)){E.push(C);break}}}}else{if(!u?!!C[B]:m[v](Ext.coerce(s,u),u)){E.push(C)}}}}}return E},e=function(t,x){var s=[],u=0,w=t.length,v;for(;u<w;u++){v=t[u];if(v.getItemId()===x){s.push(v)}}return s},o=function(s,t,u){return j.pseudos[t](s,u)},k=/^(\s?([>\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:r},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];j.Query=Ext.extend(Object,{constructor:function(s){s=s||{};Ext.apply(this,s)},execute:function(t){var v=this.operations,w=0,x=v.length,u,s;if(!t){s=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(t)){s=t}else{if(t.isMixedCollection){s=t.items}}}for(;w<x;w++){u=v[w];if(u.mode==="^"){s=h(s||[t])}else{if(u.mode){s=b(s||[t],u.mode)}else{s=g(s||b([t]),u)}}if(w===x-1){return s}}return[]},is:function(u){var t=this.operations,x=Ext.isArray(u)?u:[u],s=x.length,y=t[t.length-1],w,v;x=g(x,y);if(x.length===s){if(t.length>1){for(v=0,w=x.length;v<w;v++){if(Ext.Array.indexOf(this.execute(),x[v])===-1){return false}}}return true}return false}});Ext.apply(this,{cache:{},pseudos:{not:function(y,s){var z=Ext.ComponentQuery,w=0,x=y.length,v=[],u=-1,t;for(;w<x;++w){t=y[w];if(!z.is(t,s)){v[++u]=t}}return v},first:function(t){var s=[];if(t.length>0){s.push(t[0])}return s},last:function(u){var s=u.length,t=[];if(s>0){t.push(u[s-1])}return t},focusable:function(t){var s=t.length,v=[],u=0,w;for(;u<s;u++){w=t[u];if(w.isFocusable()){v.push(w)}}return v},"nth-child":function(y,z){var A=[],t=p.exec(z=="even"&&"2n"||z=="odd"&&"2n+1"||!a.test(z)&&"n+"+z||z),x=(t[1]||1)-0,v=t[2]-0,w,s,u;for(w=0;s=y[w];w++){u=w+1;if(x==1){if(v==0||u==v){A.push(s)}}else{if((u+v)%x==0){A.push(s)}}}return A}},query:function(t,A){var B=t.split(","),s=B.length,u=0,v=[],C=[],z={},x,w,y;for(;u<s;u++){t=Ext.String.trim(B[u]);x=this.cache[t]||(this.cache[t]=this.parse(t));v=v.concat(x.execute(A))}if(s>1){w=v.length;for(u=0;u<w;u++){y=v[u];if(!z[y.id]){C.push(y);z[y.id]=true}}v=C}return v},is:function(t,s){if(!s){return true}var v=s.split(","),w=v.length,u=0,x;for(;u<w;u++){s=Ext.String.trim(v[u]);x=this.cache[s]||(this.cache[s]=this.parse(s));if(x.is(t)){return true}}return false},parse:function(v){var t=[],u=c.length,z,w,A,B,C,x,y,s;while(v&&z!==v){z=v;w=v.match(d);if(w){A=w[1];if(A==="#"){t.push({method:e,args:[Ext.String.trim(w[2])]})}else{if(A==="."){t.push({method:l,args:[Ext.String.trim(w[2])]})}else{t.push({method:q,args:[Ext.String.trim(w[2]),Boolean(w[3])]})}}v=v.replace(w[0],"")}while(!(B=v.match(k))){for(x=0;v&&x<u;x++){y=c[x];C=v.match(y.re);s=y.method;if(C){t.push({method:Ext.isString(y.method)?Ext.functionFactory("items",Ext.String.format.apply(Ext.String,[s].concat(C.slice(1)))):y.method,args:C.slice(1)});v=v.replace(C[0],"");break}if(x===(u-1)){Ext.Error.raise('Invalid ComponentQuery selector: "'+arguments[0]+'"')}}}if(B[1]){t.push({mode:B[2]||B[1]});v=v.replace(B[0],"")}}return new j.Query({operations:t})}})}));(Ext.cmd.derive("Ext.util.ProtoElement",Ext.Base,(function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{isProtoEl:true,clsProp:"cls",styleProp:"style",removedProp:"removed",styleIsText:false,constructor:function(c){var d=this;Ext.apply(d,c);d.classList=b(d.cls);d.classMap=a(d.classList);delete d.cls;if(Ext.isFunction(d.style)){d.styleFn=d.style;delete d.style}else{if(typeof d.style=="string"){d.style=Ext.Element.parseStyles(d.style)}else{if(d.style){d.style=Ext.apply({},d.style)}}}},flush:function(){this.flushClassList=[];this.removedClasses={};delete this.style;delete this.unselectableAttr},addCls:function(n){var l=this,m=(typeof n==="string")?b(n):n,e=m.length,j=l.classList,d=l.classMap,g=l.flushClassList,h=0,k;for(;h<e;++h){k=m[h];if(!d[k]){d[k]=true;j.push(k);if(g){g.push(k);delete l.removedClasses[k]}}}return l},hasCls:function(c){return c in this.classMap},removeCls:function(o){var n=this,l=n.classList,g=(n.classList=[]),j=a(b(o)),e=l.length,d=n.classMap,k=n.removedClasses,h,m;for(h=0;h<e;++h){m=l[h];if(j[m]){if(k){if(d[m]){k[m]=true;Ext.Array.remove(n.flushClassList,m)}}delete d[m]}else{g.push(m)}}return n},setStyle:function(g,e){var d=this,c=d.style||(d.style={});if(typeof g=="string"){if(arguments.length===1){d.setStyle(Ext.Element.parseStyles(g))}else{c[g]=e}}else{Ext.apply(c,g)}return d},unselectable:function(){this.addCls(Ext.dom.Element.unselectableCls);if(Ext.isOpera){this.unselectableAttr=true}},writeTo:function(h){var e=this,g=e.flushClassList||e.classList,d=e.removedClasses,c;if(e.styleFn){c=Ext.apply({},e.styleFn());Ext.apply(c,e.style)}else{c=e.style}h[e.clsProp]=g.join(" ");if(c){h[e.styleProp]=e.styleIsText?Ext.DomHelper.generateStyles(c):c}if(d){d=Ext.Object.getKeys(d);if(d.length){h[e.removedProp]=d.join(" ")}}if(e.unselectableAttr){h.unselectable="on"}return h}}}()),1,0,0,0,0,0,[Ext.util,"ProtoElement"],0));(Ext.cmd.derive("Ext.PluginManager",Ext.AbstractManager,{alternateClassName:"Ext.PluginMgr",singleton:true,typeName:"ptype",create:function(b,d,c){var a;if(b.init){a=b}else{if(c){b=Ext.apply({},b);b.cmp=c}else{c=b.cmp}if(b.xclass){a=Ext.create(b)}else{a=Ext.ClassManager.getByAlias(("plugin."+(b.ptype||d)));if(typeof a==="function"){a=new a(b)}}}if(a&&c&&a.setCmp&&!a.setCmpCalled){a.setCmp(c);a.setCmpCalled=true}return a},findByType:function(c,g){var e=[],b=this.types,a,d;for(a in b){if(!b.hasOwnProperty(a)){continue}d=b[a];if(d.type==c&&(!g||(g===true&&d.isDefault))){e.push(d)}}return e}},0,0,0,0,0,0,[Ext,"PluginManager",Ext,"PluginMgr"],function(){Ext.preg=function(){return Ext.PluginManager.registerType.apply(Ext.PluginManager,arguments)}}));(Ext.cmd.derive("Ext.util.Filter",Ext.Base,{id:null,anyMatch:false,exactMatch:false,caseSensitive:false,disabled:false,operator:null,statics:{createFilterFn:function(a){return a&&a.length?function(e){var d=true,g=a.length,b,c;for(b=0;d&&b<g;b++){c=a[b];if(!c.disabled){d=d&&c.filterFn.call(c.scope||c,e)}}return d}:function(){return true}}},operatorFns:{"<":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)<this.value},"<=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)<=this.value},"=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)==this.value},">=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},1,0,0,0,0,0,[Ext.util,"Filter"],function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]}));(Ext.cmd.derive("Ext.util.AbstractMixedCollection",Ext.Base,{isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(c,d){var a=this.length,b;if(arguments.length===1){b=this.insert(a,c)}else{b=this.insert(a,c,d)}return b},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c<a;c++){g=b[c];if(e.call(d||g,g,c,a)===false){break}}},eachKey:function(e,d){var g=this.keys,b=this.items,c=0,a=g.length;for(;c<a;c++){e.call(d||window,g[c],b[c],c,a)}},findBy:function(e,d){var g=this.keys,b=this.items,c=0,a=b.length;for(;c<a;c++){if(e.call(d||window,b[c],g[c])){return b[c]}}return null},find:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.util.MixedCollection: find has been deprecated. Use findBy instead.")}return this.findBy.apply(this,arguments)},insert:function(b,c,d){var a;if(Ext.isIterable(c)){a=this.doInsert(b,c,d)}else{if(arguments.length>2){a=this.doInsert(b,[c],[d])}else{a=this.doInsert(b,[c])}a=a[0]}return a},doInsert:function(j,o,n){var l=this,b,c,g,k=o.length,a=k,e=l.hasListeners.add,d,h={},m,q,p;if(n!=null){l.useLinearSearch=true}else{n=o;o=new Array(k);for(g=0;g<k;g++){o[g]=this.getKey(n[g])}}l.suspendEvents();for(g=0;g<k;g++){b=o[g];c=l.indexOfKey(b);if(c!==-1){if(c<j){j--}l.removeAt(c)}if(b!=null){if(h[b]!=null){m=true;a--}h[b]=g}}l.resumeEvents();if(m){q=o;p=n;o=new Array(a);n=new Array(a);g=0;for(b in h){o[g]=q[h[b]];n[g]=p[h[b]];g++}k=a}d=j===l.length&&l.indexGeneration===l.generation;Ext.Array.insert(l.items,j,n);Ext.Array.insert(l.keys,j,o);l.length+=k;l.generation++;if(d){l.indexGeneration=l.generation}for(g=0;g<k;g++,j++){b=o[g];if(b!=null){l.map[b]=n[g];if(d){l.indexMap[b]=j}}if(e){l.fireEvent("add",j,n[g],b)}}return n},remove:function(d){var c=this,b,a;if(!c.useLinearSearch&&(b=c.getKey(d))){a=c.indexOfKey(b)}else{a=Ext.Array.indexOf(c.items,d)}return(a===-1)?false:c.removeAt(a)},removeAll:function(a){var c=this,b;if(a||c.hasListeners.remove){if(a){for(b=a.length-1;b>=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a<c.length&&a>=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var j=this,b,k,g,e,c,d;if(h<j.length&&h>=0){if(!a){a=1}e=Math.min(h+a,j.length);a=e-h;d=e===j.length;c=d&&j.indexGeneration===j.generation;for(g=h;g<e;g++){k=j.keys[g];if(k!=null){delete j.map[k];if(c){delete j.indexMap[k]}}}b=j.items[g-1];j.length-=a;j.generation++;if(c){j.indexGeneration=j.generation}if(d){j.items.length=j.keys.length=j.length}else{j.items.splice(h,a);j.keys.splice(h,a)}return b}return false},removeAtKey:function(b){var d=this,c=d.keys,a;if(b==null){for(a=c.length-1;a>=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(!this.map.hasOwnProperty(a)){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=e.keys,a=c.length,b;for(b=0;b<a;b++){d[c[b]]=b}e.indexGeneration=e.generation},get:function(b){var d=this,a=d.map[b],c=a!==undefined?a:(typeof b=="number")?d.items[b]:undefined;return typeof c!="function"||d.allowFunctions?c:null},getAt:function(a){return this.items[a]},getByKey:function(a){return this.map[a]},contains:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.map[a]!=null}return Ext.Array.indexOf(this.items,c)!==-1}return false},containsKey:function(a){return this.map.hasOwnProperty(a)},clear:function(){var a=this;if(a.generation){a.length=0;a.items=[];a.keys=[];a.map={};a.indexMap={};a.generation++;a.indexGeneration=a.generation}if(a.hasListeners.clear){a.fireEvent("clear")}},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},sum:function(h,b,j,a){var c=this.extractValues(h,b),g=c.length,e=0,d;j=j||0;a=(a||a===0)?a:g-1;for(d=j;d<=a;d++){e+=c[d]}return e},collect:function(k,e,h){var l=this.extractValues(k,e),a=l.length,b={},c=[],j,g,d;for(d=0;d<a;d++){j=l[d];g=String(j);if((h||!Ext.isEmpty(j))&&!b[g]){b[g]=true;c.push(j)}}return c},extractValues:function(c,a){var b=this.items;if(a){b=Ext.Array.pluck(b,a)}return Ext.Array.pluck(b,c)},hasRange:function(b,a){return(a<this.length)},getRange:function(j,b){var h=this,d=h.items,c=[],a=d.length,g,e;if(a<1){return c}if(j>b){e=true;g=j;j=b;b=g}if(j<0){j=0}if(b==null||b>=a){b=a-1}c=d.slice(j,b+1);if(e&&c.length){c.reverse()}return c},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var j=this,a=new j.self(j.initialConfig),h=j.keys,b=j.items,g=b.length,c;a.getKey=j.getKey;for(c=0;c<g;c++){if(e.call(d||j,b[c],h[c])){a.add(h[c],b[c])}}return a},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(e,d,j){var h=this,g=h.keys,b=h.items,c=j||0,a=b.length;for(;c<a;c++){if(e.call(d||h,b[c],g[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.String.escapeRegex;c=String(c);if(e===true){c=d(c)}else{c="^"+d(c);if(b===true){c+="$"}}c=new RegExp(c,a?"":"i")}return c},clone:function(){var a=this,b=new this.self(a.initialConfig);b.add(a.keys,a.items);return b}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.util,"AbstractMixedCollection"],0));(Ext.cmd.derive("Ext.util.Sorter",Ext.Base,{direction:"ASC",constructor:function(a){var b=this;Ext.apply(b,a);b.updateSortFunction()},createSortFunction:function(b){var c=this,d=c.direction||"ASC",a=d.toUpperCase()=="DESC"?-1:1;return function(g,e){return a*b.call(c,g,e)}},defaultSorterFn:function(d,c){var b=this,a=b.transform,g=b.getRoot(d)[b.property],e=b.getRoot(c)[b.property];if(a){g=a(g);e=a(e)}return g>e?1:(g<e?-1:0)},getRoot:function(a){return this.root===undefined?a:a[this.root]},setDirection:function(b){var a=this;a.direction=b?b.toUpperCase():b;a.updateSortFunction()},toggle:function(){var a=this;a.direction=Ext.String.toggle(a.direction,"ASC","DESC");a.updateSortFunction()},updateSortFunction:function(a){var b=this;a=a||b.sorterFn||b.defaultSorterFn;b.sort=b.createSortFunction(a)},serialize:function(){return{root:this.root,property:this.property,direction:this.direction}}},1,0,0,0,0,0,[Ext.util,"Sorter"],0));(Ext.cmd.derive("Ext.util.Sortable",Ext.Base,{isSortable:true,defaultSortDirection:"ASC",statics:{createComparator:function(a){return a&&a.length?function(d,c){var b=a[0].sort(d,c),g=a.length,e=1;for(;e<g;e++){b=b||a[e].sort.call(this,d,c)}return b}:function(){return 0}}},initSortable:function(){var a=this,b=a.sorters;a.sorters=new Ext.util.AbstractMixedCollection(false,function(c){return c.id||c.property});if(b){a.sorters.addAll(a.decodeSorters(b))}},sort:function(g,e,b,d){var c=this,h,a;if(Ext.isArray(g)){d=b;b=e;a=g}else{if(Ext.isObject(g)){d=b;b=e;a=[g]}else{if(Ext.isString(g)){h=c.sorters.get(g);if(!h){h={property:g,direction:e};a=[h]}else{if(e===undefined){h.toggle()}else{h.setDirection(e)}}}}}if(a&&a.length){a=c.decodeSorters(a);if(Ext.isString(b)){if(b==="prepend"){c.sorters.insert(0,a)}else{c.sorters.addAll(a)}}else{c.sorters.clear();c.sorters.addAll(a)}}if(d!==false){c.fireEvent("beforesort",c,a);c.onBeforeSort(a);g=c.sorters.items;if(g.length){c.doSort(c.generateComparator())}}return g},generateComparator:function(){var a=this.sorters.getRange();return a.length?this.createComparator(a):this.emptyComparator},emptyComparator:function(){return 0},onBeforeSort:Ext.emptyFn,decodeSorters:function(g){if(!Ext.isArray(g)){if(g===undefined){g=[]}else{g=[g]}}var d=g.length,h=Ext.util.Sorter,a=this.model?this.model.prototype.fields:null,e,b,c;for(c=0;c<d;c++){b=g[c];if(!(b instanceof h)){if(Ext.isString(b)){b={property:b}}Ext.applyIf(b,{root:this.sortRoot,direction:"ASC"});if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}if(a&&!b.transform){e=a.get(b.property);b.transform=e&&e.sortType!==Ext.identityFn?e.sortType:undefined}g[c]=new Ext.util.Sorter(b)}}return g},getSorters:function(){return this.sorters.items},getFirstSorter:function(){var c=this.sorters.items,a=c.length,b=0,d;for(;b<a;++b){d=c[b];if(!d.isGrouper){return d}}return null}},0,0,0,0,0,0,[Ext.util,"Sortable"],function(){this.prototype.createComparator=this.createComparator}));(Ext.cmd.derive("Ext.util.MixedCollection",Ext.util.AbstractMixedCollection,{constructor:function(){var a=this;a.callParent(arguments);a.addEvents("sort");a.mixins.sortable.initSortable.call(a)},doSort:function(a){this.sortBy(a)},_sort:function(m,b,l){var k=this,e,g,d=String(b).toUpperCase()=="DESC"?-1:1,j=[],n=k.keys,h=k.items,a;l=l||function(o,c){return o-c};for(e=0,g=h.length;e<g;e++){j[j.length]={key:n[e],value:h[e],index:e}}Ext.Array.sort(j,function(o,c){return l(o[m],c[m])*d||(o.index<c.index?-1:1)});for(e=0,g=j.length;e<g;e++){a=j[e];h[e]=a.value;n[e]=a.key;k.indexMap[a.key]=e}k.generation++;k.indexGeneration=k.generation;k.fireEvent("sort",k)},sortBy:function(b){var j=this,a=j.items,h,g=j.keys,d,e=a.length,c;for(c=0;c<e;c++){a[c].$extCollectionIndex=c}Ext.Array.sort(a,function(l,k){return b(l,k)||(l.$extCollectionIndex<k.$extCollectionIndex?-1:1)});for(c=0;c<e;c++){h=a[c];d=j.getKey(h);g[c]=d;j.indexMap[d]=c;delete a.$extCollectionIndex}j.generation++;j.indexGeneration=j.generation;j.fireEvent("sort",j,a,g)},findInsertionIndex:function(e,d){var g=this,b=g.items,j=0,a=b.length-1,c,h;if(!d){d=g.generateComparator()}while(j<=a){c=(j+a)>>1;h=d(e,b[c]);if(h>=0){j=c+1}else{if(h<0){a=c-1}}}return j},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],j;h.suspendEvents();for(j in d){a[d[j]]=b[j]}for(c=0;c<g;c++){if(d[c]==undefined){e.push(b[c])}}for(c=0;c<g;c++){if(a[c]==undefined){a[c]=e.shift()}}h.clear();h.addAll(a);h.resumeEvents();h.fireEvent("sort",h)},sortByKey:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})}},1,0,0,0,0,[["sortable",Ext.util.Sortable]],[Ext.util,"MixedCollection"],0));(Ext.cmd.derive("Ext.fx.target.Target",Ext.Base,{isAnimTarget:true,constructor:function(a){this.target=a;this.id=this.getId()},getId:function(){return this.target.id}},1,0,0,0,0,0,[Ext.fx.target,"Target"],0));(Ext.cmd.derive("Ext.fx.target.Element",Ext.fx.target.Target,{type:"element",getElVal:function(b,a,c){if(c==undefined){if(a==="x"){c=b.getX()}else{if(a==="y"){c=b.getY()}else{if(a==="scrollTop"){c=b.getScroll().top}else{if(a==="scrollLeft"){c=b.getScroll().left}else{if(a==="height"){c=b.getHeight()}else{if(a==="width"){c=b.getWidth()}else{c=b.getStyle(a)}}}}}}}return c},getAttr:function(a,c){var b=this.target;return[[b,this.getElVal(b,a,c)]]},setAttr:function(k){var e=this.target,h=k.length,l,g,b,d,c,a;for(d=0;d<h;d++){l=k[d].attrs;for(g in l){if(l.hasOwnProperty(g)){a=l[g].length;for(c=0;c<a;c++){b=l[g][c];this.setElVal(b[0],g,b[1])}}}}},setElVal:function(b,a,c){if(a==="x"){b.setX(c)}else{if(a==="y"){b.setY(c)}else{if(a==="scrollTop"){b.scrollTo("top",c)}else{if(a==="scrollLeft"){b.scrollTo("left",c)}else{if(a==="width"){b.setWidth(c)}else{if(a==="height"){b.setHeight(c)}else{b.setStyle(a,c)}}}}}}}},0,0,0,0,0,0,[Ext.fx.target,"Element"],0));(Ext.cmd.derive("Ext.fx.target.ElementCSS",Ext.fx.target.Element,{setAttr:function(n,e){var q={attrs:[],duration:[],easing:[]},m=n.length,g,p,k,l,c,b,h,d,a;for(h=0;h<m;h++){p=n[h];c=p.duration;l=p.easing;p=p.attrs;for(k in p){if(Ext.Array.indexOf(q.attrs,k)==-1){q.attrs.push(k.replace(/[A-Z]/g,function(j){return"-"+j.toLowerCase()}));q.duration.push(c+"ms");q.easing.push(l)}}}g=q.attrs.join(",");c=q.duration.join(",");l=q.easing.join(", ");for(h=0;h<m;h++){p=n[h].attrs;for(k in p){a=p[k].length;for(d=0;d<a;d++){b=p[k][d];b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",e?"":g);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",e?"":c);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",e?"":l);b[0].setStyle(k,b[1]);if(e){b=b[0].dom.offsetWidth}else{b[0].on(Ext.supports.CSS3TransitionEnd,function(){this.setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",null)},b[0],{single:true})}}}}}},0,0,0,0,0,0,[Ext.fx.target,"ElementCSS"],0));(Ext.cmd.derive("Ext.fx.target.CompositeElement",Ext.fx.target.Element,{isComposite:true,constructor:function(a){a.id=a.id||Ext.id(null,"ext-composite-");this.callParent([a])},getAttr:function(a,j){var b=[],h=this.target,g=h.elements,e=g.length,c,d;for(c=0;c<e;c++){d=g[c];if(d){d=h.getElement(d);b.push([d,this.getElVal(d,a,j)])}}return b},setAttr:function(n){var l=this.target,m=n.length,b=l.elements,r=b.length,p,d,q,h,c,g,e,a;for(g=0;g<m;g++){q=n[g].attrs;for(h in q){if(q.hasOwnProperty(h)){a=q[h].length;for(e=0;e<a;e++){p=q[h][e][1];for(d=0;d<r;++d){el=b[d];if(el){el=l.getElement(el);this.setElVal(el,h,p)}}}}}}}},1,0,0,0,0,0,[Ext.fx.target,"CompositeElement"],0));(Ext.cmd.derive("Ext.fx.target.CompositeElementCSS",Ext.fx.target.CompositeElement,{setAttr:function(){return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this,arguments)}},0,0,0,0,0,0,[Ext.fx.target,"CompositeElementCSS"],0));(Ext.cmd.derive("Ext.fx.target.Sprite",Ext.fx.target.Target,{type:"draw",getFromPrim:function(b,a){var c;switch(a){case"rotate":case"rotation":c=b.attr.rotation;return{x:c.x||0,y:c.y||0,degrees:c.degrees||0};case"scale":case"scaling":c=b.attr.scaling;return{x:c.x||1,y:c.y||1,cx:c.cx||0,cy:c.cy||0};case"translate":case"translation":c=b.attr.translation;return{x:c.x||0,y:c.y||0};default:return b.attr[a]}},getAttr:function(a,b){return[[this.target,b!=undefined?b:this.getFromPrim(this.target,a)]]},setAttr:function(m){var g=m.length,k=[],b,e,p,r,q,o,n,d,c,l,h,a;for(d=0;d<g;d++){b=m[d].attrs;for(e in b){p=b[e];a=p.length;for(c=0;c<a;c++){q=p[c][0];r=p[c][1];if(e==="translate"||e==="translation"){n={x:r.x,y:r.y}}else{if(e==="rotate"||e==="rotation"){l=r.x;if(isNaN(l)){l=null}h=r.y;if(isNaN(h)){h=null}n={degrees:r.degrees,x:l,y:h}}else{if(e==="scale"||e==="scaling"){l=r.x;if(isNaN(l)){l=null}h=r.y;if(isNaN(h)){h=null}n={x:l,y:h,cx:r.cx,cy:r.cy}}else{if(e==="width"||e==="height"||e==="x"||e==="y"){n=parseFloat(r)}else{n=r}}}}o=Ext.Array.indexOf(k,q);if(o==-1){k.push([q,{}]);o=k.length-1}k[o][1][e]=n}}}g=k.length;for(d=0;d<g;d++){k[d][0].setAttributes(k[d][1])}this.target.redraw()}},0,0,0,0,0,0,[Ext.fx.target,"Sprite"],0));(Ext.cmd.derive("Ext.fx.target.CompositeSprite",Ext.fx.target.Sprite,{getAttr:function(a,h){var b=[],g=[].concat(this.target.items),e=g.length,d,c;for(d=0;d<e;d++){c=g[d];b.push([c,h!=undefined?h:this.getFromPrim(c,a)])}return b}},0,0,0,0,0,0,[Ext.fx.target,"CompositeSprite"],0));(Ext.cmd.derive("Ext.fx.target.Component",Ext.fx.target.Target,{type:"component",getPropMethod:{top:function(){return this.getPosition(true)[1]},left:function(){return this.getPosition(true)[0]},x:function(){return this.getPosition()[0]},y:function(){return this.getPosition()[1]},height:function(){return this.getHeight()},width:function(){return this.getWidth()},opacity:function(){return this.el.getStyle("opacity")}},setMethods:{top:"setPosition",left:"setPosition",x:"setPagePosition",y:"setPagePosition",height:"setSize",width:"setSize",opacity:"setOpacity"},getAttr:function(a,b){return[[this.target,b!==undefined?b:this.getPropMethod[a].call(this.target)]]},setAttr:function(s,g,b){var q=this,p=s.length,v,n,c,k,e,m,d,r,u,l,a={},t;for(k=0;k<p;k++){v=s[k].attrs;for(n in v){m=v[n].length;for(e=0;e<m;e++){c=v[n][e];t=a[q.setMethods[n]]||(a[q.setMethods[n]]={});t.target=c[0];t[n]=c[1]}}if(a.setPosition){c=a.setPosition;d=(c.left===undefined)?undefined:parseFloat(c.left);r=(c.top===undefined)?undefined:parseFloat(c.top);c.target.setPosition(d,r)}if(a.setPagePosition){c=a.setPagePosition;c.target.setPagePosition(c.x,c.y)}if(a.setSize){c=a.setSize;u=(c.width===undefined)?c.target.getWidth():parseFloat(c.width);l=(c.height===undefined)?c.target.getHeight():parseFloat(c.height);c.target.el.setSize(u,l);if(b||q.dynamic){Ext.globalEvents.on({idle:Ext.Function.bind(c.target.setSize,c.target,[u,l]),single:true})}}if(a.setOpacity){c=a.setOpacity;c.target.el.setStyle("opacity",c.opacity)}}}},0,0,0,0,0,0,[Ext.fx.target,"Component"],0));(Ext.cmd.derive("Ext.fx.Queue",Ext.Base,{constructor:function(){this.targets=new Ext.util.HashMap();this.fxQueue={}},getFxDefaults:function(a){var b=this.targets.get(a);if(b){return b.fxDefaults}return{}},setFxDefaults:function(a,c){var b=this.targets.get(a);if(b){b.fxDefaults=Ext.apply(b.fxDefaults||{},c)}},stopAnimation:function(b){var d=this,a=d.getFxQueue(b),c=a.length;while(c){a[c-1].end();c--}},getActiveAnimation:function(b){var a=this.getFxQueue(b);return(a&&!!a.length)?a[0]:false},hasFxBlock:function(b){var a=this.getFxQueue(b);return a&&a[0]&&a[0].block},getFxQueue:function(b){if(!b){return false}var c=this,a=c.fxQueue[b],d=c.targets.get(b);if(!d){return false}if(!a){c.fxQueue[b]=[];if(d.type!="element"){d.target.on("destroy",function(){c.fxQueue[b]=[]})}}return c.fxQueue[b]},queueFx:function(d){var c=this,e=d.target,a,b;if(!e){return}a=c.getFxQueue(e.getId());b=a.length;if(b){if(d.concurrent){d.paused=false}else{a[b-1].on("afteranimate",function(){d.paused=false})}}else{d.paused=false}d.on("afteranimate",function(){Ext.Array.remove(a,d);if(a.length===0){c.targets.remove(d.target)}if(d.remove){if(e.type=="element"){var g=Ext.get(e.id);if(g){g.remove()}}}},c,{single:true});a.push(d)}},1,0,0,0,0,0,[Ext.fx,"Queue"],0));(Ext.cmd.derive("Ext.fx.Manager",Ext.Base,{singleton:true,constructor:function(){var a=this;a.items=new Ext.util.MixedCollection();a.mixins.queue.constructor.call(a);a.taskRunner=new Ext.util.TaskRunner()},interval:16,forceJS:true,createTarget:function(d){var b=this,c=!b.forceJS&&Ext.supports.Transitions,a;b.useCSS3=c;if(d){if(d.tagName||Ext.isString(d)||d.isFly){d=Ext.get(d);a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.dom){a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.isComposite){a=new Ext.fx.target["CompositeElement"+(c?"CSS":"")](d)}else{if(d.isSprite){a=new Ext.fx.target.Sprite(d)}else{if(d.isCompositeSprite){a=new Ext.fx.target.CompositeSprite(d)}else{if(d.isComponent){a=new Ext.fx.target.Component(d)}else{if(d.isAnimTarget){return d}else{return null}}}}}}}b.targets.add(a);return a}else{return null}},addAnim:function(d){var c=this,b=c.items,a=c.task;b.add(d.id,d);if(!a&&b.length){a=c.task={run:c.runner,interval:c.interval,scope:c};c.taskRunner.start(a)}},removeAnim:function(d){var c=this,b=c.items,a=c.task;b.removeAtKey(d.id);if(a&&!b.length){c.taskRunner.stop(a);delete c.task}},runner:function(){var d=this,b=d.items.getRange(),c=0,a=b.length,e;d.targetArr={};d.timestamp=new Date();for(;c<a;c++){e=b[c];if(e.isReady()){d.startAnim(e)}}for(c=0;c<a;c++){e=b[c];if(e.isRunning()){d.runAnim(e)}}d.applyPendingAttrs()},startAnim:function(a){a.start(this.timestamp)},runAnim:function(d){if(!d){return}var c=this,g=c.useCSS3&&d.target.type=="element",a=c.timestamp-d.startTime,b=(a>=d.duration),e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}},1,0,0,0,0,[["queue",Ext.fx.Queue]],[Ext.fx,"Manager"],0));(Ext.cmd.derive("Ext.fx.Animator",Ext.Base,{isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,l=[],j=h.to||{},b=h.duration,m,a,c,g,k,e;for(k in d){if(d.hasOwnProperty(k)&&h.animKeyFramesRE.test(k)){e={attrs:Ext.apply(d[k],j)};if(k=="from"){k=0}else{if(k=="to"){k=100}}e.pct=parseInt(k,10);l.push(e)}}Ext.Array.sort(l,h.sorter);g=l.length;for(c=0;c<g;c++){m=(l[c-1])?b*(l[c-1].pct/100):0;a=b*(l[c].pct/100);h.timeline.push({duration:a-m,attrs:l[c].attrs})}},applyAnimator:function(d){var h=this,j=[],l=h.timeline,g=l.length,b,e,a,k,c;if(h.fireEvent("beforeanimate",h)!==false){for(c=0;c<g;c++){b=l[c];k=b.attrs;e=k.easing||h.easing;a=k.damper||h.damper;delete k.easing;delete k.damper;b=new Ext.fx.Anim({target:d,easing:e,damper:a,duration:b.duration,paused:true,to:k});j.push(b)}h.animations=j;h.target=b.target;for(c=0;c<g-1;c++){b=j[c];b.nextAnim=j[c+1];b.on("afteranimate",function(){this.nextAnim.paused=false});b.on("afteranimate",function(){this.fireEvent("keyframe",this,++this.keyframeStep)},h)}j[g-1].on("afteranimate",function(){this.lastFrame()},h)}},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;e.running=true;e.animations[e.keyframeStep].paused=false}},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){c.startTime=new Date();c.currentIteration=b;c.keyframeStep=0;c.applyAnimator(c.target);c.animations[c.keyframeStep].paused=false}else{c.currentIteration=0;c.end()}},end:function(){var a=this;a.fireEvent("afteranimate",a,a.startTime,new Date()-a.startTime)},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Animator"],0));(Ext.cmd.derive("Ext.fx.CubicBezier",Ext.Base,{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,j){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(r){return((a*r+m)*r+k)*r}function c(r,u){var s=e(r,u);return((q*s+l)*s+h)*s}function e(r,z){var y,w,u,s,v,t;for(u=r,t=0;t<8;t++){s=g(u)-r;if(Math.abs(s)<z){return u}v=(3*a*u+2*m)*u+k;if(Math.abs(v)<0.000001){break}u=u-s/v}y=0;w=1;u=r;if(u<y){return y}if(u>w){return w}while(y<w){s=g(u);if(Math.abs(s-r)<z){return u}if(r>s){y=u}else{w=u}u=(w-y)/2+y}return u}return c(p,1/(200*j))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}},0,0,0,0,0,0,[Ext.fx,"CubicBezier"],0));Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var j=0.07813-m/2,o=-0.25,p=g(0.0066+j*j),s=p-j,l=d(a(s),1/3)*(s<0?-1:1),r=-p-j,k=d(a(r),1/3)*(r<0?-1:1),u=l+k+0.25;return d(1-u,2)*3*u*0.1+(1-u)*3*u*u+u*u*u},easeIn:function(j){return d(j,1.7)},easeOut:function(j){return d(j,0.48)},easeInOut:function(s){var m=0.48-s/1.04,l=g(0.1734+m*m),j=l-m,r=d(a(j),1/3)*(j<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=r+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(j){return j*j*((c+1)*j-c)},backOut:function(j){j=j-1;return j*j*((c+1)*j+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,j=k/4;return d(2,-10*l)*b((l-j)*(2*h)/k)+1},elasticOut:function(j){return 1-Ext.fx.Easing.elasticIn(1-j)},bounceIn:function(j){return 1-Ext.fx.Easing.bounceOut(1-j)},bounceOut:function(o){var k=7.5625,m=2.75,j;if(o<(1/m)){j=k*o*o}else{if(o<(2/m)){o-=(1.5/m);j=k*o*o+0.75}else{if(o<(2.5/m)){o-=(2.25/m);j=k*o*o+0.9375}else{o-=(2.625/m);j=k*o*o+0.984375}}}return j}},function(){var k=Ext.fx.Easing.self,j=k.prototype;k.implement({"back-in":j.backIn,"back-out":j.backOut,"ease-in":j.easeIn,"ease-out":j.easeOut,"elastic-in":j.elasticIn,"elastic-out":j.elasticOut,"bounce-in":j.bounceIn,"bounce-out":j.bounceOut,"ease-in-out":j.easeInOut})})});(Ext.cmd.derive("Ext.draw.Color",Ext.Base,{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,j=k.g/255,m=k.b/255,n=Math.max(a,j,m),d=Math.min(a,j,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=(c<0.5)?o/(n+d):o/(2-n-d);if(a==n){e=60*(j-m)/o}else{if(j==n){e=120+60*(m-a)/o}else{e=240+60*(a-j)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(j){var c,e,d,a,h=parseInt;if((j.length==4||j.length==7)&&j.substr(0,1)==="#"){c=j.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(j.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=j.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,o,d){var a,b,c,e,k=[],n=Math.abs,j=Math.floor;if(o==0||g==null){k=[d,d,d]}else{g/=60;a=o*(1-n(2*d-1));b=a*(1-n(g-2*j(g/2)-1));c=d-a/2;switch(j(g)){case 0:k=[a,b,0];break;case 1:k=[b,a,0];break;case 2:k=[0,a,b];break;case 3:k=[0,b,a];break;case 4:k=[b,0,a];break;case 5:k=[a,0,b];break}k=[k[0]+c,k[1]+c,k[2]+c]}return new Ext.draw.Color(k[0]*255,k[1]*255,k[2]*255)}},3,0,0,0,0,0,[Ext.draw,"Color"],function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})}));(Ext.cmd.derive("Ext.draw.Draw",Ext.Base,{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var j=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&j.push(+l)});if(h=="m"&&j.length>2){c.push([e].concat(Ext.Array.splice(j,0,2)));h="l";e=(e=="m")?"l":"L"}while(j.length>=d[h]){c.push([e].concat(Ext.Array.splice(j,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c<k;c++){b=l[c];for(a=1,d=b.length;a<d-1;a+=2){h=g.x(b[a],b[a+1]);e=g.y(b[a],b[a+1]);b[a]=h;b[a+1]=e}}return l},pathClone:function(g){var c=[],a,e,b,d;if(!this.is(g,"array")||!this.is(g&&g[0],"array")){g=this.parsePathString(g)}for(b=0,d=g.length;b<d;b++){c[b]=[];for(a=0,e=g[b].length;a<e;a++){c[b][a]=g[b][a]}}c.toString=this.path2string;return c},pathToAbsolute:function(c){if(!this.is(c,"array")||!this.is(c&&c[0],"array")){c=this.parsePathString(c)}var k=[],m=0,l=0,o=0,n=0,g=0,h=c.length,b,d,e,a;if(h&&c[0][0]=="M"){m=+c[0][1];l=+c[0][2];o=m;n=l;g++;k[0]=["M",m,l]}for(;g<h;g++){b=k[g]=[];d=c[g];if(d[0]!=d[0].toUpperCase()){b[0]=d[0].toUpperCase();switch(b[0]){case"A":b[1]=d[1];b[2]=d[2];b[3]=d[3];b[4]=d[4];b[5]=d[5];b[6]=+(d[6]+m);b[7]=+(d[7]+l);break;case"V":b[1]=+d[1]+l;break;case"H":b[1]=+d[1]+m;break;case"M":o=+d[1]+m;n=+d[2]+l;default:e=1;a=d.length;for(;e<a;e++){b[e]=+d[e]+((e%2)?m:l)}}}else{e=0;a=d.length;for(;e<a;e++){k[g][e]=d[e]}}switch(b[0]){case"Z":m=o;l=n;break;case"H":m=b[1];break;case"V":l=b[1];break;case"M":d=k[g];a=d.length;o=d[a-2];n=d[a-1];default:d=k[g];a=d.length;m=d[a-2];l=d[a-1]}}k.toString=this.path2string;return k},pathToRelative:function(d){if(!this.is(d,"array")||!this.is(d&&d[0],"array")){d=this.parsePathString(d)}var n=[],p=0,o=0,t=0,s=0,c=0,a,q,h,g,e,m,u,l,b;if(d[0][0]=="M"){p=d[0][1];o=d[0][2];t=p;s=o;c++;n.push(["M",p,o])}for(h=c,u=d.length;h<u;h++){a=n[h]=[];q=d[h];if(q[0]!=q[0].toLowerCase()){a[0]=q[0].toLowerCase();switch(a[0]){case"a":a[1]=q[1];a[2]=q[2];a[3]=q[3];a[4]=q[4];a[5]=q[5];a[6]=+(q[6]-p).toFixed(3);a[7]=+(q[7]-o).toFixed(3);break;case"v":a[1]=+(q[1]-o).toFixed(3);break;case"m":t=q[1];s=q[2];default:for(g=1,l=q.length;g<l;g++){a[g]=+(q[g]-((g%2)?p:o)).toFixed(3)}}}else{a=n[h]=[];if(q[0]=="m"){t=q[1]+p;s=q[2]+o}for(e=0,b=q.length;e<b;e++){n[h][e]=q[e]}}m=n[h].length;switch(n[h][0]){case"z":p=t;o=s;break;case"h":p+=+n[h][m-1];break;case"v":o+=+n[h][m-1];break;default:p+=+n[h][m-2];o+=+n[h][m-1]}}n.toString=this.path2string;return n},path2curve:function(k){var d=this,h=d.pathToAbsolute(k),c=h.length,j={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b,a,g,e;for(b=0;b<c;b++){h[b]=d.command2curve(h[b],j);if(h[b].length>7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;j.x=a[g-2];j.y=a[g-1];j.bx=parseFloat(a[g-4])||j.x;j.by=parseFloat(a[g-3])||j.y}return h},interpolatePaths:function(r,l){var j=this,d=j.pathToAbsolute(r),m=j.pathToAbsolute(l),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,s){if(p[s].length>7){p[s].shift();var t=p[s];while(t.length){Ext.Array.splice(p,s++,0,["C"].concat(Ext.Array.splice(t,0,6)))}Ext.Array.erase(p,s,1);o=Math.max(d.length,m.length||0)}},c=function(v,u,s,p,t){if(v&&u&&v[t][0]=="M"&&u[t][0]!="M"){Ext.Array.splice(u,t,0,["M",p.x,p.y]);s.bx=0;s.by=0;s.x=v[t][1];s.y=v[t][2];o=Math.max(d.length,m.length||0)}},h,o,g,q,e,k;for(h=0,o=Math.max(d.length,m.length||0);h<o;h++){d[h]=j.command2curve(d[h],n);b(d,h);(m[h]=j.command2curve(m[h],a));b(m,h);c(d,m,n,a,h);c(m,d,a,n,h);g=d[h];q=m[h];e=g.length;k=q.length;n.x=g[e-2];n.y=g[e-1];n.bx=parseFloat(g[e-4])||n.x;n.by=parseFloat(g[e-3])||n.y;a.bx=(parseFloat(q[k-4])||a.x);a.by=(parseFloat(q[k-3])||a.y);a.x=q[k-2];a.y=q[k-1]}return[d,m]},command2curve:function(c,b){var a=this;if(!c){return["C",b.x,b.y,b.x,b.y,b.x,b.y]}if(c[0]!="T"&&c[0]!="Q"){b.qx=b.qy=null}switch(c[0]){case"M":b.X=c[1];b.Y=c[2];break;case"A":c=["C"].concat(a.arc2curve.apply(a,[b.x,b.y].concat(c.slice(1))));break;case"S":c=["C",b.x+(b.x-(b.bx||b.x)),b.y+(b.y-(b.by||b.y))].concat(c.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));c=["C"].concat(a.quadratic2curve(b.x,b.y,b.qx,b.qy,c[1],c[2]));break;case"Q":b.qx=c[1];b.qy=c[2];c=["C"].concat(a.quadratic2curve(b.x,b.y,c[1],c[2],c[3],c[4]));break;case"L":c=["C"].concat(b.x,b.y,c[1],c[2],c[1],c[2]);break;case"H":c=["C"].concat(b.x,b.y,c[1],b.y,c[1],b.y);break;case"V":c=["C"].concat(b.x,b.y,b.x,c[1],b.x,c[1]);break;case"Z":c=["C"].concat(b.x,b.y,b.X,b.Y,b.X,b.Y);break}return c},quadratic2curve:function(b,d,h,e,a,c){var g=1/3,j=2/3;return[g*b+j*h,g*d+j*e,g*a+j*h,g*c+j*e,a,c]},rotate:function(b,h,a){var d=Math.cos(a),c=Math.sin(a),g=b*d-h*c,e=b*c+h*d;return{x:g,y:e}},arc2curve:function(s,af,H,F,z,n,g,r,ae,A){var v=this,d=Math.PI,w=v.radian,E=d*120/180,b=w*(+z||0),M=[],J=Math,T=J.cos,a=J.sin,V=J.sqrt,u=J.abs,o=J.asin,I,O,N,aa,c,R,U,C,B,m,l,q,j,ad,e,ac,P,S,Q,ab,Z,Y,W,L,X,K,D,G,p;if(!A){I=v.rotate(s,af,-b);s=I.x;af=I.y;I=v.rotate(r,ae,-b);r=I.x;ae=I.y;O=(s-r)/2;N=(af-ae)/2;aa=(O*O)/(H*H)+(N*N)/(F*F);if(aa>1){aa=V(aa);H=aa*H;F=aa*F}c=H*H;R=F*F;U=(n==g?-1:1)*V(u((c*R-c*N*N-R*O*O)/(c*N*N+R*O*O)));C=U*H*N/F+(s+r)/2;B=U*-F*O/H+(af+ae)/2;m=o(((af-B)/F).toFixed(7));l=o(((ae-B)/F).toFixed(7));m=s<C?d-m:m;l=r<C?d-l:l;if(m<0){m=d*2+m}if(l<0){l=d*2+l}if(g&&m>l){m=m-d*2}if(!g&&l>m){l=l-d*2}}else{m=A[0];l=A[1];C=A[2];B=A[3]}q=l-m;if(u(q)>E){D=l;G=r;p=ae;l=m+E*(g&&l>m?1:-1);r=C+H*T(l);ae=B+F*a(l);M=v.arc2curve(r,ae,H,F,z,0,g,G,p,[l,D,C,B])}q=l-m;j=T(m);ad=a(m);e=T(l);ac=a(l);P=J.tan(q/4);S=4/3*H*P;Q=4/3*F*P;ab=[s,af];Z=[s+S*ad,af-Q*j];Y=[r+S*ac,ae-Q*e];W=[r,ae];Z[0]=2*ab[0]-Z[0];Z[1]=2*ab[1]-Z[1];if(A){return[Z,Y,W].concat(M)}else{M=[Z,Y,W].concat(M).join().split(",");L=[];K=M.length;for(X=0;X<K;X++){L[X]=X%2?v.rotate(M[X-1],M[X],b).y:v.rotate(M[X],M[X+1],b).x}return L}},rotateAndTranslatePath:function(k){var c=k.rotation.degrees,d=k.rotation.x,b=k.rotation.y,o=k.translation.x,l=k.translation.y,n,g,a,m,e,h=[];if(!c&&!o&&!l){return this.pathToAbsolute(k.attr.path)}o=o||0;l=l||0;n=this.pathToAbsolute(k.attr.path);for(g=n.length;g--;){a=h[g]=n[g].slice();if(a[0]=="A"){m=this.rotatePoint(a[6],a[7],c,d,b);a[6]=m.x+o;a[7]=m.y+l}else{e=1;while(a[e+1]!=null){m=this.rotatePoint(a[e],a[e+1],c,d,b);a[e]=m.x+o;a[e+1]=m.y+l;e+=2}}}return h},rotatePoint:function(b,h,e,a,g){if(!e){return{x:b,y:h}}a=a||0;g=g||0;b=b-a;h=h-g;e=e*this.radian;var d=Math.cos(e),c=Math.sin(e);return{x:b*d-h*c+a,y:b*c+h*d+g}},pathDimensions:function(o){if(!o||!(o+"")){return{x:0,y:0,width:0,height:0}}o=this.path2curve(o);var m=0,l=0,e=[],b=[],h=0,k=o.length,c,a,n,g,d,j;for(;h<k;h++){c=o[h];if(c[0]=="M"){m=c[1];l=c[2];e.push(m);b.push(l)}else{j=this.curveDim(m,l,c[1],c[2],c[3],c[4],c[5],c[6]);e=e.concat(j.min.x,j.max.x);b=b.concat(j.min.y,j.max.y);m=c[5];l=c[6]}}a=Math.min.apply(0,e);n=Math.min.apply(0,b);g=Math.max.apply(0,e);d=Math.max.apply(0,b);return{x:Math.round(a),y:Math.round(n),path:o,width:Math.round(g-a),height:Math.round(d-n)}},intersectInside:function(b,c,a){return(a[0]-c[0])*(b[1]-c[1])>(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],j=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*j-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*j-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k<m;++k){g=c[k];b=p;p=[];q=b[b.length-1];d=0;a=b.length;for(;d<a;d++){l=b[d];if(n.intersectInside(l,h,g)){if(!n.intersectInside(q,h,g)){p.push(n.intersectIntersection(q,l,h,g))}p.push(l)}else{if(n.intersectInside(q,h,g)){p.push(n.intersectIntersection(q,l,h,g))}}q=l}h=g}return p},bezier:function(h,g,n,m,e){if(e===0){return h}else{if(e===1){return m}}var k=1-e,j=k*k*k,l=e/k;return j*(h+l*(3*g+l*(3*n+m*l)))},bezierDim:function(t,q,n,m){var v=[],g,j,p,h,u,e,w,k,o,l;if(t+3*n==m+3*q){g=t-q;g/=2*(t-q-q+n);if(g<1&&g>0){v.push(g)}}else{j=t-3*q+3*n-m;p=2*(t-q-q+n);h=t-q;u=p*p-4*j*h;e=j+j;if(u===0){g=p/e;if(g<1&&g>0){v.push(g)}}else{if(u>0){w=Math.sqrt(u);g=(w+p)/e;if(g<1&&g>0){v.push(g)}g=(p-w)/e;if(g<1&&g>0){v.push(g)}}}}k=Math.min(t,m);o=Math.max(t,m);for(l=0;l<v.length;l++){k=Math.min(k,this.bezier(t,q,n,m,v[l]));o=Math.max(o,this.bezier(t,q,n,m,v[l]))}return[k,o]},curveDim:function(b,a,d,c,l,k,h,e){var j=this.bezierDim(b,d,l,h),g=this.bezierDim(a,c,k,e);return{min:{x:j[0],y:g[0]},max:{x:j[1],y:g[1]}}},getAnchors:function(e,d,l,k,w,v,r){r=r||4;var j=Math,q=j.PI,s=q/2,n=j.abs,a=j.sin,b=j.cos,g=j.atan,u,t,h,m,p,o,y,x,c;u=(l-e)/r;t=(w-l)/r;if((k>=d&&k>=v)||(k<=d&&k<=v)){h=m=s}else{h=g((l-e)/n(k-d));if(d<k){h=q-h}m=g((w-l)/n(k-v));if(v<k){m=q-m}}c=s-((h+m)%(q*2))/2;if(c>s){c-=q}h+=c;m+=c;p=l-u*a(h);o=k+u*b(h);y=l+t*a(m);x=k+t*b(m);if((k>d&&o<d)||(k<d&&o>d)){p+=n(d-o)*(p-l)/(o-k);o=d}if((k>v&&x<v)||(k<v&&x>v)){y-=n(v-x)*(y-l)/(x-k);x=v}return{x1:p,y1:o,x2:y,y2:x}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,s,t=1,h=o.length,d=1,l=g,k=e,w,v,u,m,r,n,b;for(;t<h;t++){w=o[t];v=w.length;u=o[t-1];m=u.length;r=o[t+1];n=r&&r.length;if(w[0]=="M"){l=w[1];k=w[2];q=t+1;while(o[q][0]!="C"){q++}c.push(["M",l,k]);d=c.length;g=l;e=k;continue}if(w[v-2]==l&&w[v-1]==k&&(!r||r[0]=="M")){b=c[d].length;s=this.getAnchors(u[m-2],u[m-1],l,k,c[d][b-2],c[d][b-1],p);c[d][1]=s.x2;c[d][2]=s.y2}else{if(!r||r[0]=="M"){s={x1:w[v-2],y1:w[v-1]}}else{s=this.getAnchors(u[m-2],u[m-1],w[v-2],w[v-1],r[n-2],r[n-1],p)}}c.push(["C",g,e,s.x1,s.y1,w[v-2],w[v-1]]);g=s.x2;e=s.y2}return c},findDotAtSegment:function(b,a,d,c,k,j,h,g,l){var e=1-l;return{x:Math.pow(e,3)*b+Math.pow(e,2)*3*l*d+e*3*l*l*k+Math.pow(l,3)*h,y:Math.pow(e,3)*a+Math.pow(e,2)*3*l*c+e*3*l*l*j+Math.pow(l,3)*g}},snapEnds:function(o,c,k,u){if(Ext.isDate(o)){return this.snapEndsByDate(o,c,k)}var e=(c-o)/k,b=Math.floor(Math.log(e)/Math.LN10)+1,n=Math.pow(10,b),d,q,r=Math.round((e%n)*Math.pow(10,2-b)),s=[[0,15],[10,1],[20,4],[25,2],[50,9],[100,15]],a=0,l,j,p,h,t=1000000000,g=s.length;q=Math.floor(o/n)*n;if(o==q&&q>0){q=Math.floor((o-(n/10))/n)*n}if(u){for(p=0;p<g;p++){l=s[p][0];j=(l-r)<0?1000000:(l-r)/s[p][1];if(j<t){h=l;t=j}}e=Math.floor(e*Math.pow(10,-b))*Math.pow(10,b)+h*Math.pow(10,b-2);if(o<0&&c>=0){d=0;while(d>o){d-=e;a++}o=+d.toFixed(10);d=0;while(d<c){d+=e;a++}c=+d.toFixed(10)}else{d=o=q;while(d<c){d+=e;a++}}c=+d.toFixed(10)}else{o=q;a=k}return{from:o,to:c,power:b,step:e,steps:a}},snapEndsByDate:function(l,m,b,n){var e=false,h=[[Ext.Date.MILLI,[1,2,5,10,20,50,100,200,250,500]],[Ext.Date.SECOND,[1,2,5,10,15,30]],[Ext.Date.MINUTE,[1,2,5,10,15,30]],[Ext.Date.HOUR,[1,2,3,4,6,12]],[Ext.Date.DAY,[1,2,7,14]],[Ext.Date.MONTH,[1,2,3,6]]],g=h.length,k=false,c,d,a,o;for(o=0;o<g;o++){c=h[o];if(!k){for(d=0;d<c[1].length;d++){if(m<Ext.Date.add(l,c[0],c[1][d]*b)){e=[c[0],c[1][d]];k=true;break}}}}if(!e){a=this.snapEnds(l.getFullYear(),m.getFullYear()+1,b,n);e=[Date.YEAR,Math.round(a.step)]}return this.snapEndsByDateAndStep(l,m,e,n)},snapEndsByDateAndStep:function(m,n,a,p){var o=[m.getFullYear(),m.getMonth(),m.getDate(),m.getHours(),m.getMinutes(),m.getSeconds(),m.getMilliseconds()],l,c,q,b,j,e,k,d,h=a[0],g=a[1];if(p){c=m}else{switch(h){case Ext.Date.MILLI:c=new Date(o[0],o[1],o[2],o[3],o[4],o[5],Math.floor(o[6]/g)*g);break;case Ext.Date.SECOND:c=new Date(o[0],o[1],o[2],o[3],o[4],Math.floor(o[5]/g)*g,0);break;case Ext.Date.MINUTE:c=new Date(o[0],o[1],o[2],o[3],Math.floor(o[4]/g)*g,0,0);break;case Ext.Date.HOUR:c=new Date(o[0],o[1],o[2],Math.floor(o[3]/g)*g,0,0,0);break;case Ext.Date.DAY:c=new Date(o[0],o[1],Math.floor((o[2]-1)/g)*g+1,0,0,0,0);break;case Ext.Date.MONTH:c=new Date(o[0],Math.floor(o[1]/g)*g,1,0,0,0,0);break;default:c=new Date(Math.floor(o[0]/g)*g,0,1,0,0,0,0);break}}d=((h===Ext.Date.MONTH)&&(g==1/2||g==1/3||g==1/4));l=(d?[]:0);q=new Date(c);while(q<n){if(d){b=new Date(q);j=b.getFullYear();e=b.getMonth();k=b.getDate();switch(g){case 1/2:if(k>=15){k=1;if(++e>11){j++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){j++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){j++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(j);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,j=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*j),Math.sin(c*j)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}},0,0,0,0,0,0,[Ext.draw,"Draw"],0));(Ext.cmd.derive("Ext.fx.PropertyHandler",Ext.Base,{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,j){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(j)&&!e&&this.pixelDefaultsRE.test(j)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){if(n){h=n[e][1].from}if(Ext.isArray(o[e][1])&&Ext.isArray(b)){l=[];c=0;g=o[e][1].length;for(;c<g;c++){l.push(this.computeDelta(o[e][1][c],b[c],a,h,k))}d.push([o[e][0],l])}else{d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];if(Ext.isArray(a)){k=[];b=0;e=a.length;for(;b<e;b++){k.push(a[b].from+a[b].delta*g+(a[b].units||0))}c.push([l[d][0],k])}else{c.push([l[d][0],a.from+a.delta*g+(a.units||0)])}}return c}},stringHandler:{computeDelta:function(e,b,d,c,a){return{from:e,delta:b}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];c.push([l[d][0],a.delta])}return c}},color:{rgbRE:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,hexRE:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,hex3RE:/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,parseColor:function(e,a){a=(typeof a=="number")?a:1;var g=false,c=[this.hexRE,this.rgbRE,this.hex3RE],d=c.length,j,b,k,h;for(h=0;h<d;h++){k=c[h];b=(h%2===0)?16:10;j=k.exec(e);if(j&&j.length===4){if(h===2){j[1]+=j[1];j[2]+=j[2];j[3]+=j[3]}g={red:parseInt(j[1],b),green:parseInt(j[2],b),blue:parseInt(j[3],b)};break}}return g||e},computeDelta:function(h,a,e,c){h=this.parseColor(h);a=this.parseColor(a,e);var g=c?c:h,b=typeof g,d=typeof a;if(b=="string"||b=="undefined"||d=="string"||d=="undefined"){return a||g}return{from:h,delta:{red:Math.round((a.red-g.red)*e),green:Math.round((a.green-g.green)*e),blue:Math.round((a.blue-g.blue)*e)}}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(k,e){var g=k.length,c=[],d,b,a,h,j;for(d=0;d<g;d++){b=k[d][1];if(b){h=b.from;j=b.delta;b=(typeof b=="object"&&"red" in b)?"rgb("+b.red+", "+b.green+", "+b.blue+")":b;b=(typeof b=="object"&&b.length)?b[0]:b;if(typeof b=="undefined"){return[]}a=typeof b=="string"?b:"rgb("+[(h.red+Math.round(j.red*e))%256,(h.green+Math.round(j.green*e))%256,(h.blue+Math.round(j.blue*e))%256].join(",")+")";c.push([k[d][0],a])}}return c}},object:{interpolate:function(d,b){b=(typeof b=="number")?b:1;var a={},c;for(c in d){a[c]=parseFloat(d[c])*b}return a},computeDelta:function(h,a,c,b){h=this.interpolate(h);a=this.interpolate(a,c);var g=b?b:h,e={},d;for(d in a){e[d]=a[d]-g[d]}return{from:h,delta:e}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(l,g){var h=l.length,c=[],e={},d,j,k,b,a;for(d=0;d<h;d++){b=l[d][1];j=b.from;k=b.delta;for(a in j){e[a]=j[a]+k[a]*g}c.push([l[d][0],e])}return c}},path:{computeDelta:function(e,a,c,b){c=(typeof c=="number")?c:1;var d;e=+e||0;a=+a||0;d=(b!=null)?b:e;return{from:e,delta:(a-d)*c}},forcePath:function(a){if(!Ext.isArray(a)&&!Ext.isArray(a[0])){a=Ext.draw.Draw.parsePathString(a)}return a},get:function(b,l,a,q){var c=this.forcePath(l),n=[],s=b.length,d,h,o,g,p,m,e,t,r;for(o=0;o<s;o++){r=this.forcePath(b[o][1]);g=Ext.draw.Draw.interpolatePaths(r,c);r=g[0];c=g[1];d=r.length;t=[];for(m=0;m<d;m++){g=[r[m][0]];h=r[m].length;for(e=1;e<h;e++){p=q&&q[0][1][m][e].from;g.push(this.computeDelta(r[m][e],c[m][e],a,p))}t.push(g)}n.push([b[o][0],t])}return n},set:function(p,n){var o=p.length,e=[],h,g,d,l,m,c,a,b;for(h=0;h<o;h++){c=p[h][1];l=[];a=c.length;for(g=0;g<a;g++){m=[c[g][0]];b=c[g].length;for(d=1;d<b;d++){m.push(c[g][d].from+c[g][d].delta*n)}l.push(m.join(","))}e.push([p[h][0],l.join(",")])}return e}}}},0,0,0,0,0,0,[Ext.fx,"PropertyHandler"],function(){var b=["outlineColor","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","fill","stroke"],c=b.length,a=0,d;for(;a<c;a++){d=b[a];this[d]=this.color}b=["cursor"];c=b.length;a=0;for(;a<c;a++){d=b[a];this[d]=this.stringHandler}}));(Ext.cmd.derive("Ext.fx.Anim",Ext.Base,{isAnimation:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",damper:1,bezierRE:/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,reverse:false,running:false,paused:false,iterations:1,alternate:false,currentIteration:0,startTime:0,frameCount:0,constructor:function(a){var b=this,c;a=a||{};if(a.keyframes){return new Ext.fx.Animator(a)}Ext.apply(b,a);if(b.from===undefined){b.from={}}b.propHandlers={};b.config=a;b.target=Ext.fx.Manager.createTarget(b.target);b.easingFn=Ext.fx.Easing[b.easing];b.target.dynamic=b.dynamic;if(!b.easingFn){b.easingFn=String(b.easing).match(b.bezierRE);if(b.easingFn&&b.easingFn.length==5){c=b.easingFn;b.easingFn=Ext.fx.CubicBezier.cubicBezier(+c[1],+c[2],+c[3],+c[4])}}b.id=Ext.id(null,"ext-anim-");b.addEvents("beforeanimate","afteranimate","lastframe");b.mixins.observable.constructor.call(b);Ext.fx.Manager.addAnim(b)},setAttr:function(a,b){return Ext.fx.Manager.items.get(this.id).setAttr(this.target,a,b)},initAttrs:function(){var e=this,h=e.from,j=e.to,g=e.initialFrom||{},c={},a,b,k,d;for(d in j){if(j.hasOwnProperty(d)){a=e.target.getAttr(d,h[d]);b=j[d];if(!Ext.fx.PropertyHandler[d]){if(Ext.isObject(b)){k=e.propHandlers[d]=Ext.fx.PropertyHandler.object}else{k=e.propHandlers[d]=Ext.fx.PropertyHandler.defaultHandler}}else{k=e.propHandlers[d]=Ext.fx.PropertyHandler[d]}c[d]=k.get(a,b,e.damper,g[d],d)}}e.currentAttrs=c},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;if(!e.paused&&!e.currentAttrs){e.initAttrs()}e.running=true;e.frameCount=0}},runAnim:function(m){var j=this,l=j.currentAttrs,d=j.duration,c=j.easingFn,b=j.propHandlers,g={},h,k,e,a;if(m>=d){m=d;a=true}if(j.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}j.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){if(c.alternate){c.reverse=!c.reverse}c.startTime=new Date();c.currentIteration=b;c.paused=false}else{c.currentIteration=0;c.end();c.fireEvent("lastframe",c,c.startTime)}},endWasCalled:0,end:function(){if(this.endWasCalled++){return}var a=this;a.startTime=0;a.paused=false;a.running=false;Ext.fx.Manager.removeAnim(a);a.fireEvent("afteranimate",a,a.startTime);Ext.callback(a.callback,a.scope,[a,a.startTime])},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Anim"],0));Ext.enableFx=true;(Ext.cmd.derive("Ext.util.Animate",Ext.Base,{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},0,0,0,0,0,0,[Ext.util,"Animate"],function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()}));(Ext.cmd.derive("Ext.util.ElementContainer",Ext.Base,{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),j,k,d,c,h;j=(a||e.id)+"-";for(d=g.length;d--;){k=g[d];if(typeof k=="string"){h=b.getById(j+k)}else{if((c=k.select)){h=Ext.select(c,true,b.dom)}else{if((c=k.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(k.id||(j+k.itemId))}}k=k.name}e[k]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(o){var k=this,p=o.$childEls,m,d,b,j,n,h,a,c,e,g,l;if(!p){g=o.superclass;if(g){g=g.self;c=[g.$childEls||k.getClassChildEls(g)];l=g.prototype.mixins||{}}else{c=[];l={}}e=o.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!l.hasOwnProperty(a)){n=h[a].self;c.push(n.$childEls||k.getClassChildEls(n))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d<b;++d){m=c[d];if(m&&m.length){if(!p){p=m}else{if(!j){j=true;p=p.slice(0)}p.push.apply(p,m)}}}o.$childEls=p=(p?k.prune(p,!j):[])}return p},prune:function(c,e){var b=c.length,d={},a;while(b--){a=c[b];if(typeof a!="string"){a=a.name}if(!d[a]){d[a]=1}else{if(e){e=false;c=c.slice(0)}Ext.Array.erase(c,b,1)}}return c},removeChildEls:function(g){var e=this,a=e.getChildEls(),d=(e.childEls=[]),h,b,c;for(b=0,h=a.length;b<h;++b){c=a[b];if(!g(c)){d.push(c)}}}},1,0,0,0,0,0,[Ext.util,"ElementContainer"],0));(Ext.cmd.derive("Ext.util.Renderable",Ext.Base,{frameCls:Ext.baseCSSPrefix+"frame",frameIdRegex:/[\-]frame\d+[TMB][LCR]$/,frameElNames:["TL","TC","TR","ML","MC","MR","BL","BC","BR"],frameTpl:["{%this.renderDockedItems(out,values,0);%}",'<tpl if="top">','<tpl if="left"><div id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>",'<tpl if="left"><div id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</div>",'<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>','<tpl if="bottom">','<tpl if="left"><div id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'<table class="',Ext.plainTableCls,'" cellpadding="0"><tbody>','<tpl if="top">',"<tr>",'<tpl if="left"><td id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>","<tr>",'<tpl if="left"><td id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</td>",'<tpl if="right"><td id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>",'<tpl if="bottom">',"<tr>",'<tpl if="left"><td id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>","</tbody></table>","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},j=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}j.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,j){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,j)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var j=this,l=j.autoEl,g=j.getFrameInfo(),b={tag:"div",tpl:g?j.initFramingTpl(g.table):j.initRenderTpl()},a=j.protoEl,c,e,h,m,d,k;j.initStyles(a);a.writeTo(b);a.flush();if(Ext.isString(l)){b.tag=l}else{Ext.apply(b,l)}b.id=j.id;if(b.tpl){if(g){e=j.frameElNames;h=e.length;b.tplData=k=j.getFrameRenderData();k.renderData=j.initRenderData();d=k.fgid;for(c=0;c<h;c++){m=e[c];j.addChildEls({name:"frame"+m,id:d+m})}j.addChildEls({name:"frameBody",id:d+"MC"})}else{b.tplData=j.initRenderData()}}return b},initFramingTpl:function(b){var a=this.getFrameTpl(b);if(a&&!a.applyRenderTpl){this.setupFramingTpl(a)}return a},setupFramingTpl:function(a){a.applyRenderTpl=this.doApplyRenderTpl;a.renderDockedItems=this.doRenderFramingDockedItems},getInsertPosition:function(a){if(a!==undefined){if(Ext.isNumber(a)){a=this.container.dom.childNodes[a]}else{a=Ext.getDom(a)}}return a},getRenderTree:function(){var a=this;if(!a.hasListeners.beforerender||a.fireEvent("beforerender",a)!==false){a.beforeRender();a.rendering=true;if(a.el){return{tag:"div",id:(a.$pid=Ext.id())}}return a.getElConfig()}return null},initContainer:function(a){var b=this;if(!a&&b.el){a=b.el.dom.parentNode;b.allowDomMove=false}b.container=a.dom?a:Ext.get(a);return b.container},initRenderData:function(){var a=this;return Ext.apply({$comp:a,id:a.id,ui:a.ui,uiCls:a.uiCls,baseCls:a.baseCls,componentCls:a.componentCls,frame:a.frame,childElCls:""},a.renderData)},initRenderTpl:function(){var a=this.getTpl("renderTpl");if(a&&!a.renderContent){this.setupRenderTpl(a)}return a},onRender:function(d,e){var g=this,j=g.x,h=g.y,c=null,a,k,b=g.el;g.applyRenderSelectors();g.rendering=null;g.rendered=true;if(j!=null){c={x:j}}if(h!=null){(c=c||{}).y=h}if(!g.getFrameInfo()&&Ext.isBorderBox){a=g.width;k=g.height;if(typeof a==="number"){c=c||{};c.width=a}if(typeof k==="number"){c=c||{};c.height=k}}g.lastBox=b.lastBox=c},render:function(c,b){var e=this,d=e.el&&(e.el=Ext.get(e.el)),h,a,g;Ext.suspendLayouts();c=e.initContainer(c);g=e.getInsertPosition(b);if(!d){a=e.getRenderTree();if(e.ownerLayout&&e.ownerLayout.transformItemRenderTree){a=e.ownerLayout.transformItemRenderTree(a)}if(a){if(g){d=Ext.DomHelper.insertBefore(g,a)}else{d=Ext.DomHelper.append(c,a)}e.wrapPrimaryEl(d)}}else{if(!e.hasListeners.beforerender||e.fireEvent("beforerender",e)!==false){e.beforeRender();e.initStyles(d);if(e.allowDomMove!==false){if(g){c.dom.insertBefore(d.dom,g)}else{c.dom.appendChild(d.dom)}}}else{h=true}}if(d&&!h){e.finishRender(b)}Ext.resumeLayouts(!e.hidden&&!c.isDetachedBody)},ensureAttachedToBody:function(c){var b=this,a;while(b.ownerCt){b=b.ownerCt}if(b.container.isDetachedBody){b.container=a=Ext.getBody();a.appendChild(b.el.dom);if(c){b.updateLayout()}if(typeof b.x=="number"||typeof b.y=="number"){b.setPosition(b.x,b.y)}}},setupRenderTpl:function(a){a.renderBody=a.renderContent=this.doRenderContent},wrapPrimaryEl:function(a){this.el=Ext.get(a,true)},initFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var h=this,e=h.getFrameInfo(),a,c,d=h.frameElNames,g=d.length,b,j,k;if(e){a=h.getFrameTpl(e.table);j=h.getFrameRenderData();c=j.fgid;a.insertFirst(h.el,j);h.frameBody=h.el.down("."+h.frameCls+"-mc");h.removeChildEls(function(l){return l.id&&h.frameIdRegex.test(l.id)});for(b=0;b<g;b++){k=d[b];h["frame"+k]=h.el.getById(c+k)}}},getFrameRenderData:function(){var c=this,b=c.frameSize,a=(c.frameGenId||0)+1;c.frameGenId=a;return{$comp:c,fgid:c.id+"-frame"+a,ui:c.ui,uiCls:c.uiCls,frameCls:c.frameCls,baseCls:c.baseCls,top:!!b.top,left:!!b.left,right:!!b.right,bottom:!!b.bottom,frameElCls:""}},updateFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var e=this,h=e.frameSize&&e.frameSize.table,g=e.frameTL,d=e.frameBL,c=e.frameML,a=e.frameMC,b;e.initFrame();if(a){if(e.frame){b=e.frameMC.dom.className;a.insertAfter(e.frameMC);e.frameMC.remove();e.frameBody=e.frameMC=a;a.dom.className=b;if(h){e.el.query("> table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var x=this,p=x.frameInfoCache,e=x.getFramingInfoCls()+"-frameInfo",y=p[e],q=Math.max,o,l,t,n,z,g,k,b,c,m,h,s,u,j,a,d,w,r,v;if(y==null){o=Ext.fly(x.getStyleProxy(e),"frame-style-el");t=o.getStyle("font-family");if(t){t=t.split("-");d=parseInt(t[1],10);w=parseInt(t[2],10);r=parseInt(t[3],10);v=parseInt(t[4],10);b=parseInt(t[5],10);c=parseInt(t[6],10);m=parseInt(t[7],10);h=parseInt(t[8],10);s=parseInt(t[9],10);u=parseInt(t[10],10);j=parseInt(t[11],10);a=parseInt(t[12],10);n=q(b,q(d,w));z=q(c,q(w,r));g=q(m,q(v,r));k=q(h,q(d,v));y={table:t[0].charAt(0)==="t",vertical:t[0].charAt(1)==="v",top:n,right:z,bottom:g,left:k,width:k+z,height:n+g,maxWidth:q(n,z,g,k),border:{top:b,right:c,bottom:m,left:h,width:h+c,height:b+m},padding:{top:s,right:u,bottom:j,left:a,width:a+u,height:s+j},radius:{tl:d,tr:w,br:r,bl:v}}}else{y=false}p[e]=y}x.frame=!!y;x.frameSize=y;return y},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}},0,0,0,0,0,0,[Ext.util,"Renderable"],0));(Ext.cmd.derive("Ext.state.Provider",Ext.Base,{prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,j;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(j=0;j<e;j++){g=k[j];h.push(c.decodeValue(g))}}return h;case"o":h={};if(g!=""){k=g.split("^");e=k.length;for(j=0;j<e;j++){g=k[j];a=g.split("=");h[a[0]]=c.decodeValue(a[1])}}return h;default:return g}},encodeValue:function(e){var g="",d=0,b,a,c;if(e==null){return"e:1"}else{if(typeof e=="number"){b="n:"+e}else{if(typeof e=="boolean"){b="b:"+(e?"1":"0")}else{if(Ext.isDate(e)){b="d:"+e.toGMTString()}else{if(Ext.isArray(e)){for(a=e.length;d<a;d++){g+=this.encodeValue(e[d]);if(d!=a-1){g+="^"}}b="a:"+g}else{if(typeof e=="object"){for(c in e){if(typeof e[c]!="function"&&e[c]!==undefined){g+=c+"="+this.encodeValue(e[c])+"^"}}b="o:"+g.substring(0,g.length-1)}else{b="s:"+e}}}}}}return escape(b)}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.state,"Provider"],0));(Ext.cmd.derive("Ext.state.Manager",Ext.Base,{singleton:true,constructor:function(){this.provider=new Ext.state.Provider()},setProvider:function(a){this.provider=a},get:function(b,a){return this.provider.get(b,a)},set:function(a,b){this.provider.set(a,b)},clear:function(a){this.provider.clear(a)},getProvider:function(){return this.provider}},1,0,0,0,0,0,[Ext.state,"Manager"],0));(Ext.cmd.derive("Ext.state.Stateful",Ext.Base,{stateful:false,saveDelay:100,constructor:function(a){var b=this;a=a||{};if(a.stateful!==undefined){b.stateful=a.stateful}if(a.saveDelay!==undefined){b.saveDelay=a.saveDelay}b.stateId=b.stateId||a.stateId;if(!b.stateEvents){b.stateEvents=[]}if(a.stateEvents){b.stateEvents.concat(a.stateEvents)}this.addEvents("beforestaterestore","staterestore","beforestatesave","statesave");b.mixins.observable.constructor.call(b);if(b.stateful!==false){b.addStateEvents(b.stateEvents);b.initState()}},addStateEvents:function(c){var e=this,b,d,a;if(e.stateful&&e.getStateId()){if(typeof c=="string"){c=Array.prototype.slice.call(arguments,0)}a=e.stateEventsByName||(e.stateEventsByName={});for(b=c.length;b--;){d=c[b];if(!a[d]){a[d]=1;e.on(d,e.onStateChange,e)}}}},onStateChange:function(){var c=this,a=c.saveDelay,d,b;if(!c.stateful){return}if(a){if(!c.stateTask){d=Ext.state.Stateful;b=d.runner||(d.runner=new Ext.util.TaskRunner());c.stateTask=b.newTask({run:c.saveState,scope:c,interval:a,repeat:1})}c.stateTask.start()}else{c.saveState()}},saveState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=b.getState()||{};if(!a.beforestatesave||b.fireEvent("beforestatesave",b,c)!==false){Ext.state.Manager.set(d,c);if(a.statesave){b.fireEvent("statesave",b,c)}}}},getState:function(){return null},applyState:function(a){if(a){Ext.apply(this,a)}},getStateId:function(){var a=this;return a.stateId||(a.autoGenId?null:a.id)},initState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=Ext.state.Manager.get(d);if(c){c=Ext.apply({},c);if(!a.beforestaterestore||b.fireEvent("beforestaterestore",b,c)!==false){b.applyState(c);if(a.staterestore){b.fireEvent("staterestore",b,c)}}}}},savePropToState:function(g,e,d){var b=this,c=b[g],a=b.initialConfig;if(b.hasOwnProperty(g)){if(!a||a[g]!==c){if(e){e[d||g]=c}return true}}return false},savePropsToState:function(e,c){var b=this,a,d;if(typeof e=="string"){b.savePropToState(e,c)}else{for(a=0,d=e.length;a<d;++a){b.savePropToState(e[a],c)}}return c},destroy:function(){var b=this,a=b.stateTask;if(a){a.destroy();b.stateTask=null}b.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.state,"Stateful"],0));(Ext.cmd.derive("Ext.AbstractComponent",Ext.Base,{statics:{AUTO_ID:1000,pendingLayouts:null,layoutSuspendCount:0,cancelLayout:function(a,c){var b=this.runningLayoutContext||this.pendingLayouts;if(b){b.cancelComponent(a,false,c)}},flushLayouts:function(){var b=this,a=b.pendingLayouts;if(a&&a.invalidQueue.length){b.pendingLayouts=null;b.runningLayoutContext=a;Ext.override(a,{runComplete:function(){b.runningLayoutContext=null;var c=this.callParent();if(Ext.globalEvents.hasListeners.afterlayout){Ext.globalEvents.fireEvent("afterlayout")}return c}});a.run()}},resumeLayouts:function(a){if(this.layoutSuspendCount&&!--this.layoutSuspendCount){if(a){this.flushLayouts()}if(Ext.globalEvents.hasListeners.resumelayouts){Ext.globalEvents.fireEvent("resumelayouts")}}},suspendLayouts:function(){++this.layoutSuspendCount},updateLayout:function(b,e){var c=this,a=c.runningLayoutContext,d;if(a){a.queueInvalidate(b)}else{d=c.pendingLayouts||(c.pendingLayouts=new Ext.layout.Context());d.queueInvalidate(b);if(!e&&!c.layoutSuspendCount&&!b.isLayoutSuspended()){c.flushLayouts()}}}},isComponent:true,getAutoId:function(){this.autoGenId=true;return ++Ext.AbstractComponent.AUTO_ID},deferLayouts:false,autoGenId:false,renderTpl:"{%this.renderContent(out,values)%}",frameSize:null,tplWriteMode:"overwrite",baseCls:Ext.baseCSSPrefix+"component",disabledCls:Ext.baseCSSPrefix+"item-disabled",ui:"default",uiCls:[],hidden:false,disabled:false,draggable:false,floating:false,hideMode:"display",autoShow:false,autoRender:false,allowDomMove:true,rendered:false,componentLayoutCounter:0,shrinkWrap:2,weight:0,maskOnDisable:true,_isLayoutRoot:false,contentPaddingProperty:"padding",horizontalPosProp:"left",borderBoxCls:Ext.baseCSSPrefix+"border-box",constructor:function(c){var e=this,d,a,b;if(c){Ext.apply(e,c);b=e.xhooks;if(b){delete e.xhooks;Ext.override(e,b)}}else{c={}}e.initialConfig=c;e.mixins.elementCt.constructor.call(e);e.addEvents("beforeactivate","activate","beforedeactivate","deactivate","added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","boxready","beforedestroy","destroy","resize","move","focus","blur");e.getId();e.setupProtoEl();if(e.cls){e.initialCls=e.cls;e.protoEl.addCls(e.cls)}if(e.style){e.initialStyle=e.style;e.protoEl.setStyle(e.style)}e.renderData=e.renderData||{};e.renderSelectors=e.renderSelectors||{};if(e.plugins){e.plugins=e.constructPlugins()}if(!e.hasListeners){e.hasListeners=new e.HasListeners()}e.initComponent();Ext.ComponentManager.register(e);e.mixins.observable.constructor.call(e);e.mixins.state.constructor.call(e,c);this.addStateEvents("resize");if(e.plugins){for(d=0,a=e.plugins.length;d<a;d++){e.plugins[d]=e.initPlugin(e.plugins[d])}}e.loader=e.getLoader();if(e.renderTo){e.render(e.renderTo)}if(e.autoShow&&!e.isContained){e.show()}},initComponent:function(){this.plugins=this.constructPlugins();this.setSize(this.width,this.height)},getState:function(){var b=this,c=null,a=b.getSizeModel();if(a.width.configured){c=b.addPropertyToState(c,"width")}if(a.height.configured){c=b.addPropertyToState(c,"height")}return c},addPropertyToState:function(e,d,c){var b=this,a=arguments.length;if(a==3||b.hasOwnProperty(d)){if(a<3){c=b[d]}if(c!==b.initialConfig[d]){(e||(e={}))[d]=c}}return e},show:Ext.emptyFn,animate:function(c){var u=this,g,m,l,a,d,b,t,q,n,e,r,o,j,p,s,k;c=c||{};d=c.to||{};if(Ext.fx.Manager.hasFxBlock(u.id)){return u}g=Ext.isDefined(d.width);if(g){a=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth)}m=Ext.isDefined(d.height);if(m){l=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight)}if(!c.dynamic&&(g||m)){q=(c.from?c.from.width:undefined)||u.getWidth();n=q;e=(c.from?c.from.height:undefined)||u.getHeight();r=e;o=false;if(m&&l>e){r=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=u.el.getStyle("overtflow");if(k!=="hidden"){u.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(u.width);t=!Ext.isNumber(u.height);u.setSize(n,r);u.el.setSize(q,e);if(b){delete u.width}if(t){delete u.height}}if(g){d.width=a}if(m){d.height=l}}j=u.constrain;p=u.constrainHeader;if(j||p){u.constrain=u.constrainHeader=false;s=c.callback;c.callback=function(){u.constrain=j;u.constrainHeader=p;if(s){s.call(c.scope||u,arguments)}if(k!=="hidden"){u.el.setStyle("overflow",k)}}}return u.mixins.animate.animate.apply(u,arguments)},setHiddenState:function(a){var b=this.getHierarchyState();this.hidden=a;if(a){b.hidden=true}else{delete b.hidden}},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d<a;d++){b[d]=e.constructPlugin(c[d])}}e.pluginsInitialized=true;return b},initPlugin:function(a){a.init(this);return a},addPlugin:function(b){var a=this;b=a.constructPlugin(b);if(a.plugins){a.plugins.push(b)}else{a.plugins=[b]}if(a.pluginsInitialized){a.initPlugin(b)}return b},removePlugin:function(a){Ext.Array.remove(this.plugins,a);a.destroy()},findPlugin:function(d){var b,a=this.plugins,c=a&&a.length;for(b=0;b<c;b++){if(a[b].ptype===d){return a[b]}}},getPlugin:function(b){var c,a=this.plugins,d=a&&a.length;for(c=0;c<d;c++){if(a[c].pluginId===b){return a[c]}}},beforeLayout:Ext.emptyFn,updateAria:Ext.emptyFn,registerFloatingItem:function(b){var a=this;if(!a.floatingDescendants){a.floatingDescendants=new Ext.ZIndexManager(a)}a.floatingDescendants.register(b)},unregisterFloatingItem:function(b){var a=this;if(a.floatingDescendants){a.floatingDescendants.unregister(b)}},layoutSuspendCount:0,suspendLayouts:function(){var a=this;if(!a.rendered){return}if(++a.layoutSuspendCount==1){a.suspendLayout=true}},resumeLayouts:function(b){var a=this;if(!a.rendered){return}if(!--a.layoutSuspendCount){a.suspendLayout=false;if(b&&!a.isLayoutSuspended()){a.updateLayout(b)}}},setupProtoEl:function(){var a=this.initCls();this.protoEl=new Ext.util.ProtoElement({cls:a.join(" ")})},initCls:function(){var b=this,a=[b.baseCls,b.getComponentLayout().targetCls];if(Ext.isDefined(b.cmpCls)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.Component: cmpCls has been deprecated. Please use componentCls.")}b.componentCls=b.cmpCls;delete b.cmpCls}if(b.componentCls){a.push(b.componentCls)}else{b.componentCls=b.baseCls}return a},setUI:function(c){var b=this,e=b.uiCls,d=b.activeUI,a;if(c===d){return}if(d){a=b.removeClsWithUI(e,true);if(a.length){b.removeCls(a)}b.removeUIFromElement()}else{b.uiCls=[]}b.ui=c;b.activeUI=c;b.addUIToElement();a=b.addClsWithUI(e,true);if(a.length){b.addCls(a)}if(b.rendered){b.updateLayout()}},addClsWithUI:function(c,j){var h=this,g=[],e=0,d=h.uiCls=Ext.Array.clone(h.uiCls),b=h.activeUI,a,k;if(typeof c==="string"){c=(c.indexOf(" ")<0)?[c]:Ext.String.splitWords(c)}a=c.length;for(;e<a;e++){k=c[e];if(k&&!h.hasUICls(k)){d.push(k);if(b){g=g.concat(h.addUIClsToElement(k))}}}if(j!==true&&b){h.addCls(g)}return g},removeClsWithUI:function(d,l){var k=this,j=[],g=0,a=Ext.Array,h=a.remove,e=k.uiCls=a.clone(k.uiCls),c=k.activeUI,b,m;if(typeof d==="string"){d=(d.indexOf(" ")<0)?[d]:Ext.String.splitWords(d)}b=d.length;for(g=0;g<b;g++){m=d[g];if(m&&k.hasUICls(m)){h(e,m);if(c){j=j.concat(k.removeUIClsFromElement(m))}}}if(l!==true&&c){k.removeCls(j)}return j},hasUICls:function(a){var b=this,c=b.uiCls||[];return Ext.Array.contains(c,a)},frameElementsArray:["tl","tc","tr","ml","mc","mr","bl","bc","br"],addUIClsToElement:function(j){var h=this,b=h.baseCls+"-"+h.ui+"-"+j,k=[Ext.baseCSSPrefix+j,h.baseCls+"-"+j,b],g,e,d,a,c;if(h.rendered&&h.frame&&!Ext.supports.CSS3BorderRadius){g=h.frameElementsArray;e=g.length;for(d=0;d<e;d++){c=g[d];a=h["frame"+c.toUpperCase()];if(a){a.addCls(b+"-"+c)}}}return k},removeUIClsFromElement:function(j){var h=this,b=h.baseCls+"-"+h.ui+"-"+j,k=[Ext.baseCSSPrefix+j,h.baseCls+"-"+j,b],g,e,d,a,c;if(h.rendered&&h.frame&&!Ext.supports.CSS3BorderRadius){g=h.frameElementsArray;e=g.length;for(d=0;d<e;d++){c=g[d];a=h["frame"+c.toUpperCase()];if(a){a.removeCls(b+"-"+c)}}}return k},addUIToElement:function(){var g=this,b=g.baseCls+"-"+g.ui,a,e,c,d,h;g.addCls(b);if(g.rendered&&g.frame&&!Ext.supports.CSS3BorderRadius){a=g.frameElementsArray;e=a.length;for(c=0;c<e;c++){h=a[c];d=g["frame"+h.toUpperCase()];if(d){d.addCls(b+"-"+h)}}}},removeUIFromElement:function(){var g=this,b=g.baseCls+"-"+g.ui,a,e,c,d,h;g.removeCls(b);if(g.rendered&&g.frame&&!Ext.supports.CSS3BorderRadius){a=g.frameElementsArray;e=a.length;for(c=0;c<e;c++){h=a[c];d=g["frame"+h.toUpperCase()];if(d){d.removeCls(b+"-"+h)}}}},getTpl:function(a){return Ext.XTemplate.getTpl(this,a)},initStyles:function(l){var g=this,c=Ext.Element,d=g.margin,e=g.border,m=g.cls,a=g.style,j=g.x,h=g.y,b,k;g.initPadding(l);if(d!=null){l.setStyle("margin",this.unitizeBox((d===true)?5:d))}if(e!=null){g.setBorder(e,l)}if(m&&m!=g.initialCls){l.addCls(m);g.cls=g.initialCls=null}if(a&&a!=g.initialStyle){l.setStyle(a);g.style=g.initialStyle=null}if(j!=null){l.setStyle(g.horizontalPosProp,(typeof j=="number")?(j+"px"):j)}if(h!=null){l.setStyle("top",(typeof h=="number")?(h+"px"):h)}if(Ext.isBorderBox&&(!g.ownerCt||g.floating)){l.addCls(g.borderBoxCls)}if(!g.getFrameInfo()){b=g.width;k=g.height;if(b!=null){if(typeof b==="number"){if(Ext.isBorderBox){l.setStyle("width",b+"px")}}else{l.setStyle("width",b)}}if(k!=null){if(typeof k==="number"){if(Ext.isBorderBox){l.setStyle("height",k+"px")}}else{l.setStyle("height",k)}}}},initPadding:function(c){var a=this,b=a.padding;if(b!=null){if(a.layout&&a.layout.managePadding&&a.contentPaddingProperty==="padding"){c.setStyle("padding",0)}else{c.setStyle("padding",this.unitizeBox((b===true)?5:b))}}},parseBox:function(a){return Ext.dom.Element.parseBox(a)},unitizeBox:function(a){return Ext.dom.Element.unitizeBox(a)},setMargin:function(c,b){var a=this;if(a.rendered){if(!c&&c!==0){c=""}else{if(c===true){c=5}c=this.unitizeBox(c)}a.getTargetEl().setStyle("margin",c);if(!b){a.updateLayout()}}else{a.margin=c}},initEvents:function(){var e=this,h=e.afterRenderEvents,b,d,g,c,a;if(h){for(g in h){d=e[g];if(d&&d.on){b=h[g];for(c=0,a=b.length;c<a;++c){e.mon(d,b[c])}}}}e.addFocusListener()},addFocusListener:function(){var c=this,b=c.getFocusEl(),a;if(b){if(b.isComponent){return b.addFocusListener()}a=b.needsTabIndex();if(!c.focusListenerAdded&&(!a||Ext.FocusManager.enabled)){if(a){b.dom.tabIndex=-1}b.on({focus:c.onFocus,blur:c.onBlur,scope:c});c.focusListenerAdded=true}}},getFocusEl:Ext.emptyFn,isFocusable:function(){var b=this,a;if((b.focusable!==false)&&(a=b.getFocusEl())&&b.rendered&&!b.destroying&&!b.isDestroyed&&!b.disabled&&b.isVisible(true)){return a.isFocusable(true)}},beforeFocus:Ext.emptyFn,onFocus:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(!c.disabled){c.beforeFocus(d);if(b&&a){a.addCls(c.addClsWithUI(b,true))}if(!c.hasFocus){c.hasFocus=true;c.fireEvent("focus",c,d)}}},beforeBlur:Ext.emptyFn,onBlur:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(c.destroying){return}c.beforeBlur(d);if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.validateOnBlur){c.validate()}c.hasFocus=false;c.fireEvent("blur",c,d);c.postBlur(d)},postBlur:Ext.emptyFn,is:function(a){return Ext.ComponentQuery.is(this,a)},up:function(d,e){var c=this.getRefOwner(),b=typeof e==="string",h=typeof e==="number",a=e&&e.isComponent,g=0;if(d){for(;c;c=c.getRefOwner()){g++;if(d.isComponent){if(c===d){return c}}else{if(Ext.ComponentQuery.is(c,d)){return c}}if(b&&c.is(e)){return}if(h&&g===e){return}if(a&&c===e){return}}}return c},nextSibling:function(b){var g=this.ownerCt,d,e,a,h;if(g){d=g.items;a=d.indexOf(this)+1;if(a){if(b){for(e=d.getCount();a<e;a++){if((h=d.getAt(a)).is(b)){return h}}}else{if(a<d.getCount()){return d.getAt(a)}}}}return null},previousSibling:function(b){var e=this.ownerCt,d,a,g;if(e){d=e.items;a=d.indexOf(this);if(a!=-1){if(b){for(--a;a>=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var j=this,h=j.ownerCt,a,g,e,c;if(d&&j.is(b)){return j}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,j)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,j){var b=this,c=b.ownerCt,k,e,h,g,a;if(j&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g<h;g++){a=e[g];if(a.is(d)){return a}if(a.down){k=a.down(d);if(k){return k}}}return c.nextNode(d)}return null},getId:function(){return this.id||(this.id="ext-comp-"+(this.getAutoId()))},getItemId:function(){return this.itemId||this.id},getEl:function(){return this.el},getTargetEl:function(){return this.frameBody||this.el},getOverflowEl:function(){return this.getTargetEl()},getOverflowStyle:function(){var e=this,b=null,d,c,a;if(typeof e.autoScroll==="boolean"){b={overflow:a=e.autoScroll?"auto":""};e.scrollFlags={overflowX:a,overflowY:a,x:true,y:true,both:true}}else{d=e.overflowX;c=e.overflowY;if(d!==undefined||c!==undefined){b={overflowX:d=d||"",overflowY:c=c||""};e.scrollFlags={overflowX:d,overflowY:c,x:d=(d==="auto"||d==="scroll"),y:c=(c==="auto"||c==="scroll"),both:d&&c}}else{e.scrollFlags={overflowX:"",overflowY:"",x:false,y:false,both:false}}}if(b&&Ext.isIE7m){b.position="relative"}return b},isXType:function(b,a){if(a){return this.xtype===b}else{return this.xtypesMap[b]}},getXTypes:function(){var c=this.self,d,b,a;if(!c.xtypes){d=[];b=this;while(b){a=b.xtypes;if(a!==undefined){d.unshift.apply(d,a)}b=b.superclass}c.xtypeChain=d;c.xtypes=d.join("/")}return c.xtypes},update:function(b,c,a){var e=this,g=(e.tpl&&!Ext.isString(b)),d;if(g){e.data=b}else{e.html=Ext.isObject(b)?Ext.DomHelper.markup(b):b}if(e.rendered){d=e.isContainer?e.layout.getRenderTarget():e.getTargetEl();if(g){e.tpl[e.tplWriteMode](d,b||{})}else{d.update(e.html,c,a)}e.updateLayout()}},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(a){var b=this,c;if(b.hidden||!b.rendered||b.isDestroyed){c=true}else{if(a){c=b.isHierarchicallyHidden()}}return !c},isHierarchicallyHidden:function(){var d=this,c=false,b,a;for(;(b=d.ownerCt||d.floatParent);d=b){a=b.getHierarchyState();if(a.hidden){c=true;break}if(d.getHierarchyState().collapseImmune){if(b.collapsed&&!d.collapseImmune){c=true;break}}else{c=!!a.collapsed;break}}return c},onBoxReady:function(b,a){var c=this;if(c.disableOnBoxReady){c.onDisable()}else{if(c.enableOnBoxReady){c.onEnable()}}if(c.resizable){c.initResizable(c.resizable)}if(c.draggable){c.initDraggable()}if(c.hasListeners.boxready){c.fireEvent("boxready",c,b,a)}},enable:function(a){var b=this;delete b.disableOnBoxReady;b.removeCls(b.disabledCls);if(b.rendered){b.onEnable()}else{b.enableOnBoxReady=true}b.disabled=false;delete b.resetDisable;if(a!==true){b.fireEvent("enable",b)}return b},disable:function(a){var b=this;delete b.enableOnBoxReady;b.addCls(b.disabledCls);if(b.rendered){b.onDisable()}else{b.disableOnBoxReady=true}b.disabled=true;if(a!==true){delete b.resetDisable;b.fireEvent("disable",b)}return b},onEnable:function(){if(this.maskOnDisable){this.el.dom.disabled=false;this.unmask()}},onDisable:function(){var c=this,b=c.focusCls,a=c.getFocusEl();if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.maskOnDisable){c.el.dom.disabled=true;c.mask()}},mask:function(){var b=this.lastBox,c=this.getMaskTarget(),a=[];if(b){a[2]=b.height}c.mask.apply(c,a)},unmask:function(){this.getMaskTarget().unmask()},getMaskTarget:function(){return this.el},isDisabled:function(){return this.disabled},setDisabled:function(a){return this[a?"disable":"enable"]()},isHidden:function(){return this.hidden},addCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.addCls.apply(b,arguments);return c},addClass:function(){return this.addCls.apply(this,arguments)},hasCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;return b.hasCls.apply(b,arguments)},removeCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.removeCls.apply(b,arguments);return c},addOverCls:function(){var a=this;if(!a.disabled){a.el.addCls(a.overCls)}},removeOverCls:function(){this.el.removeCls(this.overCls)},addListener:function(b,g,e,a){var h=this,d,c;if(Ext.isString(b)&&(Ext.isObject(g)||a&&a.element)){if(a.element){d=g;g={};g[b]=d;b=a.element;if(e){g.scope=e}for(c in a){if(a.hasOwnProperty(c)){if(h.eventOptionsRe.test(c)){g[c]=a[c]}}}}if(h[b]&&h[b].on){h.mon(h[b],g)}else{h.afterRenderEvents=h.afterRenderEvents||{};if(!h.afterRenderEvents[b]){h.afterRenderEvents[b]=[]}h.afterRenderEvents[b].push(g)}return}return h.mixins.observable.addListener.apply(h,arguments)},removeManagedListenerItem:function(b,a,j,d,g,e){var h=this,c=a.options?a.options.element:null;if(c){c=h[c];if(c&&c.un){if(b||(a.item===j&&a.ename===d&&(!g||a.fn===g)&&(!e||a.scope===e))){c.un(a.ename,a.fn,a.scope);if(!b){Ext.Array.remove(h.managedListeners,a)}}}}else{return h.mixins.observable.removeManagedListenerItem.apply(h,arguments)}},getBubbleTarget:function(){return this.ownerCt},isFloating:function(){return this.floating},isDraggable:function(){return !!this.draggable},isDroppable:function(){return !!this.droppable},onAdded:function(a,c){var b=this;b.ownerCt=a;if(b.hierarchyState){b.hierarchyState.invalid=true;delete b.hierarchyState}if(b.hasListeners.added){b.fireEvent("added",b,a,c)}},onRemoved:function(b){var a=this;if(a.hasListeners.removed){a.fireEvent("removed",a,a.ownerCt)}delete a.ownerCt;delete a.ownerLayout},beforeDestroy:Ext.emptyFn,onResize:function(c,a,b,e){var d=this;if(d.floating&&d.constrain){d.doConstrain()}if(d.hasListeners.resize){d.fireEvent("resize",d,c,a,b,e)}},setSize:function(b,a){var c=this;if(b&&typeof b=="object"){a=b.height;b=b.width}if(typeof b=="number"){c.width=Ext.Number.constrain(b,c.minWidth,c.maxWidth)}else{if(b===null){delete c.width}}if(typeof a=="number"){c.height=Ext.Number.constrain(a,c.minHeight,c.maxHeight)}else{if(a===null){delete c.height}}if(c.rendered&&c.isVisible()){c.updateLayout({isRoot:false})}return c},isLayoutRoot:function(){var a=this,b=a.ownerLayout;if(!b||a._isLayoutRoot||a.floating){return true}return b.isItemLayoutRoot(a)},isLayoutSuspended:function(){var a=this,b;while(a){if(a.layoutSuspendCount||a.suspendLayout){return true}b=a.ownerLayout;if(!b){break}a=b.owner}return false},updateLayout:function(c){var d=this,e,b=d.lastBox,a=c&&c.isRoot;if(b){b.invalid=true}if(!d.rendered||d.layoutSuspendCount||d.suspendLayout){return}if(d.hidden){Ext.AbstractComponent.cancelLayout(d)}else{if(typeof a!="boolean"){a=d.isLayoutRoot()}}if(a||!d.ownerLayout||!d.ownerLayout.onContentChange(d)){if(!d.isLayoutSuspended()){e=(c&&c.hasOwnProperty("defer"))?c.defer:d.deferLayouts;Ext.AbstractComponent.updateLayout(d,e)}}},getSizeModel:function(k){var o=this,a=Ext.layout.SizeModel,d=o.componentLayout.ownerContext,b=o.width,q=o.height,r,c,g,e,h,p,m,n,l,j;if(d){j=d.widthModel;h=d.heightModel}if(!j||!h){g=((r=typeof b)=="number");e=((c=typeof q)=="number");l=o.floating||!(p=o.ownerLayout);if(l){m=Ext.layout.Layout.prototype.autoSizePolicy;n=o.floating?3:o.shrinkWrap;if(g){j=a.configured}if(e){h=a.configured}}else{m=p.getItemSizePolicy(o,k);n=p.isItemShrinkWrap(o)}if(d){d.ownerSizePolicy=m}n=(n===true)?3:(n||0);if(l&&n){if(b&&r=="string"){n&=2}if(q&&c=="string"){n&=1}}if(n!==3){if(!k){k=o.ownerCt&&o.ownerCt.getSizeModel()}if(k){n|=(k.width.shrinkWrap?1:0)|(k.height.shrinkWrap?2:0)}}if(!j){if(!m.setsWidth){if(g){j=a.configured}else{j=(n&1)?a.shrinkWrap:a.natural}}else{if(m.readsWidth){if(g){j=a.calculatedFromConfigured}else{j=(n&1)?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{j=a.calculated}}}if(!h){if(!m.setsHeight){if(e){h=a.configured}else{h=(n&2)?a.shrinkWrap:a.natural}}else{if(m.readsHeight){if(e){h=a.calculatedFromConfigured}else{h=(n&2)?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{h=a.calculated}}}}return j.pairsByHeightOrdinal[h.ordinal]},isDescendant:function(a){if(a.isContainer){for(var b=this.ownerCt;b;b=b.ownerCt){if(b===a){return true}}}return false},doComponentLayout:function(){this.updateLayout();return this},forceComponentLayout:function(){this.updateLayout()},setComponentLayout:function(b){var a=this.componentLayout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.componentLayout=b;b.setOwner(this)},getComponentLayout:function(){var a=this;if(!a.componentLayout||!a.componentLayout.isLayout){a.setComponentLayout(Ext.layout.Layout.create(a.componentLayout,"autocomponent"))}return a.componentLayout},afterComponentLayout:function(c,a,b,e){var d=this;if(++d.componentLayoutCounter===1){d.afterFirstLayout(c,a)}if(c!==b||a!==e){d.onResize(c,a,b,e)}},beforeComponentLayout:function(b,a){return true},setPosition:function(a,e,b){var c=this,d=c.beforeSetPosition.apply(c,arguments);if(d&&c.rendered){a=d.x;e=d.y;if(b){if(a!==c.getLocalX()||e!==c.getLocalY()){c.stopAnimation();c.animate(Ext.apply({duration:1000,listeners:{afteranimate:Ext.Function.bind(c.afterSetPosition,c,[a,e])},to:{x:a,y:e}},b))}}else{c.setLocalXY(a,e);c.afterSetPosition(a,e)}}return c},beforeSetPosition:function(a,e,b){var d,c;if(a){if(Ext.isNumber(c=a[0])){b=e;e=a[1];a=c}else{if((c=a.x)!==undefined){b=e;e=a.y;a=c}}}if(this.constrain||this.constrainHeader){d=this.calculateConstrainedPosition(null,[a,e],true);if(d){a=d[0];e=d[1]}}d={x:this.x=a,y:this.y=e,anim:b,hasX:a!==undefined,hasY:e!==undefined};return(d.hasX||d.hasY)?d:null},afterSetPosition:function(a,c){var b=this;b.onPosition(a,c);if(b.hasListeners.move){b.fireEvent("move",b,a,c)}},onPosition:Ext.emptyFn,setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.el.getSize()},getWidth:function(){return this.el.getWidth()},getHeight:function(){return this.el.getHeight()},getLoader:function(){var c=this,b=c.autoLoad?(Ext.isObject(c.autoLoad)?c.autoLoad:{url:c.autoLoad}):null,a=c.loader||b;if(a){if(!a.isLoader){c.loader=new Ext.ComponentLoader(Ext.apply({target:c,autoLoad:b},a))}else{a.setTarget(c)}return c.loader}return null},setDocked:function(b,c){var a=this;a.dock=b;if(c&&a.ownerCt&&a.rendered){a.ownerCt.updateLayout()}return a},setBorder:function(b,d){var c=this,a=!!d;if(c.rendered||a){if(!a){d=c.el}if(!b){b=0}else{if(b===true){b="1px"}else{b=this.unitizeBox(b)}}d.setStyle("border-width",b);if(!a){c.updateLayout()}}c.border=b},onDestroy:function(){var a=this;if(a.monitorResize&&Ext.EventManager.resizeEvent){Ext.EventManager.resizeEvent.removeListener(a.setSize,a)}Ext.destroy(a.componentLayout,a.loadMask,a.floatingDescendants)},destroy:function(){var d=this,b=d.renderSelectors,a,c;if(!d.isDestroyed){if(!d.hasListeners.beforedestroy||d.fireEvent("beforedestroy",d)!==false){d.destroying=true;d.beforeDestroy();if(d.floating){delete d.floatParent;if(d.zIndexManager){d.zIndexManager.unregister(d)}}else{if(d.ownerCt&&d.ownerCt.remove){d.ownerCt.remove(d,false)}}d.stopAnimation();d.onDestroy();Ext.destroy(d.plugins);if(d.hasListeners.destroy){d.fireEvent("destroy",d)}Ext.ComponentManager.unregister(d);d.mixins.state.destroy.call(d);d.clearListeners();if(d.rendered){if(!d.preserveElOnDestroy){d.el.remove()}d.mixins.elementCt.destroy.call(d);if(b){for(a in b){if(b.hasOwnProperty(a)){c=d[a];if(c){delete d[a];c.remove()}}}}delete d.el;delete d.frameBody;delete d.rendered}d.destroying=false;d.isDestroyed=true}}},isDescendantOf:function(a){return !!this.findParentBy(function(b){return b===a})},getHierarchyState:function(a){var e=this,j=(a&&e.hierarchyStateInner)||e.hierarchyState,c=e.ownerCt,b,d,g,h;if(!j||j.invalid){b=e.getRefOwner();if(c){h=e.ownerLayout===c.layout}e.hierarchyState=j=Ext.Object.chain(b?b.getHierarchyState(h):Ext.rootHierarchyState);e.initHierarchyState(j);if((d=e.componentLayout).initHierarchyState){d.initHierarchyState(j)}if(e.isContainer){e.hierarchyStateInner=g=Ext.Object.chain(j);d=e.layout;if(d&&d.initHierarchyState){d.initHierarchyState(g,j)}if(a){j=g}}}return j},initHierarchyState:function(b){var a=this;if(a.collapsed){b.collapsed=true}if(a.hidden){b.hidden=true}if(a.collapseImmune){b.collapseImmune=true}},getAnchorToXY:function(d,a,c,b){return d.getAnchorXY(a,c,b)},getBorderPadding:function(){return this.el.getBorderPadding()},getLocalX:function(){return this.el.getLocalX()},getLocalXY:function(){return this.el.getLocalXY()},getLocalY:function(){return this.el.getLocalY()},getX:function(){return this.el.getX()},getXY:function(){return this.el.getXY()},getY:function(){return this.el.getY()},setLocalX:function(a){this.el.setLocalX(a)},setLocalXY:function(a,b){this.el.setLocalXY(a,b)},setLocalY:function(a){this.el.setLocalY(a)},setX:function(a,b){this.el.setX(a,b)},setXY:function(b,a){this.el.setXY(b,a)},setY:function(b,a){this.el.setY(b,a)}},1,0,0,0,0,[["positionable",Ext.util.Positionable],["observable",Ext.util.Observable],["animate",Ext.util.Animate],["elementCt",Ext.util.ElementContainer],["renderable",Ext.util.Renderable],["state",Ext.state.Stateful]],[Ext,"AbstractComponent"],function(){var a=this;a.createAlias({on:"addListener",prev:"previousSibling",next:"nextSibling"});Ext.resumeLayouts=function(b){a.resumeLayouts(b)};Ext.suspendLayouts=function(){a.suspendLayouts()};Ext.batchLayouts=function(c,b){a.suspendLayouts();c.call(b);a.resumeLayouts(true)}}));(Ext.cmd.derive("Ext.AbstractPlugin",Ext.Base,{disabled:false,isPlugin:true,constructor:function(a){this.pluginConfig=a;Ext.apply(this,a)},clonePlugin:function(a){return new this.self(Ext.apply({},a,this.pluginConfig))},setCmp:function(a){this.cmp=a},getCmp:function(){return this.cmp},init:Ext.emptyFn,destroy:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true},onClassExtended:function(b,d,a){var c=d.alias;if(c&&!d.ptype){if(Ext.isArray(c)){c=c[0]}b.prototype.ptype=c.split("plugin.")[1]}}},1,0,0,0,0,0,[Ext,"AbstractPlugin"],0));(Ext.cmd.derive("Ext.Action",Ext.Base,{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},isAction:true,setText:function(a){this.initialConfig.text=a;this.callEach("setText",[a])},getText:function(){return this.initialConfig.text},setIconCls:function(a){this.initialConfig.iconCls=a;this.callEach("setIconCls",[a])},getIconCls:function(){return this.initialConfig.iconCls},setDisabled:function(a){this.initialConfig.disabled=a;this.callEach("setDisabled",[a])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(a){this.initialConfig.hidden=a;this.callEach("setVisible",[!a])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(b,a){this.initialConfig.handler=b;this.initialConfig.scope=a;this.callEach("setHandler",[b,a])},each:function(b,a){Ext.each(this.items,b,a)},callEach:function(g,c){var b=this.items,d=0,a=b.length,e;Ext.suspendLayouts();for(;d<a;d++){e=b[d];e[g].apply(e,c)}Ext.resumeLayouts(true)},addComponent:function(a){this.items.push(a);a.on("destroy",this.removeComponent,this)},removeComponent:function(a){Ext.Array.remove(this.items,a)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||Ext.global,arguments)}},1,0,0,0,0,0,[Ext,"Action"],0));(Ext.cmd.derive("Ext.data.flash.BinaryXhr",Ext.Base,{statics:{flashPluginActivated:function(){Ext.data.flash.BinaryXhr.flashPluginActive=true;Ext.data.flash.BinaryXhr.flashPlugin=document.getElementById("ext-flash-polyfill");Ext.globalEvents.fireEvent("flashready")},flashPluginActive:false,flashPluginInjected:false,connectionIndex:1,liveConnections:{},flashPlugin:null,onFlashStateChange:function(d,c,b){var a;a=this.liveConnections[Number(d)];if(a){a.onFlashStateChange(c,b)}},registerConnection:function(b){var a=this.connectionIndex;this.conectionIndex=this.connectionIndex+1;this.liveConnections[a]=b;return a},injectFlashPlugin:function(){var g,b,c,a,e=this,d,h;a=document.createElement("img");a.setAttribute("src",window.location.protocol+"//www.adobe.com/images/shared/download_buttons/get_flash_player.gif");a.setAttribute("alt","Get Adobe Flash player");c=document.createElement("a");c.setAttribute("href","http://www.adobe.com/go/getflashplayer");c.appendChild(a);b=document.createElement("p");b.innerHTML="To view this page ensure that Adobe Flash Player version 11.1.0 or greater is installed.";g=document.createElement("div");g.setAttribute("id","ext-flash-polyfill");g.appendChild(b);g.appendChild(a);Ext.getBody().dom.appendChild(g);d=[Ext.Loader.getPath("Ext.data.Connection"),"../../../plugins/flash/swfobject.js"].join("/");h="/plugins/flash/FlashPlugin.swf";if(Ext.flashPluginPath){h=Ext.flashPluginPath}Ext.Loader.loadScript({url:d,onLoad:function(){var k="11.4.0";var m="playerProductInstall.swf";var j={};var n={};n.quality="high";n.bgcolor="#ffffff";n.allowscriptaccess="sameDomain";n.allowfullscreen="true";var l={};l.id="ext-flash-polyfill";l.name="polyfill";l.align="middle";swfobject.embedSWF(h,"ext-flash-polyfill","0","0",k,m,j,n,l)},onError:function(){},scope:e});Ext.globalEvents.addEvents("flashready");Ext.data.flash.BinaryXhr.flashPluginInjected=true}},readyState:0,status:0,statusText:"",responseBytes:null,javascriptId:null,constructor:function(a){if(!Ext.data.flash.BinaryXhr.flashPluginInjected){Ext.data.flash.BinaryXhr.injectFlashPlugin()}var b=this;Ext.apply(b,a);b.requestHeaders={}},abort:function(){var a=this;if(a.readyState==4){return}a.aborted=true;if(!Ext.data.flash.BinaryXhr.flashPluginActive){Ext.globalEvents.removeListener("flashready",a.onFlashReady,a);return}Ext.data.flash.BinaryXhr.flashPlugin.abortRequest(a.javascriptId);delete Ext.data.flash.BinaryXhr.liveConnections[a.javascriptId]},getAllResponseHeaders:function(){var a=[];Ext.Object.each(this.responseHeaders,function(b,c){a.push(b+": "+c)});return a.join("\r\n")},getResponseHeader:function(b){var a=this.responseHeaders;return(a&&a[b])||null},open:function(g,c,d,a,b){var e=this;e.method=g;e.url=c;e.async=d!==false;e.user=a;e.password=b},overrideMimeType:function(a){this.mimeType=a},send:function(a){var b=this;b.body=a;if(!Ext.data.flash.BinaryXhr.flashPluginActive){Ext.globalEvents.addListener("flashready",b.onFlashReady,b)}else{this.onFlashReady()}},onFlashReady:function(){var c=this,b,a;c.javascriptId=Ext.data.flash.BinaryXhr.registerConnection(c);b={method:c.method,url:c.url,user:c.user,password:c.password,mimeType:c.mimeType,requestHeaders:c.requestHeaders,body:c.body,javascriptId:c.javascriptId};a=Ext.data.flash.BinaryXhr.flashPlugin.postBinary(b)},setReadyState:function(b){var a=this;if(a.readyState!=b){a.readyState=b;a.onreadystatechange()}},setRequestHeader:function(b,a){this.requestHeaders[b]=a},onreadystatechange:Ext.emptyFn,parseData:function(b){var a=this;this.status=b.status||0;a.responseHeaders={};if(a.mimeType){a.responseHeaders["content-type"]=a.mimeType}if(b.reason=="complete"){this.responseBytes=b.data;a.responseHeaders["content-length"]=b.data.length}else{if(b.reason=="error"||b.reason=="securityError"){this.statusText=b.text;a.responseHeaders["content-length"]=0}}},onFlashStateChange:function(c,b){var a=this;if(c==4){a.parseData(b);delete Ext.data.flash.BinaryXhr.liveConnections[a.javascriptId]}a.setReadyState(c)}},1,0,0,0,0,0,[Ext.data.flash,"BinaryXhr"],0));(Ext.cmd.derive("Ext.data.Connection",Ext.Base,{statics:{requestId:0},url:null,async:true,method:null,username:"",password:"",disableCaching:true,withCredentials:false,binary:false,cors:false,isXdr:false,defaultXdrContentType:"text/plain",disableCachingParam:"_dc",timeout:30000,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",constructor:function(a){a=a||{};Ext.apply(this,a);this.requests={};this.mixins.observable.constructor.call(this)},request:function(l){l=l||{};var g=this,k=l.scope||window,e=l.username||g.username,h=l.password||g.password||"",b,c,d,a,j;if(g.fireEvent("beforerequest",g,l)!==false){c=g.setOptions(l,k);if(g.isFormUpload(l)){g.upload(l.form,c.url,c.data,l);return null}if(l.autoAbort||g.autoAbort){g.abort()}b=l.async!==false?(l.async||g.async):false;j=g.openRequest(l,c,b,e,h);if(!g.isXdr){a=g.setupHeaders(j,l,c.data,c.params)}d={id:++Ext.data.Connection.requestId,xhr:j,headers:a,options:l,async:b,binary:l.binary||g.binary,timeout:setTimeout(function(){d.timedout=true;g.abort(d)},l.timeout||g.timeout)};g.requests[d.id]=d;g.latestId=d.id;if(b){if(!g.isXdr){j.onreadystatechange=Ext.Function.bind(g.onStateChange,g,[d])}}if(g.isXdr){g.processXdrRequest(d,j)}j.send(c.data);if(!b){return g.onComplete(d)}return d}else{Ext.callback(l.callback,l.scope,[l,undefined,undefined]);return null}},processXdrRequest:function(b,c){var a=this;delete b.headers;b.contentType=b.options.contentType||a.defaultXdrContentType;c.onload=Ext.Function.bind(a.onStateChange,a,[b,true]);c.onerror=c.ontimeout=Ext.Function.bind(a.onStateChange,a,[b,false])},processXdrResponse:function(a,b){a.getAllResponseHeaders=function(){return[]};a.getResponseHeader=function(){return""};a.contentType=b.contentType||this.defaultXdrContentType},upload:function(b,g,t,e){b=Ext.getDom(b);e=e||{};var o=Ext.id(),m=document.createElement("iframe"),c=[],d="multipart/form-data",s={target:b.target,method:b.method,encoding:b.encoding,enctype:b.enctype,action:b.action},a=function(h,v){j=document.createElement("input");Ext.fly(j).set({type:"hidden",value:v,name:h});b.appendChild(j);c.push(j)},j,l,q,u,p,k,n,r;Ext.fly(m).set({id:o,name:o,cls:Ext.baseCSSPrefix+"hide-display",src:Ext.SSL_SECURE_URL});document.body.appendChild(m);if(document.frames){document.frames[o].name=o}Ext.fly(b).set({target:o,method:"POST",enctype:d,encoding:d,action:g||s.action});if(t){l=Ext.Object.fromQueryString(t)||{};for(u in l){if(l.hasOwnProperty(u)){q=l[u];if(Ext.isArray(q)){p=q.length;for(k=0;k<p;k++){a(u,q[k])}}else{a(u,q)}}}}Ext.fly(m).on("load",Ext.Function.bind(this.onUploadComplete,this,[m,e]),null,{single:!Ext.isOpera});b.submit();Ext.fly(b).set(s);n=c.length;for(r=0;r<n;r++){Ext.removeNode(c[r])}},onUploadComplete:function(a,l){var g=this,b={responseText:"",responseXML:null},j,k,h,c;try{h=a.contentWindow.document||a.contentDocument||window.frames[a.id].document;if(h){if(Ext.isOpera&&h.location=="about:blank"){return}if(h.body){if((c=h.body.firstChild)&&/pre/i.test(c.tagName)){b.responseText=c.textContent}else{if((c=h.getElementsByTagName("textarea")[0])){b.responseText=c.value}else{b.responseText=h.body.textContent||h.body.innerText}}}b.responseXML=h.XMLDocument||h;j=l.success;k=true}}catch(d){b.responseText='{success:false,message:"'+Ext.String.trim(d.message||d.description)+'"}';j=l.failure;k=false}g.fireEvent("requestcomplete",g,b,l);Ext.callback(j,l.scope,[b,l]);Ext.callback(l.callback,l.scope,[l,k,b]);setTimeout(function(){Ext.removeNode(a)},100)},isFormUpload:function(a){var b=this.getForm(a);if(b){return(a.isUpload||(/multipart\/form-data/i).test(b.getAttribute("enctype")))}return false},getForm:function(a){return Ext.getDom(a.form)||null},setOptions:function(m,l){var j=this,e=m.params||{},h=j.extraParams,d=m.urlParams,c=m.url||j.url,k=m.jsonData,b,a,g;if(Ext.isFunction(e)){e=e.call(l,m)}if(Ext.isFunction(c)){c=c.call(l,m)}c=this.setupUrl(m,c);g=m.rawData||m.binaryData||m.xmlData||k||null;if(k&&!Ext.isPrimitive(k)){g=Ext.encode(g)}if(m.binaryData){if(j.nativeBinaryPostSupport()){g=(new Uint8Array(m.binaryData));if((Ext.isChrome&&Ext.chromeVersion<22)||Ext.isSafari||Ext.isGecko){g=g.buffer}}}if(Ext.isObject(e)){e=Ext.Object.toQueryString(e)}if(Ext.isObject(h)){h=Ext.Object.toQueryString(h)}e=e+((h)?((e)?"&":"")+h:"");d=Ext.isObject(d)?Ext.Object.toQueryString(d):d;e=this.setupParams(m,e);b=(m.method||j.method||((e||g)?"POST":"GET")).toUpperCase();this.setupMethod(m,b);a=m.disableCaching!==false?(m.disableCaching||j.disableCaching):false;if(b==="GET"&&a){c=Ext.urlAppend(c,(m.disableCachingParam||j.disableCachingParam)+"="+(new Date().getTime()))}if((b=="GET"||g)&&e){c=Ext.urlAppend(c,e);e=null}if(d){c=Ext.urlAppend(c,d)}return{url:c,method:b,data:g||e||null}},setupUrl:function(b,a){var c=this.getForm(b);if(c){a=a||c.action}return a},setupParams:function(a,d){var c=this.getForm(a),b;if(c&&!this.isFormUpload(a)){b=Ext.Element.serializeForm(c);d=d?(d+"&"+b):b}return d},setupMethod:function(a,b){if(this.isFormUpload(a)){return"POST"}return b},setupHeaders:function(n,o,d,c){var j=this,b=Ext.apply({},o.headers||{},j.defaultHeaders||{}),m=j.defaultPostHeader,k=o.jsonData,a=o.xmlData,l,g;if(!b["Content-Type"]&&(d||c)){if(d){if(o.rawData){m="text/plain"}else{if(a&&Ext.isDefined(a)){m="text/xml"}else{if(k&&Ext.isDefined(k)){m="application/json"}}}}b["Content-Type"]=m}if(j.useDefaultXhrHeader&&!b["X-Requested-With"]){b["X-Requested-With"]=j.defaultXhrHeader}try{for(l in b){if(b.hasOwnProperty(l)){g=b[l];n.setRequestHeader(l,g)}}}catch(h){j.fireEvent("exception",l,g)}return b},newRequest:function(a){var b=this,c;if(a.binaryData){if(b.nativeBinaryPostSupport()){c=this.getXhrInstance()}else{c=new Ext.data.flash.BinaryXhr()}}else{if((a.cors||b.cors)&&Ext.isIE&&Ext.ieVersion<=9){c=b.getXdrInstance();b.isXdr=true}else{c=b.getXhrInstance()}}return c},openRequest:function(c,a,d,h,b){var e=this,g=e.newRequest(c);if(h){g.open(a.method,a.url,d,h,b)}else{if(e.isXdr){g.open(a.method,a.url)}else{g.open(a.method,a.url,d)}}if(c.binary||e.binary){if(window.Uint8Array){g.responseType="arraybuffer"}else{if(g.overrideMimeType){g.overrideMimeType("text/plain; charset=x-user-defined")}}}if(c.withCredentials||e.withCredentials){g.withCredentials=true}return g},getXdrInstance:function(){var a;if(Ext.ieVersion>=8){a=new XDomainRequest()}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c<a;++c){try{g=b[c];g();break}catch(d){}}return g}()),isLoading:function(a){if(!a){a=this.getLatest()}if(!(a&&a.xhr)){return false}var b=a.xhr.readyState;return((a.xhr instanceof Ext.data.flash.BinaryXhr)&&b!=4)||!(b===0||b==4)},abort:function(b){var a=this,d;if(!b){b=a.getLatest()}if(b&&a.isLoading(b)){d=b.xhr;try{d.onreadystatechange=null}catch(c){d.onreadystatechange=Ext.emptyFn}d.abort();a.clearTimeout(b);if(!b.timedout){b.aborted=true}a.onComplete(b);a.cleanup(b)}},abortAll:function(){var b=this.requests,a;for(a in b){if(b.hasOwnProperty(a)){this.abort(b[a])}}},getLatest:function(){var b=this.latestId,a;if(b){a=this.requests[b]}return a||null},onStateChange:function(c,a){var b=this;if((c.xhr&&c.xhr.readyState==4)||b.isXdr){b.clearTimeout(c);b.onComplete(c,a);b.cleanup(c);Ext.EventManager.idleEvent.fire()}},clearTimeout:function(a){clearTimeout(a.timeout);delete a.timeout},cleanup:function(a){a.xhr=null;delete a.xhr},onComplete:function(h,d){var g=this,c=h.options,a,k,b;try{a=g.parseStatus(h.xhr.status)}catch(j){a={success:false,isException:false}}k=g.isXdr?d:a.success;if(k){b=g.createResponse(h);g.fireEvent("requestcomplete",g,b,c);Ext.callback(c.success,c.scope,[b,c])}else{if(a.isException||h.aborted||h.timedout){b=g.createException(h)}else{b=g.createResponse(h)}g.fireEvent("requestexception",g,b,c);Ext.callback(c.failure,c.scope,[b,c])}Ext.callback(c.callback,c.scope,[c,k,b]);delete g.requests[h.id];return b},parseStatus:function(a){a=a==1223?204:a;var c=(a>=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var j=this,l=e.xhr,c=j.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){j.processXdrResponse(d,l)}if(e.binary){d.responseBytes=j.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(k){var c=k.response,j=k.responseBody,b,g,a,d;if(k instanceof Ext.data.flash.BinaryXhr){b=k.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=new VBArray(j).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(k.responseBody,b=[])}else{b=[];g=k.responseText;a=g.length;for(d=0;d<a;d++){b.push(g.charCodeAt(d)&255)}}}}}return b},injectVBScript:function(){var a=document.createElement("script");a.type="text/vbscript";a.text=["Function getIEByteArray(byteArray, out)","Dim len, i","len = LenB(byteArray)","For i = 1 to len","out.push(AscB(MidB(byteArray, i, 1)))","Next","End Function"].join("\n");Ext.getHead().dom.appendChild(a);this.self.vbScriptInjected=true},nativeBinaryPostSupport:function(){return Ext.isChrome||(Ext.isSafari&&Ext.isDefined(window.Uint8Array))||(Ext.isGecko&&Ext.isDefined(window.Uint8Array))}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data,"Connection"],0));(Ext.cmd.derive("Ext.Ajax",Ext.data.Connection,{singleton:true,autoAbort:false},0,0,0,0,0,0,[Ext,"Ajax"],0));(Ext.cmd.derive("Ext.util.Floating",Ext.Base,{focusOnToFront:true,shadow:"sides",constrain:false,constructor:function(b){var a=this;a.fixed=a.fixed&&!(Ext.isIE6||Ext.isIEQuirks);a.el=new Ext.dom.Layer(Ext.apply({preventSync:true,hideMode:a.hideMode,hidden:a.hidden,shadow:(typeof a.shadow!="undefined")?a.shadow:"sides",shadowOffset:a.shadowOffset,constrain:false,fixed:a.fixed,shim:(a.shim===false)?false:undefined},a.floating),b);if(a.modal&&!(Ext.FocusManager&&Ext.FocusManager.enabled)){a.mon(a.el,{keydown:a.onKeyDown,scope:a})}a.mon(a.el,{mousedown:a.onMouseDown,scope:a});a.floating=true;a.registerWithOwnerCt();a.initHierarchyEvents()},initHierarchyEvents:function(){var b=this,a=this.syncHidden;if(!b.hasHierarchyEventListeners){b.mon(b.hierarchyEventSource,{hide:a,collapse:a,show:a,expand:a,added:a,scope:b});b.hasHierarchyEventListeners=true}},registerWithOwnerCt:function(){var c=this,b=c.ownerCt,a=c.zIndexParent;if(a){a.unregisterFloatingItem(c)}a=c.zIndexParent=c.up("[floating]");c.setFloatParent(b||a);delete c.ownerCt;if(a){a.registerFloatingItem(c)}else{Ext.WindowManager.register(c)}},onKeyDown:function(d){var c=this,a,h,g,b;if(d.getKey()==Ext.EventObject.TAB){a=d.shiftKey;h=c.el.query(":focusable");g=h[0];b=h[h.length-1];if(g&&b&&d.target===(a?g:b)){d.stopEvent();(a?b:g).focus(false,true)}}},onMouseDown:function(b){var a=this.focusTask;if(this.floating&&(!a||!a.id)){this.toFront(!!b.getTarget(":focusable"))}},setFloatParent:function(b){var a=this;a.floatParent=b;if((a.constrain||a.constrainHeader)&&!a.constrainTo){a.constrainTo=b?b.getTargetEl():a.container}},syncShadow:function(){if(this.floating){this.el.sync(true)}},onBeforeFloatLayout:function(){this.el.preventSync=true},onAfterFloatLayout:function(){delete this.el.preventSync;this.syncShadow()},syncHidden:function(){var c=this,d=c.hidden||!c.rendered,a=c.hierarchicallyHidden=c.isHierarchicallyHidden(),b=c.pendingShow;if(d!==a){if(a){c.hide();c.pendingShow=true}else{if(b){delete c.pendingShow;if(b.length){c.show.apply(c,b)}else{c.show()}}}}},setZIndex:function(a){var b=this;b.el.setZIndex(a);a+=10;if(b.floatingDescendants){a=Math.floor(b.floatingDescendants.setBase(a)/100)*100+10000}return a},doConstrain:function(a){var b=this,c=b.calculateConstrainedPosition(a,null,true);if(c){b.setPosition(c)}},toFront:function(c){var b=this,a=b.zIndexParent,d=b.preventFocusOnActivate;if(a&&b.bringParentToFront!==false){a.toFront(true)}if(!Ext.isDefined(c)){c=!b.focusOnToFront}if(c){b.preventFocusOnActivate=true}if(b.zIndexManager.bringToFront(b,c)){if(!c){b.focus(false,true)}}b.preventFocusOnActivate=d;return b},setActive:function(b,c){var a=this;if(b){if(a.el.shadow&&!a.maximized){a.el.enableShadow(true)}if(!a.preventFocusOnActivate){a.focus(false,true)}a.fireEvent("activate",a)}else{if(a.isWindow&&(c&&c.isWindow)&&a.hideShadowOnDeactivate){a.el.disableShadow()}a.fireEvent("deactivate",a)}},toBack:function(){this.zIndexManager.sendToBack(this);return this},center:function(){var a=this,b;if(a.isVisible()){b=a.getAlignToXY(a.container,"c-c");a.setPagePosition(b)}else{a.needsCenter=true}return a},onFloatShow:function(){if(this.needsCenter){this.center()}delete this.needsCenter},fitContainer:function(c){var g=this,e=g.floatParent,b=e?e.getTargetEl():g.container,a=b.getViewSize(false),d=e||(b.dom!==document.body)?[0,0]:b.getXY();a.x=d[0];a.y=d[1];g.setBox(a,c)}},1,0,0,0,0,0,[Ext.util,"Floating"],0));(Ext.cmd.derive("Ext.Component",Ext.AbstractComponent,{statics:{DIRECTION_TOP:"top",DIRECTION_RIGHT:"right",DIRECTION_BOTTOM:"bottom",DIRECTION_LEFT:"left",VERTICAL_DIRECTION_Re:/^(?:top|bottom)$/,INVALID_ID_CHARS_Re:/[\.,\s]/g},resizeHandles:"all",floating:false,defaultAlign:"tl-bl?",toFrontOnShow:true,hideMode:"display",offsetsCls:Ext.baseCSSPrefix+"hide-offsets",bubbleEvents:[],defaultComponentLayoutType:"autocomponent",constructor:function(a){var b=this;a=a||{};if(a.initialConfig){if(a.isAction){b.baseAction=a}a=a.initialConfig}else{if(a.tagName||a.dom||Ext.isString(a)){a={applyTo:a,id:a.id||a}}}b.callParent([a]);if(b.baseAction){b.baseAction.addComponent(b)}},initComponent:function(){var a=this;a.callParent();if(a.listeners){a.on(a.listeners);a.listeners=null}a.enableBubble(a.bubbleEvents)},afterRender:function(){var a=this;a.callParent();if(!(a.x&&a.y)&&(a.pageX||a.pageY)){a.setPagePosition(a.pageX,a.pageY)}},setAutoScroll:function(a){var b=this;b.autoScroll=!!a;if(b.rendered){b.getOverflowEl().setStyle(b.getOverflowStyle())}b.updateLayout();return b},setOverflowXY:function(b,a){var c=this,d=arguments.length;if(d){c.overflowX=b||"";if(d>1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},beforeLayout:function(){this.callParent(arguments);if(this.floating){this.onBeforeFloatLayout()}},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:(c.constrain||c.draggable.constrain)?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container)):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if((a===true)&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if((a===true)&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||(c.floating&&!e&&c.isHierarchicallyHidden())){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;Ext.suspendLayouts();if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();Ext.resumeLayouts();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}else{Ext.resumeLayouts(true)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,j=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:j.getX(),y:j.getY(),width:j.dom.offsetWidth,height:j.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};j.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;j.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=(d.fireEvent("beforehide",d)!==false);if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(h,a,e){var g=this,c,d,b;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){b={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!h){g.afterHide(a,e)}},afterHide:function(a,b){var c=this,d=Ext.Element.getActiveElement();c.hiddenByLayout=null;Ext.AbstractComponent.prototype.onHide.call(c);if(d===c.el||c.el.contains(d)){Ext.fly(d).blur()}Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c<a;++c){delete this[b[c]]}},focus:function(g,c,j,d){var e=this,a,h,b;if(c){if(!e.focusTask){Ext.Component.prototype.focusTask=new Ext.util.DelayedTask(e.focus)}e.focusTask.delay(Ext.isNumber(c)?c:10,null,e,[g,false,j,d]);return e}if(e.focusTask){e.focusTask.cancel()}if(e.rendered&&!e.isDestroyed&&e.isVisible(true)&&(a=e.getFocusEl())){if(a.isComponent){return a.focus(g,c)}if((h=a.dom)){if(a.needsTabIndex()){h.tabIndex=-1}if(e.floating){b=e.container.dom.scrollTop}a.focus();if(g===true){h.select()}Ext.callback(j,d)}if(e.floating){e.toFront(true);if(b!==undefined){e.container.dom.scrollTop=b}}}return e},cancelFocus:function(){var a=this.focusTask;if(a){a.cancel()}},blur:function(){var a;if(this.rendered&&(a=this.getFocusEl())){a.blur()}return this},getEl:function(){return this.el},getResizeEl:function(){return this.el},getPositionEl:function(){return this.el},getActionEl:function(){return this.el},getVisibilityEl:function(){return this.el},getRefOwner:function(){return this.ownerCt||this.floatParent},getBubbleTarget:function(){return this.getRefOwner()},getContentTarget:function(){return this.el},cloneConfig:function(c){c=c||{};var d=c.id||Ext.id(),a=Ext.applyIf(c,this.initialConfig),b;a.id=d;b=Ext.getClass(this);return new b(a)},getXType:function(){return this.self.xtype},findParentBy:function(a){var b;for(b=this.getBubbleTarget();b&&!a(b,this);b=b.getBubbleTarget()){}return b||null},findParentByType:function(a){return Ext.isFunction(a)?this.findParentBy(function(b){return b.constructor===a}):this.up(a)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.getBubbleTarget()}return this},getProxy:function(){var a=this,b;if(!a.proxy){b=Ext.getBody();a.proxy=a.el.createProxy(Ext.baseCSSPrefix+"proxy-el",b,true)}return a.proxy},fireHierarchyEvent:function(a){this.hierarchyEventSource.fireEvent(a,this)},onAdded:function(){this.callParent(arguments);if(this.hierarchyEventSource.hasListeners.added){this.fireHierarchyEvent("added")}}},1,["component","box"],["component","box"],{component:true,box:true},["widget.box","widget.component"],[["floating",Ext.util.Floating]],[Ext,"Component"],function(){this.hierarchyEventSource=this.prototype.hierarchyEventSource=new Ext.util.Observable({events:{hide:true,show:true,collapse:true,expand:true,added:true}})}));Ext.define("Ext.layout.container.border.Region",{override:"Ext.Component",initBorderRegion:function(){var a=this;if(!a._borderRegionInited){a._borderRegionInited=true;a.addStateEvents(["changeregion","changeweight"]);Ext.override(a,{getState:function(){var b=a.callParent();b=a.addPropertyToState(b,"region");b=a.addPropertyToState(b,"weight");return b}})}},getOwningBorderContainer:function(){var a=this.getOwningBorderLayout();return a&&a.owner},getOwningBorderLayout:function(){var a=this.ownerLayout;return(a&&a.isBorderLayout)?a:null},setBorderRegion:function(l){var k=this,c,d=k.region;if(l!==d){c=k.getOwningBorderLayout();if(c){var g=c.regionFlags[l],m=k.placeholder,a=k.splitter,b=c.owner,o=c.regionMeta,e=k.collapsed||k.floated,n,j,h;if(k.fireEventArgs("beforechangeregion",[k,l])===false){return d}Ext.suspendLayouts();k.region=l;Ext.apply(k,g);if(k.updateCollapseTool){k.updateCollapseTool()}if(a){Ext.apply(a,g);a.updateOrientation();j=b.items;h=j.indexOf(k);if(h>=0){n=o[l].splitterDelta;if(j.getAt(h+n)!==a){j.remove(a);h=j.indexOf(k);if(n>0){++h}j.insert(h,a)}}}if(m){if(e){k.expand(false)}b.remove(m);k.placeholder=null;if(e){k.collapse(null,false)}}b.updateLayout();Ext.resumeLayouts(true);k.fireEventArgs("changeregion",[k,d])}else{k.region=l}}return d},setRegionWeight:function(d){var c=this,b=c.getOwningBorderContainer(),e=c.placeholder,a=c.weight;if(d!==a){if(c.fireEventArgs("beforechangeweight",[c,d])!==false){c.weight=d;if(e){e.weight=d}if(b){b.updateLayout()}c.fireEventArgs("changeweight",[c,a])}}return a}});(Ext.cmd.derive("Ext.ElementLoader",Ext.Base,{statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"ElementLoader"],0));(Ext.cmd.derive("Ext.ComponentLoader",Ext.ElementLoader,{statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var j=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){j=false}if(j){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return j}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,"ComponentLoader"],0));(Ext.cmd.derive("Ext.layout.SizeModel",Ext.Base,{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},1,0,0,0,0,0,[Ext.layout,"SizeModel"],function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c<h;++c){d=a[c];d.pairsByHeightOrdinal=g=[];for(b=0;b<h;++b){g.push({width:d,height:a[b]})}}}));(Ext.cmd.derive("Ext.layout.Layout",Ext.Base,{isLayout:true,initialized:false,running:false,autoSizePolicy:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},statics:{layoutsByType:{},create:function(g,e){var l=Ext.ClassManager,c=this.layoutsByType,d,h,b,a,j,k;if(!g||typeof g==="string"){j=g||e;b={}}else{if(g.isLayout){return g}else{b=g;j=g.type||e}}if(!(a=c[j])){d="layout."+j;h=l.getNameByAlias(d);if(!h){k=true}a=l.get(h);if(k||!a){return l.instantiateByAlias(d,b||{})}c[j]=a}return new a(b)}},constructor:function(a){var b=this;b.id=Ext.id(null,b.type+"-");Ext.apply(b,a);b.layoutCount=0},beginLayout:Ext.emptyFn,beginLayoutCycle:function(c){var b=this,a=b.context,d;if(b.lastWidthModel!=c.widthModel){if(b.lastWidthModel){d=true}b.lastWidthModel=c.widthModel}if(b.lastHeightModel!=c.heightModel){if(b.lastWidthModel){d=true}b.lastHeightModel=c.heightModel}if(d){(a=c.context).clearTriggers(b,false);a.clearTriggers(b,true);b.triggerCount=0}},finishedLayout:function(a){this.lastWidthModel=a.widthModel;this.lastHeightModel=a.heightModel;this.ownerContext=null},redoLayout:Ext.emptyFn,undoLayout:Ext.emptyFn,getAnimatePolicy:function(){return this.animatePolicy},getItemSizePolicy:function(a){return this.autoSizePolicy},isItemBoxParent:function(a){return false},isItemLayoutRoot:function(d){var c=d.getSizeModel(),b=c.width,a=c.height;if(!d.componentLayout.lastComponentSize&&(b.calculated||a.calculated)){return false}return !b.shrinkWrap&&!a.shrinkWrap},isItemShrinkWrap:function(a){return a.shrinkWrap},isRunning:function(){return !!this.ownerContext},getItemsRenderTree:function(d,b){var h=d.length,e,g,c,a;if(h){a=[];for(e=0;e<h;++e){g=d[e];if(!g.rendered){if(b&&(b[g.id]!==undefined)){c=b[g.id]}else{this.configureItem(g);c=g.getRenderTree();if(b){b[g.id]=c}}if(c){a.push(c)}}}}return a},finishRender:Ext.emptyFn,finishRenderItems:function(e,a){var d=a.length,b,c;for(b=0;b<d;b++){c=a[b];if(c.rendering){c.finishRender(b);this.afterRenderItem(c)}}},renderChildren:function(){var b=this,a=b.getLayoutItems(),c=b.getRenderTarget();b.renderItems(a,c)},renderItems:function(a,g){var e=this,d=a.length,b=0,c;if(d){Ext.suspendLayouts();for(;b<d;b++){c=a[b];if(c&&!c.rendered){e.renderItem(c,g,b)}else{if(!e.isValidParent(c,g,b)){e.moveItem(c,g,b)}else{e.configureItem(c)}}}Ext.resumeLayouts(true)}},isValidParent:function(g,h,b){var c=g.el?g.el.dom:Ext.getDom(g),e=(h&&h.dom)||h,a=c.parentNode,d;if(a){d=a.className;if(d&&d.indexOf(Ext.baseCSSPrefix+"resizable-wrap")!==-1){c=c.parentNode}}if(c&&e){if(typeof b=="number"){b=this.getPositionOffset(b);return c===e.childNodes[b]}return c.parentNode===e}return false},getPositionOffset:function(a){return a},configureItem:function(a){a.ownerLayout=this},renderItem:function(c,d,a){var b=this;if(!c.rendered){b.configureItem(c);c.render(d,a);b.afterRenderItem(c)}},moveItem:function(b,c,a){c=c.dom||c;if(typeof a=="number"){a=c.childNodes[a]}c.insertBefore(b.el.dom,a||null);b.container=Ext.get(c);this.configureItem(b)},onContentChange:function(){this.owner.updateLayout();return true},initLayout:function(){this.initialized=true},setOwner:function(a){this.owner=a},getLayoutItems:function(){return[]},onAdd:function(a){a.ownerLayout=this},afterRenderItem:Ext.emptyFn,onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,afterRemove:function(e){var d=this,c=e.el,b=d.owner,a;if(e.rendered){a=[].concat(d.itemCls||[]);if(b.itemCls){a=Ext.Array.push(a,b.itemCls)}if(a.length){c.removeCls(a)}}delete e.ownerLayout},destroy:function(){var a=this,b;if(a.targetCls){b=a.getTarget();if(b){b.removeCls(a.targetCls)}}a.onDestroy()},sortWeightedItems:function(a,d){for(var b=0,c=a.length;b<c;++b){a[b].$i=b}Ext.Array.sort(a,function(g,e){var h=e.weight-g.weight;if(!h){h=g.$i-e.$i;if(g[d]){h=-h}}return h});for(b=0;b<c;++b){delete a[b].$i}}},1,0,0,0,0,0,[Ext.layout,"Layout"],function(){var a=this;a.prototype.sizeModels=a.sizeModels=Ext.layout.SizeModel.sizeModels}));(Ext.cmd.derive("Ext.layout.container.Container",Ext.layout.Layout,{alternateClassName:"Ext.layout.ContainerLayout",type:"container",beginCollapse:Ext.emptyFn,beginExpand:Ext.emptyFn,animatePolicy:null,childEls:["overflowPadderEl"],renderTpl:["{%this.renderBody(out,values)%}"],usesContainerHeight:true,usesContainerWidth:true,usesHeight:true,usesWidth:true,constructor:function(){this.callParent(arguments);this.mixins.elementCt.constructor.call(this)},destroy:function(){this.callParent();this.mixins.elementCt.destroy.call(this)},beginLayout:function(a){this.callParent(arguments);a.targetContext=a.paddingContext=a.getEl("getTarget",this);this.cacheChildItems(a)},beginLayoutCycle:function(c,a){var b=this;b.callParent(arguments);if(a){if(b.usesContainerHeight){++c.consumersContainerHeight}if(b.usesContainerWidth){++c.consumersContainerWidth}}},cacheChildItems:function(e){var c=e.context,g=[],a=this.getVisibleItems(),d=a.length,b;e.childItems=g;e.visibleItems=a;for(b=0;b<d;++b){g.push(c.getCmp(a[b]))}},cacheElements:function(){var a=this.owner;this.applyChildEls(a.el,a.id)},configureItem:function(c){var b=this,d=b.itemCls,a=b.owner.itemCls,e;c.ownerLayout=b;if(d){e=typeof d==="string"?[d]:d}if(a){e=Ext.Array.push(e||[],a)}if(e){c.addCls(e)}},doRenderBody:function(a,b){this.renderItems(a,b);this.renderContent(a,b)},doRenderContainer:function(b,e){var c=e.$comp.layout,a=c.getRenderTpl(),d=c.getRenderData();a.applyOut(d,b)},doRenderItems:function(b,d){var c=d.$layout,a=c.getRenderTree();if(a){Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var b=this,c,a;b.callParent();b.cacheElements();c=b.getRenderTarget();a=b.getLayoutItems();b.finishRenderItems(c,a)},notifyOwner:function(){this.owner.afterLayout(this)},getContainerSize:function(b,g){var c=b.targetContext,e=c.getFrameInfo(),k=b.paddingContext.getPaddingInfo(),j=0,l=0,d,h,a,m;if(!b.widthModel.shrinkWrap){++l;a=g?c.getDomProp("width"):c.getProp("width");d=(typeof a=="number");if(d){++j;a-=e.width+k.width;if(a<0){a=0}}}if(!b.heightModel.shrinkWrap){++l;m=g?c.getDomProp("height"):c.getProp("height");h=(typeof m=="number");if(h){++j;m-=e.height+k.height;if(m<0){m=0}}}return{width:a,height:m,needed:l,got:j,gotAll:j==l,gotWidth:d,gotHeight:h}},getPositionOffset:function(a){if(!this.createsInnerCt){var b=this.owner.itemNodeOffset;if(b){a+=b}}return a},getLayoutItems:function(){var a=this.owner,b=a&&a.items;return(b&&b.items)||[]},getRenderData:function(){var a=this.owner;return{$comp:a,$layout:this,ownerId:a.id}},getRenderedItems:function(){var e=this,h=e.getRenderTarget(),a=e.getLayoutItems(),d=a.length,g=[],b,c;for(b=0;b<d;b++){c=a[b];if(c.rendered&&e.isValidParent(c,h,b)){g.push(c)}}return g},getRenderTarget:function(){return this.owner.getTargetEl()},getElementTarget:function(){return this.getRenderTarget()},getRenderTpl:function(){var a=this,b=Ext.XTemplate.getTpl(this,"renderTpl");if(!b.renderContent){a.owner.setupRenderTpl(b)}return b},getRenderTree:function(){var a,c=this.owner.items,d,b={};do{d=c.generation;a=this.getItemsRenderTree(this.getLayoutItems(),b)}while(c.generation!==d);return a},renderChildren:function(){var b=this,c=b.owner.items,e=b.getRenderTarget(),d,a;do{d=c.generation;a=b.getLayoutItems();b.renderItems(a,e)}while(c.generation!==d)},getScrollbarsNeeded:function(c,j,b,h){var a=Ext.getScrollbarSize(),e=typeof c=="number",k=typeof j=="number",g=0,d=0;if(!a.width){return 0}if(k&&j<h){d=2;c-=a.width}if(e&&c<b){g=1;if(!d&&k){j-=a.height;if(j<h){d=2}}}return d+g},getTarget:function(){return this.owner.getTargetEl()},getVisibleItems:function(){var g=this.getRenderTarget(),b=this.getLayoutItems(),e=b.length,a=[],c,d;for(c=0;c<e;c++){d=b[c];if(d.rendered&&this.isValidParent(d,g,c)&&d.hidden!==true){a.push(d)}}return a},setupRenderTpl:function(b){var a=this;b.renderBody=a.doRenderBody;b.renderContainer=a.doRenderContainer;b.renderItems=a.doRenderItems},getContentTarget:function(){return this.owner.getDefaultContentTarget()}},1,0,0,0,["layout.container"],[["elementCt",Ext.util.ElementContainer]],[Ext.layout.container,"Container",Ext.layout,"ContainerLayout"],0));(Ext.cmd.derive("Ext.layout.container.Auto",Ext.layout.container.Container,{type:"autocontainer",childEls:["outerCt","innerCt","clearEl"],reserveScrollbar:false,managePadding:true,manageOverflow:false,lastOverflowAdjust:{width:0,height:0},renderTpl:["{% if (!(Ext.isIEQuirks || Ext.isIE7m)) { %}",'<span id="{ownerId}-outerCt" style="display:table;">','<div id="{ownerId}-innerCt" style="display:table-cell;height:100%;','vertical-align:top;{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"{%this.renderBody(out,values)%}","</div>","</span>","{% } else if (values.shrinkWrapWidth) { %}",'<table id="{ownerId}-outerCt" class="'+Ext.plainTableCls+'">',"<tr>",'<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</td>","</tr>","</table>","{% } else { %}",'<div id="{ownerId}-outerCt" style="zoom:1;{%this.renderPadding(out, values)%}">','<div id="{ownerId}-innerCt" style="zoom:1;height:100%;" class="{innerCtCls}">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</div>","</div>","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['<table id="{ownerId}-outerCt" class="'+Ext.plainTableCls+'">',"<tr>",'<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"</td>","</tr>","</table>"],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(h){var m=this,c=m.outerCt,l=m.lastOuterCtWidth||"",k=m.lastOuterCtHeight||"",n=m.lastOuterCtTableLayout||"",b=h.state,o,g,j,p,d,a,e;m.callParent(arguments);j=p=d="";if(!h.widthModel.shrinkWrap&&m.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=m.getOverflowYStyle(h);if(g==="auto"||g==="scroll"){a=true}}if(!a){j="100%"}e=m.owner.hierarchyStateInner;o=m.getOverflowXStyle(h);d=(e.inShrinkWrapTable||o==="auto"||o==="scroll")?"":"fixed"}if(!h.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){p="100%"}if((j!==l)||m.hasOuterCtPxWidth){c.setStyle("width",j);m.lastOuterCtWidth=j;m.hasOuterCtPxWidth=false}if(d!==n){c.setStyle("table-layout",d);m.lastOuterCtTableLayout=d}if((p!==k)||m.hasOuterCtPxHeight){c.setStyle("height",p);m.lastOuterCtHeight=p;m.hasOuterCtPxHeight=false}if(m.hasInnerCtPxHeight){m.innerCt.setStyle("height","");m.hasInnerCtPxHeight=false}b.overflowAdjust=b.overflowAdjust||m.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=((g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0)),c=(a&1)||undefined,h=(a&2)||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,j;e=(h.getOverflowXStyle(c)==="auto");d=(h.getOverflowYStyle(c)==="auto");if(e||d){a=Ext.getScrollbarSize();j=c.overflowContext.el.dom;g=0;if(j.scrollWidth>j.clientWidth){g|=1}if(j.scrollHeight>j.clientHeight){g|=2}b=(d&&(g&2))?a.width:0;k=(e&&(g&1))?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",a.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&((a.shrinkWrap&1)||(a.floating&&!a.width))){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,k,d,j;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();k=h.innerCt.dom.childNodes;d=k.length;for(;c<d;c++){g.appendChild(k[0])}j=h.getTarget();j.dom.innerHTML=e.apply({$layout:h,ownerId:h.owner.id});j.down("td").dom.appendChild(g);h.applyChildEls(a.el,a.id);h.isShrinkWrapTpl=true;b.removeEl(h.outerCt);b.removeEl(h.innerCt);h.initContextItems(b)},measureContentHeight:function(b){var a=this.outerCt.getHeight(),c=b.target;if(this.managePadding&&(c[c.contentPaddingProperty]===undefined)){a+=b.targetContext.getPaddingInfo().height}return a},measureContentWidth:function(d){var g,c,b,a,e;if(this.chromeCellMeasureBug){g=this.innerCt.dom;c=g.style;b=c.display;if(b=="table-cell"){c.display="";g.offsetWidth;c.display=b}}a=this.outerCt.getWidth();e=d.target;if(this.managePadding&&(e[e.contentPaddingProperty]===undefined)){a+=d.targetContext.getPaddingInfo().width}return a},setCtSizeIfNeeded:function(d,o){var t=this,m=o.width,j=o.height,g=d.paddingContext.getPaddingInfo(),k=t.getTarget(),e=t.getOverflowXStyle(d),l=t.getOverflowYStyle(d),p=(e==="auto"||e==="scroll"),n=(l==="auto"||l==="scroll"),q=Ext.getScrollbarSize(),r=t.isShrinkWrapTpl,b=t.manageOverflow,a,s,h,c;if(m&&!d.widthModel.shrinkWrap&&((Ext.isIE7m&&Ext.isStrict&&r&&n)||(Ext.isIEQuirks&&!r&&!p))){if(!b){if(n&&(k.dom.scrollHeight>k.dom.clientHeight)){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);t.hasOuterCtPxWidth=true}if(j&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){s=true}if(((Ext.isIE8&&Ext.isStrict)||Ext.isIE7m&&Ext.isStrict&&r)){h=true;c=!Ext.isIE8}if((s||h)&&p&&(k.dom.scrollWidth>k.dom.clientWidth)){j=Math.max(j-q.height,0)}if(s){d.outerCtContext.setProp("height",j+g.height);t.hasOuterCtPxHeight=true}if(h){if(c){j+=g.height}d.innerCtContext.setProp("height",j);t.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!r&&(l==="auto")){a=(e==="auto")?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,["layout.auto","layout.autocontainer"],0,[Ext.layout.container,"Auto"],function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26}));(Ext.cmd.derive("Ext.ZIndexManager",Ext.Base,{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e<b;e++){d=c[e];if(d&&!d.hidden){h=d.setZIndex(h);if(d.modal){g=d}}}if(g){this._showModalMask(g)}return h},_setActiveChild:function(b,a){var c=this.front,d=b.preventFocusOnActivate;if(b!==c){if(c&&!c.destroying){c.setActive(false,b)}this.front=b;if(b&&b!=a){b.preventFocusOnActivate=b.preventFocusOnActivate||a&&(a.preventFocusOnActivate||!a.focusOnToFront);b.setActive(true);if(b.modal){this._showModalMask(b)}b.preventFocusOnActivate=d}}},onComponentHide:function(a){this._activateLast()},_activateLast:function(){var d=this,a=d.zIndexStack,c=a.length-1,b;for(;c>=0&&a[c].hidden;--c){}if((b=a[c])){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d<a;d++){c=b[d];if(c.isVisible()){this.tempHidden.push(c);c.el.hide();c.hidden=true}}},show:function(){var c=0,d=this.tempHidden,a=d?d.length:0,b;for(;c<a;c++){b=d[c];b.el.show();b.hidden=false;b.setPosition(b.x,b.y)}delete this.tempHidden},getActive:function(){return this.front},getBy:function(g,e){var h=[],d=0,b=this.zIndexStack,a=b.length,c;for(;d<a;d++){c=b[d];if(g.call(e||c,c)!==false){h.push(c)}}return h},each:function(c,b){var d=this.list,e,a;for(e in d){if(d.hasOwnProperty(e)){a=d[e];if(a.isComponent&&c.call(b||a,a)===false){return}}}},eachBottomUp:function(g,e){var b=this.zIndexStack,d=0,a=b.length,c;for(;d<a;d++){c=b[d];if(c.isComponent&&g.call(e||c,c)===false){return}}},eachTopDown:function(e,d){var a=this.zIndexStack,c=a.length,b;for(;c-->0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},1,0,0,0,0,0,[Ext,"ZIndexManager",Ext,"WindowGroup"],function(){Ext.WindowManager=Ext.WindowMgr=new this()}));(Ext.cmd.derive("Ext.Queryable",Ext.Base,{isQueryable:true,query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d<a;++d){h=b[d];if(g.call(e||h,h)!==false){c.push(h)}}return c},queryById:function(a){return this.down("#"+a)},child:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query("> "+a)[0]||null},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},getRefItems:function(){return[]}},0,0,0,0,0,0,[Ext,"Queryable"],0));(Ext.cmd.derive("Ext.layout.component.Component",Ext.layout.Layout,{type:"component",isComponentLayout:true,nullBox:{},usesContentHeight:true,usesContentWidth:true,usesHeight:true,usesWidth:true,beginLayoutCycle:function(c,q){var l=this,b=l.owner,e=c.ownerCtContext,g=c.heightModel,h=c.widthModel,j=b.el.dom===document.body,d=b.lastBox||l.nullBox,o=b.el.lastBox||l.nullBox,a=!j,n,p,m,k;l.callParent(arguments);if(q){if(l.usesContentWidth){++c.consumersContentWidth}if(l.usesContentHeight){++c.consumersContentHeight}if(l.usesWidth){++c.consumersWidth}if(l.usesHeight){++c.consumersHeight}if(e&&!e.hasRawContent){n=b.ownerLayout;if(n.usesWidth){++c.consumersWidth}if(n.usesHeight){++c.consumersHeight}}}if(h.configured){m=h.names.width;if(!j){a=q?b[m]!==o.width:h.constrained}c.setWidth(b[m],a)}else{if(c.isTopLevel){if(h.calculated){p=d.width;c.setWidth(p,p!=o.width)}p=d.x;c.setProp("x",p,p!=o.x)}}if(g.configured){k=g.names.height;if(!j){a=q?b[k]!==o.height:g.constrained}c.setHeight(b[k],a)}else{if(c.isTopLevel){if(g.calculated){p=d.height;c.setHeight(p,p!=o.height)}p=d.y;c.setProp("y",p,p!=o.y)}}},finishedLayout:function(b){var h=this,k=b.children,a=h.owner,e,c,j,d,g;if(k){e=k.length;for(c=0;c<e;c++){j=k[c];j.el.lastBox=j.props}}b.previousSize=h.lastComponentSize;h.lastComponentSize=a.el.lastBox=g=b.props;d=a.lastBox||(a.lastBox={});d.x=g.x;d.y=g.y;d.width=g.width;d.height=g.height;d.invalid=false;h.callParent(arguments)},notifyOwner:function(d){var c=this,a=c.lastComponentSize,e=d.previousSize,b=[a.width,a.height];if(e){b.push(e.width,e.height)}c.owner.afterComponentLayout.apply(c.owner,b)},getTarget:function(){return this.owner.el},getRenderTarget:function(){return this.owner.el},cacheTargetInfo:function(b){var a=this,d=a.targetInfo,c;if(!d){c=b.getEl("getTarget",a);a.targetInfo=d={padding:c.getPaddingInfo(),border:c.getBorderInfo()}}return d},measureAutoDimensions:function(n,j){var u=this,a=u.owner,r=a.layout,d=n.heightModel,h=n.widthModel,c=n.boxParent,o=n.isBoxParent,b=n.props,k,v={gotWidth:false,gotHeight:false,isContainer:(k=!n.hasRawContent)},t=j||3,q,e,l=0,g=0,m,p,s;if(h.shrinkWrap&&n.consumersContentWidth){++l;q=!(t&1);if(k){if(q){v.contentWidth=0;v.gotWidth=true;++g}else{if((v.contentWidth=n.getProp("contentWidth"))!==undefined){v.gotWidth=true;++g}}}else{p=b.contentWidth;if(typeof p=="number"){v.contentWidth=p;v.gotWidth=true;++g}else{if(q){m=true}else{if(!n.hasDomProp("containerChildrenSizeDone")){m=false}else{if(o||!c||c.widthModel.shrinkWrap){m=true}else{m=c.hasDomProp("width")}}}if(m){if(q){s=0}else{if(r&&r.measureContentWidth){s=r.measureContentWidth(n)}else{s=u.measureContentWidth(n)}}if(!isNaN(v.contentWidth=s)){n.setContentWidth(s,true);v.gotWidth=true;++g}}}}}else{if(h.natural&&n.consumersWidth){++l;p=b.width;if(typeof p=="number"){v.width=p;v.gotWidth=true;++g}else{if(o||!c){m=true}else{m=c.hasDomProp("width")}if(m){if(!isNaN(v.width=u.measureOwnerWidth(n))){n.setWidth(v.width,false);v.gotWidth=true;++g}}}}}if(d.shrinkWrap&&n.consumersContentHeight){++l;e=!(t&2);if(k){if(e){v.contentHeight=0;v.gotHeight=true;++g}else{if((v.contentHeight=n.getProp("contentHeight"))!==undefined){v.gotHeight=true;++g}}}else{p=b.contentHeight;if(typeof p=="number"){v.contentHeight=p;v.gotHeight=true;++g}else{if(e){m=true}else{if(!n.hasDomProp("containerChildrenSizeDone")){m=false}else{if(a.noWrap){m=true}else{if(!h.shrinkWrap){m=(n.bodyContext||n).hasDomProp("width")}else{if(o||!c||c.widthModel.shrinkWrap){m=true}else{m=c.hasDomProp("width")}}}}}if(m){if(e){s=0}else{if(r&&r.measureContentHeight){s=r.measureContentHeight(n)}else{s=u.measureContentHeight(n)}}if(!isNaN(v.contentHeight=s)){n.setContentHeight(s,true);v.gotHeight=true;++g}}}}}else{if(d.natural&&n.consumersHeight){++l;p=b.height;if(typeof p=="number"){v.height=p;v.gotHeight=true;++g}else{if(o||!c){m=true}else{m=c.hasDomProp("width")}if(m){if(!isNaN(v.height=u.measureOwnerHeight(n))){n.setHeight(v.height,false);v.gotHeight=true;++g}}}}}if(c){n.onBoxMeasured()}v.gotAll=g==l;return v},measureContentWidth:function(a){return a.el.getWidth()-a.getFrameInfo().width},measureContentHeight:function(a){return a.el.getHeight()-a.getFrameInfo().height},measureOwnerHeight:function(a){return a.el.getHeight()},measureOwnerWidth:function(a){return a.el.getWidth()}},0,0,0,0,0,0,[Ext.layout.component,"Component"],0));(Ext.cmd.derive("Ext.layout.component.Auto",Ext.layout.component.Component,{type:"autocomponent",setHeightInDom:false,setWidthInDom:false,waitForOuterHeightInDom:false,waitForOuterWidthInDom:false,beginLayoutCycle:function(d,a){var c=this,g=c.lastWidthModel,e=c.lastHeightModel,b=c.owner.el;c.callParent(arguments);if(g&&g.fixed&&d.widthModel.shrinkWrap){b.setWidth(null)}if(e&&e.fixed&&d.heightModel.shrinkWrap){b.setHeight(null)}},calculate:function(h){var g=this,e=g.measureAutoDimensions(h),b=h.heightModel,c=h.widthModel,d,a;if(e.gotWidth){if(c.shrinkWrap){g.publishOwnerWidth(h,e.contentWidth)}else{if(g.publishInnerWidth){g.publishInnerWidth(h,e.width)}}}else{if(!c.auto&&g.publishInnerWidth){d=g.waitForOuterWidthInDom?h.getDomProp("width"):h.getProp("width");if(d===undefined){g.done=false}else{g.publishInnerWidth(h,d)}}}if(e.gotHeight){if(b.shrinkWrap){g.publishOwnerHeight(h,e.contentHeight)}else{if(g.publishInnerHeight){g.publishInnerHeight(h,e.height)}}}else{if(!b.auto&&g.publishInnerHeight){a=g.waitForOuterHeightInDom?h.getDomProp("height"):h.getProp("height");if(a===undefined){g.done=false}else{g.publishInnerHeight(h,a)}}}if(!e.gotAll){g.done=false}},calculateOwnerHeightFromContentHeight:function(b,a){return a+b.getFrameInfo().height},calculateOwnerWidthFromContentWidth:function(b,a){return a+b.getFrameInfo().width},publishOwnerHeight:function(j,g){var e=this,b=e.owner,a=e.calculateOwnerHeightFromContentHeight(j,g),h,d,c;if(isNaN(a)){e.done=false}else{h=Ext.Number.constrain(a,b.minHeight,b.maxHeight);if(h==a){d=e.setHeightInDom}else{c=e.sizeModels[(h<a)?"constrainedMax":"constrainedMin"];a=h;if(j.heightModel.calculatedFromShrinkWrap){j.heightModel=c}else{j.invalidate({heightModel:c})}}j.setHeight(a,d)}},publishOwnerWidth:function(h,b){var g=this,a=g.owner,e=g.calculateOwnerWidthFromContentWidth(h,b),j,d,c;if(isNaN(e)){g.done=false}else{j=Ext.Number.constrain(e,a.minWidth,a.maxWidth);if(j==e){d=g.setWidthInDom}else{c=g.sizeModels[(j<e)?"constrainedMax":"constrainedMin"];e=j;if(h.widthModel.calculatedFromShrinkWrap){h.widthModel=c}else{h.invalidate({widthModel:c})}}h.setWidth(e,d)}}},0,0,0,0,["layout.autocomponent"],0,[Ext.layout.component,"Auto"],0));(Ext.cmd.derive("Ext.container.AbstractContainer",Ext.Component,{renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:false,autoDestroy:true,defaultType:"panel",detachOnRemove:true,isContainer:true,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",defaultLayoutType:"auto",initComponent:function(){var a=this;a.addEvents("afterlayout","beforeadd","beforeremove","add","remove");a.callParent();a.getLayout();a.initItems()},initItems:function(){var b=this,a=b.items;b.items=new Ext.util.AbstractMixedCollection(false,b.getComponentId);b.floatingItems=new Ext.util.MixedCollection(false,b.getComponentId);if(a){if(!Ext.isArray(a)){a=[a]}b.add(a)}},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var a=this.getLayout();if(a){a.finishRender()}},beforeRender:function(){var b=this,a=b.getLayout(),c;b.callParent();if(!a.initialized){a.initLayout()}c=a.targetCls;if(c){b.applyTargetCls(c)}},applyTargetCls:function(a){this.addCls(a)},afterComponentLayout:function(){var b=this.floatingItems.items,a=b.length,d,c;this.callParent(arguments);for(d=0;d<a;d++){c=b[d];if(!c.rendered&&c.autoShow){c.show()}}},onPosition:function(){this.callParent(arguments);this.repositionFloatingItems()},onResize:function(){this.callParent(arguments);this.repositionFloatingItems()},repositionFloatingItems:function(){var b=this.floatingItems.items,a=b.length,d,c;for(d=0;d<a;d++){c=b[d];if(c.el&&!c.hidden){c.setPosition(c.x,c.y)}}},setupRenderTpl:function(a){this.callParent(arguments);this.getLayout().setupRenderTpl(a)},getDefaultContentTarget:function(){return this.el},getContentTarget:function(){return this.getLayout().getContentTarget()},setLayout:function(b){var a=this.layout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.layout=b;b.setOwner(this)},getLayout:function(){var a=this;if(!a.layout||!a.layout.isLayout){a.setLayout(Ext.layout.Layout.create(a.layout,a.self.prototype.layout||a.defaultLayoutType))}return a.layout},doLayout:function(){this.updateLayout();return this},afterLayout:function(b){var a=this;++a.layoutCounter;if(a.hasListeners.afterlayout){a.fireEvent("afterlayout",a,b)}},prepareItems:function(b,d){if(Ext.isArray(b)){b=b.slice()}else{b=[b]}var g=this,c=0,a=b.length,e;for(;c<a;c++){e=b[c];if(e==null){Ext.Array.erase(b,c,1);--c;--a}else{if(d){e=this.applyDefaults(e)}e.isContained=g;b[c]=g.lookupComponent(e);delete e.isContained;delete b[c].isContained}}return b},applyDefaults:function(a){var b=this.defaults;if(b){if(Ext.isFunction(b)){b=b.call(this,a)}if(Ext.isString(a)){a=Ext.ComponentManager.get(a)}Ext.applyIf(a,b)}return a},lookupComponent:function(a){return(typeof a=="string")?Ext.ComponentManager.get(a):Ext.ComponentManager.create(a,this.defaultType)},getComponentId:function(a){return a.getItemId&&a.getItemId()},add:function(){var j=this,g=Ext.Array.slice(arguments),d=(typeof g[0]=="number")?g.shift():-1,c=j.getLayout(),l,h,b,a,m,k,e;if(g.length==1&&Ext.isArray(g[0])){h=g[0];l=true}else{h=g}if(j.rendered){Ext.suspendLayouts()}e=h=j.prepareItems(h,true);a=h.length;if(!l&&a==1){e=h[0]}for(b=0;b<a;b++){m=h[b];k=(d<0)?j.items.length:(d+b);if(m.floating){j.floatingItems.add(m);m.onAdded(j,k);if(j.hasListeners.add){j.fireEvent("add",j,m,k)}}else{if((!j.hasListeners.beforeadd||j.fireEvent("beforeadd",j,m,k)!==false)&&j.onBeforeAdd(m)!==false){j.items.insert(k,m);m.onAdded(j,k);j.onAdd(m,k);c.onAdd(m,k);if(j.hasListeners.add){j.fireEvent("add",j,m,k)}}}}j.updateLayout();if(j.rendered){Ext.resumeLayouts(true)}return e},onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,insert:function(c,b){var a;if(b&&b.isComponent){a=this.items.indexOf(b);if(a!==-1){return this.move(a,c)}}return this.add(c,b)},move:function(b,d){var a=this.items,c;if(b.isComponent){b=a.indexOf(b)}c=a.removeAt(b);if(c===false){return false}a.insert(d,c);this.onMove(c,b,d);this.updateLayout();return c},onMove:Ext.emptyFn,onBeforeAdd:function(a){if(a.ownerCt&&a.ownerCt!==this){a.ownerCt.remove(a,false)}},remove:function(a,b){var d=this,e=d.getComponent(a);if(e&&(!d.hasListeners.beforeremove||d.fireEvent("beforeremove",d,e)!==false)){d.doRemove(e,b);if(d.hasListeners.remove){d.fireEvent("remove",d,e)}if(!d.destroying&&!e.floating){d.updateLayout()}}return e},doRemove:function(c,b){b=b===true||(b!==false&&this.autoDestroy);var g=this,e=g.layout,a=e&&g.rendered,d=c.destroying||b,h=c.floating;if(h){g.floatingItems.remove(c)}else{g.items.remove(c)}if(a&&!h){if(e.running){Ext.AbstractComponent.cancelLayout(c,d)}e.onRemove(c,d)}c.onRemoved(d);g.onRemove(c,d);if(b){c.destroy()}else{if(a&&!h){e.afterRemove(c)}if(g.detachOnRemove&&c.rendered){g.detachComponent(c)}}},detachComponent:function(a){Ext.getDetachedBody().appendChild(a.getEl())},removeAll:function(c){var h=this,e=h.items.items.slice().concat(h.floatingItems.items),b=[],d=0,a=e.length,g;h.suspendLayouts();for(;d<a;d++){g=e[d];h.remove(g,c);if(g.ownerCt!==h){b.push(g)}}h.resumeLayouts(!!a);return b},getRefItems:function(c){var h=this,d=h.items.items,b=d.length,e=0,g,a=[];for(;e<b;e++){g=d[e];a[a.length]=g;if(c&&g.getRefItems){a.push.apply(a,g.getRefItems(true))}}d=h.floatingItems.items;b=d.length;for(e=0;e<b;e++){g=d[e];a[a.length]=g;if(c&&g.getRefItems){a.push.apply(a,g.getRefItems(true))}}return a},cascade:function(l,m,a){var k=this,e=k.items?k.items.items:[],g=e.length,d=0,j,h=a?a.concat(k):[k],b=h.length-1;if(l.apply(m||k,h)!==false){for(;d<g;d++){j=e[d];if(j.cascade){j.cascade(l,m,a)}else{h[b]=j;l.apply(m||e,h)}}}return this},isAncestor:function(a){while(a){if(a.ownerCt===this){return true}a=a.ownerCt}},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}var b=this.items.get(a);if(!b&&typeof a!="number"){b=this.floatingItems.get(a)}return b},contains:function(c,b){var a=false;if(b){this.cascade(function(d){if(d.contains&&d.contains(c)){a=true;return false}});return a}else{return this.items.contains(c)||this.floatingItems.contains(c)}},nextChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},prevChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},enable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable){b.enable()}}return this},disable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable!==false&&!b.disabled){b.disable();b.resetDisable=true}}return this},getChildItemsToDisable:function(){return this.query("[isFormField],button")},beforeDestroy:function(){var b=this,a=b.items,d=b.floatingItems,e;if(a){while((e=a.first())){b.doRemove(e,true)}}if(d){while((e=d.first())){b.doRemove(e,true)}}Ext.destroy(b.layout);b.callParent()}},0,0,["component","box"],{component:true,box:true},0,[["queryable",Ext.Queryable]],[Ext.container,"AbstractContainer"],0));(Ext.cmd.derive("Ext.container.Container",Ext.container.AbstractContainer,{alternateClassName:"Ext.Container",getChildByElement:function(e,a){var h,c,b=0,d=this.getRefItems(),g=d.length;e=Ext.getDom(e);for(;b<g;b++){h=d[b];c=h.getEl();if(c&&((c.dom===e)||c.contains(e))){return(a&&h.getChildByElement)?h.getChildByElement(e,a):h}}return null}},0,["container"],["component","container","box"],{component:true,container:true,box:true},["widget.container"],0,[Ext.container,"Container",Ext,"Container"],0));(Ext.cmd.derive("Ext.layout.container.Editor",Ext.layout.container.Container,{autoSizeDefault:{width:"field",height:"field"},sizePolicies:{$:{$:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},boundEl:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1}},boundEl:{$:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},boundEl:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(d){var c=this,a=c.owner.autoSize,b=a&&a.width,e=c.sizePolicies;e=e[b]||e.$;b=a&&a.height;e=e[b]||e.$;return e},calculate:function(g){var e=this,b=e.owner,a=b.autoSize,d,c;if(a===true){a=e.autoSizeDefault}if(a){d=e.getDimension(b,a.width,"getWidth",b.width);c=e.getDimension(b,a.height,"getHeight",b.height)}g.childItems[0].setSize(d,c);g.setWidth(d);g.setHeight(c);g.setContentSize(d||b.field.getWidth(),c||b.field.getHeight())},getDimension:function(a,b,d,c){switch(b){case"boundEl":return a.boundEl[d]();case"field":return undefined;default:return c}}},0,0,0,0,["layout.editor"],0,[Ext.layout.container,"Editor"],0));(Ext.cmd.derive("Ext.Editor",Ext.container.Container,{layout:"editor",allowBlur:true,revertInvalid:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,focusOnToFront:false,hidden:true,baseCls:Ext.baseCSSPrefix+"editor",initComponent:function(){var a=this,b=a.field=Ext.ComponentManager.create(a.field,"textfield");Ext.apply(b,{inEditor:true,msgTarget:b.msgTarget=="title"?"title":"qtip"});a.mon(b,{scope:a,blur:a.onFieldBlur,specialkey:a.onSpecialKey});if(b.grow){a.mon(b,"autosize",a.onFieldAutosize,a,{delay:1})}a.floating={constrain:a.constrain};a.items=b;a.callParent(arguments);a.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onFieldAutosize:function(){this.updateLayout()},afterRender:function(b,a){var c=this,e=c.field,d=e.inputEl;c.callParent(arguments);if(d){d.dom.name="";if(c.swallowKeys){d.swallowEvent(["keypress","keydown"])}}},onSpecialKey:function(g,e){var d=this,b=e.getKey(),a=d.completeOnEnter&&b==e.ENTER,c=d.cancelOnEsc&&b==e.ESC;if(a||c){e.stopEvent();Ext.defer(function(){if(a){d.completeEdit()}else{d.cancelEdit()}if(g.triggerBlur){g.triggerBlur(e)}},10)}d.fireEvent("specialkey",d,g,e)},startEdit:function(a,c){var b=this,d=b.field;b.completeEdit();b.boundEl=Ext.get(a);c=Ext.isDefined(c)?c:Ext.String.trim(b.boundEl.dom.innerText||b.boundEl.dom.innerHTML);if(!b.rendered){if(b.ownerCt){b.parentEl=b.ownerCt.el;b.parentEl.position()}b.render(b.parentEl||document.body)}if(b.fireEvent("beforestartedit",b,b.boundEl,c)!==false){b.startValue=c;b.show();d.suspendEvents();d.reset();d.setValue(c);d.resumeEvents();b.realign(true);d.focus();if(d.autoSize){d.autoSize()}b.editing=true}},realign:function(a){var b=this;if(a===true){b.updateLayout()}b.alignTo(b.boundEl,b.alignment,b.offsets)},completeEdit:function(a){var b=this,d=b.field,c;if(!b.editing){return}if(d.assertValue){d.assertValue()}c=b.getValue();if(!d.isValid()){if(b.revertInvalid!==false){b.cancelEdit(a)}return}if(String(c)===String(b.startValue)&&b.ignoreNoChange){b.hideEdit(a);return}if(b.fireEvent("beforecomplete",b,c,b.startValue)!==false){c=b.getValue();if(b.updateEl&&b.boundEl){b.boundEl.update(c)}b.hideEdit(a);b.fireEvent("complete",b,c,b.startValue)}},onShow:function(){var a=this;a.callParent(arguments);if(a.hideEl!==false){a.boundEl.hide()}a.fireEvent("startedit",a,a.boundEl,a.startValue)},cancelEdit:function(a){var c=this,b=c.startValue,e=c.field,d;if(c.editing){d=c.getValue();e.suspendEvents();c.setValue(b);e.resumeEvents();c.hideEdit(a);c.fireEvent("canceledit",c,d,b)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onFieldBlur:function(d,c){var a=this,b=Ext.Element.getActiveElement();if(a.allowBlur===true&&a.editing&&a.selectSameEditor!==true){a.completeEdit()}if(Ext.fly(b).isFocusable()||b.getAttribute("tabIndex")){b.focus()}},onHide:function(){var a=this,b=a.field;if(a.editing){a.completeEdit();return}if(b.hasFocus&&b.triggerBlur){b.triggerBlur()}if(b.collapse){b.collapse()}if(a.hideEl!==false){a.boundEl.show()}a.callParent(arguments)},setValue:function(a){this.field.setValue(a)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){var a=this;Ext.destroy(a.field);delete a.field;delete a.parentEl;delete a.boundEl;a.callParent(arguments)}},0,["editor"],["editor","component","container","box"],{editor:true,component:true,container:true,box:true},["widget.editor"],0,[Ext,"Editor"],0));(Ext.cmd.derive("Ext.util.KeyMap",Ext.Base,{alternateClassName:"Ext.KeyMap",eventName:"keydown",constructor:function(a){var b=this;if((arguments.length!==1)||(typeof a==="string")||a.dom||a.tagName||a===document||a.isComponent){b.legacyConstructor.apply(b,arguments);return}Ext.apply(b,a);b.bindings=[];if(!b.target.isComponent){b.target=Ext.get(b.target)}if(b.binding){b.addBinding(b.binding)}else{if(a.key){b.addBinding(a)}}b.enable()},legacyConstructor:function(b,d,a){var c=this;Ext.apply(c,{target:Ext.get(b),eventName:a||c.eventName,bindings:[]});if(d){c.addBinding(d)}c.enable()},addBinding:function(e){var c=this,d=e.key,b,a;if(c.processing){c.bindings=bindings.slice(0)}if(Ext.isArray(e)){for(b=0,a=e.length;b<a;b++){c.addBinding(e[b])}return}c.bindings.push(Ext.apply({keyCode:c.processKeys(d)},e))},removeBinding:function(g){var e=this,h=e.bindings,a=h.length,b,d,c;if(e.processing){e.bindings=h.slice(0)}c=e.processKeys(g.key);for(b=0;b<a;++b){d=h[b];if(d.fn===g.fn&&d.scope===g.scope){if(g.alt==d.alt&&g.crtl==d.crtl&&g.shift==d.shift){if(Ext.Array.equals(d.keyCode,c)){Ext.Array.erase(e.bindings,b,1);return}}}}},processKeys:function(g){var h=false,d,e,b,a,c;if(Ext.isString(g)){e=[];b=g.toUpperCase();for(c=0,a=b.length;c<a;++c){e.push(b.charCodeAt(c))}g=e;h=true}if(!Ext.isArray(g)){g=[g]}if(!h){for(c=0,a=g.length;c<a;++c){d=g[c];if(Ext.isString(d)){g[c]=d.toUpperCase().charCodeAt(0)}}}return g},handleTargetEvent:(function(){var a=/input|textarea/i;return function(g){var e=this,j,c,b,h,d;if(e.enabled){j=e.bindings;c=0;b=j.length;g=e.processEvent.apply(e||e.processEventScope,arguments);if(e.ignoreInputFields){h=g.target;d=h.contentEditable;if(a.test(h.tagName)||(d===""||d==="true")){return}}if(!g.getKey){return g}e.processing=true;for(;c<b;++c){e.processBinding(j[c],g)}e.processing=false}}}()),processEvent:Ext.identityFn,processBinding:function(g,a){if(this.checkModifiers(g,a)){var h=a.getKey(),k=g.fn||g.handler,l=g.scope||this,j=g.keyCode,b=g.defaultEventAction,c,e,d=new Ext.EventObjectImpl(a);for(c=0,e=j.length;c<e;++c){if(h===j[c]){if(k.call(l,h,a)!==true&&b){d[b]()}break}}}},checkModifiers:function(j,g){var d=["shift","ctrl","alt"],c=0,a=d.length,h,b;for(;c<a;++c){b=d[c];h=j[b];if(!(h===undefined||(h===g[b+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(Ext.isObject(b)&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},un:function(b,d,c){var h,a,e,g;if(Ext.isObject(b)&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.removeBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},isEnabled:function(){return this.enabled},enable:function(){var a=this;if(!a.enabled){a.target.on(a.eventName,a.handleTargetEvent,a);a.enabled=true}},disable:function(){var a=this;if(a.enabled){a.target.removeListener(a.eventName,a.handleTargetEvent,a);a.enabled=false}},setDisabled:function(a){if(a){this.disable()}else{this.enable()}},destroy:function(c){var a=this,b=a.target;a.bindings=[];a.disable();if(c===true){if(b.isComponent){b.destroy()}else{b.remove()}}delete a.target}},1,0,0,0,0,0,[Ext.util,"KeyMap",Ext,"KeyMap"],0));(Ext.cmd.derive("Ext.util.KeyNav",Ext.Base,{alternateClassName:"Ext.KeyNav",statics:{keyOptions:{left:37,right:39,up:38,down:40,space:32,pageUp:33,pageDown:34,del:46,backspace:8,home:36,end:35,enter:13,esc:27,tab:9}},constructor:function(a){var b=this;if(arguments.length===2){b.legacyConstructor.apply(b,arguments);return}b.setConfig(a)},legacyConstructor:function(b,a){this.setConfig(Ext.apply({target:b},a))},setConfig:function(b){var e=this,c={target:b.target,ignoreInputFields:b.ignoreInputFields,eventName:e.getKeyEvent("forceKeyDown" in b?b.forceKeyDown:e.forceKeyDown,b.eventName)},g,a,j,d,h;if(e.map){e.map.destroy()}if(b.processEvent){c.processEvent=b.processEvent;c.processEventScope=b.processEventScope||e}if(b.keyMap){g=e.map=b.keyMap}else{g=e.map=new Ext.util.KeyMap(c);e.destroyKeyMap=true}a=Ext.util.KeyNav.keyOptions;j=b.scope||e;for(d in a){if(a.hasOwnProperty(d)){if(h=b[d]){if(typeof h==="function"){h={handler:h,defaultEventAction:(b.defaultEventAction!==undefined)?b.defaultEventAction:e.defaultEventAction}}g.addBinding({key:a[d],handler:Ext.Function.bind(e.handleEvent,h.scope||j,h.handler||h.fn,true),defaultEventAction:(h.defaultEventAction!==undefined)?h.defaultEventAction:e.defaultEventAction})}}}g.disable();if(!b.disabled){g.enable()}},handleEvent:function(c,b,a){return a.call(this,b)},disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,eventName:"keypress",destroy:function(a){if(this.destroyKeyMap){this.map.destroy(a)}delete this.map},enable:function(){if(this.map){this.map.enable();this.disabled=false}},disable:function(){if(this.map){this.map.disable()}this.disabled=true},setDisabled:function(a){this.map.setDisabled(a);this.disabled=a},getKeyEvent:function(b,a){if(b||(Ext.EventManager.useKeyDown&&!a)){return"keydown"}else{return a||this.eventName}}},1,0,0,0,0,0,[Ext.util,"KeyNav",Ext,"KeyNav"],0));(Ext.cmd.derive("Ext.FocusManager",Ext.Base,{singleton:true,alternateClassName:["Ext.FocusMgr"],enabled:false,focusElementCls:Ext.baseCSSPrefix+"focus-element",focusFrameCls:Ext.baseCSSPrefix+"focus-frame",whitelist:["textfield"],constructor:function(a){var b=this,c=Ext.ComponentQuery;b.mixins.observable.constructor.call(b,a);b.addEvents("beforecomponentfocus","componentfocus","disable","enable");b.focusTask=new Ext.util.DelayedTask(b.handleComponentFocus,b);Ext.override(Ext.AbstractComponent,{onFocus:function(){this.callParent(arguments);if(b.enabled&&this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentFocus.apply(b,arguments)}},onBlur:function(){this.callParent(arguments);if(b.enabled&&!this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentBlur.apply(b,arguments)}},onDestroy:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentDestroy.apply(b,arguments)}}});Ext.override(Ext.Component,{afterHide:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentHide.apply(b,arguments)}}});b.keyNav=new Ext.util.KeyNav(Ext.getDoc(),{disabled:true,scope:b,backspace:b.focusLast,enter:b.navigateIn,esc:b.navigateOut,tab:b.navigateSiblings,space:b.navigateIn,del:b.focusLast,left:b.navigateSiblings,right:b.navigateSiblings,down:b.navigateSiblings,up:b.navigateSiblings});b.focusData={};b.subscribers=new Ext.util.HashMap();b.focusChain={};Ext.apply(c.pseudos,{nextFocus:function(g,e,j){j=j||1;e=parseInt(e,10);var d=g.length,h=e,k;for(;;){if((h+=j)>=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((k=g[h]).isFocusable()){return[k]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,j;for(;g<d;g++){j=e[g];if(!j.ownerCt){h.push(j)}}return h}})},addXTypeToWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.addXTypeToWhitelist,a);return}if(!Ext.Array.contains(a.whitelist,b)){a.whitelist.push(b)}},clearComponent:function(a){clearTimeout(this.cmpFocusDelay);if(!a.isDestroyed){a.blur()}},disable:function(){var a=this;if(!a.enabled){return}delete a.options;a.enabled=false;a.removeDOM();a.keyNav.disable();a.fireEvent("disable",a)},enable:function(a){var b=this;if(a===true){a={focusFrame:true}}b.options=a=a||{};if(b.enabled){return}b.enabled=true;b.initDOM(a);b.keyNav.enable();b.focusEl.focus();delete b.focusedCmp;b.fireEvent("enable",b)},focusLast:function(b){var a=this;if(a.isWhitelisted(a.focusedCmp)){return true}if(a.previousFocusedCmp){a.previousFocusedCmp.focus()}},getRootComponents:function(){var b=Ext.ComponentQuery,a=b.query(":focusable:root:not([floating])"),c=b.query(":focusable:root[floating]");c.sort(function(e,d){return e.el.getZIndex()>d.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d<a;d++){e[d].addFocusListener()}if(!g.focusEl){g.focusEl=Ext.getBody();g.focusEl.dom.tabIndex=-1}if(!g.focusFrame&&c.focusFrame){g.focusFrame=Ext.getBody().createChild({cls:b,children:[{cls:b+"-top"},{cls:b+"-bottom"},{cls:b+"-left"},{cls:b+"-right"}],style:"top: -100px; left: -100px;"});g.focusFrame.setVisibilityMode(Ext.Element.DISPLAY);g.focusFrame.hide().setLocalXY(0,0)}},isWhitelisted:function(a){return a&&Ext.Array.some(this.whitelist,function(b){return a.isXType(b)})},navigateIn:function(g){var c=this,a=c.focusedCmp,b,d;if(c.isWhitelisted(a)){return true}if(!a){b=c.getRootComponents()[0];if(b){if(b.getFocusEl()===c.focusEl){c.focusEl.blur()}b.focus()}}else{d=a.hasFocus?Ext.ComponentQuery.query(">:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(j,b,p){var k=this,a=b||k,q=j.getKey(),g=Ext.EventObject,l=j.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,j;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");j=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);j.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(j){if(e.focusedCmp===a){return e.navigateSiblings(j,e,a)}else{return e.navigateSiblings(j)}};Ext.iterate(g,function(k,j){b[k]=function(m){var l=h(m);if(Ext.isFunction(j)&&j.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"FocusManager",Ext,"FocusMgr"],0));(Ext.cmd.derive("Ext.Img",Ext.Component,{autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}},0,["image","imagecomponent"],["component","image","box","imagecomponent"],{component:true,image:true,box:true,imagecomponent:true},["widget.image","widget.imagecomponent"],0,[Ext,"Img"],0));(Ext.cmd.derive("Ext.util.Bindable",Ext.Base,{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,"Bindable"],0));(Ext.cmd.derive("Ext.LoadMask",Ext.Component,{msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['<div id="{id}-msgEl" class="{[values.$comp.msgCls]} ',Ext.baseCSSPrefix,'mask-msg-inner{childElCls}">','<div id="{id}-msgTextEl" class="',Ext.baseCSSPrefix,"mask-msg-text",'{childElCls}"></div>',"</div>"],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}},1,["loadmask"],["component","box","loadmask"],{component:true,box:true,loadmask:true},["widget.loadmask"],[["floating",Ext.util.Floating],["bindable",Ext.util.Bindable]],[Ext,"LoadMask"],0));(Ext.cmd.derive("Ext.data.association.Association",Ext.Base,{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],j=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=j;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+(++h.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}},1,0,0,0,0,0,[Ext.data.association,"Association",Ext.data,"Association"],0));(Ext.cmd.derive("Ext.ModelManager",Ext.AbstractManager,{alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},unregisterType:function(a){delete this.types[a]},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d<g;d++){b=a[d];if(b.associatedModel==c.modelName){e.push(b)}}for(d=0,g=e.length;d<g;d++){h=e[d];this.types[h.ownerModel].prototype.associations.add(Ext.data.association.Association.create(h));Ext.Array.remove(a,h)}},registerDeferredAssociation:function(a){this.associationStack.push(a)},getModel:function(b){var a=b;if(typeof a=="string"){a=this.types[a]}return a},create:function(b,a,d){var c=typeof a=="function"?a:this.types[a||b.name];return new c(b,d)}},0,0,0,0,0,0,[Ext,"ModelManager",Ext,"ModelMgr"],function(){Ext.regModel=function(){return this.ModelManager.registerType.apply(this.ModelManager,arguments)}}));(Ext.cmd.derive("Ext.layout.component.ProgressBar",Ext.layout.component.Auto,{type:"progressbar",beginLayout:function(d){var b=this,a,c;b.callParent(arguments);if(!d.textEls){c=b.owner.textEl;if(c.isComposite){d.textEls=[];c=c.elements;for(a=c.length;a--;){d.textEls[a]=d.getEl(Ext.get(c[a]))}}else{d.textEls=[d.getEl("textEl")]}}},calculate:function(e){var c=this,a,d,b;c.callParent(arguments);if(Ext.isNumber(b=e.getProp("width"))){b-=e.getBorderInfo().width;d=e.textEls;for(a=d.length;a--;){d[a].setWidth(b)}}else{c.done=false}}},0,0,0,0,["layout.progressbar"],0,[Ext.layout.component,"ProgressBar"],0));(Ext.cmd.derive("Ext.ProgressBar",Ext.Component,{baseCls:Ext.baseCSSPrefix+"progress",animate:false,text:"",waitTimer:null,childEls:["bar"],renderTpl:['<tpl if="internalText">','<div class="{baseCls}-text {baseCls}-text-back">{text}</div>',"</tpl>",'<div id="{id}-bar" class="{baseCls}-bar {baseCls}-bar-{ui}" style="width:{percentage}%">','<tpl if="internalText">','<div class="{baseCls}-text">',"<div>{text}</div>","</div>","</tpl>","</div>"],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||"&#160;",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}},0,["progressbar"],["component","progressbar","box"],{component:true,progressbar:true,box:true},["widget.progressbar"],0,[Ext,"ProgressBar"],0));(Ext.cmd.derive("Ext.ShadowPool",Ext.Base,{singleton:true,markup:(function(){return Ext.String.format('<div class="{0}{1}-shadow" role="presentation"></div>',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b<a;b++){c[b].remove()}this.shadows=[]}},0,0,0,0,0,0,[Ext,"ShadowPool"],0));(Ext.cmd.derive("Ext.Shadow",Ext.Base,{localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(b){var c=this,d,e,a;Ext.apply(c,b);if(!Ext.isString(c.mode)){c.mode=c.defaultMode}e=c.offset;a=Math.floor(e/2);c.opacity=50;switch(c.mode.toLowerCase()){case"drop":if(Ext.supports.CSS3BoxShadow){d={t:e,l:e,h:-e,w:-e}}else{d={t:-a,l:-a,h:-a,w:-a}}break;case"sides":if(Ext.supports.CSS3BoxShadow){d={t:e,l:0,h:-e,w:0}}else{d={t:-(1+a),l:1+a-2*e,h:-1,w:a-1}}break;case"frame":if(Ext.supports.CSS3BoxShadow){d={t:0,l:0,h:0,w:0}}else{d={t:1+a-2*e,l:1+a-2*e,h:e-a-1,w:e-a-1}}break;case"bottom":if(Ext.supports.CSS3BoxShadow){d={t:e,l:0,h:-e,w:0}}else{d={t:e,l:0,h:0,w:0}}break}c.adjusts=d},getShadowSize:function(){var b=this,d=b.el?b.offset:0,a=[d,d,d,d],c=b.mode.toLowerCase();if(b.el&&c!=="frame"){a[0]=0;if(c=="drop"){a[3]=0}}return a},offset:4,defaultMode:"drop",boxShadowProperty:(function(){var b="boxShadow",a=document.documentElement.style;if(!("boxShadow" in a)){if("WebkitBoxShadow" in a){b="WebkitBoxShadow"}else{if("MozBoxShadow" in a){b="MozBoxShadow"}}}return b}()),show:function(d){var b=this,a,c;d=Ext.get(d);a=(parseInt(d.getStyle("z-index"),10)-1)||0;c=d[b.localXYNames.get]();if(!b.el){b.el=Ext.ShadowPool.pull();if(b.fixed){b.el.dom.style.position="fixed"}else{b.el.dom.style.position=""}if(b.el.dom.nextSibling!=d.dom){b.el.insertBefore(d)}}b.el.setStyle("z-index",b.zIndex||a);if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){b.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity="+b.opacity+") progid:DXImageTransform.Microsoft.Blur(pixelradius="+(b.offset)+")"}b.realign(c[0],c[1],d.dom.offsetWidth,d.dom.offsetHeight);b.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(c,n,k,g){if(!this.el){return}var b=this.adjusts,a=this.el,j=a.dom.style,d,e,h,m;a[this.localXYNames.set](c+b.l,n+b.t);d=Math.max(k+b.w,0);e=Math.max(g+b.h,0);h=d+"px";m=e+"px";if(j.width!=h||j.height!=m){j.width=h;j.height=m;if(Ext.supports.CSS3BoxShadow){j[this.boxShadowProperty]="0 0 "+(this.offset+2)+"px #888"}}},hide:function(){var a=this;if(a.el){a.el.dom.style.display="none";Ext.ShadowPool.push(a.el);delete a.el}},setZIndex:function(a){this.zIndex=a;if(this.el){this.el.setStyle("z-index",a)}},setOpacity:function(a){if(this.el){if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){a=Math.floor(a*100/2)/100}this.opacity=a;this.el.setOpacity(a)}}},1,0,0,0,0,0,[Ext,"Shadow"],0));(Ext.cmd.derive("Ext.app.EventDomain",Ext.Base,{statics:{instances:{}},isEventDomain:true,constructor:function(){var a=this;Ext.app.EventDomain.instances[a.type]=a;a.bus={};a.monitoredClasses=[]},dispatch:function(g,m,k){var l=this,h=l.bus,n=h[m],d,c,b,o,a,e,j;if(!n){return true}for(d in n){if(n.hasOwnProperty(d)&&l.match(g,d)){c=n[d];for(b in c){if(c.hasOwnProperty(b)){o=c[b];for(e=0,j=o.length;e<j;e++){a=o[e];if(a.fire.apply(a,k)===false){return false}}}}}}return true},listen:function(n,g){var l=this,j=l.bus,q=l.idProperty,p=l.monitoredClasses,e=p.length,d,s,h,c,r,b,o,a,k,m;for(c in n){if(n.hasOwnProperty(c)&&(k=n[c])){if(q){c=c==="*"?c:c.substring(1)}for(m in k){if(k.hasOwnProperty(m)){r=null;b=k[m];o=g;a=new Ext.util.Event(g,m);if(Ext.isObject(b)){r=b;b=r.fn;o=r.scope||g;delete r.fn;delete r.scope}if(typeof b==="string"){b=o[b]}a.addListener(b,o,r);for(d=e;d-->0;){p[d].hasListeners._incr_(m)}s=j[m]||(j[m]={});s=s[c]||(s[c]={});h=s[g.id]||(s[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}},1,0,0,0,0,0,[Ext.app,"EventDomain"],0));(Ext.cmd.derive("Ext.app.domain.Component",Ext.app.EventDomain,{singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}},1,0,0,0,0,0,[Ext.app.domain,"Component"],0));(Ext.cmd.derive("Ext.app.EventBus",Ext.Base,{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}},1,0,0,0,0,0,[Ext.app,"EventBus"],0));(Ext.cmd.derive("Ext.data.StoreManager",Ext.util.MixedCollection,{alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d<a;++d){g.push([c[d]])}}else{for(d=2,a=c[0].length;d<=a;++d){b.push("field"+d)}}return new Ext.data.ArrayStore({data:g,fields:b,autoDestroy:true,autoCreated:true,expanded:e})}if(Ext.isString(c)){return this.get(c)}else{return Ext.data.AbstractStore.create(c)}},getKey:function(a){return a.storeId}},0,0,0,0,0,0,[Ext.data,"StoreManager",Ext,"StoreMgr",Ext.data,"StoreMgr",Ext,"StoreManager"],function(){Ext.regStore=function(c,b){var a;if(Ext.isObject(c)){b=c}else{b.storeId=c}if(b instanceof Ext.data.Store){a=b}else{a=new Ext.data.Store(b)}return Ext.data.StoreManager.register(a)};Ext.getStore=function(a){return Ext.data.StoreManager.lookup(a)}}));(Ext.cmd.derive("Ext.app.domain.Global",Ext.app.EventDomain,{singleton:true,type:"global",constructor:function(){var a=this;a.callParent();a.monitor(Ext.globalEvents)},listen:function(b,a){this.callParent([{global:b},a])},match:function(){return true}},1,0,0,0,0,0,[Ext.app.domain,"Global"],0));(Ext.cmd.derive("Ext.data.ResultSet",Ext.Base,{loaded:true,count:0,total:0,success:false,constructor:function(a){Ext.apply(this,a);this.totalRecords=this.total;if(a.count===undefined){this.count=this.records.length}}},1,0,0,0,0,0,[Ext.data,"ResultSet"],0));(Ext.cmd.derive("Ext.data.reader.Reader",Ext.Base,{alternateClassName:["Ext.data.Reader","Ext.data.DataReader"],totalProperty:"total",successProperty:"success",root:"",implicitIncludes:true,readRecordsOnFailure:true,isReader:true,applyDefaults:true,lastFieldGeneration:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.fieldCount=0;b.model=Ext.ModelManager.getModel(b.model);if(b.model&&b.model.prototype.fields){b.buildExtractors()}this.addEvents("exception")},setModel:function(a,c){var b=this;b.model=Ext.ModelManager.getModel(a);if(a){b.buildExtractors(true)}if(c&&b.proxy){b.proxy.setModel(b.model,true)}},read:function(a){var b;if(a){b=a.responseText?this.getResponseData(a):this.readRecords(a)}return b||this.nullResultSet},readRecords:function(c){var d=this,j,b,a,g,e,h,k;if(d.lastFieldGeneration!==d.model.prototype.fields.generation){d.buildExtractors(true)}d.rawData=c;c=d.getData(c);j=true;b=0;a=[];if(d.successProperty){h=d.getSuccess(c);if(h===false||h==="false"){j=false}}if(d.messageProperty){k=d.getMessage(c)}if(d.readRecordsOnFailure||j){g=Ext.isArray(c)?c:d.getRoot(c);if(g){e=g.length}if(d.totalProperty){h=parseInt(d.getTotal(c),10);if(!isNaN(h)){e=h}}if(g){a=d.extractData(g);b=a.length}}return new Ext.data.ResultSet({total:e||b,count:b,records:a,success:j,message:k})},extractData:function(k){var j=this,b=j.model,a=k.length,d=new Array(a),e,c,h,g;if(!k.length&&Ext.isObject(k)){k=[k];a=1}for(g=0;g<a;g++){c=k[g];if(c.isModel){d[g]=c}else{d[g]=h=new b(undefined,j.getId(c),c,e={});h.phantom=false;j.convertRecordData(e,c,h);if(j.implicitIncludes&&h.associations.length){j.readAssociated(h,c)}}}return d},readAssociated:function(h,e){var d=h.associations.items,g=0,a=d.length,c,b,k,j;for(;g<a;g++){c=d[g];b=this.getAssociatedDataRoot(e,c.associationKeyFunction||c.associationKey||c.name);if(b){j=c.getReader();if(!j){k=c.associatedModel.getProxy();if(k){j=k.getReader()}else{j=new this.constructor({model:c.associatedName})}}c.read(h,j,b)}}},getAssociatedDataRoot:function(b,a){if(Ext.isFunction(a)){return a(b)}return b[a]},getFields:function(){return this.model.prototype.fields.items},getData:Ext.identityFn,getRoot:Ext.identityFn,getResponseData:function(a){},onMetaChange:function(e){var d=this,b=e.fields||d.getFields(),c,a;d.metaData=e;d.root=e.root||d.root;d.idProperty=e.idProperty||d.idProperty;d.totalProperty=e.totalProperty||d.totalProperty;d.successProperty=e.successProperty||d.successProperty;d.messageProperty=e.messageProperty||d.messageProperty;a=e.clientIdProperty;if(d.model){d.model.setFields(b,d.idProperty,a);d.setModel(d.model,true)}else{c=Ext.define("Ext.data.reader.Json-Model"+Ext.id(),{extend:"Ext.data.Model",fields:b,clientIdProperty:a});if(d.idProperty){c.idProperty=d.idProperty}d.setModel(c,true)}},getIdProperty:function(){var b=this.model.prototype.idField,a=this.idProperty;if(!a&&b&&(a=b.mapping)==null){a=b.name}return a},buildExtractors:function(e){var c=this,h=c.getIdProperty(),d=c.totalProperty,b=c.successProperty,g=c.messageProperty,a;if(e===true){delete c.convertRecordData}if(c.convertRecordData){return}if(d){c.getTotal=c.createAccessor(d)}if(b){c.getSuccess=c.createAccessor(b)}if(g){c.getMessage=c.createAccessor(g)}if(h){a=c.createAccessor(h);c.getId=function(j){var k=a.call(c,j);return(k===undefined||k==="")?null:k}}else{c.getId=function(){return null}}c.convertRecordData=c.buildRecordDataExtractor();c.lastFieldGeneration=c.model.prototype.fields.generation},recordDataExtractorTemplate:["var me = this\n","    ,fields = me.model.prototype.fields\n","    ,value\n","    ,internalId\n",'<tpl for="fields">','    ,__field{#} = fields.map["{name}"]\n',"</tpl>",";\n","return function(dest, source, record) {\n",'<tpl for="fields">','{% var fieldAccessExpression =  this.createFieldAccessExpression(values, "__field" + xindex, "source");',"   if (fieldAccessExpression) { %}",'    value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','<tpl if="hasCustomConvert">','    dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n','<tpl elseif="defaultValue !== undefined">',"    if (value === undefined) {\n","        if (me.applyDefaults) {\n",'<tpl if="convert">','            dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'            dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","        };\n","    } else {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    };\n","<tpl else>","    if (value !== undefined) {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    }\n","</tpl>","{% } else { %}",'<tpl if="defaultValue !== undefined">','<tpl if="convert">','    dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'    dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","</tpl>","{% } %}","</tpl>",'<tpl if="clientIdProp">','    if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n','        record.{["internalId"]} = internalId;\n',"    }\n","</tpl>","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=function(){return c.createFieldAccessExpression.apply(c,arguments)};return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data.reader,"Reader",Ext.data,"Reader",Ext.data,"DataReader"],function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})}));(Ext.cmd.derive("Ext.data.reader.Json",Ext.data.reader.Reader,{alternateClassName:"Ext.data.JsonReader",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b<c;b++){d[b]=a[b][e]}}else{d=a}return this.callParent([d])},createAccessor:(function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}if(this.useSimpleAccessors!==true){var b=String(c).search(a);if(b>=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(o,d,e){var b=o.mapping,m=b||b===0,c=m?b:o.name,p,g;if(b===false){return}if(typeof c==="function"){p=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||((g=String(c).search(a))<0)){if(!m||isNaN(c)){c='"'+c+'"'}p=e+"["+c+"]"}else{if(g===0){p=e+c}else{var j=c.split("."),l=j.length,k=1,n=e+"."+j[0],h=[n];for(;k<l;k++){n+="."+j[k];h.push(n)}p=h.join(" && ")}}}return p}}())},0,0,0,0,["reader.json"],0,[Ext.data.reader,"Json",Ext.data,"JsonReader"],0));(Ext.cmd.derive("Ext.data.writer.Writer",Ext.Base,{alternateClassName:["Ext.data.DataWriter","Ext.data.Writer"],writeAllFields:true,nameProperty:"name",writeRecordId:true,isWriter:true,constructor:function(a){Ext.apply(this,a)},write:function(e){var c=e.operation,b=c.records||[],a=b.length,d=0,g=[];for(;d<a;d++){g.push(this.getRecordData(b[d],c))}return this.writeRecords(e,g)},getRecordData:function(d,b){var m=d.phantom===true,a=this.writeAllFields||m,g=d.fields,o=g.items,c={},l=d.clientIdProperty,k,j,n,e,h,p;if(a){p=o.length;for(h=0;h<p;h++){j=o[h];if(j.persist){this.writeValue(c,j,d)}}}else{k=d.getChanges();for(n in k){if(k.hasOwnProperty(n)){j=g.get(n);if(j.persist){this.writeValue(c,j,d)}}}}if(m){if(l&&b&&b.records.length>1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty],a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(c==null){c=g.name}if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}},1,0,0,0,["writer.base"],0,[Ext.data.writer,"Writer",Ext.data,"DataWriter",Ext.data,"Writer"],0));(Ext.cmd.derive("Ext.data.writer.Json",Ext.data.writer.Writer,{alternateClassName:"Ext.data.JsonWriter",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(j,m){var n={};n[j]=m;return n};for(;e<b;e++){k=d[e];for(a in k){if(k.hasOwnProperty(a)){g=a.split(".");c=g.length-1;if(c>0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}},0,0,0,0,["writer.json"],0,[Ext.data.writer,"Json",Ext.data,"JsonWriter"],0));(Ext.cmd.derive("Ext.data.proxy.Proxy",Ext.Base,{alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,isSynchronous:false,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,j;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n<d;n++){e=g[n];c=p.operations[e];if(c){if(k){h.add(new Ext.data.Operation({action:e,records:c}))}else{o=c.length;for(b=0;b<o;b++){j=c[b];h.add(new Ext.data.Operation({action:e,records:[j]}))}}}}h.start();return h},onBatchComplete:function(a,b){var c=a.scope||this;if(b.hasException){if(Ext.isFunction(a.failure)){Ext.callback(a.failure,c,[b,a])}}else{if(Ext.isFunction(a.success)){Ext.callback(a.success,c,[b,a])}}if(Ext.isFunction(a.callback)){Ext.callback(a.callback,c,[b,a])}},clone:function(){return new this.self(this.proxyConfig)}},1,0,0,0,["proxy.proxy"],[["observable",Ext.util.Observable]],[Ext.data.proxy,"Proxy",Ext.data,"DataProxy",Ext.data,"Proxy"],0));(Ext.cmd.derive("Ext.data.Operation",Ext.Base,{synchronous:true,action:undefined,filters:undefined,sorters:undefined,groupers:undefined,start:undefined,limit:undefined,batch:undefined,callback:undefined,scope:undefined,started:false,running:false,complete:false,success:undefined,exception:false,error:undefined,actionCommitRecordsRe:/^(?:create|update)$/i,actionSkipSyncRe:/^destroy$/i,constructor:function(a){Ext.apply(this,a||{})},commitRecords:function(n){var j=this,m=j.actionCommitRecordsRe.test(j.action),l,h,a,e,b,d,g,k,c;if(!j.actionSkipSyncRe.test(j.action)){a=j.records;if(a&&a.length){if(m){c=[]}if(a.length>1){if(j.action=="update"||a[0].clientIdProperty){l=new Ext.util.MixedCollection();l.addAll(n);for(h=a.length;h--;){b=a[h];e=l.findBy(j.matchClientRec,b);k=b.copyFrom(e);if(m){c.push(k)}}}else{for(d=0,g=a.length;d<g;++d){b=a[d];e=n[d];if(b&&e){k=j.updateRecord(b,e);if(m){c.push(k)}}}}}else{k=j.updateRecord(a[0],n[0]);if(m){c[0]=k}}if(m){for(h=a.length;h--;){a[h].commit(false,c[h])}}}}},updateRecord:function(a,b){if(b&&(a.phantom||a.getId()===b.getId())){return a.copyFrom(b)}return[]},matchClientRec:function(c){var a=this,b=a.getId();if(b&&c.getId()===b){return true}return c.internalId===a.internalId},setStarted:function(){this.started=true;this.running=true},setCompleted:function(){this.complete=true;this.running=false},setSuccessful:function(){this.success=true},setException:function(a){this.exception=true;this.success=false;this.running=false;this.error=a},hasException:function(){return this.exception===true},getError:function(){return this.error},getRecords:function(){var a=this.getResultSet();return this.records||(a?a.records:null)},getResultSet:function(){return this.resultSet},isStarted:function(){return this.started===true},isRunning:function(){return this.running===true},isComplete:function(){return this.complete===true},wasSuccessful:function(){return this.isComplete()&&this.success===true},setBatch:function(a){this.batch=a},allowWrite:function(){return this.action!="read"}},1,0,0,0,0,0,[Ext.data,"Operation"],0));(Ext.cmd.derive("Ext.data.AbstractStore",Ext.Base,{statics:{create:function(a){if(!a.isStore){if(!a.type){a.type="store"}a=Ext.createByAlias("store."+a.type,a)}return a}},onClassExtended:function(b,d,a){var c=d.model,e;if(typeof c=="string"){e=a.onBeforeCreated;a.onBeforeCreated=function(){var h=this,g=arguments;Ext.require(c,function(){e.apply(h,g)})}}},remoteSort:false,remoteFilter:false,autoLoad:undefined,autoSync:false,batchUpdateMode:"operation",filterOnLoad:true,sortOnLoad:true,implicitModel:false,defaultProxyType:"memory",isDestroyed:false,isStore:true,sortRoot:"data",constructor:function(a){var c=this,b;Ext.apply(c,a);c.removed=[];c.mixins.observable.constructor.apply(c,arguments);c.model=Ext.ModelManager.getModel(c.model);Ext.applyIf(c,{modelDefaults:null});if(!c.model&&c.fields){c.model=Ext.define("Ext.data.Store.ImplicitModel-"+(c.storeId||Ext.id()),{extend:"Ext.data.Model",fields:c.fields,proxy:c.proxy||c.defaultProxyType});delete c.fields;c.implicitModel=true}c.setProxy(c.proxy||c.model.getProxy());if(!c.disableMetaChangeEvent){c.proxy.on("metachange",c.onMetaChange,c)}if(c.id&&!c.storeId){c.storeId=c.id;delete c.id}if(c.storeId){Ext.data.StoreManager.register(c)}c.mixins.sortable.initSortable.call(c);b=c.decodeFilters(c.filters);c.filters=new Ext.util.MixedCollection();c.filters.addAll(b)},setProxy:function(a){var b=this;if(a instanceof Ext.data.proxy.Proxy){a.setModel(b.model)}else{if(Ext.isString(a)){a={type:a}}Ext.applyIf(a,{model:b.model});a=Ext.createByAlias("proxy."+a.type,a)}b.proxy=a;return b.proxy},getProxy:function(){return this.proxy},onMetaChange:function(a,b){this.fireEvent("metachange",this,b)},create:function(e,c){var d=this,a=Ext.ModelManager.create(Ext.applyIf(e,d.modelDefaults),d.model.modelName),b;c=c||{};Ext.applyIf(c,{action:"create",records:[a]});b=new Ext.data.Operation(c);d.proxy.create(b,d.onProxyWrite,d);return a},read:function(){return this.load.apply(this,arguments)},update:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"update",records:c.getUpdatedRecords()});a=new Ext.data.Operation(b);return c.proxy.update(a,c.onProxyWrite,c)},onProxyWrite:function(b){var c=this,d=b.wasSuccessful(),a=b.getRecords();switch(b.action){case"create":c.onCreateRecords(a,b,d);break;case"update":c.onUpdateRecords(a,b,d);break;case"destroy":c.onDestroyRecords(a,b,d);break}if(d){c.fireEvent("write",c,b);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)}Ext.callback(b.callback,b.scope||c,[a,b,d])},onCreateRecords:Ext.emptyFn,onUpdateRecords:Ext.emptyFn,onDestroyRecords:function(b,a,c){if(c){this.removed=[]}},destroy:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"destroy",records:c.getRemovedRecords()});a=new Ext.data.Operation(b);return c.proxy.destroy(a,c.onProxyWrite,c)},onBatchOperationComplete:function(b,a){return this.onProxyWrite(a)},onBatchComplete:function(c,a){var g=this,b=c.operations,e=b.length,d;g.suspendEvents();for(d=0;d<e;d++){g.onProxyWrite(b[d])}g.resumeEvents();g.fireEvent("datachanged",g);g.fireEvent("refresh",g)},onBatchException:function(b,a){},filterNew:function(a){return a.phantom===true&&a.isValid()},getNewRecords:function(){return[]},getUpdatedRecords:function(){return[]},getModifiedRecords:function(){return[].concat(this.getNewRecords(),this.getUpdatedRecords())},filterUpdated:function(a){return a.dirty===true&&a.phantom!==true&&a.isValid()},getRemovedRecords:function(){return this.removed},filter:function(a,b){},decodeFilters:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,a=Ext.util.Filter,b,c;for(c=0;c<d;c++){b=e[c];if(!(b instanceof a)){Ext.apply(b,{root:"data"});if(b.fn){b.filterFn=b.fn}if(typeof b=="function"){b={filterFn:b}}e[c]=new a(b)}}return e},clearFilter:function(a){},isFiltered:function(){},filterBy:function(b,a){},sync:function(c){var e=this,b={},g=e.getNewRecords(),d=e.getUpdatedRecords(),a=e.getRemovedRecords(),h=false;if(g.length>0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a,b=this;if(!b.isDestroyed){b.clearListeners();if(b.storeId){Ext.data.StoreManager.unregister(b)}b.clearData();b.data=b.tree=b.sorters=b.filters=b.groupers=null;if(b.reader){b.reader.destroyReader()}b.proxy=b.reader=b.writer=null;b.isDestroyed=true;if(b.implicitModel){a=Ext.getClassName(b.model);Ext.undefine(a);Ext.ModelManager.unregisterType(a)}else{b.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(j){g[g.length]=j.serialize();c=true})}if(e.sorters){e.sorters.each(function(j){if(b&&!e.groupers.contains(j)){h[h.length]=j.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(j){d[d.length]=j.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.autoLoad&&(e.remoteSort||e.remoteGroup||e.remoteFilter)){if(e.autoLoad===true){e.reload()}else{e.reload(e.autoLoad)}}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}},1,0,0,0,0,[["observable",Ext.util.Observable],["sortable",Ext.util.Sortable]],[Ext.data,"AbstractStore"],0));(Ext.cmd.derive("Ext.app.domain.Store",Ext.app.EventDomain,{singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}},1,0,0,0,0,0,[Ext.app.domain,"Store"],0));(Ext.cmd.derive("Ext.app.Controller",Ext.Base,{statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b<g;b++){d+=Ext.String.capitalize(e[b])}d+=a;return d},processDependencies:function(r,s,c,d,k){if(!k||!k.length){return}var l=this,q=l.strings[d],b,p,n,a,e,g,m,h;if(!Ext.isArray(k)){k=[k]}for(e=0,g=k.length;e<g;e++){a=k[e];b=l.getFullName(a,d,c);p=b.absoluteName;n=b.shortName;s.push(p);m=l.getGetterName(n,q.upper);r[m]=h=l.createGetter(q.getter,a);if(d!=="controller"){h["Ext.app.getter"]=true}}},getFullName:function(c,e,d){var a=c,b,g;if((b=c.indexOf("@"))>0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,j;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||((j=l.exec(m))&&j[1]);if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},finishInit:function(g){var d=this,e=d.controllers,b,c,a;if(d._initialized&&e&&e.length){for(c=0,a=e.length;c<a;c++){b=d.getController(e[c]);b.finishInit(g)}}},init:Ext.emptyFn,onLaunch:Ext.emptyFn,ref:function(a){var g=this,b=0,e=a.length,h,d,c;a=Ext.Array.from(a);g.references=g.references||[];for(;b<e;b++){h=a[b];d=h.ref;c="get"+Ext.String.capitalize(d);if(!g[c]){g[c]=Ext.Function.pass(g.getRef,[d,h],g)}g.references.push(d.toLowerCase())}},addRef:function(a){this.ref(a)},getRef:function(d,g,a){var c=this,e=c.refCache||(c.refCache={}),b=e[d];g=g||{};a=a||{};Ext.apply(g,a);if(g.forceCreate){return Ext.ComponentManager.create(g,"component")}if(!b){if(g.selector){e[d]=b=Ext.ComponentQuery.query(g.selector)[0]}if(!b&&g.autoCreate){e[d]=b=Ext.ComponentManager.create(g,"component")}if(b){b.on("beforedestroy",function(){e[d]=null})}}return b},hasRef:function(b){var a=this.references;return a&&Ext.Array.indexOf(a,b.toLowerCase())!==-1},control:function(b,c,a){var d=this,e=a,g;if(Ext.isString(b)){g={};g[b]=c}else{g=b;e=c}d.eventbus.control(g,e||d)},listen:function(b,a){this.eventbus.listen(b,a||this)},getController:function(c){var a=this,b=a.application;if(c===a.id){return a}return b&&b.getController(c)},getStore:function(c){var a,b;a=(c.indexOf("@")==-1)?c:c.split("@")[0];b=Ext.StoreManager.get(a);if(!b){c=Ext.app.Controller.getFullName(c,"store",this.$namespace);if(c){b=Ext.create(c.absoluteName,{storeId:a})}}return b},getModel:function(b){var a=Ext.app.Controller.getFullName(b,"model",this.$namespace);return a&&Ext.ModelManager.getModel(a.absoluteName)},getView:function(a){var b=Ext.app.Controller.getFullName(a,"view",this.$namespace);return b&&Ext.ClassManager.get(b.absoluteName)},getApplication:function(){return this.application}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.app,"Controller"],0));(Ext.cmd.derive("Ext.container.DockingContainer",Ext.Base,{isDockingContainer:true,defaultDockWeights:{top:{render:1,visual:1},left:{render:3,visual:5},right:{render:5,visual:7},bottom:{render:7,visual:3}},dockOrder:{top:-1,left:-1,right:1,bottom:1},horizontalDocks:0,addDocked:function(a,g){var e=this,b=0,d,c;a=e.prepareItems(a);c=a.length;for(;b<c;b++){d=a[b];d.dock=d.dock||"top";if(d.dock==="left"||d.dock==="right"){e.horizontalDocks++}if(g!==undefined){b+=g;e.dockedItems.insert(b,d)}else{e.dockedItems.add(d)}d.onAdded(e,b);if(e.hasListeners.dockedadd){e.fireEvent("dockedadd",e,d,b)}if(e.onDockedAdd!==Ext.emptyFn){e.onDockedAdd(d)}}if(e.rendered&&!e.suspendLayout){e.updateLayout()}return a},destroyDockedItems:function(){var a=this.dockedItems,b;if(a){while((b=a.first())){this.removeDocked(b,true)}}},doRenderDockedItems:function(c,g,h){var e=g.$comp,d=e.componentLayout,b,a;if(d.getDockedItems&&!g.$skipDockedItems){b=d.getDockedItems("render",!h);a=b&&d.getItemsRenderTree(b);if(a){Ext.DomHelper.generateMarkup(a,c)}}},getDockedComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.dockedItems.get(a)},getDockedItems:function(a,c){var b=this.getComponentLayout().getDockedItems("render",c);if(a&&b.length){b=Ext.ComponentQuery.query(a,b)}return b},getDockingRefItems:function(b,e){var a=b&&"*,* *",d=this.getDockedItems(a,true),c;d.push.apply(d,e);c=this.getDockedItems(a,false);d.push.apply(d,c);return d},initDockingItems:function(){var b=this,a=b.dockedItems;b.dockedItems=new Ext.util.AbstractMixedCollection(false,b.getComponentId);if(a){b.addDocked(a)}},insertDocked:function(b,a){this.addDocked(a,b)},onDockedAdd:Ext.emptyFn,onDockedRemove:Ext.emptyFn,removeDocked:function(e,b){var d=this,c,a;b=b===true||(b!==false&&d.autoDestroy);if(!d.dockedItems.contains(e)){return e}if(e.dock==="left"||e.dock==="right"){d.horizontalDocks--}c=d.componentLayout;a=c&&d.rendered;if(a){c.onRemove(e)}d.dockedItems.remove(e);e.onRemoved(e.destroying||b);d.onDockedRemove(e);if(b){e.destroy()}else{if(a){c.afterRemove(e)}}if(d.hasListeners.dockedremove){d.fireEvent("dockedremove",d,e)}if(!d.destroying&&!d.suspendLayout){d.updateLayout()}return e},setupDockingRenderTpl:function(a){a.renderDockedItems=this.doRenderDockedItems}},0,0,0,0,0,0,[Ext.container,"DockingContainer"],0));(Ext.cmd.derive("Ext.toolbar.Fill",Ext.Component,{alternateClassName:"Ext.Toolbar.Fill",isFill:true,flex:1},0,["tbfill"],["component","box","tbfill"],{component:true,box:true,tbfill:true},["widget.tbfill"],0,[Ext.toolbar,"Fill",Ext.Toolbar,"Fill"],0));(Ext.cmd.derive("Ext.layout.container.boxOverflow.None",Ext.Base,{alternateClassName:"Ext.layout.boxOverflow.None",constructor:function(b,a){this.layout=b;Ext.apply(this,a)},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn,beginLayout:Ext.emptyFn,beginLayoutCycle:Ext.emptyFn,calculate:function(b){var a=this,c=b.state.boxPlan,d;if(c&&c.tooNarrow){d=a.handleOverflow(b);if(d){if(d.reservedSpace){a.layout.publishInnerCtSize(b,d.reservedSpace)}}}else{a.clearOverflow()}},completeLayout:Ext.emptyFn,finishedLayout:function(d){var c=this,a=c.layout.owner,b,e;if(a.hasListeners.overflowchange){b=a.query(">[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"None",Ext.layout.boxOverflow,"None"],0));(Ext.cmd.derive("Ext.toolbar.Item",Ext.Component,{alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,["tbitem"],["tbitem","component","box"],{tbitem:true,component:true,box:true},["widget.tbitem"],0,[Ext.toolbar,"Item",Ext.Toolbar,"Item"],0));(Ext.cmd.derive("Ext.toolbar.Separator",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false},0,["tbseparator"],["tbitem","component","box","tbseparator"],{tbitem:true,component:true,box:true,tbseparator:true},["widget.tbseparator"],0,[Ext.toolbar,"Separator",Ext.Toolbar,"Separator"],0));(Ext.cmd.derive("Ext.button.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(!a.initialized){Ext.getDoc().on({keydown:a.onDocumentKeyDown,mouseup:a.onDocumentMouseUp,scope:a});a.initialized=true}},onDocumentKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},onButtonMousedown:function(a,c){var b=this.pressedButton;if(b){b.onMouseUp(c)}this.pressedButton=a},onDocumentMouseUp:function(b){var a=this.pressedButton;if(a){a.onMouseUp(b);this.pressedButton=null}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;a<c;a++){if(d[a]!==b){d[a].toggle(false)}}}},register:function(b){var c=this,a=this.groups,d=a[b.toggleGroup];c.init();if(!b.toggleGroup){return}if(!d){d=a[b.toggleGroup]=[]}d.push(b);b.on("toggle",c.toggleGroup,c)},unregister:function(a){if(!a.toggleGroup){return}var b=this,c=b.groups[a.toggleGroup];if(c){Ext.Array.remove(c,a);a.un("toggle",b.toggleGroup,b)}},getPressed:function(d){var c=this.groups[d],b=0,a;if(c){for(a=c.length;b<a;b++){if(c[b].pressed===true){return c[b]}}}return null}},0,0,0,0,0,0,[Ext.button,"Manager",Ext,"ButtonToggleManager"],0));(Ext.cmd.derive("Ext.menu.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.menu.MenuMgr",menuSelector:"."+Ext.baseCSSPrefix+"menu",menus:{},groups:{},attached:false,lastShow:new Date(),init:function(){var a=this;a.active=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(a.active.length>0){a.hideAll()}},a)},hideAll:function(){var c=this.active,b,a,d;if(c&&c.length>0){b=Ext.Array.slice(c.items);d=b.length;for(a=0;a<d;a++){b[a].hide()}return true}return false},onHide:function(a){var b=this,c=b.active;c.remove(a);if(c.length<1){Ext.getDoc().un("mousedown",b.onMouseDown,b);b.attached=false}},onShow:function(a){var c=this,d=c.active,b=c.attached;c.lastShow=new Date();d.add(a);if(!b){Ext.getDoc().on("mousedown",c.onMouseDown,c,{buffer:Ext.isIE9m?10:undefined});c.attached=true}a.toFront()},onBeforeHide:function(a){if(a.activeChild){a.activeChild.hide()}if(a.autoHideTimer){clearTimeout(a.autoHideTimer);delete a.autoHideTimer}},onBeforeShow:function(a){var c=this.active,b=a.parentMenu;c.remove(a);if(!b&&!a.allowOtherMenus){this.hideAll()}else{if(b&&b.activeChild&&a!=b.activeChild){b.activeChild.hide()}}},onMouseDown:function(g){var b=this,d=b.active,a=b.lastShow,c=true;if(Ext.Date.getElapsed(a)>50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getDoc().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,j,e,h;if(c&&g){j=a[c];e=j.length;for(;b<e;b++){h=j[b];if(h!=d){h.setChecked(false)}}}}},0,0,0,0,0,0,[Ext.menu,"Manager",Ext.menu,"MenuMgr"],0));(Ext.cmd.derive("Ext.util.ClickRepeater",Ext.util.Observable,{constructor:function(b,a){var c=this;c.el=Ext.get(b);c.el.unselectable();Ext.apply(c,a);c.callParent();c.addEvents("mousedown","click","mouseup");if(!c.disabled){c.disabled=true;c.enable()}if(c.handler){c.on("click",c.handler,c.scope||c)}},interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(Ext.isIE&&!(Ext.isIE10p||(Ext.isStrict&&Ext.isIE9))){this.el.on("dblclick",this.handleDblClick,this)}if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressedCls){this.el.removeCls(this.pressedCls)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.clearListeners()},handleDblClick:function(a){clearTimeout(this.timer);this.el.blur();this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a)},handleMouseDown:function(a){clearTimeout(this.timer);this.el.blur();if(this.pressedCls){this.el.addCls(this.pressedCls)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a);if(this.accelerate){this.delay=400}a=new Ext.EventObjectImpl(a);this.timer=Ext.defer(this.click,this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=Ext.defer(this.click,this.accelerate?this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),400,-390,12000):this.interval,this,[a])},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+1)+a},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressedCls){this.el.removeCls(this.pressedCls)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressedCls){this.el.addCls(this.pressedCls)}this.click()},handleMouseUp:function(a){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);if(this.pressedCls){this.el.removeCls(this.pressedCls)}this.fireEvent("mouseup",this,a)}},1,0,0,0,0,0,[Ext.util,"ClickRepeater"],0));(Ext.cmd.derive("Ext.layout.component.Button",Ext.layout.component.Auto,{type:"button",htmlRE:/<.*>/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var h=this,c=h.owner,j=d.btnElContext,g=d.btnInnerElContext,m=d.btnWrapContext,e=Math.max,b,k,l,a;h.callParent(arguments);if(d.heightModel.shrinkWrap){l=c.btnEl.getHeight();if(d.isHtmlText){h.centerInnerEl(d,l);h.ieCenterIcon(d,l)}}else{b=d.getProp("height");if(b){k=b-d.getFrameInfo().height-d.getPaddingInfo().height;l=k;if((c.menu||c.split)&&c.arrowAlign==="bottom"){l-=m.getPaddingInfo().bottom}a=l;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=g.getPaddingInfo().height}m.setProp("height",e(0,k));j.setProp("height",e(0,l));if(d.isHtmlText){h.centerInnerEl(d,l)}else{g.setProp("line-height",e(0,a)+"px")}h.ieCenterIcon(d,l)}else{if(b!==0){h.done=false}}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&(d<a)){e.btnElContext.setHeight(a)}else{if(d>a){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}},0,0,0,0,["layout.button"],0,[Ext.layout.component,"Button"],0));(Ext.cmd.derive("Ext.util.TextMetrics",Ext.Base,{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,d){var c=this,b=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});c.measure=b;if(a){c.bind(a)}b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(d){b.setWidth(d)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},1,0,0,0,0,0,[Ext.util,"TextMetrics"],function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})}));(Ext.cmd.derive("Ext.button.Button",Ext.Component,{alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,tabIndex:0,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:['<span id="{id}-btnWrap" class="{baseCls}-wrap','<tpl if="splitCls"> {splitCls}</tpl>','{childElCls}" unselectable="on">','<span id="{id}-btnEl" class="{baseCls}-button">','<span id="{id}-btnInnerEl" class="{baseCls}-inner {innerCls}','{childElCls}" unselectable="on">',"{text}","</span>",'<span role="img" id="{id}-btnIconEl" class="{baseCls}-icon-el {iconCls}','{childElCls} {glyphCls}" unselectable="on" style="','<tpl if="iconUrl">background-image:url({iconUrl});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl><tpl if="iconCls || iconUrl">&#160;</tpl>',"</span>","</span>","</span>",'<tpl if="closable">','<span id="{id}-closeEl" class="{baseCls}-close-btn" title="{closeText}" tabIndex="0"></span>',"</tpl>"],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.autoEl={tag:"a",role:"button",hidefocus:"on",unselectable:"on"};a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a;if(b.iconCls||b.icon||b.glyph){a=[b.text?"icon-text-"+b.iconAlign:"icon"]}else{if(b.text){a=["noicon"]}else{a=[]}}if(b.pressed){a[a.length]=b.pressedCls}return a},beforeRender:function(){var b=this,c=b.autoEl,a=b.getHref(),d=b.hrefTarget;if(!b.disabled){c.tabIndex=b.tabIndex}if(a){c.href=a;if(d){c.target=d}}b.callParent();b.oldCls=b.getComponentCls();b.addClsWithUI(b.oldCls);Ext.applyIf(b.renderData,b.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||"&#160;"}},setHref:function(a){this.href=a;this.el.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.el.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b);d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.el.id},c));b.tooltip=c}else{b.el.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.el;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||"&#160;");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.el)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=(c.arrowAlign==="right")?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h<a.end){if(!d){c.onMenuTriggerOver(g)}}else{if(d){c.onMenuTriggerOut(g)}}}},getTriggerRegion:function(){var c=this,d=c._triggerRegion,b=c.getTriggerSize(),a=c.arrowAlign==="right"?c.getWidth():c.getHeight();d.begin=a-b;d.end=a;return d},getTriggerSize:function(){var d=this,c=d.triggerSize,b,a;if(c==null){b=d.arrowAlign;a=b.charAt(0);c=d.triggerSize=d.el.getFrameWidth(a)+d.getBtnWrapFrameWidth(a);if(d.frameSize){c=d.triggerSize+=d.frameSize[b]}}return c},getBtnWrapFrameWidth:function(a){return this.btnWrap.getFrameWidth(a)},addOverCls:function(){if(!this.disabled){this.addClsWithUI(this.overCls)}},removeOverCls:function(){this.removeClsWithUI(this.overCls)},onMouseEnter:function(a){this.fireEvent("mouseover",this,a)},onMouseLeave:function(a){this.fireEvent("mouseout",this,a)},onMenuTriggerOver:function(c){var b=this,a=b.arrowTooltip;b.overMenuTrigger=true;if(b.split&&a){b.btnWrap.dom.setAttribute(b.getTipAttr(),a)}b.fireEvent("menutriggerover",b,b.menu,c)},onMenuTriggerOut:function(b){var a=this;delete a.overMenuTrigger;if(a.split&&a.arrowTooltip){a.btnWrap.dom.setAttribute(a.getTipAttr(),"")}a.fireEvent("menutriggerout",a,a.menu,b)},enable:function(a){var b=this;b.callParent(arguments);b.removeClsWithUI("disabled");if(b.rendered){b.el.dom.setAttribute("tabIndex",b.tabIndex)}return b},disable:function(a){var b=this;b.callParent(arguments);b.addClsWithUI("disabled");b.removeClsWithUI(b.overCls);if(b.rendered){b.el.dom.removeAttribute("tabIndex")}if(b.btnInnerEl&&Ext.isIE7m){b.btnInnerEl.repaint()}return b},setScale:function(c){var a=this,b=a.ui.replace("-"+a.scale,"");if(!Ext.Array.contains(a.allowedScales,c)){throw ("#setScale: scale must be an allowed scale ("+a.allowedScales.join(", ")+")")}a.scale=c;a.setUI(b)},setUI:function(b){var a=this;if(a.scale&&!b.match(a.scale)){b=b+"-"+a.scale}a.callParent([b])},onMouseDown:function(b){var a=this;if(Ext.isIE){a.getFocusEl().focus()}if(!a.disabled&&b.button===0){Ext.button.Manager.onButtonMousedown(a,b);a.addClsWithUI(a.pressedCls)}},onMouseUp:function(b){var a=this;if(b.button===0){if(!a.pressed){a.removeClsWithUI(a.pressedCls)}}},onMenuShow:function(b){var a=this;a.ignoreNextClick=0;a.addClsWithUI(a.menuActiveCls);a.fireEvent("menushow",a,a.menu)},onMenuHide:function(b){var a=this;a.removeClsWithUI(a.menuActiveCls);a.ignoreNextClick=Ext.defer(a.restoreClick,250,a);a.fireEvent("menuhide",a,a.menu);a.focus()},restoreClick:function(){this.ignoreNextClick=0},onDownKey:function(a,c){var b=this;if(b.menu&&!b.disabled){b.showMenu();c.stopEvent();return false}}},0,["button"],["button","component","box"],{button:true,component:true,box:true},["widget.button"],[["queryable",Ext.Queryable]],[Ext.button,"Button",Ext,"Button"],0));(Ext.cmd.derive("Ext.layout.container.boxOverflow.Menu",Ext.layout.container.boxOverflow.None,{alternateClassName:"Ext.layout.boxOverflow.Menu",noItemsMenuText:'<div class="'+Ext.baseCSSPrefix+'toolbar-no-items">(None)</div>',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,j=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;c<d;c++){e=b[c];e.suspendLayouts();e.show();e.resumeLayouts(j)}b.length=0},showTrigger:function(c){var o=this,k=o.layout,a=k.owner,n=k.names,r=n.x,e=n.width,p=c.state.boxPlan,b=p.targetSize[e],h=c.childItems,l=h.length,g=o.menuTrigger,q,j,d,m;g.suspendLayouts();g.show();g.resumeLayouts(o._asLayoutRoot);b-=o.triggerTotalWidth;a.suspendLayouts();o.menuItems.length=0;for(d=0;d<l;d++){q=h[d];m=q.props;if(m[r]+m[e]>b){j=q.target;o.menuItems.push(j);j.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(j){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,k){return l.isXType("buttongroup")&&!(k instanceof Ext.toolbar.Separator)};j.suspendLayouts();h.clearMenu();j.removeAll();for(;d<a;d++){g=b[d];if(!d&&(g instanceof Ext.toolbar.Separator)){continue}if(e&&(c(g,e)||c(e,g))){j.add("-")}h.addComponentToMenu(j,g);e=g}if(j.items.length<1){j.add(h.noItemsMenuText)}j.resumeLayouts()},createMenuConfig:function(c,a){var d=this,b=Ext.apply({},c.initialConfig),e=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu","tabIndex"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a,destroyMenu:false,listeners:{}});if(c.isFormField){b.value=c.getValue();b.listeners.change=function(j,h,g){c.setValue(h)}}else{if(e||c.enableToggle){Ext.apply(b,{hideOnClick:false,group:e,checked:c.pressed,handler:function(g,h){c.onClick(h)}})}}if(c.isButton&&!c.changeListenersAdded){c.on({textchange:d.onButtonAttrChange,iconchange:d.onButtonAttrChange,toggle:d.onButtonToggle});c.changeListenersAdded=true}delete b.margin;delete b.ownerCt;delete b.xtype;delete b.id;delete b.itemId;return b},onButtonAttrChange:function(a){var b=a.overflowClone;b.suspendLayouts();b.setText(a.text);b.setIcon(a.icon);b.setIconCls(a.iconCls);b.resumeLayouts(true)},onButtonToggle:function(a,b){if(a.overflowClone.checked!==b){a.overflowClone.setChecked(b)}},addComponentToMenu:function(g,c){var e=this,d,b,a;if(c instanceof Ext.toolbar.Separator){g.add("-")}else{if(c.isComponent){if(c.isXType("splitbutton")){c.overflowClone=g.add(e.createMenuConfig(c,true))}else{if(c.isXType("button")){c.overflowClone=g.add(e.createMenuConfig(c,!c.menu))}else{if(c.isXType("buttongroup")){b=c.items.items;a=b.length;for(d=0;d<a;d++){e.addComponentToMenu(g,b[d])}}else{c.overflowClone=g.add(Ext.create(Ext.getClassName(c),e.createMenuConfig(c)))}}}}}},clearMenu:function(){var e=this.menu,b,c,a,d;if(e&&e.items){b=e.items.items;a=b.length;for(c=0;c<a;c++){d=b[c];if(d.setMenu){d.setMenu(null)}}}},destroy:function(){var a=this.menuTrigger;if(a&&!this.layout.owner.items.contains(a)){delete a.ownerCt}Ext.destroy(this.menu,a)}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"Menu",Ext.layout.boxOverflow,"Menu"],0));(Ext.cmd.derive("Ext.layout.container.boxOverflow.Scroller",Ext.layout.container.boxOverflow.None,{alternateClassName:"Ext.layout.boxOverflow.Scroller",animateScroll:false,scrollIncrement:20,wheelIncrement:10,scrollRepeatInterval:60,scrollDuration:400,scrollerCls:Ext.baseCSSPrefix+"box-scroller",constructor:function(c,a){var b=this;b.layout=c;Ext.apply(b,a||{});b.mixins.observable.constructor.call(b);b.addEvents("scroll");b.scrollPosition=0;b.scrollSize=0},getPrefixConfig:function(){var d=this,c=d.layout,a=c.owner,b;d.initCSSClasses();b=Ext.layout.container.Box.prototype.innerCls+" "+d.beforeCtCls;if(a.plain){b+=" "+d.scrollerCls+"-plain"}return{cls:b,cn:{id:a.id+c.names.beforeScrollerSuffix,cls:d.scrollerCls+" "+d.beforeScrollerCls,style:"display:none"}}},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=Ext.layout.container.Box.prototype.innerCls+" "+d.afterCtCls;if(a.plain){b+=" "+d.scrollerCls+"-plain"}return{cls:b,cn:{id:a.id+c.names.afterScrollerSuffix,cls:d.scrollerCls+" "+d.afterScrollerCls,style:"display:none"}}},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},initCSSClasses:function(){var d=this,g=Ext.baseCSSPrefix,c=d.layout,h=c.names,a=h.beforeX,e=h.afterX,b=d.getOwnerType(c.owner);d.beforeCtCls=d.beforeCtCls||g+"box-scroller-"+a;d.afterCtCls=d.afterCtCls||g+"box-scroller-"+e;d.beforeScrollerCls=d.beforeScrollerCls||g+b+"-scroll-"+a;d.afterScrollerCls=d.afterScrollerCls||g+b+"-scroll-"+e},beginLayout:function(b){var a=this.layout;b.innerCtScrollPos=this.getScrollPosition();this.callParent(arguments)},completeLayout:function(c){var b=this,e=c.state.boxPlan,d=b.layout.names,a;if(e&&e.tooNarrow){a=c.childItems[c.childItems.length-1];b.scrollSize=a.props[d.x]+a.props[d.width];b.updateScrollButtons()}this.callParent(arguments)},finishedLayout:function(c){var b=this,a=b.layout,d=Math.min(b.getMaxScrollPosition(),c.innerCtScrollPos);a.innerCt[a.names.setScrollLeft](d)},handleOverflow:function(c){var b=this,a=b.layout.names.getWidth;b.showScrollers();return{reservedSpace:b.beforeCt[a]()+b.afterCt[a]()}},captureChildElements:function(){var e=this,c=e.layout.owner.el,g,j,b,a,d,h;if(!e.beforeCt){h="-hover";a="-pressed";b=e.scrollerCls+h;d=e.scrollerCls+a;g=e.beforeScroller=c.getById(e.layout.owner.id+"-before-scroller");j=e.afterScroller=c.getById(e.layout.owner.id+"-after-scroller");e.beforeCt=g.up("");e.afterCt=j.up("");e.createWheelListener();g.addClsOnOver(b);g.addClsOnOver(e.beforeScrollerCls+h);g.addClsOnClick(d);g.addClsOnClick(e.beforeScrollerCls+a);j.addClsOnOver(b);j.addClsOnOver(e.afterScrollerCls+h);j.addClsOnClick(d);j.addClsOnClick(e.afterScrollerCls+a);g.setVisibilityMode(Ext.Element.DISPLAY);j.setVisibilityMode(Ext.Element.DISPLAY);e.beforeRepeater=new Ext.util.ClickRepeater(g,{interval:e.scrollRepeatInterval,handler:e.scrollLeft,scope:e});e.afterRepeater=new Ext.util.ClickRepeater(j,{interval:e.scrollRepeatInterval,handler:e.scrollRight,scope:e})}},createWheelListener:function(){var a=this;a.layout.innerCt.on({mousewheel:function(b){a.scrollBy(a.getWheelDelta(b)*a.wheelIncrement*-1,false)},stopEvent:true})},getWheelDelta:function(a){return a.getWheelDelta()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){var a=this;a.captureChildElements();a.beforeScroller.show();a.afterScroller.show();a.layout.owner.addClsWithUI(a.layout.direction==="vertical"?"vertical-scroller":"scroller")},hideScrollers:function(){var a=this;if(a.beforeScroller!==undefined){a.beforeScroller.hide();a.afterScroller.hide();a.layout.owner.removeClsWithUI(a.layout.direction==="vertical"?"vertical-scroller":"scroller")}},destroy:function(){var a=this;Ext.destroy(a.beforeRepeater,a.afterRepeater,a.beforeScroller,a.afterScroller,a.beforeCt,a.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){var d=this,h,c,a,b,e,g="-disabled";if(d.beforeScroller==null||d.afterScroller==null){return}h=d.atExtremeBefore()?"addCls":"removeCls";c=d.atExtremeAfter()?"addCls":"removeCls";e=d.scrollerCls+g;a=[e,d.beforeScrollerCls+g];b=[e,d.afterScrollerCls+g];d.beforeScroller[h](a);d.afterScroller[c](b);d.scrolling=false},scrollLeft:function(){this.scrollBy(-this.scrollIncrement,false)},scrollRight:function(){this.scrollBy(this.scrollIncrement,false)},getScrollPosition:function(){var c=this,b=c.layout,a;if(isNaN(c.scrollPosition)){a=b.innerCt[b.names.getScrollLeft]()}else{a=c.scrollPosition}return a},getMaxScrollPosition:function(){var b=this,a=b.layout,c=b.scrollSize-a.innerCt[a.names.getWidth]();return(c<0)?0:c},atExtremeBefore:function(){return !this.getScrollPosition()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.names,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt[h.scrollTo](h.beforeScrollX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var j=this,e=j.layout,c=e.owner,h=e.names,a,d,g;k=j.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=j.getMaxScrollPosition()}else{a=j.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=(j.layout.innerCt[h.getWidth]()-d[h.width])}}}}if(g!==undefined){j.scrollTo(g,b)}}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),j=a+c.innerCt[g.getWidth]();return{hiddenStart:e<a,hiddenEnd:d>j,fullyVisible:e>a&&d<j}}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.layout.container.boxOverflow,"Scroller",Ext.layout.boxOverflow,"Scroller"],0));(Ext.cmd.derive("Ext.util.Offset",Ext.Base,{statics:{fromObject:function(a){return new this(a.x,a.y)}},constructor:function(a,b){this.x=(a!=null&&!isNaN(a))?a:0;this.y=(b!=null&&!isNaN(b))?b:0;return this},copy:function(){return new Ext.util.Offset(this.x,this.y)},copyFrom:function(a){this.x=a.x;this.y=a.y},toString:function(){return"Offset["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},round:function(b){if(!isNaN(b)){var a=Math.pow(10,b);this.x=Math.round(this.x*a)/a;this.y=Math.round(this.y*a)/a}else{this.x=Math.round(this.x);this.y=Math.round(this.y)}},isZero:function(){return this.x==0&&this.y==0}},3,0,0,0,0,0,[Ext.util,"Offset"],0));(Ext.cmd.derive("Ext.util.Region",Ext.Base,{statics:{getRegion:function(a){return Ext.fly(a).getRegion()},from:function(a){return new this(a.top,a.right,a.bottom,a.left)}},constructor:function(d,g,a,c){var e=this;e.y=e.top=e[1]=d;e.right=g;e.bottom=a;e.x=e.left=e[0]=c},contains:function(b){var a=this;return(b.x>=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(a<this.x||a>this.right)},isOutOfBoundY:function(a){return(a<this.y||a>this.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}},3,0,0,0,0,0,[Ext.util,"Region"],0));(Ext.cmd.derive("Ext.dd.DragDropManager",Ext.Base,{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(a){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;c<a;++c){if(b[c].id==d.id){return true}}return false},isTypeOfDD:function(a){return(a&&a.__ygDragDrop)},isHandle:function(b,a){return(this.handleIds[b]&&this.handleIds[b][a])},getDDById:function(c){var b,a;for(b in this.ids){a=this.ids[b][c];if(a instanceof Ext.dd.DDTarget){return a}}return null},handleMouseDown:function(d,c){var b=this,a;if(Ext.quickTipsActive){Ext.tip.QuickTipManager.ddDisable()}if(b.dragCurrent){b.handleMouseUp(d)}b.currentTarget=d.getTarget();b.dragCurrent=c;a=c.getEl();if(Ext.isIE9m&&a.setCapture){a.setCapture()}b.startX=d.getPageX();b.startY=d.getPageY();b.deltaX=b.startX-a.offsetLeft;b.deltaY=b.startY-a.offsetTop;b.dragThreshMet=false;b.clickTimeout=setTimeout(function(){b.startDrag(b.startX,b.startY)},b.clickTimeThresh)},startDrag:function(b,e){var c=this,d=c.dragCurrent,a;clearTimeout(c.clickTimeout);if(d){d.b4StartDrag(b,e);d.startDrag(b,e);a=d.getDragEl();if(a){Ext.fly(a).addCls(c.dragCls)}}c.dragThreshMet=true},handleMouseUp:function(b){var a=this;if(Ext.quickTipsActive){Ext.tip.QuickTipManager.ddEnable()}if(!a.dragCurrent){return}if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}clearTimeout(a.clickTimeout);if(a.dragThreshMet){a.fireEvents(b,true)}a.stopDrag(b);a.stopEvent(b)},stopEvent:function(a){if(this.stopPropagation){a.stopPropagation()}if(this.preventDefault){a.preventDefault()}},stopDrag:function(d){var b=this,c=b.dragCurrent,a;if(c){if(b.dragThreshMet){a=c.getDragEl();if(a){Ext.fly(a).removeCls(b.dragCls)}c.b4EndDrag(d);c.endDrag(d)}b.dragCurrent.onMouseUp(d)}b.dragCurrent=null;b.dragOvers={}},handleMouseMove:function(g){var c=this,d=c.dragCurrent,b,a;if(!d){return true}if(!c.dragThreshMet){b=Math.abs(c.startX-g.getPageX());a=Math.abs(c.startY-g.getPageY());if(b>c.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(u,m){var w=this,g=w.dragCurrent,c,o,s=u.getPoint(),d,l,n=[],h=[],k=[],a=[],v=[],t=[],j,b,q,r,p;if(!g||g.isLocked()){return}if(!w.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();o=c.style.top;c.style.top="-10000px";j=u.getXY();u.target=document.elementFromPoint(j[0],j[1]);c.style.top=o}for(q in w.dragOvers){d=w.dragOvers[q];if(!w.isTypeOfDD(d)){continue}if(w.notifyOccluded){if(!this.isOverTarget(s,d,w.mode)){k.push(d)}}else{if(!u.within(d.getEl())){k.push(d)}}h[q]=true;delete w.dragOvers[q]}for(p in g.groups){if("string"!=typeof p){continue}for(q in w.ids[p]){d=w.ids[p][q];if(w.isTypeOfDD(d)&&(l=d.getEl())&&(d.isTarget)&&(!d.isLocked())&&(Ext.fly(l).isVisible(true))&&((d!=g)||(g.ignoreSelf===false))){if(w.notifyOccluded){if((d.zIndex=w.getZIndex(l))!==-1){b=true}n.push(d)}else{if(u.within(d.getEl())){n.push(d);break}}}}}if(b){Ext.Array.sort(n,w.byZIndex)}for(q=0,r=n.length;q<r;q++){d=n[q];if(w.isOverTarget(s,d,w.mode)){if(m){v.push(d)}else{if(!h[d.id]){t.push(d)}else{a.push(d)}w.dragOvers[d.id]=d}if(!w.notifyOccluded){break}}}if(w.mode){if(k.length){g.b4DragOut(u,k);g.onDragOut(u,k)}if(t.length){g.onDragEnter(u,t)}if(a.length){g.b4DragOver(u,a);g.onDragOver(u,a)}if(v.length){g.b4DragDrop(u,v);g.onDragDrop(u,v)}}else{for(q=0,r=k.length;q<r;++q){g.b4DragOut(u,k[q].id);g.onDragOut(u,k[q].id)}for(q=0,r=t.length;q<r;++q){g.onDragEnter(u,t[q].id)}for(q=0,r=a.length;q<r;++q){g.b4DragOver(u,a[q].id);g.onDragOver(u,a[q].id)}for(q=0,r=v.length;q<r;++q){g.b4DragDrop(u,v[q].id);g.onDragDrop(u,v[q].id)}}if(m&&!v.length){g.onInvalidDrop(u)}},getZIndex:function(b){var a=document.body,c,d=-1;b=Ext.getDom(b);while(b!==a){if(!isNaN(c=Number(Ext.fly(b).getStyle("zIndex")))){d=c}b=b.parentNode}return d},byZIndex:function(b,a){return b.zIndex<a.zIndex},getBestMatch:function(c){var e=null,b=c.length,d,a;if(b==1){e=c[0]}else{for(d=0;d<b;++d){a=c[d];if(a.cursorIsOver){e=a;break}else{if(!e||e.overlap.getArea()<a.overlap.getArea()){e=a}}}}return e},refreshCache:function(b){var a,c,d,e;for(a in b){if("string"!=typeof a){continue}for(c in this.ids[a]){d=this.ids[a][c];if(this.isTypeOfDD(d)){e=this.getLocation(d);if(e){this.locationCache[d.id]=e}else{delete this.locationCache[d.id]}}}}},verifyEl:function(b){if(b){var a;if(Ext.isIE){try{a=b.offsetParent}catch(c){}}else{a=b.offsetParent}if(a){return true}}return false},getLocation:function(j){if(!this.isTypeOfDD(j)){return null}if(j.getRegion){return j.getRegion()}var g=j.getEl(),n,d,c,p,o,q,a,m,h;try{n=Ext.Element.getXY(g)}catch(k){}if(!n){return null}d=n[0];c=d+g.offsetWidth;p=n[1];o=p+g.offsetHeight;q=p-j.padding[0];a=c+j.padding[1];m=o+j.padding[2];h=d-j.padding[3];return new Ext.util.Region(q,a,m,h)},isOverTarget:function(k,a,c){var e=this.locationCache[a.id],j,g,b,d,h;if(!e||!this.useCache){e=this.getLocation(a);this.locationCache[a.id]=e}if(!e){return false}a.cursorIsOver=e.contains(k);j=this.dragCurrent;if(!j||!j.getTargetCoord||(!c&&!j.constrainX&&!j.constrainY)){return a.cursorIsOver}a.overlap=null;g=j.getTargetCoord(k.x,k.y);b=j.getDragEl();d=new Ext.util.Region(g.y,g.x+b.offsetWidth,g.y+b.offsetHeight,g.x);h=d.intersect(e);if(h){a.overlap=h;return(c)?true:a.cursorIsOver}else{return false}},_onUnload:function(b,a){Ext.dd.DragDropManager.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var a in this.elementCache){delete this.elementCache[a]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(b){var a=this.elementCache[b];if(!a||!a.el){a=this.elementCache[b]=new this.ElementWrapper(Ext.getDom(b))}return a},getElement:function(a){return Ext.getDom(a)},getCss:function(b){var a=Ext.getDom(b);return(a)?a.style:null},ElementWrapper:function(a){this.el=a||null;this.id=this.el&&a.id;this.css=this.el&&a.style},getPosX:function(a){return Ext.Element.getX(a)},getPosY:function(a){return Ext.Element.getY(a)},swapNode:function(c,a){if(c.swapNode){c.swapNode(a)}else{var d=a.parentNode,b=a.nextSibling;if(b==c){d.insertBefore(c,a)}else{if(a==c.nextSibling){d.insertBefore(a,c)}else{c.parentNode.replaceChild(a,c);d.insertBefore(c,b)}}}},getScroll:function(){var d=window.document,e=d.documentElement,a=d.body,c=0,b=0;if(Ext.isGecko4){c=window.scrollYOffset;b=window.scrollXOffset}else{if(e&&(e.scrollTop||e.scrollLeft)){c=e.scrollTop;b=e.scrollLeft}else{if(a){c=a.scrollTop;b=a.scrollLeft}}}return{top:c,left:b}},getStyle:function(b,a){return Ext.fly(b).getStyle(a)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(a,c){var b=Ext.Element.getXY(c);Ext.Element.setXY(a,b)},numericSort:function(d,c){return(d-c)},_timeoutCount:0,_addListeners:function(){if(document){this._onLoad()}else{if(this._timeoutCount<=2000){setTimeout(this._addListeners,10);if(document&&document.body){this._timeoutCount+=1}}}},handleWasClicked:function(a,c){if(this.isHandle(c,a.id)){return true}else{var b=a.parentNode;while(b){if(this.isHandle(c,b.id)){return true}else{b=b.parentNode}}}return false}},0,0,0,0,0,0,[Ext.dd,"DragDropManager",Ext.dd,"DragDropMgr",Ext.dd,"DDM"],function(){this._addListeners()}));(Ext.cmd.derive("Ext.layout.container.Box",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BoxLayout",defaultMargins:{top:0,right:0,bottom:0,left:0},padding:0,pack:"start",flex:undefined,stretchMaxPartner:undefined,alignRoundingMethod:"round",type:"box",scrollOffset:0,itemCls:Ext.baseCSSPrefix+"box-item",targetCls:Ext.baseCSSPrefix+"box-layout-ct",targetElCls:Ext.baseCSSPrefix+"box-target",innerCls:Ext.baseCSSPrefix+"box-inner",availableSpaceOffset:0,reserveOffset:true,manageMargins:true,createsInnerCt:true,childEls:["innerCt","targetEl"],renderTpl:["{%var oc,l=values.$comp.layout,oh=l.overflowHandler;","if (oh.getPrefixConfig!==Ext.emptyFn) {","if(oc=oh.getPrefixConfig())dh.generateMarkup(oc, out)","}%}",'<div id="{ownerId}-innerCt" class="{[l.innerCls]} {[oh.getOverflowCls()]}" role="presentation">','<div id="{ownerId}-targetEl" class="{targetElCls}">',"{%this.renderBody(out, values)%}","</div>","</div>","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,j=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=(h=="stretch"),a=(h=="stretchmax"),m=l.constrainAlign;if(!q&&(e||g||c||(m&&!a))){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){j=j.flex}}return j[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,j=n.target,q=m.target,r=0,c,o,h,d,p,g;h=j[k]||l;d=q[k]||l;c=j[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){r=h-d}if(r===0&&p){r=o-c}}return r},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(k){var u=this,l=k.boxNames,a=l.widthModel,d=l.heightModel,c=k.boxOptions.align.nostretch,o=0,b=k.childItems,q=b.length,s=[],m=0,j=l.minWidth,g=u._percentageRe,r=0,t=0,e,n,p,h;while(q--){n=b[q];e=n.target;if(n[a].calculated){n.flex=p=e.flex;if(p){o+=p;s.push(n);m+=e[j]||0}else{h=g.exec(e[l.width]);n.percentageParallel=parseFloat(h[1])/100;++r}}if(c&&n[d].calculated){h=g.exec(e[l.height]);n.percentagePerpendicular=parseFloat(h[1])/100;++t}}k.flexedItems=s;k.flexedMinSize=m;k.totalFlex=o;k.percentageWidths=r;k.percentageHeights=t;Ext.Array.sort(s,u.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(k,n,b){var F=this,z=n.width,a=k.childItems,s=n.beforeX,d=n.afterX,q=n.setWidth,A=a.length,x=k.flexedItems,r=x.length,v=k.boxOptions.pack,m=F.padding,h=b.targetSize[z],B=0,e=m[s],E=e+m[d]+F.scrollOffset+(F.reserveOffset?F.availableSpaceOffset:0),w=Ext.getScrollbarSize()[n.width],u,l,g,y,o,t,D,p,C,c,j;if(w&&F.scrollPerpendicular&&k.parallelSizeModel.shrinkWrap&&!k.boxOptions.align.stretch&&!k.perpendicularSizeModel.shrinkWrap){if(!k.state.perpendicularDone){return false}C=true}for(u=0;u<A;++u){o=a[u];l=o.marginInfo||o.getMarginInfo();B+=l[z];if(!o[n.widthModel].calculated){c=o.getProp(z);E+=c;if(isNaN(E)){return false}}}E+=B;if(k.percentageWidths){j=h-B;if(isNaN(j)){return false}for(u=0;u<A;++u){o=a[u];if(o.percentageParallel){c=Math.ceil(j*o.percentageParallel);c=o.setWidth(c);E+=c}}}if(k.parallelSizeModel.shrinkWrap){b.availableSpace=0;b.tooNarrow=false}else{b.availableSpace=h-E;b.tooNarrow=b.availableSpace<k.flexedMinSize;if(b.tooNarrow&&Ext.getScrollbarSize()[n.height]&&F.scrollParallel&&k.state.perpendicularDone){k.state.perpendicularDone=false;for(u=0;u<A;++u){a[u].invalidate()}}}p=E;g=b.availableSpace;y=k.totalFlex;for(u=0;u<r;u++){o=x[u];t=o.flex;D=F.roundFlex((t/y)*g);D=o[q](D);p+=D;g=Math.max(0,g-D);y-=t}if(v.center){e+=g/2;if(e<0){e=0}}else{if(v.end){e+=g}}for(u=0;u<A;++u){o=a[u];l=o.marginInfo;e+=l[s];o.setProp(n.x,e);e+=l[d]+o.props[z]}p+=k.targetContext.getPaddingInfo()[z];k.state.contentWidth=p;if(C&&(k.peek(n.contentHeight)>b.targetSize[n.height])){p+=w;k[n.hasOverflowY]=true;k.target.componentLayout[n.setWidthInDom]=true;k[n.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}k[n.setContentWidth](p);return true},calculatePerpendicular:function(u,K,z){var t=this,d=u.perpendicularSizeModel.shrinkWrap,b=z.targetSize,j=u.childItems,y=j.length,m=Math.max,l=K.height,n=K.setHeight,h=K.beforeY,s=K.y,H=t.padding,k=H[h],o=b[l]-k-H[K.afterY],E=u.boxOptions.align,p=E.stretch,q=E.stretchmax,N=E.center,M=E.bottom,G=t.constrainAlign,F=0,B=0,D=t.onBeforeConstrainInvalidateChild,A=t.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,x,I,C,v,w,c,r,e,L,J,g;if(p||((N||M)&&!d)){if(isNaN(o)){return false}}if(t.scrollParallel&&z.tooNarrow){if(d){J=true}else{o-=a;z.targetSize[l]-=a}}if(p){c=o}else{for(I=0;I<y;I++){r=j[I];v=(r.marginInfo||r.getMarginInfo())[l];if(!(g=r.percentagePerpendicular)){C=r.getProp(l)}else{++B;if(d){continue}else{C=g*o-v;C=r[K.setHeight](C)}}if(!d&&G&&r[K.heightModel].shrinkWrap&&C>o){r.invalidate({before:D,after:A,layout:t,childHeight:o,names:K});u.state.parallelDone=false}if(isNaN(F=m(F,C+v,r.target[K.minHeight]||0))){return false}}if(J){F+=a;u[K.hasOverflowX]=true;u.target.componentLayout[K.setHeightInDom]=true;u[K.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=u.stretchMaxPartner;if(e){u.setProp("maxChildHeight",F);L=e.childItems;if(L&&L.length){F=m(F,e.getProp("maxChildHeight"));if(isNaN(F)){return false}}}u[K.setContentHeight](F+t.padding[l]+u.targetContext.getPaddingInfo()[l]);if(J){F-=a}z.maxSize=F;if(q){c=F}else{if(N||M||B){if(G){c=d?F:o}else{c=d?F:m(o,F)}c-=u.innerCtContext.getBorderInfo()[l]}}}for(I=0;I<y;I++){r=j[I];v=r.marginInfo||r.getMarginInfo();x=k+v[h];if(p){r[n](c-v[l])}else{g=r.percentagePerpendicular;if(d&&g){v=r.marginInfo||r.getMarginInfo();C=g*c-v[l];C=r.setHeight(C)}if(N){w=c-r.props[l];if(w>0){x=k+Math[t.alignRoundingMethod](w/2)}}else{if(M){x=m(0,c-x-r.props[l])}}}r.setProp(s,x)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,k,m){var l=this,h=k.height,n=k.width,g=c.childItems,a=g.length,p=m.maxSize,o=l.onBeforeStretchMaxInvalidateChild,e=l.onAfterStretchMaxInvalidateChild,q,j,d,b;for(d=0;d<a;++d){q=g[d];j=q.props;b=p-q.getMarginInfo()[h];if(b!=j[h]||q[k.heightModel].constrained){q.invalidate({before:o,after:e,layout:l,childWidth:j[n],childHeight:b,childX:j.x,childY:j.y,names:k})}}},onBeforeStretchMaxInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMax){b[c]=Ext.layout.SizeModel.calculated}},onAfterStretchMaxInvalidateChild:function(d,c){var e=c.names,a=c.childHeight,b=c.childWidth;d.setProp("x",c.childX);d.setProp("y",c.childY);if(d[e.heightModel].calculated){d[e.setHeight](a)}if(d[e.widthModel].calculated){d[e.setWidth](b)}},completeLayout:function(b){var k=this,j=b.boxNames,h=b.invalidateScrollX,g=b.invalidateScrollY,d,a,e,c,l;k.overflowHandler.completeLayout(b);if(h||g){a=k.getTarget();d=a.dom;l=d.style;if(h){e=a.getStyle("overflowX");if(e=="auto"){e=l.overflowX;l.overflowX="scroll"}else{h=false}}if(g){c=a.getStyle("overflowY");if(c=="auto"){c=l.overflowY;l.overflowY="scroll"}else{g=false}}if(h||g){d.scrollWidth;if(h){l.overflowX=e}if(g){l.overflowY=c}}}if(k.scrollParallel){k.owner.getTargetEl().dom[j.scrollLeft]=k.scrollPos}},finishedLayout:function(a){this.overflowHandler.finishedLayout(a);this.callParent(arguments);this.targetEl.setWidth(a.innerCtContext.props.width)},publishInnerCtSize:function(a,d){var j=this,h=a.boxNames,g=h.height,l=h.width,e=a.boxOptions.align,p=j.owner.dock,m=j.padding,k=a.state.boxPlan,c=k.targetSize,o=c[g],q=a.innerCtContext,b=(a.parallelSizeModel.shrinkWrap||(k.tooNarrow&&j.scrollParallel)?a.state.contentWidth-a.targetContext.getPaddingInfo()[l]:c[l])-(d||0),n;if(e.stretch){n=o}else{n=k.maxSize+m[h.beforeY]+m[h.afterY]+q.getBorderInfo()[g];if(!a.perpendicularSizeModel.shrinkWrap&&(e.center||e.bottom)){n=Math.max(o,n)}}q[h.setWidth](b);q[h.setHeight](n);if(isNaN(b+n)){j.done=false}if(k.calculatedWidth&&(p=="left"||p=="right")){a.setWidth(k.calculatedWidth,true,true)}},onRemove:function(a){var b=this;b.callParent(arguments);if(b.overflowHandler){b.overflowHandler.onRemove(a)}if(a.layoutMarginCap==b.id){delete a.layoutMarginCap}},initOverflowHandler:function(){var d=this,c=d.overflowHandler,b,a;if(typeof c=="string"){c={type:c}}b="None";if(c&&c.type!==undefined){b=c.type}a=Ext.layout.container.boxOverflow[b];if(a[d.type]){a=a[d.type]}d.overflowHandler=Ext.create("Ext.layout.container.boxOverflow."+b,d,c)},getRenderTarget:function(){return this.targetEl},getElementTarget:function(){return this.innerCt},destroy:function(){Ext.destroy(this.innerCt,this.overflowHandler);this.callParent(arguments)},getRenderData:function(){var a=this.callParent();a.targetElCls=this.targetElCls;return a}},1,0,0,0,["layout.box"],0,[Ext.layout.container,"Box",Ext.layout,"BoxLayout"],0));(Ext.cmd.derive("Ext.layout.container.HBox",Ext.layout.container.Box,{alternateClassName:"Ext.layout.HBoxLayout",align:"top",constrainAlign:false,type:"hbox",direction:"horizontal",horizontal:true,names:{beforeX:"left",beforeScrollX:"left",beforeScrollerSuffix:"-before-scroller",afterScrollerSuffix:"-after-scroller",leftCap:"Left",afterX:"right",width:"width",contentWidth:"contentWidth",minWidth:"minWidth",maxWidth:"maxWidth",widthCap:"Width",widthModel:"widthModel",widthIndex:0,x:"x",scrollLeft:"scrollLeft",overflowX:"overflowX",hasOverflowX:"hasOverflowX",invalidateScrollX:"invalidateScrollX",parallelMargins:"lr",center:"middle",beforeY:"top",afterY:"bottom",height:"height",contentHeight:"contentHeight",minHeight:"minHeight",maxHeight:"maxHeight",heightCap:"Height",heightModel:"heightModel",heightIndex:1,y:"y",overflowY:"overflowY",hasOverflowY:"hasOverflowY",invalidateScrollY:"invalidateScrollY",perpendicularMargins:"tb",getWidth:"getWidth",getHeight:"getHeight",setWidth:"setWidth",setHeight:"setHeight",gotWidth:"gotWidth",gotHeight:"gotHeight",setContentWidth:"setContentWidth",setContentHeight:"setContentHeight",setWidthInDom:"setWidthInDom",setHeightInDom:"setHeightInDom",getScrollLeft:"getScrollLeft",setScrollLeft:"setScrollLeft",scrollTo:"scrollTo"},sizePolicy:{flex:{"":{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:1}}},0,0,0,0,["layout.hbox"],0,[Ext.layout.container,"HBox",Ext.layout,"HBoxLayout"],0));(Ext.cmd.derive("Ext.layout.container.VBox",Ext.layout.container.Box,{alternateClassName:"Ext.layout.VBoxLayout",align:"left",constrainAlign:false,type:"vbox",direction:"vertical",horizontal:false,names:{beforeX:"top",beforeScrollX:"top",beforeScrollerSuffix:"-before-scroller",afterScrollerSuffix:"-after-scroller",leftCap:"Top",afterX:"bottom",width:"height",contentWidth:"contentHeight",minWidth:"minHeight",maxWidth:"maxHeight",widthCap:"Height",widthModel:"heightModel",widthIndex:1,x:"y",scrollLeft:"scrollTop",overflowX:"overflowY",hasOverflowX:"hasOverflowY",invalidateScrollX:"invalidateScrollY",parallelMargins:"tb",center:"center",beforeY:"left",afterY:"right",height:"width",contentHeight:"contentWidth",minHeight:"minWidth",maxHeight:"maxWidth",heightCap:"Width",heightModel:"widthModel",heightIndex:0,y:"x",overflowY:"overflowX",hasOverflowY:"hasOverflowX",invalidateScrollY:"invalidateScrollX",perpendicularMargins:"lr",getWidth:"getHeight",getHeight:"getWidth",setWidth:"setHeight",setHeight:"setWidth",gotWidth:"gotHeight",gotHeight:"gotWidth",setContentWidth:"setContentHeight",setContentHeight:"setContentWidth",setWidthInDom:"setHeightInDom",setHeightInDom:"setWidthInDom",getScrollLeft:"getScrollTop",setScrollLeft:"setScrollTop",scrollTo:"scrollTo"},sizePolicy:{flex:{"":{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:0,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:1,setsHeight:0}}},0,0,0,0,["layout.vbox"],0,[Ext.layout.container,"VBox",Ext.layout,"VBoxLayout"],0));(Ext.cmd.derive("Ext.toolbar.Toolbar",Ext.container.Container,{alternateClassName:"Ext.Toolbar",isToolbar:true,baseCls:Ext.baseCSSPrefix+"toolbar",ariaRole:"toolbar",defaultType:"button",vertical:false,enableOverflow:false,menuTriggerCls:Ext.baseCSSPrefix+"toolbar-more-icon",trackMenus:true,itemCls:Ext.baseCSSPrefix+"toolbar-item",statics:{shortcuts:{"-":"tbseparator"," ":"tbspacer"},shortcutsHV:{0:{"->":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar";b.addCls(b.baseCls+"-toolbar")}}if(b instanceof Ext.toolbar.Separator){b.setUI((c.vertical)?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}},0,["toolbar"],["toolbar","component","container","box"],{toolbar:true,component:true,container:true,box:true},["widget.toolbar"],0,[Ext.toolbar,"Toolbar",Ext,"Toolbar"],0));(Ext.cmd.derive("Ext.layout.component.Dock",Ext.layout.component.Component,{alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",horzAxisProps:{name:"horz",oppositeName:"vert",dockBegin:"left",dockEnd:"right",horizontal:true,marginBegin:"margin-left",maxSize:"maxWidth",minSize:"minWidth",pos:"x",setSize:"setWidth",shrinkWrapDock:"shrinkWrapDockWidth",size:"width",sizeModel:"widthModel"},vertAxisProps:{name:"vert",oppositeName:"horz",dockBegin:"top",dockEnd:"bottom",horizontal:false,marginBegin:"margin-top",maxSize:"maxHeight",minSize:"minHeight",pos:"y",setSize:"setHeight",shrinkWrapDock:"shrinkWrapDockHeight",size:"height",sizeModel:"heightModel"},initializedBorders:-1,horizontalCollapsePolicy:{width:true,x:true},verticalCollapsePolicy:{height:true,y:true},finishRender:function(){var b=this,c,a;b.callParent();c=b.getRenderTarget();a=b.getDockedItems();b.finishRenderItems(c,a)},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},noBorderClasses:[Ext.baseCSSPrefix+"docked-noborder-top",Ext.baseCSSPrefix+"docked-noborder-right",Ext.baseCSSPrefix+"docked-noborder-bottom",Ext.baseCSSPrefix+"docked-noborder-left"],noBorderClassesSides:{top:Ext.baseCSSPrefix+"docked-noborder-top",right:Ext.baseCSSPrefix+"docked-noborder-right",bottom:Ext.baseCSSPrefix+"docked-noborder-bottom",left:Ext.baseCSSPrefix+"docked-noborder-left"},borderWidthProps:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},handleItemBorders:function(){var m=this,a=m.owner,l,q,h=m.lastDockedItems,g=m.borders,b=a.dockedItems.generation,c=m.noBorderClassesSides,n=m.borderWidthProps,e,k,p,o,j,d=m.collapsed;if(m.initializedBorders==b||(a.border&&!a.manageBodyBorders)){return}m.initializedBorders=b;m.collapsed=false;m.lastDockedItems=q=m.getLayoutItems();m.collapsed=d;l={top:[],right:[],bottom:[],left:[]};for(e=0,k=q.length;e<k;e++){p=q[e];o=p.dock;if(p.ignoreBorderManagement){continue}if(!l[o].satisfied){l[o].push(p);l[o].satisfied=true}if(!l.top.satisfied&&o!=="bottom"){l.top.push(p)}if(!l.right.satisfied&&o!=="left"){l.right.push(p)}if(!l.bottom.satisfied&&o!=="top"){l.bottom.push(p)}if(!l.left.satisfied&&o!=="right"){l.left.push(p)}}if(h){for(e=0,k=h.length;e<k;e++){p=h[e];if(!p.isDestroyed&&!p.ignoreBorderManagement&&!a.manageBodyBorders){p.removeCls(m.noBorderClasses)}}}if(g){for(j in g){if(a.manageBodyBorders&&g[j].satisfied){a.setBodyStyle(n[j],"")}}}for(j in l){k=l[j].length;if(!a.manageBodyBorders){for(e=0;e<k;e++){l[j][e].addCls(c[j])}if((!l[j].satisfied&&!a.bodyBorder)||a.bodyBorder===false){a.addBodyCls(c[j])}}else{if(l[j].satisfied){a.setBodyStyle(n[j],"1px")}}}m.borders=l},beforeLayoutCycle:function(g){var c=this,b=c.owner,h=c.sizeModels.shrinkWrap,e=b.shrinkWrapDock,d,a;if(b.collapsed){if(b.collapsedVertical()){a=true;g.measureDimensions=1}else{d=true;g.measureDimensions=2}}g.collapsedVert=a;g.collapsedHorz=d;if(a){g.heightModel=h}else{if(d){g.widthModel=h}}e=e===true?3:(e||0);g.shrinkWrapDockHeight=(e&1)&&g.heightModel.shrinkWrap;g.shrinkWrapDockWidth=(e&2)&&g.widthModel.shrinkWrap},beginLayout:function(d){var k=this,c=k.owner,o=k.getLayoutItems(),b=d.context,g=o.length,l,j,n,a,e,h,m;k.callParent(arguments);h=c.getCollapsed();if(h!==k.lastCollapsedState&&Ext.isDefined(k.lastCollapsedState)){if(k.owner.collapsed){d.isCollapsingOrExpanding=1;c.addClsWithUI(c.collapsedCls)}else{d.isCollapsingOrExpanding=2;c.removeClsWithUI(c.collapsedCls);d.lastCollapsedState=k.lastCollapsedState}}k.lastCollapsedState=h;d.dockedItems=l=[];for(j=0;j<g;j++){n=o[j];if(n.rendered){m=n.dock;a=b.getCmp(n);a.dockedAt={x:0,y:0};a.offsets=e=Ext.Element.parseBox(n.offsets||0);a.horizontal=m=="top"||m=="bottom";e.width=e.left+e.right;e.height=e.top+e.bottom;l.push(a)}}d.bodyContext=d.getEl("body")},beginLayoutCycle:function(b){var e=this,l=b.dockedItems,d=l.length,a=e.owner,g=a.frameBody,k=e.lastHeightModel,c,j,h;e.callParent(arguments);if(e.owner.manageHeight){if(e.lastBodyDisplay){a.body.dom.style.display=e.lastBodyDisplay=""}}else{if(e.lastBodyDisplay!=="inline-block"){a.body.dom.style.display=e.lastBodyDisplay="inline-block"}if(k&&k.shrinkWrap&&!b.heightModel.shrinkWrap){a.body.dom.style.marginBottom=""}}if(b.widthModel.auto){if(b.widthModel.shrinkWrap){a.el.setWidth(null)}a.body.setWidth(null);if(g){g.setWidth(null)}}if(b.heightModel.auto){a.body.setHeight(null);if(g){g.setHeight(null)}}if(b.collapsedVert){b.setContentHeight(0)}else{if(b.collapsedHorz){b.setContentWidth(0)}}for(c=0;c<d;c++){j=l[c].target;h=j.dock;if(h=="right"){j.setLocalX(0)}else{if(h!="left"){continue}}}},calculate:function(d){var m=this,c=m.measureAutoDimensions(d,d.measureDimensions),b=d.state,l=b.horzDone,e=b.vertDone,g=d.bodyContext,k,a,j,h,n;d.borderInfo||d.getBorderInfo();d.paddingInfo||d.getPaddingInfo();d.frameInfo||d.getFrameInfo();g.borderInfo||g.getBorderInfo();g.paddingInfo||g.getPaddingInfo();if(!d.frameBorder){if(!(k=d.framing)){d.frameBorder=d.borderInfo;d.framePadding=d.paddingInfo}else{d.frameBorder=k.border;d.framePadding=k.padding}}a=!l&&m.createAxis(d,c.contentWidth,d.widthModel,m.horzAxisProps,d.collapsedHorz);j=!e&&m.createAxis(d,c.contentHeight,d.heightModel,m.vertAxisProps,d.collapsedVert);for(h=0,n=d.dockedItems.length;n--;++h){if(a){m.dockChild(d,a,n,h)}if(j){m.dockChild(d,j,n,h)}}if(a&&m.finishAxis(d,a)){b.horzDone=l=a}if(j&&m.finishAxis(d,j)){b.vertDone=e=j}if(l&&e&&m.finishConstraints(d,l,e)){m.finishPositions(d,l,e)}else{m.done=false}},createAxis:function(q,k,e,n,d){var v=this,u=0,b=v.owner,g=b[n.maxSize],c=b[n.minSize]||0,o=n.dockBegin,j=n.dockEnd,s=n.pos,m=n.size,l=g!=null,p=e.shrinkWrap,a,t,r,h;if(p){if(d){h=0}else{a=q.bodyContext;h=k+a.borderInfo[m]}}else{t=q.frameBorder;r=q.framePadding;u=t[o]+r[o];h=q.getProp(m)-(t[j]+r[j])}return{shrinkWrap:e.shrinkWrap,sizeModel:e,initialBegin:u,begin:u,end:h,collapsed:d,horizontal:n.horizontal,ignoreFrameBegin:null,ignoreFrameEnd:null,initialSize:h-u,maxChildSize:0,hasMinMaxConstraints:(c||l)&&e.shrinkWrap,minSize:c,maxSize:l?g:1000000000,bodyPosProp:v.owner.manageHeight?s:n.marginBegin,dockBegin:o,dockEnd:j,posProp:s,sizeProp:m,setSize:n.setSize,shrinkWrapDock:q[n.shrinkWrapDock],sizeModelName:n.sizeModel,dockedPixelsEnd:0}},dockChild:function(b,c,m,e){var g=this,a=b.dockedItems[c.shrinkWrap?m:e],j=a.target,k=j.dock,d=c.sizeProp,h,l;if(j.ignoreParentFrame&&b.isCollapsingOrExpanding){a.clearMarginCache()}a.marginInfo||a.getMarginInfo();if(k==c.dockBegin){if(c.shrinkWrap){h=g.dockOutwardBegin(b,a,j,c)}else{h=g.dockInwardBegin(b,a,j,c)}}else{if(k==c.dockEnd){if(c.shrinkWrap){h=g.dockOutwardEnd(b,a,j,c)}else{h=g.dockInwardEnd(b,a,j,c)}}else{if(c.shrinkWrapDock){l=a.getProp(d)+a.marginInfo[d];c.maxChildSize=Math.max(c.maxChildSize,l);h=0}else{h=g.dockStretch(b,a,j,c)}}}a.dockedAt[c.posProp]=h},dockInwardBegin:function(b,a,k,d){var g=d.begin,e=d.sizeProp,c=k.ignoreParentFrame,h,l,j;if(c){d.ignoreFrameBegin=a;j=k.dock;h=b.frameBorder[j];g-=h+b.framePadding[j]}if(!k.overlay){l=a.getProp(e)+a.marginInfo[e];d.begin+=l;if(c){d.begin-=h}}return g},dockInwardEnd:function(e,d,c,b){var j=b.sizeProp,a=d.getProp(j)+d.marginInfo[j],h=b.end-a,g;if(!c.overlay){b.end=h}if(c.ignoreParentFrame){b.ignoreFrameEnd=d;g=e.frameBorder[c.dock];h+=g+e.framePadding[c.dock];b.end+=g}return h},dockOutwardBegin:function(e,d,c,b){var h=b.begin,g=b.sizeProp,a;if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=d}else{if(c.ignoreParentFrame){b.ignoreFrameBegin=d}}if(!c.overlay){a=d.getProp(g)+d.marginInfo[g];h-=a;b.begin=h}return h},dockOutwardEnd:function(e,d,c,b){var h=b.end,g=b.sizeProp,a;a=d.getProp(g)+d.marginInfo[g];if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=d}else{if(c.ignoreParentFrame){b.ignoreFrameEnd=d}}if(!c.overlay){b.end=h+a;b.dockedPixelsEnd+=a}return h},dockStretch:function(c,b,n,d){var o=n.dock,k=d.sizeProp,a=o=="top"||o=="bottom",j=c.frameBorder,e=b.offsets,m=c.framePadding,h=a?"right":"bottom",q=a?"left":"top",l=d.begin+e[q],g,p;if(n.stretch!==false){p=d.end-l-e[h];if(n.ignoreParentFrame){l-=m[q]+j[q];p+=m[k]+j[k]}g=b.marginInfo;p-=g[k];b[d.setSize](p)}return l},finishAxis:function(n,e){if(isNaN(e.maxChildSize)){return false}var d=e.begin,q=e.end-d,h=e.collapsed,x=e.setSize,l=e.dockBegin,v=e.dockEnd,p=n.framePadding,s=n.frameBorder,g=s[l],t=n.framing,o=t&&t[l],b=h?0:p[l],k=e.sizeProp,u=e.ignoreFrameBegin,r=e.ignoreFrameEnd,a=n.bodyContext,m=Math.max(g+b-o,0),c,y,w,j;if(e.shrinkWrap){y=e.initialSize;if(t){w=-d+g+b;c=w-o-m}else{c=-d;w=c+b}if(!h){q+=p[k]}if(u){w-=g;c-=g;u.dockedAt[e.posProp]-=b}else{q+=g}if(h){}else{if(r){r.dockedAt[e.posProp]+=p[v]}else{q+=s[v]}}e.size=q;if(!e.horizontal&&!this.owner.manageHeight){j=false}}else{if(t){w=0;c=d-o-m}else{w=-g;c=d-b-g}y=q}e.delta=w;a[x](y,j);a.setProp(e.bodyPosProp,c);return !isNaN(q)},beforeInvalidateShrinkWrapDock:function(c,b){var a=b.axis.sizeModelName;if(!c[a].constrainedMin){c[a]=Ext.layout.SizeModel.calculated}},afterInvalidateShrinkWrapDock:function(d,a){var b=a.axis,c=a.layout,e;if(d[b.sizeModelName].calculated){e=c.dockStretch(a.ownerContext,d,d.target,b);d.setProp(b.posProp,b.delta+e)}},finishConstraints:function(l,c,q){var t=this,s=t.sizeModels,p=c.shrinkWrap,r=q.shrinkWrap,a=t.owner,j,n,o,g,h,m,b,d,e,k;if(p){m=c.size;b=c.collapsed?0:c.minSize;d=c.maxSize;e=c.maxChildSize;k=Math.max(m,e);if(k>d){h=s.constrainedMax;o=d}else{if(k<b){h=s.constrainedMin;o=b}else{if(m<e){h=s.constrainedDock;a.dockConstrainedWidth=o=e}else{o=m}}}}if(r){m=q.size;b=q.collapsed?0:q.minSize;d=q.maxSize;e=q.maxChildSize;k=Math.max(m,e+m-q.initialSize);if(k>d){g=s.constrainedMax;n=d}else{if(k<b){g=s.constrainedMin;n=b}else{if(m<e){g=s.constrainedDock;a.dockConstrainedHeight=n=e}else{if(!l.collapsedVert&&!a.manageHeight){j=false;l.bodyContext.setProp("margin-bottom",q.dockedPixelsEnd)}n=m}}}}if(h||g){if(h&&g&&h.constrainedMax&&g.constrainedByMin){l.invalidate({widthModel:h});return false}if(!l.widthModel.calculatedFromShrinkWrap&&!l.heightModel.calculatedFromShrinkWrap){l.invalidate({widthModel:h,heightModel:g});return false}}else{t.invalidateAxes(l,c,q)}if(p){l.setWidth(o);if(h){l.widthModel=h}}if(r){l.setHeight(n,j);if(g){l.heightModel=g}}return true},invalidateAxes:function(g,a,l){var p=this.beforeInvalidateShrinkWrapDock,b=this.afterInvalidateShrinkWrapDock,e=a.end-a.begin,s=l.initialSize,c=a.shrinkWrapDock&&a.maxChildSize<e,m=l.shrinkWrapDock&&l.maxChildSize<s,q,n,k,d,r,o,h,j;if(c||m){if(m){l.begin=l.initialBegin;l.end=l.begin+l.initialSize}q=g.dockedItems;for(k=0,n=q.length;k<n;++k){d=q[k];o=d.horizontal;h=null;if(c&&o){j=a.sizeProp;r=e;h=a}else{if(m&&!o){j=l.sizeProp;r=s;h=l}}if(h){r-=d.getMarginInfo()[j];if(r!==d.props[j]){d.invalidate({before:p,after:b,axis:h,ownerContext:g,layout:this})}}}}},finishPositions:function(d,a,h){var k=d.dockedItems,c=k.length,g=a.delta,e=h.delta,j,b;for(j=0;j<c;++j){b=k[j];b.setProp("x",g+b.dockedAt.x);b.setProp("y",e+b.dockedAt.y)}},finishedLayout:function(b){var a=this,c=b.target;a.callParent(arguments);if(!b.animatePolicy){if(b.isCollapsingOrExpanding===1){c.afterCollapse(false)}else{if(b.isCollapsingOrExpanding===2){c.afterExpand(false)}}}},getAnimatePolicy:function(c){var b=this,a,d;if(c.isCollapsingOrExpanding==1){a=b.lastCollapsedState}else{if(c.isCollapsingOrExpanding==2){a=c.lastCollapsedState}}if(a=="left"||a=="right"){d=b.horizontalCollapsePolicy}else{if(a=="top"||a=="bottom"){d=b.verticalCollapsePolicy}}return d},getDockedItems:function(c,n){var j=this,e=(c==="visual"),k=e?Ext.ComponentQuery.query("[rendered]",j.owner.dockedItems.items):j.owner.dockedItems.items,h=k&&k.length&&c!==false,b,m,l,g,d,a;if(n==null){l=h&&!e?k.slice():k}else{l=[];for(g=0,a=k.length;g<a;++g){m=k[g].dock;d=(m=="top"||m=="left");if(n?d:!d){l.push(k[g])}}h=h&&l.length}if(h){b=(c=c||"render")=="render";Ext.Array.sort(l,function(p,o){var q,r;if(b&&((q=j.owner.dockOrder[p.dock])!==(r=j.owner.dockOrder[o.dock]))){if(!(q+r)){return q-r}}q=j.getItemWeight(p,c);r=j.getItemWeight(o,c);if((q!==undefined)&&(r!==undefined)){return q-r}return 0})}return l||[]},getItemWeight:function(b,a){var c=b.weight||this.owner.defaultDockWeights[b.dock];return c[a]||c},getLayoutItems:function(){var e=this,b,g,d,c,a;if(e.owner.collapsed){a=e.owner.getCollapsedDockedItems()}else{b=e.getDockedItems("visual");g=b.length;a=[];for(c=0;c<g;c++){d=b[c];if(!d.hidden){a.push(d)}}}return a},measureContentWidth:function(a){var b=a.bodyContext;return b.el.getWidth()-b.getBorderInfo().width},measureContentHeight:function(a){var b=a.bodyContext;return b.el.getHeight()-b.getBorderInfo().height},redoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.show()}a.addClsWithUI(a.collapsedCls);c.redo(true)}else{if(c.isCollapsingOrExpanding==2){a.removeClsWithUI(a.collapsedCls);c.bodyContext.redo()}}},renderChildren:function(){var b=this,a=b.getDockedItems(),c=b.getRenderTarget();b.handleItemBorders();b.renderItems(a,c)},renderItems:function(k,h){var l=this,c=k.length,a=0,b=0,p=0,m=l.getRenderTarget().dom.childNodes,n=m.length,g,d,e,o;for(g=0,d=0;g<n;g++){e=m[g];if(Ext.fly(e).hasCls(Ext.baseCSSPrefix+"resizable-handle")){break}for(d=0;d<c;d++){o=k[d];if(o.rendered&&o.el.dom===e){break}}if(d===c){p++}}for(;a<c;a++,b++){o=k[a];if(a===b&&(o.dock==="right"||o.dock==="bottom")){b+=p}if(o&&!o.rendered){l.renderItem(o,h,b)}else{if(!l.isValidParent(o,h,b)){l.moveItem(o,h,b)}}}},undoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.hide()}a.removeClsWithUI(a.collapsedCls);c.undo(true)}else{if(c.isCollapsingOrExpanding==2){a.addClsWithUI(a.collapsedCls);c.bodyContext.undo()}}},sizePolicy:{nostretch:{setsWidth:0,setsHeight:0},horz:{shrinkWrap:{setsWidth:1,setsHeight:0,readsWidth:1},stretch:{setsWidth:1,setsHeight:0}},vert:{shrinkWrap:{setsWidth:0,setsHeight:1,readsHeight:1},stretch:{setsWidth:0,setsHeight:1}},stretchV:{setsWidth:0,setsHeight:1},autoStretchH:{readsWidth:1,setsWidth:1,setsHeight:0},autoStretchV:{readsHeight:1,setsWidth:0,setsHeight:1}},getItemSizePolicy:function(d,g){var c=this,h=c.sizePolicy,e=c.owner.shrinkWrapDock,b,a;if(d.stretch===false){return h.nostretch}b=d.dock;a=(b=="left"||b=="right");e=e===true?3:(e||0);if(a){h=h.vert;e=e&1}else{h=h.horz;e=e&2}if(e){if(!g){g=c.owner.getSizeModel()}if(g[a?"height":"width"].shrinkWrap){return h.shrinkWrap}}return h.stretch},configureItem:function(a,b){this.callParent(arguments);a.addCls(Ext.baseCSSPrefix+"docked");a.addClsWithUI(this.getDockCls(a.dock))},getDockCls:function(a){return"docked-"+a},afterRemove:function(a){this.callParent(arguments);if(this.itemCls){a.el.removeCls(this.itemCls+"-"+a.dock)}var b=a.el.dom;if(!a.destroying&&b){b.parentNode.removeChild(b)}this.childrenChanged=true},borderCollapseMap:{},getBorderCollapseTable:function(){var d=this,g=d.borderCollapseMap,a=d.owner,b=a.baseCls,e=a.ui,c;g=g[b]||(g[b]={});c=g[e];if(!c){b+="-"+e+"-outer-border-";g[e]=c=[0,b+"l",b+"b",b+"bl",b+"r",b+"rl",b+"rb",b+"rbl",b+"t",b+"tl",b+"tb",b+"tbl",b+"tr",b+"trl",b+"trb",b+"trbl"]}return c}},0,0,0,0,["layout.dock"],0,[Ext.layout.component,"Dock",Ext.layout.component,"AbstractDock"],0));(Ext.cmd.derive("Ext.panel.AbstractPanel",Ext.container.Container,{baseCls:Ext.baseCSSPrefix+"panel",isPanel:true,contentPaddingProperty:"bodyPadding",shrinkWrapDock:false,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",(Ext.isIE7m||Ext.isIEQuirks)?'<div style="position:relative"></div>':"",'<div id="{id}-body" class="{baseCls}-body<tpl if="bodyCls"> {bodyCls}</tpl>',' {baseCls}-body-{ui}<tpl if="uiCls">','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>','</tpl>{childElCls}"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox((b.bodyPadding===true)?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}},0,0,["component","container","box"],{component:true,container:true,box:true},0,[["docking",Ext.container.DockingContainer]],[Ext.panel,"AbstractPanel"],0));(Ext.cmd.derive("Ext.panel.Header",Ext.container.Container,{isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['<div id="{id}-body" class="{headerCls}-body {baseCls}-body {bodyCls} {bodyTargetCls}','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>"],headingTpl:['<span id="{id}-textEl" class="{headerCls}-text {cls}-text {cls}-text-{ui}" unselectable="on">{title}</span>'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:(c?c.length:0),b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||"&#160;";g.tools=g.tools||[];c=g.items=(c?Ext.Array.slice(c):[]);g.orientation=g.orientation||"horizontal";g.dock=(g.dock)?g.dock:(g.orientation=="horizontal")?"top":"left";if(d?(!d.border&&!d.frame):!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?("text-align:"+g.titleAlign):"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=(g.orientation=="vertical")?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.length<a){a=c.length}g.titlePosition=a;g.insert(a,g.titleCmp);g.on({dblclick:g.onDblClick,click:g.onClick,element:"el",scope:g})},initIconCmp:function(){var c=this,b=[c.headerCls+"-icon",c.baseCls+"-icon",c.iconCls],a;if(c.glyph){b.push(c.baseCls+"-glyph")}a={focusable:false,src:Ext.BLANK_IMAGE_URL,cls:b,baseCls:c.baseCls+"-icon",id:c.id+"-iconEl",iconCls:c.iconCls,glyph:c.glyph};if(!Ext.isEmpty(c.icon)){delete a.iconCls;a.src=c.icon}c.iconCmp=new Ext.Img(a)},beforeRender:function(){this.protoEl.unselectable();this.callParent()},afterLayout:function(){var b=this,e,a,c,d;if(b.orientation==="vertical"){b.adjustTitlePosition();a=b.frameTR;if(a){e=b.frameBR;c=b.frameTL;d=(b.getWidth()-a.getPadding("r")-((c)?c.getPadding("l"):b.el.getBorderWidth("l")))+"px";e.setStyle("background-position-x",d);a.setStyle("background-position-x",d)}if(Ext.isIE7&&Ext.isStrict&&b.frame){b.el.repaint()}}},beforeLayout:function(){this.callParent();this.syncBeforeAfterTitleClasses()},adjustTitlePosition:function(){var b=this.titleCmp,a;if(!Ext.isIE9m&&b){a=b.el;a.setStyle("left",a.getWidth()+"px")}},onTitleRender:function(){if(this.orientation==="vertical"){this.titleCmp.el.setVertical(90)}},addUIClsToElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){if(!Ext.Array.contains(g,d[c])){g.push(d[c])}}e.bodyCls=g.join(" ")}else{e.bodyCls=d.join(" ")}return a},removeUIClsFromElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){Ext.Array.remove(g,d[c])}e.bodyCls=g.join(" ")}return a},addUIToElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.addCls(b.bodyCls)}else{b.body.addCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");if(!Ext.Array.contains(c,a)){c.push(a)}b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered){b.titleCmp.addCls(b.baseCls+"-text-container-"+b.ui)}},removeUIFromElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.removeCls(b.bodyCls)}else{b.body.removeCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");Ext.Array.remove(c,a);b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered){b.titleCmp.removeCls(b.baseCls+"-text-container-"+b.ui)}},onClick:function(a){this.fireClickEvent("click",a)},onDblClick:function(a){this.fireClickEvent("dblclick",a)},fireClickEvent:function(a,c){var b="."+Ext.panel.Tool.prototype.baseCls;if(!c.getTarget(b)){this.fireEvent(a,this,c)}},getFocusEl:function(){return this.el},getTargetEl:function(){return this.body||this.frameBody||this.el},applyTargetCls:function(a){this.bodyTargetCls=a},setTitle:function(c){var b=this,a=b.titleCmp;b.title=c;if(a.rendered){a.textEl.update(b.title||"&#160;");a.updateLayout()}else{b.titleCmp.on({render:function(){b.setTitle(c)},single:true})}},getMinWidth:function(){var e=this,d=e.titleCmp.textEl.dom,a,g=e.tools,b,c;d.style.display="inline";a=d.offsetWidth;d.style.display="";if(g&&(b=g.length)){for(c=0;c<b;c++){if(g[c].el){a+=g[c].el.dom.offsetWidth}}}if(e.iconCmp){a+=e.iconCmp.el.dom.offsetWidth}return a+10},setIconCls:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.iconCls=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.removeCls(c.iconCls);c.addCls(a);c.iconCls=a}}}},setIcon:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.icon=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.setSrc(b.icon)}}}},setGlyph:function(b){var a=this,c=a.iconCmp;if(!a.iconCmp){a.initIconCmp();a.insert(0,a.iconCmp)}else{if(c){if(b){a.iconCmp.setGlyph(b)}else{a.iconCmp.destroy();delete a.iconCmp}}}},getTools:function(){return this.tools.slice()},addTool:function(a){this.add(Ext.ComponentManager.create(a,"tool"))},syncBeforeAfterTitleClasses:function(){var j=this,h=j.items,e=h.items,b=j.titlePosition,a=e.length,g=h.generation,k=j.syncBeforeAfterGen,m,d,c,l;if(k===g){return}j.syncBeforeAfterGen=g;for(c=0;c<a;++c){l=e[c];m=l.afterTitleCls||(l.afterTitleCls=l.baseCls+"-after-title");d=l.beforeTitleCls||(l.beforeTitleCls=l.baseCls+"-before-title");if(!j.title||c<b){if(k){l.removeCls(m)}l.addCls(d)}else{if(c>b){if(k){l.removeCls(d)}l.addCls(m)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var c=this,b=c.callParent(),a=c.ownerCt;if(!c.expanding&&(a&&a.collapsed)||c.isCollapsedExpander){b+="-"+a.collapsedCls}return b+"-"+c.dock}},0,["header"],["component","container","box","header"],{component:true,container:true,box:true,header:true},["widget.header"],0,[Ext.panel,"Header"],0));(Ext.cmd.derive("Ext.dd.DragDrop",Ext.Base,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(j,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(j),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(c,b){var a=this;if((a.primaryButtonOnly&&c.button!=0)||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c<a;++c){if(this.invalidHandleClasses[c]==b){delete this.invalidHandleClasses[c]}}},isValidHandleChild:function(d){var c=true,h,b,a;try{h=d.nodeName.toUpperCase()}catch(g){h=d.nodeName}c=c&&!this.invalidHandleTypes[h];c=c&&!this.invalidHandleIds[d.id];for(b=0,a=this.invalidHandleClasses.length;c&&b<a;++b){c=!Ext.fly(d).hasCls(this.invalidHandleClasses[b])}return c},setXTicks:function(d,a){this.xTicks=[];this.xTickSize=a;var c={},b;for(b=this.initPageX;b>=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b<a;++b){c=b+1;if(d[c]&&d[c]>=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DragDrop"],0));(Ext.cmd.derive("Ext.dd.DD",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),j=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:j.getDocumentWidth(),height:j.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,j=(o+q-l-this.deltaY),g=(b+d-m-this.deltaX),c=40,a=(document.all)?80:30;if(k>o&&j<c){window.scrollTo(d,q+a)}if(l<q&&q>0&&l-q<c){window.scrollTo(d,q-a)}if(p>b&&g<c){window.scrollTo(d+a,q)}if(m<d&&d>0&&m-d<c){window.scrollTo(d-a,q)}}},getTargetCoord:function(c,b){var a=c-this.deltaX,d=b-this.deltaY;if(this.constrainX){if(a<this.minX){a=this.minX}if(a>this.maxX){a=this.maxX}}if(this.constrainY){if(d<this.minY){d=this.minY}if(d>this.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){this.callParent();this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}},3,0,0,0,0,0,[Ext.dd,"DD"],0));(Ext.cmd.derive("Ext.dd.DDProxy",Ext.dd.DD,{statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent();this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl(),a=this.getDragEl(),b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl(),a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DDProxy"],0));(Ext.cmd.derive("Ext.dd.StatusProxy",Ext.Component,{animRepair:false,childEls:["ghost"],renderTpl:['<div class="'+Ext.baseCSSPrefix+'dd-drop-icon"></div><div id="{id}-ghost" class="'+Ext.baseCSSPrefix+'dd-drag-ghost"></div>'],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.dd,"StatusProxy"],0));(Ext.cmd.derive("Ext.dd.DragSource",Ext.dd.DDProxy,{dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(c,b,d){var a=this;if(!b){b=c;c=null;d=b.getTarget().id}if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}a.proxy.repair(a.getRepairXY(b,a.dragData),a.afterRepair,a);if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}},1,0,0,0,0,0,[Ext.dd,"DragSource"],0));(Ext.cmd.derive("Ext.panel.Proxy",Ext.Base,{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}},1,0,0,0,0,0,[Ext.panel,"Proxy",Ext.dd,"PanelProxy"],0));(Ext.cmd.derive("Ext.panel.DD",Ext.dd.DragSource,{constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}}},1,0,0,0,0,0,[Ext.panel,"DD"],0));(Ext.cmd.derive("Ext.util.Memento",Ext.Base,(function(){function d(j,h,k,g){j[g?g+k:k]=h[k]}function c(h,g,j){delete h[j]}function e(l,k,m,j){var g=j?j+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,j,g){if(Ext.isDefined(g)){h[j]=g}else{delete h[j]}}function b(h,n,m,j,k){if(n){if(Ext.isArray(j)){var l,g=j.length;for(l=0;l<g;l++){h(n,m,j[l],k)}}else{h(n,m,j,k)}}}return{data:null,target:null,constructor:function(h,g){if(h){this.target=h;if(g){this.capture(g)}}},capture:function(g,k,j){var h=this;b(d,h.data||(h.data={}),k||h.target,g,j)},remove:function(g){b(c,this.data,null,g)},restore:function(h,g,k,j){b(e,this.data,k||this.target,h,j);if(g!==false){this.remove(h)}},restoreAll:function(g,l){var j=this,h=l||this.target,k=j.data,m;for(m in k){if(k.hasOwnProperty(m)){a(h,m,k[m])}}if(g!==false){delete j.data}}}}()),1,0,0,0,0,0,[Ext.util,"Memento"],0));(Ext.cmd.derive("Ext.panel.Panel",Ext.panel.AbstractPanel,{alternateClassName:"Ext.Panel",collapsedCls:"collapsed",animCollapse:Ext.enableFx,minButtonWidth:75,collapsed:false,collapseFirst:true,hideCollapseTool:false,titleCollapse:undefined,floatable:true,collapsible:undefined,closable:false,closeAction:"destroy",placeholderCollapseHideMode:Ext.Element.VISIBILITY,preventHeader:false,header:undefined,headerPosition:"top",frame:false,frameHeader:true,manageHeight:true,constrain:false,constrainHeader:false,initComponent:function(){var a=this;a.addEvents("beforeclose","close","beforeexpand","beforecollapse","expand","collapse","titlechange","iconchange","iconclschange","glyphchange","float","unfloat");if(a.collapsible){this.addStateEvents(["expand","collapse"])}if(a.unstyled){a.setUI("plain")}if(a.frame){a.setUI(a.ui+"-framed")}a.bridgeToolbars();a.callParent();a.collapseDirection=a.collapseDirection||a.headerPosition||Ext.Component.DIRECTION_TOP;a.hiddenOnCollapse=new Ext.dom.CompositeElement()},beforeDestroy:function(){var a=this;Ext.destroy(a.placeholder,a.ghostPanel,a.dd);a.callParent()},initAria:function(){this.callParent();this.initHeaderAria()},getFocusEl:function(){return this.el},initHeaderAria:function(){var b=this,a=b.el,c=b.header;if(a&&c){a.dom.setAttribute("aria-labelledby",c.titleCmp.id)}},getHeader:function(){return this.header},setTitle:function(g){var c=this,b=c.title,e=c.header,a=c.reExpander,d=c.placeholder;c.title=g;if(e){if(e.isHeader){e.setTitle(g)}else{e.title=g}}else{if(c.rendered){c.updateHeader()}}if(a){a.setTitle(g)}if(d&&d.setTitle){d.setTitle(g)}c.fireEvent("titlechange",c,g,b)},setIconCls:function(a){var c=this,b=c.iconCls,e=c.header,d=c.placeholder;c.iconCls=a;if(e){if(e.isHeader){e.setIconCls(a)}else{e.iconCls=a}}else{c.updateHeader()}if(d&&d.setIconCls){d.setIconCls(a)}c.fireEvent("iconclschange",c,a,b)},setIcon:function(a){var b=this,c=b.icon,e=b.header,d=b.placeholder;b.icon=a;if(e){if(e.isHeader){e.setIcon(a)}else{e.icon=a}}else{b.updateHeader()}if(d&&d.setIcon){d.setIcon(a)}b.fireEvent("iconchange",b,a,c)},setGlyph:function(c){var b=this,a=b.glyph,e=b.header,d=b.placeholder;b.glyph=c;if(e){if(e.isHeader){e.setGlyph(c)}else{e.glyph=c}}else{b.updateHeader()}if(d&&d.setGlyph){d.setIcon(c)}b.fireEvent("glyphchange",b,c,a)},bridgeToolbars:function(){var a=this,g=[],c,b,e=a.minButtonWidth;function d(h,k,j){if(Ext.isArray(h)){h={xtype:"toolbar",items:h}}else{if(!h.xtype){h.xtype="toolbar"}}h.dock=k;if(k=="left"||k=="right"){h.vertical=true}if(j){h.layout=Ext.applyIf(h.layout||{},{pack:{left:"start",center:"center"}[a.buttonAlign]||"end"})}return h}if(a.tbar){g.push(d(a.tbar,"top"));a.tbar=null}if(a.bbar){g.push(d(a.bbar,"bottom"));a.bbar=null}if(a.buttons){a.fbar=a.buttons;a.buttons=null}if(a.fbar){c=d(a.fbar,"bottom",true);c.ui="footer";if(e){b=c.defaults;c.defaults=function(h){var j=b||{};if((!h.xtype||h.xtype==="button"||(h.isComponent&&h.isXType("button")))&&!("minWidth" in j)){j=Ext.apply({minWidth:e},j)}return j}}g.push(c);a.fbar=null}if(a.lbar){g.push(d(a.lbar,"left"));a.lbar=null}if(a.rbar){g.push(d(a.rbar,"right"));a.rbar=null}if(a.dockedItems){if(!Ext.isArray(a.dockedItems)){a.dockedItems=[a.dockedItems]}a.dockedItems=a.dockedItems.concat(g)}else{a.dockedItems=g}},isPlaceHolderCollapse:function(){return this.collapseMode=="placeholder"},onBoxReady:function(){this.callParent();if(this.collapsed){this.setHiddenDocked()}},beforeRender:function(){var b=this,a;b.callParent();b.initTools();if(!(b.preventHeader||(b.header===false))){b.updateHeader()}if(b.collapsed){if(b.isPlaceHolderCollapse()){if(!b.hidden){b.setHiddenState(true);b.preventCollapseFire=true;b.placeholderCollapse();delete b.preventCollapseFire;a=b.collapsed;b.collapsed=false}}else{b.beginCollapse();b.addClsWithUI(b.collapsedCls)}}if(a){b.collapsed=a}},initTools:function(){var c=this,d=c.tools,b,a;c.tools=[];for(b=d&&d.length;b;){--b;c.tools[b]=a=d[b];a.toolOwner=c}if(c.collapsible&&!(c.hideCollapseTool||c.header===false||c.preventHeader)){c.collapseDirection=c.collapseDirection||c.headerPosition||"top";c.collapseTool=c.expandTool=Ext.widget({xtype:"tool",handler:c.toggleCollapse,scope:c});c.updateCollapseTool();if(c.collapseFirst){c.tools.unshift(c.collapseTool)}}c.addTools();if(c.closable){c.addClsWithUI("closable");c.addTool(Ext.widget({xtype:"tool",type:"close",handler:Ext.Function.bind(c.close,c,[])}))}if(c.collapseTool&&!c.collapseFirst){c.addTool(c.collapseTool)}},addTools:Ext.emptyFn,updateCollapseTool:function(){var b=this,a=b.collapseTool;if(a){if(b.collapsed&&!b.isPlaceHolderCollapse()){a.setType("expand-"+b.getOppositeDirection(b.collapseDirection))}else{a.setType("collapse-"+b.collapseDirection)}}},close:function(){if(this.fireEvent("beforeclose",this)!==false){this.doClose()}},doClose:function(){this.fireEvent("close",this);this[this.closeAction]()},updateHeader:function(d){var c=this,h=c.header,g=c.title,e=c.tools,b=c.icon||c.iconCls,a=c.headerPosition==="left"||c.headerPosition==="right";if(Ext.isObject(h)||(h!==false&&(d||(g||b)||(e&&e.length)||(c.collapsible&&!c.titleCollapse)))){if(h&&h.isHeader){h.show()}else{h=c.header=Ext.widget(Ext.apply({xtype:"header",title:g,titleAlign:c.titleAlign,orientation:a?"vertical":"horizontal",dock:c.headerPosition||"top",textCls:c.headerTextCls,iconCls:c.iconCls,icon:c.icon,glyph:c.glyph,baseCls:c.baseCls+"-header",tools:e,ui:c.ui,id:c.id+"_header",overCls:c.headerOverCls,indicateDrag:c.draggable,frame:(c.frame||c.alwaysFramed)&&c.frameHeader,ignoreParentFrame:c.frame||c.overlapHeader,ignoreBorderManagement:c.frame||c.ignoreHeaderBorderManagement,ownerCt:c,listeners:c.collapsible&&c.titleCollapse?{click:c.toggleCollapse,scope:c}:null},c.header));c.addDocked(h,0)}c.initHeaderAria()}else{if(h){h.hide()}}},setUI:function(b){var a=this;a.callParent(arguments);if(a.header&&a.header.rendered){a.header.setUI(b)}},getDefaultContentTarget:function(){return this.body},getTargetEl:function(){var a=this;return a.body||a.protoBody||a.frameBody||a.el},isVisible:function(a){var b=this;if(b.collapsed&&b.placeholder){return b.placeholder.isVisible(a)}return b.callParent(arguments)},onHide:function(){var a=this;if(a.collapsed&&a.placeholder){a.placeholder.hide()}else{a.callParent(arguments)}},onShow:function(){var a=this;if(a.collapsed&&a.isPlaceHolderCollapse()){a.setHiddenState(true);a.placeholderCollapse()}else{a.callParent(arguments)}},onRemoved:function(b){var a=this;if(a.placeholder&&!b){a.ownerCt.remove(a.placeholder,false)}a.callParent(arguments)},addTool:function(e){if(!Ext.isArray(e)){e=[e]}var d=this,g=d.header,c,a=e.length,b;for(c=0;c<a;c++){b=e[c];b.toolOwner=d;if(g&&g.isHeader){g.addTool(b)}else{d.tools.push(b)}}d.updateHeader()},getOppositeDirection:function(a){var b=Ext.Component;switch(a){case b.DIRECTION_TOP:return b.DIRECTION_BOTTOM;case b.DIRECTION_RIGHT:return b.DIRECTION_LEFT;case b.DIRECTION_BOTTOM:return b.DIRECTION_TOP;case b.DIRECTION_LEFT:return b.DIRECTION_RIGHT}},getWidthAuthority:function(){if(this.collapsed&&this.collapsedHorizontal()){return 1}return this.callParent()},getHeightAuthority:function(){if(this.collapsed&&this.collapsedVertical()){return 1}return this.callParent()},collapsedHorizontal:function(){var a=this.getCollapsed();return a==="left"||a==="right"},collapsedVertical:function(){var a=this.getCollapsed();return a==="top"||a==="bottom"},restoreDimension:function(){var a=this.collapseDirection;return(a==="top"||a==="bottom")?"height":"width"},getCollapsed:function(){var a=this;if(a.collapsed===true){return a.collapseDirection}return a.collapsed},getState:function(){var a=this,b=a.callParent(),c;b=a.addPropertyToState(b,"collapsed");if(a.collapsed){c=a.collapseMemento;c=c&&c.data;if(a.collapsedVertical()){if(b){delete b.height}if(c){b=a.addPropertyToState(b,"height",c.height)}}else{if(b){delete b.width}if(c){b=a.addPropertyToState(b,"width",c.width)}}}return b},findReExpander:function(h){var g=this,j=Ext.Component,e=g.dockedItems.items,a=e.length,b,d;if(g.collapseMode==="mini"){return}switch(h){case j.DIRECTION_TOP:case j.DIRECTION_BOTTOM:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(!b.dock||b.dock==="top"||b.dock==="bottom")){return b}}}break;case j.DIRECTION_LEFT:case j.DIRECTION_RIGHT:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(b.dock==="left"||b.dock==="right")){return b}}}break;default:throw ("Panel#findReExpander must be passed a valid collapseDirection")}},getReExpander:function(c){var b=this,d=c||b.collapseDirection,a=b.reExpander||b.findReExpander(d);b.expandDirection=b.getOppositeDirection(d);if(!a){b.reExpander=a=b.createReExpander(d,{dock:d,cls:Ext.baseCSSPrefix+"docked "+b.baseCls+"-"+b.ui+"-collapsed",isCollapsedExpander:true});b.dockedItems.insert(0,a)}return a},createReExpander:function(e,d){var c=this,h=e==="left",b=e==="right",g=h||b,a=Ext.apply({hideMode:"offsets",title:c.title||"&#160;",titleAlign:c.titleAlign,orientation:g?"vertical":"horizontal",textCls:c.headerTextCls,icon:c.icon,iconCls:c.iconCls,glyph:c.glyph,baseCls:c.self.prototype.baseCls+"-header",ui:c.ui,frame:c.frame&&c.frameHeader,ignoreParentFrame:c.frame||c.overlapHeader,indicateDrag:c.draggable,collapseImmune:true,ownerCt:c.ownerCt,ownerLayout:c.componentLayout,margin:c.margin},d);if(c.collapseMode==="mini"){if(g){a.width=1}else{a.height=1}}if(!c.hideCollapseTool){if(h||(b&&c.isPlaceHolderCollapse())){a.titlePosition=1}a.tools=[{xtype:"tool",type:"expand-"+c.getOppositeDirection(e),uiCls:["top"],handler:c.toggleCollapse,scope:c}]}a=new Ext.panel.Header(a);a.addClsWithUI(c.getHeaderCollapsedClasses(a));return a},getHeaderCollapsedClasses:function(d){var b=this,c=b.collapsedCls,a;a=[c,c+"-"+d.getDockName()];if(b.border&&(!b.frame||(b.frame&&Ext.supports.CSS3BorderRadius))){a.push(c+"-border-"+d.getDockName())}return a},beginCollapse:function(){var e=this,c=e.lastBox,h=e.rendered,b=e.collapseMemento||(e.collapseMemento=new Ext.util.Memento(e)),d=e.getSizeModel(),g=e.header,a;b.capture(["height","minHeight","width","minWidth"]);if(c){b.capture(e.restoreDimension(),c,"last.")}if(e.collapsedVertical()){if(d.width.shrinkWrap){e.width=h?e.getWidth():e.width||e.minWidth||100}delete e.height;e.minHeight=0}else{if(e.collapsedHorizontal()){if(d.height.shrinkWrap){e.height=h?e.getHeight():e.height||e.minHeight||100}delete e.width;e.minWidth=0}}if(e.ownerCt){e.ownerCt.getLayout().beginCollapse(e)}if(!e.isPlaceHolderCollapse()&&g!==false){if(g===(a=e.getReExpander())){g.collapseImmune=true;g.getHierarchyState().collapseImmune=true;g.addClsWithUI(e.getHeaderCollapsedClasses(g));if(g.rendered){g.updateFrame()}}else{if(a.el){a.el.show();a.hidden=false}}}if(e.resizer){e.resizer.disable()}},beginExpand:function(){var e=this,d=e.lastBox,c=e.collapseMemento,a=this.restoreDimension(),g=e.header,b;if(c){c.restore(["minHeight","minWidth",a]);if(d){c.restore(a,true,d,"last.")}}if(e.ownerCt){e.ownerCt.getLayout().beginExpand(e)}if(!e.isPlaceHolderCollapse()&&g!==false){if(g===(b=e.getReExpander())){delete g.collapseImmune;delete g.getHierarchyState().collapseImmune;g.removeClsWithUI(e.getHeaderCollapsedClasses(g));if(g.rendered){g.expanding=true;g.updateFrame();delete g.expanding}}else{b.hidden=true;b.el.hide()}}if(e.resizer){e.resizer.enable()}},collapse:function(d,a){var c=this,e=d||c.collapseDirection,b=c.ownerCt;if(c.isCollapsingOrExpanding){return c}if(arguments.length<2){a=c.animCollapse}if(c.collapsed||c.fireEvent("beforecollapse",c,d,a)===false){return c}if(b&&c.isPlaceHolderCollapse()){return c.placeholderCollapse(d,a)}c.collapsed=e;c.beginCollapse();c.getHierarchyState().collapsed=true;c.fireHierarchyEvent("collapse");return c.doCollapseExpand(1,a)},doCollapseExpand:function(a,b){var d=this,c=d.animCollapse,e=d.ownerLayout;d.animCollapse=b;d.isCollapsingOrExpanding=a;if(b){d.addCls(Ext.baseCSSPrefix+"animating-size")}if(e&&!b){e.onContentChange(d)}else{d.updateLayout({isRoot:true})}d.animCollapse=c;return d},afterCollapse:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;a.updateCollapseTool();if(b){a.removeCls(Ext.baseCSSPrefix+"animating-size")}if(c&&b){c.onContentChange(a)}a.setHiddenDocked();a.fireEvent("collapse",a)},setHiddenDocked:function(){var h=this,d=h.hiddenOnCollapse,c=h.getDockedItems(),a=c.length,e=0,g,b;if(h.header!==false){b=h.getReExpander()}d.add(h.body);for(;e<a;e++){g=c[e];if(g&&g!==b&&g.el){d.add(g.el)}}d.setStyle("visibility","hidden")},restoreHiddenDocked:function(){var a=this.hiddenOnCollapse;a.setStyle("visibility","");a.clear()},getPlaceholder:function(e){var d=this,h=e||d.collapseDirection,c=null,g=d.placeholder,b=d.floatable,a=d.titleCollapse;if(!g){if(b||(d.collapsible&&a)){c={click:{fn:(!a&&b)?d.floatCollapsedPanel:d.toggleCollapse,element:"el",scope:d}}}d.placeholder=g=Ext.widget(d.createReExpander(h,{id:d.id+"-placeholder",listeners:c}))}if(!g.placeholderFor){if(!g.isComponent){d.placeholder=g=d.lookupComponent(g)}Ext.applyIf(g,{margins:d.margins,placeholderFor:d});g.addCls([Ext.baseCSSPrefix+"region-collapsed-placeholder",Ext.baseCSSPrefix+"region-collapsed-"+h+"-placeholder",d.collapsedCls])}return g},placeholderCollapse:function(g,a){var d=this,c=d.ownerCt,j=g||d.collapseDirection,b=Ext.baseCSSPrefix+"border-region-slide-in",h=d.getPlaceholder(j),e;d.isCollapsingOrExpanding=1;d.setHiddenState(true);d.collapsed=j;if(h.rendered){if(h.el.dom.parentNode!==d.el.dom.parentNode){d.el.dom.parentNode.insertBefore(h.el.dom,d.el.dom)}h.hidden=false;h.el.show();c.updateLayout()}else{c.insert(c.items.indexOf(d),h)}if(d.rendered){d.el.setVisibilityMode(d.placeholderCollapseHideMode);if(a){d.el.addCls(b);h.el.hide();e=d.convertCollapseDir(j);d.el.slideOut(e,{preserveScroll:true,duration:Ext.Number.from(a,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){d.el.removeCls(b);h.el.show().setStyle("display","none").slideIn(e,{easing:"linear",duration:100,listeners:{afteranimate:function(){h.focus();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}})}}})}else{d.el.hide();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}else{d.isCollapsingOrExpanding=0;if(!d.preventCollapseFire){d.fireEvent("collapse",d)}}return d},floatCollapsedPanel:function(){var c=this,j=c.placeholder,h=j.getSize(),d,b=Ext.baseCSSPrefix+"border-region-slide-in",g=c.collapsed,e=c.ownerCt||c,a;if(c.isSliding){return}if(c.el.hasCls(b)){c.slideOutFloatedPanel();return}c.isSliding=true;j.el.hide();j.hidden=true;c.el.show();c.setHiddenState(false);c.collapsed=false;e.updateLayout();d=c.getBox(false,true);j.el.show();j.hidden=false;c.el.hide();c.setHiddenState(true);c.collapsed=g;e.updateLayout();c.slideOutTask=c.slideOutTask||new Ext.util.DelayedTask(c.slideOutFloatedPanel,c);j.el.on("mouseleave",c.onMouseLeaveFloated,c);c.el.on("mouseleave",c.onMouseLeaveFloated,c);j.el.on("mouseenter",c.onMouseEnterFloated,c);c.el.on("mouseenter",c.onMouseEnterFloated,c);c.el.addCls(b);c.floated=true;if(c.collapseTool){c.collapseTool.el.hide()}switch(c.collapsed){case"top":c.setLocalXY(d.x,d.y+h.height-1);break;case"right":c.setLocalXY(d.x-h.width+1,d.y);break;case"bottom":c.setLocalXY(d.x,d.y-h.height+1);break;case"left":c.setLocalXY(d.x+h.width-1,d.y);break}a=c.convertCollapseDir(c.collapsed);c.floatedFromCollapse=c.collapsed;c.collapsed=false;c.setHiddenState(false);c.el.slideIn(a,{preserveScroll:true,duration:Ext.Number.from(c.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){c.isSliding=false;c.fireEvent("float",c)}}})},onMouseLeaveFloated:function(a){this.slideOutTask.delay(500)},onMouseEnterFloated:function(a){this.slideOutTask.cancel()},isLayoutRoot:function(){if(this.floatedFromCollapse){return true}return this.callParent()},slideOutFloatedPanel:function(){var a=this,c=this.el,b;if(a.isSliding||a.isDestroyed){return}a.isSliding=true;a.floated=false;a.slideOutFloatedPanelBegin();if(typeof a.collapsed=="string"){b=a.convertCollapseDir(a.collapsed)}c.slideOut(b,{preserveScroll:true,duration:Ext.Number.from(a.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){a.slideOutFloatedPanelEnd();a.el.removeCls(Ext.baseCSSPrefix+"border-region-slide-in")}}})},slideOutFloatedPanelBegin:function(){var b=this,c=b.placeholder.el,a=b.el;b.collapsed=b.floatedFromCollapse;b.setHiddenState(true);b.floatedFromCollapse=null;c.un("mouseleave",b.onMouseLeaveFloated,b);a.un("mouseleave",b.onMouseLeaveFloated,b);c.un("mouseenter",b.onMouseEnterFloated,b);a.un("mouseenter",b.onMouseEnterFloated,b)},slideOutFloatedPanelEnd:function(){var a=this;if(a.collapseTool){a.collapseTool.el.show()}a.slideOutTask.cancel();a.isSliding=false;a.fireEvent("unfloat",a)},expand:function(a){var b=this;if(b.isCollapsingOrExpanding){return b}if(!arguments.length){a=b.animCollapse}if(!b.collapsed&&!b.floatedFromCollapse){return b}if(b.fireEvent("beforeexpand",b,a)===false){return b}delete this.getHierarchyState().collapsed;if(b.isPlaceHolderCollapse()){return b.placeholderExpand(a)}b.restoreHiddenDocked();b.beginExpand();b.collapsed=false;return b.doCollapseExpand(2,a)},placeholderExpand:function(c){var e=this,h=e.collapsed,d=Ext.baseCSSPrefix+"border-region-slide-in",g,b,a=e.ownerLayout?e.ownerLayout.centerRegion:null;if(Ext.AbstractComponent.layoutSuspendCount){c=false}if(e.floatedFromCollapse){b=e.getPosition(true);e.slideOutFloatedPanelBegin();e.slideOutFloatedPanelEnd();e.floated=false}if(c){Ext.suspendLayouts();e.placeholder.hide();e.el.show();e.collapsed=false;e.setHiddenState(false);if(a&&!b){a.hidden=true}Ext.resumeLayouts(true);a.hidden=false;e.el.addCls(d);e.isCollapsingOrExpanding=2;if(b){g=e.getXY();e.setLocalXY(b[0],b[1]);e.setXY([g[0],g[1]],{duration:Ext.Number.from(c,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){e.el.removeCls(d);e.isCollapsingOrExpanding=0;e.fireEvent("expand",e)}}})}else{e.el.hide();e.placeholder.el.show();e.placeholder.hidden=false;e.setHiddenState(false);e.el.slideIn(e.convertCollapseDir(h),{preserveScroll:true,duration:Ext.Number.from(c,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){e.el.removeCls(d);e.placeholder.hide();e.updateLayout();e.isCollapsingOrExpanding=0;e.fireEvent("expand",e)}}})}}else{e.floated=e.collapsed=false;e.el.removeCls(d);Ext.suspendLayouts();e.placeholder.hide();e.show();Ext.resumeLayouts(true);e.fireEvent("expand",e)}return e},afterExpand:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;a.updateCollapseTool();if(b){a.removeCls(Ext.baseCSSPrefix+"animating-size")}if(c&&b){c.onContentChange(a)}a.fireEvent("expand",a);a.fireHierarchyEvent("expand")},setBorder:function(a,c){if(c){return}var b=this,d=b.header;if(!a){a=0}else{if(a===true){a="1px"}else{a=b.unitizeBox(a)}}if(d){if(d.isHeader){d.setBorder(a)}else{d.border=a}}if(b.rendered&&b.bodyBorder!==false){b.body.setStyle("border-width",a)}b.updateLayout();b.border=a},toggleCollapse:function(){return(this.collapsed||this.floatedFromCollapse)?this.expand():this.collapse()},getKeyMap:function(){return this.keyMap||(this.keyMap=new Ext.util.KeyMap(Ext.apply({target:this.el},this.keys)))},initDraggable:function(){if(this.simpleDrag){this.initSimpleDraggable()}else{this.dd=new Ext.panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)}},initSimpleDraggable:function(){var c=this,b,a;if(!c.header){c.updateHeader(true)}if(c.header){b=Ext.applyIf({el:c.el,delegate:"#"+Ext.escapeId(c.header.id)},c.draggable);if(c.constrain||c.constrainHeader){b.constrain=c.constrain;b.constrainDelegate=c.constrainHeader;b.constrainTo=c.constrainTo||c.container}a=c.dd=new Ext.util.ComponentDragger(this,b);c.relayEvents(a,["dragstart","drag","dragend"]);if(c.maximized){a.disable()}}},ghostTools:function(){var e=[],g=this.header,d=g?g.query("tool[hidden=false]"):[],c,a,b;if(d.length){c=0;a=d.length;for(;c<a;c++){b=d[c];e.push({type:b.type})}}else{e=[{type:"placeholder"}]}return e},ghost:function(a){var d=this,b=d.ghostPanel,c=d.getBox(),e;if(!b){b=new Ext.panel.Panel({renderTo:Ext.getBody(),floating:{shadow:false},frame:d.frame&&!d.alwaysFramed,alwaysFramed:d.alwaysFramed,overlapHeader:d.overlapHeader,headerPosition:d.headerPosition,baseCls:d.baseCls,cls:d.baseCls+"-ghost "+(a||"")});d.ghostPanel=b}else{b.el.show()}d.ghostPanel.hidden=false;b.floatParent=d.floatParent;if(d.floating){b.zIndexManager.assignZIndices()}else{b.toFront()}if(!(d.preventHeader||(d.header===false))){e=b.header;if(e){e.suspendLayouts();Ext.Array.forEach(e.query("tool"),e.remove,e);e.resumeLayouts()}b.addTool(d.ghostTools());b.setTitle(d.title);if(d.iconCls){b.setIconCls(d.iconCls)}else{if(d.icon){b.setIcon(d.icon)}else{if(d.glyph){b.setGlyph(d.glyph)}}}b.header.addCls(Ext.baseCSSPrefix+"header-ghost")}b.setPagePosition(c.x,c.y);b.setSize(c.width,c.height);d.el.hide();return b},unghost:function(b,a){var c=this;if(!c.ghostPanel){return}if(b!==false){c.el.show();if(a!==false){c.setPagePosition(c.ghostPanel.getXY());if(c.hideMode=="offsets"){delete c.el.hideModeStyles}}Ext.defer(c.focus,10,c)}c.ghostPanel.el.hide();c.ghostPanel.hidden=true},beginDrag:function(){if(this.floatingDescendants){this.floatingDescendants.hide()}},endDrag:function(){if(this.floatingDescendants){this.floatingDescendants.show()}},initResizable:function(){this.callParent(arguments);if(this.collapsed){this.resizer.disable()}},convertCollapseDir:function(a){return a.substr(0,1)}},0,["panel"],["panel","component","container","box"],{panel:true,component:true,container:true,box:true},["widget.panel"],0,[Ext.panel,"Panel",Ext,"Panel"],function(){this.prototype.animCollapse=Ext.enableFx}));(Ext.cmd.derive("Ext.tip.Tip",Ext.panel.Panel,{alternateClassName:"Ext.Tip",minWidth:40,maxWidth:500,shadow:"sides",defaultAlign:"tl-bl?",constrainPosition:true,autoRender:true,hidden:true,baseCls:Ext.baseCSSPrefix+"tip",floating:{shadow:true,shim:true},focusOnToFront:false,closeAction:"hide",ariaRole:"tooltip",alwaysFramed:true,frameHeader:false,initComponent:function(){var a=this;a.floating=Ext.apply({},{shadow:a.shadow,constrain:a.constrainPosition},a.self.prototype.floating);a.callParent(arguments);a.constrain=a.constrain||a.constrainPosition},showAt:function(b){var a=this;this.callParent(arguments);if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true)}},initDraggable:function(){var a=this;a.draggable={el:a.getDragEl(),delegate:a.header.el,constrain:a,constrainTo:a.el.dom.parentNode};Ext.Component.prototype.initDraggable.call(a)},ghost:undefined,unghost:undefined},0,0,["panel","component","container","box"],{panel:true,component:true,container:true,box:true},0,0,[Ext.tip,"Tip",Ext,"Tip"],0));(Ext.cmd.derive("Ext.tip.ToolTip",Ext.tip.Tip,{alternateClassName:"Ext.ToolTip",autoHide:true,showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,quickShowInterval:250,initComponent:function(){var a=this;a.callParent(arguments);a.lastActive=new Date();a.setTarget(a.target);a.origAnchor=a.anchor},onRender:function(b,a){var c=this;c.callParent(arguments);c.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+c.getAnchorPosition();c.anchorEl=c.el.createChild({cls:Ext.baseCSSPrefix+"tip-anchor "+c.anchorCls})},setTarget:function(d){var b=this,a=Ext.get(d),c;if(b.target){c=Ext.get(b.target);b.mun(c,"mouseover",b.onTargetOver,b);b.mun(c,"mouseout",b.onTargetOut,b);b.mun(c,"mousemove",b.onMouseMove,b)}b.target=a;if(a){b.mon(a,{freezeEvent:true,mouseover:b.onTargetOver,mouseout:b.onTargetOut,mousemove:b.onMouseMove,scope:b})}if(b.anchor){b.anchorTarget=b.target}},onMouseMove:function(d){var b=this,a=b.delegate?d.getTarget(b.delegate):b.triggerElement=true,c;if(a){b.targetXY=d.getXY();if(a===b.triggerElement){if(!b.hidden&&b.trackMouse){c=b.getTargetXY();if(b.constrainPosition){c=b.el.adjustForConstraints(c,b.el.parent())}b.setPagePosition(c)}}else{b.hide();b.lastActive=new Date(0);b.onTargetOver(d)}}else{if((!b.closable&&b.isVisible())&&b.autoHide!==false){b.hide()}}},getTargetXY:function(){var k=this,d,c,o,a,j,m,e,n,l,b,h,g;if(k.delegate){k.anchorTarget=k.triggerElement}if(k.anchor){k.targetCounter++;c=k.getOffsets();o=(k.anchorToTarget&&!k.trackMouse)?k.getAlignToXY(k.anchorTarget,k.getAnchorAlign()):k.targetXY;a=Ext.Element.getViewWidth()-5;j=Ext.Element.getViewHeight()-5;m=document.documentElement;e=document.body;n=(m.scrollLeft||e.scrollLeft||0)+5;l=(m.scrollTop||e.scrollTop||0)+5;b=[o[0]+c[0],o[1]+c[1]];h=k.getSize();g=k.constrainPosition;k.anchorEl.removeCls(k.anchorCls);if(k.targetCounter<2&&g){if(b[0]<n){if(k.anchorToTarget){k.defaultAlign="l-r";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="left";return k.getTargetXY()}if(b[0]+h.width>a){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]<l){if(k.anchorToTarget){k.defaultAlign="t-b";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="top";return k.getTargetXY()}if(b[1]+h.height>j){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return(k.targetXY)?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(d){var c=this,b=c.delegate,a;if(c.disabled||d.within(c.target.dom,true)){return}a=b?d.getTarget(b):true;if(a){c.triggerElement=a;c.triggerEvent=d;c.clearTimer("hide");c.targetXY=d.getXY();c.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)<a.quickShowInterval){a.show()}else{a.showTimer=Ext.defer(a.showFromDelay,a.showDelay,a)}}else{if(!a.hidden&&a.autoHide!==false){a.show()}}},showFromDelay:function(){this.fromDelayShow=true;this.show();delete this.fromDelayShow},onShowVeto:function(){this.callParent();delete this.triggerElement;this.clearTimer("show")},onTargetOut:function(d){var b=this,a=b.triggerElement,c=a===true?b.target:a;if(b.disabled||!a||d.within(c,true)){return}if(b.showTimer){b.clearTimer("show");b.triggerElement=null}if(b.autoHide!==false){b.delayHide()}},delayHide:function(){var a=this;if(!a.hidden&&!a.hideTimer){a.hideTimer=Ext.defer(a.hide,a.hideDelay,a)}},hide:function(){var a=this;a.clearTimer("dismiss");a.lastActive=new Date();if(a.anchorEl){a.anchorEl.hide()}a.callParent(arguments);delete a.triggerElement},show:function(){var a=this;this.callParent();if(this.hidden===false){a.setPagePosition(-10000,-10000);if(a.anchor){a.anchor=a.origAnchor}if(!a.calledFromShowAt){a.showAt(a.getTargetXY())}if(a.anchor){a.syncAnchor();a.anchorEl.show()}else{a.anchorEl.hide()}}},showAt:function(b){var a=this;a.lastActive=new Date();a.clearTimers();a.calledFromShowAt=true;if(!a.isVisible()){this.callParent(arguments)}if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true);a.el.sync(true);if(a.dismissDelay&&a.autoHide!==false){a.dismissTimer=Ext.defer(a.hide,a.dismissDelay,a)}if(a.anchor){a.syncAnchor();if(!a.anchorEl.isVisible()){a.anchorEl.show()}}else{a.anchorEl.hide()}}delete a.calledFromShowAt},syncAnchor:function(){var c=this,a,b,d;switch(c.tipAnchor.charAt(0)){case"t":a="b";b="tl";d=[20+c.anchorOffset,1];break;case"r":a="l";b="tr";d=[-1,12+c.anchorOffset];break;case"b":a="t";b="bl";d=[20+c.anchorOffset,-1];break;default:a="r";b="tl";d=[1,12+c.anchorOffset];break}c.anchorEl.alignTo(c.el,a+"-"+b,d);c.anchorEl.setStyle("z-index",parseInt(c.el.getZIndex(),10)||0+1).setVisibilityMode(Ext.Element.DISPLAY)},setPagePosition:function(a,c){var b=this;b.callParent(arguments);if(b.anchor){b.syncAnchor()}},_timerNames:{},clearTimer:function(a){var b=this,d=b._timerNames,c=d[a]||(d[a]=a+"Timer"),e=b[c];if(e){clearTimeout(e);b[c]=null}},clearTimers:function(){var a=this;a.clearTimer("show");a.clearTimer("dismiss");a.clearTimer("hide")},onShow:function(){var a=this;a.callParent();a.mon(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onHide:function(){var a=this;a.callParent();a.mun(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onDocMouseDown:function(b){var a=this;if(!a.closable&&!b.within(a.el.dom)){a.disable();Ext.defer(a.doEnable,100,a)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.callParent();this.clearTimers();this.hide()},beforeDestroy:function(){var a=this;a.clearTimers();Ext.destroy(a.anchorEl);delete a.anchorEl;delete a.target;delete a.anchorTarget;delete a.triggerElement;a.callParent()},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);this.callParent()}},0,["tooltip"],["panel","component","container","box","tooltip"],{panel:true,component:true,container:true,box:true,tooltip:true},["widget.tooltip"],0,[Ext.tip,"ToolTip",Ext,"ToolTip"],0));(Ext.cmd.derive("Ext.tip.QuickTip",Ext.tip.ToolTip,{alternateClassName:"Ext.QuickTip",interceptTitles:false,title:"&#160;",tagConfig:{namespace:"data-",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor",showDelay:"qshowDelay"},initComponent:function(){var a=this;a.target=a.target||Ext.getDoc();a.targets=a.targets||{};a.callParent()},register:function(c){var h=Ext.isArray(c)?c:arguments,d=0,a=h.length,g,b,e;for(;d<a;d++){c=h[d];g=c.target;if(g){if(Ext.isArray(g)){for(b=0,e=g.length;b<e;b++){this.targets[Ext.id(g[b])]=c}}else{this.targets[Ext.id(g)]=c}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(a){var b=this,c=b.activeTarget;a=Ext.get(a).dom;if(b.isVisible()){if(c&&c.el==a){b.hide()}}else{if(c&&c.el==a){b.clearTimer("show")}}},getTipCfg:function(d){var c=d.getTarget(),b=c.title,a;if(this.interceptTitles&&b&&Ext.isString(b)){c.qtip=b;c.removeAttribute("title");d.preventDefault();return{text:b}}else{a=this.tagConfig;c=d.getTarget("["+a.namespace+a.attribute+"]");if(c){return{target:c,text:c.getAttribute(a.namespace+a.attribute)}}}},onTargetOver:function(j){var l=this,k=j.getTarget(l.delegate),a,d,b,h,m,c,o,g,q,n,p;if(l.disabled){return}l.targetXY=j.getXY();if(!k||k.nodeType!==1||k==document.documentElement||k==document.body){return}if(l.activeTarget&&((k==l.activeTarget.el)||Ext.fly(l.activeTarget.el).contains(k))){if(l.targetTextEmpty()){l.onShowVeto();delete l.activeTarget}else{l.clearTimer("hide");l.show()}return}if(k){g=l.targets;for(p in g){if(g.hasOwnProperty(p)){n=g[p];q=Ext.fly(n.target);if(q&&(q.dom===k||q.contains(k))){b=q.dom;break}}}if(b){l.activeTarget=l.targets[b.id];l.activeTarget.el=k;l.anchor=l.activeTarget.anchor;if(l.anchor){l.anchorTarget=k}a=parseInt(l.activeTarget.showDelay,10);if(a){d=l.showDelay;l.showDelay=a}l.delayShow();if(a){l.showDelay=d}return}}b=Ext.fly(k,"_quicktip-target");h=l.tagConfig;m=h.namespace;c=l.getTipCfg(j);if(c){if(c.target){k=c.target;b=Ext.fly(k,"_quicktip-target")}o=b.getAttribute(m+h.hide);l.activeTarget={el:k,text:c.text,width:+b.getAttribute(m+h.width)||null,autoHide:o!="user"&&o!=="false",title:b.getAttribute(m+h.title),cls:b.getAttribute(m+h.cls),align:b.getAttribute(m+h.align),showDelay:parseInt(b.getAttribute(m+h.showDelay),10)};l.anchor=b.getAttribute(m+h.anchor);if(l.anchor){l.anchorTarget=k}a=parseInt(l.activeTarget.showDelay,10);if(a){d=l.showDelay;l.showDelay=a}l.delayShow();if(a){l.showDelay=d}}},onTargetOut:function(g){var c=this,d=c.activeTarget,a,b;if(d&&g.within(c.activeTarget.el)&&!c.getTipCfg(g)){return}c.clearTimer("show");delete c.activeTarget;if(c.autoHide!==false){a=d&&parseInt(d.hideDelay,10);if(a){b=c.hideDelay;c.hideDelay=a}c.delayHide();if(a){c.hideDelay=b}}},targetTextEmpty:function(){var c=this,d=c.activeTarget,a=c.tagConfig,b,e;if(d){b=d.el;if(b){e=b.getAttribute(a.namespace+a.attribute);if(!e&&!c.targets[d.target]){return true}}}return false},show:function(){var b=this,a=b.fromDelayShow;if(a&&b.targetTextEmpty()){b.onShowVeto();delete b.activeTarget;return}b.callParent(arguments)},showAt:function(d){var b=this,c=b.activeTarget,e=b.header,a;if(c){if(!b.rendered){b.render(Ext.getBody());b.activeTarget=c}b.suspendLayouts();if(c.title){b.setTitle(c.title);e.show()}else{if(e){e.hide()}}b.update(c.text);b.autoHide=c.autoHide;b.dismissDelay=c.dismissDelay||b.dismissDelay;if(c.mouseOffset){d[0]+=c.mouseOffset[0];d[1]+=c.mouseOffset[1]}a=b.lastCls;if(a){b.removeCls(a);delete b.lastCls}a=c.cls;if(a){b.addCls(a);b.lastCls=a}b.setWidth(c.width);if(b.anchor){b.constrainPosition=false}else{if(c.align){d=b.getAlignToXY(c.el,c.align);b.constrainPosition=false}else{b.constrainPosition=true}}b.resumeLayouts(true)}b.callParent([d])},hide:function(){delete this.activeTarget;this.callParent()}},0,["quicktip"],["panel","component","container","box","quicktip","tooltip"],{panel:true,component:true,container:true,box:true,quicktip:true,tooltip:true},["widget.quicktip"],0,[Ext.tip,"QuickTip",Ext,"QuickTip"],0));(Ext.cmd.derive("Ext.tip.QuickTipManager",Ext.Base,{singleton:true,alternateClassName:"Ext.QuickTips",disabled:false,init:function(e,b){var d=this;if(!d.tip){if(!Ext.isReady){Ext.onReady(function(){Ext.tip.QuickTipManager.init(e,b)});return}var a=Ext.apply({disabled:d.disabled,id:"ext-quicktips-tip"},b),c=a.className,g=a.xtype;if(c){delete a.className}else{if(g){c="widget."+g;delete a.xtype}}if(e!==false){a.renderTo=document.body}d.tip=Ext.create(c||"Ext.tip.QuickTip",a);Ext.quickTipsActive=true}},destroy:function(){Ext.destroy(this.tip);this.tip=undefined},ddDisable:function(){var a=this,b=a.tip;if(b&&!a.disabled){b.disable()}},ddEnable:function(){var a=this,b=a.tip;if(b&&!a.disabled){b.enable()}},enable:function(){var a=this,b=a.tip;if(b){b.enable()}a.disabled=false},disable:function(){var a=this,b=a.tip;if(b){b.disable()}a.disabled=true},isEnabled:function(){var a=this.tip;return a!==undefined&&!a.disabled},getQuickTip:function(){return this.tip},register:function(){var a=this.tip;a.register.apply(a,arguments)},unregister:function(){var a=this.tip;a.unregister.apply(a,arguments)},tips:function(){var a=this.tip;a.register.apply(a,arguments)}},0,0,0,0,0,0,[Ext.tip,"QuickTipManager",Ext,"QuickTips"],0));(Ext.cmd.derive("Ext.app.Application",Ext.app.Controller,{scope:undefined,enableQuickTips:true,appFolder:"app",appProperty:"app",namespaces:[],autoCreateViewport:false,paths:null,onClassExtended:function(k,c,j){var b=Ext.app.Controller,d=k.prototype,m=[],e,l,a,g,h;a=c.name||k.superclass.name;h=c.appFolder||k.superclass.appFolder;if(a){c.$namespace=a;Ext.app.addNamespaces(a)}if(c.namespaces){Ext.app.addNamespaces(c.namespaces)}if(!c["paths processed"]){if(a&&h){Ext.Loader.setPath(a,h)}l=c.paths;if(l){for(g in l){if(l.hasOwnProperty(g)){Ext.Loader.setPath(g,l[g])}}}}else{delete c["paths processed"]}if(c.autoCreateViewport){b.processDependencies(d,m,a,"view",["Viewport"])}if(m.length){e=j.onBeforeCreated;j.onBeforeCreated=function(n,p){var o=Ext.Array.clone(arguments);Ext.require(m,function(){return e.apply(this,o)})}}},constructor:function(a){var b=this;b.callParent(arguments);b.doInit(b);b.initNamespace();b.initControllers();b.onBeforeLaunch();b.finishInitControllers()},initNamespace:function(){var c=this,a=c.appProperty,b;b=Ext.namespace(c.name);if(b){b.getApplication=function(){return c};if(a){if(!b[a]){b[a]=c}}}},initControllers:function(){var c=this,d=Ext.Array.from(c.controllers);c.controllers=new Ext.util.MixedCollection();for(var a=0,b=d.length;a<b;a++){c.getController(d[a])}},finishInitControllers:function(){var c=this,d,b,a;d=c.controllers.getRange();for(b=0,a=d.length;b<a;b++){d[b].finishInit(c)}},launch:Ext.emptyFn,onBeforeLaunch:function(){var b=this,e,g,d,a;if(b.enableQuickTips){b.initQuickTips()}if(b.autoCreateViewport){b.initViewport()}b.launch.call(b.scope||b);b.launched=true;b.fireEvent("launch",b);e=b.controllers.items;d=e.length;for(g=0;g<d;g++){a=e[g];a.onLaunch(b)}},getModuleClassName:function(a,b){return Ext.app.Controller.getFullName(a,b,this.name).absoluteName},initQuickTips:function(){Ext.tip.QuickTipManager.init()},initViewport:function(){var a=this.getView("Viewport");if(a){a.create()}},getController:function(b){var d=this,e=d.controllers,c,a;a=e.get(b);if(!a){c=d.getModuleClassName(b,"controller");a=Ext.create(c,{application:d,id:b});e.add(a);if(d._initialized){a.doInit(d)}}return a},getApplication:function(){return this}},1,0,0,0,0,0,[Ext.app,"Application"],0));(Ext.cmd.derive("Ext.app.domain.Controller",Ext.app.EventDomain,{singleton:true,type:"controller",idProperty:"id",constructor:function(){var a=this;a.callParent();a.monitor(Ext.app.Controller)}},1,0,0,0,0,0,[Ext.app.domain,"Controller"],0));(Ext.cmd.derive("Ext.direct.Provider",Ext.Base,{isProvider:true,constructor:function(a){var b=this;Ext.apply(b,a);Ext.applyIf(b,{id:Ext.id(null,"provider-")});b.addEvents("connect","disconnect","data","exception");b.mixins.observable.constructor.call(b,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn},1,0,0,0,["direct.provider"],[["observable",Ext.util.Observable]],[Ext.direct,"Provider"],0));(Ext.cmd.derive("Ext.app.domain.Direct",Ext.app.EventDomain,{singleton:true,type:"direct",idProperty:"id",constructor:function(){var a=this;a.callParent();a.monitor(Ext.direct.Provider)}},1,0,0,0,0,0,[Ext.app.domain,"Direct"],0));(Ext.cmd.derive("Ext.button.Split",Ext.button.Button,{alternateClassName:"Ext.SplitButton",arrowCls:"split",split:true,initComponent:function(){this.callParent();this.addEvents("arrowclick")},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},onClick:function(c,a){var b=this;c.preventDefault();if(!b.disabled){if(b.overMenuTrigger){b.maybeShowMenu();b.fireEvent("arrowclick",b,c);if(b.arrowHandler){b.arrowHandler.call(b.scope||b,b,c)}}else{b.doToggle();b.fireHandler(c)}}}},0,["splitbutton"],["button","component","box","splitbutton"],{button:true,component:true,box:true,splitbutton:true},["widget.splitbutton"],0,[Ext.button,"Split",Ext,"SplitButton"],0));(Ext.cmd.derive("Ext.button.Cycle",Ext.button.Split,{alternateClassName:"Ext.CycleButton",getButtonText:function(b){var a=this,c="";if(b&&a.showText===true){if(a.prependText){c+=a.prependText}c+=b.text;return c}return a.text},setActiveItem:function(c,a){var b=this;if(!Ext.isObject(c)){c=b.menu.getComponent(c)}if(c){if(!b.rendered){b.text=b.getButtonText(c);b.iconCls=c.iconCls;b.glyph=c.glyph}else{b.setText(b.getButtonText(c));b.setIconCls(c.iconCls);b.setGlyph(c.glyph)}b.activeItem=c;if(!c.checked){c.setChecked(true,false)}if(b.forceIcon){b.setIconCls(b.forceIcon)}if(b.forceGlyph){b.setGlyph(b.forceGlyph)}if(!a){b.fireEvent("change",b,c)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){var g=this,e=0,b,c,a,d;g.addEvents("change");if(g.changeHandler){g.on("change",g.changeHandler,g.scope||g);delete g.changeHandler}b=(g.menu.items||[]).concat(g.items||[]);g.menu=Ext.applyIf({cls:Ext.baseCSSPrefix+"cycle-menu",items:[]},g.menu);a=b.length;for(c=0;c<a;c++){d=b[c];d=Ext.applyIf({group:g.id,itemIndex:c,checkHandler:g.checkHandler,scope:g,checked:d.checked||false},d);g.menu.items.push(d);if(d.checked){e=c}}g.itemCount=g.menu.items.length;g.callParent(arguments);g.on("click",g.toggleSelected,g);g.setActiveItem(e,g);if(g.width&&g.showText){g.addCls(Ext.baseCSSPrefix+"cycle-fixed-width")}},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var c=this,a=c.menu,b;b=c.activeItem.next(":not([disabled])")||a.items.getAt(0);b.setChecked(true)}},0,["cycle"],["cycle","button","component","box","splitbutton"],{cycle:true,button:true,component:true,box:true,splitbutton:true},["widget.cycle"],0,[Ext.button,"Cycle",Ext,"CycleButton"],0));(Ext.cmd.derive("Ext.chart.Callout",Ext.Base,{constructor:function(a){if(a.callouts){a.callouts.styles=Ext.applyIf(a.callouts.styles||{},{color:"#000",font:"11px Helvetica, sans-serif"});this.callouts=Ext.apply(this.callouts||{},a.callouts);this.calloutsArray=[]}},renderCallouts:function(){if(!this.callouts){return}var v=this,m=v.items,a=v.chart.animate,u=v.callouts,h=u.styles,e=v.calloutsArray,b=v.chart.getChartStore(),s=b.getCount(),d=m.length/s,l=[],r,c,q,n,t,g,k,o;for(r=0,c=0;r<s;r++){for(q=0;q<d;q++){t=m[c];g=e[c];k=b.getAt(r);o=(!u.filter||u.filter(k));if(!o&&!g){c++;continue}if(!g){e[c]=g=v.onCreateCallout(k,t,r,o,q,c)}for(n in g){if(g[n]&&g[n].setAttributes){g[n].setAttributes(h,true)}}if(!o){for(n in g){if(g[n]){if(g[n].setAttributes){g[n].setAttributes({hidden:true},true)}else{if(g[n].setVisible){g[n].setVisible(false)}}}}}if(u&&u.renderer){u.renderer(g,k)}v.onPlaceCallout(g,k,t,r,o,a,q,c,l);l.push(g);c++}}this.hideCallouts(c)},onCreateCallout:function(g,n,e,j){var k=this,l=k.calloutsGroup,d=k.callouts,o=(d?d.styles:undefined),c=(o?o.width:0),m=(o?o.height:0),h=k.chart,b=h.surface,a={lines:false};a.lines=b.add(Ext.apply({},{type:"path",path:"M0,0",stroke:k.getLegendColor()||"#555"},o));if(d.items){a.panel=new Ext.Panel({style:"position: absolute;",width:c,height:m,items:d.items,renderTo:h.el})}return a},hideCallouts:function(b){var d=this.calloutsArray,a=d.length,e,c;while(a-->b){e=d[a];for(c in e){if(e[c]){e[c].hide(true)}}}}},1,0,0,0,0,0,[Ext.chart,"Callout"],0));(Ext.cmd.derive("Ext.draw.CompositeSprite",Ext.util.MixedCollection,{autoDestroy:false,isCompositeSprite:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("mousedown","mouseup","mouseover","mouseout","click");b.id=Ext.id(null,"ext-sprite-group-");b.callParent()},onClick:function(a){this.fireEvent("click",a)},onMouseUp:function(a){this.fireEvent("mouseup",a)},onMouseDown:function(a){this.fireEvent("mousedown",a)},onMouseOver:function(a){this.fireEvent("mouseover",a)},onMouseOut:function(a){this.fireEvent("mouseout",a)},attachEvents:function(b){var a=this;b.on({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick})},add:function(b,c){var a=this.callParent(arguments);this.attachEvents(a);return a},insert:function(a,b,c){return this.callParent(arguments)},remove:function(b){var a=this;b.un({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick});return a.callParent(arguments)},getBBox:function(){var e=0,n,j,k=this.items,g=this.length,h=Infinity,c=h,m=-h,b=h,l=-h,d,a;for(;e<g;e++){n=k[e];if(n.el&&!n.bboxExcluded){j=n.getBBox();c=Math.min(c,j.x);b=Math.min(b,j.y);m=Math.max(m,j.height+j.y);l=Math.max(l,j.width+j.x)}}return{x:c,y:b,height:m-b,width:l-c}},setAttributes:function(c,e){var d=0,b=this.items,a=this.length;for(;d<a;d++){b[d].setAttributes(c,e)}return this},hide:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].hide(d)}return this},show:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].show(d)}return this},redraw:function(){var e=this,d=0,c=e.items,b=e.getSurface(),a=e.length;if(b){for(;d<a;d++){b.renderItem(c[d])}}return e},setStyle:function(g){var c=0,b=this.items,a=this.length,e,d;for(;c<a;c++){e=b[c];d=e.el;if(d){d.setStyle(g)}}},addCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.addCls(c[d],e)}}},removeCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.removeCls(c[d],e)}}},getSurface:function(){var a=this.first();if(a){return a.surface}return null},destroy:function(){var d=this,a=d.getSurface(),c=d.autoDestroy,b;if(a){while(d.getCount()>0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}},1,0,0,0,0,[["animate",Ext.util.Animate]],[Ext.draw,"CompositeSprite"],0));(Ext.cmd.derive("Ext.draw.Surface",Ext.Base,{separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c<a;c++){if(Ext.supports[d[c]]){return Ext.create("Ext.draw.engine."+d[c],b)}}return false},save:function(a,b){b=b||{};var e={"image/png":"Image","image/jpeg":"Image","image/svg+xml":"Svg"},d=e[b.type]||"Svg",c=Ext.draw.engine[d+"Exporter"];return c.generate(a,b)}},availableAttrs:{blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,"dominant-baseline":"auto",fill:"none","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:"",height:0,hidden:false,href:"http://sencha.com/",opacity:1,path:"M0,0",radius:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"none","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank",text:"","text-anchor":"middle",title:"Ext Draw",width:0,x:0,y:0,zIndex:0},container:undefined,height:352,width:512,x:0,y:0,orderSpritesByZIndex:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.domRef=Ext.getDoc().dom;b.customAttributes={};b.addEvents("mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","click","dblclick");b.mixins.observable.constructor.call(b);b.getId();b.initGradients();b.initItems();if(b.renderTo){b.render(b.renderTo);delete b.renderTo}b.initBackground(a.background)},initSurface:Ext.emptyFn,renderItem:Ext.emptyFn,renderItems:Ext.emptyFn,setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.viewBox={x:b,y:d,width:c,height:a};this.applyViewBox()}},addCls:Ext.emptyFn,removeCls:Ext.emptyFn,setStyle:Ext.emptyFn,initGradients:function(){if(this.hasOwnProperty("gradients")){var a=this.gradients,b=this.addGradient,d,c;if(a){for(d=0,c=a.length;d<c;d++){if(b.call(this,a[d],d,c)===false){break}}}}},initItems:function(){var a=this.items;this.items=new Ext.draw.CompositeSprite();this.items.autoDestroy=true;this.groups=new Ext.draw.CompositeSprite();if(a){this.add(a)}},initBackground:function(b){var d=this,c=d.width,a=d.height,e,g;if(Ext.isString(b)){b={fill:b}}if(b){if(b.gradient){g=b.gradient;e=g.id;d.addGradient(g);d.background=d.add({type:"rect",x:0,y:0,width:c,height:a,fill:"url(#"+e+")",zIndex:-1})}else{if(b.fill){d.background=d.add({type:"rect",x:0,y:0,width:c,height:a,fill:b.fill,zIndex:-1})}else{if(b.image){d.background=d.add({type:"image",x:0,y:0,width:c,height:a,src:b.image,zIndex:-1})}}}d.background.bboxExcluded=true}},setSize:function(a,b){this.applyViewBox()},scrubAttrs:function(d){var c,b={},a={},e=d.attr;for(c in e){if(this.translateAttrs.hasOwnProperty(c)){b[this.translateAttrs[c]]=e[c];a[this.translateAttrs[c]]=true}else{if(this.availableAttrs.hasOwnProperty(c)&&!a[c]){b[c]=e[c]}}}return b},onClick:function(a){this.processEvent("click",a)},onDblClick:function(a){this.processEvent("dblclick",a)},onMouseUp:function(a){this.processEvent("mouseup",a)},onMouseDown:function(a){this.processEvent("mousedown",a)},onMouseOver:function(a){this.processEvent("mouseover",a)},onMouseOut:function(a){this.processEvent("mouseout",a)},onMouseMove:function(a){this.fireEvent("mousemove",a)},onMouseEnter:Ext.emptyFn,onMouseLeave:Ext.emptyFn,addGradient:Ext.emptyFn,add:function(){var b=Array.prototype.slice.call(arguments),e,j=b.length>1,a,d,c,h,g;if(j||Ext.isArray(b[0])){a=j?b:b[0];d=[];for(c=0,h=a.length;c<h;c++){g=a[c];g=this.add(g);d.push(g)}return d}e=this.prepareItems(b[0],true)[0];this.insertByZIndex(e);this.onAdd(e);return e},insertByZIndex:function(k){var g=this,d=g.items.items,c=d.length,l=Math.ceil,h=k.attr.zIndex,j=c,b=j-1,e=0,a;if(g.orderSpritesByZIndex&&c&&h<d[b].attr.zIndex){while(e<=b){j=l((e+b)/2);a=d[j].attr.zIndex;if(a>h){b=j-1}else{if(a<h){e=j+1}else{break}}}while(j<c&&d[j].attr.zIndex<=h){j++}}g.items.insert(j,k);return j},onAdd:function(d){var g=d.group,b=d.draggable,a,e,c;if(g){a=[].concat(g);e=a.length;for(c=0;c<e;c++){g=a[c];this.getGroup(g).add(d)}delete d.group}if(b){d.initDraggable()}},remove:function(b,e){if(b){this.items.remove(b);var a=[].concat(this.groups.items),d=a.length,c;for(c=0;c<d;c++){a[c].remove(b)}b.onRemove();if(e===true){b.destroy()}}},removeAll:function(d){var a=this.items.items,c=a.length,b;for(b=c-1;b>-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,j,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;j=h/b;c=a/k;l=Math.min(c,j);if(k*l<a){g-=(a-k*l)/2/l}if(b*l<h){e-=(h-b*l)/2/l}d.viewBoxShift={dx:-g,dy:-e,scale:l};if(d.background){d.background.setAttributes(Ext.apply({},{x:g,y:e,width:a/l,height:h/l},{hidden:false}),true)}}else{if(d.background&&a&&h){d.background.setAttributes(Ext.apply({x:0,y:0,width:a,height:h},{hidden:false}),true)}}},getBBox:function(a,b){var c=this["getPath"+a.type](a);if(b){a.bbox.plain=a.bbox.plain||Ext.draw.Draw.pathDimensions(c);return a.bbox.plain}if(a.dirtyTransform){this.applyTransformations(a,true)}a.bbox.transform=a.bbox.transform||Ext.draw.Draw.pathDimensions(Ext.draw.Draw.mapPath(c,a.matrix));return a.bbox.transform},transformToViewBox:function(a,d){if(this.viewBoxShift){var c=this,b=c.viewBoxShift;return[a/b.scale-b.dx,d/b.scale-b.dy]}else{return[a,d]}},applyTransformations:function(b,d){if(b.type=="text"){b.bbox.transform=0;this.transform(b,false)}b.dirtyTransform=false;var c=this,a=b.attr;if(a.translation.x!=null||a.translation.y!=null){c.translate(b)}if(a.scaling.x!=null||a.scaling.y!=null){c.scale(b)}if(a.rotation.degrees!=null){c.rotate(b)}b.bbox.transform=0;this.transform(b,d);b.transformations=[]},rotate:function(a){var e,b=a.attr.rotation.degrees,d=a.attr.rotation.x,c=a.attr.rotation.y;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(a,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}a.transformations.push({type:"rotate",degrees:b,x:d,y:c})},translate:function(b){var a=b.attr.translation.x||0,c=b.attr.translation.y||0;b.transformations.push({type:"translate",x:a,y:c})},scale:function(b){var e,a=b.attr.scaling.x||1,g=b.attr.scaling.y||1,d=b.attr.scaling.centerX,c=b.attr.scaling.centerY;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(b,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}b.transformations.push({type:"scale",x:a,y:g,centerX:d,centerY:c})},rectPath:function(a,e,b,c,d){if(d){return[["M",a+d,e],["l",b-d*2,0],["a",d,d,0,0,1,d,d],["l",0,c-d*2],["a",d,d,0,0,1,-d,d],["l",d*2-b,0],["a",d,d,0,0,1,-d,-d],["l",0,d*2-c],["a",d,d,0,0,1,d,-d],["z"]]}return[["M",a,e],["l",b,0],["l",0,c],["l",-b,0],["z"]]},ellipsePath:function(a,d,c,b){if(b==null){b=c}return[["M",a,d],["m",0,-b],["a",c,b,0,1,1,0,2*b],["a",c,b,0,1,1,0,-2*b],["z"]]},getPathpath:function(a){return a.attr.path},getPathcircle:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radius,b.radius)},getPathellipse:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radiusX||(b.width/2)||0,b.radiusY||(b.height/2)||0)},getPathrect:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width||0,b.height||0,b.r||0)},getPathimage:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width,b.height)},getPathtext:function(a){var b=this.getBBoxText(a);return this.rectPath(b.x,b.y,b.width,b.height)},createGroup:function(b){var a=this.groups.get(b);if(!a){a=new Ext.draw.CompositeSprite({surface:this});a.id=b||Ext.id(null,"ext-surface-group-");this.groups.add(a)}return a},getGroup:function(b){var a;if(typeof b=="string"){a=this.groups.get(b);if(!a){a=this.createGroup(b)}}else{a=b}return a},prepareItems:function(a,c){a=[].concat(a);var e,b,d;for(b=0,d=a.length;b<d;b++){e=a[b];if(!(e instanceof Ext.draw.Sprite)){e.surface=this;a[b]=this.createItem(e)}else{e.surface=this}}return a},setText:Ext.emptyFn,createItem:Ext.emptyFn,getId:function(){return this.id||(this.id=Ext.id(null,"ext-surface-"))},destroy:function(){var a=this;delete a.domRef;if(a.background){a.background.destroy()}a.removeAll(true);Ext.destroy(a.groups.items)}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.draw,"Surface"],0));(Ext.cmd.derive("Ext.layout.component.Draw",Ext.layout.component.Auto,{setHeightInDom:true,setWidthInDom:true,type:"draw",measureContentWidth:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!c.viewBox){if(c.autoSize){return d.width+a.width}else{return d.x+d.width+a.width}}else{if(b.heightModel.shrinkWrap){return a.width}else{return d.width/d.height*(b.getProp("contentHeight")-a.height)+a.width}}},measureContentHeight:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!b.target.viewBox){if(c.autoSize){return d.height+a.height}else{return d.y+d.height+a.height}}else{if(b.widthModel.shrinkWrap){return a.height}else{return d.height/d.width*(b.getProp("contentWidth")-a.width)+a.height}}},getBBox:function(a){var b=a.surfaceBBox;if(!b){b=a.target.surface.items.getBBox();if(b.width===-Infinity&&b.height===-Infinity){b.width=b.height=b.x=b.y=0}a.surfaceBBox=b}return b},publishInnerWidth:function(b,a){b.setContentWidth(a-b.getFrameInfo().width,true)},publishInnerHeight:function(b,a){b.setContentHeight(a-b.getFrameInfo().height,true)},finishedLayout:function(c){var b=c.props,a=c.getPaddingInfo();this.owner.setSurfaceSize(b.contentWidth-a.width,b.contentHeight-a.height);this.callParent(arguments)}},0,0,0,0,["layout.draw"],0,[Ext.layout.component,"Draw"],0));(Ext.cmd.derive("Ext.draw.Component",Ext.Component,{enginePriority:["Svg","Vml"],baseCls:Ext.baseCSSPrefix+"surface",componentLayout:"draw",viewBox:true,shrinkWrap:3,autoSize:false,initComponent:function(){this.callParent(arguments);this.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave","click","dblclick")},onRender:function(){var d=this,k=d.viewBox,b=d.autoSize,h,c,a,j,g,e;d.callParent(arguments);if(d.createSurface()!==false){c=d.surface.items;if(k||b){h=c.getBBox();a=h.width;j=h.height;g=h.x;e=h.y;if(d.viewBox){d.surface.setViewBox(g,e,a,j)}else{d.autoSizeSurface()}}}},autoSizeSurface:function(){var a=this.surface.items.getBBox();this.setSurfaceSize(a.width,a.height)},setSurfaceSize:function(b,a){this.surface.setSize(b,a);if(this.autoSize){var c=this.surface.items.getBBox();this.surface.setViewBox(c.x,c.y-(+Ext.isOpera),b,a)}},createSurface:function(){var d=this,b=Ext.applyIf({renderTo:d.el,height:d.height,width:d.width,items:d.items},d.initialConfig),a;delete b.listeners;if(!b.gradients){b.gradients=d.gradients}a=Ext.draw.Surface.create(b,d.enginePriority);if(!a){return false}d.surface=a;function c(e){return function(g){d.fireEvent(e,g)}}a.on({scope:d,mouseup:c("mouseup"),mousedown:c("mousedown"),mousemove:c("mousemove"),mouseenter:c("mouseenter"),mouseleave:c("mouseleave"),click:c("click"),dblclick:c("dblclick")})},onDestroy:function(){Ext.destroy(this.surface);this.callParent(arguments)}},0,["draw"],["draw","component","box"],{draw:true,component:true,box:true},["widget.draw"],0,[Ext.draw,"Component"],0));Ext.chart=Ext.chart||{};(Ext.cmd.derive("Ext.chart.theme.Theme",Ext.Base,(function(){(function(){Ext.chart.theme=function(c,b){c=c||{};var m=0,p=Ext.Date.now(),j,a,k,r,s,g,o,q,n=[],e,h;if(c.baseColor){e=Ext.draw.Color.fromString(c.baseColor);h=e.getHSL()[2];if(h<0.15){e=e.getLighter(0.3)}else{if(h<0.3){e=e.getLighter(0.15)}else{if(h>0.85){e=e.getDarker(0.3)}else{if(h>0.7){e=e.getDarker(0.15)}}}}c.colors=[e.getDarker(0.3).toString(),e.getDarker(0.15).toString(),e.toString(),e.getLighter(0.15).toString(),e.getLighter(0.3).toString()];delete c.baseColor}if(c.colors){a=c.colors.slice();s=b.markerThemes;r=b.seriesThemes;j=a.length;b.colors=a;for(;m<j;m++){k=a[m];o=s[m]||{};g=r[m]||{};o.fill=g.fill=o.stroke=g.stroke=k;s[m]=o;r[m]=g}b.markerThemes=s.slice(0,j);b.seriesThemes=r.slice(0,j)}for(q in b){if(q in c){if(Ext.isObject(c[q])&&Ext.isObject(b[q])){Ext.apply(b[q],c[q])}else{b[q]=c[q]}}}if(c.useGradients){a=b.colors||(function(){var d=[];for(m=0,r=b.seriesThemes,j=r.length;m<j;m++){d.push(r[m].fill||r[m].stroke)}return d}());for(m=0,j=a.length;m<j;m++){e=Ext.draw.Color.fromString(a[m]);if(e){k=e.getDarker(0.1).toString();e=e.toString();q="theme-"+e.substr(1)+"-"+k.substr(1)+"-"+p;n.push({id:q,angle:45,stops:{0:{color:e.toString()},100:{color:k.toString()}}});a[m]="url(#"+q+")"}}b.gradients=n;b.colors=a}Ext.apply(this,b)}}());return{theme:"Base",themeAttrs:false,initTheme:function(e){var d=this,b=Ext.chart.theme,c,a;if(e){e=e.split(":");for(c in b){if(c==e[0]){a=e[1]=="gradients";d.themeAttrs=new b[c]({useGradients:a});if(a){d.gradients=d.themeAttrs.gradients}if(d.themeAttrs.background){d.background=d.themeAttrs.background}return}}}}}})(),0,0,0,0,0,0,[Ext.chart.theme,"Theme"],0));(Ext.cmd.derive("Ext.chart.MaskLayer",Ext.Component,{constructor:function(a){a=Ext.apply(a||{},{style:"position:absolute;background-color:#ff9;cursor:crosshair;opacity:0.5;border:1px solid #00f;"});this.callParent([a])},initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave")},initDraggable:function(){this.callParent(arguments);this.dd.onStart=function(c){var b=this,a=b.comp;this.startPosition=a.getPosition(true);if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}}}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.chart,"MaskLayer"],0));(Ext.cmd.derive("Ext.chart.Mask",Ext.Base,{constructor:function(a){var b=this;b.addEvents("select");if(a){Ext.apply(b,a)}if(b.enableMask){b.on("afterrender",function(){var c=new Ext.chart.MaskLayer({renderTo:b.el,hidden:true});c.el.on({mousemove:function(d){b.onMouseMove(d)},mouseup:function(d){b.onMouseUp(d)}});c.initDraggable();b.maskType=b.mask;b.mask=c;b.maskSprite=b.surface.add({type:"path",path:["M",0,0],zIndex:1001,opacity:0.6,hidden:true,stroke:"#00f",cursor:"crosshair"})},b,{single:true})}},onMouseUp:function(c){var a=this,d=a.bbox||a.chartBBox,b;a.maskMouseDown=false;a.mouseDown=false;if(a.mouseMoved){a.handleMouseEvent(c);a.mouseMoved=false;b=a.maskSelection;a.fireEvent("select",a,{x:b.x-d.x,y:b.y-d.y,width:b.width,height:b.height})}},onMouseDown:function(a){this.handleMouseEvent(a)},onMouseMove:function(a){this.handleMouseEvent(a)},handleMouseEvent:function(d){var h=this,t=h.maskType,p=h.bbox||h.chartBBox,m=p.x,k=p.y,l=Math,c=l.floor,s=l.abs,b=l.min,j=l.max,o=c(k+p.height),a=c(m+p.width),q=d.getPageX()-h.el.getX(),n=d.getPageY()-h.el.getY(),g=h.maskMouseDown,r;q=j(q,m);n=j(n,k);q=b(q,a);n=b(n,o);if(d.type==="mousedown"){h.mouseDown=true;h.mouseMoved=false;h.maskMouseDown={x:q,y:n}}else{h.mouseMoved=h.mouseDown;if(g&&h.mouseDown){if(t=="horizontal"){n=k;g.y=o}else{if(t=="vertical"){q=m;g.x=a}}a=g.x-q;o=g.y-n;r=["M",q,n,"l",a,0,0,o,-a,0,"z"];h.maskSelection={x:(a>0?q:q+a)+h.el.getX(),y:(o>0?n:n+o)+h.el.getY(),width:s(a),height:s(o)};h.mask.updateBox(h.maskSelection);h.mask.show();h.maskSprite.setAttributes({hidden:true},true)}else{if(t=="horizontal"){r=["M",q,k,"L",q,o]}else{if(t=="vertical"){r=["M",m,n,"L",a,n]}else{r=["M",q,k,"L",q,o,"M",m,n,"L",a,n]}}h.maskSprite.setAttributes({path:r,"stroke-width":t===true?1:1,hidden:false},true)}}},onMouseLeave:function(b){var a=this;a.mouseMoved=false;a.mouseDown=false;a.maskMouseDown=false;a.mask.hide();a.maskSprite.hide(true)}},1,0,0,0,0,0,[Ext.chart,"Mask"],0));(Ext.cmd.derive("Ext.chart.Navigation",Ext.Base,{setZoom:function(p){var t=this,o=t.axes.items,r,m,c,a=t.chartBBox,u=a.width,d=a.height,g={x:p.x-t.el.getX(),y:p.y-t.el.getY(),width:p.width,height:p.height},j,n,q,b,h,l,k,e,s;for(r=0,m=o.length;r<m;r++){c=o[r];s=(c.position=="bottom"||c.position=="top");if(c.type=="Category"){if(!h){h=t.getChartStore();l=h.data.items.length}j=g;e=c.length;k=Math.round(e/l);if(s){q=(j.x?Math.floor(j.x/k)+1:0);b=(j.x+j.width)/k}else{q=(j.y?Math.floor(j.y/k)+1:0);b=(j.y+j.height)/k}}else{j={x:g.x/u,y:g.y/d,width:g.width/u,height:g.height/d};n=c.calcEnds();if(s){q=(n.to-n.from)*j.x+n.from;b=(n.to-n.from)*j.width+q}else{b=(n.to-n.from)*(1-j.y)+n.from;q=b-(n.to-n.from)*j.height}}c.minimum=q;c.maximum=b;if(s){if(c.doConstrain&&t.maskType!="vertical"){c.doConstrain()}}else{if(c.doConstrain&&t.maskType!="horizontal"){c.doConstrain()}}}t.redraw(false)},restoreZoom:function(){var e=this,b=e.axes.items,a,d,c;e.setSubStore(null);for(a=0,d=b.length;a<d;a++){c=b[a];delete c.minimum;delete c.maximum}e.redraw(false)}},0,0,0,0,0,0,[Ext.chart,"Navigation"],0));(Ext.cmd.derive("Ext.chart.Shape",Ext.Base,{singleton:true,circle:function(a,b){return a.add(Ext.apply({type:"circle",x:b.x,y:b.y,stroke:null,radius:b.radius},b))},line:function(a,b){return a.add(Ext.apply({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius/5},b))},square:function(a,b){return a.add(Ext.applyIf({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius,radius:null},b))},triangle:function(a,b){b.radius*=1.75;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(b.x,",",b.y,"m0-",b.radius*0.58,"l",b.radius*0.5,",",b.radius*0.87,"-",b.radius,",0z")},b))},diamond:function(a,c){var b=c.radius;b*=1.5;return a.add(Ext.apply({type:"path",stroke:null,path:["M",c.x,c.y-b,"l",b,b,-b,b,-b,-b,b,-b,"z"]},c))},cross:function(a,c){var b=c.radius;b=b/1.7;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b,",",c.y,"l",[-b,-b,b,-b,b,b,b,-b,b,b,-b,b,b,b,-b,b,-b,-b,-b,b,-b,-b,"z"])},c))},plus:function(a,c){var b=c.radius/1.3;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b/2,",",c.y-b/2,"l",[0,-b,b,0,0,b,b,0,0,b,-b,0,0,b,-b,0,0,-b,-b,0,0,-b,"z"])},c))},arrow:function(a,c){var b=c.radius;return a.add(Ext.apply({type:"path",path:"M".concat(c.x-b*0.7,",",c.y-b*0.4,"l",[b*0.6,0,0,-b*0.4,b,b*0.8,-b,b*0.8,0,-b*0.4,-b*0.6,0],"z")},c))},drop:function(b,a,g,e,c,d){c=c||30;d=d||0;b.add({type:"path",path:["M",a,g,"l",c,0,"A",c*0.4,c*0.4,0,1,0,a+c*0.7,g-c*0.7,"z"],fill:"#000",stroke:"none",rotate:{degrees:22.5-d,x:a,y:g}});d=(d+90)*Math.PI/180;b.add({type:"text",x:a+c*Math.sin(d)-10,y:g+c*Math.cos(d)+5,text:e,"font-size":c*12/40,stroke:"none",fill:"#fff"})}},0,0,0,0,0,0,[Ext.chart,"Shape"],0));(Ext.cmd.derive("Ext.chart.LegendItem",Ext.draw.CompositeSprite,{hiddenSeries:false,label:undefined,x:0,y:0,zIndex:500,boldRe:/bold\s\d{1,}.*/i,constructor:function(a){this.callParent(arguments);this.createLegend(a)},createLegend:function(b){var d=this,c=d.series,a=b.yFieldIndex;d.label=d.createLabel(b);d.createSeriesMarkers(b);d.setAttributes({hidden:false},true);d.yFieldIndex=a;d.on("mouseover",d.onMouseOver,d);d.on("mouseout",d.onMouseOut,d);d.on("mousedown",d.onMouseDown,d);if(!c.visibleInLegend(a)){d.hiddenSeries=true;d.label.setAttributes({opacity:0.5},true)}d.updatePosition({x:0,y:0})},getLabelText:function(){var d=this,c=d.series,a=d.yFieldIndex;function b(e){var g=c[e];return(Ext.isArray(g)?g[a]:g)}return b("title")||b("yField")},createLabel:function(a){var c=this,b=c.legend;return c.add("label",c.surface.add({type:"text",x:20,y:0,zIndex:(c.zIndex||0)+2,fill:b.labelColor,font:b.labelFont,text:c.getLabelText(),style:{cursor:"pointer"}}))},createSeriesMarkers:function(c){var j=this,g=c.yFieldIndex,e=j.series,d=e.type,a=j.surface,h=j.zIndex;if(d==="line"||d==="scatter"){if(d==="line"){var k=Ext.apply(e.seriesStyle,e.style);j.drawLine(0.5,0.5,16.5,0.5,h,k,g)}if(e.showMarkers||d==="scatter"){var b=Ext.apply(e.markerStyle,e.markerConfig||{},{fill:e.getLegendColor(g)});j.drawMarker(8.5,0.5,h,b)}}else{j.drawFilledBox(12,12,h,g)}},drawLine:function(j,g,k,h,d,l,c){var e=this,a=e.surface,b=e.series;return e.add("line",a.add({type:"path",path:"M"+j+","+g+"L"+k+","+h,zIndex:(d||0)+2,"stroke-width":b.lineWidth,"stroke-linejoin":"round","stroke-dasharray":b.dash,stroke:l.stroke||b.getLegendColor(c)||"#000",style:{cursor:"pointer"}}))},drawMarker:function(b,h,g,e){var d=this,a=d.surface,c=d.series;return d.add("marker",Ext.chart.Shape[e.type](a,{fill:e.fill,x:b,y:h,zIndex:(g||0)+2,radius:e.radius||e.size,style:{cursor:"pointer"}}))},drawFilledBox:function(e,b,h,c){var g=this,a=g.surface,d=g.series;return g.add("box",a.add({type:"rect",zIndex:(h||0)+2,x:0,y:0,width:e,height:b,fill:d.getLegendColor(c),style:{cursor:"pointer"}}))},onMouseOver:function(){var a=this;a.label.setStyle({"font-weight":"bold"});a.series._index=a.yFieldIndex;a.series.highlightItem()},onMouseOut:function(){var b=this,a=b.legend,c=b.boldRe;b.label.setStyle({"font-weight":a.labelFont&&c.test(a.labelFont)?"bold":"normal"});b.series._index=b.yFieldIndex;b.series.unHighlightItem()},onMouseDown:function(){var b=this,a=b.yFieldIndex;if(!b.hiddenSeries){b.series.hideAll(a);b.label.setAttributes({opacity:0.5},true)}else{b.series.showAll(a);b.label.setAttributes({opacity:1},true)}b.hiddenSeries=!b.hiddenSeries;b.legend.chart.redraw()},updatePosition:function(c){var g=this,a=g.items,e=a.length,b=0,d;if(!c){c=g.legend}for(;b<e;b++){d=a[b];switch(d.type){case"text":d.setAttributes({x:20+c.x+g.x,y:c.y+g.y},true);break;case"rect":d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y-6}},true);break;default:d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y}},true)}}}},1,0,0,0,0,0,[Ext.chart,"LegendItem"],0));(Ext.cmd.derive("Ext.chart.Legend",Ext.Base,{visible:true,update:true,position:"bottom",x:0,y:0,labelColor:"#000",labelFont:"12px Helvetica, sans-serif",boxStroke:"#000",boxStrokeWidth:1,boxFill:"#FFF",itemSpacing:10,padding:5,width:0,height:0,boxZIndex:100,constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.items=[];b.isVertical=("left|right|float".indexOf(b.position)!==-1);b.origX=b.x;b.origY=b.y},create:function(){var e=this,a=e.chart.series.items,c,d,b;e.createBox();if(e.rebuild!==false){e.createItems()}if(!e.created&&e.isDisplayed()){e.created=true;for(c=0,d=a.length;c<d;c++){b=a[c];b.on("titlechange",e.redraw,e)}}},redraw:function(){var a=this;a.create();a.updatePosition()},isDisplayed:function(){return this.visible&&this.chart.series.findIndex("showInLegend",true)!==-1},createItems:function(){var h=this,d=h.chart.series.items,g=h.items,e,c,l,a,k,b,m;h.removeItems();for(c=0,l=d.length;c<l;c++){b=d[c];if(b.showInLegend){e=[].concat(b.yField);for(a=0,k=e.length;a<k;a++){m=h.createLegendItem(b,a);g.push(m)}}}h.alignItems()},removeItems:function(){var d=this,b=d.items,a=b?b.length:0,c;if(a){for(c=0;c<a;c++){b[c].destroy()}}b.length=[]},alignItems:function(){var e=this,g=e.padding,a=e.isVertical,k=Math.floor,b,h,j,c,d;b=e.updateItemDimensions();h=b.maxWidth;j=b.maxHeight;c=b.totalWidth;d=b.totalHeight;e.width=k((a?h:c)+g*2);e.height=k((a?d:j)+g*2)},updateItemDimensions:function(){var s=this,j=s.items,g=s.padding,t=s.itemSpacing,p=0,k=0,d=0,r=0,b=s.isVertical,c=Math.floor,u=Math.max,e=0,o,n,q,a,m,h;for(o=0,n=j.length;o<n;o++){q=j[o];a=q.getBBox();m=a.width;h=a.height;e=(o===0?0:t);q.x=g+c(b?0:d+e);q.y=g+c(b?r+e:0)+h/2;d+=e+m;r+=e+h;p=u(p,m);k=u(k,h)}return{totalWidth:d,totalHeight:r,maxWidth:p,maxHeight:k}},createLegendItem:function(b,a){var c=this;return new Ext.chart.LegendItem({legend:c,series:b,surface:c.chart.surface,yFieldIndex:a})},getBBox:function(){var a=this;return{x:Math.round(a.x)-a.boxStrokeWidth/2,y:Math.round(a.y)-a.boxStrokeWidth/2,width:a.width+a.boxStrokeWidth,height:a.height+a.boxStrokeWidth}},createBox:function(){var b=this,a,c;if(b.boxSprite){b.boxSprite.destroy()}c=b.getBBox();if(isNaN(c.width)||isNaN(c.height)){b.boxSprite=false;return}a=b.boxSprite=b.chart.surface.add(Ext.apply({type:"rect",stroke:b.boxStroke,"stroke-width":b.boxStrokeWidth,fill:b.boxFill,zIndex:b.boxZIndex},c));a.redraw()},calcPosition:function(){var j=this,l,k,n=j.width,m=j.height,h=j.chart,o=h.chartBBox,b=h.insetPadding,d=o.width-(b*2),c=o.height-(b*2),g=o.x+b,e=o.y+b,a=h.surface,p=Math.floor;switch(j.position){case"left":l=b;k=p(e+c/2-m/2);break;case"right":l=p(a.width-n)-b;k=p(e+c/2-m/2);break;case"top":l=p(g+d/2-n/2);k=b;break;case"bottom":l=p(g+d/2-n/2);k=p(a.height-m)-b;break;default:l=p(j.origX)+b;k=p(j.origY)+b}return{x:l,y:k}},updatePosition:function(){var d=this,b=d.items,g,c,a,e;if(d.isDisplayed()){g=d.calcPosition();d.x=g.x;d.y=g.y;for(c=0,a=b.length;c<a;c++){b[c].updatePosition()}e=d.getBBox();if(isNaN(e.width)||isNaN(e.height)){if(d.boxSprite){d.boxSprite.hide(true)}}else{if(!d.boxSprite){d.createBox()}d.boxSprite.setAttributes(e,true);d.boxSprite.show(true)}}},toggle:function(b){var e=this,d=0,c=e.items,a=c.length;if(e.boxSprite){if(b){e.boxSprite.show(true)}else{e.boxSprite.hide(true)}}for(;d<a;++d){if(b){c[d].show(true)}else{c[d].hide(true)}}e.visible=b}},1,0,0,0,0,0,[Ext.chart,"Legend"],0));(Ext.cmd.derive("Ext.chart.theme.Base",Ext.Base,{constructor:function(a){var b=Ext.identityFn;Ext.chart.theme.call(this,a,{background:false,axis:{stroke:"#444","stroke-width":1},axisLabelTop:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelRight:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelBottom:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelLeft:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisTitleTop:{font:"bold 18px Arial",fill:"#444"},axisTitleRight:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},axisTitleBottom:{font:"bold 18px Arial",fill:"#444"},axisTitleLeft:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},series:{"stroke-width":0},seriesLabel:{font:"12px Arial",fill:"#333"},marker:{stroke:"#555",radius:3,size:3},colors:["#94ae0a","#115fa6","#a61120","#ff8809","#ffd13e","#a61187","#24ad9a","#7c7474","#a66111"],seriesThemes:[{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#a66111"}],markerThemes:[{fill:"#115fa6",type:"circle"},{fill:"#94ae0a",type:"cross"},{fill:"#115fa6",type:"plus"},{fill:"#94ae0a",type:"circle"},{fill:"#a61120",type:"cross"}]})}},1,0,0,0,0,0,[Ext.chart.theme,"Base"],function(){var c=["#b1da5a","#4ce0e7","#e84b67","#da5abd","#4d7fe6","#fec935"],k=["Green","Sky","Red","Purple","Blue","Yellow"],h=0,g=0,b=c.length,a=Ext.chart.theme,d=[["#f0a50a","#c20024","#2044ba","#810065","#7eae29"],["#6d9824","#87146e","#2a9196","#d39006","#1e40ac"],["#fbbc29","#ce2e4e","#7e0062","#158b90","#57880e"],["#ef5773","#fcbd2a","#4f770d","#1d3eaa","#9b001f"],["#7eae29","#fdbe2a","#910019","#27b4bc","#d74dbc"],["#44dce1","#0b2592","#996e05","#7fb325","#b821a1"]],e=d.length;for(;h<b;h++){a[k[h]]=(function(j){return Ext.extend(a.Base,{constructor:function(l){a.Base.prototype.constructor.call(this,Ext.apply({baseColor:j},l))}})}(c[h]))}for(h=0;h<e;h++){a["Category"+(h+1)]=(function(j){return Ext.extend(a.Base,{constructor:function(l){a.Base.prototype.constructor.call(this,Ext.apply({colors:j},l))}})}(d[h]))}}));(Ext.cmd.derive("Ext.chart.Chart",Ext.draw.Component,{viewBox:false,animate:false,legend:false,insetPadding:10,background:false,constructor:function(b){var c=this,a;b=Ext.apply({},b);c.initTheme(b.theme||c.theme);if(c.gradients){Ext.apply(b,{gradients:c.gradients})}if(c.background){Ext.apply(b,{background:c.background})}if(b.animate){a={easing:"ease",duration:500};if(Ext.isObject(b.animate)){b.animate=Ext.applyIf(b.animate,a)}else{b.animate=a}}c.mixins.observable.constructor.call(c,b);if(b.enableMask){c.mixins.mask.constructor.call(c)}c.mixins.navigation.constructor.call(c);c.callParent([b])},getChartStore:function(){return this.substore||this.store},initComponent:function(){var b=this,c,a;b.callParent();b.addEvents("itemmousedown","itemmouseup","itemmouseover","itemmouseout","itemclick","itemdblclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");Ext.applyIf(b,{zoom:{width:1,height:1,x:0,y:0}});b.maxGutters={left:0,right:0,bottom:0,top:0};b.store=Ext.data.StoreManager.lookup(b.store);c=b.axes;b.axes=new Ext.util.MixedCollection(false,function(d){return d.position});if(c){b.axes.addAll(c)}a=b.series;b.series=new Ext.util.MixedCollection(false,function(d){return d.seriesId||(d.seriesId=Ext.id(null,"ext-chart-series-"))});if(a){b.series.addAll(a)}if(b.legend!==false){b.legend=new Ext.chart.Legend(Ext.applyIf({chart:b},b.legend))}b.on({mousemove:b.onMouseMove,mouseleave:b.onMouseLeave,mousedown:b.onMouseDown,mouseup:b.onMouseUp,click:b.onClick,dblclick:b.onDblClick,scope:b})},afterComponentLayout:function(c,a,b,e){var d=this;if(Ext.isNumber(c)&&Ext.isNumber(a)){if(c!==b||a!==e){d.curWidth=c;d.curHeight=a;d.redraw(true);d.needsRedraw=false}else{if(d.needsRedraw){d.redraw();d.needsRedraw=false}}}this.callParent(arguments)},redraw:function(c){var k=this,j=k.series.items,g=j.length,b=k.axes.items,d=b.length,a=0,h,n,m=k.chartBBox={x:0,y:0,height:k.curHeight,width:k.curWidth},l=k.legend,e;k.surface.setSize(m.width,m.height);for(h=0;h<g;h++){n=j[h];if(!n.initialized){e=k.initializeSeries(n,h,a)}else{e=n}e.onRedraw();if(Ext.isArray(n.yField)){a+=n.yField.length}else{++a}}for(h=0;h<d;h++){n=b[h];if(!n.initialized){k.initializeAxis(n)}}for(h=0;h<d;h++){b[h].processView()}for(h=0;h<d;h++){b[h].drawAxis(true)}if(l!==false&&l.visible){if(l.update||!l.created){l.create()}}k.alignAxes();if(l!==false&&l.visible){l.updatePosition()}k.getMaxGutters();k.resizing=!!c;for(h=0;h<d;h++){b[h].drawAxis()}for(h=0;h<g;h++){k.drawCharts(j[h])}k.resizing=false},afterRender:function(){var a=this;a.callParent(arguments);if(a.categoryNames){a.setCategoryNames(a.categoryNames)}a.bindStore(a.store,true);a.refresh();if(a.surface.engine==="Vml"){a.on("added",a.onAddedVml,a);a.mon(a.hierarchyEventSource,"added",a.onContainerAddedVml,a)}},onAddedVml:function(){this.needsRedraw=true},onContainerAddedVml:function(a){if(this.isDescendantOf(a)){this.needsRedraw=true}},getEventXY:function(d){var c=this,b=this.surface.getRegion(),h=d.getXY(),a=h[0]-b.left,g=h[1]-b.top;return[a,g]},onClick:function(a){this.handleClick("itemclick",a)},onDblClick:function(a){this.handleClick("itemdblclick",a)},handleClick:function(a,h){var k=this,g=k.getEventXY(h),d=k.series.items,b,j,c,l;for(b=0,j=d.length;b<j;b++){c=d[b];if(Ext.draw.Draw.withinBox(g[0],g[1],c.bbox)){if(c.getItemForPoint){l=c.getItemForPoint(g[0],g[1]);if(l){c.fireEvent(a,l)}}}}},onMouseDown:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseDown.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmousedown",g)}}}}},onMouseUp:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseUp.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmouseup",g)}}}}},onMouseMove:function(h){var k=this,d=k.getEventXY(h),c=k.series.items,a,j,b,n,l,g,m;if(k.enableMask){k.mixins.mask.onMouseMove.call(k,h)}for(a=0,j=c.length;a<j;a++){b=c[a];if(Ext.draw.Draw.withinBox(d[0],d[1],b.bbox)){if(b.getItemForPoint){n=b.getItemForPoint(d[0],d[1]);l=b._lastItemForPoint;g=b._lastStoreItem;m=b._lastStoreField;if(n!==l||n&&(n.storeItem!=g||n.storeField!=m)){if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}if(n){b.fireEvent("itemmouseover",n);b._lastItemForPoint=n;b._lastStoreItem=n.storeItem;b._lastStoreField=n.storeField}}}}else{l=b._lastItemForPoint;if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}}}},onMouseLeave:function(h){var g=this,a=g.series.items,c,d,b;if(g.enableMask){g.mixins.mask.onMouseLeave.call(g,h)}for(c=0,d=a.length;c<d;c++){b=a[c];delete b._lastItemForPoint}},delayRefresh:function(){var a=this;if(!a.refreshTask){a.refreshTask=new Ext.util.DelayedTask(a.refresh,a)}a.refreshTask.delay(a.refreshBuffer)},refresh:function(){var a=this;if(a.rendered&&a.curWidth!==undefined&&a.curHeight!==undefined){if(!a.isVisible(true)){if(!a.refreshPending){a.setShowListeners("mon");a.refreshPending=true}return}if(a.fireEvent("beforerefresh",a)!==false){a.redraw();a.fireEvent("refresh",a)}}},onShow:function(){var a=this;a.callParent(arguments);if(a.refreshPending){a.delayRefresh();a.setShowListeners("mun")}delete a.refreshPending},setShowListeners:function(b){var a=this;a[b](a.hierarchyEventSource,{scope:a,single:true,show:a.forceRefresh,expand:a.forceRefresh})},doRefresh:function(){this.setSubStore(null);this.refresh()},forceRefresh:function(a){var b=this;if(b.isDescendantOf(a)&&b.refreshPending){b.setShowListeners("mun");b.delayRefresh()}delete b.refreshPending},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var b=this.doRefresh,a=this.delayRefresh;return{refresh:b,add:a,bulkremove:a,update:a,clear:b}},setSubStore:function(a){this.substore=a},initializeAxis:function(b){var e=this,l=e.chartBBox,k=l.width,d=l.height,j=l.x,g=l.y,c=e.themeAttrs,a={chart:e};if(c){a.axisStyle=Ext.apply({},c.axis);a.axisLabelLeftStyle=Ext.apply({},c.axisLabelLeft);a.axisLabelRightStyle=Ext.apply({},c.axisLabelRight);a.axisLabelTopStyle=Ext.apply({},c.axisLabelTop);a.axisLabelBottomStyle=Ext.apply({},c.axisLabelBottom);a.axisTitleLeftStyle=Ext.apply({},c.axisTitleLeft);a.axisTitleRightStyle=Ext.apply({},c.axisTitleRight);a.axisTitleTopStyle=Ext.apply({},c.axisTitleTop);a.axisTitleBottomStyle=Ext.apply({},c.axisTitleBottom)}switch(b.position){case"top":Ext.apply(a,{length:k,width:d,x:j,y:g});break;case"bottom":Ext.apply(a,{length:k,width:d,x:j,y:d});break;case"left":Ext.apply(a,{length:d,width:k,x:j,y:d});break;case"right":Ext.apply(a,{length:d,width:k,x:k,y:d});break}if(!b.chart){Ext.apply(a,b);b=e.axes.replace(Ext.createByAlias("axis."+b.type.toLowerCase(),a))}else{Ext.apply(b,a)}b.initialized=true},getInsets:function(){var b=this,a=b.insetPadding;return{top:a,right:a,bottom:a,left:a}},calculateInsets:function(){var k=this,n=k.legend,j=k.axes,g=["top","right","bottom","left"],d,h,e,a,m,c,o;function b(p){var l=j.findIndex("position",p);return(l<0)?null:j.getAt(l)}d=k.getInsets();for(h=0,e=g.length;h<e;h++){a=g[h];m=(a==="left"||a==="right");c=b(a);if(n!==false){if(n.position===a){o=n.getBBox();d[a]+=(m?o.width:o.height)+k.insetPadding}}if(c&&c.bbox){o=c.bbox;d[a]+=(m?o.width:o.height)}}return d},alignAxes:function(){var g=this,a=g.axes.items,c,k,e,d,b,h,j;c=g.calculateInsets();k={x:c.left,y:c.top,width:g.curWidth-c.left-c.right,height:g.curHeight-c.top-c.bottom};g.chartBBox=k;for(e=0,d=a.length;e<d;e++){b=a[e];h=b.position;j=h==="left"||h==="right";b.x=(h==="right"?k.x+k.width:k.x);b.y=(h==="top"?k.y:k.y+k.height);b.width=(j?k.width:k.height);b.length=(j?k.height:k.width)}},initializeSeries:function(j,m,a){var k=this,g=k.themeAttrs,d,h,o,q,p,n=[],e=(j instanceof Ext.chart.series.Series).i=0,c,b;if(!j.initialized){b={chart:k,seriesId:j.seriesId};if(g){o=g.seriesThemes;p=g.markerThemes;d=Ext.apply({},g.series);h=Ext.apply({},g.marker);b.seriesStyle=Ext.apply(d,o[a%o.length]);b.seriesLabelStyle=Ext.apply({},g.seriesLabel);b.markerStyle=Ext.apply(h,p[a%p.length]);if(g.colors){b.colorArrayStyle=g.colors}else{n=[];for(c=o.length;i<c;i++){q=o[i];if(q.fill||q.stroke){n.push(q.fill||q.stroke)}}if(n.length){b.colorArrayStyle=n}}b.seriesIdx=m;b.themeIdx=a}if(e){Ext.applyIf(j,b)}else{Ext.applyIf(b,j);j=k.series.replace(Ext.createByAlias("series."+j.type.toLowerCase(),b))}}if(j.initialize){j.initialize()}j.initialized=true;return j},getMaxGutters:function(){var j=this,e=j.series.items,b,h,c,k,g=0,a=0,l=0,d=0;for(b=0,h=e.length;b<h;b++){k=e[b].getGutters();if(k){if(k.verticalAxis){l=Math.max(l,k.lower);d=Math.max(d,k.upper)}else{g=Math.max(g,k.lower);a=Math.max(a,k.upper)}}}j.maxGutters={left:g,right:a,bottom:l,top:d}},drawAxis:function(a){a.drawAxis()},drawCharts:function(a){a.triggerafterrender=false;a.drawSeries();if(!this.animate){a.fireEvent("afterrender")}},save:function(a){return Ext.draw.Surface.save(this.surface,a)},destroy:function(){Ext.destroy(this.surface);this.bindStore(null);this.callParent(arguments)}},1,["chart"],["draw","component","chart","box"],{draw:true,component:true,chart:true,box:true},["widget.chart"],[["themeManager",Ext.chart.theme.Theme],["mask",Ext.chart.Mask],["navigation",Ext.chart.Navigation],["bindable",Ext.util.Bindable],["observable",Ext.util.Observable]],[Ext.chart,"Chart"],0));(Ext.cmd.derive("Ext.chart.Highlight",Ext.Base,{highlight:false,highlightCfg:{fill:"#fdd","stroke-width":5,stroke:"#f55"},constructor:function(a){if(a.highlight&&(typeof a.highlight!=="boolean")){this.highlightCfg=Ext.merge({},this.highlightCfg,a.highlight)}},highlightItem:function(l){if(!l){return}var g=this,k=l.sprite,a=Ext.merge({},g.highlightCfg,g.highlight),d=g.chart.surface,c=g.chart.animate,b,j,h,e;if(!g.highlight||!k||k._highlighted){return}if(k._anim){k._anim.paused=true}k._highlighted=true;if(!k._defaults){k._defaults=Ext.apply({},k.attr);j={};h={};for(b in a){if(!(b in k._defaults)){k._defaults[b]=d.availableAttrs[b]}j[b]=k._defaults[b];h[b]=a[b];if(Ext.isObject(a[b])){j[b]={};h[b]={};Ext.apply(k._defaults[b],k.attr[b]);Ext.apply(j[b],k._defaults[b]);for(e in k._defaults[b]){if(!(e in a[b])){h[b][e]=j[b][e]}else{h[b][e]=a[b][e]}}for(e in a[b]){if(!(e in h[b])){h[b][e]=a[b][e]}}}}k._from=j;k._to=h;k._endStyle=h}if(c){k._anim=new Ext.fx.Anim({target:k,from:k._from,to:k._to,duration:150})}else{k.setAttributes(k._to,true)}},unHighlightItem:function(){if(!this.highlight||!this.items){return}var j=this,h=j.items,g=h.length,a=Ext.merge({},j.highlightCfg,j.highlight),c=j.chart.animate,e=0,d,b,k;for(;e<g;e++){if(!h[e]){continue}k=h[e].sprite;if(k&&k._highlighted){if(k._anim){k._anim.paused=true}d={};for(b in a){if(Ext.isObject(k._defaults[b])){d[b]=Ext.apply({},k._defaults[b])}else{d[b]=k._defaults[b]}}if(c){k._endStyle=d;k._anim=new Ext.fx.Anim({target:k,to:d,duration:150})}else{k.setAttributes(d,true)}delete k._highlighted}}},cleanHighlights:function(){if(!this.highlight){return}var d=this.group,c=this.markerGroup,b=0,a;for(a=d.getCount();b<a;b++){delete d.getAt(b)._defaults}if(c){for(a=c.getCount();b<a;b++){delete c.getAt(b)._defaults}}}},1,0,0,0,0,0,[Ext.chart,"Highlight"],0));(Ext.cmd.derive("Ext.chart.Label",Ext.Base,{colorStringRe:/url\s*\(\s*#([^\/)]+)\s*\)/,constructor:function(a){var b=this;b.label=Ext.applyIf(b.label||{},{display:"none",stackedDisplay:"none",color:"#000",field:"name",minMargin:50,font:"11px Helvetica, sans-serif",orientation:"horizontal",renderer:Ext.identityFn});if(b.label.display!=="none"){b.labelsGroup=b.chart.surface.getGroup(b.seriesId+"-labels")}},renderLabels:function(){var q=this,R=q.chart,A=R.gradients,t=q.items,M=R.animate,E=q.label,w=E.display,d=E.stackedDisplay,z=E.renderer,x=E.color,e=[].concat(E.field),s=q.labelsGroup,m=(s||0)&&s.length,b=q.chart.getChartStore(),r=b.getCount(),l=(t||0)&&t.length,H=l/r,D=(A||0)&&A.length,n=Ext.draw.Color,Q=[],p,P,J,c,C,O,L,g,h,v,y,K,S,u,U,G,F,a,B,T,I,o,N;if(w=="none"||!s){return}if(l==0){while(m--){Q.push(m)}}else{for(P=0,J=0,c=0;P<r;P++){C=0;for(O=0;O<H;O++){y=t[J];K=s.getAt(c);S=b.getAt(P);while(this.__excludes&&this.__excludes[C]){C++}if(!y&&K){K.hide(true);c++}if(y&&e[O]){if(!K){K=q.onCreateLabel(S,y,P,w);if(!K){break}}K.setAttributes({fill:String(x)},true);q.onPlaceLabel(K,S,y,P,w,M,C);c++;if(E.contrast&&y.sprite){u=y.sprite;if(M&&u._endStyle){a=u._endStyle.fill}else{if(M&&u._to){a=u._to.fill}else{a=u.attr.fill}}a=a||u.attr.fill;U=n.fromString(a);if(a&&!U){a=a.match(q.colorStringRe)[1];for(L=0;L<D;L++){p=A[L];if(p.id==a){v=0;g=0;for(h in p.stops){v++;g+=n.fromString(p.stops[h].color).getGrayscale()}G=(g/v)/255;break}}}else{G=U.getGrayscale()/255}if(K.isOutside){G=1}F=n.fromString(K.attr.fill||K.attr.color).getHSL();F[2]=G>0.5?0.2:0.8;K.setAttributes({fill:String(n.fromHSL.apply({},F))},true)}if(q.stacked&&d&&(y.totalPositiveValues||y.totalNegativeValues)){T=(y.totalPositiveValues||0);I=(y.totalNegativeValues||0);B=T+I;if(d=="total"){o=z(B)}else{if(d=="balances"){if(T==0&&I==0){o=z(0)}else{o=z(T);N=z(I)}}}if(o){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"over")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:o,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"over",M,C);c++}if(N){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"under")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:N,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"under",M,C);c++}}}J++;C++}}m=s.length;while(m>c){Q.push(c);c++}}q.hideLabels(Q)},hideLabels:function(b){var a=this.labelsGroup,c=!!b&&b.length;if(!a){return}if(c===false){c=a.getCount();while(c--){a.getAt(c).hide(true)}}else{while(c--){a.getAt(b[c]).hide(true)}}}},1,0,0,0,0,0,[Ext.chart,"Label"],0));(Ext.cmd.derive("Ext.chart.TipSurface",Ext.draw.Component,{spriteArray:false,renderFirst:true,constructor:function(a){this.callParent([a]);if(a.sprites){this.spriteArray=[].concat(a.sprites);delete a.sprites}},onRender:function(){var c=this,b=0,a=0,d,e;this.callParent(arguments);e=c.spriteArray;if(c.renderFirst&&e){c.renderFirst=false;for(a=e.length;b<a;b++){d=c.surface.add(e[b]);d.setAttributes({hidden:false},true)}}}},1,0,["draw","component","box"],{draw:true,component:true,box:true},0,0,[Ext.chart,"TipSurface"],0));(Ext.cmd.derive("Ext.chart.Tip",Ext.Base,{constructor:function(b){var c=this,a,d,e;if(b.tips){c.tipTimeout=null;c.tipConfig=Ext.apply({},b.tips,{renderer:Ext.emptyFn,constrainPosition:true,autoHide:true});c.tooltip=new Ext.tip.ToolTip(c.tipConfig);c.chart.surface.on("mousemove",c.tooltip.onMouseMove,c.tooltip);c.chart.surface.on("mouseleave",function(){c.hideTip()});if(c.tipConfig.surface){a=c.tipConfig.surface;d=a.sprites;e=new Ext.chart.TipSurface({id:"tipSurfaceComponent",sprites:d});if(a.width&&a.height){e.setSize(a.width,a.height)}c.tooltip.add(e);c.spriteTip=e}}},showTip:function(m){var e=this,n,a,c,d,l,b,k,h,j,g;if(!e.tooltip){return}clearTimeout(e.tipTimeout);n=e.tooltip;a=e.spriteTip;c=e.tipConfig;d=n.trackMouse;if(!d){n.trackMouse=true;l=m.sprite;b=l.surface;k=Ext.get(b.getId());if(k){h=k.getXY();j=h[0]+(l.attr.x||0)+(l.attr.translation&&l.attr.translation.x||0);g=h[1]+(l.attr.y||0)+(l.attr.translation&&l.attr.translation.y||0);n.targetXY=[j,g]}}if(a){c.renderer.call(n,m.storeItem,m,a.surface)}else{c.renderer.call(n,m.storeItem,m)}n.show();n.trackMouse=d},hideTip:function(a){var b=this.tooltip;if(!b){return}clearTimeout(this.tipTimeout);this.tipTimeout=setTimeout(function(){b.hide()},0)}},1,0,0,0,0,0,[Ext.chart,"Tip"],0));(Ext.cmd.derive("Ext.chart.axis.Abstract",Ext.Base,{constructor:function(a){a=a||{};var b=this,c=a.position||"left";c=c.charAt(0).toUpperCase()+c.substring(1);a.label=Ext.apply(a["axisLabel"+c+"Style"]||{},a.label||{});a.axisTitleStyle=Ext.apply(a["axisTitle"+c+"Style"]||{},a.labelTitle||{});Ext.apply(b,a);b.fields=Ext.Array.from(b.fields);this.callParent();b.labels=[];b.getId();b.labelGroup=b.chart.surface.getGroup(b.axisId+"-labels")},alignment:null,grid:false,steps:10,x:0,y:0,minValue:0,maxValue:0,getId:function(){return this.axisId||(this.axisId=Ext.id(null,"ext-axis-"))},processView:Ext.emptyFn,drawAxis:Ext.emptyFn,addDisplayAndLabels:Ext.emptyFn},1,0,0,0,0,0,[Ext.chart.axis,"Abstract"],0));(Ext.cmd.derive("Ext.chart.axis.Axis",Ext.chart.axis.Abstract,{alternateClassName:"Ext.chart.Axis",hidden:false,forceMinMax:false,dashSize:3,position:"bottom",skipFirst:false,length:0,width:0,adjustEnd:true,majorTickSteps:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},applyData:Ext.emptyFn,getRange:function(){var C=this,p=C.chart,l=p.getChartStore(),E=l.data.items,o=p.series.items,D=C.position,y,a=Ext.chart.series,u=[],t=Infinity,x=-Infinity,c=C.position==="left"||C.position==="right"||C.position==="radial",z,n,d,w,v,m=E.length,g,B={},s={},A=true,q,h,e,b,r;q=C.fields;for(w=0,n=q.length;w<n;w++){s[q[w]]=true}for(z=0,n=o.length;z<n;z++){if(o[z].seriesIsHidden){continue}if(!o[z].getAxesForXAndYFields){continue}y=o[z].getAxesForXAndYFields();if(y.xAxis&&y.xAxis!==D&&y.yAxis&&y.yAxis!==D){continue}if(a.Bar&&o[z] instanceof a.Bar&&!o[z].column){q=c?Ext.Array.from(o[z].xField):Ext.Array.from(o[z].yField)}else{q=c?Ext.Array.from(o[z].yField):Ext.Array.from(o[z].xField)}if(C.fields.length){for(w=0,d=q.length;w<d;w++){if(s[q[w]]){break}}if(w==d){continue}}if(g=o[z].stacked){if(a.Bar&&o[z] instanceof a.Bar){if(o[z].column!=c){g=false;A=false}}else{if(!c){g=false;A=false}}}if(g){h={};for(w=0;w<q.length;w++){if(A&&o[z].__excludes&&o[z].__excludes[w]){continue}if(!s[q[w]]){Ext.Logger.warn("Field `"+q[w]+"` is not included in the "+D+" axis config.")}s[q[w]]=h[q[w]]=true}u.push({fields:h,positiveValue:0,negativeValue:0})}else{if(!q||q.length==0){q=C.fields}for(w=0;w<q.length;w++){if(A&&o[z].__excludes&&o[z].__excludes[w]){continue}s[q[w]]=B[q[w]]=true}}}for(z=0;z<m;z++){e=E[z];for(v=0;v<u.length;v++){u[v].positiveValue=0;u[v].negativeValue=0}for(b in s){r=e.get(b);if(C.type=="Time"&&typeof r=="string"){r=Date.parse(r)}if(isNaN(r)){continue}if(r===undefined){r=0}else{r=Number(r)}if(B[b]){if(t>r){t=r}if(x<r){x=r}}for(v=0;v<u.length;v++){if(u[v].fields[b]){if(r>=0){u[v].positiveValue+=r;if(x<u[v].positiveValue){x=u[v].positiveValue}if(t>0){t=0}}else{u[v].negativeValue+=r;if(t>u[v].negativeValue){t=u[v].negativeValue}if(x<0){x=0}}}}}}if(!isFinite(x)){x=C.prevMax||0}if(!isFinite(t)){t=C.prevMin||0}if(typeof t==="number"){t=Ext.Number.correctFloat(t)}if(typeof x==="number"){x=Ext.Number.correctFloat(x)}if(t!=x&&(x!=Math.floor(x)||t!=Math.floor(t))){t=Math.floor(t);x=Math.floor(x)+1}if(!isNaN(C.minimum)){t=C.minimum}if(!isNaN(C.maximum)){x=C.maximum}if(t>=x){t=Math.floor(t);x=t+1}return{min:t,max:x}},calcEnds:function(){var h=this,d=h.getRange(),g=d.min,a=d.max,c,j,e,b;c=(Ext.isNumber(h.majorTickSteps)?h.majorTickSteps+1:h.steps);j=!(Ext.isNumber(h.maximum)&&Ext.isNumber(h.minimum)&&Ext.isNumber(h.majorTickSteps)&&h.majorTickSteps>0);e=Ext.draw.Draw.snapEnds(g,a,c,j);if(Ext.isNumber(h.maximum)){e.to=h.maximum;b=true}if(Ext.isNumber(h.minimum)){e.from=h.minimum;b=true}if(h.adjustMaximumByMajorUnit){e.to=Math.ceil(e.to/e.step)*e.step;b=true}if(h.adjustMinimumByMajorUnit){e.from=Math.floor(e.from/e.step)*e.step;b=true}if(b){e.steps=Math.ceil((e.to-e.from)/e.step)}h.prevMin=(g==a?0:g);h.prevMax=a;return e},drawAxis:function(N){var m=this,P,H=m.x,G=m.y,T=m.dashSize,p=m.length,I=m.position,b=(I=="left"||I=="right"),k=[],j=(m.isNumericAxis),t=m.applyData(),z=t.step,D=t.steps,F=Ext.isArray(D),h=t.from,S=t.to,g=(S-h)||1,Q,w,v,L,B=m.minorTickSteps||0,A=m.minorTickSteps||0,o=Math.max(B+1,0),n=Math.max(A+1,0),J=(I=="left"||I=="top"?-1:1),d=T*J,c=m.chart.series.items,M=c[0],q=M?M.nullGutters:m.nullGutters,O,R,r,E=0,C=0,a,K,u,s,e,l;m.from=h;m.to=S;if(m.hidden||(h>S)){return}if((F&&(D.length==0))||(!F&&isNaN(z))){return}if(F){D=Ext.Array.filter(D,function(y,x,U){return(+y>+m.from&&+y<+m.to)},this);D=Ext.Array.union([m.from],D,[m.to])}else{D=new Array();for(s=+m.from;s<+m.to;s+=z){D.push(s)}D.push(+m.to)}C=D.length;for(P=0,u=c.length;P<u;P++){if(c[P].seriesIsHidden){continue}if(!c[P].getAxesForXAndYFields){continue}K=c[P].getAxesForXAndYFields();if(!K.xAxis||!K.yAxis||(K.xAxis===I)||(K.yAxis===I)){q=c[P].getGutters();if((q.verticalAxis!==undefined)&&(q.verticalAxis!=b)){O=c[P].getPadding();if(b){q={lower:O.bottom,upper:O.top,verticalAxis:true}}else{q={lower:O.left,upper:O.right,verticalAxis:false}}}break}}if(j){m.labels=[]}if(q){if(b){w=Math.floor(H);L=["M",w+0.5,G,"l",0,-p];Q=p-(q.lower+q.upper);for(a=0;a<C;a++){v=G-q.lower-(D[a]-D[0])*Q/g;L.push("M",w,Math.floor(v)+0.5,"l",d*2,0);k.push([w,Math.floor(v)]);if(j){m.labels.push(D[a])}}}else{v=Math.floor(G);L=["M",H,v+0.5,"l",p,0];Q=p-(q.lower+q.upper);for(a=0;a<C;a++){w=H+q.lower+(D[a]-D[0])*Q/g;L.push("M",Math.floor(w)+0.5,v,"l",0,d*2+1);k.push([Math.floor(w),v]);if(j){m.labels.push(D[a])}}}}R=(b?A:B);if(Ext.isArray(R)){if(R.length==2){r=+Ext.Date.add(new Date(),R[0],R[1])-Date.now()}else{r=R[0]}}else{if(Ext.isNumber(R)&&R>0){r=z/(R+1)}}if(q&&r){for(a=0;a<C-1;a++){e=+D[a];l=+D[a+1];if(b){for(value=e+r;value<l;value+=r){v=G-q.lower-(value-D[0])*Q/g;L.push("M",w,Math.floor(v)+0.5,"l",d,0)}}else{for(value=e+r;value<l;value+=r){w=H+q.upper+(value-D[0])*Q/g;L.push("M",Math.floor(w)+0.5,v,"l",0,d+1)}}}}if(!m.axis){m.axis=m.chart.surface.add(Ext.apply({type:"path",path:L},m.axisStyle))}m.axis.setAttributes({path:L},true);m.inflections=k;if(!N&&m.grid){m.drawGrid()}m.axisBBox=m.axis.getBBox();m.drawLabel()},drawGrid:function(){var t=this,o=t.chart.surface,b=t.grid,d=b.odd,e=b.even,h=t.inflections,j=h.length-((d||e)?0:1),u=t.position,c=t.chart.maxGutters,n=t.width-2,p,q,r=1,m=[],g,a,k,l=[],s=[];if(((c.bottom!==0||c.top!==0)&&(u=="left"||u=="right"))||((c.left!==0||c.right!==0)&&(u=="top"||u=="bottom"))){r=0;j++}for(;r<j;r++){p=h[r];q=h[r-1];if(d||e){m=(r%2)?l:s;g=((r%2)?d:e)||{};a=(g.lineWidth||g["stroke-width"]||0)/2;k=2*a;if(u=="left"){m.push("M",q[0]+1+a,q[1]+0.5-a,"L",q[0]+1+n-a,q[1]+0.5-a,"L",p[0]+1+n-a,p[1]+0.5+a,"L",p[0]+1+a,p[1]+0.5+a,"Z")}else{if(u=="right"){m.push("M",q[0]-a,q[1]+0.5-a,"L",q[0]-n+a,q[1]+0.5-a,"L",p[0]-n+a,p[1]+0.5+a,"L",p[0]-a,p[1]+0.5+a,"Z")}else{if(u=="top"){m.push("M",q[0]+0.5+a,q[1]+1+a,"L",q[0]+0.5+a,q[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+a,"Z")}else{m.push("M",q[0]+0.5+a,q[1]-a,"L",q[0]+0.5+a,q[1]-n+a,"L",p[0]+0.5-a,p[1]-n+a,"L",p[0]+0.5-a,p[1]-a,"Z")}}}}else{if(u=="left"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",n,0])}else{if(u=="right"){m=m.concat(["M",p[0]-0.5,p[1]+0.5,"l",-n,0])}else{if(u=="top"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",0,n])}else{m=m.concat(["M",p[0]+0.5,p[1]-0.5,"l",0,-n])}}}}}if(d||e){if(l.length){if(!t.gridOdd&&l.length){t.gridOdd=o.add({type:"path",path:l})}t.gridOdd.setAttributes(Ext.apply({path:l,hidden:false},d||{}),true)}if(s.length){if(!t.gridEven){t.gridEven=o.add({type:"path",path:s})}t.gridEven.setAttributes(Ext.apply({path:s,hidden:false},e||{}),true)}}else{if(m.length){if(!t.gridLines){t.gridLines=t.chart.surface.add({type:"path",path:m,"stroke-width":t.lineWidth||1,stroke:t.gridColor||"#ccc"})}t.gridLines.setAttributes({hidden:false,path:m},true)}else{if(t.gridLines){t.gridLines.hide(true)}}}},getOrCreateLabel:function(c,g){var d=this,b=d.labelGroup,e=b.getAt(c),a=d.chart.surface;if(e){if(g!=e.attr.text){e.setAttributes(Ext.apply({text:g},d.label),true);e._bbox=e.getBBox()}}else{e=a.add(Ext.apply({group:b,type:"text",x:0,y:0,text:g},d.label));a.renderItem(e);e._bbox=e.getBBox()}if(d.label.rotation){e.setAttributes({rotation:{degrees:0}},true);e._ubbox=e.getBBox();e.setAttributes(d.label,true)}else{e._ubbox=e._bbox}return e},rect2pointArray:function(m){var b=this.chart.surface,g=b.getBBox(m,true),n=[g.x,g.y],d=n.slice(),l=[g.x+g.width,g.y],a=l.slice(),k=[g.x+g.width,g.y+g.height],e=k.slice(),j=[g.x,g.y+g.height],c=j.slice(),h=m.matrix;n[0]=h.x.apply(h,d);n[1]=h.y.apply(h,d);l[0]=h.x.apply(h,a);l[1]=h.y.apply(h,a);k[0]=h.x.apply(h,e);k[1]=h.y.apply(h,e);j[0]=h.x.apply(h,c);j[1]=h.y.apply(h,c);return[n,l,k,j]},intersect:function(c,a){var d=this.rect2pointArray(c),b=this.rect2pointArray(a);return !!Ext.draw.Draw.intersect(d,b).length},drawHorizontalLabels:function(){var D=this,e=D.label,z=Math.floor,v=Math.max,w=D.chart.axes,h=D.chart.insetPadding,g=D.chart.maxGutters,E=D.position,k=D.inflections,o=k.length,C=D.labels,s=0,j,c,t,p,b,B=D.adjustEnd,a=w.findIndex("position","left")!=-1,n=w.findIndex("position","right")!=-1,A,r,m,q,l,u,d;m=o-1;t=k[0];d=D.getOrCreateLabel(0,D.label.renderer(C[0]));j=Math.floor(Math.abs(Math.sin(e.rotate&&(e.rotate.degrees*Math.PI/180)||0)));for(u=0;u<o;u++){t=k[u];r=D.label.renderer(C[u]);A=D.getOrCreateLabel(u,r);c=A._bbox;s=v(s,c.height+D.dashSize+D.label.padding);q=z(t[0]-(j?c.height:c.width)/2);if(B&&g.left==0&&g.right==0){if(u==0&&!a){q=t[0]}else{if(u==m&&!n){q=Math.min(q,t[0]-c.width+h)}}}if(E=="top"){l=t[1]-(D.dashSize*2)-D.label.padding-(c.height/2)}else{l=t[1]+(D.dashSize*2)+D.label.padding+(c.height/2)}A.setAttributes({hidden:false,x:q,y:l},true);if(u!=0&&(D.intersect(A,p)||D.intersect(A,d))){if(u===m&&b!==0){p.hide(true)}else{A.hide(true);continue}}p=A;b=u}return s},drawVerticalLabels:function(){var C=this,g=C.inflections,D=C.position,k=g.length,p=C.chart,e=p.insetPadding,B=C.labels,v=0,s=Math.max,u=Math.floor,c=Math.ceil,t=C.chart.axes,d=C.chart.maxGutters,b,q,l,a,o=t.findIndex("position","top")!=-1,w=t.findIndex("position","bottom")!=-1,A=C.adjustEnd,z,n,j=k-1,m,h,r;for(r=0;r<k;r++){q=g[r];n=C.label.renderer(B[r]);z=C.getOrCreateLabel(r,n);b=z._bbox;v=s(v,b.width+C.dashSize+C.label.padding);h=q[1];if(A&&(d.bottom+d.top)<b.height/2){if(r==j&&!o){h=Math.max(h,C.y-C.length+c(b.height/2)-e)}else{if(r==0&&!w){h=C.y+d.bottom-u(b.height/2)}}}if(D=="left"){m=q[0]-b.width-C.dashSize-C.label.padding-2}else{m=q[0]+C.dashSize+C.label.padding+2}z.setAttributes(Ext.apply({hidden:false,x:m,y:h},C.label),true);if(r!=0&&C.intersect(z,l)){if(r===j&&a!==0){l.hide(true)}else{z.hide(true);continue}}l=z;a=r}return v},drawLabel:function(){var h=this,a=h.position,b=h.labelGroup,j=h.inflections,g=0,e=0,d,c;if(a=="left"||a=="right"){g=h.drawVerticalLabels()}else{e=h.drawHorizontalLabels()}d=b.getCount();c=j.length;for(;c<d;c++){b.getAt(c).hide(true)}h.bbox={};Ext.apply(h.bbox,h.axisBBox);h.bbox.height=e;h.bbox.width=g;if(Ext.isString(h.title)){h.drawTitle(g,e)}},setTitle:function(a){this.title=a;this.drawLabel()},drawTitle:function(m,n){var h=this,g=h.position,b=h.chart.surface,c=h.displaySprite,l=h.title,e=(g=="left"||g=="right"),k=h.x,j=h.y,a,o,d;if(c){c.setAttributes({text:l},true)}else{a={type:"text",x:0,y:0,text:l};c=h.displaySprite=b.add(Ext.apply(a,h.axisTitleStyle,h.labelTitle));b.renderItem(c)}o=c.getBBox();d=h.dashSize+h.label.padding;if(e){j-=((h.length/2)-(o.height/2));if(g=="left"){k-=(m+d+(o.width/2))}else{k+=(m+d+o.width-(o.width/2))}h.bbox.width+=o.width+10}else{k+=(h.length/2)-(o.width*0.5);if(g=="top"){j-=(n+d+(o.height*0.3))}else{j+=(n+d+(o.height*0.8))}h.bbox.height+=o.height+10}c.setAttributes({translate:{x:k,y:j}},true)}},0,0,0,0,0,0,[Ext.chart.axis,"Axis",Ext.chart,"Axis"],0));(Ext.cmd.derive("Ext.chart.axis.Category",Ext.chart.axis.Axis,{alternateClassName:"Ext.chart.CategoryAxis",categoryNames:null,calculateCategoryCount:false,doConstrain:function(){var h=this,g=h.chart,c=g.getChartStore(),b=c.data.items,e=g.series.items,a=e.length,j=[],d;for(d=0;d<a;d++){if(e[d].type==="bar"&&e[d].stacked){return}}for(d=h.minimum;d<h.maximum;d++){j.push(b[d])}g.setSubStore(new Ext.data.Store({model:c.model,data:j}))},setLabels:function(){var m=this.chart.getChartStore(),c=m.data.items,k,h,e,j=this.fields,l=j.length,g,a,b;g=this.labels=[];for(k=0,h=c.length;k<h;k++){e=c[k];for(b=0;b<l;b++){a=e.get(j[b]);g.push(a)}}},applyData:function(){this.callParent();this.setLabels();var a=this.chart.getChartStore().getCount();return{from:0,to:a-1,power:1,step:1,steps:a-1}}},0,0,0,0,["axis.category"],0,[Ext.chart.axis,"Category",Ext.chart,"CategoryAxis"],0));(Ext.cmd.derive("Ext.chart.axis.Gauge",Ext.chart.axis.Abstract,{position:"gauge",drawAxis:function(q){var j=this.chart,a=j.surface,p=j.chartBBox,d=p.x+(p.width/2),b=p.y+p.height,c=this.margin||10,m=Math.min(p.width,2*p.height)/2+c,h=[],n,l=this.steps,e,g=Math.PI,o=Math.cos,k=Math.sin;if(this.sprites&&!j.resizing){this.drawLabel();return}if(this.margin>=0){if(!this.sprites){for(e=0;e<=l;e++){n=a.add({type:"path",path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"});n.setAttributes({hidden:false},true);h.push(n)}}else{h=this.sprites;for(e=0;e<=l;e++){h[e].setAttributes({path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"},true)}}}this.sprites=h;this.drawLabel();if(this.title){this.drawTitle()}},drawTitle:function(){var e=this,d=e.chart,a=d.surface,g=d.chartBBox,c=e.titleSprite,b;if(!c){e.titleSprite=c=a.add(Ext.apply({type:"text",zIndex:2},e.axisTitleStyle,e.labelTitle))}c.setAttributes(Ext.apply({text:e.title},e.label||{}),true);b=c.getBBox();c.setAttributes({x:g.x+(g.width/2)-(b.width/2),y:g.y+g.height-(b.height/2)-4},true)},setTitle:function(a){this.title=a;this.drawTitle()},drawLabel:function(){var l=this.chart,p=l.surface,b=l.chartBBox,j=b.x+(b.width/2),h=b.y+b.height,m=this.margin||10,d=Math.min(b.width,2*b.height)/2+2*m,u=Math.round,n=[],g,s=this.maximum||0,k=this.minimum||0,r=this.steps,q=0,v,t=Math.PI,c=Math.cos,a=Math.sin,e=this.label,o=e.renderer||Ext.identityFn;if(!this.labelArray){for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;g=p.add({type:"text",text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v,"text-anchor":"middle","stroke-width":0.2,zIndex:10,stroke:"#333"});g.setAttributes({hidden:false},true);n.push(g)}}else{n=this.labelArray;for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;n[q].setAttributes({text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v},true)}}this.labelArray=n}},0,0,0,0,["axis.gauge"],0,[Ext.chart.axis,"Gauge"],0));(Ext.cmd.derive("Ext.chart.axis.Numeric",Ext.chart.axis.Axis,{alternateClassName:"Ext.chart.NumericAxis",type:"Numeric",isNumericAxis:true,constructor:function(c){var d=this,a=!!(c.label&&c.label.renderer),b;d.callParent([c]);b=d.label;if(c.constrain==null){d.constrain=(c.minimum!=null&&c.maximum!=null)}if(!a){b.renderer=function(e){return d.roundToDecimal(e,d.decimals)}}},roundToDecimal:function(a,c){var b=Math.pow(10,c||0);return Math.round(a*b)/b},minimum:NaN,maximum:NaN,constrain:true,decimals:2,scale:"linear",doConstrain:function(){var u=this,h=u.chart,b=h.getChartStore(),j=b.data.items,t,w,a,e=h.series.items,k=u.fields,c=k.length,g=u.calcEnds(),n=g.from,q=g.to,r,o,s=false,m,v=[],p;for(t=0,w=j.length;t<w;t++){p=true;a=j[t];for(r=0;r<c;r++){m=a.get(k[r]);if(u.type=="Time"&&typeof m=="string"){m=Date.parse(m)}if(+m<+n){p=false;break}if(+m>+q){p=false;break}}if(p){v.push(a)}}h.setSubStore(new Ext.data.Store({model:b.model,data:v}))},position:"left",adjustMaximumByMajorUnit:false,adjustMinimumByMajorUnit:false,processView:function(){var e=this,d=e.chart,c=d.series.items,b,a;for(b=0,a=c.length;b<a;b++){if(c[b].stacked){delete e.minimum;delete e.maximum;e.constrain=false;break}}if(e.constrain){e.doConstrain()}},applyData:function(){this.callParent();return this.calcEnds()}},1,0,0,0,["axis.numeric"],0,[Ext.chart.axis,"Numeric",Ext.chart,"NumericAxis"],0));(Ext.cmd.derive("Ext.chart.axis.Radial",Ext.chart.axis.Numeric,{position:"radial",drawAxis:function(u){var m=this.chart,a=m.surface,t=m.chartBBox,q=m.getChartStore(),b=q.getCount(),e=t.x+(t.width/2),c=t.y+(t.height/2),p=Math.min(t.width,t.height)/2,k=[],r,o=this.steps,g,d,h=Math.PI*2,s=Math.cos,n=Math.sin;if(this.sprites&&!m.resizing){this.drawLabel();return}if(!this.sprites){for(g=1;g<=o;g++){r=a.add({type:"circle",x:e,y:c,radius:Math.max(p*g/o,0),stroke:"#ccc"});r.setAttributes({hidden:false},true);k.push(r)}for(g=0;g<b;g++){r=a.add({type:"path",path:["M",e,c,"L",e+p*s(g/b*h),c+p*n(g/b*h),"Z"],stroke:"#ccc"});r.setAttributes({hidden:false},true);k.push(r)}}else{k=this.sprites;for(g=0;g<o;g++){k[g].setAttributes({x:e,y:c,radius:Math.max(p*(g+1)/o,0),stroke:"#ccc"},true)}for(d=0;d<b;d++){k[g+d].setAttributes({path:["M",e,c,"L",e+p*s(d/b*h),c+p*n(d/b*h),"Z"],stroke:"#ccc"},true)}}this.sprites=k;this.drawLabel()},drawLabel:function(){var w=this.chart,c=w.series.items,r,B=w.surface,b=w.chartBBox,l=w.getChartStore(),J=l.data.items,p,k,o=b.x+(b.width/2),n=b.y+(b.height/2),h=Math.min(b.width,b.height)/2,F=Math.max,I=Math.round,x=[],m,z=[],d,A=[],g,v=!this.maximum,H=this.maximum||0,G=this.steps,E=0,D,t,s,y=Math.PI*2,e=Math.cos,a=Math.sin,C=this.label.display,q=C!=="none",u=10;if(!q){return}for(E=0,p=c.length;E<p;E++){r=c[E];z.push(r.yField);g=r.xField}for(D=0,p=J.length;D<p;D++){k=J[D];A.push(k.get(g));if(v){for(E=0,d=z.length;E<d;E++){H=F(+k.get(z[E]),H)}}}if(!this.labelArray){if(C!="categories"){for(E=1;E<=G;E++){m=B.add({type:"text",text:I(E/G*H),x:o,y:n-h*E/G,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"});m.setAttributes({hidden:false},true);x.push(m)}}if(C!="scale"){for(D=0,G=A.length;D<G;D++){t=e(D/G*y)*(h+u);s=a(D/G*y)*(h+u);m=B.add({type:"text",text:A[D],x:o+t,y:n+s,"text-anchor":t*t<=0.001?"middle":(t<0?"end":"start")});m.setAttributes({hidden:false},true);x.push(m)}}}else{x=this.labelArray;if(C!="categories"){for(E=0;E<G;E++){x[E].setAttributes({text:I((E+1)/G*H),x:o,y:n-h*(E+1)/G,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"},true)}}if(C!="scale"){for(D=0,G=A.length;D<G;D++){t=e(D/G*y)*(h+u);s=a(D/G*y)*(h+u);if(x[E+D]){x[E+D].setAttributes({type:"text",text:A[D],x:o+t,y:n+s,"text-anchor":t*t<=0.001?"middle":(t<0?"end":"start")},true)}}}}this.labelArray=x},getRange:function(){var a=this.callParent();a.min=0;return a},processView:function(){var h=this,c=h.chart.series.items,e,g,d,b,a=[];for(e=0,g=c.length;e<g;e++){d=c[e];a.push(d.yField)}h.fields=a;b=h.calcEnds();h.maximum=b.to;h.steps=b.steps}},0,0,0,0,["axis.radial"],0,[Ext.chart.axis,"Radial"],0));(Ext.cmd.derive("Ext.chart.axis.Time",Ext.chart.axis.Numeric,{alternateClassName:"Ext.chart.TimeAxis",type:"Time",dateFormat:false,fromDate:false,toDate:false,step:[Ext.Date.DAY,1],constrain:false,constructor:function(b){var c=this,a,d,e;c.callParent([b]);a=c.label||{};e=this.dateFormat;if(e){if(a.renderer){d=a.renderer;a.renderer=function(g){g=d(g);return Ext.Date.format(new Date(d(g)),e)}}else{a.renderer=function(g){return Ext.Date.format(new Date(g>>0),e)}}}},processView:function(){var a=this;if(a.fromDate){a.minimum=+a.fromDate}if(a.toDate){a.maximum=+a.toDate}if(a.constrain){a.doConstrain()}},calcEnds:function(){var c=this,a,b=c.step;if(b){a=c.getRange();a=Ext.draw.Draw.snapEndsByDateAndStep(new Date(a.min),new Date(a.max),Ext.isNumber(b)?[Date.MILLI,b]:b);if(c.minimum){a.from=c.minimum}if(c.maximum){a.to=c.maximum}return a}else{return c.callParent(arguments)}}},1,0,0,0,["axis.time"],0,[Ext.chart.axis,"Time",Ext.chart,"TimeAxis"],0));(Ext.cmd.derive("Ext.chart.series.Series",Ext.Base,{type:null,title:null,showInLegend:true,renderer:function(e,a,c,d,b){return c},shadowAttributes:null,animating:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},nullPadding:{left:0,right:0,width:0,bottom:0,top:0,height:0},constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.shadowGroups=[];b.mixins.labels.constructor.call(b,a);b.mixins.highlights.constructor.call(b,a);b.mixins.tips.constructor.call(b,a);b.mixins.callouts.constructor.call(b,a);b.addEvents({scope:b,itemclick:true,itemmouseover:true,itemmouseout:true,itemmousedown:true,itemmouseup:true,mouseleave:true,afterdraw:true,titlechange:true});b.mixins.observable.constructor.call(b,a);b.on({scope:b,itemmouseover:b.onItemMouseOver,itemmouseout:b.onItemMouseOut,mouseleave:b.onMouseLeave});if(b.style){Ext.apply(b.seriesStyle,b.style)}},onRedraw:Ext.emptyFn,eachRecord:function(c,b){var a=this.chart;a.getChartStore().each(c,b)},getRecordCount:function(){var b=this.chart,a=b.getChartStore();return a?a.getCount():0},isExcluded:function(a){var b=this.__excludes;return !!(b&&b[a])},setBBox:function(a){var d=this,c=d.chart,b=c.chartBBox,h=a?{left:0,right:0,bottom:0,top:0}:c.maxGutters,e,g;e={x:b.x,y:b.y,width:b.width,height:b.height};d.clipBox=e;g={x:(e.x+h.left)-(c.zoom.x*c.zoom.width),y:(e.y+h.bottom)-(c.zoom.y*c.zoom.height),width:(e.width-(h.left+h.right))*c.zoom.width,height:(e.height-(h.bottom+h.top))*c.zoom.height};d.bbox=g},onAnimate:function(b,a){var c=this;b.stopAnimation();if(c.animating){return b.animate(Ext.applyIf(a,c.chart.animate))}else{c.animating=true;return b.animate(Ext.apply(Ext.applyIf(a,c.chart.animate),{callback:function(){c.animating=false;c.fireEvent("afterrender")}}))}},getGutters:function(){return this.nullGutters},getPadding:function(){return this.nullPadding},onItemMouseOver:function(b){var a=this;if(b.series===a){if(a.highlight){a.highlightItem(b)}if(a.tooltip){a.showTip(b)}}},onItemMouseOut:function(b){var a=this;if(b.series===a){a.unHighlightItem();if(a.tooltip){a.hideTip(b)}}},onMouseLeave:function(){var a=this;a.unHighlightItem();if(a.tooltip){a.hideTip()}},getItemForPoint:function(a,j){if(!this.items||!this.items.length||this.seriesIsHidden){return null}var g=this,b=g.items,h=g.bbox,e,c,d;if(!Ext.draw.Draw.withinBox(a,j,h)){return null}for(c=0,d=b.length;c<d;c++){if(b[c]&&this.isItemInPoint(a,j,b[c],c)){return b[c]}}return null},isItemInPoint:function(a,d,c,b){return false},hideAll:function(){var h=this,g=h.items,m,e,d,c,a,k,b;h.seriesIsHidden=true;h._prevShowMarkers=h.showMarkers;h.showMarkers=false;h.hideLabels(0);for(d=0,e=g.length;d<e;d++){m=g[d];k=m.sprite;if(k){k.setAttributes({hidden:true},true)}if(k&&k.shadows){b=k.shadows;for(c=0,a=b.length;c<a;++c){b[c].setAttributes({hidden:true},true)}}}},showAll:function(){var a=this,b=a.chart.animate;a.chart.animate=false;a.seriesIsHidden=false;a.showMarkers=a._prevShowMarkers;a.drawSeries();a.chart.animate=b},hide:function(){if(this.items){var h=this,b=h.items,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d].sprite){b[d].sprite.hide(true);e=b[d].shadows||b[d].sprite.shadows;if(e){for(c=0,a=e.length;c<a;++c){e[c].hide(true)}}}}h.hideLabels()}}},getLegendColor:function(a){var b=this,d,c;if(b.seriesStyle){d=b.seriesStyle.fill;c=b.seriesStyle.stroke;if(d&&d!="none"){return d}if(c){return c}}return(b.colorArrayStyle)?b.colorArrayStyle[b.themeIdx%b.colorArrayStyle.length]:"#000"},visibleInLegend:function(a){var b=this.__excludes;if(b){return !b[a]}return !this.seriesIsHidden},setTitle:function(a,d){var c=this,b=c.title;if(Ext.isString(a)){d=a;a=0}if(Ext.isArray(b)){b[a]=d}else{c.title=d}c.fireEvent("titlechange",d,a)}},1,0,0,0,0,[["observable",Ext.util.Observable],["labels",Ext.chart.Label],["highlights",Ext.chart.Highlight],["tips",Ext.chart.Tip],["callouts",Ext.chart.Callout]],[Ext.chart.series,"Series"],0));(Ext.cmd.derive("Ext.chart.series.Cartesian",Ext.chart.series.Series,{alternateClassName:["Ext.chart.CartesianSeries","Ext.chart.CartesianChart"],xField:null,yField:null,axis:"left",getLegendLabels:function(){var j=this,e=[],g,d,h,k=j.combinations,l,a,c,b;g=[].concat(j.yField);for(d=0,h=g.length;d<h;d++){l=j.title;e.push((Ext.isArray(l)?l[d]:l)||g[d])}if(k){k=Ext.Array.from(k);for(d=0,h=k.length;d<h;d++){a=k[d];c=e[a[0]];b=e[a[1]];e[a[1]]=c+" & "+b;e.splice(a[0],1)}}return e},eachYValue:function(b,e,d){var j=this,h=j.getYValueAccessors(),c,g,a;for(c=0,g=h.length;c<g;c++){a=h[c];e.call(d,a(b),c)}},getYValueCount:function(){return this.getYValueAccessors().length},combine:function(g,e){var d=this,c=d.getYValueAccessors(),b=c[g],a=c[e];c[e]=function(h){return b(h)+a(h)};c.splice(g,1);d.callParent([g,e])},clearCombinations:function(){delete this.yValueAccessors;this.callParent()},getYValueAccessors:function(){var e=this,a=e.yValueAccessors,g,c,b,d;if(!a){a=e.yValueAccessors=[];g=[].concat(e.yField);for(b=0,d=g.length;b<d;b++){c=g[b];a.push(function(h){return h.get(c)})}}return a},getMinMaxXValues:function(){var l=this,k=l.chart,n=k.getChartStore(),d=n.data.items,h=l.getRecordCount(),e,j,g,c,m,a=l.xField,b;if(h>0){c=Infinity;m=-c;for(e=0,j=d.length;e<j;e++){g=d[e];b=g.get(a);if(b>m){m=b}if(b<c){c=b}}if(c==Infinity){c=0}if(m==-Infinity){m=h-1}}else{c=m=0}return[c,m]},getMinMaxYValues:function(){var l=this,k=l.chart,p=k.getChartStore(),c=p.data.items,g=l.getRecordCount(),d,j,e,h=l.stacked,b,m,o,n;function a(s,r){if(!l.isExcluded(r)){if(s<0){n+=s}else{o+=s}}}function q(s,r){if(!l.isExcluded(r)){if(s>m){m=s}if(s<b){b=s}}}if(g>0){b=Infinity;m=-b;for(d=0,j=c.length;d<j;d++){e=c[d];if(h){o=0;n=0;l.eachYValue(e,a);if(o>m){m=o}if(n<b){b=n}}else{l.eachYValue(e,q)}}if(b==Infinity){b=0}if(m==-Infinity){m=g-1}}else{b=m=0}return[b,m]},getAxesForXAndYFields:function(){var m=this,l=m.chart.axes,d=[].concat(m.axis),c={},e=[].concat(m.yField),n={},o=[].concat(m.xField),j,b,a,h,k,g;g=m.type==="bar"&&m.column===false;if(g){j=e;e=o;o=j}if(Ext.Array.indexOf(d,"top")>-1){b="top"}else{if(Ext.Array.indexOf(d,"bottom")>-1){b="bottom"}else{if(l.get("top")&&l.get("bottom")){for(h=0,k=o.length;h<k;h++){n[o[h]]=true}j=[].concat(l.get("bottom").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="bottom";break}}j=[].concat(l.get("top").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="top";break}}}else{if(l.get("top")){b="top"}else{if(l.get("bottom")){b="bottom"}}}}}if(Ext.Array.indexOf(d,"left")>-1){a="left"}else{if(Ext.Array.indexOf(d,"right")>-1){a="right"}else{if(l.get("left")&&l.get("right")){for(h=0,k=e.length;h<k;h++){c[e[h]]=true}j=[].concat(l.get("right").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){break}}j=[].concat(l.get("left").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){a="left";break}}}else{if(l.get("left")){a="left"}else{if(l.get("right")){a="right"}}}}}return g?{xAxis:a,yAxis:b}:{xAxis:b,yAxis:a}}},0,0,0,0,0,0,[Ext.chart.series,"Cartesian",Ext.chart,"CartesianSeries",Ext.chart,"CartesianChart"],0));(Ext.cmd.derive("Ext.chart.series.Area",Ext.chart.series.Cartesian,{type:"area",stacked:true,style:{},constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,d,b;c.highlightCfg=Ext.Object.merge({},{lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{__excludes:[]});if(e.highlight){e.highlightSprite=a.add({type:"path",path:["M",0,0],zIndex:1000,opacity:0.3,lineWidth:5,hidden:true,stroke:"#444"})}e.group=a.getGroup(e.seriesId)},shrink:function(b,n,o){var k=b.length,m=Math.floor(k/o),h,g,d=0,l=this.areas.length,a=[],e=[],c=[];for(g=0;g<l;++g){a[g]=0}for(h=0;h<k;++h){d+=+b[h];for(g=0;g<l;++g){a[g]+=+n[h][g]}if(h%m==0){e.push(d/m);for(g=0;g<l;++g){a[g]/=m}c.push(a);d=0;for(g=0,a=[];g<l;++g){a[g]=0}}}return{x:e,y:c}},getBounds:function(){var j=this,N=j.chart,a=N.getChartStore(),M=a.data.items,J,G,x,v=[].concat(j.yField),A=v.length,z=[],D=[],g=Infinity,C=g,B=g,n=-g,m=-g,s=Math,w=s.min,e=s.max,p=j.getAxesForXAndYFields(),K=p.xAxis,u=p.yAxis,H,r,E,k,h,F,q,O,L,b,t,I,c,d,o,y;j.setBBox();k=j.bbox;if(o=N.axes.get(K)){if(o.type==="Time"){r=true}H=o.applyData();C=H.from;n=H.to}if(o=N.axes.get(u)){H=o.applyData();B=H.from;m=H.to}if(j.xField&&!Ext.isNumber(C)){o=j.getMinMaxXValues();r=true;C=o[0];n=o[1]}if(j.yField&&!Ext.isNumber(B)){o=j.getMinMaxYValues();B=o[0];m=o[1]}if(!Ext.isNumber(B)){B=0}if(!Ext.isNumber(m)){m=0}G=M.length;if(G>0&&r){E=M[0].get(j.xField);if(typeof E!="number"){E=+E;if(isNaN(E)){r=false}}}for(J=0;J<G;J++){x=M[J];q=x.get(j.xField);O=[];if(typeof q!="number"){if(r){q=+q}else{q=J}}z.push(q);b=0;for(L=0;L<A;L++){if(j.__excludes[L]){continue}d=x.get(v[L]);if(typeof d=="number"){O.push(d)}}D.push(O)}h=k.width/((n-C)||1);F=k.height/((m-B)||1);t=z.length;if((t>k.width)&&j.areas){I=j.shrink(z,D,k.width);z=I.x;D=I.y}return{bbox:k,minX:C,minY:B,xValues:z,yValues:D,xScale:h,yScale:F,areasLen:A}},getPaths:function(){var z=this,m=z.chart,c=m.getChartStore(),e=true,g=z.getBounds(),a=g.bbox,n=z.items=[],w=[],b,d=0,p=[],s,j,k,h,q,u,l,A,r,v,o,t;j=g.xValues.length;for(s=0;s<j;s++){q=g.xValues[s];u=g.yValues[s];k=a.x+(q-g.minX)*g.xScale;if(t===undefined){t=k}l=0;d=0;for(A=0;A<g.areasLen;A++){if(z.__excludes[A]){continue}if(!w[A]){w[A]=[]}v=u[d];l+=v;h=a.y+a.height-(l-g.minY)*g.yScale;if(!p[A]){p[A]=["M",k,h];w[A].push(["L",k,h])}else{p[A].push("L",k,h);w[A].push(["L",k,h])}if(!n[A]){n[A]={pointsUp:[],pointsDown:[],series:z}}n[A].pointsUp.push([k,h]);d++}}for(A=0;A<g.areasLen;A++){if(z.__excludes[A]){continue}o=p[A];if(A==0||e){e=false;o.push("L",k,a.y+a.height,"L",t,a.y+a.height,"Z")}else{b=w[r];b.reverse();o.push("L",k,b[0][2]);for(s=0;s<j;s++){o.push(b[s][0],b[s][1],b[s][2]);n[A].pointsDown[j-s-1]=[b[s][1],b[s][2]]}o.push("L",t,o[2],"Z")}r=A}return{paths:p,areasLen:g.areasLen}},drawSeries:function(){var j=this,h=j.chart,l=h.getChartStore(),d=h.surface,c=h.animate,n=j.group,b=Ext.apply(j.seriesStyle,j.style),o=j.colorArrayStyle,r=o&&o.length||0,a=j.themeIdx,e,g,q,p,m,k;j.unHighlightItem();j.cleanHighlights();if(!l||!l.getCount()||j.seriesIsHidden){j.hide();j.items=[];return}q=j.getPaths();if(!j.areas){j.areas=[]}for(e=0;e<q.areasLen;e++){if(j.__excludes[e]){continue}k=a+e;if(!j.areas[e]){j.items[e].sprite=j.areas[e]=d.add(Ext.apply({},{type:"path",group:n,path:q.paths[e],stroke:b.stroke||o[k%r],fill:o[k%r]},b||{}))}g=j.areas[e];p=q.paths[e];if(c){m=j.renderer(g,false,{path:p,fill:o[e%r],stroke:b.stroke||o[e%r]},e,l);j.animation=j.onAnimate(g,{to:m})}else{m=j.renderer(g,false,{path:p,hidden:false,fill:o[k%r],stroke:b.stroke||o[k%r]},e,l);j.areas[e].setAttributes(m,true)}}j.renderLabels();j.renderCallouts()},onAnimate:function(b,a){b.show();return this.callParent(arguments)},onCreateLabel:function(d,k,c,e){return null;var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply({},a,g.seriesLabelStyle||{});return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:Number(k.point[0]),y:j.y+j.height/2},b||{}))},onPlaceLabel:function(e,j,s,p,n,c,d){var u=this,k=u.chart,r=k.resizing,t=u.label,q=t.renderer,b=t.field,a=u.bbox,h=Number(s.point[p][0]),g=Number(s.point[p][1]),o,m,l;e.setAttributes({text:q(j.get(b[d]),e,j,s,p,n,c,d),hidden:true},true);o=e.getBBox();m=o.width/2;l=o.height/2;if(h<a.x+m){h=a.x+m}else{if(h+m>a.x+a.width){h=a.x+a.width-m}}g=g-l;if(g<a.y+l){g+=2*l}else{if(g+l>a.y+a.height){g-=2*l}}if(u.chart.animate&&!u.chart.resizing){e.show(true);u.onAnimate(e,{to:{x:h,y:g}})}else{e.setAttributes({x:h,y:g},true);if(r&&u.animation){u.animation.on("afteranimate",function(){e.show(true)})}else{e.show(true)}}},onPlaceCallout:function(m,r,J,G,F,d,k){var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=(G==0)?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=J.point,A,g,N,K,o,q,b=(m&&m.label?m.label.getBBox():{width:0,height:0}),I=30,C=10,B=3,h,e,j,w,u,E=M.clipRect,n,l;if(!b.width||!b.height){return}if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&N[0]<0||Math.abs(o)>Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h<E[0]||(h+j)>(E[0]+E[2])){N[0]*=-1}if(e<E[1]||(e+w)>(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);m.box.setAttributes({x:h,y:e,width:j,height:w},true);m.label.setAttributes({x:n+(N[0]>0?B:-(b.width+B)),y:l},true);for(u in m){m[u].show(true)}},isItemInPoint:function(j,h,m,c){var g=this,b=m.pointsUp,d=m.pointsDown,q=Math.abs,o=false,l=false,e=Infinity,a,n,k;for(a=0,n=b.length;a<n;a++){k=[b[a][0],b[a][1]];o=false;l=a==n-1;if(e>q(j-k[0])){e=q(j-k[0]);o=true;if(l){++a}}if(!o||(o&&l)){k=b[a-1];if(h>=k[1]&&(!d.length||h<=(d[a-1][1]))){m.storeIndex=a-1;m.storeField=g.yField[c];m.storeItem=g.chart.getChartStore().getAt(a-1);m._points=d.length?[k,d[a-1]]:[k];return true}else{break}}}return false},highlightSeries:function(){var a,c,b;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}a.__highlighted=true;a.__prevOpacity=a.__prevOpacity||a.attr.opacity||1;a.__prevFill=a.__prevFill||a.attr.fill;a.__prevLineWidth=a.__prevLineWidth||a.attr.lineWidth;b=Ext.draw.Color.fromString(a.__prevFill);c={lineWidth:(a.__prevLineWidth||0)+2};if(b){c.fill=b.getLighter(0.2).toString()}else{c.opacity=Math.max(a.__prevOpacity-0.3,0)}if(this.chart.animate){a.__highlightAnim=new Ext.fx.Anim(Ext.apply({target:a,to:c},this.chart.animate))}else{a.setAttributes(c,true)}}},unHighlightSeries:function(){var a;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}if(a.__highlighted){a.__highlighted=false;a.__highlightAnim=new Ext.fx.Anim({target:a,to:{fill:a.__prevFill,opacity:a.__prevOpacity,lineWidth:a.__prevLineWidth}})}}},highlightItem:function(c){var b=this,a,d;if(!c){this.highlightSeries();return}a=c._points;d=a.length==2?["M",a[0][0],a[0][1],"L",a[1][0],a[1][1]]:["M",a[0][0],a[0][1],"L",a[0][0],b.bbox.y+b.bbox.height];b.highlightSprite.setAttributes({path:d,hidden:false},true)},unHighlightItem:function(a){if(!a){this.unHighlightSeries()}if(this.highlightSprite){this.highlightSprite.hide(true)}},hideAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=true;b.areas[a].hide(true);b.redraw()},showAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=false;b.areas[a].show(true);b.redraw()},redraw:function(){var a=this,b;b=a.chart.legend.rebuild;a.chart.legend.rebuild=false;a.chart.redraw();a.chart.legend.rebuild=b},hide:function(){if(this.areas){var h=this,b=h.areas,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d]){b[d].hide(true)}}h.hideLabels()}}},getLegendColor:function(a){var b=this;a+=b.themeIdx;return b.colorArrayStyle[a%b.colorArrayStyle.length]}},1,0,0,0,["series.area"],0,[Ext.chart.series,"Area"],0));(Ext.cmd.derive("Ext.chart.series.Bar",Ext.chart.series.Cartesian,{alternateClassName:["Ext.chart.BarSeries","Ext.chart.BarChart","Ext.chart.StackedBarChart"],type:"bar",column:false,style:{},gutter:38.2,groupGutter:38.2,xPadding:0,yPadding:10,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:1.2}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:0.9}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:0.6}}]});e.group=a.getGroup(e.seriesId+"-bars");if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getPadding:function(){var c=this,b=c.xPadding,a=c.yPadding,d={};if(Ext.isNumber(b)){d.left=b;d.right=b}else{if(Ext.isObject(b)){d.left=b.left;d.right=b.right}else{d.left=0;d.right=0}}d.width=d.left+d.right;if(Ext.isNumber(a)){d.bottom=a;d.top=a}else{if(Ext.isObject(a)){d.bottom=a.bottom;d.top=a.top}else{d.bottom=0;d.top=0}}d.height=d.bottom+d.top;return d},getBarGirth:function(){var d=this,a=d.chart.getChartStore(),b=d.column,c=a.getCount(),h=d.gutter/100,g,e;if(d.style&&d.style.width){return d.style.width}g=d.getPadding();e=(b?"width":"height");return(d.chart.chartBBox[e]-g[e])/(c*(h+1)-h)},getGutters:function(){var c=this,b=c.column,e=c.getPadding(),d=c.getBarGirth()/2,g=Math.ceil((b?e.left:e.bottom)+d),a=Math.ceil((b?e.right:e.top)+d);return{lower:g,upper:a,verticalAxis:!b}},getBounds:function(){var o=this,T=o.chart,b=T.getChartStore(),S=b.data.items,R,z,F,x=[].concat(o.yField),l,p=x.length,m=p,c=o.groupGutter/100,K=o.column,P=o.getPadding(),N=o.stacked,v=o.getBarGirth(),A=K?"width":"height",w=Math,D=w.min,k=w.max,n=w.abs,I=o.getAxesForXAndYFields(),C=I.yAxis,J,t,M,h,s,Q,E,e,q,H,r,u,G,B,a,y,L,O,d,g;o.setBBox(true);q=o.bbox;if(o.__excludes){for(O=0,y=o.__excludes.length;O<y;O++){if(o.__excludes[O]){m--}}}u=T.axes.get(C);if(u){Q=u.applyData();H=Q.from;r=Q.to}if(o.yField&&!Ext.isNumber(H)){G=o.getMinMaxYValues();H=G[0];r=G[1]}if(!Ext.isNumber(H)){H=0}if(!Ext.isNumber(r)){r=0}B=(K?q.height-P.height:q.width-P.width)/(r-H);E=v;e=(v/((N?1:m)*(c+1)-c));if(A in o.style){e=D(e,o.style[A]);E=e*((N?1:m)*(c+1)-c)}a=(K)?q.y+q.height-P.bottom:q.x+P.left;if(N){y=[[],[]];for(R=0,z=S.length;R<z;R++){F=S[R];y[0][R]=y[0][R]||0;y[1][R]=y[1][R]||0;for(O=0;O<p;O++){if(o.__excludes&&o.__excludes[O]){continue}L=F.get(x[O]);y[+(L>0)][R]+=n(L)}}y[+(r>0)].push(n(r));y[+(H>0)].push(n(H));g=k.apply(w,y[0]);d=k.apply(w,y[1]);B=(K?q.height-P.height:q.width-P.width)/(d+g);a=a+g*B*(K?-1:1)}else{if(H/r<0){a=a-H*B*(K?-1:1)}}if(o.boundColumn){u=T.axes.get(I.xAxis);if(u){Q=u.applyData();J=Q.from;t=Q.to}if(o.xField&&!Ext.isNumber(J)){G=o.getMinMaxYValues();J=G[0];t=G[1]}if(!Ext.isNumber(J)){J=0}if(!Ext.isNumber(t)){t=0}s=o.getGutters();M=(q.width-(s.lower+s.upper))/((t-J)||1);h=q.x+s.lower;l=[];for(R=0,z=S.length;R<z;R++){F=S[R];L=F.get(o.xField);l[R]=h+(L-J)*M-(e/2)}}return{bars:x,barsLoc:l,bbox:q,shrunkBarWidth:E,barsLen:p,groupBarsLen:m,barWidth:v,groupBarWidth:e,scale:B,zero:a,padding:P,signed:H/r<0,minY:H,maxY:r}},getPaths:function(){var u=this,Z=u.chart,b=Z.getChartStore(),Y=b.data.items,W,E,L,G=u.bounds=u.getBounds(),y=u.items=[],P=Ext.isArray(u.yField)?u.yField:[u.yField],m=u.gutter/100,c=u.groupGutter/100,T=Z.animate,N=u.column,w=u.group,n=Z.shadow,R=u.shadowGroups,Q=u.shadowAttributes,q=R.length,x=G.bbox,A=G.barWidth,K=G.shrunkBarWidth,V=u.getPadding(),S=u.stacked,v=G.barsLen,O=u.colorArrayStyle,k=O&&O.length||0,h=u.themeIdx,B=Math,o=B.max,I=B.min,t=B.abs,U,aa,e,J,D,a,l,s,r,p,g,ab,C,d,F,z,M,H,X;for(W=0,E=Y.length;W<E;W++){L=Y[W];a=G.zero;l=G.zero;J=0;D=0;ab=C=0;s=false;for(U=0,g=0;U<v;U++){if(u.__excludes&&u.__excludes[U]){continue}aa=L.get(G.bars[U]);if(aa>=0){ab+=aa}else{C+=aa}e=Math.round((aa-o(G.minY,0))*G.scale);X=h+(v>1?U:0);r={fill:O[X%k]};if(N){Ext.apply(r,{height:e,width:o(G.groupBarWidth,0),x:(u.boundColumn?G.barsLoc[W]:(x.x+V.left+(A-K)*0.5+W*A*(1+m)+g*G.groupBarWidth*(1+c)*!S)),y:a-e})}else{M=(E-1)-W;Ext.apply(r,{height:o(G.groupBarWidth,0),width:e+(a==G.zero),x:a+(a!=G.zero),y:(x.y+V.top+(A-K)*0.5+M*A*(1+m)+g*G.groupBarWidth*(1+c)*!S+1)})}if(e<0){if(N){r.y=l;r.height=t(e)}else{r.x=l+e;r.width=t(e)}}if(S){if(e<0){l+=e*(N?-1:1)}else{a+=e*(N?-1:1)}J+=t(e);if(e<0){D+=t(e)}}r.x=Math.floor(r.x)+1;H=Math.floor(r.y);if(Ext.isIE8m&&r.y>H){H--}r.y=H;r.width=Math.floor(r.width);r.height=Math.floor(r.height);y.push({series:u,yField:P[U],storeItem:L,value:[L.get(u.xField),aa],attr:r,point:N?[r.x+r.width/2,aa>=0?r.y:r.y+r.height]:[aa>=0?r.x+r.width:r.x,r.y+r.height/2]});if(T&&Z.resizing){p=N?{x:r.x,y:G.zero,width:r.width,height:0}:{x:G.zero,y:r.y,width:0,height:r.height};if(n&&(S&&!s||!S)){s=true;for(d=0;d<q;d++){F=R[d].getAt(S?W:(W*v+U));if(F){F.setAttributes(p,true)}}}z=w.getAt(W*v+U);if(z){z.setAttributes(p,true)}}g++}if(S&&y.length){y[W*g].totalDim=J;y[W*g].totalNegDim=D;y[W*g].totalPositiveValues=ab;y[W*g].totalNegativeValues=C}}if(S&&g==0){for(W=0,E=Y.length;W<E;W++){for(d=0;d<q;d++){F=R[d].getAt(W);if(F){F.hide(true)}}}}},renderShadows:function(u,v,y,l){var z=this,p=z.chart,s=p.surface,g=p.animate,x=z.stacked,a=z.shadowGroups,w=z.shadowAttributes,o=a.length,h=p.getChartStore(),d=z.column,r=z.items,b=[],m=l.zero,e,q,k,A,n,t,c;if((x&&(u%l.groupBarsLen===0))||!x){t=u/l.groupBarsLen;for(e=0;e<o;e++){q=Ext.apply({},w[e]);k=a[e].getAt(x?t:u);Ext.copyTo(q,v,"x,y,width,height");if(!k){k=s.add(Ext.apply({type:"rect",group:a[e]},Ext.apply({},y,q)))}if(x){A=r[u].totalDim;n=r[u].totalNegDim;if(d){q.y=m+n-A-1;q.height=A}else{q.x=m-n;q.width=A}}c=z.renderer(k,h.getAt(t),q,u,h);c.hidden=!!v.hidden;if(g){z.onAnimate(k,{to:c})}else{k.setAttributes(c,true)}b.push(k)}}return b},drawSeries:function(){var G=this,s=G.chart,m=s.getChartStore(),x=s.surface,k=s.animate,D=G.stacked,d=G.column,E=s.axes,y=G.getAxesForXAndYFields(),w=y.xAxis,n=y.yAxis,b=s.shadow,a=G.shadowGroups,r=a.length,p=G.group,g=G.seriesStyle,t,q,B,A,F,u,c,e,h,o,l,C,v,z;if(!m||!m.getCount()||G.seriesIsHidden){G.hide();G.items=[];return}l=Ext.apply({},this.style,g);delete l.fill;delete l.x;delete l.y;delete l.width;delete l.height;G.unHighlightItem();G.cleanHighlights();G.boundColumn=(w&&Ext.Array.contains(G.axis,w)&&E.get(w)&&E.get(w).isNumericAxis);G.getPaths();o=G.bounds;t=G.items;F=d?{y:o.zero,height:0}:{x:o.zero,width:0};q=t.length;for(B=0;B<q;B++){u=p.getAt(B);C=t[B].attr;if(b){t[B].shadows=G.renderShadows(B,C,F,o)}if(!u){v=Ext.apply({},F,C);v=Ext.apply(v,l||{});u=x.add(Ext.apply({},{type:"rect",group:p},v))}if(k){c=G.renderer(u,m.getAt(B),C,B,m);u._to=c;z=G.onAnimate(u,{to:Ext.apply(c,l)});if(b&&D&&(B%o.barsLen===0)){A=B/o.barsLen;for(e=0;e<r;e++){z.on("afteranimate",function(){this.show(true)},a[e].getAt(A))}}}else{c=G.renderer(u,m.getAt(B),Ext.apply(C,{hidden:false}),B,m);u.setAttributes(Ext.apply(c,l),true)}t[B].sprite=u}q=p.getCount();for(A=B;A<q;A++){p.getAt(A).hide(true)}if(G.stacked){B=m.getCount()}if(b){for(e=0;e<r;e++){h=a[e];q=h.getCount();for(A=B;A<q;A++){h.getAt(A).hide(true)}}}G.renderLabels()},onCreateLabel:function(e,l,d,g){var h=this,a=h.chart.surface,k=h.labelsGroup,b=h.label,c=Ext.apply({},b,h.seriesLabelStyle||{}),j;return a.add(Ext.apply({type:"text",group:k},c||{}))},onPlaceLabel:function(J,Q,t,M,q,L,w){var m=this,n=m.bounds,d=n.groupBarWidth,I=m.column,O=m.chart,v=O.chartBBox,D=O.resizing,p=t.value[0],R=t.value[1],l=t.attr,B=m.label,K=m.stacked,h=B.stackedDisplay,N=(B.orientation=="vertical"),j=[].concat(B.field),u=B.renderer,s,g,a,c,b=n.zero,r="insideStart",P="insideEnd",k="outside",G="over",o="under",H=4,F=2,e=n.signed,E,C,A;if(q==r||q==P||q==k){if(K&&(q==k)){J.hide(true);return}J.setAttributes({style:undefined});s=(Ext.isNumber(w)?u(Q.get(j[w]),J,Q,t,M,q,L,w):"");J.setAttributes({text:s});g=m.getLabelSize(s,J.attr.style);a=g.width;c=g.height;if(I){if(!a||!c||(K&&(l.height<c))){J.hide(true);return}E=l.x+(N?d/2:(d-a)/2);if(q==k){var z=(R>=0?(l.y-v.y):(v.y+v.height-l.y-l.height));if(z<c+F){q=P}}if(!K&&(q!=k)){if(c+F>l.height){q=k}}if(!C){C=l.y;if(R>=0){switch(q){case r:C+=l.height+(N?-F:-c/2);break;case P:C+=(N?c+H:c/2);break;case k:C+=(N?-F:-c/2);break}}else{switch(q){case r:C+=(N?c+F:c/2);break;case P:C+=(N?l.height-F:l.height-c/2);break;case k:C+=(N?l.height+c+F:l.height+c/2);break}}}}else{if(!a||!c||(K&&!l.width)){J.hide(true);return}C=l.y+(N?(d+c)/2:d/2);if(q==k){var z=(R>=0?(v.x+v.width-l.x-l.width):(l.x-v.x));if(z<a+H){q=P}}if((q!=k)&&!N){if(a+H>l.width){if(K){if(c>l.width){J.hide(true);return}E=l.x+l.width/2;C=l.y+l.height-(l.height-a)/2;N=true}else{q=k}}}if(!E){E=l.x;if(R>=0){switch(q){case r:E+=(N?a/2:H);break;case P:E+=l.width+(N?-a/2:-a-H);break;case k:E+=l.width+(N?a/2:H);break}}else{switch(q){case r:E+=l.width+(N?-a/2:-a-H);break;case P:E+=(N?a/2:H);break;case k:E+=(N?-a/2:-a-H);break}}}}}else{if(q==G||q==o){if(K&&h){s=J.attr.text;J.setAttributes({style:Ext.applyIf((J.attr&&J.attr.style)||{},{"font-weight":"bold","font-size":"14px"})});g=m.getLabelSize(s,J.attr.style);a=g.width;c=g.height;switch(q){case G:if(I){E=l.x+(N?d/2:(d-a)/2);C=b-(t.totalDim-t.totalNegDim)-c/2-F}else{E=b+(t.totalDim-t.totalNegDim)+H;C=l.y+(N?(d+c)/2:d/2)}break;case o:if(I){E=l.x+(N?d/2:(d-a)/2);C=b+t.totalNegDim+c/2}else{E=b-t.totalNegDim-a-H;C=l.y+(N?(d+c)/2:d/2)}break}}}}if(E==undefined||C==undefined){J.hide(true);return}J.isOutside=(q==k);J.setAttributes({text:s});A={x:E,y:C};if(N){A.rotate={x:E,y:C,degrees:270}}if(L&&D){if(I){E=l.x+l.width/2;C=b}else{E=b;C=l.y+l.height/2}J.setAttributes({x:E,y:C},true);if(N){J.setAttributes({rotate:{x:E,y:C,degrees:270}},true)}}if(L){m.onAnimate(J,{to:A})}else{J.setAttributes(Ext.apply(A,{hidden:false}),true)}},getLabelSize:function(j,g){var m=this.testerLabel,a=this.label,d=Ext.apply({},a,g,this.seriesLabelStyle||{}),b=a.orientation==="vertical",l,k,e,c;if(!m){m=this.testerLabel=this.chart.surface.add(Ext.apply({type:"text",opacity:0},d))}m.setAttributes({style:g,text:j},true);l=m.getBBox();k=l.width;e=l.height;return{width:b?e:k,height:b?k:e}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(a,d,b){var c=b.sprite.getBBox();return c.x<=a&&c.y<=d&&(c.x+c.width)>=a&&(c.y+c.height)>=d},hideAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=true;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},showAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=false;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},getLegendColor:function(a){var c=this,b=c.colorArrayStyle.length;if(c.style&&c.style.fill){return c.style.fill}else{return c.colorArrayStyle[a%b]}},highlightItem:function(a){this.callParent(arguments);this.renderLabels()},unHighlightItem:function(){this.callParent(arguments);this.renderLabels()},cleanHighlights:function(){this.callParent(arguments);this.renderLabels()}},1,0,0,0,["series.bar"],0,[Ext.chart.series,"Bar",Ext.chart,"BarSeries",Ext.chart,"BarChart",Ext.chart,"StackedBarChart"],0));(Ext.cmd.derive("Ext.chart.series.Column",Ext.chart.series.Bar,{alternateClassName:["Ext.chart.ColumnSeries","Ext.chart.ColumnChart","Ext.chart.StackedColumnChart"],type:"column",column:true,boundColumn:false,xPadding:10,yPadding:0},0,0,0,0,["series.column"],0,[Ext.chart.series,"Column",Ext.chart,"ColumnSeries",Ext.chart,"ColumnChart",Ext.chart,"StackedColumnChart"],0));(Ext.cmd.derive("Ext.chart.series.Gauge",Ext.chart.series.Series,{type:"gauge",rad:Math.PI/180,highlightDuration:150,angleField:false,needle:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(l){return h.getSegment(l)}},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b=d.label,c=e.length;d.yField=[];if(b&&b.field&&c>0){d.yField.push(e[0].get(b.field))}},getSegment:function(b){var D=this,C=D.rad,d=Math.cos,a=Math.sin,o=Math.abs,l=D.centerX,j=D.centerY,z=0,w=0,v=0,t=0,h=0,g=0,e=0,c=0,A=0.01,n=b.endRho-b.startRho,s=b.startAngle,q=b.endAngle,k=(s+q)/2*C,m=b.margin||0,u=o(q-s)>180,E=Math.min(s,q)*C,B=Math.max(s,q)*C,p=false;l+=m*d(k);j+=m*a(k);z=l+b.startRho*d(E);h=j+b.startRho*a(E);w=l+b.endRho*d(E);g=j+b.endRho*a(E);v=l+b.startRho*d(B);e=j+b.startRho*a(B);t=l+b.endRho*d(B);c=j+b.endRho*a(B);if(o(z-v)<=A&&o(h-e)<=A){p=true}if(p){return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["Z"]]}}else{return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["L",v,e],["A",b.startRho,b.startRho,0,+u,0,z,h],["Z"]]}}},calcMiddle:function(q){var l=this,m=l.rad,p=q.slice,o=l.centerX,n=l.centerY,k=p.startAngle,e=p.endAngle,j=Math.max(("rho" in p)?p.rho:l.radius,l.label.minMargin),h=+l.donut,b=Math.min(k,e)*m,a=Math.max(k,e)*m,d=-(b+(a-b)/2),g=o+(q.endRho+q.startRho)/2*Math.cos(d),c=n-(q.endRho+q.startRho)/2*Math.sin(d);q.middle={x:g,y:c}},drawSeries:function(){var w=this,U=w.chart,b=U.getChartStore(),A=w.group,Q=w.chart.animate,D=w.chart.axes.get(0),E=D&&D.minimum||w.minimum||0,I=D&&D.maximum||w.maximum||0,n=w.angleField||w.field||w.xField,K=U.surface,H=U.chartBBox,h=w.rad,c=+w.donut,V={},B=[],m=w.seriesStyle,a=w.seriesLabelStyle,g=w.colorArrayStyle,z=g&&g.length||0,k=Math.cos,s=Math.sin,t,e,d,v,r,C,M,F,G,J,S,R,l,T,x,o,O,P,q,y,u,N,L;Ext.apply(m,w.style||{});w.setBBox();y=w.bbox;if(w.colorSet){g=w.colorSet;z=g.length}if(!b||!b.getCount()||w.seriesIsHidden){w.hide();w.items=[];return}e=w.centerX=H.x+(H.width/2);d=w.centerY=H.y+H.height;w.radius=Math.min(e-H.x,d-H.y);w.slices=r=[];w.items=B=[];if(!w.value){J=b.getAt(0);w.value=J.get(n)}M=w.value;if(w.needle){N={series:w,value:M,startAngle:-180,endAngle:0,rho:w.radius};u=-180*(1-(M-E)/(I-E));r.push(N)}else{u=-180*(1-(M-E)/(I-E));N={series:w,value:M,startAngle:-180,endAngle:u,rho:w.radius};L={series:w,value:w.maximum-M,startAngle:u,endAngle:0,rho:w.radius};r.push(N,L)}for(S=0,G=r.length;S<G;S++){v=r[S];C=A.getAt(S);t=Ext.apply({segment:{startAngle:v.startAngle,endAngle:v.endAngle,margin:0,rho:v.rho,startRho:v.rho*+c/100,endRho:v.rho}},Ext.apply(m,g&&{fill:g[S%z]}||{}));F=Ext.apply({},t.segment,{slice:v,series:w,storeItem:J,index:S});B[S]=F;if(!C){q=Ext.apply({type:"path",group:A},Ext.apply(m,g&&{fill:g[S%z]}||{}));C=K.add(Ext.apply(q,t))}v.sprite=v.sprite||[];F.sprite=C;v.sprite.push(C);if(Q){t=w.renderer(C,J,t,S,b);C._to=t;w.onAnimate(C,{to:t})}else{t=w.renderer(C,J,Ext.apply(t,{hidden:false}),S,b);C.setAttributes(t,true)}}if(w.needle){u=u*Math.PI/180;if(!w.needleSprite){w.needleSprite=w.chart.surface.add({type:"path",path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))],"stroke-width":4,stroke:"#222"})}else{if(Q){w.onAnimate(w.needleSprite,{to:{path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))]}})}else{w.needleSprite.setAttributes({type:"path",path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))]})}}w.needleSprite.setAttributes({hidden:false},true)}delete w.value},setValue:function(a){this.value=a;this.drawSeries()},onCreateLabel:function(c,b,a,d){},onPlaceLabel:function(c,g,e,d,h,a,b){},onPlaceCallout:function(){},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;return(e===0)&&(b>=g&&b<a&&k>=n.startRho&&k<=n.endRho)},getLegendColor:function(b){var a=this.colorSet||this.colorArrayStyle;return a[b%a.length]}},1,0,0,0,["series.gauge"],0,[Ext.chart.series,"Gauge"],0));(Ext.cmd.derive("Ext.chart.series.Line",Ext.chart.series.Cartesian,{alternateClassName:["Ext.chart.LineSeries","Ext.chart.LineChart"],type:"line",selectionTolerance:20,showMarkers:true,markerConfig:{},style:{},smooth:false,defaultSmoothness:3,fill:false,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({"stroke-width":3},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}}]});e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},shrink:function(b,k,l){var h=b.length,j=Math.floor(h/l),g=1,d=0,a=0,e=[+b[0]],c=[+k[0]];for(;g<h;++g){d+=+b[g]||0;a+=+k[g]||0;if(g%j==0){e.push(d/j);c.push(a/j);d=0;a=0}}return{x:e,y:c}},drawSeries:function(){var ap=this,aC=ap.chart,W=aC.axes,ax=aC.getChartStore(),B=ax.data.items,au,Z=ax.getCount(),z=ap.chart.surface,aw={},V=ap.group,O=ap.showMarkers,aI=ap.markerGroup,H=aC.shadow,G=ap.shadowGroups,ac=ap.shadowAttributes,S=ap.smooth,s=G.length,aA=["M"],X=["M"],d=["M"],b=["M"],N=aC.markerIndex,ao=[].concat(ap.axis),an,aD=[],am={},ag=[],A={},M=false,U=[],aH=Ext.apply({},ap.markerStyle),af=ap.seriesStyle,w=ap.colorArrayStyle,T=w&&w.length||0,P=Ext.isNumber,aE=ap.seriesIdx,k=ap.getAxesForXAndYFields(),n=k.xAxis,aG=k.yAxis,ae=n?W.get(n).type:"",e=aG?W.get(aG).type:"",ai,l,ah,aj,E,c,ak,L,K,h,g,v,t,ab,R,Q,aB,o,J,I,aJ,p,r,F,a,ad,al,D,az,C,ay,q,aF,av,at,Y,m,u,aq,ar,aa;if(ap.fireEvent("beforedraw",ap)===false){return}if(!Z||ap.seriesIsHidden){ap.hide();ap.items=[];if(ap.line){ap.line.hide(true);if(ap.line.shadows){ai=ap.line.shadows;for(Q=0,s=ai.length;Q<s;Q++){l=ai[Q];l.hide(true)}}if(ap.fillPath){ap.fillPath.hide(true)}}ap.line=null;ap.fillPath=null;return}av=Ext.apply(aH||{},ap.markerConfig,{fill:ap.seriesStyle.fill||w[ap.themeIdx%w.length]});Y=av.type;delete av.type;at=af;if(!at["stroke-width"]){at["stroke-width"]=0.5}u="opacity" in at?at.opacity:1;aa="opacity" in at?at.opacity:0.3;aq="lineOpacity" in at?at.lineOpacity:u;ar="fillOpacity" in at?at.fillOpacity:aa;if(N&&aI&&aI.getCount()){for(R=0;R<N;R++){I=aI.getAt(R);aI.remove(I);aI.add(I);aJ=aI.getAt(aI.getCount()-2);I.setAttributes({x:0,y:0,translate:{x:aJ.attr.translation.x,y:aJ.attr.translation.y}},true)}}ap.unHighlightItem();ap.cleanHighlights();ap.setBBox();aw=ap.bbox;ap.clipRect=[aw.x,aw.y,aw.width,aw.height];if(o=W.get(n)){J=o.applyData();D=J.from;az=J.to}if(o=W.get(aG)){J=o.applyData();C=J.from;ay=J.to}if(ap.xField&&!Ext.isNumber(D)){o=ap.getMinMaxXValues();D=o[0];az=o[1]}if(ap.yField&&!Ext.isNumber(C)){o=ap.getMinMaxYValues();C=o[0];ay=o[1]}if(isNaN(D)){D=0;ad=aw.width/((Z-1)||1)}else{ad=aw.width/((az-D)||(Z-1)||1)}if(isNaN(C)){C=0;al=aw.height/((Z-1)||1)}else{al=aw.height/((ay-C)||(Z-1)||1)}for(R=0,aB=B.length;R<aB;R++){au=B[R];r=au.get(ap.xField);if(ae=="Time"&&typeof r=="string"){r=Date.parse(r)}if(typeof r=="string"||typeof r=="object"&&!Ext.isDate(r)||n&&W.get(n)&&W.get(n).type=="Category"){if(r in am){r=am[r]}else{r=am[r]=R}}F=au.get(ap.yField);if(e=="Time"&&typeof F=="string"){F=Date.parse(F)}if(typeof F=="undefined"||(typeof F=="string"&&!F)){continue}if(typeof F=="string"||typeof F=="object"&&!Ext.isDate(F)||aG&&W.get(aG)&&W.get(aG).type=="Category"){F=R}U.push(R);aD.push(r);ag.push(F)}aB=aD.length;if(aB>aw.width){a=ap.shrink(aD,ag,aw.width);aD=a.x;ag=a.y}ap.items=[];m=0;aB=aD.length;for(R=0;R<aB;R++){r=aD[R];F=ag[R];if(F===false){if(X.length==1){X=[]}M=true;ap.items.push(false);continue}else{L=(aw.x+(r-D)*ad).toFixed(2);K=((aw.y+aw.height)-(F-C)*al).toFixed(2);if(M){M=false;X.push("M")}X=X.concat([L,K])}if((typeof t=="undefined")&&(typeof K!="undefined")){t=K;v=L}if(!ap.line||aC.resizing){aA=aA.concat([L,aw.y+aw.height/2])}if(aC.animate&&aC.resizing&&ap.line){ap.line.setAttributes({path:aA,opacity:aq},true);if(ap.fillPath){ap.fillPath.setAttributes({path:aA,opacity:ar},true)}if(ap.line.shadows){ai=ap.line.shadows;for(Q=0,s=ai.length;Q<s;Q++){l=ai[Q];l.setAttributes({path:aA},true)}}}if(O){I=aI.getAt(m++);if(!I){I=Ext.chart.Shape[Y](z,Ext.apply({group:[V,aI],x:0,y:0,translate:{x:+(h||L),y:g||(aw.y+aw.height/2)},value:'"'+r+", "+F+'"',zIndex:4000},av));I._to={translate:{x:+L,y:+K}}}else{I.setAttributes({value:'"'+r+", "+F+'"',x:0,y:0,hidden:false},true);I._to={translate:{x:+L,y:+K}}}}ap.items.push({series:ap,value:[r,F],point:[L,K],sprite:I,storeItem:ax.getAt(U[R])});h=L;g=K}if(X.length<=1){return}if(ap.smooth){b=Ext.draw.Draw.smooth(X,P(S)?S:ap.defaultSmoothness)}d=S?b:X;if(aC.markerIndex&&ap.previousPath){aj=ap.previousPath;if(!S){Ext.Array.erase(aj,1,2)}}else{aj=X}if(!ap.line){ap.line=z.add(Ext.apply({type:"path",group:V,path:aA,stroke:at.stroke||at.fill},at||{}));ap;ap.line.setAttributes({opacity:aq},true);if(H){ap.line.setAttributes(Ext.apply({},ap.shadowOptions),true)}ap.line.setAttributes({fill:"none",zIndex:3000});if(!at.stroke&&T){ap.line.setAttributes({stroke:w[ap.themeIdx%T]},true)}if(H){ai=ap.line.shadows=[];for(ah=0;ah<s;ah++){an=ac[ah];an=Ext.apply({},an,{path:aA});l=z.add(Ext.apply({},{type:"path",group:G[ah]},an));ai.push(l)}}}if(ap.fill){c=d.concat([["L",L,aw.y+aw.height],["L",v,aw.y+aw.height],["L",v,t]]);if(!ap.fillPath){ap.fillPath=z.add({group:V,type:"path",fill:at.fill||w[ap.themeIdx%T],path:aA})}}ab=O&&aI.getCount();if(aC.animate){E=ap.fill;q=ap.line;ak=ap.renderer(q,false,{path:d},R,ax);Ext.apply(ak,at||{},{stroke:at.stroke||at.fill});delete ak.fill;q.show(true);if(aC.markerIndex&&ap.previousPath){ap.animation=aF=ap.onAnimate(q,{to:ak,from:{path:aj}})}else{ap.animation=aF=ap.onAnimate(q,{to:ak})}if(H){ai=q.shadows;for(Q=0;Q<s;Q++){ai[Q].show(true);if(aC.markerIndex&&ap.previousPath){ap.onAnimate(ai[Q],{to:{path:d},from:{path:aj}})}else{ap.onAnimate(ai[Q],{to:{path:d}})}}}if(E){ap.fillPath.show(true);ap.onAnimate(ap.fillPath,{to:Ext.apply({},{path:c,fill:at.fill||w[ap.themeIdx%T],"stroke-width":0,opacity:ar},at||{})})}if(O){m=0;for(R=0;R<aB;R++){if(ap.items[R]){p=aI.getAt(m++);if(p){ak=ap.renderer(p,ax.getAt(R),p._to,R,ax);ap.onAnimate(p,{to:Ext.applyIf(ak,av||{})});p.show(true)}}}for(;m<ab;m++){p=aI.getAt(m);p.hide(true)}}}else{ak=ap.renderer(ap.line,false,{path:d,hidden:false},R,ax);Ext.apply(ak,at||{},{stroke:at.stroke||at.fill});delete ak.fill;ap.line.setAttributes(ak,true);ap.line.setAttributes({opacity:aq},true);if(H){ai=ap.line.shadows;for(Q=0;Q<s;Q++){ai[Q].setAttributes({path:d,hidden:false},true)}}if(ap.fill){ap.fillPath.setAttributes({path:c,hidden:false,opacity:ar},true)}if(O){m=0;for(R=0;R<aB;R++){if(ap.items[R]){p=aI.getAt(m++);if(p){ak=ap.renderer(p,ax.getAt(R),p._to,R,ax);p.setAttributes(Ext.apply(av||{},ak||{}),true);if(!p.attr.hidden){p.show(true)}}}}for(;m<ab;m++){p=aI.getAt(m);p.hide(true)}}}if(aC.markerIndex){if(ap.smooth){Ext.Array.erase(X,1,2)}else{Ext.Array.splice(X,1,0,X[1],X[2])}ap.previousPath=X}ap.renderLabels();ap.renderCallouts();ap.fireEvent("draw",ap)},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply({},a,g.seriesLabelStyle||{});return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:Number(k.point[0]),y:j.y+j.height/2},b||{}))},onPlaceLabel:function(h,l,v,s,q,d,e){var z=this,m=z.chart,u=m.resizing,w=z.label,t=w.renderer,b=w.field,a=z.bbox,k=Number(v.point[0]),j=Number(v.point[1]),c=v.sprite.attr.radius,r,p,o,n,A,g;h.setAttributes({text:t(l.get(b),h,l,v,s,q,d,e),hidden:true},true);p=v.sprite.getBBox();p.width=p.width||(c*2);p.height=p.height||(c*2);r=h.getBBox();o=r.width/2;n=r.height/2;if(q=="rotate"){A=p.width/2+o+n/2;if(k+A+o>a.x+a.width){k-=A}else{k+=A}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(q=="under"||q=="over"){h.setAttributes({rotation:{degrees:0}},true);if(k<a.x+o){k=a.x+o}else{if(k+o>a.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(q=="over"?-g:g);if(j<a.y+n){j+=2*g}else{if(j+n>a.y+a.height){j-=2*g}}}}if(z.chart.animate&&!z.chart.resizing){h.show(true);z.onAnimate(h,{to:{x:k,y:j}})}else{h.setAttributes({x:k,y:j},true);if(u&&z.animation){z.animation.on("afteranimate",function(){h.show(true)})}else{h.show(true)}}},highlightItem:function(){var b=this,a=b.line;b.callParent(arguments);if(a&&!b.highlighted){if(!("__strokeWidth" in a)){a.__strokeWidth=parseFloat(a.attr["stroke-width"])||0}if(a.__anim){a.__anim.paused=true}a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":a.__strokeWidth+3}});b.highlighted=true}},unHighlightItem:function(){var c=this,a=c.line,b;c.callParent(arguments);if(a&&c.highlighted){b=a.__strokeWidth||parseFloat(a.attr["stroke-width"])||0;a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":b}});c.highlighted=false}},onPlaceCallout:function(m,r,J,G,F,d,k){if(!F){return}var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=G==0?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=[+J.point[0],+J.point[1]],A,g,N,K,o,q,I=L.offsetFromViz||30,C=L.offsetToSide||10,B=L.offsetBox||3,h,e,j,w,u,E=M.clipRect,b={width:L.styles.width||10,height:L.styles.height||10},n,l;if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&N[0]<0||Math.abs(o)>Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h<E[0]||(h+j)>(E[0]+E[2])){N[0]*=-1}if(e<E[1]||(e+w)>(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(s.animate){M.onAnimate(m.lines,{to:{path:["M",c[0],c[1],"L",n,l,"Z"]}});if(m.panel){m.panel.setPosition(h,e,true)}}else{m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);if(m.panel){m.panel.setPosition(h,e)}}for(u in m){m[u].show(true)}},isItemInPoint:function(j,g,A,q){var C=this,n=C.items,s=C.selectionTolerance,k=null,z,c,p,v,h,w,b,t,a,l,B,e,d,o,u,r,D=Math.sqrt,m=Math.abs;c=n[q];z=q&&n[q-1];if(q>=h){z=n[h-1]}p=z&&z.point;v=c&&c.point;w=z?p[0]:v[0]-s;b=z?p[1]:v[1];t=c?v[0]:p[0]+s;a=c?v[1]:p[1];e=D((j-w)*(j-w)+(g-b)*(g-b));d=D((j-t)*(j-t)+(g-a)*(g-a));o=Math.min(e,d);if(o<=s){return o==e?z:c}return false},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Cartesian.prototype.hideAll.call(e)}else{Ext.chart.series.Cartesian.prototype.showAll.call(e)}if(e.line){e.line.setAttributes({hidden:!a},true);if(e.line.shadows){for(b=0,c=e.line.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}if(e.fillPath){e.fillPath.setAttributes({hidden:!a},true)}},hideAll:function(){this.toggleAll(false)},showAll:function(){this.toggleAll(true)}},1,0,0,0,["series.line"],0,[Ext.chart.series,"Line",Ext.chart,"LineSeries",Ext.chart,"LineChart"],0));(Ext.cmd.derive("Ext.chart.series.Pie",Ext.chart.series.Series,{alternateClassName:["Ext.chart.PieSeries","Ext.chart.PieChart"],type:"pie",accuracy:100000,rad:Math.PI*2/100000,highlightDuration:150,angleField:false,lengthField:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;b.highlightCfg=Ext.merge({segment:{margin:20}},b.highlightCfg);Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(m){var l=h.getSegment(m);if(!l.path||l.path.length===0){l.path=["M",0,0]}return l};h.__excludes=h.__excludes||[]},onRedraw:function(){this.initialize()},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b,c,g;d.yField=[];if(d.label.field){for(b=0,c=e.length;b<c;b++){g=e[b];d.yField.push(g.get(d.label.field))}}},getSegment:function(d){var K=this,J=K.rad,j=Math.cos,a=Math.sin,q=K.centerX,o=K.centerY,F=0,E=0,D=0,B=0,m=0,l=0,k=0,g=0,z=0,c=0,w=0,b=0,H=0.01,A=d.startAngle,v=d.endAngle,p=(A+v)/2*J,s=d.margin||0,L=Math.min(A,v)*J,I=Math.max(A,v)*J,u=j(L),h=a(L),t=j(I),e=a(I),n=j(p),G=a(p),C=0,r=0.7071067811865476;if(I-L<H){return{path:""}}if(s!==0){q+=s*n;o+=s*G}E=q+d.endRho*u;l=o+d.endRho*h;B=q+d.endRho*t;g=o+d.endRho*e;w=q+d.endRho*n;b=o+d.endRho*G;if(d.startRho!==0){F=q+d.startRho*u;m=o+d.startRho*h;D=q+d.startRho*t;k=o+d.startRho*e;z=q+d.startRho*n;c=o+d.startRho*G;return{path:[["M",E,l],["A",d.endRho,d.endRho,0,0,1,w,b],["L",w,b],["A",d.endRho,d.endRho,0,C,1,B,g],["L",B,g],["L",D,k],["A",d.startRho,d.startRho,0,C,0,z,c],["L",z,c],["A",d.startRho,d.startRho,0,0,0,F,m],["L",F,m],["Z"]]}}else{return{path:[["M",q,o],["L",E,l],["A",d.endRho,d.endRho,0,0,1,w,b],["L",w,b],["A",d.endRho,d.endRho,0,C,1,B,g],["L",B,g],["L",q,o],["Z"]]}}},calcMiddle:function(o){var j=this,k=j.rad,n=o.slice,m=j.centerX,l=j.centerY,h=n.startAngle,d=n.endAngle,g=+j.donut,c=-(h+d)*k/2,a=(o.endRho+o.startRho)/2,e=m+a*Math.cos(c),b=l-a*Math.sin(c);o.middle={x:e,y:b}},drawSeries:function(){var s=this,a=s.chart.getChartStore(),W=a.data.items,I,x=s.group,S=s.chart.animate,k=s.angleField||s.field||s.xField,A=[].concat(s.lengthField),R=0,X=s.chart,J=X.surface,G=X.chartBBox,g=X.shadow,Q=s.shadowGroups,P=s.shadowAttributes,aa=Q.length,K=A.length,B=0,b=+s.donut,Z=[],y=[],u=0,M=0,t=0,h=s.seriesStyle,e=s.colorArrayStyle,w=e&&e.length||0,o,Y,C,H,E,d,c,q,l=0,r,n,z,L,D,ab,F,U,T,V,N,O,m,v;Ext.apply(h,s.style||{});s.setBBox();v=s.bbox;if(s.colorSet){e=s.colorSet;w=e.length}if(!a||!a.getCount()||s.seriesIsHidden){s.hide();s.items=[];return}s.unHighlightItem();s.cleanHighlights();d=s.centerX=G.x+(G.width/2);c=s.centerY=G.y+(G.height/2);s.radius=Math.min(d-G.x,c-G.y);s.slices=n=[];s.items=y=[];for(U=0,F=W.length;U<F;U++){I=W[U];if(this.__excludes&&this.__excludes[U]){continue}u+=+I.get(k);if(A[0]){for(T=0,R=0;T<K;T++){R+=+I.get(A[T])}Z[U]=R;M=Math.max(M,R)}}u=u||1;for(U=0,F=W.length;U<F;U++){I=W[U];if(this.__excludes&&this.__excludes[U]){L=0}else{L=I.get(k);if(l==0){l=1}}if(l==1){l=2;s.firstAngle=t=s.accuracy*L/u/2;for(T=0;T<U;T++){n[T].startAngle=n[T].endAngle=s.firstAngle}}V=t-s.accuracy*L/u;r={series:s,value:L,startAngle:t,endAngle:V,storeItem:I};if(A[0]){ab=+Z[U];r.rho=Math.floor(s.radius/M*ab)}else{r.rho=s.radius}n[U]=r;(function(){t=V})()}if(g){for(U=0,F=n.length;U<F;U++){r=n[U];r.shadowAttrs=[];for(T=0,B=0,C=[];T<K;T++){z=x.getAt(U*K+T);q=A[T]?a.getAt(U).get(A[T])/Z[U]*r.rho:r.rho;o={segment:{startAngle:r.startAngle,endAngle:r.endAngle,margin:0,rho:r.rho,startRho:B+(q*b/100),endRho:B+q},hidden:!r.value&&(r.startAngle%s.accuracy)==(r.endAngle%s.accuracy)};for(E=0,C=[];E<aa;E++){Y=P[E];H=Q[E].getAt(U);if(!H){H=X.surface.add(Ext.apply({},{type:"path",group:Q[E],strokeLinejoin:"round"},o,Y))}Y=s.renderer(H,a.getAt(U),Ext.apply({},o,Y),U,a);if(S){s.onAnimate(H,{to:Y})}else{H.setAttributes(Y,true)}C.push(H)}r.shadowAttrs[T]=C}}}for(U=0,F=n.length;U<F;U++){r=n[U];for(T=0,B=0;T<K;T++){z=x.getAt(U*K+T);q=A[T]?a.getAt(U).get(A[T])/Z[U]*r.rho:r.rho;o=Ext.apply({segment:{startAngle:r.startAngle,endAngle:r.endAngle,margin:0,rho:r.rho,startRho:B+(q*b/100),endRho:B+q},hidden:(!r.value&&(r.startAngle%s.accuracy)==(r.endAngle%s.accuracy))},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));D=Ext.apply({},o.segment,{slice:r,series:s,storeItem:r.storeItem,index:U});s.calcMiddle(D);if(g){D.shadows=r.shadowAttrs[T]}y[U]=D;if(!z){m=Ext.apply({type:"path",group:x,middle:D.middle},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));z=J.add(Ext.apply(m,o))}r.sprite=r.sprite||[];D.sprite=z;r.sprite.push(z);r.point=[D.middle.x,D.middle.y];if(S){o=s.renderer(z,a.getAt(U),o,U,a);z._to=o;z._animating=true;s.onAnimate(z,{to:o,listeners:{afteranimate:{fn:function(){this._animating=false},scope:z}}})}else{o=s.renderer(z,a.getAt(U),Ext.apply(o,{hidden:false}),U,a);z.setAttributes(o,true)}B+=q}}F=x.getCount();for(U=0;U<F;U++){if(!n[(U/K)>>0]&&x.getAt(U)){x.getAt(U).hide(true)}}if(g){aa=Q.length;for(E=0;E<F;E++){if(!n[(E/K)>>0]){for(T=0;T<aa;T++){if(Q[T].getAt(E)){Q[T].getAt(E).hide(true)}}}}}s.renderLabels();s.renderCallouts()},onCreateLabel:function(g,l,e,h){var j=this,k=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,m=l.middle,b=Ext.apply(j.seriesLabelStyle||{},a||{});return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:k,x:m.x,y:m.y},b))},onPlaceLabel:function(k,p,C,w,u,e,g){var E=this,q=E.chart,B=q.resizing,D=E.label,z=D.renderer,c=D.field,m=E.centerX,l=E.centerY,F=C.middle,b={x:F.x,y:F.y},o=F.x-m,n=F.y-l,t={},d=1,j=Math.atan2(n,o||1),A=j*180/Math.PI,h,v,s,r;b.hidden=false;if(this.__excludes&&this.__excludes[w]){b.hidden=true}function a(x){if(x<0){x+=360}return x%360}k.setAttributes({text:z(p.get(c),k,p,C,w,u,e,g)},true);switch(u){case"outside":d=Math.sqrt(o*o+n*n)*2;k.setAttributes({rotation:{degrees:0}},true);v=k.getBBox();s=v.width/2*Math.cos(j)+4;r=v.height/2*Math.sin(j)+4;d+=Math.sqrt(s*s+r*r);b.x=d*Math.cos(j)+m;b.y=d*Math.sin(j)+l;break;case"rotate":A=a(A);A=(A>90&&A<270)?A+180:A;h=k.attr.rotation.degrees;if(h!=null&&Math.abs(h-A)>180*0.5){if(A>h){A-=360}else{A+=360}A=A%360}else{A=a(A)}b.rotate={degrees:A,x:b.x,y:b.y};break;default:break}b.translate={x:0,y:0};if(e&&!B&&(u!="rotate"||h!=null)){E.onAnimate(k,{to:b})}else{k.setAttributes(b,true)}k._from=t},onPlaceCallout:function(l,o,z,v,u,d,e){var A=this,q=A.chart,j=A.centerX,h=A.centerY,B=z.middle,b={x:B.x,y:B.y},m=B.x-j,k=B.y-h,c=1,n,g=Math.atan2(k,m||1),a=(l&&l.label?l.label.getBBox():{width:0,height:0}),w=20,t=10,s=10,r;if(!a.width||!a.height){return}c=z.endRho+w;n=(z.endRho+z.startRho)/2+(z.endRho-z.startRho)/3;b.x=c*Math.cos(g)+j;b.y=c*Math.sin(g)+h;m=n*Math.cos(g);k=n*Math.sin(g);if(q.animate){A.onAnimate(l.lines,{to:{path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]}});A.onAnimate(l.box,{to:{x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s}});A.onAnimate(l.label,{to:{x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)}})}else{l.lines.setAttributes({path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]},true);l.box.setAttributes({x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s},true);l.label.setAttributes({x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)},true)}for(r in l){l[r].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;if(b>h.firstAngle){b-=h.accuracy}return(b<=g&&b>a&&k>=n.startRho&&k<=n.endRho)},hideAll:function(c){var g,b,j,h,e,a,d;c=(isNaN(this._index)?c:this._index)||0;this.__excludes=this.__excludes||[];this.__excludes[c]=true;d=this.slices[c].sprite;for(e=0,a=d.length;e<a;e++){d[e].setAttributes({hidden:true},true)}if(this.slices[c].shadowAttrs){for(g=0,h=this.slices[c].shadowAttrs,b=h.length;g<b;g++){j=h[g];for(e=0,a=j.length;e<a;e++){j[e].setAttributes({hidden:true},true)}}}this.drawSeries()},showAll:function(a){a=(isNaN(this._index)?a:this._index)||0;this.__excludes[a]=false;this.drawSeries()},highlightItem:function(s){var u=this,t=u.rad,w,d,o,q,a,e,k,b,m,c,g,p,h,v,n,l,j;s=s||this.items[this._index];this.unHighlightItem();if(!s||u.animating||(s.sprite&&s.sprite._animating)){return}u.callParent([s]);if(!u.highlight){return}if("segment" in u.highlightCfg){w=u.highlightCfg.segment;d=u.chart.animate;if(u.labelsGroup){g=u.labelsGroup;p=u.label.display;h=g.getAt(s.index);v=(s.startAngle+s.endAngle)/2*t;n=w.margin||0;l=n*Math.cos(v);j=n*Math.sin(v);if(Math.abs(l)<1e-10){l=0}if(Math.abs(j)<1e-10){j=0}if(d){h.stopAnimation();h.animate({to:{translate:{x:l,y:j}},duration:u.highlightDuration})}else{h.setAttributes({translate:{x:l,y:j}},true)}}if(u.chart.shadow&&s.shadows){q=0;a=s.shadows;k=a.length;for(;q<k;q++){e=a[q];b={};m=s.sprite._from.segment;for(c in m){if(!(c in w)){b[c]=m[c]}}o={segment:Ext.applyIf(b,u.highlightCfg.segment)};if(d){e.stopAnimation();e.animate({to:o,duration:u.highlightDuration})}else{e.setAttributes(o,true)}}}}},unHighlightItem:function(){var w=this,l,e,d,k,t,s,r,q,x,m,c,a,v,n,b,g,u,h,o;if(!w.highlight){return}if(("segment" in w.highlightCfg)&&w.items){l=w.items;e=w.chart.animate;d=!!w.chart.shadow;k=w.labelsGroup;t=l.length;s=0;r=0;q=w.label.display;for(;s<t;s++){u=l[s];if(!u){continue}n=u.sprite;if(n&&n._highlighted){if(k){h=k.getAt(u.index);o=Ext.apply({translate:{x:0,y:0}},q=="rotate"?{rotate:{x:h.attr.x,y:h.attr.y,degrees:h.attr.rotation.degrees}}:{});if(e){h.stopAnimation();h.animate({to:o,duration:w.highlightDuration})}else{h.setAttributes(o,true)}}if(d){b=u.shadows;x=b.length;for(;r<x;r++){c={};a=u.sprite._to.segment;v=u.sprite._from.segment;Ext.apply(c,v);for(m in a){if(!(m in v)){c[m]=a[m]}}g=b[r];if(e){g.stopAnimation();g.animate({to:{segment:c},duration:w.highlightDuration})}else{g.setAttributes({segment:c},true)}}}}}}w.callParent(arguments)},getLegendColor:function(a){var b=this;return(b.colorSet&&b.colorSet[a%b.colorSet.length])||b.colorArrayStyle[a%b.colorArrayStyle.length]}},1,0,0,0,["series.pie"],0,[Ext.chart.series,"Pie",Ext.chart,"PieSeries",Ext.chart,"PieChart"],0));(Ext.cmd.derive("Ext.chart.series.Radar",Ext.chart.series.Series,{type:"radar",rad:Math.PI/180,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var c=this,a=c.chart.surface;c.group=a.getGroup(c.seriesId);if(c.showMarkers){c.markerGroup=a.getGroup(c.seriesId+"-markers")}},drawSeries:function(){var u=this,b=u.chart.getChartStore(),N=b.data.items,O,E,v=u.group,P=u.chart,H=P.series.items,I,t,k,n=u.field||u.yField,G=P.surface,B=P.chartBBox,h=u.colorArrayStyle,e,c,w,J,p=0,a=[],A=Math.max,j=Math.cos,q=Math.sin,o=Math.PI*2,L=b.getCount(),g,K,F,D,C,M,r,m=u.seriesStyle,z=P.axes&&P.axes.get(0),Q=!(z&&z.maximum);u.setBBox();p=Q?0:(z.maximum||0);Ext.apply(m,u.style||{});if(!b||!b.getCount()||u.seriesIsHidden){u.hide();u.items=[];if(u.radar){u.radar.hide(true)}u.radar=null;return}if(!m.stroke){m.stroke=h[u.themeIdx%h.length]}u.unHighlightItem();u.cleanHighlights();e=u.centerX=B.x+(B.width/2);c=u.centerY=B.y+(B.height/2);u.radius=J=Math.min(B.width,B.height)/2;u.items=w=[];if(Q){for(I=0,t=H.length;I<t;I++){k=H[I];a.push(k.yField)}for(O=0;O<L;O++){E=N[O];for(M=0,r=a.length;M<r;M++){p=A(+E.get(a[M]),p)}}}p=p||1;g=[];K=[];for(M=0;M<L;M++){E=N[M];C=J*E.get(n)/p;F=C*j(M/L*o);D=C*q(M/L*o);if(M==0){K.push("M",F+e,D+c);g.push("M",0.01*F+e,0.01*D+c)}else{K.push("L",F+e,D+c);g.push("L",0.01*F+e,0.01*D+c)}w.push({sprite:false,point:[e+F,c+D],storeItem:E,series:u})}K.push("Z");if(!u.radar){u.radar=G.add(Ext.apply({type:"path",group:v,path:g},m||{}))}if(P.resizing){u.radar.setAttributes({path:g},true)}if(P.animate){u.onAnimate(u.radar,{to:Ext.apply({path:K},m||{})})}else{u.radar.setAttributes(Ext.apply({path:K},m||{}),true)}if(u.showMarkers){u.drawMarkers()}u.renderLabels();u.renderCallouts()},drawMarkers:function(){var n=this,k=n.chart,a=k.surface,p=k.getChartStore(),b=Ext.apply({},n.markerStyle||{}),j=Ext.apply(b,n.markerConfig,{fill:n.colorArrayStyle[n.themeIdx%n.colorArrayStyle.length]}),m=n.items,o=j.type,s=n.markerGroup,e=n.centerX,d=n.centerY,r,h,c,g,q;delete j.type;for(h=0,c=m.length;h<c;h++){r=m[h];g=s.getAt(h);if(!g){g=Ext.chart.Shape[o](a,Ext.apply({group:s,x:0,y:0,translate:{x:e,y:d}},j))}else{g.show()}r.sprite=g;if(k.resizing){g.setAttributes({x:0,y:0,translate:{x:e,y:d}},true)}g._to={translate:{x:r.point[0],y:r.point[1]}};q=n.renderer(g,p.getAt(h),g._to,h,p);q=Ext.applyIf(q||{},j||{});if(k.animate){n.onAnimate(g,{to:q})}else{g.setAttributes(q,true)}}},isItemInPoint:function(c,g,e){var b,d=10,a=Math.abs;b=e.point;return(a(b[0]-c)<=d&&a(b[1]-g)<=d)},onCreateLabel:function(g,l,e,h){var j=this,k=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,b=Ext.apply({},a,j.seriesLabelStyle||{});return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:k,x:d,y:c},b||{}))},onPlaceLabel:function(h,o,v,s,q,d,e){var A=this,p=A.chart,u=p.resizing,z=A.label,t=z.renderer,c=z.field,k=A.centerX,j=A.centerY,b={x:Number(v.point[0]),y:Number(v.point[1])},m=b.x-k,l=b.y-j,g=Math.atan2(l,m||1),n=g*180/Math.PI,r,w;function a(x){if(x<0){x+=360}return x%360}h.setAttributes({text:t(o.get(c),h,o,v,s,q,d,e),hidden:true},true);r=h.getBBox();n=a(n);if((n>45&&n<135)||(n>225&&n<315)){w=(n>45&&n<135?1:-1);b.y+=w*r.height/2}else{w=(n>=135&&n<=225?-1:1);b.x+=w*r.width/2}if(u){h.setAttributes({x:k,y:j},true)}if(d){h.show(true);A.onAnimate(h,{to:b})}else{h.setAttributes(b,true);h.show(true)}},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Radar.superclass.hideAll.call(e)}else{Ext.chart.series.Radar.superclass.showAll.call(e)}if(e.radar){e.radar.setAttributes({hidden:!a},true);if(e.radar.shadows){for(b=0,c=e.radar.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}},hideAll:function(){this.toggleAll(false);this.hideMarkers(0)},showAll:function(){this.toggleAll(true)},hideMarkers:function(a){var d=this,c=d.markerGroup&&d.markerGroup.getCount()||0,b=a||0;for(;b<c;b++){d.markerGroup.getAt(b).hide(true)}},getAxesForXAndYFields:function(){var c=this,b=c.chart,d=b.axes,a=[].concat(d&&d.get(0));return{yAxis:a}}},1,0,0,0,["series.radar"],0,[Ext.chart.series,"Radar"],0));(Ext.cmd.derive("Ext.chart.series.Scatter",Ext.chart.series.Cartesian,{type:"scatter",constructor:function(c){this.callParent(arguments);var e=this,g=e.chart.shadow,a=e.chart.surface,d,b;Ext.apply(e,c,{style:{},markerConfig:{},shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)"},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)"},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)"}]});e.group=a.getGroup(e.seriesId);if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getBounds:function(){var s=this,j=s.chart,d=j.getChartStore(),o=j.axes,l=s.getAxesForXAndYFields(),k=l.xAxis,e=l.yAxis,a,t,c,g,r,p,q,n,m,b,h;s.setBBox();a=s.bbox;if(b=o.get(k)){h=b.applyData();r=h.from;q=h.to}if(b=o.get(e)){h=b.applyData();p=h.from;n=h.to}if(s.xField&&!Ext.isNumber(r)){b=s.getMinMaxXValues();r=b[0];q=b[1]}if(s.yField&&!Ext.isNumber(p)){b=s.getMinMaxYValues();p=b[0];n=b[1]}if(isNaN(r)){r=0;q=d.getCount()-1;t=a.width/(d.getCount()-1)}else{t=a.width/(q-r)}if(isNaN(p)){p=0;n=d.getCount()-1;c=a.height/(d.getCount()-1)}else{c=a.height/(n-p)}return{bbox:a,minX:r,minY:p,xScale:t,yScale:c}},getPaths:function(){var z=this,n=z.chart,b=n.shadow,e=n.getChartStore(),B=e.data.items,s,l,d,j=z.group,g=z.bounds=z.getBounds(),a=z.bbox,C=g.xScale,c=g.yScale,v=g.minX,u=g.minY,A=a.x,w=a.y,h=a.height,o=z.items=[],q=[],m,k,r,t,p;for(s=0,l=B.length;s<l;s++){d=B[s];r=d.get(z.xField);t=d.get(z.yField);if(typeof t=="undefined"||(typeof t=="string"&&!t)||r==null||t==null){continue}if(typeof r=="string"||typeof r=="object"&&!Ext.isDate(r)){r=s}if(typeof t=="string"||typeof t=="object"&&!Ext.isDate(t)){t=s}m=A+(r-v)*C;k=w+h-(t-u)*c;q.push({x:m,y:k});z.items.push({series:z,value:[r,t],point:[m,k],storeItem:d});if(n.animate&&n.resizing){p=j.getAt(s);if(p){z.resetPoint(p);if(b){z.resetShadow(p)}}}}return q},resetPoint:function(a){var b=this.bbox;a.setAttributes({translate:{x:(b.x+b.width)/2,y:(b.y+b.height)/2}},true)},resetShadow:function(c){var g=this,e=c.shadows,j=g.shadowAttributes,d=g.shadowGroups.length,h=g.bbox,b,a;for(b=0;b<d;b++){a=Ext.apply({},j[b]);if(a.translate){a.translate.x+=(h.x+h.width)/2;a.translate.y+=(h.y+h.height)/2}else{a.translate={x:(h.x+h.width)/2,y:(h.y+h.height)/2}}e[b].setAttributes(a,true)}},createPoint:function(a,c){var d=this,b=d.chart,e=d.group,g=d.bbox;return Ext.chart.Shape[c](b.surface,Ext.apply({},{x:0,y:0,group:e,translate:{x:(g.x+g.width)/2,y:(g.y+g.height)/2}},a))},createShadow:function(n,g,k){var j=this,h=j.chart,l=j.shadowGroups,d=j.shadowAttributes,a=l.length,o=j.bbox,c,m,b,e;n.shadows=b=[];for(c=0;c<a;c++){e=Ext.apply({},d[c]);if(e.translate){e.translate.x+=(o.x+o.width)/2;e.translate.y+=(o.y+o.height)/2}else{Ext.apply(e,{translate:{x:(o.x+o.width)/2,y:(o.y+o.height)/2}})}Ext.apply(e,g);m=Ext.chart.Shape[k](h.surface,Ext.apply({},{x:0,y:0,group:l[c]},e));b.push(m)}},drawSeries:function(){var u=this,l=u.chart,h=l.getChartStore(),j=u.group,c=l.shadow,a=u.shadowGroups,q=u.shadowAttributes,r=a.length,m,n,o,k,p,t,e,g,b,d,s;t=Ext.apply(u.markerStyle,u.markerConfig);g=t.type||"circle";delete t.type;if(!h||!h.getCount()){u.hide();u.items=[];return}u.unHighlightItem();u.cleanHighlights();n=u.getPaths();k=n.length;for(p=0;p<k;p++){o=n[p];m=j.getAt(p);Ext.apply(o,t);if(!m){m=u.createPoint(o,g);if(c){u.createShadow(m,t,g)}}b=m.shadows;if(l.animate){d=u.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;u.onAnimate(m,{to:d});for(e=0;e<r;e++){s=Ext.apply({},q[e]);d=u.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(s.translate?s.translate.x:0),y:o.y+(s.translate?s.translate.y:0)}},s),p,h);u.onAnimate(b[e],{to:d})}}else{d=u.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;m.setAttributes(d,true);for(e=0;e<r;e++){s=Ext.apply({},q[e]);d=u.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(s.translate?s.translate.x:0),y:o.y+(s.translate?s.translate.y:0)}},s),p,h);b[e].setAttributes(d,true)}}u.items[p].sprite=m}k=j.getCount();for(p=n.length;p<k;p++){j.getAt(p).hide(true)}u.renderLabels();u.renderCallouts()},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,b=Ext.apply({},a,g.seriesLabelStyle),j=g.bbox;return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:Number(k.point[0]),y:j.y+j.height/2},b))},onPlaceLabel:function(h,l,w,t,r,d,e){var A=this,m=A.chart,v=m.resizing,z=A.label,u=z.renderer,b=z.field,a=A.bbox,k=Number(w.point[0]),j=Number(w.point[1]),c=w.sprite.attr.radius,s,p,o,n,B,g,q;h.setAttributes({text:u(l.get(b),h,l,w,t,r,d,e),hidden:true},true);p=w.sprite.getBBox();p.width=p.width||(c*2);p.height=p.height||(c*2);s=h.getBBox();o=s.width/2;n=s.height/2;if(r=="rotate"){B=p.width/2+o+n/2;if(k+B+o>a.x+a.width){k-=B}else{k+=B}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(r=="under"||r=="over"){h.setAttributes({rotation:{degrees:0}},true);if(k<a.x+o){k=a.x+o}else{if(k+o>a.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(r=="over"?-g:g);if(j<a.y+n){j+=2*g}else{if(j+n>a.y+a.height){j-=2*g}}}}if(!m.animate){h.setAttributes({x:k,y:j},true);h.show(true)}else{if(v){q=w.sprite.getActiveAnimation();if(q){q.on("afteranimate",function(){h.setAttributes({x:k,y:j},true);h.show(true)})}else{h.show(true)}}else{A.onAnimate(h,{to:{x:k,y:j}})}}},onPlaceCallout:function(k,m,B,z,w,c,h){var E=this,n=E.chart,u=n.surface,A=n.resizing,D=E.callouts,o=E.items,b=B.point,F,a=k.label.getBBox(),C=30,t=10,s=3,e,d,g,r,q,v=E.bbox,l,j;F=[Math.cos(Math.PI/4),-Math.sin(Math.PI/4)];l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(e<v[0]||(e+g)>(v[0]+v[2])){F[0]*=-1}if(d<v[1]||(d+r)>(v[1]+v[3])){F[1]*=-1}l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(n.animate){E.onAnimate(k.lines,{to:{path:["M",b[0],b[1],"L",l,j,"Z"]}},true);E.onAnimate(k.box,{to:{x:e,y:d,width:g,height:r}},true);E.onAnimate(k.label,{to:{x:l+(F[0]>0?s:-(a.width+s)),y:j}},true)}else{k.lines.setAttributes({path:["M",b[0],b[1],"L",l,j,"Z"]},true);k.box.setAttributes({x:e,y:d,width:g,height:r},true);k.label.setAttributes({x:l+(F[0]>0?s:-(a.width+s)),y:j},true)}for(q in k){k[q].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(c,h,e){var b,d=10,a=Math.abs;function g(j){var l=a(j[0]-c),k=a(j[1]-h);return Math.sqrt(l*l+k*k)}b=e.point;return(b[0]-d<=c&&b[0]+d>=c&&b[1]-d<=h&&b[1]+d>=h)}},1,0,0,0,["series.scatter"],0,[Ext.chart.series,"Scatter"],0));(Ext.cmd.derive("Ext.layout.container.Table",Ext.layout.container.Container,{alternateClassName:"Ext.layout.TableLayout",monitorResize:false,type:"table",createsInnerCt:true,targetCls:Ext.baseCSSPrefix+"table-layout-ct",tableCls:Ext.baseCSSPrefix+"table-layout",cellCls:Ext.baseCSSPrefix+"table-layout-cell",tableAttrs:null,getItemSizePolicy:function(a){return this.autoSizePolicy},initHierarchyState:function(a){a.inShrinkWrapTable=true},getLayoutItems:function(){var g=this,b=[],c=g.callParent(),e,a=c.length,d;for(d=0;d<a;d++){e=c[d];if(!e.hidden){b.push(e)}}return b},getHiddenItems:function(){var b=[],c=this.owner.items.items,a=c.length,d=0,e;for(;d<a;++d){e=c[d];if(e.rendered&&e.hidden){b.push(e)}}return b},renderChildren:function(){var l=this,k=l.getLayoutItems(),h=l.owner.getTargetEl().child("table",true).tBodies[0],r=h.rows,g=0,j=k.length,e=l.getHiddenItems(),q,o,c,a,p,n,m,b,d;q=l.calculateCells(k);for(;g<j;g++){o=q[g];c=o.rowIdx;a=o.cellIdx;p=k[g];n=r[c];if(!n){n=h.insertRow(c);if(l.trAttrs){n.set(l.trAttrs)}}b=m=Ext.get(n.cells[a]||n.insertCell(a));if(l.needsDivWrap()){b=m.first()||m.createChild({tag:"div"});b.setWidth(null)}if(!p.rendered){l.renderItem(p,b,0)}else{if(!l.isValidParent(p,b,c,a,h)){l.moveItem(p,b,0)}}if(l.tdAttrs){m.set(l.tdAttrs)}if(p.tdAttrs){m.set(p.tdAttrs)}m.set({colSpan:p.colspan||1,rowSpan:p.rowspan||1,id:p.cellId||"",cls:l.cellCls+" "+(p.cellCls||"")});if(!q[g+1]||q[g+1].rowIdx!==c){a++;while(n.cells[a]){n.deleteCell(a)}}}c++;while(h.rows[c]){h.deleteRow(c)}for(g=0,j=e.length;g<j;++g){l.ensureInDocument(e[g].getEl())}},ensureInDocument:function(a){var b=a.dom.parentNode;while(b){if(b.tagName.toUpperCase()=="BODY"){return}b=b.parentNode}Ext.getDetachedBody().appendChild(a)},calculate:function(g){if(!g.hasDomProp("containerChildrenSizeDone")){this.done=false}else{var c=g.targetContext,b=g.widthModel.shrinkWrap,a=g.heightModel.shrinkWrap,h=a||b,d=h&&c.el.child("table",true),e=h&&c.getPaddingInfo();if(b){g.setContentWidth(d.offsetWidth+e.width,true)}if(a){g.setContentHeight(d.offsetHeight+e.height,true)}}},finalizeLayout:function(){if(this.needsDivWrap()){var b=this.getLayoutItems(),c,a=b.length,d;for(c=0;c<a;c++){d=b[c];Ext.fly(d.el.dom.parentNode).setWidth(d.getWidth())}}if(Ext.isIE6||Ext.isIEQuirks){this.owner.getTargetEl().child("table").repaint()}},calculateCells:function(k){var m=[],b=0,d=0,a=0,h=this.columns||Infinity,n=[],e=0,c,g=k.length,l;for(;e<g;e++){l=k[e];while(d>=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c<h;c++){if(n[c]>0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var k=this,h=k.getLayoutItems(),o,p=[],q=Ext.apply({tag:"table",role:"presentation",cls:k.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:p}},k.tableAttrs),c=k.tdAttrs,d=k.needsDivWrap(),e,g=h.length,n,m,j,b,a,l;o=k.calculateCells(h);for(e=0;e<g;e++){n=h[e];m=o[e];b=m.rowIdx;a=m.cellIdx;j=p[b];if(!j){j=p[b]={tag:"tr",cn:[]};if(k.trAttrs){Ext.apply(j,k.trAttrs)}}l=j.cn[a]={tag:"td"};if(c){Ext.apply(l,c)}Ext.apply(l,{colSpan:n.colspan||1,rowSpan:n.rowspan||1,id:n.cellId||"",cls:k.cellCls+" "+(n.cellCls||"")});if(d){l=l.cn={tag:"div"}}k.configureItem(n);l.cn=n.getRenderTree()}return q},isValidParent:function(g,h,e,d){var b,a,c;if(arguments.length===3){c=g.el.up("table");return c&&c.dom.parentNode===h.dom}b=this.owner.getTargetEl().child("table",true).tBodies[0];a=b.rows[e].cells[d];return g.el.dom.parentNode===a},needsDivWrap:function(){return Ext.isOpera10_5}},0,0,0,0,["layout.table"],0,[Ext.layout.container,"Table",Ext.layout,"TableLayout"],0));(Ext.cmd.derive("Ext.container.ButtonGroup",Ext.panel.Panel,{alternateClassName:"Ext.ButtonGroup",baseCls:Ext.baseCSSPrefix+"btn-group",layout:{type:"table"},defaultType:"button",frame:true,frameHeader:false,titleAlign:"center",noTitleCls:"notitle",initComponent:function(){var a=this,b=a.columns;if(b){a.layout=Ext.apply({},{columns:b},a.layout)}if(!a.title){a.addClsWithUI(a.noTitleCls)}a.callParent(arguments)},onBeforeAdd:function(a){if(a.isButton){if(this.defaultButtonUI&&a.ui==="default"&&!a.hasOwnProperty("ui")){a.ui=this.defaultButtonUI}else{a.ui=a.ui+"-toolbar"}}this.callParent(arguments)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a}},0,["buttongroup"],["buttongroup","panel","component","container","box"],{buttongroup:true,panel:true,component:true,container:true,box:true},["widget.buttongroup"],0,[Ext.container,"ButtonGroup",Ext,"ButtonGroup"],0));(Ext.cmd.derive("Ext.container.Monitor",Ext.Base,{target:null,selector:"",scope:null,addHandler:null,removeHandler:null,disabled:0,constructor:function(a){Ext.apply(this,a)},bind:function(b){var a=this;a.target=b;b.on("beforedestroy",a.disable,a);a.onContainerAdd(b)},unbind:function(){var a=this,b=a.target;if(b){b.un("beforedestroy",a.disable,a)}a.items=null},disable:function(){++this.disabled},enable:function(){if(this.disabled>0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isQueryable){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var k=this,j,h,c=k.handleAdd,a=k.handleRemove,d,e;if(g.isContainer){g.on("add",c,k);g.on("dockedadd",c,k);g.on("remove",a,k);g.on("dockedremove",a,k)}if(b!==true){j=g.query(k.selector);for(d=0,h=j.length;d<h;++d){e=j[d];k.onItemAdd(e.ownerCt,e)}}j=g.query("container");for(d=0,h=j.length;d<h;++d){k.onContainerAdd(j[d],true)}},handleRemove:function(b,a){var c=this;if(!c.disabled){if(a.is(c.selector)){c.onItemRemove(b,a)}if(a.isQueryable){c.onContainerRemove(b,a)}}},onContainerRemove:function(e,c){var h=this,b,d,a,g;if(!c.isDestroyed&&!c.destroying&&c.isContainer){h.removeCtListeners(c);b=c.query(h.selector);for(d=0,a=b.length;d<a;++d){g=b[d];h.onItemRemove(g.ownerCt,g)}b=c.query("container");for(d=0,a=b.length;d<a;++d){h.removeCtListeners(b[d])}}else{h.invalidateItems()}},removeCtListeners:function(a){var b=this;a.un("add",b.handleAdd,b);a.un("dockedadd",b.handleAdd,b);a.un("remove",b.handleRemove,b);a.un("dockedremove",b.handleRemove,b)},getItems:function(){var b=this,a=b.items;if(!a){a=b.items=new Ext.util.MixedCollection();a.addAll(b.target.query(b.selector))}return a},invalidateItems:function(){this.items=null}},1,0,0,0,0,0,[Ext.container,"Monitor"],0));(Ext.cmd.derive("Ext.container.Viewport",Ext.container.Container,{alternateClassName:"Ext.Viewport",isViewport:true,ariaRole:"application",preserveElOnDestroy:true,viewportCls:Ext.baseCSSPrefix+"viewport",initComponent:function(){var c=this,a=document.body.parentNode,b=c.el=Ext.getBody();Ext.getScrollbarSize();c.width=c.height=undefined;c.callParent(arguments);Ext.fly(a).addCls(c.viewportCls);if(c.autoScroll){Ext.fly(a).setStyle(c.getOverflowStyle());delete c.autoScroll}b.setHeight=b.setWidth=Ext.emptyFn;b.dom.scroll="no";c.allowDomMove=false;c.renderTo=c.el},applyTargetCls:function(a){this.el.addCls(a)},onRender:function(){var a=this;a.callParent(arguments);a.width=Ext.Element.getViewportWidth();a.height=Ext.Element.getViewportHeight()},afterFirstLayout:function(){var a=this;a.callParent(arguments);setTimeout(function(){Ext.EventManager.onWindowResize(a.fireResize,a)},1)},fireResize:function(b,a){if(b!=this.width||a!=this.height){this.setSize(b,a)}},initHierarchyState:function(a){this.callParent([this.hierarchyState=Ext.rootHierarchyState])},beforeDestroy:function(){var a=this;a.removeUIFromElement();a.el.removeCls(a.baseCls);Ext.fly(document.body.parentNode).removeCls(a.viewportCls);a.callParent()}},0,["viewport"],["viewport","component","container","box"],{viewport:true,component:true,container:true,box:true},["widget.viewport"],0,[Ext.container,"Viewport",Ext,"Viewport"],0));(Ext.cmd.derive("Ext.data.IdGenerator",Ext.Base,{isGenerator:true,constructor:function(a){var b=this;Ext.apply(b,a);if(b.id){Ext.data.IdGenerator.all[b.id]=b}},getRecId:function(a){return a.modelName+"-"+a.internalId},statics:{all:{},get:function(a){var c,d,b;if(typeof a=="string"){d=b=a;a=null}else{if(a.isGenerator){return a}else{d=a.id||a.type;b=a.type}}c=this.all[d];if(!c){c=Ext.create("idgen."+b,a)}return c}}},1,0,0,0,0,0,[Ext.data,"IdGenerator"],0));(Ext.cmd.derive("Ext.data.SortTypes",Ext.Base,{singleton:true,none:Ext.identityFn,stripTagsRE:/<\/?[^>]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}},0,0,0,0,0,0,[Ext.data,"SortTypes"],0));(Ext.cmd.derive("Ext.data.Types",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext.data,"Types"],function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(b)}return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){if(typeof b==="number"){return b}return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})}));(Ext.cmd.derive("Ext.data.Field",Ext.Base,{isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true},1,0,0,0,["data.field"],0,[Ext.data,"Field"],0));(Ext.cmd.derive("Ext.data.Errors",Ext.util.MixedCollection,{isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;b<this.length;b++){a=this.items[b];if(a.field==d){c.push(a)}}return c}},0,0,0,0,0,0,[Ext.data,"Errors"],0));(Ext.cmd.derive("Ext.data.validations",Ext.Base,{singleton:true,presenceMessage:"must be present",lengthMessage:"is the wrong length",formatMessage:"is the wrong format",inclusionMessage:"is not included in the list of acceptable values",exclusionMessage:"is not an acceptable value",emailMessage:"is not a valid email address",emailRe:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,presence:function(a,b){if(arguments.length===1){b=a}return !!b||b===0||b===false},length:function(b,e){if(e===undefined||e===null){return false}var d=e.length,c=b.min,a=b.max;if((c&&d<c)||(a&&d>a)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}},0,0,0,0,0,0,[Ext.data,"validations"],0));(Ext.cmd.derive("Ext.data.Model",Ext.Base,{alternateClassName:"Ext.data.Record",compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,F){var E=this,G=Ext.getClassName(g),t=g.prototype,z=g.prototype.superclass,j=F.validations||[],v=F.fields||[],h,o=F.associations||[],e=function(I,K){var J=0,H,L;if(I){I=Ext.Array.from(I);for(H=I.length;J<H;++J){L=I[J];if(!Ext.isObject(L)){L={model:L}}L.type=K;o.push(L)}}},w=F.idgen,C=new Ext.util.MixedCollection(false,t.itemNameFn),A=new Ext.util.MixedCollection(false,t.itemNameFn),s=z.validations,D=z.fields,m=z.associations,B,y,q,r=[],p="idProperty" in F?F.idProperty:t.idProperty,n=p?(p.isField?p:new Ext.data.Field(p)):null,k=false,x=function(J,I,H){var K,L;if(C.events.add.firing){L=J;K=I}else{K=H;L=I.originalIndex}K.originalIndex=L;if(n&&((K.mapping&&(K.mapping===n.mapping))||(K.name===n.name))){t.idField=K;k=true;K.defaultValue=undefined}},u=F.proxy,l=function(){C.sortBy(t.compareConvertFields)};g.modelName=G;t.modelName=G;if(s){j=s.concat(j)}F.validations=j;if(D){v=D.items.concat(v)}C.on({add:x,replace:x});for(y=0,q=v.length;y<q;++y){h=v[y];C.add(h.isField?h:new Ext.data.Field(h))}if(n&&!k){t.idField=n;n.defaultValue=undefined;C.add(n)}l();C.on({add:l,replace:l});F.fields=C;if(w){F.idgen=Ext.data.IdGenerator.get(w)}e(F.belongsTo,"belongsTo");delete F.belongsTo;e(F.hasMany,"hasMany");delete F.hasMany;e(F.hasOne,"hasOne");delete F.hasOne;if(m){o=m.items.concat(o)}for(y=0,q=o.length;y<q;++y){r.push("association."+o[y].type.toLowerCase())}if(u){if(!u.isProxy){r.push("proxy."+(u.type||u))}}else{if(!g.prototype.proxy){g.prototype.proxy=g.prototype.defaultProxyType;r.push("proxy."+g.prototype.defaultProxyType)}}Ext.require(r,function(){Ext.ModelManager.registerType(G,g);for(y=0,q=o.length;y<q;++y){B=o[y];if(B.isAssociation){B=Ext.applyIf({ownerModel:G,associatedModel:B.model},B.initialConfig)}else{Ext.apply(B,{ownerModel:G,associatedModel:B.model})}if(Ext.ModelManager.getModel(B.model)===undefined){Ext.ModelManager.registerDeferredAssociation(B)}else{A.add(Ext.data.association.Association.create(B))}}F.associations=A;d.call(E,g,F,a);if(u&&u.isProxy){g.setProxy(u)}Ext.ModelManager.onModelDefined(g)})}},inheritableStatics:{setProxy:function(a){if(!a.isProxy){if(typeof a=="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this);this.proxy=this.prototype.proxy=a;return a},getProxy:function(){var a=this.proxy;if(!a){a=this.prototype.proxy;if(a.isProxy){a=a.clone()}return this.setProxy(a)}return a},setFields:function(g,n,m){var k=this,a,b,l=false,e=k.prototype,c=e.fields,j=e.superclass.fields,h,d;if(n){e.idProperty=n;b=n.isField?n:new Ext.data.Field(n)}if(m){e.clientIdProperty=m}if(c){c.clear()}else{c=k.prototype.fields=new Ext.util.MixedCollection(false,function(o){return o.name})}if(j){g=j.items.concat(g)}for(d=0,h=g.length;d<h;d++){a=new Ext.data.Field(g[d]);if(b&&((a.mapping&&(a.mapping===b.mapping))||(a.name===b.name))){l=true;a.defaultValue=undefined}c.add(a)}if(b&&!l){b.defaultValue=undefined;c.add(b)}k.fields=c;return c},getFields:function(){return this.prototype.fields.items},load:function(e,b){b=Ext.apply({},b);b=Ext.applyIf(b,{action:"read",id:e});var a=new Ext.data.Operation(b),c=b.scope||this,d;d=function(h){var g=null,j=h.wasSuccessful();if(j){g=h.getRecords()[0];if(!g.hasId()){g.setId(e)}Ext.callback(b.success,c,[g,h])}else{Ext.callback(b.failure,c,[g,h])}Ext.callback(b.callback,c,[g,h,j])};this.getProxy().read(a,d,this)}},statics:{PREFIX:"ext-record",AUTO_ID:1,EDIT:"edit",REJECT:"reject",COMMIT:"commit",id:function(a){var b=[this.PREFIX,"-",this.AUTO_ID++].join("");a.phantom=true;a.internalId=b;return b}},idgen:{isGenerator:true,type:"default",generate:function(){return null},getRecId:function(a){return a.modelName+"-"+a.internalId}},editing:false,dirty:false,persistenceProperty:"data",evented:false,isModel:true,phantom:false,idProperty:"id",clientIdProperty:null,defaultProxyType:"ajax",emptyData:[],constructor:function(l,e,q,b){var n=this,k=(e||e===0),r,m,g,o,a,p,h,d,s=n.idProperty,c=n.idField,j;n.raw=q||l;n.modified={};d=n[n.persistenceProperty]=b||{};n.data=n[n.persistenceProperty];n.mixins.observable.constructor.call(n);if(!b){if(l){if(!k&&s){e=l[s];r=(e||e===0)}}else{l=n.emptyData}m=n.fields.items;g=m.length;j=0;if(Ext.isArray(l)){for(;j<g;j++){o=m[j];a=o.name;p=l[o.originalIndex];if(p===undefined){p=o.defaultValue}if(o.convert){p=o.convert(p,n)}if(p!==undefined){d[a]=p}}}else{for(;j<g;j++){o=m[j];a=o.name;p=l[a];if(p===undefined){p=o.defaultValue}if(o.convert){p=o.convert(p,n)}if(p!==undefined){d[a]=p}}}}n.stores=[];if(k){r=true;d[s]=c&&c.convert?c.convert(e):e}else{if(!r){h=n.idgen.generate();if(h!=null){n.preventInternalUpdate=true;n.setId(h);delete n.preventInternalUpdate}}}n.internalId=r?e:Ext.data.Model.id(n);if(typeof n.init=="function"){n.init()}n.id=n.idgen.getRecId(n)},get:function(a){return this[this.persistenceProperty][a]},_singleProp:{},set:function(s,b){var k=this,h=k[k.persistenceProperty],j=k.fields,r=k.modified,p=(typeof s=="string"),q,l,g,o,e,a,c,d,m,n;if(p){n=k._singleProp;n[s]=b}else{n=s}for(a in n){if(n.hasOwnProperty(a)){m=n[a];if(j&&(l=j.get(a))&&l.convert){m=l.convert(m,k)}q=h[a];if(k.isEqual(q,m)){continue}h[a]=m;(e||(e=[])).push(a);if(l&&l.persist){if(r.hasOwnProperty(a)){if(k.isEqual(r[a],m)){delete r[a];k.dirty=false;for(o in r){if(r.hasOwnProperty(o)){k.dirty=true;break}}}}else{k.dirty=true;r[a]=q}}if(a==k.idProperty){g=true;c=q;d=m}}}if(p){delete n[s]}if(g){k.changeId(c,d)}if(!k.editing&&e){k.afterEdit(e)}return e||null},copyFrom:function(j){var h=this,e=h.fields.items,m=e.length,b=[],k,c=0,g,d,n=h.idProperty,a,l;if(j){g=h[h.persistenceProperty];d=j[j.persistenceProperty];for(;c<m;c++){k=e[c];a=k.name;if(a!=n){l=d[a];if(l!==undefined&&!h.isEqual(g[a],l)){g[a]=l;b.push(a)}}}if(h.phantom&&!j.phantom){h.beginEdit();h.setId(j.getId());h.endEdit(true);h.commit(true)}}return b},isEqual:function(d,c){if(d instanceof Date&&c instanceof Date){return d.getTime()===c.getTime()}return d===c},beginEdit:function(){var b=this,a,c,d;if(!b.editing){b.editing=true;b.dirtySave=b.dirty;d=b[b.persistenceProperty];c=b.dataSave={};for(a in d){if(d.hasOwnProperty(a)){c[a]=d[a]}}d=b.modified;c=b.modifiedSave={};for(a in d){if(d.hasOwnProperty(a)){c[a]=d[a]}}}},cancelEdit:function(){var a=this;if(a.editing){a.editing=false;a.modified=a.modifiedSave;a[a.persistenceProperty]=a.dataSave;a.dirty=a.dirtySave;a.modifiedSave=a.dataSave=a.dirtySave=null}},endEdit:function(a,d){var c=this,b,e;a=a===true;if(c.editing){c.editing=false;b=c.dataSave;c.modifiedSave=c.dataSave=c.dirtySave=null;if(!a){if(!d){d=c.getModifiedFieldNames(b)}e=c.dirty||d.length>0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d<g;d++){e=a[d];if(e.persist){b=e.name;c.modified[b]=c.get(b)}}},reject:function(a){var c=this,b=c.modified,d;for(d in b){if(b.hasOwnProperty(d)){if(typeof b[d]!="function"){c[c.persistenceProperty][d]=b[d]}}}c.dirty=false;c.editing=false;c.modified={};if(a!==true){c.afterReject()}},commit:function(a,c){var b=this;b.phantom=b.dirty=b.editing=false;b.modified={};if(a!==true){b.afterCommit(c)}},copy:function(a){var b=this;return new b.self(b.raw,a,null,Ext.apply({},b[b.persistenceProperty]))},setProxy:function(a){if(!a.isProxy){if(typeof a==="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this.self);this.proxy=a;return a},getProxy:function(){return this.hasOwnProperty("proxy")?this.proxy:this.self.getProxy()},validate:function(){var k=new Ext.data.Errors(),c=this.validations,e=Ext.data.validations,b,d,j,a,h,g;if(c){b=c.length;for(g=0;g<b;g++){d=c[g];j=d.field||d.name;h=d.type;a=e[h](d,this.get(j));if(!a){k.add({field:j,message:d.message||e[h+"Message"]})}}}return k},isValid:function(){return this.validate().isValid()},save:function(l){l=Ext.apply({},l);var e=this,b=e.phantom?"create":"update",k=l.scope||e,h=e.stores,c=0,d,g,a,j;Ext.apply(l,{records:[e],action:b});a=new Ext.data.Operation(l);j=function(m){var n=m.wasSuccessful();if(n){for(d=h.length;c<d;c++){g=h[c];g.fireEvent("write",g,m);g.fireEvent("datachanged",g)}Ext.callback(l.success,k,[e,m])}else{Ext.callback(l.failure,k,[e,m])}Ext.callback(l.callback,k,[e,m,n])};e.getProxy()[b](a,j,e);return e},destroy:function(m){m=Ext.apply({records:[this],action:"destroy"},m);var g=this,a=g.phantom!==true,l=m.scope||g,j,c=0,e,h,d,b,k;b=new Ext.data.Operation(m);k=function(n){d=[g,n];j=Ext.Array.clone(g.stores);if(n.wasSuccessful()){for(e=j.length;c<e;c++){h=j[c];if(h.remove){h.remove(g,true)}h.fireEvent("bulkremove",h,[g],[h.indexOf(g)],false);if(a){h.fireEvent("write",h,n)}}g.clearListeners();Ext.callback(m.success,l,d)}else{Ext.callback(m.failure,l,d)}Ext.callback(m.callback,l,d)};if(a){g.getProxy().destroy(b,k,g)}else{b.complete=b.success=true;b.resultSet=g.getProxy().reader.nullResultSet;k(b)}return g},getId:function(){return this.get(this.idField.name)},getObservableId:function(){return this.id},setId:function(a){this.set(this.idProperty,a)},changeId:function(g,b){var e=this,d,c,a;if(!e.preventInternalUpdate){d=e.hasId(g);c=e.hasId(b);a=e.internalId;e.phantom=!c;if(c!==d||(c&&d)){e.internalId=c?b:Ext.data.Model.id(e)}e.fireEvent("idchanged",e,g,b,a);e.callStore("onIdChanged",g,b,a)}},hasId:function(a){if(arguments.length===0){a=this.getId()}return !!(a||a===0)},join:function(a){var b=this;if(!b.stores.length){b.stores[0]=a}else{Ext.Array.include(this.stores,a)}this.store=this.stores[0]},unjoin:function(a){Ext.Array.remove(this.stores,a);this.store=this.stores[0]||null},afterEdit:function(a){this.callStore("afterEdit",a)},afterReject:function(){this.callStore("afterReject")},afterCommit:function(a){this.callStore("afterCommit",a)},callStore:function(g){var d=Ext.Array.clone(arguments),b=this.stores,e=0,a=b.length,c;d[0]=this;for(;e<a;++e){c=b[e];if(c&&Ext.isFunction(c[g])){c[g].apply(c,d)}}},getData:function(c){var d=this,a=d.fields.items,h=a.length,g={},b,e;for(e=0;e<h;e++){b=a[e].name;g[b]=d.get(b)}if(c===true){Ext.apply(g,d.getAssociatedData())}return g},getAssociatedData:function(){return this.prepareAssociatedData({},1)},prepareAssociatedData:function(w,z){var y=this,t=y.associations.items,e=t.length,x={},q=[],v=[],m=[],p,b,a,n,g,l,k,u,h,c,s,r,d,A;for(s=0;s<e;s++){c=t[s];u=c.associationId;k=w[u];if(k&&k!==z){continue}w[u]=z;d=c.type;A=c.name;if(d=="hasMany"){p=y[c.storeName];x[A]=[];if(p&&p.getCount()>0){b=p.data.items;h=b.length;for(r=0;r<h;r++){a=b[r];x[A][r]=a.getData();q.push(a);v.push(A);m.push(r)}}}else{if(d=="belongsTo"||d=="hasOne"){a=y[c.instanceName];if(a!==undefined){x[A]=a.getData();q.push(a);v.push(A);m.push(-1)}}}}for(s=0,h=q.length;s<h;++s){a=q[s];n=x[v[s]];g=m[s];l=a.prepareAssociatedData(w,z+1);if(g===-1){Ext.apply(n,l)}else{Ext.apply(n[g],l)}}return x}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data,"Model",Ext.data,"Record"],0));(Ext.cmd.derive("Ext.data.proxy.Server",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ServerProxy",pageParam:"page",startParam:"start",limitParam:"limit",groupParam:"group",groupDirectionParam:"groupDir",sortParam:"sort",filterParam:"filter",directionParam:"dir",idParam:"id",simpleSortMode:false,simpleGroupMode:false,noCache:true,cacheString:"_dc",timeout:30000,constructor:function(a){var b=this;a=a||{};b.callParent([a]);b.extraParams=a.extraParams||{};b.api=Ext.apply({},a.api||b.api);b.nocache=b.noCache},create:function(){return this.doRequest.apply(this,arguments)},read:function(){return this.doRequest.apply(this,arguments)},update:function(){return this.doRequest.apply(this,arguments)},destroy:function(){return this.doRequest.apply(this,arguments)},setExtraParam:function(a,b){this.extraParams[a]=b},buildRequest:function(a){var c=this,d=a.params=Ext.apply({},a.params,c.extraParams),b;Ext.applyIf(d,c.getParams(a));if(a.id!==undefined&&d[c.idParam]===undefined){d[c.idParam]=a.id}b=new Ext.data.Request({params:d,action:a.action,records:a.records,operation:a,url:a.url,proxy:c});b.url=c.buildUrl(b);a.request=b;return b},processResponse:function(h,a,c,b,g,j){var e=this,d,k;if(h===true){d=e.getReader();d.applyDefaults=a.action==="read";k=d.read(e.extractResponseData(b));if(k.success!==false){Ext.apply(a,{response:b,resultSet:k});a.commitRecords(k.records);a.setCompleted();a.setSuccessful()}else{a.setException(k.message);e.fireEvent("exception",this,b,a)}}else{e.setException(a,b);e.fireEvent("exception",this,b,a)}if(typeof g=="function"){g.call(j||e,a)}e.afterRequest(c,h)},setException:function(b,a){b.setException({status:a.status,statusText:a.statusText})},extractResponseData:Ext.identityFn,applyEncoding:function(a){return Ext.encode(a)},encodeSorters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,direction:d[a].direction}}return this.applyEncoding(b)},encodeFilters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,value:d[a].value}}return this.applyEncoding(b)},getParams:function(q){var x=this,w={},t=Ext.isDefined,u=q.groupers,a=q.sorters,o=q.filters,j=q.page,h=q.start,v=q.limit,m=x.simpleSortMode,d=x.simpleGroupMode,s=x.pageParam,g=x.startParam,b=x.limitParam,c=x.groupParam,n=x.groupDirectionParam,e=x.sortParam,r=x.filterParam,p=x.directionParam,l,k;if(s&&t(j)){w[s]=j}if(g&&t(h)){w[g]=h}if(b&&t(v)){w[b]=v}l=c&&u&&u.length>0;if(l){if(d){w[c]=u[0].property;w[n]=u[0].direction||"ASC"}else{w[c]=x.encodeSorters(u)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}w[e]=a[k].property;w[p]=a[k].direction}else{w[e]=x.encodeSorters(a)}}if(r&&o&&o.length>0){w[r]=x.encodeFilters(o)}return w},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}},1,0,0,0,["proxy.server"],0,[Ext.data.proxy,"Server",Ext.data,"ServerProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Ajax",Ext.data.proxy.Server,{alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,j,g){c.processResponse(j,a,d,g,e,b)}}},0,0,0,0,["proxy.ajax"],0,[Ext.data.proxy,"Ajax",Ext.data,"HttpProxy",Ext.data,"AjaxProxy"],function(){Ext.data.HttpProxy=this}));(Ext.cmd.derive("Ext.data.proxy.Client",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,"Client",Ext.data,"ClientProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Memory",Ext.data.proxy.Client,{alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c<a;c++){e[c].commit()}b.setCompleted();b.setSuccessful();Ext.callback(g,d||this,[b])},create:function(){this.updateOperation.apply(this,arguments)},update:function(){this.updateOperation.apply(this,arguments)},destroy:function(){this.updateOperation.apply(this,arguments)},read:function(c,j,k){var g=this,h=c.resultSet=g.getReader().read(g.data),b=h.records,e=c.sorters,d=c.groupers,a=c.filters;c.setCompleted();if(h.success){if(a&&a.length){b=h.records=Ext.Array.filter(b,Ext.util.Filter.createFilterFn(a))}if(d&&d.length){e=e?e.concat(d):e}if(e&&e.length){h.records=Ext.Array.sort(b,Ext.util.Sortable.createComparator(e))}if(g.enablePaging&&c.start!==undefined&&c.limit!==undefined){if(c.start>=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(j,k||g,[c])},clear:Ext.emptyFn},1,0,0,0,["proxy.memory"],0,[Ext.data.proxy,"Memory",Ext.data,"MemoryProxy"],0));(Ext.cmd.derive("Ext.util.LruCache",Ext.util.HashMap,{constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}},1,0,0,0,0,0,[Ext.util,"LruCache"],0));(Ext.cmd.derive("Ext.data.PageMap",Ext.util.LruCache,{clear:function(a){var b=this;b.pageMapGeneration=(b.pageMapGeneration||0)+1;b.callParent(arguments)},forEach:function(k,m){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,l,e,g;for(c=0;c<a;c++){d[c]=Number(d[c])}Ext.Array.sort(d);m=m||h;for(c=0;c<a;c++){l=d[c];e=h.getPage(l);g=e.length;for(b=0;b<g;b++){if(k.call(m,e[b],(l-1)*h.pageSize+b)===false){return}}}},findBy:function(c,b){var d=this,a=null;b=b||d;d.forEach(function(g,e){if(c.call(b,g,e)){a=g;return false}});return a},findIndexBy:function(c,b){var d=this,a=-1;b=b||d;d.forEach(function(g,e){if(c.call(b,g)){a=e;return false}});return a},getPageFromRecordIndex:function(){return Ext.data.Store.prototype.getPageFromRecordIndex.apply(this,arguments)},addAll:function(a){this.addPage(1,a)},addPage:function(a,b){var d=this,g=a+Math.floor((b.length-1)/d.pageSize),c,e;for(c=0;a<=g;a++,c+=d.pageSize){e=Ext.Array.slice(b,c,c+d.pageSize);d.add(a,e);d.fireEvent("pageAdded",a,e)}},getCount:function(){var a=this.callParent();if(a){a=(a-1)*this.pageSize+this.last.value.length}return a},indexOf:function(a){return a?a.index:-1},insert:function(){},remove:function(){},removeAt:function(){},getPage:function(a){return this.get(a)},hasRange:function(d,b){var a=this.getPageFromRecordIndex(d),c=this.getPageFromRecordIndex(b);for(;a<=c;a++){if(!this.hasPage(a)){return false}}return true},hasPage:function(a){return !!this.get(a)},getAt:function(a){return this.getRange(a,a)[0]},getRange:function(a,b){if(!this.hasRange(a,b)){Ext.Error.raise("PageMap asked for range which it does not have")}var j=this,m=j.getPageFromRecordIndex(a),e=j.getPageFromRecordIndex(b),c=(m-1)*j.pageSize,o=(e*j.pageSize)-1,k=m,p=[],n,h,l,d=0,g;for(;k<=e;k++){if(k==m){n=a-c;l=true}else{n=0;l=false}if(k==e){h=j.pageSize-(o-b);l=true}if(l){Ext.Array.push(p,Ext.Array.slice(j.getPage(k),n,h))}else{Ext.Array.push(p,j.getPage(k))}}for(g=p.length;d<g;d++){p[d].index=a++}return p}},0,0,0,0,0,0,[Ext.data,"PageMap"],0));(Ext.cmd.derive("Ext.data.Group",Ext.util.Observable,{key:undefined,dirty:true,constructor:function(){this.callParent(arguments);this.records=[]},contains:function(a){return Ext.Array.indexOf(this.records,a)!==-1},add:function(a){Ext.Array.push(this.records,a);this.dirty=true},remove:function(b){if(!Ext.isArray(b)){b=[b]}var a=b.length,c;for(c=0;c<a;++c){Ext.Array.remove(this.records,b[c])}this.dirty=true},isDirty:function(){return this.dirty},hasAggregate:function(){return !!this.aggregate},setDirty:function(){this.dirty=true},commit:function(){this.dirty=false},isCollapsed:function(){return this.collapsed},getAggregateRecord:function(a){var b=this,c;if(a===true||b.dirty||!b.aggregate){c=b.store.model;b.aggregate=new c();b.aggregate.isSummary=true}return b.aggregate}},1,0,0,0,0,0,[Ext.data,"Group"],0));(Ext.cmd.derive("Ext.data.Store",Ext.data.AbstractStore,{remoteSort:false,remoteFilter:false,remoteGroup:false,groupField:undefined,groupDir:"ASC",trailingBufferZone:25,leadingBufferZone:200,pageSize:undefined,currentPage:1,clearOnPageLoad:true,loading:false,sortOnFilter:true,buffered:false,purgePageCount:5,clearRemovedOnLoad:true,defaultPageSize:25,defaultViewSize:100,addRecordsOptions:{addRecords:true},statics:{recordIdFn:function(a){return a.internalId},recordIndexFn:function(a){return a.index},grouperIdFn:function(a){return a.id||a.property},groupIdFn:function(a){return a.key}},constructor:function(b){b=Ext.apply({},b);var d=this,g=b.groupers||d.groupers,a=b.groupField||d.groupField,c,e;e=b.data||d.data;if(e){d.inlineData=e;delete b.data}if(!g&&a){g=[{property:a,direction:b.groupDir||d.groupDir}];if(b.getGroupString||(d.getGroupString!==Ext.data.Store.prototype.getGroupString)){g[0].getGroupString=function(h){return d.getGroupString(h)}}}delete b.groupers;d.groupers=new Ext.util.MixedCollection(false,Ext.data.Store.grouperIdFn);d.groupers.addAll(d.decodeGroupers(g));d.groups=new Ext.util.MixedCollection(false,Ext.data.Store.groupIdFn);d.callParent([b]);if(d.buffered){d.data=new Ext.data.PageMap({store:d,keyFn:Ext.data.Store.recordIdFn,pageSize:d.pageSize,maxSize:d.purgePageCount,listeners:{clear:d.onPageMapClear,scope:d}});d.pageRequests={};d.remoteSort=d.remoteGroup=d.remoteFilter=true;d.sortOnLoad=false;d.filterOnLoad=false}else{d.data=new Ext.util.MixedCollection({getKey:Ext.data.Store.recordIdFn,maintainIndices:true});d.data.pageSize=d.pageSize}if(d.remoteGroup){d.remoteSort=true}d.sorters.insert(0,d.groupers.getRange());c=d.proxy;e=d.inlineData;if(!d.buffered&&!d.pageSize){d.pageSize=d.defaultPageSize}if(e){if(c instanceof Ext.data.proxy.Memory){c.data=e;d.read()}else{d.add.apply(d,[e])}if(d.sorters.items.length&&!d.remoteSort){d.group(null,null,true)}delete d.inlineData}else{if(d.autoLoad){Ext.defer(d.load,1,d,[typeof d.autoLoad==="object"?d.autoLoad:undefined])}}},onBeforeSort:function(){var a=this.groupers;if(a.getCount()>0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c<d;c++){b=e[c];if(!(b instanceof g)){if(Ext.isString(b)){b={property:b}}b=Ext.apply({root:"data",direction:"ASC"},b);if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}a.push(new g(b))}else{a.push(b)}}return a},group:function(e,g,c){var d=this,b,a;if(e){d.sorters.removeAll(d.groupers.items);if(Ext.isArray(e)){a=e}else{if(Ext.isObject(e)){a=[e]}else{if(Ext.isString(e)){b=d.groupers.get(e);if(!b){b={property:e,direction:g||"ASC"};a=[b]}else{if(g===undefined){b.toggle()}else{b.setDirection(g)}}}}}if(a&&a.length){d.groupers.clear();d.groupers.addAll(d.decodeGroupers(a))}d.sorters.insert(0,d.groupers.items)}if(d.remoteGroup){if(d.buffered){d.data.clear();d.loadPage(1,{groupChange:true})}else{d.load({scope:d,callback:c?null:d.fireGroupChange})}}else{d.doSort(d.generateComparator());d.constructGroups();if(!c){d.fireGroupChange()}}},getGroupField:function(){var b=this.groupers.first(),a;if(b){a=b.property}return a},constructGroups:function(){var e=this,g=this.data.items,c=g.length,b=e.groups,a,d,h,j;b.clear();if(e.isGrouped()){for(d=0;d<c;++d){j=g[d];a=e.getGroupString(j);h=b.get(a);if(!h){h=new Ext.data.Group({key:a,store:e});b.add(a,h)}h.add(j)}}},clearGrouping:function(){var c=this,d=c.groupers.items,b=d.length,a;for(a=0;a<b;a++){c.sorters.remove(d[a])}c.groupers.clear();if(c.remoteGroup){if(c.buffered){c.data.clear();c.loadPage(1,{groupChange:true})}else{c.load({scope:c,callback:c.fireGroupChange})}}else{c.groups.clear();if(c.sorters.length){c.sort()}else{c.fireEvent("datachanged",c);c.fireEvent("refresh",c)}c.fireGroupChange()}},isGrouped:function(){return this.groupers.getCount()>0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],k={},g,h,j,e;for(e=0;e<a;e++){g=d[e];h=this.getGroupString(g);j=k[h];if(j===undefined){j={name:h,children:[]};c.push(j);k[h]=j}j.children.push(g)}return b?k[b]:c},getGroupsForGrouper:function(g,b){var d=g.length,e=[],a,c,j,k,h;for(h=0;h<d;h++){j=g[h];c=b.getGroupString(j);if(c!==a){k={name:c,grouper:b,records:[]};e.push(k)}k.records.push(j);a=c}return e},getGroupsForGrouperIndex:function(c,j){var g=this,h=g.groupers,b=h.getAt(j),a=g.getGroupsForGrouper(c,b),e=a.length,d;if(j+1<h.length){for(d=0;d<e;d++){a[d].children=g.getGroupsForGrouperIndex(a[d].records,j+1)}}for(d=0;d<e;d++){a[d].depth=j}return a},getGroupData:function(a){var b=this;if(a!==false){b.sort()}return b.getGroupsForGrouperIndex(b.data.items,0)},getGroupString:function(a){var b=this.groupers.first();if(b){return b.getGroupString(a)}return""},insert:function(g,a){var j=this,k=false,d,h,e,b=j.modelDefaults,c;if(!Ext.isIterable(a)){c=a=[a]}else{c=[]}h=a.length;if(h){for(d=0;d<h;d++){e=a[d];if(!e.isModel){e=j.createModel(e)}c[d]=e;if(b){e.set(b)}e.join(j);k=k||e.phantom===true}j.data.insert(g,c);if(j.snapshot){j.snapshot.addAll(c)}if(j.requireSort){j.suspendEvents();j.sort();j.resumeEvents()}if(j.isGrouped()){j.updateGroupsOnAdd(c)}j.fireEvent("add",j,c,g);j.fireEvent("datachanged",j);if(j.autoSync&&k&&!j.autoSyncSuspended){j.sync()}}return c},updateGroupsOnAdd:function(c){var e=this,b=e.groups,a=c.length,d,j,g,h;for(d=0;d<a;++d){h=c[d];j=e.getGroupString(h);g=b.getByKey(j);if(!g){g=b.add(new Ext.data.Group({key:j,store:e}))}g.add(h)}},updateGroupsOnRemove:function(c){var e=this,b=e.groups,a=c.length,d,j,g,h;for(d=0;d<a;++d){h=c[d];j=e.getGroupString(h);g=b.getByKey(j);if(g){g.remove(h);if(g.records.length===0){b.remove(g)}}}},updateGroupsOnUpdate:function(e,c){var j=this,a=j.getGroupField(),l=j.getGroupString(e),b=j.groups,g,d,h,k;if(c&&Ext.Array.indexOf(c,a)!==-1){if(j.buffered){Ext.Error.raise({msg:"Cannot move records between groups in a buffered store record"})}h=b.items;for(d=0,g=h.length;d<g;++d){k=h[d];if(k.contains(e)){k.remove(e);break}}k=b.getByKey(l);if(!k){k=b.add(new Ext.data.Group({key:l,store:j}))}k.add(e);j.data.remove(e);j.data.insert(j.data.findInsertionIndex(e,j.generateComparator()),e);for(d=0,g=this.getCount();d<g;d++){j.data.items[d].index=d}}else{b.getByKey(l).setDirty()}},add:function(a){var d=this,b,c,e;if(Ext.isArray(a)){b=a}else{b=arguments}c=b.length;e=!d.remoteSort&&d.sorters&&d.sorters.items.length;if(e&&c===1){return[d.addSorted(d.createModel(b[0]))]}if(e){d.requireSort=true}b=d.insert(d.data.length,b);delete d.requireSort;return b},addSorted:function(a){var c=this,b=c.data.findInsertionIndex(a,c.generateComparator());c.insert(b,a);return a},createModel:function(a){if(!a.isModel){a=Ext.ModelManager.create(a,this.model)}return a},onUpdate:function(a,b,c){if(this.isGrouped()){this.updateGroupsOnUpdate(a,c)}},each:function(e,c){var g=this.data.items,b=g.length,a,h;for(h=0;h<b;h++){a=g[h];if(e.call(c||a,a,h,b)===false){break}}},remove:function(o,l,p){l=l===true;var t=this,j=false,d=t.snapshot,u=t.data,n=0,c,q=[],s=[],e=[],r,m,g,b,k,h,a=!p&&t.hasListeners.remove;if(o.isModel){o=[o];c=1}else{if(Ext.isIterable(o)){c=o.length}else{if(typeof o==="object"){k=true;n=o.start;c=o.end+1;h=c-n}}}if(!k){for(n=0;n<c;++n){b=o[n];if(typeof b=="number"){g=b;b=u.getAt(g)}else{g=t.indexOf(b)}if(b&&g>-1){q.push({record:b,index:g})}if(d){d.remove(b)}}q=Ext.Array.sort(q,function(w,v){var y=w.index,x=v.index;return y===v.index2?0:(y<x?-1:1)});n=0;c=q.length}for(;n<c;n++){if(k){b=u.getAt(n);g=n}else{r=q[n];b=r.record;g=r.index}s.push(b);e.push(g);m=b.phantom!==true;if(!l&&m){b.removedFrom=g;t.removed.push(b)}b.unjoin(t);g-=n;j=j||m;if(!k){u.removeAt(g);if(a){t.fireEvent("remove",t,b,g,!!l)}}}if(k){u.removeRange(o.start,h)}if(!p){t.fireEvent("bulkremove",t,s,e,!!l);t.fireEvent("datachanged",t)}if(!l&&t.autoSync&&j&&!t.autoSyncSuspended){t.sync()}},removeAt:function(a,c){var b=this,d=b.getCount();if(a<=d){if(arguments.length===1){b.remove([a])}else{if(c){b.remove({start:a,end:Math.min(a+c,d)-1})}}}},removeAll:function(b){var c=this,a=c.snapshot,d=c.data;if(a){a.removeAll(d.getRange())}if(c.buffered){if(d){if(b){c.suspendEvent("clear")}d.clear();if(b){c.resumeEvent("clear")}}}else{c.remove({start:0,end:c.getCount()-1},false,b);if(b!==true){c.fireEvent("clear",c)}}},load:function(a){var b=this;a=a||{};if(typeof a=="function"){a={callback:a}}a.groupers=a.groupers||b.groupers.items;a.page=a.page||b.currentPage;a.start=(a.start!==undefined)?a.start:(a.page-1)*b.pageSize;a.limit=a.limit||b.pageSize;a.addRecords=a.addRecords||false;if(b.buffered){a.limit=b.viewSize||b.defaultViewSize;return b.loadToPrefetch(a)}return b.callParent([a])},reload:function(m){var h=this,j,b,g,l,d,a,k,c,e=h.getCount();if(!m){m={}}if(h.buffered){delete h.totalCount;a=function(){if(h.rangeCached(j,b)){h.loading=false;h.data.un("pageAdded",a);c=h.data.getRange(j,b);h.fireEvent("load",h,c,true)}};k=Math.ceil((h.leadingBufferZone+h.trailingBufferZone)/2);j=m.start||(e?h.getAt(0).index:0);b=j+(m.count||(e?e:h.pageSize))-1;g=h.getPageFromRecordIndex(Math.max(j-k,0));l=h.getPageFromRecordIndex(b+k);h.data.clear(true);if(h.fireEvent("beforeload",h,m)!==false){h.loading=true;h.data.on("pageAdded",a);for(d=g;d<=l;d++){h.prefetchPage(d,m)}}}else{return h.callParent(arguments)}},onProxyLoad:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),e=b.wasSuccessful();if(d.isDestroyed){return}if(c){d.totalCount=c.total}d.loading=false;if(e){d.loadRecords(a,b)}if(d.hasListeners.load){d.fireEvent("load",d,a,e)}if(d.hasListeners.read){d.fireEvent("read",d,a,e)}Ext.callback(b.callback,b.scope||d,[a,b,e])},getNewRecords:function(){return this.data.filterBy(this.filterNew).items},getUpdatedRecords:function(){return this.data.filterBy(this.filterUpdated).items},filter:function(e,g){if(Ext.isString(e)){e={property:e,value:g}}var d=this,a=d.decodeFilters(e),b,h=d.sorters.length&&d.sortOnFilter&&!d.remoteSort,c=a.length;for(b=0;b<c;b++){d.filters.replace(a[b])}e=d.filters.items;if(e.length){if(d.remoteFilter){delete d.totalCount;if(d.buffered){d.data.clear();d.loadPage(1)}else{d.currentPage=1;d.load()}}else{d.snapshot=d.snapshot||d.data.clone();d.data=d.snapshot.filter(e);d.constructGroups();if(h){d.sort()}else{d.fireEvent("datachanged",d);d.fireEvent("refresh",d)}}d.fireEvent("filterchange",d,e)}},clearFilter:function(a){var b=this;b.filters.clear();if(b.remoteFilter){if(a){return}delete b.totalCount;if(b.buffered){b.data.clear();b.loadPage(1)}else{b.currentPage=1;b.load()}}else{if(b.isFiltered()){b.data=b.snapshot;delete b.snapshot;b.constructGroups();if(a!==true){b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}}}b.fireEvent("filterchange",b,b.filters.items)},removeFilter:function(b,a){var c=this;if(!c.remoteFilter&&c.isFiltered()){if(b instanceof Ext.util.Filter){c.filters.remove(b)}else{c.filters.removeAtKey(b)}if(a!==false){if(c.filters.length){c.filter()}else{c.clearFilter()}}else{c.fireEvent("filterchange",c,c.filters.items)}}},addFilter:function(g,a){var e=this,b,c,d;b=e.decodeFilters(g);d=b.length;for(c=0;c<d;c++){e.filters.replace(b[c])}if(a!==false&&e.filters.length){e.filter()}else{e.fireEvent("filterchange",e,e.filters.items)}},isFiltered:function(){var a=this.snapshot;return !!(a&&a!==this.data)},filterBy:function(b,a){var c=this;c.snapshot=c.snapshot||c.data.clone();c.data=c.queryBy(b,a||c);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)},queryBy:function(b,a){var c=this;return(c.snapshot||c.data).filterBy(b,a||c)},query:function(h,g,j,a,e){var d=this,b=d.createFilterFn(h,g,j,a,e),c=d.queryBy(b);if(!c){c=new Ext.util.MixedCollection()}return c},loadData:function(e,a){var d=e.length,c=[],b;for(b=0;b<d;b++){c.push(this.createModel(e[b]))}this.loadRecords(c,a?this.addRecordsOptions:undefined)},loadRawData:function(e,b){var d=this,a=d.proxy.reader.read(e),c=a.records;if(a.success){d.totalCount=a.total;d.loadRecords(c,b?d.addRecordsOptions:undefined)}},loadRecords:function(b,c){var h=this,d=0,g=b.length,j,e,a=h.snapshot;if(c){j=c.start;e=c.addRecords}if(!e){delete h.snapshot;h.clearData(true)}else{if(a){a.addAll(b)}}h.data.addAll(b);if(j!==undefined){for(;d<g;d++){b[d].index=j+d;b[d].join(h)}}else{for(;d<g;d++){b[d].join(h)}}h.suspendEvents();if(h.filterOnLoad&&!h.remoteFilter){h.filter()}if(h.sortOnLoad&&!h.remoteSort){h.sort(undefined,undefined,undefined,true)}h.resumeEvents();if(h.isGrouped()){h.constructGroups()}h.fireEvent("datachanged",h);h.fireEvent("refresh",h)},loadPage:function(c,a){var b=this;b.currentPage=c;a=Ext.apply({page:c,start:(c-1)*b.pageSize,limit:b.pageSize,addRecords:!b.clearOnPageLoad},a);if(b.buffered){a.limit=b.viewSize||b.defaultViewSize;return b.loadToPrefetch(a)}b.read(a)},nextPage:function(a){this.loadPage(this.currentPage+1,a)},previousPage:function(a){this.loadPage(this.currentPage-1,a)},clearData:function(d){var c=this,a,b;if(!c.buffered&&c.data){a=c.data.items;b=a.length;while(b--){a[b].unjoin(c)}}if(c.data){c.data.clear()}if(d!==true||c.clearRemovedOnLoad){c.removed.length=0}},loadToPrefetch:function(n){var j=this,e,b,l,c=n,k=n.start,a=n.start+n.limit-1,g=Math.min(a,n.start+(j.viewSize||n.limit)-1),h=j.getPageFromRecordIndex(Math.max(k-j.trailingBufferZone,0)),m=j.getPageFromRecordIndex(a+j.leadingBufferZone),d=function(){if(j.rangeCached(k,g)){j.loading=false;b=j.data.getRange(k,g);j.data.un("pageAdded",d);if(j.hasListeners.guaranteedrange){j.guaranteeRange(k,g,n.callback,n.scope)}if(n.callback){n.callback.call(n.scope||j,b,k,a,n)}j.fireEvent("datachanged",j);j.fireEvent("refresh",j);j.fireEvent("load",j,b,true);if(n.groupChange){j.fireGroupChange()}}};if(j.fireEvent("beforeload",j,n)!==false){delete j.totalCount;j.loading=true;if(n.callback){c=Ext.apply({},n);delete c.callback}j.on("prefetch",function(q,p,r,o){if(r){if((l=j.getTotalCount())){j.data.on("pageAdded",d);g=Math.min(g,l-1);m=j.getPageFromRecordIndex(Math.min(g+j.leadingBufferZone,l-1));for(e=h+1;e<=m;++e){j.prefetchPage(e,c)}}else{j.fireEvent("datachanged",j);j.fireEvent("refresh",j);j.fireEvent("load",j,p,true)}}else{j.fireEvent("load",j,p,false)}},null,{single:true});j.prefetchPage(h,c)}},prefetch:function(c){var e=this,a=e.pageSize,d,b;if(a){if(e.lastPageSize&&a!=e.lastPageSize){Ext.Error.raise("pageSize cannot be dynamically altered")}if(!e.data.pageSize){e.data.pageSize=a}}else{e.pageSize=e.data.pageSize=a=c.limit}e.lastPageSize=a;if(!c.page){c.page=e.getPageFromRecordIndex(c.start);c.start=(c.page-1)*a;c.limit=Math.ceil(c.limit/a)*a}if(!e.pageRequests[c.page]){c=Ext.apply({action:"read",filters:e.filters.items,sorters:e.sorters.items,groupers:e.groupers.items,pageMapGeneration:e.data.pageMapGeneration},c);b=new Ext.data.Operation(c);if(e.fireEvent("beforeprefetch",e,b)!==false){d=e.proxy;e.pageRequests[c.page]=d.read(b,e.onProxyPrefetch,e);if(d.isSynchronous){delete e.pageRequests[c.page]}}}return e},onPageMapClear:function(){var d=this,c=d.wasLoading,a=d.pageRequests,b,e;if(d.data.events.pageadded){d.data.events.pageadded.clearListeners()}d.loading=true;d.totalCount=0;for(e in a){if(a.hasOwnProperty(e)){b=a[e];delete a[e];delete b.callback}}d.fireEvent("clear",d);d.loading=c},prefetchPage:function(e,b){var d=this,a=d.pageSize||d.defaultPageSize,g=(e-1)*d.pageSize,c=d.totalCount;if(c!==undefined&&d.getCount()===c){return}d.prefetch(Ext.applyIf({page:e,start:g,limit:a},b))},onProxyPrefetch:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),g=b.wasSuccessful(),e=b.page;if(b.pageMapGeneration===d.data.pageMapGeneration){if(c){d.totalCount=c.total;d.fireEvent("totalcountchange",d.totalCount)}if(e!==undefined){delete d.pageRequests[e]}d.loading=false;d.fireEvent("prefetch",d,a,g,b);if(g){d.cachePage(a,b.page)}Ext.callback(b.callback,b.scope||d,[a,b,g])}},cachePage:function(b,e){var d=this,a=b.length,c;if(!Ext.isDefined(d.totalCount)){d.totalCount=b.length;d.fireEvent("totalcountchange",d.totalCount)}for(c=0;c<a;c++){b[c].join(d)}d.data.addPage(e,b)},rangeCached:function(b,a){return this.data&&this.data.hasRange(b,a)},pageCached:function(a){return this.data&&this.data.hasPage(a)},pagePending:function(a){return !!this.pageRequests[a]},rangeSatisfied:function(b,a){return this.rangeCached(b,a)},getPageFromRecordIndex:function(a){return Math.floor(a/this.pageSize)+1},onGuaranteedRange:function(d){var e=this,b=e.getTotalCount(),g=d.prefetchStart,a=(d.prefetchEnd>b-1)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c<d;c++){a[c].index=c}}e.fireEvent("datachanged",e);e.fireEvent("refresh",e)}},find:function(e,d,h,g,a,c){var b=this.createFilterFn(e,d,g,a,c);return b?this.data.findIndexBy(b,null,h):-1},findRecord:function(){var b=this,a=b.find.apply(b,arguments);return a!==-1?b.getAt(a):null},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.isEqual(d.get(b),a)},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(b,a,c){var d=this,e=(c===true&&d.snapshot)?d.snapshot:d.data;return e.collect(b,"data",a)},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.totalCount||0},getAt:function(a){return this.data.getAt(a)},getRange:function(c,g,l){var h=this,j,b,d=h.totalCount-1,e=h.lastRequestStart,a,k;l=Ext.apply({prefetchStart:c,prefetchEnd:g},l);if(h.buffered){g=(g>=h.totalCount)?d:g;j=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(j,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(j,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c<e?-1:1)}else{k=h.data.getRange(c,g);if(l.callback){l.callback.call(l.scope||h,k,c,g,l)}}return k},getById:function(b){var a=(this.snapshot||this.data).findBy(function(c){return c.getId()===b});return a},indexOf:function(a){return this.data.indexOf(a)},indexOfTotal:function(a){var b=a.index;if(b||b===0){return b}return this.indexOf(a)},indexOfId:function(a){return this.indexOf(this.getById(a))},first:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length?c[0]:undefined},b,true)}else{return b.data.first()}},last:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(d){var c=d.length;return c?d[c-1]:undefined},b,true)}else{return b.data.last()}},sum:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getSum,b,true,[c])}else{return b.getSum(b.data.items,c)}},getSum:function(b,e){var d=0,c=0,a=b.length;for(;c<a;++c){d+=b[c].get(e)}return d},count:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length},b,true)}else{return b.getCount()}},min:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMin,b,true,[c])}else{return b.getMin(b.data.items,c)}},getMin:function(b,g){var d=1,a=b.length,e,c;if(a>0){c=b[0].get(g)}for(;d<a;++d){e=b[d].get(g);if(e<c){c=e}}return c},max:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMax,b,true,[c])}else{return b.getMax(b.data.items,c)}},getMax:function(c,g){var d=1,b=c.length,e,a;if(b>0){a=c[0].get(g)}for(;d<b;++d){e=c[d].get(g);if(e>a){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c<a;++c){d+=b[c].get(e)}return d/a}return 0},aggregate:function(h,k,e,g){g=g||[];if(e&&this.isGrouped()){var a=this.getGroups(),d=a.length,b={},j,c;for(c=0;c<d;++c){j=a[c];b[j.name]=this.getAggregate(h,k||this,j.children,g)}return b}else{return this.getAggregate(h,k,this.data.items,g)}},getAggregate:function(d,c,a,b){b=b||[];return d.apply(c||this,[a].concat(b))},onIdChanged:function(e,d,c,b){var a=this.snapshot;if(a){a.updateKey(b,c)}this.data.updateKey(b,c);this.callParent(arguments)},commitChanges:function(){var c=this,d=c.getModifiedRecords(),a=d.length,b=0;for(;b<a;b++){d[b].commit()}c.removed.length=0},filterNewOnly:function(a){return a.phantom===true},getRejectRecords:function(){return Ext.Array.push(this.data.filterBy(this.filterNewOnly).items,this.getUpdatedRecords())},rejectChanges:function(){var c=this,d=c.getRejectRecords(),a=d.length,b=0,e;for(;b<a;b++){e=d[b];e.reject();if(e.phantom){c.remove(e)}}d=c.removed;a=d.length;for(b=0;b<a;b++){e=d[b];c.insert(e.removedFrom||0,e);e.reject()}c.removed.length=0}},1,0,0,0,["store.store"],0,[Ext.data,"Store"],function(){Ext.regStore("ext-empty-store",{fields:[],proxy:"memory"})}));(Ext.cmd.derive("Ext.data.reader.Array",Ext.data.reader.Json,{alternateClassName:"Ext.data.ArrayReader",totalProperty:undefined,successProperty:undefined,createFieldAccessExpression:function(e,c,b){var d=(e.mapping==null)?e.originalIndex:e.mapping,a;if(typeof d==="function"){a=c+".mapping("+b+", this)"}else{if(isNaN(d)){d='"'+d+'"'}a=b+"["+d+"]"}return a}},0,0,0,0,["reader.array"],0,[Ext.data.reader,"Array",Ext.data,"ArrayReader"],0));(Ext.cmd.derive("Ext.data.ArrayStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"memory",reader:"array"}},a);this.callParent([a])},loadData:function(e,a){if(this.expandData===true){var d=[],b=0,c=e.length;for(;b<c;b++){d[d.length]=[e[b]]}e=d}this.callParent([e,a])}},1,0,0,0,["store.array"],0,[Ext.data,"ArrayStore"],function(){Ext.data.SimpleStore=Ext.data.ArrayStore}));(Ext.cmd.derive("Ext.data.Batch",Ext.Base,{autoStart:false,pauseOnException:false,current:-1,total:0,isRunning:false,isComplete:false,hasException:false,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.operations=[];b.exceptions=[]},add:function(a){this.total++;a.setBatch(this);this.operations.push(a);return this},start:function(a){var b=this;if(b.isRunning){return b}b.exceptions.length=0;b.hasException=false;b.isRunning=true;return b.runOperation(Ext.isDefined(a)?a:b.current+1)},retry:function(){return this.start(this.current)},runNextOperation:function(){return this.runOperation(this.current+1)},pause:function(){this.isRunning=false;return this},runOperation:function(d){var e=this,c=e.operations,b=c[d],a;if(b===undefined){e.isRunning=false;e.isComplete=true;e.fireEvent("complete",e,c[c.length-1])}else{e.current=d;a=function(g){var h=g.hasException();if(h){e.hasException=true;e.exceptions.push(g);e.fireEvent("exception",e,g)}if(h&&e.pauseOnException){e.pause()}else{g.setCompleted();e.fireEvent("operationcomplete",e,g);e.runNextOperation()}};b.setStarted();e.proxy[b.action](b,a,e)}return e}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data,"Batch"],0));(Ext.cmd.derive("Ext.data.BufferStore",Ext.data.Store,{sortOnLoad:false,filterOnLoad:false,constructor:function(){Ext.Error.raise("The BufferStore class has been deprecated. Instead, specify the buffered config option on Ext.data.Store")}},1,0,0,0,["store.buffer"],0,[Ext.data,"BufferStore"],0));(Ext.cmd.derive("Ext.direct.Manager",Ext.Base,{singleton:true,exceptions:{TRANSPORT:"xhr",PARSE:"parse",DATA:"data",LOGIN:"login",SERVER:"exception"},constructor:function(){var a=this;a.addEvents("event","exception");a.transactions=new Ext.util.MixedCollection();a.providers=new Ext.util.MixedCollection();a.mixins.observable.constructor.call(a)},addProvider:function(g){var d=this,b=arguments,e=d.relayers||(d.relayers={}),c,a;if(b.length>1){for(c=0,a=b.length;c<a;++c){d.addProvider(b[c])}return}if(!g.isProvider){g=Ext.create("direct."+g.type+"provider",g)}d.providers.add(g);g.on("data",d.onProviderData,d);if(g.relayedEvents){e[g.id]=d.relayEvents(g,g.relayedEvents)}if(!g.isConnected()){g.connect()}return g},getProvider:function(a){return a.isProvider?a:this.providers.get(a)},removeProvider:function(d){var b=this,a=b.providers,c=b.relayers,e;d=d.isProvider?d:a.get(d);if(d){d.un("data",b.onProviderData,b);e=d.id;if(c[e]){c[e].destroy();delete c[e]}a.remove(d);return d}return null},addTransaction:function(a){this.transactions.add(a);return a},removeTransaction:function(b){var a=this;b=a.getTransaction(b);a.transactions.remove(b);return b},getTransaction:function(a){return typeof a==="object"?a:this.transactions.get(a)},onProviderData:function(e,d){var c=this,b,a;if(Ext.isArray(d)){for(b=0,a=d.length;b<a;++b){c.onProviderData(e,d[b])}return}if(d.name&&d.name!="event"&&d.name!="exception"){c.fireEvent(d.name,d)}else{if(d.status===false){c.fireEvent("exception",d)}}c.fireEvent("event",d,e)},parseMethod:function(c){if(Ext.isString(c)){var e=c.split("."),b=0,a=e.length,d=Ext.global;while(d&&b<a){d=d[e[b]];++b}c=Ext.isFunction(d)?d:null}return c||null}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.direct,"Manager"],function(){Ext.Direct=Ext.direct.Manager}));(Ext.cmd.derive("Ext.data.proxy.Direct",Ext.data.proxy.Server,{alternateClassName:"Ext.data.DirectProxy",paramOrder:undefined,paramsAsHash:true,directFn:undefined,paramOrderRe:/[\s,|]/,constructor:function(b){var c=this,a;c.callParent(arguments);a=c.paramOrder;if(Ext.isString(a)){c.paramOrder=a.split(c.paramOrderRe)}},resolveMethods:function(){var d=this,c=d.directFn,b=d.api,a=Ext.direct.Manager,e;if(c){e=d.directFn=a.parseMethod(c);if(!Ext.isFunction(e)){Ext.Error.raise("Cannot resolve directFn "+c)}}else{if(b){for(c in b){if(b.hasOwnProperty(c)){e=b[c];b[c]=a.parseMethod(e);if(!Ext.isFunction(b[c])){Ext.Error.raise("Cannot resolve Direct api "+c+" method "+e)}}}}}d.methodsResolved=true},doRequest:function(d,k,l){var h=this,b=h.getWriter(),e=h.buildRequest(d),c=e.params,g=[],j,a;if(!h.methodsResolved){h.resolveMethods()}j=h.api[e.action]||h.directFn;if(d.allowWrite()){e=b.write(e)}if(d.action=="read"){a=j.directCfg.method;g=a.getArgs(c,h.paramOrder,h.paramsAsHash)}else{g.push(e.jsonData)}Ext.apply(e,{args:g,directFn:j});g.push(h.createRequestCallback(e,d,k,l),h);j.apply(window,g)},applyEncoding:Ext.identityFn,createRequestCallback:function(d,a,e,b){var c=this;return function(h,g){c.processResponse(g.status,a,d,g,e,b)}},extractResponseData:function(a){return Ext.isDefined(a.result)?a.result:a.data},setException:function(b,a){b.setException(a.message)},buildUrl:function(){return""}},1,0,0,0,["proxy.direct"],0,[Ext.data.proxy,"Direct",Ext.data,"DirectProxy"],0));(Ext.cmd.derive("Ext.data.DirectStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({},a);if(!a.proxy){var b={type:"direct",reader:{type:"json"}};Ext.copyTo(b,a,"paramOrder,paramsAsHash,directFn,api,simpleSortMode");Ext.copyTo(b.reader,a,"totalProperty,root,idProperty");a.proxy=b}this.callParent([a])}},1,0,0,0,["store.direct"],0,[Ext.data,"DirectStore"],0));(Ext.cmd.derive("Ext.data.JsonP",Ext.Base,{singleton:true,requestCount:0,requests:{},timeout:30000,disableCaching:true,disableCachingParam:"_dc",callbackKey:"callback",request:function(o){o=Ext.apply({},o);var k=this,d=Ext.isDefined(o.disableCaching)?o.disableCaching:k.disableCaching,h=o.disableCachingParam||k.disableCachingParam,c=++k.requestCount,m=o.callbackName||"callback"+c,j=o.callbackKey||k.callbackKey,n=Ext.isDefined(o.timeout)?o.timeout:k.timeout,e=Ext.apply({},o.params),b=o.url,a=Ext.name,g,l;if(d&&!e[h]){e[h]=Ext.Date.now()}o.params=e;e[j]=a+".data.JsonP."+m;l=k.createScript(b,e,o);k.requests[c]=g={url:b,params:e,script:l,id:c,scope:o.scope,success:o.success,failure:o.failure,callback:o.callback,callbackKey:j,callbackName:m};if(n>0){g.timeout=setTimeout(Ext.bind(k.handleTimeout,k,[g]),n)}k.setupErrorHandling(g);k[m]=Ext.bind(k.handleResponse,k,[g],true);k.loadScript(g);return g},abort:function(c){var b=this,d=b.requests,a;if(c){if(!c.id){c=d[c]}b.handleAbort(c)}else{for(a in d){if(d.hasOwnProperty(a)){b.abort(d[a])}}}},setupErrorHandling:function(a){a.script.onerror=Ext.bind(this.handleError,this,[a])},handleAbort:function(a){a.errorType="abort";this.handleResponse(null,a)},handleError:function(a){a.errorType="error";this.handleResponse(null,a)},cleanupErrorHandling:function(a){a.script.onerror=null},handleTimeout:function(a){a.errorType="timeout";this.handleResponse(null,a)},handleResponse:function(a,b){var c=true;if(b.timeout){clearTimeout(b.timeout)}delete this[b.callbackName];delete this.requests[b.id];this.cleanupErrorHandling(b);Ext.fly(b.script).remove();if(b.errorType){c=false;Ext.callback(b.failure,b.scope,[b.errorType])}else{Ext.callback(b.success,b.scope,[a])}Ext.callback(b.callback,b.scope,[c,a,b.errorType]);Ext.EventManager.idleEvent.fire()},createScript:function(c,d,b){var a=document.createElement("script");a.setAttribute("src",Ext.urlAppend(c,Ext.Object.toQueryString(d)));a.setAttribute("async",true);a.setAttribute("type","text/javascript");return a},loadScript:function(a){Ext.getHead().appendChild(a.script)}},0,0,0,0,0,0,[Ext.data,"JsonP"],0));(Ext.cmd.derive("Ext.data.proxy.JsonP",Ext.data.proxy.Server,{alternateClassName:"Ext.data.ScriptTagProxy",defaultWriterType:"base",callbackKey:"callback",recordParam:"records",autoAppendParams:true,constructor:function(){this.addEvents("exception");this.callParent(arguments)},doRequest:function(a,g,b){var d=this,c=d.buildRequest(a),e=c.params;Ext.apply(c,{callbackKey:d.callbackKey,timeout:d.timeout,scope:d,disableCaching:false,callback:d.createRequestCallback(c,a,g,b)});if(d.autoAppendParams){c.params={}}c.jsonp=Ext.data.JsonP.request(c);c.params=e;a.setStarted();d.lastRequest=c;return c},createRequestCallback:function(d,a,e,b){var c=this;return function(j,g,h){delete c.lastRequest;c.processResponse(j,a,d,g,e,b)}},setException:function(b,a){b.setException(b.request.jsonp.errorType)},buildUrl:function(h){var k=this,a=k.callParent(arguments),d=h.records,e=k.getWriter(),g,c,b,j;if(e&&h.operation.allowWrite()){h=e.write(h)}g=h.params;c=g.filters,delete g.filters;if(c&&c.length){for(j=0;j<c.length;j++){b=c[j];if(b.value){g[b.property]=b.value}}}if((!e||!e.encode)&&Ext.isArray(d)&&d.length>0){g[k.recordParam]=k.encodeRecords(d)}if(k.autoAppendParams){a=Ext.urlAppend(a,Ext.Object.toQueryString(g))}return a},abort:function(){var a=this.lastRequest;if(a){Ext.data.JsonP.abort(a.jsonp)}},encodeRecords:function(b){var d=[],c=0,a=b.length;for(;c<a;c++){d.push(Ext.encode(b[c].getData()))}return d}},1,0,0,0,["proxy.jsonp","proxy.scripttag"],0,[Ext.data.proxy,"JsonP",Ext.data,"ScriptTagProxy"],0));(Ext.cmd.derive("Ext.data.JsonPStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"jsonp",reader:"json"}},a);this.callParent([a])}},1,0,0,0,["store.jsonp"],0,[Ext.data,"JsonPStore"],0));(Ext.cmd.derive("Ext.data.JsonStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"json",writer:"json"}},a);this.callParent([a])}},1,0,0,0,["store.json"],0,[Ext.data,"JsonStore"],0));(Ext.cmd.derive("Ext.data.NodeInterface",Ext.Base,{statics:{decorate:function(b){var a,c,d;if(typeof b=="string"){b=Ext.ModelManager.getModel(b)}else{if(b.isModel){b=Ext.ModelManager.getModel(b.modelName)}}if(b.prototype.isNode){return}a=b.prototype.idProperty;c=b.prototype.fields.get(a);d=b.prototype.fields.get(a).type.type;b.override(this.getPrototypeBody());this.applyFields(b,[{name:"parentId",type:d,defaultValue:null,useNull:c.useNull},{name:"index",type:"int",defaultValue:0,persist:false,convert:null},{name:"depth",type:"int",defaultValue:0,persist:false,convert:null},{name:"expanded",type:"bool",defaultValue:false,persist:false,convert:null},{name:"expandable",type:"bool",defaultValue:true,persist:false,convert:null},{name:"checked",type:"auto",defaultValue:null,persist:false,convert:null},{name:"leaf",type:"bool",defaultValue:false},{name:"cls",type:"string",defaultValue:"",persist:false,convert:null},{name:"iconCls",type:"string",defaultValue:"",persist:false,convert:null},{name:"icon",type:"string",defaultValue:"",persist:false,convert:null},{name:"root",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"isLast",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"isFirst",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"allowDrop",type:"boolean",defaultValue:true,persist:false,convert:null},{name:"allowDrag",type:"boolean",defaultValue:true,persist:false,convert:null},{name:"loaded",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"loading",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"href",type:"string",defaultValue:"",persist:false,convert:null},{name:"hrefTarget",type:"string",defaultValue:"",persist:false,convert:null},{name:"qtip",type:"string",defaultValue:"",persist:false,convert:null},{name:"qtitle",type:"string",defaultValue:"",persist:false,convert:null},{name:"qshowDelay",type:"int",defaultValue:0,persist:false,convert:null},{name:"children",type:"auto",defaultValue:null,persist:false,convert:null}])},applyFields:function(c,b){var h=c.prototype,a=h.fields,g=a.keys,e=b.length,j,d;for(d=0;d<e;d++){j=b[d];if(!Ext.Array.contains(g,j.name)){a.add(new Ext.data.Field(j))}}},getPrototypeBody:function(){var a={idchanged:true,append:true,remove:true,move:true,insert:true,beforeappend:true,beforeremove:true,beforemove:true,beforeinsert:true,expand:true,collapse:true,beforeexpand:true,beforecollapse:true,sort:true,rootchange:true};return{isNode:true,constructor:function(){var b=this;b.callParent(arguments);b.firstChild=b.lastChild=b.parentNode=b.previousSibling=b.nextSibling=null;b.childNodes=[];return b},createNode:function(b){if(!b.isModel){b=Ext.ModelManager.create(b,this.modelName)}if(!b.childNodes){b.firstChild=b.lastChild=b.parentNode=b.previousSibling=b.nextSibling=null;b.childNodes=[]}return b},isLeaf:function(){return this.get("leaf")===true},setFirstChild:function(b){this.firstChild=b},setLastChild:function(b){this.lastChild=b},updateInfo:function(j,d){var n=this,m=n.data.depth,p={},c=n.childNodes,h=c.length,k,g=n.phantom,e=n[n.persistenceProperty],l,b,o;if(!d){Ext.Error.raise("NodeInterface expects update info to be passed")}for(l in d){o=n.fields.get(l);b=d[l];if(o&&o.persist){n.dirty=n.dirty||!n.isEqual(e[l],b)}e[l]=b}if(j){n.commit();n.phantom=g}if(n.data.depth!==m){p={depth:n.data.depth+1};for(k=0;k<h;k++){c[k].updateInfo(j,p)}}},isLast:function(){return this.get("isLast")},isFirst:function(){return this.get("isFirst")},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||(b.isLoaded()&&!b.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,l,d){var j=this,e,h,g,k,b,m={isLast:true,parentId:j.getId(),depth:(j.data.depth||0)+1};if(Ext.isArray(c)){j.callStore("suspendAutoSync");for(e=0,h=c.length-1;e<h;e++){j.appendChild(c[e],l,d)}j.callStore("resumeAutoSync");j.appendChild(c[h],l,d)}else{c=j.createNode(c);if(l!==true&&j.fireEventArgs("beforeappend",[j,c])===false){return false}g=j.childNodes.length;k=c.parentNode;if(k){if(l!==true&&c.fireEventArgs("beforemove",[c,k,j,g])===false){return false}k.removeChild(c,false,false,true)}Ext.suspendLayouts();g=j.childNodes.length;if(g===0){j.setFirstChild(c)}j.childNodes[g]=c;c.parentNode=j;c.nextSibling=null;j.setLastChild(c);b=j.childNodes[g-1];if(b){c.previousSibling=b;b.nextSibling=c;b.updateInfo(d,{isLast:false});b.triggerUIUpdate()}else{c.previousSibling=null}m.isFirst=g===0;m.index=g;c.updateInfo(d,m);if(!j.isLoaded()){j.set("loaded",true)}else{if(j.childNodes.length===1){j.triggerUIUpdate()}}if(g&&j.childNodes[g-1].isExpanded()){j.childNodes[g-1].cascadeBy(j.triggerUIUpdate)}if(!c.isLeaf()&&c.phantom){c.set("loaded",true)}Ext.resumeLayouts(true);if(l!==true){j.fireEventArgs("append",[j,c,g]);if(k){c.fireEventArgs("move",[c,k,j,g])}}return c}},getOwnerTree:function(){var c=this,b;while(c.parentNode){c=c.parentNode}b=c.store;if(b){if(b.treeStore){b=b.treeStore}if(b.tree){return b.ownerTree}}return undefined},removeChild:function(c,j,l,k){var h=this,g=h.indexOf(c),e,d,b;if(g===-1||(l!==true&&h.fireEventArgs("beforeremove",[h,c,!!k])===false)){return false}Ext.suspendLayouts();Ext.Array.erase(h.childNodes,g,1);if(h.firstChild===c){h.setFirstChild(c.nextSibling)}if(h.lastChild===c){h.setLastChild(c.previousSibling)}if(b=c.previousSibling){c.previousSibling.nextSibling=c.nextSibling}if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling;if(g===0){c.nextSibling.updateInfo(false,{isFirst:true})}for(e=g,d=h.childNodes.length;e<d;e++){h.childNodes[e].updateInfo(false,{index:e})}}else{if(b){b.updateInfo(false,{isLast:true});if(b.isExpanded()){b.cascadeBy(h.triggerUIUpdate)}else{b.triggerUIUpdate()}}}if(!h.childNodes.length){h.triggerUIUpdate()}Ext.resumeLayouts(true);if(l!==true){c.removeContext={parentNode:c.parentNode,previousSibling:c.previousSibling,nextSibling:c.nextSibling};c.previousSibling=c.nextSibling=c.parentNode=null;h.fireEventArgs("remove",[h,c,!!k]);c.removeContext=null}if(j){c.destroy(true)}else{c.clear()}return c},copy:function(e,d){var h=this,c=h.callParent(arguments),b=h.childNodes?h.childNodes.length:0,g;if(d){for(g=0;g<b;g++){c.appendChild(h.childNodes[g].copy(undefined,true))}}return c},clear:function(b){var c=this;c.parentNode=c.previousSibling=c.nextSibling=null;if(b){c.firstChild=c.lastChild=null}},destroy:function(c){var e=this,d=e.destroyOptions,b=e.childNodes,g=b.length,h;if(c===true){e.clear(true);for(h=0;h<g;h++){b[h].destroy(true)}e.childNodes=null;delete e.destroyOptions;e.callParent([d])}else{e.destroyOptions=c;e.remove(true)}},insertBefore:function(c,h,m){var j=this,g=j.indexOf(h),k=c.parentNode,l=g,d,b,e;if(!h){return j.appendChild(c)}if(c===h){return false}c=j.createNode(c);if(m!==true&&j.fireEventArgs("beforeinsert",[j,c,h])===false){return false}if(k===j&&j.indexOf(c)<g){l--}if(k){if(m!==true&&c.fireEventArgs("beforemove",[c,k,j,g,h])===false){return false}k.removeChild(c,false,false,true)}if(l===0){j.setFirstChild(c)}Ext.Array.splice(j.childNodes,l,0,c);c.parentNode=j;c.nextSibling=h;h.previousSibling=c;b=j.childNodes[l-1];if(b){c.previousSibling=b;b.nextSibling=c}else{c.previousSibling=null}c.updateInfo(false,{parentId:j.getId(),index:l,isFirst:l===0,isLast:false,depth:(j.data.depth||0)+1});for(e=l+1,d=j.childNodes.length;e<d;e++){j.childNodes[e].updateInfo(false,{index:e})}if(!j.isLoaded()){j.set("loaded",true)}else{if(j.childNodes.length===1){j.triggerUIUpdate()}}if(!c.isLeaf()&&c.phantom){c.set("loaded",true)}if(m!==true){j.fireEventArgs("insert",[j,c,h]);if(k){c.fireEventArgs("move",[c,k,j,l,h])}}return c},insertChild:function(b,d){var c=this.childNodes[b];if(c){return this.insertBefore(d,c)}else{return this.appendChild(d)}},remove:function(c,d){var e=this,b=e.parentNode;if(b){b.removeChild(e,c,d)}else{if(c){e.destroy(true)}}return e},removeAll:function(d,e,k){var h=this,j=h.childNodes,c=0,b=j.length,g;if(!b){return}h.fireEventArgs("bulkremove",[h,j,false]);for(;c<b;++c){g=j[c];g.removeContext={parentNode:g.parentNode,previousSibling:g.previousSibling,nextSibling:g.nextSibling};g.previousSibling=g.nextSibling=g.parentNode=null;h.fireEventArgs("remove",[h,g,false]);g.removeContext=null;if(d){g.destroy(true)}else{g.removeAll(false,e,true)}}h.firstChild=h.lastChild=null;if(k){h.childNodes=null}else{h.childNodes.length=0;h.triggerUIUpdate()}return h},getChildAt:function(b){return this.childNodes[b]},replaceChild:function(b,e,d){var c=e?e.nextSibling:null;this.removeChild(e,false,d);this.insertBefore(b,c,d);return e},indexOf:function(b){return Ext.Array.indexOf(this.childNodes,b)},indexOfId:function(e){var d=this.childNodes,b=d.length,c=0;for(;c<b;++c){if(d[c].getId()===e){return c}}return -1},getPath:function(e,d){e=e||this.idProperty;d=d||"/";var c=[this.get(e)],b=this.parentNode;while(b){c.unshift(b.get(e));b=b.parentNode}return d+c.join(d)},getDepth:function(){return this.get("depth")},bubble:function(d,c,b){var e=this;while(e){if(d.apply(c||e,b||[e])===false){break}e=e.parentNode}},cascade:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.Node: cascade has been deprecated. Please use cascadeBy instead.")}return this.cascadeBy.apply(this,arguments)},cascadeBy:function(e,d,b){if(e.apply(d||this,b||[this])!==false){var h=this.childNodes,g=h.length,c;for(c=0;c<g;c++){h[c].cascadeBy(e,d,b)}}},eachChild:function(e,d,b){var h=this.childNodes,g=h.length,c;for(c=0;c<g;c++){if(e.apply(d||this,b||[h[c]])===false){break}}},findChild:function(c,d,b){return this.findChildBy(function(){return this.get(c)==d},null,b)},findChildBy:function(j,h,c){var g=this.childNodes,b=g.length,e=0,k,d;for(;e<b;e++){k=g[e];if(j.call(h||k,k)===true){return k}else{if(c){d=k.findChildBy(j,h,c);if(d!==null){return d}}}}return null},contains:function(b){return b.isAncestor(this)},isAncestor:function(b){var c=this.parentNode;while(c){if(c===b){return true}c=c.parentNode}return false},sort:function(h,c,b){var e=this.childNodes,g=e.length,d,k,j={isFirst:true};if(g>0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d<g;d++){k=e[d];k.previousSibling=e[d-1];k.nextSibling=e[d+1];j.isLast=(d===g-1);j.index=d;k.updateInfo(false,j);j.isFirst=false;if(c&&!k.isLeaf()){k.sort(h,true,true)}}if(b!==true){this.fireEventArgs("sort",[this,e])}}},isExpanded:function(){return this.get("expanded")},isLoaded:function(){return this.get("loaded")},isLoading:function(){return this.get("loading")},isRoot:function(){return !this.parentNode},isVisible:function(){var b=this.parentNode;while(b){if(!b.isExpanded()){return false}b=b.parentNode}return true},expand:function(c,g,d){var e=this,b;if(!e.isLeaf()){if(e.isLoading()){e.on("expand",function(){e.expand(c,g,d)},e,{single:true})}else{if(!e.isExpanded()){e.fireEventArgs("beforeexpand",[e,e.onChildNodesAvailable,e,[c,g,d]])}else{if(c){b=e.getOwnerTree();e.expandChildren(true,b?b.singleExpand:false,g,d)}else{Ext.callback(g,d||e,[e.childNodes])}}}}else{Ext.callback(g,d||e)}},onChildNodesAvailable:function(c,d,h,e){var g=this,b;Ext.suspendLayouts();g.set("expanded",true);g.fireEventArgs("expand",[g,g.childNodes,false]);if(d){b=g.getOwnerTree();g.expandChildren(true,b?b.singleExpand:false,h,e)}else{Ext.callback(h,e||g,[g.childNodes])}Ext.resumeLayouts(true)},expandChildren:function(e,g,l,m){var k=this,h,c=k.childNodes,b=[],j=g?Math.min(c.length,1):c.length,d;for(h=0;h<j;++h){d=c[h];if(!d.isLeaf()){b[b.length]=d}}j=b.length;for(h=0;h<j;++h){b[h].expand(e)}if(l){Ext.callback(l,m||k,[k.childNodes])}},collapse:function(d,k,g){var h=this,c=h.isExpanded(),b=h.childNodes.length,e,j;if(!h.isLeaf()&&((!c&&d)||h.fireEventArgs("beforecollapse",[h])!==false)){Ext.suspendLayouts();if(h.isExpanded()){if(d){j=function(){for(e=0;e<b;e++){h.childNodes[e].setCollapsed(true)}};if(k){k=Ext.Function.createSequence(j,k)}else{k=j}}h.set("expanded",false);h.fireEventArgs("collapse",[h,h.childNodes,false,k?Ext.Function.bind(k,g,[h.childNodes]):null,null]);k=null}else{if(d){for(e=0;e<b;e++){h.childNodes[e].setCollapsed(true)}}}Ext.resumeLayouts(true)}Ext.callback(k,g||h,[h.childNodes])},setCollapsed:function(c){var e=this,b=e.childNodes.length,d;if(!e.isLeaf()&&e.fireEventArgs("beforecollapse",[e,Ext.emptyFn])!==false){e.data.expanded=false;e.fireEventArgs("collapse",[e,e.childNodes,false,null,null]);if(c){for(d=0;d<b;d++){e.childNodes[d].setCollapsed(true)}}}},collapseChildren:function(d,k,l){var j=this,g,b=j.childNodes,h=b.length,e=[],c;for(g=0;g<h;++g){c=b[g];if(!c.isLeaf()&&c.isLoaded()&&c.isExpanded()){e.push(c)}}h=e.length;for(g=0;g<h;++g){c=e[g];if(g===h-1){c.collapse(d,k,l)}else{c.collapse(d)}}},fireEventArgs:function(e,g){var k=Ext.data.Model.prototype.fireEventArgs,c,j,b,h,d;if(a[e]){for(j=this;c!==false&&j;j=(d=j).parentNode){if(j.hasListeners[e]){c=k.call(j,e,g)}}b=d.rootOf;if(c!==false&&b){h=b.treeStore;if(h&&h.hasListeners[e]){c=h.fireEventArgs.call(h,e,g)}if(c!==false&&b.hasListeners[e]){c=b.fireEventArgs.call(b,e,g)}}return c}else{return k.apply(this,arguments)}},serialize:function(){var c=Ext.data.writer.Json.prototype.getRecordData(this),g=this.childNodes,b=g.length,e,d;if(b>0){e=[];for(d=0;d<b;d++){e.push(g[d].serialize())}c.children=e}return c}}}}},0,0,0,0,0,0,[Ext.data,"NodeInterface"],0));(Ext.cmd.derive("Ext.data.NodeStore",Ext.data.Store,{isNodeStore:true,node:null,recursive:false,rootVisible:false,isExpandingOrCollapsing:0,constructor:function(a){var c=this,b;a=a||{};Ext.apply(c,a);a.proxy={type:"proxy"};c.callParent([a]);b=c.node;if(b){c.node=null;c.setNode(b)}},getTotalCount:function(){return this.getCount()},setNode:function(b){var a=this;if(a.node&&a.node!=b){a.mun(a.node,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,bulkremove:a.onBulkRemove,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=null}if(b){Ext.data.NodeInterface.decorate(b.self);a.removeAll();if(a.rootVisible){a.add(b)}else{if(!b.isExpanded()&&a.treeStore.autoLoad!==false){b.expand()}}a.mon(b,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,bulkremove:a.onBulkRemove,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=b;if(b.isExpanded()&&b.isLoaded()){a.onNodeExpand(b,b.childNodes,true)}}},onNodeSort:function(b,c){var a=this;if((a.indexOf(b)!==-1||(b===a.node&&!a.rootVisible)&&b.isExpanded())){Ext.suspendLayouts();a.onNodeCollapse(b,c,true);a.onNodeExpand(b,c,true);Ext.resumeLayouts(true)}},onNodeExpand:function(e,c,b){var g=this,a=g.indexOf(e)+1,d=[];if(!b){g.fireEvent("beforeexpand",e,c,a)}g.handleNodeExpand(e,c,d);g.insert(a,d);if(!b){g.fireEvent("expand",e,c)}},handleNodeExpand:function(e,b,d){var h=this,g=b?b.length:0,c,a;if(!h.recursive&&e!==h.node){return}if(e!==this.node&&!h.isVisible(e)){return}if(g){for(c=0;c<g;c++){a=b[c];d.push(a);if(a.isExpanded()){if(a.isLoaded()){h.handleNodeExpand(a,a.childNodes,d)}else{a.set("expanded",false);a.expand()}}}}},onBulkRemove:function(b,c,a){this.onNodeCollapse(b,c,true)},onNodeCollapse:function(e,c,k,j,l){var d=this,h=d.indexOf(e)+1,b,a,g,m;if(!d.recursive&&e!==d.node){return}if(!k){d.fireEvent("beforecollapse",e,c,h,j,l)}if(c.length&&d.data.contains(c[0])){b=e;while(b.parentNode){g=b.nextSibling;if(g){m=true;a=d.indexOf(g);break}else{b=b.parentNode}}if(!m){a=d.getCount()}d.removeAt(h,a-h)}if(!k){d.fireEvent("collapse",e,c,h)}},onNodeAppend:function(d,g,b){var e=this,a,c;if(e.isVisible(g)){if(b===0){a=d}else{c=g.previousSibling;while(c.isExpanded()&&c.lastChild){c=c.lastChild}a=c}e.insert(e.indexOf(a)+1,g);if(!g.isLeaf()&&g.isExpanded()){if(g.isLoaded()){e.onNodeExpand(g,g.childNodes,true)}else{if(!e.treeStore.fillCount){g.set("expanded",false);g.expand()}}}}},onNodeInsert:function(c,e,a){var d=this,b=this.indexOf(a);if(b!=-1&&d.isVisible(e)){d.insert(b,e);if(!e.isLeaf()&&e.isExpanded()){if(e.isLoaded()){d.onNodeExpand(e,e.childNodes,true)}else{e.set("expanded",false);e.expand()}}}},onNodeRemove:function(b,d,a){var c=this;if(c.indexOf(d)!=-1){if(!d.isLeaf()&&d.isExpanded()){d.parentNode=d.removeContext.parentNode;d.nextSibling=d.removeContext.nextSibling;c.onNodeCollapse(d,d.childNodes,true);d.parentNode=d.nextSibling=null}c.remove(d)}},isVisible:function(b){var a=b.parentNode;while(a){if(a===this.node&&a.data.expanded){return true}if(!a.data.expanded){return false}a=a.parentNode}return false}},1,0,0,0,["store.node"],0,[Ext.data,"NodeStore"],0));(Ext.cmd.derive("Ext.data.Request",Ext.Base,{action:undefined,params:undefined,method:"GET",url:undefined,constructor:function(a){Ext.apply(this,a)}},1,0,0,0,0,0,[Ext.data,"Request"],0));(Ext.cmd.derive("Ext.data.SequentialIdGenerator",Ext.data.IdGenerator,{constructor:function(){var a=this;a.callParent(arguments);a.parts=[a.prefix,""]},prefix:"",seed:1,generate:function(){var a=this,b=a.parts;b[1]=a.seed++;return b.join("")}},1,0,0,0,["idgen.sequential"],0,[Ext.data,"SequentialIdGenerator"],0));(Ext.cmd.derive("Ext.data.Tree",Ext.Base,{root:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b);if(a){b.setRootNode(a)}b.on({scope:b,idchanged:b.onNodeIdChanged,insert:b.onNodeInsert,append:b.onNodeAppend,remove:b.onNodeRemove})},getRootNode:function(){return this.root},setRootNode:function(b){var a=this;a.root=b;if(b.rootOf){b.rootOf.removeRootNode()}else{if(b.parentNode){b.parentNode.removeChild(b)}}b.rootOf=a;if(b.fireEventArgs("beforeappend",[null,b])!==false){b.set("root",true);b.updateInfo(true,{isFirst:true,isLast:true,depth:0,index:0,parentId:null});a.nodeHash={};b.fireEvent("append",null,b);b.fireEvent("rootchange",b)}return b},removeRootNode:function(){var b=this,a=b.root;a.set("root",false);a.fireEvent("remove",null,a,false);a.fireEvent("rootchange",null);a.rootOf=b.root=null;return a},flatten:function(){return Ext.Object.getValues(this.nodeHash)},onNodeInsert:function(a,b){this.registerNode(b,true)},onNodeAppend:function(a,b){this.registerNode(b,true)},onNodeRemove:function(a,b){this.unregisterNode(b,true)},onNodeIdChanged:function(d,e,b,a){var c=this.nodeHash;c[d.internalId]=d;delete c[a]},getNodeById:function(a){return this.nodeHash[a]},registerNode:function(g,a){var e=this,c,d,b;e.nodeHash[g.internalId]=g;if(a===true){c=g.childNodes;d=c.length;for(b=0;b<d;b++){e.registerNode(c[b],true)}}},unregisterNode:function(g,a){var e=this,c,d,b;delete e.nodeHash[g.internalId];if(a===true){c=g.childNodes;d=c.length;for(b=0;b<d;b++){e.unregisterNode(c[b],true)}}},sort:function(b,a){this.getRootNode().sort(b,a)},filter:function(b,a){this.getRootNode().filter(b,a)}},1,0,0,0,["data.tree"],[["observable",Ext.util.Observable]],[Ext.data,"Tree"],0));(Ext.cmd.derive("Ext.data.TreeModel",Ext.data.Model,{},0,0,0,0,0,0,[Ext.data,"TreeModel"],function(){Ext.data.NodeInterface.decorate(this)}));(Ext.cmd.derive("Ext.data.TreeStore",Ext.data.AbstractStore,{clearOnLoad:true,clearRemovedOnLoad:true,nodeParam:"node",defaultRootId:"root",defaultRootText:"Root",defaultRootProperty:"children",rootProperty:"children",fillCount:0,folderSort:false,constructor:function(c){var e=this,b,a,d;c=Ext.apply({},c);a=c.fields||e.fields;if(!a){c.fields=[{name:"text",type:"string"}];d=c.defaultRootProperty||e.defaultRootProperty;if(d!==e.defaultRootProperty){c.fields.push({name:d,type:"auto",defaultValue:null,persist:false})}}e.callParent([c]);e.tree=new Ext.data.Tree();e.tree.treeStore=e;e.tree.on({scope:e,remove:e.onNodeRemove,beforeexpand:e.onBeforeNodeExpand,append:e.onNodeAdded,insert:e.onNodeAdded,sort:e.onNodeSort});e.onBeforeSort();b=e.root;if(b){delete e.root;e.setRootNode(b)}if(Ext.isDefined(e.nodeParameter)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.TreeStore: nodeParameter has been deprecated. Please use nodeParam instead.")}e.nodeParam=e.nodeParameter;delete e.nodeParameter}},setProxy:function(c){var a,b;if(c instanceof Ext.data.proxy.Proxy){b=Ext.isEmpty(c.getReader().root)}else{if(Ext.isString(c)){b=true}else{a=c.reader;b=!(a&&!Ext.isEmpty(a.root))}}c=this.callParent(arguments);c.idParam=this.nodeParam;if(b){a=c.getReader();a.root=this.defaultRootProperty;a.buildExtractors(true)}return c},onBeforeSort:function(){if(this.folderSort){this.sort({property:"leaf",direction:"ASC"},"prepend",false)}},onBeforeNodeExpand:function(a,j,k,e){var g=this,d,h,c,b;if(a.isLoaded()){b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}else{if(h=(c=(a.raw||a[a.persistenceProperty])[(d=g.getProxy().getReader()).root])){g.fillNode(a,d.extractData(h));delete c[d.root];b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}else{if(a.isLoading()){g.on("load",function(){b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)},g,{single:true})}else{g.read({node:a,callback:function(){delete g.lastOptions.callback;b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}})}}}},getNewRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterNew)},getUpdatedRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterUpdated)},onNodeRemove:function(b,d,a){var c=this;d.unjoin(c);if(!d.phantom&&!a){Ext.Array.include(c.removed,d)}if(c.autoSync&&!c.autoSyncSuspended&&!a){c.sync()}},onNodeAdded:function(c,e){var d=this,b=d.getProxy(),a=b.getReader(),g=e.raw||e[e.persistenceProperty],h;Ext.Array.remove(d.removed,e);e.join(d);if(!e.isLeaf()&&!d.lazyFill){h=a.getRoot(g);if(h){d.fillNode(e,a.extractData(h));delete g[a.root]}}if(d.autoSync&&!d.autoSyncSuspended&&(e.phantom||e.dirty)){d.sync()}},onNodeSort:function(){if(this.autoSync&&!this.autoSyncSuspended){this.sync()}},setRootNode:function(a,e){var d=this,c=d.model,b=c.prototype.idProperty;a=a||{};if(!a.isModel){a=Ext.apply({},a);Ext.applyIf(a,{id:d.defaultRootId,text:d.defaultRootText,allowDrag:false});if(a[b]===undefined){a[b]=d.defaultRootId}Ext.data.NodeInterface.decorate(c);a=Ext.ModelManager.create(a,c)}else{if(a.isModel&&!a.isNode){Ext.data.NodeInterface.decorate(c)}}d.getProxy().getReader().buildExtractors(true);d.tree.setRootNode(a);if(e!==true&&!a.isLoaded()&&(d.autoLoad===true||a.isExpanded())){a.data.expanded=false;a.expand()}return a},getRootNode:function(){return this.tree.getRootNode()},getNodeById:function(a){return this.tree.getNodeById(a)},getById:function(a){return this.getNodeById(a)},load:function(a){a=a||{};a.params=a.params||{};var c=this,b=a.node||c.tree.getRootNode();if(!b){b=c.setRootNode({expanded:true},true)}a.id=b.getId();if(c.clearOnLoad){if(c.clearRemovedOnLoad){c.clearRemoved(b)}c.tree.un("remove",c.onNodeRemove,c);b.removeAll(false);c.tree.on("remove",c.onNodeRemove,c)}Ext.applyIf(a,{node:b});c.callParent([a]);if(c.loading&&b){b.set("loading",true)}return c},clearRemoved:function(b){var k=this,e=k.removed,a=b.getId(),d=e.length,c=d,n={},h=[],m={},j,g,l;if(b===k.getRootNode()){k.removed=[];return}for(;c--;){j=e[c];m[j.getId()]=j}for(c=d;c--;){j=e[c];g=j;while(g&&g.getId()!==a){l=g.get("parentId");g=g.parentNode||k.getNodeById(l)||m[l]}if(g){n[j.getId()]=j}}for(c=0;c<d;c++){j=e[c];if(!n[j.getId()]){h.push(j)}}k.removed=h},fillNode:function(b,c){var h=this,e=c?c.length:0,g=h.sorters,d,k,j=false,a=e&&h.sortOnLoad&&!h.remoteSort&&g&&g.items&&g.items.length,n,m,l;for(d=1;d<e;d++){n=c[d];m=c[d-1];j=n[n.persistenceProperty].index!=m[m.persistenceProperty].index;if(j){break}}if(a){if(j){h.sorters.insert(0,h.indexSorter)}k=new Ext.util.MixedCollection();k.addAll(c);k.sort(h.sorters.items);c=k.items;h.sorters.remove(h.indexSorter)}else{if(j){Ext.Array.sort(c,h.sortByIndex)}}b.set("loaded",true);l=h.fillCount===0;if(l){h.fireEvent("beforefill",h,b,c)}++h.fillCount;if(c.length){b.appendChild(c,undefined,true)}if(l){h.fireEvent("fillcomplete",h,b,c)}--h.fillCount;return c},sortByIndex:function(b,a){return b[b.persistenceProperty].index-a[a.persistenceProperty].index},onIdChanged:function(c,d,b,a){this.tree.onNodeIdChanged(c,d,b,a);this.callParent(arguments)},onProxyLoad:function(b){var d=this,e=b.wasSuccessful(),a=b.getRecords(),c=b.node;d.loading=false;c.set("loading",false);if(e){if(!d.clearOnLoad){a=d.cleanRecords(c,a)}a=d.fillNode(c,a)}d.fireEvent("read",d,b.node,a,e);d.fireEvent("load",d,b.node,a,e);Ext.callback(b.callback,b.scope||d,[a,b,e])},cleanRecords:function(g,b){var e={},j=g.childNodes,d=0,a=j.length,c=[],h;for(;d<a;++d){e[j[d].getId()]=true}for(d=0,a=b.length;d<a;++d){h=b[d];if(!e[h.getId()]){c.push(h)}}return c},removeAll:function(){var a=this.getRootNode();if(a){a.destroy(true)}this.fireEvent("clear",this)},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.tree.sort(a,true);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())}},1,0,0,0,["store.tree"],0,[Ext.data,"TreeStore"],function(){var a=this.prototype;a.indexSorter=new Ext.util.Sorter({sorterFn:a.sortByIndex})}));(Ext.cmd.derive("Ext.data.UuidGenerator",Ext.data.IdGenerator,(function(){var h=Math.pow(2,14),g=Math.pow(2,16),e=Math.pow(2,28),c=Math.pow(2,32);function a(l,k){var j=l.toString(16);if(j.length>k){j=j.substring(j.length-k)}else{if(j.length<k){j=Ext.String.leftPad(j,k,"0")}}return j}function d(l,k){var j=Math.random()*(k-l+1);return Math.floor(j)+l}function b(k){if(typeof(k)=="number"){var j=Math.floor(k/c);return{lo:Math.floor(k-j*c),hi:j}}return k}return{id:"uuid",version:4,constructor:function(){var j=this;j.callParent(arguments);j.parts=[];j.init()},generate:function(){var k=this,l=k.parts,j=k.timestamp;l[0]=a(j.lo,8);l[1]=a(j.hi&65535,4);l[2]=a(((j.hi>>>16)&4095)|(k.version<<12),4);l[3]=a(128|((k.clockSeq>>>8)&63),2)+a(k.clockSeq&255,2);l[4]=a(k.salt.hi,4)+a(k.salt.lo,8);if(k.version==4){k.init()}else{++j.lo;if(j.lo>=c){j.lo=0;++j.hi}}return l.join("-").toLowerCase()},getRecId:function(j){return j.getId()},init:function(){var k=this,j,l;if(k.version==4){k.clockSeq=d(0,h-1);j=k.salt||(k.salt={});l=k.timestamp||(k.timestamp={});j.lo=d(0,c-1);j.hi=d(0,g-1);l.lo=d(0,c-1);l.hi=d(0,e-1)}else{k.salt=b(k.salt);k.timestamp=b(k.timestamp);k.salt.hi|=256}},reconfigure:function(j){Ext.apply(this,j);this.init()}}}()),1,0,0,0,["idgen.uuid"],0,[Ext.data,"UuidGenerator"],0));(Ext.cmd.derive("Ext.data.reader.Xml",Ext.data.reader.Reader,{alternateClassName:"Ext.data.XmlReader",createAccessor:function(b){var a=this;if(Ext.isEmpty(b)){return Ext.emptyFn}if(Ext.isFunction(b)){return b}return function(c){return a.getNodeValue(Ext.DomQuery.selectNode(b,c))}},getNodeValue:function(a){if(a){if(typeof a.normalize==="function"){a.normalize()}a=a.firstChild;if(a){return a.nodeValue}}return undefined},getResponseData:function(a){var c=a.responseXML,b,d;if(!c){d="XML data not found in the response";b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:d});this.fireEvent("exception",this,a,b);Ext.Logger.warn(d);return b}return this.readRecords(c)},getData:function(a){return a.documentElement||a},getRoot:function(b){var c=b.nodeName,a=this.root;if(!a||(c&&c==a)){return b}else{if(Ext.DomQuery.isXml(b)){return Ext.DomQuery.selectNode(a,b)}}},extractData:function(a){var b=this.record;if(b!=a.nodeName){a=Ext.DomQuery.select(b,a)}else{a=[a]}return this.callParent([a])},getAssociatedDataRoot:function(b,a){return Ext.DomQuery.select(a,b)[0]},readRecords:function(a){if(Ext.isArray(a)){a=a[0]}this.xmlData=a;return this.callParent([a])},createFieldAccessExpression:function(g,d,c){var e=this.namespace,b,a;b=g.mapping||((e?e+"|":"")+g.name);if(typeof b==="function"){a=d+".mapping("+c+", this)"}else{a='me.getNodeValue(Ext.DomQuery.selectNode("'+b+'", '+c+"))"}return a}},0,0,0,0,["reader.xml"],0,[Ext.data.reader,"Xml",Ext.data,"XmlReader"],0));(Ext.cmd.derive("Ext.data.writer.Xml",Ext.data.writer.Writer,{alternateClassName:"Ext.data.XmlWriter",documentRoot:"xmlData",defaultDocumentRoot:"xmlData",header:"",record:"record",writeRecords:function(a,b){var h=this,d=[],c=0,g=b.length,j=h.documentRoot,e=h.record,m=b.length!==1,l,k;d.push(h.header||"");if(!j&&m){j=h.defaultDocumentRoot}if(j){d.push("<",j,">")}for(;c<g;++c){l=b[c];d.push("<",e,">");for(k in l){if(l.hasOwnProperty(k)){d.push("<",k,">",l[k],"</",k,">")}}d.push("</",e,">")}if(j){d.push("</",j,">")}a.xmlData=d.join("");return a}},0,0,0,0,["writer.xml"],0,[Ext.data.writer,"Xml",Ext.data,"XmlWriter"],0));(Ext.cmd.derive("Ext.data.XmlStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"xml",writer:"xml"}},a);this.callParent([a])}},1,0,0,0,["store.xml"],0,[Ext.data,"XmlStore"],0));(Ext.cmd.derive("Ext.data.association.BelongsTo",Ext.data.association.Association,{alternateClassName:"Ext.data.BelongsToAssociation",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"BelongsToInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,e=d.associatedName,g=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(l,m){l=l||{};var k=this,n=k.get(c),o,h,j;if(l.reload===true||k[a]===undefined){h=Ext.ModelManager.create({},e);h.set(b,n);if(typeof l=="function"){l={callback:l,scope:m||k}}o=l.success;l.success=function(p){k[a]=p;if(o){o.apply(this,arguments)}};g.load(n,l);k[a]=h;return h}else{h=k[a];j=[h];m=m||l.scope||k;Ext.callback(l,m,j);Ext.callback(l.success,m,j);Ext.callback(l.failure,m,j);Ext.callback(l.callback,m,j);return h}}},read:function(b,a,c){b[this.instanceName]=a.read([c]).records[0]}},1,0,0,0,["association.belongsto"],0,[Ext.data.association,"BelongsTo",Ext.data,"BelongsToAssociation"],0));(Ext.cmd.derive("Ext.util.Inflector",Ext.Base,{singleton:true,plurals:[[(/(quiz)$/i),"$1zes"],[(/^(ox)$/i),"$1en"],[(/([m|l])ouse$/i),"$1ice"],[(/(matr|vert|ind)ix|ex$/i),"$1ices"],[(/(x|ch|ss|sh)$/i),"$1es"],[(/([^aeiouy]|qu)y$/i),"$1ies"],[(/(hive)$/i),"$1s"],[(/(?:([^f])fe|([lr])f)$/i),"$1$2ves"],[(/sis$/i),"ses"],[(/([ti])um$/i),"$1a"],[(/(buffal|tomat|potat)o$/i),"$1oes"],[(/(bu)s$/i),"$1ses"],[(/(alias|status|sex)$/i),"$1es"],[(/(octop|vir)us$/i),"$1i"],[(/(ax|test)is$/i),"$1es"],[(/^person$/),"people"],[(/^man$/),"men"],[(/^(child)$/),"$1ren"],[(/s$/i),"s"],[(/$/),"s"]],singulars:[[(/(quiz)zes$/i),"$1"],[(/(matr)ices$/i),"$1ix"],[(/(vert|ind)ices$/i),"$1ex"],[(/^(ox)en/i),"$1"],[(/(alias|status)es$/i),"$1"],[(/(octop|vir)i$/i),"$1us"],[(/(cris|ax|test)es$/i),"$1is"],[(/(shoe)s$/i),"$1"],[(/(o)es$/i),"$1"],[(/(bus)es$/i),"$1"],[(/([m|l])ice$/i),"$1ouse"],[(/(x|ch|ss|sh)es$/i),"$1"],[(/(m)ovies$/i),"$1ovie"],[(/(s)eries$/i),"$1eries"],[(/([^aeiouy]|qu)ies$/i),"$1y"],[(/([lr])ves$/i),"$1f"],[(/(tive)s$/i),"$1"],[(/(hive)s$/i),"$1"],[(/([^f])ves$/i),"$1fe"],[(/(^analy)ses$/i),"$1sis"],[(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i),"$1$2sis"],[(/([ti])a$/i),"$1um"],[(/(n)ews$/i),"$1ews"],[(/people$/i),"person"],[(/s$/i),""]],uncountable:["sheep","fish","series","species","money","rice","information","equipment","grass","mud","offspring","deer","means"],singular:function(b,a){this.singulars.unshift([b,a])},plural:function(b,a){this.plurals.unshift([b,a])},clearSingulars:function(){this.singulars=[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(a){return Ext.Array.indexOf(this.uncountable,a)!=-1},pluralize:function(g){if(this.isTransnumeral(g)){return g}var e=this.plurals,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||(c.test&&c.test(g))){return g.replace(c,a[1])}}return g},singularize:function(g){if(this.isTransnumeral(g)){return g}var e=this.singulars,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||(c.test&&c.test(g))){return g.replace(c,a[1])}}return g},classify:function(a){return Ext.String.capitalize(this.singularize(a))},ordinalize:function(d){var b=parseInt(d,10),c=b%10,a=b%100;if(11<=a&&a<=13){return d+"th"}else{switch(c){case 1:return d+"st";case 2:return d+"nd";case 3:return d+"rd";default:return d+"th"}}}},0,0,0,0,0,0,[Ext.util,"Inflector"],function(){var b={alumnus:"alumni",cactus:"cacti",focus:"foci",nucleus:"nuclei",radius:"radii",stimulus:"stimuli",ellipsis:"ellipses",paralysis:"paralyses",oasis:"oases",appendix:"appendices",index:"indexes",beau:"beaux",bureau:"bureaux",tableau:"tableaux",woman:"women",child:"children",man:"men",corpus:"corpora",criterion:"criteria",curriculum:"curricula",genus:"genera",memorandum:"memoranda",phenomenon:"phenomena",foot:"feet",goose:"geese",tooth:"teeth",antenna:"antennae",formula:"formulae",nebula:"nebulae",vertebra:"vertebrae",vita:"vitae"},a;for(a in b){this.plural(a,b[a]);this.singular(b[a],a)}}));(Ext.cmd.derive("Ext.data.association.HasMany",Ext.data.association.Association,{alternateClassName:"Ext.data.HasManyAssociation",constructor:function(c){var d=this,a,b;d.callParent(arguments);d.name=d.name||Ext.util.Inflector.pluralize(d.associatedName.toLowerCase());a=d.ownerModel.prototype;b=d.name;Ext.applyIf(d,{storeName:b+"Store",foreignKey:d.ownerName.toLowerCase()+"_id"});a[b]=d.createStore()},createStore:function(){var h=this,j=h.associatedModel,c=h.storeName,d=h.foreignKey,a=h.primaryKey,g=h.filterProperty,b=h.autoLoad,e=h.storeConfig||{};return function(){var n=this,l,m,k={};if(n[c]===undefined){if(g){m={property:g,value:n.get(g),exactMatch:true}}else{m={property:d,value:n.get(a),exactMatch:true}}k[d]=n.get(a);l=Ext.apply({},e,{model:j,filters:[m],remoteFilter:false,modelDefaults:k,disableMetaChangeEvent:true});n[c]=Ext.data.AbstractStore.create(l);if(b){n[c].load()}}return n[c]}},read:function(d,b,j){var g=d[this.name](),c,e,a,h;g.add(b.read(j).records);c=this.associatedModel.prototype.associations.findBy(function(k){return k.type==="belongsTo"&&k.associatedName===d.$className});if(c){e=g.data.items;a=e.length;for(h=0;h<a;h++){e[h][c.instanceName]=d}}}},1,0,0,0,["association.hasmany"],0,[Ext.data.association,"HasMany",Ext.data,"HasManyAssociation"],0));(Ext.cmd.derive("Ext.data.association.HasOne",Ext.data.association.Association,{alternateClassName:"Ext.data.HasOneAssociation",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"HasOneInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,g=d.ownerModel,e=d.associatedName,h=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(m,n){m=m||{};var l=this,o=l.get(c),p,j,k;if(m.reload===true||l[a]===undefined){j=Ext.ModelManager.create({},e);j.set(b,o);if(typeof m=="function"){m={callback:m,scope:n||l}}p=m.success;m.success=function(q){l[a]=q;if(p){p.apply(this,arguments)}};h.load(o,m);l[a]=j;return j}else{j=l[a];k=[j];n=n||m.scope||l;Ext.callback(m,n,k);Ext.callback(m.success,n,k);Ext.callback(m.failure,n,k);Ext.callback(m.callback,n,k);return j}}},read:function(c,a,e){var b=this.associatedModel.prototype.associations.findBy(function(g){return g.type==="belongsTo"&&g.associatedName===c.$className}),d=a.read([e]).records[0];c[this.instanceName]=d;if(b){d[b.instanceName]=c}}},1,0,0,0,["association.hasone"],0,[Ext.data.association,"HasOne",Ext.data,"HasOneAssociation"],0));(Ext.cmd.derive("Ext.data.proxy.WebStorage",Ext.data.proxy.Client,{alternateClassName:"Ext.data.WebStorageProxy",id:undefined,constructor:function(a){this.callParent(arguments);this.cache={};this.id=this.id||(this.store?this.store.storeId:undefined);this.initialize()},create:function(e,k,l){var j=this,d=e.records,c=d.length,a=j.getIds(),b,h,g;e.setStarted();if(j.isHierarchical===undefined){j.isHierarchical=!!d[0].isNode;if(j.isHierarchical){j.getStorageObject().setItem(j.getTreeKey(),true)}}for(g=0;g<c;g++){h=d[g];if(h.phantom){h.phantom=false;b=j.getNextId()}else{b=h.getId()}j.setRecord(h,b);h.commit();a.push(b)}j.setIds(a);e.setCompleted();e.setSuccessful();if(typeof k=="function"){k.call(l||j,e)}},read:function(g,m,o){var l=this,e=[],j=0,n=true,d=l.model,a,c,k,h,b;g.setStarted();if(l.isHierarchical){e=l.getTreeData()}else{a=l.getIds();c=a.length;b=g.id;if(b){h=l.getRecord(b);if(h!==null){k=new d(h,b,h)}if(k){e.push(k)}else{n=false}}else{for(;j<c;j++){b=a[j];h=l.getRecord(b);e.push(new d(h,b,h))}}}if(n){g.setSuccessful()}g.setCompleted();g.resultSet=Ext.create("Ext.data.ResultSet",{records:e,total:e.length,loaded:true});if(typeof m=="function"){m.call(o||l,g)}},update:function(e,j,k){var d=e.records,c=d.length,a=this.getIds(),h,b,g;e.setStarted();for(g=0;g<c;g++){h=d[g];this.setRecord(h);h.commit();b=h.getId();if(b!==undefined&&Ext.Array.indexOf(a,b)==-1){a.push(b)}}this.setIds(a);e.setCompleted();e.setSuccessful();if(typeof j=="function"){j.call(k||this,e)}},destroy:function(d,k,l){var g=this,c=d.records,a=g.getIds(),h=a.length,m=[],j={},e=c.length,b;d.setStarted();for(;e--;){Ext.apply(j,g.removeRecord(c[e]))}for(e=0;e<h;e++){b=a[e];if(!j[b]){m.push(b)}}g.setIds(m);d.setCompleted();d.setSuccessful();if(typeof k=="function"){k.call(l||g,d)}},getRecord:function(d){var b=this,a=b.cache,c=!a[d]?Ext.decode(b.getStorageObject().getItem(b.getRecordKey(d))):a[d];if(!c){return null}a[d]=c;c[b.model.prototype.idProperty]=d;return c},setRecord:function(k,c){if(c){k.setId(c)}else{c=k.getId()}var m=this,a=k.data,h={},j=m.model,l=j.prototype.fields.items,d=l.length,g=0,n,b,e,o;for(;g<d;g++){n=l[g];b=n.name;if(n.persist){h[b]=a[b]}}delete h[m.model.prototype.idProperty];if(k.isNode&&k.get("depth")===1){delete h.parentId}e=m.getStorageObject();o=m.getRecordKey(c);m.cache[c]=h;e.removeItem(o);e.setItem(o,Ext.encode(h))},removeRecord:function(a){var d=this,g=a.getId(),b={},c,e;b[g]=a;d.getStorageObject().removeItem(d.getRecordKey(g));delete d.cache[g];if(a.childNodes){e=a.childNodes;for(c=e.length;c--;){Ext.apply(b,d.removeRecord(e[c]))}}return b},getRecordKey:function(a){if(a.isModel){a=a.getId()}return Ext.String.format("{0}-{1}",this.id,a)},getRecordCounterKey:function(){return Ext.String.format("{0}-counter",this.id)},getTreeKey:function(){return Ext.String.format("{0}-tree",this.id)},getIds:function(){var g=this,d=(g.getStorageObject().getItem(g.id)||"").split(","),b=g.model,e=d.length,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",c;if(e==1&&d[0]===""){d=[]}else{for(c=0;c<e;c++){d[c]=a?d[c]:+d[c]}}return d},setIds:function(a){var b=this.getStorageObject(),c=a.join(",");b.removeItem(this.id);if(!Ext.isEmpty(c)){b.setItem(this.id,c)}},getNextId:function(){var d=this,e=d.getStorageObject(),c=d.getRecordCounterKey(),b=d.model,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",g;g=d.idGenerator.generate();e.setItem(c,g);if(!a){g=+g}return g},getTreeData:function(){var n=this,a=n.getIds(),e=a.length,j=[],b={},o=[],k=0,h=n.model,q=h.prototype.idProperty,g,m,p,l,d,c;for(;k<e;k++){c=a[k];m=n.getRecord(c);j.push(m);b[c]=m;if(!m.parentId){o.push(m)}}g=o.length;Ext.Array.sort(j,n.sortByParentId);for(k=g;k<e;k++){m=j[k];l=m.parentId;if(!p||p[q]!==l){p=b[l];p.children=d=[]}d.push(m)}for(k=e;k--;){m=j[k];if(!m.children&&!m.leaf){m.loaded=true}}for(k=g;k--;){m=o[k];o[k]=new h(m,m[q],m)}return o},sortByParentId:function(b,a){return(b.parentId||0)-(a.parentId||0)},initialize:function(){var b=this,a=b.getStorageObject(),c=+a.getItem(b.getRecordCounterKey());a.setItem(b.id,a.getItem(b.id)||"");if(a.getItem(b.getTreeKey())){b.isHierarchical=true}b.idGenerator=new Ext.data.SequentialIdGenerator({seed:c?c+1:1})},clear:function(){var d=this,e=d.getStorageObject(),c=d.getIds(),a=c.length,b;for(b=0;b<a;b++){e.removeItem(d.getRecordKey(c[b]))}e.removeItem(d.getRecordCounterKey());e.removeItem(d.getTreeKey());e.removeItem(d.id);d.cache={}},getStorageObject:function(){}},1,0,0,0,0,0,[Ext.data.proxy,"WebStorage",Ext.data,"WebStorageProxy"],0));(Ext.cmd.derive("Ext.data.proxy.LocalStorage",Ext.data.proxy.WebStorage,{alternateClassName:"Ext.data.LocalStorageProxy",getStorageObject:function(){return window.localStorage}},0,0,0,0,["proxy.localstorage"],0,[Ext.data.proxy,"LocalStorage",Ext.data,"LocalStorageProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Rest",Ext.data.proxy.Ajax,{alternateClassName:"Ext.data.RestProxy",actionMethods:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"},appendId:true,batchActions:false,buildUrl:function(g){var e=this,c=g.operation,b=c.records||[],a=b[0],h=e.format,d=e.getUrl(g),j=a?a.getId():c.id;if(e.appendId&&e.isValidId(j)){if(!d.match(/\/$/)){d+="/"}d+=j}if(h){if(!d.match(/\.$/)){d+="."}d+=h}g.url=d;return e.callParent(arguments)},isValidId:function(a){return a||a===0}},0,0,0,0,["proxy.rest"],0,[Ext.data.proxy,"Rest",Ext.data,"RestProxy"],0));(Ext.cmd.derive("Ext.data.proxy.SessionStorage",Ext.data.proxy.WebStorage,{alternateClassName:"Ext.data.SessionStorageProxy",getStorageObject:function(){return window.sessionStorage}},0,0,0,0,["proxy.sessionstorage"],0,[Ext.data.proxy,"SessionStorage",Ext.data,"SessionStorageProxy"],0));(Ext.cmd.derive("Ext.dd.DDTarget",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.initTarget(c,a,b)}},getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DDTarget"],0));(Ext.cmd.derive("Ext.dd.DragTracker",Ext.Base,{active:false,trackOver:false,tolerance:5,autoStart:false,constructor:function(a){var b=this;Ext.apply(b,a);b.addEvents("mouseover","mouseout","mousedown","mouseup","mousemove","beforedragstart","dragstart","dragend","drag");b.dragRegion=new Ext.util.Region(0,0,0,0);if(b.el){b.initEl(b.el)}b.mixins.observable.constructor.call(b);if(b.disabled){b.disable()}},initEl:function(a){var b=this;b.el=Ext.get(a);b.handle=Ext.get(b.delegate);b.delegate=b.handle?undefined:b.delegate;if(!b.handle){b.handle=b.el}b.handleListeners={scope:b,delegate:b.delegate,mousedown:b.onMouseDown};if(b.trackOver||b.overCls){Ext.apply(b.handleListeners,{mouseover:b.onMouseOver,mouseout:b.onMouseOut})}b.mon(b.handle,b.handleListeners)},disable:function(){this.disabled=true},enable:function(){this.disabled=false},destroy:function(){var a=this;if(a.active){a.endDrag({})}a.clearListeners();a.mun(a.handle,a.handleListeners);a.el=a.handle=null},onMouseOver:function(c,b){var a=this;if(!a.disabled){if(Ext.EventManager.contains(c)||a.delegate){a.mouseIsOut=false;if(a.overCls){a.el.addCls(a.overCls)}a.fireEvent("mouseover",a,c,a.delegate?c.getTarget(a.delegate,b):a.handle)}}},onMouseOut:function(b){var a=this;if(a.mouseIsDown){a.mouseIsOut=true}else{if(a.overCls){a.el.removeCls(a.overCls)}a.fireEvent("mouseout",a,b)}},onMouseDown:function(d,c){var b=this,a;if(b.disabled||d.dragTracked){return}b.dragTarget=b.delegate?c:b.handle.dom;b.startXY=b.lastXY=d.getXY();b.startRegion=Ext.fly(b.dragTarget).getRegion();if(b.fireEvent("mousedown",b,d)===false||b.fireEvent("beforedragstart",b,d)===false||b.onBeforeStart(d)===false){return}b.mouseIsDown=true;d.dragTracked=true;a=b.el.dom;if(Ext.isIE&&a.setCapture){a.setCapture()}if(b.preventDefault!==false){d.preventDefault()}Ext.getDoc().on({scope:b,mouseup:b.onMouseUp,mousemove:b.onMouseMove,selectstart:b.stopSelect});if(b.autoStart){b.timer=Ext.defer(b.triggerStart,b.autoStart===true?1000:b.autoStart,b,[d])}},onMouseMove:function(g,d){var b=this,c=g.getXY(),a=b.startXY;g.preventDefault();b.lastXY=c;if(!b.active){if(Math.max(Math.abs(a[0]-c[0]),Math.abs(a[1]-c[1]))>b.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(c){var b=this,a=b.active;Ext.getDoc().un({mousemove:b.onMouseMove,mouseup:b.onMouseUp,selectstart:b.stopSelect,scope:b});b.clearStart();b.active=false;if(a){b.onEnd(c);b.fireEvent("dragend",b,c)}b._constrainRegion=Ext.EventObject.dragTracked=null},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);this.timer=null}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.left<a.left){g[0]+=(a.left-e.left)}if(e.bottom>a.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top<a.top){g[1]+=(a.top-e.top)}return g}}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.dd,"DragTracker"],0));(Ext.cmd.derive("Ext.dd.DragZone",Ext.dd.DragSource,{constructor:function(c,b){var d=this,a=d.containerScroll;d.callParent([c,b]);if(a){c=d.scrollEl||c;c=Ext.get(c);if(Ext.isObject(a)){c.ddScrollConfig=a}Ext.dd.ScrollManager.register(c)}},getDragData:function(a){return Ext.dd.Registry.getHandleFromEvent(a)},onInitDrag:function(a,b){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(a,b);return true},getRepairXY:function(a){return Ext.fly(this.dragData.ddel).getXY()},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.scrollEl||this.el)}}},1,0,0,0,0,0,[Ext.dd,"DragZone"],0));(Ext.cmd.derive("Ext.dd.ScrollManager",Ext.Base,{singleton:true,constructor:function(){var a=Ext.dd.DragDropManager;a.fireEvents=Ext.Function.createSequence(a.fireEvents,this.onFire,this);a.stopDrag=Ext.Function.createSequence(a.stopDrag,this.onStop,this);this.doScroll=Ext.Function.bind(this.doScroll,this);this.ddmInstance=a;this.els={};this.dragEl=null;this.proc={}},onStop:function(a){var b=Ext.dd.ScrollManager;b.dragEl=null;b.clearProc()},triggerRefresh:function(){if(this.ddmInstance.dragCurrent){this.ddmInstance.refreshCache(this.ddmInstance.dragCurrent.groups)}},doScroll:function(){if(this.ddmInstance.dragCurrent){var a=this.proc,b=a.el,c=a.el.ddScrollConfig,d=c?c.increment:this.increment;if(!this.animate){if(b.scroll(a.dir,d)){this.triggerRefresh()}}else{b.scroll(a.dir,d,true,this.animDuration,this.triggerRefresh)}}},clearProc:function(){var a=this.proc;if(a.id){clearInterval(a.id)}a.id=0;a.el=null;a.dir=""},startProc:function(b,a){this.clearProc();this.proc.el=b;this.proc.dir=a;var d=b.ddScrollConfig?b.ddScrollConfig.ddGroup:undefined,c=(b.ddScrollConfig&&b.ddScrollConfig.frequency)?b.ddScrollConfig.frequency:this.frequency;if(d===undefined||this.ddmInstance.dragCurrent.ddGroup==d){this.proc.id=setInterval(this.doScroll,c)}},onFire:function(h,l){if(l||!this.ddmInstance.dragCurrent){return}if(!this.dragEl||this.dragEl!=this.ddmInstance.dragCurrent){this.dragEl=this.ddmInstance.dragCurrent;this.refreshCache()}var m=h.getXY(),n=h.getPoint(),j=this.proc,g=this.els,b,d,a,k;for(b in g){d=g[b];a=d._region;k=d.ddScrollConfig?d.ddScrollConfig:this;if(a&&a.contains(n)&&d.isScrollable()){if(a.bottom-n.y<=k.vthresh){if(j.el!=d){this.startProc(d,"down")}return}else{if(a.right-n.x<=k.hthresh){if(j.el!=d){this.startProc(d,"left")}return}else{if(n.y-a.top<=k.vthresh){if(j.el!=d){this.startProc(d,"up")}return}else{if(n.x-a.left<=k.hthresh){if(j.el!=d){this.startProc(d,"right")}return}}}}}}this.clearProc()},register:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.register(c[b])}}else{c=Ext.get(c);this.els[c.id]=c}},unregister:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.unregister(c[b])}}else{c=Ext.get(c);delete this.els[c.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){var a=this.els,b;for(b in a){if(typeof a[b]=="object"){a[b]._region=a[b].getRegion()}}}},1,0,0,0,0,0,[Ext.dd,"ScrollManager"],0));(Ext.cmd.derive("Ext.dd.DropTarget",Ext.dd.DDTarget,{constructor:function(b,a){this.el=Ext.get(b);Ext.apply(this,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}this.callParent([this.el.dom,this.ddGroup||this.group,{isTarget:true}])},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(a,c,b){if(this.overClass){this.el.addCls(this.overClass)}return this.dropAllowed},notifyOver:function(a,c,b){return this.dropAllowed},notifyOut:function(a,c,b){if(this.overClass){this.el.removeCls(this.overClass)}},notifyDrop:function(a,c,b){return false},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}},1,0,0,0,0,0,[Ext.dd,"DropTarget"],0));(Ext.cmd.derive("Ext.dd.Registry",Ext.Base,{singleton:true,constructor:function(){this.elements={};this.handles={};this.autoIdSeed=0},getId:function(b,a){if(typeof b=="string"){return b}var c=b.id;if(!c&&a!==false){c="extdd-"+(++this.autoIdSeed);b.id=c}return c},register:function(d,e){e=e||{};if(typeof d=="string"){d=document.getElementById(d)}e.ddel=d;this.elements[this.getId(d)]=e;if(e.isHandle!==false){this.handles[e.ddel.id]=e}if(e.handles){var c=e.handles,b,a;for(b=0,a=c.length;b<a;b++){this.handles[this.getId(c[b])]=e}}},unregister:function(d){var g=this.getId(d,false),e=this.elements[g],c,b,a;if(e){delete this.elements[g];if(e.handles){c=e.handles;for(b=0,a=c.length;b<a;b++){delete this.handles[this.getId(c[b],false)]}}}},getHandle:function(a){if(typeof a!="string"){a=a.id}return this.handles[a]},getHandleFromEvent:function(b){var a=b.getTarget();return a?this.handles[a.id]:null},getTarget:function(a){if(typeof a!="string"){a=a.id}return this.elements[a]},getTargetFromEvent:function(b){var a=b.getTarget();return a?this.elements[a.id]||this.handles[a.id]:null}},1,0,0,0,0,0,[Ext.dd,"Registry"],0));(Ext.cmd.derive("Ext.dd.DropZone",Ext.dd.DropTarget,{getTargetFromEvent:function(a){return Ext.dd.Registry.getTargetFromEvent(a)},onNodeEnter:function(d,a,c,b){},onNodeOver:function(d,a,c,b){return this.dropAllowed},onNodeOut:function(d,a,c,b){},onNodeDrop:function(d,a,c,b){return false},onContainerOver:function(a,c,b){return this.dropNotAllowed},onContainerDrop:function(a,c,b){return false},notifyEnter:function(a,c,b){return this.dropNotAllowed},notifyOver:function(a,c,b){var d=this.getTargetFromEvent(c);if(!d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}return this.onContainerOver(a,c,b)}if(this.lastOverNode!=d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b)}this.onNodeEnter(d,a,c,b);this.lastOverNode=d}return this.onNodeOver(d,a,c,b)},notifyOut:function(a,c,b){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}},notifyDrop:function(b,g,d){var c=this,h=c.getTargetFromEvent(g),a=h?c.onNodeDrop(h,b,g,d):c.onContainerDrop(b,g,d);if(c.lastOverNode){c.onNodeOut(c.lastOverNode,b,g,d);c.lastOverNode=null}return a},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}},0,0,0,0,0,0,[Ext.dd,"DropZone"],0));(Ext.cmd.derive("Ext.direct.Event",Ext.Base,{status:true,constructor:function(a){Ext.apply(this,a)},getName:function(){return this.name},getData:function(){return this.data}},1,0,0,0,["direct.event"],0,[Ext.direct,"Event"],0));(Ext.cmd.derive("Ext.direct.RemotingEvent",Ext.direct.Event,{getTransaction:function(){var a=this;return a.transaction||Ext.direct.Manager.getTransaction(a.tid)}},0,0,0,0,["direct.rpc"],0,[Ext.direct,"RemotingEvent"],0));(Ext.cmd.derive("Ext.direct.ExceptionEvent",Ext.direct.RemotingEvent,{status:false},0,0,0,0,["direct.exception"],0,[Ext.direct,"ExceptionEvent"],0));(Ext.cmd.derive("Ext.direct.JsonProvider",Ext.direct.Provider,{parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(Ext.isObject(a.responseText)){return a.responseText}return Ext.decode(a.responseText)}return null},createEvents:function(b){var h=this,j=null,d=[],g,c,a;try{j=h.parseResponse(b)}catch(k){g=new Ext.direct.ExceptionEvent({data:k,xhr:b,code:Ext.direct.Manager.exceptions.PARSE,message:"Error parsing json response: \n\n "+k});return[g]}if(Ext.isArray(j)){for(c=0,a=j.length;c<a;++c){d.push(h.createEvent(j[c]))}}else{if(Ext.isObject(j)){d.push(h.createEvent(j))}}return d},createEvent:function(a){if(typeof a!=="object"||!("type" in a)){return new Ext.direct.ExceptionEvent({data:a,code:Ext.direct.Manager.exceptions.DATA,message:"Invalid data: event type is not specified"})}return Ext.create("direct."+a.type,a)}},0,0,0,0,["direct.jsonprovider"],0,[Ext.direct,"JsonProvider"],0));(Ext.cmd.derive("Ext.direct.PollingProvider",Ext.direct.JsonProvider,{interval:3000,constructor:function(a){var b=this;b.callParent(arguments);b.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){var b=this,a=b.url;if(a&&!b.pollTask){b.pollTask=Ext.TaskManager.start({run:b.runPoll,interval:b.interval,scope:b});b.fireEvent("connect",b)}},disconnect:function(){var a=this;if(a.pollTask){Ext.TaskManager.stop(a.pollTask);delete a.pollTask;a.fireEvent("disconnect",a)}},runPoll:function(){var b=this,a=b.url;if(b.fireEvent("beforepoll",b)!==false){if(Ext.isFunction(a)){a(b.baseParams)}else{Ext.Ajax.request({url:a,callback:b.onData,scope:b,params:b.baseParams})}b.fireEvent("poll",b)}},onData:function(e,h,b){var g=this,d,a,c;if(h){c=g.createEvents(b);for(d=0,a=c.length;d<a;++d){g.fireEvent("data",g,c[d])}}else{c=new Ext.direct.ExceptionEvent({data:null,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:b});g.fireEvent("data",g,c)}}},1,0,0,0,["direct.pollingprovider"],0,[Ext.direct,"PollingProvider"],0));(Ext.cmd.derive("Ext.direct.RemotingMethod",Ext.Base,{constructor:function(c){var d=this,h=Ext.isDefined(c.params)?c.params:c.len,b,a,e,g;d.name=c.name;d.formHandler=c.formHandler;if(Ext.isNumeric(h)){d.len=h;d.ordered=true}else{d.params={};a=h.length;for(e=0;e<a;e++){g=h[e];b=Ext.isObject(g)?g.name:g;d.params[b]=true}}},getArgs:function(g,b,h){var e=this,c=[],d,a;if(e.ordered){if(e.len>0){if(b){for(d=0,a=b.length;d<a;d++){c.push(g[b[d]])}}else{if(h){c.push(g)}}}}else{c.push(g)}return c},getCallData:function(e){var g=this,c=null,d=g.len,b=g.params,h,j,a,k;if(g.ordered){h=e[d];j=e[d+1];k=e[d+2];if(d!==0){c=e.slice(0,d)}}else{c=Ext.apply({},e[0]);h=e[1];j=e[2];k=e[3];for(a in c){if(c.hasOwnProperty(a)&&!b[a]){delete c[a]}}}return{data:c,callback:h,scope:j,options:k}}},1,0,0,0,0,0,[Ext.direct,"RemotingMethod"],0));(Ext.cmd.derive("Ext.direct.Transaction",Ext.Base,{alternateClassName:"Ext.Direct.Transaction",statics:{TRANSACTION_ID:0},constructor:function(a){var b=this;Ext.apply(b,a);b.id=b.tid=++b.self.TRANSACTION_ID;b.retryCount=0},send:function(){var a=this;a.provider.queueTransaction(a)},retry:function(){var a=this;a.retryCount++;a.send()},getProvider:function(){return this.provider}},1,0,0,0,["direct.transaction"],0,[Ext.direct,"Transaction",Ext.Direct,"Transaction"],0));(Ext.cmd.derive("Ext.direct.RemotingProvider",Ext.direct.JsonProvider,{enableBuffer:10,maxRetries:1,constructor:function(a){var b=this;b.callParent(arguments);b.addEvents("beforecall","call","beforecallback");b.namespace=(Ext.isString(b.namespace))?Ext.ns(b.namespace):b.namespace||Ext.global;b.transactions=new Ext.util.MixedCollection();b.callBuffer=[]},getNamespace:function(b,e){var g,d,c,a;b=b||Ext.global;g=e.toString().split(".");for(c=0,a=g.length;c<a;c++){d=g[c];b=b[d];if(typeof b==="undefined"){return b}}return b},createNamespaces:function(b,e){var g,d;b=b||Ext.global;g=e.toString().split(".");for(var c=0,a=g.length;c<a;c++){d=g[c];b[d]=b[d]||{};b=b[d]}return b},initAPI:function(){var j=this,e=j.actions,c=j.namespace,d,k,b,g,h,a;for(d in e){if(e.hasOwnProperty(d)){if(j.disableNestedActions){k=c[d];if(!k){k=c[d]={}}}else{k=j.getNamespace(c,d);if(!k){k=j.createNamespaces(c,d)}}b=e[d];for(g=0,h=b.length;g<h;++g){a=new Ext.direct.RemotingMethod(b[g]);k[a.name]=j.createHandler(d,a)}}}},createHandler:function(c,e){var b=this,d=Array.prototype.slice,a;if(!e.formHandler){a=function(){b.configureRequest(c,e,d.call(arguments,0))}}else{a=function(h,j,g){b.configureFormRequest(c,e,h,j,g)}}a.directCfg={action:c,method:e};return a},isConnected:function(){return !!this.connected},connect:function(){var a=this;if(a.url){a.initAPI();a.connected=true;a.fireEvent("connect",a)}},disconnect:function(){var a=this;if(a.connected){a.connected=false;a.fireEvent("disconnect",a)}},runCallback:function(g,c){var e=!!c.status,d=e?"success":"failure",h,b,a;if(g&&g.callback){h=g.callback;b=g.callbackOptions;a=typeof c.result!=="undefined"?c.result:c.data;if(Ext.isFunction(h)){h(a,c,e,b)}else{Ext.callback(h[d],h.scope,[a,c,e,b]);Ext.callback(h.callback,h.scope,[a,c,e,b])}}},onData:function(l,j,c){var g=this,d,e,k,a,b,h;if(j){k=g.createEvents(c);for(d=0,e=k.length;d<e;++d){a=k[d];b=g.getTransaction(a);g.fireEvent("data",g,a);if(b&&g.fireEvent("beforecallback",g,a,b)!==false){g.runCallback(b,a,true);Ext.direct.Manager.removeTransaction(b)}}}else{h=[].concat(l.transaction);for(d=0,e=h.length;d<e;++d){b=g.getTransaction(h[d]);if(b&&b.retryCount<g.maxRetries){b.retry()}else{a=new Ext.direct.ExceptionEvent({data:null,transaction:b,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:c});g.fireEvent("data",g,a);if(b&&g.fireEvent("beforecallback",g,b)!==false){g.runCallback(b,a,false);Ext.direct.Manager.removeTransaction(b)}}}}},getTransaction:function(a){return a&&a.tid?Ext.direct.Manager.getTransaction(a.tid):null},configureRequest:function(g,b,j){var k=this,d,h,l,m,a,c,e;d=b.getCallData(j);h=d.data;l=d.callback;m=d.scope;a=d.options||{};e=Ext.apply({},{provider:k,args:j,action:g,method:b.name,data:h,callbackOptions:a,callback:m&&Ext.isFunction(l)?Ext.Function.bind(l,m):l});if(a.timeout){Ext.applyIf(e,{timeout:a.timeout})}c=new Ext.direct.Transaction(e);if(k.fireEvent("beforecall",k,c,b)!==false){Ext.direct.Manager.addTransaction(c);k.queueTransaction(c);k.fireEvent("call",k,c,b)}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.id}},sendRequest:function(h){var g=this,e,b,j,d=g.enableUrlEncode,c,a;e={url:g.url,callback:g.onData,scope:g,transaction:h,timeout:g.timeout};if(h.timeout){e.timeout=h.timeout}if(Ext.isArray(h)){b=[];for(c=0,a=h.length;c<a;++c){b.push(g.getCallData(h[c]))}}else{b=g.getCallData(h)}if(d){j={};j[Ext.isString(d)?d:"data"]=Ext.encode(b);e.params=j}else{e.jsonData=b}Ext.Ajax.request(e)},queueTransaction:function(c){var b=this,a=b.enableBuffer;if(c.form){b.sendFormRequest(c);return}if(a===false||typeof c.timeout!=="undefined"){b.sendRequest(c);return}b.callBuffer.push(c);if(a){if(!b.callTask){b.callTask=new Ext.util.DelayedTask(b.combineAndSend,b)}b.callTask.delay(Ext.isNumber(a)?a:10)}else{b.combineAndSend()}},combineAndSend:function(){var c=this,b=c.callBuffer,a=b.length;if(a>0){c.sendRequest(a==1?b[0]:b);c.callBuffer=[]}},configureFormRequest:function(e,a,b,j,k){var h=this,c,g,d;c=new Ext.direct.Transaction({provider:h,action:e,method:a.name,args:[b,j,k],callback:k&&Ext.isFunction(j)?Ext.Function.bind(j,k):j,isForm:true});if(h.fireEvent("beforecall",h,c,a)!==false){Ext.direct.Manager.addTransaction(c);g=String(b.getAttribute("enctype")).toLowerCase()=="multipart/form-data";d={extTID:c.id,extAction:e,extMethod:a.name,extType:"rpc",extUpload:String(g)};Ext.apply(c,{form:Ext.getDom(b),isUpload:g,params:j&&Ext.isObject(j.params)?Ext.apply(d,j.params):d});h.fireEvent("call",h,c,a);h.sendFormRequest(c)}},sendFormRequest:function(b){var a=this;Ext.Ajax.request({url:a.url,params:b.params,callback:a.onData,scope:a,form:b.form,isUpload:b.isUpload,transaction:b})}},1,0,0,0,["direct.remotingprovider"],0,[Ext.direct,"RemotingProvider"],0));(Ext.cmd.derive("Ext.dom.Layer",Ext.Element,{alternateClassName:"Ext.Layer",statics:{shims:[]},isLayer:true,localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(c,b){c=c||{};var d=this,e=Ext.DomHelper,h=c.parentEl,g=h?Ext.getDom(h):document.body,j=c.hideMode,a=Ext.baseCSSPrefix+(c.fixed&&!(Ext.isIE6||Ext.isIEQuirks)?"fixed-layer":"layer");d.el=d;if(b){d.dom=Ext.getDom(b)}if(!d.dom){d.dom=e.append(g,c.dh||{tag:"div",cls:a})}else{d.addCls(a);if(!d.dom.parentNode){g.appendChild(d.dom)}}if(c.preventSync){d.preventSync=true}if(c.id){d.id=d.dom.id=c.id}else{d.id=Ext.id(d.dom)}Ext.Element.addToCache(d);if(c.cls){d.addCls(c.cls)}d.constrain=c.constrain!==false;if(j){d.setVisibilityMode(Ext.Element[j.toUpperCase()]);if(d.visibilityMode==Ext.Element.ASCLASS){d.visibilityCls=c.visibilityCls}}else{if(c.useDisplay){d.setVisibilityMode(Ext.Element.DISPLAY)}else{d.setVisibilityMode(Ext.Element.VISIBILITY)}}if(c.shadow){d.shadowOffset=c.shadowOffset||4;d.shadow=new Ext.Shadow({offset:d.shadowOffset,mode:c.shadow,fixed:c.fixed});d.disableShadow()}else{d.shadowOffset=0}d.useShim=c.shim!==false&&Ext.useShims;if(c.hidden===true){d.hide()}else{d.show()}},getZIndex:function(){return parseInt((this.getShim()||this).getStyle("z-index"),10)},getShim:function(){var b=this,c,a;if(!b.useShim){return null}if(!b.shim){c=b.self.shims.shift();if(!c){c=b.createShim();c.enableDisplayMode("block");c.hide()}a=b.dom.parentNode;if(c.dom.parentNode!=a){a.insertBefore(c.dom,b.dom)}b.shim=c}return b.shim},hideShim:function(){var a=this;if(a.shim){a.shim.setDisplayed(false);a.self.shims.push(a.shim);delete a.shim}},disableShadow:function(){var a=this;if(a.shadow&&!a.shadowDisabled){a.shadowDisabled=true;a.shadow.hide();a.lastShadowOffset=a.shadowOffset;a.shadowOffset=0}},enableShadow:function(a){var b=this;if(b.shadow&&b.shadowDisabled){b.shadowDisabled=false;b.shadowOffset=b.lastShadowOffset;delete b.lastShadowOffset;if(a){b.sync(true)}}},sync:function(b){var j=this,o=j.shadow,g,d,a,c,p,l,k,n,e,m;if(j.preventSync){return}if(!j.updating&&j.isVisible()&&(o||j.useShim)){c=j.getShim();p=j[j.localXYNames.get]();l=p[0];k=p[1];n=j.dom.offsetWidth;e=j.dom.offsetHeight;if(o&&!j.shadowDisabled){if(b&&!o.isVisible()){o.show(j)}else{o.realign(l,k,n,e)}if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=(g[0])+"px";d.top=(g[1])+"px";d.width=(a.width)+"px";d.height=(a.height)+"px"}else{c.setSize(n,e);c[j.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();c.setSize(n,e);c[j.localXYNames.set](l,k)}}}return j},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),j=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((j+k)>g+m.left){j=g-k-a;d=true}if((e+c)>b+m.top){e=b-c-a;d=true}if(j<m.left){j=m.left;d=true}if(e<m.top){e=m.top;d=true}if(d){Ext.Layer.superclass.setXY.call(this,[j,e]);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},setVisible:function(e,b,d,h,g){var c=this,a;a=function(){if(e){c.sync(true)}if(h){h()}};if(!e){c.hideUnders(true)}c.callParent([e,b,d,h,g]);if(!b){a()}return c},beforeFx:function(){this.beforeAction();return this.callParent(arguments)},afterFx:function(){this.callParent(arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(a){this.callParent(arguments);return this.sync()},setTop:function(a){this.callParent(arguments);return this.sync()},setLeftTop:function(b,a){this.callParent(arguments);return this.sync()},setLocalX:function(){this.callParent(arguments);return this.sync()},setLocalXY:function(){this.callParent(arguments);return this.sync()},setLocalY:function(){this.callParent(arguments);return this.sync()},setXY:function(d,a,c,g,e){var b=this;g=b.createCB(g);b.fixDisplay();b.beforeAction();b.callParent([d,a,c,g,e]);if(!a){g()}return b},createCB:function(c){var a=this,b=a.shadow&&a.shadow.isVisible();return function(){a.constrainXY();a.sync(b);if(c){c()}}},setX:function(a,b,c,e,d){this.setXY([a,this.getY()],b,c,e,d);return this},setY:function(e,a,b,d,c){this.setXY([this.getX(),e],a,b,d,c);return this},setSize:function(a,c,b,e,j,g){var d=this;j=d.createCB(j);d.beforeAction();d.callParent([a,c,b,e,j,g]);if(!b){j()}return d},setWidth:function(a,b,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([a,b,d,g,e]);if(!b){g()}return c},setHeight:function(b,a,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([b,a,d,g,e]);if(!a){g()}return c},setBounds:function(h,g,a,k,b,c,j,d){var e=this;j=e.createCB(j);e.beforeAction();if(!b){Ext.Layer.superclass.setXY.call(e,[h,g]);Ext.Layer.superclass.setSize.call(e,a,k);j()}else{e.callParent([h,g,a,k,b,c,j,d])}return e},setZIndex:function(a){var b=this;b.zindex=a;if(b.getShim()){b.shim.setStyle("z-index",a++)}if(b.shadow){b.shadow.setZIndex(a++)}return b.setStyle("z-index",a)},onOpacitySet:function(a){var b=this.shadow;if(b){b.setOpacity(a)}}},1,0,0,0,0,0,[Ext.dom,"Layer",Ext,"Layer"],0));(Ext.cmd.derive("Ext.draw.Matrix",Ext.Base,{constructor:function(h,g,m,l,k,j){if(h!=null){this.matrix=[[h,m,k],[g,l,j],[0,0,1]]}else{this.matrix=[[1,0,0],[0,1,0],[0,0,1]]}},add:function(t,q,n,l,j,h){var o=this,g=[[],[],[]],s=[[t,n,j],[q,l,h],[0,0,1]],r,p,m,k;for(r=0;r<3;r++){for(p=0;p<3;p++){k=0;for(m=0;m<3;m++){k+=o.matrix[r][m]*s[m][p]}g[r][p]=k}}o.matrix=g},prepend:function(t,q,n,l,j,h){var o=this,g=[[],[],[]],s=[[t,n,j],[q,l,h],[0,0,1]],r,p,m,k;for(r=0;r<3;r++){for(p=0;p<3;p++){k=0;for(m=0;m<3;m++){k+=s[r][m]*o.matrix[m][p]}g[r][p]=k}}o.matrix=g},invert:function(){var k=this.matrix,j=k[0][0],h=k[1][0],o=k[0][1],n=k[1][1],m=k[0][2],l=k[1][2],g=j*n-h*o;return new Ext.draw.Matrix(n/g,-h/g,-o/g,j/g,(o*l-n*m)/g,(h*m-j*l)/g)},clone:function(){var j=this.matrix,h=j[0][0],g=j[1][0],n=j[0][1],m=j[1][1],l=j[0][2],k=j[1][2];return new Ext.draw.Matrix(h,g,n,m,l,k)},translate:function(a,b){this.prepend(1,0,0,1,a,b)},scale:function(b,e,a,d){var c=this;if(e==null){e=b}c.add(b,0,0,e,a*(1-b),d*(1-e))},rotate:function(c,b,h){c=Ext.draw.Draw.rad(c);var e=this,g=+Math.cos(c).toFixed(9),d=+Math.sin(c).toFixed(9);e.add(g,d,-d,g,b-g*b+d*h,-(d*b)+h-g*h)},x:function(a,c){var b=this.matrix;return a*b[0][0]+c*b[0][1]+b[0][2]},y:function(a,c){var b=this.matrix;return a*b[1][0]+c*b[1][1]+b[1][2]},get:function(b,a){return +this.matrix[b][a].toFixed(4)},toString:function(){var a=this;return[a.get(0,0),a.get(0,1),a.get(1,0),a.get(1,1),0,0].join()},toSvg:function(){var a=this;return"matrix("+[a.get(0,0),a.get(1,0),a.get(0,1),a.get(1,1),a.get(0,2),a.get(1,2)].join()+")"},toFilter:function(b,a){var c=this;b=b||0;a=a||0;return"progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', filterType='bilinear', M11="+c.get(0,0)+", M12="+c.get(0,1)+", M21="+c.get(1,0)+", M22="+c.get(1,1)+", Dx="+(c.get(0,2)+b)+", Dy="+(c.get(1,2)+a)+")"},offset:function(){var a=this.matrix;return[(a[0][2]||0).toFixed(4),(a[1][2]||0).toFixed(4)]},split:function(){function d(g){return g[0]*g[0]+g[1]*g[1]}function b(g){var h=Math.sqrt(d(g));g[0]/=h;g[1]/=h}var a=this.matrix,c={translateX:a[0][2],translateY:a[1][2]},e;e=[[a[0][0],a[0][1]],[a[1][1],a[1][1]]];c.scaleX=Math.sqrt(d(e[0]));b(e[0]);c.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1];e[1]=[e[1][0]-e[0][0]*c.shear,e[1][1]-e[0][1]*c.shear];c.scaleY=Math.sqrt(d(e[1]));b(e[1]);c.shear/=c.scaleY;c.rotate=Math.asin(-e[0][1]);c.isSimple=!+c.shear.toFixed(9)&&(c.scaleX.toFixed(9)==c.scaleY.toFixed(9)||!c.rotate);return c}},3,0,0,0,0,0,[Ext.draw,"Matrix"],0));(Ext.cmd.derive("Ext.draw.SpriteDD",Ext.dd.DragSource,{constructor:function(b,a){var d=this,c=b.el;d.sprite=b;d.el=c;d.dragData={el:c,sprite:b};d.callParent([c,a]);d.sprite.setStyle("cursor","move")},showFrame:Ext.emptyFn,createFrame:Ext.emptyFn,getDragEl:function(a){return this.el},getRegion:function(){var k=this,g=k.el,n,d,c,p,o,u,a,m,h,s,q;q=k.sprite;s=q.getBBox();try{n=Ext.Element.getXY(g)}catch(j){}if(!n){return null}d=n[0];c=d+s.width;p=n[1];o=p+s.height;return new Ext.util.Region(p,c,o,d)},startDrag:function(b,d){var c=this,a=c.sprite.attr;c.prev=c.sprite.surface.transformToViewBox(b,d)},onDrag:function(j){var h=j.getXY(),g=this,d=g.sprite,a=d.attr,c,b;h=g.sprite.surface.transformToViewBox(h[0],h[1]);c=h[0]-g.prev[0];b=h[1]-g.prev[1];d.setAttributes({translate:{x:a.translation.x+c,y:a.translation.y+b}},true);g.prev=h},setDragElPos:function(){return false}},1,0,0,0,0,0,[Ext.draw,"SpriteDD"],0));(Ext.cmd.derive("Ext.draw.Sprite",Ext.Base,{dirty:false,dirtyHidden:false,dirtyTransform:false,dirtyPath:true,dirtyFont:true,zIndexDirty:true,isSprite:true,zIndex:0,fontProperties:["font","font-size","font-weight","font-style","font-family","text-anchor","text"],pathProperties:["x","y","d","path","height","width","radius","r","rx","ry","cx","cy"],constructor:function(a){var b=this;a=Ext.merge({},a||{});b.id=Ext.id(null,"ext-sprite-");b.transformations=[];Ext.copyTo(this,a,"surface,group,type,draggable");b.bbox={};b.attr={zIndex:0,translation:{x:null,y:null},rotation:{degrees:null,x:null,y:null},scaling:{x:null,y:null,cx:null,cy:null}};delete a.surface;delete a.group;delete a.type;delete a.draggable;b.setAttributes(a);b.addEvents("beforedestroy","destroy","render","mousedown","mouseup","mouseover","mouseout","mousemove","click");b.mixins.observable.constructor.apply(this,arguments)},initDraggable:function(){var a=this;if(!a.el){a.surface.createSpriteElement(a)}a.dd=new Ext.draw.SpriteDD(a,Ext.isBoolean(a.draggable)?null:a.draggable);a.on("beforedestroy",a.dd.destroy,a.dd)},setAttributes:function(l,o){var t=this,j=t.fontProperties,q=j.length,h=t.pathProperties,g=h.length,r=!!t.surface,a=r&&t.surface.customAttributes||{},c=t.attr,b=false,m,p,k,d,s,n,u,e;l=Ext.apply({},l);for(m in a){if(l.hasOwnProperty(m)&&typeof a[m]=="function"){Ext.apply(l,a[m].apply(t,[].concat(l[m])))}}if(!!l.hidden!==!!c.hidden){t.dirtyHidden=true}for(p=0;p<g;p++){m=h[p];if(m in l&&l[m]!==c[m]){t.dirtyPath=true;b=true;break}}if("zIndex" in l){t.zIndexDirty=true}if("text" in l){t.dirtyFont=true;b=true}for(p=0;p<q;p++){m=j[p];if(m in l&&l[m]!==c[m]){t.dirtyFont=true;b=true;break}}k=l.translation||l.translate;delete l.translate;delete l.translation;d=c.translation;if(k){if(("x" in k&&k.x!==d.x)||("y" in k&&k.y!==d.y)){t.dirtyTransform=true;d.x=k.x;d.y=k.y}}s=l.rotation||l.rotate;n=c.rotation;delete l.rotate;delete l.rotation;if(s){if(("x" in s&&s.x!==n.x)||("y" in s&&s.y!==n.y)||("degrees" in s&&s.degrees!==n.degrees)){t.dirtyTransform=true;n.x=s.x;n.y=s.y;n.degrees=s.degrees}}u=l.scaling||l.scale;e=c.scaling;delete l.scale;delete l.scaling;if(u){if(("x" in u&&u.x!==e.x)||("y" in u&&u.y!==e.y)||("cx" in u&&u.cx!==e.cx)||("cy" in u&&u.cy!==e.cy)){t.dirtyTransform=true;e.x=u.x;e.y=u.y;e.cx=u.cx;e.cy=u.cy}}if(!t.dirtyTransform&&b){if(c.scaling.x===null||c.scaling.y===null||c.rotation.y===null||c.rotation.y===null){t.dirtyTransform=true}}Ext.apply(c,l);t.dirty=true;if(o===true&&r){t.redraw()}return this},getBBox:function(){return this.surface.getBBox(this)},setText:function(a){return this.surface.setText(this,a)},hide:function(a){this.setAttributes({hidden:true},a);return this},show:function(a){this.setAttributes({hidden:false},a);return this},remove:function(){if(this.surface){this.surface.remove(this);return true}return false},onRemove:function(){this.surface.onRemove(this)},destroy:function(){var a=this;if(a.fireEvent("beforedestroy",a)!==false){a.remove();a.surface.onDestroy(a);a.clearListeners();a.fireEvent("destroy")}},redraw:function(){this.surface.renderItem(this);return this},setStyle:function(){this.el.setStyle.apply(this.el,arguments);return this},addCls:function(a){this.surface.addCls(this,a);return this},removeCls:function(a){this.surface.removeCls(this,a);return this}},1,0,0,0,0,[["observable",Ext.util.Observable],["animate",Ext.util.Animate]],[Ext.draw,"Sprite"],0));(Ext.cmd.derive("Ext.draw.Text",Ext.draw.Component,{text:"",focusable:false,viewBox:false,autoSize:true,baseCls:Ext.baseCSSPrefix+"surface "+Ext.baseCSSPrefix+"draw-text",initComponent:function(){var a=this;a.textConfig=Ext.apply({type:"text",text:a.text,rotate:{degrees:a.degrees||0}},a.textStyle);Ext.apply(a.textConfig,a.getStyles(a.styleSelectors||a.styleSelector));a.initialConfig.items=[a.textConfig];a.callParent(arguments)},getStyles:function(d){d=Ext.Array.from(d);var c=0,b=d.length,g,e,h,a={};for(;c<b;c++){g=Ext.util.CSS.getRule(d[c]);if(g){e=g.style;if(e){Ext.apply(a,{"font-family":e.fontFamily,"font-weight":e.fontWeight,"line-height":e.lineHeight,"font-size":e.fontSize,fill:e.color})}}}return a},setAngle:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.degrees=d;b.setAttributes({rotate:{degrees:d}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.degrees=d}},setText:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.text=d||"";a.remove(b);c.textConfig.type="text";c.textConfig.text=c.text;b=a.add(c.textConfig);b.setAttributes({rotate:{degrees:c.degrees}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.on({render:function(){c.setText(d)},single:true})}}},0,["text"],["draw","text","component","box"],{draw:true,text:true,component:true,box:true},["widget.text"],0,[Ext.draw,"Text"],0));(Ext.cmd.derive("Ext.draw.engine.ImageExporter",Ext.Base,{singleton:true,defaultUrl:"http://svg.sencha.io",supportedTypes:["image/png","image/jpeg"],widthParam:"width",heightParam:"height",typeParam:"type",svgParam:"svg",formCls:Ext.baseCSSPrefix+"hide-display",generate:function(a,b){b=b||{};var e=this,c=b.type,d;if(Ext.Array.indexOf(e.supportedTypes,c)===-1){return false}d=Ext.getBody().createChild({tag:"form",method:"POST",action:b.url||e.defaultUrl,cls:e.formCls,children:[{tag:"input",type:"hidden",name:b.widthParam||e.widthParam,value:b.width||a.width},{tag:"input",type:"hidden",name:b.heightParam||e.heightParam,value:b.height||a.height},{tag:"input",type:"hidden",name:b.typeParam||e.typeParam,value:c},{tag:"input",type:"hidden",name:b.svgParam||e.svgParam}]});d.last(null,true).value=Ext.draw.engine.SvgExporter.generate(a);d.dom.submit();d.remove();return true}},0,0,0,0,0,0,[Ext.draw.engine,"ImageExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Svg",Ext.draw.Surface,{engine:"Svg",trimRe:/^\s+|\s+$/g,spacesRe:/\s+/,xlink:"http://www.w3.org/1999/xlink",translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",path:"d",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},parsers:{},minDefaults:{circle:{cx:0,cy:0,r:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start","font-family":null,"font-size":null,"font-weight":null,"font-style":null,fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},createSvgElement:function(d,a){var c=this.domRef.createElementNS("http://www.w3.org/2000/svg",d),b;if(a){for(b in a){c.setAttribute(b,String(a[b]))}}return c},createSpriteElement:function(a){var b=this.createSvgElement(a.type);b.id=a.id;if(b.style){b.style.webkitTapHighlightColor="rgba(0,0,0,0)"}a.el=Ext.get(b);this.applyZIndex(a);a.matrix=new Ext.draw.Matrix();a.bbox={plain:0,transform:0};this.applyAttrs(a);this.applyTransformations(a);a.fireEvent("render",a);return b},getBBoxText:function(j){var k={},g,l,a,c,h,b;if(j&&j.el){b=j.el.dom;try{k=b.getBBox();return k}catch(d){}k={x:k.x,y:Infinity,width:0,height:0};h=b.getNumberOfChars();for(c=0;c<h;c++){g=b.getExtentOfChar(c);k.y=Math.min(g.y,k.y);l=g.y+g.height-k.y;k.height=Math.max(k.height,l);a=g.x+g.width-k.x;k.width=Math.max(k.width,a)}return k}},hide:function(){Ext.get(this.el).hide()},show:function(){Ext.get(this.el).show()},hidePrim:function(a){this.addCls(a,Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){this.removeCls(a,Ext.baseCSSPrefix+"hide-visibility")},getDefs:function(){return this._defs||(this._defs=this.createSvgElement("defs"))},transform:function(k,a){var h=this,j=new Ext.draw.Matrix(),e=k.transformations,d=e.length,c=0,b,g;for(;c<d;c++){b=e[c];g=b.type;if(g=="translate"){j.translate(b.x,b.y)}else{if(g=="rotate"){j.rotate(b.degrees,b.x,b.y)}else{if(g=="scale"){j.scale(b.x,b.y,b.centerX,b.centerY)}}}}k.matrix=j;if(!a){k.el.set({transform:j.toSvg()})}},setSize:function(c,a){var d=this,b=d.el;c=+c||d.width;a=+a||d.height;d.width=c;d.height=a;b.setSize(c,a);b.set({width:c,height:a});d.callParent([c,a])},getRegion:function(){var e=this.el.getXY(),c=this.bgRect.getXY(),b=Math.max,a=b(e[0],c[0]),d=b(e[1],c[1]);return{left:a,top:d,right:a+this.width,bottom:d+this.height}},onRemove:function(a){if(a.el){a.el.destroy();delete a.el}this.callParent(arguments)},setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.callParent(arguments);this.el.dom.setAttribute("viewBox",[b,d,c,a].join(" "))}},render:function(c){var g=this,e,b,d,a,h,j;if(!g.el){e=g.width||0;b=g.height||0;d=g.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:e,height:b});a=g.getDefs();h=g.createSvgElement("rect",{width:"100%",height:"100%",fill:"#000",stroke:"none",opacity:0});if(Ext.isSafari3){j=g.createSvgElement("rect",{x:-10,y:-10,width:"110%",height:"110%",fill:"none",stroke:"#000"})}d.appendChild(a);if(Ext.isSafari3){d.appendChild(j)}d.appendChild(h);c.appendChild(d);g.el=Ext.get(d);g.bgRect=Ext.get(h);if(Ext.isSafari3){g.webkitRect=Ext.get(j);g.webkitRect.hide()}g.el.on({scope:g,mouseup:g.onMouseUp,mousedown:g.onMouseDown,mouseover:g.onMouseOver,mouseout:g.onMouseOut,mousemove:g.onMouseMove,mouseenter:g.onMouseEnter,mouseleave:g.onMouseLeave,click:g.onClick,dblclick:g.onDblClick})}g.renderAll()},onMouseEnter:function(a){if(this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseenter",a)}},onMouseLeave:function(a){if(!this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseleave",a)}},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);if(d.nodeName=="tspan"&&d.parentNode){d=d.parentNode}c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},tuneText:function(k,l){var a=k.el.dom,b=[],n,h,m,d,e,c,g,j;if(l.hasOwnProperty("text")){m=k.tspans&&Ext.Array.map(k.tspans,function(o){return o.textContent}).join("");if(!k.tspans||l.text!=m){b=this.setText(k,l.text);k.tspans=b}else{b=k.tspans||[]}}if(b.length){n=this.getBBoxText(k).height;j=k.el.dom.getAttribute("x");for(d=0,e=b.length;d<e;d++){g=(Ext.isFF3_0||Ext.isFF3_5)?2:4;b[d].setAttribute("x",j);b[d].setAttribute("dy",d?n*1.2:n/g)}k.dirty=true}},setText:function(k,d){var h=this,a=k.el.dom,b=[],m,j,l,e,g,c;while(a.firstChild){a.removeChild(a.firstChild)}c=String(d).split("\n");for(e=0,g=c.length;e<g;e++){l=c[e];if(l){j=h.createSvgElement("tspan");j.appendChild(document.createTextNode(Ext.htmlDecode(l)));a.appendChild(j);b[e]=j}}return b},renderAll:function(){this.items.each(this.renderItem,this)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.zIndexDirty){this.applyZIndex(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},redraw:function(a){a.dirty=a.zIndexDirty=true;this.renderItem(a)},applyAttrs:function(r){var m=this,c=r.el,q=r.group,j=r.attr,s=m.parsers,g=m.gradientsMap||{},k=Ext.isSafari&&!Ext.isStrict,e,h,l,p,d,o,b,a,n;if(q){e=[].concat(q);l=e.length;for(h=0;h<l;h++){q=e[h];m.getGroup(q).add(r)}delete r.group}p=m.scrubAttrs(r)||{};r.bbox.plain=0;r.bbox.transform=0;if(r.type=="circle"||r.type=="ellipse"){p.cx=p.cx||p.x;p.cy=p.cy||p.y}else{if(r.type=="rect"){p.rx=p.ry=p.r}else{if(r.type=="path"&&p.d){p.d=Ext.draw.Draw.pathToString(Ext.draw.Draw.pathToAbsolute(p.d))}}}r.dirtyPath=false;if(p["clip-rect"]){m.setClip(r,p);delete p["clip-rect"]}if(r.type=="text"&&p.font&&r.dirtyFont){c.set({style:"font: "+p.font})}if(r.type=="image"){c.dom.setAttributeNS(m.xlink,"href",p.src)}Ext.applyIf(p,m.minDefaults[r.type]);if(r.dirtyHidden){(j.hidden)?m.hidePrim(r):m.showPrim(r);r.dirtyHidden=false}for(o in p){if(p.hasOwnProperty(o)&&p[o]!=null){if(k&&("color|stroke|fill".indexOf(o)>-1)&&(p[o] in g)){p[o]=g[p[o]]}if(o=="hidden"&&r.type=="text"){continue}if(o in s){c.dom.setAttribute(o,s[o](p[o],r,m))}else{c.dom.setAttribute(o,p[o])}}}if(r.type=="text"){m.tuneText(r,p)}r.dirtyFont=false;b=j.style;if(b){c.setStyle(b)}r.dirty=false;if(Ext.isSafari3){m.webkitRect.show();setTimeout(function(){m.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,l=Ext.isSafari&&!Ext.isStrict,j,g,k,c,b;b=e.gradientsMap||{};if(!l){if(h.type=="linear"){j=e.createSvgElement("linearGradient");j.setAttribute("x1",a[0]);j.setAttribute("y1",a[1]);j.setAttribute("x2",a[2]);j.setAttribute("y2",a[3])}else{j=e.createSvgElement("radialGradient");j.setAttribute("cx",h.centerX);j.setAttribute("cy",h.centerY);j.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){j.setAttribute("fx",h.focalX);j.setAttribute("fy",h.focalY)}}j.id=h.id;e.getDefs().appendChild(j);for(c=0;c<d;c++){g=h.stops[c];k=e.createSvgElement("stop");k.setAttribute("offset",g.offset+"%");k.setAttribute("stop-color",g.color);k.setAttribute("stop-opacity",g.opacity);j.appendChild(k)}}else{b["url(#"+h.id+")"]=h.stops[0].color}e.gradientsMap=b},hasCls:function(a,b){return b&&(" "+(a.el.dom.getAttribute("class")||"")+" ").indexOf(" "+b+" ")!=-1},addCls:function(e,h){var g=e.el,d,a,c,b=[],j=g.getAttribute("class")||"";if(!Ext.isArray(h)){if(typeof h=="string"&&!this.hasCls(e,h)){g.set({"class":j+" "+h})}}else{for(d=0,a=h.length;d<a;d++){c=h[d];if(typeof c=="string"&&(" "+j+" ").indexOf(" "+c+" ")==-1){b.push(c)}}if(b.length){g.set({"class":" "+b.join(" ")})}}},removeCls:function(k,g){var h=this,b=k.el,d=b.getAttribute("class")||"",c,j,e,l,a;if(!Ext.isArray(g)){g=[g]}if(d){a=d.replace(h.trimRe," ").split(h.spacesRe);for(c=0,e=g.length;c<e;c++){l=g[c];if(typeof l=="string"){l=l.replace(h.trimRe,"");j=Ext.Array.indexOf(a,l);if(j!=-1){Ext.Array.erase(a,j,1)}}}b.set({"class":a.join(" ")})}},destroy:function(){var a=this;a.callParent();if(a.el){a.el.remove()}if(a._defs){Ext.get(a._defs).destroy()}if(a.bgRect){Ext.get(a.bgRect).destroy()}if(a.webkitRect){Ext.get(a.webkitRect).destroy()}delete a.el}},0,0,0,0,0,0,[Ext.draw.engine,"Svg"],0));(Ext.cmd.derive("Ext.draw.engine.SvgExporter",Ext.Base,function(){var b=/,/g,c=/(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)\s('*.*'*)/,k=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,h=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,([\d\.]+)\)/g,g,j,e,n,o=function(p){g=p;j=g.length;e=g.width;n=g.height},l={path:function(t){var q=t.attr,w=q.path,s="",u,v,r;if(Ext.isArray(w[0])){r=w.length;for(v=0;v<r;v++){s+=w[v].join(" ")}}else{if(Ext.isArray(w)){s=w.join(" ")}else{s=w.replace(b," ")}}u=d({d:s,fill:q.fill||"none",stroke:q.stroke,"fill-opacity":q.opacity,"stroke-width":q["stroke-width"],"stroke-opacity":q["stroke-opacity"],"z-index":q.zIndex,transform:t.matrix.toSvg()});return"<path "+u+"/>"},text:function(v){var s=v.attr,r=c.exec(s.font),x=(r&&r[1])||"12",q=(r&&r[3])||"Arial",w=s.text,u=(Ext.isFF3_0||Ext.isFF3_5)?2:4,p="",t;v.getBBox();p+='<tspan x="'+(s.x||"")+'" dy="';p+=(x/u)+'">';p+=Ext.htmlEncode(w)+"</tspan>";t=d({x:s.x,y:s.y,"font-size":x,"font-family":q,"font-weight":s["font-weight"],"text-anchor":s["text-anchor"],fill:s.fill||"#000","fill-opacity":s.opacity,transform:v.matrix.toSvg()});return"<text "+t+">"+p+"</text>"},rect:function(q){var p=q.attr,r=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return"<rect "+r+"/>"},circle:function(q){var p=q.attr,r=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return"<circle "+r+" />"},image:function(q){var p=q.attr,r=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return"<image "+r+" />"}},a=function(){var p='<?xml version="1.0" standalone="yes"?>';p+='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';return p},m=function(){var x='<svg width="'+e+'px" height="'+n+'px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',q="",I,G,w,r,H,K,A,y,u,z,C,p,L,v,F,D,J,E,t,s;w=g.items.items;G=w.length;H=function(P){var W=P.childNodes,T=W.length,S=0,Q,R,M="",N,V,O,U;for(;S<T;S++){N=W[S];V=N.attributes;O=N.tagName;M+="<"+O;for(R=0,Q=V.length;R<Q;R++){U=V.item(R);M+=" "+U.name+'="'+U.value+'"'}M+=">";if(N.childNodes.length>0){M+=H(N)}M+="</"+O+">"}return M};if(g.getDefs){q=H(g.getDefs())}else{y=g.gradientsColl;if(y){u=y.keys;z=y.items;C=0;p=u.length}for(;C<p;C++){L=u[C];v=z[C];r=g.gradientsColl.getByKey(L);q+='<linearGradient id="'+L+'" x1="0" y1="0" x2="1" y2="1">';var B=r.colors.replace(k,"rgb($1|$2|$3)");B=B.replace(h,"rgba($1|$2|$3|$4)");K=B.split(",");for(F=0,J=K.length;F<J;F++){A=K[F].split(" ");B=Ext.draw.Color.fromString(A[1].replace(/\|/g,","));q+='<stop offset="'+A[0]+'" stop-color="'+B.toString()+'" stop-opacity="1"></stop>'}q+="</linearGradient>"}}x+="<defs>"+q+"</defs>";x+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});E=new Array(G);for(F=0;F<G;F++){E[F]=F}E.sort(function(N,M){t=w[N].attr.zIndex||0;s=w[M].attr.zIndex||0;if(t==s){return N-M}return t-s});for(F=0;F<G;F++){I=w[E[F]];if(!I.attr.hidden){x+=l[I.type](I)}}x+="</svg>";return x},d=function(r){var q="",p;for(p in r){if(r.hasOwnProperty(p)&&r[p]!=null){q+=p+'="'+r[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}},0,0,0,0,0,0,[Ext.draw.engine,"SvgExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Vml",Ext.draw.Surface,{engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(v,x,p){var w=[],j=x.toLowerCase()=="m",r=b[x];p.replace(e,function(y){if(j&&w.length===2){r+=w+b[x=="m"?"l":"L"];w=[]}w.push(Math.round(y*s))});return r+w});return m}}o=g(t);m=[];for(k=0,q=o.length;k<q;k++){c=o[k];a=o[k][0].toLowerCase();if(a=="z"){a="x"}for(h=1,l=c.length;h<l;h++){a+=Math.round(c[h]*n.zoom)+(h!=l-1?",":"")}m.push(a)}return m.join(" ")},translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},minDefaults:{circle:{fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start",font:'10px "Arial"',fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},onMouseEnter:function(a){this.fireEvent("mouseenter",a)},onMouseLeave:function(a){this.fireEvent("mouseleave",a)},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},createSpriteElement:function(h){var e=this,d=h.attr,g=h.type,k=e.zoom,b=h.vml||(h.vml={}),l=Math.round,c=(g==="image")?e.createNode("image"):e.createNode("shape"),m,j,a;c.coordsize=k+" "+k;c.coordorigin=d.coordorigin||"0 0";Ext.get(c).addCls(e.spriteCls);if(g=="text"){b.path=m=e.createNode("path");m.textpathok=true;b.textpath=a=e.createNode("textpath");a.on=true;c.appendChild(a);c.appendChild(m)}c.id=h.id;h.el=Ext.get(c);h.el.setStyle("zIndex",-e.zIndexShift);e.el.appendChild(c);if(g!=="image"){j=e.createNode("skew");j.on=true;c.appendChild(j);h.skew=j}h.matrix=new Ext.draw.Matrix();h.bbox={plain:null,transform:null};this.applyAttrs(h);this.applyTransformations(h);h.fireEvent("render",h);return h.el},getBBoxText:function(b){var a=b.vml;return{x:a.X+(a.bbx||0)-a.W/2,y:a.Y-a.H/2,width:a.W,height:a.H}},applyAttrs:function(m){var s=this,c=m.vml,j=m.group,a=m.attr,b=m.el,o=b.dom,p,u,r,n,k,q,l,t,e,d,h,g;if(j){r=[].concat(j);k=r.length;for(n=0;n<k;n++){j=r[n];s.getGroup(j).add(m)}delete m.group}q=s.scrubAttrs(m)||{};if(m.zIndexDirty){s.setZIndex(m)}Ext.applyIf(q,s.minDefaults[m.type]);if(m.type=="image"){Ext.apply(m.attr,{x:q.x,y:q.y,width:q.width,height:q.height});b.setStyle({width:q.width+"px",height:q.height+"px"});o.src=q.src}if(o.href){o.href=q.href}if(o.title){o.title=q.title}if(o.target){o.target=q.target}if(o.cursor){o.cursor=q.cursor}if(m.dirtyHidden){(q.hidden)?s.hidePrim(m):s.showPrim(m);m.dirtyHidden=false}if(m.dirtyPath){if(m.type=="circle"||m.type=="ellipse"){e=q.x;d=q.y;h=q.rx||q.r||0;g=q.ry||q.r||0;o.path=Ext.String.format("ar{0},{1},{2},{3},{4},{1},{4},{1}",Math.round((e-h)*s.zoom),Math.round((d-g)*s.zoom),Math.round((e+h)*s.zoom),Math.round((d+g)*s.zoom),Math.round(e*s.zoom));m.dirtyPath=false}else{if(m.type!=="text"&&m.type!=="image"){m.attr.path=q.path=s.setPaths(m,q)||q.path;o.path=s.path2vml(q.path);m.dirtyPath=false}}}if("clip-rect" in q){s.setClip(m,q)}if(m.type=="text"){s.setTextAttributes(m,q)}if(q.opacity||q["stroke-opacity"]||q.fill){s.setFill(m,q)}if(q.stroke||q["stroke-opacity"]||q.fill){s.setStroke(m,q)}p=a.style;if(p){b.setStyle(p)}m.dirty=false},setZIndex:function(e){var h=this,j=e.attr.zIndex,b=h.zIndexShift,c,a,g,d;if(j<b){c=h.items.items;a=c.length;for(d=0;d<a;d++){if((j=c[d].attr.zIndex)&&j<b){b=j}}h.zIndexShift=b;for(d=0;d<a;d++){g=c[d];if(g.el){g.el.setStyle("zIndex",g.attr.zIndex-b)}g.zIndexDirty=false}}else{if(e.el){e.el.setStyle("zIndex",j-b);e.zIndexDirty=false}}},setPaths:function(c,d){var a=c.attr,b=c.attr["stroke-width"]||1;c.bbox.plain=null;c.bbox.transform=null;if(c.type=="circle"){a.rx=a.ry=d.r;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="ellipse"){a.rx=d.rx;a.ry=d.ry;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="rect"){a.rx=a.ry=d.r;return Ext.draw.Draw.rectPath(c)}else{if(c.type=="path"&&a.path){return Ext.draw.Draw.pathToAbsolute(a.path)}}}}return false},setFill:function(l,e){var h=this,c=l.el.dom,k=c.fill,b=false,g,j,a,m,d;if(!k){k=c.fill=h.createNode("fill");b=true}if(Ext.isArray(e.fill)){e.fill=e.fill[0]}if(e.fill=="none"){k.on=false}else{if(typeof e.opacity=="number"){k.opacity=e.opacity}if(typeof e["fill-opacity"]=="number"){k.opacity=e["fill-opacity"]}k.on=true;if(typeof e.fill=="string"){a=e.fill.match(h.fillUrlRe);if(a){a=a[1];if(a.charAt(0)=="#"){j=h.gradientsColl.getByKey(a.substring(1))}if(j){m=e.rotation;d=-(j.angle+270+(m?m.degrees:0))%360;if(d===0){d=180}k.angle=d;k.type="gradient";k.method="sigma";if(k.colors){k.colors.value=j.colors}else{k.colors=j.colors}}else{k.src=a;k.type="tile"}}else{k.color=Ext.draw.Color.toHex(e.fill);k.src="";k.type="solid"}}}if(b){c.appendChild(k)}},setStroke:function(b,h){var e=this,d=b.el.dom,j=b.strokeEl,g=false,c,a;if(!j){j=b.strokeEl=e.createNode("stroke");g=true}if(Ext.isArray(h.stroke)){h.stroke=h.stroke[0]}if(!h.stroke||h.stroke=="none"||h.stroke==0||h["stroke-width"]==0){j.on=false}else{j.on=true;if(h.stroke&&!h.stroke.match(e.fillUrlRe)){j.color=Ext.draw.Color.toHex(h.stroke)}j.dashstyle=h["stroke-dasharray"]?"dash":"solid";j.joinstyle=h["stroke-linejoin"];j.endcap=h["stroke-linecap"]||"round";j.miterlimit=h["stroke-miterlimit"]||8;c=parseFloat(h["stroke-width"]||1)*0.75;a=h["stroke-opacity"]||1;if(Ext.isNumber(c)&&c<1){j.weight=1;j.opacity=a*c}else{j.weight=c;j.opacity=a}}if(g){d.appendChild(j)}},setClip:function(b,g){var e=this,c=b.el,a=b.clipEl,d=String(g["clip-rect"]).split(e.separatorRe);if(!a){a=b.clipEl=e.el.insertFirst(Ext.getDoc().dom.createElement("div"));a.addCls(Ext.baseCSSPrefix+"vml-sprite")}if(d.length==4){d[2]=+d[2]+(+d[0]);d[3]=+d[3]+(+d[1]);a.setStyle("clip",Ext.String.format("rect({1}px {2}px {3}px {0}px)",d[0],d[1],d[2],d[3]));a.setSize(e.el.width,e.el.height)}else{a.setStyle("clip","")}},setTextAttributes:function(j,c){var h=this,a=j.vml,e=a.textpath.style,g=h.span.style,k=h.zoom,l=Math.round,m={fontSize:"font-size",fontWeight:"font-weight",fontStyle:"font-style"},b,d;if(j.dirtyFont){if(c.font){e.font=g.font=c.font}if(c["font-family"]){e.fontFamily='"'+c["font-family"].split(",")[0].replace(h.fontFamilyRe,"")+'"';g.fontFamily=c["font-family"]}for(b in m){d=c[m[b]];if(d){e[b]=g[b]=d}}h.setText(j,c.text);if(a.textpath.string){h.span.innerHTML=String(a.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br/>")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);j.bbox.plain=null;j.bbox.transform=null;j.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d<a;d++){g.applyTransformations(c[d])}}},onAdd:function(a){this.callParent(arguments);if(this.el){this.renderItem(a)}},onRemove:function(a){if(a.el){a.el.remove();delete a.el}this.callParent(arguments)},render:function(a){var c=this,g=Ext.getDoc().dom,b;if(!c.createNode){try{if(!g.namespaces.rvml){g.namespaces.add("rvml","urn:schemas-microsoft-com:vml")}c.createNode=function(e){return g.createElement("<rvml:"+e+' class="rvml">')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(x,I){var H=this,b=H.getBBox(x,true),j=b.x+b.width*0.5,h=b.y+b.height*0.5,B=new Ext.draw.Matrix(),q=x.transformations,v=q.length,C=0,o=0,d=1,c=1,n="",g=x.el,E=g.dom,z=E.style,a=H.zoom,k=x.skew,D=H.viewBoxShift,G,F,s,l,r,p,A,w,u,t,e,m;for(;C<v;C++){s=q[C];l=s.type;if(l=="translate"){B.translate(s.x,s.y)}else{if(l=="rotate"){B.rotate(s.degrees,s.x,s.y);o+=s.degrees}else{if(l=="scale"){B.scale(s.x,s.y,s.centerX,s.centerY);d*=s.x;c*=s.y}}}}x.matrix=B.clone();if(I){return}if(D){B.prepend(D.scale,0,0,D.scale,D.dx*D.scale,D.dy*D.scale)}if(x.type!="image"&&k){k.origin="0,0";k.matrix=B.toString();m=B.offset();if(m[0]>32767){m[0]=32767}else{if(m[0]<-32768){m[0]=-32768}}if(m[1]>32767){m[1]=32767}else{if(m[1]<-32768){m[1]=-32768}}k.offset=m}else{z.filter=B.toFilter();z.left=Math.min(B.x(b.x,b.y),B.x(b.x+b.width,b.y),B.x(b.x,b.y+b.height),B.x(b.x+b.width,b.y+b.height))+"px";z.top=Math.min(B.y(b.x,b.y),B.y(b.x+b.width,b.y),B.y(b.x,b.y+b.height),B.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],j=Ext.create("Ext.util.MixedCollection"),l,e,b,h,k,c;j.addAll(g.stops);j.sortByKey("ASC",function(n,m){n=parseInt(n,10);m=parseInt(m,10);return n>m?1:(n<m?-1:0)});l=j.keys;e=j.items;b=l.length;for(c=0;c<b;c++){h=l[c];k=e[c];a.push(h+"% "+k.color)}d.add(g.id,{colors:a.join(","),angle:g.angle})},destroy:function(){var a=this;a.callParent(arguments);if(a.el){a.el.remove()}delete a.el}},0,0,0,0,0,0,[Ext.draw.engine,"Vml"],0));(Ext.cmd.derive("Ext.flash.Component",Ext.Component,{alternateClassName:"Ext.FlashComponent",flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",swfWidth:"100%",swfHeight:"100%",expressInstall:false,renderTpl:['<div id="{swfId}"></div>'],initComponent:function(){this.callParent();this.addEvents("success","failure")},beforeRender:function(){this.callParent();Ext.applyIf(this.renderData,{swfId:this.getSwfId()})},afterRender:function(){var b=this,a=Ext.apply({},b.flashParams),c=Ext.apply({},b.flashVars);b.callParent();a=Ext.apply({allowScriptAccess:"always",bgcolor:b.backgroundColor,wmode:b.wmode},a);c=Ext.apply({allowedDomain:document.location.hostname},c);new swfobject.embedSWF(b.url,b.getSwfId(),b.swfWidth,b.swfHeight,b.flashVersion,b.expressInstall?b.statics.EXPRESS_INSTALL_URL:undefined,c,a,b.flashAttributes,Ext.bind(b.swfCallback,b))},swfCallback:function(b){var a=this;if(b.success){a.swf=Ext.get(b.ref);a.onSuccess();a.fireEvent("success",a)}else{a.onFailure();a.fireEvent("failure",a)}},getSwfId:function(){return this.swfId||(this.swfId="extswf"+this.getAutoId())},onSuccess:function(){this.swf.setStyle("visibility","inherit")},onFailure:Ext.emptyFn,beforeDestroy:function(){var b=this,a=b.swf;if(a){swfobject.removeSWF(b.getSwfId());Ext.destroy(a);delete b.swf}b.callParent()},statics:{EXPRESS_INSTALL_URL:"http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf"}},0,["flash"],["flash","component","box"],{flash:true,component:true,box:true},["widget.flash"],0,[Ext.flash,"Component",Ext,"FlashComponent"],0));(Ext.cmd.derive("Ext.form.action.Action",Ext.Base,{alternateClassName:"Ext.form.Action",submitEmptyText:true,constructor:function(a){if(a){Ext.apply(this,a)}var b=a.params;if(Ext.isString(b)){this.params=Ext.Object.fromQueryString(b)}},run:Ext.emptyFn,onFailure:function(a){this.response=a;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}return(this.result=this.handleResponse(a))},getUrl:function(){return this.url||this.form.url},getMethod:function(){return(this.method||this.form.method||"POST").toUpperCase()},getParams:function(){return Ext.apply({},this.params,this.form.baseParams)},createCallback:function(){var c=this,a,b=c.form;return{success:c.onSuccess,failure:c.onFailure,scope:c,timeout:(this.timeout*1000)||(b.timeout*1000),upload:b.fileUpload?c.onSuccess:a}},statics:{CLIENT_INVALID:"client",SERVER_INVALID:"server",CONNECT_FAILURE:"connect",LOAD_FAILURE:"load"}},1,0,0,0,0,0,[Ext.form.action,"Action",Ext.form,"Action"],0));(Ext.cmd.derive("Ext.form.action.Load",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Load",type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(),{method:this.getMethod(),url:this.getUrl(),headers:this.headers,params:this.getParams()}))},onSuccess:function(b){var a=this.processResponse(b),c=this.form;if(a===true||!a.success||!a.data){this.failureType=Ext.form.action.Action.LOAD_FAILURE;c.afterAction(this,false);return}c.clearInvalid();c.setValues(a.data);c.afterAction(this,true)},handleResponse:function(c){var a=this.form.reader,b,d;if(a){b=a.read(c);d=b.records&&b.records[0]?b.records[0].data:null;return{success:b.success,data:d}}return Ext.decode(c.responseText)}},0,0,0,0,["formaction.load"],0,[Ext.form.action,"Load",Ext.form.Action,"Load"],0));(Ext.cmd.derive("Ext.form.action.Submit",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Submit",type:"submit",run:function(){var b=this,a=b.form;if(b.clientValidation===false||a.isValid()){b.doSubmit()}else{b.failureType=Ext.form.action.Action.CLIENT_INVALID;a.afterAction(b,false)}},doSubmit:function(){var e=this,b=Ext.apply(e.createCallback(),{url:e.getUrl(),method:e.getMethod(),headers:e.headers}),d=e.form,g=e.jsonSubmit||d.jsonSubmit,a=g?"jsonData":"params",c,h;if(d.hasUpload()){h=e.buildForm();b.form=h.formEl;b.isUpload=true}else{b[a]=e.getParams(g)}Ext.Ajax.request(b);if(h){e.cleanup(h)}},cleanup:function(h){var e=h.formEl,d=h.uploadEls,b=h.uploadFields,a=b.length,c,g;for(c=0;c<a;++c){g=b[c];if(!g.clearOnSubmit){g.restoreInput(d[c])}}if(e){Ext.removeNode(e)}},getParams:function(d){var c=false,b=this.callParent(),a=this.form.getValues(c,c,this.submitEmptyText!==c,d);return Ext.apply({},a,b)},buildForm:function(){var k=this,n=[],l,s,h=k.form,d=k.getParams(),c=[],a=[],g=h.getFields().items,e,j=g.length,m,r,p,q,o,b;for(e=0;e<j;++e){m=g[e];if(m.rendered&&m.isFileUpload()){c.push(m)}}for(r in d){if(d.hasOwnProperty(r)){p=d[r];if(Ext.isArray(p)){o=p.length;for(q=0;q<o;q++){n.push(k.getFieldConfig(r,p[q]))}}else{n.push(k.getFieldConfig(r,p))}}}l={tag:"form",action:k.getUrl(),method:k.getMethod(),target:k.target||"_self",style:"display:none",cn:n};if(c.length){l.encoding=l.enctype="multipart/form-data"}s=Ext.DomHelper.append(Ext.getBody(),l);j=c.length;for(e=0;e<j;++e){b=c[e].extractFileInput();s.appendChild(b);a.push(b)}return{formEl:s,uploadFields:c,uploadEls:a}},getFieldConfig:function(a,b){return{tag:"input",type:"hidden",name:a,value:Ext.String.htmlEncode(b)}},onSuccess:function(b){var c=this.form,d=true,a=this.processResponse(b);if(a!==true&&!a.success){if(a.errors){c.markInvalid(a.errors)}this.failureType=Ext.form.action.Action.SERVER_INVALID;d=false}c.afterAction(this,d)},handleResponse:function(d){var a=this.form,c=a.errorReader,g,l,h,j,b,m;if(c){g=c.read(d);b=g.records;l=[];if(b){for(h=0,j=b.length;h<j;h++){l[h]=b[h].data}}if(l.length<1){l=null}m={success:g.success,errors:l}}else{try{m=Ext.decode(d.responseText)}catch(k){m={success:false,errors:[]}}}return m}},0,0,0,0,["formaction.submit"],0,[Ext.form.action,"Submit",Ext.form.Action,"Submit"],0));(Ext.cmd.derive("Ext.util.ComponentDragger",Ext.dd.DragTracker,{autoStart:500,constructor:function(a,b){this.comp=a;this.initialConstrainTo=b.constrainTo;this.callParent([b])},onStart:function(c){var b=this,a=b.comp;b.startPosition=a.getXY();if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}if(a.beginDrag){a.beginDrag()}},calculateConstrainRegion:function(){var j=this,g=j.comp,h=j.initialConstrainTo,e=g.constraintInsets,k,b,d,c=j.proxy?j.proxy.el:g.el,a=(!j.constrainDelegate&&c.shadow&&g.constrainShadow&&!c.shadowDisabled)?c.shadow.getShadowSize():0;if(!(h instanceof Ext.util.Region)){k=Ext.fly(h);h=k.getViewRegion();h.right=h.left+k.dom.clientWidth}else{h=h.copy()}if(e){e=Ext.isObject(e)?e:Ext.Element.parseBox(e);h.adjust(e.top,e.right,e.bottom,e.length)}if(a){h.adjust(a[0],-a[1],-a[2],a[3])}if(!j.constrainDelegate){b=Ext.fly(j.dragTarget).getRegion();d=c.getRegion();h.adjust(b.top-d.top,b.right-d.right,b.bottom-d.bottom,b.left-d.left)}return h},onDrag:function(c){var b=this,a=(b.proxy&&!b.comp.liveDrag)?b.proxy:b.comp,d=b.getOffset(b.constrain||b.constrainDelegate?"dragTarget":null);a.setPagePosition(b.startPosition[0]+d[0],b.startPosition[1]+d[1])},onEnd:function(b){var a=this.comp;if(a.isDestroyed||a.destroying){return}if(this.proxy&&!a.liveDrag){a.unghost()}if(a.endDrag){a.endDrag()}}},1,0,0,0,0,0,[Ext.util,"ComponentDragger"],0));(Ext.cmd.derive("Ext.window.Window",Ext.panel.Panel,{alternateClassName:"Ext.Window",baseCls:Ext.baseCSSPrefix+"window",resizable:true,draggable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:50,minWidth:50,expandOnShow:true,collapsible:false,closable:true,hidden:true,autoRender:true,hideMode:"offsets",floating:true,itemCls:Ext.baseCSSPrefix+"window-item",initialAlphaNum:/^[a-z0-9]/,overlapHeader:true,ignoreHeaderBorderManagement:true,alwaysFramed:true,isRootCfg:{isRoot:true},isWindow:true,initComponent:function(){var a=this;a.frame=false;a.callParent();a.addEvents("resize","maximize","minimize","restore");if(a.plain){a.addClsWithUI("plain")}if(a.modal){a.ariaRole="dialog"}a.addStateEvents(["maximize","restore","resize","dragend"])},getElConfig:function(){var b=this,a;a=b.callParent();a.tabIndex=-1;return a},getState:function(){var b=this,d=b.callParent()||{},a=!!b.maximized,c=b.ghostBox,e;d.maximized=a;if(a){e=b.restorePos}else{if(c){e=[c.x,c.y]}else{e=b.getPosition()}}Ext.apply(d,{size:a?b.restoreSize:b.getSize(),pos:e});return d},applyState:function(b){var a=this;if(b){a.maximized=b.maximized;if(a.maximized){a.hasSavedRestore=true;a.restoreSize=b.size;a.restorePos=b.pos}else{Ext.apply(a,{width:b.size.width,height:b.size.height,x:b.pos[0],y:b.pos[1]})}}},onRender:function(b,a){var c=this;c.callParent(arguments);c.focusEl=c.el;if(c.maximizable){c.header.on({scope:c,dblclick:c.toggleMaximize})}},afterRender:function(){var a=this,c=a.header,b;a.callParent();if(a.maximized){a.maximized=false;a.maximize();if(c){c.removeCls(c.indicateDragCls)}}if(a.closable){b=a.getKeyMap();b.on(27,a.onEsc,a)}else{b=a.keyMap}if(b&&a.hidden){b.disable()}},initDraggable:function(){this.initSimpleDraggable()},initResizable:function(){this.callParent(arguments);if(this.maximized){this.resizer.disable()}},onEsc:function(a,b){if(!Ext.FocusManager||!Ext.FocusManager.enabled||Ext.FocusManager.focusedCmp===this){b.stopEvent();this.close()}},beforeDestroy:function(){var a=this;if(a.rendered){delete this.animateTarget;a.hide();Ext.destroy(a.keyMap)}a.callParent()},addTools:function(){var a=this;a.callParent();if(a.minimizable){a.addTool({type:"minimize",handler:Ext.Function.bind(a.minimize,a,[])})}if(a.maximizable){a.addTool({type:"maximize",handler:Ext.Function.bind(a.maximize,a,[])});a.addTool({type:"restore",handler:Ext.Function.bind(a.restore,a,[]),hidden:true})}},getFocusEl:function(){return this.getDefaultFocus()},getDefaultFocus:function(){var c=this,b,d=c.defaultButton||c.defaultFocus,a;if(d!==undefined){if(Ext.isNumber(d)){b=c.query("button")[d]}else{if(Ext.isString(d)){a=d;if(a.match(c.initialAlphaNum)){b=c.down("#"+a)}if(!b){b=c.down(a)}}else{if(d.focus){b=d}}}}return b||c.el},onFocus:function(){var b=this,a;if((Ext.FocusManager&&Ext.FocusManager.enabled)||((a=b.getDefaultFocus())===b)){b.callParent(arguments)}else{a.focus()}},onShow:function(){var a=this;a.callParent(arguments);if(a.expandOnShow){a.expand(false)}a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.enable()}},doClose:function(){var a=this;if(a.hidden){a.fireEvent("close",a);if(a.closeAction=="destroy"){this.destroy()}}else{a.hide(a.animateTarget,a.doClose,a)}},afterHide:function(){var a=this;a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.disable()}a.callParent(arguments)},onWindowResize:function(){var b=this,a;if(b.maximized){b.fitContainer()}else{a=b.getSizeModel();if(a.width.natural||a.height.natural){b.updateLayout()}b.doConstrain()}},minimize:function(){this.fireEvent("minimize",this);return this},resumeHeaderLayout:function(a){this.header.resumeLayouts(a?this.isRootCfg:null)},afterCollapse:function(){var a=this,c=a.header,b=a.tools;if(c&&a.maximizable){c.suspendLayouts();b.maximize.hide();b.restore.hide();this.resumeHeaderLayout(true)}if(a.resizer){a.resizer.disable()}a.callParent(arguments)},afterExpand:function(){var a=this,d=a.header,b=a.tools,c;if(d){d.suspendLayouts();if(a.maximized){b.restore.show();c=true}else{if(a.maximizable){b.maximize.show();c=true}}this.resumeHeaderLayout(c)}if(a.resizer){a.resizer.enable()}a.callParent(arguments)},maximize:function(a){var b=this,e=b.header,c=b.tools,d;if(!b.maximized){b.expand(false);if(!b.hasSavedRestore){b.restoreSize=b.getSize();b.restorePos=b.getPosition(true)}if(e){e.suspendLayouts();if(c.maximize){c.maximize.hide();d=true}if(c.restore){c.restore.show();d=true}if(b.collapseTool){b.collapseTool.hide();d=true}b.resumeHeaderLayout(d)}b.maximized=true;b.el.disableShadow();if(b.dd){b.dd.disable();if(e){e.removeCls(e.indicateDragCls)}}if(b.resizer){b.resizer.disable()}b.el.addCls(Ext.baseCSSPrefix+"window-maximized");b.container.addCls(Ext.baseCSSPrefix+"window-maximized-ct");b.syncMonitorWindowResize();b.fitContainer(a=(a||!!b.animateTarget)?{callback:function(){b.fireEvent("maximize",b)}}:null);if(!a){b.fireEvent("maximize",b)}}return b},restore:function(b){var c=this,d=c.tools,g=c.header,a=c.restoreSize,e;if(c.maximized){c.hasSavedRestore=null;c.removeCls(Ext.baseCSSPrefix+"window-maximized");if(g){g.suspendLayouts();if(d.restore){d.restore.hide();e=true}if(d.maximize){d.maximize.show();e=true}if(c.collapseTool){c.collapseTool.show();e=true}c.resumeHeaderLayout(e)}c.maximized=false;a.x=c.restorePos[0];a.y=c.restorePos[1];c.setBox(a,b=(b||!!c.animateTarget)?{callback:function(){c.el.enableShadow(true);c.fireEvent("restore",c)}}:null);c.restorePos=c.restoreSize=null;if(c.dd){c.dd.enable();if(g){g.addCls(g.indicateDragCls)}}if(c.resizer){c.resizer.enable()}c.container.removeCls(Ext.baseCSSPrefix+"window-maximized-ct");c.syncMonitorWindowResize();if(!b){c.el.enableShadow(true);c.fireEvent("restore",c)}}return c},syncMonitorWindowResize:function(){var b=this,c=b._monitoringResize,d=b.monitorResize||b.constrain||b.constrainHeader||b.maximized,a=b.hidden||b.destroying||b.isDestroyed;if(d&&!a){if(!c){Ext.EventManager.onWindowResize(b.onWindowResize,b,{delay:1});b._monitoringResize=true}}else{if(c){Ext.EventManager.removeResizeListener(b.onWindowResize,b);b._monitoringResize=false}}},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()}},0,["window"],["panel","window","component","container","box"],{panel:true,window:true,component:true,container:true,box:true},["widget.window"],0,[Ext.window,"Window",Ext,"Window"],0));(Ext.cmd.derive("Ext.form.Labelable",Ext.Base,{autoEl:{tag:"table",cellpadding:0},childEls:["labelCell","labelEl","bodyEl","sideErrorCell","errorEl","inputRow"],labelableRenderTpl:['<tr role="presentation" id="{id}-inputRow" <tpl if="inFormLayout">id="{id}"</tpl> class="{inputRowCls}">','<tpl if="labelOnLeft">','<td role="presentation" id="{id}-labelCell" style="{labelCellStyle}" {labelCellAttrs}>',"{beforeLabelTpl}",'<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>',' unselectable="on"',">","{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","{afterLabelTpl}","</td>","</tpl>",'<td role="presentation" class="{baseBodyCls} {fieldBodyCls} {extraFieldBodyCls}" id="{id}-bodyEl" colspan="{bodyColspan}" role="presentation">',"{beforeBodyEl}","<tpl if=\"labelAlign=='top'\">","{beforeLabelTpl}",'<div role="presentation" id="{id}-labelCell" style="{labelCellStyle}">','<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>',' unselectable="on"',">","{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","</div>","{afterLabelTpl}","</tpl>","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","<tpl if=\"msgTarget==='side'\">","{afterBodyEl}","</td>","<td role=\"presentation\" id=\"{id}-sideErrorCell\" vAlign=\"{[values.labelAlign==='top' && !values.hideLabel ? 'bottom' : 'middle']}\" style=\"{[values.autoFitErrors ? 'display:none' : '']}\" width=\"{errorIconWidth}\">",'<div role="presentation" id="{id}-errorEl" class="{errorMsgCls}" style="display:none"></div>',"</td>","<tpl elseif=\"msgTarget=='under'\">",'<div role="presentation" id="{id}-errorEl" class="{errorMsgClass}" colspan="2" style="display:none"></div>',"{afterBodyEl}","</td>","</tpl>","</tr>",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['<tpl if="errors && errors.length">','<ul class="{listCls}"><tpl for="errors"><li role="alert">{.}</li></tpl></ul>',"</tpl>"],plaintextActiveErrorsTpl:['<tpl if="errors && errors.length">','<tpl for="errors"><tpl if="xindex &gt; 1">\n</tpl>{.}</tpl>',"</tpl>"],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",inputRowCls:Ext.baseCSSPrefix+"form-item-input-row",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","extraFieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget","inputRowCls"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.getFieldLabel()&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}},0,0,0,0,0,0,[Ext.form,"Labelable"],0));(Ext.cmd.derive("Ext.form.field.Field",Ext.Base,{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,0,0,0,0,0,[Ext.form.field,"Field"],0));(Ext.cmd.derive("Ext.layout.component.field.Field",Ext.layout.component.Auto,{type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var j=Ext.layout.component.field.Field.tip,k;if(j&&j.isVisible()){k=j.activeTarget;if(k&&k.el===h.getActionEl().dom){j.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var j=h.errorEl;if(j){j.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,j){var n=j.errorEl,k=j.sideErrorCell,h=j.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":j.getActiveError()||""});if(j.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&j.autoFitErrors){k.setDisplayed(h)}j.bodyEl.dom.colSpan=j.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,j=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(j);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,j,k;if(l.target.hasActiveError()){j=l.errorContext;k=j.props;h=k.height;if(h===undefined){k.height=h=j.el.getHeight()}}return h}},e),qtip:c({prepare:function(j,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(j,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(j,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}},0,0,0,0,["layout.field"],0,[Ext.layout.component.field,"Field"],0));(Ext.cmd.derive("Ext.form.field.Base",Ext.Component,{alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:['<input id="{id}" type="{type}" {inputAttrTpl}',' size="1"','<tpl if="name"> name="{name}"</tpl>','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}a.addCls(Ext.baseCSSPrefix+"form-type-"+a.inputType)},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,j=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(j){g.mon(j,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;h<a;h++){d=c[h];if(d==="propertychange"){g.usesPropertychange=true}g.mon(j,d,k)}}g.callParent()},doComponentLayout:function(){var c=this,d=c.inputEl,a=c.usesPropertychange,b="propertychange",e=c.onChangeEvent;if(a){c.mun(d,b,e)}c.callParent(arguments);if(a){c.mon(d,b,e)}},onDirtyChange:function(a){this[a?"addCls":"removeCls"](this.dirtyCls)},isValid:function(){var b=this,a=b.disabled,c=b.forceValidation||!a;return c?b.validateValue(b.processRawValue(b.getRawValue())):a},validateValue:function(b){var a=this,d=a.getErrors(b),c=Ext.isEmpty(d);if(!a.preventMark){if(c){a.clearInvalid()}else{a.markInvalid(d)}}return c},markInvalid:function(d){var b=this,a=b.getActiveError(),c;b.setActiveErrors(Ext.Array.from(d));c=b.getActiveError();if(a!==c){b.setError(c)}},clearInvalid:function(){var b=this,a=b.hasActiveError();delete b.needsValidateOnEnable;b.unsetActiveError();if(a){b.setError("")}},setError:function(c){var b=this,a=b.msgTarget,d;if(b.rendered){if(a=="title"||a=="qtip"){if(b.rendered){d=a=="qtip"?"data-errorqtip":"title"}b.getActionEl().dom.setAttribute(d,c||"")}else{b.updateLayout()}}},renderActiveError:function(){var b=this,a=b.hasActiveError();if(b.inputEl){b.inputEl[a?"addCls":"removeCls"](b.invalidCls+"-field")}b.mixins.labelable.renderActiveError.call(b)},getActionEl:function(){return this.inputEl||this.el}},0,["field"],["field","component","box"],{field:true,component:true,box:true},["widget.field"],[["labelable",Ext.form.Labelable],["field",Ext.form.field.Field]],[Ext.form.field,"Base",Ext.form,"Field",Ext.form,"BaseField"],0));(Ext.cmd.derive("Ext.form.field.VTypes",Ext.Base,(function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,a=/(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i;return{singleton:true,alternateClassName:"Ext.form.VTypes",email:function(e){return b.test(e)},emailText:'This field should be an e-mail address in the format "user@example.com"',emailMask:/[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i,url:function(e){return a.test(e)},urlText:'This field should be a URL in the format "http://www.example.com"',alpha:function(e){return c.test(e)},alphaText:"This field should only contain letters and _",alphaMask:/[a-z_]/i,alphanum:function(e){return d.test(e)},alphanumText:"This field should only contain letters, numbers and _",alphanumMask:/[a-z0-9_]/i}}()),0,0,0,0,0,0,[Ext.form.field,"VTypes",Ext.form,"VTypes"],0));(Ext.cmd.derive("Ext.layout.component.field.Text",Ext.layout.component.field.Field,{type:"textfield",canGrowWidth:true,beginLayoutCycle:function(a){this.callParent(arguments);if(a.heightModel.shrinkWrap){a.inputContext.el.setStyle("height","")}},measureContentWidth:function(c){var h=this,b=h.owner,a=h.callParent(arguments),g=c.inputContext,l,k,d,j,e;if(b.grow&&h.canGrowWidth&&!c.state.growHandled){l=b.inputEl;k=Ext.util.Format.htmlEncode(l.dom.value||(b.hasFocus?"":b.emptyText)||"");k+=b.growAppend;d=l.getTextWidth(k)+g.getFrameInfo().width;j=b.growMax;e=Math.min(j,a);j=Math.max(b.growMin,j,e);d=Ext.Number.constrain(d,b.growMin,j);g.setWidth(d);c.state.growHandled=true;g.domBlock(h,"width");a=NaN}return a},publishInnerHeight:function(b,a){b.inputContext.setHeight(a-this.measureLabelErrorHeight(b))},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.adjustIEInputPadding(d);if(e==="px"){a-=c}}b.callParent(arguments)},adjustIEInputPadding:function(a){this.owner.bodyEl.setStyle("padding-right",this.ieInputWidthAdjustment+"px")}},0,0,0,0,["layout.textfield"],0,[Ext.layout.component.field,"Text"],0));(Ext.cmd.derive("Ext.form.field.Text",Ext.form.field.Base,{alternateClassName:["Ext.form.TextField","Ext.form.Text"],size:20,growMin:30,growMax:800,growAppend:"W",allowBlank:true,validateBlank:false,allowOnlyWhitespace:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",blankText:"This field is required",regexText:"",emptyCls:Ext.baseCSSPrefix+"form-empty-field",requiredCls:Ext.baseCSSPrefix+"form-required-field",componentLayout:"textfield",valueContainsPlaceholder:false,initComponent:function(){var a=this;if(a.allowOnlyWhitespace===false){a.allowBlank=false}a.callParent();a.addEvents("autosize","keydown","keyup","keypress");a.addStateEvents("change");a.setGrowSizePolicy()},setGrowSizePolicy:function(){if(this.grow){this.shrinkWrap|=1}},initEvents:function(){var b=this,a=b.inputEl;b.callParent();if(b.selectOnFocus||b.emptyText){b.mon(a,"mousedown",b.onMouseDown,b)}if(b.maskRe||(b.vtype&&b.disableKeyFilter!==true&&(b.maskRe=Ext.form.field.VTypes[b.vtype+"Mask"]))){b.mon(a,"keypress",b.filterKeys,b)}if(b.enableKeyEvents){b.mon(a,{scope:b,keyup:b.onKeyUp,keydown:b.onKeyDown,keypress:b.onKeyPress})}},isEqual:function(b,a){return this.isEqualAsString(b,a)},onChange:function(b,a){this.callParent(arguments);this.autoSize()},getSubTplData:function(){var b=this,c=b.getRawValue(),e=b.emptyText&&c.length<1,a=b.maxLength,d;if(b.enforceMaxLength){if(a===Number.MAX_VALUE){a=undefined}}else{a=undefined}if(e){if(Ext.supports.Placeholder){d=b.emptyText}else{c=b.emptyText;b.valueContainsPlaceholder=true}}return Ext.apply(b.callParent(),{maxLength:a,readOnly:b.readOnly,placeholder:d,value:c,fieldCls:b.fieldCls+((e&&(d||c))?" "+b.emptyCls:"")+(b.allowBlank?"":" "+b.requiredCls)})},afterRender:function(){this.autoSize();this.callParent()},onMouseDown:function(b){var a=this;if(!a.hasFocus){a.mon(a.inputEl,"mouseup",Ext.emptyFn,a,{single:true,preventDefault:true})}},processRawValue:function(b){var a=this,d=a.stripCharsRe,c;if(d){c=b.replace(d,"");if(c!==b){a.setRawValue(c);b=c}}return b},onDisable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable="on"}},onEnable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable=""}},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){this.callParent();this.applyEmptyText()},applyEmptyText:function(){var b=this,a=b.emptyText,c;if(b.rendered&&a){c=b.getRawValue().length<1&&!b.hasFocus;if(Ext.supports.Placeholder){b.inputEl.dom.placeholder=a}else{if(c){b.setRawValue(a);b.valueContainsPlaceholder=true}}if(c){b.inputEl.addCls(b.emptyCls)}b.autoSize()}},afterFirstLayout:function(){this.callParent();if(Ext.isIE&&this.disabled){var a=this.inputEl;if(a){a.dom.unselectable="on"}}},beforeFocus:function(){var b=this,c=b.inputEl,a=b.emptyText,d;b.callParent(arguments);if((a&&!Ext.supports.Placeholder)&&(c.dom.value===b.emptyText&&b.valueContainsPlaceholder)){b.setRawValue("");d=true;c.removeCls(b.emptyCls);b.valueContainsPlaceholder=false}else{if(Ext.supports.Placeholder){b.inputEl.removeCls(b.emptyCls)}}if(b.selectOnFocus||d){if(Ext.isWebKit){if(!b.inputFocusTask){b.inputFocusTask=new Ext.util.DelayedTask(b.focusInput,b)}b.inputFocusTask.delay(1)}else{c.dom.select()}}},focusInput:function(){var a=this.inputEl;if(a){a=a.dom;if(a){a.select()}}},onFocus:function(){var a=this;a.callParent(arguments);if(a.emptyText){a.autoSize()}},postBlur:function(){this.callParent(arguments);this.applyEmptyText()},filterKeys:function(c){if(c.ctrlKey&&!c.altKey){return}var b=c.getKey(),a=String.fromCharCode(c.getCharCode());if((Ext.isGecko||Ext.isOpera)&&(c.isNavKeyPress()||b===c.BACKSPACE||(b===c.DELETE&&c.button===-1))){return}if((!Ext.isGecko&&!Ext.isOpera)&&c.isSpecialKey()&&!a){return}if(!this.maskRe.test(a)){c.stopEvent()}},getState:function(){return this.addPropertyToState(this.callParent(),"value")},applyState:function(a){this.callParent(arguments);if(a.hasOwnProperty("value")){this.setValue(a.value)}},getRawValue:function(){var b=this,a=b.callParent();if(a===b.emptyText&&b.valueContainsPlaceholder){a=""}return a},setValue:function(b){var a=this,c=a.inputEl;if(c&&a.emptyText&&!Ext.isEmpty(b)){c.removeCls(a.emptyCls);a.valueContainsPlaceholder=false}a.callParent(arguments);a.applyEmptyText();return a},getErrors:function(m){var g=this,k=g.callParent(arguments),a=g.validator,d=g.vtype,h=Ext.form.field.VTypes,j=g.regex,l=Ext.String.format,b,e,c;m=m||g.processRawValue(g.getRawValue());if(Ext.isFunction(a)){b=a.call(g,m);if(b!==true){k.push(b)}}e=g.allowOnlyWhitespace?m:Ext.String.trim(m);if(e.length<1||(m===g.emptyText&&g.valueContainsPlaceholder)){if(!g.allowBlank){k.push(g.blankText)}if(!g.validateBlank){return k}c=true}if(!c&&m.length<g.minLength){k.push(l(g.minLengthText,g.minLength))}if(m.length>g.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(j&&!j.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(j,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){j=j===e?0:j;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(j,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",j);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}},0,["textfield"],["field","textfield","component","box"],{field:true,textfield:true,component:true,box:true},["widget.textfield"],0,[Ext.form.field,"Text",Ext.form,"TextField",Ext.form,"Text"],0));(Ext.cmd.derive("Ext.layout.component.field.TextArea",Ext.layout.component.field.Text,{type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,j,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;j=a.inputEl;d=j.getWidth(true);h=Ext.util.Format.htmlEncode(j.dom.value)||"&#160;";h+=a.growAppend;h=h.replace(/\n/g,"<br/>");k=Ext.util.TextMetrics.measure(j,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}},0,0,0,0,["layout.textareafield"],0,[Ext.layout.component.field,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.TextArea",Ext.form.field.Text,{alternateClassName:"Ext.form.TextArea",fieldSubTpl:['<textarea id="{id}" {inputAttrTpl}','<tpl if="name"> name="{name}"</tpl>','<tpl if="rows"> rows="{rows}" </tpl>','<tpl if="cols"> cols="{cols}" </tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>',' class="{fieldCls} {typeCls} {inputCls}" ','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' autocomplete="off">\n','<tpl if="value">{[Ext.util.Format.htmlEncode(values.value)]}</tpl>',"</textarea>",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a&&typeof a==="string"){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}},0,["textarea","textareafield"],["field","textfield","component","textarea","box","textareafield"],{field:true,textfield:true,component:true,textarea:true,box:true,textareafield:true},["widget.textarea","widget.textareafield"],0,[Ext.form.field,"TextArea",Ext.form,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.Display",Ext.form.field.Base,{alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['<div id="{id}" role="input" ','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls}">{value}</div>',{compiled:true,disableFormats:true}],readOnly:true,fieldCls:Ext.baseCSSPrefix+"form-display-field",fieldBodyCls:Ext.baseCSSPrefix+"form-display-field-body",htmlEncode:false,noWrap:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}},0,["displayfield"],["displayfield","field","component","box"],{displayfield:true,field:true,component:true,box:true},["widget.displayfield"],0,[Ext.form.field,"Display",Ext.form,"DisplayField",Ext.form,"Display"],0));(Ext.cmd.derive("Ext.layout.container.Anchor",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var j=this,a=0,g,k,e,d,b,h;j.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d<b;++d){k=e[d];g=k.target.anchorSpec;if(g){if(k.widthModel.calculated&&g.right){a|=1}if(k.heightModel.calculated&&g.bottom){a|=2}if(a==3){break}}}c.anchorDimensions=a},calculateItems:function(h,a){var q=this,l=h.childItems,g=l.length,o=a.gotHeight,j=a.gotWidth,e=a.height,c=a.width,b=(j?1:0)|(o?2:0),p=h.anchorDimensions,m,s,n,r,k,d;if(!p){return true}for(k=0;k<g;k++){s=l[k];n=s.getMarginInfo();m=s.target.anchorSpec;if(j&&s.widthModel.calculated){d=m.right(c)-n.width;d=q.adjustWidthAnchor(d,s);s.setWidth(d)}if(o&&s.heightModel.calculated){r=m.bottom(e)-n.height;r=q.adjustHeightAnchor(r,s);s.setHeight(r)}}return(b&p)===p},anchorFactory:{offset:function(a){return function(b){return b+a}},ratio:function(a){return function(b){return Math.floor(b*a)}},standard:function(a){return function(b){return b-a}}},parseAnchor:function(c,g,b){if(c&&c!="none"){var d=this.anchorFactory,e;if(this.parseAnchorRE.test(c)){return d.standard(b-g)}if(c.indexOf("%")!=-1){return d.ratio(parseFloat(c.replace("%",""))*0.01)}e=parseInt(c,10);if(!isNaN(e)){return d.offset(e)}}return null},adjustWidthAnchor:function(b,a){return b},adjustHeightAnchor:function(b,a){return b},configureItem:function(g){var e=this,a=e.owner,d=g.anchor,b,c,h;e.callParent(arguments);if(!g.anchor&&g.items&&!Ext.isNumber(g.width)&&!(Ext.isIE6&&Ext.isStrict)){g.anchor=d=e.defaultAnchor}if(a.anchorSize){if(typeof a.anchorSize=="number"){c=a.anchorSize}else{c=a.anchorSize.width;h=a.anchorSize.height}}else{c=a.initialConfig.width;h=a.initialConfig.height}if(d){b=d.split(" ");g.anchorSpec={right:e.parseAnchor(b[0],g.initialConfig.width,c),bottom:e.parseAnchor(b[1],g.initialConfig.height,h)}}},sizePolicy:{$:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},b:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},r:{$:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},b:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(c){var e=c.anchorSpec,a="$",d=this.sizePolicy,b;if(e){b=this.owner.getSizeModel();if(e.right&&!b.width.shrinkWrap){d=d.r}if(e.bottom&&!b.height.shrinkWrap){a="b"}}return d[a]}},0,0,0,0,["layout.anchor"],0,[Ext.layout.container,"Anchor",Ext.layout,"AnchorLayout"],0));(Ext.cmd.derive("Ext.window.MessageBox",Ext.window.Window,{OK:1,YES:2,NO:4,CANCEL:8,OKCANCEL:9,YESNO:6,YESNOCANCEL:14,INFO:Ext.baseCSSPrefix+"message-box-info",WARNING:Ext.baseCSSPrefix+"message-box-warning",QUESTION:Ext.baseCSSPrefix+"message-box-question",ERROR:Ext.baseCSSPrefix+"message-box-error",hideMode:"offsets",closeAction:"hide",resizable:false,title:"&#160;",defaultMinWidth:250,defaultMaxWidth:600,defaultMinHeight:110,defaultMaxHeight:500,minWidth:null,maxWidth:null,minHeight:null,maxHeight:null,constrain:true,cls:[Ext.baseCSSPrefix+"message-box",Ext.baseCSSPrefix+"hide-offsets"],layout:{type:"vbox",align:"stretch"},shrinkWrapDock:true,defaultTextHeight:75,minProgressWidth:250,minPromptWidth:250,buttonText:{ok:"OK",yes:"Yes",no:"No",cancel:"Cancel"},buttonIds:["ok","yes","no","cancel"],titleText:{confirm:"Confirm",prompt:"Prompt",wait:"Loading...",alert:"Attention"},iconHeight:35,iconWidth:50,makeButton:function(a){var b=this.buttonIds[a];return new Ext.button.Button({handler:this.btnCallback,itemId:b,scope:this,text:this.buttonText[b],minWidth:75})},btnCallback:function(a){var b=this,c,d;if(b.cfg.prompt||b.cfg.multiline){if(b.cfg.multiline){d=b.textArea}else{d=b.textField}c=d.getValue();d.reset()}b.hide();b.userCallback(a.itemId,c,b.cfg)},hide:function(){var b=this,a=b.cfg.cls;b.dd.endDrag();b.progressBar.reset();if(a){b.removeCls(a)}b.callParent(arguments)},constructor:function(a){var b=this;b.callParent(arguments);b.minWidth=b.defaultMinWidth=(b.minWidth||b.defaultMinWidth);b.maxWidth=b.defaultMaxWidth=(b.maxWidth||b.defaultMaxWidth);b.minHeight=b.defaultMinHeight=(b.minHeight||b.defaultMinHeight);b.maxHeight=b.defaultMaxHeight=(b.maxHeight||b.defaultMaxHeight)},initComponent:function(a){var e=this,b=e.id,d,c;e.title="&#160;";e.topContainer=new Ext.container.Container({layout:"hbox",padding:10,style:{overflow:"hidden"},items:[e.iconComponent=new Ext.Component({width:e.iconWidth,height:e.iconHeight}),e.promptContainer=new Ext.container.Container({flex:1,layout:"anchor",items:[e.msg=new Ext.form.field.Display({id:b+"-displayfield",cls:e.baseCls+"-text"}),e.textField=new Ext.form.field.Text({id:b+"-textfield",anchor:"100%",enableKeyEvents:true,listeners:{keydown:e.onPromptKey,scope:e}}),e.textArea=new Ext.form.field.TextArea({id:b+"-textarea",anchor:"100%",height:75})]})]});e.progressBar=new Ext.ProgressBar({id:b+"-progressbar",margins:"0 10 10 10"});e.items=[e.topContainer,e.progressBar];e.msgButtons=[];for(d=0;d<4;d++){c=e.makeButton(d);e.msgButtons[c.itemId]=c;e.msgButtons.push(c)}e.bottomTb=new Ext.toolbar.Toolbar({id:b+"-toolbar",ui:"footer",dock:"bottom",layout:{pack:"center"},items:[e.msgButtons[0],e.msgButtons[1],e.msgButtons[2],e.msgButtons[3]]});e.dockedItems=[e.bottomTb];e.on("close",e.onClose,e);e.callParent()},onClose:function(){var a=this.header.child("[type=close]");a.itemId="cancel";this.btnCallback(a);delete a.itemId},onPromptKey:function(a,c){var b=this;if(c.keyCode===c.RETURN||c.keyCode===10){if(b.msgButtons.ok.isVisible()){b.msgButtons.ok.handler.call(b,b.msgButtons.ok)}else{if(b.msgButtons.yes.isVisible()){b.msgButtons.yes.handler.call(b,b.msgButtons.yes)}}}},reconfigure:function(m){var n=this,o=0,k=true,a=n.buttonText,p=n.resizer,b,c,q,j,d,h,g,l,e;n.updateButtonText();m=m||{};n.cfg=m;if(m.width){c=m.width}if(m.height){q=m.height}n.minWidth=m.minWidth||n.defaultMinWidth;n.maxWidth=m.maxWidth||n.defaultMaxWidth;n.minHeight=m.minHeight||n.defaultMinHeight;n.maxHeight=m.maxHeight||n.defaultMaxHeight;if(p){b=p.resizeTracker;p.minWidth=b.minWidth=n.minWidth;p.maxWidth=b.maxWidth=n.maxWidth;p.minHeight=b.minHeight=n.minHeight;p.maxHeight=b.maxHeight=n.maxHeight}delete n.defaultFocus;if(m.defaultFocus){n.defaultFocus=m.defaultFocus}n.animateTarget=m.animateTarget||undefined;n.modal=m.modal!==false;n.setTitle(m.title||"");n.setIconCls(m.iconCls||"");if(Ext.isObject(m.buttons)){n.buttonText=m.buttons;o=0}else{n.buttonText=m.buttonText||n.buttonText;o=Ext.isNumber(m.buttons)?m.buttons:0}o=o|n.updateButtonText();n.buttonText=a;Ext.suspendLayouts();delete n.width;delete n.height;if(c||q){if(c){n.setWidth(c)}if(q){n.setHeight(q)}}n.hidden=false;if(!n.rendered){n.render(Ext.getBody())}n.closable=m.closable!==false&&!m.wait;n.header.child("[type=close]").setVisible(n.closable);if(!m.title&&!n.closable&&!m.iconCls){n.header.hide()}else{n.header.show()}n.liveDrag=!m.proxyDrag;n.userCallback=Ext.Function.bind(m.callback||m.fn||Ext.emptyFn,m.scope||Ext.global);n.setIcon(m.icon,m.iconWidth,m.iconHeight);g=n.msg;if(m.msg){g.setValue(m.msg);g.show()}else{g.hide()}d=n.textArea;h=n.textField;if(m.prompt||m.multiline){n.multiline=m.multiline;if(m.multiline){d.setValue(m.value);d.setHeight(m.defaultTextHeight||n.defaultTextHeight);d.show();h.hide();n.defaultFocus=d}else{h.setValue(m.value);d.hide();h.show();n.defaultFocus=h}}else{d.hide();h.hide()}l=n.progressBar;if(m.progress||m.wait){l.show();n.updateProgress(0,m.progressText);if(m.wait===true){l.wait(m.waitConfig)}}else{l.hide()}e=n.msgButtons;for(j=0;j<4;j++){if(o&Math.pow(2,j)){if(!n.defaultFocus){n.defaultFocus=e[j]}e[j].show();k=false}else{e[j].hide()}}if(k){n.bottomTb.hide()}else{n.bottomTb.show()}Ext.resumeLayouts(true)},updateButtonText:function(){var d=this,c=d.buttonText,b=0,e,a;for(e in c){if(c.hasOwnProperty(e)){a=d.msgButtons[e];if(a){if(d.cfg&&d.cfg.buttonText){b=b|Math.pow(2,Ext.Array.indexOf(d.buttonIds,e))}if(a.text!=c[e]){a.setText(c[e])}}}}return b},show:function(a){var c=this,b;if(Ext.AbstractComponent.layoutSuspendCount){Ext.on({resumelayouts:function(){c.show(a)},single:true});return c}c.reconfigure(a);if(a.cls){c.addCls(a.cls)}b=c.query("textfield:not([hidden]),textarea:not([hidden]),button:not([hidden])");c.preventFocusOnActivate=!b.length;c.hidden=true;c.callParent();return c},onShow:function(){this.callParent(arguments);this.center()},updateText:function(a){this.msg.setValue(a)},setIcon:function(d,c,a){var e=this,g=e.iconComponent,b=e.messageIconCls;if(b){g.removeCls(b)}if(d){g.show();g.setSize(c||e.iconWidth,a||e.iconHeight);g.addCls(Ext.baseCSSPrefix+"dlg-icon");g.addCls(e.messageIconCls=d)}else{g.removeCls(Ext.baseCSSPrefix+"dlg-icon");g.hide()}return e},updateProgress:function(b,a,c){this.progressBar.updateProgress(b,a);if(c){this.updateText(c)}return this},onEsc:function(){if(this.closable!==false){this.callParent(arguments)}},confirm:function(a,d,c,b){if(Ext.isString(a)){a={title:a,icon:this.QUESTION,msg:d,buttons:this.YESNO,callback:c,scope:b}}return this.show(a)},prompt:function(b,g,d,c,a,e){if(Ext.isString(b)){b={prompt:true,title:b,minWidth:this.minPromptWidth,msg:g,buttons:this.OKCANCEL,callback:d,scope:c,multiline:a,value:e}}return this.show(b)},wait:function(a,c,b){if(Ext.isString(a)){a={title:c,msg:a,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:b}}return this.show(a)},alert:function(a,d,c,b){if(Ext.isString(a)){a={title:a,msg:d,buttons:this.OK,fn:c,scope:b,minWidth:this.minWidth}}return this.show(a)},progress:function(a,c,b){if(Ext.isString(a)){a={title:a,msg:c,progress:true,progressText:b}}return this.show(a)}},1,["messagebox"],["panel","window","messagebox","component","container","box"],{panel:true,window:true,messagebox:true,component:true,container:true,box:true},["widget.messagebox"],0,[Ext.window,"MessageBox"],function(){Ext.MessageBox=Ext.Msg=new this()}));(Ext.cmd.derive("Ext.form.Basic",Ext.util.Observable,{alternateClassName:"Ext.form.BasicForm",constructor:function(b,c){var d=this,a;d.owner=b;d.checkValidityTask=new Ext.util.DelayedTask(d.checkValidity,d);d.checkDirtyTask=new Ext.util.DelayedTask(d.checkDirty,d);d.monitor=new Ext.container.Monitor({selector:"[isFormField]",scope:d,addHandler:d.onFieldAdd,removeHandler:d.onFieldRemove});d.monitor.bind(b);Ext.apply(d,c);if(Ext.isString(d.paramOrder)){d.paramOrder=d.paramOrder.split(/[\s,|]/)}a=d.reader;if(a&&!a.isReader){if(typeof a==="string"){a={type:a}}d.reader=Ext.createByAlias("reader."+a.type,a)}a=d.errorReader;if(a&&!a.isReader){if(typeof a==="string"){a={type:a}}d.errorReader=Ext.createByAlias("reader."+a.type,a)}d.addEvents("beforeaction","actionfailed","actioncomplete","validitychange","dirtychange");d.callParent()},initialize:function(){this.initialized=true;this.onValidityChange(!this.hasInvalidField())},timeout:30,paramsAsHash:false,waitTitle:"Please Wait...",trackResetOnLoad:false,wasDirty:false,destroy:function(){var b=this,a=b.monitor;if(a){a.unbind();b.monitor=null}b.clearListeners();b.checkValidityTask.cancel();b.checkDirtyTask.cancel()},onFieldAdd:function(b){var a=this;a.mon(b,"validitychange",a.checkValidityDelay,a);a.mon(b,"dirtychange",a.checkDirtyDelay,a);if(a.initialized){a.checkValidityDelay()}},onFieldRemove:function(b){var a=this;a.mun(b,"validitychange",a.checkValidityDelay,a);a.mun(b,"dirtychange",a.checkDirtyDelay,a);if(a.initialized){a.checkValidityDelay()}},getFields:function(){return this.monitor.getItems()},getBoundItems:function(){var a=this._boundItems;if(!a||a.getCount()===0){a=this._boundItems=new Ext.util.MixedCollection();a.addAll(this.owner.query("[formBind]"))}return a},hasInvalidField:function(){return !!this.getFields().findBy(function(c){var a=c.preventMark,b;c.preventMark=true;b=c.isValid();c.preventMark=a;return !b})},isValid:function(){var a=this,b;Ext.suspendLayouts();b=a.getFields().filterBy(function(c){return !c.validate()});Ext.resumeLayouts(true);return b.length<1},checkValidity:function(){var b=this,a=!b.hasInvalidField();if(a!==b.wasValid){b.onValidityChange(a);b.fireEvent("validitychange",b,a);b.wasValid=a}},checkValidityDelay:function(){this.checkValidityTask.delay(10)},onValidityChange:function(g){var d=this.getBoundItems(),b,c,a,e;if(d){b=d.items;a=b.length;for(c=0;c<a;c++){e=b[c];if(e.disabled===g){e.setDisabled(!g)}}}},isDirty:function(){return !!this.getFields().findBy(function(a){return a.isDirty()})},checkDirtyDelay:function(){this.checkDirtyTask.delay(10)},checkDirty:function(){var a=this.isDirty();if(a!==this.wasDirty){this.fireEvent("dirtychange",this,a);this.wasDirty=a}},hasUpload:function(){return !!this.getFields().findBy(function(a){return a.isFileUpload()})},doAction:function(b,a){if(Ext.isString(b)){b=Ext.ClassManager.instantiateByAlias("formaction."+b,Ext.apply({},a,{form:this}))}if(this.fireEvent("beforeaction",this,b)!==false){this.beforeAction(b);Ext.defer(b.run,100,b)}return this},submit:function(a){a=a||{};var b=this,c;if(a.standardSubmit||b.standardSubmit){c="standardsubmit"}else{c=b.api?"directsubmit":"submit"}return b.doAction(c,a)},load:function(a){return this.doAction(this.api?"directload":"load",a)},updateRecord:function(c){c=c||this._record;if(!c){return this}var b=c.fields.items,d=this.getFieldValues(),h={},g=0,a=b.length,e;for(;g<a;++g){e=b[g].name;if(d.hasOwnProperty(e)){h[e]=d[e]}}c.beginEdit();c.set(h);c.endEdit();return this},loadRecord:function(a){this._record=a;return this.setValues(a.getData())},getRecord:function(){return this._record},beforeAction:function(c){var g=this,b=c.waitMsg,k=Ext.baseCSSPrefix+"mask-loading",d=g.getFields().items,e,j=d.length,h,a;for(e=0;e<j;e++){h=d[e];if(h.isFormField&&h.syncValue){h.syncValue()}}if(b){a=g.waitMsgTarget;if(a===true){g.owner.el.mask(b,k)}else{if(a){a=g.waitMsgTarget=Ext.get(a);a.mask(b,k)}else{g.floatingAncestor=g.owner.up("[floating]");if(g.floatingAncestor){g.savePreventFocusOnActivate=g.floatingAncestor.preventFocusOnActivate;g.floatingAncestor.preventFocusOnActivate=true}Ext.MessageBox.wait(b,c.waitTitle||g.waitTitle)}}}},afterAction:function(c,e){var a=this;if(c.waitMsg){var b=Ext.MessageBox,d=a.waitMsgTarget;if(d===true){a.owner.el.unmask()}else{if(d){d.unmask()}else{b.hide()}}}if(a.floatingAncestor){a.floatingAncestor.preventFocusOnActivate=a.savePreventFocusOnActivate}if(e){if(c.reset){a.reset()}Ext.callback(c.success,c.scope||c,[a,c]);a.fireEvent("actioncomplete",a,c)}else{Ext.callback(c.failure,c.scope||c,[a,c]);a.fireEvent("actionfailed",a,c)}},findField:function(a){return this.getFields().findBy(function(b){return b.id===a||b.getName()===a})},markInvalid:function(k){var d=this,h,a,b,g,c;function j(e,m){var l=d.findField(e);if(l){l.markInvalid(m)}}if(Ext.isArray(k)){a=k.length;for(h=0;h<a;h++){b=k[h];j(b.id,b.msg)}}else{if(k instanceof Ext.data.Errors){a=k.items.length;for(h=0;h<a;h++){b=k.items[h];j(b.field,b.message)}}else{for(c in k){if(k.hasOwnProperty(c)){g=k[c];j(c,g,k)}}}}return this},setValues:function(b){var d=this,a,c,h,g;function e(j,l){var k=d.findField(j);if(k){k.setValue(l);if(d.trackResetOnLoad){k.resetOriginalValue()}}}Ext.suspendLayouts();if(Ext.isArray(b)){c=b.length;for(a=0;a<c;a++){h=b[a];e(h.id,h.value)}}else{Ext.iterate(b,e)}Ext.resumeLayouts(true);return this},getValues:function(j,k,o,m){var n={},g=this.getFields().items,h,p=g.length,e=Ext.isArray,l,d,c,b,a;for(h=0;h<p;h++){l=g[h];if(!k||l.isDirty()){d=l[m?"getModelData":"getSubmitData"](o);if(Ext.isObject(d)){for(a in d){if(d.hasOwnProperty(a)){c=d[a];if(o&&c===""){c=l.emptyText||""}if(n.hasOwnProperty(a)){b=n[a];if(!e(b)){b=n[a]=[b]}if(e(c)){n[a]=b.concat(c)}else{b.push(c)}}else{n[a]=c}}}}}}if(j){n=Ext.Object.toQueryString(n)}return n},getFieldValues:function(a){return this.getValues(false,a,false,true)},clearInvalid:function(){Ext.suspendLayouts();var b=this,a=b.getFields().items,c,d=a.length;for(c=0;c<d;c++){a[c].clearInvalid()}Ext.resumeLayouts(true);return b},reset:function(b){Ext.suspendLayouts();var c=this,a=c.getFields().items,d,e=a.length;for(d=0;d<e;d++){a[d].reset()}Ext.resumeLayouts(true);if(b===true){delete c._record}return c},applyToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.apply(a[b],c)}return this},applyIfToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.applyIf(a[b],c)}return this}},1,0,0,0,0,0,[Ext.form,"Basic",Ext.form,"BasicForm"],0));(Ext.cmd.derive("Ext.form.FieldAncestor",Ext.Base,{xhooks:{initHierarchyState:function(a){if(this.fieldDefaults){if(a.fieldDefaults){a.fieldDefaults=Ext.apply(Ext.Object.chain(a.fieldDefaults),this.fieldDefaults)}else{a.fieldDefaults=this.fieldDefaults}}}},initFieldAncestor:function(){var a=this;a.addEvents("fieldvaliditychange","fielderrorchange");a.monitor=new Ext.container.Monitor({scope:a,selector:"[isFormField]",addHandler:a.onChildFieldAdd,removeHandler:a.onChildFieldRemove});a.initFieldDefaults()},initMonitor:function(){this.monitor.bind(this)},onChildFieldAdd:function(b){var a=this;a.mon(b,"errorchange",a.handleFieldErrorChange,a);a.mon(b,"validitychange",a.handleFieldValidityChange,a)},onChildFieldRemove:function(b){var a=this;a.mun(b,"errorchange",a.handleFieldErrorChange,a);a.mun(b,"validitychange",a.handleFieldValidityChange,a)},initFieldDefaults:function(){if(!this.fieldDefaults){this.fieldDefaults={}}},handleFieldValidityChange:function(c,b){var a=this;if(c!==a){a.fireEvent("fieldvaliditychange",a,c,b);a.onFieldValidityChange(c,b)}},handleFieldErrorChange:function(b,a){var c=this;if(b!==c){c.fireEvent("fielderrorchange",c,b,a);c.onFieldErrorChange(b,a)}},onFieldValidityChange:Ext.emptyFn,onFieldErrorChange:Ext.emptyFn,beforeDestroy:function(){this.monitor.unbind();this.callParent()}},0,0,0,0,0,0,[Ext.form,"FieldAncestor"],0));(Ext.cmd.derive("Ext.layout.component.field.FieldContainer",Ext.layout.component.field.Field,{type:"fieldcontainer",waitForOuterHeightInDom:true,waitForOuterWidthInDom:true,beginLayout:function(b){var a=this.owner;this.callParent(arguments);b.hasRawContent=true;a.bodyEl.setStyle("height","");a.containerEl.setStyle("height","");b.containerElContext=b.getEl("containerEl")},measureContentHeight:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},measureContentWidth:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},publishInnerWidth:function(c,b){var d=c.bodyCellContext,a=d.el.getWidth();d.setWidth(a,false);c.containerElContext.setWidth(a,false)},publishInnerHeight:function(b,a){var c=b.bodyCellContext,d=b.containerElContext;a-=this.measureLabelErrorHeight(b);c.setHeight(a);d.setHeight(a)}},0,0,0,0,["layout.fieldcontainer"],0,[Ext.layout.component.field,"FieldContainer"],0));(Ext.cmd.derive("Ext.form.FieldContainer",Ext.container.Container,{componentLayout:"fieldcontainer",componentCls:Ext.baseCSSPrefix+"form-fieldcontainer",customOverflowEl:"containerEl",childEls:["containerEl"],combineLabels:false,labelConnector:", ",combineErrors:false,maskOnDisable:false,invalidCls:"",fieldSubTpl:'<div id="{id}-containerEl" class="{containerElCls}">{%this.renderContainer(out,values)%}</div>',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=(b.labelWidth+b.labelPad)}b.callParent(arguments);if(b.combineLabels){a.oldHideLabel=a.hideLabel;a.hideLabel=true}b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){if(c.combineLabels){a.hideLabel=a.oldHideLabel}c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,j,d,k,b,g,h;for(c=0;c<m;c++){j=e[c];d=j.getActiveErrors();b=d.length;for(k=0;k<b;k++){g=d[k];h=j.getFieldLabel();l.push((h?h+": ":"")+g)}}return l},getTargetEl:function(){return this.containerEl},applyTargetCls:function(b){var a=this.containerElCls;this.containerElCls=a?a+" "+b:b}},0,["fieldcontainer"],["component","container","fieldcontainer","box"],{component:true,container:true,fieldcontainer:true,box:true},["widget.fieldcontainer"],[["labelable",Ext.form.Labelable],["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldContainer"],0));(Ext.cmd.derive("Ext.layout.container.CheckboxGroup",Ext.layout.container.Container,{autoFlex:true,type:"checkboxgroup",createsInnerCt:true,childEls:["innerCt"],renderTpl:['<table id="{ownerId}-innerCt" class="'+Ext.plainTableCls+'" cellpadding="0"','role="presentation" style="{tableStyle}"><tbody><tr>','<tpl for="columns">','<td class="{parent.colCls}" valign="top" style="{style}">',"{% this.renderColumn(out,parent,xindex-1) %}","</td>","</tpl>","</tr></tbody></table>"],lastOwnerItemsGeneration:null,beginLayout:function(b){var k=this,e,d,h,a,j,g=0,m=0,l=k.autoFlex,c=k.innerCt.dom.style;k.callParent(arguments);e=k.columnNodes;b.innerCtContext=b.getEl("innerCt",k);if(!b.widthModel.shrinkWrap){d=e.length;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){g+=a;m++}}for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){j=((a/g)*100)+"%"}else{j=a+"px"}e[h].style.width=j}}else{for(h=0;h<d;h++){j=l?(1/d*100)+"%":"";e[h].style.width=j;m++}}if(!m){c.tableLayout="fixed";c.width=""}else{if(m<d){c.tableLayout="fixed";c.width="100%"}else{c.tableLayout="auto";if(l){c.width="100%"}else{c.width=""}}}}else{c.tableLayout="auto";c.width=""}},cacheElements:function(){var a=this;a.callParent();a.rowEl=a.innerCt.down("tr");a.columnNodes=a.rowEl.dom.childNodes},calculate:function(h){var e=this,c,b,a,j,d,g;if(!h.getDomProp("containerChildrenSizeDone")){e.done=false}else{c=h.innerCtContext;b=h.widthModel.shrinkWrap;a=h.heightModel.shrinkWrap;j=a||b;d=c.el.dom;g=j&&c.getPaddingInfo();if(b){h.setContentWidth(d.offsetWidth+g.width,true)}if(a){h.setContentHeight(d.offsetHeight+g.height,true)}}},doRenderColumn:function(d,m,g){var j=m.$layout,c=j.owner,e=m.columnCount,h=c.items.items,b=h.length,n,a,k,l,o;if(c.vertical){k=Math.ceil(b/e);a=g*k;b=Math.min(b,a+k);l=1}else{a=g;l=e}for(;a<b;a+=l){n=h[a];j.configureItem(n);o=n.getRenderTree();Ext.DomHelper.generateMarkup(o,d)}},getColumnCount:function(){var b=this,a=b.owner,c=a.columns;if(b.columnsArray){return c.length}if(Ext.isNumber(c)){return c}return a.items.length},getItemSizePolicy:function(a){return this.autoSizePolicy},getRenderData:function(){var k=this,g=k.callParent(),b=k.owner,h,d=k.getColumnCount(),a,c,j,l=k.autoFlex,e=0,m=0;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){e+=a;m++}}}g.colCls=b.groupCls;g.columnCount=d;g.columns=[];for(h=0;h<d;h++){c=(g.columns[h]={});if(k.columnsArray){a=k.owner.columns[h];if(a<1){j=((a/e)*100)+"%"}else{j=a+"px"}c.style="width:"+j}else{c.style="width:"+(1/d*100)+"%";m++}}g.tableStyle=!m?"table-layout:fixed;":(m<d)?"table-layout:fixed;width:100%":(l)?"table-layout:auto;width:100%":"table-layout:auto;";return g},initLayout:function(){var b=this,a=b.owner;b.columnsArray=Ext.isArray(a.columns);b.autoColumns=!a.columns||a.columns==="auto";b.vertical=a.vertical;b.callParent()},isValidParent:function(){return true},setupRenderTpl:function(a){this.callParent(arguments);a.renderColumn=this.doRenderColumn},renderChildren:function(){var a=this,b=a.owner.items.generation;if(a.lastOwnerItemsGeneration!==b){a.lastOwnerItemsGeneration=b;a.renderItems(a.getLayoutItems())}},renderItems:function(e){var g=this,a=e.length,b,k,j,d,h,c;if(a){Ext.suspendLayouts();if(g.autoColumns){g.addMissingColumns(a)}d=g.columnNodes.length;j=Math.ceil(a/d);for(b=0;b<a;b++){k=e[b];h=g.getRenderRowIndex(b,j,d);c=g.getRenderColumnIndex(b,j,d);if(!k.rendered){g.renderItem(k,h,c)}else{if(!g.isItemAtPosition(k,h,c)){g.moveItem(k,h,c)}}}if(g.autoColumns){g.removeExceedingColumns(a)}Ext.resumeLayouts(true)}},isItemAtPosition:function(b,c,a){return b.el.dom===this.getNodeAt(c,a)},getRenderColumnIndex:function(b,a,c){if(this.vertical){return Math.floor(b/a)}else{return b%c}},getRenderRowIndex:function(b,a,d){var c=this;if(c.vertical){return b%a}else{return Math.floor(b/d)}},getNodeAt:function(b,a){return this.columnNodes[a].childNodes[b]},addMissingColumns:function(a){var g=this,c=g.columnNodes.length,e,h,b,d;if(c<a){e=a-c;h=g.rowEl;b=g.owner.groupCls;for(d=0;d<e;d++){h.createChild({cls:b,tag:"td",vAlign:"top"})}}},removeExceedingColumns:function(a){var e=this,b=e.columnNodes.length,d,g,c;if(b>a){d=b-a;g=e.rowEl;for(c=0;c<d;c++){g.last().remove()}}},renderItem:function(c,d,a){var b=this;b.configureItem(c);c.render(Ext.get(b.columnNodes[a]),d);b.afterRenderItem(c)},moveItem:function(d,g,b){var c=this,a=c.columnNodes[b],e=a.childNodes[g];a.insertBefore(d.el.dom,e||null)}},0,0,0,0,["layout.checkboxgroup"],0,[Ext.layout.container,"CheckboxGroup"],0));(Ext.cmd.derive("Ext.form.CheckboxManager",Ext.util.MixedCollection,{singleton:true,getByName:function(a,b){return this.filterBy(function(c){return c.name==a&&c.getFormId()==b})}},0,0,0,0,0,0,[Ext.form,"CheckboxManager"],0));(Ext.cmd.derive("Ext.form.field.Checkbox",Ext.form.field.Base,{alternateClassName:"Ext.form.Checkbox",componentLayout:"field",stretchInputElFixed:false,childEls:["boxLabelEl"],fieldSubTpl:["<tpl if=\"boxLabel && boxLabelAlign == 'before'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",'<input type="{inputTypeAttr}" id="{id}" {inputAttrTpl}','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>','<tpl if="ariaAttrs"> {ariaAttrs}</tpl>',' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />',"<tpl if=\"boxLabel && boxLabelAlign == 'after'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",extraFieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",inputTypeAttr:"button",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,inputTypeAttr:a.inputTypeAttr})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b<a;++b){d=c[b];d.setValue(Ext.Array.contains(g,d.inputValue))}}else{e.callParent(arguments)}return e},valueToRaw:function(a){return a},onChange:function(b,a){var d=this,c=d.handler;if(c){c.call(d.scope||d,d,b)}d.callParent(arguments)},resetOriginalValue:function(b){var g=this,d,e,a,c;if(!b){d=g.getManager().getByName(g.name,g.getFormId()).items;a=d.length;for(c=0;c<a;++c){e=d[c];if(e!==g){d[c].resetOriginalValue(true)}}}g.callParent()},beforeDestroy:function(){this.callParent();this.getManager().removeAtKey(this.id)},getManager:function(){return Ext.form.CheckboxManager},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=a.readOnly}},setReadOnly:function(c){var a=this,b=a.inputEl;if(b){b.dom.disabled=!!c||a.disabled}a.callParent(arguments)},getFormId:function(){var b=this,a;if(!b.formId){a=b.up("form");if(a){b.formId=a.id}}return b.formId}},0,["checkbox","checkboxfield"],["field","component","checkbox","box","checkboxfield"],{field:true,component:true,checkbox:true,box:true,checkboxfield:true},["widget.checkbox","widget.checkboxfield"],0,[Ext.form.field,"Checkbox",Ext.form,"Checkbox"],0));(Ext.cmd.derive("Ext.form.CheckboxGroup",Ext.form.FieldContainer,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkboxfield",groupCls:Ext.baseCSSPrefix+"form-check-group",extraFieldBodyCls:Ext.baseCSSPrefix+"form-checkboxgroup-body",layout:"checkboxgroup",componentCls:Ext.baseCSSPrefix+"form-checkboxgroup",initComponent:function(){var a=this;a.callParent();a.initField()},initValue:function(){var b=this,a=b.value;b.originalValue=b.lastValue=a||b.getValue();if(a){b.setValue(a)}},onAdd:function(e){var d=this,b,a,c;if(e.isCheckbox){d.mon(e,"change",d.checkChange,d)}else{if(e.isContainer){b=e.items.items;for(c=0,a=b.length;c<a;c++){d.onAdd(b[c])}}}d.callParent(arguments)},onRemove:function(e){var d=this,b,a,c;if(e.isCheckbox){d.mun(e,"change",d.checkChange,d)}else{if(e.isContainer){b=e.items.items;for(c=0,a=b.length;c<a;c++){d.onRemove(b[c])}}}d.callParent(arguments)},isEqual:function(b,a){var c=Ext.Object.toQueryString;return c(b)===c(a)},getErrors:function(){var a=[];if(!this.allowBlank&&Ext.isEmpty(this.getChecked())){a.push(this.blankText)}return a},getBoxes:function(a){return this.query("[isCheckbox]"+(a||""))},eachBox:function(b,a){Ext.Array.forEach(this.getBoxes(),b,a||this)},getChecked:function(){return this.getBoxes("[checked]")},isDirty:function(){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){if(c[a].isDirty()){return true}}},setReadOnly:function(e){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){c[a].setReadOnly(e)}this.readOnly=e},reset:function(){var c=this,b=c.hasActiveError(),a=c.preventMark;c.preventMark=true;c.batchChanges(function(){var e=c.getBoxes(),d,g=e.length;for(d=0;d<g;d++){e[d].reset()}});c.preventMark=a;c.unsetActiveError();if(b){c.updateLayout()}},resetOriginalValue:function(){var d=this,c=d.getBoxes(),a,e=c.length;for(a=0;a<e;a++){c[a].resetOriginalValue()}d.originalValue=d.getValue();d.checkDirty()},setValue:function(h){var g=this,d=g.getBoxes(),a,k=d.length,e,c,j;g.batchChanges(function(){for(a=0;a<k;a++){e=d[a];c=e.getName();j=false;if(h&&h.hasOwnProperty(c)){if(Ext.isArray(h[c])){j=Ext.Array.contains(h[c],e.inputValue)}else{j=h[c]}}e.setValue(j)}});return g},getValue:function(){var d={},g=this.getBoxes(),c,k=g.length,h,e,a,j;for(c=0;c<k;c++){h=g[c];e=h.getName();a=h.inputValue;if(h.getValue()){if(d.hasOwnProperty(e)){j=d[e];if(!Ext.isArray(j)){j=d[e]=[j]}j.push(a)}else{d[e]=a}}}return d},getSubmitData:function(){return null},getModelData:function(){return null},validate:function(){var a=this,d,c,b;if(a.disabled){c=true}else{d=a.getErrors();c=Ext.isEmpty(d);b=a.wasValid;if(c){a.unsetActiveError()}else{a.setActiveError(d)}}if(c!==b){a.wasValid=c;a.fireEvent("validitychange",a,c);a.updateLayout()}return c}},0,["checkboxgroup"],["checkboxgroup","component","container","fieldcontainer","box"],{checkboxgroup:true,component:true,container:true,fieldcontainer:true,box:true},["widget.checkboxgroup"],[["field",Ext.form.field.Field]],[Ext.form,"CheckboxGroup"],function(){this.borrow(Ext.form.field.Base,["markInvalid","clearInvalid","setError"])}));(Ext.cmd.derive("Ext.form.FieldSet",Ext.container.Container,{collapsed:false,toggleOnTitleClick:true,baseCls:Ext.baseCSSPrefix+"fieldset",layout:"anchor",componentLayout:"fieldset",autoEl:"fieldset",childEls:["body"],renderTpl:["{%this.renderLegend(out,values);%}",'<div id="{id}-body" class="{baseCls}-body {bodyTargetCls}"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>"],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.initFieldAncestor();b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}b.initMonitor()},initPadding:function(e){var c=this,a=c.getProtoBody(),d=c.padding,b;if(d!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){d=c.parseBox(d);b=Ext.Element.parseBox(0);b.top=d.top;d.top=0;a.setStyle("padding",c.unitizeBox(b))}e.setStyle("padding",c.unitizeBox(d))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(b){delete c.getHierarchyState().collapsed}else{c.getHierarchyState().collapsed=true}if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}},0,["fieldset"],["component","container","box","fieldset"],{component:true,container:true,box:true,fieldset:true},["widget.fieldset"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldSet"],0));(Ext.cmd.derive("Ext.form.Label",Ext.Component,{autoEl:"label",maskOnDisable:false,getElConfig:function(){var a=this;a.html=a.text?Ext.util.Format.htmlEncode(a.text):(a.html||"");return Ext.apply(a.callParent(),{htmlFor:a.forId||""})},setText:function(c,b){var a=this;b=b!==false;if(b){a.text=c;delete a.html}else{a.html=c;delete a.text}if(a.rendered){a.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(c):c;a.updateLayout()}return a}},0,["label"],["component","label","box"],{component:true,label:true,box:true},["widget.label"],0,[Ext.form,"Label"],0));(Ext.cmd.derive("Ext.form.Panel",Ext.panel.Panel,{alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c<a;++c){e=d[c];b[e]=this[e]}return new Ext.form.Basic(this,b)},getForm:function(){return this.form},loadRecord:function(a){return this.getForm().loadRecord(a)},getRecord:function(){return this.getForm().getRecord()},updateRecord:function(a){return this.getForm().updateRecord(a)},getValues:function(d,b,c,a){return this.getForm().getValues(d,b,c,a)},isDirty:function(){return this.form.isDirty()},isValid:function(){return this.form.isValid()},hasInvalidField:function(){return this.form.hasInvalidField()},beforeDestroy:function(){this.stopPolling();this.form.destroy();this.callParent()},load:function(a){this.form.load(a)},submit:function(a){this.form.submit(a)},startPolling:function(b){this.stopPolling();var a=new Ext.util.TaskRunner(b);a.start({interval:0,run:this.checkChange,scope:this});this.pollTask=a},stopPolling:function(){var a=this.pollTask;if(a){a.stopAll();delete this.pollTask}},checkChange:function(){var a=this.form.getFields().items,b,c=a.length;for(b=0;b<c;b++){a[b].checkChange()}}},0,["form"],["panel","form","component","container","box"],{panel:true,form:true,component:true,container:true,box:true},["widget.form"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"Panel",Ext,"FormPanel",Ext.form,"FormPanel"],0));(Ext.cmd.derive("Ext.form.RadioManager",Ext.util.MixedCollection,{singleton:true,getByName:function(a,b){return this.filterBy(function(c){return c.name==a&&c.getFormId()==b})},getWithValue:function(a,b,c){return this.filterBy(function(d){return d.name==a&&d.inputValue==b&&d.getFormId()==c})},getChecked:function(a,b){return this.findBy(function(c){return c.name==a&&c.checked&&c.getFormId()==b})}},0,0,0,0,0,0,[Ext.form,"RadioManager"],0));(Ext.cmd.derive("Ext.form.field.Radio",Ext.form.field.Checkbox,{alternateClassName:"Ext.form.Radio",isRadio:true,focusCls:"form-radio-focus",inputType:"radio",ariaRole:"radio",formId:null,getGroupValue:function(){var a=this.getManager().getChecked(this.name,this.getFormId());return a?a.inputValue:null},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(true)}},onRemoved:function(){this.callParent(arguments);this.formId=null},setValue:function(a){var b=this,c;if(Ext.isBoolean(a)){b.callParent(arguments)}else{c=b.getManager().getWithValue(b.name,a,b.getFormId()).getAt(0);if(c){c.setValue(true)}}return b},getSubmitValue:function(){return this.checked?this.inputValue:null},getModelData:function(){return this.getSubmitData()},onChange:function(c,a){var g=this,e,d,b,h;g.callParent(arguments);if(c){h=g.getManager().getByName(g.name,g.getFormId()).items;d=h.length;for(e=0;e<d;e++){b=h[e];if(b!==g){b.setValue(false)}}}},getManager:function(){return Ext.form.RadioManager}},0,["radiofield","radio"],["field","component","radiofield","checkbox","radio","box","checkboxfield"],{field:true,component:true,radiofield:true,checkbox:true,radio:true,box:true,checkboxfield:true},["widget.radio","widget.radiofield"],0,[Ext.form.field,"Radio",Ext.form,"Radio"],0));(Ext.cmd.derive("Ext.form.RadioGroup",Ext.form.CheckboxGroup,{allowBlank:true,blankText:"You must select one item in this group",defaultType:"radiofield",groupCls:Ext.baseCSSPrefix+"form-radio-group",getBoxes:function(a){return this.query("[isRadio]"+(a||""))},checkChange:function(){var b=this.getValue(),a=Ext.Object.getKeys(b)[0];if(Ext.isArray(b[a])){return}this.callParent(arguments)},setValue:function(d){var j,g,e,h,c,a,b;if(Ext.isObject(d)){for(b in d){if(d.hasOwnProperty(b)){j=d[b];g=this.items.first();e=g?g.getFormId():null;h=Ext.form.RadioManager.getWithValue(b,j,e).items;a=h.length;for(c=0;c<a;++c){h[c].setValue(true)}}}}return this}},0,["radiogroup"],["radiogroup","checkboxgroup","component","container","fieldcontainer","box"],{radiogroup:true,checkboxgroup:true,component:true,container:true,fieldcontainer:true,box:true},["widget.radiogroup"],0,[Ext.form,"RadioGroup"],0));(Ext.cmd.derive("Ext.form.action.DirectLoad",Ext.form.action.Load,{alternateClassName:"Ext.form.Action.DirectLoad",type:"directload",run:function(){var e=this,d=e.form,c=d.api,b=c.load,g,a;if(typeof b!=="function"){c.load=b=Ext.direct.Manager.parseMethod(b)}g=b.directCfg.method;a=g.getArgs(e.getParams(),d.paramOrder,d.paramsAsHash);a.push(e.onComplete,e);b.apply(window,a)},processResponse:function(a){return(this.result=a)},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}},0,0,0,0,["formaction.directload"],0,[Ext.form.action,"DirectLoad",Ext.form.Action,"DirectLoad"],0));(Ext.cmd.derive("Ext.form.action.DirectSubmit",Ext.form.action.Submit,{alternateClassName:"Ext.form.Action.DirectSubmit",type:"directsubmit",doSubmit:function(){var e=this,d=e.form,c=d.api,b=c.submit,h=Ext.Function.bind(e.onComplete,e),g=e.buildForm(),a;if(typeof b!=="function"){c.submit=b=Ext.direct.Manager.parseMethod(b)}if(e.timeout||d.timeout){a={timeout:e.timeout*1000||d.timeout*1000}}b.call(window,g.formEl,h,e,a);e.cleanup(g)},processResponse:function(a){return(this.result=a)},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}},0,0,0,0,["formaction.directsubmit"],0,[Ext.form.action,"DirectSubmit",Ext.form.Action,"DirectSubmit"],0));(Ext.cmd.derive("Ext.form.action.StandardSubmit",Ext.form.action.Submit,{doSubmit:function(){var a=this.buildForm();a.formEl.submit();this.cleanup(a)}},0,0,0,0,["formaction.standardsubmit"],0,[Ext.form.action,"StandardSubmit"],0));(Ext.cmd.derive("Ext.layout.component.field.Trigger",Ext.layout.component.field.Field,{type:"triggerfield",borderWidths:{},beginLayout:function(d){var c=this,a=c.owner,b;d.triggerWrap=d.getEl("triggerWrap");c.callParent(arguments);b=a.getTriggerStateFlags();if(b!=a.lastTriggerStateFlags){a.lastTriggerStateFlags=b;c.updateEditState()}},beginLayoutCycle:function(a){this.callParent(arguments);if(a.widthModel.shrinkWrap&&!this.owner.inputWidth){a.inputContext.el.setStyle("width","")}},beginLayoutFixed:function(g,c,h){var d=this,a=g.target,e=d.ieInputWidthAdjustment||0,j="100%",b=a.triggerWrap;d.callParent(arguments);a.inputCell.setStyle("width","100%");if(e){d.adjustIEInputPadding(g);if(h==="px"){if(a.inputWidth){j=a.inputWidth-d.getExtraWidth(g)}else{j=c-e-d.getExtraWidth(g)}j+="px"}}a.inputEl.setStyle("width",j);j=a.inputWidth;if(j){b.setStyle("width",j+(e)+"px")}else{b.setStyle("width",c+h)}b.setStyle("table-layout","fixed")},adjustIEInputPadding:function(a){this.owner.inputCell.setStyle("padding-right",this.ieInputWidthAdjustment+"px")},getExtraWidth:function(d){var b=this,a=b.owner,e=b.borderWidths,c=a.ui+a.triggerEl.getCount();if(!(c in e)){e[c]=d.triggerWrap.getBorderInfo().width}return e[c]+a.getTriggerWidth()},beginLayoutShrinkWrap:function(c){var a=c.target,e="",d=a.inputWidth,b=a.triggerWrap;this.callParent(arguments);if(d){b.setStyle("width",d+"px");d=(d-this.getExtraWidth(c))+"px";a.inputEl.setStyle("width",d);a.inputCell.setStyle("width",d)}else{a.inputCell.setStyle("width",e);a.inputEl.setStyle("width",e);b.setStyle("width",e);b.setStyle("table-layout","auto")}},getTextWidth:function(){var b=this,a=b.owner,d=a.inputEl,c;c=(d.dom.value||(a.hasFocus?"":a.emptyText)||"")+a.growAppend;return d.getTextWidth(c)},publishOwnerWidth:function(c,b){var a=this.owner;this.callParent(arguments);if(!a.grow&&!a.inputWidth){b-=this.getExtraWidth(c);if(a.labelAlign!="top"){b-=a.getLabelWidth()}c.inputContext.setWidth(b)}},publishInnerHeight:function(b,a){b.inputContext.setHeight(a-this.measureLabelErrorHeight(b))},measureContentWidth:function(h){var g=this,b=g.owner,e=g.callParent(arguments),j=h.inputContext,d,a,c;if(b.grow&&!h.state.growHandled){d=g.getTextWidth()+h.inputContext.getFrameInfo().width;a=b.growMax;c=Math.min(a,e);a=Math.max(b.growMin,a,c);d=Ext.Number.constrain(d,b.growMin,a);j.setWidth(d);h.state.growHandled=true;j.domBlock(g,"width");e=NaN}else{if(!b.inputWidth){e-=g.getExtraWidth(h)}}return e},updateEditState:function(){var c=this,a=c.owner,e=a.inputEl,d=Ext.baseCSSPrefix+"trigger-noedit",b,g;if(c.owner.readOnly){e.addCls(d);g=true;b=false}else{if(c.owner.editable){e.removeCls(d);g=false}else{e.addCls(d);g=true}b=!c.owner.hideTrigger}a.triggerCell.setDisplayed(b);e.dom.readOnly=g}},0,0,0,0,["layout.triggerfield"],0,[Ext.layout.component.field,"Trigger"],0));(Ext.cmd.derive("Ext.form.field.Trigger",Ext.form.field.Text,{alternateClassName:["Ext.form.TriggerField","Ext.form.TwinTriggerField","Ext.form.Trigger"],childEls:[{name:"triggerCell",select:"."+Ext.baseCSSPrefix+"trigger-cell"},{name:"triggerEl",select:"."+Ext.baseCSSPrefix+"form-trigger"},"triggerWrap","inputCell"],triggerBaseCls:Ext.baseCSSPrefix+"form-trigger",triggerWrapCls:Ext.baseCSSPrefix+"form-trigger-wrap",triggerNoEditCls:Ext.baseCSSPrefix+"trigger-noedit",hideTrigger:false,editable:true,readOnly:false,repeatTriggerClick:false,autoSize:Ext.emptyFn,monitorTab:true,mimicing:false,triggerIndexRe:/trigger-index-(\d+)/,extraTriggerCls:"",componentLayout:"triggerfield",initComponent:function(){this.wrapFocusCls=this.triggerWrapCls+"-focus";this.callParent(arguments)},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=c.callParent(arguments);return'<table id="'+c.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+"form-trigger-wrap"+a+'" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+c.id+'-inputCell" class="'+Ext.baseCSSPrefix+"form-trigger-input-cell"+a+'">'+d+"</td>"+c.getTriggerMarkup()+"</tr></tbody></table>"},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,j=(e.readOnly||e.hideTrigger),a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(j?"display:none;":""),k=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:k,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,j=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(j,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(j,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g<c;g++){b=d[g];k=g+1;b.addClsOnOver(h["trigger"+(k)+"Cls"]+"-over",a,h);b.addClsOnClick(h["trigger"+(k)+"Cls"]+"-click",a,h)}l.addClsOnClick(h.triggerBaseCls+"-click",a,h)},onDestroy:function(){var a=this;Ext.destroyMembers(a,"triggerRepeater","triggerWrap","triggerEl");delete a.doc;a.callParent()},onFocus:function(){var a=this;a.callParent(arguments);if(!a.mimicing){a.bodyEl.addCls(a.wrapFocusCls);a.mimicing=true;a.mon(a.doc,"mousedown",a.mimicBlur,a,{delay:10});if(a.monitorTab){a.on("specialkey",a.checkTab,a)}}},checkTab:function(a,b){if(!this.ignoreMonitorTab&&b.getKey()==b.TAB){this.triggerBlur()}},getTriggerStateFlags:function(){var a=this,b=0;if(a.readOnly){b+=1}if(a.editable){b+=2}if(a.hideTrigger){b+=4}return b},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.bodyEl.contains(a.target)&&this.validateBlur(a)){this.triggerBlur(a)}},triggerBlur:function(b){var a=this;a.mimicing=false;a.mun(a.doc,"mousedown",a.mimicBlur,a);if(a.monitorTab&&a.inputEl){a.un("specialkey",a.checkTab,a)}Ext.form.field.Trigger.superclass.onBlur.call(a,b);if(a.bodyEl){a.bodyEl.removeCls(a.wrapFocusCls)}},validateBlur:function(a){return true},onTriggerWrapClick:function(){var d=this,e,b,a,c;c=arguments[d.triggerRepeater?1:0];if(c&&!d.readOnly&&!d.disabled){e=c.getTarget("."+d.triggerBaseCls,null);b=e&&e.className.match(d.triggerIndexRe);if(b){a=d["onTrigger"+(parseInt(b[1],10)+1)+"Click"]||d.onTriggerClick;if(a){a.call(d,c)}}}},onTriggerWrapMouseup:Ext.emptyFn,onTriggerClick:Ext.emptyFn},0,["trigger","triggerfield"],["field","trigger","textfield","component","box","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,triggerfield:true},["widget.trigger","widget.triggerfield"],0,[Ext.form.field,"Trigger",Ext.form,"TriggerField",Ext.form,"TwinTriggerField",Ext.form,"Trigger"],0));(Ext.cmd.derive("Ext.form.field.Picker",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Picker",matchFieldWidth:true,pickerAlign:"tl-bl?",openCls:Ext.baseCSSPrefix+"pickerfield-open",editable:true,initComponent:function(){this.callParent();this.addEvents("expand","collapse","select")},initEvents:function(){var a=this;a.callParent();a.keyNav=new Ext.util.KeyNav(a.inputEl,{down:a.onDownArrow,esc:{handler:a.onEsc,scope:a,defaultEventAction:false},scope:a,forceKeyDown:true});if(!a.editable){a.mon(a.inputEl,"click",a.onTriggerClick,a)}if(Ext.isGecko){a.inputEl.dom.setAttribute("autocomplete","off")}},onEsc:function(a){if(Ext.isIE){a.preventDefault()}if(this.isExpanded){this.collapse();a.stopEvent()}},onDownArrow:function(a){if(!this.isExpanded){this.onTriggerClick()}},expand:function(){var c=this,a,b,d;if(c.rendered&&!c.isExpanded&&!c.isDestroyed){c.expanding=true;a=c.bodyEl;b=c.getPicker();d=c.collapseIf;b.show();c.isExpanded=true;c.alignPicker();a.addCls(c.openCls);c.mon(Ext.getDoc(),{mousewheel:d,mousedown:d,scope:c});Ext.EventManager.onWindowResize(c.alignPicker,c);c.fireEvent("expand",c);c.onExpand();delete c.expanding}},onExpand:Ext.emptyFn,alignPicker:function(){var b=this,a=b.getPicker();if(b.isExpanded){if(b.matchFieldWidth){a.setWidth(b.bodyEl.getWidth())}if(a.isFloating()){b.doAlign()}}},doAlign:function(){var d=this,c=d.picker,a="-above",b;d.picker.alignTo(d.triggerWrap,d.pickerAlign,d.pickerOffset);b=c.el.getY()<d.inputEl.getY();d.bodyEl[b?"addCls":"removeCls"](d.openCls+a);c[b?"addCls":"removeCls"](c.baseCls+a)},collapse:function(){if(this.isExpanded&&!this.isDestroyed){var d=this,c=d.openCls,b=d.picker,e=Ext.getDoc(),g=d.collapseIf,a="-above";b.hide();d.isExpanded=false;d.bodyEl.removeCls([c,c+a]);b.el.removeCls(b.baseCls+a);e.un("mousewheel",g,d);e.un("mousedown",g,d);Ext.EventManager.removeResizeListener(d.alignPicker,d);d.fireEvent("collapse",d);d.onCollapse()}},onCollapse:Ext.emptyFn,collapseIf:function(b){var a=this;if(!a.isDestroyed&&!b.within(a.bodyEl,false,true)&&!b.within(a.picker.el,false,true)&&!a.isEventWithinPickerLoadMask(b)){a.collapse()}},getPicker:function(){var a=this;return a.picker||(a.picker=a.createPicker())},createPicker:Ext.emptyFn,onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.expand()}a.inputEl.focus()}},triggerBlur:function(){var a=this.picker;this.callParent(arguments);if(a&&a.isVisible()){a.hide()}},mimicBlur:function(c){var b=this,a=b.picker;if(!a||!c.within(a.el,false,true)&&!b.isEventWithinPickerLoadMask(c)){b.callParent(arguments)}},onDestroy:function(){var b=this,a=b.picker;Ext.EventManager.removeResizeListener(b.alignPicker,b);Ext.destroy(b.keyNav);if(a){delete a.pickerField;a.destroy()}b.callParent()},isEventWithinPickerLoadMask:function(b){var a=this.picker.loadMask;return a?b.within(a.maskEl,false,true)||b.within(a.el,false,true):false}},0,["pickerfield"],["field","trigger","textfield","pickerfield","component","box","triggerfield"],{field:true,trigger:true,textfield:true,pickerfield:true,component:true,box:true,triggerfield:true},["widget.pickerfield"],0,[Ext.form.field,"Picker",Ext.form,"Picker"],0));(Ext.cmd.derive("Ext.selection.Model",Ext.util.Observable,{alternateClassName:"Ext.AbstractSelectionModel",allowDeselect:undefined,toggleOnClick:true,selected:null,pruneRemoved:true,suspendChange:0,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("selectionchange","focuschange");b.modes={SINGLE:true,SIMPLE:true,MULTI:true};b.setSelectionMode(a.mode||b.mode);b.selected=new Ext.util.MixedCollection(null,b.getSelectionId);b.callParent(arguments)},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var a=this;return{add:a.onStoreAdd,clear:a.onStoreClear,bulkremove:a.onStoreRemove,update:a.onStoreUpdate,load:a.onStoreLoad,idchanged:a.onModelIdChanged,refresh:a.onStoreRefresh}},suspendChanges:function(){++this.suspendChange},resumeChanges:function(){if(this.suspendChange){--this.suspendChange}},selectAll:function(b){var e=this,d=e.store.getRange(),c=0,a=d.length,g=e.getSelection().length;e.suspendChanges();for(;c<a;c++){e.doSelect(d[c],true,b)}e.resumeChanges();if(!b){e.maybeFireSelectionChange(e.getSelection().length!==g)}},deselectAll:function(k){var g=this,b=g.getSelection(),h={},j=g.store,a=b.length,e,c,d;for(e=0,c=b.length;e<c;e++){d=b[e];h[d.internalId]=j.indexOf(d)}b=Ext.Array.sort(b,function(n,l){var o=h[n.internalId],m=h[l.internalId];return o<m?-1:1});g.suspendChanges();g.doDeselect(b,k);g.resumeChanges();if(!k){g.maybeFireSelectionChange(g.getSelection().length!==a)}},selectWithEvent:function(k,m){var n=this,d=n.isSelected(k),g=m.shiftKey,a=m.ctrlKey,c=n.selectionStart,h=n.getSelection(),l=h.length,o=n.allowDeselect,b,j,p;switch(n.selectionMode){case"MULTI":if(g&&c){n.selectRange(c,k,a)}else{if(a&&d){n.doDeselect(k,false)}else{if(a){n.doSelect(k,true,false)}else{if(d&&!g&&!a&&l>1){b=[];for(j=0;j<l;++j){p=h[j];if(p!==k){b.push(p)}}n.doDeselect(b)}else{if(!d){n.doSelect(k,false)}}}}}break;case"SIMPLE":if(d){n.doDeselect(k)}else{n.doSelect(k,true)}break;case"SINGLE":if(o&&!a){o=n.toggleOnClick}if(o&&d){n.doDeselect(k)}else{n.doSelect(k,false)}break}if(!g){if(n.isSelected(k)){n.selectionStart=k}else{n.selectionStart=null}}},afterKeyNavigate:function(g,d){var h=this,c,a,b=h.isSelected(d),k=(h.selectionStart&&h.isSelected(h.lastFocused))?h.selectionStart:(h.selectionStart=h.lastFocused),l=g.getCharCode(),m=l===g.SPACE,j=l===g.UP||l===g.PAGE_UP?"up":(l===g.DOWN||l===g.DOWN?"down":null);switch(h.selectionMode){case"MULTI":if(m){if(g.shiftKey){h.selectRange(k,d,g.ctrlKey)}else{if(b){h.doDeselect(d,g.ctrlKey);h.setLastFocused(null);h.setLastFocused(d)}else{h.doSelect(d,g.ctrlKey)}}}else{if(g.shiftKey&&k){a=h.store.indexOf(k);c=h.store.indexOf(d);if(j==="up"&&a<=c){h.deselectRange(h.lastFocused,c+1)}else{if(j==="down"&&a>=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(m,d,n){var j=this,l=j.store,c=j.selected.items,o,g,h,e,a,k,b;if(j.isLocked()){return}o=j.normalizeRowRange(m,d);m=o[0];d=o[1];e=[];for(g=m;g<=d;g++){if(!j.isSelected(l.getAt(g))){e.push(l.getAt(g))}}if(!n){a=[];j.suspendChanges();for(g=0,h=c.length;g<h;++g){b=c[g];k=l.indexOf(b);if(k<m||k>d){a.push(b)}}for(g=0,h=a.length;g<h;++g){j.doDeselect(a[g])}j.resumeChanges()}j.doMultiSelect(e,true)},deselectRange:function(e,d){var j=this,c=j.store,a,h,g,b;if(j.isLocked()){return}a=j.normalizeRowRange(e,d);e=a[0];d=a[1];g=[];for(h=e;h<=d;h++){b=c.getAt(h);if(j.isSelected(b)){g.push(b)}}j.doDeselect(g)},normalizeRowRange:function(c,b){var a=this.store,d;if(!Ext.isNumber(c)){c=a.indexOf(c)}c=Math.max(0,c);if(!Ext.isNumber(b)){b=a.indexOf(b)}b=Math.min(b,a.getCount()-1);if(c>b){d=b;b=c;c=d}return[c,b]},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,l,k){var h=this,b=h.selected,j=false,m,d,g,e,c;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!l&&b.getCount()>0){m=h.deselectDuringSelect(a,b.getRange(),k);if(m[0]){h.maybeFireSelectionChange(m[1]>0&&!k);return}}c=function(){b.add(e);j=true};for(d=0;d<g;d++){e=a[d];if(h.isSelected(e)){continue}h.lastSelected=e;h.onSelectChange(e,true,k,c)}if(!h.preventFocus){h.setLastFocused(e,k)}h.maybeFireSelectionChange(j&&!k)},deselectDuringSelect:function(d,a,j){var h=this,g=a.length,c=0,e=false,k,b;h.suspendChanges();for(b=0;b<g;++b){k=a[b];if(!Ext.Array.contains(d,k)){if(h.doDeselect(k,j)){++c}else{e=true}}}h.resumeChanges();return[e,c]},doDeselect:function(a,k){var j=this,b=j.selected,d=0,h,e,l=0,g=0,c;if(j.locked||!j.store){return false}if(typeof a==="number"){e=j.store.getAt(a);if(!e){return false}a=[e]}else{if(!Ext.isArray(a)){a=[a]}}c=function(){++g;b.remove(e)};h=a.length;j.suspendChanges();for(;d<h;d++){e=a[d];if(j.isSelected(e)){if(j.lastSelected===e){j.lastSelected=b.last();if(j.lastFocused===e){j.setLastFocused(null)}}++l;j.onSelectChange(e,false,k,c)}}j.resumeChanges();j.maybeFireSelectionChange(g>0&&!k);return g===l},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected,e;if(d.locked){return}if(d.isSelected(a)){return}if(c.getCount()){d.suspendChanges();if(!d.doDeselect(d.lastSelected,b)){d.resumeChanges();return}d.resumeChanges()}e=function(){c.add(a);d.lastSelected=a;g=true};d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;if(c!==a){d.lastFocused=c;d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.suspendChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(d,c){var g=this,b=g.store,e,a;a=g.normalizeRowRange(d,c);d=a[0];c=a[1];for(e=d;e<=c;e++){if(!g.isSelected(b.getAt(e))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b<a;b++){e=d.getAt(b);if(!this.storeHasSelected(e)){c.push(e)}}if(c.length){for(b=0,a=c.length;b<a;b++){d.remove(c[b])}g.maybeFireSelectionChange(true)}}},storeHasSelected:function(b){var d=this.store,c,a,g,e;if(b.hasId()&&d.getById(b)){return true}else{c=d.data.items;a=c.length;g=b.internalId;for(e=0;e<a;++e){if(g===c[e].internalId){return true}}}return false},refresh:function(){var h=this,l=h.store,a,d=[],g=[],c=h.getSelection(),e=c.length,k,j,b=0,m=h.getLastFocused();if(!l){return}for(;b<e;b++){k=c[b];if(l.indexOf(k)!==-1){d.push(k)}else{if(!h.pruneRemoved){a=l.getById(k.getId());if(a){d.push(a)}else{g.push(k)}}}if(h.mode==="SINGLE"&&g.length){break}}if(h.selected.getCount()!=(d.length+g.length)){j=true}h.clearSelections();if(l.indexOf(m)!==-1){h.setLastFocused(m,true)}if(d.length){h.doSelect(d,false,true)}if(g.length){h.selected.addAll(g);if(!h.lastSelected){h.lastSelected=g[g.length-1]}}h.maybeFireSelectionChange(j)},clearSelections:function(){this.selected.clear();this.lastSelected=null;this.setLastFocused(null)},onStoreAdd:Ext.emptyFn,onStoreClear:function(){if(this.selected.getCount()>0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c<e;c++){a=b[c];if(d.remove(a)){if(g.lastSelected==a){g.lastSelected=null}if(g.getLastFocused()==a){g.setLastFocused(null)}++h}}if(h){g.maybeFireSelectionChange(true)}},getCount:function(){return this.selected.getCount()},onUpdate:Ext.emptyFn,destroy:function(){this.clearListeners()},onStoreUpdate:Ext.emptyFn,onStoreRefresh:Ext.emptyFn,onStoreLoad:Ext.emptyFn,onSelectChange:function(a,d,c,g){var e=this,b=d?"select":"deselect";if((c||e.fireEvent("before"+b,e,a))!==false&&g()!==false){if(!c){e.fireEvent(b,e,a)}}},onLastFocusChanged:function(b,a){this.fireEvent("focuschange",this,b,a)},onEditorKey:Ext.emptyFn,beforeViewRender:function(a){this.views=this.views||[];this.views.push(a);this.bindStore(a.getStore(),true)},bindComponent:Ext.emptyFn},1,0,0,0,0,[["bindable",Ext.util.Bindable]],[Ext.selection,"Model",Ext,"AbstractSelectionModel"],0));(Ext.cmd.derive("Ext.selection.DataViewModel",Ext.selection.Model,{deselectOnContainerClick:true,enableKeyNav:true,constructor:function(a){this.addEvents("beforedeselect","beforeselect","deselect","select");this.callParent(arguments)},bindComponent:function(a){var b=this,c={refresh:b.refresh,scope:b};b.view=a;b.bindStore(a.getStore());c[a.triggerEvent]=b.onItemClick;c[a.triggerCtEvent]=b.onContainerClick;a.on(c);if(b.enableKeyNav){b.initKeyNav(a)}},onUpdate:function(b){var a=this.view;if(a&&this.isSelected(b)){a.onItemSelect(b)}},onItemClick:function(b,a,d,c,g){this.selectWithEvent(a,g)},onContainerClick:function(){if(this.deselectOnContainerClick){this.deselectAll()}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on({render:Ext.Function.bind(b.initKeyNav,b,[a]),single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,down:Ext.pass(b.onNavKey,[1],b),right:Ext.pass(b.onNavKey,[1],b),left:Ext.pass(b.onNavKey,[-1],b),up:Ext.pass(b.onNavKey,[-1],b),scope:b})},onNavKey:function(g){g=g||1;var e=this,b=e.view,d=e.getSelection()[0],c=e.view.store.getCount(),a;if(d){a=b.indexOf(b.getNode(d))+g}else{a=0}if(a<0){a=c-1}else{if(a>=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}},1,0,0,0,0,0,[Ext.selection,"DataViewModel"],0));(Ext.cmd.derive("Ext.view.AbstractView",Ext.Component,{inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('<tpl for="."><div class="{0}">{1}</div></tpl>',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite()}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var d=this,b=d.loadMask,c=d.getMaskStore(),a={target:d,msg:d.loadingText,msgCls:d.loadingCls,useMsg:d.loadingUseMsg,store:c};d.callParent(arguments);if(b&&!c.proxy.isSynchronous){if(Ext.isObject(b)){a=Ext.apply(a,b)}d.loadMask=new Ext.LoadMask(a);d.loadMask.on({scope:d,beforeshow:d.onMaskBeforeShow,hide:d.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d<a;d++){b=c[d];e[d]=this.prepareData(b.data,g+d,b)}return e},bufferRender:function(a,b){var c=this,d=c.renderBuffer||(c.renderBuffer=document.createElement("div"));c.tpl.overwrite(d,c.collectData(a,b));return Ext.DomQuery.select(c.getItemSelector(),d)},getNodeContainer:function(){return this.getTargetEl()},onUpdate:function(e,a){var d=this,b,c;if(d.viewReady){b=d.dataSource.indexOf(a);if(b>-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var j=this,b=j.bufferRender(c,d,true),g=j.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e<a;e++){this.getNodeContainer().appendChild(b[e])}}else{if(d<h){if(d===0){g.item(d).insertSibling(b,"before",true)}else{g.item(d-1).insertSibling(b,"after",true)}}else{g.last().insertSibling(b,"after",true)}}g.insert(d,b);return b},onRemove:function(j,b,d){var g=this,h=g.hasListeners.itemremove,e,a,c;if(g.all.getCount()){if(g.dataSource.getCount()===0){if(h){for(e=d.length-1;e>=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||((d===0)?0:(b.length-1));for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){this.refreshView()},refreshView:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh()}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;c<d;c++){b.push(this.getNode(a[c]))}return b},getRecords:function(c){var b=[],d=0,a=c.length,e=this.dataSource.data;for(;d<a;d++){b[b.length]=e.getByKey(c[d].viewRecordId)}return b},getRecord:function(a){return this.dataSource.data.getByKey(Ext.getDom(a).viewRecordId)},isSelected:function(b){var a=this.getRecord(b);return this.selModel.isSelected(a)},select:function(b,c,a){this.selModel.select(b,c,a)},deselect:function(b,a){this.selModel.deselect(b,a)},getNode:function(a){if((!a&&a!==0)||!this.rendered){return null}if(Ext.isString(a)){return document.getElementById(a)}if(Ext.isNumber(a)){return this.all.elements[a]}if(a.isModel){return this.getNodeByRecord(a)}return a},getNodeByRecord:function(a){var c=this.all.elements,d=c.length,b=0;for(;b<d;b++){if(c[b].viewRecordId===a.internalId){return c[b]}}return null},getNodes:function(c,a){var b=this.all;if(a===undefined){a=b.getCount()}else{a++}return b.slice(c||0,a)},indexOf:function(a){a=this.getNode(a);if(!a&&a!==0){return -1}if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onDestroy:function(){var a=this;a.all.clear();a.callParent();a.bindStore(null);a.selModel.destroy()},onItemSelect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).addCls(this.selectedItemCls)}},onItemDeselect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).removeCls(this.selectedItemCls)}},getItemSelector:function(){return this.itemSelector}},0,0,["component","box"],{component:true,box:true},0,[["bindable",Ext.util.Bindable]],[Ext.view,"AbstractView"],function(){Ext.deprecate("extjs","4.0",function(){Ext.view.AbstractView.override({getSelectionCount:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectionCount will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection().length},getSelectedRecords:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectedRecords will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection()},select:function(a,b,d){if(Ext.global.console){Ext.global.console.warn("DataView: select will be removed, please access select through a DataView's SelectionModel, ie: view.getSelectionModel().select()")}var c=this.getSelectionModel();return c.select.apply(c,arguments)},clearSelections:function(){if(Ext.global.console){Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()")}var a=this.getSelectionModel();return a.deselectAll()}})})}));(Ext.cmd.derive("Ext.view.View",Ext.view.AbstractView,{alternateClassName:"Ext.DataView",deferHighlight:Ext.isIE7m?100:0,mouseOverOutBuffer:20,inputTagRe:/^textarea$|^input$/i,inheritableStatics:{EventMap:{mousedown:"MouseDown",mouseup:"MouseUp",click:"Click",dblclick:"DblClick",contextmenu:"ContextMenu",mouseover:"MouseOver",mouseout:"MouseOut",mouseenter:"MouseEnter",mouseleave:"MouseLeave",keydown:"KeyDown",focus:"Focus"}},initComponent:function(){var a=this;a.callParent();if(a.mouseOverOutBuffer){a.handleMouseOverOrOut=Ext.Function.createBuffered(a.handleMouseOverOrOut,a.mouseOverOutBuffer,a);a.lastMouseOverOutEvent=new Ext.EventObjectImpl()}else{if(a.deferHighlight){a.setHighlightedItem=Ext.Function.createBuffered(a.setHighlightedItem,a.deferHighlight,a)}}},addCmpEvents:function(){this.addEvents("beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","beforeitemkeydown","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","itemkeydown","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","beforecontainerkeydown","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","containerkeydown","selectionchange","beforeselect","beforedeselect","select","deselect","focuschange","highlightitem","unhighlightitem")},getFocusEl:function(){return this.getTargetEl()},afterRender:function(){var a=this,b=a.mouseOverOutBuffer?a.onMouseOverOut:a.handleMouseOverOrOut;a.callParent();a.mon(a.getTargetEl(),{scope:a,freezeEvent:true,click:a.handleEvent,mousedown:a.handleEvent,mouseup:a.handleEvent,dblclick:a.handleEvent,contextmenu:a.handleEvent,keydown:a.handleEvent,mouseover:b,mouseout:b})},onMouseOverOut:function(b){var a=this;a.lastMouseOverOutEvent.setEvent(b.browserEvent,true);a.handleMouseOverOrOut(a.lastMouseOverOutEvent)},handleMouseOverOrOut:function(d){var c=this,b=d.type==="mouseout",g=b?d.getRelatedTarget:d.getTarget,a=g.call(d,c.itemSelector)||g.call(d,c.dataRowSelector);if(!c.mouseOverItem||a!==c.mouseOverItem){if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseleave";c.handleEvent(d)}c.mouseOverItem=a;if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseenter";c.handleEvent(d)}}},handleEvent:function(c){var b=this,a=c.type=="keydown"&&c.getKey();if(b.processUIEvent(c)!==false){b.processSpecialEvent(c)}if(a===c.SPACE){if(!b.inputTagRe.test(c.getTarget().tagName)){c.stopEvent()}}},processItemEvent:Ext.emptyFn,processContainerEvent:Ext.emptyFn,processSpecialEvent:Ext.emptyFn,processUIEvent:function(h){if(!Ext.getBody().isAncestor(h.target)){return}var j=this,l=h.getTarget(j.getItemSelector(),j.getTargetEl()),a=this.statics().EventMap,g,d,k=h.type,c=h.type,b;if(h.newType){c=h.newType;l=h.item}if(!l&&k=="keydown"){b=j.getSelectionModel();d=b.lastFocused||b.getLastSelected();if(d){l=j.getNode(d,true)}}if(l){if(!d){d=j.getRecord(l)}g=j.indexInStore?j.indexInStore(d):j.indexOf(l);if(!d||j.processItemEvent(d,l,g,h)===false){return false}if((j["onBeforeItem"+a[c]](d,l,g,h)===false)||(j.fireEvent("beforeitem"+c,j,d,l,g,h)===false)||(j["onItem"+a[c]](d,l,g,h)===false)){return false}j.fireEvent("item"+c,j,d,l,g,h)}else{if((j.processContainerEvent(h)===false)||(j["onBeforeContainer"+a[k]](h)===false)||(j.fireEvent("beforecontainer"+k,j,h)===false)||(j["onContainer"+a[k]](h)===false)){return false}j.fireEvent("container"+k,j,h)}return true},onItemMouseEnter:function(a,c,b,d){if(this.trackOver){this.highlightItem(c)}},onItemMouseLeave:function(a,c,b,d){if(this.trackOver){this.clearHighlight()}},onItemMouseDown:Ext.emptyFn,onItemMouseUp:Ext.emptyFn,onItemFocus:Ext.emptyFn,onItemClick:Ext.emptyFn,onItemDblClick:Ext.emptyFn,onItemContextMenu:Ext.emptyFn,onItemKeyDown:Ext.emptyFn,onBeforeItemMouseDown:Ext.emptyFn,onBeforeItemMouseUp:Ext.emptyFn,onBeforeItemFocus:Ext.emptyFn,onBeforeItemMouseEnter:Ext.emptyFn,onBeforeItemMouseLeave:Ext.emptyFn,onBeforeItemClick:Ext.emptyFn,onBeforeItemDblClick:Ext.emptyFn,onBeforeItemContextMenu:Ext.emptyFn,onBeforeItemKeyDown:Ext.emptyFn,onContainerMouseDown:Ext.emptyFn,onContainerMouseUp:Ext.emptyFn,onContainerMouseOver:Ext.emptyFn,onContainerMouseOut:Ext.emptyFn,onContainerClick:Ext.emptyFn,onContainerDblClick:Ext.emptyFn,onContainerContextMenu:Ext.emptyFn,onContainerKeyDown:Ext.emptyFn,onBeforeContainerMouseDown:Ext.emptyFn,onBeforeContainerMouseUp:Ext.emptyFn,onBeforeContainerMouseOver:Ext.emptyFn,onBeforeContainerMouseOut:Ext.emptyFn,onBeforeContainerClick:Ext.emptyFn,onBeforeContainerDblClick:Ext.emptyFn,onBeforeContainerContextMenu:Ext.emptyFn,onBeforeContainerKeyDown:Ext.emptyFn,setHighlightedItem:function(e){var d=this,c=d.highlightedItem,g=d.overItemCls,a=d.beforeOverItemCls,b;if(c!=e){if(c){Ext.fly(c).removeCls(g);b=c.previousSibling;if(a&&b){Ext.fly(b).removeCls(a)}d.fireEvent("unhighlightitem",d,c)}d.highlightedItem=e;if(e){Ext.fly(e).addCls(d.overItemCls);b=e.previousSibling;if(a&&b){Ext.fly(b).addCls(a)}d.fireEvent("highlightitem",d,e)}}},highlightItem:function(a){this.setHighlightedItem(a)},clearHighlight:function(){this.setHighlightedItem(undefined)},onUpdate:function(b,a){var g=this,e,c,d;if(g.viewReady){e=g.getNode(a);c=g.callParent(arguments);d=g.highlightedItem;if(d&&d===e){delete g.highlightedItem;if(c){g.highlightItem(c)}}}},refresh:function(){this.clearHighlight();this.callParent(arguments)},focusNode:function(j){var g=this,e=g.getNode(j,true),d=g.el,a=0,b=0,h=d.getRegion(),c;h.bottom=h.top+d.dom.clientHeight;h.right=h.left+d.dom.clientWidth;if(e){c=Ext.fly(e).getRegion();if(c.top<h.top){a=c.top-h.top}else{if(c.bottom>h.bottom){a=c.bottom-h.bottom}}if(c.left<h.left){b=c.left-h.left}else{if(c.right>h.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}},0,["dataview"],["component","box","dataview"],{component:true,box:true,dataview:true},["widget.dataview"],0,[Ext.view,"View",Ext,"DataView"],0));(Ext.cmd.derive("Ext.layout.component.BoundList",Ext.layout.component.Auto,{type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}},0,0,0,0,["layout.boundlist"],0,[Ext.layout.component,"BoundList"],0));(Ext.cmd.derive("Ext.toolbar.TextItem",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}},0,["tbtext"],["tbitem","component","box","tbtext"],{tbitem:true,component:true,box:true,tbtext:true},["widget.tbtext"],0,[Ext.toolbar,"TextItem",Ext.Toolbar,"TextItem"],0));(Ext.cmd.derive("Ext.form.field.Spinner",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'<td style="{triggerStyle}" class="{triggerCls}"><div class="'+Ext.baseCSSPrefix+"trigger-index-0 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-up {spinnerUpCls} {childElCls}" role="button"></div><div class="'+Ext.baseCSSPrefix+"trigger-index-1 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-down {spinnerDownCls} {childElCls}" role="button"></div></td></tr>',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'<table id="'+c.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+"form-trigger-wrap"+a+'" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+c.id+'-inputCell" class="'+Ext.baseCSSPrefix+"form-trigger-input-cell"+a+'">'+d+"</td>"+c.getTriggerMarkup()+"</tbody></table>"},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=(a.readOnly||a.hideTrigger);return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}},0,["spinnerfield"],["field","trigger","textfield","component","box","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,spinnerfield:true,triggerfield:true},["widget.spinnerfield"],0,[Ext.form.field,"Spinner",Ext.form,"Spinner"],0));(Ext.cmd.derive("Ext.form.field.Number",Ext.form.field.Spinner,{alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowExponential:true,allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(a<b.minValue){e.push(d(b.minText,b.minValue))}}if(a>b.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||d<c.maxValue;c.setSpinUpEnabled(a,true)}if(c.spinDownEnabled||c.spinDownDisabledByToggle){a=b||d>c.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowExponential){c+=a.decimalSeparator+"e+-"}else{if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}},0,["numberfield"],["field","trigger","textfield","component","box","numberfield","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,numberfield:true,spinnerfield:true,triggerfield:true},["widget.numberfield"],0,[Ext.form.field,"Number",Ext.form,"NumberField",Ext.form,"Number"],0));(Ext.cmd.derive("Ext.toolbar.Paging",Ext.toolbar.Toolbar,{alternateClassName:"Ext.PagingToolbar",displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var h=this,d,b,c,a,g,j,e;g=h.store.getCount();j=g===0;if(!j){d=h.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(h.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(h.afterPageText,0)}Ext.suspendLayouts();e=h.child("#afterTextItem");if(e){e.setText(a)}e=h.getInputItem();if(e){e.setDisabled(j).setValue(b)}h.setChildDisabled("#first",b===1||j);h.setChildDisabled("#prev",b===1||j);h.setChildDisabled("#next",b===c||j);h.setChildDisabled("#last",b===c||j);h.setChildDisabled("#refresh",false);h.updateInfo();Ext.resumeLayouts(true);if(h.rendered){h.fireEvent("change",h,d)}},setChildDisabled:function(a,b){var c=this.child(a);if(c){c.setDisabled(b)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.setChildDisabled("#refresh",false)},getInputItem:function(){return this.child("#inputItem")},readPageFromInput:function(b){var c=this.getInputItem(),d=false,a;if(c){a=c.getValue();d=parseInt(a,10);if(!a||isNaN(d)){c.setValue(b.currentPage);return false}}return d},onPagingFocus:function(){var a=this.getInputItem();if(a){a.select()}},onPagingBlur:function(c){var b=this.getInputItem(),a;if(b){a=this.getPageData().currentPage;b.setValue(a)}},onPagingKeyDown:function(j,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;j.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){j.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered){this.setChildDisabled("#refresh",true)}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}},0,["pagingtoolbar"],["toolbar","component","container","pagingtoolbar","box"],{toolbar:true,component:true,container:true,pagingtoolbar:true,box:true},["widget.pagingtoolbar"],[["bindable",Ext.util.Bindable]],[Ext.toolbar,"Paging",Ext,"PagingToolbar"],0));(Ext.cmd.derive("Ext.view.BoundList",Ext.view.View,{alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['<div id="{id}-listEl" class="{baseCls}-list-ct ',Ext.dom.Element.unselectableCls,'" style="overflow:auto"></div>',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";if(b.trackOver){b.overItemCls=a+"-item-over"}b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('<ul class="'+Ext.plainListCls+'"><tpl for=".">','<li role="option" unselectable="on" class="'+c+'">'+b.getInnerTpl(b.displayField)+"</li>","</tpl></ul>")}else{if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField||this.callParent()},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var c=this,a=c.tpl,b=c.pagingToolbar,d=c.rendered;a.field=c.pickerField;a.store=c.store;c.callParent();a.field=a.store=null;if(d&&b&&b.rendered&&!c.preserveScrollOnRefresh){c.el.appendChild(b.el)}if(d&&Ext.isIE6&&Ext.isStrict){c.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}},0,["boundlist"],["component","boundlist","box","dataview"],{component:true,boundlist:true,box:true,dataview:true},["widget.boundlist"],[["queryable",Ext.Queryable]],[Ext.view,"BoundList",Ext,"BoundList"],0));(Ext.cmd.derive("Ext.view.BoundListKeyNav",Ext.util.KeyNav,{constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c<d.getCount()-1?c+1:0;e.highlightAt(a)},pageup:function(){},pagedown:function(){},home:function(){this.highlightAt(0)},end:function(){var a=this;a.highlightAt(a.boundList.all.getCount()-1)},enter:function(a){this.selectHighlighted(a)}},highlightAt:function(b){var a=this.boundList,c=a.all.item(b);if(c){c=c.dom;a.highlightItem(c);a.getTargetEl().scrollChildIntoView(c,false)}},selectHighlighted:function(g){var d=this,b=d.boundList,c=b.highlightedItem,a=b.getSelectionModel();if(c){a.selectWithEvent(b.getRecord(c),g)}}},1,0,0,0,0,0,[Ext.view,"BoundListKeyNav"],0));(Ext.cmd.derive("Ext.layout.component.field.ComboBox",Ext.layout.component.field.Trigger,{type:"combobox",startingWidth:null,getTextWidth:function(){var h=this,b=h.owner,l=b.store,j=b.displayField,d=l.data.length,k="",e=0,c=0,g,m,a;for(;e<d;e++){m=l.getAt(e).data[j];g=m.length;if(g>c){c=g;k=m}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(k+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a<b.growMin){b.defaultListConfig.minWidth=b.growMin}b.removingRecords=false}return(a<h.startingWidth)?h.startingWidth:a}},0,0,0,0,["layout.combobox"],0,[Ext.layout.component.field,"ComboBox"],0));(Ext.cmd.derive("Ext.form.field.ComboBox",Ext.form.field.Picker,{alternateClassName:"Ext.form.ComboBox",componentLayout:"combobox",triggerCls:Ext.baseCSSPrefix+"form-arrow-trigger",hiddenName:"",hiddenDataCls:Ext.baseCSSPrefix+"hide-display "+Ext.baseCSSPrefix+"form-data-hidden",fieldSubTpl:['<div class="{hiddenDataCls}" role="presentation"></div>','<input id="{id}" type="{type}" {inputAttrTpl} class="{fieldCls} {typeCls} {editableCls}" autocomplete="off"','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="name"> name="{name}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,anyMatch:false,caseSensitive:false,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : values["'+e.displayField+'"]]}<tpl if="xindex < xcount">'+e.delimiter+"</tpl></tpl>")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(this.queryFilter&&!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;if(c.queryFilter){c.store.removeFilter(c.queryFilter)}if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(b,a,d){var c=this;if(c.ignoreSelection>0){--c.ignoreSelection}if(d&&!b.lastOptions.rawQuery){if(c.value==null){if(c.store.getCount()){c.doAutoSelect()}else{c.setValue(c.value)}}else{c.setValue(c.value)}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(e,b,d){var c=this,a=c.beforeQuery({query:e||"",rawQuery:d,forceAll:b,combo:c,cancel:false});if(a===false||a.cancel){return false}if(c.queryCaching&&a.query===c.lastQuery){c.expand()}else{c.lastQuery=a.query;if(c.queryMode==="local"){c.doLocalQuery(a)}else{c.doRemoteQuery(a)}}return true},beforeQuery:function(a){var b=this;if(b.fireEvent("beforequery",a)===false){a.cancel=true}else{if(!a.cancel){if(a.query.length<b.minChars&&!a.forceAll){a.cancel=true}}}return a},doLocalQuery:function(a){var b=this,c=a.query;if(!b.queryFilter){b.queryFilter=new Ext.util.Filter({id:b.id+"-query-filter",anyMatch:b.anyMatch,caseSensitive:b.caseSensitive,root:"data",property:b.displayField});b.store.addFilter(b.queryFilter,false)}if(c||!a.forceAll){b.queryFilter.disabled=false;b.queryFilter.setValue(b.enableRegEx?new RegExp(c):c)}else{b.queryFilter.disabled=true}b.store.filter();if(b.store.getCount()){b.expand()}else{b.collapse()}b.afterQuery(a)},doRemoteQuery:function(b){var c=this,a=function(){c.afterQuery(b)};c.expand();if(c.pageSize){c.loadPage(1,{rawQuery:b.rawQuery,callback:a})}else{c.store.load({params:c.getParams(b.query),rawQuery:b.rawQuery,callback:a})}},afterQuery:function(a){var b=this;if(b.store.getCount()){if(b.typeAhead){b.doTypeAhead()}if(b.getRawValue()!==b.getDisplayValue()){b.ignoreSelection++;b.picker.getSelectionModel().deselectAll();b.ignoreSelection--}if(a.rawQuery){b.syncSelection();if(b.picker&&!b.picker.getSelectionModel().hasSelection()){b.doAutoSelect()}}else{b.doAutoSelect()}}},loadPage:function(b,a){this.store.loadPage(b,Ext.apply({params:this.getParams(this.lastQuery)},a))},onPageChange:function(b,a){this.loadPage(a);return false},getParams:function(c){var b={},a=this.queryParam;if(a){b[a]=c}return b},doAutoSelect:function(){var b=this,a=b.picker,c,d;if(a&&b.autoSelect&&b.store.getCount()>0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{if(a.triggerAction==="last"){a.doQuery(a.lastQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){Ext.destroy(this.listKeyNav);this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){if(!this.expanding){this.alignPicker()}this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(j){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(j);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true,g;if(e&&e.isModel&&b===true&&c){g=!c.getSelectionModel().isSelected(e)}d.setValue(e,true);if(g){d.fireEvent("select",d,e)}},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(m,e){var k=this,c=k.valueNotFoundText,n=k.inputEl,g,j,h,a,l=[],b=[],d=[];if(k.store.loading){k.value=m;k.setHiddenValue(k.value);return k}m=Ext.Array.from(m);for(g=0,j=m.length;g<j;g++){h=m[g];if(!h||!h.isModel){h=k.findRecordByValue(h)}if(h){l.push(h);b.push(h.data);d.push(h.get(k.valueField))}else{if(!k.forceSelection){d.push(m[g]);a={};a[k.displayField]=m[g];b.push(a)}else{if(Ext.isDefined(c)){b.push(c)}}}}k.setHiddenValue(d);k.value=k.multiSelect?d:d[0];if(!Ext.isDefined(k.value)){k.value=null}k.displayTplData=b;k.lastSelection=k.valueModels=l;if(n&&k.emptyText&&!Ext.isEmpty(m)){n.removeCls(k.emptyCls)}k.setRawValue(k.getDisplayValue());k.checkChange();if(e!==false){k.syncSelection()}k.applyEmptyText();return k},setHiddenValue:function(j){var e=this,a=e.hiddenName,d,b,k,h,g,c;if(!e.hiddenDataEl||!a){return}j=Ext.Array.from(j);b=e.hiddenDataEl.dom;k=b.childNodes;h=k[0];g=j.length;c=k.length;if(!h&&g>0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(k[0]);--c}while(c<g){b.appendChild(h.cloneNode(true));++c}for(d=0;d<g;d++){k[d].value=j[d]}},getDisplayValue:function(){return this.displayTpl.apply(this.displayTplData)},getValue:function(){var b=this,a=b.picker,d=b.getRawValue(),c=b.value;if(b.getDisplayValue()!==d){c=d;b.value=b.displayTplData=b.valueModels=null;if(a){b.ignoreSelection++;a.getSelectionModel().deselectAll();b.ignoreSelection--}}return c},getSubmitValue:function(){var a=this.getValue();if(Ext.isEmpty(a)){a=""}return a},isEqual:function(e,d){var b=Ext.Array.from,c,a;e=b(e);d=b(d);a=e.length;if(a!==d.length){return false}for(c=0;c<a;c++){if(d[c]!==e[c]){return false}}return true},clearValue:function(){this.setValue([])},syncSelection:function(){var h=this,d=h.picker,g,c,b=h.valueModels||[],e=b.length,a,j;if(d){g=[];for(a=0;a<e;a++){j=b[a];if(j&&j.isModel&&h.store.indexOf(j)>=0){g.push(j)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}},0,["combobox","combo"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.combo","widget.combobox"],[["bindable",Ext.util.Bindable]],[Ext.form.field,"ComboBox",Ext.form,"ComboBox"],0));(Ext.cmd.derive("Ext.picker.Month",Ext.Component,{alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['<div id="{id}-bodyEl" class="{baseCls}-body">','<div id="{id}-monthEl" class="{baseCls}-months">','<tpl for="months">','<div class="{parent.baseCls}-item {parent.baseCls}-month">','<a style="{parent.monthStyle}" hidefocus="on" class="{parent.baseCls}-item-inner" href="#">{.}</a>',"</div>","</tpl>","</div>",'<div id="{id}-yearEl" class="{baseCls}-years">','<div class="{baseCls}-yearnav">','<div class="{baseCls}-yearnav-button-ct">','<a id="{id}-prevEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-prev" href="#" hidefocus="on" ></a>',"</div>",'<div class="{baseCls}-yearnav-button-ct">','<a id="{id}-nextEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-next" href="#" hidefocus="on" ></a>',"</div>","</div>",'<tpl for="years">','<div class="{parent.baseCls}-item {parent.baseCls}-year">','<a hidefocus="on" class="{parent.baseCls}-item-inner" href="#">{.}</a>',"</div>","</tpl>","</div>",'<div class="'+Ext.baseCSSPrefix+'clear"></div>',"</div>",'<tpl if="showButtons">','<div id="{id}-buttonsEl" class="{baseCls}-buttons">{%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}</div>","</tpl>"],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;c<e;++c){b.push(a(c),a(c+e))}if(Ext.isDefined(h)){d="margin: 0 "+h+"px;"}Ext.apply(g.renderData,{months:b,years:g.getYears(),showButtons:g.showButtons,monthStyle:d})},afterRender:function(){var b=this,a=b.bodyEl,c=b.buttonsEl;b.callParent();b.mon(a,"click",b.onBodyClick,b);b.mon(a,"dblclick",b.onBodyClick,b);b.years=a.select("."+b.baseCls+"-year a");b.months=a.select("."+b.baseCls+"-month a");b.backRepeater=new Ext.util.ClickRepeater(b.prevEl,{handler:Ext.Function.bind(b.adjustYear,b,[-b.totalYears])});b.prevEl.addClsOnOver(b.baseCls+"-yearnav-prev-over");b.nextRepeater=new Ext.util.ClickRepeater(b.nextEl,{handler:Ext.Function.bind(b.adjustYear,b,[b.totalYears])});b.nextEl.addClsOnOver(b.baseCls+"-yearnav-next-over");b.updateBody();if(!Ext.isDefined(b.monthMargin)){Ext.picker.Month.prototype.monthMargin=b.calculateMonthMargin()}},calculateMonthMargin:function(){var d=this,b=d.monthEl,a=d.months,e=a.first(),c=e.getMargin("l");while(c&&d.getLargest()>d.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((b<e||b>e+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c<a;++c){b.push(c,c+e)}return b},updateBody:function(){var j=this,e=j.years,b=j.months,n=j.getYears(),o=j.selectedCls,l=j.getYear(null),g=j.value[0],m=j.monthOffset,h,d,k,a,c;if(j.rendered){e.removeCls(o);b.removeCls(o);d=e.elements;a=d.length;for(k=0;k<a;k++){c=Ext.fly(d[k]);h=n[k];c.dom.innerHTML=h;if(h==l){c.addCls(o)}}if(g!==null){if(g<m){g=g*2}else{g=(g-m)*2+1}b.item(g).addCls(o)}}},getYear:function(a,c){var b=this.value[1];c=c||0;return b===null?a:b+c},onBodyClick:function(d,b){var c=this,a=d.type=="dblclick";if(d.getTarget("."+c.baseCls+"-month")){d.stopEvent();c.onMonthClick(b,a)}else{if(d.getTarget("."+c.baseCls+"-year")){d.stopEvent();c.onYearClick(b,a)}}},adjustYear:function(a){if(typeof a!="number"){a=this.totalYears}this.activeYear+=a;this.updateBody()},onOkClick:function(){this.fireEvent("okclick",this,this.value)},onCancelClick:function(){this.fireEvent("cancelclick",this)},onMonthClick:function(c,a){var b=this;b.value[0]=b.resolveOffset(b.months.indexOf(c),b.monthOffset);b.updateBody();b.fireEvent("month"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},onYearClick:function(c,a){var b=this;b.value[1]=b.activeYear+b.resolveOffset(b.years.indexOf(c),b.yearOffset);b.updateBody();b.fireEvent("year"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},resolveOffset:function(a,b){if(a%2===0){return(a/2)}else{return b+Math.floor(a/2)}},beforeDestroy:function(){var a=this;a.years=a.months=null;Ext.destroyMembers(a,"backRepeater","nextRepeater","okBtn","cancelBtn");a.callParent()},finishRenderChildren:function(){var a=this;this.callParent(arguments);if(this.showButtons){a.okBtn.finishRender();a.cancelBtn.finishRender()}},onDestroy:function(){Ext.destroyMembers(this,"okBtn","cancelBtn");this.callParent()}},0,["monthpicker"],["monthpicker","component","box"],{monthpicker:true,component:true,box:true},["widget.monthpicker"],0,[Ext.picker,"Month",Ext,"MonthPicker"],0));(Ext.cmd.derive("Ext.picker.Date",Ext.Component,{alternateClassName:"Ext.DatePicker",childEls:["innerEl","eventEl","prevEl","nextEl","middleBtnEl","footerEl"],border:true,renderTpl:['<div id="{id}-innerEl" role="grid">','<div role="presentation" class="{baseCls}-header">','<a id="{id}-prevEl" class="{baseCls}-prev {baseCls}-arrow" href="#" role="button" title="{prevText}" hidefocus="on" ></a>','<div class="{baseCls}-month" id="{id}-middleBtnEl">{%this.renderMonthBtn(values, out)%}</div>','<a id="{id}-nextEl" class="{baseCls}-next {baseCls}-arrow" href="#" role="button" title="{nextText}" hidefocus="on" ></a>',"</div>",'<table id="{id}-eventEl" class="{baseCls}-inner" cellspacing="0" role="grid">','<thead role="presentation"><tr role="row">','<tpl for="dayNames">','<th role="columnheader" class="{parent.baseCls}-column-header" title="{.}">','<div class="{parent.baseCls}-column-header-inner">{.:this.firstInitial}</div>',"</th>","</tpl>","</tr></thead>",'<tbody role="presentation"><tr role="row">','<tpl for="days">',"{#:this.isEndOfWeek}",'<td role="gridcell" id="{[Ext.id()]}">','<a role="presentation" hidefocus="on" class="{parent.baseCls}-date" href="#"></a>',"</td>","</tpl>","</tr></tbody>","</table>",'<tpl if="showToday">','<div id="{id}-footerEl" role="presentation" class="{baseCls}-footer">{%this.renderTodayBtn(values, out)%}</div>',"</tpl>","</div>",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'</tr><tr role="row">':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";if(!b.format){b.format=Ext.Date.defaultFormat}if(!b.dayNames){b.dayNames=Ext.Date.dayNames}b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:function(d){if(d.altKey){c.showPrevYear()}else{c.showPrevMonth()}},pageDown:function(d){if(d.altKey){c.showNextYear()}else{c.showNextMonth()}},tab:function(d){c.doCancelFieldFocus=true;c.handleTabClick(d);delete c.doCancelFieldFocus;return true},enter:function(d){d.stopPropagation();return true},home:function(d){c.update(a.getFirstDateOfMonth(c.activeDate))},end:function(d){c.update(a.getLastDateOfMonth(c.activeDate))}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},handleTabClick:function(d){var c=this,a=c.getSelectedDate(c.activeDate),b=c.handler;if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},getSelectedDate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b<e;b++){h=Ext.fly(g[b]);if(h.dom.firstChild.dateValue==j){return h.dom.firstChild}}return null},initDisabledDays:function(){var h=this,b=h.disabledDates,g="(?:",a,j,c,e;if(!h.disabledDatesRE&&b){a=b.length-1;c=b.length;for(j=0;j<c;j++){e=b[j];g+=Ext.isDate(e)?"^"+Ext.String.escapeRegex(Ext.Date.dateFormat(e,h.format))+"$":e;if(j!=a){g+="|"}}h.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var b=this;if(Ext.isArray(a)){b.disabledDates=a;b.disabledDatesRE=null}else{b.disabledDatesRE=a}b.initDisabledDays();b.update(b.value,true);return b},setDisabledDays:function(a){this.disabledDays=a;return this.update(this.value,true)},setMinDate:function(a){this.minDate=a;return this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;return this.update(this.value,true)},setValue:function(a){this.value=Ext.Date.clearTime(a,true);return this.update(this.value)},getValue:function(){return this.value},getDayInitial:function(a){return a.substr(0,1)},focus:function(){this.update(this.activeDate)},onEnable:function(){this.callParent();this.setDisabledStatus(false);this.update(this.activeDate)},onDisable:function(){this.callParent();this.setDisabledStatus(true)},setDisabledStatus:function(a){var b=this;b.keyNav.setDisabled(a);b.prevRepeater.setDisabled(a);b.nextRepeater.setDisabled(a);if(b.showToday){b.todayKeyListener.setDisabled(a);b.todayBtn.setDisabled(a)}},getActive:function(){return this.activeDate||this.value},runAnimation:function(c){var b=this.monthPicker,a={duration:200,callback:function(){if(c){b.hide()}else{b.show()}}};if(c){b.el.slideOut("t",a)}else{b.el.slideIn("t",a)}},hideMonthPicker:function(a){var c=this,b=c.monthPicker;if(b){if(c.shouldAnimate(a)){c.runAnimation(true)}else{b.hide()}}return c},showMonthPicker:function(a){var c=this,b;if(c.rendered&&!c.disabled){b=c.createMonthPicker();b.setValue(c.getActive());b.setSize(c.getSize());b.setPosition(-1,-1);if(c.shouldAnimate(a)){c.runAnimation(false)}else{b.show()}}return c},shouldAnimate:function(a){return Ext.isDefined(a)?a:!this.disableAnim},createMonthPicker:function(){var b=this,a=b.monthPicker;if(!a){b.monthPicker=a=new Ext.picker.Month({renderTo:b.el,floating:true,shadow:false,small:b.showToday===false,listeners:{scope:b,cancelclick:b.onCancelClick,okclick:b.onOkClick,yeardblclick:b.onOkClick,monthdblclick:b.onOkClick}});if(!b.disableAnim){a.el.setStyle("display","none")}b.on("beforehide",Ext.Function.bind(b.hideMonthPicker,b,[false]))}return a},onOkClick:function(b,e){var d=this,g=e[0],c=e[1],a=new Date(c,g,d.getActive().getDate());if(a.getMonth()!==g){a=Ext.Date.getLastDateOfMonth(new Date(c,g,1))}d.setValue(a);d.hideMonthPicker()},onCancelClick:function(){this.selectedUpdate(this.activeDate);this.hideMonthPicker()},showPrevMonth:function(a){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1))},showNextMonth:function(a){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.MONTH,1))},showPrevYear:function(){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.YEAR,-1))},showNextYear:function(){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.YEAR,1))},handleMouseWheel:function(a){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b<e;b++){h=Ext.fly(g[b]);if(h.dom.firstChild.dateValue==j){d.fireEvent("highlightitem",d,h);h.addCls(l);if(d.isVisible()&&!d.doCancelFocus){Ext.fly(h.dom.firstChild).focus(50)}break}}},fullUpdate:function(A){var E=this,g=E.cells.elements,d=E.textNodes,G=E.disabledCellCls,o=Ext.Date,w=0,D=0,e=E.isVisible(),m=+o.clearTime(A,true),z=+o.clearTime(new Date()),u=E.minDate?o.clearTime(E.minDate,true):Number.NEGATIVE_INFINITY,v=E.maxDate?o.clearTime(E.maxDate,true):Number.POSITIVE_INFINITY,C=E.disabledDatesRE,t=E.disabledDatesText,H=E.disabledDays?E.disabledDays.join(""):false,B=E.disabledDaysText,x=E.format,l=o.getDaysInMonth(A),q=o.getFirstDateOfMonth(A),h=q.getDay()-E.startDay,y=o.add(A,o.MONTH,-1),b=E.longDayFormat,k,r,a,F,n,p,c,j,s;if(h<0){h+=7}l+=h;k=o.getDaysInMonth(y)-h;r=new Date(y.getFullYear(),y.getMonth(),k,E.initHour);if(E.showToday){F=o.clearTime(new Date());a=(F<u||F>v||(C&&x&&C.test(o.dateFormat(F,x)))||(H&&H.indexOf(F.getDay())!=-1));if(!E.disabled){E.todayBtn.setDisabled(a);E.todayKeyListener.setDisabled(a)}}n=function(I,J){s=+o.clearTime(r,true);I.title=o.format(r,b);I.firstChild.dateValue=s;if(s==z){J+=" "+E.todayCls;I.title=E.todayText;E.todayElSpan=Ext.DomHelper.append(I.firstChild,{tag:"span",cls:Ext.baseCSSPrefix+"hide-clip",html:E.todayText},true)}if(s==m){J+=" "+E.selectedCls;E.fireEvent("highlightitem",E,I);if(e&&E.floating){Ext.fly(I.firstChild).focus(50)}}if(s<u){J+=" "+G;I.title=E.minText}else{if(s>v){J+=" "+G;I.title=E.maxText}else{if(H&&H.indexOf(r.getDay())!==-1){I.title=B;J+=" "+G}else{if(C&&x){j=o.dateFormat(r,x);if(C.test(j)){I.title=t.replace("%0",j);J+=" "+G}}}}}I.className=J+" "+E.cellCls};for(;w<E.numDays;++w){if(w<h){p=(++k);c=E.prevCls}else{if(w>=l){p=(++D);c=E.nextCls}else{p=w-h+1;c=E.activeCls}}d[w].innerHTML=p;r.setDate(r.getDate()+1);n(g[w],c)}E.monthBtn.setText(Ext.Date.format(A,E.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},0,["datepicker"],["datepicker","component","box"],{datepicker:true,component:true,box:true},["widget.datepicker"],0,[Ext.picker,"Date",Ext,"DatePicker"],0));(Ext.cmd.derive("Ext.form.field.Date",Ext.form.field.Picker,{alternateClassName:["Ext.form.DateField","Ext.form.Date"],format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;h<e;h++){c=b[h];g+=Ext.isDate(c)?"^"+Ext.String.escapeRegex(c.dateFormat(this.format))+"$":c;if(h!==a){g+="|"}}this.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var c=this,b=c.picker;c.disabledDates=a;c.initDisabledDays();if(b){b.setDisabledDates(c.disabledDatesRE)}},setDisabledDays:function(a){var b=this.picker;this.disabledDays=a;if(b){b.setDisabledDays(a)}},setMinValue:function(c){var b=this,a=b.picker,d=(Ext.isString(c)?b.parseDate(c):c);b.minValue=d;if(a){a.minText=Ext.String.format(b.minText,b.formatDate(b.minValue));a.setMinDate(d)}},setMaxValue:function(c){var b=this,a=b.picker,d=(Ext.isString(c)?b.parseDate(c):c);b.maxValue=d;if(a){a.maxText=Ext.String.format(b.maxText,b.formatDate(b.maxValue));a.setMaxDate(d)}},getErrors:function(q){var j=this,p=Ext.String.format,k=Ext.Date.clearTime,o=j.callParent(arguments),n=j.disabledDays,d=j.disabledDatesRE,m=j.minValue,h=j.maxValue,g=n?n.length:0,e=0,a,b,l,c;q=j.formatDate(q||j.processRawValue(j.getRawValue()));if(q===null||q.length<1){return o}a=q;q=j.parseDate(q);if(!q){o.push(p(j.invalidText,a,Ext.Date.unescapeFormat(j.format)));return o}c=q.getTime();if(m&&c<k(m).getTime()){o.push(p(j.minText,j.formatDate(m)))}if(h&&c>k(h).getTime()){o.push(p(j.maxText,j.formatDate(h)))}if(n){l=q.getDay();for(;e<g;e++){if(l===n[e]){o.push(j.disabledDaysText);break}}}b=j.formatDate(q);if(d&&d.test(b)){o.push(p(j.disabledDatesText,b))}return o},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},safeParse:function(g,h){var e=this,c=Ext.Date,a=null,b=e.useStrict,d;if(c.formatContainsHourInfo(h)){a=c.parse(g,h,b)}else{d=c.parse(g+" "+e.initTime,h+" "+e.initTimeFormat,b);if(d){a=c.clearTime(d)}}return a},getSubmitValue:function(){var b=this.submitFormat||this.format,a=this.getValue();return a?Ext.Date.format(a,b):""},parseDate:function(e){if(!e||Ext.isDate(e)){return e}var d=this,h=d.safeParse(e,d.format),b=d.altFormats,g=d.altFormatsArray,c=0,a;if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}return h},formatDate:function(a){return Ext.isDate(a)?Ext.Date.dateFormat(a,this.format):a},createPicker:function(){var a=this,b=Ext.String.format;return new Ext.picker.Date({pickerField:a,ownerCt:a.ownerCt,renderTo:document.body,floating:true,hidden:true,focusOnShow:true,minDate:a.minValue,maxDate:a.maxValue,disabledDatesRE:a.disabledDatesRE,disabledDatesText:a.disabledDatesText,disabledDays:a.disabledDays,disabledDaysText:a.disabledDaysText,format:a.format,showToday:a.showToday,startDay:a.startDay,minText:b(a.minText,a.formatDate(a.minValue)),maxText:b(a.maxText,a.formatDate(a.maxValue)),listeners:{scope:a,select:a.onSelect},keyNavConfig:{esc:function(){a.collapse()}}})},onDownArrow:function(a){this.callParent(arguments);if(this.isExpanded){this.getPicker().focus()}},onSelect:function(a,c){var b=this;b.setValue(c);b.fireEvent("select",b,c);b.collapse()},onExpand:function(){var a=this.getValue();this.picker.setValue(Ext.isDate(a)?a:new Date())},onCollapse:function(){this.focus(false,60)},beforeBlur:function(){var c=this,a=c.parseDate(c.getRawValue()),b=c.focusTask;if(b){b.cancel()}if(a){c.setValue(a)}}},0,["datefield"],["field","trigger","textfield","pickerfield","component","datefield","box","triggerfield"],{field:true,trigger:true,textfield:true,pickerfield:true,component:true,datefield:true,box:true,triggerfield:true},["widget.datefield"],0,[Ext.form.field,"Date",Ext.form,"DateField",Ext.form,"Date"],0));(Ext.cmd.derive("Ext.form.field.FileButton",Ext.button.Button,{childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl","fileInputEl"],inputCls:Ext.baseCSSPrefix+"form-file-input",cls:Ext.baseCSSPrefix+"form-file-btn",preventDefault:false,renderTpl:['<span id="{id}-btnWrap" class="{baseCls}-wrap','<tpl if="splitCls"> {splitCls}</tpl>','{childElCls}" unselectable="on">','<span id="{id}-btnEl" class="{baseCls}-button">','<span id="{id}-btnInnerEl" class="{baseCls}-inner {innerCls}','{childElCls}" unselectable="on">',"{text}","</span>",'<span role="img" id="{id}-btnIconEl" class="{baseCls}-icon-el {iconCls}','{childElCls} {glyphCls}" unselectable="on" style="','<tpl if="iconUrl">background-image:url({iconUrl});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl><tpl if="iconCls || iconUrl">&#160;</tpl>',"</span>","</span>","</span>",'<input id="{id}-fileInputEl" class="{childElCls} {inputCls}" type="file" size="1" name="{inputName}">'],getTemplateArgs:function(){var a=this.callParent();a.inputCls=this.inputCls;a.inputName=this.inputName;return a},afterRender:function(){var a=this;a.callParent(arguments);a.fileInputEl.on("change",a.fireChange,a)},fireChange:function(a){this.fireEvent("change",this,a,this.fileInputEl.dom.value)},createFileInput:function(a){var b=this;b.fileInputEl=b.el.createChild({name:b.inputName,id:!a?b.id+"-fileInputEl":undefined,cls:b.inputCls,tag:"input",type:"file",size:1});b.fileInputEl.on("change",b.fireChange,b)},reset:function(a){if(a){this.fileInputEl.remove()}this.createFileInput(!a)},restoreInput:function(a){this.fileInputEl.remove();a=Ext.get(a);this.el.appendChild(a);this.fileInputEl=a},onDisable:function(){this.callParent();this.fileInputEl.dom.disabled=true},onEnable:function(){this.callParent();this.fileInputEl.dom.disabled=false}},0,["filebutton"],["filebutton","button","component","box"],{filebutton:true,button:true,component:true,box:true},["widget.filebutton"],0,[Ext.form.field,"FileButton"],0));(Ext.cmd.derive("Ext.form.field.File",Ext.form.field.Trigger,{alternateClassName:["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],buttonText:"Browse...",buttonOnly:false,buttonMargin:3,clearOnSubmit:true,extraFieldBodyCls:Ext.baseCSSPrefix+"form-file-wrap",readOnly:true,triggerNoEditCls:"",componentLayout:"triggerfield",childEls:["browseButtonWrap"],onRender:function(){var a=this,c=a.id,b;a.callParent(arguments);b=a.inputEl;b.dom.name="";a.button=new Ext.form.field.FileButton(Ext.apply({renderTo:c+"-browseButtonWrap",ownerCt:a,ownerLayout:a.componentLayout,id:c+"-button",ui:a.ui,disabled:a.disabled,text:a.buttonText,style:a.buttonOnly?"":a.getButtonMarginProp()+a.buttonMargin+"px",inputName:a.getName(),listeners:{scope:a,change:a.onFileChange}},a.buttonConfig));a.fileInputEl=a.button.fileInputEl;if(a.buttonOnly){a.inputCell.setDisplayed(false)}a.browseButtonWrap.dom.style.width=(a.browseButtonWrap.dom.lastChild.offsetWidth+a.button.getEl().getMargin("lr"))+"px";if(Ext.isIE){a.button.getEl().repaint()}},getTriggerMarkup:function(){return'<td id="'+this.id+'-browseButtonWrap"></td>'},onFileChange:function(a,c,b){this.lastValue=null;Ext.form.field.File.superclass.setValue.call(this,b)},setValue:Ext.emptyFn,reset:function(){var b=this,a=b.clearOnSubmit;if(b.rendered){b.button.reset(a);b.fileInputEl=b.button.fileInputEl;if(a){b.inputEl.dom.value=""}}b.callParent()},onShow:function(){this.callParent();this.button.updateLayout()},onDisable:function(){this.callParent();this.button.disable()},onEnable:function(){this.callParent();this.button.enable()},isFileUpload:function(){return true},extractFileInput:function(){var a=this.button.fileInputEl.dom;this.reset();return a},restoreInput:function(b){var a=this.button;a.restoreInput(b);this.fileInputEl=a.fileInputEl},onDestroy:function(){Ext.destroyMembers(this,"button");delete this.fileInputEl;this.callParent()},getButtonMarginProp:function(){return"margin-left:"}},0,["fileuploadfield","filefield"],["field","trigger","textfield","component","fileuploadfield","filefield","box","triggerfield"],{field:true,trigger:true,textfield:true,component:true,fileuploadfield:true,filefield:true,box:true,triggerfield:true},["widget.filefield","widget.fileuploadfield"],0,[Ext.form.field,"File",Ext.form,"FileUploadField",Ext.ux.form,"FileUploadField",Ext.form,"File"],0));(Ext.cmd.derive("Ext.form.field.Hidden",Ext.form.field.Base,{alternateClassName:"Ext.form.Hidden",inputType:"hidden",hideLabel:true,hidden:true,initComponent:function(){this.formItemCls+="-hidden";this.callParent()},isEqual:function(b,a){return this.isEqualAsString(b,a)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,["hidden","hiddenfield"],["field","component","hidden","hiddenfield","box"],{field:true,component:true,hidden:true,hiddenfield:true,box:true},["widget.hidden","widget.hiddenfield"],0,[Ext.form.field,"Hidden",Ext.form,"Hidden"],0));(Ext.cmd.derive("Ext.picker.Color",Ext.Component,{alternateClassName:"Ext.ColorPalette",componentCls:Ext.baseCSSPrefix+"color-picker",selectedCls:Ext.baseCSSPrefix+"color-picker-selected",itemCls:Ext.baseCSSPrefix+"color-picker-item",value:null,clickEvent:"click",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],colorRe:/(?:^|\s)color-(.{6})(?:\s|$)/,renderTpl:['<tpl for="colors">','<a href="#" class="color-{.} {parent.itemCls}" hidefocus="on">','<span class="{parent.itemCls}-inner" style="background:#{.}">&#160;</span>',"</a>","</tpl>"],initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("select");if(a.handler){a.on("select",a.handler,a.scope,true)}},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{itemCls:a.itemCls,colors:a.colors})},onRender:function(){var b=this,a=b.clickEvent;b.callParent(arguments);b.mon(b.el,a,b.handleClick,b,{delegate:"a"});if(a!="click"){b.mon(b.el,"click",Ext.emptyFn,b,{delegate:"a",stopEvent:true})}},afterRender:function(){var a=this,b;a.callParent(arguments);if(a.value){b=a.value;a.value=null;a.select(b,true)}},handleClick:function(c,d){var b=this,a;c.stopEvent();if(!b.disabled){a=d.className.match(b.colorRe)[1];b.select(a.toUpperCase())}},select:function(b,a){var d=this,g=d.selectedCls,e=d.value,c;b=b.replace("#","");if(!d.rendered){d.value=b;return}if(b!=e||d.allowReselect){c=d.el;if(d.value){c.down("a.color-"+e).removeCls(g)}c.down("a.color-"+b).addCls(g);d.value=b;if(a!==true){d.fireEvent("select",d,b)}}},clear:function(){var b=this,c=b.value,a;if(c&&b.rendered){a=b.el.down("a.color-"+c);a.removeCls(b.selectedCls)}b.value=null},getValue:function(){return this.value||null}},0,["colorpicker"],["component","box","colorpicker"],{component:true,box:true,colorpicker:true},["widget.colorpicker"],0,[Ext.picker,"Color",Ext,"ColorPalette"],0));(Ext.cmd.derive("Ext.layout.component.field.HtmlEditor",Ext.layout.component.field.FieldContainer,{type:"htmleditor",naturalHeight:150,naturalWidth:300,beginLayout:function(b){var a=this.owner,c;if(Ext.isGecko){c=a.textareaEl.dom;this.lastValue=c.value;c.value=""}this.callParent(arguments);b.toolbarContext=b.context.getCmp(a.toolbar);b.inputCmpContext=b.context.getCmp(a.inputCmp);b.textAreaContext=b.getEl("textareaEl");b.iframeContext=b.getEl("iframeEl")},beginLayoutCycle:function(h){var g=this,c=h.widthModel,b=h.heightModel,a=g.owner,e=a.iframeEl,d=a.textareaEl;g.callParent(arguments);if(c.shrinkWrap){e.setStyle("width","");d.setStyle("width","")}else{if(c.natural){h.bodyCellContext.setWidth(g.naturalWidth)}}if(b.natural||b.shrinkWrap){e.setHeight(g.naturalHeight);d.setHeight(g.naturalHeight)}},finishedLayout:function(){var a=this.owner;this.callParent(arguments);if(Ext.isIE9m&&Ext.isIEQuirks){a.el.repaint()}if(Ext.isGecko){a.textareaEl.dom.value=this.lastValue}},publishOwnerWidth:function(b,a){this.callParent(arguments);a-=b.inputCmpContext.getBorderInfo().width;b.textAreaContext.setWidth(a);b.iframeContext.setWidth(a)},publishInnerWidth:function(e,c){var b=e.inputCmpContext.getBorderInfo().width,d=Ext.isStrict&&Ext.isIE8m,a=e.widthModel.natural;this.callParent(arguments);c=e.bodyCellContext.props.width-b;if(a){if(d){c-=2}e.textAreaContext.setWidth(c);e.iframeContext.setWidth(c)}else{if(d){e.textAreaContext.setWidth(c)}}},publishInnerHeight:function(c,a){var d=c.toolbarContext.getProp("height"),b=this.owner.sourceEditMode;this.callParent(arguments);a=c.bodyCellContext.props.height;if(d!==undefined){a-=d+c.inputCmpContext.getFrameInfo().height;if(Ext.isIE8&&Ext.isStrict){a-=2}else{if(Ext.isIEQuirks&&(Ext.isIE8||Ext.isIE9)){a-=4}}c.iframeContext.setHeight(a);c.textAreaContext.setHeight(a)}else{this.done=false}}},0,0,0,0,["layout.htmleditor"],0,[Ext.layout.component.field,"HtmlEditor"],0));(Ext.cmd.derive("Ext.form.field.HtmlEditor",Ext.form.FieldContainer,{alternateClassName:"Ext.form.HtmlEditor",componentLayout:"htmleditor",componentTpl:["{beforeTextAreaTpl}",'<textarea id="{id}-textareaEl" name="{name}" tabIndex="-1" {inputAttrTpl}',' class="{textareaCls}" autocomplete="off">',"{[Ext.util.Format.htmlEncode(values.value)]}","</textarea>","{afterTextAreaTpl}","{beforeIFrameTpl}",'<iframe id="{id}-iframeEl" name="{iframeName}" frameBorder="0" {iframeAttrTpl}',' src="{iframeSrc}" class="{iframeCls}"></iframe>',"{afterIFrameTpl}",{disableFormats:true}],stretchInputElFixed:true,subTplInsertions:["beforeTextAreaTpl","afterTextAreaTpl","beforeIFrameTpl","afterIFrameTpl","iframeAttrTpl","inputAttrTpl"],enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http://",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",extraFieldBodyCls:Ext.baseCSSPrefix+"html-editor-wrap",initialized:false,activated:false,sourceEditMode:false,iframePad:3,hideMode:"offsets",maskOnDisable:true,containerElCls:Ext.baseCSSPrefix+"html-editor-container",initComponent:function(){var a=this;a.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");a.items=[a.createToolbar(),a.createInputCmp()];a.layout={type:"vbox",align:"stretch"};a.callParent(arguments);a.initField()},createInputCmp:function(){this.inputCmp=Ext.widget(this.getInputCmpCfg());return this.inputCmp},getInputCmpCfg:function(){var a=this,c=a.id+"-inputCmp",b={id:c,name:a.name,textareaCls:Ext.baseCSSPrefix+"hidden",value:a.value,iframeName:Ext.id(),iframeSrc:Ext.SSL_SECURE_URL,iframeCls:Ext.baseCSSPrefix+"htmleditor-iframe"};a.getInsertionRenderData(b,a.subTplInsertions);return{flex:1,xtype:"component",tpl:a.getTpl("componentTpl"),childEls:["iframeEl","textareaEl"],id:c,cls:Ext.baseCSSPrefix+"html-editor-input",data:b}},createToolbar:function(){this.toolbar=Ext.widget(this.getToolbarCfg());return this.toolbar},getToolbarCfg:function(){var h=this,b=[],e,a=Ext.quickTipsActive&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,j,g;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:h,handler:l||h.relayBtnCmd,clickEvent:"mousedown",tooltip:a?h.buttonTips[m]||g:g,overflowText:h.buttonTips[m].title||g,tabIndex:-1}}if(h.enableFont&&!Ext.isSafari2){j=Ext.widget("component",{itemId:"fontSelect",renderTpl:['<select id="{id}-selectEl" class="'+d+'font-select">',"</select>"],childEls:["selectEl"],afterRender:function(){h.fontSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.prototype.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.prototype.onEnable.apply(this,arguments)},listeners:{change:function(){h.win.focus();h.relayCmd("fontName",h.fontSelect.dom.value);h.deferFocus()},element:"selectEl"}});b.push(j,"-")}if(h.enableFormat){b.push(c("bold"),c("italic"),c("underline"))}if(h.enableFontSize){b.push("-",c("increasefontsize",false,h.adjustFont),c("decreasefontsize",false,h.adjustFont))}if(h.enableColors){b.push("-",{itemId:"forecolor",cls:d+"btn-icon",iconCls:d+"edit-forecolor",overflowText:h.buttonTips.forecolor.title,tooltip:a?h.buttonTips.forecolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,clickEvent:"mousedown",handler:function(l,k){h.relayCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+k:k);this.up("menu").hide()}}]})},{itemId:"backcolor",cls:d+"btn-icon",iconCls:d+"edit-backcolor",overflowText:h.buttonTips.backcolor.title,tooltip:a?h.buttonTips.backcolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,clickEvent:"mousedown",handler:function(l,k){if(Ext.isGecko){h.execCmd("useCSS",false);h.execCmd("hilitecolor","#"+k);h.execCmd("useCSS",true);h.deferFocus()}else{h.relayCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE||Ext.isOpera?"#"+k:k)}this.up("menu").hide()}}]})})}if(h.enableAlignments){b.push("-",c("justifyleft"),c("justifycenter"),c("justifyright"))}if(!Ext.isSafari2){if(h.enableLinks){b.push("-",c("createlink",false,h.createLink))}if(h.enableLists){b.push("-",c("insertorderedlist"),c("insertunorderedlist"))}if(h.enableSourceEdit){b.push("-",c("sourceedit",true,function(k){h.toggleSourceEdit(!h.sourceEditMode)}))}}for(e=0;e<b.length;e++){if(b[e].itemId!=="sourceedit"){b[e].disabled=true}}return{xtype:"toolbar",defaultButtonUI:h.defaultButtonUI,cls:Ext.baseCSSPrefix+"html-editor-tb",enableOverflow:true,items:b,listeners:{click:function(k){k.preventDefault()},element:"el"}}},getMaskTarget:function(){return Ext.isGecko?this.inputCmp.el:this.bodyEl},setReadOnly:function(e){var d=this,c=d.textareaEl,b=d.iframeEl,a;d.readOnly=e;if(c){c.dom.readOnly=e}if(d.initialized){a=d.getEditorBody();if(Ext.isIE){b.setDisplayed(false);a.contentEditable=!e;b.setDisplayed(true)}else{d.setDesignMode(!e)}if(a){a.style.cursor=e?"default":"text"}d.disableItems(e)}},getDocMarkup:function(){var b=this,a=b.iframeEl.getHeight()-b.iframePad*2,c=Ext.isIE8m;return Ext.String.format((c?"":"<!DOCTYPE html>")+'<html><head><style type="text/css">'+(Ext.isOpera?"p{margin:0}":"")+"body{border:0;margin:0;padding:{0}px;direction:"+(b.rtl?"rtl;":"ltr;")+(c?Ext.emptyString:"min-")+"height:{1}px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;cursor:text;background-color:white;"+(Ext.isIE?"":"font-size:12px;font-family:{2}")+"}</style></head><body></body></html>",b.iframePad,a,b.defaultFont)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return(!Ext.isIE&&this.iframeEl.dom.contentDocument)||this.getWin().document},getWin:function(){return Ext.isIE?this.iframeEl.dom.contentWindow:window.frames[this.iframeEl.dom.name]},initDefaultFont:function(){var h=this,a=0,j,b,k,e,d,g,c;if(!h.defaultFont){b=h.textareaEl.getStyle("font-family");b=Ext.String.capitalize(b.split(",")[0]);j=Ext.Array.clone(h.fontFamilies);Ext.Array.include(j,b);j.sort();h.defaultFont=b;k=h.down("#fontSelect").selectEl.dom;for(d=0,g=j.length;d<g;++d){b=j[d];c=b.toLowerCase();e=new Option(b,c);if(b==h.defaultFont){a=d}e.style.fontFamily=c;if(Ext.isIE){k.add(e)}else{k.options.add(e)}}k.options[a].selected=true}},isEqual:function(b,a){return this.isEqualAsString(b,a)},afterRender:function(){var b=this,a=b.inputCmp;b.callParent(arguments);b.iframeEl=a.iframeEl;b.textareaEl=a.textareaEl;b.inputEl=b.iframeEl;if(b.enableFont){b.initDefaultFont()}b.monitorTask=Ext.TaskManager.start({run:b.checkDesignMode,scope:b,interval:100});b.relayCmd("fontName",b.defaultFont)},initFrameDoc:function(){var b=this,c,a;Ext.TaskManager.stop(b.monitorTask);c=b.getDoc();b.win=b.getWin();c.open();c.write(b.getDocMarkup());c.close();a={run:function(){var d=b.getDoc();if(d.body||d.readyState==="complete"){Ext.TaskManager.stop(a);b.setDesignMode(true);Ext.defer(b.initEditor,10,b)}},interval:10,duration:10000,scope:b};Ext.TaskManager.start(a)},checkDesignMode:function(){var a=this,b=a.getDoc();if(b&&(!b.editorInitialized||a.getDesignMode()!=="on")){a.initFrameDoc()}},setDesignMode:function(c){var a=this,b=a.getDoc();if(b){if(a.readOnly){c=false}b.designMode=(/on|true/i).test(String(c).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();return !a?"":String(a.designMode).toLowerCase()},disableItems:function(d){var b=this.getToolbar().items.items,c,a=b.length,e;for(c=0;c<a;c++){e=b[c];if(e.getItemId()!=="sourceedit"){e.setDisabled(d)}}},toggleSourceEdit:function(b){var g=this,d=g.iframeEl,a=g.textareaEl,e=Ext.baseCSSPrefix+"hidden",c=g.getToolbar().getComponent("sourceedit");if(!Ext.isBoolean(b)){b=!g.sourceEditMode}g.sourceEditMode=b;if(c.pressed!==b){c.toggle(b)}if(b){g.disableItems(true);g.syncValue();d.addCls(e);a.removeCls(e);a.dom.removeAttribute("tabIndex");a.focus();g.inputEl=a}else{if(g.initialized){g.disableItems(g.readOnly)}g.pushValue();d.removeCls(e);a.addCls(e);a.dom.setAttribute("tabIndex",-1);g.deferFocus();g.inputEl=d}g.fireEvent("editmodechange",g,b);g.updateLayout()},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!=="http://"){this.relayCmd("createlink",a)}},clearInvalid:Ext.emptyFn,setValue:function(d){var c=this,b=c.textareaEl,a=c.inputCmp;c.mixins.field.setValue.call(c,d);if(d===null||d===undefined){d=""}if(b){b.dom.value=d}c.pushValue();if(!c.rendered&&c.inputCmp){c.inputCmp.data.value=d}return c},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|Apple-tab-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)===parseInt(this.defaultValue.replace(/\D/g,""),10)){a=a.substring(1)}return a},syncValue:function(){var g=this,b,h,d,a,c,e;if(g.initialized){b=g.getEditorBody();d=b.innerHTML;e=g.textareaEl.dom;if(Ext.isWebKit){a=b.getAttribute("style");c=a.match(/text-align:(.*?);/i);if(c&&c[1]){d='<div style="'+c[0]+'">'+d+"</div>"}}d=g.cleanHtml(d);if(g.fireEvent("beforesync",g,d)!==false){if(Ext.isGecko&&e.value===""&&d==="<br>"){d=""}if(e.value!==d){e.value=d;h=true}g.fireEvent("sync",g,d);if(h){g.checkChange()}}}},getValue:function(){var a=this,b;if(!a.sourceEditMode){a.syncValue()}b=a.rendered?a.textareaEl.dom.value:a.value;a.value=b;return b},pushValue:function(){var b=this,a;if(b.initialized){a=b.textareaEl.dom.value||"";if(!b.activated&&a.length<1){a=b.defaultValue}if(b.fireEvent("beforepush",b,a)!==false){b.getEditorBody().innerHTML=a;if(Ext.isGecko){b.setDesignMode(false);b.setDesignMode(true)}b.fireEvent("push",b,a)}}},deferFocus:function(){this.focus(false,true)},getFocusEl:function(){var a=this,b=a.win;return b&&!a.sourceEditMode?b:a.textareaEl},focus:function(d,b){var c=this,e,a;if(b){if(!c.focusTask){c.focusTask=new Ext.util.DelayedTask(c.focus)}c.focusTask.delay(Ext.isNumber(b)?b:10,null,c,[d,false])}else{if(d){if(c.textareaEl&&c.textareaEl.dom){e=c.textareaEl.dom.value}if(e&&e.length){c.execCmd("selectall",true)}}a=c.getFocusEl();if(a&&a.focus){a.focus()}}return c},initEditor:function(){try{var g=this,d=g.getEditorBody(),b=g.textareaEl.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),j,c;b["background-attachment"]="fixed";d.bgProperties="fixed";Ext.DomHelper.applyStyles(d,b);j=g.getDoc();if(j){try{Ext.EventManager.removeAll(j)}catch(h){}}c=Ext.Function.bind(g.onEditorEvent,g);Ext.EventManager.on(j,{mousedown:c,dblclick:c,click:c,keyup:c,buffer:100});c=g.onRelayedEvent;Ext.EventManager.on(j,{mousedown:c,mousemove:c,mouseup:c,click:c,dblclick:c,scope:g});if(Ext.isGecko){Ext.EventManager.on(j,"keypress",g.applyCommand,g)}if(g.fixKeys){Ext.EventManager.on(j,"keydown",g.fixKeys,g)}if(g.fixKeysAfter){Ext.EventManager.on(j,"keyup",g.fixKeysAfter,g)}if(Ext.isIE9&&Ext.isStrict){Ext.EventManager.on(j.documentElement,"focus",g.focus,g)}if(Ext.isIE8m||(Ext.isIE9&&!Ext.isStrict)){Ext.EventManager.on(j,"focusout",function(){g.savedSelection=j.selection.type!=="None"?j.selection.createRange():null},g);Ext.EventManager.on(j,"focusin",function(){if(g.savedSelection){g.savedSelection.select()}},g)}Ext.EventManager.onWindowUnload(g.beforeDestroy,g);j.editorInitialized=true;g.initialized=true;g.pushValue();g.setReadOnly(g.readOnly);g.fireEvent("initialize",g)}catch(a){}},beforeDestroy:function(){var a=this,d=a.monitorTask,c,g;if(d){Ext.TaskManager.stop(d)}if(a.rendered){Ext.EventManager.removeUnloadListener(a.beforeDestroy,a);try{c=a.getDoc();if(c){Ext.EventManager.removeAll(Ext.fly(c));for(g in c){if(c.hasOwnProperty&&c.hasOwnProperty(g)){delete c[g]}}}}catch(b){}delete a.iframeEl;delete a.textareaEl;delete a.toolbar;delete a.inputCmp}a.callParent()},onRelayedEvent:function(c){var b=this.iframeEl,d=Ext.Element.getTrueXY(b),e=c.getXY(),a=Ext.EventManager.getPageXY(c.browserEvent);c.xy=[d[0]+a[0],d[1]+a[1]];c.injectEvent(b);c.xy=e},onFirstFocus:function(){var c=this,b,a;c.activated=true;c.disableItems(c.readOnly);if(Ext.isGecko){c.win.focus();b=c.win.getSelection();if(!b.focusNode||b.focusNode.nodeType!==3){a=b.getRangeAt(0);a.selectNodeContents(c.getEditorBody());a.collapse(true);c.deferFocus()}try{c.execCmd("useCSS",true);c.execCmd("styleWithCSS",false)}catch(d){}}c.fireEvent("activate",c)},adjustFont:function(d){var e=d.getItemId()==="increasefontsize"?1:-1,c=this.getDoc().queryCommandValue("FontSize")||"2",a=Ext.isString(c)&&c.indexOf("px")!==-1,b;c=parseInt(c,10);if(a){if(c<=10){c=1+e}else{if(c<=13){c=2+e}else{if(c<=16){c=3+e}else{if(c<=18){c=4+e}else{if(c<=24){c=5+e}else{c=6+e}}}}}c=Ext.Number.constrain(c,1,6)}else{b=Ext.isSafari;if(b){e*=2}c=Math.max(1,c+e)+(b?"px":0)}this.relayCmd("FontSize",c)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){var j=this,e,c,d,k,b,g,a,h;if(j.readOnly){return}if(!j.activated){j.onFirstFocus();return}d=j.getToolbar().items.map;k=j.getDoc();if(j.enableFont&&!Ext.isSafari2){g=k.queryCommandValue("fontName");b=(g?g.split(",")[0].replace(/^'/,"").replace(/'$/,""):j.defaultFont).toLowerCase();a=j.fontSelect.dom;if(b!==a.value||b!=g){a.value=b}}function m(){var l;for(e=0,c=arguments.length,b;e<c;e++){b=arguments[e];try{l=k.queryCommandState(b)}catch(n){l=false}d[b].toggle(l)}}if(j.enableFormat){m("bold","italic","underline")}if(j.enableAlignments){m("justifyleft","justifycenter","justifyright")}if(!Ext.isSafari2&&j.enableLists){m("insertorderedlist","insertunorderedlist")}h=j.toolbar.query("menu");for(e=0;e<h.length;e++){h[e].hide()}j.syncValue()},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(b,a){Ext.defer(function(){var c=this;if(!this.isDestroyed){c.win.focus();c.execCmd(b,a);c.updateToolbar()}},10,this)},execCmd:function(c,b){var a=this,d=a.getDoc();d.execCommand(c,false,(b==undefined?null:b));a.syncValue()},applyCommand:function(d){if(d.ctrlKey){var a=this,g=d.getCharCode(),b;if(g>0){g=String.fromCharCode(g);switch(g){case"b":b="bold";break;case"i":b="italic";break;case"u":b="underline";break}if(b){a.win.focus();a.execCmd(b);a.deferFocus();d.preventDefault()}}}},insertAtCursor:function(c){var b=this,a;if(b.activated){b.win.focus();if(Ext.isIE){a=b.getDoc().selection.createRange();if(a){a.pasteHTML(c);b.syncValue();b.deferFocus()}}else{b.execCmd("InsertHTML",c);b.deferFocus()}}},fixKeys:(function(){if(Ext.isIE){return function(h){var c=this,b=h.getKey(),g=c.getDoc(),j=c.readOnly,a,d;if(b===h.TAB){h.stopEvent();if(!j){a=g.selection.createRange();if(a){if(a.collapse){a.collapse(true);a.pasteHTML("&#160;&#160;&#160;&#160;")}c.deferFocus()}}}else{if(b===h.ENTER){if(!j){a=g.selection.createRange();if(a){d=a.parentElement();if(!d||d.tagName.toLowerCase()!=="li"){h.stopEvent();a.pasteHTML("<br />");a.collapse(false);a.select()}}}}}}}if(Ext.isOpera){return function(c){var b=this,a=c.getKey(),d=b.readOnly;if(a===c.TAB){c.stopEvent();if(!d){b.win.focus();b.execCmd("InsertHTML","&#160;&#160;&#160;&#160;");b.deferFocus()}}}}return null}()),fixKeysAfter:(function(){if(Ext.isIE){return function(d){var b=this,a=d.getKey(),c=b.getDoc(),h=b.readOnly,g;if(!h&&(a===d.BACKSPACE||a===d.DELETE)){g=c.body.innerHTML;if(g==="<p>&nbsp;</p>"||g==="<P>&nbsp;</P>"){c.body.innerHTML=""}}}}return null}()),getToolbar:function(){return this.toolbar},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}},0,["htmleditor"],["htmleditor","component","container","fieldcontainer","box"],{htmleditor:true,component:true,container:true,fieldcontainer:true,box:true},["widget.htmleditor"],[["field",Ext.form.field.Field]],[Ext.form.field,"HtmlEditor",Ext.form,"HtmlEditor"],0));(Ext.cmd.derive("Ext.picker.Time",Ext.view.BoundList,{increment:15,format:"g:i A",displayField:"disp",initDate:[2008,0,1],componentCls:Ext.baseCSSPrefix+"timepicker",loadMask:false,initComponent:function(){var c=this,a=Ext.Date,b=a.clearTime,d=c.initDate;c.absMin=b(new Date(d[0],d[1],d[2]));c.absMax=a.add(b(new Date(d[0],d[1],d[2])),"mi",(24*60)-1);c.store=c.createStore();c.store.addFilter(c.rangeFilter=new Ext.util.Filter({id:"time-picker-filter"}),false);c.updateList();c.callParent()},setMinValue:function(a){this.minValue=a;this.updateList()},setMaxValue:function(a){this.maxValue=a;this.updateList()},normalizeDate:function(a){var b=this.initDate;a.setFullYear(b[0],b[1],b[2]);return a},updateList:function(){var c=this,b=c.normalizeDate(c.minValue||c.absMin),a=c.normalizeDate(c.maxValue||c.absMax);c.rangeFilter.setFilterFn(function(d){var e=d.get("date");return e>=b&&e<=a});c.store.filter()},createStore:function(){var d=this,c=Ext.Date,e=[],b=d.absMin,a=d.absMax;while(b<=a){e.push({disp:c.dateFormat(b,d.format),date:b});b=c.add(b,"mi",d.increment)}return new Ext.data.Store({fields:["disp","date"],data:e})},focusNode:function(a){return false}},0,["timepicker"],["timepicker","component","boundlist","box","dataview"],{timepicker:true,component:true,boundlist:true,box:true,dataview:true},["widget.timepicker"],0,[Ext.picker,"Time"],0));(Ext.cmd.derive("Ext.form.field.Time",Ext.form.field.ComboBox,{alternateClassName:["Ext.form.TimeField","Ext.form.Time"],triggerCls:Ext.baseCSSPrefix+"form-time-trigger",minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",increment:15,pickerMaxHeight:300,selectOnTab:true,snapToIncrement:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",ignoreSelection:0,queryMode:"local",displayField:"disp",valueField:"date",initComponent:function(){var c=this,b=c.minValue,a=c.maxValue;if(b){c.setMinValue(b)}if(a){c.setMaxValue(a)}c.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : this.formatDate(values["'+c.displayField+'"])]}<tpl if="xindex < xcount">'+c.delimiter+"</tpl></tpl>",{formatDate:Ext.Function.bind(c.formatDate,c)});this.callParent()},transformOriginalValue:function(a){if(Ext.isString(a)){return this.rawToValue(a)}return a},isEqual:function(b,a){return Ext.Date.isEqual(b,a)},setMinValue:function(c){var b=this,a=b.picker;b.setLimit(c,true);if(a){a.setMinValue(b.minValue)}},setMaxValue:function(c){var b=this,a=b.picker;b.setLimit(c,false);if(a){a.setMaxValue(b.maxValue)}},setLimit:function(b,g){var a=this,e,c;if(Ext.isString(b)){e=a.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){c=Ext.Date.clearTime(new Date(a.initDate));c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}else{c=null}a[g?"minValue":"maxValue"]=c},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},getErrors:function(d){var b=this,g=Ext.String.format,h=b.callParent(arguments),c=b.minValue,e=b.maxValue,a;d=b.formatDate(d||b.processRawValue(b.getRawValue()));if(d===null||d.length<1){return h}a=b.parseDate(d);if(!a){h.push(g(b.invalidText,d,Ext.Date.unescapeFormat(b.format)));return h}if(c&&a<c){h.push(g(b.minText,b.formatDate(c)))}if(e&&a>e){h.push(g(b.maxText,b.formatDate(e)))}return h},formatDate:function(){return Ext.form.field.Date.prototype.formatDate.apply(this,arguments)},parseDate:function(e){var d=this,h=e,b=d.altFormats,g=d.altFormatsArray,c=0,a;if(e&&!Ext.isDate(e)){h=d.safeParse(e,d.format);if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}}if(h&&d.snapToIncrement){h=new Date(Ext.Number.snap(h.getTime(),d.increment*60*1000))}return h},safeParse:function(e,g){var d=this,b=Ext.Date,c,a=null;if(b.formatContainsDateInfo(g)){a=b.parse(e,g)}else{c=b.parse(d.initDate+" "+e,d.initDateFormat+" "+g);if(c){a=c}}return a},getSubmitValue:function(){var a=this,c=a.submitFormat||a.format,b=a.getValue();return b?Ext.Date.format(b,c):null},createPicker:function(){var b=this,a;b.listConfig=Ext.apply({xtype:"timepicker",selModel:{mode:"SINGLE"},cls:undefined,minValue:b.minValue,maxValue:b.maxValue,increment:b.increment,format:b.format,maxHeight:b.pickerMaxHeight},b.listConfig);a=b.callParent();b.bindStore(a.store);return a},onItemClick:function(b,a){var d=this,c=b.getSelectionModel().getSelection();if(c.length>0){c=c[0];if(c&&Ext.Date.isEqual(a.get("date"),c.get("date"))){d.collapse()}}},onListSelectionChange:function(b,d){if(d.length){var a=this,c=d[0].get("date");if(!a.ignoreSelection){a.skipSync=true;a.setValue(c);a.skipSync=false;a.fireEvent("select",a,c);a.picker.clearHighlight();a.collapse();a.inputEl.focus()}}},syncSelection:function(){var k=this,h=k.picker,c,g,l,b,j,e,a;if(h&&!k.skipSync){h.clearHighlight();l=k.getValue();g=h.getSelectionModel();k.ignoreSelection++;if(l===null){g.deselectAll()}else{if(Ext.isDate(l)){b=h.store.data.items;e=b.length;for(j=0;j<e;j++){a=b[j];if(Ext.Date.isEqual(a.get("date"),l)){c=a;break}}g.select(c)}}k.ignoreSelection--}},postBlur:function(){var a=this,b=a.getValue();a.callParent(arguments);if(a.wasValid&&b){a.setRawValue(a.formatDate(b))}},setValue:function(){this.getPicker();return this.callParent(arguments)},getValue:function(){return this.parseDate(this.callParent(arguments))}},0,["timefield"],["field","trigger","combobox","timefield","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,timefield:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.timefield"],0,[Ext.form.field,"Time",Ext.form,"TimeField",Ext.form,"Time"],0));(Ext.cmd.derive("Ext.grid.CellContext",Ext.Base,{isCellContext:true,constructor:function(a){this.view=a},setPosition:function(c,a){var b=this;if(arguments.length===1){if(c.view){b.view=c.view}a=c.column;c=c.row}b.setRow(c);b.setColumn(a);return b},setRow:function(b){var a=this;if(b!==undefined){if(typeof b==="number"){a.row=Math.max(Math.min(b,a.view.dataSource.getCount()-1),0);a.record=a.view.dataSource.getAt(b)}else{if(b.isModel){a.record=b;a.row=a.view.indexOf(b)}else{if(b.tagName){a.record=a.view.getRecord(b);a.row=a.view.indexOf(a.record)}}}}},setColumn:function(b){var c=this,a=c.view.ownerCt.columnManager;if(b!==undefined){if(typeof b==="number"){c.column=b;c.columnHeader=a.getHeaderAtIndex(b)}else{if(b.isHeader){c.columnHeader=b;c.column=a.getHeaderIndex(b)}}}}},1,0,0,0,0,0,[Ext.grid,"CellContext"],0));(Ext.cmd.derive("Ext.grid.CellEditor",Ext.Editor,{constructor:function(a){a=Ext.apply({},a);if(a.field){a.field.monitorTab=false}this.callParent([a])},onShow:function(){var a=this,b=a.boundEl.first();if(b){if(a.isForTree){b=b.child(a.treeNodeSelector)}b.hide()}a.callParent(arguments)},onHide:function(){var a=this,b=a.boundEl.first();if(b){if(a.isForTree){b=b.child(a.treeNodeSelector)}b.show()}a.callParent(arguments)},afterRender:function(){var a=this,b=a.field;a.callParent(arguments);if(b.isCheckbox){b.mon(b.inputEl,{mousedown:a.onCheckBoxMouseDown,click:a.onCheckBoxClick,scope:a})}},onCheckBoxMouseDown:function(){this.completeEdit=Ext.emptyFn},onCheckBoxClick:function(){delete this.completeEdit;this.field.focus(false,10)},realign:function(a){var h=this,e=h.boundEl,j=e.first(),d=e.getWidth(),g=Ext.Array.clone(h.offsets),b=h.grid,c;if(h.isForTree){c=h.getTreeNodeOffset(j);d-=Math.abs(c);g[0]+=c}if(b.columnLines){d-=e.getBorderWidth("rl")}if(a===true){h.field.setWidth(d)}h.alignTo(j,h.alignment,g)},getTreeNodeOffset:function(a){return a.child(this.treeNodeSelector).getOffsetsTo(a)[0]},onEditorTab:function(b){var a=this.field;if(a.onEditorTab){a.onEditorTab(b)}},alignment:"l-l",hideEl:false,cls:Ext.baseCSSPrefix+"small-editor "+Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-cell-editor",treeNodeSelector:"."+Ext.baseCSSPrefix+"tree-node-text",shim:false,shadow:false},1,0,["editor","component","container","box"],{editor:true,component:true,container:true,box:true},0,0,[Ext.grid,"CellEditor"],0));(Ext.cmd.derive("Ext.grid.ColumnComponentLayout",Ext.layout.component.Auto,{type:"columncomponent",setWidthInDom:true,beginLayout:function(b){var a=this;a.callParent(arguments);b.titleContext=b.getEl("titleEl");b.triggerContext=b.getEl("triggerEl")},beginLayoutCycle:function(d){var b=this,a=b.owner;b.callParent(arguments);if(d.widthModel.shrinkWrap){a.el.setWidth("")}var c=a.isLast&&a.isSubHeader?"0":"";if(c!==b.lastBorderRightWidth){a.el.dom.style.borderRightWidth=b.lasBorderRightWidth=c}a.titleEl.setStyle({paddingTop:"",paddingBottom:""})},publishInnerHeight:function(d,k){if(!k){return}var g=this,b=g.owner,a=k-d.getBorderInfo().height,c=a,h,e,l,j;if(!b.noWrap&&!d.hasDomProp("width")){g.done=false;return}if(d.hasRawContent){e=c;h=b.textEl.getHeight();if(h){c-=h;if(c>0){l=Math.floor(c/2);j=c-l;d.titleContext.setProp("padding-top",l);d.titleContext.setProp("padding-bottom",j)}}}else{e=b.titleEl.getHeight();d.setProp("innerHeight",a-e,false)}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerContext){d.triggerContext.setHeight(e)}},measureContentHeight:function(a){return a.el.dom.offsetHeight},publishOwnerHeight:function(b,a){this.callParent(arguments);if((Ext.isIE6||Ext.isIEQuirks)&&b.triggerContext){b.triggerContext.setHeight(a)}},publishInnerWidth:function(a,b){if(!a.hasRawContent){a.setProp("innerWidth",b-a.getBorderInfo().width,false)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(!c.hasRawContent){if(this.owner.noWrap||c.hasDomProp("width")){return b+this.owner.titleEl.getHeight()+c.getBorderInfo().height}return null}return a},calculateOwnerWidthFromContentWidth:function(g,b){var a=this.owner,e=Math.max(b,a.textEl.getWidth()+g.titleContext.getPaddingInfo().width),d=g.getPaddingInfo().width,c=this.getTriggerOffset(a,g);return e+d+c},getTriggerOffset:function(a,c){var b=0;if(c.widthModel.shrinkWrap&&!a.menuDisabled){if(a.query(">:not([hidden])").length===0){b=a.self.triggerElWidth}}return b}},0,0,0,0,["layout.columncomponent"],0,[Ext.grid,"ColumnComponentLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnLayout",Ext.layout.container.HBox,{type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){if(!this.scrollbarWidth){this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width}this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var j=this,b=j.owner,a=j.grid,k=a.view,h=j.getVisibleItems(),g=h.length,d=j.firstHeaderCls,m=j.lastHeaderCls,e,l;if(a.lockable){if(b.up("tablepanel")===k.normalGrid){k=k.normalGrid.getView()}else{k=null}}for(e=0;e<g;e++){l=h[e];l.isLast=false;l.removeCls([d,m]);if(e===0){l.addCls(d)}if(e===g-1){l.addCls(m);l.isLast=true}}j.callParent(arguments);if(!b.isColumn&&Ext.getScrollbarSize().width&&!a.collapsed&&k&&k.rendered&&(c.viewTable=k.body.dom)){c.viewContext=c.context.getCmp(k)}},roundFlex:function(a){return Math.floor(a)},calculate:function(a){this.callParent(arguments);if(a.state.parallelDone&&(!this.owner.forceFit||a.flexedItems.length)){a.setProp("columnWidthsDone",true)}if(a.viewContext){a.state.tableHeight=a.viewTable.offsetHeight}},completeLayout:function(d){var b=this,a=b.owner,c=d.state;b.callParent(arguments);if(!d.flexedItems.length&&!c.flexesCalculated&&a.forceFit&&b.convertWidthsToFlexes(d)){b.cacheFlexes(d);d.invalidate({state:{flexesCalculated:true}})}else{d.setProp("columnWidthsDone",true)}},convertWidthsToFlexes:function(a){var g=this,d=0,h=g.sizeModels.calculated,c,e,b,k,j;c=a.childItems;e=c.length;for(b=0;b<e;b++){k=c[b];j=k.target;d+=k.props.width;if(!(j.fixed||j.resizable===false)){j.flex=a.childItems[b].flex=k.props.width;j.width=null;k.widthModel=h}}return d!==a.props.width},getContainerSize:function(e){var d=this,a,c=e.viewContext,b;if(d.owner.isColumn){a=d.getColumnContainerSize(e)}else{a=d.callParent(arguments);if(c&&!c.heightModel.shrinkWrap&&c.target.componentLayout.ownerContext){b=c.getProp("height");if(isNaN(b)){d.done=false}else{if(e.state.tableHeight>b){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}}return a},getColumnContainerSize:function(g){var j=g.paddingContext.getPaddingInfo(),b=0,e=0,h,d,c,a;if(!g.widthModel.shrinkWrap){++e;c=g.getProp("innerWidth");h=(typeof c=="number");if(h){++b;c-=j.width;if(c<0){c=0}}}if(!g.heightModel.shrinkWrap){++e;a=g.getProp("innerHeight");d=(typeof a=="number");if(d){++b;a-=j.height;if(a<0){a=0}}}return{width:c,height:a,needed:e,got:b,gotAll:b==e,gotWidth:h,gotHeight:d}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if((b!=null)&&!d.owner.isColumn){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}},0,0,0,0,["layout.gridcolumn"],0,[Ext.grid,"ColumnLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnManager",Ext.Base,{alternateClassName:["Ext.grid.ColumnModel"],columns:null,constructor:function(b,a){this.headerCt=b;if(a){this.secondHeaderCt=a}},getColumns:function(){if(!this.columns){this.cacheColumns()}return this.columns},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getColumns(),a)},getHeaderAtIndex:function(a){var b=this.getColumns();return b.length?b[a]:null},getHeaderById:function(e){var c=this.getColumns(),a=c.length,b,d;for(b=0;b<a;++b){d=c[b];if(d.getItemId()===e){return d}}return null},getVisibleHeaderClosestToIndex:function(b){var a=this.getHeaderAtIndex(b);if(a&&a.hidden){a=a.next(":not([hidden])")||a.prev(":not([hidden])")}return a},cacheColumns:function(){this.columns=this.headerCt.getVisibleGridColumns();if(this.secondHeaderCt){Ext.Array.push(this.columns,this.secondHeaderCt.getVisibleGridColumns())}},invalidate:function(){this.columns=null;if(this.rootColumns){this.rootColumns.invalidate()}}},1,0,0,0,0,0,[Ext.grid,"ColumnManager",Ext.grid,"ColumnModel"],function(){this.createAlias("indexOf","getHeaderIndex")}));(Ext.cmd.derive("Ext.layout.container.Fit",Ext.layout.container.Container,{alternateClassName:"Ext.layout.FitLayout",itemCls:Ext.baseCSSPrefix+"fit-item",targetCls:Ext.baseCSSPrefix+"layout-fit",type:"fit",defaultMargins:{top:0,right:0,bottom:0,left:0},manageMargins:true,sizePolicies:{0:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},1:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},2:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},3:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}},getItemSizePolicy:function(b,c){var a=c||this.owner.getSizeModel(),d=(a.width.shrinkWrap?0:1)|(a.height.shrinkWrap?0:2);return this.sizePolicies[d]},beginLayoutCycle:function(k,g){var t=this,u=t.lastHeightModel&&t.lastHeightModel.calculated,h=t.lastWidthModel&&t.lastWidthModel.calculated,o=h||u,l=0,m=0,s,b,p,r,e,a,j,n,q,d;t.callParent(arguments);if(o&&k.targetContext.el.dom.tagName.toUpperCase()!="TD"){o=h=u=false}b=k.childItems;e=b.length;for(p=0;p<e;++p){r=b[p];if(g){s=r.target;j=s.minHeight;n=s.minWidth;if(n||j){a=r.marginInfo||r.getMarginInfo();j+=a.height;n+=a.height;if(l<j){l=j}if(m<n){m=n}}}if(o){q=r.el.dom.style;if(u){q.height=""}if(h){q.width=""}}}if(g){k.maxChildMinHeight=l;k.maxChildMinWidth=m}s=k.target;k.overflowX=(!k.widthModel.shrinkWrap&&k.maxChildMinWidth&&s.scrollFlags.x)||d;k.overflowY=(!k.heightModel.shrinkWrap&&k.maxChildMinHeight&&s.scrollFlags.y)||d},calculate:function(g){var o=this,l=g.childItems,d=l.length,c=o.getContainerSize(g),e={length:d,ownerContext:g,targetSize:c},r=g.widthModel.shrinkWrap,m=g.heightModel.shrinkWrap,k=g.overflowX,h=g.overflowY,n,b,p,j,a,q;if(k||h){n=o.getScrollbarsNeeded(k&&c.width,h&&c.height,g.maxChildMinWidth,g.maxChildMinHeight);if(n){b=Ext.getScrollbarSize();if(n&1){c.height-=b.height}if(n&2){c.width-=b.width}}}for(j=0;j<d;++j){e.index=j;o.fitItem(l[j],e)}if(m||r){p=g.targetContext.getPaddingInfo();if(r){if(h&&!c.gotHeight){o.done=false}else{a=e.contentWidth+p.width;if(n&2){a+=b.width}if(!g.setContentWidth(a)){o.done=false}}}if(m){if(k&&!c.gotWidth){o.done=false}else{q=e.contentHeight+p.height;if(n&1){q+=b.height}if(!g.setContentHeight(q)){o.done=false}}}}},fitItem:function(b,c){var a=this;if(b.invalid){a.done=false;return}c.margins=b.getMarginInfo();c.needed=c.got=0;a.fitItemWidth(b,c);a.fitItemHeight(b,c);if(c.got!=c.needed){a.done=false}},fitItemWidth:function(c,d){var a,b;if(d.ownerContext.widthModel.shrinkWrap){b=c.getProp("width")+d.margins.width;a=d.contentWidth;if(a===undefined){d.contentWidth=b}else{d.contentWidth=Math.max(a,b)}}else{if(c.widthModel.calculated){++d.needed;if(d.targetSize.gotWidth){++d.got;this.setItemWidth(c,d)}}}this.positionItemX(c,d)},fitItemHeight:function(c,d){var b,a;if(d.ownerContext.heightModel.shrinkWrap){a=c.getProp("height")+d.margins.height;b=d.contentHeight;if(b===undefined){d.contentHeight=a}else{d.contentHeight=Math.max(b,a)}}else{if(c.heightModel.calculated){++d.needed;if(d.targetSize.gotHeight){++d.got;this.setItemHeight(c,d)}}}this.positionItemY(c,d)},positionItemX:function(a,c){var b=c.margins;if(c.index||b.left){a.setProp("x",b.left)}if(b.width){a.setProp("margin-right",b.width)}},positionItemY:function(a,c){var b=c.margins;if(c.index||b.top){a.setProp("y",b.top)}if(b.height){a.setProp("margin-bottom",b.height)}},setItemHeight:function(a,b){a.setHeight(b.targetSize.height-b.margins.height)},setItemWidth:function(a,b){a.setWidth(b.targetSize.width-b.margins.width)}},0,0,0,0,["layout.fit"],0,[Ext.layout.container,"Fit",Ext.layout,"FitLayout"],0));(Ext.cmd.derive("Ext.panel.Table",Ext.panel.Panel,{extraBaseCls:Ext.baseCSSPrefix+"grid",extraBodyCls:Ext.baseCSSPrefix+"grid-body",layout:"fit",hasView:false,viewType:null,selType:"rowmodel",scroll:true,deferRowRender:true,sortableColumns:true,enableLocking:false,scrollerOwner:true,enableColumnMove:true,sealedColumns:false,enableColumnResize:true,rowLines:true,colLinesCls:Ext.baseCSSPrefix+"grid-with-col-lines",rowLinesCls:Ext.baseCSSPrefix+"grid-with-row-lines",noRowLinesCls:Ext.baseCSSPrefix+"grid-no-row-lines",hiddenHeaderCtCls:Ext.baseCSSPrefix+"grid-header-ct-hidden",hiddenHeaderCls:Ext.baseCSSPrefix+"grid-header-hidden",resizeMarkerCls:Ext.baseCSSPrefix+"grid-resize-marker",emptyCls:Ext.baseCSSPrefix+"grid-empty",initComponent:function(){var g=this,h=g.columns||g.colModel,b,e,a,c=g.store=Ext.data.StoreManager.lookup(g.store||"ext-empty-store"),d;if(g.columnLines){g.addCls(g.colLinesCls)}g.addCls(g.rowLines?g.rowLinesCls:g.noRowLinesCls);if(h instanceof Ext.grid.header.Container){h.isRootHeader=true;g.headerCt=h}else{if(g.enableLocking||g.hasLockedColumns(h)){g.self.mixin("lockable",Ext.grid.locking.Lockable);g.injectLockable()}else{if(Ext.isArray(h)){h={items:h}}Ext.apply(h,{grid:g,forceFit:g.forceFit,sortable:g.sortableColumns,enableColumnMove:g.enableColumnMove,enableColumnResize:g.enableColumnResize,sealed:g.sealedColumns,isRootHeader:true});if(Ext.isDefined(g.enableColumnHide)){h.enableColumnHide=g.enableColumnHide}if(!g.headerCt){g.headerCt=new Ext.grid.header.Container(h)}}}g.columns=g.headerCt.getGridColumns();g.scrollTask=new Ext.util.DelayedTask(g.syncHorizontalScroll,g);g.addEvents("reconfigure","viewready");g.bodyCls=g.bodyCls||"";g.bodyCls+=(" "+g.extraBodyCls);g.cls=g.cls||"";g.cls+=(" "+g.extraBaseCls);delete g.autoScroll;if(!g.hasView){d=g.headerCt.getGridColumns();if(c.buffered&&!c.remoteSort){for(e=0,a=d.length;e<a;e++){d[e].sortable=false}}if(g.hideHeaders){g.headerCt.height=0;g.headerCt.hiddenHeaders=true;g.headerCt.addCls(g.hiddenHeaderCtCls);g.addCls(g.hiddenHeaderCls);if(Ext.isIEQuirks){g.headerCt.style={display:"none"}}}g.relayHeaderCtEvents(g.headerCt);g.features=g.features||[];if(!Ext.isArray(g.features)){g.features=[g.features]}g.dockedItems=[].concat(g.dockedItems||[]);g.dockedItems.unshift(g.headerCt);g.viewConfig=g.viewConfig||{};b=g.getView();g.items=[b];g.hasView=true;if(!g.hideHeaders){b.on({scroll:{fn:g.onHorizontalScroll,element:"el",scope:g}})}g.bindStore(c,true);g.mon(b,{viewready:g.onViewReady,refresh:g.onRestoreHorzScroll,scope:g})}g.relayEvents(g.view,["beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","selectionchange","beforeselect","select","beforedeselect","deselect"]);g.callParent(arguments);g.addStateEvents(["columnresize","columnmove","columnhide","columnshow","sortchange","filterchange"]);if(!g.lockable&&g.headerCt){g.headerCt.on("afterlayout",g.onRestoreHorzScroll,g)}},hasLockedColumns:function(c){var b,a,d;if(Ext.isObject(c)){c=c.items}for(b=0,a=c.length;b<a;b++){d=c[b];if(!d.processed&&d.locked){return true}}},relayHeaderCtEvents:function(a){this.relayEvents(a,["columnresize","columnmove","columnhide","columnshow","columnschanged","sortchange","headerclick","headercontextmenu","headertriggerclick"])},getState:function(){var b=this,c=b.callParent(),a=b.store.getState();c=b.addPropertyToState(c,"columns",b.headerCt.getColumnsState());if(a){c.storeState=a}return c},applyState:function(e){var d=this,g=e.sort,a=e.storeState,b=d.store,c=e.columns;delete e.columns;d.callParent(arguments);if(c){d.headerCt.applyColumnsState(c)}if(g){if(b.remoteSort){b.sort({property:g.property,direction:g.direction,root:g.root},null,false)}else{b.sort(g.property,g.direction)}}else{if(a){b.applyState(a)}}},getStore:function(){return this.store},getView:function(){var a=this,b;if(!a.view){b=a.getSelectionModel();Ext.widget(Ext.apply({grid:a,deferInitialRefresh:a.deferRowRender!==false,trackOver:a.trackMouseOver!==false,scroll:a.scroll,xtype:a.viewType,store:a.store,headerCt:a.headerCt,columnLines:a.columnLines,rowLines:a.rowLines,selModel:b,features:a.features,panel:a,emptyText:a.emptyText||""},a.viewConfig));if(a.view.emptyText){a.view.emptyText='<div class="'+a.emptyCls+'">'+a.view.emptyText+"</div>"}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(h,k,l,a,j,d,c,m){var g=this,b;if(j!==-1){b=g.columnManager.getColumns()[j];return b.processEvent.apply(b,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.view.refresh();this.delayScroll()},onHeaderShow:function(a,b){this.view.refresh();this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,j=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e)}g.fireEvent("beforereconfigure",g,b,e,j,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&(b=Ext.StoreManager.lookup(b))!==j){if(g.store){g.unbindStore()}d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,j,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}},0,["tablepanel"],["panel","component","tablepanel","container","box"],{panel:true,component:true,tablepanel:true,container:true,box:true},["widget.tablepanel"],0,[Ext.panel,"Table"],0));(Ext.cmd.derive("Ext.util.CSS",Ext.Base,function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(j,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=j}else{try{l.appendChild(d.createTextNode(j))}catch(k){l.cssText=j}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||d.styleSheets[d.styleSheets.length-1])}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(j,g){var h;c.removeStyleSheet(j);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",j);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k<g;++k){c.cacheStyleSheet(h[k])}for(;l>=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,m){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var l=h.selectorText,k,g;if(l){l=l.split(",");k=l.length;for(g=0;g<k;g++){e[Ext.String.trim(l[g]).toLowerCase()]={parentStyleSheet:m,cssRule:h}}}},getRules:function(j){var h={},g;if(e===null||j){c.refreshCache()}for(g in e){h[g]=e[g].cssRule}return h},refreshCache:function(){var j=d.styleSheets,h=0,g=j.length;e=c.rules={};for(;h<g;h++){try{if(!j[h].disabled){c.cacheStyleSheet(j[h])}}catch(k){}}},getRule:function(h,k,j){var l,g;if(!e||k){c.refreshCache()}if(!Ext.isArray(h)){g=e[h.toLowerCase()];if(g&&!j){g=g.cssRule}return g||null}for(l=0;l<h.length;l++){if(e[h[l]]){return j?e[h[l].toLowerCase()]:e[h[l].toLowerCase()].cssRule}}return null},createRule:function(m,h,k){var g,l=m.cssRules||m.rules,j=l.length;if(m.insertRule){m.insertRule(h+"{"+k+"}",j)}else{m.addRule(h,k||" ")}c.cacheRule(g=l[j],m);return g},updateRule:function(g,l,k){var m,h,j;if(!Ext.isArray(g)){m=c.getRule(g);if(m){if(arguments.length==2){j=Ext.Element.parseStyles(l);for(l in j){m.style[l.replace(b,a)]=j[l]}}else{m.style[l.replace(b,a)]=k}return true}}else{for(h=0;h<g.length;h++){if(c.updateRule(g[h],l,k)){return true}}}return false},deleteRule:function(g){var j=c.getRule(g,false,true),k,h;if(j){k=j.parentStyleSheet;h=Ext.Array.indexOf(k.cssRules||k.rules,j.cssRule);if(k.deleteRule){k.deleteRule(h)}else{k.removeRule(h)}delete e[g]}}}},1,0,0,0,0,0,[Ext.util,"CSS"],0));(Ext.cmd.derive("Ext.view.TableLayout",Ext.layout.component.Auto,{type:"tableview",beginLayout:function(d){var c=this,b=c.owner.lockingPartner,a=c.owner;c.callParent(arguments);if(b){c.lockedGrid=c.owner.up("[lockable]");c.lockedGrid.needsRowHeightSync=true;if(!d.lockingPartner){d.lockingPartner=d.context.getItem(b,b.el);if(d.lockingPartner&&!d.lockingPartner.lockingPartner){d.lockingPartner.lockingPartner=d}}}d.headerContext=d.context.getCmp(c.headerCt);if(c.owner.body.dom){d.bodyContext=d.getEl(c.owner.body)}if(Ext.isWebKit){a.el.select(a.getBodySelector()).setStyle("table-layout","auto")}},calculate:function(g){var e=this,c=e.lockingPartner,a=e.owner,d=0,b;if(g.headerContext.hasProp("columnWidthsDone")){if(!e.setColumnWidths(g)){e.done=false;return}g.state.columnWidthsSynced=true;if(g.bodyContext){b=e.owner.el.down("."+a.ownerCt.emptyCls,true);if(!b){d=g.bodyContext.el.dom.offsetHeight;g.bodyContext.setHeight(d,false)}else{d=b.offsetHeight}g.setProp("contentHeight",d)}if(c&&!c.state.columnWidthsSynced){e.done=false}else{e.callParent(arguments)}}else{e.done=false}},measureContentHeight:function(b){var a=b.lockingPartner;if(!b.bodyContext||(b.state.columnWidthsSynced&&(!a||a.state.columnWidthsSynced))){return this.callParent(arguments)}},setColumnWidths:function(d){var n=this,c=n.owner,b=d.context,g=n.headerCt.getVisibleGridColumns(),e,k=0,m=g.length,l=0,a=0,o,j,h=!Ext.isBorderBox;if(b){b.currentLayout=n}for(k=0;k<m;k++){e=g[k];o=b.getCmp(e);j=o.props.width;if(isNaN(j)){o.getProp("width");return false}l+=j;if(h&&c.columnLines){if(!a){a=b.getCmp(e).borderInfo.width||1}j-=a}c.body.select(c.getColumnSizerSelector(e)).setWidth(j)}c.el.select(c.getBodySelector()).setWidth(l);return true},finishedLayout:function(){var b=this,a=b.owner;b.callParent(arguments);if(Ext.isWebKit){a.el.select(a.getBodySelector()).setStyle("table-layout","")}if(a.refreshCounter&&b.lockedGrid&&b.lockedGrid.syncRowHeight&&b.lockedGrid.needsRowHeightSync){b.lockedGrid.syncRowHeights();b.lockedGrid.needsRowHeightSync=false}}},0,0,0,0,["layout.tableview"],0,[Ext.view,"TableLayout"],0));(Ext.cmd.derive("Ext.view.NodeCache",Ext.Base,{constructor:function(a){this.view=a;this.clear();this.el=new Ext.dom.AbstractElement.Fly()},clear:function(e){var c=this,d=this.elements,a,b;if(e){for(a in d){b=d[a];b.parentNode.removeChild(b)}}c.elements={};c.count=c.startIndex=0;c.endIndex=-1},fill:function(b,g){var d=this,e=d.elements={},c,a=b.length;if(!g){g=0}for(c=0;c<a;c++){e[g+c]=b[c]}d.startIndex=g;d.endIndex=g+a-1;d.count=a;return this},insert:function(g,b){var d=this,e=d.elements,c,a=b.length;if(d.count){if(g<d.count){for(c=d.endIndex+a;c>=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c<a;c++,g++){e[g]=b[c];e[g].setAttribute("data-recordIndex",g)}d.count+=a},item:function(c,b){var d=this.elements[c],a=null;if(d){a=b?this.elements[c]:this.el.attach(this.elements[c])}return a},first:function(a){return this.item(this.startIndex,a)},last:function(a){return this.item(this.endIndex,a)},getCount:function(){return this.count},slice:function(e,b){var d=this.elements,a=[],c;if(arguments.length<2){b=this.endIndex}else{b=Math.min(this.endIndex,b-1)}for(c=e||this.startIndex;c<=b;c++){a.push(d[c])}return a},replaceElement:function(d,c,a){var e=this.elements,b=(typeof d==="number")?d:this.indexOf(d);if(b>-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var j=this,a=j.elements,e,h,c,k;if(g===undefined){g=j.count}else{g=Math.min(j.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,k=g;h<j.endIndex;h++,k++){if(d&&h<g){Ext.removeNode(a[h])}if(k<=j.endIndex){e=a[h]=a[k];e.setAttribute("data-recordIndex",h)}else{delete a[h]}}j.count-=c;j.endIndex-=c},removeElement:function(m,c){var h=this,l,k,a=h.elements,d,e,b=0,g,j;if(Ext.isArray(m)){l=m;m=[];e=l.length;for(b=0;b<e;b++){k=l[b];if(typeof k!=="number"){k=h.indexOf(k)}if(k>=h.startIndex&&k<=h.endIndex){m[m.length]=k}}Ext.Array.sort(m);e=m.length}else{if(m<h.startIndex||m>h.endIndex){return}e=1;m=[m]}for(g=j=m[0],b=0;g<=h.endIndex;g++,j++){if(b<e&&g===m[b]){j++;b++;if(c){Ext.removeNode(a[g])}}if(j<=h.endIndex&&j>=h.startIndex){d=a[g]=a[j];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,l,c){var k=this,a=k.elements,n=e.length,h,d,b,g,j=k.view.getNodeContainer(),m=document.createDocumentFragment();if(l==-1){for(h=(k.endIndex-c)+1;h<=k.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.endIndex-=c;g=k.view.bufferRender(e,k.startIndex-=n);for(h=0;h<n;h++){a[k.startIndex+h]=g[h];m.appendChild(g[h])}j.insertBefore(m,j.firstChild)}else{b=k.startIndex+c;for(h=k.startIndex;h<b;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.startIndex=h;g=k.view.bufferRender(e,k.endIndex+1);for(h=0;h<n;h++){a[k.endIndex+=1]=g[h];m.appendChild(g[h])}j.appendChild(m)}k.count=k.endIndex-k.startIndex+1}},1,0,0,0,0,0,[Ext.view,"NodeCache"],0));(Ext.cmd.derive("Ext.view.Table",Ext.view.View,{componentLayout:"tableview",baseCls:Ext.baseCSSPrefix+"grid-view",firstCls:Ext.baseCSSPrefix+"grid-cell-first",lastCls:Ext.baseCSSPrefix+"grid-cell-last",headerRowSelector:"tr."+Ext.baseCSSPrefix+"grid-header-row",selectedItemCls:Ext.baseCSSPrefix+"grid-row-selected",beforeSelectedItemCls:Ext.baseCSSPrefix+"grid-row-before-selected",selectedCellCls:Ext.baseCSSPrefix+"grid-cell-selected",focusedItemCls:Ext.baseCSSPrefix+"grid-row-focused",beforeFocusedItemCls:Ext.baseCSSPrefix+"grid-row-before-focused",tableFocusedFirstCls:Ext.baseCSSPrefix+"grid-table-focused-first",tableSelectedFirstCls:Ext.baseCSSPrefix+"grid-table-selected-first",tableOverFirstCls:Ext.baseCSSPrefix+"grid-table-over-first",overItemCls:Ext.baseCSSPrefix+"grid-row-over",beforeOverItemCls:Ext.baseCSSPrefix+"grid-row-before-over",altRowCls:Ext.baseCSSPrefix+"grid-row-alt",dirtyCls:Ext.baseCSSPrefix+"grid-dirty-cell",rowClsRe:new RegExp("(?:^|\\s*)"+Ext.baseCSSPrefix+"grid-row-(first|last|alt)(?:\\s+|$)","g"),cellRe:new RegExp(Ext.baseCSSPrefix+"grid-cell-([^\\s]+) ",""),positionBody:true,trackOver:true,getRowClass:null,stripeRows:true,markDirty:true,tpl:"{%values.view.tableTpl.applyOut(values, out)%}",tableTpl:["{%",'var view=values.view,tableCls=["'+Ext.baseCSSPrefix+'" + view.id + "-table '+Ext.baseCSSPrefix+'grid-table"];',"if (view.columnLines) tableCls[tableCls.length]=view.ownerCt.colLinesCls;","if (view.rowLines) tableCls[tableCls.length]=view.ownerCt.rowLinesCls;","%}",'<table role="presentation" id="{view.id}-table" class="{[tableCls.join(" ")]}" border="0" cellspacing="0" cellpadding="0" style="{tableStyle}" tabIndex="-1">',"{[view.renderColumnSizer(out)]}","{[view.renderTHead(values, out)]}","{[view.renderTFoot(values, out)]}",'<tbody id="{view.id}-body">',"{%","view.renderRows(values.rows, values.viewStartIndex, out);","%}","</tbody>","</table>",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'<tr role="row" {[values.rowId ? ("id=\\"" + values.rowId + "\\"") : ""]} ','data-boundView="{view.id}" ','data-recordId="{record.internalId}" ','data-recordIndex="{recordIndex}" ','class="{[values.itemClasses.join(" ")]} {[values.rowClasses.join(" ")]}{[dataRowCls]}" ','{rowAttr:attributes} tabIndex="-1">','<tpl for="columns">{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","</tpl>","</tr>",{priority:0}],cellTpl:['<td role="gridcell" class="{tdCls}" {tdAttr} id="{[Ext.id()]}">','<div {unselectableAttr} class="'+Ext.baseCSSPrefix+'grid-cell-inner {innerCls}"','style="text-align:{align};<tpl if="style">{style}</tpl>">{value}</div>',"</td>",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly();b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null;b.beforeOverItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,s,k,m,r,q;if(n.rendered&&o!==a){s=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=s.length;g<k;g++){m=s[g];r=m.childNodes;if(b){if(r.length===1){Ext.fly(r[0]).addCls(n.firstCls);Ext.fly(r[0]).addCls(n.lastCls);continue}if(a===0){Ext.fly(r[0]).removeCls(n.firstCls);Ext.fly(r[1]).addCls(n.firstCls)}else{if(a===h){Ext.fly(r[h]).removeCls(n.lastCls);Ext.fly(r[h-1]).addCls(n.lastCls)}}if(o===0){Ext.fly(r[0]).removeCls(n.firstCls);Ext.fly(r[a]).addCls(n.firstCls)}else{if(o===p){Ext.fly(r[h]).removeCls(n.lastCls);Ext.fly(r[a]).addCls(n.lastCls)}}}if(l){for(e=0;e<d;e++){l.appendChild(r[a])}m.insertBefore(l,r[c]||null)}else{m.insertBefore(r[a],r[c]||null)}}q=n.el.query(n.getBodySelector());for(g=0,k=q.length;g<k;g++){m=q[g];if(l){for(e=0;e<d;e++){l.appendChild(m.childNodes[a])}m.insertBefore(l,m.childNodes[c]||null)}else{m.insertBefore(m.childNodes[a],m.childNodes[c]||null)}}}},scrollToTop:Ext.emptyFn,addElListener:function(a,c,b){this.mon(this,a,c,b,{element:"el"})},getGridColumns:function(){return this.ownerCt.columnManager.getColumns()},getHeaderAtIndex:function(a){return this.ownerCt.columnManager.getHeaderAtIndex(a)},getCell:function(a,b){var c=this.getNode(a,true);return Ext.fly(c).down(b.getCellSelector())},getFeature:function(b){var a=this.featuresMC;if(a){return a.get(b)}},findFeature:function(a){if(this.features){return Ext.Array.findBy(this.features,function(b){if(b.ftype===a){return true}})}},initFeatures:function(d){var g=this,c,e,b,a;g.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");g.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");g.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");g.featuresMC=new Ext.util.MixedCollection();e=g.features=g.constructFeatures();a=e?e.length:0;for(c=0;c<a;c++){b=e[c];b.view=g;b.grid=d;g.featuresMC.add(b);b.init(d)}},renderTHead:function(b,c){var e=b.view.headerFns,a,d;if(e){for(d=0,a=e.length;d<a;++d){e[d].call(this,b,c)}}},addHeaderFn:function(){var a=this.headerFns;if(!a){a=this.headerFns=[]}a.push(fn)},renderTFoot:function(b,c){var e=b.view.footerFns,a,d;if(e){for(d=0,a=e.length;d<a;++d){e[d].call(this,b,c)}}},addFooterFn:function(a){var b=this.footerFns;if(!b){b=this.footerFns=[]}b.push(a)},addTableTpl:function(a){return this.addTpl("tableTpl",a)},addRowTpl:function(a){return this.addTpl("rowTpl",a)},addCellTpl:function(a){return this.addTpl("cellTpl",a)},addTpl:function(e,d){var c=this,a,b;d=Ext.Object.chain(d);if(!d.isTemplate){d.applyOut=c.tplApplyOut}for(a=c[e];d.priority<a.priority;a=a.nextTpl){b=a}if(b){b.nextTpl=d}else{c[e]=d}d.nextTpl=a;return d},tplApplyOut:function(a,b){if(this.before){if(this.before(a,b)===false){return}}this.nextTpl.applyOut(a,b);if(this.after){this.after(a,b)}},constructFeatures:function(){var g=this,e=g.features,d,b,c=0,a;if(e){b=[];a=e.length;for(;c<a;c++){d=e[c];if(!d.isFeature){d=Ext.create("feature."+d.ftype,d)}b[c]=d}}return b},beforeRender:function(){var a=this;a.callParent();if(!a.enableTextSelection){a.protoEl.unselectable()}},onViewScroll:function(b,a){this.callParent(arguments);this.fireEvent("bodyscroll",b,a)},createRowElement:function(a,b){var c=this,d=c.renderBuffer;c.tpl.overwrite(d,c.collectData([a],b));return Ext.fly(d).down(c.getNodeContainerSelector(),true).firstChild},bufferRender:function(a,b){var c=this,d=c.renderBuffer;c.tpl.overwrite(d,c.collectData(a,b));return Ext.Array.toArray(Ext.fly(d).down(c.getNodeContainerSelector(),true).childNodes)},collectData:function(a,b){this.rowValues.view=this;return{view:this,rows:a,viewStartIndex:b,tableStyle:this.bufferedRenderer?("position:absolute;top:"+this.bufferedRenderer.bodyTop):""}},collectNodes:function(a){this.all.fill(this.getNodeContainer().childNodes,this.all.startIndex)},refreshSize:function(){var c=this,b,a=c.getBodySelector();if(a){c.body.attach(c.el.child(a,true))}if(!c.hasLoadingHeight){b=c.up("tablepanel");Ext.suspendLayouts();c.callParent();b.updateLayout();Ext.resumeLayouts(true)}},statics:{getBoundView:function(a){return Ext.getCmp(a.getAttribute("data-boundView"))}},getRecord:function(b){b=this.getNode(b);if(b){var a=b.getAttribute("data-recordIndex");if(a){a=parseInt(a,10);if(a>-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,c;g.view=this;g.columns=this.ownerCt.columnManager.getColumns();for(c=0;c<a;c++,d++){g.itemClasses.length=g.rowClasses.length=0;this.renderRow(e[c],d,b)}g.view=g.columns=g.record=null},renderColumnSizer:function(b){var d=this.getGridColumns(),a=d.length,c,g,e;for(c=0;c<a;c++){g=d[c];e=g.hidden?0:(g.lastBox?g.lastBox.width:Ext.grid.header.Container.prototype.defaultWidth);b.push('<colgroup><col class="',Ext.baseCSSPrefix,"grid-cell-",d[c].getItemId(),'" style="width:'+e+'px"></colgroup>')}},renderRow:function(g,a,e){var j=this,d=a===-1,h=j.selModel,m=j.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=j.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=j.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=j.ownerCt.columnManager.getColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected){if(h.isRowSelected(a+1)){c.push(j.beforeSelectedItemCls)}if(h.isRowSelected(g)){c.push(j.selectedItemCls)}}if(j.stripeRows&&a%2!==0){b.push(j.altRowCls)}if(j.getRowClass){l=j.getRowClass(g,a,null,j.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,j,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=j;k.cellIndex=j;k.align=c.align;k.tdCls=c.tdCls;k.innerCls=c.innerCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,j,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=(o==null||o==="")?"&#160;":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,j)){b[m++]=(l.selectedCellCls)}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a&&b.el.isAncestor(a)&&b.isRowStyleFirst(a)){b.getRowStyleTableEl(a).removeCls(b.tableOverFirstCls)}if(c&&b.isRowStyleFirst(c)){b.getRowStyleTableEl(c).addCls(b.tableOverFirstCls)}b.callParent(arguments)},onRowSelect:function(b){var a=this;a.addRowCls(b,a.selectedItemCls);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).addCls(a.tableSelectedFirstCls)}else{a.addRowCls(b-1,a.beforeSelectedItemCls)}},onRowDeselect:function(b){var a=this;a.removeRowCls(b,[a.selectedItemCls,a.focusedItemCls]);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).removeCls([a.tableFocusedFirstCls,a.tableSelectedFirstCls])}else{a.removeRowCls(b-1,[a.beforeFocusedItemCls,a.beforeSelectedItemCls])}},onCellSelect:function(b){var a=this.getCellByPosition(b);if(a){a.addCls(this.selectedCellCls);this.scrollCellIntoView(a)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.ownerCt.columnManager.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()&&(a=b.getNode(b.all.item(0).dom,true))){b.focusRow(a)}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).addCls(c.tableFocusedFirstCls)}else{c.addRowCls(d-1,c.beforeFocusedItemCls)}if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).removeCls(c.tableFocusedFirstCls)}else{c.removeRowCls(d-1,c.beforeFocusedItemCls)}}if((Ext.isIE6||Ext.isIE7)&&!c.ownerCt.rowLines){c.repaintRow(d)}},focus:function(d,b){var c=this,a=Ext.isIE&&!b,e;if(a){e=c.el.dom.scrollLeft}this.callParent(arguments);if(a){c.el.dom.scrollLeft=e}},focusRow:function(g,b){var d=this,c,e=d.ownerCt&&d.ownerCt.collapsed,a;if(d.isVisible(true)&&!e&&(g=d.getNode(g,true))){d.scrollRowIntoView(g);a=d.getRecord(g);c=d.indexInStore(g);d.selModel.setLastFocused(a);d.focusedRow=g;d.focus(false,b,function(){d.fireEvent("rowfocus",a,g,c)})}},scrollRowIntoView:function(a){a=this.getNode(a,true);if(a){Ext.fly(a).scrollIntoView(this.el,false)}},focusCell:function(b){var d=this,a=d.getCellByPosition(b),c=d.getRecord(b.row);d.focusRow(c);if(a){d.scrollCellIntoView(a);d.fireEvent("cellfocus",c,a,b)}},scrollCellIntoView:function(a){if(a.row!=null&&a.column!=null){a=this.getCellByPosition(a)}if(a){Ext.fly(a).scrollIntoView(this.el,true)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(g,c,m,r){var v=this,o=v.rowTpl,j,s,b,l,n,t,u,e,p,q,k,d,w,h,a;if(v.viewReady){b=v.getNodeByRecord(c,false);if(b){p=v.overItemCls;q=v.overItemCls;k=v.focusedItemCls;d=v.beforeFocusedItemCls;w=v.selectedItemCls;h=v.beforeSelectedItemCls;j=v.indexInStore(c);s=Ext.fly(b,"_internal");l=v.createRowElement(c,j);if(s.hasCls(p)){Ext.fly(l).addCls(p)}if(s.hasCls(q)){Ext.fly(l).addCls(q)}if(s.hasCls(k)){Ext.fly(l).addCls(k)}if(s.hasCls(d)){Ext.fly(l).addCls(d)}if(s.hasCls(w)){Ext.fly(l).addCls(w)}if(s.hasCls(h)){Ext.fly(l).addCls(h)}a=v.ownerCt.columnManager.getColumns();if(Ext.isIE9m&&b.mergeAttributes){b.mergeAttributes(l,true)}else{n=l.attributes;t=n.length;for(e=0;e<t;e++){u=n[e].name;if(u!=="id"){b.setAttribute(u,n[e].value)}}}if(a.length){v.updateColumns(c,v.getNode(b,true),v.getNode(l,true),a,r)}while(o){if(o.syncContent){if(o.syncContent(b,l)===false){break}}o=o.nextTpl}v.fireEvent("itemupdate",c,j,b);v.refreshSize()}}},updateColumns:function(d,c,j,b,q){var u=this,k,r,s,g,m=b.length,n,e,a,l,h,p=u.editingPlugin||(u.lockingPartner&&u.ownerCt.ownerLockable.view.editingPlugin),o=p&&p.editing,t=u.getCellSelector();if(c.mergeAttributes){c.mergeAttributes(j,true)}else{k=j.attributes;r=k.length;for(g=0;g<r;g++){s=k[g].name;if(s!=="id"){c.setAttribute(s,k[g].value)}}}for(n=0;n<m;n++){e=b[n];if(u.shouldUpdateCell(d,e,q)){t=u.getCellSelector(e);a=Ext.DomQuery.selectNode(t,c);l=Ext.DomQuery.selectNode(t,j);if(o){Ext.fly(a).syncContent(l)}else{h=a.parentNode;h.insertBefore(l,a);h.removeChild(a)}}}},shouldUpdateCell:function(b,e,d){if(e.hasCustomRenderer||!d){return true}if(d){var a=d.length,c,g;for(c=0;c<a;++c){g=d[c];if(g===e.dataIndex||g===b.idProperty){return true}}}return false},refresh:function(){var a=this,b=a.el&&a.el.isAncestor(Ext.Element.getActiveElement());a.callParent(arguments);a.headerCt.setSortState();if(a.el&&!a.all.getCount()&&a.headerCt&&a.headerCt.tooNarrow){a.el.createChild({style:"position:absolute;height:1px;width:1px;left:"+(a.headerCt.getFullWidth()-1)+"px"})}if(b){a.selModel.onLastFocusChanged(null,a.selModel.lastFocused)}},processItemEvent:function(g,s,o,k){if(this.indexInStore(s)!==-1){var m=this,p=k.getTarget(m.getCellSelector(),s),n,a=m.statics().EventMap,h=m.getSelectionModel(),l=k.type,b=m.features,j=b.length,c,r,q,d;if(l=="keydown"&&!p&&h.getCurrentPosition){p=m.getCellByPosition(h.getCurrentPosition(),true)}if(p){if(!p.parentNode){return false}d=m.getHeaderByCell(p);n=Ext.Array.indexOf(m.getGridColumns(),d)}else{n=-1}r=m.fireEvent("uievent",l,m,p,o,n,k,g,s);if(r===false||m.callParent(arguments)===false){m.selModel.onVetoUIEvent(l,m,p,o,n,k,g,s);return false}for(c=0;c<j;++c){q=b[c];if(q.wrapsItem){if(q.vetoEvent(g,s,o,k)===false){m.processSpecialEvent(k);return false}}}if(l=="mouseover"||l=="mouseout"){return true}if(!p){return true}return !((m["onBeforeCell"+a[l]](p,n,g,s,o,k)===false)||(m.fireEvent("beforecell"+l,m,p,n,g,s,o,k)===false)||(m["onCell"+a[l]](p,n,g,s,o,k)===false)||(m.fireEvent("cell"+l,m,p,n,g,s,o,k)===false))}else{this.processSpecialEvent(k);return false}},processSpecialEvent:function(j){var m=this,c=m.features,l=c.length,n=j.type,d,o,g,h,b,k,a=m.ownerCt;m.callParent(arguments);if(n=="mouseover"||n=="mouseout"){return}for(d=0;d<l;d++){o=c[d];if(o.hasFeatureEvent){h=j.getTarget(o.eventSelector,m.getTargetEl());if(h){g=o.eventPrefix;b=o.getFireEventArgs("before"+g+n,m,h,j);k=o.getFireEventArgs(g+n,m,h,j);if((m.fireEvent.apply(m,b)===false)||(a.fireEvent.apply(a,b)===false)||(m.fireEvent.apply(m,k)===false)||(a.fireEvent.apply(a,k)===false)){return false}}}}return true},onCellMouseDown:Ext.emptyFn,onCellMouseUp:Ext.emptyFn,onCellClick:Ext.emptyFn,onCellDblClick:Ext.emptyFn,onCellContextMenu:Ext.emptyFn,onCellKeyDown:Ext.emptyFn,onBeforeCellMouseDown:Ext.emptyFn,onBeforeCellMouseUp:Ext.emptyFn,onBeforeCellClick:Ext.emptyFn,onBeforeCellDblClick:Ext.emptyFn,onBeforeCellContextMenu:Ext.emptyFn,onBeforeCellKeyDown:Ext.emptyFn,expandToFit:function(a){this.autoSizeColumn(a)},autoSizeColumn:function(a){if(Ext.isNumber(a)){a=this.getGridColumns[a]}if(a){if(a.isGroupHeader){a.autoSize();return}delete a.flex;a.setWidth(this.getMaxContentWidth(a))}},getMaxContentWidth:function(d){var g=this,m=g.el.query(d.getCellInnerSelector()),b=d.getWidth(),c=0,e=m.length,k=Ext.supports.ScrollWidthInlinePaddingBug,a=g.body.select(g.getColumnSizerSelector(d)),h=Math.max,l,j;if(k&&e>0){l=g.getCellPaddingAfter(m[0])}a.setWidth(1);j=d.textEl.dom.offsetWidth+d.titleEl.getPadding("lr");for(;c<e;c++){j=h(j,m[c].scrollWidth)}if(k){j+=l}j=h(j,40);a.setWidth(b);return j},getPositionByEvent:function(g){var d=this,b=g.getTarget(d.cellSelector),c=g.getTarget(d.itemSelector),a=d.getRecord(c),h=d.getHeaderByCell(b);return d.getPosition(a,h)},getHeaderByCell:function(a){if(a){var b=a.className.match(this.cellRe);if(b&&b[1]){return this.ownerCt.columnManager.getHeaderById(b[1])}}return false},walkCells:function(l,m,h,n,a,p){if(!l){return false}var j=this,q=l.row,d=l.column,k=j.dataSource.getCount(),b=j.ownerCt.columnManager.getColumns().length-1,o=q,g=d,c=j.ownerCt.columnManager.getHeaderAtIndex(d);if(!c||c.hidden||!k){return false}h=h||{};m=m.toLowerCase();switch(m){case"right":if(d===b){if(n||q===k-1){return false}if(!h.ctrlKey){o=j.walkRows(q,1);if(o!==q){g=0}}}else{if(!h.ctrlKey){g=d+1}else{g=b}}break;case"left":if(d===0){if(n||q===0){return false}if(!h.ctrlKey){o=j.walkRows(q,-1);if(o!==q){g=b}}}else{if(!h.ctrlKey){g=d-1}else{g=0}}break;case"up":if(q===0){return false}else{if(!h.ctrlKey){o=j.walkRows(q,-1)}else{o=j.walkRows(-1,1)}}break;case"down":if(q===k-1){return false}else{if(!h.ctrlKey){o=j.walkRows(q,1)}else{o=j.walkRows(k,-1)}}break}if(a&&a.call(p||j,{row:o,column:g})!==true){return false}else{return new Ext.grid.CellContext(j).setPosition(o,g)}},walkRows:function(j,a){var d=this,e=0,l=j,b,h=(d.dataSource.buffered?d.dataSource.getTotalCount():d.dataSource.getCount())-1,c=(a<0)?0:h,g=c?1:-1,k=j;do{if(c?k>=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,j=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=(a<0)?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){j+=k;m=d}}while(j!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=(c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount()),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return new Ext.grid.CellContext(this).setPosition(a,b)},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();b<a;++b){c.getAt(b).destroy()}}d.featuresMC=null;this.callParent(arguments)},onAdd:function(c,a,b){this.callParent(arguments);this.doStripeRows(b)},onRemove:function(c,a,b){this.callParent(arguments);this.doStripeRows(b[0])},doStripeRows:function(b,a){var d=this,e,h,c,g;if(d.rendered&&d.stripeRows){e=d.getNodes(b,a);for(c=0,h=e.length;c<h;c++){g=e[c];g.className=g.className.replace(d.rowClsRe," ");b++;if(b%2===0){g.className+=(" "+d.altRowCls)}}}},repaintRow:function(d){var c=this.getNode(d),b=c.childNodes,a=b.length;while(a--){b[a].className=b[a].className}},getRowStyleTableEl:function(b){var a=this;if(!b.tagName){b=this.getNode(b)}return(a.isGrouping?Ext.fly(b):this.el).down("table.x-grid-table")},isRowStyleFirst:function(c){var b=this,a;if(c===-1){return false}if(!c.tagName){a=c;c=this.getNode(c)}else{a=b.indexOf(c)}return(!a||b.isGrouping&&Ext.fly(c).hasCls(Ext.baseCSSPrefix+"grid-group-row"))},getCellPaddingAfter:function(a){return Ext.fly(a).getPadding("r")}},1,["tableview"],["component","box","dataview","tableview"],{component:true,box:true,dataview:true,tableview:true},["widget.tableview"],0,[Ext.view,"Table"],0));(Ext.cmd.derive("Ext.grid.View",Ext.view.Table,{stripeRows:true,autoScroll:true},0,["gridview"],["component","box","dataview","gridview","tableview"],{component:true,box:true,dataview:true,gridview:true,tableview:true},["widget.gridview"],0,[Ext.grid,"View"],0));(Ext.cmd.derive("Ext.grid.Panel",Ext.panel.Table,{alternateClassName:["Ext.list.ListView","Ext.ListView","Ext.grid.GridPanel"],viewType:"gridview",lockable:false,rowLines:true},0,["grid","gridpanel"],["panel","component","tablepanel","container","grid","box","gridpanel"],{panel:true,component:true,tablepanel:true,container:true,grid:true,box:true,gridpanel:true},["widget.grid","widget.gridpanel"],0,[Ext.grid,"Panel",Ext.list,"ListView",Ext,"ListView",Ext.grid,"GridPanel"],0));Ext.define("Ext.grid.plugin.BufferedRendererTableView",{override:"Ext.view.Table",onAdd:function(b,a,c){var d=this,g=d.bufferedRenderer,e=d.all;if(d.rendered&&g&&(e.getCount()+a.length)>g.viewSize){if(c<e.startIndex+g.viewSize&&(c+a.length)>e.startIndex){d.refreshView()}else{g.stretchView(d,g.getScrollHeight())}}else{d.callParent([b,a,c])}},onRemove:function(b,a,d){var c=this,e=c.bufferedRenderer;c.callParent([b,a,d]);if(c.rendered&&e){if(c.dataSource.getCount()>e.viewSize){c.refreshView()}else{e.stretchView(c,e.getScrollHeight())}}},onDataRefresh:function(){var a=this;if(a.bufferedRenderer){a.all.clear();a.bufferedRenderer.onStoreClear()}a.callParent()}});(Ext.cmd.derive("Ext.grid.RowEditorButtons",Ext.container.Container,{frame:true,shrinkWrap:true,position:"bottom",constructor:function(b){var d=this,a=b.rowEditor,e=Ext.baseCSSPrefix,c=a.editingPlugin;b=Ext.apply({baseCls:e+"grid-row-editor-buttons",defaults:{xtype:"button",ui:a.buttonUI,scope:c,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:e+"row-editor-update-button",itemId:"update",handler:c.completeEdit,text:a.saveBtnText,disabled:a.updateButtonDisabled},{cls:e+"row-editor-cancel-button",handler:c.cancelEdit,text:a.cancelBtnText}]},b);d.callParent([b]);d.addClsWithUI(d.position)},setButtonPosition:function(a){var b=this;b.removeClsWithUI(b.position);b.position=a;b.addClsWithUI(a)},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui+"-"+this.position},getFrameInfo:function(){var a=this.callParent();a.top=true;return a}},1,["roweditorbuttons"],["component","container","box","roweditorbuttons"],{component:true,container:true,box:true,roweditorbuttons:true},["widget.roweditorbuttons"],0,[Ext.grid,"RowEditorButtons"],0));(Ext.cmd.derive("Ext.grid.RowEditor",Ext.form.Panel,{saveBtnText:"Update",cancelBtnText:"Cancel",errorsText:"Errors",dirtyText:"You need to commit or cancel your changes",lastScrollLeft:0,lastScrollTop:0,border:false,buttonUI:"default",hideMode:"offsets",initComponent:function(){var c=this,b=c.editingPlugin.grid,a=Ext.container.Container;c.cls=Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-row-editor";c.layout={type:"hbox",align:"middle"};c.lockable=b.lockable;if(c.lockable){c.items=[c.lockedColumnContainer=new a({id:b.id+"-locked-editor-cells",layout:{type:"hbox",align:"middle"},margin:"0 1 0 0"}),c.normalColumnContainer=new a({flex:1,id:b.id+"-normal-editor-cells",layout:{type:"hbox",align:"middle"}})]}else{c.lockedColumnContainer=c.normalColumnContainer=c}c.callParent(arguments);if(c.fields){c.addFieldsForColumn(c.fields,true);c.insertColumnEditor(c.fields);delete c.fields}c.mon(c.hierarchyEventSource,{scope:c,show:c.repositionIfVisible});c.getForm().trackResetOnLoad=true},onGridResize:function(){var c=this,e=c.getClientWidth(),a=c.editingPlugin.grid,d=a.body,b=c.getFloatingButtons();c.setLocalX(d.getOffsetsTo(a)[0]+d.getBorderWidth("l")-a.el.getBorderWidth("l"));c.setWidth(e);b.setLocalX((e-b.getWidth())/2)},onFieldRender:function(c){var b=this,a=c.column;if(a.isVisible()){b.syncFieldWidth(a)}else{if(!a.rendered){b.view.headerCt.on({afterlayout:Ext.Function.bind(b.syncFieldWidth,b,[a]),single:true})}}},syncFieldWidth:function(b){var c=b.getEditor(),a;c._marginWidth=(c._marginWidth||c.el.getMargin("lr"));a=b.getWidth()-c._marginWidth;c.setWidth(a);if(c.xtype==="displayfield"){c.inputWidth=a}},onFieldChange:function(){var c=this,b=c.getForm(),a=b.isValid();if(c.errorSummary&&c.isVisible()){c[a?"hideToolTip":"showToolTip"]()}c.updateButton(a);c.isValid=a},updateButton:function(b){var a=this.floatingButtons;if(a){a.child("#update").setDisabled(!b)}else{this.updateButtonDisabled=!b}},afterRender:function(){var d=this,c=d.editingPlugin,b=c.grid,a=b.lockable?b.normalGrid.view:b.view,e;d.callParent(arguments);d.scrollingView=a;d.scrollingViewEl=a.el;a.mon(d.scrollingViewEl,"scroll",d.onViewScroll,d);d.mon(d.el,{click:Ext.emptyFn,stopPropagation:true});d.mon(b,{resize:d.onGridResize,scope:d});d.el.swallowEvent(["keypress","keydown"]);d.fieldScroller=d.normalColumnContainer.layout.innerCt;d.fieldScroller.dom.style.overflow="hidden";d.fieldScroller.on({scroll:d.onFieldContainerScroll,scope:d});d.keyNav=new Ext.util.KeyNav(d.el,{enter:c.completeEdit,esc:c.onEscKey,scope:c});d.mon(c.view,{beforerefresh:d.onBeforeViewRefresh,refresh:d.onViewRefresh,itemremove:d.onViewItemRemove,scope:d});d.preventReposition=true;Ext.Array.each(d.query("[isFormField]"),function(g){if(g.column.isVisible()){d.onColumnShow(g.column)}},d);delete d.preventReposition},onBeforeViewRefresh:function(b){var c=this,a=b.el.dom;if(c.el.dom.parentNode===a){a.removeChild(c.el.dom)}},onViewRefresh:function(a){var c=this,b=c.context,d;if(b&&(d=a.getNode(b.record,true))){b.row=d;c.reposition();if(c.tooltip&&c.tooltip.isVisible()){c.tooltip.setTarget(b.row)}}else{c.editingPlugin.cancelEdit()}},onViewItemRemove:function(a,b){var c=this.context;if(c&&a===c.record){this.editingPlugin.cancelEdit()}},onViewScroll:function(){var c=this,b=c.editingPlugin.view.el,d=c.scrollingViewEl,e=d.dom.scrollTop,j=d.getScrollLeft(),h=j!==c.lastScrollLeft,a=e!==c.lastScrollTop,g;c.lastScrollTop=e;c.lastScrollLeft=j;if(c.isVisible()){g=Ext.getDom(c.context.row.id);if(g&&b.contains(g)){if(a){c.context.row=g;c.reposition(null,true);if((c.tooltip&&c.tooltip.isVisible())||c.hiddenTip){c.repositionTip()}c.syncEditorClip()}}else{c.setLocalY(-400)}}if(c.rendered&&h){c.syncFieldsHorizontalScroll()}},syncFieldsHorizontalScroll:function(){this.fieldScroller.setScrollLeft(this.lastScrollLeft)},onFieldContainerScroll:function(){this.scrollingViewEl.setScrollLeft(this.fieldScroller.getScrollLeft())},onColumnResize:function(b,a){var c=this;if(c.rendered){c.onGridResize();c.onViewScroll();if(!b.isGroupHeader){c.syncFieldWidth(b);c.repositionIfVisible()}}},onColumnHide:function(a){if(!a.isGroupHeader){a.getEditor().hide();this.repositionIfVisible()}},onColumnShow:function(a){var b=this;if(b.rendered&&!a.isGroupHeader){a.getEditor().show();b.syncFieldWidth(a);if(!b.preventReposition){this.repositionIfVisible()}}},onColumnMove:function(c,a,k){var h=this,d,b=1,g,j,l,e=c.isLocked()?h.lockedColumnContainer:h.normalColumnContainer;if(c.isGroupHeader){Ext.suspendLayouts();c=c.getGridColumns();if(k>a){k--;b=0}this.addFieldsForColumn(c);for(d=0,g=c.length;d<g;d++,a+=b,k+=b){j=c[d].getEditor();l=e.items.indexOf(j);if(l===-1){e.insert(k,j)}else{if(l!=k){e.move(a,k)}}}Ext.resumeLayouts(true)}else{if(k>a){k--}this.addFieldsForColumn(c);j=c.getEditor();l=e.items.indexOf(j);if(l===-1){e.insert(k,j)}else{if(l!=k){e.move(a,k)}}}},onColumnAdd:function(a){if(a.isGroupHeader){a=a.getGridColumns()}this.addFieldsForColumn(a);this.insertColumnEditor(a);this.preventReposition=false},insertColumnEditor:function(c){var d=this,e,a,b;if(Ext.isArray(c)){for(b=0,a=c.length;b<a;b++){d.insertColumnEditor(c[b])}return}if(!c.getEditor){return}e=c.isLocked()?d.lockedColumnContainer:d.normalColumnContainer;e.insert(c.getVisibleIndex(),c.getEditor())},onColumnRemove:function(a,b){b=b.isGroupHeader?b.getGridColumns():b;this.removeColumnEditor(b)},removeColumnEditor:function(c){var d=this,e,a,b;if(Ext.isArray(c)){for(b=0,a=c.length;b<a;b++){d.removeColumnEditor(c[b])}return}if(c.hasEditor()){e=c.getEditor();if(e&&e.ownerCt){e.ownerCt.remove(e,false)}}},onColumnReplace:function(d,a,c,b){this.onColumnRemove(b.ownerCt,b)},getFloatingButtons:function(){var b=this,a=b.floatingButtons;if(!a){b.floatingButtons=a=new Ext.grid.RowEditorButtons({rowEditor:b})}return a},repositionIfVisible:function(d){var b=this,a=b.view;if(d&&(d==b||!d.el.isAncestor(a.el))){return}if(b.isVisible()&&a.isVisible(true)){b.reposition()}},getRefOwner:function(){return this.editingPlugin.grid},getRefItems:function(){var b=this,a;if(b.lockable){a=b.lockedColumnContainer.getRefItems();a.push.apply(a,b.normalColumnContainer.getRefItems())}else{a=b.callParent()}a.push.apply(a,b.getFloatingButtons().getRefItems());return a},reposition:function(k,g){var h=this,b=h.context,l=b&&Ext.get(b.row),c=0,a,d,e,j;if(l&&Ext.isElement(l.dom)){e=h.syncButtonPosition(h.getScrollDelta());if(!h.editingPlugin.grid.rowLines){c=-parseInt(l.first().getStyle("border-bottom-width"))}a=h.calculateLocalRowTop(l);d=h.calculateEditorTop(a)+c;if(!g){j=function(){if(e){h.scrollingViewEl.scrollBy(0,e,true)}h.focusContextCell()}}h.syncEditorClip();if(k){h.animate(Ext.applyIf({to:{top:d},duration:k.duration||125,callback:j},k))}else{h.setLocalY(d);if(j){j()}}}},getScrollDelta:function(){var e=this,d=e.scrollingViewEl.dom,c=e.context,b=e.body,a=0;if(c){a=Ext.fly(c.row).getOffsetsTo(d)[1]-b.getBorderPadding().beforeY;if(a>0){a=Math.max(a+e.getHeight()+e.floatingButtons.getHeight()-d.clientHeight-b.getBorderWidth("b"),0)}}return a},calculateLocalRowTop:function(b){var a=this.editingPlugin.grid;return Ext.fly(b).getOffsetsTo(a)[1]-a.el.getBorderWidth("t")+this.lastScrollTop},calculateEditorTop:function(a){return a-this.body.getBorderPadding().beforeY-this.lastScrollTop},getClientWidth:function(){var c=this,b=c.editingPlugin.grid,a;if(c.lockable){a=b.lockedGrid.getWidth()+b.normalGrid.view.el.dom.clientWidth-1}else{a=b.view.el.dom.clientWidth}return a},getEditor:function(a){var b=this;if(Ext.isNumber(a)){return b.query("[isFormField]")[a]}else{if(a.isHeader&&!a.isGroupHeader){return a.getEditor()}}},addFieldsForColumn:function(c,a){var e=this,b,d,g;if(Ext.isArray(c)){for(b=0,d=c.length;b<d;b++){e.addFieldsForColumn(c[b],a)}return}if(c.getEditor){g=c.getEditor(null,{xtype:"displayfield",getModelData:function(){return null}});if(c.align==="right"){g.fieldStyle="text-align:right"}if(c.xtype==="actioncolumn"){g.fieldCls+=" "+Ext.baseCSSPrefix+"form-action-col-field"}if(e.isVisible()&&e.context){if(g.is("displayfield")){e.renderColumnData(g,e.context.record,c)}else{g.suspendEvents();g.setValue(e.context.record.get(c.dataIndex));g.resumeEvents()}}if(c.hidden){e.onColumnHide(c)}else{if(c.rendered&&!a){e.onColumnShow(c)}}}},loadRecord:function(d){var j=this,a=j.getForm(),e=a.getFields(),h=e.items,b=h.length,c,g,k;for(c=0;c<b;c++){h[c].suspendEvents()}a.loadRecord(d);for(c=0;c<b;c++){h[c].resumeEvents()}k=a.isValid();if(j.errorSummary){if(k){j.hideToolTip()}else{j.showToolTip()}}j.updateButton(k);g=j.query(">displayfield");b=g.length;for(c=0;c<b;c++){j.renderColumnData(g[c],d)}},renderColumnData:function(n,j,c){var l=this,a=l.editingPlugin.grid,e=a.headerCt,m=l.scrollingView,p=m.dataSource,g=c||n.column,o=j.get(g.dataIndex),k=g.editRenderer||g.renderer,b,d,h;if(k){b={tdCls:"",style:""};d=p.indexOf(j);h=e.getHeaderIndex(g);o=k.call(g.scope||e.ownerCt,o,b,j,d,h,p,m)}n.setRawValue(o);n.resetOriginalValue()},beforeEdit:function(){var a=this,b;if(a.isVisible()&&a.errorSummary&&!a.autoCancel&&a.isDirty()){b=a.getScrollDelta();if(b){a.scrollingViewEl.scrollBy(0,b,true)}a.showToolTip();return false}},startEdit:function(a,g){var e=this,b=e.editingPlugin,d=b.grid,c=e.context=b.context;if(!e.rendered){e.width=e.getClientWidth();e.render(d.el,d.el.dom.firstChild);e.getFloatingButtons().render(e.el);e.onViewScroll()}else{e.syncFieldsHorizontalScroll()}if(e.isVisible()){e.reposition(true)}else{e.show()}e.onGridResize();c.grid.getSelectionModel().select(a);e.loadRecord(a)},syncButtonPosition:function(d){var b=this,a=b.getFloatingButtons(),c=b.scrollingViewEl.dom,e=this.getScrollDelta()-(c.scrollHeight-c.scrollTop-c.clientHeight);if(e>0){if(!b._buttonsOnTop){a.setButtonPosition("top");b._buttonsOnTop=true}d=0}else{if(b._buttonsOnTop){a.setButtonPosition("bottom");b._buttonsOnTop=false}}return d},syncEditorClip:function(){var b=this,c=b.getScrollDelta(),a;if(c){b.isOverflowing=true;a=b.floatingButtons.getHeight();if(c>0){b.clipBottom(Math.max(b.getHeight()-c+a,-a))}else{if(c<0){c=Math.abs(c);b.clipTop(Math.max(c,0))}}}else{if(b.isOverflowing){b.clearClip();b.isOverflowing=false}}},focusContextCell:function(){var a=this.getEditor(this.context.column);if(a&&a.focus){a.focus()}},cancelEdit:function(){var g=this,e=g.getForm(),a=e.getFields(),b=a.items,d=b.length,c;g.hide();e.clearInvalid();for(c=0;c<d;c++){b[c].suspendEvents()}e.reset();for(c=0;c<d;c++){b[c].resumeEvents()}},completeEdit:function(){var b=this,a=b.getForm();if(!a.isValid()){return false}a.updateRecord(b.context.record);b.hide();return true},onShow:function(){var a=this;a.callParent(arguments);a.reposition()},onHide:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.hideToolTip()}if(a.context){a.context.view.focusRow(a.context.record);a.context=null}},isDirty:function(){var b=this,a=b.getForm();return a.isDirty()},getToolTip:function(){return this.tooltip||(this.tooltip=new Ext.tip.ToolTip({cls:Ext.baseCSSPrefix+"grid-row-editor-errors",title:this.errorsText,autoHide:false,closable:true,closeAction:"disable",anchor:"left",anchorToTarget:false}))},hideToolTip:function(){var a=this,b=a.getToolTip();if(b.rendered){b.disable()}a.hiddenTip=false},showToolTip:function(){var a=this,b=a.getToolTip();b.showAt([0,0]);b.update(a.getErrors());a.repositionTip();b.enable()},repositionTip:function(){var j=this,k=j.getToolTip(),c=j.context,m=Ext.get(c.row),l=j.scrollingViewEl,e=l.dom.clientHeight,g=j.lastScrollTop,h=g+e,b=m.getHeight(),a=m.getOffsetsTo(j.context.view.body)[1],d=a+b;if(d>g&&a<h){k.showAt(k.getAlignToXY(l,"tl-tr",[15,m.getOffsetsTo(l)[1]]));j.hiddenTip=false}else{k.hide();j.hiddenTip=true}},getErrors:function(){var d=this,e=[],a=d.query(">[isFormField]"),c=a.length,b;for(b=0;b<c;b++){e=e.concat(Ext.Array.map(a[b].getErrors(),d.createErrorListItem))}if(!e.length&&!d.autoCancel&&d.isDirty()){e[0]=d.createErrorListItem(d.dirtyText)}return'<ul class="'+Ext.plainListCls+'">'+e.join("")+"</ul>"},createErrorListItem:function(a){return'<li class="'+Ext.baseCSSPrefix+'grid-row-editor-errors-item">'+a+"</li>"},beforeDestroy:function(){Ext.destroy(this.floatingButtons,this.tooltip);this.callParent()},clipBottom:function(a){this.el.setStyle("clip","rect(-1000px auto "+a+"px auto)")},clipTop:function(a){this.el.setStyle("clip","rect("+a+"px auto 1000px auto)")},clearClip:function(a){this.el.setStyle("clip",Ext.isIE8m||Ext.isIEQuirks?"rect(-1000px auto 1000px auto)":"auto")}},0,["roweditor"],["panel","form","component","container","roweditor","box"],{panel:true,form:true,component:true,container:true,roweditor:true,box:true},["widget.roweditor"],0,[Ext.grid,"RowEditor"],0));(Ext.cmd.derive("Ext.view.DropZone",Ext.dd.DropZone,{indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(k){var j=k.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!j){d=k.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g<a;g++){b=c[g];h=Ext.fly(b).getBox();if(d<=h.bottom){return b}}}return j},getIndicator:function(){var a=this;if(!a.indicator){a.indicator=new Ext.Component({html:a.indicatorHtml,cls:a.indicatorCls,ownerCt:a.view,floating:true,shadow:false})}return a.indicator},getPosition:function(c,a){var g=c.getXY()[1],b=Ext.fly(a).getRegion(),d;if((b.bottom-g)>=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,j=g.view,h=g.getPosition(d,b),l=j.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-j.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(j.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(j,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",j,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",j,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}},1,0,0,0,0,0,[Ext.view,"DropZone"],0));(Ext.cmd.derive("Ext.grid.ViewDropZone",Ext.view.DropZone,{indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var j=this.view,k=j.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;c<g;c++){b.records.push(a[c].copy())}}else{b.view.store.remove(b.records,b.view===j)}if(d&&e){h=k.indexOf(d);if(e!=="before"){h++}k.insert(h,b.records)}else{k.add(b.records)}j.getSelectionModel().select(b.records)}},0,0,0,0,0,0,[Ext.grid,"ViewDropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderResizer",Ext.AbstractPlugin,{disabled:false,config:{dynamic:false},colHeaderCls:Ext.baseCSSPrefix+"column-header",minColWidth:40,maxColWidth:1000,wResizeCursor:"col-resize",eResizeCursor:"col-resize",init:function(a){this.headerCt=a;a.on("render",this.afterHeaderRender,this,{single:true})},destroy:function(){if(this.tracker){this.tracker.destroy()}},afterHeaderRender:function(){var b=this.headerCt,a=b.el;b.mon(a,"mousemove",this.onHeaderCtMouseMove,this);this.tracker=new Ext.dd.DragTracker({disabled:this.disabled,onBeforeStart:Ext.Function.bind(this.onBeforeStart,this),onStart:Ext.Function.bind(this.onStart,this),onDrag:Ext.Function.bind(this.onDrag,this),onEnd:Ext.Function.bind(this.onEnd,this),tolerance:3,autoStart:300,el:a})},onHeaderCtMouseMove:function(b,l){var d=this,a,j,k,g,c,h;if(d.headerCt.dragging){if(d.activeHd){d.activeHd.el.dom.style.cursor="";delete d.activeHd}}else{j=b.getTarget("."+d.colHeaderCls,3,true);if(j){k=Ext.getCmp(j.id);if(k.isOnLeftEdge(b)){g=k.previousNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(g){h=d.headerCt.up("tablepanel");c=g.up("tablepanel");if(!((c===h)||((h.ownerCt.isXType("tablepanel"))&&h.ownerCt.view.lockedGrid===c))){g=null}}}else{if(k.isOnRightEdge(b)){g=k}else{g=null}}if(g){if(g.isGroupHeader){a=g.getGridColumns();g=a[a.length-1]}if(g&&!(g.fixed||(g.resizable===false)||d.disabled)){d.activeHd=g;k.el.dom.style.cursor=d.eResizeCursor;if(k.triggerEl){k.triggerEl.dom.style.cursor=d.eResizeCursor}}}else{k.el.dom.style.cursor="";if(k.triggerEl){k.triggerEl.dom.style.cursor=""}d.activeHd=null}}}},onBeforeStart:function(a){this.dragHd=this.activeHd;if(!!this.dragHd&&!this.headerCt.dragging){this.tracker.constrainTo=this.getConstrainRegion();return true}else{this.headerCt.dragging=false;return false}},getConstrainRegion:function(){var c=this,a=c.dragHd.el,d=0,b,e;if(c.headerCt.forceFit){b=c.dragHd.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(b){if(!c.headerInSameGrid(b)){b=null}d=b.getWidth()-c.minColWidth}}else{if((e=c.dragHd.up("tablepanel")).isLocked){d=c.dragHd.up("[scrollerOwner]").getWidth()-e.getWidth()-30}else{d=c.maxColWidth-a.getWidth()}}return c.adjustConstrainRegion(a.getRegion(),0,d,0,c.minColWidth)},onStart:function(h){var j=this,g=j.dragHd,b=g.el.getWidth(),d=g.getOwnerHeaderCt(),m,l,n,c,a,k,o;j.headerCt.dragging=true;j.origWidth=b;if(!j.dynamic){n=c=d.up("tablepanel");if(n.ownerLockable){c=n.ownerLockable}m=j.getLeftMarkerX(c);a=c.getLhsMarker();k=c.getRhsMarker();o=n.body.getHeight()+d.getHeight();l=d.getOffsetsTo(c)[1];a.setLocalY(l);k.setLocalY(l);a.setHeight(o);k.setHeight(o);j.setMarkerX(a,m);j.setMarkerX(k,m+b)}},onDrag:function(b){var a=this,c;if(a.dynamic){a.doResize()}else{c=this.headerCt.up("tablepanel");if(c.ownerLockable){c=c.ownerLockable}this.setMarkerX(this.getMovingMarker(c),this.calculateDragX(c))}},getMovingMarker:function(a){return a.getRhsMarker()},onEnd:function(a){this.headerCt.dragging=false;if(this.dragHd){if(!this.dynamic){var b=this.headerCt.up("tablepanel");if(b.ownerLockable){b=b.ownerLockable}this.setMarkerX(b.getLhsMarker(),-9999);this.setMarkerX(b.getRhsMarker(),-9999)}this.doResize()}},doResize:function(){var c=this,b=c.dragHd,a,d;if(b){d=c.tracker.getOffset("point");if(b.flex){delete b.flex}Ext.suspendLayouts();c.adjustColumnWidth(d[0]);if(c.headerCt.forceFit){a=b.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(a&&!c.headerInSameGrid(a)){a=null}if(a){delete a.flex;a.setWidth(a.getWidth()-d[0])}}Ext.resumeLayouts(true)}},headerInSameGrid:function(b){var a=this.dragHd.up("tablepanel");return !!b.up(a)},disable:function(){this.disabled=true;if(this.tracker){this.tracker.disable()}},enable:function(){this.disabled=false;if(this.tracker){this.tracker.enable()}},calculateDragX:function(a){return this.tracker.getXY("point")[0]-a.getX()-a.el.getBorderWidth("l")},getLeftMarkerX:function(a){return this.dragHd.getX()-a.getX()-a.el.getBorderWidth("l")-1},setMarkerX:function(b,a){b.setLocalX(a)},adjustConstrainRegion:function(g,d,e,a,c){return g.adjust(d,e,a,c)},adjustColumnWidth:function(a){this.dragHd.setWidth(this.origWidth+a)}},0,0,0,0,["plugin.gridheaderresizer"],0,[Ext.grid.plugin,"HeaderResizer"],0));(Ext.cmd.derive("Ext.grid.header.DragZone",Ext.dd.DragZone,{colHeaderSelector:"."+Ext.baseCSSPrefix+"column-header",colInnerSelector:"."+Ext.baseCSSPrefix+"column-header-inner",maxProxyWidth:120,constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el]);this.proxy.el.addCls(Ext.baseCSSPrefix+"grid-col-dd")},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getDragData:function(b){if(b.getTarget(this.colInnerSelector)){var d=b.getTarget(this.colHeaderSelector),a,c;if(d){a=Ext.getCmp(d.id);if(!this.headerCt.dragging&&a.draggable&&!(a.isOnLeftEdge(b)||a.isOnRightEdge(b))){c=document.createElement("div");c.innerHTML=Ext.getCmp(d.id).text;return{ddel:c,header:a}}}}return false},onBeforeDrag:function(){return !(this.headerCt.dragging||this.disabled)},onInitDrag:function(){this.headerCt.dragging=true;this.callParent(arguments)},onDragDrop:function(){this.headerCt.dragging=false;this.callParent(arguments)},afterRepair:function(){this.callParent();this.headerCt.dragging=false},getRepairXY:function(){return this.dragData.header.el.getXY()},disable:function(){this.disabled=true},enable:function(){this.disabled=false}},1,0,0,0,0,0,[Ext.grid.header,"DragZone"],0));(Ext.cmd.derive("Ext.grid.header.DropZone",Ext.dd.DropZone,{colHeaderCls:Ext.baseCSSPrefix+"column-header",proxyOffsets:[-4,-9],constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el])},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getTargetFromEvent:function(a){return a.getTarget("."+this.colHeaderCls)},getTopIndicator:function(){if(!this.topIndicator){this.self.prototype.topIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-top",html:"&#160;"},true);this.self.prototype.indicatorXOffset=Math.floor((this.topIndicator.dom.offsetWidth+1)/2)}return this.topIndicator},getBottomIndicator:function(){if(!this.bottomIndicator){this.self.prototype.bottomIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-bottom",html:"&#160;"},true)}return this.bottomIndicator},getLocation:function(d,b){var a=d.getXY()[0],c=Ext.fly(b).getRegion(),g;if((c.right-a)<=(c.right-c.left)/2){g="after"}else{g="before"}return{pos:g,header:Ext.getCmp(b.id),node:b}},positionIndicator:function(z,p,v){var y=this,q=z.header,g=y.getLocation(v,p),k=g.header,d=g.pos,c,u,m,s,t,a,b,l,n,x,w,o,j,r,h;if(k===y.lastTargetHeader&&d===y.lastDropPos){return}c=q.nextSibling("gridcolumn:not([hidden])");u=q.previousSibling("gridcolumn:not([hidden])");y.lastTargetHeader=k;y.lastDropPos=d;if(!k.draggable&&d==="before"&&k.getIndex()===0){return false}z.dropLocation=g;if((q!==k)&&((d==="before"&&c!==k)||(d==="after"&&u!==k))&&!k.isDescendantOf(q)){o=Ext.dd.DragDropManager.getRelated(y);j=o.length;r=0;for(;r<j;r++){h=o[r];if(h!==y&&h.invalidateDrop){h.invalidateDrop()}}y.valid=true;m=y.getTopIndicator();s=y.getBottomIndicator();if(d==="before"){t="bc-tl";a="tc-bl"}else{t="bc-tr";a="tc-br"}b=m.getAlignToXY(k.el,t);l=s.getAlignToXY(k.el,a);n=y.headerCt.el;x=n.getX()-y.indicatorXOffset;w=n.getX()+n.getWidth();b[0]=Ext.Number.constrain(b[0],x,w);l[0]=Ext.Number.constrain(l[0],x,w);m.setXY(b);s.setXY(l);m.show();s.show()}else{y.invalidateDrop()}},invalidateDrop:function(){this.valid=false;this.hideIndicators()},onNodeOver:function(c,h,g,d){var j=this,l=d.header,a,m,b,k;if(d.header.el.dom===c){a=false}else{d.isLock=d.isUnlock=false;m=j.getLocation(g,c).header;a=(l.ownerCt===m.ownerCt);if(!a&&(!l.ownerCt.sealed&&!m.ownerCt.sealed)){a=true;b=l.up("tablepanel");k=m.up("tablepanel");d.isLock=k.isLocked&&!b.isLocked;d.isUnlock=!k.isLocked&&b.isLocked;if((d.isUnlock&&l.lockable===false)||(d.isLock&&!l.isLockable())){a=false}}}if(a){j.positionIndicator(d,c,g)}else{j.valid=false}return j.valid?j.dropAllowed:j.dropNotAllowed},hideIndicators:function(){var a=this;a.getTopIndicator().hide();a.getBottomIndicator().hide();a.lastTargetHeader=a.lastDropPos=null},onNodeOut:function(){this.hideIndicators()},onNodeDrop:function(p,c,s,v){if(this.valid){var r=v.header,j=v.dropLocation,m=j.header,u=r.ownerCt,n=u.items.indexOf(r),a=m.ownerCt,q=a.items.indexOf(m),k=this.headerCt,d=k.columnManager,b=d.getHeaderIndex(r),t=d.getHeaderIndex(m),o=r.isGroupHeader?r.query(":not([isGroupHeader])").length:1,l=u===a,h,g;if(j.pos==="after"){q++;t+=m.isGroupHeader?m.query(":not([isGroupHeader])").length:1}if(v.isLock){h=u.up("[scrollerOwner]");h.lock(r,q);v.isLock=false;this.onNodeDrop(p,c,s,v)}else{if(v.isUnlock){h=u.up("[scrollerOwner]");h.unlock(r,q);v.isUnlock=false;this.onNodeDrop(p,c,s,v)}else{this.invalidateDrop();g=r.getWidth();if(l){if(q===n){k.onHeaderMoved(r,o,b,t);return}if(q>n){q-=1}}Ext.suspendLayouts();if(l){a.move(n,q)}else{u.remove(r,false);a.insert(q,r)}if(a.isGroupHeader){if(!l){r.savedFlex=r.flex;delete r.flex;r.width=g}}else{if(r.savedFlex){r.flex=r.savedFlex;delete r.width}}k.purgeCache();Ext.resumeLayouts(true);k.onHeaderMoved(r,o,b,t)}}}}},1,0,0,0,0,0,[Ext.grid.header,"DropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderReorderer",Ext.AbstractPlugin,{init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}},0,0,0,0,["plugin.gridheaderreorderer"],0,[Ext.grid.plugin,"HeaderReorderer"],0));(Ext.cmd.derive("Ext.grid.header.Container",Ext.container.Container,{border:true,baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isColumn){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isColumn&&(!a.items||a.items.length===0)){a.isContainer=false;a.layout={type:"container",calculate:Ext.emptyFn}}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretch"},a.initialConfig.layout);if(a.isRootHeader){a.grid.columnManager=a.columnManager=new Ext.grid.ColumnManager(a)}}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var m=this,k=m.items.items,j=k.length,g=0,b=e.length,l,d,a,h;for(l=0;l<b;l++){a=e[l];for(h=j;h--;){d=k[h];if(d.getStateId&&d.getStateId()==a.id){if(g!==h){m.moveHeader(h,g)}if(d.applyColumnState){d.applyColumnState(a)}++g;break}}}},getColumnsState:function(){var b=this,a=[],c;b.items.each(function(d){c=d.getColumnState&&d.getColumnState();if(c){a.push(c)}});return a},onAdd:function(b){var a=this;if(!b.headerId){b.headerId=b.initialConfig.id||Ext.id(null,"header-")}if(!b.getStateId()){b.stateId=b.initialConfig.id||("h"+(++a.headerCounter))}a.callParent(arguments);a.onColumnsChanged()},onMove:function(){this.callParent(arguments);this.onColumnsChanged()},onShow:function(){this.callParent(arguments);this.onColumnsChanged()},onColumnsChanged:function(){var a=this;while(a){a.purgeCache();if(a.isRootHeader){break}a=a.ownerCt}if(a&&a.rendered){a.fireEvent("columnschanged",a)}},onRemove:function(d){var b=this,a=b.ownerCt;b.callParent(arguments);if(!b.destroying){b.onColumnsChanged();if(b.isGroupHeader&&!b.items.getCount()&&a){b.detachComponent(d);Ext.suspendLayouts();a.remove(b);Ext.resumeLayouts(true)}}},applyDefaults:function(b){var a;if(b&&!b.isComponent&&b.xtype=="rownumberer"){a=b}else{a=this.callParent(arguments);if(!b.isGroupHeader&&!("width" in a)&&!a.flex){a.width=this.defaultWidth}}return a},setSortState:function(){var a=this.up("[store]").store,c=a.getFirstSorter(),b;if(c){b=this.down("gridcolumn[dataIndex="+c.property+"]");if(b){b.setSortState(c.direction,false,true)}}else{this.clearOtherSortStates(null)}},getHeaderMenu:function(){var b=this.getMenu(),a;if(b){a=b.child("#columnItem");if(a){return a.menu}}return null},onHeaderVisibilityChange:function(e,d){var b=this,c=b.getHeaderMenu(),a;b.purgeCache();if(c){a=b.getMenuItemForHeader(c,e);if(a){a.setChecked(d,true)}if(c.isVisible()){b.menuTask.delay(50)}}},updateMenuDisabledState:function(h){var g=this,d=g.query(":not([hidden])"),c,a=d.length,e,b,j;if(!h){h=g.getMenu()}for(c=0;c<a;++c){e=d[c];b=g.getMenuItemForHeader(h,e);if(b){j=e.isHideable()?"enable":"disable";if(b.menu){j+="CheckChange"}b[j]()}}},getMenuItemForHeader:function(a,b){return b?a.down("menucheckitem[headerId="+b.id+"]"):null},onHeaderShow:function(c){var b=this,a=b.ownerCt;if(b.forceFit){delete b.flex}b.onHeaderVisibilityChange(c,true);if(!c.isGroupHeader){if(a){a.onHeaderShow(b,c)}}b.fireEvent("columnshow",b,c);b.fireEvent("columnschanged",this)},onHeaderHide:function(c){var b=this,a=b.ownerCt;b.onHeaderVisibilityChange(c,false);if(!c.isGroupHeader){if(a){a.onHeaderHide(b,c)}}b.fireEvent("columnhide",b,c);b.fireEvent("columnschanged",this)},tempLock:function(){this.ddLock=true;Ext.Function.defer(function(){this.ddLock=false},200,this)},onHeaderResize:function(g,b,e){var d=this,a=d.view,c=d.ownerCt;if(a&&a.body.dom){d.tempLock();if(c){c.onHeaderResize(d,g,b)}}d.fireEvent("columnresize",this,g,b)},onHeaderClick:function(c,b,a){c.fireEvent("headerclick",this,c,b,a);this.fireEvent("headerclick",this,c,b,a)},onHeaderContextMenu:function(c,b,a){c.fireEvent("headercontextmenu",this,c,b,a);this.fireEvent("headercontextmenu",this,c,b,a)},onHeaderTriggerClick:function(d,c,a){var b=this;if(d.fireEvent("headertriggerclick",b,d,c,a)!==false&&b.fireEvent("headertriggerclick",b,d,c,a)!==false){b.showMenuBy(a,d)}},showMenuBy:function(b,g){var d=this.getMenu(),e=d.down("#ascItem"),c=d.down("#descItem"),a;d.activeHeader=d.ownerButton=g;g.setMenuActive(true);a=g.sortable?"enable":"disable";if(e){e[a]()}if(c){c[a]()}d.showBy(b)},onMenuHide:function(a){a.activeHeader.setMenuActive(false)},moveHeader:function(a,b){this.tempLock();this.onHeaderMoved(this.move(a,b),1,a,b)},purgeCache:function(){var a=this,b=a.menu;a.gridDataColumns=a.hideableColumns=null;if(a.columnManager){a.columnManager.invalidate()}if(b&&b.hidden){b.hide();b.destroy();a.menu=null}},onHeaderMoved:function(g,a,c,e){var d=this,b=d.ownerCt;if(b&&b.onHeaderMove){b.onHeaderMove(d,g,a,c,e)}d.fireEvent("columnmove",d,g,c,e)},getMenu:function(){var a=this;if(!a.menu){a.menu=new Ext.menu.Menu({hideOnParentHide:false,items:a.getMenuItems(),listeners:{hide:a.onMenuHide,scope:a}});a.fireEvent("menucreate",a,a.menu)}a.updateMenuDisabledState(a.menu);return a.menu},getMenuItems:function(){var c=this,b=[],a=c.enableColumnHide?c.getColumnMenu(c):null;if(c.sortable){b=[{itemId:"ascItem",text:c.sortAscText,cls:c.menuSortAscCls,handler:c.onSortAscClick,scope:c},{itemId:"descItem",text:c.sortDescText,cls:c.menuSortDescCls,handler:c.onSortDescClick,scope:c}]}if(a&&a.length){if(c.sortable){b.push("-")}b.push({itemId:"columnItem",text:c.columnsText,cls:c.menuColsIcon,menu:a,hideOnClick:false})}return b},onSortAscClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("ASC")},onSortDescClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("DESC")},getColumnMenu:function(g){var c=[],b=0,e,a=g.query(">gridcolumn[hideable]"),h=a.length,d;for(;b<h;b++){e=a[b];d=new Ext.menu.CheckItem({text:e.menuText||e.text,checked:!e.hidden,hideOnClick:false,headerId:e.id,menu:e.isGroupHeader?this.getColumnMenu(e):undefined,checkHandler:this.onColumnCheckChange,scope:this});c.push(d);e.on({destroy:Ext.Function.bind(d.destroy,d)})}return c},onColumnCheckChange:function(a,b){var c=Ext.getCmp(a.headerId);c[b?"show":"hide"]()},getColumnCount:function(){return this.getGridColumns().length},getFullWidth:function(){var c=0,b=this.getVisibleGridColumns(),e=b.length,a=0,d;for(;a<e;a++){d=b[a];if(d.getDesiredWidth){c+=d.getDesiredWidth()||0}else{c+=d.getWidth()}}return c},clearOtherSortStates:function(a){var c=this.getGridColumns(),d=c.length,b=0;for(;b<d;b++){if(c[b]!==a){c[b].setSortState(null,true)}}},getVisibleGridColumns:function(){var c=this.getGridColumns(),b=[],a=c.length,d;for(d=0;d<a;d++){if(!c[d].hidden){b[b.length]=c[d]}}return b},getGridColumns:function(h,a){if(!h&&this.gridDataColumns){return this.gridDataColumns}var g=this,k=h||[],e,b,d,j,c;a=a||g.hidden;if(g.items){e=g.items.items;for(b=0,d=e.length;b<d;b++){j=e[b];if(j.isGroupHeader){j.getGridColumns(k,a)}else{j.hiddenAncestor=a;k.push(j)}}}if(!h){g.gridDataColumns=k}if(!h&&d){for(b=0,d=k.length;b<d;b++){j=k[b];j.isFirstVisible=j.isLastVisible=false;if(!(j.hidden||j.hiddenAncestor)){if(!c){j.isFirstVisible=true}c=j}}if(c){c.isLastVisible=true}}return k},getHideableColumns:function(){var b=this,a=b.hideableColumns;if(!a){a=b.hideableColumns=b.query("[hideable]")}return a},getHeaderIndex:function(a){return this.columnManager.getHeaderIndex(a)},getHeaderAtIndex:function(a){return this.columnManager.getHeaderAtIndex(a)},getVisibleHeaderClosestToIndex:function(a){return this.columnManager.getVisibleHeaderClosestToIndex(a)},autoSizeColumn:function(b){var a=this.view;if(a){a.autoSizeColumn(b)}}},0,["headercontainer"],["component","container","box","headercontainer"],{component:true,container:true,box:true,headercontainer:true},["widget.headercontainer"],0,[Ext.grid.header,"Container"],0));(Ext.cmd.derive("Ext.grid.column.Column",Ext.grid.header.Container,{alternateClassName:"Ext.grid.Column",baseCls:Ext.baseCSSPrefix+"column-header",hoverCls:Ext.baseCSSPrefix+"column-header-over",handleWidth:4,sortState:null,possibleSortStates:["ASC","DESC"],childEls:["titleEl","triggerEl","textEl"],noWrap:true,renderTpl:'<div id="{id}-titleEl" {tipMarkup}class="'+Ext.baseCSSPrefix+'column-header-inner"><span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'column-header-text{childElCls}">{text}</span><tpl if="!menuDisabled"><div id="{id}-triggerEl" class="'+Ext.baseCSSPrefix+'column-header-trigger{childElCls}"></div></tpl></div>{%this.renderContainer(out,values)%}',dataIndex:null,text:"&#160;",menuText:null,emptyCellText:"&#160;",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,isColumn:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",clickTargetName:"titleEl",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(b.header!=null){b.text=b.header;b.header=null}if(!b.triStateSort){b.possibleSortStates.length=2}if(b.columns!=null){b.isGroupHeader=true;b.items=b.columns;b.columns=b.flex=b.width=null;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=b.resizable=false;b.align="center"}else{if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:b.clickTargetName,click:b.onTitleElClick,contextmenu:b.onTitleElContextMenu,mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b};if(b.resizable){a.dblclick=b.onTitleElDblClick}b.on(a)},onAdd:function(a){if(a.isColumn){a.isSubHeader=true;a.addCls(this.groupSubHeaderCls)}if(this.hidden){a.hide()}this.callParent(arguments)},onRemove:function(a){if(a.isSubHeader){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls)}this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this;a.applyColumnsState(b.columns);if(b.hidden!=null){a.hidden=b.hidden}if(b.locked!=null){a.locked=b.locked}if(b.sortable!=null){a.sortable=b.sortable}if(b.width!=null){a.flex=null;a.width=b.width}else{if(b.flex!=null){a.width=null;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d<a;d++){c.push(b[d].getColumnState())}if(c.length){g.columns=c}}else{if(e.isSubHeader&&e.ownerCt.hidden){delete e.hidden}}if("width" in g){delete g.flex}return g},getStateId:function(){return this.stateId||this.headerId},setText:function(a){this.text=a;if(this.rendered){this.textEl.update(a)}},getIndex:function(){return this.isGroupColumn?false:this.getOwnerHeaderCt().getHeaderIndex(this)},getVisibleIndex:function(){return this.isGroupColumn?false:Ext.Array.indexOf(this.getOwnerHeaderCt().getVisibleGridColumns(),this)},beforeRender:function(){var b=this,a=b.up("tablepanel");b.callParent();if(a&&(!b.sortable||a.sortableColumns===false)&&!b.groupable&&!b.lockable&&(a.enableColumnHide===false||!b.getOwnerHeaderCt().getHideableColumns().length)){b.menuDisabled=true}b.protoEl.unselectable()},afterRender:function(){var b=this,a=b.triggerEl,c;b.callParent(arguments);if(!Ext.isIE8||!Ext.isStrict){b.mon(b.getFocusEl(),{focus:b.onTitleMouseOver,blur:b.onTitleMouseOut,scope:b})}if(a&&b.self.triggerElWidth===undefined){a.setStyle("display","block");b.self.triggerElWidth=a.getWidth();a.setStyle("display","")}b.keyNav=new Ext.util.KeyNav(b.el,{enter:b.onEnterKey,down:b.onDownKey,scope:b})},afterComponentLayout:function(d,a,c,g){var e=this,b=e.getOwnerHeaderCt();e.callParent(arguments);if(b&&(c!=null||e.flex)&&d!==c){b.onHeaderResize(e,d,true)}},onDestroy:function(){var a=this;Ext.destroy(a.textEl,a.keyNav,a.field);a.keyNav=null;a.callParent(arguments)},onTitleMouseOver:function(){this.titleEl.addCls(this.hoverCls)},onTitleMouseOut:function(){this.titleEl.removeCls(this.hoverCls)},onDownKey:function(a){if(this.triggerEl){this.onTitleElClick(a,this.triggerEl.dom||this.el.dom)}},onEnterKey:function(a){this.onTitleElClick(a,this.el.dom)},onTitleElDblClick:function(g,a){var c=this,b,d;if(c.isOnLeftEdge(g)){b=c.previousNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(b&&b.getOwnerHeaderCt()===c.getOwnerHeaderCt()){b.autoSize()}}else{if(c.isOnRightEdge(g)){if(c.isGroupHeader&&g.getPoint().isContainedBy(c.layout.innerCt)){d=c.query("gridcolumn:not([hidden]):not([isGroupHeader])");this.getOwnerHeaderCt().autoSizeColumn(d[d.length-1]);return}c.autoSize()}}},autoSize:function(){var b=this,c,e,a,d;if(b.isGroupHeader){c=b.query("gridcolumn:not([hidden]):not([isGroupHeader])");e=c.length;d=this.getOwnerHeaderCt();Ext.suspendLayouts();for(a=0;a<e;a++){d.autoSizeColumn(c[a])}Ext.resumeLayouts(true);return}this.getOwnerHeaderCt().autoSizeColumn(this)},onTitleElClick:function(d,b){var c=this,a=c.getOwnerHeaderCt();if(a&&!a.ddLock){if(c.triggerEl&&(d.target===c.triggerEl.dom||b===c.triggerEl.dom||d.within(c.triggerEl))){a.onHeaderTriggerClick(c,d,b)}else{if(d.getKey()||(!c.isOnLeftEdge(d)&&!c.isOnRightEdge(d))){c.toggleSortState();a.onHeaderClick(c,d,b)}}}},onTitleElContextMenu:function(d,b){var c=this,a=c.getOwnerHeaderCt();if(a&&!a.ddLock){a.onHeaderContextMenu(c,d,b)}},processEvent:function(g,b,a,c,d,h){return this.fireEvent.apply(this,arguments)},toggleSortState:function(){var b=this,a,c;if(b.sortable){a=Ext.Array.indexOf(b.possibleSortStates,b.sortState);c=(a+1)%b.possibleSortStates.length;b.setSortState(b.possibleSortStates[c])}},doSort:function(c){var b=this.up("tablepanel"),a=b.store;if(b.ownerLockable&&a.isNodeStore){a=b.ownerLockable.lockedGrid.store}a.sort({property:this.getSortParam(),direction:c})},getSortParam:function(){return this.dataIndex},setSortState:function(g,e,c){var d=this,h=d.ascSortCls,b=d.descSortCls,a=d.getOwnerHeaderCt(),j=d.sortState;g=g||null;if(!d.sorting&&j!==g&&(d.getSortParam()!=null)){if(g&&!c){d.sorting=true;d.doSort(g);d.sorting=false}switch(g){case"DESC":d.addCls(b);d.removeCls(h);break;case"ASC":d.addCls(h);d.removeCls(b);break;default:d.removeCls([h,b])}if(a&&!d.triStateSort&&!e){a.clearOtherSortStates(d)}d.sortState=g;if(d.triStateSort||g!=null){a.fireEvent("sortchange",a,d,g)}}},isHideable:function(){var a={hideCandidate:this,result:this.hideable};if(a.result){this.ownerCt.bubble(this.hasOtherMenuEnabledChildren,null,[a])}return a.result},hasOtherMenuEnabledChildren:function(a){var b,c;if(!this.isXType("headercontainer")){a.result=false;return false}b=this.query(">:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},isLocked:function(){return this.locked||!!this.up("[isColumn][locked]","[isRootHeader]")},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var j=this,e=j.getOwnerHeaderCt(),b=j.ownerCt,a,k,h,g,d;if(!j.isVisible()){return j}if(!e){j.callParent();return j}if(e.forceFit){j.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(j.flex){j.savedWidth=j.getWidth();j.flex=null}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==j){j.ownerCt.hide();return}}Ext.suspendLayouts();if(j.isGroupHeader){h=j.items.items;for(d=0,g=h.length;d<g;d++){k=h[d];if(!k.hidden){k.hide(true)}}}j.callParent();e.onHeaderHide(j);Ext.resumeLayouts(true);return j},show:function(g,h){var n=this,k=n.getOwnerHeaderCt(),d=n.ownerCt,m,l,j,o,b,a,e,c,p=Ext.grid.header.Container.prototype.defaultWidth;if(n.isVisible()){return n}if(!n.rendered){n.hidden=false;return}a=k.el.getViewSize().width-(k.view.el.dom.scrollHeight>k.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(k.forceFit){m=Ext.ComponentQuery.query(":not([flex])",k.getVisibleGridColumns());if(m.length){n.width=n.savedWidth||n.width||p}else{m=k.getVisibleGridColumns();l=m.length;c=n.visibleSiblingCount;b=(n.savedWidth||n.width||p);b=Math.min(b*(c/l),p,Math.max(a-(l*p),p));n.width=null;n.flex=b;a-=b;e=0;for(j=0;j<l;j++){o=m[j];o.flex=(o.width||o.getWidth());e+=o.flex;o.width=null}for(j=0;j<l;j++){o=m[j];o.flex=o.flex/e*a}}}Ext.suspendLayouts();if(n.isSubHeader&&d.hidden){d.show(false,true)}n.callParent(arguments);if(n.isGroupHeader&&h!==true&&!n.query(":not([hidden])").length){m=n.items.items;for(j=0,l=m.length;j<l;j++){o=m[j];if(o.hidden){o.show(true)}}}Ext.resumeLayouts(true);d=n.getOwnerHeaderCt();if(d){d.onHeaderShow(n)}},getDesiredWidth:function(){var a=this;if(a.rendered&&a.componentLayout&&a.componentLayout.lastComponentSize){return a.componentLayout.lastComponentSize.width}else{if(a.flex){return a.width}else{return a.width}}},getCellSelector:function(){return"."+Ext.baseCSSPrefix+"grid-cell-"+this.getItemId()},getCellInnerSelector:function(){return this.getCellSelector()+" ."+Ext.baseCSSPrefix+"grid-cell-inner"},isOnLeftEdge:function(a){return(a.getXY()[0]-this.getX()<=this.handleWidth)},isOnRightEdge:function(a){return(this.getX()+this.getWidth()-a.getXY()[0]<=this.handleWidth)},setMenuActive:function(a){this.titleEl[a?"addCls":"removeCls"](this.headerOpenCls)}},0,["gridcolumn"],["component","gridcolumn","container","box","headercontainer"],{component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.gridcolumn"],0,[Ext.grid.column,"Column",Ext.grid,"Column"],0));(Ext.cmd.derive("Ext.grid.column.Action",Ext.grid.column.Column,{alternateClassName:"Ext.grid.ActionColumn",actionIdRe:new RegExp(Ext.baseCSSPrefix+"action-col-(\\d+)"),altText:"",menuText:"<i>Actions</i>",sortable:false,innerCls:Ext.baseCSSPrefix+"grid-cell-inner-action-col",constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e<a;++e){if(c[e].getClass){h=true;break}}if(g.origRenderer||h){g.hasCustomRenderer=true}},defaultRenderer:function(o,r,e,a,d,n,m){var l=this,g=Ext.baseCSSPrefix,q=l.origScope||l,k=l.items,h=k.length,c=0,p,j,b,s;j=Ext.isFunction(l.origRenderer)?l.origRenderer.apply(q,arguments)||"":"";r.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";for(;c<h;c++){p=k[c];b=p.disabled||(p.isDisabled?p.isDisabled.call(p.scope||q,m,a,d,p,e):false);s=b?null:(p.tooltip||(p.getTip?p.getTip.apply(p.scope||q,arguments):null));if(!p.hasActionConfiguration){p.stopSelection=l.stopSelection;p.disable=Ext.Function.bind(l.disableAction,l,[c],0);p.enable=Ext.Function.bind(l.enableAction,l,[c],0);p.hasActionConfiguration=true}j+='<img role="button" alt="'+(p.altText||l.altText)+'" src="'+(p.icon||Ext.BLANK_IMAGE_URL)+'" class="'+g+"action-col-icon "+g+"action-col-"+String(c)+" "+(b?g+"item-disabled":" ")+" "+(Ext.isFunction(p.getClass)?p.getClass.apply(p.scope||q,arguments):(p.iconCls||l.iconCls||""))+'"'+(s?' data-qtip="'+s+'"':"")+" />"}return j},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,r){var j=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(j.actionIdRe))){q=j.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||j.origScope||j,n,b,l,q,d):false);if(q&&!a){if(k=="click"||(o==h.ENTER||o==h.SPACE)){m=q.handler||j.handler;if(m){m.call(q.scope||j.origScope||j,n,b,l,q,h,d,r)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return j.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}},1,["actioncolumn"],["component","gridcolumn","container","actioncolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,actioncolumn:true,box:true,headercontainer:true},["widget.actioncolumn"],0,[Ext.grid.column,"Action",Ext.grid,"ActionColumn"],0));(Ext.cmd.derive("Ext.grid.column.Boolean",Ext.grid.column.Column,{alternateClassName:"Ext.grid.BooleanColumn",trueText:"true",falseText:"false",undefinedText:"&#160;",defaultRenderer:function(a){if(a===undefined){return this.undefinedText}if(!a||a==="false"){return this.falseText}return this.trueText}},0,["booleancolumn"],["booleancolumn","component","gridcolumn","container","box","headercontainer"],{booleancolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.booleancolumn"],0,[Ext.grid.column,"Boolean",Ext.grid,"BooleanColumn"],0));(Ext.cmd.derive("Ext.grid.column.CheckColumn",Ext.grid.column.Column,{alternateClassName:"Ext.ux.CheckColumn",align:"center",stopSelection:true,tdCls:Ext.baseCSSPrefix+"grid-cell-checkcolumn",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-checkcolumn",clickTargetName:"el",constructor:function(){this.addEvents("beforecheckchange","checkchange");this.scope=this;this.callParent(arguments)},processEvent:function(h,k,o,b,j,d,c,p){var g=this,n=h==="keydown"&&d.getKey(),a=h=="mousedown";if(!g.disabled&&(a||(n==d.ENTER||n==d.SPACE))){var l=g.dataIndex,m=!c.get(l);if(g.fireEvent("beforecheckchange",g,b,m)!==false){c.set(l,m);g.fireEvent("checkchange",g,b,m);if(a){d.stopEvent()}if(!g.stopSelection){k.selModel.selectByPosition({row:b,column:j})}return false}else{return !g.stopSelection}}else{return g.callParent(arguments)}},onEnable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).removeCls(b.disabledCls);if(!a){b.fireEvent("enable",b)}},onDisable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).addCls(b.disabledCls);if(!a){b.fireEvent("disable",b)}},renderer:function(b,c){var d=Ext.baseCSSPrefix,a=[d+"grid-checkcolumn"];if(this.disabled){c.tdCls+=" "+this.disabledCls}if(b){a.push(d+"grid-checkcolumn-checked")}return'<img class="'+a.join(" ")+'" src="'+Ext.BLANK_IMAGE_URL+'"/>'}},1,["checkcolumn"],["checkcolumn","component","gridcolumn","container","box","headercontainer"],{checkcolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.checkcolumn"],0,[Ext.grid.column,"CheckColumn",Ext.ux,"CheckColumn"],0));(Ext.cmd.derive("Ext.grid.column.Date",Ext.grid.column.Column,{alternateClassName:"Ext.grid.DateColumn",initComponent:function(){if(!this.format){this.format=Ext.Date.defaultFormat}this.callParent(arguments)},defaultRenderer:function(a){return Ext.util.Format.date(a,this.format)}},0,["datecolumn"],["component","gridcolumn","container","datecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,datecolumn:true,box:true,headercontainer:true},["widget.datecolumn"],0,[Ext.grid.column,"Date",Ext.grid,"DateColumn"],0));(Ext.cmd.derive("Ext.grid.column.Number",Ext.grid.column.Column,{alternateClassName:"Ext.grid.NumberColumn",format:"0,000.00",defaultRenderer:function(a){return Ext.util.Format.number(a,this.format)}},0,["numbercolumn"],["component","gridcolumn","container","box","headercontainer","numbercolumn"],{component:true,gridcolumn:true,container:true,box:true,headercontainer:true,numbercolumn:true},["widget.numbercolumn"],0,[Ext.grid.column,"Number",Ext.grid,"NumberColumn"],0));(Ext.cmd.derive("Ext.grid.column.RowNumberer",Ext.grid.column.Column,{alternateClassName:"Ext.grid.RowNumberer",text:"&#160",width:23,sortable:false,draggable:false,autoLock:true,lockable:false,align:"right",constructor:function(a){var b=this;b.width=b.width;b.callParent(arguments);b.scope=b},resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:Ext.baseCSSPrefix+"row-numberer",tdCls:Ext.baseCSSPrefix+"grid-cell-row-numberer "+Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-numberer",rowspan:undefined,renderer:function(h,a,e,b,d,j){var c=this.rowspan,g=j.currentPage,k=e.index;if(c){a.tdAttr='rowspan="'+c+'"'}if(k==null){k=b;if(g>1){k+=(g-1)*j.pageSize}}return k+1}},1,["rownumberer"],["rownumberer","component","gridcolumn","container","box","headercontainer"],{rownumberer:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.rownumberer"],0,[Ext.grid.column,"RowNumberer",Ext.grid,"RowNumberer"],0));(Ext.cmd.derive("Ext.grid.column.Template",Ext.grid.column.Column,{alternateClassName:"Ext.grid.TemplateColumn",initComponent:function(){var a=this;a.tpl=(!Ext.isPrimitive(a.tpl)&&a.tpl.compile)?a.tpl:new Ext.XTemplate(a.tpl);a.hasCustomRenderer=true;a.callParent(arguments)},defaultRenderer:function(c,d,a){var b=Ext.apply({},a.data,a.getAssociatedData());return this.tpl.apply(b)}},0,["templatecolumn"],["templatecolumn","component","gridcolumn","container","box","headercontainer"],{templatecolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.templatecolumn"],0,[Ext.grid.column,"Template",Ext.grid,"TemplateColumn"],0));(Ext.cmd.derive("Ext.grid.feature.Feature",Ext.util.Observable,{wrapsItem:false,isFeature:true,disabled:false,hasFeatureEvent:true,eventPrefix:null,eventSelector:null,view:null,grid:null,constructor:function(a){this.initialConfig=a;this.callParent(arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,destroy:function(){this.clearListeners()},getFireEventArgs:function(b,a,c,d){return[b,a,c,d]},vetoEvent:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}},1,0,0,0,["feature.feature"],0,[Ext.grid.feature,"Feature"],0));(Ext.cmd.derive("Ext.grid.feature.AbstractSummary",Ext.grid.feature.Feature,{summaryRowCls:Ext.baseCSSPrefix+"grid-row-summary",summaryTableCls:Ext.plainTableCls+" "+Ext.baseCSSPrefix+"grid-table",summaryRowSelector:"."+Ext.baseCSSPrefix+"grid-row-summary",summaryRowTpl:{before:function(a,b){if(a.record.isSummary){this.summaryFeature.outputSummaryRecord(a.record,a,b);return false}},priority:1000},showSummaryRow:true,init:function(){var a=this;a.view.summaryFeature=a;a.rowTpl=a.view.self.prototype.rowTpl;a.view.addRowTpl(a.summaryRowTpl).summaryFeature=a},toggleSummaryRow:function(a){this.showSummaryRow=!!a},outputSummaryRecord:function(g,l,d){var h=l.view,a=h.rowValues,c=l.columns||h.headerCt.getVisibleGridColumns(),k=c.length,e,b,j={view:h,record:g,rowStyle:"",rowClasses:[this.summaryRowCls],itemClasses:[],recordIndex:-1,rowId:h.getRowId(g),columns:c};for(e=0;e<k;e++){b=c[e];b.savedRenderer=b.renderer;if(b.summaryRenderer){b.renderer=b.summaryRenderer}else{if(!b.summaryType){b.renderer=Ext.emptyFn}}if(!b.dataIndex){b.dataIndex=b.id}}h.rowValues=j;h.self.prototype.rowTpl.applyOut(j,d);h.rowValues=a;for(e=0;e<k;e++){b=c[e];b.renderer=b.savedRenderer;b.savedRenderer=null}},getSummary:function(b,c,e,d){var a=d.records;if(c){if(Ext.isFunction(c)){return b.getAggregate(c,null,a,[e])}switch(c){case"count":return a.length;case"min":return b.getMin(a,e);case"max":return b.getMax(a,e);case"sum":return b.getSum(a,e);case"average":return b.getAverage(a,e);default:return""}}},generateSummaryData:function(){var l=this,o=l.view.store,c=o.groups.items,h=o.proxy.reader,j=c.length,a=l.getGroupField(),e={},k=l.lockingPartner,d,p,g,m,r,b,q,n;if(l.remoteRoot&&h.rawData){b=true;n={};m=h.root;h.root=l.remoteRoot;h.buildExtractors(true);r=h.getRoot(h.rawData)||[];j=r.length;if(!h.convertRecordData){h.buildExtractors()}for(d=0;d<j;++d){q={};h.convertRecordData(q,r[d]);n[q[a]]=q}h.root=m;h.buildExtractors(true)}for(d=0;d<j;++d){p=c[d];if(b||p.isDirty()||!p.hasAggregate()){if(b){g=l.populateRemoteRecord(p,n)}else{g=l.populateRecord(p)}if(!k||(l.view.ownerCt===l.view.ownerCt.ownerLockable.normalGrid)){p.commit()}}else{g=p.getAggregateRecord()}e[p.key]=g}return e},populateRemoteRecord:function(e,c){var a=e.getAggregateRecord(true),b=c[e.key],d;a.beginEdit();for(d in b){if(b.hasOwnProperty(d)){if(d!==a.idProperty){a.set(d,b[d])}}}a.endEdit(true);a.commit(true);return a},populateRecord:function(k){var g=this,h=g.grid.ownerLockable?g.grid.ownerLockable.view:g.view,j=g.view.store,d=k.getAggregateRecord(),b=h.headerCt.getGridColumns(),e=b.length,c,a,l;d.beginEdit();for(c=0;c<e;++c){a=b[c];l=a.dataIndex||a.id;d.set(l,g.getSummary(j,a.summaryType,l,k))}d.endEdit(true);d.commit();return d}},0,0,0,0,["feature.abstractsummary"],0,[Ext.grid.feature,"AbstractSummary"],0));(Ext.cmd.derive("Ext.grid.feature.GroupStore",Ext.util.Observable,{isStore:true,constructor:function(c,a){var b=this;b.superclass.constructor.apply(b,arguments);b.groupingFeature=c;b.bindStore(a);b.processStore(a);b.view.dataSource=b},bindStore:function(a){var b=this;if(b.store){Ext.destroy(b.storeListeners);b.store=null}if(a){b.storeListeners=a.on({bulkremove:b.onBulkRemove,add:b.onAdd,update:b.onUpdate,refresh:b.onRefresh,clear:b.onClear,scope:b,destroyable:true});b.store=a}},processStore:function(h){var g=this,a=h.getGroups(),k=a.length,d,l,m,c=g.data,j=g.groupingFeature.groupCache,b=g.groupingFeature.clearGroupCache(),e=g.groupingFeature.startCollapsed;if(c){c.clear()}else{c=g.data=new Ext.util.MixedCollection(false,Ext.data.Store.recordIdFn)}if(h.getCount()){g.groupingFeature.startCollapsed=false;for(d=0;d<k;d++){l=a[d];b[l.name]=l;l.isCollapsed=e||(j[l.name]&&j[l.name].isCollapsed);if(l.isCollapsed){l.placeholder=m=new h.model(null,"group-"+l.name+"-placeholder");m.set(g.getGroupField(),l.name);m.rows=m.children=l.children;m.isCollapsedPlaceholder=true;c.add(m)}else{c.insert(g.data.length,l.children)}}}},isCollapsed:function(a){return this.groupingFeature.groupCache[a].isCollapsed},isInCollapsedGroup:function(a){var b;if(this.store.isGrouped()&&(b=this.groupingFeature.groupCache[a.get(this.getGroupField())])){return b.isCollapsed||false}return false},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.data.getCount()},rangeCached:function(b,a){return a<this.getCount()},getRange:function(d,b,c){var a=this.data.getRange(d,b);if(c&&c.callback){c.callback.call(c.scope||this,a,d,b,c)}return a},getAt:function(a){return this.getRange(a,a)[0]},getById:function(a){return this.store.getById(a)},expandGroup:function(c){var b=this,a;if(typeof c==="string"){c=b.groupingFeature.groupCache[c]}if(c&&c.children.length&&(a=b.indexOf(c.children[0],true,true))!==-1){c.isCollapsed=false;b.isExpandingOrCollapsing=1;b.data.removeAt(a);b.fireEvent("bulkremove",b,[b.getGroupPlaceholder(c)],[a]);b.data.insert(a,c.children);b.fireEvent("add",b,c.children,a);b.fireEvent("groupexpand",b,c);b.isExpandingOrCollapsing=0}},collapseGroup:function(h){var e=this,d,k,c,b,a,g;if(typeof h==="string"){h=e.groupingFeature.groupCache[h]}if(h&&(a=h.children.length)&&(d=e.indexOf(h.children[0],true))!==-1){h.isCollapsed=true;e.isExpandingOrCollapsing=2;e.data.removeRange(d,a);g=new Array(a);for(c=0,b=d;c<a;c++,b++){g[c]=b}e.fireEvent("bulkremove",e,h.children,g);e.data.insert(d,k=e.getGroupPlaceholder(h));e.fireEvent("add",e,[k],d);e.fireEvent("groupcollapse",e,h);e.isExpandingOrCollapsing=0}},getGroupPlaceholder:function(a){if(!a.placeholder){var b=a.placeholder=new this.store.model(null,"group-"+a.name+"-placeholder");b.set(this.getGroupField(),a.name);b.rows=b.children=a.children;b.isCollapsedPlaceholder=true}return a.placeholder},indexOf:function(d,j,b){var e=this,a,h,c,k,g,l=0;if(d&&(b||!e.isInCollapsedGroup(d))){a=e.store.getGroups();h=a.length;for(c=0;c<h;c++){k=a[c];if(k.name===this.store.getGroupString(d)){g=Ext.Array.indexOf(k.children,d);return l+g}l+=(j&&e.isCollapsed(k.name))?1:k.children.length}}return -1},indexOfTotal:function(a){var b=a.index;if(b||b===0){return b}return this.istore.ndexOf(a)},onRefresh:function(a){this.processStore(this.store);this.fireEvent("refresh",this)},onBulkRemove:function(b,a,c){this.processStore(this.store);this.fireEvent("refresh",this)},onClear:function(b,a,c){this.processStore(this.store);this.fireEvent("clear",this)},onAdd:function(b,a,c){this.processStore(this.store);this.fireEvent("refresh",this)},onUpdate:function(c,a,b,h){var g=this,d=g.groupingFeature.getRecordGroup(a),j,e;if(c.isGrouped()){if(h&&Ext.Array.contains(h,g.groupingFeature.getGroupField())){return g.onRefresh(g.store)}if(d.isCollapsed){g.fireEvent("update",g,d.placeholder)}else{Ext.suspendLayouts();g.fireEvent("update",g,a,b,h);j=d.children[0];e=d.children[d.children.length-1];if(j!==a){g.fireEvent("update",g,j,"edit")}if(e!==a&&e!==j){g.fireEvent("update",g,e,"edit")}Ext.resumeLayouts(true)}}else{g.fireEvent("update",g,a,b,h)}}},1,0,0,0,0,0,[Ext.grid.feature,"GroupStore"],0));(Ext.cmd.derive("Ext.grid.feature.Grouping",Ext.grid.feature.Feature,{eventPrefix:"group",groupCls:Ext.baseCSSPrefix+"grid-group-hd",eventSelector:"."+Ext.baseCSSPrefix+"grid-group-hd",refreshData:{},groupInfo:{},wrapsItem:true,groupHeaderTpl:"{columnName}: {name}",depthToIndent:17,collapsedCls:Ext.baseCSSPrefix+"grid-group-collapsed",hdCollapsedCls:Ext.baseCSSPrefix+"grid-group-hd-collapsed",hdNotCollapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-not-collapsible",collapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-collapsible",ctCls:Ext.baseCSSPrefix+"group-hd-container",groupByText:"Group by this field",showGroupsText:"Show in groups",hideGroupedHeader:false,startCollapsed:false,enableGroupingMenu:true,enableNoGroups:true,collapsible:true,expandTip:"Click to expand. CTRL key collapses all others",collapseTip:"Click to collapse. CTRL/click collapses all others",showSummaryRow:false,tableTpl:{before:function(a){if(this.groupingFeature.disabled||a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.setup(a.rows,a.view.rowValues)},after:function(a){if(this.groupingFeature.disabled||a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.cleanup(a.rows,a.view.rowValues)},priority:200},groupTpl:["{%","var me = this.groupingFeature;","if (me.disabled) {","values.needsWrap = false;","} else {","me.setupRowData(values.record, values.recordIndex, values);","values.needsWrap = !me.disabled && (values.isFirstRow || values.summaryRecord);","}","%}",'<tpl if="needsWrap">','<tr data-boundView="{view.id}" data-recordId="{record.internalId}" data-recordIndex="{[values.isCollapsedGroup ? -1 : values.recordIndex]}"','class="{[values.itemClasses.join(" ")]} '+Ext.baseCSSPrefix+'grid-wrap-row<tpl if="!summaryRecord"> '+Ext.baseCSSPrefix+'grid-group-row</tpl>">','<td class="'+Ext.baseCSSPrefix+'group-hd-container" colspan="{columns.length}">','<tpl if="isFirstRow">',"{%",'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";',"%}",'<div id="{groupId}" class="'+Ext.baseCSSPrefix+'grid-group-hd {collapsibleCls}" tabIndex="0">','<div class="'+Ext.baseCSSPrefix+'grid-group-title" style="{[groupTitleStyle]}">','{[values.groupHeaderTpl.apply(values.groupInfo, parent) || "&#160;"]}',"</div>","</div>","</tpl>",'<tpl if="summaryRecord || !isCollapsedGroup">','<table class="',Ext.baseCSSPrefix,"{view.id}-table ",Ext.baseCSSPrefix,"grid-table",'<tpl if="summaryRecord"> ',Ext.baseCSSPrefix,'grid-table-summary</tpl>"','border="0" cellspacing="0" cellpadding="0" style="width:100%">',"{[values.view.renderColumnSizer(out)]}",'<tpl if="!isCollapsedGroup">',"{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent);","%}","</tpl>",'<tpl if="summaryRecord">',"{%me.outputSummaryRecord(values.summaryRecord, values, out);%}","</tpl>","</table>","</tpl>","</td>","</tr>","<tpl else>","{%this.nextTpl.applyOut(values, out, parent);%}","</tpl>",{priority:200,syncRowHeights:function(d,k){d=Ext.fly(d,"syncDest");k=Ext.fly(k,"sycSrc");var b=this.owner,e=d.down(b.eventSelector,true),g,h=d.down(b.summaryRowSelector,true),c,a,j;if(e&&(g=k.down(b.eventSelector,true))){e.style.height=g.style.height="";if((a=e.offsetHeight)>(j=g.offsetHeight)){Ext.fly(g).setHeight(a)}else{if(j>a){Ext.fly(e).setHeight(j)}}}if(h&&(c=k.down(b.summaryRowSelector,true))){h.style.height=c.style.height="";if((a=h.offsetHeight)>(j=c.offsetHeight)){Ext.fly(c).setHeight(a)}else{if(j>a){Ext.fly(h).setHeight(j)}}}},syncContent:function(b,h){b=Ext.fly(b,"syncDest");h=Ext.fly(h,"sycSrc");var a=this.owner,d=b.down(a.eventSelector,true),c=h.down(a.eventSelector,true),g=b.down(a.summaryRowSelector,true),e=h.down(a.summaryRowSelector,true);if(d&&c){Ext.fly(d).syncContent(c)}if(g&&e){Ext.fly(g).syncContent(e)}}}],constructor:function(){this.groupCache={};this.callParent(arguments)},init:function(b){var c=this,a=c.view;a.isGrouping=true;if(c.lockingPartner&&c.lockingPartner.groupCache){c.groupCache=c.lockingPartner.groupCache}c.mixins.summary.init.call(c);c.callParent(arguments);a.headerCt.on({columnhide:c.onColumnHideShow,columnshow:c.onColumnHideShow,columnmove:c.onColumnMove,scope:c});a.addTableTpl(c.tableTpl).groupingFeature=c;a.addRowTpl(Ext.XTemplate.getTpl(c,"groupTpl")).groupingFeature=c;a.preserveScrollOnRefresh=true;if(a.store.buffered){c.collapsible=false}else{if(this.lockingPartner&&this.lockingPartner.dataSource){c.dataSource=a.dataSource=this.lockingPartner.dataSource}else{c.dataSource=a.dataSource=new Ext.grid.feature.GroupStore(c,a.store)}}c.grid.on({reconfigure:c.onReconfigure});a.on({afterrender:c.afterViewRender,scope:c,single:true})},clearGroupCache:function(){var b=this,a=b.groupCache={};if(b.lockingPartner){b.lockingPartner.groupCache=a}return a},vetoEvent:function(a,c,d,b){if(b.type!=="mouseover"&&b.type!=="mouseout"&&b.type!=="mouseenter"&&b.type!=="mouseleave"&&b.getTarget(this.eventSelector)){return false}},enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();a.isGrouping=true;if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");if(d){d.setChecked(true,true)}c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,e,c;a.isGrouping=false;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");if(e){e.setChecked(false,true)}d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},afterViewRender:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},onColumnHideShow:function(c,g){var k=this.view,b=k.headerCt,a=b.getMenu(),e=a.down("#groupMenuItem"),l=b.getGridColumns().length,j,h,d;if(e){if(b.getVisibleGridColumns().length>1){e.enable()}else{e.disable()}}if(k.rendered){j=k.el.query("."+this.ctCls);for(d=0,h=j.length;d<h;++d){j[d].colSpan=l}}},onColumnMove:function(){var h=this,c=h.view.store,b,e,a,d,j,g;if(c.isGrouped()){b=c.getGroups();a=b.length;for(e=0;e<a;e++){d=b[e];j=d.children[0];g=d.children[d.children.length-1];c.fireEvent("update",c,j,"edit",null);if(g!==j){c.fireEvent("update",c,g,"edit",null)}}}},showMenuBy:function(b,h){var g=this.getMenu(),c=g.down("#groupMenuItem"),a=h.groupable===false||this.view.headerCt.getVisibleGridColumns().length<2?"disable":"enable",e=g.down("#groupToggleMenuItem"),d=this.view.store.isGrouped();c[a]();if(e){e.setChecked(d,true);e[d?"enable":"disable"]()}Ext.grid.header.Container.prototype.showMenuBy.apply(this,arguments)},getMenuItems:function(){var g=this,c=g.groupByText,e=g.disabled||!g.getGroupField(),a=g.showGroupsText,d=g.enableNoGroups,b=g.view.headerCt.getMenuItems;return function(){var h=b.call(this);h.push("-",{iconCls:Ext.baseCSSPrefix+"group-by-icon",itemId:"groupMenuItem",text:c,handler:g.onGroupMenuItemClick,scope:g});if(d){h.push({itemId:"groupToggleMenuItem",text:a,checked:!e,checkHandler:g.onGroupToggleMenuItemClick,scope:g})}return h}},onGroupMenuItemClick:function(c,g){var d=this,h=c.parentMenu,j=h.activeHeader,a=d.view,b=a.store;d.lastGroupIndex=null;d.block();d.enable();b.group(j.dataIndex);d.pruneGroupedHeader();d.unblock();d.refreshIf()},block:function(a){this.blockRefresh=this.view.blockRefresh=true;if(this.lockingPartner&&!a){this.lockingPartner.block(true)}},unblock:function(a){this.blockRefresh=this.view.blockRefresh=false;if(this.lockingPartner&&!a){this.lockingPartner.unblock(true)}},onGroupToggleMenuItemClick:function(a,b){this[b?"enable":"disable"]()},pruneGroupedHeader:function(){var a=this,b=a.getGroupedHeader();if(a.hideGroupedHeader&&b){Ext.suspendLayouts();if(a.prunedHeader&&a.prunedHeader!==b){a.prunedHeader.show()}a.prunedHeader=b;b.hide();Ext.resumeLayouts(true)}},getHeaderNode:function(a){return Ext.get(this.createGroupId(a))},getGroup:function(b){var a=this.groupCache,c=a[b];if(!c){c=a[b]={isCollapsed:false}}return c},isExpanded:function(a){return !this.getGroup(a).isCollapsed},expand:function(b,a){this.doCollapseExpand(false,b,a)},expandAll:function(){var e=this,a=e.view,d=e.groupCache,g,c=e.lockingPartner,b;for(g in d){if(d.hasOwnProperty(g)){d[g].isCollapsed=false}}Ext.suspendLayouts();a.suspendEvent("beforerefresh","refresh");if(c){b=c.view;b.suspendEvent("beforerefresh","refresh")}e.dataSource.onRefresh();a.resumeEvent("beforerefresh","refresh");if(c){b.resumeEvent("beforerefresh","refresh")}Ext.resumeLayouts(true);for(g in d){if(d.hasOwnProperty(g)){e.afterCollapseExpand(false,g);if(c){c.afterCollapseExpand(false,g)}}}},collapse:function(b,a){this.doCollapseExpand(true,b,a)},isAllCollapsed:function(){var b=this,a=b.groupCache,c;for(c in a){if(a.hasOwnProperty(c)){if(!a[c].isCollapsed){return false}}}return true},isAllExpanded:function(){var b=this,a=b.groupCache,c;for(c in a){if(a.hasOwnProperty(c)){if(a[c].isCollapsed){return false}}}return true},collapseAll:function(){var e=this,a=e.view,d=e.groupCache,g,c=e.lockingPartner,b;for(g in d){if(d.hasOwnProperty(g)){d[g].isCollapsed=true}}Ext.suspendLayouts();a.suspendEvent("beforerefresh","refresh");if(c){b=c.view;b.suspendEvent("beforerefresh","refresh")}e.dataSource.onRefresh();a.resumeEvent("beforerefresh","refresh");if(c){b.resumeEvent("beforerefresh","refresh")}if(c&&!c.isAllCollapsed()){c.collapseAll()}Ext.resumeLayouts(true);for(g in d){if(d.hasOwnProperty(g)){e.afterCollapseExpand(true,g);if(c){c.afterCollapseExpand(true,g)}}}},doCollapseExpand:function(e,g,a){var c=this,b=c.lockingPartner,d=c.groupCache[g];if(d.isCollapsed!=e){Ext.suspendLayouts();if(e){c.dataSource.collapseGroup(d)}else{c.dataSource.expandGroup(d)}Ext.resumeLayouts(true);c.afterCollapseExpand(e,g,a);if(b){b.afterCollapseExpand(e,g,false)}}},afterCollapseExpand:function(d,g,b){var c=this,a=c.view,e;e=Ext.get(this.getHeaderNode(g));a.fireEvent(d?"groupcollapse":"groupexpand",a,e,g);if(b){e.up(a.getItemSelector()).scrollIntoView(a.el,null,true)}},onGroupChange:function(){var d=this,e=d.getGroupField(),c,a,b;if(d.hideGroupedHeader){if(d.lastGroupField){c=d.getMenuItem(d.lastGroupField);if(c){c.setChecked(true)}}if(e){a=d.view.headerCt.getVisibleGridColumns();b=((a.length===1)&&(a[0].dataIndex==e));c=d.getMenuItem(e);if(c&&!b){c.setChecked(false)}}}d.refreshIf();d.lastGroupField=e},getMenuItem:function(b){var a=this.view,d=a.headerCt.down("gridcolumn[dataIndex="+b+"]"),c=a.headerCt.getMenu();return d?c.down("menuitem[headerId="+d.id+"]"):null},onGroupKey:function(c,b){var a=this,d=a.getGroupName(b.target);if(d){a.onGroupClick(a.view,b.target,d,b)}},onGroupClick:function(a,j,l,k){var h=this,d=h.groupCache,b=!h.isExpanded(l),c;if(h.collapsible){if(k.ctrlKey){Ext.suspendLayouts();for(c in d){if(c===l){if(b){h.expand(l)}}else{h.doCollapseExpand(true,c,false)}}Ext.resumeLayouts(true);return}if(b){h.expand(l)}else{h.collapse(l)}}},setupRowData:function(j,m,o){var k=this,e=k.refreshData,b=k.groupInfo,h=e.header,c=e.groupField,l=k.view.dataSource,a,n,d,g;o.isCollapsedGroup=false;o.summaryRecord=null;if(e.doGrouping){a=k.view.store.groupers.first();if(j.children){n=a.getGroupString(j.children[0]);o.isFirstRow=o.isLastRow=true;o.itemClasses.push(k.hdCollapsedCls);o.isCollapsedGroup=true;o.groupInfo=b;b.groupField=c;b.name=n;b.groupValue=j.children[0].get(c);b.columnName=h?h.text:c;o.collapsibleCls=k.collapsible?k.collapsibleCls:k.hdNotCollapsibleCls;o.groupId=k.createGroupId(n);b.rows=b.children=j.children;if(k.showSummaryRow){o.summaryRecord=e.summaryData[n]}return}n=a.getGroupString(j);o.isFirstRow=m===0;if(!o.isFirstRow){d=l.getAt(m-1);if(d){o.isFirstRow=!d.isEqual(a.getGroupString(d),n)}}o.isLastRow=m==l.getTotalCount()-1;if(!o.isLastRow){g=l.getAt(m+1);if(g){o.isLastRow=!g.isEqual(a.getGroupString(g),n)}}if(o.isFirstRow){b.groupField=c;b.name=n;b.groupValue=j.get(c);b.columnName=h?h.text:c;o.collapsibleCls=k.collapsible?k.collapsibleCls:k.hdNotCollapsibleCls;o.groupId=k.createGroupId(n);if(!k.isExpanded(n)){o.itemClasses.push(k.hdCollapsedCls);o.isCollapsedGroup=true}if(l.buffered){b.rows=b.children=[]}else{b.rows=b.children=k.getRecordGroup(j).children}o.groupInfo=b}if(o.isLastRow){if(k.showSummaryRow){o.summaryRecord=e.summaryData[n]}}}},setup:function(d,e){var b=this,c=b.refreshData,a=!b.disabled&&b.view.store.isGrouped();b.skippedRows=0;if(e.view.bufferedRenderer){e.view.bufferedRenderer.variableRowHeight=true}c.groupField=b.getGroupField();c.header=b.getGroupedHeader(c.groupField);c.doGrouping=a;e.groupHeaderTpl=Ext.XTemplate.getTpl(b,"groupHeaderTpl");if(a&&b.showSummaryRow){c.summaryData=b.generateSummaryData()}},cleanup:function(b,c){var a=this.refreshData;c.groupInfo=c.groupHeaderTpl=c.isFirstRow=null;a.groupField=a.header=null},getGroupName:function(b){var d=this,a=d.view,c=d.eventSelector,e,h,g;h=Ext.fly(b).findParent(c);if(!h){g=Ext.fly(b).findParent(a.itemSelector);if(g){h=g.down(c,true)}}if(h){e=h.id.split(a.id+"-hd-");if(e.length===2){return Ext.htmlDecode(e[1])}}},getRecordGroup:function(a){var b=this.view.store.groupers.first();if(b){return this.groupCache[b.getGroupString(a)]}},createGroupId:function(a){return this.view.id+"-hd-"+Ext.htmlEncode(a)},createGroupCls:function(a){return this.view.id+"-"+Ext.htmlEncode(a)+"-item"},getGroupField:function(){return this.view.store.getGroupField()},getGroupedHeader:function(b){var d=this,e=d.view.headerCt,c=d.lockingPartner,a,g;b=b||this.getGroupField();if(b){a="[dataIndex="+b+"]";g=e.down(a);if(!g&&c){g=c.view.headerCt.down(a)}}return g||null},getFireEventArgs:function(b,a,d,c){return[b,a,d,this.getGroupName(d),c]},destroy:function(){var a=this,b=a.dataSource;a.view=a.prunedHeader=a.grid=a.groupCache=a.dataSource=null;a.callParent();if(b){b.bindStore(null)}},onReconfigure:function(d,a,c,g,b){var e=d;if(a&&a!==g){if(a.buffered!==g.buffered){Ext.Error.raise("Cannot reconfigure grouping switching between buffered and non-buffered stores")}if(a.buffered){e.bindStore(a);e.dataSource.processStore(a)}}}},1,0,0,0,["feature.grouping"],[["summary",Ext.grid.feature.AbstractSummary]],[Ext.grid.feature,"Grouping"],0));(Ext.cmd.derive("Ext.grid.feature.GroupingSummary",Ext.grid.feature.Grouping,{showSummaryRow:true,vetoEvent:function(b,d,g,c){var a=this.callParent(arguments);if(a!==false){if(c.getTarget(this.summaryRowSelector)){a=false}}return a}},0,0,0,0,["feature.groupingsummary"],0,[Ext.grid.feature,"GroupingSummary"],0));(Ext.cmd.derive("Ext.grid.feature.RowBody",Ext.grid.feature.Feature,{rowBodyCls:Ext.baseCSSPrefix+"grid-row-body",rowBodyHiddenCls:Ext.baseCSSPrefix+"grid-row-body-hidden",rowBodyTdSelector:"td."+Ext.baseCSSPrefix+"grid-cell-rowbody",eventPrefix:"rowbody",eventSelector:"tr."+Ext.baseCSSPrefix+"grid-rowbody-tr",tableTpl:{before:function(b,c){var a=b.view,d=a.rowValues;this.rowBody.setup(b.rows,d)},after:function(b,c){var a=b.view,d=a.rowValues;this.rowBody.cleanup(b.rows,d)},priority:100},extraRowTpl:["{%","values.view.rowBodyFeature.setupRowData(values.record, values.recordIndex, values);","this.nextTpl.applyOut(values, out, parent);","%}",'<tr class="'+Ext.baseCSSPrefix+'grid-rowbody-tr {rowBodyCls}">','<td class="'+Ext.baseCSSPrefix+'grid-cell-rowbody" colspan="{rowBodyColspan}">','<div class="'+Ext.baseCSSPrefix+'grid-rowbody {rowBodyDivCls}">{rowBody}</div>',"</td>","</tr>",{priority:100,syncRowHeights:function(g,c){var a=this.owner,b=Ext.fly(g).down(a.eventSelector,true),h,d,e;if(b&&(h=Ext.fly(c).down(a.eventSelector,true))){if((d=b.offsetHeight)>(e=h.offsetHeight)){Ext.fly(h).setHeight(d)}else{if(e>d){Ext.fly(b).setHeight(e)}}}},syncContent:function(b,e){var a=this.owner,c=Ext.fly(b).down(a.eventSelector,true),d;if(c&&(d=Ext.fly(e).down(a.eventSelector,true))){Ext.fly(c).syncContent(d)}}}],init:function(b){var c=this,a=c.view;a.rowBodyFeature=c;if(!a.findFeature("rowwrap")){b.mon(a,{element:"el",mousedown:c.onMouseDown,scope:c});c.mon(b.getStore(),"remove",c.onStoreRemove,c)}a.headerCt.on({columnschanged:c.onColumnsChanged,scope:c});a.addTableTpl(c.tableTpl).rowBody=c;a.addRowTpl(Ext.XTemplate.getTpl(this,"extraRowTpl"));c.callParent(arguments)},onStoreRemove:function(b,d,c){var a=this.view,e;if(a.rendered){e=a.getNode(c);if(e){e=Ext.fly(e).next(this.eventSelector);if(e){e.remove()}}}},onMouseDown:function(c){var b=this,a=c.getTarget(b.eventSelector);if(a&&Ext.fly(a=a.previousSibling).is(b.view.getItemSelector())){c.target=a;b.view.handleEvent(c)}},getSelectedRow:function(a,c){var b=a.getNode(c,false);if(b){return Ext.fly(b).down(this.eventSelector)}return null},onColumnsChanged:function(d){var b=this.view.el.query(this.rowBodyTdSelector),e=d.getVisibleGridColumns().length,a=b.length,c;for(c=0;c<a;++c){b[c].colSpan=e}},setupRowData:function(a,c,b){if(this.getAdditionalData){Ext.apply(b,this.getAdditionalData(a.data,c,a,b))}},setup:function(a,b){b.rowBodyCls=this.rowBodyCls;b.rowBodyColspan=b.view.getGridColumns().length},cleanup:function(a,b){b.rowBodyCls=b.rowBodyColspan=b.rowBody=null}},0,0,0,0,["feature.rowbody"],0,[Ext.grid.feature,"RowBody"],0));(Ext.cmd.derive("Ext.grid.feature.RowWrap",Ext.grid.feature.Feature,{rowWrapTd:"td."+Ext.baseCSSPrefix+"grid-rowwrap",hasFeatureEvent:false,tableTpl:{before:function(a,b){if(a.view.bufferedRenderer){a.view.bufferedRenderer.variableRowHeight=true}},priority:200},wrapTpl:['<tr data-boundView="{view.id}" data-recordId="{record.internalId}" data-recordIndex="{recordIndex}" class="{[values.itemClasses.join(" ")]} '+Ext.baseCSSPrefix+'grid-wrap-row">','<td class="'+Ext.baseCSSPrefix+"grid-rowwrap "+Ext.baseCSSPrefix+'grid-td" colSpan="{columns.length}">','<table class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" border="0" cellspacing="0" cellpadding="0">',"{[values.view.renderColumnSizer(out)]}","{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent)","%}","</table>","</td>","</tr>",{priority:200}],init:function(a){var b=this;b.view.addTableTpl(b.tableTpl);b.view.addRowTpl(Ext.XTemplate.getTpl(b,"wrapTpl"));b.view.headerCt.on({columnhide:b.onColumnHideShow,columnshow:b.onColumnHideShow,scope:b})},onColumnHideShow:function(){var b=this.view,c=b.el.query(this.rowWrapTd),e=b.headerCt.getVisibleGridColumns().length,a=c.length,d;for(d=0;d<a;++d){c[d].colSpan=e}}},0,0,0,0,["feature.rowwrap"],0,[Ext.grid.feature,"RowWrap"],0));(Ext.cmd.derive("Ext.grid.feature.Summary",Ext.grid.feature.AbstractSummary,{dock:undefined,dockedSummaryCls:Ext.baseCSSPrefix+"docked-summary",panelBodyCls:Ext.baseCSSPrefix+"summary-",init:function(b){var c=this,a=c.view;c.callParent(arguments);if(c.dock){b.headerCt.on({afterlayout:c.onStoreUpdate,scope:c});b.on({beforerender:function(){var d=[c.summaryTableCls];if(a.columnLines){d[d.length]=a.ownerCt.colLinesCls}c.summaryBar=b.addDocked({childEls:["innerCt"],renderTpl:['<div id="{id}-innerCt">','<table cellPadding="0" cellSpacing="0" class="'+d.join(" ")+'">','<tr class="'+c.summaryRowCls+'"></tr>',"</table>","</div>"],style:"overflow:hidden",itemId:"summaryBar",cls:[c.dockedSummaryCls,c.dockedSummaryCls+"-"+c.dock],xtype:"component",dock:c.dock,weight:10000000})[0]},afterrender:function(){b.body.addCls(c.panelBodyCls+c.dock);a.mon(a.el,{scroll:c.onViewScroll,scope:c});c.onStoreUpdate()},single:true});b.headerCt.afterComponentLayout=Ext.Function.createSequence(b.headerCt.afterComponentLayout,function(){c.summaryBar.innerCt.setWidth(this.getFullWidth()+Ext.getScrollbarSize().width)})}else{c.view.addFooterFn(c.renderTFoot)}b.on({columnmove:c.onStoreUpdate,scope:c});a.mon(a.store,{update:c.onStoreUpdate,datachanged:c.onStoreUpdate,scope:c})},renderTFoot:function(b,c){var a=b.view,d=a.findFeature("summary");if(d.showSummaryRow){c.push("<tfoot>");d.outputSummaryRecord(d.createSummaryRecord(a),b,c);c.push("</tfoot>")}},vetoEvent:function(a,c,d,b){return !b.getTarget(this.summaryRowSelector)},onViewScroll:function(){this.summaryBar.el.dom.scrollLeft=this.view.el.dom.scrollLeft},createSummaryRecord:function(a){var d=a.headerCt.getVisibleGridColumns(),h={records:a.store.getRange()},g=d.length,c,e,b=this.summaryRecord||(this.summaryRecord=new a.store.model(null,a.id+"-summary-record"));b.beginEdit();for(c=0;c<g;c++){e=d[c];if(!e.dataIndex){e.dataIndex=e.id}b.set(e.dataIndex,this.getSummary(a.store,e.summaryType,e.dataIndex,h))}b.endEdit(true);b.commit(true);b.isSummary=true;return b},onStoreUpdate:function(){var g=this,b=g.view,a=g.createSummaryRecord(b),d=b.createRowElement(a,-1),c,e,h;if(!b.rendered){return}if(g.dock){c=g.summaryBar.el.down("."+g.summaryRowCls,true)}else{c=g.view.getNode(a)}if(c){h=c.parentNode;h.insertBefore(d,c);h.removeChild(c);e=g.lockingPartner;if(e&&e.grid.rendered&&!g.calledFromLockingPartner){e.calledFromLockingPartner=true;e.onStoreUpdate();e.calledFromLockingPartner=false}}if(g.dock){g.onColumnHeaderLayout()}},onColumnHeaderLayout:function(){var b=this.view,d=b.headerCt.getVisibleGridColumns(),g,a=d.length,c,h=this.summaryBar.el,e;for(c=0;c<a;c++){g=d[c];e=h.down(b.getCellSelector(g));if(e){if(g.hidden){e.setDisplayed(false)}else{e.setDisplayed(true);e.setWidth(g.width||(g.lastBox?g.lastBox.width:100))}}}}},0,0,0,0,["feature.summary"],0,[Ext.grid.feature,"Summary"],0));(Ext.cmd.derive("Ext.grid.locking.HeaderContainer",Ext.grid.header.Container,{constructor:function(d){var c=this,a,b,h=[],g=d.lockedGrid,e=d.normalGrid;c.lockable=d;c.callParent();g.columnManager.rootColumns=e.columnManager.rootColumns=d.columnManager=c.columnManager=new Ext.grid.ColumnManager(g.headerCt,e.headerCt);a=g.headerCt.events;for(b in a){if(a.hasOwnProperty(b)){h.push(b)}}c.relayEvents(g.headerCt,h);c.relayEvents(e.headerCt,h)},getRefItems:function(){return this.lockable.lockedGrid.headerCt.getRefItems().concat(this.lockable.normalGrid.headerCt.getRefItems())},getGridColumns:function(){return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns())},getColumnsState:function(){var b=this,a=b.lockable.lockedGrid.headerCt.getColumnsState(),c=b.lockable.normalGrid.headerCt.getColumnsState();return a.concat(c)},applyColumnsState:function(h){var p=this,e=p.lockable.lockedGrid,g=e.headerCt,n=p.lockable.normalGrid.headerCt,q=Ext.Array.toValueMap(g.items.items,"headerId"),j=Ext.Array.toValueMap(n.items.items,"headerId"),m=[],o=[],l=1,b=h.length,k,a,d,c;for(k=0;k<b;k++){c=h[k];d=q[c.id];a=d||j[c.id];if(a){if(a.applyColumnState){a.applyColumnState(c)}if(a.locked===undefined){a.locked=!!d}if(a.locked){m.push(a);if(!a.hidden&&typeof a.width=="number"){l+=a.width}}else{o.push(a)}}}if(m.length+o.length==g.items.getCount()+n.items.getCount()){g.removeAll(false);n.removeAll(false);g.add(m);n.add(o);e.setWidth(l)}}},1,0,["component","container","box","headercontainer"],{component:true,container:true,box:true,headercontainer:true},0,0,[Ext.grid.locking,"HeaderContainer"],0));(Ext.cmd.derive("Ext.grid.locking.View",Ext.Base,{alternateClassName:"Ext.grid.LockingView",isLockingView:true,eventRelayRe:/^(beforeitem|beforecontainer|item|container|cell|refresh)/,constructor:function(c){var g=this,j=[],a=g.eventRelayRe,b=c.locked.getView(),h=c.normal.getView(),d,e;Ext.apply(g,{lockedView:b,normalView:h,lockedGrid:c.locked,normalGrid:c.normal,panel:c.panel});g.mixins.observable.constructor.call(g,c);d=b.events;for(e in d){if(d.hasOwnProperty(e)&&a.test(e)){j.push(e)}}g.relayEvents(b,j);g.relayEvents(h,j);h.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter});b.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter});g.panel.on({render:g.onPanelRender,scope:g})},onPanelRender:function(){var c=this,b=c.loadMask,a={target:c.panel,msg:c.loadingText,msgCls:c.loadingCls,useMsg:c.loadingUseMsg,store:c.panel.store};c.el=c.panel.body;c.fireEvent("render",c);if(b){if(Ext.isObject(b)){a=Ext.apply(a,b)}c.loadMask=new Ext.LoadMask(a)}},getGridColumns:function(){var a=this.lockedGrid.headerCt.getVisibleGridColumns();return a.concat(this.normalGrid.headerCt.getVisibleGridColumns())},getEl:function(a){return this.getViewForColumn(a).getEl()},getViewForColumn:function(b){var a=this.lockedView,c;a.headerCt.cascade(function(d){if(d===b){c=true;return false}});return c?a:this.normalView},onItemMouseEnter:function(c,b){var g=this,d=g.lockedView,a=g.normalView,e;if(c.trackOver){if(c!==d){a=d}e=a.getNode(b,false);a.highlightItem(e)}},onItemMouseLeave:function(c,b){var e=this,d=e.lockedView,a=e.normalView;if(c.trackOver){if(c!==d){a=d}a.clearHighlight()}},relayFn:function(c,b){b=b||[];var a=this.lockedView;a[c].apply(a,b);a=this.normalView;a[c].apply(a,b)},getSelectionModel:function(){return this.panel.getSelectionModel()},getStore:function(){return this.panel.store},getNode:function(b,a){return this.normalView.getNode(b,a)},getCell:function(b,c){var a=this.getViewForColumn(c),d=a.getNode(b,true);return Ext.fly(d).down(c.getCellSelector())},indexOf:function(b){var a=this.lockedView.indexOf(b);if(!a){a=this.normalView.indexOf(b)}return a},focus:function(){var b=this.getSelectionModel().getCurrentPosition(),a=b?b.view:this.normalView;a.focus()},focusRow:function(a){this.normalView.focusRow(a)},focusCell:function(a){a.view.focusCell(a)},isVisible:function(a){return this.panel.isVisible(a)},getRecord:function(b){var a=this.lockedView.getRecord(b);if(!a){a=this.normalView.getRecord(b)}return a},scrollBy:function(){var a=this.normalView;a.scrollBy.apply(a,arguments)},addElListener:function(a,c,b){this.relayFn("addElListener",arguments)},refreshNode:function(){this.relayFn("refreshNode",arguments)},refresh:function(){this.relayFn("refresh",arguments)},bindStore:function(){this.relayFn("bindStore",arguments)},addRowCls:function(){this.relayFn("addRowCls",arguments)},removeRowCls:function(){this.relayFn("removeRowCls",arguments)},destroy:function(){var b=this,a=b.loadMask;b.clearListeners();if(a&&a.bindStore){a.bindStore(null)}}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.grid.locking,"View",Ext.grid,"LockingView"],0));(Ext.cmd.derive("Ext.grid.locking.Lockable",Ext.Base,{alternateClassName:"Ext.grid.Lockable",syncRowHeight:true,headerCounter:0,scrollDelta:40,lockedGridCls:Ext.baseCSSPrefix+"grid-inner-locked",unlockText:"Unlock",lockText:"Lock",bothCfgCopy:["invalidateScrollerOnRefresh","hideHeaders","enableColumnHide","enableColumnMove","enableColumnResize","sortableColumns","columnLines","rowLines"],normalCfgCopy:["verticalScroller","verticalScrollDock","verticalScrollerType","scroll"],lockedCfgCopy:[],determineXTypeToCreate:function(e){var c=this,h,d,b,g,a;if(c.subGridXType){h=c.subGridXType}else{if(!e){return"gridpanel"}d=this.getXTypes().split("/");b=d.length;g=d[b-1];a=d[b-2];if(a!=="tablepanel"){h=a}else{h=g}}return h},injectLockable:function(){this.lockable=true;this.hasView=true;var o=this,a=Ext.getScrollbarSize().height,p=o.store=Ext.StoreManager.lookup(o.store),k=o.getSelectionModel(),l,b,e,m,h,d,c,j,r,g,n,q=o.findPlugin("bufferedrenderer");l=o.constructLockableFeatures();if(o.features){o.features=null}b=o.constructLockablePlugins();o.plugins=b.topPlugins;e=Ext.apply({id:o.id+"-locked",isLocked:true,ownerLockable:o,xtype:o.determineXTypeToCreate(true),store:p,scrollerOwner:false,animate:false,scroll:a?false:"vertical",selModel:k,border:false,cls:o.lockedGridCls,isLayoutRoot:function(){return false},features:l.lockedFeatures,plugins:b.lockedPlugins},o.lockedGridConfig);m=Ext.apply({id:o.id+"-normal",isLocked:false,ownerLockable:o,xtype:o.determineXTypeToCreate(),store:p,scrollerOwner:false,selModel:k,border:false,isLayoutRoot:function(){return false},features:l.normalFeatures,plugins:b.normalPlugins},o.normalGridConfig);o.addCls(Ext.baseCSSPrefix+"grid-locked");Ext.copyTo(m,o,o.bothCfgCopy,true);Ext.copyTo(e,o,o.bothCfgCopy,true);Ext.copyTo(m,o,o.normalCfgCopy,true);Ext.copyTo(e,o,o.lockedCfgCopy,true);for(h=0;h<o.normalCfgCopy.length;h++){delete o[o.normalCfgCopy[h]]}for(h=0;h<o.lockedCfgCopy.length;h++){delete o[o.lockedCfgCopy[h]]}o.addEvents("processcolumns","lockcolumn","unlockcolumn");o.addStateEvents(["lockcolumn","unlockcolumn"]);d=o.processColumns(o.columns);e.width=d.lockedWidth+Ext.num(k.headerWidth,0)+(d.locked.items.length?1:0);e.columns=d.locked;m.columns=d.normal;m.flex=1;e.viewConfig=o.lockedViewConfig||{};e.viewConfig.loadingUseMsg=false;e.viewConfig.loadMask=false;if(a){e.viewConfig.style="border-bottom:"+a+"px solid #f6f6f6;"+(e.viewConfig.style||"")}m.viewConfig=o.normalViewConfig||{};m.viewConfig.loadMask=false;Ext.applyIf(e.viewConfig,o.viewConfig);Ext.applyIf(m.viewConfig,o.viewConfig);o.lockedGrid=Ext.ComponentManager.create(e);if(o.isTree){o.lockedGrid.getView().animate=false;m.store=o.lockedGrid.view.store;m.deferRowRender=false;m.viewConfig.stripeRows=o.lockedGrid.view.stripeRows;m.rowLines=o.lockedGrid.rowLines}r=o.lockedGrid.getView();m.viewConfig.lockingPartner=r;o.normalGrid=Ext.ComponentManager.create(m);r.lockingPartner=g=o.normalGrid.getView();o.view=new Ext.grid.locking.View({loadingText:g.loadingText,loadingCls:g.loadingCls,loadingUseMsg:g.loadingUseMsg,loadMask:o.loadMask!==false,locked:o.lockedGrid,normal:o.normalGrid,panel:o});n=q?{}:{scroll:{fn:o.onLockedViewScroll,element:"el",scope:o}};if(a){o.lockedGrid.on({afterlayout:o.afterLockedViewLayout,scope:o});r.getOverflowStyle();if(r.scrollFlags.y){o.lockedGrid.headerCt.forceFit=true}else{n.mousewheel={fn:o.onLockedViewMouseWheel,element:"el",scope:o}}}r.on(n);n=q?{}:{scroll:{fn:o.onNormalViewScroll,element:"el",scope:o},scope:o};g.on(n);c=o.lockedGrid.headerCt;j=o.normalGrid.headerCt;o.headerCt=o.view.headerCt=new Ext.grid.locking.HeaderContainer(o);c.lockedCt=true;c.lockableInjected=true;j.lockableInjected=true;c.on({add:{buffer:1,scope:o,fn:o.onLockedHeaderAdd},columnshow:o.onLockedHeaderShow,columnhide:o.onLockedHeaderHide,sortchange:o.onLockedHeaderSortChange,columnresize:o.onLockedHeaderResize,scope:o});j.on({sortchange:o.onNormalHeaderSortChange,scope:o});o.modifyHeaderCt();o.items=[o.lockedGrid,o.normalGrid];o.relayHeaderCtEvents(c);o.relayHeaderCtEvents(j);o.storeRelayers=o.relayEvents(p,["filterchange"]);o.layout={type:"hbox",align:"stretch"}},getLockingViewConfig:function(){return{xclass:"Ext.grid.locking.View",locked:this.lockedGrid,normal:this.normalGrid,panel:this}},processColumns:function(c){var e,h,b,k=this.dummyHdrCtr||(this.self.prototype.dummyHdrCtr=new Ext.grid.header.Container()),j=[],d=[],a={itemId:"lockedHeaderCt",stretchMaxPartner:"^^>>#normalHeaderCt",items:j},g={itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt",items:d},l={lockedWidth:0,locked:a,normal:g};if(Ext.isObject(c)){Ext.applyIf(a,c);Ext.applyIf(g,c);Ext.apply(k,c);c=c.items}for(e=0,h=c.length;e<h;++e){b=c[e];if(!b.isComponent){b=k.lookupComponent(k.applyDefaults(b))}b.processed=true;if(b.locked||b.autoLock){if(!b.hidden){l.lockedWidth+=this.getColumnWidth(b)||k.defaultWidth}j.push(b)}else{d.push(b)}if(!b.headerId){b.headerId=(b.initialConfig||b).id||("h"+(++this.headerCounter))}}this.fireEvent("processcolumns",this,j,d);return l},getColumnWidth:function(e){var b=e.width||0,d,a,c;if(!b&&e.isGroupHeader){d=e.items.items;a=d.length;for(c=0;c<a;c++){b+=this.getColumnWidth(d[c])}}return b},afterLockedViewLayout:function(){var c=this,b=c.lockedGrid.getView(),a=b.el.dom,d=(c.normalGrid.headerCt.tooNarrow?Ext.getScrollbarSize().height:0);if(b.scrollFlags.x&&a.scrollWidth>a.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(j){var d=this,h=-d.scrollDelta,a=h*j.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){j.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),j=b.all.slice(),c=g.length,h;if(j.length===c){for(a=0;a<c;a++){b.syncRowHeights(g[a],j[a])}h=b.el.dom.scrollTop;b.el.dom.scrollTop=h;d.el.dom.scrollTop=h}},modifyHeaderCt:function(){var a=this;a.lockedGrid.headerCt.getMenuItems=a.getMenuItems(a.lockedGrid.headerCt.getMenuItems,true);a.normalGrid.headerCt.getMenuItems=a.getMenuItems(a.normalGrid.headerCt.getMenuItems,false);a.lockedGrid.headerCt.showMenuBy=Ext.Function.createInterceptor(a.lockedGrid.headerCt.showMenuBy,a.showMenuBy);a.normalGrid.headerCt.showMenuBy=Ext.Function.createInterceptor(a.normalGrid.headerCt.showMenuBy,a.showMenuBy)},onUnlockMenuClick:function(){this.unlock()},onLockMenuClick:function(){this.lock()},showMenuBy:function(b,g){var e=this.getMenu(),c=e.down("#unlockItem"),d=e.down("#lockItem"),a=c.prev();if(g.lockable===false){a.hide();c.hide();d.hide()}else{a.show();c.show();d.show();if(!c.initialConfig.disabled){c.setDisabled(g.lockable===false)}if(!d.initialConfig.disabled){d.setDisabled(!g.isLockable())}}},getMenuItems:function(g,c){var h=this,j=h.unlockText,a=h.lockText,k=Ext.baseCSSPrefix+"hmenu-unlock",b=Ext.baseCSSPrefix+"hmenu-lock",e=Ext.Function.bind(h.onUnlockMenuClick,h),d=Ext.Function.bind(h.onLockMenuClick,h);return function(){var l=g.call(this);l.push("-",{itemId:"unlockItem",cls:k,text:j,handler:e,disabled:!c});l.push({itemId:"lockItem",cls:b,text:a,handler:d,disabled:c});return l}},syncLockedWidth:function(){var e=this,b=e.lockedGrid,d=b.view,c=d.el.dom,h=e.normalGrid,g=b.headerCt.getVisibleGridColumns().length,a=h.headerCt.getVisibleGridColumns().length;Ext.suspendLayouts();if(a){h.show();if(g){if(!b.headerCt.forceFit){delete b.flex;b.setWidth(b.headerCt.getFullWidth())}b.addCls(e.lockedGridCls);b.show()}else{b.getView().refresh();b.hide()}d.el.setStyle(d.getOverflowStyle());e.ignoreMousewheel=d.scrollFlags.y}else{h.hide();c.style.borderBottomWidth="0";b.flex=1;delete b.width;b.removeCls(e.lockedGridCls);b.show();d.el.setStyle(h.view.getOverflowStyle());e.ignoreMousewheel=true}Ext.resumeLayouts(true);return[g,a]},onLockedHeaderAdd:function(){if(!this.ignoreAddLockedColumn){this.syncLockedWidth()}},onLockedHeaderResize:function(){this.syncLockedWidth()},onLockedHeaderHide:function(){this.syncLockedWidth()},onLockedHeaderShow:function(){this.syncLockedWidth()},onLockedHeaderSortChange:function(b,c,a){if(a){this.normalGrid.headerCt.clearOtherSortStates(null,true)}},onNormalHeaderSortChange:function(b,c,a){if(a){this.lockedGrid.headerCt.clearOtherSortStates(null,true)}},lock:function(c,k){var e=this,d=e.normalGrid,b=e.lockedGrid,g=d.headerCt,h=b.headerCt,j,a;c=c||g.getMenu().activeHeader;a=c.ownerCt;if(!c.isLockable()){return}if(c.flex){c.width=c.getWidth();c.flex=null}Ext.suspendLayouts();a.remove(c,false);c.locked=true;e.ignoreAddLockedColumn=true;if(Ext.isDefined(k)){h.insert(k,c)}else{h.add(c)}e.ignoreAddLockedColumn=false;j=e.syncLockedWidth();if(j[0]){b.getView().refresh()}if(j[1]){d.getView().refresh()}Ext.resumeLayouts(true);e.fireEvent("lockcolumn",e,c)},unlock:function(b,e){var d=this,g=d.normalGrid,j=d.lockedGrid,h=g.headerCt,c=j.headerCt,a;if(!Ext.isDefined(e)){e=0}b=b||c.getMenu().activeHeader;Ext.suspendLayouts();b.ownerCt.remove(b,false);b.locked=false;h.insert(e,b);a=d.syncLockedWidth();if(a[0]){j.getView().refresh()}if(a[1]){g.getView().refresh()}Ext.resumeLayouts(true);d.fireEvent("unlockcolumn",d,b)},reconfigureLockable:function(a,b){var c=this,g=c.store,e=c.lockedGrid,d=c.normalGrid;Ext.suspendLayouts();if(b){e.headerCt.removeAll();d.headerCt.removeAll();b=c.processColumns(b);c.ignoreAddLockedColumn=true;e.headerCt.add(b.locked.items);c.ignoreAddLockedColumn=false;d.headerCt.add(b.normal.items);c.syncLockedWidth()}if(a&&a!==g){a=Ext.data.StoreManager.lookup(a);c.store=a;e.bindStore(a);d.bindStore(a)}else{e.getView().refresh();d.getView().refresh()}Ext.resumeLayouts(true)},constructLockableFeatures:function(){var e=this.features,c,d,g,h,b=0,a;if(e){g=[];h=[];a=e.length;for(;b<a;b++){c=e[b];if(!c.isFeature){c=Ext.create("feature."+c.ftype,c)}switch(c.lockableScope){case"locked":g.push(c);break;case"normal":h.push(c);break;default:c.lockableScope="both";g.push(c);h.push(d=c.clone());d.lockingPartner=c;c.lockingPartner=d}}}return{normalFeatures:h,lockedFeatures:g}},constructLockablePlugins:function(){var c=this.plugins,g,b,a,j,k,d,e=0,h;if(c){j=[];k=[];d=[];h=c.length;for(;e<h;e++){g=c[e];switch(g.lockableScope){case"both":k.push(a=g.clonePlugin());d.push(b=g.clonePlugin());a.lockingPartner=b;b.lockingPartner=a;Ext.destroy(g);break;case"locked":k.push(g);break;case"normal":d.push(g);break;default:j.push(g)}}}return{topPlugins:j,normalPlugins:d,lockedPlugins:k}},destroyLockable:function(){Ext.destroy(this.view)}},0,0,0,0,0,0,[Ext.grid.locking,"Lockable",Ext.grid,"Lockable"],function(){this.borrow(Ext.AbstractComponent,["constructPlugin"])}));(Ext.cmd.derive("Ext.tree.View",Ext.view.Table,{isTreeView:true,loadingCls:Ext.baseCSSPrefix+"grid-tree-loading",expandedCls:Ext.baseCSSPrefix+"grid-tree-node-expanded",leafCls:Ext.baseCSSPrefix+"grid-tree-node-leaf",expanderSelector:"."+Ext.baseCSSPrefix+"tree-expander",checkboxSelector:"."+Ext.baseCSSPrefix+"tree-checkbox",expanderIconOverCls:Ext.baseCSSPrefix+"tree-expander-over",nodeAnimWrapCls:Ext.baseCSSPrefix+"tree-animator-wrap",blockRefresh:true,loadMask:false,rootVisible:true,deferInitialRefresh:false,expandDuration:250,collapseDuration:250,toggleOnDblClick:true,stripeRows:false,uiFields:["expanded","loaded","checked","expandable","leaf","icon","iconCls","loading","qtip","qtitle"],treeRowTpl:["{%","this.processRowValues(values);","this.nextTpl.applyOut(values, out, parent);",'delete values.rowAttr["data-qtip"];','delete values.rowAttr["data-qtitle"];',"%}",{priority:10,processRowValues:function(d){var b=d.record,a=d.view,e=b.get("qtip"),c=b.get("qttle");d.rowAttr={};if(e){d.rowAttr["data-qtip"]=e}if(c){d.rowAttr["data-qtitle"]=c}if(b.isExpanded()){d.rowClasses.push(a.expandedCls)}if(b.isLeaf()){d.rowClasses.push(a.leafCls)}if(b.isLoading()){d.rowClasses.push(a.loadingCls)}}}],initComponent:function(){var b=this,c=b.panel.getStore(),a=b.store;if(b.initialConfig.animate===undefined){b.animate=Ext.enableFx}if(!a||a===c){b.store=a=new Ext.data.NodeStore({treeStore:c,recursive:true,rootVisible:b.rootVisible})}if(b.node){b.setRootNode(b.node)}b.animQueue={};b.animWraps={};b.addEvents("afteritemexpand","afteritemcollapse","nodedragover");b.callParent(arguments);b.addRowTpl(Ext.XTemplate.getTpl(b,"treeRowTpl"))},onBeforeFill:function(b,a){this.store.suspendEvents()},onFillComplete:function(e,d,b){var c=this,a=c.store,g=a.indexOf(b[0]);a.resumeEvents();d.triggerUIUpdate();if(!b.length||g===-1){return}c.onAdd(c.store,b,g);c.refreshPartner()},onBeforeSort:function(){this.store.suspendEvents()},onSort:function(a){if(a.isStore){this.store.resumeEvents();this.refresh();this.refreshPartner()}},refreshPartner:function(){var a=this.lockingPartner;if(a){a.refresh()}},getMaskStore:function(){return this.panel.getStore()},afterRender:function(){var a=this;a.callParent(arguments);a.el.on({scope:a,delegate:a.expanderSelector,mouseover:a.onExpanderMouseOver,mouseout:a.onExpanderMouseOut,click:{delegate:a.checkboxSelector,fn:a.onCheckboxChange,scope:a}})},afterComponentLayout:function(){this.callParent(arguments);var a=this.stretcher;if(a){a.setWidth((this.getWidth()-Ext.getScrollbarSize().width))}},processUIEvent:function(a){if(a.getTarget("."+this.nodeAnimWrapCls,this.el)){return false}return this.callParent(arguments)},onClear:function(){this.store.removeAll()},setRootNode:function(b){var a=this;a.store.setNode(b);a.node=b},onCheckboxChange:function(d,a){var c=this,b=d.getTarget(c.getItemSelector(),c.getTargetEl());if(b){c.onCheckChange(c.getRecord(b))}},onCheckChange:function(a){var b=a.get("checked");if(Ext.isBoolean(b)){b=!b;a.set("checked",b);this.fireEvent("checkchange",a,b)}},getChecked:function(){var a=[];this.node.cascadeBy(function(b){if(b.get("checked")){a.push(b)}});return a},isItemChecked:function(a){return a.get("checked")},createAnimWrap:function(a,b){var g=this,e=g.getNode(a),d,c,h=[];g.renderColumnSizer(h);c=Ext.get(e);d=c.insertSibling({tag:"tr",html:['<td colspan="'+g.panel.headerCt.getColumnCount()+'">','<div class="'+g.nodeAnimWrapCls+'">','<table class="'+Ext.baseCSSPrefix+g.id+"-table "+Ext.baseCSSPrefix+'grid-table" style="border:0" cellspacing="0" cellpadding="0">',h.join(""),"<tbody></tbody></table>","</div>","</td>"].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var j=this,a=j.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=j.all,n,d=j.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return j.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-j.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){j.onExpand(k)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var j=this,g=j.animQueue,a=k.getId(),c=j.getNode(k),h=c?j.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(j.singleExpand){j.ensureSingleExpand(k)}if(h===-1){return}e=j.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c);j.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:j.expandDuration,listeners:{afteranimate:function(){var m=l.query(j.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();j.refreshSize();delete j.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,j=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[j]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[j]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c<a;++c){if(Ext.Array.contains(this.uiFields,d[c])){return true}}}return this.callParent(arguments)},onStoreWrite:function(b,a){var c=this.panel.store;c.fireEvent("write",c,a)},onStoreDataChanged:function(b,a){var c=this.panel.store;c.fireEvent("datachanged",c)}},0,["treeview"],["component","treeview","box","dataview","tableview"],{component:true,treeview:true,box:true,dataview:true,tableview:true},["widget.treeview"],0,[Ext.tree,"View"],0));Ext.define("Ext.grid.plugin.BufferedRendererTreeView",{override:"Ext.tree.View",onRemove:function(b,a,d){var c=this;if(c.rendered&&c.bufferedRenderer){c.refreshView()}else{c.callParent([b,a,d])}}});(Ext.cmd.derive("Ext.grid.plugin.BufferedRenderer",Ext.AbstractPlugin,{lockableScope:"both",percentageFromEdge:0.35,variableRowHeight:false,numFromEdge:8,trailingBufferZone:10,leadingBufferZone:20,synchronousRender:true,scrollToLoadBuffer:200,viewSize:0,rowHeight:21,position:0,lastScrollDirection:1,bodyTop:0,init:function(c){var d=this,a=c.view,b={scroll:{fn:d.onViewScroll,element:"el",scope:d},boxready:d.onViewResize,resize:d.onViewResize,refresh:d.onViewRefresh,scope:d,destroyable:true};if(!d.variableRowHeight&&c.ownerLockable){c.ownerLockable.syncRowHeight=false}if(c.isTree||c.ownerLockable&&c.ownerLockable.isTree){a.blockRefresh=false;a.loadMask=true}if(a.positionBody){b.refresh=d.onViewRefresh}d.grid=c;d.view=a;a.bufferedRenderer=d;a.preserveScrollOnRefresh=true;d.bindStore(a.dataSource);a.getViewRange=function(){return d.getViewRange()};d.position=0;d.gridListeners=c.on("reconfigure",d.onReconfigure,d);d.viewListeners=a.on(b)},bindStore:function(a){var b=this;if(b.store){b.unbindStore()}b.storeListeners=a.on({scope:b,clear:b.onStoreClear,destroyable:true});b.store=a;if(b.view.componentLayout.layoutCount){b.onViewResize(b.view,0,b.view.getHeight())}},onReconfigure:function(b,a){if(a&&a!==this.store){this.bindStore(a)}},unbindStore:function(){this.storeListeners.destroy();this.store=null},onStoreClear:function(){var a=this;if(a.view.rendered&&!a.store.isDestroyed){if(a.scrollTop!==0){a.ignoreNextScrollEvent=true;a.view.el.dom.scrollTop=a.bodyTop=a.scrollTop=0}a.position=a.scrollHeight=0;a.lastScrollDirection=a.scrollOffset=null;delete a.rowHeight}},onViewRefresh:function(){var c=this,a=c.view,d=c.scrollHeight,b;if(a.all.getCount()){delete c.rowHeight}b=c.getScrollHeight();if(!d||b!=d){c.stretchView(a,b)}if(c.scrollTop!==a.el.dom.scrollTop){c.onViewScroll()}else{c.setBodyTop(c.bodyTop);if(a.all.getCount()){c.viewSize=0;c.onViewResize(a,null,a.getHeight())}}},onViewResize:function(c,e,a,b,h){if(!h||a!==h){var g=this,d;d=Math.ceil(a/g.rowHeight)+g.trailingBufferZone+g.leadingBufferZone;g.viewSize=g.setViewSize(d)}},stretchView:function(b,a){var e=this,d=(e.store.buffered?e.store.getTotalCount():e.store.getCount());if(e.stretcher){e.stretcher.dom.style.marginTop=(a-1)+"px"}else{var c=b.el;if(b.refreshCounter){b.fixedNodes++}if(d&&(e.view.all.endIndex===d-1)){a=e.bodyTop+b.body.dom.offsetHeight}this.stretcher=c.createChild({style:{width:"1px",height:"1px",marginTop:(a-1)+"px",left:0,position:"absolute"}},c.dom.firstChild)}},setViewSize:function(h){if(h!==this.viewSize){this.scrollTop=this.view.el.dom.scrollTop;var e=this,b=e.store,d=e.view.all.getCount(),g,a,c=e.lockingPartner;e.viewSize=b.viewSize=h;if(d){g=e.view.all.startIndex;a=Math.min(g+h-1,(b.buffered?b.getTotalCount():b.getCount())-1);if(c){c.disable()}e.renderRange(g,a);if(c){c.enable()}}}return h},getViewRange:function(){var b=this,c=b.view.all,a=b.store;if(a.data.getCount()){return a.getRange(c.startIndex,c.startIndex+(b.viewSize||b.store.defaultViewSize)-1)}else{return[]}},scrollTo:function(k,c,n,p){var g=this,j=g.view,o=j.el.dom,l=g.store,h=l.buffered?l.getTotalCount():l.getCount(),e,b,d,a,m;k=Math.min(Math.max(k,0),h-1);e=Math.max(Math.min(k-((g.leadingBufferZone+g.trailingBufferZone)/2),h-g.viewSize+1),0);m=e*g.rowHeight;b=Math.min(e+g.viewSize-1,h-1);l.getRange(e,b,{callback:function(r,s,q){g.renderRange(s,q,true);d=l.data.getRange(k,k)[0];a=j.getNode(d,false);j.body.dom.style.top=m+"px";g.position=g.scrollTop=o.scrollTop=m=Math.min(Math.max(0,m-j.body.getOffsetsTo(a)[1]),o.scrollHeight-o.clientHeight);if(Ext.isIE){o.scrollTop=m}if(c){j.selModel.select(d)}if(n){n.call(p||g,k,d)}}})},onViewScroll:function(d,l){var g=this,j=g.store,k=(j.buffered?j.getTotalCount():j.getCount()),c,a,b=g.scrollTop=g.view.el.dom.scrollTop,h=false;if(g.ignoreNextScrollEvent){g.ignoreNextScrollEvent=false;return}if(!(g.disabled||k<g.viewSize)){c=b-g.position;a=c>0?1:-1;if(Math.abs(c)>=20||(a!==g.lastScrollDirection)){g.lastScrollDirection=a;g.handleViewScroll(g.lastScrollDirection);h=true}}if(!h){if(g.lockingPartner&&g.lockingPartner.scrollTop!==b){g.lockingPartner.view.el.dom.scrollTop=b}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,j=e.viewSize,a=(b.buffered?b.getTotalCount():b.getCount()),d,c;if(h==-1){if(g.startIndex){if((e.getFirstVisibleRowIndex()-g.startIndex)<e.numFromEdge){d=Math.max(0,e.getLastVisibleRowIndex()+e.trailingBufferZone-j)}}}else{if(g.endIndex<a-1){if((g.endIndex-e.getLastVisibleRowIndex())<e.numFromEdge){d=Math.max(0,e.getFirstVisibleRowIndex()-e.trailingBufferZone)}}}if(d!=null){c=Math.min(d+j-1,a-1);if(d!==g.startIndex||c!==g.endIndex){e.renderRange(d,c);return}}if(e.lockingPartner&&e.lockingPartner.view.el&&e.lockingPartner.scrollTop!==e.scrollTop){e.lockingPartner.view.el.dom.scrollTop=e.scrollTop}},renderRange:function(e,a,d){var c=this,b=c.store;if(b.rangeCached(e,a)){c.cancelLoad();if(c.synchronousRender||d){c.onRangeFetched(null,e,a)}else{if(!c.renderTask){c.renderTask=new Ext.util.DelayedTask(c.onRangeFetched,c,null,false)}c.renderTask.delay(1,null,null,[null,e,a])}}else{c.attemptLoad(e,a)}},onRangeFetched:function(h,b,e,c){var k=this,m=k.view,d,o=m.all,a,n=0,g=b*k.rowHeight,l,j=k.lockingPartner;if(m.isDestroyed){return}if(!h){h=k.store.getRange(b,e);if(!h){return}}if(b>o.endIndex||e<o.startIndex){o.clear(true);l=g}if(!o.getCount()){m.doAdd(h,b)}else{if(e>o.endIndex){a=Math.max(b-o.startIndex,0);if(k.variableRowHeight){n=o.item(o.startIndex+a,true).offsetTop}o.scroll(Ext.Array.slice(h,o.endIndex+1-b),1,a,b,e);if(k.variableRowHeight){l=k.bodyTop+n}else{l=g}}else{a=Math.max(o.endIndex-e,0);d=o.startIndex;o.scroll(Ext.Array.slice(h,0,o.startIndex-b),-1,a,b,e);if(k.variableRowHeight){l=k.bodyTop-o.item(d,true).offsetTop}else{l=g}}}k.position=k.scrollTop;if(m.positionBody){k.setBodyTop(l,g)}if(j&&!j.disabled&&!c){j.onRangeFetched(h,b,e,true);if(j.scrollTop!==k.scrollTop){j.view.el.dom.scrollTop=k.scrollTop}}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(b.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,j=h.view,m=j.all,a=m.elements,d=j.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+j.body.getHeight()<b){return Math.floor(h.scrollTop/h.rowHeight)}e=k+Math.min(h.numFromEdge+((h.lastScrollDirection==-1)?h.leadingBufferZone:h.trailingBufferZone),Math.floor((c-k)/2))}else{e=k+Math.floor((c-k)/2)}l=h.bodyTop+a[e].offsetTop;if(l+a[e].offsetHeight<b){return h.getFirstVisibleRowIndex(e+1,c,b,g)}if(l<=b){return e}else{if(e!==k){return h.getFirstVisibleRowIndex(k,e-1,b,g)}}}return Math.floor(h.scrollTop/h.rowHeight)},getLastVisibleRowIndex:function(l,c,b,g){var j=this,k=j.view,n=k.all,a=n.elements,d=k.el.dom.clientHeight,e,m,h;if(n.getCount()&&j.variableRowHeight){if(!arguments.length){l=n.startIndex;c=n.endIndex;b=j.scrollTop;g=b+d;if(j.bodyTop>g||j.bodyTop+k.body.getHeight()<b){return Math.floor(j.scrollTop/j.rowHeight)+Math.ceil(d/j.rowHeight)}e=c-Math.min(j.numFromEdge+((j.lastScrollDirection==1)?j.leadingBufferZone:j.trailingBufferZone),Math.floor((c-l)/2))}else{e=l+Math.floor((c-l)/2)}m=j.bodyTop+a[e].offsetTop;if(m>g){return j.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return j.getLastVisibleRowIndex(e+1,c,b,g)}}}return j.getFirstVisibleRowIndex()+Math.ceil(d/j.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return this.scrollHeight=Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}},0,0,0,0,["plugin.bufferedrenderer"],0,[Ext.grid.plugin,"BufferedRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.Editing",Ext.AbstractPlugin,{clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.columnManager.getColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var d=this,g,e=a.length,b;for(g=0;g<e;g++){b=a[g];if(!b.getEditor){b.getEditor=function(c,h){return d.getColumnField(this,h)}}if(!b.hasEditor){b.hasEditor=function(){return d.hasColumnField(this)}}if(!b.setEditor){b.setEditor=function(c){d.setColumnField(this,c)}}}},removeFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var e,d=a.length,b;for(e=0;e<d;e++){b=a[e];b.getEditor=b.hasEditor=b.setEditor=null}},getColumnField:function(b,a){var c=b.field;if(!(c&&c.isFormField)){c=b.field=this.createColumnField(b,a)}return c},hasColumnField:function(a){return !!a.field},setColumnField:function(a,b){a.field=b;a.field=this.createColumnField(a)},createColumnField:function(b,a){var c=b.field;if(!c&&b.editor){c=b.editor;b.editor=null}if(!c&&a){c=a}if(c){if(c.isFormField){c.column=b}else{if(Ext.isString(c)){c={name:b.dataIndex,xtype:c,column:b}}else{c=Ext.apply({name:b.dataIndex,column:b},c)}c=Ext.ComponentManager.create(c,this.defaultFieldXType)}b.field=c}return c},initEvents:function(){var a=this;a.initEditTriggers();a.initCancelTriggers()},initCancelTriggers:Ext.emptyFn,initEditTriggers:function(){var b=this,a=b.view;if(b.triggerEvent=="cellfocus"){b.mon(a,"cellfocus",b.onCellFocus,b)}else{if(b.triggerEvent=="rowfocus"){b.mon(a,"rowfocus",b.onRowFocus,b)}else{if(a.getSelectionModel().isCellModel){a.onCellFocus=Ext.Function.bind(b.beforeViewCellFocus,b)}b.mon(a,b.triggerEvent||("cell"+(b.clicksToEdit===1?"click":"dblclick")),b.onCellClick,b)}}b.initAddRemoveHeaderEvents();a.on("render",b.initKeyNavHeaderEvents,b,{single:true})},beforeViewCellFocus:function(a){if(this.view.selModel.keyNavigation||!this.editing||!this.isCellEditable||!this.isCellEditable(a.row,a.columnHeader)){this.view.focusCell.apply(this.view,arguments)}},onRowFocus:function(a,c,b){this.startEdit(c,0)},onCellFocus:function(c,b,a){this.startEdit(a.row,a.column)},onCellClick:function(c,a,j,b,h,d,g){if(!c.expanderSelector||!g.getTarget(c.expanderSelector)){this.startEdit(b,c.ownerCt.columnManager.getHeaderAtIndex(j))}},initAddRemoveHeaderEvents:function(){var a=this;a.mon(a.grid.headerCt,{scope:a,add:a.onColumnAdd,remove:a.onColumnRemove,columnmove:a.onColumnMove})},initKeyNavHeaderEvents:function(){var a=this;a.keyNav=Ext.create("Ext.util.KeyNav",a.view.el,{enter:a.onEnterKey,esc:a.onEscKey,scope:a})},onColumnAdd:function(a,b){this.initFieldAccessors(b)},onColumnRemove:function(a,b){this.removeFieldAccessors(b)},onColumnMove:function(d,b,a,c){this.initFieldAccessors(b)},onEnterKey:function(h){var d=this,c=d.grid,b=c.getSelectionModel(),a,j,g;if(b.getCurrentPosition&&(j=b.getCurrentPosition())){a=j.record;g=j.columnHeader}else{a=b.getLastSelected();g=c.columnManager.getHeaderAtIndex(0)}if(a&&g){d.startEdit(a,g)}},onEscKey:function(a){return this.cancelEdit()},beforeEdit:Ext.emptyFn,startEdit:function(b,e){var d=this,c,a=d.grid.lockable?d.grid:d.view;if(!a.componentLayoutCounter){a.on({boxready:Ext.Function.bind(d.startEdit,d,[b,e]),single:true});return false}if(d.grid.collapsed||!d.grid.view.isVisible(true)){return false}c=d.getEditingContext(b,e);if(c==null){return false}if(!d.preventBeforeCheck){if(d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}}d.editing=true;return c},getEditingContext:function(b,g){var e=this,c=e.grid,a=e.view,h=a.getNode(b,true),d,j;if(!h){return}g=c.columnManager.getVisibleHeaderClosestToIndex(Ext.isNumber(g)?g:g.getVisibleIndex());if(!g){return}j=g.getVisibleIndex();if(Ext.isNumber(b)){d=b;b=a.getRecord(h)}else{d=a.indexOf(h)}if(!b){return}return{grid:c,view:a,store:a.dataSource,record:b,field:g.dataIndex,value:b.get(g.dataIndex),row:h,column:g,rowIdx:d,colIdx:j}},cancelEdit:function(){var a=this;a.editing=false;a.fireEvent("canceledit",a,a.context)},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.fireEvent("edit",a,a.context)}a.context=null;a.editing=false},validateEdit:function(){var b=this,a=b.context;return b.fireEvent("validateedit",b,a)!==false&&!a.cancel}},1,0,0,0,["editing.editing"],[["observable",Ext.util.Observable]],[Ext.grid.plugin,"Editing"],0));(Ext.cmd.derive("Ext.grid.plugin.CellEditing",Ext.grid.plugin.Editing,{lockableScope:"both",init:function(a){var c=this,b=c.lockingPartner;c.callParent(arguments);if(b){if(b.editors){c.editors=b.editors}else{c.editors=b.editors=new Ext.util.MixedCollection(false,function(d){return d.editorId})}}else{c.editors=new Ext.util.MixedCollection(false,function(d){return d.editorId})}},onReconfigure:function(c,a,b){if(b){this.editors.clear()}this.callParent()},destroy:function(){var a=this;if(a.editors){a.editors.each(Ext.destroy,Ext);a.editors.clear()}a.callParent(arguments)},onBodyScroll:function(){var c=this,b=c.getActiveEditor(),a=c.view.el.getScroll();if(b&&b.editing&&b.editingPlugin===c){if(a.top!==c.scroll.top){if(b.field){if(b.field.triggerBlur){b.field.triggerBlur()}else{b.field.blur()}}}else{b.realign()}}c.scroll=a},initCancelTriggers:function(){var c=this,b=c.grid,a=b.view;c.mon(a,"bodyscroll",c.onBodyScroll,c);c.mon(b,{columnresize:c.cancelEdit,columnmove:c.cancelEdit,scope:c})},isCellEditable:function(a,d){var c=this,b=c.getEditingContext(a,d);if(c.grid.view.isVisible(true)&&b){d=b.column;a=b.record;if(d&&c.getEditor(a,d)){return true}}},startEdit:function(a,e,c){var d=this,b;if(!c){d.preventBeforeCheck=true;c=d.callParent(arguments);delete d.preventBeforeCheck;if(c===false){return false}}if(c&&d.grid.view.isVisible(true)){a=c.record;e=c.column;d.completeEdit();if(e&&!e.getEditor(a)){return false}d.context=c;c.originalValue=c.value=a.get(e.dataIndex);if(d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}b=d.getEditor(a,e);d.grid.view.cancelFocus();d.view.scrollCellIntoView(d.getCell(a,e));if(b){d.showEditor(b,c,c.value);return true}return false}},showEditor:function(e,a,h){var g=this,d=a.record,c=a.column,b=g.grid.getSelectionModel(),j=b.getCurrentPosition(),k=j&&j.view;if(k&&k!==g.view){return g.lockingPartner.showEditor(e,g.lockingPartner.getEditingContext(j.record,j.columnHeader),h)}g.setEditingContext(a);g.setActiveEditor(e);g.setActiveRecord(d);g.setActiveColumn(c);if(b.selectByPosition&&(!j||j.column!==a.colIdx||j.row!==a.rowIdx)){b.selectByPosition({row:a.rowIdx,column:a.colIdx,view:g.view})}e.startEdit(g.getCell(d,c),h,a);g.editing=true;g.scroll=g.view.el.getScroll()},completeEdit:function(){var a=this.getActiveEditor();if(a){a.completeEdit();this.editing=false}},setEditingContext:function(a){this.context=a;if(this.lockingPartner){this.lockingPartner.context=a}},setActiveEditor:function(a){this.activeEditor=a;if(this.lockingPartner){this.lockingPartner.activeEditor=a}},getActiveEditor:function(){return this.activeEditor},setActiveColumn:function(a){this.activeColumn=a;if(this.lockingPartner){this.lockingPartner.activeColumn=a}},getActiveColumn:function(){return this.activeColumn},setActiveRecord:function(a){this.activeRecord=a;if(this.lockingPartner){this.lockingPartner.activeRecord=a}},getActiveRecord:function(){return this.activeRecord},getEditor:function(a,e){var h=this,g=h.editors,d=e.getItemId(),c=g.getByKey(d),b=h.grid.ownerLockable||h.grid;if(!c){c=e.getEditor(a);if(!c){return false}if(c instanceof Ext.grid.CellEditor){c.floating=true}else{c=new Ext.grid.CellEditor({floating:true,editorId:d,field:c})}b.add(c);c.on({scope:h,specialkey:h.onSpecialKey,complete:h.onEditComplete,canceledit:h.cancelEdit});e.on("removed",h.cancelActiveEdit,h);g.add(c)}if(e.isTreeColumn){c.isForTree=e.isTreeColumn;c.addCls(Ext.baseCSSPrefix+"tree-cell-editor")}c.grid=h.grid;c.editingPlugin=h;return c},cancelActiveEdit:function(b){var a=this.context;if(a&&a.column===b){this.cancelEdit()}},setColumnField:function(b,c){var a=this.editors.getByKey(b.getItemId());Ext.destroy(a,b.field);this.editors.removeAtKey(b.getItemId());this.callParent(arguments)},getCell:function(a,b){return this.grid.getView().getCell(a,b)},onSpecialKey:function(a,c,b){var d;if(b.getKey()===b.TAB){b.stopEvent();if(a){a.onEditorTab(b)}d=a.up("tablepanel").getSelectionModel();if(d.onEditorTab){return d.onEditorTab(a.editingPlugin,b)}}},onEditComplete:function(c,h,b){var g=this,e=g.getActiveColumn(),d=g.context,a;if(e){a=d.record;g.setActiveEditor(null);g.setActiveColumn(null);g.setActiveRecord(null);d.value=h;if(!g.validateEdit()){return}if(!a.isEqual(h,b)){a.set(e.dataIndex,h)}d.view.focus(false,true);g.fireEvent("edit",g,d);g.editing=false}},cancelEdit:function(){var b=this,a=b.getActiveEditor();b.setActiveEditor(null);b.setActiveColumn(null);b.setActiveRecord(null);if(a){a.cancelEdit();b.context.view.focus();b.callParent(arguments);return}return true},startEditByPosition:function(a){if(!a.isCellContext){a=new Ext.grid.CellContext(this.view).setPosition(a)}a.setColumn(this.view.getHeaderCt().getVisibleHeaderClosestToIndex(a.column).getIndex());return this.startEdit(a.record,a.columnHeader)}},0,0,0,0,["plugin.cellediting"],0,[Ext.grid.plugin,"CellEditing"],0));(Ext.cmd.derive("Ext.grid.plugin.DivRenderer",Ext.AbstractPlugin,{tableTpl:['<div id="{view.id}-table" class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" style="{tableStyle}">',"{%","values.view.renderRows(values.rows, values.viewStartIndex, out);","%}","</div>",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'<dl {[values.rowId ? ("id=\\"" + values.rowId + "\\"") : ""]} ','data-boundView="{view.id}" ','data-recordId="{record.internalId}" ','data-recordIndex="{recordIndex}" ','class="{[values.itemClasses.join(" ")]} {[values.rowClasses.join(" ")]}{[dataRowCls]}" ','style="position:relative" ',"{rowAttr:attributes}>",'<tpl for="columns">{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","</tpl>","</dl>",{priority:0}],cellTpl:['<dt class="{tdCls}" {tdAttr} data-cellIndex="{cellIndex}">','<div {unselectableAttr} class="'+Ext.baseCSSPrefix+'grid-cell-inner"','style="text-align:{align};<tpl if="style">{style}</tpl>">{value}</div>',"</dt>",{priority:0}],selectors:{bodySelector:"div",nodeContainerSelector:"div",itemSelector:"dl."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"dl."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"dt."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainerSelector:function(){return this.getBodySelector()},getNodeContainer:function(){return this.el.getById(this.id+"-table",true)}},init:function(b){var a=b.getView();a.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");a.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");a.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");Ext.apply(a,this.selectors)}},0,0,0,0,["plugin.divrenderer"],0,[Ext.grid.plugin,"DivRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.DragDrop",Ext.AbstractPlugin,{dragText:"{0} selected row{1}",ddGroup:"GridDD",enableDrop:true,enableDrag:true,containerScroll:false,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},enable:function(){var a=this;if(a.dragZone){a.dragZone.unlock()}if(a.dropZone){a.dropZone.unlock()}a.callParent()},disable:function(){var a=this;if(a.dragZone){a.dragZone.lock()}if(a.dropZone){a.dropZone.lock()}a.callParent()},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.view.DragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,containerScroll:b.containerScroll,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.grid.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup})}}},0,0,0,0,["plugin.gridviewdragdrop"],0,[Ext.grid.plugin,"DragDrop"],0));(Ext.cmd.derive("Ext.grid.plugin.RowEditing",Ext.grid.plugin.Editing,{lockableScope:"top",editStyle:"row",autoCancel:true,errorSummary:true,constructor:function(){var a=this;a.callParent(arguments);if(!a.clicksToMoveEditor){a.clicksToMoveEditor=a.clicksToEdit}a.autoCancel=!!a.autoCancel},destroy:function(){Ext.destroy(this.editor);this.callParent(arguments)},startEdit:function(a,e){var d=this,c=d.getEditor(),b;if(c.beforeEdit()!==false){b=d.callParent(arguments);if(b){d.context=b;if(d.lockingPartner){d.lockingPartner.cancelEdit()}c.startEdit(b.record,b.column,b);return true}}return false},cancelEdit:function(){var a=this;if(a.editing){a.getEditor().cancelEdit();a.callParent(arguments);return}return true},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.editing=false;a.fireEvent("edit",a,a.context)}},validateEdit:function(){var l=this,h=l.editor,b=l.context,g=b.record,n={},d={},k=h.query(">[isFormField]"),j,c=k.length,a,m;for(j=0;j<c;j++){m=k[j];a=m.name;n[a]=m.getValue();d[a]=g.get(a)}Ext.apply(b,{newValues:n,originalValues:d});return l.callParent(arguments)&&l.getEditor().completeEdit()},getEditor:function(){var a=this;if(!a.editor){a.editor=a.initEditor()}return a.editor},initEditor:function(){return new Ext.grid.RowEditor(this.initEditorConfig())},initEditorConfig:function(){var h=this,c=h.grid,j=h.view,d=c.headerCt,e=["saveBtnText","cancelBtnText","errorsText","dirtyText"],k,a=e.length,g={autoCancel:h.autoCancel,errorSummary:h.errorSummary,fields:d.getGridColumns(),hidden:true,view:j,editingPlugin:h},l;for(k=0;k<a;k++){l=e[k];if(Ext.isDefined(h[l])){g[l]=h[l]}}return g},initEditTriggers:function(){var b=this,a=b.view,c=b.clicksToMoveEditor===1?"click":"dblclick";b.callParent(arguments);if(b.clicksToMoveEditor!==b.clicksToEdit){b.mon(a,"cell"+c,b.moveEditorByClick,b)}a.on({render:function(){b.mon(b.grid.headerCt,{scope:b,columnresize:b.onColumnResize,columnhide:b.onColumnHide,columnshow:b.onColumnShow})},single:true})},startEditByClick:function(){var a=this;if(!a.editing||a.clicksToMoveEditor===a.clicksToEdit){a.callParent(arguments)}},moveEditorByClick:function(){var a=this;if(a.editing){a.superclass.onCellClick.apply(a,arguments)}},onColumnAdd:function(a,c){if(c.isHeader){var d=this,b;d.initFieldAccessors(c);b=d.editor;if(b&&b.onColumnAdd){b.onColumnAdd(c)}}},onColumnRemove:function(a,c){if(c.isHeader){var d=this,b=d.getEditor();if(b&&b.onColumnRemove){b.onColumnRemove(a,c)}d.removeFieldAccessors(c)}},onColumnResize:function(a,d,c){if(d.isHeader){var e=this,b=e.getEditor();if(b&&b.onColumnResize){b.onColumnResize(d,c)}}},onColumnHide:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnHide){b.onColumnHide(c)}},onColumnShow:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnShow){b.onColumnShow(c)}},onColumnMove:function(a,d,c,g){var e=this,b=e.getEditor();e.initFieldAccessors(d);if(b&&b.onColumnMove){b.onColumnMove(d,c,g)}},setColumnField:function(b,d){var c=this,a=c.getEditor();a.removeField(b);c.callParent(arguments);c.getEditor().setField(b)}},1,0,0,0,["plugin.rowediting"],0,[Ext.grid.plugin,"RowEditing"],0));(Ext.cmd.derive("Ext.grid.plugin.RowExpander",Ext.AbstractPlugin,{lockableScope:"normal",rowBodyTpl:null,expandOnEnter:true,expandOnDblClick:true,selectRowOnExpand:false,rowBodyTrSelector:".x-grid-rowbody-tr",rowBodyHiddenCls:"x-grid-row-body-hidden",rowCollapsedCls:"x-grid-row-collapsed",addCollapsedCls:{before:function(a,b){var c=this.rowExpander;if(!c.recordsExpanded[a.record.internalId]){a.itemClasses.push(c.rowCollapsedCls)}},priority:500},setCmp:function(b){var d=this,a,c;d.callParent(arguments);d.recordsExpanded={};d.rowBodyTpl=Ext.XTemplate.getTpl(d,"rowBodyTpl");a=this.rowBodyTpl;c=[{ftype:"rowbody",lockableScope:"normal",recordsExpanded:d.recordsExpanded,rowBodyHiddenCls:d.rowBodyHiddenCls,rowCollapsedCls:d.rowCollapsedCls,setupRowData:d.getRowBodyFeatureData,setup:d.setup,getRowBodyContents:function(e){return a.applyTemplate(e.getData())}},{ftype:"rowwrap",lockableScope:"normal"}];if(b.features){b.features=Ext.Array.push(c,b.features)}else{b.features=c}},init:function(c){var e=this,b=c,a,d;e.callParent(arguments);e.grid=c;a=e.view=c.getView();e.addExpander();e.bindView(a);a.addRowTpl(e.addCollapsedCls).rowExpander=e;if(c.ownerLockable){b=c.ownerLockable;b.syncRowHeight=false;d=b.lockedGrid.getView();e.bindView(d);d.addRowTpl(e.addCollapsedCls).rowExpander=e;b.mon(b,"columnschanged",e.refreshRowHeights,e);b.mon(b.store,"datachanged",e.refreshRowHeights,e)}b.on("beforereconfigure",e.beforeReconfigure,e);if(c.ownerLockable&&!c.rowLines){a.on("rowfocus",e.refreshRowHeights,e)}},beforeReconfigure:function(d,a,c,e,b){var g=this.getHeaderConfig();g.locked=true;c.unshift(g)},addExpander:function(){var b=this,a=b.grid,c=b.getHeaderConfig();if(a.ownerLockable){a=a.ownerLockable.lockedGrid;a.width+=c.width}a.headerCt.insert(0,c)},getRowBodyFeatureData:function(b,a,d){var c=this;c.self.prototype.setupRowData.apply(c,arguments);d.rowBody=c.getRowBodyContents(b);d.rowBodyCls=c.recordsExpanded[b.internalId]?"":c.rowBodyHiddenCls},setup:function(b,c){var a=this;a.self.prototype.setup.apply(a,arguments);if(!a.grid.ownerLockable){c.rowBodyColspan-=1}},bindView:function(a){if(this.expandOnEnter){a.on("itemkeydown",this.onKeyDown,this)}if(this.expandOnDblClick){a.on("itemdblclick",this.onDblClick,this)}},onKeyDown:function(k,g,l,a,h){if(h.getKey()==h.ENTER){var b=k.store,c=k.getSelectionModel().getSelection(),j=c.length,d=0;for(;d<j;d++){a=b.indexOf(c[d]);this.toggleRow(a,c[d])}}},onDblClick:function(b,a,g,c,d){this.toggleRow(c,a)},toggleRow:function(b,e){var h=this,k=h.view,c=k.getNode(b),n=Ext.fly(c,"_rowExpander"),g=n.down(h.rowBodyTrSelector,true),d=n.hasCls(h.rowCollapsedCls),l=d?"removeCls":"addCls",j,a,m;Ext.suspendLayouts();n[l](h.rowCollapsedCls);Ext.fly(g)[l](h.rowBodyHiddenCls);h.recordsExpanded[e.internalId]=d;k.refreshSize();if(h.grid.ownerLockable){j=h.grid.ownerLockable;m=j.getView();k=j.lockedGrid.view;a=n.getHeight();n=Ext.fly(k.getNode(b),"_rowExpander");n.setHeight(a);n[l](h.rowCollapsedCls);k.refreshSize()}else{m=k}m.fireEvent(d?"expandbody":"collapsebody",n.dom,e,g);Ext.resumeLayouts(true)},refreshRowHeights:function(){Ext.globalEvents.on({idle:this.doRefreshRowHeights,scope:this,single:true})},doRefreshRowHeights:function(){var h=this,k=h.recordsExpanded,j,e,l=h.grid.ownerLockable.lockedGrid.view,a=h.grid.ownerLockable.normalGrid.view,c,d,g,b;for(j in k){if(k.hasOwnProperty(j)){e=this.view.store.data.get(j);d=l.getNode(e,false);c=a.getNode(e,false);d.style.height=c.style.height="";g=d.offsetHeight;b=c.offsetHeight;if(b>g){d.style.height=b+"px"}else{if(g>b){c.style.height=g+"px"}}}}},getHeaderConfig:function(){var a=this;return{width:24,lockable:false,sortable:false,resizable:false,draggable:false,hideable:false,menuDisabled:true,tdCls:Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-expander",renderer:function(c,b){if(!a.grid.ownerLockable){b.tdAttr+=' rowspan="2"'}return'<div class="'+Ext.baseCSSPrefix+'grid-row-expander"></div>'},processEvent:function(h,d,b,k,g,j,c){if(h=="mousedown"&&j.getTarget(".x-grid-row-expander")){a.toggleRow(k,c);return a.selectRowOnExpand}}}}},0,0,0,0,["plugin.rowexpander"],0,[Ext.grid.plugin,"RowExpander"],0));(Ext.cmd.derive("Ext.grid.property.Grid",Ext.grid.Panel,{alternateClassName:"Ext.grid.PropertyGrid",valueField:"value",nameField:"name",inferTypes:true,enableColumnMove:false,columnLines:true,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,gridCls:Ext.baseCSSPrefix+"property-grid",initComponent:function(){var a=this;a.source=a.source||{};a.addCls(a.gridCls);a.plugins=a.plugins||[];a.plugins.push(new Ext.grid.plugin.CellEditing({clicksToEdit:a.clicksToEdit,startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}));a.selModel={selType:"cellmodel",onCellSelect:function(b){if(b.column!=1){b.column=1}return this.self.prototype.onCellSelect.call(this,b)}};a.sourceConfig=Ext.apply({},a.sourceConfig);if(!a.store){a.propStore=a.store=new Ext.grid.property.Store(a,a.source)}a.configure(a.sourceConfig);if(a.sortableColumns){a.store.sort("name","ASC")}a.columns=new Ext.grid.property.HeaderContainer(a,a.store);a.addEvents("beforepropertychange","propertychange");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:new Ext.grid.CellEditor({field:new Ext.form.field.Date({selectOnFocus:true})}),string:new Ext.grid.CellEditor({field:new Ext.form.field.Text({selectOnFocus:true})}),number:new Ext.grid.CellEditor({field:new Ext.form.field.Number({selectOnFocus:true})}),"boolean":new Ext.grid.CellEditor({field:new Ext.form.field.ComboBox({editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},configure:function(b){var h=this,k=h.store,d=0,e=h.store.getCount(),l=h.nameField,m=h.valueField,a,j,c,g;h.configureLegacy(b);if(h.inferTypes){for(;d<e;++d){c=k.getAt(d);a=c.get(l);if(!h.getConfig(a,"type")){j=c.get(m);if(Ext.isDate(j)){g="date"}else{if(Ext.isNumber(j)){g="number"}else{if(Ext.isBoolean(j)){g="boolean"}else{g="string"}}}h.setConfig(a,"type",g)}}}},getConfig:function(e,d,a){var c=this.sourceConfig[e],b;if(c){b=c[d]}return b||a},setConfig:function(e,b,c){var a=this.sourceConfig,d=a[e];if(!d){d=a[e]={__copied:true}}else{if(!d.__copied){d=Ext.apply({__copied:true},d);a[e]=d}}d[b]=c;return c},configureLegacy:function(a){var c=this,e,b,d;c.copyLegacyObject(a,c.customRenderers,"renderer");c.copyLegacyObject(a,c.customEditors,"editor");c.copyLegacyObject(a,c.propertyNames,"displayName")},copyLegacyObject:function(a,e,c){var b,d;for(b in e){if(e.hasOwnProperty(b)){if(!a[b]){a[b]={}}a[b][c]=e[b]}}},onUpdate:function(d,a,c){var g=this,b,e;if(g.rendered&&c==Ext.data.Model.EDIT){b=a.get(g.valueField);e=a.modified.value;if(g.fireEvent("beforepropertychange",g.source,a.getId(),b,e)!==false){if(g.source){g.source[a.getId()]=b}a.commit();g.fireEvent("propertychange",g.source,a.getId(),b,e)}else{a.reject()}}},walkCells:function(h,g,d,c,a,b){if(g=="left"){g="up"}else{if(g=="right"){g="down"}}h=Ext.view.Table.prototype.walkCells.call(this,h,g,d,c,a,b);if(h&&!h.column){h.column=1}return h},getCellEditor:function(a,d){var g=this,h=a.get(g.nameField),j=a.get(g.valueField),c=g.getConfig(h,"editor"),b=g.getConfig(h,"type"),e=g.editors;if(c){if(!(c instanceof Ext.grid.CellEditor)){if(!(c instanceof Ext.form.field.Base)){c=Ext.ComponentManager.create(c,"textfield")}c=g.setConfig(h,"editor",new Ext.grid.CellEditor({field:c}))}}else{if(b){switch(b){case"date":c=e.date;break;case"number":c=e.number;break;case"boolean":c=g.editors["boolean"];break;default:c=e.string}}else{if(Ext.isDate(j)){c=e.date}else{if(Ext.isNumber(j)){c=e.number}else{if(Ext.isBoolean(j)){c=e["boolean"]}else{c=e.string}}}}}c.editorId=h;return c},beforeDestroy:function(){var a=this;a.callParent();a.destroyEditors(a.editors);a.destroyEditors(a.customEditors);delete a.source},destroyEditors:function(b){for(var a in b){if(b.hasOwnProperty(a)){Ext.destroy(b[a])}}},setSource:function(b,c){var a=this;a.source=b;if(c!==undefined){a.sourceConfig=Ext.apply({},c);a.configure(a.sourceConfig)}a.propStore.setSource(b)},getSource:function(){return this.propStore.getSource()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}},0,["propertygrid"],["panel","propertygrid","component","tablepanel","container","grid","box","gridpanel"],{panel:true,propertygrid:true,component:true,tablepanel:true,container:true,grid:true,box:true,gridpanel:true},["widget.propertygrid"],0,[Ext.grid.property,"Grid",Ext.grid,"PropertyGrid"],0));(Ext.cmd.derive("Ext.grid.property.HeaderContainer",Ext.grid.header.Container,{alternateClassName:"Ext.grid.PropertyColumnModel",nameWidth:115,nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",nameColumnCls:Ext.baseCSSPrefix+"grid-property-name",nameColumnInnerCls:Ext.baseCSSPrefix+"grid-cell-inner-property-name",constructor:function(b,a){var c=this;c.grid=b;c.store=a;c.callParent([{isRootHeader:true,enableColumnResize:Ext.isDefined(b.enableColumnResize)?b.enableColumnResize:c.enableColumnResize,enableColumnMove:Ext.isDefined(b.enableColumnMove)?b.enableColumnMove:c.enableColumnMove,items:[{header:c.nameText,width:b.nameColumnWidth||c.nameWidth,sortable:b.sortableColumns,dataIndex:b.nameField,renderer:Ext.Function.bind(c.renderProp,c),itemId:b.nameField,menuDisabled:true,tdCls:c.nameColumnCls,innerCls:c.nameColumnInnerCls},{header:c.valueText,renderer:Ext.Function.bind(c.renderCell,c),getEditor:Ext.Function.bind(c.getCellEditor,c),sortable:b.sortableColumns,flex:1,fixed:true,dataIndex:b.valueField,itemId:b.valueField,menuDisabled:true}]}])},getCellEditor:function(a){return this.grid.getCellEditor(a,this)},renderProp:function(a){return this.getPropertyName(a)},renderCell:function(h,e,g){var c=this,b=c.grid,d=b.getConfig(g.get(b.nameField),"renderer"),a=h;if(d){return d.apply(c,arguments)}if(Ext.isDate(h)){a=c.renderDate(h)}else{if(Ext.isBoolean(h)){a=c.renderBool(h)}}return Ext.util.Format.htmlEncode(a)},renderDate:Ext.util.Format.date,renderBool:function(a){return this[a?"trueText":"falseText"]},getPropertyName:function(a){return this.grid.getConfig(a,"displayName",a)}},1,0,["component","container","box","headercontainer"],{component:true,container:true,box:true,headercontainer:true},0,0,[Ext.grid.property,"HeaderContainer",Ext.grid,"PropertyColumnModel"],0));(Ext.cmd.derive("Ext.grid.property.Property",Ext.data.Model,{alternateClassName:"Ext.PropGridProperty",fields:[{name:"name",type:"string"},{name:"value"}],idProperty:"name"},0,0,0,0,0,0,[Ext.grid.property,"Property",Ext,"PropGridProperty"],0));(Ext.cmd.derive("Ext.grid.property.Store",Ext.data.Store,{alternateClassName:"Ext.grid.PropertyStore",sortOnLoad:false,constructor:function(a,c){var b=this;b.grid=a;b.source=c;b.callParent([{data:c,model:Ext.grid.property.Property,proxy:b.getProxy()}])},getProxy:function(){if(!this.proxy){Ext.grid.property.Store.prototype.proxy=new Ext.data.proxy.Memory({model:Ext.grid.property.Property,reader:this.getReader()})}return this.proxy},getReader:function(){if(!this.reader){Ext.grid.property.Store.prototype.reader=new Ext.data.reader.Reader({model:Ext.grid.property.Property,buildExtractors:Ext.emptyFn,read:function(a){return this.readRecords(a)},readRecords:function(b){var d,c,a={records:[],success:true};for(c in b){if(b.hasOwnProperty(c)){d=b[c];if(this.isEditableValue(d)){a.records.push(new Ext.grid.property.Property({name:c,value:d},c))}}}a.total=a.count=a.records.length;return new Ext.data.ResultSet(a)},isEditableValue:function(a){return Ext.isPrimitive(a)||Ext.isDate(a)||a===null}})}return this.reader},setSource:function(a){var b=this;b.source=a;b.suspendEvents();b.removeAll();b.proxy.data=a;b.load();b.resumeEvents();b.fireEvent("datachanged",b);b.fireEvent("refresh",b)},getProperty:function(a){return Ext.isNumber(a)?this.getAt(a):this.getById(a)},setValue:function(e,c,a){var b=this,d=b.getRec(e);if(d){d.set("value",c);b.source[e]=c}else{if(a){b.source[e]=c;d=new Ext.grid.property.Property({name:e,value:c},e);b.add(d)}}},remove:function(b){var a=this.getRec(b);if(a){this.callParent([a]);delete this.source[b]}},getRec:function(a){return this.getById(a)},getSource:function(){return this.source}},1,0,0,0,0,0,[Ext.grid.property,"Store",Ext.grid,"PropertyStore"],0));(Ext.cmd.derive("Ext.layout.ClassList",Ext.Base,(function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{dirty:false,constructor:function(c){this.owner=c;this.map=a(this.classes=b(c.el.className))},add:function(c){var d=this;if(!d.map[c]){d.map[c]=true;d.classes.push(c);if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},addMany:function(c){Ext.each(b(c),this.add,this)},contains:function(c){return this.map[c]},flush:function(){this.owner.el.className=this.classes.join(" ");this.dirty=false},remove:function(c){var d=this;if(d.map[c]){delete d.map[c];d.classes=Ext.Array.filter(d.classes,function(e){return e!=c});if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},removeMany:function(d){var e=this,c=a(b(d));e.classes=Ext.Array.filter(e.classes,function(g){if(!c[g]){return true}delete e.map[g];if(!e.dirty){e.dirty=true;e.owner.markDirty()}return false})}}}()),1,0,0,0,0,0,[Ext.layout,"ClassList"],0));(Ext.cmd.derive("Ext.util.Queue",Ext.Base,{constructor:function(){this.clear()},add:function(c){var b=this,a=b.getKey(c);if(!b.map[a]){++b.length;b.items.push(c);b.map[a]=c}return c},clear:function(){var b=this,a=b.items;b.items=[];b.map={};b.length=0;return a},contains:function(b){var a=this.getKey(b);return this.map.hasOwnProperty(a)},getCount:function(){return this.length},getKey:function(a){return a.id},remove:function(e){var d=this,c=d.getKey(e),a=d.items,b;if(d.map[c]){b=Ext.Array.indexOf(a,e);Ext.Array.erase(a,b,1);delete d.map[c];--d.length}return e}},1,0,0,0,0,0,[Ext.util,"Queue"],0));(Ext.cmd.derive("Ext.layout.ContextItem",Ext.Base,{heightModel:null,widthModel:null,sizeModel:null,optOut:false,ownerSizePolicy:null,boxChildren:null,boxParent:null,isBorderBoxValue:null,children:[],dirty:null,dirtyCount:0,hasRawContent:true,isContextItem:true,isTopLevel:false,consumersContentHeight:0,consumersContentWidth:0,consumersContainerHeight:0,consumersContainerWidth:0,consumersHeight:0,consumersWidth:0,ownerCtContext:null,remainingChildDimensions:0,props:null,state:null,wrapsComponent:false,constructor:function(s){var t=this,q=Ext.layout.SizeModel.sizeModels,l=q.configured,k=q.shrinkWrap,b,r,o,n,g,d,u,e,p,m,c,j,h,a;Ext.apply(t,s);b=t.el;t.id=b.id;t.flushedProps={};t.props=g={};t.styles={};u=t.target;if(!u.isComponent){r=b.lastBox}else{t.wrapsComponent=true;t.framing=u.frameSize||null;t.isComponentChild=u.ownerLayout&&u.ownerLayout.isComponentLayout;r=u.lastBox;o=u.ownerCt;if(o&&(n=o.el&&t.context.items[o.el.id])){t.ownerCtContext=n}t.sizeModel=d=u.getSizeModel(n&&n.widthModel.pairsByHeightOrdinal[n.heightModel.ordinal]);t.widthModel=j=d.width;t.heightModel=h=d.height;if(r&&r.invalid===false){m=(u.width===(e=r.width));c=(u.height===(p=r.height));if(j===k&&h===k){a=true}else{if(j===l&&m){a=h===k||(h===l&&c)}}if(a){t.optOut=true;g.width=e;g.height=p}}}t.lastBox=r},init:function(j,c){var t=this,a=t.props,d=t.dirty,l=t.ownerCtContext,p=t.target.ownerLayout,h=!t.state,u=j||h,e,o,m,q,b,v,w=t.heightModel,g=t.widthModel,k,r,s=0;t.dirty=t.invalid=false;t.props={};t.remainingChildDimensions=0;if(t.boxChildren){t.boxChildren.length=0}if(!h){t.clearAllBlocks("blocks");t.clearAllBlocks("domBlocks")}if(!t.wrapsComponent){return u}v=t.target;t.state={};if(h){if(v.beforeLayout&&v.beforeLayout!==Ext.emptyFn){v.beforeLayout()}if(!l&&(q=v.ownerCt)){l=t.context.items[q.el.id]}if(l){t.ownerCtContext=l;t.isBoxParent=v.ownerLayout.isItemBoxParent(t)}else{t.isTopLevel=true}t.frameBodyContext=t.getEl("frameBody")}else{l=t.ownerCtContext;t.isTopLevel=!l;e=t.children;for(o=0,m=e.length;o<m;++o){e[o].init(true)}}t.hasRawContent=!(v.isContainer&&v.items.items.length>0);if(j){t.widthModel=t.heightModel=null;b=v.getSizeModel(l&&l.widthModel.pairsByHeightOrdinal[l.heightModel.ordinal]);if(h){t.sizeModel=b}t.widthModel=b.width;t.heightModel=b.height;if(l&&!t.isComponentChild){l.remainingChildDimensions+=2}}else{if(a){t.recoverProp("x",a,d);t.recoverProp("y",a,d);if(t.widthModel.calculated){t.recoverProp("width",a,d)}else{if("width" in a){++s}}if(t.heightModel.calculated){t.recoverProp("height",a,d)}else{if("height" in a){++s}}if(l&&!t.isComponentChild){l.remainingChildDimensions+=s}}}if(a&&p&&p.manageMargins){t.recoverProp("margin-top",a,d);t.recoverProp("margin-right",a,d);t.recoverProp("margin-bottom",a,d);t.recoverProp("margin-left",a,d)}if(c){k=c.heightModel;r=c.widthModel;if(r&&k&&g&&w){if(g.shrinkWrap&&w.shrinkWrap){if(r.constrainedMax&&k.constrainedMin){k=null}}}if(r){t.widthModel=r}if(k){t.heightModel=k}if(c.state){Ext.apply(t.state,c.state)}}return u},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",j=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=j[g]||(j[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var p=this,c=p.previousSize,m,o,e,h,g,d,k,n,l,a,b;if(c){m=p.target;o=m.layout&&m.layout.animate;if(o){e=Ext.isNumber(o)?o:o.duration}h=Ext.Object.getKeys(p.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},o);for(d=0,k=0,n=h.length;k<n;k++){l=h[k];a=c[l];b=p.peek(l);if(a!=b){l=p.translateProps[l]||l;g.from[l]=a;g.to[l]=b;++d}}if(d){if(p.isCollapsingOrExpanding===1){m.componentLayout.undoLayout(p)}else{p.writeProps(g.from)}p.el.animate(g);Ext.fx.Manager.getFxQueue(p.el.id)[0].on({afteranimate:function(){if(p.isCollapsingOrExpanding===1){m.componentLayout.redoLayout(p);m.afterCollapse(true)}else{if(p.isCollapsingOrExpanding===2){m.afterExpand(true)}}}})}}},getBorderInfo:function(){var a=this,b=a.borderInfo;if(!b){a.borderInfo=b=a.checkCache("borderInfo")}return b},getClassList:function(){return this.classList||(this.classList=new Ext.layout.ClassList(this))},getEl:function(c,a){var e=this,g,d,b;if(c){if(c.dom){d=c}else{g=e.target;if(a){g=a}d=g[c];if(typeof d=="function"){d=d.call(g);if(d===e.el){return this}}}if(d){b=e.context.getEl(e,d)}}return b||null},getFrameInfo:function(){var c=this,d=c.frameInfo,b,a;if(!d){b=c.framing;a=c.getBorderInfo();c.frameInfo=d=b?{top:b.top+a.top,right:b.right+a.right,bottom:b.bottom+a.bottom,left:b.left+a.left,width:b.width+a.width,height:b.height+a.height}:a}return d},getMarginInfo:function(){var d=this,h=d.marginInfo,b,a,g,e,c;if(!h){if(!d.wrapsComponent){h=d.checkCache("marginInfo")}else{b=d.target;e=b.ownerLayout;c=e?e.id:null;a=e&&e.manageMargins;h=b.margin$;if(h&&h.ownerId!==c){h=null}if(!h){h=d.parseMargins(b,b.margin)||d.checkCache("marginInfo");if(a){g=d.parseMargins(b,b.margins,e.defaultMargins);if(g){h={top:h.top+g.top,right:h.right+g.right,bottom:h.bottom+g.bottom,left:h.left+g.left}}d.setProp("margin-top",0);d.setProp("margin-right",0);d.setProp("margin-bottom",0);d.setProp("margin-left",0)}h.ownerId=c;b.margin$=h}h.width=h.left+h.right;h.height=h.top+h.bottom}d.marginInfo=h}return h},clearMarginCache:function(){delete this.marginInfo;delete this.target.margin$},getPaddingInfo:function(){var a=this,b=a.paddingInfo;if(!b){a.paddingInfo=b=a.checkCache("paddingInfo")}return b},getProp:function(c){var b=this,a=b.props[c];b.addTrigger(c);return a},getDomProp:function(c){var b=this,a=(b.dirty&&(c in b.dirty))?undefined:b.props[c];b.addTrigger(c,true);return a},getStyle:function(a){var c=this,b=c.styles,e,d;if(a in b){d=b[a]}else{e=c.styleInfo[a];d=c.el.getStyle(a);if(e&&e.parseInt){d=parseInt(d,10)||0}b[a]=d}return d},getStyles:function(p,b){var m=this,e=m.styles,q={},g=0,d=p.length,k,j,l,a,c,h,r,o;b=b||p;for(k=0;k<d;++k){a=p[k];if(a in e){q[b[k]]=e[a];++g;if(k&&g==1){j=p.slice(0,k);l=b.slice(0,k)}}else{if(g){(j||(j=[])).push(a);(l||(l=[])).push(b[k])}}}if(g<d){j=j||p;l=l||b;h=m.styleInfo;r=m.el.getStyle(j);for(k=j.length;k--;){a=j[k];c=h[a];o=r[a];if(c&&c.parseInt){o=parseInt(o,10)||0}q[l[k]]=o;e[a]=o}}return q},hasProp:function(a){return this.getProp(a)!=null},hasDomProp:function(a){return this.getDomProp(a)!=null},invalidate:function(a){this.context.queueInvalidate(this,a)},markDirty:function(){if(++this.dirtyCount==1){this.context.queueFlush(this)}},onBoxMeasured:function(){var a=this.boxParent,b=this.state;if(a&&a.widthModel.shrinkWrap&&!b.boxMeasured&&this.measuresBox){b.boxMeasured=1;a.boxChildMeasured()}},parseMargins:function(a,e,d){if(e===true){e=5}var c=typeof e,b;if(c=="string"||c=="number"){b=a.parseBox(e)}else{if(e||d){b={top:0,right:0,bottom:0,left:0};if(d){Ext.apply(b,this.parseMargins(a,d))}if(e){e=Ext.apply(b,a.parseBox(e))}}}return b},peek:function(a){return this.props[a]},recoverProp:function(g,b,a){var e=this,d=e.props,c;if(g in b){d[g]=b[g];if(a&&g in a){c=e.dirty||(e.dirty={});c[g]=a[g]}}},redo:function(b){var e=this,c,a,d;e.revertProps(e.props);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].redo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].redo()}}},removeEl:function(b,a){var d=this,e,c;if(b){if(b.dom){c=b}else{e=d.target;if(a){e=a}c=e[b];if(typeof c=="function"){c=c.call(e);if(c===d.el){return this}}}if(c){d.context.removeEl(d,c)}}},revertProps:function(d){var a,b=this.flushedProps,c={};for(a in d){if(b.hasOwnProperty(a)){c[a]=d[a]}}this.writeProps(c)},setAttribute:function(a,c){var b=this;if(!b.attributes){b.attributes={}}b.attributes[a]=c;b.markDirty()},setBox:function(b){var a=this;if("left" in b){a.setProp("x",b.left)}if("top" in b){a.setProp("y",b.top)}a.setSize(b.width,b.height)},setContentHeight:function(a,b){if(!b&&this.hasRawContent){return 1}return this.setProp("contentHeight",a)},setContentWidth:function(b,a){if(!a&&this.hasRawContent){return 1}return this.setProp("contentWidth",b)},setContentSize:function(c,a,b){return this.setContentWidth(c,b)+this.setContentHeight(a,b)==2},setProp:function(d,c,a){var b=this,h=typeof c,g,e;if(h=="undefined"||(h==="number"&&isNaN(c))){return 0}if(b.props[d]===c){return 1}b.props[d]=c;++b.context.progressCount;if(a===false){b.fireTriggers("domTriggers",d);b.clearBlocks("domBlocks",d)}else{e=b.styleInfo[d];if(e){if(!b.dirty){b.dirty={}}if(d=="width"||d=="height"){g=b.isBorderBoxValue;if(g===null){b.isBorderBoxValue=g=!!b.el.isBorderBox()}if(!g){b.borderInfo||b.getBorderInfo();b.paddingInfo||b.getPaddingInfo()}}b.dirty[d]=c;b.markDirty()}}b.fireTriggers("triggers",d);b.clearBlocks("blocks",d);return 1},setHeight:function(l,a){var g=this,d=g.target,c=g.ownerCtContext,h,e,b,k,j;if(l<0){l=0}if(!g.wrapsComponent){if(!g.setProp("height",l,a)){return NaN}}else{b=g.collapsedVert?0:(d.minHeight||0);l=Ext.Number.constrain(l,b,d.maxHeight);k=g.props.height;if(!g.setProp("height",l,a)){return NaN}if(c&&!g.isComponentChild&&isNaN(k)){j=--c.remainingChildDimensions;if(!j){c.setProp("containerChildrenSizeDone",true)}}h=g.frameBodyContext;if(h){e=g.getFrameInfo();h.setHeight(l-e.height,a)}}return l},setWidth:function(b,a){var j=this,g=j.target,e=j.ownerCtContext,k,h,d,c,l;if(b<0){b=0}if(!j.wrapsComponent){if(!j.setProp("width",b,a)){return NaN}}else{d=j.collapsedHorz?0:(g.minWidth||0);b=Ext.Number.constrain(b,d,g.maxWidth);c=j.props.width;if(!j.setProp("width",b,a)){return NaN}if(e&&!j.isComponentChild&&isNaN(c)){l=--e.remainingChildDimensions;if(!l){e.setProp("containerChildrenSizeDone",true)}}k=j.frameBodyContext;if(k){h=j.getFrameInfo();k.setWidth(b-h.width,a)}}return b},setSize:function(c,a,b){this.setWidth(c,b);this.setHeight(a,b)},translateProps:{x:"left",y:"top"},undo:function(b){var e=this,c,a,d;e.revertProps(e.lastBox);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].undo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].undo()}}},unsetProp:function(b){var a=this.dirty;delete this.props[b];if(a){delete a[b]}},writeProps:function(e,d){if(!(e&&typeof e=="object")){return}var x=this,c=x.el,j={},h=0,b=x.styleInfo,w,k,o,q=e.width,m=e.height,v=x.isBorderBoxValue,y=x.target,s=Math.max,u=0,l=0,g,a,p,r,t,n;if("displayed" in e){c.setDisplayed(e.displayed)}for(k in e){if(d){x.fireTriggers("domTriggers",k);x.clearBlocks("domBlocks",k);x.flushedProps[k]=1}w=b[k];if(w&&w.dom){if(w.suffix&&(o=parseInt(e[k],10))){j[k]=o+w.suffix}else{j[k]=e[k]}++h}}if("x" in e||"y" in e){if(y.isComponent){y.setPosition(e.x,e.y)}else{h+=x.addPositionStyles(j,e)}}if(!v&&(q>0||m>0)){if(!x.frameBodyContext){u=x.paddingInfo.width;l=x.paddingInfo.height}if(q){q=s(parseInt(q,10)-(x.borderInfo.width+u),0);j.width=q+"px";++h}if(m){m=s(parseInt(m,10)-(x.borderInfo.height+l),0);j.height=m+"px";++h}}if(x.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&x.hasOverflowY)||(a=m!==undefined&&x.hasOverflowX)){p=x.isAbsolute;if(p===undefined){p=false;n=x.target.getTargetEl();t=n.getStyle("position");if(t=="absolute"){t=n.getStyle("box-sizing");p=(t=="border-box")}x.isAbsolute=p}if(p){r=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+r.width;j.width=q+"px";++h}if(a){m=parseInt(m,10)+r.height;j.height=m+"px";++h}}}}if(h){c.setStyle(j)}}},1,0,0,0,0,0,[Ext.layout,"ContextItem"],function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}}));(Ext.cmd.derive("Ext.layout.Context",Ext.Base,{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(j,a,m){var p=this,h=j,l=!j.isComponent,b=l?h.length:1,d,c,o,n,g,s,q,r,t,e;for(d=0;d<b;++d){if(l){j=h[d]}if(m&&j.ownerCt){e=this.items[j.ownerCt.el.id];if(e){Ext.Array.remove(e.childItems,p.getCmp(j))}}if(!a){q=p.invalidQueue;o=q.length;if(o){p.invalidQueue=s=[];for(c=0;c<o;++c){r=q[c];t=r.item.target;if(t!=j&&!t.isDescendant(j)){s.push(r)}}}}g=j.componentLayout;p.cancelLayout(g);if(g.getLayoutItems){n=g.getLayoutItems();if(n.length){p.cancelComponent(n,true)}}if(j.isContainer&&!j.collapsed){g=j.layout;p.cancelLayout(g);n=g.getVisibleItems();if(n.length){p.cancelComponent(n,true)}}}},cancelLayout:function(b){var a=this;a.completionQueue.remove(b);a.finalizeQueue.remove(b);a.finishQueue.remove(b);a.layoutQueue.remove(b);if(b.running){a.layoutDone(b)}b.ownerContext=null},clearTriggers:function(g,h){var a=g.id,e=this.triggers[h?"dom":"data"],j=e&&e[a],b=(j&&j.length)||0,d,k,c;for(d=0;d<b;++d){c=j[d];k=c.item;e=h?k.domTriggers:k.triggers;delete e[c.prop][a]}},flush:function(){var d=this,a=d.flushQueue.clear(),c=a.length,b;if(c){++d.flushCount;for(b=0;b<c;++b){a[b].flush()}}},flushAnimations:function(){var d=this,b=d.animateQueue.clear(),a=b.length,c;if(a){for(c=0;c<a;c++){if(b[c].target.animate!==false){b[c].flushAnimations()}}Ext.fx.Manager.runner()}},flushInvalidates:function(){var h=this,a=h.invalidQueue,g=a&&a.length,b,e,d,c;h.invalidQueue=[];if(g){e=[];for(c=0;c<g;++c){b=(d=a[c]).item.target;if(!b.container.isDetachedBody){e.push(b);if(d.options){h.invalidateData[b.id]=d.options}}}h.invalidate(e,null)}},flushLayouts:function(h,a,c){var g=this,j=c?g[h].items:g[h].clear(),e=j.length,b,d;if(e){for(b=0;b<e;++b){d=j[b];if(!d.running){g.callLayout(d,a)}}g.currentLayout=null}},getCmp:function(a){return this.getItem(a,a.el)},getEl:function(b,a){var c=this.getItem(a,a);if(!c.parent){c.parent=b;if(b.children.length){b.children.push(c)}else{b.children=[c]}}return c},getItem:function(d,b){var e=b.id,a=this.items,c=a[e]||(a[e]=new Ext.layout.ContextItem({context:this,target:d,el:b}));return c},handleFailure:function(){var c=this.layouts,b,a;Ext.failedLayouts=(Ext.failedLayouts||0)+1;for(a in c){b=c[a];if(c.hasOwnProperty(a)){b.running=false;b.ownerContext=null}}},invalidate:function(k,n){var p=this,m=!k.isComponent,c,a,g,l,q,o,b,h,j,e,d;for(g=0,b=m?k.length:1;g<b;++g){l=m?k[g]:k;if(l.rendered&&!l.hidden){q=p.getCmp(l);h=l.componentLayout;a=!h.ownerContext;j=(l.isContainer&&!l.collapsed)?l.layout:null;e=p.invalidateData[q.id];delete p.invalidateData[q.id];d=q.init(n,e);if(e){p.processInvalidate(e,q,"before")}if(h.beforeLayoutCycle){h.beforeLayoutCycle(q)}if(j&&j.beforeLayoutCycle){j.beforeLayoutCycle(q)}d=q.initContinue(d);c=true;if(h.getLayoutItems){h.renderChildren();o=h.getLayoutItems();if(o.length){p.invalidate(o,true)}}if(j){c=false;j.renderChildren();o=j.getVisibleItems();if(o.length){p.invalidate(o,true)}}q.initDone(c);p.resetLayout(h,q,a);if(j){p.resetLayout(j,q,a)}q.initAnimation();if(e){p.processInvalidate(e,q,"after")}}}p.currentLayout=null},layoutDone:function(a){var b=a.ownerContext;a.running=false;if(a.isComponentLayout){if(b.measuresBox){b.onBoxMeasured()}b.setProp("done",true)}else{b.setProp("containerLayoutDone",true)}--this.remainingLayouts;++this.progressCount},newQueue:function(){return new Ext.util.Queue()},processInvalidate:function(b,e,a){if(b[a]){var d=this,c=d.currentLayout;d.currentLayout=b.layout||null;b[a](e,b);d.currentLayout=c}},queueAnimation:function(a){this.animateQueue.add(a)},queueCompletion:function(a){this.completionQueue.add(a)},queueFinalize:function(a){this.finalizeQueue.add(a)},queueFlush:function(a){this.flushQueue.add(a)},chainFns:function(a,j,g){var d=this,c=a.layout,e=j.layout,b=a[g],h=j[g];return function(k){var l=d.currentLayout;if(b){d.currentLayout=c;b.call(a.scope||a,k,a)}d.currentLayout=e;h.call(j.scope||j,k,j);d.currentLayout=l}},queueInvalidate:function(l,m){var h=this,k=[],j=h.invalidQueue,g=j.length,d,b,e,a,c;if(l.isComponent){l=h.getCmp(d=l)}else{d=l.target}l.invalid=true;while(g--){b=j[g];e=b.item.target;if(d.isDescendant(e)){return}if(e==d){if(!(a=b.options)){b.options=m}else{if(m){if(m.widthModel){a.widthModel=m.widthModel}if(m.heightModel){a.heightModel=m.heightModel}if(!(c=a.state)){a.state=m.state}else{if(m.state){Ext.apply(c,m.state)}}if(m.before){a.before=h.chainFns(a,m,"before")}if(m.after){a.after=h.chainFns(a,m,"after")}}}return}if(!e.isDescendant(d)){k.push(b)}}k.push({item:l,options:m});h.invalidQueue=k},queueItemLayouts:function(c){var a=c.isComponent?c:c.target,b=a.componentLayout;if(!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}b=a.layout;if(b&&!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}},queueLayout:function(a){this.layoutQueue.add(a);a.pending=true},removeEl:function(d,c){var e=c.id,b=d.children,a=this.items;if(b){Ext.Array.remove(b,a[e])}delete a[e]},resetLayout:function(b,c,d){var a=this;a.currentLayout=b;b.done=false;b.pending=true;b.firedTriggers=0;a.layoutQueue.add(b);if(d){a.layouts[b.id]=b;b.running=true;if(b.finishedLayout){a.finishQueue.add(b)}++a.remainingLayouts;++b.layoutCount;b.ownerContext=c;b.beginCount=0;b.blockCount=0;b.calcCount=0;b.triggerCount=0;if(!b.initialized){b.initLayout()}b.beginLayout(c)}else{++b.beginCount;if(!b.running){++a.remainingLayouts;b.running=true;if(b.isComponentLayout){c.unsetProp("done")}a.completionQueue.remove(b);a.finalizeQueue.remove(b)}}b.beginLayoutCycle(c,d)},run:function(){var c=this,b=false,a=100;c.flushInvalidates();c.state=1;c.totalCount=c.layoutQueue.getCount();c.flush();while((c.remainingLayouts||c.invalidQueue.length)&&a--){if(c.invalidQueue.length){c.flushInvalidates()}if(c.runCycle()){b=false}else{if(!b){c.flush();b=true;c.flushLayouts("completionQueue","completeLayout")}else{if(!c.invalidQueue.length){c.state=2;break}}}if(!(c.remainingLayouts||c.invalidQueue.length)){c.flush();c.flushLayouts("completionQueue","completeLayout");c.flushLayouts("finalizeQueue","finalizeLayout")}}return c.runComplete()},runComplete:function(){var a=this;a.state=2;if(a.remainingLayouts){a.handleFailure();return false}a.flush();a.flushLayouts("finishQueue","finishedLayout",true);a.flushLayouts("finishQueue","notifyOwner");a.flush();a.flushAnimations();return true},runCycle:function(){var c=this,d=c.layoutQueue.clear(),b=d.length,a;++c.cycleCount;c.progressCount=0;for(a=0;a<b;++a){c.runLayout(c.currentLayout=d[a])}c.currentLayout=null;return c.progressCount>0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;e<a;){c=this.get(h);c.setSize(g,b);h=d[++e]}}},1,0,0,0,0,0,[Ext.layout,"Context"],0));(Ext.cmd.derive("Ext.layout.component.Body",Ext.layout.component.Auto,{type:"body",beginLayout:function(a){this.callParent(arguments);a.bodyContext=a.getEl("body")},beginLayoutCycle:function(d,b){var c=this,g=c.lastWidthModel,e=c.lastHeightModel,a=c.owner.body;c.callParent(arguments);if(g&&g.fixed&&d.widthModel.shrinkWrap){a.setWidth(null)}if(e&&e.fixed&&d.heightModel.shrinkWrap){a.setHeight(null)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(c.targetContext!=c){a+=c.getPaddingInfo().height}return a},calculateOwnerWidthFromContentWidth:function(c,a){var b=this.callParent(arguments);if(c.targetContext!=c){b+=c.getPaddingInfo().width}return b},measureContentWidth:function(a){return a.bodyContext.setWidth(a.bodyContext.el.dom.offsetWidth,false)},measureContentHeight:function(a){return a.bodyContext.setHeight(a.bodyContext.el.dom.offsetHeight,false)},publishInnerHeight:function(c,a){var d=a-c.getFrameInfo().height,b=c.targetContext;if(b!=c){d-=c.getPaddingInfo().height}return c.bodyContext.setHeight(d,!c.heightModel.natural)},publishInnerWidth:function(d,c){var a=c-d.getFrameInfo().width,b=d.targetContext;if(b!=d){a-=d.getPaddingInfo().width}d.bodyContext.setWidth(a,!d.widthModel.natural)}},0,0,0,0,["layout.body"],0,[Ext.layout.component,"Body"],0));(Ext.cmd.derive("Ext.layout.component.FieldSet",Ext.layout.component.Body,{type:"fieldset",defaultCollapsedWidth:100,beforeLayoutCycle:function(a){if(a.target.collapsed){a.heightModel=this.sizeModels.shrinkWrap}},beginLayoutCycle:function(b){var c=b.target,a;this.callParent(arguments);if(c.collapsed){b.setContentHeight(0);b.restoreMinHeight=c.minHeight;delete c.minHeight;if(b.widthModel.shrinkWrap){a=c.lastComponentSize;b.setContentWidth((a&&a.contentWidth)||this.defaultCollapsedWidth)}}},finishedLayout:function(c){var a=this.owner,b=c.restoreMinHeight;this.callParent(arguments);if(b){a.minHeight=b}},calculateOwnerHeightFromContentHeight:function(d,c){var a=d.getBorderInfo(),b=d.target.legend;return d.getProp("contentHeight")+d.getPaddingInfo().height+((Ext.isIEQuirks||Ext.isIE8m)?d.bodyContext.getPaddingInfo().top:0)+(b?b.getHeight():a.top)+a.bottom},publishInnerHeight:function(c,a){var b=c.target.legend;if(b){a-=b.getHeight()}this.callParent([c,a])},getLayoutItems:function(){var a=this.owner.legend;return a?[a]:[]}},0,0,0,0,["layout.fieldset"],0,[Ext.layout.component,"FieldSet"],0));(Ext.cmd.derive("Ext.layout.component.field.Slider",Ext.layout.component.field.Field,{type:"sliderfield",beginLayout:function(a){this.callParent(arguments);a.endElContext=a.getEl("endEl");a.innerElContext=a.getEl("innerEl");a.bodyElContext=a.getEl("bodyEl")},publishInnerHeight:function(d,a){var e=a-this.measureLabelErrorHeight(d),c,b;if(this.owner.vertical){c=d.endElContext.getPaddingInfo();b=d.inputContext.getPaddingInfo();d.innerElContext.setHeight(e-b.height-c.height)}else{d.bodyElContext.setHeight(e)}},publishInnerWidth:function(d,c){if(!this.owner.vertical){var b=d.endElContext.getPaddingInfo(),a=d.inputContext.getPaddingInfo();d.innerElContext.setWidth(c-a.left-b.right-d.labelContext.getProp("width"))}},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.owner.bodyEl.setStyle("padding-right",c+"px")}b.callParent(arguments)}},0,0,0,0,["layout.sliderfield"],0,[Ext.layout.component.field,"Slider"],0));(Ext.cmd.derive("Ext.layout.container.Absolute",Ext.layout.container.Anchor,{alternateClassName:"Ext.layout.AbsoluteLayout",targetCls:Ext.baseCSSPrefix+"abs-layout-ct",itemCls:Ext.baseCSSPrefix+"abs-layout-item",ignoreOnContentChange:true,type:"absolute",adjustWidthAnchor:function(c,b){var d=this.targetPadding,a=b.getStyle("left");return c-a+d.left},adjustHeightAnchor:function(b,a){var c=this.targetPadding,d=a.getStyle("top");return b-d+c.top},isItemLayoutRoot:function(a){return this.ignoreOnContentChange||this.callParent(arguments)},isItemShrinkWrap:function(a){return true},beginLayout:function(b){var a=this,c=a.getTarget();a.callParent(arguments);if(c.dom!==document.body){c.position()}a.targetPadding=b.targetContext.getPaddingInfo()},isItemBoxParent:function(a){return true},onContentChange:function(){if(this.ignoreOnContentChange){return false}return this.callParent(arguments)},calculateContentSize:function(m,k){var u=this,d=(k||0)|((m.widthModel.shrinkWrap?1:0)|(m.heightModel.shrinkWrap?2:0)),c=(d&1)||undefined,h=(d&2)||undefined,b=m.childItems,g=b.length,r=0,p=0,l=0,e=m.props,t,j,n,o,s,a,q;if(c){if(isNaN(e.contentWidth)){++l}else{c=undefined}}if(h){if(isNaN(e.contentHeight)){++l}else{h=undefined}}if(l){for(s=0;s<g;++s){n=b[s];j=n.target;o=h&&n.getProp("height");q=c&&n.getProp("width");a=n.getMarginInfo();o+=a.bottom;q+=a.right;r=Math.max(r,(j.y||0)+o);p=Math.max(p,(j.x||0)+q);if(isNaN(r)&&isNaN(p)){u.done=false;return}}if(c||h){t=m.targetContext.getPaddingInfo()}if(c&&!m.setContentWidth(p+t.width)){u.done=false}if(h&&!m.setContentHeight(r+t.height)){u.done=false}}}},0,0,0,0,["layout.absolute"],0,[Ext.layout.container,"Absolute",Ext.layout,"AbsoluteLayout"],0));(Ext.cmd.derive("Ext.layout.container.Accordion",Ext.layout.container.VBox,{alternateClassName:"Ext.layout.AccordionLayout",targetCls:Ext.baseCSSPrefix+"accordion-layout-ct",itemCls:[Ext.baseCSSPrefix+"box-item",Ext.baseCSSPrefix+"accordion-item"],align:"stretch",fill:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:undefined,animate:true,activeOnTop:false,multi:false,defaultAnimatePolicy:{y:true,height:true},constructor:function(){var a=this;a.callParent(arguments);if(!a.multi&&a.animate){a.animatePolicy=Ext.apply({},a.defaultAnimatePolicy)}else{a.animatePolicy=null}},beforeRenderItems:function(h){var j=this,g=h.length,c=0,b=j.owner,k=j.collapseFirst,a=Ext.isDefined(k),l=j.getExpanded(true)[0],e=j.multi,d;for(;c<g;c++){d=h[c];if(!d.rendered){if(!e||d.collapsible!==false){d.collapsible=true}if(d.collapsible){if(a){d.collapseFirst=k}if(j.hideCollapseTool){d.hideCollapseTool=j.hideCollapseTool;d.titleCollapse=true}else{if(j.titleCollapse&&d.titleCollapse===undefined){d.titleCollapse=j.titleCollapse}}}delete d.hideHeader;delete d.width;d.title=d.title||"&#160;";d.addBodyCls(Ext.baseCSSPrefix+"accordion-body");if(!e){if(l){d.collapsed=l!==d}else{if(d.hasOwnProperty("collapsed")&&d.collapsed===false){l=d}else{d.collapsed=true}}b.mon(d,{show:j.onComponentShow,beforeexpand:j.onComponentExpand,beforecollapse:j.onComponentCollapse,scope:j})}b.mon(d,"beforecollapse",j.onComponentCollapse,j);d.headerOverCls=Ext.baseCSSPrefix+"accordion-hd-over"}}if(!e){if(!l){if(g){h[0].collapsed=false}}else{if(j.activeOnTop){l.collapsed=false;j.configureItem(l);if(b.items.indexOf(l)>0){b.insert(0,l)}}}}},getItemsRenderTree:function(a){this.beforeRenderItems(a);return this.callParent(arguments)},renderItems:function(a,b){this.beforeRenderItems(a);this.callParent(arguments)},configureItem:function(a){this.callParent(arguments);a.animCollapse=a.border=false;if(this.fill){a.flex=1}},beginLayout:function(a){this.callParent(arguments);this.updatePanelClasses(a)},updatePanelClasses:function(e){var c=e.visibleItems,d=c.length,a=true,b,h,g;for(b=0;b<d;b++){h=c[b];g=h.header;g.addCls(Ext.baseCSSPrefix+"accordion-hd");if(a){g.removeCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}else{g.addCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}if(b+1==d&&h.collapsed){g.addCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}else{g.removeCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}a=h.collapsed}},onComponentExpand:function(c){var j=this,b=j.owner,g=j.multi,a=j.animate,k=!g&&!j.animate&&j.activeOnTop,h,l,e,d;if(!j.processing){j.processing=true;d=b.deferLayouts;b.deferLayouts=true;h=g?[]:j.getExpanded();l=h.length;for(e=0;e<l;e++){h[e].collapse()}if(k){Ext.suspendLayouts();b.insert(0,c);Ext.resumeLayouts()}b.deferLayouts=d;j.processing=false}},onComponentCollapse:function(d){var e=this,a=e.owner,g,c,b;if(e.owner.items.getCount()===1){return false}if(!e.processing){e.processing=true;b=a.deferLayouts;a.deferLayouts=true;g=d.next()||d.prev();if(e.multi){c=e.getExpanded();if(c.length===1){g.expand()}}else{if(g){g.expand()}}a.deferLayouts=b;e.processing=false}},onComponentShow:function(a){this.onComponentExpand(a)},getExpanded:function(h){var b=this.owner.items.items,a=b.length,d=0,c=[],g,e;for(;d<a;++d){e=b[d];if(h){g=e.hasOwnProperty("collapsed")&&e.collapsed===false}else{g=!e.collapsed}if(g){c.push(e)}}return c}},1,0,0,0,["layout.accordion"],0,[Ext.layout.container,"Accordion",Ext.layout,"AccordionLayout"],0));(Ext.cmd.derive("Ext.resizer.Splitter",Ext.Component,{childEls:["collapseEl"],renderTpl:['<tpl if="collapsible===true">','<div id="{id}-collapseEl" class="',Ext.baseCSSPrefix,"collapse-el ",Ext.baseCSSPrefix,'layout-split-{collapseDir}{childElCls}">&#160;',"</div>","</tpl>"],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var a=this,b=a.getCollapseTarget();a.callParent();if(b.collapsed){a.addCls(a.collapsedClsInternal)}if(!a.canResize){a.addCls(a.baseCls+"-noresize")}Ext.applyIf(a.renderData,{collapseDir:a.getCollapseDirection(),collapsible:a.collapsible||b.collapsible});a.protoEl.unselectable()},onRender:function(){var b=this,a;b.callParent(arguments);if(b.performCollapse!==false){if(b.renderData.collapsible){b.mon(b.collapseEl,"click",b.toggleTargetCmp,b)}if(b.collapseOnDblClick){b.mon(b.el,"dblclick",b.toggleTargetCmp,b)}}b.mon(b.getCollapseTarget(),{collapse:b.onTargetCollapse,expand:b.onTargetExpand,beforeexpand:b.onBeforeTargetExpand,beforecollapse:b.onBeforeTargetCollapse,scope:b});if(b.canResize){b.tracker=Ext.create(b.getTrackerConfig());b.relayEvents(b.tracker,["beforedragstart","dragstart","dragend"])}a=b.collapseEl;if(a){a.lastCollapseDirCls=b.collapseDirProps[b.collapseDirection].cls}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)===b.indexOf(g)-1)<<1|Number(d==="hbox")}else{a=Number(g.collapseTarget==="prev")<<1|Number(d==="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.setOrientation((c==="top"||c==="bottom")?"horizontal":"vertical");return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget==="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},collapseDirProps:{top:{cls:Ext.baseCSSPrefix+"layout-split-top"},right:{cls:Ext.baseCSSPrefix+"layout-split-right"},bottom:{cls:Ext.baseCSSPrefix+"layout-split-bottom"},left:{cls:Ext.baseCSSPrefix+"layout-split-left"}},orientationProps:{horizontal:{opposite:"vertical",fixedAxis:"height",stretchedAxis:"width"},vertical:{opposite:"horizontal",fixedAxis:"width",stretchedAxis:"height"}},applyCollapseDirection:function(){var c=this,b=c.collapseEl,d=c.collapseDirProps[c.collapseDirection],a;if(b){a=b.lastCollapseDirCls;if(a){b.removeCls(a)}b.addCls(b.lastCollapseDirCls=d.cls)}},applyOrientation:function(){var e=this,c=e.orientation,d=e.orientationProps[c],g=e.size,b=d.fixedAxis,h=d.stretchedAxis,a=e.baseCls+"-";e[c]=true;e[d.opposite]=false;if(!e.hasOwnProperty(b)||e[b]==="100%"){e[b]=g}if(!e.hasOwnProperty(h)||e[h]===g){e[h]="100%"}e.removeCls(a+d.opposite);e.addCls(a+c)},setOrientation:function(a){var b=this;if(b.orientation!==a){b.orientation=a;b.applyOrientation()}},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}},0,["splitter"],["component","box","splitter"],{component:true,box:true,splitter:true},["widget.splitter"],0,[Ext.resizer,"Splitter"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitter",Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}},0,["bordersplitter"],["bordersplitter","component","box","splitter"],{bordersplitter:true,component:true,box:true,splitter:true},["widget.bordersplitter"],0,[Ext.resizer,"BorderSplitter"],0));(Ext.cmd.derive("Ext.layout.container.Border",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",isBorderLayout:true,padding:undefined,percentageRe:/(\d+)%/,horzMarginProp:"left",padOnContainerProp:"left",padNotOnContainerProp:"right",axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(m,b,w){var u=this,c=u.axisProps[w],r=!c.horizontal,l=c.sizeProp,p=0,a=m.childItems,g=a.length,t,q,o,h,s,e,k,n,d,v,j;for(q=0;q<g;++q){o=a[q];s=o.target;o.layoutPos={};if(s.region){o.region=e=s.region;o.isCenter=s.isCenter;o.isHorz=s.isHorz;o.isVert=s.isVert;o.weight=s.weight||u.regionWeights[e]||0;b[s.id]=o;if(s.isCenter){t=o;h=s.flex;m.centerRegion=t;continue}if(r!==o.isVert){continue}o.reverseWeighting=(e==c.borderEnd);n=s[l];d=typeof n;if(!s.collapsed){if(d=="string"&&(k=u.percentageRe.exec(n))){o.percentage=parseInt(k[1],10)}else{if(s.flex){p+=o.flex=s.flex}}}}}if(t){v=t.target;if((j=v.placeholderFor)){if(!h&&r===j.collapsedVertical()){h=0;t.collapseAxis=w}}else{if(v.collapsed&&(r===v.collapsedVertical())){h=0;t.collapseAxis=w}}}if(h==null){h=1}p+=h;return Ext.apply({before:r?"top":"left",totalFlex:p},c)},beginLayout:function(d){var l=this,k=l.getLayoutItems(),e=l.padding,m=typeof e,p=false,q,o,b,h,g,a,c,j,n;if(e){if(m=="string"||m=="number"){e=Ext.util.Format.parseBox(e)}}else{e=d.getEl("getTargetEl").getPaddingInfo();p=true}d.outerPad=e;d.padOnContainer=p;for(h=0,b=k.length;h<b;++h){o=k[h];a=l.getSplitterTarget(o);if(a){c=undefined;j=!!o.hidden;if(!a.split){if(a.isCollapsingOrExpanding){c=!!a.collapsed}}else{if(j!==a.hidden){c=!a.hidden}}if(c){o.show()}else{if(c===false){o.hide()}}}}l.callParent(arguments);k=d.childItems;b=k.length;g={};d.borderAxisHorz=l.beginAxis(d,g,"horz");d.borderAxisVert=l.beginAxis(d,g,"vert");for(h=0;h<b;++h){q=k[h];a=l.getSplitterTarget(q.target);if(a){n=g[a.id];if(!n){n=d.getEl(a.el,l);n.region=a.region}q.collapseTarget=a=n;q.weight=a.weight;q.reverseWeighting=a.reverseWeighting;a.splitter=q;q.isHorz=a.isHorz;q.isVert=a.isVert}}l.sortWeightedItems(k,"reverseWeighting");l.setupSplitterNeighbors(k)},calculate:function(d){var m=this,a=m.getContainerSize(d),j=d.childItems,c=j.length,b=d.borderAxisHorz,k=d.borderAxisVert,e=d.outerPad,o=d.padOnContainer,h,q,l,p,n,g;b.begin=e[m.padOnContainerProp];k.begin=e.top;n=b.end=b.flexSpace=a.width+(o?e[m.padOnContainerProp]:-e[m.padNotOnContainerProp]);g=k.end=k.flexSpace=a.height+(o?e.top:-e.bottom);for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.isHorz||q.isCenter){b.addUnflexed(l.width);n-=l.width}if(q.isVert||q.isCenter){k.addUnflexed(l.height);g-=l.height}if(!q.flex&&!q.percentage){if(q.isHorz||(q.isCenter&&q.collapseAxis==="horz")){p=q.getProp("width");b.addUnflexed(p);if(q.collapseTarget){n-=p}}else{if(q.isVert||(q.isCenter&&q.collapseAxis==="vert")){p=q.getProp("height");k.addUnflexed(p);if(q.collapseTarget){g-=p}}}}}for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.percentage){if(q.isHorz){p=Math.ceil(n*q.percentage/100);p=q.setWidth(p);b.addUnflexed(p)}else{if(q.isVert){p=Math.ceil(g*q.percentage/100);p=q.setHeight(p);k.addUnflexed(p)}}}}for(h=0;h<c;++h){q=j[h];if(!q.isCenter){m.calculateChildAxis(q,b);m.calculateChildAxis(q,k)}}if(m.finishAxis(d,k)+m.finishAxis(d,b)<2){m.done=false}else{m.finishPositions(j)}},calculateChildAxis:function(m,c){var a=m.collapseTarget,h="set"+c.sizePropCap,e=c.sizeProp,d=m.getMarginInfo()[e],k,b,g,j,l;if(a){k=a.region}else{k=m.region;g=m.flex}b=k==c.borderBegin;if(!b&&k!=c.borderEnd){m[h](c.end-c.begin-d);j=c.begin}else{if(g){l=Math.ceil(c.flexSpace*(g/c.totalFlex));l=m[h](l)}else{if(m.percentage){l=m.peek(e)}else{l=m.getProp(e)}}l+=d;if(b){j=c.begin;c.begin+=l}else{c.end=j=c.end-l}}m.layoutPos[c.posProp]=j},finishAxis:function(d,c){var b=c.end-c.begin,a=d.centerRegion;if(a){a["set"+c.sizePropCap](b-a.getMarginInfo()[c.sizeProp]);a.layoutPos[c.posProp]=c.begin}return Ext.isNumber(b)?1:0},finishPositions:function(e){var c=e.length,b,a,d=this.horzMarginProp;for(b=0;b<c;++b){a=e[b];a.setProp("x",a.layoutPos.x+a.marginInfo[d]);a.setProp("y",a.layoutPos.y+a.marginInfo.top)}},getLayoutItems:function(){var a=this.owner,e=(a&&a.items&&a.items.items)||[],d=e.length,b=[],c=0,g,h;for(;c<d;c++){g=e[c];h=g.placeholderFor;if(g.hidden||((!g.floated||g.isCollapsingOrExpanding===2)&&!(h&&h.isCollapsingOrExpanding===2))){b.push(g)}}return b},getPlaceholder:function(a){return a.getPlaceholder&&a.getPlaceholder()},getSplitterTarget:function(b){var a=b.collapseTarget;if(a&&a.collapsed){return a.placeholder||a}return a},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},insertSplitter:function(d,c,g,b){var h=d.region,e=Ext.apply({xtype:"bordersplitter",collapseTarget:d,id:d.id+"-splitter",hidden:g,canResize:d.splitterResize!==false,splitterFor:d},b),a=c+((h==="south"||h==="east")?0:1);if(d.collapseMode==="mini"){e.collapsedCls=d.collapsedCls}d.splitter=this.owner.add(a,e)},onAdd:function(e,b){var d=this,j=e.placeholderFor,h=e.region,c,g,a;d.callParent(arguments);if(h){Ext.apply(e,d.regionFlags[h]);if(e.initBorderRegion){e.initBorderRegion()}if(h==="center"){d.centerRegion=e}else{c=e.split;g=!!e.hidden;if(typeof c==="object"){a=c;c=true}if((e.isHorz||e.isVert)&&(c||e.collapseMode=="mini")){d.insertSplitter(e,b,g||!c,a)}}if(!e.hasOwnProperty("collapseMode")){e.collapseMode=d.panelCollapseMode}if(!e.hasOwnProperty("animCollapse")){if(e.collapseMode!=="placeholder"){e.animCollapse=false}else{e.animCollapse=d.panelCollapseAnimate}}}else{if(j){Ext.apply(e,d.regionFlags[j.region]);e.region=j.region;e.weight=j.weight}}},onDestroy:function(){this.centerRegion=null;this.callParent()},onRemove:function(b){var a=this,d=b.region,c=b.splitter;if(d){if(b.isCenter){a.centerRegion=null}delete b.isCenter;delete b.isHorz;delete b.isVert;if(c){a.owner.doRemove(c,true);delete b.splitter}}a.callParent(arguments)},regionMeta:{center:{splitterDelta:0},north:{splitterDelta:1},south:{splitterDelta:-1},west:{splitterDelta:1},east:{splitterDelta:-1}},regionFlags:{center:{isCenter:true,isHorz:false,isVert:false},north:{isCenter:false,isHorz:false,isVert:true,collapseDirection:"top"},south:{isCenter:false,isHorz:false,isVert:true,collapseDirection:"bottom"},west:{isCenter:false,isHorz:true,isVert:false,collapseDirection:"left"},east:{isCenter:false,isHorz:true,isVert:false,collapseDirection:"right"}},setupSplitterNeighbors:function(m){var p={},e=m.length,o=this.touchedRegions,h,g,a,l,d,k,n,b,c;for(h=0;h<e;++h){k=m[h].target;n=k.region;if(k.isCenter){a=k}else{if(n){c=o[n];for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(k)}}if(k.placeholderFor){b=k.placeholderFor.splitter}else{b=k.splitter}if(b){b.neighbors=[]}p[n]=b}}}if(a){c=o.center;for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(a)}}}},touchedRegions:{center:["north","south","east","west"],north:["north","east","west"],south:["south","east","west"],east:["east","north","south"],west:["west","north","south"]},sizePolicies:{vert:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},horz:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},flexAll:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}},getItemSizePolicy:function(e){var d=this,a=this.sizePolicies,c,b,g,h;if(e.isCenter){h=e.placeholderFor;if(h){if(h.collapsedVertical()){return a.vert}return a.horz}if(e.collapsed){if(e.collapsedVertical()){return a.vert}return a.horz}return a.flexAll}c=e.collapseTarget;if(c){return c.isVert?a.vert:a.horz}if(e.region){if(e.isVert){b=e.height;g=a.vert}else{b=e.width;g=a.horz}if(e.flex||(typeof b=="string"&&d.percentageRe.test(b))){return a.flexAll}return g}return d.autoSizePolicy}},0,0,0,0,["layout.border"],0,[Ext.layout.container,"Border",Ext.layout,"BorderLayout"],function(){var a={addUnflexed:function(c){this.flexSpace=Math.max(this.flexSpace-c,0)}},b=this.prototype.axisProps;Ext.apply(b.horz,a);Ext.apply(b.vert,a)}));(Ext.cmd.derive("Ext.layout.container.Card",Ext.layout.container.Fit,{alternateClassName:"Ext.layout.CardLayout",type:"card",hideInactive:true,deferredRender:false,getRenderTree:function(){var a=this,b=a.getActiveItem();if(b){if(b.hasListeners.beforeactivate&&b.fireEvent("beforeactivate",b)===false){b=a.activeItem=a.owner.activeItem=null}else{if(b.hasListeners.activate){b.on({boxready:function(){b.fireEvent("activate",b)},single:true})}}if(a.deferredRender){if(b){return a.getItemsRenderTree([b])}}else{return a.callParent(arguments)}}},renderChildren:function(){var a=this,b=a.getActiveItem();if(!a.deferredRender){a.callParent()}else{if(b){a.renderItems([b],a.getRenderTarget())}}},isValidParent:function(c,d,a){var b=c.el?c.el.dom:Ext.getDom(c);return(b&&b.parentNode===(d.dom||d))||false},getActiveItem:function(){var b=this,a=b.parseActiveItem(b.activeItem||(b.owner&&b.owner.activeItem));if(a&&b.owner.items.indexOf(a)!=-1){b.activeItem=a}else{b.activeItem=null}return b.activeItem},parseActiveItem:function(a){if(a&&a.isComponent){return a}else{if(typeof a=="number"||a===undefined){return this.getLayoutItems()[a||0]}else{return this.owner.getComponent(a)}}},configureItem:function(a){if(a===this.getActiveItem()){a.hidden=false}else{a.hidden=true}this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.activeItem){b.activeItem=null}},getAnimation:function(b,a){var c=(b||{}).cardSwitchAnimation;if(c===false){return false}return c||a.cardSwitchAnimation},getNext:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b+1]||(c?a[0]:false)},next:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getNext(a),b)},getPrev:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b-1]||(c?a[a.length-1]:false)},prev:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getPrev(a),b)},setActiveItem:function(b){var e=this,a=e.owner,d=e.activeItem,g=a.rendered,c;b=e.parseActiveItem(b);c=a.items.indexOf(b);if(c==-1){c=a.items.items.length;Ext.suspendLayouts();b=a.add(b);Ext.resumeLayouts()}if(b&&d!=b){if(b.fireEvent("beforeactivate",b,d)===false){return false}if(d&&d.fireEvent("beforedeactivate",d,b)===false){return false}if(g){Ext.suspendLayouts();if(!b.rendered){e.renderItem(b,e.getRenderTarget(),a.items.length)}if(d){if(e.hideInactive){d.hide();d.hiddenByLayout=true}d.fireEvent("deactivate",d,b)}if(b.hidden){b.show()}if(!b.hidden){e.activeItem=b}Ext.resumeLayouts(true)}else{e.activeItem=b}b.fireEvent("activate",b,d);return e.activeItem}return false}},0,0,0,0,["layout.card"],0,[Ext.layout.container,"Card",Ext.layout,"CardLayout"],0));(Ext.cmd.derive("Ext.layout.container.Column",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.ColumnLayout",type:"column",itemCls:Ext.baseCSSPrefix+"column",targetCls:Ext.baseCSSPrefix+"column-layout-ct",columnWidthSizePolicy:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},createsInnerCt:true,manageOverflow:true,isItemShrinkWrap:function(a){return true},getItemSizePolicy:function(a,b){if(a.columnWidth){if(!b){b=this.owner.getSizeModel()}if(!b.width.shrinkWrap){return this.columnWidthSizePolicy}}return this.autoSizePolicy},calculateItems:function(d,a){var o=this,e=d.targetContext,n=d.childItems,l=n.length,b=0,g=a.gotWidth,j,p,h,c,k,m;if(g===false){e.domBlock(o,"width");j=true}else{if(g){p=a.width}else{return true}}for(h=0;h<l;++h){c=n[h];k=c.getMarginInfo().width;if(!c.widthModel.calculated){m=c.getProp("width");if(typeof m!="number"){c.block(o,"width");j=true}b+=m+k}}if(!j){p=(p<b)?0:p-b;for(h=0;h<l;++h){c=n[h];if(c.widthModel.calculated){k=c.marginInfo.width;m=c.target.columnWidth;m=Math.floor(m*p)-k;m=c.setWidth(m);b+=m+k}}d.setContentWidth(b+d.paddingContext.getPaddingInfo().width)}return !j},setCtSizeIfNeeded:function(b,d){var a=this,c=b.paddingContext.getPaddingInfo();a.callParent(arguments);if((Ext.isIEQuirks||Ext.isIE7m)&&a.isShrinkWrapTpl&&c.right){b.outerCtContext.setProp("width",d.width+c.left)}}},0,0,0,0,["layout.column"],0,[Ext.layout.container,"Column",Ext.layout,"ColumnLayout"],0));(Ext.cmd.derive("Ext.layout.container.Form",Ext.layout.container.Container,{alternateClassName:"Ext.layout.FormLayout",tableCls:Ext.baseCSSPrefix+"form-layout-table",type:"form",createsInnerCt:true,manageOverflow:true,lastOverflowAdjust:{width:0,height:0},childEls:["formTable"],padRow:'<tr><td class="'+Ext.baseCSSPrefix+'form-item-pad" colspan="3"></td></tr>',renderTpl:['<table id="{ownerId}-formTable" class="{tableCls}" style="width:100%" cellpadding="0">',"{%this.renderBody(out,values)%}","</table>","{%this.renderPadder(out,values)%}"],getRenderData:function(){var a=this.callParent();a.tableCls=this.tableCls;return a},calculate:function(g){var e=this,j=e.getContainerSize(g,true),a,h,b=0,d,c=g.sizeModel.height.shrinkWrap;if(c){if(g.hasDomProp("containerChildrenSizeDone")){g.setProp("contentHeight",e.formTable.dom.offsetHeight+g.targetContext.getPaddingInfo().height)}else{e.done=false}}if(j.gotWidth){a=e.formTable.dom.offsetWidth;h=g.childItems;for(d=h.length;b<d;++b){h[b].setWidth(a,false)}}else{e.done=false}},getRenderTarget:function(){return this.formTable},getRenderTree:function(){var d=this,b=d.callParent(arguments),c,a;for(c=0,a=b.length;c<a;c++){b[c]=d.transformItemRenderTree(b[c])}return b},transformItemRenderTree:function(a){if(a.tag&&a.tag=="table"){a.tag="tbody";delete a.cellspacing;delete a.cellpadding;if(Ext.isIE6){a.cn=this.padRow}return a}return{tag:"tbody",cn:{tag:"tr",cn:{tag:"td",colspan:3,style:"width:100%",cn:a}}}},isValidParent:function(b,c,a){return true},isItemShrinkWrap:function(a){return((a.shrinkWrap===true)?3:a.shrinkWrap||0)&2},getItemSizePolicy:function(a){return{setsWidth:1,setsHeight:0}},beginLayoutCycle:function(b,a){var c=this.overflowPadderEl;if(c){c.setStyle("display","none")}if(!b.state.overflowAdjust){b.state.overflowAdjust=this.lastOverflowAdjust}},calculateOverflow:function(o,s,g){var w=this,n=o.targetContext,l=w.manageOverflow,c=o.state,m=c.overflowAdjust,e,k,b,p,a,t,j,r,d,q,u,h,v;if(l&&!c.secondPass&&!w.reserveScrollbar){h=(w.getOverflowXStyle(o)==="auto");v=(w.getOverflowYStyle(o)==="auto");if(!s.gotWidth){h=false}if(!s.gotHeight){v=false}if(h||v){t=Ext.getScrollbarSize();j=o.peek("contentWidth");r=o.peek("contentHeight");p=n.getPaddingInfo();j-=p.width;r-=p.height;d=s.width;q=s.height;u=w.getScrollbarsNeeded(d,q,j,r);c.overflowState=u;if(typeof g=="number"){u&=~g}m={width:(h&&(u&2))?t.width:0,height:(v&&(u&1))?t.height:0};if(m.width!==w.lastOverflowAdjust.width||m.height!==w.lastOverflowAdjust.height){w.done=false;o.invalidate({state:{overflowAdjust:m,overflowState:c.overflowState,secondPass:true}})}}}if(!w.done){return}b=o.padElContext||(o.padElContext=o.getEl("overflowPadderEl",w));if(b){u=c.overflowState;e=o.peek("contentWidth");k=1;if(u){p=n.getPaddingInfo();a=w.scrollRangeFlags;if((u&2)&&(a&1)){k+=p.bottom}if((u&1)&&(a&4)){e+=p.right}b.setProp("display","");b.setSize(e,k)}else{b.setProp("display","none")}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadder:function(b,d){var c=d.$layout,a=c.owner,e=c.getScrollRangeFlags();if(c.manageOverflow){if(e&5){b.push('<div id="',a.id,'-overflowPadderEl" ','style="font-size: 1px; height: 1px; margin-top: -1px; position: relative; z-index: -99999');b.push('"></div>');c.scrollRangeFlags=e}}},getContainerSize:function(d,j,b){var e=d.targetContext,h=e.getFrameInfo(),m=e.getPaddingInfo(),l=0,n=0,a=b?null:d.state.overflowAdjust,g,k,c,o;if(!d.widthModel.shrinkWrap){++n;c=j?e.getDomProp("width"):e.getProp("width");g=(typeof c=="number");if(g){++l;c-=h.width+m.width;if(a){c-=a.width}}}if(!d.heightModel.shrinkWrap){++n;o=j?e.getDomProp("height"):e.getProp("height");k=(typeof o=="number");if(k){++l;o-=h.height+m.height;if(a){o-=a.height}}}return{width:c,height:o,needed:n,got:l,gotAll:l==n,gotWidth:g,gotHeight:k}},getOverflowXStyle:function(b){var a=this;return a.overflowXStyle||(a.overflowXStyle=a.owner.scrollFlags.overflowX||b.targetContext.getStyle("overflow-x"))},getOverflowYStyle:function(b){var a=this;return a.overflowYStyle||(a.overflowYStyle=a.owner.scrollFlags.overflowY||b.targetContext.getStyle("overflow-y"))},getScrollRangeFlags:(function(){var a=-1;return function(){if(a<0){var g=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"border-box",style:{width:"100px",height:"100px",padding:"10px",overflow:"auto"},children:[{style:{border:"1px solid red",width:"150px",height:"150px",margin:"0 5px 5px 0"}}]}),d=g.dom.scrollHeight,c=g.dom.scrollWidth,e={175:0,165:1,170:2,160:3},b={175:0,165:4,170:8,160:12};a=(e[d]||0)|(b[c]||0);g.remove()}return a}}()),initLayout:function(){var b=this,a=Ext.getScrollbarSize().width;b.callParent();if(a&&b.manageOverflow&&!b.hasOwnProperty("lastOverflowAdjust")){if(b.owner.scrollFlags.y||b.reserveScrollbar){b.lastOverflowAdjust={width:a,height:0}}}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadder=this.doRenderPadder}},0,0,0,0,["layout.form"],0,[Ext.layout.container,"Form",Ext.layout,"FormLayout"],0));(Ext.cmd.derive("Ext.menu.Item",Ext.Component,{alternateClassName:"Ext.menu.TextItem",activeCls:Ext.baseCSSPrefix+"menu-item-active",ariaRole:"menuitem",canActivate:true,clickHideDelay:0,destroyMenu:true,disabledCls:Ext.baseCSSPrefix+"menu-item-disabled",hideOnClick:true,isMenuItem:true,menuAlign:"tl-tr?",menuExpandDelay:200,menuHideDelay:200,tooltipType:"qtip",arrowCls:Ext.baseCSSPrefix+"menu-item-arrow",childEls:["itemEl","iconEl","textEl","arrowEl"],renderTpl:['<tpl if="plain">',"{text}","<tpl else>",'<a id="{id}-itemEl"',' class="'+Ext.baseCSSPrefix+'menu-item-link{childElCls}"',' href="{href}"','<tpl if="hrefTarget"> target="{hrefTarget}"</tpl>',' hidefocus="true"',' unselectable="on"','<tpl if="tabIndex">',' tabIndex="{tabIndex}"',"</tpl>",">",'<div role="img" id="{id}-iconEl" class="'+Ext.baseCSSPrefix+"menu-item-icon {iconCls}",'{childElCls} {glyphCls}" style="<tpl if="icon">background-image:url({icon});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl>',"</div>",'<span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'menu-item-text" unselectable="on">{text}</span>','<img id="{id}-arrowEl" src="{blank}" class="{arrowCls}','{childElCls}"/>',"</a>","</tpl>"],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(c){var b=this,a=b.clickHideDelay;if(!b.href){c.stopEvent()}if(b.disabled){return}if(b.hideOnClick){if(!a){b.deferHideParentMenus()}else{b.deferHideParentMenusTimer=Ext.defer(b.deferHideParentMenus,a,b)}}Ext.callback(b.handler,b.scope||b,[b,c]);b.fireEvent("click",b,c);if(!b.hideOnClick){b.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}},0,["menuitem"],["component","menuitem","box"],{component:true,menuitem:true,box:true},["widget.menuitem"],[["queryable",Ext.Queryable]],[Ext.menu,"Item",Ext.menu,"TextItem"],0));(Ext.cmd.derive("Ext.menu.CheckItem",Ext.menu.Item,{checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['<tpl if="plain">',"{text}","<tpl else>","{%var showCheckbox = values.showCheckbox,",'      rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','<a id="{id}-itemEl" class="'+Ext.baseCSSPrefix+'menu-item-link{childElCls}" href="{href}" <tpl if="hrefTarget">target="{hrefTarget}"</tpl> hidefocus="true" unselectable="on"','<tpl if="tabIndex">',' tabIndex="{tabIndex}"',"</tpl>",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','<div role="img" id="{id}-iconEl" class="'+Ext.baseCSSPrefix+"menu-item-icon {iconCls}",'{childElCls} {glyphCls}" style="<tpl if="icon">background-image:url({icon});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl>',"</div>","{%} else if (showCheckbox){%}",'<img id="{id}-checkEl" src="{blank}" class="'+Ext.baseCSSPrefix+'menu-item-icon{childElCls}" />',"{%}%}",'<span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'menu-item-text {[textCls]}{childElCls}" <tpl if="arrowCls">style="margin-right: 17px;"</tpl> >{text}</span>',"{%if (rightCheckbox) {%}",'<img id="{id}-checkEl" src="{blank}" class="'+Ext.baseCSSPrefix+'menu-item-icon-right{childElCls}" />',"{%} else if (values.arrowCls) {%}",'<img id="{id}-arrowEl" src="{blank}" class="{arrowCls}{childElCls}"/>',"{%}%}","</a>","</tpl>"],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){a.showCheckbox=false;if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||(Ext.isIE9&&Ext.isStrict))&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}},0,["menucheckitem"],["component","menucheckitem","menuitem","box"],{component:true,menucheckitem:true,menuitem:true,box:true},["widget.menucheckitem"],0,[Ext.menu,"CheckItem"],0));(Ext.cmd.derive("Ext.menu.KeyNav",Ext.util.KeyNav,{constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,j=g+b,d=e.length,c=0,k;while(c<d&&j!==g){if(j<0){j=d-1}else{if(j>=d){j=0}}k=e.getAt(j);if(a.canActivateItem(k)){a.setActiveItem(k);break}j+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}},1,0,0,0,0,0,[Ext.menu,"KeyNav"],0));(Ext.cmd.derive("Ext.menu.Separator",Ext.menu.Item,{canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:"&#160;",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}},0,["menuseparator"],["component","menuseparator","menuitem","box"],{component:true,menuseparator:true,menuitem:true,box:true},["widget.menuseparator"],0,[Ext.menu,"Separator"],0));(Ext.cmd.derive("Ext.menu.Menu",Ext.panel.Panel,{enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden;b.constrain=false}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:"&#160;"})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,j=h.getRelatedTarget(),b=!g.el.contains(j),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},beforeShow:function(){var b=this,a;if(b.floating){b.savedMaxHeight=b.maxHeight;a=b.container.getViewSize().height;b.maxHeight=Math.min(b.maxHeight||a,a)}b.callParent(arguments)},afterShow:function(){var a=this;a.callParent(arguments);if(a.floating){a.maxHeight=a.savedMaxHeight}},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,j=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-j;if(k>a){h=e-j}else{if(g<k){h=e-(k-g)}else{if((e+k)>b){h=b-k}}}}d.setY(h)}},0,["menu"],["panel","component","container","menu","box"],{panel:true,component:true,container:true,menu:true,box:true},["widget.menu"],0,[Ext.menu,"Menu"],0));(Ext.cmd.derive("Ext.menu.ColorPicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{plain:true,showSeparator:false,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-color-item",id:b.pickerId,xtype:"colorpicker"},a)});b.callParent(arguments);b.picker=b.down("colorpicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["colormenu"],["panel","component","container","menu","colormenu","box"],{panel:true,component:true,container:true,menu:true,colormenu:true,box:true},["widget.colormenu"],0,[Ext.menu,"ColorPicker"],0));(Ext.cmd.derive("Ext.menu.DatePicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{showSeparator:false,plain:true,border:false,bodyPadding:0,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-date-item",id:b.pickerId,xtype:"datepicker"},a)});b.callParent(arguments);b.picker=b.down("datepicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["datemenu"],["panel","datemenu","component","container","menu","box"],{panel:true,datemenu:true,component:true,container:true,menu:true,box:true},["widget.datemenu"],0,[Ext.menu,"DatePicker"],0));(Ext.cmd.derive("Ext.panel.Tool",Ext.Component,{isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:['<img role="presentation" id="{id}-toolEl" src="{blank}" class="{baseCls}-img {baseCls}-{type}{childElCls}" role="presentation"/>'],toolOwner:null,tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}if(a.handler){Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a])}else{if(a.callback){Ext.callback(a.callback,a.scope||a,[a.toolOwner||a.ownerCt,a,c])}}a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}},0,["tool"],["component","tool","box"],{component:true,tool:true,box:true},["widget.tool"],0,[Ext.panel,"Tool"],0));(Ext.cmd.derive("Ext.resizer.SplitterTracker",Ext.dd.DragTracker,{enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:"&#160;"});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(j){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=j.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),j=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:j};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+j,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-j,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(n,h){var p=this,a=p.getSplitter(),j=a.orientation,q=p.getPrevCmp(),o=p.getNextCmp(),b=a.ownerCt,l=b.query(">[flex]"),m=l.length,c=j==="vertical",k=0,g=c?"width":"height",d=0,r,s;for(;k<m;k++){r=l[k];s=c?r.getWidth():r.getHeight();d+=s;r.flex=s}h=c?h[0]:h[1];if(q){s=p.prevBox[g]+h;if(q.flex){q.flex=s}else{q[g]=s}}if(o){s=p.nextBox[g]-h;if(o.flex){o.flex=s}else{o[g]=s}}b.updateLayout()},endDrag:function(){var a=this;if(a.overlay){a.overlay.remove();delete a.overlay}a.callParent(arguments)},onEnd:function(c){var a=this,b=a.getSplitter();b.removeCls(b.baseCls+"-active");a.performResize(c,a.getResizeOffset())},onDrag:function(g){var c=this,h=c.getOffset("dragTarget"),d=c.getSplitter(),b=d.getEl(),a=d.orientation;if(a==="vertical"){b.setX(c.startRegion.left+h[0])}else{b.setY(c.startRegion.top+h[1])}},getSplitter:function(){return this.splitter},getVertPrevConstrainRight:function(a){return(a.prevCmp.maxWidth?a.prevBox.x+a.prevCmp.maxWidth:a.nextBox.right-(a.nextCmp.minWidth||a.defaultMin))+a.splitWidth},getVertPrevConstrainLeft:function(a){return a.prevBox.x+(a.prevCmp.minWidth||a.defaultMin)},getVertNextConstrainRight:function(a){return a.nextBox.right-(a.nextCmp.minWidth||a.defaultMin)},getVertNextConstrainLeft:function(a){return(a.nextCmp.maxWidth?a.nextBox.right-a.nextCmp.maxWidth:a.prevBox.x+(a.prevBox.minWidth||a.defaultMin))-a.splitWidth},getResizeOffset:function(){return this.getOffset("dragTarget")}},0,0,0,0,0,0,[Ext.resizer,"SplitterTracker"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitterTracker",Ext.resizer.SplitterTracker,{getPrevCmp:null,getNextCmp:null,calculateConstrainRegion:function(){var y=this,a=y.splitter,o=a.collapseTarget,d=a.defaultSplitMin,h=a.vertical?"Width":"Height",c="min"+h,u="max"+h,j="get"+h,t=a.neighbors,e=t.length,n=o.el.getBox(),g=n.x,p=n.y,x=n.right,k=n.bottom,r=a.vertical?(x-g):(k-p),w,l,m,v,s,q,b;m=(o[c]||Math.min(r,d))-r;v=o[u];if(!v){v=1000000000}else{v-=r}b=r;for(w=0;w<e;++w){l=t[w];r=l[j]();s=r-l[u];q=r-(l[c]||Math.min(r,d));if(!isNaN(s)){if(m<s){m=s}}if(v>q){v=q}}if(v-m<2){return null}n=new Ext.util.Region(p,x,k,g);y.constraintAdjusters[y.getCollapseDirection()](n,m,v,a);y.dragInfo={minRange:m,maxRange:v,targetSize:b};return n},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var k=this,b=k.splitter,a=b.collapseTarget,m=b.neighbors,d=k.getSplitter().collapseEl,j=h.getTarget(),c=m.length,g,l;if(d&&j===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;g<c;++g){l=m[g];if(l.collapsed&&l.isHorz===a.isHorz){return false}}if(!(k.constrainTo=k.calculateConstrainRegion())){return false}return true},performResize:function(k,j){var l=this,b=l.splitter,h=b.getCollapseDirection(),a=b.collapseTarget,g=l.splitAdjusters[b.vertical?"horz":"vert"],m=j[g.index],d=l.dragInfo,c;if(h=="right"||h=="bottom"){m=-m}m=Math.min(Math.max(d.minRange,m),d.maxRange);if(m){(c=b.ownerCt).suspendLayouts();g.adjustTarget(a,d.targetSize,m);c.resumeLayouts(true)}},splitAdjusters:{horz:{index:0,adjustTarget:function(b,a,c){b.flex=null;b.setSize(a+c)}},vert:{index:1,adjustTarget:function(b,a,c){b.flex=null;b.setSize(undefined,a+c)}}},getCollapseDirection:function(){return this.splitter.getCollapseDirection()}},0,0,0,0,0,0,[Ext.resizer,"BorderSplitterTracker"],0));(Ext.cmd.derive("Ext.resizer.Handle",Ext.Component,{handleCls:"",baseHandleCls:Ext.baseCSSPrefix+"resizable-handle",region:"",beforeRender:function(){var a=this;a.callParent();a.protoEl.unselectable();a.addCls(a.baseHandleCls,a.baseHandleCls+"-"+a.region,a.handleCls)}},0,0,["component","box"],{component:true,box:true},0,0,[Ext.resizer,"Handle"],0));(Ext.cmd.derive("Ext.resizer.ResizeTracker",Ext.dd.DragTracker,{dynamic:true,preserveRatio:false,constrainTo:null,proxyCls:Ext.baseCSSPrefix+"resizable-proxy",constructor:function(b){var d=this,c,a,e;if(!b.el){if(b.target.isComponent){d.el=b.target.getEl()}else{d.el=b.target}}this.callParent(arguments);if(d.preserveRatio&&d.minWidth&&d.minHeight){c=d.minWidth/d.el.getWidth();a=d.minHeight/d.el.getHeight();if(a>c){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,j,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(t,n){var u=this,c=u.activeResizeHandle.region,g=u.getOffset(u.constrainTo?"dragTarget":null),l=u.startBox,h,q=0,v=0,k,r,a=0,x=0,w,o=g[0]<0?"right":"left",s=g[1]<0?"down":"up",j,b,d,p,m;c=u.convertRegionName(c);switch(c){case"south":v=g[1];b=2;break;case"north":v=-g[1];x=-v;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":v=-g[1];x=-v;q=g[0];j=[l.x,l.y+l.height];b=3;break;case"southeast":v=g[1];q=g[0];j=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;v=g[1];j=[l.x+l.width,l.y];b=3;break;case"northwest":v=-g[1];x=-v;q=-g[0];a=-q;j=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+v,x:l.x+a,y:l.y+x};k=Ext.Number.snap(d.width,u.widthIncrement);r=Ext.Number.snap(d.height,u.heightIncrement);if(k!=d.width||r!=d.height){switch(c){case"northeast":d.y-=r-d.height;break;case"north":d.y-=r-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=r-d.height}d.width=k;d.height=r}if(d.width<u.minWidth||d.width>u.maxWidth){d.width=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{u.lastX=d.x}if(d.height<u.minHeight||d.height>u.maxHeight){d.height=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight);if(x){d.y=l.y+(l.height-d.height)}}else{u.lastY=d.y}if(u.preserveRatio||t.shiftKey){h=u.startBox.width/u.startBox.height;p=Math.min(Math.max(u.minHeight,d.width/h),u.maxHeight);m=Math.min(Math.max(u.minWidth,d.height*h),u.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{w=Math.abs(j[0]-this.lastXY[0])/Math.abs(j[1]-this.lastXY[1]);if(w>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(v===0){s="none"}if(q===0){o="none"}u.resize(d,{horizontal:o,vertical:s},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}},1,0,0,0,0,0,[Ext.resizer,"ResizeTracker"],0));(Ext.cmd.derive("Ext.resizer.Resizer",Ext.Base,{alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var m=this,j,q,s,r=m.handles,c,p,g,d=0,o,n=[],h,a,e,l,k=Ext.dom.Element.unselectableCls;m.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){j=b;b=arguments[1]||{};b.target=j}m.mixins.observable.constructor.call(m,b);j=m.target;if(j){if(j.isComponent){j.addClsWithUI("resizable");m.el=j.getEl();if(j.minWidth){m.minWidth=j.minWidth}if(j.minHeight){m.minHeight=j.minHeight}if(j.maxWidth){m.maxWidth=j.maxWidth}if(j.maxHeight){m.maxHeight=j.maxHeight}if(j.floating){if(!m.hasOwnProperty("handles")){m.handles="n ne e se s sw w nw"}}}else{m.el=m.target=Ext.get(j)}}else{m.target=m.el=Ext.get(m.el)}s=m.el.dom.tagName.toUpperCase();if(s=="TEXTAREA"||s=="IMG"||s=="TABLE"){m.originalTarget=m.target;q=m.el;e=q.getBox();m.target=m.el=m.el.wrap({cls:m.wrapCls,id:m.el.id+"-rzwrap",style:q.getStyles("margin-top","margin-bottom")});m.el.setPositioning(q.getPositioning());q.clearPositioning();m.el.setBox(e);q.setStyle("position","absolute")}m.el.position();if(m.pinned){m.el.addCls(m.pinnedCls)}m.resizeTracker=new Ext.resizer.ResizeTracker({disabled:m.disabled,target:m.target,constrainTo:m.constrainTo,overCls:m.overCls,throttle:m.throttle,originalTarget:m.originalTarget,delegate:"."+m.handleCls,dynamic:m.dynamic,preserveRatio:m.preserveRatio,heightIncrement:m.heightIncrement,widthIncrement:m.widthIncrement,minHeight:m.minHeight,maxHeight:m.maxHeight,minWidth:m.minWidth,maxWidth:m.maxWidth});m.resizeTracker.on({mousedown:m.onBeforeResize,drag:m.onResize,dragend:m.onResizeEnd,scope:m});if(m.handles=="all"){m.handles="n s e w ne nw se sw"}r=m.handles=m.handles.split(m.delimiterRe);p=m.possiblePositions;g=r.length;c=m.handleCls+" "+m.handleCls+"-{0}";if(m.target.isComponent){l=m.target.baseCls;c+=" "+l+"-handle "+l+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+l+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+m.el.getHeight()+'px"':"";for(;d<g;d++){if(r[d]&&p[r[d]]){o=p[r[d]];if(o==="east"||o==="west"){a=h}else{a=""}n.push('<div id="',m.el.id,"-",o,'-handle"',' class="',Ext.String.format(c,o)," ",k,'"',' unselectable="on"',a,"></div>")}}Ext.DomHelper.append(m.el,n.join(""));for(d=0;d<g;d++){if(r[d]&&p[r[d]]){o=p[r[d]];m[o]=m.el.getById(m.el.id+"-"+o+"-handle");m[o].region=o;if(m.transparent){m[o].setOpacity(0)}}}if(Ext.isNumber(m.width)){m.width=Ext.Number.constrain(m.width,m.minWidth,m.maxWidth)}if(Ext.isNumber(m.height)){m.height=Ext.Number.constrain(m.height,m.minHeight,m.maxHeight)}if(m.width!==null||m.height!==null){if(m.originalTarget){m.originalTarget.setWidth(m.width);m.originalTarget.setHeight(m.height)}m.resizeTo(m.width,m.height)}m.forceHandlesHeight()},disable:function(){this.resizeTracker.disable()},enable:function(){this.resizeTracker.enable()},onBeforeResize:function(b,c){var a=this.el.getBox();return this.fireEvent("beforeresize",this,a.width,a.height,c)},onResize:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resizedrag",b,a.width,a.height,d)},onResizeEnd:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resize",b,a.width,a.height,d)},resizeTo:function(b,a){var c=this;c.target.setSize(b,a);c.fireEvent("resize",c,b,a,null)},getEl:function(){return this.el},getTarget:function(){return this.target},destroy:function(){var e=this,d,c=e.handles,a=c.length,b=e.possiblePositions,g;e.resizeTracker.destroy();for(d=0;d<a;d++){if(g=e[b[c[d]]]){g.remove()}}},forceHandlesHeight:function(){var a=this,b;if(Ext.isIE6){b=a.east;if(b){b.setHeight(a.el.getHeight())}b=a.west;if(b){b.setHeight(a.el.getHeight())}a.el.repaint()}}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.resizer,"Resizer",Ext,"Resizable"],0));(Ext.cmd.derive("Ext.selection.CellModel",Ext.selection.Model,{isCellModel:true,enableKeyNav:true,preventWrap:false,noSelection:{row:-1,column:-1},constructor:function(){this.addEvents("deselect","select");this.callParent(arguments)},bindComponent:function(a){var c=this,b=a.ownerCt;c.primaryView=a;c.views=c.views||[];c.views.push(a);c.bindStore(a.getStore(),true);a.on({cellmousedown:c.onMouseDown,refresh:c.onViewRefresh,scope:c});if(b.optimizedColumnMove!==false){b.on("columnmove",c.onColumnMove,c)}if(c.enableKeyNav){c.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,tab:b.onKeyTab,scope:b})},getHeaderCt:function(){var b=this.getCurrentPosition(),a=b?b.view:this.primaryView;return a.headerCt},onKeyUp:function(a){this.doMove("up",a)},onKeyDown:function(a){this.doMove("down",a)},onKeyLeft:function(a){this.doMove("left",a)},onKeyRight:function(a){this.doMove("right",a)},doMove:function(b,a){this.keyNavigation=true;this.move(b,a);this.keyNavigation=false},onVetoUIEvent:Ext.emptyFn,select:function(h,e,b){var d=this,g,c=d.getCurrentPosition(),a=d.view.store;if(h||h===0){if(h.isModel){g=a.indexOf(h);if(g!==-1){h={row:g,column:c?c.column:0}}else{h=null}}else{if(typeof h==="number"){h={row:h,column:0}}}}if(h){d.selectByPosition(h,b)}else{d.deselect()}},deselect:function(a,b){this.selectByPosition(null,b)},move:function(a,d){var c=this,g=c.getCurrentPosition(),b;if(g){b=g.view.walkCells(g,a,d,c.preventWrap);if(b){b.view=g.view;return c.setCurrentPosition(b)}}},getCurrentPosition:function(){return this.selecting?this.nextSelection:this.selection},setCurrentPosition:function(d,a){var c=this,b=c.selection;c.lastSelection=b;if(b){if(d&&(d.record===b.record&&d.columnHeader===b.columnHeader&&d.view===b.view)){d=null}else{c.onCellDeselect(c.selection,a)}}if(d){c.nextSelection=new Ext.grid.CellContext(c.primaryView).setPosition(d);c.selecting=true;c.onCellSelect(c.nextSelection,a);c.selecting=false;return(c.selection=c.nextSelection)}},isCellSelected:function(a,e,c){var d=this,b,g=d.getCurrentPosition();if(g&&g.view===a){b=new Ext.grid.CellContext(a).setPosition({row:e,column:c});return(b.record===g.record)&&(b.columnHeader===g.columnHeader)}},onStoreRemove:function(k,b,e){var h=this,j=h.getCurrentPosition(),c,a=b.length,g,d=0;h.callParent(arguments);if(j){if(e[0]>j.row){return}for(c=0;c<a;c++){g=e[c];if(g<j.row){d++}else{break}}if(d){j.setRow(j.row-d)}}},onMouseDown:function(c,a,g,b,j,d,h){if(d!==-1){this.setCurrentPosition({view:c,row:j,column:g})}},onCellSelect:function(a,b){if(a&&a.row!==undefined&&a.row>-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,j,c,a;if(e){j=g.nextSelection;c="select"}else{j=g.lastSelection||g.noSelection;c="deselect"}a=j.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,j.row,j.column))!==false&&h()!==false){if(e){a.focusRow(b,true);a.onCellSelect(j)}else{a.onCellDeselect(j);delete g.selection}if(!d){g.fireEvent(c,g,b,j.row,j.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.record,a.columnHeader)){c.wasEditing=false}else{c.wasEditing=true}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a,b){this.setCurrentPosition(a,b)}},1,0,0,0,["selection.cellmodel"],0,[Ext.selection,"CellModel"],0));(Ext.cmd.derive("Ext.selection.RowModel",Ext.selection.Model,{deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},onVetoUIEvent:function(g,c,a,j,d,h,b){if(g=="mousedown"){this.mousedownAction=!this.isSelected(b)}},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,k,a){var j=this,l=j.views,d=l.length,b=l[0].indexOf(g),h=c?"select":"deselect",e=0;if((k||j.fireEvent("before"+h,j,g,b))!==false&&a()!==false){for(;e<d;e++){if(c){l[e].onRowSelect(b,k)}else{l[e].onRowDeselect(b,k)}}if(!k){j.fireEvent(h,j,g,b)}}},onLastFocusChanged:function(h,c,b){var a=this.views,g=a.length,e,d=0;if(h){e=a[0].indexOf(h);if(e!=-1){for(;d<g;d++){a[d].onRowFocus(e,false,true)}}}if(c){e=a[0].indexOf(c);if(e!=-1){for(d=0;d<g;d++){a[d].onRowFocus(e,true,b)}}}this.callParent(arguments)},onEditorTab:function(d,j){var g=this,c=g.views[0],b=d.getActiveRecord(),k=d.getActiveColumn(),a=c.getPosition(b,k),h=j.shiftKey?"left":"right";do{a=c.walkCells(a,h,j,g.preventWrap)}while(a&&(!a.columnHeader.getEditor(b)||!d.startEditByPosition(a)))},getCurrentPosition:function(){var a=this.selected.items[0];if(a){return new Ext.grid.CellContext(this.view).setPosition(this.store.indexOf(a),0)}},selectByPosition:function(a){this.select(this.store.getAt(a.row))},selectNext:function(h,c){var g=this,b=g.store,e=g.getSelection(),a=e[e.length-1],d=g.views[0].indexOf(a)+1,j;if(d===b.getCount()||d===0){j=false}else{g.doSelect(d,h,c);j=true}return j},selectPrevious:function(g,b){var e=this,d=e.getSelection(),a=d[0],c=e.views[0].indexOf(a)-1,h;if(c<0){h=false}else{e.doSelect(c,g,b);h=true}return h},isRowSelected:function(a,b){return this.isSelected(a)}},1,0,0,0,["selection.rowmodel"],0,[Ext.selection,"RowModel"],0));(Ext.cmd.derive("Ext.selection.TreeModel",Ext.selection.RowModel,{constructor:function(a){this.callParent(arguments);if(this.pruneRemoved){this.pruneRemoved=false;this.pruneRemovedNodes=true}},bindStore:function(a,b){var c=this;c.callParent(arguments);if(c.pruneRemovedNodes){c.view.mon(c.treeStore,{remove:c.onNodeRemove,scope:c})}},onNodeRemove:function(b,c,a){if(!a){this.deselectDeletedRecords([c])}},onKeyRight:function(b,a){this.navExpand(b,a)},navExpand:function(d,b){var c=this.getLastFocused(),a=this.view;if(c){if(c.isExpanded()){this.onKeyDown(d,b)}else{if(c.isExpandable()){if(!a.isTreeView){a=a.lockingPartner}a.expand(c)}}}},onKeyLeft:function(b,a){this.navCollapse(b,a)},navCollapse:function(h,c){var d=this,g=this.getLastFocused(),b=this.view,a;if(g){a=g.parentNode;if(g.isExpanded()){if(!b.isTreeView){b=b.lockingPartner}b.collapse(g)}else{if(a&&!a.isRoot()){if(h.shiftKey){d.selectRange(a,g,h.ctrlKey,"up");d.setLastFocused(a)}else{if(h.ctrlKey){d.setLastFocused(a)}else{d.select(a)}}}}}},onKeySpace:function(b,a){if(b.record.data.checked!=null){this.toggleCheck(b)}else{this.callParent(arguments)}},onKeyEnter:function(b,a){if(b.record.data.checked!=null){this.toggleCheck(b)}else{this.callParent(arguments)}},toggleCheck:function(c){var a=this.view,b=this.getLastSelected();c.stopEvent();if(b){if(!a.isTreeView){a=a.lockingPartner}a.onCheckChange(b)}}},1,0,0,0,["selection.treemodel"],0,[Ext.selection,"TreeModel"],0));(Ext.cmd.derive("Ext.slider.Thumb",Ext.Base,{topZIndex:10000,constructor:function(a){var b=this;Ext.apply(b,a||{},{cls:Ext.baseCSSPrefix+"slider-thumb",constrain:false});b.callParent([a])},render:function(){var a=this;a.el=a.slider.innerEl.insertFirst(a.getElConfig());a.onRender()},onRender:function(){if(this.disabled){this.disable()}this.initEvents()},getElConfig:function(){var c=this,b=c.slider,a={};a[b.vertical?"bottom":b.horizontalProp]=b.calculateThumbPosition(b.normalizeValue(c.value))+"%";return{style:a,id:this.id,cls:this.cls}},move:function(c,b){var g=this,d=g.el,e=g.slider,a=e.vertical?"bottom":e.horizontalProp,j,h;c+="%";if(!b){d.dom.style[a]=c}else{j={};j[a]=c;if(!Ext.supports.GetPositionPercentage){h={};h[a]=d.dom.style[a]}new Ext.fx.Anim({target:d,duration:350,from:h,to:j})}},bringToFront:function(){this.el.setStyle("zIndex",this.topZIndex)},sendToBack:function(){this.el.setStyle("zIndex","")},enable:function(){var a=this;a.disabled=false;if(a.el){a.el.removeCls(a.slider.disabledCls)}},disable:function(){var a=this;a.disabled=true;if(a.el){a.el.addCls(a.slider.disabledCls)}},initEvents:function(){var b=this,a=b.el;b.tracker=new Ext.dd.DragTracker({onBeforeStart:Ext.Function.bind(b.onBeforeDragStart,b),onStart:Ext.Function.bind(b.onDragStart,b),onDrag:Ext.Function.bind(b.onDrag,b),onEnd:Ext.Function.bind(b.onDragEnd,b),tolerance:3,autoStart:300,overCls:Ext.baseCSSPrefix+"slider-thumb-over"});b.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(c){var b=this,a=b.slider;a.onDragStart(b,c);b.el.addCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=b.slider.dragging=true;b.dragStartValue=b.value;a.fireEvent("dragstart",a,c,b)},onDrag:function(h){var d=this,c=d.slider,b=d.index,g=d.getValueFromTracker(),a,j;if(g!==undefined){if(d.constrain){a=c.thumbs[b+1];j=c.thumbs[b-1];if(j!==undefined&&g<=j.value){g=j.value}if(a!==undefined&&g>=a.value){g=a.value}}c.setValue(b,g,false);c.fireEvent("drag",c,h,d)}},getValueFromTracker:function(){var a=this.slider,b=a.getTrackpoint(this.tracker.getXY());if(b!==undefined){return a.reversePixelValue(b)}},onDragEnd:function(d){var b=this,a=b.slider,c=b.value;a.onDragEnd(b,d);b.el.removeCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=a.dragging=false;a.fireEvent("dragend",a,d);if(b.dragStartValue!=c){a.fireEvent("changecomplete",a,c,b)}},destroy:function(){Ext.destroy(this.tracker)}},1,0,0,0,0,0,[Ext.slider,"Thumb"],0));(Ext.cmd.derive("Ext.slider.Tip",Ext.tip.Tip,{minWidth:10,offsets:null,align:null,position:"",defaultVerticalPosition:"left",defaultHorizontalPosition:"top",isSliderTip:true,init:function(c){var b=this,d,a;if(!b.position){b.position=c.vertical?b.defaultVerticalPosition:b.defaultHorizontalPosition}switch(b.position){case"top":a=[0,-10];d="b-t?";break;case"bottom":a=[0,10];d="t-b?";break;case"left":a=[-10,0];d="r-l?";break;case"right":a=[10,0];d="l-r?"}if(!b.align){b.align=d}if(!b.offsets){b.offsets=a}c.on({scope:b,dragstart:b.onSlide,drag:b.onSlide,dragend:b.hide,destroy:b.destroy})},onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(a.el,b.align,b.offsets)},getText:function(a){return String(a.value)}},0,["slidertip"],["panel","component","container","slidertip","box"],{panel:true,component:true,container:true,slidertip:true,box:true},["widget.slidertip"],0,[Ext.slider,"Tip"],0));(Ext.cmd.derive("Ext.slider.Multi",Ext.form.field.Base,{alternateClassName:"Ext.slider.MultiSlider",childEls:["endEl","innerEl"],fieldSubTpl:['<div id="{id}" class="'+Ext.baseCSSPrefix+"slider {fieldCls} {vertical}","{childElCls}",'" aria-valuemin="{minValue}" aria-valuemax="{maxValue}" aria-valuenow="{value}" aria-valuetext="{value}">','<div id="{cmpId}-endEl" class="'+Ext.baseCSSPrefix+'slider-end" role="presentation">','<div id="{cmpId}-innerEl" class="'+Ext.baseCSSPrefix+'slider-inner" role="presentation">',"{%this.renderThumbs(out, values)%}","</div>","</div>","</div>",{renderThumbs:function(g,e){var j=e.$comp,h=0,c=j.thumbs,b=c.length,d,a;for(;h<b;h++){d=c[h];a=d.getElConfig();a.id=j.id+"-thumb-"+h;Ext.DomHelper.generateMarkup(a,g)}},disableFormats:true}],horizontalProp:"left",vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,dragging:false,constrainThumbs:true,componentLayout:"sliderfield",useTips:true,tipText:null,ariaRole:"slider",initValue:function(){var e=this,c=Ext.value,b=c(e.values,[c(e.value,c(e.minValue,0))]),d=0,a=b.length;e.originalValue=b;for(;d<a;d++){e.addThumb(b[d])}},initComponent:function(){var e=this,c,d,g,b,a;e.thumbs=[];e.keyIncrement=Math.max(e.increment,e.keyIncrement);e.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");e.callParent();if(e.useTips){if(Ext.isObject(e.useTips)){c=Ext.apply({},e.useTips)}else{c=e.tipText?{getText:e.tipText}:{}}a=e.plugins=e.plugins||[];b=a.length;for(g=0;g<b;g++){if(a[g].isSliderTip){d=true;break}}if(!d){e.plugins.push(new Ext.slider.Tip(c))}}},addThumb:function(c){var b=this,a=new Ext.slider.Thumb({ownerCt:b,ownerLayout:b.getComponentLayout(),value:c,slider:b,index:b.thumbs.length,constrain:b.constrainThumbs,disabled:!!b.readOnly});b.thumbs.push(a);if(b.rendered){a.render()}return a},promoteThumb:function(c){var a=this.thumbs,e=a.length,g,b,d;for(d=0;d<e;d++){b=a[d];if(b==c){b.bringToFront()}else{b.sendToBack()}}},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{$comp:a,vertical:a.vertical?Ext.baseCSSPrefix+"slider-vert":Ext.baseCSSPrefix+"slider-horz",minValue:a.minValue,maxValue:a.maxValue,value:a.value,childElCls:""})},onRender:function(){var e=this,b=e.thumbs,a=b.length,d=0,c;e.callParent(arguments);for(d=0;d<a;d++){c=b[d];c.el=e.el.getById(e.id+"-thumb-"+d);c.onRender()}},initEvents:function(){var a=this;a.mon(a.el,{scope:a,mousedown:a.onMouseDown,keydown:a.onKeyDown})},onDragStart:Ext.emptyFn,onDragEnd:Ext.emptyFn,getTrackpoint:function(h){var g=this,d=g.vertical,c=g.innerEl,b,a,e;if(d){e="top";b=c.getHeight()}else{e=g.horizontalProp;b=c.getWidth()}h=g.transformTrackPoints(c.translatePoints(h));a=Ext.Number.constrain(h[e],0,b);return d?b-a:a},transformTrackPoints:Ext.identityFn,onMouseDown:function(j){var d=this,h=false,c=0,b=d.thumbs,a=b.length,g;if(d.disabled){return}for(;c<a;c++){h=h||j.target==b[c].el.dom}if(d.clickToChange&&!h){g=d.getTrackpoint(j.getXY());if(g!==undefined){d.onClickChange(g)}}d.focus()},onClickChange:function(d){var c=this,a,b;a=c.getNearest(d);if(!a.disabled){b=a.index;c.setValue(b,Ext.util.Format.round(c.reversePixelValue(d),c.decimalPrecision),undefined,true)}},getNearest:function(j){var k=this,g=k.reversePixelValue(j),l=k.getRange()+5,b=null,e=k.thumbs,c=0,d=e.length,a,m,h;for(;c<d;c++){a=k.thumbs[c];m=a.value;h=Math.abs(m-g);if(Math.abs(h<=l)){b=a;l=h}}return b},onKeyDown:function(c){var b=this,a,d;if(b.disabled||b.thumbs.length!==1){c.preventDefault();return}a=c.getKey();switch(a){case c.UP:case c.RIGHT:c.stopEvent();d=c.ctrlKey?b.maxValue:b.getValue(0)+b.keyIncrement;b.setValue(0,d,undefined,true);break;case c.DOWN:case c.LEFT:c.stopEvent();d=c.ctrlKey?b.minValue:b.getValue(0)-b.keyIncrement;b.setValue(0,d,undefined,true);break;default:c.preventDefault()}},normalizeValue:function(b){var c=this,a=c.zeroBasedSnapping?"snap":"snapInRange";b=Ext.Number[a](b,c.increment,c.minValue,c.maxValue);b=Ext.util.Format.round(b,c.decimalPrecision);b=Ext.Number.constrain(b,c.minValue,c.maxValue);return b},setMinValue:function(g){var e=this,b=e.thumbs,a=b.length,c,d;e.minValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemin",g)}for(d=0;d<a;++d){c=b[d];if(c.value<g){e.setValue(d,g,false)}}e.syncThumbs()},setMaxValue:function(g){var e=this,b=e.thumbs,a=b.length,c,d;e.maxValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemax",g)}for(d=0;d<a;++d){c=b[d];if(c.value>g){e.setValue(d,g,false)}}e.syncThumbs()},setValue:function(e,k,b,d){var j=this,h=j.thumbs,a,g,c,l;if(Ext.isArray(e)){l=e;b=k;for(c=0,g=l.length;c<g;++c){a=h[c];if(a){j.setValue(c,l[c],b)}}return j}a=j.thumbs[e];k=j.normalizeValue(k);if(k!==a.value&&j.fireEvent("beforechange",j,k,a.value,a)!==false){a.value=k;if(j.rendered){j.inputEl.set({"aria-valuenow":k,"aria-valuetext":k});a.move(j.calculateThumbPosition(k),Ext.isDefined(b)?b!==false:j.animate);j.fireEvent("change",j,k,a);j.checkDirty();if(d){j.fireEvent("changecomplete",j,k,a)}}}return j},calculateThumbPosition:function(a){var b=this,c=b.minValue,d=(a-c)/b.getRange()*100;if(isNaN(d)){d=c}return d},getRatio:function(){var b=this,d=b.innerEl,a=b.vertical?d.getHeight():d.getWidth(),c=b.getRange();return c===0?a:(a/c)},getRange:function(){return this.maxValue-this.minValue},reversePixelValue:function(a){return this.minValue+(a/this.getRatio())},reversePercentageValue:function(a){return this.minValue+this.getRange()*(a/100)},onDisable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e,h;g.callParent();for(;d<a;d++){c=b[d];e=c.el;c.disable();if(Ext.isIE){h=e.getXY();e.hide();g.innerEl.addCls(g.disabledCls).dom.disabled=true;if(!g.thumbHolder){g.thumbHolder=g.endEl.createChild({cls:Ext.baseCSSPrefix+"slider-thumb "+g.disabledCls})}g.thumbHolder.show().setXY(h)}}},onEnable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e;this.callParent();for(;d<a;d++){c=b[d];e=c.el;c.enable();if(Ext.isIE){g.innerEl.removeCls(g.disabledCls).dom.disabled=false;if(g.thumbHolder){g.thumbHolder.hide()}e.show();g.syncThumbs()}}},syncThumbs:function(){if(this.rendered){var a=this.thumbs,c=a.length,b=0;for(;b<c;b++){a[b].move(this.calculateThumbPosition(a[b].value))}}},getValue:function(a){return Ext.isNumber(a)?this.thumbs[a].value:this.getValues()},getValues:function(){var c=[],d=0,b=this.thumbs,a=b.length;for(;d<a;d++){c.push(b[d].value)}return c},getSubmitValue:function(){var a=this;return(a.disabled||!a.submitValue)?null:a.getValue()},reset:function(){var e=this,b=[].concat(e.originalValue),c=0,d=b.length,g;for(;c<d;c++){g=b[c];e.setValue(c,g)}e.clearInvalid();delete e.wasValid},setReadOnly:function(e){var d=this,b=d.thumbs,a=b.length,c=0;d.callParent(arguments);e=d.readOnly;for(;c<a;++c){if(e){b[c].disable()}else{b[c].enable()}}},beforeDestroy:function(){var e=this,b=e.thumbs,d=0,a=b.length,c;Ext.destroy(e.innerEl,e.endEl,e.focusEl);for(;d<a;d++){c=b[d];Ext.destroy(c)}e.callParent()}},0,["multislider"],["multislider","field","component","box"],{multislider:true,field:true,component:true,box:true},["widget.multislider"],0,[Ext.slider,"Multi",Ext.slider,"MultiSlider"],0));(Ext.cmd.derive("Ext.tab.Tab",Ext.button.Button,{isTab:true,baseCls:Ext.baseCSSPrefix+"tab",closeElOverCls:Ext.baseCSSPrefix+"tab-close-btn-over",activeCls:"active",closableCls:"closable",closable:true,closeText:"Close Tab",active:false,childEls:["closeEl"],scale:false,position:"top",initComponent:function(){var a=this;a.addEvents("activate","deactivate","beforeclose","close");a.callParent(arguments);if(a.card){a.setCard(a.card)}a.overCls=["over",a.position+"-over"]},getTemplateArgs:function(){var b=this,a=b.callParent();a.closable=b.closable;a.closeText=b.closeText;return a},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui+"-"+this.position},beforeRender:function(){var b=this,a=b.up("tabbar"),c=b.up("tabpanel");b.callParent();b.addClsWithUI(b.position);if(b.active){b.addClsWithUI([b.activeCls,b.position+"-"+b.activeCls])}b.syncClosableUI();if(!b.minWidth){b.minWidth=(a)?a.minTabWidth:b.minWidth;if(!b.minWidth&&c){b.minWidth=c.minTabWidth}if(b.minWidth&&b.iconCls){b.minWidth+=25}}if(!b.maxWidth){b.maxWidth=(a)?a.maxTabWidth:b.maxWidth;if(!b.maxWidth&&c){b.maxWidth=c.maxTabWidth}}},onRender:function(){var a=this;a.setElOrientation();a.callParent(arguments);if(a.closable){a.closeEl.addClsOnOver(a.closeElOverCls)}a.keyNav=new Ext.util.KeyNav(a.el,{enter:a.onEnterKey,del:a.onDeleteKey,scope:a})},setElOrientation:function(){var a=this.position;if(a==="left"||a==="right"){this.el.setVertical(a==="right"?90:270)}},enable:function(a){var b=this;b.callParent(arguments);b.removeClsWithUI(b.position+"-disabled");return b},disable:function(a){var b=this;b.callParent(arguments);b.addClsWithUI(b.position+"-disabled");return b},onDestroy:function(){var a=this;Ext.destroy(a.keyNav);delete a.keyNav;a.callParent(arguments)},setClosable:function(a){var b=this;a=(!arguments.length||!!a);if(b.closable!=a){b.closable=a;if(b.card){b.card.closable=a}b.syncClosableUI();if(b.rendered){b.syncClosableElements();b.updateLayout()}}},syncClosableElements:function(){var a=this,b=a.closeEl;if(a.closable){if(!b){b=a.closeEl=a.btnWrap.insertSibling({tag:"a",cls:a.baseCls+"-close-btn",href:"#",title:a.closeText},"after")}b.addClsOnOver(a.closeElOverCls)}else{if(b){b.remove();delete a.closeEl}}},syncClosableUI:function(){var b=this,a=[b.closableCls,b.closableCls+"-"+b.position];if(b.closable){b.addClsWithUI(a)}else{b.removeClsWithUI(a)}},setCard:function(a){var b=this;b.card=a;b.setText(b.title||a.title);b.setIconCls(b.iconCls||a.iconCls);b.setIcon(b.icon||a.icon);b.setGlyph(b.glyph||a.glyph)},onCloseClick:function(){var a=this;if(a.fireEvent("beforeclose",a)!==false){if(a.tabBar){if(a.tabBar.closeTab(a)===false){return}}else{a.fireClose()}}},fireClose:function(){this.fireEvent("close",this)},onEnterKey:function(b){var a=this;if(a.tabBar){a.tabBar.onClick(b,a.el)}},onDeleteKey:function(a){if(this.closable){this.onCloseClick()}},activate:function(b){var a=this;a.active=true;a.addClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("activate",a)}},deactivate:function(b){var a=this;a.active=false;a.removeClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("deactivate",a)}}},0,["tab"],["button","component","tab","box"],{button:true,component:true,tab:true,box:true},["widget.tab"],0,[Ext.tab,"Tab"],0));(Ext.cmd.derive("Ext.util.Point",Ext.util.Region,{statics:{fromEvent:function(a){a=a.browserEvent||a;a=(a.changedTouches&&a.changedTouches.length>0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},3,0,0,0,0,0,[Ext.util,"Point"],function(){this.prototype.translate=Ext.util.Region.prototype.translateBy}));(Ext.cmd.derive("Ext.tab.Bar",Ext.panel.Header,{baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['<div id="{id}-body" class="{baseCls}-body {bodyCls} {bodyTargetCls}{childElCls}<tpl if="ui"> {baseCls}-body-{ui}<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl></tpl>"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>",'<div id="{id}-strip" class="{baseCls}-strip {baseCls}-strip-{dock}{childElCls}','<tpl if="ui"> {baseCls}-strip-{ui}','<tpl for="uiCls"> {parent.baseCls}-strip-{parent.ui}-{.}</tpl>','</tpl>">',"</div>"],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",c.lastBox.width+"px")}}}else{if(this.dock==="left"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",-c.lastBox.height+"px")}}}}}},getLayout:function(){var a=this;a.layout.type=(a.orientation==="horizontal")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,j,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{j=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=j&&Ext.getCmp(j.id);b=c&&c.closeEl&&(g===c.closeEl.dom)}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var A=this,w=A.items.items,e=w.length,o=A.layout.innerCt,u=o.getXY(),t=new Ext.util.Point(g[0],g[1]),v=0,x,b,a,p,y,j,h,d,r,l,k,n,m,s,q,z,c;for(;v<e;v++){x=w[v].lastBox;l=u[0]+x.x;k=u[1]-o.dom.scrollTop+x.y;n=x.width;m=x.height;b=new Ext.util.Region(k,l+n,k+m,l);if(b.contains(t)){c=w[v];a=c.closeEl;if(a){y=a.getXY();d=a.getWidth();r=a.getHeight();if(A._isTabReversed===undefined){A._isTabReversed=q=(c.btnWrap.dom.currentStyle.filter.indexOf("rotation=2")!==-1)}z=q?this._reverseDockNames[A.dock]:A.dock;if(z==="right"){j=l+n-((y[1]-k)+a.getHeight());h=k+(y[0]-l)}else{j=l+(y[1]-k);h=k+l+m-y[0]-a.getWidth()}s=new Ext.util.Region(h,j+d,h+r,j);p=s.contains(t)}break}}return{tab:c,close:p}},closeTab:function(c){var d=this,b=c.card,e=d.tabPanel,a;if(b&&b.fireEvent("beforeclose",b)===false){return false}a=d.findNextActivatable(c);Ext.suspendLayouts();if(e&&b){delete c.ownerCt;b.fireEvent("close",b);e.remove(b);if(!e.getComponent(b)){c.fireClose();d.remove(c)}else{c.ownerCt=d;Ext.resumeLayouts(true);return false}}if(a){if(e){e.setActiveTab(a.card)}else{d.setActiveTab(a)}a.focus()}Ext.resumeLayouts(true)},findNextActivatable:function(a){var b=this;if(a.active&&b.items.getCount()>1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}},0,["tabbar"],["component","tabbar","container","box","header"],{component:true,tabbar:true,container:true,box:true,header:true},["widget.tabbar"],0,[Ext.tab,"Bar"],0));(Ext.cmd.derive("Ext.tree.Column",Ext.grid.column.Column,{tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,iconCls:Ext.baseCSSPrefix+"tree-icon",checkboxCls:Ext.baseCSSPrefix+"tree-checkbox",elbowCls:Ext.baseCSSPrefix+"tree-elbow",expanderCls:Ext.baseCSSPrefix+"tree-expander",textCls:Ext.baseCSSPrefix+"tree-node-text",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-treecolumn",isTreeColumn:true,cellTpl:['<tpl for="lines">','<img src="{parent.blankUrl}" class="{parent.childCls} {parent.elbowCls}-img ','{parent.elbowCls}-<tpl if=".">line<tpl else>empty</tpl>"/>',"</tpl>",'<img src="{blankUrl}" class="{childCls} {elbowCls}-img {elbowCls}','<tpl if="isLast">-end</tpl><tpl if="expandable">-plus {expanderCls}</tpl>"/>','<tpl if="checked !== null">','<input type="button" role="checkbox" <tpl if="checked">aria-checked="true" </tpl>','class="{childCls} {checkboxCls}<tpl if="checked"> {checkboxCls}-checked</tpl>"/>',"</tpl>",'<img src="{blankUrl}" class="{childCls} {baseIconCls} ','{baseIconCls}-<tpl if="leaf">leaf<tpl else>parent</tpl> {iconCls}"','<tpl if="icon">style="background-image:url({icon})"</tpl>/>','<tpl if="href">','<a href="{href}" target="{hrefTarget}" class="{textCls} {childCls}">{value}</a>',"<tpl else>",'<span class="{textCls} {childCls}">{value}</span>',"</tpl>"],initComponent:function(){var a=this;a.origRenderer=a.renderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(m,a,e,b,d,n,k){var j=this,p=e.get("cls"),h=j.origRenderer,c=e.data,l=e.parentNode,o=k.rootVisible,q=[],g;if(p){a.tdCls+=" "+p}while(l&&(o||l.data.depth>0)){g=l.data;q[o?g.depth:g.depth-1]=g.isLast?0:1;l=l.parentNode}return j.getTpl("cellTpl").apply({record:e,baseIconCls:j.iconCls,iconCls:c.iconCls,icon:c.icon,checkboxCls:j.checkboxCls,checked:c.checked,elbowCls:j.elbowCls,expanderCls:j.expanderCls,textCls:j.textCls,leaf:c.leaf,expandable:e.isExpandable(),isLast:c.isLast,blankUrl:Ext.BLANK_IMAGE_URL,href:c.href,hrefTarget:c.hrefTarget,lines:q,metaData:a,childCls:j.getChildCls?j.getChildCls()+" ":"",value:h?h.apply(j.origScope,arguments):m})}},0,["treecolumn"],["component","gridcolumn","container","treecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,treecolumn:true,box:true,headercontainer:true},["widget.treecolumn"],0,[Ext.tree,"Column"],0));(Ext.cmd.derive("Ext.selection.CheckboxModel",Ext.selection.RowModel,{mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(b){var c=this,a;c.callParent(arguments);if(!c.hasLockedHeader()||b.headerCt.lockedCt){if(c.showHeaderCheckbox!==false){b.headerCt.on("headerclick",c.onHeaderClick,c)}c.addCheckbox(b,true);a=b.ownerCt;if(b.headerCt.lockedCt){a=a.ownerCt}c.mon(a,"reconfigure",c.onReconfigure,c)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b<c;b++){if(a[b].headerCt.lockedCt){return true}}return false},addCheckbox:function(a,b){var c=this,d=c.injectCheckbox,e=a.headerCt;if(d!==false){if(d=="first"){d=0}else{if(d=="last"){d=e.getColumnCount()}}Ext.suspendLayouts();if(a.getStore().buffered){c.showHeaderCheckbox=false}e.add(d,c.getHeaderConfig());Ext.resumeLayouts()}if(b!==true){a.refresh()}},onReconfigure:function(c,a,b){if(b){this.addCheckbox(this.views[0])}},toggleUiHeader:function(e){var b=this.views[0],d=b.headerCt,c=d.child("gridcolumn[isCheckerHd]"),a=this.checkerOnCls;if(c){if(e){c.addCls(a)}else{c.removeCls(a)}}},onHeaderClick:function(c,g,b){if(g.isCheckerHd){b.stopEvent();var a=this,d=g.el.hasCls(Ext.baseCSSPrefix+"grid-hd-checker-on");a.preventFocus=true;if(d){a.deselectAll()}else{a.selectAll()}delete a.preventFocus}},getHeaderConfig:function(){var a=this,b=a.showHeaderCheckbox!==false;return{isCheckerHd:b,text:"&#160;",clickTargetName:"el",width:a.headerWidth,sortable:false,draggable:false,resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:b?Ext.baseCSSPrefix+"column-header-checkbox ":"",renderer:Ext.Function.bind(a.renderer,a),editRenderer:a.editRenderer||a.renderEmpty,locked:a.hasLockedHeader()}},renderEmpty:function(){return"&#160;"},refresh:function(){this.callParent(arguments);this.updateHeaderState()},renderer:function(h,c,b,j,e,d,a){var g=Ext.baseCSSPrefix;c.tdCls=g+"grid-cell-special "+g+"grid-cell-row-checker";return'<div class="'+g+'grid-row-checker">&#160;</div>'},processSelection:function(b,a,h,d,j){var g=this,c=j.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,j);g.setSelectionMode(k)}else{g.selectWithEvent(a,j)}},onSelectChange:function(){this.callParent(arguments);if(!this.suspendChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.suspendChange){this.updateHeaderState()}this.callParent(arguments)},resumeChanges:function(){this.callParent();if(!this.suspendChange){this.updateHeaderState()}},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),j=g.views,k=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;k=true;for(c=0,d=b.getCount();c<d;++c){if(!g.storeHasSelected(b.getAt(c))){break}++a}k=e===a}if(j&&j.length){g.toggleUiHeader(k)}}},1,0,0,0,["selection.checkboxmodel"],0,[Ext.selection,"CheckboxModel"],0));(Ext.cmd.derive("Ext.slider.Single",Ext.slider.Multi,{alternateClassName:["Ext.Slider","Ext.form.SliderField","Ext.slider.SingleSlider","Ext.slider.Slider"],getValue:function(){return this.callParent([0])},setValue:function(d,b){var c=arguments,a=c.length;if(a==1||(a<=3&&typeof c[1]!="number")){c=Ext.toArray(c);c.unshift(0)}return this.callParent(c)},getNearest:function(){return this.thumbs[0]}},0,["slider","sliderfield"],["slider","multislider","field","component","sliderfield","box"],{slider:true,multislider:true,field:true,component:true,sliderfield:true,box:true},["widget.slider","widget.sliderfield"],0,[Ext.slider,"Single",Ext,"Slider",Ext.form,"SliderField",Ext.slider,"SingleSlider",Ext.slider,"Slider"],0));(Ext.cmd.derive("Ext.state.CookieProvider",Ext.state.Provider,{constructor:function(a){var b=this;b.path="/";b.expires=new Date(Ext.Date.now()+(1000*60*60*24*7));b.domain=null;b.secure=false;b.callParent(arguments);b.state=b.readCookies()},set:function(a,c){var b=this;if(typeof c=="undefined"||c===null){b.clear(a);return}b.setCookie(a,c);b.callParent(arguments)},clear:function(a){this.clearCookie(a);this.callParent(arguments)},readCookies:function(){var e={},k=document.cookie+";",d=/\s?(.*?)=(.*?);/g,j=this.prefix,a=j.length,h,b,g;while((h=d.exec(k))!=null){b=h[1];g=h[2];if(b&&b.substring(0,a)==j){e[b.substr(a)]=this.decodeValue(g)}}return e},setCookie:function(a,c){var b=this;document.cookie=b.prefix+a+"="+b.encodeValue(c)+((b.expires==null)?"":("; expires="+b.expires.toGMTString()))+((b.path==null)?"":("; path="+b.path))+((b.domain==null)?"":("; domain="+b.domain))+((b.secure==true)?"; secure":"")},clearCookie:function(a){var b=this;document.cookie=b.prefix+a+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((b.path==null)?"":("; path="+b.path))+((b.domain==null)?"":("; domain="+b.domain))+((b.secure==true)?"; secure":"")}},1,0,0,0,0,0,[Ext.state,"CookieProvider"],0));(Ext.cmd.derive("Ext.state.LocalStorageProvider",Ext.state.Provider,{constructor:function(){var a=this;a.callParent(arguments);a.store=a.getStorageObject();if(a.store){a.state=a.readLocalStorage()}else{a.state={}}},readLocalStorage:function(){var c=this.store,e=0,a=c.length,h=this.prefix,b=h.length,g={},d;for(;e<a;++e){d=c.key(e);if(d.substring(0,b)==h){g[d.substr(b)]=this.decodeValue(c.getItem(d))}}return g},set:function(a,c){var b=this;b.clear(a);if(typeof c=="undefined"||c===null){return}b.store.setItem(b.prefix+a,b.encodeValue(c));b.callParent(arguments)},clear:function(a){this.store.removeItem(this.prefix+a);this.callParent(arguments)},getStorageObject:function(){if(Ext.supports.LocalStorage){return window.localStorage}return false}},1,0,0,0,["state.localstorage"],0,[Ext.state,"LocalStorageProvider"],0));(Ext.cmd.derive("Ext.tab.Panel",Ext.panel.Panel,{alternateClassName:["Ext.TabPanel"],tabPosition:"top",removePanelHeader:true,plain:false,itemCls:Ext.baseCSSPrefix+"tabpanel-child",minTabWidth:undefined,maxTabWidth:undefined,deferredRender:true,initComponent:function(){var d=this,c=[].concat(d.dockedItems||[]),a=d.activeTab||(d.activeTab=0),b=d.tabPosition;d.layout=new Ext.layout.container.Card(Ext.apply({owner:d,deferredRender:d.deferredRender,itemCls:d.itemCls,activeItem:a},d.layout));d.tabBar=new Ext.tab.Bar(Ext.apply({ui:d.ui,dock:d.tabPosition,orientation:(b=="top"||b=="bottom")?"horizontal":"vertical",plain:d.plain,cardLayout:d.layout,tabPanel:d},d.tabBar));c.push(d.tabBar);d.dockedItems=c;d.addEvents("beforetabchange","tabchange");d.callParent(arguments);a=d.activeTab=d.getComponent(a);if(a){d.tabBar.setActiveTab(a.tab,true)}},setActiveTab:function(a){var c=this,b;a=c.getComponent(a);if(a){b=c.getActiveTab();if(b!==a&&c.fireEvent("beforetabchange",c,a,b)===false){return false}if(!a.isComponent){Ext.suspendLayouts();a=c.add(a);Ext.resumeLayouts()}c.activeTab=a;Ext.suspendLayouts();c.layout.setActiveItem(a);a=c.activeTab=c.layout.getActiveItem();if(a&&a!==b){c.tabBar.setActiveTab(a.tab);Ext.resumeLayouts(true);if(b!==a){c.fireEvent("tabchange",c,a,b)}}else{Ext.resumeLayouts(true)}return a}},getActiveTab:function(){var b=this,a=b.getComponent(b.activeTab);if(a&&b.items.indexOf(a)!=-1){b.activeTab=a}else{b.activeTab=null}return b.activeTab},getTabBar:function(){return this.tabBar},onAdd:function(e,c){var d=this,b=e.tabConfig||{},a={xtype:"tab",ui:d.tabBar.ui,card:e,disabled:e.disabled,closable:e.closable,hidden:e.hidden&&!e.hiddenByLayout,tooltip:e.tooltip,tabBar:d.tabBar,position:d.tabPosition,closeText:e.closeText};b=Ext.applyIf(b,a);e.tab=d.tabBar.insert(c,b);e.on({scope:d,enable:d.onItemEnable,disable:d.onItemDisable,beforeshow:d.onItemBeforeShow,iconchange:d.onItemIconChange,iconclschange:d.onItemIconClsChange,titlechange:d.onItemTitleChange});if(e.isPanel){if(d.removePanelHeader){if(e.rendered){if(e.header){e.header.hide()}}else{e.header=false}}if(e.isPanel&&d.border){e.setBorder(false)}}},onItemEnable:function(a){a.tab.enable()},onItemDisable:function(a){a.tab.disable()},onItemBeforeShow:function(a){if(a!==this.activeTab){this.setActiveTab(a);return false}},onItemIconChange:function(b,a){b.tab.setIcon(a)},onItemIconClsChange:function(b,a){b.tab.setIconCls(a)},onItemTitleChange:function(a,b){a.tab.setText(b)},doRemove:function(d,b){var c=this,a;if(c.destroying||c.items.getCount()==1){c.activeTab=null}else{if((a=c.tabBar.items.indexOf(c.tabBar.findNextActivatable(d.tab)))!==-1){c.setActiveTab(a)}}this.callParent(arguments);delete d.tab.card;delete d.tab},onRemove:function(b,c){var a=this;b.un({scope:a,enable:a.onItemEnable,disable:a.onItemDisable,beforeshow:a.onItemBeforeShow});if(!a.destroying&&b.tab.ownerCt===a.tabBar){a.tabBar.remove(b.tab)}}},0,["tabpanel"],["tabpanel","panel","component","container","box"],{tabpanel:true,panel:true,component:true,container:true,box:true},["widget.tabpanel"],0,[Ext.tab,"Panel",Ext,"TabPanel"],0));(Ext.cmd.derive("Ext.toolbar.Spacer",Ext.Component,{alternateClassName:"Ext.Toolbar.Spacer",baseCls:Ext.baseCSSPrefix+"toolbar-spacer",focusable:false},0,["tbspacer"],["component","box","tbspacer"],{component:true,box:true,tbspacer:true},["widget.tbspacer"],0,[Ext.toolbar,"Spacer",Ext.Toolbar,"Spacer"],0));(Ext.cmd.derive("Ext.tree.Panel",Ext.panel.Table,{alternateClassName:["Ext.tree.TreePanel","Ext.TreePanel"],viewType:"treeview",selType:"treemodel",treeCls:Ext.baseCSSPrefix+"tree-panel",deferRowRender:false,rowLines:false,lines:true,useArrows:false,singleExpand:false,ddConfig:{enableDrag:true,enableDrop:true},rootVisible:true,displayField:"text",root:null,normalCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible","scroll"],lockedCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible"],isTree:true,arrowCls:Ext.baseCSSPrefix+"tree-arrows",linesCls:Ext.baseCSSPrefix+"tree-lines",noLinesCls:Ext.baseCSSPrefix+"tree-no-lines",autoWidthCls:Ext.baseCSSPrefix+"autowidth-table",constructor:function(a){a=a||{};if(a.animate===undefined){a.animate=Ext.isBoolean(this.animate)?this.animate:Ext.enableFx}this.enableAnimations=a.animate;delete a.animate;this.callParent([a])},initComponent:function(){var d=this,b=[d.treeCls],c=d.store,a;if(d.useArrows){b.push(d.arrowCls);d.lines=false}if(d.lines){b.push(d.linesCls)}else{if(!d.useArrows){b.push(d.noLinesCls)}}if(Ext.isString(c)){c=d.store=Ext.StoreMgr.lookup(c)}else{if(!c||Ext.isObject(c)&&!c.isStore){c=d.store=new Ext.data.TreeStore(Ext.apply({root:d.root,fields:d.fields,model:d.model,folderSort:d.folderSort},c))}else{if(d.root){c=d.store=Ext.data.StoreManager.lookup(c);c.setRootNode(d.root);if(d.folderSort!==undefined){c.folderSort=d.folderSort;c.sort()}}}}d.viewConfig=Ext.apply({rootVisible:d.rootVisible,animate:d.enableAnimations,singleExpand:d.singleExpand,node:c.getRootNode(),hideHeaders:d.hideHeaders},d.viewConfig);if(!d.columns){if(d.initialConfig.hideHeaders===undefined){d.hideHeaders=true}d.addCls(d.autoWidthCls);d.columns=[{xtype:"treecolumn",text:"Name",width:Ext.isIE6?"100%":10000,dataIndex:d.displayField}]}if(d.cls){b.push(d.cls)}d.cls=b.join(" ");d.callParent();d.selModel.treeStore=d.store;a=d.getView();d.relayEvents(a,["checkchange","afteritemexpand","afteritemcollapse"]);if(!a.isLockingView){if(!a.rootVisible&&!d.getRootNode()){d.setRootNode({expanded:true})}}},bindStore:function(a,b){var c=this;c.store=a;c.storeListeners=c.mon(a,{destroyable:true,load:c.onStoreLoad,rootchange:c.onRootChange,clear:c.onClear,scope:c});c.storeRelayers=c.relayEvents(a,["beforeload","load"]);c.storeRelayers1=c.mon(a,{destroyable:true,append:c.createRelayer("itemappend"),remove:c.createRelayer("itemremove"),move:c.createRelayer("itemmove",[0,4]),insert:c.createRelayer("iteminsert"),beforeappend:c.createRelayer("beforeitemappend"),beforeremove:c.createRelayer("beforeitemremove"),beforemove:c.createRelayer("beforeitemmove"),beforeinsert:c.createRelayer("beforeiteminsert"),expand:c.createRelayer("itemexpand",[0,1]),collapse:c.createRelayer("itemcollapse",[0,1]),beforeexpand:c.createRelayer("beforeitemexpand",[0,1]),beforecollapse:c.createRelayer("beforeitemcollapse",[0,1])});a.ownerTree=c;if(!b){c.view.setRootNode(c.getRootNode())}},unbindStore:function(){var b=this,a=b.store;if(a){Ext.destroy(b.storeListeners,b.storeRelayers,b.storeRelayers1);delete a.ownerTree}},onClear:function(){this.view.onClear()},setRootNode:function(){return this.store.setRootNode.apply(this.store,arguments)},getRootNode:function(){return this.store.getRootNode()},onRootChange:function(a){this.view.setRootNode(a)},getChecked:function(){return this.getView().getChecked()},isItemChecked:function(a){return a.get("checked")},expandNode:function(b,a,d,c){return this.getView().expand(b,a,d,c||this)},collapseNode:function(b,a,d,c){return this.getView().collapse(b,a,d,c||this)},expandAll:function(e,c){var d=this,a=d.getRootNode(),b=d.enableAnimations;if(a){if(!b){Ext.suspendLayouts()}a.expand(true,e,c||d);if(!b){Ext.resumeLayouts(true)}}},collapseAll:function(g,d){var e=this,b=e.getRootNode(),c=e.enableAnimations,a=e.getView();if(b){if(!c){Ext.suspendLayouts()}d=d||e;if(a.rootVisible){b.collapse(true,g,d)}else{b.collapseChildren(true,g,d)}if(!c){Ext.resumeLayouts(true)}}},expandPath:function(m,g,a,h,l){var d=this,c=d.getRootNode(),b=1,e=d.getView(),k,j;g=g||d.getRootNode().idProperty;a=a||"/";if(Ext.isEmpty(m)){Ext.callback(h,l||d,[false,null]);return}k=m.split(a);if(c.get(g)!=k[1]){Ext.callback(h,l||d,[false,c]);return}j=function(){if(++b===k.length){Ext.callback(h,l||d,[true,c]);return}var n=c.findChild(g,k[b]);if(!n){Ext.callback(h,l||d,[false,c]);return}c=n;c.expand(false,j)};c.expand(false,j)},selectPath:function(k,d,a,g,j){var b=this,c,h,e;d=d||b.getRootNode().idProperty;a=a||"/";h=k.split(a);e=h.pop();if(h.length>1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,j||b,[true,m]);return}}Ext.callback(g,j||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,j||b,[true,c])}else{Ext.callback(g,j||b,[false,null])}}}},1,["treepanel"],["panel","component","tablepanel","container","box","treepanel"],{panel:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.treepanel"],0,[Ext.tree,"Panel",Ext.tree,"TreePanel",Ext,"TreePanel"],0));(Ext.cmd.derive("Ext.view.DragZone",Ext.dd.DragZone,{containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){if(b.focusRow){b.focusRow(a)}this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}},1,0,0,0,0,0,[Ext.view,"DragZone"],0));(Ext.cmd.derive("Ext.tree.ViewDragZone",Ext.view.DragZone,{isPreventDrag:function(b,a){return(a.get("allowDrag")===false)||!!b.getTarget(this.view.expanderSelector)},getDragText:function(){var a=this.dragData.records,b=a.length,d=a[0].get(this.displayField),c="s";if(b===1&&d){return d}else{if(!d){c=""}}return Ext.String.format(this.dragText,b,c)},afterRepair:function(){var h=this,a=h.view,j=a.selectedItemCls,b=h.dragData.records,g,e=b.length,c=Ext.fly,d;if(Ext.enableFx&&h.repairHighlight){for(g=0;g<e;g++){d=a.getNode(b[g]);c(d.firstChild).highlight(h.repairHighlightColor,{listeners:{beforeanimate:function(){if(a.isSelected(d)){c(d).removeCls(j)}},afteranimate:function(){if(a.isSelected(d)){c(d).addCls(j)}}}})}}h.dragging=false}},0,0,0,0,0,0,[Ext.tree,"ViewDragZone"],0));(Ext.cmd.derive("Ext.tree.ViewDropZone",Ext.view.DropZone,{allowParentInserts:false,allowContainerDrops:false,appendOnly:false,expandDelay:500,indicatorCls:Ext.baseCSSPrefix+"tree-ddindicator",expandNode:function(b){var a=this.view;this.expandProcId=false;if(!b.isLeaf()&&!b.isExpanded()){a.expand(b);this.expandProcId=false}},queueExpand:function(a){this.expandProcId=Ext.Function.defer(this.expandNode,this.expandDelay,this,[a])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},getPosition:function(g,b){var k=this.view,c=k.getRecord(b),h=g.getPageY(),l=c.isLeaf(),a=false,j=Ext.fly(b).getRegion(),d;if(c.isRoot()){return"append"}if(this.appendOnly){return l?false:"append"}if(!this.allowParentInserts){a=c.hasChildNodes()&&c.isExpanded()}d=(j.bottom-j.top)/(l?2:3);if(h>=j.top&&h<(j.top+d)){return"before"}else{if(!a&&(l||(h>=(j.bottom-d)&&h<=j.bottom))){return"after"}else{return"append"}}},isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c<m;c++){h=d[c];if(h.isNode&&h.contains(l)){return false}}if(j==="append"&&l.get("allowDrop")===false){return false}else{if(j!="append"&&l.parentNode.get("allowDrop")===false){return false}}if(Ext.Array.contains(d,l)){return false}return o.fireEvent("nodedragover",l,j,g,k)!==false},onNodeOver:function(a,j,g,c){var d=this.getPosition(g,a),b=this.dropNotAllowed,k=this.view,h=k.getRecord(a),l=this.getIndicator(),m=0;this.cancelExpand();if(d=="append"&&!this.expandProcId&&!Ext.Array.contains(c.records,h)&&!h.isLeaf()&&!h.isExpanded()){this.queueExpand(h)}if(this.isValidDropPoint(a,d,j,g,c)){this.valid=true;this.currentPosition=d;this.overRecord=h;l.setWidth(Ext.fly(a).getWidth());m=Ext.fly(a).getY()-Ext.fly(k.el).getY()-1;if(d=="before"){b=h.isFirst()?Ext.baseCSSPrefix+"tree-drop-ok-above":Ext.baseCSSPrefix+"tree-drop-ok-between";l.showAt(0,m);j.proxy.show()}else{if(d=="after"){b=h.isLast()?Ext.baseCSSPrefix+"tree-drop-ok-below":Ext.baseCSSPrefix+"tree-drop-ok-between";m+=Ext.fly(a).getHeight();l.showAt(0,m);j.proxy.show()}else{b=Ext.baseCSSPrefix+"tree-drop-ok-append";l.hide()}}}else{this.valid=false}this.currentCls=b;return b},onNodeOut:function(d,a,c,b){this.valid=false;this.getIndicator().hide()},onContainerOver:function(a,c,b){return c.getTarget("."+this.indicatorCls)?this.currentCls:this.dropNotAllowed},notifyOut:function(){this.callParent(arguments);this.cancelExpand()},handleNodeDrop:function(g,n,j){var p=this,a=p.view,k=n?n.parentNode:a.panel.getRootNode(),b=a.getStore().treeStore.model,c,e,m,h,d,l,o,q;if(g.copy){c=g.records;g.records=[];for(e=0,m=c.length;e<m;e++){h=c[e];if(h.isNode){g.records.push(h.copy(undefined,true))}else{g.records.push(new b(h.data,h.getId()))}}}p.cancelExpand();if(j=="before"){d=k.insertBefore;l=[null,n];n=k}else{if(j=="after"){if(n.nextSibling){d=k.insertBefore;l=[null,n.nextSibling]}else{d=k.appendChild;l=[null]}n=k}else{if(!(n.isExpanded()||n.isLoading())){o=true}d=n.appendChild;l=[null]}}q=function(){var r,s;Ext.suspendLayouts();a.getSelectionModel().clearSelections();for(e=0,m=g.records.length;e<m;e++){h=g.records[e];if(!h.isNode){if(h.isModel){h=new b(h.data,h.getId())}else{h=new b(h)}g.records[e]=h}l[0]=h;d.apply(n,l)}if(p.sortOnDrop){n.sort(n.getOwnerTree().store.generateComparator())}Ext.resumeLayouts(true);if(Ext.enableFx&&p.dropHighlight){r=p.dropHighlightColor;for(e=0;e<m;e++){s=a.getNode(g.records[e]);if(s){Ext.fly(s).highlight(r)}}}};if(o){n.expand(false,q)}else{if(n.isLoading()){n.on({expand:q,delay:1,single:true})}else{q()}}}},0,0,0,0,0,0,[Ext.tree,"ViewDropZone"],0));(Ext.cmd.derive("Ext.tree.plugin.TreeViewDragDrop",Ext.AbstractPlugin,{dragText:"{0} selected node{1}",allowParentInserts:false,allowContainerDrops:false,appendOnly:false,ddGroup:"TreeDD",containerScroll:false,expandDelay:1000,enableDrop:true,enableDrag:true,nodeHighlightColor:"c3daf9",nodeHighlightOnDrop:Ext.enableFx,nodeHighlightOnRepair:Ext.enableFx,displayField:"text",init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.tree.ViewDragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,displayField:b.displayField,repairHighlightColor:b.nodeHighlightColor,repairHighlight:b.nodeHighlightOnRepair,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.tree.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup,allowContainerDrops:b.allowContainerDrops,appendOnly:b.appendOnly,allowParentInserts:b.allowParentInserts,expandDelay:b.expandDelay,dropHighlightColor:b.nodeHighlightColor,dropHighlight:b.nodeHighlightOnDrop,sortOnDrop:b.sortOnDrop,containerScroll:b.containerScroll})}}},0,0,0,0,["plugin.treeviewdragdrop"],0,[Ext.tree.plugin,"TreeViewDragDrop"],function(){var a=this.prototype;a.nodeHighlightOnDrop=a.nodeHighlightOnRepair=Ext.enableFx}));(Ext.cmd.derive("Ext.util.Cookies",Ext.Base,{singleton:true,set:function(c,e){var a=arguments,j=arguments.length,b=(j>2)?a[2]:null,h=(j>3)?a[3]:"/",d=(j>4)?a[4]:null,g=(j>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=",g=b.length,a=document.cookie.length,e=0,c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return this.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a,b){if(this.get(a)){b=b||"/";document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT; path="+b}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}},0,0,0,0,0,0,[Ext.util,"Cookies"],0));(Ext.cmd.derive("Ext.util.Grouper",Ext.util.Sorter,{isGrouper:true,getGroupString:function(a){return a.get(this.property)}},0,0,0,0,0,0,[Ext.util,"Grouper"],0));(Ext.cmd.derive("Ext.util.History",Ext.Base,{singleton:true,alternateClassName:"Ext.History",useTopWindow:true,fieldId:Ext.baseCSSPrefix+"history-field",iframeId:Ext.baseCSSPrefix+"history-frame",constructor:function(){var a=this;a.oldIEMode=Ext.isIE7m||!Ext.isStrict&&Ext.isIE8;a.iframe=null;a.hiddenField=null;a.ready=false;a.currentToken=null;a.mixins.observable.constructor.call(a)},getHash:function(){var a=window.location.href,b=a.indexOf("#");return b>=0?a.substr(b+1):null},setHash:function(d){var a=this,c=a.useTopWindow?window.top:window;try{c.location.hash=d}catch(b){}},doSave:function(){this.hiddenField.value=this.currentToken},handleStateChange:function(a){this.currentToken=a;this.fireEvent("change",a)},updateIFrame:function(b){var a='<html><body><div id="state">'+Ext.util.Format.htmlEncode(b)+"</div></body></html>",d;try{d=this.iframe.contentWindow.document;d.open();d.write(a);d.close();return true}catch(c){return false}},checkIFrame:function(){var d=this,b=d.iframe.contentWindow,e,c,a,g;if(!b||!b.document){Ext.Function.defer(this.checkIFrame,10,this);return}e=b.document;c=e.getElementById("state");a=c?c.innerText:null;g=d.getHash();Ext.TaskManager.start({run:function(){var l=b.document,k=l.getElementById("state"),h=k?k.innerText:null,j=d.getHash();if(h!==a){a=h;d.handleStateChange(h);d.setHash(h);g=h;d.doSave()}else{if(j!==g){g=j;d.updateIFrame(j)}}},interval:50,scope:d});d.ready=true;d.fireEvent("ready",d)},startUp:function(){var a=this,b;a.currentToken=a.hiddenField.value||this.getHash();if(a.oldIEMode){a.checkIFrame()}else{b=a.getHash();Ext.TaskManager.start({run:function(){var c=a.getHash();if(c!==b){b=c;a.handleStateChange(b);a.doSave()}},interval:50,scope:a});a.ready=true;a.fireEvent("ready",a)}},init:function(d,b){var c=this,a=Ext.DomHelper;if(c.ready){Ext.callback(d,b,[c]);return}if(!Ext.isReady){Ext.onReady(function(){c.init(d,b)});return}c.hiddenField=Ext.getDom(c.fieldId);if(!c.hiddenField){c.hiddenField=Ext.getBody().createChild({id:Ext.id(),tag:"form",cls:Ext.baseCSSPrefix+"hide-display",children:[{tag:"input",type:"hidden",id:c.fieldId}]},false,true).firstChild}if(c.oldIEMode){c.iframe=Ext.getDom(c.iframeId);if(!c.iframe){c.iframe=a.append(c.hiddenField.parentNode,{tag:"iframe",id:c.iframeId,src:Ext.SSL_SECURE_URL})}}c.addEvents("ready","change");if(d){c.on("ready",d,b,{single:true})}c.startUp()},add:function(a,c){var b=this;if(c!==false){if(b.getToken()===a){return true}}if(b.oldIEMode){return b.updateIFrame(a)}else{b.setHash(a);return true}},back:function(){window.history.go(-1)},forward:function(){window.history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.util,"History",Ext,"History"],0));
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext.js
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext.js	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/ext.js	(revision 18732)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.2
+
+Copyright (c) 2011-2013 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314)
+*/
+var Ext=Ext||{};if(!Ext.Direct){Ext.Direct={}}if(!Ext.Toolbar){Ext.Toolbar={}}if(!Ext.app){Ext.app={}}if(!Ext.app.domain){Ext.app.domain={}}if(!Ext.button){Ext.button={}}if(!Ext.chart){Ext.chart={}}if(!Ext.chart.axis){Ext.chart.axis={}}if(!Ext.chart.series){Ext.chart.series={}}if(!Ext.chart.theme){Ext.chart.theme={}}if(!Ext.container){Ext.container={}}if(!Ext.core){Ext.core={}}if(!Ext.data){Ext.data={}}if(!Ext.data.association){Ext.data.association={}}if(!Ext.data.flash){Ext.data.flash={}}if(!Ext.data.proxy){Ext.data.proxy={}}if(!Ext.data.reader){Ext.data.reader={}}if(!Ext.data.writer){Ext.data.writer={}}if(!Ext.dd){Ext.dd={}}if(!Ext.direct){Ext.direct={}}if(!Ext.dom){Ext.dom={}}if(!Ext.draw){Ext.draw={}}if(!Ext.draw.engine){Ext.draw.engine={}}if(!Ext.flash){Ext.flash={}}if(!Ext.form){Ext.form={}}if(!Ext.form.Action){Ext.form.Action={}}if(!Ext.form.action){Ext.form.action={}}if(!Ext.form.field){Ext.form.field={}}if(!Ext.fx){Ext.fx={}}if(!Ext.fx.target){Ext.fx.target={}}if(!Ext.grid){Ext.grid={}}if(!Ext.grid.column){Ext.grid.column={}}if(!Ext.grid.feature){Ext.grid.feature={}}if(!Ext.grid.header){Ext.grid.header={}}if(!Ext.grid.locking){Ext.grid.locking={}}if(!Ext.grid.plugin){Ext.grid.plugin={}}if(!Ext.grid.property){Ext.grid.property={}}if(!Ext.layout){Ext.layout={}}if(!Ext.layout.boxOverflow){Ext.layout.boxOverflow={}}if(!Ext.layout.component){Ext.layout.component={}}if(!Ext.layout.component.field){Ext.layout.component.field={}}if(!Ext.layout.container){Ext.layout.container={}}if(!Ext.layout.container.border){Ext.layout.container.border={}}if(!Ext.layout.container.boxOverflow){Ext.layout.container.boxOverflow={}}if(!Ext.list){Ext.list={}}if(!Ext.menu){Ext.menu={}}if(!Ext.panel){Ext.panel={}}if(!Ext.perf){Ext.perf={}}if(!Ext.picker){Ext.picker={}}if(!Ext.resizer){Ext.resizer={}}if(!Ext.rtl){Ext.rtl={}}if(!Ext.rtl.button){Ext.rtl.button={}}if(!Ext.rtl.dd){Ext.rtl.dd={}}if(!Ext.rtl.dom){Ext.rtl.dom={}}if(!Ext.rtl.form){Ext.rtl.form={}}if(!Ext.rtl.form.field){Ext.rtl.form.field={}}if(!Ext.rtl.grid){Ext.rtl.grid={}}if(!Ext.rtl.grid.column){Ext.rtl.grid.column={}}if(!Ext.rtl.grid.plugin){Ext.rtl.grid.plugin={}}if(!Ext.rtl.layout){Ext.rtl.layout={}}if(!Ext.rtl.layout.component){Ext.rtl.layout.component={}}if(!Ext.rtl.layout.component.field){Ext.rtl.layout.component.field={}}if(!Ext.rtl.layout.container){Ext.rtl.layout.container={}}if(!Ext.rtl.layout.container.boxOverflow){Ext.rtl.layout.container.boxOverflow={}}if(!Ext.rtl.panel){Ext.rtl.panel={}}if(!Ext.rtl.resizer){Ext.rtl.resizer={}}if(!Ext.rtl.selection){Ext.rtl.selection={}}if(!Ext.rtl.slider){Ext.rtl.slider={}}if(!Ext.rtl.tab){Ext.rtl.tab={}}if(!Ext.rtl.tip){Ext.rtl.tip={}}if(!Ext.rtl.tree){Ext.rtl.tree={}}if(!Ext.rtl.util){Ext.rtl.util={}}if(!Ext.rtl.view){Ext.rtl.view={}}if(!Ext.selection){Ext.selection={}}if(!Ext.slider){Ext.slider={}}if(!Ext.state){Ext.state={}}if(!Ext.tab){Ext.tab={}}if(!Ext.tip){Ext.tip={}}if(!Ext.toolbar){Ext.toolbar={}}if(!Ext.tree){Ext.tree={}}if(!Ext.tree.plugin){Ext.tree.plugin={}}if(!Ext.util){Ext.util={}}if(!Ext.ux){Ext.ux={}}if(!Ext.ux.form){Ext.ux.form={}}if(!Ext.view){Ext.view={}}if(!Ext.window){Ext.window={}}var Ext=Ext||{};Ext._startTime=new Date().getTime();(function(){var a=this,d=Object.prototype,b=d.toString,l=true,m={toString:1},g=function(){},k=function(){var i=k.caller.caller;return i.$owner.prototype[i.$name].apply(this,arguments)},e,j=/\S/,h,c=/\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/;Function.prototype.$extIsFunction=true;Ext.global=a;for(e in m){l=null}if(l){l=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]}Ext.enumerables=l;Ext.apply=function(q,p,s){if(s){Ext.apply(q,s)}if(q&&p&&typeof p==="object"){var r,o,n;for(r in p){q[r]=p[r]}if(l){for(o=l.length;o--;){n=l[o];if(p.hasOwnProperty(n)){q[n]=p[n]}}}}return q};Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-"},Ext.buildSettings||{});Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:g,identityFn:function(i){return i},emptyString:new String(),baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(n,i){var o;if(n){for(o in i){if(n[o]===undefined){n[o]=i[o]}}}return n},iterate:function(i,o,n){if(Ext.isEmpty(i)){return}if(n===undefined){n=i}if(Ext.isIterable(i)){Ext.Array.each.call(Ext.Array,i,o,n)}else{Ext.Object.each.call(Ext.Object,i,o,n)}}});Ext.apply(Ext,{extend:(function(){var i=d.constructor,n=function(q){for(var p in q){if(!q.hasOwnProperty(p)){continue}this[p]=q[p]}};return function(o,t,r){if(Ext.isObject(t)){r=t;t=o;o=r.constructor!==i?r.constructor:function(){t.apply(this,arguments)}}var q=function(){},p,s=t.prototype;q.prototype=s;p=o.prototype=new q();p.constructor=o;o.superclass=s;if(s.constructor===i){s.constructor=t}o.override=function(u){Ext.override(o,u)};p.override=n;p.proto=p;o.override(r);o.extend=function(u){return Ext.extend(o,u)};return o}}()),override:function(p,q){if(p.$isClass){p.override(q)}else{if(typeof p=="function"){Ext.apply(p.prototype,q)}else{var i=p.self,n,o;if(i&&i.$isClass){for(n in q){if(q.hasOwnProperty(n)){o=q[n];if(typeof o=="function"){o.$name=n;o.$owner=i;o.$previous=p.hasOwnProperty(n)?p[n]:k}p[n]=o}}}else{Ext.apply(p,q)}}}return p}});Ext.apply(Ext,{valueFrom:function(o,i,n){return Ext.isEmpty(o,n)?i:o},typeOf:function(n){var i,o;if(n===null){return"null"}i=typeof n;if(i==="undefined"||i==="string"||i==="number"||i==="boolean"){return i}o=b.call(n);switch(o){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}if(i==="function"){return"function"}if(i==="object"){if(n.nodeType!==undefined){if(n.nodeType===3){return(j).test(n.nodeValue)?"textnode":"whitespace"}else{return"element"}}return"object"}},coerce:function(q,p){var o=Ext.typeOf(q),n=Ext.typeOf(p),i=typeof q==="string";if(o!==n){switch(n){case"string":return String(q);case"number":return Number(q);case"boolean":return i&&(!q||q==="false")?false:Boolean(q);case"null":return i&&(!q||q==="null")?null:q;case"undefined":return i&&(!q||q==="undefined")?undefined:q;case"date":return i&&isNaN(q)?Ext.Date.parse(q,Ext.Date.defaultFormat):Date(Number(q))}}return q},isEmpty:function(i,n){return(i===null)||(i===undefined)||(!n?i==="":false)||(Ext.isArray(i)&&i.length===0)},isArray:("isArray" in Array)?Array.isArray:function(i){return b.call(i)==="[object Array]"},isDate:function(i){return b.call(i)==="[object Date]"},isObject:(b.call(null)==="[object Object]")?function(i){return i!==null&&i!==undefined&&b.call(i)==="[object Object]"&&i.ownerDocument===undefined}:function(i){return b.call(i)==="[object Object]"},isSimpleObject:function(i){return i instanceof Object&&i.constructor===Object},isPrimitive:function(n){var i=typeof n;return i==="string"||i==="number"||i==="boolean"},isFunction:function(i){return !!(i&&i.$extIsFunction)},isNumber:function(i){return typeof i==="number"&&isFinite(i)},isNumeric:function(i){return !isNaN(parseFloat(i))&&isFinite(i)},isString:function(i){return typeof i==="string"},isBoolean:function(i){return typeof i==="boolean"},isElement:function(i){return i?i.nodeType===1:false},isTextNode:function(i){return i?i.nodeName==="#text":false},isDefined:function(i){return typeof i!=="undefined"},isIterable:function(i){if(!i||typeof i.length!=="number"||typeof i==="string"||i.$extIsFunction){return false}if(!i.propertyIsEnumerable){return !!i.item}if(i.hasOwnProperty("length")&&!i.propertyIsEnumerable("length")){return true}return c.test(b.call(i))}});Ext.apply(Ext,{clone:function(s){var r,q,o,n,t,p;if(s===null||s===undefined){return s}if(s.nodeType&&s.cloneNode){return s.cloneNode(true)}r=b.call(s);if(r==="[object Date]"){return new Date(s.getTime())}if(r==="[object Array]"){q=s.length;t=[];while(q--){t[q]=Ext.clone(s[q])}}else{if(r==="[object Object]"&&s.constructor===Object){t={};for(p in s){t[p]=Ext.clone(s[p])}if(l){for(o=l.length;o--;){n=l[o];if(s.hasOwnProperty(n)){t[n]=s[n]}}}}}return t||s},getUniqueGlobalNamespace:function(){var o=this.uniqueGlobalNamespace,n;if(o===undefined){n=0;do{o="ExtBox"+(++n)}while(Ext.global[o]!==undefined);Ext.global[o]=Ext;this.uniqueGlobalNamespace=o}return o},functionFactoryCache:{},cacheableFunctionFactory:function(){var r=this,o=Array.prototype.slice.call(arguments),n=r.functionFactoryCache,i,p,q;if(Ext.isSandboxed){q=o.length;if(q>0){q--;o[q]="var Ext=window."+Ext.name+";"+o[q]}}i=o.join("");p=n[i];if(!p){p=Function.prototype.constructor.apply(Function.prototype,o);n[i]=p}return p},functionFactory:function(){var o=this,i=Array.prototype.slice.call(arguments),n;if(Ext.isSandboxed){n=i.length;if(n>0){n--;i[n]="var Ext=window."+Ext.name+";"+i[n]}}return Function.prototype.constructor.apply(Function.prototype,i)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(i){throw new Error(i)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(o){var i=Ext.app.namespaces,n;for(n in o){if(o.hasOwnProperty(n)){i[n]=true}}},addNamespaces:function(p){var q=Ext.app.namespaces,o,n;if(!Ext.isArray(p)){p=[p]}for(o=0,n=p.length;o<n;o++){q[p[o]]=true}},clearNamespaces:function(){Ext.app.namespaces={}},getNamespace:function(n){var p=Ext.app.namespaces,i="",o;for(o in p){if(p.hasOwnProperty(o)&&o.length>i.length&&(o+"."===n.substring(0,o.length+1))){i=o}}return i===""?undefined:i}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;c<Math.max(h.length,g.length);c++){d=this.getComponentValue(h[c]);e=this.getComponentValue(g[c]);if(d<e){return -1}else{if(d>e){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var j=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,n=/('|\\)/g,i=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,o=/^\s+|\s+$/g,k=/\s+/,m=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(q,p){return e[p]},l=function(q,p){return(p in a)?a[p]:String.fromCharCode(parseInt(p.substr(2),10))},c=function(q,p){if(q===null||q===undefined||p===null||p===undefined){return false}return p.length<=q.length};return{insert:function(r,t,q){if(!r){return t}if(!t){return r}var p=r.length;if(!q&&q!==0){q=p}if(q<0){q*=-1;if(q>=p){q=0}else{q=p-q}}if(q===0){r=t+r}else{if(q>=r.length){r+=t}else{r=r.substr(0,q)+t+r.substr(q)}}return r},startsWith:function(r,t,q){var p=c(r,t);if(p){if(q){r=r.toLowerCase();t=t.toLowerCase()}p=r.lastIndexOf(t,0)===0}return p},endsWith:function(t,q,r){var p=c(t,q);if(p){if(r){t=t.toLowerCase();q=q.toLowerCase()}p=t.indexOf(q,t.length-q.length)!==-1}return p},createVarName:function(p){return p.replace(m,"")},htmlEncode:function(p){return(!p)?p:String(p).replace(h,g)},htmlDecode:function(p){return(!p)?p:String(p).replace(d,l)},addCharacterEntities:function(q){var p=[],t=[],r,s;for(r in q){s=q[r];a[r]=s;e[s]=r;p.push(s);t.push(r)}h=new RegExp("("+p.join("|")+")","g");d=new RegExp("("+t.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(q,p){if(!Ext.isEmpty(p)){return q+(q.indexOf("?")===-1?"?":"&")+p}return q},trim:function(p){return p.replace(j,"")},capitalize:function(p){return p.charAt(0).toUpperCase()+p.substr(1)},uncapitalize:function(p){return p.charAt(0).toLowerCase()+p.substr(1)},ellipsis:function(r,p,s){if(r&&r.length>p){if(s){var t=r.substr(0,p-2),q=Math.max(t.lastIndexOf(" "),t.lastIndexOf("."),t.lastIndexOf("!"),t.lastIndexOf("?"));if(q!==-1&&q>=(p-15)){return t.substr(0,q)+"..."}}return r.substr(0,p-3)+"..."}return r},escapeRegex:function(p){return p.replace(b,"\\$1")},escape:function(p){return p.replace(n,"\\$1")},toggle:function(q,r,p){return q===r?p:r},leftPad:function(q,r,s){var p=String(q);s=s||" ";while(p.length<r){p=s+p}return p},format:function(q){var p=Ext.Array.toArray(arguments,1);return q.replace(i,function(r,s){return p[s]})},repeat:function(t,s,q){if(s<1){s=0}for(var p=[],r=s;r--;){p.push(t)}return p.join(q||"")},splitWords:function(p){if(p&&typeof p=="string"){return p.replace(o,"").split(k)}return p||[]}}}());Ext.String.resetCharacterEntities();Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new function(){var b=this,c=(0.9).toFixed()!=="1",a=Math;Ext.apply(this,{constrain:function(h,g,e){var d=parseFloat(h);return(d<g)?g:((d>e)?e:d)},snap:function(h,e,g,i){var d;if(h===undefined||h<g){return g||0}if(e){d=h%e;if(d!==0){h-=d;if(d*2>=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,i)},snapInRange:function(h,d,g,i){var e;g=(g||0);if(h===undefined||h<g){return g}if(d&&(e=((h-g)%d))){h-=e;e*=2;if(e>=d){h+=d}}if(i!==undefined){if(h>(i=b.snapInRange(i,d,g))){h=i}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,o=g.slice,q=(function(){var A=[],e,z=20;if(!A.splice){return false}while(z--){A.push("A")}A.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=A.length;A.splice(13,0,"XXX");if(e+1!=A.length){return false}return true}()),j="forEach" in g,u="map" in g,p="indexOf" in g,y="every" in g,c="some" in g,d="filter" in g,n=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),k=true,a,w,t,v;try{if(typeof document!=="undefined"){o.call(document.getElementsByTagName("body"))}}catch(s){k=false}function m(z,e){return(e<0)?Math.max(0,z.length+e):Math.min(z.length,e)}function x(G,F,z,J){var K=J?J.length:0,B=G.length,H=m(G,F),E,I,A,e,C,D;if(H===B){if(K){G.push.apply(G,J)}}else{E=Math.min(z,B-H);I=H+E;A=I+K-E;e=B-I;C=B-E;if(A<I){for(D=0;D<e;++D){G[A+D]=G[I+D]}}else{if(A>I){for(D=e;D--;){G[A+D]=G[I+D]}}}if(K&&H===C){G.length=C;G.push.apply(G,J)}else{G.length=C+K;for(D=0;D<K;++D){G[H+D]=J[D]}}}return G}function i(B,e,A,z){if(z&&z.length){if(e===0&&!A){B.unshift.apply(B,z)}else{if(e<B.length){B.splice.apply(B,[e,A].concat(z))}else{B.push.apply(B,z)}}}else{B.splice(e,A)}return B}function b(A,e,z){return x(A,e,z)}function r(A,e,z){A.splice(e,z);return A}function l(C,e,A){var B=m(C,e),z=C.slice(e,m(C,B+A));if(arguments.length<4){x(C,B,A)}else{x(C,B,A,o.call(arguments,3))}return z}function h(e){return e.splice.apply(e,o.call(arguments,1))}w=q?r:b;t=q?i:x;v=q?h:l;a=Ext.Array={each:function(D,B,A,e){D=a.from(D);var z,C=D.length;if(e!==true){for(z=0;z<C;z++){if(B.call(A||D[z],D[z],z,D)===false){return z}}}else{for(z=C-1;z>-1;z--){if(B.call(A||D[z],D[z],z,D)===false){return z}}}return true},forEach:j?function(A,z,e){A.forEach(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;e++){A.call(z,C[e],e,C)}},indexOf:p?function(A,e,z){return g.indexOf.call(A,e,z)}:function(C,A,B){var e,z=C.length;for(e=(B<0)?Math.max(0,z+B):B||0;e<z;e++){if(C[e]===A){return e}}return -1},contains:p?function(z,e){return g.indexOf.call(z,e)!==-1}:function(B,A){var e,z;for(e=0,z=B.length;e<z;e++){if(B[e]===A){return true}}return false},toArray:function(A,C,e){if(!A||!A.length){return[]}if(typeof A==="string"){A=A.split("")}if(k){return o.call(A,C||0,e||A.length)}var B=[],z;C=C||0;e=e?((e<0)?A.length+e:e):A.length;for(z=C;z<e;z++){B.push(A[z])}return B},pluck:function(D,e){var z=[],A,C,B;for(A=0,C=D.length;A<C;A++){B=D[A];z.push(B[e])}return z},map:u?function(A,z,e){return A.map(z,e)}:function(D,C,B){var A=[],z=0,e=D.length;for(;z<e;z++){A[z]=C.call(B,D[z],z,D)}return A},every:y?function(A,z,e){return A.every(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(!A.call(z,C[e],e,C)){return false}}return true},some:c?function(A,z,e){return A.some(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(A.call(z,C[e],e,C)){return true}}return false},equals:function(C,B){var z=C.length,e=B.length,A;if(C===B){return true}if(z!==e){return false}for(A=0;A<z;++A){if(C[A]!==B[A]){return false}}return true},clean:function(C){var z=[],e=0,B=C.length,A;for(;e<B;e++){A=C[e];if(!Ext.isEmpty(A)){z.push(A)}}return z},unique:function(C){var B=[],e=0,A=C.length,z;for(;e<A;e++){z=C[e];if(a.indexOf(B,z)===-1){B.push(z)}}return B},filter:d?function(A,z,e){return A.filter(z,e)}:function(D,B,A){var z=[],e=0,C=D.length;for(;e<C;e++){if(B.call(A,D[e],e,D)){z.push(D[e])}}return z},findBy:function(C,B,A){var z=0,e=C.length;for(;z<e;z++){if(B.call(A||C,C[z],z)){return C[z]}}return null},from:function(A,z){if(A===undefined||A===null){return[]}if(Ext.isArray(A)){return(z)?o.call(A):A}var e=typeof A;if(A&&A.length!==undefined&&e!=="string"&&(e!=="function"||!A.apply)){return a.toArray(A)}return[A]},remove:function(A,z){var e=a.indexOf(A,z);if(e!==-1){w(A,e,1)}return A},include:function(z,e){if(!a.contains(z,e)){z.push(e)}},clone:function(e){return o.call(e)},merge:function(){var e=o.call(arguments),B=[],z,A;for(z=0,A=e.length;z<A;z++){B=B.concat(e[z])}return a.unique(B)},intersect:function(){var e=[],A=o.call(arguments),L,J,F,I,M,B,z,H,K,C,G,E,D;if(!A.length){return e}L=A.length;for(G=M=0;G<L;G++){B=A[G];if(!I||B.length<I.length){I=B;M=G}}I=a.unique(I);w(A,M,1);z=I.length;L=A.length;for(G=0;G<z;G++){H=I[G];C=0;for(E=0;E<L;E++){J=A[E];F=J.length;for(D=0;D<F;D++){K=J[D];if(H===K){C++;break}}}if(C===L){e.push(H)}}return e},difference:function(z,e){var E=o.call(z),C=E.length,B,A,D;for(B=0,D=e.length;B<D;B++){for(A=0;A<C;A++){if(E[A]===e[B]){w(E,A,1);A--;C--}}}return E},slice:([1,2].slice(1,undefined).length?function(A,z,e){return o.call(A,z,e)}:function(A,z,e){if(typeof z==="undefined"){return o.call(A)}if(typeof e==="undefined"){return o.call(A,z)}return o.call(A,z,e)}),sort:n?function(z,e){if(e){return z.sort(e)}else{return z.sort()}}:function(F,E){var C=F.length,B=0,D,e,A,z;for(;B<C;B++){A=B;for(e=B+1;e<C;e++){if(E){D=E(F[e],F[A]);if(D<0){A=e}}else{if(F[e]<F[A]){A=e}}}if(A!==B){z=F[B];F[B]=F[A];F[A]=z}}return F},flatten:function(A){var z=[];function e(B){var D,E,C;for(D=0,E=B.length;D<E;D++){C=B[D];if(Ext.isArray(C)){e(C)}else{z.push(C)}}return z}return e(A)},min:function(D,C){var z=D[0],e,B,A;for(e=0,B=D.length;e<B;e++){A=D[e];if(C){if(C(z,A)===1){z=A}}else{if(A<z){z=A}}}return z},max:function(D,C){var e=D[0],z,B,A;for(z=0,B=D.length;z<B;z++){A=D[z];if(C){if(C(e,A)===-1){e=A}}else{if(A>e){e=A}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(C){var z=0,e,B,A;for(e=0,B=C.length;e<B;e++){A=C[e];z+=A}return z},toMap:function(C,e,A){var B={},z=C.length;if(!e){while(z--){B[C[z]]=z+1}}else{if(typeof e=="string"){while(z--){B[C[z][e]]=z+1}}else{while(z--){B[e.call(A,C[z])]=z+1}}}return B},toValueMap:function(C,e,A){var B={},z=C.length;if(!e){while(z--){B[C[z]]=C[z]}}else{if(typeof e=="string"){while(z--){B[C[z][e]]=C[z]}}else{while(z--){B[e.call(A,C[z])]=C[z]}}}return B},erase:w,insert:function(A,z,e){return t(A,z,0,e)},replace:t,splice:v,push:function(B){var e=arguments.length,A=1,z;if(B===undefined){B=[]}else{if(!Ext.isArray(B)){B=[B]}}for(;A<e;A++){z=arguments[A];Array.prototype.push[Ext.isIterable(z)?"apply":"call"](B,z)}return B}};Ext.each=a.each;a.union=a.merge;Ext.min=a.min;Ext.max=a.max;Ext.sum=a.sum;Ext.mean=a.mean;Ext.flatten=a.flatten;Ext.clean=a.clean;Ext.unique=a.unique;Ext.pluck=a.pluck;Ext.toArray=function(){return a.toArray.apply(a,arguments)}}());Ext.Function={flexSetter:function(a){return function(d,c){var e,g;if(d===null){return this}if(typeof d!=="string"){for(e in d){if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}if(Ext.enumerables){for(g=Ext.enumerables.length;g--;){e=Ext.enumerables[g];if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}}}else{a.call(this,d,c)}return this}},bind:function(d,c,b,a){if(arguments.length===2){return function(){return d.apply(c,arguments)}}var g=d,e=Array.prototype.slice;return function(){var h=b||arguments;if(a===true){h=e.call(arguments,0);h=h.concat(b)}else{if(typeof a=="number"){h=e.call(arguments,0);Ext.Array.insert(h,a,b)}}return g.apply(c||Ext.global,h)}},pass:function(c,a,b){if(!Ext.isArray(a)){if(Ext.isIterable(a)){a=Ext.Array.clone(a)}else{a=a!==undefined?[a]:[]}}return function(){var d=[].concat(a);d.push.apply(d,arguments);return c.apply(b||this,d)}},alias:function(b,a){return function(){return b[a].apply(b,arguments)}},clone:function(a){return function(){return a.apply(this,arguments)}},createInterceptor:function(d,c,b,a){var e=d;if(!Ext.isFunction(c)){return d}else{a=Ext.isDefined(a)?a:null;return function(){var h=this,g=arguments;c.target=h;c.method=d;return(c.apply(b||h||Ext.global,g)!==false)?d.apply(h||Ext.global,g):a}}},createDelayed:function(e,c,d,b,a){if(d||b){e=Ext.Function.bind(e,d,b,a)}return function(){var h=this,g=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(h,g)},c)}},defer:function(e,c,d,b,a){e=Ext.Function.bind(e,d,b,a);if(c>0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,i,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(i);if(!g||(a>=b)){h()}else{i=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g<h;g++){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}else{if(Ext.isObject(k)){for(g in k){if(k.hasOwnProperty(g)){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}}else{j.push({name:e,value:k})}}return j},toQueryString:function(g,d){var h=[],e=[],l,k,m,c,n;for(l in g){if(g.hasOwnProperty(l)){h=h.concat(b.toQueryObjects(l,g[l],d))}}for(k=0,m=h.length;k<m;k++){c=h[k];n=c.value;if(Ext.isEmpty(n)){n=""}else{if(Ext.isDate(n)){n=Ext.Date.toString(n)}}e.push(encodeURIComponent(c.name)+"="+encodeURIComponent(String(n)))}return e.join("&")},fromQueryString:function(d,r){var m=d.replace(/^\?/,"").split("&"),u={},s,k,w,n,q,g,o,p,c,h,t,l,v,e;for(q=0,g=m.length;q<g;q++){o=m[q];if(o.length>0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p<c;p++){v=h[p];v=(v.length===2)?"":v.substring(1,v.length-1);l.push(v)}l.unshift(w);s=u;for(p=0,c=l.length;p<c;p++){v=l[p];if(p===c-1){if(Ext.isArray(s)&&v===""){s.push(n)}else{s[v]=n}}else{if(s[v]===undefined||typeof s[v]==="string"){e=l[p+1];s[v]=(Ext.isNumeric(e)||e==="")?[]:{}}s=s[v]}}}}}return u},each:function(c,e,d){for(var g in c){if(c.hasOwnProperty(g)){if(e.call(d||c,g,c[g],c)===false){return}}}},merge:function(k){var h=1,j=arguments.length,c=b.merge,e=Ext.clone,g,m,l,d;for(;h<j;h++){g=arguments[h];for(m in g){l=g[m];if(l&&l.constructor===Object){d=k[m];if(d&&d.constructor===Object){c(d,l)}else{k[m]=e(l)}}else{k[m]=l}}}return k},mergeIf:function(c){var h=1,j=arguments.length,e=Ext.clone,d,g,k;for(;h<j;h++){d=arguments[h];for(g in d){if(!(g in c)){k=d[g];if(k&&k.constructor===Object){c[g]=e(k)}else{c[g]=k}}}}return c},getKey:function(c,e){for(var d in c){if(c.hasOwnProperty(d)&&c[d]===e){return d}}return null},getValues:function(d){var c=[],e;for(e in d){if(d.hasOwnProperty(e)){c.push(d[e])}}return c},getKeys:(typeof Object.keys=="function")?function(c){if(!c){return[]}return Object.keys(c)}:function(c){var d=[],e;for(e in c){if(c.hasOwnProperty(e)){d.push(e)}}return d},getSize:function(c){var d=0,e;for(e in c){if(c.hasOwnProperty(e)){d++}}return d},isEmpty:function(c){for(var d in c){if(c.hasOwnProperty(d)){return false}}return true},equals:(function(){var c=function(g,e){var d;for(d in g){if(g.hasOwnProperty(d)){if(g[d]!==e[d]){return false}}}return true};return function(e,d){if(e===d){return true}if(e&&d){return c(e,d)&&c(d,e)}else{if(!e&&!d){return e===d}else{return false}}}})(),classify:function(g){var e=g,i=[],d={},c=function(){var k=0,l=i.length,m;for(;k<l;k++){m=i[k];this[m]=new d[m]()}},h,j;for(h in g){if(g.hasOwnProperty(h)){j=g[h];if(j&&j.constructor===Object){i.push(h);d[h]=b.classify(j)}}}c.prototype=e;return c}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf;Ext.urlEncode=function(){var c=Ext.Array.from(arguments),d="";if((typeof c[1]==="string")){d=c[1]+"&";c[1]=false}return d+b.toQueryString.apply(b,c)};Ext.urlDecode=function(){return b.fromQueryString.apply(b,arguments)}}());Ext.Date=new function(){var d=this,j=/(\\.)/g,a=/([gGhHisucUOPZ]|MS)/,e=/([djzmnYycU]|MS)/,i=/\\/gi,c=/\{(\d+)\}/g,g=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),b=["var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,","def = me.defaults,","from = Ext.Number.from,","results = String(input).match(me.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = me.clearTime(new Date);","y = from(y, from(def.y, dt.getFullYear()));","m = from(m, from(def.m - 1, dt.getMonth()));","dayMatched = d !== undefined;","d = from(d, from(def.d, dt.getDate()));","if (!dayMatched) {","dt.setDate(1);","dt.setMonth(m);","dt.setFullYear(y);","daysInMonth = me.getDaysInMonth(dt);","if (d > daysInMonth) {","d = daysInMonth;","}","}","h  = from(h, from(def.h, dt.getHours()));","i  = from(i, from(def.i, dt.getMinutes()));","s  = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(l){var k=Array.prototype.slice.call(arguments,1);return l.replace(c,function(n,o){return k[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(k){var l=Ext.String.leftPad;return k.getFullYear()+"-"+l(k.getMonth()+1,2,"0")+"-"+l(k.getDate(),2,"0")+"T"+l(k.getHours(),2,"0")+":"+l(k.getMinutes(),2,"0")+":"+l(k.getSeconds(),2,"0")},getElapsed:function(l,k){return Math.abs(l-(k||d.now()))},useStrict:false,formatCodeToRegex:function(l,k){var m=d.parseCodes[l];if(m){m=typeof m=="function"?m():m;d.parseCodes[l]=m}return m?Ext.applyIf({c:m.c?h(m.c,k||"{0}"):m.c},m):{g:0,c:null,s:Ext.String.escapeRegex(l)}},parseFunctions:{MS:function(l,k){var m=(l||"").match(g);return m?new Date(((m[1]||"")+m[2])*1):null},time:function(l,k){var m=parseInt(l,10);if(m||m===0){return new Date(m)}return null},timestamp:function(l,k){var m=parseInt(l,10);if(m||m===0){return new Date(m*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(k){return Ext.Date.monthNames[k].substring(0,3)},getShortDayName:function(k){return Ext.Date.dayNames[k].substring(0,3)},getMonthNumber:function(k){return Ext.Date.monthNumbers[k.substring(0,1).toUpperCase()+k.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(k){return a.test(k.replace(j,""))},formatContainsDateInfo:function(k){return e.test(k.replace(j,""))},unescapeFormat:function(k){return k.replace(i,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var p,n,m,k,o;for(p="Y-m-dTH:i:sP",n=[],m=0,k=p.length;m<k;++m){o=p.charAt(m);n.push(o=="T"?"'T'":d.getFormatCode(o))}return n.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(t,k,r,p,n,o,l){p=p||0;n=n||0;o=o||0;l=l||0;var q=d.add(new Date(t<100?100:t,k-1,r,p,n,o,l),d.YEAR,t<100?t-100:0);return t==q.getFullYear()&&k==q.getMonth()+1&&r==q.getDate()&&p==q.getHours()&&n==q.getMinutes()&&o==q.getSeconds()&&l==q.getMilliseconds()},parse:function(l,n,k){var m=d.parseFunctions;if(m[n]==null){d.createParser(n)}return m[n].call(d,l,Ext.isDefined(k)?k:d.useStrict)},parseDate:function(l,m,k){return d.parse(l,m,k)},getFormatCode:function(l){var k=d.formatCodes[l];if(k){k=typeof k=="function"?k():k;d.formatCodes[l]=k}return k||("'"+Ext.String.escape(l)+"'")},createFormat:function(o){var n=[],k=false,m="",l;for(l=0;l<o.length;++l){m=o.charAt(l);if(!k&&m=="\\"){k=true}else{if(k){k=false;n.push("'"+Ext.String.escape(m)+"'")}else{n.push(d.getFormatCode(m))}}}d.formatFunctions[o]=Ext.functionFactory("return "+n.join("+"))},createParser:function(t){var l=d.parseRegexes.length,u=1,m=[],s=[],q=false,k="",o=0,p=t.length,r=[],n;for(;o<p;++o){k=t.charAt(o);if(!q&&k=="\\"){q=true}else{if(q){q=false;s.push(Ext.String.escape(k))}else{n=d.formatCodeToRegex(k,u);u+=n.g;s.push(n.s);if(n.g&&n.c){if(n.calcAtEnd){r.push(n.c)}else{m.push(n.c)}}}}}m=m.concat(r);d.parseRegexes[l]=new RegExp("^"+s.join("")+"$","i");d.parseFunctions[t]=Ext.functionFactory("input","strict",h(b,l,m.join("")))},parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var k=[],l=0;l<7;k.push(d.getShortDayName(l)),++l){}return{g:0,c:null,s:"(?:"+k.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+d.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:1,c:"W = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},F:function(){return{g:1,c:"m = parseInt(me.getMonthNumber(results[{0}]), 10);\n",s:"("+d.monthNames.join("|")+")"}},M:function(){for(var k=[],l=0;l<12;k.push(d.getShortMonthName(l)),++l){}return Ext.applyIf({s:"("+k.join("|")+")"},d.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var n=[],k=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],o,m;for(o=0,m=k.length;o<m;++o){n.push(k[o].c)}return{g:1,c:n.join(""),s:[k[0].s,"(?:","-",k[1].s,"(?:","-",k[2].s,"(?:","(?:T| )?",k[3].s,":",k[4].s,"(?::",k[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(k,l){return d.format(k,l)},isEqual:function(l,k){if(l&&k){return(l.getTime()===k.getTime())}return !(l||k)},format:function(l,m){var k=d.formatFunctions;if(!Ext.isDate(l)){return""}if(k[m]==null){d.createFormat(m)}return k[m].call(l)+""},getTimezone:function(k){return k.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(k,l){var m=k.getTimezoneOffset();return(m>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(m)/60),2,"0")+(l?":":"")+Ext.String.leftPad(Math.abs(m%60),2,"0")},getDayOfYear:function(n){var l=0,p=Ext.Date.clone(n),k=n.getMonth(),o;for(o=0,p.setDate(1),p.setMonth(0);o<k;p.setMonth(++o)){l+=d.getDaysInMonth(p)}return l+n.getDate()-1},getWeekOfYear:(function(){var k=86400000,l=7*k;return function(n){var o=Date.UTC(n.getFullYear(),n.getMonth(),n.getDate()+3)/k,m=Math.floor(o/7),p=new Date(m*l).getUTCFullYear();return m-Math.floor(Date.UTC(p,0,7)/l)+1}}()),isLeapYear:function(k){var l=k.getFullYear();return !!((l&3)==0&&(l%100||(l%400==0&&l)))},getFirstDayOfMonth:function(l){var k=(l.getDay()-(l.getDate()-1))%7;return(k<0)?(k+7):k},getLastDayOfMonth:function(k){return d.getLastDateOfMonth(k).getDay()},getFirstDateOfMonth:function(k){return new Date(k.getFullYear(),k.getMonth(),1)},getLastDateOfMonth:function(k){return new Date(k.getFullYear(),k.getMonth(),d.getDaysInMonth(k))},getDaysInMonth:(function(){var k=[31,28,31,30,31,30,31,31,30,31,30,31];return function(n){var l=n.getMonth();return l==1&&d.isLeapYear(n)?29:k[l]}}()),getSuffix:function(k){switch(k.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(k){return new Date(k.getTime())},isDST:function(k){return new Date(k.getFullYear(),0,1).getTimezoneOffset()!=k.getTimezoneOffset()},clearTime:function(k,o){if(o){return Ext.Date.clearTime(Ext.Date.clone(k))}var m=k.getDate(),l,n;k.setHours(0);k.setMinutes(0);k.setSeconds(0);k.setMilliseconds(0);if(k.getDate()!=m){for(l=1,n=d.add(k,Ext.Date.HOUR,l);n.getDate()!=m;l++,n=d.add(k,Ext.Date.HOUR,l)){}k.setDate(m);k.setHours(n.getHours())}return k},add:function(n,m,q){var r=Ext.Date.clone(n),k=Ext.Date,l,p,o=0;if(!m||q===0){return r}p=q-parseInt(q,10);q=parseInt(q,10);if(q){switch(m.toLowerCase()){case Ext.Date.MILLI:r.setTime(r.getTime()+q);break;case Ext.Date.SECOND:r.setTime(r.getTime()+q*1000);break;case Ext.Date.MINUTE:r.setTime(r.getTime()+q*60*1000);break;case Ext.Date.HOUR:r.setTime(r.getTime()+q*60*60*1000);break;case Ext.Date.DAY:r.setDate(r.getDate()+q);break;case Ext.Date.MONTH:l=n.getDate();if(l>28){l=Math.min(l,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(n),Ext.Date.MONTH,q)).getDate())}r.setDate(l);r.setMonth(n.getMonth()+q);break;case Ext.Date.YEAR:l=n.getDate();if(l>28){l=Math.min(l,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(n),Ext.Date.YEAR,q)).getDate())}r.setDate(l);r.setFullYear(n.getFullYear()+q);break}}if(p){switch(m.toLowerCase()){case Ext.Date.MILLI:o=1;break;case Ext.Date.SECOND:o=1000;break;case Ext.Date.MINUTE:o=1000*60;break;case Ext.Date.HOUR:o=1000*60*60;break;case Ext.Date.DAY:o=1000*60*60*24;break;case Ext.Date.MONTH:l=d.getDaysInMonth(r);o=1000*60*60*24*l;break;case Ext.Date.YEAR:l=(d.isLeapYear(r)?366:365);o=1000*60*60*24*l;break}if(o){r.setTime(r.getTime()+o*p)}}return r},subtract:function(l,k,m){return d.add(l,k,-m)},between:function(l,n,k){var m=l.getTime();return n.getTime()<=m&&m<=k.getTime()},compat:function(){var l=window.Date,k,r=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],o=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],q=r.length,m=o.length,n,t,u;for(u=0;u<q;u++){n=r[u];l[n]=d[n]}for(k=0;k<m;k++){t=o[k];l.prototype[t]=function(){var p=Array.prototype.slice.call(arguments);p.unshift(this);return d[t].apply(d,p)}}}})}();(function(a){var d=[],b=function(){},c=function(j,g,i,h){var e=function(){var k=this.callParent(arguments);j.apply(this,arguments);return k};e.$name=i;e.$owner=h;if(g){e.$previous=g.$previous;g.$previous=e}return e};Ext.apply(b,{$className:"Ext.Base",$isClass:true,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(k){var e=k.prototype,n,h,j,l,g,m;h=this.prototype=Ext.Object.chain(e);h.self=this;this.superclass=h.superclass=e;if(!k.$isClass){n=Ext.Base.prototype;for(j in n){if(j in h){h[j]=n[j]}}}m=e.$inheritableStatics;if(m){for(j=0,l=m.length;j<l;j++){g=m[j];if(!this.hasOwnProperty(g)){this[g]=k[g]}}}if(k.$onExtended){this.$onExtended=k.$onExtended.slice()}h.config=new h.configClass();h.initConfigList=h.initConfigList.slice();h.initConfigMap=Ext.clone(h.initConfigMap);h.configMap=Ext.Object.chain(h.configMap)},$onExtended:[],triggerExtended:function(){var h=this.$onExtended,g=h.length,e,j;if(g>0){for(e=0;e<g;e++){j=h[e];j.fn.apply(j.scope||this,arguments)}}},onExtended:function(g,e){this.$onExtended.push({fn:g,scope:e});return this},addConfig:function(i,m){var o=this.prototype,n=Ext.Class.configNameCache,j=o.configMap,k=o.initConfigList,h=o.initConfigMap,l=o.config,e,g,p;for(g in i){if(i.hasOwnProperty(g)){if(!j[g]){j[g]=true}p=i[g];e=n[g].initialized;if(!h[g]&&p!==null&&!o[e]){h[g]=true;k.push(g)}}}if(m){Ext.merge(l,i)}else{Ext.mergeIf(l,i)}o.configClass=Ext.Object.classify(l)},addStatics:function(e){var h,g;for(g in e){if(e.hasOwnProperty(g)){h=e[g];if(typeof h=="function"&&!h.$isClass&&h!==Ext.emptyFn&&h!==Ext.identityFn){h.$owner=this;h.$name=g}this[g]=h}}return this},addInheritableStatics:function(g){var j,e,i=this.prototype,h,k;j=i.$inheritableStatics;e=i.$hasInheritableStatics;if(!j){j=i.$inheritableStatics=[];e=i.$hasInheritableStatics={}}for(h in g){if(g.hasOwnProperty(h)){k=g[h];this[h]=k;if(!e[h]){e[h]=true;j.push(h)}}}return this},addMembers:function(g){var j=this.prototype,e=Ext.enumerables,m=[],k,l,h,n;for(h in g){m.push(h)}if(e){m.push.apply(m,e)}for(k=0,l=m.length;k<l;k++){h=m[k];if(g.hasOwnProperty(h)){n=g[h];if(typeof n=="function"&&!n.$isClass&&n!==Ext.emptyFn&&n!==Ext.identityFn){n.$owner=this;n.$name=h}j[h]=n}}return this},addMember:function(e,g){if(typeof g=="function"&&!g.$isClass&&g!==Ext.emptyFn&&g!==Ext.identityFn){g.$owner=this;g.$name=e}this.prototype[e]=g;return this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(k,h){var o=this.prototype,n=k.prototype,j,l,g,m,e;h=Ext.Array.from(h);for(j=0,l=h.length;j<l;j++){g=h[j];e=n[g];if(typeof e=="function"){m=Ext.Function.clone(e);m.$owner=this;m.$name=g;o[g]=m}else{o[g]=e}}return this},override:function(g){var n=this,p=Ext.enumerables,l=n.prototype,i=Ext.Function.clone,e,k,h,o,m,j;if(arguments.length===2){e=g;g={};g[e]=arguments[1];p=null}do{m=[];o=null;for(e in g){if(e=="statics"){o=g[e]}else{if(e=="inheritableStatics"){n.addInheritableStatics(g[e])}else{if(e=="config"){n.addConfig(g[e],true)}else{m.push(e)}}}}if(p){m.push.apply(m,p)}for(k=m.length;k--;){e=m[k];if(g.hasOwnProperty(e)){h=g[e];if(typeof h=="function"&&!h.$className&&h!==Ext.emptyFn&&h!==Ext.identityFn){if(typeof h.$owner!="undefined"){h=i(h)}h.$owner=n;h.$name=e;j=l[e];if(j){h.$previous=j}}l[e]=h}}l=n;g=o}while(g);return this},callParent:function(e){var g;return(g=this.callParent.caller)&&(g.$previous||((g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name])).apply(this,e||d)},callSuper:function(e){var g;return(g=this.callSuper.caller)&&((g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name]).apply(this,e||d)},mixin:function(g,h){var l=this,s=h.prototype,n=l.prototype,r,m,j,k,q,p,o,e;if(typeof s.onClassMixedIn!="undefined"){s.onClassMixedIn.call(h,l)}if(!n.hasOwnProperty("mixins")){if("mixins" in n){n.mixins=Ext.Object.chain(n.mixins)}else{n.mixins={}}}for(r in s){p=s[r];if(r==="mixins"){Ext.merge(n.mixins,p)}else{if(r==="xhooks"){for(o in p){e=p[o];e.$previous=Ext.emptyFn;if(n.hasOwnProperty(o)){c(e,n[o],o,l)}else{n[o]=c(e,null,o,l)}}}else{if(!(r==="mixinId"||r==="config")&&(n[r]===undefined)){n[r]=p}}}}m=s.$inheritableStatics;if(m){for(j=0,k=m.length;j<k;j++){q=m[j];if(!l.hasOwnProperty(q)){l[q]=h[q]}}}if("config" in s){l.addConfig(s.config,false)}n.mixins[g]=s;return l},getName:function(){return Ext.getClassName(this)},createAlias:a(function(g,e){this.override(g,function(){return this[e].apply(this,arguments)})}),addXtype:function(j){var g=this.prototype,i=g.xtypesMap,h=g.xtypes,e=g.xtypesChain;if(!g.hasOwnProperty("xtypesMap")){i=g.xtypesMap=Ext.merge({},g.xtypesMap||{});h=g.xtypes=g.xtypes?[].concat(g.xtypes):[];e=g.xtypesChain=g.xtypesChain?[].concat(g.xtypesChain):[];g.xtype=j}if(!i[j]){i[j]=true;h.push(j);e.push(j);Ext.ClassManager.setAlias(this,"widget."+j)}return this}});b.implement({isInstance:true,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var g=this.statics.caller,e=this.self;if(!g){return e}return g.$owner},callParent:function(g){var h,e=(h=this.callParent.caller)&&(h.$previous||((h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name]));return e.apply(this,g||d)},callSuper:function(g){var h,e=(h=this.callSuper.caller)&&((h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name]);return e.apply(this,g||d)},self:b,constructor:function(){return this},initConfig:function(h){var n=h,m=Ext.Class.configNameCache,k=new this.configClass(),q=this.initConfigList,j=this.configMap,p,l,o,g,e;this.initConfig=Ext.emptyFn;this.initialConfig=n||{};this.config=h=(n)?Ext.merge(k,h):k;if(n){q=q.slice();for(g in n){if(j[g]){if(n[g]!==null){q.push(g);this[m[g].initialized]=false}}}}for(l=0,o=q.length;l<o;l++){g=q[l];p=m[g];e=p.initialized;if(!this[e]){this[e]=true;this[p.set].call(this,h[g])}}return this},hasConfig:function(e){return Boolean(this.configMap[e])},setConfig:function(i,m){if(!i){return this}var h=Ext.Class.configNameCache,e=this.config,l=this.configMap,k=this.initialConfig,g,j;m=Boolean(m);for(g in i){if(m&&k.hasOwnProperty(g)){continue}j=i[g];e[g]=j;if(l[g]){this[h[g].set](j)}}return this},getConfig:function(g){var e=Ext.Class.configNameCache;return this[e[g].get]()},getInitialConfig:function(g){var e=this.config;if(!g){return e}else{return e[g]}},onConfigUpdate:function(l,n,o){var p=this.self,h,k,e,j,m,g;l=Ext.Array.from(l);o=o||this;for(h=0,k=l.length;h<k;h++){e=l[h];j="update"+Ext.String.capitalize(e);m=this[j]||Ext.emptyFn;g=function(){m.apply(this,arguments);o[n].apply(o,arguments)};g.$name=j;g.$owner=p;this[j]=g}},destroy:function(){this.destroy=Ext.emptyFn}});b.prototype.callOverridden=b.prototype.callParent;Ext.Base=b}(Ext.Function.flexSetter));(function(){var c,b=Ext.Base,g=[],e,d;for(e in b){if(b.hasOwnProperty(e)){g.push(e)}}d=g.length;function a(i){function h(){return this.constructor.apply(this,arguments)||null}return h}Ext.Class=c=function(i,j,h){if(typeof i!="function"){h=j;j=i;i=null}if(!j){j={}}i=c.create(i,j);c.process(i,j,h);return i};Ext.apply(c,{onBeforeCreated:function(i,j,h){i.addMembers(j);h.onCreated.call(i,i)},create:function(h,l){var j,k;if(!h){h=a()}for(k=0;k<d;k++){j=g[k];h[j]=b[j]}return h},process:function(h,p,l){var k=p.preprocessors||c.defaultPreprocessors,s=this.preprocessors,v={onBeforeCreated:this.onBeforeCreated},u=[],w,o,n,t,m,r,q;delete p.preprocessors;for(n=0,t=k.length;n<t;n++){w=k[n];if(typeof w=="string"){w=s[w];o=w.properties;if(o===true){u.push(w.fn)}else{if(o){for(m=0,r=o.length;m<r;m++){q=o[m];if(p.hasOwnProperty(q)){u.push(w.fn);break}}}}}else{u.push(w)}}v.onCreated=l?l:Ext.emptyFn;v.preprocessors=u;this.doProcess(h,p,v)},doProcess:function(i,m,h){var l=this,n=h.preprocessors,j=n.shift(),k=l.doProcess;for(;j;j=n.shift()){if(j.call(l,i,m,h,k)===false){return}}h.onBeforeCreated.apply(l,arguments)},preprocessors:{},registerPreprocessor:function(i,l,j,h,k){if(!h){h="last"}if(!j){j=[i]}this.preprocessors[i]={name:i,properties:j||false,fn:l};this.setDefaultPreprocessorPosition(i,h,k);return this},getPreprocessor:function(h){return this.preprocessors[h]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(h){this.defaultPreprocessors=Ext.Array.from(h);return this},setDefaultPreprocessorPosition:function(j,l,k){var h=this.defaultPreprocessors,i;if(typeof l=="string"){if(l==="first"){h.unshift(j);return this}else{if(l==="last"){h.push(j);return this}}l=(l==="after")?1:-1}i=Ext.Array.indexOf(h,k);if(i!==-1){Ext.Array.splice(h,Math.max(0,i+l),0,j)}return this},configNameCache:{},getConfigNameMap:function(j){var i=this.configNameCache,k=i[j],h;if(!k){h=j.charAt(0).toUpperCase()+j.substr(1);k=i[j]={internal:j,initialized:"_is"+h+"Initialized",apply:"apply"+h,update:"update"+h,set:"set"+h,get:"get"+h,doSet:"doSet"+h,changeEvent:j.toLowerCase()+"change"}}return k}});c.registerPreprocessor("extend",function(j,l,q){var m=Ext.Base,n=m.prototype,o=l.extend,h,p,k;delete l.extend;if(o&&o!==Object){h=o}else{h=m}p=h.prototype;if(!h.$isClass){for(k in n){if(!p[k]){p[k]=n[k]}}}j.extend(h);j.triggerExtended.apply(j,arguments);if(l.onClassExtended){j.onExtended(l.onClassExtended,j);delete l.onClassExtended}},true);c.registerPreprocessor("statics",function(h,i){h.addStatics(i.statics);delete i.statics});c.registerPreprocessor("inheritableStatics",function(h,i){h.addInheritableStatics(i.inheritableStatics);delete i.inheritableStatics});c.registerPreprocessor("config",function(h,k){var j=k.config,i=h.prototype;delete k.config;Ext.Object.each(j,function(n,w){var u=c.getConfigNameMap(n),q=u.internal,l=u.initialized,v=u.apply,o=u.update,t=u.set,m=u.get,y=(t in i)||k.hasOwnProperty(t),p=(v in i)||k.hasOwnProperty(v),r=(o in i)||k.hasOwnProperty(o),x,s;if(w===null||(!y&&!p&&!r)){i[q]=w;i[l]=true}else{i[l]=false}if(!y){k[t]=function(B){var A=this[q],z=this[v],C=this[o];if(!this[l]){this[l]=true}if(z){B=z.call(this,B,A)}if(typeof B!="undefined"){this[q]=B;if(C&&B!==A){C.call(this,B,A)}}return this}}if(!(m in i)||k.hasOwnProperty(m)){s=k[m]||false;if(s){x=function(){return s.apply(this,arguments)}}else{x=function(){return this[q]}}k[m]=function(){var z;if(!this[l]){this[l]=true;this[t](this.config[n])}z=this[m];if("$previous" in z){z.$previous=x}else{this[m]=x}return x.apply(this,arguments)}}});h.addConfig(j,true)});c.registerPreprocessor("mixins",function(l,p,h){var j=p.mixins,m,k,n,o;delete p.mixins;Ext.Function.interceptBefore(h,"onCreated",function(){if(j instanceof Array){for(n=0,o=j.length;n<o;n++){k=j[n];m=k.prototype.mixinId||k.$className;l.mixin(m,k)}}else{for(var i in j){if(j.hasOwnProperty(i)){l.mixin(i,j[i])}}}})});Ext.extend=function(j,k,i){if(arguments.length===2&&Ext.isObject(k)){i=k;k=j;j=null}var h;if(!k){throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.")}i.extend=k;i.preprocessors=["extend","statics","inheritableStatics","mixins","config"];if(j){h=new c(j,i);h.prototype.constructor=j}else{h=new c(i)}h.prototype.override=function(n){for(var l in n){if(n.hasOwnProperty(l)){this[l]=n[l]}}};return h}}());(function(c,e,h,d,g){function a(){function i(){return this.constructor.apply(this,arguments)||null}return i}var b=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:true,namespaceParseCache:{},instantiators:[],isCreated:function(n){var m=this.existCache,l,o,k,j,p;if(this.classes[n]||m[n]){return true}j=g;p=this.parseNamespace(n);for(l=0,o=p.length;l<o;l++){k=p[l];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return false}j=j[k]}}m[n]=true;this.triggerCreated(n);return true},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(s){var u=this.createdListeners,m=this.nameCreatedListeners,n=this.maps.nameToAlternates[s],t=[s],p,r,o,q,l,k;for(p=0,r=u.length;p<r;p++){l=u[p];l.fn.call(l.scope,s)}if(n){t.push.apply(t,n)}for(p=0,r=t.length;p<r;p++){k=t[p];u=m[k];if(u){for(o=0,q=u.length;o<q;o++){l=u[o];l.fn.call(l.scope,k)}delete m[k]}}},onCreated:function(m,l,k){var j=this.createdListeners,i=this.nameCreatedListeners,n={fn:m,scope:l};if(k){if(this.isCreated(k)){m.call(l,k);return}if(!i[k]){i[k]=[]}i[k].push(n)}else{j.push(n)}},parseNamespace:function(l){var j=this.namespaceParseCache,m,o,q,k,t,s,r,n,p;if(this.enableNamespaceParseCache){if(j.hasOwnProperty(l)){return j[l]}}m=[];o=this.namespaceRewrites;q=g;k=l;for(n=0,p=o.length;n<p;n++){t=o[n];s=t.from;r=t.to;if(k===s||k.substring(0,s.length)===s){k=k.substring(s.length);if(typeof r!="string"){q=r}else{m=m.concat(r.split("."))}break}}m.push(q);m=m.concat(k.split("."));if(this.enableNamespaceParseCache){j[l]=m}return m},setNamespace:function(m,p){var k=g,q=this.parseNamespace(m),o=q.length-1,j=q[o],n,l;for(n=0;n<o;n++){l=q[n];if(typeof l!="string"){k=l}else{if(!k[l]){k[l]={}}k=k[l]}}k[j]=p;return k[j]},createNamespaces:function(){var k=g,p,m,n,l,o,q;for(n=0,o=arguments.length;n<o;n++){p=this.parseNamespace(arguments[n]);for(l=0,q=p.length;l<q;l++){m=p[l];if(typeof m!="string"){k=m}else{if(!k[m]){k[m]={}}k=k[m]}}}return k},set:function(i,m){var l=this,o=l.maps,n=o.nameToAlternates,k=l.getName(m),j;l.classes[i]=l.setNamespace(i,m);if(k&&k!==i){o.alternateToName[i]=k;j=n[k]||(n[k]=[]);j.push(i)}return this},get:function(l){var n=this.classes,j,p,k,m,o;if(n[l]){return n[l]}j=g;p=this.parseNamespace(l);for(m=0,o=p.length;m<o;m++){k=p[m];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return null}j=j[k]}}return j},setAlias:function(i,j){var l=this.maps.aliasToName,m=this.maps.nameToAliases,k;if(typeof i=="string"){k=i}else{k=this.getName(i)}if(j&&l[j]!==k){l[j]=k}if(!m[k]){m[k]=[]}if(j){Ext.Array.include(m[k],j)}return this},addNameAliasMappings:function(j){var o=this.maps.aliasToName,p=this.maps.nameToAliases,m,n,l,k;for(m in j){n=p[m]||(p[m]=[]);for(k=0;k<j[m].length;k++){l=j[m][k];if(!o[l]){o[l]=m;n.push(l)}}}return this},addNameAlternateMappings:function(m){var j=this.maps.alternateToName,p=this.maps.nameToAlternates,l,n,o,k;for(l in m){n=p[l]||(p[l]=[]);for(k=0;k<m[l].length;k++){o=m[l][k];if(!j[o]){j[o]=l;n.push(o)}}}return this},getByAlias:function(i){return this.get(this.getNameByAlias(i))},getNameByAlias:function(i){return this.maps.aliasToName[i]||""},getNameByAlternate:function(i){return this.maps.alternateToName[i]||""},getAliasesByName:function(i){return this.maps.nameToAliases[i]||[]},getName:function(i){return i&&i.$className||""},getClass:function(i){return i&&i.self||null},create:function(j,l,i){var k=a();if(typeof l=="function"){l=l(k)}l.$className=j;return new c(k,l,function(){var m=l.postprocessors||b.defaultPostprocessors,t=b.postprocessors,u=[],s,o,r,n,q,p,v;delete l.postprocessors;for(o=0,r=m.length;o<r;o++){s=m[o];if(typeof s=="string"){s=t[s];p=s.properties;if(p===true){u.push(s.fn)}else{if(p){for(n=0,q=p.length;n<q;n++){v=p[n];if(l.hasOwnProperty(v)){u.push(s.fn);break}}}}}else{u.push(s)}}l.postprocessors=u;l.createdFn=i;b.processCreate(j,this,l)})},processCreate:function(l,j,n){var m=this,i=n.postprocessors.shift(),k=n.createdFn;if(!i){if(l){m.set(l,j)}if(k){k.call(j,j)}if(l){m.triggerCreated(l)}return}if(i.call(m,l,j,n,m.processCreate)!==false){m.processCreate(l,j,n)}},createOverride:function(l,p,j){var o=this,n=p.override,k=p.requires,i=p.uses,m=function(){var q,r;if(k){r=k;k=null;Ext.Loader.require(r,m)}else{q=o.get(n);delete p.override;delete p.requires;delete p.uses;Ext.override(q,p);o.triggerCreated(l);if(i){Ext.Loader.addUsedClasses(i)}if(j){j.call(q)}}};o.existCache[l]=true;o.onCreated(m,o,n);return o},instantiateByAlias:function(){var j=arguments[0],i=h.call(arguments),k=this.getNameByAlias(j);if(!k){k=this.maps.aliasToName[j];Ext.syncRequire(k)}i[0]=k;return this.instantiate.apply(this,i)},instantiate:function(){var k=arguments[0],m=typeof k,j=h.call(arguments,1),l=k,n,i;if(m!="function"){if(m!="string"&&j.length===0){j=[k];k=k.xclass}i=this.get(k)}else{i=k}if(!i){n=this.getNameByAlias(k);if(n){k=n;i=this.get(k)}}if(!i){n=this.getNameByAlternate(k);if(n){k=n;i=this.get(k)}}if(!i){Ext.syncRequire(k);i=this.get(k)}return this.getInstantiator(j.length)(i,j)},dynInstantiate:function(j,i){i=d(i,true);i.unshift(j);return this.instantiate.apply(this,i)},getInstantiator:function(m){var l=this.instantiators,n,k,j;n=l[m];if(!n){k=m;j=[];for(k=0;k<m;k++){j.push("a["+k+"]")}n=l[m]=new Function("c","a","return new c("+j.join(",")+")")}return n},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(j,m,k,i,l){if(!i){i="last"}if(!k){k=[j]}this.postprocessors[j]={name:j,properties:k||false,fn:m};this.setDefaultPostprocessorPosition(j,i,l);return this},setDefaultPostprocessors:function(i){this.defaultPostprocessors=d(i);return this},setDefaultPostprocessorPosition:function(j,m,l){var k=this.defaultPostprocessors,i;if(typeof m=="string"){if(m==="first"){k.unshift(j);return this}else{if(m==="last"){k.push(j);return this}}m=(m==="after")?1:-1}i=Ext.Array.indexOf(k,l);if(i!==-1){Ext.Array.splice(k,Math.max(0,i+m),0,j)}return this},getNamesByExpression:function(q){var o=this.maps.nameToAliases,r=[],j,n,l,k,s,m,p;if(q.indexOf("*")!==-1){q=q.replace(/\*/g,"(.*?)");s=new RegExp("^"+q+"$");for(j in o){if(o.hasOwnProperty(j)){l=o[j];if(j.search(s)!==-1){r.push(j)}else{for(m=0,p=l.length;m<p;m++){n=l[m];if(n.search(s)!==-1){r.push(j);break}}}}}}else{k=this.getNameByAlias(q);if(k){r.push(k)}else{k=this.getNameByAlternate(q);if(k){r.push(k)}else{r.push(q)}}}return r}};b.registerPostprocessor("alias",function(l,k,o){var j=o.alias,m,n;for(m=0,n=j.length;m<n;m++){e=j[m];this.setAlias(k,e)}},["xtype","alias"]);b.registerPostprocessor("singleton",function(j,i,l,k){if(l.singleton){k.call(this,j,new i(),l)}else{return true}return false});b.registerPostprocessor("alternateClassName",function(k,j,o){var m=o.alternateClassName,l,n,p;if(!(m instanceof Array)){m=[m]}for(l=0,n=m.length;l<n;l++){p=m[l];this.set(p,j)}});Ext.apply(Ext,{create:e(b,"instantiate"),widget:function(k,j){var o=k,l,m,i,n;if(typeof o!="string"){j=k;o=j.xtype}else{j=j||{}}if(j.isComponent){return j}l="widget."+o;m=b.getNameByAlias(l);if(!m){n=true}i=b.get(m);if(n||!i){return b.instantiateByAlias(l,j)}return new i(j)},createByAlias:e(b,"instantiateByAlias"),define:function(j,k,i){if(k.override){return b.createOverride.apply(b,arguments)}return b.create.apply(b,arguments)},undefine:function(q){var l=b.classes,s=b.maps,t=s.aliasToName,u=s.nameToAliases,w=s.alternateToName,o=s.nameToAlternates,j=u[q],r=o[q],m,v,k,n;delete b.namespaceParseCache[q];delete u[q];delete o[q];delete l[q];if(j){for(n=j.length;n--;){delete t[j[n]]}}if(r){for(n=r.length;n--;){delete w[r[n]]}}m=b.parseNamespace(q);v=m.length-1;k=m[0];for(n=1;n<v;n++){k=k[m[n]];if(!k){return}}try{delete k[m[v]]}catch(p){k[m[v]]=undefined}},getClassName:e(b,"getName"),getDisplayName:function(i){if(i){if(i.displayName){return i.displayName}if(i.$name&&i.$class){return Ext.getClassName(i.$class)+"#"+i.$name}if(i.$className){return i.$className}}return"Anonymous"},getClass:e(b,"getClass"),namespace:e(b,"createNamespaces")});Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;c.registerPreprocessor("className",function(i,j){if(j.$className){i.$className=j.$className}},true,"first");c.registerPreprocessor("alias",function(u,o){var s=u.prototype,l=d(o.xtype),j=d(o.alias),v="widget.",t=v.length,p=Array.prototype.slice.call(s.xtypesChain||[]),m=Ext.merge({},s.xtypesMap||{}),n,r,q,k;for(n=0,r=j.length;n<r;n++){q=j[n];if(q.substring(0,t)===v){k=q.substring(t);Ext.Array.include(l,k)}}u.xtype=o.xtype=l[0];o.xtypes=l;for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}o.xtypesChain=p;o.xtypesMap=m;Ext.Function.interceptAfter(o,"onClassCreated",function(){var i=s.mixins,x,w;for(x in i){if(i.hasOwnProperty(x)){w=i[x];l=w.xtypes;if(l){for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}}}}});for(n=0,r=l.length;n<r;n++){k=l[n];Ext.Array.include(j,v+k)}o.alias=j},["xtype","alias"])}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global));if(Ext._alternatesMetadata){Ext.ClassManager.addNameAlternateMappings(Ext._alternatesMetadata);Ext._alternatesMetadata=null}if(Ext._aliasMetadata){Ext.ClassManager.addNameAliasMappings(Ext._aliasMetadata);Ext._aliasMetadata=null}Ext.Loader=new function(){var k=this,b=Ext.ClassManager,t=Ext.Class,e=Ext.Function.flexSetter,o=Ext.Function.alias,a=Ext.Function.pass,d=Ext.Function.defer,h=Ext.Array.erase,n=["extend","mixins","requires"],v={},m=[],c=/\/\.\//g,g=/\./g,j=0;Ext.apply(k,{isInHistory:v,history:m,config:{enabled:false,scriptChainDelay:false,disableCaching:true,disableCachingParam:"_dc",garbageCollect:false,paths:{Ext:"."},preserveScripts:true,scriptCharset:undefined},setConfig:function(y,z){if(Ext.isObject(y)&&arguments.length===1){Ext.merge(k.config,y);if("paths" in y){Ext.app.collectNamespaces(y.paths)}}else{k.config[y]=(Ext.isObject(z))?Ext.merge(k.config[y],z):z;if(y==="paths"){Ext.app.collectNamespaces(z)}}return k},getConfig:function(y){if(y){return k.config[y]}return k.config},setPath:e(function(y,z){k.config.paths[y]=z;Ext.app.namespaces[y]=true;j++;return k}),addClassPathMappings:function(z){var y;if(j==0){k.config.paths=z}else{for(y in z){k.config.paths[y]=z[y]}}j++;return k},getPath:function(y){var A="",B=k.config.paths,z=k.getPrefix(y);if(z.length>0){if(z===y){return B[z]}A=B[z];y=y.substring(z.length+1)}if(A.length>0){A+="/"}return A.replace(c,"/")+y.replace(g,"/")+".js"},getPrefix:function(z){var B=k.config.paths,A,y="";if(B.hasOwnProperty(z)){return z}for(A in B){if(B.hasOwnProperty(A)&&A+"."===z.substring(0,A.length+1)){if(A.length>y.length){y=A}}}return y},isAClassNameWithAKnownPrefix:function(y){var z=k.getPrefix(y);return z!==""&&z!==y},require:function(A,z,y,B){if(z){z.call(y)}},syncRequire:function(){},exclude:function(y){return{require:function(B,A,z){return k.require(B,A,z,y)},syncRequire:function(B,A,z){return k.syncRequire(B,A,z,y)}}},onReady:function(B,A,C,y){var z;if(C!==false&&Ext.onDocumentReady){z=B;B=function(){Ext.onDocumentReady(z,A,y)}}B.call(A)}});var q=[],r={},u={},s={},p={},w=[],x=[],i={},l=function(y,z){return z.priority-y.priority};Ext.apply(k,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:q,isClassFileLoaded:r,isFileLoaded:u,readyListeners:w,optionalRequires:x,requiresMap:i,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:s,scriptsLoading:0,syncModeEnabled:false,scriptElements:p,refreshQueue:function(){var C=q.length,z,B,y,A;if(!C&&!k.scriptsLoading){return k.triggerReady()}for(z=0;z<C;z++){B=q[z];if(B){A=B.requires;if(A.length>k.numLoadedFiles){continue}for(y=0;y<A.length;){if(b.isCreated(A[y])){h(A,y,1)}else{y++}}if(B.requires.length===0){h(q,z,1);B.callback.call(B.scope);k.refreshQueue();break}}}return k},injectScriptElement:function(y,F,C,H,A){var G=document.createElement("script"),D=false,z=k.config,E=function(){if(!D){D=true;G.onload=G.onreadystatechange=G.onerror=null;if(typeof z.scriptChainDelay=="number"){d(F,z.scriptChainDelay,H)}else{F.call(H)}k.cleanupScriptElement(G,z.preserveScripts===false,z.garbageCollect)}},B=function(I){d(C,1,H);k.cleanupScriptElement(G,z.preserveScripts===false,z.garbageCollect)};G.type="text/javascript";G.onerror=B;A=A||z.scriptCharset;if(A){G.charset=A}if("addEventListener" in G){G.onload=E}else{if("readyState" in G){G.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){E()}}}else{G.onload=E}}G.src=y;(k.documentHead||document.getElementsByTagName("head")[0]).appendChild(G);return G},removeScriptElement:function(y){if(p[y]){k.cleanupScriptElement(p[y],true,!!k.getConfig("garbageCollect"));delete p[y]}return k},cleanupScriptElement:function(A,z,B){var C;A.onload=A.onreadystatechange=A.onerror=null;if(z){Ext.removeNode(A);if(B){for(C in A){try{if(C!="src"){A[C]=null}delete A[C]}catch(y){}}}}return k},loadScript:function(H){var B=k.getConfig(),A=typeof H=="string",z=A?H:H.url,D=!A&&H.onError,E=!A&&H.onLoad,G=!A&&H.scope,F=function(){k.numPendingFiles--;k.scriptsLoading--;if(D){D.call(G,"Failed loading '"+z+"', please verify that the file exists")}if(k.numPendingFiles+k.scriptsLoading===0){k.refreshQueue()}},C=function(){k.numPendingFiles--;k.scriptsLoading--;if(E){E.call(G)}if(k.numPendingFiles+k.scriptsLoading===0){k.refreshQueue()}},y;k.isLoading=true;k.numPendingFiles++;k.scriptsLoading++;y=B.disableCaching?(z+"?"+B.disableCachingParam+"="+Ext.Date.now()):z;p[z]=k.injectScriptElement(y,C,F)},loadScriptFile:function(z,G,E,J,y){if(u[z]){return k}var B=k.getConfig(),K=z+(B.disableCaching?("?"+B.disableCachingParam+"="+Ext.Date.now()):""),A=false,I,C,H,D="";J=J||k;k.isLoading=true;if(!y){H=function(){};p[z]=k.injectScriptElement(K,G,H,J)}else{if(typeof XMLHttpRequest!="undefined"){I=new XMLHttpRequest()}else{I=new ActiveXObject("Microsoft.XMLHTTP")}try{I.open("GET",K,false);I.send(null)}catch(F){A=true}C=(I.status===1223)?204:(I.status===0&&((self.location||{}).protocol=="file:"||(self.location||{}).protocol=="ionp:"))?200:I.status;A=A||(C===0);if(A){}else{if((C>=200&&C<300)||(C===304)){if(!Ext.isIE){D="\n//@ sourceURL="+z}Ext.globalEval(I.responseText+D);G.call(J)}else{}}I=null}},syncRequire:function(){var y=k.syncModeEnabled;if(!y){k.syncModeEnabled=true}k.require.apply(k,arguments);if(!y){k.syncModeEnabled=false}k.refreshQueue()},require:function(Q,H,B,D){var J={},A={},G=[],S=[],P=[],z=[],F,R,L,K,y,E,O,N,M,I,C;if(D){D=(typeof D==="string")?[D]:D;for(N=0,I=D.length;N<I;N++){y=D[N];if(typeof y=="string"&&y.length>0){G=b.getNamesByExpression(y);for(M=0,C=G.length;M<C;M++){J[G[M]]=true}}}}Q=(typeof Q==="string")?[Q]:(Q?Q:[]);if(H){if(H.length>0){F=function(){var U=[],T,V;for(T=0,V=z.length;T<V;T++){U.push(b.get(z[T]))}return H.apply(this,U)}}else{F=H}}else{F=Ext.emptyFn}B=B||Ext.global;for(N=0,I=Q.length;N<I;N++){K=Q[N];if(typeof K=="string"&&K.length>0){S=b.getNamesByExpression(K);C=S.length;for(M=0;M<C;M++){O=S[M];if(J[O]!==true){z.push(O);if(!b.isCreated(O)&&!A[O]){A[O]=true;P.push(O)}}}}}if(P.length>0){if(!k.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((P.length>1)?"es":"")+": "+P.join(", "))}}else{F.call(B);return k}R=k.syncModeEnabled;if(!R){q.push({requires:P.slice(),callback:F,scope:B})}I=P.length;for(N=0;N<I;N++){E=P[N];L=k.getPath(E);if(R&&r.hasOwnProperty(E)){if(!r[E]){k.numPendingFiles--;k.removeScriptElement(L);delete r[E]}}if(!r.hasOwnProperty(E)){r[E]=false;s[E]=L;k.numPendingFiles++;k.loadScriptFile(L,a(k.onFileLoaded,[E,L],k),a(k.onFileLoadError,[E,L],k),k,R)}}if(R){F.call(B);if(I===1){return b.get(E)}}return k},onFileLoaded:function(A,z){var y=r[A];k.numLoadedFiles++;r[A]=true;u[z]=true;if(!y){k.numPendingFiles--}if(k.numPendingFiles===0){k.refreshQueue()}},onFileLoadError:function(A,z,y,B){k.numPendingFiles--;k.hasFileLoadError=true},addUsedClasses:function(A){var y,z,B;if(A){A=(typeof A=="string")?[A]:A;for(z=0,B=A.length;z<B;z++){y=A[z];if(typeof y=="string"&&!Ext.Array.contains(x,y)){x.push(y)}}}return k},triggerReady:function(){var y,z=x;if(k.isLoading){k.isLoading=false;if(z.length!==0){z=z.slice();x.length=0;k.require(z,k.triggerReady,k);return k}}Ext.Array.sort(w,l);while(w.length&&!k.isLoading){y=w.shift();y.fn.call(y.scope)}return k},onReady:function(B,A,C,y){var z;if(C!==false&&Ext.onDocumentReady){z=B;B=function(){Ext.onDocumentReady(z,A,y)}}if(!k.isLoading){B.call(A)}else{w.push({fn:B,scope:A,priority:(y&&y.priority)||0})}},historyPush:function(y){if(y&&r.hasOwnProperty(y)&&!v[y]){v[y]=true;m.push(y)}return k}});Ext.disableCacheBuster=function(z,A){var y=new Date();y.setTime(y.getTime()+(z?10*365:-1)*24*60*60*1000);y=y.toGMTString();document.cookie="ext-cache=1; expires="+y+"; path="+(A||"/")};Ext.require=o(k,"require");Ext.syncRequire=o(k,"syncRequire");Ext.exclude=o(k,"exclude");Ext.onReady=function(A,z,y){k.onReady(A,z,true,y)};t.registerPreprocessor("loader",function(O,C,N,M){var J=this,H=[],y,I=b.getName(O),B,A,G,F,L,E,z,K,D;for(B=0,G=n.length;B<G;B++){E=n[B];if(C.hasOwnProperty(E)){z=C[E];if(typeof z=="string"){H.push(z)}else{if(z instanceof Array){for(A=0,F=z.length;A<F;A++){L=z[A];if(typeof L=="string"){H.push(L)}}}else{if(typeof z!="function"){for(A in z){if(z.hasOwnProperty(A)){L=z[A];if(typeof L=="string"){H.push(L)}}}}}}}}if(H.length===0){return}k.require(H,function(){for(B=0,G=n.length;B<G;B++){E=n[B];if(C.hasOwnProperty(E)){z=C[E];if(typeof z=="string"){C[E]=b.get(z)}else{if(z instanceof Array){for(A=0,F=z.length;A<F;A++){L=z[A];if(typeof L=="string"){C[E][A]=b.get(L)}}}else{if(typeof z!="function"){for(var P in z){if(z.hasOwnProperty(P)){L=z[P];if(typeof L=="string"){C[E][P]=b.get(L)}}}}}}}}M.call(J,O,C,N)});return false},true,"after","className");b.registerPostprocessor("uses",function(A,z,B){var y=B.uses;if(y){k.addUsedClasses(y)}});b.onCreated(k.historyPush)}();if(Ext._classPathMetadata){Ext.Loader.addClassPathMappings(Ext._classPathMetadata);Ext._classPathMetadata=null}(function(){var a=document.getElementsByTagName("script"),b=a[a.length-1],d=b.src,c=d.substring(0,d.lastIndexOf("/")+1),e=Ext.Loader;e.setConfig({enabled:true,disableCaching:true,paths:{Ext:c+"src"}})})();Ext._endTime=new Date().getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()}Ext.Error=Ext.extend(Error,{statics:{ignore:false,raise:function(a){a=a||{};if(Ext.isString(a)){a={msg:a}}var c=this.raise.caller,b;if(c){if(c.$name){a.sourceMethod=c.$name}if(c.$owner){a.sourceClass=c.$owner.$className}}if(Ext.Error.handle(a)!==true){b=Ext.Error.prototype.toString.call(a);Ext.log({msg:b,level:"error",dump:a,stack:true});throw new Ext.Error(a)}},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(a){if(Ext.isString(a)){a={msg:a}}var b=this;Ext.apply(b,a);b.message=b.message||b.msg},toString:function(){var c=this,b=c.sourceClass?c.sourceClass:"",a=c.sourceMethod?"."+c.sourceMethod+"(): ":"",d=c.msg||"(No description provided)";return b+a+d}});Ext.deprecated=function(a){return Ext.emptyFn};Ext.JSON=(new (function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative},pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o,newline){if(o===null||o===undefined){return"null"}else{if(Ext.isDate(o)){return Ext.JSON.encodeDate(o)}else{if(Ext.isString(o)){return Ext.JSON.encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{if(o.toJSON){return o.toJSON()}else{if(Ext.isArray(o)){return encodeArray(o,newline)}else{if(Ext.isObject(o)){return encodeObject(o,newline)}else{if(typeof o==="function"){return"null"}}}}}}}}}return"undefined"},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\v":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArray=function(o,newline){var a=["[",""],len=o.length,i;for(i=0;i<len;i+=1){a.push(Ext.JSON.encodeValue(o[i]),",")}a[a.length-1]="]";return a.join("")},encodeObject=function(o,newline){var a=["{",""],i,val;for(i in o){val=o[i];if(!useHasOwn||o.hasOwnProperty(i)){if(typeof val==="function"||val===undefined){continue}a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(val),",")}}a[a.length-1]="}";return a.join("")};me.encodeString=encodeString;me.encodeValue=doEncode;me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};me.encode=function(o){if(!encodingFunction){encodingFunction=isNative()?JSON.stringify:me.encodeValue}return encodingFunction(o)};me.decode=function(json,safe){if(!decodingFunction){decodingFunction=isNative()?JSON.parse:doDecode}try{return decodingFunction(json)}catch(e){if(safe===true){return null}Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}})());Ext.encode=Ext.JSON.encode;Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1000,windowId:"ext-window",documentId:"ext-document",isReady:false,enableGarbageCollector:true,enableListenerCollection:true,rootHierarchyState:{},addCacheEntry:function(g,c,e){e=e||c.dom;var a=Ext.cache,b=g||(c&&c.id)||e.id,d=a[b]||(a[b]={data:{},events:{},dom:e,skipGarbageCollection:!!(e.getElementById||e.navigator)});if(c){c.$cache=d;d.el=c}return d},updateCacheEntry:function(a,b){a.dom=b;if(a.el){a.el.dom=b}return a},id:function(a,c){var b=this,d="";a=Ext.getDom(a,true)||{};if(a===document){a.id=b.documentId}else{if(a===window){a.id=b.windowId}}if(!a.id){if(b.isSandboxed){d=Ext.sandboxName.toLowerCase()+"-"}a.id=d+(c||"ext-gen")+(++Ext.idSeed)}return a.id},escapeId:(function(){var c=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,d=/([\W]{1})/g,b=/^(\d)/g,a=function(h,g){return"\\"+g},e=function(h,g){return"\\00"+g.charCodeAt(0).toString(16)+" "};return function(g){return c.test(g)?g:g.replace(d,a).replace(b,e)}}()),getBody:(function(){var a;return function(){return a||(a=Ext.get(document.body))}}()),getHead:(function(){var a;return function(){return a||(a=Ext.get(document.getElementsByTagName("head")[0]))}}()),getDoc:(function(){var a;return function(){return a||(a=Ext.get(document))}}()),getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b<c;b++){a=arguments[b];if(a){if(Ext.isArray(a)){this.destroy.apply(this,a)}else{if(a.isStore){a.destroyStore()}else{if(Ext.isFunction(a.destroy)){a.destroy()}else{if(a.dom){a.remove()}}}}}}},callback:function(g,e,c,b){var d,a;if(Ext.isFunction(g)){d=g}else{if(e&&Ext.isString(g)){d=e[g]}}if(d){c=c||[];e=e||window;if(b){Ext.defer(d,b,e,c)}else{a=d.apply(e,c)}}return a},resolveMethod:function(b,a){if(Ext.isFunction(b)){return b}return a[b]},htmlEncode:function(a){return Ext.String.htmlEncode(a)},htmlDecode:function(a){return Ext.String.htmlDecode(a)},urlAppend:function(a,b){return Ext.String.urlAppend(a,b)}});Ext.ns=Ext.namespace;window.undefined=window.undefined;(function(){var p=function(e){return e.test(Ext.userAgent)},u=document.compatMode=="CSS1Compat",G=function(S,R){var e;return(S&&(e=R.exec(Ext.userAgent)))?parseFloat(e[1]):0},q=document.documentMode,a=p(/opera/),w=a&&p(/version\/10\.5/),L=p(/\bchrome\b/),A=p(/webkit/),c=!L&&p(/safari/),J=c&&p(/applewebkit\/4/),H=c&&p(/version\/3/),E=c&&p(/version\/4/),k=c&&p(/version\/5\.0/),D=c&&p(/version\/5/),j=!a&&p(/msie/),K=j&&((p(/msie 7/)&&q!=8&&q!=9&&q!=10)||q==7),I=j&&((p(/msie 8/)&&q!=7&&q!=9&&q!=10)||q==8),F=j&&((p(/msie 9/)&&q!=7&&q!=8&&q!=10)||q==9),h=j&&((p(/msie 10/)&&q!=7&&q!=8&&q!=9)||q==10),N=j&&p(/msie 6/),b=!A&&p(/gecko/),Q=b&&p(/rv:1\.9/),P=b&&p(/rv:2\.0/),O=b&&p(/rv:5\./),s=b&&p(/rv:10\./),z=Q&&p(/rv:1\.9\.0/),x=Q&&p(/rv:1\.9\.1/),v=Q&&p(/rv:1\.9\.2/),g=p(/windows|win32/),C=p(/macintosh|mac os x/),y=p(/linux/),m=null,n=G(true,/\bchrome\/(\d+\.\d+)/),i=G(true,/\bfirefox\/(\d+\.\d+)/),o=G(j,/msie (\d+\.\d+)/),t=G(a,/version\/(\d+\.\d+)/),d=G(c,/version\/(\d+\.\d+)/),B=G(A,/webkit\/(\d+\.\d+)/),r=/^https/i.test(window.location.protocol),l;try{document.execCommand("BackgroundImageCache",false,true)}catch(M){}l=function(){};l.info=l.warn=l.error=Ext.emptyFn;Ext.setVersion("extjs","4.2.1.883");Ext.apply(Ext,{SSL_SECURE_URL:r&&j?"javascript:''":"about:blank",plainTableCls:Ext.buildSettings.baseCSSPrefix+"table-plain",plainListCls:Ext.buildSettings.baseCSSPrefix+"list-plain",enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,getDom:function(S,R){if(!S||!document){return null}if(S.dom){return S.dom}else{if(typeof S=="string"){var T=Ext.getElementById(S);if(T&&j&&R){if(S==T.getAttribute("id")){return T}else{return null}}return T}else{return S}}},removeNode:N||K||I?(function(){var e;return function(T){if(T&&T.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(T):Ext.EventManager.removeAll(T);var R=Ext.cache,S=T.id;if(R[S]){delete R[S].dom;delete R[S]}if(I&&T.parentNode){T.parentNode.removeChild(T)}e=e||document.createElement("div");e.appendChild(T);e.innerHTML=""}}}()):function(S){if(S&&S.parentNode&&S.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(S):Ext.EventManager.removeAll(S);var e=Ext.cache,R=S.id;if(e[R]){delete e[R].dom;delete e[R]}S.parentNode.removeChild(S)}},isStrict:u,isIEQuirks:j&&(!u&&(N||K||I||F)),isOpera:a,isOpera10_5:w,isWebKit:A,isChrome:L,isSafari:c,isSafari3:H,isSafari4:E,isSafari5:D,isSafari5_0:k,isSafari2:J,isIE:j,isIE6:N,isIE7:K,isIE7m:N||K,isIE7p:j&&!N,isIE8:I,isIE8m:N||K||I,isIE8p:j&&!(N||K),isIE9:F,isIE9m:N||K||I||F,isIE9p:j&&!(N||K||I),isIE10:h,isIE10m:N||K||I||F||h,isIE10p:j&&!(N||K||I||F),isGecko:b,isGecko3:Q,isGecko4:P,isGecko5:O,isGecko10:s,isFF3_0:z,isFF3_5:x,isFF3_6:v,isFF4:4<=i&&i<5,isFF5:5<=i&&i<6,isFF10:10<=i&&i<11,isLinux:y,isWindows:g,isMac:C,chromeVersion:n,firefoxVersion:i,ieVersion:o,operaVersion:t,safariVersion:d,webKitVersion:B,isSecure:r,BLANK_IMAGE_URL:(N||K)?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(S,e,R){return Ext.isEmpty(S,R)?e:S},escapeRe:function(e){return e.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(U){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(U)})}else{var R={},T,e,S;for(e in U){if((T=e.split("@"))[1]){S=T[0];if(!R[S]){R[S]=Ext.select(S)}R[S].on(T[1],U[e])}}R=null}},getScrollbarSize:function(R){if(!Ext.isReady){return{}}if(R||!m){var e=document.body,S=document.createElement("div");S.style.width=S.style.height="100px";S.style.overflow="scroll";S.style.position="absolute";e.appendChild(S);m={width:S.offsetWidth-S.clientWidth,height:S.offsetHeight-S.clientHeight};e.removeChild(S)}return m},getScrollBarWidth:function(R){var e=Ext.getScrollbarSize(R);return e.width+2},copyTo:function(R,T,V,U){if(typeof V=="string"){V=V.split(/[,;\s]/)}var W,S=V?V.length:0,e;for(W=0;W<S;W++){e=V[W];if(U||T.hasOwnProperty(e)){R[e]=T[e]}}return R},destroyMembers:function(T){for(var S=1,R=arguments,e=R.length;S<e;S++){Ext.destroy(T[R[S]]);delete T[R[S]]}},log:l,partition:function(e,U){var V=[[],[]],R,T,S=e.length;for(R=0;R<S;R++){T=e[R];V[(U&&U(T,R,e))||(!U&&T)?0:1].push(T)}return V},invoke:function(e,U){var W=[],V=Array.prototype.slice.call(arguments,2),R,T,S=e.length;for(R=0;R<S;R++){T=e[R];if(T&&typeof T[U]=="function"){W.push(T[U].apply(T,V))}else{W.push(undefined)}}return W},zip:function(){var X=Ext.partition(arguments,function(Y){return typeof Y!="function"}),U=X[0],W=X[1][0],e=Ext.max(Ext.pluck(U,"length")),T=[],V,S,R;for(V=0;V<e;V++){T[V]=[];if(W){T[V]=W.apply(W,Ext.pluck(U,V))}else{for(S=0,R=U.length;S<R;S++){T[V].push(U[S][V])}}}return T},toSentence:function(R,e){var U=R.length,T,S;if(U<=1){return R[0]}else{T=R.slice(0,U-1);S=R[U-1];return Ext.util.Format.format("{0} {1} {2}",T.join(", "),e||"and",S)}},setGlyphFontFamily:function(e){Ext._glyphFontFamily=e},useShims:N})}());Ext.application=function(a){var c,d,b;if(typeof a==="string"){Ext.require(a,function(){c=Ext.ClassManager.get(a)})}else{Ext.Loader.setPath(a.name,a.appFolder||"app");if(d=a.paths){for(b in d){if(d.hasOwnProperty(b)){Ext.Loader.setPath(b,d[b])}}}a["paths processed"]=true;Ext.define(a.name+".$application",Ext.apply({extend:"Ext.app.Application"},a),function(){c=this})}Ext.onReady(function(){Ext.app.Application.instance=new c()})};(function(){Ext.ns("Ext.util");var g=Ext.util.Format={},c=/<\/?[^>]+>/gi,i=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,j=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(k){return k!==undefined?k:""},defaultValue:function(l,k){return l!==undefined&&l!==""?l:k},substr:"ab".substr(-1)!="b"?function(l,n,k){var m=String(l);return(n<0)?m.substr(Math.max(m.length+n,0),k):m.substr(n,k)}:function(l,m,k){return String(l).substr(m,k)},lowercase:function(k){return String(k).toLowerCase()},uppercase:function(k){return String(k).toUpperCase()},usMoney:function(k){return g.currency(k,"$",2)},currency:function(m,o,l,k){var q="",p=",0",n=0;m=m-0;if(m<0){m=-m;q="-"}l=Ext.isDefined(l)?l:g.currencyPrecision;p+=(l>0?".":"");for(;n<l;n++){p+="0"}m=g.number(m,p);if((k||g.currencyAtEnd)===true){return Ext.String.format("{0}{1}{2}",q,m,o||g.currencySign)}else{return Ext.String.format("{0}{1}{2}",q,o||g.currencySign,m)}},date:function(k,l){if(!k){return""}if(!Ext.isDate(k)){k=new Date(Date.parse(k))}return Ext.Date.dateFormat(k,l||Ext.Date.defaultFormat)},dateRenderer:function(k){return function(l){return g.date(l,k)}},stripTags:function(k){return !k?k:String(k).replace(c,"")},stripScripts:function(k){return !k?k:String(k).replace(i,"")},fileSize:(function(){var k=1024,l=1048576,m=1073741824;return function(o){var n;if(o<k){if(o===1){n="1 byte"}else{n=o+" bytes"}}else{if(o<l){n=(Math.round(((o*10)/k))/10)+" KB"}else{if(o<m){n=(Math.round(((o*10)/l))/10)+" MB"}else{n=(Math.round(((o*10)/m))/10)+" GB"}}}return n}})(),math:(function(){var k={};return function(m,l){if(!k[l]){k[l]=Ext.functionFactory("v","return v "+l+";")}return k[l](m)}}()),round:function(m,l){var k=Number(m);if(typeof l=="number"){l=Math.pow(10,l);k=Math.round(m*l)/l}return k},number:function(s,n){if(!n){return s}var m=d[n];if(!m){var p=n,x=g.thousandSeparator,t=g.decimalSeparator,l,q,r,o=0,u,w,k;if(n.substr(n.length-2)=="/i"){if(!a){a=new RegExp("[^\\d\\"+g.decimalSeparator+"]","g")}n=n.substr(0,n.length-2);l=n.indexOf(x)!=-1;q=n.replace(a,"").split(t)}else{l=n.indexOf(",")!=-1;q=n.replace(j,"").split(".")}r=n.replace(h,"");if(q.length>2){}else{if(q.length===2){o=q[1].length;w=b.test(q[1])}}k=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(l?",thousandSeparator,thousands=[],j,n,i":"")+(r?',formatString="'+n+'",formatPattern=/[\\d,\\.#]+/':"")+(w?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+o+");"];if(l){if(o){k[k.length]='parts=fnum.split(".");';k[k.length]="fnum=parts[0];"}k[k.length]="if(v>=1000) {";k[k.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i<j;i+=n){if(i!==0){n=3;}thousands[thousands.length]=fnum.substr(i,n);}fnum=thousands.join(thousandSeparator);}";if(o){k[k.length]="fnum += utilFormat.decimalSeparator+parts[1];"}}else{if(o){k[k.length]='if(utilFormat.decimalSeparator!=="."){parts=fnum.split(".");fnum=parts[0]+utilFormat.decimalSeparator+parts[1];}'}}if(w){k[k.length]='fnum=fnum.replace(trailingZeroes,"");'}k[k.length]='if(neg&&fnum!=="'+(o?"0."+Ext.String.repeat("0",o):"0")+'")fnum="-"+fnum;';k[k.length]="return ";if(r){k[k.length]="formatString.replace(formatPattern, fnum);"}else{k[k.length]="fnum;"}k[k.length]="};";m=d[p]=Ext.functionFactory("Ext",k.join(""))(Ext)}return m(s)},numberRenderer:function(k){return function(l){return g.number(l,k)}},attributes:function(l){if(typeof l==="object"){var k=[],m;for(m in l){k.push(m,'="',m==="style"?Ext.DomHelper.generateStyles(l[m]):Ext.htmlEncode(l[m]),'"')}l=k.join("")}return l||""},plural:function(k,l,m){return k+" "+(k==1?l:(m?m:l+"s"))},nl2br:function(k){return Ext.isEmpty(k)?"":k.replace(e,"<br/>")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(l){l=l||0;if(typeof l==="number"){return{top:l,right:l,bottom:l,left:l}}var m=l.split(" "),k=m.length;if(k==1){m[1]=m[2]=m[3]=m[0]}else{if(k==2){m[2]=m[0];m[3]=m[1]}else{if(k==3){m[3]=m[1]}}}return{top:parseInt(m[0],10)||0,right:parseInt(m[1],10)||0,bottom:parseInt(m[2],10)||0,left:parseInt(m[3],10)||0}},escapeRegex:function(k){return k.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=Ext.Date.now(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;h<k||h<(k=e.length);++h){b=e[h];if(!(g=b.stopped)){c=b.taskRunTime+b.interval;if(c<=a){d=1;try{d=b.run.apply(b.scope||b,b.args||[++b.taskRunCount])}catch(j){try{if(b.onError){d=b.onError.call(b.scope||b,b,j)}}catch(l){}}b.taskRunTime=a;if(d===false||b.taskRunCount===b.repeat){m.stop(b);g=true}else{g=b.stopped;c=a+b.interval}}if(!g&&b.duration&&b.duration<=(a-b.taskStartTime)){m.stop(b);g=true}}if(g){b.pending=false;if(!o){o=e.slice(0,h)}}else{if(o){o.push(b)}if(n>c){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,Ext.Date.now())}if(m.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e<d.interval){e=d.interval}d.timerId=setTimeout(d.timerFn,e);d.nextExpires=b}}},1,0,0,0,0,0,[Ext.util,"TaskRunner"],function(){var b=this,a=b.prototype;a.destroy=a.stopAll;Ext.util.TaskManager=Ext.TaskManager=new b();b.Task=new Ext.Class({isTask:true,stopped:true,fireOnStart:false,constructor:function(c){Ext.apply(this,c)},restart:function(c){if(c!==undefined){this.interval=c}this.manager.start(this)},start:function(c){if(this.stopped){this.restart(c)}},stop:function(){this.manager.stop(this)}});a=b.Task.prototype;a.destroy=a.stop}));(Ext.cmd.derive("Ext.util.TaskManager",Ext.util.TaskRunner,{alternateClassName:["Ext.TaskManager"],singleton:true},0,0,0,0,0,0,[Ext.util,"TaskManager",Ext,"TaskManager"],0));(Ext.cmd.derive("Ext.perf.Accumulator",Ext.Base,(function(){var c=null,h=Ext.global.chrome,d,b=function(){b=function(){return new Date().getTime()};var l,m;if(Ext.isChrome&&h&&h.Interval){l=new h.Interval();l.start();b=function(){return l.microseconds()/1000}}else{if(window.ActiveXObject){try{m=new ActiveXObject("SenchaToolbox.Toolbox");Ext.senchaToolbox=m;b=function(){return m.milliseconds}}catch(n){}}else{if(Date.now){b=Date.now}}}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=b;return b()};function i(m,l){m.sum+=l;m.min=Math.min(m.min,l);m.max=Math.max(m.max,l)}function e(o){var m=o?o:(b()-this.time),n=this,l=n.accum;++l.count;if(!--l.depth){i(l.total,m)}i(l.pure,m-n.childTime);c=n.parent;if(c){++c.accum.childCount;c.childTime+=m}}function a(){return{min:Number.MAX_VALUE,max:0,sum:0}}function j(m,l){return function(){var o=m.enter(),n=l.apply(this,arguments);o.leave();return n}}function k(l){return Math.round(l*100)/100}function g(n,m,l,p){var o={avg:0,min:p.min,max:p.max,sum:0};if(n){l=l||0;o.sum=p.sum-m*l;o.avg=o.sum/n}return o}return{constructor:function(l){var m=this;m.count=m.childCount=m.depth=m.maxDepth=0;m.pure=a();m.total=a();m.name=l},statics:{getTimestamp:b},format:function(l){if(!d){d=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(n){return Math.round(n*100)/100}})}var m=this.getData(l);m.name=this.name;m.pure.type="Pure";m.total.type="Total";m.times=[m.pure,m.total];return d.apply(m)},getData:function(l){var m=this;return{count:m.count,childCount:m.childCount,depth:m.maxDepth,pure:g(m.count,m.childCount,l,m.pure),total:g(m.count,m.childCount,l,m.total)}},enter:function(){var l=this,m={accum:l,leave:e,childTime:0,parent:c};++l.depth;if(l.maxDepth<l.depth){l.maxDepth=l.depth}c=m;m.time=b();return m},monitor:function(n,m,l){var o=this.enter();if(l){n.apply(m,l)}else{n.call(m)}o.leave()},report:function(){Ext.log(this.format())},tap:function(t,v){var u=this,o=typeof v=="string"?[v]:v,s,w,q,p,n,m,l,r;r=function(){if(typeof t=="string"){s=Ext.global;p=t.split(".");for(q=0,n=p.length;q<n;++q){s=s[p[q]]}}else{s=t}for(q=0,n=o.length;q<n;++q){m=o[q];w=m.charAt(0)=="!";if(w){m=m.substring(1)}else{w=!(m in s.prototype)}l=w?s:s.prototype;l[m]=j(u,l[m])}};Ext.ClassManager.onCreated(r,u,t);return u}}}()),1,0,0,0,0,0,[Ext.perf,"Accumulator"],function(){Ext.perf.getTimestamp=this.getTimestamp}));(Ext.cmd.derive("Ext.perf.Monitor",Ext.Base,{singleton:true,alternateClassName:"Ext.Perf",constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var b=new Ext.perf.Accumulator("$"),g=b.total,c=Ext.perf.Accumulator.getTimestamp,e=0,h,a,d;d=c();do{h=b.enter();h.leave();++e}while(g.sum<100);a=c();return(a-d)/e},get:function(b){var c=this,a=c.accumulatorsByName[b];if(!a){c.accumulatorsByName[b]=a=new Ext.perf.Accumulator(b);c.accumulators.push(a)}return a},enter:function(a){return this.get(a).enter()},monitor:function(a,c,b){this.get(a).monitor(c,b)},report:function(){var c=this,b=c.accumulators,a=c.calibrate();b.sort(function(e,d){return(e.name<d.name)?-1:((d.name<e.name)?1:0)});c.updateGC();Ext.log("Calibration: "+Math.round(a*100)/100+" msec/sample");Ext.each(b,function(d){Ext.log(d.format(a))})},getData:function(c){var b={},a=this.accumulators;Ext.each(a,function(d){if(c||d.count){b[d.name]=d.getData()}});return b},reset:function(){Ext.each(this.accumulators,function(a){var b=a;b.count=b.childCount=b.depth=b.maxDepth=0;b.pure={min:Number.MAX_VALUE,max:0,sum:0};b.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var a=this.accumulatorsByName.GC,b=Ext.senchaToolbox,c;if(a){a.count=b.garbageCollectionCounter||0;if(a.count){c=a.pure;a.total.sum=c.sum=b.garbageCollectionMilliseconds;c.min=c.max=c.sum/a.count;c=a.total;c.min=c.max=c.sum/a.count}}},watchGC:function(){Ext.perf.getTimestamp();var a=Ext.senchaToolbox;if(a){this.get("GC");a.watchGarbageCollector(false)}},setup:function(c){if(!c){c={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}}this.currentConfig=c;var d,g,b,e,a;for(d in c){if(c.hasOwnProperty(d)){g=c[d];b=Ext.Perf.get(d);for(e in g){if(g.hasOwnProperty(e)){a=g[e];b.tap(e,a)}}}}this.watchGC()}},1,0,0,0,0,0,[Ext.perf,"Monitor",Ext,"Perf"],0));Ext.is={init:function(b){var c=this.platforms,e=c.length,d,a;b=b||window.navigator;for(d=0;d<e;d++){a=c[d];this[a.identity]=a.regex.test(b[a.property])}this.Desktop=this.Mac||this.Windows||(this.Linux&&!this.Android);this.Tablet=this.iPad;this.Phone=!this.Desktop&&!this.Tablet;this.iOS=this.iPhone||this.iPad||this.iPod;this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]};Ext.is.init();(function(){var a=function(g,e){var d=g.ownerDocument.defaultView,h=(d?d.getComputedStyle(g,null):g.currentStyle)||g.style;return h[e]},c={"IE6-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE6-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0],"IE7-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE7-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0],"IE8-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE8-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1],"IE9-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE9-strict":[0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1],"IE10-quirks":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1],"IE10-strict":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1]};function b(){var d=Ext.isIE6?"IE6":Ext.isIE7?"IE7":Ext.isIE8?"IE8":Ext.isIE9?"IE9":Ext.isIE10?"IE10":"";return d?d+(Ext.isStrict?"-strict":"-quirks"):""}Ext.supports={init:function(){var k=this,o=document,i=k.toRun||k.tests,h=i.length,d=h&&Ext.isReady&&o.createElement("div"),e=[],l=b(),j,g,m;if(d){d.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join("");o.body.appendChild(d)}g=c[l];while(h--){j=i[h];m=g&&g[h];if(m!==undefined){k[j.identity]=m}else{if(d||j.early){k[j.identity]=j.fn.call(k,o,d)}else{e.push(j)}}}if(d){o.body.removeChild(d)}k.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(k,m){var j=["webkit","Moz","o","ms","khtml"],l="TransitionEnd",d=[j[0]+l,"transitionend",j[2]+l,j[3]+l,j[4]+l],h=j.length,g=0,e=false;for(;g<h;g++){if(a(m,j[g]+"TransitionProperty")){Ext.supports.CSS3Prefix=j[g];Ext.supports.CSS3TransitionEnd=d[g];e=true;break}}return e}},{identity:"RightMargin",fn:function(e,g){var d=e.defaultView;return !(d&&d.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px")}},{identity:"DisplayChangeInputSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<534.24}},{identity:"TransparentColor",fn:function(e,g,d){d=e.defaultView;return !(d&&d.getComputedStyle(g.lastChild,null).backgroundColor!="transparent")}},{identity:"ComputedStyle",fn:function(e,g,d){d=e.defaultView;return d&&d.getComputedStyle}},{identity:"Svg",fn:function(d){return !!d.createElementNS&&!!d.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(d){return !!d.createElement("canvas").getContext}},{identity:"Vml",fn:function(e){var g=e.createElement("div");g.innerHTML="<!--[if vml]><br/><br/><![endif]-->";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(j,d){var l="background-image:",k="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",i="linear-gradient(left top, black, white)",h="-moz-"+i,e="-ms-"+i,g="-o-"+i,m=[l+k,l+i,l+h,l+e,l+g];d.style.cssText=m.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,j){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d<e.length;d++){if(document.body.style[e[d]]!==undefined){return true}}return g}},{identity:"GeoLocation",fn:function(){return(typeof navigator!="undefined"&&"geolocation" in navigator)||(typeof google!="undefined"&&typeof google.gears!="undefined")}},{identity:"MouseEnterLeave",fn:function(d,e){return("onmouseenter" in e&&"onmouseleave" in e)}},{identity:"MouseWheel",fn:function(d,e){return("onmousewheel" in e)}},{identity:"Opacity",fn:function(d,e){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){return false}e.firstChild.style.cssText="opacity:0.73";return e.firstChild.style.opacity=="0.73"}},{identity:"Placeholder",fn:function(d){return"placeholder" in d.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)&&Ext.isIE10m}},{identity:"BoundingClientRect",fn:function(d,e){return Ext.isFunction(e.getBoundingClientRect)}},{identity:"RotatedBoundingClientRect",fn:function(){var d=document.body,e=false,h=document.createElement("div"),g=h.style;if(h.getBoundingClientRect){g.WebkitTransform=g.MozTransform=g.OTransform=g.transform="rotate(90deg)";g.width="100px";g.height="30px";d.appendChild(h);e=h.getBoundingClientRect().height!==100;d.removeChild(h)}return e}},{identity:"IncludePaddingInWidthCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetWidth==210}},{identity:"IncludePaddingInHeightCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetHeight==210}},{identity:"ArraySort",fn:function(){var d=[1,2,3,4,5].sort(function(){return 0});return d[0]===1&&d[1]===2&&d[2]===3&&d[3]===4&&d[4]===5}},{identity:"Range",fn:function(){return !!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var d=Ext.supports.Range?document.createRange():false;return d&&!!d.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['<div style="display:table;height:100%;">','<div style="width:51px;"></div>',"</div>"].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,i){i.innerHTML='<div id="b1" style="height:100px;width:100px;direction:rtl;position:relative;overflow:scroll"><div id="b2" style="position:relative;width:100%;height:20px;"></div><div id="b3" style="position:absolute;width:20px;height:20px;top:0px;right:0px"></div></div>';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='<span style="display:inline-block;zoom:1;height:60px;width:60px;"></span>';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(j,l,k,i){if(h){g.cancel()}a=j||a,e=l||e;d=k||d;b=i||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(p,r,t){var n=this,o,j,q,e,s,m,h,l,k,g;r=r||n.observable;if(!n.isListening(p,r)){j=n.createListener(p,r,t);if(n.firing){n.listeners=n.listeners.slice(0)}o=n.listeners;l=h=o.length;q=t&&t.priority;s=n._highestNegativePriorityIndex;m=(s!==undefined);if(q){e=(q<0);if(!e||m){for(k=(e?s:0);k<h;k++){g=o[k].o?o[k].o.priority||0:0;if(g<q){l=k;break}}}else{n._highestNegativePriorityIndex=l}}else{if(m){l=s}}if(!e&&l<=s){n._highestNegativePriorityIndex++}if(l===h){n.listeners[h]=j}else{a(n.listeners,l,[j])}}},createListener:function(h,g,k){g=g||this.observable;var i=this,j={fn:h,scope:g,ev:i},e=h;if(k){j.o=k;if(k.single){e=i.createSingle(e,j,k,g)}if(k.target){e=i.createTargeted(e,j,k,g)}if(k.delay){e=i.createDelayed(e,j,k,g)}if(k.buffer){e=i.createBuffered(e,j,k,g)}}j.fireFn=e;return j},findListener:function(k,j){var h=this.listeners,e=h.length,l,g;while(e--){l=h[e];if(l){g=l.scope;if(l.fn==k&&(g==(j||this.observable))){return e}}}return -1},isListening:function(g,e){return this.findListener(g,e)!==-1},removeListener:function(i,h){var j=this,g,m,l,e;g=j.findListener(i,h);if(g!=-1){m=j.listeners[g];l=j._highestNegativePriorityIndex;if(j.firing){j.listeners=j.listeners.slice(0)}if(m.task){m.task.cancel();delete m.task}e=m.tasks&&m.tasks.length;if(e){while(e--){m.tasks[e].cancel()}delete m.tasks}j.listeners.splice(g,1);if(l){if(g<l){j._highestNegativePriorityIndex--}else{if(g===l&&g===j.listeners.length){delete j._highestNegativePriorityIndex}}}return true}return false},clearListeners:function(){var g=this.listeners,e=g.length;while(e--){this.removeListener(g[e].fn,g[e].scope)}},suspend:function(){this.suspended+=1},resume:function(){if(this.suspended){this.suspended--}},fire:function(){var l=this,j=l.listeners,k=j.length,h,g,m,e;if(!l.suspended&&k>0){l.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h<k;h++){m=j[h];if(m.o){g[e]=m.o}if(m&&m.fireFn.apply(m.scope||l.observable,g)===false){return(l.firing=false)}}}l.firing=false;return true},createTargeted:function(g,h,i,e){return function(){if(i.target===arguments[0]){g.apply(e,arguments)}}},createBuffered:function(g,h,i,e){h.task=new c();return function(){h.task.delay(i.buffer,g,e,b(arguments))}},createDelayed:function(g,h,i,e){return function(){var j=new c();if(!h.tasks){h.tasks=[]}h.tasks.push(j);j.delay(i.delay||10,g,e,b(arguments))}},createSingle:function(g,h,i,e){return function(){var j=h.ev;if(j.removeListener(h.fn,e)&&j.observable){j.observable.hasListeners[j.name]--}return g.apply(e,arguments)}}}},1,0,0,0,0,0,[Ext.util,"Event"],0));Ext.EventManager=new function(){var b=this,h=document,g=window,e=/\\/g,c=Ext.baseCSSPrefix,a=!Ext.isIE9&&"addEventListener" in h,i,d=function(){var o=h.body||h.getElementsByTagName("body")[0],k=[c+"body"],j=[],l=Ext.supports.CSS3LinearGradient,n=Ext.supports.CSS3BorderRadius,m;if(!o){return false}m=o.parentNode;function p(q){k.push(c+q)}if(Ext.isIE&&Ext.isIE9m){p("ie");if(Ext.isIE6){p("ie6")}else{p("ie7p");if(Ext.isIE7){p("ie7")}else{p("ie8p");if(Ext.isIE8){p("ie8")}else{p("ie9p");if(Ext.isIE9){p("ie9")}}}}if(Ext.isIE7m){p("ie7m")}if(Ext.isIE8m){p("ie8m")}if(Ext.isIE9m){p("ie9m")}if(Ext.isIE7||Ext.isIE8){p("ie78")}}if(Ext.isIE10){p("ie10")}if(Ext.isGecko){p("gecko");if(Ext.isGecko3){p("gecko3")}if(Ext.isGecko4){p("gecko4")}if(Ext.isGecko5){p("gecko5")}}if(Ext.isOpera){p("opera")}if(Ext.isWebKit){p("webkit")}if(Ext.isSafari){p("safari");if(Ext.isSafari2){p("safari2")}if(Ext.isSafari3){p("safari3")}if(Ext.isSafari4){p("safari4")}if(Ext.isSafari5){p("safari5")}if(Ext.isSafari5_0){p("safari5_0")}}if(Ext.isChrome){p("chrome")}if(Ext.isMac){p("mac")}if(Ext.isLinux){p("linux")}if(!n){p("nbr")}if(!l){p("nlg")}if(m){if(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)){Ext.isBorderBox=false}else{Ext.isBorderBox=true}if(!Ext.isBorderBox){j.push(c+"content-box")}if(Ext.isStrict){j.push(c+"strict")}else{j.push(c+"quirks")}Ext.fly(m,"_internal").addCls(j)}Ext.fly(o,"_internal").addCls(k);return true};Ext.apply(b,{hasBoundOnReady:false,hasFiredReady:false,deferReadyEvent:1,onReadyChain:[],readyEvent:(function(){i=new Ext.util.Event();i.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||new Date().getTime();i.self.prototype.fire.apply(i,arguments);Ext._afterReadytime=new Date().getTime()};return i}()),idleEvent:new Ext.util.Event(),isReadyPaused:function(){return(/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady)},bindReadyEvent:function(){if(b.hasBoundOnReady){return}if(h.readyState=="complete"){b.onReadyEvent({type:h.readyState||"body"})}else{h.addEventListener("DOMContentLoaded",b.onReadyEvent,false);g.addEventListener("load",b.onReadyEvent,false);b.hasBoundOnReady=true}},onReadyEvent:function(j){if(j&&j.type){b.onReadyChain.push(j.type)}if(b.hasBoundOnReady){h.removeEventListener("DOMContentLoaded",b.onReadyEvent,false);g.removeEventListener("load",b.onReadyEvent,false)}if(!Ext.isReady){b.fireDocReady()}},fireDocReady:function(){if(!Ext.isReady){Ext._readyTime=new Date().getTime();Ext.isReady=true;Ext.supports.init();b.onWindowUnload();i.onReadyChain=b.onReadyChain;if(Ext.isNumber(b.deferReadyEvent)){Ext.Function.defer(b.fireReadyEvent,b.deferReadyEvent);b.hasDocReadyTimer=true}else{b.fireReadyEvent()}}},fireReadyEvent:function(){b.hasDocReadyTimer=false;b.isFiring=true;while(i.listeners.length&&!b.isReadyPaused()){i.fire()}b.isFiring=false;b.hasFiredReady=true;Ext.EventManager.idleEvent.fire()},onDocumentReady:function(l,k,j){j=j||{};j.single=true;i.addListener(l,k,j);if(!(b.isFiring||b.hasDocReadyTimer)){if(Ext.isReady){b.fireReadyEvent()}else{b.bindReadyEvent()}}},stoppedMouseDownEvent:new Ext.util.Event(),propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(j){var k;j=Ext.getDom(j);if(j===h||j===g){k=j===h?Ext.documentId:Ext.windowId}else{k=Ext.id(j)}if(!Ext.cache[k]){Ext.addCacheEntry(k,null,j)}return k},prepareListenerConfig:function(m,k,o){var p=b.propRe,l,n,j;for(l in k){if(k.hasOwnProperty(l)){if(!p.test(l)){n=k[l];if(typeof n=="function"){j=[m,l,n,k.scope,k]}else{j=[m,l,n.fn,n.scope,n]}if(o){b.removeListener.apply(b,j)}else{b.addListener.apply(b,j)}}}}},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(j,k){if(b.mouseEnterLeaveRe.test(j)&&!Ext.supports.MouseEnterLeave){if(k){k=Ext.Function.createInterceptor(k,b.contains)}j=j=="mouseenter"?"mouseover":"mouseout"}else{if(j=="mousewheel"&&!Ext.supports.MouseWheel&&!Ext.isOpera){j="DOMMouseScroll"}}return{eventName:j,fn:k}},contains:function(k){k=k.browserEvent||k;var j=k.currentTarget,l=b.getRelatedTarget(k);if(j&&j.firstChild){while(l){if(l===j){return false}l=l.parentNode;if(l&&(l.nodeType!=1)){l=null}}}return true},addListener:function(n,p,s,u,v){if(typeof p!=="string"){b.prepareListenerConfig(n,p);return}var m=n.dom||Ext.getDom(n),q,r,l,j,k,o,t;if(typeof s==="string"){s=Ext.resolveMethod(s,u||n)}v=v||{};r=b.normalizeEvent(p,s);l=b.createListenerWrap(m,p,r.fn,u,v);j=b.getEventListenerCache(n.dom?n:m,p);p=r.eventName;q=a||(Ext.isIE9&&!m.attachEvent);if(!q){k=b.normalizeId(m);if(k){o=Ext.cache[k][p];if(o&&o.firing){j=b.cloneEventListenerCache(m,p)}}}t=!!v.capture;j.push({fn:s,wrap:l,scope:u,capture:t});if(!q){if(j.length===1){k=b.normalizeId(m,true);s=Ext.Function.bind(b.handleSingleEvent,b,[k,p],true);Ext.cache[k][p]={firing:false,fn:s};m.attachEvent("on"+p,s)}}else{m.addEventListener(p,l,t)}if(m==h&&p=="mousedown"){b.stoppedMouseDownEvent.addListener(l)}},normalizeId:function(k,j){var l;if(k===document){l=Ext.documentId}else{if(k===window){l=Ext.windowId}else{l=k.id}}if(!l&&j){l=b.getId(k)}return l},handleSingleEvent:function(o,p,l){var m=b.getEventListenerCache(p,l),k=Ext.cache[p][l],j,n;if(k.firing){return}k.firing=true;for(n=0,j=m.length;n<j;++n){m[n].wrap(o)}k.firing=false},removeListener:function(t,v,w,y){if(typeof v!=="string"){b.prepareListenerConfig(t,v,true);return}var r=Ext.getDom(t),m,n=t.dom?t:Ext.get(r),k=b.getEventListenerCache(n,v),x=b.normalizeEvent(v).eventName,s=k.length,q,u,p,o,l;if(!r){return}p=a||(Ext.isIE9&&!r.detachEvent);if(typeof w==="string"){w=Ext.resolveMethod(w,y||t)}while(s--){o=k[s];if(o&&(!w||o.fn==w)&&(!y||o.scope===y)){l=o.wrap;if(l.task){clearTimeout(l.task);delete l.task}q=l.tasks&&l.tasks.length;if(q){while(q--){clearTimeout(l.tasks[q])}delete l.tasks}if(!p){m=b.normalizeId(r,true);u=Ext.cache[m][x];if(u&&u.firing){k=b.cloneEventListenerCache(r,x)}if(k.length===1){w=u.fn;delete Ext.cache[m][x];r.detachEvent("on"+x,w)}}else{r.removeEventListener(x,l,o.capture)}if(l&&r==h&&v=="mousedown"){b.stoppedMouseDownEvent.removeListener(l)}Ext.Array.erase(k,s,1)}}},removeAll:function(m){var n=(typeof m==="string")?m:m.id,k,l,j;if(n&&(k=Ext.cache[n])){l=k.events;for(j in l){if(l.hasOwnProperty(j)){b.removeListener(m,j)}}k.events={}}},purgeElement:function(m,k){var o=Ext.getDom(m),l=0,j,n;if(k){b.removeListener(m,k)}else{b.removeAll(m)}if(o&&o.childNodes){n=o.childNodes;for(j=n.length;l<j;l++){b.purgeElement(n[l],k)}}},createListenerWrap:function(q,k,n,m,j){j=j||{};var o,p,l=function(s,r){if(!p){o=["if(!"+Ext.name+") {return;}"];if(j.buffer||j.delay||j.freezeEvent){if(j.freezeEvent){o.push("e = X.EventObject.setEvent(e);")}o.push("e = new X.EventObjectImpl(e, "+(j.freezeEvent?"true":"false")+");")}else{o.push("e = X.EventObject.setEvent(e);")}if(j.delegate){o.push('var result, t = e.getTarget("'+(j.delegate+"").replace(e,"\\\\")+'", this);');o.push("if(!t) {return;}")}else{o.push("var t = e.target, result;")}if(j.target){o.push("if(e.target !== options.target) {return;}")}if(j.stopEvent){o.push("e.stopEvent();")}else{if(j.preventDefault){o.push("e.preventDefault();")}if(j.stopPropagation){o.push("e.stopPropagation();")}}if(j.normalized===false){o.push("e = e.browserEvent;")}if(j.buffer){o.push("(wrap.task && clearTimeout(wrap.task));");o.push("wrap.task = setTimeout(function() {")}if(j.delay){o.push("wrap.tasks = wrap.tasks || [];");o.push("wrap.tasks.push(setTimeout(function() {")}o.push("result = fn.call(scope || dom, e, t, options);");if(j.single){o.push("evtMgr.removeListener(dom, ename, fn, scope);")}if(k!=="mousemove"&&k!=="unload"){o.push("if (evtMgr.idleEvent.listeners.length) {");o.push("evtMgr.idleEvent.fire();");o.push("}")}if(j.delay){o.push("}, "+j.delay+"));")}if(j.buffer){o.push("}, "+j.buffer+");")}o.push("return result;");p=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",o.join("\n"))}return p.call(q,s,j,n,m,k,q,l,r,Ext,b)};return l},getEventCache:function(l){var k,j,m;if(!l){return[]}if(l.$cache){k=l.$cache}else{if(typeof l==="string"){m=l}else{m=b.getId(l)}k=Ext.cache[m]}j=k.events||(k.events={});return j},getEventListenerCache:function(l,j){var k=b.getEventCache(l);return k[j]||(k[j]=[])},cloneEventListenerCache:function(m,j){var l=b.getEventCache(m),k;if(l[j]){k=l[j].slice(0)}else{k=[]}l[j]=k;return k},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(j){b.stopPropagation(j);b.preventDefault(j)},stopPropagation:function(j){j=j.browserEvent||j;if(j.stopPropagation){j.stopPropagation()}else{j.cancelBubble=true}},preventDefault:function(j){j=j.browserEvent||j;if(j.preventDefault){j.preventDefault()}else{j.returnValue=false;try{if(j.ctrlKey||j.keyCode>111&&j.keyCode<124){j.keyCode=-1}}catch(k){}}},getRelatedTarget:function(j){j=j.browserEvent||j;var k=j.relatedTarget;if(!k){if(b.mouseLeaveRe.test(j.type)){k=j.toElement}else{if(b.mouseEnterRe.test(j.type)){k=j.fromElement}}}return b.resolveTextNode(k)},getPageX:function(j){return b.getPageXY(j)[0]},getPageY:function(j){return b.getPageXY(j)[1]},getPageXY:function(l){l=l.browserEvent||l;var k=l.pageX,n=l.pageY,m=h.documentElement,j=h.body;if(!k&&k!==0){k=l.clientX+(m&&m.scrollLeft||j&&j.scrollLeft||0)-(m&&m.clientLeft||j&&j.clientLeft||0);n=l.clientY+(m&&m.scrollTop||j&&j.scrollTop||0)-(m&&m.clientTop||j&&j.clientTop||0)}return[k,n]},getTarget:function(j){j=j.browserEvent||j;return b.resolveTextNode(j.target||j.srcElement)},resolveTextNode:Ext.isGecko?function(k){if(k){var j=HTMLElement.prototype.toString.call(k);if(j!=="[xpconnect wrapped native prototype]"&&j!=="[object XULElement]"){return k.nodeType==3?k.parentNode:k}}}:function(j){return j&&j.nodeType==3?j.parentNode:j},curWidth:0,curHeight:0,onWindowResize:function(m,l,k){var j=b.resizeEvent;if(!j){b.resizeEvent=j=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}j.addListener(m,l,k)},fireResize:function(){var j=Ext.Element.getViewWidth(),k=Ext.Element.getViewHeight();if(b.curHeight!=k||b.curWidth!=j){b.curHeight=k;b.curWidth=j;b.resizeEvent.fire(j,k)}},removeResizeListener:function(l,k){var j=b.resizeEvent;if(j){j.removeListener(l,k)}},onWindowUnload:function(m,l,k){var j=b.unloadEvent;if(!j){b.unloadEvent=j=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(m){j.addListener(m,l,k)}},fireUnload:function(){try{h=g=undefined;var o,k,m,l,j;b.unloadEvent.fire();if(Ext.isGecko3){o=Ext.ComponentQuery.query("gridview");k=0;m=o.length;for(;k<m;k++){o[k].scrollToTop()}}j=Ext.cache;for(l in j){if(j.hasOwnProperty(l)){b.removeAll(l)}}}catch(n){}},removeUnloadListener:function(l,k){var j=b.unloadEvent;if(j){j.removeListener(l,k)}},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var j=true;try{document.documentElement.doScroll("left")}catch(k){j=false}if(j&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return j},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var j=document.readyState;if(b.readyStatesRe.test(j)){b.onReadyEvent({type:j})}},bindReadyEvent:function(){var j=true;if(b.hasBoundOnReady){return}try{j=window.frameElement===undefined}catch(k){j=false}if(!j||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(j){if(j&&j.type){b.onReadyChain.push(j.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(l,k,j){Ext.Loader.onReady(l,k,true,j)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(k,i,h){var j=function(l,m){return i.apply(h,[l].concat(m))};this.captureArgs(k,j,h)},captureArgs:function(j,i,h){j.fireEventArgs=Ext.Function.createInterceptor(j.fireEventArgs,i,h)},observe:function(h,i){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(i)){h.on(i)}}return h},prepareClass:function(j,i){if(!j.HasListeners){var k=function(){},h=j.superclass.HasListeners||(i&&i.HasListeners)||a.HasListeners;j.prototype.HasListeners=j.HasListeners=k;k.prototype=j.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var i=this;Ext.apply(i,h);if(!i.hasListeners){i.hasListeners=new i.HasListeners()}i.events=i.events||{};if(i.listeners){i.on(i.listeners);i.listeners=null}if(i.bubbleEvents){i.enableBubble(i.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(o,k,m,p,q,j){var l=this,n=l.managedListeners=l.managedListeners||[],i,h;if(typeof k!=="string"){h=arguments.length>4?q:k;q=k;for(k in q){if(q.hasOwnProperty(k)){i=q[k];if(!l.eventOptionsRe.test(k)){l.addManagedListener(o,k,i.fn||i,i.scope||q.scope||p,i.fn?i:h,true)}}}if(q&&q.destroyable){return new b(l,o,q)}}else{if(typeof m==="string"){p=p||l;m=Ext.resolveMethod(m,p)}n.push({item:o,ename:k,fn:m,scope:p,options:q});o.on(k,m,p,q);if(!j&&q&&q.destroyable){return new b(l,o,k,m,p)}}},removeManagedListener:function(q,l,o,r){var n=this,s,j,p,h,m,k;if(typeof l!=="string"){s=l;for(l in s){if(s.hasOwnProperty(l)){j=s[l];if(!n.eventOptionsRe.test(l)){n.removeManagedListener(q,l,j.fn||j,j.scope||s.scope||r)}}}}else{p=n.managedListeners?n.managedListeners.slice():[];if(typeof o==="string"){r=r||n;o=Ext.resolveMethod(o,r)}for(m=0,h=p.length;m<h;m++){n.removeManagedListenerItem(false,p[m],q,l,o,r)}}},fireEvent:function(h){return this.fireEventArgs(h,g.call(arguments,1))},fireEventArgs:function(h,j){h=h.toLowerCase();var m=this,k=m.events,l=k&&k[h],i=true;if(l&&m.hasListeners[h]){i=m.continueFireEvent(h,j||d,l.bubble)}return i},continueFireEvent:function(j,l,i){var n=this,h,m,k=true;do{if(n.eventsSuspended){if((h=n.eventQueue)){h.push([j,l,i])}return k}else{m=n.events[j];if(m&&m!==true){if((k=m.fire.apply(m,l))===false){break}}}}while(i&&(n=n.getBubbleParent()));return k},getBubbleParent:function(){var i=this,h=i.getBubbleTarget&&i.getBubbleTarget();if(h&&h.isObservable){return h}return null},addListener:function(k,m,l,j){var o=this,i,n,h=0;if(typeof k!=="string"){j=k;for(k in j){if(j.hasOwnProperty(k)){i=j[k];if(!o.eventOptionsRe.test(k)){o.addListener(k,i.fn||i,i.scope||j.scope,i.fn?i:j)}}}if(j&&j.destroyable){return new b(o,j)}}else{k=k.toLowerCase();n=o.events[k];if(n&&n.isEvent){h=n.listeners.length}else{o.events[k]=n=new c(o,k)}if(typeof m==="string"){l=l||o;m=Ext.resolveMethod(m,l)}n.addListener(m,l,j);if(n.listeners.length!==h){o.hasListeners._incr_(k)}if(j&&j.destroyable){return new b(o,k,m,l,j)}}},removeListener:function(j,l,k){var n=this,i,m,h;if(typeof j!=="string"){h=j;for(j in h){if(h.hasOwnProperty(j)){i=h[j];if(!n.eventOptionsRe.test(j)){n.removeListener(j,i.fn||i,i.scope||h.scope)}}}}else{j=j.toLowerCase();m=n.events[j];if(m&&m.isEvent){if(typeof l==="string"){k=k||n;l=Ext.resolveMethod(l,k)}if(m.removeListener(l,k)){n.hasListeners._decr_(j)}}}},clearListeners:function(){var j=this.events,h=this.hasListeners,k,i;for(i in j){if(j.hasOwnProperty(i)){k=j[i];if(k.isEvent){delete h[i];k.clearListeners()}}}this.clearManagedListeners()},clearManagedListeners:function(){var j=this.managedListeners||[],k=0,h=j.length;for(;k<h;k++){this.removeManagedListenerItem(true,j[k])}this.managedListeners=[]},removeManagedListenerItem:function(i,h,m,j,l,k){if(i||(h.item===m&&h.ename===j&&(!l||h.fn===l)&&(!k||h.scope===k))){h.item.un(h.ename,h.fn,h.scope);if(!i){Ext.Array.remove(this.managedListeners,h)}}},addEvents:function(n){var m=this,l=m.events||(m.events={}),h,j,k;if(typeof n=="string"){for(j=arguments,k=j.length;k--;){h=j[k];if(!l[h]){l[h]=true}}}else{Ext.applyIf(m.events,n)}},hasListener:function(h){return !!this.hasListeners[h.toLowerCase()]},suspendEvents:function(h){this.eventsSuspended+=1;if(h&&!this.eventQueue){this.eventQueue=[]}},suspendEvent:function(j){var h=arguments.length,k,l;for(k=0;k<h;k++){l=this.events[arguments[k]];if(l&&l.suspend){l.suspend()}}},resumeEvent:function(){var h=arguments.length,j,k;for(j=0;j<h;j++){k=this.events[arguments[j]];if(k&&k.resume){k.resume()}}},resumeEvents:function(){var h=this,k=h.eventQueue,j,i;if(h.eventsSuspended&&!--h.eventsSuspended){delete h.eventQueue;if(k){j=k.length;for(i=0;i<j;i++){h.continueFireEvent.apply(h,k[i])}}}},relayEvents:function(j,l,o){var n=this,h=l.length,k=0,m,p={};for(;k<h;k++){m=l[k];p[m]=n.createRelayer(o?o+m:m)}n.mon(j,p,null,null,undefined);return new b(n,j,p)},createRelayer:function(h,i){var j=this;return function(){return j.fireEventArgs.call(j,h,i?g.apply(arguments,i):arguments)}},enableBubble:function(p){if(p){var n=this,o=(typeof p=="string")?arguments:p,m=o.length,k=n.events,j,l,h;for(h=0;h<m;++h){j=o[h].toLowerCase();l=k[j];if(!l||typeof l=="boolean"){k[j]=l=new c(n,j)}n.hasListeners._incr_(j);l.bubble=true}}}}},1,0,0,0,0,0,[Ext.util,"Observable"],function(){var b=this,e=b.prototype,c=function(){},g=function(h){if(!h.HasListeners){var i=h.prototype;b.prepareClass(h,this);h.onExtended(function(j){b.prepareClass(j)});if(i.onClassMixedIn){Ext.override(h,{onClassMixedIn:function(j){g.call(this,j);this.callParent(arguments)}})}else{i.onClassMixedIn=function(j){g.call(this,j)}}}},a;c.prototype={_decr_:function(h){if(!--this[h]){delete this[h]}},_incr_:function(h){if(this.hasOwnProperty(h)){++this[h]}else{this[h]=1}}};e.HasListeners=b.HasListeners=c;b.createAlias({on:"addListener",un:"removeListener",mon:"addManagedListener",mun:"removeManagedListener"});b.observeClass=b.observe;Ext.globalEvents=a=new b({events:{idle:Ext.EventManager.idleEvent,ready:Ext.EventManager.readyEvent}});Ext.on=function(){return a.addListener.apply(a,arguments)};Ext.un=function(){return a.removeListener.apply(a,arguments)};function d(n){var m=(this.methodEvents=this.methodEvents||{})[n],j,i,k,l=this,h;if(!m){this.methodEvents[n]=m={};m.originalFn=this[n];m.methodName=n;m.before=[];m.after=[];h=function(q,p,o){if((i=q.apply(p||l,o))!==undefined){if(typeof i=="object"){if(i.returnValue!==undefined){j=i.returnValue}else{j=i}k=!!i.cancel}else{if(i===false){k=true}else{j=i}}}};this[n]=function(){var q=Array.prototype.slice.call(arguments,0),p,r,o;j=i=undefined;k=false;for(r=0,o=m.before.length;r<o;r++){p=m.before[r];h(p.fn,p.scope,q);if(k){return j}}if((i=m.originalFn.apply(l,q))!==undefined){j=i}for(r=0,o=m.after.length;r<o;r++){p=m.after[r];h(p.fn,p.scope,q);if(k){return j}}return j}}return m}Ext.apply(e,{onClassMixedIn:g,beforeMethod:function(j,i,h){d.call(this,j).before.push({fn:i,scope:h})},afterMethod:function(j,i,h){d.call(this,j).after.push({fn:i,scope:h})},removeMethodListener:function(n,l,k){var m=this.getMethodEvent(n),j,h;for(j=0,h=m.before.length;j<h;j++){if(m.before[j].fn==l&&m.before[j].scope==k){Ext.Array.erase(m.before,j,1);return}}for(j=0,h=m.after.length;j<h;j++){if(m.after[j].fn==l&&m.after[j].scope==k){Ext.Array.erase(m.after,j,1);return}}},toggleEventLogging:function(h){Ext.util.Observable[h?"capture":"releaseCapture"](this,function(i){if(Ext.isDefined(Ext.global.console)){Ext.global.console.log(i,arguments)}})}})}));(Ext.cmd.derive("Ext.EventObjectImpl",Ext.Base,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,WHEEL_SCALE:(function(){var a;if(Ext.isGecko){a=3}else{if(Ext.isMac){if(Ext.isSafari&&Ext.webKitVersion>=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(k,i,h,g){var j=k.createEvent("HTMLEvents");j.initEvent(i,h,g);return j},createMouseEvent:function(u,s,m,l,o,k,i,j,g,r,q,n,p){var h=u.createEvent("MouseEvents"),t=u.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(s,m,l,t,o,k,i,k,i,j,g,r,q,n,p)}else{h=u.createEvent("UIEvents");h.initEvent(s,m,l);h.view=t;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.metaKey=q;h.shiftKey=r;h.button=n;h.relatedTarget=p}return h},createUIEvent:function(m,k,i,h,j){var l=m.createEvent("UIEvents"),g=m.defaultView||window;l.initUIEvent(k,i,h,g,j);return l},fireEvent:function(i,g,h){i.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(k,i,h,g){var j=k.createEventObject();j.bubbles=h;j.cancelable=g;return j},createMouseEvent:function(t,s,m,l,o,k,i,j,g,r,q,n,p){var h=t.createEventObject();h.bubbles=m;h.cancelable=l;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.shiftKey=r;h.metaKey=q;h.button=c[n]||n;h.relatedTarget=p;return h},createUIEvent:function(l,j,h,g,i){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},fireEvent:function(i,g,h){i.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createHtmlEvent(i,h,g);d.fireEvent(m,i,l)}});function b(i,h){var g=(i!="mousemove");return function(m,j){var l=j.getXY(),k=d.createMouseEvent(m.ownerDocument,i,true,g,h,l[0],l[1],j.ctrlKey,j.altKey,j.shiftKey,j.metaKey,j.button,j.relatedTarget);d.fireEvent(m,i,k)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createUIEvent(m.ownerDocument,i,h,g,1);d.fireEvent(m,i,l)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(j){var i=this,h=e[i.type]||a,g=j?(j.dom||j):i.getTarget();g=d.fixTarget(g);h(g,i)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g<c;g++){if(typeof k[g]=="string"){if(typeof k[g][0]=="@"){d=b.getAttributeNode(k[g].substring(1));h.push(d)}else{d=b.querySelectorAll(k[g]);for(e=0,a=d.length;e<a;e++){h.push(d[e])}}}}return h},selectNode:function(b,a){return this.select(b,a)[0]},is:function(a,b){if(typeof a=="string"){a=document.getElementById(a)}return this.select(b).indexOf(a)!==-1}},0,0,0,0,0,0,[Ext.dom,"AbstractQuery"],0));(Ext.cmd.derive("Ext.dom.AbstractHelper",Ext.Base,{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/^(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,styleSepRe:/\s*(?::|;)\s*/,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:(function(){var c=/([a-z])([A-Z])/g,b={};function a(d,g,e){return g+"-"+e.toLowerCase()}return function(d){return b[d]||(b[d]=d.replace(c,a))}}()),generateMarkup:function(j,b){var h=this,g=typeof j,e,a,k,d,c;if(g=="string"||g=="number"){b.push(j)}else{if(Ext.isArray(j)){for(d=0;d<j.length;d++){if(j[d]){h.generateMarkup(j[d],b)}}}else{k=j.tag||"div";b.push("<",k);for(e in j){if(j.hasOwnProperty(e)){a=j[e];if(!h.confRe.test(e)){if(typeof a=="object"){b.push(" ",e,'="');h.generateStyles(a,b).push('"')}else{b.push(" ",h.attributeTransform[e]||e,'="',a,'"')}}}}if(h.emptyTags.test(k)){b.push("/>")}else{b.push(">");if((a=j.tpl)){a.applyOut(j.tplData,b)}if((a=j.html)){b.push(a)}if((a=j.cn||j.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[k]||(c[k]="</"+k+">"))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b<a;){c.setStyle(d[b++],d[b++])}}else{if(Ext.isObject(d)){c.setStyle(d)}}}},insertHtml:function(c,g,d){var h={},a,b,i,e;c=c.toLowerCase();h.beforebegin=["BeforeBegin","previousSibling"];h.afterend=["AfterEnd","nextSibling"];b=g.ownerDocument.createRange();a="setStart"+(this.endRe.test(c)?"After":"Before");if(h[c]){b[a](g);i=b.createContextualFragment(d);g.parentNode.insertBefore(i,c=="beforebegin"?g:g.nextSibling);return g[(c=="beforebegin"?"previous":"next")+"Sibling"]}else{e=(c=="afterbegin"?"first":"last")+"Child";if(g.firstChild){b[a](g[e]);i=b.createContextualFragment(d);if(c=="afterbegin"){g.insertBefore(i,g.firstChild)}else{g.appendChild(i)}}else{g.innerHTML=d}return g[e]}throw'Illegal insertion point -> "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(k){var h=Ext.supports,i=h.DisplayChangeInputSelectionBug,j=h.DisplayChangeTextAreaSelectionBug,l,e,m,g;if(i||j){l=c.activeElement||b;e=l&&l.tagName;if((j&&e=="TEXTAREA")||(i&&e=="INPUT"&&l.type=="text")){if(Ext.dom.Element.isAncestor(k,l)){m=l.selectionStart;g=l.selectionEnd;if(Ext.isNumber(m)&&Ext.isNumber(g)){return d(l,m,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(i){var j=i.elements||(document.forms[i]||Ext.getDom(i)).elements,t=false,s=encodeURIComponent,m="",l=j.length,n,g,r,v,u,p,k,q,h;for(p=0;p<l;p++){n=j[p];g=n.name;r=n.type;v=n.options;if(!n.disabled&&g){if(/select-(one|multiple)/i.test(r)){q=v.length;for(k=0;k<q;k++){h=v[k];if(h.selected){u=h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified;m+=Ext.String.format("{0}={1}&",s(g),s(u?h.value:h.text))}}}else{if(!(/file|undefined|reset|button/i.test(r))){if(!(/radio|checkbox/i.test(r)&&!n.checked)&&!(r=="submit"&&t)){m+=s(g)+"="+s(n.value)+"&";t=/submit/i.test(r)}}}}}return m.substr(0,m.length-1)}})});Ext.define("Ext.dom.AbstractElement_insertion",{override:"Ext.dom.AbstractElement",appendChild:function(d,c){var g=this,i,b,h,a;if(d.nodeType||d.dom||typeof d=="string"){d=Ext.getDom(d);g.dom.appendChild(d);return !c?Ext.get(d):d}else{if(d.length){i=Ext.fly(document.createDocumentFragment(),"_internal");b=d.length;Ext.DomHelper.useDom=true;for(h=0;h<b;h++){i.appendChild(d[h],c)}Ext.DomHelper.useDom=a;g.dom.appendChild(i.dom);return c?i.dom:i}else{return g.createChild(d,null,c)}}},appendTo:function(a){Ext.getDom(a).appendChild(this.dom);return this},insertBefore:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a);return this},insertAfter:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a.nextSibling);return this},insertFirst:function(b,a){b=b||{};if(b.nodeType||b.dom||typeof b=="string"){b=Ext.getDom(b);this.dom.insertBefore(b,this.dom.firstChild);return !a?Ext.get(b):b}else{return this.createChild(b,this.dom.firstChild,a)}},insertSibling:function(b,g,j){var i=this,k=Ext.core.DomHelper,l=k.useDom,m=(g||"before").toLowerCase()=="after",d,a,c,h;if(Ext.isArray(b)){a=Ext.fly(document.createDocumentFragment(),"_internal");c=b.length;k.useDom=true;for(h=0;h<c;h++){d=a.appendChild(b[h],j)}k.useDom=l;i.dom.parentNode.insertBefore(a.dom,m?i.dom.nextSibling:i.dom);return d}b=b||{};if(b.nodeType||b.dom){d=i.dom.parentNode.insertBefore(Ext.getDom(b),m?i.dom.nextSibling:i.dom);if(!j){d=Ext.get(d)}}else{if(m&&!i.dom.nextSibling){d=k.append(i.dom.parentNode,b,!j)}else{d=k[m?"insertAfter":"insertBefore"](i.dom,b,!j)}}return d},replace:function(a){a=Ext.get(a);this.insertBefore(a);a.remove();return this},replaceWith:function(a){var b=this;if(a.nodeType||a.dom||typeof a=="string"){a=Ext.get(a);b.dom.parentNode.insertBefore(a.dom,b.dom)}else{a=Ext.core.DomHelper.insertBefore(b.dom,a)}delete Ext.cache[b.id];Ext.removeNode(b.dom);b.id=Ext.id(b.dom=a);Ext.dom.AbstractElement.addToCache(b.isFlyweight?new Ext.dom.AbstractElement(b.dom):b);return b},createChild:function(b,a,c){b=b||{tag:"div"};if(a){return Ext.core.DomHelper.insertBefore(a,b,c!==true)}else{return Ext.core.DomHelper.append(this.dom,b,c!==true)}},wrap:function(b,c,a){var e=Ext.core.DomHelper.insertBefore(this.dom,b||{tag:"div"},true),d=e;if(a){d=Ext.DomQuery.selectNode(a,e.dom)}d.appendChild(this.dom);return c?e.dom:e},insertHtml:function(b,c,a){var d=Ext.core.DomHelper.insertHtml(b,this.dom,c);return a?Ext.get(d):d}});Ext.define("Ext.dom.AbstractElement_style",{override:"Ext.dom.AbstractElement"},function(){var d=this,m=/\w/g,q=/\s+/,c=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,j=Ext.supports.ClassList,e="padding",i="margin",a="border",r="-left",b="-right",o="-top",k="-bottom",p="-width",l={l:a+r+p,r:a+b+p,t:a+o+p,b:a+k+p},g={l:e+r,r:e+b,t:e+o,b:e+k},n={l:i+r,r:i+b,t:i+o,b:i+k},h=new d.Fly();Ext.override(d,{styleHooks:{},addStyles:function(z,y){var u=0,x=(z||"").match(m),w,s=x.length,v,t=[];if(s==1){u=Math.abs(parseFloat(this.getStyle(y[x[0]]))||0)}else{if(s){for(w=0;w<s;w++){v=x[w];t.push(y[v])}t=this.getStyle(t);for(w=0;w<s;w++){v=x[w];u+=Math.abs(parseFloat(t[y[v]])||0)}}}return u},addCls:(function(){var t=function(z){var A=this,w=A.dom,u=A.trimRe,B=z,v,C,x,y,D;if(typeof(z)=="string"){z=z.replace(u,"").split(q)}if(w&&z&&!!(y=z.length)){if(!w.className){w.className=z.join(" ")}else{v=w.classList;if(v){for(x=0;x<y;++x){D=z[x];if(D){if(!v.contains(D)){if(C){C.push(D)}else{C=w.className.replace(u,"");C=C?[C,D]:[D]}}}}if(C){w.className=C.join(" ")}}else{s(B)}}}return A},s=function(v){var w=this,x=w.dom,u;if(x&&v&&v.length){u=Ext.Element.mergeClsList(x.className,v);if(u.changed){x.className=u.join(" ")}}return w};return j?t:s})(),removeCls:function(u){var v=this,x=v.dom,w,s,t;if(typeof(u)=="string"){u=u.replace(v.trimRe,"").split(q)}if(x&&x.className&&u&&!!(s=u.length)){w=x.classList;if(s===1&&w){if(u[0]){w.remove(u[0])}}else{t=Ext.Element.removeCls(x.className,u);if(t.changed){x.className=t.join(" ")}}}return v},radioCls:function(w){var x=this.dom.parentNode.childNodes,t,u,s;w=Ext.isArray(w)?w:[w];for(u=0,s=x.length;u<s;u++){t=x[u];if(t&&t.nodeType==1){h.attach(t).removeCls(w)}}return this.addCls(w)},toggleCls:(function(){var s=function(u){var v=this,x=v.dom,w;if(x){u=u.replace(v.trimRe,"");if(u){w=x.classList;if(w){w.toggle(u)}else{t(u)}}}return v},t=function(u){return this.hasCls(u)?this.removeCls(u):this.addCls(u)};return j?s:t})(),hasCls:(function(){var s=function(v){var x=this.dom,u=false,w;if(x&&v){w=x.classList;if(w){u=w.contains(v)}else{u=t(v)}}return u},t=function(u){var v=this.dom;return v?u&&(" "+v.className+" ").indexOf(" "+u+" ")!==-1:false};return j?s:t})(),replaceCls:function(t,s){return this.removeCls(t).addCls(s)},isStyle:function(s,t){return this.getStyle(s)==t},getStyle:function(E,z){var A=this,v=A.dom,H=typeof E!="string",F=A.styleHooks,t=E,B=t,y=1,x,G,D,C,u,s,w;if(H){D={};t=B[0];w=0;if(!(y=B.length)){return D}}if(!v||v.documentElement){return D||""}x=v.style;if(z){s=x}else{s=v.ownerDocument.defaultView.getComputedStyle(v,null);if(!s){z=true;s=x}}do{C=F[t];if(!C){F[t]=C={name:d.normalize(t)}}if(C.get){u=C.get(v,A,z,s)}else{G=C.name;u=s[G]}if(!H){return u}D[t]=u;t=B[++w]}while(w<y);return D},getStyles:function(){var t=Ext.Array.slice(arguments),s=t.length,u;if(s&&typeof t[s-1]=="boolean"){u=t.pop()}return this.getStyle(t,u)},isTransparent:function(t){var s=this.getStyle(t);return s?c.test(s):false},setStyle:function(z,x){var v=this,y=v.dom,s=v.styleHooks,u=y.style,t=z,w;if(typeof t=="string"){w=s[t];if(!w){s[t]=w={name:d.normalize(t)}}x=(x==null)?"":x;if(w.set){w.set(y,x,v)}else{u[w.name]=x}if(w.afterSet){w.afterSet(y,x,v)}}else{for(t in z){if(z.hasOwnProperty(t)){w=s[t];if(!w){s[t]=w={name:d.normalize(t)}}x=z[t];x=(x==null)?"":x;if(w.set){w.set(y,x,v)}else{u[w.name]=x}if(w.afterSet){w.afterSet(y,x,v)}}}}return v},getHeight:function(t){var u=this.dom,s=t?(u.clientHeight-this.getPadding("tb")):u.offsetHeight;return s>0?s:0},getWidth:function(s){var u=this.dom,t=s?(u.clientWidth-this.getPadding("lr")):u.offsetWidth;return t>0?t:0},setWidth:function(s){var t=this;t.dom.style.width=d.addUnits(s);return t},setHeight:function(s){var t=this;t.dom.style.height=d.addUnits(s);return t},getBorderWidth:function(s){return this.addStyles(s,l)},getPadding:function(s){return this.addStyles(s,g)},margins:n,applyStyles:function(u){if(u){var t,s,v=this.dom;if(typeof u=="function"){u=u.call()}if(typeof u=="string"){u=Ext.util.Format.trim(u).split(/\s*(?::|;)\s*/);for(t=0,s=u.length;t<s;){v.style[d.normalize(u[t++])]=u[t++]}}else{if(typeof u=="object"){this.setStyle(u)}}}},setSize:function(u,s){var v=this,t=v.dom.style;if(Ext.isObject(u)){s=u.height;u=u.width}t.width=d.addUnits(u);t.height=d.addUnits(s);return v},getViewSize:function(){var s=document,t=this.dom;if(t==s||t==s.body){return{width:d.getViewportWidth(),height:d.getViewportHeight()}}else{return{width:t.clientWidth,height:t.clientHeight}}},getSize:function(t){var s=this.dom;return{width:Math.max(0,t?(s.clientWidth-this.getPadding("lr")):s.offsetWidth),height:Math.max(0,t?(s.clientHeight-this.getPadding("tb")):s.offsetHeight)}},repaint:function(){var s=this.dom;this.addCls(Ext.baseCSSPrefix+"repaint");setTimeout(function(){h.attach(s).removeCls(Ext.baseCSSPrefix+"repaint")},1);return this},getMargin:function(t){var u=this,w={t:"top",l:"left",r:"right",b:"bottom"},s,x,v;if(!t){v=[];for(s in u.margins){if(u.margins.hasOwnProperty(s)){v.push(u.margins[s])}}x=u.getStyle(v);if(x&&typeof x=="object"){for(s in u.margins){if(u.margins.hasOwnProperty(s)){x[w[s]]=parseFloat(x[u.margins[s]])||0}}}return x}else{return u.addStyles(t,u.margins)}},mask:function(t,x,B){var y=this,u=y.dom,v=(y.$cache||y.getCache()).data,s=v.mask,C,A,z="",w=Ext.baseCSSPrefix;y.addCls(w+"masked");if(y.getStyle("position")=="static"){y.addCls(w+"masked-relative")}if(s){s.remove()}if(x&&typeof x=="string"){z=" "+x}else{z=" "+w+"mask-gray"}C=y.createChild({cls:w+"mask"+((B!==false)?"":(" "+w+"mask-gray")),html:t?('<div class="'+(x||(w+"mask-message"))+'">'+t+"</div>"):""});A=y.getSize();v.mask=C;if(u===document.body){A.height=window.innerHeight;if(y.orientationHandler){Ext.EventManager.unOrientationChange(y.orientationHandler,y)}y.orientationHandler=function(){A=y.getSize();A.height=window.innerHeight;C.setSize(A)};Ext.EventManager.onOrientationChange(y.orientationHandler,y)}C.setSize(A);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var t=this,v=(t.$cache||t.getCache()).data,s=v.mask,u=Ext.baseCSSPrefix;if(s){s.remove();delete v.mask}t.removeCls([u+"masked",u+"masked-relative"]);if(t.dom===document.body){Ext.EventManager.unOrientationChange(t.orientationHandler,t);delete t.orientationHandler}}});Ext.onReady(function(){var A=Ext.supports,s,y,w,t,z;function x(F,C,E,B){var D=B[this.name]||"";return c.test(D)?"transparent":D}function v(H,E,G,D){var B=D.marginRight,C,F;if(B!="0px"){C=H.style;F=C.display;C.display="inline-block";B=(G?D:H.ownerDocument.defaultView.getComputedStyle(H,null)).marginRight;C.display=F}return B}function u(I,F,H,E){var B=E.marginRight,D,C,G;if(B!="0px"){D=I.style;C=d.getRightMarginFixCleaner(I);G=D.display;D.display="inline-block";B=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,"")).marginRight;D.display=G;C()}return B}s=d.prototype.styleHooks;if(A.init){A.init()}if(!A.RightMargin){s.marginRight=s["margin-right"]={name:"marginRight",get:(A.DisplayChangeInputSelectionBug||A.DisplayChangeTextAreaSelectionBug)?u:v}}if(!A.TransparentColor){y=["background-color","border-color","color","outline-color"];for(w=y.length;w--;){t=y[w];z=d.normalize(t);s[t]=s[z]={name:z,get:x}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g<b&&e!=c&&e!=d){if(Ext.DomQuery.is(e,h)){return a?Ext.get(e):e}g++;e=e.parentNode}return null},findParentNode:function(d,b,a){var c=Ext.fly(this.dom.parentNode,"_internal");return c?c.findParent(d,b,a):null},up:function(c,a,b){return this.findParentNode(c,a,!b)},select:function(a,b){return Ext.dom.Element.select(a,this.dom,b)},query:function(a){return Ext.DomQuery.select(a,this.dom)},down:function(a,b){var c=Ext.DomQuery.selectNode(a,this.dom);return b?c:Ext.get(c)},child:function(a,b){var d,c=this,e;e=Ext.id(c.dom);e=Ext.escapeId(e);d=Ext.DomQuery.selectNode("#"+e+" > "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var i=this,j=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(j)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=j.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof i){if(c!=i.docEl&&c!=i.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,j.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return i.select(c)}else{if(c===j){if(!i.docEl){b=i.docEl=Ext.Object.chain(d.prototype);b.dom=j;b.el=b;b.id=Ext.id(j);i.addToCache(b)}return i.docEl}else{if(c===window){if(!i.winEl){i.winEl=Ext.Object.chain(d.prototype);i.winEl.dom=window;i.winEl.id=Ext.id(window);i.addToCache(i.winEl)}return i.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g<b;g++){m=arguments[g];if(Ext.isString(m)){m=m.replace(a,"").split(l)}if(m){for(d=0,h=m.length;d<h;d++){c=m[d];if(!k[c]){if(g){e=true}k[c]=true}}}}for(c in k){n.push(c)}n.changed=e;return n},removeCls:function(a,b){var h={},g,c,d,k=[],e=false,j=this.whitespaceRe;if(a){if(Ext.isString(a)){a=a.replace(this.trimRe,"").split(j)}for(g=0,c=a.length;g<c;g++){h[a[g]]=true}}if(b){if(Ext.isString(b)){b=b.split(j)}for(g=0,c=b.length;g<c;g++){d=b[g];if(h[d]){e=true;delete h[d]}}}for(d in h){k.push(d)}k.changed=e;return k},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(a,b){var c=this,d=typeof a=="string"?document.getElementById(a):a,e;c.el=c;if(!d){return null}e=d.id;if(!b&&e&&Ext.cache[e]){return Ext.cache[e].el}c.dom=d;c.id=e||Ext.id(d);c.self.addToCache(c)},set:function(e,b){var c=this.dom,a,d;for(a in e){if(e.hasOwnProperty(a)){d=e[a];if(a=="style"){this.applyStyles(d)}else{if(a=="cls"){c.className=d}else{if(b!==false){if(d===undefined){c.removeAttribute(a)}else{c.setAttribute(a,d)}}else{c[a]=d}}}}}return this},defaultUnit:"px",is:function(a){return Ext.DomQuery.is(this.dom,a)},getValue:function(a){var b=this.dom.value;return a?parseInt(b,10):b},remove:function(){var a=this,b=a.dom;if(a.isAnimate){a.stopAnimation()}if(b){Ext.removeNode(b);delete a.dom}},contains:function(a){if(!a){return false}var b=this,c=a.dom||a;return(c===b.dom)||Ext.dom.AbstractElement.isAncestor(b.dom,c)},getAttribute:function(a,b){var c=this.dom;return c.getAttributeNS(b,a)||c.getAttribute(b+":"+a)||c.getAttribute(a)||c[a]},update:function(a){if(this.dom){this.dom.innerHTML=a}return this},setHTML:function(a){if(this.dom){this.dom.innerHTML=a}return this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){this.setVisible(false);return this},show:function(){this.setVisible(true);return this},setVisible:function(g,a){var b=this,e=b.self,d=b.getVisibilityMode(),c=Ext.baseCSSPrefix;switch(d){case e.VISIBILITY:b.removeCls([c+"hidden-display",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-visibility");break;case e.DISPLAY:b.removeCls([c+"hidden-visibility",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-display");break;case e.OFFSETS:b.removeCls([c+"hidden-visibility",c+"hidden-display"]);b[g?"removeCls":"addCls"](c+"hidden-offsets");break}return b},getVisibilityMode:function(){var b=(this.$cache||this.getCache()).data,a=b.visibilityMode;if(a===undefined){b.visibilityMode=a=this.self.DISPLAY}return a},setVisibilityMode:function(a){(this.$cache||this.getCache()).data.visibilityMode=a;return this},getCache:function(){var a=this,b=a.dom.id||Ext.id(a.dom);a.$cache=Ext.cache[b]||Ext.addCacheEntry(b,null,a.dom);return a.$cache}},1,0,0,0,0,0,[Ext.dom,"AbstractElement"],function(){var a=this;Ext.getDetachedBody=function(){var b=a.detachedBodyEl;if(!b){b=document.createElement("div");a.detachedBodyEl=b=new a.Fly(b);b.isDetachedBody=true}return b};Ext.getElementById=function(d){var c=document.getElementById(d),b;if(!c&&(b=a.detachedBodyEl)){c=b.dom.querySelector("#"+Ext.escapeId(d))}return c};Ext.get=function(b){return Ext.dom.Element.get(b)};this.addStatics({Fly:new Ext.Class({extend:a,isFly:true,constructor:function(b){this.dom=b;this.el=this},attach:function(b){this.dom=b;this.$cache=b.id?Ext.cache[b.id]:null;return this}}),_flyweights:{},fly:function(e,c){var d=null,b=a._flyweights;c=c||"_global";e=Ext.getDom(e);if(e){d=b[c]||(b[c]=new a.Fly());d.dom=e;d.$cache=e.id?Ext.cache[e.id]:null}return d}});Ext.fly=function(){return a.fly.apply(a,arguments)};(function(b){b.destroy=b.remove;if(document.querySelector){b.getById=function(e,c){var d=document.getElementById(e)||this.dom.querySelector("#"+Ext.escapeId(e));return c?d:(d?Ext.get(d):null)}}else{b.getById=function(e,c){var d=document.getElementById(e);return c?d:(d?Ext.get(d):null)}}}(this.prototype))}));(Ext.cmd.derive("Ext.dom.Helper",Ext.dom.AbstractHelper,(function(){var b="afterbegin",i="afterend",a="beforebegin",o="beforeend",l="<table>",h="</table>",c=l+"<tbody>",n="</tbody>"+h,k=c+"<tr>",e="</tr>"+n,p=document.createElement("div"),m=["BeforeBegin","previousSibling"],j=["AfterEnd","nextSibling"],d={beforebegin:m,afterend:j},g={beforebegin:m,afterend:j,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(q,w){var r,z=document,u,x,s,y,v,t;if(Ext.isArray(q)){r=z.createDocumentFragment();for(v=0,t=q.length;v<t;v++){this.createDom(q[v],r)}}else{if(typeof q=="string"){r=z.createTextNode(q)}else{r=z.createElement(q.tag||"div");u=!!r.setAttribute;for(x in q){if(!this.confRe.test(x)){s=q[x];if(x=="cls"){r.className=s}else{if(u){r.setAttribute(x,s)}else{r[x]=s}}}}Ext.DomHelper.applyStyles(r,q.style);if((y=q.children||q.cn)){this.createDom(y,r)}else{if(q.html){r.innerHTML=q.html}}}}if(w){w.appendChild(r)}return r},ieTable:function(v,q,w,u){p.innerHTML=[q,w,u].join("");var r=-1,t=p,s;while(++r<v){t=t.firstChild}s=t.nextSibling;if(s){s=t;t=document.createDocumentFragment();while(s){nx=s.nextSibling;t.appendChild(s);s=nx}}return t},insertIntoTable:function(z,s,r,t){var q,w,v=s==a,y=s==b,u=s==o,x=s==i;if(z=="td"&&(y||u)||!this.tableElRe.test(z)&&(v||x)){return null}w=v?r:x?r.nextSibling:y?r.firstChild:null;if(v||x){r=r.parentNode}if(z=="td"||(z=="tr"&&(u||y))){q=this.ieTable(4,k,t,e)}else{if(((z=="tbody"||z=="thead")&&(u||y))||(z=="tr"&&(v||x))){q=this.ieTable(3,c,t,n)}else{q=this.ieTable(2,l,t,h)}}r.insertBefore(q,w);return q},createContextualFragment:function(r){var q=document.createDocumentFragment(),s,t;p.innerHTML=r;t=p.childNodes;s=t.length;while(s--){q.appendChild(t[0])}return q},applyStyles:function(q,r){if(r){if(typeof r=="function"){r=r.call()}if(typeof r=="string"){r=Ext.dom.Element.parseStyles(r)}if(typeof r=="object"){Ext.fly(q,"_applyStyles").setStyle(r)}}},createHtml:function(q){return this.markup(q)},doInsert:function(t,v,u,w,s,q){t=t.dom||Ext.getDom(t);var r;if(this.useDom){r=this.createDom(v,null);if(q){t.appendChild(r)}else{(s=="firstChild"?t:t.parentNode).insertBefore(r,t[s]||t)}}else{r=this.insertHtml(w,t,this.markup(v))}return u?Ext.get(r,true):r},overwrite:function(s,r,t){var q;s=Ext.getDom(s);r=this.markup(r);if(Ext.isIE&&this.tableRe.test(s.tagName)){while(s.firstChild){s.removeChild(s.firstChild)}if(r){q=this.insertHtml("afterbegin",s,r);return t?Ext.get(q):q}return null}s.innerHTML=r;return t?Ext.get(s.firstChild):s.firstChild},insertHtml:function(s,v,t){var x,r,u,q,w;s=s.toLowerCase();if(v.insertAdjacentHTML){if(Ext.isIE&&this.tableRe.test(v.tagName)&&(w=this.insertIntoTable(v.tagName.toLowerCase(),s,v,t))){return w}if((x=g[s])){if(Ext.global.MSApp&&Ext.global.MSApp.execUnsafeLocalFunction){MSApp.execUnsafeLocalFunction(function(){v.insertAdjacentHTML(x[0],t)})}else{v.insertAdjacentHTML(x[0],t)}return v[x[1]]}}else{if(v.nodeType===3){s=s==="afterbegin"?"beforebegin":s;s=s==="beforeend"?"afterend":s}r=Ext.supports.CreateContextualFragment?v.ownerDocument.createRange():undefined;q="setStart"+(this.endRe.test(s)?"After":"Before");if(d[s]){if(r){r[q](v);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}v.parentNode.insertBefore(w,s==a?v:v.nextSibling);return v[(s==a?"previous":"next")+"Sibling"]}else{u=(s==b?"first":"last")+"Child";if(v.firstChild){if(r){r[q](v[u]);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}if(s==b){v.insertBefore(w,v.firstChild)}else{v.appendChild(w)}}else{v.innerHTML=t}return v[u]}}},createTemplate:function(r){var q=this.markup(r);return new Ext.Template(q)}}})(),0,0,0,0,0,0,[Ext.dom,"Helper"],function(){Ext.ns("Ext.core");Ext.DomHelper=Ext.core.DomHelper=new this()}));(Ext.cmd.derive("Ext.Template",Ext.Base,{inheritableStatics:{from:function(b,a){b=Ext.getDom(b);return new this(b.value||b.innerHTML,a||"")}},constructor:function(d){var g=this,b=arguments,a=[],c=0,e=b.length,h;g.initialConfig={};if(e===1&&Ext.isArray(d)){b=d;e=b.length}if(e>1){for(;c<e;c++){h=b[c];if(typeof h=="object"){Ext.apply(g.initialConfig,h);Ext.apply(g,h)}else{a.push(h)}}}else{a.push(d)}g.html=a.join("");if(g.compiled){g.compile()}},isTemplate:true,disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,apply:function(a){var h=this,d=h.disableFormats!==true,g=Ext.util.Format,c=h,b;if(h.compiled){return h.compiled(a).join("")}function e(i,k,l,j){if(l&&d){if(j){j=[a[k]].concat(Ext.functionFactory("return ["+j+"];")())}else{j=[a[k]]}if(l.substr(0,5)=="this."){return c[l.substr(5)].apply(c,j)}else{return g[l].apply(g,j)}}else{return a[k]!==undefined?a[k]:""}}b=h.html.replace(h.re,e);return b},applyOut:function(a,b){var c=this;if(c.compiled){b.push.apply(b,c.compiled(a))}else{b.push(c.apply(a))}return b},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){var me=this,fm=Ext.util.Format,useFormat=me.disableFormats!==true,body,bodyReturn;function fn(m,name,format,args){if(format&&useFormat){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this."+format.substr(5)+"("}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"',"+format+"values['"+name+"']"+args+") ,'"}bodyReturn=me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn);body="this.compiled = function(values){ return ['"+bodyReturn+"'];};";eval(body);return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(b,d,a,e){var c=Ext.DomHelper.insertHtml(b,Ext.getDom(d),this.apply(a));return e?Ext.get(c):c},overwrite:function(c,a,d){var b=Ext.DomHelper.overwrite(Ext.getDom(c),this.apply(a));return d?Ext.get(b):b}},1,0,0,0,0,0,[Ext,"Template"],0));(Ext.cmd.derive("Ext.XTemplateParser",Ext.Base,{constructor:function(a){Ext.apply(this,a)},doTpl:Ext.emptyFn,parse:function(l){var v=this,p=l.length,o={elseif:"elif"},q=v.topRe,c=v.actionsRe,e,d,j,n,h,k,i,u,r,b,g,a;v.level=0;v.stack=d=[];for(e=0;e<p;e=b){q.lastIndex=e;n=q.exec(l);if(!n){v.doText(l.substring(e,p));break}r=n.index;b=q.lastIndex;if(e<r){v.doText(l.substring(e,r))}if(n[1]){b=l.indexOf("%}",r+2);v.doEval(l.substring(r+2,b));b+=2}else{if(n[2]){b=l.indexOf("]}",r+2);v.doExpr(l.substring(r+2,b));b+=2}else{if(n[3]){v.doTag(n[3])}else{if(n[4]){g=null;while((u=c.exec(n[4]))!==null){j=u[2]||u[3];if(j){j=Ext.String.htmlDecode(j);h=u[1];h=o[h]||h;g=g||{};k=g[h];if(typeof k=="string"){g[h]=[k,j]}else{if(k){g[h].push(j)}else{g[h]=j}}}}if(!g){if(v.elseRe.test(n[4])){v.doElse()}else{if(v.defaultRe.test(n[4])){v.doDefault()}else{v.doTpl();d.push({type:"tpl"})}}}else{if(g["if"]){v.doIf(g["if"],g);d.push({type:"if"})}else{if(g["switch"]){v.doSwitch(g["switch"],g);d.push({type:"switch"})}else{if(g["case"]){v.doCase(g["case"],g)}else{if(g.elif){v.doElseIf(g.elif,g)}else{if(g["for"]){++v.level;if(a=v.propRe.exec(n[4])){g.propName=a[1]||a[2]}v.doFor(g["for"],g);d.push({type:"for",actions:g})}else{if(g.foreach){++v.level;if(a=v.propRe.exec(n[4])){g.propName=a[1]||a[2]}v.doForEach(g.foreach,g);d.push({type:"foreach",actions:g})}else{if(g.exec){v.doExec(g.exec,g);d.push({type:"exec",actions:g})}}}}}}}}}else{if(n[0].length===5){d.push({type:"tpl"})}else{i=d.pop();v.doEnd(i.type,i.actions);if(i.type=="for"||i.type=="foreach"){--v.level}}}}}}}},topRe:/(?:(\{\%)|(\{\[)|\{([^{}]+)\})|(?:<tpl([^>]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b<g;++b){a=d.intRe.exec(c[b]);c[b]=a?a[1]:("'"+c[b].replace(d.aposRe,"\\'")+"'")}d.body.push("case ",c.join(": case "),":\n")},doDefault:function(){var a=this,b=a.switches.length-1;if(a.switches[b]){a.body.push("break;\n")}else{a.switches[b]++}a.body.push("default:\n")},doEnd:function(b,d){var c=this,a=c.level-1;if(b=="for"||b=="foreach"){if(d.exec){c.doExec(d.exec)}c.body.push("}\n");c.body.push("parent=p",a,";values=r",a+1,";xcount=n"+a+";xindex=i",a,"+1;xkey=k",a,";\n")}else{if(b=="if"||b=="switch"){c.body.push("}\n")}}},doFor:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=0,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","if (c",b,"){if(a",b,"){n",b,"=c",b,".length;}else if (c",b,".isMixedCollection){c",b,"=c",b,".items;n",b,"=c",b,".length;}else if(c",b,".isStore){c",b,"=c",b,".data.items;n",b,"=c",b,".length;}else{c",b,"=[c",b,"];n",b,"=1;}}\n","for (xcount=n",b,";i",b,"<n"+b+";++i",b,"){\n","values=c",b,"[i",b,"]");if(h.propName){d.body.push(".",h.propName)}d.body.push("\n","xindex=i",b,"+1\n");if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=-1,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","for(k",b," in c",b,"){\n","xindex=++i",b,"+1;\n","xkey=k",b,";\n","values=c",b,"[k",b,"];");if(h.propName){d.body.push(".",h.propName)}if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {","  "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {","  return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,i,d,g,c;if(!a){return null}e=a[1];i=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(i&&h.useFormat){d=d?","+d:"";if(i.substr(0,5)!="this."){i="fm."+i+"("}else{i+="("}}else{return c}return i+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="<!-- -->text<!-- -->";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='<r><a:b xmlns:a="n"></a:b></r>';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}:function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n};function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}return result};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i<len;i++){c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1,d,j;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[],i,len;for(i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[],i,len;if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(i=0;i<len1;i++){c1[i]._qdiff=d}for(i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){id=unescapeCssSelector(id);var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return DQ={getStyle:function(el,name){return Ext.fly(el,"_DomQuery").getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root) {\n var mode; ++batch; var n = root || document;\n"],lastPath,matchers=DQ.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;path=setupEscapes(path);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){matched=false;for(j=0;j<matchersLn;j++){t=matchers[j];m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'Error parsing selector. Parsing failed at "'+path+'"'})}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||doc;if(typeof root=="string"){root=doc.getElementById(root)}var paths=path.split(","),results=[],i,len,subPath,result;for(i=0,len=paths.length;i<len;i++){subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=DQ.compile(subPath,type);if(!cache[subPath]){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})}}else{setupEscapes(subPath)}result=cache[subPath](root);if(result&&result!==doc){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-\.]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)===0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l===0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f===0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isFocusable()){results.push(c)}}return results},visible:function(candidates,deep){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isVisible(deep)){results.push(c)}}return results}}}}());Ext.query=Ext.DomQuery.select;Ext.define("Ext.dom.Element_anim",{override:"Ext.dom.Element",animate:function(b){var d=this,c,e,a=d.dom.id||Ext.id(d.dom);if(!Ext.fx.Manager.hasFxBlock(a)){if(b.listeners){c=b.listeners;delete b.listeners}if(b.internalListeners){b.listeners=b.internalListeners;delete b.internalListeners}e=new Ext.fx.Anim(d.anim(b));if(c){e.on(c)}Ext.fx.Manager.queueFx(e)}return d},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this,c=a.duration||Ext.fx.Anim.prototype.duration,e=a.easing||"ease",d;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));Ext.fx.Manager.setFxDefaults(b.id,{delay:0});d={target:b.dom,remove:a.remove,alternate:a.alternate||false,duration:c,easing:e,callback:a.callback,listeners:a.listeners,iterations:a.iterations||1,scope:a.scope,block:a.block,concurrent:a.concurrent,delay:a.delay||0,paused:true,keyframes:a.keyframes,from:a.from||{},to:Ext.apply({},a)};Ext.apply(d.to,a.to);delete d.to.to;delete d.to.from;delete d.to.remove;delete d.to.alternate;delete d.to.keyframes;delete d.to.iterations;delete d.to.listeners;delete d.to.target;delete d.to.paused;delete d.to.callback;delete d.to.scope;delete d.to.duration;delete d.to.easing;delete d.to.concurrent;delete d.to.block;delete d.to.stopAnimation;delete d.to.delay;return d},slideIn:function(d,c,e){var h=this,b=h.dom,k=b.style,j,a,g,i;d=d||"t";c=c||{};j=function(){var p=this,o=c.listeners,n=Ext.fly(b,"_anim"),q,l,r,m;if(!e){n.fixDisplay()}q=n.getBox();if((d=="t"||d=="b")&&q.height===0){q.height=b.scrollHeight}else{if((d=="l"||d=="r")&&q.width===0){q.width=b.scrollWidth}}l=n.getStyles("width","height","left","right","top","bottom","position","z-index",true);n.setSize(q.width,q.height);if(c.preserveScroll){g=n.cacheScrollValues()}m=n.wrap({id:Ext.id()+"-anim-wrap-for-"+n.dom.id,style:{visibility:e?"visible":"hidden"}});i=m.dom.parentNode;m.setPositioning(n.getPositioning(true));if(m.isStyle("position","static")){m.position("relative")}n.clearPositioning("auto");m.clip();if(g){g()}n.setStyle({visibility:"",position:"absolute"});if(e){m.setSize(q.width,q.height)}switch(d){case"t":r={from:{width:q.width+"px",height:"0px"},to:{width:q.width+"px",height:q.height+"px"}};k.bottom="0px";break;case"l":r={from:{width:"0px",height:q.height+"px"},to:{width:q.width+"px",height:q.height+"px"}};h.anchorAnimX(d);break;case"r":r={from:{x:q.x+q.width,width:"0px",height:q.height+"px"},to:{x:q.x,width:q.width+"px",height:q.height+"px"}};h.anchorAnimX(d);break;case"b":r={from:{y:q.y+q.height,width:q.width+"px",height:"0px"},to:{y:q.y,width:q.width+"px",height:q.height+"px"}};break;case"tl":r={from:{x:q.x,y:q.y,width:"0px",height:"0px"},to:{width:q.width+"px",height:q.height+"px"}};k.bottom="0px";h.anchorAnimX("l");break;case"bl":r={from:{y:q.y+q.height,width:"0px",height:"0px"},to:{y:q.y,width:q.width+"px",height:q.height+"px"}};h.anchorAnimX("l");break;case"br":r={from:{x:q.x+q.width,y:q.y+q.height,width:"0px",height:"0px"},to:{x:q.x,y:q.y,width:q.width+"px",height:q.height+"px"}};h.anchorAnimX("r");break;case"tr":r={from:{x:q.x+q.width,width:"0px",height:"0px"},to:{x:q.x,width:q.width+"px",height:q.height+"px"}};k.bottom="0px";h.anchorAnimX("r");break}m.show();a=Ext.apply({},c);delete a.listeners;a=new Ext.fx.Anim(Ext.applyIf(a,{target:m,duration:500,easing:"ease-out",from:e?r.to:r.from,to:e?r.from:r.to}));a.on("afteranimate",function(){var s=Ext.fly(b,"_anim");s.setStyle(l);if(e){if(c.useDisplay){s.setDisplayed(false)}else{s.hide()}}if(m.dom){if(m.dom.parentNode){m.dom.parentNode.insertBefore(s.dom,m.dom)}else{i.appendChild(s.dom)}m.remove()}if(g){g()}p.end()});if(o){a.on(o)}};h.animate({duration:c.duration?Math.max(c.duration,500)*2:1000,listeners:{beforeanimate:j}});return h},slideOut:function(a,b){return this.slideIn(a,b,true)},puff:function(e){var d=this,g=d.dom,b,c=d.getBox(),a=d.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",true);e=Ext.applyIf(e||{},{easing:"ease-out",duration:500,useDisplay:false});b=function(){var h=Ext.fly(g,"_anim");h.clearOpacity();h.show();this.to={width:c.width*2,height:c.height*2,x:c.x-(c.width/2),y:c.y-(c.height/2),opacity:0,fontSize:"200%"};this.on("afteranimate",function(){var i=Ext.fly(g,"_anim");if(i){if(e.useDisplay){i.setDisplayed(false)}else{i.hide()}i.setStyle(a);Ext.callback(e.callback,e.scope)}})};d.animate({duration:e.duration,easing:e.easing,listeners:{beforeanimate:{fn:b}}});return d},switchOff:function(c){var b=this,d=b.dom,a;c=Ext.applyIf(c||{},{easing:"ease-in",duration:500,remove:false,useDisplay:false});a=function(){var j=Ext.fly(d,"_anim"),i=this,h=j.getSize(),k=j.getXY(),g,e;j.clearOpacity();j.clip();e=j.getPositioning();g=new Ext.fx.Animator({target:d,duration:c.duration,easing:c.easing,keyframes:{33:{opacity:0.3},66:{height:1,y:k[1]+h.height/2},100:{width:1,x:k[0]+h.width/2}}});g.on("afteranimate",function(){var l=Ext.fly(d,"_anim");if(c.useDisplay){l.setDisplayed(false)}else{l.hide()}l.clearOpacity();l.setPositioning(e);l.setSize(h);i.end()})};b.animate({duration:(Math.max(c.duration,500)*2),listeners:{beforeanimate:{fn:a}},callback:c.callback,scope:c.scope});return b},frame:function(a,d,e){var c=this,g=c.dom,b;a=a||"#C3DAF9";d=d||1;e=e||{};b=function(){var k=Ext.fly(g,"_anim"),j=this,l,i,h;k.show();l=k.getBox();i=Ext.getBody().createChild({id:k.dom.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35000,border:"0px solid "+a}});h=new Ext.fx.Anim({target:i,duration:e.duration||1000,iterations:d,from:{top:l.y,left:l.x,borderWidth:0,opacity:1,height:l.height,width:l.width},to:{top:l.y-20,left:l.x-20,borderWidth:10,opacity:0,height:l.height+40,width:l.width+40}});h.on("afteranimate",function(){i.remove();j.end()})};c.animate({duration:(Math.max(e.duration,500)*2)||2000,listeners:{beforeanimate:{fn:b}},callback:e.callback,scope:e.scope});return c},ghost:function(a,d){var c=this,e=c.dom,b;a=a||"b";b=function(){var j=Ext.fly(e,"_anim"),i=j.getWidth(),h=j.getHeight(),k=j.getXY(),g=j.getPositioning(),l={opacity:0};switch(a){case"t":l.y=k[1]-h;break;case"l":l.x=k[0]-i;break;case"r":l.x=k[0]+i;break;case"b":l.y=k[1]+h;break;case"tl":l.x=k[0]-i;l.y=k[1]-h;break;case"bl":l.x=k[0]-i;l.y=k[1]+h;break;case"br":l.x=k[0]+i;l.y=k[1]+h;break;case"tr":l.x=k[0]+i;l.y=k[1]-h;break}this.to=l;this.on("afteranimate",function(){var m=Ext.fly(e,"_anim");if(m){m.hide();m.clearOpacity();m.setPositioning(g)}})};c.animate(Ext.applyIf(d||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:b}}));return c},highlight:function(d,b){var i=this,e=i.dom,k={},h,l,g,c,a,j;if(e.tagName.match(i.tableTagRe)){return i.select("div").highlight(d,b)}b=b||{};c=b.listeners||{};g=b.attr||"backgroundColor";k[g]=d||"ffff9c";if(!b.to){l={};l[g]=b.endColor||i.getColor(g,"ffffff","")}else{l=b.to}b.listeners=Ext.apply(Ext.apply({},c),{beforeanimate:function(){h=e.style[g];var m=Ext.fly(e,"_anim");m.clearOpacity();m.show();a=c.beforeanimate;if(a){j=a.fn||a;return j.apply(a.scope||c.scope||window,arguments)}},afteranimate:function(){if(e){e.style[g]=h}a=c.afteranimate;if(a){j=a.fn||a;j.apply(a.scope||c.scope||window,arguments)}}});i.animate(Ext.apply({},b,{duration:1000,easing:"ease-in",from:k,to:l}));return i},pause:function(a){var b=this;Ext.fx.Manager.setFxDefaults(b.id,{delay:a});return b},fadeIn:function(c){var a=this,b=a.dom;a.animate(Ext.apply({},c,{opacity:1,internalListeners:{beforeanimate:function(e){var d=Ext.fly(b,"_anim");if(d.isStyle("display","none")){d.setDisplayed("")}else{d.show()}}}}));return this},fadeOut:function(c){var a=this,b=a.dom;c=Ext.apply({opacity:0,internalListeners:{afteranimate:function(e){if(b&&e.to.opacity===0){var d=Ext.fly(b,"_anim");if(c.useDisplay){d.setDisplayed(false)}else{d.hide()}}}}},c);a.animate(c);return a},scale:function(a,b,c){this.animate(Ext.apply({},c,{width:a,height:b}));return this},shift:function(a){this.animate(a);return this},anchorAnimX:function(a){var b=(a==="l")?"right":"left";this.dom.style[b]="0px"}});Ext.define("Ext.dom.Element_dd",{override:"Ext.dom.Element",initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});Ext.define("Ext.dom.Element_fx",{override:"Ext.dom.Element"},function(){var b=Ext.dom.Element,i="visibility",g="display",n="none",e="hidden",m="visible",o="offsets",j="asclass",a="nosize",c="originalDisplay",d="visibilityMode",h="isVisible",l=Ext.baseCSSPrefix+"hide-offsets",k=function(q){var r=(q.$cache||q.getCache()).data,s=r[c];if(s===undefined){r[c]=s=""}return s},p=function(r){var s=(r.$cache||r.getCache()).data,q=s[d];if(q===undefined){s[d]=q=b.VISIBILITY}return q};b.override({originalDisplay:"",visibilityMode:1,setVisible:function(u,q){var s=this,t=s.dom,r=p(s);if(typeof q=="string"){switch(q){case g:r=b.DISPLAY;break;case i:r=b.VISIBILITY;break;case o:r=b.OFFSETS;break;case a:case j:r=b.ASCLASS;break}s.setVisibilityMode(r);q=false}if(!q||!s.anim){if(r==b.DISPLAY){return s.setDisplayed(u)}else{if(r==b.OFFSETS){s[u?"removeCls":"addCls"](l)}else{if(r==b.VISIBILITY){s.fixDisplay();t.style.visibility=u?"":e}else{if(r==b.ASCLASS){s[u?"removeCls":"addCls"](s.visibilityCls||b.visibilityCls)}}}}}else{if(u){s.setOpacity(0.01);s.setVisible(true)}if(!Ext.isObject(q)){q={duration:350,easing:"ease-in"}}s.animate(Ext.applyIf({callback:function(){if(!u){Ext.fly(t,"_internal").setVisible(false).setOpacity(1)}},to:{opacity:(u)?1:0}},q))}(s.$cache||s.getCache()).data[h]=u;return s},hasMetrics:function(){var q=p(this);return this.isVisible()||(q==b.OFFSETS)||(q==b.VISIBILITY)},toggle:function(q){var r=this;r.setVisible(!r.isVisible(),r.anim(q));return r},setDisplayed:function(q){if(typeof q=="boolean"){q=q?k(this):n}this.setStyle(g,q);return this},fixDisplay:function(){var q=this;if(q.isStyle(g,n)){q.setStyle(i,e);q.setStyle(g,k(q));if(q.isStyle(g,n)){q.setStyle(g,"block")}}},hide:function(q){if(typeof q=="string"){this.setVisible(false,q);return this}this.setVisible(false,this.anim(q));return this},show:function(q){if(typeof q=="string"){this.setVisible(true,q);return this}this.setVisible(true,this.anim(q));return this}})});Ext.define("Ext.dom.Element_position",{override:"Ext.dom.Element"},function(){var x,q=this,m="left",j="right",p="top",h="bottom",n="position",i="static",y="relative",u="z-index",t="BODY",c="padding",s="border",r="-left",l="-right",a="-top",k="-bottom",g="-width",e={l:s+r+g,r:s+l+g,t:s+a+g,b:s+k+g},d={l:c+r,r:c+l,t:c+a,b:c+k},v=[d.l,d.r,d.t,d.b],b=[e.l,e.r,e.t,e.b],w=Math.round,z=document,o=function(A){if(!x){x=new Ext.Element.Fly()}x.attach(A);return x};q.override({pxRe:/^\d+(?:\.\d*)?px$/i,inheritableStatics:{getX:function(A){return q.getXY(A)[0]},getXY:function(C){var F=z.body,B=z.documentElement,A=0,D=0,G=[0,0],E,I;C=Ext.getDom(C);if(C!=z&&C!=F){if(Ext.isIE){try{E=C.getBoundingClientRect();D=B.clientTop||F.clientTop;A=B.clientLeft||F.clientLeft}catch(H){E={left:0,top:0}}}else{E=C.getBoundingClientRect()}I=o(z).getScroll();G=[w(E.left+I.left-A),w(E.top+I.top-D)]}return G},getY:function(A){return q.getXY(A)[1]},setX:function(B,A){q.setXY(B,[A,false])},setXY:function(B,C){(B=Ext.fly(B,"_setXY")).position();var D=B.translatePoints(C),A=B.dom.style,E;A.right="auto";for(E in D){if(!isNaN(D[E])){A[E]=D[E]+"px"}}},setY:function(A,B){q.setXY(A,[false,B])}},center:function(A){return this.alignTo(A||z,"c-c")},clearPositioning:function(A){A=A||"";return this.setStyle({left:A,right:A,top:A,bottom:A,"z-index":"",position:i})},getAnchorToXY:function(D,A,C,B){return D.getAnchorXY(A,C,B)},getBottom:function(A){return(A?this.getLocalY():this.getY())+this.getHeight()},getBorderPadding:function(){var A=this.getStyle(v),B=this.getStyle(b);return{beforeX:(parseFloat(B[e.l])||0)+(parseFloat(A[d.l])||0),afterX:(parseFloat(B[e.r])||0)+(parseFloat(A[d.r])||0),beforeY:(parseFloat(B[e.t])||0)+(parseFloat(A[d.t])||0),afterY:(parseFloat(B[e.b])||0)+(parseFloat(A[d.b])||0)}},getCenterXY:function(){return this.getAlignToXY(z,"c-c")},getLeft:function(A){return A?this.getLocalX():this.getX()},getLocalX:function(){var C=this,B=C.dom.offsetParent,A=C.getStyle("left");if(!A||A==="auto"){A=0}else{if(C.pxRe.test(A)){A=parseFloat(A)}else{A=C.getX();if(B){A-=q.getX(B)}}}return A},getLocalXY:function(){var D=this,C=D.dom.offsetParent,B=D.getStyle(["left","top"]),A=B.left,E=B.top;if(!A||A==="auto"){A=0}else{if(D.pxRe.test(A)){A=parseFloat(A)}else{A=D.getX();if(C){A-=q.getX(C)}}}if(!E||E==="auto"){E=0}else{if(D.pxRe.test(E)){E=parseFloat(E)}else{E=D.getY();if(C){E-=q.getY(C)}}}return[A,E]},getLocalY:function(){var B=this,A=B.dom.offsetParent,C=B.getStyle("top");if(!C||C==="auto"){C=0}else{if(B.pxRe.test(C)){C=parseFloat(C)}else{C=B.getY();if(A){C-=q.getY(A)}}}return C},getPageBox:function(C){var F=this,D=F.dom,H=D.nodeName==t,I=H?Ext.Element.getViewWidth():D.offsetWidth,E=H?Ext.Element.getViewHeight():D.offsetHeight,K=F.getXY(),J=K[1],A=K[0]+I,G=K[1]+E,B=K[0];if(C){return new Ext.util.Region(J,A,G,B)}else{return{left:B,top:J,width:I,height:E,right:A,bottom:G}}},getPositioning:function(B){var A=this.getStyle(["left","top","position","z-index"]),C=this.dom;if(B){if(A.left==="auto"){A.left=C.offsetLeft+"px"}if(A.top==="auto"){A.top=C.offsetTop+"px"}}return A},getRight:function(A){return(A?this.getLocalX():this.getX())+this.getWidth()},getTop:function(A){return A?this.getLocalY():this.getY()},getX:function(){return q.getX(this.dom)},getXY:function(){return q.getXY(this.dom)},getY:function(){return q.getY(this.dom)},moveTo:function(A,C,B){return this.setXY([A,C],B)},position:function(E,D,A,C){var B=this;if(!E&&B.isStyle(n,i)){B.setStyle(n,y)}else{if(E){B.setStyle(n,E)}}if(D){B.setStyle(u,D)}if(A||C){B.setXY([A||false,C||false])}},setBottom:function(A){this.dom.style[h]=this.addUnits(A);return this},setBounds:function(B,E,D,A,C){return this.setBox({x:B,y:E,width:D,height:A},C)},setLeft:function(A){this.dom.style[m]=this.addUnits(A);return this},setLeftTop:function(D,C){var B=this,A=B.dom.style;A.left=B.addUnits(D);A.top=B.addUnits(C);return B},setLocalX:function(A){var B=this.dom.style;B.right="auto";B.left=(A===null)?"auto":A+"px"},setLocalXY:function(A,C){var B=this.dom.style;B.right="auto";if(A&&A.length){C=A[1];A=A[0]}if(A===null){B.left="auto"}else{if(A!==undefined){B.left=A+"px"}}if(C===null){B.top="auto"}else{if(C!==undefined){B.top=C+"px"}}},setLocalY:function(A){this.dom.style.top=(A===null)?"auto":A+"px"},setLocation:function(A,C,B){return this.setXY([A,C],B)},setPositioning:function(A){return this.setStyle(A)},setRight:function(A){this.dom.style[j]=this.addUnits(A);return this},setTop:function(A){this.dom.style[p]=this.addUnits(A);return this},setX:function(A,B){return this.setXY([A,this.getY()],B)},setXY:function(C,A){var B=this;if(!A||!B.anim){q.setXY(B.dom,C)}else{if(!Ext.isObject(A)){A={}}B.animate(Ext.applyIf({to:{x:C[0],y:C[1]}},A))}return this},setY:function(B,A){return this.setXY([this.getX(),B],A)}});q.getTrueXY=q.getXY});Ext.define("Ext.dom.Element_scroll",{override:"Ext.dom.Element",isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,i=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[i]=e;h[i]=e}else{b={to:{}};b.to[i]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var m=this,k=m.dom,i=m.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=i[0]+b.scrollLeft,n=i[1]+b.scrollTop,a=n+k.offsetHeight,o=g+k.offsetWidth,r=b.clientHeight,q=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),j=q+r,p=d+b.clientWidth,l;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){m.scrollChildFly.attach(k).highlight()}}},c)}else{m.scrollChildFly.attach(k).highlight()}}if(k.offsetHeight>r||n<q){l=n}else{if(a>j){l=a-r}}if(l!=null){m.scrollChildFly.attach(b).scrollTo("top",l,c)}if(e!==false){l=null;if(k.offsetWidth>b.clientWidth||g<d){l=g}else{if(o>p){l=o-b.clientWidth}}if(l!=null){m.scrollChildFly.attach(b).scrollTo("left",l,c)}}return m},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(j,a,c){if(!this.isScrollable()){return false}var i=this,e=i.dom,h=j==="r"||j==="l"?"left":"top",b=false,d,g;if(j==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=i.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=i.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var r=this,n=document.defaultView,p=/table-row|table-.*-group/,a="_internal",t="hidden",q="height",h="width",e="isClipped",j="overflow",m="overflow-x",l="overflow-y",u="originalClip",b=/#document|body/i,v,g,o,d,s,i,w;if(!n||!n.getComputedStyle){r.prototype.getStyle=function(B,A){var N=this,I=N.dom,L=typeof B!="string",k=N.styleHooks,y=B,z=y,H=1,D=A,M,E,x,C,G,J,F;if(L){x={};y=z[0];F=0;if(!(H=z.length)){return x}}if(!I||I.documentElement){return x||""}E=I.style;if(A){J=E}else{J=I.currentStyle;if(!J){D=true;J=E}}do{C=k[y];if(!C){k[y]=C={name:r.normalize(y)}}if(C.get){G=C.get(I,N,D,J)}else{M=C.name;if(C.canThrow){try{G=J[M]}catch(K){G=""}}else{G=J?J[M]:""}}if(!L){return G}x[y]=G;y=z[++F]}while(F<H);return x}}r.override({getHeight:function(z,x){var y=this,A=y.isStyle("display","none"),k,B;if(A){return 0}k=y.dom.offsetHeight;if(Ext.supports.Direct2DBug){B=y.adjustDirect2DDimension(q);if(x){k+=B}else{if(B>0&&B<0.5){k++}}}if(z){k-=y.getBorderWidth("tb")+y.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,B){var z=this,C=z.dom,A=z.isStyle("display","none"),y,x,D;if(A){return 0}if(B&&Ext.supports.BoundingClientRect){y=C.getBoundingClientRect();x=(z.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(y.bottom-y.top):(y.right-y.left)}else{x=C.offsetWidth}if(Ext.supports.Direct2DBug&&!z.vertical){D=z.adjustDirect2DDimension(h);if(B){x+=D}else{if(D>0&&D<0.5){x++}}}if(k){x-=z.getBorderWidth("lr")+z.getPadding("lr")}return(x<0)?0:x},setWidth:function(x,k){var y=this;x=y.adjustWidth(x);if(!k||!y.anim){y.dom.style.width=y.addUnits(x)}else{if(!Ext.isObject(k)){k={}}y.animate(Ext.applyIf({to:{width:x}},k))}return y},setHeight:function(k,x){var y=this;k=y.adjustHeight(k);if(!x||!y.anim){y.dom.style.height=y.addUnits(k)}else{if(!Ext.isObject(x)){x={}}y.animate(Ext.applyIf({to:{height:k}},x))}return y},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(y,k,x){var z=this;if(Ext.isObject(y)){x=k;k=y.height;y=y.width}y=z.adjustWidth(y);k=z.adjustHeight(k);if(!x||!z.anim){z.dom.style.width=z.addUnits(y);z.dom.style.height=z.addUnits(k)}else{if(x===true){x={}}z.animate(Ext.applyIf({to:{width:y,height:k}},x))}return z},getViewSize:function(){var y=this,z=y.dom,x=b.test(z.nodeName),k;if(x){k={width:r.getViewWidth(),height:r.getViewHeight()}}else{k={width:z.clientWidth,height:z.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var x=this,y=(typeof k=="number");if(y&&x.autoBoxAdjust&&!x.isBorderBox()){k-=(x.getBorderWidth("lr")+x.getPadding("lr"))}return(y&&k<0)?0:k},adjustHeight:function(k){var x=this,y=(typeof k=="number");if(y&&x.autoBoxAdjust&&!x.isBorderBox()){k-=(x.getBorderWidth("tb")+x.getPadding("tb"))}return(y&&k<0)?0:k},getColor:function(x,y,D){var A=this.getStyle(x),z=D||D===""?D:"#",C,k,B=0;if(!A||(/transparent|inherit/.test(A))){return y}if(/^r/.test(A)){A=A.slice(4,A.length-1).split(",");k=A.length;for(;B<k;B++){C=parseInt(A[B],10);z+=(C<16?"0":"")+C.toString(16)}}else{A=A.replace("#","");z+=A.length==3?A.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):A}return(z.length>5?z.toLowerCase():y)},setOpacity:function(x,k){var y=this;if(!y.dom){return y}if(!k||!y.anim){y.setStyle("opacity",x)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}y.animate(Ext.applyIf({to:{opacity:x}},k))}return y},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(y){var D=this,x=D.dom,B=D.getStyle("display"),A=x.style.display,E=x.style.position,C=y===h?0:1,k=x.currentStyle,z;if(B==="inline"){x.style.display="inline-block"}x.style.position=B.match(p)?"absolute":"static";z=(parseFloat(k[y])||parseFloat(k.msTransformOrigin.split(" ")[C])*2)%1;x.style.position=E;if(B==="inline"){x.style.display=A}return z},clip:function(){var x=this,y=(x.$cache||x.getCache()).data,k;if(!y[e]){y[e]=true;k=x.getStyle([j,m,l]);y[u]={o:k[j],x:k[m],y:k[l]};x.setStyle(j,t);x.setStyle(m,t);x.setStyle(l,t)}return x},unclip:function(){var x=this,y=(x.$cache||x.getCache()).data,k;if(y[e]){y[e]=false;k=y[u];if(k.o){x.setStyle(j,k.o)}if(k.x){x.setStyle(m,k.x)}if(k.y){x.setStyle(l,k.y)}}return x},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var x=Ext.get(this.insertHtml("beforeBegin","<div class='"+k+"'>"+Ext.String.format(r.boxMarkup,k)+"</div>"));Ext.DomQuery.selectNode("."+k+"-mc",x.dom).appendChild(this.dom);return x},getComputedHeight:function(){var x=this,k=Math.max(x.dom.offsetHeight,x.dom.clientHeight);if(!k){k=parseFloat(x.getStyle(q))||0;if(!x.isBorderBox()){k+=x.getFrameWidth("tb")}}return k},getComputedWidth:function(){var x=this,k=Math.max(x.dom.offsetWidth,x.dom.clientWidth);if(!k){k=parseFloat(x.getStyle(h))||0;if(!x.isBorderBox()){k+=x.getFrameWidth("lr")}}return k},getFrameWidth:function(x,k){return(k&&this.isBorderBox())?0:(this.getPadding(x)+this.getBorderWidth(x))},addClsOnOver:function(y,B,x){var z=this,A=z.dom,k=Ext.isFunction(B);z.hover(function(){if(k&&B.call(x||z,z)===false){return}Ext.fly(A,a).addCls(y)},function(){Ext.fly(A,a).removeCls(y)});return z},addClsOnFocus:function(y,B,x){var z=this,A=z.dom,k=Ext.isFunction(B);z.on("focus",function(){if(k&&B.call(x||z,z)===false){return false}Ext.fly(A,a).addCls(y)});z.on("blur",function(){Ext.fly(A,a).removeCls(y)});return z},addClsOnClick:function(y,B,x){var z=this,A=z.dom,k=Ext.isFunction(B);z.on("mousedown",function(){if(k&&B.call(x||z,z)===false){return false}Ext.fly(A,a).addCls(y);var D=Ext.getDoc(),C=function(){Ext.fly(A,a).removeCls(y);D.removeListener("mouseup",C)};D.on("mouseup",C)});return z},getStyleSize:function(){var A=this,B=this.dom,x=b.test(B.nodeName),z,k,y;if(x){return{width:r.getViewWidth(),height:r.getViewHeight()}}z=A.getStyle([q,h],true);if(z.width&&z.width!="auto"){k=parseFloat(z.width);if(A.isBorderBox()){k-=A.getFrameWidth("lr")}}if(z.height&&z.height!="auto"){y=parseFloat(z.height);if(A.isBorderBox()){y-=A.getFrameWidth("tb")}}return{width:k||A.getWidth(true),height:y||A.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(r.unselectableCls);k.addCls(r.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(r.selectableCls);k.addCls(r.unselectableCls);return k},setVertical:function(A,x){var z=this,y=r.prototype,k;z.vertical=true;if(x){z.addCls(z.verticalCls=x)}z.setWidth=y.setHeight;z.setHeight=y.setWidth;if(!Ext.isIE9m){z.getWidth=y.getHeight;z.getHeight=y.getWidth}z.styleHooks=(A===270)?r.prototype.verticalStyleHooks270:r.prototype.verticalStyleHooks90},setHorizontal:function(){var x=this,k=x.verticalCls;delete x.vertical;if(k){delete x.verticalCls;x.removeCls(k)}delete x.setWidth;delete x.setHeight;if(!Ext.isIE9m){delete x.getWidth;delete x.getHeight}delete x.styleHooks}});r.prototype.styleHooks=v=Ext.dom.AbstractElement.prototype.styleHooks;r.prototype.verticalStyleHooks90=g=Ext.Object.chain(r.prototype.styleHooks);r.prototype.verticalStyleHooks270=o=Ext.Object.chain(r.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};o.width={name:"height"};o.height={name:"width"};o["margin-top"]={name:"marginRight"};o["margin-right"]={name:"marginBottom"};o["margin-bottom"]={name:"marginLeft"};o["margin-left"]={name:"marginTop"};o["padding-top"]={name:"paddingRight"};o["padding-right"]={name:"paddingBottom"};o["padding-bottom"]={name:"paddingLeft"};o["padding-left"]={name:"paddingTop"};o["border-top"]={name:"borderRight"};o["border-right"]={name:"borderBottom"};o["border-bottom"]={name:"borderLeft"};o["border-left"]={name:"borderTop"};if(Ext.isIE7m){v.fontSize=v["font-size"]={name:"fontSize",canThrow:true};v.fontStyle=v["font-style"]={name:"fontStyle",canThrow:true};v.fontFamily=v["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(z,x,y,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];s=d.length;while(s--){i=d[s];w="border"+i+"Width";v["border-"+i.toLowerCase()+"-width"]=v[w]={name:w,styleName:"border"+i+"Style",get:c}}}Ext.getDoc().on("selectstart",function(A,C){var B=document.documentElement,z=r.selectableCls,y=r.unselectableCls,k=C&&C.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(C&&C.nodeType===1&&C!==B){var x=Ext.fly(C);if(x.hasCls(z)){return}if(x.hasCls(y)){A.stopEvent();return}C=C.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,j,k){var g=this,i=!Ext.isEmpty(j),c=function(){g.alignTo(h,e,b,a);Ext.callback(k,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:i});Ext.EventManager.onWindowResize(c,null);if(i){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(j)?j:50})}c();return g},calculateAnchorXY:function(g,i,h,d){var j=this,c=j.el,k=document,e=c.dom==k.body||c.dom==k,l=Math.round,m,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():j.getWidth();a=d.height||e?Ext.Element.getViewHeight():j.getHeight();switch(g){case"tl":m=[0,0];break;case"bl":m=[0,a];break;case"tr":m=[b,0];break;case"c":m=[l(b*0.5),l(a*0.5)];break;case"t":m=[l(b*0.5),0];break;case"l":m=[0,l(a*0.5)];break;case"r":m=[b,l(a*0.5)];break;case"b":m=[l(b*0.5),a];break;case"tc":m=[l(b*0.5),0];break;case"bc":m=[l(b*0.5),a];break;case"br":m=[b,a]}return[m[0]+i,m[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(j,C,e){var D=this,A=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,E=document,B=E.documentElement,o=E.body,z=(B.scrollLeft||o.scrollLeft||0),v=(B.scrollTop||o.scrollTop||0),a,h,s,g,t,u,q,r,w,p,n,b,c,i,l,m,k;j=Ext.get(j.el||j);if(!j||!j.dom){}e=e||[0,0];C=(!C||C=="?"?"tl-bl?":(!(/-/).test(C)&&C!==""?"tl-"+C:C||"tl-bl")).toLowerCase();C=D.convertPositionSpec(C);a=C.match(D._alignRe);p=a[1];n=a[2];w=!!a[3];h=D.getAnchorXY(p,true);s=D.getAnchorToXY(j,n,false);m=s[0]-h[0]+e[0];k=s[1]-h[1]+e[1];if(w){g=D.getWidth();t=D.getHeight();u=j.getRegion();b=p.charAt(0);c=p.charAt(p.length-1);i=n.charAt(0);l=n.charAt(n.length-1);q=((b=="t"&&i=="b")||(b=="b"&&i=="t"));r=((c=="r"&&l=="l")||(c=="l"&&l=="r"));if(m+g>A+z){m=r?u.left-g:A+z-g}if(m<z){m=r?u.right:z}if(k+t>d+v){k=q?u.top-t:d+v-t}if(k<v){k=q?u.bottom:v}}return[m,k]},getAnchor:function(){var b=this.el,c=(b.$cache||b.getCache()).data,a;if(!b.dom){return}a=c._anchor;if(!a){a=c._anchor={}}return a},getAnchorXY:function(d,i,b){var h=this,j=h.getXY(),a=h.el,l=document,c=a.dom==l.body||a.dom==l,k=a.getScroll(),g=c?k.left:i?0:j[0],e=c?k.top:i?0:j[1];return h.calculateAnchorXY(d,g,e,b)},getBox:function(d,i){var e=this,m=i?e.getLocalXY():e.getXY(),j=m[0],g=m[1],k=e.getWidth(),b=e.getHeight(),c,a,l;if(d){c=e.getBorderPadding();a=c.beforeX;l=c.beforeY;j+=a;g+=l;k-=(a+c.afterX);b-=(l+c.afterY)}return{x:j,left:j,0:j,y:g,top:g,1:g,width:k,height:b,right:j+k,bottom:g+b}},calculateConstrainedPosition:function(h,b,l,d){var k=this,c,i=k.floatParent,e=i?i.getTargetEl():null,a,g,j,m=false;if(l&&i){a=e.getXY();g=e.getBorderPadding();a[0]+=g.beforeX;a[1]+=g.beforeY;if(b){j=[b[0]+a[0],b[1]+a[1]]}}else{j=b}h=h||k.constrainTo||e||k.container||k.el.parent();c=(k.constrainHeader?k.header:k).getConstrainVector(h,j,d);if(c){m=b||k.getPosition(l);m[0]+=c[0];m[1]+=c[1]}return m},getConstrainVector:function(e,c,a){var i=this.getRegion(),b=[0,0],g=(this.shadow&&this.constrainShadow&&!this.shadowDisabled)?this.shadow.getShadowSize():undefined,d=false,h=this.constraintInsets;if(!(e instanceof Ext.util.Region)){e=Ext.get(e.el||e).getViewRegion()}if(h){h=Ext.isObject(h)?h:Ext.Element.parseBox(h);e.adjust(h.top,h.right,h.bottom,h.length)}if(c){i.translateBy(c[0]-i.x,c[1]-i.y)}if(a){i.right=i.left+a[0];i.bottom=i.top+a[1]}if(g){e.adjust(g[0],-g[1],-g[2],g[3])}if(i.right>e.right){d=true;b[0]=(e.right-i.right)}if(i.left+b[0]<e.left){d=true;b[0]=(e.left-i.left)}if(i.bottom>e.bottom){d=true;b[1]=(e.bottom-i.bottom)}if(i.top+b[1]<e.top){d=true;b[1]=(e.top-i.top)}return d?b:false},getOffsetsTo:function(a){var c=this.getXY(),b=Ext.fly(a.el||a,"_internal").getXY();return[c[0]-b[0],c[1]-b[1]]},getRegion:function(){var a=this.getBox();return new Ext.util.Region(a.top,a.right,a.bottom,a.left)},getViewRegion:function(){var g=this,c=g.el,a=c.dom.nodeName==="BODY",e,j,h,i,d,b,k;if(a){j=c.getScroll();d=j.left;i=j.top;b=Ext.dom.AbstractElement.getViewportWidth();k=Ext.dom.AbstractElement.getViewportHeight()}else{e=g.getBorderPadding();h=g.getXY();d=h[0]+e.beforeX;i=h[1]+e.beforeY;b=g.getWidth(true);k=g.getHeight(true)}return new Ext.util.Region(i,d+b,i+k,d)},move:function(j,b,c){var g=this,m=g.getXY(),k=m[0],i=m[1],d=[k-b,i],l=[k+b,i],h=[k,i-b],a=[k,i+b],e={l:d,left:d,r:l,right:l,t:h,top:h,up:h,b:a,bottom:a,down:a};j=j.toLowerCase();g.setXY([e[j][0],e[j][1]],c)},removeAnchor:function(){var a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return this},setBox:function(e,a){var g=this,b=g.el,j=e.x,i=e.y,m=[j,i],k=e.width,d=e.height,c=(g.constrain||g.constrainHeader),l=c&&g.calculateConstrainedPosition(null,[j,i],false,[k,d]);if(l){j=l[0];i=l[1]}if(!a||!b.anim){g.setSize(k,d);g.setXY([j,i]);g.afterSetPosition(j,i)}else{g.animate(Ext.applyIf({to:{x:j,y:i,width:b.adjustWidth(k),height:b.adjustHeight(d)},listeners:{afteranimate:Ext.Function.bind(g.afterSetPosition,g,[j,i])}},a))}return g},setRegion:function(b,a){return this.setBox({x:b.left,y:b.top,width:b.right-b.left,height:b.bottom-b.top},a)},translatePoints:function(a,c){var b=this.translateXY(a,c);return{left:b.x,top:b.y}},translateXY:function(h,e){var d=this,b=d.el,i=b.getStyle(d._positionTopLeft),a=i.position=="relative",c=parseFloat(i.left),g=parseFloat(i.top),j=d.getXY();if(Ext.isArray(h)){e=h[1];h=h[0]}if(isNaN(c)){c=a?0:b.dom.offsetLeft}if(isNaN(g)){g=a?0:b.dom.offsetTop}c=(typeof h=="number")?h-j[0]+c:undefined;g=(typeof e=="number")?e-j[1]+g:undefined;return{x:c,y:g}}},0,0,0,0,0,0,[Ext.util,"Positionable"],0));(Ext.cmd.derive("Ext.dom.Element",Ext.dom.AbstractElement,function(a){var b="hidden",g=document,j="visibility",c="display",k="none",e=Ext.baseCSSPrefix+"masked",l=Ext.baseCSSPrefix+"masked-relative",i=Ext.baseCSSPrefix+"mask-msg",m=/^body/i,h,d=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},n=function(t){var s=[],o=-1,q,p;for(q=0;p=t[q];q++){if(p.scrollTop>0||p.scrollLeft>0){s[++o]=p}}return s};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(r,q){var o=this;q=q||o.dom;try{if(Number(r)){Ext.defer(o.focus,r,o,[null,q])}else{q.focus()}}catch(p){}return o},blur:function(){var o=this,q=o.dom;if(q!==document.body){try{q.blur()}catch(p){}return o}else{return o.focus(undefined,q)}},isBorderBox:function(){var o=Ext.isBorderBox;if(o&&Ext.isIE7m){o=!((this.dom.tagName||"").toLowerCase() in d)}return o},hover:function(p,o,r,q){var s=this;s.on("mouseenter",p,r||s.dom,q);s.on("mouseleave",o,r||s.dom,q);return s},getAttributeNS:function(p,o){return this.getAttribute(o,p)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(o,q){var r=this.dom,p;if(q){p=typeof r[q+":"+o];if(p!="undefined"&&p!="unknown"){return r[q+":"+o]||null}return null}if(o==="for"){o="htmlFor"}return r[o]||null}:function(o,p){var q=this.dom;if(p){return q.getAttributeNS(p,o)||q.getAttribute(p+":"+o)}return q.getAttribute(o)||q[o]||null},cacheScrollValues:function(){var s=this,r,q,p,t=[],o=function(){for(p=0;p<r.length;p++){q=r[p];q.scrollLeft=t[p][0];q.scrollTop=t[p][1]}};if(!Ext.DomQuery.pseudos.isScrolled){Ext.DomQuery.pseudos.isScrolled=n}r=s.query(":isScrolled");for(p=0;p<r.length;p++){q=r[p];t[p]=[q.scrollLeft,q.scrollTop]}return o},autoBoxAdjust:true,isVisible:function(o){var q=this,r=q.dom,p=r.ownerDocument.documentElement;if(!h){h=new a.Fly()}while(r!==p){if(!r||r.nodeType===11||(h.attach(r)).isStyle(j,b)||h.isStyle(c,k)){return false}if(!o){break}r=r.parentNode}return true},isDisplayed:function(){return !this.isStyle(c,k)},enableDisplayMode:function(p){var o=this;o.setVisibilityMode(a.DISPLAY);if(!Ext.isEmpty(p)){(o.$cache||o.getCache()).data.originalDisplay=p}return o},mask:function(o,y,v){var A=this,r=A.dom,s=r.style.setExpression,u=(A.$cache||A.getCache()).data,q=u.maskShimEl,x=u.maskEl,p=u.maskMsg,t,w;if(!(m.test(r.tagName)&&A.getStyle("position")=="static")){A.addCls(l)}if(x){x.remove()}if(p){p.remove()}if(q){q.remove()}if(Ext.isIE6){q=Ext.DomHelper.append(r,{tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"},true);u.maskShimEl=q;q.setDisplayed(true)}Ext.DomHelper.append(r,[{cls:Ext.baseCSSPrefix+"mask",style:"top:0;left:0;"},{cls:y?i+" "+y:i,cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-inner",cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-text",html:o||""}}}]);p=Ext.get(r.lastChild);x=Ext.get(p.dom.previousSibling);u.maskMsg=p;u.maskEl=x;A.addCls(e);x.setDisplayed(true);if(typeof o=="string"){p.setDisplayed(true);p.center(A)}else{p.setDisplayed(false)}if(!Ext.supports.IncludePaddingInWidthCalculation&&s){try{x.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"');t='this.parentNode.clientWidth + "px"';if(q){q.dom.style.setExpression("width",t)}x.dom.style.setExpression("width",t)}catch(z){}}if(!Ext.supports.IncludePaddingInHeightCalculation&&s){try{w="this.parentNode."+(r==g.body?"scrollHeight":"offsetHeight")+' + "px"';if(q){q.dom.style.setExpression("height",w)}x.dom.style.setExpression("height",w)}catch(z){}}else{if(Ext.isIE9m&&!(Ext.isIE7&&Ext.isStrict)&&A.getStyle("height")=="auto"){if(q){q.setSize(undefined,v||A.getHeight())}x.setSize(undefined,v||A.getHeight())}}return x},unmask:function(){var s=this,t=(s.$cache||s.getCache()).data,r=t.maskEl,p=t.maskShimEl,o=t.maskMsg,q;if(r){q=r.dom.style;if(q.clearExpression){q.clearExpression("width");q.clearExpression("height")}if(r){r.remove();delete t.maskEl}if(o){o.remove();delete t.maskMsg}s.removeCls([e,l]);if(p){q=p.dom.style;if(q.clearExpression){q.clearExpression("width");q.clearExpression("height")}p.remove();delete t.maskShimEl}}},isMasked:function(){var q=this,s=(q.$cache||q.getCache()).data,p=s.maskEl,o=s.maskMsg,r=false;if(p&&p.isVisible()){if(o){o.center(q)}r=true}return r},createShim:function(){var o=g.createElement("iframe"),p;o.frameBorder="0";o.className=Ext.baseCSSPrefix+"shim";o.src=Ext.SSL_SECURE_URL;p=Ext.get(this.dom.parentNode.insertBefore(o,this.dom));p.autoBoxAdjust=false;return p},addKeyListener:function(p,r,q){var o;if(typeof p!="object"||Ext.isArray(p)){o={target:this,key:p,fn:r,scope:q}}else{o={target:this,key:p.key,shift:p.shift,ctrl:p.ctrl,alt:p.alt,fn:r,scope:q}}return new Ext.util.KeyMap(o)},addKeyMap:function(o){return new Ext.util.KeyMap(Ext.apply({target:this},o))},on:function(o,r,q,p){Ext.EventManager.on(this,o,r,q||this,p);return this},un:function(o,q,p){Ext.EventManager.un(this,o,q,p||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this);return this},select:function(o){return a.select(o,false,this.dom)}}},0,0,0,0,0,[[Ext.util.Positionable.prototype.mixinId||Ext.util.Positionable.$className,Ext.util.Positionable]],[Ext.dom,"Element",Ext,"Element",Ext.core,"Element"],function(){var DOC=document,EC=Ext.cache,Element=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/^a|button|embed|iframe|input|object|select|textarea$/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e<eLen;e++){me.on(eventName[e],fn)}return me}me.on(eventName,fn);return me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1,nx;if(data.isCleaned&&forceReclean!==true){return me}while(n){nx=n.nextSibling;if(n.nodeType==3){if(!(nonSpaceRe.test(n.nodeValue))){dom.removeChild(n)}else{if(nx&&nx.nodeType==3){n.appendData(Ext.String.trim(nx.data));dom.removeChild(nx);nx=n.nextSibling;n.nodeIndex=++ni}}}else{internalFly.attach(n).clean();n.nodeIndex=++ni}n=nx}data.isCleaned=true;return me},load:function(options){this.getLoader().load(options);return this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;if(!loader){data.loader=loader=new Ext.ElementLoader({target:me})}return loader},syncContent:function(source){source=Ext.getDom(source);var sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=this.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,destNode,sourceNode,nodeType,newAttrs,attLen,attName;if(Ext.isIE9m&&dest.mergeAttributes){dest.mergeAttributes(source,true);dest.src=source.src}else{newAttrs=source.attributes;attLen=newAttrs.length;for(i=0;i<attLen;i++){attName=newAttrs[i].name;if(attName!=="id"){dest.setAttribute(attName,newAttrs[i].value)}}}if(sourceLen!==destLen){dest.innerHTML=source.innerHTML;return}for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destNode=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destNode.nodeType||(nodeType===1&&sourceNode.tagName!==destNode.tagName)){dest.innerHTML=source.innerHTML;return}if(nodeType===3){destNode.data=sourceNode.data}else{if(sourceNode.id&&destNode.id!==sourceNode.id){destNode.id=sourceNode.id}destNode.style.cssText=sourceNode.style.cssText;destNode.className=sourceNode.className;internalFly.attach(destNode).syncContent(sourceNode)}}},update:function(html,loadScripts,callback){var me=this,id,dom,interval;if(!me.dom){return me}html=html||"";dom=me.dom;if(loadScripts!==true){dom.innerHTML=html;Ext.callback(callback,me);return me}id=Ext.id();html+='<span id="'+id+'"></span>';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b<d;++b){e.push(this.transformElement(c[b]))}return this},invoke:function(d,a){var g=this.elements,e=g.length,c,b;d=Ext.dom.Element.prototype[d];for(b=0;b<e;b++){c=g[b];if(c){d.apply(this.getElement(c),a)}}return this},item:function(b){var c=this.elements[b],a=null;if(c){a=this.getElement(c)}return a},slice:function(){return this.elements.slice.apply(this.elements,arguments)},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},insert:function(b,a){Ext.Array.insert(this.elements,b,a)},filter:function(b){var h=this,c=h.elements,g=c.length,d=[],e=0,j=typeof b=="function",k,a;for(;e<g;e++){a=c[e];k=false;if(a){a=h.getElement(a);if(j){k=b.call(a,a,h,e)!==false}else{k=a.is(b)}if(k){d.push(h.transformElement(a))}}}h.elements=d;return h},indexOf:function(a){return Ext.Array.indexOf(this.elements,this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g<a;g++){c.push(Ext.get(d[g]))}return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(e,i){e=[].concat(e);var d=this,g=d.elements,c=e.length,h,b,a;for(a=0;a<c;a++){h=e[a];if((b=(g[h]||g[h=d.indexOf(h)]))){if(i){if(b.dom){b.remove()}else{Ext.removeNode(b)}}Ext.Array.erase(g,h,1)}}return d}},1,0,0,0,0,0,[Ext.dom,"CompositeElementLite",Ext,"CompositeElementLite"],function(){this.importElementMethods();this.prototype.on=this.prototype.addListener;if(Ext.DomQuery){Ext.dom.Element.selectorFunction=Ext.DomQuery.select}Ext.dom.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return new Ext.CompositeElementLite(c)};Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}}));(Ext.cmd.derive("Ext.dom.CompositeElement",Ext.dom.CompositeElementLite,{alternateClassName:"Ext.CompositeElement",getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}},0,0,0,0,0,0,[Ext.dom,"CompositeElement",Ext,"CompositeElement"],function(){Ext.dom.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)}}));Ext.select=Ext.Element.select;
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/index.html
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/index.html	(revision 18732)
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>Welcome to Ext JS 4.2</title>
+    <meta name="description" content="Create amazing web apps built on web standards. Sencha Touch, HTML5 mobile app framework. Ext JS, cross-browser JavaScript framework. Ext GWT" />
+
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
+
+    <link rel="stylesheet" type="text/css" media="screen, projection, print" href="welcome/css/welcome.css" />
+    <!--[if lt IE 9]>
+    <![endif]-->
+    <!--[if lt IE 8]>
+    <![endif]-->
+    <link rel="alternate" type="application/rss+xml" title="Sencha Blog" href="http://feeds.feedburner.com/SenchaBlog" />
+    <link rel="alternate" type="application/rss+xml" title="Sencha in the News" href="http://www.sencha.com/company/news-rss">
+    <link rel="alternate" type="application/rss+xml" title="Sencha Press Releases" href="http://www.sencha.com/company/press-rss">
+    <link rel="alternate" type="application/rss+xml" title="Careers at Sencha" href="http://www.sencha.com/company/careers-rss">
+
+    <script src="http://use.typekit.com/uxj6dew.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+    <!--[if lt IE 9]>
+    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js" type="text/javascript" charset="utf-8"></script>
+    <![endif]-->
+    <!--[if lt IE 7]>
+      <link rel="stylesheet" type="text/css" media="screen, projection" href="welcome/css/welcome_ie6.css" />
+    <![endif]-->
+</head>
+<body>
+    <div id="content">
+        <header>
+            <h5 id="logo"><a href="http://www.sencha.com">Sencha</a></h5>
+        </header>
+        <section id="page">
+            <div class="auto_columns two">
+                <div class="column">
+                    <h2>Welcome to the <strong>Ext JS 4.2</strong>!</h2>
+                    <p class="intro">Ext JS 4.2 is a pure JavaScript application framework that works everywhere from IE6 to the latest Chrome. It enables you to create the best cross-platform applications using nothing but a browser, and has a phenomenal API.</p>
+                    <p class="button-group"><a href="examples/index.html" class="button-link inline">View the Examples</a> <a href="http://www.sencha.com/forum/forumdisplay.php?79-Ext-JS-Community-Forums-4.x" class="more-icon">Discuss Ext JS 4 on the forum</a></p>
+                </div>
+                <div class="column">
+                    <img src="welcome/img/hero-extjs4-alt.png" id="feature-img" class="pngfix" />
+                    <div class="auto_columns two" id="right">
+                        <div class="column">
+                            <h3>What&rsquo;s New</h3>
+                            <p>We have also been posting summaries of new features and changes to <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">our blog</a>:</p>
+                            <ul class="type13">
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Performance enhancement over 4.0</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Grid</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Border Layout</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">XTemplate</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Overrides</a></li>
+                            </ul>
+                            <p><a href="http://www.sencha.com/products/extjs/" class="more-icon">Learn more on sencha.com</a></p>
+                            <p><a href="docs/index.html" class="more-icon">API Docs</a></p>
+                            <p><a href="release-notes.html" class="more-icon">Release Notes</a></p>
+                        </div>
+                        <div class="column">
+                            <h3>Upgrading</h3>
+                            <p>Check out our <a href="docs/#!/guide/upgrade">upgrade guide</a> to see what has changed.</p>
+                            <p>Sencha also offers <a href="http://www.sencha.com/training/">training courses</a> and <a href="http://www.sencha.com/support/services/">professional services</a> for companies wishing to use Ext JS 4.</p>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+        </section>
+        <footer>
+            <ul class="zero inline-social">
+                <li><a href="http://twitter.com/sencha" class="twitter">Twitter</a></li>
+                <li><a href="http://www.facebook.com/senchainc" class="facebook">Facebook</a></li>
+                <li><a href="http://notes.sencha.com/" class="tumblr">Tumblr</a></li>
+                <li><a href="http://j.mp/sencha-in" class="linkedin">LinkedIn</a></li>
+                <li><a href="http://feeds.feedburner.com/SenchaBlog" class="rss">RSS Feed</a></li>
+                <li><a href="http://www.vimeo.com/sencha" class="vimeo">Vimeo</a></li>
+            </ul>
+            <p>&copy; 2012 Sencha</p>
+        </footer>
+    </div>
+</body>
+</html>
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/license.txt
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/license.txt	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/license.txt	(revision 18732)
@@ -0,0 +1,35 @@
+Ext JS 4.2 - JavaScript Library
+Copyright (c) 2006-2013, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/release-notes.html
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/release-notes.html	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/release-notes.html	(revision 18732)
@@ -0,0 +1,4819 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+    <head>
+        <title>
+            Ext JS Release Notes
+        </title>
+        <link rel="stylesheet" type="text/css" href="welcome/release-notes.css" media="all">
+    </head>
+    <body>
+        <p>
+            <a href="http://www.sencha.com/" id="logo" name="logo">Ext JS - JavaScript Framework</a>
+        </p>
+        <div id="releases">
+<!-- ************************************************************************** -->
+            <!--
+            When a release is made, copy the generated div below this dynamic section
+            and then edit the queries below to adjust for the next release.
+            -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.1</h1>
+                <p class="notes">
+                    Release Date: May 16, 2013<br>
+                    Version Number: 4.2.1.883
+                </p>
+
+                <h2>General</h2>
+                <p>The final release of Ext JS 4.2.1 contains numerous fixes and small
+                    enhancements requested by customers and the community. While the
+                    details are below, there are several items worth calling out.
+
+                <h3>New Big Data Example</h3>
+                <p>The new
+                    <a href="http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/build/KitchenSink/ext-theme-neptune/">
+                    Big Data example</a> shows off all of the major grid features
+                    and plugins working together in a single grid. It also shows off a
+                    text field in a grid column header! Head over and check it out!
+
+                <h3>Sencha Cmd 3.1.2</h3>
+                <p>To coincide with this release, Sencha Cmd 3.1.2 is also now available.
+                    The primary change with regards to Cmd is that the packages produced
+                    by Ext JS now stay inside the "ext" folder when you generate a new
+                    application or workspace. The "ext-*" packages previous saved to your
+                    "packages" folder can be removed. For details see the
+                    <a href="http://cdn.sencha.com/cmd/3.1.2.342/release-notes.html">release notes
+                    for Sencha Cmd 3.1.2</a>. If you are using Sencha Cmd, it is
+                    recommended that you upgrade to the new version.
+
+                <h3>Locale Package Consolidation</h3>
+                <p>In Ext JS 4.2.0 we migrated the locale files in to Sencha Cmd packages
+                    to facilitate switching between locales. The downside is that this
+                    produced a lot of small packages that needed to be required in your
+                    <tt>"app.json"</tt> (or used as pure JS files). As an enhancement to
+                    this process in Ext JS 4.2.1 we have consolidated all of the locales
+                    into the <tt>ext-locale</tt> package. The legacy file paths are still
+                    preserved, but if you are using locale packages, you can now just do
+                    this in your <tt>"app.json"</tt> file:
+
+<pre>"requires": [
+    'ext-locale'
+]</pre>
+                <p>You will still need to set <tt>app.locale</tt> to pick up the proper
+                    locale overrides. They are just all located in the one package in
+                    this release.
+
+                <h2>New Features</h2>
+<ul>
+    <li class="component">Core (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8123</span>&#160;<span class="ticket-notes">Enhance Ext.util.Format.fileSize to calculate gigabytes (GB)</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Layouts (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9509</span>&#160;<span class="ticket-notes">A splitter's collapseOnDblClick cannot be disabled via the object's config</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Locale (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9653</span>&#160;<span class="ticket-notes">Locales should be consolidated to a single ext-locale package instead of requiring each locale independently</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Misc (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9389</span>&#160;<span class="ticket-notes">Add SASS variables that can be used to prevent "default" UIs from being generated.</span>
+            </li>
+        </ul>
+    </li>
+Total: 4</ul>
+                <h2>Bugs Fixed</h2>
+<ul>
+    <li class="component">Button (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9323</span>&#160;<span class="ticket-notes">Focus is not set on buttons in IE</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9658</span>&#160;<span class="ticket-notes">Button layout fails when button component height is too small</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9864</span>&#160;<span class="ticket-notes">Disabled buttons can still receive focus using TAB</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Charts (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7235</span>&#160;<span class="ticket-notes">Series label color is not applied and location is incorrect</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9393</span>&#160;<span class="ticket-notes">Series instance cannot be initialized properly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9422</span>&#160;<span class="ticket-notes">Issues with custom font, padding, itemSpacing of chart legend box</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9536</span>&#160;<span class="ticket-notes">Stacked Column Chart with Missing Y Value has Incorrect Maximum</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Core (10)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8286</span>&#160;<span class="ticket-notes">Element.switchOff() and other animation methods do not call users callback on complete</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8764</span>&#160;<span class="ticket-notes">Element.on/un and Observable.un should accept function names as Observable.on does</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9339</span>&#160;<span class="ticket-notes">TextMetrics ignores container styles</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9405</span>&#160;<span class="ticket-notes">CSS reset style rule remains on the body that sets border box</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9469</span>&#160;<span class="ticket-notes">Ext.Date format creates global variables</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9535</span>&#160;<span class="ticket-notes">Ext.util.Format.number incorrect result with custom locale and value < 1000</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9590</span>&#160;<span class="ticket-notes">mouseoverItem in Ext.view.View</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9604</span>&#160;<span class="ticket-notes">Ext.clone needs hasOwnProperty check for IE browsers with enumerable bug</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9630</span>&#160;<span class="ticket-notes"> Ext.destroy should support destroying stores</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9689</span>&#160;<span class="ticket-notes">Resizable: resize handles are always transparent</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Data (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8977</span>&#160;<span class="ticket-notes">PagingMemoryProxy's load mask is never removed</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9326</span>&#160;<span class="ticket-notes">The removeAll method does not completely clear a buffered store</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9523</span>&#160;<span class="ticket-notes">Changing id in filtered store skips snapshot</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9550</span>&#160;<span class="ticket-notes">Store removeAll doesn't clear snapshot</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9811</span>&#160;<span class="ticket-notes">Stores configured with autoDestroy: true may produce JavaScript errors in certain cases</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9815</span>&#160;<span class="ticket-notes">AbstractMixedCollection does not filter out records with duplicate id's when added in bulk</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Direct (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7766</span>&#160;<span class="ticket-notes">Timeout is ignored if form is submitted with DirectSubmit</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9250</span>&#160;<span class="ticket-notes">DirectLoad and DirectSubmit actions should resolve Direct methods on first call</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9295</span>&#160;<span class="ticket-notes">Direct PollProvider does not handle erroneous input properly</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Documentation (7)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7521</span>&#160;<span class="ticket-notes">Lockable mixin is not listed for Grid in the docs</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8004</span>&#160;<span class="ticket-notes">Documentation on #SenchaCmd for #ExtJS doesn't mention to use latest version of #SenchaSDK tools. Can easily get caught</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8487</span>&#160;<span class="ticket-notes">Ext.Component.afterRender marked as private</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8488</span>&#160;<span class="ticket-notes">Ext.dd.DragZone.destroy should be marked public</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9294</span>&#160;<span class="ticket-notes">Ext.ComponentQuery needs more documentation</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9636</span>&#160;<span class="ticket-notes">Ext.app.Application name should be documented as mandatory</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9659</span>&#160;<span class="ticket-notes">The Building Themes for ExtJS guide is empty</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Draw (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9786</span>&#160;<span class="ticket-notes">Drawing: Re sizable Sencha Logo: Displaying JS Error on Loading the example on IE9 Browser.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9795</span>&#160;<span class="ticket-notes">Drawing : Browser Logos : Displaying JS error upon  closing the Draw component panel.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Events (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9261</span>&#160;<span class="ticket-notes">Observable.observe does not capture events properly</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Examples (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9654</span>&#160;<span class="ticket-notes">Basic Templating example has incorrect XTemplate statement</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9757</span>&#160;<span class="ticket-notes">Combination Examples:  Web Desktop : Displaying JS error while selecting options from the menu.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Forms (17)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7355</span>&#160;<span class="ticket-notes">numberfield's autoStripChars does not work on numbers with exponents such as "1e42"</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7792</span>&#160;<span class="ticket-notes">Forms scrolls in window in Chrome</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8006</span>&#160;<span class="ticket-notes">Combobox field value not correct on select event when leaving field using mouse click</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8067</span>&#160;<span class="ticket-notes">HtmlEditor - tabbing into editor field in Internet Explorer 9 throws error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8158</span>&#160;<span class="ticket-notes">Triggerfield height can not be adjusted with setHeight()</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8278</span>&#160;<span class="ticket-notes">Background color does not follow growing text</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8542</span>&#160;<span class="ticket-notes">htmleditor places a "br" tag in the editor field after pressing the source edit button in firefox</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9303</span>&#160;<span class="ticket-notes">HtmlEditor throws JS error when selecting certain toolbar items with selected text on IE</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9439</span>&#160;<span class="ticket-notes">Loading large amount of data in the HtmlEditor locks up FF19 / FF20</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9487</span>&#160;<span class="ticket-notes">Default 'x-form-file-wrap' class not applied to filefield when form contains a fieldBodyCls in fieldDefaults</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9501</span>&#160;<span class="ticket-notes">HTMLEditor - setValue does not work when component is not rendered</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9527</span>&#160;<span class="ticket-notes">HtmlEditor causes form isDirty() to be true</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9555</span>&#160;<span class="ticket-notes">combineLabels does not work</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9558</span>&#160;<span class="ticket-notes">In tabbed panel, data doesn't load in HtmlEditor</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9603</span>&#160;<span class="ticket-notes">Combo is too slow when loading a large amount of items</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9641</span>&#160;<span class="ticket-notes">FieldSet fieldvaliditychange and fielderrorchange don't fire</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9766</span>&#160;<span class="ticket-notes">Double clicking on editor causes: NS_ERROR_INVALID_POINTER</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Grid (44)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5245</span>&#160;<span class="ticket-notes">Grid column lines are shown for hidden columns if RowExpander is used</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5543</span>&#160;<span class="ticket-notes">focus is lost on an active cell editor in an editable grid</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6294</span>&#160;<span class="ticket-notes">When tabbing quickly through cell editing, the cell editor drops out of edit mode (intermittent)</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6734</span>&#160;<span class="ticket-notes">Hidden grid column's height is not properly measured when wordwrap is used</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7331</span>&#160;<span class="ticket-notes">HeaderContainer defaults doesn't work if there is a column with locked: true</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7437</span>&#160;<span class="ticket-notes">GridFilters feature doesn't work for unlocked columns</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7855</span>&#160;<span class="ticket-notes">Setting a value in a grid removes focus from textfield</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8795</span>&#160;<span class="ticket-notes">Grids lose horizontal scroll position on row focus in IE</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8910</span>&#160;<span class="ticket-notes">Grid filters aren't taking a lockingPartner into account when filtering</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9001</span>&#160;<span class="ticket-notes">VERY slow tree grid on second load with bufferedrenderer plugin</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9095</span>&#160;<span class="ticket-notes">blur() not firing when pressing tab to leave datefield grid cell editor</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9130</span>&#160;<span class="ticket-notes">Bufferedrenderer can lose track of scroll position if user scrolls grid rapidly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9139</span>&#160;<span class="ticket-notes">Buffered renderer crashes when modifying store before rendered</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9262</span>&#160;<span class="ticket-notes">drag/drop plugins cause grid focus and scrollbar reset with prevent focus</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9367</span>&#160;<span class="ticket-notes">Cell beforeedit event is fired twice when clicking on an editable cell</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9376</span>&#160;<span class="ticket-notes">Grid RowExpander does not work with locking enabled</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9379</span>&#160;<span class="ticket-notes">Grid performance with many columns and editing</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9380</span>&#160;<span class="ticket-notes">Grid column lines not synced with header in locked+grouped sample</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9382</span>&#160;<span class="ticket-notes">Load mask disappears too soon when buffered store loads pages.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9385</span>&#160;<span class="ticket-notes">Tab key not working on grid cell edit with group feature, but ungrouped store</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9390</span>&#160;<span class="ticket-notes">GridPanel reconfigure does not refresh the data on reconfigure if there's a buffered renderer plugin.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9397</span>&#160;<span class="ticket-notes">Grids: Infinite Grid: Vertical scroll bar size increases after sorting any columns</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9402</span>&#160;<span class="ticket-notes">forceFit calculations being applied too late upon reconfigure.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9406</span>&#160;<span class="ticket-notes">Grid not displaying emptyText when container layout 'auto'</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9411</span>&#160;<span class="ticket-notes">Meta config example throws errors on mouseover after reloading metadata</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9426</span>&#160;<span class="ticket-notes">Ellipsis no longer appear in grid column header when column title is long</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9438</span>&#160;<span class="ticket-notes">Nested column headers do not get the correct height when using white-space:normal</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9453</span>&#160;<span class="ticket-notes">Resizing last column of grid throws error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9454</span>&#160;<span class="ticket-notes">Hiding a wide column in a crowded forceFit grid can shrink the column upon show.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9457</span>&#160;<span class="ticket-notes">Auto align feature on column divider incorrect in IE in some cases</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9475</span>&#160;<span class="ticket-notes">Kitchen Sink: Grids: Big Data: Emptying cell data under 'Name' column and then clicking on 'Update' button under row editor displays JS  error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9476</span>&#160;<span class="ticket-notes">Kitchen Sink: Grids: Big Data: Drag and drop 'Notice Period' column into locked area displays JS error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9532</span>&#160;<span class="ticket-notes">Column widths go wrong with hidden column and forcefit true</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9562</span>&#160;<span class="ticket-notes">Grid summary columns not resizing/behaving same as regular grid columns</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9595</span>&#160;<span class="ticket-notes">Kitchen Sink: Big Data: Locking the 'Absences' group displays JS error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9637</span>&#160;<span class="ticket-notes">Row Grouping Grid with locked column presents incorrect row alignment with large datasets</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9662</span>&#160;<span class="ticket-notes">Combination Examples: Kitchen Sink: Grouped Grid: Expanding a group for second time displays JS error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9691</span>&#160;<span class="ticket-notes">RowEditor should flip its buttons to the top when there is not room to scroll them into view.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9756</span>&#160;<span class="ticket-notes">Combination Examples: Kitchen sink: Drag and Drop: Grid to form: The swapping and the Drag and Drop Functionality is not working on IE10 Browser.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9804</span>&#160;<span class="ticket-notes">Grid doesn't check hidden state in hide/show</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9805</span>&#160;<span class="ticket-notes">Column events not fired correctly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9819</span>&#160;<span class="ticket-notes">collapseAll() and expandAll() create circular logic that locks up the browser when a grid is grouped and locked</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9851</span>&#160;<span class="ticket-notes">Grouping doubles up on expand / collapse when buffer rendered and data fits within view height.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9860</span>&#160;<span class="ticket-notes">Kitchen sink: Big Data: Collapsing a group displays JS error</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Layouts (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7407</span>&#160;<span class="ticket-notes">Adding a collapsed region to a border layout throws an error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8000</span>&#160;<span class="ticket-notes">Borders problem with collapsible and 'mini' collapseMode within border layout</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9272</span>&#160;<span class="ticket-notes">Anchor and Column layouts have unnecessary gap for scrolling</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9305</span>&#160;<span class="ticket-notes">Anchor layout does not exclude scrollbar width when the autoScroll=true and anchor=100%</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9401</span>&#160;<span class="ticket-notes">In some cases constraints like minHeight can cause layout failures</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9714</span>&#160;<span class="ticket-notes">Layout Managers: Complex Layout: The field is void in editable mode when switched using "Tab" key in keyboard.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Locale (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7179</span>&#160;<span class="ticket-notes">Missing translation for TextField blankText config in cs locale</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7426</span>&#160;<span class="ticket-notes">Locale override remains in German Locale file and comments state they should be removed for 4.1.x</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9580</span>&#160;<span class="ticket-notes">Polish translation targets msg property of AbstractView for localized text but should be loadingText</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">MVC (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9486</span>&#160;<span class="ticket-notes">Application inheritance does not work properly</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Menu (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9296</span>&#160;<span class="ticket-notes">Menu with floating false is not positioned properly in right aligned HTML</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Misc (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8419</span>&#160;<span class="ticket-notes">MessageBox does not respect construction-time configs vs those passed to each show call</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9391</span>&#160;<span class="ticket-notes">LTR scrolling is not handled correctly when RTL overrides are included</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9877</span>&#160;<span class="ticket-notes">RowNumberer column header shows ellipsis in IE8</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Panel (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9823</span>&#160;<span class="ticket-notes">the *-{ui} class is not being added to the header of a panel</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Selection Model (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9003</span>&#160;<span class="ticket-notes">Grid selection range doesn't select correctly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9288</span>&#160;<span class="ticket-notes">Row selection model does not handle vetoed mousedown events</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9357</span>&#160;<span class="ticket-notes">No way to restrict method of deselection in single selection model to ctrl+click as it was in previous versions</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tabs (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7337</span>&#160;<span class="ticket-notes">Nested tab panels don't maintain constraint or masking with windows</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9625</span>&#160;<span class="ticket-notes">Side tabs throw exception if tabs are hidden initially.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Theme (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8453</span>&#160;<span class="ticket-notes">Tree lines have 1px gaps in Neptune theme</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8749</span>&#160;<span class="ticket-notes">Neptune - Create color variables for Global Error (red) and Confirmation (green)</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9423</span>&#160;<span class="ticket-notes">Accessibility theme needs tool icons for window move and resize</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9824</span>&#160;<span class="ticket-notes">There is no variable to control the base path of resources used in the CSS output</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">ToolTips (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8824</span>&#160;<span class="ticket-notes">Tooltip cuts off content on Chrome</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8935</span>&#160;<span class="ticket-notes">Tooltips aligning using left origin when in RTL mode</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tree (8)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8327</span>&#160;<span class="ticket-notes">Ext.tree.Panel ignores value of Ext.enableFx</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9229</span>&#160;<span class="ticket-notes">remote tree node expand not take proxy.extraParams set at beforeexpand</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9414</span>&#160;<span class="ticket-notes">Dropping to tree from grid causes JavaScript error due to nodeHighlightOnDrop</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9462</span>&#160;<span class="ticket-notes">Tree node arrow in IE10 do not show expand state properly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9511</span>&#160;<span class="ticket-notes">beforeitemsexpand should fire before beforeload</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9515</span>&#160;<span class="ticket-notes">expandAll's callback is called for the last node in every descendant non-leaf</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9798</span>&#160;<span class="ticket-notes">Trees : Locking Tree Grid: Unable to check or uncheck the check boxes under ‚ÄúDone‚Äù column when any of the columns are hidden</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-9832</span>&#160;<span class="ticket-notes">Combination exampes: Kitchen Sink: Trees: Two Trees: Unable to expand/collapse & move on the folder in the tree panel in a specific scenario.</span>
+            </li>
+        </ul>
+    </li>
+Total: 133</ul>
+                <h2>Known Issues</h2>
+<ul>
+    <li class="component">Animation (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5487</span>&#160;<span class="ticket-notes">accordion animation doesn't always complete if you click frequently</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Charts (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5108</span>&#160;<span class="ticket-notes">can't create label for  type area series</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Core (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4942</span>&#160;<span class="ticket-notes">Element#tgetWidth() returns an incorrect result for naturally widthed absolutely positioned elements in some cases.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Data (5)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3316</span>&#160;<span class="ticket-notes">Ext.ux.grid.FiltersFeature cannot restore state</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4319</span>&#160;<span class="ticket-notes">Use a parameter other than &#39;id&#39; for server calls</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4335</span>&#160;<span class="ticket-notes">Duplicate records when calling sync() on a autoSync store</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4372</span>&#160;<span class="ticket-notes">Grid Filtering Example: Bug with database return packet</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6881</span>&#160;<span class="ticket-notes">AMF Packet does not support AMF3 objects with externalizable traits</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Documentation (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4296</span>&#160;<span class="ticket-notes">Ext JS 4 and Sencha Touch Docs examples fail on Chromebook, can't use Example viewer, ReferenceError: Ext is not defined</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5156</span>&#160;<span class="ticket-notes">Update documentation that fields (id,text,leaf) are expected</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Examples (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5997</span>&#160;<span class="ticket-notes">Tabs: Group Tabs:Form Layout UI get truncated on IE6</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Forms (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-2081</span>&#160;<span class="ticket-notes">Issue with &quot;Bullet list&quot; in the form widget editor</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Grid (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4091</span>&#160;<span class="ticket-notes">Grid filters: initial value can be set, but it is not applied</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5125</span>&#160;<span class="ticket-notes">FiltersFeature - Updating column header class when using a column group</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5607</span>&#160;<span class="ticket-notes">Grid: getEditorParent is ignored - nested cell editing is not possible</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Layouts (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3704</span>&#160;<span class="ticket-notes">Ext.layout.container.Box: wrong children margins if using CSS rules</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4768</span>&#160;<span class="ticket-notes">Border Layout : regions overlap when size (or size constraint) won't allow all regions to fit container</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-7497</span>&#160;<span class="ticket-notes">Form layout with shrink-wrapping in either dimension produces a layout failure</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Misc (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4545</span>&#160;<span class="ticket-notes">Kitchen Sink - Basic Tabs :  By default  tab headers are not displaying in Basic tabs.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4937</span>&#160;<span class="ticket-notes">Combination Examples : Web Desktop : Notepad :Displaying errors in error console upon double clicking on empty space in the note pad.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5254</span>&#160;<span class="ticket-notes">&nbsp;HTMLEditor.insertAtCursor issues in &quot;Source Edit&quot;; mode</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-8357</span>&#160;<span class="ticket-notes">Element boxWrap is not supported in Neptune theme</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Panel (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5488</span>&#160;<span class="ticket-notes">Panel collapse/expand behavior not as expected when called on hidden panel</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5489</span>&#160;<span class="ticket-notes">preventHeader not honored when panel is programmatically collapsed.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5544</span>&#160;<span class="ticket-notes">Intermittent issue with collapseOnDblClick set to true on IE</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tabs (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3625</span>&#160;<span class="ticket-notes">TabPanel: defaults: closable true not configurable</span>
+            </li>
+        </ul>
+    </li>
+Total: 26</ul>
+            </div>
+
+<!-- Paste release notes after a release below here... -->
+<!-- ************************************************************************** -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.1 Beta 1</h1>
+                <p class="notes">
+                    Release Date: April 10, 2013<br>
+                    Version Number: 4.2.1.744
+                </p>
+                    
+                <h2>New Features</h2>
+                <ul>
+                    <li class="component">Core (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7969</span>&#160;<span class="ticket-notes">There should be an easy way to reset a color picker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9019</span>&#160;<span class="ticket-notes">constrainTo needs an option to restrict keep constrained item away from outer edges of the area</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9276</span>&#160;<span class="ticket-notes">Add usage of RowExpander to KS BigData grid example.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8947</span>&#160;<span class="ticket-notes">ComboBox should have anyMatch and caseSensitive options</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9070</span>&#160;<span class="ticket-notes">Controllers loaded from other controllers should be supported</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 5</ul>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Core (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8568</span>&#160;<span class="ticket-notes">getPlugin fails if plugins is not declared as an array</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9049</span>&#160;<span class="ticket-notes">Date parse using "m/Y" format wraps "end of month" into "next month" depending on current date</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9101</span>&#160;<span class="ticket-notes">Box layout's menu overflow handler puts overflow menu at right in RTL mode. Should go on left.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9122</span>&#160;<span class="ticket-notes">Capturing listeners aren't removed from DOM element in Ext.EventManager.removeListener()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9151</span>&#160;<span class="ticket-notes">Ext.util.MixedCollection.sortByKey does not work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9240</span>&#160;<span class="ticket-notes">Container insert and move methods do not respect component instances vs indexes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9342</span>&#160;<span class="ticket-notes">Container does not recurse into floatingItems in getRefItems breaking ComponentQuery for floating descendants</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9074</span>&#160;<span class="ticket-notes">Combo does not respect autoLoad:false with remote filter</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9176</span>&#160;<span class="ticket-notes">Updating a record in grouped store, trigger remove action on the store's proxy</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9184</span>&#160;<span class="ticket-notes">Configuring a Store with groupField and getGroupString doesn't work.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9201</span>&#160;<span class="ticket-notes">TreeStore setProxy method doesn't return the proxy object</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Direct (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9333</span>&#160;<span class="ticket-notes">Direct call doesn't work with buffering disabled in 4.2.0</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9226</span>&#160;<span class="ticket-notes">Closing theme changer dialog breaks window resizing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9232</span>&#160;<span class="ticket-notes">MVC:Feed Viewer: Adding new feed displays JS error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (22)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7436</span>&#160;<span class="ticket-notes">Fileupload button doesn't expand height to cover button in tall file field component</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7764</span>&#160;<span class="ticket-notes">Ext.form.Panel does not relay updateRecord from BasicForm</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7836</span>&#160;<span class="ticket-notes">Display field does not report proper height when text wraps and gets clipped or overlapped</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7877</span>&#160;<span class="ticket-notes">Calling setValue on textarea with a numeric value throws JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8250</span>&#160;<span class="ticket-notes">Ext.slider.Multi setMinValue and setMaxValue don't fire change event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8784</span>&#160;<span class="ticket-notes">FieldContainer invalidCls causes double error indicators</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8950</span>&#160;<span class="ticket-notes">Buttons blur themselves on invocation of their handlers making them and their ancestor hierarchy keyboard-inaccessible</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8960</span>&#160;<span class="ticket-notes">File field can overlap things if buttonOnly is true</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9075</span>&#160;<span class="ticket-notes">Destroying a combobox does not clean up the KeyNav</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9100</span>&#160;<span class="ticket-notes">RTL - form fields on a toolbar are misaligned in IE quirks</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9168</span>&#160;<span class="ticket-notes">Items are not always removed from form when destroyed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9169</span>&#160;<span class="ticket-notes">Overflow menu trigger button is placed at right side of editor in RTL mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9182</span>&#160;<span class="ticket-notes">form.submit() with fileuploadfield does not trigger failure handler for HTTP errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9185</span>&#160;<span class="ticket-notes">Combobox with large fieldLabel can cause misplacement of picker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9237</span>&#160;<span class="ticket-notes">Slider with increment configured adjusts the maxValue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9260</span>&#160;<span class="ticket-notes">hiddenfield occupies the visile place in the form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9266</span>&#160;<span class="ticket-notes">Combo trackOver:false does not disable overItemCls tracking</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9274</span>&#160;<span class="ticket-notes">File input element covers text field and steals clicks displaying file browser</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9287</span>&#160;<span class="ticket-notes">Basicform keeps reference of destroyed items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9335</span>&#160;<span class="ticket-notes">Button of file field component does not render correctly in RTL mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9344</span>&#160;<span class="ticket-notes">Bug with FieldSet and grid cell editing plugin</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9421</span>&#160;<span class="ticket-notes">DateField doesn't show the picker inside collapsed region</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5922</span>&#160;<span class="ticket-notes">Locking, grouping and buffered rendering do not work together.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6806</span>&#160;<span class="ticket-notes">Grid locking and row editing do not work together</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9077</span>&#160;<span class="ticket-notes">Grid headers do not have proper gradient stretching when sliced for IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9102</span>&#160;<span class="ticket-notes">Mouseover row highlighting not working in wrapped rows.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9141</span>&#160;<span class="ticket-notes">After ending cell editing with the Enter key, keyboard navigation no longer works.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9195</span>&#160;<span class="ticket-notes">grid reconfigure without store throws JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9214</span>&#160;<span class="ticket-notes">Grid cell edit with group feature not updating values</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9224</span>&#160;<span class="ticket-notes">RowExpander doesn't fire events on the proper grid view when locking</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9251</span>&#160;<span class="ticket-notes">on grid's record destroy, the selectionchange event is not fired</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9253</span>&#160;<span class="ticket-notes">Changing the group field value of a record in a grouped grid throws an error.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9268</span>&#160;<span class="ticket-notes">Ext.grid.Panel allowDeselect config has no effect</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8553</span>&#160;<span class="ticket-notes">Text wraps/clips in IE10 (in tooltips for example) because Direct2D rounding bug is not properly detected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9116</span>&#160;<span class="ticket-notes">Hightlight focus doesn't completely cover under overflow menu options</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9234</span>&#160;<span class="ticket-notes">Border layout does not apply child margins on reversed sides in RTL</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Locale (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9340</span>&#160;<span class="ticket-notes">Datepicker is not picking up localized text properly</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9105</span>&#160;<span class="ticket-notes">In controller using views: 'Microsoft.view.MyView' generate many requests</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9099</span>&#160;<span class="ticket-notes">Grouped menu check items display checkbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9104</span>&#160;<span class="ticket-notes">MenuManager's mousedown clickhandler doesn't always work on IE</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9143</span>&#160;<span class="ticket-notes">Ext.isIterable returns true for MixedCollection</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8589</span>&#160;<span class="ticket-notes">Panel ghost is not assigned the proper z-index in some cases</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9330</span>&#160;<span class="ticket-notes">Collapsed panels that need an additional Header do not propagate margins to that header</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8279</span>&#160;<span class="ticket-notes">Error when trying to select a record while using CellModel</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3570</span>&#160;<span class="ticket-notes">Ext JS 4 Themes - hardcoded variable colors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9103</span>&#160;<span class="ticket-notes">ext-theme-neptune-all-rtl.css exceeds IE's maximum number of rules for a single stylesheet.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9160</span>&#160;<span class="ticket-notes">Toggle buttons in toolbar have incorrect gradients in Gray theme</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7262</span>&#160;<span class="ticket-notes">Window constrain:true inside another window, restoring position problem</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8291</span>&#160;<span class="ticket-notes">Ext.Component: show() results in two layout runs if autoRender true</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 63</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.0</h1>
+                <p class="notes">
+                    Release Date: March 11, 2013<br>
+                    Version Number: 4.2.0.663
+                </p>
+                    
+                <h2>New Features</h2>
+                <ul>
+                    <li class="component">Charts (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6723</span>&#160;<span class="ticket-notes">Chart series label renderer should allow label style to be modified</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8674</span>&#160;<span class="ticket-notes">Checkbox and RadioButton should have setBoxLabel method</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8904</span>&#160;<span class="ticket-notes">RowEditorButtons goes to 100% width on IEQuirks</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Locale (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8670</span>&#160;<span class="ticket-notes">Locales should be Sencha Cmd packages of type = locale</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8701</span>&#160;<span class="ticket-notes">Floating RTL Switcher In Examples</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 5</ul>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9026</span>&#160;<span class="ticket-notes">Neptune disabled buttons do not have proper opacity in IE8 and older</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9058</span>&#160;<span class="ticket-notes">NEPTUNE: Miscellaneous: Buttons: The contents on the buttons are missing when they are disabled on IE</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8798</span>&#160;<span class="ticket-notes">Setting up legend for chart throws JavaScript error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9009</span>&#160;<span class="ticket-notes">Pie chart Labels do not display the correct values once slices are hidden</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8659</span>&#160;<span class="ticket-notes">Add ms prefix to Ext.supports.CSS3LinearGradient</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8671</span>&#160;<span class="ticket-notes">Kitchen sink demo doesn't show in FF</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3547</span>&#160;<span class="ticket-notes">Ext.data.TreeStore fires "update" event twice due to error in Model.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8476</span>&#160;<span class="ticket-notes">Animated dataview plugin failing to position correctly in RTL mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8719</span>&#160;<span class="ticket-notes">Mouseover buffer delay too large by default. Causes perceived lag.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8923</span>&#160;<span class="ticket-notes">Intermittent errors when clicking/mouseovering views/grids which dynamically update.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8672</span>&#160;<span class="ticket-notes">Using persistenceProperty breaks Grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8746</span>&#160;<span class="ticket-notes">Cell selection model does not support "multi" mode</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8690</span>&#160;<span class="ticket-notes">Portal example header text color looks bad in neptune theme</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8698</span>&#160;<span class="ticket-notes">Desktop toolbar is too tall in RTL mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8711</span>&#160;<span class="ticket-notes">Feed Viewer: Adding the 'Sci/Tech' or 'Yahoo' feed displays the each news content in HTML format</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8754</span>&#160;<span class="ticket-notes">Cannot apply a template in neptune using example templates</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8782</span>&#160;<span class="ticket-notes">Drag and Drop: Field to Grid DnD: Default page displaying JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8833</span>&#160;<span class="ticket-notes">Combination Examples: Kitchen sink: Grid to Grid: Drag and drop records from first grid to second displays js error and not able to drag from second time</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8915</span>&#160;<span class="ticket-notes">Web fonts are not loading properly in IE - they are being returned as text/plain and being truncated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8925</span>&#160;<span class="ticket-notes">Grid: Grid Grouping with Summary: Incorrect summary is displaying after swapping the columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8990</span>&#160;<span class="ticket-notes">Grids :  Editable Grid with JSONP writable store :  Fields under "User" form are overlapped by the bottom toolbar.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7921</span>&#160;<span class="ticket-notes">Forms: inputEl is not properly destroyed and will leak memory</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8386</span>&#160;<span class="ticket-notes">BasicForm doesn't get dynamically added items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8528</span>&#160;<span class="ticket-notes">Tooltip layout is wrong in IE10</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8643</span>&#160;<span class="ticket-notes">Form fields in docked items don't fire form's dirty event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8724</span>&#160;<span class="ticket-notes">Simple combobox filtering fails</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8841</span>&#160;<span class="ticket-notes">Spinner fields trigger background is transparent, allows panel background to bleed through</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9010</span>&#160;<span class="ticket-notes">HtmlEditor border is on the wrong element.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (16)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3994</span>&#160;<span class="ticket-notes">Grid scrolls when focusing or selecting a row</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8325</span>&#160;<span class="ticket-notes">Grid sel models do not initialize correctly when configured with seltype: 'xxxxx'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8367</span>&#160;<span class="ticket-notes">Cell editing navigation does not work when locked columns are all unlocked</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8539</span>&#160;<span class="ticket-notes">Ext.grid.column.CheckColumn arrives in the framework as a replacement for the UX Ext.ux.CheckHeader as a way of displaying mutable checkboxes in grid columns.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8603</span>&#160;<span class="ticket-notes">Ext.grid.plugin.HeaderResizer throws error in forceFit with sibling grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8619</span>&#160;<span class="ticket-notes">IE scrolls when clicking on editable cell</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8625</span>&#160;<span class="ticket-notes">Neptune - Grid: top border is missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8757</span>&#160;<span class="ticket-notes">Grids: Grid Plugins: First grid 'Collapsible grid with lockable columns' displays empty with no data</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8758</span>&#160;<span class="ticket-notes">Grids: Grid Row Editing: Default page displaying JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8775</span>&#160;<span class="ticket-notes">RTL: Grids: Sliding Pager: Clicking on slider bar displays JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8786</span>&#160;<span class="ticket-notes">Grids : Buffered Grid Example :  No data is displaying after sorting the columns in a specific scenario.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8867</span>&#160;<span class="ticket-notes">Neptune : Grids:  Grid Filtering : By default all buttons are not displaying in the grid footer.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8898</span>&#160;<span class="ticket-notes">Multi selection functionality is not working under List View grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8905</span>&#160;<span class="ticket-notes">Grids:Locking Row Editing: JS Error on double clicking on any of the editable fields in RTL Mode.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8906</span>&#160;<span class="ticket-notes">Using the RowEditor on a locked grid produces errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8945</span>&#160;<span class="ticket-notes">Grid header menu hides upon check of visibility checkbox</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8204</span>&#160;<span class="ticket-notes">ColumnLayout is broken or behaves differently as expected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8660</span>&#160;<span class="ticket-notes">Unable to collapse border region by double clicking on splitter</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8661</span>&#160;<span class="ticket-notes">Collapsing a Panel with any user-configured baseCls breaks placeholder collapse.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8725</span>&#160;<span class="ticket-notes">Tab scroller partially obscures the active tab</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8736</span>&#160;<span class="ticket-notes">Layout Managers: Border Layout: The Expand/Collapse button (Center aligned on the vertical bar) is getting separated from the bar when the right panel is expanded </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8217</span>&#160;<span class="ticket-notes">Ext.application() breaks when config object contains requires</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8730</span>&#160;<span class="ticket-notes">Neptune: Toolbars and Menus: Basic Toolbar: Menu scrollers are not displayed under 'Scrolling Menu' button</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (20)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8396</span>&#160;<span class="ticket-notes">Miscellaneous: Bubbled Panel: Both panel header and toggle button's UI got disturbed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8438</span>&#160;<span class="ticket-notes">Neptune - Panel header icon is cropped </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8702</span>&#160;<span class="ticket-notes">Grid data rows need to be vertical-align:top</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8708</span>&#160;<span class="ticket-notes">Layout Managers: Complex Layout: The "Collapse/Expand" Button's Position is changing from top to bottom when tried to collapse and expand.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8731</span>&#160;<span class="ticket-notes">Combination Examples : Right -to-Left (RTL)  :By default "RTL" example displaying in "LTR" mode.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8755</span>&#160;<span class="ticket-notes">Rows in a locking TreeGrid can become misaligned</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8818</span>&#160;<span class="ticket-notes">Bug with password field as a grid editor</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8820</span>&#160;<span class="ticket-notes">Windows with no header throw a JS error when maximized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8823</span>&#160;<span class="ticket-notes">Ext.view.Table does not refresh columns on commit after store.sync</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8859</span>&#160;<span class="ticket-notes">Kitchen Sink: Field to Grid : Drag and drop the fields on to grid for second time and then immediately clicking on records displays js error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8869</span>&#160;<span class="ticket-notes">KitchenSink-all.css contains rtl rules</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8875</span>&#160;<span class="ticket-notes">Neptune - Double click action on button creates visual defect </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8880</span>&#160;<span class="ticket-notes">Neptune - Green placement indicator should be used everywhere</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8951</span>&#160;<span class="ticket-notes">TreePanel doesn't fire itemmove event on Drag'n'Drop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8966</span>&#160;<span class="ticket-notes">After calling record.reject() GridView doesn't clear dirty mark</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9005</span>&#160;<span class="ticket-notes">Ext.view.NodeCache must confirm element exists before trying to use it</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9020</span>&#160;<span class="ticket-notes">Nested loading example fails to load</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9038</span>&#160;<span class="ticket-notes">Expanding a tree node causes multiple layouts</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9050</span>&#160;<span class="ticket-notes">Grouping feature breaks BufferedRenderer scrollTo function</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9052</span>&#160;<span class="ticket-notes">Window modal mask too bright, and uses wait cursor.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8304</span>&#160;<span class="ticket-notes">Panel titleAlign: center - render issue?</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8800</span>&#160;<span class="ticket-notes">Panels inside tables crash IE in quirks mode</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9064</span>&#160;<span class="ticket-notes">Selecting a grid's row with a buffered store causes a JavaScript error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-9015</span>&#160;<span class="ticket-notes">Disabled Closable Tabs  - close icon should be "greyed" out</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6394</span>&#160;<span class="ticket-notes">Gray Theme Disabled Tab Background is Pink!</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8704</span>&#160;<span class="ticket-notes">Grid Filter plugin Neptune Theme (boolean filter don't show radio images)</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8759</span>&#160;<span class="ticket-notes">Combination Examples: Simple Tasks: Displaying JS error while trying to add new folder when 'List' panel is collapsed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8805</span>&#160;<span class="ticket-notes">Ext.data.Nodeinterface - collapseChildren not working as specified</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8832</span>&#160;<span class="ticket-notes">Combination Examples: Kitchen sink: Tree Reorder: Tree panel displayed empty without nodes and js error is displayed in console</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8874</span>&#160;<span class="ticket-notes">Tree Grid - Expand Collapse action shrinks column width</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8741</span>&#160;<span class="ticket-notes">Neptune - WIndow >> Progress Dialog: the progress bar is cropped</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8848</span>&#160;<span class="ticket-notes">Windows: Window Variations: Top two floating windows are missing header titles and displayed with white patches</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 83</ul>
+            </div>
+            <!--
+            When a release is made, copy the generated div below this dynamic section
+            and then edit the queries below to adjust for the next release.
+            -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.0 RC 1</h1>
+                <p class="notes">
+                    Release Date: February 13, 2013<br>
+                    Version Number: 4.2.0.489
+                </p>
+                
+                <p>The major new arrival in this release is <b>Neptune</b>! In support
+                    of Neptune there have been many internal changes. The goal was to
+                    preserve the historical structure of the SDK zip as much as possible,
+                    however, there are some noteworthy changes and additions.
+                
+                <p>At a glance:
+                <ul>
+                    <li>Themes are now organized as "packages" using Sencha Cmd 3.1.
+                        This allows themes to exist as self-contained folders with all
+                        of their required SASS, JavaScript and other resources. Themes
+                        use theme inheritance to share code and resources between each
+                        other.
+                    <li>All packages exist in the <tt>"./packages"</tt> folder off the
+                        Ext JS root. Packages contain source for building into your
+                        applications using Sencha Cmd 3.1+ as well as pre-built versions
+                        of CSS and JS files. These are used in "dev mode" or as part of
+                        your application if you are not using Sencha Cmd. The pre-built
+                        content for each package is in its <tt>"./build"</tt> folder.
+                    <li>Both the Neptune theme ("ext-theme-neptune") and Classic theme
+                        ("ext-theme-classic") extend the Neutral theme ("ext-theme-neutral")
+                        to inherit most of their styling needs. They provide their own
+                        distinct, image assets.
+                    <li>The Gray ("ext-theme-gray"), Accessibility ("ext-theme-access")
+                        and Classic Sandbox ("ext-theme-classic-sandbox") themes all
+                        extend Classic.
+                </ul>
+
+                <p>Content changes:
+                <ul>
+                    <li>If you are not using Sencha Cmd to build, then the ideal locations
+                        to pull CSS and image assets from the SDK are the package builds.
+                        For Neptune that is <tt>"./packages/ext-theme-neptune/build"</tt>
+                        and for Classic <tt>"./packages/ext-theme-classic/build"</tt>.
+                    <li>The <tt>"./resources"</tt> folder is a legacy folder that contains
+                        copies of files that now reside in their new home in the
+                        <tt>"./packages/ext-theme-classic/build"</tt> and related folders.
+                    <li>New content, such as the Neptune theme, do not exist in the
+                        <tt>"./resources"</tt> folder.
+                </ul>
+                    
+                <p>Changes to theme creation process:
+                <ul>
+                    <li>Compass is still required to build framework themes.
+                    <li>Creating themes can be accomplished in the old way by importing
+                        the "all.scss" file from the Ext JS theme.
+                    <li>The ideal approach for building themes is to move the theme to the
+                        new Sencha Cmd 3.1 package format. Following this approach you
+                        will only need to run  <b><tt>sencha package build</tt></b> to
+                        produce your theme (including IE image slicing). Sencha Cmd will
+                        handle making all of the required Compass calls for you as well
+                        as process inherited themes.
+                    <li>To create an empty theme:
+                        <pre>
+sencha -sdk /path/to/ext-4.2.0 generate workspace /path/to/workspace
+cd /path/to/workspace
+sencha generate package -type=theme mytheme
+cd packages/mytheme
+                        </pre>
+                        See the <a href="http://docs.sencha.com/ext-js/4-2/#!/guide/command_workspace">Sencha Cmd guides</a>
+                        for more details.
+                    <li>Given an empty theme (as produced above), you need to edit the
+                        <tt>"package.json"</tt> file to set the base theme by adding an
+                        "extend" property:
+                        <pre>
+{
+    "name": "mytheme",
+    "type": "theme",
+    "version": "1.0.0",
+    "compatVersion": "1.0.0",
+    <span style="background-color:yellow;">"extend": "ext-theme-neptune"</span>
+}
+                        </pre>
+                    <li>Look for new guides describing this process shortly, but in the
+                        interim, look at how the provided themes are structured as a
+                        reference.
+                </ul>
+
+                <p>Changes to theme creation in SASS:
+                <ul>
+                    <li>Themes provide many more variables to control their styling than
+                        in previous versions.
+                    <li>While these are being documented, please
+                        refer to the theme's variable definition files found the their
+                        package folder (e.g., <tt>"./packages/ext-theme-neptune/sass/var"</tt>).
+                        These files are organized to precisely match the components to
+                        which they apply. Keep in mind that the variables of base themes
+                        also apply. These will be in their own <tt>"./sass/var"</tt> folder.
+                    <li>Most of the variables are defined in the Neutral theme. That is,
+                        in the "ext-theme-neutral" package.
+                    <li>Most of the mixins are also defined in the Neutral theme. That is,
+                        in the "ext-theme-neutral" package. These are found in the
+                        <tt>"./packages/ext-theme-neutral/sass/src"</tt> folder. As with
+                        variables, these files match with the respective classes and are
+                        inherited as well.
+                    <li>Certain core styles that are more than presentation are defined in
+                        the Base theme ("ext-theme-base").
+                    <li>Many of the high-level mixins (such as the panel mixin) now
+                        encapsulate much more of the process of defining a new "ui" (a
+                        presentation mode of a component, e.g., "default" or "framed").
+                    <li>As such, calls to them will need to pass more parameters to fully
+                        define the intended "ui" and some rules that had to be manually
+                        duplicated will need to be removed from your SASS.
+                    <li>Some mixin positional arguments may have changed in some cases.
+                        It is highly recommended to use named parameters when calling
+                        mixins and not positional ones to minimize any such issues.
+                </ul>
+                    
+                <h2>New Features</h2>
+                <ul>
+                    <li class="component">Charts (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8498</span>&#160;<span class="ticket-notes">Certain Chart and Legend methods should be refactored for easier overriding</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Cmd (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8638</span>&#160;<span class="ticket-notes">Themes need to be Cmd packages so they can provide JavaScript overrides to builds</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Direct (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4350</span>&#160;<span class="ticket-notes">Callbacks should be passed options used to make the call</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3940</span>&#160;<span class="ticket-notes">Grouping Feature is not Stateful</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8368</span>&#160;<span class="ticket-notes">RowEditor should support lockable grids</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8383</span>&#160;<span class="ticket-notes">Themes should not use resetCSS and related scopeResetCSS and styleHtmlContent</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8632</span>&#160;<span class="ticket-notes">Deliver Neptune theme (for all browsers IE7+)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8633</span>&#160;<span class="ticket-notes">Themes should be able to inherit easily and cleanly from other themes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8639</span>&#160;<span class="ticket-notes">Buttons and tabs should use simpler markup and be easier to theme</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8641</span>&#160;<span class="ticket-notes">SASS Mixins should contain more of the generated styles for their components</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8642</span>&#160;<span class="ticket-notes">Date pickers should use simpler markup and be easier to theme</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 11</ul>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4757</span>&#160;<span class="ticket-notes">Setting a chart time axis to have a grid can cause errors with certain step/start val</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7720</span>&#160;<span class="ticket-notes">Minimum and maximum should be ignored in stacked charts</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8280</span>&#160;<span class="ticket-notes">Ext.dom.Helper.insertHtml fails in native Windows 8 app</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8349</span>&#160;<span class="ticket-notes">Component resizer handles not visible.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8418</span>&#160;<span class="ticket-notes">IE9 navigator.geolocation memory leak (standards mode)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8503</span>&#160;<span class="ticket-notes">MVC removes Ext.app namespace produced by Cmd optimizer</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8536</span>&#160;<span class="ticket-notes">Focus management. Window's mousedown delayed focus timer "wins" over the focus caused by click handler.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6327</span>&#160;<span class="ticket-notes">Proxies must not be shared between Model super/sub classes. Fix requires user code to call Model.getProxy() to ensure access to a Model&#39;s proxy as it is now lazily instantiated when requested (so the proxy *property* may not be a Proxy).</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6444</span>&#160;<span class="ticket-notes">Store.isLoading() is wrong from inside Ext.view.View.collectData</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6981</span>&#160;<span class="ticket-notes">belongsTo & hasOne association's setters cannot accept record instances.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8149</span>&#160;<span class="ticket-notes">Store removeAll() doesn't work for localstorage</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8213</span>&#160;<span class="ticket-notes">loadRawData should not fire load event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8227</span>&#160;<span class="ticket-notes">Ext.data.Model.setFields() does not set all fields if extended</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8272</span>&#160;<span class="ticket-notes">NodeInterface subclass event firing causes stackoverflow</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8281</span>&#160;<span class="ticket-notes">TreeStore cannot remove nodes that were created and saved to server</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8563</span>&#160;<span class="ticket-notes">Tree Duplicate Nodes during load if node has expanded:true</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8505</span>&#160;<span class="ticket-notes">Data View :  Displaying JS error  while accessing "Data view" and "animated Data view" examples.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8506</span>&#160;<span class="ticket-notes">Data View :  Advanced Data view :  Insert Image button is displaying in expand mode.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7811</span>&#160;<span class="ticket-notes">Problem in 4.1.x with MS dates in JSON POST to .NET WCF web service</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8262</span>&#160;<span class="ticket-notes">DnD: Ext.grid.plugin.DragDrop:beforedrop docs incorrect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8459</span>&#160;<span class="ticket-notes">Docs don't clearly state that svg.sencha.io service only creates PNG images for exported chart data</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8337</span>&#160;<span class="ticket-notes">Progress Bar left text align doesn't seem to work?</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8400</span>&#160;<span class="ticket-notes">Accessibility: 'Binding a Grid to a Form' - Displaying JS error while accessing the example.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8440</span>&#160;<span class="ticket-notes">Unable to add a new feed in feed viewer example</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (10)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7388</span>&#160;<span class="ticket-notes">Slider needs to be inverted in rtl mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7462</span>&#160;<span class="ticket-notes">Change to use tables for fields causes autoScroll to fail on FieldContainers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7890</span>&#160;<span class="ticket-notes">File Field Button is invisible when in an initially hidden tab</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8221</span>&#160;<span class="ticket-notes">Form with standardSubmit isn't working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8229</span>&#160;<span class="ticket-notes">TimeField's keystroke filtering overrides the TimePicker's min/max filtering.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8352</span>&#160;<span class="ticket-notes">Fieldset titles misaligned</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8463</span>&#160;<span class="ticket-notes">FieldSet in RTL has incorrect margin</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8467</span>&#160;<span class="ticket-notes">Classic Theme in RTL : Forms : Slider Field : Unable to handle sliders in the slider filed example.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8545</span>&#160;<span class="ticket-notes">Double assignment of value in form/Basic.js</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8581</span>&#160;<span class="ticket-notes">Combo events broken after combo.getStore().load()</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (16)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5482</span>&#160;<span class="ticket-notes">Locking grid does not support stateful mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7413</span>&#160;<span class="ticket-notes">A grouped and sortable grid does not save state</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7653</span>&#160;<span class="ticket-notes">While editing a cell in a grid, clicking on another grid doesn't change focus</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8084</span>&#160;<span class="ticket-notes">BufferedRenderer Grid plugin does not work properly when editing store.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8159</span>&#160;<span class="ticket-notes">GroupField displays instead of ColumnName in a group header of a locked grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8163</span>&#160;<span class="ticket-notes">Grids: Infinite Grid with Remote filter: Selection focus is not responding with down arrow key in a particular scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8166</span>&#160;<span class="ticket-notes">Grid raises an error if there is second grid with summary feature</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8174</span>&#160;<span class="ticket-notes">Moving a grid column causes it to disappear</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8180</span>&#160;<span class="ticket-notes">Locking Grid: adding column using reconfigure doesn't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8200</span>&#160;<span class="ticket-notes">Grid with CellEditing and CheckboxModel, checker width incorrect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8206</span>&#160;<span class="ticket-notes">GroupStore.js onUpdate function throws a JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8210</span>&#160;<span class="ticket-notes">Grid store listeners not cleaned up</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8293</span>&#160;<span class="ticket-notes">Lockable plugins should not be cloned unless required</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8336</span>&#160;<span class="ticket-notes">Rowbody features don't handle store record removal.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8416</span>&#160;<span class="ticket-notes">Grouping grid icon stays on the left in RTL mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8606</span>&#160;<span class="ticket-notes">delayed task: delayScroll is not canceled before destroying of the Panel</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6867</span>&#160;<span class="ticket-notes">vbox layout: containers aren't auto-heighting properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7667</span>&#160;<span class="ticket-notes">Table layout causes child containers using auto layout to be sized wrongly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8253</span>&#160;<span class="ticket-notes">Ext.layout.container.Auto.calculateOverflow() can fail when scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8323</span>&#160;<span class="ticket-notes">Window header and button layout is wrong in MessageBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8373</span>&#160;<span class="ticket-notes">Buttongroup lays out wrong</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8564</span>&#160;<span class="ticket-notes">Click on a field in an accordion header causes the panel to collapse/expand</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Locale (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8190</span>&#160;<span class="ticket-notes">Slovak locale inconsistency and errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8246</span>&#160;<span class="ticket-notes">Turkish locale errors</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6672</span>&#160;<span class="ticket-notes">Ext.app.Controller.addRef should accept arrays</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5130</span>&#160;<span class="ticket-notes">Neptune theme missing resources</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8602</span>&#160;<span class="ticket-notes">selectionchange is not fired when removing selected record</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7709</span>&#160;<span class="ticket-notes">RTL - Themes Example - tabs do not show text in IE7 strict</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8481</span>&#160;<span class="ticket-notes">Classic Theme in RTL :  Tabs : Advanced Tabs  :  Tab title is overlapped by close and tab image .</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8609</span>&#160;<span class="ticket-notes">Tab strip is missing bottom border in IE6,7,8 and IE quirks</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8345</span>&#160;<span class="ticket-notes">Tooltip background wrong colour in classic theme. It's white</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8346</span>&#160;<span class="ticket-notes">Tooltips body should be position:relative, layout is broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8362</span>&#160;<span class="ticket-notes">Tooltip layout not shrinkwrapping content height</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6824</span>&#160;<span class="ticket-notes">TreePanel multiselect is working incorrectly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8150</span>&#160;<span class="ticket-notes">Dropping nodes onto folders which are currently loading throws JS error.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8224</span>&#160;<span class="ticket-notes">Cannot deselect rows when selmodel is MULTI and treeviewdragdrop is enabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8232</span>&#160;<span class="ticket-notes">Event signature changed: Ext.data.TreeStore.beforeappend on root node</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8260</span>&#160;<span class="ticket-notes">Locking TreePanel autoLoads its store when regular TreePanel does not.</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 72</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.0 Beta 2</h1>
+                <p class="notes">
+                    Release Date: January 8, 2013<br>
+                    Version Number: 4.2.0.265
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Core (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8042</span>&#160;<span class="ticket-notes">Ext.utils.CSS.getRule - always throws error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8064</span>&#160;<span class="ticket-notes">Modal mask doesn't appear in Chrome and IE9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8079</span>&#160;<span class="ticket-notes">Grid grouping labels not translated (at least for German)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8117</span>&#160;<span class="ticket-notes">Portuguese locales: wrong day and month names</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8136</span>&#160;<span class="ticket-notes">Ext.String.repeat with negative count infinite loop</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Direct (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8021</span>&#160;<span class="ticket-notes">Ext.Direct API methods should not be resolved at construction time</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7881</span>&#160;<span class="ticket-notes">Explain interaction of reference types and configs</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7992</span>&#160;<span class="ticket-notes">Grid guide is not updated with 4.2 improvements</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8009</span>&#160;<span class="ticket-notes">Typo in desktop example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8029</span>&#160;<span class="ticket-notes">Combination Examples: Web Desktop: 'More Items' sub menu is displayed on top left corner of the page when mouse hovered</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6999</span>&#160;<span class="ticket-notes">fileuploadfield on a form is clearing selected file path after submit button is pressed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7918</span>&#160;<span class="ticket-notes">Checkboxgroup allowBlank:false and validitychange event not firing on first click</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7945</span>&#160;<span class="ticket-notes">Error handling issue while submitting forms with file uploads in IE9</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (21)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7582</span>&#160;<span class="ticket-notes">minHeight on table header causes layout faults if there is a scrollbar</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7775</span>&#160;<span class="ticket-notes">The hmenu-asc.gif icon for "Sort ascending" has the arrow pointing down. It's identical to the "sort descending" icon.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7895</span>&#160;<span class="ticket-notes">Grouping Feature not able to show/hide columns when enableGroupingMenu: false</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7949</span>&#160;<span class="ticket-notes">Canceling new rows in RESTful store grid panel leaves behind a blank row</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7952</span>&#160;<span class="ticket-notes">Locked grid row heights fail to sync when OSX scroll bars turned off.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7961</span>&#160;<span class="ticket-notes">Menus are constrained incorrectly. They should not have ownerCt configured.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7968</span>&#160;<span class="ticket-notes">GroupGrid can hide all columns in certain scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7982</span>&#160;<span class="ticket-notes">Summary feature causes errors if data is modified and view is not rendered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7983</span>&#160;<span class="ticket-notes">Grouping grid headers do not always fill the horizontal space</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7987</span>&#160;<span class="ticket-notes">Grouping grid crash on record update</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8003</span>&#160;<span class="ticket-notes">Grouping grid allows grouping by last visible column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8005</span>&#160;<span class="ticket-notes">Grid selection model events do not fire after reconfigure</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8014</span>&#160;<span class="ticket-notes">Double clicking to auto-size an unresizable column causes JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8038</span>&#160;<span class="ticket-notes">Grid: view isn't removed from Scroll Manager when grid is destroyed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8043</span>&#160;<span class="ticket-notes">Grid columns with no explicit renderer definition are not shown</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8046</span>&#160;<span class="ticket-notes">RowSelectionModel Keyboard navigation does not work.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8083</span>&#160;<span class="ticket-notes">buffered grid checkbox selection model does not support select all </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8115</span>&#160;<span class="ticket-notes">hidden: true of grid column with inner columns causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8144</span>&#160;<span class="ticket-notes">Grids : Grouping : Displaying Js error upon navigating the records in the grid in a specific scenario.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8145</span>&#160;<span class="ticket-notes">Grid view refresh and toggleSummaryRow not working as expected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8161</span>&#160;<span class="ticket-notes">Buffered Grids No Longer Work In Tab Panels</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7973</span>&#160;<span class="ticket-notes">Layout failure in PropertyGrid</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6032</span>&#160;<span class="ticket-notes">Controller shouldn't require selector when ref has autoCreate flag</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8167</span>&#160;<span class="ticket-notes">Ext.menu.CheckItem: checked not a boolean until rendered</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5226</span>&#160;<span class="ticket-notes">Focus on OK button in MessageBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6014</span>&#160;<span class="ticket-notes">Incomplete Localisation for LoadMask and AbstractView</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8052</span>&#160;<span class="ticket-notes">4.2.0 beta and ent-beta builds fail sencha generate app with YUI disabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8087</span>&#160;<span class="ticket-notes">Delegate Ext.Object.chain to Object.create</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7981</span>&#160;<span class="ticket-notes">Crash when expanding collapsed/hidden panel</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8041</span>&#160;<span class="ticket-notes">more.gif in x-toolbar-more-icon class is not RTL</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7916</span>&#160;<span class="ticket-notes">Tree node removeAll(true) throws exception when there's a child node.</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 44</ul>
+                                <h2>New Features</h2>
+                <ul>
+                    <li class="component">Charts (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5604</span>&#160;<span class="ticket-notes">With multiple Column series, columns can completely obscure each other.  </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7564</span>&#160;<span class="ticket-notes">Add Ext.Object.isEmpty method</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7400</span>&#160;<span class="ticket-notes">Added CORS support for IE (XDR)</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8073</span>&#160;<span class="ticket-notes">HtmlEditor should be a FieldContainer and use standard container layouts</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8072</span>&#160;<span class="ticket-notes">Panel shrinkWrap should be able to include docked items in its calculation</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7429</span>&#160;<span class="ticket-notes">Controllers should be able to listen to non-Component events</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Performance (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-8092</span>&#160;<span class="ticket-notes">Data and Tree performance optimizations</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7955</span>&#160;<span class="ticket-notes">Trees should be able to use buffered rendering</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 8</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.2.0 Beta</h1>
+                <p class="notes">
+                    Release Date: December 11, 2012<br>
+                    Version Number: 4.2.0.179
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3394</span>&#160;<span class="ticket-notes">Charts - Area charts - December Month Name is missing when resize and also minimizing the chart</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6011</span>&#160;<span class="ticket-notes">Area chart numeric x-axis display bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7300</span>&#160;<span class="ticket-notes">Charts : Pie chart : Displaying JS error upon mouse hovering on chart legends.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7759</span>&#160;<span class="ticket-notes">Chart ColumnSeries yField fails if not an array</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7771</span>&#160;<span class="ticket-notes">Grouped Column Chart With One Group Has Incorrect Label</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7876</span>&#160;<span class="ticket-notes">Charts: Line and Radar series: markers can't be styled with the renderer function</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4453</span>&#160;<span class="ticket-notes">Method `Ext.Element.setStyle()` with `-ms-transform` does not work.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7534</span>&#160;<span class="ticket-notes">Panel border: false option breaks rendering of content</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7717</span>&#160;<span class="ticket-notes">Internal usage of Ext.fly() overwrites user's Ext.fly singleton.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3455</span>&#160;<span class="ticket-notes">Model constructor does not set the idProperty when the id is specified as an argument to the constructor.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7287</span>&#160;<span class="ticket-notes">A grouped store should automatically resort when data modified</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7805</span>&#160;<span class="ticket-notes">Ext.define function form does not support overrides</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (10)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2288</span>&#160;<span class="ticket-notes">Failed test: Verify the menu display  when user right  click on the Desktop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4842</span>&#160;<span class="ticket-notes">Combination Examples - Web Desktop : Left, Center & Right alignments are not properly working for "Notepad"</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5464</span>&#160;<span class="ticket-notes">Combination Examples - Kitchen sink - Displaying JS error upon clicking on ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Titled Tab panels‚Äö√Ñ√∂‚àö√ë‚àöœÄ</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6154</span>&#160;<span class="ticket-notes">Combination Examples: Web Desktop: Notepad: Alignment is applying for whole text in text area and not just for selected line of text.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6352</span>&#160;<span class="ticket-notes">Combination Examples : Feed Viewer: Tab size is not adjusting accordingly once after selecting the ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Yahoo Software News‚Äö√Ñ√∂‚àö√ë‚àöœÄ under Feeds panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7294</span>&#160;<span class="ticket-notes">Combination Examples :  Calendar : Displaying JS error while saving the event.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7617</span>&#160;<span class="ticket-notes">Combination Examples : Web desktop :  Displaying Js error upon double clicking on "maximize" button in the "About ExtJS" window.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7658</span>&#160;<span class="ticket-notes">Combination Example: Web desktop: Note pad is not displaying upon moving in a specific scenario.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7700</span>&#160;<span class="ticket-notes">Grid filter menu icon missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7882</span>&#160;<span class="ticket-notes">Combination Examples  : Right-to-Left (RTL) (New) : East panel getting expand and collapse when we expand the "West" panel.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4477</span>&#160;<span class="ticket-notes">Ext.form.field.File: no tooltip on the upload button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5288</span>&#160;<span class="ticket-notes">Forms : Shopping Cart Checkout:  Unable to delete the data from the phone number and postal code fields</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5672</span>&#160;<span class="ticket-notes">Forms: MultiSelect and ItemSelector: Down arrow and up arrow are not functional when multiple items are selected in ItemSelector List</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5856</span>&#160;<span class="ticket-notes">Combination Examples : Web Desktop:  Text in the notepad getting erased by clicking the "Tab" key.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6023</span>&#160;<span class="ticket-notes">Ext.ux.form.ItemSelector with delimited cannot read delimited values</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7085</span>&#160;<span class="ticket-notes">HtmlEditor: clicking on down arrow on forecolor or backcolor button deselects text in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7711</span>&#160;<span class="ticket-notes">Selecting same highlighted item in combo does not close listbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7803</span>&#160;<span class="ticket-notes">Down arrow on picker fields does not move focus to popup</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7921</span>&#160;<span class="ticket-notes">Forms: inputEl is not properly destroyed and will leak memory</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (13)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5794</span>&#160;<span class="ticket-notes">Grouping grid with a summary for each group and the entire grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5817</span>&#160;<span class="ticket-notes">Grids - Grouping Grid - Grouping grid displaying blank in a specific scenario </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5898</span>&#160;<span class="ticket-notes">Grids- Infinite scroll grid- No data is displaying upon clicking Author column header multiple times.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6144</span>&#160;<span class="ticket-notes">Grouping Grid column menu items are not showing the proper checked/enabled state in all cases</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6508</span>&#160;<span class="ticket-notes">Grids: RESTful Store with GridPanel and RowEditor: Value under ‚Äö√Ñ√∂‚àö√ë‚àö‚à´ID‚Äö√Ñ√∂‚àö√ë‚àöœÄ column is slightly moved down on row editor in a particular scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6734</span>&#160;<span class="ticket-notes">Hidden grid column's height is not properly measured when wordwrap is used</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7449</span>&#160;<span class="ticket-notes">CellEditor does not scroll with grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7472</span>&#160;<span class="ticket-notes">Grid  ‚Äö√Ñ√∂‚àö√ë‚àö¬®  Grouped Header  ‚Äö√Ñ√∂‚àö√ë‚àö¬® Able to hide all columns in a specific scenario </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7630</span>&#160;<span class="ticket-notes">Grid : Infinite Scrolling: Getting Js error when click on Expand / Collapse icons after selecting ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Group by this field‚Äö√Ñ√∂‚àö√ë‚àöœÄ  option in the drop down menu</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7827</span>&#160;<span class="ticket-notes">Grid TableView's trackOver config does not honour false setting.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7853</span>&#160;<span class="ticket-notes">Grids : Infinite Grid with remote filter. Load never completes if filter returned no results.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7932</span>&#160;<span class="ticket-notes">CellEditing + Nav error when grid is empty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7953</span>&#160;<span class="ticket-notes">Paging Grid Example: The text preview spans 2 columns instead of 3 </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (8)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4345</span>&#160;<span class="ticket-notes">Layout does not properly handle min/maxWidth/Height if in autoWidth/Height mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6030</span>&#160;<span class="ticket-notes">Ext.Msg.alert fails is called while layouts are globally suspended.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7591</span>&#160;<span class="ticket-notes">Expand border collapsed region from floated disables further collapsing.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7593</span>&#160;<span class="ticket-notes">Border layout shuffles DOM order upon layout. This causes removed items to lose layout.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7687</span>&#160;<span class="ticket-notes">First panel in accordion multi layout is always expanded</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7688</span>&#160;<span class="ticket-notes">Unable to specify non-collapsible panels in accordion layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7744</span>&#160;<span class="ticket-notes">Switching to a shrinkwrap dimension should clear that dimension in the DOM on layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7858</span>&#160;<span class="ticket-notes">Closing a recently collapsed region in a border layout results in a removal error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7304</span>&#160;<span class="ticket-notes">Button Menu width does not resize when word length changes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7823</span>&#160;<span class="ticket-notes">Menu IE7 CSS issue: too wide and too white separators</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (19)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4015</span>&#160;<span class="ticket-notes">Charts Die at 2147483648 - Max Integer</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5483</span>&#160;<span class="ticket-notes">Accessibility : Binding a Grid to a Form : Active state is missing on rating radio buttons through keyboard tab.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5533</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calender  - The event drag and drop is not functioning as desired</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5591</span>&#160;<span class="ticket-notes">JS Calendar - Unable to scroll up/down using arrow keys to select time field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5678</span>&#160;<span class="ticket-notes">[4.1 RC1] Scoped CSS Incorrect in IE7/8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5881</span>&#160;<span class="ticket-notes">Tab:TabsOverflowMenu: Tabs are not seen in the drop-down in the mentioned scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6017</span>&#160;<span class="ticket-notes">Miscellaneous : Panels : ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Masked Panel with a really long title‚Äö√Ñ√∂‚àö√ë‚àöœÄ is not displaying title when panel is collapsed in Opera 11.61</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6130</span>&#160;<span class="ticket-notes">Drag and Drop : Grid to Grid DnD : Displaying JS error while moving records from first grid to second grid with "Ctrl" key.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7015</span>&#160;<span class="ticket-notes">Padding causes box layout overflow scroller to never disable scroll right button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7081</span>&#160;<span class="ticket-notes">Offset start and limit calculated incorrectly for infinite grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7095</span>&#160;<span class="ticket-notes">Not triggered and unefficient summary update.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7207</span>&#160;<span class="ticket-notes">Constrained floaters: Should maintain position but then constrain upon floatParent resize and move.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7374</span>&#160;<span class="ticket-notes">RTL - Themes Example - Message Box does not show any content, just an empty frame.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7390</span>&#160;<span class="ticket-notes">RTL - animation of width in rtl mode uses an incorrect anchor point</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7447</span>&#160;<span class="ticket-notes">Miscellaneous: Slider: 'Vertical Slider with multiple thumbs' tool tips are misplaced in a scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7470</span>&#160;<span class="ticket-notes">Border layout: expanding collapsed region caused iframe reloading</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7509</span>&#160;<span class="ticket-notes">Grid column header trigger gets cut off if header text is too wide in IE6 & IE quirks</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7603</span>&#160;<span class="ticket-notes">Windows -> Window Variations: Constrained windows position is changing or going outside the window, when Constraining window is moved.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7776</span>&#160;<span class="ticket-notes">ComponentQuery doesn't consider numeric zero as a value</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5381</span>&#160;<span class="ticket-notes">Panel does not open after rapid fire expand/close</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7411</span>&#160;<span class="ticket-notes">RTL - Themes Example - collapsed east placeholder has incorrect padding on tool.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7740</span>&#160;<span class="ticket-notes">BorderLayout: 'hidden: true' is ignored if 'collapsed: true'</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7848</span>&#160;<span class="ticket-notes">SelectionModel selectionchange event triggered when not needed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7903</span>&#160;<span class="ticket-notes">RowModel.onEditorTab doesn't handle cancelled beforeedit</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5067</span>&#160;<span class="ticket-notes">Toolbars and Menus: Basic Toolbar: Space between 'Choose a color' and 'Dynamically added item' menu items is more in IE compared to other browsers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7609</span>&#160;<span class="ticket-notes">Toolbar overflow button has no padding-right</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6399</span>&#160;<span class="ticket-notes">TreeViewDragDrop plugin now has a sortOnDrop config to maintain sort state of target node.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7762</span>&#160;<span class="ticket-notes">Trees: Drag and Drop Reordering: Expand/ Collapse for couple of times display JS error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6341</span>&#160;<span class="ticket-notes">Windows: Window Variations: Two floating windows ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Constrained Window‚Äö√Ñ√∂‚àö√ë‚àöœÄ and ‚Äö√Ñ√∂‚àö√ë‚àö‚à´Header-Constrained Window‚Äö√Ñ√∂‚àö√ë‚àöœÄ are disappearing in a particular scenario</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 83</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.3</h1>
+                <p class="notes">
+                    Release Date: October 25, 2012<br>
+                    Version Number: 4.1.3.548
+                </p>
+
+                <h2>Highlights</h2>
+
+                <p>The biggest change beyond bug fixes is the new build script based on
+                <a href="http://www.sencha.com/products/sencha-cmd">Sencha Cmd</a>. Go
+                to the SDK folder and run the following:</p>
+                <pre>
+    sencha ant build</pre>
+
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5500</span>&#160;<span class="ticket-notes">Style for chart line series not applied</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6593</span>&#160;<span class="ticket-notes">Bars in bar chart are not aligned with labels using time axes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6611</span>&#160;<span class="ticket-notes">Column chart with date axis does not render properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6931</span>&#160;<span class="ticket-notes">Labels on Time axis do not respect "step" config</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6974</span>&#160;<span class="ticket-notes">Custom chart theme - colors incorrectly applied with stacked columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6992</span>&#160;<span class="ticket-notes">Area chart  x-axis does not handle ticks with different increments than the data points</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7180</span>&#160;<span class="ticket-notes">Grid update. Updating selected row refocuses that row stealing focus from any previously focused element.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7210</span>&#160;<span class="ticket-notes">Chart losing label contrast after highlight</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7220</span>&#160;<span class="ticket-notes">Some series charts that do not have a Category Axis defined do not render</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6803</span>&#160;<span class="ticket-notes">Element content updating fails to update IMG src on IE.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7091</span>&#160;<span class="ticket-notes">Accessibility: Keyboard Feed Viewer: Unhiding √î√∏Œ©Author√î√∏Œ© column displays JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7309</span>&#160;<span class="ticket-notes">Missing key:value in Ext.Date.monthNumbers of the ext-lang-fr.js file</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7484</span>&#160;<span class="ticket-notes">Splitter doesn't work with one hidden panel next to it</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7486</span>&#160;<span class="ticket-notes">Date: UTC time zone offsets are no longer calculated</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7215</span>&#160;<span class="ticket-notes">DomQuery does not support an attribute selector with a "." in it</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7226</span>&#160;<span class="ticket-notes">Presence validation does not take boolean values into account</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7269</span>&#160;<span class="ticket-notes">Ext.data.NodeInterface remove doesn't call destroy if parent is null</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7422</span>&#160;<span class="ticket-notes">Field mapping should only honor 0 as a valid falsey value and ignore others</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7102</span>&#160;<span class="ticket-notes">Missing itemclick in docs for Ext.chart.series.Series</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7463</span>&#160;<span class="ticket-notes">Update docs for propertygrid.nameColumnWidth</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7243</span>&#160;<span class="ticket-notes">Drawing √î√∏Œ© Logos - Couple of Browser logos are displaying in Black & white color in FF</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7123</span>&#160;<span class="ticket-notes">Chart examples use xtype on constructed objects</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7196</span>&#160;<span class="ticket-notes">Statusbar Advanced example problem hiding error popup</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7268</span>&#160;<span class="ticket-notes">Charts   √î√∏Œ© Filled Radar Chart - Getting JS error when click on Animate Button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7351</span>&#160;<span class="ticket-notes">Combination Examples -  Web Desktop √î√∏Œ©Video is not playing and error √î√∏Œ©X√î√∏Œ© icon is displaying when  select √î√∏Œ©About Ext JS√î√∏Œ© option  in IE9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7434</span>&#160;<span class="ticket-notes">Typo in text for maxSelections on both MultiSelect and ItemSelector</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6069</span>&#160;<span class="ticket-notes">ComboBox reports incorrect value when non-unique display fields are used</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6405</span>&#160;<span class="ticket-notes">Default ComboBox shrinkWrap width should match TextField</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6959</span>&#160;<span class="ticket-notes">Focus lost when error tooltip displayed on modal window/form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6964</span>&#160;<span class="ticket-notes">HtmlEditor text highlight color is not working under html editor under Form-3 in FF browsers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7062</span>&#160;<span class="ticket-notes">Focus on combobox and datepicker removes the ability to close the row editor with "esc" key</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7117</span>&#160;<span class="ticket-notes">ComboBox forceSelection doesn't fire select event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7204</span>&#160;<span class="ticket-notes">Ext.form.field.File could not be fully enabled after being disabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7206</span>&#160;<span class="ticket-notes">A filefield initially hidden does not render the browse button correctly when shown</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7314</span>&#160;<span class="ticket-notes">Forms √î√∏Œ© Checkout form - Validation tool tip message is displaying even after entering required data in the text fields</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7348</span>&#160;<span class="ticket-notes">NumberField ignores spinDownEnabled and spinUpEnabled configs</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7396</span>&#160;<span class="ticket-notes">HtmlEditor: Editor is still focused after Source Edit is toggled off</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (19)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6431</span>&#160;<span class="ticket-notes">Grouping grid allows grouping by last visible column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7010</span>&#160;<span class="ticket-notes">Remote grid filtering doesn't work with locked column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7051</span>&#160;<span class="ticket-notes">Infinite grid: can't scroll to last row when cell height is changed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7127</span>&#160;<span class="ticket-notes">Deleting row above selected cell of a grid causes multiple cells to appear selected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7140</span>&#160;<span class="ticket-notes">Cannot call method 'getXY' of null error when scrolling buffered grid after creating new store with grid.reconfigure</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7166</span>&#160;<span class="ticket-notes">Buffered Grid scrollTo does not always reach specified scrollTop on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7167</span>&#160;<span class="ticket-notes">Grid : Grid plugins : Unable to expand the gird rows when we lock all the columns in the grid.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7177</span>&#160;<span class="ticket-notes">Grids : Cell editing with grouping Feature. Navigation allowed into collapsed groups.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7211</span>&#160;<span class="ticket-notes">CellSelectionModel, grid editing plugin failed when used for TreePanel editing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7214</span>&#160;<span class="ticket-notes">Locking grid gets in infinite loop when column locked config is set to false</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7225</span>&#160;<span class="ticket-notes">Grid: when using forceFit config, headers and columns are out of sync when resized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7238</span>&#160;<span class="ticket-notes">Able to hide all columns when the one remaining column is menuDisabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7335</span>&#160;<span class="ticket-notes">Grid reconfigure without new store unbinds old store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7336</span>&#160;<span class="ticket-notes">Grid column with locked false causes stack overflow</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7361</span>&#160;<span class="ticket-notes">Scroll delta difference when hovering locked and unlocked columns in FF15</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7451</span>&#160;<span class="ticket-notes">propertygrid: enableColumnResize and enableColumnMove configs don't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7495</span>&#160;<span class="ticket-notes">Grids:Grid Plugins: Double clicking on grid rows displays row expanded body with dotted line border</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7519</span>&#160;<span class="ticket-notes">Girds :  Gird Plugins Examples : Displaying Js error while scrolling down in the grid with keyboard key.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7569</span>&#160;<span class="ticket-notes">Table Views itemupdate event's node param is not a node associated with the view.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7231</span>&#160;<span class="ticket-notes">Showing/Hiding panel in borderLayout shows/hides all spliter on the same level</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7358</span>&#160;<span class="ticket-notes">JavaScript error when grid toolbars switched (IE error only)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7403</span>&#160;<span class="ticket-notes">Overflow Tool bar : √î√∏Œ©>>√î√∏Œ© (Menu extend /Menu trigger) button is not working</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7308</span>&#160;<span class="ticket-notes">Controller classes not in a 'controller' namespace fail during class creation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7420</span>&#160;<span class="ticket-notes">Ext.application causes synchronous loading and mail fail on some models</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7547</span>&#160;<span class="ticket-notes">Incorrect MVC namespace determined for some classes</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7265</span>&#160;<span class="ticket-notes">A checkbox is rendered on a checkmenuitem when the item is part of a radio group</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7442</span>&#160;<span class="ticket-notes">A button with a menu crashes if all menu items are disabled and you tab from field</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4070</span>&#160;<span class="ticket-notes">Modal containers allow tab out.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5450</span>&#160;<span class="ticket-notes">Focus lost when error tooltip displayed on modal window/form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6845</span>&#160;<span class="ticket-notes">Locking Grouping Grid: It is possible to hide all columns, resulting in a zero width grid.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7157</span>&#160;<span class="ticket-notes">RowBody of a selected row doesn't look selected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7170</span>&#160;<span class="ticket-notes">Ext.data.Model destroy always sends delete request to server</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7195</span>&#160;<span class="ticket-notes">HtmlEditor text area loses background color when using the highlight feature</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7216</span>&#160;<span class="ticket-notes">Page analyzer gets stack overflow in IE8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7234</span>&#160;<span class="ticket-notes">BUGS: ExtJS API doc view -- error in IE8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7435</span>&#160;<span class="ticket-notes">Ext.selection.DataViewModel missing view render check</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7460</span>&#160;<span class="ticket-notes">LoadMask always in front when owner has a parent container</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7475</span>&#160;<span class="ticket-notes">Tabs -> Group Tabs: JS error is displayed while navigating between the various tabs in IE6 and IE7 browsers only</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7561</span>&#160;<span class="ticket-notes">'body' missing in the docs of Panel</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7320</span>&#160;<span class="ticket-notes">Tab Scroller Menu Plugin- Selected Tab is not activated </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7139</span>&#160;<span class="ticket-notes">Tooltips with header have no padding around tools</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7221</span>&#160;<span class="ticket-notes">Error tooltip shown when no error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7248</span>&#160;<span class="ticket-notes">Unable to sort tree node in an un-rendered tree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7321</span>&#160;<span class="ticket-notes">Tree view dragdrop does not copy a subtree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7341</span>&#160;<span class="ticket-notes">Tree node's expand icon disappears on select when loading is required to show children</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7466</span>&#160;<span class="ticket-notes">TreeViewDragDrop plugin:   configuration allowParentInserts is not working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7476</span>&#160;<span class="ticket-notes">When reloading a tree node, view throws TypeError from updateIndexes</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7185</span>&#160;<span class="ticket-notes">Initially maximized window can still drag/resize</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7229</span>&#160;<span class="ticket-notes">Stateful window shown with animation save position incorrectly</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 86</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.2</h1>
+                <p class="notes">
+                    Release Date: September 7, 2012<br>
+                    Version Number: 4.1.2.381
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Animation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5214</span>&#160;<span class="ticket-notes">Ext.fx.Amin only animates last element in target list</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5675</span>&#160;<span class="ticket-notes">animateTarget id can cause animations to fail in some cases</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (12)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4699</span>&#160;<span class="ticket-notes">Gauge Chart Label Click issue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6236</span>&#160;<span class="ticket-notes">Columns are not bound to the x-axis</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6249</span>&#160;<span class="ticket-notes">Multiple issues with Time axis, Masks and Zoom</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6629</span>&#160;<span class="ticket-notes">chart.Chart.afterRender contains dead code</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6708</span>&#160;<span class="ticket-notes">Tooltip doesn't display the value on first mouseover</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6789</span>&#160;<span class="ticket-notes">Line carts lose style after resize</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6861</span>&#160;<span class="ticket-notes">Line series is not shown after disabling and enabling the legend item</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6896</span>&#160;<span class="ticket-notes">Bar Graph Axis become corrupted when refreshing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6901</span>&#160;<span class="ticket-notes">Chart √î√∏Œ© Line Chart:   All nodes are relocated at end point, when legend items are unchecked and checked </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6977</span>&#160;<span class="ticket-notes">Charts should restrict user from repeating category axis values</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7065</span>&#160;<span class="ticket-notes">Charts: Reload Chart: "Reload Data" button is not functioning</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7111</span>&#160;<span class="ticket-notes">Pie Charts: One  of the segment does not animate when shadow is set to false.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (17)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6520</span>&#160;<span class="ticket-notes">scrollIntoView causes menu items to disappear in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6552</span>&#160;<span class="ticket-notes">Instantiating local storage provider in old IE causes hard error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6571</span>&#160;<span class="ticket-notes">Grid Selection Model fires mouseup event when using direction keys</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6626</span>&#160;<span class="ticket-notes">Ext.syncRequire() doesn't add to Ext.Loader.history the same as Ext.require()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6690</span>&#160;<span class="ticket-notes">Calling Element.selectable() on labels doesn't make it selectable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6713</span>&#160;<span class="ticket-notes">Ext.Element.purgeAllListeners doesn't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6714</span>&#160;<span class="ticket-notes">Ext.Function.createInterceptor can't return false value for intercepted method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6716</span>&#160;<span class="ticket-notes">ExtJs 4.1.0 - XTemplate and nestled tpl for loops does not set parent values properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6817</span>&#160;<span class="ticket-notes">Dataview overItemCls only applied in dev mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6829</span>&#160;<span class="ticket-notes">Observable hasListener returns true after clearListeners</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6852</span>&#160;<span class="ticket-notes">Ext.dom.Helper fails to update innerHTML of THEAD in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6859</span>&#160;<span class="ticket-notes">DomHelper.insertAfter with multiple rows always inserts the 2nd row in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6863</span>&#160;<span class="ticket-notes">constrainTo property has no effect when window is being shown</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6905</span>&#160;<span class="ticket-notes">Ext.Date doesn't support 'o' and 'W' ISO-8601 formats</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6928</span>&#160;<span class="ticket-notes">Danish locale NumberField decimal separator incorrect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7108</span>&#160;<span class="ticket-notes">setDisabled on panel during render adds class to wrong element</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7175</span>&#160;<span class="ticket-notes">Loader garbage collection causes IE to request script with null src.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (28)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4601</span>&#160;<span class="ticket-notes">Tree cannot accept a root node that is currently the root of another Tree.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5612</span>&#160;<span class="ticket-notes">File uploads may fail in Opera</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5677</span>&#160;<span class="ticket-notes">metaData is not read in wrapped JSON (ASP.NET)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6305</span>&#160;<span class="ticket-notes">Model instance shared if proxy subclass specifies a reader config object</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6441</span>&#160;<span class="ticket-notes">Ext.data.proxy.JsonP autoAppendParams ignored in buildUrl method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6483</span>&#160;<span class="ticket-notes">Store's remove event is fired for each record passed - need bulkremove event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6550</span>&#160;<span class="ticket-notes">store.reload() has hard error when called on empty buffered store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6614</span>&#160;<span class="ticket-notes">Need spec to make sure AMF Packet can decode XMLDocument data type in AMF3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6615</span>&#160;<span class="ticket-notes">Need spec to verify AMF Packet can decode headers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6616</span>&#160;<span class="ticket-notes">AMF Packet has problems with floating point numbers.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6617</span>&#160;<span class="ticket-notes">AMF Packet does not decode dates correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6622</span>&#160;<span class="ticket-notes">AMF Packet needs spec for "Typed Object" data type</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6623</span>&#160;<span class="ticket-notes">AMF Grid Example throws "attempted to get unknown AMF3 type" error.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6663</span>&#160;<span class="ticket-notes">JsonP destroy method confuses entity life cycle with object cleanup</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6666</span>&#160;<span class="ticket-notes">Model.idChanged Event not fired when saving phantom records</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6733</span>&#160;<span class="ticket-notes">Ext.view.AbstractView pollutes record's data object with associated data</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6743</span>&#160;<span class="ticket-notes">TreeStore does not require specified model class as does Store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6746</span>&#160;<span class="ticket-notes">TreeStore nodeParam should replace "id" in requests</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6753</span>&#160;<span class="ticket-notes">DomQuery does not handle xml elements with namespace prefixes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6755</span>&#160;<span class="ticket-notes">TreeStore CRUD read request appends "id" parameter when TreeStore's "nodeParam" parameter is already present.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6788</span>&#160;<span class="ticket-notes">Datetime-fields not sent as null by Writer when not having a value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6826</span>&#160;<span class="ticket-notes">Ext.data.Writer does not recognize 'timestamp' field type</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6831</span>&#160;<span class="ticket-notes">TreeStore sometimes modifies the specified root node config</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6848</span>&#160;<span class="ticket-notes">Forms: MultiSelect and ItemSelector: Items are duplicated, when drag and drop the selected items under √î√∏Œ©MultiSelect Test√î√∏Œ© form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6882</span>&#160;<span class="ticket-notes">AMF Ajax specs have been disabled because of relative paths.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6933</span>&#160;<span class="ticket-notes">metachange event fire multiple times</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6935</span>&#160;<span class="ticket-notes">Typo in extjs-4.1.1/src/data/Store.js line 1768</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6988</span>&#160;<span class="ticket-notes">Buffered store w/ grid locks up in loading</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5722</span>&#160;<span class="ticket-notes">Data view : Advanced Data view  :  Vertical scroll bar is neither moving up/down  even user selection reached end of the list.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6437</span>&#160;<span class="ticket-notes">DataView: DataView: Images alignment is disturbed when only spaces are given in the image name</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6858</span>&#160;<span class="ticket-notes">Ext.view.View fire itemadd when adding to empty view</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5409</span>&#160;<span class="ticket-notes">Ext.String.trim method is not parsing @example tag correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6180</span>&#160;<span class="ticket-notes">Grid guide refers to old verticalScrollerType, link to Infinite Scrolling Example broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6625</span>&#160;<span class="ticket-notes">Rewrite AMF guide</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6742</span>&#160;<span class="ticket-notes">Window ghost config not documented</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6822</span>&#160;<span class="ticket-notes">Ext.util.Renderable.initRenderData should be marked as protected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6835</span>&#160;<span class="ticket-notes">Several components attempt to limit the access on their inherited API</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6936</span>&#160;<span class="ticket-notes">Remove call to getBubbleTarget in Ext.util.Observable:enableBubble example in docs because it recurses on itself</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7186</span>&#160;<span class="ticket-notes">Wrong calculation of step in Ext.draw.Draw</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-831</span>&#160;<span class="ticket-notes">Gradients not working when I extend Ext.draw.Component</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6047</span>&#160;<span class="ticket-notes">Ext.EventManager.contains should accept raw browser event instance</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (18)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6446</span>&#160;<span class="ticket-notes">Combination Examples: Ext Js Calendar :First created event is getting dragged and dropped  instead of second event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6447</span>&#160;<span class="ticket-notes">Direct: Direct Named Arguments: When long text is entered in name fields, server response alert is shown out of the response box.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6555</span>&#160;<span class="ticket-notes">Calendar incorrectly renders when date is set from midnight one day to midnight of the following day. </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6601</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar :No horizontal gap between the fields of √î√∏Œ©When√î√∏Œ© and √î√∏Œ©Calendar√î√∏Œ© </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6602</span>&#160;<span class="ticket-notes">Toolbars and Menus : Overflow toolbar : User getting "Action date"  alerts when user delete or enters invalid date in the action field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6635</span>&#160;<span class="ticket-notes">Forms √î√∏Œ© Shopping cart Checkout √î√∏Œ©  All items in the state combo box  are not displaying in a specific scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6638</span>&#160;<span class="ticket-notes">Combination Examples - Portal Demo - Graph is disappearing upon on click on √î√∏Œ©sp500√î√∏Œ©legend items when  it is in enable state</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6649</span>&#160;<span class="ticket-notes">Combination Examples - Feed viewer: Unable to select Column Header drop down menu after selecting √î√∏Œ©Right√î√∏Œ© option in the preview drop down menu.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6677</span>&#160;<span class="ticket-notes">Embedded ItemSelector in MultiSelects are configured to persist</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6703</span>&#160;<span class="ticket-notes">MessageBox's initial layout to auto size itself is visible in Opera</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6770</span>&#160;<span class="ticket-notes">Ext.ux.TreePicker in form return RawValue after form.getValues() is called</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6809</span>&#160;<span class="ticket-notes">Trailing comma issue in Ext.ux.grid.filter.DateFilter</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6812</span>&#160;<span class="ticket-notes">MultiSelect issue with same label</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6908</span>&#160;<span class="ticket-notes">Ext.ux.form.MultiSelect value should be empty array if store is empty not null</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6922</span>&#160;<span class="ticket-notes">AMF and SOAP examples throw an error in qa environment</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6929</span>&#160;<span class="ticket-notes">MultiSelect.getValue with single mode selection returns array of 2 items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7012</span>&#160;<span class="ticket-notes">GMapPanel creating global variable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7053</span>&#160;<span class="ticket-notes">Broken link to sqlite installation page in grid filtering example</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (40)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4412</span>&#160;<span class="ticket-notes">URL validation do not accept localhost</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5389</span>&#160;<span class="ticket-notes">Form gets dirty if a textarea field contains a leading line break</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5763</span>&#160;<span class="ticket-notes">Disabled displayfield doesn't appear greyed out</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5855</span>&#160;<span class="ticket-notes">HtmlEditor: various issues related to linebreaks and font selection</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5966</span>&#160;<span class="ticket-notes">Clarify the documentation regarding checkboxfield checkedCls</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5980</span>&#160;<span class="ticket-notes">Ext.form.field.File button text french translation is missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6128</span>&#160;<span class="ticket-notes">Ext.form.field.HtmlEditor: Can not select text outside visible text part</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6152</span>&#160;<span class="ticket-notes">HTMLEditor Font Combo Missing and Anchor margin-bottom not applied</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6219</span>&#160;<span class="ticket-notes">Modal mask causes body scroll on IE7/Quirks/IFrame</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6241</span>&#160;<span class="ticket-notes">Field validation is not always triggered when deleting all content in IE8/9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6280</span>&#160;<span class="ticket-notes">Too much top and bottom padding of form fieldset</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6424</span>&#160;<span class="ticket-notes">FieldContainer's absolute layout misplaced in firefox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6514</span>&#160;<span class="ticket-notes">Element.getAlignToXY inaccuracy when close to right edge of viewport</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6521</span>&#160;<span class="ticket-notes">Focus (including selectText) on input fields not functioning correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6556</span>&#160;<span class="ticket-notes">Focus on htmlEditor doesn't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6595</span>&#160;<span class="ticket-notes">BasicForm  reset should remove reference to _record</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6609</span>&#160;<span class="ticket-notes">Disabled fields should not display validation errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6652</span>&#160;<span class="ticket-notes">Ext.form.field.File enable is not enabling the button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6669</span>&#160;<span class="ticket-notes">Right Click Pasting does not trigger the combobox picker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6706</span>&#160;<span class="ticket-notes">Timefield text input disappears on first keystroke</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6711</span>&#160;<span class="ticket-notes">Ext.form.field.Number change min/max Value doesn't reset maskRe</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6745</span>&#160;<span class="ticket-notes">Form submit modal wait message. Modal mask not hidden on return.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6771</span>&#160;<span class="ticket-notes">LabelAlign top doesn't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6772</span>&#160;<span class="ticket-notes">NumberField enforceMaxLength doesn't deal  with spin up/down</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6777</span>&#160;<span class="ticket-notes">ComboBox readOnlyCls is never applied</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6793</span>&#160;<span class="ticket-notes">MultiSelect/ItemSelector do not display error icon properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6796</span>&#160;<span class="ticket-notes">Text field size changes on focus / blur in IE8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6798</span>&#160;<span class="ticket-notes">Picker drop downs not closed by tab key blur</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6836</span>&#160;<span class="ticket-notes">Japanese locale invalidates timefield when AM/PM is enabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6874</span>&#160;<span class="ticket-notes">reader and errorReader of Basic Form does not support creating by type</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6890</span>&#160;<span class="ticket-notes">Disabled HTML Editor Masks Entire Form in Firefox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6934</span>&#160;<span class="ticket-notes">msgTarget qtip/title trigger layouts when not needed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6939</span>&#160;<span class="ticket-notes">Combobox flickers before it appears for first time</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6944</span>&#160;<span class="ticket-notes">Fieldsets with a minHeight and collapsible collapse incorrect elements</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6950</span>&#160;<span class="ticket-notes">Proper css class not added when labelAlign: 'top'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6990</span>&#160;<span class="ticket-notes">triggerNoEditCls is not applied to non-editable or readonly Ext.form.field.ComboBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7000</span>&#160;<span class="ticket-notes">CheckboxManager incorrectly returns checkboxes from other forms</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7017</span>&#160;<span class="ticket-notes">Email vtype doesn't allow single quote and other special chars within local part of email address</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7020</span>&#160;<span class="ticket-notes">Multi-thumb slider cannot set all values at once using setValue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7058</span>&#160;<span class="ticket-notes">Forms√î√∏Œ© Shopping cart Checkout- Text fields are overlapping with respective section borders </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (42)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4164</span>&#160;<span class="ticket-notes">RowWrap feature CSS overrides the grid cell dirty CSS</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5595</span>&#160;<span class="ticket-notes">Last selected row maintains selection after unchecked on column sort</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5676</span>&#160;<span class="ticket-notes">rowLines : false config has no effect for locked grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6404</span>&#160;<span class="ticket-notes">[4.1] scrollByDeltaX and scrollByDeltaY methods not working on a locking grid panel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6592</span>&#160;<span class="ticket-notes">Column header CSS classes related to sort contain "undefined"</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6598</span>&#160;<span class="ticket-notes">Group Column hidden: true doesn't hide its child columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6634</span>&#160;<span class="ticket-notes">RowNumberer columns should default to being in the locked side of a lockable grid.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6665</span>&#160;<span class="ticket-notes">Locked side of locked grid is 1px too wide, may scroll horizontally upon focus.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6691</span>&#160;<span class="ticket-notes">Ext.grid.feature.GroupingView does not respect enableGroupingMenu</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6695</span>&#160;<span class="ticket-notes">When CheckboxSelectionModel is used in locking grid, check column is duplicated, one on each side.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6702</span>&#160;<span class="ticket-notes">Grouping Feature's menu CheckItem "Show in groups" should be disabled if Store is not grouped.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6724</span>&#160;<span class="ticket-notes">Wrong getEditor() call in RowModel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6727</span>&#160;<span class="ticket-notes">Columns in locked grid should be able to be not lockable.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6730</span>&#160;<span class="ticket-notes">Error when editable column edited then dragged to other side of locked grid, edited again, the dragged back and edited again</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6731</span>&#160;<span class="ticket-notes">Grid √î√∏Œ© Locking, Group Summary Grid Example with grouped headers - Getting JS Error when tab key is pressed and  hold for a while when all columns  are locked state</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6736</span>&#160;<span class="ticket-notes">Features and plugins are always cloned to both sides of a lockable grid.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6747</span>&#160;<span class="ticket-notes">Grid check box selection bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6759</span>&#160;<span class="ticket-notes">Ext.grid.header.Container:getHeaderIndex has typo in query string</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6768</span>&#160;<span class="ticket-notes">Grid cell editing does not update rendered elements properly in all cases</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6800</span>&#160;<span class="ticket-notes">Columns grid header menu needs hideOnClick set</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6808</span>&#160;<span class="ticket-notes">Grid sortchange fires two times on header click(sort)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6811</span>&#160;<span class="ticket-notes">Position is NaN in slider when number of records < = pageSize </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6820</span>&#160;<span class="ticket-notes">In all header menu drop-downs,Sort Descending icon is not displaying </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6839</span>&#160;<span class="ticket-notes">CheckboxModel sometimes accesses element before rendering</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6842</span>&#160;<span class="ticket-notes">Cell Editing Grid:   Displaying JS error when Delete Plant button is clicked after selecting any cell in the grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6860</span>&#160;<span class="ticket-notes">Destroying a grid during grid editing results in JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6875</span>&#160;<span class="ticket-notes">[4.1.1 GA] RowEditing Update button initially looks enabled for invalid editor</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6876</span>&#160;<span class="ticket-notes">Grid with rowExpander is non-functional if a column is locked.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6914</span>&#160;<span class="ticket-notes">Wrong horz scrollbar on Grid within Accordion Layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6930</span>&#160;<span class="ticket-notes">Ext.grid.plugin.RowEditingView conflicting with grouped headers in grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6932</span>&#160;<span class="ticket-notes">RowNumberer rowSpan is not applied</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6985</span>&#160;<span class="ticket-notes">Calling setWidth on grid header with hideHeaders:true does not resize column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6986</span>&#160;<span class="ticket-notes">Cell editing restores wrong value when value is updated during edit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6989</span>&#160;<span class="ticket-notes">Row updating after field edit does not update all attributes of the TDs</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7014</span>&#160;<span class="ticket-notes">Load options.callback called multiple times when Store is buffered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7018</span>&#160;<span class="ticket-notes">Row update loses altRowCls for row striping</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7046</span>&#160;<span class="ticket-notes">Grid√î√∏Œ© Locking, Group Summary Grid Example with grouped headers- Displaying Blank when  Schedule column is locked  </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7087</span>&#160;<span class="ticket-notes">PropertyGrid without source throws a JavaScript error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7088</span>&#160;<span class="ticket-notes">Checkbox disappears after reconfigure call on locked grid with checkbox selection mod</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7092</span>&#160;<span class="ticket-notes">Grid : Locking Grouping Grid with Summary and Grouped headers: "Schedule" grouped column header is still displaying even there are no columns exist in the group.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7104</span>&#160;<span class="ticket-notes">With CheckboxModel selection model Header Checkbox is checked on empty store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7115</span>&#160;<span class="ticket-notes">Locked grid header menu trigger disappears after a reconfigure</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5999</span>&#160;<span class="ticket-notes">Overflow items do not sync with dynamic state change of toolbar. Toggle buttons represented wrongly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6539</span>&#160;<span class="ticket-notes">Collapsed regions are changing layout after floating out in a border layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6854</span>&#160;<span class="ticket-notes">Table layout - clearEl defined but not used</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6925</span>&#160;<span class="ticket-notes">Panel with flex 'height' less than minHeight not working correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6979</span>&#160;<span class="ticket-notes">collapseFirst: false does not work for the accordion layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6996</span>&#160;<span class="ticket-notes">Splitters in vbox layout incorrectly read width instead of height</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6662</span>&#160;<span class="ticket-notes">Ext.app.Controller.hasRef - use Ext.Array.indexOf to find reference</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6725</span>&#160;<span class="ticket-notes">Controller dependencies are broken if you don't have controller in the class name</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6726</span>&#160;<span class="ticket-notes">views set on Ext.application will not load files</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (27)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4583</span>&#160;<span class="ticket-notes">Singleton is created when singleton (false) is listed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4853</span>&#160;<span class="ticket-notes">Drag and Drop : Grid To Grid DnD - Tool tip is stretched while dragging the row second time.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6170</span>&#160;<span class="ticket-notes">Ext.DomHelper's 'confRe' matches substrings while it shouldn't</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6248</span>&#160;<span class="ticket-notes">Ext.chart.Mask is broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6356</span>&#160;<span class="ticket-notes">locale update for ext-lang-it.js</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6376</span>&#160;<span class="ticket-notes">[4.1.0] TreePanel selectPath callback is called twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6400</span>&#160;<span class="ticket-notes">Floating components do not get destroyed when an ancestor is destroyed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6409</span>&#160;<span class="ticket-notes">Field to grid example. Enable dragging fields via their label.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6537</span>&#160;<span class="ticket-notes">Date picker shows a selection when picking a new month from the month picker, even though the value has not changed.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6640</span>&#160;<span class="ticket-notes">If a container is draggable, Ext.resizer.Resizer does not resize the container in IE8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6728</span>&#160;<span class="ticket-notes">Border Layout: collapsing or expanding a region while another region's float animation is taking place puts the layout in a weird state.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6757</span>&#160;<span class="ticket-notes">New Jira Test!</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6761</span>&#160;<span class="ticket-notes">en_GB Locale does not localize dates in DateColumns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6819</span>&#160;<span class="ticket-notes">TaskRunner quietly catches errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6833</span>&#160;<span class="ticket-notes">Ext.util.KeyNav.setConfig() assigns undefined defaultEventAction property</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6834</span>&#160;<span class="ticket-notes">XTemplate renders null data value as "null" but should be blank like undefined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6844</span>&#160;<span class="ticket-notes">AMF Grid Example does not load in Firefox 3.6</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6846</span>&#160;<span class="ticket-notes">When scrolling down an infinite and locked column grid the row synchronization breaks</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6851</span>&#160;<span class="ticket-notes">AbstractComponent addes isContained to item configs</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6864</span>&#160;<span class="ticket-notes">AbstractComponent methods preFocus, beforeBlur and postBlur should be protected not private</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6873</span>&#160;<span class="ticket-notes">Ext.grid.plugin.DragDrop dragText is not localized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6942</span>&#160;<span class="ticket-notes">negativeText is not overridden in locale files for Ext.locale.ru.form.field.Number</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6984</span>&#160;<span class="ticket-notes">ext-lang-pt_BR.js accent is not properly encoded</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7001</span>&#160;<span class="ticket-notes">AbstractComponent - duplicate Ext.ComponentQuery dependency</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7013</span>&#160;<span class="ticket-notes">Selection disappears when scrolling in an infinite grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7047</span>&#160;<span class="ticket-notes">Grids -> Locking Grouping Grid with Summary and grouped headers: Columns are not properly aligned when initially example is loaded.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7143</span>&#160;<span class="ticket-notes">Accidental global vars in Date parser and VType</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6543</span>&#160;<span class="ticket-notes">Collapsing a panel causes its header to appear even if "header:false"</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6720</span>&#160;<span class="ticket-notes">Panel header tools - "close" not set to instance of Ext.panel.Tool</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6774</span>&#160;<span class="ticket-notes">Adding a floating component does not trigger the add event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6779</span>&#160;<span class="ticket-notes">Panel.addTool can add tool twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6915</span>&#160;<span class="ticket-notes">Placeholder does not honor titleCollapse over floating</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6927</span>&#160;<span class="ticket-notes">Panel placeholder collapse event fires at construction time</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6997</span>&#160;<span class="ticket-notes">Calling Panel.setTitle when not rendered fails to set the title</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6937</span>&#160;<span class="ticket-notes">CellSelectionModel gets JS error when Tab button is pressed after deleting last row in the grid </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6633</span>&#160;<span class="ticket-notes">TabPanel's tabBar config should accept a layout config to modify the layout of the tabBar</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6643</span>&#160;<span class="ticket-notes">_loadmask.scss - typo in a variable name</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6693</span>&#160;<span class="ticket-notes">Using tooltips on various components throws errors when QuickTips are not enabled</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5970</span>&#160;<span class="ticket-notes">Overflowchange is not fired when a toolbar is resized and the overflow is changed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6814</span>&#160;<span class="ticket-notes">Repeated button hiding causes non-responsiveness</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6982</span>&#160;<span class="ticket-notes">Toolbar item setText does not update text property</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (14)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3758</span>&#160;<span class="ticket-notes">Tree API is missing "getOwnerTree" method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3764</span>&#160;<span class="ticket-notes">TreeView does not provide nodedragover event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6474</span>&#160;<span class="ticket-notes">Tree node quick tip needs to be HTML encoded when rendered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6667</span>&#160;<span class="ticket-notes">Tree node drag drop reordering does not invoke tree panel scroller</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6681</span>&#160;<span class="ticket-notes">[4.1] Poor performance of TreeStore sort</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6738</span>&#160;<span class="ticket-notes">Global leak in NodeInterface decorate method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6797</span>&#160;<span class="ticket-notes">TablePanels with hideHeaders:true missing top border</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6813</span>&#160;<span class="ticket-notes">TreeGrid keyboard navigation stops working in IE9 after you expand a node using the keyboard</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6856</span>&#160;<span class="ticket-notes">TreeView does not always update height after expand/collapse of items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6857</span>&#160;<span class="ticket-notes">Tree does not auto size using after expand/collapse with animate: false</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6865</span>&#160;<span class="ticket-notes">Tree add and remove methods have poor performance</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6866</span>&#160;<span class="ticket-notes">Dragging elements past the overflow point in a tree grid does not allow scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7048</span>&#160;<span class="ticket-notes">Consecutive animated expand/collapse calls on a tree node causes unpredictable corruption and JS errors.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-7135</span>&#160;<span class="ticket-notes">Trees√î√∏Œ© Drag and Drop reordering √î√∏Œ© Getting script error in FF browsers when √î√∏Œ©Expand All√î√∏Œ© and √î√∏Œ©Collapse All√î√∏Œ© buttons are clicked </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6426</span>&#160;<span class="ticket-notes">CellEditors in a modal Window cause the window to be masked below its own mask.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6540</span>&#160;<span class="ticket-notes">Maximized window rendered into a DIV positioned incorrectly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6689</span>&#160;<span class="ticket-notes">Align center in a window doesn't wrap text</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6756</span>&#160;<span class="ticket-notes">Esc will not close window with a editable grid If Esc was used to stop inline editing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6782</span>&#160;<span class="ticket-notes">Modal mask for Window can cause scrollbars on the body in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6872</span>&#160;<span class="ticket-notes">Ext.Msg.show maxWidth doesn't cause any effect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6941</span>&#160;<span class="ticket-notes">IconCls param ignored in Ext.MessageBox.show</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 243</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1</h1>
+                <p class="notes">
+                    Release Date: July 4, 2012<br>
+                    Version Number: 4.1.1
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6275</span>&#160;<span class="ticket-notes">Line chart messed up after disabling and enabling lines though legend</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6323</span>&#160;<span class="ticket-notes">Charts don't render with either constrain, or both maximum and minimum</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6324</span>&#160;<span class="ticket-notes">Problem using minimum, maximum and majorTicksSteps together</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6359</span>&#160;<span class="ticket-notes">Chart should display integers on axis</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6583</span>&#160;<span class="ticket-notes">Chart redraw on store update fails in inactive card</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6585</span>&#160;<span class="ticket-notes">Rapid clicks on pie chart causes slices to shrink or disappear</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (10)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3932</span>&#160;<span class="ticket-notes">dom.style.setExpression not implemented in IE8</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5956</span>&#160;<span class="ticket-notes">Ext.extend does not handle constructor properly using 3-argument form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6087</span>&#160;<span class="ticket-notes">Ext.data.TreeStore CRUD regression</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6452</span>&#160;<span class="ticket-notes">Container's private floatingItems collection should be floatingDescendants</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6453</span>&#160;<span class="ticket-notes">Container-owned floating items appear at wrong level in the ComponentQuery hierarchy</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6456</span>&#160;<span class="ticket-notes">ComponentQuery :last selector fails with a single item</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6484</span>&#160;<span class="ticket-notes">Ext.AbstractManager.onAvailable listener isn't removed properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6499</span>&#160;<span class="ticket-notes">Reusing id's for elements recently removed from the DOM would incorrectly reference old element</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6570</span>&#160;<span class="ticket-notes">Ext.Element getStyle can throw in IE6/7 reading font styles</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6612</span>&#160;<span class="ticket-notes">Observable.resumeEvents should tolerate being called when suspendCount is zero</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5253</span>&#160;<span class="ticket-notes">Ext.data.writer.Json no longer respects dateFormat</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5995</span>&#160;<span class="ticket-notes">Model field disappear when using idProperty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6480</span>&#160;<span class="ticket-notes">loadData reading an Array uses the wrong field order to read the data items.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6523</span>&#160;<span class="ticket-notes">data.Reader will not read data where a model is included</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6545</span>&#160;<span class="ticket-notes">Can't reload buffered store after filtering</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6627</span>&#160;<span class="ticket-notes">Model.copy passes its data into the new constructor as raw which gets converted.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6524</span>&#160;<span class="ticket-notes">AbstractView should not cancel SPACE key event if target is an input element.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5148</span>&#160;<span class="ticket-notes">Ext.selection.Model documentation bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6187</span>&#160;<span class="ticket-notes">Grouping and locking features do not work together</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6573</span>&#160;<span class="ticket-notes">AbstractComponent.render missing in the API docs</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6449</span>&#160;<span class="ticket-notes">Simple Tasks reminder window does not lay out when resized.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6450</span>&#160;<span class="ticket-notes">Themes example's layout expands vertical slider's element to 100% width</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6462</span>&#160;<span class="ticket-notes">Chart rendering is broken by moving its ancestors in the DOM in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6717</span>&#160;<span class="ticket-notes">Combination Examples - Feed Viewer:  Getting error upon clicking on any feed in the preview panel when "Hide" option is selected in the preview drop down menu.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (15)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6071</span>&#160;<span class="ticket-notes">The title of the MultiSelect is not displayed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6085</span>&#160;<span class="ticket-notes">"Custom Layout " Alert message borderline is missing under "Radio Groups " in IE6 </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6086</span>&#160;<span class="ticket-notes">labelWidth is ignored with labelAlign top</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6127</span>&#160;<span class="ticket-notes">TextField emptyText cannot be entered as the value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6160</span>&#160;<span class="ticket-notes">Ext.form.field.Time does not initialize value correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6227</span>&#160;<span class="ticket-notes">Adding a new field to a form layout fails on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6311</span>&#160;<span class="ticket-notes">Time field clears value on blur.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6371</span>&#160;<span class="ticket-notes">Fields with labelAlign top need to not make label its own row - causes too many problems</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6402</span>&#160;<span class="ticket-notes">DisplayField doesn't update size after a value change</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6416</span>&#160;<span class="ticket-notes">Calling setText on unrendered TextField does not work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6445</span>&#160;<span class="ticket-notes">standardSubmit: true is broken for forms with params</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6478</span>&#160;<span class="ticket-notes">Ext.form.BasicForm fails to correctly read the response of a file upload</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6568</span>&#160;<span class="ticket-notes">HtmlEditor leaks memory on window unload in IE6/7</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6579</span>&#160;<span class="ticket-notes">HtmlEditor contents are cleared by initial Ext.example.msg</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6594</span>&#160;<span class="ticket-notes">enforceMaxLength with no maxLength in textfield allows only one char</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (18)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5343</span>&#160;<span class="ticket-notes">Lockable views do not handle drag between two sides well or dragging of or between group headers.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6075</span>&#160;<span class="ticket-notes">Checkbox selection model's header checkbox not in sync if records are added/removed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6242</span>&#160;<span class="ticket-notes">Grid row editor does not close when record being edited is removed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6264</span>&#160;<span class="ticket-notes">Grid filter range menu iconCls conflicts with Panel iconCls - rename to itemIconCls</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6419</span>&#160;<span class="ticket-notes">Grid Filters JS error when click on any column header after filtering Date and swap columns </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6420</span>&#160;<span class="ticket-notes">Grid row heights aren't synced in locked grid on IE9 standards.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6421</span>&#160;<span class="ticket-notes">Locking grid headers misplaced after column hide</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6440</span>&#160;<span class="ticket-notes">BorderLayout: collapsed GridPanel on south looks inconsistent after expand</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6463</span>&#160;<span class="ticket-notes">Infinite grid alignment is skewed by presence of group headers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6477</span>&#160;<span class="ticket-notes">Arrow keys become unresponsive when arrowing through records in a buffered grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6481</span>&#160;<span class="ticket-notes">Firefox 13 new default smooth scrolling leads to very slow grid scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6482</span>&#160;<span class="ticket-notes">Grid RowExpander is not reinserted after reconfigure</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6509</span>&#160;<span class="ticket-notes">Using getEditor on a grid column creates an orphaned component resulting in a memory leak</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6531</span>&#160;<span class="ticket-notes">Grid reconfigure fails with hideHeaders</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6546</span>&#160;<span class="ticket-notes">PagingScroller onCacheClear assumes view is rendered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6584</span>&#160;<span class="ticket-notes">Cell editing in locked grid causes JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6644</span>&#160;<span class="ticket-notes">CellSelectionModel selects the wrong cell in a locked grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6718</span>&#160;<span class="ticket-notes">Tab key causes error when cell editing with row selection model</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5131</span>&#160;<span class="ticket-notes">ShrinkWrap layouts can fail with constrained widths / heights</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6041</span>&#160;<span class="ticket-notes">In IE8/9 "strict" mode, Box layout's perpendicular overflow does not work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6049</span>&#160;<span class="ticket-notes">Auto-width grid in vbox stretches to 10,000px</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6369</span>&#160;<span class="ticket-notes">Closing floated/collapsed panel in border layout causes JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6528</span>&#160;<span class="ticket-notes">Ext.layout.container.BoxOverflow.Menu.destroy throws Exception</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6386</span>&#160;<span class="ticket-notes">Picking a date doesn't work when Date field inside Menu</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6348</span>&#160;<span class="ticket-notes">Drag-drop on invalid dropzone leaves no focus</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6510</span>&#160;<span class="ticket-notes">IE 6 nonsecure items warning when using Ext.History</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5149</span>&#160;<span class="ticket-notes">"mini" collapseMode in border layout doesn't seem to work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6372</span>&#160;<span class="ticket-notes">Multiple issues with Panel.setBodyStyle</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6373</span>&#160;<span class="ticket-notes">Specifying Panel header config and closable: true causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6448</span>&#160;<span class="ticket-notes">Left and right aligned headers in panel drag are not layed out properly</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6163</span>&#160;<span class="ticket-notes">SplitButton with arrowAlign bottom and Gray theme - CSS issue on mouse over</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6425</span>&#160;<span class="ticket-notes">Sass function theme-background-image throws exception without a return value and css doesn't compile</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6251</span>&#160;<span class="ticket-notes">Toolbar defaults override single item settings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6451</span>&#160;<span class="ticket-notes">Form fields clone in overflow menu of toolbar do not sync the original field value</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5248</span>&#160;<span class="ticket-notes">Ext.data.TreeStore setting the root property in the proxy doesn't work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6005</span>&#160;<span class="ticket-notes">Ext.data.TreeStore with Ext.data.proxy.Rest does not pass ids correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6302</span>&#160;<span class="ticket-notes">NodeInterface qtip and qtitle not updated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6417</span>&#160;<span class="ticket-notes">tree.selectPath(tree.getRootNode().getPath()) doesn't select</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6418</span>&#160;<span class="ticket-notes">Folder keeps displaying collapse button after all leaves are dragged away</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6443</span>&#160;<span class="ticket-notes">expandable: false has no effect in tree grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6473</span>&#160;<span class="ticket-notes">Spacebar not toggling checkbox state in TreePanel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6554</span>&#160;<span class="ticket-notes">Tree view refresh event is fired before the render event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6580</span>&#160;<span class="ticket-notes">Tree node parentId doesn&#39;t respect useNull</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5889</span>&#160;<span class="ticket-notes">Dragging a header-constrained window below Viewport bottom scrolls the Viewport</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6033</span>&#160;<span class="ticket-notes">Ext.window.Window fire incorrect events when maximized/restored</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6234</span>&#160;<span class="ticket-notes">Constrained window in a border layout is displaying at wrong location.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6297</span>&#160;<span class="ticket-notes">Constraining a window to a panel using the "constrain" config does not work when "autoShow" is true</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6397</span>&#160;<span class="ticket-notes">Form submit with waitMsg:'string' called from Window focuses the Window which hides any MessageBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6547</span>&#160;<span class="ticket-notes">Window is not closed on Esc</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 94</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1 RC 2</h1>
+                <p class="notes">
+                    Release Date: June 13, 2012<br>
+                    Version Number: 4.1.1 RC 2
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6139</span>&#160;<span class="ticket-notes">Button retains the focused state after disabling and enabling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6329</span>&#160;<span class="ticket-notes">Config html of Button not working</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6077</span>&#160;<span class="ticket-notes">Layouts cause Charts to (re)animate</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6224</span>&#160;<span class="ticket-notes">Chart export hard codes sencha.io</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5767</span>&#160;<span class="ticket-notes">return false from beforerender throws exception</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5944</span>&#160;<span class="ticket-notes">Ext.onReady with delay option hangs up a browser</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6055</span>&#160;<span class="ticket-notes">onReady does not work in an iframe in IE8 when parent is a different domain</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6056</span>&#160;<span class="ticket-notes">Problems with Component previousNode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6124</span>&#160;<span class="ticket-notes">Loader calls Ext globalEval with code that breaks when IE cc_on</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6137</span>&#160;<span class="ticket-notes">Element slideIn tr anchor doesn't work as expected.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6185</span>&#160;<span class="ticket-notes">getPosition on floating Components with parent Container always returns container-relative position</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6196</span>&#160;<span class="ticket-notes">calling showAt on a component does not fire the 'show' event.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6199</span>&#160;<span class="ticket-notes">DomQuery fails with dots in the element id</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6273</span>&#160;<span class="ticket-notes">EventManager does not return listener response</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6319</span>&#160;<span class="ticket-notes">Ext.onReady sometimes fails in an iframe in IE when parent is in a different domain</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6298</span>&#160;<span class="ticket-notes">Ext.data.Tree.flatten duplicates Ext.Object.getValues</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6305</span>&#160;<span class="ticket-notes">Model instance shared if proxy subclass specifies a reader config object</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6306</span>&#160;<span class="ticket-notes">Model's Id field not defined after sync in TreeStore</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6019</span>&#160;<span class="ticket-notes">When deferInitialRefresh is false, the arrival of the data still causes a second layout run</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5558</span>&#160;<span class="ticket-notes">refs config not in API documentation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6179</span>&#160;<span class="ticket-notes">pruneRemoved on Ext.selection.Model should not be private</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6320</span>&#160;<span class="ticket-notes">Listener tracking is broken when removing non-existent listener</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6413</span>&#160;<span class="ticket-notes">Tabs : Basic Tabs: Clicking on √î√∏Œ©Event Tab√î√∏Œ© for first time, displaying the tab's content with border line</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (17)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5298</span>&#160;<span class="ticket-notes">Ext.form.Panel does not respect inherited properties when creating the BasicForm</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5962</span>&#160;<span class="ticket-notes">Dragging mouse off the right over a form scrolls content out of view in WebKit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6121</span>&#160;<span class="ticket-notes">TimeField submit format not using 24 hour format</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6142</span>&#160;<span class="ticket-notes">Form field with incorrect width on validation, if msgTarget: 'side'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6143</span>&#160;<span class="ticket-notes">Ext.form.field.Number: Spinner field sometimes fires 2 spin events</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6173</span>&#160;<span class="ticket-notes">Field not destroyed after form is closed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6176</span>&#160;<span class="ticket-notes">Forms : File uploads : "File upload" window is not opening upon clicking on "photo" text field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6184</span>&#160;<span class="ticket-notes">Labelable: getFieldLabel should implement same logic as the setter as regards label separator</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6198</span>&#160;<span class="ticket-notes">Fields within Field Container don't resize properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6255</span>&#160;<span class="ticket-notes">TextAarea ignores "cols" attribute</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6258</span>&#160;<span class="ticket-notes">Combobox forceSelection clears the value if there is no match</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6277</span>&#160;<span class="ticket-notes">MsgBox header components are not placed properly in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6278</span>&#160;<span class="ticket-notes">Trigger button does not look disabled on a disabled ComboBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6281</span>&#160;<span class="ticket-notes">Store filter from combobox remains after combo is destroyed and store is reused</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6303</span>&#160;<span class="ticket-notes">HtmlEditor destroy generates errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6340</span>&#160;<span class="ticket-notes">Measurement of triggerWidth does not work correctly with scopedResetCSS</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6361</span>&#160;<span class="ticket-notes">File upload field browse button does not properly re-enable after the field has been disabled in Internet Explorer</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (29)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5934</span>&#160;<span class="ticket-notes">Infinite Grid does not clear page cache when grouping changes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6001</span>&#160;<span class="ticket-notes">Error in Ext.grid.plugin.Editing if no cell is active</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6025</span>&#160;<span class="ticket-notes">CellEditing plugin does not refocus edited cell when completing an edit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6037</span>&#160;<span class="ticket-notes">When groups are rendered initially collapsed using startCollapsed, they cannot be expanded.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6050</span>&#160;<span class="ticket-notes">Grid Group's groupHeaderTpl does not have parent param</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6070</span>&#160;<span class="ticket-notes">Row positions issue on vertical scroll and sorting</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6107</span>&#160;<span class="ticket-notes">Grid Column Sort Indicator Problem</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6115</span>&#160;<span class="ticket-notes">RowEditing uses wrong record if startEdit is called while already editing a record</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6117</span>&#160;<span class="ticket-notes">Locked column in infinite grid causes rows to disappear on page refresh</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6122</span>&#160;<span class="ticket-notes">Editing a Grid and then reloading its Data causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6123</span>&#160;<span class="ticket-notes">Wrong grid panel height on layout change</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6135</span>&#160;<span class="ticket-notes">Scrolling and Rendering Bug in Grid Grouping with Summary example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6157</span>&#160;<span class="ticket-notes">Grid Row Editor's Update button is not always enabled/disabled properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6164</span>&#160;<span class="ticket-notes">ProgressBar Pager fails when clicking on left edge of the progress bar.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6171</span>&#160;<span class="ticket-notes">RowEditor in tab panel does not show editors properly when tab is hidden</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6186</span>&#160;<span class="ticket-notes">ActionColumn icon not updating in Grid or TreeGrid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6194</span>&#160;<span class="ticket-notes">removeAll on buffered grid causes error in cancelAllPrefetches</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6197</span>&#160;<span class="ticket-notes">ActionColumn appearance does not change when disabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6228</span>&#160;<span class="ticket-notes">Column Group uses wrong config "restrictColumnReorder" - should be "sealedColumns"</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6232</span>&#160;<span class="ticket-notes">Grid column resizers are not aligned correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6259</span>&#160;<span class="ticket-notes">Infinite Grid with Grouping. Groups should not be collapsible.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6313</span>&#160;<span class="ticket-notes">Large jumps in infinite grid sometimes prune a required page from the buffered store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6337</span>&#160;<span class="ticket-notes">Gridview fails to render properly if initial refresh occurs before view is rendered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6347</span>&#160;<span class="ticket-notes">Grid Column Tooltip not supported as it was in v3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6364</span>&#160;<span class="ticket-notes">Cell editing with RowSelection model causes JS error on endEdit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6414</span>&#160;<span class="ticket-notes">Grid / Infinite Scrolling with remote filtering / Load masking is displaying and not able to search for the second time </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6422</span>&#160;<span class="ticket-notes">Row Editor throws an error when the grid has a checkbox selection model</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6436</span>&#160;<span class="ticket-notes">RowEditor does not sync when grid columns dragged to reorder.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6461</span>&#160;<span class="ticket-notes">Sort is broken on Remote Summary Grid</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5167</span>&#160;<span class="ticket-notes">Box layout (toolbar) overflow button does not work twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5562</span>&#160;<span class="ticket-notes">Horizontal scrollbar not visible when set to overflow in hbox layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5806</span>&#160;<span class="ticket-notes">Box layout fails to respect width and height percentages</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5935</span>&#160;<span class="ticket-notes">Error removing item afterRender: ownerContext.target.ownerLayout not defined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5939</span>&#160;<span class="ticket-notes">Adding a new Checkbox to a CheckboxGroup fails on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5990</span>&#160;<span class="ticket-notes">Layout failure with fieldset in vbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6129</span>&#160;<span class="ticket-notes">Collapsed fieldset does not resize parent when opened</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6158</span>&#160;<span class="ticket-notes">Percentage size does not work for floating components like Window</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6428</span>&#160;<span class="ticket-notes">Accordion with single item throws JS error in onComponentCollapse</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6162</span>&#160;<span class="ticket-notes">Ext.application.init() is never invoked</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6254</span>&#160;<span class="ticket-notes">Can't edit textfields properly when placed in a Menu</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6321</span>&#160;<span class="ticket-notes">Menu subclass doesn't inherit scrolling functionality</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6100</span>&#160;<span class="ticket-notes">.sass-cache included in extjs pachage</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6170</span>&#160;<span class="ticket-notes">Ext.DomHelper's 'confRe' matches substrings while it shouldn't</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6193</span>&#160;<span class="ticket-notes">DragDropManager.fireEvents - wrong parameters calling onInvalidDrop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6208</span>&#160;<span class="ticket-notes">Traditional Chinese localization does not display properly for days of the week in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6226</span>&#160;<span class="ticket-notes">Draw component does not auto-size correctly with no content</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6253</span>&#160;<span class="ticket-notes">Scoped css doesn't work well for filtering and date picker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6287</span>&#160;<span class="ticket-notes">Flash Component disregards WMODE transparent</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6304</span>&#160;<span class="ticket-notes">Ext.menu.DatePicker select triggered twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6335</span>&#160;<span class="ticket-notes">DatePicker's native tip occludes "Today" button's QuickTip</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6407</span>&#160;<span class="ticket-notes">AbstractContainer overrides enable/disable without returning this</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6412</span>&#160;<span class="ticket-notes">Grids :Grouping Grid:The √î√∏Œ©Name√î√∏Œ© column check box is not displaying </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4144</span>&#160;<span class="ticket-notes">Collapsible FormPanel collapsible direction [right] issue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4268</span>&#160;<span class="ticket-notes">Panel does not respect animCollapse: false in placeholder collapseMode (border layout)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5351</span>&#160;<span class="ticket-notes">Inconsistency on closing tabpanel items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5456</span>&#160;<span class="ticket-notes">Layout changes inside a collapsed panel in a border layout creates extra panel header</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6148</span>&#160;<span class="ticket-notes">Calling removeDocked on a panel with no border throws exception</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6178</span>&#160;<span class="ticket-notes">Expanding a panel restores wrong size if size changed while collapsed</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6237</span>&#160;<span class="ticket-notes">When labelAlign='top' and errorAlign='side', invalidation causes incorrect field width</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6272</span>&#160;<span class="ticket-notes">Tab text centering stops working in IE8 after dynamically adding tab</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6188</span>&#160;<span class="ticket-notes">Toolbar margin variables don't have !default flags</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6282</span>&#160;<span class="ticket-notes">Sass bug in _frame.scss when $radius === 10</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6221</span>&#160;<span class="ticket-notes">Canceling tooltip in beforeshow causes subsequent problems</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5933</span>&#160;<span class="ticket-notes">Toolbar reorderer stops during drag on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6251</span>&#160;<span class="ticket-notes">Toolbar defaults override single item settings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6271</span>&#160;<span class="ticket-notes">Programmatically set label in bbar is not visible until browser is resized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6279</span>&#160;<span class="ticket-notes">tbseparator incorrectly inherits border from toolbar</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3571</span>&#160;<span class="ticket-notes">Two TreePanel behave wrongly when sharing a store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4918</span>&#160;<span class="ticket-notes">Tree expand all / collapse all buggy behavior</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5992</span>&#160;<span class="ticket-notes">Tree expandAll/collapseAll does not always descend fully</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6136</span>&#160;<span class="ticket-notes">TreePanel loadMask cannot be rebound to a different mask</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6286</span>&#160;<span class="ticket-notes">Ext.ux.CheckColum does not work with a Tree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6302</span>&#160;<span class="ticket-notes">NodeInterface qtip and qtitle not updated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6330</span>&#160;<span class="ticket-notes">TreeStore root node does not always have an id</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6344</span>&#160;<span class="ticket-notes">Uncaught TypeError: Cannot read property 'dom' of null</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6357</span>&#160;<span class="ticket-notes">TreeStore listeners are not cleaned up</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3779</span>&#160;<span class="ticket-notes">Message Box Dialog - Page is grayed out and not allowed to update the page when quickly double-clicking on Icon Show button. </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5905</span>&#160;<span class="ticket-notes">JS error when creating LoadMask bound to a Window</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 118</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1 RC 1</h1>
+                <p class="notes">
+                    Release Date: May 15, 2012<br>
+                    Version Number: 4.1.1 RC 1
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5964</span>&#160;<span class="ticket-notes">Buttons do not show 'pressing' animation when clickEvent is 'mousedown'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5989</span>&#160;<span class="ticket-notes">Changing text in some buttons does not layout properly in Chrome 16+</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6109</span>&#160;<span class="ticket-notes">Button contents are cut off when using scoped CSS</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5981</span>&#160;<span class="ticket-notes">Bound of Area Series incorrectly calculated.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6074</span>&#160;<span class="ticket-notes">Column chart with all zero data renders poorly and throws css warnings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6088</span>&#160;<span class="ticket-notes">Pie chart is broken after resize</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6052</span>&#160;<span class="ticket-notes">DragZone determines wrong target el causing subsequent JS error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5988</span>&#160;<span class="ticket-notes">Falsy Ext.data.Operation id property lost during Ext.data.Request creation.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5993</span>&#160;<span class="ticket-notes">Ext 4.1 RC3  HasOne Assocation Bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6024</span>&#160;<span class="ticket-notes">Problem in extending from a model with associations</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6063</span>&#160;<span class="ticket-notes">Ext.data.Store.add() behave inconsistently when groupField is used</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6082</span>&#160;<span class="ticket-notes">Hidden data view breaks when updating</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6110</span>&#160;<span class="ticket-notes">Ext.view.AbstractView indexOf throws error if argument is invalid or null</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6112</span>&#160;<span class="ticket-notes">Errors and omissions in the MVC Application Architecture guide</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5983</span>&#160;<span class="ticket-notes">beforerender event not fired for Viewport (or component with configured 'el')</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6045</span>&#160;<span class="ticket-notes">GroupTabPanel ux bug - Missing lower rounded corner</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (10)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5389</span>&#160;<span class="ticket-notes">TextArea marks form as dirty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5458</span>&#160;<span class="ticket-notes">Delete key does not work for textfield (email vtype) in Opera 11</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5965</span>&#160;<span class="ticket-notes">TextField placeholder text shifts up by 1 pixel on focus</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5994</span>&#160;<span class="ticket-notes">FieldSet label component is not available before render</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6016</span>&#160;<span class="ticket-notes">MultiSelect / ItemSelector : "Clear" and "Reset" Buttons are not working when all items are dragged to right panel in Item Selector Table.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6054</span>&#160;<span class="ticket-notes">Spinner setReadOnly does not hide triggers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6065</span>&#160;<span class="ticket-notes">TextArea special keys stop working at maxLength with enfornceMaxLength on</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6081</span>&#160;<span class="ticket-notes">A HiddenField occupies visible space in the form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6104</span>&#160;<span class="ticket-notes">Slider readOnly has no effect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6134</span>&#160;<span class="ticket-notes">Labelable insertion templates do not have access to component id</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5984</span>&#160;<span class="ticket-notes">[4.1 RC3] Grouping expand() not working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6057</span>&#160;<span class="ticket-notes">Calling Ext.grid.Panel.reconfigure before rendering causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6066</span>&#160;<span class="ticket-notes">Grid does not always show its loadmask properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6083</span>&#160;<span class="ticket-notes">scope has no effect on actioncolumn</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6092</span>&#160;<span class="ticket-notes">Grid header Container getVisibleHeaderClosestToIndex does not check previous only next</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5797</span>&#160;<span class="ticket-notes">Autosized tooltips are not layed out correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5806</span>&#160;<span class="ticket-notes">Box layout fails to respect width and height percentages</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5861</span>&#160;<span class="ticket-notes">Fit layout does not adjust sizes based on autoScroll triggered by minHeight</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6026</span>&#160;<span class="ticket-notes">Splitters in HBox layouts have no height</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6042</span>&#160;<span class="ticket-notes">getPosition method doesn't return page coordinate</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6035</span>&#160;<span class="ticket-notes">Menu destroy method can cause JS error on keyNav</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5982</span>&#160;<span class="ticket-notes">Stacked bar/column chart leave a ghost shadow when all items are hidden</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5716</span>&#160;<span class="ticket-notes">Panels with min/max constraints misbehave in a box layout with stretchmax</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5916</span>&#160;<span class="ticket-notes">Problem with Panel.setTitle without header</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6051</span>&#160;<span class="ticket-notes">4.1 Grid to Tree DnD not working any more</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6076</span>&#160;<span class="ticket-notes">Changing TreeStore's defaultRootProperty breaks the tree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6113</span>&#160;<span class="ticket-notes">TreeGrid is not repainted after the vertical scroll bar disappears</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6048</span>&#160;<span class="ticket-notes">Frame: true should not cause a window to display badly</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 44</ul>
+            </div>
+
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0</h1>
+                <p class="notes">
+                    Release Date: April 20, 2012<br>
+                    Version Number: 4.1.0
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5657</span>&#160;<span class="ticket-notes">Charts : Grouped Bar :Displaying Js error upon clicking on &quot;Legends&quot; in the &quot;grouped bar&quot; chart on IE9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5954</span>&#160;<span class="ticket-notes">Simple Area Chart Not Working in 4.1RCx</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5811</span>&#160;<span class="ticket-notes">Elements can't fadeIn() after fadeOut()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5846</span>&#160;<span class="ticket-notes">Component id's starting with non-word characters cause JS errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5902</span>&#160;<span class="ticket-notes">Draggable and resizable images leave resize handlers at start point when moved</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5958</span>&#160;<span class="ticket-notes">Ext.Error toString not including the method name</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4957</span>&#160;<span class="ticket-notes">Inconsistent signature for the Store &#39;datachanged&#39; event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5809</span>&#160;<span class="ticket-notes">Model fields are set to undefined or defaultValue when they should not be updated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5862</span>&#160;<span class="ticket-notes">Dependency on Writer from Proxy causes JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5877</span>&#160;<span class="ticket-notes">Store modifies the value of inline data config option</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5945</span>&#160;<span class="ticket-notes">Ext.data.Model getFields returns undefined</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5831</span>&#160;<span class="ticket-notes">Floatable TreePanel in West Border of Viewport has two left hand borders</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5904</span>&#160;<span class="ticket-notes">Surface.removeAll - fails to remove items from groups</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5193</span>&#160;<span class="ticket-notes">&nbsp;Resize event is not fired for custom form field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5815</span>&#160;<span class="ticket-notes">Error using a mixin that itself has Ext.util.Observable as a mixin</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5844</span>&#160;<span class="ticket-notes">Events: option.target has been removed from 4.x</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5948</span>&#160;<span class="ticket-notes">Ext.ux.form.ItemSelector does not work with asynchronous loading (proxy) in ItemSelector example </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5949</span>&#160;<span class="ticket-notes">RC3: Ext.ux.form.ItemSelector.bindStore() method non-functioning</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (8)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4978</span>&#160;<span class="ticket-notes">Forms - Dynamic Forms : Unable to access Form 1, Form 2 & Form 5 when clicked on expand/collapse  button and and pressed the tab key</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5242</span>&#160;<span class="ticket-notes">DisplayField does not respect fieldStyle</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5826</span>&#160;<span class="ticket-notes">Validation of timefield is not correct in Chinese.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5827</span>&#160;<span class="ticket-notes">Work day is corrupt in Spanish date input</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5832</span>&#160;<span class="ticket-notes">Recreating an HtmlEditor makes it unable to be focused until ENTER is pressed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5906</span>&#160;<span class="ticket-notes">Can't create trigger field outside of onReady</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5937</span>&#160;<span class="ticket-notes">CheckboxGroup has incorrect column loop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5955</span>&#160;<span class="ticket-notes">Ext.form.Labelable uses a CSS class without baseCSSPrefix</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5457</span>&#160;<span class="ticket-notes">Grid infinite scroll: no last elements, no return to first elements</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5847</span>&#160;<span class="ticket-notes">Ext.ux.grid.FiltersFeature removes dynamically added filters</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5894</span>&#160;<span class="ticket-notes">GroupingSummary returns '\u00a0' when sum is equal 0</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5953</span>&#160;<span class="ticket-notes">TemplateColumn not updated dynamically</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5562</span>&#160;<span class="ticket-notes">Horizontal scrollbar not visible when set to overflow in hbox layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5941</span>&#160;<span class="ticket-notes">Resizable Components in Absolute layouts get misplaced.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4202</span>&#160;<span class="ticket-notes">Problem with building when MVC app has a custom directory structure</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5804</span>&#160;<span class="ticket-notes">Menu onClick does not fire in all cases</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5134</span>&#160;<span class="ticket-notes">Miscellaneous - Panels : "Masked Panel with a really long title" panel's UI is disturbed when clicked more than twice on expand/ collapse button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5501</span>&#160;<span class="ticket-notes">Ext.Date.format breaks on wrong input</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5899</span>&#160;<span class="ticket-notes">Combination Examples:Ext JS Calendar:Displaying js error while creating the new event  with empty date field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5967</span>&#160;<span class="ticket-notes">ElementLoader - inconsistent API (?)</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5959</span>&#160;<span class="ticket-notes">Panel with collapseFirst: false and closable does not display collapse tool button</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5099</span>&#160;<span class="ticket-notes">Tabs - Advanced Tabs : Tabs are added without close button when clicked on "Add Closable Tab" button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5857</span>&#160;<span class="ticket-notes">TabPanel children don't fire the close event</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3712</span>&#160;<span class="ticket-notes">TabBar background is blue in the gray theme</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5908</span>&#160;<span class="ticket-notes">Fast clicks in Tree can lead to duplication of entries</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5952</span>&#160;<span class="ticket-notes">Allow NodeInterface.decorate to expect a record instance for backward compatibility</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5897</span>&#160;<span class="ticket-notes">Window's title will not  display in IE6/7/8 when it was dragging</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 45</ul>
+            </div>
+         </div>
+    </body>
+</html>
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-access/ext-theme-access-all-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-access/ext-theme-access-all-rtl-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-access/ext-theme-access-all-rtl.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-access.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-access/ext-theme-access-all.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic/ext-theme-classic-all-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-gray/ext-theme-gray-all-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-gray/ext-theme-gray-all-rtl-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-gray/ext-theme-gray-all-rtl.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-gray.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-gray/ext-theme-gray-all.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-neptune/ext-theme-neptune-all-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-neptune/ext-theme-neptune-all-rtl-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-neptune/ext-theme-neptune-all-rtl.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-neptune.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-neptune/ext-theme-neptune-all.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic/ext-theme-classic-all-rtl-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic/ext-theme-classic-all-rtl.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic/ext-theme-classic-all.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox-debug.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-debug.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/css/ext-sandbox.css	(revision 18732)
@@ -0,0 +1,1 @@
+@import '../ext-theme-classic-sandbox/ext-theme-classic-sandbox-all.css';
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/Readme.md
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/Readme.md	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/Readme.md	(revision 18732)
@@ -0,0 +1,3 @@
+# ext-theme-access/resources
+
+This folder contains static resources (typically an `"images"` folder as well).
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-debug.css	(revision 18732)
@@ -0,0 +1,19216 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-access */
+/* including package ext-theme-access */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: white;
+  font-size: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  background: black;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #222233;
+  background-image: none;
+  background-color: #3f4757;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 5px 10px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #555566;
+  background-color: #232d38;
+  color: white;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #232d38;
+  border-width: 1px;
+  height: 20px;
+  border-color: #18181a;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffb43b), color-stop(50%, #ffa007), color-stop(51%, #ed9200), color-stop(100%, #d38200));
+  background-image: -webkit-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: -moz-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: -o-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 14px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #aaaaaa;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 14px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: white;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 14px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #1b1b29;
+  border-right-color: #5d5d6e;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #18181a;
+  border-width: 1px;
+  background-image: none;
+  background-color: #3a3e4f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #404558), color-stop(100%, #3a3e4f));
+  background-image: -webkit-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -moz-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -o-linear-gradient(top, #404558, #3a3e4f);
+  background-image: linear-gradient(top, #404558, #3a3e4f);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #1b1b29;
+  border-bottom-color: #5d5d6e;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #18181a;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 14px;
+  border: 1px solid #18181a;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: #232d38;
+  border-color: #18181a;
+  color: white;
+  font-size: 15px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #606877 -1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 -1px 0 0px 0 inset;
+  box-shadow: #606877 -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #606877 0 -1px 0px 0 inset;
+  -moz-box-shadow: #606877 0 -1px 0px 0 inset;
+  box-shadow: #606877 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #9ca0aa;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #18181a;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 14px;
+  border: 1px solid #18181a;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #3f4757;
+  border-color: #18181a;
+  color: white;
+  font-size: 15px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-3-3-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 2px 3px 4px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-3-3-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 3px 2px 3px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-3-3-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-3-0-0-3-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 3px 4px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 2px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-3-3-3-3-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 2px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-3-3-3-3-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #9ca0aa;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #122d5e;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #5e6986;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #5e6986;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #122d5e;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #5e6986;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: black;
+  font-size: 14px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: black;
+  font-size: 14px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: black;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: black;
+  font-size: 14px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: black;
+  font-size: 14px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: black;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #606068;
+  -webkit-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -moz-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #676772;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #676772;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #d2d2d2;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #4b515f;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #4b515f;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #4b515f;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #4b515f;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #606068;
+  -webkit-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -moz-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #676772;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #676772;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #d2d2d2;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #282828;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #18181a;
+  border-width: 1px;
+  border-style: solid;
+  background: #1f2833;
+  color: white;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 14px;
+  border-color: #282828;
+  zoom: 1;
+  background-color: #3f4757;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #3f4757;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #3f4757;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3f4757);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: white;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 14px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #9fa3ab;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 5px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: white;
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+  margin-top: 5px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: white;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 15px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: #15171a;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: white;
+  padding: 2px 4px 2px 4px;
+  background: #34383f repeat-x 0 0;
+  border-width: 2px;
+  border-style: solid;
+  border-color: #737b8c;
+  background-image: url(images/form/text-bg.gif);
+  height: 26px;
+  line-height: 18px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 24px;
+  line-height: 16px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 18px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 16px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #ff9c33;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 26px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 24px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+  color: white;
+  margin-top: 5px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #3f4757;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 26px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 24px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 4px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 3px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -19px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -19px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -19px -19px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 5px;
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #4d515c;
+  border-top: 1px dotted #333333;
+  border-bottom: 1px dotted #333333;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: white;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #727c8c;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 14px/14px bold tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -19px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -19px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -19px -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 20px;
+  border-width: 0 0 2px;
+  border-color: #737b8c;
+  border-style: solid;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: #34383f;
+  width: 20px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -20px 0;
+  border-color: #ff9c33;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -60px 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -80px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -40px 0;
+  border-color: #c76e12;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 26px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 24px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: #34383f;
+  width: 20px;
+  height: 13px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -13px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -13px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -13px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -13px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -13px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 12px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -12px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -12px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -12px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -12px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 2px;
+  border-style: solid;
+  border-color: #222732;
+  background: #404551;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 22px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 0;
+  border-style: dotted;
+  border-color: #404551;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #e5872c;
+  border-color: #242838;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #e5872c;
+  border-color: #2e3347;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #798294;
+  background-color: #21252e;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #5c6980;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #627089), color-stop(100%, #535f74));
+  background-image: -webkit-linear-gradient(top, #627089, #535f74);
+  background-image: -moz-linear-gradient(top, #627089, #535f74);
+  background-image: -o-linear-gradient(top, #627089, #535f74);
+  background-image: linear-gradient(top, #627089, #535f74);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #5c6980;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 14px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: white;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #535b5c;
+  background-image: none;
+  background-color: #3a4051;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #40475a), color-stop(100%, #313745));
+  background-image: -webkit-linear-gradient(top, #40475a, #313745);
+  background-image: -moz-linear-gradient(top, #40475a, #313745);
+  background-image: -o-linear-gradient(top, #40475a, #313745);
+  background-image: linear-gradient(top, #40475a, #313745);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 20px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #21252e;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  color: white;
+  cursor: pointer;
+  line-height: 19px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: white;
+  background-color: #7e5530;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #864900;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #e5872c;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: #9999aa;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #535b5c;
+  background-image: none;
+  background-color: #3a4051;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #51596b), color-stop(49%, #4b525f), color-stop(51%, #454b58), color-stop(100%, #484e5a));
+  background-image: -webkit-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -moz-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -o-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #798294;
+  background-color: #21252e;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #798294;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #21252e;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #7e5530;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #e5872c;
+  border-style: solid;
+  border-color: #864900;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: #21252e;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 15px tahoma, arial, verdana, sans-serif;
+  background-color: #34383f;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: #232d38;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #18181a;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: #232d38;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: white;
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+  background-color: #1f2933;
+  border-color: #ededed #454545 #ededed #454545;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #1a232b;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #101010;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #101010;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #101010;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #101010;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #7e552f;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #e48627;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e48627;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid #1f2933;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #101010;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #101010;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 1px;
+  padding-bottom: 2px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #454545 #ededed #454545;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #283b61;
+  background-image: none;
+  background-color: #e48627;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e48627), color-stop(100%, #d7791b));
+  background-image: -webkit-linear-gradient(left, #e48627, #d7791b);
+  background-image: -moz-linear-gradient(left, #e48627, #d7791b);
+  background-image: -o-linear-gradient(left, #e48627, #d7791b);
+  background-image: linear-gradient(left, #e48627, #d7791b);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: white;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #18181a;
+  border-bottom-color: #373c4b;
+  background-color: #373c4b;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: white;
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #496085;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6c86ae), color-stop(50%, #526c95), color-stop(51%, #496085), color-stop(100%, #405475));
+  background-image: -webkit-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -moz-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -o-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 18px;
+  background-position: right center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 3px 2px 3px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 2px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 2px 6px 1px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 1px;
+  padding-bottom: 0px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 2px 5px 3px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #283042;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: black;
+  font: bold 14px/16px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #101010;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #373c4b;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #18181a;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #454545 #ededed #454545;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 4px 2px 4px;
+  height: 22px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 22px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 11px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 2px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 22px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 22px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+  padding: 3px 6px 4px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 0px;
+  padding-right: 0px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 3px 5px 4px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 3px 1px 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 3px 2px 3px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #18181a !important;
+  border-bottom: 1px solid #18181a !important;
+  padding: 4px 0 4px 0;
+  background-color: #4b5d83;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #4b5d83;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #4b5d83;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #4b5d83;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #4b5d83;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 31px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 31px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #18181a;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 7px 7px 6px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 6px;
+  padding-bottom: 5px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: white;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #5c6b82;
+  border-top-color: #606877;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #18181a;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #5c6b82;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #5c6b82;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #3f4757;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #414551;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #222233;
+  background-color: #666666;
+  width: 2px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fc9b00), color-stop(100%, #d98500));
+  background-image: -webkit-linear-gradient(top, #fc9b00, #d98500);
+  background-image: -moz-linear-gradient(top, #fc9b00, #d98500);
+  background-image: -o-linear-gradient(top, #fc9b00, #d98500);
+  background-image: linear-gradient(top, #fc9b00, #d98500);
+  border-color: #d38200;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #ed9200 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #a0a2a8;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 14px;
+  color: white;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #222233;
+  background-color: #666666;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 14px;
+  color: white;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #414551;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 6px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #2e3746;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #b0b7c5;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #18181a;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #18181a;
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #6d7b9a;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: white;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #b6bdcc;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  border-color: #74400e;
+  background-color: #ed9200;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: white;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #f6c87f;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #ed9200;
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #ed9200;
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #39445a;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #697390;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #39445a #39445a #18181a;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #18181a #39445a #39445a #39445a;
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #6d7b9a;
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #6d7b9a;
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #435881;
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #435881;
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #18181a;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #18181a;
+  background-color: #ed9200;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #474e5c;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(top, #4f596c, #474e5c);
+  background-image: linear-gradient(top, #4f596c, #474e5c);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: linear-gradient(bottom, #4f596c, #474e5c);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(left, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(left, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(left, #4f596c, #474e5c);
+  background-image: linear-gradient(left, #4f596c, #474e5c);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(right, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(right, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(right, #4f596c, #474e5c);
+  background-image: linear-gradient(right, #4f596c, #474e5c);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #373c4b;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 19px;
+  width: 19px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 19px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 3px 5px 3px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 2px 5px 1px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 1px;
+  padding-bottom: 0px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 22px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 22px;
+  margin-right: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -2px;
+  margin-bottom: -3px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 2px;
+  width: 19px;
+  height: 19px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -19px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 14px;
+  line-height: 17px;
+  padding-left: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 2px 6px 3px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 26px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 24px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 24px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 22px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 11px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 10px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #737b8c;
+  border-top-color: #737b8c;
+  border-right-color: #737b8c;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #737b8c;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #373c4b;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #5c6b82;
+  -moz-box-shadow: inset 0 0 0 0 #5c6b82;
+  box-shadow: inset 0 0 0 0 #5c6b82;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #606877;
+  -moz-box-shadow: inset 0 1px 0 0 #606877;
+  box-shadow: inset 0 1px 0 0 #606877;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,20615 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-access */
+/* including package ext-theme-access */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/*
+ * Although this file only contains a variable, all vars are included by default
+ * in application sass builds, so this needs to be in the rule file section
+ * to allow javascript inclusion filtering to disable it.
+ */
+/**
+ * @var {boolean} $include-rtl
+ * True to include right-to-left style rules.  This variable gets set to true automatically
+ * for rtl builds. You should not need to ever assign a value to this variable, however
+ * it can be used to suppress rtl-specific rules when they are not needed.  For example:
+ *     @if $include-rtl {
+ *         .x-rtl.foo {
+ *             margin-left: $margin-right;
+ *             margin-right: $margin-left;
+ *         }
+ *     }
+ * @member Global_CSS
+ */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-rtl > .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-ie6 .x-rtl .x-box-item,
+.x-quirks .x-ie .x-rtl .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-left {
+  text-align: right;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-right {
+  text-align: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-target {
+  left: auto;
+  right: 0;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-menu-after {
+  float: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-rtl.x-header-text-container {
+  -o-text-overflow: clip;
+  text-overflow: clip;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drag-ghost {
+  padding-left: 5px;
+  padding-right: 20px;
+}
+/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drop-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-rtl.x-fieldset-header .x-form-item,
+.x-rtl.x-fieldset-header .x-tool {
+  float: right;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-rtl.x-form-item .x-form-item-input-row {
+  position: relative;
+  right: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-rtl.x-form-file-input {
+  right: auto;
+  left: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  left: 0;
+  right: auto;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-right {
+  text-align: left;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-left {
+  text-align: right;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-rtl > .x-column {
+  float: right;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-rtl .x-column, .x-quirks .x-ie .x-rtl .x-column {
+  float: right;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-left {
+  right: auto;
+  left: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-right {
+  left: auto;
+  right: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: white;
+  font-size: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  background: black;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #222233;
+  background-image: none;
+  background-color: #3f4757;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 5px 10px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #555566;
+  background-color: #232d38;
+  color: white;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+}
+
+/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-rtl.x-mask-msg-text {
+  padding: 5px 20px 5px 5px;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #232d38;
+  border-width: 1px;
+  height: 20px;
+  border-color: #18181a;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffb43b), color-stop(50%, #ffa007), color-stop(51%, #ed9200), color-stop(100%, #d38200));
+  background-image: -webkit-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: -moz-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: -o-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+  background-image: linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 14px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #aaaaaa;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #06070a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #2a3142;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #9498a0;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 14px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: white;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f;
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #db7b1f;
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 18px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 18px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 16px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-rtl.x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-rtl.x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-arrow-right {
+  background-position: left center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-split-right {
+  background-position: 0 center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 14px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-item {
+  margin: 0 0 0 2px;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: white;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 14px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #1b1b29;
+  border-right-color: #5d5d6e;
+}
+
+/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar {
+  padding: 2px 2px 2px 0;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #18181a;
+  border-width: 1px;
+  background-image: none;
+  background-color: #3a3e4f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #404558), color-stop(100%, #3a3e4f));
+  background-image: -webkit-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -moz-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -o-linear-gradient(top, #404558, #3a3e4f);
+  background-image: linear-gradient(top, #404558, #3a3e4f);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #1b1b29;
+  border-bottom-color: #5d5d6e;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #18181a;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 14px;
+  border: 1px solid #18181a;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: #232d38;
+  border-color: #18181a;
+  color: white;
+  font-size: 15px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+/* line 476, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg-rtl.gif);
+}
+/* line 480, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg-rtl.gif);
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #606877 -1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 -1px 0 0px 0 inset;
+  box-shadow: #606877 -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #606877 0 -1px 0px 0 inset;
+  -moz-box-shadow: #606877 0 -1px 0px 0 inset;
+  box-shadow: #606877 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #9ca0aa;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #18181a;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 14px;
+  border: 1px solid #18181a;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #3f4757;
+  border-color: #18181a;
+  color: white;
+  font-size: 15px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-3-3-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 2px 3px 4px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #3a4155;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-3-3-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -3px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tl, .x-rtl.x-panel-header-default-framed-right-ml, .x-rtl.x-panel-header-default-framed-right-bl, .x-rtl.x-panel-header-default-framed-right-tr, .x-rtl.x-panel-header-default-framed-right-mr, .x-rtl.x-panel-header-default-framed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc, .x-rtl.x-panel-header-default-framed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 3px 2px 3px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-3-3-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #3a4155;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-3-0-0-3-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -3px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-bc {
+  background-position: right -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tl, .x-rtl.x-panel-header-default-framed-left-ml, .x-rtl.x-panel-header-default-framed-left-bl, .x-rtl.x-panel-header-default-framed-left-tr, .x-rtl.x-panel-header-default-framed-left-mr, .x-rtl.x-panel-header-default-framed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc, .x-rtl.x-panel-header-default-framed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 3px 4px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 2px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #3a4155;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-3-3-3-3-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -3px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tl, .x-rtl.x-panel-header-default-framed-collapsed-right-ml, .x-rtl.x-panel-header-default-framed-collapsed-right-bl, .x-rtl.x-panel-header-default-framed-collapsed-right-tr, .x-rtl.x-panel-header-default-framed-collapsed-right-mr, .x-rtl.x-panel-header-default-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc, .x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #3a4155;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-3-3-3-3-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 2px 3px 2px 3px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(left, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #3a4155;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-3-3-3-3-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -3px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -6px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -9px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -3px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -3px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: right -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tl, .x-rtl.x-panel-header-default-framed-collapsed-left-ml, .x-rtl.x-panel-header-default-framed-collapsed-left-bl, .x-rtl.x-panel-header-default-framed-collapsed-left-tr, .x-rtl.x-panel-header-default-framed-collapsed-left-mr, .x-rtl.x-panel-header-default-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc, .x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #3a4155;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#3a4155);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 -1px 0px 0 inset, #606877 -1px 0 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+  -moz-box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+  box-shadow: #606877 0 1px 0px 0 inset, #606877 0 -1px 0px 0 inset, #606877 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #9ca0aa;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #122d5e;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #5e6986;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #5e6986;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #122d5e;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #5e6986;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: black;
+  font-size: 14px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: black;
+  font-size: 14px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: black;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: black;
+  font-size: 14px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: black;
+  font-size: 14px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: black;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #606068;
+  -webkit-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -moz-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #676772;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #676772;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #d2d2d2;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #4b515f;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #4b515f;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #4b515f;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #4b515f;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #606068;
+  -webkit-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -moz-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #676772;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #676772;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #d2d2d2;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #282828;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #18181a;
+  border-width: 1px;
+  border-style: solid;
+  background: #1f2833;
+  color: white;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 14px;
+  border-color: #282828;
+  zoom: 1;
+  background-color: #3f4757;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #3f4757;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #3f4757;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3f4757);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  background-color: #3f4757;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#3f4757);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: white;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 14px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-right-tl, .x-rtl.x-window-header-default-right-ml, .x-rtl.x-window-header-default-right-bl, .x-rtl.x-window-header-default-right-tr, .x-rtl.x-window-header-default-right-mr, .x-rtl.x-window-header-default-right-br {
+  background-image: url(images/window-header/window-header-default-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-left-tl, .x-rtl.x-window-header-default-left-ml, .x-rtl.x-window-header-default-left-bl, .x-rtl.x-window-header-default-left-tr, .x-rtl.x-window-header-default-left-mr, .x-rtl.x-window-header-default-left-br {
+  background-image: url(images/window-header/window-header-default-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-right-tl, .x-rtl.x-window-header-default-collapsed-right-ml, .x-rtl.x-window-header-default-collapsed-right-bl, .x-rtl.x-window-header-default-collapsed-right-tr, .x-rtl.x-window-header-default-collapsed-right-mr, .x-rtl.x-window-header-default-collapsed-right-br {
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #3f4757;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-left-tl, .x-rtl.x-window-header-default-collapsed-left-ml, .x-rtl.x-window-header-default-collapsed-left-bl, .x-rtl.x-window-header-default-collapsed-left-tr, .x-rtl.x-window-header-default-collapsed-left-mr, .x-rtl.x-window-header-default-collapsed-left-br {
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #9fa3ab;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 5px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: white;
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+  margin-top: 5px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: white;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 15px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: #15171a;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: white;
+  padding: 2px 4px 2px 4px;
+  background: #34383f repeat-x 0 0;
+  border-width: 2px;
+  border-style: solid;
+  border-color: #737b8c;
+  background-image: url(images/form/text-bg.gif);
+  height: 26px;
+  line-height: 18px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 24px;
+  line-height: 16px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 18px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 16px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #ff9c33;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 26px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 24px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+  color: white;
+  margin-top: 5px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #3f4757;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-rtl.x-message-box-info, .x-rtl.x-message-box-warning, .x-rtl.x-message-box-question, .x-rtl.x-message-box-error {
+  background-position: top left;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 26px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 24px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 4px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 3px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -19px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -19px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -19px -19px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 5px;
+  font: normal 15px/17px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-after {
+  margin-left: 0;
+  margin-right: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #4d515c;
+  border-top: 1px dotted #333333;
+  border-bottom: 1px dotted #333333;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: white;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-rtl.x-form-check-group-label {
+  margin: 0 0 5px 30px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #727c8c;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 14px/14px bold tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-rtl .x-tool {
+  margin: 1px 0 0 3px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -19px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -19px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -19px -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 20px;
+  border-width: 0 0 2px;
+  border-color: #737b8c;
+  border-style: solid;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-trigger {
+  background-image: url(images/form/trigger-rtl.gif);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: #34383f;
+  width: 20px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -20px 0;
+  border-color: #ff9c33;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -60px 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -80px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -40px 0;
+  border-color: #c76e12;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger-rtl.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-search-trigger {
+  background-image: url(images/form/search-trigger-rtl.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 26px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 24px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: #34383f;
+  width: 20px;
+  height: 13px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-rtl.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -13px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -13px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -13px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -13px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -13px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 12px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -12px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -12px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -12px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -12px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -12px;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last.gif);
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next.gif);
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev.gif);
+}
+/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 2px;
+  border-style: solid;
+  border-color: #222732;
+  background: #404551;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 22px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 0;
+  border-style: dotted;
+  border-color: #404551;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #e5872c;
+  border-color: #242838;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #e5872c;
+  border-color: #2e3347;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #798294;
+  background-color: #21252e;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #5c6980;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #627089), color-stop(100%, #535f74));
+  background-image: -webkit-linear-gradient(top, #627089, #535f74);
+  background-image: -moz-linear-gradient(top, #627089, #535f74);
+  background-image: -o-linear-gradient(top, #627089, #535f74);
+  background-image: linear-gradient(top, #627089, #535f74);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #5c6980;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 14px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: white;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #535b5c;
+  background-image: none;
+  background-color: #3a4051;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #40475a), color-stop(100%, #313745));
+  background-image: -webkit-linear-gradient(top, #40475a, #313745);
+  background-image: -moz-linear-gradient(top, #40475a, #313745);
+  background-image: -o-linear-gradient(top, #40475a, #313745);
+  background-image: linear-gradient(top, #40475a, #313745);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 20px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #21252e;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  color: white;
+  cursor: pointer;
+  line-height: 19px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: white;
+  background-color: #7e5530;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #864900;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #e5872c;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: #9999aa;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #535b5c;
+  background-image: none;
+  background-color: #3a4051;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #51596b), color-stop(49%, #4b525f), color-stop(51%, #454b58), color-stop(100%, #484e5a));
+  background-image: -webkit-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -moz-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -o-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #798294;
+  background-color: #21252e;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #798294;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #21252e;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #7e5530;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #e5872c;
+  border-style: solid;
+  border-color: #864900;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: #21252e;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-rtl.x-form-trigger-wrap .x-form-date-trigger {
+  background-image: url(images/form/date-trigger-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 15px tahoma, arial, verdana, sans-serif;
+  background-color: #34383f;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: #232d38;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #18181a;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: #232d38;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: white;
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+  background-color: #1f2933;
+  border-color: #ededed #454545 #ededed #454545;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #1a232b;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #101010;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #101010;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #101010;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #101010;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #7e552f;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #e48627;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e48627;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid #1f2933;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #101010;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #101010;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 1px;
+  padding-bottom: 2px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #454545 #ededed #454545;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #283b61;
+  background-image: none;
+  background-color: #e48627;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e48627), color-stop(100%, #d7791b));
+  background-image: -webkit-linear-gradient(left, #e48627, #d7791b);
+  background-image: -moz-linear-gradient(left, #e48627, #d7791b);
+  background-image: -o-linear-gradient(left, #e48627, #d7791b);
+  background-image: linear-gradient(left, #e48627, #d7791b);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-cell-special {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-dirty-cell {
+  background-image: url(images/grid/dirty-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: white;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #18181a;
+  border-bottom-color: #373c4b;
+  background-color: #373c4b;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: white;
+  font: normal 14px/16px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header {
+  border-right: 0 none;
+  border-left: 1px solid #c5c5c5;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #496085;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6c86ae), color-stop(50%, #526c95), color-stop(51%, #496085), color-stop(100%, #405475));
+  background-image: -webkit-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -moz-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -o-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-position: right center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-rtl.x-column-header-text {
+  margin-right: 0;
+  margin-left: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 18px;
+  background-position: right center;
+}
+
+/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-rtl.x-column-header-text,
+.x-column-header-sort-DESC .x-rtl.x-column-header-text {
+  padding-right: 0;
+  padding-left: 18px;
+  background-position: 0 center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 3px 2px 3px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 2px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 2px 6px 1px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 1px;
+  padding-bottom: 0px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 19px;
+  height: 19px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 2px 5px 3px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #283042;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title {
+  background-position: right center;
+  padding: 0 14px 0 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: black;
+  font: bold 14px/16px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #101010;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #373c4b;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #18181a;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #454545 #ededed #454545;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-rtl.x-grid-inner-locked {
+  border-width: 0 0 0 1px;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-rtl.x-column-header-last {
+  border-left-width: 0!important;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last {
+  border-left: 0 none;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last {
+  border-left: 0 none;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 4px 2px 4px;
+  height: 22px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 22px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 11px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 2px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 22px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 22px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+  padding: 3px 6px 4px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 3px 2px 3px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 0px;
+  padding-right: 0px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 3px 5px 4px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 3px 1px 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 3px 2px 3px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #18181a !important;
+  border-bottom: 1px solid #18181a !important;
+  padding: 4px 0 4px 0;
+  background-color: #4b5d83;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb {
+  margin-right: 0;
+  margin-left: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #4b5d83;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #4b5d83;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #4b5d83;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #4b5d83;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 31px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 31px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #18181a;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-update-button {
+  margin-left: 2px;
+  margin-right: auto;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-cancel-button {
+  margin-right: 2px;
+  margin-left: auto;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item {
+  margin-left: 0;
+  margin-right: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 7px 7px 6px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 6px;
+  padding-bottom: 5px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: white;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #5c6b82;
+  border-top-color: #606877;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #18181a;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #5c6b82;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #5c6b82;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #3f4757;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #414551;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #222233;
+  background-color: #666666;
+  width: 2px;
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu .x-menu-icon-separator {
+  left: auto;
+  right: 24px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-indent {
+  margin-left: 0;
+  margin-right: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fc9b00), color-stop(100%, #d98500));
+  background-image: -webkit-linear-gradient(top, #fc9b00, #d98500);
+  background-image: -moz-linear-gradient(top, #fc9b00, #d98500);
+  background-image: -o-linear-gradient(top, #fc9b00, #d98500);
+  background-image: linear-gradient(top, #fc9b00, #d98500);
+  border-color: #d38200;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #ed9200 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-link {
+  padding: 0 30px 0 0;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-right-check-item-text {
+  padding-left: 22px;
+  padding-right: 0;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #a0a2a8;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon-right {
+  right: auto;
+  left: 3px;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 14px;
+  color: white;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+a.x-rtl .x-menu-item-text {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #222233;
+  background-color: #666666;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-arrow {
+  left: 0;
+  right: auto;
+  background-image: url(images/menu/menu-parent-left.gif);
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow {
+  right: auto;
+  left: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 14px;
+  color: white;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #414551;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-left, .x-rtl.x-tool-collapse-left {
+  background-position: 0 -165px;
+}
+/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-right, .x-rtl.x-tool-collapse-right {
+  background-position: 0 -180px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-left, .x-tool-over .x-rtl.x-tool-collapse-left {
+  background-position: -15px -165px;
+}
+/* line 308, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-right, .x-tool-over .x-rtl.x-tool-collapse-right {
+  background-position: -15px -180px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 6px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz {
+  padding-left: 0;
+  padding-right: 7px;
+  background-position: right -30px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-end {
+  padding-right: 0;
+  padding-left: 7px;
+  background-position: left -15px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-thumb {
+  margin-right: -7px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-color: #616f8c;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #2e3746;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #b0b7c5;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  margin: 0 0 0 2px;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #18181a;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #18181a;
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-right {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 0;
+  padding-right: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #6d7b9a;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: white;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #b6bdcc;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  border-color: #74400e;
+  background-color: #ed9200;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: white;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #f6c87f;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #ed9200;
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #ed9200;
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #39445a;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #697390;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #39445a #39445a #18181a;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #18181a #39445a #39445a #39445a;
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #6d7b9a;
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #6d7b9a;
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #ed9200;
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #435881;
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #435881;
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default .x-tab-close-btn {
+  right: auto;
+  left: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-closable .x-tab-wrap {
+  padding-right: 0px;
+  padding-left: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #18181a;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-left {
+  padding-right: 0;
+  padding-left: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-right {
+  padding-left: 0;
+  padding-right: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #18181a;
+  background-color: #ed9200;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-left {
+  border-width: 0 1px 0 0;
+}
+/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 1px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #474e5c;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(top, #4f596c, #474e5c);
+  background-image: linear-gradient(top, #4f596c, #474e5c);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(bottom, #4f596c, #474e5c);
+  background-image: linear-gradient(bottom, #4f596c, #474e5c);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(left, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(left, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(left, #4f596c, #474e5c);
+  background-image: linear-gradient(left, #4f596c, #474e5c);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(right, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(right, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(right, #4f596c, #474e5c);
+  background-image: linear-gradient(right, #4f596c, #474e5c);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+  margin-right: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 466, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 486, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+/* line 489, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 506, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 526, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #373c4b;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 19px;
+  width: 19px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 19px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 3px 5px 3px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 2px 5px 1px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 1px;
+  padding-bottom: 0px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -19px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-rtl.x-tree-expander {
+  background: url(images/tree/arrows-rtl.gif) no-repeat -48px center;
+}
+/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: -16px center;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-position: -32px center;
+}
+/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: 0 center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow {
+  background-image: url(images/tree/elbow-rtl.gif);
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end-rtl.gif);
+}
+/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus-rtl.gif);
+}
+/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus-rtl.gif);
+}
+/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus-rtl.gif);
+}
+/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus-rtl.gif);
+}
+/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line-rtl.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl-rtl.gif);
+}
+/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl-rtl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 22px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 22px;
+  margin-right: 0;
+}
+
+/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-elbow-img {
+  margin-right: 0;
+  margin-left: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -2px;
+  margin-bottom: -3px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf-rtl.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-rtl.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-open-rtl.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 2px;
+  width: 19px;
+  height: 19px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-checkbox {
+  margin-right: 0;
+  margin-left: 3px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -19px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-rtl.x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 14px;
+  line-height: 17px;
+  padding-left: 3px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-node-text {
+  padding-left: 0;
+  padding-right: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 2px 6px 3px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 3, ../../../ext-theme-classic/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more-left.gif) !important;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 26px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 24px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 24px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 22px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 11px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 10px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #737b8c;
+  border-top-color: #737b8c;
+  border-right-color: #737b8c;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #737b8c;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #373c4b;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 8, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-image: url(images/grid/grid3-hd-btn-left.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+/* line 24, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #5c6b82;
+  -moz-box-shadow: inset 0 0 0 0 #5c6b82;
+  box-shadow: inset 0 0 0 0 #5c6b82;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #606877;
+  -moz-box-shadow: inset 0 1px 0 0 #606877;
+  box-shadow: inset 0 1px 0 0 #606877;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl>.x-box-item{right:0;left:auto}.x-ie6 .x-rtl .x-box-item,.x-quirks .x-ie .x-rtl .x-box-item{right:0;left:auto}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-rtl.x-btn-inner-left{text-align:right}.x-btn-inner-right{text-align:right}.x-rtl.x-btn-inner-right{text-align:left}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-rtl.x-box-target{left:auto;right:0}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-rtl.x-box-menu-after{float:left}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-rtl.x-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 14px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-rtl .x-dd-drag-ghost{padding-left:5px;padding-right:20px}.x-rtl .x-dd-drop-icon{left:auto;right:3px}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-rtl.x-fieldset-header .x-form-item,.x-rtl.x-fieldset-header .x-tool{float:right}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-rtl.x-form-item .x-form-item-input-row{position:relative;right:0}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-rtl.x-form-file-input{right:auto;left:-2px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-rtl.x-column-header-trigger{left:0;right:auto}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-rtl.x-column-header-align-right{text-align:left}.x-column-header-align-left{text-align:left}.x-rtl.x-column-header-align-left{text-align:right}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-rtl>.x-column{float:right}.x-ie6 .x-rtl .x-column,.x-quirks .x-ie .x-rtl .x-column{float:right}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-rtl.x-tab-bar .x-tab-bar-strip-left{right:auto;left:0}.x-tab-bar-strip-right{left:0}.x-rtl.x-tab-bar .x-tab-bar-strip-right{left:auto;right:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-rtl.x-tab-icon-el{left:auto;right:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:white;font-size:15px;font-family:tahoma,arial,verdana,sans-serif;background:black}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#223;background-image:none;background-color:#3f4757}.x-mask-msg-inner{padding:5px 10px;border-style:solid;border-width:1px;border-color:#556;background-color:#232d38;color:white;font:normal 14px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px}.x-rtl.x-mask-msg-text{padding:5px 20px 5px 5px}.x-progress-default{background-color:#232d38;border-width:1px;height:20px;border-color:#18181a}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ffb43b),color-stop(50%,#ffa007),color-stop(51%,#ed9200),color-stop(100%,#d38200));background-image:-webkit-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-moz-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-o-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:14px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#aaa;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#06070a}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:14px}.x-btn-default-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#9498a0}.x-btn-default-small-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#06070a}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:14px}.x-btn-default-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#9498a0}.x-btn-default-medium-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#06070a}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:14px}.x-btn-default-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#9498a0}.x-btn-default-large-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:white}.x-btn-default-toolbar-small-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:white}.x-btn-default-toolbar-medium-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:14px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:white}.x-btn-default-toolbar-large-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:18px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-left .x-rtl.x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-rtl.x-btn-icon-el{background-position:left center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-rtl.x-btn-arrow-right{background-position:left center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-rtl.x-btn-split-right{background-position:0 center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:14px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-rtl.x-toolbar-item{margin:0 0 0 2px}.x-toolbar-text{margin:0 6px 0 4px;color:white;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#1b1b29;border-right-color:#5d5d6e}.x-rtl.x-toolbar{padding:2px 2px 2px 0}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#18181a;border-width:1px;background-image:none;background-color:#3a3e4f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#404558),color-stop(100%,#3a3e4f));background-image:-webkit-linear-gradient(top,#404558,#3a3e4f);background-image:-moz-linear-gradient(top,#404558,#3a3e4f);background-image:-o-linear-gradient(top,#404558,#3a3e4f);background-image:linear-gradient(top,#404558,#3a3e4f)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#1b1b29;border-bottom-color:#5d5d6e}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#18181a;padding:0}.x-panel-header-default{font-size:14px;border:1px solid #18181a}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:#232d38;border-color:#18181a;color:white;font-size:15px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-vertical{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-rtl.x-panel-header-default-vertical{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-nlg .x-rtl.x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg-rtl.gif)}.x-nlg .x-rtl.x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg-rtl.gif)}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-top{-webkit-box-shadow:#606877 0 1px 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset;box-shadow:#606877 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#606877 -1px 0 0 0 inset;-moz-box-shadow:#606877 -1px 0 0 0 inset;box-shadow:#606877 -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#606877 0 -1px 0 0 inset;-moz-box-shadow:#606877 0 -1px 0 0 inset;box-shadow:#606877 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 1px 0 0 0 inset;box-shadow:#606877 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#9ca0aa}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#18181a;padding:4px}.x-panel-header-default-framed{font-size:14px;border:1px solid #18181a}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-framed-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default-framed{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#3f4757;border-color:#18181a;color:white;font-size:15px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-panel-default-framed-mc{background-color:#3f4757}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -6px}.x-panel-default-framed-tr{background-position:right -9px}.x-panel-default-framed-bl{background-position:0 -12px}.x-panel-default-framed-br{background-position:right -15px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -3px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:3px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:3px}.x-panel-default-framed-tc{height:3px}.x-panel-default-framed-bc{height:3px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:2px 2px 2px 2px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-3-3-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -6px}.x-panel-header-default-framed-top-tr{background-position:right -9px}.x-panel-header-default-framed-top-bl{background-position:0 -12px}.x-panel-header-default-framed-top-br{background-position:right -15px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -3px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:3px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:3px}.x-panel-header-default-framed-top-tc{height:3px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:2px 3px 4px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-rtl.x-panel-header-default-framed-right{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#3a4155}.x-rtl.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-3-3-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -3px}.x-panel-header-default-framed-right-bl{background-position:0 -6px}.x-panel-header-default-framed-right-br{background-position:0 -9px}.x-panel-header-default-framed-right-ml{background-position:-3px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -3px}.x-rtl.x-panel-header-default-framed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-right-bc{background-position:0 -3px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:3px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:3px}.x-panel-header-default-framed-right-bc{height:3px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-right-tl,.x-rtl.x-panel-header-default-framed-right-ml,.x-rtl.x-panel-header-default-framed-right-bl,.x-rtl.x-panel-header-default-framed-right-tr,.x-rtl.x-panel-header-default-framed-right-mr,.x-rtl.x-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-right-tc,.x-rtl.x-panel-header-default-framed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)}.x-panel-header-default-framed-right-mc{padding:3px 2px 3px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-3-3-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -6px}.x-panel-header-default-framed-bottom-tr{background-position:right -9px}.x-panel-header-default-framed-bottom-bl{background-position:0 -12px}.x-panel-header-default-framed-bottom-br{background-position:right -15px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -3px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:3px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:3px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:3px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-rtl.x-panel-header-default-framed-left{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#3a4155}.x-rtl.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-3-0-0-3-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -3px}.x-panel-header-default-framed-left-bl{background-position:0 -6px}.x-panel-header-default-framed-left-br{background-position:0 -9px}.x-panel-header-default-framed-left-ml{background-position:-3px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -3px}.x-rtl.x-panel-header-default-framed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-left-bc{background-position:right -3px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:3px}.x-panel-header-default-framed-left-tc{height:3px}.x-panel-header-default-framed-left-bc{height:3px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-left-tl,.x-rtl.x-panel-header-default-framed-left-ml,.x-rtl.x-panel-header-default-framed-left-bl,.x-rtl.x-panel-header-default-framed-left-tr,.x-rtl.x-panel-header-default-framed-left-mr,.x-rtl.x-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-left-tc,.x-rtl.x-panel-header-default-framed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)}.x-panel-header-default-framed-left-mc{padding:3px 4px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -9px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -12px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -15px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -3px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-top-tc{height:3px}.x-panel-header-default-framed-collapsed-top-bc{height:3px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:2px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-rtl.x-panel-header-default-framed-collapsed-right{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#3a4155}.x-rtl.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-3-3-3-3-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -3px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -9px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-3px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -3px}.x-rtl.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -3px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-right-tc{height:3px}.x-panel-header-default-framed-collapsed-right-bc{height:3px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-right-tl,.x-rtl.x-panel-header-default-framed-collapsed-right-ml,.x-rtl.x-panel-header-default-framed-collapsed-right-bl,.x-rtl.x-panel-header-default-framed-collapsed-right-tr,.x-rtl.x-panel-header-default-framed-collapsed-right-mr,.x-rtl.x-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-right-tc,.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-right-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -9px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -12px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -15px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -3px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-bottom-tc{height:3px}.x-panel-header-default-framed-collapsed-bottom-bc{height:3px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:2px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-rtl.x-panel-header-default-framed-collapsed-left{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(left,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#3a4155}.x-rtl.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-3-3-3-3-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -3px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -9px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-3px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -3px}.x-rtl.x-panel-header-default-framed-collapsed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-position:right -3px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-left-tc{height:3px}.x-panel-header-default-framed-collapsed-left-bc{height:3px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-left-tl,.x-rtl.x-panel-header-default-framed-collapsed-left-ml,.x-rtl.x-panel-header-default-framed-collapsed-left-bl,.x-rtl.x-panel-header-default-framed-collapsed-left-tr,.x-rtl.x-panel-header-default-framed-collapsed-left-mr,.x-rtl.x-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-left-tc,.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-left-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-framed-top{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#9ca0aa}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-framed-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-framed-collapsed-border-left{border-left-width:1px!important}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#122d5e;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#5e6986}.x-tip-default-mc{background-color:#5e6986}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#122d5e}.x-tip-default .x-tool-img{background-color:#5e6986}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-default .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:black;font-size:14px;font-weight:bold}.x-tip-body-default{padding:3px;color:black;font-size:14px;font-weight:normal}.x-tip-body-default a{color:black}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:black;font-size:14px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:black;font-size:14px;font-weight:normal}.x-tip-body-form-invalid a{color:black}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#606068;-webkit-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-moz-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#676772;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#676772}.x-btn-group-header-text-container-default{font:normal 14px tahoma,arial,verdana,sans-serif;line-height:15px;color:#d2d2d2}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#4b515f}.x-btn-group-default-framed-mc{background-color:#4b515f}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#4b515f}.x-btn-group-default-framed-notitle-mc{background-color:#4b515f}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#606068;-webkit-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-moz-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#676772;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#676772}.x-btn-group-header-text-container-default-framed{font:normal 14px tahoma,arial,verdana,sans-serif;line-height:15px;color:#d2d2d2}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#282828;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-default-mc{background-color:#3f4757}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#18181a;border-width:1px;border-style:solid;background:#1f2833;color:white}.x-window-header-default{font-size:14px;border-color:#282828;zoom:1;background-color:#3f4757}.x-window-header-default .x-tool-img{background-color:#3f4757}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#3f4757;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3f4757)}.x-window-header-default-vertical .x-rtl.x-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container{background-color:#3f4757;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#3f4757)}.x-window-header-text-container-default{color:white;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#3f4757}.x-window-header-default-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-rtl.x-window-header-default-right-tl,.x-rtl.x-window-header-default-right-ml,.x-rtl.x-window-header-default-right-bl,.x-rtl.x-window-header-default-right-tr,.x-rtl.x-window-header-default-right-mr,.x-rtl.x-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-rtl.x-window-header-default-left-tl,.x-rtl.x-window-header-default-left-ml,.x-rtl.x-window-header-default-left-bl,.x-rtl.x-window-header-default-left-tr,.x-rtl.x-window-header-default-left-mr,.x-rtl.x-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-rtl.x-window-header-default-collapsed-right-tl,.x-rtl.x-window-header-default-collapsed-right-ml,.x-rtl.x-window-header-default-collapsed-right-bl,.x-rtl.x-window-header-default-collapsed-right-tr,.x-rtl.x-window-header-default-collapsed-right-mr,.x-rtl.x-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-rtl.x-window-header-default-collapsed-left-tl,.x-rtl.x-window-header-default-collapsed-left-ml,.x-rtl.x-window-header-default-collapsed-left-bl,.x-rtl.x-window-header-default-collapsed-left-tr,.x-rtl.x-window-header-default-collapsed-left-mr,.x-rtl.x-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:white;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#9fa3ab}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 14px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:5px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:white;font:normal 15px/17px tahoma,arial,verdana,sans-serif;margin-top:5px}.x-toolbar-item .x-form-item-label{font:normal 14px/16px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:white}.x-form-item,.x-form-field{font:normal 15px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:#15171a;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:white;padding:2px 4px 2px 4px;background:#34383f repeat-x 0 0;border-width:2px;border-style:solid;border-color:#737b8c;background-image:url(images/form/text-bg.gif);height:26px;line-height:18px}.x-field-toolbar .x-form-text{height:24px;line-height:16px}.x-content-box .x-form-text{height:18px}.x-content-box .x-field-toolbar .x-form-text{height:16px}.x-form-focus{border-color:#ff9c33}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:26px}.x-toolbar-item .x-form-display-field-body{height:24px}.x-form-display-field{font:normal 15px/17px tahoma,arial,verdana,sans-serif;color:white;margin-top:5px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 14px/16px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#3f4757;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-rtl.x-message-box-info,.x-rtl.x-message-box-warning,.x-rtl.x-message-box-question,.x-rtl.x-message-box-error{background-position:top left}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:26px}.x-toolbar-item .x-form-cb-wrap{height:24px}.x-form-cb{margin-top:4px}.x-toolbar-item .x-form-cb{margin-top:3px}.x-form-checkbox{width:19px;height:19px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -19px}.x-form-checkbox-focus{background-position:-19px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-19px -19px}.x-form-cb-label{margin-top:5px;font:normal 15px/17px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 14px/16px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-rtl.x-field .x-form-cb-label-before{margin-right:0;margin-left:4px}.x-form-cb-label-after{margin-left:4px}.x-rtl.x-field .x-form-cb-label-after{margin-left:0;margin-right:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#4d515c;border-top:1px dotted #333;border-bottom:1px dotted #333}.x-form-check-group-label{color:white;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:white}.x-rtl.x-form-check-group-label{margin:0 0 5px 30px}.x-fieldset{border:1px solid #727c8c;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header-text{font:14px/14px bold tahoma,arial,verdana,sans-serif;color:white;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,.x-fieldset-with-title .x-rtl .x-tool{margin:1px 0 0 3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:19px;height:19px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -19px}.x-form-radio-focus{background-position:-19px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-19px -19px}.x-form-trigger{background:url(images/form/trigger.gif);width:20px;border-width:0 0 2px;border-color:#737b8c;border-style:solid}.x-rtl.x-form-trigger-wrap .x-form-trigger{background-image:url(images/form/trigger-rtl.gif)}.x-trigger-cell{background-color:#34383f;width:20px}.x-form-trigger-over{background-position:-20px 0;border-color:#ff9c33}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-60px 0}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-80px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-40px 0;border-color:#c76e12}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-search-trigger{background-image:url(images/form/search-trigger-rtl.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:26px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:24px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:#34383f;width:20px;height:13px}.x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-rtl.gif)}.x-form-spinner-down{background-position:0 -13px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -13px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -13px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -13px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -13px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:12px}.x-toolbar-item .x-form-spinner-down{background-position:0 -12px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -12px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -12px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -12px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -12px}.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last.gif)}.x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next.gif)}.x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev.gif)}.x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first.gif)}.x-item-disabled .x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first-disabled.gif)}.x-boundlist{border-width:2px;border-style:solid;border-color:#222732;background:#404551}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:22px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:0;border-style:dotted;border-color:#404551}.x-boundlist-selected{background:#e5872c;border-color:#242838}.x-boundlist-item-over{background:#e5872c;border-color:#2e3347}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#798294;background-color:#21252e;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#5c6980;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#627089),color-stop(100%,#535f74));background-image:-webkit-linear-gradient(top,#627089,#535f74);background-image:-moz-linear-gradient(top,#627089,#535f74);background-image:-o-linear-gradient(top,#627089,#535f74);background-image:linear-gradient(top,#627089,#535f74)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#5c6980;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:14px}.x-datepicker-column-header{width:25px;color:white;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#535b5c;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#40475a),color-stop(100%,#313745));background-image:-webkit-linear-gradient(top,#40475a,#313745);background-image:-moz-linear-gradient(top,#40475a,#313745);background-image:-o-linear-gradient(top,#40475a,#313745);background-image:linear-gradient(top,#40475a,#313745)}.x-datepicker-column-header-inner{line-height:20px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:#21252e}.x-datepicker-date{padding:0 4px 0 0;font:normal 14px tahoma,arial,verdana,sans-serif;color:white;cursor:pointer;line-height:19px}a.x-datepicker-date:hover{color:white;background-color:#7e5530}.x-datepicker-selected{border-style:solid;border-color:#864900}.x-datepicker-selected .x-datepicker-date{background-color:#e5872c;font-weight:bold}.x-datepicker-today{border-color:#99a;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#535b5c;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#51596b),color-stop(49%,#4b525f),color-stop(51%,#454b58),color-stop(100%,#484e5a));background-image:-webkit-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-moz-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-o-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#798294;background-color:#21252e}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#798294;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 14px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:white;border-width:1px;border-style:solid;border-color:#21252e;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#7e5530}.x-monthpicker-selected{background-color:#e5872c;border-style:solid;border-color:#864900}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:#21252e}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-date-trigger{background-image:url(images/form/date-trigger-rtl.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 15px tahoma,arial,verdana,sans-serif;background-color:#34383f;resize:none}.x-grid-body{background:#232d38;border-width:1px;border-style:solid;border-color:#18181a}.x-grid-empty{padding:10px;color:gray;background-color:#232d38;font:normal 14px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:white;font:normal 14px/17px tahoma,arial,verdana,sans-serif;background-color:#1f2933;border-color:#ededed #454545 #ededed #454545;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#1a232b}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#101010}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#101010}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#101010}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#101010}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#7e552f}.x-grid-row-selected .x-grid-td{background-color:#e48627}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#e48627;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid #1f2933}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#101010}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#101010}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:2px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:1px;padding-bottom:2px}.x-grid-cell-special{border-color:#ededed #454545 #ededed #454545;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #283b61;background-image:none;background-color:#e48627;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e48627),color-stop(100%,#d7791b));background-image:-webkit-linear-gradient(left,#e48627,#d7791b);background-image:-moz-linear-gradient(left,#e48627,#d7791b);background-image:-o-linear-gradient(left,#e48627,#d7791b);background-image:linear-gradient(left,#e48627,#d7791b)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-rtl.x-grid-cell-special{border-right-width:0;border-left-width:1px}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-rtl.x-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.gif);background-position:right 0}.x-grid-row .x-grid-cell-selected{color:white;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-rtl.x-grid-with-col-lines .x-grid-cell{border-right-width:0;border-left-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #18181a;border-bottom-color:#373c4b;background-color:#373c4b;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:white;font:normal 14px/16px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-rtl.x-column-header{border-right:0 none;border-left:1px solid #c5c5c5}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#496085;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6c86ae),color-stop(50%,#526c95),color-stop(51%,#496085),color-stop(100%,#405475));background-image:-webkit-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-moz-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-o-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-rtl.x-column-header-trigger{background-position:right center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-align-right .x-rtl.x-column-header-text{margin-right:0;margin-left:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:18px;background-position:right center}.x-column-header-sort-ASC .x-rtl.x-column-header-text,.x-column-header-sort-DESC .x-rtl.x-column-header-text{padding-right:0;padding-left:18px;background-position:0 center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:3px 2px 3px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:2px;padding-bottom:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:2px 6px 1px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:1px;padding-bottom:0}.x-grid-checkcolumn{width:19px;height:19px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -19px}.x-grid-cell-inner-row-numberer{padding:2px 5px 3px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#283042;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title{background-position:right center;padding:0 14px 0 0}.x-grid-group-title{color:black;font:bold 14px/16px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 14px/17px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#101010;border-style:solid}.x-summary-bottom{border-bottom-color:#373c4b}.x-docked-summary{border-width:1px;border-color:#18181a;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #454545 #ededed #454545;background-color:transparent!important;border-top-width:0;font:normal 14px/17px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-locked .x-rtl.x-grid-inner-locked{border-width:0 0 0 1px}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-grid-inner-locked .x-rtl.x-column-header-last{border-left-width:0!important}.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last{border-left:0 none}.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last{border-left:0 none}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 14px/15px tahoma,arial,verdana,sans-serif;padding:1px 4px 2px 4px;height:22px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-editor .x-form-trigger{height:22px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:11px}.x-grid-editor .x-form-cb{margin-top:2px}.x-grid-editor .x-form-cb-wrap{height:22px}.x-grid-editor .x-form-display-field-body{height:22px}.x-grid-editor .x-form-display-field{font:normal 14px/15px tahoma,arial,verdana,sans-serif;padding:3px 6px 4px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:3px 2px 3px 2px}.x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:0;padding-right:0}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:3px 5px 4px 5px}.x-grid-row-editor .x-form-action-col-field{padding:3px 1px 3px 1px}.x-grid-row-editor .x-form-text{padding:1px 3px 2px 3px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:2px;padding-right:2px}.x-grid-row-editor .x-panel-body{border-top:1px solid #18181a!important;border-bottom:1px solid #18181a!important;padding:4px 0 4px 0;background-color:#4b5d83}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb{margin-right:0;margin-left:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#4b5d83}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#4b5d83}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#4b5d83}.x-grid-row-editor-buttons-default-top-mc{background-color:#4b5d83}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:31px}.x-grid-row-editor-buttons-default-top{bottom:31px}.x-grid-row-editor-buttons{border-color:#18181a}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-rtl.x-row-editor-update-button{margin-left:2px;margin-right:auto}.x-rtl.x-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x-grid-cell-inner-row-expander{padding:7px 7px 6px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:6px;padding-bottom:5px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:white;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#5c6b82;border-top-color:#606877;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#18181a}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#5c6b82}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#5c6b82}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#3f4757}.x-menu-body{background:#414551;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #223;background-color:#666;width:2px}.x-rtl.x-menu .x-menu-icon-separator{left:auto;right:24px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-rtl.x-menu-item-indent{margin-left:0;margin-right:30px}.x-menu-item-active{background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fc9b00),color-stop(100%,#d98500));background-image:-webkit-linear-gradient(top,#fc9b00,#d98500);background-image:-moz-linear-gradient(top,#fc9b00,#d98500);background-image:-o-linear-gradient(top,#fc9b00,#d98500);background-image:linear-gradient(top,#fc9b00,#d98500);border-color:#d38200;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#ed9200 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-rtl.x-menu-item-link{padding:0 30px 0 0}.x-right-check-item-text{padding-right:22px}.x-rtl.x-right-check-item-text{padding-left:22px;padding-right:0}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#a0a2a8}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-rtl.x-menu-item-icon{left:auto;right:3px}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon{left:auto;right:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-rtl.x-menu-item-icon-right{right:auto;left:3px}.x-menu-item-text{font-size:14px;color:white;cursor:pointer;margin-right:16px}a.x-rtl .x-menu-item-text{margin-right:0;margin-left:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #223;background-color:#666;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-rtl.x-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.gif)}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow{right:auto;left:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:14px;color:white}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#414551}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-rtl.x-tool-expand-left,.x-rtl.x-tool-collapse-left{background-position:0 -165px}.x-rtl.x-tool-expand-right,.x-rtl.x-tool-collapse-right{background-position:0 -180px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-left,.x-tool-over .x-rtl.x-tool-collapse-left{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-right,.x-tool-over .x-rtl.x-tool-collapse-right{background-position:-15px -180px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:6px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-rtl.x-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x-rtl.x-slider-horz .x-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x-rtl.x-slider-horz .x-slider-thumb{margin-right:-7px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-top-mc{background-color:#616f8c}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-color:#616f8c}.x-tab-default-bottom-mc{background-color:#616f8c}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif);background-repeat:repeat-y}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-left-mc{background-color:#616f8c}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-right-mc{background-color:#616f8c}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#2e3746;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:white;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:white;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#b0b7c5}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-tab-default-left{margin:0 2px 0 0}.x-rtl.x-tab-default-left{margin:0 0 0 2px}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #18181a}.x-tab-default-bottom{border-top:1px solid #18181a}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-rtl.x-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-rtl.x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-rtl.x-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-rtl.x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-rtl.x-tab-default-icon-text-left .x-tab-inner{padding-left:0;padding-right:20px}.x-tab-default-over{background-color:#6d7b9a}.x-tab-default-over .x-tab-glyph{color:white}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#b6bdcc}.x-tab-default-active{border-color:#74400e;background-color:#ed9200}.x-tab-default-active .x-tab-glyph{color:white}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#f6c87f}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #ed9200}.x-tab-default-bottom-active{border-top:1px solid #ed9200}.x-tab-default-disabled{border-color:#39445a;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#697390}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#39445a #39445a #18181a}.x-tab-default-bottom-disabled{border-color:#18181a #39445a #39445a #39445a}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#6d7b9a}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#6d7b9a}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#ed9200}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#ed9200}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#435881}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#435881}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-rtl.x-tab-default .x-tab-close-btn{right:auto;left:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-rtl.x-tab-default-closable .x-tab-wrap{padding-right:0;padding-left:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)"}.x-tab-bar-default{border-style:solid;border-color:#18181a}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-default-left{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-default-right{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-rtl.x-tab-bar-body-default-left{padding-right:0;padding-left:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-rtl.x-tab-bar-body-default-right{padding-left:0;padding-right:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#18181a;background-color:#ed9200}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-strip-default-left{border-width:0 1px 0 0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left{border-width:1px 1px 1px 0}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-strip-default-right{border-width:0 0 0 1px}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right{border-width:1px 0 1px 1px}.x-tab-bar-default{background-color:#474e5c}.x-tab-bar-default-top{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(top,#4f596c,#474e5c);background-image:-moz-linear-gradient(top,#4f596c,#474e5c);background-image:-o-linear-gradient(top,#4f596c,#474e5c);background-image:linear-gradient(top,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(bottom,#4f596c,#474e5c);background-image:-moz-linear-gradient(bottom,#4f596c,#474e5c);background-image:-o-linear-gradient(bottom,#4f596c,#474e5c);background-image:linear-gradient(bottom,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(left,#4f596c,#474e5c);background-image:-moz-linear-gradient(left,#4f596c,#474e5c);background-image:-o-linear-gradient(left,#4f596c,#474e5c);background-image:linear-gradient(left,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(right,#4f596c,#474e5c);background-image:-moz-linear-gradient(right,#4f596c,#474e5c);background-image:-o-linear-gradient(right,#4f596c,#474e5c);background-image:linear-gradient(right,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-rtl.x-tab-bar-default-right .x-box-scroller{margin-left:0;margin-right:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#373c4b}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:19px;width:19px;background-image:url(images/form/checkbox.gif);line-height:19px}.x-column-header-checkbox .x-column-header-inner{padding:3px 5px 3px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:2px 5px 1px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:1px;padding-bottom:0}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -19px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-arrows .x-rtl.x-tree-expander{background:url(images/tree/arrows-rtl.gif) no-repeat -48px center}.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander{background-position:0 center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-lines .x-rtl.x-tree-elbow{background-image:url(images/tree/elbow-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-no-row-lines .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.gif)}.x-tree-icon{width:16px;height:22px}.x-tree-elbow-img{width:16px;height:22px;margin-right:0}.x-rtl.x-tree-elbow-img{margin-right:0;margin-left:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-2px;margin-bottom:-3px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-rtl.x-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-rtl.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.gif)}.x-tree-checkbox{margin-right:3px;top:2px;width:19px;height:19px;background-image:url(images/form/checkbox.gif)}.x-rtl.x-tree-checkbox{margin-right:0;margin-left:3px}.x-tree-checkbox-checked{background-position:0 -19px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-tree-loading .x-rtl.x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:14px;line-height:17px;padding-left:3px}.x-rtl.x-tree-node-text{padding-left:0;padding-right:3px}.x-grid-cell-inner-treecolumn{padding:2px 6px 3px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-rtl.x-toolbar-more-icon{background-image:url(images/toolbar/more-left.gif)!important}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:26px}.x-content-box .x-form-trigger{height:24px}.x-field-toolbar .x-form-trigger{height:24px}.x-content-box .x-field-toolbar .x-form-trigger{height:22px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:11px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:10px}.x-html-editor-wrap .x-toolbar{border-left-color:#737b8c;border-top-color:#737b8c;border-right-color:#737b8c}.x-html-editor-input{border:1px solid #737b8c;border-top-width:0}.x-column-header-trigger{background-color:#373c4b;background-image:url(images/grid/grid3-hd-btn.gif)}.x-rtl.x-column-header-trigger{background-image:url(images/grid/grid3-hd-btn-left.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #5c6b82;-moz-box-shadow:inset 0 0 0 0 #5c6b82;box-shadow:inset 0 0 0 0 #5c6b82}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #606877;-moz-box-shadow:inset 0 1px 0 0 #606877;box-shadow:inset 0 1px 0 0 #606877}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-access/ext-theme-access-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-btn-inner-right{text-align:right}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 14px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-left{text-align:left}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-tab-bar-strip-right{left:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:white;font-size:15px;font-family:tahoma,arial,verdana,sans-serif;background:black}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#223;background-image:none;background-color:#3f4757}.x-mask-msg-inner{padding:5px 10px;border-style:solid;border-width:1px;border-color:#556;background-color:#232d38;color:white;font:normal 14px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px}.x-progress-default{background-color:#232d38;border-width:1px;height:20px;border-color:#18181a}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ffb43b),color-stop(50%,#ffa007),color-stop(51%,#ed9200),color-stop(100%,#d38200));background-image:-webkit-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-moz-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-o-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:14px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#aaa;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#06070a}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:14px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#9498a0}.x-btn-default-small-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#06070a}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:14px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#9498a0}.x-btn-default-medium-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#06070a}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#2a3142}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:14px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#9498a0}.x-btn-default-large-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#ed9200;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#da7b19;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:18px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:16px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:white}.x-btn-default-toolbar-small-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:white}.x-btn-default-toolbar-medium-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:14px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:white}.x-btn-default-toolbar-large-disabled{border-color:#565656;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#ed9200}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#db7b1f}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:18px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:16px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:14px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-toolbar-text{margin:0 6px 0 4px;color:white;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#1b1b29;border-right-color:#5d5d6e}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#18181a;border-width:1px;background-image:none;background-color:#3a3e4f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#404558),color-stop(100%,#3a3e4f));background-image:-webkit-linear-gradient(top,#404558,#3a3e4f);background-image:-moz-linear-gradient(top,#404558,#3a3e4f);background-image:-o-linear-gradient(top,#404558,#3a3e4f);background-image:linear-gradient(top,#404558,#3a3e4f)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#1b1b29;border-bottom-color:#5d5d6e}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#18181a;padding:0}.x-panel-header-default{font-size:14px;border:1px solid #18181a}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:#232d38;border-color:#18181a;color:white;font-size:15px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-vertical{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-top{-webkit-box-shadow:#606877 0 1px 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset;box-shadow:#606877 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#606877 -1px 0 0 0 inset;-moz-box-shadow:#606877 -1px 0 0 0 inset;box-shadow:#606877 -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#606877 0 -1px 0 0 inset;-moz-box-shadow:#606877 0 -1px 0 0 inset;box-shadow:#606877 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 1px 0 0 0 inset;box-shadow:#606877 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#9ca0aa}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#18181a;padding:4px}.x-panel-header-default-framed{font-size:14px;border:1px solid #18181a}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default-framed{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#3f4757;border-color:#18181a;color:white;font-size:15px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-panel-default-framed-mc{background-color:#3f4757}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -6px}.x-panel-default-framed-tr{background-position:right -9px}.x-panel-default-framed-bl{background-position:0 -12px}.x-panel-default-framed-br{background-position:right -15px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -3px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:3px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:3px}.x-panel-default-framed-tc{height:3px}.x-panel-default-framed-bc{height:3px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:2px 2px 2px 2px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-3-3-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -6px}.x-panel-header-default-framed-top-tr{background-position:right -9px}.x-panel-header-default-framed-top-bl{background-position:0 -12px}.x-panel-header-default-framed-top-br{background-position:right -15px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -3px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:3px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:3px}.x-panel-header-default-framed-top-tc{height:3px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:2px 3px 4px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-3-3-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -3px}.x-panel-header-default-framed-right-bl{background-position:0 -6px}.x-panel-header-default-framed-right-br{background-position:0 -9px}.x-panel-header-default-framed-right-ml{background-position:-3px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -3px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:3px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:3px}.x-panel-header-default-framed-right-bc{height:3px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-right-mc{padding:3px 2px 3px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-3-3-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -6px}.x-panel-header-default-framed-bottom-tr{background-position:right -9px}.x-panel-header-default-framed-bottom-bl{background-position:0 -12px}.x-panel-header-default-framed-bottom-br{background-position:right -15px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -3px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:3px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:3px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:3px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-3-0-0-3-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -3px}.x-panel-header-default-framed-left-bl{background-position:0 -6px}.x-panel-header-default-framed-left-br{background-position:0 -9px}.x-panel-header-default-framed-left-ml{background-position:-3px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -3px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:3px}.x-panel-header-default-framed-left-tc{height:3px}.x-panel-header-default-framed-left-bc{height:3px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-left-mc{padding:3px 4px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -9px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -12px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -15px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -3px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-top-tc{height:3px}.x-panel-header-default-framed-collapsed-top-bc{height:3px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:2px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-3-3-3-3-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -3px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -9px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-3px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -3px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-right-tc{height:3px}.x-panel-header-default-framed-collapsed-right-bc{height:3px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-right-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-3-3-3-3-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -9px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -12px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -15px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -3px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-bottom-tc{height:3px}.x-panel-header-default-framed-collapsed-bottom-bc{height:3px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:2px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#3a4155}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-3-3-3-3-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -3px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -6px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -9px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-3px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -3px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:3px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:3px}.x-panel-header-default-framed-collapsed-left-tc{height:3px}.x-panel-header-default-framed-collapsed-left-bc{height:3px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-left-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#3a4155;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3a4155)}.x-panel-header-default-framed-top{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 -1px 0 0 inset,#606877 -1px 0 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset;-moz-box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset;box-shadow:#606877 0 1px 0 0 inset,#606877 0 -1px 0 0 inset,#606877 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#9ca0aa}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#122d5e;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#5e6986}.x-tip-default-mc{background-color:#5e6986}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#122d5e}.x-tip-default .x-tool-img{background-color:#5e6986}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:black;font-size:14px;font-weight:bold}.x-tip-body-default{padding:3px;color:black;font-size:14px;font-weight:normal}.x-tip-body-default a{color:black}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:black;font-size:14px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:black;font-size:14px;font-weight:normal}.x-tip-body-form-invalid a{color:black}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#606068;-webkit-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-moz-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#676772;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#676772}.x-btn-group-header-text-container-default{font:normal 14px tahoma,arial,verdana,sans-serif;line-height:15px;color:#d2d2d2}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#4b515f}.x-btn-group-default-framed-mc{background-color:#4b515f}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#4b515f}.x-btn-group-default-framed-notitle-mc{background-color:#4b515f}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#606068;-webkit-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-moz-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#676772;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#676772}.x-btn-group-header-text-container-default-framed{font:normal 14px tahoma,arial,verdana,sans-serif;line-height:15px;color:#d2d2d2}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#282828;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-default-mc{background-color:#3f4757}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#18181a;border-width:1px;border-style:solid;background:#1f2833;color:white}.x-window-header-default{font-size:14px;border-color:#282828;zoom:1;background-color:#3f4757}.x-window-header-default .x-tool-img{background-color:#3f4757}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#3f4757;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3f4757)}.x-window-header-text-container-default{color:white;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#3f4757}.x-window-header-default-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#3f4757}.x-window-header-default-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-window-header-default-collapsed-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:white;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#9fa3ab}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 14px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:5px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:white;font:normal 15px/17px tahoma,arial,verdana,sans-serif;margin-top:5px}.x-toolbar-item .x-form-item-label{font:normal 14px/16px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:white}.x-form-item,.x-form-field{font:normal 15px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:#15171a;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:white;padding:2px 4px 2px 4px;background:#34383f repeat-x 0 0;border-width:2px;border-style:solid;border-color:#737b8c;background-image:url(images/form/text-bg.gif);height:26px;line-height:18px}.x-field-toolbar .x-form-text{height:24px;line-height:16px}.x-content-box .x-form-text{height:18px}.x-content-box .x-field-toolbar .x-form-text{height:16px}.x-form-focus{border-color:#ff9c33}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:26px}.x-toolbar-item .x-form-display-field-body{height:24px}.x-form-display-field{font:normal 15px/17px tahoma,arial,verdana,sans-serif;color:white;margin-top:5px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 14px/16px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#3f4757;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:26px}.x-toolbar-item .x-form-cb-wrap{height:24px}.x-form-cb{margin-top:4px}.x-toolbar-item .x-form-cb{margin-top:3px}.x-form-checkbox{width:19px;height:19px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -19px}.x-form-checkbox-focus{background-position:-19px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-19px -19px}.x-form-cb-label{margin-top:5px;font:normal 15px/17px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 14px/16px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#4d515c;border-top:1px dotted #333;border-bottom:1px dotted #333}.x-form-check-group-label{color:white;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:white}.x-fieldset{border:1px solid #727c8c;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header-text{font:14px/14px bold tahoma,arial,verdana,sans-serif;color:white;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:19px;height:19px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -19px}.x-form-radio-focus{background-position:-19px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-19px -19px}.x-form-trigger{background:url(images/form/trigger.gif);width:20px;border-width:0 0 2px;border-color:#737b8c;border-style:solid}.x-trigger-cell{background-color:#34383f;width:20px}.x-form-trigger-over{background-position:-20px 0;border-color:#ff9c33}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-60px 0}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-80px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-40px 0;border-color:#c76e12}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:26px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:24px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:#34383f;width:20px;height:13px}.x-form-spinner-down{background-position:0 -13px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -13px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -13px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -13px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -13px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:12px}.x-toolbar-item .x-form-spinner-down{background-position:0 -12px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -12px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -12px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -12px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -12px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-boundlist{border-width:2px;border-style:solid;border-color:#222732;background:#404551}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:22px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:0;border-style:dotted;border-color:#404551}.x-boundlist-selected{background:#e5872c;border-color:#242838}.x-boundlist-item-over{background:#e5872c;border-color:#2e3347}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#798294;background-color:#21252e;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#5c6980;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#627089),color-stop(100%,#535f74));background-image:-webkit-linear-gradient(top,#627089,#535f74);background-image:-moz-linear-gradient(top,#627089,#535f74);background-image:-o-linear-gradient(top,#627089,#535f74);background-image:linear-gradient(top,#627089,#535f74)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#5c6980;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:14px}.x-datepicker-column-header{width:25px;color:white;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#535b5c;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#40475a),color-stop(100%,#313745));background-image:-webkit-linear-gradient(top,#40475a,#313745);background-image:-moz-linear-gradient(top,#40475a,#313745);background-image:-o-linear-gradient(top,#40475a,#313745);background-image:linear-gradient(top,#40475a,#313745)}.x-datepicker-column-header-inner{line-height:20px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:#21252e}.x-datepicker-date{padding:0 4px 0 0;font:normal 14px tahoma,arial,verdana,sans-serif;color:white;cursor:pointer;line-height:19px}a.x-datepicker-date:hover{color:white;background-color:#7e5530}.x-datepicker-selected{border-style:solid;border-color:#864900}.x-datepicker-selected .x-datepicker-date{background-color:#e5872c;font-weight:bold}.x-datepicker-today{border-color:#99a;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#535b5c;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#51596b),color-stop(49%,#4b525f),color-stop(51%,#454b58),color-stop(100%,#484e5a));background-image:-webkit-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-moz-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-o-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#798294;background-color:#21252e}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#798294;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 14px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:white;border-width:1px;border-style:solid;border-color:#21252e;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#7e5530}.x-monthpicker-selected{background-color:#e5872c;border-style:solid;border-color:#864900}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:#21252e}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 15px tahoma,arial,verdana,sans-serif;background-color:#34383f;resize:none}.x-grid-body{background:#232d38;border-width:1px;border-style:solid;border-color:#18181a}.x-grid-empty{padding:10px;color:gray;background-color:#232d38;font:normal 14px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:white;font:normal 14px/17px tahoma,arial,verdana,sans-serif;background-color:#1f2933;border-color:#ededed #454545 #ededed #454545;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#1a232b}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#101010}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#101010}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#101010}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#101010}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#7e552f}.x-grid-row-selected .x-grid-td{background-color:#e48627}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#e48627;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid #1f2933}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#101010}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#101010}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:2px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:1px;padding-bottom:2px}.x-grid-cell-special{border-color:#ededed #454545 #ededed #454545;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #283b61;background-image:none;background-color:#e48627;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e48627),color-stop(100%,#d7791b));background-image:-webkit-linear-gradient(left,#e48627,#d7791b);background-image:-moz-linear-gradient(left,#e48627,#d7791b);background-image:-o-linear-gradient(left,#e48627,#d7791b);background-image:linear-gradient(left,#e48627,#d7791b)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-grid-row .x-grid-cell-selected{color:white;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #18181a;border-bottom-color:#373c4b;background-color:#373c4b;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:white;font:normal 14px/16px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#496085;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6c86ae),color-stop(50%,#526c95),color-stop(51%,#496085),color-stop(100%,#405475));background-image:-webkit-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-moz-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-o-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:18px;background-position:right center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:3px 2px 3px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:2px;padding-bottom:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:2px 6px 1px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:1px;padding-bottom:0}.x-grid-checkcolumn{width:19px;height:19px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -19px}.x-grid-cell-inner-row-numberer{padding:2px 5px 3px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#283042;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-grid-group-title{color:black;font:bold 14px/16px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 14px/17px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#101010;border-style:solid}.x-summary-bottom{border-bottom-color:#373c4b}.x-docked-summary{border-width:1px;border-color:#18181a;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #454545 #ededed #454545;background-color:transparent!important;border-top-width:0;font:normal 14px/17px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 14px/15px tahoma,arial,verdana,sans-serif;padding:1px 4px 2px 4px;height:22px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-editor .x-form-trigger{height:22px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:11px}.x-grid-editor .x-form-cb{margin-top:2px}.x-grid-editor .x-form-cb-wrap{height:22px}.x-grid-editor .x-form-display-field-body{height:22px}.x-grid-editor .x-form-display-field{font:normal 14px/15px tahoma,arial,verdana,sans-serif;padding:3px 6px 4px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:3px 2px 3px 2px}.x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:0;padding-right:0}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:3px 5px 4px 5px}.x-grid-row-editor .x-form-action-col-field{padding:3px 1px 3px 1px}.x-grid-row-editor .x-form-text{padding:1px 3px 2px 3px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:2px;padding-right:2px}.x-grid-row-editor .x-panel-body{border-top:1px solid #18181a!important;border-bottom:1px solid #18181a!important;padding:4px 0 4px 0;background-color:#4b5d83}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#4b5d83}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#4b5d83}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#4b5d83}.x-grid-row-editor-buttons-default-top-mc{background-color:#4b5d83}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:31px}.x-grid-row-editor-buttons-default-top{bottom:31px}.x-grid-row-editor-buttons{border-color:#18181a}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-grid-cell-inner-row-expander{padding:7px 7px 6px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:6px;padding-bottom:5px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:white;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#5c6b82;border-top-color:#606877;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#18181a}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#5c6b82}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#5c6b82}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#3f4757}.x-menu-body{background:#414551;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #223;background-color:#666;width:2px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-menu-item-active{background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fc9b00),color-stop(100%,#d98500));background-image:-webkit-linear-gradient(top,#fc9b00,#d98500);background-image:-moz-linear-gradient(top,#fc9b00,#d98500);background-image:-o-linear-gradient(top,#fc9b00,#d98500);background-image:linear-gradient(top,#fc9b00,#d98500);border-color:#d38200;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#ed9200 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-right-check-item-text{padding-right:22px}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#a0a2a8}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-menu-item-text{font-size:14px;color:white;cursor:pointer;margin-right:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #223;background-color:#666;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:14px;color:white}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#414551}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:6px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-top-mc{background-color:#616f8c}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-color:#616f8c}.x-tab-default-bottom-mc{background-color:#616f8c}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif);background-repeat:repeat-y}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-left-mc{background-color:#616f8c}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-tab-default-right-mc{background-color:#616f8c}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#2e3746;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:white;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:white;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#b0b7c5}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-tab-default-left{margin:0 2px 0 0}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #18181a}.x-tab-default-bottom{border-top:1px solid #18181a}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-tab-default-over{background-color:#6d7b9a}.x-tab-default-over .x-tab-glyph{color:white}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#b6bdcc}.x-tab-default-active{border-color:#74400e;background-color:#ed9200}.x-tab-default-active .x-tab-glyph{color:white}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#f6c87f}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #ed9200}.x-tab-default-bottom-active{border-top:1px solid #ed9200}.x-tab-default-disabled{border-color:#39445a;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#697390}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#39445a #39445a #18181a}.x-tab-default-bottom-disabled{border-color:#18181a #39445a #39445a #39445a}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#6d7b9a}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#6d7b9a}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#ed9200}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#ed9200}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#435881}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#435881}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)"}.x-tab-bar-default{border-style:solid;border-color:#18181a}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#18181a;background-color:#ed9200}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-tab-bar-default{background-color:#474e5c}.x-tab-bar-default-top{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(top,#4f596c,#474e5c);background-image:-moz-linear-gradient(top,#4f596c,#474e5c);background-image:-o-linear-gradient(top,#4f596c,#474e5c);background-image:linear-gradient(top,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(bottom,#4f596c,#474e5c);background-image:-moz-linear-gradient(bottom,#4f596c,#474e5c);background-image:-o-linear-gradient(bottom,#4f596c,#474e5c);background-image:linear-gradient(bottom,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(left,#4f596c,#474e5c);background-image:-moz-linear-gradient(left,#4f596c,#474e5c);background-image:-o-linear-gradient(left,#4f596c,#474e5c);background-image:linear-gradient(left,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(right,#4f596c,#474e5c);background-image:-moz-linear-gradient(right,#4f596c,#474e5c);background-image:-o-linear-gradient(right,#4f596c,#474e5c);background-image:linear-gradient(right,#4f596c,#474e5c)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#373c4b}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:19px;width:19px;background-image:url(images/form/checkbox.gif);line-height:19px}.x-column-header-checkbox .x-column-header-inner{padding:3px 5px 3px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:2px 5px 1px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:1px;padding-bottom:0}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -19px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-icon{width:16px;height:22px}.x-tree-elbow-img{width:16px;height:22px;margin-right:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-2px;margin-bottom:-3px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-tree-checkbox{margin-right:3px;top:2px;width:19px;height:19px;background-image:url(images/form/checkbox.gif)}.x-tree-checkbox-checked{background-position:0 -19px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:14px;line-height:17px;padding-left:3px}.x-grid-cell-inner-treecolumn{padding:2px 6px 3px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:26px}.x-content-box .x-form-trigger{height:24px}.x-field-toolbar .x-form-trigger{height:24px}.x-content-box .x-field-toolbar .x-form-trigger{height:22px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:11px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:10px}.x-html-editor-wrap .x-toolbar{border-left-color:#737b8c;border-top-color:#737b8c;border-right-color:#737b8c}.x-html-editor-input{border:1px solid #737b8c;border-top-width:0}.x-column-header-trigger{background-color:#373c4b;background-image:url(images/grid/grid3-hd-btn.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #5c6b82;-moz-box-shadow:inset 0 0 0 0 #5c6b82;box-shadow:inset 0 0 0 0 #5c6b82}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #606877;-moz-box-shadow:inset 0 1px 0 0 #606877;box-shadow:inset 0 1px 0 0 #606877}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/Readme.md
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/Readme.md	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/Readme.md	(revision 18732)
@@ -0,0 +1,3 @@
+# /resources
+
+This folder contains static resources (typically an `"images"` folder as well).
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-debug.css	(revision 18732)
@@ -0,0 +1,19529 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-classic-sandbox */
+/* including package ext-theme-classic-sandbox */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-border-box,
+.x4-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-strict .x4-ie7 .x4-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ie6 .x4-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hidden,
+.x4-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-tl,
+.x4-frame-tr,
+.x4-frame-tc,
+.x4-frame-bl,
+.x4-frame-br,
+.x4-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-tc,
+.x4-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-item-disabled,
+.x4-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x4-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x4-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-left {
+  text-align: left;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-right {
+  text-align: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller-left,
+.x4-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller-top .x4-box-scroller,
+.x4-box-scroller-bottom .x4-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-menu-after {
+  float: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x4-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x4-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x4-dd-drag-proxy,
+.x4-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-repair .x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-repair .x4-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-ok .x4-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-ok-add .x4-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-nodrop div.x4-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel,
+.x4-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-ie .x4-panel-header,
+.x4-ie .x4-panel-header-tl,
+.x4-ie .x4-panel-header-tc,
+.x4-ie .x4-panel-header-tr,
+.x4-ie .x4-panel-header-ml,
+.x4-ie .x4-panel-header-mc,
+.x4-ie .x4-panel-header-mr,
+.x4-ie .x4-panel-header-bl,
+.x4-ie .x4-panel-header-bc,
+.x4-ie .x4-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-ie8 td.x4-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-vertical .x4-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel-header-plain,
+.x4-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x4-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body .x4-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x4-viewport, .x4-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window .x4-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x4-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x4-safari.x4-mac .x4-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x4-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-item,
+.x4-fieldset-header .x4-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb {
+  margin: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-item-body {
+  position: relative;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-item-disabled .x4-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x4-form-spinner-up,
+.x4-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-months,
+.x4-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-strict .x4-ie6 .x4-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x4-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x4-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x4-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x4-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x4-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x4-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x4-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-row,
+.x4-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x4-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-over .x4-column-header-trigger, .x4-column-header-open .x4-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-right {
+  text-align: right;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-left {
+  text-align: left;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x4-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x4-row-numberer .x4-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group,
+.x4-grid-group-body,
+.x4-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-row-body-hidden, .x4-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x4-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x4-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x4-grid-rowwrap .x4-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x4-grid-rowwrap .x4-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor div.x4-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x4-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x4-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed,
+.x4-splitter-horizontal-noresize,
+.x4-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-column {
+  float: left;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-ie6 .x4-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-quirks .x4-ie .x4-form-layout-table, .x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x4-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x4-ie6 .x4-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-cmp .x4-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-plain .x4-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-icon,
+.x4-menu-item-icon-right,
+.x4-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x4-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x4-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x4-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox .x4-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x4-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-horizontal .x4-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-vertical .x4-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-autowidth-table .x4-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-elbow-img,
+.x4-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x4-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x4-animating-size,
+.x4-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x4-editor .x4-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom,
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #a3bad9;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default {
+  background-color: #e0e8f3;
+  border-width: 1px;
+  height: 20px;
+  border-color: #6594cf;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-content-box .x4-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-bar-default {
+  background-image: none;
+  background-color: #73a3e0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+  background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-nlg .x4-progress-default .x4-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-text-back {
+  color: #396295;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-progress-default .x4-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tr,
+.x4-btn-default-small-br,
+.x4-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl,
+.x4-btn-default-small-bl,
+.x4-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl,
+.x4-btn-default-small-bl,
+.x4-btn-default-small-tr,
+.x4-btn-default-small-br,
+.x4-btn-default-small-tc,
+.x4-btn-default-small-bc,
+.x4-btn-default-small-ml,
+.x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-ml,
+.x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-small .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-button,
+.x4-btn-default-small-noicon .x4-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-inner,
+.x4-btn-default-small-noicon .x4-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active,
+.x4-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-tl,
+.x4-btn-default-small-over .x4-frame-bl,
+.x4-btn-default-small-over .x4-frame-tr,
+.x4-btn-default-small-over .x4-frame-br,
+.x4-btn-default-small-over .x4-frame-tc,
+.x4-btn-default-small-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-ml,
+.x4-btn-default-small-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-tl,
+.x4-btn-default-small-focus .x4-frame-bl,
+.x4-btn-default-small-focus .x4-frame-tr,
+.x4-btn-default-small-focus .x4-frame-br,
+.x4-btn-default-small-focus .x4-frame-tc,
+.x4-btn-default-small-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-ml,
+.x4-btn-default-small-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-tl,
+.x4-btn-default-small-menu-active .x4-frame-bl,
+.x4-btn-default-small-menu-active .x4-frame-tr,
+.x4-btn-default-small-menu-active .x4-frame-br,
+.x4-btn-default-small-menu-active .x4-frame-tc,
+.x4-btn-default-small-menu-active .x4-frame-bc,
+.x4-btn-default-small-pressed .x4-frame-tl,
+.x4-btn-default-small-pressed .x4-frame-bl,
+.x4-btn-default-small-pressed .x4-frame-tr,
+.x4-btn-default-small-pressed .x4-frame-br,
+.x4-btn-default-small-pressed .x4-frame-tc,
+.x4-btn-default-small-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-ml,
+.x4-btn-default-small-menu-active .x4-frame-mr,
+.x4-btn-default-small-pressed .x4-frame-ml,
+.x4-btn-default-small-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-mc,
+.x4-btn-default-small-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-tl,
+.x4-btn-default-small-disabled .x4-frame-bl,
+.x4-btn-default-small-disabled .x4-frame-tr,
+.x4-btn-default-small-disabled .x4-frame-br,
+.x4-btn-default-small-disabled .x4-frame-tc,
+.x4-btn-default-small-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-ml,
+.x4-btn-default-small-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-menu-active,
+.x4-nlg .x4-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-btn-inner,
+.x4-btn-default-small-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tr,
+.x4-btn-default-medium-br,
+.x4-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl,
+.x4-btn-default-medium-bl,
+.x4-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl,
+.x4-btn-default-medium-bl,
+.x4-btn-default-medium-tr,
+.x4-btn-default-medium-br,
+.x4-btn-default-medium-tc,
+.x4-btn-default-medium-bc,
+.x4-btn-default-medium-ml,
+.x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-ml,
+.x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-medium .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-button,
+.x4-btn-default-medium-noicon .x4-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-inner,
+.x4-btn-default-medium-noicon .x4-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active,
+.x4-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-tl,
+.x4-btn-default-medium-over .x4-frame-bl,
+.x4-btn-default-medium-over .x4-frame-tr,
+.x4-btn-default-medium-over .x4-frame-br,
+.x4-btn-default-medium-over .x4-frame-tc,
+.x4-btn-default-medium-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-ml,
+.x4-btn-default-medium-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-tl,
+.x4-btn-default-medium-focus .x4-frame-bl,
+.x4-btn-default-medium-focus .x4-frame-tr,
+.x4-btn-default-medium-focus .x4-frame-br,
+.x4-btn-default-medium-focus .x4-frame-tc,
+.x4-btn-default-medium-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-ml,
+.x4-btn-default-medium-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-tl,
+.x4-btn-default-medium-menu-active .x4-frame-bl,
+.x4-btn-default-medium-menu-active .x4-frame-tr,
+.x4-btn-default-medium-menu-active .x4-frame-br,
+.x4-btn-default-medium-menu-active .x4-frame-tc,
+.x4-btn-default-medium-menu-active .x4-frame-bc,
+.x4-btn-default-medium-pressed .x4-frame-tl,
+.x4-btn-default-medium-pressed .x4-frame-bl,
+.x4-btn-default-medium-pressed .x4-frame-tr,
+.x4-btn-default-medium-pressed .x4-frame-br,
+.x4-btn-default-medium-pressed .x4-frame-tc,
+.x4-btn-default-medium-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-ml,
+.x4-btn-default-medium-menu-active .x4-frame-mr,
+.x4-btn-default-medium-pressed .x4-frame-ml,
+.x4-btn-default-medium-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-mc,
+.x4-btn-default-medium-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-tl,
+.x4-btn-default-medium-disabled .x4-frame-bl,
+.x4-btn-default-medium-disabled .x4-frame-tr,
+.x4-btn-default-medium-disabled .x4-frame-br,
+.x4-btn-default-medium-disabled .x4-frame-tc,
+.x4-btn-default-medium-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-ml,
+.x4-btn-default-medium-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-menu-active,
+.x4-nlg .x4-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-btn-inner,
+.x4-btn-default-medium-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tr,
+.x4-btn-default-large-br,
+.x4-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl,
+.x4-btn-default-large-bl,
+.x4-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl,
+.x4-btn-default-large-bl,
+.x4-btn-default-large-tr,
+.x4-btn-default-large-br,
+.x4-btn-default-large-tc,
+.x4-btn-default-large-bc,
+.x4-btn-default-large-ml,
+.x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-ml,
+.x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-large .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-button,
+.x4-btn-default-large-noicon .x4-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-inner,
+.x4-btn-default-large-noicon .x4-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active,
+.x4-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-tl,
+.x4-btn-default-large-over .x4-frame-bl,
+.x4-btn-default-large-over .x4-frame-tr,
+.x4-btn-default-large-over .x4-frame-br,
+.x4-btn-default-large-over .x4-frame-tc,
+.x4-btn-default-large-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-ml,
+.x4-btn-default-large-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-tl,
+.x4-btn-default-large-focus .x4-frame-bl,
+.x4-btn-default-large-focus .x4-frame-tr,
+.x4-btn-default-large-focus .x4-frame-br,
+.x4-btn-default-large-focus .x4-frame-tc,
+.x4-btn-default-large-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-ml,
+.x4-btn-default-large-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-tl,
+.x4-btn-default-large-menu-active .x4-frame-bl,
+.x4-btn-default-large-menu-active .x4-frame-tr,
+.x4-btn-default-large-menu-active .x4-frame-br,
+.x4-btn-default-large-menu-active .x4-frame-tc,
+.x4-btn-default-large-menu-active .x4-frame-bc,
+.x4-btn-default-large-pressed .x4-frame-tl,
+.x4-btn-default-large-pressed .x4-frame-bl,
+.x4-btn-default-large-pressed .x4-frame-tr,
+.x4-btn-default-large-pressed .x4-frame-br,
+.x4-btn-default-large-pressed .x4-frame-tc,
+.x4-btn-default-large-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-ml,
+.x4-btn-default-large-menu-active .x4-frame-mr,
+.x4-btn-default-large-pressed .x4-frame-ml,
+.x4-btn-default-large-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-mc,
+.x4-btn-default-large-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-tl,
+.x4-btn-default-large-disabled .x4-frame-bl,
+.x4-btn-default-large-disabled .x4-frame-tr,
+.x4-btn-default-large-disabled .x4-frame-br,
+.x4-btn-default-large-disabled .x4-frame-tc,
+.x4-btn-default-large-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-ml,
+.x4-btn-default-large-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-menu-active,
+.x4-nlg .x4-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-btn-inner,
+.x4-btn-default-large-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tr,
+.x4-btn-default-toolbar-small-br,
+.x4-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl,
+.x4-btn-default-toolbar-small-bl,
+.x4-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl,
+.x4-btn-default-toolbar-small-bl,
+.x4-btn-default-toolbar-small-tr,
+.x4-btn-default-toolbar-small-br,
+.x4-btn-default-toolbar-small-tc,
+.x4-btn-default-toolbar-small-bc,
+.x4-btn-default-toolbar-small-ml,
+.x4-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-ml,
+.x4-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-small .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-button,
+.x4-btn-default-toolbar-small-noicon .x4-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon .x4-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active,
+.x4-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-tl,
+.x4-btn-default-toolbar-small-over .x4-frame-bl,
+.x4-btn-default-toolbar-small-over .x4-frame-tr,
+.x4-btn-default-toolbar-small-over .x4-frame-br,
+.x4-btn-default-toolbar-small-over .x4-frame-tc,
+.x4-btn-default-toolbar-small-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-ml,
+.x4-btn-default-toolbar-small-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-tl,
+.x4-btn-default-toolbar-small-focus .x4-frame-bl,
+.x4-btn-default-toolbar-small-focus .x4-frame-tr,
+.x4-btn-default-toolbar-small-focus .x4-frame-br,
+.x4-btn-default-toolbar-small-focus .x4-frame-tc,
+.x4-btn-default-toolbar-small-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-ml,
+.x4-btn-default-toolbar-small-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-small-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-small-pressed .x4-frame-br,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-small-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-small-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-small-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-small-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-small-disabled .x4-frame-br,
+.x4-btn-default-toolbar-small-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-small-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-small-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-menu-active,
+.x4-nlg .x4-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tr,
+.x4-btn-default-toolbar-medium-br,
+.x4-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl,
+.x4-btn-default-toolbar-medium-bl,
+.x4-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl,
+.x4-btn-default-toolbar-medium-bl,
+.x4-btn-default-toolbar-medium-tr,
+.x4-btn-default-toolbar-medium-br,
+.x4-btn-default-toolbar-medium-tc,
+.x4-btn-default-toolbar-medium-bc,
+.x4-btn-default-toolbar-medium-ml,
+.x4-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-ml,
+.x4-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-medium .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-button,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active,
+.x4-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-tl,
+.x4-btn-default-toolbar-medium-over .x4-frame-bl,
+.x4-btn-default-toolbar-medium-over .x4-frame-tr,
+.x4-btn-default-toolbar-medium-over .x4-frame-br,
+.x4-btn-default-toolbar-medium-over .x4-frame-tc,
+.x4-btn-default-toolbar-medium-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-ml,
+.x4-btn-default-toolbar-medium-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-tl,
+.x4-btn-default-toolbar-medium-focus .x4-frame-bl,
+.x4-btn-default-toolbar-medium-focus .x4-frame-tr,
+.x4-btn-default-toolbar-medium-focus .x4-frame-br,
+.x4-btn-default-toolbar-medium-focus .x4-frame-tc,
+.x4-btn-default-toolbar-medium-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-ml,
+.x4-btn-default-toolbar-medium-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-br,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-br,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-menu-active,
+.x4-nlg .x4-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tr,
+.x4-btn-default-toolbar-large-br,
+.x4-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl,
+.x4-btn-default-toolbar-large-bl,
+.x4-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl,
+.x4-btn-default-toolbar-large-bl,
+.x4-btn-default-toolbar-large-tr,
+.x4-btn-default-toolbar-large-br,
+.x4-btn-default-toolbar-large-tc,
+.x4-btn-default-toolbar-large-bc,
+.x4-btn-default-toolbar-large-ml,
+.x4-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-ml,
+.x4-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-large .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-button,
+.x4-btn-default-toolbar-large-noicon .x4-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon .x4-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active,
+.x4-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-tl,
+.x4-btn-default-toolbar-large-over .x4-frame-bl,
+.x4-btn-default-toolbar-large-over .x4-frame-tr,
+.x4-btn-default-toolbar-large-over .x4-frame-br,
+.x4-btn-default-toolbar-large-over .x4-frame-tc,
+.x4-btn-default-toolbar-large-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-ml,
+.x4-btn-default-toolbar-large-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-tl,
+.x4-btn-default-toolbar-large-focus .x4-frame-bl,
+.x4-btn-default-toolbar-large-focus .x4-frame-tr,
+.x4-btn-default-toolbar-large-focus .x4-frame-br,
+.x4-btn-default-toolbar-large-focus .x4-frame-tc,
+.x4-btn-default-toolbar-large-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-ml,
+.x4-btn-default-toolbar-large-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-large-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-large-pressed .x4-frame-br,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-large-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-large-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-large-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-large-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-large-disabled .x4-frame-br,
+.x4-btn-default-toolbar-large-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-large-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-large-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-menu-active,
+.x4-nlg .x4-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-left .x4-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-right .x4-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-top .x4-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-bottom .x4-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-cycle-fixed-width .x4-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #4c4c4c;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #98c8ff;
+  border-right-color: white;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-footer .x4-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default {
+  border-color: #99bce8;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default .x4-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default .x4-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-nlg .x4-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar .x4-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #98c8ff;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-box-menu-after,
+.x4-toolbar-vertical .x4-rtl.x4-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x4-header-draggable .x4-header-body,
+.x4-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x4-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default {
+  border-color: #99bce8;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-text-container-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-vertical .x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-right {
+  -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-left {
+  -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default .x4-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default .x4-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-ie8m .x4-panel-header-default .x4-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-resizable .x4-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-framed {
+  border-color: #99bce8;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-text-container-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mc {
+  background-color: #dfe9f6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tr,
+.x4-panel-default-framed-br,
+.x4-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl,
+.x4-panel-default-framed-bl,
+.x4-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl,
+.x4-panel-default-framed-bl,
+.x4-panel-default-framed-tr,
+.x4-panel-default-framed-br,
+.x4-panel-default-framed-tc,
+.x4-panel-default-framed-bc,
+.x4-panel-default-framed-ml,
+.x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-ml,
+.x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-default-framed-tl,
+.x4-strict .x4-ie7 .x4-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tr,
+.x4-panel-header-default-framed-top-br,
+.x4-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl,
+.x4-panel-header-default-framed-top-bl,
+.x4-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl,
+.x4-panel-header-default-framed-top-bl,
+.x4-panel-header-default-framed-top-tr,
+.x4-panel-header-default-framed-top-br,
+.x4-panel-header-default-framed-top-tc,
+.x4-panel-header-default-framed-top-bc,
+.x4-panel-header-default-framed-top-ml,
+.x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-ml,
+.x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tr,
+.x4-panel-header-default-framed-right-br,
+.x4-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl,
+.x4-panel-header-default-framed-right-bl,
+.x4-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl,
+.x4-panel-header-default-framed-right-bl,
+.x4-panel-header-default-framed-right-tr,
+.x4-panel-header-default-framed-right-br,
+.x4-panel-header-default-framed-right-tc,
+.x4-panel-header-default-framed-right-bc,
+.x4-panel-header-default-framed-right-ml,
+.x4-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc,
+.x4-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tr,
+.x4-panel-header-default-framed-bottom-br,
+.x4-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl,
+.x4-panel-header-default-framed-bottom-bl,
+.x4-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl,
+.x4-panel-header-default-framed-bottom-bl,
+.x4-panel-header-default-framed-bottom-tr,
+.x4-panel-header-default-framed-bottom-br,
+.x4-panel-header-default-framed-bottom-tc,
+.x4-panel-header-default-framed-bottom-bc,
+.x4-panel-header-default-framed-bottom-ml,
+.x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-ml,
+.x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tr,
+.x4-panel-header-default-framed-left-br,
+.x4-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl,
+.x4-panel-header-default-framed-left-bl,
+.x4-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl,
+.x4-panel-header-default-framed-left-bl,
+.x4-panel-header-default-framed-left-tr,
+.x4-panel-header-default-framed-left-br,
+.x4-panel-header-default-framed-left-tc,
+.x4-panel-header-default-framed-left-bc,
+.x4-panel-header-default-framed-left-ml,
+.x4-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc,
+.x4-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tr,
+.x4-panel-header-default-framed-collapsed-top-br,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl,
+.x4-panel-header-default-framed-collapsed-top-bl,
+.x4-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl,
+.x4-panel-header-default-framed-collapsed-top-bl,
+.x4-panel-header-default-framed-collapsed-top-tr,
+.x4-panel-header-default-framed-collapsed-top-br,
+.x4-panel-header-default-framed-collapsed-top-tc,
+.x4-panel-header-default-framed-collapsed-top-bc,
+.x4-panel-header-default-framed-collapsed-top-ml,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-ml,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tr,
+.x4-panel-header-default-framed-collapsed-right-br,
+.x4-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl,
+.x4-panel-header-default-framed-collapsed-right-bl,
+.x4-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl,
+.x4-panel-header-default-framed-collapsed-right-bl,
+.x4-panel-header-default-framed-collapsed-right-tr,
+.x4-panel-header-default-framed-collapsed-right-br,
+.x4-panel-header-default-framed-collapsed-right-tc,
+.x4-panel-header-default-framed-collapsed-right-bc,
+.x4-panel-header-default-framed-collapsed-right-ml,
+.x4-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc,
+.x4-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tr,
+.x4-panel-header-default-framed-collapsed-bottom-br,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-panel-header-default-framed-collapsed-bottom-bl,
+.x4-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-panel-header-default-framed-collapsed-bottom-bl,
+.x4-panel-header-default-framed-collapsed-bottom-tr,
+.x4-panel-header-default-framed-collapsed-bottom-br,
+.x4-panel-header-default-framed-collapsed-bottom-tc,
+.x4-panel-header-default-framed-collapsed-bottom-bc,
+.x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tr,
+.x4-panel-header-default-framed-collapsed-left-br,
+.x4-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl,
+.x4-panel-header-default-framed-collapsed-left-bl,
+.x4-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl,
+.x4-panel-header-default-framed-collapsed-left-bl,
+.x4-panel-header-default-framed-collapsed-left-tr,
+.x4-panel-header-default-framed-collapsed-left-br,
+.x4-panel-header-default-framed-collapsed-left-tc,
+.x4-panel-header-default-framed-collapsed-left-bc,
+.x4-panel-header-default-framed-collapsed-left-ml,
+.x4-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc,
+.x4-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-framed-vertical .x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-right {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-left {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed .x4-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed .x4-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-ie8m .x4-panel-header-default-framed .x4-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-framed-resizable .x4-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-content-box .x4-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mc {
+  background-color: #e9f2ff;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tr,
+.x4-tip-default-br,
+.x4-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl,
+.x4-tip-default-bl,
+.x4-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl,
+.x4-tip-default-bl,
+.x4-tip-default-tr,
+.x4-tip-default-br,
+.x4-tip-default-tc,
+.x4-tip-default-bc,
+.x4-tip-default-ml,
+.x4-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-ml,
+.x4-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tip-default-tl,
+.x4-strict .x4-ie7 .x4-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-default {
+  border-color: #8eaace;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-default .x4-tool-img {
+  background-color: #e9f2ff;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tr,
+.x4-tip-form-invalid-br,
+.x4-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl,
+.x4-tip-form-invalid-bl,
+.x4-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl,
+.x4-tip-form-invalid-bl,
+.x4-tip-form-invalid-tr,
+.x4-tip-form-invalid-br,
+.x4-tip-form-invalid-tc,
+.x4-tip-form-invalid-bc,
+.x4-tip-form-invalid-ml,
+.x4-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-ml,
+.x4-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tip-form-invalid-tl,
+.x4-strict .x4-ie7 .x4-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-form-invalid .x4-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-default {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default .x4-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default .x4-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tr,
+.x4-btn-group-default-framed-br,
+.x4-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl,
+.x4-btn-group-default-framed-bl,
+.x4-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl,
+.x4-btn-group-default-framed-bl,
+.x4-btn-group-default-framed-tr,
+.x4-btn-group-default-framed-br,
+.x4-btn-group-default-framed-tc,
+.x4-btn-group-default-framed-bc,
+.x4-btn-group-default-framed-ml,
+.x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-ml,
+.x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tr,
+.x4-btn-group-default-framed-notitle-br,
+.x4-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl,
+.x4-btn-group-default-framed-notitle-bl,
+.x4-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl,
+.x4-btn-group-default-framed-notitle-bl,
+.x4-btn-group-default-framed-notitle-tr,
+.x4-btn-group-default-framed-notitle-br,
+.x4-btn-group-default-framed-notitle-tc,
+.x4-btn-group-default-framed-notitle-bc,
+.x4-btn-group-default-framed-notitle-ml,
+.x4-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-ml,
+.x4-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-tl,
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default-framed .x4-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default-framed .x4-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-default {
+  border-color: #a2b1c5;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tr,
+.x4-window-default-br,
+.x4-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl,
+.x4-window-default-bl,
+.x4-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl,
+.x4-window-default-bl,
+.x4-window-default-tr,
+.x4-window-default-br,
+.x4-window-default-tc,
+.x4-window-default-bc,
+.x4-window-default-ml,
+.x4-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-ml,
+.x4-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-default-tl,
+.x4-strict .x4-ie7 .x4-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  border-style: solid;
+  background: #dfe8f6;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1;
+  background-color: #ced9e7;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-tool-img {
+  background-color: #ced9e7;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-window-header-default-vertical .x4-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-text-container-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tr,
+.x4-window-header-default-top-br,
+.x4-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl,
+.x4-window-header-default-top-bl,
+.x4-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl,
+.x4-window-header-default-top-bl,
+.x4-window-header-default-top-tr,
+.x4-window-header-default-top-br,
+.x4-window-header-default-top-tc,
+.x4-window-header-default-top-bc,
+.x4-window-header-default-top-ml,
+.x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-ml,
+.x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tr,
+.x4-window-header-default-right-br,
+.x4-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl,
+.x4-window-header-default-right-bl,
+.x4-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl,
+.x4-window-header-default-right-bl,
+.x4-window-header-default-right-tr,
+.x4-window-header-default-right-br,
+.x4-window-header-default-right-tc,
+.x4-window-header-default-right-bc,
+.x4-window-header-default-right-ml,
+.x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-ml,
+.x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tr,
+.x4-window-header-default-bottom-br,
+.x4-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl,
+.x4-window-header-default-bottom-bl,
+.x4-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl,
+.x4-window-header-default-bottom-bl,
+.x4-window-header-default-bottom-tr,
+.x4-window-header-default-bottom-br,
+.x4-window-header-default-bottom-tc,
+.x4-window-header-default-bottom-bc,
+.x4-window-header-default-bottom-ml,
+.x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-ml,
+.x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tr,
+.x4-window-header-default-left-br,
+.x4-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl,
+.x4-window-header-default-left-bl,
+.x4-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl,
+.x4-window-header-default-left-bl,
+.x4-window-header-default-left-tr,
+.x4-window-header-default-left-br,
+.x4-window-header-default-left-tc,
+.x4-window-header-default-left-bc,
+.x4-window-header-default-left-ml,
+.x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-ml,
+.x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tr,
+.x4-window-header-default-collapsed-top-br,
+.x4-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl,
+.x4-window-header-default-collapsed-top-bl,
+.x4-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl,
+.x4-window-header-default-collapsed-top-bl,
+.x4-window-header-default-collapsed-top-tr,
+.x4-window-header-default-collapsed-top-br,
+.x4-window-header-default-collapsed-top-tc,
+.x4-window-header-default-collapsed-top-bc,
+.x4-window-header-default-collapsed-top-ml,
+.x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-ml,
+.x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tr,
+.x4-window-header-default-collapsed-right-br,
+.x4-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl,
+.x4-window-header-default-collapsed-right-bl,
+.x4-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl,
+.x4-window-header-default-collapsed-right-bl,
+.x4-window-header-default-collapsed-right-tr,
+.x4-window-header-default-collapsed-right-br,
+.x4-window-header-default-collapsed-right-tc,
+.x4-window-header-default-collapsed-right-bc,
+.x4-window-header-default-collapsed-right-ml,
+.x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-ml,
+.x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tr,
+.x4-window-header-default-collapsed-bottom-br,
+.x4-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl,
+.x4-window-header-default-collapsed-bottom-bl,
+.x4-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl,
+.x4-window-header-default-collapsed-bottom-bl,
+.x4-window-header-default-collapsed-bottom-tr,
+.x4-window-header-default-collapsed-bottom-br,
+.x4-window-header-default-collapsed-bottom-tc,
+.x4-window-header-default-collapsed-bottom-bc,
+.x4-window-header-default-collapsed-bottom-ml,
+.x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-ml,
+.x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tr,
+.x4-window-header-default-collapsed-left-br,
+.x4-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl,
+.x4-window-header-default-collapsed-left-bl,
+.x4-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl,
+.x4-window-header-default-collapsed-left-bl,
+.x4-window-header-default-collapsed-left-tr,
+.x4-window-header-default-collapsed-left-br,
+.x4-window-header-default-collapsed-left-tc,
+.x4-window-header-default-collapsed-left-bc,
+.x4-window-header-default-collapsed-left-ml,
+.x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-ml,
+.x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-top {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-right {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-bottom {
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-left {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-window-header-glyph {
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-ie8m .x4-window-header-default .x4-window-header-glyph {
+  color: #698fb9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-default-collapsed .x4-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-nbr .x4-window-default-collapsed .x4-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x4-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-toolbar-item .x4-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-autocontainer-form-item,
+.x4-anchor-form-item,
+.x4-vbox-form-item,
+.x4-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-ie6 .x4-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-ie6 td.x4-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-item,
+.x4-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-type-text textarea.x4-form-invalid-field, .x4-form-type-text input.x4-form-invalid-field,
+.x4-form-type-password textarea.x4-form-invalid-field,
+.x4-form-type-password input.x4-form-invalid-field,
+.x4-form-type-number textarea.x4-form-invalid-field,
+.x4-form-type-number input.x4-form-invalid-field,
+.x4-form-type-email textarea.x4-form-invalid-field,
+.x4-form-type-email input.x4-form-invalid-field,
+.x4-form-type-search textarea.x4-form-invalid-field,
+.x4-form-type-search input.x4-form-invalid-field,
+.x4-form-type-tel textarea.x4-form-invalid-field,
+.x4-form-type-tel input.x4-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-item-disabled .x4-form-item-label,
+.x4-item-disabled .x4-form-field,
+.x4-item-disabled .x4-form-display-field,
+.x4-item-disabled .x4-form-cb-label,
+.x4-item-disabled .x4-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-field-toolbar .x4-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-content-box .x4-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-content-box .x4-field-toolbar .x4-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-focus {
+  border-color: #7eadd9;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-empty-field,
+textarea.x4-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-quirks .x4-ie .x4-form-text,
+.x4-ie7m .x4-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x4-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-toolbar-item .x4-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-toolbar-item .x4-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box .x4-window-body {
+  background-color: #ced9e7;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-info,
+.x4-message-box-warning,
+.x4-message-box-question,
+.x4-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-checked .x4-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-checked .x4-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-invalid .x4-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie8m .x4-fieldset,
+.x4-quirks .x4-ie .x4-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie8m .x4-fieldset .x4-fieldset-body,
+.x4-quirks .x4-ie .x4-fieldset .x4-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-with-title .x4-fieldset-header-checkbox,
+.x4-fieldset-with-title .x4-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-webkit .x4-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-opera .x4-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-opera.x4-mac .x4-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-strict .x4-ie8 .x4-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-quirks .x4-ie .x4-fieldset-header,
+.x4-ie8m .x4-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie6 .x4-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset .x4-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-cb-checked .x4-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-cb-checked .x4-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #7eadd9;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger {
+  background-position: -51px 0;
+  border-color: #7eadd9;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-click,
+.x4-form-trigger-wrap-focus .x4-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-quirks .prefixie6 .x4-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-quirks .prefixie6 .x4-field-toolbar .x4-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x4-form-spinner-up,
+div.x4-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item div.x4-form-spinner-up,
+.x4-toolbar-item div.x4-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-strict .x4-ie7m .x4-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #23427c;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn,
+.x4-datepicker-month .x4-btn .x4-btn-tc,
+.x4-datepicker-month .x4-btn .x4-btn-tl,
+.x4-datepicker-month .x4-btn .x4-btn-tr,
+.x4-datepicker-month .x4-btn .x4-btn-mc,
+.x4-datepicker-month .x4-btn .x4-btn-ml,
+.x4-datepicker-month .x4-btn .x4-btn-mr,
+.x4-datepicker-month .x4-btn .x4-btn-bc,
+.x4-datepicker-month .x4-btn .x4-btn-bl,
+.x4-datepicker-month .x4-btn .x4-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-column-header {
+  width: 25px;
+  color: #233d6d;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+  background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: linear-gradient(top, #edf4fd, #cde1f9);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-datepicker-date:hover {
+  color: black;
+  background-color: #ddecfe;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-selected {
+  border-style: solid;
+  border-color: #8db2e3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-selected .x4-datepicker-date {
+  background-color: #dae5f3;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-prevday .x4-datepicker-date,
+.x4-datepicker-nextday .x4-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-disabled a.x4-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-disabled a.x4-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-footer,
+.x4-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-footer .x4-btn,
+.x4-monthpicker-buttons .x4-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #1b376c;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-months .x4-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-years .x4-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #15428b;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-monthpicker-item-inner:hover {
+  background-color: #ddecfe;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-selected {
+  background-color: #dae5f3;
+  border-style: solid;
+  border-color: #8db2e3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-nlg .x4-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-nlg .x4-datepicker-footer,
+.x4-nlg .x4-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x4-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x4-form-file-wrap .x4-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-content-box .x4-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x4-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-bold,
+.x4-menu-item div.x4-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-italic,
+.x4-menu-item div.x4-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-underline,
+.x4-menu-item div.x4-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-forecolor,
+.x4-menu-item div.x4-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-backcolor,
+.x4-menu-item div.x4-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifyleft,
+.x4-menu-item div.x4-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifycenter,
+.x4-menu-item div.x4-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifyright,
+.x4-menu-item div.x4-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-insertorderedlist,
+.x4-menu-item div.x4-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-insertunorderedlist,
+.x4-menu-item div.x4-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-increasefontsize,
+.x4-menu-item div.x4-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-decreasefontsize,
+.x4-menu-item div.x4-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-sourceedit,
+.x4-menu-item div.x4-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-createlink,
+.x4-menu-item div.x4-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-alt .x4-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-over .x4-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-over .x4-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-selected .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-focused .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-over .x4-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-td {
+  background-color: #dfe8f6;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-table .x4-grid-row-focused-first .x4-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-row-summary .x4-grid-td {
+  border-bottom-color: #dfe8f6;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-row-summary .x4-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #a3bae9;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-body .x4-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell-special {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-cell-special {
+  border-right-color: #ededed #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-nlg .x4-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-nlg .x4-grid-row-selected .x4-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-cell-special .x4-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-cell-special .x4-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row .x4-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-col-lines .x4-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator .x4-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator .x4-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-ie6 .x4-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-ie6 .x4-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-grid-header-ct {
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-accordion-item .x4-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-accordion-item .x4-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-hmenu-sort-asc .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-hmenu-sort-desc .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-cols-icon .x4-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-group-sub-header .x4-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-over,
+.x4-column-header-sort-ASC,
+.x4-column-header-sort-DESC {
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-nlg .x4-grid-header-ct,
+.x4-nlg .x4-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-nlg .x4-column-header-over,
+.x4-nlg .x4-column-header-sort-ASC,
+.x4-nlg .x4-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-open .x4-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-align-right .x4-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-ASC .x4-column-header-text,
+.x4-column-header-sort-DESC .x4-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-ASC .x4-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-DESC .x4-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-action-col-cell .x4-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-item-disabled .x4-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x4-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #99bbe8;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-collapsible .x4-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-title {
+  color: #3764a0;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-collapsed .x4-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-collapsed .x4-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x4-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x4-grid-rowwrap {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-docked-summary {
+  border-width: 1px;
+  border-color: #99bce8;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-docked-summary .x4-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-grid-row-summary .x4-grid-cell,
+.x4-grid-row-summary .x4-grid-rowwrap,
+.x4-grid-row-summary .x4-grid-cell-rowbody {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-grid-with-row-lines .x4-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-locked .x4-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-inner-locked .x4-column-header-last,
+.x4-grid-inner-locked .x4-grid-cell-last {
+  border-right-width: 0!important;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-hmenu-lock .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-hmenu-unlock .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-gecko .x4-grid-editor .x4-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-spinner-up, .x4-grid-editor .x4-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x4-tree-cell-editor .x4-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x4-gecko .x4-tree-cell-editor .x4-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-gecko .x4-grid-row-editor .x4-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-panel-body {
+  border-top: 1px solid #99bce8 !important;
+  border-bottom: 1px solid #99bce8 !important;
+  padding: 4px 0 4px 0;
+  background-color: #eaf1fb;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-with-col-lines .x4-grid-row-editor .x4-form-cb {
+  margin-right: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tr,
+.x4-grid-row-editor-buttons-default-bottom-br,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-grid-row-editor-buttons-default-bottom-bl,
+.x4-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-grid-row-editor-buttons-default-bottom-bl,
+.x4-grid-row-editor-buttons-default-bottom-tr,
+.x4-grid-row-editor-buttons-default-bottom-br,
+.x4-grid-row-editor-buttons-default-bottom-tc,
+.x4-grid-row-editor-buttons-default-bottom-bc,
+.x4-grid-row-editor-buttons-default-bottom-ml,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-ml,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tr,
+.x4-grid-row-editor-buttons-default-top-br,
+.x4-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl,
+.x4-grid-row-editor-buttons-default-top-bl,
+.x4-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl,
+.x4-grid-row-editor-buttons-default-top-bl,
+.x4-grid-row-editor-buttons-default-top-tr,
+.x4-grid-row-editor-buttons-default-top-br,
+.x4-grid-row-editor-buttons-default-top-tc,
+.x4-grid-row-editor-buttons-default-top-bc,
+.x4-grid-row-editor-buttons-default-top-ml,
+.x4-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-ml,
+.x4-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-tl,
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons {
+  border-color: #99bce8;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-errors .x4-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-collapsed .x4-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x4-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd {
+  background: #d9e7f8;
+  border-top-color: #f3f7fb;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-collapse-top,
+.x4-accordion-hd .x4-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-expand-top,
+.x4-accordion-hd .x4-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,
+.x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-over .x4-tool-expand-top,
+.x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-img {
+  background-color: #d9e7f8;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-left,
+.x4-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-top,
+.x4-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-active .x4-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  background-color: #dfe8f6;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-active {
+  background-image: none;
+  background-color: #d9e8fb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+  background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+  border-color: #a9cbf5;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-nlg .x4-menu-item-active {
+  background: #d9e8fb repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie8m .x4-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-menu-item-icon,
+.x4-quirks .x4-menu-item-active .x4-menu-item-icon,
+.x4-ie9m .x4-menu-item-active .x4-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-checked .x4-menu-item-icon, .x4-menu-item-checked .x4-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-checked .x4-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-unchecked .x4-menu-item-icon, .x4-menu-item-unchecked .x4-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-unchecked .x4-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-menu-item-arrow,
+.x4-quirks .x4-menu-item-active .x4-menu-item-arrow,
+.x4-ie9m .x4-menu-item-active .x4-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-content-box .x4-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-content-box .x4-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item .x4-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-top, .x4-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-panel-collapsed .x4-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-bottom,
+.x4-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-top,
+.x4-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-left,
+.x4-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-right,
+.x4-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-panel-collapsed .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-bottom,
+.x4-tool-over .x4-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-top,
+.x4-tool-over .x4-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-left,
+.x4-tool-over .x4-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-right,
+.x4-tool-over .x4-tool-collapse-right {
+  background-position: -15px -165px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-collapsed .x4-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-ie .x4-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-ie .x4-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-pinned .x4-resizable-handle,
+.x4-resizable-over .x4-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-window .x4-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-window-collapsed .x4-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east,
+.x4-resizable-over .x4-resizable-handle-west,
+.x4-resizable-pinned .x4-resizable-handle-east,
+.x4-resizable-pinned .x4-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south,
+.x4-resizable-over .x4-resizable-handle-north,
+.x4-resizable-pinned .x4-resizable-handle-south,
+.x4-resizable-pinned .x4-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast,
+.x4-resizable-pinned .x4-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest,
+.x4-resizable-pinned .x4-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast,
+.x4-resizable-pinned .x4-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest,
+.x4-resizable-pinned .x4-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-form-item .x4-slider-horz,
+.x4-ie7 .x4-form-item .x4-slider-horz,
+.x4-quirks .x4-ie .x4-form-item .x4-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz,
+.x4-slider-horz .x4-slider-end,
+.x4-slider-horz .x4-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert,
+.x4-slider-vert .x4-slider-end,
+.x4-slider-vert .x4-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tr,
+.x4-tab-default-top-br,
+.x4-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl,
+.x4-tab-default-top-bl,
+.x4-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl,
+.x4-tab-default-top-bl,
+.x4-tab-default-top-tr,
+.x4-tab-default-top-br,
+.x4-tab-default-top-tc,
+.x4-tab-default-top-bc,
+.x4-tab-default-top-ml,
+.x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-ml,
+.x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-top-tl,
+.x4-strict .x4-ie7 .x4-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tr,
+.x4-tab-default-bottom-br,
+.x4-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl,
+.x4-tab-default-bottom-bl,
+.x4-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl,
+.x4-tab-default-bottom-bl,
+.x4-tab-default-bottom-tr,
+.x4-tab-default-bottom-br,
+.x4-tab-default-bottom-tc,
+.x4-tab-default-bottom-bc,
+.x4-tab-default-bottom-ml,
+.x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-ml,
+.x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tr,
+.x4-tab-default-left-br,
+.x4-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl,
+.x4-tab-default-left-bl,
+.x4-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl,
+.x4-tab-default-left-bl,
+.x4-tab-default-left-tr,
+.x4-tab-default-left-br,
+.x4-tab-default-left-tc,
+.x4-tab-default-left-bc,
+.x4-tab-default-left-ml,
+.x4-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-ml,
+.x4-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-left-tl,
+.x4-strict .x4-ie7 .x4-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tr,
+.x4-tab-default-right-br,
+.x4-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl,
+.x4-tab-default-right-bl,
+.x4-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl,
+.x4-tab-default-right-bl,
+.x4-tab-default-right-tr,
+.x4-tab-default-right-br,
+.x4-tab-default-right-tc,
+.x4-tab-default-right-bc,
+.x4-tab-default-right-ml,
+.x4-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-ml,
+.x4-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-right-tl,
+.x4-strict .x4-ie7 .x4-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default {
+  border-color: #8db3e3;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #416da3;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-glyph {
+  font-size: 16px;
+  color: #416da3;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default .x4-tab-glyph {
+  color: #8facd0;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-icon .x4-tab-inner {
+  width: 16px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top,
+.x4-tab-default-left,
+.x4-tab-default-right {
+  border-bottom: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top, .x4-nlg
+.x4-tab-default-left, .x4-nlg
+.x4-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom {
+  border-top: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-icon-text-left .x4-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-over {
+  background-color: #e8f2ff;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-over .x4-tab-glyph {
+  color: #416da3;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-over .x4-tab-glyph {
+  color: #94afd1;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over,
+.x4-tab-default-left-over,
+.x4-tab-default-right-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-over, .x4-nlg
+.x4-tab-default-left-over, .x4-nlg
+.x4-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active {
+  background-color: #deecfd;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active .x4-tab-inner {
+  color: #15498b;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active .x4-tab-glyph {
+  color: #15498b;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-active .x4-tab-glyph {
+  color: #799ac4;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active,
+.x4-tab-default-left-active,
+.x4-tab-default-right-active {
+  border-bottom: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-active, .x4-nlg
+.x4-tab-default-left-active, .x4-nlg
+.x4-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active {
+  border-top: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled {
+  border-color: #bbd2ef;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-disabled .x4-tab-glyph {
+  color: #d8dae4;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled,
+.x4-tab-default-left-disabled,
+.x4-tab-default-right-disabled {
+  border-color: #bbd2ef #bbd2ef #99bce8;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled {
+  border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled,
+.x4-tab-default-left-disabled,
+.x4-tab-default-right-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-disabled, .x4-nlg
+.x4-tab-default-left-disabled, .x4-nlg
+.x4-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-tl,
+.x4-tab-default-top-over .x4-frame-bl,
+.x4-tab-default-top-over .x4-frame-tr,
+.x4-tab-default-top-over .x4-frame-br,
+.x4-tab-default-top-over .x4-frame-tc,
+.x4-tab-default-top-over .x4-frame-bc,
+.x4-tab-default-left-over .x4-frame-tl,
+.x4-tab-default-left-over .x4-frame-bl,
+.x4-tab-default-left-over .x4-frame-tr,
+.x4-tab-default-left-over .x4-frame-br,
+.x4-tab-default-left-over .x4-frame-tc,
+.x4-tab-default-left-over .x4-frame-bc,
+.x4-tab-default-right-over .x4-frame-tl,
+.x4-tab-default-right-over .x4-frame-bl,
+.x4-tab-default-right-over .x4-frame-tr,
+.x4-tab-default-right-over .x4-frame-br,
+.x4-tab-default-right-over .x4-frame-tc,
+.x4-tab-default-right-over .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-ml,
+.x4-tab-default-top-over .x4-frame-mr,
+.x4-tab-default-left-over .x4-frame-ml,
+.x4-tab-default-left-over .x4-frame-mr,
+.x4-tab-default-right-over .x4-frame-ml,
+.x4-tab-default-right-over .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-mc,
+.x4-tab-default-left-over .x4-frame-mc,
+.x4-tab-default-right-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-tl,
+.x4-tab-default-bottom-over .x4-frame-bl,
+.x4-tab-default-bottom-over .x4-frame-tr,
+.x4-tab-default-bottom-over .x4-frame-br,
+.x4-tab-default-bottom-over .x4-frame-tc,
+.x4-tab-default-bottom-over .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-ml,
+.x4-tab-default-bottom-over .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-tl,
+.x4-tab-default-top-active .x4-frame-bl,
+.x4-tab-default-top-active .x4-frame-tr,
+.x4-tab-default-top-active .x4-frame-br,
+.x4-tab-default-top-active .x4-frame-tc,
+.x4-tab-default-top-active .x4-frame-bc,
+.x4-tab-default-left-active .x4-frame-tl,
+.x4-tab-default-left-active .x4-frame-bl,
+.x4-tab-default-left-active .x4-frame-tr,
+.x4-tab-default-left-active .x4-frame-br,
+.x4-tab-default-left-active .x4-frame-tc,
+.x4-tab-default-left-active .x4-frame-bc,
+.x4-tab-default-right-active .x4-frame-tl,
+.x4-tab-default-right-active .x4-frame-bl,
+.x4-tab-default-right-active .x4-frame-tr,
+.x4-tab-default-right-active .x4-frame-br,
+.x4-tab-default-right-active .x4-frame-tc,
+.x4-tab-default-right-active .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-ml,
+.x4-tab-default-top-active .x4-frame-mr,
+.x4-tab-default-left-active .x4-frame-ml,
+.x4-tab-default-left-active .x4-frame-mr,
+.x4-tab-default-right-active .x4-frame-ml,
+.x4-tab-default-right-active .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-mc,
+.x4-tab-default-left-active .x4-frame-mc,
+.x4-tab-default-right-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-tl,
+.x4-tab-default-bottom-active .x4-frame-bl,
+.x4-tab-default-bottom-active .x4-frame-tr,
+.x4-tab-default-bottom-active .x4-frame-br,
+.x4-tab-default-bottom-active .x4-frame-tc,
+.x4-tab-default-bottom-active .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-ml,
+.x4-tab-default-bottom-active .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-tl,
+.x4-tab-default-top-disabled .x4-frame-bl,
+.x4-tab-default-top-disabled .x4-frame-tr,
+.x4-tab-default-top-disabled .x4-frame-br,
+.x4-tab-default-top-disabled .x4-frame-tc,
+.x4-tab-default-top-disabled .x4-frame-bc,
+.x4-tab-default-left-disabled .x4-frame-tl,
+.x4-tab-default-left-disabled .x4-frame-bl,
+.x4-tab-default-left-disabled .x4-frame-tr,
+.x4-tab-default-left-disabled .x4-frame-br,
+.x4-tab-default-left-disabled .x4-frame-tc,
+.x4-tab-default-left-disabled .x4-frame-bc,
+.x4-tab-default-right-disabled .x4-frame-tl,
+.x4-tab-default-right-disabled .x4-frame-bl,
+.x4-tab-default-right-disabled .x4-frame-tr,
+.x4-tab-default-right-disabled .x4-frame-br,
+.x4-tab-default-right-disabled .x4-frame-tc,
+.x4-tab-default-right-disabled .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-ml,
+.x4-tab-default-top-disabled .x4-frame-mr,
+.x4-tab-default-left-disabled .x4-frame-ml,
+.x4-tab-default-left-disabled .x4-frame-mr,
+.x4-tab-default-right-disabled .x4-frame-ml,
+.x4-tab-default-right-disabled .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-mc,
+.x4-tab-default-left-disabled .x4-frame-mc,
+.x4-tab-default-right-disabled .x4-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-tl,
+.x4-tab-default-bottom-disabled .x4-frame-bl,
+.x4-tab-default-bottom-disabled .x4-frame-tr,
+.x4-tab-default-bottom-disabled .x4-frame-br,
+.x4-tab-default-bottom-disabled .x4-frame-tc,
+.x4-tab-default-bottom-disabled .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-ml,
+.x4-tab-default-bottom-disabled .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default-top,
+.x4-nbr .x4-tab-default-left,
+.x4-nbr .x4-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-closable .x4-tab-wrap {
+  padding-right: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default {
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #99bce8;
+  background-color: #deecfd;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default {
+  background-color: #cbdbef;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: linear-gradient(bottom, #dde8f5, #cbdbef);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: linear-gradient(left, #dde8f5, #cbdbef);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: linear-gradient(right, #dde8f5, #cbdbef);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-left,
+.x4-tab-bar-default .x4-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-top,
+.x4-tab-bar-default .x4-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-box-scroller {
+  margin-left: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-left-hover,
+.x4-tab-bar-default .x4-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-top-hover,
+.x4-tab-bar-default .x4-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-row-checker,
+.x4-column-header-checkbox .x4-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox .x4-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-hd-checker-on .x4-column-header-text,
+.x4-grid-row-selected .x4-grid-row-checker,
+.x4-grid-row-checked .x4-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-expander {
+  background-position: -48px center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon,
+.x4-tree-elbow-img,
+.x4-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-node-expanded .x4-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-loading .x4-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-append .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-above .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-below .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-between .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl, .x4-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr, .x4-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-bl, .x4-box-blue .x4-box-br, .x4-box-blue .x4-box-tl, .x4-box-blue .x4-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-bc, .x4-box-blue .x4-box-mc, .x4-box-blue .x4-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x4-message-box .x4-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-content-box .x4-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-field-toolbar .x4-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-content-box .x4-field-toolbar .x4-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x4-content-box div.x4-form-spinner-up,
+.x4-content-box div.x4-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x4-content-box .x4-toolbar-item div.x4-form-spinner-up,
+.x4-content-box .x4-toolbar-item div.x4-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-wrap .x4-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-spinner-up, .x4-grid-editor .x4-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-spinner-up, .x4-content-box .x4-grid-editor .x4-form-spinner-down {
+  height: 9px;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east,
+.x4-resizable-over .x4-resizable-handle-west,
+.x4-resizable-pinned .x4-resizable-handle-east,
+.x4-resizable-pinned .x4-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south,
+.x4-resizable-over .x4-resizable-handle-north,
+.x4-resizable-pinned .x4-resizable-handle-south,
+.x4-resizable-pinned .x4-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast,
+.x4-resizable-pinned .x4-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest,
+.x4-resizable-pinned .x4-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast,
+.x4-resizable-pinned .x4-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest,
+.x4-resizable-pinned .x4-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-horz,
+.x4-ie6 .x4-slider-horz .x4-slider-end,
+.x4-ie6 .x4-slider-horz .x4-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-horz .x4-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-vert,
+.x4-ie6 .x4-slider-vert .x4-slider-end,
+.x4-ie6 .x4-slider-vert .x4-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-vert .x4-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x4-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x4-tab-noicon .x4-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,20929 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-classic-sandbox */
+/* including package ext-theme-classic-sandbox */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/*
+ * Although this file only contains a variable, all vars are included by default
+ * in application sass builds, so this needs to be in the rule file section
+ * to allow javascript inclusion filtering to disable it.
+ */
+/**
+ * @var {boolean} $include-rtl
+ * True to include right-to-left style rules.  This variable gets set to true automatically
+ * for rtl builds. You should not need to ever assign a value to this variable, however
+ * it can be used to suppress rtl-specific rules when they are not needed.  For example:
+ *     @if $include-rtl {
+ *         .x-rtl.foo {
+ *             margin-left: $margin-right;
+ *             margin-right: $margin-left;
+ *         }
+ *     }
+ * @member Global_CSS
+ */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-border-box,
+.x4-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-strict .x4-ie7 .x4-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ie6 .x4-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hidden,
+.x4-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-tl,
+.x4-frame-tr,
+.x4-frame-tc,
+.x4-frame-bl,
+.x4-frame-br,
+.x4-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-tc,
+.x4-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x4-item-disabled,
+.x4-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x4-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x4-rtl > .x4-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x4-ie6 .x4-rtl .x4-box-item,
+.x4-quirks .x4-ie .x4-rtl .x4-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x4-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x4-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x4-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-left {
+  text-align: left;
+}
+
+/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-rtl.x4-btn-inner-left {
+  text-align: right;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-btn-inner-right {
+  text-align: right;
+}
+
+/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x4-rtl.x4-btn-inner-right {
+  text-align: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-rtl.x4-box-target {
+  left: auto;
+  right: 0;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller-left,
+.x4-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-scroller-top .x4-box-scroller,
+.x4-box-scroller-bottom .x4-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-box-menu-after {
+  float: right;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x4-rtl.x4-box-menu-after {
+  float: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x4-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x4-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x4-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x4-rtl.x4-header-text-container {
+  -o-text-overflow: clip;
+  text-overflow: clip;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x4-dd-drag-proxy,
+.x4-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-repair .x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-repair .x4-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-rtl .x4-dd-drag-ghost {
+  padding-left: 5px;
+  padding-right: 20px;
+}
+/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-rtl .x4-dd-drop-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-ok .x4-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-ok-add .x4-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x4-dd-drop-nodrop div.x4-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel,
+.x4-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-ie .x4-panel-header,
+.x4-ie .x4-panel-header-tl,
+.x4-ie .x4-panel-header-tc,
+.x4-ie .x4-panel-header-tr,
+.x4-ie .x4-panel-header-ml,
+.x4-ie .x4-panel-header-mc,
+.x4-ie .x4-panel-header-mr,
+.x4-ie .x4-panel-header-bl,
+.x4-ie .x4-panel-header-bc,
+.x4-ie .x4-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-ie8 td.x4-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-vertical .x4-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x4-panel-header-plain,
+.x4-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x4-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x4-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body .x4-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x4-viewport, .x4-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window .x4-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x4-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x4-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x4-safari.x4-mac .x4-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x4-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-item,
+.x4-fieldset-header .x4-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb {
+  margin: 0;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-rtl.x4-fieldset-header .x4-form-item,
+.x4-rtl.x4-fieldset-header .x4-tool {
+  float: right;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-item-body {
+  position: relative;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-rtl.x4-form-item .x4-form-item-input-row {
+  position: relative;
+  right: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x4-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-item-disabled .x4-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x4-form-spinner-up,
+.x4-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-months,
+.x4-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x4-strict .x4-ie6 .x4-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x4-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x4-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x4-rtl.x4-form-file-input {
+  right: auto;
+  left: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x4-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x4-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x4-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x4-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x4-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-row,
+.x4-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x4-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x4-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header-trigger {
+  left: 0;
+  right: auto;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-over .x4-column-header-trigger, .x4-column-header-open .x4-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-right {
+  text-align: right;
+}
+
+/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header-align-right {
+  text-align: left;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-left {
+  text-align: left;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header-align-left {
+  text-align: right;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x4-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x4-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x4-row-numberer .x4-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group,
+.x4-grid-group-body,
+.x4-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x4-grid-row-body-hidden, .x4-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x4-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x4-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x4-grid-rowwrap .x4-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x4-grid-rowwrap .x4-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor div.x4-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x4-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x4-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed,
+.x4-splitter-horizontal-noresize,
+.x4-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x4-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x4-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-column {
+  float: left;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-rtl > .x4-column {
+  float: right;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-ie6 .x4-rtl .x4-column, .x4-quirks .x4-ie .x4-rtl .x4-column {
+  float: right;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-ie6 .x4-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x4-quirks .x4-ie .x4-form-layout-table, .x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x4-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x4-ie6 .x4-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-cmp .x4-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-plain .x4-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x4-menu-item-icon,
+.x4-menu-item-icon-right,
+.x4-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x4-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x4-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x4-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox .x4-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x4-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-horizontal .x4-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-vertical .x4-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-rtl.x4-tab-bar .x4-tab-bar-strip-left {
+  right: auto;
+  left: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-rtl.x4-tab-bar .x4-tab-bar-strip-right {
+  left: auto;
+  right: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-rtl.x4-tab-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x4-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-autowidth-table .x4-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-elbow-img,
+.x4-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x4-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x4-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x4-animating-size,
+.x4-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x4-editor .x4-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom,
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #a3bad9;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x4-rtl.x4-mask-msg-text {
+  padding: 5px 20px 5px 5px;
+  background-position: right center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default {
+  background-color: #e0e8f3;
+  border-width: 1px;
+  height: 20px;
+  border-color: #6594cf;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-content-box .x4-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-bar-default {
+  background-image: none;
+  background-color: #73a3e0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+  background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-nlg .x4-progress-default .x4-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x4-progress-default .x4-progress-text-back {
+  color: #396295;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-progress-default .x4-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tr,
+.x4-btn-default-small-br,
+.x4-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl,
+.x4-btn-default-small-bl,
+.x4-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-tl,
+.x4-btn-default-small-bl,
+.x4-btn-default-small-tr,
+.x4-btn-default-small-br,
+.x4-btn-default-small-tc,
+.x4-btn-default-small-bc,
+.x4-btn-default-small-ml,
+.x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-ml,
+.x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-small .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-button,
+.x4-btn-default-small-noicon .x4-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-inner,
+.x4-btn-default-small-noicon .x4-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon .x4-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active,
+.x4-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-tl,
+.x4-btn-default-small-over .x4-frame-bl,
+.x4-btn-default-small-over .x4-frame-tr,
+.x4-btn-default-small-over .x4-frame-br,
+.x4-btn-default-small-over .x4-frame-tc,
+.x4-btn-default-small-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-ml,
+.x4-btn-default-small-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-tl,
+.x4-btn-default-small-focus .x4-frame-bl,
+.x4-btn-default-small-focus .x4-frame-tr,
+.x4-btn-default-small-focus .x4-frame-br,
+.x4-btn-default-small-focus .x4-frame-tc,
+.x4-btn-default-small-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-ml,
+.x4-btn-default-small-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-tl,
+.x4-btn-default-small-menu-active .x4-frame-bl,
+.x4-btn-default-small-menu-active .x4-frame-tr,
+.x4-btn-default-small-menu-active .x4-frame-br,
+.x4-btn-default-small-menu-active .x4-frame-tc,
+.x4-btn-default-small-menu-active .x4-frame-bc,
+.x4-btn-default-small-pressed .x4-frame-tl,
+.x4-btn-default-small-pressed .x4-frame-bl,
+.x4-btn-default-small-pressed .x4-frame-tr,
+.x4-btn-default-small-pressed .x4-frame-br,
+.x4-btn-default-small-pressed .x4-frame-tc,
+.x4-btn-default-small-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-ml,
+.x4-btn-default-small-menu-active .x4-frame-mr,
+.x4-btn-default-small-pressed .x4-frame-ml,
+.x4-btn-default-small-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-menu-active .x4-frame-mc,
+.x4-btn-default-small-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-tl,
+.x4-btn-default-small-disabled .x4-frame-bl,
+.x4-btn-default-small-disabled .x4-frame-tr,
+.x4-btn-default-small-disabled .x4-frame-br,
+.x4-btn-default-small-disabled .x4-frame-tc,
+.x4-btn-default-small-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-ml,
+.x4-btn-default-small-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-menu-active,
+.x4-nlg .x4-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-small-disabled .x4-btn-inner,
+.x4-btn-default-small-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tr,
+.x4-btn-default-medium-br,
+.x4-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl,
+.x4-btn-default-medium-bl,
+.x4-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-tl,
+.x4-btn-default-medium-bl,
+.x4-btn-default-medium-tr,
+.x4-btn-default-medium-br,
+.x4-btn-default-medium-tc,
+.x4-btn-default-medium-bc,
+.x4-btn-default-medium-ml,
+.x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-ml,
+.x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-medium .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-button,
+.x4-btn-default-medium-noicon .x4-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-inner,
+.x4-btn-default-medium-noicon .x4-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon .x4-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active,
+.x4-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-tl,
+.x4-btn-default-medium-over .x4-frame-bl,
+.x4-btn-default-medium-over .x4-frame-tr,
+.x4-btn-default-medium-over .x4-frame-br,
+.x4-btn-default-medium-over .x4-frame-tc,
+.x4-btn-default-medium-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-ml,
+.x4-btn-default-medium-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-tl,
+.x4-btn-default-medium-focus .x4-frame-bl,
+.x4-btn-default-medium-focus .x4-frame-tr,
+.x4-btn-default-medium-focus .x4-frame-br,
+.x4-btn-default-medium-focus .x4-frame-tc,
+.x4-btn-default-medium-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-ml,
+.x4-btn-default-medium-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-tl,
+.x4-btn-default-medium-menu-active .x4-frame-bl,
+.x4-btn-default-medium-menu-active .x4-frame-tr,
+.x4-btn-default-medium-menu-active .x4-frame-br,
+.x4-btn-default-medium-menu-active .x4-frame-tc,
+.x4-btn-default-medium-menu-active .x4-frame-bc,
+.x4-btn-default-medium-pressed .x4-frame-tl,
+.x4-btn-default-medium-pressed .x4-frame-bl,
+.x4-btn-default-medium-pressed .x4-frame-tr,
+.x4-btn-default-medium-pressed .x4-frame-br,
+.x4-btn-default-medium-pressed .x4-frame-tc,
+.x4-btn-default-medium-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-ml,
+.x4-btn-default-medium-menu-active .x4-frame-mr,
+.x4-btn-default-medium-pressed .x4-frame-ml,
+.x4-btn-default-medium-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-menu-active .x4-frame-mc,
+.x4-btn-default-medium-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-tl,
+.x4-btn-default-medium-disabled .x4-frame-bl,
+.x4-btn-default-medium-disabled .x4-frame-tr,
+.x4-btn-default-medium-disabled .x4-frame-br,
+.x4-btn-default-medium-disabled .x4-frame-tc,
+.x4-btn-default-medium-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-ml,
+.x4-btn-default-medium-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-menu-active,
+.x4-nlg .x4-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-medium-disabled .x4-btn-inner,
+.x4-btn-default-medium-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tr,
+.x4-btn-default-large-br,
+.x4-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl,
+.x4-btn-default-large-bl,
+.x4-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-tl,
+.x4-btn-default-large-bl,
+.x4-btn-default-large-tr,
+.x4-btn-default-large-br,
+.x4-btn-default-large-tc,
+.x4-btn-default-large-bc,
+.x4-btn-default-large-ml,
+.x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-ml,
+.x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-large .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-button,
+.x4-btn-default-large-noicon .x4-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-inner,
+.x4-btn-default-large-noicon .x4-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon .x4-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active,
+.x4-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-tl,
+.x4-btn-default-large-over .x4-frame-bl,
+.x4-btn-default-large-over .x4-frame-tr,
+.x4-btn-default-large-over .x4-frame-br,
+.x4-btn-default-large-over .x4-frame-tc,
+.x4-btn-default-large-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-ml,
+.x4-btn-default-large-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-tl,
+.x4-btn-default-large-focus .x4-frame-bl,
+.x4-btn-default-large-focus .x4-frame-tr,
+.x4-btn-default-large-focus .x4-frame-br,
+.x4-btn-default-large-focus .x4-frame-tc,
+.x4-btn-default-large-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-ml,
+.x4-btn-default-large-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-tl,
+.x4-btn-default-large-menu-active .x4-frame-bl,
+.x4-btn-default-large-menu-active .x4-frame-tr,
+.x4-btn-default-large-menu-active .x4-frame-br,
+.x4-btn-default-large-menu-active .x4-frame-tc,
+.x4-btn-default-large-menu-active .x4-frame-bc,
+.x4-btn-default-large-pressed .x4-frame-tl,
+.x4-btn-default-large-pressed .x4-frame-bl,
+.x4-btn-default-large-pressed .x4-frame-tr,
+.x4-btn-default-large-pressed .x4-frame-br,
+.x4-btn-default-large-pressed .x4-frame-tc,
+.x4-btn-default-large-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-ml,
+.x4-btn-default-large-menu-active .x4-frame-mr,
+.x4-btn-default-large-pressed .x4-frame-ml,
+.x4-btn-default-large-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-menu-active .x4-frame-mc,
+.x4-btn-default-large-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-tl,
+.x4-btn-default-large-disabled .x4-frame-bl,
+.x4-btn-default-large-disabled .x4-frame-tr,
+.x4-btn-default-large-disabled .x4-frame-br,
+.x4-btn-default-large-disabled .x4-frame-tc,
+.x4-btn-default-large-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-ml,
+.x4-btn-default-large-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-menu-active,
+.x4-nlg .x4-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-large-disabled .x4-btn-inner,
+.x4-btn-default-large-disabled .x4-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tr,
+.x4-btn-default-toolbar-small-br,
+.x4-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl,
+.x4-btn-default-toolbar-small-bl,
+.x4-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-tl,
+.x4-btn-default-toolbar-small-bl,
+.x4-btn-default-toolbar-small-tr,
+.x4-btn-default-toolbar-small-br,
+.x4-btn-default-toolbar-small-tc,
+.x4-btn-default-toolbar-small-bc,
+.x4-btn-default-toolbar-small-ml,
+.x4-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-ml,
+.x4-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-small .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-button,
+.x4-btn-default-toolbar-small-noicon .x4-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon .x4-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active,
+.x4-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-tl,
+.x4-btn-default-toolbar-small-over .x4-frame-bl,
+.x4-btn-default-toolbar-small-over .x4-frame-tr,
+.x4-btn-default-toolbar-small-over .x4-frame-br,
+.x4-btn-default-toolbar-small-over .x4-frame-tc,
+.x4-btn-default-toolbar-small-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-ml,
+.x4-btn-default-toolbar-small-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-tl,
+.x4-btn-default-toolbar-small-focus .x4-frame-bl,
+.x4-btn-default-toolbar-small-focus .x4-frame-tr,
+.x4-btn-default-toolbar-small-focus .x4-frame-br,
+.x4-btn-default-toolbar-small-focus .x4-frame-tc,
+.x4-btn-default-toolbar-small-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-ml,
+.x4-btn-default-toolbar-small-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-small-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-small-pressed .x4-frame-br,
+.x4-btn-default-toolbar-small-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-small-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-small-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-small-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-small-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-small-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-small-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-small-disabled .x4-frame-br,
+.x4-btn-default-toolbar-small-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-small-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-small-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-menu-active,
+.x4-nlg .x4-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tr,
+.x4-btn-default-toolbar-medium-br,
+.x4-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl,
+.x4-btn-default-toolbar-medium-bl,
+.x4-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-tl,
+.x4-btn-default-toolbar-medium-bl,
+.x4-btn-default-toolbar-medium-tr,
+.x4-btn-default-toolbar-medium-br,
+.x4-btn-default-toolbar-medium-tc,
+.x4-btn-default-toolbar-medium-bc,
+.x4-btn-default-toolbar-medium-ml,
+.x4-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-ml,
+.x4-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-medium .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-button,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active,
+.x4-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-tl,
+.x4-btn-default-toolbar-medium-over .x4-frame-bl,
+.x4-btn-default-toolbar-medium-over .x4-frame-tr,
+.x4-btn-default-toolbar-medium-over .x4-frame-br,
+.x4-btn-default-toolbar-medium-over .x4-frame-tc,
+.x4-btn-default-toolbar-medium-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-ml,
+.x4-btn-default-toolbar-medium-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-tl,
+.x4-btn-default-toolbar-medium-focus .x4-frame-bl,
+.x4-btn-default-toolbar-medium-focus .x4-frame-tr,
+.x4-btn-default-toolbar-medium-focus .x4-frame-br,
+.x4-btn-default-toolbar-medium-focus .x4-frame-tc,
+.x4-btn-default-toolbar-medium-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-ml,
+.x4-btn-default-toolbar-medium-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-br,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-medium-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-br,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-medium-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-menu-active,
+.x4-nlg .x4-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tr,
+.x4-btn-default-toolbar-large-br,
+.x4-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl,
+.x4-btn-default-toolbar-large-bl,
+.x4-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-tl,
+.x4-btn-default-toolbar-large-bl,
+.x4-btn-default-toolbar-large-tr,
+.x4-btn-default-toolbar-large-br,
+.x4-btn-default-toolbar-large-tc,
+.x4-btn-default-toolbar-large-bc,
+.x4-btn-default-toolbar-large-ml,
+.x4-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-ml,
+.x4-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-rtl.x4-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie8m .x4-btn-default-toolbar-large .x4-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-button,
+.x4-btn-default-toolbar-large-noicon .x4-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon .x4-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-btn-inner,
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-rtl.x4-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-rtl.x4-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-rtl.x4-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el, .x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-rtl.x4-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active,
+.x4-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-tl,
+.x4-btn-default-toolbar-large-over .x4-frame-bl,
+.x4-btn-default-toolbar-large-over .x4-frame-tr,
+.x4-btn-default-toolbar-large-over .x4-frame-br,
+.x4-btn-default-toolbar-large-over .x4-frame-tc,
+.x4-btn-default-toolbar-large-over .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-ml,
+.x4-btn-default-toolbar-large-over .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-tl,
+.x4-btn-default-toolbar-large-focus .x4-frame-bl,
+.x4-btn-default-toolbar-large-focus .x4-frame-tr,
+.x4-btn-default-toolbar-large-focus .x4-frame-br,
+.x4-btn-default-toolbar-large-focus .x4-frame-tc,
+.x4-btn-default-toolbar-large-focus .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-ml,
+.x4-btn-default-toolbar-large-focus .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tl,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-bl,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tr,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-br,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-tc,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-bc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tl,
+.x4-btn-default-toolbar-large-pressed .x4-frame-bl,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tr,
+.x4-btn-default-toolbar-large-pressed .x4-frame-br,
+.x4-btn-default-toolbar-large-pressed .x4-frame-tc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-ml,
+.x4-btn-default-toolbar-large-menu-active .x4-frame-mr,
+.x4-btn-default-toolbar-large-pressed .x4-frame-ml,
+.x4-btn-default-toolbar-large-pressed .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-menu-active .x4-frame-mc,
+.x4-btn-default-toolbar-large-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-tl,
+.x4-btn-default-toolbar-large-disabled .x4-frame-bl,
+.x4-btn-default-toolbar-large-disabled .x4-frame-tr,
+.x4-btn-default-toolbar-large-disabled .x4-frame-br,
+.x4-btn-default-toolbar-large-disabled .x4-frame-tc,
+.x4-btn-default-toolbar-large-disabled .x4-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-ml,
+.x4-btn-default-toolbar-large-disabled .x4-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled .x4-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-menu-active,
+.x4-nlg .x4-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-nbr .x4-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-rtl.x4-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-over .x4-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-left .x4-btn-icon-el {
+  background-position: left center;
+}
+/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-left .x4-rtl.x4-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-right .x4-btn-icon-el {
+  background-position: right center;
+}
+/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-right .x4-rtl.x4-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-top .x4-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-icon-text-bottom .x4-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-rtl.x4-btn-arrow-right {
+  background-position: left center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-rtl.x4-btn-split-right {
+  background-position: 0 center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x4-cycle-fixed-width .x4-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-rtl.x4-toolbar-item {
+  margin: 0 0 0 2px;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #4c4c4c;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #98c8ff;
+  border-right-color: white;
+}
+
+/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-rtl.x4-toolbar {
+  padding: 2px 2px 2px 0;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-footer .x4-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default {
+  border-color: #99bce8;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default .x4-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-default .x4-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-nlg .x4-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar .x4-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #98c8ff;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x4-toolbar-vertical .x4-box-menu-after,
+.x4-toolbar-vertical .x4-rtl.x4-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x4-header-draggable .x4-header-body,
+.x4-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x4-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default {
+  border-color: #99bce8;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-text-container-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+/* line 476, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg-rtl.gif);
+}
+/* line 480, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg-rtl.gif);
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-vertical .x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-vertical .x4-rtl.x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-right {
+  -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-left {
+  -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default .x4-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default .x4-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-ie8m .x4-panel-header-default .x4-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-rtl.x4-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-rtl.x4-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-rtl.x4-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-horizontal .x4-rtl.x4-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-rtl.x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-vertical .x4-rtl.x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-resizable .x4-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-framed {
+  border-color: #99bce8;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-framed-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-text-container-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mc {
+  background-color: #dfe9f6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tr,
+.x4-panel-default-framed-br,
+.x4-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl,
+.x4-panel-default-framed-bl,
+.x4-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-tl,
+.x4-panel-default-framed-bl,
+.x4-panel-default-framed-tr,
+.x4-panel-default-framed-br,
+.x4-panel-default-framed-tc,
+.x4-panel-default-framed-bc,
+.x4-panel-default-framed-ml,
+.x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-ml,
+.x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-default-framed-tl,
+.x4-strict .x4-ie7 .x4-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tr,
+.x4-panel-header-default-framed-top-br,
+.x4-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl,
+.x4-panel-header-default-framed-top-bl,
+.x4-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-tl,
+.x4-panel-header-default-framed-top-bl,
+.x4-panel-header-default-framed-top-tr,
+.x4-panel-header-default-framed-top-br,
+.x4-panel-header-default-framed-top-tc,
+.x4-panel-header-default-framed-top-bc,
+.x4-panel-header-default-framed-top-ml,
+.x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-ml,
+.x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tr,
+.x4-panel-header-default-framed-right-br,
+.x4-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl,
+.x4-panel-header-default-framed-right-bl,
+.x4-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tl,
+.x4-panel-header-default-framed-right-bl,
+.x4-panel-header-default-framed-right-tr,
+.x4-panel-header-default-framed-right-br,
+.x4-panel-header-default-framed-right-tc,
+.x4-panel-header-default-framed-right-bc,
+.x4-panel-header-default-framed-right-ml,
+.x4-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right-tl, .x4-rtl.x4-panel-header-default-framed-right-ml, .x4-rtl.x4-panel-header-default-framed-right-bl, .x4-rtl.x4-panel-header-default-framed-right-tr, .x4-rtl.x4-panel-header-default-framed-right-mr, .x4-rtl.x4-panel-header-default-framed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-tc,
+.x4-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-right-tc, .x4-rtl.x4-panel-header-default-framed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tr,
+.x4-panel-header-default-framed-bottom-br,
+.x4-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl,
+.x4-panel-header-default-framed-bottom-bl,
+.x4-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-tl,
+.x4-panel-header-default-framed-bottom-bl,
+.x4-panel-header-default-framed-bottom-tr,
+.x4-panel-header-default-framed-bottom-br,
+.x4-panel-header-default-framed-bottom-tc,
+.x4-panel-header-default-framed-bottom-bc,
+.x4-panel-header-default-framed-bottom-ml,
+.x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-ml,
+.x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tr,
+.x4-panel-header-default-framed-left-br,
+.x4-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl,
+.x4-panel-header-default-framed-left-bl,
+.x4-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tl,
+.x4-panel-header-default-framed-left-bl,
+.x4-panel-header-default-framed-left-tr,
+.x4-panel-header-default-framed-left-br,
+.x4-panel-header-default-framed-left-tc,
+.x4-panel-header-default-framed-left-bc,
+.x4-panel-header-default-framed-left-ml,
+.x4-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left-tl, .x4-rtl.x4-panel-header-default-framed-left-ml, .x4-rtl.x4-panel-header-default-framed-left-bl, .x4-rtl.x4-panel-header-default-framed-left-tr, .x4-rtl.x4-panel-header-default-framed-left-mr, .x4-rtl.x4-panel-header-default-framed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-tc,
+.x4-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-left-tc, .x4-rtl.x4-panel-header-default-framed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tr,
+.x4-panel-header-default-framed-collapsed-top-br,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl,
+.x4-panel-header-default-framed-collapsed-top-bl,
+.x4-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-tl,
+.x4-panel-header-default-framed-collapsed-top-bl,
+.x4-panel-header-default-framed-collapsed-top-tr,
+.x4-panel-header-default-framed-collapsed-top-br,
+.x4-panel-header-default-framed-collapsed-top-tc,
+.x4-panel-header-default-framed-collapsed-top-bc,
+.x4-panel-header-default-framed-collapsed-top-ml,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-ml,
+.x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tr,
+.x4-panel-header-default-framed-collapsed-right-br,
+.x4-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl,
+.x4-panel-header-default-framed-collapsed-right-bl,
+.x4-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tl,
+.x4-panel-header-default-framed-collapsed-right-bl,
+.x4-panel-header-default-framed-collapsed-right-tr,
+.x4-panel-header-default-framed-collapsed-right-br,
+.x4-panel-header-default-framed-collapsed-right-tc,
+.x4-panel-header-default-framed-collapsed-right-bc,
+.x4-panel-header-default-framed-collapsed-right-ml,
+.x4-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right-tl, .x4-rtl.x4-panel-header-default-framed-collapsed-right-ml, .x4-rtl.x4-panel-header-default-framed-collapsed-right-bl, .x4-rtl.x4-panel-header-default-framed-collapsed-right-tr, .x4-rtl.x4-panel-header-default-framed-collapsed-right-mr, .x4-rtl.x4-panel-header-default-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-tc,
+.x4-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-right-tc, .x4-rtl.x4-panel-header-default-framed-collapsed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tr,
+.x4-panel-header-default-framed-collapsed-bottom-br,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-panel-header-default-framed-collapsed-bottom-bl,
+.x4-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-panel-header-default-framed-collapsed-bottom-bl,
+.x4-panel-header-default-framed-collapsed-bottom-tr,
+.x4-panel-header-default-framed-collapsed-bottom-br,
+.x4-panel-header-default-framed-collapsed-bottom-tc,
+.x4-panel-header-default-framed-collapsed-bottom-bc,
+.x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-rtl.x4-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tr,
+.x4-panel-header-default-framed-collapsed-left-br,
+.x4-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl,
+.x4-panel-header-default-framed-collapsed-left-bl,
+.x4-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tl,
+.x4-panel-header-default-framed-collapsed-left-bl,
+.x4-panel-header-default-framed-collapsed-left-tr,
+.x4-panel-header-default-framed-collapsed-left-br,
+.x4-panel-header-default-framed-collapsed-left-tc,
+.x4-panel-header-default-framed-collapsed-left-bc,
+.x4-panel-header-default-framed-collapsed-left-ml,
+.x4-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left-tl, .x4-rtl.x4-panel-header-default-framed-collapsed-left-ml, .x4-rtl.x4-panel-header-default-framed-collapsed-left-bl, .x4-rtl.x4-panel-header-default-framed-collapsed-left-tr, .x4-rtl.x4-panel-header-default-framed-collapsed-left-mr, .x4-rtl.x4-panel-header-default-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-tc,
+.x4-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-left-tc, .x4-rtl.x4-panel-header-default-framed-collapsed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel .x4-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-framed-vertical .x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-right {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-left {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed .x4-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed .x4-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-ie8m .x4-panel-header-default-framed .x4-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-rtl.x4-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-rtl.x4-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-rtl.x4-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-horizontal .x4-rtl.x4-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-rtl.x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-header-default-framed-vertical .x4-rtl.x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-rtl.x4-panel-header-default-framed-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x4-panel-default-framed-resizable .x4-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-content-box .x4-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mc {
+  background-color: #e9f2ff;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tr,
+.x4-tip-default-br,
+.x4-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl,
+.x4-tip-default-bl,
+.x4-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-tl,
+.x4-tip-default-bl,
+.x4-tip-default-tr,
+.x4-tip-default-br,
+.x4-tip-default-tc,
+.x4-tip-default-bc,
+.x4-tip-default-ml,
+.x4-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-ml,
+.x4-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tip-default-tl,
+.x4-strict .x4-ie7 .x4-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-default {
+  border-color: #8eaace;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-default .x4-tool-img {
+  background-color: #e9f2ff;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-rtl.x4-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-default .x4-rtl.x4-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tr,
+.x4-tip-form-invalid-br,
+.x4-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl,
+.x4-tip-form-invalid-bl,
+.x4-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-tl,
+.x4-tip-form-invalid-bl,
+.x4-tip-form-invalid-tr,
+.x4-tip-form-invalid-br,
+.x4-tip-form-invalid-tc,
+.x4-tip-form-invalid-bc,
+.x4-tip-form-invalid-ml,
+.x4-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-ml,
+.x4-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tip-form-invalid-tl,
+.x4-strict .x4-ie7 .x4-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-form-invalid .x4-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-rtl.x4-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-form-invalid .x4-rtl.x4-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x4-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-default {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default .x4-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default .x4-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tr,
+.x4-btn-group-default-framed-br,
+.x4-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl,
+.x4-btn-group-default-framed-bl,
+.x4-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-tl,
+.x4-btn-group-default-framed-bl,
+.x4-btn-group-default-framed-tr,
+.x4-btn-group-default-framed-br,
+.x4-btn-group-default-framed-tc,
+.x4-btn-group-default-framed-bc,
+.x4-btn-group-default-framed-ml,
+.x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-ml,
+.x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tr,
+.x4-btn-group-default-framed-notitle-br,
+.x4-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl,
+.x4-btn-group-default-framed-notitle-bl,
+.x4-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-tl,
+.x4-btn-group-default-framed-notitle-bl,
+.x4-btn-group-default-framed-notitle-tr,
+.x4-btn-group-default-framed-notitle-br,
+.x4-btn-group-default-framed-notitle-tc,
+.x4-btn-group-default-framed-notitle-bc,
+.x4-btn-group-default-framed-notitle-ml,
+.x4-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-ml,
+.x4-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-tl,
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-default-framed .x4-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x4-btn-group-body-default-framed .x4-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-default {
+  border-color: #a2b1c5;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tr,
+.x4-window-default-br,
+.x4-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl,
+.x4-window-default-bl,
+.x4-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-tl,
+.x4-window-default-bl,
+.x4-window-default-tr,
+.x4-window-default-br,
+.x4-window-default-tc,
+.x4-window-default-bc,
+.x4-window-default-ml,
+.x4-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-ml,
+.x4-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-default-tl,
+.x4-strict .x4-ie7 .x4-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  border-style: solid;
+  background: #dfe8f6;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1;
+  background-color: #ced9e7;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-tool-img {
+  background-color: #ced9e7;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-window-header-default-vertical .x4-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-rtl.x4-window-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-window-header-default-vertical .x4-rtl.x4-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-text-container-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tr,
+.x4-window-header-default-top-br,
+.x4-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl,
+.x4-window-header-default-top-bl,
+.x4-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-tl,
+.x4-window-header-default-top-bl,
+.x4-window-header-default-top-tr,
+.x4-window-header-default-top-br,
+.x4-window-header-default-top-tc,
+.x4-window-header-default-top-bc,
+.x4-window-header-default-top-ml,
+.x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-ml,
+.x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tr,
+.x4-window-header-default-right-br,
+.x4-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl,
+.x4-window-header-default-right-bl,
+.x4-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-tl,
+.x4-window-header-default-right-bl,
+.x4-window-header-default-right-tr,
+.x4-window-header-default-right-br,
+.x4-window-header-default-right-tc,
+.x4-window-header-default-right-bc,
+.x4-window-header-default-right-ml,
+.x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-window-header-default-right-tl, .x4-rtl.x4-window-header-default-right-ml, .x4-rtl.x4-window-header-default-right-bl, .x4-rtl.x4-window-header-default-right-tr, .x4-rtl.x4-window-header-default-right-mr, .x4-rtl.x4-window-header-default-right-br {
+  background-image: url(images/window-header/window-header-default-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-ml,
+.x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tr,
+.x4-window-header-default-bottom-br,
+.x4-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl,
+.x4-window-header-default-bottom-bl,
+.x4-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-tl,
+.x4-window-header-default-bottom-bl,
+.x4-window-header-default-bottom-tr,
+.x4-window-header-default-bottom-br,
+.x4-window-header-default-bottom-tc,
+.x4-window-header-default-bottom-bc,
+.x4-window-header-default-bottom-ml,
+.x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-ml,
+.x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tr,
+.x4-window-header-default-left-br,
+.x4-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl,
+.x4-window-header-default-left-bl,
+.x4-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-tl,
+.x4-window-header-default-left-bl,
+.x4-window-header-default-left-tr,
+.x4-window-header-default-left-br,
+.x4-window-header-default-left-tc,
+.x4-window-header-default-left-bc,
+.x4-window-header-default-left-ml,
+.x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-window-header-default-left-tl, .x4-rtl.x4-window-header-default-left-ml, .x4-rtl.x4-window-header-default-left-bl, .x4-rtl.x4-window-header-default-left-tr, .x4-rtl.x4-window-header-default-left-mr, .x4-rtl.x4-window-header-default-left-br {
+  background-image: url(images/window-header/window-header-default-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-ml,
+.x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tr,
+.x4-window-header-default-collapsed-top-br,
+.x4-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl,
+.x4-window-header-default-collapsed-top-bl,
+.x4-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-tl,
+.x4-window-header-default-collapsed-top-bl,
+.x4-window-header-default-collapsed-top-tr,
+.x4-window-header-default-collapsed-top-br,
+.x4-window-header-default-collapsed-top-tc,
+.x4-window-header-default-collapsed-top-bc,
+.x4-window-header-default-collapsed-top-ml,
+.x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-ml,
+.x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tr,
+.x4-window-header-default-collapsed-right-br,
+.x4-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl,
+.x4-window-header-default-collapsed-right-bl,
+.x4-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-tl,
+.x4-window-header-default-collapsed-right-bl,
+.x4-window-header-default-collapsed-right-tr,
+.x4-window-header-default-collapsed-right-br,
+.x4-window-header-default-collapsed-right-tc,
+.x4-window-header-default-collapsed-right-bc,
+.x4-window-header-default-collapsed-right-ml,
+.x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-window-header-default-collapsed-right-tl, .x4-rtl.x4-window-header-default-collapsed-right-ml, .x4-rtl.x4-window-header-default-collapsed-right-bl, .x4-rtl.x4-window-header-default-collapsed-right-tr, .x4-rtl.x4-window-header-default-collapsed-right-mr, .x4-rtl.x4-window-header-default-collapsed-right-br {
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-ml,
+.x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tr,
+.x4-window-header-default-collapsed-bottom-br,
+.x4-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl,
+.x4-window-header-default-collapsed-bottom-bl,
+.x4-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-tl,
+.x4-window-header-default-collapsed-bottom-bl,
+.x4-window-header-default-collapsed-bottom-tr,
+.x4-window-header-default-collapsed-bottom-br,
+.x4-window-header-default-collapsed-bottom-tc,
+.x4-window-header-default-collapsed-bottom-bc,
+.x4-window-header-default-collapsed-bottom-ml,
+.x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-ml,
+.x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tr,
+.x4-window-header-default-collapsed-left-br,
+.x4-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl,
+.x4-window-header-default-collapsed-left-bl,
+.x4-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-tl,
+.x4-window-header-default-collapsed-left-bl,
+.x4-window-header-default-collapsed-left-tr,
+.x4-window-header-default-collapsed-left-br,
+.x4-window-header-default-collapsed-left-tc,
+.x4-window-header-default-collapsed-left-bc,
+.x4-window-header-default-collapsed-left-ml,
+.x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-rtl.x4-window-header-default-collapsed-left-tl, .x4-rtl.x4-window-header-default-collapsed-left-ml, .x4-rtl.x4-window-header-default-collapsed-left-bl, .x4-rtl.x4-window-header-default-collapsed-left-tr, .x4-rtl.x4-window-header-default-collapsed-left-mr, .x4-rtl.x4-window-header-default-collapsed-left-br {
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-ml,
+.x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-top {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-right {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-bottom {
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-left {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default .x4-window-header-glyph {
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-ie8m .x4-window-header-default .x4-window-header-glyph {
+  color: #698fb9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-rtl.x4-window-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-rtl.x4-window-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-rtl.x4-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-rtl.x4-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-rtl.x4-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-horizontal .x4-rtl.x4-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-rtl.x4-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-header-default-vertical .x4-rtl.x4-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-window-default-collapsed .x4-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x4-nbr .x4-window-default-collapsed .x4-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x4-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-toolbar-item .x4-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-autocontainer-form-item,
+.x4-anchor-form-item,
+.x4-vbox-form-item,
+.x4-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-ie6 .x4-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x4-ie6 td.x4-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-item,
+.x4-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-form-type-text textarea.x4-form-invalid-field, .x4-form-type-text input.x4-form-invalid-field,
+.x4-form-type-password textarea.x4-form-invalid-field,
+.x4-form-type-password input.x4-form-invalid-field,
+.x4-form-type-number textarea.x4-form-invalid-field,
+.x4-form-type-number input.x4-form-invalid-field,
+.x4-form-type-email textarea.x4-form-invalid-field,
+.x4-form-type-email input.x4-form-invalid-field,
+.x4-form-type-search textarea.x4-form-invalid-field,
+.x4-form-type-search input.x4-form-invalid-field,
+.x4-form-type-tel textarea.x4-form-invalid-field,
+.x4-form-type-tel input.x4-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x4-item-disabled .x4-form-item-label,
+.x4-item-disabled .x4-form-field,
+.x4-item-disabled .x4-form-display-field,
+.x4-item-disabled .x4-form-cb-label,
+.x4-item-disabled .x4-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-field-toolbar .x4-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-content-box .x4-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-content-box .x4-field-toolbar .x4-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-focus {
+  border-color: #7eadd9;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-form-empty-field,
+textarea.x4-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x4-quirks .x4-ie .x4-form-text,
+.x4-ie7m .x4-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x4-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-toolbar-item .x4-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x4-toolbar-item .x4-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box .x4-window-body {
+  background-color: #ced9e7;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-info,
+.x4-message-box-warning,
+.x4-message-box-question,
+.x4-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-rtl.x4-message-box-info, .x4-rtl.x4-message-box-warning, .x4-rtl.x4-message-box-question, .x4-rtl.x4-message-box-error {
+  background-position: top left;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x4-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-checked .x4-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-checked .x4-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-toolbar-item .x4-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-rtl.x4-field .x4-form-cb-label-before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x4-rtl.x4-field .x4-form-cb-label-after {
+  margin-left: 0;
+  margin-right: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-invalid .x4-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x4-rtl.x4-form-check-group-label {
+  margin: 0 0 5px 30px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie8m .x4-fieldset,
+.x4-quirks .x4-ie .x4-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie8m .x4-fieldset .x4-fieldset-body,
+.x4-quirks .x4-ie .x4-fieldset .x4-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header .x4-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-with-title .x4-fieldset-header-checkbox,
+.x4-fieldset-with-title .x4-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-with-title .x4-rtl .x4-fieldset-header-checkbox,
+.x4-fieldset-with-title .x4-rtl .x4-tool {
+  margin: 1px 0 0 3px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-webkit .x4-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-opera .x4-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-opera.x4-mac .x4-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-strict .x4-ie8 .x4-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,
+.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-quirks .x4-ie .x4-fieldset-header,
+.x4-ie8m .x4-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie6 .x4-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset .x4-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-ie .x4-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x4-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-cb-checked .x4-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x4-form-cb-checked .x4-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-rtl.x4-form-trigger-wrap .x4-form-trigger {
+  background-image: url(images/form/trigger-rtl.gif);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #7eadd9;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger {
+  background-position: -51px 0;
+  border-color: #7eadd9;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-trigger-click,
+.x4-form-trigger-wrap-focus .x4-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-rtl.x4-form-trigger-wrap .x4-form-clear-trigger {
+  background-image: url(images/form/clear-trigger-rtl.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-rtl.x4-form-trigger-wrap .x4-form-search-trigger {
+  background-image: url(images/form/search-trigger-rtl.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-quirks .prefixie6 .x4-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x4-quirks .prefixie6 .x4-field-toolbar .x4-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x4-form-spinner-up,
+div.x4-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up,
+.x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url(images/form/spinner-rtl.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item div.x4-form-spinner-up,
+.x4-toolbar-item div.x4-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x4-toolbar-item .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up,
+.x4-toolbar-item .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-rtl.x4-tbar-page-first {
+  background-image: url(images/grid/page-last.gif);
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-rtl.x4-tbar-page-prev {
+  background-image: url(images/grid/page-next.gif);
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-rtl.x4-tbar-page-next {
+  background-image: url(images/grid/page-prev.gif);
+}
+/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-rtl.x4-tbar-page-last {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-rtl.x4-tbar-page-first {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-rtl.x4-tbar-page-prev {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-rtl.x4-tbar-page-next {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x4-item-disabled .x4-rtl.x4-tbar-page-last {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-strict .x4-ie7m .x4-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x4-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #23427c;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn,
+.x4-datepicker-month .x4-btn .x4-btn-tc,
+.x4-datepicker-month .x4-btn .x4-btn-tl,
+.x4-datepicker-month .x4-btn .x4-btn-tr,
+.x4-datepicker-month .x4-btn .x4-btn-mc,
+.x4-datepicker-month .x4-btn .x4-btn-ml,
+.x4-datepicker-month .x4-btn .x4-btn-mr,
+.x4-datepicker-month .x4-btn .x4-btn-bc,
+.x4-datepicker-month .x4-btn .x4-btn-bl,
+.x4-datepicker-month .x4-btn .x4-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-month .x4-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-column-header {
+  width: 25px;
+  color: #233d6d;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+  background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: linear-gradient(top, #edf4fd, #cde1f9);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-datepicker-date:hover {
+  color: black;
+  background-color: #ddecfe;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-selected {
+  border-style: solid;
+  border-color: #8db2e3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-selected .x4-datepicker-date {
+  background-color: #dae5f3;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-prevday .x4-datepicker-date,
+.x4-datepicker-nextday .x4-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-disabled a.x4-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-disabled a.x4-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-footer,
+.x4-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-datepicker-footer .x4-btn,
+.x4-monthpicker-buttons .x4-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #1b376c;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-months .x4-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-years .x4-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #15428b;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x4-monthpicker-item-inner:hover {
+  background-color: #ddecfe;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-selected {
+  background-color: #dae5f3;
+  border-style: solid;
+  border-color: #8db2e3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-monthpicker-small .x4-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-nlg .x4-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x4-nlg .x4-datepicker-footer,
+.x4-nlg .x4-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x4-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x4-rtl.x4-form-trigger-wrap .x4-form-date-trigger {
+  background-image: url(images/form/date-trigger-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x4-form-file-wrap .x4-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-content-box .x4-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x4-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x4-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-bold,
+.x4-menu-item div.x4-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-italic,
+.x4-menu-item div.x4-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-underline,
+.x4-menu-item div.x4-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-forecolor,
+.x4-menu-item div.x4-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-backcolor,
+.x4-menu-item div.x4-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifyleft,
+.x4-menu-item div.x4-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifycenter,
+.x4-menu-item div.x4-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-justifyright,
+.x4-menu-item div.x4-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-insertorderedlist,
+.x4-menu-item div.x4-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-insertunorderedlist,
+.x4-menu-item div.x4-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-increasefontsize,
+.x4-menu-item div.x4-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-decreasefontsize,
+.x4-menu-item div.x4-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-sourceedit,
+.x4-menu-item div.x4-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-edit-createlink,
+.x4-menu-item div.x4-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-tb .x4-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-alt .x4-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-over .x4-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-over .x4-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-selected .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-before-focused .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-over .x4-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-td {
+  background-color: #dfe8f6;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-table .x4-grid-row-focused-first .x4-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-row-summary .x4-grid-td {
+  border-bottom-color: #dfe8f6;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-focused .x4-grid-row-summary .x4-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-row-lines .x4-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #a3bae9;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-body .x4-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-cell-special {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row-selected .x4-grid-cell-special {
+  border-right-color: #ededed #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-nlg .x4-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-nlg .x4-grid-row-selected .x4-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-cell-special .x4-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-cell-special .x4-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-rtl.x4-grid-cell-special {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-rtl.x4-grid-dirty-cell {
+  background-image: url(images/grid/dirty-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-row .x4-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-with-col-lines .x4-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-rtl.x4-grid-with-col-lines .x4-grid-cell {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x4-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator .x4-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-grid-drop-indicator .x4-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-ie6 .x4-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x4-ie6 .x4-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-grid-header-ct {
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-accordion-item .x4-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-accordion-item .x4-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-hmenu-sort-asc .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-hmenu-sort-desc .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x4-cols-icon .x4-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header {
+  border-right: 0 none;
+  border-left: 1px solid #c5c5c5;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-group-sub-header .x4-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-over,
+.x4-column-header-sort-ASC,
+.x4-column-header-sort-DESC {
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-nlg .x4-grid-header-ct,
+.x4-nlg .x4-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-nlg .x4-column-header-over,
+.x4-nlg .x4-column-header-sort-ASC,
+.x4-nlg .x4-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-open .x4-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header-trigger {
+  background-position: right center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-align-right .x4-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-align-right .x4-rtl.x4-column-header-text {
+  margin-right: 0;
+  margin-left: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-ASC .x4-column-header-text,
+.x4-column-header-sort-DESC .x4-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-ASC .x4-rtl.x4-column-header-text,
+.x4-column-header-sort-DESC .x4-rtl.x4-column-header-text {
+  padding-right: 0;
+  padding-left: 12px;
+  background-position: 0 center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-ASC .x4-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x4-column-header-sort-DESC .x4-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-action-col-cell .x4-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x4-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-item-disabled .x4-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x4-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x4-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #99bbe8;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-collapsible .x4-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-rtl.x4-grid-view .x4-grid-group-hd-collapsible .x4-grid-group-title {
+  background-position: right center;
+  padding: 0 14px 0 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-title {
+  color: #3764a0;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-hd-collapsed .x4-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-grid-group-collapsed .x4-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x4-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x4-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x4-grid-rowwrap {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-docked-summary {
+  border-width: 1px;
+  border-color: #99bce8;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-docked-summary .x4-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-grid-row-summary .x4-grid-cell,
+.x4-grid-row-summary .x4-grid-rowwrap,
+.x4-grid-row-summary .x4-grid-cell-rowbody {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x4-grid-with-row-lines .x4-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-locked .x4-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-locked .x4-rtl.x4-grid-inner-locked {
+  border-width: 0 0 0 1px;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-inner-locked .x4-column-header-last,
+.x4-grid-inner-locked .x4-grid-cell-last {
+  border-right-width: 0!important;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-grid-inner-locked .x4-rtl.x4-column-header-last {
+  border-left-width: 0!important;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-rtl.x4-grid-inner-locked .x4-grid-row .x4-column-header-last {
+  border-left: 0 none;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-rtl.x4-grid-inner-locked .x4-grid-row .x4-grid-cell-last {
+  border-left: 0 none;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-hmenu-lock .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x4-hmenu-unlock .x4-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-gecko .x4-grid-editor .x4-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-spinner-up, .x4-grid-editor .x4-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x4-tree-cell-editor .x4-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x4-gecko .x4-tree-cell-editor .x4-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-gecko .x4-grid-row-editor .x4-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor .x4-panel-body {
+  border-top: 1px solid #99bce8 !important;
+  border-bottom: 1px solid #99bce8 !important;
+  padding: 4px 0 4px 0;
+  background-color: #eaf1fb;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-with-col-lines .x4-grid-row-editor .x4-form-cb {
+  margin-right: 1px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-with-col-lines .x4-grid-row-editor .x4-rtl.x4-form-cb {
+  margin-right: 0;
+  margin-left: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tr,
+.x4-grid-row-editor-buttons-default-bottom-br,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-grid-row-editor-buttons-default-bottom-bl,
+.x4-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-grid-row-editor-buttons-default-bottom-bl,
+.x4-grid-row-editor-buttons-default-bottom-tr,
+.x4-grid-row-editor-buttons-default-bottom-br,
+.x4-grid-row-editor-buttons-default-bottom-tc,
+.x4-grid-row-editor-buttons-default-bottom-bc,
+.x4-grid-row-editor-buttons-default-bottom-ml,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-ml,
+.x4-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tr,
+.x4-grid-row-editor-buttons-default-top-br,
+.x4-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl,
+.x4-grid-row-editor-buttons-default-top-bl,
+.x4-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-tl,
+.x4-grid-row-editor-buttons-default-top-bl,
+.x4-grid-row-editor-buttons-default-top-tr,
+.x4-grid-row-editor-buttons-default-top-br,
+.x4-grid-row-editor-buttons-default-top-tc,
+.x4-grid-row-editor-buttons-default-top-bc,
+.x4-grid-row-editor-buttons-default-top-ml,
+.x4-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-ml,
+.x4-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-tl,
+.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-buttons {
+  border-color: #99bce8;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-rtl.x4-row-editor-update-button {
+  margin-left: 2px;
+  margin-right: auto;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-rtl.x4-row-editor-cancel-button {
+  margin-right: 2px;
+  margin-left: auto;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-errors .x4-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x4-rtl.x4-grid-row-editor-errors .x4-grid-row-editor-errors-item {
+  margin-left: 0;
+  margin-right: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x4-grid-row-collapsed .x4-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x4-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd {
+  background: #d9e7f8;
+  border-top-color: #f3f7fb;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-item .x4-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-collapse-top,
+.x4-accordion-hd .x4-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-expand-top,
+.x4-accordion-hd .x4-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,
+.x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-over .x4-tool-expand-top,
+.x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd .x4-tool-img {
+  background-color: #d9e7f8;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-left,
+.x4-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-top,
+.x4-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-rtl.x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-rtl.x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-rtl.x4-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-rtl.x4-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x4-splitter-active .x4-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x4-border-layout-ct {
+  background-color: #dfe8f6;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu .x4-menu-icon-separator {
+  left: auto;
+  right: 24px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu-item-indent {
+  margin-left: 0;
+  margin-right: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-active {
+  background-image: none;
+  background-color: #d9e8fb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+  background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+  border-color: #a9cbf5;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-nlg .x4-menu-item-active {
+  background: #d9e8fb repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu-item-link {
+  padding: 0 30px 0 0;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-right-check-item-text {
+  padding-left: 22px;
+  padding-right: 0;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie8m .x4-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-menu-item-icon,
+.x4-quirks .x4-menu-item-active .x4-menu-item-icon,
+.x4-ie9m .x4-menu-item-active .x4-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu-item-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-rtl.x4-menu-item-icon,
+.x4-quirks .x4-menu-item-active .x4-rtl.x4-menu-item-icon,
+.x4-ie9m .x4-menu-item-active .x4-rtl.x4-menu-item-icon {
+  left: auto;
+  right: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu-item-icon-right {
+  right: auto;
+  left: 3px;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+a.x4-rtl .x4-menu-item-text {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-checked .x4-menu-item-icon, .x4-menu-item-checked .x4-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-checked .x4-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-unchecked .x4-menu-item-icon, .x4-menu-item-unchecked .x4-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-unchecked .x4-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-menu-item-arrow,
+.x4-quirks .x4-menu-item-active .x4-menu-item-arrow,
+.x4-ie9m .x4-menu-item-active .x4-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-rtl.x4-menu-item-arrow {
+  left: 0;
+  right: auto;
+  background-image: url(images/menu/menu-parent-left.gif);
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-gecko .x4-menu-item-active .x4-rtl.x4-menu-item-arrow,
+.x4-ie9m .x4-menu-item-active .x4-rtl.x4-menu-item-arrow,
+.x4-quirks .x4-menu-item-active .x4-rtl.x4-menu-item-arrow {
+  right: auto;
+  left: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-content-box .x4-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-content-box .x4-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-item .x4-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x4-menu-scroll-top, .x4-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-panel-collapsed .x4-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-bottom,
+.x4-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-top,
+.x4-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-left,
+.x4-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-expand-right,
+.x4-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-rtl.x4-tool-expand-left, .x4-rtl.x4-tool-collapse-left {
+  background-position: 0 -165px;
+}
+/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-rtl.x4-tool-expand-right, .x4-rtl.x4-tool-collapse-right {
+  background-position: 0 -180px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-panel-collapsed .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-bottom,
+.x4-tool-over .x4-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-top,
+.x4-tool-over .x4-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-left,
+.x4-tool-over .x4-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-tool-expand-right,
+.x4-tool-over .x4-tool-collapse-right {
+  background-position: -15px -165px;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-rtl.x4-tool-expand-left, .x4-tool-over .x4-rtl.x4-tool-collapse-left {
+  background-position: -15px -165px;
+}
+/* line 308, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x4-tool-over .x4-rtl.x4-tool-expand-right, .x4-tool-over .x4-rtl.x4-tool-collapse-right {
+  background-position: -15px -180px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-collapsed .x4-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-ie .x4-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-ie .x4-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-pinned .x4-resizable-handle,
+.x4-resizable-over .x4-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-window .x4-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-window-collapsed .x4-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east,
+.x4-resizable-over .x4-resizable-handle-west,
+.x4-resizable-pinned .x4-resizable-handle-east,
+.x4-resizable-pinned .x4-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south,
+.x4-resizable-over .x4-resizable-handle-north,
+.x4-resizable-pinned .x4-resizable-handle-south,
+.x4-resizable-pinned .x4-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast,
+.x4-resizable-pinned .x4-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest,
+.x4-resizable-pinned .x4-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast,
+.x4-resizable-pinned .x4-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest,
+.x4-resizable-pinned .x4-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-form-item .x4-slider-horz,
+.x4-ie7 .x4-form-item .x4-slider-horz,
+.x4-quirks .x4-ie .x4-form-item .x4-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz .x4-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-rtl.x4-slider-horz {
+  padding-left: 0;
+  padding-right: 7px;
+  background-position: right -30px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-rtl.x4-slider-horz .x4-slider-end {
+  padding-right: 0;
+  padding-left: 7px;
+  background-position: left -15px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-rtl.x4-slider-horz .x4-slider-thumb {
+  margin-right: -7px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert .x4-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-horz,
+.x4-slider-horz .x4-slider-end,
+.x4-slider-horz .x4-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x4-slider-vert,
+.x4-slider-vert .x4-slider-end,
+.x4-slider-vert .x4-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tr,
+.x4-tab-default-top-br,
+.x4-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl,
+.x4-tab-default-top-bl,
+.x4-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-tl,
+.x4-tab-default-top-bl,
+.x4-tab-default-top-tr,
+.x4-tab-default-top-br,
+.x4-tab-default-top-tc,
+.x4-tab-default-top-bc,
+.x4-tab-default-top-ml,
+.x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-ml,
+.x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-top-tl,
+.x4-strict .x4-ie7 .x4-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tr,
+.x4-tab-default-bottom-br,
+.x4-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl,
+.x4-tab-default-bottom-bl,
+.x4-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-tl,
+.x4-tab-default-bottom-bl,
+.x4-tab-default-bottom-tr,
+.x4-tab-default-bottom-br,
+.x4-tab-default-bottom-tc,
+.x4-tab-default-bottom-bc,
+.x4-tab-default-bottom-ml,
+.x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-ml,
+.x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tr,
+.x4-tab-default-left-br,
+.x4-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl,
+.x4-tab-default-left-bl,
+.x4-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-tl,
+.x4-tab-default-left-bl,
+.x4-tab-default-left-tr,
+.x4-tab-default-left-br,
+.x4-tab-default-left-tc,
+.x4-tab-default-left-bc,
+.x4-tab-default-left-ml,
+.x4-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-ml,
+.x4-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-left-tl,
+.x4-strict .x4-ie7 .x4-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nlg .x4-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-nbr .x4-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x4-nbr .x4-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tr,
+.x4-tab-default-right-br,
+.x4-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl,
+.x4-tab-default-right-bl,
+.x4-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-tl,
+.x4-tab-default-right-bl,
+.x4-tab-default-right-tr,
+.x4-tab-default-right-br,
+.x4-tab-default-right-tc,
+.x4-tab-default-right-bc,
+.x4-tab-default-right-ml,
+.x4-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-ml,
+.x4-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-right-tl,
+.x4-strict .x4-ie7 .x4-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default {
+  border-color: #8db3e3;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #416da3;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-glyph {
+  font-size: 16px;
+  color: #416da3;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default .x4-tab-glyph {
+  color: #8facd0;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-icon .x4-tab-inner {
+  width: 16px;
+}
+
+/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default-left {
+  margin: 0 0 0 2px;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top,
+.x4-tab-default-left,
+.x4-tab-default-right {
+  border-bottom: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top, .x4-nlg
+.x4-tab-default-left, .x4-nlg
+.x4-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom {
+  border-top: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default-left {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-rtl.x4-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default-right {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x4-ie9m .x4-rtl.x4-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-icon-text-left .x4-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default-icon-text-left .x4-tab-inner {
+  padding-left: 0;
+  padding-right: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-over {
+  background-color: #e8f2ff;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-over .x4-tab-glyph {
+  color: #416da3;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-over .x4-tab-glyph {
+  color: #94afd1;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over,
+.x4-tab-default-left-over,
+.x4-tab-default-right-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-over, .x4-nlg
+.x4-tab-default-left-over, .x4-nlg
+.x4-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active {
+  background-color: #deecfd;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active .x4-tab-inner {
+  color: #15498b;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-active .x4-tab-glyph {
+  color: #15498b;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-active .x4-tab-glyph {
+  color: #799ac4;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active,
+.x4-tab-default-left-active,
+.x4-tab-default-right-active {
+  border-bottom: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-active, .x4-nlg
+.x4-tab-default-left-active, .x4-nlg
+.x4-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active {
+  border-top: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled {
+  border-color: #bbd2ef;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-ie8m .x4-tab-default-disabled .x4-tab-glyph {
+  color: #d8dae4;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled,
+.x4-tab-default-left-disabled,
+.x4-tab-default-right-disabled {
+  border-color: #bbd2ef #bbd2ef #99bce8;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled {
+  border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled,
+.x4-tab-default-left-disabled,
+.x4-tab-default-right-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-top-disabled, .x4-nlg
+.x4-tab-default-left-disabled, .x4-nlg
+.x4-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nlg .x4-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-tl,
+.x4-tab-default-top-over .x4-frame-bl,
+.x4-tab-default-top-over .x4-frame-tr,
+.x4-tab-default-top-over .x4-frame-br,
+.x4-tab-default-top-over .x4-frame-tc,
+.x4-tab-default-top-over .x4-frame-bc,
+.x4-tab-default-left-over .x4-frame-tl,
+.x4-tab-default-left-over .x4-frame-bl,
+.x4-tab-default-left-over .x4-frame-tr,
+.x4-tab-default-left-over .x4-frame-br,
+.x4-tab-default-left-over .x4-frame-tc,
+.x4-tab-default-left-over .x4-frame-bc,
+.x4-tab-default-right-over .x4-frame-tl,
+.x4-tab-default-right-over .x4-frame-bl,
+.x4-tab-default-right-over .x4-frame-tr,
+.x4-tab-default-right-over .x4-frame-br,
+.x4-tab-default-right-over .x4-frame-tc,
+.x4-tab-default-right-over .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-ml,
+.x4-tab-default-top-over .x4-frame-mr,
+.x4-tab-default-left-over .x4-frame-ml,
+.x4-tab-default-left-over .x4-frame-mr,
+.x4-tab-default-right-over .x4-frame-ml,
+.x4-tab-default-right-over .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-over .x4-frame-mc,
+.x4-tab-default-left-over .x4-frame-mc,
+.x4-tab-default-right-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-tl,
+.x4-tab-default-bottom-over .x4-frame-bl,
+.x4-tab-default-bottom-over .x4-frame-tr,
+.x4-tab-default-bottom-over .x4-frame-br,
+.x4-tab-default-bottom-over .x4-frame-tc,
+.x4-tab-default-bottom-over .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-ml,
+.x4-tab-default-bottom-over .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-tl,
+.x4-tab-default-top-active .x4-frame-bl,
+.x4-tab-default-top-active .x4-frame-tr,
+.x4-tab-default-top-active .x4-frame-br,
+.x4-tab-default-top-active .x4-frame-tc,
+.x4-tab-default-top-active .x4-frame-bc,
+.x4-tab-default-left-active .x4-frame-tl,
+.x4-tab-default-left-active .x4-frame-bl,
+.x4-tab-default-left-active .x4-frame-tr,
+.x4-tab-default-left-active .x4-frame-br,
+.x4-tab-default-left-active .x4-frame-tc,
+.x4-tab-default-left-active .x4-frame-bc,
+.x4-tab-default-right-active .x4-frame-tl,
+.x4-tab-default-right-active .x4-frame-bl,
+.x4-tab-default-right-active .x4-frame-tr,
+.x4-tab-default-right-active .x4-frame-br,
+.x4-tab-default-right-active .x4-frame-tc,
+.x4-tab-default-right-active .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-ml,
+.x4-tab-default-top-active .x4-frame-mr,
+.x4-tab-default-left-active .x4-frame-ml,
+.x4-tab-default-left-active .x4-frame-mr,
+.x4-tab-default-right-active .x4-frame-ml,
+.x4-tab-default-right-active .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-active .x4-frame-mc,
+.x4-tab-default-left-active .x4-frame-mc,
+.x4-tab-default-right-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-tl,
+.x4-tab-default-bottom-active .x4-frame-bl,
+.x4-tab-default-bottom-active .x4-frame-tr,
+.x4-tab-default-bottom-active .x4-frame-br,
+.x4-tab-default-bottom-active .x4-frame-tc,
+.x4-tab-default-bottom-active .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-ml,
+.x4-tab-default-bottom-active .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-tl,
+.x4-tab-default-top-disabled .x4-frame-bl,
+.x4-tab-default-top-disabled .x4-frame-tr,
+.x4-tab-default-top-disabled .x4-frame-br,
+.x4-tab-default-top-disabled .x4-frame-tc,
+.x4-tab-default-top-disabled .x4-frame-bc,
+.x4-tab-default-left-disabled .x4-frame-tl,
+.x4-tab-default-left-disabled .x4-frame-bl,
+.x4-tab-default-left-disabled .x4-frame-tr,
+.x4-tab-default-left-disabled .x4-frame-br,
+.x4-tab-default-left-disabled .x4-frame-tc,
+.x4-tab-default-left-disabled .x4-frame-bc,
+.x4-tab-default-right-disabled .x4-frame-tl,
+.x4-tab-default-right-disabled .x4-frame-bl,
+.x4-tab-default-right-disabled .x4-frame-tr,
+.x4-tab-default-right-disabled .x4-frame-br,
+.x4-tab-default-right-disabled .x4-frame-tc,
+.x4-tab-default-right-disabled .x4-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-ml,
+.x4-tab-default-top-disabled .x4-frame-mr,
+.x4-tab-default-left-disabled .x4-frame-ml,
+.x4-tab-default-left-disabled .x4-frame-mr,
+.x4-tab-default-right-disabled .x4-frame-ml,
+.x4-tab-default-right-disabled .x4-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-top-disabled .x4-frame-mc,
+.x4-tab-default-left-disabled .x4-frame-mc,
+.x4-tab-default-right-disabled .x4-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-tl,
+.x4-tab-default-bottom-disabled .x4-frame-bl,
+.x4-tab-default-bottom-disabled .x4-frame-tr,
+.x4-tab-default-bottom-disabled .x4-frame-br,
+.x4-tab-default-bottom-disabled .x4-frame-tc,
+.x4-tab-default-bottom-disabled .x4-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-ml,
+.x4-tab-default-bottom-disabled .x4-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-bottom-disabled .x4-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default-top,
+.x4-nbr .x4-tab-default-left,
+.x4-nbr .x4-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-nbr .x4-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default .x4-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default .x4-tab-close-btn {
+  right: auto;
+  left: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-disabled .x4-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-tab-default-closable .x4-tab-wrap {
+  padding-right: 14px;
+}
+
+/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x4-rtl.x4-tab-default-closable .x4-tab-wrap {
+  padding-right: 0px;
+  padding-left: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default {
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-left {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-right {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-body-default-left {
+  padding-right: 0;
+  padding-left: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-body-default-right {
+  padding-left: 0;
+  padding-right: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #99bce8;
+  background-color: #deecfd;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-content-box .x4-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-strip-default-left {
+  border-width: 0 1px 0 0;
+}
+/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-rtl.x4-tab-bar-strip-default-left {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-strip-default-right {
+  border-width: 0 0 0 1px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain .x4-rtl.x4-tab-bar-strip-default-right {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default {
+  background-color: #cbdbef;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: linear-gradient(bottom, #dde8f5, #cbdbef);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: linear-gradient(left, #dde8f5, #cbdbef);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: linear-gradient(right, #dde8f5, #cbdbef);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-nlg .x4-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-left,
+.x4-tab-bar-default .x4-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-top,
+.x4-tab-bar-default .x4-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-box-scroller {
+  margin-left: 1px;
+}
+/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-right .x4-box-scroller {
+  margin-left: 0;
+  margin-right: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-top .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 466, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-top .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-top .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-bottom .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 486, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-bottom .x4-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+/* line 489, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-bottom .x4-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-left .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 506, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-left .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-left .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default-right .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 526, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-right .x4-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-rtl.x4-tab-bar-default-right .x4-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-left-hover,
+.x4-tab-bar-default .x4-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-tabbar-scroll-top-hover,
+.x4-tab-bar-default .x4-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-default .x4-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x4-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x4-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-row-checker,
+.x4-column-header-checkbox .x4-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-column-header-checkbox .x4-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x4-grid-hd-checker-on .x4-column-header-text,
+.x4-grid-row-selected .x4-grid-row-checker,
+.x4-grid-row-checked .x4-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-expander {
+  background-position: -48px center;
+}
+/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-rtl.x4-tree-expander {
+  background: url(images/tree/arrows-rtl.gif) no-repeat -48px center;
+}
+/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-tree-expander-over .x4-rtl.x4-tree-expander {
+  background-position: -16px center;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-rtl.x4-tree-expander {
+  background-position: -32px center;
+}
+/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-rtl.x4-tree-expander {
+  background-position: 0 center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-rtl.x4-tree-elbow {
+  background-image: url(images/tree/elbow-rtl.gif);
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-rtl.x4-tree-elbow-end {
+  background-image: url(images/tree/elbow-end-rtl.gif);
+}
+/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-rtl.x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus-rtl.gif);
+}
+/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-rtl.x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus-rtl.gif);
+}
+/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus-rtl.gif);
+}
+/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus-rtl.gif);
+}
+/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-lines .x4-rtl.x4-tree-elbow-line {
+  background-image: url(images/tree/elbow-line-rtl.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-rtl.x4-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl-rtl.gif);
+}
+/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl-rtl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-rtl.x4-tree-elbow-img {
+  margin-right: 0;
+  margin-left: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon,
+.x4-tree-elbow-img,
+.x4-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-rtl.x4-tree-icon-leaf {
+  background-image: url(images/tree/leaf-rtl.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-rtl.x4-tree-icon-parent {
+  background-image: url(images/tree/folder-rtl.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-node-expanded .x4-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-node-expanded .x4-rtl.x4-tree-icon-parent {
+  background-image: url(images/tree/folder-open-rtl.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-rtl.x4-tree-checkbox {
+  margin-right: 0;
+  margin-left: 3px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-loading .x4-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-tree-loading .x4-rtl.x4-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-rtl.x4-tree-node-text {
+  padding-left: 0;
+  padding-right: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x4-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-append .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-above .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-below .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-drop-ok-between .x4-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x4-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl, .x4-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr, .x4-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-bl, .x4-box-blue .x4-box-br, .x4-box-blue .x4-box-tl, .x4-box-blue .x4-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-bc, .x4-box-blue .x4-box-mc, .x4-box-blue .x4-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x4-box-blue .x4-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 3, ../../../ext-theme-classic/sass/src/toolbar/Toolbar.scss */
+.x4-rtl.x4-toolbar-more-icon {
+  background-image: url(images/toolbar/more-left.gif) !important;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x4-message-box .x4-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-content-box .x4-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-field-toolbar .x4-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x4-content-box .x4-field-toolbar .x4-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x4-content-box div.x4-form-spinner-up,
+.x4-content-box div.x4-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x4-content-box .x4-toolbar-item div.x4-form-spinner-up,
+.x4-content-box .x4-toolbar-item div.x4-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-wrap .x4-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x4-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x4-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 8, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x4-rtl.x4-column-header-trigger {
+  background-image: url(images/grid/grid3-hd-btn-left.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-form-spinner-up, .x4-grid-editor .x4-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-content-box .x4-grid-editor .x4-form-spinner-up, .x4-content-box .x4-grid-editor .x4-form-spinner-down {
+  height: 9px;
+}
+/* line 24, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x4-grid-editor .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up, .x4-grid-editor .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x4-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-east,
+.x4-resizable-over .x4-resizable-handle-west,
+.x4-resizable-pinned .x4-resizable-handle-east,
+.x4-resizable-pinned .x4-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-south,
+.x4-resizable-over .x4-resizable-handle-north,
+.x4-resizable-pinned .x4-resizable-handle-south,
+.x4-resizable-pinned .x4-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southeast,
+.x4-resizable-pinned .x4-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northwest,
+.x4-resizable-pinned .x4-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-northeast,
+.x4-resizable-pinned .x4-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x4-resizable-over .x4-resizable-handle-southwest,
+.x4-resizable-pinned .x4-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-horz,
+.x4-ie6 .x4-slider-horz .x4-slider-end,
+.x4-ie6 .x4-slider-horz .x4-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-horz .x4-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-vert,
+.x4-ie6 .x4-slider-vert .x4-slider-end,
+.x4-ie6 .x4-slider-vert .x4-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x4-ie6 .x4-slider-vert .x4-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x4-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x4-tab-noicon .x4-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x4-body{margin:0}img{border:0}.x4-border-box,.x4-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x4-rtl{direction:rtl}.x4-ltr{direction:ltr}.x4-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x4-strict .x4-ie7 .x4-clear{height:0;width:0}.x4-layer{position:absolute!important;overflow:hidden;zoom:1}.x4-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x4-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x4-hide-display{display:none!important}.x4-hide-visibility{visibility:hidden!important}.x4-ie6 .x4-item-disabled{filter:none}.x4-hidden,.x4-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x4-hide-nosize{height:0!important;width:0!important}.x4-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x4-masked-relative{position:relative}.x4-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x4-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x4-list-plain{list-style-type:none;margin:0;padding:0}.x4-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x4-frame-tl,.x4-frame-tr,.x4-frame-tc,.x4-frame-bl,.x4-frame-br,.x4-frame-bc{overflow:hidden;background-repeat:no-repeat}.x4-frame-tc,.x4-frame-bc{background-repeat:repeat-x}.x4-frame-mc{background-repeat:repeat-x;overflow:hidden}.x4-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x4-item-disabled,.x4-item-disabled *{cursor:default}.x4-box-item{position:absolute!important;left:0;top:0}.x4-rtl>.x4-box-item{right:0;left:auto}.x4-ie6 .x4-rtl .x4-box-item,.x4-quirks .x4-ie .x4-rtl .x4-box-item{right:0;left:auto}div.x4-editor{overflow:visible}.x4-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x4-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x4-mask-msg{z-index:20001;position:absolute}.x4-progress{position:relative;border-style:solid;overflow:hidden}.x4-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x4-progress-text{overflow:hidden;position:absolute}.x4-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x4-btn-wrap{position:relative;display:block}.x4-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x4-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x4-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x4-btn-inner-center{text-align:center}.x4-btn-inner-left{text-align:left}.x4-rtl.x4-btn-inner-left{text-align:right}.x4-btn-inner-right{text-align:right}.x4-rtl.x4-btn-inner-right{text-align:left}.x4-box-layout-ct{overflow:hidden;zoom:1}.x4-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x4-rtl.x4-box-target{left:auto;right:0}.x4-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x4-horizontal-box-overflow-body{float:left}.x4-box-scroller{position:relative;background-repeat:no-repeat}.x4-box-scroller-left,.x4-box-scroller-right{float:left;height:100%;z-index:5}.x4-box-scroller-top .x4-box-scroller,.x4-box-scroller-bottom .x4-box-scroller{line-height:0;font-size:0;background-position:center 0}.x4-box-menu-after{float:right}.x4-rtl.x4-box-menu-after{float:left}.x4-toolbar-text{white-space:nowrap}.x4-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal{width:2px}.x4-toolbar-scroller{padding-left:0}.x4-toolbar-plain{border:0}.x4-docked{position:absolute!important;z-index:1}.x4-docked-vertical{position:static}.x4-docked-top{border-bottom-width:0!important}.x4-docked-bottom{border-top-width:0!important}.x4-docked-left{border-right-width:0!important}.x4-docked-right{border-left-width:0!important}.x4-docked-noborder-top{border-top-width:0!important}.x4-docked-noborder-right{border-right-width:0!important}.x4-docked-noborder-bottom{border-bottom-width:0!important}.x4-docked-noborder-left{border-left-width:0!important}.x4-noborder-l{border-left-width:0!important}.x4-noborder-b{border-bottom-width:0!important}.x4-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-r{border-right-width:0!important}.x4-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x4-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x4-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-t{border-top-width:0!important}.x4-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x4-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x4-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x4-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x4-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x4-noborder-trbl{border-width:0!important}.x4-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x4-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x4-rtl.x4-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x4-dd-drag-proxy,.x4-dd-drag-current{z-index:1000000!important;pointer-events:none}.x4-dd-drag-repair .x4-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x4-dd-drag-repair .x4-dd-drop-icon{display:none}.x4-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x4-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x4-rtl .x4-dd-drag-ghost{padding-left:5px;padding-right:20px}.x4-rtl .x4-dd-drop-icon{left:auto;right:3px}.x4-dd-drop-ok .x4-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x4-dd-drop-ok-add .x4-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x4-dd-drop-nodrop div.x4-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x4-panel,.x4-plain{overflow:hidden;position:relative}.x4-panel{outline:0}.x4-ie .x4-panel-header,.x4-ie .x4-panel-header-tl,.x4-ie .x4-panel-header-tc,.x4-ie .x4-panel-header-tr,.x4-ie .x4-panel-header-ml,.x4-ie .x4-panel-header-mc,.x4-ie .x4-panel-header-mr,.x4-ie .x4-panel-header-bl,.x4-ie .x4-panel-header-bc,.x4-ie .x4-panel-header-br{zoom:1}.x4-ie8 td.x4-frame-mc{vertical-align:top}.x4-panel-body{overflow:hidden;position:relative}.x4-nlg .x4-panel-header-vertical .x4-frame-mc{background-repeat:repeat-y}.x4-panel-header-plain,.x4-panel-body-plain{border:0;padding:0}.x4-tip{position:absolute;overflow:visible}.x4-tip-body{overflow:hidden;position:relative}.x4-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x4-table-layout{font-size:1em}.x4-btn-group{position:relative;overflow:hidden}.x4-btn-group-body{position:relative;zoom:1}.x4-btn-group-body .x4-table-layout-cell{vertical-align:top}.x4-viewport,.x4-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x4-window{outline:0;overflow:hidden}.x4-window .x4-window-wrap{position:relative}.x4-window-body{position:relative;overflow:hidden}.x4-window-body-plain{background:transparent}.x4-form-item-label{display:block}.x4-form-item-label-right{text-align:right}.x4-form-item-label-top{display:block;zoom:1}.x4-form-invalid-icon{overflow:hidden}.x4-form-invalid-icon ul{display:none}.x4-form-textarea{overflow:auto;resize:none}.x4-safari.x4-mac .x4-form-textarea{margin-bottom:-2px}.x4-form-display-field-body{vertical-align:top}.x4-form-cb-wrap{vertical-align:top}.x4-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x4-form-cb::-moz-focus-inner{padding:0;border:0}.x4-form-cb-label{display:inline-block;zoom:1}.x4-fieldset{display:block;position:relative}.x4-fieldset-header{overflow:hidden}.x4-fieldset-header .x4-form-item,.x4-fieldset-header .x4-tool{float:left}.x4-fieldset-header .x4-form-cb-wrap{font-size:0;line-height:0}.x4-fieldset-header .x4-form-cb{margin:0}.x4-rtl.x4-fieldset-header .x4-form-item,.x4-rtl.x4-fieldset-header .x4-tool{float:right}.x4-fieldset-header-text{float:left}.x4-webkit *:focus{outline:none!important}.x4-form-item{vertical-align:top;table-layout:fixed}.x4-form-item-body{position:relative}.x4-rtl.x4-form-item .x4-form-item-input-row{position:relative;right:0}.x4-form-form-item td{border-top:1px solid transparent}.x4-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x4-item-disabled .x4-form-trigger{cursor:default}.x4-trigger-noedit{cursor:default}.x4-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x4-form-spinner-up,.x4-form-spinner-down{font-size:0}.x4-datepicker{position:relative}.x4-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x4-datepicker-cell{padding:0}.x4-datepicker-header{position:relative;zoom:1}.x4-datepicker-arrow{position:absolute;outline:0;font-size:0}.x4-datepicker-column-header{padding:0}.x4-datepicker-date{display:block;zoom:1;text-decoration:none}.x4-monthpicker{position:absolute;left:0;top:0}.x4-monthpicker-body{height:100%}.x4-monthpicker-months,.x4-monthpicker-years{float:left;height:100%}.x4-monthpicker-item{float:left}.x4-monthpicker-item-inner{display:block;text-decoration:none}.x4-monthpicker-yearnav-button-ct{float:left;text-align:center}.x4-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x4-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x4-strict .x4-ie6 .x4-monthpicker-buttons{bottom:-1px}.x4-form-file-btn{overflow:hidden}.x4-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x4-rtl.x4-form-file-input{right:auto;left:-2px}.x4-form-item-hidden{margin:0}.x4-color-picker-item{float:left;text-decoration:none}.x4-color-picker-item-inner{display:block;font-size:1px}.x4-html-editor-tb .x4-toolbar{position:static!important}.x4-htmleditor-iframe{display:block;overflow:auto}.x4-fit-item{position:relative}.x4-grid-row,.x4-grid-data-row{outline:0}.x4-grid-view{overflow:hidden;position:relative}.x4-grid-table{table-layout:fixed;border-collapse:separate}.x4-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x4-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x4-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x4-grid-header-ct{cursor:default}.x4-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x4-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x4-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x4-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x4-rtl.x4-column-header-trigger{left:0;right:auto}.x4-column-header-over .x4-column-header-trigger,.x4-column-header-open .x4-column-header-trigger{display:block}.x4-column-header-align-right{text-align:right}.x4-rtl.x4-column-header-align-right{text-align:left}.x4-column-header-align-left{text-align:left}.x4-rtl.x4-column-header-align-left{text-align:right}.x4-column-header-align-center{text-align:center}.x4-grid-cell-inner-action-col{line-height:0;font-size:0}.x4-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x4-row-numberer .x4-column-header-inner{text-overflow:clip}.x4-grid-group,.x4-grid-group-body,.x4-grid-group-hd{zoom:1}.x4-grid-group-hd{white-space:nowrap}.x4-grid-row-body-hidden,.x4-grid-group-collapsed{display:none}.x4-grid-rowbody{zoom:1}.x4-grid-row-body-hidden{display:none}td.x4-grid-rowwrap .x4-grid-table{border:0}td.x4-grid-rowwrap .x4-grid-cell{border-bottom:0;background-color:transparent}.x4-grid-editor .x4-form-cb-wrap{text-align:center}.x4-grid-editor .x4-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x4-grid-editor div.x4-form-action-col-field{line-height:0}.x4-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x4-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x4-grid-row-expander{font-size:0;line-height:0}.x4-abs-layout-ct{position:relative}.x4-abs-layout-item{position:absolute!important}.x4-splitter{font-size:1px}.x4-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x4-splitter-vertical{cursor:e-resize;cursor:col-resize}.x4-splitter-collapsed,.x4-splitter-horizontal-noresize,.x4-splitter-vertical-noresize{cursor:default}.x4-splitter-active{z-index:4}.x4-collapse-el{position:absolute;background-repeat:no-repeat}.x4-border-layout-ct{overflow:hidden;zoom:1}.x4-border-layout-ct{position:relative}.x4-border-region-slide-in{z-index:5}.x4-region-collapsed-placeholder{z-index:4}.x4-column{float:left}.x4-rtl>.x4-column{float:right}.x4-ie6 .x4-rtl .x4-column,.x4-quirks .x4-ie .x4-rtl .x4-column{float:right}.x4-ie6 .x4-column{display:inline}.x4-quirks .x4-ie .x4-form-layout-table,.x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item{position:relative}.x4-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x4-ie6 .x4-form-layout-table{border-collapse:collapse;border-spacing:0}.x4-menu{outline:0}.x4-menu-item{white-space:nowrap;overflow:hidden}.x4-menu-item-cmp .x4-field-label-cell{vertical-align:middle}.x4-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x4-menu-plain .x4-menu-icon-separator{display:none}.x4-menu-item-link{text-decoration:none;outline:0;zoom:1}.x4-menu-item-text{zoom:1}.x4-menu-item-icon,.x4-menu-item-icon-right,.x4-menu-item-arrow{position:absolute;text-align:center}.x4-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x4-slider{outline:0;zoom:1;position:relative}.x4-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x4-slider-vert .x4-slider-inner{background:repeat-y 0 0}.x4-slider-end{zoom:1}.x4-slider-thumb{position:absolute;background:no-repeat 0 0}.x4-slider-horz .x4-slider-thumb{left:0}.x4-slider-vert .x4-slider-thumb{bottom:0}a.x4-tab{text-decoration:none}.x4-tab-bar{position:relative}.x4-column-header-checkbox .x4-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x4-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x4-tab{display:block;white-space:nowrap;z-index:1}.x4-tab-active{z-index:3}.x4-tab-wrap{display:block;position:relative}.x4-tab-button{zoom:1;display:block;outline:0}.x4-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x4-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x4-tab-bar{z-index:1}.x4-tab-bar-body{z-index:2;position:relative}.x4-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x4-tab-bar-horizontal .x4-tab-bar-strip{width:100%;left:0}.x4-tab-bar-vertical .x4-tab-bar-strip{height:100%;top:0}.x4-tab-bar-strip-top{bottom:0}.x4-tab-bar-strip-bottom{top:0}.x4-tab-bar-strip-left{right:0}.x4-rtl.x4-tab-bar .x4-tab-bar-strip-left{right:auto;left:0}.x4-tab-bar-strip-right{left:0}.x4-rtl.x4-tab-bar .x4-tab-bar-strip-right{left:auto;right:0}.x4-tab-bar-plain{background:transparent!important}.x4-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x4-rtl.x4-tab-icon-el{left:auto;right:0}.x4-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x4-tab-mc{overflow:visible}.x4-autowidth-table .x4-grid-table{table-layout:auto;width:auto!important}.x4-tree-view{overflow:hidden}.x4-tree-elbow-img,.x4-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x4-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x4-tree-animator-wrap{overflow:hidden}.x4-tree-node-text{zoom:1}.x4-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x4-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x4-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x4-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x4-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x4-animating-size,.x4-collapsed{overflow:hidden!important}.x4-editor .x4-form-item-body{padding-bottom:0}.x4-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x4-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x4-focus-frame-top,.x4-focus-frame-bottom,.x4-focus-frame-left,.x4-focus-frame-right{position:absolute;top:0;left:0}.x4-focus-frame-top,.x4-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x4-focus-frame-left,.x4-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x4-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x4-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x4-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x4-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x4-rtl.x4-mask-msg-text{padding:5px 20px 5px 5px;background-position:right center}.x4-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x4-content-box .x4-progress-default{height:18px}.x4-progress-default .x4-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x4-nlg .x4-progress-default .x4-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x4-progress-default .x4-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x4-progress-default .x4-progress-text-back{color:#396295;line-height:18px}.x4-progress-default .x4-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x4-btn-default-small{border-color:#d1d1d1}.x4-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-btn-default-small-tl{background-position:0 -6px}.x4-btn-default-small-tr{background-position:right -9px}.x4-btn-default-small-bl{background-position:0 -12px}.x4-btn-default-small-br{background-position:right -15px}.x4-btn-default-small-ml{background-position:0 top}.x4-btn-default-small-mr{background-position:right top}.x4-btn-default-small-tc{background-position:0 0}.x4-btn-default-small-bc{background-position:0 -3px}.x4-btn-default-small-tr,.x4-btn-default-small-br,.x4-btn-default-small-mr{padding-right:3px}.x4-btn-default-small-tl,.x4-btn-default-small-bl,.x4-btn-default-small-ml{padding-left:3px}.x4-btn-default-small-tc{height:3px}.x4-btn-default-small-bc{height:3px}.x4-btn-default-small-tl,.x4-btn-default-small-bl,.x4-btn-default-small-tr,.x4-btn-default-small-br,.x4-btn-default-small-tc,.x4-btn-default-small-bc,.x4-btn-default-small-ml,.x4-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x4-btn-default-small-ml,.x4-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x4-btn-default-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-small-tl,.x4-strict .x4-ie7 .x4-btn-default-small-bl{position:relative;right:0}.x4-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x4-btn-default-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x4-btn-default-small .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-small .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-small .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-small .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-small .x4-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-small .x4-btn-glyph{color:#999}.x4-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-small-icon .x4-btn-button,.x4-btn-default-small-noicon .x4-btn-button{height:16px}.x4-btn-default-small-icon .x4-btn-inner,.x4-btn-default-small-noicon .x4-btn-inner{line-height:16px}.x4-btn-default-small-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-small-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:4px;padding-left:0}.x4-btn-default-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-small-icon .x4-btn-icon-el{width:16px;height:16px}.x4-btn-default-small-icon-text-left .x4-btn-button{height:16px}.x4-btn-default-small-icon-text-left .x4-btn-inner{line-height:16px;padding-left:20px}.x4-btn-default-small-icon-text-left .x4-rtl.x4-btn-inner{padding-left:4px;padding-right:20px}.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:20px}.x4-btn-default-small-icon-text-left .x4-btn-icon-el{width:16px;right:auto}.x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon-el{height:16px}.x4-btn-default-small-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-small-icon-text-right .x4-btn-button{height:16px}.x4-btn-default-small-icon-text-right .x4-btn-inner{line-height:16px;padding-right:20px}.x4-btn-default-small-icon-text-right .x4-rtl.x4-btn-inner{padding-right:4px;padding-left:20px}.x4-btn-default-small-icon-text-right .x4-btn-icon-el{width:16px;left:auto}.x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon-el{height:16px}.x4-btn-default-small-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-small-icon-text-top .x4-btn-icon-el{height:16px;bottom:auto}.x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-small-icon-text-bottom .x4-btn-icon-el{height:16px;top:auto}.x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-menu-active,.x4-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-small-over .x4-frame-tl,.x4-btn-default-small-over .x4-frame-bl,.x4-btn-default-small-over .x4-frame-tr,.x4-btn-default-small-over .x4-frame-br,.x4-btn-default-small-over .x4-frame-tc,.x4-btn-default-small-over .x4-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x4-btn-default-small-over .x4-frame-ml,.x4-btn-default-small-over .x4-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x4-btn-default-small-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x4-btn-default-small-focus .x4-frame-tl,.x4-btn-default-small-focus .x4-frame-bl,.x4-btn-default-small-focus .x4-frame-tr,.x4-btn-default-small-focus .x4-frame-br,.x4-btn-default-small-focus .x4-frame-tc,.x4-btn-default-small-focus .x4-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x4-btn-default-small-focus .x4-frame-ml,.x4-btn-default-small-focus .x4-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x4-btn-default-small-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x4-btn-default-small-menu-active .x4-frame-tl,.x4-btn-default-small-menu-active .x4-frame-bl,.x4-btn-default-small-menu-active .x4-frame-tr,.x4-btn-default-small-menu-active .x4-frame-br,.x4-btn-default-small-menu-active .x4-frame-tc,.x4-btn-default-small-menu-active .x4-frame-bc,.x4-btn-default-small-pressed .x4-frame-tl,.x4-btn-default-small-pressed .x4-frame-bl,.x4-btn-default-small-pressed .x4-frame-tr,.x4-btn-default-small-pressed .x4-frame-br,.x4-btn-default-small-pressed .x4-frame-tc,.x4-btn-default-small-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x4-btn-default-small-menu-active .x4-frame-ml,.x4-btn-default-small-menu-active .x4-frame-mr,.x4-btn-default-small-pressed .x4-frame-ml,.x4-btn-default-small-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x4-btn-default-small-menu-active .x4-frame-mc,.x4-btn-default-small-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x4-btn-default-small-disabled .x4-frame-tl,.x4-btn-default-small-disabled .x4-frame-bl,.x4-btn-default-small-disabled .x4-frame-tr,.x4-btn-default-small-disabled .x4-frame-br,.x4-btn-default-small-disabled .x4-frame-tc,.x4-btn-default-small-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x4-btn-default-small-disabled .x4-frame-ml,.x4-btn-default-small-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x4-btn-default-small-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x4-nlg .x4-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x4-nlg .x4-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x4-nlg .x4-btn-default-small-menu-active,.x4-nlg .x4-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x4-nlg .x4-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x4-nbr .x4-btn-default-small{background-image:none}.x4-btn-default-small .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-small .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-small .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-small-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-small-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-small-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-small-disabled .x4-btn-inner,.x4-btn-default-small-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x4-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x4-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x4-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x4-btn-default-medium{border-color:#d1d1d1}.x4-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-medium-tl{background-position:0 -6px}.x4-btn-default-medium-tr{background-position:right -9px}.x4-btn-default-medium-bl{background-position:0 -12px}.x4-btn-default-medium-br{background-position:right -15px}.x4-btn-default-medium-ml{background-position:0 top}.x4-btn-default-medium-mr{background-position:right top}.x4-btn-default-medium-tc{background-position:0 0}.x4-btn-default-medium-bc{background-position:0 -3px}.x4-btn-default-medium-tr,.x4-btn-default-medium-br,.x4-btn-default-medium-mr{padding-right:3px}.x4-btn-default-medium-tl,.x4-btn-default-medium-bl,.x4-btn-default-medium-ml{padding-left:3px}.x4-btn-default-medium-tc{height:3px}.x4-btn-default-medium-bc{height:3px}.x4-btn-default-medium-tl,.x4-btn-default-medium-bl,.x4-btn-default-medium-tr,.x4-btn-default-medium-br,.x4-btn-default-medium-tc,.x4-btn-default-medium-bc,.x4-btn-default-medium-ml,.x4-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x4-btn-default-medium-ml,.x4-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x4-btn-default-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-medium-bl{position:relative;right:0}.x4-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x4-btn-default-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-medium .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-medium .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-medium .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-medium .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-medium .x4-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-medium .x4-btn-glyph{color:#999}.x4-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-medium-icon .x4-btn-button,.x4-btn-default-medium-noicon .x4-btn-button{height:24px}.x4-btn-default-medium-icon .x4-btn-inner,.x4-btn-default-medium-noicon .x4-btn-inner{line-height:24px}.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:0}.x4-btn-default-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-medium-icon .x4-btn-icon-el{width:24px;height:24px}.x4-btn-default-medium-icon-text-left .x4-btn-button{height:24px}.x4-btn-default-medium-icon-text-left .x4-btn-inner{line-height:24px;padding-left:28px}.x4-btn-default-medium-icon-text-left .x4-rtl.x4-btn-inner{padding-left:3px;padding-right:28px}.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:28px}.x4-btn-default-medium-icon-text-left .x4-btn-icon-el{width:24px;right:auto}.x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon-el{height:24px}.x4-btn-default-medium-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-medium-icon-text-right .x4-btn-button{height:24px}.x4-btn-default-medium-icon-text-right .x4-btn-inner{line-height:24px;padding-right:28px}.x4-btn-default-medium-icon-text-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:28px}.x4-btn-default-medium-icon-text-right .x4-btn-icon-el{width:24px;left:auto}.x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon-el{height:24px}.x4-btn-default-medium-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-medium-icon-text-top .x4-btn-icon-el{height:24px;bottom:auto}.x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el{height:24px;top:auto}.x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-menu-active,.x4-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-medium-over .x4-frame-tl,.x4-btn-default-medium-over .x4-frame-bl,.x4-btn-default-medium-over .x4-frame-tr,.x4-btn-default-medium-over .x4-frame-br,.x4-btn-default-medium-over .x4-frame-tc,.x4-btn-default-medium-over .x4-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x4-btn-default-medium-over .x4-frame-ml,.x4-btn-default-medium-over .x4-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x4-btn-default-medium-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x4-btn-default-medium-focus .x4-frame-tl,.x4-btn-default-medium-focus .x4-frame-bl,.x4-btn-default-medium-focus .x4-frame-tr,.x4-btn-default-medium-focus .x4-frame-br,.x4-btn-default-medium-focus .x4-frame-tc,.x4-btn-default-medium-focus .x4-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x4-btn-default-medium-focus .x4-frame-ml,.x4-btn-default-medium-focus .x4-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x4-btn-default-medium-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x4-btn-default-medium-menu-active .x4-frame-tl,.x4-btn-default-medium-menu-active .x4-frame-bl,.x4-btn-default-medium-menu-active .x4-frame-tr,.x4-btn-default-medium-menu-active .x4-frame-br,.x4-btn-default-medium-menu-active .x4-frame-tc,.x4-btn-default-medium-menu-active .x4-frame-bc,.x4-btn-default-medium-pressed .x4-frame-tl,.x4-btn-default-medium-pressed .x4-frame-bl,.x4-btn-default-medium-pressed .x4-frame-tr,.x4-btn-default-medium-pressed .x4-frame-br,.x4-btn-default-medium-pressed .x4-frame-tc,.x4-btn-default-medium-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x4-btn-default-medium-menu-active .x4-frame-ml,.x4-btn-default-medium-menu-active .x4-frame-mr,.x4-btn-default-medium-pressed .x4-frame-ml,.x4-btn-default-medium-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x4-btn-default-medium-menu-active .x4-frame-mc,.x4-btn-default-medium-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x4-btn-default-medium-disabled .x4-frame-tl,.x4-btn-default-medium-disabled .x4-frame-bl,.x4-btn-default-medium-disabled .x4-frame-tr,.x4-btn-default-medium-disabled .x4-frame-br,.x4-btn-default-medium-disabled .x4-frame-tc,.x4-btn-default-medium-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x4-btn-default-medium-disabled .x4-frame-ml,.x4-btn-default-medium-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x4-btn-default-medium-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x4-nlg .x4-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x4-nlg .x4-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x4-nlg .x4-btn-default-medium-menu-active,.x4-nlg .x4-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x4-nlg .x4-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x4-nbr .x4-btn-default-medium{background-image:none}.x4-btn-default-medium .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-medium .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-medium .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-medium-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-medium-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-medium-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-medium-disabled .x4-btn-inner,.x4-btn-default-medium-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x4-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x4-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x4-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x4-btn-default-large{border-color:#d1d1d1}.x4-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-large-tl{background-position:0 -6px}.x4-btn-default-large-tr{background-position:right -9px}.x4-btn-default-large-bl{background-position:0 -12px}.x4-btn-default-large-br{background-position:right -15px}.x4-btn-default-large-ml{background-position:0 top}.x4-btn-default-large-mr{background-position:right top}.x4-btn-default-large-tc{background-position:0 0}.x4-btn-default-large-bc{background-position:0 -3px}.x4-btn-default-large-tr,.x4-btn-default-large-br,.x4-btn-default-large-mr{padding-right:3px}.x4-btn-default-large-tl,.x4-btn-default-large-bl,.x4-btn-default-large-ml{padding-left:3px}.x4-btn-default-large-tc{height:3px}.x4-btn-default-large-bc{height:3px}.x4-btn-default-large-tl,.x4-btn-default-large-bl,.x4-btn-default-large-tr,.x4-btn-default-large-br,.x4-btn-default-large-tc,.x4-btn-default-large-bc,.x4-btn-default-large-ml,.x4-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x4-btn-default-large-ml,.x4-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x4-btn-default-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-large-tl,.x4-strict .x4-ie7 .x4-btn-default-large-bl{position:relative;right:0}.x4-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x4-btn-default-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-large .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-large .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-large .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-large .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-large .x4-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-large .x4-btn-glyph{color:#999}.x4-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-large-icon .x4-btn-button,.x4-btn-default-large-noicon .x4-btn-button{height:32px}.x4-btn-default-large-icon .x4-btn-inner,.x4-btn-default-large-noicon .x4-btn-inner{line-height:32px}.x4-btn-default-large-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-large-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:0}.x4-btn-default-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-large-icon .x4-btn-icon-el{width:32px;height:32px}.x4-btn-default-large-icon-text-left .x4-btn-button{height:32px}.x4-btn-default-large-icon-text-left .x4-btn-inner{line-height:32px;padding-left:36px}.x4-btn-default-large-icon-text-left .x4-rtl.x4-btn-inner{padding-left:3px;padding-right:36px}.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:36px}.x4-btn-default-large-icon-text-left .x4-btn-icon-el{width:32px;right:auto}.x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon-el{height:32px}.x4-btn-default-large-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-large-icon-text-right .x4-btn-button{height:32px}.x4-btn-default-large-icon-text-right .x4-btn-inner{line-height:32px;padding-right:36px}.x4-btn-default-large-icon-text-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:36px}.x4-btn-default-large-icon-text-right .x4-btn-icon-el{width:32px;left:auto}.x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon-el{height:32px}.x4-btn-default-large-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-large-icon-text-top .x4-btn-icon-el{height:32px;bottom:auto}.x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-large-icon-text-bottom .x4-btn-icon-el{height:32px;top:auto}.x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-menu-active,.x4-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-large-over .x4-frame-tl,.x4-btn-default-large-over .x4-frame-bl,.x4-btn-default-large-over .x4-frame-tr,.x4-btn-default-large-over .x4-frame-br,.x4-btn-default-large-over .x4-frame-tc,.x4-btn-default-large-over .x4-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x4-btn-default-large-over .x4-frame-ml,.x4-btn-default-large-over .x4-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x4-btn-default-large-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x4-btn-default-large-focus .x4-frame-tl,.x4-btn-default-large-focus .x4-frame-bl,.x4-btn-default-large-focus .x4-frame-tr,.x4-btn-default-large-focus .x4-frame-br,.x4-btn-default-large-focus .x4-frame-tc,.x4-btn-default-large-focus .x4-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x4-btn-default-large-focus .x4-frame-ml,.x4-btn-default-large-focus .x4-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x4-btn-default-large-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x4-btn-default-large-menu-active .x4-frame-tl,.x4-btn-default-large-menu-active .x4-frame-bl,.x4-btn-default-large-menu-active .x4-frame-tr,.x4-btn-default-large-menu-active .x4-frame-br,.x4-btn-default-large-menu-active .x4-frame-tc,.x4-btn-default-large-menu-active .x4-frame-bc,.x4-btn-default-large-pressed .x4-frame-tl,.x4-btn-default-large-pressed .x4-frame-bl,.x4-btn-default-large-pressed .x4-frame-tr,.x4-btn-default-large-pressed .x4-frame-br,.x4-btn-default-large-pressed .x4-frame-tc,.x4-btn-default-large-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x4-btn-default-large-menu-active .x4-frame-ml,.x4-btn-default-large-menu-active .x4-frame-mr,.x4-btn-default-large-pressed .x4-frame-ml,.x4-btn-default-large-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x4-btn-default-large-menu-active .x4-frame-mc,.x4-btn-default-large-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x4-btn-default-large-disabled .x4-frame-tl,.x4-btn-default-large-disabled .x4-frame-bl,.x4-btn-default-large-disabled .x4-frame-tr,.x4-btn-default-large-disabled .x4-frame-br,.x4-btn-default-large-disabled .x4-frame-tc,.x4-btn-default-large-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x4-btn-default-large-disabled .x4-frame-ml,.x4-btn-default-large-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x4-btn-default-large-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x4-nlg .x4-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x4-nlg .x4-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x4-nlg .x4-btn-default-large-menu-active,.x4-nlg .x4-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x4-nlg .x4-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x4-nbr .x4-btn-default-large{background-image:none}.x4-btn-default-large .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-large .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-large .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-large-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-large-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-large-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-large-disabled .x4-btn-inner,.x4-btn-default-large-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x4-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x4-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x4-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x4-btn-default-toolbar-small{border-color:transparent}.x4-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-small-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-btn-default-toolbar-small-tl{background-position:0 -6px}.x4-btn-default-toolbar-small-tr{background-position:right -9px}.x4-btn-default-toolbar-small-bl{background-position:0 -12px}.x4-btn-default-toolbar-small-br{background-position:right -15px}.x4-btn-default-toolbar-small-ml{background-position:0 top}.x4-btn-default-toolbar-small-mr{background-position:right top}.x4-btn-default-toolbar-small-tc{background-position:0 0}.x4-btn-default-toolbar-small-bc{background-position:0 -3px}.x4-btn-default-toolbar-small-tr,.x4-btn-default-toolbar-small-br,.x4-btn-default-toolbar-small-mr{padding-right:3px}.x4-btn-default-toolbar-small-tl,.x4-btn-default-toolbar-small-bl,.x4-btn-default-toolbar-small-ml{padding-left:3px}.x4-btn-default-toolbar-small-tc{height:3px}.x4-btn-default-toolbar-small-bc{height:3px}.x4-btn-default-toolbar-small-tl,.x4-btn-default-toolbar-small-bl,.x4-btn-default-toolbar-small-tr,.x4-btn-default-toolbar-small-br,.x4-btn-default-toolbar-small-tc,.x4-btn-default-toolbar-small-bc,.x4-btn-default-toolbar-small-ml,.x4-btn-default-toolbar-small-mr{zoom:1}.x4-btn-default-toolbar-small-ml,.x4-btn-default-toolbar-small-mr{zoom:1}.x4-btn-default-toolbar-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl{position:relative;right:0}.x4-btn-default-toolbar-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x4-btn-default-toolbar-small .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-small .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-small .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-toolbar-small .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-small .x4-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-small .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-small-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-small-icon .x4-btn-button,.x4-btn-default-toolbar-small-noicon .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon .x4-btn-inner,.x4-btn-default-toolbar-small-noicon .x4-btn-inner{line-height:16px}.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:4px;padding-left:0}.x4-btn-default-toolbar-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-toolbar-small-icon .x4-btn-icon-el{width:16px;height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner{line-height:16px;padding-left:20px}.x4-btn-default-toolbar-small-icon-text-left .x4-rtl.x4-btn-inner{padding-left:4px;padding-right:20px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:20px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el{width:16px;right:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el{height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner{line-height:16px;padding-right:20px}.x4-btn-default-toolbar-small-icon-text-right .x4-rtl.x4-btn-inner{padding-right:4px;padding-left:20px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el{width:16px;left:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el{height:16px}.x4-btn-default-toolbar-small-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el{height:16px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el{height:16px;top:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-menu-active,.x4-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-small-over .x4-frame-tl,.x4-btn-default-toolbar-small-over .x4-frame-bl,.x4-btn-default-toolbar-small-over .x4-frame-tr,.x4-btn-default-toolbar-small-over .x4-frame-br,.x4-btn-default-toolbar-small-over .x4-frame-tc,.x4-btn-default-toolbar-small-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x4-btn-default-toolbar-small-over .x4-frame-ml,.x4-btn-default-toolbar-small-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x4-btn-default-toolbar-small-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-tl,.x4-btn-default-toolbar-small-focus .x4-frame-bl,.x4-btn-default-toolbar-small-focus .x4-frame-tr,.x4-btn-default-toolbar-small-focus .x4-frame-br,.x4-btn-default-toolbar-small-focus .x4-frame-tc,.x4-btn-default-toolbar-small-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-ml,.x4-btn-default-toolbar-small-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-tl,.x4-btn-default-toolbar-small-menu-active .x4-frame-bl,.x4-btn-default-toolbar-small-menu-active .x4-frame-tr,.x4-btn-default-toolbar-small-menu-active .x4-frame-br,.x4-btn-default-toolbar-small-menu-active .x4-frame-tc,.x4-btn-default-toolbar-small-menu-active .x4-frame-bc,.x4-btn-default-toolbar-small-pressed .x4-frame-tl,.x4-btn-default-toolbar-small-pressed .x4-frame-bl,.x4-btn-default-toolbar-small-pressed .x4-frame-tr,.x4-btn-default-toolbar-small-pressed .x4-frame-br,.x4-btn-default-toolbar-small-pressed .x4-frame-tc,.x4-btn-default-toolbar-small-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-ml,.x4-btn-default-toolbar-small-menu-active .x4-frame-mr,.x4-btn-default-toolbar-small-pressed .x4-frame-ml,.x4-btn-default-toolbar-small-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-mc,.x4-btn-default-toolbar-small-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-tl,.x4-btn-default-toolbar-small-disabled .x4-frame-bl,.x4-btn-default-toolbar-small-disabled .x4-frame-tr,.x4-btn-default-toolbar-small-disabled .x4-frame-br,.x4-btn-default-toolbar-small-disabled .x4-frame-tc,.x4-btn-default-toolbar-small-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-ml,.x4-btn-default-toolbar-small-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-small-menu-active,.x4-nlg .x4-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-small{background-image:none}.x4-btn-default-toolbar-small .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-small .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-toolbar-small .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-small-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-small-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-toolbar-small-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x4-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x4-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x4-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x4-btn-default-toolbar-medium{border-color:transparent}.x4-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-medium-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-toolbar-medium-tl{background-position:0 -6px}.x4-btn-default-toolbar-medium-tr{background-position:right -9px}.x4-btn-default-toolbar-medium-bl{background-position:0 -12px}.x4-btn-default-toolbar-medium-br{background-position:right -15px}.x4-btn-default-toolbar-medium-ml{background-position:0 top}.x4-btn-default-toolbar-medium-mr{background-position:right top}.x4-btn-default-toolbar-medium-tc{background-position:0 0}.x4-btn-default-toolbar-medium-bc{background-position:0 -3px}.x4-btn-default-toolbar-medium-tr,.x4-btn-default-toolbar-medium-br,.x4-btn-default-toolbar-medium-mr{padding-right:3px}.x4-btn-default-toolbar-medium-tl,.x4-btn-default-toolbar-medium-bl,.x4-btn-default-toolbar-medium-ml{padding-left:3px}.x4-btn-default-toolbar-medium-tc{height:3px}.x4-btn-default-toolbar-medium-bc{height:3px}.x4-btn-default-toolbar-medium-tl,.x4-btn-default-toolbar-medium-bl,.x4-btn-default-toolbar-medium-tr,.x4-btn-default-toolbar-medium-br,.x4-btn-default-toolbar-medium-tc,.x4-btn-default-toolbar-medium-bc,.x4-btn-default-toolbar-medium-ml,.x4-btn-default-toolbar-medium-mr{zoom:1}.x4-btn-default-toolbar-medium-ml,.x4-btn-default-toolbar-medium-mr{zoom:1}.x4-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl{position:relative;right:0}.x4-btn-default-toolbar-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-toolbar-medium .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-medium .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-medium .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-toolbar-medium .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-medium .x4-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-medium .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-medium-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-medium-icon .x4-btn-button,.x4-btn-default-toolbar-medium-noicon .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon .x4-btn-inner,.x4-btn-default-toolbar-medium-noicon .x4-btn-inner{line-height:24px}.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:0}.x4-btn-default-toolbar-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-toolbar-medium-icon .x4-btn-icon-el{width:24px;height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner{line-height:24px;padding-left:28px}.x4-btn-default-toolbar-medium-icon-text-left .x4-rtl.x4-btn-inner{padding-left:3px;padding-right:28px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:28px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el{width:24px;right:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el{height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner{line-height:24px;padding-right:28px}.x4-btn-default-toolbar-medium-icon-text-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:28px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el{width:24px;left:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el{height:24px}.x4-btn-default-toolbar-medium-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el{height:24px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el{height:24px;top:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-menu-active,.x4-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-medium-over .x4-frame-tl,.x4-btn-default-toolbar-medium-over .x4-frame-bl,.x4-btn-default-toolbar-medium-over .x4-frame-tr,.x4-btn-default-toolbar-medium-over .x4-frame-br,.x4-btn-default-toolbar-medium-over .x4-frame-tc,.x4-btn-default-toolbar-medium-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x4-btn-default-toolbar-medium-over .x4-frame-ml,.x4-btn-default-toolbar-medium-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x4-btn-default-toolbar-medium-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-tl,.x4-btn-default-toolbar-medium-focus .x4-frame-bl,.x4-btn-default-toolbar-medium-focus .x4-frame-tr,.x4-btn-default-toolbar-medium-focus .x4-frame-br,.x4-btn-default-toolbar-medium-focus .x4-frame-tc,.x4-btn-default-toolbar-medium-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-ml,.x4-btn-default-toolbar-medium-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,.x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,.x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,.x4-btn-default-toolbar-medium-menu-active .x4-frame-br,.x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,.x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,.x4-btn-default-toolbar-medium-pressed .x4-frame-tl,.x4-btn-default-toolbar-medium-pressed .x4-frame-bl,.x4-btn-default-toolbar-medium-pressed .x4-frame-tr,.x4-btn-default-toolbar-medium-pressed .x4-frame-br,.x4-btn-default-toolbar-medium-pressed .x4-frame-tc,.x4-btn-default-toolbar-medium-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,.x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,.x4-btn-default-toolbar-medium-pressed .x4-frame-ml,.x4-btn-default-toolbar-medium-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,.x4-btn-default-toolbar-medium-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-tl,.x4-btn-default-toolbar-medium-disabled .x4-frame-bl,.x4-btn-default-toolbar-medium-disabled .x4-frame-tr,.x4-btn-default-toolbar-medium-disabled .x4-frame-br,.x4-btn-default-toolbar-medium-disabled .x4-frame-tc,.x4-btn-default-toolbar-medium-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-ml,.x4-btn-default-toolbar-medium-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-medium-menu-active,.x4-nlg .x4-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-medium{background-image:none}.x4-btn-default-toolbar-medium .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-medium .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-toolbar-medium .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-medium-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-medium-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-toolbar-medium-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x4-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x4-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x4-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x4-btn-default-toolbar-large{border-color:transparent}.x4-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-large-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-toolbar-large-tl{background-position:0 -6px}.x4-btn-default-toolbar-large-tr{background-position:right -9px}.x4-btn-default-toolbar-large-bl{background-position:0 -12px}.x4-btn-default-toolbar-large-br{background-position:right -15px}.x4-btn-default-toolbar-large-ml{background-position:0 top}.x4-btn-default-toolbar-large-mr{background-position:right top}.x4-btn-default-toolbar-large-tc{background-position:0 0}.x4-btn-default-toolbar-large-bc{background-position:0 -3px}.x4-btn-default-toolbar-large-tr,.x4-btn-default-toolbar-large-br,.x4-btn-default-toolbar-large-mr{padding-right:3px}.x4-btn-default-toolbar-large-tl,.x4-btn-default-toolbar-large-bl,.x4-btn-default-toolbar-large-ml{padding-left:3px}.x4-btn-default-toolbar-large-tc{height:3px}.x4-btn-default-toolbar-large-bc{height:3px}.x4-btn-default-toolbar-large-tl,.x4-btn-default-toolbar-large-bl,.x4-btn-default-toolbar-large-tr,.x4-btn-default-toolbar-large-br,.x4-btn-default-toolbar-large-tc,.x4-btn-default-toolbar-large-bc,.x4-btn-default-toolbar-large-ml,.x4-btn-default-toolbar-large-mr{zoom:1}.x4-btn-default-toolbar-large-ml,.x4-btn-default-toolbar-large-mr{zoom:1}.x4-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl{position:relative;right:0}.x4-btn-default-toolbar-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-toolbar-large .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-large .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-large .x4-rtl.x4-btn-arrow-right{padding-right:0;padding-left:12px}.x4-btn-default-toolbar-large .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-large .x4-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-large .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-large-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-large-icon .x4-btn-button,.x4-btn-default-toolbar-large-noicon .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon .x4-btn-inner,.x4-btn-default-toolbar-large-noicon .x4-btn-inner{line-height:32px}.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-rtl.x4-btn-inner,.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:0}.x4-btn-default-toolbar-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-toolbar-large-icon .x4-btn-icon-el{width:32px;height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner{line-height:32px;padding-left:36px}.x4-btn-default-toolbar-large-icon-text-left .x4-rtl.x4-btn-inner{padding-left:3px;padding-right:36px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-rtl.x4-btn-inner{padding-right:36px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el{width:32px;right:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el{height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-rtl.x4-btn-icon-el{left:auto;right:0}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner{line-height:32px;padding-right:36px}.x4-btn-default-toolbar-large-icon-text-right .x4-rtl.x4-btn-inner{padding-right:3px;padding-left:36px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el{width:32px;left:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el{height:32px}.x4-btn-default-toolbar-large-icon-text-right .x4-rtl.x4-btn-icon-el{left:0;right:auto}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el{height:32px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el{height:32px;top:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-menu-active,.x4-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-large-over .x4-frame-tl,.x4-btn-default-toolbar-large-over .x4-frame-bl,.x4-btn-default-toolbar-large-over .x4-frame-tr,.x4-btn-default-toolbar-large-over .x4-frame-br,.x4-btn-default-toolbar-large-over .x4-frame-tc,.x4-btn-default-toolbar-large-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x4-btn-default-toolbar-large-over .x4-frame-ml,.x4-btn-default-toolbar-large-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x4-btn-default-toolbar-large-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-tl,.x4-btn-default-toolbar-large-focus .x4-frame-bl,.x4-btn-default-toolbar-large-focus .x4-frame-tr,.x4-btn-default-toolbar-large-focus .x4-frame-br,.x4-btn-default-toolbar-large-focus .x4-frame-tc,.x4-btn-default-toolbar-large-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-ml,.x4-btn-default-toolbar-large-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-tl,.x4-btn-default-toolbar-large-menu-active .x4-frame-bl,.x4-btn-default-toolbar-large-menu-active .x4-frame-tr,.x4-btn-default-toolbar-large-menu-active .x4-frame-br,.x4-btn-default-toolbar-large-menu-active .x4-frame-tc,.x4-btn-default-toolbar-large-menu-active .x4-frame-bc,.x4-btn-default-toolbar-large-pressed .x4-frame-tl,.x4-btn-default-toolbar-large-pressed .x4-frame-bl,.x4-btn-default-toolbar-large-pressed .x4-frame-tr,.x4-btn-default-toolbar-large-pressed .x4-frame-br,.x4-btn-default-toolbar-large-pressed .x4-frame-tc,.x4-btn-default-toolbar-large-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-ml,.x4-btn-default-toolbar-large-menu-active .x4-frame-mr,.x4-btn-default-toolbar-large-pressed .x4-frame-ml,.x4-btn-default-toolbar-large-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-mc,.x4-btn-default-toolbar-large-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-tl,.x4-btn-default-toolbar-large-disabled .x4-frame-bl,.x4-btn-default-toolbar-large-disabled .x4-frame-tr,.x4-btn-default-toolbar-large-disabled .x4-frame-br,.x4-btn-default-toolbar-large-disabled .x4-frame-tc,.x4-btn-default-toolbar-large-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-ml,.x4-btn-default-toolbar-large-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-large-menu-active,.x4-nlg .x4-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-large{background-image:none}.x4-btn-default-toolbar-large .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-large .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x4-btn-default-toolbar-large .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-large-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-large-over .x4-rtl.x4-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x4-btn-default-toolbar-large-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x4-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x4-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x4-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x4-btn-icon-text-left .x4-btn-icon-el{background-position:left center}.x4-btn-icon-text-left .x4-rtl.x4-btn-icon-el{background-position:right center}.x4-btn-icon-text-right .x4-btn-icon-el{background-position:right center}.x4-btn-icon-text-right .x4-rtl.x4-btn-icon-el{background-position:left center}.x4-btn-icon-text-top .x4-btn-icon-el{background-position:center top}.x4-btn-icon-text-bottom .x4-btn-icon-el{background-position:center bottom}.x4-btn-arrow-right{background-position:right center}.x4-rtl.x4-btn-arrow-right{background-position:left center}.x4-btn-arrow-bottom{background-position:center bottom}.x4-btn-arrow{background-repeat:no-repeat}.x4-btn-split{display:block;background-repeat:no-repeat}.x4-btn-split-right{background-position:right center}.x4-rtl.x4-btn-split-right{background-position:0 center}.x4-btn-split-bottom{background-position:center bottom}.x4-cycle-fixed-width .x4-btn-inner{text-align:inherit}.x4-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x4-toolbar-item{margin:0 2px 0 0}.x4-rtl.x4-toolbar-item{margin:0 0 0 2px}.x4-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x4-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x4-rtl.x4-toolbar{padding:2px 2px 2px 0}.x4-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x4-toolbar-footer .x4-toolbar-item{margin:0 6px 0 0}.x4-toolbar-spacer{width:2px}.x4-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x4-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x4-toolbar-default .x4-box-scroller{cursor:pointer}.x4-toolbar-default .x4-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-nlg .x4-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x4-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x4-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x4-toolbar-scroll-left-hover{background-position:0 0}.x4-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x4-toolbar-scroll-right-hover{background-position:-14px 0}.x4-toolbar .x4-box-menu-after{margin:0 2px 0 2px}.x4-toolbar-vertical{padding:2px 2px 0 2px}.x4-toolbar-vertical .x4-toolbar-item{margin:0 0 2px 0}.x4-toolbar-vertical .x4-toolbar-text{margin:4px 0 6px 0}.x4-toolbar-vertical .x4-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x4-toolbar-vertical .x4-box-menu-after,.x4-toolbar-vertical .x4-rtl.x4-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x4-header-draggable .x4-header-body,.x4-header-ghost{cursor:move}.x4-header-text{white-space:nowrap}.x4-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x4-panel-default{border-color:#99bce8;padding:0}.x4-panel-header-default{font-size:11px;border:1px solid #99bce8}.x4-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x4-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x4-panel-header-default-vertical{padding:5px 4px 5px 4px}.x4-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x4-rtl.x4-panel-header-default-vertical{padding:5px 4px 5px 4px}.x4-rtl.x4-panel-header-default-vertical-noborder{padding:6px 4px 6px 5px}.x4-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x4-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x4-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-rtl.x4-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x4-nlg .x4-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x4-nlg .x4-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x4-nlg .x4-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x4-nlg .x4-rtl.x4-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg-rtl.gif)}.x4-nlg .x4-rtl.x4-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg-rtl.gif)}.x4-panel .x4-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x4-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x4-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x4-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"}.x4-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"}.x4-panel-header-default-vertical .x4-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-panel-header-default-vertical .x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-panel-header-default-vertical .x4-rtl.x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x4-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x4-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x4-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default .x4-panel-header-icon{width:16px;height:16px;background-position:center center}.x4-panel-header-default .x4-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-panel-header-default .x4-panel-header-glyph{color:#678ebf}.x4-panel-header-default-horizontal .x4-panel-header-icon-before-title{margin:0 2px 0 0}.x4-panel-header-default-horizontal .x4-rtl.x4-panel-header-icon-before-title{margin:0 0 0 2px}.x4-panel-header-default-horizontal .x4-panel-header-icon-after-title{margin:0 0 0 2px}.x4-panel-header-default-horizontal .x4-rtl.x4-panel-header-icon-after-title{margin:0 2px 0 0}.x4-panel-header-default-vertical .x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-vertical .x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-vertical .x4-rtl.x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-panel-header-default-horizontal .x4-rtl.x4-tool-after-title{margin:0 2px 0 0}.x4-panel-header-default-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-panel-header-default-horizontal .x4-rtl.x4-tool-before-title{margin:0 0 0 2px}.x4-panel-header-default-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-vertical .x4-rtl.x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-panel-header-default-vertical .x4-rtl.x4-tool-before-title{margin:0 0 2px 0}.x4-rtl.x4-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x4-rtl.x4-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x4-panel-default-resizable .x4-panel-handle{filter:alpha(opacity=0);opacity:0}.x4-panel-default-framed{border-color:#99bce8;padding:4px}.x4-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x4-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x4-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x4-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x4-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x4-rtl.x4-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x4-rtl.x4-panel-header-default-framed-vertical-noborder{padding:6px 4px 6px 5px}.x4-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x4-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x4-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x4-panel-default-framed-mc{background-color:#dfe9f6}.x4-nbr .x4-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x4-panel-default-framed-tl{background-position:0 -8px}.x4-panel-default-framed-tr{background-position:right -12px}.x4-panel-default-framed-bl{background-position:0 -16px}.x4-panel-default-framed-br{background-position:right -20px}.x4-panel-default-framed-ml{background-position:0 top}.x4-panel-default-framed-mr{background-position:right top}.x4-panel-default-framed-tc{background-position:0 0}.x4-panel-default-framed-bc{background-position:0 -4px}.x4-panel-default-framed-tr,.x4-panel-default-framed-br,.x4-panel-default-framed-mr{padding-right:4px}.x4-panel-default-framed-tl,.x4-panel-default-framed-bl,.x4-panel-default-framed-ml{padding-left:4px}.x4-panel-default-framed-tc{height:4px}.x4-panel-default-framed-bc{height:4px}.x4-panel-default-framed-tl,.x4-panel-default-framed-bl,.x4-panel-default-framed-tr,.x4-panel-default-framed-br,.x4-panel-default-framed-tc,.x4-panel-default-framed-bc,.x4-panel-default-framed-ml,.x4-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x4-panel-default-framed-ml,.x4-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x4-panel-default-framed-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-panel-default-framed-tl,.x4-strict .x4-ie7 .x4-panel-default-framed-bl{position:relative;right:0}.x4-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x4-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x4-nbr .x4-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x4-panel-header-default-framed-top-tl{background-position:0 -8px}.x4-panel-header-default-framed-top-tr{background-position:right -12px}.x4-panel-header-default-framed-top-bl{background-position:0 -16px}.x4-panel-header-default-framed-top-br{background-position:right -20px}.x4-panel-header-default-framed-top-ml{background-position:0 top}.x4-panel-header-default-framed-top-mr{background-position:right top}.x4-panel-header-default-framed-top-tc{background-position:0 0}.x4-panel-header-default-framed-top-bc{background-position:0 -4px}.x4-panel-header-default-framed-top-tr,.x4-panel-header-default-framed-top-br,.x4-panel-header-default-framed-top-mr{padding-right:4px}.x4-panel-header-default-framed-top-tl,.x4-panel-header-default-framed-top-bl,.x4-panel-header-default-framed-top-ml{padding-left:4px}.x4-panel-header-default-framed-top-tc{height:4px}.x4-panel-header-default-framed-top-bc{height:0}.x4-panel-header-default-framed-top-tl,.x4-panel-header-default-framed-top-bl,.x4-panel-header-default-framed-top-tr,.x4-panel-header-default-framed-top-br,.x4-panel-header-default-framed-top-tc,.x4-panel-header-default-framed-top-bc,.x4-panel-header-default-framed-top-ml,.x4-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x4-panel-header-default-framed-top-ml,.x4-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x4-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x4-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-rtl.x4-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x4-rtl.x4-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);background-position:0 0}.x4-nlg .x4-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x4-nlg .x4-rtl.x4-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);background-position:0 0}.x4-nbr .x4-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x4-panel-header-default-framed-right-tl{background-position:0 0}.x4-panel-header-default-framed-right-tr{background-position:0 -4px}.x4-panel-header-default-framed-right-bl{background-position:0 -8px}.x4-panel-header-default-framed-right-br{background-position:0 -12px}.x4-panel-header-default-framed-right-ml{background-position:-4px 0}.x4-panel-header-default-framed-right-mr{background-position:right 0}.x4-panel-header-default-framed-right-tc{background-position:right 0}.x4-panel-header-default-framed-right-bc{background-position:right -4px}.x4-rtl.x4-panel-header-default-framed-right-tc{background-position:0 0}.x4-rtl.x4-panel-header-default-framed-right-bc{background-position:0 -4px}.x4-panel-header-default-framed-right-tr,.x4-panel-header-default-framed-right-br,.x4-panel-header-default-framed-right-mr{padding-right:4px}.x4-panel-header-default-framed-right-tl,.x4-panel-header-default-framed-right-bl,.x4-panel-header-default-framed-right-ml{padding-left:0}.x4-panel-header-default-framed-right-tc{height:4px}.x4-panel-header-default-framed-right-bc{height:4px}.x4-panel-header-default-framed-right-tl,.x4-panel-header-default-framed-right-bl,.x4-panel-header-default-framed-right-tr,.x4-panel-header-default-framed-right-br,.x4-panel-header-default-framed-right-tc,.x4-panel-header-default-framed-right-bc,.x4-panel-header-default-framed-right-ml,.x4-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x4-rtl.x4-panel-header-default-framed-right-tl,.x4-rtl.x4-panel-header-default-framed-right-ml,.x4-rtl.x4-panel-header-default-framed-right-bl,.x4-rtl.x4-panel-header-default-framed-right-tr,.x4-rtl.x4-panel-header-default-framed-right-mr,.x4-rtl.x4-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x4-panel-header-default-framed-right-tc,.x4-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x4-rtl.x4-panel-header-default-framed-right-tc,.x4-rtl.x4-panel-header-default-framed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)}.x4-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"}.x4-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x4-nbr .x4-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x4-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x4-panel-header-default-framed-bottom-tr{background-position:right -12px}.x4-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x4-panel-header-default-framed-bottom-br{background-position:right -20px}.x4-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x4-panel-header-default-framed-bottom-mr{background-position:right bottom}.x4-panel-header-default-framed-bottom-tc{background-position:0 0}.x4-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x4-panel-header-default-framed-bottom-tr,.x4-panel-header-default-framed-bottom-br,.x4-panel-header-default-framed-bottom-mr{padding-right:4px}.x4-panel-header-default-framed-bottom-tl,.x4-panel-header-default-framed-bottom-bl,.x4-panel-header-default-framed-bottom-ml{padding-left:4px}.x4-panel-header-default-framed-bottom-tc{height:0}.x4-panel-header-default-framed-bottom-bc{height:4px}.x4-panel-header-default-framed-bottom-tl,.x4-panel-header-default-framed-bottom-bl,.x4-panel-header-default-framed-bottom-tr,.x4-panel-header-default-framed-bottom-br,.x4-panel-header-default-framed-bottom-tc,.x4-panel-header-default-framed-bottom-bc,.x4-panel-header-default-framed-bottom-ml,.x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x4-panel-header-default-framed-bottom-ml,.x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x4-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x4-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-rtl.x4-panel-header-default-framed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x4-rtl.x4-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);background-position:right 0}.x4-nlg .x4-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x4-nlg .x4-rtl.x4-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);background-position:right 0}.x4-nbr .x4-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x4-panel-header-default-framed-left-tl{background-position:0 0}.x4-panel-header-default-framed-left-tr{background-position:0 -4px}.x4-panel-header-default-framed-left-bl{background-position:0 -8px}.x4-panel-header-default-framed-left-br{background-position:0 -12px}.x4-panel-header-default-framed-left-ml{background-position:-4px 0}.x4-panel-header-default-framed-left-mr{background-position:right 0}.x4-panel-header-default-framed-left-tc{background-position:left 0}.x4-panel-header-default-framed-left-bc{background-position:left -4px}.x4-rtl.x4-panel-header-default-framed-left-tc{background-position:right 0}.x4-rtl.x4-panel-header-default-framed-left-bc{background-position:right -4px}.x4-panel-header-default-framed-left-tr,.x4-panel-header-default-framed-left-br,.x4-panel-header-default-framed-left-mr{padding-right:0}.x4-panel-header-default-framed-left-tl,.x4-panel-header-default-framed-left-bl,.x4-panel-header-default-framed-left-ml{padding-left:4px}.x4-panel-header-default-framed-left-tc{height:4px}.x4-panel-header-default-framed-left-bc{height:4px}.x4-panel-header-default-framed-left-tl,.x4-panel-header-default-framed-left-bl,.x4-panel-header-default-framed-left-tr,.x4-panel-header-default-framed-left-br,.x4-panel-header-default-framed-left-tc,.x4-panel-header-default-framed-left-bc,.x4-panel-header-default-framed-left-ml,.x4-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x4-rtl.x4-panel-header-default-framed-left-tl,.x4-rtl.x4-panel-header-default-framed-left-ml,.x4-rtl.x4-panel-header-default-framed-left-bl,.x4-rtl.x4-panel-header-default-framed-left-tr,.x4-rtl.x4-panel-header-default-framed-left-mr,.x4-rtl.x4-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x4-panel-header-default-framed-left-tc,.x4-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x4-rtl.x4-panel-header-default-framed-left-tc,.x4-rtl.x4-panel-header-default-framed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)}.x4-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"}.x4-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x4-nbr .x4-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x4-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x4-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x4-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x4-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x4-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x4-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x4-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-top-tr,.x4-panel-header-default-framed-collapsed-top-br,.x4-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-top-tl,.x4-panel-header-default-framed-collapsed-top-bl,.x4-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-top-tc{height:4px}.x4-panel-header-default-framed-collapsed-top-bc{height:4px}.x4-panel-header-default-framed-collapsed-top-tl,.x4-panel-header-default-framed-collapsed-top-bl,.x4-panel-header-default-framed-collapsed-top-tr,.x4-panel-header-default-framed-collapsed-top-br,.x4-panel-header-default-framed-collapsed-top-tc,.x4-panel-header-default-framed-collapsed-top-bc,.x4-panel-header-default-framed-collapsed-top-ml,.x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x4-panel-header-default-framed-collapsed-top-ml,.x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x4-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x4-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-rtl.x4-panel-header-default-framed-collapsed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x4-rtl.x4-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);background-position:0 0}.x4-nlg .x4-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x4-nlg .x4-rtl.x4-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);background-position:0 0}.x4-nbr .x4-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x4-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x4-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x4-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x4-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x4-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x4-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x4-rtl.x4-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x4-rtl.x4-panel-header-default-framed-collapsed-right-bc{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-right-tr,.x4-panel-header-default-framed-collapsed-right-br,.x4-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-right-tl,.x4-panel-header-default-framed-collapsed-right-bl,.x4-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-right-tc{height:4px}.x4-panel-header-default-framed-collapsed-right-bc{height:4px}.x4-panel-header-default-framed-collapsed-right-tl,.x4-panel-header-default-framed-collapsed-right-bl,.x4-panel-header-default-framed-collapsed-right-tr,.x4-panel-header-default-framed-collapsed-right-br,.x4-panel-header-default-framed-collapsed-right-tc,.x4-panel-header-default-framed-collapsed-right-bc,.x4-panel-header-default-framed-collapsed-right-ml,.x4-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x4-rtl.x4-panel-header-default-framed-collapsed-right-tl,.x4-rtl.x4-panel-header-default-framed-collapsed-right-ml,.x4-rtl.x4-panel-header-default-framed-collapsed-right-bl,.x4-rtl.x4-panel-header-default-framed-collapsed-right-tr,.x4-rtl.x4-panel-header-default-framed-collapsed-right-mr,.x4-rtl.x4-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x4-panel-header-default-framed-collapsed-right-tc,.x4-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x4-rtl.x4-panel-header-default-framed-collapsed-right-tc,.x4-rtl.x4-panel-header-default-framed-collapsed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)}.x4-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"}.x4-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x4-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x4-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x4-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x4-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x4-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x4-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x4-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-bottom-tr,.x4-panel-header-default-framed-collapsed-bottom-br,.x4-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-bottom-tl,.x4-panel-header-default-framed-collapsed-bottom-bl,.x4-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x4-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x4-panel-header-default-framed-collapsed-bottom-tl,.x4-panel-header-default-framed-collapsed-bottom-bl,.x4-panel-header-default-framed-collapsed-bottom-tr,.x4-panel-header-default-framed-collapsed-bottom-br,.x4-panel-header-default-framed-collapsed-bottom-tc,.x4-panel-header-default-framed-collapsed-bottom-bc,.x4-panel-header-default-framed-collapsed-bottom-ml,.x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x4-panel-header-default-framed-collapsed-bottom-ml,.x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x4-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x4-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-rtl.x4-panel-header-default-framed-collapsed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x4-rtl.x4-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);background-position:right 0}.x4-nlg .x4-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x4-nlg .x4-rtl.x4-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);background-position:right 0}.x4-nbr .x4-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x4-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x4-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x4-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x4-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x4-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x4-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x4-rtl.x4-panel-header-default-framed-collapsed-left-tc{background-position:right 0}.x4-rtl.x4-panel-header-default-framed-collapsed-left-bc{background-position:right -4px}.x4-panel-header-default-framed-collapsed-left-tr,.x4-panel-header-default-framed-collapsed-left-br,.x4-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-left-tl,.x4-panel-header-default-framed-collapsed-left-bl,.x4-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-left-tc{height:4px}.x4-panel-header-default-framed-collapsed-left-bc{height:4px}.x4-panel-header-default-framed-collapsed-left-tl,.x4-panel-header-default-framed-collapsed-left-bl,.x4-panel-header-default-framed-collapsed-left-tr,.x4-panel-header-default-framed-collapsed-left-br,.x4-panel-header-default-framed-collapsed-left-tc,.x4-panel-header-default-framed-collapsed-left-bc,.x4-panel-header-default-framed-collapsed-left-ml,.x4-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x4-rtl.x4-panel-header-default-framed-collapsed-left-tl,.x4-rtl.x4-panel-header-default-framed-collapsed-left-ml,.x4-rtl.x4-panel-header-default-framed-collapsed-left-bl,.x4-rtl.x4-panel-header-default-framed-collapsed-left-tr,.x4-rtl.x4-panel-header-default-framed-collapsed-left-mr,.x4-rtl.x4-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x4-panel-header-default-framed-collapsed-left-tc,.x4-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x4-rtl.x4-panel-header-default-framed-collapsed-left-tc,.x4-rtl.x4-panel-header-default-framed-collapsed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)}.x4-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"}.x4-panel .x4-panel-header-default-framed-top{border-bottom-width:1px!important}.x4-panel .x4-panel-header-default-framed-right{border-left-width:1px!important}.x4-panel .x4-panel-header-default-framed-bottom{border-top-width:1px!important}.x4-panel .x4-panel-header-default-framed-left{border-right-width:1px!important}.x4-nbr .x4-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x4-panel-header-default-framed-vertical .x4-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-panel-header-default-framed-vertical .x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x4-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed .x4-panel-header-icon{width:16px;height:16px;background-position:center center}.x4-panel-header-default-framed .x4-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-panel-header-default-framed .x4-panel-header-glyph{color:#678ebf}.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-before-title{margin:0 2px 0 0}.x4-panel-header-default-framed-horizontal .x4-rtl.x4-panel-header-icon-before-title{margin:0 0 0 2px}.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-after-title{margin:0 0 0 2px}.x4-panel-header-default-framed-horizontal .x4-rtl.x4-panel-header-icon-after-title{margin:0 2px 0 0}.x4-panel-header-default-framed-vertical .x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-framed-vertical .x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-vertical .x4-rtl.x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-panel-header-default-framed-horizontal .x4-rtl.x4-tool-after-title{margin:0 2px 0 0}.x4-panel-header-default-framed-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-panel-header-default-framed-horizontal .x4-rtl.x4-tool-before-title{margin:0 0 0 2px}.x4-panel-header-default-framed-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-vertical .x4-rtl.x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-panel-header-default-framed-vertical .x4-rtl.x4-tool-before-title{margin:0 0 2px 0}.x4-rtl.x4-panel-header-default-framed-collapsed-border-right{border-right-width:1px!important}.x4-rtl.x4-panel-header-default-framed-collapsed-border-left{border-left-width:1px!important}.x4-panel-default-framed-resizable .x4-panel-handle{filter:alpha(opacity=0);opacity:0}.x4-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x4-content-box .x4-tip-anchor{height:0;width:0}.x4-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x4-tip-default-mc{background-color:#e9f2ff}.x4-nbr .x4-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-tip-default-tl{background-position:0 -6px}.x4-tip-default-tr{background-position:right -9px}.x4-tip-default-bl{background-position:0 -12px}.x4-tip-default-br{background-position:right -15px}.x4-tip-default-ml{background-position:0 top}.x4-tip-default-mr{background-position:right top}.x4-tip-default-tc{background-position:0 0}.x4-tip-default-bc{background-position:0 -3px}.x4-tip-default-tr,.x4-tip-default-br,.x4-tip-default-mr{padding-right:3px}.x4-tip-default-tl,.x4-tip-default-bl,.x4-tip-default-ml{padding-left:3px}.x4-tip-default-tc{height:3px}.x4-tip-default-bc{height:3px}.x4-tip-default-tl,.x4-tip-default-bl,.x4-tip-default-tr,.x4-tip-default-br,.x4-tip-default-tc,.x4-tip-default-bc,.x4-tip-default-ml,.x4-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x4-tip-default-ml,.x4-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x4-tip-default-mc{padding:0}.x4-strict .x4-ie7 .x4-tip-default-tl,.x4-strict .x4-ie7 .x4-tip-default-bl{position:relative;right:0}.x4-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x4-tip-default{border-color:#8eaace}.x4-tip-default .x4-tool-img{background-color:#e9f2ff}.x4-tip-header-default .x4-tool-after-title{margin:0 0 0 6px}.x4-tip-header-default .x4-rtl.x4-tool-after-title{margin:0 6px 0 0}.x4-tip-header-default .x4-tool-before-title{margin:0 6px 0 0}.x4-tip-header-default .x4-rtl.x4-tool-before-title{margin:0 0 0 6px}.x4-tip-header-body-default{padding:3px 3px 0 3px}.x4-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x4-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x4-tip-body-default a{color:#2a2a2a}.x4-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x4-tip-form-invalid-mc{background-color:white}.x4-nbr .x4-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x4-tip-form-invalid-tl{background-position:0 -10px}.x4-tip-form-invalid-tr{background-position:right -15px}.x4-tip-form-invalid-bl{background-position:0 -20px}.x4-tip-form-invalid-br{background-position:right -25px}.x4-tip-form-invalid-ml{background-position:0 top}.x4-tip-form-invalid-mr{background-position:right top}.x4-tip-form-invalid-tc{background-position:0 0}.x4-tip-form-invalid-bc{background-position:0 -5px}.x4-tip-form-invalid-tr,.x4-tip-form-invalid-br,.x4-tip-form-invalid-mr{padding-right:5px}.x4-tip-form-invalid-tl,.x4-tip-form-invalid-bl,.x4-tip-form-invalid-ml{padding-left:5px}.x4-tip-form-invalid-tc{height:5px}.x4-tip-form-invalid-bc{height:5px}.x4-tip-form-invalid-tl,.x4-tip-form-invalid-bl,.x4-tip-form-invalid-tr,.x4-tip-form-invalid-br,.x4-tip-form-invalid-tc,.x4-tip-form-invalid-bc,.x4-tip-form-invalid-ml,.x4-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x4-tip-form-invalid-ml,.x4-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x4-tip-form-invalid-mc{padding:0}.x4-strict .x4-ie7 .x4-tip-form-invalid-tl,.x4-strict .x4-ie7 .x4-tip-form-invalid-bl{position:relative;right:0}.x4-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x4-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x4-tip-form-invalid .x4-tool-img{background-color:white}.x4-tip-header-form-invalid .x4-tool-after-title{margin:0 0 0 6px}.x4-tip-header-form-invalid .x4-rtl.x4-tool-after-title{margin:0 6px 0 0}.x4-tip-header-form-invalid .x4-tool-before-title{margin:0 6px 0 0}.x4-tip-header-form-invalid .x4-rtl.x4-tool-before-title{margin:0 0 0 6px}.x4-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x4-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x4-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x4-tip-body-form-invalid a{color:#2a2a2a}.x4-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x4-tip-body-form-invalid li{margin-bottom:4px}.x4-tip-body-form-invalid li.last{margin-bottom:0}.x4-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x4-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x4-btn-group-header-default .x4-tool-img{background-color:#c2d8f0}.x4-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x4-btn-group-body-default{padding:0 1px}.x4-btn-group-body-default .x4-table-layout{border-spacing:0}.x4-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x4-btn-group-default-framed-mc{background-color:#d0def0}.x4-nbr .x4-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x4-btn-group-default-framed-tl{background-position:0 -4px}.x4-btn-group-default-framed-tr{background-position:right -6px}.x4-btn-group-default-framed-bl{background-position:0 -8px}.x4-btn-group-default-framed-br{background-position:right -10px}.x4-btn-group-default-framed-ml{background-position:0 top}.x4-btn-group-default-framed-mr{background-position:right top}.x4-btn-group-default-framed-tc{background-position:0 0}.x4-btn-group-default-framed-bc{background-position:0 -2px}.x4-btn-group-default-framed-tr,.x4-btn-group-default-framed-br,.x4-btn-group-default-framed-mr{padding-right:2px}.x4-btn-group-default-framed-tl,.x4-btn-group-default-framed-bl,.x4-btn-group-default-framed-ml{padding-left:2px}.x4-btn-group-default-framed-tc{height:2px}.x4-btn-group-default-framed-bc{height:2px}.x4-btn-group-default-framed-tl,.x4-btn-group-default-framed-bl,.x4-btn-group-default-framed-tr,.x4-btn-group-default-framed-br,.x4-btn-group-default-framed-tc,.x4-btn-group-default-framed-bc,.x4-btn-group-default-framed-ml,.x4-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x4-btn-group-default-framed-ml,.x4-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x4-btn-group-default-framed-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl{position:relative;right:0}.x4-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x4-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x4-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x4-nbr .x4-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x4-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x4-btn-group-default-framed-notitle-tr{background-position:right -6px}.x4-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x4-btn-group-default-framed-notitle-br{background-position:right -10px}.x4-btn-group-default-framed-notitle-ml{background-position:0 top}.x4-btn-group-default-framed-notitle-mr{background-position:right top}.x4-btn-group-default-framed-notitle-tc{background-position:0 0}.x4-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x4-btn-group-default-framed-notitle-tr,.x4-btn-group-default-framed-notitle-br,.x4-btn-group-default-framed-notitle-mr{padding-right:2px}.x4-btn-group-default-framed-notitle-tl,.x4-btn-group-default-framed-notitle-bl,.x4-btn-group-default-framed-notitle-ml{padding-left:2px}.x4-btn-group-default-framed-notitle-tc{height:2px}.x4-btn-group-default-framed-notitle-bc{height:2px}.x4-btn-group-default-framed-notitle-tl,.x4-btn-group-default-framed-notitle-bl,.x4-btn-group-default-framed-notitle-tr,.x4-btn-group-default-framed-notitle-br,.x4-btn-group-default-framed-notitle-tc,.x4-btn-group-default-framed-notitle-bc,.x4-btn-group-default-framed-notitle-ml,.x4-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x4-btn-group-default-framed-notitle-ml,.x4-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x4-btn-group-default-framed-notitle-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-tl,.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-bl{position:relative;right:0}.x4-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x4-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x4-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x4-btn-group-header-default-framed .x4-tool-img{background-color:#c2d8f0}.x4-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x4-btn-group-body-default-framed{padding:0 1px 0 1px}.x4-btn-group-body-default-framed .x4-table-layout{border-spacing:0}.x4-window-ghost{filter:alpha(opacity=65);opacity:.65}.x4-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-default-mc{background-color:#ced9e7}.x4-nbr .x4-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x4-window-default-tl{background-position:0 -10px}.x4-window-default-tr{background-position:right -15px}.x4-window-default-bl{background-position:0 -20px}.x4-window-default-br{background-position:right -25px}.x4-window-default-ml{background-position:0 top}.x4-window-default-mr{background-position:right top}.x4-window-default-tc{background-position:0 0}.x4-window-default-bc{background-position:0 -5px}.x4-window-default-tr,.x4-window-default-br,.x4-window-default-mr{padding-right:5px}.x4-window-default-tl,.x4-window-default-bl,.x4-window-default-ml{padding-left:5px}.x4-window-default-tc{height:5px}.x4-window-default-bc{height:5px}.x4-window-default-tl,.x4-window-default-bl,.x4-window-default-tr,.x4-window-default-br,.x4-window-default-tc,.x4-window-default-bc,.x4-window-default-ml,.x4-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x4-window-default-ml,.x4-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x4-window-default-mc{padding:0}.x4-strict .x4-ie7 .x4-window-default-tl,.x4-strict .x4-ie7 .x4-window-default-bl{position:relative;right:0}.x4-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x4-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x4-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x4-window-header-default .x4-tool-img{background-color:#ced9e7}.x4-window-header-default-vertical .x4-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-window-header-default-vertical .x4-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x4-window-header-default-vertical .x4-rtl.x4-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-window-header-default-vertical .x4-rtl.x4-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x4-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x4-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x4-window-header-default-top-tl{background-position:0 -10px}.x4-window-header-default-top-tr{background-position:right -15px}.x4-window-header-default-top-bl{background-position:0 -20px}.x4-window-header-default-top-br{background-position:right -25px}.x4-window-header-default-top-ml{background-position:0 top}.x4-window-header-default-top-mr{background-position:right top}.x4-window-header-default-top-tc{background-position:0 0}.x4-window-header-default-top-bc{background-position:0 -5px}.x4-window-header-default-top-tr,.x4-window-header-default-top-br,.x4-window-header-default-top-mr{padding-right:5px}.x4-window-header-default-top-tl,.x4-window-header-default-top-bl,.x4-window-header-default-top-ml{padding-left:5px}.x4-window-header-default-top-tc{height:5px}.x4-window-header-default-top-bc{height:0}.x4-window-header-default-top-tl,.x4-window-header-default-top-bl,.x4-window-header-default-top-tr,.x4-window-header-default-top-br,.x4-window-header-default-top-tc,.x4-window-header-default-top-bc,.x4-window-header-default-top-ml,.x4-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x4-window-header-default-top-ml,.x4-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x4-window-header-default-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-top-bl{position:relative;right:0}.x4-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x4-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x4-window-header-default-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x4-window-header-default-right-tl{background-position:0 -10px}.x4-window-header-default-right-tr{background-position:right -15px}.x4-window-header-default-right-bl{background-position:0 -20px}.x4-window-header-default-right-br{background-position:right -25px}.x4-window-header-default-right-ml{background-position:0 top}.x4-window-header-default-right-mr{background-position:right top}.x4-window-header-default-right-tc{background-position:0 0}.x4-window-header-default-right-bc{background-position:0 -5px}.x4-window-header-default-right-tr,.x4-window-header-default-right-br,.x4-window-header-default-right-mr{padding-right:5px}.x4-window-header-default-right-tl,.x4-window-header-default-right-bl,.x4-window-header-default-right-ml{padding-left:0}.x4-window-header-default-right-tc{height:5px}.x4-window-header-default-right-bc{height:5px}.x4-window-header-default-right-tl,.x4-window-header-default-right-bl,.x4-window-header-default-right-tr,.x4-window-header-default-right-br,.x4-window-header-default-right-tc,.x4-window-header-default-right-bc,.x4-window-header-default-right-ml,.x4-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x4-rtl.x4-window-header-default-right-tl,.x4-rtl.x4-window-header-default-right-ml,.x4-rtl.x4-window-header-default-right-bl,.x4-rtl.x4-window-header-default-right-tr,.x4-rtl.x4-window-header-default-right-mr,.x4-rtl.x4-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x4-window-header-default-right-ml,.x4-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x4-window-header-default-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-right-bl{position:relative;right:0}.x4-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x4-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x4-window-header-default-bottom-tl{background-position:0 -10px}.x4-window-header-default-bottom-tr{background-position:right -15px}.x4-window-header-default-bottom-bl{background-position:0 -20px}.x4-window-header-default-bottom-br{background-position:right -25px}.x4-window-header-default-bottom-ml{background-position:0 top}.x4-window-header-default-bottom-mr{background-position:right top}.x4-window-header-default-bottom-tc{background-position:0 0}.x4-window-header-default-bottom-bc{background-position:0 -5px}.x4-window-header-default-bottom-tr,.x4-window-header-default-bottom-br,.x4-window-header-default-bottom-mr{padding-right:5px}.x4-window-header-default-bottom-tl,.x4-window-header-default-bottom-bl,.x4-window-header-default-bottom-ml{padding-left:5px}.x4-window-header-default-bottom-tc{height:0}.x4-window-header-default-bottom-bc{height:5px}.x4-window-header-default-bottom-tl,.x4-window-header-default-bottom-bl,.x4-window-header-default-bottom-tr,.x4-window-header-default-bottom-br,.x4-window-header-default-bottom-tc,.x4-window-header-default-bottom-bc,.x4-window-header-default-bottom-ml,.x4-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x4-window-header-default-bottom-ml,.x4-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x4-window-header-default-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl{position:relative;right:0}.x4-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x4-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x4-window-header-default-left-tl{background-position:0 -10px}.x4-window-header-default-left-tr{background-position:right -15px}.x4-window-header-default-left-bl{background-position:0 -20px}.x4-window-header-default-left-br{background-position:right -25px}.x4-window-header-default-left-ml{background-position:0 top}.x4-window-header-default-left-mr{background-position:right top}.x4-window-header-default-left-tc{background-position:0 0}.x4-window-header-default-left-bc{background-position:0 -5px}.x4-window-header-default-left-tr,.x4-window-header-default-left-br,.x4-window-header-default-left-mr{padding-right:0}.x4-window-header-default-left-tl,.x4-window-header-default-left-bl,.x4-window-header-default-left-ml{padding-left:5px}.x4-window-header-default-left-tc{height:5px}.x4-window-header-default-left-bc{height:5px}.x4-window-header-default-left-tl,.x4-window-header-default-left-bl,.x4-window-header-default-left-tr,.x4-window-header-default-left-br,.x4-window-header-default-left-tc,.x4-window-header-default-left-bc,.x4-window-header-default-left-ml,.x4-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x4-rtl.x4-window-header-default-left-tl,.x4-rtl.x4-window-header-default-left-ml,.x4-rtl.x4-window-header-default-left-bl,.x4-rtl.x4-window-header-default-left-tr,.x4-rtl.x4-window-header-default-left-mr,.x4-rtl.x4-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x4-window-header-default-left-ml,.x4-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x4-window-header-default-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-left-bl{position:relative;right:0}.x4-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x4-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x4-window-header-default-collapsed-top-tl{background-position:0 -10px}.x4-window-header-default-collapsed-top-tr{background-position:right -15px}.x4-window-header-default-collapsed-top-bl{background-position:0 -20px}.x4-window-header-default-collapsed-top-br{background-position:right -25px}.x4-window-header-default-collapsed-top-ml{background-position:0 top}.x4-window-header-default-collapsed-top-mr{background-position:right top}.x4-window-header-default-collapsed-top-tc{background-position:0 0}.x4-window-header-default-collapsed-top-bc{background-position:0 -5px}.x4-window-header-default-collapsed-top-tr,.x4-window-header-default-collapsed-top-br,.x4-window-header-default-collapsed-top-mr{padding-right:5px}.x4-window-header-default-collapsed-top-tl,.x4-window-header-default-collapsed-top-bl,.x4-window-header-default-collapsed-top-ml{padding-left:5px}.x4-window-header-default-collapsed-top-tc{height:5px}.x4-window-header-default-collapsed-top-bc{height:5px}.x4-window-header-default-collapsed-top-tl,.x4-window-header-default-collapsed-top-bl,.x4-window-header-default-collapsed-top-tr,.x4-window-header-default-collapsed-top-br,.x4-window-header-default-collapsed-top-tc,.x4-window-header-default-collapsed-top-bc,.x4-window-header-default-collapsed-top-ml,.x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x4-window-header-default-collapsed-top-ml,.x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl{position:relative;right:0}.x4-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x4-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x4-window-header-default-collapsed-right-tl{background-position:0 -10px}.x4-window-header-default-collapsed-right-tr{background-position:right -15px}.x4-window-header-default-collapsed-right-bl{background-position:0 -20px}.x4-window-header-default-collapsed-right-br{background-position:right -25px}.x4-window-header-default-collapsed-right-ml{background-position:0 top}.x4-window-header-default-collapsed-right-mr{background-position:right top}.x4-window-header-default-collapsed-right-tc{background-position:0 0}.x4-window-header-default-collapsed-right-bc{background-position:0 -5px}.x4-window-header-default-collapsed-right-tr,.x4-window-header-default-collapsed-right-br,.x4-window-header-default-collapsed-right-mr{padding-right:5px}.x4-window-header-default-collapsed-right-tl,.x4-window-header-default-collapsed-right-bl,.x4-window-header-default-collapsed-right-ml{padding-left:5px}.x4-window-header-default-collapsed-right-tc{height:5px}.x4-window-header-default-collapsed-right-bc{height:5px}.x4-window-header-default-collapsed-right-tl,.x4-window-header-default-collapsed-right-bl,.x4-window-header-default-collapsed-right-tr,.x4-window-header-default-collapsed-right-br,.x4-window-header-default-collapsed-right-tc,.x4-window-header-default-collapsed-right-bc,.x4-window-header-default-collapsed-right-ml,.x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x4-rtl.x4-window-header-default-collapsed-right-tl,.x4-rtl.x4-window-header-default-collapsed-right-ml,.x4-rtl.x4-window-header-default-collapsed-right-bl,.x4-rtl.x4-window-header-default-collapsed-right-tr,.x4-rtl.x4-window-header-default-collapsed-right-mr,.x4-rtl.x4-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x4-window-header-default-collapsed-right-ml,.x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl{position:relative;right:0}.x4-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x4-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x4-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x4-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x4-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x4-window-header-default-collapsed-bottom-br{background-position:right -25px}.x4-window-header-default-collapsed-bottom-ml{background-position:0 top}.x4-window-header-default-collapsed-bottom-mr{background-position:right top}.x4-window-header-default-collapsed-bottom-tc{background-position:0 0}.x4-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x4-window-header-default-collapsed-bottom-tr,.x4-window-header-default-collapsed-bottom-br,.x4-window-header-default-collapsed-bottom-mr{padding-right:5px}.x4-window-header-default-collapsed-bottom-tl,.x4-window-header-default-collapsed-bottom-bl,.x4-window-header-default-collapsed-bottom-ml{padding-left:5px}.x4-window-header-default-collapsed-bottom-tc{height:5px}.x4-window-header-default-collapsed-bottom-bc{height:5px}.x4-window-header-default-collapsed-bottom-tl,.x4-window-header-default-collapsed-bottom-bl,.x4-window-header-default-collapsed-bottom-tr,.x4-window-header-default-collapsed-bottom-br,.x4-window-header-default-collapsed-bottom-tc,.x4-window-header-default-collapsed-bottom-bc,.x4-window-header-default-collapsed-bottom-ml,.x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x4-window-header-default-collapsed-bottom-ml,.x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x4-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x4-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x4-window-header-default-collapsed-left-tl{background-position:0 -10px}.x4-window-header-default-collapsed-left-tr{background-position:right -15px}.x4-window-header-default-collapsed-left-bl{background-position:0 -20px}.x4-window-header-default-collapsed-left-br{background-position:right -25px}.x4-window-header-default-collapsed-left-ml{background-position:0 top}.x4-window-header-default-collapsed-left-mr{background-position:right top}.x4-window-header-default-collapsed-left-tc{background-position:0 0}.x4-window-header-default-collapsed-left-bc{background-position:0 -5px}.x4-window-header-default-collapsed-left-tr,.x4-window-header-default-collapsed-left-br,.x4-window-header-default-collapsed-left-mr{padding-right:5px}.x4-window-header-default-collapsed-left-tl,.x4-window-header-default-collapsed-left-bl,.x4-window-header-default-collapsed-left-ml{padding-left:5px}.x4-window-header-default-collapsed-left-tc{height:5px}.x4-window-header-default-collapsed-left-bc{height:5px}.x4-window-header-default-collapsed-left-tl,.x4-window-header-default-collapsed-left-bl,.x4-window-header-default-collapsed-left-tr,.x4-window-header-default-collapsed-left-br,.x4-window-header-default-collapsed-left-tc,.x4-window-header-default-collapsed-left-bc,.x4-window-header-default-collapsed-left-ml,.x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x4-rtl.x4-window-header-default-collapsed-left-tl,.x4-rtl.x4-window-header-default-collapsed-left-ml,.x4-rtl.x4-window-header-default-collapsed-left-bl,.x4-rtl.x4-window-header-default-collapsed-left-tr,.x4-rtl.x4-window-header-default-collapsed-left-mr,.x4-rtl.x4-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x4-window-header-default-collapsed-left-ml,.x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl{position:relative;right:0}.x4-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x4-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x4-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default .x4-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x4-window-header-default .x4-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-window-header-default .x4-window-header-glyph{color:#698fb9}.x4-window-header-default-horizontal .x4-window-header-icon-before-title{margin:0 2px 0 0}.x4-window-header-default-horizontal .x4-rtl.x4-window-header-icon-before-title{margin:0 0 0 2px}.x4-window-header-default-horizontal .x4-window-header-icon-after-title{margin:0 0 0 2px}.x4-window-header-default-horizontal .x4-rtl.x4-window-header-icon-after-title{margin:0 2px 0 0}.x4-window-header-default-vertical .x4-window-header-icon-before-title{margin:0 0 2px 0}.x4-window-header-default-vertical .x4-rtl.x4-window-header-icon-before-title{margin:0 0 2px 0}.x4-window-header-default-vertical .x4-window-header-icon-after-title{margin:2px 0 0 0}.x4-window-header-default-vertical .x4-rtl.x4-window-header-icon-after-title{margin:2px 0 0 0}.x4-window-header-default-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-window-header-default-horizontal .x4-rtl.x4-tool-after-title{margin:0 2px 0 0}.x4-window-header-default-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-window-header-default-horizontal .x4-rtl.x4-tool-before-title{margin:0 0 0 2px}.x4-window-header-default-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-window-header-default-vertical .x4-rtl.x4-tool-after-title{margin:2px 0 0 0}.x4-window-header-default-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-window-header-default-vertical .x4-rtl.x4-tool-before-title{margin:0 0 2px 0}.x4-window-default-collapsed .x4-window-header{border-width:1px!important}.x4-nbr .x4-window-default-collapsed .x4-window-header{border-width:0!important}.x4-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x4-lbl-top-err-icon{margin-bottom:3px}.x4-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x4-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-toolbar-item .x4-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-autocontainer-form-item,.x4-anchor-form-item,.x4-vbox-form-item,.x4-table-form-item{margin-bottom:5px}.x4-ie6 .x4-form-form-item td{border-top-width:0}.x4-ie6 td.x4-form-item-pad{height:5px}.x4-form-field{color:black}.x4-form-item,.x4-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x4-form-type-text textarea.x4-form-invalid-field,.x4-form-type-text input.x4-form-invalid-field,.x4-form-type-password textarea.x4-form-invalid-field,.x4-form-type-password input.x4-form-invalid-field,.x4-form-type-number textarea.x4-form-invalid-field,.x4-form-type-number input.x4-form-invalid-field,.x4-form-type-email textarea.x4-form-invalid-field,.x4-form-type-email input.x4-form-invalid-field,.x4-form-type-search textarea.x4-form-invalid-field,.x4-form-type-search input.x4-form-invalid-field,.x4-form-type-tel textarea.x4-form-invalid-field,.x4-form-type-tel input.x4-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x4-item-disabled .x4-form-item-label,.x4-item-disabled .x4-form-field,.x4-item-disabled .x4-form-display-field,.x4-item-disabled .x4-form-cb-label,.x4-item-disabled .x4-form-trigger{filter:alpha(opacity=30);opacity:.3}.x4-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x4-field-toolbar .x4-form-text{height:20px;line-height:15px}.x4-content-box .x4-form-text{height:17px}.x4-content-box .x4-field-toolbar .x4-form-text{height:15px}.x4-form-focus{border-color:#7eadd9}.x4-form-empty-field,textarea.x4-form-empty-field{color:gray}.x4-quirks .x4-ie .x4-form-text,.x4-ie7m .x4-form-text{margin-top:-1px;margin-bottom:-1px}.x4-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x4-form-display-field-body{height:22px}.x4-toolbar-item .x4-form-display-field-body{height:20px}.x4-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x4-toolbar-item .x4-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x4-message-box .x4-window-body{background-color:#ced9e7;border-width:0}.x4-message-box-info,.x4-message-box-warning,.x4-message-box-question,.x4-message-box-error{background-position:top left;background-repeat:no-repeat}.x4-rtl.x4-message-box-info,.x4-rtl.x4-message-box-warning,.x4-rtl.x4-message-box-question,.x4-rtl.x4-message-box-error{background-position:top left}.x4-message-box-info{background-image:url(images/shared/icon-info.gif)}.x4-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x4-message-box-question{background-image:url(images/shared/icon-question.gif)}.x4-message-box-error{background-image:url(images/shared/icon-error.gif)}.x4-form-cb-wrap{height:22px}.x4-toolbar-item .x4-form-cb-wrap{height:20px}.x4-form-cb{margin-top:5px}.x4-toolbar-item .x4-form-cb{margin-top:4px}.x4-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x4-form-cb-checked .x4-form-checkbox{background-position:0 -13px}.x4-form-checkbox-focus{background-position:-13px 0}.x4-form-cb-checked .x4-form-checkbox-focus{background-position:-13px -13px}.x4-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x4-toolbar-item .x4-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-form-cb-label-before{margin-right:4px}.x4-rtl.x4-field .x4-form-cb-label-before{margin-right:0;margin-left:4px}.x4-form-cb-label-after{margin-left:4px}.x4-rtl.x4-field .x4-form-cb-label-after{margin-left:0;margin-right:4px}.x4-form-checkboxgroup-body{padding:0 4px}.x4-form-invalid .x4-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x4-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x4-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x4-rtl.x4-form-check-group-label{margin:0 0 5px 30px}.x4-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x4-ie8m .x4-fieldset,.x4-quirks .x4-ie .x4-fieldset{padding-top:0}.x4-ie8m .x4-fieldset .x4-fieldset-body,.x4-quirks .x4-ie .x4-fieldset .x4-fieldset-body{padding-top:0}.x4-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x4-fieldset-header{padding:0 3px 1px}.x4-fieldset-header .x4-tool{margin-top:1px;padding:0}.x4-fieldset-header .x4-form-cb-wrap{padding:1px 0}.x4-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x4-fieldset-header-text-collapsible{cursor:pointer}.x4-fieldset-with-title .x4-fieldset-header-checkbox,.x4-fieldset-with-title .x4-tool{margin:1px 3px 0 0}.x4-fieldset-with-title .x4-rtl .x4-fieldset-header-checkbox,.x4-fieldset-with-title .x4-rtl .x4-tool{margin:1px 0 0 3px}.x4-webkit .x4-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x4-opera .x4-fieldset-with-legend{margin-top:-1px}.x4-opera.x4-mac .x4-fieldset-header-text{padding:2px 0 0}.x4-strict .x4-ie8 .x4-fieldset-header{margin-bottom:-1px}.x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox{position:relative;top:-1px}.x4-quirks .x4-ie .x4-fieldset-header,.x4-ie8m .x4-fieldset-header{padding-left:1px;padding-right:1px}.x4-fieldset-collapsed .x4-fieldset-body{display:none}.x4-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x4-ie6 .x4-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x4-ie .x4-fieldset-bwrap{zoom:1}.x4-fieldset .x4-tool-toggle{background-position:0 -60px}.x4-fieldset .x4-tool-over .x4-tool-toggle{background-position:-15px -60px}.x4-fieldset-collapsed .x4-tool-toggle{background-position:0 -75px}.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle{background-position:-15px -75px}.x4-ie .x4-fieldset-noborder legend{position:relative;margin-bottom:23px}.x4-ie .x4-fieldset-noborder legend span{position:absolute;left:16px}.x4-fieldset{overflow:hidden}.x4-fieldset-bwrap{overflow:hidden;zoom:1}.x4-fieldset-body{overflow:hidden}.x4-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x4-form-cb-checked .x4-form-radio{background-position:0 -13px}.x4-form-radio-focus{background-position:-13px 0}.x4-form-cb-checked .x4-form-radio-focus{background-position:-13px -13px}.x4-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x4-rtl.x4-form-trigger-wrap .x4-form-trigger{background-image:url(images/form/trigger-rtl.gif)}.x4-trigger-cell{background-color:white;width:17px}.x4-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger-over{background-position:-68px 0}.x4-form-trigger-click,.x4-form-trigger-wrap-focus .x4-form-trigger-click{background-position:-34px 0}.x4-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x4-rtl.x4-form-trigger-wrap .x4-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.gif)}.x4-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x4-rtl.x4-form-trigger-wrap .x4-form-search-trigger{background-image:url(images/form/search-trigger-rtl.gif)}.x4-quirks .prefixie6 .x4-form-trigger-input-cell{height:22px}.x4-quirks .prefixie6 .x4-field-toolbar .x4-form-trigger-input-cell{height:20px}div.x4-form-spinner-up,div.x4-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up,.x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down{background-image:url(images/form/spinner-rtl.gif)}.x4-form-spinner-down{background-position:0 -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -11px}.x4-toolbar-item div.x4-form-spinner-up,.x4-toolbar-item div.x4-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x4-toolbar-item .x4-form-spinner-down{background-position:0 -10px}.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -10px}.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -10px}.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -10px}.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -10px}.x4-toolbar-item .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up,.x4-toolbar-item .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x4-tbar-page-number{width:30px}.x4-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x4-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x4-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x4-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x4-tbar-loading{background-image:url(images/grid/refresh.gif)}.x4-item-disabled .x4-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x4-item-disabled .x4-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x4-item-disabled .x4-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x4-item-disabled .x4-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x4-item-disabled .x4-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x4-rtl.x4-tbar-page-first{background-image:url(images/grid/page-last.gif)}.x4-rtl.x4-tbar-page-prev{background-image:url(images/grid/page-next.gif)}.x4-rtl.x4-tbar-page-next{background-image:url(images/grid/page-prev.gif)}.x4-rtl.x4-tbar-page-last{background-image:url(images/grid/page-first.gif)}.x4-item-disabled .x4-rtl.x4-tbar-page-first{background-image:url(images/grid/page-last-disabled.gif)}.x4-item-disabled .x4-rtl.x4-tbar-page-prev{background-image:url(images/grid/page-next-disabled.gif)}.x4-item-disabled .x4-rtl.x4-tbar-page-next{background-image:url(images/grid/page-prev-disabled.gif)}.x4-item-disabled .x4-rtl.x4-tbar-page-last{background-image:url(images/grid/page-first-disabled.gif)}.x4-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x4-strict .x4-ie7m .x4-boundlist-list-ct{position:relative}.x4-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x4-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x4-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x4-boundlist-floating{border-top-width:0}.x4-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x4-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x4-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x4-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x4-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x4-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x4-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x4-datepicker-month .x4-btn,.x4-datepicker-month .x4-btn .x4-btn-tc,.x4-datepicker-month .x4-btn .x4-btn-tl,.x4-datepicker-month .x4-btn .x4-btn-tr,.x4-datepicker-month .x4-btn .x4-btn-mc,.x4-datepicker-month .x4-btn .x4-btn-ml,.x4-datepicker-month .x4-btn .x4-btn-mr,.x4-datepicker-month .x4-btn .x4-btn-bc,.x4-datepicker-month .x4-btn .x4-btn-bl,.x4-datepicker-month .x4-btn .x4-btn-br{background:transparent;border-width:0!important}.x4-datepicker-month .x4-btn-inner{color:white}.x4-datepicker-month .x4-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x4-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x4-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x4-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x4-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x4-datepicker-date:hover{color:black;background-color:#ddecfe}.x4-datepicker-selected{border-style:solid;border-color:#8db2e3}.x4-datepicker-selected .x4-datepicker-date{background-color:#dae5f3;font-weight:bold}.x4-datepicker-today{border-color:darkred;border-style:solid}.x4-datepicker-prevday .x4-datepicker-date,.x4-datepicker-nextday .x4-datepicker-date{color:#aaa}.x4-datepicker-disabled a.x4-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x4-datepicker-disabled a.x4-datepicker-date:hover{background-color:#eee}.x4-datepicker-footer,.x4-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x4-datepicker-footer .x4-btn,.x4-monthpicker-buttons .x4-btn{margin:0 2px 0 2px}.x4-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x4-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x4-monthpicker-months .x4-monthpicker-item{width:43px}.x4-monthpicker-years{width:88px}.x4-monthpicker-years .x4-monthpicker-item{width:44px}.x4-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x4-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x4-monthpicker-item-inner:hover{background-color:#ddecfe}.x4-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x4-monthpicker-yearnav{height:27px}.x4-monthpicker-yearnav-button-ct{width:44px}.x4-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x4-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x4-monthpicker-yearnav-next-over{background-position:-15px -120px}.x4-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x4-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x4-monthpicker-small .x4-monthpicker-item{margin:2px 0 2px}.x4-monthpicker-small .x4-monthpicker-item-inner{margin:0 5px 0 5px}.x4-monthpicker-small .x4-monthpicker-yearnav{height:22px}.x4-monthpicker-small .x4-monthpicker-yearnav-button{margin-top:3px}.x4-nlg .x4-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x4-nlg .x4-datepicker-footer,.x4-nlg .x4-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x4-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x4-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x4-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x4-rtl.x4-form-trigger-wrap .x4-form-date-trigger{background-image:url(images/form/date-trigger-rtl.gif)}.x4-form-file-wrap .x4-form-text{color:gray}.x4-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x4-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x4-content-box .x4-color-picker-item{width:12px;height:12px}a.x4-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x4-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x4-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x4-html-editor-tb .x4-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-bold,.x4-menu-item div.x4-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-italic,.x4-menu-item div.x4-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-underline,.x4-menu-item div.x4-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-forecolor,.x4-menu-item div.x4-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-backcolor,.x4-menu-item div.x4-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifyleft,.x4-menu-item div.x4-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifycenter,.x4-menu-item div.x4-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifyright,.x4-menu-item div.x4-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-insertorderedlist,.x4-menu-item div.x4-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-insertunorderedlist,.x4-menu-item div.x4-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-increasefontsize,.x4-menu-item div.x4-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-decreasefontsize,.x4-menu-item div.x4-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-sourceedit,.x4-menu-item div.x4-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-createlink,.x4-menu-item div.x4-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner{padding:5px;padding-bottom:1px}.x4-html-editor-tb .x4-font-select{font-size:11px;font-family:inherit}.x4-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x4-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x4-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x4-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x4-grid-row-alt .x4-grid-td{background-color:#fafafa}.x4-grid-row-before-over .x4-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x4-grid-row-over .x4-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x4-grid-row-before-selected .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x4-grid-row-selected .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x4-grid-row-before-focused .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x4-grid-row-focused .x4-grid-td{background-color:#efefef}.x4-grid-row-over .x4-grid-td{background-color:#efefef}.x4-grid-row-selected .x4-grid-td{background-color:#dfe8f6}.x4-grid-row-focused .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x4-grid-table .x4-grid-row-focused-first .x4-grid-td{border-top:1px dotted #464646}.x4-grid-row-selected .x4-grid-row-summary .x4-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x4-grid-row-focused .x4-grid-row-summary .x4-grid-td{border-bottom-color:#efefef;border-top-width:0}.x4-grid-with-row-lines .x4-grid-td{border-bottom-width:1px}.x4-grid-with-row-lines .x4-grid-table{border-top:1px solid white}.x4-grid-with-row-lines .x4-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x4-grid-with-row-lines .x4-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x4-grid-body .x4-grid-table-focused-first{border-top:1px dotted #464646}.x4-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x4-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x4-grid-row-selected .x4-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x4-nlg .x4-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x4-nlg .x4-grid-row-selected .x4-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x4-grid-cell-special .x4-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x4-grid-cell-special .x4-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x4-rtl.x4-grid-cell-special{border-right-width:0;border-left-width:1px}.x4-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x4-rtl.x4-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.gif);background-position:right 0}.x4-grid-row .x4-grid-cell-selected{color:null;background-color:#b8cfee}.x4-grid-with-col-lines .x4-grid-cell{border-right-width:1px}.x4-rtl.x4-grid-with-col-lines .x4-grid-cell{border-right-width:0;border-left-width:1px}.x4-grid-resize-marker{width:1px;background-color:#0f0f0f}.x4-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x4-grid-drop-indicator .x4-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x4-grid-drop-indicator .x4-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x4-ie6 .x4-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x4-ie6 .x4-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x4-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-accordion-item .x4-grid-header-ct{border-width:0 0 1px!important}.x4-accordion-item .x4-grid-header-ct-hidden{border:0!important}.x4-grid-body{border-top-color:#c5c5c5}.x4-hmenu-sort-asc .x4-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x4-hmenu-sort-desc .x4-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x4-cols-icon .x4-menu-item-icon{background-image:url(images/grid/columns.gif)}.x4-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-rtl.x4-column-header{border-right:0 none;border-left:1px solid #c5c5c5}.x4-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x4-group-sub-header .x4-column-header-inner{padding:3px 6px 5px 6px}.x4-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x4-column-header-over,.x4-column-header-sort-ASC,.x4-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x4-nlg .x4-grid-header-ct,.x4-nlg .x4-column-header{background-image:url(images/grid/column-header-bg.gif)}.x4-nlg .x4-column-header-over,.x4-nlg .x4-column-header-sort-ASC,.x4-nlg .x4-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x4-column-header-open{background-color:transparent}.x4-column-header-open .x4-column-header-trigger{background-color:transparent}.x4-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x4-rtl.x4-column-header-trigger{background-position:right center}.x4-column-header-align-right .x4-column-header-text{margin-right:9px}.x4-column-header-align-right .x4-rtl.x4-column-header-text{margin-right:0;margin-left:9px}.x4-column-header-sort-ASC .x4-column-header-text,.x4-column-header-sort-DESC .x4-column-header-text{padding-right:12px;background-position:right center}.x4-column-header-sort-ASC .x4-rtl.x4-column-header-text,.x4-column-header-sort-DESC .x4-rtl.x4-column-header-text{padding-right:0;padding-left:12px;background-position:0 center}.x4-column-header-sort-ASC .x4-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x4-column-header-sort-DESC .x4-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x4-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x4-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x4-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x4-action-col-cell .x4-item-disabled{filter:alpha(opacity=30);opacity:.3}.x4-action-col-icon{height:16px;width:16px;cursor:pointer}.x4-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x4-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x4-item-disabled .x4-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x4-grid-checkcolumn-checked{background-position:0 -13px}.x4-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x4-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x4-grid-group-hd-not-collapsible{cursor:default}.x4-grid-group-hd-collapsible .x4-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x4-rtl.x4-grid-view .x4-grid-group-hd-collapsible .x4-grid-group-title{background-position:right center;padding:0 14px 0 0}.x4-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x4-grid-group-hd-collapsed .x4-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x4-grid-group-collapsed .x4-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x4-group-by-icon{background-image:url(images/grid/group-by.gif)}.x4-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x4-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-rowbody{padding-top:6px;padding-bottom:4px}.x4-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x4-summary-bottom{border-bottom-color:#c5c5c5}.x4-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x4-docked-summary .x4-grid-table{width:100%}.x4-grid-row-summary .x4-grid-cell,.x4-grid-row-summary .x4-grid-rowwrap,.x4-grid-row-summary .x4-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x4-grid-with-row-lines .x4-grid-table-summary{border:0}.x4-grid-locked .x4-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x4-grid-locked .x4-rtl.x4-grid-inner-locked{border-width:0 0 0 1px}.x4-grid-inner-locked .x4-column-header-last,.x4-grid-inner-locked .x4-grid-cell-last{border-right-width:0!important}.x4-grid-inner-locked .x4-rtl.x4-column-header-last{border-left-width:0!important}.x4-rtl.x4-grid-inner-locked .x4-grid-row .x4-column-header-last{border-left:0 none}.x4-rtl.x4-grid-inner-locked .x4-grid-row .x4-grid-cell-last{border-left:0 none}.x4-hmenu-lock .x4-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x4-hmenu-unlock .x4-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x4-grid-editor .x4-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x4-content-box .x4-grid-editor .x4-form-text{height:15px}.x4-gecko .x4-grid-editor .x4-form-text{padding-left:4px;padding-right:4px}.x4-grid-editor .x4-form-trigger{height:20px}.x4-grid-editor .x4-form-spinner-up,.x4-grid-editor .x4-form-spinner-down{height:10px}.x4-grid-editor .x4-form-cb{margin-top:4px}.x4-grid-editor .x4-form-cb-wrap{height:20px}.x4-grid-editor .x4-form-display-field-body{height:20px}.x4-grid-editor .x4-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x4-grid-editor .x4-form-action-col-field{padding:2px 2px 2px 2px}.x4-tree-cell-editor .x4-form-text{padding-left:2px;padding-right:2px}.x4-gecko .x4-tree-cell-editor .x4-form-text{padding-left:1px;padding-right:1px}.x4-grid-row-editor .x4-field{margin:0 1px 0 1px}.x4-grid-row-editor .x4-form-display-field{padding:2px 5px 3px 5px}.x4-grid-row-editor .x4-form-action-col-field{padding:2px 1px 2px 1px}.x4-grid-row-editor .x4-form-text{padding:1px 4px 2px 4px}.x4-gecko .x4-grid-row-editor .x4-form-text{padding-left:3px;padding-right:3px}.x4-grid-row-editor .x4-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x4-grid-with-col-lines .x4-grid-row-editor .x4-form-cb{margin-right:1px}.x4-grid-with-col-lines .x4-grid-row-editor .x4-rtl.x4-form-cb{margin-right:0;margin-left:1px}.x4-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x4-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x4-nbr .x4-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x4-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x4-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x4-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x4-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x4-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x4-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x4-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x4-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x4-grid-row-editor-buttons-default-bottom-tr,.x4-grid-row-editor-buttons-default-bottom-br,.x4-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x4-grid-row-editor-buttons-default-bottom-tl,.x4-grid-row-editor-buttons-default-bottom-bl,.x4-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x4-grid-row-editor-buttons-default-bottom-tc{height:0}.x4-grid-row-editor-buttons-default-bottom-bc{height:5px}.x4-grid-row-editor-buttons-default-bottom-tl,.x4-grid-row-editor-buttons-default-bottom-bl,.x4-grid-row-editor-buttons-default-bottom-tr,.x4-grid-row-editor-buttons-default-bottom-br,.x4-grid-row-editor-buttons-default-bottom-tc,.x4-grid-row-editor-buttons-default-bottom-bc,.x4-grid-row-editor-buttons-default-bottom-ml,.x4-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x4-grid-row-editor-buttons-default-bottom-ml,.x4-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x4-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-tl,.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x4-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x4-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x4-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x4-nbr .x4-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x4-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x4-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x4-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x4-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x4-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x4-grid-row-editor-buttons-default-top-mr{background-position:right top}.x4-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x4-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x4-grid-row-editor-buttons-default-top-tr,.x4-grid-row-editor-buttons-default-top-br,.x4-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x4-grid-row-editor-buttons-default-top-tl,.x4-grid-row-editor-buttons-default-top-bl,.x4-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x4-grid-row-editor-buttons-default-top-tc{height:5px}.x4-grid-row-editor-buttons-default-top-bc{height:0}.x4-grid-row-editor-buttons-default-top-tl,.x4-grid-row-editor-buttons-default-top-bl,.x4-grid-row-editor-buttons-default-top-tr,.x4-grid-row-editor-buttons-default-top-br,.x4-grid-row-editor-buttons-default-top-tc,.x4-grid-row-editor-buttons-default-top-bc,.x4-grid-row-editor-buttons-default-top-ml,.x4-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x4-grid-row-editor-buttons-default-top-ml,.x4-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x4-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-tl,.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x4-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x4-grid-row-editor-buttons-default-bottom{top:29px}.x4-grid-row-editor-buttons-default-top{bottom:29px}.x4-grid-row-editor-buttons{border-color:#99bce8}.x4-row-editor-update-button{margin-right:2px}.x4-row-editor-cancel-button{margin-left:2px}.x4-rtl.x4-row-editor-update-button{margin-left:2px;margin-right:auto}.x4-rtl.x4-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x4-grid-row-editor-errors .x4-tip-body{padding:5px}.x4-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x4-rtl.x4-grid-row-editor-errors .x4-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x4-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x4-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x4-grid-row-collapsed .x4-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x4-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x4-accordion-layout-ct{background-color:white;padding:0}.x4-accordion-hd .x4-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x4-accordion-item{margin:0}.x4-accordion-item .x4-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x4-accordion-item .x4-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x4-accordion-item .x4-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x4-accordion-item .x4-accordion-body{border-width:0}.x4-accordion-hd .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-collapse-bottom{background-position:0 -255px}.x4-accordion-hd .x4-tool-expand-top,.x4-accordion-hd .x4-tool-expand-bottom{background-position:0 -240px}.x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom{background-position:-15px -255px}.x4-accordion-hd .x4-tool-over .x4-tool-expand-top,.x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom{background-position:-15px -240px}.x4-accordion-hd .x4-tool-img{background-color:#d9e7f8}.x4-collapse-el{cursor:pointer}.x4-layout-split-left,.x4-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x4-layout-split-top,.x4-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x4-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x4-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x4-rtl.x4-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x4-rtl.x4-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x4-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x4-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x4-splitter-collapsed .x4-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x4-splitter-collapsed .x4-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x4-splitter-collapsed .x4-rtl.x4-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x4-splitter-collapsed .x4-rtl.x4-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x4-splitter-collapsed .x4-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x4-splitter-collapsed .x4-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x4-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-splitter-active .x4-collapse-el{filter:alpha(opacity=30);opacity:.3}.x4-border-layout-ct{background-color:#dfe8f6}.x4-menu-body{background:#f0f0f0;padding:2px}.x4-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x4-rtl.x4-menu .x4-menu-icon-separator{left:auto;right:24px}.x4-menu-item{padding:1px;cursor:pointer}.x4-menu-item-indent{margin-left:30px}.x4-rtl.x4-menu-item-indent{margin-left:0;margin-right:30px}.x4-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x4-nlg .x4-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x4-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x4-rtl.x4-menu-item-link{padding:0 30px 0 0}.x4-right-check-item-text{padding-right:22px}.x4-rtl.x4-right-check-item-text{padding-left:22px;padding-right:0}.x4-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x4-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x4-ie8m .x4-menu-item-glyph{color:#898989}.x4-gecko .x4-menu-item-active .x4-menu-item-icon,.x4-quirks .x4-menu-item-active .x4-menu-item-icon,.x4-ie9m .x4-menu-item-active .x4-menu-item-icon{top:3px;left:2px}.x4-rtl.x4-menu-item-icon{left:auto;right:3px}.x4-gecko .x4-menu-item-active .x4-rtl.x4-menu-item-icon,.x4-quirks .x4-menu-item-active .x4-rtl.x4-menu-item-icon,.x4-ie9m .x4-menu-item-active .x4-rtl.x4-menu-item-icon{left:auto;right:2px}.x4-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x4-rtl.x4-menu-item-icon-right{right:auto;left:3px}.x4-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}a.x4-rtl .x4-menu-item-text{margin-right:0;margin-left:16px}.x4-menu-item-checked .x4-menu-item-icon,.x4-menu-item-checked .x4-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x4-menu-item-checked .x4-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x4-menu-item-unchecked .x4-menu-item-icon,.x4-menu-item-unchecked .x4-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x4-menu-item-unchecked .x4-menu-group-icon{background-image:none}.x4-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x4-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x4-gecko .x4-menu-item-active .x4-menu-item-arrow,.x4-quirks .x4-menu-item-active .x4-menu-item-arrow,.x4-ie9m .x4-menu-item-active .x4-menu-item-arrow{top:6px;right:-1px}.x4-rtl.x4-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.gif)}.x4-gecko .x4-menu-item-active .x4-rtl.x4-menu-item-arrow,.x4-ie9m .x4-menu-item-active .x4-rtl.x4-menu-item-arrow,.x4-quirks .x4-menu-item-active .x4-rtl.x4-menu-item-arrow{right:auto;left:-1px}.x4-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x4-content-box .x4-menu-icon-separator{width:1px}.x4-content-box .x4-menu-item-separator{height:1px}.x4-ie .x4-menu-item-disabled .x4-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x4-ie .x4-menu-item-disabled .x4-menu-item-text{background-color:transparent}.x4-menu-date-item{border-color:#99bbe8}.x4-menu-item .x4-form-item-label{font-size:11px;color:#222}.x4-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x4-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x4-menu-scroll-top,.x4-menu-scroll-bottom{background-color:#f0f0f0}.x4-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x4-tool{cursor:pointer}.x4-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x4-tool-placeholder{visibility:hidden}.x4-tool-close{background-position:0 0}.x4-tool-minimize{background-position:0 -15px}.x4-tool-maximize{background-position:0 -30px}.x4-tool-restore{background-position:0 -45px}.x4-tool-toggle{background-position:0 -60px}.x4-panel-collapsed .x4-tool-toggle{background-position:0 -75px}.x4-tool-gear{background-position:0 -90px}.x4-tool-prev{background-position:0 -105px}.x4-tool-next{background-position:0 -120px}.x4-tool-pin{background-position:0 -135px}.x4-tool-unpin{background-position:0 -150px}.x4-tool-right{background-position:0 -165px}.x4-tool-left{background-position:0 -180px}.x4-tool-down{background-position:0 -195px}.x4-tool-up{background-position:0 -210px}.x4-tool-refresh{background-position:0 -225px}.x4-tool-plus{background-position:0 -240px}.x4-tool-minus{background-position:0 -255px}.x4-tool-search{background-position:0 -270px}.x4-tool-save{background-position:0 -285px}.x4-tool-help{background-position:0 -300px}.x4-tool-print{background-position:0 -315px}.x4-tool-expand{background-position:0 -330px}.x4-tool-collapse{background-position:0 -345px}.x4-tool-resize{background-position:0 -360px}.x4-tool-move{background-position:0 -375px}.x4-tool-expand-bottom,.x4-tool-collapse-bottom{background-position:0 -195px}.x4-tool-expand-top,.x4-tool-collapse-top{background-position:0 -210px}.x4-tool-expand-left,.x4-tool-collapse-left{background-position:0 -180px}.x4-tool-expand-right,.x4-tool-collapse-right{background-position:0 -165px}.x4-rtl.x4-tool-expand-left,.x4-rtl.x4-tool-collapse-left{background-position:0 -165px}.x4-rtl.x4-tool-expand-right,.x4-rtl.x4-tool-collapse-right{background-position:0 -180px}.x4-tool-over .x4-tool-close{background-position:-15px 0}.x4-tool-over .x4-tool-minimize{background-position:-15px -15px}.x4-tool-over .x4-tool-maximize{background-position:-15px -30px}.x4-tool-over .x4-tool-restore{background-position:-15px -45px}.x4-tool-over .x4-tool-toggle{background-position:-15px -60px}.x4-panel-collapsed .x4-tool-over .x4-tool-toggle{background-position:-15px -75px}.x4-tool-over .x4-tool-gear{background-position:-15px -90px}.x4-tool-over .x4-tool-prev{background-position:-15px -105px}.x4-tool-over .x4-tool-next{background-position:-15px -120px}.x4-tool-over .x4-tool-pin{background-position:-15px -135px}.x4-tool-over .x4-tool-unpin{background-position:-15px -150px}.x4-tool-over .x4-tool-right{background-position:-15px -165px}.x4-tool-over .x4-tool-left{background-position:-15px -180px}.x4-tool-over .x4-tool-down{background-position:-15px -195px}.x4-tool-over .x4-tool-up{background-position:-15px -210px}.x4-tool-over .x4-tool-refresh{background-position:-15px -225px}.x4-tool-over .x4-tool-plus{background-position:-15px -240px}.x4-tool-over .x4-tool-minus{background-position:-15px -255px}.x4-tool-over .x4-tool-search{background-position:-15px -270px}.x4-tool-over .x4-tool-save{background-position:-15px -285px}.x4-tool-over .x4-tool-help{background-position:-15px -300px}.x4-tool-over .x4-tool-print{background-position:-15px -315px}.x4-tool-over .x4-tool-expand{background-position:-15px -330px}.x4-tool-over .x4-tool-collapse{background-position:-15px -345px}.x4-tool-over .x4-tool-resize{background-position:-15px -360px}.x4-tool-over .x4-tool-move{background-position:-15px -375px}.x4-tool-over .x4-tool-expand-bottom,.x4-tool-over .x4-tool-collapse-bottom{background-position:-15px -195px}.x4-tool-over .x4-tool-expand-top,.x4-tool-over .x4-tool-collapse-top{background-position:-15px -210px}.x4-tool-over .x4-tool-expand-left,.x4-tool-over .x4-tool-collapse-left{background-position:-15px -180px}.x4-tool-over .x4-tool-expand-right,.x4-tool-over .x4-tool-collapse-right{background-position:-15px -165px}.x4-tool-over .x4-rtl.x4-tool-expand-left,.x4-tool-over .x4-rtl.x4-tool-collapse-left{background-position:-15px -165px}.x4-tool-over .x4-rtl.x4-tool-expand-right,.x4-tool-over .x4-rtl.x4-tool-collapse-right{background-position:-15px -180px}.x4-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x4-collapsed .x4-resizable-handle{display:none}.x4-resizable-over .x4-resizable-handle-north{cursor:n-resize}.x4-resizable-over .x4-resizable-handle-south{cursor:s-resize}.x4-resizable-over .x4-resizable-handle-east{cursor:e-resize}.x4-resizable-over .x4-resizable-handle-west{cursor:w-resize}.x4-resizable-over .x4-resizable-handle-southeast{cursor:se-resize}.x4-resizable-over .x4-resizable-handle-northwest{cursor:nw-resize}.x4-resizable-over .x4-resizable-handle-northeast{cursor:ne-resize}.x4-resizable-over .x4-resizable-handle-southwest{cursor:sw-resize}.x4-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x4-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x4-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x4-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x4-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x4-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x4-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x4-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x4-ie .x4-resizable-handle-east{margin-right:-1px}.x4-ie .x4-resizable-handle-south{margin-bottom:-1px}.x4-resizable-pinned .x4-resizable-handle,.x4-resizable-over .x4-resizable-handle{filter:alpha(opacity=100);opacity:1}.x4-window .x4-window-handle{filter:alpha(opacity=0);opacity:0}.x4-window-collapsed .x4-window-handle{display:none}.x4-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x4-resizable-over .x4-resizable-handle-east,.x4-resizable-over .x4-resizable-handle-west,.x4-resizable-pinned .x4-resizable-handle-east,.x4-resizable-pinned .x4-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x4-resizable-over .x4-resizable-handle-south,.x4-resizable-over .x4-resizable-handle-north,.x4-resizable-pinned .x4-resizable-handle-south,.x4-resizable-pinned .x4-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x4-resizable-over .x4-resizable-handle-southeast,.x4-resizable-pinned .x4-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x4-resizable-over .x4-resizable-handle-northwest,.x4-resizable-pinned .x4-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x4-resizable-over .x4-resizable-handle-northeast,.x4-resizable-pinned .x4-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x4-resizable-over .x4-resizable-handle-southwest,.x4-resizable-pinned .x4-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x4-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x4-slider-horz .x4-slider-end{padding-right:7px;background:no-repeat right -30px}.x4-slider-horz .x4-slider-inner{height:15px}.x4-ie6 .x4-form-item .x4-slider-horz,.x4-ie7 .x4-form-item .x4-slider-horz,.x4-quirks .x4-ie .x4-form-item .x4-slider-horz{margin-top:4px}.x4-slider-horz .x4-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x4-slider-horz .x4-slider-thumb-over{background-position:-14px -15px}.x4-slider-horz .x4-slider-thumb-drag{background-position:-28px -30px}.x4-rtl.x4-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x4-rtl.x4-slider-horz .x4-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x4-rtl.x4-slider-horz .x4-slider-thumb{margin-right:-7px}.x4-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x4-slider-vert .x4-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x4-slider-vert .x4-slider-inner{width:15px}.x4-slider-vert .x4-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x4-slider-vert .x4-slider-thumb-over{background-position:-15px -14px}.x4-slider-vert .x4-slider-thumb-drag{background-position:-30px -28px}.x4-slider-horz,.x4-slider-horz .x4-slider-end,.x4-slider-horz .x4-slider-inner{background-image:url(images/slider/slider-bg.png)}.x4-slider-vert,.x4-slider-vert .x4-slider-end,.x4-slider-vert .x4-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x4-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-top-tl{background-position:0 -8px}.x4-tab-default-top-tr{background-position:right -12px}.x4-tab-default-top-bl{background-position:0 -16px}.x4-tab-default-top-br{background-position:right -20px}.x4-tab-default-top-ml{background-position:0 top}.x4-tab-default-top-mr{background-position:right top}.x4-tab-default-top-tc{background-position:0 0}.x4-tab-default-top-bc{background-position:0 -4px}.x4-tab-default-top-tr,.x4-tab-default-top-br,.x4-tab-default-top-mr{padding-right:4px}.x4-tab-default-top-tl,.x4-tab-default-top-bl,.x4-tab-default-top-ml{padding-left:4px}.x4-tab-default-top-tc{height:4px}.x4-tab-default-top-bc{height:0}.x4-tab-default-top-tl,.x4-tab-default-top-bl,.x4-tab-default-top-tr,.x4-tab-default-top-br,.x4-tab-default-top-tc,.x4-tab-default-top-bc,.x4-tab-default-top-ml,.x4-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-top-ml,.x4-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-top-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-top-tl,.x4-strict .x4-ie7 .x4-tab-default-top-bl{position:relative;right:0}.x4-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x4-tab-default-bottom-tl{background-position:0 -8px}.x4-tab-default-bottom-tr{background-position:right -12px}.x4-tab-default-bottom-bl{background-position:0 -16px}.x4-tab-default-bottom-br{background-position:right -20px}.x4-tab-default-bottom-ml{background-position:0 top}.x4-tab-default-bottom-mr{background-position:right top}.x4-tab-default-bottom-tc{background-position:0 0}.x4-tab-default-bottom-bc{background-position:0 -4px}.x4-tab-default-bottom-tr,.x4-tab-default-bottom-br,.x4-tab-default-bottom-mr{padding-right:4px}.x4-tab-default-bottom-tl,.x4-tab-default-bottom-bl,.x4-tab-default-bottom-ml{padding-left:4px}.x4-tab-default-bottom-tc{height:0}.x4-tab-default-bottom-bc{height:4px}.x4-tab-default-bottom-tl,.x4-tab-default-bottom-bl,.x4-tab-default-bottom-tr,.x4-tab-default-bottom-br,.x4-tab-default-bottom-tc,.x4-tab-default-bottom-bc,.x4-tab-default-bottom-ml,.x4-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x4-tab-default-bottom-ml,.x4-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x4-tab-default-bottom-mc{padding:3px 6px 0 6px}.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,.x4-strict .x4-ie7 .x4-tab-default-bottom-bl{position:relative;right:0}.x4-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x4-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-left-tl{background-position:0 -8px}.x4-tab-default-left-tr{background-position:right -12px}.x4-tab-default-left-bl{background-position:0 -16px}.x4-tab-default-left-br{background-position:right -20px}.x4-tab-default-left-ml{background-position:0 top}.x4-tab-default-left-mr{background-position:right top}.x4-tab-default-left-tc{background-position:0 0}.x4-tab-default-left-bc{background-position:0 -4px}.x4-tab-default-left-tr,.x4-tab-default-left-br,.x4-tab-default-left-mr{padding-right:4px}.x4-tab-default-left-tl,.x4-tab-default-left-bl,.x4-tab-default-left-ml{padding-left:4px}.x4-tab-default-left-tc{height:4px}.x4-tab-default-left-bc{height:0}.x4-tab-default-left-tl,.x4-tab-default-left-bl,.x4-tab-default-left-tr,.x4-tab-default-left-br,.x4-tab-default-left-tc,.x4-tab-default-left-bc,.x4-tab-default-left-ml,.x4-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-left-ml,.x4-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-left-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-left-tl,.x4-strict .x4-ie7 .x4-tab-default-left-bl{position:relative;right:0}.x4-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-right-tl{background-position:0 -8px}.x4-tab-default-right-tr{background-position:right -12px}.x4-tab-default-right-bl{background-position:0 -16px}.x4-tab-default-right-br{background-position:right -20px}.x4-tab-default-right-ml{background-position:0 top}.x4-tab-default-right-mr{background-position:right top}.x4-tab-default-right-tc{background-position:0 0}.x4-tab-default-right-bc{background-position:0 -4px}.x4-tab-default-right-tr,.x4-tab-default-right-br,.x4-tab-default-right-mr{padding-right:4px}.x4-tab-default-right-tl,.x4-tab-default-right-bl,.x4-tab-default-right-ml{padding-left:4px}.x4-tab-default-right-tc{height:4px}.x4-tab-default-right-bc{height:0}.x4-tab-default-right-tl,.x4-tab-default-right-bl,.x4-tab-default-right-tr,.x4-tab-default-right-br,.x4-tab-default-right-tc,.x4-tab-default-right-bc,.x4-tab-default-right-ml,.x4-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-right-ml,.x4-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-right-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-right-tl,.x4-strict .x4-ie7 .x4-tab-default-right-bl{position:relative;right:0}.x4-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x4-tab-default .x4-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x4-tab-default .x4-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x4-tab-default .x4-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x4-ie8m .x4-tab-default .x4-tab-glyph{color:#8facd0}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default{padding-left:0}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-button{padding-left:9px}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-icon-el{left:9px}.x4-tab-default-icon .x4-tab-inner{width:16px}.x4-rtl.x4-tab-default{margin:0 2px 0 0}.x4-rtl.x4-tab-default{margin:0 2px 0 0}.x4-tab-default-left{margin:0 2px 0 0}.x4-rtl.x4-tab-default-left{margin:0 0 0 2px}.x4-tab-default-top,.x4-tab-default-left,.x4-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x4-nlg .x4-tab-default-top,.x4-nlg .x4-tab-default-left,.x4-nlg .x4-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x4-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x4-nlg .x4-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x4-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x4-rtl.x4-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-rtl.x4-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x4-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x4-rtl.x4-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-rtl.x4-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x4-tab-default-icon-text-left .x4-tab-inner{padding-left:20px}.x4-rtl.x4-tab-default-icon-text-left .x4-tab-inner{padding-left:0;padding-right:20px}.x4-tab-default-over{background-color:#e8f2ff}.x4-tab-default-over .x4-tab-glyph{color:#416da3}.x4-ie8m .x4-tab-default-over .x4-tab-glyph{color:#94afd1}.x4-tab-default-top-over,.x4-tab-default-left-over,.x4-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-nlg .x4-tab-default-top-over,.x4-nlg .x4-tab-default-left-over,.x4-nlg .x4-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x4-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-nlg .x4-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x4-tab-default-active{background-color:#deecfd}.x4-tab-default-active .x4-tab-inner{color:#15498b}.x4-tab-default-active .x4-tab-glyph{color:#15498b}.x4-ie8m .x4-tab-default-active .x4-tab-glyph{color:#799ac4}.x4-tab-default-top-active,.x4-tab-default-left-active,.x4-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-top-active,.x4-nlg .x4-tab-default-left-active,.x4-nlg .x4-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x4-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x4-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x4-tab-default-disabled .x4-tab-inner{color:#c3b3b3}.x4-tab-default-disabled .x4-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-tab-default-disabled .x4-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x4-ie8m .x4-tab-default-disabled .x4-tab-glyph{color:#d8dae4}.x4-tab-default-top-disabled,.x4-tab-default-left-disabled,.x4-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x4-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x4-tab-default-top-disabled,.x4-tab-default-left-disabled,.x4-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x4-nlg .x4-tab-default-top-disabled,.x4-nlg .x4-tab-default-left-disabled,.x4-nlg .x4-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x4-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x4-nlg .x4-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x4-nbr .x4-tab-default{background-image:none}.x4-tab-default-top-over .x4-frame-tl,.x4-tab-default-top-over .x4-frame-bl,.x4-tab-default-top-over .x4-frame-tr,.x4-tab-default-top-over .x4-frame-br,.x4-tab-default-top-over .x4-frame-tc,.x4-tab-default-top-over .x4-frame-bc,.x4-tab-default-left-over .x4-frame-tl,.x4-tab-default-left-over .x4-frame-bl,.x4-tab-default-left-over .x4-frame-tr,.x4-tab-default-left-over .x4-frame-br,.x4-tab-default-left-over .x4-frame-tc,.x4-tab-default-left-over .x4-frame-bc,.x4-tab-default-right-over .x4-frame-tl,.x4-tab-default-right-over .x4-frame-bl,.x4-tab-default-right-over .x4-frame-tr,.x4-tab-default-right-over .x4-frame-br,.x4-tab-default-right-over .x4-frame-tc,.x4-tab-default-right-over .x4-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x4-tab-default-top-over .x4-frame-ml,.x4-tab-default-top-over .x4-frame-mr,.x4-tab-default-left-over .x4-frame-ml,.x4-tab-default-left-over .x4-frame-mr,.x4-tab-default-right-over .x4-frame-ml,.x4-tab-default-right-over .x4-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x4-tab-default-top-over .x4-frame-mc,.x4-tab-default-left-over .x4-frame-mc,.x4-tab-default-right-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x4-tab-default-bottom-over .x4-frame-tl,.x4-tab-default-bottom-over .x4-frame-bl,.x4-tab-default-bottom-over .x4-frame-tr,.x4-tab-default-bottom-over .x4-frame-br,.x4-tab-default-bottom-over .x4-frame-tc,.x4-tab-default-bottom-over .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x4-tab-default-bottom-over .x4-frame-ml,.x4-tab-default-bottom-over .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x4-tab-default-bottom-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x4-tab-default-top-active .x4-frame-tl,.x4-tab-default-top-active .x4-frame-bl,.x4-tab-default-top-active .x4-frame-tr,.x4-tab-default-top-active .x4-frame-br,.x4-tab-default-top-active .x4-frame-tc,.x4-tab-default-top-active .x4-frame-bc,.x4-tab-default-left-active .x4-frame-tl,.x4-tab-default-left-active .x4-frame-bl,.x4-tab-default-left-active .x4-frame-tr,.x4-tab-default-left-active .x4-frame-br,.x4-tab-default-left-active .x4-frame-tc,.x4-tab-default-left-active .x4-frame-bc,.x4-tab-default-right-active .x4-frame-tl,.x4-tab-default-right-active .x4-frame-bl,.x4-tab-default-right-active .x4-frame-tr,.x4-tab-default-right-active .x4-frame-br,.x4-tab-default-right-active .x4-frame-tc,.x4-tab-default-right-active .x4-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x4-tab-default-top-active .x4-frame-ml,.x4-tab-default-top-active .x4-frame-mr,.x4-tab-default-left-active .x4-frame-ml,.x4-tab-default-left-active .x4-frame-mr,.x4-tab-default-right-active .x4-frame-ml,.x4-tab-default-right-active .x4-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x4-tab-default-top-active .x4-frame-mc,.x4-tab-default-left-active .x4-frame-mc,.x4-tab-default-right-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x4-tab-default-bottom-active .x4-frame-tl,.x4-tab-default-bottom-active .x4-frame-bl,.x4-tab-default-bottom-active .x4-frame-tr,.x4-tab-default-bottom-active .x4-frame-br,.x4-tab-default-bottom-active .x4-frame-tc,.x4-tab-default-bottom-active .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x4-tab-default-bottom-active .x4-frame-ml,.x4-tab-default-bottom-active .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x4-tab-default-bottom-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x4-tab-default-top-disabled .x4-frame-tl,.x4-tab-default-top-disabled .x4-frame-bl,.x4-tab-default-top-disabled .x4-frame-tr,.x4-tab-default-top-disabled .x4-frame-br,.x4-tab-default-top-disabled .x4-frame-tc,.x4-tab-default-top-disabled .x4-frame-bc,.x4-tab-default-left-disabled .x4-frame-tl,.x4-tab-default-left-disabled .x4-frame-bl,.x4-tab-default-left-disabled .x4-frame-tr,.x4-tab-default-left-disabled .x4-frame-br,.x4-tab-default-left-disabled .x4-frame-tc,.x4-tab-default-left-disabled .x4-frame-bc,.x4-tab-default-right-disabled .x4-frame-tl,.x4-tab-default-right-disabled .x4-frame-bl,.x4-tab-default-right-disabled .x4-frame-tr,.x4-tab-default-right-disabled .x4-frame-br,.x4-tab-default-right-disabled .x4-frame-tc,.x4-tab-default-right-disabled .x4-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x4-tab-default-top-disabled .x4-frame-ml,.x4-tab-default-top-disabled .x4-frame-mr,.x4-tab-default-left-disabled .x4-frame-ml,.x4-tab-default-left-disabled .x4-frame-mr,.x4-tab-default-right-disabled .x4-frame-ml,.x4-tab-default-right-disabled .x4-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x4-tab-default-top-disabled .x4-frame-mc,.x4-tab-default-left-disabled .x4-frame-mc,.x4-tab-default-right-disabled .x4-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x4-tab-default-bottom-disabled .x4-frame-tl,.x4-tab-default-bottom-disabled .x4-frame-bl,.x4-tab-default-bottom-disabled .x4-frame-tr,.x4-tab-default-bottom-disabled .x4-frame-br,.x4-tab-default-bottom-disabled .x4-frame-tc,.x4-tab-default-bottom-disabled .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x4-tab-default-bottom-disabled .x4-frame-ml,.x4-tab-default-bottom-disabled .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x4-tab-default-bottom-disabled .x4-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x4-nbr .x4-tab-default-top,.x4-nbr .x4-tab-default-left,.x4-nbr .x4-tab-default-right{border-bottom-width:1px!important}.x4-nbr .x4-tab-default-bottom{border-top-width:1px!important}.x4-tab-default .x4-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x4-tab-default .x4-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x4-tab-default .x4-tab-close-btn{top:2px;right:2px}.x4-rtl.x4-tab-default .x4-tab-close-btn{right:auto;left:2px}.x4-tab-default-disabled .x4-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x4-tab-default-closable .x4-tab-wrap{padding-right:14px}.x4-rtl.x4-tab-default-closable .x4-tab-wrap{padding-right:0;padding-left:14px}.x4-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x4-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x4-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x4-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x4-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x4-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x4-tab-bar-default{border-style:solid;border-color:#99bce8}.x4-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x4-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x4-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x4-rtl.x4-tab-bar-default-left{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x4-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x4-rtl.x4-tab-bar-default-right{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x4-tab-bar-default-horizontal{height:25px}.x4-content-box .x4-tab-bar-default-horizontal{height:23px}.x4-tab-bar-default-vertical{width:25px}.x4-content-box .x4-tab-bar-default-vertical{width:23px}.x4-tab-bar-body-default-top{padding-bottom:2px}.x4-tab-bar-body-default-bottom{padding-top:2px}.x4-tab-bar-body-default-left{padding-right:2px}.x4-rtl.x4-tab-bar-body-default-left{padding-right:0;padding-left:2px}.x4-tab-bar-body-default-right{padding-left:2px}.x4-rtl.x4-tab-bar-body-default-right{padding-left:0;padding-right:2px}.x4-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x4-content-box .x4-tab-bar-strip-default-horizontal{height:2px}.x4-content-box .x4-tab-bar-strip-default-vertical{width:2px}.x4-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-top{border-width:1px 1px 0}.x4-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x4-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x4-rtl.x4-tab-bar-strip-default-left{border-width:0 1px 0 0}.x4-tab-bar-plain .x4-rtl.x4-tab-bar-strip-default-left{border-width:1px 1px 1px 0}.x4-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x4-rtl.x4-tab-bar-strip-default-right{border-width:0 0 0 1px}.x4-tab-bar-plain .x4-rtl.x4-tab-bar-strip-default-right{border-width:1px 0 1px 1px}.x4-tab-bar-default{background-color:#cbdbef}.x4-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x4-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x4-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x4-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x4-tab-bar-default .x4-box-scroller{cursor:pointer}.x4-tab-bar-default .x4-tabbar-scroll-left,.x4-tab-bar-default .x4-tabbar-scroll-right{height:20px;width:18px}.x4-tab-bar-default .x4-tabbar-scroll-top,.x4-tab-bar-default .x4-tabbar-scroll-bottom{width:20px;height:18px}.x4-tab-bar-default-bottom .x4-box-scroller{margin-top:1px}.x4-tab-bar-default-right .x4-box-scroller{margin-left:1px}.x4-rtl.x4-tab-bar-default-right .x4-box-scroller{margin-left:0;margin-right:1px}.x4-tab-bar-default-top .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x4-tab-bar-default-top .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x4-rtl.x4-tab-bar-default-top .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x4-rtl.x4-tab-bar-default-top .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x4-tab-bar-default-bottom .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x4-tab-bar-default-bottom .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x4-rtl.x4-tab-bar-default-bottom .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x4-rtl.x4-tab-bar-default-bottom .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x4-tab-bar-default-left .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x4-tab-bar-default-left .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x4-rtl.x4-tab-bar-default-left .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x4-rtl.x4-tab-bar-default-left .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x4-tab-bar-default-right .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x4-tab-bar-default-right .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x4-rtl.x4-tab-bar-default-right .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x4-rtl.x4-tab-bar-default-right .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x4-tab-bar-default .x4-tabbar-scroll-left-hover,.x4-tab-bar-default .x4-tabbar-scroll-right-hover{background-position:-18px 0}.x4-tab-bar-default .x4-tabbar-scroll-top-hover,.x4-tab-bar-default .x4-tabbar-scroll-bottom-hover{background-position:0 -18px}.x4-tab-bar-default .x4-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x4-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x4-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x4-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x4-tab-bar-plain{border-width:0;padding:0;height:23px}.x4-column-header-checkbox{border-color:#c5c5c5}.x4-grid-row-checker,.x4-column-header-checkbox .x4-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x4-column-header-checkbox .x4-column-header-inner{padding:5px 5px 4px 5px}.x4-grid-cell-row-checker .x4-grid-cell-inner{padding:4px 5px 3px 5px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-row-checker .x4-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x4-grid-hd-checker-on .x4-column-header-text,.x4-grid-row-selected .x4-grid-row-checker,.x4-grid-row-checked .x4-grid-row-checker{background-position:0 -13px}.x4-tree-expander{cursor:pointer}.x4-tree-arrows .x4-tree-expander{background-image:url(images/tree/arrows.gif)}.x4-tree-arrows .x4-tree-expander-over .x4-tree-expander{background-position:-32px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander{background-position:-16px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-expander{background-position:-48px center}.x4-tree-arrows .x4-rtl.x4-tree-expander{background:url(images/tree/arrows-rtl.gif) no-repeat -48px center}.x4-tree-arrows .x4-tree-expander-over .x4-rtl.x4-tree-expander{background-position:-16px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-rtl.x4-tree-expander{background-position:-32px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-rtl.x4-tree-expander{background-position:0 center}.x4-tree-lines .x4-tree-elbow{background-image:url(images/tree/elbow.gif)}.x4-tree-lines .x4-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x4-tree-lines .x4-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x4-tree-lines .x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x4-tree-lines .x4-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x4-tree-lines .x4-rtl.x4-tree-elbow{background-image:url(images/tree/elbow-rtl.gif)}.x4-tree-lines .x4-rtl.x4-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.gif)}.x4-tree-lines .x4-rtl.x4-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.gif)}.x4-tree-lines .x4-rtl.x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.gif)}.x4-tree-lines .x4-rtl.x4-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.gif)}.x4-tree-no-row-lines .x4-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x4-tree-no-row-lines .x4-rtl.x4-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.gif)}.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-rtl.x4-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.gif)}.x4-tree-icon{width:16px;height:20px}.x4-tree-elbow-img{width:16px;height:20px;margin-right:0}.x4-rtl.x4-tree-elbow-img{margin-right:0;margin-left:0}.x4-tree-icon,.x4-tree-elbow-img,.x4-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x4-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x4-rtl.x4-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.gif)}.x4-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x4-rtl.x4-tree-icon-parent{background-image:url(images/tree/folder-rtl.gif)}.x4-grid-tree-node-expanded .x4-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x4-grid-tree-node-expanded .x4-rtl.x4-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.gif)}.x4-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x4-rtl.x4-tree-checkbox{margin-right:0;margin-left:3px}.x4-tree-checkbox-checked{background-position:0 -13px}.x4-grid-tree-loading .x4-tree-icon{background-image:url(images/tree/loading.gif)}.x4-grid-tree-loading .x4-rtl.x4-tree-icon{background-image:url(images/tree/loading.gif)}.x4-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x4-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x4-rtl.x4-tree-node-text{padding-left:0;padding-right:3px}.x4-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x4-tree-drop-ok-append .x4-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x4-tree-drop-ok-above .x4-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x4-tree-drop-ok-below .x4-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x4-tree-drop-ok-between .x4-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x4-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x4-box-tl{background:transparent no-repeat 0 0;zoom:1}.x4-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x4-box-tr{background:transparent no-repeat right -8px}.x4-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x4-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x4-box-mc h3{margin:0 0 4px 0;zoom:1}.x4-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x4-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x4-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x4-box-br{background:transparent no-repeat right -24px}.x4-box-tl,.x4-box-bl{padding-left:8px;overflow:hidden}.x4-box-tr,.x4-box-br{padding-right:8px;overflow:hidden}.x4-box-tl{background-image:url(images/box/corners.gif)}.x4-box-tc{background-image:url(images/box/tb.gif)}.x4-box-tr{background-image:url(images/box/corners.gif)}.x4-box-ml{background-image:url(images/box/l.gif)}.x4-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x4-box-mc h3{font-size:18px;font-weight:bold}.x4-box-mr{background-image:url(images/box/r.gif)}.x4-box-bl{background-image:url(images/box/corners.gif)}.x4-box-bc{background-image:url(images/box/tb.gif)}.x4-box-br{background-image:url(images/box/corners.gif)}.x4-box-blue .x4-box-bl,.x4-box-blue .x4-box-br,.x4-box-blue .x4-box-tl,.x4-box-blue .x4-box-tr{background-image:url(images/box/corners-blue.gif)}.x4-box-blue .x4-box-bc,.x4-box-blue .x4-box-mc,.x4-box-blue .x4-box-tc{background-image:url(images/box/tb-blue.gif)}.x4-box-blue .x4-box-mc{background-color:#c3daf9}.x4-box-blue .x4-box-mc h3{color:#17385b}.x4-box-blue .x4-box-ml{background-image:url(images/box/l-blue.gif)}.x4-box-blue .x4-box-mr{background-image:url(images/box/r-blue.gif)}.x4-rtl.x4-toolbar-more-icon{background-image:url(images/toolbar/more-left.gif)!important}.x4-message-box .x4-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x4-form-trigger{height:22px}.x4-content-box .x4-form-trigger{height:21px}.x4-field-toolbar .x4-form-trigger{height:20px}.x4-content-box .x4-field-toolbar .x4-form-trigger{height:19px}.x4-content-box div.x4-form-spinner-up,.x4-content-box div.x4-form-spinner-down{height:10px}.x4-content-box .x4-toolbar-item div.x4-form-spinner-up,.x4-content-box .x4-toolbar-item div.x4-form-spinner-down{height:9px}.x4-html-editor-wrap .x4-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x4-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x4-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x4-rtl.x4-column-header-trigger{background-image:url(images/grid/grid3-hd-btn-left.gif)}.x4-content-box .x4-grid-editor .x4-form-trigger{height:19px}.x4-grid-editor .x4-form-spinner-up,.x4-grid-editor .x4-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x4-content-box .x4-grid-editor .x4-form-spinner-up,.x4-content-box .x4-grid-editor .x4-form-spinner-down{height:9px}.x4-grid-editor .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-up,.x4-grid-editor .x4-rtl.x4-form-trigger-wrap .x4-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x4-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x4-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x4-resizable-over .x4-resizable-handle-east,.x4-resizable-over .x4-resizable-handle-west,.x4-resizable-pinned .x4-resizable-handle-east,.x4-resizable-pinned .x4-resizable-handle-west{background-position:left}.x4-resizable-over .x4-resizable-handle-south,.x4-resizable-over .x4-resizable-handle-north,.x4-resizable-pinned .x4-resizable-handle-south,.x4-resizable-pinned .x4-resizable-handle-north{background-position:top}.x4-resizable-over .x4-resizable-handle-southeast,.x4-resizable-pinned .x4-resizable-handle-southeast{background-position:top left}.x4-resizable-over .x4-resizable-handle-northwest,.x4-resizable-pinned .x4-resizable-handle-northwest{background-position:bottom right}.x4-resizable-over .x4-resizable-handle-northeast,.x4-resizable-pinned .x4-resizable-handle-northeast{background-position:bottom left}.x4-resizable-over .x4-resizable-handle-southwest,.x4-resizable-pinned .x4-resizable-handle-southwest{background-position:top right}.x4-ie6 .x4-slider-horz,.x4-ie6 .x4-slider-horz .x4-slider-end,.x4-ie6 .x4-slider-horz .x4-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x4-ie6 .x4-slider-horz .x4-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x4-ie6 .x4-slider-vert,.x4-ie6 .x4-slider-vert .x4-slider-end,.x4-ie6 .x4-slider-vert .x4-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x4-ie6 .x4-slider-vert .x4-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x4-tab-icon-el{top:-1px}.x4-tab-noicon .x4-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic-sandbox/ext-theme-classic-sandbox-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x4-body{margin:0}img{border:0}.x4-border-box,.x4-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x4-rtl{direction:rtl}.x4-ltr{direction:ltr}.x4-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x4-strict .x4-ie7 .x4-clear{height:0;width:0}.x4-layer{position:absolute!important;overflow:hidden;zoom:1}.x4-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x4-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x4-hide-display{display:none!important}.x4-hide-visibility{visibility:hidden!important}.x4-ie6 .x4-item-disabled{filter:none}.x4-hidden,.x4-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x4-hide-nosize{height:0!important;width:0!important}.x4-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x4-masked-relative{position:relative}.x4-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x4-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x4-list-plain{list-style-type:none;margin:0;padding:0}.x4-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x4-frame-tl,.x4-frame-tr,.x4-frame-tc,.x4-frame-bl,.x4-frame-br,.x4-frame-bc{overflow:hidden;background-repeat:no-repeat}.x4-frame-tc,.x4-frame-bc{background-repeat:repeat-x}.x4-frame-mc{background-repeat:repeat-x;overflow:hidden}.x4-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x4-item-disabled,.x4-item-disabled *{cursor:default}.x4-box-item{position:absolute!important;left:0;top:0}div.x4-editor{overflow:visible}.x4-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x4-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x4-mask-msg{z-index:20001;position:absolute}.x4-progress{position:relative;border-style:solid;overflow:hidden}.x4-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x4-progress-text{overflow:hidden;position:absolute}.x4-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x4-btn-wrap{position:relative;display:block}.x4-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x4-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x4-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x4-btn-inner-center{text-align:center}.x4-btn-inner-left{text-align:left}.x4-btn-inner-right{text-align:right}.x4-box-layout-ct{overflow:hidden;zoom:1}.x4-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x4-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x4-horizontal-box-overflow-body{float:left}.x4-box-scroller{position:relative;background-repeat:no-repeat}.x4-box-scroller-left,.x4-box-scroller-right{float:left;height:100%;z-index:5}.x4-box-scroller-top .x4-box-scroller,.x4-box-scroller-bottom .x4-box-scroller{line-height:0;font-size:0;background-position:center 0}.x4-box-menu-after{float:right}.x4-toolbar-text{white-space:nowrap}.x4-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal{width:2px}.x4-toolbar-scroller{padding-left:0}.x4-toolbar-plain{border:0}.x4-docked{position:absolute!important;z-index:1}.x4-docked-vertical{position:static}.x4-docked-top{border-bottom-width:0!important}.x4-docked-bottom{border-top-width:0!important}.x4-docked-left{border-right-width:0!important}.x4-docked-right{border-left-width:0!important}.x4-docked-noborder-top{border-top-width:0!important}.x4-docked-noborder-right{border-right-width:0!important}.x4-docked-noborder-bottom{border-bottom-width:0!important}.x4-docked-noborder-left{border-left-width:0!important}.x4-noborder-l{border-left-width:0!important}.x4-noborder-b{border-bottom-width:0!important}.x4-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-r{border-right-width:0!important}.x4-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x4-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x4-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-t{border-top-width:0!important}.x4-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x4-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x4-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x4-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x4-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x4-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x4-noborder-trbl{border-width:0!important}.x4-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x4-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x4-dd-drag-proxy,.x4-dd-drag-current{z-index:1000000!important;pointer-events:none}.x4-dd-drag-repair .x4-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x4-dd-drag-repair .x4-dd-drop-icon{display:none}.x4-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x4-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x4-dd-drop-ok .x4-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x4-dd-drop-ok-add .x4-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x4-dd-drop-nodrop div.x4-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x4-panel,.x4-plain{overflow:hidden;position:relative}.x4-panel{outline:0}.x4-ie .x4-panel-header,.x4-ie .x4-panel-header-tl,.x4-ie .x4-panel-header-tc,.x4-ie .x4-panel-header-tr,.x4-ie .x4-panel-header-ml,.x4-ie .x4-panel-header-mc,.x4-ie .x4-panel-header-mr,.x4-ie .x4-panel-header-bl,.x4-ie .x4-panel-header-bc,.x4-ie .x4-panel-header-br{zoom:1}.x4-ie8 td.x4-frame-mc{vertical-align:top}.x4-panel-body{overflow:hidden;position:relative}.x4-nlg .x4-panel-header-vertical .x4-frame-mc{background-repeat:repeat-y}.x4-panel-header-plain,.x4-panel-body-plain{border:0;padding:0}.x4-tip{position:absolute;overflow:visible}.x4-tip-body{overflow:hidden;position:relative}.x4-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x4-table-layout{font-size:1em}.x4-btn-group{position:relative;overflow:hidden}.x4-btn-group-body{position:relative;zoom:1}.x4-btn-group-body .x4-table-layout-cell{vertical-align:top}.x4-viewport,.x4-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x4-window{outline:0;overflow:hidden}.x4-window .x4-window-wrap{position:relative}.x4-window-body{position:relative;overflow:hidden}.x4-window-body-plain{background:transparent}.x4-form-item-label{display:block}.x4-form-item-label-right{text-align:right}.x4-form-item-label-top{display:block;zoom:1}.x4-form-invalid-icon{overflow:hidden}.x4-form-invalid-icon ul{display:none}.x4-form-textarea{overflow:auto;resize:none}.x4-safari.x4-mac .x4-form-textarea{margin-bottom:-2px}.x4-form-display-field-body{vertical-align:top}.x4-form-cb-wrap{vertical-align:top}.x4-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x4-form-cb::-moz-focus-inner{padding:0;border:0}.x4-form-cb-label{display:inline-block;zoom:1}.x4-fieldset{display:block;position:relative}.x4-fieldset-header{overflow:hidden}.x4-fieldset-header .x4-form-item,.x4-fieldset-header .x4-tool{float:left}.x4-fieldset-header .x4-form-cb-wrap{font-size:0;line-height:0}.x4-fieldset-header .x4-form-cb{margin:0}.x4-fieldset-header-text{float:left}.x4-webkit *:focus{outline:none!important}.x4-form-item{vertical-align:top;table-layout:fixed}.x4-form-item-body{position:relative}.x4-form-form-item td{border-top:1px solid transparent}.x4-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x4-item-disabled .x4-form-trigger{cursor:default}.x4-trigger-noedit{cursor:default}.x4-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x4-form-spinner-up,.x4-form-spinner-down{font-size:0}.x4-datepicker{position:relative}.x4-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x4-datepicker-cell{padding:0}.x4-datepicker-header{position:relative;zoom:1}.x4-datepicker-arrow{position:absolute;outline:0;font-size:0}.x4-datepicker-column-header{padding:0}.x4-datepicker-date{display:block;zoom:1;text-decoration:none}.x4-monthpicker{position:absolute;left:0;top:0}.x4-monthpicker-body{height:100%}.x4-monthpicker-months,.x4-monthpicker-years{float:left;height:100%}.x4-monthpicker-item{float:left}.x4-monthpicker-item-inner{display:block;text-decoration:none}.x4-monthpicker-yearnav-button-ct{float:left;text-align:center}.x4-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x4-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x4-strict .x4-ie6 .x4-monthpicker-buttons{bottom:-1px}.x4-form-file-btn{overflow:hidden}.x4-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x4-form-item-hidden{margin:0}.x4-color-picker-item{float:left;text-decoration:none}.x4-color-picker-item-inner{display:block;font-size:1px}.x4-html-editor-tb .x4-toolbar{position:static!important}.x4-htmleditor-iframe{display:block;overflow:auto}.x4-fit-item{position:relative}.x4-grid-row,.x4-grid-data-row{outline:0}.x4-grid-view{overflow:hidden;position:relative}.x4-grid-table{table-layout:fixed;border-collapse:separate}.x4-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x4-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x4-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x4-grid-header-ct{cursor:default}.x4-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x4-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x4-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x4-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x4-column-header-over .x4-column-header-trigger,.x4-column-header-open .x4-column-header-trigger{display:block}.x4-column-header-align-right{text-align:right}.x4-column-header-align-left{text-align:left}.x4-column-header-align-center{text-align:center}.x4-grid-cell-inner-action-col{line-height:0;font-size:0}.x4-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x4-row-numberer .x4-column-header-inner{text-overflow:clip}.x4-grid-group,.x4-grid-group-body,.x4-grid-group-hd{zoom:1}.x4-grid-group-hd{white-space:nowrap}.x4-grid-row-body-hidden,.x4-grid-group-collapsed{display:none}.x4-grid-rowbody{zoom:1}.x4-grid-row-body-hidden{display:none}td.x4-grid-rowwrap .x4-grid-table{border:0}td.x4-grid-rowwrap .x4-grid-cell{border-bottom:0;background-color:transparent}.x4-grid-editor .x4-form-cb-wrap{text-align:center}.x4-grid-editor .x4-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x4-grid-editor div.x4-form-action-col-field{line-height:0}.x4-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x4-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x4-grid-row-expander{font-size:0;line-height:0}.x4-abs-layout-ct{position:relative}.x4-abs-layout-item{position:absolute!important}.x4-splitter{font-size:1px}.x4-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x4-splitter-vertical{cursor:e-resize;cursor:col-resize}.x4-splitter-collapsed,.x4-splitter-horizontal-noresize,.x4-splitter-vertical-noresize{cursor:default}.x4-splitter-active{z-index:4}.x4-collapse-el{position:absolute;background-repeat:no-repeat}.x4-border-layout-ct{overflow:hidden;zoom:1}.x4-border-layout-ct{position:relative}.x4-border-region-slide-in{z-index:5}.x4-region-collapsed-placeholder{z-index:4}.x4-column{float:left}.x4-ie6 .x4-column{display:inline}.x4-quirks .x4-ie .x4-form-layout-table,.x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item{position:relative}.x4-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x4-ie6 .x4-form-layout-table{border-collapse:collapse;border-spacing:0}.x4-menu{outline:0}.x4-menu-item{white-space:nowrap;overflow:hidden}.x4-menu-item-cmp .x4-field-label-cell{vertical-align:middle}.x4-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x4-menu-plain .x4-menu-icon-separator{display:none}.x4-menu-item-link{text-decoration:none;outline:0;zoom:1}.x4-menu-item-text{zoom:1}.x4-menu-item-icon,.x4-menu-item-icon-right,.x4-menu-item-arrow{position:absolute;text-align:center}.x4-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x4-slider{outline:0;zoom:1;position:relative}.x4-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x4-slider-vert .x4-slider-inner{background:repeat-y 0 0}.x4-slider-end{zoom:1}.x4-slider-thumb{position:absolute;background:no-repeat 0 0}.x4-slider-horz .x4-slider-thumb{left:0}.x4-slider-vert .x4-slider-thumb{bottom:0}a.x4-tab{text-decoration:none}.x4-tab-bar{position:relative}.x4-column-header-checkbox .x4-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x4-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x4-tab{display:block;white-space:nowrap;z-index:1}.x4-tab-active{z-index:3}.x4-tab-wrap{display:block;position:relative}.x4-tab-button{zoom:1;display:block;outline:0}.x4-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x4-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x4-tab-bar{z-index:1}.x4-tab-bar-body{z-index:2;position:relative}.x4-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x4-tab-bar-horizontal .x4-tab-bar-strip{width:100%;left:0}.x4-tab-bar-vertical .x4-tab-bar-strip{height:100%;top:0}.x4-tab-bar-strip-top{bottom:0}.x4-tab-bar-strip-bottom{top:0}.x4-tab-bar-strip-left{right:0}.x4-tab-bar-strip-right{left:0}.x4-tab-bar-plain{background:transparent!important}.x4-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x4-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x4-tab-mc{overflow:visible}.x4-autowidth-table .x4-grid-table{table-layout:auto;width:auto!important}.x4-tree-view{overflow:hidden}.x4-tree-elbow-img,.x4-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x4-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x4-tree-animator-wrap{overflow:hidden}.x4-tree-node-text{zoom:1}.x4-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x4-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x4-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x4-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x4-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x4-animating-size,.x4-collapsed{overflow:hidden!important}.x4-editor .x4-form-item-body{padding-bottom:0}.x4-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x4-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x4-focus-frame-top,.x4-focus-frame-bottom,.x4-focus-frame-left,.x4-focus-frame-right{position:absolute;top:0;left:0}.x4-focus-frame-top,.x4-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x4-focus-frame-left,.x4-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x4-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x4-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x4-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x4-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x4-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x4-content-box .x4-progress-default{height:18px}.x4-progress-default .x4-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x4-nlg .x4-progress-default .x4-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x4-progress-default .x4-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x4-progress-default .x4-progress-text-back{color:#396295;line-height:18px}.x4-progress-default .x4-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x4-btn-default-small{border-color:#d1d1d1}.x4-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-btn-default-small-tl{background-position:0 -6px}.x4-btn-default-small-tr{background-position:right -9px}.x4-btn-default-small-bl{background-position:0 -12px}.x4-btn-default-small-br{background-position:right -15px}.x4-btn-default-small-ml{background-position:0 top}.x4-btn-default-small-mr{background-position:right top}.x4-btn-default-small-tc{background-position:0 0}.x4-btn-default-small-bc{background-position:0 -3px}.x4-btn-default-small-tr,.x4-btn-default-small-br,.x4-btn-default-small-mr{padding-right:3px}.x4-btn-default-small-tl,.x4-btn-default-small-bl,.x4-btn-default-small-ml{padding-left:3px}.x4-btn-default-small-tc{height:3px}.x4-btn-default-small-bc{height:3px}.x4-btn-default-small-tl,.x4-btn-default-small-bl,.x4-btn-default-small-tr,.x4-btn-default-small-br,.x4-btn-default-small-tc,.x4-btn-default-small-bc,.x4-btn-default-small-ml,.x4-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x4-btn-default-small-ml,.x4-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x4-btn-default-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-small-tl,.x4-strict .x4-ie7 .x4-btn-default-small-bl{position:relative;right:0}.x4-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x4-btn-default-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x4-btn-default-small .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-small .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-small .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-small .x4-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-small .x4-btn-glyph{color:#999}.x4-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-small-icon .x4-btn-button,.x4-btn-default-small-noicon .x4-btn-button{height:16px}.x4-btn-default-small-icon .x4-btn-inner,.x4-btn-default-small-noicon .x4-btn-inner{line-height:16px}.x4-btn-default-small-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-small-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-small-icon .x4-btn-icon-el{width:16px;height:16px}.x4-btn-default-small-icon-text-left .x4-btn-button{height:16px}.x4-btn-default-small-icon-text-left .x4-btn-inner{line-height:16px;padding-left:20px}.x4-btn-default-small-icon-text-left .x4-btn-icon-el{width:16px;right:auto}.x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon-el{height:16px}.x4-btn-default-small-icon-text-right .x4-btn-button{height:16px}.x4-btn-default-small-icon-text-right .x4-btn-inner{line-height:16px;padding-right:20px}.x4-btn-default-small-icon-text-right .x4-btn-icon-el{width:16px;left:auto}.x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon-el{height:16px}.x4-btn-default-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-small-icon-text-top .x4-btn-icon-el{height:16px;bottom:auto}.x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-small-icon-text-bottom .x4-btn-icon-el{height:16px;top:auto}.x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-menu-active,.x4-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-small-over .x4-frame-tl,.x4-btn-default-small-over .x4-frame-bl,.x4-btn-default-small-over .x4-frame-tr,.x4-btn-default-small-over .x4-frame-br,.x4-btn-default-small-over .x4-frame-tc,.x4-btn-default-small-over .x4-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x4-btn-default-small-over .x4-frame-ml,.x4-btn-default-small-over .x4-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x4-btn-default-small-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x4-btn-default-small-focus .x4-frame-tl,.x4-btn-default-small-focus .x4-frame-bl,.x4-btn-default-small-focus .x4-frame-tr,.x4-btn-default-small-focus .x4-frame-br,.x4-btn-default-small-focus .x4-frame-tc,.x4-btn-default-small-focus .x4-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x4-btn-default-small-focus .x4-frame-ml,.x4-btn-default-small-focus .x4-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x4-btn-default-small-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x4-btn-default-small-menu-active .x4-frame-tl,.x4-btn-default-small-menu-active .x4-frame-bl,.x4-btn-default-small-menu-active .x4-frame-tr,.x4-btn-default-small-menu-active .x4-frame-br,.x4-btn-default-small-menu-active .x4-frame-tc,.x4-btn-default-small-menu-active .x4-frame-bc,.x4-btn-default-small-pressed .x4-frame-tl,.x4-btn-default-small-pressed .x4-frame-bl,.x4-btn-default-small-pressed .x4-frame-tr,.x4-btn-default-small-pressed .x4-frame-br,.x4-btn-default-small-pressed .x4-frame-tc,.x4-btn-default-small-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x4-btn-default-small-menu-active .x4-frame-ml,.x4-btn-default-small-menu-active .x4-frame-mr,.x4-btn-default-small-pressed .x4-frame-ml,.x4-btn-default-small-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x4-btn-default-small-menu-active .x4-frame-mc,.x4-btn-default-small-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x4-btn-default-small-disabled .x4-frame-tl,.x4-btn-default-small-disabled .x4-frame-bl,.x4-btn-default-small-disabled .x4-frame-tr,.x4-btn-default-small-disabled .x4-frame-br,.x4-btn-default-small-disabled .x4-frame-tc,.x4-btn-default-small-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x4-btn-default-small-disabled .x4-frame-ml,.x4-btn-default-small-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x4-btn-default-small-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x4-nlg .x4-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x4-nlg .x4-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x4-nlg .x4-btn-default-small-menu-active,.x4-nlg .x4-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x4-nlg .x4-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x4-nbr .x4-btn-default-small{background-image:none}.x4-btn-default-small .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-small .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-small-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-small-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-small-disabled .x4-btn-inner,.x4-btn-default-small-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x4-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x4-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x4-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x4-btn-default-medium{border-color:#d1d1d1}.x4-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-medium-tl{background-position:0 -6px}.x4-btn-default-medium-tr{background-position:right -9px}.x4-btn-default-medium-bl{background-position:0 -12px}.x4-btn-default-medium-br{background-position:right -15px}.x4-btn-default-medium-ml{background-position:0 top}.x4-btn-default-medium-mr{background-position:right top}.x4-btn-default-medium-tc{background-position:0 0}.x4-btn-default-medium-bc{background-position:0 -3px}.x4-btn-default-medium-tr,.x4-btn-default-medium-br,.x4-btn-default-medium-mr{padding-right:3px}.x4-btn-default-medium-tl,.x4-btn-default-medium-bl,.x4-btn-default-medium-ml{padding-left:3px}.x4-btn-default-medium-tc{height:3px}.x4-btn-default-medium-bc{height:3px}.x4-btn-default-medium-tl,.x4-btn-default-medium-bl,.x4-btn-default-medium-tr,.x4-btn-default-medium-br,.x4-btn-default-medium-tc,.x4-btn-default-medium-bc,.x4-btn-default-medium-ml,.x4-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x4-btn-default-medium-ml,.x4-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x4-btn-default-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-medium-bl{position:relative;right:0}.x4-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x4-btn-default-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-medium .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-medium .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-medium .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-medium .x4-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-medium .x4-btn-glyph{color:#999}.x4-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-medium-icon .x4-btn-button,.x4-btn-default-medium-noicon .x4-btn-button{height:24px}.x4-btn-default-medium-icon .x4-btn-inner,.x4-btn-default-medium-noicon .x4-btn-inner{line-height:24px}.x4-btn-default-medium-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-medium-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-medium-icon .x4-btn-icon-el{width:24px;height:24px}.x4-btn-default-medium-icon-text-left .x4-btn-button{height:24px}.x4-btn-default-medium-icon-text-left .x4-btn-inner{line-height:24px;padding-left:28px}.x4-btn-default-medium-icon-text-left .x4-btn-icon-el{width:24px;right:auto}.x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon-el{height:24px}.x4-btn-default-medium-icon-text-right .x4-btn-button{height:24px}.x4-btn-default-medium-icon-text-right .x4-btn-inner{line-height:24px;padding-right:28px}.x4-btn-default-medium-icon-text-right .x4-btn-icon-el{width:24px;left:auto}.x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon-el{height:24px}.x4-btn-default-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-medium-icon-text-top .x4-btn-icon-el{height:24px;bottom:auto}.x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el{height:24px;top:auto}.x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-menu-active,.x4-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-medium-over .x4-frame-tl,.x4-btn-default-medium-over .x4-frame-bl,.x4-btn-default-medium-over .x4-frame-tr,.x4-btn-default-medium-over .x4-frame-br,.x4-btn-default-medium-over .x4-frame-tc,.x4-btn-default-medium-over .x4-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x4-btn-default-medium-over .x4-frame-ml,.x4-btn-default-medium-over .x4-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x4-btn-default-medium-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x4-btn-default-medium-focus .x4-frame-tl,.x4-btn-default-medium-focus .x4-frame-bl,.x4-btn-default-medium-focus .x4-frame-tr,.x4-btn-default-medium-focus .x4-frame-br,.x4-btn-default-medium-focus .x4-frame-tc,.x4-btn-default-medium-focus .x4-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x4-btn-default-medium-focus .x4-frame-ml,.x4-btn-default-medium-focus .x4-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x4-btn-default-medium-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x4-btn-default-medium-menu-active .x4-frame-tl,.x4-btn-default-medium-menu-active .x4-frame-bl,.x4-btn-default-medium-menu-active .x4-frame-tr,.x4-btn-default-medium-menu-active .x4-frame-br,.x4-btn-default-medium-menu-active .x4-frame-tc,.x4-btn-default-medium-menu-active .x4-frame-bc,.x4-btn-default-medium-pressed .x4-frame-tl,.x4-btn-default-medium-pressed .x4-frame-bl,.x4-btn-default-medium-pressed .x4-frame-tr,.x4-btn-default-medium-pressed .x4-frame-br,.x4-btn-default-medium-pressed .x4-frame-tc,.x4-btn-default-medium-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x4-btn-default-medium-menu-active .x4-frame-ml,.x4-btn-default-medium-menu-active .x4-frame-mr,.x4-btn-default-medium-pressed .x4-frame-ml,.x4-btn-default-medium-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x4-btn-default-medium-menu-active .x4-frame-mc,.x4-btn-default-medium-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x4-btn-default-medium-disabled .x4-frame-tl,.x4-btn-default-medium-disabled .x4-frame-bl,.x4-btn-default-medium-disabled .x4-frame-tr,.x4-btn-default-medium-disabled .x4-frame-br,.x4-btn-default-medium-disabled .x4-frame-tc,.x4-btn-default-medium-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x4-btn-default-medium-disabled .x4-frame-ml,.x4-btn-default-medium-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x4-btn-default-medium-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x4-nlg .x4-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x4-nlg .x4-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x4-nlg .x4-btn-default-medium-menu-active,.x4-nlg .x4-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x4-nlg .x4-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x4-nbr .x4-btn-default-medium{background-image:none}.x4-btn-default-medium .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-medium .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-medium-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-medium-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-medium-disabled .x4-btn-inner,.x4-btn-default-medium-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x4-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x4-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x4-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x4-btn-default-large{border-color:#d1d1d1}.x4-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x4-nlg .x4-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x4-nbr .x4-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-large-tl{background-position:0 -6px}.x4-btn-default-large-tr{background-position:right -9px}.x4-btn-default-large-bl{background-position:0 -12px}.x4-btn-default-large-br{background-position:right -15px}.x4-btn-default-large-ml{background-position:0 top}.x4-btn-default-large-mr{background-position:right top}.x4-btn-default-large-tc{background-position:0 0}.x4-btn-default-large-bc{background-position:0 -3px}.x4-btn-default-large-tr,.x4-btn-default-large-br,.x4-btn-default-large-mr{padding-right:3px}.x4-btn-default-large-tl,.x4-btn-default-large-bl,.x4-btn-default-large-ml{padding-left:3px}.x4-btn-default-large-tc{height:3px}.x4-btn-default-large-bc{height:3px}.x4-btn-default-large-tl,.x4-btn-default-large-bl,.x4-btn-default-large-tr,.x4-btn-default-large-br,.x4-btn-default-large-tc,.x4-btn-default-large-bc,.x4-btn-default-large-ml,.x4-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x4-btn-default-large-ml,.x4-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x4-btn-default-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-large-tl,.x4-strict .x4-ie7 .x4-btn-default-large-bl{position:relative;right:0}.x4-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x4-btn-default-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-large .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-large .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-large .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-large .x4-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-large .x4-btn-glyph{color:#999}.x4-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-large-icon .x4-btn-button,.x4-btn-default-large-noicon .x4-btn-button{height:32px}.x4-btn-default-large-icon .x4-btn-inner,.x4-btn-default-large-noicon .x4-btn-inner{line-height:32px}.x4-btn-default-large-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-large-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-large-icon .x4-btn-icon-el{width:32px;height:32px}.x4-btn-default-large-icon-text-left .x4-btn-button{height:32px}.x4-btn-default-large-icon-text-left .x4-btn-inner{line-height:32px;padding-left:36px}.x4-btn-default-large-icon-text-left .x4-btn-icon-el{width:32px;right:auto}.x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon-el{height:32px}.x4-btn-default-large-icon-text-right .x4-btn-button{height:32px}.x4-btn-default-large-icon-text-right .x4-btn-inner{line-height:32px;padding-right:36px}.x4-btn-default-large-icon-text-right .x4-btn-icon-el{width:32px;left:auto}.x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon-el{height:32px}.x4-btn-default-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-large-icon-text-top .x4-btn-icon-el{height:32px;bottom:auto}.x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-large-icon-text-bottom .x4-btn-icon-el{height:32px;top:auto}.x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-menu-active,.x4-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-large-over .x4-frame-tl,.x4-btn-default-large-over .x4-frame-bl,.x4-btn-default-large-over .x4-frame-tr,.x4-btn-default-large-over .x4-frame-br,.x4-btn-default-large-over .x4-frame-tc,.x4-btn-default-large-over .x4-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x4-btn-default-large-over .x4-frame-ml,.x4-btn-default-large-over .x4-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x4-btn-default-large-over .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x4-btn-default-large-focus .x4-frame-tl,.x4-btn-default-large-focus .x4-frame-bl,.x4-btn-default-large-focus .x4-frame-tr,.x4-btn-default-large-focus .x4-frame-br,.x4-btn-default-large-focus .x4-frame-tc,.x4-btn-default-large-focus .x4-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x4-btn-default-large-focus .x4-frame-ml,.x4-btn-default-large-focus .x4-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x4-btn-default-large-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x4-btn-default-large-menu-active .x4-frame-tl,.x4-btn-default-large-menu-active .x4-frame-bl,.x4-btn-default-large-menu-active .x4-frame-tr,.x4-btn-default-large-menu-active .x4-frame-br,.x4-btn-default-large-menu-active .x4-frame-tc,.x4-btn-default-large-menu-active .x4-frame-bc,.x4-btn-default-large-pressed .x4-frame-tl,.x4-btn-default-large-pressed .x4-frame-bl,.x4-btn-default-large-pressed .x4-frame-tr,.x4-btn-default-large-pressed .x4-frame-br,.x4-btn-default-large-pressed .x4-frame-tc,.x4-btn-default-large-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x4-btn-default-large-menu-active .x4-frame-ml,.x4-btn-default-large-menu-active .x4-frame-mr,.x4-btn-default-large-pressed .x4-frame-ml,.x4-btn-default-large-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x4-btn-default-large-menu-active .x4-frame-mc,.x4-btn-default-large-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x4-btn-default-large-disabled .x4-frame-tl,.x4-btn-default-large-disabled .x4-frame-bl,.x4-btn-default-large-disabled .x4-frame-tr,.x4-btn-default-large-disabled .x4-frame-br,.x4-btn-default-large-disabled .x4-frame-tc,.x4-btn-default-large-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x4-btn-default-large-disabled .x4-frame-ml,.x4-btn-default-large-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x4-btn-default-large-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x4-nlg .x4-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x4-nlg .x4-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x4-nlg .x4-btn-default-large-menu-active,.x4-nlg .x4-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x4-nlg .x4-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x4-nbr .x4-btn-default-large{background-image:none}.x4-btn-default-large .x4-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x4-btn-default-large .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x4-btn-default-large-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-large-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-large-disabled .x4-btn-inner,.x4-btn-default-large-disabled .x4-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x4-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x4-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x4-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x4-btn-default-toolbar-small{border-color:transparent}.x4-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-small-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-btn-default-toolbar-small-tl{background-position:0 -6px}.x4-btn-default-toolbar-small-tr{background-position:right -9px}.x4-btn-default-toolbar-small-bl{background-position:0 -12px}.x4-btn-default-toolbar-small-br{background-position:right -15px}.x4-btn-default-toolbar-small-ml{background-position:0 top}.x4-btn-default-toolbar-small-mr{background-position:right top}.x4-btn-default-toolbar-small-tc{background-position:0 0}.x4-btn-default-toolbar-small-bc{background-position:0 -3px}.x4-btn-default-toolbar-small-tr,.x4-btn-default-toolbar-small-br,.x4-btn-default-toolbar-small-mr{padding-right:3px}.x4-btn-default-toolbar-small-tl,.x4-btn-default-toolbar-small-bl,.x4-btn-default-toolbar-small-ml{padding-left:3px}.x4-btn-default-toolbar-small-tc{height:3px}.x4-btn-default-toolbar-small-bc{height:3px}.x4-btn-default-toolbar-small-tl,.x4-btn-default-toolbar-small-bl,.x4-btn-default-toolbar-small-tr,.x4-btn-default-toolbar-small-br,.x4-btn-default-toolbar-small-tc,.x4-btn-default-toolbar-small-bc,.x4-btn-default-toolbar-small-ml,.x4-btn-default-toolbar-small-mr{zoom:1}.x4-btn-default-toolbar-small-ml,.x4-btn-default-toolbar-small-mr{zoom:1}.x4-btn-default-toolbar-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl{position:relative;right:0}.x4-btn-default-toolbar-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x4-btn-default-toolbar-small .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-small .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-small .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-small .x4-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-small .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-small-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-small-icon .x4-btn-button,.x4-btn-default-toolbar-small-noicon .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon .x4-btn-inner,.x4-btn-default-toolbar-small-noicon .x4-btn-inner{line-height:16px}.x4-btn-default-toolbar-small-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-small-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-small-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-toolbar-small-icon .x4-btn-icon-el{width:16px;height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner{line-height:16px;padding-left:20px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el{width:16px;right:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon-el{height:16px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-button{height:16px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner{line-height:16px;padding-right:20px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el{width:16px;left:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon-el{height:16px}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el{height:16px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el{height:16px;top:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-menu-active,.x4-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-small-over .x4-frame-tl,.x4-btn-default-toolbar-small-over .x4-frame-bl,.x4-btn-default-toolbar-small-over .x4-frame-tr,.x4-btn-default-toolbar-small-over .x4-frame-br,.x4-btn-default-toolbar-small-over .x4-frame-tc,.x4-btn-default-toolbar-small-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x4-btn-default-toolbar-small-over .x4-frame-ml,.x4-btn-default-toolbar-small-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x4-btn-default-toolbar-small-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-tl,.x4-btn-default-toolbar-small-focus .x4-frame-bl,.x4-btn-default-toolbar-small-focus .x4-frame-tr,.x4-btn-default-toolbar-small-focus .x4-frame-br,.x4-btn-default-toolbar-small-focus .x4-frame-tc,.x4-btn-default-toolbar-small-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-ml,.x4-btn-default-toolbar-small-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x4-btn-default-toolbar-small-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-tl,.x4-btn-default-toolbar-small-menu-active .x4-frame-bl,.x4-btn-default-toolbar-small-menu-active .x4-frame-tr,.x4-btn-default-toolbar-small-menu-active .x4-frame-br,.x4-btn-default-toolbar-small-menu-active .x4-frame-tc,.x4-btn-default-toolbar-small-menu-active .x4-frame-bc,.x4-btn-default-toolbar-small-pressed .x4-frame-tl,.x4-btn-default-toolbar-small-pressed .x4-frame-bl,.x4-btn-default-toolbar-small-pressed .x4-frame-tr,.x4-btn-default-toolbar-small-pressed .x4-frame-br,.x4-btn-default-toolbar-small-pressed .x4-frame-tc,.x4-btn-default-toolbar-small-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-ml,.x4-btn-default-toolbar-small-menu-active .x4-frame-mr,.x4-btn-default-toolbar-small-pressed .x4-frame-ml,.x4-btn-default-toolbar-small-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x4-btn-default-toolbar-small-menu-active .x4-frame-mc,.x4-btn-default-toolbar-small-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-tl,.x4-btn-default-toolbar-small-disabled .x4-frame-bl,.x4-btn-default-toolbar-small-disabled .x4-frame-tr,.x4-btn-default-toolbar-small-disabled .x4-frame-br,.x4-btn-default-toolbar-small-disabled .x4-frame-tc,.x4-btn-default-toolbar-small-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-ml,.x4-btn-default-toolbar-small-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x4-btn-default-toolbar-small-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-small-menu-active,.x4-nlg .x4-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-small{background-image:none}.x4-btn-default-toolbar-small .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-small .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-small-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-small-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x4-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x4-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x4-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x4-btn-default-toolbar-medium{border-color:transparent}.x4-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-medium-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-toolbar-medium-tl{background-position:0 -6px}.x4-btn-default-toolbar-medium-tr{background-position:right -9px}.x4-btn-default-toolbar-medium-bl{background-position:0 -12px}.x4-btn-default-toolbar-medium-br{background-position:right -15px}.x4-btn-default-toolbar-medium-ml{background-position:0 top}.x4-btn-default-toolbar-medium-mr{background-position:right top}.x4-btn-default-toolbar-medium-tc{background-position:0 0}.x4-btn-default-toolbar-medium-bc{background-position:0 -3px}.x4-btn-default-toolbar-medium-tr,.x4-btn-default-toolbar-medium-br,.x4-btn-default-toolbar-medium-mr{padding-right:3px}.x4-btn-default-toolbar-medium-tl,.x4-btn-default-toolbar-medium-bl,.x4-btn-default-toolbar-medium-ml{padding-left:3px}.x4-btn-default-toolbar-medium-tc{height:3px}.x4-btn-default-toolbar-medium-bc{height:3px}.x4-btn-default-toolbar-medium-tl,.x4-btn-default-toolbar-medium-bl,.x4-btn-default-toolbar-medium-tr,.x4-btn-default-toolbar-medium-br,.x4-btn-default-toolbar-medium-tc,.x4-btn-default-toolbar-medium-bc,.x4-btn-default-toolbar-medium-ml,.x4-btn-default-toolbar-medium-mr{zoom:1}.x4-btn-default-toolbar-medium-ml,.x4-btn-default-toolbar-medium-mr{zoom:1}.x4-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl{position:relative;right:0}.x4-btn-default-toolbar-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-toolbar-medium .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-medium .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-medium .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-medium .x4-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-medium .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-medium-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-medium-icon .x4-btn-button,.x4-btn-default-toolbar-medium-noicon .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon .x4-btn-inner,.x4-btn-default-toolbar-medium-noicon .x4-btn-inner{line-height:24px}.x4-btn-default-toolbar-medium-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-medium-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-toolbar-medium-icon .x4-btn-icon-el{width:24px;height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner{line-height:24px;padding-left:28px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el{width:24px;right:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon-el{height:24px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-button{height:24px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner{line-height:24px;padding-right:28px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el{width:24px;left:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon-el{height:24px}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el{height:24px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el{height:24px;top:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-menu-active,.x4-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-medium-over .x4-frame-tl,.x4-btn-default-toolbar-medium-over .x4-frame-bl,.x4-btn-default-toolbar-medium-over .x4-frame-tr,.x4-btn-default-toolbar-medium-over .x4-frame-br,.x4-btn-default-toolbar-medium-over .x4-frame-tc,.x4-btn-default-toolbar-medium-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x4-btn-default-toolbar-medium-over .x4-frame-ml,.x4-btn-default-toolbar-medium-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x4-btn-default-toolbar-medium-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-tl,.x4-btn-default-toolbar-medium-focus .x4-frame-bl,.x4-btn-default-toolbar-medium-focus .x4-frame-tr,.x4-btn-default-toolbar-medium-focus .x4-frame-br,.x4-btn-default-toolbar-medium-focus .x4-frame-tc,.x4-btn-default-toolbar-medium-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-ml,.x4-btn-default-toolbar-medium-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x4-btn-default-toolbar-medium-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,.x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,.x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,.x4-btn-default-toolbar-medium-menu-active .x4-frame-br,.x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,.x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,.x4-btn-default-toolbar-medium-pressed .x4-frame-tl,.x4-btn-default-toolbar-medium-pressed .x4-frame-bl,.x4-btn-default-toolbar-medium-pressed .x4-frame-tr,.x4-btn-default-toolbar-medium-pressed .x4-frame-br,.x4-btn-default-toolbar-medium-pressed .x4-frame-tc,.x4-btn-default-toolbar-medium-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,.x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,.x4-btn-default-toolbar-medium-pressed .x4-frame-ml,.x4-btn-default-toolbar-medium-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,.x4-btn-default-toolbar-medium-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-tl,.x4-btn-default-toolbar-medium-disabled .x4-frame-bl,.x4-btn-default-toolbar-medium-disabled .x4-frame-tr,.x4-btn-default-toolbar-medium-disabled .x4-frame-br,.x4-btn-default-toolbar-medium-disabled .x4-frame-tc,.x4-btn-default-toolbar-medium-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-ml,.x4-btn-default-toolbar-medium-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x4-btn-default-toolbar-medium-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-medium-menu-active,.x4-nlg .x4-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-medium{background-image:none}.x4-btn-default-toolbar-medium .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-medium .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-medium-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-medium-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x4-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x4-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x4-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x4-btn-default-toolbar-large{border-color:transparent}.x4-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-btn-default-toolbar-large-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x4-btn-default-toolbar-large-tl{background-position:0 -6px}.x4-btn-default-toolbar-large-tr{background-position:right -9px}.x4-btn-default-toolbar-large-bl{background-position:0 -12px}.x4-btn-default-toolbar-large-br{background-position:right -15px}.x4-btn-default-toolbar-large-ml{background-position:0 top}.x4-btn-default-toolbar-large-mr{background-position:right top}.x4-btn-default-toolbar-large-tc{background-position:0 0}.x4-btn-default-toolbar-large-bc{background-position:0 -3px}.x4-btn-default-toolbar-large-tr,.x4-btn-default-toolbar-large-br,.x4-btn-default-toolbar-large-mr{padding-right:3px}.x4-btn-default-toolbar-large-tl,.x4-btn-default-toolbar-large-bl,.x4-btn-default-toolbar-large-ml{padding-left:3px}.x4-btn-default-toolbar-large-tc{height:3px}.x4-btn-default-toolbar-large-bc{height:3px}.x4-btn-default-toolbar-large-tl,.x4-btn-default-toolbar-large-bl,.x4-btn-default-toolbar-large-tr,.x4-btn-default-toolbar-large-br,.x4-btn-default-toolbar-large-tc,.x4-btn-default-toolbar-large-bc,.x4-btn-default-toolbar-large-ml,.x4-btn-default-toolbar-large-mr{zoom:1}.x4-btn-default-toolbar-large-ml,.x4-btn-default-toolbar-large-mr{zoom:1}.x4-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl{position:relative;right:0}.x4-btn-default-toolbar-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x4-btn-default-toolbar-large .x4-btn-arrow{background-image:url(images/button/arrow.gif)}.x4-btn-default-toolbar-large .x4-btn-arrow-right{padding-right:12px}.x4-btn-default-toolbar-large .x4-btn-arrow-bottom{padding-bottom:12px}.x4-btn-default-toolbar-large .x4-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x4-ie8m .x4-btn-default-toolbar-large .x4-btn-glyph{color:#999}.x4-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x4-btn-default-toolbar-large-disabled .x4-btn-inner{color:#8c8c8c}.x4-btn-default-toolbar-large-icon .x4-btn-button,.x4-btn-default-toolbar-large-noicon .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon .x4-btn-inner,.x4-btn-default-toolbar-large-noicon .x4-btn-inner{line-height:32px}.x4-btn-default-toolbar-large-icon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-large-noicon .x4-btn-arrow-right .x4-btn-inner,.x4-btn-default-toolbar-large-icon-text-left .x4-btn-arrow-right .x4-btn-inner{padding-right:0}.x4-btn-default-toolbar-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-toolbar-large-icon .x4-btn-icon-el{width:32px;height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner{line-height:32px;padding-left:36px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el{width:32px;right:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon-el{height:32px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-button{height:32px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner{line-height:32px;padding-right:36px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el{width:32px;left:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el,.x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon-el{height:32px}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el{height:32px;bottom:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el{height:32px;top:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon-el{width:100%}.x4-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-menu-active,.x4-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-large-over .x4-frame-tl,.x4-btn-default-toolbar-large-over .x4-frame-bl,.x4-btn-default-toolbar-large-over .x4-frame-tr,.x4-btn-default-toolbar-large-over .x4-frame-br,.x4-btn-default-toolbar-large-over .x4-frame-tc,.x4-btn-default-toolbar-large-over .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x4-btn-default-toolbar-large-over .x4-frame-ml,.x4-btn-default-toolbar-large-over .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x4-btn-default-toolbar-large-over .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-tl,.x4-btn-default-toolbar-large-focus .x4-frame-bl,.x4-btn-default-toolbar-large-focus .x4-frame-tr,.x4-btn-default-toolbar-large-focus .x4-frame-br,.x4-btn-default-toolbar-large-focus .x4-frame-tc,.x4-btn-default-toolbar-large-focus .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-ml,.x4-btn-default-toolbar-large-focus .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x4-btn-default-toolbar-large-focus .x4-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-tl,.x4-btn-default-toolbar-large-menu-active .x4-frame-bl,.x4-btn-default-toolbar-large-menu-active .x4-frame-tr,.x4-btn-default-toolbar-large-menu-active .x4-frame-br,.x4-btn-default-toolbar-large-menu-active .x4-frame-tc,.x4-btn-default-toolbar-large-menu-active .x4-frame-bc,.x4-btn-default-toolbar-large-pressed .x4-frame-tl,.x4-btn-default-toolbar-large-pressed .x4-frame-bl,.x4-btn-default-toolbar-large-pressed .x4-frame-tr,.x4-btn-default-toolbar-large-pressed .x4-frame-br,.x4-btn-default-toolbar-large-pressed .x4-frame-tc,.x4-btn-default-toolbar-large-pressed .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-ml,.x4-btn-default-toolbar-large-menu-active .x4-frame-mr,.x4-btn-default-toolbar-large-pressed .x4-frame-ml,.x4-btn-default-toolbar-large-pressed .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x4-btn-default-toolbar-large-menu-active .x4-frame-mc,.x4-btn-default-toolbar-large-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-tl,.x4-btn-default-toolbar-large-disabled .x4-frame-bl,.x4-btn-default-toolbar-large-disabled .x4-frame-tr,.x4-btn-default-toolbar-large-disabled .x4-frame-br,.x4-btn-default-toolbar-large-disabled .x4-frame-tc,.x4-btn-default-toolbar-large-disabled .x4-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-ml,.x4-btn-default-toolbar-large-disabled .x4-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x4-btn-default-toolbar-large-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x4-nlg .x4-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x4-nlg .x4-btn-default-toolbar-large-menu-active,.x4-nlg .x4-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x4-nbr .x4-btn-default-toolbar-large{background-image:none}.x4-btn-default-toolbar-large .x4-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x4-btn-default-toolbar-large .x4-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x4-btn-default-toolbar-large-over .x4-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x4-btn-default-toolbar-large-over .x4-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x4-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x4-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x4-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x4-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x4-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x4-btn-icon-text-left .x4-btn-icon-el{background-position:left center}.x4-btn-icon-text-right .x4-btn-icon-el{background-position:right center}.x4-btn-icon-text-top .x4-btn-icon-el{background-position:center top}.x4-btn-icon-text-bottom .x4-btn-icon-el{background-position:center bottom}.x4-btn-arrow-right{background-position:right center}.x4-btn-arrow-bottom{background-position:center bottom}.x4-btn-arrow{background-repeat:no-repeat}.x4-btn-split{display:block;background-repeat:no-repeat}.x4-btn-split-right{background-position:right center}.x4-btn-split-bottom{background-position:center bottom}.x4-cycle-fixed-width .x4-btn-inner{text-align:inherit}.x4-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x4-toolbar-item{margin:0 2px 0 0}.x4-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x4-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x4-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x4-toolbar-footer .x4-toolbar-item{margin:0 6px 0 0}.x4-toolbar-spacer{width:2px}.x4-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x4-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x4-toolbar-default .x4-box-scroller{cursor:pointer}.x4-toolbar-default .x4-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-nlg .x4-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x4-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x4-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x4-toolbar-scroll-left-hover{background-position:0 0}.x4-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x4-toolbar-scroll-right-hover{background-position:-14px 0}.x4-toolbar .x4-box-menu-after{margin:0 2px 0 2px}.x4-toolbar-vertical{padding:2px 2px 0 2px}.x4-toolbar-vertical .x4-toolbar-item{margin:0 0 2px 0}.x4-toolbar-vertical .x4-toolbar-text{margin:4px 0 6px 0}.x4-toolbar-vertical .x4-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x4-toolbar-vertical .x4-box-menu-after,.x4-toolbar-vertical .x4-rtl.x4-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x4-header-draggable .x4-header-body,.x4-header-ghost{cursor:move}.x4-header-text{white-space:nowrap}.x4-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x4-panel-default{border-color:#99bce8;padding:0}.x4-panel-header-default{font-size:11px;border:1px solid #99bce8}.x4-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x4-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x4-panel-header-default-vertical{padding:5px 4px 5px 4px}.x4-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x4-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x4-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x4-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x4-nlg .x4-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x4-nlg .x4-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x4-nlg .x4-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x4-panel .x4-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x4-panel .x4-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x4-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x4-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x4-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"}.x4-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"}.x4-panel-header-default-vertical .x4-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-panel-header-default-vertical .x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x4-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x4-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x4-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default .x4-panel-header-icon{width:16px;height:16px;background-position:center center}.x4-panel-header-default .x4-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-panel-header-default .x4-panel-header-glyph{color:#678ebf}.x4-panel-header-default-horizontal .x4-panel-header-icon-before-title{margin:0 2px 0 0}.x4-panel-header-default-horizontal .x4-panel-header-icon-after-title{margin:0 0 0 2px}.x4-panel-header-default-vertical .x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-vertical .x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-panel-header-default-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-panel-header-default-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-panel-default-resizable .x4-panel-handle{filter:alpha(opacity=0);opacity:0}.x4-panel-default-framed{border-color:#99bce8;padding:4px}.x4-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x4-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x4-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x4-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x4-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x4-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x4-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x4-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x4-panel-default-framed-mc{background-color:#dfe9f6}.x4-nbr .x4-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x4-panel-default-framed-tl{background-position:0 -8px}.x4-panel-default-framed-tr{background-position:right -12px}.x4-panel-default-framed-bl{background-position:0 -16px}.x4-panel-default-framed-br{background-position:right -20px}.x4-panel-default-framed-ml{background-position:0 top}.x4-panel-default-framed-mr{background-position:right top}.x4-panel-default-framed-tc{background-position:0 0}.x4-panel-default-framed-bc{background-position:0 -4px}.x4-panel-default-framed-tr,.x4-panel-default-framed-br,.x4-panel-default-framed-mr{padding-right:4px}.x4-panel-default-framed-tl,.x4-panel-default-framed-bl,.x4-panel-default-framed-ml{padding-left:4px}.x4-panel-default-framed-tc{height:4px}.x4-panel-default-framed-bc{height:4px}.x4-panel-default-framed-tl,.x4-panel-default-framed-bl,.x4-panel-default-framed-tr,.x4-panel-default-framed-br,.x4-panel-default-framed-tc,.x4-panel-default-framed-bc,.x4-panel-default-framed-ml,.x4-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x4-panel-default-framed-ml,.x4-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x4-panel-default-framed-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-panel-default-framed-tl,.x4-strict .x4-ie7 .x4-panel-default-framed-bl{position:relative;right:0}.x4-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x4-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x4-nbr .x4-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x4-panel-header-default-framed-top-tl{background-position:0 -8px}.x4-panel-header-default-framed-top-tr{background-position:right -12px}.x4-panel-header-default-framed-top-bl{background-position:0 -16px}.x4-panel-header-default-framed-top-br{background-position:right -20px}.x4-panel-header-default-framed-top-ml{background-position:0 top}.x4-panel-header-default-framed-top-mr{background-position:right top}.x4-panel-header-default-framed-top-tc{background-position:0 0}.x4-panel-header-default-framed-top-bc{background-position:0 -4px}.x4-panel-header-default-framed-top-tr,.x4-panel-header-default-framed-top-br,.x4-panel-header-default-framed-top-mr{padding-right:4px}.x4-panel-header-default-framed-top-tl,.x4-panel-header-default-framed-top-bl,.x4-panel-header-default-framed-top-ml{padding-left:4px}.x4-panel-header-default-framed-top-tc{height:4px}.x4-panel-header-default-framed-top-bc{height:0}.x4-panel-header-default-framed-top-tl,.x4-panel-header-default-framed-top-bl,.x4-panel-header-default-framed-top-tr,.x4-panel-header-default-framed-top-br,.x4-panel-header-default-framed-top-tc,.x4-panel-header-default-framed-top-bc,.x4-panel-header-default-framed-top-ml,.x4-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x4-panel-header-default-framed-top-ml,.x4-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x4-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x4-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x4-nbr .x4-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x4-panel-header-default-framed-right-tl{background-position:0 0}.x4-panel-header-default-framed-right-tr{background-position:0 -4px}.x4-panel-header-default-framed-right-bl{background-position:0 -8px}.x4-panel-header-default-framed-right-br{background-position:0 -12px}.x4-panel-header-default-framed-right-ml{background-position:-4px 0}.x4-panel-header-default-framed-right-mr{background-position:right 0}.x4-panel-header-default-framed-right-tc{background-position:right 0}.x4-panel-header-default-framed-right-bc{background-position:right -4px}.x4-panel-header-default-framed-right-tr,.x4-panel-header-default-framed-right-br,.x4-panel-header-default-framed-right-mr{padding-right:4px}.x4-panel-header-default-framed-right-tl,.x4-panel-header-default-framed-right-bl,.x4-panel-header-default-framed-right-ml{padding-left:0}.x4-panel-header-default-framed-right-tc{height:4px}.x4-panel-header-default-framed-right-bc{height:4px}.x4-panel-header-default-framed-right-tl,.x4-panel-header-default-framed-right-bl,.x4-panel-header-default-framed-right-tr,.x4-panel-header-default-framed-right-br,.x4-panel-header-default-framed-right-tc,.x4-panel-header-default-framed-right-bc,.x4-panel-header-default-framed-right-ml,.x4-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x4-panel-header-default-framed-right-tc,.x4-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x4-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x4-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x4-nbr .x4-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x4-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x4-panel-header-default-framed-bottom-tr{background-position:right -12px}.x4-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x4-panel-header-default-framed-bottom-br{background-position:right -20px}.x4-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x4-panel-header-default-framed-bottom-mr{background-position:right bottom}.x4-panel-header-default-framed-bottom-tc{background-position:0 0}.x4-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x4-panel-header-default-framed-bottom-tr,.x4-panel-header-default-framed-bottom-br,.x4-panel-header-default-framed-bottom-mr{padding-right:4px}.x4-panel-header-default-framed-bottom-tl,.x4-panel-header-default-framed-bottom-bl,.x4-panel-header-default-framed-bottom-ml{padding-left:4px}.x4-panel-header-default-framed-bottom-tc{height:0}.x4-panel-header-default-framed-bottom-bc{height:4px}.x4-panel-header-default-framed-bottom-tl,.x4-panel-header-default-framed-bottom-bl,.x4-panel-header-default-framed-bottom-tr,.x4-panel-header-default-framed-bottom-br,.x4-panel-header-default-framed-bottom-tc,.x4-panel-header-default-framed-bottom-bc,.x4-panel-header-default-framed-bottom-ml,.x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x4-panel-header-default-framed-bottom-ml,.x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x4-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x4-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x4-nbr .x4-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x4-panel-header-default-framed-left-tl{background-position:0 0}.x4-panel-header-default-framed-left-tr{background-position:0 -4px}.x4-panel-header-default-framed-left-bl{background-position:0 -8px}.x4-panel-header-default-framed-left-br{background-position:0 -12px}.x4-panel-header-default-framed-left-ml{background-position:-4px 0}.x4-panel-header-default-framed-left-mr{background-position:right 0}.x4-panel-header-default-framed-left-tc{background-position:left 0}.x4-panel-header-default-framed-left-bc{background-position:left -4px}.x4-panel-header-default-framed-left-tr,.x4-panel-header-default-framed-left-br,.x4-panel-header-default-framed-left-mr{padding-right:0}.x4-panel-header-default-framed-left-tl,.x4-panel-header-default-framed-left-bl,.x4-panel-header-default-framed-left-ml{padding-left:4px}.x4-panel-header-default-framed-left-tc{height:4px}.x4-panel-header-default-framed-left-bc{height:4px}.x4-panel-header-default-framed-left-tl,.x4-panel-header-default-framed-left-bl,.x4-panel-header-default-framed-left-tr,.x4-panel-header-default-framed-left-br,.x4-panel-header-default-framed-left-tc,.x4-panel-header-default-framed-left-bc,.x4-panel-header-default-framed-left-ml,.x4-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x4-panel-header-default-framed-left-tc,.x4-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x4-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x4-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x4-nbr .x4-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x4-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x4-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x4-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x4-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x4-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x4-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x4-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-top-tr,.x4-panel-header-default-framed-collapsed-top-br,.x4-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-top-tl,.x4-panel-header-default-framed-collapsed-top-bl,.x4-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-top-tc{height:4px}.x4-panel-header-default-framed-collapsed-top-bc{height:4px}.x4-panel-header-default-framed-collapsed-top-tl,.x4-panel-header-default-framed-collapsed-top-bl,.x4-panel-header-default-framed-collapsed-top-tr,.x4-panel-header-default-framed-collapsed-top-br,.x4-panel-header-default-framed-collapsed-top-tc,.x4-panel-header-default-framed-collapsed-top-bc,.x4-panel-header-default-framed-collapsed-top-ml,.x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x4-panel-header-default-framed-collapsed-top-ml,.x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x4-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x4-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x4-nbr .x4-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x4-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x4-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x4-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x4-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x4-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x4-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x4-panel-header-default-framed-collapsed-right-tr,.x4-panel-header-default-framed-collapsed-right-br,.x4-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-right-tl,.x4-panel-header-default-framed-collapsed-right-bl,.x4-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-right-tc{height:4px}.x4-panel-header-default-framed-collapsed-right-bc{height:4px}.x4-panel-header-default-framed-collapsed-right-tl,.x4-panel-header-default-framed-collapsed-right-bl,.x4-panel-header-default-framed-collapsed-right-tr,.x4-panel-header-default-framed-collapsed-right-br,.x4-panel-header-default-framed-collapsed-right-tc,.x4-panel-header-default-framed-collapsed-right-bc,.x4-panel-header-default-framed-collapsed-right-ml,.x4-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x4-panel-header-default-framed-collapsed-right-tc,.x4-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x4-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x4-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x4-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x4-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x4-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x4-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x4-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x4-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x4-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-bottom-tr,.x4-panel-header-default-framed-collapsed-bottom-br,.x4-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-bottom-tl,.x4-panel-header-default-framed-collapsed-bottom-bl,.x4-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x4-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x4-panel-header-default-framed-collapsed-bottom-tl,.x4-panel-header-default-framed-collapsed-bottom-bl,.x4-panel-header-default-framed-collapsed-bottom-tr,.x4-panel-header-default-framed-collapsed-bottom-br,.x4-panel-header-default-framed-collapsed-bottom-tc,.x4-panel-header-default-framed-collapsed-bottom-bc,.x4-panel-header-default-framed-collapsed-bottom-ml,.x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x4-panel-header-default-framed-collapsed-bottom-ml,.x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x4-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x4-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x4-nlg .x4-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x4-nbr .x4-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x4-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x4-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x4-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x4-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x4-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x4-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x4-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x4-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x4-panel-header-default-framed-collapsed-left-tr,.x4-panel-header-default-framed-collapsed-left-br,.x4-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x4-panel-header-default-framed-collapsed-left-tl,.x4-panel-header-default-framed-collapsed-left-bl,.x4-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x4-panel-header-default-framed-collapsed-left-tc{height:4px}.x4-panel-header-default-framed-collapsed-left-bc{height:4px}.x4-panel-header-default-framed-collapsed-left-tl,.x4-panel-header-default-framed-collapsed-left-bl,.x4-panel-header-default-framed-collapsed-left-tr,.x4-panel-header-default-framed-collapsed-left-br,.x4-panel-header-default-framed-collapsed-left-tc,.x4-panel-header-default-framed-collapsed-left-bc,.x4-panel-header-default-framed-collapsed-left-ml,.x4-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x4-panel-header-default-framed-collapsed-left-tc,.x4-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x4-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x4-panel .x4-panel-header-default-framed-top{border-bottom-width:1px!important}.x4-panel .x4-panel-header-default-framed-right{border-left-width:1px!important}.x4-panel .x4-panel-header-default-framed-bottom{border-top-width:1px!important}.x4-panel .x4-panel-header-default-framed-left{border-right-width:1px!important}.x4-nbr .x4-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x4-nbr .x4-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x4-panel-header-default-framed-vertical .x4-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-panel-header-default-framed-vertical .x4-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x4-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x4-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x4-panel-header-default-framed .x4-panel-header-icon{width:16px;height:16px;background-position:center center}.x4-panel-header-default-framed .x4-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-panel-header-default-framed .x4-panel-header-glyph{color:#678ebf}.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-before-title{margin:0 2px 0 0}.x4-panel-header-default-framed-horizontal .x4-panel-header-icon-after-title{margin:0 0 0 2px}.x4-panel-header-default-framed-vertical .x4-panel-header-icon-before-title{margin:0 0 2px 0}.x4-panel-header-default-framed-vertical .x4-panel-header-icon-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-panel-header-default-framed-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-panel-header-default-framed-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-panel-header-default-framed-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-panel-default-framed-resizable .x4-panel-handle{filter:alpha(opacity=0);opacity:0}.x4-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x4-content-box .x4-tip-anchor{height:0;width:0}.x4-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x4-tip-default-mc{background-color:#e9f2ff}.x4-nbr .x4-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x4-tip-default-tl{background-position:0 -6px}.x4-tip-default-tr{background-position:right -9px}.x4-tip-default-bl{background-position:0 -12px}.x4-tip-default-br{background-position:right -15px}.x4-tip-default-ml{background-position:0 top}.x4-tip-default-mr{background-position:right top}.x4-tip-default-tc{background-position:0 0}.x4-tip-default-bc{background-position:0 -3px}.x4-tip-default-tr,.x4-tip-default-br,.x4-tip-default-mr{padding-right:3px}.x4-tip-default-tl,.x4-tip-default-bl,.x4-tip-default-ml{padding-left:3px}.x4-tip-default-tc{height:3px}.x4-tip-default-bc{height:3px}.x4-tip-default-tl,.x4-tip-default-bl,.x4-tip-default-tr,.x4-tip-default-br,.x4-tip-default-tc,.x4-tip-default-bc,.x4-tip-default-ml,.x4-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x4-tip-default-ml,.x4-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x4-tip-default-mc{padding:0}.x4-strict .x4-ie7 .x4-tip-default-tl,.x4-strict .x4-ie7 .x4-tip-default-bl{position:relative;right:0}.x4-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x4-tip-default{border-color:#8eaace}.x4-tip-default .x4-tool-img{background-color:#e9f2ff}.x4-tip-header-default .x4-tool-after-title{margin:0 0 0 6px}.x4-tip-header-default .x4-tool-before-title{margin:0 6px 0 0}.x4-tip-header-body-default{padding:3px 3px 0 3px}.x4-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x4-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x4-tip-body-default a{color:#2a2a2a}.x4-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x4-tip-form-invalid-mc{background-color:white}.x4-nbr .x4-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x4-tip-form-invalid-tl{background-position:0 -10px}.x4-tip-form-invalid-tr{background-position:right -15px}.x4-tip-form-invalid-bl{background-position:0 -20px}.x4-tip-form-invalid-br{background-position:right -25px}.x4-tip-form-invalid-ml{background-position:0 top}.x4-tip-form-invalid-mr{background-position:right top}.x4-tip-form-invalid-tc{background-position:0 0}.x4-tip-form-invalid-bc{background-position:0 -5px}.x4-tip-form-invalid-tr,.x4-tip-form-invalid-br,.x4-tip-form-invalid-mr{padding-right:5px}.x4-tip-form-invalid-tl,.x4-tip-form-invalid-bl,.x4-tip-form-invalid-ml{padding-left:5px}.x4-tip-form-invalid-tc{height:5px}.x4-tip-form-invalid-bc{height:5px}.x4-tip-form-invalid-tl,.x4-tip-form-invalid-bl,.x4-tip-form-invalid-tr,.x4-tip-form-invalid-br,.x4-tip-form-invalid-tc,.x4-tip-form-invalid-bc,.x4-tip-form-invalid-ml,.x4-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x4-tip-form-invalid-ml,.x4-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x4-tip-form-invalid-mc{padding:0}.x4-strict .x4-ie7 .x4-tip-form-invalid-tl,.x4-strict .x4-ie7 .x4-tip-form-invalid-bl{position:relative;right:0}.x4-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x4-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x4-tip-form-invalid .x4-tool-img{background-color:white}.x4-tip-header-form-invalid .x4-tool-after-title{margin:0 0 0 6px}.x4-tip-header-form-invalid .x4-tool-before-title{margin:0 6px 0 0}.x4-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x4-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x4-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x4-tip-body-form-invalid a{color:#2a2a2a}.x4-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x4-tip-body-form-invalid li{margin-bottom:4px}.x4-tip-body-form-invalid li.last{margin-bottom:0}.x4-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x4-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x4-btn-group-header-default .x4-tool-img{background-color:#c2d8f0}.x4-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x4-btn-group-body-default{padding:0 1px}.x4-btn-group-body-default .x4-table-layout{border-spacing:0}.x4-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x4-btn-group-default-framed-mc{background-color:#d0def0}.x4-nbr .x4-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x4-btn-group-default-framed-tl{background-position:0 -4px}.x4-btn-group-default-framed-tr{background-position:right -6px}.x4-btn-group-default-framed-bl{background-position:0 -8px}.x4-btn-group-default-framed-br{background-position:right -10px}.x4-btn-group-default-framed-ml{background-position:0 top}.x4-btn-group-default-framed-mr{background-position:right top}.x4-btn-group-default-framed-tc{background-position:0 0}.x4-btn-group-default-framed-bc{background-position:0 -2px}.x4-btn-group-default-framed-tr,.x4-btn-group-default-framed-br,.x4-btn-group-default-framed-mr{padding-right:2px}.x4-btn-group-default-framed-tl,.x4-btn-group-default-framed-bl,.x4-btn-group-default-framed-ml{padding-left:2px}.x4-btn-group-default-framed-tc{height:2px}.x4-btn-group-default-framed-bc{height:2px}.x4-btn-group-default-framed-tl,.x4-btn-group-default-framed-bl,.x4-btn-group-default-framed-tr,.x4-btn-group-default-framed-br,.x4-btn-group-default-framed-tc,.x4-btn-group-default-framed-bc,.x4-btn-group-default-framed-ml,.x4-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x4-btn-group-default-framed-ml,.x4-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x4-btn-group-default-framed-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl{position:relative;right:0}.x4-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x4-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x4-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x4-nbr .x4-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x4-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x4-btn-group-default-framed-notitle-tr{background-position:right -6px}.x4-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x4-btn-group-default-framed-notitle-br{background-position:right -10px}.x4-btn-group-default-framed-notitle-ml{background-position:0 top}.x4-btn-group-default-framed-notitle-mr{background-position:right top}.x4-btn-group-default-framed-notitle-tc{background-position:0 0}.x4-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x4-btn-group-default-framed-notitle-tr,.x4-btn-group-default-framed-notitle-br,.x4-btn-group-default-framed-notitle-mr{padding-right:2px}.x4-btn-group-default-framed-notitle-tl,.x4-btn-group-default-framed-notitle-bl,.x4-btn-group-default-framed-notitle-ml{padding-left:2px}.x4-btn-group-default-framed-notitle-tc{height:2px}.x4-btn-group-default-framed-notitle-bc{height:2px}.x4-btn-group-default-framed-notitle-tl,.x4-btn-group-default-framed-notitle-bl,.x4-btn-group-default-framed-notitle-tr,.x4-btn-group-default-framed-notitle-br,.x4-btn-group-default-framed-notitle-tc,.x4-btn-group-default-framed-notitle-bc,.x4-btn-group-default-framed-notitle-ml,.x4-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x4-btn-group-default-framed-notitle-ml,.x4-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x4-btn-group-default-framed-notitle-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-tl,.x4-strict .x4-ie7 .x4-btn-group-default-framed-notitle-bl{position:relative;right:0}.x4-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x4-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x4-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x4-btn-group-header-default-framed .x4-tool-img{background-color:#c2d8f0}.x4-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x4-btn-group-body-default-framed{padding:0 1px 0 1px}.x4-btn-group-body-default-framed .x4-table-layout{border-spacing:0}.x4-window-ghost{filter:alpha(opacity=65);opacity:.65}.x4-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-default-mc{background-color:#ced9e7}.x4-nbr .x4-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x4-window-default-tl{background-position:0 -10px}.x4-window-default-tr{background-position:right -15px}.x4-window-default-bl{background-position:0 -20px}.x4-window-default-br{background-position:right -25px}.x4-window-default-ml{background-position:0 top}.x4-window-default-mr{background-position:right top}.x4-window-default-tc{background-position:0 0}.x4-window-default-bc{background-position:0 -5px}.x4-window-default-tr,.x4-window-default-br,.x4-window-default-mr{padding-right:5px}.x4-window-default-tl,.x4-window-default-bl,.x4-window-default-ml{padding-left:5px}.x4-window-default-tc{height:5px}.x4-window-default-bc{height:5px}.x4-window-default-tl,.x4-window-default-bl,.x4-window-default-tr,.x4-window-default-br,.x4-window-default-tc,.x4-window-default-bc,.x4-window-default-ml,.x4-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x4-window-default-ml,.x4-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x4-window-default-mc{padding:0}.x4-strict .x4-ie7 .x4-window-default-tl,.x4-strict .x4-ie7 .x4-window-default-bl{position:relative;right:0}.x4-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x4-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x4-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x4-window-header-default .x4-tool-img{background-color:#ced9e7}.x4-window-header-default-vertical .x4-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-window-header-default-vertical .x4-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x4-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x4-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x4-window-header-default-top-tl{background-position:0 -10px}.x4-window-header-default-top-tr{background-position:right -15px}.x4-window-header-default-top-bl{background-position:0 -20px}.x4-window-header-default-top-br{background-position:right -25px}.x4-window-header-default-top-ml{background-position:0 top}.x4-window-header-default-top-mr{background-position:right top}.x4-window-header-default-top-tc{background-position:0 0}.x4-window-header-default-top-bc{background-position:0 -5px}.x4-window-header-default-top-tr,.x4-window-header-default-top-br,.x4-window-header-default-top-mr{padding-right:5px}.x4-window-header-default-top-tl,.x4-window-header-default-top-bl,.x4-window-header-default-top-ml{padding-left:5px}.x4-window-header-default-top-tc{height:5px}.x4-window-header-default-top-bc{height:0}.x4-window-header-default-top-tl,.x4-window-header-default-top-bl,.x4-window-header-default-top-tr,.x4-window-header-default-top-br,.x4-window-header-default-top-tc,.x4-window-header-default-top-bc,.x4-window-header-default-top-ml,.x4-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x4-window-header-default-top-ml,.x4-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x4-window-header-default-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-top-bl{position:relative;right:0}.x4-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x4-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x4-window-header-default-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x4-window-header-default-right-tl{background-position:0 -10px}.x4-window-header-default-right-tr{background-position:right -15px}.x4-window-header-default-right-bl{background-position:0 -20px}.x4-window-header-default-right-br{background-position:right -25px}.x4-window-header-default-right-ml{background-position:0 top}.x4-window-header-default-right-mr{background-position:right top}.x4-window-header-default-right-tc{background-position:0 0}.x4-window-header-default-right-bc{background-position:0 -5px}.x4-window-header-default-right-tr,.x4-window-header-default-right-br,.x4-window-header-default-right-mr{padding-right:5px}.x4-window-header-default-right-tl,.x4-window-header-default-right-bl,.x4-window-header-default-right-ml{padding-left:0}.x4-window-header-default-right-tc{height:5px}.x4-window-header-default-right-bc{height:5px}.x4-window-header-default-right-tl,.x4-window-header-default-right-bl,.x4-window-header-default-right-tr,.x4-window-header-default-right-br,.x4-window-header-default-right-tc,.x4-window-header-default-right-bc,.x4-window-header-default-right-ml,.x4-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x4-window-header-default-right-ml,.x4-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x4-window-header-default-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-right-bl{position:relative;right:0}.x4-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x4-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x4-window-header-default-bottom-tl{background-position:0 -10px}.x4-window-header-default-bottom-tr{background-position:right -15px}.x4-window-header-default-bottom-bl{background-position:0 -20px}.x4-window-header-default-bottom-br{background-position:right -25px}.x4-window-header-default-bottom-ml{background-position:0 top}.x4-window-header-default-bottom-mr{background-position:right top}.x4-window-header-default-bottom-tc{background-position:0 0}.x4-window-header-default-bottom-bc{background-position:0 -5px}.x4-window-header-default-bottom-tr,.x4-window-header-default-bottom-br,.x4-window-header-default-bottom-mr{padding-right:5px}.x4-window-header-default-bottom-tl,.x4-window-header-default-bottom-bl,.x4-window-header-default-bottom-ml{padding-left:5px}.x4-window-header-default-bottom-tc{height:0}.x4-window-header-default-bottom-bc{height:5px}.x4-window-header-default-bottom-tl,.x4-window-header-default-bottom-bl,.x4-window-header-default-bottom-tr,.x4-window-header-default-bottom-br,.x4-window-header-default-bottom-tc,.x4-window-header-default-bottom-bc,.x4-window-header-default-bottom-ml,.x4-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x4-window-header-default-bottom-ml,.x4-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x4-window-header-default-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl{position:relative;right:0}.x4-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x4-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x4-window-header-default-left-tl{background-position:0 -10px}.x4-window-header-default-left-tr{background-position:right -15px}.x4-window-header-default-left-bl{background-position:0 -20px}.x4-window-header-default-left-br{background-position:right -25px}.x4-window-header-default-left-ml{background-position:0 top}.x4-window-header-default-left-mr{background-position:right top}.x4-window-header-default-left-tc{background-position:0 0}.x4-window-header-default-left-bc{background-position:0 -5px}.x4-window-header-default-left-tr,.x4-window-header-default-left-br,.x4-window-header-default-left-mr{padding-right:0}.x4-window-header-default-left-tl,.x4-window-header-default-left-bl,.x4-window-header-default-left-ml{padding-left:5px}.x4-window-header-default-left-tc{height:5px}.x4-window-header-default-left-bc{height:5px}.x4-window-header-default-left-tl,.x4-window-header-default-left-bl,.x4-window-header-default-left-tr,.x4-window-header-default-left-br,.x4-window-header-default-left-tc,.x4-window-header-default-left-bc,.x4-window-header-default-left-ml,.x4-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x4-window-header-default-left-ml,.x4-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x4-window-header-default-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-left-bl{position:relative;right:0}.x4-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x4-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x4-window-header-default-collapsed-top-tl{background-position:0 -10px}.x4-window-header-default-collapsed-top-tr{background-position:right -15px}.x4-window-header-default-collapsed-top-bl{background-position:0 -20px}.x4-window-header-default-collapsed-top-br{background-position:right -25px}.x4-window-header-default-collapsed-top-ml{background-position:0 top}.x4-window-header-default-collapsed-top-mr{background-position:right top}.x4-window-header-default-collapsed-top-tc{background-position:0 0}.x4-window-header-default-collapsed-top-bc{background-position:0 -5px}.x4-window-header-default-collapsed-top-tr,.x4-window-header-default-collapsed-top-br,.x4-window-header-default-collapsed-top-mr{padding-right:5px}.x4-window-header-default-collapsed-top-tl,.x4-window-header-default-collapsed-top-bl,.x4-window-header-default-collapsed-top-ml{padding-left:5px}.x4-window-header-default-collapsed-top-tc{height:5px}.x4-window-header-default-collapsed-top-bc{height:5px}.x4-window-header-default-collapsed-top-tl,.x4-window-header-default-collapsed-top-bl,.x4-window-header-default-collapsed-top-tr,.x4-window-header-default-collapsed-top-br,.x4-window-header-default-collapsed-top-tc,.x4-window-header-default-collapsed-top-bc,.x4-window-header-default-collapsed-top-ml,.x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x4-window-header-default-collapsed-top-ml,.x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl{position:relative;right:0}.x4-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x4-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x4-window-header-default-collapsed-right-tl{background-position:0 -10px}.x4-window-header-default-collapsed-right-tr{background-position:right -15px}.x4-window-header-default-collapsed-right-bl{background-position:0 -20px}.x4-window-header-default-collapsed-right-br{background-position:right -25px}.x4-window-header-default-collapsed-right-ml{background-position:0 top}.x4-window-header-default-collapsed-right-mr{background-position:right top}.x4-window-header-default-collapsed-right-tc{background-position:0 0}.x4-window-header-default-collapsed-right-bc{background-position:0 -5px}.x4-window-header-default-collapsed-right-tr,.x4-window-header-default-collapsed-right-br,.x4-window-header-default-collapsed-right-mr{padding-right:5px}.x4-window-header-default-collapsed-right-tl,.x4-window-header-default-collapsed-right-bl,.x4-window-header-default-collapsed-right-ml{padding-left:5px}.x4-window-header-default-collapsed-right-tc{height:5px}.x4-window-header-default-collapsed-right-bc{height:5px}.x4-window-header-default-collapsed-right-tl,.x4-window-header-default-collapsed-right-bl,.x4-window-header-default-collapsed-right-tr,.x4-window-header-default-collapsed-right-br,.x4-window-header-default-collapsed-right-tc,.x4-window-header-default-collapsed-right-bc,.x4-window-header-default-collapsed-right-ml,.x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x4-window-header-default-collapsed-right-ml,.x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl{position:relative;right:0}.x4-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x4-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x4-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x4-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x4-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x4-window-header-default-collapsed-bottom-br{background-position:right -25px}.x4-window-header-default-collapsed-bottom-ml{background-position:0 top}.x4-window-header-default-collapsed-bottom-mr{background-position:right top}.x4-window-header-default-collapsed-bottom-tc{background-position:0 0}.x4-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x4-window-header-default-collapsed-bottom-tr,.x4-window-header-default-collapsed-bottom-br,.x4-window-header-default-collapsed-bottom-mr{padding-right:5px}.x4-window-header-default-collapsed-bottom-tl,.x4-window-header-default-collapsed-bottom-bl,.x4-window-header-default-collapsed-bottom-ml{padding-left:5px}.x4-window-header-default-collapsed-bottom-tc{height:5px}.x4-window-header-default-collapsed-bottom-bc{height:5px}.x4-window-header-default-collapsed-bottom-tl,.x4-window-header-default-collapsed-bottom-bl,.x4-window-header-default-collapsed-bottom-tr,.x4-window-header-default-collapsed-bottom-br,.x4-window-header-default-collapsed-bottom-tc,.x4-window-header-default-collapsed-bottom-bc,.x4-window-header-default-collapsed-bottom-ml,.x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x4-window-header-default-collapsed-bottom-ml,.x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x4-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x4-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x4-window-header-default-collapsed-left-tl{background-position:0 -10px}.x4-window-header-default-collapsed-left-tr{background-position:right -15px}.x4-window-header-default-collapsed-left-bl{background-position:0 -20px}.x4-window-header-default-collapsed-left-br{background-position:right -25px}.x4-window-header-default-collapsed-left-ml{background-position:0 top}.x4-window-header-default-collapsed-left-mr{background-position:right top}.x4-window-header-default-collapsed-left-tc{background-position:0 0}.x4-window-header-default-collapsed-left-bc{background-position:0 -5px}.x4-window-header-default-collapsed-left-tr,.x4-window-header-default-collapsed-left-br,.x4-window-header-default-collapsed-left-mr{padding-right:5px}.x4-window-header-default-collapsed-left-tl,.x4-window-header-default-collapsed-left-bl,.x4-window-header-default-collapsed-left-ml{padding-left:5px}.x4-window-header-default-collapsed-left-tc{height:5px}.x4-window-header-default-collapsed-left-bc{height:5px}.x4-window-header-default-collapsed-left-tl,.x4-window-header-default-collapsed-left-bl,.x4-window-header-default-collapsed-left-tr,.x4-window-header-default-collapsed-left-br,.x4-window-header-default-collapsed-left-tc,.x4-window-header-default-collapsed-left-bc,.x4-window-header-default-collapsed-left-ml,.x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x4-window-header-default-collapsed-left-ml,.x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x4-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl{position:relative;right:0}.x4-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x4-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x4-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default .x4-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x4-window-header-default .x4-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x4-ie8m .x4-window-header-default .x4-window-header-glyph{color:#698fb9}.x4-window-header-default-horizontal .x4-window-header-icon-before-title{margin:0 2px 0 0}.x4-window-header-default-horizontal .x4-window-header-icon-after-title{margin:0 0 0 2px}.x4-window-header-default-vertical .x4-window-header-icon-before-title{margin:0 0 2px 0}.x4-window-header-default-vertical .x4-window-header-icon-after-title{margin:2px 0 0 0}.x4-window-header-default-horizontal .x4-tool-after-title{margin:0 0 0 2px}.x4-window-header-default-horizontal .x4-tool-before-title{margin:0 2px 0 0}.x4-window-header-default-vertical .x4-tool-after-title{margin:2px 0 0 0}.x4-window-header-default-vertical .x4-tool-before-title{margin:0 0 2px 0}.x4-window-default-collapsed .x4-window-header{border-width:1px!important}.x4-nbr .x4-window-default-collapsed .x4-window-header{border-width:0!important}.x4-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x4-lbl-top-err-icon{margin-bottom:3px}.x4-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x4-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-toolbar-item .x4-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-autocontainer-form-item,.x4-anchor-form-item,.x4-vbox-form-item,.x4-table-form-item{margin-bottom:5px}.x4-ie6 .x4-form-form-item td{border-top-width:0}.x4-ie6 td.x4-form-item-pad{height:5px}.x4-form-field{color:black}.x4-form-item,.x4-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x4-form-type-text textarea.x4-form-invalid-field,.x4-form-type-text input.x4-form-invalid-field,.x4-form-type-password textarea.x4-form-invalid-field,.x4-form-type-password input.x4-form-invalid-field,.x4-form-type-number textarea.x4-form-invalid-field,.x4-form-type-number input.x4-form-invalid-field,.x4-form-type-email textarea.x4-form-invalid-field,.x4-form-type-email input.x4-form-invalid-field,.x4-form-type-search textarea.x4-form-invalid-field,.x4-form-type-search input.x4-form-invalid-field,.x4-form-type-tel textarea.x4-form-invalid-field,.x4-form-type-tel input.x4-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x4-item-disabled .x4-form-item-label,.x4-item-disabled .x4-form-field,.x4-item-disabled .x4-form-display-field,.x4-item-disabled .x4-form-cb-label,.x4-item-disabled .x4-form-trigger{filter:alpha(opacity=30);opacity:.3}.x4-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x4-field-toolbar .x4-form-text{height:20px;line-height:15px}.x4-content-box .x4-form-text{height:17px}.x4-content-box .x4-field-toolbar .x4-form-text{height:15px}.x4-form-focus{border-color:#7eadd9}.x4-form-empty-field,textarea.x4-form-empty-field{color:gray}.x4-quirks .x4-ie .x4-form-text,.x4-ie7m .x4-form-text{margin-top:-1px;margin-bottom:-1px}.x4-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x4-form-display-field-body{height:22px}.x4-toolbar-item .x4-form-display-field-body{height:20px}.x4-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x4-toolbar-item .x4-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x4-message-box .x4-window-body{background-color:#ced9e7;border-width:0}.x4-message-box-info,.x4-message-box-warning,.x4-message-box-question,.x4-message-box-error{background-position:top left;background-repeat:no-repeat}.x4-message-box-info{background-image:url(images/shared/icon-info.gif)}.x4-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x4-message-box-question{background-image:url(images/shared/icon-question.gif)}.x4-message-box-error{background-image:url(images/shared/icon-error.gif)}.x4-form-cb-wrap{height:22px}.x4-toolbar-item .x4-form-cb-wrap{height:20px}.x4-form-cb{margin-top:5px}.x4-toolbar-item .x4-form-cb{margin-top:4px}.x4-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x4-form-cb-checked .x4-form-checkbox{background-position:0 -13px}.x4-form-checkbox-focus{background-position:-13px 0}.x4-form-cb-checked .x4-form-checkbox-focus{background-position:-13px -13px}.x4-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x4-toolbar-item .x4-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x4-form-cb-label-before{margin-right:4px}.x4-form-cb-label-after{margin-left:4px}.x4-form-checkboxgroup-body{padding:0 4px}.x4-form-invalid .x4-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x4-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x4-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x4-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x4-ie8m .x4-fieldset,.x4-quirks .x4-ie .x4-fieldset{padding-top:0}.x4-ie8m .x4-fieldset .x4-fieldset-body,.x4-quirks .x4-ie .x4-fieldset .x4-fieldset-body{padding-top:0}.x4-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x4-fieldset-header{padding:0 3px 1px}.x4-fieldset-header .x4-tool{margin-top:1px;padding:0}.x4-fieldset-header .x4-form-cb-wrap{padding:1px 0}.x4-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x4-fieldset-header-text-collapsible{cursor:pointer}.x4-fieldset-with-title .x4-fieldset-header-checkbox,.x4-fieldset-with-title .x4-tool{margin:1px 3px 0 0}.x4-webkit .x4-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x4-opera .x4-fieldset-with-legend{margin-top:-1px}.x4-opera.x4-mac .x4-fieldset-header-text{padding:2px 0 0}.x4-strict .x4-ie8 .x4-fieldset-header{margin-bottom:-1px}.x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox{position:relative;top:-1px}.x4-quirks .x4-ie .x4-fieldset-header,.x4-ie8m .x4-fieldset-header{padding-left:1px;padding-right:1px}.x4-fieldset-collapsed .x4-fieldset-body{display:none}.x4-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x4-ie6 .x4-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x4-ie .x4-fieldset-bwrap{zoom:1}.x4-fieldset .x4-tool-toggle{background-position:0 -60px}.x4-fieldset .x4-tool-over .x4-tool-toggle{background-position:-15px -60px}.x4-fieldset-collapsed .x4-tool-toggle{background-position:0 -75px}.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle{background-position:-15px -75px}.x4-ie .x4-fieldset-noborder legend{position:relative;margin-bottom:23px}.x4-ie .x4-fieldset-noborder legend span{position:absolute;left:16px}.x4-fieldset{overflow:hidden}.x4-fieldset-bwrap{overflow:hidden;zoom:1}.x4-fieldset-body{overflow:hidden}.x4-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x4-form-cb-checked .x4-form-radio{background-position:0 -13px}.x4-form-radio-focus{background-position:-13px 0}.x4-form-cb-checked .x4-form-radio-focus{background-position:-13px -13px}.x4-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x4-trigger-cell{background-color:white;width:17px}.x4-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger-over{background-position:-68px 0}.x4-form-trigger-click,.x4-form-trigger-wrap-focus .x4-form-trigger-click{background-position:-34px 0}.x4-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x4-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x4-quirks .prefixie6 .x4-form-trigger-input-cell{height:22px}.x4-quirks .prefixie6 .x4-field-toolbar .x4-form-trigger-input-cell{height:20px}div.x4-form-spinner-up,div.x4-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x4-form-spinner-down{background-position:0 -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -11px}.x4-toolbar-item div.x4-form-spinner-up,.x4-toolbar-item div.x4-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x4-toolbar-item .x4-form-spinner-down{background-position:0 -10px}.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -10px}.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -10px}.x4-toolbar-item .x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -10px}.x4-toolbar-item .x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -10px}.x4-tbar-page-number{width:30px}.x4-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x4-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x4-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x4-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x4-tbar-loading{background-image:url(images/grid/refresh.gif)}.x4-item-disabled .x4-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x4-item-disabled .x4-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x4-item-disabled .x4-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x4-item-disabled .x4-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x4-item-disabled .x4-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x4-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x4-strict .x4-ie7m .x4-boundlist-list-ct{position:relative}.x4-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x4-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x4-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x4-boundlist-floating{border-top-width:0}.x4-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x4-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x4-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x4-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x4-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x4-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x4-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x4-datepicker-month .x4-btn,.x4-datepicker-month .x4-btn .x4-btn-tc,.x4-datepicker-month .x4-btn .x4-btn-tl,.x4-datepicker-month .x4-btn .x4-btn-tr,.x4-datepicker-month .x4-btn .x4-btn-mc,.x4-datepicker-month .x4-btn .x4-btn-ml,.x4-datepicker-month .x4-btn .x4-btn-mr,.x4-datepicker-month .x4-btn .x4-btn-bc,.x4-datepicker-month .x4-btn .x4-btn-bl,.x4-datepicker-month .x4-btn .x4-btn-br{background:transparent;border-width:0!important}.x4-datepicker-month .x4-btn-inner{color:white}.x4-datepicker-month .x4-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x4-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x4-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x4-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x4-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x4-datepicker-date:hover{color:black;background-color:#ddecfe}.x4-datepicker-selected{border-style:solid;border-color:#8db2e3}.x4-datepicker-selected .x4-datepicker-date{background-color:#dae5f3;font-weight:bold}.x4-datepicker-today{border-color:darkred;border-style:solid}.x4-datepicker-prevday .x4-datepicker-date,.x4-datepicker-nextday .x4-datepicker-date{color:#aaa}.x4-datepicker-disabled a.x4-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x4-datepicker-disabled a.x4-datepicker-date:hover{background-color:#eee}.x4-datepicker-footer,.x4-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x4-datepicker-footer .x4-btn,.x4-monthpicker-buttons .x4-btn{margin:0 2px 0 2px}.x4-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x4-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x4-monthpicker-months .x4-monthpicker-item{width:43px}.x4-monthpicker-years{width:88px}.x4-monthpicker-years .x4-monthpicker-item{width:44px}.x4-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x4-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x4-monthpicker-item-inner:hover{background-color:#ddecfe}.x4-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x4-monthpicker-yearnav{height:27px}.x4-monthpicker-yearnav-button-ct{width:44px}.x4-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x4-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x4-monthpicker-yearnav-next-over{background-position:-15px -120px}.x4-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x4-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x4-monthpicker-small .x4-monthpicker-item{margin:2px 0 2px}.x4-monthpicker-small .x4-monthpicker-item-inner{margin:0 5px 0 5px}.x4-monthpicker-small .x4-monthpicker-yearnav{height:22px}.x4-monthpicker-small .x4-monthpicker-yearnav-button{margin-top:3px}.x4-nlg .x4-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x4-nlg .x4-datepicker-footer,.x4-nlg .x4-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x4-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x4-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x4-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x4-form-file-wrap .x4-form-text{color:gray}.x4-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x4-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x4-content-box .x4-color-picker-item{width:12px;height:12px}a.x4-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x4-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x4-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x4-html-editor-tb .x4-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-bold,.x4-menu-item div.x4-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-italic,.x4-menu-item div.x4-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-underline,.x4-menu-item div.x4-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-forecolor,.x4-menu-item div.x4-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-backcolor,.x4-menu-item div.x4-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifyleft,.x4-menu-item div.x4-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifycenter,.x4-menu-item div.x4-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-justifyright,.x4-menu-item div.x4-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-insertorderedlist,.x4-menu-item div.x4-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-insertunorderedlist,.x4-menu-item div.x4-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-increasefontsize,.x4-menu-item div.x4-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-decreasefontsize,.x4-menu-item div.x4-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-sourceedit,.x4-menu-item div.x4-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tb .x4-edit-createlink,.x4-menu-item div.x4-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner{padding:5px;padding-bottom:1px}.x4-html-editor-tb .x4-font-select{font-size:11px;font-family:inherit}.x4-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x4-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x4-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x4-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x4-grid-row-alt .x4-grid-td{background-color:#fafafa}.x4-grid-row-before-over .x4-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x4-grid-row-over .x4-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x4-grid-row-before-selected .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x4-grid-row-selected .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x4-grid-row-before-focused .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x4-grid-row-focused .x4-grid-td{background-color:#efefef}.x4-grid-row-over .x4-grid-td{background-color:#efefef}.x4-grid-row-selected .x4-grid-td{background-color:#dfe8f6}.x4-grid-row-focused .x4-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x4-grid-table .x4-grid-row-focused-first .x4-grid-td{border-top:1px dotted #464646}.x4-grid-row-selected .x4-grid-row-summary .x4-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x4-grid-row-focused .x4-grid-row-summary .x4-grid-td{border-bottom-color:#efefef;border-top-width:0}.x4-grid-with-row-lines .x4-grid-td{border-bottom-width:1px}.x4-grid-with-row-lines .x4-grid-table{border-top:1px solid white}.x4-grid-with-row-lines .x4-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x4-grid-with-row-lines .x4-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x4-grid-body .x4-grid-table-focused-first{border-top:1px dotted #464646}.x4-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x4-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x4-grid-row-selected .x4-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x4-nlg .x4-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x4-nlg .x4-grid-row-selected .x4-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x4-grid-cell-special .x4-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x4-grid-cell-special .x4-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x4-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x4-grid-row .x4-grid-cell-selected{color:null;background-color:#b8cfee}.x4-grid-with-col-lines .x4-grid-cell{border-right-width:1px}.x4-grid-resize-marker{width:1px;background-color:#0f0f0f}.x4-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x4-grid-drop-indicator .x4-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x4-grid-drop-indicator .x4-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x4-ie6 .x4-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x4-ie6 .x4-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x4-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-accordion-item .x4-grid-header-ct{border-width:0 0 1px!important}.x4-accordion-item .x4-grid-header-ct-hidden{border:0!important}.x4-grid-body{border-top-color:#c5c5c5}.x4-hmenu-sort-asc .x4-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x4-hmenu-sort-desc .x4-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x4-cols-icon .x4-menu-item-icon{background-image:url(images/grid/columns.gif)}.x4-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x4-group-sub-header .x4-column-header-inner{padding:3px 6px 5px 6px}.x4-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x4-column-header-over,.x4-column-header-sort-ASC,.x4-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x4-nlg .x4-grid-header-ct,.x4-nlg .x4-column-header{background-image:url(images/grid/column-header-bg.gif)}.x4-nlg .x4-column-header-over,.x4-nlg .x4-column-header-sort-ASC,.x4-nlg .x4-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x4-column-header-open{background-color:transparent}.x4-column-header-open .x4-column-header-trigger{background-color:transparent}.x4-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x4-column-header-align-right .x4-column-header-text{margin-right:9px}.x4-column-header-sort-ASC .x4-column-header-text,.x4-column-header-sort-DESC .x4-column-header-text{padding-right:12px;background-position:right center}.x4-column-header-sort-ASC .x4-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x4-column-header-sort-DESC .x4-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x4-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x4-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x4-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x4-action-col-cell .x4-item-disabled{filter:alpha(opacity=30);opacity:.3}.x4-action-col-icon{height:16px;width:16px;cursor:pointer}.x4-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x4-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x4-item-disabled .x4-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x4-grid-checkcolumn-checked{background-position:0 -13px}.x4-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x4-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x4-grid-group-hd-not-collapsible{cursor:default}.x4-grid-group-hd-collapsible .x4-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x4-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x4-grid-group-hd-collapsed .x4-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x4-grid-group-collapsed .x4-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x4-group-by-icon{background-image:url(images/grid/group-by.gif)}.x4-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x4-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-rowbody{padding-top:6px;padding-bottom:4px}.x4-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x4-summary-bottom{border-bottom-color:#c5c5c5}.x4-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x4-docked-summary .x4-grid-table{width:100%}.x4-grid-row-summary .x4-grid-cell,.x4-grid-row-summary .x4-grid-rowwrap,.x4-grid-row-summary .x4-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x4-grid-with-row-lines .x4-grid-table-summary{border:0}.x4-grid-locked .x4-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x4-grid-inner-locked .x4-column-header-last,.x4-grid-inner-locked .x4-grid-cell-last{border-right-width:0!important}.x4-hmenu-lock .x4-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x4-hmenu-unlock .x4-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x4-grid-editor .x4-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x4-content-box .x4-grid-editor .x4-form-text{height:15px}.x4-gecko .x4-grid-editor .x4-form-text{padding-left:4px;padding-right:4px}.x4-grid-editor .x4-form-trigger{height:20px}.x4-grid-editor .x4-form-spinner-up,.x4-grid-editor .x4-form-spinner-down{height:10px}.x4-grid-editor .x4-form-cb{margin-top:4px}.x4-grid-editor .x4-form-cb-wrap{height:20px}.x4-grid-editor .x4-form-display-field-body{height:20px}.x4-grid-editor .x4-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x4-grid-editor .x4-form-action-col-field{padding:2px 2px 2px 2px}.x4-tree-cell-editor .x4-form-text{padding-left:2px;padding-right:2px}.x4-gecko .x4-tree-cell-editor .x4-form-text{padding-left:1px;padding-right:1px}.x4-grid-row-editor .x4-field{margin:0 1px 0 1px}.x4-grid-row-editor .x4-form-display-field{padding:2px 5px 3px 5px}.x4-grid-row-editor .x4-form-action-col-field{padding:2px 1px 2px 1px}.x4-grid-row-editor .x4-form-text{padding:1px 4px 2px 4px}.x4-gecko .x4-grid-row-editor .x4-form-text{padding-left:3px;padding-right:3px}.x4-grid-row-editor .x4-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x4-grid-with-col-lines .x4-grid-row-editor .x4-form-cb{margin-right:1px}.x4-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x4-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x4-nbr .x4-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x4-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x4-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x4-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x4-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x4-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x4-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x4-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x4-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x4-grid-row-editor-buttons-default-bottom-tr,.x4-grid-row-editor-buttons-default-bottom-br,.x4-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x4-grid-row-editor-buttons-default-bottom-tl,.x4-grid-row-editor-buttons-default-bottom-bl,.x4-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x4-grid-row-editor-buttons-default-bottom-tc{height:0}.x4-grid-row-editor-buttons-default-bottom-bc{height:5px}.x4-grid-row-editor-buttons-default-bottom-tl,.x4-grid-row-editor-buttons-default-bottom-bl,.x4-grid-row-editor-buttons-default-bottom-tr,.x4-grid-row-editor-buttons-default-bottom-br,.x4-grid-row-editor-buttons-default-bottom-tc,.x4-grid-row-editor-buttons-default-bottom-bc,.x4-grid-row-editor-buttons-default-bottom-ml,.x4-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x4-grid-row-editor-buttons-default-bottom-ml,.x4-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x4-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-tl,.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x4-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x4-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x4-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x4-nbr .x4-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x4-nbr .x4-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x4-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x4-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x4-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x4-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x4-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x4-grid-row-editor-buttons-default-top-mr{background-position:right top}.x4-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x4-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x4-grid-row-editor-buttons-default-top-tr,.x4-grid-row-editor-buttons-default-top-br,.x4-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x4-grid-row-editor-buttons-default-top-tl,.x4-grid-row-editor-buttons-default-top-bl,.x4-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x4-grid-row-editor-buttons-default-top-tc{height:5px}.x4-grid-row-editor-buttons-default-top-bc{height:0}.x4-grid-row-editor-buttons-default-top-tl,.x4-grid-row-editor-buttons-default-top-bl,.x4-grid-row-editor-buttons-default-top-tr,.x4-grid-row-editor-buttons-default-top-br,.x4-grid-row-editor-buttons-default-top-tc,.x4-grid-row-editor-buttons-default-top-bc,.x4-grid-row-editor-buttons-default-top-ml,.x4-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x4-grid-row-editor-buttons-default-top-ml,.x4-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x4-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-tl,.x4-strict .x4-ie7 .x4-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x4-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x4-grid-row-editor-buttons-default-bottom{top:29px}.x4-grid-row-editor-buttons-default-top{bottom:29px}.x4-grid-row-editor-buttons{border-color:#99bce8}.x4-row-editor-update-button{margin-right:2px}.x4-row-editor-cancel-button{margin-left:2px}.x4-grid-row-editor-errors .x4-tip-body{padding:5px}.x4-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x4-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x4-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x4-grid-row-collapsed .x4-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x4-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x4-accordion-layout-ct{background-color:white;padding:0}.x4-accordion-hd .x4-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x4-accordion-item{margin:0}.x4-accordion-item .x4-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x4-accordion-item .x4-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x4-accordion-item .x4-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x4-accordion-item .x4-accordion-body{border-width:0}.x4-accordion-hd .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-collapse-bottom{background-position:0 -255px}.x4-accordion-hd .x4-tool-expand-top,.x4-accordion-hd .x4-tool-expand-bottom{background-position:0 -240px}.x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom{background-position:-15px -255px}.x4-accordion-hd .x4-tool-over .x4-tool-expand-top,.x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom{background-position:-15px -240px}.x4-accordion-hd .x4-tool-img{background-color:#d9e7f8}.x4-collapse-el{cursor:pointer}.x4-layout-split-left,.x4-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x4-layout-split-top,.x4-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x4-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x4-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x4-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x4-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x4-splitter-collapsed .x4-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x4-splitter-collapsed .x4-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x4-splitter-collapsed .x4-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x4-splitter-collapsed .x4-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x4-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-splitter-active .x4-collapse-el{filter:alpha(opacity=30);opacity:.3}.x4-border-layout-ct{background-color:#dfe8f6}.x4-menu-body{background:#f0f0f0;padding:2px}.x4-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x4-menu-item{padding:1px;cursor:pointer}.x4-menu-item-indent{margin-left:30px}.x4-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x4-nlg .x4-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x4-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x4-right-check-item-text{padding-right:22px}.x4-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x4-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x4-ie8m .x4-menu-item-glyph{color:#898989}.x4-gecko .x4-menu-item-active .x4-menu-item-icon,.x4-quirks .x4-menu-item-active .x4-menu-item-icon,.x4-ie9m .x4-menu-item-active .x4-menu-item-icon{top:3px;left:2px}.x4-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x4-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}.x4-menu-item-checked .x4-menu-item-icon,.x4-menu-item-checked .x4-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x4-menu-item-checked .x4-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x4-menu-item-unchecked .x4-menu-item-icon,.x4-menu-item-unchecked .x4-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x4-menu-item-unchecked .x4-menu-group-icon{background-image:none}.x4-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x4-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x4-gecko .x4-menu-item-active .x4-menu-item-arrow,.x4-quirks .x4-menu-item-active .x4-menu-item-arrow,.x4-ie9m .x4-menu-item-active .x4-menu-item-arrow{top:6px;right:-1px}.x4-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x4-content-box .x4-menu-icon-separator{width:1px}.x4-content-box .x4-menu-item-separator{height:1px}.x4-ie .x4-menu-item-disabled .x4-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x4-ie .x4-menu-item-disabled .x4-menu-item-text{background-color:transparent}.x4-menu-date-item{border-color:#99bbe8}.x4-menu-item .x4-form-item-label{font-size:11px;color:#222}.x4-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x4-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x4-menu-scroll-top,.x4-menu-scroll-bottom{background-color:#f0f0f0}.x4-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x4-tool{cursor:pointer}.x4-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x4-tool-placeholder{visibility:hidden}.x4-tool-close{background-position:0 0}.x4-tool-minimize{background-position:0 -15px}.x4-tool-maximize{background-position:0 -30px}.x4-tool-restore{background-position:0 -45px}.x4-tool-toggle{background-position:0 -60px}.x4-panel-collapsed .x4-tool-toggle{background-position:0 -75px}.x4-tool-gear{background-position:0 -90px}.x4-tool-prev{background-position:0 -105px}.x4-tool-next{background-position:0 -120px}.x4-tool-pin{background-position:0 -135px}.x4-tool-unpin{background-position:0 -150px}.x4-tool-right{background-position:0 -165px}.x4-tool-left{background-position:0 -180px}.x4-tool-down{background-position:0 -195px}.x4-tool-up{background-position:0 -210px}.x4-tool-refresh{background-position:0 -225px}.x4-tool-plus{background-position:0 -240px}.x4-tool-minus{background-position:0 -255px}.x4-tool-search{background-position:0 -270px}.x4-tool-save{background-position:0 -285px}.x4-tool-help{background-position:0 -300px}.x4-tool-print{background-position:0 -315px}.x4-tool-expand{background-position:0 -330px}.x4-tool-collapse{background-position:0 -345px}.x4-tool-resize{background-position:0 -360px}.x4-tool-move{background-position:0 -375px}.x4-tool-expand-bottom,.x4-tool-collapse-bottom{background-position:0 -195px}.x4-tool-expand-top,.x4-tool-collapse-top{background-position:0 -210px}.x4-tool-expand-left,.x4-tool-collapse-left{background-position:0 -180px}.x4-tool-expand-right,.x4-tool-collapse-right{background-position:0 -165px}.x4-tool-over .x4-tool-close{background-position:-15px 0}.x4-tool-over .x4-tool-minimize{background-position:-15px -15px}.x4-tool-over .x4-tool-maximize{background-position:-15px -30px}.x4-tool-over .x4-tool-restore{background-position:-15px -45px}.x4-tool-over .x4-tool-toggle{background-position:-15px -60px}.x4-panel-collapsed .x4-tool-over .x4-tool-toggle{background-position:-15px -75px}.x4-tool-over .x4-tool-gear{background-position:-15px -90px}.x4-tool-over .x4-tool-prev{background-position:-15px -105px}.x4-tool-over .x4-tool-next{background-position:-15px -120px}.x4-tool-over .x4-tool-pin{background-position:-15px -135px}.x4-tool-over .x4-tool-unpin{background-position:-15px -150px}.x4-tool-over .x4-tool-right{background-position:-15px -165px}.x4-tool-over .x4-tool-left{background-position:-15px -180px}.x4-tool-over .x4-tool-down{background-position:-15px -195px}.x4-tool-over .x4-tool-up{background-position:-15px -210px}.x4-tool-over .x4-tool-refresh{background-position:-15px -225px}.x4-tool-over .x4-tool-plus{background-position:-15px -240px}.x4-tool-over .x4-tool-minus{background-position:-15px -255px}.x4-tool-over .x4-tool-search{background-position:-15px -270px}.x4-tool-over .x4-tool-save{background-position:-15px -285px}.x4-tool-over .x4-tool-help{background-position:-15px -300px}.x4-tool-over .x4-tool-print{background-position:-15px -315px}.x4-tool-over .x4-tool-expand{background-position:-15px -330px}.x4-tool-over .x4-tool-collapse{background-position:-15px -345px}.x4-tool-over .x4-tool-resize{background-position:-15px -360px}.x4-tool-over .x4-tool-move{background-position:-15px -375px}.x4-tool-over .x4-tool-expand-bottom,.x4-tool-over .x4-tool-collapse-bottom{background-position:-15px -195px}.x4-tool-over .x4-tool-expand-top,.x4-tool-over .x4-tool-collapse-top{background-position:-15px -210px}.x4-tool-over .x4-tool-expand-left,.x4-tool-over .x4-tool-collapse-left{background-position:-15px -180px}.x4-tool-over .x4-tool-expand-right,.x4-tool-over .x4-tool-collapse-right{background-position:-15px -165px}.x4-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x4-collapsed .x4-resizable-handle{display:none}.x4-resizable-over .x4-resizable-handle-north{cursor:n-resize}.x4-resizable-over .x4-resizable-handle-south{cursor:s-resize}.x4-resizable-over .x4-resizable-handle-east{cursor:e-resize}.x4-resizable-over .x4-resizable-handle-west{cursor:w-resize}.x4-resizable-over .x4-resizable-handle-southeast{cursor:se-resize}.x4-resizable-over .x4-resizable-handle-northwest{cursor:nw-resize}.x4-resizable-over .x4-resizable-handle-northeast{cursor:ne-resize}.x4-resizable-over .x4-resizable-handle-southwest{cursor:sw-resize}.x4-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x4-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x4-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x4-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x4-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x4-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x4-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x4-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x4-ie .x4-resizable-handle-east{margin-right:-1px}.x4-ie .x4-resizable-handle-south{margin-bottom:-1px}.x4-resizable-pinned .x4-resizable-handle,.x4-resizable-over .x4-resizable-handle{filter:alpha(opacity=100);opacity:1}.x4-window .x4-window-handle{filter:alpha(opacity=0);opacity:0}.x4-window-collapsed .x4-window-handle{display:none}.x4-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x4-resizable-over .x4-resizable-handle-east,.x4-resizable-over .x4-resizable-handle-west,.x4-resizable-pinned .x4-resizable-handle-east,.x4-resizable-pinned .x4-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x4-resizable-over .x4-resizable-handle-south,.x4-resizable-over .x4-resizable-handle-north,.x4-resizable-pinned .x4-resizable-handle-south,.x4-resizable-pinned .x4-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x4-resizable-over .x4-resizable-handle-southeast,.x4-resizable-pinned .x4-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x4-resizable-over .x4-resizable-handle-northwest,.x4-resizable-pinned .x4-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x4-resizable-over .x4-resizable-handle-northeast,.x4-resizable-pinned .x4-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x4-resizable-over .x4-resizable-handle-southwest,.x4-resizable-pinned .x4-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x4-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x4-slider-horz .x4-slider-end{padding-right:7px;background:no-repeat right -30px}.x4-slider-horz .x4-slider-inner{height:15px}.x4-ie6 .x4-form-item .x4-slider-horz,.x4-ie7 .x4-form-item .x4-slider-horz,.x4-quirks .x4-ie .x4-form-item .x4-slider-horz{margin-top:4px}.x4-slider-horz .x4-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x4-slider-horz .x4-slider-thumb-over{background-position:-14px -15px}.x4-slider-horz .x4-slider-thumb-drag{background-position:-28px -30px}.x4-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x4-slider-vert .x4-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x4-slider-vert .x4-slider-inner{width:15px}.x4-slider-vert .x4-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x4-slider-vert .x4-slider-thumb-over{background-position:-15px -14px}.x4-slider-vert .x4-slider-thumb-drag{background-position:-30px -28px}.x4-slider-horz,.x4-slider-horz .x4-slider-end,.x4-slider-horz .x4-slider-inner{background-image:url(images/slider/slider-bg.png)}.x4-slider-vert,.x4-slider-vert .x4-slider-end,.x4-slider-vert .x4-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x4-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-top-tl{background-position:0 -8px}.x4-tab-default-top-tr{background-position:right -12px}.x4-tab-default-top-bl{background-position:0 -16px}.x4-tab-default-top-br{background-position:right -20px}.x4-tab-default-top-ml{background-position:0 top}.x4-tab-default-top-mr{background-position:right top}.x4-tab-default-top-tc{background-position:0 0}.x4-tab-default-top-bc{background-position:0 -4px}.x4-tab-default-top-tr,.x4-tab-default-top-br,.x4-tab-default-top-mr{padding-right:4px}.x4-tab-default-top-tl,.x4-tab-default-top-bl,.x4-tab-default-top-ml{padding-left:4px}.x4-tab-default-top-tc{height:4px}.x4-tab-default-top-bc{height:0}.x4-tab-default-top-tl,.x4-tab-default-top-bl,.x4-tab-default-top-tr,.x4-tab-default-top-br,.x4-tab-default-top-tc,.x4-tab-default-top-bc,.x4-tab-default-top-ml,.x4-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-top-ml,.x4-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-top-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-top-tl,.x4-strict .x4-ie7 .x4-tab-default-top-bl{position:relative;right:0}.x4-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x4-tab-default-bottom-tl{background-position:0 -8px}.x4-tab-default-bottom-tr{background-position:right -12px}.x4-tab-default-bottom-bl{background-position:0 -16px}.x4-tab-default-bottom-br{background-position:right -20px}.x4-tab-default-bottom-ml{background-position:0 top}.x4-tab-default-bottom-mr{background-position:right top}.x4-tab-default-bottom-tc{background-position:0 0}.x4-tab-default-bottom-bc{background-position:0 -4px}.x4-tab-default-bottom-tr,.x4-tab-default-bottom-br,.x4-tab-default-bottom-mr{padding-right:4px}.x4-tab-default-bottom-tl,.x4-tab-default-bottom-bl,.x4-tab-default-bottom-ml{padding-left:4px}.x4-tab-default-bottom-tc{height:0}.x4-tab-default-bottom-bc{height:4px}.x4-tab-default-bottom-tl,.x4-tab-default-bottom-bl,.x4-tab-default-bottom-tr,.x4-tab-default-bottom-br,.x4-tab-default-bottom-tc,.x4-tab-default-bottom-bc,.x4-tab-default-bottom-ml,.x4-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x4-tab-default-bottom-ml,.x4-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x4-tab-default-bottom-mc{padding:3px 6px 0 6px}.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,.x4-strict .x4-ie7 .x4-tab-default-bottom-bl{position:relative;right:0}.x4-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x4-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-left-tl{background-position:0 -8px}.x4-tab-default-left-tr{background-position:right -12px}.x4-tab-default-left-bl{background-position:0 -16px}.x4-tab-default-left-br{background-position:right -20px}.x4-tab-default-left-ml{background-position:0 top}.x4-tab-default-left-mr{background-position:right top}.x4-tab-default-left-tc{background-position:0 0}.x4-tab-default-left-bc{background-position:0 -4px}.x4-tab-default-left-tr,.x4-tab-default-left-br,.x4-tab-default-left-mr{padding-right:4px}.x4-tab-default-left-tl,.x4-tab-default-left-bl,.x4-tab-default-left-ml{padding-left:4px}.x4-tab-default-left-tc{height:4px}.x4-tab-default-left-bc{height:0}.x4-tab-default-left-tl,.x4-tab-default-left-bl,.x4-tab-default-left-tr,.x4-tab-default-left-br,.x4-tab-default-left-tc,.x4-tab-default-left-bc,.x4-tab-default-left-ml,.x4-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-left-ml,.x4-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-left-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-left-tl,.x4-strict .x4-ie7 .x4-tab-default-left-bl{position:relative;right:0}.x4-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x4-nlg .x4-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x4-nbr .x4-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x4-nbr .x4-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x4-tab-default-right-tl{background-position:0 -8px}.x4-tab-default-right-tr{background-position:right -12px}.x4-tab-default-right-bl{background-position:0 -16px}.x4-tab-default-right-br{background-position:right -20px}.x4-tab-default-right-ml{background-position:0 top}.x4-tab-default-right-mr{background-position:right top}.x4-tab-default-right-tc{background-position:0 0}.x4-tab-default-right-bc{background-position:0 -4px}.x4-tab-default-right-tr,.x4-tab-default-right-br,.x4-tab-default-right-mr{padding-right:4px}.x4-tab-default-right-tl,.x4-tab-default-right-bl,.x4-tab-default-right-ml{padding-left:4px}.x4-tab-default-right-tc{height:4px}.x4-tab-default-right-bc{height:0}.x4-tab-default-right-tl,.x4-tab-default-right-bl,.x4-tab-default-right-tr,.x4-tab-default-right-br,.x4-tab-default-right-tc,.x4-tab-default-right-bc,.x4-tab-default-right-ml,.x4-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x4-tab-default-right-ml,.x4-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x4-tab-default-right-mc{padding:0 6px 3px 6px}.x4-strict .x4-ie7 .x4-tab-default-right-tl,.x4-strict .x4-ie7 .x4-tab-default-right-bl{position:relative;right:0}.x4-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x4-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x4-tab-default .x4-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x4-tab-default .x4-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x4-tab-default .x4-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x4-ie8m .x4-tab-default .x4-tab-glyph{color:#8facd0}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default{padding-left:0}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-button{padding-left:9px}.x4-strict .x4-ie9 .x4-tab-bar-vertical .x4-tab-default .x4-tab-icon-el{left:9px}.x4-tab-default-icon .x4-tab-inner{width:16px}.x4-tab-default-left{margin:0 2px 0 0}.x4-tab-default-top,.x4-tab-default-left,.x4-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x4-nlg .x4-tab-default-top,.x4-nlg .x4-tab-default-left,.x4-nlg .x4-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x4-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x4-nlg .x4-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x4-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x4-ie9m .x4-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x4-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x4-ie9m .x4-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x4-tab-default-icon-text-left .x4-tab-inner{padding-left:20px}.x4-tab-default-over{background-color:#e8f2ff}.x4-tab-default-over .x4-tab-glyph{color:#416da3}.x4-ie8m .x4-tab-default-over .x4-tab-glyph{color:#94afd1}.x4-tab-default-top-over,.x4-tab-default-left-over,.x4-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-nlg .x4-tab-default-top-over,.x4-nlg .x4-tab-default-left-over,.x4-nlg .x4-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x4-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-nlg .x4-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x4-tab-default-active{background-color:#deecfd}.x4-tab-default-active .x4-tab-inner{color:#15498b}.x4-tab-default-active .x4-tab-glyph{color:#15498b}.x4-ie8m .x4-tab-default-active .x4-tab-glyph{color:#799ac4}.x4-tab-default-top-active,.x4-tab-default-left-active,.x4-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-top-active,.x4-nlg .x4-tab-default-left-active,.x4-nlg .x4-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x4-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x4-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x4-tab-default-disabled .x4-tab-inner{color:#c3b3b3}.x4-tab-default-disabled .x4-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x4-tab-default-disabled .x4-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x4-ie8m .x4-tab-default-disabled .x4-tab-glyph{color:#d8dae4}.x4-tab-default-top-disabled,.x4-tab-default-left-disabled,.x4-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x4-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x4-tab-default-top-disabled,.x4-tab-default-left-disabled,.x4-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x4-nlg .x4-tab-default-top-disabled,.x4-nlg .x4-tab-default-left-disabled,.x4-nlg .x4-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x4-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x4-nlg .x4-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x4-nbr .x4-tab-default{background-image:none}.x4-tab-default-top-over .x4-frame-tl,.x4-tab-default-top-over .x4-frame-bl,.x4-tab-default-top-over .x4-frame-tr,.x4-tab-default-top-over .x4-frame-br,.x4-tab-default-top-over .x4-frame-tc,.x4-tab-default-top-over .x4-frame-bc,.x4-tab-default-left-over .x4-frame-tl,.x4-tab-default-left-over .x4-frame-bl,.x4-tab-default-left-over .x4-frame-tr,.x4-tab-default-left-over .x4-frame-br,.x4-tab-default-left-over .x4-frame-tc,.x4-tab-default-left-over .x4-frame-bc,.x4-tab-default-right-over .x4-frame-tl,.x4-tab-default-right-over .x4-frame-bl,.x4-tab-default-right-over .x4-frame-tr,.x4-tab-default-right-over .x4-frame-br,.x4-tab-default-right-over .x4-frame-tc,.x4-tab-default-right-over .x4-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x4-tab-default-top-over .x4-frame-ml,.x4-tab-default-top-over .x4-frame-mr,.x4-tab-default-left-over .x4-frame-ml,.x4-tab-default-left-over .x4-frame-mr,.x4-tab-default-right-over .x4-frame-ml,.x4-tab-default-right-over .x4-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x4-tab-default-top-over .x4-frame-mc,.x4-tab-default-left-over .x4-frame-mc,.x4-tab-default-right-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x4-tab-default-bottom-over .x4-frame-tl,.x4-tab-default-bottom-over .x4-frame-bl,.x4-tab-default-bottom-over .x4-frame-tr,.x4-tab-default-bottom-over .x4-frame-br,.x4-tab-default-bottom-over .x4-frame-tc,.x4-tab-default-bottom-over .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x4-tab-default-bottom-over .x4-frame-ml,.x4-tab-default-bottom-over .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x4-tab-default-bottom-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x4-tab-default-top-active .x4-frame-tl,.x4-tab-default-top-active .x4-frame-bl,.x4-tab-default-top-active .x4-frame-tr,.x4-tab-default-top-active .x4-frame-br,.x4-tab-default-top-active .x4-frame-tc,.x4-tab-default-top-active .x4-frame-bc,.x4-tab-default-left-active .x4-frame-tl,.x4-tab-default-left-active .x4-frame-bl,.x4-tab-default-left-active .x4-frame-tr,.x4-tab-default-left-active .x4-frame-br,.x4-tab-default-left-active .x4-frame-tc,.x4-tab-default-left-active .x4-frame-bc,.x4-tab-default-right-active .x4-frame-tl,.x4-tab-default-right-active .x4-frame-bl,.x4-tab-default-right-active .x4-frame-tr,.x4-tab-default-right-active .x4-frame-br,.x4-tab-default-right-active .x4-frame-tc,.x4-tab-default-right-active .x4-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x4-tab-default-top-active .x4-frame-ml,.x4-tab-default-top-active .x4-frame-mr,.x4-tab-default-left-active .x4-frame-ml,.x4-tab-default-left-active .x4-frame-mr,.x4-tab-default-right-active .x4-frame-ml,.x4-tab-default-right-active .x4-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x4-tab-default-top-active .x4-frame-mc,.x4-tab-default-left-active .x4-frame-mc,.x4-tab-default-right-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x4-tab-default-bottom-active .x4-frame-tl,.x4-tab-default-bottom-active .x4-frame-bl,.x4-tab-default-bottom-active .x4-frame-tr,.x4-tab-default-bottom-active .x4-frame-br,.x4-tab-default-bottom-active .x4-frame-tc,.x4-tab-default-bottom-active .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x4-tab-default-bottom-active .x4-frame-ml,.x4-tab-default-bottom-active .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x4-tab-default-bottom-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x4-tab-default-top-disabled .x4-frame-tl,.x4-tab-default-top-disabled .x4-frame-bl,.x4-tab-default-top-disabled .x4-frame-tr,.x4-tab-default-top-disabled .x4-frame-br,.x4-tab-default-top-disabled .x4-frame-tc,.x4-tab-default-top-disabled .x4-frame-bc,.x4-tab-default-left-disabled .x4-frame-tl,.x4-tab-default-left-disabled .x4-frame-bl,.x4-tab-default-left-disabled .x4-frame-tr,.x4-tab-default-left-disabled .x4-frame-br,.x4-tab-default-left-disabled .x4-frame-tc,.x4-tab-default-left-disabled .x4-frame-bc,.x4-tab-default-right-disabled .x4-frame-tl,.x4-tab-default-right-disabled .x4-frame-bl,.x4-tab-default-right-disabled .x4-frame-tr,.x4-tab-default-right-disabled .x4-frame-br,.x4-tab-default-right-disabled .x4-frame-tc,.x4-tab-default-right-disabled .x4-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x4-tab-default-top-disabled .x4-frame-ml,.x4-tab-default-top-disabled .x4-frame-mr,.x4-tab-default-left-disabled .x4-frame-ml,.x4-tab-default-left-disabled .x4-frame-mr,.x4-tab-default-right-disabled .x4-frame-ml,.x4-tab-default-right-disabled .x4-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x4-tab-default-top-disabled .x4-frame-mc,.x4-tab-default-left-disabled .x4-frame-mc,.x4-tab-default-right-disabled .x4-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x4-tab-default-bottom-disabled .x4-frame-tl,.x4-tab-default-bottom-disabled .x4-frame-bl,.x4-tab-default-bottom-disabled .x4-frame-tr,.x4-tab-default-bottom-disabled .x4-frame-br,.x4-tab-default-bottom-disabled .x4-frame-tc,.x4-tab-default-bottom-disabled .x4-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x4-tab-default-bottom-disabled .x4-frame-ml,.x4-tab-default-bottom-disabled .x4-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x4-tab-default-bottom-disabled .x4-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x4-nbr .x4-tab-default-top,.x4-nbr .x4-tab-default-left,.x4-nbr .x4-tab-default-right{border-bottom-width:1px!important}.x4-nbr .x4-tab-default-bottom{border-top-width:1px!important}.x4-tab-default .x4-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x4-tab-default .x4-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x4-tab-default .x4-tab-close-btn{top:2px;right:2px}.x4-tab-default-disabled .x4-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x4-tab-default-closable .x4-tab-wrap{padding-right:14px}.x4-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x4-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x4-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x4-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x4-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x4-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x4-tab-bar-default{border-style:solid;border-color:#99bce8}.x4-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x4-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x4-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x4-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x4-tab-bar-default-horizontal{height:25px}.x4-content-box .x4-tab-bar-default-horizontal{height:23px}.x4-tab-bar-default-vertical{width:25px}.x4-content-box .x4-tab-bar-default-vertical{width:23px}.x4-tab-bar-body-default-top{padding-bottom:2px}.x4-tab-bar-body-default-bottom{padding-top:2px}.x4-tab-bar-body-default-left{padding-right:2px}.x4-tab-bar-body-default-right{padding-left:2px}.x4-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x4-content-box .x4-tab-bar-strip-default-horizontal{height:2px}.x4-content-box .x4-tab-bar-strip-default-vertical{width:2px}.x4-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-top{border-width:1px 1px 0}.x4-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x4-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x4-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x4-tab-bar-plain .x4-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x4-tab-bar-default{background-color:#cbdbef}.x4-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x4-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x4-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x4-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x4-nlg .x4-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x4-tab-bar-default .x4-box-scroller{cursor:pointer}.x4-tab-bar-default .x4-tabbar-scroll-left,.x4-tab-bar-default .x4-tabbar-scroll-right{height:20px;width:18px}.x4-tab-bar-default .x4-tabbar-scroll-top,.x4-tab-bar-default .x4-tabbar-scroll-bottom{width:20px;height:18px}.x4-tab-bar-default-bottom .x4-box-scroller{margin-top:1px}.x4-tab-bar-default-right .x4-box-scroller{margin-left:1px}.x4-tab-bar-default-top .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x4-tab-bar-default-top .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x4-tab-bar-default-bottom .x4-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x4-tab-bar-default-bottom .x4-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x4-tab-bar-default-left .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x4-tab-bar-default-left .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x4-tab-bar-default-right .x4-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x4-tab-bar-default-right .x4-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x4-tab-bar-default .x4-tabbar-scroll-left-hover,.x4-tab-bar-default .x4-tabbar-scroll-right-hover{background-position:-18px 0}.x4-tab-bar-default .x4-tabbar-scroll-top-hover,.x4-tab-bar-default .x4-tabbar-scroll-bottom-hover{background-position:0 -18px}.x4-tab-bar-default .x4-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x4-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x4-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x4-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x4-tab-bar-plain{border-width:0;padding:0;height:23px}.x4-column-header-checkbox{border-color:#c5c5c5}.x4-grid-row-checker,.x4-column-header-checkbox .x4-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x4-column-header-checkbox .x4-column-header-inner{padding:5px 5px 4px 5px}.x4-grid-cell-row-checker .x4-grid-cell-inner{padding:4px 5px 3px 5px}.x4-grid-no-row-lines .x4-grid-row-focused .x4-grid-cell-row-checker .x4-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x4-grid-hd-checker-on .x4-column-header-text,.x4-grid-row-selected .x4-grid-row-checker,.x4-grid-row-checked .x4-grid-row-checker{background-position:0 -13px}.x4-tree-expander{cursor:pointer}.x4-tree-arrows .x4-tree-expander{background-image:url(images/tree/arrows.gif)}.x4-tree-arrows .x4-tree-expander-over .x4-tree-expander{background-position:-32px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander{background-position:-16px center}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-expander{background-position:-48px center}.x4-tree-lines .x4-tree-elbow{background-image:url(images/tree/elbow.gif)}.x4-tree-lines .x4-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x4-tree-lines .x4-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x4-tree-lines .x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x4-tree-lines .x4-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x4-tree-no-row-lines .x4-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x4-tree-no-row-lines .x4-grid-tree-node-expanded .x4-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x4-tree-icon{width:16px;height:20px}.x4-tree-elbow-img{width:16px;height:20px;margin-right:0}.x4-tree-icon,.x4-tree-elbow-img,.x4-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x4-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x4-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x4-grid-tree-node-expanded .x4-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x4-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x4-tree-checkbox-checked{background-position:0 -13px}.x4-grid-tree-loading .x4-tree-icon{background-image:url(images/tree/loading.gif)}.x4-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x4-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x4-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x4-tree-drop-ok-append .x4-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x4-tree-drop-ok-above .x4-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x4-tree-drop-ok-below .x4-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x4-tree-drop-ok-between .x4-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x4-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x4-box-tl{background:transparent no-repeat 0 0;zoom:1}.x4-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x4-box-tr{background:transparent no-repeat right -8px}.x4-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x4-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x4-box-mc h3{margin:0 0 4px 0;zoom:1}.x4-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x4-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x4-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x4-box-br{background:transparent no-repeat right -24px}.x4-box-tl,.x4-box-bl{padding-left:8px;overflow:hidden}.x4-box-tr,.x4-box-br{padding-right:8px;overflow:hidden}.x4-box-tl{background-image:url(images/box/corners.gif)}.x4-box-tc{background-image:url(images/box/tb.gif)}.x4-box-tr{background-image:url(images/box/corners.gif)}.x4-box-ml{background-image:url(images/box/l.gif)}.x4-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x4-box-mc h3{font-size:18px;font-weight:bold}.x4-box-mr{background-image:url(images/box/r.gif)}.x4-box-bl{background-image:url(images/box/corners.gif)}.x4-box-bc{background-image:url(images/box/tb.gif)}.x4-box-br{background-image:url(images/box/corners.gif)}.x4-box-blue .x4-box-bl,.x4-box-blue .x4-box-br,.x4-box-blue .x4-box-tl,.x4-box-blue .x4-box-tr{background-image:url(images/box/corners-blue.gif)}.x4-box-blue .x4-box-bc,.x4-box-blue .x4-box-mc,.x4-box-blue .x4-box-tc{background-image:url(images/box/tb-blue.gif)}.x4-box-blue .x4-box-mc{background-color:#c3daf9}.x4-box-blue .x4-box-mc h3{color:#17385b}.x4-box-blue .x4-box-ml{background-image:url(images/box/l-blue.gif)}.x4-box-blue .x4-box-mr{background-image:url(images/box/r-blue.gif)}.x4-message-box .x4-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x4-form-trigger{height:22px}.x4-content-box .x4-form-trigger{height:21px}.x4-field-toolbar .x4-form-trigger{height:20px}.x4-content-box .x4-field-toolbar .x4-form-trigger{height:19px}.x4-content-box div.x4-form-spinner-up,.x4-content-box div.x4-form-spinner-down{height:10px}.x4-content-box .x4-toolbar-item div.x4-form-spinner-up,.x4-content-box .x4-toolbar-item div.x4-form-spinner-down{height:9px}.x4-html-editor-wrap .x4-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x4-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x4-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x4-content-box .x4-grid-editor .x4-form-trigger{height:19px}.x4-grid-editor .x4-form-spinner-up,.x4-grid-editor .x4-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x4-content-box .x4-grid-editor .x4-form-spinner-up,.x4-content-box .x4-grid-editor .x4-form-spinner-down{height:9px}.x4-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x4-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x4-resizable-over .x4-resizable-handle-east,.x4-resizable-over .x4-resizable-handle-west,.x4-resizable-pinned .x4-resizable-handle-east,.x4-resizable-pinned .x4-resizable-handle-west{background-position:left}.x4-resizable-over .x4-resizable-handle-south,.x4-resizable-over .x4-resizable-handle-north,.x4-resizable-pinned .x4-resizable-handle-south,.x4-resizable-pinned .x4-resizable-handle-north{background-position:top}.x4-resizable-over .x4-resizable-handle-southeast,.x4-resizable-pinned .x4-resizable-handle-southeast{background-position:top left}.x4-resizable-over .x4-resizable-handle-northwest,.x4-resizable-pinned .x4-resizable-handle-northwest{background-position:bottom right}.x4-resizable-over .x4-resizable-handle-northeast,.x4-resizable-pinned .x4-resizable-handle-northeast{background-position:bottom left}.x4-resizable-over .x4-resizable-handle-southwest,.x4-resizable-pinned .x4-resizable-handle-southwest{background-position:top right}.x4-ie6 .x4-slider-horz,.x4-ie6 .x4-slider-horz .x4-slider-end,.x4-ie6 .x4-slider-horz .x4-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x4-ie6 .x4-slider-horz .x4-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x4-ie6 .x4-slider-vert,.x4-ie6 .x4-slider-vert .x4-slider-end,.x4-ie6 .x4-slider-vert .x4-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x4-ie6 .x4-slider-vert .x4-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x4-tab-icon-el{top:-1px}.x4-tab-noicon .x4-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/Readme.md
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/Readme.md	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/Readme.md	(revision 18732)
@@ -0,0 +1,3 @@
+# ext-theme-classic/resources
+
+This folder contains static resources (typically an `"images"` folder as well).
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-debug.css	(revision 18732)
@@ -0,0 +1,19527 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #a3bad9;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #e0e8f3;
+  border-width: 1px;
+  height: 20px;
+  border-color: #6594cf;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #73a3e0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+  background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #396295;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #4c4c4c;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #98c8ff;
+  border-right-color: white;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #99bce8;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #98c8ff;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #99bce8;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #99bce8;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #dfe9f6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #e9f2ff;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #8eaace;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #e9f2ff;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #a2b1c5;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  border-style: solid;
+  background: #dfe8f6;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1;
+  background-color: #ced9e7;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #ced9e7;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #698fb9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #7eadd9;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #ced9e7;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #7eadd9;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-color: #7eadd9;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #23427c;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: #233d6d;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+  background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: linear-gradient(top, #edf4fd, #cde1f9);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: #ddecfe;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #8db2e3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #dae5f3;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #1b376c;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #15428b;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #ddecfe;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #dae5f3;
+  border-style: solid;
+  border-color: #8db2e3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #dfe8f6;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #dfe8f6;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #a3bae9;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #99bbe8;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #3764a0;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #99bce8;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #99bce8 !important;
+  border-bottom: 1px solid #99bce8 !important;
+  padding: 4px 0 4px 0;
+  background-color: #eaf1fb;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #99bce8;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #d9e7f8;
+  border-top-color: #f3f7fb;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #d9e7f8;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #dfe8f6;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #d9e8fb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+  background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+  border-color: #a9cbf5;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #d9e8fb repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #8db3e3;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #416da3;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: #416da3;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #8facd0;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top, .x-nlg
+.x-tab-default-left, .x-nlg
+.x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #e8f2ff;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: #416da3;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #94afd1;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over,
+.x-tab-default-left-over,
+.x-tab-default-right-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-over, .x-nlg
+.x-tab-default-left-over, .x-nlg
+.x-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #deecfd;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #15498b;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #15498b;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #799ac4;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-active, .x-nlg
+.x-tab-default-left-active, .x-nlg
+.x-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #bbd2ef;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #d8dae4;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #bbd2ef #bbd2ef #99bce8;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-disabled, .x-nlg
+.x-tab-default-left-disabled, .x-nlg
+.x-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #99bce8;
+  background-color: #deecfd;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #cbdbef;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: linear-gradient(bottom, #dde8f5, #cbdbef);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: linear-gradient(left, #dde8f5, #cbdbef);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: linear-gradient(right, #dde8f5, #cbdbef);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 2, ../../sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 6, ../../sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 1, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8;
+}
+
+/* line 6, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb;
+}
+
+/* line 5, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,20927 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/*
+ * Although this file only contains a variable, all vars are included by default
+ * in application sass builds, so this needs to be in the rule file section
+ * to allow javascript inclusion filtering to disable it.
+ */
+/**
+ * @var {boolean} $include-rtl
+ * True to include right-to-left style rules.  This variable gets set to true automatically
+ * for rtl builds. You should not need to ever assign a value to this variable, however
+ * it can be used to suppress rtl-specific rules when they are not needed.  For example:
+ *     @if $include-rtl {
+ *         .x-rtl.foo {
+ *             margin-left: $margin-right;
+ *             margin-right: $margin-left;
+ *         }
+ *     }
+ * @member Global_CSS
+ */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-rtl > .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-ie6 .x-rtl .x-box-item,
+.x-quirks .x-ie .x-rtl .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-left {
+  text-align: right;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-right {
+  text-align: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-target {
+  left: auto;
+  right: 0;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-menu-after {
+  float: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-rtl.x-header-text-container {
+  -o-text-overflow: clip;
+  text-overflow: clip;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drag-ghost {
+  padding-left: 5px;
+  padding-right: 20px;
+}
+/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drop-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-rtl.x-fieldset-header .x-form-item,
+.x-rtl.x-fieldset-header .x-tool {
+  float: right;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-rtl.x-form-item .x-form-item-input-row {
+  position: relative;
+  right: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-rtl.x-form-file-input {
+  right: auto;
+  left: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  left: 0;
+  right: auto;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-right {
+  text-align: left;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-left {
+  text-align: right;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-rtl > .x-column {
+  float: right;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-rtl .x-column, .x-quirks .x-ie .x-rtl .x-column {
+  float: right;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-left {
+  right: auto;
+  left: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-right {
+  left: auto;
+  right: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #a3bad9;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-rtl.x-mask-msg-text {
+  padding: 5px 20px 5px 5px;
+  background-position: right center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #e0e8f3;
+  border-width: 1px;
+  height: 20px;
+  border-color: #6594cf;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #73a3e0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+  background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+  background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #396295;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #d1d1d1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: white;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-rtl.x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-rtl.x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-arrow-right {
+  background-position: left center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-split-right {
+  background-position: 0 center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-item {
+  margin: 0 0 0 2px;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #4c4c4c;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #98c8ff;
+  border-right-color: white;
+}
+
+/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar {
+  padding: 2px 2px 2px 0;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #99bce8;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #98c8ff;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #99bce8;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+/* line 476, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg-rtl.gif);
+}
+/* line 480, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg-rtl.gif);
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #99bce8;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #99bce8;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #dfe9f6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tl, .x-rtl.x-panel-header-default-framed-right-ml, .x-rtl.x-panel-header-default-framed-right-bl, .x-rtl.x-panel-header-default-framed-right-tr, .x-rtl.x-panel-header-default-framed-right-mr, .x-rtl.x-panel-header-default-framed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc, .x-rtl.x-panel-header-default-framed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tl, .x-rtl.x-panel-header-default-framed-left-ml, .x-rtl.x-panel-header-default-framed-left-bl, .x-rtl.x-panel-header-default-framed-left-tr, .x-rtl.x-panel-header-default-framed-left-mr, .x-rtl.x-panel-header-default-framed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc, .x-rtl.x-panel-header-default-framed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tl, .x-rtl.x-panel-header-default-framed-collapsed-right-ml, .x-rtl.x-panel-header-default-framed-collapsed-right-bl, .x-rtl.x-panel-header-default-framed-collapsed-right-tr, .x-rtl.x-panel-header-default-framed-collapsed-right-mr, .x-rtl.x-panel-header-default-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc, .x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #cbddf3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #cbddf3;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tl, .x-rtl.x-panel-header-default-framed-collapsed-left-ml, .x-rtl.x-panel-header-default-framed-collapsed-left-bl, .x-rtl.x-panel-header-default-framed-collapsed-left-tr, .x-rtl.x-panel-header-default-framed-collapsed-left-mr, .x-rtl.x-panel-header-default-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc, .x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #cbddf3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+  box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: #04408c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #678ebf;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #e9f2ff;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #8eaace;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #e9f2ff;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #d0def0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #c2d8f0;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #3e6aaa;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #a2b1c5;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  border-style: solid;
+  background: #dfe8f6;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1;
+  background-color: #ced9e7;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #ced9e7;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  background-color: #ced9e7;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-right-tl, .x-rtl.x-window-header-default-right-ml, .x-rtl.x-window-header-default-right-bl, .x-rtl.x-window-header-default-right-tr, .x-rtl.x-window-header-default-right-mr, .x-rtl.x-window-header-default-right-br {
+  background-image: url(images/window-header/window-header-default-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-left-tl, .x-rtl.x-window-header-default-left-ml, .x-rtl.x-window-header-default-left-bl, .x-rtl.x-window-header-default-left-tr, .x-rtl.x-window-header-default-left-mr, .x-rtl.x-window-header-default-left-br {
+  background-image: url(images/window-header/window-header-default-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-right-tl, .x-rtl.x-window-header-default-collapsed-right-ml, .x-rtl.x-window-header-default-collapsed-right-bl, .x-rtl.x-window-header-default-collapsed-right-tr, .x-rtl.x-window-header-default-collapsed-right-mr, .x-rtl.x-window-header-default-collapsed-right-br {
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-left-tl, .x-rtl.x-window-header-default-collapsed-left-ml, .x-rtl.x-window-header-default-collapsed-left-bl, .x-rtl.x-window-header-default-collapsed-left-tr, .x-rtl.x-window-header-default-collapsed-left-mr, .x-rtl.x-window-header-default-collapsed-left-br {
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: #04468c;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #698fb9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #7eadd9;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #ced9e7;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-rtl.x-message-box-info, .x-rtl.x-message-box-warning, .x-rtl.x-message-box-question, .x-rtl.x-message-box-error {
+  background-position: top left;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-after {
+  margin-left: 0;
+  margin-right: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-rtl.x-form-check-group-label {
+  margin: 0 0 5px 30px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-rtl .x-tool {
+  margin: 1px 0 0 3px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-trigger {
+  background-image: url(images/form/trigger-rtl.gif);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #7eadd9;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-color: #7eadd9;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger-rtl.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-search-trigger {
+  background-image: url(images/form/search-trigger-rtl.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-rtl.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last.gif);
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next.gif);
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev.gif);
+}
+/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #23427c;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: #233d6d;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+  background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+  background-image: linear-gradient(top, #edf4fd, #cde1f9);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: #ddecfe;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #8db2e3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #dae5f3;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #1b376c;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #1b376c;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #15428b;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #ddecfe;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #dae5f3;
+  border-style: solid;
+  border-color: #8db2e3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-rtl.x-form-trigger-wrap .x-form-date-trigger {
+  background-image: url(images/form/date-trigger-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #a3bae9;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #dfe8f6;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #dfe8f6;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #a3bae9;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-cell-special {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-dirty-cell {
+  background-image: url(images/grid/dirty-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header {
+  border-right: 0 none;
+  border-left: 1px solid #c5c5c5;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-position: right center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-rtl.x-column-header-text {
+  margin-right: 0;
+  margin-left: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-rtl.x-column-header-text,
+.x-column-header-sort-DESC .x-rtl.x-column-header-text {
+  padding-right: 0;
+  padding-left: 12px;
+  background-position: 0 center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #99bbe8;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title {
+  background-position: right center;
+  padding: 0 14px 0 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #3764a0;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #99bce8;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #d0d0d0 #ededed #d0d0d0;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-rtl.x-grid-inner-locked {
+  border-width: 0 0 0 1px;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-rtl.x-column-header-last {
+  border-left-width: 0!important;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last {
+  border-left: 0 none;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last {
+  border-left: 0 none;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #99bce8 !important;
+  border-bottom: 1px solid #99bce8 !important;
+  padding: 4px 0 4px 0;
+  background-color: #eaf1fb;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb {
+  margin-right: 0;
+  margin-left: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #eaf1fb;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #eaf1fb;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #99bce8;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-update-button {
+  margin-left: 2px;
+  margin-right: auto;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-cancel-button {
+  margin-right: 2px;
+  margin-left: auto;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item {
+  margin-left: 0;
+  margin-right: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #d9e7f8;
+  border-top-color: #f3f7fb;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #d9e7f8;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #dfe8f6;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu .x-menu-icon-separator {
+  left: auto;
+  right: 24px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-indent {
+  margin-left: 0;
+  margin-right: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #d9e8fb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+  background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+  background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+  border-color: #a9cbf5;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #d9e8fb repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-link {
+  padding: 0 30px 0 0;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-right-check-item-text {
+  padding-left: 22px;
+  padding-right: 0;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon-right {
+  right: auto;
+  left: 3px;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+a.x-rtl .x-menu-item-text {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-arrow {
+  left: 0;
+  right: auto;
+  background-image: url(images/menu/menu-parent-left.gif);
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow {
+  right: auto;
+  left: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-left, .x-rtl.x-tool-collapse-left {
+  background-position: 0 -165px;
+}
+/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-right, .x-rtl.x-tool-collapse-right {
+  background-position: 0 -180px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-left, .x-tool-over .x-rtl.x-tool-collapse-left {
+  background-position: -15px -165px;
+}
+/* line 308, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-right, .x-tool-over .x-rtl.x-tool-collapse-right {
+  background-position: -15px -180px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz {
+  padding-left: 0;
+  padding-right: 7px;
+  background-position: right -30px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-end {
+  padding-right: 0;
+  padding-left: 7px;
+  background-position: left -15px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-thumb {
+  margin-right: -7px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #deecfd;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #8db3e3;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #416da3;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: #416da3;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #8facd0;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  margin: 0 0 0 2px;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top, .x-nlg
+.x-tab-default-left, .x-nlg
+.x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #99bce8;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-right {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 0;
+  padding-right: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #e8f2ff;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: #416da3;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #94afd1;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over,
+.x-tab-default-left-over,
+.x-tab-default-right-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-over, .x-nlg
+.x-tab-default-left-over, .x-nlg
+.x-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #deecfd;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #15498b;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #15498b;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #799ac4;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-active, .x-nlg
+.x-tab-default-left-active, .x-nlg
+.x-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #deecfd;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #bbd2ef;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #c3b3b3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #c3b3b3;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #d8dae4;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #bbd2ef #bbd2ef #99bce8;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-disabled, .x-nlg
+.x-tab-default-left-disabled, .x-nlg
+.x-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #e1ecfa;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default .x-tab-close-btn {
+  right: auto;
+  left: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-closable .x-tab-wrap {
+  padding-right: 0px;
+  padding-left: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #99bce8;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-left {
+  padding-right: 0;
+  padding-left: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-right {
+  padding-left: 0;
+  padding-right: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #99bce8;
+  background-color: #deecfd;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-left {
+  border-width: 0 1px 0 0;
+}
+/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 1px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #cbdbef;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef);
+  background-image: linear-gradient(bottom, #dde8f5, #cbdbef);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(left, #dde8f5, #cbdbef);
+  background-image: linear-gradient(left, #dde8f5, #cbdbef);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(right, #dde8f5, #cbdbef);
+  background-image: linear-gradient(right, #dde8f5, #cbdbef);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+  margin-right: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 466, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 486, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+/* line 489, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 506, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 526, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-rtl.x-tree-expander {
+  background: url(images/tree/arrows-rtl.gif) no-repeat -48px center;
+}
+/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: -16px center;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-position: -32px center;
+}
+/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: 0 center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow {
+  background-image: url(images/tree/elbow-rtl.gif);
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end-rtl.gif);
+}
+/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus-rtl.gif);
+}
+/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus-rtl.gif);
+}
+/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus-rtl.gif);
+}
+/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus-rtl.gif);
+}
+/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line-rtl.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl-rtl.gif);
+}
+/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl-rtl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-elbow-img {
+  margin-right: 0;
+  margin-left: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf-rtl.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-rtl.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-open-rtl.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-checkbox {
+  margin-right: 0;
+  margin-left: 3px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-rtl.x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-node-text {
+  padding-left: 0;
+  padding-right: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 3, ../../sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more-left.gif) !important;
+}
+
+/* line 2, ../../sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 8, ../../sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-image: url(images/grid/grid3-hd-btn-left.gif);
+}
+
+/* line 6, ../../sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+/* line 24, ../../sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8;
+}
+
+/* line 6, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb;
+}
+
+/* line 5, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl>.x-box-item{right:0;left:auto}.x-ie6 .x-rtl .x-box-item,.x-quirks .x-ie .x-rtl .x-box-item{right:0;left:auto}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-rtl.x-btn-inner-left{text-align:right}.x-btn-inner-right{text-align:right}.x-rtl.x-btn-inner-right{text-align:left}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-rtl.x-box-target{left:auto;right:0}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-rtl.x-box-menu-after{float:left}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-rtl.x-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-rtl .x-dd-drag-ghost{padding-left:5px;padding-right:20px}.x-rtl .x-dd-drop-icon{left:auto;right:3px}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-rtl.x-fieldset-header .x-form-item,.x-rtl.x-fieldset-header .x-tool{float:right}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-rtl.x-form-item .x-form-item-input-row{position:relative;right:0}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-rtl.x-form-file-input{right:auto;left:-2px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-rtl.x-column-header-trigger{left:0;right:auto}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-rtl.x-column-header-align-right{text-align:left}.x-column-header-align-left{text-align:left}.x-rtl.x-column-header-align-left{text-align:right}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-rtl>.x-column{float:right}.x-ie6 .x-rtl .x-column,.x-quirks .x-ie .x-rtl .x-column{float:right}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-rtl.x-tab-bar .x-tab-bar-strip-left{right:auto;left:0}.x-tab-bar-strip-right{left:0}.x-rtl.x-tab-bar .x-tab-bar-strip-right{left:auto;right:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-rtl.x-tab-icon-el{left:auto;right:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-rtl.x-mask-msg-text{padding:5px 20px 5px 5px;background-position:right center}.x-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#396295;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#999}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#999}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#999}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-left .x-rtl.x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-rtl.x-btn-icon-el{background-position:left center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-rtl.x-btn-arrow-right{background-position:left center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-rtl.x-btn-split-right{background-position:0 center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-rtl.x-toolbar-item{margin:0 0 0 2px}.x-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x-rtl.x-toolbar{padding:2px 2px 2px 0}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#99bce8;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-nlg .x-rtl.x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg-rtl.gif)}.x-nlg .x-rtl.x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg-rtl.gif)}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#99bce8;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-framed-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-right-tl,.x-rtl.x-panel-header-default-framed-right-ml,.x-rtl.x-panel-header-default-framed-right-bl,.x-rtl.x-panel-header-default-framed-right-tr,.x-rtl.x-panel-header-default-framed-right-mr,.x-rtl.x-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-right-tc,.x-rtl.x-panel-header-default-framed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-left-bc{background-position:right -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-left-tl,.x-rtl.x-panel-header-default-framed-left-ml,.x-rtl.x-panel-header-default-framed-left-bl,.x-rtl.x-panel-header-default-framed-left-tr,.x-rtl.x-panel-header-default-framed-left-mr,.x-rtl.x-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-left-tc,.x-rtl.x-panel-header-default-framed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-collapsed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-right-tl,.x-rtl.x-panel-header-default-framed-collapsed-right-ml,.x-rtl.x-panel-header-default-framed-collapsed-right-bl,.x-rtl.x-panel-header-default-framed-collapsed-right-tr,.x-rtl.x-panel-header-default-framed-collapsed-right-mr,.x-rtl.x-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-right-tc,.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-collapsed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-collapsed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-left-tl,.x-rtl.x-panel-header-default-framed-collapsed-left-ml,.x-rtl.x-panel-header-default-framed-collapsed-left-bl,.x-rtl.x-panel-header-default-framed-collapsed-left-tr,.x-rtl.x-panel-header-default-framed-collapsed-left-mr,.x-rtl.x-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-left-tc,.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-framed-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-framed-collapsed-border-left{border-left-width:1px!important}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-tip-default-mc{background-color:#e9f2ff}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#8eaace}.x-tip-default .x-tool-img{background-color:#e9f2ff}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-default .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x-window-header-default .x-tool-img{background-color:#ced9e7}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-default-vertical .x-rtl.x-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-rtl.x-window-header-default-right-tl,.x-rtl.x-window-header-default-right-ml,.x-rtl.x-window-header-default-right-bl,.x-rtl.x-window-header-default-right-tr,.x-rtl.x-window-header-default-right-mr,.x-rtl.x-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-rtl.x-window-header-default-left-tl,.x-rtl.x-window-header-default-left-ml,.x-rtl.x-window-header-default-left-bl,.x-rtl.x-window-header-default-left-tr,.x-rtl.x-window-header-default-left-mr,.x-rtl.x-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-rtl.x-window-header-default-collapsed-right-tl,.x-rtl.x-window-header-default-collapsed-right-ml,.x-rtl.x-window-header-default-collapsed-right-bl,.x-rtl.x-window-header-default-collapsed-right-tr,.x-rtl.x-window-header-default-collapsed-right-mr,.x-rtl.x-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-rtl.x-window-header-default-collapsed-left-tl,.x-rtl.x-window-header-default-collapsed-left-ml,.x-rtl.x-window-header-default-collapsed-left-bl,.x-rtl.x-window-header-default-collapsed-left-tr,.x-rtl.x-window-header-default-collapsed-left-mr,.x-rtl.x-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#698fb9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#7eadd9}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#ced9e7;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-rtl.x-message-box-info,.x-rtl.x-message-box-warning,.x-rtl.x-message-box-question,.x-rtl.x-message-box-error{background-position:top left}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-rtl.x-field .x-form-cb-label-before{margin-right:0;margin-left:4px}.x-form-cb-label-after{margin-left:4px}.x-rtl.x-field .x-form-cb-label-after{margin-left:0;margin-right:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-rtl.x-form-check-group-label{margin:0 0 5px 30px}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,.x-fieldset-with-title .x-rtl .x-tool{margin:1px 0 0 3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-rtl.x-form-trigger-wrap .x-form-trigger{background-image:url(images/form/trigger-rtl.gif)}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-search-trigger{background-image:url(images/form/search-trigger-rtl.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-rtl.gif)}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last.gif)}.x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next.gif)}.x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev.gif)}.x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first.gif)}.x-item-disabled .x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:#ddecfe}.x-datepicker-selected{border-style:solid;border-color:#8db2e3}.x-datepicker-selected .x-datepicker-date{background-color:#dae5f3;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#ddecfe}.x-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-date-trigger{background-image:url(images/form/date-trigger-rtl.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#dfe8f6}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-rtl.x-grid-cell-special{border-right-width:0;border-left-width:1px}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-rtl.x-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.gif);background-position:right 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-rtl.x-grid-with-col-lines .x-grid-cell{border-right-width:0;border-left-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-rtl.x-column-header{border-right:0 none;border-left:1px solid #c5c5c5}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-rtl.x-column-header-trigger{background-position:right center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-align-right .x-rtl.x-column-header-text{margin-right:0;margin-left:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-rtl.x-column-header-text,.x-column-header-sort-DESC .x-rtl.x-column-header-text{padding-right:0;padding-left:12px;background-position:0 center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title{background-position:right center;padding:0 14px 0 0}.x-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-locked .x-rtl.x-grid-inner-locked{border-width:0 0 0 1px}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-grid-inner-locked .x-rtl.x-column-header-last{border-left-width:0!important}.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last{border-left:0 none}.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last{border-left:0 none}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb{margin-right:0;margin-left:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#99bce8}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-rtl.x-row-editor-update-button{margin-left:2px;margin-right:auto}.x-rtl.x-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#d9e7f8}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#dfe8f6}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-rtl.x-menu .x-menu-icon-separator{left:auto;right:24px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-rtl.x-menu-item-indent{margin-left:0;margin-right:30px}.x-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-rtl.x-menu-item-link{padding:0 30px 0 0}.x-right-check-item-text{padding-right:22px}.x-rtl.x-right-check-item-text{padding-left:22px;padding-right:0}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-rtl.x-menu-item-icon{left:auto;right:3px}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon{left:auto;right:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-rtl.x-menu-item-icon-right{right:auto;left:3px}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}a.x-rtl .x-menu-item-text{margin-right:0;margin-left:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-rtl.x-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.gif)}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow{right:auto;left:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-rtl.x-tool-expand-left,.x-rtl.x-tool-collapse-left{background-position:0 -165px}.x-rtl.x-tool-expand-right,.x-rtl.x-tool-collapse-right{background-position:0 -180px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-left,.x-tool-over .x-rtl.x-tool-collapse-left{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-right,.x-tool-over .x-rtl.x-tool-collapse-right{background-position:-15px -180px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-rtl.x-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x-rtl.x-slider-horz .x-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x-rtl.x-slider-horz .x-slider-thumb{margin-right:-7px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#8facd0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-tab-default-left{margin:0 2px 0 0}.x-rtl.x-tab-default-left{margin:0 0 0 2px}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-rtl.x-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-rtl.x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-rtl.x-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-rtl.x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-rtl.x-tab-default-icon-text-left .x-tab-inner{padding-left:0;padding-right:20px}.x-tab-default-over{background-color:#e8f2ff}.x-tab-default-over .x-tab-glyph{color:#416da3}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#94afd1}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#deecfd}.x-tab-default-active .x-tab-inner{color:#15498b}.x-tab-default-active .x-tab-glyph{color:#15498b}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#799ac4}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#d8dae4}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-rtl.x-tab-default .x-tab-close-btn{right:auto;left:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-rtl.x-tab-default-closable .x-tab-wrap{padding-right:0;padding-left:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#99bce8}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-default-left{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-default-right{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-rtl.x-tab-bar-body-default-left{padding-right:0;padding-left:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-rtl.x-tab-bar-body-default-right{padding-left:0;padding-right:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-strip-default-left{border-width:0 1px 0 0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left{border-width:1px 1px 1px 0}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-strip-default-right{border-width:0 0 0 1px}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right{border-width:1px 0 1px 1px}.x-tab-bar-default{background-color:#cbdbef}.x-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-rtl.x-tab-bar-default-right .x-box-scroller{margin-left:0;margin-right:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-arrows .x-rtl.x-tree-expander{background:url(images/tree/arrows-rtl.gif) no-repeat -48px center}.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander{background-position:0 center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-lines .x-rtl.x-tree-elbow{background-image:url(images/tree/elbow-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-no-row-lines .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-rtl.x-tree-elbow-img{margin-right:0;margin-left:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-rtl.x-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-rtl.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-rtl.x-tree-checkbox{margin-right:0;margin-left:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-tree-loading .x-rtl.x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-rtl.x-tree-node-text{padding-left:0;padding-right:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-rtl.x-toolbar-more-icon{background-image:url(images/toolbar/more-left.gif)!important}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-rtl.x-column-header-trigger{background-image:url(images/grid/grid3-hd-btn-left.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-classic/ext-theme-classic-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-btn-inner-right{text-align:right}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-left{text-align:left}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-tab-bar-strip-right{left:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#396295;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#999}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#999}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#999}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#99bce8;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#99bce8;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-tip-default-mc{background-color:#e9f2ff}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#8eaace}.x-tip-default .x-tool-img{background-color:#e9f2ff}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x-window-header-default .x-tool-img{background-color:#ced9e7}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#698fb9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#7eadd9}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#ced9e7;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:#ddecfe}.x-datepicker-selected{border-style:solid;border-color:#8db2e3}.x-datepicker-selected .x-datepicker-date{background-color:#dae5f3;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#ddecfe}.x-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#dfe8f6}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#99bce8}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#d9e7f8}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#dfe8f6}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-right-check-item-text{padding-right:22px}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#8facd0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-tab-default-left{margin:0 2px 0 0}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-tab-default-over{background-color:#e8f2ff}.x-tab-default-over .x-tab-glyph{color:#416da3}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#94afd1}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#deecfd}.x-tab-default-active .x-tab-inner{color:#15498b}.x-tab-default-active .x-tab-glyph{color:#15498b}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#799ac4}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#d8dae4}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#99bce8}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-tab-bar-default{background-color:#cbdbef}.x-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/Readme.md
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/Readme.md	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/Readme.md	(revision 18732)
@@ -0,0 +1,3 @@
+# ext-theme-gray/resources
+
+This folder contains static resources (typically an `"images"` folder as well).
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-debug.css	(revision 18732)
@@ -0,0 +1,19529 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-gray */
+/* including package ext-theme-gray */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #bcb0b0;
+  background-image: none;
+  background-color: #e0e0e0;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #b3b3b3;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #f1f1f1;
+  border-width: 1px;
+  height: 20px;
+  border-color: #8e8e8e;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #ababab;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d1d1d1), color-stop(50%, #b8b8b8), color-stop(51%, #ababab), color-stop(100%, #9e9e9e));
+  background-image: -webkit-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: -moz-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: -o-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #5d5d5d;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: black;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #aca899;
+  border-right-color: white;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #bcb0b0;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d8d8d8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e6e6e6), color-stop(100%, #efefef));
+  background-image: -webkit-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -moz-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -o-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: linear-gradient(top, #e6e6e6, #efefef);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #aca899;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #d0d0d0;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #d0d0d0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #d0d0d0;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #ececec -1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec -1px 0 0px 0 inset;
+  box-shadow: #ececec -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #ececec 0 -1px 0px 0 inset;
+  -moz-box-shadow: #ececec 0 -1px 0px 0 inset;
+  box-shadow: #ececec 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #858282;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #d0d0d0;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #d0d0d0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #f1f1f1;
+  border-color: #d0d0d0;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #f1f1f1;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #f1f1f1;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #858282;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #868686;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cccccc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #cccccc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #868686;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #cccccc;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #d0d0d0;
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #dfdfdf;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #dfdfdf;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d6d6d6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #d6d6d6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d6d6d6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #d6d6d6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #d0d0d0;
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #dfdfdf;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #dfdfdf;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #a9a9a9;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #bcb1b0;
+  border-width: 1px;
+  border-style: solid;
+  background: #e0e0e0;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a9a9a9;
+  zoom: 1;
+  background-color: #e8e8e8;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #e8e8e8;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #e8e8e8;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: #333333;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #8d8d8d;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #a1a1a1;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #e8e8e8;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #d5d5d5;
+  border-top: 1px dotted #b4b4b4;
+  border-bottom: 1px dotted #b4b4b4;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #a1a1a1;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-color: #a1a1a1;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #d3d3d3;
+  border-color: #b3abaa;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #e0e0e0;
+  border-color: #bfb8b8;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #585858;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #6f6f6f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #777777), color-stop(100%, #656565));
+  background-image: -webkit-linear-gradient(top, #777777, #656565);
+  background-image: -moz-linear-gradient(top, #777777, #656565);
+  background-image: -o-linear-gradient(top, #777777, #656565);
+  background-image: linear-gradient(top, #777777, #656565);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #6f6f6f;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: #3e3e3e;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #e9e9e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f1f1f1), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: linear-gradient(top, #f1f1f1, #dfdfdf);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: transparent;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #b2aaa9;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #d8d8d8;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #e9e9e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdfdf), color-stop(49%, #d6d6d6), color-stop(51%, #d0d0d0), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #585858;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #585858;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #523a39;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: transparent;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #d8d8d8;
+  border-style: solid;
+  border-color: #b2aaa9;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #d0d0d0;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #bfb8b8;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #bfb8b8;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #e0e0e0;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e0e0e0;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #bfb8b8;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #d4b7b7;
+  background-image: none;
+  background-color: #e0e0e0;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e0e0e0), color-stop(100%, #d3d3d3));
+  background-image: -webkit-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -moz-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -o-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: linear-gradient(left, #e0e0e0, #d3d3d3);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #d0d0d0;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #f0f0f0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: linear-gradient(top, #ffffff, #f0f0f0);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #bcb1b0;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #616161;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #d0d0d0;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #d0d0d0 !important;
+  border-bottom: 1px solid #d0d0d0 !important;
+  padding: 4px 0 4px 0;
+  background-color: #ebe6e6;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ebe6e6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #ebe6e6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ebe6e6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #ebe6e6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #d0d0d0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #e5e5e5;
+  border-top-color: #ececec;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #d0d0d0;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #e5e5e5;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #e5e5e5;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #e0e0e0;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #e6e6e6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dcdcdc));
+  background-image: -webkit-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: -moz-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: -o-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: linear-gradient(top, #eeeeee, #dcdcdc);
+  border-color: #9d9d9d;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #e6e6e6 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(bottom, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #b5b5b5;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #6f6f6f;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: #6f6f6f;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #acacac;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top, .x-nlg
+.x-tab-default-left, .x-nlg
+.x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(bottom, #dcdcdc, #eaeaea);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #f2eeee;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: #6f6f6f;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #b0aeae;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over,
+.x-tab-default-left-over,
+.x-tab-default-right-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: linear-gradient(top, #ffffff, #f0f0f0);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-over, .x-nlg
+.x-tab-default-left-over, .x-nlg
+.x-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: linear-gradient(bottom, #ffffff, #f0f0f0);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #eaeaea;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #333333;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #333333;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #8e8e8e;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #eaeaea;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: linear-gradient(top, #ffffff, #eaeaea);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-active, .x-nlg
+.x-tab-default-left-active, .x-nlg
+.x-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #eaeaea;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: linear-gradient(bottom, #ffffff, #eaeaea);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #dadada;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #b7b7b7;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #b7b7b7;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #dddddd;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #dadada #dadada #d0d0d0;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #d0d0d0 #dadada #dadada #dadada;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  background-image: none;
+  background-color: #eeeeee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #f4f4f4));
+  background-image: -webkit-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: -moz-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: -o-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: linear-gradient(top, #eeeeee, #f4f4f4);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-disabled, .x-nlg
+.x-tab-default-left-disabled, .x-nlg
+.x-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #eeeeee;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #eeeeee), color-stop(100%, #f4f4f4));
+  background-image: -webkit-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: -moz-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: -o-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: linear-gradient(bottom, #eeeeee, #f4f4f4);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #eeeeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #eeeeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #d0d0d0;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-color: #eaeaea;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #d2d2d2;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: linear-gradient(top, #dfdede, #d2d2d2);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: linear-gradient(bottom, #dfdede, #d2d2d2);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: linear-gradient(left, #dfdede, #d2d2d2);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: linear-gradient(right, #dfdede, #d2d2d2);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #e5e5e5;
+  -moz-box-shadow: inset 0 0 0 0 #e5e5e5;
+  box-shadow: inset 0 0 0 0 #e5e5e5;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #ececec;
+  -moz-box-shadow: inset 0 1px 0 0 #ececec;
+  box-shadow: inset 0 1px 0 0 #ececec;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,20929 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-classic */
+/* including package ext-theme-gray */
+/* including package ext-theme-gray */
+/* including package ext-theme-classic */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/*
+ * Although this file only contains a variable, all vars are included by default
+ * in application sass builds, so this needs to be in the rule file section
+ * to allow javascript inclusion filtering to disable it.
+ */
+/**
+ * @var {boolean} $include-rtl
+ * True to include right-to-left style rules.  This variable gets set to true automatically
+ * for rtl builds. You should not need to ever assign a value to this variable, however
+ * it can be used to suppress rtl-specific rules when they are not needed.  For example:
+ *     @if $include-rtl {
+ *         .x-rtl.foo {
+ *             margin-left: $margin-right;
+ *             margin-right: $margin-left;
+ *         }
+ *     }
+ * @member Global_CSS
+ */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-rtl > .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-ie6 .x-rtl .x-box-item,
+.x-quirks .x-ie .x-rtl .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-left {
+  text-align: right;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-right {
+  text-align: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-target {
+  left: auto;
+  right: 0;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-menu-after {
+  float: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-rtl.x-header-text-container {
+  -o-text-overflow: clip;
+  text-overflow: clip;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drag-ghost {
+  padding-left: 5px;
+  padding-right: 20px;
+}
+/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drop-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.gif);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.gif);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.gif);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-rtl.x-fieldset-header .x-form-item,
+.x-rtl.x-fieldset-header .x-tool {
+  float: right;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-rtl.x-form-item .x-form-item-input-row {
+  position: relative;
+  right: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-rtl.x-form-file-input {
+  right: auto;
+  left: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  left: 0;
+  right: auto;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-right {
+  text-align: left;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-left {
+  text-align: right;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-rtl > .x-column {
+  float: right;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-rtl .x-column, .x-quirks .x-ie .x-rtl .x-column {
+  float: right;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-left {
+  right: auto;
+  left: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-right {
+  left: auto;
+  right: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background: #cccccc;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 2px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #bcb0b0;
+  background-image: none;
+  background-color: #e0e0e0;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0 5px;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #b3b3b3;
+  background-color: #eeeeee;
+  color: #222222;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 5px 5px 5px 20px;
+  background-image: url(images/grid/loading.gif);
+  background-repeat: no-repeat;
+  background-position: 0 center;
+}
+
+/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-rtl.x-mask-msg-text {
+  padding: 5px 20px 5px 5px;
+  background-position: right center;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #f1f1f1;
+  border-width: 1px;
+  height: 20px;
+  border-color: #8e8e8e;
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 18px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #ababab;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d1d1d1), color-stop(50%, #b8b8b8), color-stop(51%, #ababab), color-stop(100%, #9e9e9e));
+  background-image: -webkit-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: -moz-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: -o-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+  background-image: linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-nlg .x-progress-default .x-progress-bar-default {
+  background: repeat-x;
+  background-image: url(images/progress/progress-default-bg.gif);
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: white;
+  font-weight: bold;
+  font-size: 11px;
+  text-align: center;
+  line-height: 18px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #5d5d5d;
+  line-height: 18px;
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-progress-default .x-progress-bar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)";
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-btn-inner,
+.x-btn-default-small-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-btn-inner,
+.x-btn-default-medium-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #bbbbbb;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #f8f8f8;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #959595;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-btn-inner,
+.x-btn-default-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 4px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 20px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 4px;
+  padding-right: 20px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 20px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 20px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 4px;
+  padding-left: 20px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 28px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 28px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 28px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 28px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 28px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-color: transparent;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/arrow.gif);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 12px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 12px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 12px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #333333;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #999999;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 36px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 3px;
+  padding-right: 36px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 36px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 36px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 3px;
+  padding-left: 36px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline.gif);
+  padding-right: 14px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-noline-rtl.gif);
+  padding-right: 0;
+  padding-left: 14px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-b-noline.gif);
+  padding-bottom: 14px;
+}
+
+/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-right {
+  background-image: url(images/button/s-arrow-o.gif);
+}
+/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right {
+  background-image: url(images/button/s-arrow-o-rtl.gif);
+}
+/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-btn-split-bottom {
+  background-image: url(images/button/s-arrow-bo.gif);
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-rtl.x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-rtl.x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-arrow-right {
+  background-position: left center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-split-right {
+  background-position: 0 center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border-style: solid;
+  padding: 2px 0 2px 2px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 2px 0 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-item {
+  margin: 0 0 0 2px;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: black;
+  line-height: 16px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 2px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 1px;
+  border-left-color: #aca899;
+  border-right-color: white;
+}
+
+/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar {
+  padding: 2px 2px 2px 0;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0;
+  margin: 3px 0 0;
+  padding: 2px 0 2px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.gif) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: #bcb0b0;
+  border-width: 1px;
+  background-image: none;
+  background-color: #d8d8d8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e6e6e6), color-stop(100%, #efefef));
+  background-image: -webkit-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -moz-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -o-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: linear-gradient(top, #e6e6e6, #efefef);
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url(images/toolbar/toolbar-default-bg.gif) !important;
+  background-repeat: repeat-x;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-toolbar-default:after {
+  display: none;
+  content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.gif);
+  background-position: -14px 0;
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.gif);
+  width: 14px;
+  height: 22px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0 0 1px;
+  margin-top: 0;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -14px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 2px 0 2px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 2px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 2px;
+  border-style: solid none;
+  border-width: 1px 0;
+  border-top-color: #aca899;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 2px 0 2px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #d0d0d0;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border: 1px solid #d0d0d0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #d0d0d0;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(left, #f0f0f0, #d7d7d7);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background: url(images/panel-header/panel-header-default-top-bg.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background: url(images/panel-header/panel-header-default-bottom-bg.gif);
+}
+/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg.gif) top right;
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg.gif) top right;
+}
+/* line 476, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-left {
+  background: url(images/panel-header/panel-header-default-left-bg-rtl.gif);
+}
+/* line 480, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nlg .x-rtl.x-panel-header-default-right {
+  background: url(images/panel-header/panel-header-default-right-bg-rtl.gif);
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-top {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-right {
+  -webkit-box-shadow: #ececec -1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec -1px 0 0px 0 inset;
+  box-shadow: #ececec -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-bottom {
+  -webkit-box-shadow: #ececec 0 -1px 0px 0 inset;
+  -moz-box-shadow: #ececec 0 -1px 0px 0 inset;
+  box-shadow: #ececec 0 -1px 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-left {
+  -webkit-box-shadow: #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #858282;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #d0d0d0;
+  padding: 4px;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border: 1px solid #d0d0d0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 4px 5px 4px 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 5px 6px 4px 6px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 5px 6px 4px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical {
+  padding: 5px 4px 5px 4px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical-noborder {
+  padding: 6px 4px 6px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: #f1f1f1;
+  border-color: #d0d0d0;
+  color: black;
+  font-size: 12px;
+  font-size: normal;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #f1f1f1;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: #f1f1f1;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 1px 2px 4px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(left, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #d7d2d2;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tl, .x-rtl.x-panel-header-default-framed-right-ml, .x-rtl.x-panel-header-default-framed-right-bl, .x-rtl.x-panel-header-default-framed-right-tr, .x-rtl.x-panel-header-default-framed-right-mr, .x-rtl.x-panel-header-default-framed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tc, .x-rtl.x-panel-header-default-framed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 4px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(left, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #d7d2d2;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tl, .x-rtl.x-panel-header-default-framed-left-ml, .x-rtl.x-panel-header-default-framed-left-bl, .x-rtl.x-panel-header-default-framed-left-tr, .x-rtl.x-panel-header-default-framed-left-mr, .x-rtl.x-panel-header-default-framed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tc, .x-rtl.x-panel-header-default-framed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(left, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);
+  background-position: right 0;
+  background-color: #d7d2d2;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);
+  background-position: right 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);
+  background-position: 0 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: right 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: right -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tl, .x-rtl.x-panel-header-default-framed-collapsed-right-ml, .x-rtl.x-panel-header-default-framed-collapsed-right-bl, .x-rtl.x-panel-header-default-framed-collapsed-right-tr, .x-rtl.x-panel-header-default-framed-collapsed-right-mr, .x-rtl.x-panel-header-default-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tc, .x-rtl.x-panel-header-default-framed-collapsed-right-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);
+  background-position: 0 bottom;
+  background-color: #d7d2d2;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);
+  background-position: 0 bottom;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 2px 1px 2px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7);
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(left, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(left, #f0f0f0, #d7d7d7);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);
+  background-position: left 0;
+  background-color: #d7d2d2;
+}
+
+/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);
+  background-position: left 0;
+}
+/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4;
+}
+
+/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 0;
+}
+
+/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: 0 -4px;
+}
+
+/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -8px;
+}
+
+/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: 0 -12px;
+}
+
+/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: -4px 0;
+}
+
+/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right 0;
+}
+
+/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: left 0;
+}
+
+/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: left -4px;
+}
+
+/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: right 0;
+}
+
+/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: right -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tl, .x-rtl.x-panel-header-default-framed-collapsed-left-ml, .x-rtl.x-panel-header-default-framed-collapsed-left-bl, .x-rtl.x-panel-header-default-framed-collapsed-left-tr, .x-rtl.x-panel-header-default-framed-collapsed-left-mr, .x-rtl.x-panel-header-default-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-x;
+}
+
+/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tc, .x-rtl.x-panel-header-default-framed-collapsed-left-bc {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #d7d2d2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2);
+}
+
+/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-top {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-right {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset;
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-bottom {
+  -webkit-box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-left {
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #858282;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #868686;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cccccc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #cccccc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #868686;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-color: #cccccc;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: #2a2a2a;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #a1311f;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-color: white;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: #2a2a2a;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.gif);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #d0d0d0;
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #dfdfdf;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-color: #dfdfdf;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 0;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d6d6d6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: #d6d6d6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d6d6d6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: #d6d6d6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -4px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -6px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -8px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -10px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -2px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 2px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 2px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 2px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 2px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #d0d0d0;
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px;
+  padding: 1px 0;
+  line-height: 15px;
+  background: #dfdfdf;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-color: #dfdfdf;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 15px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 0;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #a9a9a9;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #bcb1b0;
+  border-width: 1px;
+  border-style: solid;
+  background: #e0e0e0;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a9a9a9;
+  zoom: 1;
+  background-color: #e8e8e8;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #e8e8e8;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #e8e8e8;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  background-color: #e8e8e8;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: #333333;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px;
+  padding: 0 2px 1px;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-right-tl, .x-rtl.x-window-header-default-right-ml, .x-rtl.x-window-header-default-right-bl, .x-rtl.x-window-header-default-right-tr, .x-rtl.x-window-header-default-right-mr, .x-rtl.x-window-header-default-right-br {
+  background-image: url(images/window-header/window-header-default-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-left-tl, .x-rtl.x-window-header-default-left-ml, .x-rtl.x-window-header-default-left-bl, .x-rtl.x-window-header-default-left-tr, .x-rtl.x-window-header-default-left-mr, .x-rtl.x-window-header-default-left-br {
+  background-image: url(images/window-header/window-header-default-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 1px 0 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-right-tl, .x-rtl.x-window-header-default-collapsed-right-ml, .x-rtl.x-window-header-default-collapsed-right-bl, .x-rtl.x-window-header-default-collapsed-right-tr, .x-rtl.x-window-header-default-collapsed-right-mr, .x-rtl.x-window-header-default-collapsed-right-br {
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #e8e8e8;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-left-tl, .x-rtl.x-window-header-default-collapsed-left-ml, .x-rtl.x-window-header-default-collapsed-left-bl, .x-rtl.x-window-header-default-collapsed-left-tr, .x-rtl.x-window-header-default-collapsed-left-mr, .x-rtl.x-window-header-default-collapsed-left-br {
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-top {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-right {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+}
+
+/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-bottom {
+  -webkit-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-left {
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+}
+
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: #333333;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #8d8d8d;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 0 2px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title {
+  margin: 0 2px 0 0;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title {
+  margin: 2px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 2px;
+}
+/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 2px 0 0;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 2px 0 0;
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 2px;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 2px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 2px 0;
+}
+
+/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-collapsed .x-window-header {
+  border-width: 1px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.gif);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 3px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 1px;
+  background-image: url(images/form/exclamation.gif);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-toolbar-item .x-form-item-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 1px 3px 2px 3px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background-image: url(images/form/text-bg.gif);
+  height: 22px;
+  line-height: 17px;
+}
+/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-field-toolbar .x-form-text {
+  height: 20px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 17px;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-field-toolbar .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #a1a1a1;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+  background-image: url(images/form/text-bg.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field-body {
+  height: 20px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-toolbar-item .x-form-display-field {
+  margin-top: 4px;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: #e8e8e8;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-rtl.x-message-box-info, .x-rtl.x-message-box-warning, .x-rtl.x-message-box-question, .x-rtl.x-message-box-error {
+  background-position: top left;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.gif);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 22px;
+}
+/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-wrap {
+  height: 20px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb {
+  margin-top: 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -13px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -13px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -13px -13px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 12px/14px tahoma, arial, verdana, sans-serif;
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-toolbar-item .x-form-cb-label {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-after {
+  margin-left: 0;
+  margin-right: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cc3300;
+  background-image: url(images/grid/invalid_line.gif);
+  background-repeat: repeat-x;
+  background-position: bottom;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #d5d5d5;
+  border-top: 1px dotted #b4b4b4;
+  border-bottom: 1px dotted #b4b4b4;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-rtl.x-form-check-group-label {
+  margin: 0 0 5px 30px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  padding: 1px 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-rtl .x-tool {
+  margin: 1px 0 0 3px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/radio.gif) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -13px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -13px -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.gif);
+  width: 17px;
+  border-width: 0 0 1px;
+  border-color: #b5b8c8;
+  border-style: solid;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-trigger {
+  background-image: url(images/form/trigger-rtl.gif);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 17px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-color: #a1a1a1;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-color: #a1a1a1;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.gif);
+}
+
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger-rtl.gif);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.gif);
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-search-trigger {
+  background-image: url(images/form/search-trigger-rtl.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 20px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.gif);
+  background-color: white;
+  width: 17px;
+  height: 11px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-rtl.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item div.x-form-spinner-up,
+.x-toolbar-item div.x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+  height: 10px;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-spinner-down {
+  background-position: 0 -10px;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px;
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px;
+}
+/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.gif);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.gif);
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url(images/grid/refresh-disabled.gif);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last.gif);
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next.gif);
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev.gif);
+}
+/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first.gif);
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last-disabled.gif);
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next-disabled.gif);
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev-disabled.gif);
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-item-disabled .x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first-disabled.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 3px;
+  line-height: 20px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #d3d3d3;
+  border-color: #b3abaa;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #e0e0e0;
+  border-color: #bfb8b8;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #585858;
+  background-color: white;
+  width: 177px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 3px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #6f6f6f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #777777), color-stop(100%, #656565));
+  background-image: -webkit-linear-gradient(top, #777777, #656565);
+  background-image: -moz-linear-gradient(top, #777777, #656565);
+  background-image: -o-linear-gradient(top, #777777, #656565);
+  background-image: linear-gradient(top, #777777, #656565);
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 15px;
+  height: 15px;
+  top: 6px;
+  cursor: pointer;
+  background-color: #6f6f6f;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/shared/right-btn.gif);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/shared/left-btn.gif);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: white;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/button/s-arrow-light.gif);
+  padding-right: 12px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 25px;
+  color: #3e3e3e;
+  font: normal 10px tahoma, arial, verdana, sans-serif;
+  text-align: right;
+  border-width: 0 0 1px;
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #e9e9e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f1f1f1), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f1f1f1, #dfdfdf);
+  background-image: linear-gradient(top, #f1f1f1, #dfdfdf);
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 19px;
+  padding: 0 7px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 4px 0 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 18px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: transparent;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #b2aaa9;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #d8d8d8;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #aaaaaa;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: #bbbbbb;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 4px 0;
+  border-width: 1px 0 0;
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #e9e9e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdfdf), color-stop(49%, #d6d6d6), color-stop(51%, #d0d0d0), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 2px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 177px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #585858;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #585858;
+  border-style: solid;
+  width: 87px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 43px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 88px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 4px;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: #523a39;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 16px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: transparent;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #d8d8d8;
+  border-style: solid;
+  border-color: #b2aaa9;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 27px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 44px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 15px;
+  width: 15px;
+  cursor: pointer;
+  margin-top: 6px;
+  background-color: white;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -120px;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: -15px -120px;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/tools/tool-sprites.gif);
+  background-position: 0 -105px;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: -15px -105px;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 22px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 3px;
+}
+
+/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url(images/datepicker/datepicker-header-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url(images/datepicker/datepicker-footer-bg.gif);
+  background-repeat: repeat-x;
+  background-position: top left;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-datepicker-footer:after {
+  display: none;
+  content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.gif);
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-rtl.x-form-trigger-wrap .x-form-date-trigger {
+  background-image: url(images/form/date-trigger-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 18px;
+  height: 18px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 12px;
+  height: 12px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 10px;
+  border-color: #aca899;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.gif);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #d0d0d0;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #dddddd;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #bfb8b8;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #bfb8b8;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #efefef;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #efefef;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #e0e0e0;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: dotted;
+  border-bottom-color: #464646;
+  border-bottom-width: 1px;
+}
+/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-table .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px dotted #464646;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e0e0e0;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #efefef;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #dddddd;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: dotted;
+  border-top-color: #bfb8b8;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body .x-grid-table-focused-first {
+  border-top: 1px dotted #464646;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 3px 6px 4px 6px;
+}
+
+/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner {
+  padding-top: 2px;
+  padding-bottom: 3px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+  border-right-width: 1px;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(top, #f6f6f6, #e9e9e9);
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+  /*<if slicer>*/
+  /*</if slicer>*/
+  /* */
+}
+/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right-color: #ededed #d4b7b7;
+  background-image: none;
+  background-color: #e0e0e0;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e0e0e0), color-stop(100%, #d3d3d3));
+  background-image: -webkit-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -moz-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -o-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: linear-gradient(left, #e0e0e0, #d3d3d3);
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-image: url(images/grid/cell-special-bg.gif);
+}
+/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url(images/grid/cell-special-selected-bg.gif);
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)";
+}
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-cell-special .x-grid-cell-special-selected:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)";
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-cell-special {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-dirty-cell {
+  background-image: url(images/grid/dirty-rtl.gif);
+  background-position: right 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #b8cfee;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.gif);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.gif);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #d0d0d0;
+  border-bottom-color: #c5c5c5;
+  background-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: #c5c5c5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.gif);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.gif);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid #c5c5c5;
+  color: black;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header {
+  border-right: 0 none;
+  border-left: 1px solid #c5c5c5;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 3px 6px 5px 6px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 4px 6px 5px 6px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #f0f0f0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: linear-gradient(top, #ffffff, #f0f0f0);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background-image: url(images/grid/column-header-bg.gif);
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background-image: url(images/grid/column-header-over-bg.gif);
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: transparent;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: transparent;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 14px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: 0 center;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-position: right center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 9px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-rtl.x-column-header-text {
+  margin-right: 0;
+  margin-left: 9px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 12px;
+  background-position: right center;
+}
+
+/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-rtl.x-column-header-text,
+.x-column-header-sort-DESC .x-rtl.x-column-header-text {
+  padding-right: 0;
+  padding-left: 12px;
+  background-position: 0 center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.gif);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.gif);
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-column-header-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 2px 2px 2px 2px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 4px 6px 3px 6px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 13px;
+  height: 13px;
+  background: url(images/form/checkbox.gif) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 3px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 2px 0;
+  border-style: solid;
+  border-color: #bcb1b0;
+  padding: 10px 4px 4px 4px;
+  background: white;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.gif);
+  padding: 0 0 0 14px;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title {
+  background-position: right center;
+  padding: 0 14px 0 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #616161;
+  font: bold 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.gif);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 5px 6px 5px 6px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody {
+  padding-top: 6px;
+  padding-bottom: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #c5c5c5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #d0d0d0;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed #c6c6c6 #ededed #c6c6c6;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-rtl.x-grid-inner-locked {
+  border-width: 0 0 0 1px;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-rtl.x-column-header-last {
+  border-left-width: 0!important;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last {
+  border-left: 0 none;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last {
+  border-left: 0 none;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.gif);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.gif);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 1px 5px 2px 5px;
+  height: 20px;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-text {
+  height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 4px;
+  padding-right: 4px;
+}
+/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-trigger {
+  height: 20px;
+}
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  height: 10px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb {
+  margin-top: 4px;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  height: 20px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 20px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  padding: 2px 6px 3px 6px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 2px 2px 2px 2px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 1px 0 1px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 2px 5px 3px 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 2px 1px 2px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 1px 4px 2px 4px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #d0d0d0 !important;
+  border-bottom: 1px solid #d0d0d0 !important;
+  padding: 4px 0 4px 0;
+  background-color: #ebe6e6;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb {
+  margin-right: 0;
+  margin-left: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ebe6e6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #ebe6e6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 4px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ebe6e6;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #ebe6e6;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-4-4-4-4;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 0px 0px 4px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 29px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 29px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #d0d0d0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 2px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-update-button {
+  margin-left: 2px;
+  margin-right: auto;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-cancel-button {
+  margin-right: 2px;
+  margin-left: auto;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item {
+  margin-left: 0;
+  margin-right: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 6px 7px 5px 7px;
+}
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander {
+  padding-top: 5px;
+  padding-bottom: 4px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 9px;
+  height: 9px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.gif);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.gif);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */
+.x-grid-cell-inner-property-name {
+  background-image: url(images/grid/property-cell-bg.gif);
+  background-repeat: no-repeat;
+  background-position: -16px 2px;
+  padding-left: 12px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: black;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #e5e5e5;
+  border-top-color: #ececec;
+  padding: 4px 5px 5px 5px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #d0d0d0;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #e5e5e5;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -255px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -240px;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-collapse-top,
+.x-accordion-hd .x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -255px;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-over .x-tool-expand-top,
+.x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position: -15px -240px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-color: #e5e5e5;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -18px;
+  width: 5px;
+  height: 35px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -18px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.gif);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.gif);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.gif);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #e0e0e0;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: #f0f0f0;
+  padding: 2px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 24px;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu .x-menu-icon-separator {
+  left: auto;
+  right: 24px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  padding: 1px;
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 30px;
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-indent {
+  margin-left: 0;
+  margin-right: 30px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #e6e6e6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dcdcdc));
+  background-image: -webkit-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: -moz-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: -o-linear-gradient(top, #eeeeee, #dcdcdc);
+  background-image: linear-gradient(top, #eeeeee, #dcdcdc);
+  border-color: #9d9d9d;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  border-width: 1px;
+  border-style: solid;
+  padding: 0;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #e6e6e6 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 22px;
+  padding: 0 0 0 30px;
+  display: inline-block;
+}
+
+/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-link {
+  padding: 0 30px 0 0;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-right-check-item-text {
+  padding-left: 22px;
+  padding-right: 0;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #222222;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #898989;
+}
+
+/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-menu-item-icon {
+  top: 3px;
+  left: 2px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 2px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 3px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon-right {
+  right: auto;
+  left: 3px;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+a.x-rtl .x-menu-item-text {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.gif);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.gif);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.gif);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 7px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.gif);
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-menu-item-arrow {
+  top: 6px;
+  right: -1px;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-arrow {
+  left: 0;
+  right: auto;
+  background-image: url(images/menu/menu-parent-left.gif);
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,
+.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow {
+  right: auto;
+  left: -1px;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 1px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 1px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 11px;
+  color: #222222;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 8px;
+  background-image: url(images/menu/scroll-top.gif);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 8px;
+  background-image: url(images/menu/scroll-bottom.gif);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  background-color: #f0f0f0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/tools/tool-sprites.gif);
+  margin: 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -75px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -120px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -165px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -180px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -195px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -210px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -270px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -285px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -300px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -315px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -360px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -375px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-left, .x-rtl.x-tool-collapse-left {
+  background-position: 0 -165px;
+}
+/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-right, .x-rtl.x-tool-collapse-right {
+  background-position: 0 -180px;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0;
+}
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px;
+}
+/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px;
+}
+/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px;
+}
+/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px;
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px;
+}
+/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px;
+}
+/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px;
+}
+/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px;
+}
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px;
+}
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px;
+}
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px;
+}
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px;
+}
+/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px;
+}
+/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px;
+}
+/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px;
+}
+/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px;
+}
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-resize {
+  background-position: -15px -360px;
+}
+/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-move {
+  background-position: -15px -375px;
+}
+/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px;
+}
+/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px;
+}
+/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px;
+}
+/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-left, .x-tool-over .x-rtl.x-tool-collapse-left {
+  background-position: -15px -165px;
+}
+/* line 308, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-rtl.x-tool-expand-right, .x-tool-over .x-rtl.x-tool-collapse-right {
+  background-position: -15px -180px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.gif);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.gif);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.gif);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.gif);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.gif);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.gif);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 4px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz {
+  padding-left: 0;
+  padding-right: 7px;
+  background-position: right -30px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-end {
+  padding-right: 0;
+  padding-left: 7px;
+  background-position: left -15px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-thumb {
+  margin-right: -7px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-top {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 9px 3px 9px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(bottom, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-image: url(images/tab/tab-default-bottom-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-4-4-0-1-1-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 4px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 3px 6px 0px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-left {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 9px 3px 9px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-image: url(images/tab/tab-default-top-fbg.gif);
+  background-position: 0 top;
+  background-color: #eaeaea;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-4-4-0-0-1-1-0-1-3-9-3-9;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -8px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -12px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -16px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -20px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -4px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 4px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 4px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 4px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 0px 6px 3px 6px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #b5b5b5;
+  margin: 0 0 0 2px;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #6f6f6f;
+  line-height: 13px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: #6f6f6f;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #acacac;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 9px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 9px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 2px 0 0;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 2px 0 0;
+}
+
+/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  margin: 0 0 0 2px;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea);
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top, .x-nlg
+.x-tab-default-left, .x-nlg
+.x-tab-default-right {
+  background-image: url(images/tab/tab-default-top-bg.gif);
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(bottom, #dcdcdc, #eaeaea);
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom {
+  background-image: url(images/tab/tab-default-bottom-bg.gif);
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-right {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 20px;
+}
+
+/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 0;
+  padding-right: 20px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #f2eeee;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: #6f6f6f;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #b0aeae;
+}
+
+/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over,
+.x-tab-default-left-over,
+.x-tab-default-right-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(top, #ffffff, #f0f0f0);
+  background-image: linear-gradient(top, #ffffff, #f0f0f0);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-over, .x-nlg
+.x-tab-default-left-over, .x-nlg
+.x-tab-default-right-over {
+  background-image: url(images/tab/tab-default-top-over-bg.gif);
+}
+
+/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f0f0f0);
+  background-image: linear-gradient(bottom, #ffffff, #f0f0f0);
+}
+/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-over {
+  background-image: url(images/tab/tab-default-bottom-over-bg.gif);
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #eaeaea;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #333333;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #333333;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #8e8e8e;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 1px solid #eaeaea;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: linear-gradient(top, #ffffff, #eaeaea);
+}
+/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-active, .x-nlg
+.x-tab-default-left-active, .x-nlg
+.x-tab-default-right-active {
+  background-image: url(images/tab/tab-default-top-active-bg.gif);
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 1px solid #eaeaea;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: linear-gradient(bottom, #ffffff, #eaeaea);
+}
+/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-active {
+  background-image: url(images/tab/tab-default-bottom-active-bg.gif);
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  border-color: #dadada;
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  color: #b7b7b7;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: #b7b7b7;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #dddddd;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #dadada #dadada #d0d0d0;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #d0d0d0 #dadada #dadada #dadada;
+}
+
+/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  background-image: none;
+  background-color: #eeeeee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #f4f4f4));
+  background-image: -webkit-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: -moz-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: -o-linear-gradient(top, #eeeeee, #f4f4f4);
+  background-image: linear-gradient(top, #eeeeee, #f4f4f4);
+}
+/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-top-disabled, .x-nlg
+.x-tab-default-left-disabled, .x-nlg
+.x-tab-default-right-disabled {
+  background-image: url(images/tab/tab-default-top-disabled-bg.gif);
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  background-image: none;
+  background-color: #eeeeee;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #eeeeee), color-stop(100%, #f4f4f4));
+  background-image: -webkit-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: -moz-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: -o-linear-gradient(bottom, #eeeeee, #f4f4f4);
+  background-image: linear-gradient(bottom, #eeeeee, #f4f4f4);
+}
+/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nlg .x-tab-default-bottom-disabled {
+  background-image: url(images/tab/tab-default-bottom-disabled-bg.gif);
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-over-fbg.gif);
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-over-fbg.gif);
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-active-fbg.gif);
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-active-fbg.gif);
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #eeeeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-top-disabled-fbg.gif);
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #eeeeee;
+  background-repeat: repeat-x;
+  background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif);
+}
+
+/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-top,
+.x-nbr .x-tab-default-left,
+.x-nbr .x-tab-default-right {
+  border-bottom-width: 1px !important;
+}
+/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 11px;
+  height: 11px;
+  background-image: url(images/tab/tab-default-close.gif);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default .x-tab-close-btn {
+  right: auto;
+  left: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 14px;
+}
+
+/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-closable .x-tab-wrap {
+  padding-right: 0px;
+  padding-left: 14px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  border-style: solid;
+  border-color: #d0d0d0;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 1px 0 0;
+  border-width: 1px 1px 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 1px 0;
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 1px 0 0;
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right {
+  padding: 0 0 0 1px;
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 25px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 23px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 25px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 23px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 2px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 2px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 2px;
+}
+
+/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-left {
+  padding-right: 0;
+  padding-left: 2px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 2px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-right {
+  padding-left: 0;
+  padding-right: 2px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #d0d0d0;
+  background-color: #eaeaea;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 2px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 2px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 1px 0 0 0;
+  height: 3px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 1px 1px 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 1px 0;
+  height: 3px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 1px 1px 1px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 1px;
+  width: 3px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-left {
+  border-width: 0 1px 0 0;
+}
+/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 1px 0 0;
+  width: 3px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 1px 1px 1px 0;
+}
+
+/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 1px;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right {
+  border-width: 1px 0 1px 1px;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #d2d2d2;
+}
+
+/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: linear-gradient(top, #dfdede, #d2d2d2);
+}
+/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-top {
+  background: url(images/tab-bar/tab-bar-default-top-bg.gif);
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(bottom, #dfdede, #d2d2d2);
+  background-image: linear-gradient(bottom, #dfdede, #d2d2d2);
+}
+/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-bottom {
+  background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(left, #dfdede, #d2d2d2);
+  background-image: linear-gradient(left, #dfdede, #d2d2d2);
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-left {
+  background: url(images/tab-bar/tab-bar-default-left-bg.gif);
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(right, #dfdede, #d2d2d2);
+  background-image: linear-gradient(right, #dfdede, #d2d2d2);
+}
+/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-nlg .x-tab-bar-default-right {
+  background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 20px;
+  width: 18px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 20px;
+  height: 18px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 1px;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 1px;
+}
+/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+  margin-right: 1px;
+}
+
+/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+
+/* line 466, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-top.gif);
+}
+/* line 469, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-top.gif);
+}
+
+/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+
+/* line 486, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right-bottom.gif);
+}
+/* line 489, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left-bottom.gif);
+}
+
+/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 506, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-right.gif);
+}
+/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-right.gif);
+}
+
+/* line 526, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top-left.gif);
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom-left.gif);
+}
+
+/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left-hover,
+.x-tab-bar-default .x-tabbar-scroll-right-hover {
+  background-position: -18px 0;
+}
+/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top-hover,
+.x-tab-bar-default .x-tabbar-scroll-bottom-hover {
+  background-position: 0 -18px;
+}
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 23px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #c5c5c5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 13px;
+  width: 13px;
+  background-image: url(images/form/checkbox.gif);
+  line-height: 13px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 5px 5px 4px 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 4px 5px 3px 5px;
+}
+/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px;
+  padding-bottom: 2px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -13px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.gif);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-rtl.x-tree-expander {
+  background: url(images/tree/arrows-rtl.gif) no-repeat -48px center;
+}
+/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: -16px center;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-position: -32px center;
+}
+/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: 0 center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.gif);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.gif);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.gif);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.gif);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.gif);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.gif);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.gif);
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow {
+  background-image: url(images/tree/elbow-rtl.gif);
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end-rtl.gif);
+}
+/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus-rtl.gif);
+}
+/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus-rtl.gif);
+}
+/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus-rtl.gif);
+}
+/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus-rtl.gif);
+}
+/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line-rtl.gif);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.gif);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.gif);
+}
+/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl-rtl.gif);
+}
+/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl-rtl.gif);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 20px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 16px;
+  height: 20px;
+  margin-right: 0;
+}
+
+/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-elbow-img {
+  margin-right: 0;
+  margin-left: 0;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -3px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.gif);
+}
+
+/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf-rtl.gif);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.gif);
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-rtl.gif);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.gif);
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-open-rtl.gif);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 3px;
+  top: 4px;
+  width: 13px;
+  height: 13px;
+  background-image: url(images/form/checkbox.gif);
+}
+
+/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-checkbox {
+  margin-right: 0;
+  margin-left: 3px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-rtl.x-tree-icon {
+  background-image: url(images/tree/loading.gif);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 11px;
+  line-height: 13px;
+  padding-left: 3px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-node-text {
+  padding-left: 0;
+  padding-right: 3px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 3px 6px 4px 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.gif);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.gif);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.gif);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-classic */
+/* line 2, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px;
+}
+
+/* line 17, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 24, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px;
+}
+
+/* line 29, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1;
+}
+
+/* line 34, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden;
+}
+
+/* line 40, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1;
+}
+
+/* line 45, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden;
+}
+
+/* line 51, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px;
+}
+
+/* line 55, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden;
+}
+
+/* line 60, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden;
+}
+
+/* line 65, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 69, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 73, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-tr {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 77, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-ml {
+  background-image: url(images/box/l.gif);
+}
+
+/* line 81, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url(images/box/tb.gif);
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px;
+}
+
+/* line 89, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+/* line 94, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-mr {
+  background-image: url(images/box/r.gif);
+}
+
+/* line 98, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bl {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 102, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-bc {
+  background-image: url(images/box/tb.gif);
+}
+
+/* line 106, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-br {
+  background-image: url(images/box/corners.gif);
+}
+
+/* line 110, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url(images/box/corners-blue.gif);
+}
+
+/* line 114, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url(images/box/tb-blue.gif);
+}
+
+/* line 118, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9;
+}
+
+/* line 122, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b;
+}
+
+/* line 126, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-ml {
+  background-image: url(images/box/l-blue.gif);
+}
+
+/* line 130, ../../../ext-theme-classic/sass/src/dom/Element.scss */
+.x-box-blue .x-box-mr {
+  background-image: url(images/box/r-blue.gif);
+}
+
+/* line 3, ../../../ext-theme-classic/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more-left.gif) !important;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/window/MessageBox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url(images/shared/blue-loading.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+/* line 5, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger {
+  height: 21px;
+}
+
+/* line 12, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-field-toolbar .x-form-trigger {
+  height: 20px;
+}
+/* line 16, ../../../ext-theme-classic/sass/src/form/field/Trigger.scss */
+.x-content-box .x-field-toolbar .x-form-trigger {
+  height: 19px;
+}
+
+/* line 4, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box div.x-form-spinner-up,
+.x-content-box div.x-form-spinner-down {
+  height: 10px;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/form/field/Spinner.scss */
+.x-content-box .x-toolbar-item div.x-form-spinner-up,
+.x-content-box .x-toolbar-item div.x-form-spinner-down {
+  height: 9px;
+}
+
+/* line 2, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-left-color: #b5b8c8;
+  border-top-color: #b5b8c8;
+  border-right-color: #b5b8c8;
+}
+
+/* line 9, ../../../ext-theme-classic/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-input {
+  border: 1px solid #b5b8c8;
+  border-top-width: 0;
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-color: #c5c5c5;
+  background-image: url(images/grid/grid3-hd-btn.gif);
+}
+
+/* line 8, ../../../ext-theme-classic/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-image: url(images/grid/grid3-hd-btn-left.gif);
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-trigger {
+  height: 19px;
+}
+/* line 13, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down {
+  background-image: url(images/form/spinner-small.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down {
+  height: 9px;
+}
+/* line 24, ../../../ext-theme-classic/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-small-rtl.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd {
+  border-width: 1px 0 !important;
+  -webkit-box-shadow: inset 0 0 0 0 #e5e5e5;
+  -moz-box-shadow: inset 0 0 0 0 #e5e5e5;
+  box-shadow: inset 0 0 0 0 #e5e5e5;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd-sibling-expanded {
+  -webkit-box-shadow: inset 0 1px 0 0 #ececec;
+  -moz-box-shadow: inset 0 1px 0 0 #ececec;
+  box-shadow: inset 0 1px 0 0 #ececec;
+}
+
+/* line 5, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+}
+/* line 10, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+}
+/* line 14, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+}
+/* line 18, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+}
+/* line 22, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+}
+/* line 26, ../../../ext-theme-classic/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.gif);
+}
+/* line 10, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url(images/slider/slider-thumb.gif);
+}
+/* line 16, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.gif);
+}
+/* line 20, ../../../ext-theme-classic/sass/src/slider/Multi.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url(images/slider/slider-v-thumb.gif);
+}
+
+/* line 1, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  top: -1px;
+}
+
+/* line 6, ../../../ext-theme-classic/sass/src/tab/Panel.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl>.x-box-item{right:0;left:auto}.x-ie6 .x-rtl .x-box-item,.x-quirks .x-ie .x-rtl .x-box-item{right:0;left:auto}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-rtl.x-btn-inner-left{text-align:right}.x-btn-inner-right{text-align:right}.x-rtl.x-btn-inner-right{text-align:left}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-rtl.x-box-target{left:auto;right:0}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-rtl.x-box-menu-after{float:left}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-rtl.x-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-rtl .x-dd-drag-ghost{padding-left:5px;padding-right:20px}.x-rtl .x-dd-drop-icon{left:auto;right:3px}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-rtl.x-fieldset-header .x-form-item,.x-rtl.x-fieldset-header .x-tool{float:right}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-rtl.x-form-item .x-form-item-input-row{position:relative;right:0}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-rtl.x-form-file-input{right:auto;left:-2px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-rtl.x-column-header-trigger{left:0;right:auto}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-rtl.x-column-header-align-right{text-align:left}.x-column-header-align-left{text-align:left}.x-rtl.x-column-header-align-left{text-align:right}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-rtl>.x-column{float:right}.x-ie6 .x-rtl .x-column,.x-quirks .x-ie .x-rtl .x-column{float:right}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-rtl.x-tab-bar .x-tab-bar-strip-left{right:auto;left:0}.x-tab-bar-strip-right{left:0}.x-rtl.x-tab-bar .x-tab-bar-strip-right{left:auto;right:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-rtl.x-tab-icon-el{left:auto;right:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#bcb0b0;background-image:none;background-color:#e0e0e0}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#b3b3b3;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-rtl.x-mask-msg-text{padding:5px 20px 5px 5px;background-position:right center}.x-progress-default{background-color:#f1f1f1;border-width:1px;height:20px;border-color:#8e8e8e}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#ababab;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d1d1d1),color-stop(50%,#b8b8b8),color-stop(51%,#ababab),color-stop(100%,#9e9e9e));background-image:-webkit-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-moz-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-o-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#5d5d5d;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#bbb}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#959595}.x-btn-default-small-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#bbb}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#959595}.x-btn-default-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#bbb}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#959595}.x-btn-default-large-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-left .x-rtl.x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-rtl.x-btn-icon-el{background-position:left center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-rtl.x-btn-arrow-right{background-position:left center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-rtl.x-btn-split-right{background-position:0 center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-rtl.x-toolbar-item{margin:0 0 0 2px}.x-toolbar-text{margin:0 6px 0 4px;color:black;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#aca899;border-right-color:white}.x-rtl.x-toolbar{padding:2px 2px 2px 0}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#bcb0b0;border-width:1px;background-image:none;background-color:#d8d8d8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e6e6e6),color-stop(100%,#efefef));background-image:-webkit-linear-gradient(top,#e6e6e6,#efefef);background-image:-moz-linear-gradient(top,#e6e6e6,#efefef);background-image:-o-linear-gradient(top,#e6e6e6,#efefef);background-image:linear-gradient(top,#e6e6e6,#efefef)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#aca899;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#d0d0d0;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #d0d0d0}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#d0d0d0;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-vertical{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-rtl.x-panel-header-default-vertical{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:linear-gradient(left,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-nlg .x-rtl.x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg-rtl.gif)}.x-nlg .x-rtl.x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg-rtl.gif)}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-top{-webkit-box-shadow:#ececec 0 1px 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#ececec -1px 0 0 0 inset;-moz-box-shadow:#ececec -1px 0 0 0 inset;box-shadow:#ececec -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#ececec 0 -1px 0 0 inset;-moz-box-shadow:#ececec 0 -1px 0 0 inset;box-shadow:#ececec 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 1px 0 0 0 inset;box-shadow:#ececec 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#858282}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#d0d0d0;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #d0d0d0}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-framed-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default-framed{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#f1f1f1;border-color:#d0d0d0;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#f1f1f1}.x-panel-default-framed-mc{background-color:#f1f1f1}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-rtl.x-panel-header-default-framed-right{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:linear-gradient(left,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#d7d2d2}.x-rtl.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-right-tl,.x-rtl.x-panel-header-default-framed-right-ml,.x-rtl.x-panel-header-default-framed-right-bl,.x-rtl.x-panel-header-default-framed-right-tr,.x-rtl.x-panel-header-default-framed-right-mr,.x-rtl.x-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-right-tc,.x-rtl.x-panel-header-default-framed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-rtl.x-panel-header-default-framed-left{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:linear-gradient(left,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#d7d2d2}.x-rtl.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-left-bc{background-position:right -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-left-tl,.x-rtl.x-panel-header-default-framed-left-ml,.x-rtl.x-panel-header-default-framed-left-bl,.x-rtl.x-panel-header-default-framed-left-tr,.x-rtl.x-panel-header-default-framed-left-mr,.x-rtl.x-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-left-tc,.x-rtl.x-panel-header-default-framed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-rtl.x-panel-header-default-framed-collapsed-right{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:linear-gradient(left,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#d7d2d2}.x-rtl.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-right-tl,.x-rtl.x-panel-header-default-framed-collapsed-right-ml,.x-rtl.x-panel-header-default-framed-collapsed-right-bl,.x-rtl.x-panel-header-default-framed-collapsed-right-tr,.x-rtl.x-panel-header-default-framed-collapsed-right-mr,.x-rtl.x-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-right-tc,.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-rtl.x-panel-header-default-framed-collapsed-left{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(left,#f0f0f0,#d7d7d7);background-image:linear-gradient(left,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#d7d2d2}.x-rtl.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-collapsed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-left-tl,.x-rtl.x-panel-header-default-framed-collapsed-left-ml,.x-rtl.x-panel-header-default-framed-collapsed-left-bl,.x-rtl.x-panel-header-default-framed-collapsed-left-tr,.x-rtl.x-panel-header-default-framed-collapsed-left-mr,.x-rtl.x-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-left-tc,.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-framed-top{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#858282}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-framed-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-framed-collapsed-border-left{border-left-width:1px!important}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#868686;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#ccc}.x-tip-default-mc{background-color:#ccc}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#868686}.x-tip-default .x-tool-img{background-color:#ccc}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-default .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#d0d0d0;-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#dfdfdf;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#dfdfdf}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#666}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d6d6d6}.x-btn-group-default-framed-mc{background-color:#d6d6d6}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d6d6d6}.x-btn-group-default-framed-notitle-mc{background-color:#d6d6d6}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#d0d0d0;-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#dfdfdf;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#dfdfdf}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#666}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a9a9a9;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-default-mc{background-color:#e8e8e8}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#bcb1b0;border-width:1px;border-style:solid;background:#e0e0e0;color:black}.x-window-header-default{font-size:11px;border-color:#a9a9a9;zoom:1;background-color:#e8e8e8}.x-window-header-default .x-tool-img{background-color:#e8e8e8}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#e8e8e8;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8)}.x-window-header-default-vertical .x-rtl.x-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container{background-color:#e8e8e8;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8)}.x-window-header-text-container-default{color:#333;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#e8e8e8}.x-window-header-default-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-rtl.x-window-header-default-right-tl,.x-rtl.x-window-header-default-right-ml,.x-rtl.x-window-header-default-right-bl,.x-rtl.x-window-header-default-right-tr,.x-rtl.x-window-header-default-right-mr,.x-rtl.x-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-rtl.x-window-header-default-left-tl,.x-rtl.x-window-header-default-left-ml,.x-rtl.x-window-header-default-left-bl,.x-rtl.x-window-header-default-left-tr,.x-rtl.x-window-header-default-left-mr,.x-rtl.x-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-rtl.x-window-header-default-collapsed-right-tl,.x-rtl.x-window-header-default-collapsed-right-ml,.x-rtl.x-window-header-default-collapsed-right-bl,.x-rtl.x-window-header-default-collapsed-right-tr,.x-rtl.x-window-header-default-collapsed-right-mr,.x-rtl.x-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-rtl.x-window-header-default-collapsed-left-tl,.x-rtl.x-window-header-default-collapsed-left-ml,.x-rtl.x-window-header-default-collapsed-left-bl,.x-rtl.x-window-header-default-collapsed-left-tr,.x-rtl.x-window-header-default-collapsed-left-mr,.x-rtl.x-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#333;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#8d8d8d}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#a1a1a1}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#e8e8e8;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-rtl.x-message-box-info,.x-rtl.x-message-box-warning,.x-rtl.x-message-box-question,.x-rtl.x-message-box-error{background-position:top left}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-rtl.x-field .x-form-cb-label-before{margin-right:0;margin-left:4px}.x-form-cb-label-after{margin-left:4px}.x-rtl.x-field .x-form-cb-label-after{margin-left:0;margin-right:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d5d5d5;border-top:1px dotted #b4b4b4;border-bottom:1px dotted #b4b4b4}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-rtl.x-form-check-group-label{margin:0 0 5px 30px}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#333;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,.x-fieldset-with-title .x-rtl .x-tool{margin:1px 0 0 3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-rtl.x-form-trigger-wrap .x-form-trigger{background-image:url(images/form/trigger-rtl.gif)}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-search-trigger{background-image:url(images/form/search-trigger-rtl.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-rtl.gif)}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last.gif)}.x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next.gif)}.x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev.gif)}.x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first.gif)}.x-item-disabled .x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#b5b8c8;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#d3d3d3;border-color:#b3abaa}.x-boundlist-item-over{background:#e0e0e0;border-color:#bfb8b8}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#585858;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#6f6f6f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#777),color-stop(100%,#656565));background-image:-webkit-linear-gradient(top,#777,#656565);background-image:-moz-linear-gradient(top,#777,#656565);background-image:-o-linear-gradient(top,#777,#656565);background-image:linear-gradient(top,#777,#656565)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#6f6f6f;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#3e3e3e;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#d0d0d0;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f1f1f1),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-moz-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-o-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:linear-gradient(top,#f1f1f1,#dfdfdf)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:transparent}.x-datepicker-selected{border-style:solid;border-color:#b2aaa9}.x-datepicker-selected .x-datepicker-date{background-color:#d8d8d8;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#d0d0d0;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdfdf),color-stop(49%,#d6d6d6),color-stop(51%,#d0d0d0),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-o-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#585858;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#585858;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#523a39;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:transparent}.x-monthpicker-selected{background-color:#d8d8d8;border-style:solid;border-color:#b2aaa9}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-date-trigger{background-image:url(images/form/date-trigger-rtl.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#d0d0d0}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#bfb8b8}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#bfb8b8}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#e0e0e0}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#e0e0e0;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#bfb8b8}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #d4b7b7;background-image:none;background-color:#e0e0e0;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e0e0e0),color-stop(100%,#d3d3d3));background-image:-webkit-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-moz-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-o-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:linear-gradient(left,#e0e0e0,#d3d3d3)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-rtl.x-grid-cell-special{border-right-width:0;border-left-width:1px}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-rtl.x-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.gif);background-position:right 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-rtl.x-grid-with-col-lines .x-grid-cell{border-right-width:0;border-left-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #d0d0d0;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-rtl.x-column-header{border-right:0 none;border-left:1px solid #c5c5c5}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#f0f0f0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(top,#fff,#f0f0f0)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-rtl.x-column-header-trigger{background-position:right center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-align-right .x-rtl.x-column-header-text{margin-right:0;margin-left:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-rtl.x-column-header-text,.x-column-header-sort-DESC .x-rtl.x-column-header-text{padding-right:0;padding-left:12px;background-position:0 center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#bcb1b0;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title{background-position:right center;padding:0 14px 0 0}.x-grid-group-title{color:#616161;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#d0d0d0;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #c6c6c6 #ededed #c6c6c6;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-locked .x-rtl.x-grid-inner-locked{border-width:0 0 0 1px}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-grid-inner-locked .x-rtl.x-column-header-last{border-left-width:0!important}.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last{border-left:0 none}.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last{border-left:0 none}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #d0d0d0!important;border-bottom:1px solid #d0d0d0!important;padding:4px 0 4px 0;background-color:#ebe6e6}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb{margin-right:0;margin-left:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ebe6e6}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#ebe6e6}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ebe6e6}.x-grid-row-editor-buttons-default-top-mc{background-color:#ebe6e6}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#d0d0d0}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-rtl.x-row-editor-update-button{margin-left:2px;margin-right:auto}.x-rtl.x-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#e5e5e5;border-top-color:#ececec;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#d0d0d0}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#e5e5e5}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#e5e5e5}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#e0e0e0}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-rtl.x-menu .x-menu-icon-separator{left:auto;right:24px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-rtl.x-menu-item-indent{margin-left:0;margin-right:30px}.x-menu-item-active{background-image:none;background-color:#e6e6e6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#eee),color-stop(100%,#dcdcdc));background-image:-webkit-linear-gradient(top,#eee,#dcdcdc);background-image:-moz-linear-gradient(top,#eee,#dcdcdc);background-image:-o-linear-gradient(top,#eee,#dcdcdc);background-image:linear-gradient(top,#eee,#dcdcdc);border-color:#9d9d9d;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#e6e6e6 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-rtl.x-menu-item-link{padding:0 30px 0 0}.x-right-check-item-text{padding-right:22px}.x-rtl.x-right-check-item-text{padding-left:22px;padding-right:0}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-rtl.x-menu-item-icon{left:auto;right:3px}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon{left:auto;right:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-rtl.x-menu-item-icon-right{right:auto;left:3px}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}a.x-rtl .x-menu-item-text{margin-right:0;margin-left:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-rtl.x-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.gif)}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow{right:auto;left:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-rtl.x-tool-expand-left,.x-rtl.x-tool-collapse-left{background-position:0 -165px}.x-rtl.x-tool-expand-right,.x-rtl.x-tool-collapse-right{background-position:0 -180px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-left,.x-tool-over .x-rtl.x-tool-collapse-left{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-right,.x-tool-over .x-rtl.x-tool-collapse-right{background-position:-15px -180px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-rtl.x-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x-rtl.x-slider-horz .x-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x-rtl.x-slider-horz .x-slider-thumb{margin-right:-7px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:linear-gradient(bottom,#dcdcdc,#eaeaea)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#b5b5b5;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#6f6f6f;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#6f6f6f;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#acacac}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-tab-default-left{margin:0 2px 0 0}.x-rtl.x-tab-default-left{margin:0 0 0 2px}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #d0d0d0;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #d0d0d0;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:linear-gradient(bottom,#dcdcdc,#eaeaea);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-rtl.x-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-rtl.x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-rtl.x-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-rtl.x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-rtl.x-tab-default-icon-text-left .x-tab-inner{padding-left:0;padding-right:20px}.x-tab-default-over{background-color:#f2eeee}.x-tab-default-over .x-tab-glyph{color:#6f6f6f}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#b0aeae}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(top,#fff,#f0f0f0)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(bottom,#fff,#f0f0f0);background-image:-moz-linear-gradient(bottom,#fff,#f0f0f0);background-image:-o-linear-gradient(bottom,#fff,#f0f0f0);background-image:linear-gradient(bottom,#fff,#f0f0f0)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#eaeaea}.x-tab-default-active .x-tab-inner{color:#333}.x-tab-default-active .x-tab-glyph{color:#333}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#8e8e8e}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #eaeaea;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#fff,#eaeaea);background-image:-moz-linear-gradient(top,#fff,#eaeaea);background-image:-o-linear-gradient(top,#fff,#eaeaea);background-image:linear-gradient(top,#fff,#eaeaea)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #eaeaea;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#fff,#eaeaea);background-image:-moz-linear-gradient(bottom,#fff,#eaeaea);background-image:-o-linear-gradient(bottom,#fff,#eaeaea);background-image:linear-gradient(bottom,#fff,#eaeaea)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#dadada;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#b7b7b7}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#b7b7b7;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#ddd}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#dadada #dadada #d0d0d0}.x-tab-default-bottom-disabled{border-color:#d0d0d0 #dadada #dadada #dadada}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#eee),color-stop(100%,#f4f4f4));background-image:-webkit-linear-gradient(top,#eee,#f4f4f4);background-image:-moz-linear-gradient(top,#eee,#f4f4f4);background-image:-o-linear-gradient(top,#eee,#f4f4f4);background-image:linear-gradient(top,#eee,#f4f4f4)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#eee;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#eee),color-stop(100%,#f4f4f4));background-image:-webkit-linear-gradient(bottom,#eee,#f4f4f4);background-image:-moz-linear-gradient(bottom,#eee,#f4f4f4);background-image:-o-linear-gradient(bottom,#eee,#f4f4f4);background-image:linear-gradient(bottom,#eee,#f4f4f4)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#eee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#eee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-rtl.x-tab-default .x-tab-close-btn{right:auto;left:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-rtl.x-tab-default-closable .x-tab-wrap{padding-right:0;padding-left:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#d0d0d0}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-default-left{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-default-right{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-rtl.x-tab-bar-body-default-left{padding-right:0;padding-left:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-rtl.x-tab-bar-body-default-right{padding-left:0;padding-right:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#d0d0d0;background-color:#eaeaea}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-strip-default-left{border-width:0 1px 0 0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left{border-width:1px 1px 1px 0}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-strip-default-right{border-width:0 0 0 1px}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right{border-width:1px 0 1px 1px}.x-tab-bar-default{background-color:#d2d2d2}.x-tab-bar-default-top{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdede,#d2d2d2);background-image:-o-linear-gradient(top,#dfdede,#d2d2d2);background-image:linear-gradient(top,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:-o-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:linear-gradient(bottom,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(left,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(left,#dfdede,#d2d2d2);background-image:-o-linear-gradient(left,#dfdede,#d2d2d2);background-image:linear-gradient(left,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(right,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(right,#dfdede,#d2d2d2);background-image:-o-linear-gradient(right,#dfdede,#d2d2d2);background-image:linear-gradient(right,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-rtl.x-tab-bar-default-right .x-box-scroller{margin-left:0;margin-right:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-arrows .x-rtl.x-tree-expander{background:url(images/tree/arrows-rtl.gif) no-repeat -48px center}.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander{background-position:0 center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-lines .x-rtl.x-tree-elbow{background-image:url(images/tree/elbow-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-no-row-lines .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-rtl.x-tree-elbow-img{margin-right:0;margin-left:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-rtl.x-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-rtl.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-rtl.x-tree-checkbox{margin-right:0;margin-left:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-tree-loading .x-rtl.x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-rtl.x-tree-node-text{padding-left:0;padding-right:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-rtl.x-toolbar-more-icon{background-image:url(images/toolbar/more-left.gif)!important}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-rtl.x-column-header-trigger{background-image:url(images/grid/grid3-hd-btn-left.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #e5e5e5;-moz-box-shadow:inset 0 0 0 0 #e5e5e5;box-shadow:inset 0 0 0 0 #e5e5e5}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #ececec;-moz-box-shadow:inset 0 1px 0 0 #ececec;box-shadow:inset 0 1px 0 0 #ececec}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-btn-inner-right{text-align:right}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-left{text-align:left}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-tab-bar-strip-right{left:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#bcb0b0;background-image:none;background-color:#e0e0e0}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#b3b3b3;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-progress-default{background-color:#f1f1f1;border-width:1px;height:20px;border-color:#8e8e8e}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#ababab;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d1d1d1),color-stop(50%,#b8b8b8),color-stop(51%,#ababab),color-stop(100%,#9e9e9e));background-image:-webkit-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-moz-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-o-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#5d5d5d;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#bbb}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#959595}.x-btn-default-small-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#bbb}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#959595}.x-btn-default-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#bbb}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#f8f8f8}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#959595}.x-btn-default-large-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#ececec;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-toolbar-text{margin:0 6px 0 4px;color:black;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#aca899;border-right-color:white}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#bcb0b0;border-width:1px;background-image:none;background-color:#d8d8d8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e6e6e6),color-stop(100%,#efefef));background-image:-webkit-linear-gradient(top,#e6e6e6,#efefef);background-image:-moz-linear-gradient(top,#e6e6e6,#efefef);background-image:-o-linear-gradient(top,#e6e6e6,#efefef);background-image:linear-gradient(top,#e6e6e6,#efefef)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#aca899;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#d0d0d0;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #d0d0d0}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#d0d0d0;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-vertical{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-top{-webkit-box-shadow:#ececec 0 1px 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#ececec -1px 0 0 0 inset;-moz-box-shadow:#ececec -1px 0 0 0 inset;box-shadow:#ececec -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#ececec 0 -1px 0 0 inset;-moz-box-shadow:#ececec 0 -1px 0 0 inset;box-shadow:#ececec 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 1px 0 0 0 inset;box-shadow:#ececec 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#858282}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#d0d0d0;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #d0d0d0}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default-framed{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#f1f1f1;border-color:#d0d0d0;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#f1f1f1}.x-panel-default-framed-mc{background-color:#f1f1f1}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#d7d2d2}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#d7d2d2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#d7d2d2)}.x-panel-header-default-framed-top{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#858282}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#868686;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#ccc}.x-tip-default-mc{background-color:#ccc}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#868686}.x-tip-default .x-tool-img{background-color:#ccc}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#d0d0d0;-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#dfdfdf;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#dfdfdf}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#666}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d6d6d6}.x-btn-group-default-framed-mc{background-color:#d6d6d6}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d6d6d6}.x-btn-group-default-framed-notitle-mc{background-color:#d6d6d6}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#d0d0d0;-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#dfdfdf;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#dfdfdf}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#666}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a9a9a9;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-default-mc{background-color:#e8e8e8}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#bcb1b0;border-width:1px;border-style:solid;background:#e0e0e0;color:black}.x-window-header-default{font-size:11px;border-color:#a9a9a9;zoom:1;background-color:#e8e8e8}.x-window-header-default .x-tool-img{background-color:#e8e8e8}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#e8e8e8;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#e8e8e8)}.x-window-header-text-container-default{color:#333;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#e8e8e8}.x-window-header-default-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-window-header-default-collapsed-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#333;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#333;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#8d8d8d}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#a1a1a1}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#e8e8e8;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d5d5d5;border-top:1px dotted #b4b4b4;border-bottom:1px dotted #b4b4b4}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#333;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#b5b8c8;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#d3d3d3;border-color:#b3abaa}.x-boundlist-item-over{background:#e0e0e0;border-color:#bfb8b8}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#585858;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#6f6f6f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#777),color-stop(100%,#656565));background-image:-webkit-linear-gradient(top,#777,#656565);background-image:-moz-linear-gradient(top,#777,#656565);background-image:-o-linear-gradient(top,#777,#656565);background-image:linear-gradient(top,#777,#656565)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#6f6f6f;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#3e3e3e;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#d0d0d0;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f1f1f1),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-moz-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-o-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:linear-gradient(top,#f1f1f1,#dfdfdf)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:transparent}.x-datepicker-selected{border-style:solid;border-color:#b2aaa9}.x-datepicker-selected .x-datepicker-date{background-color:#d8d8d8;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#d0d0d0;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdfdf),color-stop(49%,#d6d6d6),color-stop(51%,#d0d0d0),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-o-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#585858;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#585858;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#523a39;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:transparent}.x-monthpicker-selected{background-color:#d8d8d8;border-style:solid;border-color:#b2aaa9}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#d0d0d0}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#bfb8b8}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#bfb8b8}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#e0e0e0}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#e0e0e0;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#bfb8b8}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #d4b7b7;background-image:none;background-color:#e0e0e0;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e0e0e0),color-stop(100%,#d3d3d3));background-image:-webkit-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-moz-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-o-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:linear-gradient(left,#e0e0e0,#d3d3d3)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #d0d0d0;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#f0f0f0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(top,#fff,#f0f0f0)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#bcb1b0;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-grid-group-title{color:#616161;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #c6c6c6 #ededed #c6c6c6;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#d0d0d0;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #c6c6c6 #ededed #c6c6c6;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #d0d0d0!important;border-bottom:1px solid #d0d0d0!important;padding:4px 0 4px 0;background-color:#ebe6e6}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ebe6e6}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#ebe6e6}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ebe6e6}.x-grid-row-editor-buttons-default-top-mc{background-color:#ebe6e6}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#d0d0d0}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#e5e5e5;border-top-color:#ececec;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#d0d0d0}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#e5e5e5}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#e5e5e5}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#e0e0e0}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-menu-item-active{background-image:none;background-color:#e6e6e6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#eee),color-stop(100%,#dcdcdc));background-image:-webkit-linear-gradient(top,#eee,#dcdcdc);background-image:-moz-linear-gradient(top,#eee,#dcdcdc);background-image:-o-linear-gradient(top,#eee,#dcdcdc);background-image:linear-gradient(top,#eee,#dcdcdc);border-color:#9d9d9d;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#e6e6e6 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-right-check-item-text{padding-right:22px}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:linear-gradient(bottom,#dcdcdc,#eaeaea)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#eaeaea}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#b5b5b5;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#6f6f6f;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#6f6f6f;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#acacac}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-tab-default-left{margin:0 2px 0 0}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #d0d0d0;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #d0d0d0;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:linear-gradient(bottom,#dcdcdc,#eaeaea);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-tab-default-over{background-color:#f2eeee}.x-tab-default-over .x-tab-glyph{color:#6f6f6f}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#b0aeae}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(top,#fff,#f0f0f0)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(100%,#f0f0f0));background-image:-webkit-linear-gradient(bottom,#fff,#f0f0f0);background-image:-moz-linear-gradient(bottom,#fff,#f0f0f0);background-image:-o-linear-gradient(bottom,#fff,#f0f0f0);background-image:linear-gradient(bottom,#fff,#f0f0f0)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#eaeaea}.x-tab-default-active .x-tab-inner{color:#333}.x-tab-default-active .x-tab-glyph{color:#333}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#8e8e8e}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #eaeaea;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#fff,#eaeaea);background-image:-moz-linear-gradient(top,#fff,#eaeaea);background-image:-o-linear-gradient(top,#fff,#eaeaea);background-image:linear-gradient(top,#fff,#eaeaea)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #eaeaea;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#fff,#eaeaea);background-image:-moz-linear-gradient(bottom,#fff,#eaeaea);background-image:-o-linear-gradient(bottom,#fff,#eaeaea);background-image:linear-gradient(bottom,#fff,#eaeaea)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#dadada;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#b7b7b7}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#b7b7b7;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#ddd}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#dadada #dadada #d0d0d0}.x-tab-default-bottom-disabled{border-color:#d0d0d0 #dadada #dadada #dadada}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#eee),color-stop(100%,#f4f4f4));background-image:-webkit-linear-gradient(top,#eee,#f4f4f4);background-image:-moz-linear-gradient(top,#eee,#f4f4f4);background-image:-o-linear-gradient(top,#eee,#f4f4f4);background-image:linear-gradient(top,#eee,#f4f4f4)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#eee;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#eee),color-stop(100%,#f4f4f4));background-image:-webkit-linear-gradient(bottom,#eee,#f4f4f4);background-image:-moz-linear-gradient(bottom,#eee,#f4f4f4);background-image:-o-linear-gradient(bottom,#eee,#f4f4f4);background-image:linear-gradient(bottom,#eee,#f4f4f4)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#eee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#eee;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#d0d0d0}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#d0d0d0;background-color:#eaeaea}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-tab-bar-default{background-color:#d2d2d2}.x-tab-bar-default-top{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdede,#d2d2d2);background-image:-o-linear-gradient(top,#dfdede,#d2d2d2);background-image:linear-gradient(top,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:-o-linear-gradient(bottom,#dfdede,#d2d2d2);background-image:linear-gradient(bottom,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(left,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(left,#dfdede,#d2d2d2);background-image:-o-linear-gradient(left,#dfdede,#d2d2d2);background-image:linear-gradient(left,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(right,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(right,#dfdede,#d2d2d2);background-image:-o-linear-gradient(right,#dfdede,#d2d2d2);background-image:linear-gradient(right,#dfdede,#d2d2d2)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/box/corners.gif)}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(images/box/corners-blue.gif)}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(images/box/tb-blue.gif)}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url(images/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #e5e5e5;-moz-box-shadow:inset 0 0 0 0 #e5e5e5;box-shadow:inset 0 0 0 0 #e5e5e5}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #ececec;-moz-box-shadow:inset 0 1px 0 0 #ececec;box-shadow:inset 0 1px 0 0 #ececec}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/Readme.md
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/Readme.md	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/Readme.md	(revision 18732)
@@ -0,0 +1,3 @@
+# ext-theme-neptune/resources
+
+This folder contains static resources (typically an `"images"` folder as well).
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-debug.css	(revision 18732)
@@ -0,0 +1,22381 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-neptune */
+/* including package ext-theme-neptune */
+/**
+ * @var {boolean}
+ * True to include the "light" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "light-framed" panel UI
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * In the default neptune color scheme this is the same as $base-highlight-color
+ * but it does not change automatically when one changes the $base-color.  This is because
+ * checkboxes and radio buttons have this focus color hard coded into their background
+ * images.  If this color is changed, you should also modify checkbox and radio button
+ * background images to match
+ */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 12px helvetica, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.png);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.png);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.png);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp {
+  margin: 2px;
+}
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 13px;
+  font-family: helvetica, arial, verdana, sans-serif;
+  background: #f5f5f5;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+  background: white;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 8px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  background-image: none;
+  background-color: #e5e5e5;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0;
+  background-color: transparent;
+  color: #666666;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 21px 0 0;
+  background-image: url(images/loadmask/loading.gif);
+  background-repeat: no-repeat;
+  background-position: center 0;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #f5f5f5;
+  border-width: 0;
+  height: 20px;
+  border-color: #157fcc;
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 20px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #c1ddf1;
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: #666666;
+  font-weight: bold;
+  font-size: 13px;
+  text-align: center;
+  line-height: 20px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #666666;
+  line-height: 20px;
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/default-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/default-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/default-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 8px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/default-medium-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 30px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 26px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 29px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 29px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 29px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 29px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/default-medium-s-arrow.png);
+  padding-right: 32px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/default-medium-s-arrow-b.png);
+  padding-bottom: 28px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 16px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 10px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/default-large-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 36px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 32px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 37px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 37px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 37px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 37px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/default-large-s-arrow.png);
+  padding-right: 38px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/default-large-s-arrow-b.png);
+  padding-bottom: 34px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-image: url(images/btn/btn-default-toolbar-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-small {
+  background-image: url(images/btn/btn-default-toolbar-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-small-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-bg.gif), corners:url(images/btn/btn-default-toolbar-small-corners.gif), sides:url(images/btn/btn-default-toolbar-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-disabled {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-image: url(images/btn/btn-default-toolbar-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-medium {
+  background-image: url(images/btn/btn-default-toolbar-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-medium-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-bg.gif), corners:url(images/btn/btn-default-toolbar-medium-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 8px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-medium-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 30px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 26px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 29px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 29px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 29px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 29px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-disabled {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-medium-s-arrow.png);
+  padding-right: 32px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-medium-s-arrow-b.png);
+  padding-bottom: 28px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-image: url(images/btn/btn-default-toolbar-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-large {
+  background-image: url(images/btn/btn-default-toolbar-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-large-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-bg.gif), corners:url(images/btn/btn-default-toolbar-large-corners.gif), sides:url(images/btn/btn-default-toolbar-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 16px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 10px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-large-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 36px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 32px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 37px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 37px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 37px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 37px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-disabled {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-large-s-arrow.png);
+  padding-right: 38px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-large-s-arrow-b.png);
+  padding-bottom: 34px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 13px;
+  border-style: solid;
+  padding: 6px 0 6px 8px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 8px 0 0;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #333f49;
+  line-height: 16px;
+  font-family: helvetica, arial, verdana, sans-serif;
+  font-size: 12px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 8px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 0 0 1px;
+  border-left-color: #e1e1e1;
+  border-right-color: white;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: #dfeaf2;
+  border: 0;
+  margin: 0;
+  padding: 6px 0 6px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.png) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: silver;
+  border-width: 1px;
+  background-image: none;
+  background-color: white;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  cursor: default;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: white;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.png);
+  background-position: 0 0;
+  width: 16px;
+  height: 16px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0;
+  margin-top: 4px;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.png);
+  width: 16px;
+  height: 16px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0;
+  margin-top: 4px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -16px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 8px 0 8px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 6px 8px 0 8px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 6px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 6px;
+  border-style: solid none;
+  border-width: 1px 0 0;
+  border-top-color: #e1e1e1;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 6px 0 6px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 13px;
+  border: 1px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-tool-img {
+  background-color: #157fcc;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 9px 9px 10px 9px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 9px 9px 9px 10px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: white;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: arial, helvetica, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #8abfe5;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 13px;
+  border: 5px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-tool-img {
+  background-color: #157fcc;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 10px 10px 5px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 10px 10px 10px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: white;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: arial, helvetica, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 0 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-0-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 0;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-0-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 5px 5px 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 0 5px 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dh-4-0-0-4-5-0-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 5px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 5px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 5px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 5px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #8abfe5;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable {
+  overflow: visible;
+}
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+/* line 696, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-north-br {
+  top: -5px;
+}
+/* line 699, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-south-br {
+  bottom: -5px;
+}
+/* line 702, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-east-br {
+  right: -5px;
+}
+/* line 705, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-west-br {
+  left: -5px;
+}
+/* line 708, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 712, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 716, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 720, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #e1e1e1;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #eaf3fa;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #eaf3fa;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #e1e1e1;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #eaf3fa;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: black;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: black;
+  font-size: 13px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: black;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #eaf3fa;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: #eaf3fa;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #e1e1e1;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #eaf3fa;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: black;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: black;
+  font-size: 13px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: black;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.png);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #dfeaf2;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  padding: 4px 5px;
+  line-height: 16px;
+  background: #dfeaf2;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 5px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 0px 1px 0px 1px;
+  border-width: 3px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-3-3-3-3-3-3-3-3-0-1-0-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 0px 1px 0px 1px;
+  border-width: 3px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-3-3-3-3-3-3-3-3-0-1-0-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #dfeaf2;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  padding: 4px 5px;
+  line-height: 16px;
+  background: #dfeaf2;
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 5px;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #3892d3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #3892d3;
+  border-width: 1px;
+  border-style: solid;
+  background: white;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 13px;
+  border-color: #3892d3;
+  zoom: 1;
+  background-color: #3892d3;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #3892d3;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #3892d3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3892d3);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: white;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: arial, helvetica, verdana, sans-serif;
+  font-size: 13px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-4-0-0-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #9bc8e9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 479, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  border-width: 5px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 500, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable {
+  overflow: visible;
+}
+/* line 505, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-north-br {
+  top: -5px;
+}
+/* line 508, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-south-br {
+  bottom: -5px;
+}
+/* line 511, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-east-br {
+  right: -5px;
+}
+/* line 514, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-west-br {
+  left: -5px;
+}
+/* line 517, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 521, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 525, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-l {
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-b {
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-bl {
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-r {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rl {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rb {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rbl {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-t {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tb {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tbl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tr {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trb {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trbl {
+  border-color: #3892d3 !important;
+  border-width: 1px !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #cf4c35;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.png);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 4px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 5px;
+  background-image: url(images/form/exclamation.png);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  border-color: #cf4c35;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 4px 6px 3px 6px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+  height: 24px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #3892d3;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 24px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: white;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.png);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 24px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/checkbox.png) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -15px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -15px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -15px -15px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cf4c35;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #f5f5f5;
+  border-top: 1px dotted #f5f5f5;
+  border-bottom: 1px dotted #f5f5f5;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 16px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 12px/16px bold helvetica, arial, verdana, sans-serif;
+  color: black;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-image: url(images/fieldset/collapse-tool.png);
+  background-position: 0 0;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: 0 -15px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: -15px 0;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -15px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/radio.png) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -15px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -15px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -15px -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.png);
+  width: 22px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 22px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -22px 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -66px 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -88px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -44px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.png);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.png);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 24px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 24px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.png);
+  background-color: white;
+  width: 22px;
+  height: 11px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -66px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -22px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -88px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -44px -11px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.png);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.png);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.png);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 6px;
+  line-height: 22px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #c1ddf1;
+  border-color: #c1ddf1;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #d6e8f6;
+  border-color: #d6e8f6;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background-color: white;
+  width: 212px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 4px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #f5f5f5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 12px;
+  height: 12px;
+  top: 9px;
+  cursor: pointer;
+  background-color: #f5f5f5;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/datepicker/arrow-right.png);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/datepicker/arrow-left.png);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: #3892d3;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/datepicker/month-arrow.png);
+  padding-right: 8px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 30px;
+  color: black;
+  font: bold 13px helvetica, arial, verdana, sans-serif;
+  text-align: right;
+  background-image: none;
+  background-color: white;
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 25px;
+  padding: 0 9px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 7px 0 0;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 23px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: #eaf3fa;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #3892d3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #d6e8f6;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #bfbfbf;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: gray;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 3px 0;
+  background-image: none;
+  background-color: #f5f5f5;
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 3px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 212px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #e1e1e1;
+  border-style: solid;
+  width: 105px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 52px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 105px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 52px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 5px;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: black;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 22px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #eaf3fa;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #d6e8f6;
+  border-style: solid;
+  border-color: #3892d3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 34px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 52px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 12px;
+  width: 12px;
+  cursor: pointer;
+  margin-top: 11px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+  background-color: white;
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-yearnav-button:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/datepicker/arrow-right.png);
+  background-position: 0 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: 0 0;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/datepicker/arrow-left.png);
+  background-position: 0 0;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: 0 0;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 28px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 8px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 192px;
+  height: 120px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 24px;
+  height: 24px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 18px;
+  height: 18px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #e6e6e6;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #e6e6e6;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 16px;
+  border-color: #e1e1e1;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 13px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: silver;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #c1ddf1;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #c1ddf1;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #e2eff8;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #e2eff8;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #c1ddf1;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 96, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px solid #e2eff8;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #c1ddf1;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e2eff8;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #e2eff8;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: solid;
+  border-top-color: #c1ddf1;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-focused-first {
+  border-top-style: solid;
+  border-top-color: #e2eff8;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 5px 10px 4px 10px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed;
+  border-style: solid;
+  border-right-width: 1px 0;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.png) no-repeat 0 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #c1ddf1;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.png);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #157fcc;
+  border-bottom-color: #f5f5f5;
+  background-color: #f5f5f5;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: silver;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.png);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.png);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid silver;
+  color: #666666;
+  font: bold 13px/15px helvetica, arial, verdana, sans-serif;
+  background-color: #f5f5f5;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid silver;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 6px 10px 7px 10px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 7px 10px 7px 10px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #eef6fb;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: #eef6fb;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: #dfeaf2;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 18px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: center center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 12px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 17px;
+  background-position: right center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.png);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 4px 4px 4px 4px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 5px 10px 4px 10px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/checkbox.png) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 5px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: silver;
+  padding: 8px 4px 8px 4px;
+  background: #f5f5f5;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.png);
+  padding: 0 0 0 17px;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #666666;
+  font: bold 13px/15px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.png);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 5px 10px 5px 10px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #f5f5f5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #157fcc;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.png);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.png);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 4px 9px 3px 9px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 24px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 5px 10px 4px 10px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 4px 4px 4px 4px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 3px 0 2px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 5px 7px 4px 8px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 4px 1px 4px 2px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 4px 6px 3px 7px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 6px;
+  padding-right: 5px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #e1e1e1 !important;
+  border-bottom: 1px solid #e1e1e1 !important;
+  padding: 5px 0 5px 0;
+  background-color: #dfeaf2;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 5px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 1px 1px 5px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 35px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 35px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #e1e1e1;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 3px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 7px 6px 6px 6px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 11px;
+  height: 11px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.png);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 5px 5px 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: #666666;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0 0 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #dfeaf2;
+  border-top-color: white;
+  padding: 8px 10px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #157fcc;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #dfeaf2;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -272px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -256px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -24px;
+  width: 8px;
+  height: 48px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 48px;
+  height: 8px;
+  margin-left: -24px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.png);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.png);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.png);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.png);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #3892d3;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu {
+  border-style: solid;
+  border-width: 1px;
+  border-color: #e1e1e1;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: white;
+  padding: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 22px;
+  border-left: solid 1px #e1e1e1;
+  background-color: white;
+  width: 1px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 27px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #d6e8f6;
+  border-color: #0079d2;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #d6e8f6 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 24px;
+  padding: 0 4px 0 27px;
+  display: inline-block;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 5px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: gray;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #bfbfbf;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 13px;
+  color: black;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.png);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.png);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.png);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 1px;
+  border-top: solid 1px #e1e1e1;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 8px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.png);
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 0px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 0px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 13px;
+  color: black;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 16px;
+  background-image: url(images/menu/scroll-top.png);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 16px;
+  background-image: url(images/menu/scroll-bottom.png);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: white;
+}
+
+/* line 329, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top-hover, .x-menu-scroll-bottom-hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top-pressed, .x-menu-scroll-bottom-pressed {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 16px;
+  height: 16px;
+  background-image: url(images/tools/tool-sprites.png);
+  margin: 0;
+}
+/* line 12, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pressed .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -16px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -32px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -48px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -64px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -80px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -96px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -112px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -128px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -144px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -160px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -176px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -192px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -208px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -224px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -240px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -256px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -272px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -288px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -304px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -320px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -336px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -352px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -368px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -384px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -400px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -208px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -224px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -192px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -176px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  -ms-border-radius: 6px;
+  -o-border-radius: 6px;
+  border-radius: 6px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.png);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.png);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.png);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.png);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.png);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.png);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 5px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 15px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -15px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -30px -30px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 15px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -15px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -30px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-3-3-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 8px 9px 4px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #157fcc;
+  margin: 0 1px 0 0;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  line-height: 16px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #a5cdeb;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 12px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 12px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 0 0 1px;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 0 solid #157fcc;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 0 solid #157fcc;
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 22px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #5fa7db;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: white;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #afd3ed;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #add2ed;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #157fcc;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #157fcc;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #61a8dc;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 0 solid #add2ed;
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 0 solid #add2ed;
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: white;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #81b9e3;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #157fcc #157fcc #157fcc;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #157fcc #157fcc #157fcc #157fcc;
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #5fa7db;
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #5fa7db;
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #add2ed;
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #add2ed;
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 12px;
+  height: 12px;
+  background-image: url(images/tab/tab-default-close.png);
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  background-position: -12px 0;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+  background-position: 0 0;
+}
+
+/* line 934, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-pressed .x-tab-close-btn {
+  background-position: -24px 0;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 15px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 0 0;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 0 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 36px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 36px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 36px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 36px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 5px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 5px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 5px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 5px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #157fcc;
+  background-color: #add2ed;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 5px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 5px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 0 0 0 0;
+  height: 5px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 0 0 0 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 0 0;
+  height: 5px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 0 0 0;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+  width: 5px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+  width: 5px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #157fcc;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #157fcc;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-box-scroller {
+  background-color: transparent;
+}
+/* line 341, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-ie8m .x-tab-bar-default .x-box-scroller-plain .x-box-scroller {
+  background-color: #fff;
+}
+/* line 348, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-pressed {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 31px;
+  width: 24px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 31px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 0;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+}
+
+/* line 395, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left.png);
+}
+/* line 399, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right.png);
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top.png);
+}
+/* line 407, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom.png);
+}
+
+/* line 425, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-plain-scroll-left.png);
+}
+/* line 429, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-plain-scroll-right.png);
+}
+/* line 433, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-plain-scroll-top.png);
+}
+/* line 437, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-plain-scroll-bottom.png);
+}
+
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=25);
+  opacity: 0.25;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 36px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #f5f5f5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 15px;
+  width: 15px;
+  background-image: url(images/form/checkbox.png);
+  line-height: 15px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 7px 4px 7px 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 5px 4px 4px 4px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.png);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.png);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.png);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.png);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.png);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.png);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.png);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.png);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.png);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.png);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 24px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 18px;
+  height: 24px;
+  margin-right: 2px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -5px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.png);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.png);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.png);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 4px;
+  top: 5px;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/form/checkbox.png);
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -15px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.png);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 13px;
+  line-height: 15px;
+  padding-left: 4px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 5px 10px 4px 6px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.png);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.png);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.png);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-neptune */
+/* line 1, ../../sass/src/Component.scss */
+body {
+  background-color: #f5f5f5;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mc {
+  background-image: url(images/btn/btn-plain-toolbar-small-fbg.gif);
+  background-position: 0 top;
+  background-color: transparent;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-plain-toolbar-small {
+  background-image: url(images/btn/btn-plain-toolbar-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-plain-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-plain-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tr,
+.x-btn-plain-toolbar-small-br,
+.x-btn-plain-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl,
+.x-btn-plain-toolbar-small-bl,
+.x-btn-plain-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl,
+.x-btn-plain-toolbar-small-bl,
+.x-btn-plain-toolbar-small-tr,
+.x-btn-plain-toolbar-small-br,
+.x-btn-plain-toolbar-small-tc,
+.x-btn-plain-toolbar-small-bc,
+.x-btn-plain-toolbar-small-ml,
+.x-btn-plain-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-ml,
+.x-btn-plain-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-plain-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-plain-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-small-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/plain-toolbar-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-plain-toolbar-small .x-btn-glyph {
+  color: #b2b2b2;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-button,
+.x-btn-plain-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-inner,
+.x-btn-plain-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active,
+.x-btn-plain-toolbar-small-pressed {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-tl,
+.x-btn-plain-toolbar-small-over .x-frame-bl,
+.x-btn-plain-toolbar-small-over .x-frame-tr,
+.x-btn-plain-toolbar-small-over .x-frame-br,
+.x-btn-plain-toolbar-small-over .x-frame-tc,
+.x-btn-plain-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-ml,
+.x-btn-plain-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-tl,
+.x-btn-plain-toolbar-small-focus .x-frame-bl,
+.x-btn-plain-toolbar-small-focus .x-frame-tr,
+.x-btn-plain-toolbar-small-focus .x-frame-br,
+.x-btn-plain-toolbar-small-focus .x-frame-tc,
+.x-btn-plain-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-ml,
+.x-btn-plain-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-tl,
+.x-btn-plain-toolbar-small-menu-active .x-frame-bl,
+.x-btn-plain-toolbar-small-menu-active .x-frame-tr,
+.x-btn-plain-toolbar-small-menu-active .x-frame-br,
+.x-btn-plain-toolbar-small-menu-active .x-frame-tc,
+.x-btn-plain-toolbar-small-menu-active .x-frame-bc,
+.x-btn-plain-toolbar-small-pressed .x-frame-tl,
+.x-btn-plain-toolbar-small-pressed .x-frame-bl,
+.x-btn-plain-toolbar-small-pressed .x-frame-tr,
+.x-btn-plain-toolbar-small-pressed .x-frame-br,
+.x-btn-plain-toolbar-small-pressed .x-frame-tc,
+.x-btn-plain-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-ml,
+.x-btn-plain-toolbar-small-menu-active .x-frame-mr,
+.x-btn-plain-toolbar-small-pressed .x-frame-ml,
+.x-btn-plain-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-mc,
+.x-btn-plain-toolbar-small-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-tl,
+.x-btn-plain-toolbar-small-disabled .x-frame-bl,
+.x-btn-plain-toolbar-small-disabled .x-frame-tr,
+.x-btn-plain-toolbar-small-disabled .x-frame-br,
+.x-btn-plain-toolbar-small-disabled .x-frame-tc,
+.x-btn-plain-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-ml,
+.x-btn-plain-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-over {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-focus {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-menu-active,
+.x-nlg .x-btn-plain-toolbar-small-pressed {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-disabled {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-plain-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/plain-toolbar-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/plain-toolbar-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-mc {
+  background-image: url(images/btn/btn-plain-toolbar-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: transparent;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-plain-toolbar-medium {
+  background-image: url(images/btn/btn-plain-toolbar-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-plain-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-plain-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tr,
+.x-btn-plain-toolbar-medium-br,
+.x-btn-plain-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tl,
+.x-btn-plain-toolbar-medium-bl,
+.x-btn-plain-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-tl,
+.x-btn-plain-toolbar-medium-bl,
+.x-btn-plain-toolbar-medium-tr,
+.x-btn-plain-toolbar-medium-br,
+.x-btn-plain-toolbar-medium-tc,
+.x-btn-plain-toolbar-medium-bc,
+.x-btn-plain-toolbar-medium-ml,
+.x-btn-plain-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-ml,
+.x-btn-plain-toolbar-medium-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-plain-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-plain-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-medium-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 8px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/plain-toolbar-medium-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-arrow-right {
+  padding-right: 30px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 26px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-plain-toolbar-medium .x-btn-glyph {
+  color: #b2b2b2;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon .x-btn-button,
+.x-btn-plain-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon .x-btn-inner,
+.x-btn-plain-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 29px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 29px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 29px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 29px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-over {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-focus {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-menu-active,
+.x-btn-plain-toolbar-medium-pressed {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-over .x-frame-tl,
+.x-btn-plain-toolbar-medium-over .x-frame-bl,
+.x-btn-plain-toolbar-medium-over .x-frame-tr,
+.x-btn-plain-toolbar-medium-over .x-frame-br,
+.x-btn-plain-toolbar-medium-over .x-frame-tc,
+.x-btn-plain-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-over .x-frame-ml,
+.x-btn-plain-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-focus .x-frame-tl,
+.x-btn-plain-toolbar-medium-focus .x-frame-bl,
+.x-btn-plain-toolbar-medium-focus .x-frame-tr,
+.x-btn-plain-toolbar-medium-focus .x-frame-br,
+.x-btn-plain-toolbar-medium-focus .x-frame-tc,
+.x-btn-plain-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-focus .x-frame-ml,
+.x-btn-plain-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-br,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-plain-toolbar-medium-pressed .x-frame-tl,
+.x-btn-plain-toolbar-medium-pressed .x-frame-bl,
+.x-btn-plain-toolbar-medium-pressed .x-frame-tr,
+.x-btn-plain-toolbar-medium-pressed .x-frame-br,
+.x-btn-plain-toolbar-medium-pressed .x-frame-tc,
+.x-btn-plain-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-plain-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-plain-toolbar-medium-pressed .x-frame-ml,
+.x-btn-plain-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-plain-toolbar-medium-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-plain-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-disabled .x-frame-tl,
+.x-btn-plain-toolbar-medium-disabled .x-frame-bl,
+.x-btn-plain-toolbar-medium-disabled .x-frame-tr,
+.x-btn-plain-toolbar-medium-disabled .x-frame-br,
+.x-btn-plain-toolbar-medium-disabled .x-frame-tc,
+.x-btn-plain-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-disabled .x-frame-ml,
+.x-btn-plain-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent;
+  background-image: url(images/btn/btn-plain-toolbar-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-medium-over {
+  background-image: url(images/btn/btn-plain-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-medium-focus {
+  background-image: url(images/btn/btn-plain-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-medium-menu-active,
+.x-nlg .x-btn-plain-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-plain-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-medium-disabled {
+  background-image: url(images/btn/btn-plain-toolbar-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-plain-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/plain-toolbar-medium-s-arrow.png);
+  padding-right: 32px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/plain-toolbar-medium-s-arrow-b.png);
+  padding-bottom: 28px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-mc {
+  background-image: url(images/btn/btn-plain-toolbar-large-fbg.gif);
+  background-position: 0 top;
+  background-color: transparent;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-plain-toolbar-large {
+  background-image: url(images/btn/btn-plain-toolbar-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-plain-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-plain-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tr,
+.x-btn-plain-toolbar-large-br,
+.x-btn-plain-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tl,
+.x-btn-plain-toolbar-large-bl,
+.x-btn-plain-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-tl,
+.x-btn-plain-toolbar-large-bl,
+.x-btn-plain-toolbar-large-tr,
+.x-btn-plain-toolbar-large-br,
+.x-btn-plain-toolbar-large-tc,
+.x-btn-plain-toolbar-large-bc,
+.x-btn-plain-toolbar-large-ml,
+.x-btn-plain-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-ml,
+.x-btn-plain-toolbar-large-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-plain-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-plain-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-large-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-inner {
+  font-size: 16px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 10px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/plain-toolbar-large-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-arrow-right {
+  padding-right: 36px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 32px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-plain-toolbar-large .x-btn-glyph {
+  color: #b2b2b2;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon .x-btn-button,
+.x-btn-plain-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon .x-btn-inner,
+.x-btn-plain-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 37px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 37px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 37px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 37px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-over {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-focus {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-menu-active,
+.x-btn-plain-toolbar-large-pressed {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-over .x-frame-tl,
+.x-btn-plain-toolbar-large-over .x-frame-bl,
+.x-btn-plain-toolbar-large-over .x-frame-tr,
+.x-btn-plain-toolbar-large-over .x-frame-br,
+.x-btn-plain-toolbar-large-over .x-frame-tc,
+.x-btn-plain-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-over .x-frame-ml,
+.x-btn-plain-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-focus .x-frame-tl,
+.x-btn-plain-toolbar-large-focus .x-frame-bl,
+.x-btn-plain-toolbar-large-focus .x-frame-tr,
+.x-btn-plain-toolbar-large-focus .x-frame-br,
+.x-btn-plain-toolbar-large-focus .x-frame-tc,
+.x-btn-plain-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-focus .x-frame-ml,
+.x-btn-plain-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-menu-active .x-frame-tl,
+.x-btn-plain-toolbar-large-menu-active .x-frame-bl,
+.x-btn-plain-toolbar-large-menu-active .x-frame-tr,
+.x-btn-plain-toolbar-large-menu-active .x-frame-br,
+.x-btn-plain-toolbar-large-menu-active .x-frame-tc,
+.x-btn-plain-toolbar-large-menu-active .x-frame-bc,
+.x-btn-plain-toolbar-large-pressed .x-frame-tl,
+.x-btn-plain-toolbar-large-pressed .x-frame-bl,
+.x-btn-plain-toolbar-large-pressed .x-frame-tr,
+.x-btn-plain-toolbar-large-pressed .x-frame-br,
+.x-btn-plain-toolbar-large-pressed .x-frame-tc,
+.x-btn-plain-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-menu-active .x-frame-ml,
+.x-btn-plain-toolbar-large-menu-active .x-frame-mr,
+.x-btn-plain-toolbar-large-pressed .x-frame-ml,
+.x-btn-plain-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-menu-active .x-frame-mc,
+.x-btn-plain-toolbar-large-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-plain-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-disabled .x-frame-tl,
+.x-btn-plain-toolbar-large-disabled .x-frame-bl,
+.x-btn-plain-toolbar-large-disabled .x-frame-tr,
+.x-btn-plain-toolbar-large-disabled .x-frame-br,
+.x-btn-plain-toolbar-large-disabled .x-frame-tc,
+.x-btn-plain-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-disabled .x-frame-ml,
+.x-btn-plain-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent;
+  background-image: url(images/btn/btn-plain-toolbar-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-large-over {
+  background-image: url(images/btn/btn-plain-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-large-focus {
+  background-image: url(images/btn/btn-plain-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-large-menu-active,
+.x-nlg .x-btn-plain-toolbar-large-pressed {
+  background-image: url(images/btn/btn-plain-toolbar-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-large-disabled {
+  background-image: url(images/btn/btn-plain-toolbar-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-plain-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/plain-toolbar-large-s-arrow.png);
+  padding-right: 38px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/plain-toolbar-large-s-arrow-b.png);
+  padding-bottom: 34px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 210, ../../sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-btn-icon-el,
+.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,
+.x-btn-plain-toolbar-large-disabled .x-btn-icon-el {
+  background-color: white;
+}
+/* line 212, ../../sass/src/button/Button.scss */
+.x-strict .x-ie8 .x-btn-plain-toolbar-small-disabled .x-btn-icon-el, .x-strict .x-ie8
+.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el, .x-strict .x-ie8
+.x-btn-plain-toolbar-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 3, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left {
+  margin-right: 4px;
+}
+/* line 7, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-right {
+  margin-left: 4px;
+}
+/* line 12, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left, .x-toolbar-default .x-toolbar-scroll-right {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 17, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left-hover, .x-toolbar-default .x-toolbar-scroll-right-hover {
+  background-position: 0 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 23, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left-pressed, .x-toolbar-default .x-toolbar-scroll-right-pressed {
+  background-position: 0 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+/* line 29, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=25);
+  opacity: 0.25;
+}
+/* line 33, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  background-color: white;
+}
+
+/* line 41, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding: 6px 4px 6px 4px;
+}
+
+/* line 45, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical-scroller {
+  padding: 3px 8px 3px 8px;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light {
+  font-size: 13px;
+  border: 1px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal {
+  padding: 9px 9px 10px 9px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical {
+  padding: 9px 9px 9px 10px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-light {
+  color: #666666;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-light {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-left:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-vertical .x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-light .x-panel-header-glyph {
+  color: #eff4f8;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed {
+  border-color: #dfeaf2;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed {
+  font-size: 13px;
+  border: 5px solid #dfeaf2;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal {
+  padding: 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal-noborder {
+  padding: 10px 10px 5px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical-noborder {
+  padding: 10px 10px 10px 5px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-light-framed {
+  color: #666666;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-light-framed {
+  background: white;
+  border-color: #dfeaf2;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-light-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-light-framed-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tr,
+.x-panel-light-framed-br,
+.x-panel-light-framed-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl,
+.x-panel-light-framed-bl,
+.x-panel-light-framed-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl,
+.x-panel-light-framed-bl,
+.x-panel-light-framed-tr,
+.x-panel-light-framed-br,
+.x-panel-light-framed-tc,
+.x-panel-light-framed-bc,
+.x-panel-light-framed-ml,
+.x-panel-light-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-light-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-ml,
+.x-panel-light-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-light-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-light-framed-tl,
+.x-strict .x-ie7 .x-panel-light-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-light-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-light-framed-corners.gif), sides:url(images/panel/panel-light-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 0 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-0-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tr,
+.x-panel-header-light-framed-top-br,
+.x-panel-header-light-framed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl,
+.x-panel-header-light-framed-top-bl,
+.x-panel-header-light-framed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl,
+.x-panel-header-light-framed-top-bl,
+.x-panel-header-light-framed-top-tr,
+.x-panel-header-light-framed-top-br,
+.x-panel-header-light-framed-top-tc,
+.x-panel-header-light-framed-top-bc,
+.x-panel-header-light-framed-top-ml,
+.x-panel-header-light-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-ml,
+.x-panel-header-light-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 0;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-0-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tr,
+.x-panel-header-light-framed-right-br,
+.x-panel-header-light-framed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl,
+.x-panel-header-light-framed-right-bl,
+.x-panel-header-light-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl,
+.x-panel-header-light-framed-right-bl,
+.x-panel-header-light-framed-right-tr,
+.x-panel-header-light-framed-right-br,
+.x-panel-header-light-framed-right-tc,
+.x-panel-header-light-framed-right-bc,
+.x-panel-header-light-framed-right-ml,
+.x-panel-header-light-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-ml,
+.x-panel-header-light-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-right-corners.gif), sides:url(images/panel-header/panel-header-light-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 5px 5px 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tr,
+.x-panel-header-light-framed-bottom-br,
+.x-panel-header-light-framed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl,
+.x-panel-header-light-framed-bottom-bl,
+.x-panel-header-light-framed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl,
+.x-panel-header-light-framed-bottom-bl,
+.x-panel-header-light-framed-bottom-tr,
+.x-panel-header-light-framed-bottom-br,
+.x-panel-header-light-framed-bottom-tc,
+.x-panel-header-light-framed-bottom-bc,
+.x-panel-header-light-framed-bottom-ml,
+.x-panel-header-light-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-ml,
+.x-panel-header-light-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 0 5px 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-left-frameInfo {
+  font-family: dh-4-0-0-4-5-0-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tr,
+.x-panel-header-light-framed-left-br,
+.x-panel-header-light-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl,
+.x-panel-header-light-framed-left-bl,
+.x-panel-header-light-framed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl,
+.x-panel-header-light-framed-left-bl,
+.x-panel-header-light-framed-left-tr,
+.x-panel-header-light-framed-left-br,
+.x-panel-header-light-framed-left-tc,
+.x-panel-header-light-framed-left-bc,
+.x-panel-header-light-framed-left-ml,
+.x-panel-header-light-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-ml,
+.x-panel-header-light-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-left-corners.gif), sides:url(images/panel-header/panel-header-light-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tr,
+.x-panel-header-light-framed-collapsed-top-br,
+.x-panel-header-light-framed-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl,
+.x-panel-header-light-framed-collapsed-top-bl,
+.x-panel-header-light-framed-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl,
+.x-panel-header-light-framed-collapsed-top-bl,
+.x-panel-header-light-framed-collapsed-top-tr,
+.x-panel-header-light-framed-collapsed-top-br,
+.x-panel-header-light-framed-collapsed-top-tc,
+.x-panel-header-light-framed-collapsed-top-bc,
+.x-panel-header-light-framed-collapsed-top-ml,
+.x-panel-header-light-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-ml,
+.x-panel-header-light-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tr,
+.x-panel-header-light-framed-collapsed-right-br,
+.x-panel-header-light-framed-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl,
+.x-panel-header-light-framed-collapsed-right-bl,
+.x-panel-header-light-framed-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl,
+.x-panel-header-light-framed-collapsed-right-bl,
+.x-panel-header-light-framed-collapsed-right-tr,
+.x-panel-header-light-framed-collapsed-right-br,
+.x-panel-header-light-framed-collapsed-right-tc,
+.x-panel-header-light-framed-collapsed-right-bc,
+.x-panel-header-light-framed-collapsed-right-ml,
+.x-panel-header-light-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-ml,
+.x-panel-header-light-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tr,
+.x-panel-header-light-framed-collapsed-bottom-br,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl,
+.x-panel-header-light-framed-collapsed-bottom-bl,
+.x-panel-header-light-framed-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl,
+.x-panel-header-light-framed-collapsed-bottom-bl,
+.x-panel-header-light-framed-collapsed-bottom-tr,
+.x-panel-header-light-framed-collapsed-bottom-br,
+.x-panel-header-light-framed-collapsed-bottom-tc,
+.x-panel-header-light-framed-collapsed-bottom-bc,
+.x-panel-header-light-framed-collapsed-bottom-ml,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-ml,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tr,
+.x-panel-header-light-framed-collapsed-left-br,
+.x-panel-header-light-framed-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl,
+.x-panel-header-light-framed-collapsed-left-bl,
+.x-panel-header-light-framed-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl,
+.x-panel-header-light-framed-collapsed-left-bl,
+.x-panel-header-light-framed-collapsed-left-tr,
+.x-panel-header-light-framed-collapsed-left-br,
+.x-panel-header-light-framed-collapsed-left-tc,
+.x-panel-header-light-framed-collapsed-left-bc,
+.x-panel-header-light-framed-collapsed-left-ml,
+.x-panel-header-light-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-ml,
+.x-panel-header-light-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-top {
+  border-bottom-width: 5px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-right {
+  border-left-width: 5px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-bottom {
+  border-top-width: 5px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-left {
+  border-right-width: 5px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-framed-vertical .x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-light-framed .x-panel-header-glyph {
+  color: #eff4f8;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable {
+  overflow: visible;
+}
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+/* line 696, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-north-br {
+  top: -5px;
+}
+/* line 699, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-south-br {
+  bottom: -5px;
+}
+/* line 702, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-east-br {
+  right: -5px;
+}
+/* line 705, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-west-br {
+  left: -5px;
+}
+/* line 708, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 712, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 716, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 720, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 1, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+
+/* line 9, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+}
+/* line 12, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap .x-form-text {
+  border-width: 0;
+  height: 22px;
+}
+/* line 16, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger-wrap .x-form-text {
+  height: 15px;
+}
+/* line 22, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-wrap {
+  border-color: #3892d3;
+}
+/* line 26, ../../sass/src/form/field/Trigger.scss */
+.x-form-invalid .x-form-trigger-wrap {
+  border-color: #cf4c35;
+}
+
+/* line 3, ../../sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-trigger-wrap {
+  border: 0;
+}
+
+/* line 7, ../../sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-trigger-wrap .x-form-text {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+  height: 24px;
+}
+/* line 13, ../../sass/src/form/field/File.scss */
+.x-content-box .x-form-file-wrap .x-form-trigger-wrap .x-form-text {
+  height: 15px;
+}
+
+/* line 1, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-container {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+}
+
+/* line 1, ../../sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid silver;
+}
+
+/* line 6, ../../sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-image: url(images/grid/hd-pop.png);
+  border-left: 1px solid silver;
+}
+
+/* line 18, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last {
+  border-right: 0;
+}
+/* line 20, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last .x-column-header-over .x-column-header-trigger {
+  border-right: 1px solid silver;
+}
+
+/* line 25, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last {
+  border-right: 0 none;
+}
+
+/* line 2, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+}
+
+/* line 6, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-over {
+  background-color: #e6f1f9;
+}
+
+/* line 1, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  background-color: #157fcc;
+  background-repeat: no-repeat;
+}
+
+/* line 10, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: center;
+}
+/* line 15, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: center;
+}
+/* line 19, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: -2px -2px;
+}
+/* line 23, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: 2px 2px;
+}
+/* line 27, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: -2px 2px;
+}
+/* line 31, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: 2px -2px;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl-debug.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl-debug.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl-debug.css	(revision 18732)
@@ -0,0 +1,22799 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* including package ext-theme-neutral */
+/* including package ext-theme-neptune */
+/* including package ext-theme-neptune */
+/**
+ * @var {boolean}
+ * True to include the "light" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "light-framed" panel UI
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * In the default neptune color scheme this is the same as $base-highlight-color
+ * but it does not change automatically when one changes the $base-color.  This is because
+ * checkboxes and radio buttons have this focus color hard coded into their background
+ * images.  If this color is changed, you should also modify checkbox and radio button
+ * background images to match
+ */
+/* including package ext-theme-neutral */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {color} $color
+ * The default text color to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {color} $body-background-color
+ * Background color to apply to the body element
+ */
+/**
+ * @class Ext.FocusManager
+ */
+/**
+ * @var {color}
+ * The border-color of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-style of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @var {color}
+ * The border-width of the focusFrame.  See {@link #method-enable}.
+ */
+/**
+ * @class Ext.LoadMask
+ */
+/**
+ * @var {number}
+ * Opacity of the LoadMask
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask
+ */
+/**
+ * @var {string}
+ * The type of cursor to dislay when the cursor is over the LoadMask
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the LoadMask's message element
+ */
+/**
+ * @var {string}
+ * The border-style of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The border-color of the LoadMask's message element
+ */
+/**
+ * @var {number}
+ * The border-width of the LoadMask's message element
+ */
+/**
+ * @var {color}
+ * The background-color of the LoadMask's message element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the LoadMask's message element. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the message inner element
+ */
+/**
+ * @var {string}
+ * The icon to display in the message inner element
+ */
+/**
+ * @var {list}
+ * The background-position of the icon
+ */
+/**
+ * @var {string}
+ * The border-style of the message inner element
+ */
+/**
+ * @var {color}
+ * The border-color of the message inner element
+ */
+/**
+ * @var {number}
+ * The border-width of the message inner element
+ */
+/**
+ * @var {color}
+ * The background-color of the message inner element
+ */
+/**
+ * @var {color}
+ * The text color of the message inner element
+ */
+/**
+ * @var {number}
+ * The font-size of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-weight of the message inner element
+ */
+/**
+ * @var {string}
+ * The font-family of the message inner element
+ */
+/**
+ * @var {number/list}
+ * The padding of the message element
+ */
+/**
+ * @var {number}
+ * The border-radius of the message element
+ */
+/**
+ * @class Ext.ProgressBar
+ */
+/**
+ * @var {number}
+ * The height of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The border-color of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-width of the ProgressBar
+ */
+/**
+ * @var {number}
+ * The border-radius of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar
+ */
+/**
+ * @var {color}
+ * The background-color of the ProgressBar's moving element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ */
+/**
+ * @var {color}
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ */
+/**
+ * @var {string}
+ * The text-align of the ProgressBar's text
+ */
+/**
+ * @var {number}
+ * The font-size of the ProgressBar's text
+ */
+/**
+ * @var {string}
+ * The font-weight of the ProgressBar's text
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" ProgressBar UI
+ */
+/**
+ * @class Ext.button.Button
+ */
+/**
+ * @var {number}
+ * The default width for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height for a button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height for a {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default space between a button's icon and text
+ */
+/**
+ * @var {number}
+ * The default border-radius for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a small {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a small {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a medium {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a medium {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default border-radius for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default border-width for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default padding for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default horizontal padding to add to the left and right of the text element for
+ * a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {number}
+ * The default font-size for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-weight for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the cursor is over the button
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is focused
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is pressed
+ */
+/**
+ * @var {string}
+ * The default font-family for a large {@link #scale} button when the button is disabled
+ */
+/**
+ * @var {number}
+ * The default icon size for a large {@link #scale} button
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow
+ */
+/**
+ * @var {number}
+ * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {number}
+ * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The base color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI.  Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the cursor is over the button.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is focused.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is pressed.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default` button UI when the button is disabled.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The border-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The background-color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI.  Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the cursor is over the
+ * button. Can be either the name of a predefined gradient or a list of color stops. Used
+ * as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is focused.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is pressed.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the `default-toolbar` button UI when the button is disabled.
+ * Can be either the name of a predefined gradient or a list of color stops. Used as the
+ * `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the cursor is over the button
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is focused
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is pressed
+ */
+/**
+ * @var {color}
+ * The text color for the `default-toolbar` button UI when the button is disabled
+ */
+/**
+ * @var {color}
+ * The color of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {color}
+ * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-menu-arrows
+ * True to use a different image url for the menu button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-ui-split-arrows
+ * True to use a different image url for the split button arrows for each button UI
+ */
+/**
+ * @var {boolean} $button-include-split-over-arrows
+ * True to include different split arrows for buttons' hover state.
+ */
+/**
+ * @var {boolean} $button-toolbar-include-split-noline-arrows
+ * True to include "noline" split arrows for toolbar buttons in their default state.
+ */
+/**
+ * @var {number} $button-opacity-disabled
+ * opacity to apply to the button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-inner-opacity-disabled
+ * opacity to apply to the button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-opacity-disabled
+ * opacity to apply to the toolbar button's main element when the buton is disabled
+ */
+/**
+ * @var {number} $button-toolbar-inner-opacity-disabled
+ * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button UI for "large" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "small" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "medium" scale buttons
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-toolbar" button UI for "large" scale buttons
+ */
+/**
+ * @class Ext.toolbar.Toolbar
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {color}
+ * The background-color of the Toolbar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Toolbar.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of Toolbar items
+ */
+/**
+ * @var {number}
+ * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {number}
+ * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbars
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbars
+ */
+/**
+ * @var {string}
+ * The border-style of Toolbars
+ */
+/**
+ * @var {number}
+ * The width of Toolbar {@link Ext.toolbar.Spacer Spacers}
+ */
+/**
+ * @var {color}
+ * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {color}
+ * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators}
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar
+ */
+/**
+ * @var {string}
+ * The default font-family of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number}
+ * The default font-size of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The margin of Toolbar text
+ */
+/**
+ * @var {color}
+ * The text-color of Toolbar text
+ */
+/**
+ * @var {number/list}
+ * The padding of Toolbar text
+ */
+/**
+ * @var {number}
+ * The line-height of Toolbar text
+ */
+/**
+ * @var {number}
+ * The width of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The height of Toolbar scrollers
+ */
+/**
+ * @var {color}
+ * The border-color of Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The border-width of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Toolbar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Toolbar scrollers
+ */
+/**
+ * @var {string}
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" toolbar UI
+ */
+/**
+ * @class Ext.panel.Panel
+ */
+/**
+ * @var {number}
+ * The default border-width of Panels
+ */
+/**
+ * @var {color}
+ * The base color of Panels
+ */
+/**
+ * @var {color}
+ * The default border-color of Panels
+ */
+/**
+ * @var {$border-width-threshold}
+ * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions.
+ *
+ * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area
+ * within the border as they always have been.
+ *
+ * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel.
+ */
+/**
+ * @var {string}
+ * The default border-style of Panels
+ */
+/**
+ * @var {color}
+ * The default body background-color of Panels
+ */
+/**
+ * @var {color}
+ * The default color of text inside a Panel's body
+ */
+/**
+ * @var {color}
+ * The default border-color of the Panel body
+ */
+/**
+ * @var {number}
+ * The default border-width of the Panel body
+ */
+/**
+ * @var {number}
+ * The default font-size of the Panel body
+ */
+/**
+ * @var {string}
+ * The default font-weight of the Panel body
+ */
+/**
+ * @var {number}
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {number}
+ * The border-width of Panel Headers
+ */
+/**
+ * @var {string}
+ * The border-style of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Panel Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Panel Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Panel Headers
+ */
+/**
+ * @var {string}
+ * The font-family of Panel Headers
+ */
+/**
+ * @var {string}
+ * The text-transform of Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Panel Header's text element
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Panel Header. Can be either the name of a predefined
+ * gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The inner border-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The inner border-width of the Panel Header
+ */
+/**
+ * @var {color}
+ * The text color of the Panel Header
+ */
+/**
+ * @var {color}
+ * The background-color of the Panel Header
+ */
+/**
+ * @var {number}
+ * The width of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Panel Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Panel Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Panel Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Panel Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Panel Header glyph icon
+ */
+/**
+ * @var {color}
+ * The base color of the framed Panels
+ */
+/**
+ * @var {number}
+ * The border-radius of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panels
+ */
+/**
+ * @var {string}
+ * The border-style of framed Panels
+ */
+/**
+ * @var {number}
+ * The padding of framed Panels
+ */
+/**
+ * @var {color}
+ * The background-color of framed Panels
+ */
+/**
+ * @var {color}
+ * The border-color of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of the body element of framed Panels
+ */
+/**
+ * @var {number}
+ * The border-width of framed Panel Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of framed Panel Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of framed Panel Headers
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Panels while dragging
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {string}
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is
+ * `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" panel UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" panel UI
+ */
+/**
+ * @class Ext.tip.Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tip
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The text color of the Tip body
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip body
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip body
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of any anchor tags inside the Tip body
+ */
+/**
+ * @var {color}
+ * The text color of the Tip header
+ */
+/**
+ * @var {number}
+ * The font-size of the Tip header
+ */
+/**
+ * @var {string}
+ * The font-weight of the Tip header
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tip header's body element
+ */
+/**
+ * @var {color}
+ * The border-color of the Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the Tip
+ */
+/**
+ * @var {color}
+ * The inner border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The inner border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The border-color of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-radius of the form field error Tip
+ */
+/**
+ * @var {number}
+ * The border-width of the form field error Tip
+ */
+/**
+ * @var {color}
+ * The background-color of the form field error Tip
+ */
+/**
+ * @var {number/list}
+ * The padding of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The text color of the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The font-size of the form field error Tip's body element
+ */
+/**
+ * @var {string}
+ * The font-weight of the form field error Tip's body element
+ */
+/**
+ * @var {color}
+ * The color of anchor tags in the form field error Tip's body element
+ */
+/**
+ * @var {number}
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ */
+/**
+ * @var {string}
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tip UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "form-invalid" tip UI
+ */
+/**
+ * @class Ext.container.ButtonGroup
+ */
+/**
+ * @var {color}
+ * The background-color of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The border-color of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of the ButtonGroup
+ */
+/**
+ * @var {number}
+ * The border-radius of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The body padding of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of the ButtonGroup
+ */
+/**
+ * @var {color}
+ * The inner border-color of the ButtonGroup
+ */
+/**
+ * @var {number/list}
+ * The margin of the header element. Used to add space around the header.
+ */
+/**
+ * @var {number}
+ * The font-size of the header
+ */
+/**
+ * @var {number}
+ * The font-weight of the header
+ */
+/**
+ * @var {number}
+ * The font-family of the header
+ */
+/**
+ * @var {number}
+ * The line-height of the header
+ */
+/**
+ * @var {number}
+ * The text color of the header
+ */
+/**
+ * @var {number}
+ * The padding of the header
+ */
+/**
+ * @var {number}
+ * The background-color of the header
+ */
+/**
+ * @var {number}
+ * The border-spacing to use on the table layout element
+ */
+/**
+ * @var {number}
+ * The background-color of framed ButtonGroups
+ */
+/**
+ * @var {number}
+ * The border-width of framed ButtonGroups
+ */
+/**
+ * @var {string}
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" button group UI
+ */
+/**
+ * @var {boolean}
+ * True to include the "default-framed" button group UI
+ */
+/**
+ * @class Ext.window.Window
+ */
+/**
+ * @var {color}
+ * The base color of Windows
+ */
+/**
+ * @var {number}
+ * The padding of Windows
+ */
+/**
+ * @var {number}
+ * The border-radius of Windows
+ */
+/**
+ * @var {number}
+ * The border-width of Windows
+ */
+/**
+ * @var {color}
+ * The border-color of Windows
+ */
+/**
+ * @var {color}
+ * The inner border-color of Windows
+ */
+/**
+ * @var {number}
+ * The inner border-width of Windows
+ */
+/**
+ * @var {color}
+ * The background-color of Windows
+ */
+/**
+ * @var {number}
+ * The body border-width of Windows
+ */
+/**
+ * @var {string}
+ * The body border-style of Windows
+ */
+/**
+ * @var {color}
+ * The body border-color of Windows
+ */
+/**
+ * @var {color}
+ * The body background-color of Windows
+ */
+/**
+ * @var {color}
+ * The body text color of Windows
+ */
+/**
+ * @var {number/list}
+ * The padding of Window Headers
+ */
+/**
+ * @var {number}
+ * The font-size of Window Headers
+ */
+/**
+ * @var {number}
+ * The line-height of Window Headers
+ */
+/**
+ * @var {color}
+ * The text color of Window Headers
+ */
+/**
+ * @var {color}
+ * The background-color of Window Headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Window Headers
+ */
+/**
+ * @var {number}
+ * The space between the Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The background sprite to use for Window {@link Ext.panel.Tool Tools}
+ */
+/**
+ * @var {string}
+ * The font-family of Window Headers
+ */
+/**
+ * @var {number/list}
+ * The padding of the Window Header's text element
+ */
+/**
+ * @var {string}
+ * The text-transform of Window Headers
+ */
+/**
+ * @var {number}
+ * The width of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The height of the Window Header icon
+ */
+/**
+ * @var {number}
+ * The space between the Window Header icon and text
+ */
+/**
+ * @var {list}
+ * The background-position of  the Window Header icon
+ */
+/**
+ * @var {color}
+ * The color of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Window Header glyph icon
+ */
+/**
+ * @var {number}
+ * The border-width of Window Headers
+ */
+/**
+ * @var {color}
+ * The inner border-color of Window Headers
+ */
+/**
+ * @var {number}
+ * The inner border-width of Window Headers
+ */
+/**
+ * @var {boolean} $ui-force-header-border
+ * True to force the window header to have a border on the side facing the window body.
+ * Overrides dock layout's border management border removal rules.
+ */
+/**
+ * @var {number}
+ * The opacity of ghost Windows while dragging
+ */
+/**
+ * @var {boolean}
+ * True to include neptune style border management rules.
+ */
+/**
+ * @var {color}
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {number}
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$window-include-border-management-rules` is `true`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" window UI
+ */
+/**
+ * @class Ext.form.Labelable
+ */
+/**
+ * @var {color}
+ * The text color of form field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of form field labels
+ */
+/**
+ * @var {number}
+ * The font-size of form field labels
+ */
+/**
+ * @var {string}
+ * The font-family of form field labels
+ */
+/**
+ * @var {number}
+ * The line-height of form field labels
+ */
+/**
+ * @var {color}
+ * The text color of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar field labels
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar field labels
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar field labels
+ */
+/**
+ * @var {number}
+ * Width for form error icons.
+ */
+/**
+ * @var {number}
+ * Height for form error icons.
+ */
+/**
+ * @var {number/list}
+ * Margin for error icons that are aligned to the side of the field
+ */
+/**
+ * @var {number}
+ * The space between the icon and the message for errors that display under the field
+ */
+/**
+ * @var {number/list}
+ * The padding on errors that display under the form field
+ */
+/**
+ * @var {color}
+ * The text color of form error messages
+ */
+/**
+ * @var {string}
+ * The font-weight of form error messages
+ */
+/**
+ * @var {number}
+ * The font-size of form error messages
+ */
+/**
+ * @var {string}
+ * The font-family of form error messages
+ */
+/**
+ * @var {number}
+ * The line-height of form error messages
+ */
+/**
+ * @var {measurement} $form-item-margin-bottom
+ * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {number} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {number} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {number} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {string} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {string} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {number} $form-toolbar-field-font-size
+ * Font size for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-family
+ * Font family for toolbar form fields.
+ */
+/**
+ * @var {string} $form-toolbar-field-font-weight
+ * Font weight for toolbar form fields.
+ */
+/**
+ * @var {font} $form-toolbar-field-font
+ * Font for toolbar form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {number} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {string} $form-field-border-style
+ * Border style for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {string/list} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @var {number} $form-field-disabled-opacity
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @var {number/string}
+ * The line-height to use for the TextArea's text
+ */
+/**
+ * @class Ext.form.field.Display
+ */
+/**
+ * @var {color}
+ * The text color of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of display fields
+ */
+/**
+ * @var {number}
+ * The font-size of display fields
+ */
+/**
+ * @var {string}
+ * The font-family of display fields
+ */
+/**
+ * @var {number}
+ * The line-height of display fields
+ */
+/**
+ * @var {string}
+ * The font-weight of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The font-size of toolbar display fields
+ */
+/**
+ * @var {string}
+ * The font-family of toolbar display fields
+ */
+/**
+ * @var {number}
+ * The line-height of toolbar display fields
+ */
+/**
+ * @class Ext.window.MessageBox
+ */
+/**
+ * @var {color}
+ * The background-color of the MessageBox body
+ */
+/**
+ * @var {number}
+ * The border-width of the MessageBox body
+ */
+/**
+ * @var {color}
+ * The border-color of the MessageBox body
+ */
+/**
+ * @var {string}
+ * The border-style of the MessageBox body
+ */
+/**
+ * @var {list}
+ * The background-position of the MessageBox icon
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @var {number}
+ * The size of the checkbox
+ */
+/**
+ * @var {number}
+ * The space between the boxLabel and the checkbox.
+ */
+/**
+ * @class Ext.form.CheckboxGroup
+ */
+/**
+ * @var {number/list}
+ * The padding of the CheckboxGroup body element
+ */
+/**
+ * @var {color}
+ * The text color of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The padding of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The margin of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-width of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-style of the CheckboxGroup label
+ */
+/**
+ * @var {number}
+ * The border-color of the CheckboxGroup label
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @var {number}
+ * The font-size of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-weight of the FieldSet header
+ */
+/**
+ * @var {string}
+ * The font-family of the FieldSet header
+ */
+/**
+ * @var {number/string}
+ * The line-height of the FieldSet header
+ */
+/**
+ * @var {color}
+ * The text color of the FieldSet header
+ */
+/**
+ * @var {number}
+ * The border-width of the FieldSet
+ */
+/**
+ * @var {string}
+ * The border-style of the FieldSet
+ */
+/**
+ * @var {color}
+ * The border-color of the FieldSet
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's padding
+ */
+/**
+ * @var {number/list}
+ * The FieldSet's margin
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's header
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the FieldSet's collapse tool
+ */
+/**
+ * @var {number/list}
+ * The margin to apply to the FieldSet's checkbox (for FieldSets that use
+ * {@link #checkboxToggle})
+ */
+/**
+ * @var {number}
+ * The size of the FieldSet's collapse tool
+ */
+/**
+ * @var {string} $fieldset-collapse-tool-background-image
+ * The background-image to use for the collapse tool. If null the default tool
+ * sprite will be used.  Defaults to null.
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * @var {number}
+ * The size of the radio button
+ */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @var {number}
+ * The width of the Trigger field's trigger element
+ */
+/**
+ * @var {number/list}
+ * The width of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border
+ */
+/**
+ * @var {string}
+ * The style of the trigger's border
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when hovered
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused
+ */
+/**
+ * @var {color}
+ * The color of the trigger's border when the field is focused and the trigger is hovered
+ */
+/**
+ * @class Ext.form.field.Spinner
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons
+ */
+/**
+ * @var {number}
+ * The height of the Spinner trigger buttons when the Spinner is used on a
+ * {@link Ext.toolbar.Toolbar Toolbar}
+ */
+/**
+ * @class Ext.toolbar.Paging
+ */
+/**
+ * @var {boolean}
+ * True to include different icons when the paging toolbar buttons are disabled.
+ */
+/**
+ * @class Ext.view.BoundList
+ */
+/**
+ * @var {color}
+ * The background-color of the BoundList
+ */
+/**
+ * @var {color}
+ * The border-color of the BoundList
+ */
+/**
+ * @var {number}
+ * The border-width of the BoundList
+ */
+/**
+ * @var {string}
+ * The border-style of the BoundList
+ */
+/**
+ * @var {number}
+ * The height of BoundList items
+ */
+/**
+ * @var {number/list}
+ * The padding of BoundList items
+ */
+/**
+ * @var {number}
+ * The border-width of BoundList items
+ */
+/**
+ * @var {string}
+ * The border-style of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The border-color of selected BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered BoundList items
+ */
+/**
+ * @var {color}
+ * The background-color of selected BoundList items
+ */
+/**
+ * @class Ext.picker.Date
+ */
+/**
+ * @var {number}
+ * The border-width of the DatePicker
+ */
+/**
+ * @var {string}
+ * The border-style of the DatePicker
+ */
+/**
+ * @var {color}
+ * The background-color of the DatePicker
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker next arrow
+ */
+/**
+ * @var {string}
+ * The background-image of the DatePicker previous arrow
+ */
+/**
+ * @var {number}
+ * The width of DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The height of DatePicker arrows
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a DatePicker arrow
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows
+ */
+/**
+ * @var {number}
+ * The opacity of the DatePicker arrows when hovered
+ */
+/**
+ * @var {string/list}
+ * The Date Picker header background gradient. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker header
+ */
+/**
+ * @var {color}
+ * The color of the Date Picker month button
+ */
+/**
+ * @var {number}
+ * The width of the arrow on the Date Picker month button
+ */
+/**
+ * @var {string}
+ * The background-image of the arrow on the Date Picker month button
+ */
+/**
+ * @var {boolean}
+ * True to render the month button as transparent
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker header
+ */
+/**
+ * @var {number}
+ * The height of Date Picker items
+ */
+/**
+ * @var {number}
+ * The width of Date Picker items
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Date Picker item
+ */
+/**
+ * @var {string}
+ * The font-family of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The font-size of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Date Picker column headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of Date Picker column headers. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker column headers
+ */
+/**
+ * @var {string}
+ * The text-align of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The height of Date Picker column headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Date Picker column headers
+ */
+/**
+ * @var {number}
+ * The border-width of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Date Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Date Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of today's date on the Date Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the selected item
+ */
+/**
+ * @var {string}
+ * The font-weight of the selected item
+ */
+/**
+ * @var {color}
+ * The text color of the items in the previous and next months
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a disabled item
+ */
+/**
+ * @var {color}
+ * The text color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of disabled Date Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of the Date Picker footer
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Date Picker footer. Can be either the name of a
+ * predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The border-style of the Date Picker footer
+ */
+/**
+ * @var {string}
+ * The text-align of the Date Picker footer
+ */
+/**
+ * @var {number/list}
+ * The padding of the Date Picker footer
+ */
+/**
+ * @var {number}
+ * The space between the footer buttons
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The text color of Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-family of Month Picker items
+ */
+/**
+ * @var {number}
+ * The font-size of Month Picker items
+ */
+/**
+ * @var {string}
+ * The font-weight of Month Picker items
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items
+ */
+/**
+ * @var {string}
+ * The text-align of Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Month Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of selected Month Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of selected Month Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of selected Month Picker items
+ */
+/**
+ * @var {number}
+ * The height of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The width of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a Month Picker year navigation button 
+ */
+/**
+ * @var {number}
+ * The opacity of the Month Picker year navigation buttons 
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Month Picker year navigation buttons 
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker next year navigation button
+ */
+/**
+ * @var {string}
+ * The background-image of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker next year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the Month Picker previous year navigation button
+ */
+/**
+ * @var {list}
+ * The background-poisition of the hovered Month Picker previous year navigation button
+ */
+/**
+ * @var {string}
+ * The border-style of the Month Picker separator
+ */
+/**
+ * @var {number}
+ * The border-width of the Month Picker separator
+ */
+/**
+ * @var {color}
+ * The border-color of the Month Picker separator
+ */
+/**
+ * @var {number/list}
+ * The margin of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @var {number}
+ * The height of Month Picker items when the datepicker does not have footer buttons
+ */
+/**
+ * @class Ext.picker.Color
+ */
+/**
+ * @var {color}
+ * The background-color of Color Pickers
+ */
+/**
+ * @var {color}
+ * The border-color of Color Pickers
+ */
+/**
+ * @var {number}
+ * The border-width of Color Pickers
+ */
+/**
+ * @var {string}
+ * The border-style of Color Pickers
+ */
+/**
+ * @var {number}
+ * The number of columns to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The number of rows to display in the Color Picker
+ */
+/**
+ * @var {number}
+ * The height of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The width of each Color Picker item
+ */
+/**
+ * @var {number}
+ * The padding of each Color Picker item
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse is over a Color Picker item
+ */
+/**
+ * @var {color}
+ * The border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The border-style of Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of Color Picker items
+ */
+/**
+ * @var {color}
+ * The background-color of hovered Color Picker items
+ */
+/**
+ * @var {color}
+ * The border-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The background-color of the selected Color Picker item
+ */
+/**
+ * @var {color}
+ * The inner border-color of Color Picker items
+ */
+/**
+ * @var {number}
+ * The inner border-width of Color Picker items
+ */
+/**
+ * @var {string}
+ * The inner border-style of Color Picker items
+ */
+/**
+ * @class Ext.form.field.HtmlEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the HtmlEditor
+ */
+/**
+ * @var {color}
+ * The background-color of the HtmlEditor
+ */
+/**
+ * @var {number}
+ * The size of the HtmlEditor toolbar icons
+ */
+/**
+ * @var {number}
+ * The font-size of the HtmlEditor's font selection control
+ */
+/**
+ * @var {number}
+ * The font-family of the HtmlEditor's font selection control
+ */
+/**
+ * @class Ext.panel.Table
+ */
+/**
+ * @var {color}
+ * The color of the text in the grid cells
+ */
+/**
+ * @var {number}
+ * The font size of the text in the grid cells
+ */
+/**
+ * var {number} $grid-row-cell-line-height
+ * The line-height of the text inside the grid cells.
+ */
+/**
+ * @var {string}
+ * The font-weight of the text in the grid cells
+ */
+/**
+ * @var {string}
+ * The font-family of the text in the grid cells
+ */
+/**
+ * @var {color}
+ * The background-color of the grid cells
+ */
+/**
+ * @var {color}
+ * The border-color of row/column borders. Can be specified as a single color, or as a list
+ * of colors containing the row border color followed by the column border color.
+ */
+/**
+ * @var {string}
+ * The border-style of the row/column borders.
+ */
+/**
+ * @var {number}
+ * The border-width of the row and column borders.
+ */
+/**
+ * @var {color}
+ * The background-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {string}
+ * The background-gradient to use for "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {number}
+ * The border-width of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border width is determined by
+ * {#$grid-row-cell-border-width}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border color is determined by
+ * {#$grid-row-cell-border-color}.
+ */
+/**
+ * @var {string}
+ * The border-style of "special" cells.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the row border style is determined by
+ * {#$grid-row-cell-border-style}.
+ */
+/**
+ * @var {color}
+ * The border-color of "special" cells when the row is selected using a {@link
+ * Ext.selection.RowModel Row Selection Model}.  Special cells are created by {@link
+ * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection
+ * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ * Only applies to the vertical border, since the selected row border color is determined by
+ * {#$grid-row-cell-selected-border-color}.
+ */
+/**
+ * @var {color} 
+ * The background-color of "special" cells when the row is hovered. Special cells are
+ * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel
+ * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}.
+ */
+/**
+ * @var {color}
+ * The background-color color of odd-numbered rows when the table view is configured with
+ * `{@link Ext.view.Table#stripeRows stripeRows}: true`.
+ */
+/**
+ * @var {string}
+ * The border-style of the hovered row
+ */
+/**
+ * @var {color}
+ * The text color of the hovered row
+ */
+/**
+ * @var {color}
+ * The background-color of the hovered row
+ */
+/**
+ * @var {color}
+ * The border-color of the hovered row
+ */
+/**
+ * @var {string}
+ * The border-style of the selected row
+ */
+/**
+ * @var {color}
+ * The text color of the selected row
+ */
+/**
+ * @var {color}
+ * The background-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the selected row
+ */
+/**
+ * @var {color}
+ * The border-color of the focused row
+ */
+/**
+ * @var {string}
+ * The border-style of the focused row
+ */
+/**
+ * @var {color}
+ * The text color of the focused row
+ */
+/**
+ * @var {color}
+ * The background-color of the focused row
+ */
+/**
+ * @var {boolean}
+ * True to show the focus border when a row is focused even if the grid has no 
+ * {@link Ext.panel.Table#rowLines rowLines}.  
+ */
+/**
+ * @var {color} 
+ * The text color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {color} 
+ * The background-color of a selected cell when using a {@link Ext.selection.CellModel
+ * Cell Selection Model}.
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid cell's inner div element
+ */
+/**
+ * @var {string}
+ * The type of text-overflow to use on the grid cell's inner div element
+ */
+/**
+ * @var {color}
+ * The border-color of the grid body
+ */
+/**
+ * @var {number}
+ * The border-width of the grid body border
+ */
+/**
+ * @var {string}
+ * The border-style of the grid body border
+ */
+/**
+ * @var {color}
+ * The background-color of the grid body
+ */
+/**
+ * @var {number}
+ * The amount of padding to apply to the grid body when the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The background color of the grid body when the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {number}
+ * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when
+ * the grid contains no data.
+ */
+/**
+ * @var {color}
+ * The color of the resize markers that display when dragging a column border to resize
+ * the column
+ */
+/**
+ * @class Ext.grid.header.DropZone
+ */
+/**
+ * @var {number}
+ * The size of the column move icon
+ */
+/**
+ * @class Ext.grid.header.Container
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of grid headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid headers
+ */
+/**
+ * @var {color}
+ * The background-color of grid headers when the cursor is over the header
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of grid headers when the cursor is over the header.  Can be
+ * either the name of a predefined gradient or a list of color stops. Used as the `$type`
+ * parameter for {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The background-color of a grid header when its menu is open
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to grid headers
+ */
+/**
+ * @var {number}
+ * The height of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of grid header triggers
+ */
+/**
+ * @var {number}
+ * The width of the grid header sort icon
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over a grid header trigger
+ */
+/**
+ * @var {number}
+ * The amount of space between the header trigger and text
+ */
+/**
+ * @var {list}
+ * The background-position of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger
+ */
+/**
+ * @var {color}
+ * The background-color of the header trigger when the menu is open
+ */
+/**
+ * @var {number}
+ * The space between the grid header sort icon and the grid header text
+ */
+/**
+ * @class Ext.grid.column.Column
+ */
+/**
+ * @var {string}
+ * The font-family of grid column headers
+ */
+/**
+ * @var {number}
+ * The font-size of grid column headers
+ */
+/**
+ * @var {string}
+ * The font-weight of grid column headers
+ */
+/**
+ * @var {number}
+ * The line-height of grid column headers
+ */
+/**
+ * @var {color}
+ * The text color of grid column headers
+ */
+/**
+ * @var {number}
+ * The border-width of grid column headers
+ */
+/**
+ * @var {string}
+ * The border-style of grid column headers
+ */
+/**
+ * @class Ext.grid.column.Action
+ */
+/**
+ * @var {number}
+ * The height of action column icons
+ */
+/**
+ * @var {number}
+ * The width of action column icons
+ */
+/**
+ * @var {string}
+ * The type of cursor to display when the cursor is over an action column icon
+ */
+/**
+ * @var {number}
+ * The opacity of disabled action column icons
+ */
+/**
+ * @var {number}
+ * The amount of padding to add to the left and right of the action column cell
+ */
+/**
+ * @class Ext.grid.column.CheckColumn
+ */
+/**
+ * @var {number}
+ * Opacity of disabled CheckColumns
+ */
+/**
+ * @class Ext.grid.column.RowNumberer
+ */
+/**
+ * @var {number}
+ * The horizontal space before the number in the RowNumberer cell
+ */
+/**
+ * @var {number}
+ * The horizontal space after the number in the RowNumberer cell
+ */
+/**
+ * @class Ext.grid.feature.Grouping
+ */
+/**
+ * @var {color}
+ * The background color of group headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of group headers
+ */
+/**
+ * @var {string}
+ * The border-style of group headers
+ */
+/**
+ * @var {color}
+ * The border-color of group headers
+ */
+/**
+ * @var {number/list}
+ * The padding of group headers
+ */
+/**
+ * @var {string}
+ * The cursor of group headers
+ */
+/**
+ * @var {color}
+ * The text color of group header titles
+ */
+/**
+ * @var {string}
+ * The font-family of group header titles
+ */
+/**
+ * @var {number}
+ * The font-size of group header titles
+ */
+/**
+ * @var {string}
+ * The font-weight of group header titles
+ */
+/**
+ * @var {number}
+ * The line-height of group header titles
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to add to the group title element.  This is typically used
+ * to reserve space for an icon by setting the amountof space to be reserved for the icon
+ * as the left value and setting the remaining sides to 0.
+ */
+/**
+ * @class Ext.grid.feature.RowBody
+ */
+/**
+ * @var {number}
+ * The font-size of the RowBody
+ */
+/**
+ * @var {number}
+ * The line-height of the RowBody
+ */
+/**
+ * @var {string}
+ * The font-family of the RowBody
+ */
+/**
+ * @var {number}
+ * The font-weight of the RowBody
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowBody
+ */
+/**
+ * @class Ext.grid.feature.RowWrap
+ */
+/**
+ * @var {color}
+ * The border-color of wrapped rows
+ */
+/**
+ * @var {string}
+ * The border-style of wrapped rows
+ */
+/**
+ * @class Ext.grid.locking.Lockable
+ */
+/**
+ * @var {number}
+ * The width of the border between the locked views
+ */
+/**
+ * @var {string}
+ * The border-style of the border between the locked views
+ */
+/**
+ * @class Ext.grid.plugin.Editing
+ */
+/**
+ * The height of grid editor text fields.  Defaults to $form-field-height.  If grid row
+ * height is smaller than $form-field-height, defaults to the grid row height.  Grid row
+ * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of
+ * $grid-cell-inner-padding.
+ */
+/**
+ * The padding of grid editor text fields.
+ */
+/**
+ * @var {number}
+ * The font size of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-weight of the grid editor text
+ */
+/**
+ * @var {string}
+ * The font-family of the grid editor text
+ */
+/**
+ * @class Ext.grid.plugin.RowEditing
+ */
+/**
+ * @var {color}
+ * The background-color of the RowEditor
+ */
+/**
+ * @var {color}
+ * The border-color of the RowEditor
+ */
+/**
+ * @var {number}
+ * The border-width of the RowEditor
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor
+ */
+/**
+ * @var {number}
+ * The amount of space in between the editor fields
+ */
+/**
+ * @var {number}
+ * The space between the RowEditor buttons
+ */
+/**
+ * @var {number}
+ * The border-radius of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * The padding of the RowEditor button container
+ */
+/**
+ * @var {number/list}
+ * Padding to apply to the body element of the error tooltip
+ */
+/**
+ * @var {string}
+ * The list-style of the error tooltip's list items
+ */
+/**
+ * @var {number}
+ * Space to add before each list item on the error tooltip
+ */
+/**
+ * @class Ext.grid.plugin.RowExpander
+ */
+/**
+ * @var {number}
+ * The height of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The width of the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space before the RowExpander icon
+ */
+/**
+ * @var {number}
+ * The horizontal space after the RowExpander icon
+ */
+/**
+ * @var {string}
+ * The cursor for the RowExpander icon
+ */
+/**
+ * @class Ext.grid.property.Grid
+ */
+/**
+ * @var {string}
+ * The background-image of property grid cells
+ */
+/**
+ * @var {string}
+ * The background-position of property grid cells
+ */
+/**
+ * @var {number/string}
+ * The padding to add before the text of property grid cells to make room for the
+ * background-image. Only applies if $grid-property-cell-background-image is not null
+ */
+/**
+ * @class Ext.layout.container.Accordion
+ */
+/**
+ * @var {color}
+ * The text color of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of Accordion headers
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The border-width of Accordion headers
+ */
+/**
+ * @var {number/list}
+ * The padding of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-weight of Accordion headers
+ */
+/**
+ * @var {string}
+ * The font-family of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {string}
+ * The text-transform property of Accordion headers
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {color}
+ * The background-color of the Accordion layout element
+ */
+/**
+ * @var {number/list}
+ * The padding of the Accordion layout element
+ */
+/**
+ * @var {string}
+ * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers
+ */
+/**
+ * @class Ext.resizer.Splitter
+ */
+/**
+ * @var {number}
+ * The size of the Splitter
+ */
+/**
+ * @var {color}
+ * The background-color of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {number}
+ * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged)
+ */
+/**
+ * @var {string}
+ * The the type of cursor to display when the cursor is over the collapse tool
+ */
+/**
+ * @var {number}
+ * The size of the collapse tool. This becomes the width of the collapse tool for
+ * horizontal splitters, and the height for vertical splitters.
+ */
+/**
+ * @class Ext.layout.container.Border
+ */
+/**
+ * @var {color}
+ * The background-color of the Border layout element
+ */
+/**
+ * @class Ext.menu.Menu
+ */
+/**
+ * @var {color}
+ * The background-color of the Menu
+ */
+/**
+ * @var {color}
+ * The border-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The background-color of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {color}
+ * The border-color of the Menu
+ */
+/**
+ * @var {string}
+ * The border-style of the Menu
+ */
+/**
+ * @var {number}
+ * The border-width of the Menu
+ */
+/**
+ * @var {number}
+ * The font-size of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The margin of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The border-width of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {string}
+ * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The background-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {color}
+ * The border-color of the active {@link Ext.menu.Item Menu Item}
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {number}
+ * The border-radius of {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The size of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {list}
+ * The background-position of {@link Ext.menu.Item Menu Item} icons
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} text
+ */
+/**
+ * @var {number/list}
+ * The margin of {@link Ext.menu.Separator Menu Separators}
+ */
+/**
+ * @var {number}
+ * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room
+ * for the checkbox
+ */
+/**
+ * @var {number}
+ * The height of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The width of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows
+ */
+/**
+ * @var {number}
+ * The opacity of disabled {@link Ext.menu.Item Menu Items}
+ */
+/**
+ * @var {number}
+ * The height of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of Menu crollers when pressed
+ */
+/**
+ * @var {number/list}
+ * The padding to apply to the Menu body element
+ */
+/**
+ * @var {color}
+ * The color of Menu Item text
+ */
+/**
+ * @var {number/list}
+ * The margin non-MenuItems placed in a Menu
+ */
+/**
+ * @var {color} $menu-glyph-color
+ * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @var {number} $menu-glyph-opacity
+ * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph}
+ */
+/**
+ * @class Ext.panel.Tool
+ */
+/**
+ * @var {number}
+ * The size of Tools
+ */
+/**
+ * @var {boolean}
+ * True to change the background-position of the Tool on hover. Allows for a separate
+ * hover state icon in the sprite.
+ */
+/**
+ * @var {string}
+ * The cursor to display when the mouse cursor is over a Tool
+ */
+/**
+ * @var {number}
+ * The opacity of Tools
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tools
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tools
+ */
+/**
+ * @var {string}
+ * The sprite to use as the background-image for Tools
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb width
+ */
+/**
+ * @var {number}
+ * The horizontal slider thumb height
+ */
+/**
+ * @var {number}
+ * The width of the horizontal slider end caps
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb width
+ */
+/**
+ * @var {number}
+ * The vertical slider thumb height
+ */
+/**
+ * @var {number}
+ * The height of the vertical slider end caps
+ */
+/**
+ * @class Ext.tab.Tab
+ */
+/**
+ * @var {color}
+ * The base color of Tabs
+ */
+/**
+ * @var {color}
+ * The base color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The base color of the active Tabs
+ */
+/**
+ * @var {color}
+ * The base color of disabled Tabs
+ */
+/**
+ * @var {color}
+ * The text color of Tabs
+ */
+/**
+ * @var {color}
+ * The text color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The text color of the active Tab
+ */
+/**
+ * @var {color}
+ * The text color of disabled Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of hovered Tabs
+ */
+/**
+ * @var {number}
+ * The font-size of the active Tab
+ */
+/**
+ * @var {number}
+ * The font-size of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-family of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-family of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of hovered Tabs
+ */
+/**
+ * @var {string}
+ * The font-weight of the active Tab
+ */
+/**
+ * @var {string}
+ * The font-weight of disabled Tabs
+ */
+/**
+ * @var {string}
+ * The Tab cursor
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tabs
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {string/list}
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {list}
+ * The border-radius of Tabs
+ */
+/**
+ * @var {number}
+ * The border-width of Tabs
+ */
+/**
+ * @var {number/list}
+ * The inner border-width of Tabs
+ */
+/**
+ * @var {color}
+ * The inner border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of hovered Tabs
+ */
+/**
+ * @var {color}
+ * The border-color of the active Tab
+ */
+/**
+ * @var {color}
+ * The border-color of disabled Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of Tabs
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab's text element
+ */
+/**
+ * @var {number}
+ * The line-height of Tabs
+ */
+/**
+ * @var {number/list}
+ * The margin of Tabs. Typically used to add horizontal space between the tabs.
+ */
+/**
+ * @var {number}
+ * The width of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The height of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the top of the tab
+ */
+/**
+ * @var {number}
+ * The distance to offset the Tab close icon from the right of the tab
+ */
+/**
+ * @var {number}
+ * the space in between the text and the close button
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when hovered
+ */
+/**
+ * @var {number}
+ * The opacity of the Tab close icon when the Tab is disabled
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on hover
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {boolean}
+ * True to change the x background-postition of the close icon background image on click
+ * to allow for a horizontally aligned background image sprite
+ */
+/**
+ * @var {number}
+ * The width of Tab icons
+ */
+/**
+ * @var {number}
+ * The height of Tab icons
+ */
+/**
+ * @var {number}
+ * The space between the Tab icon and the Tab text
+ */
+/**
+ * @var {number}
+ * The background-position of Tab icons
+ */
+/**
+ * @var {color}
+ * The color of Tab glyph icons
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is hovered
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is active
+ */
+/**
+ * @var {color}
+ * The color of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon
+ */
+/**
+ * @var {number}
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's main element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's text element when the tab is disabled
+ */
+/**
+ * @var {number}
+ * opacity to apply to the tab's icon element when the tab is disabled
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a left-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `left`.
+ */
+/**
+ * @var {string}
+ * Experimental - Has issues with IE
+ * The direction to rotate the contents of a right-aligned tab.  `right` to rotate
+ * clockwise or `left` to rotate counterclockwise. Defaults to `right`.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tab UI
+ */
+/**
+ * @class Ext.tab.Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {color}
+ * The base color of the Tab Bar
+ */
+/**
+ * @var {string/list}
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar
+ */
+/**
+ * @var {number}
+ * The height of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The border-color of the Tab Bar strip
+ */
+/**
+ * @var {color}
+ * The background-color of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the Tab Bar strip
+ */
+/**
+ * @var {number/list}
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ */
+/**
+ * @var {number}
+ * The width of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of the Tab Bar scrollers
+ */
+/**
+ * @var {string}
+ * The cursor of disabled Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of hovered Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of pressed Tab Bar scrollers
+ */
+/**
+ * @var {number}
+ * The opacity of disabled Tab Bar scrollers
+ */
+/**
+ * @var {boolean}
+ * true to change the x postition of the background image on hover to allow for a
+ * horizonatlly alined background image sprite
+ */
+/**
+ * @var {boolean}
+ * true to include separate scroller icons for "plain" tabbars
+ */
+/**
+ * @var {boolean}
+ * if true, the tabbar will use symmetrical scroller icons.  Top and bottom tabbars
+ * will share icons, and Left and right will share icons.
+ */
+/**
+ * @var {boolean}
+ * True to include the "default" tabbar UI
+ */
+/**
+ * @class Ext.selection.CheckboxModel
+ */
+/**
+ * @var {number}
+ * The horizontal space before the checkbox
+ */
+/**
+ * @var {number}
+ * The horizontal space after the checkbox
+ */
+/**
+ * @class Ext.tree.Panel
+ */
+/**
+ * @var {number} $tree-elbow-width
+ * The width of the tree elbow/arrow icons
+ */
+/**
+ * @var {number} $tree-icon-width
+ * The width of the tree folder/leaf icons
+ */
+/**
+ * @var {number} $tree-elbow-spacing 
+ * The amount of spacing between the tree elbows or arrows, and the checkbox or icon.
+ */
+/**
+ * @var {number} $tree-checkbox-spacing
+ * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon
+ */
+/**
+ * @var {number} $tree-icon-spacing
+ * The amount of space (in pixels) between the folder/leaf icons and the text
+ */
+/**
+ * @var {string} $tree-expander-cursor
+ * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon)
+ */
+/**
+ * @var {number/list}
+ * The amount of padding to apply to the tree cell's inner div element
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-content-box
+ * True to include rules for browsers that do not support the border-box model
+ * (IE6 strict and IE7 strict)
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {measurement} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/* including package ext-theme-base */
+/*
+ * Although this file only contains a variable, all vars are included by default
+ * in application sass builds, so this needs to be in the rule file section
+ * to allow javascript inclusion filtering to disable it.
+ */
+/**
+ * @var {boolean} $include-rtl
+ * True to include right-to-left style rules.  This variable gets set to true automatically
+ * for rtl builds. You should not need to ever assign a value to this variable, however
+ * it can be used to suppress rtl-specific rules when they are not needed.  For example:
+ *     @if $include-rtl {
+ *         .x-rtl.foo {
+ *             margin-left: $margin-right;
+ *             margin-right: $margin-left;
+ *         }
+ *     }
+ * @member Global_CSS
+ */
+/* line 1, ../../../ext-theme-base/sass/src/Component.scss */
+.x-body {
+  margin: 0;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/Component.scss */
+img {
+  border: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/Component.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/Component.scss */
+.x-rtl {
+  direction: rtl;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ltr {
+  direction: ltr;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/Component.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/Component.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/Component.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/Component.scss */
+.x-fixed-layer {
+  position: fixed !important;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/Component.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 67, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie6 .x-item-disabled {
+  filter: none;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute !important;
+  top: -10000px !important;
+}
+
+/* line 88, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important;
+}
+
+/* line 94, ../../../ext-theme-base/sass/src/Component.scss */
+.x-hide-clip {
+  position: absolute!important;
+  clip: rect(0, 0, 0, 0);
+  clip: rect(0 0 0 0);
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/Component.scss */
+.x-masked-relative {
+  position: relative;
+}
+
+/* line 108, ../../../ext-theme-base/sass/src/Component.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 117, ../../../ext-theme-base/sass/src/Component.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 121, ../../../ext-theme-base/sass/src/Component.scss */
+.x-selectable {
+  cursor: auto;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+  user-select: text;
+  -o-user-select: text;
+}
+
+/* line 136, ../../../ext-theme-base/sass/src/Component.scss */
+.x-list-plain {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+/* line 143, ../../../ext-theme-base/sass/src/Component.scss */
+.x-table-plain {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-size: 1em;
+}
+
+/* line 156, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+
+/* line 162, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x;
+}
+
+/* line 166, ../../../ext-theme-base/sass/src/Component.scss */
+.x-frame-mc {
+  background-repeat: repeat-x;
+  overflow: hidden;
+}
+
+/* line 171, ../../../ext-theme-base/sass/src/Component.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+
+/* line 178, ../../../ext-theme-base/sass/src/Component.scss */
+.x-css-shadow {
+  position: absolute;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+}
+
+/* line 184, ../../../ext-theme-base/sass/src/Component.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-rtl > .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */
+.x-ie6 .x-rtl .x-box-item,
+.x-quirks .x-ie .x-rtl .x-box-item {
+  right: 0;
+  left: auto;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */
+div.x-editor {
+  overflow: visible;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-shim {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress {
+  position: relative;
+  border-style: solid;
+  overflow: hidden;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-bar {
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  height: 100%;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn {
+  display: inline-block;
+  position: relative;
+  zoom: 1;
+  *display: inline;
+  outline: 0;
+  cursor: pointer;
+  white-space: nowrap;
+  vertical-align: middle;
+  text-decoration: none;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-wrap {
+  position: relative;
+  display: block;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-button {
+  position: relative;
+  display: block;
+  text-decoration: none;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-center {
+  text-align: center;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-left {
+  text-align: left;
+}
+
+/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-left {
+  text-align: right;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-btn-inner-right {
+  text-align: right;
+}
+
+/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */
+.x-rtl.x-btn-inner-right {
+  text-align: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-target {
+  position: absolute;
+  width: 20000px;
+  top: 0;
+  left: 0;
+  height: 1px;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-target {
+  left: auto;
+  right: 0;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0;
+}
+
+/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-horizontal-box-overflow-body {
+  float: left;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller {
+  position: relative;
+  background-repeat: no-repeat;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-left,
+.x-box-scroller-right {
+  float: left;
+  height: 100%;
+  z-index: 5;
+}
+
+/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-scroller-top .x-box-scroller,
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0;
+  background-position: center 0;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-box-menu-after {
+  float: right;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */
+.x-rtl.x-box-menu-after {
+  float: left;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  white-space: nowrap;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator {
+  display: block;
+  font-size: 1px;
+  overflow: hidden;
+  cursor: default;
+  border: 0;
+  width: 0;
+  height: 0;
+  line-height: 0px;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-plain {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-vertical {
+  position: static;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-left {
+  border-right-width: 0 !important;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-right {
+  border-left-width: 0 !important;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important;
+}
+
+/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-l {
+  border-left-width: 0 !important;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-b {
+  border-bottom-width: 0 !important;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-bl {
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-r {
+  border-right-width: 0 !important;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rl {
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rb {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-rbl {
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-t {
+  border-top-width: 0 !important;
+}
+
+/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tl {
+  border-top-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tb {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tbl {
+  border-top-width: 0 !important;
+  border-bottom-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-tr {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+}
+
+/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trl {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-left-width: 0 !important;
+}
+
+/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trb {
+  border-top-width: 0 !important;
+  border-right-width: 0 !important;
+  border-bottom-width: 0 !important;
+}
+
+/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */
+.x-noborder-trbl {
+  border-width: 0 !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-icon {
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  text-align: center;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */
+.x-rtl.x-header-text-container {
+  -o-text-overflow: clip;
+  text-overflow: clip;
+}
+
+/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */
+.x-dd-drag-proxy,
+.x-dd-drag-current {
+  z-index: 1000000!important;
+  pointer-events: none;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 12px helvetica, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drag-ghost {
+  padding-left: 5px;
+  padding-right: 20px;
+}
+/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-rtl .x-dd-drop-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url(images/dd/drop-yes.png);
+}
+
+/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url(images/dd/drop-add.png);
+}
+
+/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */
+.x-dd-drop-nodrop div.x-dd-drop-icon {
+  background-image: url(images/dd/drop-no.png);
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel {
+  outline: none;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top;
+}
+
+/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y;
+}
+
+/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-body {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */
+.x-table-layout {
+  font-size: 1em;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+}
+/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body .x-table-layout-cell {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden;
+}
+/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window .x-window-wrap {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */
+.x-window-body-plain {
+  background: transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  display: block;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-right {
+  text-align: right;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */
+.x-form-invalid-icon ul {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  overflow: auto;
+  resize: none;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */
+.x-safari.x-mac .x-form-textarea {
+  margin-bottom: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  vertical-align: top;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  vertical-align: top;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  vertical-align: top;
+  overflow: hidden;
+  padding: 0;
+  border: 0;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  display: inline-block;
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  display: block;
+  /* preserve margins in IE */
+  position: relative;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  overflow: hidden;
+}
+/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-item,
+.x-fieldset-header .x-tool {
+  float: left;
+}
+/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb-wrap {
+  font-size: 0;
+  line-height: 0;
+}
+/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-form-cb {
+  margin: 0;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-rtl.x-fieldset-header .x-form-item,
+.x-rtl.x-fieldset-header .x-tool {
+  float: right;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  float: left;
+}
+
+/*misc*/
+/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-webkit *:focus {
+  outline: none !important;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-item-body {
+  position: relative;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-rtl.x-form-item .x-form-item-input-row {
+  position: relative;
+  right: 0;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  cursor: pointer;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-item-disabled .x-form-trigger {
+  cursor: default;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-trigger-noedit {
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  vertical-align: top;
+  border-collapse: separate;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */
+.x-form-spinner-up,
+.x-form-spinner-down {
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-inner {
+  table-layout: fixed;
+  width: 100%;
+  border-collapse: separate;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  padding: 0;
+}
+
+/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  position: relative;
+  zoom: 1;
+}
+
+/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  position: absolute;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  padding: 0;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  display: block;
+  zoom: 1;
+  text-decoration: none;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-body {
+  height: 100%;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 100%;
+}
+
+/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  float: left;
+}
+
+/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  display: block;
+  text-decoration: none;
+}
+
+/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  float: left;
+  text-align: center;
+}
+
+/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  display: inline-block;
+  outline: none;
+  font-size: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-monthpicker-buttons {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
+/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */
+.x-strict .x-ie6 .x-monthpicker-buttons {
+  bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-btn {
+  overflow: hidden;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-form-file-input {
+  border: 0;
+  position: absolute;
+  cursor: pointer;
+  top: -2px;
+  right: -2px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 1000px;
+}
+
+/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */
+.x-rtl.x-form-file-input {
+  right: auto;
+  left: -2px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */
+.x-form-item-hidden {
+  margin: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  float: left;
+  text-decoration: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  display: block;
+  font-size: 1px;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */
+.x-htmleditor-iframe {
+  display: block;
+  overflow: auto;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */
+.x-fit-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-row,
+.x-grid-data-row {
+  outline: none;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-td {
+  overflow: hidden;
+  border-width: 0;
+  vertical-align: top;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  white-space: nowrap;
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat center top transparent;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  cursor: default;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header {
+  position: absolute;
+  overflow: hidden;
+  background-repeat: repeat-x;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  zoom: 1;
+  white-space: nowrap;
+  position: relative;
+  overflow: hidden;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-text {
+  white-space: nowrap;
+  background-repeat: no-repeat;
+  zoom: 1;
+  display: inline-block;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  background-repeat: no-repeat;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+}
+
+/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  left: 0;
+  right: auto;
+}
+
+/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block;
+}
+
+/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-right {
+  text-align: right;
+}
+
+/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-right {
+  text-align: left;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-left {
+  text-align: left;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-align-left {
+  text-align: right;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */
+.x-column-header-align-center {
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  line-height: 0;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */
+.x-row-numberer .x-column-header-inner {
+  text-overflow: clip;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  white-space: nowrap;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */
+.x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  zoom: 1;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */
+.x-grid-row-body-hidden {
+  display: none;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-table {
+  border: 0;
+}
+/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */
+td.x-grid-rowwrap .x-grid-cell {
+  border-bottom: 0;
+  background-color: transparent;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-cb-wrap {
+  text-align: center;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  margin: 0;
+  white-space: nowrap;
+  overflow: hidden;
+}
+/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor div.x-form-action-col-field {
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor {
+  position: absolute;
+  overflow: visible;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  position: absolute;
+  white-space: nowrap;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  font-size: 0;
+  line-height: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-ct {
+  position: relative;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */
+.x-abs-layout-item {
+  position: absolute !important;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter {
+  font-size: 1px;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+}
+
+/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed,
+.x-splitter-horizontal-noresize,
+.x-splitter-vertical-noresize {
+  cursor: default;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  position: absolute;
+  background-repeat: no-repeat;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  position: relative;
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-border-region-slide-in {
+  z-index: 5;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-column {
+  float: left;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-rtl > .x-column {
+  float: right;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-rtl .x-column, .x-quirks .x-ie .x-rtl .x-column {
+  float: right;
+}
+
+/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/
+}
+
+/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative;
+}
+
+/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu {
+  outline: none;
+}
+
+/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp {
+  margin: 2px;
+}
+/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-cmp .x-field-label-cell {
+  vertical-align: middle;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  z-index: 0;
+  height: 100%;
+  overflow: hidden;
+}
+/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none;
+}
+
+/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  text-decoration: none;
+  outline: 0;
+  zoom: 1;
+}
+
+/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  zoom: 1;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */
+.x-menu-item-icon,
+.x-menu-item-icon-right,
+.x-menu-item-arrow {
+  position: absolute;
+  text-align: center;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider {
+  outline: none;
+  zoom: 1;
+  position: relative;
+}
+
+/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1;
+}
+/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  background: repeat-y 0 0;
+}
+
+/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-end {
+  zoom: 1;
+}
+
+/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-thumb {
+  position: absolute;
+  background: no-repeat 0 0;
+}
+/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  left: 0;
+}
+/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */
+a.x-tab {
+  text-decoration: none;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */
+.x-tab-bar {
+  position: relative;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker {
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  font-size: 0;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab {
+  display: block;
+  white-space: nowrap;
+  z-index: 1;
+}
+
+/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-active {
+  z-index: 3;
+}
+
+/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-wrap {
+  display: block;
+  position: relative;
+}
+
+/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-button {
+  zoom: 1;
+  display: block;
+  outline: none;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-inner {
+  display: block;
+  text-align: center;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-btn-icon-el {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  position: absolute;
+  background-repeat: no-repeat;
+  text-align: center;
+}
+
+/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar {
+  z-index: 1;
+}
+
+/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-body {
+  z-index: 2;
+  position: relative;
+}
+
+/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip {
+  position: absolute;
+  line-height: 0;
+  font-size: 0;
+  z-index: 1;
+}
+
+/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-horizontal .x-tab-bar-strip {
+  width: 100%;
+  left: 0;
+}
+
+/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-vertical .x-tab-bar-strip {
+  height: 100%;
+  top: 0;
+}
+
+/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-top {
+  bottom: 0;
+}
+
+/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-bottom {
+  top: 0;
+}
+
+/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-left {
+  right: 0;
+}
+
+/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-left {
+  right: auto;
+  left: 0;
+}
+
+/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-strip-right {
+  left: 0;
+}
+
+/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-bar .x-tab-bar-strip-right {
+  left: auto;
+  right: 0;
+}
+
+/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-bar-plain {
+  background: transparent !important;
+}
+
+/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-icon-el {
+  position: absolute;
+  background-repeat: no-repeat;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+}
+
+/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-rtl.x-tab-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-close-btn {
+  display: block;
+  position: absolute;
+  font-size: 0;
+  line-height: 0;
+  background: no-repeat;
+}
+
+/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */
+.x-tab-mc {
+  overflow: visible;
+}
+
+/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-autowidth-table .x-grid-table {
+  table-layout: auto;
+  width: auto !important;
+}
+
+/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-view {
+  overflow: hidden;
+}
+
+/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-elbow-img,
+.x-tree-icon {
+  background-repeat: no-repeat;
+  background-position: 0 center;
+  vertical-align: top;
+}
+
+/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  border: 0;
+  padding: 0;
+  vertical-align: top;
+  position: relative;
+  background-color: transparent;
+}
+
+/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-animator-wrap {
+  overflow: hidden;
+}
+
+/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  zoom: 1;
+}
+
+/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+}
+
+/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}
+
+/* including package ext-theme-neutral */
+/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-body {
+  color: black;
+  font-size: 13px;
+  font-family: helvetica, arial, verdana, sans-serif;
+  background: #f5f5f5;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */
+.x-animating-size,
+.x-collapsed {
+  overflow: hidden!important;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+  background: white;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg {
+  padding: 8px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  background-image: none;
+  background-color: #e5e5e5;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-inner {
+  padding: 0;
+  background-color: transparent;
+  color: #666666;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-mask-msg-text {
+  padding: 21px 0 0;
+  background-image: url(images/loadmask/loading.gif);
+  background-repeat: no-repeat;
+  background-position: center 0;
+}
+
+/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */
+.x-rtl.x-mask-msg-text {
+  padding: 21px 0 0 0;
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$progress-border-color]
+ * The border-color of the ProgressBar
+ *
+ * @param {color} [$ui-background-color=$progress-background-color]
+ * The background-color of the ProgressBar
+ *
+ * @param {color} [$ui-bar-background-color=$progress-bar-background-color]
+ * The background-color of the ProgressBar's moving element
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient]
+ * The background-gradient of the ProgressBar's moving element. Can be either the name of
+ * a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-color-front=$progress-text-color-front]
+ * The color of the ProgressBar's text when in front of the ProgressBar's moving element
+ *
+ * @param {color} [$ui-color-back=$progress-text-color-back]
+ * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it
+ *
+ * @param {number} [$ui-height=$progress-height]
+ * The height of the ProgressBar
+ *
+ * @param {number} [$ui-border-width=$progress-border-width]
+ * The border-width of the ProgressBar
+ *
+ * @param {number} [$ui-border-radius=$progress-border-radius]
+ * The border-radius of the ProgressBar
+ *
+ * @param {string} [$ui-text-text-align=$progress-text-text-align]
+ * The text-align of the ProgressBar's text
+ *
+ * @param {number} [$ui-text-font-size=$progress-text-font-size]
+ * The font-size of the ProgressBar's text
+ *
+ * @param {string} [$ui-text-font-weight=$progress-text-font-weight]
+ * The font-weight of the ProgressBar's text
+ *
+ * @member Ext.ProgressBar
+ */
+/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default {
+  background-color: #f5f5f5;
+  border-width: 0;
+  height: 20px;
+  border-color: #157fcc;
+}
+/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-content-box .x-progress-default {
+  height: 20px;
+}
+/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-bar-default {
+  background-image: none;
+  background-color: #c1ddf1;
+}
+/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text {
+  color: #666666;
+  font-weight: bold;
+  font-size: 13px;
+  text-align: center;
+  line-height: 20px;
+}
+/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */
+.x-progress-default .x-progress-text-back {
+  color: #666666;
+  line-height: 20px;
+}
+
+/**
+ * Creates a visual theme for a Button
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$border-radius=0px]
+ * The border-radius of the button
+ *
+ * @param {number} [$border-width=0px]
+ * The border-width of the button
+ *
+ * @param {color} $border-color
+ * The border-color of the button
+ *
+ * @param {color} $border-color-over
+ * The border-color of the button when the cursor is over the button
+ *
+ * @param {color} $border-color-focus
+ * The border-color of the button when focused
+ *
+ * @param {color} $border-color-pressed
+ * The border-color of the button when pressed
+ *
+ * @param {color} $border-color-disabled
+ * The border-color of the button when disabled
+ *
+ * @param {number} $padding
+ * The amount of padding inside the border of the button on all sides
+ *
+ * @param {number} $text-padding
+ * The amount of horizontal space to add to the left and right of the button text
+ *
+ * @param {color} $background-color
+ * The background-color of the button
+ *
+ * @param {color} $background-color-over
+ * The background-color of the button when the cursor is over the button
+ *
+ * @param {color} $background-color-focus
+ * The background-color of the button when focused
+ *
+ * @param {color} $background-color-pressed
+ * The background-color of the button when pressed
+ *
+ * @param {color} $background-color-disabled
+ * The background-color of the button when disabled
+ *
+ * @param {string/list} $background-gradient
+ * The background-gradient for the button.  Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-over
+ * The background-gradient to use when the cursor is over the button. Can be either the
+ * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
+ * for {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-focus
+ * The background-gradient to use when the the button is focused. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-pressed
+ * The background-gradient to use when the the button is pressed. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string} $background-gradient-disabled
+ * The background-gradient to use when the the button is disabled. Can be either the name
+ * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} $color
+ * The text color of the button
+ *
+ * @param {color} $color-over
+ * The text color of the button when the cursor is over the button
+ *
+ * @param {color} $color-focus
+ * The text color of the button when the button is focused
+ *
+ * @param {color} $color-pressed
+ * The text color of the button when the button is pressed
+ *
+ * @param {color} $color-disabled
+ * The text color of the button when the button is disabled
+ *
+ * @param {number} $font-size
+ * The font-size of the button
+ *
+ * @param {number} $font-size-over
+ * The font-size of the button when the cursor is over the button
+ *
+ * @param {number} $font-size-focus
+ * The font-size of the button when the button is focused
+ *
+ * @param {number} $font-size-pressed
+ * The font-size of the button when the button is pressed
+ *
+ * @param {number} $font-size-disabled
+ * The font-size of the button when the button is disabled
+ *
+ * @param {string} $font-weight
+ * The font-weight of the button
+ *
+ * @param {string} $font-weight-over
+ * The font-weight of the button when the cursor is over the button
+ *
+ * @param {string} $font-weight-focus
+ * The font-weight of the button when the button is focused
+ *
+ * @param {string} $font-weight-pressed
+ * The font-weight of the button when the button is pressed
+ *
+ * @param {string} $font-weight-disabled
+ * The font-weight of the button when the button is disabled
+ *
+ * @param {string} $font-family
+ * The font-family of the button
+ *
+ * @param {string} $font-family-over
+ * The font-family of the button when the cursor is over the button
+ *
+ * @param {string} $font-family-focus
+ * The font-family of the button when the button is focused
+ *
+ * @param {string} $font-family-pressed
+ * The font-family of the button when the button is pressed
+ *
+ * @param {string} $font-family-disabled
+ * The font-family of the button when the button is disabled
+ *
+ * @param {number} $icon-size
+ * The size of the button icon
+ *
+ * @param {color} $glyph-color
+ * The color of the button's {@link #glyph} icon
+ *
+ * @param {number} [$glyph-opacity=1]
+ * The opacity of the button's {@link #glyph} icon
+ *
+ * @param {number} $arrow-width
+ * The width of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $arrow-height
+ * The height of the button's {@link #cfg-menu} arrow
+ *
+ * @param {number} $split-width
+ * The width of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {number} $split-height
+ * The height of a {@link Ext.button.Split Split Button}'s arrow
+ *
+ * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
+ * True to include the UI name in the file name of the {@link #cfg-menu}
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
+ * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
+ * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
+ *
+ * @param {boolean} [$include-split-noline-arrows=false]
+ * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
+ * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
+ * state.
+ *
+ * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
+ * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
+ * is over the button.  The over icon file name will have a "-o" suffix
+ *
+ * @param {number} [$opacity-disabled=1]
+ * The opacity of the button when it is disabled
+ *
+ * @param {number} [$inner-opacity-disabled=1]
+ * The opacity of the button's text and icon elements when when the button is disabled
+ * 
+ * @member Ext.button.Button
+ */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  background-image: url(images/btn/btn-default-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-small {
+  background-image: url(images/btn/btn-default-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-tl,
+.x-btn-default-small-bl,
+.x-btn-default-small-tr,
+.x-btn-default-small-br,
+.x-btn-default-small-tc,
+.x-btn-default-small-bc,
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-ml,
+.x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow {
+  background-image: url(images/button/default-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-small .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-button,
+.x-btn-default-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 5px;
+  padding-right: 21px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-tl,
+.x-btn-default-small-over .x-frame-bl,
+.x-btn-default-small-over .x-frame-tr,
+.x-btn-default-small-over .x-frame-br,
+.x-btn-default-small-over .x-frame-tc,
+.x-btn-default-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-ml,
+.x-btn-default-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-tl,
+.x-btn-default-small-focus .x-frame-bl,
+.x-btn-default-small-focus .x-frame-tr,
+.x-btn-default-small-focus .x-frame-br,
+.x-btn-default-small-focus .x-frame-tc,
+.x-btn-default-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-ml,
+.x-btn-default-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-tl,
+.x-btn-default-small-menu-active .x-frame-bl,
+.x-btn-default-small-menu-active .x-frame-tr,
+.x-btn-default-small-menu-active .x-frame-br,
+.x-btn-default-small-menu-active .x-frame-tc,
+.x-btn-default-small-menu-active .x-frame-bc,
+.x-btn-default-small-pressed .x-frame-tl,
+.x-btn-default-small-pressed .x-frame-bl,
+.x-btn-default-small-pressed .x-frame-tr,
+.x-btn-default-small-pressed .x-frame-br,
+.x-btn-default-small-pressed .x-frame-tc,
+.x-btn-default-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-ml,
+.x-btn-default-small-menu-active .x-frame-mr,
+.x-btn-default-small-pressed .x-frame-ml,
+.x-btn-default-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-menu-active .x-frame-mc,
+.x-btn-default-small-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-tl,
+.x-btn-default-small-disabled .x-frame-bl,
+.x-btn-default-small-disabled .x-frame-tr,
+.x-btn-default-small-disabled .x-frame-br,
+.x-btn-default-small-disabled .x-frame-tc,
+.x-btn-default-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-ml,
+.x-btn-default-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-image: url(images/btn/btn-default-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-image: url(images/btn/btn-default-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-image: url(images/btn/btn-default-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-image: url(images/btn/btn-default-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-right {
+  background-image: url(images/button/default-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-small-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small .x-btn-split-bottom {
+  background-image: url(images/button/default-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  background-image: url(images/btn/btn-default-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-medium {
+  background-image: url(images/btn/btn-default-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-tl,
+.x-btn-default-medium-bl,
+.x-btn-default-medium-tr,
+.x-btn-default-medium-br,
+.x-btn-default-medium-tc,
+.x-btn-default-medium-bc,
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-ml,
+.x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 8px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow {
+  background-image: url(images/button/default-medium-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-right {
+  padding-right: 30px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 30px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-arrow-bottom {
+  padding-bottom: 26px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-medium .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-button,
+.x-btn-default-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 8px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 29px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 8px;
+  padding-right: 29px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 29px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 29px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 8px;
+  padding-left: 29px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 29px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 29px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-tl,
+.x-btn-default-medium-over .x-frame-bl,
+.x-btn-default-medium-over .x-frame-tr,
+.x-btn-default-medium-over .x-frame-br,
+.x-btn-default-medium-over .x-frame-tc,
+.x-btn-default-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-ml,
+.x-btn-default-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-tl,
+.x-btn-default-medium-focus .x-frame-bl,
+.x-btn-default-medium-focus .x-frame-tr,
+.x-btn-default-medium-focus .x-frame-br,
+.x-btn-default-medium-focus .x-frame-tc,
+.x-btn-default-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-ml,
+.x-btn-default-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-tl,
+.x-btn-default-medium-menu-active .x-frame-bl,
+.x-btn-default-medium-menu-active .x-frame-tr,
+.x-btn-default-medium-menu-active .x-frame-br,
+.x-btn-default-medium-menu-active .x-frame-tc,
+.x-btn-default-medium-menu-active .x-frame-bc,
+.x-btn-default-medium-pressed .x-frame-tl,
+.x-btn-default-medium-pressed .x-frame-bl,
+.x-btn-default-medium-pressed .x-frame-tr,
+.x-btn-default-medium-pressed .x-frame-br,
+.x-btn-default-medium-pressed .x-frame-tc,
+.x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-ml,
+.x-btn-default-medium-menu-active .x-frame-mr,
+.x-btn-default-medium-pressed .x-frame-ml,
+.x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-menu-active .x-frame-mc,
+.x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-tl,
+.x-btn-default-medium-disabled .x-frame-bl,
+.x-btn-default-medium-disabled .x-frame-tr,
+.x-btn-default-medium-disabled .x-frame-br,
+.x-btn-default-medium-disabled .x-frame-tc,
+.x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-ml,
+.x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-image: url(images/btn/btn-default-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-image: url(images/btn/btn-default-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-image: url(images/btn/btn-default-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-image: url(images/btn/btn-default-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-right {
+  background-image: url(images/button/default-medium-s-arrow.png);
+  padding-right: 32px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-medium-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 32px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium .x-btn-split-bottom {
+  background-image: url(images/button/default-medium-s-arrow-b.png);
+  padding-bottom: 28px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large {
+  border-color: #126daf;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3892d3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4b9cd7), color-stop(50%, #3892d3), color-stop(51%, #358ac8), color-stop(100%, #3892d3));
+  background-image: -webkit-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -moz-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: -o-linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+  background-image: linear-gradient(top, #4b9cd7, #3892d3 50%, #358ac8 51%, #3892d3);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  background-image: url(images/btn/btn-default-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #3892d3;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-large {
+  background-image: url(images/btn/btn-default-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-tl,
+.x-btn-default-large-bl,
+.x-btn-default-large-tr,
+.x-btn-default-large-br,
+.x-btn-default-large-tc,
+.x-btn-default-large-bc,
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-ml,
+.x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 16px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 10px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow {
+  background-image: url(images/button/default-large-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-right {
+  padding-right: 36px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 36px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-arrow-bottom {
+  padding-bottom: 32px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-large .x-btn-glyph {
+  color: #9bc8e9;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  border-color: #157fcc;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-button,
+.x-btn-default-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 10px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 37px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 10px;
+  padding-right: 37px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 37px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 37px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 10px;
+  padding-left: 37px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 37px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 37px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #3386c2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4792c8), color-stop(50%, #3386c2), color-stop(51%, #307fb8), color-stop(100%, #3386c2));
+  background-image: -webkit-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -moz-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: -o-linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+  background-image: linear-gradient(top, #4792c8, #3386c2 50%, #307fb8 51%, #3386c2);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #157fcc;
+  background-image: none;
+  background-color: #2a6d9e;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a6d9e), color-stop(50%, #276796), color-stop(51%, #2a6d9e), color-stop(100%, #3f7ba7));
+  background-image: -webkit-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -moz-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: -o-linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+  background-image: linear-gradient(top, #2a6d9e, #276796 50%, #2a6d9e 51%, #3f7ba7);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-tl,
+.x-btn-default-large-over .x-frame-bl,
+.x-btn-default-large-over .x-frame-tr,
+.x-btn-default-large-over .x-frame-br,
+.x-btn-default-large-over .x-frame-tc,
+.x-btn-default-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-ml,
+.x-btn-default-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-over .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-tl,
+.x-btn-default-large-focus .x-frame-bl,
+.x-btn-default-large-focus .x-frame-tr,
+.x-btn-default-large-focus .x-frame-br,
+.x-btn-default-large-focus .x-frame-tc,
+.x-btn-default-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-ml,
+.x-btn-default-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-focus .x-frame-mc {
+  background-color: #3386c2;
+  background-image: url(images/btn/btn-default-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-tl,
+.x-btn-default-large-menu-active .x-frame-bl,
+.x-btn-default-large-menu-active .x-frame-tr,
+.x-btn-default-large-menu-active .x-frame-br,
+.x-btn-default-large-menu-active .x-frame-tc,
+.x-btn-default-large-menu-active .x-frame-bc,
+.x-btn-default-large-pressed .x-frame-tl,
+.x-btn-default-large-pressed .x-frame-bl,
+.x-btn-default-large-pressed .x-frame-tr,
+.x-btn-default-large-pressed .x-frame-br,
+.x-btn-default-large-pressed .x-frame-tc,
+.x-btn-default-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-ml,
+.x-btn-default-large-menu-active .x-frame-mr,
+.x-btn-default-large-pressed .x-frame-ml,
+.x-btn-default-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-menu-active .x-frame-mc,
+.x-btn-default-large-pressed .x-frame-mc {
+  background-color: #2a6d9e;
+  background-image: url(images/btn/btn-default-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-tl,
+.x-btn-default-large-disabled .x-frame-bl,
+.x-btn-default-large-disabled .x-frame-tr,
+.x-btn-default-large-disabled .x-frame-br,
+.x-btn-default-large-disabled .x-frame-tc,
+.x-btn-default-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-ml,
+.x-btn-default-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled .x-frame-mc {
+  background-color: null;
+  background-image: url(images/btn/btn-default-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-image: url(images/btn/btn-default-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-image: url(images/btn/btn-default-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-image: url(images/btn/btn-default-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-image: url(images/btn/btn-default-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-right {
+  background-image: url(images/button/default-large-s-arrow.png);
+  padding-right: 38px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-large-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 38px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large .x-btn-split-bottom {
+  background-image: url(images/button/default-large-s-arrow-b.png);
+  padding-bottom: 34px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  background-image: url(images/btn/btn-default-toolbar-small-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-small {
+  background-image: url(images/btn/btn-default-toolbar-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-tl,
+.x-btn-default-toolbar-small-bl,
+.x-btn-default-toolbar-small-tr,
+.x-btn-default-toolbar-small-br,
+.x-btn-default-toolbar-small-tc,
+.x-btn-default-toolbar-small-bc,
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-small-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-ml,
+.x-btn-default-toolbar-small-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-small-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-small-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-bg.gif), corners:url(images/btn/btn-default-toolbar-small-corners.gif), sides:url(images/btn/btn-default-toolbar-small-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-button,
+.x-btn-default-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 5px;
+  padding-right: 21px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-tl,
+.x-btn-default-toolbar-small-over .x-frame-bl,
+.x-btn-default-toolbar-small-over .x-frame-tr,
+.x-btn-default-toolbar-small-over .x-frame-br,
+.x-btn-default-toolbar-small-over .x-frame-tc,
+.x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-ml,
+.x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-btn-default-toolbar-small-focus .x-frame-br,
+.x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-small-disabled {
+  background-image: url(images/btn/btn-default-toolbar-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-toolbar-small-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  background-image: url(images/btn/btn-default-toolbar-medium-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-medium {
+  background-image: url(images/btn/btn-default-toolbar-medium-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-medium-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-tl,
+.x-btn-default-toolbar-medium-bl,
+.x-btn-default-toolbar-medium-tr,
+.x-btn-default-toolbar-medium-br,
+.x-btn-default-toolbar-medium-tc,
+.x-btn-default-toolbar-medium-bc,
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-medium-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-ml,
+.x-btn-default-toolbar-medium-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-medium-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-medium-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-bg.gif), corners:url(images/btn/btn-default-toolbar-medium-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 8px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-medium-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-right {
+  padding-right: 30px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 30px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-arrow-bottom {
+  padding-bottom: 26px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-glyph {
+  font-size: 24px;
+  line-height: 24px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-button,
+.x-btn-default-toolbar-medium-noicon .x-btn-button {
+  height: 24px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  line-height: 24px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 8px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  width: 24px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon-el {
+  width: 24px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-button {
+  height: 24px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  line-height: 24px;
+  padding-left: 29px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 8px;
+  padding-right: 29px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 29px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  width: 24px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el {
+  height: 24px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-button {
+  height: 24px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  line-height: 24px;
+  padding-right: 29px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 8px;
+  padding-left: 29px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  width: 24px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el {
+  height: 24px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 29px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  height: 24px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 29px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  height: 24px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-btn-default-toolbar-medium-over .x-frame-br,
+.x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-medium-disabled {
+  background-image: url(images/btn/btn-default-toolbar-medium-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-medium-s-arrow.png);
+  padding-right: 32px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-toolbar-medium-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 32px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-medium-s-arrow-b.png);
+  padding-bottom: 28px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-medium-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large {
+  border-color: #e1e1e1;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  background-image: url(images/btn/btn-default-toolbar-large-fbg.gif);
+  background-position: 0 top;
+  background-color: #f5f5f5;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-default-toolbar-large {
+  background-image: url(images/btn/btn-default-toolbar-large-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-default-toolbar-large-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-tl,
+.x-btn-default-toolbar-large-bl,
+.x-btn-default-toolbar-large-tr,
+.x-btn-default-toolbar-large-br,
+.x-btn-default-toolbar-large-tc,
+.x-btn-default-toolbar-large-bc,
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-large-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-ml,
+.x-btn-default-toolbar-large-mr {
+  zoom: 1;
+  background-image: url(images/btn/btn-default-toolbar-large-sides.gif);
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-large-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-bg.gif), corners:url(images/btn/btn-default-toolbar-large-corners.gif), sides:url(images/btn/btn-default-toolbar-large-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 16px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 10px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow {
+  background-image: url(images/button/default-toolbar-large-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-right {
+  padding-right: 36px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 36px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-arrow-bottom {
+  padding-bottom: 32px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-glyph {
+  font-size: 32px;
+  line-height: 32px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph {
+  color: #adadad;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: #f5f5f5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(50%, #f5f5f5), color-stop(51%, #e8e8e8), color-stop(100%, #f5f5f5));
+  background-image: -webkit-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -moz-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: -o-linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+  background-image: linear-gradient(top, #f6f6f6, #f5f5f5 50%, #e8e8e8 51%, #f5f5f5);
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-button,
+.x-btn-default-toolbar-large-noicon .x-btn-button {
+  height: 32px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  line-height: 32px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 10px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  width: 32px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon-el {
+  width: 32px;
+  height: 32px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-button {
+  height: 32px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  line-height: 32px;
+  padding-left: 37px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 10px;
+  padding-right: 37px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 37px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  width: 32px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el {
+  height: 32px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-button {
+  height: 32px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  line-height: 32px;
+  padding-right: 37px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 10px;
+  padding-left: 37px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  width: 32px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el {
+  height: 32px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 37px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  height: 32px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 37px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  height: 32px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus {
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-tl,
+.x-btn-default-toolbar-large-over .x-frame-bl,
+.x-btn-default-toolbar-large-over .x-frame-tr,
+.x-btn-default-toolbar-large-over .x-frame-br,
+.x-btn-default-toolbar-large-over .x-frame-tc,
+.x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-ml,
+.x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-btn-default-toolbar-large-focus .x-frame-br,
+.x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: #f5f5f5;
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-default-toolbar-large-disabled {
+  background-image: url(images/btn/btn-default-toolbar-large-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-right {
+  background-image: url(images/button/default-toolbar-large-s-arrow.png);
+  padding-right: 38px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-rtl.x-btn-split-right {
+  background-image: url(images/button/default-toolbar-large-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 38px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large .x-btn-split-bottom {
+  background-image: url(images/button/default-toolbar-large-s-arrow-b.png);
+  padding-bottom: 34px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-default-toolbar-large-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-default-toolbar-large-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-btn-icon-el {
+  background-position: left center;
+}
+/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-left .x-rtl.x-btn-icon-el {
+  background-position: right center;
+}
+
+/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-btn-icon-el {
+  background-position: right center;
+}
+/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-right .x-rtl.x-btn-icon-el {
+  background-position: left center;
+}
+
+/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-top .x-btn-icon-el {
+  background-position: center top;
+}
+
+/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-icon-text-bottom .x-btn-icon-el {
+  background-position: center bottom;
+}
+
+/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-right {
+  background-position: right center;
+}
+
+/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-arrow-right {
+  background-position: left center;
+}
+
+/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow-bottom {
+  background-position: center bottom;
+}
+
+/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-arrow {
+  background-repeat: no-repeat;
+}
+
+/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split {
+  display: block;
+  background-repeat: no-repeat;
+}
+
+/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-right {
+  background-position: right center;
+}
+
+/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-rtl.x-btn-split-right {
+  background-position: 0 center;
+}
+
+/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-split-bottom {
+  background-position: center bottom;
+}
+
+/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit;
+}
+
+/**
+ * Creates a visual theme for a Toolbar.
+ * @param {String} $ui
+ * The name of the UI
+ *
+ * @param {color} [$background-color=$toolbar-background-color]
+ * The background color of the toolbar
+ *
+ * @param {string/list} [$background-gradient=$toolbar-background-gradient]
+ * The background gradient of the toolbar
+ *
+ * @param {color} [$border-color=$toolbar-border-color]
+ * The border color of the toolbar
+ *
+ * @param {number} [$border-width=$toolbar-border-width]
+ * The border-width of the toolbar
+ *
+ * @param {string} [$scroller-cursor=$toolbar-scroller-cursor]
+ * The cursor of Toolbar scrollers
+ *
+ * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled]
+ * The cursor of disabled Toolbar scrollers
+ *
+ * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled]
+ * The opacity of disabled Toolbar scrollers
+ *
+ * @param {string} [$tool-background-image=$toolbar-tool-background-image]
+ * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar
+ *
+ * @member Ext.toolbar.Toolbar
+ */
+/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar {
+  font-size: 13px;
+  border-style: solid;
+  padding: 6px 0 6px 8px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-item {
+  margin: 0 8px 0 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar-item {
+  margin: 0 0 0 8px;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-text {
+  margin: 0 6px 0 4px;
+  color: #333f49;
+  line-height: 16px;
+  font-family: helvetica, arial, verdana, sans-serif;
+  font-size: 12px;
+  font-weight: normal;
+}
+
+/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-separator-horizontal {
+  margin: 0 8px 0 0;
+  height: 14px;
+  border-style: solid;
+  border-width: 0 0 0 1px;
+  border-left-color: #e1e1e1;
+  border-right-color: white;
+}
+
+/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-rtl.x-toolbar {
+  padding: 6px 8px 6px 0;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer {
+  background: #dfeaf2;
+  border: 0;
+  margin: 0;
+  padding: 6px 0 6px 6px;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-footer .x-toolbar-item {
+  margin: 0 6px 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url(images/toolbar/more.png) !important;
+  background-position: center center !important;
+  background-repeat: no-repeat;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default {
+  border-color: silver;
+  border-width: 1px;
+  background-image: none;
+  background-color: white;
+}
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  cursor: pointer;
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  cursor: default;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: white;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left {
+  background-image: url(images/toolbar/scroll-left.png);
+  background-position: 0 0;
+  width: 16px;
+  height: 16px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0;
+  margin-top: 4px;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-left-hover {
+  background-position: 0 0;
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right {
+  background-image: url(images/toolbar/scroll-right.png);
+  width: 16px;
+  height: 16px;
+  border-style: solid;
+  border-color: #8db2e3;
+  border-width: 0;
+  margin-top: 4px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroll-right-hover {
+  background-position: -16px 0;
+}
+
+/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar .x-box-menu-after {
+  margin: 0 8px 0 8px;
+}
+
+/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical {
+  padding: 6px 8px 0 8px;
+}
+/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-item {
+  margin: 0 0 6px 0;
+}
+/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-text {
+  margin: 4px 0 6px 0;
+}
+/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-toolbar-separator-vertical {
+  margin: 0 5px 6px;
+  border-style: solid none;
+  border-width: 1px 0 0;
+  border-top-color: #e1e1e1;
+  border-bottom-color: white;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical .x-box-menu-after,
+.x-toolbar-vertical .x-rtl.x-box-menu-after {
+  margin: 6px 0 6px 0;
+  display: block;
+  float: none;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-draggable .x-header-body,
+.x-header-ghost {
+  cursor: move;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */
+.x-header-text {
+  white-space: nowrap;
+}
+
+/**
+ * Creates a visual theme for a Panel
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ * 
+ * @param {color} [$ui-border-color=$panel-border-color]
+ * The border-color of the Panel
+ *
+ * @param {number} [$ui-border-radius=$panel-border-radius]
+ * The border-radius of the Panel
+ *
+ * @param {number} [$ui-border-width=$panel-border-width]
+ * The border-width of the Panel
+ *
+ * @param {number} [$ui-padding=$panel-padding]
+ * The padding of the Panel
+ *
+ * @param {color} [$ui-header-color=$panel-header-color]
+ * The text color of the Header
+ *
+ * @param {string} [$ui-header-font-family=$panel-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$panel-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$panel-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$panel-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {color} [$ui-header-border-color=$panel-header-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$panel-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {string} [$ui-header-border-style=$panel-header-border-style]
+ * The border-style of the Header
+ *
+ * @param {color} [$ui-header-background-color=$panel-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient]
+ * The background-gradient of the Header. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$panel-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$panel-header-padding]
+ * The padding of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$panel-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$panel-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$panel-tool-spacing]
+ * The space between the Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$panel-tool-background-image]
+ * The background sprite to use for Panel {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-color=$panel-body-color]
+ * The color of text inside the Panel body
+ *
+ * @param {color} [$ui-body-border-color=$panel-body-border-color]
+ * The border-color of the Panel body
+ *
+ * @param {number} [$ui-body-border-width=$panel-body-border-width]
+ * The border-width of the Panel body
+ *
+ * @param {string} [$ui-body-border-style=$panel-body-border-style]
+ * The border-style of the Panel body
+ *
+ * @param {color} [$ui-body-background-color=$panel-body-background-color]
+ * The background-color of the Panel body
+ *
+ * @param {number} [$ui-body-font-size=$panel-body-font-size]
+ * The font-size of the Panel body
+ *
+ * @param {string} [$ui-body-font-weight=$panel-body-font-weight]
+ * The font-weight of the Panel body
+ *
+ * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top]
+ * The direction to strech the background-gradient of top docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom]
+ * The direction to strech the background-gradient of bottom docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right]
+ * The direction to strech the background-gradient of right docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left]
+ * The direction to strech the background-gradient of left docked Headers when slicing images
+ * for IE using Sencha Cmd
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items in a framed
+ * panel. The presence of the wrap border in a framed panel is controlled by the
+ * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is
+ * `true`.
+ *
+ * @member Ext.panel.Panel
+ */
+/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  font-size: 13px;
+  border: 1px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-tool-img {
+  background-color: #157fcc;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal {
+  padding: 9px 9px 10px 9px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  padding: 9px 9px 9px 10px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  padding: 9px 10px 9px 9px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default {
+  color: white;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: arial, helvetica, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-vertical {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default .x-panel-header-glyph {
+  color: #8abfe5;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 6px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed {
+  font-size: 13px;
+  border: 5px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-tool-img {
+  background-color: #157fcc;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal {
+  padding: 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal-noborder {
+  padding: 10px 10px 5px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical-noborder {
+  padding: 10px 10px 10px 5px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-vertical-noborder {
+  padding: 10px 5px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-default-framed {
+  color: white;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: arial, helvetica, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-default-framed {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-default-framed-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-tl,
+.x-panel-default-framed-bl,
+.x-panel-default-framed-tr,
+.x-panel-default-framed-br,
+.x-panel-default-framed-tc,
+.x-panel-default-framed-bc,
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-ml,
+.x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-default-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 0 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-0-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-tl,
+.x-panel-header-default-framed-top-bl,
+.x-panel-header-default-framed-top-tr,
+.x-panel-header-default-framed-top-br,
+.x-panel-header-default-framed-top-tc,
+.x-panel-header-default-framed-top-bc,
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-ml,
+.x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 0;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-0-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-tl,
+.x-panel-header-default-framed-right-bl,
+.x-panel-header-default-framed-right-tr,
+.x-panel-header-default-framed-right-br,
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-bc,
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-right-tl, .x-rtl.x-panel-header-default-framed-right-ml, .x-rtl.x-panel-header-default-framed-right-bl, .x-rtl.x-panel-header-default-framed-right-tr, .x-rtl.x-panel-header-default-framed-right-mr, .x-rtl.x-panel-header-default-framed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-ml,
+.x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 5px 5px 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-tl,
+.x-panel-header-default-framed-bottom-bl,
+.x-panel-header-default-framed-bottom-tr,
+.x-panel-header-default-framed-bottom-br,
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-bc,
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-ml,
+.x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 0 5px 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-left-frameInfo {
+  font-family: dh-4-0-0-4-5-0-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-tl,
+.x-panel-header-default-framed-left-bl,
+.x-panel-header-default-framed-left-tr,
+.x-panel-header-default-framed-left-br,
+.x-panel-header-default-framed-left-tc,
+.x-panel-header-default-framed-left-bc,
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-left-tl, .x-rtl.x-panel-header-default-framed-left-ml, .x-rtl.x-panel-header-default-framed-left-bl, .x-rtl.x-panel-header-default-framed-left-tr, .x-rtl.x-panel-header-default-framed-left-mr, .x-rtl.x-panel-header-default-framed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-ml,
+.x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-tl,
+.x-panel-header-default-framed-collapsed-top-bl,
+.x-panel-header-default-framed-collapsed-top-tr,
+.x-panel-header-default-framed-collapsed-top-br,
+.x-panel-header-default-framed-collapsed-top-tc,
+.x-panel-header-default-framed-collapsed-top-bc,
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-ml,
+.x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-tl,
+.x-panel-header-default-framed-collapsed-right-bl,
+.x-panel-header-default-framed-collapsed-right-tr,
+.x-panel-header-default-framed-collapsed-right-br,
+.x-panel-header-default-framed-collapsed-right-tc,
+.x-panel-header-default-framed-collapsed-right-bc,
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-right-tl, .x-rtl.x-panel-header-default-framed-collapsed-right-ml, .x-rtl.x-panel-header-default-framed-collapsed-right-bl, .x-rtl.x-panel-header-default-framed-collapsed-right-tr, .x-rtl.x-panel-header-default-framed-collapsed-right-mr, .x-rtl.x-panel-header-default-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-ml,
+.x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-tl,
+.x-panel-header-default-framed-collapsed-bottom-bl,
+.x-panel-header-default-framed-collapsed-bottom-tr,
+.x-panel-header-default-framed-collapsed-bottom-br,
+.x-panel-header-default-framed-collapsed-bottom-tc,
+.x-panel-header-default-framed-collapsed-bottom-bc,
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-ml,
+.x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #157fcc;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left {
+  background-image: none;
+  background-color: #157fcc;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  background-color: #157fcc;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-tl,
+.x-panel-header-default-framed-collapsed-left-bl,
+.x-panel-header-default-framed-collapsed-left-tr,
+.x-panel-header-default-framed-collapsed-left-br,
+.x-panel-header-default-framed-collapsed-left-tc,
+.x-panel-header-default-framed-collapsed-left-bc,
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-left-tl, .x-rtl.x-panel-header-default-framed-collapsed-left-ml, .x-rtl.x-panel-header-default-framed-collapsed-left-bl, .x-rtl.x-panel-header-default-framed-collapsed-left-tr, .x-rtl.x-panel-header-default-framed-collapsed-left-mr, .x-rtl.x-panel-header-default-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-ml,
+.x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-default-framed-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-default-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 5px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 5px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 5px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 5px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #157fcc;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#157fcc);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph {
+  color: #8abfe5;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 6px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-right {
+  border-right-width: 5px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-default-framed-collapsed-border-left {
+  border-left-width: 5px !important;
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable {
+  overflow: visible;
+}
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+/* line 696, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-north-br {
+  top: -5px;
+}
+/* line 699, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-south-br {
+  bottom: -5px;
+}
+/* line 702, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-east-br {
+  right: -5px;
+}
+/* line 705, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-west-br {
+  left: -5px;
+}
+/* line 708, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 712, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 716, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 720, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-default-framed-resizable .x-panel-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-default-framed-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/**
+ * Creates a visual theme for a Ext.tip.Tip
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-border-color=$tip-border-color]
+ * The border-color of the Tip
+ *
+ * @param {number} [$ui-border-width=$tip-border-width]
+ * The border-width of the Tip
+ *
+ * @param {number} [$ui-border-radius=$tip-border-radius]
+ * The border-radius of the Tip
+ *
+ * @param {color} [$ui-background-color=$tip-background-color]
+ * The background-color of the Tip
+ *
+ * @param {string/list} [$ui-background-gradient=$tip-background-gradient]
+ * The background-gradient of the Tip. Can be either the name of a predefined gradient or a
+ * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tool-spacing=$tip-tool-spacing]
+ * The space between {@link Ext.panel.Tool Tools} in the header
+ *
+ * @param {string} [$ui-tool-background-image=$tip-tool-background-image]
+ * The sprite to use for the header {@link Ext.panel.Tool Tools}
+ *
+ * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding]
+ * The padding of the Tip header's body element
+ *
+ * @param {color} [$ui-header-color=$tip-header-color]
+ * The text color of the Tip header
+ *
+ * @param {number} [$ui-header-font-size=$tip-header-font-size]
+ * The font-size of the Tip header
+ *
+ * @param {string} [$ui-header-font-weight=$tip-header-font-weight]
+ * The font-weight of the Tip header
+ *
+ * @param {number/list} [$ui-body-padding=$tip-body-padding]
+ * The padding of the Tip body
+ *
+ * @param {color} [$ui-body-color=$tip-body-color]
+ * The text color of the Tip body
+ *
+ * @param {number} [$ui-body-font-size=$tip-body-font-size]
+ * The font-size of the Tip body
+ *
+ * @param {string} [$ui-body-font-weight=$tip-body-font-weight]
+ * The font-weight of the Tip body
+ *
+ * @param {color} [$ui-body-link-color=$tip-body-link-color]
+ * The text color of any anchor tags inside the Tip body
+ *
+ * @param {number} [$ui-inner-border-width=0]
+ * The inner border-width of the Tip
+ *
+ * @param {color} [$ui-inner-border-color=#fff]
+ * The inner border-color of the Tip
+ *
+ * @member Ext.tip.Tip
+ */
+/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 10px;
+  width: 10px;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #e1e1e1;
+  zoom: 1;
+}
+/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-content-box .x-tip-anchor {
+  height: 0;
+  width: 0;
+}
+
+/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink);
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #eaf3fa;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  background-color: #eaf3fa;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-default-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-tl,
+.x-tip-default-bl,
+.x-tip-default-tr,
+.x-tip-default-br,
+.x-tip-default-tc,
+.x-tip-default-bc,
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-ml,
+.x-tip-default-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-default-tl,
+.x-strict .x-ie7 .x-tip-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default {
+  border-color: #e1e1e1;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #eaf3fa;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-default .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-default {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-default {
+  color: black;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default {
+  padding: 3px;
+  color: black;
+  font-size: 13px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-default a {
+  color: black;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #eaf3fa;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  background-color: #eaf3fa;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tip-form-invalid {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tip-form-invalid-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-2-2-2-2;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-tl,
+.x-tip-form-invalid-bl,
+.x-tip-form-invalid-tr,
+.x-tip-form-invalid-br,
+.x-tip-form-invalid-tc,
+.x-tip-form-invalid-bc,
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-ml,
+.x-tip-form-invalid-mr {
+  zoom: 1;
+  background-image: url(images/tip/tip-form-invalid-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tip-form-invalid-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tip-form-invalid-tl,
+.x-strict .x-ie7 .x-tip-form-invalid-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tip-form-invalid:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid {
+  border-color: #e1e1e1;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-form-invalid .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #eaf3fa;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-form-invalid .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-body-form-invalid {
+  padding: 3px 3px 0 3px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-header-text-container-form-invalid {
+  color: black;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  padding: 3px 3px 3px 22px;
+  color: black;
+  font-size: 13px;
+  font-weight: normal;
+}
+/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid a {
+  color: black;
+}
+
+/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid {
+  background: 1px 1px no-repeat;
+  background-image: url(images/form/exclamation.png);
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li {
+  margin-bottom: 4px;
+}
+/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */
+.x-tip-body-form-invalid li.last {
+  margin-bottom: 0;
+}
+
+/**
+ * Creates a visual theme for a ButtonGroup.
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$btn-group-background-color]
+ * The background-color of the button group
+ *
+ * @param {color} [$ui-border-color=$btn-group-border-color]
+ * The border-color of the button group
+ *
+ * @param {number} [$ui-border-width=$btn-group-border-width]
+ * The border-width of the button group
+ *
+ * @param {number} [$ui-border-radius=$btn-group-border-radius]
+ * The border-radius of the button group
+ *
+ * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color]
+ * The inner border-color of the button group
+ *
+ * @param {color} [$ui-header-background-color=$btn-group-header-background-color]
+ * The background-color of the header
+ *
+ * @param {string} [$ui-header-font=$btn-group-header-font]
+ * The font of the header
+ *
+ * @param {color} [$ui-header-color=$btn-group-header-color]
+ * The text color of the header
+ *
+ * @param {number} [$ui-header-line-height=$btn-group-header-line-height]
+ * The line-height of the header
+ *
+ * @param {number} [$ui-header-padding=$btn-group-header-padding]
+ * The padding of the header
+ *
+ * @param {number} [$ui-body-padding=$btn-group-padding]
+ * The padding of the body element
+ *
+ * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image]
+ * Sprite image to use for header {@link Ext.panel.Tool Tools}
+ *
+ * @member Ext.container.ButtonGroup
+ */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default {
+  border-color: #dfeaf2;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default {
+  padding: 4px 5px;
+  line-height: 16px;
+  background: #dfeaf2;
+  -moz-border-radius-topleft: 0px;
+  -webkit-border-top-left-radius: 0px;
+  border-top-left-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  -webkit-border-top-right-radius: 0px;
+  border-top-right-radius: 0px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default {
+  padding: 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default .x-table-layout {
+  border-spacing: 5px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 0px 1px 0px 1px;
+  border-width: 3px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-frameInfo {
+  font-family: dh-3-3-3-3-3-3-3-3-0-1-0-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-tl,
+.x-btn-group-default-framed-bl,
+.x-btn-group-default-framed-tr,
+.x-btn-group-default-framed-br,
+.x-btn-group-default-framed-tc,
+.x-btn-group-default-framed-bc,
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-ml,
+.x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 0px 1px 0px 1px;
+  border-width: 3px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-group-default-framed-notitle {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-group-default-framed-notitle-frameInfo {
+  font-family: dh-3-3-3-3-3-3-3-3-0-1-0-1;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-tl,
+.x-btn-group-default-framed-notitle-bl,
+.x-btn-group-default-framed-notitle-tr,
+.x-btn-group-default-framed-notitle-br,
+.x-btn-group-default-framed-notitle-tc,
+.x-btn-group-default-framed-notitle-bc,
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-ml,
+.x-btn-group-default-framed-notitle-mr {
+  zoom: 1;
+  background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-group-default-framed-notitle-mc {
+  padding: 0px 1px 0px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-group-default-framed-notitle:after {
+  display: none;
+  content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-default-framed {
+  border-color: #dfeaf2;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -moz-box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed {
+  padding: 4px 5px;
+  line-height: 16px;
+  background: #dfeaf2;
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+}
+/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-default-framed .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-header-text-container-default-framed {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  color: #666666;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed {
+  padding: 0 1px 0 1px;
+}
+/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */
+.x-btn-group-body-default-framed .x-table-layout {
+  border-spacing: 5px;
+}
+
+/**
+ * Creates a visual theme for a Window
+ *
+ * @param {string} $ui-label
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-padding=$window-padding]
+ * The padding of the Window
+ *
+ * @param {number} [$ui-border-radius=$window-border-radius]
+ * The border-radius of the Window
+ *
+ * @param {color} [$ui-border-color=$window-border-color]
+ * The border-color of the Window
+ *
+ * @param {number} [$ui-border-width=$window-border-width]
+ * The border-width of the Window
+ *
+ * @param {color} [$ui-inner-border-color=$window-inner-border-color]
+ * The inner border-color of the Window
+ *
+ * @param {number} [$ui-inner-border-width=$window-inner-border-width]
+ * The inner border-width of the Window
+ *
+ * @param {color} [$ui-header-color=$window-header-color]
+ * The text color of the Header
+ *
+ * @param {color} [$ui-header-background-color=$window-header-background-color]
+ * The background-color of the Header
+ *
+ * @param {number/list} [$ui-header-padding=$window-header-padding]
+ * The padding of the Header
+ *
+ * @param {string} [$ui-header-font-family=$window-header-font-family]
+ * The font-family of the Header
+ *
+ * @param {number} [$ui-header-font-size=$window-header-font-size]
+ * The font-size of the Header
+ *
+ * @param {string} [$ui-header-font-weight=$window-header-font-weight]
+ * The font-weight of the Header
+ *
+ * @param {number} [$ui-header-line-height=$window-header-line-height]
+ * The line-height of the Header
+ *
+ * @param {number/list} [$ui-header-text-padding=$window-header-text-padding]
+ * The padding of the Header's text element
+ *
+ * @param {string} [$ui-header-text-transform=$window-header-text-transform]
+ * The text-transform of the Header
+ *
+ * @param {color} [$ui-header-border-color=$ui-border-color]
+ * The border-color of the Header
+ *
+ * @param {number} [$ui-header-border-width=$window-header-border-width]
+ * The border-width of the Header
+ *
+ * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color]
+ * The inner border-color of the Header
+ *
+ * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width]
+ * The inner border-width of the Header
+ *
+ * @param {number} [$ui-header-icon-width=$window-header-icon-width]
+ * The width of the Header icon
+ *
+ * @param {number} [$ui-header-icon-height=$window-header-icon-height]
+ * The height of the Header icon
+ *
+ * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing]
+ * The space between the Header icon and text
+ *
+ * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position]
+ * The background-position of the Header icon
+ *
+ * @param {color} [$ui-header-glyph-color=$window-header-glyph-color]
+ * The color of the Header glyph icon
+ *
+ * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity]
+ * The opacity of the Header glyph icon
+ *
+ * @param {number} [$ui-tool-spacing=$window-tool-spacing]
+ * The space between the {@link Ext.panel.Tool Tools}
+ *
+ * @param {string} [$ui-tool-background-image=$window-tool-background-image]
+ * The background sprite to use for {@link Ext.panel.Tool Tools}
+ *
+ * @param {color} [$ui-body-border-color=$window-body-border-color]
+ * The border-color of the Window body
+ *
+ * @param {color} [$ui-body-background-color=$window-body-background-color]
+ * The background-color of the Window body
+ *
+ * @param {number} [$ui-body-border-width=$window-body-border-width]
+ * The border-width of the Window body
+ *
+ * @param {string} [$ui-body-border-style=$window-body-border-style]
+ * The border-style of the Window body
+ *
+ * @param {color} [$ui-body-color=$window-body-color]
+ * The color of text inside the Window body
+ *
+ * @param {color} [$ui-background-color=$window-background-color]
+ * The background-color of the Window
+ *
+ * @param {boolean} [$ui-force-header-border=$window-force-header-border]
+ * True to force the window header to have a border on the side facing
+ * the window body.  Overrides dock layout's border management border
+ * removal rules.
+ *
+ * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules]
+ * True to include neptune style border management rules.
+ *
+ * @param {color} [$ui-wrap-border-color=$window-wrap-border-color]
+ * The color to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @param {color} [$ui-wrap-border-width=$window-wrap-border-width]
+ * The width to apply to the border that wraps the body and docked items. The presence of
+ * the wrap border is controlled by the {@link #border} config. Only applicable when
+ * `$ui-include-border-management-rules` is `true`.
+ *
+ * @member Ext.window.Window
+ */
+/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default {
+  border-color: #3892d3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-default-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-tl,
+.x-window-default-bl,
+.x-window-default-tr,
+.x-window-default-br,
+.x-window-default-tc,
+.x-window-default-bc,
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-ml,
+.x-window-default-mr {
+  zoom: 1;
+  background-image: url(images/window/window-default-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-default-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-default:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-body-default {
+  border-color: #3892d3;
+  border-width: 1px;
+  border-style: solid;
+  background: white;
+  color: black;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  font-size: 13px;
+  border-color: #3892d3;
+  zoom: 1;
+  background-color: #3892d3;
+}
+/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-tool-img {
+  background-color: #3892d3;
+}
+
+/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-window-header-text-container {
+  background-color: #3892d3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#3892d3);
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container {
+  background-color: #3892d3;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#3892d3);
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-text-container-default {
+  color: white;
+  font-weight: bold;
+  line-height: 15px;
+  font-family: arial, helvetica, verdana, sans-serif;
+  font-size: 13px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-tl,
+.x-window-header-default-top-bl,
+.x-window-header-default-top-tr,
+.x-window-header-default-top-br,
+.x-window-header-default-top-tc,
+.x-window-header-default-top-bc,
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-ml,
+.x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-tl,
+.x-window-header-default-right-bl,
+.x-window-header-default-right-tr,
+.x-window-header-default-right-br,
+.x-window-header-default-right-tc,
+.x-window-header-default-right-bc,
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-right-tl, .x-rtl.x-window-header-default-right-ml, .x-rtl.x-window-header-default-right-bl, .x-rtl.x-window-header-default-right-tr, .x-rtl.x-window-header-default-right-mr, .x-rtl.x-window-header-default-right-br {
+  background-image: url(images/window-header/window-header-default-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-ml,
+.x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-bottom-frameInfo {
+  font-family: dh-0-0-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-tl,
+.x-window-header-default-bottom-bl,
+.x-window-header-default-bottom-tr,
+.x-window-header-default-bottom-br,
+.x-window-header-default-bottom-tc,
+.x-window-header-default-bottom-bc,
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-ml,
+.x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-left-frameInfo {
+  font-family: dh-4-0-0-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-tl,
+.x-window-header-default-left-bl,
+.x-window-header-default-left-tr,
+.x-window-header-default-left-br,
+.x-window-header-default-left-tc,
+.x-window-header-default-left-bc,
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-left-tl, .x-rtl.x-window-header-default-left-ml, .x-rtl.x-window-header-default-left-bl, .x-rtl.x-window-header-default-left-tr, .x-rtl.x-window-header-default-left-mr, .x-rtl.x-window-header-default-left-br {
+  background-image: url(images/window-header/window-header-default-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-ml,
+.x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-tl,
+.x-window-header-default-collapsed-top-bl,
+.x-window-header-default-collapsed-top-tr,
+.x-window-header-default-collapsed-top-br,
+.x-window-header-default-collapsed-top-tc,
+.x-window-header-default-collapsed-top-bc,
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-ml,
+.x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-tl,
+.x-window-header-default-collapsed-right-bl,
+.x-window-header-default-collapsed-right-tr,
+.x-window-header-default-collapsed-right-br,
+.x-window-header-default-collapsed-right-tc,
+.x-window-header-default-collapsed-right-bc,
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-right-tl, .x-rtl.x-window-header-default-collapsed-right-ml, .x-rtl.x-window-header-default-collapsed-right-bl, .x-rtl.x-window-header-default-collapsed-right-tr, .x-rtl.x-window-header-default-collapsed-right-mr, .x-rtl.x-window-header-default-collapsed-right-br {
+  background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-ml,
+.x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-tl,
+.x-window-header-default-collapsed-bottom-bl,
+.x-window-header-default-collapsed-bottom-tr,
+.x-window-header-default-collapsed-bottom-br,
+.x-window-header-default-collapsed-bottom-tc,
+.x-window-header-default-collapsed-bottom-bc,
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-ml,
+.x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #3892d3;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  background-color: #3892d3;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-window-header-default-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-tl,
+.x-window-header-default-collapsed-left-bl,
+.x-window-header-default-collapsed-left-tr,
+.x-window-header-default-collapsed-left-br,
+.x-window-header-default-collapsed-left-tc,
+.x-window-header-default-collapsed-left-bc,
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-window-header-default-collapsed-left-tl, .x-rtl.x-window-header-default-collapsed-left-ml, .x-rtl.x-window-header-default-collapsed-left-bl, .x-rtl.x-window-header-default-collapsed-left-tr, .x-rtl.x-window-header-default-collapsed-left-mr, .x-rtl.x-window-header-default-collapsed-left-br {
+  background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-ml,
+.x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-window-header-default-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-window-header-default-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default .x-window-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-ie8m .x-window-header-default .x-window-header-glyph {
+  color: #9bc8e9;
+}
+
+/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 0 6px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-window-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-window-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 479, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-header-default {
+  border-width: 5px !important;
+}
+
+/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-nbr .x-window-default-collapsed .x-window-header {
+  border-width: 0 !important;
+}
+
+/* line 500, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable {
+  overflow: visible;
+}
+/* line 505, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-north-br {
+  top: -5px;
+}
+/* line 508, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-south-br {
+  bottom: -5px;
+}
+/* line 511, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-east-br {
+  right: -5px;
+}
+/* line 514, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-west-br {
+  left: -5px;
+}
+/* line 517, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 521, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 525, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 529, ../../../ext-theme-neutral/sass/src/window/Window.scss */
+.x-window-default-resizable .x-window-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-l {
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-b {
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-bl {
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-r {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rl {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rb {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-rbl {
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-t {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tb {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tbl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-tr {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trl {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-left-color: #3892d3 !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trb {
+  border-top-color: #3892d3 !important;
+  border-top-width: 1px !important;
+  border-right-color: #3892d3 !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #3892d3 !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-window-default-outer-border-trbl {
+  border-color: #3892d3 !important;
+  border-width: 1px !important;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #cf4c35;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url(images/form/exclamation.png);
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+div.x-lbl-top-err-icon {
+  margin-bottom: 4px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-invalid-icon {
+  width: 16px;
+  height: 16px;
+  margin: 0 5px;
+  background-image: url(images/form/exclamation.png);
+  background-repeat: no-repeat;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-form-item-label {
+  color: black;
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+  margin-top: 4px;
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-table-form-item {
+  margin-bottom: 5px;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0;
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-field {
+  color: black;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-item,
+.x-form-field {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field,
+.x-form-type-password textarea.x-form-invalid-field,
+.x-form-type-password input.x-form-invalid-field,
+.x-form-type-number textarea.x-form-invalid-field,
+.x-form-type-number input.x-form-invalid-field,
+.x-form-type-email textarea.x-form-invalid-field,
+.x-form-type-email input.x-form-invalid-field,
+.x-form-type-search textarea.x-form-invalid-field,
+.x-form-type-search input.x-form-invalid-field,
+.x-form-type-tel textarea.x-form-invalid-field,
+.x-form-type-tel input.x-form-invalid-field {
+  background-color: white;
+  border-color: #cf4c35;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-display-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-text {
+  color: black;
+  padding: 4px 6px 3px 6px;
+  background: white repeat-x 0 0;
+  border-width: 1px;
+  border-style: solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+  height: 24px;
+  line-height: 15px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-content-box .x-form-text {
+  height: 15px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-focus {
+  border-color: #3892d3;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-form-empty-field,
+textarea.x-form-empty-field {
+  color: gray;
+}
+
+/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */
+.x-quirks .x-ie .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */
+.x-form-textarea {
+  line-height: normal;
+  height: auto;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field-body {
+  height: 24px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */
+.x-form-display-field {
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+  color: black;
+  margin-top: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box .x-window-body {
+  background-color: white;
+  border-width: 0;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background-position: top left;
+  background-repeat: no-repeat;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-rtl.x-message-box-info, .x-rtl.x-message-box-warning, .x-rtl.x-message-box-question, .x-rtl.x-message-box-error {
+  background-position: top left;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-info {
+  background-image: url(images/shared/icon-info.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-warning {
+  background-image: url(images/shared/icon-warning.png);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-question {
+  background-image: url(images/shared/icon-question.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */
+.x-message-box-error {
+  background-image: url(images/shared/icon-error.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-wrap {
+  height: 24px;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb {
+  margin-top: 5px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/checkbox.png) no-repeat;
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -15px;
+}
+
+/* Focused */
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-checkbox-focus {
+  background-position: -15px 0;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-checked .x-form-checkbox-focus {
+  background-position: -15px -15px;
+}
+
+/* boxLabel */
+/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label {
+  margin-top: 4px;
+  font: normal 13px/17px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px;
+}
+
+/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */
+.x-rtl.x-field .x-form-cb-label-after {
+  margin-left: 0;
+  margin-right: 4px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 0 4px;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #cf4c35;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-check-group-alt {
+  background: #f5f5f5;
+  border-top: 1px dotted #f5f5f5;
+  border-bottom: 1px dotted #f5f5f5;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-form-check-group-label {
+  color: black;
+  padding: 2px;
+  margin: 0 30px 5px 0;
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: black;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */
+.x-rtl.x-form-check-group-label {
+  margin: 0 0 5px 30px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 0 10px;
+  margin: 0 0 10px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset,
+.x-quirks .x-ie .x-fieldset {
+  padding-top: 0;
+}
+/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie8m .x-fieldset .x-fieldset-body,
+.x-quirks .x-ie .x-fieldset .x-fieldset-body {
+  padding-top: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-checkbox {
+  line-height: 16px;
+  margin: 1px 3px 0 0;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header {
+  padding: 0 3px 1px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header .x-tool {
+  margin-top: 1px;
+  padding: 0;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text {
+  font: 12px/16px bold helvetica, arial, verdana, sans-serif;
+  color: black;
+  padding: 1px 0;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-header-text-collapsible {
+  cursor: pointer;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin: 1px 3px 0 0;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-rtl .x-tool {
+  margin: 1px 0 0 3px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px;
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px;
+}
+/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0;
+}
+
+/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px;
+}
+/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-strict .x-ie8 .x-fieldset-header .x-tool,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+  position: relative;
+  top: -1px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px;
+}
+
+/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important;
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1;
+}
+
+/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-toggle {
+  background-image: url(images/fieldset/collapse-tool.png);
+  background-position: 0 0;
+}
+/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset .x-tool-over .x-tool-toggle {
+  background-position: 0 -15px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: -15px 0;
+}
+/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -15px;
+}
+
+/* IE legend positioning bug */
+/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px;
+}
+
+/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset {
+  overflow: hidden;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1;
+}
+
+/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */
+.x-fieldset-body {
+  overflow: hidden;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/radio.png) no-repeat;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -15px;
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-radio-focus {
+  background-position: -15px 0;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */
+.x-form-cb-checked .x-form-radio-focus {
+  background-position: -15px -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  background: url(images/form/trigger.png);
+  width: 22px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-trigger {
+  background-image: url(images/form/trigger-rtl.png);
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-trigger-cell {
+  background-color: white;
+  width: 22px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-over {
+  background-position: -22px 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -66px 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -88px 0;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -44px 0;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger.png);
+}
+
+/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-clear-trigger {
+  background-image: url(images/form/clear-trigger-rtl.png);
+}
+
+/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-form-search-trigger {
+  background-image: url(images/form/search-trigger.png);
+}
+
+/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-rtl.x-form-trigger-wrap .x-form-search-trigger {
+  background-image: url(images/form/search-trigger-rtl.png);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 24px;
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */
+.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell {
+  height: 24px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+div.x-form-spinner-up,
+div.x-form-spinner-down {
+  background-image: url(images/form/spinner.png);
+  background-color: white;
+  width: 22px;
+  height: 11px;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-rtl.x-form-trigger-wrap .x-form-spinner-up,
+.x-rtl.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url(images/form/spinner-rtl.png);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-spinner-down {
+  background-position: 0 -11px;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -66px -11px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -22px -11px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -88px -11px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -44px -11px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-number {
+  width: 30px;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-first {
+  background-image: url(images/grid/page-first.png);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-prev {
+  background-image: url(images/grid/page-prev.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-next {
+  background-image: url(images/grid/page-next.png);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-page-last {
+  background-image: url(images/grid/page-last.png);
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-tbar-loading {
+  background-image: url(images/grid/refresh.png);
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-first {
+  background-image: url(images/grid/page-last.png);
+}
+/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-prev {
+  background-image: url(images/grid/page-next.png);
+}
+/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-next {
+  background-image: url(images/grid/page-prev.png);
+}
+/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */
+.x-rtl.x-tbar-page-last {
+  background-image: url(images/grid/page-first.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background: white;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-strict .x-ie7m .x-boundlist-list-ct {
+  position: relative;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item {
+  padding: 0 6px;
+  line-height: 22px;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  zoom: 1;
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-selected {
+  background: #c1ddf1;
+  border-color: #c1ddf1;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-item-over {
+  background: #d6e8f6;
+  border-color: #d6e8f6;
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+}
+
+/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background-color: white;
+  width: 212px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-header {
+  padding: 4px 6px;
+  text-align: center;
+  background-image: none;
+  background-color: #f5f5f5;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-arrow {
+  width: 12px;
+  height: 12px;
+  top: 9px;
+  cursor: pointer;
+  background-color: #f5f5f5;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-arrow:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-next {
+  right: 6px;
+  background-image: url(images/datepicker/arrow-right.png);
+}
+
+/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prev {
+  left: 6px;
+  background-image: url(images/datepicker/arrow-left.png);
+}
+
+/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn,
+.x-datepicker-month .x-btn .x-btn-tc,
+.x-datepicker-month .x-btn .x-btn-tl,
+.x-datepicker-month .x-btn .x-btn-tr,
+.x-datepicker-month .x-btn .x-btn-mc,
+.x-datepicker-month .x-btn .x-btn-ml,
+.x-datepicker-month .x-btn .x-btn-mr,
+.x-datepicker-month .x-btn .x-btn-bc,
+.x-datepicker-month .x-btn .x-btn-bl,
+.x-datepicker-month .x-btn .x-btn-br {
+  background: transparent;
+  border-width: 0 !important;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-inner {
+  color: #3892d3;
+}
+/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-month .x-btn-split-right {
+  background-image: url(images/datepicker/month-arrow.png);
+  padding-right: 8px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header {
+  width: 30px;
+  color: black;
+  font: bold 13px helvetica, arial, verdana, sans-serif;
+  text-align: right;
+  background-image: none;
+  background-color: white;
+}
+
+/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-column-header-inner {
+  line-height: 25px;
+  padding: 0 9px 0 0;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-cell {
+  text-align: right;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-date {
+  padding: 0 7px 0 0;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  color: black;
+  cursor: pointer;
+  line-height: 23px;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-datepicker-date:hover {
+  color: black;
+  background-color: #eaf3fa;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected {
+  border-style: solid;
+  border-color: #3892d3;
+}
+/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-selected .x-datepicker-date {
+  background-color: #d6e8f6;
+  font-weight: bold;
+}
+
+/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-today {
+  border-color: darkred;
+  border-style: solid;
+}
+
+/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-prevday .x-datepicker-date,
+.x-datepicker-nextday .x-datepicker-date {
+  color: #bfbfbf;
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date {
+  background-color: #eeeeee;
+  cursor: default;
+  color: gray;
+}
+
+/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-disabled a.x-datepicker-date:hover {
+  background-color: #eeeeee;
+}
+
+/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 3px 0;
+  background-image: none;
+  background-color: #f5f5f5;
+  text-align: center;
+}
+/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-datepicker-footer .x-btn,
+.x-monthpicker-buttons .x-btn {
+  margin: 0 3px 0 2px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker {
+  width: 212px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #e1e1e1;
+  background-color: white;
+}
+
+/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months {
+  border-width: 0 1px 0 0;
+  border-color: #e1e1e1;
+  border-style: solid;
+  width: 105px;
+}
+/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-months .x-monthpicker-item {
+  width: 52px;
+}
+
+/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years {
+  width: 105px;
+}
+/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 52px;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item {
+  margin: 5px 0 5px;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  text-align: center;
+}
+
+/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  color: black;
+  border-width: 1px;
+  border-style: solid;
+  border-color: white;
+  line-height: 22px;
+  cursor: pointer;
+}
+
+/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-item-inner:hover {
+  background-color: #eaf3fa;
+}
+
+/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-selected {
+  background-color: #d6e8f6;
+  border-style: solid;
+  border-color: #3892d3;
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav {
+  height: 34px;
+}
+
+/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button-ct {
+  width: 52px;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-button {
+  height: 12px;
+  width: 12px;
+  cursor: pointer;
+  margin-top: 11px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+  background-color: white;
+}
+
+/* line 289, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+a.x-monthpicker-yearnav-button:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next {
+  background-image: url(images/datepicker/arrow-right.png);
+  background-position: 0 0;
+}
+
+/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-next-over {
+  background-position: 0 0;
+}
+
+/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev {
+  background-image: url(images/datepicker/arrow-left.png);
+  background-position: 0 0;
+}
+
+/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-yearnav-prev-over {
+  background-position: 0 0;
+}
+
+/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px;
+}
+/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+}
+/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 28px;
+}
+/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */
+.x-monthpicker-small .x-monthpicker-yearnav-button {
+  margin-top: 8px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-form-date-trigger {
+  background-image: url(images/form/date-trigger.png);
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */
+.x-rtl.x-form-trigger-wrap .x-form-date-trigger {
+  background-image: url(images/form/date-trigger-rtl.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-text {
+  color: gray;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker {
+  width: 192px;
+  height: 120px;
+  background-color: white;
+  border-color: white;
+  border-width: 0;
+  border-style: solid;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item {
+  width: 24px;
+  height: 24px;
+  border-width: 1px;
+  border-color: white;
+  border-style: solid;
+  background-color: white;
+  cursor: pointer;
+  padding: 2px;
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-content-box .x-color-picker-item {
+  width: 18px;
+  height: 18px;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+a.x-color-picker-item:hover {
+  border-color: #8bb8f3;
+  background-color: #e6e6e6;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #e6e6e6;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */
+.x-color-picker-item-inner {
+  line-height: 16px;
+  border-color: #e1e1e1;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item div.x-edit-bold {
+  background-position: 0 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item div.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item div.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item div.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item div.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item div.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item div.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item div.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item div.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item div.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item div.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item div.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item div.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item div.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url(images/editor/tb-sprite.png);
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px;
+}
+
+/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 13px;
+  font-family: inherit;
+}
+
+/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-wrap textarea {
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+  background-color: white;
+  resize: none;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-body {
+  background: white;
+  border-width: 1px;
+  border-style: solid;
+  border-color: silver;
+}
+
+/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  background-color: white;
+  font: normal 13px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell {
+  color: null;
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  background-color: white;
+  border-color: #ededed;
+  border-style: solid;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-alt .x-grid-td {
+  background-color: #fafafa;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-selected .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #c1ddf1;
+}
+/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #c1ddf1;
+}
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-before-focused .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  background-color: #e2eff8;
+}
+/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-over .x-grid-td {
+  background-color: #e2eff8;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-td {
+  background-color: #c1ddf1;
+}
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-td {
+  border-bottom-style: solid;
+  border-bottom-color: #e2eff8;
+}
+/* line 96, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-row-focused-first .x-grid-td {
+  border-top: 1px solid #e2eff8;
+}
+/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-selected .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #c1ddf1;
+  border-top-width: 0;
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row-focused .x-grid-row-summary .x-grid-td {
+  border-bottom-color: #e2eff8;
+  border-top-width: 0;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-td {
+  border-bottom-width: 1px;
+}
+/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table {
+  border-top: 1px solid white;
+}
+/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-over-first {
+  border-top-style: solid;
+  border-top-color: #e2eff8;
+}
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-selected-first {
+  border-top-style: solid;
+  border-top-color: #c1ddf1;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-row-lines .x-grid-table-focused-first {
+  border-top-style: solid;
+  border-top-color: #e2eff8;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-inner {
+  text-overflow: ellipsis;
+  padding: 5px 10px 4px 10px;
+}
+
+/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-cell-special {
+  border-color: #ededed;
+  border-style: solid;
+  border-right-width: 1px 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-cell-special {
+  border-right-width: 0;
+  border-left-width: 1px 0;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-dirty-cell {
+  background: url(images/grid/dirty.png) no-repeat 0 0;
+}
+
+/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-dirty-cell {
+  background-image: url(images/grid/dirty-rtl.png);
+  background-position: right 0;
+}
+
+/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-row .x-grid-cell-selected {
+  color: null;
+  background-color: #c1ddf1;
+}
+
+/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 1px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-rtl.x-grid-with-col-lines .x-grid-cell {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+
+/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */
+.x-grid-resize-marker {
+  width: 1px;
+  background-color: #0f0f0f;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible;
+  pointer-events: none;
+}
+/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-left {
+  position: absolute;
+  top: -8px;
+  left: -12px;
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+  height: 16px;
+  width: 16px;
+}
+/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-grid-drop-indicator .x-grid-drop-indicator-right {
+  position: absolute;
+  top: -8px;
+  right: -11px;
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+  height: 16px;
+  width: 16px;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url(images/grid/dd-insert-arrow-right.png);
+}
+/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url(images/grid/dd-insert-arrow-left.png);
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-top {
+  background-image: url(images/grid/col-move-top.png);
+}
+
+/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */
+.col-move-bottom {
+  background-image: url(images/grid/col-move-bottom.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid #157fcc;
+  border-bottom-color: #f5f5f5;
+  background-color: #f5f5f5;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px !important;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-accordion-item .x-grid-header-ct-hidden {
+  border: 0 !important;
+}
+
+/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-grid-body {
+  border-top-color: silver;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-asc.png);
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-desc.png);
+}
+
+/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url(images/grid/columns.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header {
+  border-right: 1px solid silver;
+  color: #666666;
+  font: bold 13px/15px helvetica, arial, verdana, sans-serif;
+  background-color: #f5f5f5;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header {
+  border-right: 0 none;
+  border-left: 1px solid silver;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid silver;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-group-sub-header .x-column-header-inner {
+  padding: 6px 10px 7px 10px;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-inner {
+  padding: 7px 10px 7px 10px;
+  text-overflow: ellipsis;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  background-image: none;
+  background-color: #eef6fb;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open {
+  background-color: #eef6fb;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-open .x-column-header-trigger {
+  background-color: #dfeaf2;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  width: 18px;
+  cursor: pointer;
+  background-color: transparent;
+  background-position: center center;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  background-position: center center;
+}
+
+/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-column-header-text {
+  margin-right: 12px;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-align-right .x-rtl.x-column-header-text {
+  margin-right: 0;
+  margin-left: 12px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text,
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 17px;
+  background-position: right center;
+}
+
+/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-rtl.x-column-header-text,
+.x-column-header-sort-DESC .x-rtl.x-column-header-text {
+  padding-right: 0;
+  padding-left: 17px;
+  background-position: 0 center;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  background-image: url(images/grid/sort_asc.png);
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  background-image: url(images/grid/sort_desc.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-grid-cell-inner-action-col {
+  padding: 4px 4px 4px 4px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */
+.x-action-col-icon {
+  height: 16px;
+  width: 16px;
+  cursor: pointer;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-cell-inner-checkcolumn {
+  padding: 5px 10px 4px 10px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn {
+  width: 15px;
+  height: 15px;
+  background: url(images/form/checkbox.png) 0 0 no-repeat;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-item-disabled .x-grid-checkcolumn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */
+.x-grid-checkcolumn-checked {
+  background-position: 0 -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */
+.x-grid-cell-inner-row-numberer {
+  padding: 5px 5px 4px 3px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd {
+  border-width: 0 0 1px 0;
+  border-style: solid;
+  border-color: silver;
+  padding: 8px 4px 8px 4px;
+  background: #f5f5f5;
+  cursor: pointer;
+}
+
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-not-collapsible {
+  cursor: default;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-image: url(images/grid/group-collapse.png);
+  padding: 0 0 0 17px;
+}
+
+/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title {
+  background-position: right center;
+  padding: 0 17px 0 0;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-title {
+  color: #666666;
+  font: bold 13px/15px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-group-by-icon {
+  background-image: url(images/grid/group-by.png);
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */
+.x-show-groups-icon {
+  background-image: url(images/grid/group-by.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */
+.x-grid-rowbody {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 5px 10px 5px 10px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */
+.x-grid-rowwrap {
+  border-color: #ededed;
+  border-style: solid;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-summary-bottom {
+  border-bottom-color: #f5f5f5;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary {
+  border-width: 1px;
+  border-color: #157fcc;
+  border-style: solid;
+}
+/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-docked-summary .x-grid-table {
+  width: 100%;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-row-summary .x-grid-cell,
+.x-grid-row-summary .x-grid-rowwrap,
+.x-grid-row-summary .x-grid-cell-rowbody {
+  border-color: #ededed;
+  background-color: transparent !important;
+  border-top-width: 0;
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */
+.x-grid-with-row-lines .x-grid-table-summary {
+  border: 0;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0;
+  border-style: solid;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-locked .x-rtl.x-grid-inner-locked {
+  border-width: 0 0 0 1px;
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-column-header-last,
+.x-grid-inner-locked .x-grid-cell-last {
+  border-right-width: 0!important;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-grid-inner-locked .x-rtl.x-column-header-last {
+  border-left-width: 0!important;
+}
+
+/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last {
+  border-left: 0 none;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last {
+  border-left: 0 none;
+}
+
+/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-lock.png);
+}
+
+/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url(images/grid/hmenu-unlock.png);
+}
+
+/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-text {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 4px 9px 3px 9px;
+}
+/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-gecko .x-grid-editor .x-form-text {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field-body {
+  height: 24px;
+}
+/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-display-field {
+  font: normal 13px/15px helvetica, arial, verdana, sans-serif;
+  padding: 5px 10px 4px 10px;
+  text-overflow: ellipsis;
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */
+.x-grid-editor .x-form-action-col-field {
+  padding: 4px 4px 4px 4px;
+}
+
+/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-tree-cell-editor .x-form-text {
+  padding-left: 3px;
+  padding-right: 3px;
+}
+/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */
+.x-gecko .x-tree-cell-editor .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px;
+}
+
+/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-field {
+  margin: 0 3px 0 2px;
+}
+/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-display-field {
+  padding: 5px 7px 4px 8px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-action-col-field {
+  padding: 4px 1px 4px 2px;
+}
+/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-form-text {
+  padding: 4px 6px 3px 7px;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-gecko .x-grid-row-editor .x-form-text {
+  padding-left: 6px;
+  padding-right: 5px;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor .x-panel-body {
+  border-top: 1px solid #e1e1e1 !important;
+  border-bottom: 1px solid #e1e1e1 !important;
+  padding: 5px 0 5px 0;
+  background-color: #dfeaf2;
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-form-cb {
+  margin-right: 1px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb {
+  margin-right: 0;
+  margin-left: 1px;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo {
+  font-family: th-0-0-5-5-0-1-1-1-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-tl,
+.x-grid-row-editor-buttons-default-bottom-bl,
+.x-grid-row-editor-buttons-default-bottom-tr,
+.x-grid-row-editor-buttons-default-bottom-br,
+.x-grid-row-editor-buttons-default-bottom-tc,
+.x-grid-row-editor-buttons-default-bottom-bc,
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-ml,
+.x-grid-row-editor-buttons-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-bottom-mc {
+  padding: 5px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-grid-row-editor-buttons-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo {
+  font-family: th-5-5-0-0-1-1-0-1-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-tl,
+.x-grid-row-editor-buttons-default-top-bl,
+.x-grid-row-editor-buttons-default-top-tr,
+.x-grid-row-editor-buttons-default-top-br,
+.x-grid-row-editor-buttons-default-top-tc,
+.x-grid-row-editor-buttons-default-top-bc,
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-ml,
+.x-grid-row-editor-buttons-default-top-mr {
+  zoom: 1;
+  background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-grid-row-editor-buttons-default-top-mc {
+  padding: 1px 1px 5px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,
+.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-grid-row-editor-buttons-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-bottom {
+  top: 35px;
+}
+
+/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons-default-top {
+  bottom: 35px;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-buttons {
+  border-color: #e1e1e1;
+}
+
+/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-update-button {
+  margin-right: 3px;
+}
+
+/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-row-editor-cancel-button {
+  margin-left: 2px;
+}
+
+/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-update-button {
+  margin-left: 3px;
+  margin-right: auto;
+}
+
+/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-row-editor-cancel-button {
+  margin-right: 2px;
+  margin-left: auto;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors .x-tip-body {
+  padding: 5px;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-grid-row-editor-errors-item {
+  list-style: disc;
+  margin-left: 15px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */
+.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item {
+  margin-left: 0;
+  margin-right: 15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-cell-inner-row-expander {
+  padding: 7px 6px 6px 6px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-expander {
+  width: 11px;
+  height: 11px;
+  cursor: pointer;
+  background-image: url(images/grid/group-collapse.png);
+}
+/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url(images/grid/group-expand.png);
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-layout-ct {
+  background-color: white;
+  padding: 5px 5px 0;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-panel-header-text-container {
+  color: #666666;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  text-transform: none;
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item {
+  margin: 0 0 5px;
+}
+/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd {
+  background: #dfeaf2;
+  border-top-color: white;
+  padding: 8px 10px;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-sibling-expanded {
+  border-top-color: #157fcc;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-last-collapsed {
+  border-bottom-color: #dfeaf2;
+}
+/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-body {
+  border-width: 0;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-collapse-top,
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position: 0 -272px;
+}
+/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-expand-top,
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position: 0 -256px;
+}
+/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-collapse-el {
+  cursor: pointer;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -24px;
+  width: 8px;
+  height: 48px;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 48px;
+  height: 8px;
+  margin-left: -24px;
+}
+
+/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+
+/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+
+/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-top {
+  background-image: url(images/util/splitter/mini-top.png);
+}
+
+/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-bottom.png);
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-left {
+  background-image: url(images/util/splitter/mini-left.png);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-rtl.x-layout-split-right {
+  background-image: url(images/util/splitter/mini-right.png);
+}
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background-image: url(images/util/splitter/mini-bottom.png);
+}
+/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background-image: url(images/util/splitter/mini-top.png);
+}
+
+/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active {
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */
+.x-border-layout-ct {
+  background-color: #3892d3;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu {
+  border-style: solid;
+  border-width: 1px;
+  border-color: #e1e1e1;
+}
+
+/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-body {
+  background: white;
+  padding: 0;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-icon-separator {
+  left: 22px;
+  border-left: solid 1px #e1e1e1;
+  background-color: white;
+  width: 1px;
+}
+
+/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu .x-menu-icon-separator {
+  left: auto;
+  right: 22px;
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item {
+  cursor: pointer;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-indent {
+  margin-left: 27px;
+}
+
+/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-indent {
+  margin-left: 0;
+  margin-right: 27px;
+}
+
+/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-active {
+  background-image: none;
+  background-color: #d6e8f6;
+  border-color: #0079d2;
+}
+/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-nlg .x-menu-item-active {
+  background: #d6e8f6 repeat-x left top;
+  background-image: url(images/menu/menu-item-active-bg.gif);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-link {
+  line-height: 24px;
+  padding: 0 4px 0 27px;
+  display: inline-block;
+}
+
+/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-link {
+  padding: 0 27px 0 4px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-right-check-item-text {
+  padding-right: 22px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-right-check-item-text {
+  padding-left: 22px;
+  padding-right: 0;
+}
+
+/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  top: 5px;
+  left: 3px;
+  background-position: center center;
+}
+
+/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: gray;
+  opacity: 0.5;
+}
+/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie8m .x-menu-item-glyph {
+  color: #bfbfbf;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon {
+  left: auto;
+  right: 3px;
+}
+
+/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  top: 4px;
+  right: 3px;
+  background-position: center center;
+}
+
+/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-icon-right {
+  right: auto;
+  left: 3px;
+}
+
+/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-text {
+  font-size: 13px;
+  color: black;
+  cursor: pointer;
+  margin-right: 16px;
+}
+
+/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+a.x-rtl .x-menu-item-text {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right {
+  background-image: url(images/menu/checked.png);
+}
+/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url(images/menu/group-checked.png);
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right {
+  background-image: url(images/menu/unchecked.png);
+}
+/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-separator {
+  height: 1px;
+  border-top: solid 1px #e1e1e1;
+  background-color: white;
+  margin: 2px 0;
+  padding: 0;
+}
+
+/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-arrow {
+  width: 12px;
+  height: 9px;
+  top: 8px;
+  right: 0;
+  background-image: url(images/menu/menu-parent.png);
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-rtl.x-menu-item-arrow {
+  left: 0;
+  right: auto;
+  background-image: url(images/menu/menu-parent-left.png);
+}
+
+/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-icon-separator {
+  width: 0px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-content-box .x-menu-item-separator {
+  height: 0px;
+}
+
+/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent;
+}
+
+/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8;
+}
+
+/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-item .x-form-item-label {
+  font-size: 13px;
+  color: black;
+}
+
+/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top {
+  height: 16px;
+  background-image: url(images/menu/scroll-top.png);
+}
+
+/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-bottom {
+  height: 16px;
+  background-image: url(images/menu/scroll-bottom.png);
+}
+
+/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top, .x-menu-scroll-bottom {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: white;
+}
+
+/* line 329, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top-hover, .x-menu-scroll-bottom-hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */
+.x-menu-scroll-top-pressed, .x-menu-scroll-bottom-pressed {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-menu-item-link:after {
+  display: none;
+  content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool {
+  cursor: pointer;
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-img {
+  overflow: hidden;
+  width: 16px;
+  height: 16px;
+  background-image: url(images/tools/tool-sprites.png);
+  margin: 0;
+}
+/* line 12, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 17, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-over .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 22, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pressed .x-tool-img {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+
+/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-placeholder {
+  visibility: hidden;
+}
+
+/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-close {
+  background-position: 0 0;
+}
+
+/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minimize {
+  background-position: 0 -16px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-maximize {
+  background-position: 0 -32px;
+}
+
+/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-restore {
+  background-position: 0 -48px;
+}
+
+/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-toggle {
+  background-position: 0 -64px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-panel-collapsed .x-tool-toggle {
+  background-position: 0 -80px;
+}
+
+/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-gear {
+  background-position: 0 -96px;
+}
+
+/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-prev {
+  background-position: 0 -112px;
+}
+
+/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-next {
+  background-position: 0 -128px;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-pin {
+  background-position: 0 -144px;
+}
+
+/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-unpin {
+  background-position: 0 -160px;
+}
+
+/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-right {
+  background-position: 0 -176px;
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-left {
+  background-position: 0 -192px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-down {
+  background-position: 0 -208px;
+}
+
+/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-up {
+  background-position: 0 -224px;
+}
+
+/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-refresh {
+  background-position: 0 -240px;
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-plus {
+  background-position: 0 -256px;
+}
+
+/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-minus {
+  background-position: 0 -272px;
+}
+
+/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-search {
+  background-position: 0 -288px;
+}
+
+/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-save {
+  background-position: 0 -304px;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-help {
+  background-position: 0 -320px;
+}
+
+/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-print {
+  background-position: 0 -336px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand {
+  background-position: 0 -352px;
+}
+
+/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-collapse {
+  background-position: 0 -368px;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-resize {
+  background-position: 0 -384px;
+}
+
+/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-move {
+  background-position: 0 -400px;
+}
+
+/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -208px;
+}
+
+/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -224px;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -192px;
+}
+
+/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -176px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-left, .x-rtl.x-tool-collapse-left {
+  background-position: 0 -176px;
+}
+/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */
+.x-rtl.x-tool-expand-right, .x-rtl.x-tool-collapse-right {
+  background-position: 0 -192px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  -ms-border-radius: 6px;
+  -o-border-radius: 6px;
+  border-radius: 6px;
+}
+
+/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-collapsed .x-resizable-handle {
+  display: none;
+}
+
+/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize;
+}
+/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize;
+}
+/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize;
+}
+/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize;
+}
+/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize;
+}
+/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize;
+}
+/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize;
+}
+
+/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0;
+}
+
+/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+}
+
+/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0;
+}
+
+/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0;
+}
+
+/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101;
+}
+
+/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101;
+}
+
+/*IE rounding error*/
+/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/
+}
+/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-pinned .x-resizable-handle,
+.x-resizable-over .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+
+/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-window-collapsed .x-window-handle {
+  display: none;
+}
+
+/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  overflow: hidden;
+  z-index: 50000;
+}
+
+/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-image: url(images/sizer/e-handle.png);
+}
+/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-image: url(images/sizer/s-handle.png);
+}
+/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url(images/sizer/se-handle.png);
+}
+/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url(images/sizer/nw-handle.png);
+}
+/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url(images/sizer/ne-handle.png);
+}
+/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url(images/sizer/sw-handle.png);
+}
+
+/* Horizontal styles */
+/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: no-repeat 0 -15px;
+}
+/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: no-repeat right -30px;
+}
+
+/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-inner {
+  height: 15px;
+}
+
+/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-ie6 .x-form-item .x-slider-horz,
+.x-ie7 .x-form-item .x-slider-horz,
+.x-quirks .x-ie .x-form-item .x-slider-horz {
+  margin-top: 5px;
+}
+
+/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 15px;
+  height: 15px;
+  margin-left: -7px;
+  background-image: url(images/slider/slider-thumb.png);
+}
+
+/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -15px -15px;
+}
+
+/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -30px -30px;
+}
+
+/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz {
+  padding-left: 0;
+  padding-right: 7px;
+  background-position: right -30px;
+}
+/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-end {
+  padding-right: 0;
+  padding-left: 7px;
+  background-position: left -15px;
+}
+/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-rtl.x-slider-horz .x-slider-thumb {
+  margin-right: -7px;
+}
+
+/* Vertical styles */
+/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: no-repeat -30px 0;
+}
+
+/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: no-repeat -15px bottom;
+  width: 15px;
+}
+
+/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-inner {
+  width: 15px;
+}
+
+/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 15px;
+  margin-bottom: -7px;
+  background-image: url(images/slider/slider-v-thumb.png);
+}
+
+/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -15px;
+}
+
+/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -30px;
+}
+
+/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url(images/slider/slider-bg.png);
+}
+
+/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url(images/slider/slider-v-bg.png);
+}
+
+/**
+ * Creates a visual theme for a Tab
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
+ * The space in between the text and the close button
+ *
+ * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
+ * The bottom border color of inactive tabs.
+ *
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates a visual theme for a Tab Bar
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-height]
+ * The height of tabs that will be used in this tabbar UI. The tabbar body is given
+ * a fixed height to leave room for the tabs, and so that the tabbar does not collapse
+ * when it does not contain any tabs.
+ *
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates a visual theme for a Tab Panel
+ *
+ * @param {string} $ui
+ * The name of the UI being created. Can not included spaces or special punctuation
+ * (used in CSS class names).
+ *
+ * @param {color} [$ui-tab-background-color=$tab-base-color]
+ * The background-color of Tabs
+ *
+ * @param {color} [$ui-tab-background-color-over=$tab-base-color-over]
+ * The background-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-background-color-active=$tab-base-color-active]
+ * The background-color of the active Tab
+ *
+ * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled]
+ * The background-color of disabled Tabs
+ *
+ * @param {list} [$ui-tab-border-radius=$tab-border-radius]
+ * The border-radius of Tabs
+ *
+ * @param {number} [$ui-tab-border-width=$tab-border-width]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-margin=$tab-margin]
+ * The border-width of Tabs
+ *
+ * @param {number/list} [$ui-tab-padding=$tab-padding]
+ * The padding of Tabs
+ *
+ * @param {number/list} [$ui-tab-text-padding=$tab-text-padding]
+ * The padding of the Tab's text element
+ *
+ * @param {color} [$ui-tab-border-color=$tab-border-color]
+ * The border-color of Tabs
+ *
+ * @param {color} [$ui-tab-border-color-over=$tab-border-color-over]
+ * The border-color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-border-color-active=$tab-border-color-active]
+ * The border-color of the active Tab
+ *
+ * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled]
+ * The border-color of disabled Tabs
+ *
+ * @param {string} [$ui-tab-cursor=$tab-cursor]
+ * The Tab cursor
+ *
+ * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled]
+ * The cursor of disabled Tabs
+ *
+ * @param {number} [$ui-tab-font-size=$tab-font-size]
+ * The font-size of Tabs
+ *
+ * @param {number} [$ui-tab-font-size-over=$tab-font-size-over]
+ * The font-size of hovered Tabs
+ *
+ * @param {number} [$ui-tab-font-size-active=$tab-font-size-active]
+ * The font-size of the active Tab
+ *
+ * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled]
+ * The font-size of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-weight=$tab-font-weight]
+ * The font-weight of Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over]
+ * The font-weight of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active]
+ * The font-weight of the active Tab
+ *
+ * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled]
+ * The font-weight of disabled Tabs
+ *
+ * @param {string} [$ui-tab-font-family=$tab-font-family]
+ * The font-family of Tabs
+ *
+ * @param {string} [$ui-tab-font-family-over=$tab-font-family-over]
+ * The font-family of hovered Tabs
+ *
+ * @param {string} [$ui-tab-font-family-active=$tab-font-family-active]
+ * The font-family of the active Tab
+ *
+ * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled]
+ * The font-family of disabled Tabs
+ *
+ * @param {number} [$ui-tab-line-height=$tab-line-height]
+ * The line-height of Tabs
+ *
+ * @param {color} [$ui-tab-color=$tab-color]
+ * The text color of Tabs
+ *
+ * @param {color} [$ui-tab-color-over=$tab-color-over]
+ * The text color of hovered Tabs
+ *
+ * @param {color} [$ui-tab-color-active=$tab-color-active]
+ * The text color of the active Tab
+ *
+ * @param {color} [$ui-tab-color-disabled=$tab-color-disabled]
+ * The text color of disabled Tabs
+ *
+ * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient]
+ * The background-gradient for Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over]
+ * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active]
+ * The background-gradient for the active Tab. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled]
+ * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width]
+ * The inner border-width of Tabs
+ *
+ * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color]
+ * The inner border-color of Tabs
+ *
+ * @param {number} [$ui-tab-icon-width=$tab-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-height=$tab-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position]
+ * The background-position of Tab icons
+ *
+ * @param {color} [$ui-tab-glyph-color=$tab-glyph-color]
+ * The color of Tab glyph icons
+ *
+ * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over]
+ * The color of a Tab glyph icon when the Tab is hovered
+ *
+ * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active]
+ * The color of a Tab glyph icon when the Tab is active
+ *
+ * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled]
+ * The color of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity]
+ * The opacity of a Tab glyph icon
+ *
+ * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
+ * The opacity of a Tab glyph icon when the Tab is disabled
+ *
+ * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled]
+ * opacity to apply to the tab's main element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled]
+ * opacity to apply to the tab's text element when the tab is disabled
+ *
+ * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled]
+ * opacity to apply to the tab's icon element when the tab is disabled
+ *
+ * @param {number} [$ui-strip-height=$tabbar-strip-height]
+ * The height of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width]
+ * The border-width of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width]
+ * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip
+ *
+ * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color]
+ * The border-color of the Tab Bar strip
+ *
+ * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color]
+ * The background-color of the Tab Bar strip
+ *
+ * @param {number/list} [$ui-bar-border-width=$tabbar-border-width]
+ * The border-width of the Tab Bar
+ *
+ * @param {color} [$ui-bar-border-color=$tabbar-border-color]
+ * The border-color of the Tab Bar
+ *
+ * @param {number/list} [$ui-bar-padding=$tabbar-padding]
+ * The padding of the Tab Bar
+ *
+ * @param {color} [$ui-bar-background-color=$tabbar-background-color]
+ * The background color of the  Tab Bar
+ *
+ * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient]
+ * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient
+ * or a list of color stops. Used as the `$type` parameter for 
+ * {@link Global_CSS#background-gradient}.
+ *
+ * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width]
+ * The width of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor]
+ * The cursor of the Tab Bar scrollers
+ *
+ * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled]
+ * The cursor of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity]
+ * The opacity of Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over]
+ * The opacity of hovered Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed]
+ * The opacity of pressed Tab Bar scrollers
+ *
+ * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled]
+ * The opacity of disabled Tab Bar scrollers
+ *
+ * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width]
+ * The width of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height]
+ * The height of the Tab close icon
+ *
+ * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top]
+ * The distance to offset the Tab close icon from the top of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right]
+ * The distance to offset the Tab close icon from the right of the tab
+ *
+ * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing]
+ * the space in between the text and the close button
+ *
+ * @member Ext.tab.Panel
+ */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-top-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-tl,
+.x-tab-default-top-bl,
+.x-tab-default-top-tr,
+.x-tab-default-top-br,
+.x-tab-default-top-tc,
+.x-tab-default-top-bc,
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-ml,
+.x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-top-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-bottom-frameInfo {
+  font-family: th-0-0-3-3-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-tl,
+.x-tab-default-bottom-bl,
+.x-tab-default-bottom-tr,
+.x-tab-default-bottom-br,
+.x-tab-default-bottom-tc,
+.x-tab-default-bottom-bc,
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-ml,
+.x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-bottom-mc {
+  padding: 8px 9px 4px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-left-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-tl,
+.x-tab-default-left-bl,
+.x-tab-default-left-tr,
+.x-tab-default-left-br,
+.x-tab-default-left-tc,
+.x-tab-default-left-bc,
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-ml,
+.x-tab-default-left-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-left-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-left-tl,
+.x-strict .x-ie7 .x-tab-default-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 8px 12px 7px 12px;
+  border-width: 0 0 0 0;
+  border-style: solid;
+  background-color: #4b9cd7;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-tab-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-tab-default-right-frameInfo {
+  font-family: th-3-3-0-0-0-0-0-0-8-12-7-12;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-tl,
+.x-tab-default-right-bl,
+.x-tab-default-right-tr,
+.x-tab-default-right-br,
+.x-tab-default-right-tc,
+.x-tab-default-right-bc,
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-ml,
+.x-tab-default-right-mr {
+  zoom: 1;
+  background-image: url(images/tab/tab-default-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-tab-default-right-mc {
+  padding: 5px 9px 7px 9px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-tab-default-right-tl,
+.x-strict .x-ie7 .x-tab-default-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default {
+  border-color: #157fcc;
+  margin: 0 1px 0 0;
+  cursor: pointer;
+}
+/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-inner {
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: white;
+  line-height: 16px;
+}
+/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-icon-el {
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  background-position: center center;
+}
+/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-glyph {
+  font-size: 16px;
+  color: white;
+  opacity: 0.5;
+}
+/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default .x-tab-glyph {
+  color: #a5cdeb;
+}
+/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default {
+  padding-left: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button {
+  padding-left: 12px;
+}
+/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el {
+  left: 12px;
+}
+
+/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon .x-tab-inner {
+  width: 16px;
+}
+
+/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 0 0 1px;
+}
+
+/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default {
+  margin: 0 0 0 1px;
+}
+
+/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  margin: 0 0 0 1px;
+}
+
+/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  margin: 0 1px 0 0;
+}
+
+/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top,
+.x-tab-default-left,
+.x-tab-default-right {
+  border-bottom: 0 solid #157fcc;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom {
+  border-top: 0 solid #157fcc;
+}
+
+/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-left {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-left {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-left {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-right {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-right {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-rtl.x-tab-default-right {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 22px;
+}
+
+/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-icon-text-left .x-tab-inner {
+  padding-left: 0;
+  padding-right: 22px;
+}
+
+/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over {
+  background-color: #5fa7db;
+}
+/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-over .x-tab-glyph {
+  color: white;
+}
+/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-over .x-tab-glyph {
+  color: #afd3ed;
+}
+
+/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active {
+  background-color: #add2ed;
+}
+/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-inner {
+  color: #157fcc;
+}
+/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-active .x-tab-glyph {
+  color: #157fcc;
+}
+/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-active .x-tab-glyph {
+  color: #61a8dc;
+}
+
+/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active,
+.x-tab-default-left-active,
+.x-tab-default-right-active {
+  border-bottom: 0 solid #add2ed;
+}
+
+/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active {
+  border-top: 0 solid #add2ed;
+}
+
+/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+}
+/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-inner {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+}
+/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-glyph {
+  color: white;
+  opacity: 0.3;
+  filter: none;
+}
+/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-ie8m .x-tab-default-disabled .x-tab-glyph {
+  color: #81b9e3;
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled,
+.x-tab-default-left-disabled,
+.x-tab-default-right-disabled {
+  border-color: #157fcc #157fcc #157fcc;
+}
+
+/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled {
+  border-color: #157fcc #157fcc #157fcc #157fcc;
+}
+
+/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-nbr .x-tab-default {
+  background-image: none;
+}
+
+/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-tl,
+.x-tab-default-top-over .x-frame-bl,
+.x-tab-default-top-over .x-frame-tr,
+.x-tab-default-top-over .x-frame-br,
+.x-tab-default-top-over .x-frame-tc,
+.x-tab-default-top-over .x-frame-bc,
+.x-tab-default-left-over .x-frame-tl,
+.x-tab-default-left-over .x-frame-bl,
+.x-tab-default-left-over .x-frame-tr,
+.x-tab-default-left-over .x-frame-br,
+.x-tab-default-left-over .x-frame-tc,
+.x-tab-default-left-over .x-frame-bc,
+.x-tab-default-right-over .x-frame-tl,
+.x-tab-default-right-over .x-frame-bl,
+.x-tab-default-right-over .x-frame-tr,
+.x-tab-default-right-over .x-frame-br,
+.x-tab-default-right-over .x-frame-tc,
+.x-tab-default-right-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-over-corners.gif);
+}
+/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-ml,
+.x-tab-default-top-over .x-frame-mr,
+.x-tab-default-left-over .x-frame-ml,
+.x-tab-default-left-over .x-frame-mr,
+.x-tab-default-right-over .x-frame-ml,
+.x-tab-default-right-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-over-sides.gif);
+}
+/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-over .x-frame-mc,
+.x-tab-default-left-over .x-frame-mc,
+.x-tab-default-right-over .x-frame-mc {
+  background-color: #5fa7db;
+}
+
+/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-tl,
+.x-tab-default-bottom-over .x-frame-bl,
+.x-tab-default-bottom-over .x-frame-tr,
+.x-tab-default-bottom-over .x-frame-br,
+.x-tab-default-bottom-over .x-frame-tc,
+.x-tab-default-bottom-over .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-over-corners.gif);
+}
+/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-ml,
+.x-tab-default-bottom-over .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-over-sides.gif);
+}
+/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-over .x-frame-mc {
+  background-color: #5fa7db;
+}
+
+/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-tl,
+.x-tab-default-top-active .x-frame-bl,
+.x-tab-default-top-active .x-frame-tr,
+.x-tab-default-top-active .x-frame-br,
+.x-tab-default-top-active .x-frame-tc,
+.x-tab-default-top-active .x-frame-bc,
+.x-tab-default-left-active .x-frame-tl,
+.x-tab-default-left-active .x-frame-bl,
+.x-tab-default-left-active .x-frame-tr,
+.x-tab-default-left-active .x-frame-br,
+.x-tab-default-left-active .x-frame-tc,
+.x-tab-default-left-active .x-frame-bc,
+.x-tab-default-right-active .x-frame-tl,
+.x-tab-default-right-active .x-frame-bl,
+.x-tab-default-right-active .x-frame-tr,
+.x-tab-default-right-active .x-frame-br,
+.x-tab-default-right-active .x-frame-tc,
+.x-tab-default-right-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-active-corners.gif);
+}
+/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-ml,
+.x-tab-default-top-active .x-frame-mr,
+.x-tab-default-left-active .x-frame-ml,
+.x-tab-default-left-active .x-frame-mr,
+.x-tab-default-right-active .x-frame-ml,
+.x-tab-default-right-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-active-sides.gif);
+}
+/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-active .x-frame-mc,
+.x-tab-default-left-active .x-frame-mc,
+.x-tab-default-right-active .x-frame-mc {
+  background-color: #add2ed;
+}
+
+/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-tl,
+.x-tab-default-bottom-active .x-frame-bl,
+.x-tab-default-bottom-active .x-frame-tr,
+.x-tab-default-bottom-active .x-frame-br,
+.x-tab-default-bottom-active .x-frame-tc,
+.x-tab-default-bottom-active .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-active-corners.gif);
+}
+/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-ml,
+.x-tab-default-bottom-active .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-active-sides.gif);
+}
+/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-active .x-frame-mc {
+  background-color: #add2ed;
+}
+
+/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-tl,
+.x-tab-default-top-disabled .x-frame-bl,
+.x-tab-default-top-disabled .x-frame-tr,
+.x-tab-default-top-disabled .x-frame-br,
+.x-tab-default-top-disabled .x-frame-tc,
+.x-tab-default-top-disabled .x-frame-bc,
+.x-tab-default-left-disabled .x-frame-tl,
+.x-tab-default-left-disabled .x-frame-bl,
+.x-tab-default-left-disabled .x-frame-tr,
+.x-tab-default-left-disabled .x-frame-br,
+.x-tab-default-left-disabled .x-frame-tc,
+.x-tab-default-left-disabled .x-frame-bc,
+.x-tab-default-right-disabled .x-frame-tl,
+.x-tab-default-right-disabled .x-frame-bl,
+.x-tab-default-right-disabled .x-frame-tr,
+.x-tab-default-right-disabled .x-frame-br,
+.x-tab-default-right-disabled .x-frame-tc,
+.x-tab-default-right-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-top-disabled-corners.gif);
+}
+/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-ml,
+.x-tab-default-top-disabled .x-frame-mr,
+.x-tab-default-left-disabled .x-frame-ml,
+.x-tab-default-left-disabled .x-frame-mr,
+.x-tab-default-right-disabled .x-frame-ml,
+.x-tab-default-right-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-top-disabled-sides.gif);
+}
+/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-top-disabled .x-frame-mc,
+.x-tab-default-left-disabled .x-frame-mc,
+.x-tab-default-right-disabled .x-frame-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-tl,
+.x-tab-default-bottom-disabled .x-frame-bl,
+.x-tab-default-bottom-disabled .x-frame-tr,
+.x-tab-default-bottom-disabled .x-frame-br,
+.x-tab-default-bottom-disabled .x-frame-tc,
+.x-tab-default-bottom-disabled .x-frame-bc {
+  background-image: url(images/tab/tab-default-bottom-disabled-corners.gif);
+}
+/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-ml,
+.x-tab-default-bottom-disabled .x-frame-mr {
+  background-image: url(images/tab/tab-default-bottom-disabled-sides.gif);
+}
+/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-bottom-disabled .x-frame-mc {
+  background-color: #4b9cd7;
+}
+
+/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  width: 12px;
+  height: 12px;
+  background-image: url(images/tab/tab-default-close.png);
+}
+/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn-over {
+  background-position: -12px 0;
+}
+
+/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default .x-tab-close-btn {
+  top: 2px;
+  right: 2px;
+}
+
+/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default .x-tab-close-btn {
+  right: auto;
+  left: 2px;
+}
+
+/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-disabled .x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3;
+  background-position: 0 0;
+}
+
+/* line 934, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-pressed .x-tab-close-btn {
+  background-position: -24px 0;
+}
+
+/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-tab-default-closable .x-tab-wrap {
+  padding-right: 15px;
+}
+
+/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */
+.x-rtl.x-tab-default-closable .x-tab-wrap {
+  padding-right: 0px;
+  padding-left: 15px;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-over:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-active:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-top-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-default-bottom-disabled:after {
+  display: none;
+  content: "x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-top {
+  padding: 0;
+}
+
+/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom {
+  padding: 0 0 0 0;
+}
+
+/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-left {
+  padding: 0 0 0 0;
+}
+
+/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-left {
+  padding: 0 0 0 0;
+}
+
+/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right {
+  padding: 0 0 0 0;
+}
+
+/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right {
+  padding: 0 0 0 0;
+}
+
+/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-horizontal {
+  height: 36px;
+}
+/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-horizontal {
+  height: 36px;
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-vertical {
+  width: 36px;
+}
+/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-default-vertical {
+  width: 36px;
+}
+
+/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-top {
+  padding-bottom: 5px;
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-bottom {
+  padding-top: 5px;
+}
+
+/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-left {
+  padding-right: 5px;
+}
+
+/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-left {
+  padding-right: 0;
+  padding-left: 5px;
+}
+
+/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-body-default-right {
+  padding-left: 5px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-body-default-right {
+  padding-left: 0;
+  padding-right: 5px;
+}
+
+/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default {
+  border-style: solid;
+  border-color: #157fcc;
+  background-color: #add2ed;
+}
+
+/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-horizontal {
+  height: 5px;
+}
+
+/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-content-box .x-tab-bar-strip-default-vertical {
+  width: 5px;
+}
+
+/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-top {
+  border-width: 0 0 0 0;
+  height: 5px;
+}
+/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-top {
+  border-width: 0 0 0 0;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-bottom {
+  border-width: 0 0 0 0;
+  height: 5px;
+}
+/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-bottom {
+  border-width: 0 0 0 0;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+  width: 5px;
+}
+/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+}
+/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left {
+  border-width: 0 0 0 0;
+}
+
+/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+  width: 5px;
+}
+/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+}
+
+/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+}
+/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right {
+  border-width: 0 0 0 0;
+}
+
+/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default {
+  background-color: #157fcc;
+}
+
+/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller {
+  cursor: pointer;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #157fcc;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-box-scroller {
+  background-color: transparent;
+}
+/* line 341, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-ie8m .x-tab-bar-default .x-box-scroller-plain .x-box-scroller {
+  background-color: #fff;
+}
+/* line 348, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-pressed {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+  opacity: 0.7;
+}
+/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left,
+.x-tab-bar-default .x-tabbar-scroll-right {
+  height: 31px;
+  width: 24px;
+}
+/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top,
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  width: 31px;
+  height: 24px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-bottom .x-box-scroller {
+  margin-top: 0;
+}
+/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+}
+/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default-right .x-box-scroller {
+  margin-left: 0;
+  margin-right: 0;
+}
+
+/* line 395, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-left.png);
+}
+/* line 399, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-right.png);
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-scroll-top.png);
+}
+/* line 407, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-scroll-bottom.png);
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-scroll-right.png);
+}
+/* line 417, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-scroll-left.png);
+}
+
+/* line 425, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-plain-scroll-left.png);
+}
+/* line 429, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-plain-scroll-right.png);
+}
+/* line 433, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-top {
+  background-image: url(images/tab-bar/default-plain-scroll-top.png);
+}
+/* line 437, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-bottom {
+  background-image: url(images/tab-bar/default-plain-scroll-bottom.png);
+}
+
+/* line 444, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left {
+  background-image: url(images/tab-bar/default-plain-scroll-right.png);
+}
+/* line 448, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-rtl.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right {
+  background-image: url(images/tab-bar/default-plain-scroll-left.png);
+}
+
+/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=25);
+  opacity: 0.25;
+  cursor: default;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:top";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-left:after {
+  display: none;
+  content: "x-slicer:stretch:right";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-tab-bar-default-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */
+.x-tab-bar-plain {
+  border-width: 0;
+  padding: 0;
+  height: 36px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox {
+  border-color: #f5f5f5;
+}
+
+/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 15px;
+  width: 15px;
+  background-image: url(images/form/checkbox.png);
+  line-height: 15px;
+}
+
+/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 7px 4px 7px 4px;
+}
+
+/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding: 5px 4px 4px 4px;
+}
+
+/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */
+.x-grid-hd-checker-on .x-column-header-text,
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-position: 0 -15px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-expander {
+  cursor: pointer;
+}
+
+/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander {
+  background-image: url(images/tree/arrows.png);
+}
+/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-expander {
+  background-position: -32px center;
+}
+/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander {
+  background-position: -16px center;
+}
+/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander {
+  background-position: -48px center;
+}
+/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-rtl.x-tree-expander {
+  background: url(images/tree/arrows-rtl.png) no-repeat -48px center;
+}
+/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: -16px center;
+}
+/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-position: -32px center;
+}
+/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander {
+  background-position: 0 center;
+}
+
+/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url(images/tree/elbow.png);
+}
+/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end.png);
+}
+/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus.png);
+}
+/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus.png);
+}
+/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus.png);
+}
+/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus.png);
+}
+/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line.png);
+}
+/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow {
+  background-image: url(images/tree/elbow-rtl.png);
+}
+/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end {
+  background-image: url(images/tree/elbow-end-rtl.png);
+}
+/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-plus-rtl.png);
+}
+/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-plus-rtl.png);
+}
+/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus {
+  background-image: url(images/tree/elbow-minus-rtl.png);
+}
+/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus {
+  background-image: url(images/tree/elbow-end-minus-rtl.png);
+}
+/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-lines .x-rtl.x-tree-elbow-line {
+  background-image: url(images/tree/elbow-line-rtl.png);
+}
+
+/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl.png);
+}
+/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl.png);
+}
+/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-plus-nl-rtl.png);
+}
+/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander {
+  background-image: url(images/tree/elbow-minus-nl-rtl.png);
+}
+
+/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon {
+  width: 16px;
+  height: 24px;
+}
+
+/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-elbow-img {
+  width: 18px;
+  height: 24px;
+  margin-right: 2px;
+}
+
+/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-elbow-img {
+  margin-right: 0;
+  margin-left: 2px;
+}
+
+/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon,
+.x-tree-elbow-img,
+.x-tree-checkbox {
+  margin-top: -5px;
+  margin-bottom: -4px;
+}
+
+/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf.png);
+}
+
+/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-leaf {
+  background-image: url(images/tree/leaf-rtl.png);
+}
+
+/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-icon-parent {
+  background-image: url(images/tree/folder.png);
+}
+
+/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-rtl.png);
+}
+
+/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url(images/tree/folder-open.png);
+}
+
+/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent {
+  background-image: url(images/tree/folder-open-rtl.png);
+}
+
+/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox {
+  margin-right: 4px;
+  top: 5px;
+  width: 15px;
+  height: 15px;
+  background-image: url(images/form/checkbox.png);
+}
+
+/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-checkbox {
+  margin-right: 0;
+  margin-left: 4px;
+}
+
+/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -15px;
+}
+
+/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url(images/tree/loading.png);
+}
+
+/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-tree-loading .x-rtl.x-tree-icon {
+  background-image: url(images/tree/loading.png);
+}
+
+/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  font-size: 1px;
+  line-height: 0;
+}
+
+/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-tree-node-text {
+  font-size: 13px;
+  line-height: 15px;
+  padding-left: 4px;
+}
+
+/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-rtl.x-tree-node-text {
+  padding-left: 0;
+  padding-right: 4px;
+}
+
+/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */
+.x-grid-cell-inner-treecolumn {
+  padding: 5px 10px 4px 6px;
+}
+
+/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url(images/tree/drop-append.png);
+}
+
+/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url(images/tree/drop-above.png);
+}
+
+/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url(images/tree/drop-below.png);
+}
+
+/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url(images/tree/drop-between.png);
+}
+
+/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green;
+}
+
+/* including package ext-theme-neptune */
+/* line 1, ../../sass/src/Component.scss */
+body {
+  background-color: #f5f5f5;
+}
+
+/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small {
+  border-color: transparent;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -o-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mc {
+  background-image: url(images/btn/btn-plain-toolbar-small-fbg.gif);
+  background-position: 0 top;
+  background-color: transparent;
+}
+
+/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nlg .x-btn-plain-toolbar-small {
+  background-image: url(images/btn/btn-plain-toolbar-small-bg.gif);
+  background-position: 0 top;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-btn-plain-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-image: none;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-btn-plain-toolbar-small-frameInfo {
+  font-family: th-3-3-3-3-1-1-1-1-3-3-3-3;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl {
+  background-position: 0 -6px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tr {
+  background-position: right -9px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bl {
+  background-position: 0 -12px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-br {
+  background-position: right -15px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bc {
+  background-position: 0 -3px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tr,
+.x-btn-plain-toolbar-small-br,
+.x-btn-plain-toolbar-small-mr {
+  padding-right: 3px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl,
+.x-btn-plain-toolbar-small-bl,
+.x-btn-plain-toolbar-small-ml {
+  padding-left: 3px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tc {
+  height: 3px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-bc {
+  height: 3px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-tl,
+.x-btn-plain-toolbar-small-bl,
+.x-btn-plain-toolbar-small-tr,
+.x-btn-plain-toolbar-small-br,
+.x-btn-plain-toolbar-small-tc,
+.x-btn-plain-toolbar-small-bc,
+.x-btn-plain-toolbar-small-ml,
+.x-btn-plain-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-ml,
+.x-btn-plain-toolbar-small-mr {
+  zoom: 1;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-btn-plain-toolbar-small-mc {
+  padding: 1px 1px 1px 1px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-btn-plain-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-plain-toolbar-small-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-small-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  color: #666666;
+  padding: 0 5px;
+}
+/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow {
+  background-image: url(images/button/plain-toolbar-small-arrow.png);
+}
+/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow-right {
+  padding-right: 21px;
+}
+/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-rtl.x-btn-arrow-right {
+  padding-right: 0;
+  padding-left: 21px;
+}
+/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-arrow-bottom {
+  padding-bottom: 18px;
+}
+/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-glyph {
+  font-size: 16px;
+  line-height: 16px;
+  color: #666666;
+  opacity: 0.5;
+}
+/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie8m .x-btn-plain-toolbar-small .x-btn-glyph {
+  color: #b2b2b2;
+}
+
+/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent;
+}
+
+/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-button,
+.x-btn-plain-toolbar-small-noicon .x-btn-button {
+  height: 16px;
+}
+/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-inner,
+.x-btn-plain-toolbar-small-noicon .x-btn-inner {
+  line-height: 16px;
+}
+
+/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner {
+  padding-right: 0;
+}
+/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 0;
+}
+
+/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-inner {
+  width: 16px;
+  padding: 0;
+}
+/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon .x-btn-icon-el {
+  width: 16px;
+  height: 16px;
+}
+
+/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-button {
+  height: 16px;
+}
+/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-inner {
+  line-height: 16px;
+  padding-left: 21px;
+}
+/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-rtl.x-btn-inner {
+  padding-left: 5px;
+  padding-right: 21px;
+}
+/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner {
+  padding-right: 21px;
+}
+/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el {
+  width: 16px;
+  right: auto;
+}
+/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el {
+  height: 16px;
+}
+/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el {
+  left: auto;
+  right: 0;
+}
+
+/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-button {
+  height: 16px;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-inner {
+  line-height: 16px;
+  padding-right: 21px;
+}
+/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-rtl.x-btn-inner {
+  padding-right: 5px;
+  padding-left: 21px;
+}
+/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el {
+  width: 16px;
+  left: auto;
+}
+/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el {
+  height: 16px;
+}
+/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el {
+  left: 0;
+  right: auto;
+}
+
+/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 21px;
+}
+/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el {
+  height: 16px;
+  bottom: auto;
+}
+/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 21px;
+}
+/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  height: 16px;
+  top: auto;
+}
+/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-ie6 .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el {
+  width: 100%;
+}
+
+/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #ebebeb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(50%, #ebebeb), color-stop(51%, #dfdfdf), color-stop(100%, #ebebeb));
+  background-image: -webkit-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -moz-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: -o-linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+  background-image: linear-gradient(top, #ededed, #ebebeb 50%, #dfdfdf 51%, #ebebeb);
+}
+
+/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active,
+.x-btn-plain-toolbar-small-pressed {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #e1e1e1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1e1e1), color-stop(50%, #d5d5d5), color-stop(51%, #e1e1e1), color-stop(100%, #e4e4e4));
+  background-image: -webkit-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -moz-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: -o-linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+  background-image: linear-gradient(top, #e1e1e1, #d5d5d5 50%, #e1e1e1 51%, #e4e4e4);
+}
+
+/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-tl,
+.x-btn-plain-toolbar-small-over .x-frame-bl,
+.x-btn-plain-toolbar-small-over .x-frame-tr,
+.x-btn-plain-toolbar-small-over .x-frame-br,
+.x-btn-plain-toolbar-small-over .x-frame-tc,
+.x-btn-plain-toolbar-small-over .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-corners.gif);
+}
+/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-ml,
+.x-btn-plain-toolbar-small-over .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-sides.gif);
+}
+/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-over .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-small-over-fbg.gif);
+}
+
+/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-tl,
+.x-btn-plain-toolbar-small-focus .x-frame-bl,
+.x-btn-plain-toolbar-small-focus .x-frame-tr,
+.x-btn-plain-toolbar-small-focus .x-frame-br,
+.x-btn-plain-toolbar-small-focus .x-frame-tc,
+.x-btn-plain-toolbar-small-focus .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-corners.gif);
+}
+/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-ml,
+.x-btn-plain-toolbar-small-focus .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-sides.gif);
+}
+/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-focus .x-frame-mc {
+  background-color: #ebebeb;
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-fbg.gif);
+}
+
+/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-tl,
+.x-btn-plain-toolbar-small-menu-active .x-frame-bl,
+.x-btn-plain-toolbar-small-menu-active .x-frame-tr,
+.x-btn-plain-toolbar-small-menu-active .x-frame-br,
+.x-btn-plain-toolbar-small-menu-active .x-frame-tc,
+.x-btn-plain-toolbar-small-menu-active .x-frame-bc,
+.x-btn-plain-toolbar-small-pressed .x-frame-tl,
+.x-btn-plain-toolbar-small-pressed .x-frame-bl,
+.x-btn-plain-toolbar-small-pressed .x-frame-tr,
+.x-btn-plain-toolbar-small-pressed .x-frame-br,
+.x-btn-plain-toolbar-small-pressed .x-frame-tc,
+.x-btn-plain-toolbar-small-pressed .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-corners.gif);
+}
+/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-ml,
+.x-btn-plain-toolbar-small-menu-active .x-frame-mr,
+.x-btn-plain-toolbar-small-pressed .x-frame-ml,
+.x-btn-plain-toolbar-small-pressed .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-sides.gif);
+}
+/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-menu-active .x-frame-mc,
+.x-btn-plain-toolbar-small-pressed .x-frame-mc {
+  background-color: #e1e1e1;
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif);
+}
+
+/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-tl,
+.x-btn-plain-toolbar-small-disabled .x-frame-bl,
+.x-btn-plain-toolbar-small-disabled .x-frame-tr,
+.x-btn-plain-toolbar-small-disabled .x-frame-br,
+.x-btn-plain-toolbar-small-disabled .x-frame-tc,
+.x-btn-plain-toolbar-small-disabled .x-frame-bc {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-corners.gif);
+}
+/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-ml,
+.x-btn-plain-toolbar-small-disabled .x-frame-mr {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-sides.gif);
+}
+/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent;
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif);
+}
+
+/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-over {
+  background-image: url(images/btn/btn-plain-toolbar-small-over-bg.gif);
+}
+
+/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-focus {
+  background-image: url(images/btn/btn-plain-toolbar-small-focus-bg.gif);
+}
+
+/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-menu-active,
+.x-nlg .x-btn-plain-toolbar-small-pressed {
+  background-image: url(images/btn/btn-plain-toolbar-small-pressed-bg.gif);
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nlg .x-btn-plain-toolbar-small-disabled {
+  background-image: url(images/btn/btn-plain-toolbar-small-disabled-bg.gif);
+}
+
+/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-nbr .x-btn-plain-toolbar-small {
+  background-image: none;
+}
+
+/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-split-right {
+  background-image: url(images/button/plain-toolbar-small-s-arrow.png);
+  padding-right: 23px;
+}
+/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-rtl.x-btn-split-right {
+  background-image: url(images/button/plain-toolbar-small-s-arrow-rtl.png);
+  padding-right: 0;
+  padding-left: 23px;
+}
+/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small .x-btn-split-bottom {
+  background-image: url(images/button/plain-toolbar-small-s-arrow-b.png);
+  padding-bottom: 20px;
+}
+
+/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-over:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-over-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-focus:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-pressed:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-btn-plain-toolbar-small-disabled:after {
+  display: none;
+  content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 210, ../../sass/src/button/Button.scss */
+.x-btn-plain-toolbar-small-disabled .x-btn-icon-el,
+.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,
+.x-btn-plain-toolbar-large-disabled .x-btn-icon-el {
+  background-color: white;
+}
+/* line 212, ../../sass/src/button/Button.scss */
+.x-strict .x-ie8 .x-btn-plain-toolbar-small-disabled .x-btn-icon-el, .x-strict .x-ie8
+.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el, .x-strict .x-ie8
+.x-btn-plain-toolbar-large-disabled .x-btn-icon-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+}
+
+/* line 3, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left {
+  margin-right: 4px;
+}
+/* line 7, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-right {
+  margin-left: 4px;
+}
+/* line 12, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left, .x-toolbar-default .x-toolbar-scroll-right {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6;
+}
+/* line 17, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left-hover, .x-toolbar-default .x-toolbar-scroll-right-hover {
+  background-position: 0 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8;
+}
+/* line 23, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-toolbar-scroll-left-pressed, .x-toolbar-default .x-toolbar-scroll-right-pressed {
+  background-position: 0 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1;
+}
+/* line 29, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=25);
+  opacity: 0.25;
+}
+/* line 33, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-default .x-box-scroller {
+  background-color: white;
+}
+
+/* line 41, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-scroller {
+  padding: 6px 4px 6px 4px;
+}
+
+/* line 45, ../../sass/src/toolbar/Toolbar.scss */
+.x-toolbar-vertical-scroller {
+  padding: 3px 8px 3px 8px;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light {
+  border-color: #157fcc;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light {
+  font-size: 13px;
+  border: 1px solid #157fcc;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal {
+  padding: 9px 9px 10px 9px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical {
+  padding: 9px 9px 9px 10px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-vertical {
+  padding: 9px 10px 9px 9px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-vertical-noborder {
+  padding: 10px 10px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-light {
+  color: #666666;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-light {
+  background: white;
+  border-color: #157fcc;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-vertical {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-top {
+  border-bottom-width: 1px !important;
+}
+/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-right {
+  border-left-width: 1px !important;
+}
+/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-bottom {
+  border-top-width: 1px !important;
+}
+/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-collapsed-border-left {
+  border-right-width: 1px !important;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-top:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-bottom:after {
+  display: none;
+  content: "x-slicer:stretch:bottom";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-left:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-right:after {
+  display: none;
+  content: "x-slicer:stretch:left";
+}
+
+/*</if slicer>*/
+/* */
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-vertical .x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-light .x-panel-header-glyph {
+  color: #eff4f8;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 6px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-rtl.x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-collapsed-border-right {
+  border-right-width: 1px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-collapsed-border-left {
+  border-left-width: 1px !important;
+}
+
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed {
+  border-color: #dfeaf2;
+  padding: 0;
+}
+
+/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed {
+  font-size: 13px;
+  border: 5px solid #dfeaf2;
+}
+/* line 219, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+  background-color: #dfeaf2;
+}
+
+/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal {
+  padding: 5px;
+}
+
+/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal-noborder {
+  padding: 10px 10px 5px 10px;
+}
+
+/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical-noborder {
+  padding: 10px 10px 10px 5px;
+}
+
+/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-framed-vertical {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-framed-vertical-noborder {
+  padding: 10px 5px 10px 10px;
+}
+
+/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-text-container-light-framed {
+  color: #666666;
+  font-size: 13px;
+  font-weight: bold;
+  font-family: helvetica, arial, verdana, sans-serif;
+  line-height: 15px;
+  padding: 1px 0 0;
+  text-transform: none;
+}
+
+/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-body-light-framed {
+  background: white;
+  border-color: #dfeaf2;
+  color: black;
+  font-size: 13px;
+  font-size: normal;
+  border-width: 1px;
+  border-style: solid;
+}
+
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  padding: 0px 0px 0px 0px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: white;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mc {
+  background-color: white;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-light-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-light-framed-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-0-0-0-0;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tr,
+.x-panel-light-framed-br,
+.x-panel-light-framed-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl,
+.x-panel-light-framed-bl,
+.x-panel-light-framed-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-tl,
+.x-panel-light-framed-bl,
+.x-panel-light-framed-tr,
+.x-panel-light-framed-br,
+.x-panel-light-framed-tc,
+.x-panel-light-framed-bc,
+.x-panel-light-framed-ml,
+.x-panel-light-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-light-framed-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-ml,
+.x-panel-light-framed-mr {
+  zoom: 1;
+  background-image: url(images/panel/panel-light-framed-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-light-framed-mc {
+  padding: 0px 0px 0px 0px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-light-framed-tl,
+.x-strict .x-ie7 .x-panel-light-framed-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-light-framed:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel/panel-light-framed-corners.gif), sides:url(images/panel/panel-light-framed-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 0 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-top-frameInfo {
+  font-family: dh-4-4-0-0-5-5-0-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tr,
+.x-panel-header-light-framed-top-br,
+.x-panel-header-light-framed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl,
+.x-panel-header-light-framed-top-bl,
+.x-panel-header-light-framed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-bc {
+  height: 0;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-tl,
+.x-panel-header-light-framed-top-bl,
+.x-panel-header-light-framed-top-tr,
+.x-panel-header-light-framed-top-br,
+.x-panel-header-light-framed-top-tc,
+.x-panel-header-light-framed-top-bc,
+.x-panel-header-light-framed-top-ml,
+.x-panel-header-light-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-ml,
+.x-panel-header-light-framed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 5px 5px 0;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-right {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-right-frameInfo {
+  font-family: dh-0-4-4-0-5-5-5-0-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tr,
+.x-panel-header-light-framed-right-br,
+.x-panel-header-light-framed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl,
+.x-panel-header-light-framed-right-bl,
+.x-panel-header-light-framed-right-ml {
+  padding-left: 0;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-tl,
+.x-panel-header-light-framed-right-bl,
+.x-panel-header-light-framed-right-tr,
+.x-panel-header-light-framed-right-br,
+.x-panel-header-light-framed-right-tc,
+.x-panel-header-light-framed-right-bc,
+.x-panel-header-light-framed-right-ml,
+.x-panel-header-light-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-right-tl, .x-rtl.x-panel-header-light-framed-right-ml, .x-rtl.x-panel-header-light-framed-right-bl, .x-rtl.x-panel-header-light-framed-right-tr, .x-rtl.x-panel-header-light-framed-right-mr, .x-rtl.x-panel-header-light-framed-right-br {
+  background-image: url(images/panel-header/panel-header-light-framed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-ml,
+.x-panel-header-light-framed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0 5px 5px 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-bottom-frameInfo {
+  font-family: dh-0-0-4-4-0-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tr,
+.x-panel-header-light-framed-bottom-br,
+.x-panel-header-light-framed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl,
+.x-panel-header-light-framed-bottom-bl,
+.x-panel-header-light-framed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tc {
+  height: 0;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-tl,
+.x-panel-header-light-framed-bottom-bl,
+.x-panel-header-light-framed-bottom-tr,
+.x-panel-header-light-framed-bottom-br,
+.x-panel-header-light-framed-bottom-tc,
+.x-panel-header-light-framed-bottom-bc,
+.x-panel-header-light-framed-bottom-ml,
+.x-panel-header-light-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-ml,
+.x-panel-header-light-framed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px 0 5px 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-left {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-left-frameInfo {
+  font-family: dh-4-0-0-4-5-0-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tr,
+.x-panel-header-light-framed-left-br,
+.x-panel-header-light-framed-left-mr {
+  padding-right: 0;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl,
+.x-panel-header-light-framed-left-bl,
+.x-panel-header-light-framed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-tl,
+.x-panel-header-light-framed-left-bl,
+.x-panel-header-light-framed-left-tr,
+.x-panel-header-light-framed-left-br,
+.x-panel-header-light-framed-left-tc,
+.x-panel-header-light-framed-left-bc,
+.x-panel-header-light-framed-left-ml,
+.x-panel-header-light-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-left-tl, .x-rtl.x-panel-header-light-framed-left-ml, .x-rtl.x-panel-header-light-framed-left-bl, .x-rtl.x-panel-header-light-framed-left-tr, .x-rtl.x-panel-header-light-framed-left-mr, .x-rtl.x-panel-header-light-framed-left-br {
+  background-image: url(images/panel-header/panel-header-light-framed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-ml,
+.x-panel-header-light-framed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-top-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-ml {
+  background-position: 0 top;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mr {
+  background-position: right top;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tr,
+.x-panel-header-light-framed-collapsed-top-br,
+.x-panel-header-light-framed-collapsed-top-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl,
+.x-panel-header-light-framed-collapsed-top-bl,
+.x-panel-header-light-framed-collapsed-top-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-tl,
+.x-panel-header-light-framed-collapsed-top-bl,
+.x-panel-header-light-framed-collapsed-top-tr,
+.x-panel-header-light-framed-collapsed-top-br,
+.x-panel-header-light-framed-collapsed-top-tc,
+.x-panel-header-light-framed-collapsed-top-bc,
+.x-panel-header-light-framed-collapsed-top-ml,
+.x-panel-header-light-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-ml,
+.x-panel-header-light-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-top-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-top:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-right {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-right-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-ml {
+  background-position: 0 right;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mr {
+  background-position: right right;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tr,
+.x-panel-header-light-framed-collapsed-right-br,
+.x-panel-header-light-framed-collapsed-right-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl,
+.x-panel-header-light-framed-collapsed-right-bl,
+.x-panel-header-light-framed-collapsed-right-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-tl,
+.x-panel-header-light-framed-collapsed-right-bl,
+.x-panel-header-light-framed-collapsed-right-tr,
+.x-panel-header-light-framed-collapsed-right-br,
+.x-panel-header-light-framed-collapsed-right-tc,
+.x-panel-header-light-framed-collapsed-right-bc,
+.x-panel-header-light-framed-collapsed-right-ml,
+.x-panel-header-light-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-right-tl, .x-rtl.x-panel-header-light-framed-collapsed-right-ml, .x-rtl.x-panel-header-light-framed-collapsed-right-bl, .x-rtl.x-panel-header-light-framed-collapsed-right-tr, .x-rtl.x-panel-header-light-framed-collapsed-right-mr, .x-rtl.x-panel-header-light-framed-collapsed-right-br {
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-right-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-ml,
+.x-panel-header-light-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-right-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-right:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-bottom-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-ml {
+  background-position: 0 bottom;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  background-position: right bottom;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tr,
+.x-panel-header-light-framed-collapsed-bottom-br,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl,
+.x-panel-header-light-framed-collapsed-bottom-bl,
+.x-panel-header-light-framed-collapsed-bottom-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-tl,
+.x-panel-header-light-framed-collapsed-bottom-bl,
+.x-panel-header-light-framed-collapsed-bottom-tr,
+.x-panel-header-light-framed-collapsed-bottom-br,
+.x-panel-header-light-framed-collapsed-bottom-tc,
+.x-panel-header-light-framed-collapsed-bottom-bc,
+.x-panel-header-light-framed-collapsed-bottom-ml,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-ml,
+.x-panel-header-light-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-bottom-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-bottom:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 5px 5px 5px;
+  border-width: 5px;
+  border-style: solid;
+  background-color: #dfeaf2;
+}
+
+/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-left {
+  background-image: none;
+  background-color: #dfeaf2;
+}
+
+/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mc {
+  background-color: #dfeaf2;
+}
+
+/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -o-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+}
+
+/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+body.x-nbr .x-panel-header-light-framed-collapsed-left-frameInfo {
+  font-family: dh-4-4-4-4-5-5-5-5-5-5-5-5;
+}
+
+/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl {
+  background-position: 0 -10px;
+}
+
+/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tr {
+  background-position: right -15px;
+}
+
+/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bl {
+  background-position: 0 -20px;
+}
+
+/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-br {
+  background-position: right -25px;
+}
+
+/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-ml {
+  background-position: 0 left;
+}
+
+/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mr {
+  background-position: right left;
+}
+
+/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tc {
+  background-position: 0 0;
+}
+
+/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bc {
+  background-position: 0 -5px;
+}
+
+/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tr,
+.x-panel-header-light-framed-collapsed-left-br,
+.x-panel-header-light-framed-collapsed-left-mr {
+  padding-right: 5px;
+}
+
+/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl,
+.x-panel-header-light-framed-collapsed-left-bl,
+.x-panel-header-light-framed-collapsed-left-ml {
+  padding-left: 5px;
+}
+
+/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tc {
+  height: 5px;
+}
+
+/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-bc {
+  height: 5px;
+}
+
+/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-tl,
+.x-panel-header-light-framed-collapsed-left-bl,
+.x-panel-header-light-framed-collapsed-left-tr,
+.x-panel-header-light-framed-collapsed-left-br,
+.x-panel-header-light-framed-collapsed-left-tc,
+.x-panel-header-light-framed-collapsed-left-bc,
+.x-panel-header-light-framed-collapsed-left-ml,
+.x-panel-header-light-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif);
+}
+
+/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-left-tl, .x-rtl.x-panel-header-light-framed-collapsed-left-ml, .x-rtl.x-panel-header-light-framed-collapsed-left-bl, .x-rtl.x-panel-header-light-framed-collapsed-left-tr, .x-rtl.x-panel-header-light-framed-collapsed-left-mr, .x-rtl.x-panel-header-light-framed-collapsed-left-br {
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-left-corners-rtl.gif);
+}
+
+/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-ml,
+.x-panel-header-light-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif);
+  background-repeat: repeat-y;
+}
+
+/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-panel-header-light-framed-collapsed-left-mc {
+  padding: 5px 5px 5px 5px;
+}
+
+/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-bl {
+  position: relative;
+  right: 0;
+}
+
+/*<if slicer>*/
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */
+.x-panel-header-light-framed-collapsed-left:after {
+  display: none;
+  content: "x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif)";
+}
+
+/*</if slicer>*/
+/* */
+/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-top {
+  border-bottom-width: 5px !important;
+}
+/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-right {
+  border-left-width: 5px !important;
+}
+/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-bottom {
+  border-top-width: 5px !important;
+}
+/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel .x-panel-header-light-framed-left {
+  border-right-width: 5px !important;
+}
+
+/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-top {
+  border-bottom-width: 0 !important;
+}
+/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-right {
+  border-left-width: 0 !important;
+}
+/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-bottom {
+  border-top-width: 0 !important;
+}
+/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-nbr .x-panel-header-light-framed-collapsed-left {
+  border-right-width: 0 !important;
+}
+
+/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-text-container {
+  -webkit-transform: rotate(90deg);
+  -webkit-transform-origin: 0 0;
+  -moz-transform: rotate(90deg);
+  -moz-transform-origin: 0 0;
+  -o-transform: rotate(90deg);
+  -o-transform-origin: 0 0;
+  transform: rotate(90deg);
+  transform-origin: 0 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-framed-vertical .x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-text-container {
+  -webkit-transform: rotate(270deg);
+  -webkit-transform-origin: 100% 0;
+  -moz-transform: rotate(270deg);
+  -moz-transform-origin: 100% 0;
+  -o-transform: rotate(270deg);
+  -o-transform-origin: 100% 0;
+  transform: rotate(270deg);
+  transform-origin: 100% 0;
+}
+/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */
+.x-ie9m .x-panel-header-light-framed-vertical .x-rtl.x-panel-header-text-container {
+  background-color: #dfeaf2;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2);
+}
+
+/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-panel-header-icon {
+  width: 16px;
+  height: 16px;
+  background-position: center center;
+}
+/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed .x-panel-header-glyph {
+  color: white;
+  font-size: 16px;
+  line-height: 16px;
+  opacity: 0.5;
+}
+/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-ie8m .x-panel-header-light-framed .x-panel-header-glyph {
+  color: #eff4f8;
+}
+
+/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-panel-header-icon-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 0 6px;
+}
+/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-panel-header-icon-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-rtl.x-panel-header-icon-after-title {
+  margin: 0 6px 0 0;
+}
+
+/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-icon-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-icon-after-title {
+  margin: 6px 0 0 0;
+}
+
+/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-tool-after-title {
+  margin: 0 0 0 6px;
+}
+/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-rtl.x-tool-after-title {
+  margin: 0 6px 0 0;
+}
+/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-tool-before-title {
+  margin: 0 6px 0 0;
+}
+/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-horizontal .x-rtl.x-tool-before-title {
+  margin: 0 0 0 6px;
+}
+
+/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-rtl.x-tool-after-title {
+  margin: 6px 0 0 0;
+}
+/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-header-light-framed-vertical .x-rtl.x-tool-before-title {
+  margin: 0 0 6px 0;
+}
+
+/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-border-right {
+  border-right-width: 5px !important;
+}
+/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-rtl.x-panel-header-light-framed-collapsed-border-left {
+  border-left-width: 5px !important;
+}
+
+/* line 684, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable {
+  overflow: visible;
+}
+/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+}
+/* line 696, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-north-br {
+  top: -5px;
+}
+/* line 699, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-south-br {
+  bottom: -5px;
+}
+/* line 702, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-east-br {
+  right: -5px;
+}
+/* line 705, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-west-br {
+  left: -5px;
+}
+/* line 708, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-northwest-br {
+  left: -5px;
+  top: -5px;
+}
+/* line 712, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-northeast-br {
+  right: -5px;
+  top: -5px;
+}
+/* line 716, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-southeast-br {
+  right: -5px;
+  bottom: -5px;
+}
+/* line 720, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */
+.x-panel-light-framed-resizable .x-panel-handle-southwest-br {
+  left: -5px;
+  bottom: -5px;
+}
+
+/* line 2, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-l {
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 6, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-b {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 10, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-bl {
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 16, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-r {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 20, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 26, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rb {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 32, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-rbl {
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 40, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-t {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+}
+
+/* line 44, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 50, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 56, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tbl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 64, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-tr {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+}
+
+/* line 70, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trl {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-left-color: #157fcc !important;
+  border-left-width: 1px !important;
+}
+
+/* line 78, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trb {
+  border-top-color: #157fcc !important;
+  border-top-width: 1px !important;
+  border-right-color: #157fcc !important;
+  border-right-width: 1px !important;
+  border-bottom-color: #157fcc !important;
+  border-bottom-width: 1px !important;
+}
+
+/* line 86, ../../../ext-theme-base/sass/etc/mixins/border-management.scss */
+.x-panel-light-framed-outer-border-trbl {
+  border-color: #157fcc !important;
+  border-width: 1px !important;
+}
+
+/* line 1, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger {
+  height: 22px;
+}
+
+/* line 9, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+}
+/* line 12, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap .x-form-text {
+  border-width: 0;
+  height: 22px;
+}
+/* line 16, ../../sass/src/form/field/Trigger.scss */
+.x-content-box .x-form-trigger-wrap .x-form-text {
+  height: 15px;
+}
+/* line 22, ../../sass/src/form/field/Trigger.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-wrap {
+  border-color: #3892d3;
+}
+/* line 26, ../../sass/src/form/field/Trigger.scss */
+.x-form-invalid .x-form-trigger-wrap {
+  border-color: #cf4c35;
+}
+
+/* line 3, ../../sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-trigger-wrap {
+  border: 0;
+}
+
+/* line 7, ../../sass/src/form/field/File.scss */
+.x-form-file-wrap .x-form-trigger-wrap .x-form-text {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+  height: 24px;
+}
+/* line 13, ../../sass/src/form/field/File.scss */
+.x-content-box .x-form-file-wrap .x-form-trigger-wrap .x-form-text {
+  height: 15px;
+}
+
+/* line 1, ../../sass/src/form/field/HtmlEditor.scss */
+.x-html-editor-container {
+  border: 1px solid;
+  border-color: silver #d9d9d9 #d9d9d9;
+}
+
+/* line 1, ../../sass/src/grid/header/Container.scss */
+.x-grid-header-ct {
+  border: 1px solid silver;
+}
+
+/* line 6, ../../sass/src/grid/column/Column.scss */
+.x-column-header-trigger {
+  background-image: url(images/grid/hd-pop.png);
+  border-left: 1px solid silver;
+}
+
+/* line 12, ../../sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-trigger {
+  border-right: 1px solid silver;
+  border-left: 0;
+}
+
+/* line 18, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last {
+  border-right: 0;
+}
+/* line 20, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last .x-column-header-over .x-column-header-trigger {
+  border-right: 1px solid silver;
+}
+
+/* line 25, ../../sass/src/grid/column/Column.scss */
+.x-column-header-last {
+  border-right: 0 none;
+}
+
+/* line 29, ../../sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-last {
+  border-left: 0;
+}
+/* line 31, ../../sass/src/grid/column/Column.scss */
+.x-rtl.x-column-header-last .x-column-header-over .x-column-header-trigger {
+  border-left: 1px solid silver;
+}
+
+/* line 2, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-hd .x-tool-img {
+  background-image: url(images/tools/tool-sprites-dark.png);
+}
+
+/* line 6, ../../sass/src/layout/container/Accordion.scss */
+.x-accordion-item .x-accordion-hd-over {
+  background-color: #e6f1f9;
+}
+
+/* line 1, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-handle {
+  background-color: #157fcc;
+  background-repeat: no-repeat;
+}
+
+/* line 10, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: center;
+}
+/* line 15, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: center;
+}
+/* line 19, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: -2px -2px;
+}
+/* line 23, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: 2px 2px;
+}
+/* line 27, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: -2px 2px;
+}
+/* line 31, ../../sass/src/resizer/Resizer.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: 2px -2px;
+}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all-rtl.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl>.x-box-item{right:0;left:auto}.x-ie6 .x-rtl .x-box-item,.x-quirks .x-ie .x-rtl .x-box-item{right:0;left:auto}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-rtl.x-btn-inner-left{text-align:right}.x-btn-inner-right{text-align:right}.x-rtl.x-btn-inner-right{text-align:left}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-rtl.x-box-target{left:auto;right:0}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-rtl.x-box-menu-after{float:left}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-rtl.x-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 12px helvetica,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-rtl .x-dd-drag-ghost{padding-left:5px;padding-right:20px}.x-rtl .x-dd-drop-icon{left:auto;right:3px}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.png)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.png)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.png)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-rtl.x-fieldset-header .x-form-item,.x-rtl.x-fieldset-header .x-tool{float:right}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-rtl.x-form-item .x-form-item-input-row{position:relative;right:0}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-rtl.x-form-file-input{right:auto;left:-2px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-rtl.x-column-header-trigger{left:0;right:auto}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-rtl.x-column-header-align-right{text-align:left}.x-column-header-align-left{text-align:left}.x-rtl.x-column-header-align-left{text-align:right}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-rtl>.x-column{float:right}.x-ie6 .x-rtl .x-column,.x-quirks .x-ie .x-rtl .x-column{float:right}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp{margin:2px}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-rtl.x-tab-bar .x-tab-bar-strip-left{right:auto;left:0}.x-tab-bar-strip-right{left:0}.x-rtl.x-tab-bar .x-tab-bar-strip-right{left:auto;right:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-rtl.x-tab-icon-el{left:auto;right:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:13px;font-family:helvetica,arial,verdana,sans-serif;background:#f5f5f5}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=70);opacity:.7;background:white}.x-mask-msg{padding:8px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background-image:none;background-color:#e5e5e5}.x-mask-msg-inner{padding:0;background-color:transparent;color:#666;font:normal 13px helvetica,arial,verdana,sans-serif}.x-mask-msg-text{padding:21px 0 0;background-image:url(images/loadmask/loading.gif);background-repeat:no-repeat;background-position:center 0}.x-rtl.x-mask-msg-text{padding:21px 0 0 0}.x-progress-default{background-color:#f5f5f5;border-width:0;height:20px;border-color:#157fcc}.x-content-box .x-progress-default{height:20px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#c1ddf1}.x-progress-default .x-progress-text{color:#666;font-weight:bold;font-size:13px;text-align:center;line-height:20px}.x-progress-default .x-progress-text-back{color:#666;line-height:20px}.x-btn-default-small{border-color:#126daf}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 5px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/default-small-arrow.png)}.x-btn-default-small .x-btn-arrow-right{padding-right:21px}.x-btn-default-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:21px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#9bc8e9}.x-btn-default-small-disabled{border-color:#157fcc}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner{padding-left:5px;padding-right:21px}.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:21px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:21px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-small-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/default-small-s-arrow.png);padding-right:23px}.x-btn-default-small .x-rtl.x-btn-split-right{background-image:url(images/button/default-small-s-arrow-rtl.png);padding-right:0;padding-left:23px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/default-small-s-arrow-b.png);padding-bottom:20px}.x-btn-default-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#126daf}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:14px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 8px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/default-medium-arrow.png)}.x-btn-default-medium .x-btn-arrow-right{padding-right:30px}.x-btn-default-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:30px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:26px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#9bc8e9}.x-btn-default-medium-disabled{border-color:#157fcc}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:8px;padding-left:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:29px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:8px;padding-right:29px}.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:29px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:29px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:8px;padding-left:29px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:29px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:29px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-medium-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/default-medium-s-arrow.png);padding-right:32px}.x-btn-default-medium .x-rtl.x-btn-split-right{background-image:url(images/button/default-medium-s-arrow-rtl.png);padding-right:0;padding-left:32px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/default-medium-s-arrow-b.png);padding-bottom:28px}.x-btn-default-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#126daf}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:16px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 10px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/default-large-arrow.png)}.x-btn-default-large .x-btn-arrow-right{padding-right:36px}.x-btn-default-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:36px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:32px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#9bc8e9}.x-btn-default-large-disabled{border-color:#157fcc}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:10px;padding-left:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:37px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner{padding-left:10px;padding-right:37px}.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:37px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:37px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner{padding-right:10px;padding-left:37px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:37px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:37px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-large-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/default-large-s-arrow.png);padding-right:38px}.x-btn-default-large .x-rtl.x-btn-split-right{background-image:url(images/button/default-large-s-arrow-rtl.png);padding-right:0;padding-left:38px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/default-large-s-arrow-b.png);padding-bottom:34px}.x-btn-default-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:#e1e1e1}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-small-mc{background-image:url(images/btn/btn-default-toolbar-small-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-small{background-image:url(images/btn/btn-default-toolbar-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-small-corners.gif)}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-small-sides.gif)}.x-btn-default-toolbar-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-small-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-bg.gif), corners:url(images/btn/btn-default-toolbar-small-corners.gif), sides:url(images/btn/btn-default-toolbar-small-sides.gif)"}.x-btn-default-toolbar-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 5px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/default-toolbar-small-arrow.png)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:21px}.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:21px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:5px;padding-right:21px}.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:21px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:21px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-small-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-small-disabled{background-image:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/default-toolbar-small-s-arrow.png);padding-right:23px}.x-btn-default-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/default-toolbar-small-s-arrow-rtl.png);padding-right:0;padding-left:23px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/default-toolbar-small-s-arrow-b.png);padding-bottom:20px}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)"}.x-btn-default-toolbar-medium{border-color:#e1e1e1}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-medium-mc{background-image:url(images/btn/btn-default-toolbar-medium-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-medium{background-image:url(images/btn/btn-default-toolbar-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-medium-corners.gif)}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-medium-sides.gif)}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-medium-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-bg.gif), corners:url(images/btn/btn-default-toolbar-medium-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-sides.gif)"}.x-btn-default-toolbar-medium .x-btn-inner{font-size:14px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 8px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/default-toolbar-medium-arrow.png)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:30px}.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:30px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:26px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:8px;padding-left:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:29px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:8px;padding-right:29px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:29px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:29px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:8px;padding-left:29px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:29px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:29px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-medium-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-disabled{background-image:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/default-toolbar-medium-s-arrow.png);padding-right:32px}.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right{background-image:url(images/button/default-toolbar-medium-s-arrow-rtl.png);padding-right:0;padding-left:32px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/default-toolbar-medium-s-arrow-b.png);padding-bottom:28px}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)"}.x-btn-default-toolbar-large{border-color:#e1e1e1}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-large-mc{background-image:url(images/btn/btn-default-toolbar-large-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-large{background-image:url(images/btn/btn-default-toolbar-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-large-corners.gif)}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-large-sides.gif)}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-large-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-bg.gif), corners:url(images/btn/btn-default-toolbar-large-corners.gif), sides:url(images/btn/btn-default-toolbar-large-sides.gif)"}.x-btn-default-toolbar-large .x-btn-inner{font-size:16px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 10px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/default-toolbar-large-arrow.png)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:36px}.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:36px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:32px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:10px;padding-left:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:37px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner{padding-left:10px;padding-right:37px}.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:37px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:37px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner{padding-right:10px;padding-left:37px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:37px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:37px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-large-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-large-disabled{background-image:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/default-toolbar-large-s-arrow.png);padding-right:38px}.x-btn-default-toolbar-large .x-rtl.x-btn-split-right{background-image:url(images/button/default-toolbar-large-s-arrow-rtl.png);padding-right:0;padding-left:38px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/default-toolbar-large-s-arrow-b.png);padding-bottom:34px}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-left .x-rtl.x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-rtl.x-btn-icon-el{background-position:left center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-rtl.x-btn-arrow-right{background-position:left center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-rtl.x-btn-split-right{background-position:0 center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:13px;border-style:solid;padding:6px 0 6px 8px}.x-toolbar-item{margin:0 8px 0 0}.x-rtl.x-toolbar-item{margin:0 0 0 8px}.x-toolbar-text{margin:0 6px 0 4px;color:#333f49;line-height:16px;font-family:helvetica,arial,verdana,sans-serif;font-size:12px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 8px 0 0;height:14px;border-style:solid;border-width:0 0 0 1px;border-left-color:#e1e1e1;border-right-color:white}.x-rtl.x-toolbar{padding:6px 8px 6px 0}.x-toolbar-footer{background:#dfeaf2;border:0;margin:0;padding:6px 0 6px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.png)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:silver;border-width:1px;background-image:none;background-color:white}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{cursor:default}.x-toolbar-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:white}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.png);background-position:0 0;width:16px;height:16px;border-style:solid;border-color:#8db2e3;border-width:0;margin-top:4px}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.png);width:16px;height:16px;border-style:solid;border-color:#8db2e3;border-width:0;margin-top:4px}.x-toolbar-scroll-right-hover{background-position:-16px 0}.x-toolbar .x-box-menu-after{margin:0 8px 0 8px}.x-toolbar-vertical{padding:6px 8px 0 8px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 6px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 6px;border-style:solid none;border-width:1px 0 0;border-top-color:#e1e1e1;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:6px 0 6px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=50);opacity:.5}.x-panel-default{border-color:#157fcc;padding:0}.x-panel-header-default{font-size:13px;border:1px solid #157fcc}.x-panel-header-default .x-tool-img{background-color:#157fcc}.x-panel-header-default-horizontal{padding:9px 9px 10px 9px}.x-panel-header-default-horizontal-noborder{padding:10px 10px 10px 10px}.x-panel-header-default-vertical{padding:9px 9px 9px 10px}.x-panel-header-default-vertical-noborder{padding:10px 10px 10px 10px}.x-rtl.x-panel-header-default-vertical{padding:9px 10px 9px 9px}.x-rtl.x-panel-header-default-vertical-noborder{padding:10px 10px 10px 10px}.x-panel-header-text-container-default{color:white;font-size:13px;font-weight:bold;font-family:arial,helvetica,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-default{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#157fcc}.x-panel-header-default-vertical{background-image:none;background-color:#157fcc}.x-rtl.x-panel-header-default-vertical{background-image:none;background-color:#157fcc}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#8abfe5}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 6px}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 6px 0 0}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-panel-header-default-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 6px 0}.x-rtl.x-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-default-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-panel-default-framed{border-color:#157fcc;padding:0}.x-panel-header-default-framed{font-size:13px;border:5px solid #157fcc}.x-panel-header-default-framed .x-tool-img{background-color:#157fcc}.x-panel-header-default-framed-horizontal{padding:5px}.x-panel-header-default-framed-horizontal-noborder{padding:10px 10px 5px 10px}.x-panel-header-default-framed-vertical{padding:5px 5px 5px 5px}.x-panel-header-default-framed-vertical-noborder{padding:10px 10px 10px 5px}.x-rtl.x-panel-header-default-framed-vertical{padding:5px 5px 5px 5px}.x-rtl.x-panel-header-default-framed-vertical-noborder{padding:10px 5px 10px 10px}.x-panel-header-text-container-default-framed{color:white;font-size:13px;font-weight:bold;font-family:arial,helvetica,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-default-framed{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-panel-default-framed-mc{background-color:white}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-panel-default-framed-tl{background-position:0 -10px}.x-panel-default-framed-tr{background-position:right -15px}.x-panel-default-framed-bl{background-position:0 -20px}.x-panel-default-framed-br{background-position:right -25px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -5px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:5px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:5px}.x-panel-default-framed-tc{height:5px}.x-panel-default-framed-bc{height:5px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:0}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 0 5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-top-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-5-5-0-5-5-5-5-5}.x-panel-header-default-framed-top-tl{background-position:0 -10px}.x-panel-header-default-framed-top-tr{background-position:right -15px}.x-panel-header-default-framed-top-bl{background-position:0 -20px}.x-panel-header-default-framed-top-br{background-position:right -25px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -5px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:5px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:5px}.x-panel-header-default-framed-top-tc{height:5px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 0;border-style:solid;background-color:#157fcc}.x-rtl.x-panel-header-default-framed-right{background-image:none;background-color:#157fcc}.x-panel-header-default-framed-right-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-0-5-5-5-5}.x-panel-header-default-framed-right-tl{background-position:0 -10px}.x-panel-header-default-framed-right-tr{background-position:right -15px}.x-panel-header-default-framed-right-bl{background-position:0 -20px}.x-panel-header-default-framed-right-br{background-position:right -25px}.x-panel-header-default-framed-right-ml{background-position:0 right}.x-panel-header-default-framed-right-mr{background-position:right right}.x-panel-header-default-framed-right-tc{background-position:0 0}.x-panel-header-default-framed-right-bc{background-position:0 -5px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:5px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:5px}.x-panel-header-default-framed-right-bc{height:5px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-right-tl,.x-rtl.x-panel-header-default-framed-right-ml,.x-rtl.x-panel-header-default-framed-right-bl,.x-rtl.x-panel-header-default-framed-right-tr,.x-rtl.x-panel-header-default-framed-right-mr,.x-rtl.x-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:0 5px 5px 5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-bottom-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-5-5-5-5-5-5-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -10px}.x-panel-header-default-framed-bottom-tr{background-position:right -15px}.x-panel-header-default-framed-bottom-bl{background-position:0 -20px}.x-panel-header-default-framed-bottom-br{background-position:right -25px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -5px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:5px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:5px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:5px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 0 5px 5px;border-style:solid;background-color:#157fcc}.x-rtl.x-panel-header-default-framed-left{background-image:none;background-color:#157fcc}.x-panel-header-default-framed-left-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dh-4-0-0-4-5-0-5-5-5-5-5-5}.x-panel-header-default-framed-left-tl{background-position:0 -10px}.x-panel-header-default-framed-left-tr{background-position:right -15px}.x-panel-header-default-framed-left-bl{background-position:0 -20px}.x-panel-header-default-framed-left-br{background-position:right -25px}.x-panel-header-default-framed-left-ml{background-position:0 left}.x-panel-header-default-framed-left-mr{background-position:right left}.x-panel-header-default-framed-left-tc{background-position:0 0}.x-panel-header-default-framed-left-bc{background-position:0 -5px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:5px}.x-panel-header-default-framed-left-tc{height:5px}.x-panel-header-default-framed-left-bc{height:5px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-left-tl,.x-rtl.x-panel-header-default-framed-left-ml,.x-rtl.x-panel-header-default-framed-left-bl,.x-rtl.x-panel-header-default-framed-left-tr,.x-rtl.x-panel-header-default-framed-left-mr,.x-rtl.x-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-top-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-top-tc{height:5px}.x-panel-header-default-framed-collapsed-top-bc{height:5px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-rtl.x-panel-header-default-framed-collapsed-right{background-image:none;background-color:#157fcc}.x-panel-header-default-framed-collapsed-right-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-right-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-right-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-right-ml{background-position:0 right}.x-panel-header-default-framed-collapsed-right-mr{background-position:right right}.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-right-tc{height:5px}.x-panel-header-default-framed-collapsed-right-bc{height:5px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-right-tl,.x-rtl.x-panel-header-default-framed-collapsed-right-ml,.x-rtl.x-panel-header-default-framed-collapsed-right-bl,.x-rtl.x-panel-header-default-framed-collapsed-right-tr,.x-rtl.x-panel-header-default-framed-collapsed-right-mr,.x-rtl.x-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-bottom-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-bottom-tc{height:5px}.x-panel-header-default-framed-collapsed-bottom-bc{height:5px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-rtl.x-panel-header-default-framed-collapsed-left{background-image:none;background-color:#157fcc}.x-panel-header-default-framed-collapsed-left-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-left-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-left-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-left-ml{background-position:0 left}.x-panel-header-default-framed-collapsed-left-mr{background-position:right left}.x-panel-header-default-framed-collapsed-left-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-left-tc{height:5px}.x-panel-header-default-framed-collapsed-left-bc{height:5px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-left-tl,.x-rtl.x-panel-header-default-framed-collapsed-left-ml,.x-rtl.x-panel-header-default-framed-collapsed-left-bl,.x-rtl.x-panel-header-default-framed-collapsed-left-tr,.x-rtl.x-panel-header-default-framed-collapsed-left-mr,.x-rtl.x-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:5px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:5px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:5px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:5px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#8abfe5}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 6px}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 6px 0 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 6px 0}.x-rtl.x-panel-header-default-framed-collapsed-border-right{border-right-width:5px!important}.x-rtl.x-panel-header-default-framed-collapsed-border-left{border-left-width:5px!important}.x-panel-default-framed-resizable{overflow:visible}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed-resizable .x-panel-handle-north-br{top:-5px}.x-panel-default-framed-resizable .x-panel-handle-south-br{bottom:-5px}.x-panel-default-framed-resizable .x-panel-handle-east-br{right:-5px}.x-panel-default-framed-resizable .x-panel-handle-west-br{left:-5px}.x-panel-default-framed-resizable .x-panel-handle-northwest-br{left:-5px;top:-5px}.x-panel-default-framed-resizable .x-panel-handle-northeast-br{right:-5px;top:-5px}.x-panel-default-framed-resizable .x-panel-handle-southeast-br{right:-5px;bottom:-5px}.x-panel-default-framed-resizable .x-panel-handle-southwest-br{left:-5px;bottom:-5px}.x-panel-default-framed-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-framed-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-default-framed-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-framed-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#e1e1e1;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#eaf3fa}.x-tip-default-mc{background-color:#eaf3fa}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#e1e1e1}.x-tip-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#eaf3fa}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-default .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:black;font-size:13px;font-weight:bold}.x-tip-body-default{padding:3px;color:black;font-size:13px;font-weight:normal}.x-tip-body-default a{color:black}.x-tip-form-invalid{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#eaf3fa}.x-tip-form-invalid-mc{background-color:#eaf3fa}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-form-invalid-tl{background-position:0 -6px}.x-tip-form-invalid-tr{background-position:right -9px}.x-tip-form-invalid-bl{background-position:0 -12px}.x-tip-form-invalid-br{background-position:right -15px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -3px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:3px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:3px}.x-tip-form-invalid-tc{height:3px}.x-tip-form-invalid-bc{height:3px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#e1e1e1}.x-tip-form-invalid .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#eaf3fa}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:black;font-size:13px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:black;font-size:13px;font-weight:normal}.x-tip-body-form-invalid a{color:black}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.png)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#dfeaf2;-webkit-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-btn-group-header-default{padding:4px 5px;line-height:16px;background:#dfeaf2;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-btn-group-header-text-container-default{font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;color:#666}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:5px}.x-btn-group-default-framed{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:0 1px 0 1px;border-width:3px;border-style:solid;background-color:white}.x-btn-group-default-framed-mc{background-color:white}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-3-3-3-3-3-3-3-3-0-1-0-1}.x-btn-group-default-framed-tl{background-position:0 -6px}.x-btn-group-default-framed-tr{background-position:right -9px}.x-btn-group-default-framed-bl{background-position:0 -12px}.x-btn-group-default-framed-br{background-position:right -15px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -3px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:3px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:3px}.x-btn-group-default-framed-tc{height:3px}.x-btn-group-default-framed-bc{height:3px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:0 1px 0 1px;border-width:3px;border-style:solid;background-color:white}.x-btn-group-default-framed-notitle-mc{background-color:white}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-3-3-3-3-3-3-3-3-0-1-0-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -6px}.x-btn-group-default-framed-notitle-tr{background-position:right -9px}.x-btn-group-default-framed-notitle-bl{background-position:0 -12px}.x-btn-group-default-framed-notitle-br{background-position:right -15px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -3px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:3px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:3px}.x-btn-group-default-framed-notitle-tc{height:3px}.x-btn-group-default-framed-notitle-bc{height:3px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#dfeaf2;-webkit-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-btn-group-header-default-framed{padding:4px 5px;line-height:16px;background:#dfeaf2;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.x-btn-group-header-default-framed .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-btn-group-header-text-container-default-framed{font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;color:#666}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:5px}.x-window-ghost{filter:alpha(opacity=50);opacity:.5}.x-window-default{border-color:#3892d3;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.x-window-default{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-window-default-mc{background-color:white}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#3892d3;border-width:1px;border-style:solid;background:white;color:black}.x-window-header-default{font-size:13px;border-color:#3892d3;zoom:1;background-color:#3892d3}.x-window-header-default .x-tool-img{background-color:#3892d3}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#3892d3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3892d3)}.x-window-header-default-vertical .x-rtl.x-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container{background-color:#3892d3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#3892d3)}.x-window-header-text-container-default{color:white;font-weight:bold;line-height:15px;font-family:arial,helvetica,verdana,sans-serif;font-size:13px;padding:1px 0 0;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-top-mc{background-color:#3892d3}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-4-4-0-0-5-5-5-5-5-5-5-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-right-mc{background-color:#3892d3}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-5-5-5-5-5}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:5px}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-rtl.x-window-header-default-right-tl,.x-rtl.x-window-header-default-right-ml,.x-rtl.x-window-header-default-right-bl,.x-rtl.x-window-header-default-right-tr,.x-rtl.x-window-header-default-right-mr,.x-rtl.x-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-bottom-mc{background-color:#3892d3}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:5px}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-left-mc{background-color:#3892d3}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-4-0-0-4-5-5-5-5-5-5-5-5}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-rtl.x-window-header-default-left-tl,.x-rtl.x-window-header-default-left-ml,.x-rtl.x-window-header-default-left-bl,.x-rtl.x-window-header-default-left-tr,.x-rtl.x-window-header-default-left-mr,.x-rtl.x-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-top-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-right-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-rtl.x-window-header-default-collapsed-right-tl,.x-rtl.x-window-header-default-collapsed-right-ml,.x-rtl.x-window-header-default-collapsed-right-bl,.x-rtl.x-window-header-default-collapsed-right-tr,.x-rtl.x-window-header-default-collapsed-right-mr,.x-rtl.x-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-bottom-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-left-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-rtl.x-window-header-default-collapsed-left-tl,.x-rtl.x-window-header-default-collapsed-left-ml,.x-rtl.x-window-header-default-collapsed-left-bl,.x-rtl.x-window-header-default-collapsed-left-tr,.x-rtl.x-window-header-default-collapsed-left-mr,.x-rtl.x-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:white;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#9bc8e9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 6px 0 0}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title{margin:0 0 0 6px}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 6px}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title{margin:0 6px 0 0}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 6px 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title{margin:0 0 6px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:6px 0 0 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title{margin:6px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-window-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-window-header-default-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-window-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-window-header-default-vertical .x-tool-after-title{margin:6px 0 0 0}.x-window-header-default-vertical .x-rtl.x-tool-after-title{margin:6px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 6px 0}.x-window-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 6px 0}.x-window-header-default{border-width:5px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-window-default-resizable{overflow:visible}.x-window-default-resizable .x-window-handle-north-br{top:-5px}.x-window-default-resizable .x-window-handle-south-br{bottom:-5px}.x-window-default-resizable .x-window-handle-east-br{right:-5px}.x-window-default-resizable .x-window-handle-west-br{left:-5px}.x-window-default-resizable .x-window-handle-northwest-br{left:-5px;top:-5px}.x-window-default-resizable .x-window-handle-northeast-br{right:-5px;top:-5px}.x-window-default-resizable .x-window-handle-southeast-br{right:-5px;bottom:-5px}.x-window-default-resizable .x-window-handle-southwest-br{left:-5px;bottom:-5px}.x-window-default-outer-border-l{border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-b{border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-bl{border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-r{border-right-color:#3892d3!important;border-right-width:1px!important}.x-window-default-outer-border-rl{border-right-color:#3892d3!important;border-right-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-rb{border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-rbl{border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-t{border-top-color:#3892d3!important;border-top-width:1px!important}.x-window-default-outer-border-tl{border-top-color:#3892d3!important;border-top-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-tb{border-top-color:#3892d3!important;border-top-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-tbl{border-top-color:#3892d3!important;border-top-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-tr{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important}.x-window-default-outer-border-trl{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-trb{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-trbl{border-color:#3892d3!important;border-width:1px!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#cf4c35;font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.png)}div.x-lbl-top-err-icon{margin-bottom:4px}.x-form-invalid-icon{width:16px;height:16px;margin:0 5px;background-image:url(images/form/exclamation.png);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 13px/17px helvetica,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 13px helvetica,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;border-color:#cf4c35}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:4px 6px 3px 6px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:silver #d9d9d9 #d9d9d9;height:24px;line-height:15px}.x-content-box .x-form-text{height:15px}.x-form-focus{border-color:#3892d3}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto}.x-form-display-field-body{height:24px}.x-form-display-field{font:normal 13px/17px helvetica,arial,verdana,sans-serif;color:black;margin-top:4px}.x-message-box .x-window-body{background-color:white;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-rtl.x-message-box-info,.x-rtl.x-message-box-warning,.x-rtl.x-message-box-question,.x-rtl.x-message-box-error{background-position:top left}.x-message-box-info{background-image:url(images/shared/icon-info.png)}.x-message-box-warning{background-image:url(images/shared/icon-warning.png)}.x-message-box-question{background-image:url(images/shared/icon-question.png)}.x-message-box-error{background-image:url(images/shared/icon-error.png)}.x-form-cb-wrap{height:24px}.x-form-cb{margin-top:5px}.x-form-checkbox{width:15px;height:15px;background:url(images/form/checkbox.png) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -15px}.x-form-checkbox-focus{background-position:-15px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-15px -15px}.x-form-cb-label{margin-top:4px;font:normal 13px/17px helvetica,arial,verdana,sans-serif}.x-form-cb-label-before{margin-right:4px}.x-rtl.x-field .x-form-cb-label-before{margin-right:0;margin-left:4px}.x-form-cb-label-after{margin-left:4px}.x-rtl.x-field .x-form-cb-label-after{margin-left:0;margin-right:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #cf4c35}.x-check-group-alt{background:#f5f5f5;border-top:1px dotted #f5f5f5;border-bottom:1px dotted #f5f5f5}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-rtl.x-form-check-group-label{margin:0 0 5px 30px}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:16px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header-text{font:12px/16px bold helvetica,arial,verdana,sans-serif;color:black;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,.x-fieldset-with-title .x-rtl .x-tool{margin:1px 0 0 3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-image:url(images/fieldset/collapse-tool.png);background-position:0 0}.x-fieldset .x-tool-over .x-tool-toggle{background-position:0 -15px}.x-fieldset-collapsed .x-tool-toggle{background-position:-15px 0}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -15px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:15px;height:15px;background:url(images/form/radio.png) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -15px}.x-form-radio-focus{background-position:-15px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-15px -15px}.x-form-trigger{background:url(images/form/trigger.png);width:22px}.x-rtl.x-form-trigger-wrap .x-form-trigger{background-image:url(images/form/trigger-rtl.png)}.x-trigger-cell{background-color:white;width:22px}.x-form-trigger-over{background-position:-22px 0}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-66px 0}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-88px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-44px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.png)}.x-rtl.x-form-trigger-wrap .x-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.png)}.x-form-search-trigger{background-image:url(images/form/search-trigger.png)}.x-rtl.x-form-trigger-wrap .x-form-search-trigger{background-image:url(images/form/search-trigger-rtl.png)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:24px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:24px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.png);background-color:white;width:22px;height:11px}.x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-rtl.png)}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-66px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-22px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-88px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-44px -11px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.png)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.png)}.x-tbar-page-next{background-image:url(images/grid/page-next.png)}.x-tbar-page-last{background-image:url(images/grid/page-last.png)}.x-tbar-loading{background-image:url(images/grid/refresh.png)}.x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last.png)}.x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next.png)}.x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev.png)}.x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first.png)}.x-boundlist{border-width:1px;border-style:solid;border-color:#e1e1e1;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 6px;line-height:22px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#c1ddf1;border-color:#c1ddf1}.x-boundlist-item-over{background:#d6e8f6;border-color:#d6e8f6}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#e1e1e1;background-color:white;width:212px}.x-datepicker-header{padding:4px 6px;text-align:center;background-image:none;background-color:#f5f5f5}.x-datepicker-arrow{width:12px;height:12px;top:9px;cursor:pointer;background-color:#f5f5f5;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/datepicker/arrow-right.png)}.x-datepicker-prev{left:6px;background-image:url(images/datepicker/arrow-left.png)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:#3892d3}.x-datepicker-month .x-btn-split-right{background-image:url(images/datepicker/month-arrow.png);padding-right:8px}.x-datepicker-column-header{width:30px;color:black;font:bold 13px helvetica,arial,verdana,sans-serif;text-align:right;background-image:none;background-color:white}.x-datepicker-column-header-inner{line-height:25px;padding:0 9px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 7px 0 0;font:normal 13px helvetica,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:23px}a.x-datepicker-date:hover{color:black;background-color:#eaf3fa}.x-datepicker-selected{border-style:solid;border-color:#3892d3}.x-datepicker-selected .x-datepicker-date{background-color:#d6e8f6;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#bfbfbf}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:gray}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:3px 0;background-image:none;background-color:#f5f5f5;text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 3px 0 2px}.x-monthpicker{width:212px;border-width:1px;border-style:solid;border-color:#e1e1e1;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#e1e1e1;border-style:solid;width:105px}.x-monthpicker-months .x-monthpicker-item{width:52px}.x-monthpicker-years{width:105px}.x-monthpicker-years .x-monthpicker-item{width:52px}.x-monthpicker-item{margin:5px 0 5px;font:normal 13px helvetica,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:black;border-width:1px;border-style:solid;border-color:white;line-height:22px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#eaf3fa}.x-monthpicker-selected{background-color:#d6e8f6;border-style:solid;border-color:#3892d3}.x-monthpicker-yearnav{height:34px}.x-monthpicker-yearnav-button-ct{width:52px}.x-monthpicker-yearnav-button{height:12px;width:12px;cursor:pointer;margin-top:11px;filter:alpha(opacity=70);opacity:.7;background-color:white}a.x-monthpicker-yearnav-button:hover{filter:alpha(opacity=100);opacity:1}.x-monthpicker-yearnav-next{background-image:url(images/datepicker/arrow-right.png);background-position:0 0}.x-monthpicker-yearnav-next-over{background-position:0 0}.x-monthpicker-yearnav-prev{background-image:url(images/datepicker/arrow-left.png);background-position:0 0}.x-monthpicker-yearnav-prev-over{background-position:0 0}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:28px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:8px}.x-form-date-trigger{background-image:url(images/form/date-trigger.png)}.x-rtl.x-form-trigger-wrap .x-form-date-trigger{background-image:url(images/form/date-trigger-rtl.png)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:192px;height:120px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:24px;height:24px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:18px;height:18px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#e6e6e6}.x-color-picker-selected{border-color:#8bb8f3;background-color:#e6e6e6}.x-color-picker-item-inner{line-height:16px;border-color:#e1e1e1;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:13px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 13px helvetica,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:silver}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 13px helvetica,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 13px/15px helvetica,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-before-selected .x-grid-td{border-bottom-style:solid;border-bottom-color:#c1ddf1}.x-grid-row-selected .x-grid-td{border-bottom-style:solid;border-bottom-color:#c1ddf1}.x-grid-row-before-focused .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-focused .x-grid-td{background-color:#e2eff8}.x-grid-row-over .x-grid-td{background-color:#e2eff8}.x-grid-row-selected .x-grid-td{background-color:#c1ddf1}.x-grid-row-focused .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-with-row-lines .x-grid-row-focused-first .x-grid-td{border-top:1px solid #e2eff8}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#c1ddf1;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#e2eff8;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#e2eff8}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:solid;border-top-color:#c1ddf1}.x-grid-with-row-lines .x-grid-table-focused-first{border-top-style:solid;border-top-color:#e2eff8}.x-grid-cell-inner{text-overflow:ellipsis;padding:5px 10px 4px 10px}.x-grid-cell-special{border-color:#ededed;border-style:solid;border-right-width:1px 0}.x-rtl.x-grid-cell-special{border-right-width:0;border-left-width:1px 0}.x-grid-dirty-cell{background:url(images/grid/dirty.png) no-repeat 0 0}.x-rtl.x-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.png);background-position:right 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#c1ddf1}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-rtl.x-grid-with-col-lines .x-grid-cell{border-right-width:0;border-left-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.png)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.png)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.png)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.png)}.x-grid-header-ct{border:1px solid #157fcc;border-bottom-color:#f5f5f5;background-color:#f5f5f5}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:silver}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.png)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.png)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.png)}.x-column-header{border-right:1px solid silver;color:#666;font:bold 13px/15px helvetica,arial,verdana,sans-serif;background-color:#f5f5f5}.x-rtl.x-column-header{border-right:0 none;border-left:1px solid silver}.x-group-sub-header{background:transparent;border-top:1px solid silver}.x-group-sub-header .x-column-header-inner{padding:6px 10px 7px 10px}.x-column-header-inner{padding:7px 10px 7px 10px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#eef6fb}.x-column-header-open{background-color:#eef6fb}.x-column-header-open .x-column-header-trigger{background-color:#dfeaf2}.x-column-header-trigger{width:18px;cursor:pointer;background-color:transparent;background-position:center center}.x-rtl.x-column-header-trigger{background-position:center center}.x-column-header-align-right .x-column-header-text{margin-right:12px}.x-column-header-align-right .x-rtl.x-column-header-text{margin-right:0;margin-left:12px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:17px;background-position:right center}.x-column-header-sort-ASC .x-rtl.x-column-header-text,.x-column-header-sort-DESC .x-rtl.x-column-header-text{padding-right:0;padding-left:17px;background-position:0 center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.png)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.png)}.x-grid-cell-inner-action-col{padding:4px 4px 4px 4px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:5px 10px 4px 10px}.x-grid-checkcolumn{width:15px;height:15px;background:url(images/form/checkbox.png) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -15px}.x-grid-cell-inner-row-numberer{padding:5px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 1px 0;border-style:solid;border-color:silver;padding:8px 4px 8px 4px;background:#f5f5f5;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.png);padding:0 0 0 17px}.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title{background-position:right center;padding:0 17px 0 0}.x-grid-group-title{color:#666;font:bold 13px/15px helvetica,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.png)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.png)}.x-group-by-icon{background-image:url(images/grid/group-by.png)}.x-show-groups-icon{background-image:url(images/grid/group-by.png)}.x-grid-rowbody{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:5px 10px 5px 10px}.x-grid-rowwrap{border-color:#ededed;border-style:solid}.x-summary-bottom{border-bottom-color:#f5f5f5}.x-docked-summary{border-width:1px;border-color:#157fcc;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed;background-color:transparent!important;border-top-width:0;font:normal 13px/15px helvetica,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-locked .x-rtl.x-grid-inner-locked{border-width:0 0 0 1px}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-grid-inner-locked .x-rtl.x-column-header-last{border-left-width:0!important}.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last{border-left:0 none}.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last{border-left:0 none}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.png)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.png)}.x-grid-editor .x-form-text{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:4px 9px 3px 9px}.x-gecko .x-grid-editor .x-form-text{padding-left:8px;padding-right:8px}.x-grid-editor .x-form-display-field-body{height:24px}.x-grid-editor .x-form-display-field{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:5px 10px 4px 10px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:4px 4px 4px 4px}.x-tree-cell-editor .x-form-text{padding-left:3px;padding-right:3px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-grid-row-editor .x-field{margin:0 3px 0 2px}.x-grid-row-editor .x-form-display-field{padding:5px 7px 4px 8px}.x-grid-row-editor .x-form-action-col-field{padding:4px 1px 4px 2px}.x-grid-row-editor .x-form-text{padding:4px 6px 3px 7px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:6px;padding-right:5px}.x-grid-row-editor .x-panel-body{border-top:1px solid #e1e1e1!important;border-bottom:1px solid #e1e1e1!important;padding:5px 0 5px 0;background-color:#dfeaf2}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb{margin-right:0;margin-left:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 5px 5px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#dfeaf2}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#dfeaf2}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-5-5-5-5}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:5px 1px 1px 1px}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#dfeaf2}.x-grid-row-editor-buttons-default-top-mc{background-color:#dfeaf2}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-5-5-5-5}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:1px 1px 5px 1px}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:35px}.x-grid-row-editor-buttons-default-top{bottom:35px}.x-grid-row-editor-buttons{border-color:#e1e1e1}.x-row-editor-update-button{margin-right:3px}.x-row-editor-cancel-button{margin-left:2px}.x-rtl.x-row-editor-update-button{margin-left:3px;margin-right:auto}.x-rtl.x-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x-grid-cell-inner-row-expander{padding:7px 6px 6px 6px}.x-grid-row-expander{width:11px;height:11px;cursor:pointer;background-image:url(images/grid/group-collapse.png)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.png)}.x-accordion-layout-ct{background-color:white;padding:5px 5px 0}.x-accordion-hd .x-panel-header-text-container{color:#666;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0 0 5px}.x-accordion-item .x-accordion-hd{background:#dfeaf2;border-top-color:white;padding:8px 10px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#157fcc}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#dfeaf2}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -272px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -256px}.x-accordion-hd .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-24px;width:8px;height:48px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:48px;height:8px;margin-left:-24px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.png)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.png)}.x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-right.png)}.x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-left.png)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.png)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.png)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.png)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.png)}.x-splitter-collapsed .x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-left.png)}.x-splitter-collapsed .x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-right.png)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.png)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.png)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#3892d3}.x-menu{border-style:solid;border-width:1px;border-color:#e1e1e1}.x-menu-body{background:white;padding:0}.x-menu-icon-separator{left:22px;border-left:solid 1px #e1e1e1;background-color:white;width:1px}.x-rtl.x-menu .x-menu-icon-separator{left:auto;right:22px}.x-menu-item{cursor:pointer}.x-menu-item-indent{margin-left:27px}.x-rtl.x-menu-item-indent{margin-left:0;margin-right:27px}.x-menu-item-active{background-image:none;background-color:#d6e8f6;border-color:#0079d2}.x-nlg .x-menu-item-active{background:#d6e8f6 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:24px;padding:0 4px 0 27px;display:inline-block}.x-rtl.x-menu-item-link{padding:0 27px 0 4px}.x-right-check-item-text{padding-right:22px}.x-rtl.x-right-check-item-text{padding-left:22px;padding-right:0}.x-menu-item-icon{width:16px;height:16px;top:5px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:gray;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#bfbfbf}.x-rtl.x-menu-item-icon{left:auto;right:3px}.x-menu-item-icon-right{width:16px;height:16px;top:4px;right:3px;background-position:center center}.x-rtl.x-menu-item-icon-right{right:auto;left:3px}.x-menu-item-text{font-size:13px;color:black;cursor:pointer;margin-right:16px}a.x-rtl .x-menu-item-text{margin-right:0;margin-left:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.png)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.png)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.png)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:1px;border-top:solid 1px #e1e1e1;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:8px;right:0;background-image:url(images/menu/menu-parent.png)}.x-rtl.x-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.png)}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:0}.x-content-box .x-menu-item-separator{height:0}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:13px;color:black}.x-menu-scroll-top{height:16px;background-image:url(images/menu/scroll-top.png)}.x-menu-scroll-bottom{height:16px;background-image:url(images/menu/scroll-bottom.png)}.x-menu-scroll-top,.x-menu-scroll-bottom{filter:alpha(opacity=50);opacity:.5;background-color:white}.x-menu-scroll-top-hover,.x-menu-scroll-bottom-hover{filter:alpha(opacity=60);opacity:.6}.x-menu-scroll-top-pressed,.x-menu-scroll-bottom-pressed{filter:alpha(opacity=70);opacity:.7}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:16px;height:16px;background-image:url(images/tools/tool-sprites.png);margin:0}.x-tool .x-tool-img{filter:alpha(opacity=50);opacity:.5}.x-tool-over .x-tool-img{filter:alpha(opacity=60);opacity:.6}.x-tool-pressed .x-tool-img{filter:alpha(opacity=70);opacity:.7}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -16px}.x-tool-maximize{background-position:0 -32px}.x-tool-restore{background-position:0 -48px}.x-tool-toggle{background-position:0 -64px}.x-panel-collapsed .x-tool-toggle{background-position:0 -80px}.x-tool-gear{background-position:0 -96px}.x-tool-prev{background-position:0 -112px}.x-tool-next{background-position:0 -128px}.x-tool-pin{background-position:0 -144px}.x-tool-unpin{background-position:0 -160px}.x-tool-right{background-position:0 -176px}.x-tool-left{background-position:0 -192px}.x-tool-down{background-position:0 -208px}.x-tool-up{background-position:0 -224px}.x-tool-refresh{background-position:0 -240px}.x-tool-plus{background-position:0 -256px}.x-tool-minus{background-position:0 -272px}.x-tool-search{background-position:0 -288px}.x-tool-save{background-position:0 -304px}.x-tool-help{background-position:0 -320px}.x-tool-print{background-position:0 -336px}.x-tool-expand{background-position:0 -352px}.x-tool-collapse{background-position:0 -368px}.x-tool-resize{background-position:0 -384px}.x-tool-move{background-position:0 -400px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -208px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -224px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -192px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -176px}.x-rtl.x-tool-expand-left,.x-rtl.x-tool-collapse-left{background-position:0 -176px}.x-rtl.x-tool-expand-right,.x-rtl.x-tool-collapse-right{background-position:0 -192px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff;-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.png)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.png)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.png)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.png)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.png)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.png)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:5px}.x-slider-horz .x-slider-thumb{width:15px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-15px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-30px -30px}.x-rtl.x-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x-rtl.x-slider-horz .x-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x-rtl.x-slider-horz .x-slider-thumb{margin-right:-7px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:15px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -15px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -30px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-top-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-top-tl{background-position:0 -6px}.x-tab-default-top-tr{background-position:right -9px}.x-tab-default-top-bl{background-position:0 -12px}.x-tab-default-top-br{background-position:right -15px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -3px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:3px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:3px}.x-tab-default-top-tc{height:3px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-top-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-bottom-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-3-3-0-0-0-0-8-12-7-12}.x-tab-default-bottom-tl{background-position:0 -6px}.x-tab-default-bottom-tr{background-position:right -9px}.x-tab-default-bottom-bl{background-position:0 -12px}.x-tab-default-bottom-br{background-position:right -15px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -3px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:3px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:3px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:3px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif);background-repeat:repeat-y}.x-tab-default-bottom-mc{padding:8px 9px 4px 9px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-left-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-left-tl{background-position:0 -6px}.x-tab-default-left-tr{background-position:right -9px}.x-tab-default-left-bl{background-position:0 -12px}.x-tab-default-left-br{background-position:right -15px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -3px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:3px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:3px}.x-tab-default-left-tc{height:3px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-left-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-right-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-right-tl{background-position:0 -6px}.x-tab-default-right-tr{background-position:right -9px}.x-tab-default-right-bl{background-position:0 -12px}.x-tab-default-right-br{background-position:right -15px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -3px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:3px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:3px}.x-tab-default-right-tc{height:3px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-right-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#157fcc;margin:0 1px 0 0;cursor:pointer}.x-tab-default .x-tab-inner{font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;line-height:16px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:white;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#a5cdeb}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:12px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:12px}.x-tab-default-icon .x-tab-inner{width:16px}.x-rtl.x-tab-default{margin:0 0 0 1px}.x-rtl.x-tab-default{margin:0 0 0 1px}.x-tab-default-left{margin:0 0 0 1px}.x-rtl.x-tab-default-left{margin:0 1px 0 0}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:0 solid #157fcc}.x-tab-default-bottom{border-top:0 solid #157fcc}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-rtl.x-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-rtl.x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-rtl.x-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-rtl.x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:22px}.x-rtl.x-tab-default-icon-text-left .x-tab-inner{padding-left:0;padding-right:22px}.x-tab-default-over{background-color:#5fa7db}.x-tab-default-over .x-tab-glyph{color:white}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#afd3ed}.x-tab-default-active{background-color:#add2ed}.x-tab-default-active .x-tab-inner{color:#157fcc}.x-tab-default-active .x-tab-glyph{color:#157fcc}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#61a8dc}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:0 solid #add2ed}.x-tab-default-bottom-active{border-top:0 solid #add2ed}.x-tab-default-disabled{cursor:default}.x-tab-default-disabled .x-tab-inner{filter:alpha(opacity=30);opacity:.3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:white;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#81b9e3}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#157fcc #157fcc #157fcc}.x-tab-default-bottom-disabled{border-color:#157fcc #157fcc #157fcc #157fcc}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#5fa7db}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#5fa7db}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#add2ed}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#add2ed}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#4b9cd7}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#4b9cd7}.x-tab-default .x-tab-close-btn{width:12px;height:12px;background-image:url(images/tab/tab-default-close.png)}.x-tab-default .x-tab-close-btn-over{background-position:-12px 0}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-rtl.x-tab-default .x-tab-close-btn{right:auto;left:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3;background-position:0 0}.x-tab-default-pressed .x-tab-close-btn{background-position:-24px 0}.x-tab-default-closable .x-tab-wrap{padding-right:15px}.x-rtl.x-tab-default-closable .x-tab-wrap{padding-right:0;padding-left:15px}.x-tab-default-top-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)"}.x-tab-bar-default-top{padding:0}.x-tab-bar-default-bottom{padding:0}.x-tab-bar-default-left{padding:0}.x-rtl.x-tab-bar-default-left{padding:0}.x-tab-bar-default-right{padding:0}.x-rtl.x-tab-bar-default-right{padding:0}.x-tab-bar-default-horizontal{height:36px}.x-content-box .x-tab-bar-default-horizontal{height:36px}.x-tab-bar-default-vertical{width:36px}.x-content-box .x-tab-bar-default-vertical{width:36px}.x-tab-bar-body-default-top{padding-bottom:5px}.x-tab-bar-body-default-bottom{padding-top:5px}.x-tab-bar-body-default-left{padding-right:5px}.x-rtl.x-tab-bar-body-default-left{padding-right:0;padding-left:5px}.x-tab-bar-body-default-right{padding-left:5px}.x-rtl.x-tab-bar-body-default-right{padding-left:0;padding-right:5px}.x-tab-bar-strip-default{border-style:solid;border-color:#157fcc;background-color:#add2ed}.x-content-box .x-tab-bar-strip-default-horizontal{height:5px}.x-content-box .x-tab-bar-strip-default-vertical{width:5px}.x-tab-bar-strip-default-top{border-width:0;height:5px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:0}.x-tab-bar-strip-default-bottom{border-width:0;height:5px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0}.x-tab-bar-strip-default-left{border-width:0;width:5px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:0}.x-rtl.x-tab-bar-strip-default-left{border-width:0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left{border-width:0}.x-tab-bar-strip-default-right{border-width:0;width:5px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:0}.x-rtl.x-tab-bar-strip-default-right{border-width:0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right{border-width:0}.x-tab-bar-default{background-color:#157fcc}.x-tab-bar-default .x-box-scroller{cursor:pointer;filter:alpha(opacity=50);opacity:.5;background-color:#157fcc}.x-tab-bar-default .x-box-scroller-plain .x-box-scroller{background-color:transparent}.x-ie8m .x-tab-bar-default .x-box-scroller-plain .x-box-scroller{background-color:#fff}.x-tab-bar-default .x-box-scroller-hover{filter:alpha(opacity=60);opacity:.6}.x-tab-bar-default .x-box-scroller-pressed{filter:alpha(opacity=70);opacity:.7}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:31px;width:24px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:31px;height:24px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:0}.x-tab-bar-default-right .x-box-scroller{margin-left:0}.x-rtl.x-tab-bar-default-right .x-box-scroller{margin-left:0;margin-right:0}.x-tab-bar-default .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left.png)}.x-tab-bar-default .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right.png)}.x-tab-bar-default .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top.png)}.x-tab-bar-default .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom.png)}.x-rtl.x-tab-bar-default .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right.png)}.x-rtl.x-tab-bar-default .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-plain-scroll-left.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-plain-scroll-right.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-plain-scroll-top.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-plain-scroll-bottom.png)}.x-rtl.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-plain-scroll-right.png)}.x-rtl.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-plain-scroll-left.png)}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=25);opacity:.25;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:36px}.x-column-header-checkbox{border-color:#f5f5f5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:15px;width:15px;background-image:url(images/form/checkbox.png);line-height:15px}.x-column-header-checkbox .x-column-header-inner{padding:7px 4px 7px 4px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:5px 4px 4px 4px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -15px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.png)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-arrows .x-rtl.x-tree-expander{background:url(images/tree/arrows-rtl.png) no-repeat -48px center}.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander{background-position:0 center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.png)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.png)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.png)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.png)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.png)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.png)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.png)}.x-tree-lines .x-rtl.x-tree-elbow{background-image:url(images/tree/elbow-rtl.png)}.x-tree-lines .x-rtl.x-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.png)}.x-tree-lines .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.png)}.x-tree-lines .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.png)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.png)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.png)}.x-tree-lines .x-rtl.x-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.png)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.png)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.png)}.x-tree-no-row-lines .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.png)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.png)}.x-tree-icon{width:16px;height:24px}.x-tree-elbow-img{width:18px;height:24px;margin-right:2px}.x-rtl.x-tree-elbow-img{margin-right:0;margin-left:2px}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-5px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.png)}.x-rtl.x-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.png)}.x-tree-icon-parent{background-image:url(images/tree/folder.png)}.x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-rtl.png)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.png)}.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.png)}.x-tree-checkbox{margin-right:4px;top:5px;width:15px;height:15px;background-image:url(images/form/checkbox.png)}.x-rtl.x-tree-checkbox{margin-right:0;margin-left:4px}.x-tree-checkbox-checked{background-position:0 -15px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.png)}.x-grid-tree-loading .x-rtl.x-tree-icon{background-image:url(images/tree/loading.png)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:13px;line-height:15px;padding-left:4px}.x-rtl.x-tree-node-text{padding-left:0;padding-right:4px}.x-grid-cell-inner-treecolumn{padding:5px 10px 4px 6px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.png)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.png)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.png)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.png)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}body{background-color:#f5f5f5}.x-btn-plain-toolbar-small{border-color:transparent}.x-btn-plain-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:transparent}.x-btn-plain-toolbar-small-mc{background-image:url(images/btn/btn-plain-toolbar-small-fbg.gif);background-position:0 top;background-color:transparent}.x-nlg .x-btn-plain-toolbar-small{background-image:url(images/btn/btn-plain-toolbar-small-bg.gif);background-position:0 top}.x-nbr .x-btn-plain-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-plain-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-plain-toolbar-small-tl{background-position:0 -6px}.x-btn-plain-toolbar-small-tr{background-position:right -9px}.x-btn-plain-toolbar-small-bl{background-position:0 -12px}.x-btn-plain-toolbar-small-br{background-position:right -15px}.x-btn-plain-toolbar-small-ml{background-position:0 top}.x-btn-plain-toolbar-small-mr{background-position:right top}.x-btn-plain-toolbar-small-tc{background-position:0 0}.x-btn-plain-toolbar-small-bc{background-position:0 -3px}.x-btn-plain-toolbar-small-tr,.x-btn-plain-toolbar-small-br,.x-btn-plain-toolbar-small-mr{padding-right:3px}.x-btn-plain-toolbar-small-tl,.x-btn-plain-toolbar-small-bl,.x-btn-plain-toolbar-small-ml{padding-left:3px}.x-btn-plain-toolbar-small-tc{height:3px}.x-btn-plain-toolbar-small-bc{height:3px}.x-btn-plain-toolbar-small-tl,.x-btn-plain-toolbar-small-bl,.x-btn-plain-toolbar-small-tr,.x-btn-plain-toolbar-small-br,.x-btn-plain-toolbar-small-tc,.x-btn-plain-toolbar-small-bc,.x-btn-plain-toolbar-small-ml,.x-btn-plain-toolbar-small-mr{zoom:1}.x-btn-plain-toolbar-small-ml,.x-btn-plain-toolbar-small-mr{zoom:1}.x-btn-plain-toolbar-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-plain-toolbar-small-tl,.x-strict .x-ie7 .x-btn-plain-toolbar-small-bl{position:relative;right:0}.x-btn-plain-toolbar-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-small-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-bg.gif)"}.x-btn-plain-toolbar-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 5px}.x-btn-plain-toolbar-small .x-btn-arrow{background-image:url(images/button/plain-toolbar-small-arrow.png)}.x-btn-plain-toolbar-small .x-btn-arrow-right{padding-right:21px}.x-btn-plain-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:21px}.x-btn-plain-toolbar-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-plain-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#666;opacity:.5}.x-ie8m .x-btn-plain-toolbar-small .x-btn-glyph{color:#b2b2b2}.x-btn-plain-toolbar-small-disabled{background-image:none;background-color:transparent}.x-btn-plain-toolbar-small-icon .x-btn-button,.x-btn-plain-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon .x-btn-inner,.x-btn-plain-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:0}.x-btn-plain-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-plain-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-plain-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:5px;padding-right:21px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:21px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-plain-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-plain-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-plain-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:5px;padding-left:21px}.x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-plain-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-plain-toolbar-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-small-over{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-small-focus{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-small-menu-active,.x-btn-plain-toolbar-small-pressed{border-color:#e1e1e1;background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-plain-toolbar-small-over .x-frame-tl,.x-btn-plain-toolbar-small-over .x-frame-bl,.x-btn-plain-toolbar-small-over .x-frame-tr,.x-btn-plain-toolbar-small-over .x-frame-br,.x-btn-plain-toolbar-small-over .x-frame-tc,.x-btn-plain-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-over-corners.gif)}.x-btn-plain-toolbar-small-over .x-frame-ml,.x-btn-plain-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-over-sides.gif)}.x-btn-plain-toolbar-small-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-small-over-fbg.gif)}.x-btn-plain-toolbar-small-focus .x-frame-tl,.x-btn-plain-toolbar-small-focus .x-frame-bl,.x-btn-plain-toolbar-small-focus .x-frame-tr,.x-btn-plain-toolbar-small-focus .x-frame-br,.x-btn-plain-toolbar-small-focus .x-frame-tc,.x-btn-plain-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-focus-corners.gif)}.x-btn-plain-toolbar-small-focus .x-frame-ml,.x-btn-plain-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-focus-sides.gif)}.x-btn-plain-toolbar-small-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-tl,.x-btn-plain-toolbar-small-menu-active .x-frame-bl,.x-btn-plain-toolbar-small-menu-active .x-frame-tr,.x-btn-plain-toolbar-small-menu-active .x-frame-br,.x-btn-plain-toolbar-small-menu-active .x-frame-tc,.x-btn-plain-toolbar-small-menu-active .x-frame-bc,.x-btn-plain-toolbar-small-pressed .x-frame-tl,.x-btn-plain-toolbar-small-pressed .x-frame-bl,.x-btn-plain-toolbar-small-pressed .x-frame-tr,.x-btn-plain-toolbar-small-pressed .x-frame-br,.x-btn-plain-toolbar-small-pressed .x-frame-tc,.x-btn-plain-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-ml,.x-btn-plain-toolbar-small-menu-active .x-frame-mr,.x-btn-plain-toolbar-small-pressed .x-frame-ml,.x-btn-plain-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-mc,.x-btn-plain-toolbar-small-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-tl,.x-btn-plain-toolbar-small-disabled .x-frame-bl,.x-btn-plain-toolbar-small-disabled .x-frame-tr,.x-btn-plain-toolbar-small-disabled .x-frame-br,.x-btn-plain-toolbar-small-disabled .x-frame-tc,.x-btn-plain-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-ml,.x-btn-plain-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-mc{background-color:transparent;background-image:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif)}.x-nlg .x-btn-plain-toolbar-small-over{background-image:url(images/btn/btn-plain-toolbar-small-over-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-focus{background-image:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-menu-active,.x-nlg .x-btn-plain-toolbar-small-pressed{background-image:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-disabled{background-image:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)}.x-nbr .x-btn-plain-toolbar-small{background-image:none}.x-btn-plain-toolbar-small .x-btn-split-right{background-image:url(images/button/plain-toolbar-small-s-arrow.png);padding-right:23px}.x-btn-plain-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/plain-toolbar-small-s-arrow-rtl.png);padding-right:0;padding-left:23px}.x-btn-plain-toolbar-small .x-btn-split-bottom{background-image:url(images/button/plain-toolbar-small-s-arrow-b.png);padding-bottom:20px}.x-btn-plain-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-plain-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-over-bg.gif)"}.x-btn-plain-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)"}.x-btn-plain-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)"}.x-btn-plain-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)"}.x-btn-plain-toolbar-small-disabled .x-btn-icon-el,.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,.x-btn-plain-toolbar-large-disabled .x-btn-icon-el{background-color:white}.x-strict .x-ie8 .x-btn-plain-toolbar-small-disabled .x-btn-icon-el,.x-strict .x-ie8 .x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,.x-strict .x-ie8 .x-btn-plain-toolbar-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-toolbar-default .x-toolbar-scroll-left{margin-right:4px}.x-toolbar-default .x-toolbar-scroll-right{margin-left:4px}.x-toolbar-default .x-toolbar-scroll-left,.x-toolbar-default .x-toolbar-scroll-right{filter:alpha(opacity=60);opacity:.6}.x-toolbar-default .x-toolbar-scroll-left-hover,.x-toolbar-default .x-toolbar-scroll-right-hover{background-position:0 0;filter:alpha(opacity=80);opacity:.8}.x-toolbar-default .x-toolbar-scroll-left-pressed,.x-toolbar-default .x-toolbar-scroll-right-pressed{background-position:0 0;filter:alpha(opacity=100);opacity:1}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=25);opacity:.25}.x-toolbar-default .x-box-scroller{background-color:white}.x-toolbar-scroller{padding:6px 4px 6px 4px}.x-toolbar-vertical-scroller{padding:3px 8px 3px 8px}.x-panel-light{border-color:#157fcc;padding:0}.x-panel-header-light{font-size:13px;border:1px solid #157fcc}.x-panel-header-light .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-panel-header-light-horizontal{padding:9px 9px 10px 9px}.x-panel-header-light-horizontal-noborder{padding:10px 10px 10px 10px}.x-panel-header-light-vertical{padding:9px 9px 9px 10px}.x-panel-header-light-vertical-noborder{padding:10px 10px 10px 10px}.x-rtl.x-panel-header-light-vertical{padding:9px 10px 9px 9px}.x-rtl.x-panel-header-light-vertical-noborder{padding:10px 10px 10px 10px}.x-panel-header-text-container-light{color:#666;font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-light{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-light{background-image:none;background-color:#dfeaf2}.x-panel-header-light-vertical{background-image:none;background-color:#dfeaf2}.x-rtl.x-panel-header-light-vertical{background-image:none;background-color:#dfeaf2}.x-panel .x-panel-header-light-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-left{border-right-width:1px!important}.x-panel-header-light-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-light-bottom:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-light-left:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-light-right:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-light-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-light-vertical .x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-light-vertical .x-rtl.x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-light .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-light .x-panel-header-glyph{color:#eff4f8}.x-panel-header-light-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-light-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 6px}.x-panel-header-light-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-light-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 6px 0 0}.x-panel-header-light-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-vertical .x-rtl.x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-light-horizontal .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-panel-header-light-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-light-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-panel-header-light-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-vertical .x-rtl.x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-header-light-vertical .x-rtl.x-tool-before-title{margin:0 0 6px 0}.x-rtl.x-panel-header-light-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-light-collapsed-border-left{border-left-width:1px!important}.x-panel-light-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-light-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-light-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-panel-light-framed{border-color:#dfeaf2;padding:0}.x-panel-header-light-framed{font-size:13px;border:5px solid #dfeaf2}.x-panel-header-light-framed .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-panel-header-light-framed-horizontal{padding:5px}.x-panel-header-light-framed-horizontal-noborder{padding:10px 10px 5px 10px}.x-panel-header-light-framed-vertical{padding:5px 5px 5px 5px}.x-panel-header-light-framed-vertical-noborder{padding:10px 10px 10px 5px}.x-rtl.x-panel-header-light-framed-vertical{padding:5px 5px 5px 5px}.x-rtl.x-panel-header-light-framed-vertical-noborder{padding:10px 5px 10px 10px}.x-panel-header-text-container-light-framed{color:#666;font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-light-framed{background:white;border-color:#dfeaf2;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-light-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-panel-light-framed-mc{background-color:white}.x-nbr .x-panel-light-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-light-framed-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-panel-light-framed-tl{background-position:0 -10px}.x-panel-light-framed-tr{background-position:right -15px}.x-panel-light-framed-bl{background-position:0 -20px}.x-panel-light-framed-br{background-position:right -25px}.x-panel-light-framed-ml{background-position:0 top}.x-panel-light-framed-mr{background-position:right top}.x-panel-light-framed-tc{background-position:0 0}.x-panel-light-framed-bc{background-position:0 -5px}.x-panel-light-framed-tr,.x-panel-light-framed-br,.x-panel-light-framed-mr{padding-right:5px}.x-panel-light-framed-tl,.x-panel-light-framed-bl,.x-panel-light-framed-ml{padding-left:5px}.x-panel-light-framed-tc{height:5px}.x-panel-light-framed-bc{height:5px}.x-panel-light-framed-tl,.x-panel-light-framed-bl,.x-panel-light-framed-tr,.x-panel-light-framed-br,.x-panel-light-framed-tc,.x-panel-light-framed-bc,.x-panel-light-framed-ml,.x-panel-light-framed-mr{zoom:1;background-image:url(images/panel/panel-light-framed-corners.gif)}.x-panel-light-framed-ml,.x-panel-light-framed-mr{zoom:1;background-image:url(images/panel/panel-light-framed-sides.gif);background-repeat:repeat-y}.x-panel-light-framed-mc{padding:0}.x-strict .x-ie7 .x-panel-light-framed-tl,.x-strict .x-ie7 .x-panel-light-framed-bl{position:relative;right:0}.x-panel-light-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-light-framed-corners.gif), sides:url(images/panel/panel-light-framed-sides.gif)"}.x-panel-header-light-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 0 5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-top-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-top-frameInfo{font-family:dh-4-4-0-0-5-5-0-5-5-5-5-5}.x-panel-header-light-framed-top-tl{background-position:0 -10px}.x-panel-header-light-framed-top-tr{background-position:right -15px}.x-panel-header-light-framed-top-bl{background-position:0 -20px}.x-panel-header-light-framed-top-br{background-position:right -25px}.x-panel-header-light-framed-top-ml{background-position:0 top}.x-panel-header-light-framed-top-mr{background-position:right top}.x-panel-header-light-framed-top-tc{background-position:0 0}.x-panel-header-light-framed-top-bc{background-position:0 -5px}.x-panel-header-light-framed-top-tr,.x-panel-header-light-framed-top-br,.x-panel-header-light-framed-top-mr{padding-right:5px}.x-panel-header-light-framed-top-tl,.x-panel-header-light-framed-top-bl,.x-panel-header-light-framed-top-ml{padding-left:5px}.x-panel-header-light-framed-top-tc{height:5px}.x-panel-header-light-framed-top-bc{height:0}.x-panel-header-light-framed-top-tl,.x-panel-header-light-framed-top-bl,.x-panel-header-light-framed-top-tr,.x-panel-header-light-framed-top-br,.x-panel-header-light-framed-top-tc,.x-panel-header-light-framed-top-bc,.x-panel-header-light-framed-top-ml,.x-panel-header-light-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-top-corners.gif)}.x-panel-header-light-framed-top-ml,.x-panel-header-light-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-top-tl,.x-strict .x-ie7 .x-panel-header-light-framed-top-bl{position:relative;right:0}.x-panel-header-light-framed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-top-sides.gif)"}.x-panel-header-light-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 0;border-style:solid;background-color:#dfeaf2}.x-rtl.x-panel-header-light-framed-right{background-image:none;background-color:#dfeaf2}.x-panel-header-light-framed-right-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-0-5-5-5-5}.x-panel-header-light-framed-right-tl{background-position:0 -10px}.x-panel-header-light-framed-right-tr{background-position:right -15px}.x-panel-header-light-framed-right-bl{background-position:0 -20px}.x-panel-header-light-framed-right-br{background-position:right -25px}.x-panel-header-light-framed-right-ml{background-position:0 right}.x-panel-header-light-framed-right-mr{background-position:right right}.x-panel-header-light-framed-right-tc{background-position:0 0}.x-panel-header-light-framed-right-bc{background-position:0 -5px}.x-panel-header-light-framed-right-tr,.x-panel-header-light-framed-right-br,.x-panel-header-light-framed-right-mr{padding-right:5px}.x-panel-header-light-framed-right-tl,.x-panel-header-light-framed-right-bl,.x-panel-header-light-framed-right-ml{padding-left:0}.x-panel-header-light-framed-right-tc{height:5px}.x-panel-header-light-framed-right-bc{height:5px}.x-panel-header-light-framed-right-tl,.x-panel-header-light-framed-right-bl,.x-panel-header-light-framed-right-tr,.x-panel-header-light-framed-right-br,.x-panel-header-light-framed-right-tc,.x-panel-header-light-framed-right-bc,.x-panel-header-light-framed-right-ml,.x-panel-header-light-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-right-corners.gif)}.x-rtl.x-panel-header-light-framed-right-tl,.x-rtl.x-panel-header-light-framed-right-ml,.x-rtl.x-panel-header-light-framed-right-bl,.x-rtl.x-panel-header-light-framed-right-tr,.x-rtl.x-panel-header-light-framed-right-mr,.x-rtl.x-panel-header-light-framed-right-br{background-image:url(images/panel-header/panel-header-light-framed-right-corners-rtl.gif)}.x-panel-header-light-framed-right-ml,.x-panel-header-light-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-right-tl,.x-strict .x-ie7 .x-panel-header-light-framed-right-bl{position:relative;right:0}.x-panel-header-light-framed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-right-sides.gif)"}.x-panel-header-light-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:0 5px 5px 5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-bottom-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-5-5-5-5-5-5-5}.x-panel-header-light-framed-bottom-tl{background-position:0 -10px}.x-panel-header-light-framed-bottom-tr{background-position:right -15px}.x-panel-header-light-framed-bottom-bl{background-position:0 -20px}.x-panel-header-light-framed-bottom-br{background-position:right -25px}.x-panel-header-light-framed-bottom-ml{background-position:0 bottom}.x-panel-header-light-framed-bottom-mr{background-position:right bottom}.x-panel-header-light-framed-bottom-tc{background-position:0 0}.x-panel-header-light-framed-bottom-bc{background-position:0 -5px}.x-panel-header-light-framed-bottom-tr,.x-panel-header-light-framed-bottom-br,.x-panel-header-light-framed-bottom-mr{padding-right:5px}.x-panel-header-light-framed-bottom-tl,.x-panel-header-light-framed-bottom-bl,.x-panel-header-light-framed-bottom-ml{padding-left:5px}.x-panel-header-light-framed-bottom-tc{height:0}.x-panel-header-light-framed-bottom-bc{height:5px}.x-panel-header-light-framed-bottom-tl,.x-panel-header-light-framed-bottom-bl,.x-panel-header-light-framed-bottom-tr,.x-panel-header-light-framed-bottom-br,.x-panel-header-light-framed-bottom-tc,.x-panel-header-light-framed-bottom-bc,.x-panel-header-light-framed-bottom-ml,.x-panel-header-light-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-bottom-corners.gif)}.x-panel-header-light-framed-bottom-ml,.x-panel-header-light-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-light-framed-bottom-bl{position:relative;right:0}.x-panel-header-light-framed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-bottom-sides.gif)"}.x-panel-header-light-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 0 5px 5px;border-style:solid;background-color:#dfeaf2}.x-rtl.x-panel-header-light-framed-left{background-image:none;background-color:#dfeaf2}.x-panel-header-light-framed-left-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-left-frameInfo{font-family:dh-4-0-0-4-5-0-5-5-5-5-5-5}.x-panel-header-light-framed-left-tl{background-position:0 -10px}.x-panel-header-light-framed-left-tr{background-position:right -15px}.x-panel-header-light-framed-left-bl{background-position:0 -20px}.x-panel-header-light-framed-left-br{background-position:right -25px}.x-panel-header-light-framed-left-ml{background-position:0 left}.x-panel-header-light-framed-left-mr{background-position:right left}.x-panel-header-light-framed-left-tc{background-position:0 0}.x-panel-header-light-framed-left-bc{background-position:0 -5px}.x-panel-header-light-framed-left-tr,.x-panel-header-light-framed-left-br,.x-panel-header-light-framed-left-mr{padding-right:0}.x-panel-header-light-framed-left-tl,.x-panel-header-light-framed-left-bl,.x-panel-header-light-framed-left-ml{padding-left:5px}.x-panel-header-light-framed-left-tc{height:5px}.x-panel-header-light-framed-left-bc{height:5px}.x-panel-header-light-framed-left-tl,.x-panel-header-light-framed-left-bl,.x-panel-header-light-framed-left-tr,.x-panel-header-light-framed-left-br,.x-panel-header-light-framed-left-tc,.x-panel-header-light-framed-left-bc,.x-panel-header-light-framed-left-ml,.x-panel-header-light-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-left-corners.gif)}.x-rtl.x-panel-header-light-framed-left-tl,.x-rtl.x-panel-header-light-framed-left-ml,.x-rtl.x-panel-header-light-framed-left-bl,.x-rtl.x-panel-header-light-framed-left-tr,.x-rtl.x-panel-header-light-framed-left-mr,.x-rtl.x-panel-header-light-framed-left-br{background-image:url(images/panel-header/panel-header-light-framed-left-corners-rtl.gif)}.x-panel-header-light-framed-left-ml,.x-panel-header-light-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-left-tl,.x-strict .x-ie7 .x-panel-header-light-framed-left-bl{position:relative;right:0}.x-panel-header-light-framed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-left-sides.gif)"}.x-panel-header-light-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-top-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-top-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-top-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-top-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-top-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-light-framed-collapsed-top-mr{background-position:right top}.x-panel-header-light-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-top-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-top-tr,.x-panel-header-light-framed-collapsed-top-br,.x-panel-header-light-framed-collapsed-top-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-top-tl,.x-panel-header-light-framed-collapsed-top-bl,.x-panel-header-light-framed-collapsed-top-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-top-tc{height:5px}.x-panel-header-light-framed-collapsed-top-bc{height:5px}.x-panel-header-light-framed-collapsed-top-tl,.x-panel-header-light-framed-collapsed-top-bl,.x-panel-header-light-framed-collapsed-top-tr,.x-panel-header-light-framed-collapsed-top-br,.x-panel-header-light-framed-collapsed-top-tc,.x-panel-header-light-framed-collapsed-top-bc,.x-panel-header-light-framed-collapsed-top-ml,.x-panel-header-light-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif)}.x-panel-header-light-framed-collapsed-top-ml,.x-panel-header-light-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif)"}.x-panel-header-light-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-rtl.x-panel-header-light-framed-collapsed-right{background-image:none;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-right-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-right-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-right-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-right-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-right-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-right-ml{background-position:0 right}.x-panel-header-light-framed-collapsed-right-mr{background-position:right right}.x-panel-header-light-framed-collapsed-right-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-right-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-right-tr,.x-panel-header-light-framed-collapsed-right-br,.x-panel-header-light-framed-collapsed-right-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-right-tl,.x-panel-header-light-framed-collapsed-right-bl,.x-panel-header-light-framed-collapsed-right-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-right-tc{height:5px}.x-panel-header-light-framed-collapsed-right-bc{height:5px}.x-panel-header-light-framed-collapsed-right-tl,.x-panel-header-light-framed-collapsed-right-bl,.x-panel-header-light-framed-collapsed-right-tr,.x-panel-header-light-framed-collapsed-right-br,.x-panel-header-light-framed-collapsed-right-tc,.x-panel-header-light-framed-collapsed-right-bc,.x-panel-header-light-framed-collapsed-right-ml,.x-panel-header-light-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-light-framed-collapsed-right-tl,.x-rtl.x-panel-header-light-framed-collapsed-right-ml,.x-rtl.x-panel-header-light-framed-collapsed-right-bl,.x-rtl.x-panel-header-light-framed-collapsed-right-tr,.x-rtl.x-panel-header-light-framed-collapsed-right-mr,.x-rtl.x-panel-header-light-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-light-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-light-framed-collapsed-right-ml,.x-panel-header-light-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif)"}.x-panel-header-light-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-bottom-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-bottom-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-bottom-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-bottom-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-bottom-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-light-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-light-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-bottom-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-bottom-tr,.x-panel-header-light-framed-collapsed-bottom-br,.x-panel-header-light-framed-collapsed-bottom-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-bottom-tl,.x-panel-header-light-framed-collapsed-bottom-bl,.x-panel-header-light-framed-collapsed-bottom-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-bottom-tc{height:5px}.x-panel-header-light-framed-collapsed-bottom-bc{height:5px}.x-panel-header-light-framed-collapsed-bottom-tl,.x-panel-header-light-framed-collapsed-bottom-bl,.x-panel-header-light-framed-collapsed-bottom-tr,.x-panel-header-light-framed-collapsed-bottom-br,.x-panel-header-light-framed-collapsed-bottom-tc,.x-panel-header-light-framed-collapsed-bottom-bc,.x-panel-header-light-framed-collapsed-bottom-ml,.x-panel-header-light-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif)}.x-panel-header-light-framed-collapsed-bottom-ml,.x-panel-header-light-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif)"}.x-panel-header-light-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-rtl.x-panel-header-light-framed-collapsed-left{background-image:none;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-left-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-left-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-left-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-left-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-left-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-left-ml{background-position:0 left}.x-panel-header-light-framed-collapsed-left-mr{background-position:right left}.x-panel-header-light-framed-collapsed-left-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-left-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-left-tr,.x-panel-header-light-framed-collapsed-left-br,.x-panel-header-light-framed-collapsed-left-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-left-tl,.x-panel-header-light-framed-collapsed-left-bl,.x-panel-header-light-framed-collapsed-left-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-left-tc{height:5px}.x-panel-header-light-framed-collapsed-left-bc{height:5px}.x-panel-header-light-framed-collapsed-left-tl,.x-panel-header-light-framed-collapsed-left-bl,.x-panel-header-light-framed-collapsed-left-tr,.x-panel-header-light-framed-collapsed-left-br,.x-panel-header-light-framed-collapsed-left-tc,.x-panel-header-light-framed-collapsed-left-bc,.x-panel-header-light-framed-collapsed-left-ml,.x-panel-header-light-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-light-framed-collapsed-left-tl,.x-rtl.x-panel-header-light-framed-collapsed-left-ml,.x-rtl.x-panel-header-light-framed-collapsed-left-bl,.x-rtl.x-panel-header-light-framed-collapsed-left-tr,.x-rtl.x-panel-header-light-framed-collapsed-left-mr,.x-rtl.x-panel-header-light-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-light-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-light-framed-collapsed-left-ml,.x-panel-header-light-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-light-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-light-framed-top{border-bottom-width:5px!important}.x-panel .x-panel-header-light-framed-right{border-left-width:5px!important}.x-panel .x-panel-header-light-framed-bottom{border-top-width:5px!important}.x-panel .x-panel-header-light-framed-left{border-right-width:5px!important}.x-nbr .x-panel-header-light-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-left{border-right-width:0!important}.x-panel-header-light-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-light-framed-vertical .x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-light-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-light-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-light-framed .x-panel-header-glyph{color:#eff4f8}.x-panel-header-light-framed-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-light-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 6px}.x-panel-header-light-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-light-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 6px 0 0}.x-panel-header-light-framed-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-framed-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-light-framed-horizontal .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-panel-header-light-framed-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-light-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-panel-header-light-framed-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-vertical .x-rtl.x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-header-light-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 6px 0}.x-rtl.x-panel-header-light-framed-collapsed-border-right{border-right-width:5px!important}.x-rtl.x-panel-header-light-framed-collapsed-border-left{border-left-width:5px!important}.x-panel-light-framed-resizable{overflow:visible}.x-panel-light-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-light-framed-resizable .x-panel-handle-north-br{top:-5px}.x-panel-light-framed-resizable .x-panel-handle-south-br{bottom:-5px}.x-panel-light-framed-resizable .x-panel-handle-east-br{right:-5px}.x-panel-light-framed-resizable .x-panel-handle-west-br{left:-5px}.x-panel-light-framed-resizable .x-panel-handle-northwest-br{left:-5px;top:-5px}.x-panel-light-framed-resizable .x-panel-handle-northeast-br{right:-5px;top:-5px}.x-panel-light-framed-resizable .x-panel-handle-southeast-br{right:-5px;bottom:-5px}.x-panel-light-framed-resizable .x-panel-handle-southwest-br{left:-5px;bottom:-5px}.x-panel-light-framed-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-framed-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-light-framed-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-framed-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-form-trigger{height:22px}.x-form-trigger-wrap{border:1px solid;border-color:silver #d9d9d9 #d9d9d9}.x-form-trigger-wrap .x-form-text{border-width:0;height:22px}.x-content-box .x-form-trigger-wrap .x-form-text{height:15px}.x-form-trigger-wrap-focus .x-form-trigger-wrap{border-color:#3892d3}.x-form-invalid .x-form-trigger-wrap{border-color:#cf4c35}.x-form-file-wrap .x-form-trigger-wrap{border:0}.x-form-file-wrap .x-form-trigger-wrap .x-form-text{border:1px solid;border-color:silver #d9d9d9 #d9d9d9;height:24px}.x-content-box .x-form-file-wrap .x-form-trigger-wrap .x-form-text{height:15px}.x-html-editor-container{border:1px solid;border-color:silver #d9d9d9 #d9d9d9}.x-grid-header-ct{border:1px solid silver}.x-column-header-trigger{background-image:url(images/grid/hd-pop.png);border-left:1px solid silver}.x-rtl.x-column-header-trigger{border-right:1px solid silver;border-left:0}.x-column-header-last{border-right:0}.x-column-header-last .x-column-header-over .x-column-header-trigger{border-right:1px solid silver}.x-column-header-last{border-right:0 none}.x-rtl.x-column-header-last{border-left:0}.x-rtl.x-column-header-last .x-column-header-over .x-column-header-trigger{border-left:1px solid silver}.x-accordion-hd .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png)}.x-accordion-item .x-accordion-hd-over{background-color:#e6f1f9}.x-resizable-handle{background-color:#157fcc;background-repeat:no-repeat}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:center}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:center}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:-2px -2px}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:2px 2px}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:-2px 2px}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:2px -2px}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all.css
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all.css	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/resources/ext-theme-neptune/ext-theme-neptune-all.css	(revision 18732)
@@ -0,0 +1,1 @@
+.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-btn-inner-right{text-align:right}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 12px helvetica,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.png)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.png)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.png)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-left{text-align:left}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp{margin:2px}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-tab-bar-strip-right{left:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:13px;font-family:helvetica,arial,verdana,sans-serif;background:#f5f5f5}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=70);opacity:.7;background:white}.x-mask-msg{padding:8px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background-image:none;background-color:#e5e5e5}.x-mask-msg-inner{padding:0;background-color:transparent;color:#666;font:normal 13px helvetica,arial,verdana,sans-serif}.x-mask-msg-text{padding:21px 0 0;background-image:url(images/loadmask/loading.gif);background-repeat:no-repeat;background-position:center 0}.x-progress-default{background-color:#f5f5f5;border-width:0;height:20px;border-color:#157fcc}.x-content-box .x-progress-default{height:20px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#c1ddf1}.x-progress-default .x-progress-text{color:#666;font-weight:bold;font-size:13px;text-align:center;line-height:20px}.x-progress-default .x-progress-text-back{color:#666;line-height:20px}.x-btn-default-small{border-color:#126daf}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 5px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/default-small-arrow.png)}.x-btn-default-small .x-btn-arrow-right{padding-right:21px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:white;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#9bc8e9}.x-btn-default-small-disabled{border-color:#157fcc}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-small-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/default-small-s-arrow.png);padding-right:23px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/default-small-s-arrow-b.png);padding-bottom:20px}.x-btn-default-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#126daf}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:14px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 8px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/default-medium-arrow.png)}.x-btn-default-medium .x-btn-arrow-right{padding-right:30px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:26px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:white;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#9bc8e9}.x-btn-default-medium-disabled{border-color:#157fcc}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:29px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:29px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:29px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:29px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-medium-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/default-medium-s-arrow.png);padding-right:32px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/default-medium-s-arrow-b.png);padding-bottom:28px}.x-btn-default-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#126daf}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#3892d3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4b9cd7),color-stop(50%,#3892d3),color-stop(51%,#358ac8),color-stop(100%,#3892d3));background-image:-webkit-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-moz-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:-o-linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3);background-image:linear-gradient(top,#4b9cd7,#3892d3 50%,#358ac8 51%,#3892d3)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:#3892d3}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:16px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;padding:0 10px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/default-large-arrow.png)}.x-btn-default-large .x-btn-arrow-right{padding-right:36px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:32px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:white;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#9bc8e9}.x-btn-default-large-disabled{border-color:#157fcc}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:37px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:37px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:37px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:37px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-large-focus{border-color:#157fcc;background-image:none;background-color:#3386c2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4792c8),color-stop(50%,#3386c2),color-stop(51%,#307fb8),color-stop(100%,#3386c2));background-image:-webkit-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-moz-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:-o-linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2);background-image:linear-gradient(top,#4792c8,#3386c2 50%,#307fb8 51%,#3386c2)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#157fcc;background-image:none;background-color:#2a6d9e;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a6d9e),color-stop(50%,#276796),color-stop(51%,#2a6d9e),color-stop(100%,#3f7ba7));background-image:-webkit-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-moz-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:-o-linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7);background-image:linear-gradient(top,#2a6d9e,#276796 50%,#2a6d9e 51%,#3f7ba7)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#3386c2;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#2a6d9e;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:null;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/default-large-s-arrow.png);padding-right:38px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/default-large-s-arrow-b.png);padding-bottom:34px}.x-btn-default-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:#e1e1e1}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-small-mc{background-image:url(images/btn/btn-default-toolbar-small-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-small{background-image:url(images/btn/btn-default-toolbar-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-small-corners.gif)}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-small-sides.gif)}.x-btn-default-toolbar-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-small-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-bg.gif), corners:url(images/btn/btn-default-toolbar-small-corners.gif), sides:url(images/btn/btn-default-toolbar-small-sides.gif)"}.x-btn-default-toolbar-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 5px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/default-toolbar-small-arrow.png)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:21px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-small-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-small-disabled{background-image:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/default-toolbar-small-s-arrow.png);padding-right:23px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/default-toolbar-small-s-arrow-b.png);padding-bottom:20px}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-disabled-bg.gif)"}.x-btn-default-toolbar-medium{border-color:#e1e1e1}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-medium-mc{background-image:url(images/btn/btn-default-toolbar-medium-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-medium{background-image:url(images/btn/btn-default-toolbar-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-medium-corners.gif)}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-medium-sides.gif)}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-medium-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-bg.gif), corners:url(images/btn/btn-default-toolbar-medium-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-sides.gif)"}.x-btn-default-toolbar-medium .x-btn-inner{font-size:14px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 8px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/default-toolbar-medium-arrow.png)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:30px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:26px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:29px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:29px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:29px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:29px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-medium-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-disabled{background-image:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/default-toolbar-medium-s-arrow.png);padding-right:32px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/default-toolbar-medium-s-arrow-b.png);padding-bottom:28px}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-disabled-bg.gif)"}.x-btn-default-toolbar-large{border-color:#e1e1e1}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-large-mc{background-image:url(images/btn/btn-default-toolbar-large-fbg.gif);background-position:0 top;background-color:#f5f5f5}.x-nlg .x-btn-default-toolbar-large{background-image:url(images/btn/btn-default-toolbar-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-large-corners.gif)}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1;background-image:url(images/btn/btn-default-toolbar-large-sides.gif)}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-toolbar-large-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-bg.gif), corners:url(images/btn/btn-default-toolbar-large-corners.gif), sides:url(images/btn/btn-default-toolbar-large-sides.gif)"}.x-btn-default-toolbar-large .x-btn-inner{font-size:16px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 10px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/default-toolbar-large-arrow.png)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:36px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:32px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#666;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#adadad}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:#f5f5f5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(50%,#f5f5f5),color-stop(51%,#e8e8e8),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-moz-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:-o-linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5);background-image:linear-gradient(top,#f6f6f6,#f5f5f5 50%,#e8e8e8 51%,#f5f5f5)}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:37px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:37px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:37px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:37px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-large-focus{background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:#f5f5f5;background-image:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif)}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nlg .x-btn-default-toolbar-large-disabled{background-image:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/default-toolbar-large-s-arrow.png);padding-right:38px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/default-toolbar-large-s-arrow-b.png);padding-bottom:34px}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-disabled-bg.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:13px;border-style:solid;padding:6px 0 6px 8px}.x-toolbar-item{margin:0 8px 0 0}.x-toolbar-text{margin:0 6px 0 4px;color:#333f49;line-height:16px;font-family:helvetica,arial,verdana,sans-serif;font-size:12px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 8px 0 0;height:14px;border-style:solid;border-width:0 0 0 1px;border-left-color:#e1e1e1;border-right-color:white}.x-toolbar-footer{background:#dfeaf2;border:0;margin:0;padding:6px 0 6px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.png)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:silver;border-width:1px;background-image:none;background-color:white}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{cursor:default}.x-toolbar-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:white}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.png);background-position:0 0;width:16px;height:16px;border-style:solid;border-color:#8db2e3;border-width:0;margin-top:4px}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.png);width:16px;height:16px;border-style:solid;border-color:#8db2e3;border-width:0;margin-top:4px}.x-toolbar-scroll-right-hover{background-position:-16px 0}.x-toolbar .x-box-menu-after{margin:0 8px 0 8px}.x-toolbar-vertical{padding:6px 8px 0 8px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 6px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 6px;border-style:solid none;border-width:1px 0 0;border-top-color:#e1e1e1;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:6px 0 6px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=50);opacity:.5}.x-panel-default{border-color:#157fcc;padding:0}.x-panel-header-default{font-size:13px;border:1px solid #157fcc}.x-panel-header-default .x-tool-img{background-color:#157fcc}.x-panel-header-default-horizontal{padding:9px 9px 10px 9px}.x-panel-header-default-horizontal-noborder{padding:10px 10px 10px 10px}.x-panel-header-default-vertical{padding:9px 9px 9px 10px}.x-panel-header-default-vertical-noborder{padding:10px 10px 10px 10px}.x-panel-header-text-container-default{color:white;font-size:13px;font-weight:bold;font-family:arial,helvetica,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-default{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#157fcc}.x-panel-header-default-vertical{background-image:none;background-color:#157fcc}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#8abfe5}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-default-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-default-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-panel-default-framed{border-color:#157fcc;padding:0}.x-panel-header-default-framed{font-size:13px;border:5px solid #157fcc}.x-panel-header-default-framed .x-tool-img{background-color:#157fcc}.x-panel-header-default-framed-horizontal{padding:5px}.x-panel-header-default-framed-horizontal-noborder{padding:10px 10px 5px 10px}.x-panel-header-default-framed-vertical{padding:5px 5px 5px 5px}.x-panel-header-default-framed-vertical-noborder{padding:10px 10px 10px 5px}.x-panel-header-text-container-default-framed{color:white;font-size:13px;font-weight:bold;font-family:arial,helvetica,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-default-framed{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-panel-default-framed-mc{background-color:white}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-panel-default-framed-tl{background-position:0 -10px}.x-panel-default-framed-tr{background-position:right -15px}.x-panel-default-framed-bl{background-position:0 -20px}.x-panel-default-framed-br{background-position:right -25px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -5px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:5px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:5px}.x-panel-default-framed-tc{height:5px}.x-panel-default-framed-bc{height:5px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:0}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 0 5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-top-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-5-5-0-5-5-5-5-5}.x-panel-header-default-framed-top-tl{background-position:0 -10px}.x-panel-header-default-framed-top-tr{background-position:right -15px}.x-panel-header-default-framed-top-bl{background-position:0 -20px}.x-panel-header-default-framed-top-br{background-position:right -25px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -5px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:5px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:5px}.x-panel-header-default-framed-top-tc{height:5px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 0;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-right-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-0-5-5-5-5}.x-panel-header-default-framed-right-tl{background-position:0 -10px}.x-panel-header-default-framed-right-tr{background-position:right -15px}.x-panel-header-default-framed-right-bl{background-position:0 -20px}.x-panel-header-default-framed-right-br{background-position:right -25px}.x-panel-header-default-framed-right-ml{background-position:0 right}.x-panel-header-default-framed-right-mr{background-position:right right}.x-panel-header-default-framed-right-tc{background-position:0 0}.x-panel-header-default-framed-right-bc{background-position:0 -5px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:5px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:5px}.x-panel-header-default-framed-right-bc{height:5px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:0 5px 5px 5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-bottom-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-5-5-5-5-5-5-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -10px}.x-panel-header-default-framed-bottom-tr{background-position:right -15px}.x-panel-header-default-framed-bottom-bl{background-position:0 -20px}.x-panel-header-default-framed-bottom-br{background-position:right -25px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -5px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:5px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:5px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:5px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 0 5px 5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-left-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dh-4-0-0-4-5-0-5-5-5-5-5-5}.x-panel-header-default-framed-left-tl{background-position:0 -10px}.x-panel-header-default-framed-left-tr{background-position:right -15px}.x-panel-header-default-framed-left-bl{background-position:0 -20px}.x-panel-header-default-framed-left-br{background-position:right -25px}.x-panel-header-default-framed-left-ml{background-position:0 left}.x-panel-header-default-framed-left-mr{background-position:right left}.x-panel-header-default-framed-left-tc{background-position:0 0}.x-panel-header-default-framed-left-bc{background-position:0 -5px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:5px}.x-panel-header-default-framed-left-tc{height:5px}.x-panel-header-default-framed-left-bc{height:5px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-top-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-top-tc{height:5px}.x-panel-header-default-framed-collapsed-top-bc{height:5px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-right-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-right-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-right-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-right-ml{background-position:0 right}.x-panel-header-default-framed-collapsed-right-mr{background-position:right right}.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-right-tc{height:5px}.x-panel-header-default-framed-collapsed-right-bc{height:5px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-bottom-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-bottom-tc{height:5px}.x-panel-header-default-framed-collapsed-bottom-bc{height:5px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#157fcc}.x-panel-header-default-framed-collapsed-left-mc{background-color:#157fcc}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 -10px}.x-panel-header-default-framed-collapsed-left-tr{background-position:right -15px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -20px}.x-panel-header-default-framed-collapsed-left-br{background-position:right -25px}.x-panel-header-default-framed-collapsed-left-ml{background-position:0 left}.x-panel-header-default-framed-collapsed-left-mr{background-position:right left}.x-panel-header-default-framed-collapsed-left-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:0 -5px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:5px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:5px}.x-panel-header-default-framed-collapsed-left-tc{height:5px}.x-panel-header-default-framed-collapsed-left-bc{height:5px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-default-framed-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:5px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:5px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:5px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:5px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#157fcc;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#157fcc)}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#8abfe5}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-default-framed-resizable{overflow:visible}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed-resizable .x-panel-handle-north-br{top:-5px}.x-panel-default-framed-resizable .x-panel-handle-south-br{bottom:-5px}.x-panel-default-framed-resizable .x-panel-handle-east-br{right:-5px}.x-panel-default-framed-resizable .x-panel-handle-west-br{left:-5px}.x-panel-default-framed-resizable .x-panel-handle-northwest-br{left:-5px;top:-5px}.x-panel-default-framed-resizable .x-panel-handle-northeast-br{right:-5px;top:-5px}.x-panel-default-framed-resizable .x-panel-handle-southeast-br{right:-5px;bottom:-5px}.x-panel-default-framed-resizable .x-panel-handle-southwest-br{left:-5px;bottom:-5px}.x-panel-default-framed-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-framed-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-default-framed-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-default-framed-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-default-framed-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-default-framed-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#e1e1e1;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#eaf3fa}.x-tip-default-mc{background-color:#eaf3fa}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#e1e1e1}.x-tip-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#eaf3fa}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:black;font-size:13px;font-weight:bold}.x-tip-body-default{padding:3px;color:black;font-size:13px;font-weight:normal}.x-tip-body-default a{color:black}.x-tip-form-invalid{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#eaf3fa}.x-tip-form-invalid-mc{background-color:#eaf3fa}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-form-invalid-tl{background-position:0 -6px}.x-tip-form-invalid-tr{background-position:right -9px}.x-tip-form-invalid-bl{background-position:0 -12px}.x-tip-form-invalid-br{background-position:right -15px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -3px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:3px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:3px}.x-tip-form-invalid-tc{height:3px}.x-tip-form-invalid-bc{height:3px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#e1e1e1}.x-tip-form-invalid .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#eaf3fa}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:black;font-size:13px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:black;font-size:13px;font-weight:normal}.x-tip-body-form-invalid a{color:black}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.png)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#dfeaf2;-webkit-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-btn-group-header-default{padding:4px 5px;line-height:16px;background:#dfeaf2;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-btn-group-header-text-container-default{font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;color:#666}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:5px}.x-btn-group-default-framed{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:0 1px 0 1px;border-width:3px;border-style:solid;background-color:white}.x-btn-group-default-framed-mc{background-color:white}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-3-3-3-3-3-3-3-3-0-1-0-1}.x-btn-group-default-framed-tl{background-position:0 -6px}.x-btn-group-default-framed-tr{background-position:right -9px}.x-btn-group-default-framed-bl{background-position:0 -12px}.x-btn-group-default-framed-br{background-position:right -15px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -3px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:3px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:3px}.x-btn-group-default-framed-tc{height:3px}.x-btn-group-default-framed-bc{height:3px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:0 1px 0 1px;border-width:3px;border-style:solid;background-color:white}.x-btn-group-default-framed-notitle-mc{background-color:white}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-3-3-3-3-3-3-3-3-0-1-0-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -6px}.x-btn-group-default-framed-notitle-tr{background-position:right -9px}.x-btn-group-default-framed-notitle-bl{background-position:0 -12px}.x-btn-group-default-framed-notitle-br{background-position:right -15px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -3px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:3px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:3px}.x-btn-group-default-framed-notitle-tc{height:3px}.x-btn-group-default-framed-notitle-bc{height:3px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#dfeaf2;-webkit-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-btn-group-header-default-framed{padding:4px 5px;line-height:16px;background:#dfeaf2;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.x-btn-group-header-default-framed .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-btn-group-header-text-container-default-framed{font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;color:#666}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:5px}.x-window-ghost{filter:alpha(opacity=50);opacity:.5}.x-window-default{border-color:#3892d3;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.x-window-default{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-window-default-mc{background-color:white}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#3892d3;border-width:1px;border-style:solid;background:white;color:black}.x-window-header-default{font-size:13px;border-color:#3892d3;zoom:1;background-color:#3892d3}.x-window-header-default .x-tool-img{background-color:#3892d3}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#3892d3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#3892d3)}.x-window-header-text-container-default{color:white;font-weight:bold;line-height:15px;font-family:arial,helvetica,verdana,sans-serif;font-size:13px;padding:1px 0 0;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-top-mc{background-color:#3892d3}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-4-4-0-0-5-5-5-5-5-5-5-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-right-mc{background-color:#3892d3}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-5-5-5-5-5}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:5px}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-bottom-mc{background-color:#3892d3}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:5px}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 5px 5px 5px;border-style:solid;background-color:#3892d3}.x-window-header-default-left-mc{background-color:#3892d3}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-4-0-0-4-5-5-5-5-5-5-5-5}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-top-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-right-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-bottom-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#3892d3}.x-window-header-default-collapsed-left-mc{background-color:#3892d3}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:white;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#9bc8e9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 6px 0 0}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 6px}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 6px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:6px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-window-header-default-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-window-header-default-vertical .x-tool-after-title{margin:6px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 6px 0}.x-window-header-default{border-width:5px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-window-default-resizable{overflow:visible}.x-window-default-resizable .x-window-handle-north-br{top:-5px}.x-window-default-resizable .x-window-handle-south-br{bottom:-5px}.x-window-default-resizable .x-window-handle-east-br{right:-5px}.x-window-default-resizable .x-window-handle-west-br{left:-5px}.x-window-default-resizable .x-window-handle-northwest-br{left:-5px;top:-5px}.x-window-default-resizable .x-window-handle-northeast-br{right:-5px;top:-5px}.x-window-default-resizable .x-window-handle-southeast-br{right:-5px;bottom:-5px}.x-window-default-resizable .x-window-handle-southwest-br{left:-5px;bottom:-5px}.x-window-default-outer-border-l{border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-b{border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-bl{border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-r{border-right-color:#3892d3!important;border-right-width:1px!important}.x-window-default-outer-border-rl{border-right-color:#3892d3!important;border-right-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-rb{border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-rbl{border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-t{border-top-color:#3892d3!important;border-top-width:1px!important}.x-window-default-outer-border-tl{border-top-color:#3892d3!important;border-top-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-tb{border-top-color:#3892d3!important;border-top-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-tbl{border-top-color:#3892d3!important;border-top-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-tr{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important}.x-window-default-outer-border-trl{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important;border-left-color:#3892d3!important;border-left-width:1px!important}.x-window-default-outer-border-trb{border-top-color:#3892d3!important;border-top-width:1px!important;border-right-color:#3892d3!important;border-right-width:1px!important;border-bottom-color:#3892d3!important;border-bottom-width:1px!important}.x-window-default-outer-border-trbl{border-color:#3892d3!important;border-width:1px!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#cf4c35;font:normal 13px helvetica,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.png)}div.x-lbl-top-err-icon{margin-bottom:4px}.x-form-invalid-icon{width:16px;height:16px;margin:0 5px;background-image:url(images/form/exclamation.png);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 13px/17px helvetica,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 13px helvetica,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;border-color:#cf4c35}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:4px 6px 3px 6px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:silver #d9d9d9 #d9d9d9;height:24px;line-height:15px}.x-content-box .x-form-text{height:15px}.x-form-focus{border-color:#3892d3}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto}.x-form-display-field-body{height:24px}.x-form-display-field{font:normal 13px/17px helvetica,arial,verdana,sans-serif;color:black;margin-top:4px}.x-message-box .x-window-body{background-color:white;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-message-box-info{background-image:url(images/shared/icon-info.png)}.x-message-box-warning{background-image:url(images/shared/icon-warning.png)}.x-message-box-question{background-image:url(images/shared/icon-question.png)}.x-message-box-error{background-image:url(images/shared/icon-error.png)}.x-form-cb-wrap{height:24px}.x-form-cb{margin-top:5px}.x-form-checkbox{width:15px;height:15px;background:url(images/form/checkbox.png) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -15px}.x-form-checkbox-focus{background-position:-15px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-15px -15px}.x-form-cb-label{margin-top:4px;font:normal 13px/17px helvetica,arial,verdana,sans-serif}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #cf4c35}.x-check-group-alt{background:#f5f5f5;border-top:1px dotted #f5f5f5;border-bottom:1px dotted #f5f5f5}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:16px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header-text{font:12px/16px bold helvetica,arial,verdana,sans-serif;color:black;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-image:url(images/fieldset/collapse-tool.png);background-position:0 0}.x-fieldset .x-tool-over .x-tool-toggle{background-position:0 -15px}.x-fieldset-collapsed .x-tool-toggle{background-position:-15px 0}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -15px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:15px;height:15px;background:url(images/form/radio.png) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -15px}.x-form-radio-focus{background-position:-15px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-15px -15px}.x-form-trigger{background:url(images/form/trigger.png);width:22px}.x-trigger-cell{background-color:white;width:22px}.x-form-trigger-over{background-position:-22px 0}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-66px 0}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-88px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-44px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.png)}.x-form-search-trigger{background-image:url(images/form/search-trigger.png)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:24px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:24px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.png);background-color:white;width:22px;height:11px}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-66px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-22px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-88px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-44px -11px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.png)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.png)}.x-tbar-page-next{background-image:url(images/grid/page-next.png)}.x-tbar-page-last{background-image:url(images/grid/page-last.png)}.x-tbar-loading{background-image:url(images/grid/refresh.png)}.x-boundlist{border-width:1px;border-style:solid;border-color:#e1e1e1;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 6px;line-height:22px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#c1ddf1;border-color:#c1ddf1}.x-boundlist-item-over{background:#d6e8f6;border-color:#d6e8f6}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#e1e1e1;background-color:white;width:212px}.x-datepicker-header{padding:4px 6px;text-align:center;background-image:none;background-color:#f5f5f5}.x-datepicker-arrow{width:12px;height:12px;top:9px;cursor:pointer;background-color:#f5f5f5;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/datepicker/arrow-right.png)}.x-datepicker-prev{left:6px;background-image:url(images/datepicker/arrow-left.png)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:#3892d3}.x-datepicker-month .x-btn-split-right{background-image:url(images/datepicker/month-arrow.png);padding-right:8px}.x-datepicker-column-header{width:30px;color:black;font:bold 13px helvetica,arial,verdana,sans-serif;text-align:right;background-image:none;background-color:white}.x-datepicker-column-header-inner{line-height:25px;padding:0 9px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 7px 0 0;font:normal 13px helvetica,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:23px}a.x-datepicker-date:hover{color:black;background-color:#eaf3fa}.x-datepicker-selected{border-style:solid;border-color:#3892d3}.x-datepicker-selected .x-datepicker-date{background-color:#d6e8f6;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#bfbfbf}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:gray}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:3px 0;background-image:none;background-color:#f5f5f5;text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 3px 0 2px}.x-monthpicker{width:212px;border-width:1px;border-style:solid;border-color:#e1e1e1;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#e1e1e1;border-style:solid;width:105px}.x-monthpicker-months .x-monthpicker-item{width:52px}.x-monthpicker-years{width:105px}.x-monthpicker-years .x-monthpicker-item{width:52px}.x-monthpicker-item{margin:5px 0 5px;font:normal 13px helvetica,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:black;border-width:1px;border-style:solid;border-color:white;line-height:22px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#eaf3fa}.x-monthpicker-selected{background-color:#d6e8f6;border-style:solid;border-color:#3892d3}.x-monthpicker-yearnav{height:34px}.x-monthpicker-yearnav-button-ct{width:52px}.x-monthpicker-yearnav-button{height:12px;width:12px;cursor:pointer;margin-top:11px;filter:alpha(opacity=70);opacity:.7;background-color:white}a.x-monthpicker-yearnav-button:hover{filter:alpha(opacity=100);opacity:1}.x-monthpicker-yearnav-next{background-image:url(images/datepicker/arrow-right.png);background-position:0 0}.x-monthpicker-yearnav-next-over{background-position:0 0}.x-monthpicker-yearnav-prev{background-image:url(images/datepicker/arrow-left.png);background-position:0 0}.x-monthpicker-yearnav-prev-over{background-position:0 0}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:28px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:8px}.x-form-date-trigger{background-image:url(images/form/date-trigger.png)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:192px;height:120px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:24px;height:24px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:18px;height:18px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#e6e6e6}.x-color-picker-selected{border-color:#8bb8f3;background-color:#e6e6e6}.x-color-picker-item-inner{line-height:16px;border-color:#e1e1e1;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/editor/tb-sprite.png)}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-font-select{font-size:13px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 13px helvetica,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:silver}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 13px helvetica,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 13px/15px helvetica,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-before-selected .x-grid-td{border-bottom-style:solid;border-bottom-color:#c1ddf1}.x-grid-row-selected .x-grid-td{border-bottom-style:solid;border-bottom-color:#c1ddf1}.x-grid-row-before-focused .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-row-focused .x-grid-td{background-color:#e2eff8}.x-grid-row-over .x-grid-td{background-color:#e2eff8}.x-grid-row-selected .x-grid-td{background-color:#c1ddf1}.x-grid-row-focused .x-grid-td{border-bottom-style:solid;border-bottom-color:#e2eff8}.x-grid-with-row-lines .x-grid-row-focused-first .x-grid-td{border-top:1px solid #e2eff8}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#c1ddf1;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#e2eff8;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#e2eff8}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:solid;border-top-color:#c1ddf1}.x-grid-with-row-lines .x-grid-table-focused-first{border-top-style:solid;border-top-color:#e2eff8}.x-grid-cell-inner{text-overflow:ellipsis;padding:5px 10px 4px 10px}.x-grid-cell-special{border-color:#ededed;border-style:solid;border-right-width:1px 0}.x-grid-dirty-cell{background:url(images/grid/dirty.png) no-repeat 0 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#c1ddf1}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.png)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.png)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.png)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.png)}.x-grid-header-ct{border:1px solid #157fcc;border-bottom-color:#f5f5f5;background-color:#f5f5f5}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:silver}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.png)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.png)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.png)}.x-column-header{border-right:1px solid silver;color:#666;font:bold 13px/15px helvetica,arial,verdana,sans-serif;background-color:#f5f5f5}.x-group-sub-header{background:transparent;border-top:1px solid silver}.x-group-sub-header .x-column-header-inner{padding:6px 10px 7px 10px}.x-column-header-inner{padding:7px 10px 7px 10px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#eef6fb}.x-column-header-open{background-color:#eef6fb}.x-column-header-open .x-column-header-trigger{background-color:#dfeaf2}.x-column-header-trigger{width:18px;cursor:pointer;background-color:transparent;background-position:center center}.x-column-header-align-right .x-column-header-text{margin-right:12px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:17px;background-position:right center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.png)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.png)}.x-grid-cell-inner-action-col{padding:4px 4px 4px 4px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:5px 10px 4px 10px}.x-grid-checkcolumn{width:15px;height:15px;background:url(images/form/checkbox.png) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -15px}.x-grid-cell-inner-row-numberer{padding:5px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 1px 0;border-style:solid;border-color:silver;padding:8px 4px 8px 4px;background:#f5f5f5;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.png);padding:0 0 0 17px}.x-grid-group-title{color:#666;font:bold 13px/15px helvetica,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.png)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.png)}.x-group-by-icon{background-image:url(images/grid/group-by.png)}.x-show-groups-icon{background-image:url(images/grid/group-by.png)}.x-grid-rowbody{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:5px 10px 5px 10px}.x-grid-rowwrap{border-color:#ededed;border-style:solid}.x-summary-bottom{border-bottom-color:#f5f5f5}.x-docked-summary{border-width:1px;border-color:#157fcc;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed;background-color:transparent!important;border-top-width:0;font:normal 13px/15px helvetica,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.png)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.png)}.x-grid-editor .x-form-text{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:4px 9px 3px 9px}.x-gecko .x-grid-editor .x-form-text{padding-left:8px;padding-right:8px}.x-grid-editor .x-form-display-field-body{height:24px}.x-grid-editor .x-form-display-field{font:normal 13px/15px helvetica,arial,verdana,sans-serif;padding:5px 10px 4px 10px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:4px 4px 4px 4px}.x-tree-cell-editor .x-form-text{padding-left:3px;padding-right:3px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-grid-row-editor .x-field{margin:0 3px 0 2px}.x-grid-row-editor .x-form-display-field{padding:5px 7px 4px 8px}.x-grid-row-editor .x-form-action-col-field{padding:4px 1px 4px 2px}.x-grid-row-editor .x-form-text{padding:4px 6px 3px 7px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:6px;padding-right:5px}.x-grid-row-editor .x-panel-body{border-top:1px solid #e1e1e1!important;border-bottom:1px solid #e1e1e1!important;padding:5px 0 5px 0;background-color:#dfeaf2}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 5px 5px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#dfeaf2}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#dfeaf2}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-5-5-5-5}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:5px 1px 1px 1px}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#dfeaf2}.x-grid-row-editor-buttons-default-top-mc{background-color:#dfeaf2}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-5-5-5-5}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:1px 1px 5px 1px}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:35px}.x-grid-row-editor-buttons-default-top{bottom:35px}.x-grid-row-editor-buttons{border-color:#e1e1e1}.x-row-editor-update-button{margin-right:3px}.x-row-editor-cancel-button{margin-left:2px}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-grid-cell-inner-row-expander{padding:7px 6px 6px 6px}.x-grid-row-expander{width:11px;height:11px;cursor:pointer;background-image:url(images/grid/group-collapse.png)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.png)}.x-accordion-layout-ct{background-color:white;padding:5px 5px 0}.x-accordion-hd .x-panel-header-text-container{color:#666;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0 0 5px}.x-accordion-item .x-accordion-hd{background:#dfeaf2;border-top-color:white;padding:8px 10px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#157fcc}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#dfeaf2}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -272px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -256px}.x-accordion-hd .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-24px;width:8px;height:48px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:48px;height:8px;margin-left:-24px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.png)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.png)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.png)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.png)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.png)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.png)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.png)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.png)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#3892d3}.x-menu{border-style:solid;border-width:1px;border-color:#e1e1e1}.x-menu-body{background:white;padding:0}.x-menu-icon-separator{left:22px;border-left:solid 1px #e1e1e1;background-color:white;width:1px}.x-menu-item{cursor:pointer}.x-menu-item-indent{margin-left:27px}.x-menu-item-active{background-image:none;background-color:#d6e8f6;border-color:#0079d2}.x-nlg .x-menu-item-active{background:#d6e8f6 repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:24px;padding:0 4px 0 27px;display:inline-block}.x-right-check-item-text{padding-right:22px}.x-menu-item-icon{width:16px;height:16px;top:5px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:gray;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#bfbfbf}.x-menu-item-icon-right{width:16px;height:16px;top:4px;right:3px;background-position:center center}.x-menu-item-text{font-size:13px;color:black;cursor:pointer;margin-right:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.png)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.png)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.png)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:1px;border-top:solid 1px #e1e1e1;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:8px;right:0;background-image:url(images/menu/menu-parent.png)}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:0}.x-content-box .x-menu-item-separator{height:0}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:13px;color:black}.x-menu-scroll-top{height:16px;background-image:url(images/menu/scroll-top.png)}.x-menu-scroll-bottom{height:16px;background-image:url(images/menu/scroll-bottom.png)}.x-menu-scroll-top,.x-menu-scroll-bottom{filter:alpha(opacity=50);opacity:.5;background-color:white}.x-menu-scroll-top-hover,.x-menu-scroll-bottom-hover{filter:alpha(opacity=60);opacity:.6}.x-menu-scroll-top-pressed,.x-menu-scroll-bottom-pressed{filter:alpha(opacity=70);opacity:.7}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:16px;height:16px;background-image:url(images/tools/tool-sprites.png);margin:0}.x-tool .x-tool-img{filter:alpha(opacity=50);opacity:.5}.x-tool-over .x-tool-img{filter:alpha(opacity=60);opacity:.6}.x-tool-pressed .x-tool-img{filter:alpha(opacity=70);opacity:.7}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -16px}.x-tool-maximize{background-position:0 -32px}.x-tool-restore{background-position:0 -48px}.x-tool-toggle{background-position:0 -64px}.x-panel-collapsed .x-tool-toggle{background-position:0 -80px}.x-tool-gear{background-position:0 -96px}.x-tool-prev{background-position:0 -112px}.x-tool-next{background-position:0 -128px}.x-tool-pin{background-position:0 -144px}.x-tool-unpin{background-position:0 -160px}.x-tool-right{background-position:0 -176px}.x-tool-left{background-position:0 -192px}.x-tool-down{background-position:0 -208px}.x-tool-up{background-position:0 -224px}.x-tool-refresh{background-position:0 -240px}.x-tool-plus{background-position:0 -256px}.x-tool-minus{background-position:0 -272px}.x-tool-search{background-position:0 -288px}.x-tool-save{background-position:0 -304px}.x-tool-help{background-position:0 -320px}.x-tool-print{background-position:0 -336px}.x-tool-expand{background-position:0 -352px}.x-tool-collapse{background-position:0 -368px}.x-tool-resize{background-position:0 -384px}.x-tool-move{background-position:0 -400px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -208px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -224px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -192px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -176px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff;-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.png)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.png)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.png)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.png)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.png)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.png)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:5px}.x-slider-horz .x-slider-thumb{width:15px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-15px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-30px -30px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:15px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -15px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -30px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-top-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-top-tl{background-position:0 -6px}.x-tab-default-top-tr{background-position:right -9px}.x-tab-default-top-bl{background-position:0 -12px}.x-tab-default-top-br{background-position:right -15px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -3px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:3px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:3px}.x-tab-default-top-tc{height:3px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-top-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-bottom-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-3-3-0-0-0-0-8-12-7-12}.x-tab-default-bottom-tl{background-position:0 -6px}.x-tab-default-bottom-tr{background-position:right -9px}.x-tab-default-bottom-bl{background-position:0 -12px}.x-tab-default-bottom-br{background-position:right -15px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -3px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:3px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:3px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:3px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif);background-repeat:repeat-y}.x-tab-default-bottom-mc{padding:8px 9px 4px 9px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-left-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-left-tl{background-position:0 -6px}.x-tab-default-left-tr{background-position:right -9px}.x-tab-default-left-bl{background-position:0 -12px}.x-tab-default-left-br{background-position:right -15px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -3px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:3px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:3px}.x-tab-default-left-tc{height:3px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-left-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:8px 12px 7px 12px;border-width:0;border-style:solid;background-color:#4b9cd7}.x-tab-default-right-mc{background-color:#4b9cd7}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-3-3-0-0-0-0-0-0-8-12-7-12}.x-tab-default-right-tl{background-position:0 -6px}.x-tab-default-right-tr{background-position:right -9px}.x-tab-default-right-bl{background-position:0 -12px}.x-tab-default-right-br{background-position:right -15px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -3px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:3px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:3px}.x-tab-default-right-tc{height:3px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif);background-repeat:repeat-y}.x-tab-default-right-mc{padding:5px 9px 7px 9px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#157fcc;margin:0 1px 0 0;cursor:pointer}.x-tab-default .x-tab-inner{font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:white;line-height:16px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:white;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#a5cdeb}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:12px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:12px}.x-tab-default-icon .x-tab-inner{width:16px}.x-tab-default-left{margin:0 0 0 1px}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:0 solid #157fcc}.x-tab-default-bottom{border-top:0 solid #157fcc}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:22px}.x-tab-default-over{background-color:#5fa7db}.x-tab-default-over .x-tab-glyph{color:white}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#afd3ed}.x-tab-default-active{background-color:#add2ed}.x-tab-default-active .x-tab-inner{color:#157fcc}.x-tab-default-active .x-tab-glyph{color:#157fcc}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#61a8dc}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:0 solid #add2ed}.x-tab-default-bottom-active{border-top:0 solid #add2ed}.x-tab-default-disabled{cursor:default}.x-tab-default-disabled .x-tab-inner{filter:alpha(opacity=30);opacity:.3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:white;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#81b9e3}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#157fcc #157fcc #157fcc}.x-tab-default-bottom-disabled{border-color:#157fcc #157fcc #157fcc #157fcc}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#5fa7db}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#5fa7db}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#add2ed}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#add2ed}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#4b9cd7}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#4b9cd7}.x-tab-default .x-tab-close-btn{width:12px;height:12px;background-image:url(images/tab/tab-default-close.png)}.x-tab-default .x-tab-close-btn-over{background-position:-12px 0}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3;background-position:0 0}.x-tab-default-pressed .x-tab-close-btn{background-position:-24px 0}.x-tab-default-closable .x-tab-wrap{padding-right:15px}.x-tab-default-top-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif)"}.x-tab-bar-default-top{padding:0}.x-tab-bar-default-bottom{padding:0}.x-tab-bar-default-left{padding:0}.x-tab-bar-default-right{padding:0}.x-tab-bar-default-horizontal{height:36px}.x-content-box .x-tab-bar-default-horizontal{height:36px}.x-tab-bar-default-vertical{width:36px}.x-content-box .x-tab-bar-default-vertical{width:36px}.x-tab-bar-body-default-top{padding-bottom:5px}.x-tab-bar-body-default-bottom{padding-top:5px}.x-tab-bar-body-default-left{padding-right:5px}.x-tab-bar-body-default-right{padding-left:5px}.x-tab-bar-strip-default{border-style:solid;border-color:#157fcc;background-color:#add2ed}.x-content-box .x-tab-bar-strip-default-horizontal{height:5px}.x-content-box .x-tab-bar-strip-default-vertical{width:5px}.x-tab-bar-strip-default-top{border-width:0;height:5px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:0}.x-tab-bar-strip-default-bottom{border-width:0;height:5px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0}.x-tab-bar-strip-default-left{border-width:0;width:5px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:0}.x-tab-bar-strip-default-right{border-width:0;width:5px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:0}.x-tab-bar-default{background-color:#157fcc}.x-tab-bar-default .x-box-scroller{cursor:pointer;filter:alpha(opacity=50);opacity:.5;background-color:#157fcc}.x-tab-bar-default .x-box-scroller-plain .x-box-scroller{background-color:transparent}.x-ie8m .x-tab-bar-default .x-box-scroller-plain .x-box-scroller{background-color:#fff}.x-tab-bar-default .x-box-scroller-hover{filter:alpha(opacity=60);opacity:.6}.x-tab-bar-default .x-box-scroller-pressed{filter:alpha(opacity=70);opacity:.7}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:31px;width:24px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:31px;height:24px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:0}.x-tab-bar-default-right .x-box-scroller{margin-left:0}.x-tab-bar-default .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left.png)}.x-tab-bar-default .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right.png)}.x-tab-bar-default .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top.png)}.x-tab-bar-default .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-plain-scroll-left.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-plain-scroll-right.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-plain-scroll-top.png)}.x-tab-bar-default .x-box-scroller-plain .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-plain-scroll-bottom.png)}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=25);opacity:.25;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:36px}.x-column-header-checkbox{border-color:#f5f5f5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:15px;width:15px;background-image:url(images/form/checkbox.png);line-height:15px}.x-column-header-checkbox .x-column-header-inner{padding:7px 4px 7px 4px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:5px 4px 4px 4px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -15px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.png)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.png)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.png)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.png)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.png)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.png)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.png)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.png)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.png)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.png)}.x-tree-icon{width:16px;height:24px}.x-tree-elbow-img{width:18px;height:24px;margin-right:2px}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-5px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.png)}.x-tree-icon-parent{background-image:url(images/tree/folder.png)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.png)}.x-tree-checkbox{margin-right:4px;top:5px;width:15px;height:15px;background-image:url(images/form/checkbox.png)}.x-tree-checkbox-checked{background-position:0 -15px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.png)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:13px;line-height:15px;padding-left:4px}.x-grid-cell-inner-treecolumn{padding:5px 10px 4px 6px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.png)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.png)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.png)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.png)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}body{background-color:#f5f5f5}.x-btn-plain-toolbar-small{border-color:transparent}.x-btn-plain-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:transparent}.x-btn-plain-toolbar-small-mc{background-image:url(images/btn/btn-plain-toolbar-small-fbg.gif);background-position:0 top;background-color:transparent}.x-nlg .x-btn-plain-toolbar-small{background-image:url(images/btn/btn-plain-toolbar-small-bg.gif);background-position:0 top}.x-nbr .x-btn-plain-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-plain-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-plain-toolbar-small-tl{background-position:0 -6px}.x-btn-plain-toolbar-small-tr{background-position:right -9px}.x-btn-plain-toolbar-small-bl{background-position:0 -12px}.x-btn-plain-toolbar-small-br{background-position:right -15px}.x-btn-plain-toolbar-small-ml{background-position:0 top}.x-btn-plain-toolbar-small-mr{background-position:right top}.x-btn-plain-toolbar-small-tc{background-position:0 0}.x-btn-plain-toolbar-small-bc{background-position:0 -3px}.x-btn-plain-toolbar-small-tr,.x-btn-plain-toolbar-small-br,.x-btn-plain-toolbar-small-mr{padding-right:3px}.x-btn-plain-toolbar-small-tl,.x-btn-plain-toolbar-small-bl,.x-btn-plain-toolbar-small-ml{padding-left:3px}.x-btn-plain-toolbar-small-tc{height:3px}.x-btn-plain-toolbar-small-bc{height:3px}.x-btn-plain-toolbar-small-tl,.x-btn-plain-toolbar-small-bl,.x-btn-plain-toolbar-small-tr,.x-btn-plain-toolbar-small-br,.x-btn-plain-toolbar-small-tc,.x-btn-plain-toolbar-small-bc,.x-btn-plain-toolbar-small-ml,.x-btn-plain-toolbar-small-mr{zoom:1}.x-btn-plain-toolbar-small-ml,.x-btn-plain-toolbar-small-mr{zoom:1}.x-btn-plain-toolbar-small-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-plain-toolbar-small-tl,.x-strict .x-ie7 .x-btn-plain-toolbar-small-bl{position:relative;right:0}.x-btn-plain-toolbar-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-small-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-bg.gif)"}.x-btn-plain-toolbar-small .x-btn-inner{font-size:12px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 5px}.x-btn-plain-toolbar-small .x-btn-arrow{background-image:url(images/button/plain-toolbar-small-arrow.png)}.x-btn-plain-toolbar-small .x-btn-arrow-right{padding-right:21px}.x-btn-plain-toolbar-small .x-btn-arrow-bottom{padding-bottom:18px}.x-btn-plain-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#666;opacity:.5}.x-ie8m .x-btn-plain-toolbar-small .x-btn-glyph{color:#b2b2b2}.x-btn-plain-toolbar-small-disabled{background-image:none;background-color:transparent}.x-btn-plain-toolbar-small-icon .x-btn-button,.x-btn-plain-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon .x-btn-inner,.x-btn-plain-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-plain-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-plain-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-plain-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:21px}.x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-plain-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-plain-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:21px}.x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-plain-toolbar-small-icon-text-top .x-btn-inner{padding-top:21px}.x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:21px}.x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-small-over{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-small-focus{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-small-menu-active,.x-btn-plain-toolbar-small-pressed{border-color:#e1e1e1;background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-plain-toolbar-small-over .x-frame-tl,.x-btn-plain-toolbar-small-over .x-frame-bl,.x-btn-plain-toolbar-small-over .x-frame-tr,.x-btn-plain-toolbar-small-over .x-frame-br,.x-btn-plain-toolbar-small-over .x-frame-tc,.x-btn-plain-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-over-corners.gif)}.x-btn-plain-toolbar-small-over .x-frame-ml,.x-btn-plain-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-over-sides.gif)}.x-btn-plain-toolbar-small-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-small-over-fbg.gif)}.x-btn-plain-toolbar-small-focus .x-frame-tl,.x-btn-plain-toolbar-small-focus .x-frame-bl,.x-btn-plain-toolbar-small-focus .x-frame-tr,.x-btn-plain-toolbar-small-focus .x-frame-br,.x-btn-plain-toolbar-small-focus .x-frame-tc,.x-btn-plain-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-focus-corners.gif)}.x-btn-plain-toolbar-small-focus .x-frame-ml,.x-btn-plain-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-focus-sides.gif)}.x-btn-plain-toolbar-small-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-tl,.x-btn-plain-toolbar-small-menu-active .x-frame-bl,.x-btn-plain-toolbar-small-menu-active .x-frame-tr,.x-btn-plain-toolbar-small-menu-active .x-frame-br,.x-btn-plain-toolbar-small-menu-active .x-frame-tc,.x-btn-plain-toolbar-small-menu-active .x-frame-bc,.x-btn-plain-toolbar-small-pressed .x-frame-tl,.x-btn-plain-toolbar-small-pressed .x-frame-bl,.x-btn-plain-toolbar-small-pressed .x-frame-tr,.x-btn-plain-toolbar-small-pressed .x-frame-br,.x-btn-plain-toolbar-small-pressed .x-frame-tc,.x-btn-plain-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-ml,.x-btn-plain-toolbar-small-menu-active .x-frame-mr,.x-btn-plain-toolbar-small-pressed .x-frame-ml,.x-btn-plain-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif)}.x-btn-plain-toolbar-small-menu-active .x-frame-mc,.x-btn-plain-toolbar-small-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-tl,.x-btn-plain-toolbar-small-disabled .x-frame-bl,.x-btn-plain-toolbar-small-disabled .x-frame-tr,.x-btn-plain-toolbar-small-disabled .x-frame-br,.x-btn-plain-toolbar-small-disabled .x-frame-tc,.x-btn-plain-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-ml,.x-btn-plain-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif)}.x-btn-plain-toolbar-small-disabled .x-frame-mc{background-color:transparent;background-image:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif)}.x-nlg .x-btn-plain-toolbar-small-over{background-image:url(images/btn/btn-plain-toolbar-small-over-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-focus{background-image:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-menu-active,.x-nlg .x-btn-plain-toolbar-small-pressed{background-image:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)}.x-nlg .x-btn-plain-toolbar-small-disabled{background-image:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)}.x-nbr .x-btn-plain-toolbar-small{background-image:none}.x-btn-plain-toolbar-small .x-btn-split-right{background-image:url(images/button/plain-toolbar-small-s-arrow.png);padding-right:23px}.x-btn-plain-toolbar-small .x-btn-split-bottom{background-image:url(images/button/plain-toolbar-small-s-arrow-b.png);padding-bottom:20px}.x-btn-plain-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-plain-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-over-bg.gif)"}.x-btn-plain-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-focus-bg.gif)"}.x-btn-plain-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-pressed-bg.gif)"}.x-btn-plain-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-small-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-small-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-small-disabled-bg.gif)"}.x-btn-plain-toolbar-medium{border-color:transparent}.x-btn-plain-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:transparent}.x-btn-plain-toolbar-medium-mc{background-image:url(images/btn/btn-plain-toolbar-medium-fbg.gif);background-position:0 top;background-color:transparent}.x-nlg .x-btn-plain-toolbar-medium{background-image:url(images/btn/btn-plain-toolbar-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-plain-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-plain-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-plain-toolbar-medium-tl{background-position:0 -6px}.x-btn-plain-toolbar-medium-tr{background-position:right -9px}.x-btn-plain-toolbar-medium-bl{background-position:0 -12px}.x-btn-plain-toolbar-medium-br{background-position:right -15px}.x-btn-plain-toolbar-medium-ml{background-position:0 top}.x-btn-plain-toolbar-medium-mr{background-position:right top}.x-btn-plain-toolbar-medium-tc{background-position:0 0}.x-btn-plain-toolbar-medium-bc{background-position:0 -3px}.x-btn-plain-toolbar-medium-tr,.x-btn-plain-toolbar-medium-br,.x-btn-plain-toolbar-medium-mr{padding-right:3px}.x-btn-plain-toolbar-medium-tl,.x-btn-plain-toolbar-medium-bl,.x-btn-plain-toolbar-medium-ml{padding-left:3px}.x-btn-plain-toolbar-medium-tc{height:3px}.x-btn-plain-toolbar-medium-bc{height:3px}.x-btn-plain-toolbar-medium-tl,.x-btn-plain-toolbar-medium-bl,.x-btn-plain-toolbar-medium-tr,.x-btn-plain-toolbar-medium-br,.x-btn-plain-toolbar-medium-tc,.x-btn-plain-toolbar-medium-bc,.x-btn-plain-toolbar-medium-ml,.x-btn-plain-toolbar-medium-mr{zoom:1}.x-btn-plain-toolbar-medium-ml,.x-btn-plain-toolbar-medium-mr{zoom:1}.x-btn-plain-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-plain-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-plain-toolbar-medium-bl{position:relative;right:0}.x-btn-plain-toolbar-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-medium-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-bg.gif)"}.x-btn-plain-toolbar-medium .x-btn-inner{font-size:14px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 8px}.x-btn-plain-toolbar-medium .x-btn-arrow{background-image:url(images/button/plain-toolbar-medium-arrow.png)}.x-btn-plain-toolbar-medium .x-btn-arrow-right{padding-right:30px}.x-btn-plain-toolbar-medium .x-btn-arrow-bottom{padding-bottom:26px}.x-btn-plain-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#666;opacity:.5}.x-ie8m .x-btn-plain-toolbar-medium .x-btn-glyph{color:#b2b2b2}.x-btn-plain-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-btn-plain-toolbar-medium-icon .x-btn-button,.x-btn-plain-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-plain-toolbar-medium-icon .x-btn-inner,.x-btn-plain-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-plain-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-plain-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-plain-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-plain-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-plain-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:29px}.x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-plain-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-plain-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:29px}.x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-plain-toolbar-medium-icon-text-top .x-btn-inner{padding-top:29px}.x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:29px}.x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-medium-over{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-medium-focus{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-medium-menu-active,.x-btn-plain-toolbar-medium-pressed{border-color:#e1e1e1;background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-plain-toolbar-medium-over .x-frame-tl,.x-btn-plain-toolbar-medium-over .x-frame-bl,.x-btn-plain-toolbar-medium-over .x-frame-tr,.x-btn-plain-toolbar-medium-over .x-frame-br,.x-btn-plain-toolbar-medium-over .x-frame-tc,.x-btn-plain-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-medium-over-corners.gif)}.x-btn-plain-toolbar-medium-over .x-frame-ml,.x-btn-plain-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-medium-over-sides.gif)}.x-btn-plain-toolbar-medium-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-medium-over-fbg.gif)}.x-btn-plain-toolbar-medium-focus .x-frame-tl,.x-btn-plain-toolbar-medium-focus .x-frame-bl,.x-btn-plain-toolbar-medium-focus .x-frame-tr,.x-btn-plain-toolbar-medium-focus .x-frame-br,.x-btn-plain-toolbar-medium-focus .x-frame-tc,.x-btn-plain-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-medium-focus-corners.gif)}.x-btn-plain-toolbar-medium-focus .x-frame-ml,.x-btn-plain-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-medium-focus-sides.gif)}.x-btn-plain-toolbar-medium-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-medium-focus-fbg.gif)}.x-btn-plain-toolbar-medium-menu-active .x-frame-tl,.x-btn-plain-toolbar-medium-menu-active .x-frame-bl,.x-btn-plain-toolbar-medium-menu-active .x-frame-tr,.x-btn-plain-toolbar-medium-menu-active .x-frame-br,.x-btn-plain-toolbar-medium-menu-active .x-frame-tc,.x-btn-plain-toolbar-medium-menu-active .x-frame-bc,.x-btn-plain-toolbar-medium-pressed .x-frame-tl,.x-btn-plain-toolbar-medium-pressed .x-frame-bl,.x-btn-plain-toolbar-medium-pressed .x-frame-tr,.x-btn-plain-toolbar-medium-pressed .x-frame-br,.x-btn-plain-toolbar-medium-pressed .x-frame-tc,.x-btn-plain-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-medium-pressed-corners.gif)}.x-btn-plain-toolbar-medium-menu-active .x-frame-ml,.x-btn-plain-toolbar-medium-menu-active .x-frame-mr,.x-btn-plain-toolbar-medium-pressed .x-frame-ml,.x-btn-plain-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-medium-pressed-sides.gif)}.x-btn-plain-toolbar-medium-menu-active .x-frame-mc,.x-btn-plain-toolbar-medium-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-plain-toolbar-medium-pressed-fbg.gif)}.x-btn-plain-toolbar-medium-disabled .x-frame-tl,.x-btn-plain-toolbar-medium-disabled .x-frame-bl,.x-btn-plain-toolbar-medium-disabled .x-frame-tr,.x-btn-plain-toolbar-medium-disabled .x-frame-br,.x-btn-plain-toolbar-medium-disabled .x-frame-tc,.x-btn-plain-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-medium-disabled-corners.gif)}.x-btn-plain-toolbar-medium-disabled .x-frame-ml,.x-btn-plain-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-medium-disabled-sides.gif)}.x-btn-plain-toolbar-medium-disabled .x-frame-mc{background-color:transparent;background-image:url(images/btn/btn-plain-toolbar-medium-disabled-fbg.gif)}.x-nlg .x-btn-plain-toolbar-medium-over{background-image:url(images/btn/btn-plain-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-plain-toolbar-medium-focus{background-image:url(images/btn/btn-plain-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-plain-toolbar-medium-menu-active,.x-nlg .x-btn-plain-toolbar-medium-pressed{background-image:url(images/btn/btn-plain-toolbar-medium-pressed-bg.gif)}.x-nlg .x-btn-plain-toolbar-medium-disabled{background-image:url(images/btn/btn-plain-toolbar-medium-disabled-bg.gif)}.x-nbr .x-btn-plain-toolbar-medium{background-image:none}.x-btn-plain-toolbar-medium .x-btn-split-right{background-image:url(images/button/plain-toolbar-medium-s-arrow.png);padding-right:32px}.x-btn-plain-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/plain-toolbar-medium-s-arrow-b.png);padding-bottom:28px}.x-btn-plain-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-plain-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-over-bg.gif)"}.x-btn-plain-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-focus-bg.gif)"}.x-btn-plain-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-pressed-bg.gif)"}.x-btn-plain-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-medium-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-medium-disabled-bg.gif)"}.x-btn-plain-toolbar-large{border-color:transparent}.x-btn-plain-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:transparent}.x-btn-plain-toolbar-large-mc{background-image:url(images/btn/btn-plain-toolbar-large-fbg.gif);background-position:0 top;background-color:transparent}.x-nlg .x-btn-plain-toolbar-large{background-image:url(images/btn/btn-plain-toolbar-large-bg.gif);background-position:0 top}.x-nbr .x-btn-plain-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-plain-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-plain-toolbar-large-tl{background-position:0 -6px}.x-btn-plain-toolbar-large-tr{background-position:right -9px}.x-btn-plain-toolbar-large-bl{background-position:0 -12px}.x-btn-plain-toolbar-large-br{background-position:right -15px}.x-btn-plain-toolbar-large-ml{background-position:0 top}.x-btn-plain-toolbar-large-mr{background-position:right top}.x-btn-plain-toolbar-large-tc{background-position:0 0}.x-btn-plain-toolbar-large-bc{background-position:0 -3px}.x-btn-plain-toolbar-large-tr,.x-btn-plain-toolbar-large-br,.x-btn-plain-toolbar-large-mr{padding-right:3px}.x-btn-plain-toolbar-large-tl,.x-btn-plain-toolbar-large-bl,.x-btn-plain-toolbar-large-ml{padding-left:3px}.x-btn-plain-toolbar-large-tc{height:3px}.x-btn-plain-toolbar-large-bc{height:3px}.x-btn-plain-toolbar-large-tl,.x-btn-plain-toolbar-large-bl,.x-btn-plain-toolbar-large-tr,.x-btn-plain-toolbar-large-br,.x-btn-plain-toolbar-large-tc,.x-btn-plain-toolbar-large-bc,.x-btn-plain-toolbar-large-ml,.x-btn-plain-toolbar-large-mr{zoom:1}.x-btn-plain-toolbar-large-ml,.x-btn-plain-toolbar-large-mr{zoom:1}.x-btn-plain-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-plain-toolbar-large-tl,.x-strict .x-ie7 .x-btn-plain-toolbar-large-bl{position:relative;right:0}.x-btn-plain-toolbar-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-plain-toolbar-large-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-bg.gif)"}.x-btn-plain-toolbar-large .x-btn-inner{font-size:16px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;color:#666;padding:0 10px}.x-btn-plain-toolbar-large .x-btn-arrow{background-image:url(images/button/plain-toolbar-large-arrow.png)}.x-btn-plain-toolbar-large .x-btn-arrow-right{padding-right:36px}.x-btn-plain-toolbar-large .x-btn-arrow-bottom{padding-bottom:32px}.x-btn-plain-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#666;opacity:.5}.x-ie8m .x-btn-plain-toolbar-large .x-btn-glyph{color:#b2b2b2}.x-btn-plain-toolbar-large-disabled{background-image:none;background-color:transparent}.x-btn-plain-toolbar-large-icon .x-btn-button,.x-btn-plain-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-plain-toolbar-large-icon .x-btn-inner,.x-btn-plain-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-plain-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-plain-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-plain-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-plain-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-plain-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-plain-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:37px}.x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-plain-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-plain-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:37px}.x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-plain-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-plain-toolbar-large-icon-text-top .x-btn-inner{padding-top:37px}.x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:37px}.x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-plain-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-plain-toolbar-large-over{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-large-focus{border-color:#e1e1e1;background-image:none;background-color:#ebebeb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ededed),color-stop(50%,#ebebeb),color-stop(51%,#dfdfdf),color-stop(100%,#ebebeb));background-image:-webkit-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-moz-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:-o-linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb);background-image:linear-gradient(top,#ededed,#ebebeb 50%,#dfdfdf 51%,#ebebeb)}.x-btn-plain-toolbar-large-menu-active,.x-btn-plain-toolbar-large-pressed{border-color:#e1e1e1;background-image:none;background-color:#e1e1e1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1e1e1),color-stop(50%,#d5d5d5),color-stop(51%,#e1e1e1),color-stop(100%,#e4e4e4));background-image:-webkit-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-moz-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:-o-linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4);background-image:linear-gradient(top,#e1e1e1,#d5d5d5 50%,#e1e1e1 51%,#e4e4e4)}.x-btn-plain-toolbar-large-over .x-frame-tl,.x-btn-plain-toolbar-large-over .x-frame-bl,.x-btn-plain-toolbar-large-over .x-frame-tr,.x-btn-plain-toolbar-large-over .x-frame-br,.x-btn-plain-toolbar-large-over .x-frame-tc,.x-btn-plain-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-large-over-corners.gif)}.x-btn-plain-toolbar-large-over .x-frame-ml,.x-btn-plain-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-large-over-sides.gif)}.x-btn-plain-toolbar-large-over .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-large-over-fbg.gif)}.x-btn-plain-toolbar-large-focus .x-frame-tl,.x-btn-plain-toolbar-large-focus .x-frame-bl,.x-btn-plain-toolbar-large-focus .x-frame-tr,.x-btn-plain-toolbar-large-focus .x-frame-br,.x-btn-plain-toolbar-large-focus .x-frame-tc,.x-btn-plain-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-large-focus-corners.gif)}.x-btn-plain-toolbar-large-focus .x-frame-ml,.x-btn-plain-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-large-focus-sides.gif)}.x-btn-plain-toolbar-large-focus .x-frame-mc{background-color:#ebebeb;background-image:url(images/btn/btn-plain-toolbar-large-focus-fbg.gif)}.x-btn-plain-toolbar-large-menu-active .x-frame-tl,.x-btn-plain-toolbar-large-menu-active .x-frame-bl,.x-btn-plain-toolbar-large-menu-active .x-frame-tr,.x-btn-plain-toolbar-large-menu-active .x-frame-br,.x-btn-plain-toolbar-large-menu-active .x-frame-tc,.x-btn-plain-toolbar-large-menu-active .x-frame-bc,.x-btn-plain-toolbar-large-pressed .x-frame-tl,.x-btn-plain-toolbar-large-pressed .x-frame-bl,.x-btn-plain-toolbar-large-pressed .x-frame-tr,.x-btn-plain-toolbar-large-pressed .x-frame-br,.x-btn-plain-toolbar-large-pressed .x-frame-tc,.x-btn-plain-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-large-pressed-corners.gif)}.x-btn-plain-toolbar-large-menu-active .x-frame-ml,.x-btn-plain-toolbar-large-menu-active .x-frame-mr,.x-btn-plain-toolbar-large-pressed .x-frame-ml,.x-btn-plain-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-large-pressed-sides.gif)}.x-btn-plain-toolbar-large-menu-active .x-frame-mc,.x-btn-plain-toolbar-large-pressed .x-frame-mc{background-color:#e1e1e1;background-image:url(images/btn/btn-plain-toolbar-large-pressed-fbg.gif)}.x-btn-plain-toolbar-large-disabled .x-frame-tl,.x-btn-plain-toolbar-large-disabled .x-frame-bl,.x-btn-plain-toolbar-large-disabled .x-frame-tr,.x-btn-plain-toolbar-large-disabled .x-frame-br,.x-btn-plain-toolbar-large-disabled .x-frame-tc,.x-btn-plain-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-plain-toolbar-large-disabled-corners.gif)}.x-btn-plain-toolbar-large-disabled .x-frame-ml,.x-btn-plain-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-plain-toolbar-large-disabled-sides.gif)}.x-btn-plain-toolbar-large-disabled .x-frame-mc{background-color:transparent;background-image:url(images/btn/btn-plain-toolbar-large-disabled-fbg.gif)}.x-nlg .x-btn-plain-toolbar-large-over{background-image:url(images/btn/btn-plain-toolbar-large-over-bg.gif)}.x-nlg .x-btn-plain-toolbar-large-focus{background-image:url(images/btn/btn-plain-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-plain-toolbar-large-menu-active,.x-nlg .x-btn-plain-toolbar-large-pressed{background-image:url(images/btn/btn-plain-toolbar-large-pressed-bg.gif)}.x-nlg .x-btn-plain-toolbar-large-disabled{background-image:url(images/btn/btn-plain-toolbar-large-disabled-bg.gif)}.x-nbr .x-btn-plain-toolbar-large{background-image:none}.x-btn-plain-toolbar-large .x-btn-split-right{background-image:url(images/button/plain-toolbar-large-s-arrow.png);padding-right:38px}.x-btn-plain-toolbar-large .x-btn-split-bottom{background-image:url(images/button/plain-toolbar-large-s-arrow-b.png);padding-bottom:34px}.x-btn-plain-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-plain-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-over-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-over-bg.gif)"}.x-btn-plain-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-focus-bg.gif)"}.x-btn-plain-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-pressed-bg.gif)"}.x-btn-plain-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-plain-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-plain-toolbar-large-disabled-sides.gif), frame-bg:url(images/btn/btn-plain-toolbar-large-disabled-fbg.gif), bg:url(images/btn/btn-plain-toolbar-large-disabled-bg.gif)"}.x-btn-plain-toolbar-small-disabled .x-btn-icon-el,.x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,.x-btn-plain-toolbar-large-disabled .x-btn-icon-el{background-color:white}.x-strict .x-ie8 .x-btn-plain-toolbar-small-disabled .x-btn-icon-el,.x-strict .x-ie8 .x-btn-plain-toolbar-medium-disabled .x-btn-icon-el,.x-strict .x-ie8 .x-btn-plain-toolbar-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-toolbar-default .x-toolbar-scroll-left{margin-right:4px}.x-toolbar-default .x-toolbar-scroll-right{margin-left:4px}.x-toolbar-default .x-toolbar-scroll-left,.x-toolbar-default .x-toolbar-scroll-right{filter:alpha(opacity=60);opacity:.6}.x-toolbar-default .x-toolbar-scroll-left-hover,.x-toolbar-default .x-toolbar-scroll-right-hover{background-position:0 0;filter:alpha(opacity=80);opacity:.8}.x-toolbar-default .x-toolbar-scroll-left-pressed,.x-toolbar-default .x-toolbar-scroll-right-pressed{background-position:0 0;filter:alpha(opacity=100);opacity:1}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=25);opacity:.25}.x-toolbar-default .x-box-scroller{background-color:white}.x-toolbar-scroller{padding:6px 4px 6px 4px}.x-toolbar-vertical-scroller{padding:3px 8px 3px 8px}.x-panel-light{border-color:#157fcc;padding:0}.x-panel-header-light{font-size:13px;border:1px solid #157fcc}.x-panel-header-light .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-panel-header-light-horizontal{padding:9px 9px 10px 9px}.x-panel-header-light-horizontal-noborder{padding:10px 10px 10px 10px}.x-panel-header-light-vertical{padding:9px 9px 9px 10px}.x-panel-header-light-vertical-noborder{padding:10px 10px 10px 10px}.x-panel-header-text-container-light{color:#666;font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-light{background:white;border-color:#157fcc;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-light{background-image:none;background-color:#dfeaf2}.x-panel-header-light-vertical{background-image:none;background-color:#dfeaf2}.x-panel .x-panel-header-light-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-light-collapsed-border-left{border-right-width:1px!important}.x-panel-header-light-top:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-light-bottom:after{display:none;content:"x-slicer:stretch:bottom"}.x-panel-header-light-left:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-light-right:after{display:none;content:"x-slicer:stretch:left"}.x-panel-header-light-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-light-vertical .x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-light .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-light .x-panel-header-glyph{color:#eff4f8}.x-panel-header-light-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-light-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-light-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-light-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-light-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-light-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-light-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-light-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-panel-light-framed{border-color:#dfeaf2;padding:0}.x-panel-header-light-framed{font-size:13px;border:5px solid #dfeaf2}.x-panel-header-light-framed .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png);background-color:#dfeaf2}.x-panel-header-light-framed-horizontal{padding:5px}.x-panel-header-light-framed-horizontal-noborder{padding:10px 10px 5px 10px}.x-panel-header-light-framed-vertical{padding:5px 5px 5px 5px}.x-panel-header-light-framed-vertical-noborder{padding:10px 10px 10px 5px}.x-panel-header-text-container-light-framed{color:#666;font-size:13px;font-weight:bold;font-family:helvetica,arial,verdana,sans-serif;line-height:15px;padding:1px 0 0;text-transform:none}.x-panel-body-light-framed{background:white;border-color:#dfeaf2;color:black;font-size:13px;font-size:normal;border-width:1px;border-style:solid}.x-panel-light-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:0;border-width:5px;border-style:solid;background-color:white}.x-panel-light-framed-mc{background-color:white}.x-nbr .x-panel-light-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-light-framed-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-0-0-0-0}.x-panel-light-framed-tl{background-position:0 -10px}.x-panel-light-framed-tr{background-position:right -15px}.x-panel-light-framed-bl{background-position:0 -20px}.x-panel-light-framed-br{background-position:right -25px}.x-panel-light-framed-ml{background-position:0 top}.x-panel-light-framed-mr{background-position:right top}.x-panel-light-framed-tc{background-position:0 0}.x-panel-light-framed-bc{background-position:0 -5px}.x-panel-light-framed-tr,.x-panel-light-framed-br,.x-panel-light-framed-mr{padding-right:5px}.x-panel-light-framed-tl,.x-panel-light-framed-bl,.x-panel-light-framed-ml{padding-left:5px}.x-panel-light-framed-tc{height:5px}.x-panel-light-framed-bc{height:5px}.x-panel-light-framed-tl,.x-panel-light-framed-bl,.x-panel-light-framed-tr,.x-panel-light-framed-br,.x-panel-light-framed-tc,.x-panel-light-framed-bc,.x-panel-light-framed-ml,.x-panel-light-framed-mr{zoom:1;background-image:url(images/panel/panel-light-framed-corners.gif)}.x-panel-light-framed-ml,.x-panel-light-framed-mr{zoom:1;background-image:url(images/panel/panel-light-framed-sides.gif);background-repeat:repeat-y}.x-panel-light-framed-mc{padding:0}.x-strict .x-ie7 .x-panel-light-framed-tl,.x-strict .x-ie7 .x-panel-light-framed-bl{position:relative;right:0}.x-panel-light-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-light-framed-corners.gif), sides:url(images/panel/panel-light-framed-sides.gif)"}.x-panel-header-light-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 0 5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-top-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-top-frameInfo{font-family:dh-4-4-0-0-5-5-0-5-5-5-5-5}.x-panel-header-light-framed-top-tl{background-position:0 -10px}.x-panel-header-light-framed-top-tr{background-position:right -15px}.x-panel-header-light-framed-top-bl{background-position:0 -20px}.x-panel-header-light-framed-top-br{background-position:right -25px}.x-panel-header-light-framed-top-ml{background-position:0 top}.x-panel-header-light-framed-top-mr{background-position:right top}.x-panel-header-light-framed-top-tc{background-position:0 0}.x-panel-header-light-framed-top-bc{background-position:0 -5px}.x-panel-header-light-framed-top-tr,.x-panel-header-light-framed-top-br,.x-panel-header-light-framed-top-mr{padding-right:5px}.x-panel-header-light-framed-top-tl,.x-panel-header-light-framed-top-bl,.x-panel-header-light-framed-top-ml{padding-left:5px}.x-panel-header-light-framed-top-tc{height:5px}.x-panel-header-light-framed-top-bc{height:0}.x-panel-header-light-framed-top-tl,.x-panel-header-light-framed-top-bl,.x-panel-header-light-framed-top-tr,.x-panel-header-light-framed-top-br,.x-panel-header-light-framed-top-tc,.x-panel-header-light-framed-top-bc,.x-panel-header-light-framed-top-ml,.x-panel-header-light-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-top-corners.gif)}.x-panel-header-light-framed-top-ml,.x-panel-header-light-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-top-tl,.x-strict .x-ie7 .x-panel-header-light-framed-top-bl{position:relative;right:0}.x-panel-header-light-framed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-top-sides.gif)"}.x-panel-header-light-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 5px 5px 5px;border-width:5px 5px 5px 0;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-right-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-right-frameInfo{font-family:dh-0-4-4-0-5-5-5-0-5-5-5-5}.x-panel-header-light-framed-right-tl{background-position:0 -10px}.x-panel-header-light-framed-right-tr{background-position:right -15px}.x-panel-header-light-framed-right-bl{background-position:0 -20px}.x-panel-header-light-framed-right-br{background-position:right -25px}.x-panel-header-light-framed-right-ml{background-position:0 right}.x-panel-header-light-framed-right-mr{background-position:right right}.x-panel-header-light-framed-right-tc{background-position:0 0}.x-panel-header-light-framed-right-bc{background-position:0 -5px}.x-panel-header-light-framed-right-tr,.x-panel-header-light-framed-right-br,.x-panel-header-light-framed-right-mr{padding-right:5px}.x-panel-header-light-framed-right-tl,.x-panel-header-light-framed-right-bl,.x-panel-header-light-framed-right-ml{padding-left:0}.x-panel-header-light-framed-right-tc{height:5px}.x-panel-header-light-framed-right-bc{height:5px}.x-panel-header-light-framed-right-tl,.x-panel-header-light-framed-right-bl,.x-panel-header-light-framed-right-tr,.x-panel-header-light-framed-right-br,.x-panel-header-light-framed-right-tc,.x-panel-header-light-framed-right-bc,.x-panel-header-light-framed-right-ml,.x-panel-header-light-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-right-corners.gif)}.x-panel-header-light-framed-right-ml,.x-panel-header-light-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-right-tl,.x-strict .x-ie7 .x-panel-header-light-framed-right-bl{position:relative;right:0}.x-panel-header-light-framed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-right-corners.gif), sides:url(images/panel-header/panel-header-light-framed-right-sides.gif)"}.x-panel-header-light-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:0 5px 5px 5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-bottom-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-5-5-5-5-5-5-5}.x-panel-header-light-framed-bottom-tl{background-position:0 -10px}.x-panel-header-light-framed-bottom-tr{background-position:right -15px}.x-panel-header-light-framed-bottom-bl{background-position:0 -20px}.x-panel-header-light-framed-bottom-br{background-position:right -25px}.x-panel-header-light-framed-bottom-ml{background-position:0 bottom}.x-panel-header-light-framed-bottom-mr{background-position:right bottom}.x-panel-header-light-framed-bottom-tc{background-position:0 0}.x-panel-header-light-framed-bottom-bc{background-position:0 -5px}.x-panel-header-light-framed-bottom-tr,.x-panel-header-light-framed-bottom-br,.x-panel-header-light-framed-bottom-mr{padding-right:5px}.x-panel-header-light-framed-bottom-tl,.x-panel-header-light-framed-bottom-bl,.x-panel-header-light-framed-bottom-ml{padding-left:5px}.x-panel-header-light-framed-bottom-tc{height:0}.x-panel-header-light-framed-bottom-bc{height:5px}.x-panel-header-light-framed-bottom-tl,.x-panel-header-light-framed-bottom-bl,.x-panel-header-light-framed-bottom-tr,.x-panel-header-light-framed-bottom-br,.x-panel-header-light-framed-bottom-tc,.x-panel-header-light-framed-bottom-bc,.x-panel-header-light-framed-bottom-ml,.x-panel-header-light-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-bottom-corners.gif)}.x-panel-header-light-framed-bottom-ml,.x-panel-header-light-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-light-framed-bottom-bl{position:relative;right:0}.x-panel-header-light-framed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-bottom-sides.gif)"}.x-panel-header-light-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px 0 5px 5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-left-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-left-frameInfo{font-family:dh-4-0-0-4-5-0-5-5-5-5-5-5}.x-panel-header-light-framed-left-tl{background-position:0 -10px}.x-panel-header-light-framed-left-tr{background-position:right -15px}.x-panel-header-light-framed-left-bl{background-position:0 -20px}.x-panel-header-light-framed-left-br{background-position:right -25px}.x-panel-header-light-framed-left-ml{background-position:0 left}.x-panel-header-light-framed-left-mr{background-position:right left}.x-panel-header-light-framed-left-tc{background-position:0 0}.x-panel-header-light-framed-left-bc{background-position:0 -5px}.x-panel-header-light-framed-left-tr,.x-panel-header-light-framed-left-br,.x-panel-header-light-framed-left-mr{padding-right:0}.x-panel-header-light-framed-left-tl,.x-panel-header-light-framed-left-bl,.x-panel-header-light-framed-left-ml{padding-left:5px}.x-panel-header-light-framed-left-tc{height:5px}.x-panel-header-light-framed-left-bc{height:5px}.x-panel-header-light-framed-left-tl,.x-panel-header-light-framed-left-bl,.x-panel-header-light-framed-left-tr,.x-panel-header-light-framed-left-br,.x-panel-header-light-framed-left-tc,.x-panel-header-light-framed-left-bc,.x-panel-header-light-framed-left-ml,.x-panel-header-light-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-left-corners.gif)}.x-panel-header-light-framed-left-ml,.x-panel-header-light-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-left-tl,.x-strict .x-ie7 .x-panel-header-light-framed-left-bl{position:relative;right:0}.x-panel-header-light-framed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-left-corners.gif), sides:url(images/panel-header/panel-header-light-framed-left-sides.gif)"}.x-panel-header-light-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-top-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-top-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-top-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-top-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-top-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-light-framed-collapsed-top-mr{background-position:right top}.x-panel-header-light-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-top-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-top-tr,.x-panel-header-light-framed-collapsed-top-br,.x-panel-header-light-framed-collapsed-top-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-top-tl,.x-panel-header-light-framed-collapsed-top-bl,.x-panel-header-light-framed-collapsed-top-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-top-tc{height:5px}.x-panel-header-light-framed-collapsed-top-bc{height:5px}.x-panel-header-light-framed-collapsed-top-tl,.x-panel-header-light-framed-collapsed-top-bl,.x-panel-header-light-framed-collapsed-top-tr,.x-panel-header-light-framed-collapsed-top-br,.x-panel-header-light-framed-collapsed-top-tc,.x-panel-header-light-framed-collapsed-top-bc,.x-panel-header-light-framed-collapsed-top-ml,.x-panel-header-light-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif)}.x-panel-header-light-framed-collapsed-top-ml,.x-panel-header-light-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-top-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-top-sides.gif)"}.x-panel-header-light-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-right-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-right-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-right-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-right-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-right-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-right-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-right-ml{background-position:0 right}.x-panel-header-light-framed-collapsed-right-mr{background-position:right right}.x-panel-header-light-framed-collapsed-right-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-right-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-right-tr,.x-panel-header-light-framed-collapsed-right-br,.x-panel-header-light-framed-collapsed-right-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-right-tl,.x-panel-header-light-framed-collapsed-right-bl,.x-panel-header-light-framed-collapsed-right-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-right-tc{height:5px}.x-panel-header-light-framed-collapsed-right-bc{height:5px}.x-panel-header-light-framed-collapsed-right-tl,.x-panel-header-light-framed-collapsed-right-bl,.x-panel-header-light-framed-collapsed-right-tr,.x-panel-header-light-framed-collapsed-right-br,.x-panel-header-light-framed-collapsed-right-tc,.x-panel-header-light-framed-collapsed-right-bc,.x-panel-header-light-framed-collapsed-right-ml,.x-panel-header-light-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif)}.x-panel-header-light-framed-collapsed-right-ml,.x-panel-header-light-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-right-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-right-sides.gif)"}.x-panel-header-light-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-bottom-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-bottom-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-bottom-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-bottom-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-bottom-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-light-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-light-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-bottom-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-bottom-tr,.x-panel-header-light-framed-collapsed-bottom-br,.x-panel-header-light-framed-collapsed-bottom-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-bottom-tl,.x-panel-header-light-framed-collapsed-bottom-bl,.x-panel-header-light-framed-collapsed-bottom-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-bottom-tc{height:5px}.x-panel-header-light-framed-collapsed-bottom-bc{height:5px}.x-panel-header-light-framed-collapsed-bottom-tl,.x-panel-header-light-framed-collapsed-bottom-bl,.x-panel-header-light-framed-collapsed-bottom-tr,.x-panel-header-light-framed-collapsed-bottom-br,.x-panel-header-light-framed-collapsed-bottom-tc,.x-panel-header-light-framed-collapsed-bottom-bc,.x-panel-header-light-framed-collapsed-bottom-ml,.x-panel-header-light-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif)}.x-panel-header-light-framed-collapsed-bottom-ml,.x-panel-header-light-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-bottom-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif)"}.x-panel-header-light-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 5px 5px 5px;border-width:5px;border-style:solid;background-color:#dfeaf2}.x-panel-header-light-framed-collapsed-left-mc{background-color:#dfeaf2}.x-nbr .x-panel-header-light-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-header-light-framed-collapsed-left-frameInfo{font-family:dh-4-4-4-4-5-5-5-5-5-5-5-5}.x-panel-header-light-framed-collapsed-left-tl{background-position:0 -10px}.x-panel-header-light-framed-collapsed-left-tr{background-position:right -15px}.x-panel-header-light-framed-collapsed-left-bl{background-position:0 -20px}.x-panel-header-light-framed-collapsed-left-br{background-position:right -25px}.x-panel-header-light-framed-collapsed-left-ml{background-position:0 left}.x-panel-header-light-framed-collapsed-left-mr{background-position:right left}.x-panel-header-light-framed-collapsed-left-tc{background-position:0 0}.x-panel-header-light-framed-collapsed-left-bc{background-position:0 -5px}.x-panel-header-light-framed-collapsed-left-tr,.x-panel-header-light-framed-collapsed-left-br,.x-panel-header-light-framed-collapsed-left-mr{padding-right:5px}.x-panel-header-light-framed-collapsed-left-tl,.x-panel-header-light-framed-collapsed-left-bl,.x-panel-header-light-framed-collapsed-left-ml{padding-left:5px}.x-panel-header-light-framed-collapsed-left-tc{height:5px}.x-panel-header-light-framed-collapsed-left-bc{height:5px}.x-panel-header-light-framed-collapsed-left-tl,.x-panel-header-light-framed-collapsed-left-bl,.x-panel-header-light-framed-collapsed-left-tr,.x-panel-header-light-framed-collapsed-left-br,.x-panel-header-light-framed-collapsed-left-tc,.x-panel-header-light-framed-collapsed-left-bc,.x-panel-header-light-framed-collapsed-left-ml,.x-panel-header-light-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif)}.x-panel-header-light-framed-collapsed-left-ml,.x-panel-header-light-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif);background-repeat:repeat-y}.x-panel-header-light-framed-collapsed-left-mc{padding:5px 5px 5px 5px}.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-light-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-light-framed-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/panel-header/panel-header-light-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-light-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-light-framed-top{border-bottom-width:5px!important}.x-panel .x-panel-header-light-framed-right{border-left-width:5px!important}.x-panel .x-panel-header-light-framed-bottom{border-top-width:5px!important}.x-panel .x-panel-header-light-framed-left{border-right-width:5px!important}.x-nbr .x-panel-header-light-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-light-framed-collapsed-left{border-right-width:0!important}.x-panel-header-light-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-light-framed-vertical .x-panel-header-text-container{background-color:#dfeaf2;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#dfeaf2)}.x-panel-header-light-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-light-framed .x-panel-header-glyph{color:white;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-light-framed .x-panel-header-glyph{color:#eff4f8}.x-panel-header-light-framed-horizontal .x-panel-header-icon-before-title{margin:0 6px 0 0}.x-panel-header-light-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 6px}.x-panel-header-light-framed-vertical .x-panel-header-icon-before-title{margin:0 0 6px 0}.x-panel-header-light-framed-vertical .x-panel-header-icon-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-horizontal .x-tool-after-title{margin:0 0 0 6px}.x-panel-header-light-framed-horizontal .x-tool-before-title{margin:0 6px 0 0}.x-panel-header-light-framed-vertical .x-tool-after-title{margin:6px 0 0 0}.x-panel-header-light-framed-vertical .x-tool-before-title{margin:0 0 6px 0}.x-panel-light-framed-resizable{overflow:visible}.x-panel-light-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-light-framed-resizable .x-panel-handle-north-br{top:-5px}.x-panel-light-framed-resizable .x-panel-handle-south-br{bottom:-5px}.x-panel-light-framed-resizable .x-panel-handle-east-br{right:-5px}.x-panel-light-framed-resizable .x-panel-handle-west-br{left:-5px}.x-panel-light-framed-resizable .x-panel-handle-northwest-br{left:-5px;top:-5px}.x-panel-light-framed-resizable .x-panel-handle-northeast-br{right:-5px;top:-5px}.x-panel-light-framed-resizable .x-panel-handle-southeast-br{right:-5px;bottom:-5px}.x-panel-light-framed-resizable .x-panel-handle-southwest-br{left:-5px;bottom:-5px}.x-panel-light-framed-outer-border-l{border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-b{border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-bl{border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-r{border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-framed-outer-border-rl{border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-rb{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-rbl{border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-t{border-top-color:#157fcc!important;border-top-width:1px!important}.x-panel-light-framed-outer-border-tl{border-top-color:#157fcc!important;border-top-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-tb{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-tbl{border-top-color:#157fcc!important;border-top-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-tr{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important}.x-panel-light-framed-outer-border-trl{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-left-color:#157fcc!important;border-left-width:1px!important}.x-panel-light-framed-outer-border-trb{border-top-color:#157fcc!important;border-top-width:1px!important;border-right-color:#157fcc!important;border-right-width:1px!important;border-bottom-color:#157fcc!important;border-bottom-width:1px!important}.x-panel-light-framed-outer-border-trbl{border-color:#157fcc!important;border-width:1px!important}.x-form-trigger{height:22px}.x-form-trigger-wrap{border:1px solid;border-color:silver #d9d9d9 #d9d9d9}.x-form-trigger-wrap .x-form-text{border-width:0;height:22px}.x-content-box .x-form-trigger-wrap .x-form-text{height:15px}.x-form-trigger-wrap-focus .x-form-trigger-wrap{border-color:#3892d3}.x-form-invalid .x-form-trigger-wrap{border-color:#cf4c35}.x-form-file-wrap .x-form-trigger-wrap{border:0}.x-form-file-wrap .x-form-trigger-wrap .x-form-text{border:1px solid;border-color:silver #d9d9d9 #d9d9d9;height:24px}.x-content-box .x-form-file-wrap .x-form-trigger-wrap .x-form-text{height:15px}.x-html-editor-container{border:1px solid;border-color:silver #d9d9d9 #d9d9d9}.x-grid-header-ct{border:1px solid silver}.x-column-header-trigger{background-image:url(images/grid/hd-pop.png);border-left:1px solid silver}.x-column-header-last{border-right:0}.x-column-header-last .x-column-header-over .x-column-header-trigger{border-right:1px solid silver}.x-column-header-last{border-right:0 none}.x-accordion-hd .x-tool-img{background-image:url(images/tools/tool-sprites-dark.png)}.x-accordion-item .x-accordion-hd-over{background-color:#e6f1f9}.x-resizable-handle{background-color:#157fcc;background-repeat:no-repeat}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:center}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:center}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:-2px -2px}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:2px 2px}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:-2px 2px}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:2px -2px}
Index: branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/version.properties
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/version.properties	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/ext-4.2.1.883/version.properties	(revision 18732)
@@ -0,0 +1,9 @@
+# Build date: 2013-05-16 14:36:50
+version.major=4
+version.minor=2
+version.patch=1
+version.build=883
+version.full=4.2.1.883
+version.str=4.2
+version.name=ext-4.2.1.883
+version.git.hash=f9be68accb407158ba2b1be2c226a6ce1f649314
Index: branches/FACT++_part_filenames/dim/WebDID/index.html
===================================================================
--- branches/FACT++_part_filenames/dim/WebDID/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/dim/WebDID/index.html	(revision 18732)
@@ -0,0 +1,16 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>DID</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon"> 
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> 
+<link rel="stylesheet" type="text/css" href="ext-4.2.1.883/resources/css/ext-all.css" />
+
+    <!-- GC -->
+
+<script type="text/javascript" src="ext-4.2.1.883/ext-all.js"></script>
+<script type="text/javascript" src="did.js"></script>
+</head>
+<body>
+</body>
+</html>
Index: branches/FACT++_part_filenames/dim/dim/dic.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dic.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dic.h	(revision 18732)
@@ -0,0 +1,75 @@
+#ifndef __DICDEFS
+#define __DICDEFS
+
+#include "dim_common.h"
+
+/* part for CFORTRAN */
+
+#define dic_info_service dic_info_service_
+#define dic_info_service_stamped dic_info_service_stamped_
+#define dic_cmnd_service dic_cmnd_service_
+#define dic_cmnd_callback dic_cmnd_callback_
+#define dic_cmnd_service_stamped dic_cmnd_service_stamped_
+#define dic_cmnd_callback_stamped dic_cmnd_callback_stamped_
+#define dic_change_address dic_change_address_
+#define dic_release_service dic_release_service_
+#define dic_find_service dic_find_service_
+#define dic_get_id dic_get_id_
+#define dic_get_quality dic_get_quality_
+#define dic_get_timestamp dic_get_timestamp_
+#define dic_get_format dic_get_format_
+
+/* Routine definition */
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( unsigned dic_info_service, (__CXX_CONST char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*, void*, int*),
+				    dim_long tag, void *fill_addr, int fill_size) );
+_DIM_PROTOE( unsigned dic_info_service_stamped, (__CXX_CONST char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*, void*, int*),
+				    dim_long tag, void *fill_addr, int fill_size) );
+_DIM_PROTOE( int dic_cmnd_callback,      (__CXX_CONST char *service_name, void *service_address,
+				    int service_size, void (*usr_routine)(void*, int*),
+				    dim_long tag) );
+_DIM_PROTOE( int dic_cmnd_service,      (__CXX_CONST char *service_name, void *service_address,
+				    int service_size) );
+_DIM_PROTOE( void dic_change_address,  (unsigned service_id, void *service_address,
+				    int service_size) );
+_DIM_PROTOE( void dic_release_service,  (unsigned service_id) );
+_DIM_PROTOE( int dic_find_service,      (__CXX_CONST char *service_name) );
+_DIM_PROTOE( int dic_get_id,      		(__CXX_CONST char *name) );
+_DIM_PROTOE( int dic_get_quality,  		(unsigned service_id) );
+_DIM_PROTOE( int dic_get_timestamp,  (unsigned service_id, int *secs, int *milisecs) );
+_DIM_PROTOE( char *dic_get_format,      		(unsigned service_id) );
+_DIM_PROTOE( void dic_disable_padding,      		() );
+_DIM_PROTOE( void dic_close_dns,      		() );
+_DIM_PROTOE( void dic_add_error_handler,(void (*usr_routine)(int, int, char*)) );
+_DIM_PROTOE( char *dic_get_error_services,	() );
+_DIM_PROTOE( char *dic_get_server_services,	(int conn_id) );
+_DIM_PROTOE( int dic_get_server,       (char *name ) );
+_DIM_PROTOE( int dic_get_conn_id,      () );
+_DIM_PROTOE( void dic_stop,      () );
+_DIM_PROTOE( int dic_get_server_pid,       (int *pid ) );
+
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+#endif
+
+
+
+
+
+
+
+
+
Index: branches/FACT++_part_filenames/dim/dim/dic.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dic.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dic.hxx	(revision 18732)
@@ -0,0 +1,513 @@
+#ifndef __DICHHDEFS
+#define __DICHHDEFS
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#ifdef __VMS
+#include <starlet.h>
+#endif
+#include "dim_core.hxx"
+#include "dim.hxx"
+#include "tokenstring.hxx"
+
+enum DimServiceType {DimSERVICE=1, DimCOMMAND, DimRPC};
+
+class DimClient;
+class DimInfo;
+class DimCurrentInfo;
+class DimRpcInfo;
+
+class DllExp DimInfoHandler{
+public:
+	DimInfo *itsService;
+    DimInfo *getInfo() { return itsService; }; 
+	virtual void infoHandler() = 0;
+	virtual ~DimInfoHandler() {};
+};
+
+class DllExp DimInfo : public DimInfoHandler, public DimTimer{
+
+public :
+	DimInfoHandler *itsHandler;
+
+	DimInfo()
+		{ subscribe((char *)0, 0, (void *)0, 0, 0); };
+	DimInfo(const char *name, int nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimInfo(const char *name, int time, int nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimInfo(const char *name, float nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimInfo(const char *name, int time, float nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimInfo(const char *name, double nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimInfo(const char *name, int time, double nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimInfo(const char *name, longlong nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimInfo(const char *name, int time, longlong nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimInfo(const char *name, short nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimInfo(const char *name, int time, short nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimInfo(const char *name, char *nolink) 
+		{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimInfo(const char *name, int time, char *nolink) 
+		{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimInfo(const char *name, void *nolink, int nolinksize) 
+		{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimInfo(const char *name, int time, void *nolink, int nolinksize) 
+		{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimInfo(const char *name, int nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimInfo(const char *name, float nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimInfo(const char *name, double nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimInfo(const char *name, short nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+	DimInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimInfo();
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+	int getSize() {return itsSize; };
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+
+	virtual void infoHandler();
+	void timerHandler();
+	virtual void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+	virtual void doIt();
+	int getQuality();
+	int getTimestamp();
+	int getTimestampMillisecs();
+	char *getFormat();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+protected :
+	char *itsName;
+	int itsId;
+	int itsTime;
+	int itsType;
+//	int itsTagId;
+	char *itsFormat;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	int secs, millisecs;
+};
+
+class DllExp DimStampedInfo : public DimInfo{
+
+public :
+	DimStampedInfo(){};
+	DimStampedInfo(const char *name, int nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimStampedInfo(const char *name, int time, int nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimStampedInfo(const char *name, float nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimStampedInfo(const char *name, int time, float nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimStampedInfo(const char *name, double nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimStampedInfo(const char *name, int time, double nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimStampedInfo(const char *name, longlong nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimStampedInfo(const char *name, int time, longlong nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimStampedInfo(const char *name, short nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimStampedInfo(const char *name, int time, short nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimStampedInfo(const char *name, char *nolink) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimStampedInfo(const char *name, int time, char *nolink) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimStampedInfo(const char *name, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimStampedInfo(const char *name, int time, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimStampedInfo(const char *name, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimStampedInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimStampedInfo(const char *name, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimStampedInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimStampedInfo(const char *name, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimStampedInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimStampedInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimStampedInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimStampedInfo(const char *name, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimStampedInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+		DimStampedInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimStampedInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimStampedInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimStampedInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimStampedInfo();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+private :
+	void doIt();
+	void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+};
+
+class DllExp DimUpdatedInfo : public DimInfo{
+
+public :
+	DimUpdatedInfo(){};
+	DimUpdatedInfo(const char *name, int nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimUpdatedInfo(const char *name, int time, int nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimUpdatedInfo(const char *name, float nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimUpdatedInfo(const char *name, int time, float nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimUpdatedInfo(const char *name, double nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimUpdatedInfo(const char *name, int time, double nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimUpdatedInfo(const char *name, longlong nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimUpdatedInfo(const char *name, int time, longlong nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimUpdatedInfo(const char *name, short nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimUpdatedInfo(const char *name, int time, short nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimUpdatedInfo(const char *name, char *nolink) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimUpdatedInfo(const char *name, int time, char *nolink) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimUpdatedInfo(const char *name, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimUpdatedInfo(const char *name, int time, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimUpdatedInfo(const char *name, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimUpdatedInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimUpdatedInfo(const char *name, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimUpdatedInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimUpdatedInfo(const char *name, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimUpdatedInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimUpdatedInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimUpdatedInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimUpdatedInfo(const char *name, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimUpdatedInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+	DimUpdatedInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimUpdatedInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimUpdatedInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimUpdatedInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimUpdatedInfo();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+private :
+	void doIt();
+	void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+};
+
+class DllExp DimCmnd {
+public :
+
+	int wakeUp;
+	int result;
+	int send(char *name, void *data, int datasize);
+	void sendNB(char *name, void *data, int datasize);
+  DimCmnd(){};
+};
+
+class DllExp DimCurrentInfo {
+
+public :
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+//	int itsTagId;
+	int wakeUp;
+
+	DimCurrentInfo(){
+		subscribe((char *)0, 0, (void *)0, 0); };
+	DimCurrentInfo(const char *name, int nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(int)); };
+	DimCurrentInfo(const char *name, float nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(float)); };
+	DimCurrentInfo(const char *name, double nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(double)); };
+	DimCurrentInfo(const char *name, longlong nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(longlong)); };
+	DimCurrentInfo(const char *name, short nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(short)); };
+	DimCurrentInfo(const char *name, char *nolink) { 
+		subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1); };
+	DimCurrentInfo(const char *name, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, nolink, nolinksize); };
+	DimCurrentInfo(const char *name, int time, int nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(int)); };
+	DimCurrentInfo(const char *name, int time, float nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(float)); };
+	DimCurrentInfo(const char *name, int time, double nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(double)); };
+	DimCurrentInfo(const char *name, int time, longlong nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(longlong)); };
+	DimCurrentInfo(const char *name, int time, short nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(short)); };
+	DimCurrentInfo(const char *name, int time, char *nolink) { 
+		subscribe((char *)name, time, nolink, (int)strlen(nolink)+1); };
+	DimCurrentInfo(const char *name, int time, void *nolink, int nolinksize) { 
+		subscribe((char *)name, time, nolink, nolinksize); };
+
+
+	virtual ~DimCurrentInfo();
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+	int getSize()  { getData(); return itsSize; } ;
+	void subscribe(char *name, void *nolink, int nolinksize, int time) 
+		{ subscribe((char *)name, time, nolink, nolinksize); };
+
+private :
+	char *itsName;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	void subscribe(char *name, int time, void *nolink, int nolinksize);
+};
+
+class DllExp DimRpcInfo : public DimTimer {
+public :
+	int itsId;
+//	int itsTagId;
+	int itsInit;
+	void *itsData;
+	int itsDataSize;
+	void *itsDataOut;
+	int itsDataOutSize;
+	int itsSize;
+	int wakeUp;
+	int itsWaiting;
+	int itsConnected;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	DimRpcInfo *itsHandler;
+
+	DimRpcInfo(const char *name, int nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(int), 0); };
+	DimRpcInfo(const char *name, float nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(float), 0); };
+	DimRpcInfo(const char *name, double nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(double), 0); };
+	DimRpcInfo(const char *name, longlong nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(longlong), 0); };
+	DimRpcInfo(const char *name, short nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(short), 0); };
+	DimRpcInfo(const char *name, char *nolink) { 
+		subscribe((char *)name, 0, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimRpcInfo(const char *name, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, 0, nolink, nolinksize, 0); };
+
+	DimRpcInfo(const char *name, int time, int nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(int), time); };
+	DimRpcInfo(const char *name, int time, float nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(float), time); };
+	DimRpcInfo(const char *name, int time, double nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(double), time); };
+	DimRpcInfo(const char *name, int time, longlong nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(longlong), time); };
+	DimRpcInfo(const char *name, int time, short nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(short), time); };
+	DimRpcInfo(const char *name, int time, char *nolink) { 
+		subscribe((char *)name, 0, 0, nolink, (int)strlen(nolink)+1, time); };
+	DimRpcInfo(const char *name, int time, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, 0, nolink, nolinksize, time); };
+	
+	virtual void rpcInfoHandler();
+
+	virtual ~DimRpcInfo();
+	int getId() {return itsId;};
+	void keepWaiting() {itsWaiting = 2;};
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+	int getSize()  { getData(); return itsSize; } ;
+
+	void setData(void *data, int size) { doIt(data, size); };
+	void setData(int &data) { doIt(&data, sizeof(int)); } ;
+	void setData(float &data) { doIt(&data, sizeof(float)); } ;
+	void setData(double &data) { doIt(&data, sizeof(double)); } ;
+	void setData(longlong &data) { doIt(&data, sizeof(longlong)); } ;
+	void setData(short &data) { doIt(&data, sizeof(short)); } ;
+	void setData(char *data)  { doIt(data, (int)strlen(data)+1); } ;
+
+private :
+	char *itsName;
+	char *itsNameIn;
+	char *itsNameOut;
+	int itsTimeout;
+	void subscribe(char *name, void *data, int size, 
+		void *nolink, int nolinksize, int timeout);
+	void doIt(void *data, int size);
+	void timerHandler();
+};
+
+class DllExp DimClient : public DimInfoHandler, public DimErrorHandler
+{
+public:
+
+	static char *dimDnsNode;
+	static DimErrorHandler *itsCltError;
+
+	DimClient();
+	virtual ~DimClient();
+	static int sendCommand(const char *name, int data);
+	static int sendCommand(const char *name, float data);
+	static int sendCommand(const char *name, double data);
+	static int sendCommand(const char *name, longlong data);
+	static int sendCommand(const char *name, short data);
+	static int sendCommand(const char *name, const char *data);
+	static int sendCommand(const char *name, void *data, int datasize);
+	static void sendCommandNB(const char *name, int data);
+	static void sendCommandNB(const char *name, float data);
+	static void sendCommandNB(const char *name, double data);
+	static void sendCommandNB(const char *name, longlong data);
+	static void sendCommandNB(const char *name, short data);
+	static void sendCommandNB(const char *name, char *data);
+	static void sendCommandNB(const char *name, void *data, int datasize);
+	static int setExitHandler(const char *serverName);
+	static int killServer(const char *serverName);
+	static int setDnsNode(const char *node);
+	static int setDnsNode(const char *node, int port);
+	static char *getDnsNode();
+	static int getDnsPort();
+	static void addErrorHandler(DimErrorHandler *handler);
+	void addErrorHandler();
+	virtual void errorHandler(int /* severity */, int /* code */, char* /* msg */) {};
+	static char *serverName;
+	// Get Current Server Identifier	
+	static int getServerId();
+	// Get Current Server Process Identifier	
+	static int getServerPid();
+	// Get Current Server Name	
+	static char *getServerName();
+	static char **getServerServices();
+//	static char *getServerServices(int serverId);
+
+	virtual void infoHandler() {};
+
+	static int dicNoCopy;
+	static void setNoDataCopy();
+	static int getNoDataCopy();
+	static int inCallback();
+};
+
+class DllExp DimBrowser
+{
+public :
+
+	DimBrowser();
+
+	~DimBrowser();
+
+	int getServices(const char *serviceName);
+	int getServers();
+	int getServerServices(const char *serverName);
+	int getServerClients(const char *serverName);
+	int getServices(const char *serviceName, int timeout);
+	int getServers(int timeout);
+	int getServerServices(const char *serverName, int timeout);
+	int getServerClients(const char *serverName, int timeout);
+	int getNextService(char *&service, char *&format);
+	int getNextServer(char *&server, char *&node);
+	int getNextServer(char *&server, char *&node, int &pid);
+	int getNextServerService(char *&service, char *&format);
+	int getNextServerClient(char *&client, char *&node);
+
+private:
+
+	TokenString *itsData[5];
+	int currIndex; 
+	char *currToken;
+	char none;
+	DimRpcInfo *browserRpc;
+};
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dim.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim.h	(revision 18732)
@@ -0,0 +1,608 @@
+#ifndef __DIMDEFS
+#define __DIMDEFS
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started           : 10-11-91
+ * Last modification : 03-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#include "dim_common.h"
+
+#define DIM_VERSION_NUMBER 2015
+
+
+#define MY_LITTLE_ENDIAN	0x1
+#define MY_BIG_ENDIAN 		0x2
+
+#define VAX_FLOAT		0x10
+#define IEEE_FLOAT 		0x20
+#define AXP_FLOAT		0x30
+
+#define MY_OS9			0x100
+#define IT_IS_FLOAT		0x1000
+
+#ifdef VMS
+#include <ssdef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <starlet.h>
+#include <time.h>
+#define DIM_NOSHARE noshare
+#define RE_ENABLE_AST   long int ast_enable = sys$setast(1);
+#define RE_DISABLE_AST  if (ast_enable != SS$_WASSET) sys$setast(0);
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#ifdef __alpha
+#define MY_FORMAT MY_LITTLE_ENDIAN+AXP_FLOAT
+#else
+#define MY_FORMAT MY_LITTLE_ENDIAN+VAX_FLOAT
+#endif
+#endif
+
+#ifdef __unix__
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#ifdef VxWorks
+#include <sigLib.h>
+#endif
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST   sigset_t set, oset;sigemptyset(&set);sigaddset(&set,SIGIO);sigaddset(&set,SIGALRM);sigprocmask(SIG_UNBLOCK,&set,&oset);
+#define RE_DISABLE_AST  sigprocmask(SIG_SETMASK,&oset,0);
+#ifdef MIPSEL
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#define MY_FORMAT MY_LITTLE_ENDIAN+IEEE_FLOAT
+#endif
+#ifdef MIPSEB
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT
+#endif
+_DIM_PROTO( int _swapl,  (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+
+#endif
+
+#ifdef WIN32
+#include <windows.h>
+#include <process.h>
+#include <io.h>
+#include <fcntl.h>
+#include <Winsock.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST     
+#define RE_DISABLE_AST    
+#ifdef MIPSEL
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#define MY_FORMAT MY_LITTLE_ENDIAN+IEEE_FLOAT
+#endif
+#ifdef MIPSEB
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT
+#endif
+_DIM_PROTO( int _swapl,  (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+#endif
+
+#ifdef OSK
+#include <types.h>
+#ifndef _UCC
+#include <machine/types.h>
+#else
+#define register
+#endif
+#include <inet/in.h>
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST      sigmask(DEC_LEVEL);
+#define RE_DISABLE_AST     sigmask(INC_LEVEL);
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT+MY_OS9
+typedef unsigned short	ushort;
+_DIM_PROTO( char *getenv,  (char *name) );
+_DIM_PROTO( void *malloc,  (unsigned size) );
+_DIM_PROTO( void *realloc, (void *ptr, unsigned size) );
+_DIM_PROTO( int _swapl,   (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+#endif
+
+#define	TRUE	1
+#define	FALSE	0
+
+#define DNS_TASK	"DIM_DNS"
+#define DNS_PORT	2505			/* Name server port          */
+#define SEEK_PORT	0			/* server should seek a port */
+
+#define MIN_BIOCNT	 	50
+#ifdef OSK
+#define DIS_DNS_TMOUT_MIN	5
+#define DIS_DNS_TMOUT_MAX	10
+#define DIC_DNS_TMOUT_MIN	5
+#define DIC_DNS_TMOUT_MAX	10
+#define MAX_SERVICE_UNIT 	32
+#define MAX_REGISTRATION_UNIT 100
+#define CONN_BLOCK		32
+#define MAX_CONNS		32
+#define ID_BLOCK		64
+#define TCP_RCV_BUF_SIZE	4096
+#define TCP_SND_BUF_SIZE	4096
+#else
+#define DIS_DNS_TMOUT_MIN	5
+#define DIS_DNS_TMOUT_MAX	10
+#define DIC_DNS_TMOUT_MIN	5
+#define DIC_DNS_TMOUT_MAX	10
+#define MAX_SERVICE_UNIT 	100
+#define MAX_REGISTRATION_UNIT 100
+#define CONN_BLOCK		256
+#define MAX_CONNS		1024
+#define ID_BLOCK		512
+#define TCP_RCV_BUF_SIZE	/*16384*//*32768*/65536
+#define TCP_SND_BUF_SIZE	/*16384*//*32768*/65536
+#endif
+#define DID_DNS_TMOUT_MIN	5
+#define DID_DNS_TMOUT_MAX	10
+/*
+#define WATCHDOG_TMOUT_MIN	120
+#define WATCHDOG_TMOUT_MAX	180
+*/
+#define WATCHDOG_TMOUT_MIN	60
+#define WATCHDOG_TMOUT_MAX	90
+/*
+#define WATCHDOG_TMOUT_MIN	15
+#define WATCHDOG_TMOUT_MAX	25
+*/
+#define MAX_NODE_NAME		40
+#define MAX_TASK_NAME		40
+#define MAX_NAME 		132
+/*
+#define MAX_CMND 		16384
+#define MAX_IO_DATA 	65535
+#define MAX_IO_DATA		(TCP_SND_BUF_SIZE - 16)
+*/
+typedef enum { DNS_DIS_REGISTER, DNS_DIS_KILL, DNS_DIS_STOP, 
+			   DNS_DIS_EXIT, DNS_DIS_SOFT_EXIT } DNS_DIS_TYPES;
+typedef enum { RD_HDR, RD_DATA, RD_DUMMY } CONN_STATE;
+typedef enum { NOSWAP, SWAPS, SWAPL, SWAPD} SWAP_TYPE;
+
+#define DECNET			0		/* Decnet as transport layer */
+#define TCPIP			1		/* Tcpip as transport layer  */
+#define BOTH			2		/* Both protocols allowed    */
+
+#define	STA_DISC		(-1)		/* Connection lost           */
+#define	STA_DATA		0		/* Data received             */
+#define	STA_CONN		1		/* Connection made           */
+
+#define	START_PORT_RANGE	5100		/* Lowest port to use        */
+#define	STOP_PORT_RANGE		10000		/* Highest port to use       */
+#define	TEST_TIME_OSK		15		/* Interval to test conn.    */
+#define	TEST_TIME_VMS		30		/* Interval to test conn.    */
+#define	TEST_WRITE_TAG		25		/* DTQ tag for test writes   */
+#define	WRITE_TMOUT			5		/* Interval to wait while writing.    */
+
+#define	OPN_MAGIC		0xc0dec0de	/* Magic value 1st packet    */
+#define	HDR_MAGIC		0xfeadfead	/* Magic value in header     */
+#define	LONG_HDR_MAGIC	0xfeadc0de	/* Magic value in long header*/
+#define	TST_MAGIC		0x11131517	/* Magic value, test write   */
+#define	TRP_MAGIC		0x71513111	/* Magic value, test reply   */
+
+/* String Format */
+
+typedef struct{
+	int par_num;
+	short par_bytes;
+	short flags;     /* bits 0-1 is type of swap, bit 4 id float conversion */
+}FORMAT_STR;
+
+/* Packet sent by the client to the server inside DNA */
+typedef struct{
+	int code;
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} DNA_NET;
+
+/* Packet sent by the client to the server */
+typedef struct{
+	int size;
+	char service_name[MAX_NAME];
+	int service_id;
+	int type;
+	int timeout;
+	int format;
+	int buffer[1];
+} DIC_PACKET;
+
+#define DIC_HEADER		(MAX_NAME + 20)
+
+/* Packets sent by the server to the client */
+typedef struct{
+	int size;
+	int service_id;
+	int buffer[1];
+} DIS_PACKET;
+
+#define DIS_HEADER		8
+
+typedef struct{
+	int size;
+	int service_id;
+	int time_stamp[2];
+	int quality;
+	int reserved[3];
+	int buffer[1];
+} DIS_STAMPED_PACKET;
+
+#define DIS_STAMPED_HEADER		32
+
+/* Packet sent by the server to the name_server */
+typedef struct{
+	char service_name[MAX_NAME];
+	int service_id;
+	char service_def[MAX_NAME];
+} SERVICE_REG;
+	
+typedef struct{
+	int size;
+	SRC_TYPES src_type;
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	int protocol;
+	int format;
+	int n_services;
+	SERVICE_REG services[MAX_SERVICE_UNIT];
+} DIS_DNS_PACKET;
+
+#define DIS_DNS_HEADER		(MAX_NODE_NAME + MAX_TASK_NAME + 28) 
+
+/* Packet sent by the name_server to the server */
+typedef struct {
+	int size;
+	int type;
+} DNS_DIS_PACKET;
+
+#define DNS_DIS_HEADER		8
+
+/* Packet sent by the client to the name_server */
+typedef struct{
+	char service_name[MAX_NAME];
+	int service_id;
+} SERVICE_REQ;
+	
+typedef struct{
+	int size;
+	SRC_TYPES src_type;
+	SERVICE_REQ service;
+} DIC_DNS_PACKET;
+
+/* Packet sent by the name_server to the client */
+typedef struct {
+	int size;
+	int service_id;
+	char service_def[MAX_NAME];
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	int protocol;
+	int format;
+} DNS_DIC_PACKET;
+
+#define DNS_DIC_HEADER		(MAX_NODE_NAME + MAX_TASK_NAME + MAX_NAME + 24) 
+
+typedef struct {
+	char name[MAX_NAME];
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int type;
+	int status;
+	int n_clients;
+} DNS_SERV_INFO;
+
+typedef struct {
+	char name[MAX_NAME];
+	int type;
+	int status;
+	int n_clients;
+} DNS_SERVICE_INFO;
+
+typedef struct {
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int pid;
+	int n_services;
+} DNS_SERVER_INFO;
+
+typedef struct {
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO services[1];
+} DNS_DID;
+
+typedef struct {
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} DNS_CLIENT_INFO;
+
+typedef struct {
+	int header_size;
+	int data_size;
+	int header_magic;
+} DNA_HEADER;
+
+typedef struct {
+	int header_size;
+	int data_size;
+	int header_magic;
+	int time_stamp[2];
+	int quality;
+} DNA_LONG_HEADER;
+
+/* Connection handling */
+
+typedef struct timer_entry{
+	struct timer_entry *next;
+	struct timer_entry *prev;
+	struct timer_entry *next_done;
+	int time;
+	int time_left;
+	void (*user_routine)();
+	dim_long tag;
+} TIMR_ENT;
+
+typedef struct {
+	int busy;
+	void (*read_ast)();
+	void (*error_ast)();
+	int *buffer;
+	int buffer_size;
+	char *curr_buffer;
+	int curr_size;
+	int full_size;
+	int protocol;
+	CONN_STATE state;
+	int writing;
+	int saw_init;
+} DNA_CONNECTION;
+
+extern DllExp DIM_NOSHARE DNA_CONNECTION *Dna_conns;
+
+typedef struct {
+	int channel;
+	int mbx_channel;
+	void (*read_rout)();
+	char *buffer;
+	int size;
+/*
+	unsigned short *iosb_r;
+	unsigned short *iosb_w;
+*/
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int port;
+	int reading;
+	int timeout;
+	int write_timedout;
+	TIMR_ENT *timr_ent;
+	time_t last_used;
+} NET_CONNECTION;
+ 
+extern DllExp DIM_NOSHARE NET_CONNECTION *Net_conns;
+
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	int port;
+	int pid;
+	char *service_head;
+} DIC_CONNECTION;
+
+extern DIM_NOSHARE DIC_CONNECTION *Dic_conns;
+
+typedef struct {
+	SRC_TYPES src_type;
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	char *service_head;
+	char *node_head;
+	int protocol;
+	int validity;
+	int n_services;
+	int old_n_services;
+	TIMR_ENT *timr_ent;
+	int already;
+	char long_task_name[MAX_NAME];
+} DNS_CONNECTION;
+
+extern DllExp DIM_NOSHARE DNS_CONNECTION *Dns_conns;
+
+extern DllExp DIM_NOSHARE int Curr_N_Conns;
+
+/* Client definitions needed by dim_jni.c (from H.Essel GSI) */
+typedef enum {
+	NOT_PENDING, WAITING_DNS_UP, WAITING_DNS_ANSWER, WAITING_SERVER_UP,
+	WAITING_CMND_ANSWER, DELETED
+} PENDING_STATES;
+
+typedef struct dic_serv {
+	struct dic_serv *next;
+	struct dic_serv *prev;
+	char serv_name[MAX_NAME];
+	int serv_id;
+	FORMAT_STR format_data[MAX_NAME/4];
+	char def[MAX_NAME];
+	int format;
+	int type;
+	int timeout;
+	int curr_timeout;
+	int *serv_address;
+	int serv_size;
+	int *fill_address;
+	int fill_size;
+	void (*user_routine)();
+	dim_long tag;
+	TIMR_ENT *timer_ent;
+	int conn_id;
+	PENDING_STATES pending;
+	int tmout_done;
+	int stamped;
+	int time_stamp[2];
+	int quality;
+    int tid;
+} DIC_SERVICE;
+
+/* PROTOTYPES */
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+/* DNA */
+_DIM_PROTOE( int dna_start_read,    (int conn_id, int size) );
+_DIM_PROTOE( void dna_test_write,   (int conn_id) );
+_DIM_PROTOE( int dna_write,         (int conn_id, __CXX_CONST void *buffer, int size) );
+_DIM_PROTOE( int dna_write_nowait,  (int conn_id, __CXX_CONST void *buffer, int size) );
+_DIM_PROTOE( int dna_open_server,   (__CXX_CONST char *task, void (*read_ast)(), int *protocol,
+				int *port, void (*error_ast)()) );
+_DIM_PROTOE( int dna_get_node_task, (int conn_id, char *node, char *task) );
+_DIM_PROTOE( int dna_open_client,   (__CXX_CONST char *server_node, __CXX_CONST char *server_task, int port,
+                                int server_protocol, void (*read_ast)(), void (*error_ast)(), SRC_TYPES src_type ));
+_DIM_PROTOE( int dna_close,         (int conn_id) );
+_DIM_PROTOE( void dna_report_error, (int conn_id, int code, char *routine_name) );
+
+
+/* TCPIP */
+_DIM_PROTOE( int tcpip_open_client,     (int conn_id, char *node, char *task,
+                                    int port) );
+_DIM_PROTOE( int tcpip_open_server,     (int conn_id, char *task, int *port) );
+_DIM_PROTOE( int tcpip_open_connection, (int conn_id, int channel) );
+_DIM_PROTOE( int tcpip_start_read,      (int conn_id, char *buffer, int size,
+                                    void (*ast_routine)()) );
+_DIM_PROTOE( int tcpip_start_listen,    (int conn_id, void (*ast_routine)()) );
+_DIM_PROTOE( int tcpip_write,           (int conn_id, char *buffer, int size) );
+_DIM_PROTOE( void tcpip_get_node_task,  (int conn_id, char *node, char *task) );
+_DIM_PROTOE( int tcpip_close,           (int conn_id) );
+_DIM_PROTOE( int tcpip_failure,         (int code) );
+_DIM_PROTOE( void tcpip_report_error,   (int code) );
+
+
+/* DTQ */
+_DIM_PROTOE( int dtq_create,          (void) );
+_DIM_PROTOE( int dtq_delete,          (int queue_id) );
+_DIM_PROTOE( TIMR_ENT *dtq_add_entry, (int queue_id, int time,
+                                  void (*user_routine)(), dim_long tag) );
+_DIM_PROTOE( int dtq_clear_entry,     (TIMR_ENT *entry) );
+_DIM_PROTOE( int dtq_rem_entry,       (int queue_id, TIMR_ENT *entry) );
+
+/* UTIL */
+typedef struct dll {
+	struct dll *next;
+	struct dll *prev;
+	char user_info[1];
+} DLL;
+
+typedef struct sll {
+	struct sll *next;
+	char user_info[1];
+} SLL;
+
+_DIM_PROTO( void DimDummy,        () );     
+_DIM_PROTOE( void conn_arr_create, (SRC_TYPES type) );
+_DIM_PROTOE( int conn_get,         (void) );
+_DIM_PROTOE( void conn_free,       (int conn_id) );
+_DIM_PROTOE( void *arr_increase,   (void *conn_ptr, int conn_size, int n_conns) );
+_DIM_PROTOE( void id_arr_create,   () );
+_DIM_PROTOE( void *id_arr_increase,(void *id_ptr, int id_size, int n_ids) );
+
+_DIM_PROTOE( void dll_init,         ( DLL *head ) );
+_DIM_PROTOE( void dll_insert_queue, ( DLL *head, DLL *item ) );
+_DIM_PROTOE( void dll_insert_after, ( DLL *after, DLL *item ) );
+_DIM_PROTOE( DLL *dll_search,       ( DLL *head, char *data, int size ) );
+_DIM_PROTOE( DLL *dll_get_next,     ( DLL *head, DLL *item ) );
+_DIM_PROTOE( DLL *dll_get_prev,     ( DLL *head, DLL *item ) );
+_DIM_PROTOE( int dll_empty,         ( DLL *head ) );
+_DIM_PROTOE( void dll_remove,       ( DLL *item ) );
+
+_DIM_PROTOE( void sll_init,               ( SLL *head ) );
+_DIM_PROTOE( int sll_insert_queue,        ( SLL *head, SLL *item ) );
+_DIM_PROTOE( SLL *sll_search,             ( SLL *head, char *data, int size ) );
+_DIM_PROTOE( SLL *sll_get_next,           ( SLL *item ) );
+_DIM_PROTOE( int sll_empty,               ( SLL *head ) );
+_DIM_PROTOE( int sll_remove,              ( SLL *head, SLL *item ) );
+_DIM_PROTOE( SLL *sll_remove_head,        ( SLL *head ) );
+_DIM_PROTOE( SLL *sll_search_next_remove, ( SLL *item, int offset, char *data, int size ) );
+_DIM_PROTOE( SLL *sll_get_head, 		  ( SLL *head ) );
+
+_DIM_PROTOE( int HashFunction,         ( char *name, int max ) );
+
+_DIM_PROTOE( int copy_swap_buffer_out, (int format, FORMAT_STR *format_data, 
+					void *buff_out, void *buff_in, int size) );
+_DIM_PROTOE( int copy_swap_buffer_in, (FORMAT_STR *format_data, void *buff_out, 
+					void *buff_in, int size) );
+_DIM_PROTOE( int get_node_name, (char *node_name) );
+
+_DIM_PROTOE( int get_dns_port_number, () );
+
+_DIM_PROTOE( int get_dns_node_name, ( char *node_name ) );
+
+_DIM_PROTOE( int get_dns_accepted_domains, ( char *domains ) );
+_DIM_PROTOE( int get_dns_accepted_nodes, ( char *nodes ) );
+
+_DIM_PROTO( double _swapd_by_addr, (double *d) );
+_DIM_PROTO( int _swapl_by_addr, (int *l) );
+_DIM_PROTO( short _swaps_by_addr, (short *s) );
+_DIM_PROTO( void _swapd_buffer, (double *dout, double *din, int n) );
+_DIM_PROTO( void _swapl_buffer, (int *lout, int *lin, int n) );
+_DIM_PROTO( void _swaps_buffer, (short *sout, short *sin, int n) );
+
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+
+#define SIZEOF_CHAR 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_LONG 4
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+
+#if defined(OSK) && !defined(_UCC)
+#	define inc_pter(p,i) (char *)p += (i)
+#else
+#	define inc_pter(p,i) p = (void *)((char *)p + (i))
+#endif
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dim.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim.hxx	(revision 18732)
@@ -0,0 +1,60 @@
+#ifndef DIM_HH
+#define DIM_HH
+
+#include "dim_common.h"
+#include "sllist.hxx"
+#include "dllist.hxx"
+
+class DimCore
+{
+public:
+	static int inCallback;
+};
+
+class DllExp DimErrorHandler{
+public:
+	virtual void errorHandler(int severity, int code, char *msg) = 0;
+	virtual ~DimErrorHandler() {};
+};
+
+class DllExp DimTimer
+{
+public:
+	int firedFlag;
+	int runningFlag;
+	DimTimer();
+	DimTimer(int time);
+	virtual ~DimTimer();
+	int start(int time);
+	int stop();
+	int fired() { return firedFlag;}; 
+	void clear() { firedFlag = 0;};
+	virtual void timerHandler() { };
+};
+
+class DllExp DimThread
+{
+public:
+	long itsId;
+	DimThread();
+	virtual ~DimThread();
+	int start();
+//	int stop();
+//	void start(int time);
+//	int stop();
+//	int fired() { return firedFlag;}; 
+//	void clear() { firedFlag = 0;};
+	virtual void threadHandler() { };
+};
+
+class DllExp DimUtil
+{
+public:
+	static char *getEnvVar(char *varName);
+	DimUtil();
+	~DimUtil();
+	static char *itsBuffer;
+	static int itsBufferSize;
+};
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dim_common.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim_common.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim_common.h	(revision 18732)
@@ -0,0 +1,311 @@
+#ifndef __COMMONDEFS
+#define __COMMONDEFS
+
+/* Service type definition */
+
+#ifndef ONCE_ONLY
+#define ONCE_ONLY	0x01
+#define TIMED		0x02
+#define MONITORED	0x04
+#define COMMAND		0x08
+#define DIM_DELETE	0x10
+#define MONIT_ONLY	0x20
+#define UPDATE 		0x40
+#define TIMED_ONLY	0x80
+#define MONIT_FIRST 0x100
+#define MAX_TYPE_DEF    0x100
+#define STAMPED       0x1000
+
+typedef enum { SRC_NONE, SRC_DIS, SRC_DIC, SRC_DNS, SRC_DNA, SRC_USR }SRC_TYPES;
+
+#ifdef __APPLE__
+#ifndef unix
+#define unix
+#endif
+#endif
+
+#ifdef __Lynx__
+#ifndef unix
+#define unix
+#endif
+#endif
+
+#ifdef unix
+#ifndef __unix__
+#define __unix__
+#endif
+#endif
+
+#ifdef linux
+#ifndef __linux__
+#define __linux__
+#endif
+#endif
+
+#if defined (_WIN64)
+typedef __int64		longlong;
+typedef longlong dim_long;
+#elif defined(WIN32)
+typedef __int64		longlong;
+typedef long	dim_long;
+#elif defined(__linux__)
+typedef long long int longlong;
+typedef long dim_long;
+#else
+#include <sys/types.h> 
+typedef int64_t	longlong;
+typedef long dim_long;
+#endif
+
+#endif
+
+#ifndef OSK
+#	ifdef _OSK
+#		define OSK
+#	endif
+#endif
+
+
+#ifdef __VMS
+#define VMS
+#endif
+
+#ifndef _DIM_PROTO
+#ifndef OSK		/* Temorary hack */
+#	if defined(__cplusplus) /* || (__STDC__ == 1) || defined(_ANSI_EXT) || defined(ultrix) */
+#		define	_DIM_PROTO(func,param)	func param
+#	else
+#		define _DIM_PROTO(func,param)	func ()
+#	endif
+#else
+#	define _DIM_PROTO(func,param)	func ()
+#endif
+#ifdef WIN32
+#ifdef DIMLIB
+#	define _DIM_PROTOE(func,param) __declspec(dllexport) _DIM_PROTO(func,param)
+#	define DllExp __declspec(dllexport)
+#else
+#	define _DIM_PROTOE(func,param) __declspec(dllimport) _DIM_PROTO(func,param)
+#	define DllExp __declspec(dllimport)
+#endif
+#else
+#	define _DIM_PROTOE(func,param) _DIM_PROTO(func,param)
+#	define DllExp
+#endif
+#endif
+
+#if defined (hpux) || defined (__osf__) || defined(_AIX)  || defined(WIN32)
+#ifndef NOTHREADS
+#define NOTHREADS
+#endif
+#endif
+
+#ifndef VMS
+#ifndef WIN32
+#ifdef NOTHREADS
+#ifndef DIMLIB
+#ifndef sleep
+#define sleep(t) dtq_sleep(t)
+#endif
+#endif
+#endif
+#endif
+#endif
+
+#ifdef VMS
+#include <ssdef.h>
+#define DISABLE_AST     long int ast_enable = sys$setast(0);
+#define ENABLE_AST      if (ast_enable == SS$_WASSET) sys$setast(1);
+#define dim_enable()    sys$setast(1);
+#endif
+
+#ifdef __unix__
+#include <signal.h>
+#include <unistd.h>
+
+extern int DIM_Threads_OFF;
+
+#define DISABLE_SIG     sigset_t set, oset; if (DIM_Threads_OFF) {\
+                                                sigemptyset(&set);\
+												sigaddset(&set,SIGIO);\
+												sigaddset(&set,SIGALRM);\
+												sigprocmask(SIG_BLOCK,&set,&oset);}
+#define ENABLE_SIG       if (DIM_Threads_OFF) {\
+                                                sigprocmask(SIG_SETMASK,&oset,0);}
+
+/*
+#define DISABLE_SIG     sigset_t set, oset; sigemptyset(&set);\
+						sigaddset(&set,SIGIO);\
+						sigaddset(&set,SIGALRM);\
+						sigprocmask(SIG_BLOCK,&set,&oset);
+#define ENABLE_SIG      sigprocmask(SIG_SETMASK,&oset,0);
+*/
+
+#define DISABLE_AST     DISABLE_SIG DIM_LOCK
+#define ENABLE_AST      DIM_UNLOCK ENABLE_SIG
+
+#ifdef VxWorks
+#define DIM_LOCK taskLock();
+#define DIM_UNLOCK taskUnlock();
+#else
+
+#ifndef NOTHREADS
+#include <pthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_DIM_PROTOE( void dim_lock,		() );
+_DIM_PROTOE( void dim_unlock,	() );
+_DIM_PROTOE( void dim_wait_cond,		() );
+_DIM_PROTOE( void dim_signal_cond,	() );
+#ifdef __cplusplus
+}
+#endif
+
+#define DIM_LOCK 	dim_lock();
+#define DIM_UNLOCK	dim_unlock();
+
+#else
+#include <time.h>
+#define DIM_LOCK
+#define DIM_UNLOCK
+#endif
+#endif
+#endif
+#ifdef OSK
+#define INC_LEVEL               1
+#define DEC_LEVEL               (-1)
+#define DISABLE_AST     sigmask(INC_LEVEL);
+#define ENABLE_AST      sigmask(DEC_LEVEL);
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( int id_get,           (void *ptr, int type) );
+_DIM_PROTOE( void id_free,         (int id, int type) );
+_DIM_PROTOE( void *id_get_ptr,     (int id, int type) );
+
+_DIM_PROTOE( unsigned int dtq_sleep,	(unsigned int secs) );
+_DIM_PROTOE( void dtq_start_timer,      (int secs, void(*rout)(void*), void *tag) );
+_DIM_PROTOE( int dtq_stop_timer,		(void *tag) );
+_DIM_PROTOE( void dim_init,				() );
+_DIM_PROTOE( void dim_no_threads,		() );
+_DIM_PROTOE( void dna_set_test_write,	(int conn_id, int time) );
+_DIM_PROTOE( void dna_rem_test_write,	(int conn_id) );
+_DIM_PROTOE( int dim_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dim_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dim_set_dns_port,		(int port) );
+_DIM_PROTOE( int dim_get_dns_port,		() );
+_DIM_PROTOE( void dic_set_debug_on,		() );
+_DIM_PROTOE( void dic_set_debug_off,	() );
+_DIM_PROTOE( void dim_print_msg,		(__CXX_CONST char *msg, int severity) );
+_DIM_PROTOE( void dim_print_date_time,		() );
+_DIM_PROTOE( void dim_set_write_timeout,		(int secs) );
+_DIM_PROTOE( int dim_get_write_timeout,		() );
+_DIM_PROTOE( void dim_usleep,	(unsigned int t) );
+_DIM_PROTOE( int dim_wait,		(void) );
+_DIM_PROTOE( int dim_get_priority,		(int dim_thread, int prio) );
+_DIM_PROTOE( int dim_set_priority,		(int dim_thread, int *prio) );
+_DIM_PROTOE( int dim_set_scheduler_class,		(int sched_class) );
+_DIM_PROTOE( int dim_get_scheduler_class,		(int *sched_class) );
+_DIM_PROTOE( dim_long dim_start_thread,    (void(*rout)(void*), void *tag) );
+_DIM_PROTOE( int dic_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dic_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dic_set_dns_port,		(int port) );
+_DIM_PROTOE( int dic_get_dns_port,		() );
+_DIM_PROTOE( int dis_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dis_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dis_set_dns_port,		(int port) );
+_DIM_PROTOE( int dis_get_dns_port,		() );
+_DIM_PROTOE( void dim_stop,				() );
+_DIM_PROTOE( int dim_stop_thread,		(dim_long tid) );
+_DIM_PROTOE( dim_long dis_add_dns,		(__CXX_CONST char *node, int port) );
+_DIM_PROTOE( dim_long dic_add_dns,		(__CXX_CONST char *node, int port) );
+_DIM_PROTOE( int dim_get_env_var,		(__CXX_CONST char *env_var, char *value, int value_size) );
+_DIM_PROTOE( int dim_set_write_buffer_size,		(int bytes) );
+_DIM_PROTOE( int dim_get_write_buffer_size,		() );
+_DIM_PROTOE( int dim_set_read_buffer_size,		(int bytes) );
+_DIM_PROTOE( int dim_get_read_buffer_size,		() );
+_DIM_PROTOE( void dis_set_debug_on,		() );
+_DIM_PROTOE( void dis_set_debug_off,	() );
+_DIM_PROTOE( void dim_set_keepalive_timeout,		(int secs) );
+_DIM_PROTOE( int dim_get_keepalive_timeout,		() );
+_DIM_PROTOE( void dim_set_listen_backlog,		(int size) );
+_DIM_PROTOE( int dim_get_listen_backlog,		() );
+
+#ifdef WIN32
+#define getpid _getpid
+_DIM_PROTOE( void dim_pause,		() );
+_DIM_PROTOE( void dim_wake_up,	() );
+_DIM_PROTOE( void dim_lock,		() );
+_DIM_PROTOE( void dim_unlock,	() );
+_DIM_PROTOE( void dim_sleep,	(unsigned int t) );
+_DIM_PROTOE( void dim_win_usleep,	(unsigned int t) );
+#define sleep(t)	dim_sleep(t);
+#define usleep(t)	dim_win_usleep(t);
+#define pause() 	dim_pause();
+#define wake_up()	dim_wake_up();
+#define DIM_LOCK 	dim_lock();
+#define DIM_UNLOCK	dim_unlock();
+#define DISABLE_AST	DIM_LOCK
+#define ENABLE_AST  DIM_UNLOCK
+#endif
+
+#ifdef __cplusplus
+}
+#undef __CXX_CONST
+#endif
+
+_DIM_PROTOE( void dim_print_date_time_millis,		() );
+
+/* ctime usage */
+#if defined (solaris) || (defined (LYNXOS) && !defined (__Lynx__) )
+#define my_ctime(t,str,size) ctime_r(t,str,size)
+#else 
+#if defined (__linux__) || defined (__Lynx__)
+#define my_ctime(t,str,size) ctime_r(t,str)
+#else
+#define my_ctime(t,str,size) strcpy(str,(const char *)ctime(t))
+#endif
+#endif
+
+/* DIM Error Severities*/
+typedef enum { DIM_INFO, DIM_WARNING, DIM_ERROR, DIM_FATAL }DIM_SEVERITIES;
+/* DIM Error codes */
+#define DIMDNSUNDEF 0x1		/* DIM_DNS_NODE undefined			FATAL */
+#define DIMDNSREFUS 0x2		/* DIM_DNS refuses connection		FATAL */
+#define DIMDNSDUPLC 0x3		/* Service already exists in DNS	FATAL */
+#define DIMDNSEXIT  0x4		/* DNS requests server to EXIT		FATAL */
+#define DIMDNSTMOUT 0x5		/* Server failed sending Watchdog	WARNING */
+
+#define DIMSVCDUPLC 0x10	/* Service already exists in Server	ERROR */
+#define DIMSVCFORMT 0x11	/* Bat format string for service	ERROR */
+#define DIMSVCINVAL 0x12	/* Service ID invalid				ERROR */
+#define DIMSVCTOOLG 0x13	/* Service name too long			ERROR */
+
+#define DIMTCPRDERR	0x20	/* TCP/IP read error				ERROR */
+#define DIMTCPWRRTY	0x21	/* TCP/IP write	error - Retrying	WARNING */
+#define DIMTCPWRTMO	0x22	/* TCP/IP write error - Disconnect	ERROR */
+#define DIMTCPLNERR	0x23	/* TCP/IP listen error				ERROR */
+#define DIMTCPOPERR	0x24	/* TCP/IP open server error			ERROR */
+#define DIMTCPCNERR	0x25	/* TCP/IP connection error			ERROR */
+#define DIMTCPCNEST	0x26	/* TCP/IP connection established	INFO */
+
+#define DIMDNSCNERR	0x30	/* Connection to DNS failed			ERROR */
+#define DIMDNSCNEST	0x31	/* Connection to DNS established	INFO */
+		
+#endif                         
+
+
+
+
+
+
+
Index: branches/FACT++_part_filenames/dim/dim/dim_core.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim_core.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim_core.hxx	(revision 18732)
@@ -0,0 +1,34 @@
+#ifndef DIM_CORE
+#define DIM_CORE
+
+   #if defined __cplusplus
+         /* If the functions in this header have C linkage, this
+           * will specify linkage for all C++ language compilers.
+           */
+         extern "C" {
+   #endif
+
+   # if defined __DECC || defined __DECCXX
+         /* If you are using pragmas that are only defined
+           * with DEC C and DEC C++, this line is necessary
+           * for both C and C++ compilers.   A common error
+           * is to only have #ifdef __DECC, which causes
+           * the compiler to skip the conditionalized
+           * code.
+           */
+   #    pragma __extern_model __save
+   #    pragma __extern_model __strict_refdef
+         extern const char some_definition [];
+   #    pragma __extern_model __restore
+   # endif
+
+    /* ...some data and function definitions go here... */
+
+#include "dis.h"
+#include "dic.h"
+
+   #if defined __cplusplus
+         }    /* matches the linkage specification at the beginning. */
+   #endif
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dim_jni.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim_jni.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim_jni.h	(revision 18732)
@@ -0,0 +1,70 @@
+#include <jni.h>
+/* Header for class dim_Native */
+
+#ifndef _Included_dim_Native
+#define _Included_dim_Native
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef dim_Native_ONCE_ONLY
+#define dim_Native_ONCE_ONLY 0x1L
+#undef dim_Native_TIMED
+#define dim_Native_TIMED 0x2L
+#undef dim_Native_MONITORED
+#define dim_Native_MONITORED 0x4L
+#undef dim_Native_MONIT_ONLY
+#define dim_Native_MONIT_ONLY 0x20L
+#undef dim_Native_UPDATE
+#define dim_Native_UPDATE 0x40L
+#undef dim_Native_TIMED_ONLY
+#define dim_Native_TIMED_ONLY	0x80L
+#undef dim_Native_MONIT_FIRST
+#define dim_Native_MONIT_FIRST 0x100L
+#undef dim_Native_F_STAMPED
+#define dim_Native_F_STAMPED /*4096L*/ 0x1000L
+#undef dim_Native_F_WAIT
+#define dim_Native_F_WAIT /*-2147483648L*/ 0x10000000L
+
+
+#undef dim_Dbg_MODULE
+#define dim_Dbg_MODULE 1L
+#undef dim_Dbg_TRANSACTIONS
+#define dim_Dbg_TRANSACTIONS 2L
+#undef dim_Dbg_SEND_CALLBACK
+#define dim_Dbg_SEND_CALLBACK 4L
+#undef dim_Dbg_SEND_NATIVE
+#define dim_Dbg_SEND_NATIVE 8L
+#undef dim_Dbg_INFO_CALLBACK
+#define dim_Dbg_INFO_CALLBACK 16L
+#undef dim_Dbg_INFO_SERVICE
+#define dim_Dbg_INFO_SERVICE 32L
+#undef dim_Dbg_SERVER
+#define dim_Dbg_SERVER 256L
+#undef dim_Dbg_SERVICE_CALLBACK
+#define dim_Dbg_SERVICE_CALLBACK 512L
+#undef dim_Dbg_ADD_SERVICE
+#define dim_Dbg_ADD_SERVICE 1024L
+#undef dim_Dbg_RELEASE_SERVICE
+#define dim_Dbg_RELEASE_SERVICE 2048L
+#undef dim_Dbg_CMND_CALLBACK
+#define dim_Dbg_CMND_CALLBACK 4096L
+#undef dim_Dbg_ADD_CMND
+#define dim_Dbg_ADD_CMND 8192L
+#undef dim_Dbg_UPDATE_SERVICE
+#define dim_Dbg_UPDATE_SERVICE 16384L
+#undef dim_Dbg_GETCLIENT
+#define dim_Dbg_GETCLIENT 32768L
+#undef dim_Dbg_SERIALIZER
+#define dim_Dbg_SERIALIZER 65536L
+#undef dim_Dbg_DESCRIPTORS
+#define dim_Dbg_DESCRIPTORS 131072L
+#undef dim_Dbg_FULL
+#define dim_Dbg_FULL -1L
+
+/* Inaccessible static: dim_version */
+/* Inaccessible static: dll_locations */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dim_tcpip.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dim_tcpip.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dim_tcpip.h	(revision 18732)
@@ -0,0 +1,109 @@
+/* 
+ * DIM Include file for changing the number of open connections
+ * Date: 06-12-2007
+ * Author: C. Gaspar
+ */
+
+#ifdef WIN32
+#define FD_SETSIZE      16384
+#else
+#ifdef linux
+#ifndef NOMORECONNS
+/* CG: Copied here bits/typesizes.h */
+#ifndef _BITS_TYPESIZES_H
+#define _BITS_TYPESIZES_H   1
+
+/* See <bits/types.h> for the meaning of these macros.  This file exists so
+that <bits/types.h> need not vary across different GNU platforms.  */
+
+#define __DEV_T_TYPE        __UQUAD_TYPE
+#define __UID_T_TYPE        __U32_TYPE
+#define __GID_T_TYPE        __U32_TYPE    
+#define __INO_T_TYPE        __ULONGWORD_TYPE    
+#define __INO64_T_TYPE      __UQUAD_TYPE
+#define __MODE_T_TYPE       __U32_TYPE
+#define __NLINK_T_TYPE      __UWORD_TYPE
+#define __OFF_T_TYPE        __SLONGWORD_TYPE
+#define __OFF64_T_TYPE      __SQUAD_TYPE
+#define __PID_T_TYPE        __S32_TYPE
+#define __RLIM_T_TYPE       __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE     __UQUAD_TYPE
+#define __BLKCNT_T_TYPE     __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE   __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE   __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE   __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __FSWORD_T_TYPE     __SWORD_TYPE
+#define __ID_T_TYPE     __U32_TYPE
+#define __CLOCK_T_TYPE      __SLONGWORD_TYPE
+#define __TIME_T_TYPE       __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE   __U32_TYPE
+#define __SUSECONDS_T_TYPE  __SLONGWORD_TYPE
+#define __DADDR_T_TYPE      __S32_TYPE
+#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
+#define __KEY_T_TYPE        __S32_TYPE
+#define __CLOCKID_T_TYPE    __S32_TYPE
+#define __TIMER_T_TYPE      void *
+#define __BLKSIZE_T_TYPE    __SLONGWORD_TYPE
+#define __FSID_T_TYPE       struct { int __val[2]; }
+#define __SSIZE_T_TYPE      __SWORD_TYPE
+#define __SYSCALL_SLONG_TYPE    __SLONGWORD_TYPE
+#define __SYSCALL_ULONG_TYPE    __ULONGWORD_TYPE
+
+#ifdef __LP64__
+/* Tell the libc code that off_t and off64_t are actually the same type
+for all ABI purposes, even if possibly expressed as different base types    
+for C type-checking purposes.  */
+# define __OFF_T_MATCHES_OFF64_T    1
+
+/* Same for ino_t and ino64_t.  */
+# define __INO_T_MATCHES_INO64_T    1
+#endif
+
+/* Number of descriptors that can fit in an `fd_set'.  */
+#define __FD_SETSIZE        16384
+
+
+#endif /* bits/typesizes.h */ 
+
+/* CG: Copied here linux/posix_types.h */
+#ifndef _LINUX_POSIX_TYPES_H
+#define _LINUX_POSIX_TYPES_H
+
+#include <linux/stddef.h>
+
+#undef __NFDBITS
+#define __NFDBITS	(8 * sizeof(unsigned long))
+
+#undef __FD_SETSIZE
+#define __FD_SETSIZE	16384
+
+#undef __FDSET_LONGS
+#define __FDSET_LONGS	(__FD_SETSIZE/__NFDBITS)
+
+#undef __FDELT
+#define	__FDELT(d)	((d) / __NFDBITS)
+
+#undef __FDMASK
+#define	__FDMASK(d)	(1UL << ((d) % __NFDBITS))
+
+typedef struct {
+	unsigned long fds_bits [__FDSET_LONGS];
+} __kernel_fd_set;
+
+/* Type of a signal handler.  */
+typedef void (*__kernel_sighandler_t)(int);
+
+/* Type of a SYSV IPC key.  */
+typedef int __kernel_key_t;
+typedef int __kernel_mqd_t;
+
+#include <asm/posix_types.h>
+
+#endif /* _LINUX_POSIX_TYPES_H */
+
+#endif /* NOMORECONNS */
+#endif /* linux */
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dis.h
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dis.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dis.h	(revision 18732)
@@ -0,0 +1,78 @@
+#ifndef __DISDEFS
+#define __DISDEFS
+
+#include "dim_common.h"
+
+/* CFORTRAN interface */
+
+#define dis_start_serving dis_start_serving_
+#define dis_stop_serving dis_stop_serving_
+#define dis_get_next_cmnd dis_get_next_cmnd_
+#define dis_get_client dis_get_client_
+#define dis_add_service dis_add_service_
+#define dis_add_cmnd dis_add_cmnd_
+#define dis_add_client_exit_handler dis_add_client_exit_handler_
+#define dis_add_exit_handler dis_add_exit_handler_
+#define dis_set_client_exit_handler dis_set_client_exit_handler_
+#define dis_report_service dis_report_service_
+#define dis_update_service dis_update_service_
+#define dis_remove_service dis_remove_service_
+#define dis_send_service dis_send_service_
+#define dis_convert_str dis_convert_str_
+#define dis_set_quality dis_set_quality_
+#define dis_set_timestamp dis_set_timestamp_
+#define dis_selective_update_service dis_selective_update_service_
+#define dis_get_timestamp dis_get_timestamp_
+
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( int dis_start_serving,    (__CXX_CONST char *task_name) );
+_DIM_PROTOE( void dis_stop_serving,    () );
+_DIM_PROTOE( int dis_get_next_cmnd,    (dim_long *tag, int *buffer, int *size ) );
+_DIM_PROTOE( int dis_get_client,       (char *name ) );
+_DIM_PROTOE( int dis_get_conn_id,      () );
+_DIM_PROTOE( unsigned dis_add_service, (__CXX_CONST char *service_name, __CXX_CONST char *service_type,
+				   void *service_address, int service_size,
+				   void (*usr_routine)(void*,void**,int*,int*), dim_long tag) );
+_DIM_PROTOE( unsigned dis_add_cmnd,        (__CXX_CONST char *service_name, __CXX_CONST char *service_type,
+			           void (*usr_routine)(void*,void*,int*), dim_long tag) );
+_DIM_PROTOE( void dis_add_client_exit_handler,(void (*usr_routine)(int*)) );
+_DIM_PROTOE( void dis_set_client_exit_handler,(int conn_id, int tag) );
+_DIM_PROTOE( void dis_add_exit_handler,(void (*usr_routine)(int*)) );
+_DIM_PROTOE( void dis_add_error_handler,(void (*usr_routine)(int, int, char*)) );
+_DIM_PROTOE( void dis_report_service,  (__CXX_CONST char *service_name) );
+_DIM_PROTOE( int dis_update_service,   (unsigned service_id) );
+_DIM_PROTOE( int dis_remove_service,   (unsigned service_id) );
+_DIM_PROTOE( void dis_send_service,    (unsigned service_id, int *buffer,
+				   int size) );
+_DIM_PROTOE( int dis_set_buffer_size,  (int size) );
+_DIM_PROTOE( void dis_set_quality,     (unsigned service_id, int quality) );
+_DIM_PROTOE( int dis_set_timestamp,     (unsigned service_id, 
+					int secs, int millisecs) );
+_DIM_PROTOE( int dis_selective_update_service,   (unsigned service_id, 
+					int *client_id_list) );
+_DIM_PROTOE( void dis_disable_padding,      		() );
+_DIM_PROTOE( int dis_get_timeout,      		(unsigned service_id, int client_id) );
+_DIM_PROTOE( char *dis_get_error_services,	() );
+_DIM_PROTOE( char *dis_get_client_services,	(int conn_id) );
+_DIM_PROTOE( int dis_start_serving_dns,		(dim_long dns_id, __CXX_CONST char *task_name/*, int *id_list*/) );
+_DIM_PROTOE( void dis_stop_serving_dns,		(dim_long dns_id) );
+_DIM_PROTOE( unsigned dis_add_service_dns,	(dim_long dns_id, __CXX_CONST char *service_name, __CXX_CONST char *service_type,
+				   void *service_address, int service_size,
+				   void (*usr_routine)(void*,void**,int*,int*), dim_long tag) );
+_DIM_PROTOE( unsigned dis_add_cmnd_dns,		(dim_long dns_id, __CXX_CONST char *service_name, __CXX_CONST char *service_type,
+			       void (*usr_routine)(void*,void*,int*), dim_long tag) );
+_DIM_PROTOE( int dis_get_n_clients,	(unsigned service_id) );
+_DIM_PROTOE( int dis_get_timestamp,     (unsigned service_id, 
+					int *secs, int *millisecs) );
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+#endif
Index: branches/FACT++_part_filenames/dim/dim/dis.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dis.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dis.hxx	(revision 18732)
@@ -0,0 +1,359 @@
+#ifndef __DISHHDEFS
+#define __DISHHDEFS
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#ifdef __VMS
+#include <starlet.h>
+#endif
+#include "dim_core.hxx"
+#include "dim.hxx"
+/*
+#define DimSHORT	"S"
+#define DimINT		"I"
+#define DimLONG		"L"
+#define DimFLOAT	"F"
+#define DimDOUBLE	"D"
+#define DimSTRING	"C"
+#define DimXLONG	"X"
+*/
+enum DisTYPE {
+	DisPOINTER, DisSHORT, DisINT, DisFLOAT, DisDOUBLE, DisSTRING, DisXLONG, DisCOMMAND
+};
+
+class DimService;
+class DimCommand;
+
+class DllExp DimServiceHandler{
+public:
+	DimService *itsService;
+	DimService *getService() { return itsService; } ;
+	virtual void serviceHandler() = 0;
+	virtual ~DimServiceHandler() {};
+};
+
+class DllExp DimCommandHandler{
+public:
+	DimCommand *itsCommand;
+	DimCommand *getCommand() { return itsCommand; } ;
+	virtual void commandHandler() = 0;
+	virtual ~DimCommandHandler() {};
+};
+
+class DllExp DimClientExitHandler{
+public:
+	virtual void clientExitHandler() = 0;
+	virtual ~DimClientExitHandler() {};
+};
+
+class DllExp DimExitHandler{
+public:
+	virtual void exitHandler(int code) = 0;
+	virtual ~DimExitHandler() {};
+};
+
+class DllExp DimServerDns
+{
+public:
+	DimServerDns(const char *node);
+	DimServerDns(const char *node, int port);
+	DimServerDns(const char *node, int port, char *name);
+	~DimServerDns();
+	void init(const char *node, int port);
+	dim_long getDnsId();
+	void setName(const char *name);
+	char *getName();
+	void clearName();
+	void autoStartOn();
+	void autoStartOff();
+	int isAutoStart();
+	void addServiceId(int id);
+	int *getServiceIdList();
+private:
+	char *itsNode;
+	int itsPort;
+	dim_long itsDnsId;
+	char *itsName;
+	int autoStart;
+	int *itsServiceIdList;
+	int itsServiceIdListSize;
+	int itsNServiceIds;
+//	int itsNServices;
+};
+
+class DllExp DimServer : public DimServiceHandler, public DimCommandHandler,
+	public DimClientExitHandler, public DimExitHandler, public DimErrorHandler
+{
+public:
+	static char *clientName;
+	static char *itsName;
+	static char *dimDnsNode;
+	static int autoStart;
+	static DimClientExitHandler *itsClientExit;
+	static DimExitHandler *itsExit;
+	static DimErrorHandler *itsSrvError;
+//	static int itsNServices;
+	DimServer();
+	virtual ~DimServer();
+	static void start(const char *name);
+	static void start(DimServerDns *dns, const char *name);
+	static void start();
+	static void start(DimServerDns *dns);
+	static void stop();
+	static void stop(DimServerDns *dns);
+	static void autoStartOn();
+	static void autoStartOff();
+	// Get Current Client Identifier	
+	static int getClientId();
+	// Get Current Client Name	
+	static char *getClientName();
+	static void setClientExitHandler(int clientId);
+	static void clearClientExitHandler(int clientId);
+	static void addClientExitHandler(DimClientExitHandler *handler);
+	void addClientExitHandler();
+	static void addExitHandler(DimExitHandler *handler);
+	static void addErrorHandler(DimErrorHandler *handler);
+	static int setDnsNode(const char *node);
+	static int setDnsNode(const char *node, int port);
+	static dim_long addDns(const char *node, int port);
+	static void stopDns(dim_long dnsid);
+	static char *getDnsNode();
+	static int getDnsPort();
+	static void setWriteTimeout(int secs);
+	static int getWriteTimeout();
+	void addExitHandler();
+	void addErrorHandler();
+	virtual void clientExitHandler() {};
+	virtual void exitHandler(int /* code */) {};
+	virtual void errorHandler(int /* severity */, int /* code */, char* /* msg */) {};
+//	static char *getClientServices();
+//	static char *getClientServices(int clientId);
+	static char **getClientServices();
+
+	virtual void serviceHandler() {};
+	virtual void commandHandler() {};
+	static int inCallback();
+};
+
+class DllExp DimService : public DimServiceHandler {
+
+public :
+	DimServiceHandler *itsServiceHandler;
+
+	// The object contains the value to be published. Service to be updated with an argument of same type;
+	DimService();
+
+	DimService(const char *name, int &value);
+	DimService(const char *name, float &value);
+	DimService(const char *name, double &value);
+	DimService(const char *name, longlong &value);
+	DimService(const char *name, short &value);
+	DimService(const char *name, char *string);
+
+	DimService(const char *name, char *format, void *structure, int size);
+
+	DimService(const char *name, char *format, DimServiceHandler *handler);
+
+	DimService(const char *name, const char *format, void *structure, int size);
+
+	DimService(const char *name, const char *format, DimServiceHandler *handler);
+
+	DimService(DimServerDns *dns, const char *name, int &value);
+	DimService(DimServerDns *dns, const char *name, float &value);
+	DimService(DimServerDns *dns, const char *name, double &value);
+	DimService(DimServerDns *dns, const char *name, longlong &value);
+	DimService(DimServerDns *dns, const char *name, short &value);
+	DimService(DimServerDns *dns, const char *name, char *string);
+
+	DimService(DimServerDns *dns, const char *name, char *format, void *structure, int size);
+
+	DimService(DimServerDns *dns, const char *name, char *format, DimServiceHandler *handler);
+
+	DimService(DimServerDns *dns, const char *name, const char *format, void *structure, int size);
+
+	DimService(DimServerDns *dns, const char *name, const char *format, DimServiceHandler *handler);
+
+	virtual ~DimService();
+
+	// Update methods
+	int updateService();
+	// Update the value as well...
+	int updateService( int &value );
+	int updateService( float &value );
+	int updateService( double &value ) ;
+	int updateService( longlong &value );
+	int updateService( short &value );
+	int updateService( char *string );
+	
+	int updateService( void *structure, int size );
+	
+	// Selective Update methods
+	int selectiveUpdateService(int *cids);
+	// Update the value as well...
+	int selectiveUpdateService( int &value, int *cids);
+	int selectiveUpdateService( float &value, int *cids );
+	int selectiveUpdateService( double &value, int *cids );
+	int selectiveUpdateService( longlong &value, int *cids );
+	int selectiveUpdateService( short &value, int *cids );
+	int selectiveUpdateService( char *string, int *cids );
+	
+	int selectiveUpdateService( void *structure, int size, int *cids );
+	
+	void setQuality(int quality);
+	void setTimestamp(int secs, int millisecs);
+
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+	DisTYPE itsType;
+	void setData(void *data, int size);
+	void setData(int &data);
+	void setData(float &data);
+	void setData(double &data);
+	void setData(longlong &data);
+	void setData(short &data);
+	void setData(char *data);
+
+	virtual void serviceHandler() {};
+	// Accessors
+	char *getName();
+	int getTimeout(int clientId);
+	int getNClients();
+
+private :
+	char *itsName;
+	int itsId;
+	int itsTagId;
+	void declareIt(char *name, char *format, DimServiceHandler *handler, DimServerDns *dns);
+	void storeIt(void *data, int size);
+	DimServerDns *itsDns;
+};
+
+class DllExp CmndInfo : public SLLItem {
+	friend class DimCommand;
+	void *itsData;
+	int itsDataSize;
+	int secs, millisecs;
+public:
+	CmndInfo(void *data, int datasize, int tsecs, int tmillisecs);
+	~CmndInfo();
+};
+
+class DllExp DimCommand : public DimCommandHandler {
+
+public :
+	DimCommandHandler *itsCommandHandler;
+
+	DimCommand(const char *name, char *format);
+
+	DimCommand(const char *name, char *format, DimCommandHandler *handler);
+
+	DimCommand(DimServerDns *dns, const char *name, char *format);
+
+	DimCommand(DimServerDns *dns, const char *name, char *format, DimCommandHandler *handler);
+
+	DimCommand(const char *name, const char *format);
+
+	DimCommand(const char *name, const char *format, DimCommandHandler *handler);
+
+	DimCommand(DimServerDns *dns, const char *name, const char *format);
+
+	DimCommand(DimServerDns *dns, const char *name, const char *format, DimCommandHandler *handler);
+
+	int getNext();
+	int hasNext();
+	void *itsData;
+	int itsSize;
+	void *getData();
+	int getInt();
+	float getFloat();
+	double getDouble();
+	longlong getLonglong();
+	short getShort();
+	char *getString();
+	int getSize();
+	char *getFormat();
+	int getTimestamp();
+	int getTimestampMillisecs();
+
+	virtual void commandHandler();
+
+	// Accessors
+	char *getName();
+	virtual ~DimCommand();
+
+private :
+	char *itsName;
+	int itsId;
+	int itsTagId;
+	char *itsFormat;
+	void declareIt(char *name, char *format, DimCommandHandler *handler, DimServerDns *dns);
+	CmndInfo *currCmnd;
+	SLList itsCmndList;
+	DimServerDns *itsDns;
+public:
+	int secs, millisecs;
+};
+
+class DllExp DimRpc
+{
+public :
+
+	// The object contains the value to be published. Service to be updated with an argument of same type;
+	DimRpc();
+
+	DimRpc(const char *name, const char *formatin, const char *formatout);
+
+	DimRpc(DimServerDns *dns, const char *name, const char *formatin, const char *formatout);
+
+	// Desctructor
+	virtual ~DimRpc();
+
+	void *itsDataIn;
+	int itsSizeIn;
+	void *getData();
+	int getInt();
+	float getFloat();
+	double getDouble();
+	longlong getLonglong();
+	short getShort();
+	char *getString();
+	int getSize();
+
+	void *itsDataOut;
+	int itsDataOutSize;
+	int itsSizeOut;
+
+	void setData(void *data, int size);
+	void setData(int &data);
+	void setData(float &data);
+	void setData(double &data);
+	void setData(longlong &data);
+	void setData(short &data);
+	void setData(char *data);
+
+	virtual void rpcHandler() = 0;
+	// Accessors
+	char *getName();
+	int itsIdIn;
+	int itsIdOut;
+private :
+	int itsTagId;
+	char *itsName;
+	char *itsNameIn;
+	char *itsNameOut;
+	void declareIt(char *name, char *formatin, char *formatout, DimServerDns *dns);
+	void storeIt(void *data, int size);
+	void timerHandler();
+	DimServerDns *itsDns;
+public:
+	int itsKilled;
+	int itsTimeout;
+};
+
+
+#endif
+
Index: branches/FACT++_part_filenames/dim/dim/dllist.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/dllist.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/dllist.hxx	(revision 18732)
@@ -0,0 +1,105 @@
+#ifndef __DLLHHDEFS
+#define __DLLHHDEFS
+
+class DllExp DLLItem {
+	friend class DLList ;
+	DLLItem *next;
+	DLLItem *prev;
+public:
+	DLLItem(){
+		next = 0;
+		prev = 0;
+	};
+};
+
+class DllExp DLList {
+	DLLItem *head;
+	DLLItem *curr;
+public:
+	DLList (){
+		DISABLE_AST
+		head = new DLLItem();
+		head->next = head;
+		head->prev = head;
+		curr = head;
+		ENABLE_AST
+	}
+	~DLList()
+	{
+		DISABLE_AST
+		delete head;
+		ENABLE_AST
+	}
+    void add(DLLItem *item)
+	{
+		DLLItem *prevp;
+		DISABLE_AST
+		item->next = head;
+		prevp = head->prev;
+		item->prev = prevp;
+		prevp->next = item;
+		head->prev = item;
+		ENABLE_AST
+	}
+	DLLItem *getHead()
+	{
+		DISABLE_AST
+		if(head->next == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		curr = head->next;
+		ENABLE_AST
+		return( head->next );
+	}
+	DLLItem *getLast()
+	{
+		DISABLE_AST
+		if(head->prev == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		curr = head->prev;
+		ENABLE_AST
+		return( head->prev );
+	}
+	DLLItem *getNext()
+	{
+		DISABLE_AST
+		curr = curr->next;
+		if(curr == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		ENABLE_AST
+		return( curr );
+	}
+	DLLItem *removeHead()
+	{
+		DLLItem *item;
+		DISABLE_AST
+		item = head->next;
+		if(item == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		remove(item);
+		ENABLE_AST
+		return(item);
+	}
+	void remove(DLLItem *item)
+	{
+		DLLItem *prevp, *nextp;
+		DISABLE_AST
+		prevp = item->prev;
+		nextp = item->next;
+		prevp->next = item->next;
+		nextp->prev = prevp;
+		ENABLE_AST
+	}
+};
+#endif
Index: branches/FACT++_part_filenames/dim/dim/sllist.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/sllist.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/sllist.hxx	(revision 18732)
@@ -0,0 +1,84 @@
+#ifndef __SLLHHDEFS
+#define __SLLHHDEFS
+
+class DllExp SLLItem {
+	friend class SLList ;
+	SLLItem *next;
+public:
+	SLLItem(){
+		next = 0;
+	};
+};
+
+class DllExp SLList {
+	SLLItem *head;
+	SLLItem *curr;
+public:
+	SLList (){
+		DISABLE_AST
+		head = new SLLItem();
+		curr = head;
+		ENABLE_AST
+	}
+	~SLList()
+	{
+		DISABLE_AST
+		delete head;
+		ENABLE_AST
+	}
+    void add(SLLItem *itemptr)
+	{
+		DISABLE_AST
+		SLLItem *ptr = head;
+		while(ptr->next)
+		{
+			ptr = ptr->next;
+		}
+		ptr->next = itemptr;
+		ENABLE_AST
+	}
+	SLLItem *getHead()
+	{
+		curr = head->next;
+		return( head->next );
+	}
+	SLLItem *getNext()
+	{
+		DISABLE_AST
+		if(!curr)
+			curr = head;
+		curr = curr->next;
+		ENABLE_AST
+		return( curr );
+	}
+	SLLItem *removeHead()
+	{
+		SLLItem *ptr;
+
+		DISABLE_AST
+		ptr = head->next;
+		if(ptr)
+		{
+			head->next = ptr->next;
+			curr = head->next;
+		}
+		ENABLE_AST
+		return( ptr);
+	}
+	void remove(SLLItem *itemptr)
+	{
+		SLLItem *ptr = head, *prev;
+		DISABLE_AST
+		while(ptr->next)
+		{
+			prev = ptr;
+			ptr = ptr->next;
+			if( itemptr == ptr )
+			{
+				prev->next = ptr->next;
+			}
+		}
+		ENABLE_AST
+	}
+};
+#endif
Index: branches/FACT++_part_filenames/dim/dim/tokenstring.hxx
===================================================================
--- branches/FACT++_part_filenames/dim/dim/tokenstring.hxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/dim/tokenstring.hxx	(revision 18732)
@@ -0,0 +1,31 @@
+#ifndef __TOKENSTRINGDEFS
+#define __TOKENSTRINGDEFS
+#include <string.h>
+#include "dim_core.hxx"
+
+class DllExp TokenString
+{
+public:
+
+	TokenString(char *str);
+	TokenString(char *str, char *seps);
+	~TokenString();
+	int getToken(char *&token);
+	void pushToken();
+	void popToken();
+	int cmpToken(char *str);
+	int firstToken();
+	int getNTokens();
+	int getNTokens(char *str);
+
+private:
+	void store_str(char *str);
+	char *token_buff;
+	char *token_ptr;
+	char *curr_token_ptr;
+	char *push_token_ptr;
+	char *token_seps;
+	int n_tokens;
+};
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/benchmark/benchClient.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/benchmark/benchClient.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/benchmark/benchClient.cxx	(revision 18732)
@@ -0,0 +1,69 @@
+#include <iostream>
+using namespace std;
+#include <dic.hxx>
+
+#define TEST_TIME 10
+
+char ServerName[128];
+int MsgSize;
+int Done = 0;
+int NReceived;
+
+class Service : public DimInfo
+{
+	void infoHandler()
+	{
+	  if(!Done)
+	  {
+		MsgSize = getSize();
+		strcpy(ServerName, DimClient::getServerName());
+		Done = 1;
+	  }
+	  NReceived++;
+	}
+public :
+	Service(char *name) : DimInfo(name,(char *)"--") {/*nReceived = 0;*/}
+};
+
+int main(int argc, char *argv[])
+{
+	int i, nServices = 0;
+	Service **services;
+	float mps,tpm;
+	DimBrowser br;
+	char *name, *format, *cltptr, *srvptr, clientName[128];
+
+	if(argc){}
+	if(argv){}
+	br.getServices("BENCH_SERVICE_*");
+
+	while(br.getNextService(name, format)!= 0)
+	{
+		nServices++;
+	}
+	services = new Service*[nServices];
+	i = 0;
+	while(br.getNextService(name, format)!= 0)
+	{
+	  services[i++] = new Service(name);
+	}
+	dic_get_id(clientName);
+	if((cltptr = strchr(clientName,'@')))
+		cltptr++;
+	sleep(5);
+	NReceived = 0;
+
+	sleep(TEST_TIME);
+
+	mps = NReceived/TEST_TIME;
+	if((srvptr = strchr(ServerName,'@')))
+		srvptr++;
+	cout << "Benchmark from "<< srvptr << " to " << cltptr << " :" << endl;
+	cout << "Server publishes " << nServices << " services of " << MsgSize << " bytes each"<< endl;
+	cout << "Result :" << endl;
+	cout << "\tMessages/s = " << mps << endl;
+	tpm = 1/(float)mps*1000;
+	cout << "\tTime(ms)/message = " << tpm << endl;
+	cout << "\tThroughput (Kb/s) = " << mps*MsgSize/1024 << endl;
+	return 1;
+}
Index: branches/FACT++_part_filenames/dim/src/benchmark/benchServer.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/benchmark/benchServer.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/benchmark/benchServer.cxx	(revision 18732)
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <dis.hxx>
+#ifdef WIN32
+#include <process.h>
+#endif
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+	int i, msgSize, nServices, pid;
+	char *msg, servName[64];
+	DimService **services;
+
+	if(argc){}
+	sscanf(argv[1],"%d",&msgSize);
+	sscanf(argv[2],"%d",&nServices);
+	msg = new char[msgSize];
+	services = new DimService*[nServices];
+	
+	pid = getpid();
+	for(i = 0; i < nServices; i++)
+	{
+	  sprintf(servName,"BENCH_SERVICE_%d_%03d",pid, i);
+	  services[i] = new DimService(servName, "C", msg, msgSize);
+	}
+	sprintf(servName,"BENCH_%d",pid);
+	DimServer::start(servName);
+	while(1)
+	{
+	  for(i = 0; i < nServices; i++)
+	  {
+	    services[i]->updateService();
+	  }
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/benchmark/bigClient.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/benchmark/bigClient.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/benchmark/bigClient.cxx	(revision 18732)
@@ -0,0 +1,69 @@
+#include <dic.hxx>
+
+class Service : public DimInfo
+{
+  int n_bad;
+  int n_good;
+
+	void infoHandler()
+	{
+	  char *ptr;
+	  ptr = (char *)getData();
+	  //	  cout << getName() << " received " << ptr << endl;
+	  if(ptr[0] == '-')
+	    {
+	      n_bad = 1;
+	      n_good = 0;
+	    }
+	  if(ptr[0] == 'h')
+	    {
+	      n_good = 1;
+	      n_bad = 0;
+	    }
+	}
+public :
+	Service(char *name) : DimInfo(name,"--") 
+		{n_bad = 0; n_good = 0;}
+	int getNgood() {return n_good;}
+	int getNbad() {return n_bad;}
+};
+
+
+int main(int argc, char *argv[])
+{
+	int i, n, msgSize, nServices = 0;
+	Service **services;
+	float mps,tpm;
+	DimBrowser br;
+	char name[132], *format;
+
+	sscanf(argv[1],"%d",&nServices);
+	services = new Service*[nServices];
+	for(i = 0; i < nServices; i++)
+	{
+	  services[i] = 0;
+	}
+	for(i = 0; i < nServices; i++)
+	{
+	  sprintf(name,"BENCH_SERVICE_%03d",i);
+	  services[i] = new Service(name);
+	}
+	while(1)
+	  {
+	    sleep(10);
+	    n = 0;
+	    for(i = 0; i < nServices; i++)
+	      {
+		if(services[i])
+		  n += services[i]->getNgood();
+	      }
+	    cout << "N Good = "<< n << endl;
+	    n = 0;
+	    for(i = 0; i < nServices; i++)
+	      {
+		if(services[i])
+		  n += services[i]->getNbad();
+	      }
+	    cout << "N bad = "<< n << endl;
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/benchmark/bigServer.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/benchmark/bigServer.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/benchmark/bigServer.cxx	(revision 18732)
@@ -0,0 +1,35 @@
+#include <dis.hxx>
+#ifdef WIN32
+#include <process.h>
+#endif
+
+int main(int argc, char *argv[])
+{
+	int i, msgSize, nServices, pid;
+	char *msg, servName[64];
+	DimService **services;
+
+	sscanf(argv[1],"%d",&msgSize);
+	sscanf(argv[2],"%d",&nServices);
+	msg = new char[msgSize];
+	strcpy(msg,"hello");
+	services = new DimService*[nServices];
+	
+	pid = getpid();
+	for(i = 0; i < nServices; i++)
+	{
+	  //	  sprintf(servName,"BENCH_SERVICE_%d_%03d",pid, i);
+	  sprintf(servName,"BENCH_SERVICE_%03d",i);
+	  services[i] = new DimService(servName, "C", msg, msgSize);
+	}
+	sprintf(servName,"BENCH_%d",pid);
+	DimServer::start(servName);
+	while(1)
+	{
+	  for(i = 0; i < nServices; i++)
+	  {
+	    services[i]->updateService();
+	  }
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/conn_handler.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/conn_handler.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/conn_handler.c	(revision 18732)
@@ -0,0 +1,219 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+/* This module can only handle one type of array, and DIC or DNS.
+ * It cannot handle both simultaniously. It handles at same time
+ * the NET and DNA array's. Although these have to be explicitly
+ * created.
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+static SRC_TYPES My_type;		/* Var. indicating type DIC or DIS */
+
+#ifdef VMS
+DIM_NOSHARE DNS_CONNECTION *Dns_conns;
+DIM_NOSHARE DIC_CONNECTION *Dic_conns;
+DIM_NOSHARE DNA_CONNECTION *Dna_conns;
+DIM_NOSHARE NET_CONNECTION *Net_conns;
+DIM_NOSHARE int Curr_N_Conns;
+#else
+DllExp DIM_NOSHARE DNS_CONNECTION *Dns_conns = 0;
+DIM_NOSHARE DIC_CONNECTION *Dic_conns = 0;
+DllExp DIM_NOSHARE DNA_CONNECTION *Dna_conns = 0;
+DllExp DIM_NOSHARE NET_CONNECTION *Net_conns = 0;
+DllExp DIM_NOSHARE int Curr_N_Conns = 0;
+#endif
+
+typedef struct id_item
+{
+	void *ptr;
+	SRC_TYPES type;
+}ID_ITEM;
+
+static ID_ITEM *Id_arr;
+/*
+static void **Id_arr;
+*/
+static int Curr_N_Ids = 0;
+static int Curr_id = 1;
+
+void conn_arr_create(SRC_TYPES type)
+{
+
+	if( Curr_N_Conns == 0 )
+		Curr_N_Conns = CONN_BLOCK;
+
+	switch(type)
+	{
+	case SRC_DIC :
+		Dic_conns = (DIC_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DIC_CONNECTION) );
+		My_type = type;
+		break;
+	case SRC_DNS :
+		Dns_conns = (DNS_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DNS_CONNECTION) );
+		My_type = type;
+		break;
+	case SRC_DNA :
+		Dna_conns = (DNA_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DNA_CONNECTION) );
+		Net_conns = (NET_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(NET_CONNECTION) );
+		break;
+	default:
+		break;
+	}
+}
+
+
+int conn_get()
+{
+	register DNA_CONNECTION *dna_connp;
+	int i, n_conns, conn_id;
+
+	DISABLE_AST
+	for( i = 1, dna_connp = &Dna_conns[1]; i < Curr_N_Conns; i++, dna_connp++ )
+	{
+		if( !dna_connp->busy )
+		{
+			dna_connp->busy = TRUE;
+			ENABLE_AST
+			return(i);
+		}
+	}
+	n_conns = Curr_N_Conns + CONN_BLOCK;
+	Dna_conns = arr_increase( Dna_conns, sizeof(DNA_CONNECTION), n_conns );
+	Net_conns = arr_increase( Net_conns, sizeof(NET_CONNECTION), n_conns );
+	switch(My_type)
+	{
+	case SRC_DIC :
+		Dic_conns = arr_increase( Dic_conns, sizeof(DIC_CONNECTION),
+					  n_conns );
+		break;
+	case SRC_DNS :
+		Dns_conns = arr_increase( Dns_conns, sizeof(DNS_CONNECTION),
+					  n_conns );
+		break;
+	default:
+		break;
+	}
+	conn_id = Curr_N_Conns;
+	Curr_N_Conns = n_conns;
+	Dna_conns[conn_id].busy = TRUE;
+	ENABLE_AST
+	return(conn_id);
+}
+
+
+void conn_free(int conn_id)
+{
+	DISABLE_AST
+	Dna_conns[conn_id].busy = FALSE;
+	ENABLE_AST
+}
+
+
+void *arr_increase(void *conn_ptr, int conn_size, int n_conns)
+{
+	register char *new_ptr;
+
+	new_ptr = realloc( conn_ptr, (size_t)(conn_size * n_conns) );
+	memset( new_ptr + conn_size * Curr_N_Conns, 0, (size_t)(conn_size * CONN_BLOCK) );
+	return(new_ptr);
+}
+
+void id_arr_create()
+{
+
+	Curr_N_Ids = ID_BLOCK;
+	Id_arr = (void *) calloc( (size_t)Curr_N_Ids, sizeof(ID_ITEM));
+}
+
+
+void *id_arr_increase(void *id_ptr, int id_size, int n_ids)
+{
+	register char *new_ptr;
+
+	new_ptr = realloc( id_ptr, (size_t)(id_size * n_ids) );
+	memset( new_ptr + id_size * Curr_N_Ids, 0, (size_t)(id_size * ID_BLOCK) );
+	return(new_ptr);
+}
+
+int id_get(void *ptr, SRC_TYPES type)
+{
+	register int i, id;
+	register ID_ITEM *idp;
+
+	DISABLE_AST
+	if(!Curr_N_Ids)
+	{
+		id_arr_create();
+	}
+	for( i = Curr_id, idp = &Id_arr[Curr_id]; i < Curr_N_Ids; i++, idp++ )
+	{
+		if( !idp->type )
+		{
+			idp->ptr = ptr;
+			idp->type = type;
+			Curr_id = i;
+			ENABLE_AST
+			return(i);
+		}
+	}
+	Id_arr = id_arr_increase( Id_arr, sizeof(ID_ITEM), Curr_N_Ids + ID_BLOCK );
+	id = Curr_N_Ids;
+	idp = &Id_arr[id];
+	idp->ptr = ptr;
+	idp->type = type;
+	Curr_N_Ids += ID_BLOCK;
+	Curr_id = id;
+	ENABLE_AST
+	return(id);
+}
+
+void *id_get_ptr(int id, SRC_TYPES type)
+{
+	ID_ITEM *idp;
+	void *ptr;
+	DISABLE_AST
+
+	if((id >= Curr_N_Ids) || (id <= 0))
+	{
+		ENABLE_AST
+		return(0);
+	}
+	idp = &Id_arr[id];
+	if(idp->type == type)
+	{
+		ptr = idp->ptr;
+		ENABLE_AST
+		return(ptr);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+void id_free(int id, SRC_TYPES type)
+{
+	ID_ITEM *idp;
+	DISABLE_AST
+
+	idp = &Id_arr[id];
+	if(idp->type == type)
+	{
+		idp->type = 0;
+		idp->ptr = 0;
+	}
+	Curr_id = 1;
+	ENABLE_AST
+}
Index: branches/FACT++_part_filenames/dim/src/copy_swap.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/copy_swap.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/copy_swap.c	(revision 18732)
@@ -0,0 +1,410 @@
+#define DIMLIB
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+
+#ifdef VMS
+#	include <cvtdef.h>
+#endif
+
+#if defined(WIN32) || defined(__unix__)
+#define PADD64
+#endif
+
+#if defined(aix) || defined (LYNXOS)
+#undef PADD64
+#endif
+
+#if defined(__linux__) && !defined (__LP64__)
+#undef PADD64
+#endif
+
+static int Dic_padding = 1;
+static int Dis_padding = 1;
+
+void dic_disable_padding()
+{
+	Dic_padding = 0;
+}
+
+void dis_disable_padding()
+{
+	Dis_padding = 0;
+}
+
+static int get_curr_bytes(int items, int bytes_left, int item_size)
+{
+	int num;
+
+	if(!(num = items))
+	{
+		num = bytes_left;
+	} 
+	else 
+	{
+		num *= item_size;
+	}
+	return num;
+}
+
+#ifdef vms
+		
+static int check_vms_out(flags, format, curr_par_num, buff_out)
+short flags;
+int format, curr_par_num;
+void *buff_out;
+{
+	unsigned int input_code;
+	int i;
+	int num;
+	
+	if(	(flags & IT_IS_FLOAT) && ((format & 0xF0) == IEEE_FLOAT) )
+	{
+		switch(flags & 0x3)
+		{
+			case SWAPL :
+				num = curr_par_num;
+				(int *)buff_out -= num;
+				for( i = 0; i < num; i++) 
+				{
+					cvt$convert_float((void *)buff_out, CVT$K_VAX_F, 
+									(void *)buff_out, CVT$K_IEEE_S,
+									0 );
+					((int *)buff_out)++;
+				}
+				break;
+			case SWAPD :
+#ifdef __alpha
+				input_code = CVT$K_VAX_G;
+#else
+				input_code = CVT$K_VAX_D;
+#endif
+				num = curr_par_num;
+				(double *)buff_out -= num;
+				for( i = 0; i < num; i++ )
+				{
+					cvt$convert_float((void *)buff_out, input_code,
+									(void *)buff_out, CVT$K_IEEE_T,
+									0 );
+					((double *)buff_out)++;
+				}
+				break;
+		}
+	}
+}
+
+
+
+static int check_vms_in(flags, curr_par_num, curr_par_bytes, buff_out)
+short flags;
+int curr_par_num, curr_par_bytes;
+void *buff_out;
+{
+	unsigned int input_code, output_code;
+	int i;
+	int num;
+	
+	if(flags & 0xF0)
+	{
+		switch(curr_par_bytes) 
+		{
+			case SIZEOF_FLOAT :
+				if((flags & 0xF0) == IEEE_FLOAT)
+				{
+					num = curr_par_num;
+					(int *)buff_out -= num;
+					for( i = 0; i<num; i++)
+					{
+						cvt$convert_float((void *)buff_out, CVT$K_IEEE_S,
+										  (void *)buff_out, CVT$K_VAX_F,
+										  0 );
+						((int *)buff_out)++;
+					}
+				}
+				break;
+			case SIZEOF_DOUBLE :
+#ifdef __alpha
+				output_code = CVT$K_VAX_G;
+#else
+				output_code = CVT$K_VAX_D;
+#endif
+				switch(flags & 0xF0)
+				{
+					case VAX_FLOAT:
+						input_code = CVT$K_VAX_D;
+						break;	
+					case AXP_FLOAT:
+						input_code = CVT$K_VAX_G;
+						break;	
+					case IEEE_FLOAT:
+						input_code = CVT$K_IEEE_T;
+						break;	
+				}							
+				num = curr_par_num;
+				(double *)buff_out -= num;
+				for( i = 0; i<num; i++)
+				{
+					cvt$convert_float((void *)buff_out, input_code,
+									  (void *)buff_out, output_code,
+									  0 );
+					((double *)buff_out)++;
+				}
+				break;
+		}
+	}
+}
+
+#endif
+
+static int check_padding(int curr_bytes, int item_size)
+{
+	int num;
+
+	if( (num = curr_bytes % item_size))
+	{
+		num = item_size - num;
+	}
+	return num;
+}
+
+int copy_swap_buffer_out(int format, FORMAT_STR *format_data, void *buff_out, void *buff_in, int size)
+{
+	int num = 0, pad_num = 0, curr_size = 0, curr_out = 0;
+	int next_par_bytes, curr_par_num;
+	
+	if(format){}
+	if(!format_data->par_bytes) {
+		if(buff_in != buff_out)
+			memcpy( buff_out, buff_in, (size_t)size );
+		return(size);
+	}
+	next_par_bytes = format_data->par_bytes;
+	while(next_par_bytes)
+	{
+		curr_par_num = format_data->par_num;
+		if((curr_size+(curr_par_num * format_data->par_bytes))
+		   > size)
+		{
+			curr_par_num = (size - curr_size)/format_data->par_bytes;
+			next_par_bytes = 0;
+		}
+		switch(format_data->flags & 0x3) 
+		{
+			case NOSWAP :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_CHAR);
+
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPS :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_SHORT);
+
+				if(Dis_padding)
+				{
+					if( (pad_num = check_padding(curr_size, SIZEOF_SHORT)) )
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPL :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_LONG);
+
+				if(Dis_padding)
+				{
+					if( (pad_num = check_padding(curr_size, SIZEOF_LONG)) )
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPD :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_DOUBLE);
+
+				if(Dis_padding)
+				{
+#ifdef PADD64
+					if( (pad_num = check_padding(curr_size, SIZEOF_DOUBLE)) )
+#else
+					if( (pad_num = check_padding(curr_size, SIZEOF_LONG)) )
+#endif
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+		}
+#ifdef vms
+		check_vms_out(format_data->flags, format, curr_par_num, buff_out);
+#endif
+		curr_size += num;
+		format_data++;
+		if(next_par_bytes)
+			next_par_bytes = format_data->par_bytes;
+	}
+	return(curr_out);
+}
+
+int copy_swap_buffer_in(FORMAT_STR *format_data, void *buff_out, void *buff_in, int size)
+{
+	int num, pad_num, curr_size = 0, curr_out = 0;
+	int next_par_bytes, curr_par_num, curr_par_bytes;
+	
+	num = 0;
+	if(!format_data->par_bytes) {
+		if(buff_in != buff_out)
+			memcpy( buff_out, buff_in, (size_t)size );
+		return(size);
+	}
+	next_par_bytes = format_data->par_bytes;
+	while(next_par_bytes)
+	{
+		curr_par_num = format_data->par_num;
+		curr_par_bytes = format_data->par_bytes;
+		if((curr_size+(curr_par_num * curr_par_bytes))
+		   > size)
+		{
+			curr_par_num = (size - curr_size)/curr_par_bytes;
+			next_par_bytes = 0;
+		}
+		switch(format_data->flags & 0x3) 
+		{
+			case NOSWAP :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, curr_par_bytes);
+
+				if(Dic_padding)
+				{
+					if(curr_par_bytes == SIZEOF_DOUBLE)
+					{
+#ifdef PADD64
+						if( (pad_num = check_padding(curr_out, SIZEOF_DOUBLE)) )
+#else
+						if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+#endif
+						{
+							inc_pter( buff_out, pad_num);
+							curr_out += pad_num;
+						}
+					}
+					else
+					{
+						if( (pad_num = check_padding(curr_out, curr_par_bytes)) )
+						{
+							inc_pter( buff_out, pad_num);
+							curr_out += pad_num;
+						}
+					}
+				}
+
+				if(buff_in != buff_out)
+					memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPS :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_SHORT);
+
+				if(Dic_padding)
+				{
+					if( (pad_num = check_padding(curr_out, SIZEOF_SHORT)) )
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swaps_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_SHORT) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPL :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_LONG);
+
+				if(Dic_padding)
+				{
+					if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swapl_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_LONG) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPD :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_DOUBLE);
+
+				if(Dic_padding)
+				{
+#ifdef PADD64
+					if( (pad_num = check_padding(curr_out, SIZEOF_DOUBLE)) )
+#else
+					if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+#endif
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swapd_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_DOUBLE) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+		}
+#ifdef vms
+		check_vms_in(format_data->flags, curr_par_num, curr_par_bytes, buff_out);
+#endif
+		curr_size += num;
+		format_data++;
+		if(next_par_bytes)
+			next_par_bytes = format_data->par_bytes;
+	}
+	return(curr_out);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: branches/FACT++_part_filenames/dim/src/dic.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dic.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dic.c	(revision 18732)
@@ -0,0 +1,2401 @@
+
+/*
+ * DIC (Delphi Information Client) Package implements a library of
+ * routines to be used by clients.
+ *
+ * Started on        : 10-11-91
+ * Last modification : 10-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <cfortran.h>
+#	include <assert.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dic.h>
+
+/*
+#define DEBUG
+*/
+
+#ifdef VMS
+#define TMP_ENABLE_AST      long int ast_enable = sys$setast(1);
+#define TMP_DISABLE_AST     if (ast_enable != SS$_WASSET) sys$setast(0);
+#endif
+
+#define BAD_CONN_TIMEOUT 2
+
+typedef struct bad_conn {
+	struct bad_conn *next;
+	struct bad_conn *prev;
+	DIC_CONNECTION conn;
+	int n_retries;
+	int retrying;
+} DIC_BAD_CONNECTION;
+
+static DIC_SERVICE *Service_pend_head = 0;
+static DIC_SERVICE *Cmnd_head = 0;
+static DIC_SERVICE *Current_server = 0;
+static DIC_BAD_CONNECTION *Bad_connection_head = 0;
+static int Dic_timer_q = 0;
+static int Dns_dic_conn_id = 0;
+static TIMR_ENT *Dns_dic_timr = NULL;
+static int Tmout_max = 0;
+static int Tmout_min = 0;
+static int Threads_off = 0;
+
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+static int Curr_conn_id = 0;
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( unsigned request_service, (char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*,void*,int*),
+				    dim_long tag, void *fill_addr, int fill_size, int stamped) );
+_DIM_PROTO( int request_command,      (char *service_name, void *service_address,
+				    int service_size, void (*usr_routine)(void*,int*),
+				    dim_long tag, int stamped) );
+_DIM_PROTO( DIC_SERVICE *insert_service, (int type, int timeout, char *name,
+				  int *address, int size, void (*routine)(),
+				  dim_long tag, int *fill_addr, int fill_size,
+				  int pending, int stamped ) );
+_DIM_PROTO( void modify_service, (DIC_SERVICE *servp, int timeout,
+				  int *address, int size, void (*routine)(),
+				  dim_long tag, int *fill_addr, int fill_size, int stamped) );
+_DIM_PROTO( DIC_SERVICE *locate_command, (char *serv_name) );
+_DIM_PROTO( DIC_SERVICE *locate_pending, (char *serv_name) );
+_DIM_PROTO( DIC_BAD_CONNECTION *locate_bad, (char *node, char *task, int port) );
+_DIM_PROTO( void service_tmout,      (int serv_id) );
+_DIM_PROTO( static void request_dns_info,      (int retry) );
+_DIM_PROTO( static int handle_dns_info,      (DNS_DIC_PACKET *) );
+_DIM_PROTO( void close_dns_conn,     (void) );
+_DIM_PROTO( static void release_conn, (int conn_id) );
+_DIM_PROTO( static void get_format_data, (int format, FORMAT_STR *format_data, 
+					char *def) );
+_DIM_PROTO( static void execute_service,      (DIS_PACKET *packet, 
+					DIC_SERVICE *servp, int size) );
+
+void print_packet(DIS_PACKET *packet)
+{
+	dim_print_date_time();
+	printf("Bad ID received from server -> Packet received:\n");
+	printf("\tpacket->size = %d\n",vtohl(packet->size));
+	printf("\tpacket->service_id = %d\n",vtohl(packet->service_id));
+}
+
+void dic_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dic_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dic_no_threads()
+{
+	Threads_off = 1;
+}
+
+void dic_add_error_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			(Error_user_routine)(severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+		if(severity == 3)
+		{
+			printf("Exiting!\n");
+			exit(2);
+		}
+	}
+}
+
+static void recv_rout( int conn_id, DIS_PACKET *packet, int size, int status )
+{
+	register DIC_SERVICE *servp, *auxp;
+	register DIC_CONNECTION *dic_connp;
+	int service_id, once_only, found = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	void move_to_notok_service();
+	void do_cmnd_callback();
+	void dim_panic(char *);
+
+	dic_connp = &Dic_conns[conn_id] ;
+	switch( status )
+	{
+	case STA_DISC:
+		if(Debug_on)
+		{
+			dna_get_node_task(conn_id, node, task);
+			dim_print_date_time();
+			printf("Conn %d: Server %s on node %s Disconnected\n",
+				conn_id, task, node);
+			fflush(stdout);
+		}
+		if( !(servp = (DIC_SERVICE *) dic_connp->service_head) )
+		{
+			release_conn( conn_id );
+			break;
+		}
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+#ifdef DEBUG
+			printf("\t %s was in the service list\n",servp->serv_name);
+			fflush(stdout);
+#endif
+/*
+	Will be done later by the DNS answer
+			service_tmout( servp->serv_id );
+*/
+			if(!strcmp(dic_connp->task_name,"DIS_DNS"))
+			{
+				service_tmout( servp->serv_id );
+			}
+			else if(Dns_dic_conn_id <= 0)
+			{
+				service_tmout( servp->serv_id );
+			}
+/*
+			servp->pending = WAITING_DNS_UP;
+			servp->conn_id = 0;
+*/
+			auxp = servp->prev;
+			move_to_notok_service( servp );
+			servp = auxp;
+		}		
+		if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+		{
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+			{
+				if( servp->conn_id == conn_id )
+				{
+#ifdef DEBUG
+					printf("\t%s was in the Command list\n", servp->serv_name);
+					printf("servp = %x, type = %d, pending = %d\n",servp, servp->type, servp->pending);
+					fflush(stdout);
+#endif
+					auxp = servp->prev;
+					if( (servp->type == ONCE_ONLY ) &&
+						(servp->pending == WAITING_SERVER_UP))
+					{
+						service_tmout( servp->serv_id );
+					}
+					else if( (servp->type == COMMAND ) &&
+						(servp->pending == WAITING_CMND_ANSWER))
+					{
+						service_tmout( servp->serv_id );
+					}
+					else 
+					{
+						servp->pending = WAITING_DNS_UP;
+						dic_release_service( (unsigned)servp->serv_id );
+					}
+					servp = auxp;
+				}
+			}
+		}
+		release_conn( conn_id );
+		request_dns_info(0);
+		break;
+	case STA_DATA:
+		if( !(DIC_SERVICE *) dic_connp->service_head )
+			break;
+		service_id = vtohl(packet->service_id);
+		if((unsigned)service_id & 0x80000000)  /* Service removed by server */
+		{
+			service_id &= 0x7fffffff;
+			if( (servp = (DIC_SERVICE *) id_get_ptr(service_id, SRC_DIC))) 
+			{
+				if( servp->type != COMMAND )
+				{
+					service_tmout( servp->serv_id );
+/*
+					servp->pending = WAITING_DNS_UP;
+					servp->conn_id = 0;
+*/
+					move_to_notok_service( servp );
+				}
+				else
+				{
+					service_tmout( servp->serv_id );
+					break;
+				}
+			}
+			else
+			{
+/*
+				print_packet(packet);
+*/
+				if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+				{
+					while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+					{
+						if( servp->conn_id == conn_id )
+						{
+#ifdef DEBUG
+							printf("\t%s was in the Command list\n", servp->serv_name);
+							fflush(stdout);
+#endif
+							auxp = servp->prev;
+							if( (servp->type == ONCE_ONLY ) &&
+								(servp->pending == WAITING_SERVER_UP))
+							{
+								service_tmout( servp->serv_id );
+							}
+							else if( (servp->type == COMMAND ) &&
+								(servp->pending == WAITING_CMND_ANSWER))
+							{
+								service_tmout( servp->serv_id );
+							}
+							else 
+							{
+								servp->pending = WAITING_DNS_UP;
+								dic_release_service( (unsigned)servp->serv_id );
+							}
+							servp = auxp;
+						}
+					}
+				}
+			}			
+			if( dll_empty((DLL *)dic_connp->service_head) ) {
+				if( (servp = (DIC_SERVICE *) Cmnd_head) ) {
+					while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+					{
+						if( servp->conn_id == conn_id)
+							found = 1;
+					}
+				}
+				if( !found)
+				{
+					release_conn( conn_id );
+				}
+			}
+			request_dns_info(0);
+			break;
+		}
+		if( (servp = (DIC_SERVICE *) id_get_ptr(service_id, SRC_DIC)))
+		{
+			if(servp->serv_id == service_id)
+			{
+				once_only = 0;
+				if(servp->type == ONCE_ONLY)
+					once_only = 1;
+				else 
+				{
+					if( servp->timeout > 0 ) 
+					{
+						if(servp->timer_ent)
+							dtq_clear_entry( servp->timer_ent );
+					}
+				}
+				Curr_conn_id = conn_id;
+				execute_service(packet, servp, size);
+				Curr_conn_id = 0;
+				if( once_only )
+				{
+					auxp = locate_command(servp->serv_name);
+					if((auxp) && (auxp != servp))
+					{
+						servp->pending = WAITING_DNS_UP;
+						dic_release_service( (unsigned)servp->serv_id );
+					}
+					else
+					{
+						servp->pending = NOT_PENDING;
+						servp->tmout_done = 0;
+						if( servp->timer_ent )
+						{
+							dtq_rem_entry( Dic_timer_q, servp->timer_ent );
+							servp->timer_ent = 0;
+						}
+					}
+				}
+			}
+		}
+/*
+		else
+		{
+			print_packet(packet);
+			if(Error_user_routine)
+				(Error_user_routine)( packet->buffer );
+		}
+*/
+		break;
+	case STA_CONN:
+		if(Debug_on)
+		{
+			dna_get_node_task(conn_id, node, task);
+			dim_print_date_time();
+			printf("Conn %d: Server %s on node %s Connected\n",
+				conn_id, task, node);
+			fflush(stdout);
+		}
+		break;
+	default:	dim_panic( "recv_rout(): Bad switch" );
+	}
+}
+
+static void execute_service(DIS_PACKET *packet, DIC_SERVICE *servp, int size)
+{
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+	int *pkt_buffer, header_size;
+
+	Current_server = servp;
+	format = servp->format;
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+	{
+		for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			formatp->flags &= (short)0xFFF0;    /* NOSWAP */
+	}
+	if( servp->stamped)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		servp->time_stamp[0] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[0]);
+		if(((unsigned)servp->time_stamp[0] & 0xFFFF0000) == 0xc0de0000)
+		{
+/*
+			servp->time_stamp[0] &= 0x0000FFFF;
+*/
+			servp->time_stamp[1] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[1]);
+			servp->quality = vtohl(((DIS_STAMPED_PACKET *)packet)->quality);
+		}
+		else if((vtohl(((DIS_STAMPED_PACKET *)packet)->reserved[0])) == (int)0xc0dec0de)
+		{
+/*
+			servp->time_stamp[0] &= 0x0000FFFF;
+*/
+			servp->time_stamp[1] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[1]);
+			servp->quality = vtohl(((DIS_STAMPED_PACKET *)packet)->quality);
+		}
+		else
+		{
+			pkt_buffer = ((DIS_PACKET *)packet)->buffer;
+			header_size = DIS_HEADER;
+		}
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	size -= header_size;
+	if( servp->serv_address ) 
+	{
+		if( size > servp->serv_size ) 
+			size = servp->serv_size; 
+		add_size = copy_swap_buffer_in(format_data_cp, 
+						 servp->serv_address, 
+						 pkt_buffer, size);
+		if( servp->user_routine )
+			(servp->user_routine)(&servp->tag, servp->serv_address, &add_size );
+	} 
+	else 
+	{
+		if( servp->user_routine )
+		{
+			add_size = size + (size/2);
+			if(!buffer_size)
+			{
+				buffer = (int *)malloc((size_t)add_size);
+				buffer_size = add_size;
+			} 
+			else 
+			{
+				if( add_size > buffer_size ) 
+				{
+					free(buffer);
+					buffer = (int *)malloc((size_t)add_size);
+					buffer_size = add_size;
+				}
+			}
+			add_size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 pkt_buffer, size);
+			(servp->user_routine)( &servp->tag, buffer, &add_size );
+		}
+	}
+	Current_server = 0;
+}
+
+static void recv_dns_dic_rout( int conn_id, DNS_DIC_PACKET *packet, int size, int status )
+{
+	register DIC_SERVICE *servp, *auxp;
+	void dim_panic(char *);
+
+	if(size){}
+	switch( status )
+	{
+	case STA_DISC:       /* connection broken */
+		servp = Service_pend_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( (servp->pending == WAITING_DNS_ANSWER) ||
+			    (servp->pending == WAITING_SERVER_UP))
+			{
+				if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				{
+					auxp = servp->prev;
+					servp->pending = WAITING_DNS_UP;
+					service_tmout( servp->serv_id );
+					servp = auxp;
+				}
+				else
+				{
+					servp->pending = WAITING_DNS_UP;
+				}
+			}
+		}
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+		request_dns_info(0);
+		break;
+	case STA_CONN:        /* connection received */
+		dna_set_test_write(conn_id, 2*(dim_get_keepalive_timeout()));
+		if(Dns_dic_conn_id < 0)
+		{
+			Dns_dic_conn_id = conn_id;
+			request_dns_info(0);
+
+		}
+		break;
+	case STA_DATA:       /* normal packet */
+		if( vtohl(packet->size) == DNS_DIC_HEADER )
+		{
+			handle_dns_info( packet );
+		}
+		break;
+	default:	dim_panic( "recv_dns_dic_rout(): Bad switch" );
+	}
+}
+
+
+void service_tmout( int serv_id )
+{
+	int once_only, size = 0;
+	register DIC_SERVICE *servp;
+	
+/*
+dim_print_date_time();
+printf("In service tmout\n");
+*/
+	servp=(DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	if(!servp)
+		return;
+	if(servp->tmout_done)
+		return;
+/*
+dim_print_date_time();
+printf("In service tmout %s\n", servp->serv_name);
+*/
+	servp->tmout_done = 1;
+	Curr_conn_id = servp->conn_id;
+/*
+	if( servp->type == UPDATE )
+		return;
+*/
+	if( servp->type == COMMAND )
+	{
+		if( servp->user_routine )
+		{
+			if(servp->pending == WAITING_CMND_ANSWER)
+				size = 1;
+			else
+				size = 0;
+			(servp->user_routine)( &servp->tag, &size );
+		}
+		else
+		{
+			if((servp->pending == WAITING_DNS_UP) || (servp->pending == WAITING_DNS_ANSWER))
+			{
+				dim_print_date_time();
+				printf(" Client Sending Command: Command %s discarded, no DNS answer\n", servp->serv_name);
+				fflush(stdout);
+			}
+/*
+			else if(servp->pending == WAITING_SERVER_UP)
+			{
+			}
+*/
+		}
+		dic_release_service( (unsigned)servp->serv_id );
+		Curr_conn_id = 0;
+		return;
+	}
+	once_only = 0;
+	if(servp->type == ONCE_ONLY)
+		once_only = 1;
+/*
+	if( servp->fill_address )
+*/
+	if( servp->fill_size >= 0 )
+	{
+		size = servp->fill_size;
+		if( servp->serv_address )
+		{
+			if( size > servp->serv_size ) 
+				size = servp->serv_size; 
+			memcpy(servp->serv_address, servp->fill_address, (size_t)size);
+			if( servp->user_routine )
+				(servp->user_routine)( &servp->tag, servp->serv_address, &size);
+		}
+		else
+		{
+			if( servp->user_routine )
+				(servp->user_routine)( &servp->tag, servp->fill_address, &size);
+		}
+	}
+	if( once_only )
+	{
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+	Curr_conn_id = 0;
+}
+
+
+unsigned dic_info_service( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size )
+{
+	unsigned ret;
+
+	ret = request_service( serv_name, req_type, req_timeout, 
+		serv_address, serv_size, usr_routine, tag, 
+		fill_addr, fill_size, 0 ); 
+
+	return(ret);
+}
+
+unsigned dic_info_service_stamped( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size )
+{
+	unsigned ret;
+
+	ret = request_service( serv_name, req_type, req_timeout, 
+		serv_address, serv_size, usr_routine, tag, 
+		fill_addr, fill_size, 1 ); 
+
+	return(ret);
+}
+
+unsigned request_service( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size, int stamped )
+{
+	register DIC_SERVICE *servp;
+	int conn_id;
+	int send_service();
+	int locate_service();
+	void dim_init_threads(void);
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	{
+	DISABLE_AST
+	/* create a timer queue for timeouts if not yet done */
+	if( !Dic_timer_q ) {
+		conn_arr_create( SRC_DIC );
+		Dic_timer_q = dtq_create();
+	}
+
+	/* store_service */
+	if(req_timeout < 0)
+		req_timeout = 0;
+	if(req_type == ONCE_ONLY)
+	{
+		if( !Cmnd_head ) {
+			Cmnd_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE) );
+			dll_init( (DLL *) Cmnd_head );
+			Cmnd_head->serv_id = 0;
+		}
+		if( (servp = locate_command(serv_name)) ) 
+		{
+			if( (conn_id = servp->conn_id) ) 
+			{
+				if(servp->pending == NOT_PENDING)
+				{
+					modify_service( servp, req_timeout,
+						(int *)serv_address, serv_size, usr_routine, tag,
+						(int *)fill_addr, fill_size, stamped);
+					servp->pending = WAITING_SERVER_UP;
+					if(send_service(conn_id, servp))
+					{
+						ENABLE_AST
+						return(1);
+					}
+				}
+			}	
+		}
+	}
+	servp = insert_service( req_type, req_timeout,
+			serv_name, (int *)serv_address, serv_size, usr_routine, tag,
+			(int *)fill_addr, fill_size, WAITING_DNS_UP, stamped );
+            
+	/* get_address of server from name_server */
+   
+	if( locate_service(servp) <= 0)
+	{
+/*
+		service_tmout( servp->serv_id );
+*/
+		dtq_start_timer( 0, service_tmout, servp->serv_id);
+	}
+	ENABLE_AST
+	}
+	return((unsigned) servp->serv_id);
+}
+
+
+int dic_cmnd_service( char *serv_name, void *serv_address, int serv_size )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		0, 0, 0 ); 
+
+	return(ret ? 1 : 0);
+
+}
+
+int dic_cmnd_service_stamped( char *serv_name, void *serv_address, int serv_size )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		0, 0, 1 ); 
+
+	return(ret ? 1 : 0);
+
+}
+
+int dic_cmnd_callback( char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		usr_routine, tag, 0 ); 
+	return(ret ? 1 : 0);
+}
+
+int dic_cmnd_callback_stamped( char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		usr_routine, tag, 1 ); 
+	return(ret ? 1 : 0);
+}
+
+int request_command(char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag, int stamped)
+{
+	int conn_id, ret;
+	register DIC_SERVICE *servp, *testp;
+	int *fillp;
+	int send_command();
+	int end_command();
+	void dim_init_threads(void);
+	int locate_service();
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	{
+	DISABLE_AST
+	/* create a timer queue for timeouts if not yet done */
+	if( !Dic_timer_q ) {
+		conn_arr_create( SRC_DIC );
+		Dic_timer_q = dtq_create();
+	}
+
+	/* store_service */
+	if( !Cmnd_head ) {
+		Cmnd_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE) );
+		dll_init( (DLL *) Cmnd_head );
+		Cmnd_head->serv_id = 0;
+	}
+	if( (servp = locate_command(serv_name)) ) 
+	{
+		if(!(testp = locate_pending(serv_name)))
+		{
+			if( (conn_id = servp->conn_id) ) 
+			{
+				if(servp->fill_size > 0)
+					free( servp->fill_address );
+				fillp = serv_address;
+				if(serv_size > 0)
+				{
+					fillp = (int *)malloc((size_t)serv_size);
+					memcpy( (char *)fillp, (char *)serv_address, (size_t)serv_size );
+				}
+				servp->fill_address = fillp;
+				servp->fill_size = serv_size;
+/*
+				servp->fill_address = (int *)serv_address;
+				servp->fill_size = serv_size;
+*/
+				servp->user_routine = usr_routine;
+				servp->tag = tag;
+				ret = send_command(conn_id, servp);
+				end_command(servp, ret);
+				ENABLE_AST
+				return(1);
+			}
+		}	
+	}
+	servp = insert_service( COMMAND, 0,
+				serv_name, 0, 0, usr_routine, tag, 
+				(int *)serv_address, serv_size,
+				WAITING_DNS_UP, stamped );	
+	if( locate_service(servp) <= 0)
+	{
+/*
+		service_tmout( servp->serv_id );
+*/
+		dtq_start_timer( 0, service_tmout, servp->serv_id);
+	}
+	ENABLE_AST
+	}
+	return(-1);
+}
+
+DIC_SERVICE *insert_service( int type, int timeout, char *name, int *address, int size, 
+							void (*routine)(), dim_long tag, int *fill_addr, int fill_size, 
+							int pending, int stamped)
+{
+	register DIC_SERVICE *newp;
+	int *fillp;
+	int service_id;
+	int tout;
+	float ftout;
+
+	DISABLE_AST
+	newp = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE));
+	newp->pending = 0;
+	strncpy( newp->serv_name, name, (size_t)MAX_NAME );
+	newp->type = type;
+	newp->timeout = timeout;
+	newp->serv_address = address;
+	newp->serv_size = size;
+	newp->user_routine = routine;
+	newp->tag = tag;
+	fillp = fill_addr;
+	if(fill_size > 0)
+	{
+		fillp = (int *)malloc((size_t)fill_size);
+		memcpy( (char *) fillp, (char *) fill_addr, (size_t)fill_size );
+	}
+	newp->fill_address = fillp;
+	newp->fill_size = fill_size;
+	newp->conn_id = 0;
+	newp->format_data[0].par_bytes = 0;
+	newp->next = (DIC_SERVICE *)0;
+	service_id = id_get((void *)newp, SRC_DIC);
+	newp->serv_id = service_id;
+	if( !Service_pend_head )
+	{
+		Service_pend_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE));
+		dll_init( (DLL *) Service_pend_head );
+		Service_pend_head->serv_id = 0;
+	}
+	dll_insert_queue( (DLL *) Service_pend_head, (DLL *)newp );
+	newp->timer_ent = NULL;
+	if(type != MONIT_FIRST)
+	{
+		if( timeout ) 
+		{
+			tout = timeout;
+			if(type != ONCE_ONLY)
+			{
+				if(tout < 10) 
+					tout = 10;
+				ftout = (float)tout * (float)1.5;
+				tout = (int)ftout;
+			}
+			newp->curr_timeout = tout;
+			newp->timer_ent = dtq_add_entry( Dic_timer_q,
+						newp->curr_timeout,
+						service_tmout, newp->serv_id );
+		}
+	}
+	newp->pending = pending;
+	newp->tmout_done = 0;
+	newp->stamped = stamped;
+	newp->time_stamp[0] = 0;
+	newp->time_stamp[1] = 0;
+	newp->quality = 0;
+	newp->def[0] = '\0';
+#ifdef VxWorks
+	newp->tid = taskIdSelf();
+#endif
+	ENABLE_AST
+	return(newp);
+}
+
+
+void modify_service( DIC_SERVICE *servp, int timeout, int *address, int size, void (*routine)(), 
+			 dim_long tag, int *fill_addr, int fill_size, int stamped)
+{
+	int *fillp;
+
+	if( servp->timer_ent )
+	{
+		dtq_rem_entry( Dic_timer_q, servp->timer_ent );
+		servp->timer_ent = 0;
+	}
+	servp->timeout = timeout;
+	servp->serv_address = address;
+	servp->serv_size = size;
+	servp->user_routine = routine;
+	servp->tag = tag;
+	if(servp->fill_size > 0)
+		free( servp->fill_address );
+	fillp = fill_addr;
+	if(fill_size > 0)
+	{
+		fillp = (int *)malloc((size_t)fill_size);
+		memcpy( (char *) fillp, (char *) fill_addr, (size_t)fill_size );
+	}
+	servp->fill_address = fillp;
+	servp->fill_size = fill_size;
+	servp->stamped = stamped;
+	if(timeout)
+	{
+		servp->curr_timeout = timeout;
+		servp->timer_ent = dtq_add_entry( Dic_timer_q,
+						servp->curr_timeout,
+						service_tmout, servp->serv_id );
+	}
+	else
+		servp->timer_ent = NULL;
+}
+
+void dic_change_address( unsigned serv_id, void *serv_address, int serv_size)
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	  {
+	        ENABLE_AST
+		return;
+	  }
+	servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	servp->serv_address = (int *)serv_address;
+	servp->serv_size = serv_size;
+	ENABLE_AST
+}
+
+int dic_get_quality( unsigned serv_id )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+
+	    	ENABLE_AST
+			return(-1);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	return(servp->quality);
+}
+
+char *dic_get_format( unsigned serv_id )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+	    	ENABLE_AST
+			return((char *) 0);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	return(servp->def);
+}
+
+int dic_get_timestamp( unsigned serv_id, int *secs, int *milisecs )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	*secs = 0;
+	*milisecs = 0;
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+	    	ENABLE_AST
+			return(-1);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	if(servp->time_stamp[1])
+	{
+		*secs = servp->time_stamp[1];
+		if(((unsigned)servp->time_stamp[0] & 0xFFFF0000) == 0xc0de0000)
+			*milisecs = servp->time_stamp[0] & 0x0000FFFF;
+		else
+			*milisecs = servp->time_stamp[0];
+		return(1);
+	}
+	else
+	{
+/*
+		*secs = 0;
+		*milisecs = 0;
+*/
+		return(0);
+	}
+}
+
+void dic_release_service( unsigned service_id )
+{
+	register DIC_SERVICE *servp;
+	register int conn_id, pending;
+	static DIC_PACKET *dic_packet;
+	static int packet_size = 0;
+	DIC_DNS_PACKET dic_dns_packet;
+	register DIC_DNS_PACKET *dic_dns_p = &dic_dns_packet;
+	SERVICE_REQ *serv_reqp;
+	int release_service();
+
+	DISABLE_AST
+	if( !packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)DIC_HEADER);
+		packet_size = DIC_HEADER;
+	}
+	if( service_id == 0 )
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp = (DIC_SERVICE *)id_get_ptr(service_id, SRC_DIC);
+	if( servp == 0 )
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->serv_id != (int)service_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	pending = servp->pending;
+	switch( pending )
+	{
+	case NOT_PENDING :
+		conn_id = servp->conn_id;
+		strncpy(dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME); 
+		dic_packet->type = htovl(DIM_DELETE);
+		dic_packet->service_id = (int)htovl(service_id);
+		dic_packet->size = htovl(DIC_HEADER);
+		dna_write_nowait( conn_id, dic_packet, DIC_HEADER );
+		release_service( servp );
+		break;
+	case WAITING_SERVER_UP :
+		if( ( servp->type == COMMAND )||( servp->type == ONCE_ONLY ) )
+		{
+			servp->pending = DELETED;
+			break;
+		}
+		if( Dns_dic_conn_id > 0) {
+			dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+			dic_dns_p->src_type = htovl(SRC_DIC);
+			serv_reqp = &dic_dns_p->service;
+			strcpy( serv_reqp->service_name, servp->serv_name );
+			serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+			dna_write( Dns_dic_conn_id, dic_dns_p,
+				  sizeof(DIC_DNS_PACKET) );
+		}
+		release_service( servp );
+		break;
+	case WAITING_CMND_ANSWER :
+	case WAITING_DNS_UP :
+		release_service( servp );
+		break;
+	case WAITING_DNS_ANSWER :
+		servp->pending = DELETED;
+		break;
+	}
+	ENABLE_AST
+}
+
+
+int release_service( DIC_SERVICE *servicep )
+{
+	register DIC_SERVICE *servp;
+	register int conn_id = 0;
+	register int found = 0;
+	register DIC_CONNECTION *dic_connp;
+	char name[MAX_NAME], *ptr;
+	int id;
+
+	id = servicep->serv_id;
+	servicep->serv_id = 0;
+	conn_id = servicep->conn_id;
+	dic_connp = &Dic_conns[conn_id] ;
+	dll_remove( (DLL *) servicep );
+	if( servicep->timer_ent )
+	{
+		dtq_rem_entry( Dic_timer_q, servicep->timer_ent );
+	}
+/*
+	if(servicep->type != COMMAND)
+*/
+	if(servicep->fill_size > 0)
+		free( servicep->fill_address );
+	if(strstr(servicep->serv_name,"/RpcOut"))
+	{
+		strcpy(name, servicep->serv_name);
+	}
+	else
+		name[0] = '\0';
+	free( servicep );
+	if( conn_id && dic_connp->service_head )
+	{
+		if( dll_empty((DLL *)dic_connp->service_head) ) 
+		{
+			if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+			{
+				while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Cmnd_head,
+						(DLL *) servp)) )
+				{
+					if( servp->conn_id == conn_id)
+						found = 1;
+				}
+			}
+			if( !found)
+			{
+				if(Debug_on)
+				{
+					dim_print_date_time();
+					printf("Conn %d, Server %s on node %s released\n",
+						conn_id, dic_connp->task_name, dic_connp->node_name);
+					fflush(stdout);
+				}
+				release_conn( conn_id );
+			}
+		}
+	}
+	if(name[0])
+	{
+		ptr = strstr(name,"/RpcOut");
+		strcpy(ptr + 4, "In"); 
+		if( (servp = locate_command(name)) )
+			release_service(servp); 
+	}
+	id_free(id, SRC_DIC);
+	return(1);
+}
+
+
+int locate_service( DIC_SERVICE *servp )
+{
+	extern int open_dns(dim_long, void (*)(), void (*)(), int, int, int);
+
+	if(!strcmp(servp->serv_name,"DIS_DNS/SERVER_INFO"))
+	{
+		Tmout_min = DID_DNS_TMOUT_MIN;
+		Tmout_max = DID_DNS_TMOUT_MAX;
+	}
+	if(Tmout_min == 0)
+	{
+		Tmout_min = DIC_DNS_TMOUT_MIN;
+		Tmout_max = DIC_DNS_TMOUT_MAX;
+	}
+	if( !Dns_dic_conn_id )
+	  {
+	    DISABLE_AST;
+		Dns_dic_conn_id = open_dns( 0, recv_dns_dic_rout, error_handler,
+					Tmout_min,
+					Tmout_max,
+					SRC_DIC);
+		if(Dns_dic_conn_id == -2)
+			error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		ENABLE_AST;
+	  }
+	if( Dns_dic_conn_id > 0)
+	{
+	    DISABLE_AST;
+		request_dns_info(servp->prev->serv_id);
+		ENABLE_AST;
+	}
+
+	return(Dns_dic_conn_id);
+}
+
+DIC_SERVICE *locate_command( char *serv_name )
+{
+	register DIC_SERVICE *servp;
+
+	if(!Cmnd_head)
+		return((DIC_SERVICE *)0);
+	if( (servp = (DIC_SERVICE *) dll_search( (DLL *) Cmnd_head, serv_name,
+					    (int)strlen(serv_name)+1)) )
+		return(servp);
+	return((DIC_SERVICE *)0);
+}
+
+DIC_SERVICE *locate_pending( char *serv_name )
+{
+	register DIC_SERVICE *servp;
+
+	if(!Service_pend_head)
+		return((DIC_SERVICE *)0);
+	if( (servp = (DIC_SERVICE *) dll_search( (DLL *) Service_pend_head, serv_name,
+					    (int)strlen(serv_name)+1)) )
+		return(servp);
+	return((DIC_SERVICE *)0);
+}
+
+DIC_BAD_CONNECTION *locate_bad(char *node, char *task, int port)
+{
+	DIC_BAD_CONNECTION *bad_connp;
+
+	if(!Bad_connection_head)
+		return((DIC_BAD_CONNECTION *)0);
+	bad_connp = Bad_connection_head;
+	while( (bad_connp = (DIC_BAD_CONNECTION *) dll_get_next(
+						(DLL *) Bad_connection_head,
+						(DLL *) bad_connp)) )
+	{
+		if((!strcmp(bad_connp->conn.node_name, node)) &&
+			(!strcmp(bad_connp->conn.task_name, task)) &&
+			(bad_connp->conn.port == port) )
+		return(bad_connp);
+	}
+	return((DIC_BAD_CONNECTION *)0);
+}
+
+static void request_dns_info(int id)
+{
+	DIC_SERVICE *servp, *ptr;
+	int n_pend = 0;
+	int request_dns_single_info();
+	extern int open_dns();
+
+	DISABLE_AST
+    if( Dns_dic_conn_id <= 0)
+	{
+		Dns_dic_conn_id = open_dns( 0, recv_dns_dic_rout, error_handler,
+					   Tmout_min,
+					   Tmout_max,
+					   SRC_DIC);
+		if(Dns_dic_conn_id == -2)
+			error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+	}
+	if( Dns_dic_conn_id > 0)
+	{
+		servp = Service_pend_head;
+		if(id > 0)
+		{
+			ptr = (DIC_SERVICE *)id_get_ptr(id, SRC_DIC);
+			if(ptr)
+			{
+				if((ptr->serv_id == id) && (ptr->pending != NOT_PENDING))
+					servp = ptr;
+			}
+		}
+
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( servp->pending == WAITING_DNS_UP)
+			{
+				if(!request_dns_single_info( servp ))
+				{
+					ENABLE_AST
+					return;
+			    }
+				n_pend++;
+			}
+			if(n_pend == 1000)
+			{
+				dtq_start_timer( 0, request_dns_info, servp->serv_id);
+				ENABLE_AST
+				return;
+			}
+		}
+	}
+	else
+	{
+		servp = Service_pend_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( servp->pending == WAITING_DNS_UP)
+			{
+				if(( servp->type != COMMAND )&&( servp->type != ONCE_ONLY ))
+					service_tmout( servp->serv_id );
+			}
+		}
+	}
+	ENABLE_AST
+}
+
+
+int request_dns_single_info( DIC_SERVICE *servp )
+{
+	static DIC_DNS_PACKET Dic_dns_packet;
+	static SERVICE_REQ *serv_reqp;
+	int ret = 1;
+
+	if( Dns_dic_conn_id > 0)
+	{
+	        if(Debug_on)
+			{
+				dim_print_date_time();
+				printf("Requesting DNS Info for %s, id %d\n",
+					servp->serv_name, servp->serv_id);
+			}
+	  
+		Dic_dns_packet.src_type = htovl(SRC_DIC);
+		serv_reqp = &Dic_dns_packet.service;
+		strcpy( serv_reqp->service_name, servp->serv_name );
+		serv_reqp->service_id = htovl(servp->serv_id);
+		servp->pending = WAITING_DNS_ANSWER;
+		Dic_dns_packet.size = htovl(sizeof(DIC_DNS_PACKET));
+		if(!dna_write( Dns_dic_conn_id, &Dic_dns_packet,
+				      sizeof(DIC_DNS_PACKET) ) )
+		  {
+		    ret = 0;
+		  }
+
+	}
+	return ret;
+}
+
+
+static int handle_dns_info( DNS_DIC_PACKET *packet )
+{
+	int conn_id, service_id;
+	DIC_SERVICE *servp;
+	char *node_name, *task_name;
+	char node_info[MAX_NODE_NAME+4];
+	int i, port, protocol, format, pid;
+	register DIC_CONNECTION *dic_connp ;
+	DIC_DNS_PACKET dic_dns_packet;
+	register DIC_DNS_PACKET *dic_dns_p = &dic_dns_packet;
+	SERVICE_REQ *serv_reqp;
+	DIC_BAD_CONNECTION *bad_connp;
+	int retrying = 0;
+	int tmout;
+	int send_service_command();
+	int find_connection();
+	void move_to_bad_service();
+	void retry_bad_connection();
+
+	service_id = vtohl(packet->service_id);
+
+	servp = (DIC_SERVICE *)id_get_ptr(service_id, SRC_DIC);
+	if(!servp)
+		return(0);
+	if(servp->serv_id != service_id)
+		return(0);
+	if(Debug_on)
+	{
+		dim_print_date_time();
+		printf("Receiving DNS Info for service %s, id %d\n",servp->serv_name,
+			vtohl(packet->service_id));
+	}
+	node_name = packet->node_name; 
+	if(node_name[0] == (char)0xFF)
+	{
+		error_handler(0, DIM_FATAL, DIMDNSREFUS, "DIM_DNS refuses connection");
+		return(0);
+	}
+	
+	task_name =  packet->task_name;
+	strcpy(node_info,node_name);
+	for(i = 0; i < 4; i ++)
+		node_info[(int)strlen(node_name)+i+1] = packet->node_addr[i];
+	port = vtohl(packet->port); 
+	pid = vtohl(packet->pid); 
+	protocol = vtohl(packet->protocol);
+	format = vtohl(packet->format);
+
+	if( Dns_dic_timr )
+		dtq_clear_entry( Dns_dic_timr );
+	if( servp->pending == DELETED ) {
+		if( Dns_dic_conn_id > 0) {
+			dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+			dic_dns_p->src_type = htovl(SRC_DIC);
+			serv_reqp = &dic_dns_p->service;
+			strcpy( serv_reqp->service_name, servp->serv_name );
+			serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+			dna_write( Dns_dic_conn_id, dic_dns_p,
+				  sizeof(DIC_DNS_PACKET) );
+		}
+		release_service( servp );	
+		return(0);
+	}
+	if( !node_name[0] ) 
+	{
+		servp->pending = WAITING_SERVER_UP;
+		service_tmout( servp->serv_id ); 
+		if( servp->pending == DELETED ) 
+		{
+			if( Dns_dic_conn_id > 0) 
+			{
+				dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+				dic_dns_p->src_type = htovl(SRC_DIC);
+				serv_reqp = &dic_dns_p->service;
+				strcpy( serv_reqp->service_name, servp->serv_name );
+				serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+				dna_write( Dns_dic_conn_id, dic_dns_p,
+					sizeof(DIC_DNS_PACKET) );
+			}
+			release_service( servp );
+		}
+		return(0);
+	}
+#ifdef OSK
+	{
+		register char *ptr;
+
+		if(strncmp(node_name,"fidel",5))
+		{
+			for(ptr = node_name; *ptr; ptr++)
+			{
+				if(*ptr == '.')
+				{
+					*ptr = '\0';
+					break;
+				}
+			}
+		}
+	}
+#endif
+	if( !(conn_id = find_connection(node_name, task_name, port)) ) 
+	{
+	  bad_connp = locate_bad(node_name, task_name, port);
+	  if(bad_connp)
+		  retrying = bad_connp->retrying;
+	  if((!bad_connp) || (retrying))
+	  {	
+		if( (conn_id = dna_open_client(node_info, task_name, port,
+					      protocol, recv_rout, error_handler, SRC_DIC)) )
+		{
+/*
+#ifndef VxWorks
+			if(format & MY_OS9)
+			{
+				dna_set_test_write(conn_id, TEST_TIME_OSK);
+				format &= 0xfffff7ff;
+			}
+			else
+			{
+				dna_set_test_write(conn_id, TEST_TIME_VMS);
+			}
+#endif
+*/
+			dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+			dic_connp = &Dic_conns[conn_id];
+			strncpy( dic_connp->node_name, node_name,
+				 (size_t)MAX_NODE_NAME); 
+			strncpy( dic_connp->task_name, task_name,
+				 (size_t)MAX_TASK_NAME);
+			dic_connp->port = port;
+			dic_connp->pid = pid;
+			if(Debug_on)
+			{
+				dim_print_date_time();
+				printf("Conn %d, Server %s on node %s Connecting\n",
+					conn_id, dic_connp->task_name, dic_connp->node_name);
+				fflush(stdout);
+			}
+
+			dic_connp->service_head = 
+						malloc(sizeof(DIC_SERVICE));
+			dll_init( (DLL *) dic_connp->service_head);
+			((DIC_SERVICE *)(dic_connp->service_head))->serv_id = 0;
+			if(retrying)
+			{
+				dll_remove((DLL *)bad_connp->conn.service_head);
+				free(bad_connp->conn.service_head);
+				dll_remove((DLL *)bad_connp);
+				free(bad_connp);
+			}
+		} 
+		else 
+		{
+			if(!retrying)
+			{
+				if( !Bad_connection_head )
+				{
+					Bad_connection_head = (DIC_BAD_CONNECTION *) malloc(sizeof(DIC_BAD_CONNECTION));
+					dll_init( (DLL *) Bad_connection_head );
+					Bad_connection_head->conn.service_head = 0;
+				}
+				bad_connp = (DIC_BAD_CONNECTION *) malloc(sizeof(DIC_BAD_CONNECTION));
+				bad_connp->n_retries = 0;
+				bad_connp->conn.service_head = malloc(sizeof(DIC_SERVICE));
+				dll_init( (DLL *) bad_connp->conn.service_head);
+
+				dll_insert_queue( (DLL *) Bad_connection_head, (DLL *) bad_connp );
+				if(Debug_on)
+				{
+					dim_print_date_time();
+					printf("Failed connecting to Server %s on node %s port %d\n",
+						task_name, node_name, port);
+					fflush(stdout);
+				}
+				service_tmout( servp->serv_id );
+			}
+			bad_connp->n_retries++;
+			bad_connp->retrying = 0;
+			strncpy( bad_connp->conn.node_name, node_name, (size_t)MAX_NODE_NAME); 
+			strncpy( bad_connp->conn.task_name, task_name, (size_t)MAX_TASK_NAME);
+			bad_connp->conn.port = port;
+			tmout = BAD_CONN_TIMEOUT * (bad_connp->n_retries - 1);
+			if(tmout > 120)
+				tmout = 120;
+/* Can not be 0, the callback of dtq_start_timer(0) is not protected */
+			if(tmout == 0)
+				tmout = 1;
+			dtq_start_timer(tmout, retry_bad_connection, (dim_long)bad_connp);
+			if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				return(0);
+			move_to_bad_service(servp, bad_connp);
+/*			
+			((DIC_SERVICE *)(dic_connp->service_head))->serv_id = 0;
+
+			servp = Service_pend_head;
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+			{
+				if( (servp->pending == WAITING_DNS_ANSWER) ||
+					(servp->pending == WAITING_SERVER_UP))
+						servp->pending = WAITING_DNS_UP;
+			}
+			dna_close( Dns_dic_conn_id );
+			Dns_dic_conn_id = 0;
+			request_dns_info(0);
+*/
+			return(0);
+		}
+	  }
+	  else
+	  {
+			if(!retrying)
+				service_tmout( servp->serv_id );
+			if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				return(0);
+			move_to_bad_service(servp, bad_connp);
+			return(0);
+	  }
+	}
+	strcpy(servp->def, packet->service_def);
+	get_format_data(format, servp->format_data, servp->def);
+	servp->format = format;
+	servp->conn_id = conn_id;
+
+	send_service_command( servp );
+/*
+	if( ret == 1)
+	{
+		if(servp->pending != WAITING_CMND_ANSWER)
+			servp->pending = NOT_PENDING;
+		servp->tmout_done = 0;
+	}
+*/
+	return(1);
+}
+
+void retry_bad_connection(DIC_BAD_CONNECTION *bad_connp)
+{
+DIC_SERVICE *servp, *auxp;
+int found = 0;
+void move_to_notok_service();
+
+	if(!bad_connp)
+		return;
+	servp = (DIC_SERVICE *)bad_connp->conn.service_head;
+	while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) bad_connp->conn.service_head,
+				 	(DLL *) servp)) )
+	{
+/*
+		servp->pending = WAITING_DNS_UP;
+		servp->conn_id = 0;
+*/
+		auxp = servp->prev;
+		move_to_notok_service( servp );
+		servp = auxp;
+		found = 1;
+	}
+	bad_connp->retrying = 1;
+	if(found)
+		request_dns_info(0);
+}
+
+void move_to_ok_service( DIC_SERVICE *servp, int conn_id )
+{
+	if(Dic_conns[conn_id].service_head)
+	{
+		DISABLE_AST
+/*
+printf("move_to_ok %s\n",servp->serv_name);
+*/
+		servp->pending = NOT_PENDING;
+		servp->tmout_done = 0;
+		dll_remove( (DLL *) servp );
+		dll_insert_queue( (DLL *) Dic_conns[conn_id].service_head,
+			  (DLL *) servp );
+		ENABLE_AST
+	}
+}
+
+void move_to_bad_service( DIC_SERVICE *servp, DIC_BAD_CONNECTION *bad_connp)
+{
+	DISABLE_AST
+/*
+printf("move_to_bad %s\n",servp->serv_name);
+*/
+	servp->pending = WAITING_DNS_UP;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) bad_connp->conn.service_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+void move_to_cmnd_service( DIC_SERVICE *servp )
+{
+/*
+	if(servp->pending != WAITING_CMND_ANSWER)
+*/
+	DISABLE_AST
+/*
+printf("move_to_cmnd %s\n",servp->serv_name);
+*/
+	servp->pending = NOT_PENDING;
+	servp->tmout_done = 0;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) Cmnd_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+void move_to_notok_service(DIC_SERVICE *servp )
+{
+	DISABLE_AST
+/*
+printf("move_to_notok %s\n",servp->serv_name);
+*/
+	servp->pending = WAITING_DNS_UP;
+	servp->conn_id = 0;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) Service_pend_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+static void get_format_data(int format, FORMAT_STR *format_data, char *def)
+{
+	register FORMAT_STR *formatp = format_data;
+	register char code, last_code = 0;
+	int num;
+	char *ptr = def;
+
+	if(format){}
+	while(*ptr)
+	{
+		switch(*ptr)
+		{
+			case 'i':
+			case 'I':
+			case 'l':
+			case 'L':
+				*ptr = 'I';
+				break;
+			case 'x':
+			case 'X':
+				*ptr = 'X';
+				break;
+			case 's':
+			case 'S':
+				*ptr = 'S';
+				break;
+			case 'f':
+			case 'F':
+				*ptr = 'F';
+				break;
+			case 'd':
+			case 'D':
+				*ptr = 'D';
+				break;
+			case 'c':
+			case 'C':
+				*ptr = 'C';
+				break;
+		}
+		ptr++;
+	}
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			formatp->par_num = 0;
+			formatp->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					formatp->par_bytes = SIZEOF_LONG;
+					formatp->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					formatp->par_bytes = SIZEOF_DOUBLE;
+					formatp->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					formatp->par_bytes = SIZEOF_SHORT;
+					formatp->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					formatp->par_bytes = SIZEOF_LONG;
+					formatp->flags |= SWAPL;
+#ifdef vms
+/*
+					if((format & 0xF0) != (MY_FORMAT & 0xF0))
+*/
+					formatp->flags |= (format & 0xF0);
+					formatp->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					formatp->par_bytes = SIZEOF_DOUBLE;
+					formatp->flags |= SWAPD;
+#ifdef vms
+/*             	
+			  		if((format & 0xF0) != (MY_FORMAT & 0xF0))
+*/
+					formatp->flags |= (format & 0xF0);
+					formatp->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+				case 'b':
+				case 'B':
+				case 'v':
+				case 'V':
+					formatp->par_bytes = SIZEOF_CHAR;
+					formatp->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+/* tested by the server
+			if(*def)
+			{
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+   	    	}
+			else
+*/
+				formatp->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			formatp->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+	       	    def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			formatp++;
+	}
+	formatp->par_bytes = 0;
+/*
+	if((format & 0xF) == (MY_FORMAT & 0xF)) 
+	{
+		for(i = 0, formatp = format_data; i<index;i++, formatp++)
+			formatp->flags &= 0xF0;  
+	}
+*/
+}
+
+int end_command(DIC_SERVICE *servp, int ret)
+{
+	DIC_SERVICE *aux_servp;
+	DIC_CONNECTION *dic_connp;
+
+	DISABLE_AST
+	dic_connp = &Dic_conns[servp->conn_id];
+	if(servp->pending != WAITING_CMND_ANSWER)
+	{
+		if((!ret) || (!dic_connp->service_head))
+		{
+			servp->pending = WAITING_DNS_UP;
+			dic_release_service( (unsigned)servp->serv_id );
+		}
+		else
+		{
+			aux_servp = locate_command(servp->serv_name);
+			if( !aux_servp ) 
+			{
+				move_to_cmnd_service( servp );
+			}
+			else
+			{
+				if(aux_servp != servp)
+				{
+					servp->pending = WAITING_DNS_UP;
+					dic_release_service( (unsigned)servp->serv_id );
+				}
+			}
+		}
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+int send_service_command(DIC_SERVICE *servp)
+{
+    int ret = 1;
+	int conn_id;
+	int send_command();
+	int send_service();
+
+	conn_id = servp->conn_id;
+	if( servp->type == COMMAND ) 
+	{
+		ret = send_command(conn_id, servp);
+		end_command(servp, ret);
+	} 
+	else 
+	{
+		if( send_service(conn_id, servp))
+		{
+			if( servp->type == ONCE_ONLY ) 
+			{
+				if( !locate_command(servp->serv_name) ) 
+				{
+					move_to_cmnd_service( servp );	
+				}
+			}
+			else
+				move_to_ok_service( servp, conn_id );
+		}
+		else
+		{
+			if( servp->type == ONCE_ONLY ) 
+			{
+				servp->pending = WAITING_DNS_UP;
+				dic_release_service( (unsigned)servp->serv_id );
+			}
+			else
+			{
+				servp->pending = WAITING_DNS_UP;
+				servp->conn_id = 0;
+/*
+				release_conn(conn_id);
+*/
+				request_dns_info(0);
+			}
+		}
+	}
+	return(ret);
+}	
+
+int send_service(int conn_id, DIC_SERVICE *servp)
+{
+	static DIC_PACKET *dic_packet;
+	static int serv_packet_size = 0;
+    int type, ret;
+
+	if( !serv_packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)DIC_HEADER);
+		serv_packet_size = DIC_HEADER;
+	}
+
+	strncpy( dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME ); 
+	type = servp->type;
+	if(servp->stamped)
+		type |= STAMPED;
+	dic_packet->type = htovl(type);
+	dic_packet->timeout = htovl(servp->timeout);
+	dic_packet->service_id = htovl(servp->serv_id);
+	dic_packet->format = htovl(MY_FORMAT);
+	dic_packet->size = htovl(DIC_HEADER);
+	ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER);
+	if(!ret)
+	{
+		dim_print_date_time();
+		printf(" Client Sending Service Request: Couldn't write to Conn %3d : Server %s@%s service %s\n",
+			conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node, servp->serv_name);
+		fflush(stdout);
+	}
+	return(ret);
+}
+
+typedef struct
+{
+	int ret_code;
+	int serv_id;
+} CMNDCB_ITEM;
+
+void do_cmnd_callback(CMNDCB_ITEM *itemp)
+{
+
+	DIC_SERVICE *servp;
+	int ret, serv_id;
+/*
+	itemp = (CMNDCB_ITEM *)id_get_ptr(id, SRC_DIC);
+*/
+	serv_id = itemp->serv_id;
+	ret = itemp->ret_code;
+	servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	if(servp)
+	{
+		if(servp->serv_id == serv_id)
+		{
+			Curr_conn_id = servp->conn_id;
+			(servp->user_routine)( &servp->tag, &ret );
+			servp->pending = NOT_PENDING;
+			end_command(servp, ret);
+			Curr_conn_id = 0;
+		}
+	}
+/*
+	id_free(id, SRC_DIC);
+*/
+	free(itemp);
+}
+
+int send_command(int conn_id, DIC_SERVICE *servp)
+{
+	static DIC_PACKET *dic_packet;
+	static int cmnd_packet_size = 0;
+	register int size;
+	int ret;
+	CMNDCB_ITEM *itemp;
+
+	size = servp->fill_size;
+
+	if(size < 0)
+		return(1);
+
+	if( !cmnd_packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)(DIC_HEADER + size));
+		cmnd_packet_size = DIC_HEADER + size;
+	}
+	else
+	{
+		if( DIC_HEADER + size > cmnd_packet_size ) {
+			free( dic_packet );
+			dic_packet = (DIC_PACKET *)malloc((size_t)(DIC_HEADER + size));
+			cmnd_packet_size = DIC_HEADER + size;
+		}
+	}
+
+	strncpy(dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME); 
+	dic_packet->type = htovl(COMMAND);
+	dic_packet->timeout = htovl(0);
+	dic_packet->format = htovl(MY_FORMAT);
+
+	dic_packet->service_id = /*id_get((void *)servp)*/servp->serv_id;
+
+	size = copy_swap_buffer_out(servp->format, servp->format_data, 
+					 dic_packet->buffer, servp->fill_address, 
+					 size);
+	dic_packet->size = htovl( size + DIC_HEADER);
+	if( servp->user_routine )
+	{
+		servp->pending = WAITING_CMND_ANSWER;
+		ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+		itemp = (CMNDCB_ITEM *)malloc(sizeof(CMNDCB_ITEM));
+		itemp->serv_id = servp->serv_id;
+		itemp->ret_code = ret;
+/*
+		id = id_get((void *)itemp, SRC_DIC);
+*/
+		dtq_start_timer(0, do_cmnd_callback, (dim_long)itemp);
+/*
+		(servp->user_routine)( &servp->tag, &ret );
+*/
+	}
+	else
+	{
+		ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+	}
+/*
+	if(!ret)
+	{
+		servp->pending = WAITING_DNS_UP;
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+*/
+	/*
+	ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+	if(!ret)
+	{
+		servp->pending = WAITING_DNS_UP;
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+	else
+	{
+		dim_usleep(5000);
+		if( servp->user_routine )
+			(servp->user_routine)( &servp->tag, &ret );
+	}
+*/
+	if(!ret)
+	{
+		dim_print_date_time();
+		printf(" Client Sending Command: Couldn't write to Conn %3d : Server %s@%s\n",conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node);
+		fflush(stdout);
+	}
+	return(ret);
+}
+
+int find_connection(char *node, char *task, int port)
+{
+	register int i;
+	register DIC_CONNECTION *dic_connp;
+
+	if(task){}
+	for( i=0, dic_connp = Dic_conns; i<Curr_N_Conns; i++, dic_connp++ )
+	{
+/*
+		if((!strcmp(dic_connp->task_name, task))
+			&&(!strcmp(dic_connp->node_name, node)))
+*/
+		if((!strcmp(dic_connp->node_name, node)) 
+			&& (dic_connp->port == port))
+		return(i);
+	}
+	return(0);
+}
+
+int dic_get_id(char *name)
+{
+	extern int get_proc_name(char *name);
+
+	get_proc_name(name);
+	strcat(name,"@");
+	get_node_name(&name[(int)strlen(name)]);
+	return(1);
+}
+	
+#ifdef VxWorks
+void dic_destroy(int tid)
+{
+	register int i;
+	register DIC_CONNECTION *dic_connp;
+	register DIC_SERVICE *servp, *auxp;
+	int found = 0;
+
+	if(!Dic_conns)
+	  return;
+	for( i=0, dic_connp = Dic_conns; i<Curr_N_Conns; i++, dic_connp++ )
+	{
+	        if(servp = (DIC_SERVICE *) dic_connp->service_head)
+		  {
+		    while( servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp) )
+		      {
+			if( servp->tid == tid )
+			  {
+			    auxp = servp->prev;
+			    dic_release_service( (unsigned)servp->serv_id );
+			    servp = auxp;
+			    if(!dic_connp->service_head)
+			      break; 
+			  }
+			else
+			  found = 1;
+		    }
+		}
+	}
+	if(!found)
+	  {
+	    if(Dns_dic_conn_id > 0)
+	      {
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+	      }
+	  }
+}
+
+void DIMDestroy(int tid)
+{
+  dis_destroy(tid);
+  dic_destroy(tid);
+}
+
+#endif
+
+static void release_conn(int conn_id)
+{
+	register DIC_CONNECTION *dic_connp = &Dic_conns[conn_id];
+
+	if(Debug_on)
+	{
+		dim_print_date_time();
+		printf("Conn %d, Server %s on node %s completely released\n",
+			conn_id, dic_connp->task_name, dic_connp->node_name);
+		fflush(stdout);
+	}
+	dic_connp->task_name[0] = '\0';
+	dic_connp->port = 0;
+	if(dic_connp->service_head)
+	{
+		free((DIC_SERVICE *)dic_connp->service_head);
+		dic_connp->service_head = (char *)0;
+	}
+	dna_close(conn_id);
+}	
+
+void dic_close_dns()
+{
+	register DIC_SERVICE *servp, *auxp;
+		
+	if(Dns_dic_conn_id > 0)
+	{
+		if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+		{
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+			{
+#ifdef DEBUG
+					printf("\t%s was in the Command list\n", servp->serv_name);
+					printf("type = %d, pending = %d\n",servp->type, servp->pending);
+					fflush(stdout);
+#endif
+				auxp = servp->prev;
+				if( (servp->type == ONCE_ONLY ) &&
+					(servp->pending == WAITING_SERVER_UP))
+				{
+					service_tmout( servp->serv_id );
+				}
+				else if( (servp->type == COMMAND ) &&
+					(servp->pending == WAITING_CMND_ANSWER))
+				{
+					service_tmout( servp->serv_id );
+				}
+				else 
+				{
+					servp->pending = WAITING_DNS_UP;
+					dic_release_service( (unsigned)servp->serv_id );
+				}
+				servp = auxp;
+			}
+		}
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+	}
+}
+/*
+append_service(service_info_buffer, servp)		
+char *service_info_buffer;
+SERVICE *servp;
+{
+	char name[MAX_NAME], *ptr;
+
+	if(strstr(servp->name,"/RpcIn"))
+	{
+		strcpy(name,servp->name);
+		ptr = (char *)strstr(name,"/RpcIn");
+		*ptr = 0;
+		strcat(service_info_buffer, name);
+		strcat(service_info_buffer, "|");
+		if(servp->def[0])
+		{
+			strcat(service_info_buffer, servp->def);
+		}
+		strcat(name,"/RpcOut");
+		if(servp = find_service(name))
+		{
+			strcat(service_info_buffer, ",");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+		}
+		strcat(service_info_buffer, "|RPC");
+		strcat(service_info_buffer, "\n");
+	}
+	else if(strstr(servp->name,"/RpcOut"))
+	{
+	}
+	else
+	{
+		strcat(service_info_buffer, servp->name);
+		strcat(service_info_buffer, "|");
+		if(servp->def[0])
+		{
+			strcat(service_info_buffer, servp->def);
+		}
+		strcat(service_info_buffer, "|");
+		if(servp->type == COMMAND)
+		{
+			strcat(service_info_buffer, "CMD");
+		}
+		strcat(service_info_buffer, "\n");
+	}
+}
+*/
+
+char *dic_get_error_services()
+{
+	return(dic_get_server_services(Error_conn_id));
+}
+
+char *dic_get_server_services(int conn_id)
+{
+	DIC_SERVICE *servp;
+	DIC_CONNECTION *dic_connp;
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);			
+	dic_connp = &Dic_conns[conn_id];
+	if( (servp = (DIC_SERVICE *) dic_connp->service_head) )
+	{
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+			n_services++;
+		}
+		if(!n_services)
+			return((char *)0);			
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+
+		servp = (DIC_SERVICE *) dic_connp->service_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+			strcat(buff_ptr, servp->serv_name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += (int)strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		return((char *)0);			
+	}
+/*
+	dim_print_date_time();
+	printf("Server %s@%s provides services:\n",
+			dic_connp->task_name, dic_connp->node_name);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int dic_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dic_get_server(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+int dic_get_server_pid(int *pid)
+{
+	int ret = 0;
+
+	DISABLE_AST
+
+	*pid = 0;
+	if(Curr_conn_id)
+	{
+		*pid = Dic_conns[Curr_conn_id].pid;
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+void dic_stop()
+{
+	int dic_find_server_conns();
+
+	dtq_delete(Dic_timer_q);
+	dic_close_dns();
+	if(!dic_find_server_conns())
+		dim_stop();
+}
+
+int dic_find_server_conns()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+		{
+			if(Dna_conns[i].read_ast == recv_rout)
+			{
+				dna_close(i);
+			}
+			else
+			{
+				n++;
+			}
+		}
+	}
+	return(n);
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN9(INT, dic_info_service, DIC_INFO_SERVICE, dic_info_service,
+                 STRING, INT, INT, PVOID, INT, PVOID, INT, PVOID, INT)
+FCALLSCFUN9(INT, dic_info_service_stamped, DIC_INFO_SERVICE_STAMPED, 
+				 dic_info_service_stamped,
+                 STRING, INT, INT, PVOID, INT, PVOID, INT, PVOID, INT)
+FCALLSCFUN3(INT, dic_cmnd_service, DIC_CMND_SERVICE, dic_cmnd_service,
+                 STRING, PVOID, INT)
+FCALLSCFUN5(INT, dic_cmnd_callback, DIC_CMND_CALLBACK, dic_cmnd_callback,
+                 STRING, PVOID, INT, PVOID, INT)
+FCALLSCFUN3(INT, dic_cmnd_service_stamped, DIC_CMND_SERVICE_STAMPED, 
+				 dic_cmnd_service_stamped,
+                 STRING, PVOID, INT)
+FCALLSCFUN5(INT, dic_cmnd_callback_stamped, DIC_CMND_CALLBACK_STAMPED, 
+				 dic_cmnd_callback_stamped,
+                 STRING, PVOID, INT, PVOID, INT)
+FCALLSCSUB3(     dic_change_address, DIC_CHANGE_ADDRESS, dic_change_address,
+                 INT, PVOID, INT)
+FCALLSCSUB1(     dic_release_service, DIC_RELEASE_SERVICE, dic_release_service,
+                 INT)
+FCALLSCFUN1(INT, dic_get_quality, DIC_GET_QUALITY, dic_get_quality,
+                 INT)
+FCALLSCFUN3(INT, dic_get_timestamp, DIC_GET_TIMESTAMP, dic_get_timestamp,
+                 INT,PINT,PINT)
+FCALLSCFUN1(INT, dic_get_id, DIC_GET_ID, dic_get_id,
+                 PSTRING)
+FCALLSCFUN1(STRING, dic_get_format, DIC_GET_FORMAT, dic_get_format,
+                 INT)
+#endif
Index: branches/FACT++_part_filenames/dim/src/diccpp.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/diccpp.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/diccpp.cxx	(revision 18732)
@@ -0,0 +1,1363 @@
+#define DIMLIB
+#include <dic.hxx>
+#include <stdio.h>
+
+char *DimClient::dimDnsNode = 0;
+DimErrorHandler *DimClient::itsCltError = 0;
+char *DimClient::serverName = 0;
+int DimClient::dicNoCopy = 0;
+
+extern "C" {
+static void user_routine(void *tagp, void *bufp, int *size)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+//	int id = *tag;
+	DimInfo *t;
+
+//	t = (DimInfo *)id_get_ptr(id, SRC_DIC);
+	t = * (DimInfo **)tagp;
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(*size > 0)
+		{
+			if(!t->itsDataSize)
+			{
+				t->itsData = new char[*size];
+				t->itsDataSize = *size;
+			}
+			else if(t->itsDataSize < *size)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsData = new char[*size];
+				t->itsDataSize = *size;
+			}
+			memcpy(t->itsData, buf, (size_t)*size);
+		}
+		else if (*size == 0)
+		{
+			if(t->itsDataSize)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsDataSize = 0;
+			}
+			t->itsData = buf;
+		}
+	}
+	else
+	{
+		t->itsData = buf;
+	}
+	t->itsSize = *size;
+	if(t->itsHandler)
+	{
+		t->itsHandler->itsService = t;
+		DimCore::inCallback = 1;
+		t->itsHandler->infoHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 1;
+		t->infoHandler();
+		DimCore::inCallback = 0;
+	}
+}
+}
+
+void DimInfo::infoHandler()
+{
+	char *data;
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		data = (char *)itsData;
+		if(!itsDataSize)
+		{
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		else if(itsDataSize < itsSize)
+		{
+			delete[] (char *)(itsData);
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		memcpy(itsData, data, (size_t)itsSize);
+	}
+}
+
+void DimInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+int DimInfo::getQuality()
+{
+	return dic_get_quality(itsId);
+}
+
+int DimInfo::getTimestamp()
+{
+
+	dic_get_timestamp(itsId, &secs, &millisecs);
+	return(secs);
+}
+
+int DimInfo::getTimestampMillisecs()
+{
+	return(millisecs);
+}
+
+
+char *DimInfo::getFormat()
+{
+	char *def;
+	int len = 0, new_len;
+
+	if(itsFormat)
+	{
+		len = (int)strlen(itsFormat)+1;
+		if(len > 1)
+			return itsFormat;
+	}
+	def = dic_get_format(itsId);
+	new_len = (int)strlen(def)+1;
+	if(new_len > len)
+	{
+		if(itsFormat)
+			delete[] itsFormat;
+		itsFormat = new char[(int)strlen(def)+1];
+	}
+	strcpy(itsFormat, def);
+	return itsFormat;
+}
+
+void DimInfo::timerHandler()
+{
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+}
+
+void DimInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONITORED;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = MONITORED;
+		itsTime = time;
+	}
+	else
+	{
+		itsType = ONCE_ONLY;
+		itsTime = 30;
+	}
+	doIt();
+}
+
+
+DimInfo::~DimInfo()
+{
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+	if(itsId)
+		dic_release_service(itsId);
+	if(itsNolinkSize)
+		delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsName)
+		delete[] itsName;
+	if(itsFormat)
+		delete[] itsFormat;
+}
+
+void *DimInfo::getData()
+{
+//	if(!this->itsSize)
+//		return itsNolinkBuf;
+/*
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		if(!DimCore::inCallback)
+			return (void *)0;
+	}
+*/
+	return this->itsData;
+}
+
+void DimStampedInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service_stamped(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+void DimStampedInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONITORED;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = MONITORED;
+		itsTime = time;
+	}
+	else
+	{
+		itsType = ONCE_ONLY;
+		itsTime = 30;
+	}
+	doIt();
+}
+
+DimStampedInfo::~DimStampedInfo()
+{
+}
+
+void DimUpdatedInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service_stamped(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+void DimUpdatedInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONIT_ONLY;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = UPDATE;
+		itsTime = time;
+	}
+	doIt();
+}
+
+DimUpdatedInfo::~DimUpdatedInfo()
+{
+}
+
+extern "C" {
+static void data_user_routine(void *tagp, void *bufp, int *size)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+//	int id = *tag;
+	DimCurrentInfo *t;
+
+//	t = (DimCurrentInfo *)id_get_ptr(id, SRC_DIC);
+	t = * (DimCurrentInfo **)tagp;
+	if(*size > 0)
+	{
+		if(!t->itsDataSize)
+		{
+			t->itsData = new char[*size];
+			t->itsDataSize = *size;
+		}
+		else if(t->itsDataSize < *size)
+		{
+			delete[] (char *)(t->itsData);
+			t->itsData = new char[*size];
+			t->itsDataSize = *size;
+		}
+		memcpy(t->itsData, buf, (size_t)*size);
+	}
+	else if (*size == 0)
+	{
+		if(t->itsDataSize)
+		{
+			delete[] (char *)(t->itsData);
+			t->itsDataSize = 0;
+		}
+		t->itsData = buf;
+	}
+	t->itsSize = *size;
+	t->wakeUp = 1;
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+void DimCurrentInfo::subscribe(char *name, int time, void *nolink, int nolinksize)
+{
+
+	int timeout;
+
+//	itsTagId = 0;
+//	itsId = 0;
+	itsData = 0;
+//	itsFormat = 0;
+//	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+		timeout = 10;
+	else
+		timeout = time;
+	wakeUp = 0;
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	dic_info_service(itsName,ONCE_ONLY,timeout, 0, 0,
+//		data_user_routine, itsTagId, 
+		data_user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+}
+
+DimCurrentInfo::~DimCurrentInfo()
+{
+//	if(itsId)
+//		dic_release_service(itsId);
+	if(itsNolinkSize)
+		delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsName)
+		delete[] itsName;
+//	if(itsFormat)
+//		delete[] itsFormat;
+/*
+	delete[] (char *)itsNolinkBuf;
+
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	delete[] itsName;
+*/
+}
+
+void *DimCurrentInfo::getData()
+{
+	while(!wakeUp)
+	{
+#ifdef __VMS
+		sys$hiber();
+#else
+		dim_wait();
+#endif
+	}
+	return this->itsData;
+}
+
+extern "C" {
+static void cmnd_done(void *tagp, int *result)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimCmnd *t;
+
+//	t = (DimCmnd *)id_get_ptr(id, SRC_DIC);
+	t = *(DimCmnd **)tagp;
+	t->result = *result;
+	t->wakeUp = 1;
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+int DimCmnd::send(char *name, void *data, int datasize) 
+{
+//	int id;
+	if(DimCore::inCallback) 
+	{
+		dic_cmnd_service(name, data, datasize);
+		return(1);
+	}
+	else
+	{
+		wakeUp = 0;
+//		id = id_get((void *)this, SRC_DIC);
+		dic_cmnd_callback(name, data, datasize, 
+//			cmnd_done, id);
+			cmnd_done, (dim_long)this);
+		while(!wakeUp)
+		{
+#ifdef __VMS
+			sys$hiber();
+#else
+			dim_wait();
+#endif
+		}
+//		id_free(id, SRC_DIC);
+		return(result);
+	}
+}
+
+void DimCmnd::sendNB(char *name, void *data, int datasize) 
+{
+	dic_cmnd_service(name, data, datasize);
+}
+
+extern "C" {
+static void rpc_user_routine(void *tagp, void *bufp, int *sizep)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+	int size = *sizep;
+//	int id = *tag;
+	DimRpcInfo *t;
+	int quality;
+
+//	t = (DimRpcInfo *)id_get_ptr(id, SRC_DIC);
+	t = *(DimRpcInfo **)tagp;
+	quality = dic_get_quality(0);
+	if(quality == -1)
+	{
+		buf = (char *)t->itsNolinkBuf;
+		size = t->itsNolinkSize;
+	}
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(size > 0)
+		{
+			if(!t->itsDataSize)
+			{
+				t->itsData = new char[size];
+				t->itsDataSize = size;
+			}
+			else if(t->itsDataSize < size)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsData = new char[size];
+				t->itsDataSize = size;
+			}
+		}
+		else if (size == 0)
+		{
+			if(t->itsDataSize)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsDataSize = 0;
+			}
+		}
+	}
+	if(!t->itsConnected)
+	{
+		t->itsConnected = 1;
+	}
+	if(t->itsWaiting)
+	{
+		t->stop();
+//dim_print_date_time();
+//printf("DIM RPC: Stopped Timer, Data Received for %s\n", t->getName());
+		if(DimClient::getNoDataCopy() == 0)
+		{
+			if(size > 0)
+				memcpy(t->itsData, buf, (size_t)size);
+			else
+				t->itsData = buf;
+		}
+		else
+			t->itsData = buf;
+		t->itsSize = size;
+		t->wakeUp = 1;
+		if(t->itsInit)
+		{
+			t->itsWaiting = 1;
+			t->itsHandler->rpcInfoHandler();
+		}
+		if(t->itsWaiting != 2)
+			t->itsWaiting = 0;
+	}
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+void DimRpcInfo::timerHandler()
+{
+	char *buf;
+	int size;
+		
+	buf = (char *)itsNolinkBuf;
+	size = itsNolinkSize;
+
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(size > 0)
+		{
+			if(!itsDataSize)
+			{
+				itsData = new char[size];
+				itsDataSize = size;
+			}
+			else if(itsDataSize < size)
+			{
+				delete[] (char *)(itsData);
+				itsData = new char[size];
+				itsDataSize = size;
+			}
+		}
+		else if (size == 0)
+		{
+			if(itsDataSize)
+			{
+				delete[] (char *)(itsData);
+				itsDataSize = 0;
+			}
+		}
+	}
+	if(itsWaiting)
+	{
+		if(DimClient::getNoDataCopy() == 0)
+		{
+			if(size > 0)
+				memcpy(itsData, buf, (size_t)size);
+			else
+				itsData = buf;
+		}
+		else
+			itsData = buf;
+		itsSize = size;
+//dim_print_date_time();
+//printf("DIM RPC: Timer fired, No Data Received for %s\n", itsName);
+		wakeUp = 1;
+		if(itsInit)
+		{
+			itsWaiting = 1;
+			itsHandler->rpcInfoHandler();
+		}
+		if(itsWaiting != 2)
+			itsWaiting = 0;
+	}
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+void DimRpcInfo::rpcInfoHandler()
+{
+	char *data;
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		data = (char *)itsData;
+		if(!itsDataSize)
+		{
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		else if(itsDataSize < itsSize)
+		{
+			delete[] (char *)(itsData);
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		memcpy(itsData, data, (size_t)itsSize);
+	}
+}
+
+void DimRpcInfo::subscribe(char *name, void *data, int size,
+	void *nolink, int nolinksize, int timeout)
+{
+
+	itsId = 0;
+//	itsTagId = 0;
+	itsInit = 0;
+	itsWaiting = 0;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsHandler = this;
+	itsDataSize = 0;
+	itsData = 0;
+	itsDataOutSize = 0;
+	itsDataOut = 0;
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	itsNameOut = new char[(int)strlen(name)+1+10];
+	strcpy(itsNameOut,name);
+	strcat(itsNameOut,(char *)"/RpcIn");
+	itsNameIn = new char[(int)strlen(name)+1+10];
+	strcpy(itsNameIn,name);
+	strcat(itsNameIn,(char *)"/RpcOut");
+	itsTimeout = timeout;
+	dim_init();
+	{
+		if(!itsId)
+		{
+//			itsTagId = id_get((void *)itsHandler, SRC_DIC);
+
+//			itsId = dic_info_service_stamped(itsNameIn,MONIT_ONLY,itsTimeout, 
+			itsConnected = 0;
+//			itsId = dic_info_service_stamped(itsNameIn,MONITORED,itsTimeout, 
+			itsId = dic_info_service_stamped(itsNameIn,MONIT_FIRST,itsTimeout, 
+				0, 0,
+//				rpc_user_routine, itsTagId, 
+				rpc_user_routine, (dim_long)itsHandler, 
+				itsNolinkBuf, itsNolinkSize);
+//			dim_usleep(200000);
+			itsInit = 1;
+		}
+	}
+	if(size)
+	{
+		doIt(data, size);
+	}
+}
+	
+void DimRpcInfo::doIt(void *data, int size)
+{
+	int ret;
+
+	wakeUp = 0;
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(!itsDataOut)
+		{
+			itsDataOut = new char[size];
+			itsDataOutSize = size;
+		}
+		else if(itsDataOutSize < size)
+		{
+			delete[] (char *)itsDataOut;
+			itsDataOut = new char[size];
+			itsDataOutSize = size;
+		}
+		memcpy(itsDataOut, data, (size_t)size);
+	}
+	else
+	{
+		itsDataOut = data;
+	}
+	while(!itsConnected)
+		dim_wait();
+	itsWaiting = 1;
+	if(itsTimeout)
+		start(itsTimeout);
+//dim_print_date_time();
+//printf("DIM RPC: Started Timer for %s - %d secs\n", itsName, itsTimeout);
+	ret = DimClient::sendCommand(itsNameOut, itsDataOut, size); 
+	if(!ret)
+	{
+		if(itsTimeout)
+			stop();
+//dim_print_date_time();
+//printf("DIM RPC: Stopped Timer, Command failed for %s\n", itsName);
+//		rpc_user_routine((int *)&itsTagId, itsNolinkBuf, &itsNolinkSize);
+		rpc_user_routine((dim_long *)&itsHandler, itsNolinkBuf, &itsNolinkSize);
+	}
+/*
+	else
+	{
+		if(itsTimeout)
+			start(itsTimeout);
+	}
+*/
+}
+
+void *DimRpcInfo::getData()
+{
+	while(!wakeUp)
+	{
+#ifdef __VMS
+		sys$hiber();
+#else
+		dim_wait();
+#endif
+	}
+/*
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		if(!DimCore::inCallback)
+			return (void *)0;
+	}
+*/
+	return this->itsData;
+}
+
+DimRpcInfo::~DimRpcInfo() 
+{
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+//dim_print_date_time();
+//printf("DIM RPC: Deleting RPC and Timer for %s\n", itsName);
+	if(itsId)
+		dic_release_service(itsId);
+	delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsDataOutSize)
+		delete[] (char *)itsDataOut;
+	delete[] itsName;
+	delete[] itsNameIn;
+	delete[] itsNameOut;
+}
+
+DimBrowser::DimBrowser()
+{
+	int i;
+	for(i = 0; i<5; i++)
+	{
+		itsData[i] = 0;
+		itsData[i] = 0;
+	}
+	currIndex = -1;
+	none = 0;
+	browserRpc = 0;
+}
+
+DimBrowser::~DimBrowser()
+{
+	int i;
+	for(i = 0; i<5; i++)
+	{
+		if(itsData[i])
+			delete itsData[i];
+	}
+	if(browserRpc)
+		delete browserRpc;
+}
+
+int DimBrowser::getServices(const char * serviceName) 
+{
+	return getServices(serviceName, 0);
+}
+
+int DimBrowser::getServices(const char * serviceName, int timeout) 
+{
+	char *str;
+
+//	DimRpcInfo rpc((char *)"DIS_DNS/SERVICE_INFO",(char *)"\0");
+//	rpc.setData((char *)serviceName);
+//	str = rpc.getString();
+	if(!browserRpc)
+		browserRpc = new DimRpcInfo((char *)"DIS_DNS/SERVICE_INFO",timeout,(char *)"\0");
+	browserRpc->setData((char *)serviceName);
+	str = browserRpc->getString();	
+	if(itsData[0])
+		delete itsData[0];
+	itsData[0] = new TokenString(str,(char *)"|\n"); 
+	currIndex = 0;
+	if(!itsData[0]->getNTokens())
+		return(0);
+	return( itsData[0]->getNTokens((char *)"\n") + 1); 
+}
+
+int DimBrowser::getServers() 
+{
+	return getServers(0);
+}
+
+int DimBrowser::getServers(int timeout) 
+{
+	char *str, *pid_str;
+	int size, totsize;
+	DimCurrentInfo srv((char *)"DIS_DNS/SERVER_LIST", timeout, (char *)"\0");
+	str = srv.getString();
+	size = (int)strlen(str)+1;
+	totsize = srv.getSize();
+
+	if(itsData[1])
+		delete itsData[1];
+	itsData[1] = new TokenString(str,(char *)"|@\n"); 
+	currIndex = 1;
+	if(!str[0])
+		return(0);
+	if(totsize > size)
+	{
+		pid_str = str + (int)strlen(str) + 1;
+		if(itsData[4])
+			delete itsData[4];
+		itsData[4] = new TokenString(pid_str,(char *)"|"); 
+	}
+	return(itsData[1]->getNTokens((char *)"|") +1); 
+}
+
+int DimBrowser::getServerServices(const char *serverName) 
+{
+	return getServerServices(serverName, 0);
+}
+
+int DimBrowser::getServerServices(const char *serverName, int timeout) 
+{
+	char *str;
+	char *name = new char[(int)strlen(serverName) + 20];
+	strcpy(name,(char *)serverName);
+	strcat(name,(char *)"/SERVICE_LIST");
+	DimCurrentInfo srv(name, timeout, (char *)"\0");
+	delete[] name;
+	str = srv.getString();	
+	if(itsData[2])
+		delete itsData[2];
+	itsData[2] = new TokenString(str,(char *)"|\n"); 
+	currIndex = 2;
+	if(!itsData[2]->getNTokens())
+		return(0);
+	return(itsData[2]->getNTokens((char *)"\n") + 1); 
+}
+
+int DimBrowser::getServerClients(const char *serverName)
+{
+	return getServerClients(serverName, 0);
+}
+
+int DimBrowser::getServerClients(const char *serverName, int timeout) 
+{
+	char *str;
+	char *name = new char[(int)strlen(serverName) + 20];
+	strcpy(name,(char *)serverName);
+	strcat(name,(char *)"/CLIENT_LIST");
+	DimCurrentInfo srv(name, timeout, (char *)"\0");
+	delete[] name;
+	str = srv.getString();	
+	if(itsData[3])
+		delete itsData[3];
+	itsData[3] = new TokenString(str,(char *)"|@\n"); 
+	currIndex = 3;
+	return(itsData[3]->getNTokens((char *)"@") ); 
+}
+	
+int DimBrowser::getNextService(char *&service, char *&format)
+{
+	int ret, type;
+
+	service = format = &none;
+	ret = itsData[0]->getToken(currToken);
+	if(!ret) return 0;
+	service = currToken;
+	ret = itsData[0]->getToken(currToken);
+	if(!itsData[0]->cmpToken((char *)"|"))
+		return 0;
+	ret = itsData[0]->getToken(currToken);
+	if(!itsData[0]->cmpToken((char *)"|"))
+	{
+		format = currToken;
+		ret = itsData[0]->getToken(currToken);
+		if(!itsData[0]->cmpToken((char *)"|"))      
+			return 0;
+	}
+	ret = itsData[0]->getToken(currToken);
+	type = DimSERVICE;
+	if(!itsData[0]->cmpToken((char *)"\n"))
+	{
+		if(itsData[0]->cmpToken((char *)"CMD"))
+			type = DimCOMMAND;
+		if(itsData[0]->cmpToken((char *)"RPC"))
+			type = DimRPC;
+		ret = itsData[0]->getToken(currToken);
+		if(!itsData[0]->cmpToken((char *)"\n"))
+			return 0;
+	}
+	return type;
+}
+	
+int DimBrowser::getNextServer(char *&server, char *&node)
+{
+	int ret;
+
+	server = node = &none;
+	ret = itsData[1]->getToken(currToken);
+	if(!ret) return 0;
+	server = currToken;
+	ret = itsData[1]->getToken(currToken);
+	if(!itsData[1]->cmpToken((char *)"@"))
+		return 0;
+	while(1)
+	{
+		ret = itsData[1]->getToken(currToken);
+		node = currToken;
+		itsData[1]->pushToken();
+		ret = itsData[1]->getToken(currToken);
+		if(itsData[1]->cmpToken((char *)"@"))
+		{
+			strcat(server,"@");
+			strcat(server,node);
+		}
+		else
+			break;
+	}
+	if(!itsData[1]->cmpToken((char *)"|"))
+		itsData[1]->popToken();
+	return 1;
+}
+
+int DimBrowser::getNextServer(char *&server, char *&node, int &pid)
+{
+	int ret, lpid = 0;
+	char *tok;
+
+	ret = getNextServer(server, node);
+	if(ret && itsData[4])
+	{
+		ret = itsData[4]->getToken(tok);
+		if(ret)
+		{
+			sscanf(tok,"%d",&lpid);
+			pid = lpid;
+		}
+	}
+	if(!ret) 
+		return 0;
+	ret = itsData[4]->getToken(tok);
+	return 1;
+}
+	
+int DimBrowser::getNextServerService(char *&service, char *&format)
+{
+	int ret, type;
+
+	service = format = &none;
+	ret = itsData[2]->getToken(currToken);
+	if(!ret) return 0;
+	service = currToken;
+	ret = itsData[2]->getToken(currToken);
+	if(!itsData[2]->cmpToken((char *)"|"))
+		return 0;
+	ret = itsData[2]->getToken(currToken);
+	if(!itsData[2]->cmpToken((char *)"|"))
+	{
+		format = currToken;
+		ret = itsData[2]->getToken(currToken);
+		if(!itsData[2]->cmpToken((char *)"|"))
+			return 0;
+	}
+	ret = itsData[2]->getToken(currToken);
+	type = DimSERVICE;
+	if(!itsData[2]->cmpToken((char *)"\n"))
+	{
+		if(itsData[2]->cmpToken((char *)"CMD"))
+			type = DimCOMMAND;
+		if(itsData[2]->cmpToken((char *)"RPC"))
+			type = DimRPC;
+		ret = itsData[2]->getToken(currToken);
+		if(!itsData[2]->cmpToken((char *)"\n"))
+			return 0;
+	}
+	return type;
+}
+	
+int DimBrowser::getNextServerClient(char *&client, char *&node)
+{
+	int ret;
+
+	client = node = &none;
+	ret = itsData[3]->getToken(currToken);
+	if(!ret) return 0;
+	client = currToken;
+	ret = itsData[3]->getToken(currToken);
+	if(!itsData[3]->cmpToken((char *)"@"))
+		return 0;
+	ret = itsData[3]->getToken(currToken);
+	node = currToken;
+	itsData[3]->pushToken();
+	ret = itsData[3]->getToken(currToken);
+	if(!itsData[3]->cmpToken((char *)"|"))
+		itsData[3]->popToken();
+	return 1;
+}
+
+DimClient::DimClient()
+{
+	itsCltError = this;
+}
+
+DimClient::~DimClient() 
+{
+	if(dimDnsNode)
+		delete[] dimDnsNode;
+}
+
+int DimClient::sendCommand(const char *name, int data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(int));
+}
+
+int DimClient::sendCommand(const char *name, float data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(float));
+}
+
+int DimClient::sendCommand(const char *name, double data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(double));
+}
+
+int DimClient::sendCommand(const char *name, longlong data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(longlong));
+}
+
+int DimClient::sendCommand(const char *name, short data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(short));
+}
+
+int DimClient::sendCommand(const char *name, const char *data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, (char *)data, (int)strlen(data)+1);
+}
+
+int DimClient::sendCommand(const char *name, void *data, int datasize)
+{
+	DimCmnd a;
+	return a.send((char *)name, data, datasize);
+}
+
+void DimClient::sendCommandNB(const char *name, int data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(int));
+}
+
+void DimClient::sendCommandNB(const char *name, float data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(float));
+}
+
+void DimClient::sendCommandNB(const char *name, double data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(double));
+}
+
+void DimClient::sendCommandNB(const char *name, longlong data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(longlong));
+}
+
+void DimClient::sendCommandNB(const char *name, short data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(short));
+}
+
+void DimClient::sendCommandNB(const char *name, char *data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, data, (int)strlen(data)+1);
+}
+
+void DimClient::sendCommandNB(const char *name, void *data, int datasize)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, data, datasize);
+}
+
+int DimClient::setExitHandler(const char *srvName)
+{
+	DimCmnd a;
+	int ret, tag = 1;
+	char *name = new char[(int)strlen(srvName) + 20];
+	strcpy(name,(char *)srvName);
+	strcat(name,"/SET_EXIT_HANDLER");
+	ret =  a.send(name, &tag, sizeof(int));
+	delete[] name;
+	return ret;
+}
+
+int DimClient::killServer(const char *srvName)
+{
+	DimCmnd a;
+	int ret, tag = 1;
+	char *name = new char[(int)strlen(srvName) + 20];
+	strcpy(name,(char *)srvName);
+	strcat(name,"/EXIT");
+	ret = a.send(name, &tag, sizeof(int));
+	delete[] name;
+	return ret;
+}
+
+int DimClient::setDnsNode(const char *node)
+{
+	dic_set_dns_node((char *)node);
+	dic_close_dns();
+	return 1;
+}
+
+int DimClient::setDnsNode(const char *node, int port)
+{
+	dic_set_dns_port(port);
+	dic_set_dns_node((char *)node);
+	dic_close_dns();
+	return 1;
+}
+
+char *DimClient::getDnsNode()
+{
+	if(!dimDnsNode)
+		dimDnsNode = new char[256];
+	if(dic_get_dns_node(dimDnsNode))
+		return dimDnsNode;
+	else
+		return 0;
+}
+
+int DimClient::getDnsPort() 
+{
+	return dic_get_dns_port();
+}
+
+void DimClient::setNoDataCopy()
+{
+	dicNoCopy = 1;
+}
+
+int DimClient::getNoDataCopy()
+{
+	return dicNoCopy;
+}
+
+extern "C" {
+//static void clt_error_user_routine(char*, int);
+static void clt_error_user_routine(int severity, int code, char *msg)
+{
+
+	DimCore::inCallback = 2;
+	if(DimClient::itsCltError != 0)
+		DimClient::itsCltError->errorHandler(severity, code, msg);
+	DimCore::inCallback = 0;
+}
+}
+
+void DimClient::addErrorHandler(DimErrorHandler *handler)
+{
+	if(handler == 0)
+	{
+		dic_add_error_handler(0);
+		DimClient::itsCltError = 0;
+	}
+	else
+	{
+		DimClient::itsCltError = handler;
+		dic_add_error_handler(clt_error_user_routine);
+	}
+}
+
+void DimClient::addErrorHandler()
+{
+	DimClient::itsCltError = this;
+	dic_add_error_handler(clt_error_user_routine);
+}
+
+int DimClient::getServerId()
+{
+	if(!serverName)
+		serverName = new char[128];
+	serverName[0] = '\0';
+	return dic_get_server(serverName);
+}
+
+int DimClient::getServerPid()
+{
+	int pid, ret;
+
+	ret = dic_get_server_pid(&pid);
+	if(!ret)
+		return 0;
+	return pid;
+}
+
+char *DimClient::getServerName()
+{
+	if(!serverName)
+		serverName = new char[128];
+	serverName[0] = '\0';
+	dic_get_server(serverName);
+	return(serverName);
+}
+
+/*
+char *DimClient::getServerServices(int serverId)
+{
+	return dic_get_server_services(serverId);
+}
+
+char *DimClient::getServerServices()
+{
+	int id;
+	if((id = dic_get_conn_id()))
+		return dic_get_server_services(id);
+	return (char *)0;
+}
+*/
+char **DimClient::getServerServices()
+{
+	static TokenString *data = 0;
+	int id, len = 0, index = 0;
+	char *services;
+	static char** list = 0;
+	char *sep;
+
+	if(data)
+	{
+		delete data;
+		data = 0;
+	}
+	if(list)
+	{
+		delete[] list;
+		list = 0;
+	}
+	if((id = dic_get_conn_id()))
+	{
+		services = dic_get_server_services(id);
+		if(services)
+		{
+			data = new TokenString(services,(char *)"\n");
+			len = data->getNTokens();
+			list = new char*[len];
+			while(data->getToken(list[index]))
+			{
+				data->getToken(sep);
+				index++;
+			}
+		}
+	}
+	if(!len)
+		list = new char*[1];
+	list[index] = 0;
+	return list;
+}
+
+int DimClient::inCallback()
+{
+	if(DimCore::inCallback)
+		return 1;
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/did/did.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/did.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/did.c	(revision 18732)
@@ -0,0 +1,3526 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+#include "did.h"
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;	
+int N_servers = 0;	
+int N_services = 0;	
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Service_buffer;
+int Service_size;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+Widget Curr_client_id;
+Widget Curr_service_list_id;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+Widget SubscribeButton;
+Widget Subscribe10Button;
+
+int Timer_q;
+
+int Force_update = 0;
+/*
+ * Global data
+ */
+static XmFontList did_default_font, did_small_font, 
+  did_label_font, did_server_font;
+
+/*static MrmType class_id;*/		/* Place to keep class ID*/
+/*static MrmType *dummy_class;*/            /* and class variable. */
+
+/*static char *db_filename_vec[1];*/        /* Mrm.hierachy file list. */
+/*static int db_filename_num;*/
+
+/*
+ * Forward declarations
+ */
+void did_exit();
+void create_main();
+void create_label();
+void create_matrix();
+void view_opts();
+void dns_control();
+void ok_pop_up();                                                            
+void cancel_pop_up();
+
+extern void set_something();
+extern void get_something();
+extern void set_color();
+
+/*
+ * Names and addresses of callback routines to register with Mrm
+ */
+/*
+static MrmRegisterArg reglist [] = {
+{"did_exit", (caddr_t)did_exit},
+{"create_main", (caddr_t)create_main},
+{"create_label", (caddr_t)create_label},
+{"create_matrix", (caddr_t)create_matrix},
+{"view_opts", (caddr_t)view_opts},
+{"dns_control", (caddr_t)dns_control},
+{"ok_pop_up", (caddr_t)ok_pop_up},
+{"cancel_pop_up", (caddr_t)cancel_pop_up},
+};
+
+static int reglist_num = (sizeof reglist / sizeof reglist[0]);
+*/
+/*
+ * OS transfer point.  The main routine does all the one-time setup and
+ * then calls XtAppMainLoop.
+ */
+
+SERVER *Curr_servp;
+
+XmFontList util_get_font( char *fontname, Widget top )
+{
+XFontStruct * mf;
+XmFontList font;
+/*
+char * fontname;
+
+  if ( size == 'm' ) {
+    fontname = MENU_FONT;
+  }
+  else if ( size == 'b' ) {
+    fontname = LABEL_FONT;
+  }
+  else {
+    fontname = DEFAULT_FONT;
+  }
+*/
+  if ( (mf = XLoadQueryFont(XtDisplay(top),fontname))==NULL) {
+        printf("Couldn't open the following fonts:\n\t%s\n",
+	    fontname);
+        XtVaGetValues ( top, XmNdefaultFontList, &font, NULL );
+  }
+  else  {
+     font = XmFontListCreate (mf, XmSTRING_DEFAULT_CHARSET);
+  }
+  return font;
+}
+
+void create_matrix_widget()
+{
+Widget row_col_id, top_id;
+Arg arglist[10];
+int n = 0;
+char w_name[MAX_NAME];
+
+	top_id = Window_id;
+	XtSetArg(arglist[n], XmNborderWidth, 0); n++;
+	XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+        XtSetArg(arglist[n], XmNnumColumns, 4);  n++;
+	XtSetArg(arglist[n], XmNpacking, XmPACK_COLUMN);  n++;
+        XtSetArg(arglist[n], XmNadjustLast, False); n++;
+	sprintf(w_name,"matrix_row");
+	row_col_id = XmCreateRowColumn(top_id,w_name,arglist,(Cardinal)n);
+	XtManageChild(row_col_id);
+	Matrix_id[Curr_matrix] = row_col_id;
+	/*
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id); 
+	*/
+}
+
+void gui_create_main_window(Widget parent)
+{
+
+Widget mw;
+Widget mb;
+Widget mf;
+Widget tl;
+Widget sl;
+Widget f;
+XmString xms;
+int par;
+int reason;
+Arg ar[20];
+int n;
+
+    mw = XmCreateMainWindow ( parent, "DidMainWindow", NULL, 0 );
+    XtVaSetValues( mw,
+        XmNresizePolicy, XmRESIZE_ANY,
+		  
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( mw );
+    /* create menu bar */
+    mb = XmCreateMenuBar ( mw, "DidMenuBar", NULL, 0 );
+    XtVaSetValues( mb,
+        XmNmarginHeight,2,
+        XmNborderWidth, 0,
+        XmNfontList,            did_default_font,
+        NULL);
+        
+    gui_create_main_menu( mb );
+    XtManageChild ( mb );
+
+    /* create main form */
+    mf = XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf, 
+		    XmNresizePolicy, XmRESIZE_NONE, 
+		    		   
+		    NULL );
+    XtManageChild ( mf );
+
+    /* create top label */
+    xms = create_str(" \n  ");
+    
+    tl = XmCreateLabel ( mf, "DidTitle", NULL, 0 );
+    XtVaSetValues( tl,
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_NONE,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNleftOffset,              0,
+        XmNtopOffset,               0,
+        XmNbottomOffset,            0,
+        XmNrightOffset,             0,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+		XmNheight,					32,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            did_label_font,
+        NULL);
+    XtManageChild( tl );
+/*
+    tl = XtVaCreateManagedWidget( "SmiTitle",
+        xmPushButtonWidgetClass,    mw,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            smid_label_font,
+        NULL);
+*/
+    XmStringFree ( xms );
+    /*
+	XtAddCallback(tl, MrmNcreateCallback, 
+		(XtCallbackProc)create_label, 0);
+    */
+    par = 0;
+    reason = 0;
+    create_label(tl, &par, &reason);
+
+    /* create main form */
+    /*
+    mf = (Widget)XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf,
+        XmNborderWidth,1,
+        XmNshadowThickness, 2,
+		    XmNwidth,806,
+		    XmNheight,300, 
+		    
+       XmNresizePolicy, XmRESIZE_NONE, NULL );
+    XtManageChild ( mf );
+    */
+    /*
+	XtAddCallback(mf, MrmNcreateCallback, 
+			(XtCallbackProc)create_main, 0);
+    */
+    
+    create_main(mf, &par, &reason);
+    
+    f = XmCreateForm( mf, "ScrollForm", NULL, 0 );
+    XtVaSetValues ( f, 
+		    XmNwidth, 806,
+		    XmNheight,300,		    		  
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+		    /*
+        XmNshadowType, XmSHADOW_OUT,
+		    */
+        XmNborderWidth,0,
+        NULL);
+
+    /*
+    f = XtVaCreateManagedWidget ( "XDScrolledForm",
+        xmFormWidgetClass,          mf,
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+        XmNshadowType, XmSHADOW_OUT,
+        XmNborderWidth,1,
+        NULL);
+*/
+    /*
+	XtAddCallback(f, MrmNcreateCallback, 
+		(XtCallbackProc)create_window, 0);
+    */
+
+    XtManageChild ( f );
+    /* create scrolled list */
+    
+    n = 0;
+    XtSetArg ( ar[n], XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightOffset, 0); n++;
+    XtSetArg ( ar[n], XmNleftOffset, 0); n++;
+    XtSetArg ( ar[n], XmNbottomOffset, 0); n++;
+    XtSetArg ( ar[n], XmNtopOffset, 0); n++;
+    /*
+    XtSetArg ( ar[n], XmNvisualPolicy, XmCONSTANT); n++;
+    */	    
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+		   
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sl = XmCreateScrolledWindow ( f, "ScrollWin", ar, (Cardinal)n );
+    /*
+    XtVaSetValues ( sl, 
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+	XmNtopOffset,               0,
+		    		   
+        XmNvisualPolicy,        XmCONSTANT,
+		    
+	XmNscrollBarDisplayPolicy, XmSTATIC,
+		   
+        XmNscrollingPolicy, XmAUTOMATIC,
+
+        NULL);
+    */
+    XtManageChild ( sl );
+    /*
+    create_window(sl, &par, &reason);
+    */
+    Window_id = sl;
+    
+    create_matrix_widget();
+    
+/* 
+    sl = XtVaCreateWidget ( "DidServersScrl",
+        xmScrolledWindowWidgetClass, f,
+        XmNscrollingPolicy,     XmAUTOMATIC,
+        XmNscrollBarDisplayPolicy, XmSTATIC,
+        XmNtopAttachment,       XmATTACH_FORM,
+        XmNleftAttachment,      XmATTACH_FORM,
+        XmNrightAttachment,     XmATTACH_FORM,
+        XmNbottomAttachment,    XmATTACH_FORM,
+        XmNvisualPolicy,        XmCONSTANT,
+        XmNtopOffset,           4,
+        XmNleftOffset,          4,
+        XmNbottomOffset,        4,
+        XmNrightOffset,         4,
+        NULL );
+    XtManageChild ( sl );
+*/
+    /*
+    XtVaSetValues( mw,
+        XmNworkWindow,mf,
+        XmNcommandWindow, tl,
+        NULL);
+    */
+    
+}
+
+Widget create_separator(Widget parent_id)
+{
+	Widget w;
+	Arg arglist[10];
+	int n = 0;
+
+	w = XmCreateSeparator(parent_id, "separator",
+		arglist,(Cardinal)n);
+	XtManageChild(w);
+	return(w);
+}
+
+void gui_create_main_menu( Widget mb )
+{
+Widget cb;
+Widget mn;
+Widget bt;
+XmString xms;
+    /* File */
+    mn = XmCreatePulldownMenu ( mb, "FileMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "File", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "File",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "F", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        XtVaSetValues ( cb,
+	    XmNfontList,            did_default_font,
+            NULL);
+        /* buttons */
+        xms = create_str ("Exit DID");
+	/*
+        bt = XtVaCreateManagedWidget ( "MenuExitButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>C",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)did_exit, 0 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* View */
+    mn = XmCreatePulldownMenu ( mb, "ViewMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "View", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "View",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "V", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        /* buttons */
+
+        xms = create_str ("All Servers");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuAllButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>A",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)1 );
+
+        xms = create_str ("Servers by Node");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuNodeButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>N",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)0 );
+
+        xms = create_str ("Servers by Service");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuServiceButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>S",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Servers in Error");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuErrorButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>E",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)3 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Commands */
+    mn = XmCreatePulldownMenu ( mb, "CommandMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "Commands", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "Commands",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "C", 2,
+        XmNsubMenuId,       mn,
+        XmNsensitive, commands_enable,
+        NULL);
+    */
+        /* buttons */
+        /* Utils */
+    /*
+        xms = util_create_str ("Show Command Buttons");
+        xma = util_create_str ("Ctrl+B");
+        bt = XtVaCreateManagedWidget ( "C_ShowCmndButt",
+            xmToggleButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>B",
+            XmNacceleratorText, xma,
+            XmNset, False,
+            XmNindicatorSize,12,
+            XmNvisibleWhenOff, True,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNvalueChangedCallback, (XtCallbackProc)show_command_buttons_callback, NULL );
+
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+    */
+        
+        xms = create_str ("LOG Connections");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonLOG",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>G",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "log" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)0 );
+
+        create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Set Debug ON");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDON",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F2:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "on" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)1 );
+
+        xms = create_str ("Set Debug OFF");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDOFF",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F3:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "off" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Print Hash Table");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonPrint",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>T",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "hash" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)4 );
+	/* kill
+	create_separator(mn);
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+	/* kill
+        xms = create_str ("Kill DIM Servers");
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonKill",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>K",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "kill" );
+	*/
+	/* kill
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)3 );
+	*/
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Help */
+    mn = XmCreatePulldownMenu ( mb, "HelpMB", NULL, 0 );
+    /*
+    cb = XtVaCreateManagedWidget ( "Help",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "H", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+    cb = XmCreateCascadeButton ( mb, "Help", NULL, 0 );
+    XtVaSetValues( cb,
+	XmNsubMenuId,       mn,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( cb );
+
+        xms = create_str ("Help");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_XDAbout",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>H",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+	/*
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)about_xd_callback, NULL );
+	*/
+    /* set help menu */
+    XtVaSetValues ( mb, XmNmenuHelpWidget, cb, NULL );
+    /*
+    util_recolor ( XtParent(mn) );
+    */
+}
+
+
+Widget gui_toplevel(char **argv)
+{
+int n;
+Arg arglist[6];
+
+    n = 0;
+    XtSetArg ( arglist[n], XmNallowShellResize, True); n++;
+    XtSetArg ( arglist[n], XmNiconName, "DID"); n++;
+    XtSetArg ( arglist[n], XmNtitle, "xDid");  n++;
+    XtSetArg ( arglist[n], XmNtraversalOn,True); n++;
+    return XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass,
+                            display, arglist, (Cardinal)n);
+     
+}
+
+Widget gui_initialize (int argc, char **argv)
+{
+Widget toplevel;
+void gui_create_main_window();
+
+    XtToolkitInitialize();
+    app_context = XtCreateApplicationContext();
+    display = XtOpenDisplay(app_context, NULL, argv[0], "DID",
+                            NULL, 0, &argc, argv);
+    if (display == NULL) 
+	{
+        printf("%s:  Can't open display\n", argv[0]);
+        exit(1);
+	}
+    toplevel = gui_toplevel(argv);
+   
+    did_default_font = (XmFontList)util_get_font(DEFAULT_FONT, toplevel);
+    did_small_font = (XmFontList)util_get_font(MENU_FONT, toplevel);
+    did_label_font = (XmFontList)util_get_font(LABEL_FONT, toplevel);
+    did_server_font = (XmFontList)util_get_font(SERVER_FONT, toplevel);
+
+    gui_create_main_window(toplevel);
+
+    XtRealizeWidget ( toplevel );
+    return toplevel;
+}
+
+int main(int argc, char *argv[])
+{
+    int i;
+	char opt_str[20], *ptr;
+	XtInputMask mask;
+	void do_got_service_list();
+	void do_show_clients();
+	void app_initialize();
+       
+	dim_no_threads();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	if(argc > 1)
+	{
+		if(argv[1][0] == '-')
+		{
+			sprintf(opt_str,"%s",&argv[1][1]);
+			if((!strncmp(opt_str,"node",4)) || 
+			   (!strncmp(opt_str,"NODE",4)))
+				Curr_view_opt = 0;
+			else if((!strncmp(opt_str,"all",3)) || 
+				(!strncmp(opt_str,"ALL",3)))
+				Curr_view_opt = 1;
+			else if((!strncmp(opt_str,"dns",3)) || 
+				(!strncmp(opt_str,"DNS",3))) {
+                                char text[132];
+			        sprintf(text,"DIM_DNS_NODE=%s",opt_str+4);
+   		  	        putenv(text);
+ 			        dim_set_dns_node(opt_str+4);
+			}
+			else if((!strncmp(opt_str,"service",7)) || 
+					(!strncmp(opt_str,"SERVICE",7)))
+				Curr_view_opt = 2;
+			else if((!strncmp(opt_str,"error",5)) ||
+					(!strncmp(opt_str,"ERROR",5)))
+				Curr_view_opt = 3;
+			else if((!strncmp(opt_str,"help",4)) || 
+				(!strncmp(opt_str,"HELP",4)))
+			  {
+    printf("Did - DIM Information Display\n");
+    printf("\t-all             Show ALL Servers\n");
+    printf("\t-dns=<str>       Show Servers with DIM_DNS_NODE provided by <str>\n");
+    printf("\t-service=<str>   Show Servers providing Service <str>\n");
+    printf("\t-node=<nodename> Show Servers on Node <nodename>\n");
+    printf("\t-error           Show Servers in Error\n");
+    printf("\t-help            Show this message\n\n");
+    exit(0);
+			  }
+			else
+				Curr_view_opt = -1;
+			if((Curr_view_opt == 0) || (Curr_view_opt == 2))
+			{
+  				if(!(ptr = strchr(argv[1],'=')))
+				{
+					if( (ptr = strchr(argv[2],'=')) )
+					{
+						ptr++;
+						if(!(*ptr))
+							ptr = argv[3];
+					}
+					else
+						ptr++;
+				}
+				else
+				{			
+					ptr++;
+					if(!(*ptr))
+						ptr = argv[2];
+				}
+				for(i = 0;*ptr; ptr++, i++)
+					Curr_view_opt_par[i] = (char)toupper((int)*ptr);
+				Curr_view_opt_par[i] = '\0';
+			}
+		}
+	}
+
+    toplevel_widget = (Widget)gui_initialize(argc, argv);
+    app_initialize();
+    /* 
+     * Sit around forever waiting to process X-events.  We never leave
+     * XtAppMainLoop. From here on, we only execute our callback routines. 
+     */
+
+    while(1)
+    {
+		{
+			DISABLE_AST
+			mask = XtAppPending(app_context);	
+			ENABLE_AST
+		}
+		if(mask)
+		{
+			DISABLE_AST
+			XtAppProcessEvent(app_context, mask);
+			if(Got_Service_List)
+			{
+				do_got_service_list(Got_Service_List);
+				Got_Service_List = 0;
+			}
+			if(Got_Client_List)
+			{
+				do_show_clients(Got_Client_List);
+				Got_Client_List = 0;
+			}
+			ENABLE_AST
+		}		
+		else
+		{
+			dim_usleep(100000);
+			/*
+			usleep(100000);	
+			*/
+		}
+    }
+
+}
+
+static char no_link = -1;
+
+void app_initialize(int tag)
+{
+void check_put_label();
+
+void update_servers();
+void update_servers_new();
+void update_show_servers();
+extern void get_all_colors();
+extern void set_title();
+extern void set_icon_title();
+char dns_node[64];
+int dns_port;
+char title[128],icon_title[128];
+
+	if(tag){}
+	dic_get_dns_node(dns_node);
+    dns_port = dic_get_dns_port();
+	if(dns_port != DNS_PORT)
+	{
+		sprintf(title,"DID - DIM Information Display DNS=%s:%d",dns_node,dns_port);
+	}
+	else
+	{
+		sprintf(title,"DID - DIM Information Display DNS=%s",dns_node);
+	}
+	sprintf(icon_title,"DID %s",dns_node);
+	get_all_colors(display,Matrix_id[Curr_matrix]);
+	set_title(toplevel_widget,title);
+	set_icon_title(toplevel_widget,icon_title);
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	/*
+      	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED,0,0,0,
+			 update_servers_new,0, &no_link,1);
+	*/
+	/*	
+	dtq_add_entry(Timer_q, 2, check_put_label, 0);
+	*/
+	XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+}
+
+/*
+ * All errors are fatal.
+ */
+void s_error(char *problem_string)
+{
+    printf("%s\n", problem_string);
+    exit(0);
+}
+
+void did_exit(Widget w, int *tag, unsigned long *reason)
+{
+	if(w){}
+	if(tag){}
+	if(reason){}
+	exit(0);
+}
+
+extern Pixel rgb_colors[MAX_COLORS];
+
+void create_main (Widget w, int *tag, unsigned long *reason)
+{
+	if(tag){}
+	if(reason){}
+	Window_id = w;
+/*
+	dtq_start_timer(5, app_initialize, 0);
+*/
+}
+
+void view_opts(Widget w, int tag, unsigned long *reason)
+{
+	void get_server_node(), get_server_service(), show_servers();
+
+	if(w){}
+	if(reason){}
+	Curr_view_opt = tag;
+	switch(tag)
+	{
+		case 0 :
+			get_server_node();
+			break;
+		case 1 :
+			show_servers();
+			break;
+		case 2 :
+			get_server_service();
+			break;
+		case 3 :
+			show_servers();
+			break;
+	}
+}
+
+void dns_control(Widget w, int tag, unsigned long *reason)
+{
+
+	if(w){}
+	if(reason){}
+	switch(tag)
+	{
+		case 0 :
+			dic_cmnd_service("DIS_DNS/PRINT_STATS",0,0);
+			break;
+		case 1 :
+			dic_cmnd_service("DIS_DNS/DEBUG_ON",0,0);
+			break;
+		case 2 :
+			dic_cmnd_service("DIS_DNS/DEBUG_OFF",0,0);
+			break;
+		case 3 :
+			put_selection(DID_KILL_ALL,"Confirmation");
+			break;
+		case 4 :
+			dic_cmnd_service("DIS_DNS/PRINT_HASH_TABLE",0,0);
+			break;
+	}
+}
+
+void get_server_node()
+{
+Widget id,sel_id;
+int i, j, n_nodes, curr_index = 0;
+char nodes_str[MAX_NODE_NAME*MAX_CONNS*2], max_str[MAX_NODE_NAME];
+char *ptr, *nodeptrs[MAX_CONNS*2], *curr_str, *sptr;
+int get_nodes();
+
+	sel_id = put_selection(DID_SEL_NODE,"Node Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	n_nodes = get_nodes(nodes_str);
+	ptr = nodes_str;
+
+	for(i=0;i<n_nodes;i++)
+	{
+		nodeptrs[i] = ptr;
+		sptr = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		for(j = 0; j < (int)strlen(sptr); j++)
+		  sptr[j] = (char)tolower((int)sptr[j]);
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_nodes; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_nodes; j++)
+	  {
+	    sptr = nodeptrs[j];
+	    if(!sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  nodeptrs[curr_index] = 0;
+	  XmListAddItem(id,create_str(curr_str),i+1);
+	}
+	/*
+	for(i=0;i<n_nodes;i++)
+	{
+		node = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		XmListAddItem(id,create_str(node),i+1);
+	}
+	*/
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 8) ? i : 8);
+}	
+
+void get_server_service()
+{
+Widget id,sel_id;
+
+	sel_id = put_selection(DID_SEL_SERVICE,"Service Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	/*
+	XtUnmanageChild(id);
+	*/
+	XtUnmapWidget(id);
+	
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	XtUnmanageChild(id);
+	*/
+}	
+
+int get_nodes(char *node_ptr)
+{
+DNS_SERVER_INFO *ptr;
+int n_nodes = 0;
+SERVER *servp;
+
+	node_ptr[0] = '\0';
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		ptr = &servp->server;
+		if(strstr(node_ptr,ptr->node) <= (char *)0)
+		{
+			strcat(node_ptr,ptr->node);
+			strcat(node_ptr,"\n");
+			n_nodes++;
+		}
+	}
+	return(n_nodes);
+}
+
+void get_service_format()
+{
+
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(size_t)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+void recv_service_info(int *tag, int *buffer, int *size)
+{
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+*/
+	void print_service_formatted();
+
+	if(tag){}
+	Service_content_str = malloc((size_t)(1024 + (*size)*16));
+	Service_buffer = malloc((size_t)*size);
+	memcpy(Service_buffer, (char *)buffer, (size_t)*size);
+	Service_size = *size;
+	get_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available\n", Curr_service_name);
+	}
+	else
+	{
+	  switch(Curr_service_print_type)
+	  {
+	  case 0:
+		print_service_formatted(buffer,*size);
+		break;
+		/*
+	  case 1:
+		print_service_float(buffer, ((*size - 1) / 4) + 1);
+		break;
+	  case 2:
+		print_service_double(buffer, ((*size - 1) / 4) + 1);
+		break;
+		*/
+	  }
+	}
+	set_something(Content_label_id,XmNlabelString, Service_content_str);
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+	
+void print_service_formatted(void *buff, int size)
+{
+char type;
+int num, ret;
+char str[128];
+char *ptr;
+void *buffer_ptr;
+char timestr[128], aux[10];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+  sprintf(Service_content_str,
+	  "Service %s (%s) Contents :\n  \n", Curr_service_name,
+	  Curr_service_format);
+  /*
+  if(Curr_service_id)
+  {
+  */
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+/*
+#ifdef LYNXOS
+	ctime_r((time_t *)&secs, timestr, 128);
+#else
+	ctime_r((time_t *)&secs, timestr);
+#endif
+*/
+	tsecs = secs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s               Quality: %d\n\n",
+	  timestr, quality);
+
+    strcat(Service_content_str,str);
+    /*
+  }
+    */
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 ret = did_write_string(type, num, &buffer_ptr, size);
+	 size -= ret;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 ret = did_write_string(type, 0, &buffer_ptr, size);
+	 size -= ret;
+	 break;
+       }
+   }
+}
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+	size = ssize/(int)sizeof(int);
+      else
+	size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+	size = ssize/(int)sizeof(int);
+      else
+	size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+	size = ssize/(int)sizeof(short);
+      else
+	size = num;
+      psize = size * (int)sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+	size = ssize/(int)sizeof(float);
+      else
+	size = num;
+      psize = size * (int)sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+	size = ssize/(int)sizeof(double);
+      else
+	size = num;
+      psize = size * (int)sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+	size = ssize/(int)sizeof(longlong);
+      else
+	size = num;
+      psize = size * (int)sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+	size = ssize;
+      else
+	size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+/*
+print_service(buff, size)
+int *buff, size;
+{
+int i,j, str_flag = 0;
+char *asc, *ptr, str[80];
+int last[4];
+
+	sprintf(Service_content_str,
+		"Service %s (%s) Contents :\n  \n", Curr_service_name,
+		Curr_service_format);
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(i%4 == 0)
+		{
+			sprintf(str,"%4d: ",i);
+			strcat(Service_content_str,str);
+		}
+		if(!(i%4))
+			strcat(Service_content_str,"H");
+		sprintf(str,"   %08X ",buff[i]);
+		strcat(Service_content_str,str);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			strcat(Service_content_str,"   '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(Service_content_str,str);
+				}
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+			for(j = 0; j < 4 - (i%4); j++)
+				strcat(Service_content_str,"            ");
+			strcat(Service_content_str,"   '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+					strcat(Service_content_str,".");
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+	}
+}
+*/
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+int last[4];
+/*
+char *asc;
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+		  /*
+			if(i%4 != 3)
+			{
+			    for(j = 1; j < 4 - (i%4); j++)
+				strcat(tmp,"            ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%4)*4)+4 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+longlong last[4];
+/*
+char *asc;
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",(int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+short last[8];
+/*
+char *asc; 
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"  %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+		  /*
+			if(i%7 != 7)
+			{
+			    for(j = 1; j < 8 - (i%8); j++)
+				strcat(tmp,"      ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%8)*2)+2 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str," %5d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+/*
+char last[16];
+*/
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[strlen(str)-2]);
+		/*
+		last[i%16] = buff[i];
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"   ");
+			}
+			strcat(tmp,"    '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+       	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void ok_pop_up (Widget w, long tag, unsigned long *reason)
+{
+Widget id, sel_id;
+char *str, *pstr;
+void recv_service_info();
+void did_prepare_command();
+void show_servers();
+
+/*
+	if(tag == 5)
+	{
+		id = (Widget)XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		if( ( fptr = fopen( str, "w" ) ) == (FILE *)0 )
+		{
+    		printf("Cannot open: %s for writing\n",str);
+			return;
+		}                   
+		ptr = &Curr_servp->server;
+		if (ptr->pid > 0x1000000)
+			fprintf(fptr,"Server %s (pid = %X) on node %s\n    provides %d services :\n",
+			Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		else
+			fprintf(fptr,"Server %s (pid = %d) on node %s\n    provides %d services :\n",
+				Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		service_ptr = Curr_servp->service_ptr;
+		for(i=0;i<ptr->n_services; i++)
+		{
+			sprintf(str,service_ptr->name);
+			fprintf(fptr,"        %s\n",service_ptr->name);
+			service_ptr++;
+		}		
+		fclose(fptr);
+		XtFree(str);
+		return;
+	}
+	if(tag == 4)
+	{
+		sel_id = put_selection(4, "Printing...");
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+		XtUnmanageChild(id);
+
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+		XtUnmanageChild(id);
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		ptr = &Curr_servp->server;
+		if(pstr = strrchr(str,']'))
+			*(++pstr) = '\0';
+		if(pstr = strrchr(str,'/'))
+			*(++pstr) = '\0';
+		sprintf(txt_str,"%s%s.TXT",str,Curr_servp->name);
+		XtFree(str);
+		XmTextSetString(id, txt_str);
+		return;
+	}
+*/
+	if(reason){}
+	if(tag == DID_KILL_ALL)
+	{
+		dic_cmnd_service("DIS_DNS/KILL_SERVERS",0,0);
+		return;
+	}
+	id = XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+	str = XmTextGetString(id);
+	if(!str[0])
+	{
+		XtFree(str);
+		return;
+	}
+    if ((tag == DID_SEL_NODE) || (tag == DID_SEL_SERVICE)) 
+	{
+		strcpy(Curr_view_opt_par, str);
+		show_servers();
+		XtFree(str);
+	}
+    if(tag == DID_SERVICES)
+	{
+	  pstr = strchr(str,' ');
+	  if(!pstr)
+	    {
+	      strcpy(Curr_service_name, str);
+	      strcpy(str,"SVC");
+	    }
+	  else
+	    {
+	      pstr++;
+	      strcpy(Curr_service_name, pstr);
+	    }
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+	  if(str[0] == 'S')
+	    {
+	      /*
+	      if((!strstr(pstr,"/SERVICE_LIST")) && 
+		 (!strstr(pstr,"/CLIENT_LIST")) &&
+		 (!strstr(pstr,"/SERVER_LIST")))
+		{
+		  Curr_service_id = dic_info_service(Curr_service_name,
+		                             MONITORED,5,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		}
+	      else
+		{
+	      */
+	      dic_info_service_stamped(Curr_service_name,
+							 ONCE_ONLY,10,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		  /*
+		}
+		  */
+	      put_selection(DID_SERVICE,"Service Contents");
+	    }
+	  else
+	    {
+	      get_service_format();
+	      sel_id = put_selection(DID_COMMAND,"Send Command");
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	      /*
+	      XtUnmanageChild(id);
+	      */
+	      XtUnmapWidget(id);
+	    }
+	  XtFree(str);
+	}
+    if(tag == DID_COMMAND)
+	{
+	  did_prepare_command(str);
+	  XtFree(str);
+	}
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 size = get_type_size(type);
+	 sscanf(ptr, "%d", &num);
+	 full_size += size * num;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+	free(last_buffer);
+      last_buffer = malloc((size_t)full_size);
+      last_size = full_size;
+   }
+   buffer_ptr = last_buffer;
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 did_read_string(type, num, &buffer_ptr, &str_ptr);  
+	 if(!str_ptr)
+	     break;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 did_read_string(type, 0, &buffer_ptr, &str_ptr);
+	 break;
+       }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(Curr_service_name,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",(int *)cc);
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+    sscanf(str,"%d",(int *)cc);
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+	*(int *)ptr = read_str_int(strp);
+	ptr = (int *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+	s = (short)read_str_int(strp);
+	*((short *)ptr) = s;
+	ptr = (short *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	*(float *)ptr = ff;
+	ptr = (float *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	dd = (double)ff;
+	*(double *)ptr = dd;
+	ptr = (double *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+	if((ret = read_str_char(strp, &cc)) <= 0)
+	  break;
+	*(char *)ptr = cc;
+	ptr = (char *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      if(ret <= 0)
+      {
+	if(!ret)
+	{
+	  strp++;
+	}
+	num = (int)strlen(strp)+1;
+	strncpy((char *)ptr,strp,(size_t)num);
+	if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+	{
+	  num--;
+	  *ptr1 = '\0';
+	}
+	ptr = (char *)ptr + num;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+    }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
+
+void cancel_pop_up (Widget w, int tag, unsigned long *reason)
+{
+	void print_service_formatted();
+
+	if(reason){}
+	if(tag == MAX_POP_UPS+1)
+	{
+	  print_service_formatted(Service_buffer,Service_size);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 0;
+	}
+	/*
+	else if(tag == MAX_POP_UPS+2)
+	{
+		print_service_float(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 1;
+	}
+	else if(tag == MAX_POP_UPS+3)
+	{
+		print_service_double(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 2;
+	}
+	*/
+	else if(tag == MAX_POP_UPS+4)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = (int)dic_info_service_stamped(Curr_service_name,
+						     MONITORED,10,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(SubscribeButton, True);
+	}
+	else if(tag == MAX_POP_UPS+5)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = (int)dic_info_service_stamped(Curr_service_name,
+						     MONITORED,0,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(Subscribe10Button, True);
+	}
+/*
+	else if(tag == 5)
+	{
+	  *
+		XtUnmapWidget(XtParent(pop_widget_id[4]));
+	  *
+	}
+*/
+	else if(tag == DID_SERVICE)
+	{
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+            XtUnmanageChild(pop_widget_id[DID_SERVICE]);
+	    free(Service_content_str);
+	    free(Service_buffer);
+	}
+}
+
+void create_matrix(Widget w, int *tag, unsigned long *reason)
+{
+
+	if(reason){}
+	Matrix_id[*tag] = w;
+	if(*tag)
+		XtUnmanageChild(w);
+	else
+		Curr_matrix = 0;
+}
+
+void create_label(Widget w, int *tag, unsigned long *reason)
+{
+	if(reason){}
+	if(!*tag)
+		Label_id = w;
+	else
+		Content_label_id = w;
+}
+
+void switch_matrix()
+{
+	/*
+	XtUnmanageChild(Matrix_id[Curr_matrix]);
+	Curr_matrix = (Curr_matrix) ? 0 : 1;
+	XtManageChild(Matrix_id[Curr_matrix]);
+	*/
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id[Curr_matrix]); 
+}
+
+/*
+static int curr_allocated_size = 0;
+static DNS_SERVER_INFO *dns_info_buffer;
+*/
+
+void update_servers_new(int *tag, char *buffer, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("Server_list:\n%s\n",buffer);
+}
+
+SERVER *find_server(char *node, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = Server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+    {
+      ptr = &servp->server;
+      if((ptr->pid == pid) && (!strcmp(ptr->node,node)))
+	{
+	  return(servp);
+	}
+    }
+  return ((SERVER *)0);
+}
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+
+
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+
+	if(tag){}
+	if(!Server_head)
+	{
+		Server_head = (SERVER *)malloc(sizeof(SERVER));
+		sll_init((SLL *)Server_head);
+	}
+	if(First_time)
+	{
+		switch_matrix();
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+	/*
+printf("received pid %d, nservices %d\n",buffer->server.pid, n_services);
+	*/
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	/*
+printf("name = %s\n", sname);
+	*/
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if(strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(servp = find_server(buffer->server.node,buffer->server.pid)))
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->button_id = 0;
+			servp->pop_widget_id[0] = 0;
+			servp->pop_widget_id[1] = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			sll_insert_queue((SLL *)Server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*(int)sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc((size_t)service_size);
+			memcpy(servp->service_ptr, buffer->services, (size_t)service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+		if(strcmp(servp->name, sname))
+		{
+		  strcpy(servp->name,sname);
+		  Force_update = 1;
+		  servp->busy = 3;
+		}
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		else
+		  Force_update = 1;
+		servp->server.n_services = 0;
+		servp->busy = -1;
+	    }
+	}
+}
+
+void show_servers()
+{
+SERVER *servp;
+void update_show_servers();
+void remove_all_buttons();
+void put_label();
+
+	if(!Matrix_id[Curr_matrix])
+		return;
+	remove_all_buttons();
+	
+#ifndef linux	
+	switch_matrix();
+#endif
+	put_label();
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+	  servp->busy = 1;
+	}
+	Force_update = 1;                
+}
+
+void update_show_servers(void *tag, unsigned long *reason)
+{
+DNS_SERVER_INFO *server_ptr;
+DNS_SERVICE_INFO *service_ptr;
+int i, j, found, n_done = 0;
+Widget w, create_button();
+SERVER *servp, *prevp;
+static int old_n_services = 0;
+char node[MAX_NODE_NAME], par[MAX_NODE_NAME], *ptr;
+void remove_button();
+void remove_all_buttons();
+void put_label();
+
+    DISABLE_AST
+	if(tag){}
+	if(reason){}
+    if((N_services != old_n_services) || (Force_update))
+    {
+        if(!Matrix_id[Curr_matrix])
+	{
+	    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+	    ENABLE_AST
+	    return;
+	}
+	if(!N_servers)
+	{
+		remove_all_buttons();
+		if(! No_link_button_id)
+		{
+			No_link_button_id = create_button("DNS is down", 0);
+			set_color(No_link_button_id, XmNbackground, RED);
+		        get_something(No_link_button_id,XmNuserData,&w);
+			set_color(w, XmNbackground, RED);
+			XtSetSensitive(No_link_button_id, False);
+		}
+		while(!sll_empty((SLL *)Server_head))
+		{
+			servp = (SERVER *)sll_remove_head((SLL *)Server_head);
+			if(servp->service_ptr)
+				free(servp->service_ptr);
+			free(servp);
+		}
+		put_label();
+		old_n_services = N_services;
+		Force_update = 0;
+		XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+		ENABLE_AST
+		return;
+	}
+	if(No_link_button_id)
+	{
+		XtDestroyWidget(No_link_button_id);
+		/*
+		XFlush(XtDisplay(No_link_button_id));
+		*/
+		No_link_button_id = 0;
+        }
+	servp = Server_head;
+	prevp = 0;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(prevp)
+		{
+			free(prevp);
+			prevp = 0;
+		}
+		if(n_done == 10)
+		{
+		    if(!Force_update)
+		        put_label();
+		    XtAppAddTimeOut(app_context, 100, update_show_servers, 0);
+		    ENABLE_AST
+		    return;
+		}
+		server_ptr = &servp->server;
+		if(servp->busy == 3)
+		{
+		  remove_button(servp);
+		  servp->busy = 1;
+		}
+		if(servp->busy == 1)
+		{
+			if(!servp->button_id)
+			{
+			switch(Curr_view_opt)
+			{
+				case 1 :
+				  servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+					n_done++;
+					break;
+				case 0 :
+				  strcpy(node, server_ptr->node);
+				  strcpy(par, Curr_view_opt_par);
+				  if(!isdigit(node[0]))
+				  {
+					ptr = strchr(node, '.');
+					if(ptr)
+						*ptr = '\0';
+					ptr = strchr(par,'.');
+					if(ptr)
+						*ptr = '\0';
+				  }
+				  ptr = node;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = (char)tolower((int)ptr[i]);
+				  ptr = par;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = (char)tolower((int)ptr[i]);
+					 if(!strcmp(/*server_ptr->*/node, /*Curr_view_opt_*/par))
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					break;
+				case 2 :
+					found = 0;
+					if(!(service_ptr = servp->service_ptr))
+						break;
+					for(j = 0; j < server_ptr->n_services; j++)
+					{
+						if(strstr(service_ptr->name, Curr_view_opt_par) > (char *)0)
+						{
+							found = 1;
+							break;
+						}
+						service_ptr++;
+					}
+					if (found)
+					  {
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					  }
+					break;
+				case 3 :
+					if(server_ptr->n_services == -1)
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					else
+					{
+						if(servp->button_id)
+							remove_button(servp);
+					}
+					n_done++;
+					break;
+			}
+			}
+			servp->busy = 2;
+			if(servp->button_id)
+			{
+				if(Curr_view_opt != -1)
+				{
+					if (server_ptr->n_services == -1)
+					{
+						set_color(servp->button_id, XmNbackground, RED);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, RED);
+					}
+					else
+					{
+						set_color(servp->button_id, XmNbackground, GREEN);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, GREEN);					 
+					}
+				}
+			}
+		}
+		else if (servp->busy == -1)
+		{
+			remove_button(servp);
+			sll_remove((SLL *)Server_head, (SLL *)servp);
+			if(servp->service_ptr)
+			{
+				free(servp->service_ptr);
+				servp->service_ptr = 0;
+			}
+			prevp = servp;
+			n_done++;
+		}
+	}
+	if(prevp)
+	{
+		free(prevp);
+		prevp = 0;
+	}
+	put_label();
+	old_n_services = N_services;
+	Force_update = 0;
+    }
+    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+    ENABLE_AST
+}
+
+Widget create_button(char *name, SERVER *servp)
+{
+Arg arglist[10];
+int n;
+/*
+int n_services = -1;
+*/
+Widget w, ww, w_id;
+void activate_services(), activate_clients();
+char w_name[MAX_NAME];
+	
+	w_name[0] = 0;
+/*
+	if(servp)
+		n_services = servp->server.n_services;
+*/
+    strcpy(w_name,name);
+	if(strlen(w_name) >= MAX_TASK_NAME - 4)
+	  w_name[16] = '\0';
+	n = 0;
+    XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+    XtSetArg(arglist[n], XmNentryAlignment, XmALIGNMENT_CENTER);  n++;
+	w_id = w = XmCreateMenuBar(Matrix_id[Curr_matrix],
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+/*				
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	XtManageChild(w);
+	strcat(w_name,"1"); 
+	n = 0;
+    XtSetArg(arglist[n], XmNalignment, XmALIGNMENT_CENTER);  n++;
+	XtSetArg(arglist[n], XmNfontList, did_server_font);  n++;
+	w = XmCreateCascadeButton(w,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+	set_something(w,XmNlabelString,name);
+	set_something(w,XmNalignment,XmALIGNMENT_CENTER);
+/*
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	set_something(w_id,XmNuserData,w);
+	strcat(w_name,"1"); 
+		n = 0;
+		ww = XmCreatePulldownMenu(w_id,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+		set_something(w,XmNsubMenuId,ww);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+
+		set_something(w,XmNlabelString,"Services");
+	if(servp)
+	{
+		XtAddCallback(w,XmNactivateCallback, activate_services, servp);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+
+		set_something(w,XmNlabelString,"Clients");
+		XtAddCallback(w,XmNactivateCallback, activate_clients, servp);
+		XtManageChild(w);
+		/*
+		servp->popping = 0;
+		create_client_popup(servp);
+		*/
+	}
+	return(w_id);
+}
+
+void remove_all_buttons()
+{
+SERVER *servp;
+
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(servp->button_id)
+		{
+			XtDestroyWidget(servp->button_id);
+			servp->button_id = 0;
+			servp->busy = 0;
+		}
+	}
+}
+
+void remove_button(SERVER *servp)
+{
+
+	if(servp->button_id)
+	{
+		XtDestroyWidget(servp->button_id);
+		servp->button_id = 0;
+		servp->busy = 0;
+	}
+}
+
+void activate_services(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[MAX_NAME];
+Widget id,sel_id;
+void got_service_list();
+void kick_it();
+
+	if(w){}
+	if(reason){}
+	if(servp->pop_widget_id[0])
+	{
+		XtDestroyWidget(servp->pop_widget_id[0]);
+		servp->pop_widget_id[0] = 0;
+		/*
+		return;
+		*/
+	}
+	Curr_servp = servp;
+	ptr = &servp->server;
+
+	sel_id = put_popup(servp, 0,"Service Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_OK_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	if (ptr->pid > 0x1000000)
+		sprintf(str,"Server %s (pid = %X) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	else
+		sprintf(str,"Server %s (pid = %d) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	Curr_service_list_id = id;
+
+	XmListAddItem(id,create_str(
+          "Ordering services alphabeticaly, please be patient..."),1);
+
+	set_something(id,XmNlistItemCount,1);
+	set_something(id,XmNlistVisibleItemCount,1);
+	
+	sprintf(str,"%s/SERVICE_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+			 got_service_list,(long)servp,"None",5);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it, 0);
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it()
+{
+  printf("kick_it\n");
+}
+
+typedef char DID_SLOT[MAX_NAME];
+
+void got_service_list(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_got_service_list();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_service_list)
+	  free(Curr_service_list);
+	Curr_service_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_service_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Service_List = servp;
+	/*
+#else
+	do_got_service_list(servp);
+#endif
+	*/
+}
+
+void do_got_service_list(SERVER *servp)
+{
+char cmd_str[256], svc_str[256];
+DNS_SERVER_INFO *ptr;
+DNS_SERVICE_INFO *service_ptr;
+Widget id;
+char *curr_str, max_str[MAX_NAME], *sptr;
+DID_SLOT *service_list;
+int i, j, curr_index = 0, n_services;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	id = Curr_service_list_id;
+	
+	XmListDeleteAllItems(id);
+	
+	strcpy(cmd_str,"CMD: ");
+	strcpy(svc_str,"SVC: ");
+
+	service_ptr = servp->service_ptr;
+	service_list = (DID_SLOT *)malloc((size_t)(ptr->n_services * MAX_NAME));
+	n_services = ptr->n_services;
+
+	for(i=0;i<n_services; i++)
+	{
+	  strcpy(service_list[i],service_ptr->name);
+	  service_ptr++;
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_services; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_services; j++)
+	  {
+	    sptr = service_list[j];
+	    if(!*sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  service_list[curr_index][0] = '\0';
+	  service_ptr = &(servp->service_ptr[curr_index]);
+	  if(service_ptr->type)
+	  {
+	    strcpy(&cmd_str[5],service_ptr->name);
+	    xstr = create_str(cmd_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	  else
+	  {
+	    strcpy(&svc_str[5],service_ptr->name);
+	    xstr = create_str(svc_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	}
+	free(service_list);
+	
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 20) ? i : 20);
+}
+
+void show_clients(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_show_clients();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_client_list)
+	  free(Curr_client_list);
+	Curr_client_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_client_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Client_List = servp;
+	/*
+#else
+	do_show_clients(servp);
+#endif
+	*/
+}
+
+void do_show_clients(SERVER *servp)
+{
+int i = 0;
+char str[2048], *strp, *strp1;
+XmString xstr;
+void delete_str();
+
+/*
+DNS_SERVER_INFO *ptr;
+	ptr = &servp->server;
+	sel_id = servp->pop_widget_id[1];
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+*/
+	if(servp){}
+	if(Curr_client_list[0] == -1) 
+	{
+		sprintf(str,"Information not available\n");
+		XmListAddItem(Curr_client_id,create_str(str),i+1);
+		/*
+		set_something(sel_id,XmNlistLabelString,str);
+		*/
+		return;
+	}
+	/*
+	sprintf(str,"Clients of %s are :                                  \n",
+	ptr->task);
+	set_something(sel_id,XmNlistLabelString,str);
+	
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	*/
+	strp1 = Curr_client_list;
+	while(strp1) 
+	{
+		if(!*strp1)
+			break;
+		sprintf(str,"Process ");
+		strp = strp1;
+		strp1 = strchr(strp,'@');
+		*strp1 = '\0';
+		strp1++;
+		strcat(str,strp);
+		strcat(str," on node ");
+		strp = strp1;
+		if( (strp1 = strchr(strp,'|')) )
+		{
+			*strp1 = '\0';
+			strp1++;
+		}
+		strcat(str,strp);	
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+       		i++;
+	}
+	if(!i)
+	{
+		sprintf(str,"NONE");
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+	}
+	/*
+	set_something(id,XmNlistItemCount,i);
+	*/
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+
+void activate_clients(Widget w, SERVER *servp, unsigned long *reason)
+{
+/*
+DNS_SERVER_INFO *ptr;
+*/
+char str[100];
+void show_clients();
+void kick_it_again();
+Widget id,sel_id;
+
+	if(w) {}
+	if(reason){}
+	Curr_servp = servp;
+/*
+	ptr = &servp->server;
+*/
+	if(servp->pop_widget_id[1])
+	  {
+		XtDestroyWidget(servp->pop_widget_id[1]);
+		servp->pop_widget_id[1] = 0;
+	  }
+	sel_id = put_popup(servp,1,"Client Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_CANCEL_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_SELECTION_LABEL);
+	XtUnmanageChild(id);
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+
+	Curr_client_id = id;
+	sprintf(str,"Clients of %s are :                                   \n",
+		servp->name);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	sprintf(str,"%s/CLIENT_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,10,0,0,
+			 show_clients,(long)servp,&no_link,1);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it_again, 0); 
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it_again()
+{
+  printf("kick_it_again\n");
+}
+
+Widget put_popup(SERVER *servp, int type, char *title)
+{
+    Widget id;
+    void activate_services(), activate_clients();
+	extern void set_title();
+
+		if(type)
+		{
+		    id = create_client_dialog();
+		    /*
+		    XtAddCallback(id,XmNokCallback, activate_clients, servp);
+		    XtAddCallback(id,XmNcancelCallback, activate_clients, servp);
+		    */
+		}
+		else
+		{
+		    id = create_server_dialog();
+		    /*
+		    XtAddCallback(id,XmNcancelCallback, activate_services, servp);
+		    */
+		}
+		servp->pop_widget_id[type] = id;
+		/*
+	}
+		*/
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+Widget put_selection(int tag, char *title)
+{
+    Widget id = 0;
+	extern void set_title();
+
+    if(pop_widget_id[tag])
+    {
+		XtDestroyWidget(pop_widget_id[tag]);
+    }
+	  switch(tag)
+	  {
+	    case DID_SEL_NODE:
+	      id = create_node_selection();
+	      break;
+	    case DID_SEL_SERVICE:
+	      id = create_service_selection();
+	      break;
+	    case DID_KILL_ALL:
+	      id = create_kill_confirmation();
+	      break;
+	    case DID_SERVICE:
+	      id = create_service_dialog();
+	      break;
+	    case DID_COMMAND:
+	      id = create_send_command();
+	      break;
+	  }
+	  
+	   pop_widget_id[tag] = id;
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+void check_put_label(int tag)
+{
+	static int old_n_services = 0;
+/*
+	static int changing = 0;
+*/
+	void put_label();
+
+	if(tag){}
+	if(N_services != old_n_services)
+	{
+		put_label();
+/*
+		if(N_services > old_n_services)
+		  changing = 1;
+*/
+		old_n_services = N_services;
+	
+#ifdef linux
+		show_servers();
+#endif
+	}
+/*
+	else
+	{
+	  if(changing)
+	  {
+	    show_servers();
+	    changing = 0;
+	  }
+	}
+*/
+}
+
+void put_label()
+{
+	char str[MAX_NAME], str1[MAX_NAME];
+			
+	DISABLE_AST
+	sprintf(str,"%d Servers known - %d Services Available\n",
+		N_servers,N_services);
+	switch(Curr_view_opt)
+	{
+		case 1 :
+			strcat(str,"Displaying ALL Servers");
+			break;
+		case 0 :
+			sprintf(str1,"Displaying Servers on node %s",Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 2 :
+			sprintf(str1,"Displaying Servers providing Service *%s*",
+				Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 3 :
+			strcat(str,"Displaying Servers in ERROR");
+			break;
+		case -1 :
+			strcat(str,"Please Select Viewing Option");
+			break;
+	}
+	set_something(Label_id,XmNlabelString,str);
+	XFlush(XtDisplay(Label_id));
+	ENABLE_AST
+}
+
+Widget create_client_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("Dismiss","","","","",DID_CLIENTS, 3);
+  return(id);
+  
+}
+
+Widget create_server_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("","View / Send","Dismiss","",
+			       "Service / Command :",
+			       DID_SERVICES, 20);
+  return(id);
+}
+
+Widget create_node_selection()
+{
+  Widget id;
+  id = create_selection_dialog("","","","Nodes :","Selected Node :",DID_SEL_NODE, 8);
+  return(id);
+  
+}
+
+Widget create_service_selection()
+{
+  Widget id;
+  /*
+  id = create_prompt_dialog("Enter Service Name :",DID_SEL_SERVICE);
+  */
+  id = create_selection_dialog("","","","","Enter Service Name (or search string):",DID_SEL_SERVICE, 0);
+  return(id);
+  
+}
+
+Widget create_send_command()
+{
+  Widget id;
+  char str[256], str1[256];
+
+  sprintf(str,"Command to %s (%s)\n\n",
+	  Curr_service_name, Curr_service_format);
+
+  id = create_selection_dialog("","","",str,"Command:",DID_COMMAND, 1);
+
+  strcpy(str1,"Please enter items separated by spaces:\n(for example: 2 0x123 'A' 23.4 \"a text\")");
+
+  set_something(id,XmNselectionLabelString,str1);
+
+  return(id);
+  
+}
+
+Widget create_kill_confirmation()
+{
+  Widget id;
+  id = create_question_dialog("Do you really want to kill ALL DIM servers ?",
+			      DID_KILL_ALL);
+  return(id);
+  
+}
+
+Widget create_selection_dialog(char *ok, char *apply, char *cancel, char *list, char *sel, 
+							   long tag, int items)
+{
+Widget sd;
+XmString xmOk, xmApply, xmCancel, xmList, xmSelection;
+Arg ar[20];
+int n;
+        
+    xmList = create_str(list);
+    xmOk = create_str(ok);
+    xmApply = create_str(apply);
+    xmCancel = create_str (cancel);
+    xmSelection = create_str (sel);
+
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"Selection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNlistLabelString, xmList); n++;
+    XtSetArg(ar[n],XmNlistVisibleItemCount,items); n++;
+    if(ok[0])
+      {
+      XtSetArg(ar[n],XmNokLabelString, xmOk); n++;
+      }
+    if(apply[0])
+      {
+      XtSetArg(ar[n],XmNapplyLabelString, xmApply); n++; 
+      }
+    if(cancel[0])
+      {
+      XtSetArg(ar[n],XmNcancelLabelString, xmCancel); n++;
+      }
+    if(sel[0])
+      {
+      XtSetArg(ar[n],XmNselectionLabelString, xmSelection); n++;
+      }
+    sd = XmCreateSelectionDialog ( toplevel_widget, "Selection", ar, (Cardinal)n );
+    XmStringFree(xmList);
+    XmStringFree(xmOk);
+    XmStringFree(xmApply);
+    XmStringFree(xmCancel);
+    XmStringFree(xmSelection);
+    if(tag >= 0)
+      {
+	  XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNapplyCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+      }
+    return(sd);
+}
+
+Widget create_file_selection_dialog(long type)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str ("");
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"FileSelection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNwidth, 500); n++;
+    XtSetArg(ar[n],XmNdirMask, xm1); n++;
+    sd = XmCreateFileSelectionDialog ( toplevel_widget, "FileSelection", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)type );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)type );
+
+	return(sd);
+}
+
+Widget create_prompt_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNselectionLabelString, xm1); n++;
+    sd = XmCreatePromptDialog ( toplevel_widget, "Prompt", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_question_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNmessageString, xm1); n++;
+    sd = XmCreateQuestionDialog ( toplevel_widget, "Question", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_service_dialog()
+{
+Widget fd, rc, sw, lb, rc1;
+XmString xm1;
+Arg ar[20];
+int n, par;
+unsigned long reason;
+        
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_ANY); n++;
+    fd = XmCreateFormDialog ( toplevel_widget, "Form", ar, (Cardinal)n );
+    XtManageChild(fd);
+
+    /* create rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNbottomOffset, 0); n++;
+    XtSetArg(ar[n],XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNrightOffset, 0); n++;
+    XtSetArg(ar[n],XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNtopOffset, 0); n++;
+    XtSetArg(ar[n],XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNleftOffset, 0); n++;
+    rc = XmCreateRowColumn ( fd, "rowcol", ar, (Cardinal)n );
+    XtManageChild(rc);
+
+    /* create scrolled window */
+    n = 0;	    
+    XtSetArg ( ar[n], XmNwidth, 770); n++;
+    XtSetArg ( ar[n], XmNheight, 350); n++;
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sw = XmCreateScrolledWindow ( rc, "ScrollWin", ar, (Cardinal)n );
+    XtManageChild ( sw );
+
+    /* create label */
+    n = 0; 
+    xm1 = create_str(" ");
+    XtSetArg(ar[n],XmNfontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_BEGINNING); n++;
+    lb = XmCreateLabel ( sw, "label", ar, (Cardinal)n );
+    XtManageChild(lb);
+    XmStringFree(xm1);
+    par = 1;
+    reason = 0;
+    create_label(lb, &par, &reason);
+
+    /* create button rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 0); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNorientation, XmVERTICAL); n++;
+    XtSetArg(ar[n],XmNnumColumns, 3); n++;
+    XtSetArg(ar[n],XmNpacking, XmPACK_COLUMN); n++;
+    rc1 = XmCreateRowColumn ( rc, "buttons", ar, (Cardinal)n );
+    XtManageChild(rc1);
+    /*    
+    create_push_button(rc1,"View Standard",MAX_POP_UPS+1); 
+    create_push_button(rc1,"View Float",MAX_POP_UPS+2); 
+    create_push_button(rc1,"View Double",MAX_POP_UPS+3); 
+    */
+    SubscribeButton = create_push_button(rc1,"            Subscribe (On Change)            ",
+		       MAX_POP_UPS+5); 
+  Subscribe10Button = create_push_button(rc1,"      Subscribe (Update Rate 10 seconds)     ",
+		       MAX_POP_UPS+4); 
+    create_push_button(rc1,"Dismiss",DID_SERVICE);
+    Curr_service_print_type = 0;
+
+    return(fd);
+}
+
+Widget create_push_button(Widget parent, char *str, long tag)
+{
+Widget b;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    n = 0; 
+    xm1 = create_str(str);
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNfontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    b = XmCreatePushButton ( parent, "button", ar, (Cardinal)n );
+ 
+    XtManageChild(b);
+    XmStringFree(xm1);
+
+    XtAddCallback ( b, XmNactivateCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag ); 
+    return(b);
+}
+
Index: branches/FACT++_part_filenames/dim/src/did/did.h
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/did.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/did.h	(revision 18732)
@@ -0,0 +1,95 @@
+#include <Mrm/MrmAppl.h>                /* Motif Toolkit and MRM */
+#include <Xm/Xm.h>
+#include <Xm/RowColumn.h>
+#include <Xm/MainW.h>
+#include <Xm/Form.h>
+#include <Xm/Label.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/Separator.h>
+#include <Xm/CascadeB.h>
+#include <Xm/PushB.h>
+#include <Xm/SelectioB.h>
+#include <Xm/FileSB.h>
+#include <Xm/MessageB.h>
+#include <Xm/Text.h>
+#include <Xm/List.h>
+#include <dui_colors.h>
+/* VUIT routines for the user to call */
+void s_error();
+/*
+#define LABEL_FONT "-*-NEW CENTURY SCHOOLBOOK-BOLD-R-*--*-140-*-*-*-*-ISO8859-1"
+#define DEFAULT_FONT "-*-TIMES-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+
+#define MENU_FONT "-*-TIMES-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+*/
+#define LABEL_FONT "-*-HELVETICA-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+
+#define DEFAULT_FONT "-*-HELVETICA-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+#define MENU_FONT "-*-COURIER-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+#define SERVER_FONT "-*-TIMES-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+typedef enum { DID_SERVICES, DID_CLIENTS, DID_SEL_NODE, DID_SEL_SERVICE, 
+    DID_KILL_ALL, DID_SERVICE, DID_COMMAND, MAX_POP_UPS } POPUPS; 
+
+/* Motif Global variables */
+Display         *display;			/* Display variable */
+XtAppContext    app_context;		/* application context */
+Widget			toplevel_widget;	/* Root widget ID of application */
+MrmHierarchy	s_MrmHierarchy;		/* MRM database hierarchy ID */
+
+typedef struct item{
+    struct item *next;
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO *service_ptr;
+        char name[132];
+	Widget button_id;
+	Widget pop_widget_id[2];
+  /*
+	int popping;
+  */
+	int busy;
+}SERVER;
+
+SERVER *Server_head = (SERVER *)0;
+
+Widget Matrix_id[2] = {0, 0};
+int Curr_matrix;
+Widget Label_id = 0;
+Widget Content_label_id = 0;
+Widget Window_id = 0;
+Widget pop_widget_id[MAX_POP_UPS] = {0,0,0,0,0,0,0};
+Widget No_link_button_id;
+
+XmString create_str();
+XmFontList util_get_font();
+
+Widget create_selection_dialog();
+Widget create_file_selection_dialog();
+Widget create_prompt_dialog();
+Widget create_question_dialog();
+Widget create_service_dialog();
+Widget create_server_dialog();
+Widget create_client_dialog();
+Widget create_node_selection();
+Widget create_service_selection();
+Widget create_kill_confirmation();
+Widget create_send_command();
+Widget create_push_button();
+Widget put_popup();
+Widget put_selection();
+
+Widget gui_toplevel();
+Widget gui_initialize();
+void gui_create_main_menu();
+void gui_create_main_window();
+
+
+
+
+
+
+
+
+
Index: branches/FACT++_part_filenames/dim/src/did/didMarkus.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/didMarkus.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/didMarkus.c	(revision 18732)
@@ -0,0 +1,3468 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+#include "did.h"
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;	
+int N_servers = 0;	
+int N_services = 0;	
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Service_buffer;
+int Service_size;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+Widget Curr_client_id;
+Widget Curr_service_list_id;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+Widget SubscribeButton;
+Widget Subscribe10Button;
+
+int Timer_q;
+
+int Force_update = 0;
+/*
+ * Global data
+ */
+static XmFontList did_default_font, did_small_font, 
+  did_label_font, did_server_font;
+
+/*static MrmType class_id;*/		/* Place to keep class ID*/
+/*static MrmType *dummy_class;*/            /* and class variable. */
+
+/*static char *db_filename_vec[1];*/        /* Mrm.hierachy file list. */
+/*static int db_filename_num;*/
+
+/*
+ * Forward declarations
+ */
+void did_exit();
+void create_main();
+void create_label();
+void create_matrix();
+void view_opts();
+void dns_control();
+void ok_pop_up();                                                            
+void cancel_pop_up();
+
+extern void set_something();
+extern void get_something();
+extern void set_color();
+
+/*
+ * Names and addresses of callback routines to register with Mrm
+ */
+/*
+static MrmRegisterArg reglist [] = {
+{"did_exit", (caddr_t)did_exit},
+{"create_main", (caddr_t)create_main},
+{"create_label", (caddr_t)create_label},
+{"create_matrix", (caddr_t)create_matrix},
+{"view_opts", (caddr_t)view_opts},
+{"dns_control", (caddr_t)dns_control},
+{"ok_pop_up", (caddr_t)ok_pop_up},
+{"cancel_pop_up", (caddr_t)cancel_pop_up},
+};
+
+static int reglist_num = (sizeof reglist / sizeof reglist[0]);
+*/
+/*
+ * OS transfer point.  The main routine does all the one-time setup and
+ * then calls XtAppMainLoop.
+ */
+
+SERVER *Curr_servp;
+
+XmFontList util_get_font( char *fontname, Widget top )
+{
+XFontStruct * mf;
+XmFontList font;
+/*
+char * fontname;
+
+  if ( size == 'm' ) {
+    fontname = MENU_FONT;
+  }
+  else if ( size == 'b' ) {
+    fontname = LABEL_FONT;
+  }
+  else {
+    fontname = DEFAULT_FONT;
+  }
+*/
+  if ( (mf = XLoadQueryFont(XtDisplay(top),fontname))==NULL) {
+        printf("Couldn't open the following fonts:\n\t%s\n",
+	    fontname);
+        XtVaGetValues ( top, XmNdefaultFontList, &font, NULL );
+  }
+  else  {
+     font = XmFontListCreate (mf, XmSTRING_DEFAULT_CHARSET);
+  }
+  return font;
+}
+
+void create_matrix_widget()
+{
+Widget row_col_id, top_id;
+Arg arglist[10];
+int n = 0;
+char w_name[MAX_NAME];
+
+	top_id = Window_id;
+	XtSetArg(arglist[n], XmNborderWidth, 0); n++;
+	XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+        XtSetArg(arglist[n], XmNnumColumns, 4);  n++;
+	XtSetArg(arglist[n], XmNpacking, XmPACK_COLUMN);  n++;
+        XtSetArg(arglist[n], XmNadjustLast, False); n++;
+	sprintf(w_name,"matrix_row");
+	row_col_id = XmCreateRowColumn(top_id,w_name,arglist,n);
+	XtManageChild(row_col_id);
+	Matrix_id[Curr_matrix] = row_col_id;
+	/*
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id); 
+	*/
+}
+
+void gui_create_main_window(Widget parent)
+{
+
+Widget mw;
+Widget mb;
+Widget mf;
+Widget tl;
+Widget sl;
+Widget f;
+XmString xms;
+int par;
+int reason;
+Arg ar[20];
+int n;
+
+    mw = XmCreateMainWindow ( parent, "DidMainWindow", NULL, 0 );
+    XtVaSetValues( mw,
+        XmNresizePolicy, XmRESIZE_ANY,
+		  
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( mw );
+    /* create menu bar */
+    mb = XmCreateMenuBar ( mw, "DidMenuBar", NULL, 0 );
+    XtVaSetValues( mb,
+        XmNmarginHeight,2,
+        XmNborderWidth, 0,
+        XmNfontList,            did_default_font,
+        NULL);
+        
+    gui_create_main_menu( mb );
+    XtManageChild ( mb );
+
+    /* create main form */
+    mf = XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf, 
+		    XmNresizePolicy, XmRESIZE_NONE, 
+		    		   
+		    NULL );
+    XtManageChild ( mf );
+
+    /* create top label */
+    xms = create_str(" \n  ");
+    
+    tl = XmCreateLabel ( mf, "DidTitle", NULL, 0 );
+    XtVaSetValues( tl,
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_NONE,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNleftOffset,              0,
+        XmNtopOffset,               0,
+        XmNbottomOffset,            0,
+        XmNrightOffset,             0,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+		XmNheight,					32,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            did_label_font,
+        NULL);
+    XtManageChild( tl );
+/*
+    tl = XtVaCreateManagedWidget( "SmiTitle",
+        xmPushButtonWidgetClass,    mw,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            smid_label_font,
+        NULL);
+*/
+    XmStringFree ( xms );
+    /*
+	XtAddCallback(tl, MrmNcreateCallback, 
+		(XtCallbackProc)create_label, 0);
+    */
+    par = 0;
+    reason = 0;
+    create_label(tl, &par, &reason);
+
+    /* create main form */
+    /*
+    mf = (Widget)XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf,
+        XmNborderWidth,1,
+        XmNshadowThickness, 2,
+		    XmNwidth,806,
+		    XmNheight,300, 
+		    
+       XmNresizePolicy, XmRESIZE_NONE, NULL );
+    XtManageChild ( mf );
+    */
+    /*
+	XtAddCallback(mf, MrmNcreateCallback, 
+			(XtCallbackProc)create_main, 0);
+    */
+    
+    create_main(mf, &par, &reason);
+    
+    f = XmCreateForm( mf, "ScrollForm", NULL, 0 );
+    XtVaSetValues ( f, 
+		    XmNwidth, 806,
+		    XmNheight,300,		    		  
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+		    /*
+        XmNshadowType, XmSHADOW_OUT,
+		    */
+        XmNborderWidth,0,
+        NULL);
+
+    /*
+    f = XtVaCreateManagedWidget ( "XDScrolledForm",
+        xmFormWidgetClass,          mf,
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+        XmNshadowType, XmSHADOW_OUT,
+        XmNborderWidth,1,
+        NULL);
+*/
+    /*
+	XtAddCallback(f, MrmNcreateCallback, 
+		(XtCallbackProc)create_window, 0);
+    */
+
+    XtManageChild ( f );
+    /* create scrolled list */
+    
+    n = 0;
+    XtSetArg ( ar[n], XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightOffset, 0); n++;
+    XtSetArg ( ar[n], XmNleftOffset, 0); n++;
+    XtSetArg ( ar[n], XmNbottomOffset, 0); n++;
+    XtSetArg ( ar[n], XmNtopOffset, 0); n++;
+    /*
+    XtSetArg ( ar[n], XmNvisualPolicy, XmCONSTANT); n++;
+    */	    
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+		   
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sl = XmCreateScrolledWindow ( f, "ScrollWin", ar, n );
+    /*
+    XtVaSetValues ( sl, 
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+	XmNtopOffset,               0,
+		    		   
+        XmNvisualPolicy,        XmCONSTANT,
+		    
+	XmNscrollBarDisplayPolicy, XmSTATIC,
+		   
+        XmNscrollingPolicy, XmAUTOMATIC,
+
+        NULL);
+    */
+    XtManageChild ( sl );
+    /*
+    create_window(sl, &par, &reason);
+    */
+    Window_id = sl;
+    
+    create_matrix_widget();
+    
+/* 
+    sl = XtVaCreateWidget ( "DidServersScrl",
+        xmScrolledWindowWidgetClass, f,
+        XmNscrollingPolicy,     XmAUTOMATIC,
+        XmNscrollBarDisplayPolicy, XmSTATIC,
+        XmNtopAttachment,       XmATTACH_FORM,
+        XmNleftAttachment,      XmATTACH_FORM,
+        XmNrightAttachment,     XmATTACH_FORM,
+        XmNbottomAttachment,    XmATTACH_FORM,
+        XmNvisualPolicy,        XmCONSTANT,
+        XmNtopOffset,           4,
+        XmNleftOffset,          4,
+        XmNbottomOffset,        4,
+        XmNrightOffset,         4,
+        NULL );
+    XtManageChild ( sl );
+*/
+    /*
+    XtVaSetValues( mw,
+        XmNworkWindow,mf,
+        XmNcommandWindow, tl,
+        NULL);
+    */
+    
+}
+
+Widget create_separator(Widget parent_id)
+{
+	Widget w;
+	Arg arglist[10];
+	int n = 0;
+
+	w = XmCreateSeparator(parent_id, "separator",
+		arglist,n);
+	XtManageChild(w);
+	return(w);
+}
+
+void gui_create_main_menu( Widget mb )
+{
+Widget cb;
+Widget mn;
+Widget bt;
+XmString xms;
+    /* File */
+    mn = XmCreatePulldownMenu ( mb, "FileMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "File", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "File",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "F", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        XtVaSetValues ( cb,
+	    XmNfontList,            did_default_font,
+            NULL);
+        /* buttons */
+        xms = create_str ("Exit DID");
+	/*
+        bt = XtVaCreateManagedWidget ( "MenuExitButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>C",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)did_exit, 0 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* View */
+    mn = XmCreatePulldownMenu ( mb, "ViewMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "View", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "View",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "V", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        /* buttons */
+
+        xms = create_str ("All Servers");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuAllButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>A",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)1 );
+
+        xms = create_str ("Servers by Node");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuNodeButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>N",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)0 );
+
+        xms = create_str ("Servers by Service");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuServiceButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>S",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Servers in Error");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuErrorButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>E",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)3 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Commands */
+    mn = XmCreatePulldownMenu ( mb, "CommandMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "Commands", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "Commands",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "C", 2,
+        XmNsubMenuId,       mn,
+        XmNsensitive, commands_enable,
+        NULL);
+    */
+        /* buttons */
+        /* Utils */
+    /*
+        xms = util_create_str ("Show Command Buttons");
+        xma = util_create_str ("Ctrl+B");
+        bt = XtVaCreateManagedWidget ( "C_ShowCmndButt",
+            xmToggleButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>B",
+            XmNacceleratorText, xma,
+            XmNset, False,
+            XmNindicatorSize,12,
+            XmNvisibleWhenOff, True,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNvalueChangedCallback, (XtCallbackProc)show_command_buttons_callback, NULL );
+
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+    */
+        
+        xms = create_str ("LOG Connections");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonLOG",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>G",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "log" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)0 );
+
+        create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Set Debug ON");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDON",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F2:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "on" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)1 );
+
+        xms = create_str ("Set Debug OFF");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDOFF",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F3:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "off" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Print Hash Table");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonPrint",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>T",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "hash" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)4 );
+	/* kill
+	create_separator(mn);
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+	/* kill
+        xms = create_str ("Kill DIM Servers");
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonKill",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>K",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "kill" );
+	*/
+	/* kill
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)3 );
+	*/
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Help */
+    mn = XmCreatePulldownMenu ( mb, "HelpMB", NULL, 0 );
+    /*
+    cb = XtVaCreateManagedWidget ( "Help",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "H", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+    cb = XmCreateCascadeButton ( mb, "Help", NULL, 0 );
+    XtVaSetValues( cb,
+	XmNsubMenuId,       mn,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( cb );
+
+        xms = create_str ("Help");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_XDAbout",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>H",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+	/*
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)about_xd_callback, NULL );
+	*/
+    /* set help menu */
+    XtVaSetValues ( mb, XmNmenuHelpWidget, cb, NULL );
+    /*
+    util_recolor ( XtParent(mn) );
+    */
+}
+
+
+Widget gui_toplevel(char **argv)
+{
+int n;
+Arg arglist[6];
+
+    n = 0;
+    XtSetArg ( arglist[n], XmNallowShellResize, True); n++;
+    XtSetArg ( arglist[n], XmNiconName, "DID"); n++;
+    XtSetArg ( arglist[n], XmNtitle, "xDid");  n++;
+    XtSetArg ( arglist[n], XmNtraversalOn,True); n++;
+    return XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass,
+                            display, arglist, n);
+     
+}
+
+Widget gui_initialize (int argc, char **argv)
+{
+Widget toplevel;
+void gui_create_main_window();
+
+    XtToolkitInitialize();
+    app_context = XtCreateApplicationContext();
+    display = XtOpenDisplay(app_context, NULL, argv[0], "DID",
+                            NULL, 0, &argc, argv);
+    if (display == NULL) 
+	{
+        printf("%s:  Can't open display\n", argv[0]);
+        exit(1);
+	}
+    toplevel = gui_toplevel(argv);
+   
+    did_default_font = (XmFontList)util_get_font(DEFAULT_FONT, toplevel);
+    did_small_font = (XmFontList)util_get_font(MENU_FONT, toplevel);
+    did_label_font = (XmFontList)util_get_font(LABEL_FONT, toplevel);
+    did_server_font = (XmFontList)util_get_font(SERVER_FONT, toplevel);
+
+    gui_create_main_window(toplevel);
+
+    XtRealizeWidget ( toplevel );
+    return toplevel;
+}
+
+int main(int argc, char *argv[])
+{
+    int i;
+	char opt_str[20], *ptr;
+	XtInputMask mask;
+	void do_got_service_list();
+	void do_show_clients();
+	void app_initialize();
+       
+	dim_no_threads();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	if(argc > 1)
+	{
+		if(argv[1][0] == '-')
+		{
+			sprintf(opt_str,"%s",&argv[1][1]);
+			if((!strncmp(opt_str,"node",4)) || 
+			   (!strncmp(opt_str,"NODE",4)))
+				Curr_view_opt = 0;
+			else if((!strncmp(opt_str,"all",3)) || 
+				(!strncmp(opt_str,"ALL",3)))
+				Curr_view_opt = 1;
+			else if((!strncmp(opt_str,"service",7)) || 
+					(!strncmp(opt_str,"SERVICE",7)))
+				Curr_view_opt = 2;
+			else if((!strncmp(opt_str,"error",5)) ||
+					(!strncmp(opt_str,"ERROR",5)))
+				Curr_view_opt = 3;
+			else if((!strncmp(opt_str,"help",4)) || 
+				(!strncmp(opt_str,"HELP",4)))
+			  {
+    printf("Did - DIM Information Display\n");
+    printf("\t-all             Show ALL Servers\n");
+    printf("\t-service=<str>   Show Servers providing Service <str>\n");
+    printf("\t-node=<nodename> Show Servers on Node <nodename>\n");
+    printf("\t-error           Show Servers in Error\n");
+    printf("\t-help            Show this message\n\n");
+    exit(0);
+			  }
+			else
+				Curr_view_opt = -1;
+			if((Curr_view_opt == 0) || (Curr_view_opt == 2))
+			{
+  				if(!(ptr = strchr(argv[1],'=')))
+				{
+					if( (ptr = strchr(argv[2],'=')) )
+					{
+						ptr++;
+						if(!(*ptr))
+							ptr = argv[3];
+					}
+					else
+						ptr++;
+				}
+				else
+				{			
+					ptr++;
+					if(!(*ptr))
+						ptr = argv[2];
+				}
+				for(i = 0;*ptr; ptr++, i++)
+					Curr_view_opt_par[i] = toupper(*ptr);
+				Curr_view_opt_par[i] = '\0';
+			}
+		}
+	}
+
+    toplevel_widget = (Widget)gui_initialize(argc, argv);
+    app_initialize();
+    /* 
+     * Sit around forever waiting to process X-events.  We never leave
+     * XtAppMainLoop. From here on, we only execute our callback routines. 
+     */
+
+    while(1)
+    {
+		{
+			DISABLE_AST
+			mask = XtAppPending(app_context);	
+			ENABLE_AST
+		}
+		if(mask)
+		{
+			DISABLE_AST
+			XtAppProcessEvent(app_context, mask);
+			if(Got_Service_List)
+			{
+				do_got_service_list(Got_Service_List);
+				Got_Service_List = 0;
+			}
+			if(Got_Client_List)
+			{
+				do_show_clients(Got_Client_List);
+				Got_Client_List = 0;
+			}
+			ENABLE_AST
+		}		
+		else
+		{
+			dim_usleep(100000);
+			/*
+			usleep(100000);	
+			*/
+		}
+    }
+
+}
+
+static char no_link = -1;
+
+void app_initialize(int tag)
+{
+void check_put_label();
+
+void update_servers();
+void update_servers_new();
+void update_show_servers();
+extern void get_all_colors();
+extern void set_title();
+extern void set_icon_title();
+
+        char text[128];
+        int len;
+	if(tag){}
+	sprintf(text,"DID - DIM Information Display on ");
+	len = strlen(text);
+        dim_get_dns_node(text+len);
+	len = strlen(text);
+	sprintf(text+len,":%d",dim_get_dns_port());
+	get_all_colors(display,Matrix_id[Curr_matrix]);
+	set_title(toplevel_widget,text);
+	set_icon_title(toplevel_widget,"DID");
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	/*
+      	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED,0,0,0,
+			 update_servers_new,0, &no_link,1);
+	*/
+	/*	
+	dtq_add_entry(Timer_q, 2, check_put_label, 0);
+	*/
+	XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+}
+
+/*
+ * All errors are fatal.
+ */
+void s_error(char *problem_string)
+{
+    printf("%s\n", problem_string);
+    exit(0);
+}
+
+void did_exit(Widget w, int *tag, unsigned long *reason)
+{
+	if(w){}
+	if(tag){}
+	if(reason){}
+	exit(0);
+}
+
+extern Pixel rgb_colors[MAX_COLORS];
+
+void create_main (Widget w, int *tag, unsigned long *reason)
+{
+	if(tag){}
+	if(reason){}
+	Window_id = w;
+/*
+	dtq_start_timer(5, app_initialize, 0);
+*/
+}
+
+void view_opts(Widget w, int tag, unsigned long *reason)
+{
+	void get_server_node(), get_server_service(), show_servers();
+
+	if(w){}
+	if(reason){}
+	Curr_view_opt = tag;
+	switch(tag)
+	{
+		case 0 :
+			get_server_node();
+			break;
+		case 1 :
+			show_servers();
+			break;
+		case 2 :
+			get_server_service();
+			break;
+		case 3 :
+			show_servers();
+			break;
+	}
+}
+
+void dns_control(Widget w, int tag, unsigned long *reason)
+{
+
+	if(w){}
+	if(reason){}
+	switch(tag)
+	{
+		case 0 :
+			dic_cmnd_service("DIS_DNS/PRINT_STATS",0,0);
+			break;
+		case 1 :
+			dic_cmnd_service("DIS_DNS/DEBUG_ON",0,0);
+			break;
+		case 2 :
+			dic_cmnd_service("DIS_DNS/DEBUG_OFF",0,0);
+			break;
+		case 3 :
+			put_selection(DID_KILL_ALL,"Confirmation");
+			break;
+		case 4 :
+			dic_cmnd_service("DIS_DNS/PRINT_HASH_TABLE",0,0);
+			break;
+	}
+}
+
+void get_server_node()
+{
+Widget id,sel_id;
+int i, j, n_nodes, curr_index = 0;
+char nodes_str[MAX_NODE_NAME*MAX_CONNS], max_str[MAX_NODE_NAME];
+char *ptr, *nodeptrs[MAX_CONNS], *curr_str, *sptr;
+int get_nodes();
+
+	sel_id = put_selection(DID_SEL_NODE,"Node Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	n_nodes = get_nodes(nodes_str);
+	ptr = nodes_str;
+
+	for(i=0;i<n_nodes;i++)
+	{
+		nodeptrs[i] = ptr;
+		sptr = ptr;
+		ptr = strchr(ptr,'\n');
+		for(j = 0; j < (int)strlen(sptr); j++)
+		  sptr[j] = tolower(sptr[j]);
+		*ptr++ = '\0';
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_nodes; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_nodes; j++)
+	  {
+	    sptr = nodeptrs[j];
+	    if(!sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  nodeptrs[curr_index] = 0;
+	  XmListAddItem(id,create_str(curr_str),i+1);
+	}
+	/*
+	for(i=0;i<n_nodes;i++)
+	{
+		node = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		XmListAddItem(id,create_str(node),i+1);
+	}
+	*/
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 8) ? i : 8);
+}	
+
+void get_server_service()
+{
+Widget id,sel_id;
+
+	sel_id = put_selection(DID_SEL_SERVICE,"Service Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	/*
+	XtUnmanageChild(id);
+	*/
+	XtUnmapWidget(id);
+	
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	XtUnmanageChild(id);
+	*/
+}	
+
+int get_nodes(char *node_ptr)
+{
+DNS_SERVER_INFO *ptr;
+int n_nodes = 0;
+SERVER *servp;
+
+	node_ptr[0] = '\0';
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		ptr = &servp->server;
+		if(strstr(node_ptr,ptr->node) <= (char *)0)
+		{
+			strcat(node_ptr,ptr->node);
+			strcat(node_ptr,"\n");
+			n_nodes++;
+		}
+	}
+	return(n_nodes);
+}
+
+void get_service_format()
+{
+
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(int)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+void recv_service_info(int *tag, int *buffer, int *size)
+{
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+*/
+	void print_service_formatted();
+
+	if(tag){}
+	Service_content_str = malloc(1024 + (*size)*16);
+	Service_buffer = malloc(*size);
+	memcpy(Service_buffer, (char *)buffer, *size);
+	Service_size = *size;
+	get_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available\n", Curr_service_name);
+	}
+	else
+	{
+	  switch(Curr_service_print_type)
+	  {
+	  case 0:
+		print_service_formatted(buffer,*size);
+		break;
+		/*
+	  case 1:
+		print_service_float(buffer, ((*size - 1) / 4) + 1);
+		break;
+	  case 2:
+		print_service_double(buffer, ((*size - 1) / 4) + 1);
+		break;
+		*/
+	  }
+	}
+	set_something(Content_label_id,XmNlabelString, Service_content_str);
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+	
+void print_service_formatted(void *buff, int size)
+{
+char type;
+int num, ret;
+char str[128];
+char *ptr;
+void *buffer_ptr;
+char timestr[128], aux[10];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+  sprintf(Service_content_str,
+	  "Service %s (%s) Contents :\n  \n", Curr_service_name,
+	  Curr_service_format);
+  /*
+  if(Curr_service_id)
+  {
+  */
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+/*
+#ifdef LYNXOS
+	ctime_r((time_t *)&secs, timestr, 128);
+#else
+	ctime_r((time_t *)&secs, timestr);
+#endif
+*/
+	tsecs = secs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s               Quality: %d\n\n",
+	  timestr, quality);
+
+    strcat(Service_content_str,str);
+    /*
+  }
+    */
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 ret = did_write_string(type, num, &buffer_ptr, size);
+	 size -= ret;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 ret = did_write_string(type, 0, &buffer_ptr, size);
+	 size -= ret;
+	 break;
+       }
+   }
+}
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+	size = ssize/sizeof(int);
+      else
+	size = num;
+      psize = size * sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+	size = ssize/sizeof(int);
+      else
+	size = num;
+      psize = size * sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+	size = ssize/sizeof(short);
+      else
+	size = num;
+      psize = size * sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+	size = ssize/sizeof(float);
+      else
+	size = num;
+      psize = size * sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+	size = ssize/sizeof(double);
+      else
+	size = num;
+      psize = size * sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+	size = ssize/sizeof(longlong);
+      else
+	size = num;
+      psize = size * sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+	size = ssize;
+      else
+	size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+/*
+print_service(buff, size)
+int *buff, size;
+{
+int i,j, str_flag = 0;
+char *asc, *ptr, str[80];
+int last[4];
+
+	sprintf(Service_content_str,
+		"Service %s (%s) Contents :\n  \n", Curr_service_name,
+		Curr_service_format);
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(i%4 == 0)
+		{
+			sprintf(str,"%4d: ",i);
+			strcat(Service_content_str,str);
+		}
+		if(!(i%4))
+			strcat(Service_content_str,"H");
+		sprintf(str,"   %08X ",buff[i]);
+		strcat(Service_content_str,str);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			strcat(Service_content_str,"   '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(Service_content_str,str);
+				}
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+			for(j = 0; j < 4 - (i%4); j++)
+				strcat(Service_content_str,"            ");
+			strcat(Service_content_str,"   '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+					strcat(Service_content_str,".");
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+	}
+}
+*/
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+int last[4];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+		  /*
+			if(i%4 != 3)
+			{
+			    for(j = 1; j < 4 - (i%4); j++)
+				strcat(tmp,"            ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%4)*4)+4 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+longlong last[4];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",(int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+short last[8];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"  %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+		  /*
+			if(i%7 != 7)
+			{
+			    for(j = 1; j < 8 - (i%8); j++)
+				strcat(tmp,"      ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%8)*2)+2 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str," %5d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+char last[16];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[strlen(str)-2]);
+		last[i%16] = buff[i];
+		/*
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"   ");
+			}
+			strcat(tmp,"    '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+       	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void ok_pop_up (Widget w, long tag, unsigned long *reason)
+{
+Widget id, sel_id;
+char *str, *pstr;
+void recv_service_info();
+void did_prepare_command();
+void show_servers();
+
+/*
+	if(tag == 5)
+	{
+		id = (Widget)XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		if( ( fptr = fopen( str, "w" ) ) == (FILE *)0 )
+		{
+    		printf("Cannot open: %s for writing\n",str);
+			return;
+		}                   
+		ptr = &Curr_servp->server;
+		if (ptr->pid > 0x1000000)
+			fprintf(fptr,"Server %s (pid = %X) on node %s\n    provides %d services :\n",
+			Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		else
+			fprintf(fptr,"Server %s (pid = %d) on node %s\n    provides %d services :\n",
+				Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		service_ptr = Curr_servp->service_ptr;
+		for(i=0;i<ptr->n_services; i++)
+		{
+			sprintf(str,service_ptr->name);
+			fprintf(fptr,"        %s\n",service_ptr->name);
+			service_ptr++;
+		}		
+		fclose(fptr);
+		XtFree(str);
+		return;
+	}
+	if(tag == 4)
+	{
+		sel_id = put_selection(4, "Printing...");
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+		XtUnmanageChild(id);
+
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+		XtUnmanageChild(id);
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		ptr = &Curr_servp->server;
+		if(pstr = strrchr(str,']'))
+			*(++pstr) = '\0';
+		if(pstr = strrchr(str,'/'))
+			*(++pstr) = '\0';
+		sprintf(txt_str,"%s%s.TXT",str,Curr_servp->name);
+		XtFree(str);
+		XmTextSetString(id, txt_str);
+		return;
+	}
+*/
+	if(reason){}
+	if(tag == DID_KILL_ALL)
+	{
+		dic_cmnd_service("DIS_DNS/KILL_SERVERS",0,0);
+		return;
+	}
+	id = XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+	str = XmTextGetString(id);
+	if(!str[0])
+	{
+		XtFree(str);
+		return;
+	}
+        if ((tag == DID_SEL_NODE) || (tag == DID_SEL_SERVICE)) 
+	{
+		strcpy(Curr_view_opt_par, str);
+		show_servers();
+		XtFree(str);
+	}
+        if(tag == DID_SERVICES)
+	{
+	  pstr = strchr(str,' ');
+	  if(!pstr)
+	    {
+	      strcpy(Curr_service_name, str);
+	      strcpy(str,"SVC");
+	    }
+	  else
+	    {
+	      pstr++;
+	      strcpy(Curr_service_name, pstr);
+	    }
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+	  if(str[0] == 'S')
+	    {
+	      /*
+	      if((!strstr(pstr,"/SERVICE_LIST")) && 
+		 (!strstr(pstr,"/CLIENT_LIST")) &&
+		 (!strstr(pstr,"/SERVER_LIST")))
+		{
+		  Curr_service_id = dic_info_service(Curr_service_name,
+		                             MONITORED,5,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		}
+	      else
+		{
+	      */
+	      dic_info_service_stamped(Curr_service_name,
+							 ONCE_ONLY,10,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		  /*
+		}
+		  */
+	      put_selection(DID_SERVICE,"Service Contents");
+	    }
+	  else
+	    {
+	      get_service_format();
+	      sel_id = put_selection(DID_COMMAND,"Send Command");
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	      /*
+	      XtUnmanageChild(id);
+	      */
+	      XtUnmapWidget(id);
+	    }
+	  XtFree(str);
+	}
+        if(tag == DID_COMMAND)
+	{
+	  did_prepare_command(str);
+	  XtFree(str);
+	}
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 size = get_type_size(type);
+	 sscanf(ptr, "%d", &num);
+	 full_size += size * num;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+	free(last_buffer);
+      last_buffer = malloc(full_size);
+      last_size = full_size;
+   }
+   buffer_ptr = last_buffer;
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 did_read_string(type, num, &buffer_ptr, &str_ptr);  
+	 if(!str_ptr)
+	     break;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 did_read_string(type, 0, &buffer_ptr, &str_ptr);
+	 break;
+       }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(Curr_service_name,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",(int *)cc);
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+    sscanf(str,"%d",(int *)cc);
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+	*(int *)ptr = read_str_int(strp);
+	ptr = (int *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+	s = (short)read_str_int(strp);
+	*((short *)ptr) = s;
+	ptr = (short *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	*(float *)ptr = ff;
+	ptr = (float *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	dd = (double)ff;
+	*(double *)ptr = dd;
+	ptr = (double *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+	if((ret = read_str_char(strp, &cc)) <= 0)
+	  break;
+	*(char *)ptr = cc;
+	ptr = (char *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      if(ret <= 0)
+      {
+	if(!ret)
+	{
+	  strp++;
+	}
+	num = strlen(strp)+1;
+	strncpy((char *)ptr,strp,num);
+	if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+	{
+	  num--;
+	  *ptr1 = '\0';
+	}
+	ptr = (char *)ptr + num;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+    }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
+
+void cancel_pop_up (Widget w, int tag, unsigned long *reason)
+{
+	void print_service_formatted();
+
+	if(reason){}
+	if(tag == MAX_POP_UPS+1)
+	{
+	  print_service_formatted(Service_buffer,Service_size);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 0;
+	}
+	/*
+	else if(tag == MAX_POP_UPS+2)
+	{
+		print_service_float(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 1;
+	}
+	else if(tag == MAX_POP_UPS+3)
+	{
+		print_service_double(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 2;
+	}
+	*/
+	else if(tag == MAX_POP_UPS+4)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = dic_info_service_stamped(Curr_service_name,
+						     MONITORED,10,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(SubscribeButton, True);
+	}
+	else if(tag == MAX_POP_UPS+5)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = dic_info_service_stamped(Curr_service_name,
+						     MONITORED,0,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(Subscribe10Button, True);
+	}
+/*
+	else if(tag == 5)
+	{
+	  *
+		XtUnmapWidget(XtParent(pop_widget_id[4]));
+	  *
+	}
+*/
+	else if(tag == DID_SERVICE)
+	{
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+            XtUnmanageChild(pop_widget_id[DID_SERVICE]);
+	    free(Service_content_str);
+	    free(Service_buffer);
+	}
+}
+
+void create_matrix(Widget w, int *tag, unsigned long *reason)
+{
+
+	if(reason){}
+	Matrix_id[*tag] = w;
+	if(*tag)
+		XtUnmanageChild(w);
+	else
+		Curr_matrix = 0;
+}
+
+void create_label(Widget w, int *tag, unsigned long *reason)
+{
+	if(reason){}
+	if(!*tag)
+		Label_id = w;
+	else
+		Content_label_id = w;
+}
+
+void switch_matrix()
+{
+	/*
+	XtUnmanageChild(Matrix_id[Curr_matrix]);
+	Curr_matrix = (Curr_matrix) ? 0 : 1;
+	XtManageChild(Matrix_id[Curr_matrix]);
+	*/
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id[Curr_matrix]); 
+}
+
+/*
+static int curr_allocated_size = 0;
+static DNS_SERVER_INFO *dns_info_buffer;
+*/
+
+void update_servers_new(int *tag, char *buffer, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("Server_list:\n%s\n",buffer);
+}
+
+SERVER *find_server(char *node, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = Server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+    {
+      ptr = &servp->server;
+      if((ptr->pid == pid) && (!strcmp(ptr->node,node)))
+	{
+	  return(servp);
+	}
+    }
+  return ((SERVER *)0);
+}
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+
+
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+
+	if(tag){}
+	if(!Server_head)
+	{
+		Server_head = (SERVER *)malloc(sizeof(SERVER));
+		sll_init((SLL *)Server_head);
+	}
+	if(First_time)
+	{
+		switch_matrix();
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if(strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(servp = find_server(buffer->server.node,buffer->server.pid)))
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->button_id = 0;
+			servp->pop_widget_id[0] = 0;
+			servp->pop_widget_id[1] = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			sll_insert_queue((SLL *)Server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc(service_size);
+			memcpy(servp->service_ptr, buffer->services, service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		else
+		  Force_update = 1;
+		servp->server.n_services = 0;
+		servp->busy = -1;
+	    }
+	}
+}
+
+void show_servers()
+{
+SERVER *servp;
+void update_show_servers();
+void remove_all_buttons();
+void put_label();
+
+	if(!Matrix_id[Curr_matrix])
+		return;
+	remove_all_buttons();
+	
+#ifndef linux	
+	switch_matrix();
+#endif
+	put_label();
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+	  servp->busy = 1;
+	}
+	Force_update = 1;                
+}
+
+void update_show_servers(void *tag, unsigned long *reason)
+{
+DNS_SERVER_INFO *server_ptr;
+DNS_SERVICE_INFO *service_ptr;
+int i, j, found, n_done = 0;
+Widget w, create_button();
+SERVER *servp, *prevp;
+static int old_n_services = 0;
+char node[MAX_NODE_NAME], par[MAX_NODE_NAME], *ptr;
+void remove_button();
+void remove_all_buttons();
+void put_label();
+
+    DISABLE_AST
+	if(tag){}
+	if(reason){}
+    if((N_services != old_n_services) || (Force_update))
+    {
+        if(!Matrix_id[Curr_matrix])
+	{
+	    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+	    ENABLE_AST
+	    return;
+	}
+	if(!N_servers)
+	{
+		remove_all_buttons();
+		if(! No_link_button_id)
+		{
+			No_link_button_id = create_button("DNS is down", 0);
+			set_color(No_link_button_id, XmNbackground, RED);
+		        get_something(No_link_button_id,XmNuserData,&w);
+			set_color(w, XmNbackground, RED);
+			XtSetSensitive(No_link_button_id, False);
+		}
+		while(!sll_empty((SLL *)Server_head))
+		{
+			servp = (SERVER *)sll_remove_head((SLL *)Server_head);
+			if(servp->service_ptr)
+				free(servp->service_ptr);
+			free(servp);
+		}
+		put_label();
+		old_n_services = N_services;
+		Force_update = 0;
+		XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+		ENABLE_AST
+		return;
+	}
+	if(No_link_button_id)
+	{
+		XtDestroyWidget(No_link_button_id);
+		/*
+		XFlush(XtDisplay(No_link_button_id));
+		*/
+		No_link_button_id = 0;
+        }
+	servp = Server_head;
+	prevp = 0;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(prevp)
+		{
+			free(prevp);
+			prevp = 0;
+		}
+		if(n_done == 10)
+		{
+		    if(!Force_update)
+		        put_label();
+		    XtAppAddTimeOut(app_context, 100, update_show_servers, 0);
+		    ENABLE_AST
+		    return;
+		}
+		server_ptr = &servp->server;
+		if(servp->busy == 1)
+		{
+			if(!servp->button_id)
+			{
+			switch(Curr_view_opt)
+			{
+				case 1 :
+				  servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+					n_done++;
+					break;
+				case 0 :
+				  strcpy(node, server_ptr->node);
+				  strcpy(par, Curr_view_opt_par);
+				  ptr = strchr(node, '.');
+				  if(ptr)
+				    *ptr = '\0';
+				  ptr = strchr(par,'.');
+				  if(ptr)
+				    *ptr = '\0';
+				  ptr = node;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = tolower(ptr[i]);
+				  ptr = par;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = tolower(ptr[i]);
+					 if(!strcmp(/*server_ptr->*/node, /*Curr_view_opt_*/par))
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					break;
+				case 2 :
+					found = 0;
+					if(!(service_ptr = servp->service_ptr))
+						break;
+					for(j = 0; j < server_ptr->n_services; j++)
+					{
+						if(strstr(service_ptr->name, Curr_view_opt_par) > (char *)0)
+						{
+							found = 1;
+							break;
+						}
+						service_ptr++;
+					}
+					if (found)
+					  {
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					  }
+					break;
+				case 3 :
+					if(server_ptr->n_services == -1)
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					else
+					{
+						if(servp->button_id)
+							remove_button(servp);
+					}
+					n_done++;
+					break;
+			}
+			}
+			servp->busy = 2;
+			if(servp->button_id)
+			{
+				if(Curr_view_opt != -1)
+				{
+					if (server_ptr->n_services == -1)
+					{
+						set_color(servp->button_id, XmNbackground, RED);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, RED);
+					}
+					else
+					{
+						set_color(servp->button_id, XmNbackground, GREEN);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, GREEN);					 
+					}
+				}
+			}
+		}
+		else if (servp->busy == -1)
+		{
+			remove_button(servp);
+			sll_remove((SLL *)Server_head, (SLL *)servp);
+			if(servp->service_ptr)
+			{
+				free(servp->service_ptr);
+				servp->service_ptr = 0;
+			}
+			prevp = servp;
+			n_done++;
+		}
+	}
+	if(prevp)
+	{
+		free(prevp);
+		prevp = 0;
+	}
+	put_label();
+	old_n_services = N_services;
+	Force_update = 0;
+    }
+    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+    ENABLE_AST
+}
+
+Widget create_button(char *name, SERVER *servp)
+{
+Arg arglist[10];
+int n, n_services = -1;
+Widget w, ww, w_id;
+void activate_services(), activate_clients();
+char w_name[MAX_NAME];
+	
+	w_name[0] = 0;
+	if(servp)
+		n_services = servp->server.n_services;
+    strcpy(w_name,name);
+	if(strlen(w_name) >= MAX_TASK_NAME - 4)
+	  w_name[16] = '\0';
+	n = 0;
+    XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+    XtSetArg(arglist[n], XmNentryAlignment, XmALIGNMENT_CENTER);  n++;
+	w_id = w = XmCreateMenuBar(Matrix_id[Curr_matrix],
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+/*				
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	XtManageChild(w);
+	strcat(w_name,"1"); 
+	n = 0;
+    XtSetArg(arglist[n], XmNalignment, XmALIGNMENT_CENTER);  n++;
+	XtSetArg(arglist[n], XmNfontList, did_server_font);  n++;
+	w = XmCreateCascadeButton(w,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+	set_something(w,XmNlabelString,name);
+	set_something(w,XmNalignment,XmALIGNMENT_CENTER);
+/*
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	set_something(w_id,XmNuserData,w);
+	strcat(w_name,"1"); 
+		n = 0;
+		ww = XmCreatePulldownMenu(w_id,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+		set_something(w,XmNsubMenuId,ww);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+
+		set_something(w,XmNlabelString,"Services");
+	if(servp)
+	{
+		XtAddCallback(w,XmNactivateCallback, activate_services, servp);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+
+		set_something(w,XmNlabelString,"Clients");
+		XtAddCallback(w,XmNactivateCallback, activate_clients, servp);
+		XtManageChild(w);
+		/*
+		servp->popping = 0;
+		create_client_popup(servp);
+		*/
+	}
+	return(w_id);
+}
+
+void remove_all_buttons()
+{
+SERVER *servp;
+
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(servp->button_id)
+		{
+			XtDestroyWidget(servp->button_id);
+			servp->button_id = 0;
+			servp->busy = 0;
+		}
+	}
+}
+
+void remove_button(SERVER *servp)
+{
+
+	if(servp->button_id)
+	{
+		XtDestroyWidget(servp->button_id);
+		servp->button_id = 0;
+		servp->busy = 0;
+	}
+}
+
+void activate_services(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[MAX_NAME];
+Widget id,sel_id;
+void got_service_list();
+void kick_it();
+
+	if(w){}
+	if(reason){}
+	if(servp->pop_widget_id[0])
+	{
+		XtDestroyWidget(servp->pop_widget_id[0]);
+		servp->pop_widget_id[0] = 0;
+		/*
+		return;
+		*/
+	}
+	Curr_servp = servp;
+	ptr = &servp->server;
+
+	sel_id = put_popup(servp, 0,"Service Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_OK_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	if (ptr->pid > 0x1000000)
+		sprintf(str,"Server %s (pid = %X) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	else
+		sprintf(str,"Server %s (pid = %d) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	Curr_service_list_id = id;
+
+	XmListAddItem(id,create_str(
+          "Ordering services alphabeticaly, please be patient..."),1);
+
+	set_something(id,XmNlistItemCount,1);
+	set_something(id,XmNlistVisibleItemCount,1);
+	
+	sprintf(str,"%s/SERVICE_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+			 got_service_list,(long)servp,"None",5);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it, 0);
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it()
+{
+  printf("kick_it\n");
+}
+
+typedef char DID_SLOT[MAX_NAME];
+
+void got_service_list(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_got_service_list();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_service_list)
+	  free(Curr_service_list);
+	Curr_service_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_service_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Service_List = servp;
+	/*
+#else
+	do_got_service_list(servp);
+#endif
+	*/
+}
+
+void do_got_service_list(SERVER *servp)
+{
+char cmd_str[256], svc_str[256];
+DNS_SERVER_INFO *ptr;
+DNS_SERVICE_INFO *service_ptr;
+Widget id;
+char *curr_str, max_str[MAX_NAME], *sptr;
+DID_SLOT *service_list;
+int i, j, curr_index = 0, n_services;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	id = Curr_service_list_id;
+	
+	XmListDeleteAllItems(id);
+	
+	strcpy(cmd_str,"CMD: ");
+	strcpy(svc_str,"SVC: ");
+
+	service_ptr = servp->service_ptr;
+	service_list = (DID_SLOT *)malloc(ptr->n_services * MAX_NAME);
+	n_services = ptr->n_services;
+
+	for(i=0;i<n_services; i++)
+	{
+	  strcpy(service_list[i],service_ptr->name);
+	  service_ptr++;
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_services; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_services; j++)
+	  {
+	    sptr = service_list[j];
+	    if(!*sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  service_list[curr_index][0] = '\0';
+	  service_ptr = &(servp->service_ptr[curr_index]);
+	  if(service_ptr->type)
+	  {
+	    strcpy(&cmd_str[5],service_ptr->name);
+	    xstr = create_str(cmd_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	  else
+	  {
+	    strcpy(&svc_str[5],service_ptr->name);
+	    xstr = create_str(svc_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	}
+	free(service_list);
+	
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 20) ? i : 20);
+}
+
+void show_clients(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_show_clients();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_client_list)
+	  free(Curr_client_list);
+	Curr_client_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_client_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Client_List = servp;
+	/*
+#else
+	do_show_clients(servp);
+#endif
+	*/
+}
+
+void do_show_clients(SERVER *servp)
+{
+int i = 0;
+char str[2048], *strp, *strp1;
+DNS_SERVER_INFO *ptr;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	/*
+	sel_id = servp->pop_widget_id[1];
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	if(Curr_client_list[0] == -1) 
+	{
+		sprintf(str,"Information not available\n");
+		XmListAddItem(Curr_client_id,create_str(str),i+1);
+		/*
+		set_something(sel_id,XmNlistLabelString,str);
+		*/
+		return;
+	}
+	/*
+	sprintf(str,"Clients of %s are :                                  \n",
+	ptr->task);
+	set_something(sel_id,XmNlistLabelString,str);
+	
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	*/
+	strp1 = Curr_client_list;
+	while(strp1) 
+	{
+		if(!*strp1)
+			break;
+		sprintf(str,"Process ");
+		strp = strp1;
+		strp1 = strchr(strp,'@');
+		*strp1 = '\0';
+		strp1++;
+		strcat(str,strp);
+		strcat(str," on node ");
+		strp = strp1;
+		if( (strp1 = strchr(strp,'|')) )
+		{
+			*strp1 = '\0';
+			strp1++;
+		}
+		strcat(str,strp);	
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+       		i++;
+	}
+	if(!i)
+	{
+		sprintf(str,"NONE");
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+	}
+	/*
+	set_something(id,XmNlistItemCount,i);
+	*/
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+
+void activate_clients(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[100];
+void show_clients();
+void kick_it_again();
+Widget id,sel_id;
+
+	if(w) {}
+	if(reason){}
+	Curr_servp = servp;
+	ptr = &servp->server;
+	if(servp->pop_widget_id[1])
+	  {
+		XtDestroyWidget(servp->pop_widget_id[1]);
+		servp->pop_widget_id[1] = 0;
+	  }
+	sel_id = put_popup(servp,1,"Client Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_CANCEL_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_SELECTION_LABEL);
+	XtUnmanageChild(id);
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+
+	Curr_client_id = id;
+	sprintf(str,"Clients of %s are :                                   \n",
+		servp->name);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	sprintf(str,"%s/CLIENT_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,10,0,0,
+			 show_clients,(long)servp,&no_link,1);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it_again, 0); 
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it_again()
+{
+  printf("kick_it_again\n");
+}
+
+Widget put_popup(SERVER *servp, int type, char *title)
+{
+    Widget id;
+    void activate_services(), activate_clients();
+	extern void set_title();
+
+		if(type)
+		{
+		    id = create_client_dialog();
+		    /*
+		    XtAddCallback(id,XmNokCallback, activate_clients, servp);
+		    XtAddCallback(id,XmNcancelCallback, activate_clients, servp);
+		    */
+		}
+		else
+		{
+		    id = create_server_dialog();
+		    /*
+		    XtAddCallback(id,XmNcancelCallback, activate_services, servp);
+		    */
+		}
+		servp->pop_widget_id[type] = id;
+		/*
+	}
+		*/
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+Widget put_selection(int tag, char *title)
+{
+    Widget id = 0;
+	extern void set_title();
+
+    if(pop_widget_id[tag])
+    {
+		XtDestroyWidget(pop_widget_id[tag]);
+    }
+	  switch(tag)
+	  {
+	    case DID_SEL_NODE:
+	      id = create_node_selection();
+	      break;
+	    case DID_SEL_SERVICE:
+	      id = create_service_selection();
+	      break;
+	    case DID_KILL_ALL:
+	      id = create_kill_confirmation();
+	      break;
+	    case DID_SERVICE:
+	      id = create_service_dialog();
+	      break;
+	    case DID_COMMAND:
+	      id = create_send_command();
+	      break;
+	  }
+	  
+	   pop_widget_id[tag] = id;
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+void check_put_label(int tag)
+{
+	static int old_n_services = 0;
+	static int changing = 0;
+	void put_label();
+
+	if(tag){}
+	if(N_services != old_n_services)
+	{
+		put_label();
+		if(N_services > old_n_services)
+		  changing = 1;
+		old_n_services = N_services;
+	
+#ifdef linux
+		show_servers();
+#endif
+	}
+/*
+	else
+	{
+	  if(changing)
+	  {
+	    show_servers();
+	    changing = 0;
+	  }
+	}
+*/
+}
+
+void put_label()
+{
+	char str[MAX_NAME], str1[MAX_NAME];
+			
+	DISABLE_AST
+	sprintf(str,"%d Servers known - %d Services Available\n",
+		N_servers,N_services);
+	switch(Curr_view_opt)
+	{
+		case 1 :
+			strcat(str,"Displaying ALL Servers");
+			break;
+		case 0 :
+			sprintf(str1,"Displaying Servers on node %s",Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 2 :
+			sprintf(str1,"Displaying Servers providing Service *%s*",
+				Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 3 :
+			strcat(str,"Displaying Servers in ERROR");
+			break;
+		case -1 :
+			strcat(str,"Please Select Viewing Option");
+			break;
+	}
+	set_something(Label_id,XmNlabelString,str);
+	XFlush(XtDisplay(Label_id));
+	ENABLE_AST
+}
+
+Widget create_client_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("Dismiss","","","","",DID_CLIENTS, 3);
+  return(id);
+  
+}
+
+Widget create_server_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("","View / Send","Dismiss","",
+			       "Service / Command :",
+			       DID_SERVICES, 20);
+  return(id);
+}
+
+Widget create_node_selection()
+{
+  Widget id;
+  id = create_selection_dialog("","","","Nodes :","Selected Node :",DID_SEL_NODE, 8);
+  return(id);
+  
+}
+
+Widget create_service_selection()
+{
+  Widget id;
+  /*
+  id = create_prompt_dialog("Enter Service Name :",DID_SEL_SERVICE);
+  */
+  id = create_selection_dialog("","","","","Enter Service Name (or search string):",DID_SEL_SERVICE, 0);
+  return(id);
+  
+}
+
+Widget create_send_command()
+{
+  Widget id;
+  char str[256], str1[256];
+
+  sprintf(str,"Command to %s (%s)\n\n",
+	  Curr_service_name, Curr_service_format);
+
+  id = create_selection_dialog("","","",str,"Command:",DID_COMMAND, 1);
+
+  strcpy(str1,"Please enter items separated by spaces:\n(for example: 2 0x123 'A' 23.4 \"a text\")");
+
+  set_something(id,XmNselectionLabelString,str1);
+
+  return(id);
+  
+}
+
+Widget create_kill_confirmation()
+{
+  Widget id;
+  id = create_question_dialog("Do you really want to kill ALL DIM servers ?",
+			      DID_KILL_ALL);
+  return(id);
+  
+}
+
+Widget create_selection_dialog(char *ok, char *apply, char *cancel, char *list, char *sel, 
+							   long tag, int items)
+{
+Widget sd;
+XmString xmOk, xmApply, xmCancel, xmList, xmSelection;
+Arg ar[20];
+int n;
+        
+    xmList = create_str(list);
+    xmOk = create_str(ok);
+    xmApply = create_str(apply);
+    xmCancel = create_str (cancel);
+    xmSelection = create_str (sel);
+
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"Selection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNlistLabelString, xmList); n++;
+    XtSetArg(ar[n],XmNlistVisibleItemCount,items); n++;
+    if(ok[0])
+      {
+      XtSetArg(ar[n],XmNokLabelString, xmOk); n++;
+      }
+    if(apply[0])
+      {
+      XtSetArg(ar[n],XmNapplyLabelString, xmApply); n++; 
+      }
+    if(cancel[0])
+      {
+      XtSetArg(ar[n],XmNcancelLabelString, xmCancel); n++;
+      }
+    if(sel[0])
+      {
+      XtSetArg(ar[n],XmNselectionLabelString, xmSelection); n++;
+      }
+    sd = XmCreateSelectionDialog ( toplevel_widget, "Selection", ar, n );
+    XmStringFree(xmList);
+    XmStringFree(xmOk);
+    XmStringFree(xmApply);
+    XmStringFree(xmCancel);
+    XmStringFree(xmSelection);
+    if(tag >= 0)
+      {
+	  XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNapplyCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+      }
+    return(sd);
+}
+
+Widget create_file_selection_dialog(long type)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str ("");
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"FileSelection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNwidth, 500); n++;
+    XtSetArg(ar[n],XmNdirMask, xm1); n++;
+    sd = XmCreateFileSelectionDialog ( toplevel_widget, "FileSelection", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)type );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)type );
+
+	return(sd);
+}
+
+Widget create_prompt_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNselectionLabelString, xm1); n++;
+    sd = XmCreatePromptDialog ( toplevel_widget, "Prompt", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_question_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNmessageString, xm1); n++;
+    sd = XmCreateQuestionDialog ( toplevel_widget, "Question", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_service_dialog()
+{
+Widget fd, rc, sw, lb, rc1;
+XmString xm1;
+Arg ar[20];
+int n, par;
+unsigned long reason;
+        
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_ANY); n++;
+    fd = XmCreateFormDialog ( toplevel_widget, "Form", ar, n );
+    XtManageChild(fd);
+
+    /* create rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNbottomOffset, 0); n++;
+    XtSetArg(ar[n],XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNrightOffset, 0); n++;
+    XtSetArg(ar[n],XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNtopOffset, 0); n++;
+    XtSetArg(ar[n],XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNleftOffset, 0); n++;
+    rc = XmCreateRowColumn ( fd, "rowcol", ar, n );
+    XtManageChild(rc);
+
+    /* create scrolled window */
+    n = 0;	    
+    XtSetArg ( ar[n], XmNwidth, 770); n++;
+    XtSetArg ( ar[n], XmNheight, 350); n++;
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sw = XmCreateScrolledWindow ( rc, "ScrollWin", ar, n );
+    XtManageChild ( sw );
+
+    /* create label */
+    n = 0; 
+    xm1 = create_str(" ");
+    XtSetArg(ar[n],XmNfontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_BEGINNING); n++;
+    lb = XmCreateLabel ( sw, "label", ar, n );
+    XtManageChild(lb);
+    XmStringFree(xm1);
+    par = 1;
+    reason = 0;
+    create_label(lb, &par, &reason);
+
+    /* create button rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 0); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNorientation, XmVERTICAL); n++;
+    XtSetArg(ar[n],XmNnumColumns, 3); n++;
+    XtSetArg(ar[n],XmNpacking, XmPACK_COLUMN); n++;
+    rc1 = XmCreateRowColumn ( rc, "buttons", ar, n );
+    XtManageChild(rc1);
+    /*    
+    create_push_button(rc1,"View Standard",MAX_POP_UPS+1); 
+    create_push_button(rc1,"View Float",MAX_POP_UPS+2); 
+    create_push_button(rc1,"View Double",MAX_POP_UPS+3); 
+    */
+    SubscribeButton = create_push_button(rc1,"            Subscribe (On Change)            ",
+		       MAX_POP_UPS+5); 
+  Subscribe10Button = create_push_button(rc1,"      Subscribe (Update Rate 10 seconds)     ",
+		       MAX_POP_UPS+4); 
+    create_push_button(rc1,"Dismiss",DID_SERVICE);
+    Curr_service_print_type = 0;
+
+    return(fd);
+}
+
+Widget create_push_button(Widget parent, char *str, long tag)
+{
+Widget b;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    n = 0; 
+    xm1 = create_str(str);
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNfontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    b = XmCreatePushButton ( parent, "button", ar, n );
+ 
+    XtManageChild(b);
+    XmStringFree(xm1);
+
+    XtAddCallback ( b, XmNactivateCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag ); 
+    return(b);
+}
+
+
+
+
Index: branches/FACT++_part_filenames/dim/src/did/dui_colors.h
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/dui_colors.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/dui_colors.h	(revision 18732)
@@ -0,0 +1,6 @@
+#ifndef DUI_COLORS_H
+#define DUI_COLORS_H
+typedef enum {
+GREEN, BLUE, YELLOW, ORANGE, RED, BLACK, WHITE, NONE, GRAY, LIGHTGRAY, MAX_COLORS }TRG_COLORS;
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/did/dui_util.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/dui_util.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/dui_util.c	(revision 18732)
@@ -0,0 +1,308 @@
+/*
+**++
+**  FACILITY:  DUI
+**
+**  MODULE DESCRIPTION:
+**
+**      Implements MOTIF utility functions
+**
+**  AUTHORS:
+**
+**      C. Gaspar
+**
+**  CREATION DATE:  24-01-1993
+**
+**--
+*/
+#include <stdio.h>
+#include <Mrm/MrmAppl.h>                   /* Motif Toolkit */
+#include <Xm/Xm.h>
+
+#include <dim.h>
+#include "dui_util.h"
+
+/* compound strings */
+
+
+static XmString Active_str;
+
+XmString get_str(text)
+char *text;
+{
+
+	Active_str = XmStringCreateLtoR ( text, XmSTRING_DEFAULT_CHARSET); 
+	return(Active_str);
+}
+
+
+void free_str()
+{
+
+	XmStringFree(Active_str);
+}
+
+
+XmString create_str(text)
+char *text;
+{
+XmString str;
+
+
+	str = XmStringCreate ( text, XmSTRING_DEFAULT_CHARSET); 
+	return(str);
+}
+
+void delete_str(str)
+XmString str;
+{
+
+	XmStringFree(str);
+}
+
+void set_something(w, resource, value)
+    Widget w;
+    char *resource, *value;
+{
+    Arg al[1];
+	int free = 0;
+DISABLE_AST
+	if( (!strcmp(resource,XmNlabelString)) ||
+		(!strcmp(resource,XmNmessageString)) ||
+		(!strcmp(resource,XmNtextString)) ||
+		(!strcmp(resource,XmNlistLabelString)) ||
+		(!strcmp(resource,XmNselectionLabelString)) )
+	{
+		free = 1;
+		value = (char *)get_str(value);
+	}
+    XtSetArg(al[0], resource, value);
+    XtSetValues(w, al, 1);
+	if(free)
+		free_str();
+	/*
+	printf("Flushing %s for widget %s...\n",resource,w->core.name);
+	*/
+	/*
+	XFlush(XtDisplay(w));
+	*/
+	/*
+	printf("Flushed!\n");
+	*/
+ENABLE_AST
+}
+
+void get_something(w, resource, value)
+    Widget w;
+    char *resource, *value;
+{
+
+    Arg al[1];
+	int free = 0;
+	XmString str;
+	char *cstr;
+
+	if( (!strcmp(resource,XmNlabelString)) ||
+		(!strcmp(resource,XmNmessageString)) ||
+		(!strcmp(resource,XmNtextString)) ||
+		(!strcmp(resource,XmNlistLabelString)) ||
+		(!strcmp(resource,XmNselectionLabelString)) )
+	{
+		free = 1;
+	    XtSetArg(al[0], resource, &str);
+	}
+	else
+		XtSetArg(al[0], resource, value);
+    XtGetValues(w, al, 1);
+	if(free)
+	{
+		XmStringGetLtoR(str, XmSTRING_DEFAULT_CHARSET, &cstr);
+		strcpy(value,cstr);
+		XtFree(cstr);
+	}
+}
+/*
+void set_something_uid(hid, w, resource, value)
+    MrmHierarchy hid;
+    Widget w;                          
+    char *resource, *value;
+{
+    Arg al[1];
+
+	XtSetArg(al[0], resource, value);
+
+    MrmFetchSetValues(hid, w, al, 1);
+}
+*/
+
+static XmString str_table[50];
+
+XmStringTable create_str_table(strs)
+char strs[50][256];
+{
+int i;
+
+	for(i=0;strs[i][0];i++)
+	{
+		str_table[i] = XmStringCreate ( strs[i], XmSTRING_DEFAULT_CHARSET);
+	}
+	str_table[i] = (XmString)0;
+	return((XmStringTable)str_table);
+}
+
+void del_str_table()
+{
+int i;
+
+	for(i=0;str_table[i];i++)
+		XmStringFree(str_table[i]);
+
+}
+
+Pixel rgb_colors[MAX_COLORS];
+static Pixmap pixmap_colors[MAX_COLORS];
+static Pixmap watch_colors[MAX_COLORS];
+static Pixmap locks[MAX_COLORS];
+static Pixmap unlock;
+static Pixmap faces[MAX_COLORS];
+
+Pixel get_named_color(color)
+int color;
+{
+	return(rgb_colors[color]);
+}
+
+void set_color(w, resource, color) 
+Widget w;
+char *resource;
+int color;
+{
+
+DISABLE_AST
+/*
+	if(resource == XmNbackgroundPixmap)
+*/
+	if(!strcmp(resource,XmNbackgroundPixmap))
+		set_something(w,resource,pixmap_colors[color]);
+	else
+		set_something(w,resource,rgb_colors[color]);
+ENABLE_AST
+}
+	
+void set_watch(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,watch_colors[color]);
+}
+	
+void set_lock(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,locks[color]);
+}
+	
+void set_unlock(w) 
+Widget w;
+{
+	set_something(w,XmNbackgroundPixmap,unlock);
+}
+	
+void set_face(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,faces[color]);
+}
+	
+void get_all_colors(display, w)
+	Display *display;
+	Widget w;
+{
+    XColor a,b;
+    Colormap cm;
+    cm = DefaultColormap ( display, DefaultScreen(display));
+
+    XAllocNamedColor ( display, cm, "Medium Aquamarine", &a,&b );
+    rgb_colors[GREEN] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Turquoise", &a,&b );
+    rgb_colors[BLUE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Yellow", &a,&b );
+    rgb_colors[YELLOW] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Orange", &a,&b );
+    rgb_colors[ORANGE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Red", &a,&b );
+    rgb_colors[RED] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Black", &a,&b );
+    rgb_colors[BLACK] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "White", &a,&b );
+    rgb_colors[WHITE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Light Gray", &a,&b );
+    rgb_colors[GRAY] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Gainsboro", &a,&b );
+    rgb_colors[LIGHTGRAY] = b.pixel;
+/*
+    MrmFetchColorLiteral(hid, "green", display, 0, &rgb_colors[GREEN]);
+    MrmFetchColorLiteral(hid, "blue", display, 0, &rgb_colors[BLUE]);
+    MrmFetchColorLiteral(hid, "yellow", display, 0, &rgb_colors[YELLOW]);
+    MrmFetchColorLiteral(hid, "orange", display, 0, &rgb_colors[ORANGE]);
+    MrmFetchColorLiteral(hid, "red", display, 0, &rgb_colors[RED]);
+    MrmFetchColorLiteral(hid, "black", display, 0, &rgb_colors[BLACK]);
+    MrmFetchColorLiteral(hid, "white", display, 0, &rgb_colors[WHITE]);
+*/
+     get_something(w,XmNbackground,&rgb_colors[NONE]);
+}
+
+
+static int was_sensitive = 0;
+
+void set_sensitive(widget_id)
+Widget widget_id;
+{
+
+	if(was_sensitive)
+		XtSetSensitive(widget_id,True);
+}
+
+void set_insensitive(widget_id)
+Widget widget_id;
+{
+
+	if( (was_sensitive = XtIsSensitive(widget_id)) )
+		XtSetSensitive(widget_id,False);
+}
+	
+void set_title(w, title)
+    Widget w;
+    char *title;
+{
+    Arg al[1];
+
+    XtSetArg(al[0], XmNtitle, title);
+    XtSetValues(w, al, 1);
+    /*
+	XFlush(XtDisplay(w));
+	*/
+}
+
+void set_icon_title(w, title)
+    Widget w;
+    char *title;
+{
+    Arg al[1];
+
+    XtSetArg(al[0], XmNiconName, title);
+    XtSetValues(w, al, 1);
+    /*
+	XFlush(XtDisplay(w));
+	*/
+}
+
Index: branches/FACT++_part_filenames/dim/src/did/dui_util.h
===================================================================
--- branches/FACT++_part_filenames/dim/src/did/dui_util.h	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/did/dui_util.h	(revision 18732)
@@ -0,0 +1,7 @@
+#ifndef DUI_UTIL_H
+#define DUI_UTIL_H
+
+#include "dui_colors.h"
+
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/dim_jni.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dim_jni.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dim_jni.c	(revision 18732)
@@ -0,0 +1,2737 @@
+/*
+ * dim_JNI_Native.c : JNI native code for dim
+ * routines to be used by Java.
+ *
+ * Started on        : 2000-08-16
+ * Written by        : M.Jonker
+ *
+ * Version history:
+ * 20000911MJJ       First Released Version (Not 100% complete yet)
+ * 31-Oct-2007 Adjustments for 64bit platforms Joern Adamczewski, gsi
+ * 03-Dec-2008 Fix in dim_Client releaseService Hans Essel, gsi
+ *
+ */
+/* TODO Remove these kludges */
+#define dim_Dbg_MEMORY          dim_Dbg_SERIALIZER
+#define dim_Dbg_MUTABLE_MEMORY  dim_Dbg_SERIALIZER
+#define dim_Dbg_MEMORY_ALLOCATE dim_Dbg_SERIALIZER
+
+/* TODO Split the Native and the serialization into two source files */
+/* TODO Release global references when they are not anymore used */
+
+#define DIMLIB
+#include <stdio.h>
+#include "dim.h"
+#include "dic.h"
+#include "dis.h"
+#include "dim_jni.h"
+
+
+#ifdef  JNI_VERSION_1_4
+#define JNI_VERSION JNI_VERSION_1_4
+#else
+#ifdef  JNI_VERSION_1_3
+#define JNI_VERSION JNI_VERSION_1_3
+#else
+#ifdef  JNI_VERSION_1_2
+#define JNI_VERSION JNI_VERSION_1_2
+#else
+#define JNI_VERSION 0x00010001
+#endif
+#endif
+#endif
+#define dim_JNI_version DIM_VERSION_NUMBER
+
+
+// Debug/tracing support ===============================================================================
+// The DBGe (Entry) DBGx (exit) DBGm (middle) DBG (Message only) macros allow for tracing and trapping
+// of native method calls.
+// DBGe, DBGx and DBGm have corresponding trap mask to active entry exits and middle traps
+// By setting DBG_filter to something restrictive, we suppress the code generation of the conditional
+// printouts for all dbg conditions except the conditions specified in the DBG_filter. (Provided the
+// optimiser does its job.)
+#ifndef DBG_filter
+  #ifdef _DEBUG
+    // no filter
+    #define DBG_filter 0xFFFFFFFF
+  #else
+    // filter all but module loading and unloading
+    #define DBG_filter dim_Dbg_MODULE
+  #endif
+#endif
+
+#define DBG(test)  if(((test&DBG_filter) & DBG_mask  ) !=0) /* etc . */
+#define DBGe(test) if(((test&DBG_filter) & DBGe_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+#define DBGm(test) if(((test&DBG_filter) & DBGm_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+#define DBGx(test) if(((test&DBG_filter) & DBGx_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+
+static int DBG_mask = dim_Dbg_MODULE;
+static int DBGe_trap = 0;
+static int DBGm_trap = 0;
+static int DBGx_trap = 0;
+
+static void DBG_Trap(int code)
+{
+  /* if you set a break point here you can trap all */
+  /* native calls that are activated by the mask DBG_trap */
+// TODO DBG_Trap should invoke the debugger
+	if(code){}
+  return;
+}
+// ===============================================================================Debug/tracing support=
+
+
+// Static module variables
+JavaVM*		theJavaVM;
+
+jclass		NativeDataMemory;
+jmethodID NativeDataMemory_new;
+jmethodID NativeDataMemory_decodeData;
+jfieldID	NativeDataMemory_dataAddress;
+jfieldID	NativeDataMemory_dataSize;
+
+jclass		ObjectDescriptor;
+
+jclass		SendSynchronizer;
+jmethodID	SendSynchronizer_new;
+jmethodID	SendSynchronizer_setCompletionCode;
+jmethodID	SendSynchronizer_getCompletionCode;
+
+jclass		ReceiveSynchronizer;
+jmethodID	ReceiveSynchronizer_new;
+jmethodID	ReceiveSynchronizer_decodeNativeData;
+jmethodID	ReceiveSynchronizer_getCompletionCode;
+
+jclass		CompletionHandler;
+jmethodID	CompletionHandler_setCompletionCode;
+
+jclass		NativeDataDecoder;
+jmethodID	NativeDataDecoder_decodeNativeData;
+
+jclass		NativeDataEncoder;
+jmethodID	NativeDataEncoder_encodeNativeData;
+
+jclass		NativeDimTimer;
+jmethodID   NativeDimTimer_timerHandler;
+
+jclass		NativeDimSrvError;
+jmethodID   NativeDimSrvError_errorHandler;
+jmethodID	NativeDimSrvError_new;
+jobject		ourNativeDimSrvError;
+
+jclass		NativeDimCltError;
+jmethodID   NativeDimCltError_errorHandler;
+jmethodID	NativeDimCltError_new;
+jobject		ourNativeDimCltError;
+
+jclass		NativeDimExit;
+jmethodID   NativeDimExit_exitHandler;
+jmethodID	NativeDimExit_new;
+jobject		ourNativeDimExit;
+
+jobject   ourNativeMemoryObject;
+
+#ifdef WIN32
+	DWORD MainThreadId = 0;
+#else
+#ifdef __linux__
+	pthread_t MainThreadId = 0;
+#else
+	int MainThreadId = 0;
+#endif
+#endif
+JNIEnv* TheEnv;
+
+#define NOT_STAMPED 0
+
+// TODO need to get a hook into dim release services so that I can release global references
+// Note: I can test on the user library beeing one of the four DIM_JNI specific callbacks to
+// decide whether the tag was a global reference.
+// I also have to control the copying of the tags by DIM libraries:
+// There may be actually some complications because in certain cases the release service is
+// not invoked but the service is kept on a 'hot-spare' list.
+// In case of DIS, information from the servep structure maybe copied to a dtq structure.
+
+// Forward defintions =====================================================================
+
+void info_service_callback(             jobject* _aDataDecoder, void* data, int* _size);
+void info_service_callback_with_cleanup(jobject* _aDataDecoder, void* data, int* _size);
+void send_callback(jobject* _aCompletionHandler, int* _status);
+
+void server_getInfo_callback(jobject* _aDataEncoder, void* *address, int *size);
+void server_setCmnd_callback(jobject* _aDataDecoder, void  *address, int *size);
+void timer_callback(             jobject* _aDimTimer);
+void server_error_callback(int severity, int code, char *msg);
+void client_error_callback(int severity, int code, char *msg);
+void server_exit_callback(int *code);
+
+
+// DLL load, unload and init ==============================================================
+
+int dim_jni_attachThread(JNIEnv **env)
+{
+#ifdef WIN32
+	DWORD tid;
+	tid = GetCurrentThreadId();
+#else
+#ifdef __linux__
+	pthread_t tid;
+	tid = pthread_self();
+#else
+	int tid = 0;
+#endif
+#endif 
+
+	if(tid == MainThreadId)
+	{
+		*env = TheEnv;
+		return 0;
+	}
+	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)env, NULL);
+	if(MainThreadId == 0)
+	{
+		MainThreadId = tid;
+	}
+	return 1;
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM* jvm, void* reserved)
+{
+  int    bugs =0;
+  JNIEnv *env;
+
+//  DBGe(dim_Dbg_MODULE) ; /* trap only, report on exit */
+
+  if(reserved){}
+  theJavaVM = jvm;
+
+  dim_jni_attachThread(&env);
+  TheEnv = env;
+//  (*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+#ifdef develop_a_better_understanding_of_java
+  {
+    jclass		test_cid;
+    jmethodID	test_mid;
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$static_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    test_mid  = (*env)->GetStaticMethodID(env,test_cid, "static_method",   "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$instance_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$method_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+  }
+#endif
+
+  NativeDataMemory                    = (*env)->FindClass(env, "dim/Memory");
+  NativeDataMemory_new                = (*env)->GetMethodID (env, NativeDataMemory, "<init>", "()V");
+  NativeDataMemory_decodeData         = (*env)->GetMethodID (env, NativeDataMemory, "decodeData", "(JILdim/DataDecoder;)V");
+  NativeDataMemory_dataAddress        = (*env)->GetFieldID  (env, NativeDataMemory, "dataAddress", "J");
+  NativeDataMemory_dataSize           = (*env)->GetFieldID  (env, NativeDataMemory, "highWaterMark",    "I");
+  NativeDataMemory                    = (*env)->NewGlobalRef(env, NativeDataMemory);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  ourNativeMemoryObject = (*env)->NewObject(env, NativeDataMemory, NativeDataMemory_new);
+  ourNativeMemoryObject = (*env)->NewGlobalRef(env, ourNativeMemoryObject);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  SendSynchronizer                    = (*env)->FindClass(env, "dim/Client$SendSynchronizer");
+  SendSynchronizer_new                = (*env)->GetMethodID (env, SendSynchronizer, "<init>", "(Ldim/CompletionHandler;)V");
+  SendSynchronizer_setCompletionCode  = (*env)->GetMethodID (env, SendSynchronizer, "setCompletionCode", "(I)I");
+  SendSynchronizer_getCompletionCode  = (*env)->GetMethodID (env, SendSynchronizer, "getCompletionCode", "(I)I");
+  SendSynchronizer                    = (*env)->NewGlobalRef(env, SendSynchronizer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  ReceiveSynchronizer                    = (*env)->FindClass(env, "dim/Client$ReceiveSynchronizer");
+  ReceiveSynchronizer_new                = (*env)->GetMethodID (env, ReceiveSynchronizer, "<init>", "(Ldim/DataDecoder;)V");
+  ReceiveSynchronizer_decodeNativeData   = (*env)->GetMethodID (env, ReceiveSynchronizer, "decodeData", "(Ldim/Memory;)V");
+  ReceiveSynchronizer_getCompletionCode  = (*env)->GetMethodID (env, ReceiveSynchronizer, "getCompletionCode","(I)I" );
+  ReceiveSynchronizer                    = (*env)->NewGlobalRef(env, ReceiveSynchronizer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  CompletionHandler                   = (*env)->FindClass(env, "dim/CompletionHandler");
+  CompletionHandler_setCompletionCode = (*env)->GetMethodID(env, CompletionHandler, "setCompletionCode", "(I)I");
+  CompletionHandler                   = (*env)->NewGlobalRef(env, CompletionHandler);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDataDecoder                   = (*env)->FindClass(env, "dim/DataDecoder");
+  NativeDataDecoder_decodeNativeData  = (*env)->GetMethodID(env,  NativeDataDecoder, "decodeData",   "(Ldim/Memory;)V");
+  NativeDataDecoder                   = (*env)->NewGlobalRef(env, NativeDataDecoder);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDataEncoder                      = (*env)->FindClass(env, "dim/DataEncoder");
+  NativeDataEncoder_encodeNativeData     = (*env)->GetMethodID(env,  NativeDataEncoder, "encodeData",   "()Ldim/Memory;");
+  NativeDataEncoder                      = (*env)->NewGlobalRef(env, NativeDataEncoder);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDimTimer					  = (*env)->FindClass(env, "dim/DimTimer");
+  NativeDimTimer_timerHandler         = (*env)->GetMethodID (env, NativeDimTimer,   "timerHandler", "()V");
+  NativeDimTimer                      = (*env)->NewGlobalRef(env, NativeDimTimer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDimSrvError					= (*env)->FindClass(env, "dim/DimErrorHandler$DimSrvError");
+  NativeDimSrvError_new                  = (*env)->GetMethodID (env, NativeDimSrvError, "<init>", "()V");
+  NativeDimSrvError_errorHandler         = (*env)->GetMethodID (env, NativeDimSrvError, "errorHandler", "(IILjava/lang/String;)V");
+  NativeDimSrvError                      = (*env)->NewGlobalRef(env, NativeDimSrvError);
+  ourNativeDimSrvError = (*env)->NewObject(env, NativeDimSrvError, NativeDimSrvError_new);
+  ourNativeDimSrvError = (*env)->NewGlobalRef(env, ourNativeDimSrvError);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  NativeDimCltError					= (*env)->FindClass(env, "dim/DimErrorHandler$DimCltError");
+  NativeDimCltError_new                  = (*env)->GetMethodID (env, NativeDimCltError, "<init>", "()V");
+  NativeDimCltError_errorHandler         = (*env)->GetMethodID (env, NativeDimCltError, "errorHandler", "(IILjava/lang/String;)V");
+  NativeDimCltError                      = (*env)->NewGlobalRef(env, NativeDimCltError);
+  ourNativeDimCltError = (*env)->NewObject(env, NativeDimCltError, NativeDimCltError_new);
+  ourNativeDimCltError = (*env)->NewGlobalRef(env, ourNativeDimCltError);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  NativeDimExit						= (*env)->FindClass(env, "dim/DimExitHandler$DimExit");
+  NativeDimExit_new                 = (*env)->GetMethodID (env, NativeDimExit, "<init>", "()V");
+  NativeDimExit_exitHandler         = (*env)->GetMethodID (env, NativeDimExit, "exitHandler", "(I)V");
+  NativeDimExit                     = (*env)->NewGlobalRef(env, NativeDimExit);
+  ourNativeDimExit = (*env)->NewObject(env, NativeDimExit, NativeDimExit_new);
+  ourNativeDimExit = (*env)->NewGlobalRef(env, ourNativeDimExit);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  DBGx(dim_Dbg_MODULE) printf("DimJNI: loaded DLL with dim version %d and JNI %d.%d\n", dim_JNI_version,JNI_VERSION>>16,JNI_VERSION&0xFFFF);
+
+  return(JNI_VERSION);
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnUnLoad(JNIEnv* env, void* reserved)
+{
+//  static JNIEnv* env;
+
+//  DBGe(dim_Dbg_MODULE) ; /* trap only, report on exit */
+
+  if(reserved){}
+//  (*jvm)->AttachCurrentThread(jvm, (void *)&env, NULL);
+  (*env)->DeleteGlobalRef(env, NativeDataMemory);
+  (*env)->DeleteGlobalRef(env, SendSynchronizer);
+  (*env)->DeleteGlobalRef(env, ReceiveSynchronizer);
+  (*env)->DeleteGlobalRef(env, CompletionHandler);
+  (*env)->DeleteGlobalRef(env, NativeDataDecoder);
+  (*env)->DeleteGlobalRef(env, NativeDataEncoder);
+  (*env)->DeleteGlobalRef(env, ourNativeMemoryObject);
+
+  (*env)->DeleteGlobalRef(env, NativeDimTimer);
+  (*env)->DeleteGlobalRef(env, NativeDimSrvError);
+  (*env)->DeleteGlobalRef(env, ourNativeDimSrvError);
+  (*env)->DeleteGlobalRef(env, NativeDimCltError);
+  (*env)->DeleteGlobalRef(env, ourNativeDimCltError);
+  (*env)->DeleteGlobalRef(env, NativeDimExit);
+  (*env)->DeleteGlobalRef(env, ourNativeDimExit);
+
+  DBGx(dim_Dbg_MODULE) printf("DimJNI: DLL unloaded\n");
+  return(0);
+}
+
+
+
+
+/* implementation of dim_native.h =============================================================== */
+
+/*
+ * Class:     dim_Native
+ * Method:    init
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Native_init
+  (JNIEnv* env, jclass nativeClass)
+{
+  JavaVM* jvm;
+
+  if(nativeClass){}
+  if(theJavaVM!=NULL) return JNI_VERSION;
+  (*env)->GetJavaVM(env, &jvm);
+  return JNI_OnLoad(jvm, 0);
+}
+
+/*
+ * Class:     dim_Native
+ * Method:    stop
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Native_stop
+  (JNIEnv* env, jclass nativeClass)
+{
+
+  if(nativeClass){}
+  return JNI_OnUnLoad(env, 0);
+}
+
+
+/* implementation of dim_dbg.h ================================================================== */
+
+/*
+ * Class:     dim_Dbg
+ * Method:    setMask
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_Dbg_setMask
+  (JNIEnv *env, jclass nativeClass, jint dbg_mask)
+{
+	if(env){}
+	if(nativeClass){}
+  if(dim_Dbg_TRANSACTIONS & (DBG_mask|dbg_mask))
+    printf("DimJNI: debug mask changed from %08x to %08x\n", DBG_mask, dbg_mask);
+  DBG_mask = dbg_mask;
+}
+
+/*
+ * Class:     dim_Dbg
+ * Method:    getMask
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Dbg_getMask
+  (JNIEnv *env, jclass nativeClass)
+{
+	if(env){}
+	if(nativeClass){}
+  return DBG_mask;
+}
+
+
+
+
+/* implementation of dim_client.h =============================================================== */
+
+
+/* the send callback */
+
+void send_callback(jobject* _theCompletionHandler, int* _status)
+{
+  jobject theCompletionHandler = *_theCompletionHandler;
+  JNIEnv* env;
+  int doit;
+
+  DBGe(dim_Dbg_SEND_CALLBACK) printf("DimJNI: client SEND_CALLBACK status %08lx:%d\n", (dim_long)_status, *_status);
+
+  doit = dim_jni_attachThread(&env);
+//  (*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+  (*env)->CallIntMethod(env, theCompletionHandler, CompletionHandler_setCompletionCode, *_status);
+  (*env)->DeleteGlobalRef(env, theCompletionHandler);
+
+  if(doit)
+	  (*theJavaVM)->DetachCurrentThread(theJavaVM);
+  return;
+}
+
+/* for debuging messages only, so I do not care about reentrance (which could potentially happen) */
+static char* send_data_format;
+
+/* general send service */
+jint send_data
+  (JNIEnv *env, jstring name, jobject theCompletionHandler, jint mode, jint timeout, void* data_address, int data_size)
+{
+  jint    ret;
+  int     stamped = 0;
+  void    (*callback_funct)();
+  jobject callback_param;
+  jobject theSendSynchronizer;
+  
+  extern int request_command(char *, void *, int , void (*)(), dim_long, int);
+
+  const char* cmnd = (*env)->GetStringUTFChars(env, name, 0);
+
+//  DBGe(dim_Dbg_SEND_NATIVE) ; /* trap only, report later */
+
+  if(timeout){}
+  if(mode & dim_Native_F_STAMPED) stamped = 1;
+  if(mode & dim_Native_F_WAIT)  // note: dim_Native_F_WAIT defined as -2147483648L //(0x80000000)
+  {
+    // Create a SendSynchronizer object using theCompletionHandler
+    theSendSynchronizer = (*env)->NewObject(env, SendSynchronizer, SendSynchronizer_new, theCompletionHandler);
+    callback_param = (*env)->NewGlobalRef(env, theSendSynchronizer);
+    callback_funct = &send_callback;
+  }
+  else if(theCompletionHandler)
+  {
+    // create a global reference of the CompletionHandler if present
+    callback_param = (*env)->NewGlobalRef(env, theCompletionHandler);
+    callback_funct = &send_callback;
+  }
+  else
+  {
+    callback_param = 0;
+    callback_funct = 0;
+  }
+
+  // Send the request
+  ret = request_command((char *)cmnd, data_address, data_size, callback_funct, (dim_long)callback_param, stamped);
+  DBGx(dim_Dbg_SEND_NATIVE) printf("DimJNI: Client.Send(%s,(%s) 0x%x) returns %d \n", cmnd, send_data_format, * (int*) data_address, ret);
+
+  // release the String
+  (*env)->ReleaseStringUTFChars(env, name, cmnd);
+
+//if the send request was not queued and there is a CompletionHandler, we call the send_callback
+  if(!ret && callback_param)
+  {
+    DBGm(dim_Dbg_SEND_NATIVE) printf("DimJNI: Native.send calls callback as bug fix.\n");
+//  TODO we do not have to call send_callback(&callback_param, &ret); when not queued? //Apparently we do not need this.
+  }
+
+  if(mode & dim_Native_F_WAIT)
+  {
+    ret=(*env)->CallIntMethod(env, theSendSynchronizer, SendSynchronizer_getCompletionCode, 0);
+    DBGx(dim_Dbg_SEND_NATIVE) printf("DimJNI:        SEND returns (after wait) %08x\n",ret);
+  }
+
+  return ret;
+}
+
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIZ)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIZ
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jboolean data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jboolean";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIC)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIC
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jchar data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jchar";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIB)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIB
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbyte data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jbyte";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIS)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIS
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jshort data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jshort";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;III)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2III
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jint data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jint";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIJ)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIJ
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlong data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jlong";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIF)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIF
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jfloat data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jfloat";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IID)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IID
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jdouble data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jdouble";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IILjava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IILjava_lang_String_2
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jstring sdata)
+{
+	jint ret;
+	const char* data = (*env)->GetStringUTFChars(env, sdata, 0);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "String";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, (void*) data, (int)strlen(data)+1);
+
+	(*env)->ReleaseStringUTFChars(env,sdata, data);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[Z)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3Z
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbooleanArray dataArray)
+{
+	jboolean*	nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetBooleanArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "boolean[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseBooleanArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[C)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3C
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jcharArray dataArray)
+{
+	jchar*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetCharArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jchar[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseCharArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[B)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3B
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbyteArray dataArray)
+{
+	jbyte*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetByteArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jbyte[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseByteArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[S)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3S
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jshortArray dataArray)
+{
+	jshort*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetShortArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jshort[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseShortArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3I
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jintArray dataArray)
+{
+	jint*	    nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetIntArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jint[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseIntArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[J)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3J
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlongArray dataArray)
+{
+	jlong*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetLongArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jlong[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseLongArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[F)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3F
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jfloatArray dataArray)
+{
+	jfloat*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetFloatArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jfloat[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseFloatArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[D)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3D
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jdoubleArray dataArray)
+{
+	jdouble*	nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetDoubleArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jdouble[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseDoubleArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIJI)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIJI
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlong nativeDataBlock, jint nativeDataSize)
+{
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "nativeDataBlock";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, (void*) nativeDataBlock, nativeDataSize);
+}
+
+
+
+/* This function is called by callback there is new data to be decoded */
+void decodeData(jobject* _theDataDecoder, void* dataAddress, int* _dataSize, int cleanup)
+{
+	jobject theDataDecoder = *_theDataDecoder;
+	int		  dataSize		   = *_dataSize;
+	JNIEnv* env;
+	int doit;
+
+  doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  if(dataAddress == NULL)
+  {
+  	(*env)->CallVoidMethod(env, theDataDecoder, NativeDataDecoder_decodeNativeData, NULL);
+  }
+  else
+  {
+    /* the decode method will further complete the Memory object and call the decodeData method of the DataDecoder object */
+    (*env)->CallVoidMethod(env, ourNativeMemoryObject, NativeDataMemory_decodeData, (jlong) dataAddress, (jint) dataSize, theDataDecoder);
+  }
+
+  /* and cleanup */
+  if(cleanup) (*env)->DeleteGlobalRef(env, theDataDecoder);
+  if(doit)
+	(*theJavaVM)->DetachCurrentThread(theJavaVM);
+
+  return;
+}
+
+
+
+/* This call back is called when there is new data for a client subscription */
+void info_service_callback(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+	DBGe(dim_Dbg_INFO_CALLBACK) printf("DimJNI: INFO_CALLBACK(data: %08lx(%08x))\n", (dim_long) dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 0);
+}
+
+
+/* This call back is called when a client once_only subscription completes (so we clean up) */
+void info_service_callback_with_cleanup(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+	DBGe(dim_Dbg_INFO_CALLBACK) printf("DimJNI: INFO_CALLBACK/ONCE_ONLY(data: %08lx(%08x))\n", (dim_long)dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 1);
+
+}
+
+/* This function is called by callback when timer fires */
+void callTimerHandler(jobject* _aDimTimer)
+{
+//	jobject aDimTimer = *_aDimTimer;
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+//printf("Got callback %08x\n", _aDimTimer);
+  	(*env)->CallVoidMethod(env, (jobject)_aDimTimer, NativeDimTimer_timerHandler, NULL);
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+ 
+  return;
+}
+
+/* This call back is called when the timer expires */
+void timer_callback(jobject* _aDimTimer)
+{
+	callTimerHandler(_aDimTimer);
+}
+
+/* This function is called by callback when Server Error detected */
+void callServerErrorHandler(int severity, int code, char *msg)
+{
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimSrvError, NativeDimSrvError_errorHandler,
+		(jint)severity, (jint)code, (jstring)(*env)->NewStringUTF(env, msg));
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This callback is called when the server gets an error*/
+void server_error_callback(int severity, int code, char *msg)
+{
+	callServerErrorHandler(severity, code, msg);
+}
+
+/* This function is called by callback when Client Error detected */
+void callClientErrorHandler(int severity, int code, char *msg)
+{
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimCltError, NativeDimCltError_errorHandler,
+		(jint)severity, (jint)code, (jstring)(*env)->NewStringUTF(env, msg));
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This callback is called when the client gets an error*/
+void client_error_callback(int severity, int code, char *msg)
+{
+	callClientErrorHandler(severity, code, msg);
+}
+
+void callServerExitHandler(int code)
+{
+//	jobject aDimTimer = *_aDimTimer;
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimExit, NativeDimExit_exitHandler,
+		(jint)code);
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This call back is called when the timer expires */
+void server_exit_callback(int *code)
+{
+	callServerExitHandler(*code);
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    infoService
+ * Signature: (Ljava/lang/String;Ldim/DataDecoder;II)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_infoService
+  (JNIEnv *env, jclass This, jstring name, jobject theNativeDataDecoder, jint mode, jint timeout)
+{
+	jint  ret;
+	int   no_link;
+	int   stamped = 0;
+	int   service_type = mode & 0x0FFF;
+  void  (*callback_function)();
+  jobject callback_param;
+  jobject theReceiveSynchronizer;
+  const char* info = (*env)->GetStringUTFChars(env, name, 0);
+  extern unsigned request_service(char *, int, int , void *, int , void (*)(),
+				    dim_long, void *, int, int);
+
+//  DBGe(dim_Dbg_INFO_SERVICE); /* trap only, we report on exit */
+
+  if(This){}
+  if(mode & dim_Native_F_STAMPED) stamped = 1;
+	if(mode & dim_Native_F_WAIT)
+  {
+    // Create a ReceiveSynchronizer object using the dataDecoder
+    theReceiveSynchronizer = (*env)->NewObject(env, ReceiveSynchronizer, ReceiveSynchronizer_new, theNativeDataDecoder);
+    callback_param = (*env)->NewGlobalRef(env, theReceiveSynchronizer);
+  }
+  else
+  {
+    callback_param = (*env)->NewGlobalRef(env, theNativeDataDecoder);
+  }
+
+  if(service_type == dim_Native_ONCE_ONLY) 
+	  callback_function = &info_service_callback_with_cleanup;
+  else                                     
+	  callback_function = &info_service_callback; //TODO who should do the cleanup?
+
+
+  ret = (jint)request_service((char *)info, service_type, timeout, 0, 0, callback_function, (dim_long)callback_param, &no_link, 0, stamped);
+  DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI: client infoService(%s, DataDecoder@0x%08lx, mode=%d, timeout=%d ) returns %d\n", info, (dim_long)theNativeDataDecoder, mode, timeout, ret);
+  (*env)->ReleaseStringUTFChars(env, name, info);
+
+  if(mode & dim_Native_F_WAIT)
+  {
+    /* we synchronize by calling the getCompletionCode method of the ReceiveSynchronizer */ 
+    (*env)->CallIntMethod(env, theReceiveSynchronizer, ReceiveSynchronizer_getCompletionCode, 0);
+    DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI:         infoService(%s) completed with %08x\n",info, ret);
+  }
+
+  return ret;
+}
+
+/*
+ * Class:     dim_DimTimer
+ * Method:    start
+ * Signature: (Ldim/DimTimer;I)V
+ */
+JNIEXPORT jlong JNICALL Java_dim_DimTimer_start
+  (JNIEnv *env, jclass This, jobject aDimTimer, jint secs)
+{
+   jobject callback_param;
+   void  (*callback_function)();
+ 
+  if(This){}
+  callback_param = (*env)->NewGlobalRef(env, aDimTimer);
+  callback_function = &timer_callback; //TODO who should do the cleanup?
+
+//printf("Starting timer %d, %08x %08x\n", secs, (long)callback_param, aDimTimer);
+  dtq_start_timer(secs, callback_function, callback_param); 
+
+  return (jlong)callback_param;
+}
+
+/*
+ * Class:     dim_DimTimer
+ * Method:    stop
+ * Signature: (Ldim/DimTimer)V
+ */
+JNIEXPORT void JNICALL Java_dim_DimTimer_stop
+//  (JNIEnv *env, jclass This, jobject aDimTimer)
+  (JNIEnv *env, jclass This, jlong aDimTimer)
+{
+   jobject callback_param;
+   int ret;
+ 
+   if(env){}
+   if(This){}
+//  callback_param = (*env)->NewGlobalRef(env, aDimTimer);
+   callback_param = (jobject) aDimTimer;
+
+//printf("Stopping timer %08x %08X\n", callback_param, aDimTimer);
+  ret = dtq_stop_timer((dim_long)callback_param);
+ //printf("ret = %d\n", ret);
+
+  return;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    releaseService
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_releaseService
+  (JNIEnv* env, jclass This, jint sid)
+{
+
+  DIC_SERVICE *servp;
+
+//  DBGe(dim_Dbg_INFO_SERVICE) ; /* Trap only, report later */
+
+  if(This){}
+  servp = (DIC_SERVICE *)id_get_ptr(sid, SRC_DIC);
+
+/*
+Hans Essel, 3.12.08
+Without deleting the global reference, the Java GC could not free the object!
+Any DimInfo object would stay forever. This is a memory leak.
+*/
+  if(servp != NULL)
+  {
+	  //  DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI: Client.releaseService(%d (%s))\n", sid, servp->serv_name);
+	  servp->user_routine = NULL; // make sure this is not called anymore
+	  (*env)->DeleteGlobalRef(env, (jobject) servp->tag);
+	  servp->tag = 0;
+  }
+
+  dic_release_service(sid);
+	return;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    noPadding
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_noPadding
+  (JNIEnv* env, jclass This)
+{
+
+  if(env){}
+  if(This){}
+  dic_disable_padding();
+	return;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getFormat
+ * Signature: (I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getFormat
+  (JNIEnv* env, jclass This, jint sid)
+{
+
+  if(This){}
+	return (*env)->NewStringUTF(env, (char*)dic_get_format(sid));
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    stop
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_stop
+  (JNIEnv* env, jclass This)
+{
+	extern void dim_stop();
+
+	if(env){}
+	if(This){}
+	dim_stop();
+	return;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getQuality
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getQuality
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int ret;
+	
+	if(env){}
+	if(This){}
+	ret = dic_get_quality(sid);
+	return ret;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getTimestamp
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getTimestamp
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int mysecs, mymilli;
+  if(env){}
+  if(This){}
+	dic_get_timestamp(sid, &mysecs, &mymilli);
+	return mysecs;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getTimestampMillisecs
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getTimestampMillisecs
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int mysecs, mymilli;
+  if(env){}
+  if(This){}
+	dic_get_timestamp(sid, &mysecs, &mymilli);
+	return mymilli;
+}
+
+/* implementation of dim_server.h =============================================================== */
+
+
+/*
+ * Class:     dim_Server
+ * Method:    startServing
+ * Signature: (Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_startServing
+  (JNIEnv* env, jclass This, jstring serverName)
+{
+	const char* serverNameUTF = (*env)->GetStringUTFChars(env, serverName, 0);
+
+	if(This){}
+
+	dis_start_serving(serverNameUTF);
+
+	DBGe(dim_Dbg_SERVER) printf("DimJNI: Start serving\n");
+
+	(*env)->ReleaseStringUTFChars(env, serverName, serverNameUTF);
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    stopServing
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Server_stopServing
+  (JNIEnv* env, jclass This)
+{
+	DBGe(dim_Dbg_SERVER) printf("DimJNI: Stop serving\n");
+	if(env){}
+	if(This){}
+	dis_stop_serving();
+	return;
+}
+
+void server_getInfo_callback(jobject* _dataEncoder, void* *address, int *size)
+{
+  /* server_getInfo_callback is invoked when dim needs the data for a service.
+   * The data is obtained by calling the encodeData method of the DataEncoder
+   * interface which returns us a Memory object. Next we extract the data address
+   * and size from the returned Memory object.
+   */
+  /* Note, the DataEncoder can obtain the identity of the client by calling
+   * getClient or getClientConnID */
+
+  /* thou shall not not use volatile storage to return info to dim */
+	jobject dataEncoder = *_dataEncoder;
+	jobject theMemory;
+	JNIEnv* env;
+	int doit;
+
+//	DBGe(dim_Dbg_SERVICE_CALLBACK) ; /* no report, only trap */
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+	theMemory = (*env)->CallObjectMethod(env, dataEncoder, NativeDataEncoder_encodeNativeData);
+	if(theMemory == NULL)
+	{
+		*address  = 0;
+		*size     = 0;
+	}
+	else
+	{
+		*address  = (void*) (*env)->GetLongField(env, theMemory, NativeDataMemory_dataAddress);
+		*size     = (*env)->GetIntField(env, theMemory, NativeDataMemory_dataSize);
+//		printf("data address = %x, data size = %d\n",*address, *size);
+	}
+	DBGx(dim_Dbg_SERVICE_CALLBACK) printf("DimJNI: server_SERVICE_CALLBACK(dataEncoder=%08lx)\n        ==>    data: %08lx size %08x\n", (dim_long)dataEncoder, (dim_long) *address, *size); 
+
+	if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+
+	return;
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    getClientConnID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_getClientConnID
+  (JNIEnv* env, jclass This)
+{
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClientConnID\n");
+
+	if(env){}
+	if(This){}
+	return dis_get_conn_id();
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    getClient
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Server_getClient
+  (JNIEnv* env, jclass This)
+{
+	char name[MAX_NODE_NAME+MAX_TASK_NAME+4];
+
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClient\n");
+
+	if(This){}
+	if(dis_get_client(name)) 
+		return (*env)->NewStringUTF(env, name);
+	else					 
+		return NULL;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    getServices
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Server_getServices
+  (JNIEnv* env, jclass This)
+{
+	int id;
+
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClientServices\n");
+
+	if(This){}
+	if( (id = dis_get_conn_id()) ) 
+		return (*env)->NewStringUTF(env, dis_get_client_services(id));
+	else
+		return NULL;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServerPID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_getServerPID
+  (JNIEnv* env, jclass This)
+{
+	int pid, ret;
+
+	if(env){}
+	if(This){}
+	ret = dic_get_server_pid(&pid);
+	if(!ret)
+		return 0;
+	return pid;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServerConnID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_getServerConnID
+  (JNIEnv* env, jclass This)
+{
+	if(env){}
+	if(This){}
+	return dic_get_conn_id();
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServer
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getServer
+  (JNIEnv* env, jclass This)
+{
+	char name[MAX_NODE_NAME+MAX_TASK_NAME+4];
+
+	if(This){}
+	if(dic_get_server(name)) 
+		return (*env)->NewStringUTF(env, name);
+	else					 
+		return NULL;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServices
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getServices
+  (JNIEnv* env, jclass This)
+{
+	int id;
+
+	if(This){}
+	if( (id = dic_get_conn_id()) ) 
+		return (*env)->NewStringUTF(env, dic_get_server_services(id));
+	else
+		return NULL;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    addService
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ldim/DataEncoder;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_addService
+  (JNIEnv* env, jclass This, jstring serviceName, jstring serviceType, jobject dataEncoder)
+{
+	const char* serviceNameUTF = (*env)->GetStringUTFChars(env, serviceName, 0);
+	const char* serviceTypeUTF = (*env)->GetStringUTFChars(env, serviceType, 0);
+	jint sid;
+
+//  DBGe(dim_Dbg_ADD_SERVICE) ; /* no reporting, for trap only */
+
+	if(This){}
+ 	dataEncoder = (*env)->NewGlobalRef(env, dataEncoder);
+	sid = (jint)dis_add_service(serviceNameUTF, serviceTypeUTF, 0, 0, server_getInfo_callback, dataEncoder);
+
+	DBGx(dim_Dbg_ADD_SERVICE) printf("DimJNI: Server.addService(%s,%s, @%08lx)=%d\n",serviceNameUTF, serviceTypeUTF, (dim_long)dataEncoder, sid);
+
+	(*env)->ReleaseStringUTFChars(env, serviceName, serviceNameUTF);
+	(*env)->ReleaseStringUTFChars(env, serviceType, serviceTypeUTF);
+	return sid;
+}
+
+
+void server_cmnd_callback(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+
+	DBGe(dim_Dbg_CMND_CALLBACK) printf("DimJNI: server CMND_CALLBACK(data: %08lx(%08x))\n", (dim_long) dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 0);
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    addCommand
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ldim/DataDecoder;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_addCommand
+  (JNIEnv* env, jclass This, jstring serviceName, jstring serviceType, jobject dataDecoder)
+{
+	const char* serviceNameUTF = (*env)->GetStringUTFChars(env, serviceName, 0);
+	const char* serviceTypeUTF = (*env)->GetStringUTFChars(env, serviceType, 0);
+	jint sid;
+
+//	DBGe(dim_Dbg_ADD_CMND) ; /* trap only, repot later */
+	if(This){}
+ 	dataDecoder = (*env)->NewGlobalRef(env, dataDecoder);
+	sid = (jint)dis_add_cmnd(serviceNameUTF, serviceTypeUTF, server_cmnd_callback, dataDecoder);
+
+	DBGx(dim_Dbg_ADD_CMND) printf("DimJNI: Server.addCmnd(%s,%s, @%08lx) = %d\n",serviceNameUTF, serviceTypeUTF, (dim_long) dataDecoder, sid);
+
+	(*env)->ReleaseStringUTFChars(env, serviceName, serviceNameUTF);
+	(*env)->ReleaseStringUTFChars(env, serviceType, serviceTypeUTF);
+	return sid;
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    selectiveUpdateService
+ * Signature: (I[I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_selectiveUpdateService
+  (JNIEnv* env, jclass This, jint sid, jintArray clients)
+{
+	jint* clientArray;
+	extern void do_update_service(unsigned, int *);
+
+	if(This){}
+	if(clients==NULL) clientArray = NULL;
+	else			  clientArray = (*env)->GetIntArrayElements(env,clients,0);
+
+	DBGe(dim_Dbg_UPDATE_SERVICE) printf("DimJNI: Server.updateService %d\n", sid);
+	do_update_service((unsigned int)sid, (int *)clientArray);
+
+	if(clientArray!=NULL) (*env)->ReleaseIntArrayElements(env,clients,clientArray,JNI_ABORT);
+
+
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    removeService
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_removeService
+  (JNIEnv* env, jclass This, jint sid)
+{
+	DBGe(dim_Dbg_RELEASE_SERVICE) printf("DimJNI: Server.removedService %d\n", sid);
+	if(env){}
+	if(This){}
+	dis_remove_service(sid);
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    noPadding
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Server_noPadding
+  (JNIEnv* env, jclass This)
+{
+
+  if(env){}
+  if(This){}
+  dis_disable_padding();
+	return;
+}
+
+/*
+ * Class:     dim_DimErrorHandler
+ * Method:    addSrvErrorHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimErrorHandler_addSrvErrorHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &server_error_callback;
+
+	dis_add_error_handler( callback_function );
+
+  return;
+}
+
+/*
+ * Class:     dim_DimErrorHandler
+ * Method:    addCltErrorHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimErrorHandler_addCltErrorHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &client_error_callback;
+ 
+	dic_add_error_handler( callback_function ); 
+
+  return;
+}
+
+/*
+ * Class:     dim_DimExitHandler
+ * Method:    addExitHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimExitHandler_addExitHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &server_exit_callback;
+
+	dis_add_exit_handler( callback_function ); 
+
+  return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    disableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_disableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	DIM_LOCK
+	if(env){}
+	if(This){}
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    enableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_enableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	DIM_UNLOCK
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    disableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_disableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	DIM_LOCK
+	if(env){}
+	if(This){}
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    enableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_enableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	DIM_UNLOCK
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    setDnsNode
+ * Signature: (Ljava/lang/String)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_setDnsNode
+  (JNIEnv* env, jclass This, jstring nodes)
+{
+	const char* nodesUTF = (*env)->GetStringUTFChars(env, nodes, 0);
+	
+	if(env){}
+	if(This){}
+	dis_set_dns_node(nodesUTF);
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    setDnsPort
+ * Signature: (I)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_setDnsPort
+  (JNIEnv* env, jclass This, jint port)
+{
+	if(env){}
+	if(This){}
+	dis_set_dns_port(port);
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    setDnsNode
+ * Signature: (Ljava/lang/String)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_setDnsNode
+  (JNIEnv* env, jclass This, jstring nodes)
+{
+	const char* nodesUTF = (*env)->GetStringUTFChars(env, nodes, 0);
+	
+	if(env){}
+	if(This){}
+	dic_set_dns_node(nodesUTF);
+	dic_close_dns();
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    setDnsPort
+ * Signature: (I)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_setDnsPort
+  (JNIEnv* env, jclass This, jint port)
+{
+	if(env){}
+	if(This){}
+	dic_set_dns_port(port);
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    getDnsNode
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_DimServer_getDnsNode
+  (JNIEnv* env, jclass This)
+{
+	char nodes[255];
+	
+	if(This){}
+	dis_get_dns_node(nodes);
+	return (*env)->NewStringUTF(env, (char*)nodes);
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    getDnsNode
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_DimClient_getDnsNode
+  (JNIEnv* env, jclass This)
+{
+	char nodes[255];
+	
+	if(This){}
+	dic_get_dns_node(nodes);
+	return (*env)->NewStringUTF(env, (char*)nodes);
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    getDnsPort
+ * Signature: ()I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimServer_getDnsPort
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	return dis_get_dns_port();
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    getDnsPort
+ * Signature: ()I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimClient_getDnsPort
+  (JNIEnv* env, jclass This)
+{
+
+	if(env){}
+	if(This){}
+	return dic_get_dns_port();
+}
+
+/*
+ * Class:     dim_DimService
+ * Method:    setQuality
+ * Signature: (II)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimService_setQuality
+  (JNIEnv* env, jclass This, jint sid, jint qual)
+{
+	
+	if(env){}
+	if(This){}
+	dis_set_quality(sid, qual);
+	return;
+}
+
+
+/*
+ * Class:     dim_DimService
+ * Method:    setTimestamp
+ * Signature: (III)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimService_setTimestamp
+  (JNIEnv* env, jclass This, jint sid, jint secs, jint millisecs)
+{
+
+	if(env){}
+	if(This){}
+	dis_set_timestamp(sid, secs, millisecs);
+	return;
+}
+
+/* implementation of dim_memory,h =============================================================== */
+
+/*
+ * Class:     dim_Memory
+ * Method:    dumpInternalData
+ * Signature: (III)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_dumpInternalData
+  (JNIEnv *env, jclass nativeClass, jlong internalDataAddress, jint internalDataSize, jint dumpOptions)
+{
+  {
+    int* data = (int*) internalDataAddress;
+    int leng = (int)internalDataSize/(int)sizeof(int);
+    int  i;
+
+	if(env){}
+	if(dumpOptions){}
+	if(nativeClass){}
+    for (i=0;i<leng;i++)
+    {
+      if((i%8)==0) printf("%04x:",i);
+      printf(" %08x", *(data++));
+      if((i%8)==7) printf("\n");
+    }
+    if((leng%8)!=0) printf("\n");
+  }
+  return;
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    getBoolean
+ * Signature: (I)Z
+ */
+JNIEXPORT jboolean JNICALL Java_dim_Memory_getBoolean
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getBoolean\n");
+	return *(jboolean*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getChar
+ * Signature: (I)C
+ */
+JNIEXPORT jchar JNICALL Java_dim_Memory_getChar
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getChar\n");
+	return *(jchar*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getByte
+ * Signature: (I)B
+ */
+JNIEXPORT jbyte JNICALL Java_dim_Memory_getByte
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getByte\n");
+	return *(jbyte*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getShort
+ * Signature: (I)S
+ */
+JNIEXPORT jshort JNICALL Java_dim_Memory_getShort
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getShort\n");
+	return *(jshort*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getInt
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Memory_getInt
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getInt\n");
+	return *(jint*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getLong
+ * Signature: (I)J
+ */
+JNIEXPORT jlong JNICALL Java_dim_Memory_getLong
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getLong\n");
+	return *(jlong*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getFloat
+ * Signature: (I)F
+ */
+JNIEXPORT jfloat JNICALL Java_dim_Memory_getFloat
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getFloat\n");
+	return *(jfloat*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getDouble
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL Java_dim_Memory_getDouble
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getDouble\n");
+	return *(jdouble*)nativeDataAddress;
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    getString
+ * Signature: (I,I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Memory_getString
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jint maxSize)
+{
+	if(env){}
+	if(nativeClass){}
+	if(maxSize){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getString\n");
+	return (*env)->NewStringUTF(env, (char*)nativeDataAddress);
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoBooleanArray
+ * Signature: (I[ZII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoBooleanArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbooleanArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoBooleanArray\n");
+	(*env)->SetBooleanArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoCharArray
+ * Signature: (I[CII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoCharArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jcharArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoCharArray\n");
+	(*env)->SetCharArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoByteArray
+ * Signature: (I[BII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoByteArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyteArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoByteArray\n");
+	(*env)->SetByteArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoShortArray
+ * Signature: (I[SII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoShortArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshortArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoShortArray\n");
+	(*env)->SetShortArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoIntArray
+ * Signature: (I[III)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoIntArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jintArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoIntArray\n");
+	(*env)->SetIntArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoLongArray
+ * Signature: (I[JII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoLongArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlongArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoLongArray\n");
+	(*env)->SetLongArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoFloatArray
+ * Signature: (I[FII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoFloatArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloatArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoFloatArray\n");
+	(*env)->SetFloatArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoDoubleArray
+ * Signature: (I[DII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoDoubleArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdoubleArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoDoubleArray\n");
+	(*env)->SetDoubleArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+
+
+
+/* implementation of dim_mutablememory.h ======================================================== */
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    allocateNativeDataBlock
+ * Signature: (I)I
+ */
+JNIEXPORT jlong JNICALL Java_dim_MutableMemory_allocateNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jint size)
+{
+  jlong address;
+	if(env){}
+	if(nativeClass){}
+//	DBGe(dim_Dbg_MEMORY_ALLOCATE) ; /* report only */
+  address = (jlong) malloc((size_t)size);
+	DBGx(dim_Dbg_MEMORY_ALLOCATE) printf("DimJNI: MutableMemory.allocateNativeDataBlock of %d bytes at 0x%08lx\n", size, address);
+  return address;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    releaseNativeDataBlock
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_releaseNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jlong desc)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY_ALLOCATE) printf("DimJNI: MutableMemory.releaseNativeDataBlock 0x%08lx\n", desc);
+ //printf("free %08X\n", desc);
+ 	free((void*)desc);
+	return;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setBoolean
+ * Signature: (IZ)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setBoolean
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jboolean data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setBoolean(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jboolean*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setChar
+ * Signature: (IC)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setChar
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jchar data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setChar(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jchar*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setByte
+ * Signature: (IB)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setByte
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyte data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setByte(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jbyte*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setShort
+ * Signature: (IS)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setShort
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshort data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setShort(0x%08lx, %04x)\n", nativeDataAddress, data);
+	*(jshort*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setInt
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setInt
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jint data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setInt(0x%08lx, %0x)\n", nativeDataAddress, data);
+	*(jint*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setLong
+ * Signature: (IJ)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setLong
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlong data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setLong(0x%08lx, %08x)\n", nativeDataAddress, (unsigned)data);
+	*(jlong*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setFloat
+ * Signature: (IF)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setFloat
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloat data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setFloat(0x%08lx, %f)\n", nativeDataAddress, data);
+	*(jfloat*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setDouble
+ * Signature: (ID)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setDouble
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdouble data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setDouble(0x%08lx, %08x)\n", nativeDataAddress, (unsigned)data);
+	*(jdouble*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setString
+ * Signature: (ILjava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setString
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jstring data)
+{
+	const char* charData = (*env)->GetStringUTFChars(env, data, 0);
+
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setString(0x%08lx, %s)\n", nativeDataAddress, charData);
+
+	if(nativeClass){}
+	strcpy((char*)nativeDataAddress, charData);
+	(*env)->ReleaseStringUTFChars(env, data, charData);
+}
+
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromBooleanArray
+ * Signature: (I[ZII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromBooleanArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbooleanArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromBooleanArray\n");
+	(*env)->GetBooleanArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromCharArray
+ * Signature: (I[CII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromCharArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jcharArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromCharArray\n");
+	(*env)->GetCharArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromByteArray
+ * Signature: (I[BII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromByteArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyteArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromByteArray\n");
+	(*env)->GetByteArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromShortArray
+ * Signature: (I[SII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromShortArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshortArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromShortArray\n");
+	(*env)->GetShortArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromIntArray
+ * Signature: (I[III)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromIntArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jintArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromIntArray\n");
+	(*env)->GetIntArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromLongArray
+ * Signature: (I[JII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromLongArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlongArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromLongArray\n");
+	(*env)->GetLongArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromFloatArray
+ * Signature: (I[FII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromFloatArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloatArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromFloatArray\n");
+	(*env)->GetFloatArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromDoubleArray
+ * Signature: (I[DII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromDoubleArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdoubleArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromDoubleArray\n");
+	(*env)->GetDoubleArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyNativeDataBlock
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jlong destinationDataAddress, jlong sourceDataAddress, jint length)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyNativeDataBlock\n");
+	memcpy((void *)destinationDataAddress, (void *)sourceDataAddress, (size_t)length);
+	return ;
+}
+
+
+
+
+/* implementation of dim_objectdescriptor.h ===================================================== */
+
+/* fancy packing methods */
+
+typedef enum {f_skip,
+              f_boolean, f_byte, f_char, f_short, f_int, f_long, f_float, f_double, f_string, f_object,
+              a_boolean, a_byte, a_char, a_short, a_int, a_long, a_float, a_double,	a_string, a_object,
+              c_boolean, c_byte, c_char, c_short, c_int, c_long, c_float, c_double, c_string, c_object
+			} FieldType;
+typedef struct objectDescriptorEntry_struct objectDescriptorEntry_type;
+struct objectDescriptorEntry_struct
+{
+	FieldType type;
+	int       length;
+	int       offset;
+	jfieldID  fieldID;
+	jarray    array;
+	int       arrayOffset;
+};
+
+typedef struct objectDescriptor_struct objectDescriptor_type;
+struct objectDescriptor_struct
+{
+	jclass objectClass;
+	int	entries;
+	int	maxEntries;
+	objectDescriptorEntry_type* entry;
+};
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    newObjectDescriptor
+ * Signature: (Ljava/lang/Class;I)I
+ */
+JNIEXPORT jlong JNICALL Java_dim_ObjectDescriptor_newObjectDescriptor
+  (JNIEnv* env, jclass nativeClass, jclass objectClass, jint maxEntries)
+{
+	objectDescriptor_type* descriptor;
+
+//  DBGe(dim_Dbg_DESCRIPTORS) ; /* trap only, report on exit */
+  // todo put object descriptor and entry array in the same malloc (for dump purposes)
+//printf("malloc descriptor\n");
+	if(env){}
+	if(nativeClass){}
+	if(maxEntries==0) maxEntries = 10;
+	descriptor = (objectDescriptor_type*) malloc(sizeof(objectDescriptor_type));
+	descriptor->entry = (objectDescriptorEntry_type*) malloc((size_t)(maxEntries * (jint)sizeof(objectDescriptorEntry_type)));
+	descriptor->objectClass = (*env)->NewGlobalRef(env, objectClass);
+	descriptor->entries = 0;
+	descriptor->maxEntries = maxEntries;
+
+	DBGx(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.newObjectDescriptor %08lx\n", (dim_long)descriptor);
+	return (dim_long) descriptor;
+}
+
+objectDescriptorEntry_type* getNextDescriptorEntry(objectDescriptor_type* descriptor)
+{
+	if(descriptor->entries == descriptor->maxEntries)
+	{
+		objectDescriptorEntry_type* entry = realloc(descriptor->entry, (size_t)(descriptor->maxEntries+10));
+//printf("realloc descriptor\n");
+		if(entry==NULL) return NULL;
+
+		descriptor->entry = entry;
+		descriptor->maxEntries = descriptor->maxEntries+10;
+	}
+	return descriptor->entry + descriptor->entries++;
+}
+
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    addFieldToObjectDescriptor
+ * Signature: (ILjava/lang/String;Ljava/lang/String;I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_ObjectDescriptor_addFieldToObjectDescriptor
+  (JNIEnv* env, jclass nativeClass, jlong desc, jstring fieldName, jstring fieldType, jint offset)
+{
+//	FieldType field_type = f_int;
+	objectDescriptorEntry_type* entry = getNextDescriptorEntry((objectDescriptor_type*) desc);
+	const char*                 name  = (*env)->GetStringUTFChars(env, fieldName, 0);
+	const char*                 type  = (*env)->GetStringUTFChars(env, fieldType, 0);
+	jfieldID fieldID  = (*env)->GetFieldID(env, ((objectDescriptor_type*) desc)->objectClass, name, type);
+
+	// TODO throw an error if there is no such FieldID
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.addFieldToObjectDescriptor %08lx Field %s Type %s\n", (dim_long) desc, name, type);
+	// TODO: if(entry==NULL) throw out-of-memory exception, set length to 0
+
+	// TODO: if(fieldType == "I") field_type = f_int; etc
+
+	if(nativeClass){}
+	entry->type         =f_skip;
+	entry->length       =0;
+	entry->offset       =offset;
+	entry->fieldID      =fieldID;
+	entry->array        =0;
+	entry->arrayOffset  =0;
+
+	switch (*type)
+	{
+	case 'Z':
+	{
+		entry->type	  =f_boolean;
+		entry->length =sizeof(jboolean);
+		break;
+	}
+	case 'B':
+	{
+		entry->type	  =f_byte;
+		entry->length =sizeof(jbyte);
+		break;
+	}
+
+	case 'C':
+	{
+		entry->type	  =f_char;
+		entry->length =sizeof(jchar);
+		break;
+	}
+
+	case 'S':
+	{
+		entry->type	  =f_short;
+		entry->length =sizeof(jshort);
+		break;
+	}
+
+	case 'I':
+	{
+		entry->type	  =f_int;
+		entry->length =sizeof(jint);
+		break;
+	}
+
+	case 'J':
+	{
+		entry->type	  =f_long;
+		entry->length =sizeof(jlong);
+		break;
+	}
+
+	case 'F':
+	{
+		entry->type	  =f_float;
+		entry->length =sizeof(jfloat);
+		break;
+	}
+
+	case 'D':
+	{
+		entry->type	  =f_double;
+		entry->length =sizeof(jdouble);
+		break;
+	}
+
+	//case '[':
+	//{
+	//	// TODO deal with array types
+	//}
+	default :
+	{
+		printf("DimJNI: addFieldToObjectDescriptor - type %s not yet supported. (field %s)\n", name, type);
+	}
+	}
+
+
+	(*env)->ReleaseStringUTFChars(env, fieldName, name);
+	(*env)->ReleaseStringUTFChars(env, fieldType, type);
+	return entry->length;
+}
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    deleteObjectDescriptor
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_deleteObjectDescriptor
+   (JNIEnv* env, jclass nativeClass, jlong desc)
+{
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+ 
+	if(nativeClass){}
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.deleteObjectDescriptor %08lx\n", (dim_long)desc);
+	(*env)->DeleteGlobalRef(env, descriptor->objectClass);
+//printf("free descriptor\n");
+	free(descriptor->entry);
+	free(descriptor);
+	return;
+}
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    copyIntoObject
+ * Signature: (ILjava/lang/Object;I)V
+ */
+ 
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_copyIntoObject
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jobject theObject, jlong desc)
+{
+	int i;
+	objectDescriptorEntry_type* entry;
+
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+	jclass objectClass = descriptor->objectClass;
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.copyIntoObject %08lx\n", (dim_long)desc);
+
+	if(nativeClass){}
+	// test if object can be cast to object class
+	if((*env)->IsInstanceOf(env, theObject, objectClass) != JNI_TRUE)
+	{
+		// throw exception
+		jclass exceptionClass = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
+		(*env)->ThrowNew(env, exceptionClass, " (Sorry...)");
+		return;
+	}
+
+	// loop over descriptor entries
+	entry = descriptor->entry;
+	for (i=0; i<descriptor->entries; i++)
+	{
+		switch (entry->type)
+		{
+		case f_boolean:
+			(*env)->SetBooleanField(env, theObject, entry->fieldID, *(jboolean*) (nativeDataAddress+entry->offset));
+			break;
+		case f_byte:
+			(*env)->SetByteField(   env, theObject, entry->fieldID, *(jbyte*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_char:
+			(*env)->SetCharField(   env, theObject, entry->fieldID, *(jchar*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_short:
+			(*env)->SetShortField(  env, theObject, entry->fieldID, *(jshort*)   (nativeDataAddress+entry->offset));
+			break;
+		case f_int:
+			(*env)->SetIntField(    env, theObject, entry->fieldID, *(jint*)     (nativeDataAddress+entry->offset));
+			break;
+		case f_long:
+			(*env)->SetLongField(   env, theObject, entry->fieldID, *(jlong*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_float:
+			(*env)->SetFloatField(  env, theObject, entry->fieldID, *(jfloat*)   (nativeDataAddress+entry->offset));
+			break;
+		case f_double:
+			(*env)->SetDoubleField( env, theObject, entry->fieldID, *(jdouble*)  (nativeDataAddress+entry->offset));
+			break;
+		case a_boolean:
+			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+			break;
+		case c_boolean:
+			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+		//TODO :: complete this list, including recursive call to this function for objects
+			break;
+		default:
+			break;
+		}
+		//TODO :: ?? if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+		entry++;
+	}
+	return;
+}
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    copyFromObject
+ * Signature: (ILjava/lang/Object;I)V
+ */
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_copyFromObject
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jobject theObject, jlong desc)
+{
+	int i;
+	objectDescriptorEntry_type* entry;
+
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+	jclass objectClass = descriptor->objectClass;
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.copyFromObject %08x\n", (int)desc);
+
+	if(nativeClass){}
+	// test if object can be cast to object class
+	if((*env)->IsInstanceOf(env, theObject, objectClass) != JNI_TRUE)
+	{
+		// throw exception
+		jclass exceptionClass = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
+		(*env)->ThrowNew(env, exceptionClass, " (Sorry...)");
+		return;
+	}
+
+	// loop over descriptor entries
+	entry = descriptor->entry;
+	for (i=0; i<descriptor->entries; i++)
+	{
+		switch (entry->type)
+		{
+		case f_boolean:
+			*(jboolean*) (nativeDataAddress+entry->offset) = (*env)->GetBooleanField(env, theObject, entry->fieldID);
+			break;
+		case f_byte:
+			*(jbyte*) (nativeDataAddress+entry->offset)    = (*env)->GetByteField(env, theObject, entry->fieldID);
+			break;
+		case f_char:
+			*(jchar*) (nativeDataAddress+entry->offset)    = (*env)->GetCharField(env, theObject, entry->fieldID);
+			break;
+		case f_short:
+			*(jshort*) (nativeDataAddress+entry->offset)   = (*env)->GetShortField(env, theObject, entry->fieldID);
+			break;
+		case f_int:
+			*(jint*) (nativeDataAddress+entry->offset)     = (*env)->GetIntField(env, theObject, entry->fieldID);
+			break;
+		case f_long:
+			*(jlong*) (nativeDataAddress+entry->offset)    = (*env)->GetLongField(env, theObject, entry->fieldID);
+			break;
+		case f_float:
+			*(jfloat*) (nativeDataAddress+entry->offset)   = (*env)->GetFloatField(env, theObject, entry->fieldID);
+			break;
+		case f_double:
+			*(jdouble*) (nativeDataAddress+entry->offset)  = (*env)->GetDoubleField(env, theObject, entry->fieldID);
+			break;
+//		case a_boolean:
+//      (*env)->GetBooleanArrayRegion(env, array, 0, length, (void*) nativeDataAddress);
+//			break;
+//		case c_boolean:
+//			*(jbyte*) (nativeDataAddress+entry->offset)  = (*env)->GetField(env, theObject, entry->fieldID);
+//			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+//		//TODO :: complete this list, including recursive call to this function for objects
+//			break;
+		default:
+			break;
+		}
+		//TODO :: ?? if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+		entry++;
+	}
+	return;
+}
+
+
+#ifdef zombies
+
+
+//	jstring	  myFormat;
+//	myFormat = (*env)->NewStringUTF(env, "x");
+//	(*env)->CallVoidMethod(env, dataObject, setDimFormatMID, myFormat);		// JUST TO TRY
+
+//	jintArray dataArray;
+//	int data[10]={1,2,3,4,5,6,7,8,9,-1};
+//	dataArray = (*env)->NewIntArray(env,10);
+//	(*env)->SetIntArrayRegion(env, dataArray,0,10,data);
+//	(*env)->CallVoidMethod(env, dataObject, NativeDataDecoder_decodeNativeData,   dataArray);	// JUST TO TRY
+
+//	jclass     dataClass     = (*env)->GetObjectClass(env, dataObject);
+
+//	(*env)->CallIntMethod(env,dataObject,dimOIlengthMID);
+//	(*env)->CallNonvirtualIntMethod(env,dataObject, dataItemInterface, dimOIlengthMID);//	formatString = (jstring) (*env)->CallNonvirtualObjectMethod(env, dataObject, dataItemInterface, getDimFormatMID);
+
+	// Print the current thread ID in the Debug Window
+	// TRACE("Current Thread ID = 0x%X\n", AfxGetThread()->m_nThreadID);
+            _RPT1(_CRT_ERROR, "Invalid allocation size: %u bytes.\n", nSize);
+
+
+//	formatString = (jstring) (*env)->CallObjectMethod(env,dataObject,getDimFormatMID);
+//	format = (*env)->GetStringUTFChars(env, formatString, 0);
+//	printf("Format string in native: %s\n",format);
+//	(*env)->ReleaseStringUTFChars(env, formatString, format);
+
+  /* server_getInfo_callback is invoked when dim needs the data for a service.
+   * The data is obtained by calling the encodeData method of the DataEncoder
+   * interface which returns us a Memory object. Next we extract the data address
+   * and size from the returned Memory object.
+   *
+   * Alternative:
+   * I call the following class method: Server.sendMeTheData(theDataEncoder)
+   * This method is implemented as
+   * sendMeTheData(DataEncoder theDataEncoder)
+   * {
+   *   Memory theData = theDataEncoder.encodeData();
+   *   Server.setDataReference(Memory.dataAddress, Memory.DataSize);
+   * }
+   * The method setDataReference(int dataAddress, int dataSize) is implemented
+   * as a native method and receives directly the data which one can store in
+   * a global variable.
+   * More complicated, not convinced that it would be more efficient.
+   */
+
+
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/dim_thr.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dim_thr.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dim_thr.c	(revision 18732)
@@ -0,0 +1,929 @@
+#include <signal.h>
+#define DIMLIB
+#include "dim.h"
+
+#ifndef WIN32
+
+#ifndef NOTHREADS
+#include <pthread.h>
+#include <semaphore.h>
+#ifdef solaris
+#include <synch.h>
+#endif
+#ifdef darwin
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+pthread_t IO_thread = 0;
+pthread_t ALRM_thread = 0;
+pthread_t INIT_thread = 0;
+pthread_t MAIN_thread = 0;
+#ifndef darwin
+sem_t DIM_INIT_Sema;
+/*
+sem_t DIM_WAIT_Sema;
+*/
+#else
+sem_t *DIM_INIT_Semap;
+/*
+sem_t *DIM_WAIT_Semap;
+*/
+#endif
+int INIT_count = 0;
+/*
+int WAIT_count = 0;
+*/
+int DIM_THR_init_done = 0;
+
+void *dim_tcpip_thread(void *tag)
+{
+	extern int dim_tcpip_init();
+	extern void tcpip_task();
+	/*	
+	int prio;
+		
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+10);
+	*/
+	if(tag){}
+	IO_thread = pthread_self();
+
+	dim_tcpip_init(1);
+	if(INIT_thread)
+	{
+#ifndef darwin
+		sem_post(&DIM_INIT_Sema);
+#else
+		sem_post(DIM_INIT_Semap);
+#endif
+	}
+	while(1)
+    {
+		tcpip_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void *dim_dtq_thread(void *tag)
+{
+	extern int dim_dtq_init();
+	extern int dtq_task();
+	/*
+	int prio;
+
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+5);
+	*/
+	if(tag){}
+	ALRM_thread = pthread_self();
+
+	dim_dtq_init(1);
+	if(INIT_thread)
+	{
+#ifndef darwin
+		sem_post(&DIM_INIT_Sema);
+#else
+		sem_post(DIM_INIT_Semap);
+#endif
+	}
+	while(1)
+	{
+		dtq_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void dim_init()
+{
+	pthread_t t_id;
+	void ignore_sigpipe();
+	extern int dna_init();
+/*
+#ifdef LYNXOS
+*/
+    pthread_attr_t attr;
+/*
+#endif
+*/
+    if(DIM_Threads_OFF)
+    {
+		dim_no_threads();
+		return;
+    }
+	if(!DIM_THR_init_done)
+	{
+	  /*
+		int prio;
+	  */
+		DIM_THR_init_done = 1;
+		dna_init();
+		/*
+		thr_getprio(thr_self(),&prio);
+		thr_setprio(thr_self(),prio+3);
+		*/
+		INIT_thread = pthread_self();
+		MAIN_thread = INIT_thread;
+		
+#ifndef darwin 	
+		sem_init(&DIM_INIT_Sema, 0, (unsigned int)INIT_count);
+		/*
+		sem_init(&DIM_WAIT_Sema, 0, WAIT_count);
+		*/
+#else
+		DIM_INIT_Semap = sem_open("/Dim_INIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, INIT_count);
+		/*
+		DIM_WAIT_Semap = sem_open("/Dim_WAIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, WAIT_count);
+		*/
+#endif
+		
+		ignore_sigpipe();
+
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_attr_create(&attr);
+		pthread_create(&t_id, attr, dim_dtq_thread, 0);
+#else
+/*
+		pthread_create(&t_id, NULL, dim_dtq_thread, 0);
+*/
+		pthread_attr_init(&attr);
+		pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+		pthread_create(&t_id, &attr, dim_dtq_thread, 0);
+#endif
+#ifndef darwin
+		sem_wait(&DIM_INIT_Sema);
+#else
+		sem_wait(DIM_INIT_Semap);
+#endif
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_create(&t_id, attr, dim_tcpip_thread, 0);
+#else
+		pthread_create(&t_id, &attr, dim_tcpip_thread, 0);
+#endif
+#ifndef darwin
+		sem_wait(&DIM_INIT_Sema);
+#else
+		sem_wait(DIM_INIT_Semap);
+#endif
+		INIT_thread = 0;
+	}
+}
+
+void dim_stop()
+{
+	void dim_tcpip_stop(), dim_dtq_stop();
+/*
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+*/
+	if(IO_thread)
+		pthread_cancel(IO_thread);
+	if(ALRM_thread)
+		pthread_cancel(ALRM_thread);
+	if(IO_thread) 
+		pthread_join(IO_thread,0);
+	if(ALRM_thread) 
+		pthread_join(ALRM_thread,0);
+#ifndef darwin 		
+	sem_destroy(&DIM_INIT_Sema);
+	/*
+	sem_destroy(&DIM_WAIT_Sema);
+	*/
+#else
+	sem_unlink("/Dim_INIT_Sem");
+	/*
+	sem_unlink("/Dim_WAIT_Sem");
+	*/
+	sem_close(DIM_INIT_Semap);
+	/*
+	sem_close(DIM_WAIT_Semap);
+	*/
+#endif
+	dim_tcpip_stop();
+	dim_dtq_stop();	
+	IO_thread = 0;
+	ALRM_thread = 0;
+	DIM_THR_init_done = 0;
+}
+
+dim_long dim_start_thread(void *(*thread_ast)(void *), dim_long tag)
+{
+	pthread_t t_id;
+    pthread_attr_t attr;
+	
+#if defined (LYNXOS) && !defined (__Lynx__)
+	pthread_attr_create(&attr);
+	pthread_create(&t_id, attr, (void *)thread_ast, (void *)tag);
+#else
+	pthread_attr_init(&attr);
+	pthread_create(&t_id, &attr, thread_ast, (void *)tag);
+#endif
+	return((dim_long)t_id);
+}	
+
+int dim_stop_thread(dim_long t_id)
+{
+	int ret;
+	ret = pthread_cancel((pthread_t)t_id);
+	dim_print_date_time();
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+#ifdef __linux__
+	int ret, prio, p;
+	struct sched_param param;
+
+	if(pclass == 0)
+	{
+		pclass = SCHED_OTHER;
+	}
+	else if(pclass == 1)
+	{
+		pclass = SCHED_FIFO;
+	}
+	else if(pclass == 2)
+	{
+		pclass = SCHED_RR;
+	}
+	prio = sched_get_priority_min(pclass);
+	ret = pthread_getschedparam(MAIN_thread, &p, &param);
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(MAIN_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(IO_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(IO_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(ALRM_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(ALRM_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+#ifdef __linux__
+	int ret;
+	struct sched_param param;
+
+	ret = pthread_getschedparam(MAIN_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+#ifdef __linux__
+	pthread_t id = MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	param.sched_priority = prio;
+	ret = pthread_setschedparam(id, pclass, &param);
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+#ifdef __linux__
+	pthread_t id=MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	*prio = param.sched_priority;
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+void ignore_sigpipe()
+{
+
+  struct sigaction sig_info;
+  sigset_t set;
+  void pipe_sig_handler();
+	    
+  if( sigaction(SIGPIPE, 0, &sig_info) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+  if(sig_info.sa_handler)
+  {
+/*
+	printf("DIM ignore_sigpipe() - Handler already defined %08X\n", sig_info.sa_handler);
+*/
+    return;
+  }
+  sigemptyset(&set);
+  sig_info.sa_handler = pipe_sig_handler;
+  sig_info.sa_mask = set;
+#ifndef LYNXOS 
+  sig_info.sa_flags = SA_RESTART;
+#else
+  sig_info.sa_flags = 0;
+#endif
+
+  if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+}
+
+void pipe_sig_handler( int num )
+{
+	if(num){} 
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/  
+}
+
+void dim_init_threads()
+{
+    dim_init();
+}
+
+void dim_stop_threads()
+{
+	dim_stop();
+}
+
+int dim_wait(void)
+{
+	pthread_t id;
+	
+	id = pthread_self();
+
+	if((id == ALRM_thread) || (id == IO_thread))
+	  {
+		return(-1);
+	  }
+	/*
+#ifndef darwin
+	sem_wait(&DIM_WAIT_Sema);
+#else
+	sem_wait(DIM_WAIT_Semap);
+#endif
+	*/
+	dim_wait_cond();
+	return(-1);
+}
+
+/*
+static void show_ast()
+{
+sigset_t oset;
+
+	sigprocmask(SIG_SETMASK,0,&oset);
+	printf("---THREAD id = %d, mask = %x %x\n",
+       pthread_self(), oset.__sigbits[1], oset.__sigbits[0]);
+}
+*/
+
+pthread_t Dim_thr_locker = 0;
+int Dim_thr_counter = 0;
+#ifdef LYNXOS
+pthread_mutex_t Global_DIM_mutex;
+pthread_mutex_t Global_cond_mutex;
+pthread_cond_t Global_cond;
+#else
+pthread_mutex_t Global_DIM_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t Global_cond_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t Global_cond = PTHREAD_COND_INITIALIZER;
+#endif
+int Global_cond_counter = 0;
+int Global_cond_waiters = 0;
+
+void dim_lock()
+{
+	/*printf("Locking %d ", pthread_self());*/
+    if(Dim_thr_locker != pthread_self())
+    {
+/*
+#ifdef __linux__
+		pthread_testcancel();
+#endif
+*/
+		pthread_mutex_lock(&Global_DIM_mutex);
+		Dim_thr_locker=pthread_self();
+		/*printf(": Locked ");*/
+	}
+    /*printf("Counter = %d\n",Dim_thr_counter);*/
+    Dim_thr_counter++;
+}
+void dim_unlock()	
+{
+	/*printf("Un-Locking %d ", pthread_self());*/
+    Dim_thr_counter--;
+    /*printf("Counter = %d ",Dim_thr_counter);*/
+    if(!Dim_thr_counter)
+    {
+		Dim_thr_locker=0;
+		pthread_mutex_unlock(&Global_DIM_mutex);
+		/*printf(": Un-Locked ");*/
+	}
+	/*     printf("\n");*/
+}
+
+void dim_wait_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  Global_cond_waiters++;
+  if(!Global_cond_counter)
+  {
+	pthread_cond_wait(&Global_cond, &Global_cond_mutex);
+  }
+  Global_cond_waiters--;
+  if(!Global_cond_waiters)
+	  Global_cond_counter--;
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+void dim_signal_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  if(!Global_cond_waiters)
+  {
+	Global_cond_counter = 1;
+  }
+  else
+  {
+	Global_cond_counter++;
+	pthread_cond_broadcast(&Global_cond);
+  }
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+#else
+
+void dim_init()
+{
+}
+
+void dim_init_threads()
+{
+}
+
+void dim_stop_threads()
+{
+}
+
+void dim_stop()
+{
+}
+
+int dim_wait()
+{
+  pause();
+  return(-1);
+}
+
+dim_long dim_start_thread(void (*thread_ast)(), dim_long tag)
+
+{
+	if(thread_ast){}
+	if(tag){}
+	printf("dim_start_thread: not available\n");
+	return (dim_long)0;
+}
+
+int dim_stop_thread(dim_long t_id)
+{
+	if(t_id){}
+	printf("dim_stop_thread: not available\n");
+	return 0;
+}
+#endif
+
+#else
+#include <windows.h>
+
+DWORD IO_thread = 0;
+DWORD ALRM_thread = 0;
+DWORD MAIN_thread = 0;
+HANDLE hIO_thread;
+HANDLE hALRM_thread;
+HANDLE hMAIN_thread;
+DllExp HANDLE Global_DIM_event_auto = 0;
+DllExp HANDLE Global_DIM_mutex = 0;
+DllExp HANDLE Global_DIM_event_manual = 0;
+void dim_tcpip_stop(), dim_dtq_stop();
+
+typedef struct{
+	void (*thread_ast)();
+	dim_long tag;
+	
+}THREAD_PARAMS;
+
+#ifndef STDCALL
+dim_long dim_start_thread(void (*thread_ast)(), dim_long tag)
+#else
+dim_long dim_start_thread(dim_long (*thread_ast)(void *), void *tag)
+#endif
+{
+DWORD threadid = 0;
+HANDLE hthread;
+
+#ifndef STDCALL
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)thread_ast,          /* thread function					*/
+        (void *)tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);				     /* returns the thread identifier	*/
+#else
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+		thread_ast,					 /* thread function					*/
+        tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);					 /* returns the thread identifier	*/
+#endif
+	return (dim_long)hthread;
+}
+
+
+int dim_stop_thread(dim_long thread_id)
+{
+	int ret;
+
+	ret = TerminateThread((HANDLE)thread_id, 0);
+	CloseHandle((HANDLE)thread_id);
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+
+void create_io_thread()
+{
+	int tcpip_task(void *);
+
+#ifndef STDCALL
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)tcpip_task,          /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#else
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        tcpip_task,					 /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#endif
+}
+
+void create_alrm_thread()
+{
+
+	int dtq_task(void *);
+
+#ifndef STDCALL
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        (void *)dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#else
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#endif
+}
+
+void dim_init_threads()
+{
+	static int done = 0;
+
+	if(!done)
+	{
+		hMAIN_thread = GetCurrentThread();
+		done = 1;
+	}
+}
+
+void dim_stop_threads()
+{
+/*
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+*/
+	if(hIO_thread)
+		TerminateThread(hIO_thread, 0);
+	if(hALRM_thread)
+		TerminateThread(hALRM_thread, 0);
+	if(Global_DIM_mutex) 
+		CloseHandle(Global_DIM_mutex);
+	if(Global_DIM_event_auto) 
+		CloseHandle(Global_DIM_event_auto);
+	if(Global_DIM_event_manual) 
+		CloseHandle(Global_DIM_event_manual);
+	hIO_thread = 0;
+	hALRM_thread = 0;
+	Global_DIM_mutex = 0;
+	Global_DIM_event_auto = 0;
+	Global_DIM_event_manual = 0;
+	dim_tcpip_stop();
+	dim_dtq_stop();
+}
+
+void dim_stop()
+{
+	dim_stop_threads();
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+	HANDLE hProc;
+	int ret;
+	DWORD p = 0;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	if(pclass == -1)
+		p = IDLE_PRIORITY_CLASS;
+/*
+	else if(pclass == -1)
+		p = BELOW_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 0)
+		p = NORMAL_PRIORITY_CLASS;
+/*
+	else if(pclass == 1)
+		p == ABOVE_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 1)
+		p = HIGH_PRIORITY_CLASS;
+	else if(pclass == 2)
+		p = REALTIME_PRIORITY_CLASS;
+	ret = SetPriorityClass(hProc, p);
+	if(ret)
+	  return 1;
+	ret = GetLastError();
+	printf("ret = %x %d\n",ret, ret);
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+	HANDLE hProc;
+	DWORD ret;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	ret = GetPriorityClass(hProc);
+	if(ret == 0)
+	  return 0;
+	if(ret == IDLE_PRIORITY_CLASS)
+		*pclass = -1;
+/*
+	else if(ret == BELOW_NORMAL_PRIORITY_CLASS)
+		*pclass = -1;
+*/
+	else if(ret == NORMAL_PRIORITY_CLASS)
+		*pclass = 0;
+/*
+	else if(ret == ABOVE_NORMAL_PRIORITY_CLASS)
+		*pclass = 1;
+*/
+	else if(ret == HIGH_PRIORITY_CLASS)
+		*pclass = 1;
+	else if(ret == REALTIME_PRIORITY_CLASS)
+		*pclass = 2;
+	return 1;
+#else
+	*pclass = 0;
+	return 0;
+#endif
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+	HANDLE id = 0;
+	int ret, p = 0;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	if(prio == -3)
+		p = THREAD_PRIORITY_IDLE;
+	if(prio == -2)
+		p = THREAD_PRIORITY_LOWEST;
+	if(prio == -1)
+		p = THREAD_PRIORITY_BELOW_NORMAL;
+	if(prio == 0)
+		p = THREAD_PRIORITY_NORMAL;
+	if(prio == 1)
+		p = THREAD_PRIORITY_ABOVE_NORMAL;
+	if(prio == 2)
+		p = THREAD_PRIORITY_HIGHEST;
+	if(prio == 3)
+		p = THREAD_PRIORITY_TIME_CRITICAL;
+
+	ret = SetThreadPriority(id, p); 
+	if(ret)
+	  return 1;
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+	HANDLE id = 0;
+	int ret, p = 0;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	ret = GetThreadPriority(id); 
+	if(ret == THREAD_PRIORITY_ERROR_RETURN)
+	  return 0;
+	if(ret == THREAD_PRIORITY_IDLE)
+		p = -3;
+	if(ret == THREAD_PRIORITY_LOWEST)
+		p = -2;
+	if(ret == THREAD_PRIORITY_BELOW_NORMAL)
+		p = -1;
+	if(ret == THREAD_PRIORITY_NORMAL)
+		p = 0;
+	if(ret == THREAD_PRIORITY_ABOVE_NORMAL)
+		p = 1;
+	if(ret == THREAD_PRIORITY_HIGHEST)
+		p = 2;
+	if(ret == THREAD_PRIORITY_TIME_CRITICAL)
+		p = 3;
+	*prio = p;
+	return 1;
+#else
+	*prio = 0;
+	return 0;
+#endif
+}
+
+void dim_init()
+{
+}
+
+void dim_no_threads()
+{
+}
+
+int dim_wait()
+{
+	pause();
+	return(1);
+}
+
+void dim_lock()
+{
+	if(!Global_DIM_mutex)
+	{ 
+		Global_DIM_mutex = CreateMutex(NULL,FALSE,NULL);
+	}
+	WaitForSingleObject(Global_DIM_mutex, INFINITE);
+}
+
+void dim_unlock()
+{
+	ReleaseMutex(Global_DIM_mutex);
+}
+
+void dim_pause()
+{
+HANDLE handles[2];
+
+	if(!Global_DIM_event_auto)
+	{ 
+		Global_DIM_event_auto = CreateEvent(NULL,FALSE,FALSE,NULL);
+		Global_DIM_event_manual = CreateEvent(NULL,TRUE,FALSE,NULL);
+	}
+	else 
+	{
+/*
+		WaitForSingleObject(Global_DIM_event, INFINITE);
+*/
+		handles[0] = Global_DIM_event_auto;
+		handles[1] = Global_DIM_event_manual;
+		WaitForMultipleObjects(2, handles, FALSE, INFINITE);
+	}
+}
+
+void dim_wake_up()
+{
+	if(Global_DIM_event_auto)
+	{
+		SetEvent(Global_DIM_event_auto);
+	}
+	if(Global_DIM_event_manual)
+	{
+		SetEvent(Global_DIM_event_manual);
+		ResetEvent(Global_DIM_event_manual);
+	}
+}
+
+void dim_sleep(unsigned int t)
+{
+	Sleep(t*1000);
+}
+
+void dim_win_usleep(unsigned int t)
+{
+	Sleep(t/1000);
+}
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/dim_thr_old.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dim_thr_old.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dim_thr_old.c	(revision 18732)
@@ -0,0 +1,894 @@
+#include <signal.h>
+#define DIMLIB
+#include "dim.h"
+
+#ifndef WIN32
+
+#ifndef NOTHREADS
+#include <pthread.h>
+#include <semaphore.h>
+#ifdef solaris
+#include <synch.h>
+#endif
+#ifdef darwin
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+pthread_t IO_thread = 0;
+pthread_t ALRM_thread = 0;
+pthread_t INIT_thread = 0;
+pthread_t MAIN_thread = 0;
+#ifndef darwin
+sem_t DIM_INIT_Sema;
+/*
+sem_t DIM_WAIT_Sema;
+*/
+#else
+sem_t *DIM_INIT_Semap;
+/*
+sem_t *DIM_WAIT_Semap;
+*/
+#endif
+int INIT_count = 0;
+/*
+int WAIT_count = 0;
+*/
+int DIM_THR_init_done = 0;
+
+void *dim_tcpip_thread(void *tag)
+{
+	extern int dim_tcpip_init();
+	extern void tcpip_task();
+	/*	
+	int prio;
+		
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+10);
+	*/
+	if(tag){}
+	IO_thread = pthread_self();
+
+	dim_tcpip_init(1);
+	while(1)
+    {
+		if(INIT_thread)
+#ifndef darwin
+			sem_post(&DIM_INIT_Sema);
+#else
+			sem_post(DIM_INIT_Semap);
+#endif
+		tcpip_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void *dim_dtq_thread(void *tag)
+{
+	extern int dim_dtq_init();
+	extern int dtq_task();
+	/*
+	int prio;
+
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+5);
+	*/
+	if(tag){}
+	ALRM_thread = pthread_self();
+
+	dim_dtq_init(1);
+	while(1)
+	  {
+		if(INIT_thread)
+		  {
+#ifndef darwin
+			sem_post(&DIM_INIT_Sema);
+#else
+			sem_post(DIM_INIT_Semap);
+#endif
+		  }
+		dtq_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void dim_init()
+{
+	pthread_t t_id;
+	void ignore_sigpipe();
+	int ret;
+	extern int dna_init();
+/*
+#ifdef LYNXOS
+*/
+    pthread_attr_t attr;
+/*
+#endif
+*/
+	if(!DIM_THR_init_done)
+	{
+	  /*
+		int prio;
+	  */
+		DIM_THR_init_done = 1;
+		dna_init();
+		/*
+		thr_getprio(thr_self(),&prio);
+		thr_setprio(thr_self(),prio+3);
+		*/
+		INIT_thread = pthread_self();
+		MAIN_thread = INIT_thread;
+		
+#ifndef darwin 	
+		sem_init(&DIM_INIT_Sema, 0, INIT_count);
+		/*
+		sem_init(&DIM_WAIT_Sema, 0, WAIT_count);
+		*/
+#else
+		DIM_INIT_Semap = sem_open("/Dim_INIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, INIT_count);
+		/*
+		DIM_WAIT_Semap = sem_open("/Dim_WAIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, WAIT_count);
+		*/
+#endif
+		
+		ignore_sigpipe();
+
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_attr_create(&attr);
+		pthread_create(&t_id, attr, dim_dtq_thread, 0);
+#else
+/*
+		pthread_create(&t_id, NULL, dim_dtq_thread, 0);
+*/
+		pthread_attr_init(&attr);
+		pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+		pthread_create(&t_id, &attr, dim_dtq_thread, 0);
+#endif
+#ifndef darwin
+		ret = sem_wait(&DIM_INIT_Sema);
+#else
+		ret = sem_wait(DIM_INIT_Semap);
+#endif
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_create(&t_id, attr, dim_tcpip_thread, 0);
+#else
+		pthread_create(&t_id, &attr, dim_tcpip_thread, 0);
+#endif
+#ifndef darwin
+		ret = sem_wait(&DIM_INIT_Sema);
+#else
+		ret = sem_wait(DIM_INIT_Semap);
+#endif
+		INIT_thread = 0;
+	}
+}
+
+void dim_stop()
+{
+	int i;
+	int n = 0;
+	void dim_tcpip_stop(), dim_dtq_stop();
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+	if(IO_thread)
+		pthread_cancel(IO_thread);
+	if(ALRM_thread)
+		pthread_cancel(ALRM_thread);
+#ifndef darwin 		
+	sem_destroy(&DIM_INIT_Sema);
+	/*
+	sem_destroy(&DIM_WAIT_Sema);
+	*/
+#else
+	sem_unlink("/Dim_INIT_Sem");
+	/*
+	sem_unlink("/Dim_WAIT_Sem");
+	*/
+	sem_close(DIM_INIT_Semap);
+	/*
+	sem_close(DIM_WAIT_Semap);
+	*/
+#endif
+	dim_tcpip_stop();
+	dim_dtq_stop();	
+	if(IO_thread) 
+		pthread_join(IO_thread,0);
+	if(ALRM_thread) 
+		pthread_join(ALRM_thread,0);
+	IO_thread = 0;
+	ALRM_thread = 0;
+	DIM_THR_init_done = 0;
+}
+
+long dim_start_thread(void *(*thread_ast)(void *), long tag)
+{
+	pthread_t t_id;
+    pthread_attr_t attr;
+	
+#if defined (LYNXOS) && !defined (__Lynx__)
+	pthread_attr_create(&attr);
+	pthread_create(&t_id, attr, (void *)thread_ast, (void *)tag);
+#else
+	pthread_attr_init(&attr);
+	pthread_create(&t_id, &attr, thread_ast, (void *)tag);
+#endif
+	return((long)t_id);
+}	
+
+int dim_stop_thread(long t_id)
+{
+	int ret;
+	ret = pthread_cancel((pthread_t)t_id);
+	dim_print_date_time();
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+#ifdef __linux__
+	int ret, prio, p;
+	struct sched_param param;
+
+	if(pclass == 0)
+	{
+		pclass = SCHED_OTHER;
+	}
+	else if(pclass == 1)
+	{
+		pclass = SCHED_FIFO;
+	}
+	else if(pclass == 2)
+	{
+		pclass = SCHED_RR;
+	}
+	prio = sched_get_priority_min(pclass);
+	ret = pthread_getschedparam(MAIN_thread, &p, &param);
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(MAIN_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(IO_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(IO_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(ALRM_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(ALRM_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+#ifdef __linux__
+	int ret;
+	struct sched_param param;
+
+	ret = pthread_getschedparam(MAIN_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+#ifdef __linux__
+	pthread_t id = MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	param.sched_priority = prio;
+	ret = pthread_setschedparam(id, pclass, &param);
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+#ifdef __linux__
+	pthread_t id=MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	*prio = param.sched_priority;
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+void ignore_sigpipe()
+{
+
+  struct sigaction sig_info;
+  sigset_t set;
+  void pipe_sig_handler();
+	    
+  if( sigaction(SIGPIPE, 0, &sig_info) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+  if(sig_info.sa_handler)
+  {
+/*
+	printf("DIM ignore_sigpipe() - Handler already defined %08X\n", sig_info.sa_handler);
+*/
+    return;
+  }
+  sigemptyset(&set);
+  sig_info.sa_handler = pipe_sig_handler;
+  sig_info.sa_mask = set;
+#ifndef LYNXOS 
+  sig_info.sa_flags = SA_RESTART;
+#else
+  sig_info.sa_flags = 0;
+#endif
+
+  if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+}
+
+void pipe_sig_handler( int num )
+{
+	if(num){} 
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/  
+}
+
+void dim_init_threads()
+{
+    dim_init();
+}
+
+void dim_stop_threads()
+{
+	dim_stop();
+}
+
+int dim_wait(void)
+{
+	pthread_t id;
+	
+	id = pthread_self();
+
+	if((id == ALRM_thread) || (id == IO_thread))
+	  {
+		return(-1);
+	  }
+	/*
+#ifndef darwin
+	sem_wait(&DIM_WAIT_Sema);
+#else
+	sem_wait(DIM_WAIT_Semap);
+#endif
+	*/
+	dim_wait_cond();
+	return(-1);
+}
+
+/*
+static void show_ast()
+{
+sigset_t oset;
+
+	sigprocmask(SIG_SETMASK,0,&oset);
+	printf("---THREAD id = %d, mask = %x %x\n",
+       pthread_self(), oset.__sigbits[1], oset.__sigbits[0]);
+}
+*/
+
+pthread_t Dim_thr_locker = 0;
+int Dim_thr_counter = 0;
+#ifdef LYNXOS
+pthread_mutex_t Global_DIM_mutex;
+pthread_mutex_t Global_cond_mutex;
+pthread_cond_t Global_cond;
+#else
+pthread_mutex_t Global_DIM_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t Global_cond_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t Global_cond = PTHREAD_COND_INITIALIZER;
+#endif
+
+void dim_lock()
+{
+	/*printf("Locking %d ", pthread_self());*/
+    if(Dim_thr_locker != pthread_self())
+    {
+		pthread_mutex_lock(&Global_DIM_mutex);
+		Dim_thr_locker=pthread_self();
+		/*printf(": Locked ");*/
+	}
+    /*printf("Counter = %d\n",Dim_thr_counter);*/
+    Dim_thr_counter++;
+}
+void dim_unlock()	
+{
+	/*printf("Un-Locking %d ", pthread_self());*/
+    Dim_thr_counter--;
+    /*printf("Counter = %d ",Dim_thr_counter);*/
+    if(!Dim_thr_counter)
+    {
+		Dim_thr_locker=0;
+		pthread_mutex_unlock(&Global_DIM_mutex);
+		/*printf(": Un-Locked ");*/
+	}
+	/*     printf("\n");*/
+}
+
+void dim_wait_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  pthread_cond_wait(&Global_cond, &Global_cond_mutex);
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+void dim_signal_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  pthread_cond_broadcast(&Global_cond);
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+#else
+
+void dim_init()
+{
+}
+
+void dim_init_threads()
+{
+}
+
+void dim_stop_threads()
+{
+}
+
+void dim_stop()
+{
+}
+
+int dim_wait()
+{
+  pause();
+  return(-1);
+}
+
+long dim_start_thread(void (*thread_ast)(), long tag)
+
+{
+	printf("dim_start_thread: not available\n");
+	return (long)0;
+}
+
+int dim_stop_thread(long t_id)
+{
+	printf("dim_stop_thread: not available\n");
+	return 0;
+}
+#endif
+
+#else
+#include <windows.h>
+
+DWORD IO_thread = 0;
+DWORD ALRM_thread = 0;
+DWORD MAIN_thread = 0;
+HANDLE hIO_thread;
+HANDLE hALRM_thread;
+HANDLE hMAIN_thread;
+DllExp HANDLE Global_DIM_event_auto = 0;
+DllExp HANDLE Global_DIM_mutex = 0;
+DllExp HANDLE Global_DIM_event_manual = 0;
+void dim_tcpip_stop(), dim_dtq_stop();
+
+typedef struct{
+	void (*thread_ast)();
+	long tag;
+	
+}THREAD_PARAMS;
+
+#ifndef STDCALL
+long dim_start_thread(void (*thread_ast)(), long tag)
+#else
+long dim_start_thread(unsigned long (*thread_ast)(void *), void *tag)
+#endif
+{
+DWORD threadid = 0;
+HANDLE hthread;
+
+#ifndef STDCALL
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)thread_ast,          /* thread function					*/
+        (void *)tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);				     /* returns the thread identifier	*/
+#else
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+		thread_ast,					 /* thread function					*/
+        tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);					 /* returns the thread identifier	*/
+#endif
+	return (long)hthread;
+}
+
+
+int dim_stop_thread(long thread_id)
+{
+	int ret;
+
+	ret = TerminateThread((HANDLE)thread_id, 0);
+	CloseHandle((HANDLE)thread_id);
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+
+void create_io_thread()
+{
+	int tcpip_task(void *);
+
+#ifndef STDCALL
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)tcpip_task,          /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#else
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        tcpip_task,					 /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#endif
+}
+
+void create_alrm_thread()
+{
+
+	int dtq_task(void *);
+
+#ifndef STDCALL
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        (void *)dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#else
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#endif
+}
+
+void dim_init_threads()
+{
+	static int done = 0;
+
+	if(!done)
+	{
+		hMAIN_thread = GetCurrentThread();
+		done = 1;
+	}
+}
+
+void dim_stop_threads()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+	if(hIO_thread)
+		TerminateThread(hIO_thread, 0);
+	if(hALRM_thread)
+		TerminateThread(hALRM_thread, 0);
+	if(Global_DIM_mutex) 
+		CloseHandle(Global_DIM_mutex);
+	if(Global_DIM_event_auto) 
+		CloseHandle(Global_DIM_event_auto);
+	if(Global_DIM_event_manual) 
+		CloseHandle(Global_DIM_event_manual);
+	hIO_thread = 0;
+	hALRM_thread = 0;
+	Global_DIM_mutex = 0;
+	Global_DIM_event_auto = 0;
+	Global_DIM_event_manual = 0;
+	dim_tcpip_stop();
+	dim_dtq_stop();
+}
+
+void dim_stop()
+{
+	dim_stop_threads();
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+	HANDLE hProc;
+	int ret;
+	DWORD p;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	if(pclass == -1)
+		p = IDLE_PRIORITY_CLASS;
+/*
+	else if(pclass == -1)
+		p = BELOW_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 0)
+		p = NORMAL_PRIORITY_CLASS;
+/*
+	else if(pclass == 1)
+		p == ABOVE_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 1)
+		p = HIGH_PRIORITY_CLASS;
+	else if(pclass == 2)
+		p = REALTIME_PRIORITY_CLASS;
+	ret = SetPriorityClass(hProc, p);
+	if(ret)
+	  return 1;
+	ret = GetLastError();
+	printf("ret = %x %d\n",ret, ret);
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+	HANDLE hProc;
+	DWORD ret;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	ret = GetPriorityClass(hProc);
+	if(ret == 0)
+	  return 0;
+	if(ret == IDLE_PRIORITY_CLASS)
+		*pclass = -1;
+/*
+	else if(ret == BELOW_NORMAL_PRIORITY_CLASS)
+		*pclass = -1;
+*/
+	else if(ret == NORMAL_PRIORITY_CLASS)
+		*pclass = 0;
+/*
+	else if(ret == ABOVE_NORMAL_PRIORITY_CLASS)
+		*pclass = 1;
+*/
+	else if(ret == HIGH_PRIORITY_CLASS)
+		*pclass = 1;
+	else if(ret == REALTIME_PRIORITY_CLASS)
+		*pclass = 2;
+	return 1;
+#else
+	*pclass = 0;
+	return 0;
+#endif
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+	HANDLE id;
+	int ret, p;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	if(prio == -3)
+		p = THREAD_PRIORITY_IDLE;
+	if(prio == -2)
+		p = THREAD_PRIORITY_LOWEST;
+	if(prio == -1)
+		p = THREAD_PRIORITY_BELOW_NORMAL;
+	if(prio == 0)
+		p = THREAD_PRIORITY_NORMAL;
+	if(prio == 1)
+		p = THREAD_PRIORITY_ABOVE_NORMAL;
+	if(prio == 2)
+		p = THREAD_PRIORITY_HIGHEST;
+	if(prio == 3)
+		p = THREAD_PRIORITY_TIME_CRITICAL;
+
+	ret = SetThreadPriority(id, p); 
+	if(ret)
+	  return 1;
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+	HANDLE id;
+	int ret, p;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	ret = GetThreadPriority(id); 
+	if(ret == THREAD_PRIORITY_ERROR_RETURN)
+	  return 0;
+	if(ret == THREAD_PRIORITY_IDLE)
+		p = -3;
+	if(ret == THREAD_PRIORITY_LOWEST)
+		p = -2;
+	if(ret == THREAD_PRIORITY_BELOW_NORMAL)
+		p = -1;
+	if(ret == THREAD_PRIORITY_NORMAL)
+		p = 0;
+	if(ret == THREAD_PRIORITY_ABOVE_NORMAL)
+		p = 1;
+	if(ret == THREAD_PRIORITY_HIGHEST)
+		p = 2;
+	if(ret == THREAD_PRIORITY_TIME_CRITICAL)
+		p = 3;
+	*prio = p;
+	return 1;
+#else
+	*prio = 0;
+	return 0;
+#endif
+}
+
+void dim_init()
+{
+}
+
+void dim_no_threads()
+{
+}
+
+int dim_wait()
+{
+	pause();
+	return(1);
+}
+
+void dim_lock()
+{
+	if(!Global_DIM_mutex)
+	{ 
+		Global_DIM_mutex = CreateMutex(NULL,FALSE,NULL);
+	}
+	WaitForSingleObject(Global_DIM_mutex, INFINITE);
+}
+
+void dim_unlock()
+{
+	ReleaseMutex(Global_DIM_mutex);
+}
+
+void dim_pause()
+{
+HANDLE handles[2];
+
+	if(!Global_DIM_event_auto)
+	{ 
+		Global_DIM_event_auto = CreateEvent(NULL,FALSE,FALSE,NULL);
+		Global_DIM_event_manual = CreateEvent(NULL,TRUE,FALSE,NULL);
+	}
+	else 
+	{
+/*
+		WaitForSingleObject(Global_DIM_event, INFINITE);
+*/
+		handles[0] = Global_DIM_event_auto;
+		handles[1] = Global_DIM_event_manual;
+		WaitForMultipleObjects(2, handles, FALSE, INFINITE);
+	}
+}
+
+void dim_wake_up()
+{
+	if(Global_DIM_event_auto)
+	{
+		SetEvent(Global_DIM_event_auto);
+	}
+	if(Global_DIM_event_manual)
+	{
+		SetEvent(Global_DIM_event_manual);
+		ResetEvent(Global_DIM_event_manual);
+	}
+}
+
+void dim_sleep(unsigned int t)
+{
+	Sleep(t*1000);
+}
+
+void dim_win_usleep(unsigned int t)
+{
+	Sleep(t/1000);
+}
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/dimcpp.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/dimcpp.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dimcpp.cxx	(revision 18732)
@@ -0,0 +1,137 @@
+#include <assert.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef __VMS
+#include <starlet.h>
+#endif
+
+#define DIMLIB
+#include <dim_core.hxx>
+#include <dim.hxx>
+
+int DimCore::inCallback = 0;
+int DimUtil::itsBufferSize = 0;
+char *DimUtil::itsBuffer = (char *)0;
+
+extern "C" {
+static void timer_user_routine(void *tp)
+{
+	DimTimer *t = (DimTimer *)tp;
+	DimCore::inCallback = 1;
+	t->firedFlag = 1;
+	t->runningFlag = 0;
+	t->timerHandler();
+	DimCore::inCallback = 0;
+}
+}
+
+int DimTimer::start(int time)
+{
+	if(runningFlag)
+		return 0;
+	runningFlag = 1;
+	firedFlag = 0;
+	dtq_start_timer(time, timer_user_routine, this);
+	return 1;
+}
+
+int DimTimer::stop() 
+{
+	firedFlag = 0;
+	runningFlag = 0;
+	return dtq_stop_timer(this);
+}
+
+DimTimer::DimTimer() 
+{ 
+	firedFlag = 0;
+	runningFlag = 0; 
+}
+	
+DimTimer::DimTimer(int time)
+{ 
+	firedFlag = 0;
+	runningFlag = 0; 
+	start(time);
+}
+
+DimTimer::~DimTimer()
+{
+	if(runningFlag)
+		stop();
+}
+
+// Threads
+
+extern "C" {
+static void thread_user_routine(void *tp)
+{
+	DimThread *t = (DimThread *)tp;
+//	DimCore::inCallback = 1;
+//	t->firedFlag = 1;
+//	t->runningFlag = 0;
+	t->threadHandler();
+	t->itsId = 0;
+//	DimCore::inCallback = 0;
+}
+}
+
+DimThread::DimThread() 
+{
+//	start();
+	itsId = 0;
+}
+	
+DimThread::~DimThread()
+{
+//	if(itsId)
+//		stop();
+}
+
+int DimThread::start()
+{
+	if(!itsId)
+	{
+		itsId = (long)dim_start_thread(thread_user_routine, this);
+		return 1;
+	}
+	return 0;
+}
+/*
+int DimThread::stop()
+{
+	int ret = dim_stop_thread(itsId);
+	itsId = 0;
+	return ret;
+}
+*/
+
+DimUtil::DimUtil() 
+{
+}
+	
+DimUtil::~DimUtil()
+{
+}
+
+char *DimUtil::getEnvVar(char *name)
+{
+	int size;
+
+	size = dim_get_env_var(name, 0, 0);
+	if(!size)
+		return (char *)0;
+	if((itsBufferSize < size ) && (itsBufferSize != 0))
+	{
+		delete[] itsBuffer;
+		itsBufferSize = 0;
+	}
+	if(!itsBufferSize)
+	{
+		itsBuffer = new char[size];
+		itsBufferSize = size;
+	}
+	dim_get_env_var(name, itsBuffer, itsBufferSize);
+	return itsBuffer;
+}
Index: branches/FACT++_part_filenames/dim/src/dis.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dis.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dis.c	(revision 18732)
@@ -0,0 +1,3489 @@
+/*
+ * DIS (Delphi Information Server) Package implements a library of
+ * routines to be used by servers.
+ *
+ * Started on		 : 10-11-91
+ * Last modification : 28-07-94
+ * Written by		 : C. Gaspar
+ * Adjusted by	     : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <lnmdef.h>
+#	include <ssdef.h>
+#	include <descrip.h>
+#	include <cfortran.h>
+#endif
+/*
+#define DEBUG
+*/
+#include <time.h>
+#ifdef VAX
+#include <timeb.h>
+#else
+#include <sys/timeb.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dis.h>
+
+#define ALL 0
+#define MORE 1
+#define NONE 2
+
+typedef struct dis_dns_ent {
+	struct dis_dns_ent *next;
+	struct dis_dns_ent *prev;
+	dim_long dnsid;
+	char task_name[MAX_NAME];
+	TIMR_ENT *dns_timr_ent;
+	DIS_DNS_PACKET dis_dns_packet;
+	int dis_n_services;
+	int dns_dis_conn_id;
+	int dis_first_time;
+	int serving;
+	unsigned int dis_service_id;
+	unsigned int dis_client_id;
+	int updating_service_list;
+} DIS_DNS_CONN;
+
+typedef struct req_ent {
+	struct req_ent *next;
+	struct req_ent *prev;
+	int conn_id;
+	int service_id;
+	int req_id;
+	int type;
+	struct serv *service_ptr;
+	int timeout;
+	int format;
+	int first_time;
+	int delay_delete;
+	int to_delete;
+	TIMR_ENT *timr_ent;
+	struct reqp_ent *reqpp;
+} REQUEST;
+
+typedef struct serv {
+	struct serv *next;
+	struct serv *prev;
+	char name[MAX_NAME];
+	int id;
+	int type;
+	char def[MAX_NAME];
+	FORMAT_STR format_data[MAX_NAME/4];
+	int *address;
+	int size;
+	void (*user_routine)();
+	dim_long tag;
+	int registered;
+	int quality;
+	int user_secs;
+	int user_millisecs;
+	int tid;
+	REQUEST *request_head;
+	DIS_DNS_CONN *dnsp;
+	int delay_delete;
+	int to_delete;
+} SERVICE;
+
+typedef struct reqp_ent {
+	struct reqp_ent *next;
+	struct reqp_ent *prev;
+	REQUEST *reqp;
+} REQUEST_PTR;
+
+typedef struct cli_ent {
+	struct cli_ent *next;
+	struct cli_ent *prev;
+	int conn_id;
+	REQUEST_PTR *requestp_head; 
+	DIS_DNS_CONN *dnsp;
+} CLIENT;
+
+static CLIENT *Client_head = (CLIENT *)0;	
+
+static DIS_DNS_CONN *DNS_head = (DIS_DNS_CONN *)0;	
+
+/*
+static char Task_name[MAX_NAME];
+static TIMR_ENT *Dns_timr_ent = (TIMR_ENT *)0;
+static DIS_DNS_PACKET Dis_dns_packet = {0, 0, {0}};
+static int Dis_n_services = 0;
+*/
+static int Dis_first_time = 1;
+/*
+static int Dns_dis_conn_id = 0;
+*/
+static int Protocol;
+static int Port_number;
+static int Dis_conn_id = 0;
+static int Curr_conn_id = 0;
+static int Serving = 0;
+static void (*Client_exit_user_routine)() = 0;
+static void (*Exit_user_routine)() = 0;
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+DIS_DNS_CONN *Default_DNS = 0;
+
+typedef struct exit_ent {
+	struct exit_ent *next;
+	int conn_id;
+	int exit_id;
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} EXIT_H;
+
+static EXIT_H *Exit_h_head = (EXIT_H *)0;
+
+/* Do not forget to increase when this file is modified */
+static int Version_number = DIM_VERSION_NUMBER;
+static int Dis_timer_q = 0;
+static int Threads_off = 0;
+/*
+static unsigned int Dis_service_id, Dis_client_id;
+static int Updating_service_list = 0;
+*/
+static int Last_client;
+static int Last_n_clients;
+
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( static void dis_insert_request, (int conn_id, DIC_PACKET *dic_packet,
+				  int size, int status ) );
+_DIM_PROTO( int execute_service,	(int req_id) );
+_DIM_PROTO( void execute_command,	(SERVICE *servp, DIC_PACKET *packet) );
+_DIM_PROTO( void register_dns_services,  (int flag) );
+_DIM_PROTO( void register_services,  (DIS_DNS_CONN *dnsp, int flag, int dns_flag) );
+_DIM_PROTO( void std_cmnd_handler,   (dim_long *tag, int *cmnd_buff, int *size) );
+_DIM_PROTO( void client_info,		(dim_long *tag, int **bufp, int *size) );
+_DIM_PROTO( void service_info,	   (dim_long *tag, int **bufp, int *size) );
+_DIM_PROTO( void add_exit_handler,   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void exit_handler,	   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void error_handler,	   (int conn_id, int severity, int errcode, char *reason) );
+_DIM_PROTO( SERVICE *find_service,   (char *name) );
+_DIM_PROTO( CLIENT *find_client,   (int conn_id) );
+_DIM_PROTO( static int get_format_data, (FORMAT_STR *format_data, char *def) );
+_DIM_PROTO( static int release_conn, (int conn_id, int print_flag, int dns_flag) );
+_DIM_PROTO( SERVICE *dis_hash_service_exists, (char *name) );
+_DIM_PROTO( SERVICE *dis_hash_service_get_next, (int *start, SERVICE *prev, int flag) );
+_DIM_PROTO( static unsigned do_dis_add_service_dns, (char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag, dim_long dnsid ) );
+_DIM_PROTO( static DIS_DNS_CONN *create_dns, (dim_long dnsid) );
+
+void dis_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dis_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dis_no_threads()
+{
+	Threads_off = 1;
+}
+
+static DIS_STAMPED_PACKET *Dis_packet = 0;
+static int Dis_packet_size = 0;
+
+int dis_set_buffer_size(int size)
+{
+	if(Dis_packet_size)
+		free(Dis_packet);
+	Dis_packet = (DIS_STAMPED_PACKET *)malloc((size_t)(DIS_STAMPED_HEADER + size));
+	if(Dis_packet)
+	{
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+		return(1);
+	}
+	else
+		return(0);
+}
+
+static int check_service_name(char *name)
+{
+	if((int)strlen(name) > (MAX_NAME - 1))
+		return(0);
+	return(1);
+}
+
+void dis_init()
+{
+	int dis_hash_service_init();
+	void dis_dns_init();
+
+	dim_init();
+	dis_dns_init();
+	{
+	DISABLE_AST
+	dis_hash_service_init();
+	ENABLE_AST
+	}
+}
+
+static unsigned do_dis_add_service_dns( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag, dim_long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Service name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		strcpy(str,"Duplicate Service: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCDUPLC, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc( sizeof(SERVICE) );
+	strncpy( new_serv->name, name, (size_t)MAX_NAME );
+	if(type != (char *)0)
+	{
+		if ((int)strlen(type) >= MAX_NAME)
+		{
+			strcpy(str,"Format String Too Long: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str, -1);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		if (! get_format_data(new_serv->format_data, type))
+		{
+			strcpy(str,"Bad Format String: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str, -1);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = 0;
+	new_serv->address = (int *)address;
+	new_serv->size = size;
+	new_serv->user_routine = user_routine;
+	new_serv->tag = tag;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->tid = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned)service_id);
+}
+
+static unsigned do_dis_add_service( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag )
+{
+	return do_dis_add_service_dns( name, type, address, size, 
+								   user_routine, tag, 0 );
+}
+
+#ifdef VxWorks
+void dis_destroy(int tid)
+{
+register SERVICE *servp, *prevp;
+int n_left = 0;
+
+	prevp = 0;
+	while( servp = dis_hash_service_get_next(prevp))
+	{
+		if(servp->tid == tid)
+		{
+			dis_remove_service(servp->id);
+		}
+		else
+		{
+			prevp = servp;
+			n_left++;
+		}
+	}
+	if(n_left == 5)
+	{
+		prevp = 0;
+		while( servp = dis_hash_service_get_next(prevp))
+		{
+			dis_remove_service(servp->id);
+		}
+		dna_close(Dis_conn_id);
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+		Dis_first_time = 1;
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+}
+
+
+#endif
+
+unsigned dis_add_service( char *name, char *type, void *address, int size, 
+						 void (*user_routine)(), dim_long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service( name, type, address, size, user_routine, tag);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_service_dns( dim_long dnsid, char *name, char *type, void *address, int size, 
+							 void (*user_routine)(), dim_long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service_dns( name, type, address, size, user_routine, tag, dnsid);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+static unsigned do_dis_add_cmnd_dns( char *name, char *type, void (*user_routine)(), dim_long tag, dim_long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Command name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc(sizeof(SERVICE));
+	strncpy(new_serv->name, name, (size_t)MAX_NAME);
+	if(type != (char *)0)
+	{
+		if( !get_format_data(new_serv->format_data, type))
+		{
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = COMMAND;
+	new_serv->address = 0;
+	new_serv->size = 0;
+	if(user_routine)
+		new_serv->user_routine = user_routine;
+	else
+		new_serv->user_routine = std_cmnd_handler;
+	new_serv->tag = tag;
+	new_serv->tid = 0;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned) service_id);
+}
+
+static unsigned do_dis_add_cmnd( char *name, char *type, void (*user_routine)(), dim_long tag)
+{
+	return do_dis_add_cmnd_dns(name, type, user_routine, tag, 0);
+}
+
+unsigned dis_add_cmnd( char *name, char *type, void (*user_routine)(), dim_long tag ) 
+{
+	unsigned ret;
+
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_cmnd( name, type, user_routine, tag );
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_cmnd_dns( dim_long dnsid, char *name, char *type, void (*user_routine)(), dim_long tag ) 
+{
+	unsigned ret;
+
+	/*
+	DISABLE_AST
+	*/
+	ret = do_dis_add_cmnd_dns( name, type, user_routine, tag, dnsid );
+	/*
+	ENABLE_AST
+	*/
+	return(ret);
+}
+
+void dis_add_client_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Client_exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_error_handler( void (*user_routine)())
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static int get_format_data(FORMAT_STR *format_data, char *def)
+{
+	register char code, last_code = 0;
+	int num;
+
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			format_data->par_num = 0;
+			format_data->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					format_data->par_bytes = SIZEOF_LONG;
+					format_data->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					format_data->par_bytes = SIZEOF_SHORT;
+					format_data->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					format_data->par_bytes = SIZEOF_FLOAT;
+					format_data->flags |= SWAPL;
+#ifdef vms      	
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+#ifdef vms
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+				case 'b':
+				case 'B':
+				case 'v':
+				case 'V':
+					format_data->par_bytes = SIZEOF_CHAR;
+					format_data->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+			if(*def)
+			{
+/*
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+
+				error_handler("Bad service definition parsing",2);
+*/
+				return(0);
+			}
+			else
+				format_data->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			format_data->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+				def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			format_data++;
+	}
+	format_data->par_bytes = 0;
+	return(1);
+}
+
+void recv_dns_dis_rout( int conn_id, DNS_DIS_PACKET *packet, int size, int status )
+{
+	char str[128];
+	int dns_timr_time;
+	extern int rand_tmout(int, int);
+	extern int open_dns(dim_long, void (*)(), void (*)(), int, int, int);
+	extern DIS_DNS_CONN *find_dns_by_conn_id(int);
+	extern void do_register_services(DIS_DNS_CONN *);
+	extern void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+	DIS_DNS_CONN *dnsp;
+	int type, exit_code;
+
+	if(size){}
+	dnsp = find_dns_by_conn_id(conn_id);
+	if(!dnsp)
+	{
+		return;
+	}
+	switch(status)
+	{
+	case STA_DISC:	   /* connection broken */
+		if( dnsp->dns_timr_ent ) {
+			dtq_rem_entry( Dis_timer_q, dnsp->dns_timr_ent );
+			dnsp->dns_timr_ent = NULL;
+		}
+
+		if(dnsp->dns_dis_conn_id > 0)
+			dna_close(dnsp->dns_dis_conn_id);
+		if(Serving == -1)
+			return;
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = open_dns(dnsp->dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined", -1);
+		}
+		break;
+	case STA_CONN:		/* connection received */
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = conn_id;
+			register_services(dnsp, ALL, 0);
+			dns_timr_time = rand_tmout(WATCHDOG_TMOUT_MIN, 
+							 WATCHDOG_TMOUT_MAX);
+			dnsp->dns_timr_ent = dtq_add_entry( Dis_timer_q,
+						  dns_timr_time,
+						  do_register_services, dnsp ); 
+		}
+		else
+		{
+			dna_close(conn_id);
+		}
+		break;
+	default :	   /* normal packet */
+		if(vtohl(packet->size) != DNS_DIS_HEADER)
+			break;
+		type = vtohl(packet->type);
+		exit_code = (type >> 16) & 0xFFFF;
+		type &= 0xFFFF;
+		switch(type)
+		{
+		case DNS_DIS_REGISTER :
+			sprintf(str, 
+				"%s: Watchdog Timeout, DNS requests registration",
+				dnsp->task_name);
+			error_handler(0, DIM_WARNING, DIMDNSTMOUT, str, -1);
+			register_services(dnsp, ALL, 0);
+			break;
+		case DNS_DIS_KILL :
+			sprintf(str,
+				"%s: Some Services already known to DNS",
+				dnsp->task_name);
+			/*
+			exit(2);
+			*/
+			Serving = -1;
+			error_handler(0, DIM_FATAL, DIMDNSDUPLC, str, -1);
+			/*
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+			*/
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_STOP :
+			sprintf(str, 
+				"%s: DNS refuses connection",dnsp->task_name);
+/*
+			exit(2);
+*/
+			Serving = -1;
+			error_handler(0, DIM_FATAL, DIMDNSREFUS, str, -1);
+			/*
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+			*/
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit",dnsp->task_name);
+/*
+			Serving = -1;
+*/
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str, -1);
+			break;
+		case DNS_DIS_SOFT_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit(%d)",dnsp->task_name, exit_code);
+/*
+			Serving = -1;
+*/
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str, exit_code);
+			break;
+		}
+		break;
+	}
+}
+
+
+/* register services within the name server
+ *
+ * Send services uses the DNA package. services is a linked list of services
+ * stored by add_service.
+ */
+
+int send_dns_update_packet(DIS_DNS_CONN *dnsp)
+{
+  DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+  int n_services;
+  SERVICE_REG *serv_regp;
+
+  n_services = 1;
+  dis_dns_p->n_services = htovl(n_services);
+  dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * (int)sizeof(SERVICE_REG));
+  serv_regp = dis_dns_p->services;
+  strcpy( serv_regp->service_name, "DUMMY_UPDATE_PACKET" );
+  if(dnsp->dns_dis_conn_id > 0)
+  {
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending UpdatePacket to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+      if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+		     DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)))
+	  {
+		release_conn(dnsp->dns_dis_conn_id, 0, 1);
+	  }
+  }
+  return(1);
+}
+
+void do_register_services(DIS_DNS_CONN *dnsp)
+{
+	register_services(dnsp, NONE, 0);
+}
+
+void register_services(DIS_DNS_CONN *dnsp, int flag, int dns_flag)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services, tot_n_services;
+	register SERVICE *servp;
+	register SERVICE_REG *serv_regp;
+	int hash_index, new_entries;
+	extern int get_node_addr();
+	int dis_hash_service_registered();
+
+	if(!dis_dns_p->src_type)
+	{
+		get_node_name( dis_dns_p->node_name );
+/*
+		strcpy( dis_dns_p->task_name, Task_name );
+*/
+		strncpy( dis_dns_p->task_name, dnsp->task_name,
+			(size_t)(MAX_TASK_NAME-4) );
+		dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+		get_node_addr( dis_dns_p->node_addr );
+/*
+		dis_dns_p->port = htovl(Port_number);
+*/
+		dis_dns_p->pid = htovl(getpid());
+		dis_dns_p->protocol = htovl(Protocol);
+		dis_dns_p->src_type = htovl(SRC_DIS);
+		dis_dns_p->format = htovl(MY_FORMAT);
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Registering as %d %s@%s\n",
+	dis_dns_p->pid, dis_dns_p->task_name, dis_dns_p->node_name);
+}
+	
+	}
+
+	dis_dns_p->port = htovl(Port_number);
+	serv_regp = dis_dns_p->services;
+	n_services = 0;
+	tot_n_services = 0;
+	if( flag == NONE ) {
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl( DIS_DNS_HEADER + 
+			(n_services*(int)sizeof(SERVICE_REG)));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending NONE to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+			if(!dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+				DIS_DNS_HEADER + n_services*(int)sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+		}
+		return;
+	}
+	if(flag == ALL)
+	{
+		servp = 0;
+		hash_index = -1;
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)))
+		{
+			if(servp->dnsp == dnsp)
+				servp->registered  = 0;
+		}
+	}
+	servp = 0;
+	hash_index = -1;
+	new_entries = 0;
+	if(flag == MORE)
+		new_entries = 1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, new_entries)))
+	{
+		if( flag == MORE ) 
+		{
+			if( servp->registered )
+			{
+				continue;
+			}
+		}
+
+		if(servp->dnsp != dnsp)
+			continue;
+
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Registering %s\n",
+	servp->name);
+}
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		if(servp->type == COMMAND)
+			serv_regp->service_id = htovl( servp->id | 0x10000000);
+		else
+			serv_regp->service_id = htovl( servp->id );
+
+		serv_regp++;
+		n_services++;
+		dis_hash_service_registered(hash_index, servp);
+		if( n_services == MAX_SERVICE_UNIT )
+		{
+			dis_dns_p->n_services = htovl(n_services);
+			dis_dns_p->size = (int)htovl(DIS_DNS_HEADER +
+				n_services * (int)sizeof(SERVICE_REG));
+			if(dnsp->dns_dis_conn_id > 0)
+			{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending MAX_SERVICE_UNIT to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+				if( !dna_write(dnsp->dns_dis_conn_id,
+					   &(dnsp->dis_dns_packet), 
+					   DIS_DNS_HEADER + n_services *
+						(int)sizeof(SERVICE_REG)) )
+				{
+					release_conn(dnsp->dns_dis_conn_id, 0, 1);
+				}
+			}
+			serv_regp = dis_dns_p->services;
+			tot_n_services += MAX_SERVICE_UNIT;
+			n_services = 0;
+			continue;
+		}
+	}
+	if( n_services ) 
+	{
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * (int)sizeof(SERVICE_REG));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+			if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+				DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+
+		}
+		tot_n_services += n_services;
+	}
+	if(!dns_flag)
+	{
+		if(tot_n_services >= MAX_REGISTRATION_UNIT)
+		{
+			send_dns_update_packet(dnsp);
+		}
+	}
+}
+
+void unregister_service(DIS_DNS_CONN *dnsp, SERVICE *servp)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services;
+	register SERVICE_REG *serv_regp;
+	extern int get_node_addr();
+
+	if(dnsp->dns_dis_conn_id > 0)
+	{
+		if(!dis_dns_p->src_type)
+		{
+			get_node_name( dis_dns_p->node_name );
+/*
+			strcpy( dis_dns_p->task_name, Task_name );
+*/
+			strncpy( dis_dns_p->task_name, dnsp->task_name,
+				(size_t)(MAX_TASK_NAME-4) );
+			dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+			get_node_addr( dis_dns_p->node_addr );
+			dis_dns_p->port = htovl(Port_number);
+			dis_dns_p->protocol = htovl(Protocol);
+			dis_dns_p->src_type = htovl(SRC_DIS);
+			dis_dns_p->format = htovl(MY_FORMAT);
+		}
+		serv_regp = dis_dns_p->services;
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		serv_regp->service_id = (int)htovl( (unsigned)servp->id | 0x80000000);
+		serv_regp++;
+		n_services = 1;
+		servp->registered = 0;
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * (int)sizeof(SERVICE_REG));
+
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending UNREGISTER to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+		if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+			DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)) )
+		{
+			release_conn(dnsp->dns_dis_conn_id, 0, 1);
+		}
+		if(dnsp->dis_service_id)
+			dis_update_service(dnsp->dis_service_id);
+	}
+}
+
+void do_update_service_list(DIS_DNS_CONN *dnsp)
+{
+	dnsp->updating_service_list = 0;
+	if(dnsp->dis_service_id)
+		dis_update_service(dnsp->dis_service_id);
+}
+
+/* start serving client requests
+ *
+ * Using the DNA package start accepting requests from clients.
+ * When a request arrives the routine "dis_insert_request" will be executed.
+ */
+
+int dis_start_serving(char *task)
+{
+	return dis_start_serving_dns(0, task);
+}
+
+static DIS_DNS_CONN *create_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = malloc(sizeof(DIS_DNS_CONN));
+	dnsp->dns_timr_ent = (TIMR_ENT *)0;
+	dnsp->dis_n_services = 0;
+	dnsp->dns_dis_conn_id = 0;
+	dnsp->dis_first_time = 1;
+	dnsp->serving = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	dnsp->dis_dns_packet.node_name[0] = 0;
+	dnsp->updating_service_list = 0;
+	dnsp->dnsid = dnsid;
+	dll_insert_queue( (DLL *) DNS_head, (DLL *) dnsp );
+	return dnsp;
+}
+
+void dis_dns_init()
+{
+	static int done = 0;
+	DIS_DNS_CONN *dnsp;
+	void dim_init_threads(void);
+
+	if(!done)
+	{
+		if(!Threads_off)
+		{
+			dim_init_threads();
+		}
+		{
+		DISABLE_AST
+		if(!DNS_head) 
+		{
+			DNS_head = (DIS_DNS_CONN *)malloc(sizeof(DIS_DNS_CONN));
+			dll_init( (DLL *) DNS_head );
+		}
+		dnsp = create_dns(0);
+		Default_DNS = dnsp;
+		done = 1;
+		ENABLE_AST
+		}
+	}
+}
+
+int dis_start_serving_dns(dim_long dnsid, char *task/*, int *idlist*/)
+{
+	char str0[MAX_NAME], str1[MAX_NAME],str2[MAX_NAME],
+	  str3[MAX_NAME],str4[MAX_NAME];
+	char task_name_aux[MAX_TASK_NAME];
+	extern int open_dns();
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+	DIS_DNS_CONN *dnsp;
+	unsigned int more_ids[10] = {0};
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return(0);
+	}
+	  /*
+#ifdef VxWorks
+	taskDeleteHookAdd(remove_all_services);
+	printf("Adding delete hook\n");
+#endif
+*/
+
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(dnsid == 0)
+	{
+		dnsp = Default_DNS;
+	}
+	else if(!(dnsp = dis_find_dns(dnsid)))
+	{
+		dnsp = create_dns(dnsid);
+	}
+	dnsp->serving = 1;
+	Serving = 1;
+	if(Dis_first_time)
+	{
+		strncpy( task_name_aux, task, (size_t)MAX_TASK_NAME );
+		task_name_aux[MAX_TASK_NAME-1] = '\0';
+		Port_number = SEEK_PORT;
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Opening Server Connection %s\n",task_name_aux);
+}
+		if( !(Dis_conn_id = dna_open_server( task_name_aux, dis_insert_request, 
+			&Protocol, &Port_number, error_handler) ))
+		{
+			ENABLE_AST
+			return(0);
+		}
+		Dis_first_time = 0;
+	}
+	if(dnsp->dis_first_time)
+	{
+		dnsp->dis_first_time = 0;
+
+		sprintf(str0, "%s/VERSION_NUMBER", task);
+		sprintf(str1, "%s/CLIENT_LIST", task);
+		sprintf(str2, "%s/SERVICE_LIST", task);
+		sprintf(str3, "%s/SET_EXIT_HANDLER", task);
+		sprintf(str4, "%s/EXIT", task);
+
+		more_ids[0] = do_dis_add_service_dns( str0, "L", &Version_number,
+						sizeof(Version_number), 0, 0, dnsid );
+
+		more_ids[1] = do_dis_add_service_dns( str1, "C", 0, 0, client_info, (dim_long)dnsp, dnsid );
+		dnsp->dis_client_id = more_ids[1];
+		more_ids[2] = do_dis_add_service_dns( str2, "C", 0, 0, service_info, (dim_long)dnsp, dnsid );
+		dnsp->dis_service_id = more_ids[2];
+		more_ids[3] = do_dis_add_cmnd_dns( str3, "L:1", add_exit_handler, 0, dnsid );
+		more_ids[4] = do_dis_add_cmnd_dns( str4, "L:1", exit_handler, 0, dnsid );
+		more_ids[5] = 0;
+		strcpy( dnsp->task_name, task );
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("start serving %s\n",task);
+}
+	}
+/*
+	if(idlist)
+	{
+		for(i = 0; idlist[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(idlist[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+	}
+	if(dnsp != Default_DNS)
+	{
+		for(i = 0; more_ids[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(more_ids[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+		dnsp->dis_n_services += n_services;
+		Dis_n_services -= n_services;
+	}
+*/
+	if(!Dis_timer_q)
+		Dis_timer_q = dtq_create();
+	if( !dnsp->dns_dis_conn_id )
+	{
+		if(!strcmp(task,"DIS_DNS"))
+		{
+			register_services(dnsp, ALL, 1);
+			ENABLE_AST
+			return(id_get(&(dnsp->dis_dns_packet), SRC_DIS));
+		}
+		else
+		{
+		
+			dnsp->dns_dis_conn_id = open_dns(dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined", -1);
+		}
+	}
+	else
+	{
+		register_services(dnsp, MORE, 0);
+		if(dnsp->dis_service_id)
+		{
+/*
+			dis_update_service(Dis_service_id);
+*/
+			if(!dnsp->updating_service_list)
+			{
+				dtq_start_timer(1, do_update_service_list, dnsp);
+				dnsp->updating_service_list = 1;
+			}
+		}
+	}
+	ENABLE_AST
+	}
+	return(1);
+}
+
+
+/* asynchrounous reception of requests */
+/*
+	Called by DNA package.
+	A request has arrived, queue it to process later - dis_ins_request
+*/
+static void dis_insert_request(int conn_id, DIC_PACKET *dic_packet, int size, int status)
+{
+	register SERVICE *servp;
+	register REQUEST *newp, *reqp;
+	CLIENT *clip, *create_client();
+	REQUEST_PTR *reqpp;
+	int type, new_client = 0, found = 0;
+	int find_release_request();
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	/* status = 1 => new connection, status = -1 => conn. lost */
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(status != 0)
+	{
+		if(status == -1) /* release all requests from conn_id */
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Disconnection %d, from %s@%s\n",
+	   conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+			release_conn(conn_id, 0, 0);
+		}
+		else
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Connection %d, from %s@%s\n",
+	   conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+		}  
+	} 
+	else 
+	{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Request for %s, from %d  %s@%s\n",
+	   dic_packet->service_name, conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+		dic_packet->type = vtohl(dic_packet->type);
+		type = dic_packet->type & 0xFFF;
+		/*
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			return;
+		}
+		*/
+		if(type == DIM_DELETE) 
+		{
+			find_release_request(conn_id, vtohl(dic_packet->service_id));
+			return;
+		}
+		if(!(servp = find_service(dic_packet->service_name)))
+		{
+			release_conn(conn_id, 0, 0);
+			return;
+		}
+		newp = (REQUEST *)/*my_*/malloc(sizeof(REQUEST));
+		newp->service_ptr = servp;
+		newp->service_id = vtohl(dic_packet->service_id);
+		newp->type = dic_packet->type;
+		newp->timeout = vtohl(dic_packet->timeout);
+		newp->format = vtohl(dic_packet->format);
+		newp->conn_id = conn_id;
+		newp->first_time = 1;
+		newp->delay_delete = 0;
+		newp->to_delete = 0;
+		newp->timr_ent = 0;
+		newp->req_id = id_get((void *)newp, SRC_DIS);
+		newp->reqpp = 0;
+		if(type == ONCE_ONLY) 
+		{
+			execute_service(newp->req_id);
+			id_free(newp->req_id, SRC_DIS);
+			free(newp);
+			clip = create_client(conn_id, servp, &new_client);
+			return;
+		}
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->conn_id == conn_id)
+				{
+					id_free(newp->req_id, SRC_DIS);
+					free(newp);
+					found = 1;
+					break;
+				}
+			}
+			if(!found)
+				dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+			clip = create_client(conn_id, servp, &new_client);
+			return;
+		}
+		dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+		clip = create_client(conn_id, servp, &new_client);
+		reqpp = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		reqpp->reqp = newp;
+		dll_insert_queue( (DLL *) clip->requestp_head, (DLL *) reqpp );
+		newp->reqpp = reqpp;
+		if((type != MONIT_ONLY) && (type != UPDATE))
+		{
+			execute_service(newp->req_id);
+		}
+		if((type != MONIT_ONLY) && (type != MONIT_FIRST))
+		{
+			if(newp->timeout != 0)
+			{
+				newp->timr_ent = dtq_add_entry( Dis_timer_q,
+							newp->timeout, 
+							execute_service,
+							newp->req_id );
+			}
+		}
+		if(new_client)
+		{
+			Last_client = conn_id;
+			dnsp = clip->dnsp;
+			if(dnsp->dis_client_id)
+			  dis_update_service(dnsp->dis_client_id);
+		}
+	}
+}
+
+/* A timeout for a timed or monitored service occured, serve it. */
+
+int execute_service( int req_id )
+{
+	int *buffp, size;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[80], def[MAX_NAME];
+	int conn_id, last_conn_id;
+	int *pkt_buffer, header_size, aux;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+	FORMAT_STR format_data_cp[MAX_NAME/4];
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return(0);
+	if(reqp->to_delete)
+		return(0);
+	reqp->delay_delete++;
+	servp = reqp->service_ptr;
+	conn_id = reqp->conn_id;
+
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Updating %s for %s@%s (req_id = %d)\n",
+	   servp->name, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node, 
+	   reqp->req_id);
+}
+
+	last_conn_id = Curr_conn_id;
+	Curr_conn_id = conn_id;
+	if(servp->type == COMMAND)
+	{
+		sprintf(str,"This is a COMMAND Service");
+		buffp = (int *)str;
+		size = 26;
+		sprintf(def,"c:26");
+	}
+	else if( servp->user_routine != 0 ) 
+	{
+		if(reqp->first_time)
+		{
+			Last_n_clients = dis_get_n_clients(servp->id);
+		}
+		(servp->user_routine)( &servp->tag, &buffp, &size,
+					&reqp->first_time );
+		reqp->first_time = 0;
+		
+	} 
+	else 
+	{
+		buffp = servp->address;
+		size = servp->size;
+	}
+	Curr_conn_id = last_conn_id;
+/* send even if no data but not if negative */
+	if( size  < 0)
+	{
+		reqp->delay_delete--;
+		return(0);
+	}
+	if( DIS_STAMPED_HEADER + size > Dis_packet_size ) 
+	{
+		if( Dis_packet_size )
+			free( Dis_packet );
+		Dis_packet = (DIS_STAMPED_PACKET *)malloc((size_t)(DIS_STAMPED_HEADER + size));
+		if(!Dis_packet)
+		{
+			reqp->delay_delete--;
+			return(0);
+		}
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+	}
+	Dis_packet->service_id = htovl(reqp->service_id);
+	if((reqp->type & 0xFF000) == STAMPED)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		if(!servp->user_secs)
+		{
+#ifdef WIN32
+			ftime(&timebuf);
+			aux = timebuf.millitm;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)timebuf.time);
+#else
+			tz = 0;
+		        gettimeofday(&tv, tz);
+			aux = (int)tv.tv_usec / 1000;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)tv.tv_sec);
+#endif
+		}
+		else
+		{
+			aux = /*0xc0de0000 |*/ servp->user_millisecs;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(servp->user_secs);
+		}
+		Dis_packet->reserved[0] = (int)htovl(0xc0dec0de);
+		Dis_packet->quality = htovl(servp->quality);
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	size = copy_swap_buffer_out(reqp->format, format_data_cp, 
+		pkt_buffer,
+		buffp, size);
+	Dis_packet->size = htovl(header_size + size);
+	if( !dna_write_nowait(conn_id, Dis_packet, header_size + size) ) 
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+			dim_print_date_time();
+			if(reqp->delay_delete > 1)
+			{
+				printf(" Server (Explicitly) Updating Service %s: Couldn't write to Conn %3d : Client %s@%s\n",
+					servp->name, conn_id,
+					Net_conns[conn_id].task, Net_conns[conn_id].node);
+			}
+			else
+			{
+				printf(" Server Updating Service %s: Couldn't write to Conn %3d : Client %s@%s\n",
+					servp->name, conn_id,
+					Net_conns[conn_id].task, Net_conns[conn_id].node);
+			}
+			fflush(stdout);
+		}
+		if(reqp->delay_delete > 1)
+		{
+			reqp->to_delete = 1;
+		}
+		else
+		{
+			reqp->delay_delete = 0;
+			release_conn(conn_id, 1, 0);
+		}
+	}
+/*
+	else
+	{
+		if((reqp->type & 0xFFF) == MONITORED)
+		{
+			if(reqp->timr_ent)
+				dtq_clear_entry(reqp->timr_ent);
+		}
+	}
+*/
+	if(reqp->delay_delete > 0)
+		reqp->delay_delete--;
+	return(1);
+}
+
+void remove_service( int req_id )
+{
+	register REQUEST *reqp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int service_id;
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return;
+	if( !packet_size ) {
+		dis_packet = (DIS_PACKET *)malloc((size_t)DIS_HEADER);
+		packet_size = DIS_HEADER;
+	}
+	service_id = (int)((unsigned)reqp->service_id | 0x80000000);
+	dis_packet->service_id = htovl(service_id);
+	dis_packet->size = htovl(DIS_HEADER);
+/*
+	if( !dna_write_nowait(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+Has to be dna_write otherwise the client gets the message much before the DNS
+*/
+	if( !dna_write(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+	{
+		dim_print_date_time();
+		printf(" Server Removing Service: Couldn't write to Conn %3d : Client %s@%s\n",
+			reqp->conn_id, Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node);
+		fflush(stdout);
+		release_conn(reqp->conn_id, 0, 0);
+	}
+}
+
+void execute_command(SERVICE *servp, DIC_PACKET *packet)
+{
+	int size;
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+
+	size = vtohl(packet->size) - DIC_HEADER;
+	add_size = size + (size/2);
+	if(!buffer_size)
+	{
+		buffer = (int *)malloc((size_t)add_size);
+		buffer_size = add_size;
+	} 
+	else 
+	{
+		if( add_size > buffer_size ) 
+		{
+			free(buffer);
+			buffer = (int *)malloc((size_t)add_size);
+			buffer_size = add_size;
+		}
+	}
+
+	dis_set_timestamp(servp->id, 0, 0);
+	if(servp->user_routine != 0)
+	{
+		format = vtohl(packet->format);
+		memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+		if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= ((short)format & (short)0xf0);
+				formatp->flags &= (short)0xFFF0;	/* NOSWAP */
+			}
+		}
+		else
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= ((short)format & (short)0xf0);
+			}
+		}
+		size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 packet->buffer, size);
+		(servp->user_routine)(&servp->tag, buffer, &size);
+	}
+}
+
+void dis_report_service(char *serv_name)
+{
+	register SERVICE *servp;
+	register REQUEST *reqp;
+	int to_delete = 0, more;
+
+	
+	DISABLE_AST
+	servp = find_service(serv_name);
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		if((reqp->type & 0xFFF) != TIMED_ONLY)
+		{
+			execute_service(reqp->req_id);
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	if(to_delete)
+	{
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) )
+			{
+				if(reqp->to_delete)
+				{
+					more = 1;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+			}
+		}while(more);
+	}
+	ENABLE_AST
+}
+
+int dis_update_service(unsigned service_id)
+{
+int do_update_service();
+
+	return(do_update_service(service_id,0));
+}
+
+int dis_selective_update_service(unsigned service_id, int *client_ids)
+{
+int do_update_service();
+
+	return(do_update_service(service_id, client_ids));
+}
+
+int check_client(REQUEST *reqp, int *client_ids)
+{
+	if(!client_ids)
+		return(1);
+	while(*client_ids)
+	{
+		if(reqp->conn_id == *client_ids)
+		{
+			return(1);
+		}
+		client_ids++;
+	}
+	return(0);
+}
+
+int do_update_service(unsigned service_id, int *client_ids)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	CLIENT *clip;
+	register int found = 0;
+	int to_delete = 0, more, conn_id;
+	char str[128];
+	int release_request();
+	int n_clients = 0;
+
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(!service_id)
+	{
+		sprintf(str, "Update Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	servp->delay_delete = 1;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+/*
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Updating %s (id = %d, ptr = %08lX) for %s@%s (req_id = %d, req_ptr = %08lX)\n",
+	   servp->name, (int)service_id, (unsigned dim_long)servp, 
+	   Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node, reqp->req_id, (unsigned dim_long)reqp);
+}
+*/
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 1;
+			n_clients++;
+		}
+	}
+	ENABLE_AST
+	{
+	DISABLE_AST
+	Last_n_clients = n_clients;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->delay_delete && ((reqp->type & 0xFFF) != COMMAND))
+		{
+		if(check_client(reqp, client_ids))
+		{
+			if( (reqp->type & 0xFFF) != TIMED_ONLY ) 
+			{
+/*
+				DISABLE_AST
+*/
+				execute_service(reqp->req_id);
+				found++;
+				ENABLE_AST
+				{
+				DISABLE_AST
+				}
+			}
+		}
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 0;
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	ENABLE_AST
+	}
+	if(to_delete)
+	{
+		DISABLE_AST
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->to_delete & 0x1)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+				else if(reqp->to_delete & 0x2)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					reqpp = reqp->reqpp;
+					conn_id = reqp->conn_id;
+					release_request(reqp, reqpp, 1);
+					clip = find_client(conn_id);
+					if(clip)
+					{
+						if( dll_empty((DLL *)clip->requestp_head) ) 
+						{
+							release_conn( conn_id, 0, 0);
+						}
+					}
+					break;
+				}
+			}
+		}while(more);
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	servp->delay_delete = 0;
+	if(servp->to_delete)
+	{
+		dis_remove_service(servp->id);
+	}
+	ENABLE_AST
+	}
+
+	return(found);
+}
+
+int dis_get_n_clients(unsigned service_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	register int found = 0;
+	char str[128];
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Service Has Clients- Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		found++;
+	}
+	ENABLE_AST
+	return found;
+}
+
+int dis_get_timeout(unsigned service_id, int client_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[128];
+
+	if(!service_id)
+	{
+		sprintf(str,"Get Timeout - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		return(-1);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		return(-1);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->conn_id == client_id)
+			return(reqp->timeout);
+	}
+	return(-1);
+}
+
+void dis_set_quality( unsigned serv_id, int quality )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Quality - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp->quality = quality;
+	ENABLE_AST
+}
+
+int dis_set_timestamp( unsigned serv_id, int secs, int millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(secs == 0)
+	{
+#ifdef WIN32
+			ftime(&timebuf);
+			servp->user_secs = (int)timebuf.time;
+			servp->user_millisecs = timebuf.millitm;
+#else
+			tz = 0;
+		    gettimeofday(&tv, tz);
+			servp->user_secs = (int)tv.tv_sec;
+			servp->user_millisecs = (int)tv.tv_usec / 1000;
+#endif
+	}
+	else
+	{
+		servp->user_secs = secs;
+/*
+		servp->user_millisecs = (millisecs & 0xffff);
+*/
+		servp->user_millisecs = millisecs;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int dis_get_timestamp( unsigned serv_id, int *secs, int *millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	*secs = 0;
+	*millisecs = 0;
+	if(!serv_id)
+	{
+		sprintf(str,"Get Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->user_secs)
+	{
+		*secs = servp->user_secs;
+		*millisecs = servp->user_millisecs;
+	}
+/*
+	else
+	{
+		*secs = 0;
+		*millisecs = 0;
+	}
+*/
+	ENABLE_AST
+	return(1);
+}
+
+void dis_send_service(unsigned service_id, int *buffer, int size)
+{
+	register REQUEST *reqp, *prevp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int conn_id;
+	char str[128];
+
+	DISABLE_AST
+	if( !service_id ) {
+		sprintf(str,"Send Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!packet_size)
+	{
+		dis_packet = (DIS_PACKET *)malloc((size_t)(DIS_HEADER+size));
+		packet_size = DIS_HEADER + size;
+	} 
+	else 
+	{
+		if( DIS_HEADER+size > packet_size ) 
+		{
+			free(dis_packet);
+			dis_packet = (DIS_PACKET *)malloc((size_t)(DIS_HEADER+size));
+			packet_size = DIS_HEADER+size;
+		}
+	}
+	prevp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) prevp)) ) 
+	{
+		dis_packet->service_id = htovl(reqp->service_id);
+		memcpy(dis_packet->buffer, buffer, (size_t)size);
+		dis_packet->size = htovl(DIS_HEADER + size);
+
+		conn_id = reqp->conn_id;
+		if( !dna_write_nowait(conn_id, dis_packet, size + DIS_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Server Sending Service: Couldn't write to Conn %3d : Client %s@%s\n",conn_id,
+				Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			release_conn(conn_id, 1, 0);
+		}
+		else
+			prevp = reqp;
+	}
+	ENABLE_AST
+}
+
+int dis_remove_service(unsigned service_id)
+{
+	register REQUEST *reqp, *auxp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	int found = 0;
+	char str[128];
+	int release_request();
+	int dis_hash_service_remove();
+	DIS_DNS_CONN *dnsp;
+	int n_services;
+	void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str,"Remove Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Removing service %s, delay_delete = %d\n",
+	servp->name, servp->delay_delete);
+}
+	if(servp->delay_delete)
+	{
+		servp->to_delete = 1;
+		ENABLE_AST
+		return(found);
+	}
+	/* remove from name server */
+	
+	dnsp = servp->dnsp;
+	unregister_service(dnsp, servp);
+	/* Release client requests and remove from actual clients */
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		remove_service(reqp->req_id);
+		auxp = reqp->prev;
+		reqpp = (REQUEST_PTR *) reqp->reqpp;
+		release_request(reqp, reqpp, 1);
+		found = 1;
+		reqp = auxp;
+	}
+	if(servp->id == (int)dnsp->dis_service_id)
+	  dnsp->dis_service_id = 0;
+	if(servp->id == (int)dnsp->dis_client_id)
+	  dnsp->dis_client_id = 0;
+	dis_hash_service_remove(servp);
+	id_free(servp->id, SRC_DIS);
+	free(servp->request_head);
+	free(servp);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dnsp->dis_n_services--;
+		n_services = dnsp->dis_n_services;
+	}
+	else
+	{
+		Dis_n_services--;
+		n_services = Dis_n_services;
+	}
+*/
+	dnsp->dis_n_services--;
+	n_services = dnsp->dis_n_services;
+
+	if(dnsp->serving)
+	{
+		if(n_services == 5)
+		{
+			if(Dis_conn_id)
+			{
+				dna_close(Dis_conn_id);
+				Dis_conn_id = 0;
+			}
+			ENABLE_AST
+/*
+			dis_stop_serving();
+*/
+			do_dis_stop_serving_dns(dnsp);
+		}
+		else
+		{
+			ENABLE_AST
+		}
+	}
+	else
+	{
+		ENABLE_AST
+	}
+	return(found);
+}
+
+void do_dis_stop_serving_dns(DIS_DNS_CONN *dnsp)
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_no_dns();
+int hash_index, old_index;
+extern int close_dns(dim_long, int);
+CLIENT *clip, *cprevp;
+
+	dnsp->serving = 0;
+	dis_init();
+/*
+	dis_hash_service_init();
+	prevp = 0;
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	if(dnsp->dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, dnsp->dns_timr_ent);
+		dnsp->dns_timr_ent = NULL;
+	}
+	if(dnsp->dns_dis_conn_id)
+	{
+		dna_close(dnsp->dns_dis_conn_id);
+		dnsp->dns_dis_conn_id = 0;
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	old_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		if(servp->dnsp == dnsp)
+		{
+			ENABLE_AST
+			dis_remove_service((unsigned)servp->id);
+			{
+			DISABLE_AST
+			if(old_index != hash_index)
+				prevp = 0;
+			}
+		}
+		else
+		{
+			prevp = servp;
+			old_index = hash_index;
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	cprevp = Client_head;
+	while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) cprevp)) )
+	{
+		if(clip->dnsp != dnsp)
+		{
+			cprevp = clip;
+			continue;
+		}
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Releasing conn %d, to %s@%s\n",
+	   clip->conn_id, 
+	   Net_conns[clip->conn_id].task, Net_conns[clip->conn_id].node);
+}
+			release_conn( clip->conn_id, 0, 0);
+		}
+		else
+		{
+			cprevp = clip;
+		}
+	}
+	ENABLE_AST
+	}
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Cleaning dnsp variables\n");
+}
+
+	dnsp->dis_first_time = 1;
+	dnsp->dis_n_services = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	close_dns(dnsp->dnsid, SRC_DIS);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dll_remove(dnsp);
+		free(dnsp);
+	}
+*/
+/*
+	if(dll_empty(DNS_head))
+*/
+	if(dis_no_dns())
+		dis_stop_serving();
+}
+
+void dis_stop_serving_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp, *dis_find_dns();
+
+	dnsp = dis_find_dns(dnsid);
+	do_dis_stop_serving_dns(dnsp);
+}
+
+void dis_stop_serving()
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_find_client_conns();
+int hash_index;
+
+/*
+	if(Serving != -1)
+*/
+	Serving = 0;
+	dis_init();
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+/*
+	if(Dns_dis_conn_id)
+	{
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		ENABLE_AST
+		dis_remove_service((unsigned)servp->id);
+		{
+		DISABLE_AST
+		prevp = 0;
+		}
+	}
+	ENABLE_AST
+	}
+/*
+	if(Dis_conn_id)
+		dna_close(Dis_conn_id);
+	if(Dns_dis_conn_id)
+		dna_close(Dns_dis_conn_id);
+	Dns_dis_conn_id = 0;
+*/
+	Dis_first_time = 1;
+/*
+	if(Dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+*/
+	dtq_delete(Dis_timer_q);
+	Dis_timer_q = 0;
+/*
+	if(Serving != -1)
+*/
+	if(!dis_find_client_conns())
+		dim_stop_threads();
+}
+
+int dis_find_client_conns()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+		{
+			if(Dna_conns[i].read_ast == dis_insert_request)
+			{
+				dna_close(i);
+			}
+			else
+			{
+				n++;
+			}
+		}
+	}
+	return(n);
+}
+
+/* find service by name */
+SERVICE *find_service(char *name)
+{
+	return(dis_hash_service_exists(name));
+}
+
+CLIENT *create_client(int conn_id, SERVICE *servp, int *new_client)
+{
+	CLIENT *clip;
+
+	*new_client = 0;
+	if(!(clip = find_client(conn_id)))
+	{
+		/*
+		dna_set_test_write(conn_id, 15);
+		*/
+		clip = (CLIENT *)malloc(sizeof(CLIENT));
+		clip->conn_id = conn_id;
+		clip->dnsp = servp->dnsp;
+		clip->requestp_head = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		dll_init( (DLL *) clip->requestp_head );
+		dll_insert_queue( (DLL *) Client_head, (DLL *) clip );
+		*new_client = 1;
+	}
+	return clip;
+}
+
+CLIENT *find_client(int conn_id)
+{
+	register CLIENT *clip;
+
+	clip = (CLIENT *)
+			dll_search( (DLL *) Client_head, &conn_id, sizeof(conn_id));
+	return(clip);
+}
+
+void release_all_requests(int conn_id, CLIENT *clip)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register REQUEST *reqp;
+    int found = 0;
+	int release_request();
+	DIS_DNS_CONN *dnsp = 0;
+
+	DISABLE_AST;
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			auxp = reqpp->prev;
+			reqp = (REQUEST *) reqpp->reqp;
+			release_request(reqp, reqpp, 0);
+			found = 1;
+			reqpp = auxp;
+		}
+		dnsp = clip->dnsp;
+		dll_remove(clip);
+		free(clip->requestp_head);
+		free(clip);
+	}
+	if(found)
+	{
+		Last_client = -conn_id;
+		if(dnsp->dis_client_id)
+		  dis_update_service(dnsp->dis_client_id);
+	}
+	dna_close(conn_id);
+	ENABLE_AST;
+}
+
+CLIENT *check_delay_delete(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int found = 0;
+
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->delay_delete)
+			{
+				reqp->to_delete = 1;
+				found = 1;
+			}
+		}
+	}
+	ENABLE_AST;
+	if(found)
+	{
+		return((CLIENT *)-1);
+	}
+	return(clip);
+}
+
+char *dis_get_error_services()
+{
+	return(dis_get_client_services(Error_conn_id));
+}
+
+char *dis_get_client_services(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);
+	{
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)))
+		{
+			n_services++;
+		}
+		if(!n_services)
+		{
+			ENABLE_AST
+			return((char *)0);
+		}
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			servp = reqp->service_ptr;
+			strcat(buff_ptr, servp->name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += (int)strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		ENABLE_AST
+		return((char *)0);
+	}
+	ENABLE_AST;
+	}
+/*
+	dim_print_date_time();
+	dna_get_node_task(conn_id, node, task);
+	printf("Client %s@%s uses services: \n", task, node);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int find_release_request(int conn_id, int service_id)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int release_request();
+
+	DISABLE_AST
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->service_id == service_id)
+			{
+				if(reqp->delay_delete)
+				{
+					reqp->to_delete += 0x2;
+				}
+				else
+				{
+					auxp = reqpp->prev;
+					release_request(reqp, reqpp, 0);
+					reqpp = auxp;
+				}
+			}
+		}
+/* The client should close the connection (there may be commands)
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+			release_conn( conn_id, 0, 0 );
+		}
+*/
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int release_request(REQUEST *reqp, REQUEST_PTR *reqpp, int remove)
+{
+	int conn_id;
+	CLIENT *clip;
+
+	DISABLE_AST
+	conn_id = reqp->conn_id;
+	if(reqpp)
+		dll_remove((DLL *)reqpp);
+	dll_remove((DLL *)reqp);
+	if(reqp->timr_ent)
+		dtq_rem_entry(Dis_timer_q, reqp->timr_ent);
+	id_free(reqp->req_id, SRC_DIS);
+	free(reqp);
+	if(reqpp)
+		free(reqpp);
+/* Would do it too early, the client will disconnect anyway
+*/
+	if((remove) && (Serving == 0))
+	{
+		clip = find_client(conn_id);
+		if(clip)
+		{
+			if( dll_empty((DLL *)clip->requestp_head) ) 
+			{
+				release_conn( conn_id, 0, 0);
+			}
+		}
+	}
+
+	ENABLE_AST
+	return(1);
+}
+
+static int release_conn(int conn_id, int print_flg, int dns_flag)
+{
+	static int releasing = 0;
+	CLIENT *clip;
+	int do_exit_handler();
+
+	DISABLE_AST
+	if(print_flg){}
+	if(dns_flag)
+	{
+		recv_dns_dis_rout( conn_id, 0, 0, STA_DISC );
+		ENABLE_AST
+		return(0);
+	}
+#ifdef VMS
+	if(print_flg)
+	{
+		dim_print_date_time();
+		dna_get_node_task(conn_id, node, task);
+		printf(" Couldn't write to client %s@%s, releasing connection %d\n",
+			task, node, conn_id);
+		fflush(stdout);
+	}
+#endif
+	clip = check_delay_delete(conn_id);
+	if(clip != (CLIENT *)-1)
+	{
+		if( Client_exit_user_routine != 0 ) 
+		{
+			releasing++;
+			Curr_conn_id = conn_id;
+			do_exit_handler(conn_id);
+			releasing--;
+		}
+		if(!releasing)
+		{
+			release_all_requests(conn_id, clip);
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+typedef struct cmnds{
+	struct cmnds *next;
+	dim_long tag;
+	int size;
+	int buffer[1];
+} DIS_CMND;
+
+static DIS_CMND *Cmnds_head = (DIS_CMND *)0;
+
+void std_cmnd_handler(dim_long *tag, int *cmnd_buff, int *size)
+{
+	register DIS_CMND *new_cmnd;
+/* queue the command */
+
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	new_cmnd = (DIS_CMND *)malloc((size_t)((*size)+12));
+	new_cmnd->next = 0;
+	new_cmnd->tag = *tag;
+	new_cmnd->size = *size;
+	memcpy(new_cmnd->buffer, cmnd_buff, (size_t)*size);
+	sll_insert_queue((SLL *) Cmnds_head, (SLL *) new_cmnd);
+}
+
+int dis_get_next_cmnd(dim_long *tag, int *buffer, int *size)
+{
+	register DIS_CMND *cmndp;
+	register int ret_val = -1;
+
+	DISABLE_AST
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	if(*size == 0)
+	{
+		if( (cmndp = (DIS_CMND *) sll_get_head((SLL *) Cmnds_head)))
+		{
+			if(cmndp->size > 0)
+			{
+				*size = cmndp->size;
+				*tag = cmndp->tag;
+				ENABLE_AST
+				return(-1);
+			}
+		}
+	}
+	if( (cmndp = (DIS_CMND *) sll_remove_head((SLL *) Cmnds_head)) )
+	{
+		if (*size >= cmndp->size)
+		{
+			*size = cmndp->size;
+			ret_val = 1;
+		}
+		memcpy(buffer, cmndp->buffer, (size_t)*size);
+		*tag = cmndp->tag;
+		free(cmndp);
+		ENABLE_AST
+		return(ret_val);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+int dis_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dis_get_client(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+#ifdef VMS
+dis_convert_str(c_str, for_str)
+char *c_str;
+struct dsc$descriptor_s *for_str;
+{
+	int i;
+
+	strcpy(for_str->dsc$a_pointer, c_str);
+	for(i = (int)strlen(c_str); i< for_str->dsc$w_length; i++)
+		for_str->dsc$a_pointer[i] = ' ';
+}
+#endif
+
+void client_info(dim_long *tag, int **bufp, int *size, int *first_time)
+{
+	register CLIENT *clip;
+	int curr_conns[MAX_CONNS];
+	int i, index, max_size;
+	static int curr_allocated_size = 0;
+	static char *dns_info_buffer;
+	register char *dns_client_info;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+
+	max_size = sizeof(DNS_CLIENT_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_client_info = dns_info_buffer;
+	dns_client_info[0] = '\0';
+	index = 0;
+	if(*first_time)
+	{
+		clip = Client_head;
+		while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) clip)) )
+		{
+			if(clip->dnsp != dnsp)
+				continue;
+			curr_conns[index++] = clip->conn_id;
+		}
+		max_size = (index+1)*(int)sizeof(DNS_CLIENT_INFO);
+		if (max_size > curr_allocated_size)
+		{
+			free(dns_info_buffer);
+			dns_info_buffer = malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		dns_client_info = dns_info_buffer;
+		dns_client_info[0] = '\0';
+	}
+	else
+	{
+		if(Last_client > 0)
+		{
+			strcat(dns_client_info,"+");
+			curr_conns[index++] = Last_client;
+		}
+		else
+		{
+			strcat(dns_client_info,"-");
+			curr_conns[index++] = -Last_client;
+		}
+	}
+	
+	for(i=0; i<index;i++)
+	{
+		dna_get_node_task(curr_conns[i], node, task);
+		strcat(dns_client_info,task);
+		strcat(dns_client_info,"@");
+		strcat(dns_client_info,node);
+		strcat(dns_client_info,"|");
+	}
+	if(index)
+		dns_client_info[(int)strlen(dns_client_info)-1] = '\0';
+	*bufp = (int *)dns_info_buffer;
+	*size = (int)strlen(dns_info_buffer)+1;
+}
+
+void append_service(char *service_info_buffer, SERVICE *servp)		
+{
+	char name[MAX_NAME], *ptr;
+
+		if(strstr(servp->name,"/RpcIn"))
+		{
+			strcpy(name,servp->name);
+			ptr = (char *)strstr(name,"/RpcIn");
+			*ptr = 0;
+			strcat(service_info_buffer, name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(name,"/RpcOut");
+			if( (servp = find_service(name)) )
+			{
+				strcat(service_info_buffer, ",");
+				if(servp->def[0])
+				{
+					strcat(service_info_buffer, servp->def);
+				}
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+		}
+		else if(strstr(servp->name,"/RpcOut"))
+		{
+/*
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+
+*/
+		}
+		else
+		{
+			strcat(service_info_buffer, servp->name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|");
+			if(servp->type == COMMAND)
+			{
+				strcat(service_info_buffer, "CMD");
+			}
+			strcat(service_info_buffer, "\n");
+		}
+}
+
+void service_info(dim_long *tag, int **bufp, int *size, int *first_time)
+{
+	register SERVICE *servp;
+	int max_size, done = 0;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+	int hash_index;
+
+	DISABLE_AST
+	max_size = (dnsp->dis_n_services+10) * (MAX_NAME*2 + 4);
+	if(!curr_allocated_size)
+	{
+		service_info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(service_info_buffer);
+		service_info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	service_info_buffer[0] = '\0';
+	buff_ptr = service_info_buffer;
+	servp = 0;
+	hash_index = -1;
+	if(*first_time)
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered)
+			{
+/*
+				servp->registered = 2;
+*/
+				if((dnsp->updating_service_list) && (Last_n_clients > 1) && 
+					(servp->registered == 1))
+					continue;
+				servp->registered = Last_n_clients+1;
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+			}
+		}
+	}
+	else
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+/*
+			if(servp->registered == 1)
+*/
+			if(servp->registered == 0)
+			{
+				strcat(buff_ptr, "-");
+				buff_ptr += (int)strlen(buff_ptr);
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+			}
+			else if(servp->registered < (Last_n_clients+1))
+			{
+				if(!done)
+				{
+					strcat(buff_ptr, "+");
+					buff_ptr += (int)strlen(buff_ptr);
+					done = 1;
+				}
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+/*
+				servp->registered = 2;
+*/
+				servp->registered++;
+			}
+		}
+	}
+	*bufp = (int *)service_info_buffer;
+	*size = (int)(buff_ptr - service_info_buffer+1);
+	if(*size == 1)
+		*size = -1;
+	ENABLE_AST
+}
+	
+static void add_exit_handler_item(int conn_id, int tag)
+{
+	EXIT_H *newp;
+
+	DISABLE_AST
+	if(!Exit_h_head) 
+	{
+		Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+		sll_init( (SLL *) Exit_h_head );
+	}
+	if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+		(char *)&conn_id, 4)) )
+	{
+		newp->conn_id = conn_id;
+		newp->exit_id = tag;
+		strcpy(newp->node, Net_conns[conn_id].node);
+		strcpy(newp->task, Net_conns[conn_id].task);
+	}
+	else
+	{
+		newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+		newp->conn_id = conn_id;
+		newp->exit_id = tag;
+		strcpy(newp->node, Net_conns[conn_id].node);
+		strcpy(newp->task, Net_conns[conn_id].task);
+		sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+	}
+	ENABLE_AST
+}
+
+static void rem_exit_handler_item(EXIT_H *exitp)
+{
+
+	DISABLE_AST
+	if(!Exit_h_head) 
+	{
+		ENABLE_AST
+		return;
+	}
+	sll_remove( (SLL *) Exit_h_head, (SLL *) exitp );
+	free(exitp);
+	ENABLE_AST
+}
+
+static EXIT_H *find_exit_handler_item(int conn_id)
+{
+	EXIT_H *exitp;
+
+	DISABLE_AST;
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return((EXIT_H *)0);
+	}
+	if( (exitp = (EXIT_H *) sll_search((SLL *) Exit_h_head, (char *) &conn_id, 4)) )
+	{
+		ENABLE_AST;
+		return(exitp);
+	}
+	ENABLE_AST;
+	return((EXIT_H *)0);
+}
+
+static int check_exit_handler_item(EXIT_H *exitp, int conn_id)
+{
+	if( (!strcmp(exitp->node, Net_conns[conn_id].node)) &&
+		(!strcmp(exitp->task, Net_conns[conn_id].task)))
+	{
+		return exitp->exit_id;
+	}
+	return 0;
+}
+
+void add_exit_handler(int *tag, int *bufp, int *size)
+{
+	EXIT_H *exitp;
+
+	if(size){}
+	if(tag){}
+	if(*bufp)
+	{
+		add_exit_handler_item(Curr_conn_id, *bufp);
+	}
+	else
+	{
+		if((exitp = find_exit_handler_item(Curr_conn_id)))
+			rem_exit_handler_item(exitp);
+	}
+}
+
+void dis_set_client_exit_handler(int conn_id, int tag)
+{
+	EXIT_H *exitp;
+
+	if(tag)
+	{
+		add_exit_handler_item(conn_id, tag);
+	}
+	else
+	{
+		if((exitp = find_exit_handler_item(conn_id)))
+			rem_exit_handler_item(exitp);
+	}
+}
+
+
+int do_exit_handler(int conn_id)
+{
+	register EXIT_H *exitp;
+	int exit_id;
+
+	DISABLE_AST;
+	if((exitp = find_exit_handler_item(conn_id)))
+	{
+		if((exit_id = check_exit_handler_item(exitp, conn_id)))
+		{
+			(Client_exit_user_routine)( &exit_id );
+		}
+		else
+		{
+			rem_exit_handler_item(exitp);
+		}
+	}
+/*
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return(0);
+	}
+	while( (exitp = (EXIT_H *) sll_search_next_remove((SLL *) Exit_h_head,
+							 0, (char *) &conn_id, 4)) )
+	{
+		(Client_exit_user_routine)( &exitp->exit_id );
+		free(exitp);
+	}
+*/
+	ENABLE_AST
+	return(1);
+}
+
+static void exit_handler(int *tag, int *bufp, int *size)
+{
+
+	if(size){}
+	if(tag){}
+	if(Exit_user_routine)
+		(Exit_user_routine)( bufp );
+	else
+	{
+/*
+		printf("%s PID %d Exiting!\n", Task_name, getpid());
+*/
+		exit(*bufp);
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason, int exit)
+{
+	int exit_tag, exit_code, exit_size;
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			Curr_conn_id = conn_id;
+			(Error_user_routine)( severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+	}
+	if(severity == DIM_FATAL)
+	{
+		exit_tag = 0;
+		if(exit == -1)
+			exit_code = errcode;
+		else
+			exit_code = exit;
+		exit_size = sizeof(int);
+		exit_handler(&exit_tag, &exit_code, &exit_size);
+	}
+}
+/*
+#define MAX_HASH_ENTRIES 2000
+*/
+#define MAX_HASH_ENTRIES 5000
+
+static SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Service_new_entries[MAX_HASH_ENTRIES];
+
+int dis_hash_service_init()
+{
+
+  int i;
+  static int done = 0;
+
+  if(!done)
+  {
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+/*
+		Service_hash_table[i] = (SERVICE *) malloc(sizeof(SERVICE));
+		dll_init((DLL *) Service_hash_table[i]);
+*/
+		Service_hash_table[i] = 0;
+		Service_new_entries[i] = 0;
+	}
+	done = 1;
+  }
+
+  return(1);
+}
+
+int dis_hash_service_insert(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		Service_hash_table[index] = (SERVICE *) malloc(sizeof(SERVICE));
+		dll_init((DLL *) Service_hash_table[index]);
+	}
+	Service_new_entries[index]++;
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+	return(1);
+}
+
+int dis_hash_service_registered(int index, SERVICE *servp)
+{
+	servp->registered = 1;
+	Service_new_entries[index]--;
+	if(Service_new_entries[index] < 0)
+		Service_new_entries[index] = 0;
+	return 1;
+}
+
+int dis_hash_service_remove(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		return(0);
+	}
+	dll_remove( (DLL *) servp );
+	return(1);
+}
+
+
+SERVICE *dis_hash_service_exists(char *name)
+{
+	int index;
+	SERVICE *servp;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		return((SERVICE *)0);
+	}
+	if( (servp = (SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, (int)strlen(name)+1)) )
+	{
+		return(servp);
+	}
+	return((SERVICE *)0);
+}			
+
+SERVICE *dis_hash_service_get_next(int *curr_index, SERVICE *prevp, int new_entries)
+{
+	int index;
+	SERVICE *servp = 0;
+/*
+	if(!prevp)
+	{
+		index = -1;
+	}
+*/
+	index = *curr_index;
+	if(index == -1)
+	{
+		index++;
+		prevp = Service_hash_table[index];
+	}
+	if(!prevp)
+	{
+		prevp = Service_hash_table[index];
+	}
+	do
+	{
+		if(prevp)
+		{
+			if((!new_entries) || (Service_new_entries[index] > 0))
+			{
+				servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[index],
+						(DLL *) prevp);
+				if(servp)
+					break;
+			}
+		}
+		index++;
+		if(index == MAX_HASH_ENTRIES)
+		{
+			*curr_index = -1;
+			return((SERVICE *) 0);
+		}
+		prevp = Service_hash_table[index];
+	} while(!servp);
+	*curr_index = index;
+	return(servp);
+}
+
+DIS_DNS_CONN *dis_find_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *)
+			dll_search( (DLL *) DNS_head, &dnsid, sizeof(dnsid));
+/*
+	if(!dnsp)
+	{
+		dnsp = create_dns(dnsid);
+	}
+*/
+	return dnsp;
+}
+
+int dis_no_dns()
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *) DNS_head;
+	while ( (dnsp = (DIS_DNS_CONN *) dll_get_next( (DLL *) DNS_head, (DLL *) dnsp)))
+	{
+/*
+		if(dnsp != Default_DNS)
+			return 0;
+*/
+		if(dnsp->serving)
+			return 0;
+	}
+	return 1;
+}
+
+DIS_DNS_CONN *find_dns_by_conn_id(int conn_id)
+{
+	DIS_DNS_CONN *dnsp;
+	extern dim_long dns_get_dnsid();
+	dim_long dnsid;
+
+	dnsid = dns_get_dnsid(conn_id, SRC_DIS);
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = Default_DNS;
+	return (DIS_DNS_CONN *)dnsp;
+}
+
+void dis_print_hash_table()
+{
+	SERVICE *servp;
+	int i;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+		servp = Service_hash_table[i];
+		while( (servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			n_entries++;
+			if(n_entries == 1)
+				printf("    Name = %s\n",servp->name);
+		}
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+void dis_hash_print()
+{
+	SERVICE *servp;
+	int hash_index;
+
+	servp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+	{
+		printf("Name = %s\n",servp->name);
+	}
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN1(INT, dis_start_serving, DIS_START_SERVING, dis_start_serving,
+				 STRING)
+FCALLSCFUN3(INT, dis_get_next_cmnd, DIS_GET_NEXT_CMND, dis_get_next_cmnd,
+				 PINT, PVOID, PINT)
+FCALLSCFUN1(INT, dis_get_client, DIS_GET_CLIENT, dis_get_client,
+				 PSTRING)
+FCALLSCFUN6(INT, dis_add_service, DIS_ADD_SERVICE, dis_add_service,
+				 STRING, PVOID, PVOID, INT, PVOID, INT)
+FCALLSCSUB4(	 dis_add_cmnd, DIS_ADD_CMND, dis_add_cmnd,
+				 STRING, PVOID, PVOID, INT)
+FCALLSCSUB1(	 dis_add_client_exit_handler, DIS_ADD_CLIENT_EXIT_HANDLER, 
+				 dis_add_client_exit_handler,
+				 PVOID)
+FCALLSCSUB2(	 dis_set_client_exit_handler, DIS_SET_CLIENT_EXIT_HANDLER, 
+				 dis_set_client_exit_handler,
+				 INT, INT)
+FCALLSCSUB1(	 dis_add_exit_handler, DIS_ADD_EXIT_HANDLER, 
+				 dis_add_exit_handler,
+				 PVOID)
+FCALLSCSUB1(	 dis_report_service, DIS_REPORT_SERVICE, dis_report_service,
+				 STRING)
+FCALLSCSUB2(	 dis_convert_str, DIS_CONVERT_STR, dis_convert_str,
+				 PVOID, PVOID)
+FCALLSCFUN1(INT, dis_update_service, DIS_UPDATE_SERVICE, dis_update_service,
+				 INT)
+FCALLSCFUN1(INT, dis_remove_service, DIS_REMOVE_SERVICE, dis_remove_service,
+				 INT)
+FCALLSCSUB3(	 dis_send_service, DIS_SEND_SERVICE, dis_send_service,
+				 INT, PVOID, INT)
+FCALLSCSUB2(	 dis_set_quality, DIS_SET_QUALITY, dis_set_quality,
+                 INT, INT)
+FCALLSCSUB3(INT, dis_set_timestamp, DIS_SET_TIMESTAMP, dis_set_timestamp,
+                 INT, INT, INT)
+FCALLSCFUN2(INT, dis_selective_update_service, DIS_SELECTIVE_UPDATE_SERVICE, 
+				 dis_selective_update_service,
+				 INT, PINT)
+FCALLSCSUB3(INT, dis_get_timestamp, DIS_GET_TIMESTAMP, dis_get_timestamp,
+                 INT, PINT, PINT)
+#endif
Index: branches/FACT++_part_filenames/dim/src/dis_old.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dis_old.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dis_old.c	(revision 18732)
@@ -0,0 +1,3091 @@
+/*
+ * DIS (Delphi Information Server) Package implements a library of
+ * routines to be used by servers.
+ *
+ * Started on		 : 10-11-91
+ * Last modification : 28-07-94
+ * Written by		 : C. Gaspar
+ * Adjusted by	     : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <lnmdef.h>
+#	include <ssdef.h>
+#	include <descrip.h>
+#	include <cfortran.h>
+#endif
+/*
+#define DEBUG
+*/
+#include <time.h>
+#ifdef VAX
+#include <timeb.h>
+#else
+#include <sys/timeb.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dis.h>
+
+#define ALL 0
+#define MORE 1
+#define NONE 2
+
+typedef struct dis_dns_ent {
+	struct dis_dns_ent *next;
+	struct dis_dns_ent *prev;
+	long dnsid;
+	char task_name[MAX_NAME];
+	TIMR_ENT *dns_timr_ent;
+	DIS_DNS_PACKET dis_dns_packet;
+	int dis_n_services;
+	int dns_dis_conn_id;
+	int dis_first_time;
+	int serving;
+	unsigned int dis_service_id;
+	unsigned int dis_client_id;
+	int updating_service_list;
+} DIS_DNS_CONN;
+
+typedef struct req_ent {
+	struct req_ent *next;
+	struct req_ent *prev;
+	int conn_id;
+	int service_id;
+	int req_id;
+	int type;
+	struct serv *service_ptr;
+	int timeout;
+	int format;
+	int first_time;
+	int delay_delete;
+	int to_delete;
+	TIMR_ENT *timr_ent;
+	struct reqp_ent *reqpp;
+} REQUEST;
+
+typedef struct serv {
+	struct serv *next;
+	struct serv *prev;
+	char name[MAX_NAME];
+	int id;
+	int type;
+	char def[MAX_NAME];
+	FORMAT_STR format_data[MAX_NAME/4];
+	int *address;
+	int size;
+	void (*user_routine)();
+	long tag;
+	int registered;
+	int quality;
+	int user_secs;
+	int user_millisecs;
+	int tid;
+	REQUEST *request_head;
+	DIS_DNS_CONN *dnsp;
+	int delay_delete;
+	int to_delete;
+} SERVICE;
+
+typedef struct reqp_ent {
+	struct reqp_ent *next;
+	struct reqp_ent *prev;
+	REQUEST *reqp;
+} REQUEST_PTR;
+
+typedef struct cli_ent {
+	struct cli_ent *next;
+	struct cli_ent *prev;
+	int conn_id;
+	REQUEST_PTR *requestp_head; 
+	DIS_DNS_CONN *dnsp;
+} CLIENT;
+
+static CLIENT *Client_head = (CLIENT *)0;	
+
+static DIS_DNS_CONN *DNS_head = (DIS_DNS_CONN *)0;	
+
+/*
+static char Task_name[MAX_NAME];
+static TIMR_ENT *Dns_timr_ent = (TIMR_ENT *)0;
+static DIS_DNS_PACKET Dis_dns_packet = {0, 0, {0}};
+static int Dis_n_services = 0;
+*/
+static int Dis_first_time = 1;
+/*
+static int Dns_dis_conn_id = 0;
+*/
+static int Protocol;
+static int Port_number;
+static int Dis_conn_id = 0;
+static int Curr_conn_id = 0;
+static int Serving = 0;
+static void (*Client_exit_user_routine)() = 0;
+static void (*Exit_user_routine)() = 0;
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+DIS_DNS_CONN *Default_DNS = 0;
+
+typedef struct exit_ent {
+	struct exit_ent *next;
+	int conn_id;
+	int exit_id;
+} EXIT_H;
+
+static EXIT_H *Exit_h_head = (EXIT_H *)0;
+
+/* Do not forget to increase when this file is modified */
+static int Version_number = DIM_VERSION_NUMBER;
+static int Dis_timer_q = 0;
+static int Threads_off = 0;
+/*
+static unsigned int Dis_service_id, Dis_client_id;
+static int Updating_service_list = 0;
+*/
+static int Last_client;
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( static void dis_insert_request, (int conn_id, DIC_PACKET *dic_packet,
+				  int size, int status ) );
+_DIM_PROTO( int execute_service,	(int req_id) );
+_DIM_PROTO( void execute_command,	(SERVICE *servp, DIC_PACKET *packet) );
+_DIM_PROTO( void register_dns_services,  (int flag) );
+_DIM_PROTO( void register_services,  (DIS_DNS_CONN *dnsp, int flag, int dns_flag) );
+_DIM_PROTO( void std_cmnd_handler,   (long *tag, int *cmnd_buff, int *size) );
+_DIM_PROTO( void client_info,		(long *tag, int **bufp, int *size) );
+_DIM_PROTO( void service_info,	   (long *tag, int **bufp, int *size) );
+_DIM_PROTO( void add_exit_handler,   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void exit_handler,	   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void error_handler,	   (int conn_id, int severity, int errcode, char *reason) );
+_DIM_PROTO( SERVICE *find_service,   (char *name) );
+_DIM_PROTO( CLIENT *find_client,   (int conn_id) );
+_DIM_PROTO( static int get_format_data, (FORMAT_STR *format_data, char *def) );
+_DIM_PROTO( static int release_conn, (int conn_id, int print_flag, int dns_flag) );
+_DIM_PROTO( SERVICE *dis_hash_service_exists, (char *name) );
+_DIM_PROTO( SERVICE *dis_hash_service_get_next, (int *start, SERVICE *prev, int flag) );
+_DIM_PROTO( static unsigned do_dis_add_service_dns, (char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag, long dnsid ) );
+_DIM_PROTO( static DIS_DNS_CONN *create_dns, (long dnsid) );
+
+void dis_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dis_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dis_no_threads()
+{
+	Threads_off = 1;
+}
+
+static DIS_STAMPED_PACKET *Dis_packet = 0;
+static int Dis_packet_size = 0;
+
+int dis_set_buffer_size(int size)
+{
+	if(Dis_packet_size)
+		free(Dis_packet);
+	Dis_packet = (DIS_STAMPED_PACKET *)malloc(DIS_STAMPED_HEADER + size);
+	if(Dis_packet)
+	{
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+		return(1);
+	}
+	else
+		return(0);
+}
+
+static int check_service_name(char *name)
+{
+	if(strlen(name) > (MAX_NAME - 1))
+		return(0);
+	return(1);
+}
+
+static void dis_init()
+{
+	int dis_hash_service_init();
+	void dis_dns_init();
+
+	dis_dns_init();
+	{
+	DISABLE_AST
+	dis_hash_service_init();
+	ENABLE_AST
+	}
+}
+
+static unsigned do_dis_add_service_dns( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag, long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Service name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		strcpy(str,"Duplicate Service: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCDUPLC, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc( sizeof(SERVICE) );
+	strncpy( new_serv->name, name, MAX_NAME );
+	if(type != (char *)0)
+	{
+		if (strlen(type) >= MAX_NAME)
+		{
+			strcpy(str,"Format String Too Long: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		if (! get_format_data(new_serv->format_data, type))
+		{
+			strcpy(str,"Bad Format String: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = 0;
+	new_serv->address = (int *)address;
+	new_serv->size = size;
+	new_serv->user_routine = user_routine;
+	new_serv->tag = tag;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->tid = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned)service_id);
+}
+
+static unsigned do_dis_add_service( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag )
+{
+	return do_dis_add_service_dns( name, type, address, size, 
+								   user_routine, tag, 0 );
+}
+
+#ifdef VxWorks
+void dis_destroy(int tid)
+{
+register SERVICE *servp, *prevp;
+int n_left = 0;
+
+	prevp = 0;
+	while( servp = dis_hash_service_get_next(prevp))
+	{
+		if(servp->tid == tid)
+		{
+			dis_remove_service(servp->id);
+		}
+		else
+		{
+			prevp = servp;
+			n_left++;
+		}
+	}
+	if(n_left == 5)
+	{
+		prevp = 0;
+		while( servp = dis_hash_service_get_next(prevp))
+		{
+			dis_remove_service(servp->id);
+		}
+		dna_close(Dis_conn_id);
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+		Dis_first_time = 1;
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+}
+
+
+#endif
+
+unsigned dis_add_service( char *name, char *type, void *address, int size, 
+						 void (*user_routine)(), long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service( name, type, address, size, user_routine, tag);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_service_dns( long dnsid, char *name, char *type, void *address, int size, 
+							 void (*user_routine)(), long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service_dns( name, type, address, size, user_routine, tag, dnsid);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+static unsigned do_dis_add_cmnd_dns( char *name, char *type, void (*user_routine)(), long tag, long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Command name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc(sizeof(SERVICE));
+	strncpy(new_serv->name, name, MAX_NAME);
+	if(type != (char *)0)
+	{
+		if( !get_format_data(new_serv->format_data, type))
+		{
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = COMMAND;
+	new_serv->address = 0;
+	new_serv->size = 0;
+	if(user_routine)
+		new_serv->user_routine = user_routine;
+	else
+		new_serv->user_routine = std_cmnd_handler;
+	new_serv->tag = tag;
+	new_serv->tid = 0;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned) service_id);
+}
+
+static unsigned do_dis_add_cmnd( char *name, char *type, void (*user_routine)(), long tag)
+{
+	return do_dis_add_cmnd_dns(name, type, user_routine, tag, 0);
+}
+
+unsigned dis_add_cmnd( char *name, char *type, void (*user_routine)(), long tag ) 
+{
+	unsigned ret;
+
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_cmnd( name, type, user_routine, tag );
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_cmnd_dns( long dnsid, char *name, char *type, void (*user_routine)(), long tag ) 
+{
+	unsigned ret;
+
+	/*
+	DISABLE_AST
+	*/
+	ret = do_dis_add_cmnd_dns( name, type, user_routine, tag, dnsid );
+	/*
+	ENABLE_AST
+	*/
+	return(ret);
+}
+
+void dis_add_client_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Client_exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_error_handler( void (*user_routine)())
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static int get_format_data(FORMAT_STR *format_data, char *def)
+{
+	register char code, last_code = 0;
+	int num;
+
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			format_data->par_num = 0;
+			format_data->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					format_data->par_bytes = SIZEOF_LONG;
+					format_data->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					format_data->par_bytes = SIZEOF_SHORT;
+					format_data->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					format_data->par_bytes = SIZEOF_FLOAT;
+					format_data->flags |= SWAPL;
+#ifdef vms      	
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+#ifdef vms
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+					format_data->par_bytes = SIZEOF_CHAR;
+					format_data->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+			if(*def)
+			{
+/*
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+
+				error_handler("Bad service definition parsing",2);
+*/
+				return(0);
+			}
+			else
+				format_data->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			format_data->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+				def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			format_data++;
+	}
+	format_data->par_bytes = 0;
+	return(1);
+}
+
+void recv_dns_dis_rout( int conn_id, DNS_DIS_PACKET *packet, int size, int status )
+{
+	char str[128];
+	int dns_timr_time;
+	extern int rand_tmout(int, int);
+	extern int open_dns(long, void (*)(), void (*)(), int, int, int);
+	extern DIS_DNS_CONN *find_dns_by_conn_id(int);
+	extern void do_register_services(DIS_DNS_CONN *);
+	extern void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	dnsp = find_dns_by_conn_id(conn_id);
+	if(!dnsp)
+	{
+		return;
+	}
+	switch(status)
+	{
+	case STA_DISC:	   /* connection broken */
+		if( dnsp->dns_timr_ent ) {
+			dtq_rem_entry( Dis_timer_q, dnsp->dns_timr_ent );
+			dnsp->dns_timr_ent = NULL;
+		}
+
+		if(dnsp->dns_dis_conn_id > 0)
+			dna_close(dnsp->dns_dis_conn_id);
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = open_dns(dnsp->dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		}
+		break;
+	case STA_CONN:		/* connection received */
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = conn_id;
+			register_services(dnsp, ALL, 0);
+			dns_timr_time = rand_tmout(WATCHDOG_TMOUT_MIN, 
+							 WATCHDOG_TMOUT_MAX);
+			dnsp->dns_timr_ent = dtq_add_entry( Dis_timer_q,
+						  dns_timr_time,
+						  do_register_services, dnsp ); 
+		}
+		else
+		{
+			dna_close(conn_id);
+		}
+		break;
+	default :	   /* normal packet */
+		if(vtohl(packet->size) != DNS_DIS_HEADER)
+			break;
+		switch( vtohl(packet->type) )
+		{
+		case DNS_DIS_REGISTER :
+			sprintf(str, 
+				"%s: Watchdog Timeout, DNS requests registration",
+				dnsp->task_name);
+			error_handler(0, DIM_WARNING, DIMDNSTMOUT, str);
+			register_services(dnsp, ALL, 0);
+			break;
+		case DNS_DIS_KILL :
+			sprintf(str,
+				"%s: Some Services already known to DNS",
+				dnsp->task_name);
+			/*
+			exit(2);
+			*/
+			error_handler(0, DIM_FATAL, DIMDNSDUPLC, str);
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_STOP :
+			sprintf(str, 
+				"%s: DNS refuses connection",dnsp->task_name);
+/*
+			exit(2);
+*/
+			error_handler(0, DIM_FATAL, DIMDNSREFUS, str);
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit",dnsp->task_name);
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str);
+			break;
+		}
+		break;
+	}
+}
+
+
+/* register services within the name server
+ *
+ * Send services uses the DNA package. services is a linked list of services
+ * stored by add_service.
+ */
+
+int send_dns_update_packet(DIS_DNS_CONN *dnsp)
+{
+  DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+  int n_services;
+  SERVICE_REG *serv_regp;
+
+  n_services = 1;
+  dis_dns_p->n_services = htovl(n_services);
+  dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * sizeof(SERVICE_REG));
+  serv_regp = dis_dns_p->services;
+  strcpy( serv_regp->service_name, "DUMMY_UPDATE_PACKET" );
+  if(dnsp->dns_dis_conn_id > 0)
+  {
+      if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+		     DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)))
+	  {
+		release_conn(dnsp->dns_dis_conn_id, 0, 1);
+	  }
+  }
+  return(1);
+}
+
+void do_register_services(DIS_DNS_CONN *dnsp)
+{
+	register_services(dnsp, NONE, 0);
+}
+
+void register_services(DIS_DNS_CONN *dnsp, int flag, int dns_flag)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services, tot_n_services;
+	register SERVICE *servp;
+	register SERVICE_REG *serv_regp;
+	int hash_index, new_entries;
+	extern int get_node_addr();
+	int dis_hash_service_registered();
+
+	if(!dis_dns_p->src_type)
+	{
+		get_node_name( dis_dns_p->node_name );
+/*
+		strcpy( dis_dns_p->task_name, Task_name );
+*/
+		strncpy( dis_dns_p->task_name, dnsp->task_name,
+			MAX_TASK_NAME-4 );
+		dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+		get_node_addr( dis_dns_p->node_addr );
+/*
+		dis_dns_p->port = htovl(Port_number);
+*/
+		dis_dns_p->pid = htovl(getpid());
+		dis_dns_p->protocol = htovl(Protocol);
+		dis_dns_p->src_type = htovl(SRC_DIS);
+		dis_dns_p->format = htovl(MY_FORMAT);
+	
+	}
+
+	dis_dns_p->port = htovl(Port_number);
+	serv_regp = dis_dns_p->services;
+	n_services = 0;
+	tot_n_services = 0;
+	if( flag == NONE ) {
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl( DIS_DNS_HEADER + 
+			(n_services*sizeof(SERVICE_REG)));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+			if(!dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+				DIS_DNS_HEADER + n_services*sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+		}
+		return;
+	}
+	if(flag == ALL)
+	{
+		servp = 0;
+		hash_index = -1;
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)))
+		{
+			if(servp->dnsp == dnsp)
+				servp->registered  = 0;
+		}
+	}
+	servp = 0;
+	hash_index = -1;
+	new_entries = 0;
+	if(flag == MORE)
+		new_entries = 1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, new_entries)))
+	{
+		if( flag == MORE ) 
+		{
+			if( servp->registered )
+			{
+				continue;
+			}
+		}
+
+		if(servp->dnsp != dnsp)
+			continue;
+
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		if(servp->type == COMMAND)
+			serv_regp->service_id = htovl( servp->id | 0x10000000);
+		else
+			serv_regp->service_id = htovl( servp->id );
+
+		serv_regp++;
+		n_services++;
+		dis_hash_service_registered(hash_index, servp);
+		if( n_services == MAX_SERVICE_UNIT )
+		{
+			dis_dns_p->n_services = htovl(n_services);
+			dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * sizeof(SERVICE_REG));
+			if(dnsp->dns_dis_conn_id > 0)
+			{
+				if( !dna_write(dnsp->dns_dis_conn_id,
+					   &(dnsp->dis_dns_packet), 
+					   DIS_DNS_HEADER + n_services *
+						sizeof(SERVICE_REG)) )
+				{
+					release_conn(dnsp->dns_dis_conn_id, 0, 1);
+				}
+			}
+			serv_regp = dis_dns_p->services;
+			tot_n_services += MAX_SERVICE_UNIT;
+			n_services = 0;
+			continue;
+		}
+	}
+	if( n_services ) 
+	{
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * sizeof(SERVICE_REG));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+			if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+				DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+
+		}
+		tot_n_services += n_services;
+	}
+	if(!dns_flag)
+	{
+		if(tot_n_services >= MAX_REGISTRATION_UNIT)
+		{
+			send_dns_update_packet(dnsp);
+		}
+	}
+}
+
+void unregister_service(DIS_DNS_CONN *dnsp, SERVICE *servp)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services;
+	register SERVICE_REG *serv_regp;
+	extern int get_node_addr();
+
+	if(dnsp->dns_dis_conn_id > 0)
+	{
+		if(!dis_dns_p->src_type)
+		{
+			get_node_name( dis_dns_p->node_name );
+/*
+			strcpy( dis_dns_p->task_name, Task_name );
+*/
+			strncpy( dis_dns_p->task_name, dnsp->task_name,
+				MAX_TASK_NAME-4 );
+			dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+			get_node_addr( dis_dns_p->node_addr );
+			dis_dns_p->port = htovl(Port_number);
+			dis_dns_p->protocol = htovl(Protocol);
+			dis_dns_p->src_type = htovl(SRC_DIS);
+			dis_dns_p->format = htovl(MY_FORMAT);
+		}
+		serv_regp = dis_dns_p->services;
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		serv_regp->service_id = htovl( servp->id | 0x80000000);
+		serv_regp++;
+		n_services = 1;
+		servp->registered = 0;
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * sizeof(SERVICE_REG));
+
+		if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+			DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)) )
+		{
+			release_conn(dnsp->dns_dis_conn_id, 0, 1);
+		}
+		if(dnsp->dis_service_id)
+			dis_update_service(dnsp->dis_service_id);
+	}
+}
+
+void do_update_service_list(DIS_DNS_CONN *dnsp)
+{
+	dnsp->updating_service_list = 0;
+	dis_update_service(dnsp->dis_service_id);
+}
+
+/* start serving client requests
+ *
+ * Using the DNA package start accepting requests from clients.
+ * When a request arrives the routine "dis_insert_request" will be executed.
+ */
+
+int dis_start_serving(char *task)
+{
+	return dis_start_serving_dns(0, task);
+}
+
+static DIS_DNS_CONN *create_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = malloc(sizeof(DIS_DNS_CONN));
+	dnsp->dns_timr_ent = (TIMR_ENT *)0;
+	dnsp->dis_n_services = 0;
+	dnsp->dns_dis_conn_id = 0;
+	dnsp->dis_first_time = 1;
+	dnsp->serving = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	dnsp->dis_dns_packet.node_name[0] = 0;
+	dnsp->updating_service_list = 0;
+	dnsp->dnsid = dnsid;
+	dll_insert_queue( (DLL *) DNS_head, (DLL *) dnsp );
+	return dnsp;
+}
+
+void dis_dns_init()
+{
+	static int done = 0;
+	DIS_DNS_CONN *dnsp;
+	void dim_init_threads(void);
+
+	if(!done)
+	{
+		if(!Threads_off)
+		{
+			dim_init_threads();
+		}
+		{
+		DISABLE_AST
+		if(!DNS_head) 
+		{
+			DNS_head = (DIS_DNS_CONN *)malloc(sizeof(DIS_DNS_CONN));
+			dll_init( (DLL *) DNS_head );
+		}
+		dnsp = create_dns(0);
+		Default_DNS = dnsp;
+		done = 1;
+		ENABLE_AST
+		}
+	}
+}
+
+int dis_start_serving_dns(long dnsid, char *task/*, int *idlist*/)
+{
+	char str0[MAX_NAME], str1[MAX_NAME],str2[MAX_NAME],
+	  str3[MAX_NAME],str4[MAX_NAME];
+	char task_name_aux[MAX_TASK_NAME];
+	extern int open_dns();
+	extern DIS_DNS_CONN *dis_find_dns(long);
+	DIS_DNS_CONN *dnsp;
+	int more_ids[10] = {0};
+
+	dis_init();
+	{
+	DISABLE_AST
+	  /*
+#ifdef VxWorks
+	taskDeleteHookAdd(remove_all_services);
+	printf("Adding delete hook\n");
+#endif
+*/
+
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(dnsid == 0)
+	{
+		dnsp = Default_DNS;
+	}
+	else if(!(dnsp = dis_find_dns(dnsid)))
+	{
+		dnsp = create_dns(dnsid);
+	}
+	dnsp->serving = 1;
+	Serving = 1;
+	if(Dis_first_time)
+	{
+		strncpy( task_name_aux, task, MAX_TASK_NAME );
+		task_name_aux[MAX_TASK_NAME-1] = '\0';
+		Port_number = SEEK_PORT;
+		if( !(Dis_conn_id = dna_open_server( task_name_aux, dis_insert_request, 
+			&Protocol, &Port_number, error_handler) ))
+		{
+			ENABLE_AST
+			return(0);
+		}
+		Dis_first_time = 0;
+	}
+	if(dnsp->dis_first_time)
+	{
+		dnsp->dis_first_time = 0;
+
+		sprintf(str0, "%s/VERSION_NUMBER", task);
+		sprintf(str1, "%s/CLIENT_LIST", task);
+		sprintf(str2, "%s/SERVICE_LIST", task);
+		sprintf(str3, "%s/SET_EXIT_HANDLER", task);
+		sprintf(str4, "%s/EXIT", task);
+
+		more_ids[0] = do_dis_add_service_dns( str0, "L", &Version_number,
+				 sizeof(Version_number), 0, 0, dnsid );
+
+		more_ids[1] = do_dis_add_service_dns( str1, "C", 0, 0, client_info, (long)dnsp, dnsid );
+		dnsp->dis_client_id = more_ids[1];
+		more_ids[2] = do_dis_add_service_dns( str2, "C", 0, 0, service_info, (long)dnsp, dnsid );
+		dnsp->dis_service_id = more_ids[2];
+		more_ids[3] = do_dis_add_cmnd_dns( str3, "L:1", add_exit_handler, 0, dnsid );
+		more_ids[4] = do_dis_add_cmnd_dns( str4, "L:1", exit_handler, 0, dnsid );
+		more_ids[5] = 0;
+		strcpy( dnsp->task_name, task );
+	}
+/*
+	if(idlist)
+	{
+		for(i = 0; idlist[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(idlist[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+	}
+	if(dnsp != Default_DNS)
+	{
+		for(i = 0; more_ids[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(more_ids[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+		dnsp->dis_n_services += n_services;
+		Dis_n_services -= n_services;
+	}
+*/
+	if(!Dis_timer_q)
+		Dis_timer_q = dtq_create();
+	if( !dnsp->dns_dis_conn_id )
+	{
+		if(!strcmp(task,"DIS_DNS"))
+		{
+			register_services(dnsp, ALL, 1);
+			ENABLE_AST
+			return(id_get(&(dnsp->dis_dns_packet), SRC_DIS));
+		}
+		else
+		{
+		
+			dnsp->dns_dis_conn_id = open_dns(dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		}
+	}
+	else
+	{
+		register_services(dnsp, MORE, 0);
+		if(dnsp->dis_service_id)
+		{
+/*
+			dis_update_service(Dis_service_id);
+*/
+			if(!dnsp->updating_service_list)
+			{
+				dtq_start_timer(1, do_update_service_list, dnsp);
+				dnsp->updating_service_list = 1;
+			}
+		}
+	}
+	ENABLE_AST
+	}
+	return(1);
+}
+
+
+/* asynchrounous reception of requests */
+/*
+	Called by DNA package.
+	A request has arrived, queue it to process later - dis_ins_request
+*/
+static void dis_insert_request(int conn_id, DIC_PACKET *dic_packet, int size, int status)
+{
+	register SERVICE *servp;
+	register REQUEST *newp, *reqp;
+	CLIENT *clip;
+	REQUEST_PTR *reqpp;
+	int type, new_client = 0, found = 0;
+	int find_release_request();
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	/* status = 1 => new connection, status = -1 => conn. lost */
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(status != 0)
+	{
+		if(status == -1) /* release all requests from conn_id */
+		{
+			release_conn(conn_id, 0, 0);
+		}
+	} 
+	else 
+	{
+		if(!(servp = find_service(dic_packet->service_name)))
+		{
+			release_conn(conn_id, 0, 0);
+			return;
+		}
+		dic_packet->type = vtohl(dic_packet->type);
+		type = dic_packet->type & 0xFFF;
+		/*
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			return;
+		}
+		*/
+		if(type == DIM_DELETE) 
+		{
+			find_release_request(conn_id, vtohl(dic_packet->service_id));
+			return;
+		}
+		newp = (REQUEST *)/*my_*/malloc(sizeof(REQUEST));
+		newp->service_ptr = servp;
+		newp->service_id = vtohl(dic_packet->service_id);
+		newp->type = dic_packet->type;
+		newp->timeout = vtohl(dic_packet->timeout);
+		newp->format = vtohl(dic_packet->format);
+		newp->conn_id = conn_id;
+		newp->first_time = 1;
+		newp->delay_delete = 0;
+		newp->to_delete = 0;
+		newp->timr_ent = 0;
+		newp->req_id = id_get((void *)newp, SRC_DIS);
+		newp->reqpp = 0;
+		if(type == ONCE_ONLY) 
+		{
+			execute_service(newp->req_id);
+			id_free(newp->req_id, SRC_DIS);
+			free(newp);
+			return;
+		}
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->conn_id == conn_id)
+				{
+					id_free(newp->req_id, SRC_DIS);
+					free(newp);
+					found = 1;
+					break;
+				}
+			}
+			if(!found)
+				dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+			return;
+		}
+		dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+		if(!(clip = find_client(conn_id)))
+		{
+			clip = (CLIENT *)malloc(sizeof(CLIENT));
+			clip->conn_id = conn_id;
+			clip->dnsp = servp->dnsp;
+			clip->requestp_head = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+			dll_init( (DLL *) clip->requestp_head );
+			dll_insert_queue( (DLL *) Client_head, (DLL *) clip );
+			new_client = 1;
+		}
+		reqpp = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		reqpp->reqp = newp;
+		dll_insert_queue( (DLL *) clip->requestp_head, (DLL *) reqpp );
+		newp->reqpp = reqpp;
+		if((type != MONIT_ONLY) && (type != UPDATE))
+		{
+			execute_service(newp->req_id);
+		}
+		if((type != MONIT_ONLY) && (type != MONIT_FIRST))
+		{
+			if(newp->timeout != 0)
+			{
+				newp->timr_ent = dtq_add_entry( Dis_timer_q,
+							newp->timeout, 
+							execute_service,
+							newp->req_id );
+			}
+		}
+		if(new_client)
+		{
+			Last_client = conn_id;
+			dnsp = clip->dnsp;
+			if(dnsp->dis_client_id)
+			  dis_update_service(dnsp->dis_client_id);
+		}
+	}
+}
+
+/* A timeout for a timed or monitored service occured, serve it. */
+
+int execute_service( int req_id )
+{
+	int *buffp, size;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[80], def[MAX_NAME];
+	register char *ptr;
+	int last_conn_id;
+	int *pkt_buffer, header_size, aux;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+	FORMAT_STR format_data_cp[MAX_NAME/4];
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return(0);
+	if(reqp->to_delete)
+		return(0);
+	reqp->delay_delete++;
+	servp = reqp->service_ptr;
+	last_conn_id = Curr_conn_id;
+	Curr_conn_id = reqp->conn_id;
+	ptr = servp->def;
+	if(servp->type == COMMAND)
+	{
+		sprintf(str,"This is a COMMAND Service");
+		buffp = (int *)str;
+		size = 26;
+		sprintf(def,"c:26");
+		ptr = def;
+	}
+	else if( servp->user_routine != 0 ) 
+	{
+		(servp->user_routine)( &servp->tag, &buffp, &size,
+					&reqp->first_time );
+		reqp->first_time = 0;
+		
+	} 
+	else 
+	{
+		buffp = servp->address;
+		size = servp->size;
+	}
+	Curr_conn_id = last_conn_id;
+/* send even if no data but not if negative */
+	if( size  < 0)
+	{
+		reqp->delay_delete--;
+		return(0);
+	}
+	if( DIS_STAMPED_HEADER + size > Dis_packet_size ) 
+	{
+		if( Dis_packet_size )
+			free( Dis_packet );
+		Dis_packet = (DIS_STAMPED_PACKET *)malloc(DIS_STAMPED_HEADER + size);
+		if(!Dis_packet)
+		{
+			reqp->delay_delete--;
+			return(0);
+		}
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+	}
+	Dis_packet->service_id = htovl(reqp->service_id);
+	if((reqp->type & 0xFF000) == STAMPED)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		if(!servp->user_secs)
+		{
+#ifdef WIN32
+			ftime(&timebuf);
+			aux = timebuf.millitm;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)timebuf.time);
+#else
+			tz = 0;
+		        gettimeofday(&tv, tz);
+			aux = tv.tv_usec / 1000;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(tv.tv_sec);
+#endif
+		}
+		else
+		{
+			aux = /*0xc0de0000 |*/ servp->user_millisecs;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(servp->user_secs);
+		}
+		Dis_packet->reserved[0] = htovl(0xc0dec0de);
+		Dis_packet->quality = htovl(servp->quality);
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	size = copy_swap_buffer_out(reqp->format, format_data_cp, 
+		pkt_buffer,
+		buffp, size);
+	Dis_packet->size = htovl(header_size + size);
+	if( !dna_write_nowait(reqp->conn_id, Dis_packet, header_size + size) ) 
+	{
+		reqp->to_delete = 1;
+	}
+/*
+	else
+	{
+		if((reqp->type & 0xFFF) == MONITORED)
+		{
+			if(reqp->timr_ent)
+				dtq_clear_entry(reqp->timr_ent);
+		}
+	}
+*/
+	reqp->delay_delete--;
+	return(1);
+}
+
+void remove_service( int req_id )
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int service_id;
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	servp = reqp->service_ptr;
+	if( !packet_size ) {
+		dis_packet = (DIS_PACKET *)malloc(DIS_HEADER);
+		packet_size = DIS_HEADER;
+	}
+	service_id = (reqp->service_id | 0x80000000);
+	dis_packet->service_id = htovl(service_id);
+	dis_packet->size = htovl(DIS_HEADER);
+	if( !dna_write(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+	{
+		release_conn(reqp->conn_id, 0, 0);
+	}
+}
+
+void execute_command(SERVICE *servp, DIC_PACKET *packet)
+{
+	int size;
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+
+	size = vtohl(packet->size) - DIC_HEADER;
+	add_size = size + (size/2);
+	if(!buffer_size)
+	{
+		buffer = (int *)malloc(add_size);
+		buffer_size = add_size;
+	} 
+	else 
+	{
+		if( add_size > buffer_size ) 
+		{
+			free(buffer);
+			buffer = (int *)malloc(add_size);
+			buffer_size = add_size;
+		}
+	}
+
+	dis_set_timestamp(servp->id, 0, 0);
+	if(servp->user_routine != 0)
+	{
+		format = vtohl(packet->format);
+		memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+		if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= (format & 0xf0);
+				formatp->flags &= 0xFFF0;	/* NOSWAP */
+			}
+		}
+		else
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= (format & 0xf0);
+			}
+		}
+		size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 packet->buffer, size);
+		(servp->user_routine)(&servp->tag, buffer, &size);
+	}
+}
+
+void dis_report_service(char *serv_name)
+{
+	register SERVICE *servp;
+	register REQUEST *reqp;
+	int to_delete = 0, more;
+
+	
+	DISABLE_AST
+	servp = find_service(serv_name);
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		if((reqp->type & 0xFFF) != TIMED_ONLY)
+		{
+			execute_service(reqp->req_id);
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	if(to_delete)
+	{
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) )
+			{
+				if(reqp->to_delete)
+				{
+					more = 1;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+			}
+		}while(more);
+	}
+	ENABLE_AST
+}
+
+int dis_update_service(unsigned service_id)
+{
+int do_update_service();
+
+	return(do_update_service(service_id,0));
+}
+
+int dis_selective_update_service(unsigned service_id, int *client_ids)
+{
+int do_update_service();
+
+	return(do_update_service(service_id, client_ids));
+}
+
+int check_client(REQUEST *reqp, int *client_ids)
+{
+	if(!client_ids)
+		return(1);
+	while(*client_ids)
+	{
+		if(reqp->conn_id == *client_ids)
+		{
+			return(1);
+		}
+		client_ids++;
+	}
+	return(0);
+}
+
+int do_update_service(unsigned service_id, int *client_ids)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	CLIENT *clip;
+	register int found = 0;
+	int to_delete = 0, more, conn_id;
+	char str[128];
+	int release_request();
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Update Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	servp->delay_delete = 1;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+if(Debug_on)
+{
+dim_print_date_time_millis();
+printf("Updating %s (id = %d, ptr = %08lX) for %s@%s (req_id = %d, req_ptr = %08lX)\n",
+	   servp->name, (int)service_id, (unsigned long)servp, 
+	   Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node, reqp->req_id, (unsigned long)reqp);
+}
+		if(check_client(reqp, client_ids))
+			reqp->delay_delete = 1;
+	}
+	ENABLE_AST
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->delay_delete && ((reqp->type & 0xFFF) != COMMAND))
+		{
+		if(check_client(reqp, client_ids))
+		{
+			if( (reqp->type & 0xFFF) != TIMED_ONLY ) 
+			{
+/*
+				DISABLE_AST
+*/
+				execute_service(reqp->req_id);
+				found++;
+				ENABLE_AST
+				{
+				DISABLE_AST
+				}
+			}
+		}
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 0;
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	ENABLE_AST
+	}
+	if(to_delete)
+	{
+		DISABLE_AST
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->to_delete & 0x1)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+				else if(reqp->to_delete & 0x2)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					reqpp = reqp->reqpp;
+					conn_id = reqp->conn_id;
+					release_request(reqp, reqpp, 1);
+					clip = find_client(conn_id);
+					if(clip)
+					{
+						if( dll_empty((DLL *)clip->requestp_head) ) 
+						{
+							release_conn( conn_id, 0, 0);
+						}
+					}
+					break;
+				}
+			}
+		}while(more);
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	servp->delay_delete = 0;
+	if(servp->to_delete)
+	{
+		dis_remove_service(servp->id);
+	}
+	ENABLE_AST
+	}
+
+	return(found);
+}
+
+int dis_get_n_clients(unsigned service_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	register int found = 0;
+	char str[128];
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Service Has Clients- Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		found++;
+	}
+	ENABLE_AST
+	return found;
+}
+
+int dis_get_timeout(unsigned service_id, int client_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[128];
+
+	if(!service_id)
+	{
+		sprintf(str,"Get Timeout - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		return(-1);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		return(-1);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->conn_id == client_id)
+			return(reqp->timeout);
+	}
+	return(-1);
+}
+
+void dis_set_quality( unsigned serv_id, int quality )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Quality - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp->quality = quality;
+	ENABLE_AST
+}
+
+int dis_set_timestamp( unsigned serv_id, int secs, int millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(secs == 0)
+	{
+#ifdef WIN32
+			ftime(&timebuf);
+			servp->user_secs = (int)timebuf.time;
+			servp->user_millisecs = timebuf.millitm;
+#else
+			tz = 0;
+		    gettimeofday(&tv, tz);
+			servp->user_secs = tv.tv_sec;
+			servp->user_millisecs = tv.tv_usec / 1000;
+#endif
+	}
+	else
+	{
+		servp->user_secs = secs;
+/*
+		servp->user_millisecs = (millisecs & 0xffff);
+*/
+		servp->user_millisecs = millisecs;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int dis_get_timestamp( unsigned serv_id, int *secs, int *millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Get Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->user_secs)
+	{
+		*secs = servp->user_secs;
+		*millisecs = servp->user_millisecs;
+	}
+	else
+	{
+		*secs = 0;
+		*millisecs = 0;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+void dis_send_service(unsigned service_id, int *buffer, int size)
+{
+	register REQUEST *reqp, *prevp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int conn_id;
+	char str[128];
+
+	DISABLE_AST
+	if( !service_id ) {
+		sprintf(str,"Send Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!packet_size)
+	{
+		dis_packet = (DIS_PACKET *)malloc(DIS_HEADER+size);
+		packet_size = DIS_HEADER + size;
+	} 
+	else 
+	{
+		if( DIS_HEADER+size > packet_size ) 
+		{
+			free(dis_packet);
+			dis_packet = (DIS_PACKET *)malloc(DIS_HEADER+size);
+			packet_size = DIS_HEADER+size;
+		}
+	}
+	prevp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) prevp)) ) 
+	{
+		dis_packet->service_id = htovl(reqp->service_id);
+		memcpy(dis_packet->buffer, buffer, size);
+		dis_packet->size = htovl(DIS_HEADER + size);
+
+		conn_id = reqp->conn_id;
+		if( !dna_write_nowait(conn_id, dis_packet, size + DIS_HEADER) )
+		{
+			release_conn(conn_id, 1, 0);
+		}
+		else
+			prevp = reqp;
+	}
+	ENABLE_AST
+}
+
+int dis_remove_service(unsigned service_id)
+{
+	register REQUEST *reqp, *auxp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	int found = 0;
+	char str[128];
+	int release_request();
+	int dis_hash_service_remove();
+	DIS_DNS_CONN *dnsp;
+	int n_services;
+	void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str,"Remove Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->delay_delete)
+	{
+		servp->to_delete = 1;
+		ENABLE_AST
+		return(found);
+	}
+	/* remove from name server */
+	
+	dnsp = servp->dnsp;
+	unregister_service(dnsp, servp);
+	/* Release client requests and remove from actual clients */
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		remove_service(reqp->req_id);
+		auxp = reqp->prev;
+		reqpp = (REQUEST_PTR *) reqp->reqpp;
+		release_request(reqp, reqpp, 1);
+		found = 1;
+		reqp = auxp;
+	}
+	if(servp->id == (int)dnsp->dis_service_id)
+	  dnsp->dis_service_id = 0;
+	if(servp->id == (int)dnsp->dis_client_id)
+	  dnsp->dis_client_id = 0;
+	dis_hash_service_remove(servp);
+	id_free(servp->id, SRC_DIS);
+	free(servp->request_head);
+	free(servp);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dnsp->dis_n_services--;
+		n_services = dnsp->dis_n_services;
+	}
+	else
+	{
+		Dis_n_services--;
+		n_services = Dis_n_services;
+	}
+*/
+	dnsp->dis_n_services--;
+	n_services = dnsp->dis_n_services;
+
+	ENABLE_AST
+	if(dnsp->serving)
+	{
+		if(n_services == 5)
+		{
+/*
+			dis_stop_serving();
+*/
+			do_dis_stop_serving_dns(dnsp);
+		}
+	}
+	return(found);
+}
+
+void do_dis_stop_serving_dns(DIS_DNS_CONN *dnsp)
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_no_dns();
+int hash_index, old_index;
+extern int close_dns(long, int);
+
+	dnsp->serving = 0;
+	dis_init();
+/*
+	dis_hash_service_init();
+	prevp = 0;
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	if(dnsp->dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, dnsp->dns_timr_ent);
+		dnsp->dns_timr_ent = NULL;
+	}
+	if(dnsp->dns_dis_conn_id)
+	{
+		dna_close(dnsp->dns_dis_conn_id);
+		dnsp->dns_dis_conn_id = 0;
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	old_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		if(servp->dnsp == dnsp)
+		{
+			dis_remove_service(servp->id);
+			if(old_index != hash_index)
+				prevp = 0;
+		}
+		else
+		{
+			prevp = servp;
+			old_index = hash_index;
+		}
+	}
+	ENABLE_AST
+	}
+	dnsp->dis_first_time = 1;
+	dnsp->dis_n_services = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	close_dns(dnsp->dnsid, SRC_DIS);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dll_remove(dnsp);
+		free(dnsp);
+	}
+*/
+/*
+	if(dll_empty(DNS_head))
+*/
+	if(dis_no_dns())
+		dis_stop_serving();
+}
+
+void dis_stop_serving_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp, *dis_find_dns();
+
+	dnsp = dis_find_dns(dnsid);
+	do_dis_stop_serving_dns(dnsp);
+}
+
+void dis_stop_serving()
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int hash_index;
+
+	Serving = 0;
+	dis_init();
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+/*
+	if(Dns_dis_conn_id)
+	{
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+	}
+*/
+	{
+		DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		dis_remove_service(servp->id);
+		prevp = 0;
+	}
+	ENABLE_AST
+	}
+/*
+	if(Dis_conn_id)
+		dna_close(Dis_conn_id);
+	if(Dns_dis_conn_id)
+		dna_close(Dns_dis_conn_id);
+	Dns_dis_conn_id = 0;
+*/
+	Dis_first_time = 1;
+/*
+	if(Dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+*/
+	dtq_delete(Dis_timer_q);
+	Dis_timer_q = 0;
+	dim_stop_threads();
+}
+
+/* find service by name */
+SERVICE *find_service(char *name)
+{
+	return(dis_hash_service_exists(name));
+}
+
+CLIENT *find_client(int conn_id)
+{
+	register CLIENT *clip;
+
+	clip = (CLIENT *)
+			dll_search( (DLL *) Client_head, &conn_id, sizeof(conn_id));
+	return(clip);
+}
+
+void release_all_requests(int conn_id, CLIENT *clip)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register REQUEST *reqp;
+    int found = 0;
+	int release_request();
+	DIS_DNS_CONN *dnsp;
+
+	DISABLE_AST;
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			auxp = reqpp->prev;
+			reqp = (REQUEST *) reqpp->reqp;
+			release_request(reqp, reqpp, 0);
+			found = 1;
+			reqpp = auxp;
+		}
+		dnsp = clip->dnsp;
+		dll_remove(clip);
+		free(clip->requestp_head);
+		free(clip);
+	}
+	if(found)
+	{
+		Last_client = -conn_id;
+		if(dnsp->dis_client_id)
+		  dis_update_service(dnsp->dis_client_id);
+	}
+	dna_close(conn_id);
+	ENABLE_AST;
+}
+
+CLIENT *check_delay_delete(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int found = 0;
+
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->delay_delete)
+			{
+				reqp->to_delete = 1;
+				found = 1;
+			}
+		}
+	}
+	ENABLE_AST;
+	if(found)
+	{
+		return((CLIENT *)-1);
+	}
+	return(clip);
+}
+
+char *dis_get_error_services()
+{
+	return(dis_get_client_services(Error_conn_id));
+}
+
+char *dis_get_client_services(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);
+	{
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)))
+		{
+			n_services++;
+		}
+		if(!n_services)
+		{
+			ENABLE_AST
+			return((char *)0);
+		}
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			servp = reqp->service_ptr;
+			strcat(buff_ptr, servp->name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		ENABLE_AST
+		return((char *)0);
+	}
+	ENABLE_AST;
+	}
+/*
+	dim_print_date_time();
+	dna_get_node_task(conn_id, node, task);
+	printf("Client %s@%s uses services: \n", task, node);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int find_release_request(int conn_id, int service_id)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int release_request();
+
+	DISABLE_AST
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->service_id == service_id)
+			{
+				if(reqp->delay_delete)
+				{
+					reqp->to_delete += 0x2;
+				}
+				else
+				{
+					auxp = reqpp->prev;
+					release_request(reqp, reqpp, 0);
+					reqpp = auxp;
+				}
+			}
+		}
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+			release_conn( conn_id, 0, 0 );
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int release_request(REQUEST *reqp, REQUEST_PTR *reqpp, int remove)
+{
+	int conn_id;
+	CLIENT *clip;
+
+	DISABLE_AST
+	conn_id = reqp->conn_id;
+	if(reqpp)
+		dll_remove((DLL *)reqpp);
+	dll_remove((DLL *)reqp);
+	if(reqp->timr_ent)
+		dtq_rem_entry(Dis_timer_q, reqp->timr_ent);
+	id_free(reqp->req_id, SRC_DIS);
+	free(reqp);
+	free(reqpp);
+/* Would do it too early, the client will disconnect anyway
+*/
+	if((remove) && (!Serving))
+	{
+		clip = find_client(conn_id);
+		if(clip)
+		{
+			if( dll_empty((DLL *)clip->requestp_head) ) 
+			{
+				release_conn( conn_id, 0, 0);
+			}
+		}
+	}
+
+	ENABLE_AST
+	return(1);
+}
+
+static int release_conn(int conn_id, int print_flg, int dns_flag)
+{
+	static int releasing = 0;
+	CLIENT *clip;
+	int do_exit_handler();
+
+	DISABLE_AST
+	if(print_flg){}
+	if(dns_flag)
+	{
+		recv_dns_dis_rout( conn_id, 0, 0, STA_DISC );
+		ENABLE_AST
+		return(0);
+	}
+#ifdef VMS
+	if(print_flg)
+	{
+		dim_print_date_time();
+		dna_get_node_task(conn_id, node, task);
+		printf(" Couldn't write to client %s@%s, releasing connection %d\n",
+			task, node, conn_id);
+		fflush(stdout);
+	}
+#endif
+	clip = check_delay_delete(conn_id);
+	if(clip != (CLIENT *)-1)
+	{
+		if( Client_exit_user_routine != 0 ) 
+		{
+			releasing++;
+			Curr_conn_id = conn_id;
+			do_exit_handler(conn_id);
+			releasing--;
+		}
+		if(!releasing)
+		{
+			release_all_requests(conn_id, clip);
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+typedef struct cmnds{
+	struct cmnds *next;
+	long tag;
+	int size;
+	int buffer[1];
+} DIS_CMND;
+
+static DIS_CMND *Cmnds_head = (DIS_CMND *)0;
+
+void std_cmnd_handler(long *tag, int *cmnd_buff, int *size)
+{
+	register DIS_CMND *new_cmnd;
+/* queue the command */
+
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	new_cmnd = (DIS_CMND *)malloc((*size)+12);
+	new_cmnd->next = 0;
+	new_cmnd->tag = *tag;
+	new_cmnd->size = *size;
+	memcpy(new_cmnd->buffer, cmnd_buff, *size);
+	sll_insert_queue((SLL *) Cmnds_head, (SLL *) new_cmnd);
+}
+
+int dis_get_next_cmnd(long *tag, int *buffer, int *size)
+{
+	register DIS_CMND *cmndp;
+	register int ret_val = -1;
+
+	DISABLE_AST
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	if(*size == 0)
+	{
+		if( (cmndp = (DIS_CMND *) sll_get_head((SLL *) Cmnds_head)))
+		{
+			if(cmndp->size > 0)
+			{
+				*size = cmndp->size;
+				*tag = cmndp->tag;
+				ENABLE_AST
+				return(-1);
+			}
+		}
+	}
+	if( (cmndp = (DIS_CMND *) sll_remove_head((SLL *) Cmnds_head)) )
+	{
+		if (*size >= cmndp->size)
+		{
+			*size = cmndp->size;
+			ret_val = 1;
+		}
+		memcpy(buffer, cmndp->buffer, *size);
+		*tag = cmndp->tag;
+		free(cmndp);
+		ENABLE_AST
+		return(ret_val);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+int dis_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dis_get_client(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+#ifdef VMS
+dis_convert_str(c_str, for_str)
+char *c_str;
+struct dsc$descriptor_s *for_str;
+{
+	int i;
+
+	strcpy(for_str->dsc$a_pointer, c_str);
+	for(i = strlen(c_str); i< for_str->dsc$w_length; i++)
+		for_str->dsc$a_pointer[i] = ' ';
+}
+#endif
+
+void client_info(long *tag, int **bufp, int *size, int *first_time)
+{
+	register CLIENT *clip;
+	int curr_conns[MAX_CONNS];
+	int i, index, max_size;
+	static int curr_allocated_size = 0;
+	static char *dns_info_buffer;
+	register char *dns_client_info;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+
+	max_size = sizeof(DNS_CLIENT_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_client_info = dns_info_buffer;
+	dns_client_info[0] = '\0';
+	index = 0;
+	if(*first_time)
+	{
+		clip = Client_head;
+		while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) clip)) )
+		{
+			if(clip->dnsp != dnsp)
+				continue;
+			curr_conns[index++] = clip->conn_id;
+		}
+		max_size = (index+1)*sizeof(DNS_CLIENT_INFO);
+		if (max_size > curr_allocated_size)
+		{
+			free(dns_info_buffer);
+			dns_info_buffer = malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		dns_client_info = dns_info_buffer;
+		dns_client_info[0] = '\0';
+	}
+	else
+	{
+		if(Last_client > 0)
+		{
+			strcat(dns_client_info,"+");
+			curr_conns[index++] = Last_client;
+		}
+		else
+		{
+			strcat(dns_client_info,"-");
+			curr_conns[index++] = -Last_client;
+		}
+	}
+	
+	for(i=0; i<index;i++)
+	{
+		dna_get_node_task(curr_conns[i], node, task);
+		strcat(dns_client_info,task);
+		strcat(dns_client_info,"@");
+		strcat(dns_client_info,node);
+		strcat(dns_client_info,"|");
+	}
+	if(index)
+		dns_client_info[strlen(dns_client_info)-1] = '\0';
+	*bufp = (int *)dns_info_buffer;
+	*size = strlen(dns_info_buffer)+1;
+}
+
+void append_service(char *service_info_buffer, SERVICE *servp)		
+{
+	char name[MAX_NAME], *ptr;
+
+		if(strstr(servp->name,"/RpcIn"))
+		{
+			strcpy(name,servp->name);
+			ptr = (char *)strstr(name,"/RpcIn");
+			*ptr = 0;
+			strcat(service_info_buffer, name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(name,"/RpcOut");
+			if( (servp = find_service(name)) )
+			{
+				strcat(service_info_buffer, ",");
+				if(servp->def[0])
+				{
+					strcat(service_info_buffer, servp->def);
+				}
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+		}
+		else if(strstr(servp->name,"/RpcOut"))
+		{
+/*
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+
+*/
+		}
+		else
+		{
+			strcat(service_info_buffer, servp->name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|");
+			if(servp->type == COMMAND)
+			{
+				strcat(service_info_buffer, "CMD");
+			}
+			strcat(service_info_buffer, "\n");
+		}
+}
+
+void service_info(long *tag, int **bufp, int *size, int *first_time)
+{
+	register SERVICE *servp;
+	int max_size, done = 0;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+	int hash_index;
+
+	DISABLE_AST
+	max_size = (dnsp->dis_n_services+10) * (MAX_NAME*2 + 4);
+	if(!curr_allocated_size)
+	{
+		service_info_buffer = (char *)malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(service_info_buffer);
+		service_info_buffer = (char *)malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	service_info_buffer[0] = '\0';
+	buff_ptr = service_info_buffer;
+	servp = 0;
+	hash_index = -1;
+	if(*first_time)
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered)
+			{
+				servp->registered = 2;
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+			}
+		}
+	}
+	else
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered == 1)
+			{
+				if(!done)
+				{
+					strcat(buff_ptr, "+");
+					buff_ptr += strlen(buff_ptr);
+					done = 1;
+				}
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+				servp->registered = 2;
+			}
+			else if(servp->registered == 0)
+			{
+				strcat(buff_ptr, "-");
+				buff_ptr += strlen(buff_ptr);
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+			}
+		}
+	}
+	*bufp = (int *)service_info_buffer;
+	*size = buff_ptr - service_info_buffer+1;
+	ENABLE_AST
+}
+		
+void add_exit_handler(int *tag, int *bufp, int *size)
+{
+	EXIT_H *newp;
+
+	if(size){}
+	if(tag){}
+	if(*bufp)
+	{
+		if(!Exit_h_head) 
+		{
+			Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+			sll_init( (SLL *) Exit_h_head );
+		}
+		newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+		newp->conn_id = Curr_conn_id;
+		newp->exit_id = *bufp;
+		sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+	}
+	else
+	{
+		if(!Exit_h_head) 
+			return;
+		if((newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&Curr_conn_id, 4)) )
+		{
+			sll_remove( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+}
+
+void dis_set_client_exit_handler(int conn_id, int tag)
+{
+	EXIT_H *newp;
+
+	DISABLE_AST
+	if(tag)
+	{
+		if(!Exit_h_head) 
+		{
+			Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+			sll_init( (SLL *) Exit_h_head );
+		}
+		if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&conn_id, 4)) )
+		{
+			newp->conn_id = conn_id;
+			newp->exit_id = tag;
+		}
+		else
+		{
+			newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+			newp->conn_id = conn_id;
+			newp->exit_id = tag;
+			sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+	else
+	{
+		if(!Exit_h_head) 
+		{
+			ENABLE_AST
+			return;
+		}
+		if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&conn_id, 4)) )
+		{
+			sll_remove( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+	ENABLE_AST
+}
+
+int do_exit_handler(int conn_id)
+{
+	register EXIT_H *exitp;
+
+	DISABLE_AST;
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return(0);
+	}
+	while( (exitp = (EXIT_H *) sll_search_next_remove((SLL *) Exit_h_head,
+							 0, (char *) &conn_id, 4)) )
+	{
+		(Client_exit_user_routine)( &exitp->exit_id );
+		free(exitp);
+	}
+	ENABLE_AST
+	return(1);
+}
+
+static void exit_handler(int *tag, int *bufp, int *size)
+{
+
+	if(size){}
+	if(tag){}
+	if(Exit_user_routine)
+		(Exit_user_routine)( bufp );
+	else
+	{
+/*
+		printf("%s PID %d Exiting!\n", Task_name, getpid());
+*/
+		exit(*bufp);
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	int exit_tag, exit_code, exit_size;
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			Curr_conn_id = conn_id;
+			(Error_user_routine)( severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+	}
+	if(severity == DIM_FATAL)
+	{
+		exit_tag = 0;
+		exit_code = errcode;
+		exit_size = sizeof(int);
+		exit_handler(&exit_tag, &exit_code, &exit_size);
+	}
+}
+/*
+#define MAX_HASH_ENTRIES 2000
+*/
+#define MAX_HASH_ENTRIES 5000
+
+static SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Service_new_entries[MAX_HASH_ENTRIES];
+
+int dis_hash_service_init()
+{
+  int i;
+  static int done = 0;
+
+  if(!done)
+  {
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		Service_hash_table[i] = (SERVICE *) malloc(8);
+		dll_init((DLL *) Service_hash_table[i]);
+		Service_new_entries[i] = 0;
+	}
+	done = 1;
+  }
+  return(1);
+}
+
+int dis_hash_service_insert(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	Service_new_entries[index]++;
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+	return(1);
+}
+
+int dis_hash_service_registered(int index, SERVICE *servp)
+{
+	servp->registered = 1;
+	Service_new_entries[index]--;
+	if(Service_new_entries[index] < 0)
+		Service_new_entries[index] = 0;
+	return 1;
+}
+
+int dis_hash_service_remove(SERVICE *servp)
+{
+	dll_remove( (DLL *) servp );
+	return(1);
+}
+
+
+SERVICE *dis_hash_service_exists(char *name)
+{
+	int index;
+	SERVICE *servp;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if( (servp = (SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, strlen(name)+1)) )
+	{
+		return(servp);
+	}
+	return((SERVICE *)0);
+}			
+
+SERVICE *dis_hash_service_get_next(int *curr_index, SERVICE *prevp, int new_entries)
+{
+	int index;
+	SERVICE *servp = 0;
+/*
+	if(!prevp)
+	{
+		index = -1;
+	}
+*/
+	index = *curr_index;
+	if(index == -1)
+	{
+		index++;
+		prevp = Service_hash_table[index];
+	}
+	if(!prevp)
+	{
+		prevp = Service_hash_table[index];
+	}
+	do
+	{
+		if((!new_entries) || (Service_new_entries[index] > 0))
+		{
+			servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[index],
+						(DLL *) prevp);
+			if(servp)
+				break;
+		}
+		index++;
+		if(index == MAX_HASH_ENTRIES)
+		{
+			*curr_index = -1;
+			return((SERVICE *) 0);
+		}
+		prevp = Service_hash_table[index];
+	} while(!servp);
+	*curr_index = index;
+	return(servp);
+}
+
+DIS_DNS_CONN *dis_find_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *)
+			dll_search( (DLL *) DNS_head, &dnsid, sizeof(dnsid));
+/*
+	if(!dnsp)
+	{
+		dnsp = create_dns(dnsid);
+	}
+*/
+	return dnsp;
+}
+
+int dis_no_dns()
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *) DNS_head;
+	while ( (dnsp = (DIS_DNS_CONN *) dll_get_next( (DLL *) DNS_head, (DLL *) dnsp)))
+	{
+/*
+		if(dnsp != Default_DNS)
+			return 0;
+*/
+		if(dnsp->serving)
+			return 0;
+	}
+	return 1;
+}
+
+DIS_DNS_CONN *find_dns_by_conn_id(int conn_id)
+{
+	DIS_DNS_CONN *dnsp;
+	extern long dns_get_dnsid();
+	long dnsid;
+
+	dnsid = dns_get_dnsid(conn_id, SRC_DIS);
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = Default_DNS;
+	return (DIS_DNS_CONN *)dnsp;
+}
+
+void dis_print_hash_table()
+{
+	SERVICE *servp;
+	int i;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+		servp = Service_hash_table[i];
+		while( (servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			n_entries++;
+			if(n_entries == 1)
+				printf("    Name = %s\n",servp->name);
+		}
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+void dis_hash_print()
+{
+	SERVICE *servp;
+	int hash_index;
+
+	servp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+	{
+		printf("Name = %s\n",servp->name);
+	}
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN1(INT, dis_start_serving, DIS_START_SERVING, dis_start_serving,
+				 STRING)
+FCALLSCFUN3(INT, dis_get_next_cmnd, DIS_GET_NEXT_CMND, dis_get_next_cmnd,
+				 PINT, PVOID, PINT)
+FCALLSCFUN1(INT, dis_get_client, DIS_GET_CLIENT, dis_get_client,
+				 PSTRING)
+FCALLSCFUN6(INT, dis_add_service, DIS_ADD_SERVICE, dis_add_service,
+				 STRING, PVOID, PVOID, INT, PVOID, INT)
+FCALLSCSUB4(	 dis_add_cmnd, DIS_ADD_CMND, dis_add_cmnd,
+				 STRING, PVOID, PVOID, INT)
+FCALLSCSUB1(	 dis_add_client_exit_handler, DIS_ADD_CLIENT_EXIT_HANDLER, 
+				 dis_add_client_exit_handler,
+				 PVOID)
+FCALLSCSUB2(	 dis_set_client_exit_handler, DIS_SET_CLIENT_EXIT_HANDLER, 
+				 dis_set_client_exit_handler,
+				 INT, INT)
+FCALLSCSUB1(	 dis_add_exit_handler, DIS_ADD_EXIT_HANDLER, 
+				 dis_add_exit_handler,
+				 PVOID)
+FCALLSCSUB1(	 dis_report_service, DIS_REPORT_SERVICE, dis_report_service,
+				 STRING)
+FCALLSCSUB2(	 dis_convert_str, DIS_CONVERT_STR, dis_convert_str,
+				 PVOID, PVOID)
+FCALLSCFUN1(INT, dis_update_service, DIS_UPDATE_SERVICE, dis_update_service,
+				 INT)
+FCALLSCFUN1(INT, dis_remove_service, DIS_REMOVE_SERVICE, dis_remove_service,
+				 INT)
+FCALLSCSUB3(	 dis_send_service, DIS_SEND_SERVICE, dis_send_service,
+				 INT, PVOID, INT)
+FCALLSCSUB2(	 dis_set_quality, DIS_SET_QUALITY, dis_set_quality,
+                 INT, INT)
+FCALLSCSUB3(INT, dis_set_timestamp, DIS_SET_TIMESTAMP, dis_set_timestamp,
+                 INT, INT, INT)
+FCALLSCFUN2(INT, dis_selective_update_service, DIS_SELECTIVE_UPDATE_SERVICE, 
+				 dis_selective_update_service,
+				 INT, PINT)
+FCALLSCSUB3(INT, dis_get_timestamp, DIS_GET_TIMESTAMP, dis_get_timestamp,
+                 INT, PINT, PINT)
+#endif
Index: branches/FACT++_part_filenames/dim/src/discpp.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/discpp.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/discpp.cxx	(revision 18732)
@@ -0,0 +1,1609 @@
+#define DIMLIB
+#include <dis.hxx>
+#include "tokenstring.hxx"
+//#include <iostream>
+//using namespace std;
+#include <time.h>
+//#include <sys/timeb.h>
+
+DimClientExitHandler *DimServer::itsClientExit = 0;
+DimExitHandler *DimServer::itsExit = 0;
+DimErrorHandler *DimServer::itsSrvError = 0;
+char *DimServer::itsName = 0;
+char *DimServer::clientName = 0;
+char *DimServer::dimDnsNode = 0;
+int DimServer::autoStart = 1;
+//int DimServer::itsNServices = 0;
+
+extern "C" {
+extern void dis_init();
+
+static void user_routine( void *tagp, void **buf, int *size, int *first_time)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimService *t;
+
+	if(first_time){}
+//	t = (DimService *)id_get_ptr(id, SRC_DIS);
+	t = *(DimService **)tagp;
+	if( t->itsServiceHandler ) {
+		t->itsServiceHandler->itsService = t;
+		DimCore::inCallback = 2;
+		t->itsServiceHandler->serviceHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 2;
+		t->serviceHandler();
+		DimCore::inCallback = 0;
+	}
+	if( t->itsType == DisSTRING)
+			t->itsSize = (int)strlen((char *)t->itsData)+1;
+	*buf = t->itsData;
+	*size = t->itsSize;
+}
+}
+
+void DimService::declareIt(char *name, char *format, DimServiceHandler *handler, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	itsDataSize = 0;
+	strcpy( itsName, name);
+	if(handler)
+		itsServiceHandler = handler;
+	else
+		itsServiceHandler = 0;
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(itsDns == 0)
+	{
+		DISABLE_AST
+		itsId = dis_add_service( name, format, NULL, 0, 
+//				user_routine, itsTagId);
+				user_routine, (dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsId = dis_add_service_dns( itsDns->getDnsId(), name, format, NULL, 0, 
+//				user_routine, itsTagId);
+				user_routine, (dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsId);
+		DimServer::start(itsDns);
+	}
+}
+
+void DimService::storeIt(void *data, int size)
+{
+	DISABLE_AST
+	if(!itsId)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!itsDataSize)
+	{
+		itsData = new char[size];
+		itsDataSize = size;
+	}
+	else if(itsDataSize < size)
+	{
+		delete[] (char *)itsData;
+		itsData = new char[size];
+		itsDataSize = size;
+	}
+	memcpy(itsData, data, (size_t)size);
+	itsSize = size;
+	ENABLE_AST
+}
+
+extern "C" {
+static void command_routine( void *tagp, void *buf, int *size)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimCommand *t;
+
+//	t = (DimCommand *)id_get_ptr(id, SRC_DIS);
+	t = *(DimCommand **)tagp;
+	t->itsData = buf;
+	t->itsSize = *size;
+	t->secs = 0;
+	if( t->itsCommandHandler ) {
+		t->itsCommandHandler->itsCommand = t;
+		DimCore::inCallback = 2;
+		t->itsCommandHandler->commandHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 2;
+		t->commandHandler();
+		DimCore::inCallback = 0;
+	}
+	t->itsData = 0;
+	t->itsSize = 0;
+}
+}
+
+void DimCommand::declareIt(char *name, char *format, DimCommandHandler *handler, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsId = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy( itsName, name);
+	itsFormat = new char[(int)strlen(format)+1];
+	strcpy( itsFormat, format);
+	currCmnd = 0;
+	if(handler)
+		itsCommandHandler = handler;
+	else
+		itsCommandHandler = 0;
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(!itsDns)
+	{
+		DISABLE_AST
+		itsId = dis_add_cmnd( name, format, command_routine,
+//				itsTagId);
+				(dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsId = dis_add_cmnd_dns( itsDns->getDnsId(), name, format, command_routine,
+//			itsTagId);
+			(dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsId);
+		DimServer::start(itsDns);
+	}
+}
+
+extern "C" {
+/*
+static void timeout_rout(DimRpc *t)
+{
+	sleep(t->itsTimeout);
+	t->itsKilled = 1;
+}
+*/
+static void rpcin_routine( void *tagp, void *buf, int *size)
+{
+	time_t tt1 = 0, tt2 = 0;
+
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimRpc *t;
+	int tout, clientId, ids[2];
+//	long tid;
+
+//	t = (DimRpc *)id_get_ptr(id, SRC_DIS);
+	t = *(DimRpc **)tagp;
+	t->itsDataIn = buf;
+	t->itsSizeIn = *size;
+	clientId = dis_get_conn_id();
+	tout = dis_get_timeout(t->itsIdOut, clientId);
+	t->itsTimeout = tout;
+//	tid = 0;
+	if(tout > 0)
+	{
+		tt1 = time((time_t *)0);
+		t->itsKilled = 0;
+//		dtq_start_timer(t->itsTimeout,(void(*)(void *))timeout_rout,(void *)t);
+//		tid = dim_start_thread((void(*)(void *))timeout_rout,(void *)t);
+	}
+	DimCore::inCallback = 2;
+	t->rpcHandler();
+	DimCore::inCallback = 0;
+	t->itsDataIn = 0;
+	t->itsSizeIn = 0;
+	if(tout > 0)
+	{
+		tt2 = time((time_t *)0);
+		if((tt2 - tt1) > tout)
+			t->itsKilled = 1;
+	}
+	if(!t->itsKilled)
+	{
+//		if(tid)
+//		{
+//			dtq_stop_timer((void *)t);
+//			dim_stop_thread(tid);
+//		}
+		ids[0] = clientId;
+		ids[1] = 0;
+		dis_selective_update_service(t->itsIdOut, ids);
+	}
+}
+
+}
+
+extern "C" {
+static void rpcout_routine( void *tagp, void **buf, int *size, int *first_time)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimRpc *t;
+
+	if(first_time){}
+//	t = (DimRpc *)id_get_ptr(id, SRC_DIS);
+	t = *(DimRpc**)tagp;
+	*buf = t->itsDataOut;
+	*size = t->itsSizeOut;
+}
+}
+
+void DimRpc::declareIt(char *name, char *formatin, char *formatout, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsIdIn = 0;
+	itsIdOut = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy( itsName, name);
+	itsNameIn = new char[(int)strlen(name)+1+10];
+	strcpy( itsNameIn, name);
+	strcat(itsNameIn,(char *)"/RpcIn");
+	itsNameOut = new char[(int)strlen(name)+1+10];
+	strcpy( itsNameOut, name);
+	strcat(itsNameOut,(char *)"/RpcOut");
+	itsDataOut = new char[1];
+	itsDataOutSize = itsSizeOut = 1;
+	itsKilled = 0;
+	itsTimeout = 0;
+	
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(!itsDns)
+	{
+		DISABLE_AST
+		itsIdIn = dis_add_cmnd( itsNameIn, formatin, 
+//			rpcin_routine, itsTagId);
+			rpcin_routine, (dim_long)this);
+		itsIdOut = dis_add_service( itsNameOut, formatout, 0,0, 
+//			rpcout_routine, itsTagId);
+			rpcout_routine, (dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsIdIn = dis_add_cmnd_dns( itsDns->getDnsId(), itsNameIn, formatin, 
+//			rpcin_routine, itsTagId);
+			rpcin_routine, (dim_long)this);
+		itsIdOut = dis_add_service_dns( itsDns->getDnsId(), itsNameOut, formatout, 0,0, 
+//			rpcout_routine, itsTagId);
+			rpcout_routine, (dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsIdIn);
+//		itsDns->addServiceId(itsIdOut);
+		DimServer::start(itsDns);
+	}
+}
+
+void DimRpc::storeIt(void *data, int size)
+{
+	DISABLE_AST
+	if(!itsIdIn)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!itsDataOutSize)
+	{
+		itsDataOut = new char[size];
+		itsDataOutSize = size;
+	}
+	else if(itsDataOutSize < size)
+	{
+		delete[] (char *)itsDataOut;
+		itsDataOut = new char[size];
+		itsDataOutSize = size;
+	}
+	memcpy(itsDataOut, data, (size_t)size);
+	itsSizeOut = size;
+	ENABLE_AST
+}
+
+extern "C" {
+static void client_exit_user_routine(int*);
+static void exit_user_routine(int*);
+static void srv_error_user_routine(int, int, char*);
+}
+
+DimServerDns::DimServerDns(const char *node)
+{
+	init(node, 0);
+}
+	
+DimServerDns::DimServerDns(const char *node, int port)
+{
+	init(node, port);
+}
+
+DimServerDns::DimServerDns(const char *node, int port, char *name)
+{
+	init(node, port);
+	DimServer::start(this, name);
+}
+	
+#define DisDnsIdBlock 100
+
+void DimServerDns::init(const char *node, int port)
+{
+//	if(!itsNode)
+//	{
+		itsNode = new char[(int)strlen(node)+1];
+		strcpy(itsNode,node);
+//	}
+	itsPort = port;
+	autoStart = 1;
+	itsName = 0;
+	itsServiceIdList = new int[DisDnsIdBlock];
+	itsServiceIdListSize = DisDnsIdBlock;
+	itsNServiceIds = 0;
+//	itsNServices = 0;
+	itsDnsId = DimServer::addDns(node, port);
+}
+
+void DimServerDns::addServiceId(int id)
+{
+	int *tmp;
+
+	DISABLE_AST
+	if((itsNServiceIds + 2) > itsServiceIdListSize)
+	{
+		tmp = new int[itsServiceIdListSize + DisDnsIdBlock];
+		memcpy(tmp, itsServiceIdList, (size_t)itsServiceIdListSize*sizeof(int));
+		delete itsServiceIdList;
+		itsServiceIdList = tmp;
+		itsServiceIdListSize += DisDnsIdBlock;
+	}
+	itsServiceIdList[itsNServiceIds] = id;
+	itsServiceIdList[itsNServiceIds+1] = 0;
+	itsNServiceIds++;
+	ENABLE_AST
+}
+
+int *DimServerDns::getServiceIdList()
+{
+	int *list;
+	if(itsNServiceIds)
+		list = itsServiceIdList;
+	else
+		list = 0;
+	itsNServiceIds = 0;
+	return list;
+}
+
+DimServerDns::~DimServerDns()
+{
+	if(itsName)
+	{
+		DimServer::stop(this);
+//		if(itsName)
+//			delete[] itsName;
+	}
+//	if(itsNode)
+		delete[] itsNode;
+}
+
+dim_long DimServerDns::getDnsId()
+{
+	return itsDnsId;
+}
+
+void DimServerDns::setName(const char *name)
+{
+	if(!itsName)
+	{
+		itsName = new char[(int)strlen(name)+1];
+		strcpy(itsName,name);
+	}
+}
+
+void DimServerDns::clearName()
+{
+	if(itsName)
+	{
+		delete[] itsName;
+		itsName = 0;
+	}
+}
+
+char *DimServerDns::getName()
+{
+	return itsName;
+}
+
+void DimServerDns::autoStartOn()
+{
+	autoStart = 1;
+}
+
+void DimServerDns::autoStartOff()
+{
+	autoStart = 0;
+}
+
+int DimServerDns::isAutoStart()
+{
+	return autoStart;
+}
+
+DimServer::DimServer()
+{
+	itsClientExit = this; 
+	itsExit = this;
+	itsSrvError = this;
+//	itsNServices = 0;
+}
+
+DimServer::~DimServer() 
+{
+	if(itsName)
+	{
+		dis_stop_serving();
+		delete[] itsName;
+	}
+	if(clientName)
+		delete[] clientName;
+	if(dimDnsNode)
+		delete[] dimDnsNode;
+}
+
+void DimServer::start(const char *name)
+{
+	if(!itsName)
+	{
+		itsName = new char[(int)strlen(name)+1];
+		strcpy(itsName,name);
+	}
+	dis_start_serving(itsName);
+}
+
+void DimServer::start(DimServerDns *dns, const char *name)
+{
+	dim_long dnsid;
+
+	dis_init();
+	{
+	DISABLE_AST
+	dns->setName(name);
+	dnsid = dns->getDnsId();
+	dis_start_serving_dns(dnsid, (char *)name /*, dns->getServiceIdList()*/);
+	ENABLE_AST
+	}
+}
+/*
+void DimServer::threadHandler()
+{
+	int oldNServices;
+
+	while(1)
+	{
+		oldNServices = itsNServices;
+		usleep(100000);
+		if(oldNServices == itsNServices)
+			break;
+	}
+cout << "Starting " << itsNServices << endl;
+	{
+		DISABLE_AST
+		dis_start_serving(itsName);
+		itsNServices = 0;
+		ENABLE_AST
+	}
+
+}
+*/
+void DimServer::start()
+{
+//	itsNServices++;
+	if((itsName) && (autoStart))
+	{
+//		DimThread::start();
+		dis_start_serving(itsName);
+	}
+}
+
+void DimServer::start(DimServerDns *dns)
+{
+	dim_long dnsid;
+	char *name;
+	int isAuto;
+
+	dis_init();
+	{
+	DISABLE_AST
+//	dns->itsNServices++;
+
+	name = dns->getName();
+	dnsid = dns->getDnsId();
+	isAuto = dns->isAutoStart();
+	if((name) && (isAuto))
+	{
+//		DimThread::start();
+		dis_start_serving_dns(dnsid, (char *)name /*, dns->getServiceIdList()*/);
+	}
+	ENABLE_AST
+	}
+}
+
+void DimServer::stop()
+{
+	dis_stop_serving();
+	if(itsName)
+	{
+		delete[] itsName;
+		itsName = 0;
+	}
+}
+
+void DimServer::stop(DimServerDns *dns)
+{
+	dis_stop_serving_dns(dns->getDnsId());
+	dns->clearName();
+}
+
+void DimServer::autoStartOn()
+{
+	autoStart = 1;
+}
+
+void DimServer::autoStartOff()
+{
+	autoStart = 0;
+}
+	
+int DimServer::getClientId()
+{
+	if(!clientName)
+		clientName = new char[128];
+	clientName[0] = '\0';
+	return dis_get_client(clientName);
+}
+	
+char *DimServer::getClientName()
+{
+	if(!clientName)
+		clientName = new char[128];
+	clientName[0] = '\0';
+	dis_get_client(clientName);
+	return(clientName);
+}
+/*
+char *DimServer::getClientServices()
+{
+	int id;
+	if((id = dis_get_conn_id()))
+		return dis_get_client_services(id);
+	return (char *)0;
+}
+
+char *DimServer::getClientServices(int clientId)
+{
+	return dis_get_client_services(clientId);
+}
+*/
+char **DimServer::getClientServices()
+{
+	static TokenString *data = 0;
+	int id, len = 0, index = 0;
+	char *services;
+	static char** list = 0;
+	char *sep;
+
+	if(data)
+	{
+		delete data;
+		data = 0;
+	}
+	if(list)
+	{
+		delete[] list;
+		list = 0;
+	}
+	if((id = dis_get_conn_id()))
+	{
+		services = dis_get_client_services(id);
+		if(services)
+		{
+			data = new TokenString(services,(char *)"\n");
+			len = data->getNTokens();
+			list = new char*[len];
+			while(data->getToken(list[index]))
+			{
+				data->getToken(sep);
+				index++;
+			}
+		}
+	}
+	if(!len)
+		list = new char*[1];
+	list[index] = 0;
+	return list;
+}
+
+void DimServer::setClientExitHandler(int clientId)
+{
+	dis_set_client_exit_handler(clientId, 1);
+}
+
+void DimServer::clearClientExitHandler(int clientId)
+{
+	dis_set_client_exit_handler(clientId, 0);
+}
+
+void DimServer::addClientExitHandler(DimClientExitHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_client_exit_handler(0);
+		DimServer::itsClientExit = 0;
+	}
+	else
+	{
+		DimServer::itsClientExit = handler;
+		dis_add_client_exit_handler(client_exit_user_routine);
+	}
+}
+
+void DimServer::addClientExitHandler()
+{
+	DimServer::itsClientExit = this;
+	dis_add_client_exit_handler(client_exit_user_routine);
+}
+
+void DimServer::addExitHandler(DimExitHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_exit_handler(0);
+		DimServer::itsExit = 0;
+	}
+	else
+	{
+		DimServer::itsExit = handler;
+		dis_add_exit_handler(exit_user_routine);
+	}
+}
+
+void DimServer::addErrorHandler(DimErrorHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_error_handler(0);
+		DimServer::itsSrvError = 0;
+	}
+	else
+	{
+		DimServer::itsSrvError = handler;
+		dis_add_error_handler(srv_error_user_routine);
+	}
+}
+
+int DimServer::setDnsNode(const char *node) 
+{
+	return dis_set_dns_node((char *)node); 
+}
+
+int DimServer::setDnsNode(const char *node, int port) 
+{
+	dis_set_dns_port(port);
+	return dis_set_dns_node((char *)node); 
+}
+
+dim_long DimServer::addDns(const char *node, int port) 
+{
+	return dis_add_dns((char *)node, port); 
+}
+char *DimServer::getDnsNode() 
+{
+	if(!dimDnsNode)
+		dimDnsNode = new char[256];
+	if(dis_get_dns_node(dimDnsNode))
+		return dimDnsNode;
+	else
+		return 0; 
+}
+
+int DimServer::getDnsPort() 
+{
+	return dis_get_dns_port();
+}
+
+void DimServer::setWriteTimeout(int secs)
+{
+	dim_set_write_timeout(secs); 
+}
+
+int DimServer::getWriteTimeout() 
+{
+	return dim_get_write_timeout();
+}
+
+void DimServer::addExitHandler()
+{
+	DimServer::itsExit = this;
+	dis_add_exit_handler(exit_user_routine);
+}
+
+void DimServer::addErrorHandler()
+{
+	DimServer::itsSrvError = this;
+	dis_add_error_handler(srv_error_user_routine);
+}
+
+int DimServer::inCallback()
+{
+	if(DimCore::inCallback)
+		return 1;
+	return 0;
+}
+
+extern "C" {
+static void client_exit_user_routine(int *idp)
+{
+	int id = *idp;
+
+	id++;
+	DimCore::inCallback = 2;
+	DimServer::itsClientExit->clientExitHandler();
+	DimCore::inCallback = 0;
+}
+
+static void exit_user_routine(int *idp)
+{
+//	int id = *idp;
+
+//	id++;
+	DimCore::inCallback = 2;
+	DimServer::itsExit->exitHandler(*idp);
+	DimCore::inCallback = 0;
+}
+
+static void srv_error_user_routine(int severity, int code, char *msg)
+{
+
+	DimCore::inCallback = 2;
+	if(DimServer::itsSrvError != 0)
+		DimServer::itsSrvError->errorHandler(severity, code, msg);
+	DimCore::inCallback = 0;
+}
+
+}
+
+
+DimService::DimService()
+{
+//	itsTagId = 0;
+	itsId = 0;
+	itsName = 0;
+}
+
+DimService::DimService(const char *name, int &value) 
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(int);
+	itsType = DisINT;
+	declareIt((char *)name, (char *)"L", 0, 0);
+}
+
+DimService::DimService(const char *name, float &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(float);
+	itsType = DisFLOAT;
+	declareIt((char *)name, (char *)"F", 0, 0);
+}
+
+DimService::DimService(const char *name, double &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(double);
+	itsType = DisDOUBLE;
+	declareIt((char *)name, (char *)"D", 0, 0);
+}
+
+DimService::DimService(const char *name, longlong &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(longlong);
+	itsType = DisXLONG;
+	declareIt((char *)name, (char *)"X", 0, 0);
+}
+
+DimService::DimService(const char *name, short &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(short);
+	itsType = DisSHORT;
+	declareIt((char *)name, (char *)"S", 0, 0);
+}
+
+DimService::DimService(const char *name, char *string)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = string;
+	itsSize = (int)strlen(string)+1;
+	itsType = DisSTRING;
+	declareIt((char *)name, (char *)"C", 0, 0);
+}
+
+DimService::DimService(const char *name, char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, 0);
+}
+
+DimService::DimService(const char *name, char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, 0);
+}
+
+DimService::DimService(const char *name, const char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, 0);
+}
+
+DimService::DimService(const char *name, const char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, 0);
+}
+
+// with Dns
+
+DimService::DimService(DimServerDns *dns, const char *name, int &value) 
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(int);
+	itsType = DisINT;
+	declareIt((char *)name, (char *)"L", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, float &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(float);
+	itsType = DisFLOAT;
+	declareIt((char *)name, (char *)"F", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, double &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(double);
+	itsType = DisDOUBLE;
+	declareIt((char *)name, (char *)"D", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, longlong &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(longlong);
+	itsType = DisXLONG;
+	declareIt((char *)name, (char *)"X", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, short &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(short);
+	itsType = DisSHORT;
+	declareIt((char *)name, (char *)"S", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *string)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = string;
+	itsSize = (int)strlen(string)+1;
+	itsType = DisSTRING;
+	declareIt((char *)name, (char *)"C", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, dns);
+}
+
+
+DimService::DimService(DimServerDns *dns, const char *name, const char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, const char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, dns);
+}
+
+
+DimService::~DimService()
+{
+	DISABLE_AST
+	if(itsName)
+		delete[] itsName;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsId)
+		dis_remove_service( itsId );
+	itsId = 0;
+	ENABLE_AST
+}
+
+int DimService::updateService()
+{
+	if(!itsId)
+		return 0;
+	return dis_update_service( itsId );
+}
+
+int DimService::updateService( int &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisINT)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( float &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisFLOAT) {
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( double &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisDOUBLE) {
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( longlong &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisXLONG)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( short &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSHORT)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( char *string )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSTRING)
+	{
+		itsData = string;
+		itsSize = (int)strlen(string)+1;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+	
+int DimService::updateService( void *structure, int size )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisPOINTER)
+	{
+		itsData = structure;
+		itsSize = size;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+	
+int DimService::selectiveUpdateService(int *cids)
+{
+	if(!itsId)
+		return 0;
+	if( cids == 0)
+	{
+		int ids[2];
+		ids[0] = DimServer::getClientId();
+		ids[1] = 0;
+		return dis_selective_update_service( itsId, ids );
+	} 
+	return dis_selective_update_service( itsId, cids );
+}
+
+int DimService::selectiveUpdateService( int &value, int *cids)
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisINT)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( float &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisFLOAT)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( double &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisDOUBLE)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( longlong &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisXLONG) 
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( short &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSHORT) 
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( char *string, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSTRING)
+	{
+		itsData = string;
+		itsSize = (int)strlen(string)+1;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+	
+int DimService::selectiveUpdateService( void *structure, int size, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisPOINTER)
+	{
+		itsData = structure;
+		itsSize = size;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+	
+void DimService::setQuality(int quality)
+{
+	if(!itsId)
+		return;
+	dis_set_quality( itsId, quality );
+}
+
+void DimService::setTimestamp(int secs, int millisecs)
+{ 
+	if(!itsId)
+		return;
+	dis_set_timestamp( itsId, secs, millisecs );
+}
+
+void DimService::setData(void *data, int size)
+{
+	storeIt(data, size);
+}
+
+void DimService::setData(int &data)
+{
+	storeIt(&data, sizeof(int));
+}
+
+void DimService::setData(float &data)
+{
+	storeIt(&data, sizeof(float));
+}
+
+void DimService::setData(double &data)
+{
+	storeIt(&data, sizeof(double));
+}
+
+void DimService::setData(longlong &data)
+{
+	storeIt(&data, sizeof(longlong));
+}
+
+void DimService::setData(short &data)
+{
+	storeIt(&data, sizeof(short));
+}
+
+void DimService::setData(char *data)
+{
+	storeIt(data, (int)strlen(data)+1);
+}
+
+char *DimService::getName()
+{
+	return itsName;
+}
+
+int DimService::getTimeout(int clientId)
+{
+	return dis_get_timeout(itsId, clientId);
+}
+
+int DimService::getNClients()
+{
+	return dis_get_n_clients( itsId );
+}
+
+
+CmndInfo::CmndInfo(void *data, int datasize, int tsecs, int tmillisecs)
+{
+	itsData = new char[datasize];
+	itsDataSize = datasize;
+	secs = tsecs;
+	millisecs = tmillisecs;
+	memcpy(itsData, data, (size_t)datasize);
+}
+
+CmndInfo::~CmndInfo()
+{
+	delete[] (char *)itsData;
+}
+
+
+DimCommand::DimCommand(const char *name, char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, 0);
+}
+
+DimCommand::DimCommand(const char *name, char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, 0);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, dns);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, dns);
+}
+
+
+DimCommand::DimCommand(const char *name, const char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, 0);
+}
+
+DimCommand::DimCommand(const char *name, const char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, 0);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, const char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, dns);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, const char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, dns);
+}
+
+int DimCommand::getNext()
+{
+	CmndInfo *cmndptr;
+	if(currCmnd)
+	{
+		delete currCmnd;
+		currCmnd = 0;
+		itsData = 0;
+		itsSize = 0;
+	}
+	if ((cmndptr = (CmndInfo *)itsCmndList.removeHead()))
+	{
+		currCmnd = cmndptr;
+		itsData = currCmnd->itsData;
+		itsSize = currCmnd->itsDataSize;
+		secs = currCmnd->secs;
+		millisecs = currCmnd->millisecs;
+		return(1);
+	}
+	return(0);
+}
+
+int DimCommand::hasNext()
+{
+	if ((CmndInfo *)itsCmndList.getHead())
+	{
+		return(1);
+	}
+	return(0);
+}
+
+void *DimCommand::getData()
+{
+	return itsData;
+}
+
+int DimCommand::getInt()
+{
+	return *(int *)itsData;
+}
+
+float DimCommand::getFloat()
+{
+	return *(float *)itsData;
+}
+
+double DimCommand::getDouble()
+{
+	return *(double *)itsData;
+}
+
+longlong DimCommand::getLonglong()
+{
+	return *(longlong *)itsData;
+}
+
+short DimCommand::getShort()
+{
+	return *(short *)itsData;
+}
+
+char *DimCommand::getString()
+{
+	return (char *)itsData;
+}
+
+int DimCommand::getSize()
+{
+	return itsSize;
+}
+
+char *DimCommand::getFormat()
+{
+	return itsFormat;
+}
+
+int DimCommand::getTimestamp()
+{
+
+	if(secs == 0)
+	{
+		DISABLE_AST
+		if(itsId)
+			dis_get_timestamp(itsId, &secs, &millisecs);
+		ENABLE_AST
+	}
+	return(secs);
+}
+
+int DimCommand::getTimestampMillisecs()
+{
+	return(millisecs);
+}
+
+void DimCommand::commandHandler() 
+{
+	CmndInfo *cmndptr;
+	int tsecs, tmillisecs;
+
+	tsecs = getTimestamp();
+	tmillisecs = getTimestampMillisecs();
+	cmndptr = new CmndInfo(getData(), getSize(), tsecs, tmillisecs);
+	itsCmndList.add(cmndptr);
+}
+
+char *DimCommand::getName()
+{
+	return itsName;
+}
+
+DimCommand::~DimCommand()
+{
+	DISABLE_AST
+	delete[] itsName;
+	delete[] itsFormat;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsId)
+		dis_remove_service( itsId );
+	itsId = 0;
+	ENABLE_AST
+}
+
+DimRpc::DimRpc()
+{
+}
+
+DimRpc::DimRpc(const char *name, const char *formatin, const char *formatout)
+{
+	declareIt( (char *)name, (char *)formatin, (char *)formatout, 0);
+}
+
+DimRpc::DimRpc(DimServerDns *dns, const char *name, const char *formatin, const char *formatout)
+{
+	declareIt( (char *)name, (char *)formatin, (char *)formatout, dns);
+}
+
+DimRpc::~DimRpc()
+{
+	DISABLE_AST
+	delete[] itsName;
+	delete[] itsNameIn;
+	delete[] itsNameOut;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsIdIn)
+		dis_remove_service( itsIdIn );
+	if(itsIdOut)
+		dis_remove_service( itsIdOut );
+	itsIdIn = 0;
+	itsIdOut = 0;
+	ENABLE_AST
+}
+
+void *DimRpc::getData()
+{
+	return itsDataIn;
+}
+
+int DimRpc::getInt()
+{
+	return *(int *)itsDataIn;
+}
+
+float DimRpc::getFloat()
+{
+	return *(float *)itsDataIn;
+}
+
+double DimRpc::getDouble()
+{
+	return *(double *)itsDataIn;
+}
+
+longlong DimRpc::getLonglong()
+{
+	return *(longlong *)itsDataIn;
+}
+
+short DimRpc::getShort()
+{
+	return *(short *)itsDataIn;
+}
+
+char *DimRpc::getString()
+{
+	return (char *)itsDataIn;
+}
+
+int DimRpc::getSize()
+{
+	return itsSizeIn;
+}
+
+void DimRpc::setData(void *data, int size)
+{
+	storeIt(data,size);
+}
+
+void DimRpc::setData(int &data)
+{
+	storeIt(&data,sizeof(int));
+}
+
+void DimRpc::setData(float &data)
+{
+	storeIt(&data,sizeof(float));
+}
+
+void DimRpc::setData(double &data)
+{
+	storeIt(&data,sizeof(double));
+}
+
+void DimRpc::setData(longlong &data)
+{
+	storeIt(&data,sizeof(longlong));
+}
+
+void DimRpc::setData(short &data)
+{
+	storeIt(&data,sizeof(short));
+}
+
+void DimRpc::setData(char *data)
+{
+	storeIt(data,(int)strlen(data)+1);
+}
+
+char *DimRpc::getName()
+{
+	return itsName;
+}
Index: branches/FACT++_part_filenames/dim/src/dll.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dll.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dll.c	(revision 18732)
@@ -0,0 +1,133 @@
+/*
+ * A utility file. A double linked list.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+
+void dll_init( DLL* head )
+{
+	DISABLE_AST
+	head->next = head;
+	head->prev = head;
+	ENABLE_AST
+}
+
+
+void dll_insert_queue( DLL* head, DLL* item )
+{
+	register DLL *prevp;
+
+	DISABLE_AST
+	item->next = head;
+	prevp = head->prev;
+	item->prev = prevp;
+	prevp->next = item;
+	head->prev = item;
+	ENABLE_AST
+}	
+
+void dll_insert_after( DLL* atitem, DLL* item )
+{
+	register DLL *auxp;
+
+	DISABLE_AST
+	auxp = atitem->next;
+	item->next = auxp;
+	item->prev = atitem;
+	atitem->next = item;
+	auxp->prev = item;
+	ENABLE_AST
+}	
+
+DLL *dll_search( DLL* head, char *data, int size )
+{
+	register DLL *auxp= head->next;
+ 
+	DISABLE_AST
+	while( auxp!= head ) {
+		if( !memcmp(auxp->user_info, data, (size_t)size) ) {
+			ENABLE_AST
+			return(auxp);
+		}
+		auxp = auxp->next;
+	}
+	ENABLE_AST
+	return((DLL *)0);
+}
+
+
+DLL *dll_get_next( DLL* head, DLL* item )
+{
+	DISABLE_AST
+	if( item->next != head ) {
+		ENABLE_AST
+		return(item->next);
+	}
+	ENABLE_AST
+	return((DLL *) 0);
+}
+
+DLL *dll_get_prev( DLL* head, DLL* item )
+{
+	DISABLE_AST
+	if( item->prev != head ) {
+		ENABLE_AST
+		return(item->prev);
+	}
+	ENABLE_AST
+	return((DLL *) 0);
+}
+
+int dll_empty( DLL* head )
+{
+	DISABLE_AST
+	if( head->next != head ) {
+		ENABLE_AST
+		return(0);
+	}
+	ENABLE_AST
+	return(1);
+}
+
+
+void dll_remove( DLL* item ) 
+{
+	register DLL *prevp, *nextp;
+
+	DISABLE_AST
+	prevp = item->prev;
+	nextp = item->next;
+	prevp->next = item->next;
+	nextp->prev = prevp;
+	ENABLE_AST
+}	
+
+DLL *dll_search_next_remove( DLL* head, int offset, char *data, int size )
+{
+	register DLL *auxp= head->next;
+	DLL *retp = 0;
+ 
+	DISABLE_AST
+	while( auxp!= head ) {
+		if( !memcmp(&(auxp->user_info[offset]), data, (size_t)size) ) {
+			retp = auxp;
+		}
+		auxp = auxp->next;
+	}
+	if( retp)
+	{
+		dll_remove(retp);
+		ENABLE_AST
+		return(retp);
+	}
+	ENABLE_AST
+	return((DLL *)0);
+}
+
Index: branches/FACT++_part_filenames/dim/src/dna.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dna.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dna.c	(revision 18732)
@@ -0,0 +1,940 @@
+
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+/* include files */
+
+#include <errno.h>
+#define DIMLIB
+#define DNA
+#include <dim.h>
+
+/* global definitions */
+
+#define READ_HEADER_SIZE	12
+
+/*
+#define TO_DBG		1 
+*/
+
+/* global variables */
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	int port;
+	SRC_TYPES src_type;
+	time_t last_used;
+} PENDING_OPEN;
+
+#define TMOUT_PENDING_CONN_TMOUT 3600
+#define MAX_TMOUT_PENDING_CONNS 10
+static PENDING_OPEN Pending_conns[MAX_CONNS];
+static PENDING_OPEN Pending_conns_tmout[MAX_TMOUT_PENDING_CONNS];
+
+static int DNA_Initialized = FALSE;
+
+extern int Tcpip_max_io_data_write;
+extern int Tcpip_max_io_data_read;
+
+_DIM_PROTO( static void ast_read_h,     (int conn_id, int status, int size) );
+_DIM_PROTO( static void ast_conn_h,     (int handle, int svr_conn_id,
+                                     int protocol) );
+_DIM_PROTO( static int dna_write_bytes, (int conn_id, void *buffer, int size,
+									 int nowait) );
+_DIM_PROTO( static void release_conn,   (int conn_id) );
+_DIM_PROTO( static void save_node_task, (int conn_id, DNA_NET *buffer) );
+
+/*
+ * Routines common to Server and Client
+ */
+/*
+static int Prev_packet[3];
+static int Prev_buffer[3];
+static int Prev_conn_id = 0;
+*/
+static int is_header( int conn_id )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int ret;
+
+	ret = 0;
+	if( (vtohl(dna_connp->buffer[2]) == TRP_MAGIC) &&
+	    (vtohl(dna_connp->buffer[1]) == 0) &&
+	    (vtohl(dna_connp->buffer[0]) == READ_HEADER_SIZE) )
+	{
+		dna_connp->state = RD_HDR;
+		ret = 1;
+	} 
+	else if( (vtohl(dna_connp->buffer[2]) == TST_MAGIC) &&
+		   (vtohl(dna_connp->buffer[1]) == 0) &&
+		   (vtohl(dna_connp->buffer[0]) == READ_HEADER_SIZE) )
+	{
+		dna_connp->state = RD_HDR;
+		ret = 1;
+	} 
+	else if( (vtohl(dna_connp->buffer[2]) == (int)HDR_MAGIC ) &&
+		   (vtohl(dna_connp->buffer[0]) == (int)READ_HEADER_SIZE ) )
+	{
+		dna_connp->state = RD_DATA;
+		ret = 1;
+	} 
+	else 
+	{
+/*
+		dim_print_date_time();
+		printf( " conn: %d to %s@%s, expecting header\n", conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node );
+		printf( "buffer[0]=%d\n", vtohl(dna_connp->buffer[0]));
+		printf( "buffer[1]=%d\n", vtohl(dna_connp->buffer[1]));
+		printf( "buffer[2]=%x\n", vtohl(dna_connp->buffer[2]));
+		printf( "closing the connection.\n" );
+		printf( " Previous conn: %d, Previous Packet\n", Prev_conn_id);
+		printf( "buffer[0]=%d\n", vtohl(Prev_packet[0]));
+		printf( "buffer[1]=%d\n", vtohl(Prev_packet[1]));
+		printf( "buffer[2]=%x\n", vtohl(Prev_packet[2]));
+		printf( " Previous Buffer\n");
+		printf( "buffer[0]=%d\n", vtohl(Prev_buffer[0]));
+		printf( "buffer[1]=%d\n", vtohl(Prev_buffer[1]));
+		printf( "buffer[2]=%x\n", vtohl(Prev_buffer[2]));
+		fflush(stdout);
+*/
+		dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+		ret = 0;
+	}			
+	return(ret);
+}
+
+static void read_data( int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+	if( !dna_connp->saw_init &&
+	    vtohl(dna_connp->buffer[0]) == (int)OPN_MAGIC)
+	{
+		save_node_task(conn_id, (DNA_NET *) dna_connp->buffer);
+		dna_connp->saw_init = TRUE;
+	} 
+	else
+	{
+/*
+printf("passing up %d bytes, conn_id %d\n",dna_connp->full_size, conn_id); 
+*/
+		dna_connp->read_ast(conn_id, dna_connp->buffer,
+			dna_connp->full_size, STA_DATA);
+	}
+}
+
+static void ast_read_h( int conn_id, int status, int size )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	int tcpip_code;
+	register int read_size, next_size;
+	register char *buff;
+	int max_io_data;
+
+	if(!dna_connp->buffer) /* The connection has already been closed */
+	{
+		return;
+	}
+	if(status == 1)
+	{
+		next_size = dna_connp->curr_size;
+		buff = (char *) dna_connp->curr_buffer;
+  		if(size < next_size) 
+		{
+/*
+			Prev_conn_id = conn_id;
+	  		Prev_packet[0] = ((int *)dna_connp->curr_buffer)[0];
+			Prev_packet[1] = ((int *)dna_connp->curr_buffer)[1];
+			Prev_packet[2] = ((int *)dna_connp->curr_buffer)[2];
+			Prev_buffer[0] = dna_connp->buffer[0];
+			Prev_buffer[1] = dna_connp->buffer[1];
+			Prev_buffer[2] = dna_connp->buffer[2];
+*/
+			max_io_data = Tcpip_max_io_data_read;
+			read_size = ((next_size - size) > max_io_data) ?
+				max_io_data : next_size - size;
+			dna_connp->curr_size -= size;
+			dna_connp->curr_buffer += size;
+			tcpip_code = tcpip_start_read(conn_id, buff + size, 
+				read_size, ast_read_h);
+			if(tcpip_failure(tcpip_code)) 
+			{
+#ifndef WIN32
+			  if(errno == ENOTSOCK)
+			  {
+				  if(dna_connp->read_ast)
+					dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+			  }
+			  else
+#endif
+			  {
+				dna_report_error(conn_id, tcpip_code,
+					"Reading from", DIM_ERROR, DIMTCPRDERR);
+			  }
+			}
+			return;
+		}
+		switch(dna_connp->state)
+		{
+			case RD_HDR :
+				if(is_header(conn_id))
+				{
+					if( dna_connp->state == RD_DATA )
+					{
+						next_size = vtohl(dna_connp->buffer[1]);
+						dna_start_read(conn_id, next_size);
+					}
+					else
+					{
+						dna_connp->state = RD_HDR;
+						dna_start_read(conn_id, READ_HEADER_SIZE);
+					}
+				}
+				break;
+			case RD_DATA :
+				read_data(conn_id);
+				dna_connp->state = RD_HDR;
+				dna_start_read(conn_id, READ_HEADER_SIZE);
+				break;
+			default:
+				break;
+		}
+/*
+		if(dna_connp->buffer)
+		{
+			Prev_conn_id = conn_id;
+			Prev_packet[0] = ((int *)dna_connp->curr_buffer)[0];
+			Prev_packet[1] = ((int *)dna_connp->curr_buffer)[1];
+			Prev_packet[2] = ((int *)dna_connp->curr_buffer)[2];
+			Prev_buffer[0] = dna_connp->buffer[0];
+			Prev_buffer[1] = dna_connp->buffer[1];
+			Prev_buffer[2] = dna_connp->buffer[2];
+		}
+*/
+	} 
+	else 
+	{
+	  /*
+	  printf("Connection lost. Signal upper layer\n");
+	  */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+	}
+}
+
+
+int dna_start_read(int conn_id, int size)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code, read_size;
+	int max_io_data;
+	
+	if(!dna_connp->busy)
+	{
+		return(0);
+	}
+
+	dna_connp->curr_size = size;
+	dna_connp->full_size = size;
+	if(size > dna_connp->buffer_size) 
+	{
+		dna_connp->buffer =
+				(int *) realloc(dna_connp->buffer, (size_t)size);
+		dna_connp->buffer_size = size;
+	}
+	dna_connp->curr_buffer = (char *) dna_connp->buffer;
+	max_io_data = Tcpip_max_io_data_read;
+	read_size = (size > max_io_data) ? max_io_data : size ;
+
+	tcpip_code = tcpip_start_read(conn_id, dna_connp->curr_buffer,
+				  read_size, ast_read_h);
+	if(tcpip_failure(tcpip_code)) {
+		dna_report_error(conn_id, tcpip_code,
+			"Reading from", DIM_ERROR, DIMTCPRDERR);
+
+		return(0);
+	}
+
+	return(1);
+}								
+
+
+static int dna_write_bytes( int conn_id, void *buffer, int size, int nowait )
+{
+	register int size_left, wrote;
+	register char *p;
+	int max_io_data;
+#ifdef VMS
+	int retries = WRITE_RETRIES, retrying = 0;
+	float wait_time = 0.01;
+#endif
+	extern int tcpip_write_nowait(int, char *, int);
+
+	max_io_data = Tcpip_max_io_data_write;
+	p = (char *) buffer;
+	size_left = size;
+	do {
+		size = (size_left > max_io_data) ? max_io_data : size_left ;
+#ifdef VMS
+		if(nowait)
+		{
+			while(--retries)
+			{
+				if((wrote = tcpip_write_nowait(conn_id, p, size)) > 0)
+					break;
+				if(!tcpip_would_block(wrote))
+					return(0);
+				if(retries == WRITE_RETRIES_WNG)
+				{
+					dna_report_error(conn_id, tcpip_code,
+						"Writing to (retrying)", DIM_WARNING, DIMTCPWRRTY);
+					retrying = 1;
+				}
+				lib$wait(&wait_time);
+			}
+			if(!retries)
+			{
+				return(0);
+			}
+		}
+		else
+			wrote = tcpip_write(conn_id, p, size);
+#else
+		if(nowait)
+		{
+		  wrote = tcpip_write_nowait(conn_id, p, size);
+		  if(wrote == -1)
+		  {
+		    dna_report_error(conn_id, -1,
+				     "Write timeout, writing to", DIM_WARNING, DIMTCPWRTMO);
+		    wrote = 0;
+		  }
+		}
+		else
+		{
+			wrote = tcpip_write(conn_id, p, size);
+		}
+#endif
+		
+		if( tcpip_failure(wrote) )
+			return(0);
+		p += wrote;
+		size_left -= wrote;
+	} while(size_left > 0);
+	return(1);
+}
+
+void dna_test_write(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code;
+	DNA_HEADER test_pkt;
+	register DNA_HEADER *test_p = &test_pkt;
+
+	if(!dna_connp->busy)
+	{
+		return;
+    }
+	if(dna_connp->writing)
+	{
+		return;
+    }
+	test_p->header_size = htovl(READ_HEADER_SIZE);
+	test_p->data_size = 0;
+	test_p->header_magic = htovl(TST_MAGIC);
+	tcpip_code = dna_write_bytes(conn_id, &test_pkt, READ_HEADER_SIZE,0);
+	if(tcpip_failure(tcpip_code)) {
+		 /* Connection lost. Signal upper layer ? */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+		return;
+	}
+}
+
+typedef struct
+{
+	int conn_id;
+	void *buffer;
+	int size;
+	char dummy[MAX_NAME];
+} WRITE_ITEM;
+
+static int do_dna_write(int id)
+{
+	register DNA_CONNECTION *dna_connp;
+	int tcpip_code;
+	WRITE_ITEM *ptr;
+	int conn_id, size;
+	void *buffer;
+
+	ptr = (WRITE_ITEM *)id_get_ptr(id, SRC_DNA);
+	if(!ptr)
+		return(2);
+	conn_id = ptr->conn_id;
+	buffer = ptr->buffer;
+	size = ptr->size;
+
+	dna_connp = &Dna_conns[conn_id];
+	if(!dna_connp->busy)
+	{
+		id_free(id, SRC_DNA);
+		free(buffer);
+		free(ptr);
+		return(2);
+    }
+	dna_connp->writing = TRUE;
+	tcpip_code = dna_write_bytes(conn_id, buffer, size,0);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		dna_connp->writing = FALSE;
+		id_free(id, SRC_DNA);
+		free(buffer);
+		free(ptr);
+		return(0);
+	}
+
+	id_free(id, SRC_DNA);
+	free(buffer);
+	free(ptr);
+
+	dna_connp->writing = FALSE;
+	return(1);
+}	
+
+int dna_write_nowait(int conn_id, void *buffer, int size)
+{
+	register DNA_CONNECTION *dna_connp;
+	DNA_HEADER header_pkt;
+	register DNA_HEADER *header_p = &header_pkt;
+	int tcpip_code, ret = 1;
+
+	DISABLE_AST
+	dna_connp = &Dna_conns[conn_id];
+	if(!dna_connp->busy)
+	{
+		ENABLE_AST
+		return(2);
+    }
+	dna_connp->writing = TRUE;
+
+	header_p->header_size = htovl(READ_HEADER_SIZE);
+	header_p->data_size = htovl(size);
+	header_p->header_magic = (int)htovl(HDR_MAGIC);
+	tcpip_code = dna_write_bytes(conn_id, &header_pkt, READ_HEADER_SIZE, 1);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		dna_connp->writing = FALSE;
+		ENABLE_AST
+		return(0);
+	}
+	tcpip_code = dna_write_bytes(conn_id, buffer, size, 1);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		ret = 0;
+	}
+	dna_connp->writing = FALSE;
+	ENABLE_AST
+	return(ret);
+}	
+
+typedef struct
+{
+	DNA_HEADER header;
+	char data[1];
+
+}WRITE_DATA;
+
+int dna_write(int conn_id, void *buffer, int size)
+{
+	WRITE_ITEM *newp;
+	int id;
+	WRITE_DATA *pktp;
+	DNA_HEADER *headerp;
+
+	DISABLE_AST
+
+	pktp = malloc((size_t)(READ_HEADER_SIZE+size));
+	headerp = &(pktp->header);
+	headerp->header_size = htovl(READ_HEADER_SIZE);
+	headerp->data_size = htovl(size);
+	headerp->header_magic = (int)htovl(HDR_MAGIC);
+
+	memcpy(pktp->data, (char *)buffer, (size_t)size);
+
+	newp = malloc(sizeof(WRITE_ITEM));
+	newp->conn_id = conn_id;
+	newp->buffer = pktp;
+	newp->size = size+READ_HEADER_SIZE;
+	id = id_get((void *)newp, SRC_DNA);
+	dtq_start_timer(0, do_dna_write, id);
+	ENABLE_AST
+	return(1);
+}
+
+/* Server Routines */
+
+static void ast_conn_h(int handle, int svr_conn_id, int protocol)
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	if(protocol){}
+	conn_id = conn_get();
+/*
+	if(!conn_id)
+		dim_panic("In ast_conn_h: No more connections\n");
+*/
+	dna_connp = &Dna_conns[conn_id] ;
+	dna_connp->error_ast = Dna_conns[svr_conn_id].error_ast;
+	tcpip_code = tcpip_open_connection( conn_id, handle );
+
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Connecting to", DIM_ERROR, DIMTCPCNERR);
+		conn_free(conn_id);
+	} else {
+		dna_connp->state = RD_HDR;
+		dna_connp->buffer = (int *)malloc((size_t)TCP_RCV_BUF_SIZE);
+/*
+		if(!dna_connp->buffer)
+		{
+			printf("Error in DNA - handle_connection malloc returned 0\n");
+			fflush(stdout);
+		}
+*/
+		dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+		dna_connp->read_ast = Dna_conns[svr_conn_id].read_ast;
+		dna_connp->saw_init = FALSE;
+		dna_start_read(conn_id, READ_HEADER_SIZE); /* sizeof(DNA_NET) */
+		/* Connection arrived. Signal upper layer ? */
+		dna_connp->read_ast(conn_id, NULL, 0, STA_CONN);
+	}
+	tcpip_code = tcpip_start_listen(svr_conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(svr_conn_id, tcpip_code,
+			"Listening at", DIM_ERROR, DIMTCPLNERR);
+	}
+}
+
+int dna_init()
+{
+	PENDING_OPEN *pending_connp;
+	int i, size;
+	
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+		for( i = 1; i < size; i++, pending_connp++ )
+			pending_connp->task_name[0] = '\0';
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		for( i = 1; i < size; i++, pending_connp++ )
+			pending_connp->task_name[0] = '\0';
+		DNA_Initialized = TRUE;
+	}
+	return(1);
+}
+
+int dna_open_server(char *task, void (*read_ast)(), int *protocol, int *port, void (*error_ast)())
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	dna_init();
+/*
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	*protocol = PROTOCOL;
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id];
+/*
+	if(!conn_id)
+		dim_panic("In dna_open_server: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_server(conn_id, task, port);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Opening server port", DIM_ERROR, DIMTCPOPERR);
+		conn_free(conn_id);
+		return(0);
+	}
+	dna_connp->writing = FALSE;
+	dna_connp->read_ast = read_ast;
+	tcpip_code = tcpip_start_listen(conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code, "Listening at", DIM_ERROR, DIMTCPLNERR);
+		return(0);
+	}
+	return(conn_id);
+}
+
+
+int dna_get_node_task(int conn_id, char *node, char *task)
+{
+	if(Dna_conns[conn_id].busy)
+		tcpip_get_node_task(conn_id, node, task);
+	else
+		node[0] = '\0';
+	return(1);
+}
+
+
+/* Client Routines */
+
+void dna_set_test_write(int conn_id, int time)
+{
+	extern void tcpip_set_test_write(int, int);
+
+	tcpip_set_test_write(conn_id, time);
+}
+
+void dna_rem_test_write(int conn_id)
+{
+	extern void tcpip_rem_test_write(int);
+
+	tcpip_rem_test_write(conn_id);
+}
+
+static int ins_pend_conn( char *node, char *task, int port, SRC_TYPES src_type, int type, time_t last_used )
+{
+	register PENDING_OPEN *pending_connp;
+	register int i, size;
+	time_t oldest;
+	int oldesti = 0;
+	extern time_t time();
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+		oldest = 0;
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		oldest = time(NULL);
+		oldesti = 1;
+	}
+
+	for( i = 1; i < size; i++, pending_connp++ )
+	{
+		if( pending_connp->task_name[0] == '\0' )
+		{
+			strcpy(pending_connp->node_name, node);
+			strcpy(pending_connp->task_name, task);
+			pending_connp->port = port;
+			pending_connp->src_type = src_type;
+			pending_connp->last_used = last_used;
+			return(i);
+		}
+		else
+		{
+			if(pending_connp->last_used < oldest)
+			{
+				oldest = pending_connp->last_used;
+				oldesti = i;
+			}
+		}
+	}
+	if(type != 0)
+	{
+		pending_connp = &Pending_conns_tmout[oldesti];
+		strcpy(pending_connp->node_name, node);
+		strcpy(pending_connp->task_name, task);
+		pending_connp->port = port;
+		pending_connp->src_type = src_type;
+		pending_connp->last_used = last_used;
+		return(oldesti);
+	}
+	return(0);
+}
+
+static int find_pend_conn( char *node, char *task, int port, SRC_TYPES src_type, int type )
+{
+	register PENDING_OPEN *pending_connp;
+	register int i, size;
+	time_t curr_time;
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		curr_time = time(NULL);
+		for( i = 1; i < size; i++, pending_connp++ )
+		{
+			if( pending_connp->task_name[0] != '\0' )
+			{
+				if( curr_time - pending_connp->last_used > TMOUT_PENDING_CONN_TMOUT )
+				{
+					pending_connp->task_name[0] = '\0';
+				}
+			}
+		}
+		pending_connp = &Pending_conns_tmout[1];
+	}
+	for( i = 1; i < size; i++, pending_connp++ )
+	{
+		if( (!strcmp(pending_connp->node_name, node)) &&
+			(!strcmp(pending_connp->task_name, task)) &&
+			(pending_connp->port == port) &&
+			(pending_connp->src_type == src_type))
+		{
+			return(i);
+		}
+	}
+	return(0);
+}
+
+
+static void rel_pend_conn( int id, int type )
+{
+	register PENDING_OPEN *pending_connp;
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[id];
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[id];
+	}
+	pending_connp->task_name[0] = '\0';
+}	
+
+
+int dna_open_client(char *server_node, char *server_task, int port, int server_protocol, 
+					void (*read_ast)(), void (*error_ast)(), SRC_TYPES src_type)
+{
+	register DNA_CONNECTION *dna_connp;
+	char str[256];
+	register int tcpip_code, conn_id, id;
+	DNA_NET local_buffer;
+	extern int get_proc_name(char *);
+	char src_type_str[64];
+
+	if(server_protocol){}
+	dna_init();
+/*
+	if(!DNA_Initialized) {
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id] ;
+/*
+	if( !(conn_id = conn_get()) )
+		dim_panic("In dna_open_client: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_client(conn_id, server_node, server_task, port);
+	if( tcpip_failure(tcpip_code) )
+	{
+#ifdef VMS
+		if(!strstr(server_node,"fidel"))
+		{
+#endif
+		if(!find_pend_conn(server_node, server_task, port, src_type, 0))
+		{
+			if(src_type == SRC_DIS)
+				strcpy(src_type_str,"Server");
+			else if(src_type == SRC_DIC)
+				strcpy(src_type_str,"Client");
+			else
+				strcpy(src_type_str,"Unknown type");
+			sprintf( str,"%s Connecting to %s on %s", 
+				src_type_str, server_task, server_node );
+			if(!strcmp(server_task,"DIM_DNS"))
+				dna_report_error( conn_id, tcpip_code, str, DIM_ERROR, DIMDNSCNERR );
+			else
+				dna_report_error( conn_id, tcpip_code, str, DIM_ERROR, DIMTCPCNERR );
+			ins_pend_conn(server_node, server_task, port, src_type, 0, 0);
+		}
+#ifdef VMS
+		}
+#endif
+		tcpip_close(conn_id);
+		conn_free( conn_id );
+		return(0);
+	}
+	if( (id = find_pend_conn(server_node, server_task, port, src_type, 0)) )
+	{
+		if(src_type == SRC_DIS)
+			strcpy(src_type_str,"Server");
+		else if(src_type == SRC_DIC)
+			strcpy(src_type_str,"Client");
+		else
+			strcpy(src_type_str,"Unknown type");
+		sprintf( str,"%s Connection established to", src_type_str);
+		if(!strcmp(server_task,"DIM_DNS"))
+			dna_report_error( conn_id, -1, str, DIM_INFO, DIMDNSCNEST );
+		else
+			dna_report_error( conn_id, -1, str, DIM_INFO, DIMTCPCNEST );
+		rel_pend_conn(id, 0);
+	}
+	dna_connp->state = RD_HDR;
+	dna_connp->writing = FALSE;
+	dna_connp->buffer = (int *)malloc((size_t)TCP_RCV_BUF_SIZE);
+/*
+	if(!dna_connp->buffer)
+	{
+		printf("Error in DNA - open_client malloc returned 0\n");
+		fflush(stdout);
+	}
+*/
+	dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+	dna_connp->read_ast = read_ast;
+	dna_connp->saw_init = TRUE;	/* we send it! */
+	dna_start_read(conn_id, READ_HEADER_SIZE);
+	local_buffer.code = (int)htovl(OPN_MAGIC);
+	get_node_name(local_buffer.node);
+	get_proc_name(local_buffer.task);
+	tcpip_code = dna_write_nowait(conn_id, &local_buffer, sizeof(local_buffer));
+	if (tcpip_failure(tcpip_code))
+	{
+		dim_print_date_time();
+		printf(" Client Establishing Connection: Couldn't write to Conn %3d : Server %s@%s\n",conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node);
+		fflush(stdout);
+		dna_close(conn_id);
+		return(0);
+	}
+	read_ast(conn_id, NULL, 0, STA_CONN);
+	return(conn_id);
+}
+	
+int dna_close(int conn_id)
+{
+	if(conn_id > 0)
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+		    dna_report_error(conn_id, -1,
+				     "Write timeout, disconnecting from", DIM_ERROR, DIMTCPWRTMO);
+			if(!find_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1))
+				ins_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1, time(NULL));
+		}
+		release_conn(conn_id);
+	}
+	return(1);
+}
+
+/* connection managment routines */
+
+static void release_conn(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id] ;
+
+	DISABLE_AST
+	if(dna_connp->busy)
+	{ 
+		tcpip_close(conn_id);
+		if(dna_connp->buffer)
+		{
+			free(dna_connp->buffer);
+			dna_connp->buffer = 0;
+			dna_connp->buffer_size = 0;
+		}
+		dna_connp->read_ast = NULL;
+		dna_connp->error_ast = NULL;
+		conn_free(conn_id);
+	}
+	ENABLE_AST
+}
+
+
+void dna_report_error_old(int conn_id, int code, char *routine_name)
+{
+	char str[128];
+	extern void tcpip_get_error(char *, int);
+	dim_print_date_time();
+	printf("%s", routine_name);
+	if(conn_id)
+	{
+		if(Net_conns[conn_id].node[0])
+			printf(" %s on node %s",
+		       Net_conns[conn_id].task, Net_conns[conn_id].node);
+/*
+		else
+			printf("\tConn %d :\n", conn_id);
+*/
+	}
+	if(code != -1)
+	{
+/*
+		printf("\t");
+		tcpip_report_error(code);
+*/
+		tcpip_get_error(str, code);
+		printf(": %s\n",str);
+	}
+	fflush(stdout);
+}
+
+void dna_report_error(int conn_id, int code, char *routine_name, int severity, int errcode)
+{
+	char str[128], msg[1024];
+	extern void tcpip_get_error();
+
+	sprintf(msg, "%s", routine_name);
+	if(conn_id)
+	{
+		if(Net_conns[conn_id].node[0])
+		{
+			sprintf(str," %s@%s",
+		       Net_conns[conn_id].task, Net_conns[conn_id].node);
+			strcat(msg, str);
+		}
+	}
+	if(code != -1)
+	{
+		tcpip_get_error(str, code);
+		strcat(msg,": ");
+		strcat(msg, str);
+	}
+	if(Dna_conns[conn_id].error_ast)
+	{
+		Dna_conns[conn_id].error_ast(conn_id, severity, errcode, msg);
+	}
+}
+
+static void save_node_task(int conn_id, DNA_NET *buffer)
+{
+	int id;
+	strcpy(Net_conns[conn_id].node, buffer->node);
+	strcpy(Net_conns[conn_id].task, buffer->task);
+	if((id = find_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1)))
+	{
+		dna_report_error( conn_id, -1, "Re-connected to", DIM_INFO, DIMDNSCNEST );
+		rel_pend_conn(id, 1);
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/dns.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dns.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dns.c	(revision 18732)
@@ -0,0 +1,1937 @@
+/*
+ * DNS (Delphi Name Server) Package implements the name server for the DIM
+ * (Delphi Information Management) system
+ *
+ * Started date      : 26-10-92
+ * Last modification : 02-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#define DNS
+#include <stdio.h>
+#include <dim.h>
+#include <dis.h>
+
+#ifndef WIN32
+#include <netdb.h>
+#endif
+/*
+#define MAX_HASH_ENTRIES 5000
+*/
+#define MAX_HASH_ENTRIES 25000
+FILE	*foutptr;
+
+typedef struct node {
+	struct node *client_next;
+	struct node *client_prev;
+	struct node *next;
+	struct node *prev;
+	int conn_id;
+	int service_id;
+	struct serv *servp;
+} NODE;
+
+typedef struct red_node {
+	struct red_node *next;
+	struct red_node *prev;
+	int conn_id;
+	int service_id;
+	struct serv *servp;
+} RED_NODE;
+
+typedef struct serv {
+	struct serv *server_next;
+	struct serv *server_prev;
+	struct serv *next;
+	struct serv *prev;
+	char serv_name[MAX_NAME];
+	char serv_def[MAX_NAME];
+	int state;
+	int conn_id;
+	int server_format;
+	int serv_id;
+	RED_NODE *node_head;
+} DNS_SERVICE;
+
+typedef struct red_serv {
+	struct red_serv *next;
+	struct red_serv *prev;
+	char serv_name[MAX_NAME];
+	char serv_def[MAX_NAME];
+	int state;
+	int conn_id;
+	int server_format;
+	int serv_id;
+	RED_NODE *node_head;
+} RED_DNS_SERVICE;
+
+static DNS_SERVICE **Service_info_list;
+static RED_DNS_SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Curr_n_services = 0;
+static int Curr_n_servers = 0;
+static int Last_conn_id;
+/*
+static int Debug = 2;
+*/
+static int Debug = 0;
+
+static int Timer_q;
+static int Server_info_id, Server_new_info_id, 
+		   Rpc_id, wake_up;
+
+static char RPC_dummy = 0;
+static char *Rpc_info = &RPC_dummy;
+static int Rpc_info_size = 0;
+
+static char DNS_accepted_domains[1024] = {0};
+static char DNS_accepted_nodes[1024] = {0};
+
+_DIM_PROTO( DNS_SERVICE *service_exists, (char *name) );
+_DIM_PROTO( void check_validity,         (int conn_id) );
+_DIM_PROTO( void send_dns_server_info,   (int conn_id, int **bufp, int *size) );
+_DIM_PROTO( void print_stats,            (void) );
+_DIM_PROTO( void set_debug_on,           (int level) );
+_DIM_PROTO( void set_debug_off,          (void) );
+_DIM_PROTO( void kill_servers,           (void) );
+_DIM_PROTO( void print_hash_table,       (void) );
+_DIM_PROTO( void get_rpc_info,       	 (int *tag, char **info, int *size) );
+_DIM_PROTO( void set_rpc_info,       	 (int *tag, char *name, int *size) );
+_DIM_PROTO( void print_hash_table,       (void) );
+_DIM_PROTO( static void release_conn,    (int conn_id) );
+
+
+static void recv_rout( int conn_id, DIC_DNS_PACKET *packet, int size, int status )
+{
+	int handle_registration();
+	int handle_client_request();
+
+	if(size){}
+	switch(status)
+	{
+	case STA_DISC:     /* connection broken */
+
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Disconnect received - conn: %d to %s@%s\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+		}
+
+		release_conn( conn_id );
+		break;
+	case STA_CONN:     /* connection received */
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Connection request received - conn: %d\n", conn_id);
+		}
+		/* handle_conn( conn_id ); */
+		break;
+	case STA_DATA:     /* normal packet */
+		switch( vtohl(packet->src_type) )
+		{
+		case SRC_DIS :
+			handle_registration(conn_id, (DIS_DNS_PACKET *)packet, 1);
+			break;
+		case SRC_DIC :
+			handle_client_request(conn_id,(DIC_DNS_PACKET *)packet);
+			break;
+		default:
+			dim_print_date_time();
+			printf(" conn: %d to %s@%s, Bad packet\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+			printf("packet->size = %d\n", vtohl(packet->size));
+			printf("packet->src_type = %d\n", vtohl(packet->src_type));
+			printf( "closing the connection.\n" );
+			fflush(stdout);
+			release_conn( conn_id );
+/*
+			panic( "recv_rout(): Bad switch(1)" );
+*/
+		}
+		break;
+	default:	
+		dim_print_date_time();
+		printf( " - DIM panic: recv_rout(): Bad switch, exiting...\n");
+		abort();
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	if(conn_id){}
+	if(errcode){}
+	dim_print_msg(reason, severity);
+/*
+	if(severity == 3)
+	{
+			printf("Exiting!\n");
+			exit(2);
+	}
+*/
+}
+
+int handle_registration( int conn_id, DIS_DNS_PACKET *packet, int tmout_flag )
+{
+	DNS_SERVICE *servp;
+	DNS_DIS_PACKET dis_packet;
+	int i, service_id;
+	int n_services;
+	char *ptr, *ptr1, *ptrt;
+	int found;
+	void do_update_did();
+	void do_inform_clients();
+	void inform_clients();
+	void service_init();
+	void service_insert();
+	void service_remove();
+#ifdef WIN32
+	extern int time();
+#endif
+#ifdef VMS
+	int format;
+#endif
+	int update_did = 0;
+	int name_too_long = 0;
+	int rem_only = 0;
+
+	Dns_conns[conn_id].validity = (int)time(NULL);
+	if( !Dns_conns[conn_id].service_head ) 
+	{
+
+		if(vtohl(packet->n_services) > 0)
+		{
+			service_id = vtohl(packet->services[0].service_id);
+			if((unsigned)service_id & 0x80000000)
+				rem_only = 1;
+		}
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " !!!! New Conn %3d : Server %s@%s (PID %d) registering %d services, to delete %d\n",
+				conn_id, packet->task_name,
+				packet->node_name, 
+				vtohl(packet->pid),
+				vtohl(packet->n_services), rem_only );
+			fflush(stdout);
+	}
+*/
+		if(rem_only)
+			return 0;
+
+		Dns_conns[conn_id].already = 0;
+		Dns_conns[conn_id].service_head =
+			(char *) malloc(sizeof(DNS_SERVICE));
+		dll_init( (DLL *) Dns_conns[conn_id].service_head );
+		Dns_conns[conn_id].n_services = 0;
+		Dns_conns[conn_id].timr_ent = NULL;
+		Curr_n_servers++;
+		Dns_conns[conn_id].src_type = SRC_DIS;
+		Dns_conns[conn_id].protocol = vtohl(packet->protocol);
+		strncpy( Dns_conns[conn_id].node_name, packet->node_name,
+			(size_t)MAX_NODE_NAME ); 
+		strncpy( Dns_conns[conn_id].task_name, packet->task_name,
+			(size_t)(MAX_TASK_NAME-4) );
+		strcpy(Dns_conns[conn_id].long_task_name, packet->task_name);
+		Dns_conns[conn_id].task_name[MAX_TASK_NAME-4-1] = '\0';
+		for(i = 0; i < 4; i++)
+			Dns_conns[conn_id].node_addr[i] =  packet->node_addr[i];
+		Dns_conns[conn_id].pid = vtohl(packet->pid);
+		Dns_conns[conn_id].port = vtohl(packet->port);
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " !!!! New Conn %3d : Server %s@%s (PID %d) registered %d services\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				vtohl(packet->n_services) );
+			fflush(stdout);
+	}
+*/
+
+
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+		if(DNS_accepted_domains[0] == 0)
+		{
+			if(!get_dns_accepted_domains(DNS_accepted_domains))
+				DNS_accepted_domains[0] = (char)0xFF;
+		}
+		if((DNS_accepted_domains[0] != (char)0xFF) && (strcmp(Dns_conns[conn_id].task_name,"DIS_DNS")))
+		{
+			ptr = DNS_accepted_domains;
+			found = 0;
+			while(*ptr)
+			{
+				ptr1 = strchr(ptr,',');
+				if(ptr1)
+				{
+					*ptr1 = '\0';
+					ptr1++;
+				}
+				else
+				{
+					ptr1 = ptr;
+					ptr1 += (int)strlen(ptr);
+				}
+				if(strstr(Dns_conns[conn_id].node_name,ptr))
+				{
+					found = 1;
+					break;
+				}
+				ptr = ptr1;
+			}
+			if(!found)
+			{
+				dis_packet.type = htovl(DNS_DIS_STOP);
+				dis_packet.size = htovl(DNS_DIS_HEADER);
+				if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+				{
+					dim_print_date_time();
+					printf(" Stop Server: Couldn't write, releasing %d\n",conn_id);
+					fflush(stdout);
+				}
+				dim_print_date_time();
+				printf(" Connection from %s refused, stopping server %s\n",
+						Dns_conns[conn_id].node_name, 
+						Dns_conns[conn_id].task_name);
+				fflush(stdout);
+				release_conn(conn_id);
+
+				return 0;
+			}
+		}
+		if(tmout_flag)
+			Dns_conns[conn_id].timr_ent = dtq_add_entry( Timer_q,
+				(int)(WATCHDOG_TMOUT_MAX * 1.3), check_validity, conn_id);
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+		{
+			dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+		}
+		Dns_conns[conn_id].old_n_services = 0;
+/*
+		Dns_conns[conn_id].n_services = 1;
+		do_update_did(conn_id);
+*/
+		update_did = 1;
+/*
+		Dns_conns[conn_id].old_n_services = 0;
+*/
+		Dns_conns[conn_id].n_services = 0;
+	} 
+	else 
+	{
+		if( (Dns_conns[conn_id].n_services == -1) &&
+		    vtohl(packet->n_services) )
+		{
+			if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+				dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+			dim_print_date_time();
+			printf( " Server %s out of error\n",
+				Dns_conns[conn_id].task_name );
+			fflush(stdout);
+			Dns_conns[conn_id].n_services = 0;
+		}
+	}
+	n_services = vtohl(packet->n_services);
+	if((int)strlen(Dns_conns[conn_id].task_name) == MAX_TASK_NAME-4-1)
+		name_too_long = 1;
+	for( i = 0; i < n_services; i++ ) 
+	{
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s (PID %d) registered %s\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				packet->services[i].service_name );
+			fflush(stdout);
+	}
+*/
+		if(n_services == 1)
+		{
+			if(!strcmp(packet->services[i].service_name, "DUMMY_UPDATE_PACKET"))
+			{
+				do_inform_clients(conn_id);
+				break;
+			}
+		}
+		if( (servp = service_exists(packet->services[i].service_name)) )
+		{
+			/* if service available on another server send kill signal */
+			if((servp->conn_id) && (servp->conn_id != conn_id))
+			{
+				dis_packet.type = htovl(DNS_DIS_KILL);
+				dis_packet.size = htovl(DNS_DIS_HEADER);
+#ifdef VMS
+				format = vtohl(packet->format);
+				if((format & MY_OS9) || (servp->state == -1))
+				{
+                Dns_conns[servp->conn_id].already = 1;
+					if( !dna_write(servp->conn_id, &dis_packet, DNS_DIS_HEADER) )
+					{
+						dim_print_date_time();
+						printf(" Couldn't write, releasing %d\n",servp->conn_id);
+						fflush(stdout);
+					}
+					dim_print_date_time();
+					printf(" Service %s already declared, killing server %s\n",
+						servp->serv_name, Dns_conns[servp->conn_id].task_name);
+					fflush(stdout);
+					release_client(servp->conn_id);
+					release_conn(servp->conn_id);
+				}
+				else
+				{
+#endif
+					if((Dns_conns[servp->conn_id].port == Dns_conns[conn_id].port) &&
+					  (!strcmp(Dns_conns[servp->conn_id].node_name, Dns_conns[conn_id].node_name)))
+					{
+						dim_print_date_time();
+printf(" Service %s already declared by conn %d - %s@%s:%d (PID %d), Redeclared by conn %d - %s@%s:%d (PID %d)(same server) - Closing both conns %d %d\n",
+							servp->serv_name, servp->conn_id, 
+							Dns_conns[servp->conn_id].task_name,
+							Dns_conns[servp->conn_id].node_name,
+							Dns_conns[servp->conn_id].port,
+							Dns_conns[servp->conn_id].pid,
+							conn_id,
+							Dns_conns[conn_id].task_name,
+							Dns_conns[conn_id].node_name,
+							Dns_conns[conn_id].port,
+							Dns_conns[conn_id].pid,
+							servp->conn_id, conn_id);
+						fflush(stdout);
+						release_conn(servp->conn_id);
+						release_conn(conn_id);
+/*
+						update_did = 0;
+*/
+						return(0);
+
+					}
+					else
+					{
+						Dns_conns[conn_id].already = 1;
+
+						if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+						{
+							dim_print_date_time();
+							printf(" Kill Server: Couldn't write, releasing %d\n",conn_id);
+							fflush(stdout);
+						}
+						dim_print_date_time();
+printf(" Service %s already declared by conn %d - %s@%s:%d (PID %d), killing server conn %d - %s@%s:%d (PID %d) \n",
+							servp->serv_name, servp->conn_id, 
+							Dns_conns[servp->conn_id].task_name,
+							Dns_conns[servp->conn_id].node_name,
+							Dns_conns[servp->conn_id].port,
+							Dns_conns[servp->conn_id].pid,
+							conn_id,
+							Dns_conns[conn_id].task_name,
+							Dns_conns[conn_id].node_name,
+							Dns_conns[conn_id].port,
+							Dns_conns[conn_id].pid);
+						fflush(stdout);
+
+						release_conn(conn_id);
+
+						return(0);
+					}
+#ifdef VMS
+				}
+#endif
+			}
+			else if( servp->state != -1 ) 
+			{
+				if( !dll_empty((DLL *) servp->node_head)) 
+				{
+					/*there are interested clients waiting*/
+					strncpy( servp->serv_def,
+						packet->services[i].service_def,(size_t)MAX_NAME );
+					servp->conn_id = conn_id;
+					servp->state = 1;
+					servp->server_format = vtohl(packet->format);
+					servp->serv_id = vtohl(packet->services[i].service_id);
+					dll_insert_queue((DLL *)
+						Dns_conns[conn_id].service_head,
+						(DLL *) servp);
+					Dns_conns[conn_id].n_services++;
+
+/*
+					if(n_services == 1)
+*/
+					if(n_services < MAX_REGISTRATION_UNIT)
+					{
+						inform_clients(servp);
+					}
+					continue;
+				} 
+				else 
+				{
+					/* test if Service is to be removed */
+					service_id = vtohl(packet->services[i].service_id);
+					if((unsigned)service_id & 0x80000000)
+					{
+						dll_remove((DLL *) servp);
+						service_remove(&(servp->next));
+						Curr_n_services--;
+						free(servp);
+						Dns_conns[conn_id].n_services--;
+						if( dll_empty((DLL *) Dns_conns[conn_id].service_head))
+						{ 
+						    if( Debug )
+							{
+								dim_print_date_time();
+								printf( " Conn %3d : Server %s@%s unregistered All services, releasing it.\n",
+									conn_id, Dns_conns[conn_id].task_name,
+									Dns_conns[conn_id].node_name );
+								fflush(stdout);
+							}
+							release_conn(conn_id);
+							return(0);
+						}
+						continue;
+                    }
+				}
+			} 
+			else 
+			{
+				servp->state = 1;
+				Dns_conns[conn_id].n_services++;
+/*
+				if(n_services == 1)
+*/
+				if(n_services < MAX_REGISTRATION_UNIT)
+				{
+					if( !dll_empty((DLL *) servp->node_head) )
+					{
+						inform_clients( servp );
+					}
+				}
+				continue;
+			}
+
+		}
+		if(!(servp = service_exists(packet->services[i].service_name)))
+		{
+			servp = (DNS_SERVICE *)malloc(sizeof(DNS_SERVICE));
+			if(name_too_long)
+			{
+				if(strstr(packet->services[i].service_name,"/CLIENT_LIST"))
+				{
+					strncpy(Dns_conns[conn_id].long_task_name, packet->services[i].service_name,
+						(size_t)MAX_NAME);
+					ptrt = strstr(Dns_conns[conn_id].long_task_name,"/CLIENT_LIST");
+					*ptrt = '\0';
+				}
+			}
+			strncpy( servp->serv_name,
+				packet->services[i].service_name,
+				(size_t)MAX_NAME );
+			strncpy( servp->serv_def,
+				packet->services[i].service_def,
+				(size_t)MAX_NAME );
+			servp->state = 1;
+			servp->conn_id = conn_id;
+			servp->server_format = vtohl(packet->format);
+			servp->serv_id = vtohl(packet->services[i].service_id);
+			dll_insert_queue( (DLL *)
+					  Dns_conns[conn_id].service_head, 
+					  (DLL *) servp );
+			Dns_conns[conn_id].n_services++;
+			service_insert( &(servp->next) );
+			servp->node_head = (RED_NODE *) malloc(sizeof(NODE));
+			dll_init( (DLL *) servp->node_head );
+			Curr_n_services++;
+		} 
+	}
+	if(update_did)
+		do_update_did(conn_id);
+    if( Debug )
+	{
+		if(vtohl(packet->n_services) != 0)
+		{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s (PID %d) registered %d services\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				vtohl(packet->n_services) );
+			fflush(stdout);
+		}
+	}
+
+	return(1);
+}	
+
+void update_did()
+{
+	int i;
+	void do_update_did();
+
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		if(Dns_conns[i].src_type == SRC_DIS)
+		{
+			do_update_did(i);
+		}
+	}
+}
+
+void do_update_did(int conn_id)
+{
+	int n_services, old_n_services;
+
+	n_services = Dns_conns[conn_id].n_services;
+/*
+	if(Dns_conns[conn_id].n_services)
+	{
+*/
+	old_n_services = Dns_conns[conn_id].old_n_services;
+	if(old_n_services != n_services)
+	{
+		Last_conn_id = conn_id;
+		if((old_n_services <= 0) || (n_services == 0) || (n_services == -1))
+			dis_update_service(Server_new_info_id);
+		dis_update_service(Server_info_id);
+		Dns_conns[conn_id].old_n_services = Dns_conns[conn_id].n_services;
+	}
+/*
+	}
+*/
+}
+
+void check_validity(int conn_id)
+{
+	int time_diff;
+	DNS_DIS_PACKET dis_packet;
+	void set_in_error();
+
+	if(Dns_conns[conn_id].validity < 0)
+	{
+		/* timeout reached kill all services and connection */
+		if(Dns_conns[conn_id].n_services != -1)
+		{
+			dim_print_date_time();
+			printf(" Server %s (%s@%s) has been set in error\n",
+				Dns_conns[conn_id].task_name, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			set_in_error(conn_id);
+			return;
+		}
+/*
+		Dns_conns[conn_id].validity = -Dns_conns[conn_id].validity;
+*/
+	}
+	time_diff = (int)time(NULL) - Dns_conns[conn_id].validity;
+	if(time_diff > (int)(WATCHDOG_TMOUT_MAX*1.2))
+	{
+		/* send register signal */
+		dis_packet.type = htovl(DNS_DIS_REGISTER);
+		dis_packet.size = htovl(DNS_DIS_HEADER);
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Server %s@%s Registration Requested\n",
+				conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+		if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Server Validity: Couldn't write, releasing Conn %3d : Server %s@%s\n",conn_id,
+				Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			release_conn(conn_id);
+		}
+		else
+			Dns_conns[conn_id].validity = -Dns_conns[conn_id].validity;
+	}
+}		
+
+
+int handle_client_request( int conn_id, DIC_DNS_PACKET *packet )
+{
+	DNS_SERVICE *servp;
+	NODE *nodep;
+	RED_NODE *red_nodep; 
+	int i, service_id;
+	DNS_DIC_PACKET dic_packet;
+	SERVICE_REG *serv_regp; 
+	void service_insert();
+	void service_remove();
+	void tcpip_get_addresses();
+	char *ptr, *ptr1;
+	int found;
+
+	serv_regp = (SERVICE_REG *)(&(packet->service));
+	if(Debug)
+	{
+		dim_print_date_time();
+		printf(" Conn %3d : Client %s@%s requested %s\n",
+			conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node,
+			serv_regp->service_name);
+		fflush(stdout);
+	}
+
+	if(DNS_accepted_nodes[0] == 0)
+	{
+		if(!get_dns_accepted_nodes(DNS_accepted_nodes))
+			DNS_accepted_nodes[0] = (char)0xFF;
+	}
+	if(DNS_accepted_nodes[0] != (char)0xFF)
+	{
+		ptr = DNS_accepted_nodes;
+		found = 0;
+		while(*ptr)
+		{
+			ptr1 = strchr(ptr,',');
+			if(ptr1)
+			{
+				*ptr1 = '\0';
+				ptr1++;
+			}
+			else
+			{
+				ptr1 = ptr;
+				ptr1 += (int)strlen(ptr);
+			}
+			if(strstr(Net_conns[conn_id].node,ptr))
+			{
+				found = 1;
+				break;
+			}
+			ptr = ptr1;
+		}
+		if(!found)
+		{
+			dic_packet.service_id = serv_regp->service_id;
+			dic_packet.node_name[0] = (char)0xFF; 
+			dic_packet.task_name[0] = 0;
+			dic_packet.node_addr[0] = 0;
+			dic_packet.pid = 0;
+			dic_packet.size = htovl(DNS_DIC_HEADER);
+			dim_print_date_time();
+			printf(" Connection from %s refused, stopping client pid=%s\n",
+					Net_conns[conn_id].node,
+					Net_conns[conn_id].task);
+			fflush(stdout);
+			if( !dna_write_nowait(conn_id, &dic_packet, DNS_DIC_HEADER) )
+			{
+				dim_print_date_time();
+				printf(" Stop Client: Couldn't write, releasing Conn %3d : Client %s@%s\n",conn_id,
+					Net_conns[conn_id].task,
+					Net_conns[conn_id].node);
+				fflush(stdout);
+			}
+			release_conn(conn_id);
+
+			return 0;
+		}
+	}
+	
+	service_id = vtohl(serv_regp->service_id);
+	if( service_id == -1 )  /* remove service */
+	{
+		if(Debug)
+		{
+			printf("\tRemoving Request\n");
+			fflush(stdout);
+		}
+		if( (servp = service_exists(serv_regp->service_name))  ) 
+		{
+			red_nodep = servp->node_head;
+			while( (red_nodep =
+				(RED_NODE *) dll_get_next(
+						(DLL *) servp->node_head,
+						(DLL *) red_nodep)) )
+			{
+				if( red_nodep->conn_id == conn_id ) 
+				{
+					dll_remove((DLL *) red_nodep);
+					ptr = (char *)red_nodep - (2 * sizeof(void *));
+					nodep = (NODE *)ptr;
+					dll_remove((DLL *) nodep);
+					red_nodep = red_nodep->prev;
+					free(nodep);
+					break;
+				}
+			}
+			if(( dll_empty((DLL *) servp->node_head) ) && (servp->state == 0))
+			{
+				if(Debug)
+				{
+					printf("\tand Removing Service\n");
+					fflush(stdout);
+				}
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				free(servp);
+			}
+		}
+		return(0);
+	}
+	if( (unsigned)service_id & 0x80000000 )  /* remove service */
+	{
+		service_id &= 0x7fffffff;
+		if(Debug)
+		{
+			printf("\tRemoving Request\n");
+			fflush(stdout);
+		}
+		if( (servp = service_exists(serv_regp->service_name)) ) 
+		{
+			red_nodep = servp->node_head;
+			while( (red_nodep =
+				(RED_NODE *) dll_get_next(
+						(DLL *) servp->node_head,
+						(DLL *) red_nodep)) )
+			{
+				if(( red_nodep->conn_id == conn_id ) &&
+				   ( red_nodep->service_id == service_id ) )
+				{
+					dll_remove((DLL *) red_nodep);
+					ptr = (char *)red_nodep - (2 * sizeof(void *));
+					nodep = (NODE *)ptr;
+					dll_remove((DLL *) nodep);
+					red_nodep = red_nodep->prev;
+					free(nodep);
+					break;
+				}
+			}
+			if(( dll_empty((DLL *) servp->node_head) ) && (servp->state == 0))
+			{
+				if(Debug)
+				{
+					printf("\tand Removing Service\n");
+					fflush(stdout);
+				}
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				free(servp);
+			}
+		}
+		return(0);
+	}
+	/* Is already in v.format */
+	dic_packet.service_id = serv_regp->service_id;
+	dic_packet.node_name[0] = 0; 
+	dic_packet.task_name[0] = 0;
+	dic_packet.node_addr[0] = 0;
+	dic_packet.pid = 0;
+	dic_packet.size = htovl(DNS_DIC_HEADER);
+	if( Dns_conns[conn_id].src_type == SRC_NONE )
+		dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+	if( !(servp = service_exists(serv_regp->service_name)) ) 
+	{
+		if(Debug)
+		{
+			printf("\tService does not exist, queueing request\n");
+			fflush(stdout);
+		}
+		if( !Dns_conns[conn_id].node_head ) 
+		{
+			Dns_conns[conn_id].src_type = SRC_DIC;
+			Dns_conns[conn_id].node_head =
+					malloc(sizeof(NODE));
+			dll_init( (DLL *) Dns_conns[conn_id].node_head );
+		}
+		servp = (DNS_SERVICE *) malloc(sizeof(DNS_SERVICE));
+		strncpy( servp->serv_name, serv_regp->service_name, (size_t)MAX_NAME );
+		servp->serv_def[0] = '\0';
+		servp->state = 0;
+		servp->conn_id = 0;
+		service_insert(&(servp->next));
+		Curr_n_services++;
+		servp->node_head = (RED_NODE *)malloc(sizeof(NODE));
+		dll_init( (DLL *) servp->node_head );
+		nodep = (NODE *)malloc(sizeof(NODE));
+		nodep->conn_id = conn_id;
+		nodep->service_id = service_id;
+		nodep->servp = servp;
+		dll_insert_queue((DLL *) Dns_conns[conn_id].node_head,
+				 (DLL *) nodep);
+		dll_insert_queue((DLL *) servp->node_head,
+				 (DLL *) &(nodep->next));
+	} 
+	else 
+	{
+		if( servp->state == 1 ) 
+		{
+#ifdef VMS
+			if(servp->server_format & MY_OS9)
+			{
+				dna_test_write(servp->conn_id);
+			}
+#endif
+			Dns_conns[conn_id].src_type = SRC_DIC;
+			strcpy( dic_packet.node_name,
+				Dns_conns[servp->conn_id].node_name );
+			strcpy( dic_packet.task_name,
+				Dns_conns[servp->conn_id].task_name );
+			for(i = 0; i < 4; i++)
+				dic_packet.node_addr[i] =
+					Dns_conns[servp->conn_id].node_addr[i];
+			dic_packet.port = htovl(Dns_conns[servp->conn_id].port);
+			dic_packet.pid = htovl(Dns_conns[servp->conn_id].pid);
+			dic_packet.protocol = htovl(Dns_conns[servp->conn_id].protocol);
+			dic_packet.format = htovl(servp->server_format);
+			strcpy( dic_packet.service_def, servp->serv_def );
+			if(Debug)
+			{
+				printf("\tService exists in %s@%s, port = %d\n",
+					dic_packet.task_name, dic_packet.node_name, 
+					dic_packet.port);
+				fflush(stdout);
+			}
+		} 
+		else 
+		{
+			if(Debug)
+			{
+				if(servp->state == -1)
+				{
+					printf("\tService exists in BAD state, queueing request\n");
+					fflush(stdout);
+				}
+				else
+				{
+					printf("\tService does not exist (other client(s) waiting), queueing request\n");
+					fflush(stdout);
+				}
+			}
+			if(!(NODE *)Dns_conns[conn_id].node_head ) 
+			{
+				Dns_conns[conn_id].src_type = SRC_DIC;
+				Dns_conns[conn_id].node_head = 
+					(char *) malloc(sizeof(NODE));
+				dll_init((DLL *)Dns_conns[conn_id].node_head);
+			}
+			nodep = (NODE *)malloc(sizeof(NODE));
+			nodep->conn_id = conn_id;
+			nodep->service_id = service_id;
+			nodep->servp = servp;
+			dll_insert_queue((DLL *) Dns_conns[conn_id].node_head,
+					 (DLL *) nodep);
+			dll_insert_queue((DLL *) servp->node_head,
+					 (DLL *) &(nodep->next));
+		}
+	}
+/* Should it be dna_write_nowait? 16/9/2008 */
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+	if( !dna_write_nowait(conn_id, &dic_packet, DNS_DIC_HEADER) )
+	{
+		dim_print_date_time();
+		printf(" Client Request: Couldn't write, releasing Conn %3d : Client %s@%s\n",conn_id,
+					Net_conns[conn_id].task,
+					Net_conns[conn_id].node);
+		fflush(stdout);
+		release_conn(conn_id);
+	}
+
+	return(1);
+}
+
+void do_inform_clients(int conn_id)
+{
+	DNS_SERVICE *servp;
+	int n_informed = 0;
+	static DNS_SERVICE *prev_servp = (DNS_SERVICE *)0;
+	void inform_clients();
+
+	DISABLE_AST
+	if(!Dns_conns[conn_id].service_head)
+	{
+		prev_servp = (DNS_SERVICE *)0;
+		ENABLE_AST
+		return;
+	}
+	if(prev_servp)
+		servp = prev_servp;
+	else
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+	while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+	{
+		if( servp->state != -1 ) 
+		{
+			if( !dll_empty((DLL *) servp->node_head)) 
+			{
+				inform_clients(servp);
+				n_informed++;
+				if(n_informed == 1000)
+				{
+					dtq_start_timer(0, do_inform_clients, conn_id);
+					ENABLE_AST
+					return;
+				}
+			}
+		}
+	}
+	prev_servp = (DNS_SERVICE *)0;
+	ENABLE_AST
+}
+
+
+void inform_clients(DNS_SERVICE *servp)
+{
+	RED_NODE *nodep, *prevp; 
+	NODE *full_nodep; 
+	DNS_DIC_PACKET packet;
+	char *ptr;
+	int i, to_release = 0;
+
+	nodep = servp->node_head;
+	prevp = nodep;
+	while( (nodep = (RED_NODE *) dll_get_next((DLL *) servp->node_head,
+						 (DLL *) prevp)) )
+	{
+		packet.service_id = htovl(nodep->service_id);
+		strcpy(packet.node_name, Dns_conns[servp->conn_id].node_name);
+		strcpy(packet.task_name, Dns_conns[servp->conn_id].task_name);
+		for(i = 0; i < 4; i++)
+			packet.node_addr[i] = Dns_conns[servp->conn_id].node_addr[i];
+		packet.port = htovl(Dns_conns[servp->conn_id].port);
+		packet.pid = htovl(Dns_conns[servp->conn_id].pid);
+		packet.protocol = htovl(Dns_conns[servp->conn_id].protocol);
+		packet.size = htovl(DNS_DIC_HEADER);
+		packet.format = htovl(servp->server_format);
+		strcpy( packet.service_def, servp->serv_def );
+/* Should it be dna_write_nowait? 16/9/2008 */
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+/*
+		dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER);
+*/
+		if( !dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Inform Client: Couldn't write, releasing Conn %3d : Client %s@%s\n",nodep->conn_id,
+					Net_conns[nodep->conn_id].task,
+					Net_conns[nodep->conn_id].node);
+			fflush(stdout);
+			to_release = nodep->conn_id;
+/*
+release_conn(nodep->conn_id);
+*/
+		}
+/*
+		if(dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER))
+		{
+*/
+			dll_remove( (DLL *) nodep );
+			ptr = (char *)nodep - (2 * sizeof(void *));
+			full_nodep = (NODE *)ptr;
+			dll_remove( (DLL *) full_nodep );
+			nodep = nodep->prev;
+			free( full_nodep );
+			prevp = nodep;
+/*
+		}
+*/
+	}
+	if(to_release)
+		release_conn(to_release);
+}
+
+#ifdef VMS
+static release_client(int conn_id)
+{
+char *ptr_task;
+char *ptr_node;
+int i;
+
+	ptr_task = Net_conns[conn_id].task;
+	ptr_node = Net_conns[conn_id].node;
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if( (!strcmp(Net_conns[i].task,ptr_task)) &&
+		    (!strcmp(Net_conns[i].node,ptr_node)) )
+		{
+			if(i != conn_id)
+			{
+				if( Dns_conns[i].src_type == SRC_DIC ) 
+				{
+					if(Debug)
+					{
+						dim_print_date_time();
+						printf(" Releasing client on conn %d - %s@%s\n",
+							i, Net_conns[i].task, Net_conns[i].node);
+						fflush(stdout);
+					}
+					release_conn(i);
+				}
+			}
+		}
+	}
+}
+#endif
+
+static void release_conn(int conn_id)
+{
+	DNS_SERVICE *servp, *old_servp;
+	NODE *nodep, *old_nodep;
+	void service_remove();
+
+	servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+	nodep = (NODE *)Dns_conns[conn_id].node_head;
+	if(( Dns_conns[conn_id].src_type == SRC_DIS ) || (servp))
+	{
+		if( Debug )
+		{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s died\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name);
+			fflush(stdout);
+		}
+		else
+		{
+			if(Dns_conns[conn_id].n_services == -1)
+			{
+				dim_print_date_time();
+				printf( " Conn %3d : Server %s@%s died\n",
+					conn_id, Dns_conns[conn_id].task_name,
+					Dns_conns[conn_id].node_name);
+				fflush(stdout);
+			}
+		}
+		Curr_n_servers--;
+		if( Dns_conns[conn_id].timr_ent ) 
+		{
+			dtq_rem_entry( Timer_q, Dns_conns[conn_id].timr_ent );
+			Dns_conns[conn_id].timr_ent = NULL;
+		}
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+		while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+		{
+			dll_remove((DLL *) servp);
+			if(dll_empty((DLL *) servp->node_head)) 
+			{
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				old_servp = servp;
+				servp = servp->server_prev;
+				free(old_servp);
+			} 
+			else 
+			{
+				servp->state = 0;
+				servp->conn_id = 0;
+				servp = servp->server_prev;
+			}
+		}
+		if(Dns_conns[conn_id].n_services)
+		{
+			Dns_conns[conn_id].n_services = 0;
+			
+			do_update_did(conn_id);
+/*
+			Last_conn_id = conn_id;
+			dis_update_service(Server_new_info_id);
+		    dis_update_service(Server_info_id);
+*/			
+		}
+		free((DNS_SERVICE *)Dns_conns[conn_id].service_head);
+		Dns_conns[conn_id].service_head = 0;
+		Dns_conns[conn_id].src_type = SRC_NONE;
+		dna_close(conn_id);
+	}
+	else if((Dns_conns[conn_id].src_type == SRC_DIC) || (nodep))
+	{
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Client %s@%s died\n",
+				conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+		if( (nodep = (NODE *)Dns_conns[conn_id].node_head) ) 
+		{
+			while( (nodep = (NODE *) dll_get_next(
+					(DLL *) Dns_conns[conn_id].node_head,
+					(DLL *) nodep)) )
+			{
+				servp = nodep->servp;
+				dll_remove( (DLL *) nodep );
+				dll_remove( (DLL *) &(nodep->next) );
+				old_nodep = nodep;
+				nodep = nodep->client_prev;
+				free(old_nodep);
+				if( (dll_empty((DLL *) servp->node_head)) &&
+				    (!servp->conn_id) )
+				{
+					service_remove(&(servp->next));
+					Curr_n_services--;
+					free( servp );
+				}
+			}
+			free(Dns_conns[conn_id].node_head);
+			Dns_conns[conn_id].node_head = 0;
+		}
+		Dns_conns[conn_id].src_type = SRC_NONE;
+		dna_close(conn_id);
+	} 
+	else 
+	{
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Undefined Type %s@%s died\n",
+				conn_id, Net_conns[conn_id].task,
+				Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+		dna_close(conn_id);
+	}
+}
+
+
+void set_in_error(int conn_id)
+{
+	DNS_SERVICE *servp;
+
+	if(Dns_conns[conn_id].src_type == SRC_DIS)
+	{
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+			dna_rem_test_write(conn_id);
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+		while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+			servp->state = -1;
+		Dns_conns[conn_id].n_services = -1;
+	}
+}
+
+void get_dns_server_info(int *tag, int **bufp, int *size, int *first_time)
+{
+	if(tag){}
+	if(*first_time)
+	{
+
+#ifdef VMS
+		 sys$wake(0, 0);
+#else
+		wake_up = TRUE;
+#ifdef WIN32
+		wake_up();
+#endif
+#endif
+		*size = 0;
+	}
+	else
+	{
+		send_dns_server_info(Last_conn_id, bufp, size);
+	}
+}
+
+
+void send_dns_server_info(int conn_id, int **bufp, int *size)
+{
+	static int curr_allocated_size = 0;
+	static DNS_DID *dns_info_buffer;
+	DNS_SERVICE *servp;
+	DNS_SERVER_INFO *dns_server_info;
+	DNS_SERVICE_INFO *dns_service_info;
+	DNS_CONNECTION *connp;
+	int max_size;
+	int n_services;
+
+	DISABLE_AST
+	connp = &Dns_conns[conn_id];
+	if(connp->src_type != SRC_DIS)
+	{
+		ENABLE_AST
+		return;
+	}
+	n_services = connp->n_services;
+	if(n_services == -1)
+		n_services = 0;
+	max_size = (int)sizeof(DNS_SERVER_INFO) + 
+				n_services * (int)sizeof(DNS_SERVICE_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = (DNS_DID *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(dns_info_buffer);
+		dns_info_buffer = (DNS_DID *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_server_info = &dns_info_buffer->server;
+	dns_service_info = dns_info_buffer->services;
+	strncpy(dns_server_info->task, connp->task_name, (size_t)(MAX_TASK_NAME-4));
+	strncpy(dns_server_info->node, connp->node_name, (size_t)MAX_NODE_NAME);
+	dns_server_info->pid = htovl(connp->pid);
+	dns_server_info->n_services = htovl(connp->n_services);
+	servp = (DNS_SERVICE *)connp->service_head;
+	while( (servp = (DNS_SERVICE *) dll_get_next((DLL *) connp->service_head,
+						    (DLL *) servp)) )
+	{
+		strncpy(dns_service_info->name, servp->serv_name, (size_t)MAX_NAME); 
+		dns_service_info->status = htovl(1);
+		if(servp->serv_id & 0x10000000)
+			dns_service_info->type = htovl(1);
+		else
+			dns_service_info->type = htovl(0);
+		dns_service_info++;
+	}
+	*bufp = (int *)dns_info_buffer;
+	*size = max_size;
+	ENABLE_AST
+}
+
+void get_new_dns_server_info(int *tag, int **bufp, int *size, int *first_time)
+{
+	static int curr_allocated_size = 0;
+	static char *info_buffer;
+	static int *pid_buffer, pid_size;
+	int pid_index = 0;
+	DNS_CONNECTION *connp;
+	int i, max_size, max_pid_size/*, j, n*/;
+	int n_server = 0;
+	char /*aux[MAX_NAME], *ptr, */ server[MAX_NAME], *info_buffer_ptr;
+/*
+	DNS_SERVICE *servp;
+	int find_services();
+*/
+
+	DISABLE_AST
+	if(tag){}
+ 	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if( Dns_conns[i].src_type == SRC_DIS )
+		{
+			n_server++;
+		}
+	}
+	max_size = ((int)sizeof(DNS_SERVER_INFO) + MAX_TASK_NAME) * n_server;
+	max_pid_size = (int)sizeof(int) * n_server;
+	if(!curr_allocated_size)
+	{
+		info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+		pid_buffer = (int *)malloc((size_t)max_pid_size);
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(info_buffer);
+		info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+		free(pid_buffer);
+		pid_buffer = (int *)malloc((size_t)max_pid_size);
+	}
+	info_buffer[0] = '\0';
+	pid_buffer[0] = 0;
+
+	info_buffer_ptr = info_buffer;
+	if(*first_time)
+	{
+	 	for( i = 0; i< Curr_N_Conns; i++ )
+		{
+			if( Dns_conns[i].src_type == SRC_DIS )
+			{
+				connp = &Dns_conns[i];
+/*
+				if((int)strlen(connp->task_name) == MAX_TASK_NAME-4-1)
+				{
+					strcpy(aux,connp->task_name);
+					strcat(aux,"--CLIENT_LIST");
+					n = find_services(aux);
+					for(j = 0; j < n; j++)
+					{
+						servp = Service_info_list[j];
+						if(i == servp->conn_id)
+						{
+							strcpy(aux,servp->serv_name);
+							ptr = strstr(aux,"/CLIENT_LIST");
+							if(ptr)
+								*ptr = '\0';
+							break;
+						}
+					}
+					free(Service_info_list);
+					strcpy(server, aux);
+				}
+				else
+				{
+*/
+					strcpy(server, connp->long_task_name);
+/*
+				}
+*/
+				strcat(server,"@");
+				strcat(server, connp->node_name);
+				strcat(server,"|");
+				strcpy(info_buffer_ptr, server);
+				info_buffer_ptr += (int)strlen(server);
+				pid_buffer[pid_index] = connp->pid;
+				pid_index++;
+			}
+		}
+	}
+	else
+	{
+		connp = &Dns_conns[Last_conn_id];
+		if(connp->n_services > 0)
+			strcat(info_buffer, "+");
+		else if(connp->n_services == -1)
+			strcat(info_buffer, "!");
+		else
+			strcat(info_buffer, "-");
+		strcat(info_buffer, connp->long_task_name);
+		strcat(info_buffer,"@");
+		strcat(info_buffer, connp->node_name);
+		strcat(info_buffer,"|");
+		pid_buffer[pid_index] = connp->pid;
+		pid_index++;
+	}
+	info_buffer[(int)strlen(info_buffer) - 1] = '\0';
+	info_buffer_ptr = &info_buffer[(int)strlen(info_buffer)+1];
+	pid_size = 0;
+	for(i = 0; i < pid_index; i++)
+	{
+		if(i != (pid_index -1))
+			sprintf(server, "%d|",pid_buffer[i]);
+		else
+			sprintf(server, "%d",pid_buffer[i]);
+		strcpy(info_buffer_ptr, server);
+		info_buffer_ptr += (int)strlen(server);
+		pid_size += (int)strlen(server);
+	}
+	*bufp = (int *)info_buffer;
+	*size = (int)strlen(info_buffer)+1+pid_size+1;
+	ENABLE_AST
+}
+
+int main(int argc, char **argv)
+{
+	int i, protocol, dns_port;
+	int *bufp;
+	int size;
+	int conn_id, id;
+	DIS_DNS_PACKET *dis_dns_packet;
+	char node[MAX_NAME];
+	void service_init();
+	
+	if(argc > 1)
+	{
+		if(!strcmp(argv[1],"-d"))
+			set_debug_on();
+		else
+		{
+			printf("Parameters: -d	Debug On\n");
+			exit(0);
+		}
+	}
+	dim_set_write_timeout(10);
+	dim_set_listen_backlog(1024);
+	dim_set_keepalive_timeout(90);
+	dim_set_write_buffer_size(32768);
+	dim_set_read_buffer_size(32768);
+	dim_init();
+	conn_arr_create( SRC_DNS );
+	service_init();
+	Timer_q = dtq_create();
+	get_node_name(node);
+	dim_print_date_time();
+	printf(" DNS version %d starting up on %s\n",DIM_VERSION_NUMBER, node); 
+	fflush(stdout);
+
+	Server_new_info_id =(int) dis_add_service( "DIS_DNS/SERVER_LIST", "C", 0, 0, 
+						get_new_dns_server_info, 0 );
+	Server_info_id = (int)dis_add_service( "DIS_DNS/SERVER_INFO", 0, 0, 0, 
+						get_dns_server_info, 0 );
+	dis_add_cmnd( "DIS_DNS/PRINT_STATS", 0, print_stats, 0 );
+	dis_add_cmnd( "DIS_DNS/DEBUG_ON", 0, set_debug_on, 0 );
+	dis_add_cmnd( "DIS_DNS/DEBUG_OFF", 0, set_debug_off, 0 );
+	dis_add_cmnd( "DIS_DNS/KILL_SERVERS", "I", kill_servers, 0 );
+	dis_add_cmnd( "DIS_DNS/PRINT_HASH_TABLE", 0, print_hash_table, 0 );
+	dis_add_cmnd( "DIS_DNS/SERVICE_INFO/RpcIn", "C", set_rpc_info, 0 );
+	Rpc_id = (int)dis_add_service( "DIS_DNS/SERVICE_INFO/RpcOut", "C", 0, 0, 
+						get_rpc_info, 0 );
+	dns_port = get_dns_port_number();
+	if( !dna_open_server(DNS_TASK, recv_rout, &protocol, &dns_port, error_handler) )
+		return(0);
+
+	id = dis_start_serving("DIS_DNS");
+	dis_dns_packet = (DIS_DNS_PACKET *) id_get_ptr(id, SRC_DIS);
+	id_free(id, SRC_DIS);
+	conn_id = conn_get();
+	handle_registration(conn_id, dis_dns_packet, 0);
+	dtq_add_entry(Timer_q, 5, update_did, 0xded0000);
+	while(1)
+	{
+#ifdef VMS
+		sys$hiber(); 
+#else
+		wake_up = FALSE;
+		while( !wake_up )
+        {
+			dim_wait();
+        }
+#endif
+ 		for( i = 0; i< Curr_N_Conns; i++ )
+		{
+			if( Dns_conns[i].src_type == SRC_DIS )
+			{
+				send_dns_server_info( i, &bufp, &size );
+				dis_send_service( Server_info_id, bufp, size );
+			}
+		}
+	}
+	return(1);
+}
+
+
+void print_stats()
+{
+	int i;
+	int n_conns = 0;
+	int n_services = 0;
+	int n_servers = 0;
+	int n_clients = 0;
+
+	dim_print_date_time();
+	printf(" Connection Statistics :\n");
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		switch(Dns_conns[i].src_type)
+		{
+		case SRC_DIS :
+			printf("%d - Server %s@%s (PID %d) %d services\n",
+				i, Dns_conns[i].task_name,
+				Dns_conns[i].node_name,
+				Dns_conns[i].pid, Dns_conns[i].n_services);
+			fflush(stdout);
+			n_services +=  Dns_conns[i].n_services;
+			n_servers++;
+			n_conns++;
+			break;
+		case SRC_DIC :
+			printf("%d - Client %s@%s\n",
+				i, Net_conns[i].task, Net_conns[i].node); 
+			fflush(stdout);
+			n_conns++;
+			n_clients++;
+			break;
+		default :
+			if(Dna_conns[i].busy)
+			{
+				if(Net_conns[i].task[0] && Net_conns[i].node[0])
+					printf("%d - Undefined %s@%s\n",
+						i, Net_conns[i].task,
+						Net_conns[i].node);
+				else 
+					printf("%d - Undefined\n", i);
+				fflush(stdout);
+				n_conns++;
+			}
+			else
+			{
+				printf("%d - Empty\n", i);
+				fflush(stdout);
+			}
+		}
+	}
+	printf("Number of Connections = %d : %d servers, %d clients\n", n_conns,
+		n_servers, n_clients);
+	printf("Number of Services = %d\n", n_services);
+	fflush(stdout);
+}
+
+
+void set_debug_on()
+{
+	Debug = 1;
+}
+
+
+void set_debug_off()
+{
+	Debug = 0;
+}
+
+
+void kill_servers(int *tag, int *code, int *size)
+{
+	int i;
+	DNS_DIS_PACKET dis_packet;
+	int soft_code = 0, soft_size = 0;
+	int type;
+	
+	if(tag){}
+	if(size)
+	{
+		soft_size = *size;
+		if(code)
+		{
+			soft_code = *code;
+		}
+	}
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		if(Dns_conns[i].src_type == SRC_DIS)
+		{
+			if(!strcmp(Dns_conns[i].task_name,"DIS_DNS"))
+				continue;
+			fflush(stdout);
+			type = DNS_DIS_EXIT;
+			if(soft_size)
+			{
+				type = DNS_DIS_SOFT_EXIT;
+				type |= (soft_code << (int)16) & (int)0xFFFF0000;
+				dim_print_date_time();
+				printf(" Killing server %s@%s with exit code %d\n",
+					Dns_conns[i].task_name, Dns_conns[i].node_name, soft_code);
+			}
+			else
+			{
+				dim_print_date_time();
+				printf(" Killing server %s@%s\n",
+					Dns_conns[i].task_name, Dns_conns[i].node_name);
+			}
+			dis_packet.type = htovl(type);
+			dis_packet.size = htovl(DNS_DIS_HEADER);
+			if( !dna_write_nowait(i, &dis_packet, DNS_DIS_HEADER) )
+			{
+				dim_print_date_time();
+				printf(" Kill Server: Couldn't write, releasing %d\n",i);
+				fflush(stdout);
+				release_conn(i);
+			}
+		}
+	}
+}
+
+
+void service_init()
+{
+  int i;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) {
+		Service_hash_table[i] = (RED_DNS_SERVICE *) malloc(sizeof(RED_DNS_SERVICE));
+		dll_init((DLL *) Service_hash_table[i]);
+	}
+}
+
+
+void service_insert(RED_DNS_SERVICE *servp)
+{
+	int index;
+
+	index = HashFunction(servp->serv_name, MAX_HASH_ENTRIES);
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+}
+
+
+void service_remove(RED_DNS_SERVICE *servp)
+{
+	if( servp->node_head )
+		free( servp->node_head );
+	dll_remove( (DLL *) servp );
+}
+
+
+DNS_SERVICE *service_exists(char *name)
+{
+	int index;
+	RED_DNS_SERVICE *servp;
+	char *ptr;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if( (servp = (RED_DNS_SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, (int)strlen(name)+1)) )
+	{
+		ptr = (char *)servp - (2 * sizeof(void *));
+		return((DNS_SERVICE *)ptr);
+	}
+
+	return((DNS_SERVICE *)0);
+}			
+
+void print_hash_table()
+{
+	int i;
+	RED_DNS_SERVICE *servp;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+#ifdef VMS
+	if( ( foutptr = fopen( "scratch$week:[cp_operator]dim_dns.log", "w" ) 
+		) == (FILE *)0 )
+	{
+		printf("Cannot open: scratch$week:[cp_operator]dim_dns.log for writing\n");
+		fflush(stdout);
+		return;
+	}	
+#endif								 
+	
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+#ifdef VMS
+		fprintf(foutptr,"HASH[%d] : \n",i);
+#endif								 
+		servp = Service_hash_table[i];
+		while( (servp = (RED_DNS_SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+#ifdef VMS
+			fprintf(foutptr,"%s\n",servp->serv_name);
+#endif								 
+			n_entries++;
+		}
+#ifdef VMS
+		fprintf(foutptr,"\n\n");
+#endif								 
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);  
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+#ifdef VMS
+	fclose(foutptr);
+#endif								 
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+int find_services(char *wild_name)
+{
+
+	int i;
+	RED_DNS_SERVICE *servp;
+	DNS_SERVICE *servp1;
+	char tmp[MAX_NAME], *ptr, *ptr1, *dptr, *dptr1;
+	int match, count = 0;
+
+	Service_info_list = (DNS_SERVICE **)
+		malloc((size_t)(Curr_n_services*(int)sizeof(DNS_SERVICE *)));
+
+	if(!strchr(wild_name, '*'))
+	{
+		servp1 = service_exists(wild_name);
+		if(servp1)
+		{
+			if(servp1->state == 1)
+			{
+				Service_info_list[count] = (DNS_SERVICE *)servp1;
+				count++;
+				return 1;
+			}
+		}
+		return 0;
+	}
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		servp = Service_hash_table[i];
+		while( (servp = (RED_DNS_SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			ptr = wild_name;
+			dptr = servp->serv_name;
+			match = 1;
+
+            while( (ptr1 = strchr(ptr,'*')) )
+			{
+				if(ptr1 == ptr)
+				{
+					ptr++;
+					if(!*ptr)
+					{
+						dptr = ptr; 
+						break;
+					}
+					strcpy(tmp,ptr);
+					if( (ptr1 = strchr(ptr,'*')) )
+					{
+						tmp[ptr1-ptr] = '\0';
+					}
+					if( (dptr1 = strstr(dptr, tmp)) )
+					{
+						if(!ptr1)
+						{
+							dptr = dptr1;
+							break;
+						}
+						dptr1 += (int)strlen(tmp);
+						ptr = ptr1;
+						dptr = dptr1;
+					}
+					else
+					{
+						match = 0;
+						break;
+					}
+				}
+				else
+				{
+					strcpy(tmp,ptr);
+					tmp[ptr1-ptr] = '\0';
+					if(!strncmp(dptr, tmp, strlen(tmp)))
+					{
+						dptr += (int)strlen(tmp);
+						ptr = ptr1;
+					}
+					else
+					{
+						match = 0;
+						break;
+					}
+				}
+			}			
+			if(strcmp(dptr, ptr))
+			{
+				strcpy(tmp,ptr);
+				strcat(tmp,"/RpcIn");
+				if(strcmp(dptr, tmp))
+					match = 0;
+			}
+		    if(match)
+			{
+				if(servp->state == 1)
+				{
+					ptr = (char *)servp - (2 * sizeof(void *));
+					Service_info_list[count] = (DNS_SERVICE *)ptr;
+					count++;
+				}
+			}
+		}
+	}
+	return(count);
+}
+
+void set_rpc_info(int *tag, char *buffer, int *size)
+{
+	char aux[MAX_NAME], rpcaux[MAX_NAME+32], *ptr, *rpcptr;
+    int i, n, rpc, id[2], conn_id;
+	DNS_SERVICE *servp, *aux_servp;
+
+	if(size){}
+	if(tag){}
+	if(Debug)
+	{
+		dim_print_date_time();
+		conn_id = dis_get_conn_id();
+		printf(" Got Browse Request <%s> from conn: %d %s@%s\n", buffer, conn_id,
+			Net_conns[conn_id].task,Net_conns[conn_id].node);
+	}
+	n = find_services(buffer);
+	if(Debug)
+	{
+		dim_print_date_time();
+		conn_id = dis_get_conn_id();
+		printf(" Browse Request <%s> found %d services\n", buffer, n);
+	}
+	if(!Rpc_info_size)
+	{
+		Rpc_info = malloc((size_t)(MAX_NAME*(n+1)*2));
+		Rpc_info_size = MAX_NAME*(n+1)*2;
+	}
+	else if(Rpc_info_size < MAX_NAME*n*2)
+	{
+		free(Rpc_info);
+		Rpc_info = malloc((size_t)(MAX_NAME*(n+1)*2));
+		Rpc_info_size = MAX_NAME*(n+1)*2;
+	}
+	Rpc_info[0] = '\0';
+	rpcptr = Rpc_info;
+	for(i = 0; i < n; i++)
+	{		
+		rpc = 0;
+		servp = Service_info_list[i];
+		if(strstr(servp->serv_name,"/Rpc"))
+		{
+			strcpy(aux,servp->serv_name);
+			if( (ptr = strstr(aux,"/RpcIn")) )
+			{
+				*ptr = '\0';
+				rpc = 1;
+				if( (ptr = strstr(Rpc_info, aux)) )
+				{
+					ptr += (int)strlen(aux);
+					if(*ptr == '|')
+						rpc = 2;
+				}
+			}
+			if( (ptr = strstr(aux,"/RpcOut")) )
+			{
+				*ptr = '\0';
+				rpc = 1;
+				if( (ptr = strstr(Rpc_info, aux)) )
+				{
+					ptr += (int)strlen(aux);
+					if(*ptr == '|')
+						rpc = 2;
+				}
+			}
+			if(rpc == 1)
+			{
+				strcpy(rpcaux, aux);
+				strcat(rpcaux,"|");
+				strcat(aux,"/RpcIn");
+				if( (aux_servp = service_exists(aux)) )
+				{
+					strcat(rpcaux, aux_servp->serv_def);
+					strcat(rpcaux,",");
+					ptr = strstr(aux,"/RpcIn");
+					*ptr = '\0';
+					strcat(aux,"/RpcOut");
+					if( (aux_servp = service_exists(aux)) )
+					{
+						strcat(rpcaux,aux_servp->serv_def);
+						strcat(rpcaux,"|RPC\n");
+						strcpy(rpcptr, rpcaux);
+						rpcptr += (int)strlen(rpcaux);
+					}
+				}
+			}
+		}
+		else
+		{
+			strcpy(rpcaux, servp->serv_name);
+			strcat(rpcaux,"|");
+			strcat(rpcaux,servp->serv_def);
+			if(servp->serv_id & 0x10000000)
+				strcat(rpcaux,"|CMD\n");
+			else
+				strcat(rpcaux,"|\n");
+			strcpy(rpcptr, rpcaux);
+			rpcptr += (int)strlen(rpcaux);
+		}
+	}
+	*rpcptr = '\0';
+	id[0] = dis_get_conn_id();
+	id[1] = 0;
+	dis_selective_update_service(Rpc_id, id); 
+	free(Service_info_list);
+}
+
+void get_rpc_info(int *tag, char **buffer, int *size)
+{
+
+	if(tag){}
+	*buffer = Rpc_info;
+	*size = (int)strlen(Rpc_info)+1;
+}
+
Index: branches/FACT++_part_filenames/dim/src/dtq.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/dtq.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/dtq.c	(revision 18732)
@@ -0,0 +1,875 @@
+/*
+ * DTQ (Delphi Timer Queue) implements the action scheduling for the DIM
+ * (Delphi Information Managment) System.
+ * It will be used by servers clients and the Name Server.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ */
+
+/* include files */
+#ifndef WIN32
+#ifndef NOTHREADS
+int DIM_Threads_OFF = 0;
+#else
+int DIM_Threads_OFF = 1;
+#endif
+#endif
+#include <signal.h>
+#include <stdio.h>
+#define DIMLIB
+#include <dim.h>
+
+#ifdef VxWorks
+#include <time.h>
+#endif
+
+#include <sys/timeb.h>
+
+/* global definitions */
+#define MAX_TIMER_QUEUES	16	/* Number of normal queue's     */
+#define SPECIAL_QUEUE		16	/* The queue for the queue-less */
+#define WRITE_QUEUE			17 
+
+_DIM_PROTO( static void alrm_sig_handler,  (int num) );
+_DIM_PROTO( static void Std_timer_handler, () );
+_DIM_PROTO( static int stop_it,			   (int new_time) );
+_DIM_PROTO( static int start_it,		   (int new_time) );
+_DIM_PROTO( static int scan_it,			   () );
+_DIM_PROTO( static int get_minimum,		   (int deltat) );
+_DIM_PROTO( int dtq_task, (void *dummy) );
+_DIM_PROTO( static int my_alarm, (int secs) );
+_DIM_PROTO( int dim_dtq_init,	   (int thr_flag) );
+#ifndef WIN32
+_DIM_PROTO( static void dummy_alrm_sig_handler, (int num) );
+#endif
+
+typedef struct {
+	TIMR_ENT *queue_head;
+	int remove_entries;
+} QUEUE_ENT;
+
+
+static QUEUE_ENT timer_queues[MAX_TIMER_QUEUES + 2] = { 
+	{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
+	{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
+};
+
+static int Inside_ast = 0;
+static int Alarm_runs = 0;
+static int sigvec_done = 0;
+
+#ifdef VxWorks
+static timer_t Timer_id;
+#endif
+
+static time_t DIM_last_time = 0;
+static int DIM_last_time_millies = 0;
+static int DIM_next_time = 0;
+static int DIM_time_left = 0;
+static int Threads_off = 0;
+
+/*
+ * DTQ routines
+ */
+
+
+#ifndef WIN32
+
+void dim_no_threads()
+{
+	extern void dic_no_threads();
+	extern void dis_no_threads();
+	
+	DIM_Threads_OFF = 1;
+	Threads_off = 1;
+	dic_no_threads();
+	dis_no_threads();
+}
+
+int dim_dtq_init(int thr_flag)
+{
+struct sigaction sig_info;
+sigset_t set;
+int ret = 0;
+
+/*
+	pid = getpid();
+*/
+	if( !sigvec_done) 
+	{
+	    Inside_ast = 0;
+	    Alarm_runs = 0;
+	    DIM_last_time = 0;
+/*
+	    for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	    {
+	        timer_queues[i].queue_head = 0;
+			timer_queues[i].remove_entries = 0;
+	    }
+*/
+		if( timer_queues[SPECIAL_QUEUE].queue_head == NULL ) {
+			timer_queues[SPECIAL_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[SPECIAL_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[SPECIAL_QUEUE].queue_head);
+		}
+		if( timer_queues[WRITE_QUEUE].queue_head == NULL ) {
+			timer_queues[WRITE_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[WRITE_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[WRITE_QUEUE].queue_head);
+		}
+	    if(!thr_flag)
+	    {
+	        Threads_off = 1;
+	    }
+		sigemptyset(&set);
+	  
+		sigaddset(&set,SIGIO);
+		
+		if(thr_flag)
+			sig_info.sa_handler = dummy_alrm_sig_handler;
+		else
+			sig_info.sa_handler = alrm_sig_handler;
+		sig_info.sa_mask = set;
+#ifndef LYNXOS
+		sig_info.sa_flags = SA_RESTART;
+#else
+		sig_info.sa_flags = 0;
+#endif
+		if( sigaction(SIGALRM, &sig_info, 0) < 0 ) {
+			perror( "sigaction(SIGALRM)" );
+			exit(1);
+		}
+	    
+	    sigvec_done = 1;
+	    ret = 1;
+	}
+	return(ret);
+}
+
+void dummy_alrm_sig_handler( int num )
+{
+	if(num){}
+}
+
+#else
+
+int dim_dtq_init(int thr_flag)
+{
+	int tid = 1;
+	void create_alrm_thread(void);
+
+	if( !sigvec_done ) {
+		Inside_ast = 0;
+	    Alarm_runs = 0;
+	    DIM_last_time = 0;
+/*
+	    for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	    {
+	        timer_queues[i].queue_head = 0;
+			timer_queues[i].remove_entries = 0;
+	    }
+*/
+		if( timer_queues[SPECIAL_QUEUE].queue_head == NULL ) {
+			timer_queues[SPECIAL_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[SPECIAL_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[SPECIAL_QUEUE].queue_head);
+		}
+		if( timer_queues[WRITE_QUEUE].queue_head == NULL ) {
+			timer_queues[WRITE_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[WRITE_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[WRITE_QUEUE].queue_head);
+		}
+/*
+#ifndef STDCALL
+		tid = _beginthread((void *)(void *)dtq_task,0,NULL);
+#else
+		tid = _beginthreadex(NULL, NULL,
+			dtq_task,0,0,NULL);
+#endif
+*/
+		create_alrm_thread();
+		sigvec_done = 1;
+	}
+	return(tid);
+}
+
+#endif
+
+void dim_dtq_stop()
+{
+/*
+	int i;
+	for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	{
+		if( timer_queues[i].queue_head != NULL)
+		{
+			dtq_delete(i);
+			free((TIMR_ENT *)timer_queues[i].queue_head);
+			timer_queues[i].queue_head = 0;
+		}
+	}
+*/
+	scan_it();
+	if( timer_queues[WRITE_QUEUE].queue_head != NULL)
+	{
+		dtq_delete(WRITE_QUEUE);
+		free((TIMR_ENT *)timer_queues[WRITE_QUEUE].queue_head);
+		timer_queues[WRITE_QUEUE].queue_head = 0;
+	}
+	sigvec_done = 0;
+}
+
+static int get_current_time(int *millies)
+{
+	int secs;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+#ifdef WIN32
+	ftime(&timebuf);
+	secs = (int)timebuf.time;
+	*millies = timebuf.millitm;
+#else
+	tz = 0;
+	gettimeofday(&tv, tz);
+	secs = (int)tv.tv_sec;
+	*millies = (int)tv.tv_usec / 1000;
+#endif
+	return secs;
+}
+
+static int get_elapsed_time()
+{
+	int millies, deltat;
+	int now;
+
+	now = get_current_time(&millies);
+	deltat = now - (int)DIM_last_time;
+	if((millies + 50) < DIM_last_time_millies)
+	{
+		deltat --;
+	}
+	return deltat;
+}
+
+static int my_alarm(int secs)
+{
+	int ret;
+
+	DIM_next_time = secs;
+#ifndef WIN32
+	if(Threads_off)
+	{
+		if( secs < 0)
+		{
+			kill(getpid(),SIGALRM);
+			return(0);
+		}
+		else
+		{
+			return((int)alarm((unsigned int)secs));
+		}
+	}
+	else
+	{
+#endif
+
+		ret = DIM_time_left;
+
+		if(secs == 0)
+			DIM_next_time = -1;
+		return(ret);
+#ifndef WIN32
+	}
+#endif
+}
+
+void dim_usleep(int usecs)
+{
+
+#ifndef WIN32
+	struct timeval timeout;
+
+	timeout.tv_sec = 0;
+	timeout.tv_usec = usecs;
+	select(FD_SETSIZE, NULL, NULL, NULL, &timeout);
+#else
+	usleep(usecs);
+#endif
+}
+
+int dtq_task(void *dummy)
+{
+int deltat;
+static int to_go;
+
+	if(dummy){}
+	while(1)
+	{
+		if(DIM_next_time)
+		{
+			DISABLE_AST
+			DIM_time_left = DIM_next_time;
+			if(DIM_time_left == -1)
+				DIM_time_left = 0;
+			to_go = DIM_next_time;
+			DIM_next_time = 0;
+			ENABLE_AST
+		}
+		if(DIM_time_left < 0)
+		{
+			DIM_time_left = 0;
+			alrm_sig_handler(2);
+#ifndef WIN32
+			return(1);
+#endif
+		}
+		else if(DIM_time_left > 0)
+		{
+			dim_usleep(100000);
+			deltat = get_elapsed_time();
+			DIM_time_left = to_go - deltat;
+			if(DIM_time_left <= 0)
+			{
+				alrm_sig_handler(2);
+#ifndef WIN32
+				return(1);
+#endif
+			}
+		}
+		else
+		{
+			dim_usleep(1000);
+		}
+	}
+}
+
+int dtq_create()
+{
+	int i;
+	extern void dim_init_threads(void);
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	dim_dtq_init(0);
+	for( i = 1; i < MAX_TIMER_QUEUES; i++ )
+		if( timer_queues[i].queue_head == 0 )
+			break;
+
+	if( i == MAX_TIMER_QUEUES )
+		return(0);
+
+	timer_queues[i].queue_head = (TIMR_ENT *)malloc( sizeof(TIMR_ENT) );
+	memset( timer_queues[i].queue_head, 0, sizeof(TIMR_ENT) );
+	dll_init( (DLL *)timer_queues[i].queue_head);
+
+	return(i);
+}
+
+
+int dtq_delete(int queue_id)
+{
+	TIMR_ENT *queue_head, *entry;
+
+	DISABLE_AST
+	queue_head = timer_queues[queue_id].queue_head;
+	if(queue_head)
+	{
+		while(!dll_empty((DLL *)queue_head))
+		{
+			entry = queue_head->next;
+			dll_remove(entry);
+			free(entry);
+		}
+		free(queue_head);
+		timer_queues[queue_id].queue_head = 0;
+	}
+	ENABLE_AST
+	return(1);			
+}
+	
+TIMR_ENT *dtq_add_entry(int queue_id, int time, void (*user_routine)(), dim_long tag)
+{
+	TIMR_ENT *new_entry, *queue_head, *auxp, *prevp;
+	int next_time, min_time = 100000;
+	int time_left, deltat = 0;
+
+	DISABLE_AST 
+
+	next_time = time;
+	if(!next_time)
+		next_time = -10;
+	if(Alarm_runs)
+	{
+		time_left = DIM_time_left;
+		if(!time_left)
+			time_left = DIM_next_time;
+		if((time_left > next_time) || (queue_id == SPECIAL_QUEUE))
+	    {
+			if(next_time != -10)
+			{
+				min_time = stop_it();
+				if((next_time > min_time) && (min_time != 0))
+					next_time = min_time;
+			}
+			else
+				my_alarm(next_time);
+	    }
+		else
+		{
+		    deltat = get_elapsed_time();
+		}
+	}
+	new_entry = (TIMR_ENT *)malloc( sizeof(TIMR_ENT) );
+	new_entry->time = time;
+    if( user_routine )
+   	   	new_entry->user_routine = user_routine;
+	else
+       	new_entry->user_routine = Std_timer_handler;
+	new_entry->tag = tag;
+	new_entry->time_left = time + deltat;
+
+	queue_head = timer_queues[queue_id].queue_head;
+	if(!time)
+	{
+		dll_insert_after((DLL *)queue_head->prev, (DLL *)new_entry);
+	}
+	else
+	{
+		if(queue_head)
+		{
+			auxp = queue_head;
+			prevp = auxp;
+			while((auxp = (TIMR_ENT *)dll_get_prev((DLL *)queue_head, (DLL *)auxp)))
+			{
+				if(time >= auxp->time)
+				{
+					break;
+				}
+				prevp = auxp;
+			}
+/*
+			if(auxp)
+			{
+				if(queue_id != SPECIAL_QUEUE)
+				{
+					if(auxp->time_left > 0)
+					{
+						if(auxp->time == time)
+							new_entry->time_left = auxp->time_left;
+					}
+				}
+				prevp = auxp;
+			}
+*/
+			dll_insert_after((DLL *)prevp, (DLL *)new_entry);
+		}
+	}
+	if(!Alarm_runs)
+	{
+		if((next_time != -10) && (min_time == 100000))
+		{
+			min_time = get_minimum(0);
+			if(next_time > min_time)
+				next_time = min_time;
+		}
+		start_it(next_time);
+	}
+	ENABLE_AST
+	return(new_entry); 
+}
+
+int dtq_clear_entry(TIMR_ENT *entry)
+{
+	int time_left, deltat = 0;
+
+	DISABLE_AST
+	deltat = get_elapsed_time();
+	time_left = entry->time_left - deltat;
+	entry->time_left = entry->time + deltat;
+	ENABLE_AST
+	return(time_left);
+}
+
+
+int dtq_rem_entry(int queue_id, TIMR_ENT *entry)
+{
+	int time_left, deltat = 0;
+
+	DISABLE_AST
+	deltat = get_elapsed_time();
+	time_left = entry->time_left - deltat;
+	if( Inside_ast ) 
+	{
+		timer_queues[queue_id].remove_entries++;
+		entry->time = -1;
+		ENABLE_AST
+		return(time_left);
+	}
+	dll_remove(entry);
+	free(entry);
+
+	ENABLE_AST
+	return(time_left);
+}
+
+static int rem_deleted_entries(int queue_id)
+{
+	TIMR_ENT *auxp, *prevp, *queue_head;
+	int n;
+
+	DISABLE_AST
+	queue_head = timer_queues[queue_id].queue_head;
+	n = timer_queues[queue_id].remove_entries;
+	if(queue_head)
+	{
+		auxp = queue_head;
+		prevp = auxp;
+		while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head, (DLL *)auxp)) )
+		{
+			if(auxp->time == -1)
+			{
+				dll_remove(auxp);
+				free(auxp);
+				auxp = prevp;
+				n--;
+				if(!n)
+					break;
+			}
+			else
+				prevp = auxp;
+		}
+	}
+	ENABLE_AST;
+	return(1);
+}
+
+static int get_minimum(int deltat)
+{
+	TIMR_ENT *auxp, *queue_head;
+	int queue_id;
+	int min_time = 100000;
+
+	queue_head = timer_queues[WRITE_QUEUE].queue_head;
+	if( dll_get_next((DLL *)queue_head,(DLL *)queue_head))
+		min_time = -10;
+	if((min_time != -10) || deltat)
+	{
+		if( (queue_head = timer_queues[SPECIAL_QUEUE].queue_head) != NULL)
+		{
+			auxp = queue_head;
+			while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+			{
+				auxp->time_left -= deltat;
+				if(auxp->time_left > 0)
+				{
+					if(auxp->time_left < min_time)
+					{
+						min_time = auxp->time_left;
+					}
+				}
+			}
+		}
+		for( queue_id = 0; queue_id < MAX_TIMER_QUEUES; queue_id++ ) 
+		{
+			if( (queue_head = timer_queues[queue_id].queue_head) == NULL )
+				continue;
+			auxp = queue_head;
+			while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+			{
+				auxp->time_left -= deltat;
+				if(auxp->time_left > 0)
+				{
+					if(auxp->time_left < min_time)
+					{
+						min_time = auxp->time_left;
+					}
+				}
+				else
+				{
+					if(auxp->time < min_time)
+					{
+						min_time = auxp->time;
+					}
+				}
+				if((!deltat) && (min_time <= 1))
+					break;
+			}
+		}
+	}
+	if(min_time == 100000)
+		min_time = 0;
+	return min_time;
+}
+
+static int stop_it()
+{
+	int min_time;
+    int deltat = 0;
+
+	DISABLE_AST
+	if(Alarm_runs)
+	{
+		my_alarm(0);
+        deltat = get_elapsed_time();
+		if(deltat != 0)
+			DIM_last_time = get_current_time(&DIM_last_time_millies);
+		Alarm_runs = 0;
+	}
+	min_time = get_minimum(deltat);
+	ENABLE_AST
+	return(min_time);
+}
+
+static int start_it(int new_time)
+{
+	int next_time;
+	TIMR_ENT *queue_head;
+
+	DISABLE_AST
+	next_time = new_time;
+	if(next_time > 0)
+	{
+		queue_head = timer_queues[WRITE_QUEUE].queue_head;
+		if( dll_get_next((DLL *)queue_head,(DLL *)queue_head))
+		{
+			next_time = -10;
+		}
+	}
+	if(next_time)
+	{
+		my_alarm(next_time);
+		Alarm_runs = 1;
+		if(!DIM_last_time)
+			DIM_last_time = get_current_time(&DIM_last_time_millies);
+	}
+	else
+		DIM_last_time = 0;
+
+	ENABLE_AST
+	return(1);
+}
+
+static int scan_it()
+{
+	int queue_id, i, n = 0;
+	static int curr_queue_id = 0;
+	static TIMR_ENT *curr_entry = 0;
+	TIMR_ENT *auxp, *prevp, *queue_head;
+	TIMR_ENT *done[1024];
+
+	DISABLE_AST
+	queue_head = timer_queues[WRITE_QUEUE].queue_head;
+	if(!queue_head)
+	{
+		ENABLE_AST
+		return(0);
+	}
+	auxp = queue_head;
+	while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+	{	
+		done[n++] = auxp;
+		if(n == 1000)
+			break;
+	}
+	ENABLE_AST
+	for(i = 0; i < n; i++)
+	{
+		auxp = done[i];
+		auxp->user_routine( auxp->tag );
+	}
+	{
+		DISABLE_AST
+		for(i = 0; i < n; i++)
+		{
+			auxp = done[i];
+			dll_remove(auxp);
+			free(auxp);
+		}
+		if(n == 1000)
+		{
+			ENABLE_AST
+			return(1);
+		}
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	queue_head = timer_queues[SPECIAL_QUEUE].queue_head;
+	auxp = queue_head;
+	prevp = auxp;
+	while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+	{	
+		if(auxp->time_left <= 0)
+		{
+			dll_remove(auxp);
+			auxp->user_routine( auxp->tag );
+			free(auxp);
+			auxp = prevp;
+			n++;
+			if(n == 100)
+			{
+				ENABLE_AST
+				return(1);
+			}
+		}
+		else
+			prevp = auxp;
+	}
+	for( queue_id = curr_queue_id; queue_id < MAX_TIMER_QUEUES; queue_id++ ) 
+	{
+		if( (queue_head = timer_queues[queue_id].queue_head) == NULL )
+			continue;
+		Inside_ast = 1;
+		if((curr_entry) && (queue_id == curr_queue_id))
+			auxp = curr_entry;
+		else
+			auxp = queue_head;
+		while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+		{	
+			if(auxp->time_left <= 0)
+			{
+				auxp->user_routine( auxp->tag );
+				auxp->time_left = auxp->time; /*restart clock*/
+				n++;
+				if(n == 100)
+				{
+					curr_queue_id = queue_id;
+					curr_entry = auxp;
+					ENABLE_AST
+					return(1);
+				}
+			}
+		}
+		Inside_ast = 0;
+		if( timer_queues[queue_id].remove_entries ) {
+			rem_deleted_entries( queue_id );
+			timer_queues[queue_id].remove_entries = 0;
+		}
+	}
+	curr_queue_id = 0;
+	curr_entry = 0;
+	ENABLE_AST
+	}
+	return(0);
+}
+
+static void alrm_sig_handler( int num)
+{
+	int next_time;
+
+	if(num){}
+	next_time = stop_it();
+	if(Threads_off)
+	{
+		if(scan_it())
+			next_time = -10;
+	}
+	else
+	{
+		while(scan_it());
+	}
+	if(!Alarm_runs)
+	{
+		start_it(next_time);
+	}
+}
+
+static void Std_timer_handler()
+{
+}
+
+void dtq_start_timer(int time, void (*user_routine)(), dim_long tag)
+{
+	extern void dim_init_threads();
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	dim_dtq_init(0);
+	if(time != 0)
+		dtq_add_entry(SPECIAL_QUEUE, time, user_routine, tag);
+	else
+		dtq_add_entry(WRITE_QUEUE, time, user_routine, tag);
+}
+
+
+int dtq_stop_timer(dim_long tag)
+{
+	TIMR_ENT *entry, *queue_head;
+	int time_left = -1;
+
+	queue_head = timer_queues[SPECIAL_QUEUE].queue_head;
+	entry = queue_head;
+	while( (entry = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)entry)) )
+	{
+		if( entry->tag == tag ) 
+		{
+			time_left = dtq_rem_entry( SPECIAL_QUEUE, entry );
+			break;
+		}
+	}
+	return(time_left);
+}
+
+static int Dtq_sleeping = 0;
+
+void dtq_sleep_rout(dim_long tag)
+{
+	if(tag){}
+	Dtq_sleeping = 0;
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+#ifndef WIN32
+
+unsigned int dtq_sleep(int secs)
+{
+
+#ifndef NOTHREADS
+	int i;
+	for(i = 0; i < secs*2; i++)
+    {
+		dim_usleep(500000);
+    }
+	return(0);
+#else
+	sigset_t set, oset;
+
+	sigemptyset(&set);
+	sigaddset(&set,SIGALRM);
+	sigprocmask(SIG_UNBLOCK, &set, &oset);
+	Dtq_sleeping = 1;
+	dtq_start_timer(secs, dtq_sleep_rout, (dim_long)123);
+    do{
+		pause();
+	}while(Dtq_sleeping);
+    sigprocmask(SIG_SETMASK,&oset,0);
+	return(0);
+#endif
+}
+
+#else
+
+unsigned int dtq_sleep(int secs)
+{
+	Dtq_sleeping = 1;
+	dtq_start_timer(secs, dtq_sleep_rout, 1);
+	do{
+		dim_wait();
+	}while(Dtq_sleeping);
+	return(0);
+}
+
+#endif
Index: branches/FACT++_part_filenames/dim/src/examples/Copy of test_server.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/Copy of test_server.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/Copy of test_server.cxx	(revision 18732)
@@ -0,0 +1,177 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+
+	newDns = new DimServerDns("lxplus237.cern.ch", 0, "new_TEST");
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	DimService new_servint(newDns, "new_TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/Markus.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/Markus.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/Markus.cxx	(revision 18732)
@@ -0,0 +1,82 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class DnsInfo;
+
+class FloatInfo : public virtual DimInfoHandler
+{
+	DimInfo *fInfo;
+	float no_link, *data;
+	DnsInfo *m_dns;
+
+protected:
+    friend class DnsInfo;
+	void addHandler()
+	{
+		if(!fInfo)
+			fInfo = new DimInfo("SIMPLE_SERVICE", (void *)&no_link,
+				sizeof(no_link), this);
+	}
+	void removeHandler()
+	{
+		if(fInfo)
+		{
+			delete fInfo;
+			fInfo = 0;
+		}
+	}
+public :
+	FloatInfo()
+	{
+		fInfo = 0; 
+		no_link = -1;
+	};
+	void initialize();
+	void infoHandler()
+	{
+		data = (float *)getInfo()->getData();
+		cout << "Received : " << *data << endl;
+	}
+};
+
+class DnsInfo : public DimInfo
+{
+
+	char *data;
+	FloatInfo &fInfo;
+
+	void infoHandler()
+	{
+		data = getString();
+		cout << "Received : " << data << endl;
+		if(data[0] == '+')
+		{
+			fInfo.addHandler();
+		}
+		else if (data[0] == '-')
+		{
+			fInfo.removeHandler();
+		}
+	}
+public :
+	DnsInfo(FloatInfo &f) : DimInfo("DIS_DNS/SERVER_LIST","DEAD"),
+		fInfo(f) {}
+    virtual ~DnsInfo()  {}
+};
+
+void FloatInfo::initialize()
+{
+	m_dns = new DnsInfo(*this);
+}
+
+main()
+{
+	FloatInfo *fInfo;
+
+	fInfo = new FloatInfo();
+	fInfo->initialize();
+
+	while(1)
+		pause();
+}
Index: branches/FACT++_part_filenames/dim/src/examples/cpp_server.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/cpp_server.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/cpp_server.cxx	(revision 18732)
@@ -0,0 +1,184 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+	char *extraDns;
+
+	DimServer::start("TEST");
+	extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+//	newDns = new DimServerDns(extraDns, 0, "new_TEST");
+	newDns = new DimServerDns(extraDns);
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	DimService new_servint(newDns, "new_TEST/INTVAL",ival);
+	DimServer::start(newDns, "new_TEST");
+
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+		new_servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/db_dim_client.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/db_dim_client.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/db_dim_client.c	(revision 18732)
@@ -0,0 +1,55 @@
+// db_dim_client.c : Defines the entry point for the console application.
+//
+// Dietrich Beck
+// 
+// This is a very simple DIM service. It listens to a DIM service
+// "SERV_BY_BUFFER" via a callback routine. Each time THIS client
+// receives a service, it sends a new command to the DIM server.
+
+#include <stdio.h>
+#include <dic.h>
+
+#define BUFFSIZE 10000000
+
+int buffer[BUFFSIZE];
+int buff[BUFFSIZE];
+char message[1024];
+int no_link = -1;
+int version;
+int counter;
+int lastValue;
+int i;
+unsigned service_id;
+
+serv_received(tag,address,size)
+int *tag;
+char *address;
+int *size;
+{
+    for (i=0;i<BUFFSIZE;i++) buff[i] = buffer[i]; //copy data to do something useful
+	counter++;
+	sprintf(message, "service received %d\n", counter);
+	printf(message);
+}
+
+void main(int argc, char* argv[])
+{
+	
+	//service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+//		printf("registering to service\n");
+//		counter = 0;
+//		service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+	while(1)
+	{
+		printf("registering to service\n");
+		counter = 0;
+		service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+		sleep(1);
+		printf("releasing service\n");
+		dic_release_service(service_id);
+		printf("released service\n");
+		sleep(1);
+		//sprintf(message, "%s", dic_get_error_services());
+	}
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/db_dim_server.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/db_dim_server.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/db_dim_server.c	(revision 18732)
@@ -0,0 +1,31 @@
+// db_dim_server.c : Defines the entry point for the console application.
+//
+// Dietrich Beck
+//
+// This is a DIM test server. It just publishes a servivce and updates
+// that service very fast.
+
+#include <stdio.h>
+#include <sys/timeb.h>
+#include <time.h>
+#include <dis.h>
+
+#define BUFFSIZE 10000000
+
+char buffer[BUFFSIZE];
+int service_id;
+int size=10000;
+int count;
+
+void main()
+{
+	service_id = dis_add_service("testBuffer","C",buffer,size,0,0);
+    dis_start_serving("DIS_TEST");
+	count = 0;
+	while(1)
+	{
+		sprintf(buffer,"%d", count);
+		dis_update_service(service_id);
+		count++;
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/examples/demo_client.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/demo_client.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/demo_client.c	(revision 18732)
@@ -0,0 +1,34 @@
+#include <dic.h>
+
+int no_link = -1;
+
+void got_data( tag, data, size )
+int *data;
+int *tag, *size;
+{
+
+	if(*data == -1)
+		printf("Server is dead\n");
+	else
+		printf("got data: %d\n",*data);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80], cmnd[16];
+
+
+	sprintf(aux,"DEVICE/%s/DATA",argv[1]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, got_data, 0,
+			  &no_link, 4 );
+
+	sprintf(aux,"DEVICE/%s/CMD",argv[1]);
+	while(1)
+	{
+		scanf("%s",cmnd);
+		printf("Sending Command: %s\n",cmnd);
+		dic_cmnd_service(aux,cmnd,(int)strlen(cmnd)+1);
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/examples/demo_server.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/demo_server.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/demo_server.c	(revision 18732)
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <dis.h>
+
+int dev_data;
+int serv_id;
+
+void do_cmnd(tag, cmnd, size)
+int *tag, *size;
+char *cmnd;
+{
+	printf("Got Command: %s\n",cmnd);
+	if(!strcmp(cmnd,"RESET"))
+		dev_data = 0;
+	if(!strcmp(cmnd,"CONFIGURE"))
+		dev_data = 1;
+	if(!strcmp(cmnd,"START"))
+		dev_data = 2;
+	if(!strcmp(cmnd,"STOP"))
+		dev_data = 1;
+	dis_update_service(serv_id);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80];
+
+	dev_data = 0;
+	sprintf(aux,"DEVICE/%s/DATA",argv[1]);
+	serv_id = dis_add_service(aux, "I", &dev_data, sizeof(int), 0, 0);
+
+	sprintf(aux,"DEVICE/%s/CMD",argv[1]);
+	dis_add_cmnd(aux, "C", do_cmnd, 0);
+
+	dis_start_serving( argv[1] );
+	while(1)
+		pause();
+}
Index: branches/FACT++_part_filenames/dim/src/examples/dim_fork.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/dim_fork.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/dim_fork.cxx	(revision 18732)
@@ -0,0 +1,93 @@
+#include <cerrno>
+#include <cstdio>
+#include <unistd.h>
+#include <sys/wait.h>
+extern "C" {
+#include "dis.hxx"
+}
+
+static int id, id_cmd, run = 0;
+static int doForkNow = 0;
+
+void handle_cmd(void *tag, void *data, int *size)
+{
+  doForkNow = 1;
+}
+
+static pid_t fork_em() {
+  //  ::dis_remove_service(id);
+  ::dis_stop_serving();
+  ::printf("Sleep a bit to see task disappear in did\n");
+  //::sleep(3);
+  pid_t pid = ::fork();
+  if ( pid == 0 ) {
+    ::dim_init();
+    ::printf("PID:%d Register Child service Child/run to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Child/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Child");
+  }
+  else if ( pid > 0 ) {
+    ::dim_init();
+    //::sleep(3);
+    ::printf("PID:%d RE-Register Parent to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    //    id_cmd = :: dis_add_cmnd((char *)"Parent/cmd",(char*)"C",handle_cmd,0);
+    ::dis_start_serving((char*)"Parent");
+  }      
+  else {
+    ::printf("ERROR in fork!!!!  %s\n",strerror(errno));
+    ::exit(0);
+  }
+  return pid;
+}
+
+int main(int /* argc */, char** /* argv */) {
+  id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+  //  id_cmd = :: dis_add_cmnd((char *)"Parent/cmd",(char*)"C",handle_cmd,0);
+  ::dis_start_serving((char*)"Parent");
+  ::sleep(5);
+  pid_t child = 0;
+
+ Again:
+  child = fork_em();
+  if ( child > 0 ) {
+    int status;
+    sleep(5);
+    kill(child,SIGTERM);
+    wait(&status);
+    sleep(1);
+    goto Again;
+  }
+ 
+  while(1)
+  {
+    /*
+    if(doForkNow)
+    {
+      int status;
+      doForkNow = 0;
+      if(child > 0)
+      {
+	kill(child,SIGTERM);
+	wait(&status);
+	sleep(1);
+      }
+      child = fork_em();
+    }
+    */
+    ::sleep(1);
+  }
+  return 1;
+}
+
+
+/*
+
+g++ -o dim_fork -I../../DIM/dim -ldim -lrt -pthread ../test/dim_fork.cpp
+
+[frankm@plus04 cmt]$ ./dim_fork
+PID:20407 Register Child to DNS....
+PID 20407 - Fri Dec  3 22:01:57 2010 - (FATAL) Child: Some Services already known to DNS
+PID:20404 RE-Register Parent to DNS....
+
+*/
Index: branches/FACT++_part_filenames/dim/src/examples/dim_fork2.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/dim_fork2.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/dim_fork2.cxx	(revision 18732)
@@ -0,0 +1,106 @@
+#include <cerrno>
+#include <cstdio>
+#include <unistd.h>
+extern "C" {
+#include "dis.hxx"
+}
+
+struct Child {
+  int id, run, calls;
+  char name[132];
+  Child(const char* n, const char* svc) : id(0), run(0), calls(0) { 
+    ::strncpy(name,n,sizeof(name));
+	 id = ::dic_info_service((char*)svc,MONITORED,0,0,0,callback,(long)this,&run,sizeof(run));
+  }
+  virtual ~Child() {}
+  static void callback(void* tag, void* buffer, int* /* size */) {
+    Child* c = *(Child**)tag;
+    c->run = *(int*)buffer;
+    c->calls++;
+  }
+};
+
+struct Parent {
+  int id, run, is_parent;
+  Child*  children[50];
+  Parent() : id(0), run(0) {
+    is_parent = 0;
+    memset(children,0,sizeof(children));
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Parent");
+  }
+  virtual ~Parent() {}
+  void update() {
+    ++run;
+    ::dis_update_service(run);
+  }
+  void print() {
+    /*
+    size_t cnt = 0;
+    for(size_t i=0; i<sizeof(children)/sizeof(children[0]); ++i) {
+      if ( children[i]->calls > 2 ) cnt++;
+    }
+    ::printf("PID:%d Child service answers from %ld children. %ld still missing.\n",
+	     ::getpid(), cnt, sizeof(children)/sizeof(children[0])-cnt);
+    */
+  }
+  void fork_em() {
+    //::dis_remove_service(id);
+    ::dis_stop_serving();
+    ::printf("Sleep a bit to see task disappear in did\n");
+    ::sleep(3);
+    for(size_t i=0; i<sizeof(children)/sizeof(children[0]); ++i) {
+      char nam[132], svc[132];
+      pid_t pid = ::fork();
+      sprintf(nam,"Child_%02ld",i);
+      sprintf(svc,"Child_%02ld/run",i);
+      if ( pid == 0 ) {
+	::dim_init();
+	::printf("PID:%d Register Child service Child_%02d/run to DNS....\n",::getpid(),i);
+	id = ::dis_add_service(svc,(char*)"I",&run,sizeof(run),0,0);
+	::dis_start_serving(nam);
+	return;
+      }
+      else if ( pid > 0 ) {
+	//children[i] = new Child(nam, svc);
+	is_parent = true;
+      }
+      else {
+	::printf("ERROR in fork!!!!  %s\n",strerror(errno));
+	::exit(0);
+      }
+    }
+    ::dim_init();
+    ::sleep(3);
+    ::printf("PID:%d RE-Register Parent to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Parent");
+  }
+};
+
+int main(int /* argc */, char** /* argv */) {
+  Parent p;
+  ::sleep(5);
+  p.fork_em();
+  while(1) {
+    p.update();
+    ::sleep(1);
+    if ( p.is_parent ) {
+      p.print();
+    }
+  }
+  ::printf("Process %d exiting\n",::getpid());
+  return 1;
+}
+
+
+/*
+
+g++ -o xxxx -I../../DIM/dim -ldim -lrt -pthread ../test/test_dim.cpp
+
+[frankm@plus04 cmt]$ ./xxxx
+PID:20407 Register Child to DNS....
+PID 20407 - Fri Dec  3 22:01:57 2010 - (FATAL) Child: Some Services already known to DNS
+PID:20404 RE-Register Parent to DNS....
+
+*/
Index: branches/FACT++_part_filenames/dim/src/examples/pvss_dim_client.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/pvss_dim_client.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/pvss_dim_client.cxx	(revision 18732)
@@ -0,0 +1,112 @@
+#include <dic.hxx>
+#include <iostream>
+#include <stdio.h>
+using namespace std;
+
+typedef struct{
+	int bitset;
+	char boolval;
+	int intval;
+	float floatval;
+	char stringval[128];
+}COMPLEXDATA;
+
+class SimpleService : public DimInfo
+{
+	void infoHandler()
+	{
+		cout << "SimpleService : " << getFloat() << "\n" << endl;
+	}
+public :
+	SimpleService(const char *name) : DimInfo(name, -1.0) {};
+};
+
+double no_link_darray[8] = {-1.0,0,0,0,0,0,0,0};
+
+class DimDoubleArray : public DimInfo
+{
+	void infoHandler()
+	{
+		double *data;
+		int i, len;
+
+		data = (double *)getData();
+		len = getSize()/sizeof(double);
+		for(i = 0; i < len; i++)
+		{
+			cout << data[i] << endl;
+		}
+	}
+public :
+	DimDoubleArray(const char *name) : DimInfo(name, no_link_darray, 8*sizeof(double)) {};
+};
+
+
+class ComplexService : public DimInfo
+{
+	void infoHandler()
+	{
+		COMPLEXDATA *data;
+		int i;
+		unsigned mask = 0x80000000;
+
+		data = (COMPLEXDATA *)getData();
+
+		cout << "ComplexService : \n";
+		cout << "\tbitset : ";
+		for(i = 0; i < 32; i++)
+		{
+			if (data->bitset & mask)
+				cout << "1";
+			else 
+				cout << "0";
+			mask >>= 1;
+		}
+		cout << "\n";
+		cout << "\tboolval : ";
+		if(data->boolval)
+				cout << "TRUE\n";
+			else 
+				cout << "FALSE\n";
+		cout << "\tintval : "<< data->intval << "\n";
+		cout << "\tfloatval : " << data->floatval << "\n";
+		cout << "\tstringval : "<< data->stringval << "\n\n";
+		cout << "Sending PVSS_SIMPLE_COMMAND : " << data->stringval << "\n" << endl;
+		DimClient::sendCommand("PVSS_SIMPLE_COMMAND",data->stringval);
+	}
+public :
+	ComplexService(const char *name) : DimInfo(name, -1.0) {};
+};
+
+class RpcService : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		int value;
+		value = getInt();
+		dim_print_date_time();
+		cout << "RPC Service received: " << value << "\n" << endl;
+	}
+	RpcService(const char *name, int timeout) :	DimRpcInfo(name, timeout, -1) {};
+};
+
+
+int main()
+{
+	int value = 0;
+	SimpleService simple("PVSS_SIMPLE_SERVICE");
+	ComplexService complex("PVSS_COMPLEX_SERVICE");
+	RpcService rpc("TESTRPC/INT", 25);
+	DimDoubleArray dda("TEST_SRVC");
+
+	while(1)
+	{
+		dim_print_date_time();
+		value++;
+		cout << "RPC Service sent: " << value << "\n" << endl;
+		rpc.setData(value);
+		value++;
+		sleep(30);
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/pvss_dim_server.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/pvss_dim_server.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/pvss_dim_server.cxx	(revision 18732)
@@ -0,0 +1,234 @@
+#include <dis.hxx>
+#include <iostream>
+#include <stdio.h>
+#include <time.h>
+using namespace std;
+
+typedef struct{
+	int bitset;
+	char boolval;
+	int intval;
+	float floatval;
+	char stringval[128];
+}COMPLEXDATA;
+
+typedef struct{
+	float farr[10];
+	int intval;
+	int iarr[3];
+	char str[20];
+	int intval1;
+}COMPLEXDATA1;
+
+class RecvCommand : public DimCommand
+{
+	int reset_flag;
+	void commandHandler()
+	{
+		cout << "Size: " << getSize() << endl;
+		cout << "Command " << getString() << " received" << endl;
+		reset_flag = 1;
+	}
+public :
+	RecvCommand(const char *name) : DimCommand(name,"C") {reset_flag = 0;};
+	int isReset() {return reset_flag;};
+	void clearReset() {reset_flag = 0;};
+};
+
+class RecvCommandComplex : public DimCommand
+{
+	void commandHandler()
+	{
+		COMPLEXDATA *complexData;
+
+		complexData = (COMPLEXDATA *)getData();
+		cout << "Command " << complexData->intval 
+			 << " received " << complexData->stringval << endl;
+	}
+public :
+	RecvCommandComplex(const char *name) : DimCommand(name,"I:1;C:1;I:1;F:1;C") {};
+};
+/*
+typedef struct{
+	char oper;
+	char data[128];
+}MEMCMND;
+
+typedef struct{
+	int code;
+	float data[128];
+}MEMDATA;
+
+DimService *TestMem[1010];
+MEMDATA TestMemData;
+
+class RecvCommandMem : public DimCommand
+{
+	int itsIndex;
+	void commandHandler()
+	{
+		MEMCMND *complexData;
+
+		complexData = (MEMCMND *)getData();
+		cout << "Command " << complexData->oper
+			 << " received " << complexData->data[0] << endl;
+		TestMemData.code = 1;
+		TestMemData.data[0] = 123;
+		TestMemData.data[1] = 456;
+		TestMem[itsIndex]->updateService();
+	}
+public :
+	RecvCommandMem(char *name, int index) : DimCommand(name,"C:1;C"),itsIndex(index) {};
+};
+*/
+
+class RpcService : public DimRpc
+{
+	int val;
+
+	void rpcHandler()
+	{
+		val = getInt();
+		val++;
+cout << "Received " << val -1 << " Answering " << val << endl;
+		setData(val);
+	}
+public:
+	RpcService(const char *name): DimRpc(name,"I","I") {val = 0;};
+};
+
+int main()
+{
+	COMPLEXDATA complexData;
+	COMPLEXDATA1 cData;
+	float simpleData;
+
+	int index = 0;
+	complexData.bitset = 0x1;
+	complexData.boolval = 1;
+	complexData.intval = index;
+	complexData.floatval = (float)3.4;
+	strcpy(complexData.stringval,"IDLE");
+
+
+	cData.farr[0] = (float)1.2; 
+	cData.farr[1] = (float)2.2; 
+	cData.farr[2] = (float)3.2;
+	cData.farr[3] = 0;
+	cData.farr[4] = 0;
+	cData.farr[5] = 0;
+	cData.farr[6] = 0;
+	cData.farr[7] = 0;
+	cData.farr[8] = 0;
+	cData.farr[9] = 0;
+	cData.intval = 123;
+	cData.iarr[0] = 12; 
+	cData.iarr[1] = 13; 
+	cData.iarr[2] = 14;
+	cData.intval1 = 456;
+	strcpy(cData.str,"hello");
+
+	DimService cTestService("COMPLEX_SERVICE_TEST","F:10;I:1;I:3;C:20;I:1",
+		(void *)&cData, sizeof(cData));
+
+	DimService complexService("COMPLEX_SERVICE","I:1;C:1;I:1;F:1;C",
+		(void *)&complexData, sizeof(complexData));
+
+	simpleData = (float)1.23;
+
+	DimService simpleService("SIMPLE_SERVICE", simpleData);
+	simpleService.setQuality(1);
+
+	RecvCommand recvCommand("SIMPLE_COMMAND");
+	RecvCommandComplex recvCommandComplex("COMPLEX_COMMAND");
+/*
+	{
+	char tstr[128];
+	int i;
+	RecvCommandMem *rmem;
+//	TestMem = new DimService("TEST_MEM", "I:1;F", (void *)&TestMemData, sizeof(TestMemData)); 
+//	RecvCommandMem recvCommandMem("TEST_MEM_CMND");
+
+	for(i = 1; i <= 1000; i++)
+	{
+		sprintf(tstr,"TEST_MEM%04d",i);
+		TestMem[i] = new DimService(tstr, "I:1;F", (void *)&TestMemData, sizeof(TestMemData)); 
+		sprintf(tstr,"TEST_MEM_CMND%04d",i);
+		rmem = new RecvCommandMem(tstr, i);
+	}
+	}
+*/
+	RpcService rpc("RPC");
+
+	DimServer::start("PVSS_DIM_TEST");
+
+	while(1)
+	{
+		sleep(5);
+		
+		if( recvCommand.isReset() )
+		{
+			
+			index = 0;
+			complexData.bitset = 0x1;
+			complexData.boolval = 1;
+			complexData.intval = index;
+			complexData.floatval = (float)3.4;
+			strcpy(complexData.stringval,"IDLE");
+			simpleData = (float)1.23;
+			recvCommand.clearReset();
+		}
+		else
+		{
+			index++;
+			complexData.bitset <<= 1;
+			complexData.boolval = index;
+			complexData.intval = index;
+			complexData.floatval = index * (float)1.1;
+			sprintf(complexData.stringval,"State %d", index);
+			simpleData += (float)1.1;
+		}
+		
+		complexService.updateService();
+
+//		simpleService.setQuality(complexData.bitset);
+/*
+		{
+			int secs;
+			time_t tsecs;
+
+			tsecs = time((time_t)NULL);
+			secs = (int)tsecs;
+			secs -=60;
+			simpleService.setTimestamp(secs, 123);
+			simpleService.setQuality(index);
+			tsecs = (time_t)secs;
+			cout << "quality "<< index << " time "<< ctime(&tsecs) << endl;
+		}
+*/
+		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+
+		if((int)strlen(cData.str) < 16)
+			strcat(cData.str," abc");
+		cTestService.updateService();
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/rpc_client.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/rpc_client.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/rpc_client.cxx	(revision 18732)
@@ -0,0 +1,125 @@
+#include <dic.hxx>
+#include <iostream>
+using namespace std;
+#include <stdio.h>
+
+class Rpc : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		dim_print_date_time();
+		cout << "Callback RPC Received : " << getInt() << endl;
+	}
+	Rpc(const char *name) :	DimRpcInfo(name, 1, -1) {};
+};
+
+typedef struct tst{
+	char str1[16];
+	int ints[5];
+	char str2[18];
+	float floats[4];
+	int int1;
+	float floats1[16];
+} MyStruct;
+
+class RpcStruct : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		MyStruct *val;
+		val = (MyStruct *)getData();
+		cout << "Callback RPC Received : " << endl;
+		cout << val->str1 << " " << val->str2 << " " << val->int1 << endl;
+	}
+	RpcStruct(const char *name) :	DimRpcInfo(name, (char *)"dead") {};
+};
+
+void do_work(void *tag)
+{
+	DimRpcInfo *myRpc;
+//	Rpc *myRpc;
+	char name[64];
+	int out, in;
+	
+	sprintf(name,"TESTRPC%ld/INT",(dim_long)tag);
+	myRpc = new DimRpcInfo(name, 10, -1);
+//	myRpc = new Rpc(name);
+
+	out = 1;
+	while(1)
+	{
+		sleep(5);
+//		cout << "RPC Sent : " << out << endl;
+		myRpc->setData(out);
+		in = myRpc->getInt();
+dim_lock();
+dim_print_date_time();
+cout << "Instance "<<(dim_long)tag<<" sent "<<out<< " got "<<in <<endl;
+dim_unlock();
+		out++;
+	}
+}
+
+void do_workCB()
+{
+//	DimRpcInfo *myRpc;
+	Rpc *myRpc;
+	char name[64];
+	int out;
+	
+	sprintf(name,"TESTRPC/INT");
+	myRpc = new Rpc(name);
+//	myRpc = new Rpc(name);
+
+	out = 1;
+	while(1)
+	{
+		dim_print_date_time();
+		cout << "RPC Sent : " << out << endl;
+		myRpc->setData(out);
+		out++;
+		sleep(5);
+	}
+}
+
+int main()
+{
+	int i;
+
+	dim_init();
+//	DimClient::setNoDataCopy();
+
+	for(i = 0; i < 1; i++)
+	{
+		dim_start_thread(do_work,(void *)i);
+	}
+//	do_workCB();
+	while(1)
+		pause();
+	/*
+	int rpcValue = 0;
+//	DimRpcInfo rpc("TESTRPC/INT",-1);
+	Rpc rpcCB("TESTRPC/INT");
+	RpcStruct rpcStruct("TESTRPC/STRUCT");
+	MyStruct myStruct;
+
+	strcpy(myStruct.str1,"hello");
+	strcpy(myStruct.str2,"world");
+	myStruct.int1 = 1;
+	while(1)
+	{
+		dim_print_date_time();
+		cout << "Sending " << rpcValue << endl; 
+		rpcCB.setData(rpcValue);
+		rpcValue++;
+//		sleep(5);
+		rpcStruct.setData(&myStruct, sizeof(myStruct));
+		myStruct.int1++;
+//		rpc.setData(rpcValue);
+//		rpcValue = rpc.getInt();
+//		cout << "RPC Received : " << rpcValue << endl;
+		sleep(10);
+	}
+	return 0;
+	*/
+}
Index: branches/FACT++_part_filenames/dim/src/examples/rpc_server.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/rpc_server.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/rpc_server.cxx	(revision 18732)
@@ -0,0 +1,100 @@
+#include <dis.hxx>
+#include <dic.hxx>
+#include <iostream>
+using namespace std;
+#include <stdio.h>
+
+class RpcInt : public DimRpc
+{
+	int val;
+
+	void rpcHandler()
+	{
+		val = getInt();
+		dim_print_date_time();
+		printf("Got RPC %d\n", val);
+		val++;
+//		usleep(700000);
+		dim_print_date_time();
+		printf("Answering RPC %d\n", val);
+		setData(val);
+	}
+public:
+	RpcInt(const char *name): DimRpc(name,"I","I") {val = 0;};
+};
+
+typedef struct tst{
+	char str1[16];
+	int ints[5];
+	char str2[18];
+	float floats[4];
+	int int1;
+	float floats1[16];
+} MyStruct;
+
+typedef struct jeffIn{
+	char c1;
+	char c2;
+	char c3;
+	char str[3000];
+}JeffIn;
+
+typedef struct jeffOut{
+	int i1;
+	char c1;
+	char str[3000];
+}JeffOut;
+
+class RpcStruct : public DimRpc
+{
+	MyStruct *val;
+
+	void rpcHandler()
+	{
+		val = (MyStruct *)getData();
+		val->int1++;
+		setData(val, sizeof(MyStruct));
+	}
+public:
+	RpcStruct(const char *name): DimRpc(name,"C:16;I:5;C:18;F:4;I:1;F:16",
+		"C:16;I:5;C:18;F:4;I:1;F:16") {val = 0;};
+};
+
+class JeffRpcStruct : public DimRpc
+{
+	JeffIn *pin;
+	JeffOut pout;
+	int counter;
+
+	void rpcHandler()
+	{
+		pin = (JeffIn *)getData();
+		pout.i1 = counter++;
+		pout.c1 = pin->c1;
+		strcpy(pout.str,pin->str);
+		setData(&pout, (int)strlen(pout.str)+1+5);
+	}
+public:
+	JeffRpcStruct(const char *name): DimRpc(name,"C:1;C:1;C:1;C",
+		"I:1;C:1;C") {counter = 0;};
+};
+
+int main()
+{
+	RpcInt myRpcInt("TESTRPC/INT");
+	RpcInt *myRpcP;
+	RpcStruct myRpcStruct("TESTRPC/STRUCT");
+	JeffRpcStruct jeffRpcStruct("TESTJEFF");
+	int i;
+	char name[64];
+
+	for(i = 0; i < 10; i++)
+	{
+		sprintf(name,"TESTRPC%d/INT",i);
+		myRpcP = new RpcInt(name);
+	}
+	DimServer::start("TESTRPC");
+	while(1)
+		pause();
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/rshServer.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/rshServer.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/rshServer.cxx	(revision 18732)
@@ -0,0 +1,176 @@
+#include <dis.hxx>
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifndef WIN32
+#include <sys/wait.h>
+#include <unistd.h>
+#else
+#include <process.h>
+#endif
+#include <ctype.h>
+
+#ifndef WIN32
+char outfile[] = "/tmp/dim_rsh_server.dat";
+#else
+char outfile[] = "c:\\dim_rch_server.dat";
+#endif
+
+int my_system(char *);
+
+class Cmd: public DimCommand
+{
+	char *result;
+	DimService *resultSrvc;
+
+	void commandHandler();
+public:
+	Cmd(char *cmdName, char *resultName): DimCommand(cmdName, "C") 
+	{
+		result = new char[10];
+		strcpy(result,"empty");
+		resultSrvc = new DimService(resultName, "C", result, strlen(result)+1);
+	};
+};
+
+void Cmd::commandHandler()
+{
+	char *str, *client;
+	char commandString[256];
+	struct stat buf;
+	FILE *fd;
+	int ret, size, index, sz;
+
+	str = getString();
+
+	client = DimServer::getClientName();
+
+	cout << "Received " << str << " from " << client << endl;
+	unlink(outfile);
+	strcpy(commandString,str);
+#ifndef WIN32
+	strcat(commandString," >& ");
+	strcat(commandString,outfile);
+	strcat(commandString,"< /dev/null");
+#else
+	strcat(commandString," > ");
+	strcat(commandString,outfile);
+	strcat(commandString," 2>&1 ");
+#endif
+	my_system(commandString);
+
+	delete result;
+	ret = stat(outfile, &buf);
+	if(ret == -1)
+    {
+		result = new char[20];
+		strcpy(result,"File does not exist");
+    }
+	else
+    {
+		size = buf.st_size;
+		result = new char[size +1];
+		fd = fopen(outfile, "r");
+		index = 0;
+		while(!feof(fd) && size)
+		{
+			sz = fread(&result[index], 1, 512, fd);
+			size -= sz;
+			index += sz;
+			if(!sz)
+			break;
+		}
+		fclose(fd);
+		result[index] = '\0';
+	}
+	resultSrvc->updateService(result, strlen(result)+1);
+}
+
+#ifndef WIN32
+
+extern char **environ;
+
+int my_system (char *command)
+{
+    int pid, status, ret, n = 0;
+
+    if (command == 0)
+        return 1;
+    pid = fork();
+    if (pid == -1)
+        return -1;
+    if (pid == 0) {
+        char *argv[4];
+        argv[0] = "sh";
+        argv[1] = "-c";
+        argv[2] = command;
+        argv[3] = 0;
+        execve("/bin/sh", argv, environ);
+        exit(127);
+    }
+    do {
+      ret = waitpid(pid, &status,WNOHANG);
+      if(ret == -1)
+	break;
+      usleep(100000);
+      n++;
+    } while(n < 1200);
+    return status;
+}
+
+#else
+int my_system (char *command)
+{
+	return system(command);
+}
+
+#endif
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) {
+    	return(0);
+	}
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) {
+
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+#endif
+
+void main(int argc, char **argv)
+{
+	char host[64], cmd_name[128], result_name[128];
+	Cmd *cmd;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	gethostname(host, 64);
+
+//Setup command reception and result publishing
+	sprintf(cmd_name,"%s/ExecuteCmd",host);
+	sprintf(result_name,"%s/CmdResult", host);
+	cmd = new Cmd(cmd_name, result_name);
+
+	sprintf(cmd_name,"%s_server",host);
+	DimServer::start(cmd_name);
+	while(1)
+    {
+		pause();
+    }
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_Browser.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_Browser.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_Browser.cxx	(revision 18732)
@@ -0,0 +1,193 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimClient::addErrorHandler(this);}
+};
+
+class StrService : public DimInfo
+{
+
+	void infoHandler()
+	{
+		int index = 0;
+		char **services;
+//		cout << "Dns Node = " << DimClient::getDnsNode() << endl;
+		cout << "Received STRVAL : " << getString() << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	StrService() : DimInfo("TEST/STRVAL","not available") {};
+};
+
+
+void **AllServices;
+int *AllServiceStates;
+int NServices;
+int NBytes;
+
+class MyTimer: public DimTimer
+{
+  void timerHandler()
+    {
+      int i;
+      int missing = 0;
+      for(i = 0; i < NServices; i++)
+      {
+	if(AllServiceStates[i] == -2)
+	  {
+	    missing++;
+	  }
+      }
+      dim_print_date_time();
+      printf("Missing %d, NBytes = %d\n", missing, NBytes);
+      if(missing)
+	start(1);
+    }
+ public:
+  MyTimer(): DimTimer(2){};
+};
+
+class TestGetService: public DimInfo
+{
+  void infoHandler()
+  {
+    int i, index, size, done = 1;
+    char *dataptr;
+    
+    size = getSize();
+    NBytes += size;
+    dataptr = new char[size];
+    memcpy(dataptr, getData(), size);
+    for(i = 0; i < NServices; i++)
+      {
+	if(AllServices[i] == this)
+	  {
+	    index = i;
+	    break;
+	  }
+      }
+    AllServiceStates[index] = getInt();
+    //    printf("Got %s, %d, %d\n", getName(), index, AllServiceStates[index]);
+    for(i = 0; i < NServices; i++)
+      {
+	if(AllServiceStates[i] == -2)
+	  {
+	    done = 0;
+	    break;
+	  }
+      }
+    if(done)
+      {
+	dim_print_date_time();
+	printf("All Services Received\n");
+      }
+  }
+public :
+  TestGetService(char *name): DimInfo(name, -1){};
+};
+
+
+int main(int argc, char **argv)
+{
+		
+	ErrorHandler errHandler;
+//	StrService servstr;
+	char *server, *ptr, *ptr1;
+	DimBrowser br;
+	int type, n, index, i, ret;
+	MyTimer *myTimer;
+	char findStr[132];
+
+	ret = 0;
+	strcpy(findStr,"*");
+	if(argc > 1)
+	{
+		if(!strcmp(argv[1],"-f"))
+		{
+		  if(argc > 2)
+		    strcpy(findStr,argv[2]);
+		  else 
+		    ret = 1;
+		}
+		else
+		  ret = 1;
+		if(ret)
+		{
+			printf("Parameters: [-f <search string>]\n");
+			exit(0);
+		}
+	}
+//	DimClient::addErrorHandler(errHandler);
+dim_print_date_time();
+printf("Asking %s\n", findStr);
+        n = br.getServices(findStr);
+dim_print_date_time();
+	cout << "found " << n << " services" << endl; 
+	
+	AllServices = (void **) new TestGetService*[n];
+	AllServiceStates = new int[n];
+	NServices = n;
+	NBytes = 0;
+	index = 0;
+	for(i = 0; i < n; i++)
+	  AllServiceStates[i] = 0;
+	while((type = br.getNextService(ptr, ptr1))!= 0)
+	{
+	  
+	  //		cout << "type = " << type << " - " << ptr << " " << ptr1 << endl;
+	  AllServiceStates[index] = -2;
+	  AllServices[index] = new TestGetService(ptr);
+	  index++;
+	  //	  if(index >= 1000)
+	  //	    break;
+	}
+	myTimer = new MyTimer();
+	dim_print_date_time();
+	printf("Got Service Names\n");
+	/*
+	br.getServers();
+	while(br.getNextServer(server, ptr1))
+	{
+		cout << server << " @ " << ptr1 << endl;
+	}
+
+	br.getServerClients("DIS_DNS");
+	while(br.getNextServerClient(ptr, ptr1))
+	{
+		cout << ptr << " @ " << ptr1 << endl;
+	}
+	DimInfo servint("TEST/INTVAL",-1); 
+	*/
+	while(1)
+	{
+		sleep(10);
+		/*
+		cout << "Current INTVAL : " << servint.getInt() << endl;
+		DimClient::sendCommand("TEST/CMND","UPDATE_STRVAL");
+		*/
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_big_client.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_big_client.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_big_client.c	(revision 18732)
@@ -0,0 +1,91 @@
+#include <dic.h>
+
+#define MAX_SERVICES 40000
+/*
+int Data[MAX_SERVICES];
+int Recvd[MAX_SERVICES];
+*/
+int no_link = -1;
+
+void rout(tag, buff, size)
+int *tag, *size;
+int *buff;     
+{
+static int bad = 0;
+int i;
+static int n_recvd = 0;
+
+	if(!bad)
+	{
+		if (*buff == no_link)
+		{
+/*
+			for(i = 0; i < MAX_SERVICES; i++)
+				Recvd[i] = 0;
+*/
+			bad = 1;
+			n_recvd = 0;
+		}
+	}
+	if(bad)
+	{
+		if (*buff != no_link)
+		{
+/*
+			for(i = 0; i < MAX_SERVICES; i++)
+				Recvd[i] = 0;
+*/
+			bad = 0;
+			n_recvd = 0;
+		}
+	}
+/*
+	if(bad)
+	{
+		Recvd[*tag] = *buff;
+	}
+	else
+	{
+		Recvd[*tag] = (*buff)+1;
+	}
+*/
+	n_recvd++;
+/*
+	for(i = 0; i <= MAX_SERVICES; i++)
+	{
+		if(Recvd[i] != 0)
+			n_recvd++;
+	}
+*/
+/*
+  if(!((*tag) % 1000))
+*/
+
+	if(!(n_recvd % 1000))
+		printf("Received n = %d, %d = %d\n",n_recvd, *tag, *buff);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char name[64];
+	int id = 123;
+
+	dic_set_dns_node("lxplus050.cern.ch");
+
+/*	
+	dic_set_debug_on();
+*/	
+	for(i = 0; i< MAX_SERVICES; i++)
+	{
+		sprintf(name,"%s/Service_%d",argv[2],i);
+		dic_info_service( name, TIMED, 0, 0, 0,
+				  rout, i,&no_link, sizeof(no_link) );
+	}
+	while(1)
+	  {
+	    pause();
+	  }
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_big_server.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_big_server.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_big_server.c	(revision 18732)
@@ -0,0 +1,29 @@
+#include <dis.h>
+
+#define MAX_SERVICES 40000
+int Data[MAX_SERVICES];
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char name[64];
+	int ids[MAX_SERVICES];
+/*
+	dic_set_dns_node("lxplus059.cern.ch");
+*/
+  for(i = 0; i< MAX_SERVICES; i++)
+	{
+	  Data[i] = i;
+	  sprintf(name,"%s/Service_%d",argv[1],i);
+	  ids[i] = dis_add_service( name, "I", &Data[i], 
+			sizeof(Data[i]), (void *)0, 0 );
+	}
+	dis_start_serving( argv[1] );
+	while(1)
+	  pause();
+}
+
+
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_client.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client.c	(revision 18732)
@@ -0,0 +1,169 @@
+
+#include <dic.h>
+#include <time.h>
+#include <string.h>
+#include <stdio.h>
+
+char str[80];
+char str_res[10][80];
+char client_str[80];
+int no_link = -1;
+float no_link_float = -1.0;
+char buff[80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+    char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+void big_rout( int *tag, int *buf, int *size )
+{
+
+	if(size){}
+	printf("Received %d for TestMem_%d\n", *buf, *tag);
+}
+
+
+void got_servers( int *tag, char *list, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("%s",list);
+}
+
+void got_services( int *tag, char *list, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("%s",list);
+}
+/*
+void rout_list( int *tag, char *buf, int *size )
+{
+		printf("Received list %d: %s\n",*size, buf);
+}
+*/
+
+void version_rout( int *tag, int *buf, int *size)
+{
+	if(tag){}
+	printf("Received VERSION %lx, %d\n", (dim_long)buf, *size);
+}
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+/*
+	char *format;
+	format = dic_get_format(0);
+	printf("Received format = %s %08x, %d\n",format, format, *size);
+*/
+	if(*tag == 1100)
+	{
+		printf("Received ONCE_ONLY : %s\n",buff);
+		return;
+	}
+	if(*tag == 1200)
+	{
+		char node[128], str[256];
+		int secs, millis;
+		time_t tsecs;
+
+		dic_get_dns_node(node);
+		printf("DNS node = %s\n",node);
+		printf("size = %d\n",*size);
+		memcpy(&t, buf, (size_t)*size);
+		printf("t.i = %d, t.d = %2.2f, t.s = %d, t.c = %c, t.f = %2.2f, t.str = %s\n",
+			t.i,t.d,t.s,t.c,t.f,t.str);
+		dic_get_timestamp(0, &secs, &millis);
+		tsecs = secs;
+		my_ctime(&tsecs, str, 128);
+		str[(int)strlen(str)-1] = '\0';
+		printf("timestamp = %s.%d\n",str,millis);
+
+		return;
+	}
+	else
+		printf("%s Received %s for Service%03d\n",client_str,buf,*tag);
+
+/*
+	if(conn_id = dic_get_server(server))
+		printf("received from %d, %s\n",conn_id, server);
+*/
+
+}
+
+int main(int argc, char **argv)
+{
+	int i;
+	char aux[80];
+	int id = 123;
+
+/*
+	dic_set_debug_on();
+*/
+/*
+	dic_set_dns_node("pclhcb99.cern.ch");
+*/
+	if(argc){}
+	sprintf(str,"%s/SET_EXIT_HANDLER",argv[2]);
+	dic_cmnd_service(str, &id, 4);
+	dic_get_id(aux);
+	printf("%s\n",aux);
+	strcpy(client_str,argv[1]);
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str,"%s/Service_%03d",argv[2],i);
+		dic_info_service( str, TIMED, 10, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[2]);
+	dic_info_service_stamped( aux, TIMED, 5, 0, 0, rout, 1200,
+			  &no_link, 4 );
+
+	sprintf(str,"%s/VERSION_NUMBER",argv[2]);
+	dic_info_service( str, MONITORED, 0, 0, 0, version_rout, 0,
+			  NULL, 0 );
+/*
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[2], i);
+		dic_info_service( aux, MONITORED, 0, 0, 0, big_rout, i,
+			  &no_link, 4 );
+	}
+*/
+/*
+	sprintf(aux,"DIS_DNS/SERVER_LIST");
+	dic_info_service( aux, MONITORED, 0, 0, 0, rout_list, 0,
+			  "DEAD", 5 );
+	sprintf(aux,"%s/SERVICE_LIST",argv[2]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, rout_list, 0,
+			  "DEAD", 5 );
+*/
+/*
+	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED, 0, 0, 0, got_servers, 0,
+		"not there", 10);
+	dic_info_service("xx/SERVICE_LIST",MONITORED, 0, 0, 0, got_services, 0,
+		"not there", 10);
+*/
+	sprintf(aux,"%s/TEST_CMD",argv[2]);
+	while(1)
+	{
+		sleep(10);
+		printf("Sending Command, size = %d, i = %d\n",(int)sizeof(t), t.i);
+		dic_cmnd_service(aux,&t,(int)sizeof(t));
+	}
+	return 1;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_client.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client.cxx	(revision 18732)
@@ -0,0 +1,95 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimClient::addErrorHandler(this);}
+};
+
+class StrService : public DimInfo
+{
+
+	void infoHandler()
+	{
+		int index = 0;
+		char **services;
+		char *format;
+//		cout << "Dns Node = " << DimClient::getDnsNode() << endl;
+		format = getFormat();
+		cout << "Received STRVAL : " << getString() << "format = " << format << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+		int inCallback = DimClient::inCallback();
+		cout << "infoHandler: In callback "<< inCallback << endl; 
+	}
+public :
+	StrService() : DimInfo("TEST/STRVAL",(char *)"not available") {};
+};
+
+int main()
+{
+		
+	ErrorHandler errHandler;
+	StrService servstr;
+	char *server, *ptr, *ptr1;
+	DimBrowser br;
+	int type, n, pid;
+
+//	DimClient::addErrorHandler(errHandler);
+	
+	n = br.getServices("*");
+	cout << "found " << n << " services" << endl; 
+	
+	while((type = br.getNextService(ptr, ptr1))!= 0)
+	{
+		cout << "type = " << type << " - " << ptr << " " << ptr1 << endl;
+	}
+	
+	br.getServers();
+	while(br.getNextServer(server, ptr1, pid))
+	{
+		cout << server << " @ " << ptr1 << ", pid = " << pid << endl;
+	}
+
+	br.getServerClients("DIS_DNS");
+	while(br.getNextServerClient(ptr, ptr1))
+	{
+		cout << ptr << " @ " << ptr1 << endl;
+	}
+
+	DimInfo servint("TEST/INTVAL",-1); 
+	
+	while(1)
+	{
+		sleep(10);
+		
+		cout << "Current INTVAL : " << servint.getInt() << endl;
+		DimClient::sendCommand("TEST/CMND","UPDATE_STRVAL");
+		int inCallback = DimClient::inCallback();
+		cout << "main: In callback "<< inCallback << endl;
+
+		DimClient::addErrorHandler(0);
+	}
+	return 0;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_client1.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client1.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client1.c	(revision 18732)
@@ -0,0 +1,43 @@
+#include <dic.h>
+#include <time.h>
+#include <string.h>
+#include <stdio.h>
+
+int Data[4000];
+int no_link = -1;
+
+void rout( tag, buf, size )
+int *buf;
+int *tag, *size;
+{
+
+	printf("Received beam%d Data : %d\n",*tag, buf[0]);
+}
+
+int main(int argc, char **argv)
+{
+	int i;
+	char aux[80];
+	int id = 123;
+
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	
+	while(1)
+	{
+		usleep(1000);
+		dic_cmnd_service("Beam1/Cmd","Update",7);
+		dic_cmnd_service("Beam2/Cmd","Update",7);
+	}
+	return 1;
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_client_ccpc.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client_ccpc.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client_ccpc.c	(revision 18732)
@@ -0,0 +1,58 @@
+#include <dic.h>
+
+int no_link = -1;
+int RegisterSet;
+int RegisterValue;
+
+void register_callback( tag, data, size )
+int *tag, *data, *size;
+{
+	RegisterValue = *data;
+	RegisterSet = *tag;
+/* In linux this is not necessary */
+#ifdef WIN32
+	dim_wake_up();
+#endif
+}
+
+int set_register_wait(index, value)
+int index, value;
+{
+	int pars[2];
+		
+	pars[0] = index;
+	pars[1] = value;
+	RegisterSet = -1;
+	dic_cmnd_service("SET_REGISTER",pars,sizeof(pars));
+	while(RegisterSet == -1)
+	{
+		dim_wait();
+	}
+	if(RegisterSet == index)
+		return(RegisterValue);
+	return(-1);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, index = 0, value;
+	char aux[80];
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(aux,"Register%03d",i);
+		dic_info_service( aux, MONIT_ONLY, 0, 0, 0, 
+			register_callback, i, &no_link, sizeof(int) );
+	}
+
+	while(1)
+	{
+		value = set_register_wait(index%10, index);
+		printf("Register %d: wrote %d, readback = %d\n", 
+			index%10, index, value);
+		index ++;
+		sleep(1);
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_client_many.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client_many.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client_many.c	(revision 18732)
@@ -0,0 +1,142 @@
+
+#include <dic.h>
+#include <time.h>
+
+char str[80];
+char str_res[10][80];
+char client_str[80];
+int no_link = -1;
+float no_link_float = -1.0;
+char buff[80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+    char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+/*
+void big_rout( tag, buf, size )
+int *buf;
+int *tag, *size;
+{
+
+	printf("Received %d for TestMem\n", *buf);
+}
+*/
+void rout_many( tag, buf, size )
+float *buf;
+int *tag, *size;
+{
+	if(*tag == 50000)
+	{
+		dim_print_date_time();
+		printf("Received %f for service %d\n", *buf, *tag);
+	}
+}
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	int conn_id;
+	char server[128];
+
+	if(*tag == 1100)
+	{
+		printf("Received ONCE_ONLY : %s\n",buff);
+		return;
+	}
+	if(*tag == 1200)
+	{
+		char node[128], str[256];
+		int secs, millis;
+		time_t tsecs;
+
+		dic_get_dns_node(node);
+		printf("DNS node = %s\n",node);
+		printf("size = %d\n",*size);
+		memcpy(&t, buf, *size);
+		printf("t.i = %d, t.d = %2.2f, t.s = %d, t.c = %c, t.f = %2.2f, t.str = %s\n",
+			t.i,t.d,t.s,t.c,t.f,t.str);
+		dic_get_timestamp(0, &secs, &millis);
+		tsecs = secs;
+		my_ctime(&tsecs, str, 128);
+		str[strlen(str)-1] = '\0';
+		printf("timestamp = %s.%d\n",str,millis);
+
+		return;
+	}
+	else
+		printf("%s Received %s for Service%03d\n",client_str,buf, *tag);
+
+/*
+	if(conn_id = dic_get_server(server))
+		printf("received from %d, %s\n",conn_id, server);
+*/
+
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, *ptr;
+	char aux[80];
+	int id = 123;
+
+/*
+	dic_set_debug_on();
+*/
+/*
+	dic_set_dns_node("pclhcb99.cern.ch");
+*/
+
+	sprintf(str,"%s/SET_EXIT_HANDLER",argv[2]);
+	dic_cmnd_service(str, &id, 4);
+	dic_get_id(aux);
+	printf("%s\n",aux);
+	strcpy(client_str,argv[1]);
+/*
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str,"%s/Service_%03d",argv[2],i);
+		dic_info_service( str, TIMED, 10, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[2]);
+	dic_info_service_stamped( aux, TIMED, 5, 0, 0, rout, 1200,
+			  &no_link, 4 );
+*/
+/*	
+	sprintf(aux,"%s/TestMem",argv[2]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, big_rout, 0,
+			  &no_link, 4 );
+*/
+
+	for(i = 0; i< 100000; i++)
+	{
+		sprintf(aux,"%s/ServiceMany%05d",argv[2],i);
+		dic_info_service( aux, MONITORED, 60, 0, 0, rout_many, i,
+			  &no_link_float, 4 );
+	}
+
+	sprintf(aux,"%s/TEST_CMD",argv[2]);
+	while(1)
+	{
+		int index = 0;
+		sleep(10);
+/*
+		printf("Sending Command, size = %d, i = %d\n",sizeof(t), t.i);
+		dic_cmnd_service(aux,&t,sizeof(t));
+*/
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_client_slac.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_client_slac.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_client_slac.c	(revision 18732)
@@ -0,0 +1,32 @@
+#include <dic.h>
+#include <dis.h>
+#include <time.h>
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	printf("%s Received for Server %d\n", buf, *tag);
+}
+
+main()
+{
+	char str[80], aux[80];
+	int i;
+
+	for(i = 0; i< 20; i++)
+	{
+		sprintf(str,"TEST_SLAC/SRV%d",i);
+		dic_info_service( str, TIMED, 60, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	for(i = 0; i< 20; i++)
+	{
+		sprintf(aux,"TEST_SLAC/CLT%d",i);
+		dis_add_service(aux, "C", aux, strlen(aux)+1, (void *)0, 0);
+	}
+	sprintf(aux,"TEST_SLAC/CLT");
+	dis_start_serving(aux);
+	while(1)
+		pause();
+}
Index: branches/FACT++_part_filenames/dim/src/examples/test_serve.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_serve.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_serve.cxx	(revision 18732)
@@ -0,0 +1,172 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+	float farr[4];
+	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+	farr[0] = 1.2;
+	farr[1] = 2.3;
+	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server.c	(revision 18732)
@@ -0,0 +1,236 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+
+int big_buff[1024];
+
+
+void cmnd_rout(int *tag, TT *buf, int *size)
+{
+
+	if(tag){}
+	dim_print_date_time();
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       (int)sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(int *tag)
+{
+	char name[84];
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+void exit_cmnd(int *code)
+{
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+}
+
+int NewData;
+int NewIds[11];
+
+int more_ids[1024];
+int curr_more_index = 0;
+char more_str[1024][80];
+
+/*
+int atlas_ids[210];
+float atlas_arr[10];
+*/
+int main(int argc, char **argv)
+{
+	int i, id/*, big_ids[20]*/;
+	char aux[80];
+	char name[84]/*, name1[132]*/;
+/*
+	int on = 0;
+*/
+	dim_long dnsid = 0;
+	char extra_dns[128];
+	int new_dns = 0;
+	int index = 0;
+/*
+	dim_set_write_timeout(1);
+*/
+/*
+	int buf_sz, buf_sz1;
+*/
+/*
+dis_set_debug_on();
+*/
+/*
+	int status;
+	regex_t re;
+
+	if(regcomp(&re, "abc*",REG_EXTENDED|REG_NOSUB) != 0)
+		printf("regcomp error\n");
+	status = regexec(&re,"abcdef", (size_t)0, NULL, 0);
+	regfree(&re);
+	printf("result = %d\n", status); 
+*/
+	if(argc){}
+	new_dns = dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+	if(new_dns)
+		dnsid = dis_add_dns(extra_dns,0);
+	if(dnsid){}
+/*
+	buf_sz = dim_get_write_buffer_size();
+	dim_set_write_buffer_size(10000000);
+	buf_sz1 = dim_get_write_buffer_size();
+printf("socket buffer size = %d, after = %d\n",buf_sz, buf_sz1);
+*/
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], (int)strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 456;
+	t.k = 789;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = (float)4.56;
+	strcpy(t.str,"hello world");
+
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+	if(id){}
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+
+/*
+	big_buff[0] = 1;
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[1], i);
+		big_ids[i] = dis_add_service( aux, "I", big_buff, 1024*sizeof(int), 
+			(void *)0, 0 );
+	}
+*/
+
+/*
+	for(i = 1; i <= 200; i++)
+	{
+		sprintf(aux,"%s/ATLAS_Service%d",argv[1],i);
+		atlas_ids[i] = dis_add_service( aux, "F", atlas_arr, 10*sizeof(float), 
+			(void *)0, 0 );
+	}
+*/
+	dis_start_serving( argv[1] );
+
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+/*
+	for(i = 0; i < 5; i++)
+	{
+		sleep(10);
+
+	}
+	dis_stop_serving();
+	sleep(59);
+*/
+	while(1)
+	{
+		index++;
+/*
+		for(i = 0; i < 20; i++)
+		{
+			index++;
+			big_buff[0] = index;
+			dis_update_service(big_ids[i]);
+		}
+		sleep(1);
+*/
+/*
+		pause();
+		*/
+		sleep(10);
+/*
+		dis_update_service(id);
+*/
+/*		
+		for(i = 1; i <= 200; i++)
+		{
+			dis_update_service(atlas_ids[i]);
+		}
+*/
+/*
+		if(curr_more_index < 1000)
+		{
+			for(i = 1; i <= 10; i++)
+			{
+				sprintf(more_str[curr_more_index],"%s/More_Service_%03d",argv[1],curr_more_index);
+				more_ids[curr_more_index] = dis_add_service( more_str[curr_more_index], "C", 
+					more_str[curr_more_index], (int)strlen(more_str[curr_more_index])+1, 
+					(void *)0, 0 );
+printf("Adding service %s\n",more_str[curr_more_index]);
+				curr_more_index++;
+				dis_start_serving(argv[1]);
+				dis_start_serving(argv[1]);
+			}
+		}
+*/
+		/*
+		if(new_dns)
+		{
+			if(!on)
+			{
+printf("Connecting New DNS \n");
+				for(i = 0; i < 10; i++)
+				{
+					sprintf(name1,"NewService%d",i);
+					NewIds[i] = dis_add_service_dns(dnsid, name1, "i", &NewData, sizeof(NewData), 
+						(void *)0, 0 );
+				}
+				NewIds[10] = 0;
+				dis_start_serving_dns(dnsid, "xx_new");
+				on = 1;
+			}
+			else
+			{
+printf("DisConnecting New DNS \n");
+				for(i = 0; i < 10; i++)
+				{
+					dis_remove_service(NewIds[i]);
+				}
+				on = 0;
+			}
+		}
+		*/
+	}
+	return 1;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server.cxx	(revision 18732)
@@ -0,0 +1,233 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL",(char *)"empty") {};
+/*
+	void handleIt()
+	{
+		int index = 0;
+		char **services;
+		dim_print_date_time();
+		cout << "Command " << getString() << " received" << endl;
+		cout << "time: "<<getTimestamp()<<" millies: "<<getTimestampMillisecs()<<endl;
+		servstr.updateService(getString()); 
+	}
+*/
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+	if(abc){}
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+	if(abc){}
+}
+
+DimService *bool_serv[10];
+void add_serv_bool(const bool & boolval)
+{
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	bool_serv[0] = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+	bool_serv[1] = new DimService("TEST/BOOLVAL_CONST1","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+	char *extraDns = 0;
+	DimService *new_servint;
+
+//	DimService *dim = new DimService("test","C");
+//	delete dim;
+
+	DimServer::start("TEST");
+	extraDns = DimUtil::getEnvVar((char *)"EXTRA_DNS_NODE");
+	if(extraDns)
+		newDns = new DimServerDns(extraDns, 0, (char *)"new_TEST");
+
+//	int i, arr[15000];
+//	DimService *servp;
+//	DimCommand *cmndp;
+//	char str[132];
+
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+
+	if(extraDns)
+	{
+		new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+	}
+
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler((char *)"MY_NEW_TEST_SERVICE_WITH_HANDLER");
+	if(testServ){}
+
+	//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+
+//	DimServer::autoStartOff();
+//	DimServer::start("TEST");
+
+//	for(i = 0; i < 15000; i++)
+//	{
+//		arr[i] = i;
+//		sprintf(str,"ServiceManyTest/%05d",i);
+//		servp = new DimService(str,arr[i]);
+//		servp->setQuality(1);
+//		servp->updateService(arr[i]);
+////	DimServer::start("TEST");
+//		sprintf(str,"CommandManyTest/%05d",i);
+//		cmndp = new CmndServMany(str);
+////	DimServer::start("TEST");
+//	}
+
+	while(1)
+	{
+		sleep(5);
+
+//		while(cmdsvr.hasNext())
+//		{
+//			cmdsvr.getNext();
+//			cmdsvr.handleIt();
+//		}
+
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		bool_serv[1]->updateService();
+		
+//		int inCallback = DimServer::inCallback();
+//		cout << "main: In callback "<< inCallback << endl; 
+		servint.updateService();
+		if(extraDns)
+			new_servint->updateService();
+	}
+	return 0;
+}
+
+/*
+int main()
+{
+DimService *servint, *newServint;
+int ival = 0;
+
+DimServer::start("TEST");
+servint = new DimService("TEST/INTVAL",ival);
+sleep(20);
+DimServer::stop();
+sleep(1);
+DimServer::start("TESTOTHER");
+newServint = new DimService("TESTOTHER/INTVAL",ival);
+sleep(20);
+DimServer::stop();
+}
+*/
Index: branches/FACT++_part_filenames/dim/src/examples/test_server1.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server1.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server1.c	(revision 18732)
@@ -0,0 +1,58 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <dis.h>
+
+int Data1[4000];
+int Data2[4000];
+int Id1, Id2;
+
+void cmnd_rout(int *tag, char *buf, int *size)
+{
+	int cid[2];
+	
+	cid[0] = dis_get_conn_id();
+	cid[1] = 0;
+	if(*tag == 1)
+		dis_selective_update_service(Id1, cid);
+	else if(*tag == 2)
+		dis_selective_update_service(Id2, cid);
+}
+
+int main(int argc, char **argv)
+{
+	int i, id, *ptr;
+	char aux[80];
+	char name[84], name1[132];
+	int on = 0;
+	long dnsid = 0;
+	char extra_dns[128];
+	int new_dns = 0;
+/*
+	int buf_sz, buf_sz1;
+*/
+
+dis_set_debug_on();
+
+	i = 0;
+	Data1[0] = i;	
+	Id1 = dis_add_service( "Beam1/Data", "C", Data1, 4000, (void *)0, 0 );
+	dis_add_cmnd("Beam1/Cmd","C",cmnd_rout, 1);
+	Data2[0] = i;	
+	Id2 = dis_add_service( "Beam2/Data", "C", Data2, 4000, (void *)0, 0 );
+	dis_add_cmnd("Beam2/Cmd","C",cmnd_rout, 2);
+
+	dis_start_serving( argv[1] );
+
+	while(1)
+	{
+		usleep(1000);
+		i++;
+		Data1[0] = i;	
+		dis_update_service(Id1);
+		Data2[0] = i;	
+		dis_update_service(Id2);
+	}
+	return 1;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_serverFernando.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_serverFernando.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_serverFernando.cxx	(revision 18732)
@@ -0,0 +1,172 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+	float farr[4];
+	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+	farr[0] = 1.2;
+	farr[1] = 2.3;
+	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server_ccpc.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server_ccpc.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server_ccpc.c	(revision 18732)
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <dis.h>
+
+int registers[10];
+int ids[10];
+
+void set_register(tag, data, size)
+int *tag, *data, *size;
+{
+int index, value;
+
+	index = data[0];
+	value = data[1];
+	printf("Setting register %d to value %d\n", index, value);
+/* here we set the register, read it back and update the service*/
+	registers[index] = value;
+	dis_update_service(ids[index]);
+	
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char aux[80];
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(aux,"Register%03d",i);
+		ids[i] = dis_add_service( aux, "I", &registers[i], sizeof(int), 
+			(void *)0, 0 );
+	}
+
+	dis_add_cmnd("SET_REGISTER","I:2",set_register, 0);
+
+	dis_start_serving( "TEST_REGISTERS" );
+
+	while(1) 
+	{
+		pause();
+	}
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server_many.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server_many.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server_many.c	(revision 18732)
@@ -0,0 +1,161 @@
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+double ServMany[100000];
+int ServManyIds[100000];
+
+TT t;
+/*
+int big_buff[1024];
+*/
+void cmnd_rout(tag, buf, size)
+int *tag, *size;
+TT *buf;
+{
+int i,*ptr;
+
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(tag)
+int *tag;
+{
+	char name[84];
+	char *ptr;
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+void exit_cmnd(code)
+int *code;
+{
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, j, id, *ptr;
+	char aux[80];
+	char name[84], *ptrc;
+	int big_ids[20];
+	int index = 0;
+	char straux[128];
+	void update_services();
+
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 123;
+	t.k = 123;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = 4.56;
+	ptr = (int *)&t;
+	strcpy(t.str,"hello world");
+/*
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+*/
+/*
+	big_buff[0] = 1;
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[1], i);
+		big_ids[i] = dis_add_service( aux, "I", big_buff, 1024*sizeof(int), 
+			(void *)0, 0 );
+	}
+*/
+	for(i = 0; i< 100000; i++)
+	{
+		ServMany[i] = i;
+		sprintf(straux,"%s/ServiceMany%05d",argv[1],i);
+		ServManyIds[i] = dis_add_service( straux, "D", &ServMany[i], sizeof(double), 
+			(void *)0, 0 );
+	}
+	dis_start_serving( argv[1] );
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+	
+	dtq_start_timer(30, update_services, 0);
+	
+	while(1)
+	{
+/*
+		for(i = 0; i < 20; i++)
+		{
+			index++;
+			big_buff[0] = index;
+			dis_update_service(big_ids[i]);
+		}
+		sleep(1);
+*/
+		pause();
+/*
+		sleep(30);
+		update_services();
+*/
+	}
+}
+
+void update_services()
+{
+	int i;
+
+	dtq_start_timer(20, update_services, 0);
+	
+	dim_print_date_time();
+printf("Start updating\n");
+		for(i = 0; i< 100000; i++)
+		{
+			ServMany[i] = ServMany[i]+1;
+			dis_update_service(ServManyIds[i]);
+			if(i == 10000)
+			{
+				int aux;
+				aux = ServMany[i];
+				ServMany[i] = 123;
+				dis_update_service(ServManyIds[i]);
+				ServMany[i] = aux;
+			}
+		}
+dim_print_date_time();
+printf("Stop updating\n");
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server_priorities.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server_priorities.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server_priorities.c	(revision 18732)
@@ -0,0 +1,189 @@
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+void cmnd_rout(tag, buf, size)
+int *tag, *size;
+TT *buf;
+{
+int i,*ptr;
+
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(tag)
+int *tag;
+{
+	char name[84];
+	char *ptr;
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+/*
+#ifdef WIN32
+#include <windows.h>
+#else
+#include <pthread.h>
+#endif
+
+#include <dic.h>
+
+void timr_rout(int tag)
+{
+	int code = 2004;
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+	printf("in timr_rout, thread id = %d\n", id);
+	dic_cmnd_service("taskManager/sendKill", &code, sizeof(int));
+}
+
+void kill_rout(tag, buf, size)
+int *tag, *size;
+int *buf;
+{
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+	printf("Command Kill received = %d\n", *buf);
+	printf("thread id = %d\n", id);
+	dim_set_priority(3, 1);
+}
+*/
+
+void exit_cmnd(code)
+int *code;
+{
+/*
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+*/
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+/*
+	sleep(5);
+	printf("after_sleep, thread id = %d\n", id);
+	dim_set_priority(3, 60);
+	dtq_start_timer(5, timr_rout, 0);
+*/
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, j, id, *ptr;
+	char aux[80];
+	char name[84], *ptrc;
+
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 123;
+	t.k = 123;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = 4.56;
+	ptr = (int *)&t;
+	strcpy(t.str,"hello world");
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+
+	dis_add_cmnd("taskManager/sendKill","I",kill_rout, 0);
+	dis_start_serving( argv[1] );
+/*
+	{	  
+	int prio = -1, ret, pclass = -1;
+	dim_get_scheduler_class(&pclass);
+	printf("Process class: %d\n",pclass);
+	dim_get_priority(1, &prio);
+	printf("Main Thread: %d\n",prio);
+	dim_get_priority(2, &prio);
+	printf("IO Thread: %d\n",prio);
+	dim_get_priority(3, &prio);
+	printf("Timer Thread: %d\n",prio);
+#ifndef WIN32
+	ret = dim_set_scheduler_class(2);
+	printf("ret = %d\n",ret);
+	ret = dim_set_priority(1, 20);
+	printf("ret = %d\n",ret);
+	ret = dim_set_priority(2, 50);
+	printf("ret = %d\n",ret);
+#endif
+	dim_get_scheduler_class(&pclass);
+	printf("Process class: %d\n",pclass);
+	dim_get_priority(1, &prio);
+	printf("Main Thread: %d\n",prio);
+	dim_get_priority(2, &prio);
+	printf("IO Thread: %d\n",prio);
+	dim_get_priority(3, &prio);
+	printf("Timer Thread: %d\n",prio);
+	}
+*/
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+	
+	while(1)
+	{
+		pause();
+	}
+/*
+	sleep(5);
+	{
+	  int i;
+	  for(i = 0; i <= 999999999; i++);
+	}
+	printf("Normal Exit\n");
+*/
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_server_slac.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_server_slac.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_server_slac.c	(revision 18732)
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <dis.h>
+#include <dic.h>
+
+char str[10][80];
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	printf("%s Received for Server %d\n", buf, *tag);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80];
+	int n;
+
+	sscanf(argv[1], "%d", &n);
+	sprintf(aux,"TEST_SLAC/SRV%d",n);
+	sprintf(str[0], aux);
+	dis_add_service(aux, "C", str[0], strlen(str[0])+1, (void *)0, 0);
+	sprintf(aux,"TEST_SLAC/%d",n);
+	dis_start_serving(aux);
+	sprintf(aux,"TEST_SLAC/CLT%d",n);
+	dic_info_service( aux, TIMED, 60, 0, 0, rout, n,
+			  "No Link", 8 );
+	while(1)
+	{
+		pause();
+	}
+}
+
Index: branches/FACT++_part_filenames/dim/src/examples/test_tcp.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/examples/test_tcp.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/examples/test_tcp.c	(revision 18732)
@@ -0,0 +1,191 @@
+#ifdef WIN32
+#define ioctl ioctlsocket
+
+#define closesock myclosesocket
+#define readsock recv
+#define writesock send
+
+#define EINTR WSAEINTR
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+#define HOST_NOT_FOUND	WSAHOST_NOT_FOUND
+#define NO_DATA	WSANO_DATA
+
+#include <windows.h>
+#include <process.h>
+#include <io.h>
+#include <fcntl.h>
+#include <Winsock.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#else
+#define closesock close
+#define readsock(a,b,c,d) read(a,b,c)
+
+#if defined(__linux__) && !defined (darwin)
+#define writesock(a,b,c,d) send(a,b,c,MSG_NOSIGNAL)
+#else
+#define writesock(a,b,c,d) write(a,b,c)
+#endif
+#include <ctype.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#endif
+
+#define ushort unsigned short
+#define TCP_RCV_BUF_SIZE	16384/*32768*//*65536*/
+#define TCP_SND_BUF_SIZE	16384/*32768*//*65536*/
+
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) 
+	{
+    	return(0);
+	}
+
+	/* Confirm that the WinSock DLL supports 2.0.*/
+	/* Note that if the DLL supports versions greater    */
+	/* than 2.0 in addition to 2.0, it will still return */
+	/* 2.0 in wVersion since that is the version we      */
+	/* requested.                                        */
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) 
+	{
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+
+int myclosesocket(int path)
+{
+	int code, ret;
+	code = WSAGetLastError();
+	ret = closesocket(path);
+	WSASetLastError(code);
+	return ret;
+}
+#endif
+
+int tcp_open_client( char *node, int port )
+{
+	/* Create connection: create and initialize socket stuff. Try
+	 * and make a connection with the server.
+	 */
+	struct sockaddr_in sockname;
+	struct hostent *host;
+	int path, val, ret_code, ret;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	if( (host = gethostbyname(node)) == (struct hostent *)0 ) 
+	{
+		return(0);
+	}
+
+	if( (path = socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		perror("socket");
+		return(0);
+	}
+
+	val = 1;
+      
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = TCP_SND_BUF_SIZE;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = TCP_RCV_BUF_SIZE;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+#if defined(__linux__) && !defined (darwin)
+	val = 2;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_SYNCNT, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_SYNCNT\n");
+#endif
+	}
+#endif
+
+	sockname.sin_family = PF_INET;
+	sockname.sin_addr = *((struct in_addr *) host->h_addr);
+	sockname.sin_port = htons((ushort) port); /* port number to send to */
+	while((ret = connect(path, (struct sockaddr*)&sockname, sizeof(sockname))) == -1 )
+	{
+		if(errno != EINTR)
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+	return(path);
+}
+
+int tcp_write( int path, char *buffer, int size )
+{
+	/* Do a (synchronous) write to conn_id.
+	 */
+	int	wrote;
+
+	wrote = writesock( path, buffer, size, 0 );
+	if( wrote == -1 ) {
+		return(0);
+	}
+	return(wrote);
+}
Index: branches/FACT++_part_filenames/dim/src/feeserver.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/feeserver.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/feeserver.c	(revision 18732)
@@ -0,0 +1,4443 @@
+ Return to feeserver.c CVS log    Up to [MAIN] / dcscvs / FeeServer / feeserver / src  
+
+--------------------------------------------------------------------------------
+File: [MAIN] / dcscvs / FeeServer / feeserver / src / feeserver.c (download) 
+Revision: 1.26, Wed May 7 14:08:13 2008 UTC (22 months ago) by dominik 
+Branch: MAIN 
+CVS Tags: d, HEAD, FeeServer_v0-9-4_RCU-v0-9-9-dev, FeeServer_v0-9-4_RCU-v0-9-8-dev, FeeServer_v0-9-4_RCU-v0-9-7-dev, FeeServer_v0-9-4_RCU-v0-9-6-dev, FeeServer_v0-9-4_RCU-v0-9-5-dev, FeeServer_v0-9-4_RCU-v0-9-4, FeeServer_v0-9-4_RCU-v0-9-14-dev, FeeServer_v0-9-4_RCU-v0-9-13-dev, FeeServer_v0-9-4_RCU-v0-9-12-dev, FeeServer_v0-9-4_RCU-v0-9-11-dev, FeeServer_v0-9-4_RCU-v0-9-10-dev 
+Changes since 1.25: +32 -16 lines 
+updated to core version 0.9.4
+
+ 
+
+--------------------------------------------------------------------------------
+
+/************************************************************************
+ **
+ **
+ ** This file is property of and copyright by the Department of Physics
+ ** Institute for Physic and Technology, University of Bergen,
+ ** Bergen, Norway.
+ ** In cooperation with Center for Technology Transfer and 
+ ** Telecommunication (ZTT), University of Applied Sciences Worms
+ ** Worms, Germany.
+ **
+ ** This file has been written by Sebastian Bablok,
+ ** Sebastian.Bablok@uib.no
+ **
+ ** Important: This file is provided without any warranty, including
+ ** fitness for any particular purpose. Further distribution of this file,
+ ** even with changes in the code, is only allowed, when this copyright
+ ** and warranty paragraph is kept unchanged and included to the sources. 
+ **
+ **
+ *************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>				// for pause() necessary
+#include <string.h>
+#include <dim/dis.h>				// dimserver library
+#include <math.h>				// for fabsf
+
+#include <time.h>				// time for threads
+#include <sys/time.h>			// for gettimeofday()
+#include <pthread.h>
+//#include <stdbool.h>			// included by fee_types.h
+#include <errno.h>      		// for the error numbers
+#include <signal.h>
+
+#include "fee_types.h"			// declaration of own datatypes
+#include "fee_functions.h"		// declaration of feeServer functions
+#include "fee_defines.h"		// declaration of all globaly used constants
+#include "feepacket_flags.h"	// declaration of flag bits in a feepacket
+#include "fee_errors.h"			// defines of error codes
+#include "ce_command.h"			//control engine header file
+
+#ifdef __UTEST
+#include "fee_utest.h"
+#endif
+
+/**
+ * @defgroup feesrv_core The FeeServer core
+ */
+
+//-- global variables --
+
+/**
+ * state of the server, possible states are: COLLECTING, RUNNING and ERROR_STATE.
+ * @ingroup feesrv_core
+ */
+static int state = COLLECTING;
+
+/**
+ * indicates, if CEReady has been signaled (used in backup solution of init watch dog).
+ * @ingroup feesrv_core
+ */
+static bool ceReadySignaled = false;
+
+/**
+ * Variable provides the init state of the CE.
+ * @ingroup feesrv_core
+ */
+static int ceInitState = CE_NOT_INIT; // CE_OK; this has changed in version 0.9.4
+
+/**
+ * pointer to the first ItemNode of the doubly linked list (float)
+ * @ingroup feesrv_core
+ */
+static ItemNode* firstNode = 0;
+
+/**
+ * pointer to the last ItemNode of the doubly linked list (float)
+ * @ingroup feesrv_core
+ */
+static ItemNode* lastNode = 0;
+
+/**
+ * The message struct providing the data for an event message.
+ * @ingroup feesrv_core
+ */
+static MessageStruct message;
+
+/**
+ * Stores the last send message over the message channel to compare it with
+ * a newly triggered messages.
+ * @ingroup feesrv_core
+ */
+static MessageStruct lastMessage;
+
+/**
+ * Counter for replication of log messages.
+ * @ingroup feesrv_core
+ */
+static unsigned short replicatedMsgCount = 0;
+
+/**
+ * Indicates if the watchdog for replicated log messages is running
+ * (true = running).
+ *
+ * @ingroup feesrv_core
+ */
+static bool logWatchDogRunning = false;
+
+/**
+ * Timeout for the watchdog of replicated log messages. After this time the
+ * hold back message will be sent for sure, if no other type of message has
+ * triggered its sending before (replicated messages are collected until
+ * either this timeout occurs or a different message is triggered. In the later
+ * case the hold back message is sent first).
+ *
+ * @ingroup feesrv_core
+ */
+static unsigned int logWatchDogTimeout = DEFAULT_LOG_WATCHDOG_TIMEOUT;
+
+/**
+ * Stores the number of added nodes to the item list (float).
+ * @ingroup feesrv_core
+ */
+static unsigned int nodesAmount = 0;
+
+/**
+ * Indicates if the float monitor thread for published items has been started
+ * (true = started).
+ *
+ * @ingroup feesrv_core
+ */
+static bool monitorThreadStarted = false;
+
+/**
+ * DIM-serviceID for the dedicated acknowledge-service
+ * @ingroup feesrv_core
+ */
+static unsigned int serviceACKID;
+
+/**
+ * DIM-serviceID for the dedicated message - service
+ * @ingroup feesrv_core
+ */
+static unsigned int messageServiceID;
+
+/**
+ * DIM-commandID
+ * @ingroup feesrv_core
+ */
+static unsigned int commandID;
+
+/**
+ * Pointer to acknowledge Data (used by the DIM-framework)
+ * @ingroup feesrv_core
+ */
+static char* cmndACK = 0;
+
+/**
+ * size of the acknowledge Data
+ * @ingroup feesrv_core
+ */
+static int cmndACKSize = 0;
+
+/**
+ * Name of the FeeServer
+ * @ingroup feesrv_core
+ */
+static char* serverName = 0;
+
+/**
+ * length of FeeServer name
+ * @ingroup feesrv_core
+ */
+static int serverNameLength = 0;
+
+/**
+ * Update rate, in which the whole Item-list should be checked for changes.
+ * This value is given in milliseconds.
+ * @ingroup feesrv_core
+ */
+static unsigned short updateRate = DEFAULT_UPDATE_RATE;
+
+/**
+ * Timeout for call of issue - the longest time a command can be executed by the CE,
+ * before the watch dog kills this thread. This value is given in milliseconds.
+ * @ingroup feesrv_core
+ */
+static unsigned long issueTimeout = DEFAULT_ISSUE_TIMEOUT;
+
+/**
+ * Stores the current log level for this FeeServer.
+ * In case that an environmental variable (FEE_LOG_LEVEL) tells the desired
+ * loglevel, the DEFAULT_LOGLEVEL is overwritten during init process.
+ * @ingroup feesrv_core
+ */
+static unsigned int logLevel = DEFAULT_LOGLEVEL;
+
+/**
+ * thread handle for the initialize thread
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_init;
+
+/**
+ * thread handle for the monitoring thread (float list)
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_mon;
+
+/**
+ * thread handle for the watchdog of replicated log messages.
+ * This watchdog checks, if there have been replicated log messages during a
+ * time period given by "replicatedLogMessageTimeout", which have been hold
+ * back. The content of these messages is then send including the number of
+ * how often this has been triggered and hold back.
+ * Afterwards the counter is set back to zero again and backup of the last
+ * send log message is cleared.
+ *
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_logWatchdog;
+
+/**
+ * thread condition variable for the "watchdog" timer
+ * @ingroup feesrv_core
+ */
+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+
+/**
+ * thread condition variable for the "initialisation complete" - signal
+ * @ingroup feesrv_core
+ */
+static pthread_cond_t init_cond = PTHREAD_COND_INITIALIZER;
+
+/**
+ * thread mutex variable for the "watchdog" in command handler
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t wait_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * thread mutex variable for the initialize CE thread
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t wait_init_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * thread mutex variable for the commandAck data
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t command_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * mutex to lock access to the logging function ( createLogMessage() )
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t log_mut = PTHREAD_MUTEX_INITIALIZER;
+
+
+////   --------- NEW FEATURE SINCE VERSION 0.8.1 (2007-06-12) ---------- /////
+
+/**
+ * pointer to the first IntItemNode of the doubly linked list (int)
+ * @ingroup feesrv_core
+ */
+static IntItemNode* firstIntNode = 0;
+
+/**
+ * pointer to the last IntItemNode of the doubly linked list (int)
+ * @ingroup feesrv_core
+ */
+static IntItemNode* lastIntNode = 0;
+
+/**
+ * Stores the number of added integer nodes to the IntItem list.
+ * @ingroup feesrv_core
+ */
+static unsigned int intNodesAmount = 0;
+
+/**
+ * thread handle for the monitoring thread (int - list)
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_mon_int;
+
+/**
+ * Indicates if the int monitor thread for published IntItems has been started
+ * (true = started).
+ *
+ * @ingroup feesrv_core
+ */
+static bool intMonitorThreadStarted = false;
+
+
+////    ------------- NEW Memory Management (2007-07-25) ----------------- ////
+
+/**
+ * pointer to the first MemoryNode of the doubly linked list (memory management)
+ * @ingroup feesrv_core
+ */
+static MemoryNode* firstMemoryNode = 0;
+
+/**
+ * pointer to the last MemoryNode of the doubly linked list (memory management)
+ * @ingroup feesrv_core
+ */
+static MemoryNode* lastMemoryNode = 0;
+
+
+/// ---- NEW FEATURE SINCE VERSION 0.8.2b [Char Channel] (2007-07-28) ----- ///
+
+/**
+ * Stores the number of added Character item nodes to the CharItem list.
+ * @ingroup feesrv_core
+ */
+static unsigned int charNodesAmount = 0;
+
+/**
+ * pointer to the first CharItemNode of the doubly linked list (char)
+ * @ingroup feesrv_core
+ */
+static CharItemNode* firstCharNode = 0;
+
+/**
+ * pointer to the last CharItemNode of the doubly linked list (char)
+ * @ingroup feesrv_core
+ */
+static CharItemNode* lastCharNode = 0;
+
+
+
+//-- Main --
+
+/**
+ * Main of FeeServer.
+ * This programm represents the DIM-Server running on the DCS-boards.
+ * It uses the DIM-Server-Library implemented by C. Gaspar from Cern.
+ *
+ * @author Christian Kofler, Sebastian Bablok
+ *
+ * @date 2003-04-24
+ *
+ * @update 2004-11-22 (and many more dates ...)
+ *
+ * @version 0.8.1
+ * @ingroup feesrv_core
+ */
+int main(int argc, char** arg) {
+	//-- only for unit tests
+#	ifdef __UTEST
+	// insert here the testfunction-calls
+	testFrameWork();
+	return 0;
+#	endif
+
+	// now here starts the real stuff
+	initialize();
+	// test server (functional test)
+	while (1) {
+		// maybe do some checks here, like:
+		// - monitoring thread is still in good state
+		// - CE is still in good state
+		// - everything within the FeeServer is OK (assertions?)
+		pause();
+	}
+	return 0;
+}
+
+
+void initialize() {
+	//-- Declaring variables --
+	struct timeval now;
+	struct timespec timeout;
+	pthread_attr_t attr;
+	int nRet;
+	int status;
+	int initState  = FEE_CE_NOTINIT;
+	char* name = 0;
+	char* dns = 0;
+	bool initOk = true;
+	unsigned int envVal = 0;
+	char msg[250];
+	int restartCount = 0;
+
+	//-- register interrupt handler (CTRL-C)
+	// not used yet, causes problems
+//	if (signal(SIGINT, interrupt_handler) == SIG_ERR) {
+//#		ifdef __DEBUG
+//		printf("Unable to register interrupt handler.\n");
+//		printf("This is not fatal -> continuing.\n");
+//#		endif
+//	}
+
+	//-- get name of the server --
+	name = getenv("FEE_SERVER_NAME");
+	if (name == 0) {
+#		ifdef __DEBUG
+		printf("No FEE_SERVER_NAME \n");
+#		endif
+		exit(202);
+	}
+
+	serverName = (char*) malloc(strlen(name) + 1);
+	if (serverName == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while trying to create server name!\n");
+#		endif
+		exit(201);
+	}
+	strcpy(serverName, name);
+	serverNameLength = strlen(serverName);
+
+	//-- test, if DIM_DNS_NODE is specified
+	dns = getenv("DIM_DNS_NODE");
+	if (dns == 0) {
+#		ifdef __DEBUG
+		printf("No DIM_DNS_NODE specified. \n");
+#		endif
+		exit(203);
+	}
+
+	// set the desired log level, if provided
+	if (getenv("FEE_LOG_LEVEL")) {
+		sscanf(getenv("FEE_LOG_LEVEL"), "%d", &envVal);
+		if ((envVal < 0) || (envVal > MSG_MAX_VAL)) {
+#		    ifdef __DEBUG
+			printf("Environmental variable has invalid Log Level, using default instead.\n");
+		   	fflush(stdout);
+#			endif
+		} else {
+			logLevel = envVal | MSG_ALARM;
+		}
+	}
+
+	// set logWatchDogTimeout, if env variable "FEE_LOGWATCHDOG_TIMEOUT" is set
+    if (getenv("FEE_LOGWATCHDOG_TIMEOUT")) {
+        sscanf(getenv("FEE_LOGWATCHDOG_TIMEOUT"), "%d", &envVal);
+        if ((envVal <= 0) || (envVal > MAX_TIMEOUT)) {
+#           ifdef __DEBUG
+            printf("Environmental variable has invalid LogWatchDog Timeout, using default instead.\n");
+            fflush(stdout);
+#           endif
+        } else {
+            logWatchDogTimeout = envVal;
+        }
+    }
+
+	// get restart counter
+	if (getenv("FEESERVER_RESTART_COUNT")) {
+		restartCount = atoi(getenv("FEESERVER_RESTART_COUNT"));
+	}
+
+	// Initial printout
+# 	ifdef __DEBUG
+	printf("\n  **  FeeServer version %s  ** \n\n", FEESERVER_VERSION);
+	printf("FeeServer name: %s\n", serverName);
+	printf("Using DIM_DNS_NODE: %s\n", dns);
+#   ifdef __BENCHMARK
+    printf(" -> Benchmark version of FeeServer <- \n");
+#	endif
+	printf("Current log level is: %d (MSG_ALARM (%d) is always on)\n", logLevel, MSG_ALARM);
+	printf("Restart Count is: %d; Restart-Env is: %s\n", restartCount, 
+			getenv("FEESERVER_RESTART_COUNT"));
+#	endif
+
+	//set dummy exit_handler to disable framework exit command, returns void
+	dis_add_exit_handler(&dim_dummy_exit_handler);
+
+	//set error handler to catch DIM framework messages
+	dis_add_error_handler(&dim_error_msg_handler);
+
+	// to ensure that signal is in correct state before init procedure
+	ceReadySignaled = false;
+
+	// lock mutex
+	status = pthread_mutex_lock(&wait_init_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock init mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		initOk = false;
+	} else {
+		// initiailisation of thread attribute only if mutex has been locked
+		status = pthread_attr_init(&attr);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Init attribute error: %d\n", status);
+			fflush(stdout);
+#			endif
+			initOk = false;
+		} else {
+			status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+			if (status != 0) {
+#				ifdef __DEBUG
+				printf("Set attribute error: %d\n", status);
+				fflush(stdout);
+#				endif
+				initOk = false;
+			}
+		}
+	}
+
+	if (initOk == true) {
+		// call only if initOk == true,
+		status = pthread_create(&thread_init, &attr, (void*) &threadInitializeCE, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error: %d\n", status);
+			fflush(stdout);
+#			endif
+			initState = FEE_CE_NOTINIT;
+		} else {
+#			ifdef __DEBUG // for debugging the time amount the watchdog really waits (START)
+			time_t initStartTime = time(NULL);
+#			endif //__DEBUG
+
+			// timeout set in ms, should be enough for initialisation; see fee_defines.h for current value
+			status = gettimeofday(&now, 0);
+			if ((status != 0) || (restartCount <= 0)) {
+				// backup solution for detetcting end of init process
+#				ifdef __DEBUG
+				printf("Get time of day error: %d or restartCount <= 0 (%d), using backup solution\n",
+						status, restartCount);
+				fflush(stdout);
+#				endif
+				// unlock mutex to enable functionality of signalCEReady
+				status = pthread_mutex_unlock(&wait_init_mut);
+#				ifdef __DEBUG
+				if (status != 0) {
+					printf("Unlock mutex error: %d\n", status);
+					fflush(stdout);
+				}
+#				endif
+				// sleep init-timeout length
+				usleep((TIMEOUT_INIT_CE_MSEC * 1000)); // sleep the microsec fraction
+
+				const int sleepFraction = 1; // to check ready signal each second
+				int sleepLoops = TIMEOUT_INIT_CE_SEC / sleepFraction;
+				int cycles = 0;
+				do {
+					dtq_sleep(sleepFraction);
+					if (ceReadySignaled) {
+						break;
+					}
+				} while ( cycles++ < sleepLoops);
+//				dtq_sleep(TIMEOUT_INIT_CE_SEC);  // old style without check each second
+
+				if (ceReadySignaled == false) {
+					status = pthread_cancel(thread_init);
+#					ifdef __DEBUG
+					if (status != 0) {
+						printf("No thread to cancel: %d\n", status);
+						fflush(stdout);
+					}
+#					endif
+					// start with "the CE is not initialized!"
+					initState = FEE_CE_NOTINIT;
+#					ifdef __DEBUG
+					printf("Timeout in init [sleep]: %d\n", initState);
+					fflush(stdout);
+#					endif
+				} else {
+					if (ceInitState != CE_OK) {
+						// init failed, but no timeout occured
+						// (insufficient memory, etc. ... or something else)
+#						ifdef __DEBUG
+						printf("Init of CE failed, error: %d\n", ceInitState);
+						fflush(stdout);
+#						endif
+						initState = FEE_CE_NOTINIT;
+					} else {
+						// start with "everything is fine"
+						initState = FEE_OK;
+#						ifdef __DEBUG
+						printf("Init OK\n");
+						fflush(stdout);
+#						endif
+					}
+				}
+			} else {
+				timeout.tv_sec = now.tv_sec + TIMEOUT_INIT_CE_SEC;
+				timeout.tv_nsec = (now.tv_usec * 1000) +
+						(TIMEOUT_INIT_CE_MSEC * 1000000);
+
+				// wait for finishing "issue" or timeout after the mutex is unlocked
+				// a retcode of 0 means, that pthread_cond_timedwait has returned
+				// with the cond_init signaled
+				status = pthread_cond_timedwait(&init_cond, &wait_init_mut, &timeout);
+				// -- start FeeServer depending on the state of the CE --
+				if (status != 0) {
+					status = pthread_cancel(thread_init);
+#					ifdef __DEBUG
+					if (status != 0) {
+						printf("No thread to cancel: %d\n", status);
+						fflush(stdout);
+					}
+#					endif
+					// start with "the CE is not initialized!"
+					initState = FEE_CE_NOTINIT;
+#					ifdef __DEBUG
+					printf("Timeout in init [timed_wait]: %d\n", initState);
+					fflush(stdout);
+#					endif
+				} else {
+					if (ceInitState != CE_OK) {
+						// init failed, but no timeout occured
+						// (insufficient memory, etc. ... or something else)
+#						ifdef __DEBUG
+						printf("Init of CE failed, error: %d\n", ceInitState);
+						fflush(stdout);
+#						endif
+						initState = FEE_CE_NOTINIT;
+					} else {
+						// start with "everything is fine"
+						initState = FEE_OK;
+#						ifdef __DEBUG
+						printf("Init OK\n");
+						fflush(stdout);
+#						endif
+					}
+				}
+			}
+#			ifdef __DEBUG  // for debugging the time amout the watchdog waits (STOP)
+			time_t initStopTime = time(NULL);
+			if (initState != FEE_OK) {
+				printf("Watchdog: CE init tread\n   started %s",
+						ctime(&initStartTime));
+				printf("   killed  %s\n", ctime(&initStopTime));
+				// don't put this into one printf line -
+				// ctime or printf doe not work correct then, why?
+				fflush(stdout);
+			} else {
+				printf("Watchdog: CE init tread\n   started  %s", 
+						ctime(&initStartTime));
+				printf("   finished %s\n", ctime(&initStopTime)); 
+				// don't put this into one printf line - 
+				// ctime or printf doe not work correct then, why?
+				fflush(stdout);
+			}
+#			endif //__DEBUG
+		}
+		// destroy thread attribute
+		status = pthread_attr_destroy(&attr);
+#		ifdef __DEBUG
+		if (status != 0) {
+			printf("Destroy attribute error: %d\n", status);
+			fflush(stdout);
+		}
+#		endif
+	}
+
+	// init message struct -> FeeServer name, version and DNS are also provided
+	initMessageStruct();
+
+	if (initState != FEE_OK) {
+		// remove all services of Items of ItemList
+#		ifdef __DEBUG
+		printf("Init failed, unpublishing item list\n");
+		fflush(stdout);
+#		endif
+		unpublishItemList();
+		// new since version 0.8.1 -> int channels
+		unpublishIntItemList();
+        // new since version 0.8.2b -> char channels
+        unpublishCharItemList();
+	}
+
+	// add div. services and the command channel and then start DIM server
+	nRet = start(initState);
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_init_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		if (nRet == FEE_OK) {
+			createLogMessage(MSG_WARNING, "Unable to unlock init mutex.", 0);
+		}
+	}
+
+	if (nRet != FEE_OK) {
+#		ifdef __DEBUG
+		printf("unable to start DIM server, exiting.\n");
+		fflush(stdout);
+#		endif
+		fee_exit_handler(205);
+	} else {
+#		ifdef __DEBUG
+		printf("DIM Server successfully started, ready to accept commands.\n");
+		fflush(stdout);
+#		endif
+	}
+
+#	ifdef __DEBUG
+	printf("DEBUG - Init-State: %d, CE-State: %d, Restart-Env: %s, RestartCount: %d.\n",
+				initState, ceInitState, getenv("FEESERVER_RESTART_COUNT"), restartCount);
+	fflush(stdout);
+#	endif
+
+	// test for failed init of CE and init restart counter,
+	// counter counts backwards: only if counter > 0 restart is triggerd
+	if ((initState != FEE_OK) && (getenv("FEESERVER_RESTART_COUNT")) &&
+			(restartCount > 0)) {
+		msg[sprintf(msg,
+				"Triggering a FeeServer restart to give CE init another try. Restart count (backward counter): %d ",
+				restartCount)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Triggering a FeeServer restart for another CE init try (backward count: %d).\n",
+				restartCount);
+		fflush(stdout);
+#		endif
+		// small sleep, that DIM is able to send log messages before restart
+		dtq_sleep(1);
+		// trigger restart to give it another try for the CE to init
+		triggerRestart(FEE_EXITVAL_TRY_INIT_RESTART);
+		// NOTE this function won't return ...
+	}
+	// look through watchdog and backup solution about ceInitState and check it again !!!
+	// afterwards the following line won't be necessary !!!
+	// needed later in information about properties !!!
+//	ceInitState = initState;
+
+	return;
+}
+
+
+void threadInitializeCE() {
+	int status = -1;
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	// if cancelation is not able, it won't hurt ?!
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel state (init) error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	// if cancelation is not able, it won't hurt ?!
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel type (init) error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// Here starts the actual CE
+	initializeCE();
+
+	// not necessary, return 0 is better
+//	pthread_exit(0);
+	return;
+
+}
+
+
+void signalCEready(int ceState) {
+	int status = -1;
+
+	// set cancel type to deferred
+	status = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, 0);
+#   ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel type error: %d\n", status);
+	    fflush(stdout);
+	}
+#   endif
+
+	//lock the mutex before broadcast
+	status = pthread_mutex_lock(&wait_init_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Lock mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// provide init state of CE
+	ceInitState = ceState;
+
+	//signal that CE has completed initialisation
+	// maybe try the call pthread_cond_signal instead for performance
+	pthread_cond_broadcast(&init_cond);
+
+	// set variable for backup solution
+	ceReadySignaled = true;
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_init_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+    // set cancel type to asyncroneous
+    status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+#   ifdef __DEBUG
+    if (status != 0) {
+        printf("Set cancel type error: %d\n", status);
+		fflush(stdout);
+    }
+#   endif
+}
+
+
+// -- Command handler routine --
+void command_handler(int* tag, char* address, int* size) {
+	struct timeval now;
+	struct timespec timeout;
+	int retcode  = -1;
+	int status = -1;
+	pthread_t thread_handle;
+	pthread_attr_t attr;
+	IssueStruct issueParam;
+	CommandHeader header;
+	char* pHeaderStream = 0;
+	MemoryNode* memNode = 0;
+	bool useMM = false;
+
+#ifdef __BENCHMARK
+	char benchmsg[200];
+	// make benchmark entry
+	if ((size != 0 ) && (*size >= 4)) {
+		benchmsg[sprintf(benchmsg,
+				"FeeServer CommandHandler (Received command) - Packet-ID: %d",
+				*address)] = 0;
+		createBenchmark(benchmsg);
+	} else {
+		createBenchmark("FeeServer CommandHandler (Received command)");
+	}
+#endif
+
+	// init struct
+	initIssueStruct(&issueParam);
+
+	issueParam.nRet = FEE_UNKNOWN_RETVAL;
+
+	// check state (ERROR state is allowed for FeeServer commands, not CE)
+	if ((state != RUNNING) && (state != ERROR_STATE)) {
+		return;
+	}
+
+	// lock command mutex to save command &ACK data until it is send
+	// and only one CE-Thread exists at one time
+	status = pthread_mutex_lock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING, "Unable to lock command mutex.", 0);
+	}
+
+	if ((tag == 0) || (address == 0) || (size == 0)) {
+		leaveCommandHandler(0, FEE_NULLPOINTER, MSG_WARNING,
+ 				"Received null pointer of DIM framework in command handler.");
+		return;
+	}
+
+	if (*size < HEADER_SIZE) {
+		leaveCommandHandler(0, FEE_INVALID_PARAM, MSG_WARNING,
+ 				"FeeServer received corrupted command.");
+		return;
+	}
+
+#	ifdef __DEBUG
+	printf(" Cmnd - Size: %d\n", *size);
+	fflush(stdout);
+#	endif
+
+	//-- storing the header information in struct --
+	memcpy(&header.id, address, HEADER_SIZE_ID);
+	memcpy(&header.errorCode, address + HEADER_OFFSET_ID, HEADER_SIZE_ERROR_CODE);
+	memcpy(&header.flags, address + HEADER_OFFSET_ERROR_CODE, HEADER_SIZE_FLAGS);
+	memcpy(&header.checksum, address + HEADER_OFFSET_FLAGS, HEADER_SIZE_CHECKSUM);
+
+	// --------------------- Check Flags --------------------------
+	if ((header.flags & HUFFMAN_FLAG) != 0) {
+		//-- do Huffmann decoding if flag is set --
+		// not implemented yet !!!
+	}
+
+	issueParam.size = *size - HEADER_SIZE;
+	issueParam.command = (address + HEADER_SIZE);
+	// !!! if Huffman decoding necessary, think about memory management ???
+
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		//-- do checksum test if flag is set --
+		if (!checkCommand(issueParam.command, issueParam.size, header.checksum)) {
+			// -- checksum failed - notification
+			leaveCommandHandler(header.id, FEE_CHECKSUM_FAILED, MSG_WARNING,
+ 					"FeeServer received corrupted command data (checksum failed).");
+			return;
+		}
+	}
+
+	// -- here start the Commands for the FeeServer itself --
+	if ((header.flags & FEESERVER_UPDATE_FLAG) != 0) {
+#ifdef ENABLE_MASTERMODE
+		updateFeeServer(&issueParam);
+#else
+		createLogMessage(MSG_WARNING, "FeeServer is not authorized to execute shell programs, skip ...", 0);
+#endif //ENABLE_MASTERMODE
+		// this is only reached, if update has not been sucessful
+		issueParam.nRet = FEE_FAILED;
+		issueParam.size = 0;
+	} else if ((header.flags & FEESERVER_RESTART_FLAG) != 0) {
+		restartFeeServer();
+	} else if ((header.flags & FEESERVER_REBOOT_FLAG) != 0) {
+		createLogMessage(MSG_INFO, "Rebooting DCS board.", 0);
+		system("reboot");
+		exit(0);
+	} else if ((header.flags & FEESERVER_SHUTDOWN_FLAG) != 0) {
+		createLogMessage(MSG_INFO, "Shuting down DCS board.", 0);
+		system("poweroff");
+		exit(0);
+	} else if ((header.flags & FEESERVER_EXIT_FLAG) != 0) {
+		fee_exit_handler(0);
+	} else if ((header.flags & FEESERVER_SET_DEADBAND_FLAG) != 0) {
+		issueParam.nRet = setDeadband(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_DEADBAND_FLAG) != 0) {
+		issueParam.nRet = getDeadband(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_ISSUE_TIMEOUT_FLAG) != 0) {
+		issueParam.nRet = setIssueTimeout(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_ISSUE_TIMEOUT_FLAG) != 0) {
+		issueParam.nRet = getIssueTimeout(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_UPDATERATE_FLAG) != 0) {
+		issueParam.nRet = setUpdateRate(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_UPDATERATE_FLAG) != 0) {
+		issueParam.nRet = getUpdateRate(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_LOGLEVEL_FLAG) != 0) {
+		issueParam.nRet = setLogLevel(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_LOGLEVEL_FLAG) != 0) {
+		issueParam.nRet = getLogLevel(&issueParam);
+	} else {
+		// commands for CE are not allowed in ERROR state
+		if (state == ERROR_STATE) {
+			leaveCommandHandler(header.id, FEE_WRONG_STATE, MSG_ERROR,
+ 					"FeeServer is in ERROR_STATE, ignoring command for CE!");
+			return;
+		}
+
+		// packet with no flags in header and no payload makes no sense
+		if (issueParam.size == 0) {
+			leaveCommandHandler(header.id, FEE_INVALID_PARAM, MSG_WARNING,
+ 					"FeeServer received empty command.");
+			return;
+		}
+
+		// lock mutex
+		status = pthread_mutex_lock(&wait_mut);
+		if (status != 0) {
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to lock condition mutex for watchdog.");
+			return;
+		}
+
+		status = pthread_attr_init(&attr);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to initialize issue thread.");
+			return;
+		}
+
+		status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to initialize issue thread.");
+			return;
+		}
+
+		status = pthread_create(&thread_handle, &attr, &threadIssue, (void*) &issueParam);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to create issue thread.");
+			return;
+		}
+
+		status = pthread_attr_destroy(&attr);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Destroy attribute error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Unable to destroy thread attribute.", 0);
+		}
+
+		// timeout set in ms, see fee_defines.h for current value
+		status = gettimeofday(&now, 0);
+		if (status == 0) {
+			// issueTimeout is in milliseconds:
+			// get second-part with dividing by 1000
+			timeout.tv_sec = now.tv_sec + (int) (issueTimeout / 1000);
+			// get rest of division by 1000 (which is milliseconds)
+			// and make it nanoseconds
+			timeout.tv_nsec = (now.tv_usec * 1000) +
+										((issueTimeout % 1000) * 1000000);
+
+			// wait for finishing "issue" or timeout, if signal has been sent
+			// retcode is 0 !
+			// this is the main logic of the watchdog for the CE of the FeeServer
+			retcode = pthread_cond_timedwait(&cond, &wait_mut, &timeout);
+#			ifdef __DEBUG
+			printf("Retcode of CMND timedwait: %d\n", retcode);
+			fflush(stdout);
+#			endif
+
+			// check retcode to detect and handle Timeout
+			if (retcode == ETIMEDOUT) {
+#				ifdef __DEBUG
+				printf("ControlEngine watchdog detected TimeOut.\n");
+				fflush(stdout);
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine watch dog noticed a time out for last command.", 0);
+
+				// kill not finished thread. no problem if this returns an error
+				pthread_cancel(thread_handle);
+				// setting errorCode to "a timout occured"
+				issueParam.nRet = FEE_TIMEOUT;
+				issueParam.size = 0;
+			} else if (retcode != 0) {
+				// "handling" of other error than timeout
+#				ifdef __DEBUG
+				printf("ControlEngine watchdog detected unknown error.\n");
+				fflush(stdout);
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine watch dog received an unknown for last command.", 0);
+
+				// kill not finished thread. no problem if this returns an error
+				pthread_cancel(thread_handle);
+				// setting errorCode to "a thread error occured"
+				issueParam.nRet = FEE_THREAD_ERROR;
+				issueParam.size = 0;
+			}
+
+		} else {
+#			ifdef __DEBUG
+			printf("Get time of day error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+				"Watchdog timer could not be initialized. Using non-reliable sleep instead.",
+				0);
+			// release mutex to avoid hang up in issueThread before signaling condition
+			unlockIssueMutex();
+			// watchdog with condition signal could not be used, because gettimeofday failed.
+			// sleeping instead for usual amount of time and trying to cancel thread aftterwards.
+			usleep(issueTimeout * 1000);
+			status = pthread_cancel(thread_handle);
+			// if thread did still exist something went wrong -> "timeout" (== 0)
+			if (status == 0) {
+#				ifdef __DEBUG
+				printf("TimeOut occured.\n");
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine issue did not return in time.", 0);
+				issueParam.nRet = FEE_TIMEOUT;
+				issueParam.size = 0;
+			}
+		}
+
+		unlockIssueMutex();
+	}
+	//--- end of CE call area --------------------
+
+	// ---------- start to compose result -----------------
+#	ifdef __DEBUG
+	printf("Issue-nRet: %d\n", issueParam.nRet);
+	fflush(stdout);
+#	endif
+	// check return value of issue
+	if ((issueParam.nRet < FEE_UNKNOWN_RETVAL) ||
+			(issueParam.nRet > FEE_MAX_RETVAL)) {
+		issueParam.nRet = FEE_UNKNOWN_RETVAL;
+		createLogMessage(MSG_DEBUG,
+				"ControlEngine [command] returned unkown RetVal.", 0);
+	}
+
+// start here with new memory management check for ACK
+	// check if old ACK data is in MemoryNode list and free it
+	if ((cmndACKSize > HEADER_SIZE) && (findMemoryNode(cmndACK + HEADER_SIZE) != 0)) {
+		memNode = findMemoryNode(cmndACK + HEADER_SIZE);
+		freeMemoryNode(memNode);
+	} else { // free cmndACK in original way
+		if (cmndACK != 0) {
+			free(cmndACK);
+			cmndACK = 0;
+		}
+	}
+
+	// check if new result data is in MemoryNode list
+	memNode = findMemoryNode(issueParam.result);
+	if (memNode != 0) {
+		cmndACK = memNode->ptr;
+		useMM = true;
+	} else {
+		// create Acknowledge as return value of command
+		// HEADER_SIZE bytes are added before result to insert the command
+		// header before the result -> see CommandHeader in Client for details
+		cmndACK = (char*) malloc(issueParam.size + HEADER_SIZE);
+	}
+
+	if (cmndACK == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ERROR, "Insufficient memory for ACK.", 0);
+
+		// no ACK because no memory!
+		cmndACKSize = 0;
+		status = pthread_mutex_unlock(&command_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Lock command mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Error while trying to unlock command mutex.", 0);
+		}
+		return;
+	}
+
+#	ifdef __DEBUG
+	if (issueParam.size > 0) {
+//		printf("in cmnd-Handler -> issue result: ");
+//		printData(issueParam.result, 0, issueParam.size);
+//		fflush(stdout);
+	}
+#	endif
+
+	// checks checksumflag and calculates it if necessary
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		header.checksum = calculateChecksum((unsigned char*) issueParam.result,
+					issueParam.size);
+		// !!! Do (Huffman- ) encoding, if wished afterwards.
+	} else {
+		header.checksum = CHECKSUM_ZERO;
+	}
+
+	// keep the whole flags also for the result packet
+	header.errorCode = (short) issueParam.nRet;
+#	ifdef __DEBUG
+	printf("ErrorCode in Header: %d\n", header.errorCode);
+	fflush(stdout);
+#	endif
+
+	pHeaderStream = marshallHeader(&header);
+	memcpy((void*) cmndACK, (void*) pHeaderStream, HEADER_SIZE);
+	if (pHeaderStream != 0) {
+		free(pHeaderStream);
+	}
+
+	if (useMM) {
+	  /*
+#		ifdef __DEBUG
+		printf("ACK channel used with MemoryManagement in FeeServer.\n");
+		fflush(stdout);
+		createLogMessage(MSG_DEBUG,
+				"ACK channel used with MemoryManagement in FeeServer.", 0);
+#		endif
+	  */
+	} else {
+		memcpy(((void*) cmndACK + HEADER_SIZE), (void*) issueParam.result,
+				issueParam.size);
+	}
+
+	//store the size of the result globally
+	cmndACKSize = issueParam.size + HEADER_SIZE;
+	// propagate change of ACK(nowledge channel) to upper Layers
+	dis_update_service(serviceACKID);
+
+#	ifdef __DEBUG
+	// -- see the cmndACK as a char - string
+	printf("ACK \n");
+//	printData(cmndACK, HEADER_SIZE, cmndACKSize);
+	// -- see the cmndACK in a HEX view for the ALTRO
+	//print_package(cmndACK + HEADER_SIZE);
+#	endif
+
+	if ((!useMM) && (issueParam.result != 0)) {
+		free(issueParam.result);
+	}
+// end of new stuff for memory managment.
+
+/*
+	if (cmndACK != 0) {
+		free(cmndACK);
+		cmndACK = 0;
+	}
+	// create Acknowledge as return value of command
+	// HEADER_SIZE bytes are added before result to insert the command
+	// header before the result -> see CommandHeader in Client for details
+	cmndACK = (char*) malloc(issueParam.size + HEADER_SIZE);
+	if (cmndACK == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ERROR, "Insufficient memory for ACK.", 0);
+
+		// no ACK because no memory!
+		cmndACKSize = 0;
+		status = pthread_mutex_unlock(&command_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Lock command mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Error while trying to unlock command mutex.", 0);
+		}
+		return;
+	}
+
+#	ifdef __DEBUG
+	if (issueParam.size > 0) {
+//		printf("in cmnd-Handler -> issue result: ");
+//		printData(issueParam.result, 0, issueParam.size);
+//		fflush(stdout);
+	}
+#	endif
+
+	// checks checksumflag and calculates it if necessary
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		header.checksum = calculateChecksum((unsigned char*) issueParam.result,
+					issueParam.size);
+		// !!! Do (Huffman- ) encoding, if wished afterwards.
+	} else {
+		header.checksum = CHECKSUM_ZERO;
+	}
+
+	// keep the whole flags also for the result packet
+	header.errorCode = (short) issueParam.nRet;
+#	ifdef __DEBUG
+	printf("ErrorCode in Header: %d\n", header.errorCode);
+	fflush(stdout);
+#	endif
+
+	pHeaderStream = marshallHeader(&header);
+	memcpy((void*) cmndACK, (void*) pHeaderStream, HEADER_SIZE);
+	if (pHeaderStream != 0) {
+		free(pHeaderStream);
+	}
+	memcpy(((void*) cmndACK + HEADER_SIZE), (void*) issueParam.result,
+				issueParam.size);
+
+	//store the size of the result globally
+	cmndACKSize = issueParam.size + HEADER_SIZE;
+	// propagate change of ACK(nowledge channel) to upper Layers
+	dis_update_service(serviceACKID);
+
+#	ifdef __DEBUG
+	// -- see the cmndACK as a char - string
+	printf("ACK \n");
+//	printData(cmndACK, HEADER_SIZE, cmndACKSize);
+	// -- see the cmndACK in a HEX view for the ALTRO
+	//print_package(cmndACK + HEADER_SIZE);
+#	endif
+
+	if (issueParam.result != 0) {
+		free(issueParam.result);
+	}
+
+*/
+
+
+	// unlock command mutex, data has been sent
+	status = pthread_mutex_unlock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+				"Error while trying to unlock command mutex.", 0);
+	}
+}
+
+
+//-- user_routine to provide the ACK-data
+void ack_service(int* tag, char** address, int* size) {
+#ifdef __BENCHMARK
+	char benchmsg[200];
+#endif
+
+	if ((tag == 0) || (*tag != ACK_SERVICE_TAG)) {
+#		ifdef __DEBUG
+		printf("invalid ACK Service\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING, "DIM Framework called wrong ACK channel.",
+				0);
+		return;
+	}
+// use the line below for checking flags of an outgoing feePacket!
+//        printf("\nack_service was called flags are:%x%x\n", *(cmndACK+6), *(cmndACK+7));
+	if ((cmndACKSize > 0) && (cmndACK != 0)) {
+		*address = cmndACK;
+		*size = cmndACKSize;
+	} else {
+		*size = 0;
+	}
+#ifdef __BENCHMARK
+    // make benchmark entry
+	benchmsg[sprintf(benchmsg,
+			"FeeServer AckHandler (sending ACK) - Packet-ID: %d", *cmndACK)] = 0;
+    createBenchmark(benchmsg);
+#endif
+
+}
+
+
+void leaveCommandHandler(unsigned int id, short errorCode,
+			unsigned int msgType, char* message) {
+	int status = -1;
+
+#	ifdef __DEBUG
+	printf("%s\n", message);
+	fflush(stdout);
+#	endif
+
+	createLogMessage(msgType, message, 0);
+
+	// tell client that command is ignored
+	if (cmndACK != 0) {
+		free(cmndACK);
+		cmndACK = 0;
+	}
+	// send error code
+	cmndACK = createHeader(id, errorCode, false, false, 0);
+	cmndACKSize = HEADER_SIZE;
+	dis_update_service(serviceACKID);
+
+	// unlock command mutex to "free" commandHandler
+	status = pthread_mutex_unlock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+				"Error while trying to unlock command mutex.", 0);
+	}
+}
+
+
+void unlockIssueMutex() {
+	int status = -1;
+
+	status = pthread_mutex_unlock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock condition mutex error: %d. Going in ERROR state!\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+			"Unable to unlock watchdog mutex. No more commands will be possible for CE. Going in ERROR state!",
+			0);
+		state = ERROR_STATE;
+	}
+}
+
+
+//-- publish-function called by CE (Control Engine) to declare Float - Items
+int publish(Item* item) {
+	unsigned int id;
+	char* serviceName = 0;
+
+	// check for right state
+	if (state != COLLECTING) {
+		return FEE_WRONG_STATE;
+	}
+
+	// Testing for NULL - Pointer
+	// !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+	if (item == 0) {
+#		ifdef __DEBUG
+		printf("Bad item, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+	if (item->name == 0 || item->location == 0) {
+#		ifdef __DEBUG
+		printf("Bad item, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	// Check name for duplicate here (float)
+	if (findItem(item->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published (float), new float item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in INT list
+	if (findIntItem(item->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published (int), float item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+    // Check in Char service list
+    if (findCharItem(item->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, float item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+	// -- add item as service --
+	serviceName = (char*) malloc(serverNameLength + strlen(item->name) + 2);
+	if (serviceName == 0) {
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+	// terminate string with '\0'
+	serviceName[sprintf(serviceName, "%s_%s", serverName, item->name)] = 0;
+	id = dis_add_service(serviceName, "F", (int*) item->location,
+			sizeof(float), 0, 0);
+	free(serviceName);
+	add_item_node(id, item);
+
+	return FEE_OK;
+}
+
+
+//-- function to add service to our servicelist
+void add_item_node(unsigned int _id, Item* _item) {
+	//create new node with enough memory
+	ItemNode* newNode = 0;
+
+	newNode = (ItemNode*) malloc(sizeof(ItemNode));
+	if (newNode == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while adding itemNode!\n");
+#		endif
+		// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+		cleanUp();
+		exit(201);
+	}
+	//initialize "members" of node
+	newNode->prev = 0;
+	newNode->next = 0;
+	newNode->id = _id;
+	newNode->item = _item;
+	newNode->lastTransmittedValue = *(_item->location);
+	//if default deadband is negative -> set threshold 0, otherwise set half of defaultDeadband
+	newNode->threshold = (_item->defaultDeadband < 0) ? 0.0 : (_item->defaultDeadband / 2);
+ /*
+		if(_item->defaultDeadband < 0) {
+		newNode->threshold = 0.0;
+        } else {
+		newNode->threshold = _item->defaultDeadband / 2;
+	}
+*/
+	newNode->locBackup = _item->location;
+	newNode->checksum = calculateChecksum((unsigned char*) &(_item->location),
+			sizeof(volatile float*));
+	newNode->checksumBackup = newNode->checksum;
+
+#ifdef __DEBUG
+	// complete debug display of added Item
+/*
+	printf("Item: %d\n", _id);
+	printf("location: %f, locBackup %f\n", *(_item->location), *(newNode->locBackup));
+	printf("location addr: %p, locBackup addr %p\n", _item->location, newNode->locBackup);
+	printf("checksum1: %d, checksum2: %d\n\n", newNode->checksum,
+			newNode->checksumBackup);
+*/
+#endif
+
+#	ifdef __DEBUG
+	// short debug display of added Item
+	printf("init of %s with ID %d: %f\n", newNode->item->name, newNode->id,
+				newNode->lastTransmittedValue);
+	fflush(stdout);
+#	endif
+
+	++nodesAmount;
+	//redirect pointers of doubly linked list
+	if (firstNode != 0) {
+		lastNode->next = newNode;
+		newNode->prev = lastNode;
+		lastNode = newNode;
+	} else {
+		firstNode = newNode;
+		lastNode = newNode;
+	}
+}
+
+
+//-- Logging function -----
+void createLogMessage(unsigned int type, char* description, char* origin) {
+	int status = -1; // for mutex
+	int descLength = 0;
+	int originLength = 0;
+	time_t timeVal;
+	struct tm* now = 0;
+
+	// check if not in COLLECTING state
+	if (state == COLLECTING) {
+		return; // no log channel available at that time
+	}
+
+	//lock access with mutex due to the fact that FeeServer & CE can use it
+	status = pthread_mutex_lock(&log_mut);
+	// discard eventual error, this would cause more problems
+	// in each case, do NOT call createLogMessage ;) !
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Lock log mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	if (!checkLogLevel(type)) {   //if not -> unlock mutex -> return
+		//unlock mutex
+		status = pthread_mutex_unlock(&log_mut);
+		// discard eventual error, this would cause more problems
+		// in each case, do NOT call createLogMessage ;)
+#		ifdef __DEBUG
+		if (status != 0) {
+			printf("Unlock log mutex error: %d\n", status);
+			fflush(stdout);
+		}
+#		endif
+		return;
+	}
+
+	// check if message is a replicate of the last log message
+	if ((logWatchDogRunning) && (strncmp(description, lastMessage.description,
+				(MSG_DESCRIPTION_SIZE - 1)) == 0)) {
+		replicatedMsgCount++;
+
+		//unlock mutex
+        status = pthread_mutex_unlock(&log_mut);
+        // discard eventual error, this would cause more problems
+        // in each case, do NOT call createLogMessage ;)
+#       ifdef __DEBUG
+        if (status != 0) {
+            printf("Unlock log mutex error: %d\n", status);
+            fflush(stdout);
+        }
+#       endif
+		// message is a replicate of last message, leave Messenger
+        return;
+	} else {
+		// message is not a replicate of last one send,
+		// check if replicated log messages are pending
+		if (checkReplicatedLogMessage()) {
+			// sleep a small amount to let Dim update channel
+//			usleep(1000);
+		}
+	}
+
+	// prepare data (cut off overlength)
+	if (description != 0) {
+		// limit description to maximum of field in message struct if longer
+		descLength = ((strlen(description) >= MSG_DESCRIPTION_SIZE)
+				? (MSG_DESCRIPTION_SIZE - 1) : strlen(description));
+	}
+	if (origin != 0) {
+		// limit origin to maximum of field in message struct if longer
+		// be aware that "source" also contains server name and a slash
+		originLength = ((strlen(origin) >= MSG_SOURCE_SIZE - serverNameLength - 1)
+				? (MSG_SOURCE_SIZE - serverNameLength - 2) : strlen(origin));
+	}
+
+	//set type
+	message.eventType = type;
+	//set detector
+	memcpy(message.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+	//set origin
+	strcpy(message.source, serverName);
+	if (origin != 0) {
+		// append slash
+		strcpy(message.source + serverNameLength, "/");
+		// append origin maximum til end of source field in message struct
+		strncpy(message.source + serverNameLength + 1, origin, originLength);
+		// terminate with '\0'
+		message.source[serverNameLength + 1 + originLength] = 0;
+	}
+	//set description
+	if (description != 0) {
+		// fill description field of message struct maximum til end
+		strncpy(message.description, description, descLength);
+		// terminate with '\0'
+		message.description[descLength] = 0;
+	} else {
+		strcpy(message.description, "No description specified.");
+	}
+	//set current date and time
+	time(&timeVal);
+	now = localtime(&timeVal);
+	message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+				now)] = 0;
+
+	//updateService
+	dis_update_service(messageServiceID);
+
+	// copy send message to storage of last message
+	lastMessage = message;
+
+	//unlock mutex
+	status = pthread_mutex_unlock(&log_mut);
+	// discard eventual error, this would cause more problems
+	// in each case, do NOT call createLogMessage ;)
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock log mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+}
+
+bool checkLogLevel(int event) {
+	// Comparision with binary AND, if result has 1 as any digit, event is
+	// included in current logLevel
+	if ((logLevel & event) != 0) {
+		return true;
+	}
+	return false;
+}
+
+void dim_error_msg_handler(int severity, int error_code, char* msg) {
+	char type[8];
+	int eventType = 0;
+	char message[MSG_DESCRIPTION_SIZE];
+	int length = 0;
+
+	// map severity to own log levels
+	switch (severity) {
+		case 0:
+			type[sprintf(type, "INFO")] = 0;
+			eventType = MSG_INFO;
+			break;
+		case 1:
+			type[sprintf(type, "WARNING")] = 0;
+			eventType = MSG_WARNING;
+			break;
+		case 2:
+			type[sprintf(type, "ERROR")] = 0;
+			eventType = MSG_ERROR;
+			break;
+		case 3:
+			type[sprintf(type, "FATAL")] = 0;
+			eventType = MSG_ERROR;
+			break;
+		default :
+			type[sprintf(type, "UNKNOWN")] = 0;
+			eventType = MSG_WARNING;
+			break;
+	}
+
+#   ifdef __DEBUG
+	// print to command line if wanted
+	printf("DIM: [%s - %d] - %d: %s.\n", type, severity, error_code, msg);
+	fflush(stdout);
+#	endif
+
+	// send message only if FeeServer is in serving or error state
+	if ((state == RUNNING) || (state == ERROR_STATE)) {
+		// put DIM error code in front of message
+		message[sprintf(message, "%s: ", mapDimErrorCodes(error_code))] = 0;
+		length = strlen(message);
+		strncpy((message + length), msg, (MSG_DESCRIPTION_SIZE - length - 1));
+		message[MSG_DESCRIPTION_SIZE - 1] = 0;
+		// deliver message to FeeServer message system
+		createLogMessage(eventType, message, "DIM\0");
+	}
+}
+
+char* mapDimErrorCodes(int errorCode) {
+	switch (errorCode) {
+		case (0x1): return "DIMDNSUNDEF";
+		case (0x2): return "DIMDNSREFUS";
+		case (0x3): return "DIMDNSDUPLC";
+		case (0x4): return "DIMDNSEXIT ";
+		case (0x5): return "DIMDNSTMOUT";
+
+		case (0x10): return "DIMSVCDUPLC";
+		case (0x11): return "DIMSVCFORMT";
+		case (0x12): return "DIMSVCINVAL";
+		case (0x13): return "DIMSVCTOOLG";
+
+		case (0x20): return "DIMTCPRDERR";
+		case (0x21): return "DIMTCPWRRTY";
+		case (0x22): return "DIMTCPWRTMO";
+		case (0x23): return "DIMTCPLNERR";
+		case (0x24): return "DIMTCPOPERR";
+		case (0x25): return "DIMTCPCNERR";
+		case (0x26): return "DIMTCPCNEST";
+
+		case (0x30): return "DIMDNSCNERR";
+		case (0x31): return "DIMDNSCNEST";
+
+		default: return "DIMUNKWNERR";
+	}
+}
+
+//-- tells the server, that he can start serving;
+//-- no services can be added when server is in state RUNNING
+int start(int initState) {
+	int nRet = FEE_UNKNOWN_RETVAL;
+	char* serviceName = 0;
+	char* messageName = 0;
+	char* commandName = 0;
+	char msgStructure[50];
+
+	if (state == COLLECTING) {
+		//----- add service for acknowledge -----
+		serviceName = (char*) malloc(serverNameLength + 13);
+		if (serviceName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create ACK channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (-> Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose ACK channel name and terminate with '\0'
+		serviceName[sprintf(serviceName, "%s_Acknowledge", serverName)] = 0;
+		if (cmndACK != 0) {
+			free(cmndACK);
+			cmndACK = 0;
+		}
+		// take created header
+		cmndACK = createHeader(0, initState, false, false, 0);
+		cmndACKSize = HEADER_SIZE;
+		// add ACK channel as service to DIM
+		serviceACKID = dis_add_service(serviceName, "C", 0, 0, &ack_service,
+				ACK_SERVICE_TAG);
+		free(serviceName);
+
+		//----- add message service -----
+		messageName = (char*) malloc(serverNameLength + 9);
+		if (messageName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create message channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose message channel name and terminate with '\0'
+		messageName[sprintf(messageName, "%s_Message", serverName)] = 0;
+		// compose message structure
+		msgStructure[sprintf(msgStructure, "I:1;C:%d;C:%d;C:%d;C:%d",
+				MSG_DETECTOR_SIZE, MSG_SOURCE_SIZE, MSG_DESCRIPTION_SIZE,
+				MSG_DATE_SIZE)] = 0;
+		// add message channel as service to DIM
+		messageServiceID = dis_add_service(messageName, msgStructure, (int*) &message,
+				sizeof(unsigned int) + MSG_DETECTOR_SIZE + MSG_SOURCE_SIZE +
+				MSG_DESCRIPTION_SIZE + MSG_DATE_SIZE, 0, 0);
+		free(messageName);
+
+		//----- before start serving we add the only command handled by the server -----
+		commandName = (char*) malloc(serverNameLength + 9);
+		if (commandName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create CMD channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose Command channel name and terminate with '\0'
+		commandName[sprintf(commandName, "%s_Command", serverName)] = 0;
+		// add CMD channel as command to DIM, no tag needed,
+		// only one command possible
+		commandID = dis_add_cmnd(commandName, "C", &command_handler, 0);
+		free(commandName);
+
+		//-- now start serving --
+		if (dis_start_serving(serverName) == 1) {
+			// if start server was successful
+			if (initState == FEE_OK) {
+				state = RUNNING;
+				// start monitoring thread now
+				nRet = startMonitorThread();
+				if (nRet != FEE_OK) {
+#					ifdef __DEBUG
+					printf("Could NOT start monitor thread, error: %d\n", nRet);
+					fflush(stdout);
+#					endif
+					createLogMessage(MSG_ERROR,
+							"Unable to start monitor thread on FeeServer.", 0);
+					return nRet;
+				}
+				// inform CE about update rate
+				provideUpdateRate();
+				createLogMessage(MSG_INFO,
+						"FeeServer started correctly, including monitor thread.", 0);
+				nRet = FEE_OK;
+			} else {
+				state = ERROR_STATE;
+				createLogMessage(MSG_ERROR,
+						"Initialisation of ControlEngine failed. FeeServer is running in ERROR state (without CE).",
+						0);
+				// starting itself worked, so nRet is OK
+				nRet = FEE_OK;
+			}
+			// start "relicated log messages" watchdog now
+			nRet = startLogWatchDogThread();
+            if (nRet != FEE_OK) {
+#               ifdef __DEBUG
+                printf("Could NOT start log watch dog thread, error: %d; FeeServer will run without it.\n",
+						nRet);
+                fflush(stdout);
+#               endif
+                createLogMessage(MSG_WARNING,
+                        "Can not start LogWatchDog thread (filters replicated MSGs). Uncritical error - running without it.",
+						 0);
+            }
+		} else {
+			// starting server was not successful, so remove added core - services
+			// so they can be added again by next start() - call
+			dis_remove_service(serviceACKID);
+			free(cmndACK);
+			cmndACK = 0;
+			cmndACKSize = 0;
+			dis_remove_service(messageServiceID);
+			dis_remove_service(commandID);
+			nRet = FEE_FAILED;
+		}
+		return nRet;
+	}
+	//server is already running
+	return FEE_OK;
+}
+
+// ****************************************
+// ---- starts the monitoring thread ----
+// ****************************************
+int startMonitorThread() {
+	int status = -1;
+	pthread_attr_t attr;
+
+	// when item lists are empty, no monitor threads are needed
+	if ((nodesAmount == 0) && (intNodesAmount == 0)) {
+		createLogMessage(MSG_INFO,
+				"No Items (float and int) for monitoring are available.", 0);
+		return FEE_OK;
+	}
+
+	// init thread attribut and set it
+	status = pthread_attr_init(&attr);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Init attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		return FEE_MONITORING_FAILED;
+	}
+	status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		return FEE_MONITORING_FAILED;
+	}
+
+	// start the monitor thread for float values
+	if (nodesAmount > 0) {
+		status = pthread_create(&thread_mon, &attr, (void*)&monitorValues, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error [mon - float]: %d\n", status);
+			fflush(stdout);
+#			endif
+			return FEE_MONITORING_FAILED;
+		}
+	}
+
+	//start the monitor thread for int values --> NEW v.0.8.1
+	if (intNodesAmount > 0) {
+		status = pthread_create(&thread_mon_int, &attr, (void*)&monitorIntValues, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error [mon - int]: %d\n", status);
+			fflush(stdout);
+#			endif
+			return FEE_MONITORING_FAILED;
+		}
+	}
+
+	// cleanup attribut
+	status = pthread_attr_destroy(&attr);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Destroy attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		// no error return value necessary !
+	}
+	return FEE_OK;
+}
+
+// --- this is the monitoring thread ---
+void monitorValues() {
+	int status = -1;
+	int nRet;
+	unsigned long sleepTime = 0;
+	ItemNode* current = 0;
+	char msg[120];
+    unsigned long innerCounter = 0; // used for update check after time interval
+    unsigned long outerCounter = 0; // used for update check after time interval
+
+	// set flag, that monitor thread has been started
+	monitorThreadStarted = true;
+
+	// set cancelation type
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error [mon - float]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (float) properly. Monitoring is not affected.", 0);
+	}
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error [mon - float]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (float) properly. Monitoring is not affected.", 0);
+	}
+
+	createLogMessage(MSG_DEBUG, "Started monitor thread for FLOAT values successfully.", 0);
+
+	while (1) {
+		current = firstNode;
+		sleepTime = (unsigned long) (updateRate / nodesAmount);
+		while (current != 0) { // is lastNode->next (end of list)
+ 			if (!checkLocation(current)) {
+				msg[sprintf(msg, "Value of item %s (float) is corrupt, reconstruction failed. Ignoring!",
+						current->item->name)] = 0;
+				createLogMessage(MSG_ERROR, msg, 0);
+				// message and do some stuff (like invalidate value)
+				// (test, what happens if pointer is redirected ???)
+			} else {
+				if ((fabsf((*(current->item->location)) - current->lastTransmittedValue)
+						>= current->threshold) || (outerCounter ==
+						(innerCounter * TIME_INTERVAL_MULTIPLIER))) {
+					nRet = dis_update_service(current->id);
+					current->lastTransmittedValue = *(current->item->location);
+#					ifdef __DEBUG
+					//printf("Updated %d clients for service %s [float]: %f\n", nRet,
+					//		current->item->name, *(current->item->location));
+					//fflush(stdout);
+#					endif
+				}
+			}
+
+			++innerCounter;
+			current = current->next;
+			usleep(sleepTime * 1000);
+			// sleeps xy microseconds, needed milliseconds-> "* 1000"
+		}
+		// with the check of both counter, each service is at least updated after
+		// every (deadband updateRate * nodesAmount) seconds
+		innerCounter = 0;
+		++outerCounter;
+		// after every service in list is updated set counter back to 0
+		// the TIME_INTERVAL_MULTIPLIER is used to enlarge the time interval of
+		// the request of services without touching the deadband checker updateRate
+		if (outerCounter >= (nodesAmount * TIME_INTERVAL_MULTIPLIER)) {
+			outerCounter = 0;
+		}
+	}
+	// should never be reached !
+	pthread_exit(0);
+}
+
+// checks against bitflips in location
+bool checkLocation(ItemNode* node) {
+	if (node->item->location == node->locBackup) {
+		// locations are identical, so no bitflip
+		return true;
+	}
+	// locations are not identical, check further
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->item->location), sizeof(volatile float*))) {
+		// checksum tells, that first location should be valid, repair backup
+		node->locBackup = node->item->location;
+		return true;
+	}
+	// original location or first checksum is wrong, continue checking
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile float*))) {
+		// checksum tells, that location backup should be valid, repair original
+		node->item->location = node->locBackup;
+		return true;
+	}
+	// location backup or first checksum is wrong, continue checking
+
+	if (node->checksum == node->checksumBackup) {
+		// it seems that location and location backup are wrong
+		// or checksum value runs banana, not repairable
+		return false;
+	}
+	// it seems that first checksum is wrong
+	// try to fix with second checksum
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->item->location), sizeof(volatile float*))) {
+		// checksum backup tells, that first location should be valid, repair backup
+		node->locBackup = node->item->location;
+		// repair first checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// original location or second checksum is wrong, continue checking
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile float*))) {
+		// checksum backup tells, that location backup should be valid, repair original
+		node->item->location = node->locBackup;
+		// repair checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// value is totally banana, no chance to fix
+	return false;
+}
+
+// ****************************************
+// ---- starts the LogWatchdog Thread  ----
+// ****************************************
+int startLogWatchDogThread() {
+    int status = -1;
+    pthread_attr_t attr;
+
+    // init thread attribut and set it
+    status = pthread_attr_init(&attr);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Init attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+    status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+
+    // start the LogWatchDog thread
+    status = pthread_create(&thread_logWatchdog, &attr, (void*) &runLogWatchDog,
+		0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Create thread error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+
+    // cleanup attribut
+    status = pthread_attr_destroy(&attr);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Destroy attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        // no error return value necessary !
+    }
+
+	return FEE_OK;
+}
+
+void runLogWatchDog() {
+	int status = -1;
+	unsigned int sleepSec = 0;
+	unsigned int sleepMilliSec = 0;
+
+    // set cancelation type
+    status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set cancel state error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        createLogMessage(MSG_WARNING,
+            "Can not set cancel state for LogWatchDog thread. WatchDog should not not be affected.",
+			0);
+    }
+    status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set cancel type error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        createLogMessage(MSG_WARNING,
+            "Can not set cancel type for LogWatchDog thread. WatchDog should not not be affected.",
+			0);
+    }
+
+    // thread started successfully, set flag accordingly
+    logWatchDogRunning = true;
+    createLogMessage(MSG_DEBUG,
+            "LogWatchDog thread for filtering replicated log messages successfully started.",
+            0);
+#   ifdef __DEBUG
+    printf("LogWatchDog thread for filtering replicated log messages successfully started.\n");
+    fflush(stdout);
+#   endif
+
+	while (1) {
+		// before test for replicated messages lock mutex,
+		// DON'T call createLogMessage() inside mutex lock
+    	status = pthread_mutex_lock(&log_mut);
+    	// discard eventual error, this would cause more problems
+#   	ifdef __DEBUG
+    	if (status != 0) {
+        	printf("Lock log mutex error: %d\n", status);
+        	fflush(stdout);
+    	}
+#   	endif
+
+		// perform check here
+		checkReplicatedLogMessage();
+
+		// release mutex
+        status = pthread_mutex_unlock(&log_mut);
+        // discard eventual error, this would cause more problems
+#       ifdef __DEBUG
+        if (status != 0) {
+            printf("Unlock log mutex error: %d\n", status);
+            fflush(stdout);
+        }
+#       endif
+
+		// set cancelation point
+		pthread_testcancel();
+		// prepare sleep time (timeout)
+		sleepSec = logWatchDogTimeout / 1000;
+		sleepMilliSec = logWatchDogTimeout % 1000;
+		usleep(sleepMilliSec * 1000);
+		dtq_sleep(sleepSec);
+		// set cancelation point
+		pthread_testcancel();
+	}
+
+	// should never be reached !
+	pthread_exit(0);
+}
+
+bool checkReplicatedLogMessage() {
+	int tempLength = 0;
+	time_t timeVal;
+	struct tm* now = 0;
+
+	// check if replicated messages are pending
+	if (replicatedMsgCount > 0) {
+        // replicated messages occured in between, informing upper layer ...
+        message.description[sprintf(message.description,
+                "Log message repeated %d times: ", replicatedMsgCount)] = 0;
+        // append original message as far as possible
+        tempLength = strlen(message.description);
+		if ((strlen(lastMessage.description) + tempLength) >=
+				MSG_DESCRIPTION_SIZE) {
+            // copy only a part of the original message that fits in the
+            // description field
+            strncpy((message.description + tempLength), lastMessage.description,
+                    (MSG_DESCRIPTION_SIZE - tempLength));
+            message.description[MSG_DESCRIPTION_SIZE - 1] = 0;
+        } else {
+            // enough space free, copy the whole original message
+            strcpy((message.description + tempLength),
+                    lastMessage.description);
+            message.description[strlen(lastMessage.description) +
+                    tempLength - 1] = 0;
+        }
+		// set correct timestamp
+        time(&timeVal);
+		now = localtime(&timeVal);
+		message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+				now)] = 0;
+
+        //update MsgService with notification of repeated messages
+        dis_update_service(messageServiceID);
+        // clearing counter
+        replicatedMsgCount = 0;
+		return true;
+    }
+	return false;
+}
+
+void* threadIssue(void* threadParam) {
+	IssueStruct* issueParam = (IssueStruct*) threadParam;
+	int status;
+
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+	}
+
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+	}
+
+	// executing command inside CE
+	issueParam->nRet = issue(issueParam->command, &(issueParam->result), &(issueParam->size));
+
+    //set cancel type to deferred
+    status = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error: %d\n", status);
+		fflush(stdout);
+#	   endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+    }
+
+	//lock the mutex before broadcast
+	status = pthread_mutex_lock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock cond mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to lock condition mutex for watchdog in issue thread. Execution might eventually be affected.",
+			0);
+	}
+
+	//signal that issue has returned from ControlEngine
+	// maybe try the call pthread_cond_signal instead for performance
+	pthread_cond_broadcast(&cond);
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock cond mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to unlock condition mutex for watchdog in issue thread. Execution might eventually be affected.",
+			0);
+	}
+
+//	not needed, return 0 is better solution
+//	pthread_exit(0);
+	return 0;
+}
+
+
+char* createHeader(unsigned int id, short errorCode, bool huffmanFlag,
+					bool checksumFlag, int checksum) {
+	char* pHeader = 0;
+	FlagBits flags = NO_FLAGS;
+
+	if (huffmanFlag) {
+		//set huffman flag via binary OR
+		flags |= HUFFMAN_FLAG;
+	}
+	if (checksumFlag) {
+		//set checksum flag via binary OR
+		flags |= CHECKSUM_FLAG;
+	}
+
+	pHeader = (char*) malloc(HEADER_SIZE);
+	if (pHeader == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while trying to create header!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+				"No more memory available, unable to continue serving - exiting.",
+				0);
+		cleanUp();
+		exit(201);
+	}
+
+	memcpy(pHeader, &id, HEADER_SIZE_ID);
+	memcpy(pHeader + HEADER_OFFSET_ID, &errorCode, HEADER_SIZE_ERROR_CODE);
+	memcpy(pHeader + HEADER_OFFSET_ERROR_CODE, &flags, HEADER_SIZE_FLAGS);
+	memcpy(pHeader + HEADER_OFFSET_FLAGS, &checksum, HEADER_SIZE_CHECKSUM);
+
+	return pHeader;
+}
+
+
+bool checkCommand(char* payload, int size, unsigned int checksum) {
+	unsigned int payloadChecksum = 0;
+
+	// payload has to contain data, if size is greater than 0,
+	// and size must not be negative
+	if (((payload == 0) && (size > 0)) || (size < 0)) {
+		return false;
+	}
+
+	payloadChecksum = calculateChecksum((unsigned char*) payload, size);
+#	ifdef __DEBUG
+	printf("\nReceived Checksum: \t%x ,  \nCalculated Checksum: \t%x .\n\n",
+		checksum, payloadChecksum);
+	fflush(stdout);
+#	endif
+	return (payloadChecksum == checksum) ? true : false;
+}
+
+// ! Problems with signed and unsigned char, make differences in checksum
+// -> so USE "unsigned char*" !
+unsigned int calculateChecksum(unsigned char* buffer, int size) {
+	int n;
+	unsigned int checks = 0;
+	unsigned long adler = 1L;
+	unsigned long part1 = adler & 0xffff;
+	unsigned long part2 = (adler >> 16) & 0xffff;
+
+	// calculates the checksum with the Adler32 algorithm
+	for (n = 0; n < size; n++) {
+		part1 = (part1 + buffer[n]) % ADLER_BASE;
+		part2 = (part2 + part1) % ADLER_BASE;
+	}
+	checks = (unsigned int) ((part2 << 16) + part1);
+
+	return checks;
+}
+
+char* marshallHeader(CommandHeader* pHeader) {
+	char* tempHeader = 0;
+
+	tempHeader = (char*) malloc(HEADER_SIZE);
+	if (tempHeader == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+				"No more memory available, unable to continue serving - exiting.",
+				0);
+		cleanUp();
+		exit(201);
+	}
+
+	memcpy(tempHeader, &(pHeader->id), HEADER_SIZE_ID);
+	memcpy(tempHeader + HEADER_OFFSET_ID, &(pHeader->errorCode), HEADER_SIZE_ERROR_CODE);
+	memcpy(tempHeader + HEADER_OFFSET_ERROR_CODE, &(pHeader->flags), HEADER_SIZE_FLAGS);
+	memcpy(tempHeader + HEADER_OFFSET_FLAGS, &(pHeader->checksum), HEADER_SIZE_CHECKSUM);
+
+	return tempHeader;
+}
+
+// *********************************************************************************************
+// ---------------- here come all the FeeServer commands ----------------------------------------
+// *********************************************************************************************
+void updateFeeServer(IssueStruct* issueParam) {
+#ifdef ENABLE_MASTERMODE
+	int status = 0;
+	int i = 0;
+	FILE* fp = 0;
+
+	if ((*issueParam).size == 0) {
+		createLogMessage(MSG_ERROR, "Received new FeeServer with size 0.", 0);
+		return;
+	}
+#	ifdef __DEBUG
+	printf("Received update command, updating FeeServer now!\n");
+	fflush(stdout);
+#	endif
+	// execute instruction self and release mutex before return
+	fp = fopen("newFeeserver", "w+b");
+	if (fp == 0) {
+		createLogMessage(MSG_ERROR, "Unable to save new FeeServer binary.", 0);
+		return;
+	}
+
+	for ( i = 0; i < (*issueParam).size; ++i) {
+		fputc((*issueParam).command[i], fp);
+	}
+	fclose(fp);
+	createLogMessage(MSG_INFO, "FeeServer updated.", 0);
+
+	// should we call cleanUp() before restart
+	// better not: another possibility to hang ???
+	// -> cleanUp is in restart implicit ! except opened drivers
+	// could only be necessary, if some driver conns have to be closed.
+	cleanUp();
+	status = pthread_mutex_unlock(&command_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock FeeCommand mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// Exit status "3" tells the starting script to finalise update and restart
+	// FeeServer after termination.
+	exit(3);
+#endif //ENABLE_MASTERMODE
+}
+
+void restartFeeServer() {
+	triggerRestart(FEE_EXITVAL_RESTART);
+}
+
+void triggerRestart(int exitVal) {
+	int status = 0;
+	char msg[80];
+
+#	ifdef __DEBUG
+	printf("Triggering restart with exit value: %d\n", exitVal);
+	fflush(stdout);
+#	endif
+    msg[sprintf(msg, "Restarting FeeServer - exit value: %d ", exitVal)] = 0;
+    createLogMessage(MSG_INFO, msg, 0);
+
+	// should we call cleanUp() before restart
+	// better not: another possibility to hang ???
+	// -> cleanUp is in restart implicit ! except opened drivers
+	// could only be necessary, if some driver cons has to be closed.
+	cleanUp();
+	status = pthread_mutex_unlock(&command_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock FeeCommand mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+	// Exit status tells the startScript which type of restart is performed
+	exit(exitVal);
+}
+
+int setDeadband(IssueStruct* issueParam) {
+	char* itemName = 0;
+	float newDeadband = 0;
+	int nameLength = 0;
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	char msg[100];
+	unsigned int count = 0;
+
+	if ((*issueParam).size <= sizeof(newDeadband)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	nameLength = (*issueParam).size - sizeof(newDeadband);
+
+	if (nameLength <= 0) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting dead band contained no service name.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	itemName = (char*) malloc(nameLength + 1);
+	if (itemName == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	memcpy(&newDeadband, (*issueParam).command, sizeof(newDeadband));
+	memcpy(itemName, (*issueParam).command + sizeof(newDeadband), nameLength);
+	itemName[nameLength] = 0;
+
+	if (itemName[0] != '*') {
+		// search wanted itemNode
+		node = findItem(itemName);
+		if (node == 0) {
+			//check in IntItemList
+			intNode = findIntItem(itemName);
+		}
+		if ((node == 0) && (intNode == 0)) {
+			// message is NOT sent in findItem() or findIntItem()
+			msg[sprintf(msg, "Item %s not found in list.", itemName)] = 0;
+			createLogMessage(MSG_WARNING, msg, 0);
+#			ifdef __DEBUG
+			printf("Item %s not found in list.\n", itemName);
+			fflush(stdout);
+#			endif
+
+			free(itemName);
+			(*issueParam).size = 0;
+			createLogMessage(MSG_DEBUG,
+					"FeeServer command for setting dead band contained invalid parameter.",
+					0);
+			return FEE_INVALID_PARAM;
+		} else {
+			// set new threshold ( = dead  band / 2)
+			if (node != 0) {
+				node->threshold = newDeadband / 2;
+			} else {
+				intNode->threshold = newDeadband / 2;
+			}
+#			ifdef __DEBUG
+			printf("Set deadband on item %s to %f.\n", itemName, newDeadband);
+			fflush(stdout);
+#			endif
+			msg[sprintf(msg, "New dead band (%f) is set for item %s.",
+					newDeadband, itemName)] = 0;
+			createLogMessage(MSG_INFO, msg, 0);
+		}
+	} else {
+		// set now for all wanted value the new deadband
+		count = setDeadbandBroadcast(itemName, newDeadband);
+
+#		ifdef __DEBUG
+		printf("Set deadband for %d items (%s) to %f.\n", count, itemName, newDeadband);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "New dead band (%f) is set for %d items (%s).",
+				newDeadband, count, itemName)] = 0;
+		createLogMessage(MSG_INFO, msg, 0);
+	}
+
+	free(itemName);
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getDeadband(IssueStruct* issueParam) {
+	char* itemName = 0;
+	int nameLength = 0;
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	float currentDeadband = 0;
+	char msg[120];
+
+	if ((*issueParam).size <= 0) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for getting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	nameLength = (*issueParam).size;
+	itemName = (char*) malloc(nameLength + 1);
+	if (itemName == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	memcpy(itemName, (*issueParam).command, nameLength);
+	itemName[nameLength] = 0;
+
+	// search wanted itemNode
+	node = findItem(itemName);
+	if (node == 0) {
+		//check in IntItemList
+		intNode = findIntItem(itemName);
+	}
+	if ((node == 0) && (intNode == 0)) {
+		// message is NOT sent in findItem() or findIntItem()
+		msg[sprintf(msg, "Item %s not found in list.", itemName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", itemName);
+		fflush(stdout);
+#		endif
+
+		free(itemName);
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for getting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	} else {
+		(*issueParam).result = (char*) malloc(sizeof(float) + nameLength);
+		if ((*issueParam).result == 0) {
+			(*issueParam).size = 0;
+			return FEE_INSUFFICIENT_MEMORY;
+		}
+
+		// copy current deadband value to ACK result
+		if (node != 0) {
+			currentDeadband = node->threshold * 2.0; // compute deadband
+		} else {
+			currentDeadband = intNode->threshold * 2.0; // compute deadband
+		}
+
+		memcpy((*issueParam).result, &currentDeadband, sizeof(float));
+		memcpy((*issueParam).result + sizeof(float), itemName, nameLength);
+		(*issueParam).size = sizeof(float) + nameLength;
+#		ifdef __DEBUG
+		printf("Current deadband on item %s is %f.\n", itemName, currentDeadband);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "Current deadband for item %s is %f.", itemName,
+				currentDeadband)] = 0;
+		createLogMessage(MSG_DEBUG, msg, 0);
+	}
+	free(itemName);
+	return FEE_OK;
+}
+
+int setIssueTimeout(IssueStruct* issueParam) {
+	char msg[70];
+	unsigned long newTimeout;
+
+	if ((*issueParam).size < sizeof(unsigned long)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting issue timeout contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&newTimeout, (*issueParam).command, sizeof(unsigned long));
+
+	// check new timeout for possible buffer overflow (value will be multiplied
+	// with 1000 later -> has to lower than 4294967 )
+	if (newTimeout > MAX_ISSUE_TIMEOUT) {
+        (*issueParam).size = 0;
+        createLogMessage(MSG_WARNING,
+                "New timeout for issue watchdog exceeded value limit (4294967).",
+                0);
+        return FEE_INVALID_PARAM;
+    }
+
+	issueTimeout = newTimeout;
+#	ifdef __DEBUG
+	printf("set new Issue timeout to %lu\n", issueTimeout);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Watch dog time out is set to %lu.", issueTimeout)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getIssueTimeout(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned long));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current timeout for issue to ACK result
+	memcpy((*issueParam).result, &issueTimeout, sizeof(unsigned long));
+	(*issueParam).size = sizeof(unsigned long);
+#	ifdef __DEBUG
+	printf("issue timeout is %lu\n", issueTimeout);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Issue timeout is %lu.", issueTimeout)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+int setUpdateRate(IssueStruct* issueParam) {
+	char msg[70];
+	unsigned short newRate;
+
+	if ((*issueParam).size < sizeof(unsigned short)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting update rate contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&newRate, (*issueParam).command, sizeof(unsigned short));
+	updateRate = newRate;
+	// inform CE about update rate change
+	provideUpdateRate();
+#	ifdef __DEBUG
+	printf("set new update rate to %d\n", updateRate);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "New update rate for monitoring items: %d.", updateRate)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getUpdateRate(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned short));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current update rate to ACK result
+	memcpy((*issueParam).result, &updateRate, sizeof(unsigned short));
+	(*issueParam).size = sizeof(unsigned short);
+#	ifdef __DEBUG
+	printf("update rate is %d\n", updateRate);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Monitoring update rate is %d.", updateRate)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+// be aware of different size of unsigned int in heterogen systems !!
+int setLogLevel(IssueStruct* issueParam) {
+	int status = -1;
+	char msg[70];
+	unsigned int testLogLevel = 0;
+
+	if ((*issueParam).size < sizeof(unsigned int)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting log level contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&testLogLevel, (*issueParam).command, sizeof(unsigned int));
+	// check loglevel for valid data
+	if (testLogLevel > MSG_MAX_VAL) {
+#		ifdef __DEBUG
+		printf("received invalid log level %d\n", testLogLevel);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting log level contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	status = pthread_mutex_lock(&log_mut);
+	// discard eventual error
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock log mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		(*issueParam).size = 0;
+		return FEE_FAILED;
+	} else {
+		logLevel = testLogLevel | MSG_ALARM;
+
+		status = pthread_mutex_unlock(&log_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Unlock log mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING, "Unable to unlock logger mutex.", 0);
+		}
+
+#		ifdef __DEBUG
+		printf("set new logLevel to %d\n", logLevel);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "New log level on FeeServer: %d.", logLevel)] = 0;
+		createLogMessage(MSG_INFO, msg, 0);
+
+		(*issueParam).size = 0;
+		return FEE_OK;
+	}
+}
+
+int getLogLevel(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned int));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current update rate to ACK result
+	memcpy((*issueParam).result, &logLevel, sizeof(unsigned int));
+	(*issueParam).size = sizeof(unsigned int);
+#	ifdef __DEBUG
+	printf("Requested loglevel is %d\n", logLevel);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Requested LogLevel is %d.", logLevel)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+void provideUpdateRate() {
+	FeeProperty feeProp;
+	if ((ceInitState == CE_OK) && ((nodesAmount > 0) || (intNodesAmount > 0))) {
+		feeProp.flag = PROPERTY_UPDATE_RATE;
+		feeProp.uShortVal = updateRate;
+		signalFeePropertyChanged(&feeProp);
+	}
+}
+
+
+unsigned int setDeadbandBroadcast(char* name, float newDeadbandBC) {
+	unsigned int count = 0;
+	ItemNode* current = 0;
+	IntItemNode* intCurrent = 0;
+	char* namePart = 0;
+	char* itemNamePart = 0;
+
+	if (name == 0) {
+		return count;
+	}
+
+	// pointer at first occurance of "_"
+	namePart = strpbrk(name, "_");
+	if (namePart == 0) {
+		return count;
+	}
+
+	// go through list of float values
+	current = firstNode;
+	while (current != 0) {  // is end of list
+		// pointer at first occurance of "_"
+		itemNamePart = strpbrk(current->item->name, "_");
+		// check if "_" not first character in name and is existing
+		if ((itemNamePart == 0) || (itemNamePart == current->item->name)) {
+			current = current->next;
+			continue;
+		}
+		if (strcmp(namePart, itemNamePart) == 0) {
+			// success, set threshold (= deadband / 2)
+			current->threshold = newDeadbandBC / 2;
+			++count;
+		}
+		current = current->next;
+	}
+
+	// go through list of integer values
+	intCurrent = firstIntNode;
+	while (intCurrent != 0) {  // is end of list
+		// pointer at first occurance of "_"
+		itemNamePart = strpbrk(intCurrent->intItem->name, "_");
+		// check if "_" not first character in name and is existing
+		if ((itemNamePart == 0) || (itemNamePart == intCurrent->intItem->name)) {
+			intCurrent = intCurrent->next;
+			continue;
+		}
+		if (strcmp(namePart, itemNamePart) == 0) {
+			// success, set threshold (= deadband / 2)
+			intCurrent->threshold = newDeadbandBC / 2;
+			++count;
+		}
+		intCurrent = intCurrent->next;
+	}
+
+	return count;
+}
+
+int updateFeeService(char* serviceName) {
+	char msg[80];
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	CharItemNode* charNode = 0;
+	int nRet = 0;
+#	ifdef __DEBUG
+	char* addr = 0;
+	char* data = 0;
+	int size = 0;
+#	endif
+
+	if (state != RUNNING) {
+		return FEE_WRONG_STATE;
+	}
+	if (serviceName == 0) {
+		return FEE_NULLPOINTER;
+	}
+
+	// find desired service
+	node = findItem(serviceName);
+	if (node == 0) {
+		//check in IntItemList
+		intNode = findIntItem(serviceName);
+	}
+	if ((node == 0) || (intNode == 0)) {
+		//check in CharItemList
+        charNode = findCharItem(serviceName);
+	}
+
+	// check node
+	if ((node == 0) && (intNode == 0) && (charNode == 0)) {
+		// message is NOT sent in findItem(), findIntItem() or findCharItem()
+		msg[sprintf(msg, "Item %s not found in list.", serviceName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", serviceName);
+		fflush(stdout);
+#		endif
+		return FEE_INVALID_PARAM;
+	} else {
+		if (node != 0) {
+			nRet = dis_update_service(node->id);
+#			ifdef __DEBUG
+/* 			printf("CE triggered an updated on %d clients for service %s [float]: %f\n", */
+/* 					nRet, node->item->name, *(node->item->location)); */
+/* 			fflush(stdout); */
+#			endif
+		} else if (intNode != 0) {
+			nRet = dis_update_service(intNode->id);
+#           ifdef __DEBUG
+/*             printf("CE triggered an updated on %d clients for service %s [int]: %d\n", */
+/*                     nRet, intNode->intItem->name, *(intNode->intItem->location)); */
+/*             fflush(stdout); */
+#           endif
+		} else {
+            nRet = dis_update_service(charNode->id);
+#           ifdef __DEBUG
+			(charNode->charItem->user_routine)(&(charNode->charItem->tag),
+					(int**) &addr, &size);
+			data = (char*) malloc(size +1);
+			strncpy(data, addr, size);
+			data[size] = 0;
+/*             printf("CE triggered an updated on %d clients for service %s [char]: %s\n", */
+/*                     nRet, charNode->charItem->name, data); */
+/*             fflush(stdout); */
+			free(data);
+#           endif
+		}
+	}
+
+	// return number of updated clients
+	return nRet;
+}
+
+
+// *********************************************************************************************
+// ---------- here comes all the initialisation of selfdefined datatypes -----------------------
+// *********************************************************************************************
+void initIssueStruct(IssueStruct* issueStr) {
+	issueStr->nRet = 0;
+	issueStr->command = 0;
+	issueStr->result = 0;
+	issueStr->size = 0;
+}
+
+void initMessageStruct() {
+	time_t timeVal;
+	struct tm* now;
+
+	// fill the original message struct
+	message.eventType = MSG_INFO;
+	memcpy(message.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+	memcpy(message.source, "FeeServer\0", 10);
+	message.description[sprintf(message.description,
+			"FeeServer %s (Version: %s) has been initialized (DNS: %s) ...",
+			serverName, FEESERVER_VERSION, getenv("DIM_DNS_NODE"))] = 0;
+	//set current date and time
+	time(&timeVal);
+	now = localtime(&timeVal);
+	message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+			now)] = 0;
+
+	// the the storage of the "last Message" struct - must be different in
+	// the description compared to the original message struct above in init
+	lastMessage.eventType = MSG_DEBUG;
+    memcpy(lastMessage.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+    memcpy(lastMessage.source, "FeeServer\0", 10);
+    // now use a different description:
+	lastMessage.description[sprintf(lastMessage.description,
+			"Init of Backup Message Struct!")] = 0;
+    //set current date and time
+    time(&timeVal);
+    now = localtime(&timeVal);
+    lastMessage.date[strftime(lastMessage.date, MSG_DATE_SIZE,
+			"%Y-%m-%d %H:%M:%S", now)] = 0;
+}
+
+
+void initItemNode(ItemNode* iNode) {
+	iNode->prev = 0;
+	iNode->next = 0;
+	iNode->id = 0;
+	iNode->item = 0;
+	iNode->lastTransmittedValue = 0.0;
+	iNode->threshold = 0.0;
+	iNode->locBackup = 0;
+	iNode->checksum = 0;
+	iNode->checksumBackup = 0;
+}
+
+ItemNode* findItem(char* name) {
+//	char msg[70];
+	ItemNode* current = 0;
+
+	if (name == 0) {
+		return 0;
+	}
+	current = firstNode;
+	while (current != 0) {  // is end of list
+		if (strcmp(name, current->item->name) == 0) {
+			// success, give back itemNode
+			return current;
+		}
+		current = current->next;
+	}
+// since two lists, which are searched seperately don't make log output in
+// findItem()-function -> move to where called to combine with other 
+// findXYItem calls
+/*
+	if (state == RUNNING) {
+		msg[sprintf(msg, "Item %s not found in list.", name)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", name);
+		fflush(stdout);
+#		endif
+	}
+*/
+	return 0;
+}
+
+void unpublishItemList() {
+	ItemNode* current = 0;
+
+	current = firstNode;
+	while (current != 0) {
+		dis_remove_service(current->id);
+		current = current->next;
+	}
+	// pretending ItemList is completely empty to avoid access
+	// to not existing elements
+	nodesAmount = 0;
+	firstNode = 0;
+	lastNode = 0;
+}
+
+// ****************************************************************************
+// ------------------ here come all the closing and cleanup functions ---------
+// ****************************************************************************
+void interrupt_handler(int sig) {
+// *** causes props on DCS board -> not used yet ***
+#	ifdef __DEBUG
+	printf("Received interrupt: %d, exiting now.\n", sig);
+	fflush(stdout);
+#	endif
+
+	if ((state == RUNNING) || (state == ERROR_STATE)) {
+		fee_exit_handler(0);
+	} else {
+		cleanUp();
+		exit(0);
+	}
+}
+
+void fee_exit_handler(unsigned int state) {
+	char msg[70];
+
+#	ifdef __DEBUG
+	printf("Exit state: %d\n\n", state);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Exiting FeeServer (exit state: %d).", state)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	cleanUp();
+	exit(state);
+}
+
+void dim_dummy_exit_handler(int* bufp) {
+	char msg[200];
+	char clientName[50];
+	int dummy = 0;
+
+	// if bufp null pointer, redirect to valid value
+	if (bufp == 0) {
+		bufp = &dummy;
+	}
+
+	// DO almost nothing, just to disable the build-in exit command of the DIM framework
+	// just notifying about intrusion, except for framework exit
+	clientName[0] = 0;
+	dis_get_client(clientName);
+	// let's asume exit from ambitious user has clientName (pid@host).
+	if (clientName[0] == 0) {
+#		ifdef __DEBUG
+		printf("Framework tries to exit FeeServer (%d)\n", *bufp);
+		printf("Most likely FeeServer name already exists.\n");
+		fflush(stdout);
+#		endif
+		// IMPORTANT don't use the bufp - state of framework, it could interfere
+		// with own specified exit states !! (e.g. for restarting in case of "2")
+		// the same state is signaled by kill all servers of dns !?
+		fee_exit_handler(204);
+	} else {
+		msg[sprintf(msg, "Ambitious user (%s) tried to kill FeeServer, ignoring command!",
+				clientName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Ambitious user (%s) tried to kill FeeServer (%d)\n", clientName, *bufp);
+		fflush(stdout);
+#		endif
+	}
+}
+
+void cleanUp() {
+	// the order of the clean up sequence here is important to evade seg faults
+#	ifdef __DEBUG
+	printf("Cleaning up FeeServer before finishing:\n");
+	fflush(stdout);
+#	endif
+	if (ceInitState == CE_OK) {
+		cleanUpCE();
+#		ifdef __DEBUG
+		printf(" - Clean up of CE finished\n");
+		fflush(stdout);
+#		endif
+	}
+
+	if (monitorThreadStarted) {
+		pthread_cancel(thread_mon);
+	}
+	if (intMonitorThreadStarted) {
+		pthread_cancel(thread_mon_int);
+	}
+	if (state == RUNNING) {
+		pthread_cancel(thread_init);
+	}
+	if (logWatchDogRunning) {
+		pthread_cancel(thread_logWatchdog);
+	}
+#	ifdef __DEBUG
+	printf(" - All threads except for main thread killed\n");
+	fflush(stdout);
+#	endif
+
+	dis_stop_serving();
+#	ifdef __DEBUG
+	printf(" - DIM server stopped\n");
+	fflush(stdout);
+#	endif
+
+	deleteItemList();
+	// new since version 0.8.1 -> int channels
+	deleteIntItemList();
+    // new since version 0.8.2b -> char channels
+    deleteCharItemList();
+
+	if (cmndACK != 0) {
+		free(cmndACK);
+	}
+	if (serverName != 0) {
+		free(serverName);
+	}
+
+	// new since 0.8.3 -> memory list
+	//cleanupMemoryList();
+#   ifdef __DEBUG
+    printf(" - Memory freed (lists and globaly allocated)\n");
+    fflush(stdout);
+#   endif
+}
+
+int deleteItemList() {
+	ItemNode* tmp = 0;
+
+	while (firstNode != 0) {
+		if (firstNode->item != 0) {
+			if (firstNode->item->name != 0) {
+				free(firstNode->item->name);
+			}
+			free(firstNode->item);
+		}
+
+		tmp = firstNode->next;
+		free(firstNode);
+		firstNode = tmp;
+	}
+	return FEE_OK;
+}
+
+/*
+MessageStruct copyMessage(const MessageStruct* const orgMsg) {
+    MessageStruct msg;
+    msg.eventType = orgMsg->eventType;
+    memcpy(msg.detector, orgMsg->detector, MSG_DETECTOR_SIZE);
+    memcpy(msg.source, orgMsg->source, MSG_SOURCE_SIZE);
+    memcpy(msg.description, orgMsg->description, MSG_DESCRIPTION_SIZE);
+    memcpy(msg.date, orgMsg->date, MSG_DATE_SIZE);
+    return msg;
+}
+*/
+
+////   --------- NEW FEATURE SINCE VERSION 0.8.1 (2007-06-12) ---------- /////
+
+int publishInt(IntItem* intItem) {
+	unsigned int id;
+	char* serviceName = 0;
+
+	// check for right state
+	if (state != COLLECTING) {
+		return FEE_WRONG_STATE;
+	}
+
+	// Testing for NULL - Pointer
+	// !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+	if (intItem == 0) {
+#		ifdef __DEBUG
+		printf("Bad intItem, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+	if (intItem->name == 0 || intItem->location == 0) {
+#		ifdef __DEBUG
+		printf("Bad intItem, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	// Check name for duplicate here
+	// Check in Float list
+	if (findItem(intItem->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published in float list, int item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in INT list
+	if (findIntItem(intItem->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published in int list, new int item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in Char service list
+    if (findCharItem(intItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, int item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+
+	// -- add intItem as service --
+	serviceName = (char*) malloc(serverNameLength + strlen(intItem->name) + 2);
+	if (serviceName == 0) {
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+	// terminate string with '\0'
+	serviceName[sprintf(serviceName, "%s_%s", serverName, intItem->name)] = 0;
+	id = dis_add_service(serviceName, "I", (int*) intItem->location,
+			sizeof(int), 0, 0);
+	free(serviceName);
+	add_int_item_node(id, intItem);
+
+	return FEE_OK;
+}
+
+void add_int_item_node(unsigned int _id, IntItem* _int_item) {
+	//create new node with enough memory
+	IntItemNode* newNode = 0;
+
+	newNode = (IntItemNode*) malloc(sizeof(IntItemNode));
+	if (newNode == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while adding IntItemNode!\n");
+		fflush(stdout);
+#		endif
+		cleanUp();
+		exit(201);
+	}
+	//initialize "members" of node
+	newNode->prev = 0;
+	newNode->next = 0;
+	newNode->id = _id;
+	newNode->intItem = _int_item;
+	newNode->lastTransmittedIntValue = *(_int_item->location);
+	//if default deadband is negative -> set threshold 0, otherwise set half of defaultDeadband
+	newNode->threshold = (_int_item->defaultDeadband < 0) ? 0.0 : (_int_item->defaultDeadband / 2);
+
+	newNode->locBackup = _int_item->location;
+
+	// Check if these feature have to be ported as well ??? !!!
+//	newNode->checksum = calculateChecksum((unsigned char*) &(_item->location),
+//			sizeof(volatile float*));
+//	newNode->checksumBackup = newNode->checksum;
+
+#ifdef __DEBUG
+	// complete debug display of added IntItem
+/*
+	printf("IntItem: %d\n", _id);
+	printf("location: %f, locBackup %f\n", *(_int_item->location), *(newNode->locBackup));
+	printf("location addr: %p, locBackup addr %p\n", _int_item->location, newNode->locBackup);
+	printf("checksum1: %d, checksum2: %d\n\n", newNode->checksum,
+			newNode->checksumBackup);
+*/
+#endif
+
+#	ifdef __DEBUG
+	// short debug display of added Item
+	printf("init of %s (int) with ID %d: %d\n", newNode->intItem->name,
+				newNode->id, newNode->lastTransmittedIntValue);
+	fflush(stdout);
+#	endif
+
+	++intNodesAmount;
+	//redirect pointers of doubly linked list (int)
+	if (firstIntNode != 0) {
+		lastIntNode->next = newNode;
+		newNode->prev = lastIntNode;
+		lastIntNode = newNode;
+	} else {
+		firstIntNode = newNode;
+		lastIntNode = newNode;
+	}
+}
+
+
+IntItemNode* findIntItem(char* name) {
+//	char msg[70];
+	IntItemNode* current = 0;
+
+	if (name == 0) {
+		return 0;
+	}
+	current = firstIntNode;
+	while (current != 0) {  // is end of list
+		if (strcmp(name, current->intItem->name) == 0) {
+			// success, give back IntItemNode
+			return current;
+		}
+		current = current->next;
+	}
+// since two lists, which are searched seperately don't make log output in
+// findIntItem()-function -> move to where called to combine with other
+// findXYItem calls
+/*
+	if (state == RUNNING) {
+		msg[sprintf(msg, "Item %s not found in IntItem list.", name)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in IntItem list.\n", name);
+		fflush(stdout);
+#		endif
+	}
+*/
+	return 0;
+}
+
+int deleteIntItemList() {
+	IntItemNode* tmp = 0;
+
+	while (firstIntNode != 0) {
+		if (firstIntNode->intItem != 0) {
+			if (firstIntNode->intItem->name != 0) {
+				free(firstIntNode->intItem->name);
+			}
+			free(firstIntNode->intItem);
+		}
+
+		tmp = firstIntNode->next;
+		free(firstIntNode);
+		firstIntNode = tmp;
+	}
+	return FEE_OK;
+}
+
+void initIntItemNode(IntItemNode* intItemNode) {
+	intItemNode->prev = 0;
+	intItemNode->next = 0;
+	intItemNode->id = 0;
+	intItemNode->intItem = 0;
+	intItemNode->lastTransmittedIntValue = 0;
+	intItemNode->threshold = 0.0;
+	intItemNode->locBackup = 0;
+	intItemNode->checksum = 0;
+	intItemNode->checksumBackup = 0;
+}
+
+void unpublishIntItemList() {
+	IntItemNode* current = 0;
+
+	current = firstIntNode;
+	while (current != 0) {
+		dis_remove_service(current->id);
+		current = current->next;
+	}
+	// pretending ItemList is completely empty to avoid access
+	// to not existing elements
+	intNodesAmount = 0;
+	firstIntNode = 0;
+	lastIntNode = 0;
+}
+
+Item* createItem() {
+    Item* item = 0;
+
+    item = (Item*) malloc(sizeof(Item));
+    if (item == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    item->location = 0;
+    item->name = 0;
+    item->defaultDeadband = 0;
+    return item;
+}
+
+IntItem* createIntItem() {
+	IntItem* intItem = 0;
+
+	intItem = (IntItem*) malloc(sizeof(IntItem));
+	if (intItem == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+#		endif
+		return 0;
+	}
+	intItem->location = 0;
+	intItem->name = 0;
+	intItem->defaultDeadband = 0;
+	return intItem;
+}
+
+Item* fillItem(float* floatLocation, char* itemName, float defDeadband) {
+	Item* item = 0;
+
+    item = createItem();
+    if (item == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    item->location = floatLocation;
+    item->name = (char*) malloc(strlen(itemName) + 1);
+    if (item->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+		free(item);
+        return 0;
+    }
+	strcpy(item->name, itemName);
+    item->defaultDeadband = defDeadband;
+    return item;
+}
+
+IntItem* fillIntItem(int* intLocation, char* itemName, int defDeadband) {
+    IntItem* intItem = 0;
+
+    intItem = createIntItem();
+    if (intItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    intItem->location = intLocation;
+    intItem->name = (char*) malloc(strlen(itemName) + 1);
+    if (intItem->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        free(intItem);
+        return 0;
+    }
+    strcpy(intItem->name, itemName);
+    intItem->defaultDeadband = defDeadband;
+    return intItem;
+}
+
+void monitorIntValues() {
+	int status = -1;
+	int nRet;
+	unsigned long sleepTime = 0;
+	IntItemNode* current = 0;
+	char msg[120];
+    unsigned long innerCounter = 0; // used for update check after time interval
+    unsigned long outerCounter = 0; // used for update check after time interval
+
+	// set flag, that monitor thread has been started
+	intMonitorThreadStarted = true;
+
+	// set cancelation type
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error [mon - int]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (int) properly. Monitoring is not affected.", 0);
+	}
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error [mon - int]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (int) properly. Monitoring is not affected.", 0);
+	}
+
+	createLogMessage(MSG_DEBUG, "Started monitor thread for INT values successfully.", 0);
+
+	while (1) {
+		current = firstIntNode;
+		sleepTime = (unsigned long) (updateRate / intNodesAmount);
+		while (current != 0) { // is lastIntNode->next (end of list)
+ 			if (!checkIntLocation(current)) {
+				msg[sprintf(msg, "Value of item %s (int) is corrupt, reconstruction failed. Ignoring!",
+						current->intItem->name)] = 0;
+				createLogMessage(MSG_ERROR, msg, 0);
+				// message and do some stuff (like invalidate value)
+				// (test, what happens if pointer is redirected ???)
+			} else {
+				if ((abs((*(current->intItem->location)) - current->lastTransmittedIntValue)
+						>= current->threshold) || (outerCounter ==
+						(innerCounter * TIME_INTERVAL_MULTIPLIER))) {
+					nRet = dis_update_service(current->id);
+					current->lastTransmittedIntValue = *(current->intItem->location);
+#					ifdef __DEBUG
+					printf("CE triggered an updated on %d clients for service %s [int]: %d\n",
+							nRet, current->intItem->name, *(current->intItem->location));
+					fflush(stdout);
+#					endif
+				}
+			}
+
+			++innerCounter;
+			current = current->next;
+			usleep(sleepTime * 1000);
+			// sleeps xy microseconds, needed milliseconds-> "* 1000"
+		}
+		// with the check of both counter, each service is at least updated after
+		// every (deadband updateRate * nodesAmount) seconds
+		innerCounter = 0;
+		++outerCounter;
+		// after every service in list is updated set counter back to 0
+		// the TIME_INTERVAL_MULTIPLIER is used to enlarge the time interval of
+		// the request of services without touching the deadband checker updateRate
+		if (outerCounter >= (intNodesAmount * TIME_INTERVAL_MULTIPLIER)) {
+			outerCounter = 0;
+		}
+	}
+	// should never be reached !
+	pthread_exit(0);
+}
+
+// checks against bitflips in location (integer Item)
+bool checkIntLocation(IntItemNode* node) {
+	if (node->intItem->location == node->locBackup) {
+		// locations are identical, so no bitflip
+		return true;
+	}
+	// locations are not identical, check further
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->intItem->location), sizeof(volatile int*))) {
+		// checksum tells, that first location should be valid, repair backup
+		node->locBackup = node->intItem->location;
+		return true;
+	}
+	// original location or first checksum is wrong, continue checking
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile int*))) {
+		// checksum tells, that location backup should be valid, repair original
+		node->intItem->location = node->locBackup;
+		return true;
+	}
+	// location backup or first checksum is wrong, continue checking
+
+	if (node->checksum == node->checksumBackup) {
+		// it seems that location and location backup are wrong
+		// or checksum value runs banana, not repairable
+		return false;
+	}
+	// it seems that first checksum is wrong
+	// try to fix with second checksum
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->intItem->location), sizeof(volatile int*))) {
+		// checksum backup tells, that first location should be valid, repair backup
+		node->locBackup = node->intItem->location;
+		// repair first checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// original location or second checksum is wrong, continue checking
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile int*))) {
+		// checksum backup tells, that location backup should be valid, repair original
+		node->intItem->location = node->locBackup;
+		// repair checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// value is totally banana, no chance to fix
+	return false;
+}
+
+// --- Wrapper for the Float Items --- //
+
+int publishFloat(FloatItem* floatItem) {
+	return publish(floatItem);
+}
+
+
+FloatItem* createFloatItem() {
+	return createItem();
+}
+
+
+FloatItem* fillFloatItem(float* floatLocation, char* itemName, float defDeadband) {
+	return fillItem(floatLocation, itemName, defDeadband);
+}
+
+
+////    ------------- NEW Memory Management (2007-07-25) ----------------- ////
+
+MemoryNode* findMemoryNode(void* addr) {
+	MemoryNode* current = 0;
+
+	if (addr == 0) {
+	  /*
+		createLogMessage(MSG_WARNING,
+				"Reqesting MemoryNode with ID \"NULL\", discarding call!", 0);
+#		ifdef __DEBUG
+		printf("Reqesting MemoryNode with ID \"NULL\", discarding call!\n");
+		fflush(stdout);
+#		endif
+	  */
+		return 0;
+	}
+
+	current = firstMemoryNode;
+	while (current != 0) {  // is end of list
+		if (current->identityAddr == addr) {
+			// success, give back MemoryNode
+			return current;
+		}
+		current = current->next;
+	}
+
+/* 	// only used for debug output; comment it in if required 
+	if (current == 0) {
+		char msg[80];
+		msg[sprintf(msg, "Unable to find MemoryNode with ID \"%p\".", 
+				addr)] = 0;
+		createLogMessage(MSG_DEBUG, msg, 0);
+#		ifdef __DEBUG
+		printf("Unable to find MemoryNode with ID \"%p\".\n", addr);
+		fflush(stdout);
+#		endif
+	}
+*/
+
+	return 0;
+}
+
+
+MemoryNode* createMemoryNode(unsigned int size, char type, char* module,
+		unsigned int preSize) {
+
+	// check, if size is greater then preSize
+	if (size <= preSize) {
+		createLogMessage(MSG_ERROR,
+				"Error: asking for memory smaller or equal than its prefix size.",
+				0);
+#		ifdef __DEBUG
+		printf("Error: asking for memory smaller or equal than its prefix size.\n");
+		fflush(stdout);
+#		endif
+		return 0;
+	}
+
+	MemoryNode* memNode = (MemoryNode*) malloc(sizeof(MemoryNode));
+	if (memNode == 0) {
+		// insufficient memory
+		createLogMessage(MSG_ERROR,
+				"Insufficient memory! Unable to allocate memory for MemoryNode.",
+				0);
+#		ifdef __DEBUG
+		printf("Insufficient memory! Unable to allocate memory for MemoryNode.\n");
+		fflush(stdout);
+#		endif
+	}
+
+	// fill MemoryNode
+	void* ptr = (void*) malloc(size);
+	if (ptr == 0) {
+		// insufficient memory
+		char msg[100];
+		msg[sprintf(msg,
+				"Insufficient memory! Unable to allocate memory block of %d .",
+				size)] = 0;
+		createLogMessage(MSG_ERROR, msg, 0);
+#		ifdef __DEBUG
+		printf("Insufficient memory! Unable to allocate memory block of %d .\n",
+				size);
+		fflush(stdout);
+#		endif
+
+		free(memNode);
+		return 0;
+	}
+
+	memNode->ptr = ptr;
+	memNode->identityAddr = ptr + preSize;
+	memNode->mmData.memSize = size;
+	memNode->mmData.memType = type;
+	if (module != 0) {
+		strncpy(memNode->mmData.memDest, module, 30);
+		memNode->mmData.memDest[29] = 0;
+	} else {
+		memNode->mmData.memDest[0] = 0;
+	}
+	if (preSize > 0) {
+		memNode->mmData.prefixed = true;
+	} else {
+		memNode->mmData.prefixed = false;
+	}
+	memNode->mmData.prefixSize = preSize;
+
+	// add Node to list (add at end)
+	memNode->prev = lastMemoryNode;
+	memNode->next = 0;
+
+	if (lastMemoryNode != 0) {
+		lastMemoryNode->next = memNode;
+	}
+	lastMemoryNode = memNode;
+
+	if (firstMemoryNode == 0) {
+		firstMemoryNode = memNode;
+	}
+
+	return memNode;
+}
+
+
+void freeMemoryNode(MemoryNode* node) {
+	if (node == 0) {
+		return;
+	}
+
+	// free memory corresponding to this node
+	if (node->ptr != 0) {
+		free(node->ptr);
+	}
+
+	// redirect links in doubly linked list
+	if (node->next != 0) {
+		node->next->prev = node->prev;
+	} else {
+		lastMemoryNode = node->prev;
+	}
+
+	if (node->prev != 0) {
+		node->prev->next = node->next;
+	} else {
+		firstMemoryNode = node->next;
+	}
+
+	//free node itself
+	free(node);
+}
+
+
+void cleanupMemoryList() {
+	MemoryNode* current = firstMemoryNode;
+	while (current != 0) {
+		MemoryNode* nextMemNode = current->next;
+		freeMemoryNode(current);
+		current = nextMemNode;
+	}
+}
+
+
+// ------ NEW interface functions for memory management ------ //
+
+int allocateMemory(unsigned int size, char type, char* module,
+		char prefixPurpose, void** ptr) {
+	MemoryNode*	memNode = 0;
+	unsigned int realSize = 0;
+	unsigned int addSize = 0;
+	char msg[200];
+	*ptr = 0;
+
+	if (size == 0) {
+		createLogMessage(MSG_WARNING,
+				"FeeServer shall allocate memory of size 0; discarding call!", 0);
+#		ifdef __DEBUG
+		printf("FeeServer shall allocate memory of size 0; discarding call!\n");
+		fflush(stdout);
+#		endif
+		return FEE_INVALID_PARAM;
+	}
+
+	switch (prefixPurpose) {
+		case ('0'):
+			realSize = size;
+			break;
+
+		case ('A'):
+			realSize = size + HEADER_SIZE;
+			addSize = HEADER_SIZE;
+			break;
+
+		default:
+			msg[sprintf(msg,
+					"Received allocateMemory call with unknown prefix purpose ('%c'), discarding call.",
+					prefixPurpose)] = 0;
+			createLogMessage(MSG_ERROR, msg, 0);
+#			ifdef __DEBUG
+			printf("%s\n", msg);
+			fflush(stdout);
+#			endif
+			return FEE_INVALID_PARAM;
+	}
+
+	memNode = createMemoryNode(realSize, type, module, addSize);
+	if (memNode == 0) {
+		return FEE_FAILED;
+	}
+
+	*ptr = memNode->identityAddr;
+/*	// only for debug output to test functyionality
+	msg[sprintf(msg,
+			"Allocated memory (type %c) for %s of size %d + prefix memory size %d. Purpose is set to: %c.",
+			type, memNode->mmData.memDest, size, addSize, prefixPurpose)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+#	ifdef __DEBUG
+	printf("%s\n", msg);
+	fflush(stdout);
+#	endif
+*/
+	return FEE_OK;
+}
+
+
+int freeMemory(void* addr) {
+	MemoryNode* memNode = 0;
+	if (addr == 0) {
+		// received NULL pointer
+		createLogMessage(MSG_WARNING,
+				"Received an NULL pointer for freeing memory, discarding call!", 0);
+#		ifdef __DEBUG
+		printf("Received an NULL pointer for freeing memory, discarding call! \n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	memNode = findMemoryNode(addr);
+	if (memNode == 0) {
+		// memory pointer id not found in list
+		return FEE_INVALID_PARAM;
+	}
+
+	freeMemoryNode(memNode);
+	return FEE_OK;
+}
+
+
+///   --- NEW FEATURE SINCE VERSION 0.8.2b [Char channel] (2007-07-28) --- ///
+
+int publishChar(CharItem* charItem) {
+    unsigned int id;
+    char* serviceName = 0;
+
+    // check for right state
+    if (state != COLLECTING) {
+        return FEE_WRONG_STATE;
+    }
+
+    // Testing for NULL - Pointer
+    // !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+    if (charItem == 0) {
+#       ifdef __DEBUG
+        printf("Bad charItem, not published\n");
+        fflush(stdout);
+#       endif
+        return FEE_NULLPOINTER;
+    }
+    if (charItem->name == 0 || charItem->user_routine == 0) {
+#       ifdef __DEBUG
+        printf("Bad charItem, not published\n");
+        fflush(stdout);
+#       endif
+        return FEE_NULLPOINTER;
+    }
+
+    // Check name for duplicate here
+    // Check in Float list
+    if (findItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in float list, char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+    // Check in INT list
+    if (findIntItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in int list, char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+    // Check in CHAR list
+    if (findCharItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, new char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+    // -- add charItem as service --
+    serviceName = (char*) malloc(serverNameLength + strlen(charItem->name) + 2);
+    if (serviceName == 0) {
+        return FEE_INSUFFICIENT_MEMORY;
+    }
+    // terminate string with '\0'
+    serviceName[sprintf(serviceName, "%s_%s", serverName, charItem->name)] = 0;
+    // add service in DIM
+    id = dis_add_service(serviceName, "C", 0, 0, charItem->user_routine,
+            charItem->tag);
+    free(serviceName);
+
+    // !!! implement add_char_item_node() func !!!
+    add_char_item_node(id, charItem);
+
+    return FEE_OK;
+}
+
+
+CharItem* createCharItem() {
+    CharItem* charItem = 0;
+
+    charItem = (CharItem*) malloc(sizeof(CharItem));
+    if (charItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available for CharItem!\n");
+#       endif
+        return 0;
+    }
+    charItem->user_routine = 0;
+    charItem->name = 0;
+    charItem->tag = 0;
+    return charItem;
+}
+
+
+//CharItem* fillCharItem(void* funcPointer, char* itemName, long tag) {
+CharItem* fillCharItem(void (*funcPointer)(long*, int**, int*), char* itemName,
+        long tag) {
+    CharItem* charItem = 0;
+
+    charItem = createCharItem();
+    if (charItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available for CharItem!\n");
+#       endif
+        return 0;
+    }
+    charItem->user_routine = funcPointer;
+    charItem->name = (char*) malloc(strlen(itemName) + 1);
+    if (charItem->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        free(charItem);
+        return 0;
+    }
+    strcpy(charItem->name, itemName);
+    charItem->tag = tag;
+    return charItem;
+}
+
+
+void add_char_item_node(unsigned int _id, CharItem* _char_item) {
+    //create new node with enough memory
+    CharItemNode* newNode = 0;
+
+    newNode = (CharItemNode*) malloc(sizeof(CharItemNode));
+    if (newNode == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available while adding CharItemNode!\n");
+        fflush(stdout);
+#       endif
+        cleanUp();
+        exit(201);
+    }
+    //initialize "members" of node
+    newNode->prev = 0;
+    newNode->next = 0;
+    newNode->id = _id;
+    newNode->charItem = _char_item;
+
+#	ifdef __DEBUG
+    // complete debug display of added charItem
+/*
+    printf("CharItem ID: %d\n", _id);
+	printf("CharItem name: %s\n", _char_item->name);
+    printf("CharItem user_routine: %p\n", _char_item->user_routine);
+	printf("CharItem tag: %d\n", _char_item->tag);
+*/
+#	endif
+
+#   ifdef __DEBUG
+    // short debug display of added Item
+    printf("init of %s (char) with ID %d; user_routine at: %p\n", 
+			newNode->charItem->name, newNode->id, 
+			newNode->charItem->user_routine);
+    fflush(stdout);
+#   endif
+
+    ++charNodesAmount;
+    //redirect pointers of doubly linked list (char)
+    if (firstCharNode != 0) {
+        lastCharNode->next = newNode;
+        newNode->prev = lastCharNode;
+        lastCharNode = newNode;
+    } else {
+        firstCharNode = newNode;
+        lastCharNode = newNode;
+    }
+}
+
+
+CharItemNode* findCharItem(char* name) {
+//  char msg[70];
+    CharItemNode* current = 0;
+
+    if (name == 0) {
+        return 0;
+    }
+    current = firstCharNode;
+    while (current != 0) {  // is end of list
+        if (strcmp(name, current->charItem->name) == 0) {
+            // success, give back CharItemNode
+            return current;
+        }
+        current = current->next;
+    }
+// since three lists, which are searched seperately don't make log output in
+// findCharItem()-function -> move to where called to combine with other 
+// findXYItem calls
+/*
+    if (state == RUNNING) {
+        msg[sprintf(msg, "Item %s not found in CharItem list.", name)] = 0;
+        createLogMessage(MSG_WARNING, msg, 0);
+#       ifdef __DEBUG
+        printf("Item %s not found in CharItem list.\n", name);
+        fflush(stdout);
+#       endif
+    }
+*/
+    return 0;
+}
+
+
+int deleteCharItemList() {
+    CharItemNode* tmp = 0;
+
+    while (firstCharNode != 0) {
+        if (firstCharNode->charItem != 0) {
+            if (firstCharNode->charItem->name != 0) {
+                free(firstCharNode->charItem->name);
+            }
+            free(firstCharNode->charItem);
+        }
+
+        tmp = firstCharNode->next;
+        free(firstCharNode);
+        firstCharNode = tmp;
+    }
+    return FEE_OK;
+}
+
+
+void initCharItemNode(CharItemNode* charItemNode) {
+    charItemNode->prev = 0;
+    charItemNode->next = 0;
+    charItemNode->id = 0;
+    charItemNode->charItem = 0;
+}
+
+
+void unpublishCharItemList() {
+    CharItemNode* current = 0;
+
+    current = firstCharNode;
+    while (current != 0) {
+        dis_remove_service(current->id);
+        current = current->next;
+    }
+    // pretending CharItemList is completely empty to avoid access
+    // to not existing DIM services. Don't delete charItems, CE might still 
+	// try to access their content (same for float and int lists)
+    charNodesAmount = 0;
+    firstCharNode = 0;
+    lastCharNode = 0;
+}
+
+
+/// -- NEW FEATURE V. 0.9.1 [Set FeeServer Properies in CE] (2007-08-17) -- ///
+
+bool setFeeProperty(FeeProperty* prop) {
+	bool retVal = false;
+	if (state != INITIALIZING) {
+		createLogMessage(MSG_WARNING, 
+				"Trying to change a FeeProperty during wrong FeeServer state, ignoring ...",
+				0);
+#		ifdef __DEBUG
+		printf("Trying to change a FeeProperty during wrong FeeServer state, ignoring ...\n");
+		fflush(stdout);
+#		endif
+		return retVal;
+	}
+
+	if (prop == 0) {
+#       ifdef __DEBUG
+        printf("Received NULL pointer in setting FeeProperty, ignoring...\n");
+		fflush(stdout);
+#		endif
+		// No log message: in "INITIALIZING" state are no DIM channels available
+		return retVal;
+	}
+
+	switch (prop->flag) {
+		case (PROPERTY_UPDATE_RATE):
+            if (prop->uShortVal > 0) {
+                updateRate = prop->uShortVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new update rate (%d).\n", 
+						updateRate);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting update rate (%d), ignoring...\n",
+                        prop->uShortVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+
+		case (PROPERTY_LOGWATCHDOG_TIMEOUT):
+            if (prop->uIntVal > 0) {
+                logWatchDogTimeout = prop->uIntVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new log watchdog timeout (%d).\n",
+						logWatchDogTimeout);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting log watchdog timeout (%d), ignoring...\n",
+                        prop->uIntVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+
+		case (PROPERTY_ISSUE_TIMEOUT):
+			if (prop->uLongVal > 0) {
+                issueTimeout = prop->uLongVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new issue timeout (%ld).\n", 
+						issueTimeout);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting issue timeout (%ld), ignoring...\n",
+                        prop->uLongVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+		
+		case (PROPERTY_LOGLEVEL):
+			if ((prop->uIntVal > 0) && (prop->uIntVal <= MSG_MAX_VAL)) {
+				logLevel = prop->uIntVal | MSG_ALARM;		
+				retVal = true;
+#				ifdef __DEBUG
+				printf("FeeProperty changed: new log level (%d).\n", logLevel);
+				fflush(stdout);
+#				endif
+			} else {
+#				ifdef __DEBUG
+				printf("Received invalid value for setting loglevel (%d), ignoring...\n",
+			    		prop->uIntVal);
+				fflush(stdout);
+#				endif
+			}
+			break;
+
+		default:
+			// unknown property flag, but no logging
+#			ifdef __DEBUG
+			printf("Received unknown flag in setting FeeProperty (%d), ignoring...\n",
+					prop->flag);
+			fflush(stdout);
+#			endif
+	}
+
+	return retVal;
+}
+
+
+/// ***************************************************************************
+/// -- only for the benchmarking cases necessary
+/// ***************************************************************************
+#ifdef __BENCHMARK
+void createBenchmark(char* msg) {
+	// this part is only used for benchmarking
+	// timestamp to benchmark reception of a command
+    struct tm *today;
+	struct timeval tStamp;
+	char benchmark_msg[200];
+	int status = 0;
+	FILE* pFile = 0;
+
+    status = gettimeofday(&tStamp, 0);
+    if (status != 0) {
+	benchmark_msg[sprintf(benchmark_msg,
+                "Unable to get timestamp for benchmark!")] = 0;
+	} else {
+        today = localtime(&(tStamp.tv_sec));
+    	benchmark_msg[sprintf(benchmark_msg,
+				"%s: \t%.8s - %ld us", msg, asctime(today) + 11,
+				tStamp.tv_usec)] = 0;
+	}
+
+	if (getenv("FEE_BENCHMARK_FILENAME")) {
+		pFile = fopen(getenv("FEE_BENCHMARK_FILENAME"), "a+");
+		if (pFile) {
+			fprintf(pFile, benchmark_msg);
+			fprintf(pFile, "\n");
+			fclose(pFile);
+		} else {
+#ifdef __DEBUG
+			printf("Unable to open benchmark file.\n");
+			printf("%s\n", benchmark_msg);
+#endif
+			createLogMessage(MSG_WARNING, "Unable to write to benchmarkfile.", 0);
+		}
+	} else {
+		createLogMessage(MSG_SUCCESS_AUDIT, benchmark_msg, 0);
+	}
+}
+#else
+// empty function
+void createBenchmark(char* msg) {
+}
+#endif
+
+
+
+/// ***************************************************************************
+/// -- only for the debugging cases necessary
+/// ***************************************************************************
+#ifdef __DEBUG
+void printData(char* data, int start, int size) {
+	int i;
+	int iBackUp;
+
+	if ((data == 0) || (size == 0)) {
+		return;
+	}
+	iBackUp = start;
+	for (i = start; (i < size) || (iBackUp < size); ++i) {
+		++iBackUp;
+		printf("%c", data[i]);
+	}
+	printf("\nData - Size: %d", size);
+	printf("\n\n");
+	fflush(stdout);
+}
+#endif
+
+
+//-- only for the testcases necessary
+#ifdef __UTEST
+const int getState() {
+	return state;
+}
+
+const ItemNode* getFirstNode() {
+	return firstNode;
+}
+
+const ItemNode* getLastNode() {
+	return lastNode;
+}
+
+int listSize() {
+	ItemNode* tmp = firstNode;
+	int count = 0;
+
+	while (tmp != 0) {
+		tmp = tmp->next;
+		++count;
+	}
+	return count;
+}
+
+const char* getCmndACK() {
+	return cmndACK;
+}
+
+void setState(int newState) {
+	state = newState;
+}
+
+void setCmndACK(char* newData) {
+	cmndACK = newData;
+}
+
+void setCmndACKSize(int size) {
+	cmndACKSize = size;
+}
+
+void setServerName(char* name) {
+	if (serverName != 0) {
+		free(serverName);
+	}
+	serverName = (char*) malloc(strlen(name) + 1);
+	if (serverName == 0) {
+		printf(" No memory available !\n");
+	}
+	strcpy(serverName, name);
+}
+
+void clearServerName() {
+	if (serverName != 0) {
+		free(serverName);
+	}
+}
+
+void stopServer() {
+	dis_remove_service(serviceACKID);
+	dis_remove_service(commandID);
+	dis_stop_serving();
+}
+
+pthread_cond_t* getInitCondPtr() {
+	return &init_cond;
+}
+
+
+pthread_mutex_t* getWaitInitMutPtr() {
+	return &wait_init_mut;
+}
+
+#endif
+
+
+
+--------------------------------------------------------------------------------
+for assistance refer to the CVS howto. Maintained by Matthias Richter Powered by
+ViewCVS 0.9.2  
Index: branches/FACT++_part_filenames/dim/src/hash.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/hash.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/hash.c	(revision 18732)
@@ -0,0 +1,39 @@
+#define DIMLIB
+#include <dim.h>
+
+/*
+ * Hash function
+ */
+
+/*
+int HashFunction(name, max)
+char	*name;
+int	max;
+{
+    register int code = 0;
+
+	while(*name)
+	{
+		code += *name++;
+	}
+	return (code % max);
+}
+*/
+int HashFunction(char *name, int max)
+{
+   unsigned int b    = 378551;
+   unsigned int a    = 63689;
+   unsigned int hash = 0;
+   int i    = 0;
+   int len;
+
+   len = (int)strlen(name);
+
+   for(i = 0; i < len; name++, i++)
+   {
+      hash = hash*a+(unsigned)(*name);
+      a = a*b;
+   }
+
+   return ((int)(hash % (unsigned)max));
+}
Index: branches/FACT++_part_filenames/dim/src/open_dns.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/open_dns.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/open_dns.c	(revision 18732)
@@ -0,0 +1,459 @@
+/*
+ * A utility file. 
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+#define MAX_DNS_NODE 256
+
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	void (*recv_rout)();
+	void (*error_rout)();
+	TIMR_ENT *timr_ent;
+	SRC_TYPES src_type;
+} PENDING_CONN;
+
+typedef struct dns_ent{
+	struct dns_ent *next;
+	struct dns_ent *prev;
+	char node_name[MAX_DNS_NODE];
+	char task_name[MAX_TASK_NAME];
+	int port_number;
+	void (*recv_rout)();
+	void (*error_rout)();
+	TIMR_ENT *timr_ent;
+	SRC_TYPES src_type;
+	int conn_id;
+	int pending;
+	int connecting;
+} DNS_CONN;
+
+static int Timer_q = 0;
+static DNS_CONN *DNS_ids[3] = {0, 0, 0};
+static DNS_CONN *DNS_conn_head = (DNS_CONN *)0;	
+
+
+_DIM_PROTO( void retry_dns_connection,    ( int conn_pend_id ) );
+_DIM_PROTO( void init_dns_list,    (  ) );
+_DIM_PROTO( void set_dns_pars,    ( DNS_CONN *connp, char *node, int port ) );
+_DIM_PROTO( int get_dns_pars,    ( DNS_CONN *connp, char *node, int *port ) );
+
+
+int dim_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], node, 0);
+	set_dns_pars(DNS_ids[SRC_DIC], node, 0);
+	return(1);
+}
+
+int dic_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIC], node, 0);
+	return(1);
+}
+
+int dis_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], node, 0);
+	return(1);
+}
+
+int dim_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(node_exists);
+}
+
+int dic_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIC], node, &port);
+	return(node_exists);
+}
+
+int dis_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(node_exists);
+}
+
+int dim_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], 0, port);
+	set_dns_pars(DNS_ids[SRC_DIC], 0, port);
+	return(1);
+}
+
+int dic_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIC], 0, port);
+	return(1);
+}
+
+int dis_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], 0, port);
+	return(1);
+}
+
+int dim_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(port);
+}
+
+int dic_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIC], node, &port);
+	return(port);
+}
+
+int dis_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(port);
+}
+
+void rand_tmout_init()
+{
+	char pid_str[MAX_TASK_NAME];
+	int ip, pid;
+	extern int get_node_addr();
+	extern int get_proc_name();
+
+	get_node_addr((char *)&ip);
+	get_proc_name(pid_str);
+	sscanf(pid_str,"%d",&pid);
+	srand((unsigned)(ip+pid));
+}
+
+int rand_tmout( int min, int max )
+{
+	int aux;
+
+	aux = rand();
+	aux %= (max - min);
+	aux += min;
+	return(aux);
+}
+
+void init_dns_list()
+{
+	char node[MAX_DNS_NODE];
+	int port;
+	dim_long sid, cid;
+
+	DISABLE_AST
+	if(!DNS_conn_head) 
+	{
+		DNS_conn_head = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		dll_init( (DLL *) DNS_conn_head );
+		node[0] = '\0';
+		get_dns_node_name(node);
+		port = get_dns_port_number();
+		sid = dis_add_dns(node, port);
+		cid = dic_add_dns(node, port);
+		DNS_ids[SRC_DIS] = (DNS_CONN *)sid;
+		DNS_ids[SRC_DIC] = (DNS_CONN *)cid;
+		rand_tmout_init();
+	}
+	ENABLE_AST
+}
+
+void set_dns_pars(DNS_CONN *connp, char *node, int port)
+{
+	if(node != 0)
+	{
+		strcpy(connp->node_name, node);
+	}
+	if(port != 0)
+	{
+		connp->port_number = port;
+	}
+}
+
+int get_dns_pars(DNS_CONN *connp, char *node, int *port)
+{
+	int exists = 0;
+
+	if(connp->node_name[0])
+	{
+		strcpy(node, connp->node_name);
+		exists = 1;
+	}
+	*port = connp->port_number;
+	return exists;
+}
+
+DNS_CONN *find_dns(char *node_name, int port_number, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+
+	connp = DNS_conn_head;
+	while( (connp = (DNS_CONN *)dll_get_next( (DLL *) DNS_conn_head, 
+			(DLL*) connp)) )
+	{
+		if(connp->src_type == src_type)
+		{
+			if((!strcmp(connp->node_name, node_name)) &&
+				(connp->port_number == port_number))
+				return connp;
+		}
+	}
+	return (DNS_CONN *)0;
+}
+
+dim_long dis_add_dns(char *node_name, int port_number)
+{
+	DNS_CONN *connp;
+
+	init_dns_list();
+	if(!(connp = find_dns(node_name, port_number, SRC_DIS)))
+	{
+		connp = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		strcpy(connp->node_name, node_name);
+		connp->port_number = DNS_PORT;
+		if(port_number != 0)
+			connp->port_number = port_number;
+		connp->src_type = SRC_DIS;
+		connp->pending = 0;
+		connp->conn_id = 0;
+		connp->connecting = 0;
+		dll_insert_queue( (DLL *) DNS_conn_head, (DLL *) connp );
+	}
+	return (dim_long)connp;
+}
+
+dim_long dic_add_dns(char *node_name, int port_number)
+{
+	DNS_CONN *connp;
+
+	init_dns_list();
+	if(!(connp = find_dns(node_name, port_number, SRC_DIC)))
+	{
+		connp = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		strcpy(connp->node_name, node_name);
+		connp->port_number = DNS_PORT;
+		if(port_number != 0)
+			connp->port_number = port_number;
+		connp->src_type = SRC_DIC;
+		connp->pending = 0;
+		connp->conn_id = 0;
+		connp->connecting = 0;
+		dll_insert_queue( (DLL *) DNS_conn_head, (DLL *) connp );
+	}
+	return (dim_long)connp;
+}
+
+DNS_CONN *get_dns(DNS_CONN *connp, SRC_TYPES src_type)
+{
+	DNS_CONN *p = 0;
+
+	init_dns_list();
+	if(connp)
+	{
+		if(connp->src_type == src_type)
+		{
+			p = connp;
+		}
+	}
+	else
+	{
+		p = DNS_ids[src_type];
+	}
+	return p;
+}
+
+int close_dns(dim_long dnsid, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+
+	connp = get_dns((DNS_CONN *)dnsid, src_type);
+	if( !Timer_q )
+		Timer_q = dtq_create();
+	if( connp->pending ) 
+	{
+		connp->pending = 0;
+		dtq_rem_entry( Timer_q, connp->timr_ent );
+	}
+	return 1;
+}
+
+int open_dns(dim_long dnsid, void (*recv_rout)(), void (*error_rout)(), int tmout_min, int tmout_max, SRC_TYPES src_type )
+{
+	char nodes[MAX_DNS_NODE];
+	char node_info[MAX_NODE_NAME+4];
+	register char *dns_node, *ptr; 
+	register int conn_id;
+	register int timeout, node_exists;
+	int i, dns_port;
+	int rand_tmout();
+	DNS_CONN *connp;
+
+	conn_id = 0;
+	if( !Timer_q )
+		Timer_q = dtq_create();
+
+	connp = get_dns((DNS_CONN *)dnsid, src_type);
+	node_exists = get_dns_pars(connp, nodes, &dns_port);
+	if( !(connp->pending) ) 
+	{
+		if(!node_exists)
+		{
+			return(-2);
+		}
+		ptr = nodes;			
+		while(1)
+		{
+			dns_node = ptr;
+			if( (ptr = (char *)strchr(ptr,',')) )
+			{
+				*ptr = '\0';			
+				ptr++;
+			}
+			strcpy(node_info,dns_node);
+			for(i = 0; i < 4; i ++)
+				node_info[(int)strlen(node_info)+i+1] = (char)0xff;
+			connp->conn_id = 0;
+			connp->connecting = 1;
+			conn_id = dna_open_client( node_info, DNS_TASK, dns_port,
+						 TCPIP, recv_rout, error_rout, src_type );
+			connp->connecting = 0;
+			if(conn_id)
+				break;
+			if( !ptr )
+				break;
+		}
+		connp->conn_id = conn_id;
+		if(!conn_id)
+		{
+			strncpy(connp->task_name, DNS_TASK, (size_t)MAX_TASK_NAME); 
+			connp->recv_rout = recv_rout;
+			connp->error_rout = error_rout;
+			connp->pending = 1;
+			timeout = rand_tmout( tmout_min, tmout_max );
+			connp->timr_ent = dtq_add_entry( Timer_q, timeout,
+				retry_dns_connection,
+				connp );
+			return( -1);
+		}
+	}
+	else
+		return(-1);
+	return(conn_id);
+}
+
+void retry_dns_connection( DNS_CONN *connp )
+{
+	char nodes[MAX_DNS_NODE];
+	char node_info[MAX_NODE_NAME+4];
+	register char *dns_node, *ptr;
+	register int conn_id, node_exists;
+	static int retrying = 0;
+	int i, dns_port;
+
+	if( retrying ) return;
+	retrying = 1;
+
+	conn_id = 0;
+	node_exists = get_dns_pars(connp, nodes, &dns_port);
+	if(node_exists)
+	{
+		ptr = nodes;			
+		while(1)
+		{
+			dns_node = ptr;
+			if( (ptr = (char *)strchr(ptr,',')) )
+			{
+				*ptr = '\0';			
+				ptr++;
+			}
+			strcpy(node_info,dns_node);
+			for(i = 0; i < 4; i ++)
+				node_info[(int)strlen(node_info)+i+1] = (char)0xff;
+			connp->conn_id = 0;
+			connp->connecting = 1;
+			conn_id = dna_open_client( node_info, connp->task_name,
+					 dns_port, TCPIP,
+					 connp->recv_rout, connp->error_rout, connp->src_type );
+			connp->connecting = 0;
+			if( conn_id )
+				break;
+			if( !ptr )
+				break;
+		}
+	}
+	connp->conn_id = conn_id;
+	if(conn_id)
+	{
+		connp->pending = 0;
+		dtq_rem_entry( Timer_q, connp->timr_ent );
+	}
+	retrying = 0;
+}	
+
+dim_long dns_get_dnsid(int conn_id, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+	int found = 0;
+
+	connp = DNS_conn_head;
+	while( (connp = (DNS_CONN *)dll_get_next( (DLL *) DNS_conn_head, 
+			(DLL*) connp)) )
+	{
+		if(connp->conn_id == conn_id)
+		{
+			found = 1;
+			break;
+		}
+		else if((connp->conn_id == 0) && (connp->connecting))
+		{
+			connp->conn_id = conn_id;
+			found = 1;
+			break;
+		}
+	}
+	if(found)
+	{
+		if(connp == DNS_ids[src_type])
+		{
+			return (dim_long)0;
+		}
+		else
+		{
+			return (dim_long)connp;
+		}
+	}
+	return (dim_long)-1;
+}
Index: branches/FACT++_part_filenames/dim/src/sll.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/sll.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/sll.c	(revision 18732)
@@ -0,0 +1,135 @@
+/*
+ * A utility file. A single linked list.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+
+void sll_init( SLL* head )
+{
+	head->next = (SLL *)0;
+}
+
+
+int sll_insert_queue( SLL* head, SLL* item )
+{
+	SLL *auxp;
+
+	DISABLE_AST
+	auxp = head;
+	while( auxp->next )
+		auxp = auxp->next;
+	auxp->next = item;
+	item->next = 0;
+	ENABLE_AST
+	return(1);
+}
+
+
+SLL *sll_search( SLL* head, char *data, int size )
+{
+	DISABLE_AST
+	while( (head = head->next) )
+	{
+		if( !memcmp(head->user_info, data, (size_t)size) )
+		{
+			break;
+		}
+	}
+	ENABLE_AST
+	return(head);
+}
+
+
+SLL *sll_get_next(SLL* item)
+{
+	DISABLE_AST
+	if( item )
+		item = item->next;
+	ENABLE_AST
+	return(item);
+}
+
+
+int sll_empty( SLL* head )
+{
+	register int ret;
+ 
+	DISABLE_AST
+	if(head->next)
+		ret = 0;
+	else
+		ret = 1;
+	ENABLE_AST
+	return(ret);
+}
+
+
+int sll_remove( SLL* head, SLL* item )
+{
+	register int ret = 0;
+
+	DISABLE_AST
+	while( head->next )
+	{
+		if( head->next == item )
+		{
+			head->next = item->next;
+			ret = 1;
+			break;
+		}
+		head = head->next;
+	}
+	ENABLE_AST
+	return(ret);
+}	
+
+
+SLL *sll_remove_head( SLL* head ) 
+{
+	register SLL *auxp;
+
+	DISABLE_AST
+	if( (auxp = head->next) )
+	{
+		head->next = auxp->next;
+	}
+	ENABLE_AST
+	return(auxp);
+}
+
+SLL *sll_get_head( SLL* head ) 
+{
+	register SLL *auxp;
+
+	DISABLE_AST
+	auxp = head->next;
+	ENABLE_AST
+	return(auxp);
+}
+
+
+SLL *sll_search_next_remove( SLL* item, int offset, char *data, int size )
+{
+	register SLL *auxp;
+ 
+	DISABLE_AST
+	while( (auxp = item->next) )
+	{
+		if( !memcmp(&(auxp->user_info[offset]), data, (size_t)size) )
+		{
+			item->next = auxp->next;
+			break;
+		}
+		item = auxp;
+	}
+	ENABLE_AST
+	return(auxp);
+}
+
Index: branches/FACT++_part_filenames/dim/src/swap.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/swap.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/swap.c	(revision 18732)
@@ -0,0 +1,165 @@
+/*
+ *  (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+double _swapd( double d )
+{
+	double	r[2];
+	register char	*p, *q;
+	register int 	n;
+
+	p = (char *) &r[1];
+	q = (char *) &d;
+	for( n = sizeof(double)+1; --n; *--p = *q++) ;
+	return r[0];
+}
+
+int _swapl( int l )
+{
+	int	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) &l;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+short _swaps( short s )
+{
+	short	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) &s;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+double _swapd_by_addr( double *d )
+{
+	double	r[2];
+	register char	*p, *q;
+	register int 	n;
+
+	p = (char *) &r[1];
+	q = (char *) d;
+	for( n = sizeof(double)+1; --n; *--p = *q++) ;
+
+	return r[0];
+}
+
+int _swapl_by_addr( int *l )
+{
+	int	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) l;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+short _swaps_by_addr( short *s )
+{
+	short	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) s;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+void _swaps_buffer( short *s2, short *s1, int n)
+{
+	register char *p, *q;
+	short r[2];
+	register short *s;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(short);
+		for( n++; --n; p += 2*sizeof(short)) {
+			*--p = *q++;
+			*--p = *q++;
+		}
+	} else {
+		for( s = s2, n++; --n; *s++ = r[0]) {
+			p = (char *) &r[1] ;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	}
+}
+
+void _swapl_buffer( int *s2, int *s1, int n)
+{
+	register char *p, *q;
+	int r[2];
+	register int *l;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(int);
+		for( n++; --n; p += 2*sizeof(int)) {
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	} else {
+		for( l = s2, n++; --n; *l++ = r[0]) {
+			p = (char *) &r[1] ;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	}
+}
+
+
+void _swapd_buffer( double *s2, double *s1, int n)
+{
+	register char *p, *q;
+	double r[2];
+	register double *d;
+	register int m;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(double);
+		for( n++; --n; p += 2*sizeof(double)) {
+			for( m = sizeof(double)+1; --m; *--p = *q++) ;
+		}
+	} else {
+		for( d = s2, n++; --n; *d++ = r[0]) {
+			p = (char *) &r[1] ;
+			for( m = sizeof(double)+1; --m; *--p = *q++) ;
+		}
+	}
+}
+
+
Index: branches/FACT++_part_filenames/dim/src/tcpip.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/tcpip.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/tcpip.c	(revision 18732)
@@ -0,0 +1,1855 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started           : 10-11-91
+ * Last modification : 29-07-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+/*
+#define DEBUG
+*/
+
+#ifdef WIN32
+#define FD_SETSIZE      16384
+#define poll(pfd,nfds,timeout)	WSAPoll(pfd,nfds,timeout)
+#define ioctl ioctlsocket
+
+#define closesock myclosesocket
+#define readsock recv
+#define writesock send
+
+#define EINTR WSAEINTR
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+#define HOST_NOT_FOUND	WSAHOST_NOT_FOUND
+#define NO_DATA	WSANO_DATA
+
+#else
+/*
+#define closesock(s) shutdown(s,2)
+*/
+#define closesock(s) close(s)
+#define readsock(a,b,c,d) read(a,b,c)
+
+#if defined(__linux__) && !defined (darwin)
+#define writesock(a,b,c,d) send(a,b,c,MSG_NOSIGNAL)
+#else
+#define writesock(a,b,c,d) write(a,b,c)
+#endif
+
+#ifdef solaris
+#define BSD_COMP
+/*
+#include <thread.h>
+*/
+#endif
+
+#ifdef LYNXOS
+#ifdef RAID
+typedef int pid_t;
+#endif
+#endif
+
+#include <ctype.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <netdb.h>
+
+#endif
+
+#ifdef __linux__
+#include <poll.h>
+#define MY_FD_ZERO(set)	
+#define MY_FD_SET(fd, set)		poll_add(fd)
+#define MY_FD_CLR(fd, set)
+#define MY_FD_ISSET(fd, set)	poll_test(fd)
+#else
+#define MY_FD_ZERO(set)			FD_ZERO(set)
+#define MY_FD_SET(fd, set)		FD_SET(fd, set)
+#define MY_FD_CLR(fd, set)		FD_CLR(fd, set)
+#define MY_FD_ISSET(fd, set)	FD_ISSET(fd, set)
+#endif
+
+#include <stdio.h>
+#include <time.h>
+#define DIMLIB
+#include <dim.h>
+
+#define ushort unsigned short
+
+static int Threads_on = 0;
+
+static int init_done = FALSE;		/* Is this module initialized? */
+static int	queue_id = 0;
+
+#ifdef WIN32
+static struct sockaddr_in DIM_sockname;
+#endif
+
+static int DIM_IO_path[2] = {-1,-1};
+static int DIM_IO_Done = 0;
+static int DIM_IO_valid = 1;
+
+static int Listen_backlog = SOMAXCONN;
+static int Keepalive_timeout_set = 0;
+static int Write_timeout = WRITE_TMOUT;
+static int Write_timeout_set = 0;
+static int Write_buffer_size = TCP_SND_BUF_SIZE;
+static int Read_buffer_size = TCP_RCV_BUF_SIZE;
+
+int Tcpip_max_io_data_write = TCP_SND_BUF_SIZE - 16;
+int Tcpip_max_io_data_read = TCP_RCV_BUF_SIZE - 16;
+
+void dim_set_listen_backlog(int size)
+{
+	Listen_backlog = size;
+}
+
+int dim_get_listen_backlog()
+{
+	return(Listen_backlog);
+}
+
+void dim_set_keepalive_timeout(int secs)
+{
+	Keepalive_timeout_set = secs;
+}
+
+int dim_get_keepalive_timeout()
+{
+	int ret;
+	extern int get_keepalive_tmout();
+
+	if(!(ret = Keepalive_timeout_set))
+	{
+		ret = get_keepalive_tmout();
+		Keepalive_timeout_set = ret;
+	}
+	return(ret);
+}
+
+void dim_set_write_timeout(int secs)
+{
+	Write_timeout = secs;
+	Write_timeout_set = 1;
+}
+
+int dim_get_write_timeout()
+{
+	int ret;
+	extern int get_write_tmout();
+
+	if(!Write_timeout_set)
+	{
+		if((ret = get_write_tmout()))
+			Write_timeout = ret;
+	}
+	return(Write_timeout);
+}
+
+int dim_set_write_buffer_size(int size)
+{
+	if(size >= TCP_SND_BUF_SIZE)
+	{
+		Write_buffer_size = size;
+		Tcpip_max_io_data_write = size - 16;
+		return(1);
+	}
+	return(0);
+}
+
+int dim_get_write_buffer_size()
+{
+	return(Write_buffer_size);
+}
+
+int dim_set_read_buffer_size(int size)
+{
+	if(size >= TCP_RCV_BUF_SIZE)
+	{
+		Read_buffer_size = size;
+		Tcpip_max_io_data_read = size - 16;
+		return(1);
+	}
+	return(0);
+}
+
+int dim_get_read_buffer_size()
+{
+	return(Read_buffer_size);
+}
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) 
+	{
+    	return(0);
+	}
+
+	/* Confirm that the WinSock DLL supports 2.0.*/
+	/* Note that if the DLL supports versions greater    */
+	/* than 2.0 in addition to 2.0, it will still return */
+	/* 2.0 in wVersion since that is the version we      */
+	/* requested.                                        */
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) 
+	{
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+
+int myclosesocket(int path)
+{
+	int code, ret;
+	code = WSAGetLastError();
+	ret = closesocket(path);
+	WSASetLastError(code);
+	return ret;
+}
+#endif
+
+int dim_tcpip_init(int thr_flag)
+{
+#ifdef WIN32
+	int addr, flags = 1;
+/*
+    void tcpip_task();
+*/
+	void create_io_thread(void);
+#else
+	struct sigaction sig_info;
+	sigset_t set;
+	void io_sig_handler();
+	void dummy_io_sig_handler();
+	void tcpip_pipe_sig_handler();
+#endif
+	extern int get_write_tmout();
+
+	if(init_done) 
+		return(1);
+
+	dim_get_write_timeout();
+#ifdef WIN32
+	init_sock();
+	Threads_on = 1;
+#else
+	if(thr_flag)
+	{
+		Threads_on = 1;
+	}
+	else
+	{
+		sigemptyset(&set);
+
+		sigaddset(&set,SIGALRM);
+	    sig_info.sa_handler = io_sig_handler;
+	    sig_info.sa_mask = set;
+#ifndef LYNXOS
+	    sig_info.sa_flags = SA_RESTART;
+#else
+	    sig_info.sa_flags = 0;
+#endif
+  
+		if( sigaction(SIGIO, &sig_info, 0) < 0 ) 
+		{
+			perror( "sigaction(SIGIO)" );
+			exit(1);
+		}
+	      
+	    sigemptyset(&set);
+	    sig_info.sa_handler = tcpip_pipe_sig_handler;
+	    sig_info.sa_mask = set;
+#ifndef LYNXOS 
+	    sig_info.sa_flags = SA_RESTART;
+#else
+	    sig_info.sa_flags = 0;
+#endif
+
+	    if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) {
+			perror( "sigaction(SIGPIPE)" );
+			exit(1);
+	    }
+	  
+	}
+#endif
+	if(Threads_on)
+	{
+#ifdef WIN32
+		if(DIM_IO_path[0] == -1)
+		{
+			if( (DIM_IO_path[0] = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+			{
+				perror("socket");
+				return(0);
+			}
+		
+			DIM_sockname.sin_family = PF_INET;
+			addr = 0;
+			DIM_sockname.sin_addr = *((struct in_addr *) &addr);
+			DIM_sockname.sin_port = htons((ushort) 2000); 
+			ioctl(DIM_IO_path[0], FIONBIO, &flags);
+		}
+#else
+		if(DIM_IO_path[0] == -1)
+		{
+			pipe(DIM_IO_path);
+		}
+#endif
+	}
+	if(!queue_id)
+		queue_id = dtq_create();
+
+#ifdef WIN32
+/*
+#ifndef STDCALL
+	tid = _beginthread((void *)(void *)tcpip_task,0,NULL);
+#else
+	tid = _beginthreadex(NULL, NULL,
+			tcpip_task,0,0,NULL);
+#endif
+*/
+	create_io_thread();
+#endif
+	init_done = 1;
+	return(1);
+}
+
+void dim_tcpip_stop()
+{
+#ifdef WIN32
+	closesock(DIM_IO_path[0]);
+#else
+	close(DIM_IO_path[0]);
+	close(DIM_IO_path[1]);
+#endif
+	DIM_IO_path[0] = -1;
+	DIM_IO_path[1] = -1;
+	DIM_IO_Done = 0;
+	init_done = 0;
+}
+
+static int enable_sig(int conn_id)
+{
+	int ret = 1, flags = 1;
+#ifndef WIN32
+	int pid;
+#endif
+
+#ifdef DEBUG
+	if(!Net_conns[conn_id].channel)
+	{
+	    printf("Enabling signals on channel 0\n");
+	    fflush(stdout);
+	}
+#endif
+
+	if(!init_done)
+	{
+		dim_tcpip_init(0);
+	}
+	if(Threads_on)
+	{
+#ifdef WIN32
+		DIM_IO_valid = 0;
+/*
+		ret = connect(DIM_IO_path[0], (struct sockaddr*)&DIM_sockname, sizeof(DIM_sockname));
+*/
+		closesock(DIM_IO_path[0]);
+		DIM_IO_path[0] = -1;
+		if( (DIM_IO_path[0] = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+		{
+			perror("socket");
+			return(1);
+		}		
+		ret = ioctl(DIM_IO_path[0], FIONBIO, &flags);
+		if(ret != 0)
+		{
+			perror("ioctlsocket");
+		}
+		DIM_IO_valid = 1;
+#else
+		if(DIM_IO_path[1] != -1)
+		{
+			if(!DIM_IO_Done)
+			{
+				DIM_IO_Done = 1;
+				write(DIM_IO_path[1], &flags, 4);
+			}
+		}
+#endif
+	}
+#ifndef WIN32
+	if(!Threads_on)
+	{
+	    pid = getpid();
+
+#ifndef __linux__
+		ret = ioctl(Net_conns[conn_id].channel, SIOCSPGRP, &pid );
+#else
+	    ret = fcntl(Net_conns[conn_id].channel,F_SETOWN, pid);
+#endif
+	    if(ret == -1)
+	    {
+#ifdef DEBUG
+	        printf("ioctl returned -1\n");
+#endif
+			return(ret);
+	    }
+	}
+	ret = ioctl(Net_conns[conn_id].channel, FIOASYNC, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+		printf("ioctl1 returned -1\n");
+#endif
+		return(ret);
+	}
+	
+    flags = fcntl(Net_conns[conn_id].channel,F_GETFD,0);
+#ifdef DEBUG
+    if(flags == -1)
+    {
+		printf("error\n");
+    }
+#endif
+    ret = fcntl(Net_conns[conn_id].channel,F_SETFD, flags | FD_CLOEXEC );
+    if(ret == -1)
+    {
+#ifdef DEBUG
+		printf("ioctl2 returned -1\n");
+#endif
+		return(ret);
+    }
+#endif
+	return(1);
+}
+
+#ifdef __linux__
+int tcpip_get_send_space(int conn_id)
+{
+	int ret, n_bytes;
+		
+	ret = ioctl(Net_conns[conn_id].channel, TIOCOUTQ, &n_bytes );
+	if(ret == -1) 
+	{
+#ifdef DEBUG
+		printf("Couln't get send buffer free size, ret =  %d\n", ret);
+#endif
+		return(0);
+	}
+/*
+	printf("tcpip_get_send_space %d\n", Write_buffer_size - n_bytes);
+*/
+	return(Write_buffer_size - n_bytes);
+}
+#endif
+
+/*
+static void dump_list()
+{
+	int	i;
+
+	for( i = 1; i < Curr_N_Conns; i++ )
+		if( Dna_conns[i].busy ) {
+			printf( "dump_list: conn_id=%d reading=%d\n",
+				i, Net_conns[i].reading );
+		}
+}
+*/
+
+#ifdef __linux__
+static struct pollfd *Pollfds = 0;
+static int Pollfd_size = 0;
+
+static int poll_create()
+{
+	int i;
+	if(Pollfd_size == 0)
+	{
+		Pollfd_size = Curr_N_Conns;
+		Pollfds = malloc(Pollfd_size * sizeof(struct pollfd));
+		Pollfds[0].fd = -1;
+		for(i = 0; i < Pollfd_size; i++)
+		{
+			Pollfds[i].events = POLLIN;
+		}
+	}
+	else if(Pollfd_size < Curr_N_Conns)
+	{
+		free(Pollfds);
+		Pollfd_size = Curr_N_Conns;
+		Pollfds = malloc(Pollfd_size * sizeof(struct pollfd));
+		Pollfds[0].fd = -1;
+		for(i = 0; i < Pollfd_size; i++)
+		{
+			Pollfds[i].events = POLLIN;
+		}
+	}
+	return 1;
+}
+
+static int poll_add(int fd)
+{
+	Pollfds[0].fd = fd;
+	return 1;
+}
+
+static int poll_test(int fd)
+{
+	if(Pollfds[0].fd == fd)
+	{
+		if( (Pollfds[0].revents & POLLIN) || (Pollfds[0].revents & POLLHUP) ) 
+		{
+		    Pollfds[0].revents = 0;
+			return 1;
+		}
+	}
+	return 0;
+}
+#endif
+
+static int list_to_fds( fd_set *fds )
+{
+	int	i;
+	int found = 0;
+
+	DISABLE_AST
+#ifdef __linux__
+	if(fds) {}
+	poll_create();
+#else
+	FD_ZERO( fds ) ;
+#endif
+	for( i = 1; i < Curr_N_Conns; i++ )
+    {
+#ifdef __linux__
+		Pollfds[i].fd = -1;
+#endif
+		if( Dna_conns[i].busy )
+		{
+			if(Net_conns[i].channel)
+			{
+				found = 1;
+#ifdef __linux__
+				Pollfds[i].fd = Net_conns[i].channel;
+#else
+				FD_SET( Net_conns[i].channel, fds );
+#endif
+
+			}
+		}
+	}
+	ENABLE_AST
+	return(found);
+}
+
+static int fds_get_entry( fd_set *fds, int *conn_id ) 
+{
+	int	i;
+
+#ifdef __linux__
+	int index = *conn_id;
+	if(fds) {}
+	index++;
+	for( i = index; i < Pollfd_size; i++ )
+	{
+		if( Dna_conns[i].busy && (
+		    (Pollfds[i].revents & POLLIN) || (Pollfds[i].revents & POLLHUP) ) ) 
+		{
+		    Pollfds[i].revents = 0;
+		    if(Net_conns[i].channel)
+		    {
+				*conn_id = i;
+				return 1;
+			}
+		}
+	}
+	return 0;
+#else
+	for( i = 1; i < Curr_N_Conns; i++ )
+	{
+		if( Dna_conns[i].busy &&
+		    FD_ISSET(Net_conns[i].channel, fds) )
+		{
+			if(Net_conns[i].channel)
+		    {
+				*conn_id = i;
+				return 1;
+			}
+		}
+	}
+	return 0;
+#endif
+}
+
+#if defined(__linux__) && !defined (darwin)
+
+void tcpip_set_keepalive( int channel, int tmout )
+{
+   int val;
+
+   /* Enable keepalive for the given channel */
+   val = 1;
+   setsockopt(channel, SOL_SOCKET, SO_KEEPALIVE, (char*)&val, sizeof(val));
+
+   /* Set the keepalive poll interval to something small.
+      Warning: this section may not be portable! */
+   val = tmout;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPIDLE, (char*)&val, sizeof(val));
+   val = 3;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPCNT, (char*)&val, sizeof(val));
+   val = tmout/3;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPINTVL, (char*)&val, sizeof(val));
+}
+
+#else
+
+static void tcpip_test_write( int conn_id )
+{
+	/* Write to every socket we use, which uses the TCPIP protocol,
+	 * which has an established connection (reading), which is currently
+	 * not writing data, so we can check if it is still alive.
+	 */
+	time_t cur_time;
+	
+	if(strcmp(Net_conns[conn_id].node,"MYNODE"))
+	{
+		cur_time = time(NULL);
+		if( cur_time - Net_conns[conn_id].last_used > Net_conns[conn_id].timeout )
+		{
+			dna_test_write( conn_id );
+		}
+	}
+}
+
+#endif
+
+void tcpip_set_test_write(int conn_id, int timeout)
+{
+
+#if defined(__linux__) && !defined (darwin)
+	tcpip_set_keepalive(Net_conns[conn_id].channel, timeout);
+#else
+
+	Net_conns[conn_id].timr_ent = dtq_add_entry( queue_id, timeout, 
+		tcpip_test_write, conn_id );
+	Net_conns[conn_id].timeout = timeout;
+	Net_conns[conn_id].last_used = time(NULL);
+
+#endif
+
+}
+
+void tcpip_rem_test_write(int conn_id)
+{
+	if(Net_conns[conn_id].timr_ent)
+	{
+		dtq_rem_entry(queue_id, Net_conns[conn_id].timr_ent);
+		Net_conns[conn_id].timr_ent = NULL;
+	}
+	Net_conns[conn_id].last_used = time(NULL);
+}
+
+void tcpip_pipe_sig_handler( int num )
+{
+	if(num){}
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/
+}
+
+static int get_bytes_to_read(int conn_id)
+{
+	int i, ret, count = 0;
+	
+	for(i = 0; i < 3; i++)
+	{
+		ret = ioctl( Net_conns[conn_id].channel, FIONREAD, &count );
+	    if( ret != 0)
+		{
+			count = 0;
+			break;
+	    }
+	    if(count > 0)
+	    {
+			break;
+	    }
+	}
+	return(count);
+}
+
+static int do_read( int conn_id )
+{
+	/* There is 'data' pending, read it.
+	 */
+	int	len, totlen, size, count;
+	char	*p;
+
+	count = get_bytes_to_read(conn_id);
+	if(!count)
+	{
+/*
+		dna_report_error(conn_id, -1,
+			"Connection closed by remote peer", DIM_ERROR, DIMTCPRDERR);
+		printf("conn_id %d\n", conn_id);
+*/
+		Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+		return 0;
+	}
+
+	size = Net_conns[conn_id].size;
+	p = Net_conns[conn_id].buffer;
+	totlen = 0;
+/*
+	count = 1;
+*/
+	while( size > 0 && count > 0 )
+	{
+/*
+		would this be better? not sure afterwards...
+		nbytes = (size < count) ? size : count;
+		if( (len = readsock(Net_conns[conn_id].channel, p, (size_t)nbytes, 0)) <= 0 ) 
+*/
+		if( (len = (int)readsock(Net_conns[conn_id].channel, p, (size_t)size, 0)) <= 0 ) 
+		{	/* Connection closed by other side. */
+			Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+			return 0;
+		} 
+		else 
+		{
+			
+			/*
+			printf("tcpip: read %d bytes:\n",len); 
+			printf( "buffer[0]=%d\n", vtohl((int *)p[0]));
+			printf( "buffer[1]=%d\n", vtohl((int *)p[1]));
+			printf( "buffer[2]=%x\n", vtohl((int *)p[2]));
+			*/
+			totlen += len;
+			size -= len;
+			p += len;
+		}
+		if(size)
+			count = get_bytes_to_read(conn_id);
+	}
+
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].read_rout( conn_id, 1, totlen );
+	return 1;
+}
+
+
+void do_accept( int conn_id )
+{
+	/* There is a 'connect' pending, serve it.
+	 */
+	struct sockaddr_in	other;
+	int			othersize;
+
+	othersize = sizeof(other);
+	memset( (char *) &other, 0, (size_t)othersize );
+	Net_conns[conn_id].mbx_channel = (int)accept( Net_conns[conn_id].channel,
+						 (struct sockaddr*)&other, (unsigned int *)&othersize );
+	if( Net_conns[conn_id].mbx_channel < 0 ) 
+	{
+		return;
+	}
+/*
+	else
+	{
+			int all, a, b, c, d;
+			char *pall;
+
+			all = other.sin_addr.s_addr;
+			pall = &all;
+			a = pall[0];
+			a &= 0x000000ff;
+			b = pall[1];
+			b &= 0x000000ff;
+			c = pall[2];
+			c &= 0x000000ff;
+			d = pall[3];
+			d &= 0x000000ff;
+printf("TCPIP got %d.%d.%d.%d \n",
+		a,b,c,d);
+		if((a == 134) && (b == 79) && (c == 157) && (d == 40))
+		{
+			closesock(Net_conns[conn_id].mbx_channel);
+			return;
+		}
+	}
+*/
+
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].read_rout( Net_conns[conn_id].mbx_channel,
+				      conn_id, TCPIP );
+}
+
+void io_sig_handler(int num)
+{
+    fd_set	rfds;
+    int	conn_id, ret, selret, count;
+	struct timeval	timeout;
+
+	if(num){}
+	do
+	{
+		timeout.tv_sec = 0;		/* Don't wait, just poll */
+		timeout.tv_usec = 0;
+		list_to_fds( &rfds );
+#ifdef __linux__
+		selret = poll(Pollfds, Pollfd_size, 0);
+#else
+		selret = select(FD_SETSIZE, &rfds, NULL, NULL, &timeout);
+#endif
+		if(selret > 0)
+		{
+			conn_id = 0;
+			while( (ret = fds_get_entry( &rfds, &conn_id )) > 0 ) 
+			{
+				if( Net_conns[conn_id].reading )
+				{
+					count = 0;
+					do
+					{
+						if(Net_conns[conn_id].channel)
+						{
+							do_read( conn_id );
+							count = get_bytes_to_read(conn_id);
+						}
+						else
+						{
+							count = 0;
+						}
+					}while(count > 0 );
+				}
+				else
+				{
+					do_accept( conn_id );
+				}
+				MY_FD_CLR( (unsigned)Net_conns[conn_id].channel, &rfds );
+	    	}
+		}
+	}while(selret > 0);
+}
+
+void tcpip_task( void *dummy)
+{
+	/* wait for an IO signal, find out what is happening and
+	 * call the right routine to handle the situation.
+	 */
+	fd_set	rfds, *pfds;
+#ifndef __linux__
+	fd_set efds;
+#endif
+	int	conn_id, ret, count;
+#ifndef WIN32
+	int data;
+#endif
+	if(dummy){}
+	while(1)
+	{
+		while(!DIM_IO_valid)
+			dim_usleep(1000);
+
+		list_to_fds( &rfds );
+		MY_FD_ZERO(&efds);
+#ifdef WIN32
+		pfds = &efds;
+#else
+		pfds = &rfds;
+#endif
+		MY_FD_SET( DIM_IO_path[0], pfds );
+#ifdef __linux__
+		ret = poll(Pollfds, Pollfd_size, -1);
+#else
+		ret = select(FD_SETSIZE, &rfds, NULL, &efds, NULL);
+#endif
+		if(ret <= 0)
+		  {
+		    printf("poll returned %d, errno %d\n", ret, errno);
+		  }
+		if(ret > 0)
+		{
+			if(MY_FD_ISSET(DIM_IO_path[0], pfds) )
+			{
+#ifndef WIN32
+				read(DIM_IO_path[0], &data, 4);
+				DIM_IO_Done = 0;
+#endif
+				MY_FD_CLR( (unsigned)DIM_IO_path[0], pfds );
+			}
+/*
+			{
+			DISABLE_AST
+*/
+			conn_id = 0;
+			while( (ret = fds_get_entry( &rfds, &conn_id )) > 0 ) 
+			{
+				if( Net_conns[conn_id].reading )
+				{
+					count = 0;
+					do
+					{
+						DISABLE_AST
+						if(Net_conns[conn_id].channel)
+						{
+							do_read( conn_id );
+							count = get_bytes_to_read(conn_id);
+						}
+						else
+						{
+							count = 0;
+						}
+						ENABLE_AST
+					}while(count > 0 );
+				}
+				else
+				{
+					DISABLE_AST
+					do_accept( conn_id );
+					ENABLE_AST
+				}
+				MY_FD_CLR( (unsigned)Net_conns[conn_id].channel, &rfds );
+			}
+/*
+			ENABLE_AST
+			}
+*/
+#ifndef WIN32
+			return;
+#endif
+		}
+	}
+}
+
+int tcpip_start_read( int conn_id, char *buffer, int size, void (*ast_routine)() )
+{
+	/* Install signal handler stuff on the socket, and record
+	 * some necessary information: we are reading, and want size
+	 * as size, and use buffer.
+	 */
+
+	Net_conns[conn_id].read_rout = ast_routine;
+	Net_conns[conn_id].buffer = buffer;
+	Net_conns[conn_id].size = size;
+	if(Net_conns[conn_id].reading == -1)
+	{
+		if(enable_sig( conn_id ) == -1)
+		{
+#ifdef DEBUG
+			printf("START_READ - enable_sig returned -1\n");
+#endif
+			return(0);
+		}
+	}
+	Net_conns[conn_id].reading = TRUE;
+	return(1);
+}
+
+int check_node_addr( char *node, unsigned char *ipaddr)
+{
+unsigned char *ptr;
+int ret;
+
+	ptr = (unsigned char *)node+(int)strlen(node)+1;
+    ipaddr[0] = *ptr++;
+    ipaddr[1] = *ptr++;
+    ipaddr[2] = *ptr++;
+    ipaddr[3] = *ptr++;
+	if( (ipaddr[0] == 0xff) &&
+		(ipaddr[1] == 0xff) &&
+		(ipaddr[2] == 0xff) &&
+		(ipaddr[3] == 0xff) )
+	{
+		errno = ECONNREFUSED;	/* fake an error code */
+#ifdef WIN32
+		WSASetLastError(errno);
+#endif
+		return(0);
+	}
+	if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+	{
+#ifndef WIN32
+		ret = h_errno;
+#else
+		ret = WSAGetLastError();
+#endif
+		if((ret == HOST_NOT_FOUND) || (ret == NO_DATA))
+				return(0);
+/*		
+		errno = ECONNREFUSED;
+#ifdef WIN32
+		WSASetLastError(errno);
+#endif
+		return(0);
+*/
+	}
+	return(1);
+}
+
+int tcpip_open_client( int conn_id, char *node, char *task, int port )
+{
+	/* Create connection: create and initialize socket stuff. Try
+	 * and make a connection with the server.
+	 */
+	struct sockaddr_in sockname;
+#ifndef VxWorks
+	struct hostent *host = 0;
+#else
+	int host_addr;
+#endif
+	int path, val, ret_code, ret;
+	int a,b,c,d;
+/* Fix for gcc 4.6 "dereferencing type-punned pointer will break strict-aliasing rules"?!*/
+	unsigned char ipaddr_buff[4];
+	unsigned char *ipaddr = ipaddr_buff;
+	int host_number = 0;
+
+    dim_tcpip_init(0);
+	if(isdigit(node[0]))
+	{
+		sscanf(node,"%d.%d.%d.%d",&a, &b, &c, &d);
+	    ipaddr[0] = (unsigned char)a;
+	    ipaddr[1] = (unsigned char)b;
+	    ipaddr[2] = (unsigned char)c;
+	    ipaddr[3] = (unsigned char)d;
+	    host_number = 1;
+/*
+#ifndef VxWorks
+		if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+		{
+#ifndef WIN32
+			ret = h_errno;
+#else
+			ret = WSAGetLastError();
+#endif
+//			if((ret == HOST_NOT_FOUND) || (ret == NO_DATA))
+//			{
+//				if(!check_node_addr(node, ipaddr))
+//					return(0);
+//			}
+		}
+#endif
+*/
+	}
+#ifndef VxWorks
+	else if( (host = gethostbyname(node)) == (struct hostent *)0 ) 
+	{
+		if(!check_node_addr(node, ipaddr))
+			return(0);
+		host_number = 1;
+/*
+          ptr = (unsigned char *)node+(int)strlen(node)+1;
+          ipaddr[0] = *ptr++;
+          ipaddr[1] = *ptr++;
+          ipaddr[2] = *ptr++;
+          ipaddr[3] = *ptr++;
+          host_number = 1;
+		  if( (ipaddr[0] == 0xff) &&
+			  (ipaddr[1] == 0xff) &&
+			  (ipaddr[2] == 0xff) &&
+			  (ipaddr[3] == 0xff) )
+		  {
+			  errno = ECONNREFUSED;
+#ifdef WIN32
+			  WSASetLastError(errno);
+#endif
+			  return(0);
+		  }
+		  if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+		  {
+			  errno = ECONNREFUSED;
+#ifdef WIN32
+			  WSASetLastError(errno);
+#endif
+			  return(0);
+		  }
+*/
+	}
+#else
+	*(strchr(node,'.')) = '\0';
+	host_addr = hostGetByName(node);
+	printf("node %s addr: %x\n",node, host_addr);
+#endif
+
+	if( (path = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		perror("socket");
+		return(0);
+	}
+
+	val = 1;
+      
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Write_buffer_size;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+#if defined(__linux__) && !defined (darwin)
+	val = 2;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_SYNCNT, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_SYNCNT\n");
+#endif
+	}
+#endif
+
+	sockname.sin_family = PF_INET;
+#ifndef VxWorks
+    if(host_number)
+		sockname.sin_addr = *((struct in_addr *) ipaddr);
+    else
+		sockname.sin_addr = *((struct in_addr *) host->h_addr);
+#else
+    if(host_number)
+		sockname.sin_addr = *((struct in_addr *) ipaddr);
+    else
+		sockname.sin_addr = *((struct in_addr *) &host_addr);
+#endif
+	sockname.sin_port = htons((ushort) port); /* port number to send to */
+	while((ret = connect(path, (struct sockaddr*)&sockname, sizeof(sockname))) == -1 )
+	{
+		if(errno != EINTR)
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+	strcpy( Net_conns[conn_id].node, node );
+	strcpy( Net_conns[conn_id].task, task );
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].port = port;
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+int tcpip_open_server( int conn_id, char *task, int *port )
+{
+	/* Create connection: create and initialize socket stuff,
+	 * find a free port on this node.
+	 */
+	struct sockaddr_in sockname;
+	int path, val, ret_code, ret;
+
+    dim_tcpip_init(0);
+	if( (path = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		return(0);
+	}
+
+	val = 1;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Write_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(void *)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+/*
+	sval1 = sizeof(val1);
+	if ((ret_code = getsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(void *)&val1, &sval1)) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+printf("Set size to %d, got size %d\n", val, val1);
+*/
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(void *)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	if( *port == SEEK_PORT ) 
+	{	/* Search a free one. */
+		*port = START_PORT_RANGE - 1;
+		do 
+		{
+			(*port)++;
+			sockname.sin_family = AF_INET;
+			sockname.sin_addr.s_addr = INADDR_ANY;
+			sockname.sin_port = htons((ushort) *port);
+			if( *port > STOP_PORT_RANGE ) {
+				errno = EADDRNOTAVAIL;	/* fake an error code */
+				closesock(path);
+#ifdef WIN32
+				WSASetLastError(errno);
+#endif
+				return(0);
+			}
+			ret = bind(path, (struct sockaddr*)&sockname, sizeof(sockname));
+/*
+printf("Trying port %d, ret = %d\n", *port, ret);
+*/
+		} while( ret == -1 );
+/*
+		} while( bind(path, (struct sockaddr*)&sockname, sizeof(sockname)) == -1 );
+*/
+	} else {
+#ifndef WIN32
+		val = 1;
+		if( setsockopt(path, SOL_SOCKET, SO_REUSEADDR, (char*)&val, 
+			sizeof(val)) == -1 )
+		{
+#ifdef DEBUG
+			printf("Couln't set SO_REUSEADDR\n");
+#endif
+			closesock(path); 
+			return(0);
+		}
+#endif
+		sockname.sin_family = AF_INET;
+		sockname.sin_addr.s_addr = INADDR_ANY;
+		sockname.sin_port = htons((ushort) *port);
+		if( (ret = bind(path, (struct sockaddr*) &sockname, sizeof(sockname))) == -1 )
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+
+	if( (ret = listen(path, Listen_backlog)) == -1 )
+	{
+		closesock(path);
+		return(0);
+	}
+
+	strcpy( Net_conns[conn_id].node, "MYNODE" );
+	strcpy( Net_conns[conn_id].task, task );
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].port = *port;
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+
+int tcpip_start_listen( int conn_id, void (*ast_routine)() )
+{
+	/* Install signal handler stuff on the socket, and record
+	 * some necessary information: we are NOT reading, thus
+	 * no size.
+	 */
+
+	Net_conns[conn_id].read_rout = ast_routine;
+	Net_conns[conn_id].size = -1;
+	if(Net_conns[conn_id].reading == -1)
+	{
+		if(enable_sig( conn_id ) == -1)
+		{
+#ifdef DEBUG
+			printf("START_LISTEN - enable_sig returned -1\n");
+#endif
+			return(0);
+		}
+	}
+	Net_conns[conn_id].reading = FALSE;
+	return(1);
+}
+
+
+int tcpip_open_connection( int conn_id, int path )
+{
+	/* Fill in/clear some fields, the node and task field
+	 * get filled in later by a special packet.
+	 */
+	int val, ret_code;
+
+
+	val = 1;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+	val = Write_buffer_size;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].node[0] = 0;
+	Net_conns[conn_id].task[0] = 0;
+	Net_conns[conn_id].port = 0;
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+
+void tcpip_get_node_task( int conn_id, char *node, char *task )
+{
+	strcpy( node, Net_conns[conn_id].node );
+	strcpy( task, Net_conns[conn_id].task );
+}
+
+int tcpip_write( int conn_id, char *buffer, int size )
+{
+	/* Do a (synchronous) write to conn_id.
+	 */
+	int	wrote;
+
+	wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+	if( wrote == -1 ) {
+/*
+		Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+*/
+		dna_report_error(conn_id, 0,
+			"Writing (blocking) to", DIM_ERROR, DIMTCPWRRTY);
+		return(0);
+	}
+	return(wrote);
+}
+
+int set_non_blocking(int channel)
+{
+  int ret, flags = 1;
+	ret = ioctl(channel, FIONBIO, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+	    printf("ioctl non block returned -1\n");
+#endif
+		return(ret);
+	}
+	return(1);
+}
+
+int set_blocking(int channel)
+{
+  int ret, flags = 0;
+	ret = ioctl(channel, FIONBIO, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+	    printf("ioctl block returned -1\n");
+#endif
+		return(ret);
+	}
+	return(1);
+}
+
+int tcpip_write_nowait( int conn_id, char *buffer, int size )
+{
+	/* Do a (asynchronous) write to conn_id.
+	 */
+	int	wrote, ret, selret;
+	int tcpip_would_block();
+#ifdef __linux__
+	struct pollfd pollitem;
+#else
+	struct timeval	timeout;
+	fd_set wfds;
+#endif
+	
+	set_non_blocking(Net_conns[conn_id].channel);
+/*
+#ifdef __linux__
+	tcpip_get_send_space(conn_id);
+#endif
+*/
+	wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+#ifndef WIN32
+	ret = errno;
+#else
+	ret = WSAGetLastError();
+#endif
+/*
+	if((wrote == -1) && (!tcpip_would_block(ret)))
+	{
+	dna_report_error(conn_id, 0,
+			"Writing (non-blocking) to", DIM_ERROR, DIMTCPWRRTY);
+printf("Writing %d, ret = %d\n", size, ret);
+	}
+*/
+	set_blocking(Net_conns[conn_id].channel);
+	if(wrote == -1)
+	{
+		if(tcpip_would_block(ret))
+		{
+#ifdef __linux__
+		  pollitem.fd = Net_conns[conn_id].channel;
+		  pollitem.events = POLLOUT;
+		  pollitem.revents = 0;
+		  selret = poll(&pollitem, 1, Write_timeout*1000);
+#else
+			timeout.tv_sec = Write_timeout;
+			timeout.tv_usec = 0;
+			FD_ZERO(&wfds);
+			FD_SET( Net_conns[conn_id].channel, &wfds);
+			selret = select(FD_SETSIZE, NULL, &wfds, NULL, &timeout);
+#endif
+			if(selret > 0)
+			{
+				wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+				if( wrote == -1 ) 
+				{
+					dna_report_error(conn_id, 0,
+						"Writing to", DIM_ERROR, DIMTCPWRRTY);
+					return(0);
+				}
+			}
+		}
+		else
+		{
+			dna_report_error(conn_id, 0,
+				"Writing (non-blocking) to", DIM_ERROR, DIMTCPWRRTY);
+			return(0);
+		}
+	}
+	if(wrote == -1)
+	{
+		Net_conns[conn_id].write_timedout = 1;
+	}
+	return(wrote);
+}
+
+int tcpip_close( int conn_id )
+{
+	int channel;
+	/* Clear all traces of the connection conn_id.
+	 */
+	if(Net_conns[conn_id].timr_ent)
+	{
+		dtq_rem_entry(queue_id, Net_conns[conn_id].timr_ent);
+		Net_conns[conn_id].timr_ent = NULL;
+	}
+	channel = Net_conns[conn_id].channel;
+	Net_conns[conn_id].channel = 0;
+	Net_conns[conn_id].port = 0;
+	Net_conns[conn_id].node[0] = 0;
+	Net_conns[conn_id].task[0] = 0;
+	if(channel)
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+			Net_conns[conn_id].write_timedout = 0;
+#if defined(__linux__) && !defined (darwin)
+			shutdown(channel, 2);
+#endif
+		}
+		closesock(channel);
+	}
+	return(1);
+}
+
+
+int tcpip_failure( int code )
+{
+	return(!code);
+}
+
+int tcpip_would_block( int code )
+{
+   if(code == EWOULDBLOCK)
+		return(1);
+    return(0);
+}
+
+void tcpip_report_error( int code )
+{
+#ifndef WIN32
+	if(code){}
+	perror("tcpip");
+#else
+	int my_perror();
+
+	my_perror("tcpip", code);
+#endif
+}
+
+#ifdef WIN32
+int my_perror(char *str, int error)
+{
+int code;
+
+	if(error <= 0)
+		code = WSAGetLastError();
+	else
+		code = error;
+	printf("new - %s\n",strerror(code));
+	printf("%s: ",str);
+	switch(code)
+	{
+		case WSAEWOULDBLOCK:
+			printf("Operation would block");
+			break;
+		case WSAEINPROGRESS:
+			printf("Operation now in progress");
+			break;
+		case WSAEALREADY:
+			printf("Operation already in progress");
+			break;
+		case WSAENOTSOCK:
+			printf("Socket operation on non-socket");
+			break;
+		case WSAEDESTADDRREQ:
+			printf("Destination address required");
+			break;
+		case WSAEMSGSIZE:
+			printf("Message too long");
+			break;
+		case WSAEPROTOTYPE:
+			printf("Protocol wrong type for socket");
+			break;
+		case WSAENOPROTOOPT:
+			printf("Protocol not available");
+			break;
+		case WSAEPROTONOSUPPORT:
+			printf("Protocol not supported");
+			break;
+		case WSAESOCKTNOSUPPORT:
+			printf("Socket type not supported");
+			break;
+		case WSAEOPNOTSUPP:
+			printf("Operation not supported on transport endpoint");
+			break;
+		case WSAEPFNOSUPPORT:
+			printf("Protocol family not supported");
+			break;
+		case WSAEAFNOSUPPORT:
+			printf("Address family not supported by protocol");
+			break;
+		case WSAEADDRINUSE:
+			printf("Address already in use");
+			break;
+		case WSAEADDRNOTAVAIL:
+			printf("Cannot assign requested address");
+			break;
+		case WSAENETDOWN:
+			printf("Network is down");
+			break;
+		case WSAENETUNREACH:
+			printf("Network is unreachable");
+			break;
+		case WSAENETRESET:
+			printf("Network dropped connection because of reset");
+			break;
+		case WSAECONNABORTED:
+			printf("Software caused connection abort");
+			break;
+		case WSAECONNRESET:
+			printf("Connection reset by peer");
+			break;
+		case WSAENOBUFS:
+			printf("No buffer space available");
+			break;
+		case WSAEISCONN:
+			printf("Transport endpoint is already connected");
+			break;
+		case WSAENOTCONN:
+			printf("Transport endpoint is not connected");
+			break;
+		case WSAESHUTDOWN:
+			printf("Cannot send after transport endpoint shutdown");
+			break;
+		case WSAETOOMANYREFS:
+			printf("Too many references: cannot splice");
+			break;
+		case WSAETIMEDOUT:
+			printf("Connection timed out");
+			break;
+		case WSAECONNREFUSED:
+			printf("Connection refused");
+			break;
+		case WSAELOOP:
+			printf("Too many symbolic links encountered");
+			break;
+		case WSAENAMETOOLONG:
+			printf("File name too long");
+			break;
+		case WSAEHOSTDOWN:
+			printf("Host is down");
+			break;
+		case WSAEHOSTUNREACH:
+			printf("No route to host");
+			break;
+		case WSAENOTEMPTY:
+			printf("Directory not empty");
+			break;
+		case WSAEUSERS:
+			printf("Too many users");
+			break;
+		case WSAEDQUOT:
+			printf("Quota exceeded");
+			break;
+		case WSAESTALE:
+			printf("Stale NFS file handle");
+			break;
+		case WSAEREMOTE:
+			printf("Object is remote");
+			break;
+		case WSAHOST_NOT_FOUND:
+			printf("Host not found");
+			break;
+		case WSATRY_AGAIN:
+			printf("Host not found, or SERVERFAIL");
+			break;
+		case WSANO_RECOVERY:
+			printf("Non recoverable errors, FORMERR, REFUSED, NOTIMP");
+			break;
+		case WSANO_DATA:
+			printf("Valid name, no data record of requested type");
+			break;
+		default:
+			printf("Unknown error %d",code);
+	}
+	printf("\n");
+	return(1);
+}
+
+void my_strerror(int error, char *msg)
+{
+int code;
+char str[128];
+
+	if(error <= 0)
+		code = WSAGetLastError();
+	else
+		code = error;
+	switch(code)
+	{
+		case WSAEWOULDBLOCK:
+			sprintf(str,"Operation would block");
+			break;
+		case WSAEINPROGRESS:
+			sprintf(str,"Operation now in progress");
+			break;
+		case WSAEALREADY:
+			sprintf(str,"Operation already in progress");
+			break;
+		case WSAENOTSOCK:
+			sprintf(str,"Socket operation on non-socket");
+			break;
+		case WSAEDESTADDRREQ:
+			sprintf(str,"Destination address required");
+			break;
+		case WSAEMSGSIZE:
+			sprintf(str,"Message too long");
+			break;
+		case WSAEPROTOTYPE:
+			sprintf(str,"Protocol wrong type for socket");
+			break;
+		case WSAENOPROTOOPT:
+			sprintf(str,"Protocol not available");
+			break;
+		case WSAEPROTONOSUPPORT:
+			sprintf(str,"Protocol not supported");
+			break;
+		case WSAESOCKTNOSUPPORT:
+			sprintf(str,"Socket type not supported");
+			break;
+		case WSAEOPNOTSUPP:
+			sprintf(str,"Operation not supported on transport endpoint");
+			break;
+		case WSAEPFNOSUPPORT:
+			sprintf(str,"Protocol family not supported");
+			break;
+		case WSAEAFNOSUPPORT:
+			sprintf(str,"Address family not supported by protocol");
+			break;
+		case WSAEADDRINUSE:
+			sprintf(str,"Address already in use");
+			break;
+		case WSAEADDRNOTAVAIL:
+			sprintf(str,"Cannot assign requested address");
+			break;
+		case WSAENETDOWN:
+			sprintf(str,"Network is down");
+			break;
+		case WSAENETUNREACH:
+			sprintf(str,"Network is unreachable");
+			break;
+		case WSAENETRESET:
+			sprintf(str,"Network dropped connection because of reset");
+			break;
+		case WSAECONNABORTED:
+			sprintf(str,"Software caused connection abort");
+			break;
+		case WSAECONNRESET:
+			sprintf(str,"Connection reset by peer");
+			break;
+		case WSAENOBUFS:
+			sprintf(str,"No buffer space available");
+			break;
+		case WSAEISCONN:
+			sprintf(str,"Transport endpoint is already connected");
+			break;
+		case WSAENOTCONN:
+			sprintf(str,"Transport endpoint is not connected");
+			break;
+		case WSAESHUTDOWN:
+			sprintf(str,"Cannot send after transport endpoint shutdown");
+			break;
+		case WSAETOOMANYREFS:
+			sprintf(str,"Too many references: cannot splice");
+			break;
+		case WSAETIMEDOUT:
+			sprintf(str,"Connection timed out");
+			break;
+		case WSAECONNREFUSED:
+			sprintf(str,"Connection refused");
+			break;
+		case WSAELOOP:
+			sprintf(str,"Too many symbolic links encountered");
+			break;
+		case WSAENAMETOOLONG:
+			sprintf(str,"File name too long");
+			break;
+		case WSAEHOSTDOWN:
+			sprintf(str,"Host is down");
+			break;
+		case WSAEHOSTUNREACH:
+			sprintf(str,"No route to host");
+			break;
+		case WSAENOTEMPTY:
+			sprintf(str,"Directory not empty");
+			break;
+		case WSAEUSERS:
+			sprintf(str,"Too many users");
+			break;
+		case WSAEDQUOT:
+			sprintf(str,"Quota exceeded");
+			break;
+		case WSAESTALE:
+			sprintf(str,"Stale NFS file handle");
+			break;
+		case WSAEREMOTE:
+			sprintf(str,"Object is remote");
+			break;
+		case WSAHOST_NOT_FOUND:
+			sprintf(str,"Host not found");
+			break;
+		case WSATRY_AGAIN:
+			sprintf(str,"Host not found, or SERVERFAIL");
+			break;
+		case WSANO_RECOVERY:
+			sprintf(str,"Non recoverable errors, FORMERR, REFUSED, NOTIMP");
+			break;
+		case WSANO_DATA:
+			sprintf(str,"Valid name, no data record of requested type");
+			break;
+		default:
+			sprintf(str,"Unknown error %d",code);
+	}
+	strcpy(msg, str);
+}
+#endif
+
+void tcpip_get_error( char *str, int code )
+{
+	DISABLE_AST
+#ifndef WIN32
+	if(code){}
+	if((errno == 0) && (h_errno == HOST_NOT_FOUND))
+		strcpy(str,"Host not found");
+	else
+		strcpy(str, strerror(errno));
+#else
+	my_strerror(code, str);
+#endif
+	ENABLE_AST
+}
Index: branches/FACT++_part_filenames/dim/src/tokenstring.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/tokenstring.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/tokenstring.cxx	(revision 18732)
@@ -0,0 +1,218 @@
+#define DIMLIB
+#include "tokenstring.hxx"
+
+TokenString::TokenString(char *str)
+{
+	token_buff = new char[((int)strlen(str)+1)*2];
+	token_ptr = token_buff;
+	token_seps = 0;
+	store_str(str);
+	token_ptr = token_buff;
+	curr_token_ptr = token_ptr;
+}
+
+TokenString::TokenString(char *str, char *seps)
+{
+	token_buff = new char[((int)strlen(str)+1)*2];
+	token_ptr = token_buff;
+	token_seps = new char[((int)strlen(seps)+1)];
+	strcpy(token_seps,seps);
+	store_str(str);
+	token_ptr = token_buff;
+	curr_token_ptr = token_ptr;
+}
+
+TokenString::~TokenString()
+{
+  if(token_buff) 
+  { 
+	  delete []token_buff; 
+	  token_buff = 0; 
+  }
+  if(token_seps) 
+  { 
+	  delete []token_seps; 
+	  token_seps = 0; 
+  }
+}
+
+void TokenString::store_str(char *str)
+{
+int i, in_tok = 0;
+int sep = 0;
+
+	n_tokens = 0;
+	if(!token_seps)
+	{
+		while(*str)
+		{
+			if( (*str == '@') || (*str == '|') || (*str == '/') || 
+				(*str == '=') || (*str == '(') || (*str == ')') ||
+				(*str == '.') || (*str == '\n'))
+			{   	
+				if(in_tok)
+				{
+					*token_ptr++ = '\0';
+					n_tokens++;
+				}
+				*token_ptr++ = *str++;
+				*token_ptr++ = '\0';
+				n_tokens++;
+				in_tok = 0;
+			}
+			else if(*str == '"')
+			{
+				if(in_tok)
+				{
+					*token_ptr++ = '\0';
+					n_tokens++;
+				}
+				*token_ptr++ = *str++;
+				while(*str != '"')
+				{
+					*token_ptr++ = *str++;
+				}
+				*token_ptr++ = *str++;
+				*token_ptr++ = '\0';
+				n_tokens++;
+				in_tok = 0;
+			}
+			else if(*str == ':')
+			{
+				if(*(str+1) == ':')
+				{
+					if(in_tok)
+					{
+						*token_ptr++ = '\0';
+						n_tokens++;
+					}
+					*token_ptr++ = *str++;
+					*token_ptr++ = *str++;
+					*token_ptr++ = '\0';
+					n_tokens++;
+					in_tok = 0;
+				}
+				else
+				{
+					*token_ptr++ = *str++;
+					in_tok = 1;
+				}
+			}
+			else
+			{
+				*token_ptr++ = *str++;
+				in_tok = 1;
+			}
+		}
+	}
+	else
+	{
+		while(*str)
+		{
+			sep = 0;
+			for(i = 0; i < (int)strlen(token_seps); i++)
+			{
+				if(*str == token_seps[i])
+				{
+					if(in_tok)
+					{
+						*token_ptr++ = '\0';
+						n_tokens++;
+					}
+					*token_ptr++ = *str++;
+					*token_ptr++ = '\0';
+					sep = 1;
+					in_tok = 0;
+					n_tokens++;
+					break;
+				}
+			}
+			if(!sep)
+			{
+				*token_ptr++ = *str++;
+				in_tok = 1;
+			}
+		}
+	}
+	if(in_tok)
+	{
+		*token_ptr++ = '\0';
+		n_tokens++;
+	}
+	*token_ptr++ = '\0';
+}
+
+int TokenString::getToken(char *&token)
+{
+
+	if(!*token_ptr)
+	{
+		token_ptr = token_buff;
+		curr_token_ptr = token_ptr;
+		return(0);
+	}
+
+	curr_token_ptr = token_ptr;
+    token_ptr += (int)strlen(curr_token_ptr)+1;
+	token = curr_token_ptr;
+
+	return(1);
+}		
+
+void TokenString::pushToken()
+{
+	push_token_ptr = token_ptr;
+}
+
+void TokenString::popToken()
+{
+	token_ptr = push_token_ptr;
+}
+
+int TokenString::cmpToken(char *str)
+{
+	if(!strcmp(curr_token_ptr, str))
+		return(1);
+	return(0);
+}
+
+int TokenString::firstToken()
+{
+	if(curr_token_ptr == token_buff)
+		return(1);
+	return(0);
+}
+
+int TokenString::getNTokens()
+{
+	return n_tokens;
+}
+
+int TokenString::getNTokens(char *str)
+{
+	int n = 0;
+	char *token;
+
+	while(getToken(token))
+	{
+		if(!strcmp(token,str))
+			n++;
+	}
+	return n;
+}
+/*
+main(int argc, char *argv[])
+{
+	TokenString *ts;
+	char *token;
+
+	ts = new TokenString(argv[1],"/)");
+	cout << "n = " << ts->getNTokens() << "\n";
+	cout.flush();
+	while(ts->getToken(token))
+	{
+		cout << token << "\n";
+		cout.flush();
+	}
+}
+*/
Index: branches/FACT++_part_filenames/dim/src/util/check_dim_servers.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/util/check_dim_servers.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/util/check_dim_servers.cxx	(revision 18732)
@@ -0,0 +1,99 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+#define MAX_SERVERS 5000
+char server_names[MAX_SERVERS][256];
+char server_nodes[MAX_SERVERS][256];
+int server_versions[MAX_SERVERS];
+int N_servers = 0;
+
+class DimVersion : public DimInfo
+{
+  int myIndex;
+	void infoHandler()
+	{
+      	  server_versions[myIndex] = getInt();
+	  //	  cout << server_names[myIndex] << " version " << server_versions[myIndex] << endl; 
+	}
+public :
+	DimVersion(char *service, int index) : 
+	  DimInfo(service,-1), myIndex(index) {};
+};
+
+int main()
+{
+  //	int version = 0;
+	int n;
+	char *server, *node;
+	/*
+	DimCurrentInfo dns("DIS_DNS/VERSION_NUMBER",10,-1);
+	
+	version = dns.getInt();
+	if(version == -1)
+		cout << "DNS not running" << endl;
+	else
+		cout << "DNS running" << endl;
+	return(0);
+	*/
+	DimBrowser br;
+	DimVersion *srvptr;
+	char serviceName[256];
+	int index;
+	int i;
+
+	for(i = 0; i < MAX_SERVERS; i++)
+	{
+	  server_names[i][0] = '\0';
+	  server_versions[i] = 0;
+	}  
+
+	n = br.getServers();
+	index = 0;
+	while(br.getNextServer(server, node))
+	{
+	  strcpy(server_names[index],server);
+	  strcpy(server_nodes[index],node);
+	  strcpy(serviceName,server);
+	  strcat(serviceName,"/VERSION_NUMBER");
+	  srvptr = new DimVersion(serviceName, index);
+	  if(srvptr){}
+	  //	  cout << "found " << server << " " << node << endl;
+	  index++;
+	}
+	cout << "found " << n << " servers" << endl;
+	N_servers = n;
+	while(1)
+	{
+	  int found = 0;
+	  sleep(1);
+	  for(i = 0; i < N_servers; i++)
+	  {
+	    if(server_versions[i] == 0)
+	    {
+	      found = 1;
+	    }
+	  }
+	  if(!found)
+	    break;
+	}
+	int max = 0;
+	for(i = 0; i < N_servers; i++)
+	{
+	    if(server_versions[i] > max)
+	    {
+	      max = server_versions[i];
+	    }
+	}
+	n = 0;
+	for(i = 0; i < N_servers; i++)
+	{
+	    if(server_versions[i] < max)
+	    {
+	      cout << server_names[i] <<"@" << server_nodes[i] << " version " << server_versions[i] << endl; 
+	    }
+	    else
+	      n++;
+	}	
+	cout << n << " Servers with version " << max << endl; 
+}
Index: branches/FACT++_part_filenames/dim/src/util/check_dns.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/util/check_dns.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/util/check_dns.cxx	(revision 18732)
@@ -0,0 +1,16 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+int main()
+{
+	int version = 0;
+	DimCurrentInfo dns("DIS_DNS/VERSION_NUMBER",10,-1);
+	
+	version = dns.getInt();
+	if(version == -1)
+		cout << "DNS not running" << endl;
+	else
+		cout << "DNS running" << endl;
+	return(0);
+}
Index: branches/FACT++_part_filenames/dim/src/util/dim_get_service.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/util/dim_get_service.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/util/dim_get_service.c	(revision 18732)
@@ -0,0 +1,113 @@
+#include <ctype.h>
+#include <stdio.h>
+#include <dic.h>
+
+int no_link = 0x0afefead;
+int version;
+	
+char str[132];
+int type, mode;
+int received = 0;
+
+void rout(tag, buffer, size)
+int *tag, *size;
+int *buffer;
+{
+void print_service();
+
+	if(tag){}
+	if((*size == 4 ) && (*buffer == no_link))
+	{
+		printf("Service %s Not Available\n", str);
+	}
+	else
+	{
+		printf("Service %s Contents :\n", str);
+		print_service(buffer, ((*size - 1)/4) + 1);
+	}
+	fflush(stdout);
+	received = 1;
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+int main(argc,argv)
+int argc;
+char **argv;                    
+{
+
+	if(argc < 2)
+	{
+		printf("Service Name > ");
+		fflush(stdout);
+		scanf("%s", str);
+	}
+	else
+	{
+		sprintf(str,"%s",argv[1]);
+	}
+	dic_info_service(str,ONCE_ONLY,60,0,0,rout,0,&no_link,4);
+	while(!received)
+	  dim_wait();
+	return(1);
+}
+
+void print_service(buff, size)
+int *buff, size;
+{
+int i,j;
+char *asc;
+int last[4];
+
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(!(i%4))
+			printf("H");
+		printf("   %08X ",buff[i]);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			printf("    '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+					printf("%c",asc[j]);
+				else
+					printf(".");
+			}
+			printf("'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					printf("D");
+				printf("%11d ",last[j]);
+			}
+			printf("\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+
+			for(j = 0; j < 4 - (i%4); j++)
+				printf("            ");
+			printf("    '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+					printf("%c",asc[j]);
+				else
+					printf(".");
+			}
+			printf("'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					printf("D");
+				printf("%11d ",last[j]);
+			}
+			printf("\n");
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/util/dim_send_command.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/util/dim_send_command.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/util/dim_send_command.c	(revision 18732)
@@ -0,0 +1,143 @@
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <dic.h>
+
+int received = 0;
+char str[132] = {'\0'};
+
+void rout(tag, code)
+int *tag;
+int *code;
+{
+  int silent;
+
+  silent = *tag;
+  if(!silent)
+      dim_print_date_time();
+  if(*code)
+  {
+	  if(!silent)
+		printf(" Command %s Successfully Sent\n", str);
+  }
+  else
+  {
+	  if(!silent)
+		printf(" Command %s Unsuccessfull\n", str);
+  }
+  received = 1;
+#ifdef WIN32
+  wake_up();
+#endif
+}
+/*
+main(argc,argv)
+int argc;
+char **argv;                    
+{
+  char data[1024] = {'\0'};
+  int silent = 0;
+
+	if(argc < 2)
+	{
+		printf("Command Name > ");
+		fflush(stdout);
+		scanf("%s", str);
+		printf("Command String > ");
+		fflush(stdout);
+		scanf("%s", data);
+	}
+	else
+	{
+		sprintf(str,argv[1]);
+		if(argc < 3)
+			data[0] = '\0';
+		else
+		{
+			sprintf(data,argv[2]);
+			if(argc > 3)
+				silent = 1;
+		}
+	}
+	dic_cmnd_callback(str,data,(int)strlen(data)+1, rout, silent);
+	while(!received)
+	  dim_wait();
+	sleep(1);
+}
+*/
+int main(argc,argv)
+int argc;
+char **argv;                    
+{
+int i;
+int silent = 0;
+char data[1024] = {'\0'};
+int data_int, data_int_flag = 0;
+char dns_node[128], *ptr;
+int dns_port = 0;
+
+	dns_node[0] = '\0'; 
+	for(i = 1; i < argc; i++)
+	{
+		if(!strcmp(argv[i],"-dns"))
+		{
+			strcpy(dns_node,argv[i+1]);
+			if((ptr = strchr(dns_node,':')))
+			{
+				*ptr = '\0';
+				ptr++;
+				sscanf(ptr,"%d",&dns_port);
+			}
+			i++;
+		}
+		else if(!strcmp(argv[i],"-s"))
+		{
+			silent = 1;
+		}
+		else if(!strcmp(argv[i],"-i"))
+		{
+			data_int_flag = 1;
+		}
+		else
+		{
+			if(!str[0])
+			{
+				strcpy(str, argv[i]);
+			}
+			else if(!data[0])
+			{
+				strcpy(data,argv[i]);
+			}
+		}
+	}
+	if(dns_node[0])
+	{
+		dic_set_dns_node(dns_node);
+	}
+	if(dns_port)
+	{
+		dic_set_dns_port(dns_port);
+	}
+	if(!str[0])
+	{
+		printf("dim_send_command: Insufficient parameters\n");
+		printf("usage: dim_send_command <cmnd_name> [<data>] [-dns <dns_node>] [-s] [-i]\n");
+		exit(0);
+	}
+	if(!data[0])
+		data[0] = '\0';
+	if(data_int_flag)
+	{
+		sscanf(data,"%d",&data_int);
+		dic_cmnd_callback(str,&data_int,sizeof(int), rout, silent);
+	}
+	else
+	{
+		dic_cmnd_callback(str,data,(int)strlen(data)+1, rout, silent);
+	}
+	while(!received)
+	  dim_wait();
+	sleep(1);
+	return(1);
+}
Index: branches/FACT++_part_filenames/dim/src/util/dimbridge.cxx
===================================================================
--- branches/FACT++_part_filenames/dim/src/util/dimbridge.cxx	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/util/dimbridge.cxx	(revision 18732)
@@ -0,0 +1,357 @@
+#include <dic.hxx>
+#include <dis.hxx>
+#include <dim.h>
+#include <iostream>
+using namespace std;
+
+static int no_link = 0xdeaddead;
+static char from_node[64], to_node[64], bridge_name[64];
+
+class BridgeService: public DimInfo, public SLLItem 
+{
+  char srv_name[256];
+  char srv_format[256];
+  int declared;
+  DimService *srv;
+  void *srv_data, *data;
+  int srv_size;
+  int cmnd;
+  int found;
+  int copyFlag;
+
+  void infoHandler() {
+	char *server;
+    data = DimInfo::getData();
+    srv_size = DimInfo::getSize();
+
+// Sometimes gets a packet from DIS_DNS not understood why!!!"
+	server = DimClient::getServerName();
+	if(strstr(server,"DIS_DNS") != 0)
+	{
+dim_print_date_time();
+cout << "received from " << server << " size = " << srv_size << endl;
+		if(strstr(srv_name,"DIS_DNS") == 0)
+			return;
+	}
+	srv_data = data;
+    if(*(int *)srv_data == no_link)
+	{
+		if(srv)
+		{
+			delete(srv);
+			srv = 0;
+		}
+		declared = 0;
+//  		cout << "Disconnecting bridge for: " << srv_name << endl;
+	}
+    else if(!declared)
+    {
+//		DimServer::setDnsNode(to_node);
+		srv = new DimService(srv_name, srv_format, srv_data, srv_size);
+		if(copyFlag)
+			srv->setData(srv_data, srv_size);
+		DimServer::start(bridge_name);
+		declared = 1;
+//		DimClient::setDnsNode(from_node);
+	}
+    else
+	{
+		if(srv)
+		{
+			if(copyFlag)
+			{
+				srv->setData(srv_data, srv_size);
+				srv->updateService();
+			}
+			else
+			{
+				srv->updateService(srv_data, srv_size);
+			}
+		}
+	}
+  }
+
+  public:
+    BridgeService(char *name, char *format, int copy):
+		DimInfo(name, &no_link, sizeof(no_link)), declared(0), srv(0), copyFlag(copy)
+		{ 
+			strcpy(srv_format, format);
+			strcpy(srv_name, name);
+			cmnd = 0;
+			found = 1;
+//			cout << "Bridging Service: " << name << endl;
+		}
+	BridgeService(char *name, char *format, int rate, int copy):
+		DimInfo(name, rate, &no_link, sizeof(no_link)), declared(0), srv(0), copyFlag(copy)
+		{ 
+			strcpy(srv_format, format);
+			strcpy(srv_name, name);
+			cmnd = 0;
+			found = 1;
+//			cout << "Bridging Service: " << name << ", rate = " << rate << " seconds" << endl;
+		}
+  	~BridgeService()
+  	{
+  		if(declared)
+		{
+			if(srv)
+			{
+  				delete(srv);
+				srv = 0;
+			}
+		}
+  		declared = 0;
+//  		cout << "Stopped bridge for: " << srv_name << endl;
+  	}
+    char *getName() { return srv_name; };
+    void clear() { found = 0;};
+    void set() {found = 1;};
+    int find() {return found;};
+    int isCmnd() { return cmnd;};
+};
+
+class BridgeCommand: public DimCommand, public SLLItem 
+{
+  char srv_name[256];
+  char srv_format[256];
+  int declared;
+  DimService *srv;
+  void *srv_data;
+  int srv_size;
+  int cmnd;
+  int found;
+
+  void commandHandler() {
+    srv_data = DimCommand::getData();
+    srv_size = DimCommand::getSize();
+    DimClient::sendCommandNB(srv_name, srv_data, srv_size);
+  }
+
+  public:
+    BridgeCommand(char *name, char *format):
+		DimCommand(name, format) 
+		{ 
+			DimServer::start(bridge_name);
+			cmnd = 1;
+			found = 1;
+			strcpy(srv_name, name);
+//			cout << "Bridging Command: " << name << endl;
+		}
+    char *getName() { return srv_name; };
+    void clear() { found = 0;};
+    void set() {found = 1;};
+    int find() {return found;};
+    int isCmnd() { return cmnd;};
+};
+
+void print_usage()
+{
+	cout << "Usage: DimBridge [from_node] to_node services [time_interval] [-copy]" << endl;
+	cout << "    from_node - by default DIM_DNS_NODE" << endl;
+	cout << "    to_node - the complete node name of the new DNS" << endl;
+	cout << "    services - the list of service names (wildcards allowed)" << endl;
+	cout << "    time_interval - the interval in seconds to be used for updating the services" << endl;
+	cout << "    -copy - copy internally the service data" << endl;
+}
+
+int main(int argc, char **argv)
+{
+char services[132];
+DimBrowser dbr;
+char *service, *format, *p;
+int type, known;
+BridgeService *ptrs, *aux_ptrs;
+BridgeCommand *ptrc, *aux_ptrc;
+SLList lists, listc;
+int rate = 0;
+int copyFlag = 0;
+
+//dic_set_debug_on();
+	if(argc < 3)
+    {
+		print_usage();
+		return 0;
+    }
+	else if( argc == 3)
+    {
+		strcpy(from_node, DimClient::getDnsNode());
+		strcpy(to_node, argv[1]);
+		strcpy(services, argv[2]);
+    }
+	else if (argc == 4)
+	{
+		if(sscanf(argv[3],"%d", &rate))
+		{
+			strcpy(from_node, DimClient::getDnsNode());
+			strcpy(to_node, argv[1]);
+			strcpy(services, argv[2]);
+		}
+		else if(argv[3][0] == '-')
+		{
+			rate = 0;
+			strcpy(from_node, DimClient::getDnsNode());
+			strcpy(to_node, argv[1]);
+			strcpy(services, argv[2]);
+			copyFlag = 1;
+		}
+		else
+		{
+			rate = 0;
+			strcpy(from_node, argv[1]);
+			strcpy(to_node, argv[2]);
+			strcpy(services, argv[3]);
+		}
+    }
+	else if(argc == 5)
+	{
+		if(sscanf(argv[4],"%d", &rate))
+		{
+			strcpy(from_node, argv[1]);
+			strcpy(to_node, argv[2]);
+			strcpy(services, argv[3]);
+		}
+		else if(argv[4][0] == '-')
+		{
+			copyFlag = 1;
+			if(sscanf(argv[3],"%d", &rate))
+			{
+				strcpy(from_node, DimClient::getDnsNode());
+				strcpy(to_node, argv[1]);
+				strcpy(services, argv[2]);
+			}
+			else
+			{
+				rate = 0;
+				strcpy(from_node, argv[1]);
+				strcpy(to_node, argv[2]);
+				strcpy(services, argv[3]);
+			}
+		}
+	}
+	else if(argc == 6)
+	{
+		strcpy(from_node, argv[1]);
+		strcpy(to_node, argv[2]);
+		strcpy(services, argv[3]);
+		sscanf(argv[4],"%d", &rate);
+		copyFlag = 1;
+    }
+	else
+	{
+		cout << "Bad parameters" << endl;
+		return 0;
+	}
+
+	cout << "Starting DimBridge from "<<from_node<<" to "<<to_node<<" for "<< services;
+	if(rate)
+		cout << " interval=" << rate; 
+	if(copyFlag)
+		cout << " (internal data copy)"; 
+	cout << endl;
+
+	strcpy(bridge_name,"Bridge_");
+	strcat(bridge_name, from_node);
+	if( (p = strchr(bridge_name,'.')) )
+		*p = '\0';
+#ifndef WIN32
+	sprintf(p,"_%d",getpid());
+#else
+	sprintf(p,"_%d",_getpid());
+#endif
+	DimClient::setDnsNode(from_node);
+	DimServer::setDnsNode(to_node);
+	while(1)
+	{
+		ptrs = (BridgeService *)lists.getHead();
+		while(ptrs)
+		{
+			ptrs->clear();
+			ptrs = (BridgeService *)lists.getNext();
+		}
+		ptrc = (BridgeCommand *)listc.getHead();
+		while(ptrc)
+		{
+			ptrc->clear();
+			ptrc = (BridgeCommand *)listc.getNext();
+		}
+		dbr.getServices(services);
+		while( (type = dbr.getNextService(service, format)) )
+		{
+			known = 0;
+			ptrs = (BridgeService *)lists.getHead();
+			while(ptrs)
+			{
+				if(!strcmp(ptrs->getName(), service))
+				{
+					known = 1;
+					ptrs->set();
+					break;
+				}
+				ptrs = (BridgeService *)lists.getNext();
+			}
+			ptrc = (BridgeCommand *)listc.getHead();
+			while(ptrc)
+			{
+				if(!strcmp(ptrc->getName(), service))
+				{
+					known = 1;
+					ptrc->set();
+					break;
+				}
+				ptrc = (BridgeCommand *)listc.getNext();
+			}
+			if(strstr(service,"DIS_DNS"))
+				known = 1;
+			if(!known)
+			{
+				if(type == DimSERVICE)
+				{
+				  if(!rate)
+					ptrs = new BridgeService(service, format, copyFlag);
+				  else
+					ptrs = new BridgeService(service, format, rate, copyFlag);
+				  lists.add(ptrs);
+				}
+				else if (type == DimCOMMAND)
+				{
+//					DimClient::setDnsNode(to_node);
+					ptrc = new BridgeCommand(service, format);
+					listc.add(ptrc);
+//					DimClient::setDnsNode(from_node);
+				}
+			}
+		}
+		ptrs = (BridgeService *)lists.getHead();
+		while(ptrs)
+		{
+			aux_ptrs = 0;
+			if(!ptrs->find())
+			{
+				lists.remove(ptrs);
+				aux_ptrs = ptrs;
+			}
+			ptrs = (BridgeService *)lists.getNext();
+			if(aux_ptrs)
+			{
+				delete aux_ptrs;
+			}
+		}
+		ptrc = (BridgeCommand *)listc.getHead();
+		while(ptrc)
+		{
+			aux_ptrc = 0;
+			if(!ptrc->find())
+			{
+				listc.remove(ptrc);
+				aux_ptrc = ptrc;
+			}
+			ptrc = (BridgeCommand *)listc.getNext();
+			if(aux_ptrc)
+			{
+				delete aux_ptrc;
+			}
+		}
+		sleep(5);
+	}
+	return 1;
+}
Index: branches/FACT++_part_filenames/dim/src/utilities.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/utilities.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/utilities.c	(revision 18732)
@@ -0,0 +1,307 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#include <sys/types.h>
+#ifndef WIN32
+#include <netinet/in.h>
+#include <netdb.h>
+#endif
+#include <string.h>
+#include <time.h>
+#include <sys/timeb.h>
+#define DIMLIB
+#include <dim.h>
+
+int get_proc_name(char *proc_name)
+{
+#ifndef VxWorks
+	sprintf( proc_name, "%d", getpid() );
+#else
+	sprintf( proc_name, "%d", taskIdSelf() );      
+#endif
+	return(1);
+}
+
+
+int get_node_name(char *node_name)
+{
+#ifndef VxWorks
+struct hostent *host;
+#endif
+char *p;
+int	i;
+#ifdef WIN32
+extern void init_sock();
+#endif
+
+	DISABLE_AST
+#ifdef WIN32
+	init_sock();
+#endif
+	if( (p = getenv("DIM_HOST_NODE")) != NULL )
+	{
+		strcpy( node_name, p );
+		ENABLE_AST
+		return(1);
+	}
+	if((gethostname(node_name, MAX_NODE_NAME)) == -1)
+	{
+		ENABLE_AST
+		return(0);
+	}
+#ifndef VxWorks
+#ifndef RAID
+	if(!strchr(node_name,'.'))
+	{
+		if ((host = gethostbyname(node_name)) != (struct hostent *)0) 
+		{		
+			strcpy(node_name,host->h_name);
+			if(!strchr(node_name,'.'))
+			{
+				if(host->h_aliases)
+				{
+					if(host->h_aliases[0])
+					{
+						for(i = 0; host->h_aliases[i]; i++)
+						{
+							p = host->h_aliases[i];
+							if(strchr(p,'.'))
+							{
+								strcpy(node_name,p);
+								break;
+							}
+						}
+					}
+				}
+		    }
+		}
+	}
+#endif
+#endif
+	ENABLE_AST
+	return(1);
+}
+
+/* 
+Bug or Feature? 
+get_node_addr returns the "default" interface address, not the one chosen by 
+DIM_HOST_NODE. This makes the DNS or a DIM server respond to both interfaces 
+*/
+
+int get_node_addr(char *node_addr)
+{
+#ifndef VxWorks
+struct hostent *host;
+#endif
+char node_name[MAX_NODE_NAME];
+char *ptr;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	gethostname(node_name, MAX_NODE_NAME);
+#ifndef VxWorks
+	if ((host = (struct hostent *)gethostbyname(node_name)) == (struct hostent *)0)
+	{
+		node_addr[0] = 0;
+		node_addr[1] = 0;
+		node_addr[2] = 0;
+		node_addr[3] = 0;
+		return(0);
+	}
+    ptr = (char *)host->h_addr;
+    node_addr[0] = *ptr++;
+    node_addr[1] = *ptr++;
+    node_addr[2] = *ptr++;
+    node_addr[3] = *ptr++;
+    return(1);
+#else
+    node_addr[0] = 0;
+    node_addr[1] = 0;
+    node_addr[2] = 0;
+    node_addr[3] = 0;
+	return(0);
+#endif
+}
+
+void dim_print_date_time()
+{
+	time_t t;
+	char str[128];
+
+	t = time((time_t *)0);
+/*
+#ifdef WIN32
+	strcpy(str, ctime(&t));
+#else
+#ifdef LYNXOS
+	ctime_r(&t, str, 128);
+#else
+	ctime_r(&t, str);
+#endif
+#endif
+*/
+	my_ctime(&t, str, 128);
+	str[(int)strlen(str)-1] = '\0';
+	printf("PID %d - ",getpid());
+	printf("%s - ",str );
+}
+
+void dim_print_date_time_millis()
+{
+	int millies;
+
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+#ifdef WIN32
+	ftime(&timebuf);
+	millies = timebuf.millitm;
+#else
+	tz = 0;
+	gettimeofday(&tv, tz);
+	millies = (int)tv.tv_usec / 1000;
+#endif
+	dim_print_date_time();
+	printf("milliseconds: %d ", millies);
+}
+
+void dim_print_msg(char *msg, int severity)
+{
+	dim_print_date_time();
+	switch(severity)
+	{
+		case 0: printf("(INFO) ");
+			break;
+		case 1: printf("(WARNING) ");
+			break;
+		case 2: printf("(ERROR) ");
+			break;
+		case 3: printf("(FATAL) ");
+			break;
+	}
+	printf("%s\n",msg);
+	fflush(stdout);
+}
+
+void dim_panic( char *s )
+{
+	printf( "\n\nDNA library panic: %s\n\n", s );
+	exit(0);
+}
+
+int get_dns_node_name( char *node_name )
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_NODE")) == NULL )
+		return(0);
+	else {
+		strcpy( node_name, p );
+		return(1);
+	}
+}
+
+int get_dns_port_number()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_PORT")) == NULL )
+		return(DNS_PORT);
+	else {
+		return(atoi(p));
+	}
+}
+
+int dim_get_env_var( char *env_var, char *value, int len )
+{
+	char	*p;
+	int tot, sz;
+
+	if( (p = getenv(env_var)) == NULL )
+		return(0);
+	else {
+		tot = (int)strlen(p)+1;
+		if(value != 0)
+		{
+			sz = tot;
+			if(sz > len)
+				sz = len;
+			strncpy(value, p, (size_t)sz);
+			if((sz == len) && (len > 0))
+				value[sz-1] = '\0';
+		}
+		return(tot);
+	}
+}
+
+int get_dns_accepted_domains( char *domains )
+{
+	char	*p;
+	int append = 0;
+
+	if(get_dns_accepted_nodes(domains))
+		append = 1;
+	if( (p = getenv("DIM_DNS_ACCEPTED_DOMAINS")) == NULL )
+	{
+		if(!append)
+			return(0);
+		else
+			return(1);
+	}
+	else {
+		if(!append)
+			strcpy( domains, p );
+		else
+		{
+			strcat( domains, ",");
+			strcat( domains, p);
+		}
+		return(1);
+	}
+}
+
+int get_dns_accepted_nodes( char *nodes )
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_ACCEPTED_NODES")) == NULL )
+		return(0);
+	else {
+		strcpy( nodes, p );
+		return(1);
+	}
+}
+
+int get_keepalive_tmout()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_KEEPALIVE_TMOUT")) == NULL )
+		return(TEST_TIME_OSK);
+	else {
+		return(atoi(p));
+	}
+}
+
+int get_write_tmout()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_WRITE_TMOUT")) == NULL )
+		return(0);
+	else {
+		return(atoi(p));
+	}
+}
Index: branches/FACT++_part_filenames/dim/src/webDid/webDid.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/webDid/webDid.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/webDid/webDid.c	(revision 18732)
@@ -0,0 +1,2471 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+
+extern int WebDID_Debug;
+
+typedef struct item{
+    struct item *next;
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO *service_ptr;
+    char name[MAX_NAME];
+	int match;
+	int busy;
+	int isSMI;
+}SERVER;
+
+typedef struct nitem{
+    struct nitem *next;
+	SERVER *server_head;
+    char name[MAX_NAME];
+	int match;
+	int busy;
+	int hasSMI;
+}NODE;
+NODE *Node_head = (NODE *)0;
+
+typedef struct sitem{
+    struct sitem *next;
+	char name[MAX_NAME];
+	int sid;
+	void *buffer;
+	int buffer_size;
+	int size;
+	time_t timestamp;
+	void *buffer_str;
+	int buffer_str_size;
+	int str_size;
+	int conn_id;
+	time_t last_subscribed;
+	time_t last_updated;
+	int n_browsers;
+}CURR_SERVICE;
+CURR_SERVICE *Curr_service_head = (CURR_SERVICE *)0;
+
+typedef struct objstate{
+	char name[MAX_NAME];
+	char state[512];
+	int sid;
+	int mode_index;
+	void *browserp;
+}OBJSTATE;
+/*
+typedef struct domainitem{
+	char name[MAX_NAME];
+	OBJSTATE objs[1];
+}CURR_SMIDOMAIN;
+*/
+typedef struct bitem{
+    struct bitem *next;
+	int id;
+	int subscribe;
+	time_t last_subscribed;
+	time_t last_updated;
+	time_t last_polled;
+	time_t last_changed;
+	int conn_id;
+	int n_services;
+	int n_servers;
+	int n_nodes;
+	CURR_SERVICE *servicep;
+	char *JSONBuffer;
+	int JSONBufferSize;
+	char *JSONSmiBuffer;
+	int JSONSmiBufferSize;
+	char pattern[256];
+	char curr_command[MAX_NAME];
+	char *service_format_ptr;
+	int isSMI;
+	int n_domains;
+	char curr_smidomain[MAX_NAME];
+	int curr_smidomain_size;
+	int curr_smidomain_nobjs;
+	OBJSTATE *smidomainp;
+}BROWSER;
+BROWSER *Browser_head = (BROWSER *)0;
+
+char *JSONBuffer = 0;
+int JSONBufferSize = 0;
+char JSONHeader[256] = {'\0'};
+char JSONSmiHeader[256] = {'\0'};
+
+char *JSONSmiBuffer = 0;
+int JSONSmiBufferSize = 0;
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;
+int N_nodes = 0;
+int N_servers = 0;	
+int N_services = 0;	
+static char no_link = -1;
+static char no_link_str[5] = "DEAD";
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+int Timer_q;
+char Title[128];
+
+int did_init(char *local_node, int dns_port)
+{
+	void update_servers();
+	char icon_title[128];
+	char dns_node[128];
+	int ret;
+       
+	dim_init();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	ret = dim_get_dns_node(dns_node);
+	if(!ret)
+	{
+		strcpy(dns_node, local_node);
+		dim_set_dns_node(dns_node);
+	}
+    dns_port = dic_get_dns_port();
+	if(dns_port != DNS_PORT)
+	{
+		sprintf(Title,"DIM DNS: %s:%d",dns_node,dns_port);
+	}
+	else
+	{
+		sprintf(Title,"DIM DNS: %s",dns_node);
+	}
+	sprintf(icon_title,"DID %s",dns_node);
+dim_print_date_time();
+printf("webDid Starting up on %s\n\t serving %s\n", local_node, Title);
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	return 1;
+}
+
+SERVER *find_server(NODE *nodep, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = nodep->server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+  {
+      ptr = &servp->server;
+      if(ptr->pid == pid)
+	  {
+		return(servp);
+	  }
+  }
+  return ((SERVER *)0);
+}
+
+NODE *find_node(char *node)
+{
+  NODE *nodep;
+
+  nodep = Node_head;
+  while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+  {
+      if(!strcmp(nodep->name,node))
+	  {
+			return(nodep);
+	  }
+  }
+  return ((NODE *)0);
+}
+
+int find_server_service_pattern(SERVER *servp, char *pattern)
+{
+	DNS_SERVICE_INFO *servicep;
+	int n_services, i;
+	int n_found = 0;
+
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	for(i = 0; i < n_services; i++)
+	{
+		if(strstr(servicep->name, pattern))
+		{
+			n_found++;
+		}
+		servicep++;
+	}
+	return(n_found);
+}
+
+int find_service_pattern(NODE *nodep, SERVER *servpp, char *pattern, int *n_servers)
+{
+  SERVER *servp;
+  int ret, n_found = 0;
+  int n_servers_found = 0;
+
+  if(!servpp)
+  {
+	servp = nodep->server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if((ret = find_server_service_pattern(servp, pattern)))
+		{
+			n_found += ret;
+			n_servers_found++;
+		}
+	}
+  }
+  else
+  {
+	if((ret = find_server_service_pattern(servpp, pattern)))
+	{
+		n_found += ret;
+	}
+  }
+  if(n_servers != 0)
+	  *n_servers = n_servers_found;
+  return(n_found);
+}
+
+CURR_SERVICE *find_curr_service(char *service)
+{
+  CURR_SERVICE *servicep;
+
+  servicep = Curr_service_head ;
+  while( (servicep = (CURR_SERVICE *)sll_get_next((SLL *)servicep)) )
+  {
+      if(!strcmp(servicep->name,service))
+	  {
+			return(servicep);
+	  }
+  }
+  return ((CURR_SERVICE *)0);
+}
+
+BROWSER *find_browser(int id)
+{
+  BROWSER *browserp;
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+      if(browserp->id == id)
+	  {
+			return(browserp);
+	  }
+  }
+  return ((BROWSER *)0);
+}
+/*
+void set_browser_changes(int n_services, int n_servers, int n_nodes)
+{
+  BROWSER *browserp;
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+	  if(browserp->n_services != n_services)
+		browserp->n_services_changed = 1;
+	  if(browserp->n_servers != n_servers)
+		browserp->n_servers_changed = 1;
+	  if(browserp->n_nodes != n_nodes)
+		browserp->n_nodes_changed = 1;
+  }
+}
+*/
+void prepare_browser_tree()
+{
+  BROWSER *browserp;
+  int prepareJSONTree();
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+	  if(browserp->pattern[0] != '\0')
+		  prepareJSONTree(browserp);
+  }
+}
+/*
+void clear_browser_changes(BROWSER *browserp)
+{
+	browserp->n_services_changed = 0;
+    browserp->n_servers_changed = 0;
+    browserp->n_nodes_changed = 0;
+}
+*/
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+NODE *nodep;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+int prepareJSONTree();
+int prepareJSONHeader();
+
+	if(tag){}
+	if(!Node_head)
+	{
+		Node_head = (NODE *)malloc(sizeof(NODE));
+		sll_init((SLL *)Node_head);
+	}
+	if(First_time)
+	{
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if((int)strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(nodep = find_node(buffer->server.node)))
+	{
+		if(n_services)
+		{
+			N_nodes++;
+			nodep = (NODE *)malloc(sizeof(NODE));
+			strcpy(nodep->name,buffer->server.node);
+			nodep->hasSMI = 0;
+			nodep->server_head = (SERVER *)malloc(sizeof(SERVER));
+			sll_init((SLL *)nodep->server_head);
+			sll_insert_queue((SLL *)Node_head,(SLL *)nodep);
+		}
+	}
+	if (!(servp = find_server(nodep,buffer->server.pid)))
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			servp->isSMI = 0;
+			if(strstr(sname,"_SMI"))
+			{
+				servp->isSMI = 1;
+				nodep->hasSMI = 1;
+			}
+			sll_insert_queue((SLL *)nodep->server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*(int)sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc((size_t)service_size);
+			memcpy(servp->service_ptr, buffer->services, (size_t)service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		servp->server.n_services = 0;
+		servp->busy = -1;
+		servp->isSMI = 0;
+	    }
+	}
+	if(JSONHeader[0])
+	  prepareJSONHeader();
+}
+
+void got_update_services(BROWSER **tag, char *buffer, int *size)
+{
+	BROWSER *browserp;
+
+	if(size){}
+	browserp = (BROWSER *)*tag;
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	browserp->service_format_ptr = (char *)malloc(strlen(buffer)+1);
+	strcpy(browserp->service_format_ptr, buffer);
+}
+
+char *update_services(char *node, char *server, int pid, int browser)
+{
+	char str[MAX_NAME];
+	NODE *nodep;
+	SERVER *servp;
+	char *ptr = 0;
+	BROWSER *browserp;
+	char *prepareJSONServiceList();
+	BROWSER *create_browser();
+
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+
+	if(server){}
+	sprintf(str,"%s/SERVICE_LIST",server);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+		got_update_services,(dim_long)browserp,"None",5);
+	if((nodep = find_node(node)))
+	{
+	    if((servp = find_server(nodep, pid)))
+		{
+			ptr = prepareJSONServiceList(servp, node, pid, browserp);
+		}
+	}
+	return ptr;
+}
+
+void got_update_smi_objects(BROWSER **tag, char *buffer, int *size)
+{
+	BROWSER *browserp;
+
+	if(size){}
+	browserp = (BROWSER *)*tag;
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	browserp->service_format_ptr = (char *)malloc(strlen(buffer)+1);
+	strcpy(browserp->service_format_ptr, buffer);
+}
+
+char *update_smi_objects(char *node, char *server, int pid, int browser)
+{
+	char str[MAX_NAME];
+	NODE *nodep;
+	SERVER *servp;
+	char *ptr = 0;
+	BROWSER *browserp;
+	char *prepareJSONSmiObjectList();
+	BROWSER *create_browser();
+
+	if(!(browserp = find_browser(browser)))
+	{
+		browserp = create_browser(browser);
+		browserp->isSMI = 1;
+	}
+	if(server){}
+	sprintf(str,"%s/SERVICE_LIST",server);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+		got_update_smi_objects,(dim_long)browserp,"None",5);
+	if((nodep = find_node(node)))
+	{
+	    if((servp = find_server(nodep, pid)))
+		{
+			ptr = prepareJSONSmiObjectList(servp, node, pid, browserp);
+		}
+	}
+	return ptr;
+}
+
+void get_curr_service_format()
+{
+	char *format;
+	char *dic_get_format();
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+*/
+	format = dic_get_format(0);
+/*
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += (int)strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(int)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+*/
+	if(format)
+		strcpy(Curr_service_format,format);
+	else
+		Curr_service_format[0] = '\0';
+}
+
+void get_service_format(char *buffer, char *service, char *format)
+{
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str, service);
+	rpc_flag = 0;
+	*format = '\0';
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(buffer, str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += (int)strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(format,ptr,(size_t)(ptr1 - ptr));
+	    format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+int delete_curr_service(CURR_SERVICE *servicep)
+{
+
+if(WebDID_Debug)
+printf("\nUnsubscribing %s\n\n",servicep->name); 
+	dic_release_service(servicep->sid);
+	if(servicep->buffer_size)
+		free(servicep->buffer);
+	if(servicep->buffer_str_size)
+		free(servicep->buffer_str);
+	sll_remove((SLL *)Curr_service_head, (SLL *)servicep);
+	free(servicep);
+	return(1);
+}
+
+int delete_browser(BROWSER *browserp)
+{
+	CURR_SERVICE *servicep;
+
+	if((servicep = browserp->servicep))
+	{
+		servicep->n_browsers--;
+		if(!servicep->n_browsers)
+			delete_curr_service(servicep);
+	}
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	sll_remove((SLL *)Browser_head, (SLL *)browserp);
+	free(browserp);
+	return(1);
+}
+
+void check_browser( BROWSER *tag)
+{
+	BROWSER *browserp;
+	time_t tsecs;
+
+	browserp = (BROWSER *)tag;
+if(WebDID_Debug)
+printf("\nCheck_browser %d\n",browserp->id); 
+	tsecs = time((time_t *)0);
+	if((tsecs - browserp->last_polled) > 20)
+	{
+if(WebDID_Debug)
+printf("\nDeleting browser %d\n\n",browserp->id); 
+		delete_browser(browserp);
+	}
+	else
+		dtq_start_timer(10, check_browser, browserp);
+}
+
+BROWSER *create_browser(int id)
+{
+	BROWSER *browserp;
+
+	if(!Browser_head)
+	{
+		Browser_head = (BROWSER *)malloc(sizeof(BROWSER));
+		sll_init((SLL *)Browser_head);
+	}
+	browserp = (BROWSER *)malloc(sizeof(BROWSER));
+	browserp->id = id;
+    browserp->last_subscribed = 0;
+	browserp->last_updated = 0;
+	browserp->last_polled = 0;
+    browserp->last_changed = 0;
+	browserp->n_nodes = 0;
+	browserp->n_servers = 0;
+	browserp->n_services = 0;
+	browserp->servicep = 0;
+	browserp->JSONBuffer = 0;
+	browserp->JSONBufferSize = 0;
+	browserp->JSONSmiBuffer = 0;
+	browserp->JSONSmiBufferSize = 0;
+	browserp->pattern[0] = '\0';
+	browserp->service_format_ptr = 0;
+	browserp->curr_command[0] = '\0';
+	browserp->curr_smidomain[0] = '\0';
+	browserp->smidomainp = 0;
+	sll_insert_queue((SLL *)Browser_head,(SLL *)browserp);
+	dtq_start_timer(10, check_browser, browserp);
+	return browserp;
+}
+
+int update_command_data(char *service, int conn_id, BROWSER *browserp)
+{
+	char format[MAX_NAME];
+	char answer[MAX_NAME*3];
+	extern void sendData();
+
+	if(browserp->service_format_ptr)
+	{
+		get_service_format(browserp->service_format_ptr, service, format);
+if(WebDID_Debug)
+printf("CMD data %s %s\n",service,format);
+	}
+	else
+	{
+		strcpy(format,"?");
+	}
+	strcpy(browserp->curr_command, service);
+	sprintf(answer,"To %s (%s)",service, format);
+	sendData(conn_id, answer, 4);
+	return 1;
+}
+
+int update_service_data(char *service, int conn_id, int subscribe, int req, int browser, int force)
+{
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+
+	if(req){}
+	if(!Curr_service_head)
+	{
+		Curr_service_head = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		sll_init((SLL *)Curr_service_head);
+	}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(force == -1)
+	{
+		update_command_data(service, conn_id, browserp);
+		return 1;
+	}
+	if((servicep = browserp->servicep))
+	{
+		servicep->n_browsers--;
+		if(!servicep->n_browsers)
+			delete_curr_service(servicep);
+	}
+	if(!(servicep = find_curr_service(service)))
+	{
+		servicep = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		strcpy(servicep->name,service);
+		servicep->conn_id = conn_id;
+		servicep->buffer = 0;
+		servicep->buffer_size = 0;
+		servicep->size = 0;
+		servicep->buffer_str = 0;
+		servicep->buffer_str_size = 0;
+		servicep->str_size = 0;
+		servicep->last_updated = 0;
+		tsecs = time((time_t *)0);
+		browserp->last_subscribed = tsecs;
+		browserp->last_updated = tsecs;
+		servicep->last_subscribed = tsecs;
+		servicep->n_browsers = 0;
+		sll_insert_queue((SLL *)Curr_service_head,(SLL *)servicep);
+		servicep->sid = (int)dic_info_service_stamped( service, MONITORED, subscribe, 0, 0,
+			recv_service_info, servicep, &no_link_int, 4);
+	}
+	else
+	{
+		if(servicep->size)
+		{
+			if((servicep->timestamp > browserp->last_updated) || (force))
+			{
+				sendData(conn_id, servicep->buffer_str, 4);
+			}
+			else
+			{
+				sendData(conn_id, "", 4);
+			}
+			browserp->last_updated = servicep->timestamp;
+		}
+	}
+	if(force)
+	{
+		browserp->servicep = servicep;
+		servicep->n_browsers++;
+	}
+	return 1;
+}
+
+int check_browser_changes(char *service, int conn_id, int subscribe, int req, int browser, int force)
+{
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+	char answer[256];
+	int service_changed = 0;
+
+	if(req){}
+	if(subscribe){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(!Curr_service_head)
+	{
+		Curr_service_head = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		sll_init((SLL *)Curr_service_head);
+	}
+	if(service[0] != '\0')
+	{
+	    if((servicep = find_curr_service(service)))
+		{
+			if(servicep->size)
+			{
+				if((servicep->timestamp > browserp->last_updated) || (force))
+				{
+					service_changed = 1;
+				}
+			}
+		}
+	}
+	if(browserp->isSMI)
+	{
+		if((browserp->last_changed >= browserp->last_polled) || (force))
+		{
+				service_changed = 1;
+		}
+	}
+/*
+	sprintf(answer,"%d %d %d %d\n",
+		browserp->n_services_changed, browserp->n_servers_changed, 
+		browserp->n_nodes_changed, service_changed);
+*/
+	sprintf(answer,"%d %d %d %d %d %d %d\n",
+		N_services, N_servers, N_nodes, service_changed,
+		browserp->n_services, browserp->n_servers, browserp->n_nodes);
+	sendData(conn_id, answer, 4);
+	tsecs = time((time_t *)0);
+	browserp->last_polled = tsecs;
+	return 1;
+}
+
+int find_services(char *pattern, int conn_id, int browser, int force)
+{
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+	char format[MAX_NAME];
+	int prepareJSONTree();
+	void did_prepare_command();
+
+	if(conn_id){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(force == -1)
+	{
+		if(browserp->service_format_ptr)
+		{
+			get_service_format(browserp->service_format_ptr, browserp->curr_command, format);
+			did_prepare_command(pattern, browserp->curr_command, format);
+		}
+		return 1;
+	}
+	if(conn_id){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	strcpy(browserp->pattern, pattern);
+	return 1;
+}
+
+void recv_service_info(void **tag, int *buffer, int *size)
+{
+	int conn_id;
+	void print_service_formatted();
+	extern void sendData();
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+
+	servicep = *tag;
+	conn_id = servicep->conn_id;
+	if (servicep->buffer_size < *size)
+	{
+		if(servicep->buffer_size)
+			free(servicep->buffer);
+		servicep->buffer = malloc((size_t)*size);
+		servicep->buffer_size = *size;
+	}
+	memcpy(servicep->buffer, (char *)buffer, (size_t)*size);
+	servicep->size = *size;
+	if (servicep->buffer_str_size < (1024 + (*size)*16))
+	{
+		if(servicep->buffer_str_size)
+			free(servicep->buffer_str);
+		servicep->buffer_str = malloc((size_t)(1024 + (*size)*16));
+		servicep->buffer_str_size = 1024 + (*size)*16;
+	}
+	Service_content_str = servicep->buffer_str;
+	strcpy(Curr_service_name, servicep->name);
+	get_curr_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available", Curr_service_name);
+	}
+	else
+	{
+		print_service_formatted(servicep, buffer, *size);
+	}
+	if(servicep->last_updated == 0)
+	{
+		sendData(conn_id, Service_content_str, 4);
+		tsecs = time((time_t *)0);
+		servicep->last_updated = tsecs;
+	}
+}
+
+void print_service_formatted(CURR_SERVICE *servicep, void *buff, int size)
+{
+char type;
+int num, ret;
+char str[256];
+char *ptr;
+void *buffer_ptr;
+char timestr[256], aux[64], sizestr[64];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+	if(size < 1024)
+		sprintf(sizestr,"%d bytes",size);
+	else if (size < 1024*1024)
+		sprintf(sizestr,"%2.2f Kb",(float)size/1024);
+	else
+		sprintf(sizestr,"%2.2f Mb",(float)size/(1024*1024));
+
+	sprintf(Service_content_str,
+	  "<FONT FACE=\"consolas\">Service %s (%s) Contents :<br />  <br />", Curr_service_name,
+	  Curr_service_format);
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+	tsecs = secs;
+	servicep->timestamp = tsecs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[(int)strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Quality: %d&nbsp&nbsp&nbsp Size: %s<br /><br />",
+	  timestr, quality, sizestr);
+
+   strcat(Service_content_str,str);
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		sscanf(ptr, "%d", &num);
+		ret = did_write_string(type, num, &buffer_ptr, size);
+		size -= ret;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+	 }
+     else
+     {
+		ret = did_write_string(type, 0, &buffer_ptr, size);
+		size -= ret;
+		break;
+     }
+   }
+   strcat(Service_content_str,"</FONT>");
+}
+
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+		size = ssize/(int)sizeof(int);
+      else
+		size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+		size = ssize/(int)sizeof(int);
+      else
+		size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+		size = ssize/(int)sizeof(short);
+      else
+		size = num;
+      psize = size * (int)sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+		size = ssize/(int)sizeof(float);
+      else
+		size = num;
+      psize = size * (int)sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+		size = ssize/(int)sizeof(double);
+      else
+		size = num;
+      psize = size * (int)sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+		size = ssize/(int)sizeof(longlong);
+      else
+		size = num;
+      psize = size * (int)sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+		size = ssize;
+      else
+		size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+
+void sprintf_html(char *str, int n, int value)
+{
+	char tmp[80];
+	int min, i;
+
+	str[0] = '\0';
+	min = sprintf(tmp,"%d",value);
+	for(i = 0; i < (n-min); i++)
+	{
+		strcat(str,"&nbsp");
+	}
+	strcat(str, tmp);
+}
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+int last[4];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp&nbsp&nbsp %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 12, last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+longlong last[4];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp&nbsp&nbsp %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 12, (int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+short last[8];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 6, last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[(int)strlen(str)-2]);
+		/*
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"&nbsp&nbsp ");
+			}
+			strcat(tmp,"&nbsp&nbsp&nbsp '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					if(asc[j] == ' ')
+						sprintf(str,"&nbsp");
+					else if(asc[j] == '<')
+						sprintf(str,"&lt");
+					else if(asc[j] == '>')
+						sprintf(str,"&gt");
+					else if(asc[j] == '&')
+						sprintf(str,"&amp");
+					else
+						sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'<br />");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+	ptr += (int)strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+    ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+	ptr += (int)strlen(tmp);
+}
+
+char *addJSONStart(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"{\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONEnd(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"}\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONNodeStart(char *ptr, char *node)
+{
+	char *ptro;
+
+	sprintf(ptr,"%s: [\n", node);
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONNodeEnd(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"]\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONChildStart(char *ptr, char *child, int sep)
+{
+	char *ptro;
+
+	if(sep)
+		sprintf(ptr,"{ %s, ", child);
+	else
+		sprintf(ptr,"{ %s", child);
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONChildEnd(char *ptr, int sep)
+{
+	char *ptro;
+
+	if(sep)
+		strcat(ptr," },\n");
+	else
+		strcat(ptr," }\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *getJSONBuffer(char *node, int browser)
+{
+	BROWSER *browserp;
+	int prepareJSONTree();
+
+	if(browser)
+	{
+	    if((browserp = find_browser(browser)))
+		{
+			if(browserp->pattern[0] != '\0')
+			{
+			  prepareJSONTree(node, browserp);
+			  return(browserp->JSONBuffer);
+			}
+			browserp->n_services = 0;
+			browserp->n_servers = 0;
+			browserp->n_nodes = 0;
+		}
+	}
+	prepareJSONTree(node, 0);
+	return(JSONBuffer);
+}
+
+char *getJSONSmiBuffer(char *node, int browser)
+{
+	BROWSER *browserp;
+	int prepareJSONSmiTree();
+
+	if(!(browserp = find_browser(browser)))
+	{
+		browserp = create_browser(browser);
+		browserp->isSMI = 1;
+		strcpy(browserp->pattern,"SMI/");
+	}
+	if(browser)
+	{
+	    if((browserp = find_browser(browser)))
+		{
+			if(browserp->pattern[0] != '\0')
+			{
+			  prepareJSONSmiTree(node, browserp);
+			  return(browserp->JSONSmiBuffer);
+			}
+//			browserp->n_services = 0;
+//			browserp->n_servers = 0;
+//			browserp->n_nodes = 0;
+		}
+	}
+	prepareJSONSmiTree(node, 0);
+	return(JSONSmiBuffer);
+}
+
+char *getJSONHeader(int isSMI)
+{
+  int prepareJSONHeader();
+
+  if(isSMI){}
+  if(JSONHeader[0] == '\0')
+    prepareJSONHeader();
+  return(JSONHeader);
+}
+
+int getNodeLabel(char *name, char *label)
+{
+	int i;
+	extern int web_get_node_name();
+
+	web_get_node_name(name, label);
+	for(i = 0; i < ((int)strlen(label) + 1); i++)
+	{
+		label[i] = (char)tolower((int)label[i]);
+		if(label[i] == '.')
+		{
+		    label[i] = '\0';
+		    break;
+		}
+	}
+	return 1;
+}
+
+int prepareJSONTree(char *node, BROWSER *browserp)
+{
+	char *ptr;
+	NODE *nodep;
+	SERVER *servp;
+	char str[256], aux[128];
+	int selective = 0;
+	int n_nodes, tot_n_nodes;
+	int n_servers, tot_n_servers;
+	int ret, n_found = 0;
+
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+		else
+			return(0);
+	}
+	if(!selective)
+	{
+		if(JSONBufferSize == 0)
+		{
+			JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (JSONBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(JSONBuffer);
+			JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = JSONBuffer;
+	}
+	else
+	{
+		if(browserp->JSONBufferSize == 0)
+		{
+			browserp->JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (browserp->JSONBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(browserp->JSONBuffer);
+			browserp->JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = browserp->JSONBuffer;
+	}
+	*ptr = '\0';
+	if(!strcmp(node, "src"))
+	{
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		sprintf(str,"text: \"%s\", id: \"Nodes\", expanded: false", Title);
+			ptr = addJSONChildStart(ptr,str,1);
+		ptr = addJSONNodeStart(ptr,"children");
+	nodep = Node_head;
+	tot_n_nodes = 0;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		nodep->match = 1;
+		if(selective)
+		{
+			if(!(ret = find_service_pattern(nodep, 0, browserp->pattern, &tot_n_servers)))
+			{
+				nodep->match = 0;
+				continue;
+			}
+			else
+			{
+				n_found += ret;
+			}
+		}
+		tot_n_nodes++;
+	}
+	n_nodes = 0;
+	nodep = Node_head;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		if(!nodep->match)
+			continue;
+		getNodeLabel(nodep->name, aux);
+		sprintf(str,"text: \"%s\", id: \"%s\", qtip: \"%s\"",
+			aux, nodep->name, nodep->name);
+		ptr = addJSONChildStart(ptr,str,0);
+		n_nodes++;
+if(WebDID_Debug)
+		printf("adding %s %d %d\n",nodep->name, n_nodes, tot_n_nodes);
+		if(n_nodes < tot_n_nodes)
+			ptr = addJSONChildEnd(ptr,1);
+		else
+			ptr = addJSONChildEnd(ptr,0);
+	}
+		ptr = addJSONNodeEnd(ptr);
+		ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	if(selective)
+	{
+		browserp->n_services = n_found;
+		browserp->n_servers = tot_n_servers;
+		browserp->n_nodes = tot_n_nodes;
+	}
+	}
+	else
+	{
+	  if((nodep = find_node(node)))
+	  {
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		servp = nodep->server_head;
+		tot_n_servers = 0;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			servp->match = 1;
+			if(servp->busy != 1)
+			{
+				servp->match = 0;
+				continue;
+			}
+			if(selective)
+			{
+				if(!(ret = find_service_pattern(nodep, servp, browserp->pattern, 0)))
+				{
+					servp->match = 0;
+					continue;
+				}
+				else
+				{
+					n_found += ret;
+				}
+			}
+			tot_n_servers++;
+		}
+		n_servers = 0;
+		servp = nodep->server_head;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			if(!servp->match)
+				continue;
+			sprintf(str,"text: \"%s\", id: \"%d\", leaf: true, icon: \"server.png\"",servp->name, servp->server.pid);
+			ptr = addJSONChildStart(ptr,str,0);
+			n_servers++;
+			if(n_servers < tot_n_servers)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	  }
+	}
+	/*
+if(!selective)
+printf(" Nodes&Servers %s\n",JSONBuffer);
+else
+printf(" Nodes&Servers %s\n",browserp->JSONBuffer);
+	*/
+	return(1);
+}
+
+int prepareJSONSmiTree(char *node, BROWSER *browserp)
+{
+	char *ptr;
+	NODE *nodep;
+	SERVER *servp;
+	char str[256], aux[128];
+	int selective = 0;
+	int n_nodes, tot_n_nodes;
+	int n_servers, tot_n_servers;
+	int ret, n_found = 0;
+	char pattern[256] = {'\0'};
+	char *sptr;
+
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+		{
+			selective = 1;
+			strcpy(pattern, browserp->pattern);
+		}
+//		else
+//			return(0);
+	}
+//	selective = 1;
+//	strcpy(pattern,"SMI/*");
+	if(!selective)
+	{
+		if(JSONSmiBufferSize == 0)
+		{
+			JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (JSONSmiBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(JSONSmiBuffer);
+			JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = JSONSmiBuffer;
+	}
+	else
+	{
+		if(browserp->JSONSmiBufferSize == 0)
+		{
+			browserp->JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (browserp->JSONSmiBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(browserp->JSONSmiBuffer);
+			browserp->JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = browserp->JSONSmiBuffer;
+	}
+	*ptr = '\0';
+	if(!strcmp(node, "src"))
+	{
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		sprintf(str,"text: \"%s\", id: \"Nodes\", expanded: false", Title);
+			ptr = addJSONChildStart(ptr,str,1);
+		ptr = addJSONNodeStart(ptr,"children");
+	nodep = Node_head;
+	tot_n_nodes = 0;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		nodep->match = 1;
+		if(selective)
+		{
+			if(!(ret = find_service_pattern(nodep, 0, pattern, &tot_n_servers)))
+			{
+				nodep->match = 0;
+				continue;
+			}
+			else
+			{
+				n_found += ret;
+			}
+		}
+		tot_n_nodes++;
+	}
+	n_nodes = 0;
+	nodep = Node_head;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		if(!nodep->match)
+			continue;
+		getNodeLabel(nodep->name, aux);
+		sprintf(str,"text: \"%s\", id: \"%s\", qtip: \"%s\"",
+			aux, nodep->name, nodep->name);
+		ptr = addJSONChildStart(ptr,str,0);
+		n_nodes++;
+if(WebDID_Debug)
+		printf("adding %s %d %d\n",nodep->name, n_nodes, tot_n_nodes);
+		if(n_nodes < tot_n_nodes)
+			ptr = addJSONChildEnd(ptr,1);
+		else
+			ptr = addJSONChildEnd(ptr,0);
+	}
+		ptr = addJSONNodeEnd(ptr);
+		ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	if(selective)
+	{
+		browserp->n_services = n_found;
+		browserp->n_servers = tot_n_servers;
+		browserp->n_nodes = tot_n_nodes;
+	}
+	}
+	else
+	{
+	  if((nodep = find_node(node)))
+	  {
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		servp = nodep->server_head;
+		tot_n_servers = 0;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			servp->match = 1;
+			if(servp->busy != 1)
+			{
+				servp->match = 0;
+				continue;
+			}
+			if(selective)
+			{
+				if(!(ret = find_service_pattern(nodep, servp, pattern, 0)))
+				{
+					servp->match = 0;
+					continue;
+				}
+				else
+				{
+					n_found += ret;
+				}
+			}
+			tot_n_servers++;
+		}
+		n_servers = 0;
+		servp = nodep->server_head;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			if(!servp->match)
+				continue;
+			strcpy(aux, servp->name);
+			sptr = strstr(aux,"_SMI");
+			if(sptr)
+				*sptr = '\0';
+			sprintf(str,"text: \"%s\", id: \"%d\", leaf: true, icon: \"server.png\", name: \"%s\"",aux, servp->server.pid, servp->name);
+			ptr = addJSONChildStart(ptr,str,0);
+			n_servers++;
+			if(n_servers < tot_n_servers)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	  }
+	}
+	/*
+if(!selective)
+printf(" Nodes&Servers %s\n",JSONBuffer);
+else
+printf(" Nodes&Servers %s\n",browserp->JSONBuffer);
+	*/
+printf("%s\n",browserp->JSONSmiBuffer);
+	return(1);
+}
+
+int prepareJSONHeader()
+{
+	char *ptr;
+	char str[128];
+
+	ptr = JSONHeader;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"items");
+	sprintf(str,"text: \"%s\"",Title);
+	ptr = addJSONChildStart(ptr,str,0);
+	ptr = addJSONChildEnd(ptr,1);
+	sprintf(str,"text: \"%d Servers Known - %d Services Available\"",N_servers, N_services);
+	ptr = addJSONChildStart(ptr,str,0);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+if(WebDID_Debug)
+printf(" Header %s\n",JSONHeader);
+	return(1);
+}
+
+char *JSONServices = 0;
+int JSONServicesSize = 0;
+char *prepareJSONServiceList(SERVER *servp, char *node, int pid, BROWSER *browserp)
+{
+	DNS_SERVICE_INFO *servicep;
+	char *ptr;
+	int n_services, i;
+	char str[256], type_str[256];
+	int selective = 0;
+	int n_found = 0, n;
+
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	if(JSONServicesSize == 0)
+	{
+		JSONServicesSize = n_services*256;
+		JSONServices = malloc((size_t)JSONServicesSize);
+	}
+	else if (JSONServicesSize < n_services*256)
+	{
+		free(JSONServices);
+		JSONServicesSize = n_services*256;
+		JSONServices = malloc((size_t)JSONServicesSize);
+	}
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+	}
+	n_found = n_services;
+	if(selective)
+	{
+		n_found = find_server_service_pattern(servp, browserp->pattern);
+	}
+	ptr = JSONServices;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+	if(selective)
+		sprintf(str,"text: \"%s (%d/%d services, pid %d)\"",servp->name, n_found, n_services, servp->server.pid);
+	else
+		sprintf(str,"text: \"%s (%d services, pid %d)\"",servp->name, n_services, servp->server.pid);
+    ptr = addJSONChildStart(ptr,str,1);
+	ptr = addJSONNodeStart(ptr,"children");
+	servicep = servp->service_ptr;
+	n = 0;
+	for(i = 0; i < n_services; i++)
+	{
+/*
+printf("Service type = %d\n",servicep->type);
+*/
+		if((!selective) || (strstr(servicep->name, browserp->pattern)))
+		{
+			if(servicep->type == 1)
+			{
+				sprintf(type_str,"%d@%s|%s|CMD", pid, node, servicep->name);
+				sprintf(str,"text: \"%s\", id: \"%s\", leaf: true, icon: \"leaf_cmd.gif\"",servicep->name, type_str);
+			}
+			else
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				sprintf(str,"text: \"%s\", id: \"%s\", leaf: true",servicep->name, type_str);
+			}
+			ptr = addJSONChildStart(ptr,str,0);
+			n++;
+			if(n < n_found)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+		servicep++;
+	}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	return JSONServices;
+}
+
+char *JSONSmiServices = 0;
+int JSONSmiServicesSize = 0;
+
+char *prepareJSONSmiObjectList(SERVER *servp, char *node, int pid, BROWSER *browserp)
+{
+	DNS_SERVICE_INFO *servicep;
+	char *ptr;
+	int n_services, i;
+	char str[512], type_str[512];
+	int selective = 0;
+	int n_found = 0, n, mode_index;
+	char aux[512], *sptr, state[512], *stptr;
+	OBJSTATE *smidomainp;
+	int findSmiServices();
+
+printf("prepareJSONSmiObjectList name %s\n", servp->name);
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	if(JSONSmiServicesSize == 0)
+	{
+		JSONSmiServicesSize = n_services*512;
+		JSONSmiServices = malloc((size_t)JSONSmiServicesSize);
+	}
+	else if (JSONSmiServicesSize < n_services*512)
+	{
+		free(JSONSmiServices);
+		JSONSmiServicesSize = n_services*512;
+		JSONSmiServices = malloc((size_t)JSONSmiServicesSize);
+	}
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+	}
+	n_found = n_services;
+	/*
+	if(selective)
+	{
+		n_found = find_server_service_pattern(servp, browserp->pattern);
+	}
+	*/
+
+	n_found = findSmiServices(browserp, servp);
+	smidomainp = browserp->smidomainp;
+
+printf("prepareJSONSmiObjectList1 name %s\n", servp->name);
+
+
+	ptr = JSONSmiServices;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+	/*
+	if(selective)
+		sprintf(str,"name: \"%s (%d/%d services, pid %d)\"",servp->name, n_found, n_services, servp->server.pid);
+	else
+		sprintf(str,"name: \"%s (%d services, pid %d)\"",servp->name, n_services, servp->server.pid);
+	*/
+	sprintf(str,"name: \"%s (%d objects, pid %d)\"",servp->name, n_found, servp->server.pid);
+    ptr = addJSONChildStart(ptr,str,1);
+	ptr = addJSONNodeStart(ptr,"children");
+	servicep = servp->service_ptr;
+	n = 0;
+	for(i = 0; i < n_services; i++)
+	{
+/*
+printf("Service type = %d\n",servicep->type);
+*/
+printf("prepareJSONSmiObjectList2 obj name %s\n", servicep->name);
+		if((!selective) || (strstr(servicep->name, browserp->pattern)))
+		{
+/*
+			if(servicep->type == 1)
+			{
+				sprintf(type_str,"%d@%s|%s|CMD", pid, node, servicep->name);
+				sprintf(str,"name: \"%s\", id: \"%s\", leaf: true, icon: \"leaf_cmd.gif\"",servicep->name, type_str);
+			}
+			else
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				sprintf(str,"name: \"%s\", state: \"RUNNING\", id: \"%s\", leaf: true",servicep->name, type_str);
+			}
+*/
+			if(servicep->status == 2)
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				strcpy(aux, servicep->name);
+				sptr = strchr(aux,'/');
+				if(sptr)
+				{
+					sptr++;
+					sptr = strchr(sptr,'/');
+					if(sptr)
+						sptr++;
+				}
+				strcpy(state, smidomainp[i].state);
+				stptr = strchr(state,'/');
+				if(stptr)
+				{
+					*stptr = '\0';
+				}
+				mode_index = smidomainp[i].mode_index;
+//				sprintf(str,"name: \"%s\", state: \"%s\", id: \"%s\", leaf: true, fname: \"%s\"",sptr, state, type_str, servicep->name);
+				sprintf(str,"name: \"%s\", state: \"%s\", mode: \"%s\",id: \"%s\", leaf: true, fname: \"%s\"",
+					sptr, state, smidomainp[mode_index].state, type_str, servicep->name);
+			
+				ptr = addJSONChildStart(ptr,str,0);
+				n++;
+				if(n < n_found)
+					ptr = addJSONChildEnd(ptr,1);
+				else
+					ptr = addJSONChildEnd(ptr,0);
+			}
+		}
+		servicep++;
+	}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+printf("%s\n",JSONSmiServices);
+	return JSONSmiServices;
+}
+
+void update_smi_state(OBJSTATE **tag, char *data, int *size)
+{
+	OBJSTATE *servicep;
+	time_t tsecs;
+
+	if(*size){}
+	servicep = *tag;
+
+	if(strcmp(servicep->state, data))
+	{
+		strcpy(servicep->state, data); 
+		tsecs = time((time_t *)0);
+		((BROWSER *)(servicep->browserp))->last_changed = tsecs;
+	}
+//printf("SMI State %s %s %08x\n", servicep->name, servicep->state, (unsigned int)servicep);
+}
+
+int findSmiServices(BROWSER *browserp, SERVER *servp)
+{
+	DNS_SERVICE_INFO *servicep;
+	int n_services, i, index;
+	int n_found = 0, sid;
+	int checkSmiObjName();
+	int findSmiModeObj();
+
+	n_services = servp->server.n_services;
+	if(strcmp(browserp->curr_smidomain,servp->name))
+	{
+		if(browserp->curr_smidomain[0] != '\0')
+		{
+// unsubscribe; free
+			for(i = 0; i < browserp->curr_smidomain_size; i++)
+			{
+				if(browserp->smidomainp[i].sid)
+					dic_release_service(browserp->smidomainp[i].sid);
+			}
+			free(browserp->smidomainp);
+			browserp->curr_smidomain[0] = '\0';
+			browserp->curr_smidomain_size = 0;
+		}
+		strcpy(browserp->curr_smidomain, servp->name);
+		browserp->smidomainp = malloc(n_services * sizeof(OBJSTATE));
+		browserp->curr_smidomain_size = n_services;
+	}
+	else
+		return browserp->curr_smidomain_nobjs;
+	servicep = servp->service_ptr;
+	for(i = 0; i < n_services; i++)
+	{
+		browserp->smidomainp[i].sid = 0;
+		browserp->smidomainp[i].state[0] = '\0';
+		if(checkSmiObjName(servicep))
+		{
+			strcpy(browserp->smidomainp[i].name, servicep->name);
+//			strcpy(browserp->smidomainp[i].state, "");
+			browserp->smidomainp[i].browserp = browserp;
+//printf("address %s %08x\n",browserp->smidomainp[i].name, (unsigned int)&(browserp->smidomainp[i]));
+			sid = dic_info_service(servicep->name,MONITORED,0,0,0,update_smi_state, &(browserp->smidomainp[i]),
+						no_link_str, 5);
+			browserp->smidomainp[i].sid = sid;
+			if(servicep->status == 2)
+				n_found++;
+		}
+		servicep++;
+	}
+	servicep = servp->service_ptr;
+	for(i = 0; i < n_services; i++)
+	{
+		if(servicep->status == 2)
+		{
+			index = findSmiModeObj(servp->service_ptr, n_services, servicep->name);
+			browserp->smidomainp[i].mode_index = index;
+		}
+		servicep++;
+	}
+	browserp->curr_smidomain_nobjs = n_found;
+	return n_found;
+}
+
+int findSmiModeObj(DNS_SERVICE_INFO *serviceptr, int n_services, char *name)
+{
+	int i;
+	DNS_SERVICE_INFO *servicep;
+	char mode_name[256], *ptr, *ptr1, *ptr2;
+
+	servicep = serviceptr;
+	strcpy(mode_name, name);
+	ptr1 = mode_name;
+	if((ptr = strstr(mode_name,"::")))
+	{
+		*ptr = '\0';
+		ptr2 = ptr1;
+		while((ptr1 = strchr(ptr1,'/')))
+		{
+			ptr1++;
+			ptr2 = ptr1;
+		}
+		if(strcmp(ptr2, ptr+2))
+			*ptr = ':';
+	}
+	strcat(mode_name,"_FWM");
+printf("Find SMI Mode %s %s\n",name, mode_name);
+	for(i = 0; i < n_services; i++)
+	{
+		if(servicep->status == 3)
+		{
+			if(!strcmp(servicep->name, mode_name))
+			{
+printf("Find SMI Mode index %s %s %d\n",mode_name, servicep->name, i);
+				return i;
+			}
+		}
+		servicep++;
+	}
+	return 0;
+}
+
+int checkSmiObjName(DNS_SERVICE_INFO *servicep)
+{
+	int ismode = 0, ret = 0;
+	char *name;
+	int matchString();
+
+	name = servicep->name;
+	if(matchString(name,"SMI/*"))
+	{
+		ret = 1;
+		if(matchString(name,"*&ALLOC*"))
+			ret = 0;
+		else if(matchString(name,"*/ACTIONS&PARS"))
+			ret = 0;
+		else if(matchString(name,"*/BUSY"))
+			ret = 0;
+		else if(matchString(name,"*/CMD"))
+			ret = 0;
+		else if(matchString(name,"*/OBJECTSET_LIST"))
+			ret = 0;
+		else if(matchString(name,"*/OBJECT_LIST"))
+			ret = 0;
+		else if(matchString(name,"*/SMI_VERSION_NUMBER"))
+			ret = 0;
+		else if(matchString(name,"*/SET/*"))
+			ret = 0;
+// If JCOP framework
+		else if(matchString(name,"*_FWDM"))
+			ret = 0;
+		else if(matchString(name,"*_FWCNM"))
+			ret = 0;
+		else if(matchString(name,"*_FWM"))
+		{
+			ismode = 1;
+			if(matchString(name,"*::*")) 
+				ret = 0;
+		}
+	}
+	if(ret)
+	{
+		if(ismode)
+			servicep->status = 3;
+		else
+			servicep->status = 2;
+	}
+	return ret;
+}
+
+int matchString( char *wzString, char *wzPattern )
+{
+  switch (*wzPattern){
+    case '\0':
+      return !*wzString;
+    case '*':
+      return matchString(wzString, wzPattern+1) ||
+             ( *wzString && matchString(wzString+1, wzPattern) );
+    case '?':
+      return *wzString &&
+             matchString(wzString+1, wzPattern+1);
+    default:
+      return (*wzPattern == *wzString) &&
+             matchString(wzString+1, wzPattern+1);
+  }
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str, char *service, char *format)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		size = get_type_size(type);
+		sscanf(ptr, "%d", &num);
+		full_size += size * num;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+     }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+		free(last_buffer);
+      last_buffer = malloc((size_t)full_size);
+      last_size = full_size;
+   }
+   memset(last_buffer, 0, (size_t)last_size);
+   buffer_ptr = last_buffer;
+   ptr = format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		sscanf(ptr, "%d", &num);
+		did_read_string(type, num, &buffer_ptr, &str_ptr);  
+		if(!str_ptr)
+			break;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+     }
+     else
+     {
+		did_read_string(type, 0, &buffer_ptr, &str_ptr);
+		break;
+     }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(service,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+  int num;
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+  {
+    sscanf(str+2,"%x",&num);
+	if(num <= 0xff)
+		*cc = (char)num;
+	else
+		return(-1);
+  }
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+  {
+    sscanf(str,"%d",&num);
+	if(num <= 0xff)
+		*cc = (char)num;
+	else
+		return(-1);
+  }
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+  {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+		*(int *)ptr = read_str_int(strp);
+		ptr = (int *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+		s = (short)read_str_int(strp);
+		*((short *)ptr) = s;
+		ptr = (short *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+		sscanf(strp,"%f",&ff);
+		*(float *)ptr = ff;
+		ptr = (float *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+		sscanf(strp,"%f",&ff);
+		dd = (double)ff;
+		*(double *)ptr = dd;
+		ptr = (double *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+		if((ret = read_str_char(strp, &cc)) <= 0)
+			break;
+		*(char *)ptr = cc;
+		ptr = (char *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+	  }
+      if(ret <= 0)
+      {
+		if(!ret)
+		{
+			strp++;
+		}
+		num = (int)strlen(strp)+1;
+		strncpy((char *)ptr,strp,(size_t)num);
+		if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+		{
+			num--;
+			*ptr1 = '\0';
+		}
+		ptr = (char *)ptr + num;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+  }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
Index: branches/FACT++_part_filenames/dim/src/webDid/webServer.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/webDid/webServer.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/webDid/webServer.c	(revision 18732)
@@ -0,0 +1,727 @@
+#include <dim.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int WebDID_Debug = 0;
+
+#define BUFSIZE 8096
+#define WERROR 42
+#define SORRY 43
+#define LOG   44
+
+#ifndef WIN32
+#define O_BINARY 0
+#endif
+
+struct {
+        char *ext;
+        char *filetype;
+} extensions [] = {
+        {"gif", "image/gif" },  
+        {"jpg", "image/jpeg"}, 
+        {"jpeg","image/jpeg"},
+        {"png", "image/png" },  
+        {"zip", "image/zip" },  
+        {"gz",  "image/gz"  },  
+        {"tar", "image/tar" },  
+        {"htm", "text/html" },  
+        {"html","text/html" },  
+        {"js","text/javascript" },  
+        {"css","text/css" },  
+        {"php","text/php" },  
+        {"json","application/json" },  
+        {"ico","image/x-icon" },  
+        {0,0} };
+
+extern int web_open_server();
+extern void web_write();
+extern int web_close();
+extern int did_init();
+extern int check_browser_changes();
+extern int find_services();
+
+void getTime(char *buffer)
+{
+	time_t nowtime; 
+	struct tm *nowtm; 
+
+	nowtime = time((time_t *)0);
+	nowtm = (struct tm *)gmtime(&nowtime); 
+	strftime(buffer, 128, "%a, %d %b %Y %H:%M:%S GMT", nowtm);
+}
+	
+void log_it(int type, char *s1, char *s2, int conn_id)
+{
+        char logbuffer[BUFSIZE*2];
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+
+        switch (type) {
+        case WERROR: (void)printf("ERROR: %s:%s exiting pid=%d\n",s1, s2, getpid()); break;
+        case SORRY: 
+                (void)sprintf(logbuffer, "<HTML><BODY><H1>webDid: %s %s</H1></BODY></HTML>\r\n", s1, s2);
+				dim_print_date_time();
+                (void)printf("webDid: %s %s\n",s1, s2); 
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(logbuffer), "text/html");
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+                (void)web_write(conn_id,logbuffer,(int)strlen(logbuffer));
+                break;
+        case LOG: (void)printf("INFO: %s:%s:%d\n",s1, s2,conn_id); 
+           break;
+        }
+/*
+        if(type == WERROR || type == SORRY)
+		{
+			sleep(60);
+			exit(3);
+		}
+*/
+}
+
+int getParameters(char *buffer, char (*pars)[], char *ptrs[])
+{
+	char *ptr, *parptr;
+	int i, j, n = 0, found = 0;
+	int code;
+
+	if(!strchr(buffer,'?'))
+		return 0;
+	parptr = (char *)pars;
+	for(i = 0; *parptr; i++)
+	{
+		n++;
+		ptrs[i] = 0;
+		if((ptr = strstr(buffer, parptr)))
+		{
+			ptrs[i] = ptr+(int)strlen(parptr);
+			found++;
+		}
+		parptr += 32;
+	}
+	ptrs[i] = 0;
+	for(i = 0; ptrs[i]; i++)
+	{
+	        if((ptr = strchr(ptrs[i],'&')))
+			*ptr = '\0';
+		while((ptr = strchr(ptrs[i],'%')))
+		{
+			sscanf((ptr + 1),"%2X",&code);
+			sprintf(ptr,"%c",(char)code);
+			ptr++;
+			for(j = 0; *(ptr + 2); j++)
+			{
+				*ptr = *(ptr+2);
+				ptr++;
+			}
+			*ptr = '\0';
+		}
+	}
+	if(found == n)
+		return 1;
+	else
+		return 0;
+}
+
+int getNodeParameters(char *buffer, char *node, int *browser)
+{
+	char pars[4][32];
+	char *ptrs[4];
+	int ret;
+
+	strcpy(pars[0],"node=");
+	strcpy(pars[1],"browser=");
+	pars[2][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(node, ptrs[0]);
+	sscanf(ptrs[1],"%d",browser);
+if(WebDID_Debug)
+	printf("parse pars - node %s,  browser id %d\n", node, *browser);
+	return 1;
+}
+
+
+int getServerParameters(char *buffer, char *node, char *server, int *pid, int *browser)
+{
+	char pars[10][32];
+	char *ptrs[10];
+	int ret;
+
+	strcpy(pars[0],"dimnode=");
+	strcpy(pars[1],"dimserver=");
+	strcpy(pars[2],"dimserverid=");
+	strcpy(pars[3],"browser=");
+	pars[4][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(node, ptrs[0]);
+	strcpy(server, ptrs[1]);
+	sscanf(ptrs[2],"%d",pid);
+	sscanf(ptrs[3],"%d",browser);
+if(WebDID_Debug)
+printf("parse pars - node %s, server %s, pid %d, browser %d\n",node, server, *pid, *browser);
+	return 1;
+}
+
+int getServiceParameters(char *buffer, char *service, int *req, int* browser, int *force)
+{
+	char pars[10][32];
+	char *ptrs[10];
+	int ret;
+
+	strcpy(pars[0],"dimservice=");
+	strcpy(pars[1],"reqNr=");
+	strcpy(pars[2],"reqId=");
+	strcpy(pars[3],"force=");
+	pars[4][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(service, ptrs[0]);
+	sscanf(ptrs[1],"%d",req);
+	sscanf(ptrs[2],"%d",browser);
+	sscanf(ptrs[3],"%d",force);
+if(WebDID_Debug)
+printf("\nparse service pars - service %s %d %d %d\n\n",service, *req, *browser, *force);
+	return 1;
+}
+
+
+extern char JSONHeader[];
+extern char *JSONBuffer;
+
+static char *conv_buffer = 0;
+static int conv_buffer_size = 0;
+
+char *unescape(char *buffer)
+{
+  int buffer_size;
+  char *ptr, *ptr1;
+  int code;
+
+  buffer_size = (int)strlen(buffer) + 1;
+  if(buffer_size > conv_buffer_size )
+  {
+    if(conv_buffer_size)
+      free(conv_buffer);
+    conv_buffer = malloc((size_t)buffer_size);
+    conv_buffer_size = buffer_size;
+  }
+  ptr = buffer;
+  ptr1 = conv_buffer;
+  while(*ptr)
+  {
+    if(*ptr != '%')
+    {
+      *ptr1 = *ptr;
+      ptr++;
+      ptr1++;
+    }
+    else
+    {
+      ptr++;
+      sscanf(ptr,"%2X",&code);
+      sprintf(ptr1,"%c",code);
+      ptr += 2;
+      ptr1++;
+      *ptr1 = '\0';
+    }
+  }
+  *ptr1 = '\0';
+  return conv_buffer;
+}
+
+void sendData(int conn_id, char *buffer, int type)
+{
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+	static char snd_data_buffer[BUFSIZE+1]; /* static so zero filled */
+	char *ptr = 0;
+	char node[128], server[256], service[256];
+	int pid, ret, req, browser, force;
+	extern char *update_services();
+	extern char *update_service_data();
+	extern char *getJSONHeader();
+	extern char *getJSONBuffer();
+	char datatype[128];
+	char *conv_buffer;
+
+	conv_buffer = buffer;
+	strcpy(datatype,"application/json");
+	if(type == 0)
+	{
+	  ptr = getJSONHeader(0);
+	}
+	else if(type == 1)
+	{
+	    ret = getNodeParameters(conv_buffer, node, &browser);
+		ptr = getJSONBuffer(node, browser);
+	}
+	else if(type == 2)
+	{
+		ret = getServerParameters(conv_buffer, node, server, &pid, &browser);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			ptr = update_services(node, server, pid, browser);
+		}
+	}
+	else if(type == 3)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			update_service_data(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 4)
+	{
+		ptr = conv_buffer;
+if(WebDID_Debug)
+		printf("%s\n",ptr);
+		strcpy(datatype,"text/html");
+	}
+	else if(type == 5)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			check_browser_changes(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 6)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			find_services(service, conn_id, browser, force);
+			if(force == -1)
+				strcpy(snd_data_buffer,"");
+			else
+				strcpy(snd_data_buffer,"load");
+			ptr = snd_data_buffer;
+		}
+	}
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(ptr), datatype);
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, snd_buffer);
+    (void)web_write(conn_id,ptr,(int)strlen(ptr));
+if(WebDID_Debug == 2)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, ptr);
+}
+
+
+void sendSmiData(int conn_id, char *buffer, int type)
+{
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+	static char snd_data_buffer[BUFSIZE+1]; /* static so zero filled */
+	char *ptr = 0;
+	char node[128], server[256], service[256];
+	int pid, ret, req, browser, force;
+	extern char *update_services(), *update_smi_objects();
+	extern char *update_service_data();
+	extern char *getJSONHeader();
+	extern char *getJSONBuffer(), *getJSONSmiBuffer();
+	char datatype[128];
+	char *conv_buffer;
+
+	conv_buffer = buffer;
+	strcpy(datatype,"application/json");
+	if(type == 0)
+	{
+	  ptr = getJSONHeader(1);
+	}
+	else if(type == 1)
+	{
+	    ret = getNodeParameters(conv_buffer, node, &browser);
+		ptr = getJSONSmiBuffer(node, browser);
+	}
+	else if(type == 2)
+	{
+		ret = getServerParameters(conv_buffer, node, server, &pid, &browser);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			ptr = update_smi_objects(node, server, pid, browser);
+		}
+	}
+	else if(type == 3)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			update_service_data(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 4)
+	{
+		ptr = conv_buffer;
+if(WebDID_Debug)
+		printf("%s\n",ptr);
+		strcpy(datatype,"text/html");
+	}
+	else if(type == 5)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			check_browser_changes(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 6)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			find_services(service, conn_id, browser, force);
+			if(force == -1)
+				strcpy(snd_data_buffer,"");
+			else
+				strcpy(snd_data_buffer,"load");
+			ptr = snd_data_buffer;
+		}
+	}
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(ptr), datatype);
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, snd_buffer);
+    (void)web_write(conn_id,ptr,(int)strlen(ptr));
+if(WebDID_Debug == 2)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, ptr);
+}
+
+void sendFile(int conn_id, char *buffer, int size)
+{
+        int j, file_fd, buflen, len;
+        int i, ret;
+        char * fstr;
+		int flen;
+        static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+		static char date_buffer[128];
+
+
+		ret = size;
+        if(ret > 0 && ret < BUFSIZE)    /* return code is valid chars */
+                buffer[ret]=0;          /* terminate the buffer */
+        else buffer[0]=0;
+
+if(WebDID_Debug)
+printf("Got %s\n", buffer);
+        if( strncmp(buffer,"GET ",4) && strncmp(buffer,"get ",4) )
+		{
+                log_it(SORRY,"Only simple GET operation supported",buffer,conn_id);
+				return;
+		}
+
+        for(i=4;i<BUFSIZE;i++) 
+		{ /* null terminate after the second space to ignore extra stuff */
+                if(buffer[i] == ' ') 
+				{ /* string is "GET URL " +lots of other stuff */
+                        buffer[i] = 0;
+                        break;
+                }
+        }
+
+if(WebDID_Debug)
+printf("Got 1 %s\n", buffer);
+       for(j=0;j<i-1;j++)      /* check for illegal parent directory use .. */
+		{
+                if(buffer[j] == '.' && buffer[j+1] == '.')
+				{
+                        log_it(SORRY,"Parent directory (..) path names not supported",buffer,conn_id);
+						return;
+				}
+		}
+		if((int)strlen(buffer) == 5)
+		{
+			if( !strncmp(&buffer[0],"GET /",5) || !strncmp(&buffer[0],"get /",5) ) 
+			/* convert no filename to index file */
+                (void)strcpy(buffer,"GET /index.html");
+		}
+		if((int)strlen(buffer) == 8)
+		{
+			if( !strncmp(&buffer[0],"GET /smi",8) || !strncmp(&buffer[0],"get /smi",8) ) 
+			/* convert no filename to index file */
+                (void)strcpy(buffer,"GET /smi/index.html");
+		}
+        /* work out the file type and check we support it */
+        buflen=(int)strlen(buffer);
+        fstr = (char *)0;
+        for(i=0;extensions[i].ext != 0;i++) 
+		{
+              len = (int)strlen(extensions[i].ext);
+              if( !strncmp(&buffer[buflen-len], extensions[i].ext, (size_t)len)) 
+			  {
+                        fstr =extensions[i].filetype;
+                        break;
+                }
+        }
+/*
+		(void)sprintf(snd_buffer,"HTTP/1.1 100 Continue\r\n\r\n");
+        (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+		printf("SENDING to conn %d:\n%s\n",conn_id, snd_buffer);
+*/
+		if(fstr == 0)
+		{
+if(WebDID_Debug)
+printf("Got %s\n", buffer);
+			if(!strncmp(&buffer[5],"didHeader",9))
+			{
+				sendData(conn_id, &buffer[5], 0);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didData",7))
+			{
+				sendData(conn_id, &buffer[5], 1);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didServices",11))
+			{
+				sendData(conn_id, &buffer[5], 2);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didServiceData",14))
+			{
+				sendData(conn_id, &buffer[5], 3);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didPoll",7))
+			{
+				sendData(conn_id, &buffer[5], 5);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didQuery",8))
+			{
+				sendData(conn_id, &buffer[5], 6);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"smiData",7))
+			{
+				sendSmiData(conn_id, &buffer[5], 1);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"smiObjects",10))
+			{
+				sendSmiData(conn_id, &buffer[5], 2);
+				return;
+			}
+/*
+			if((!strncmp(&buffer[5],"didData",7)) || (!strncmp(&buffer[5],"didServices",11)))
+			{
+				if(ptr = strchr(&buffer[5],'/'))
+				{
+					*ptr = '\0';
+				}
+				buflen=(int)strlen(buffer);
+				for(i=0;extensions[i].ext != 0;i++) 
+				{
+					len = (int)strlen(extensions[i].ext);
+					if( !strncmp(&buffer[buflen-len], extensions[i].ext, len)) 
+					{
+					    fstr =extensions[i].filetype;
+						printf("fstr %s", fstr);
+                        break;
+					}
+				}
+				if(!strncmp(&buffer[5],"didData",7))
+				{
+					sendData(conn_id, &buffer[5]);
+				}
+				else if(!strncmp(&buffer[5],"didServices",11))
+				{
+					sendData(conn_id, &buffer[5]);
+				}
+			}
+*/
+			else
+			{
+				log_it(SORRY,"file extension type not supported",buffer,conn_id);
+				return;
+			}
+		}
+
+		if(( file_fd = open(&buffer[5],O_RDONLY | O_BINARY)) == -1) /* open the file for reading */
+		{
+                log_it(SORRY, "failed to open file",&buffer[5],conn_id);
+				return;
+		}
+
+		flen = 0;
+        while ( (ret = (int)read(file_fd, snd_buffer, BUFSIZE)) > 0 ) 
+		{
+			flen += ret;
+		}
+		close(file_fd);
+
+		if(( file_fd = open(&buffer[5],O_RDONLY | O_BINARY)) == -1) /* open the file for reading */
+		{
+                log_it(SORRY, "failed to open file",&buffer[5],conn_id);
+				return;
+		}
+
+		getTime(date_buffer);
+		(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+            date_buffer, flen, fstr);
+        (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+		printf("SENDING to conn %d:\n%s\n",conn_id, snd_buffer);
+
+        /* send file in 8KB block - last block may be smaller */
+        while ( (ret = (int)read(file_fd, snd_buffer, BUFSIZE)) > 0 ) {
+                (void)web_write(conn_id,snd_buffer,ret);
+if(WebDID_Debug == 2)
+			printf("SENDING data to conn %d: %d bytes\n",conn_id, ret);
+        }
+		close(file_fd);
+#ifdef LINUX
+        sleep(1);       /* to allow socket to drain */
+#endif
+}
+
+static void handler( int conn_id, char *packet, int size, int status )
+{
+	switch(status)
+	{
+	case STA_DISC:     /* connection broken */
+if(WebDID_Debug)
+{
+			dim_print_date_time();
+			printf(" Disconnect received - conn: %d to %s@%s\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+}
+			web_close(conn_id);
+		break;
+	case STA_CONN:     /* connection received */
+if(WebDID_Debug)
+{
+			dim_print_date_time();
+			printf(" Connection request received - conn: %d\n", conn_id);
+}
+		break;
+	case STA_DATA:     /* normal packet */
+/*
+			dim_print_date_time();
+			printf(" conn %d packet received:\n", conn_id);
+			printf("packet size = %d\n", size);
+			printf("%s\n",packet);
+			fflush(stdout);
+*/
+			sendFile(conn_id, packet, size);
+		break;
+	default:	
+		dim_print_date_time();
+		printf( " - DIM panic: recv_rout(): Bad switch, exiting...\n");
+		abort();
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	if(conn_id){}
+	if(errcode){}
+	dim_print_msg(reason, severity);
+/*
+	if(severity == 3)
+	{
+			printf("Exiting!\n");
+			exit(2);
+	}
+*/
+}
+
+int main(int argc, char **argv)
+{
+    int port;
+	int proto;
+	char dns_node[128];
+	int web_get_port();
+	char *ptr;
+	char currwd[256];
+
+	if(argc){}
+
+	strcpy(currwd, argv[0]);
+	printf("arg %s\n",currwd);
+	ptr = strrchr(currwd,'/');
+	if(ptr)
+	{
+		*ptr = '\0';
+	}
+	ptr = strrchr(currwd,'\\');
+	if(ptr)
+	{
+		*ptr = '\0';
+	}
+	chdir(currwd);
+        log_it(LOG,"webDid starting",argv[1],getpid());
+        /* setup the network socket */
+		proto = 1;
+		port = web_get_port();
+		get_node_name(dns_node);
+		did_init(dns_node, DNS_PORT);
+		if(!web_open_server("DID",handler, &proto, &port, error_handler))
+			return(0);
+/*
+		ret = matchString("hello world","*ll*");
+		printf("%s %s %d\n", "hello world","*ll*",ret);
+		ret = matchString("hello world","ll*");
+		printf("%s %s %d\n", "hello world","ll*",ret);
+*/
+		while(1)
+			sleep(10);
+		return(0);
+}
Index: branches/FACT++_part_filenames/dim/src/webDid/webTcpip.c
===================================================================
--- branches/FACT++_part_filenames/dim/src/webDid/webTcpip.c	(revision 18732)
+++ branches/FACT++_part_filenames/dim/src/webDid/webTcpip.c	(revision 18732)
@@ -0,0 +1,305 @@
+#include <errno.h>
+#include <dim.h>
+#include <ctype.h>
+#ifndef WIN32
+#include <netdb.h>
+#endif
+
+int Tcpip_max_io_data_write = TCP_SND_BUF_SIZE - 16;
+int Tcpip_max_io_data_read = TCP_RCV_BUF_SIZE - 16;
+
+static void ast_conn_h(int handle, int svr_conn_id, int protocol)
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+	int web_start_read();
+
+	if(protocol){}
+	conn_id = conn_get();
+/*
+	if(!conn_id)
+		dim_panic("In ast_conn_h: No more connections\n");
+*/
+	dna_connp = &Dna_conns[conn_id] ;
+	dna_connp->error_ast = Dna_conns[svr_conn_id].error_ast;
+	tcpip_code = tcpip_open_connection( conn_id, handle );
+
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Connecting to", DIM_ERROR, DIMTCPCNERR);
+		conn_free(conn_id);
+	} else {
+		dna_connp->state = RD_HDR;
+		dna_connp->buffer = (int *)malloc(TCP_RCV_BUF_SIZE);
+		memset(dna_connp->buffer, 0, TCP_RCV_BUF_SIZE);
+/*
+		if(!dna_connp->buffer)
+		{
+			printf("Error in DNA - handle_connection malloc returned 0\n");
+			fflush(stdout);
+		}
+*/
+		dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+		dna_connp->read_ast = Dna_conns[svr_conn_id].read_ast;
+		dna_connp->saw_init = FALSE;
+		web_start_read(conn_id, TCP_RCV_BUF_SIZE); /* sizeof(DNA_NET) */
+		/* Connection arrived. Signal upper layer ? */
+		dna_connp->read_ast(conn_id, NULL, 0, STA_CONN);
+	}
+	tcpip_code = tcpip_start_listen(svr_conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(svr_conn_id, tcpip_code,
+			"Listening at", DIM_ERROR, DIMTCPLNERR);
+	}
+}
+
+static void read_data( int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+/*
+printf("passing up %d bytes, conn_id %d\n",dna_connp->full_size, conn_id); 
+*/
+		dna_connp->read_ast(conn_id, dna_connp->buffer,
+			dna_connp->full_size, STA_DATA);
+}
+
+static void ast_read_h( int conn_id, int status, int size )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+	if(!dna_connp->buffer) /* The connection has already been closed */
+	{
+		return;
+	}
+	if(status == 1)
+	{
+/*
+		next_size = dna_connp->curr_size;
+		buff = (char *) dna_connp->curr_buffer;
+  		if(size < next_size) 
+		{
+			max_io_data = Tcpip_max_io_data_read;
+			read_size = ((next_size - size) > max_io_data) ?
+				max_io_data : next_size - size;
+			dna_connp->curr_size -= size;
+			dna_connp->curr_buffer += size;
+			tcpip_code = tcpip_start_read(conn_id, buff + size, 
+				read_size, ast_read_h);
+			if(tcpip_failure(tcpip_code)) 
+			{
+#ifndef WIN32
+			  if(errno == ENOTSOCK)
+			  {
+				  if(dna_connp->read_ast)
+					dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+			  }
+			  else
+#endif
+			  {
+				dna_report_error(conn_id, tcpip_code,
+					"Reading from", DIM_ERROR, DIMTCPRDERR);
+			  }
+			}
+			return;
+		}
+		switch(dna_connp->state)
+		{
+			case RD_HDR :
+				if(is_header(conn_id))
+				{
+					if( dna_connp->state == RD_DATA )
+					{
+						next_size = vtohl(dna_connp->buffer[1]);
+						dna_start_read(conn_id, next_size);
+					}
+					else
+					{
+						dna_connp->state = RD_HDR;
+						dna_start_read(conn_id, READ_HEADER_SIZE);
+					}
+				}
+				break;
+			case RD_DATA :
+				read_data(conn_id);
+				dna_connp->state = RD_HDR;
+				dna_start_read(conn_id, READ_HEADER_SIZE);
+				break;
+			default:
+				break;
+		}
+*/
+		dna_connp->full_size = size;
+		read_data(conn_id);
+		dna_start_read(conn_id, TCP_RCV_BUF_SIZE);
+	} 
+	else 
+	{
+	  /*
+	  printf("Connection lost. Signal upper layer\n");
+	  */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+	}
+}
+
+int web_start_read(int conn_id, int size)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code, read_size;
+	int max_io_data;
+	
+	if(!dna_connp->busy)
+	{
+		return(0);
+	}
+
+	dna_connp->curr_size = size;
+	dna_connp->full_size = size;
+	if(size > dna_connp->buffer_size) 
+	{
+		dna_connp->buffer =
+				(int *) realloc(dna_connp->buffer, (size_t)size);
+		memset(dna_connp->buffer, 0, (size_t)size);
+		dna_connp->buffer_size = size;
+	}
+	dna_connp->curr_buffer = (char *) dna_connp->buffer;
+	max_io_data = Tcpip_max_io_data_read;
+	read_size = (size > max_io_data) ? max_io_data : size ;
+
+	tcpip_code = tcpip_start_read(conn_id, dna_connp->curr_buffer,
+				  read_size, ast_read_h);
+	if(tcpip_failure(tcpip_code)) {
+		dna_report_error(conn_id, tcpip_code,
+			"Reading from", DIM_ERROR, DIMTCPRDERR);
+
+		return(0);
+	}
+
+	return(1);
+}								
+
+int web_get_port()
+{
+	int ret;
+	char ports[64];
+	int port = 2500;
+
+	ret = dim_get_env_var("DIM_DID_PORT", ports, 64);
+	if(ret)
+	{
+		sscanf(ports,"%d",&port);
+	}
+	return port;
+}
+
+int web_open_server(char *task, void (*read_ast)(), int *protocol, int *port, void (*error_ast)())
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	conn_id = dna_open_client("", "", 0, 0, 
+					0, 0, 0);
+	dna_close(conn_id);
+/*
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	*protocol = PROTOCOL;
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id];
+/*
+	if(!conn_id)
+		dim_panic("In dna_open_server: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_server(conn_id, task, port);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Opening server port", DIM_ERROR, DIMTCPOPERR);
+		conn_free(conn_id);
+		return(0);
+	}
+	dna_connp->writing = FALSE;
+	dna_connp->read_ast = read_ast;
+	tcpip_code = tcpip_start_listen(conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code, "Listening at", DIM_ERROR, DIMTCPLNERR);
+		return(0);
+	}
+	return(conn_id);
+}
+
+void web_write(int conn_id, char *buffer, int size)
+{
+	tcpip_write( conn_id, buffer, size );
+}
+
+static void release_conn(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id] ;
+
+	DISABLE_AST
+	if(dna_connp->busy)
+	{ 
+		tcpip_close(conn_id);
+		if(dna_connp->buffer)
+		{
+			free(dna_connp->buffer);
+			dna_connp->buffer = 0;
+			dna_connp->buffer_size = 0;
+		}
+		dna_connp->read_ast = NULL;
+		dna_connp->error_ast = NULL;
+		conn_free(conn_id);
+	}
+	ENABLE_AST
+}
+
+int web_close(int conn_id)
+{
+	if(conn_id > 0)
+	{
+		release_conn(conn_id);
+	}
+	return(1);
+}
+
+int web_get_node_name(char *node, char *name)
+{
+	int a,b,c,d;
+/* Fix for gcc 4.6 "dereferencing type-punned pointer will break strict-aliasing rules"?!*/
+	unsigned char ipaddr_buff[4];
+	unsigned char *ipaddr = ipaddr_buff;
+	struct hostent *host;
+
+	strcpy(name, node);
+	if(isdigit(node[0]))
+	{
+		sscanf(node,"%d.%d.%d.%d",&a, &b, &c, &d);
+	    ipaddr[0] = (unsigned char)a;
+	    ipaddr[1] = (unsigned char)b;
+	    ipaddr[2] = (unsigned char)c;
+	    ipaddr[3] = (unsigned char)d;
+		if( (host = gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET)) == (struct hostent *)0 )
+		{
+			return(0);
+		}
+		else
+		{
+			strcpy(name,host->h_name);
+			return(1);
+		}
+	}
+	return(0);
+}
Index: branches/FACT++_part_filenames/drive/Camera.cc
===================================================================
--- branches/FACT++_part_filenames/drive/Camera.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Camera.cc	(revision 18732)
@@ -0,0 +1,180 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz 1/2008 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2008
+!
+!
+\* ======================================================================== */
+#include "Camera.h"
+
+#include <iostream>
+
+#include "MVideo.h"
+#include "PixClient.h"
+
+using namespace std;
+
+Camera::Camera(PixClient &client, Int_t nch) : MThread("Camera"), fClient(client), fVideo(0), fNumFrame(0), fChannel(nch)
+{
+    fVideo = new MVideo;
+    fVideo->Open(nch);
+
+    RunThread();
+}
+
+Camera::~Camera()
+{
+    // Shut down the thread
+    CancelThread();
+
+    // Now delete (close) the device
+    delete fVideo;
+}
+
+void Camera::ProcessFrame(unsigned char *img)
+{
+    gettimeofday(&fTime, NULL);
+
+#if 1
+    for (int y=0; y<576; y++)
+        for (int x=0; x<768; x++)
+        {
+            const Int_t p = (x+y*768)*4;
+            fImg[x+y*768] = ((UInt_t)img[p+1]+(UInt_t)img[p+2]+(UInt_t)img[p+3])/3;
+        }
+#endif
+
+#if 0
+    unsigned char *dest = fImg;
+    for (const unsigned char *ptr=img; ptr<img+768*576*4; ptr+=4)
+        *dest++ = (UShort_t(ptr[1])+UShort_t(ptr[2])+UShort_t(ptr[3]))/3;
+#endif
+
+    fClient.ProcessFrame(fNumFrame-1, (byte*)fImg, &fTime);
+}
+
+Int_t Camera::Thread()
+{
+    fNumSkipped = 0;
+    fNumFrame   = 0;
+
+    if (!fVideo->IsOpen())
+    {
+        cout << "Camera::Thread: ERROR - Device not open." << endl;
+        return kFALSE;
+    }
+
+    cout << "Start Camera::Thread at frame " << fNumFrame%fVideo->GetNumBuffers() << endl;
+
+    for (int f=0; f<fVideo->GetNumBuffers(); f++)
+    {
+        if (!fVideo->CaptureStart(f))
+            return kFALSE;
+    }
+
+    if (!fVideo->Start())
+        return kFALSE;
+
+    Int_t timeouts = 0;
+    while (1)
+    {
+
+        /*
+        // Switch channel if necessary
+        switch (fVideo->SetChannel(fChannel))
+        {
+        case kFALSE:        // Error swucthing channel
+            return kFALSE;
+        case kSKIP:         // No channel switching necessary
+            break;
+        case kTRUE:         // Channel switched (skip filled buffers)
+            for (int f=0; f<fVideo->GetNumBuffers(); f++)
+                if (!fVideo->CaptureWait(fNumFrame+f))
+                    return kFALSE;
+            fNumFrame=0;
+            for (int f=0; f<fVideo->GetNumBuffers(); f++)
+                if (!fVideo->CaptureStart(f))
+                    return kFALSE;
+            break;
+        }*/
+
+        //cout << "*** Wait " << fNumFrame << endl;
+
+        // Check and wait until capture into the next buffer is finshed
+        unsigned char *img = 0;
+        switch (fVideo->CaptureWait(fNumFrame, &img))
+        {
+        case kTRUE: // Process frame
+            // If cacellation is requested cancel here
+            TThread::CancelPoint();
+
+            ProcessFrame(img);
+
+            // If cacellation is requested cancel here
+            TThread::CancelPoint();
+
+            // Start to capture into the buffer which has just been processed
+            if (!fVideo->CaptureStart(fNumFrame-1))
+                break;
+
+            fNumFrame++;
+            timeouts = 0;
+            continue;
+
+        case kFALSE: // Waiting failed
+            break;
+
+        case -1:  // Skip frame
+            usleep(10000); // Wait half a frame
+            continue;
+
+            fNumFrame--;
+            fNumSkipped++;
+            if (timeouts++<5)
+                continue;
+
+            cout << "ERROR - At least five captured images timed out." << endl;
+            break;
+        }
+
+        break;
+    }
+
+    // Is this necessary?!?
+    //for (int i=0; i<frames-1; i++)
+    //    video.CaptureWait((f+i+1)%frames);
+
+    cout << fNumFrame-1 << " frames processed." << endl;
+    cout << fNumSkipped << " frames skipped." << endl;
+
+    return kTRUE;
+}
+
+//void Camera::Loop(unsigned long nof)
+//{
+//}
+
+void Camera::SetChannel(int chan)
+{
+    fChannel = chan;
+//    CancelThread();
+//    fVideo->SetChannel(chan);
+//    RunThread();
+}
+
Index: branches/FACT++_part_filenames/drive/Camera.h
===================================================================
--- branches/FACT++_part_filenames/drive/Camera.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Camera.h	(revision 18732)
@@ -0,0 +1,51 @@
+#ifndef COSY_Camera
+#define COSY_Camera
+
+#ifndef MARS_MThread
+#include "MThread.h"
+#endif
+/*
+#ifndef COSY_PixGetter
+#include "PixGetter.h"
+#endif
+*/
+class MVideo;
+class PixClient;
+
+class Camera : /*public PixGetter,*/ public MThread
+{
+private:
+    //
+    // Geometry
+    //
+    static const int cols  = 768;
+    static const int rows  = 576;
+    static const int depth = 4;
+
+    unsigned char fImg[cols*rows];
+    struct timeval fTime;
+
+    PixClient &fClient;
+
+    MVideo *fVideo;
+
+    UInt_t fNumFrame;
+    UInt_t fNumSkipped;
+
+    UInt_t fChannel;
+
+    Int_t Thread();
+    void  ProcessFrame(unsigned char *img);
+
+public:
+    Camera(PixClient &client, Int_t ch=0);
+    virtual ~Camera();
+
+    void SetChannel(int);
+
+    void ExitLoop() { CancelThread(); }
+
+    //ClassDef(Camera, 0)
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/FilterLed.cc
===================================================================
--- branches/FACT++_part_filenames/drive/FilterLed.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/FilterLed.cc	(revision 18732)
@@ -0,0 +1,530 @@
+#include "FilterLed.h"
+
+#include <memory.h>   // memset
+#include <math.h>
+#include <iostream> // cout
+
+#include "Led.h"
+#include "Ring.h"
+
+#include "MGImage.h"
+
+using namespace std;
+
+class ClusterFinder
+{
+private:
+    uint8_t *fImg;
+
+    uint32_t fW;
+    uint32_t fH;
+
+    int32_t fX0;
+    int32_t fX1;
+
+    int32_t fY0;
+    int32_t fY1;
+
+    uint32_t fLimitingSize;
+
+    uint32_t fCount;
+    float fSumX;
+    float fSumY;
+
+    float FindCluster(int32_t x, int32_t y)
+    {
+        // if edge is touched stop finding cluster
+        if (x<fX0 || x>=fX1 || y<fY0 || y>=fY1)
+            return -1;
+
+        if (fCount>fLimitingSize)
+            return -2;
+
+        // get the value
+        float val = fImg[y*fW+x];
+
+        // if its empty we have found the border of the cluster
+        if (val==0)
+            return 0;
+
+        // mark the point as processed
+        fImg[y*fW+x] = 0;
+
+        fSumX += x*val; // sumx
+        fSumY += y*val; // sumy
+        fCount++;
+
+        float rc[4];
+        rc[0] = FindCluster(x+1, y  );
+        rc[1] = FindCluster(x,   y+1);
+        rc[2] = FindCluster(x-1, y  );
+        rc[3] = FindCluster(x,   y-1);
+
+        for (int i=0; i<4; i++)
+        {
+            if (rc[i]<0) // check if edge is touched
+                return rc[i];
+
+            val += rc[i];
+        }
+
+        return val;
+    }
+
+public:
+    ClusterFinder(uint8_t *img, uint32_t w, uint32_t h) : fImg(0), fLimitingSize(999)
+    {
+        fW = w;
+        fH = h;
+
+        fX0 = 0;
+        fY0 = 0;
+        fX1 = fW;
+        fY1 = fH;
+
+        fImg = new uint8_t[fW*fH];
+
+        memcpy(fImg, img, fW*fH);
+    }
+
+    ~ClusterFinder()
+    {
+        delete [] fImg;
+    }
+    Double_t GetSumX() const { return fSumX; }
+    Double_t GetSumY() const { return fSumY; }
+
+    uint32_t GetCount() const { return fCount; }
+
+    void SetLimitingSize(uint32_t lim) { fLimitingSize=lim; }
+
+    float FindClusterAt(int32_t x, int32_t y)
+    {
+        fCount = 0;
+        fSumX  = 0;
+        fSumY  = 0;
+
+        return FindCluster(x, y);
+    }
+
+    void SetRange(int32_t x0=0, int32_t y0=0, int32_t x1=0, int32_t y1=0)
+    {
+        fX0 = x0;
+        fY0 = y0;
+        fX1 = x1==0?fW:x1;
+        fY1 = y1==0?fH:y1;
+    }
+
+    void FindCluster(vector<Led> &leds, int32_t x0=0, int32_t y0=0, int32_t x1=0, int32_t y1=0)
+    {
+        fX0 = x0;
+        fY0 = y0;
+        fX1 = x1==0?fW:x1;
+        fY1 = y1==0?fH:y1;
+
+        for (int32_t x=fX0; x<fX1; x++)
+            for (int32_t y=fY0; y<fY1; y++)
+            {
+                const uint8_t &b = fImg[y*fW+x];
+                if (b==0)
+                    continue;
+
+                const float mag = FindClusterAt(x, y);
+                if (fCount>999)
+                {
+                    cout << "ERROR - Spot with Size>999 detected..." << endl;
+                    return;
+                }
+
+                if (mag>0 && fCount>4)
+                    leds.push_back(Led(fSumX/mag, fSumY/mag, 0, mag));
+            }
+        //leds.Compress();
+    }
+};
+
+
+void FilterLed::DrawBox(const int x1, const int y1,
+                        const int x2, const int y2,
+                        const int col) const
+{
+    MGImage::DrawBox(fImg, 768, 576, x1, y1, x2, y2, col);
+}
+
+void FilterLed::MarkPoint(float px, float py, float mag) const
+{
+    const int x = (int)(px+.5);
+    const int y = (int)(py+.5);
+    const int m = (int)(mag);
+
+    DrawBox(x-8, y, x-5, y, m);
+    DrawBox(x, y+5, x, y+8, m);
+    DrawBox(x+5, y, x+8, y, m);
+    DrawBox(x, y-8, x, y-5, m);
+}
+
+void FilterLed::MarkPoint(const Led &led) const
+{
+    /*
+    int32_t M = (int)(log(led.GetMag())*20);
+
+    cout << led.GetMag() << endl;
+
+    if (M>0xff)
+        M=0xff;
+    if (M<0xc0)
+        M=0xc0;
+        */
+
+    const int x = (int)(led.GetX()+.5);
+    const int y = (int)(led.GetY()+.5);
+
+    MarkPoint(x, y, 0xff);
+}
+
+void FilterLed::DrawCircle(float cx, float cy, float r, uint8_t col) const
+{
+    MGImage::DrawCircle(fImg, 768, 576, cx, cy, r, col);
+}
+
+void FilterLed::DrawHexagon(float cx, float cy, float r, uint8_t col) const
+{
+    MGImage::DrawHexagon(fImg, 768, 576, cx, cy, r, col);
+}
+
+void FilterLed::DrawCircle(const Ring &l, uint8_t col) const
+{
+    DrawCircle(l.GetX(), l.GetY(), l.GetR(), col);
+}
+
+void FilterLed::DrawCircle(const Ring &l, double r, uint8_t col) const
+{
+    DrawCircle(l.GetX(), l.GetY(), r, col);
+}
+
+void FilterLed::DrawHexagon(const Ring &l, double r, uint8_t col) const
+{
+    DrawHexagon(l.GetX(), l.GetY(), r, col);
+}
+
+void FilterLed::GetMinMax(const int offset, uint8_t *min, uint8_t *max) const
+{
+    *min = fImg[0];
+    *max = fImg[0];
+
+    uint8_t *s = (uint8_t*)fImg;
+    const uint8_t *e0 = s+fW*fH;
+
+    //
+    // calculate mean value (speed optimized)
+    //
+    while (s<e0)
+    {
+        const uint8_t *e = s+fH-offset;
+        s += offset;
+
+        while (s<e)
+        {
+            if (*s>*max)
+            {
+                *max = *s;
+                if (*max-*min==255)
+                    return;
+            }
+            if (*s<*min)
+            {
+                *min = *s;
+                if (*max-*min==255)
+                    return;
+            }
+            s++;
+        }
+        s+=offset;
+    }
+}
+
+int FilterLed::GetMeanPosition(const int x, const int y,
+                               const int boxx, const int boxy,
+                               float &mx, float &my, unsigned int &sum) const
+{
+    unsigned int sumx=0;
+    unsigned int sumy=0;
+
+    sum=0;
+    for (int dx=x-boxx; dx<x+boxx+1; dx++)
+        for (int dy=y-boxy; dy<y+boxy+1; dy++)
+        {
+            const uint8_t &m = fImg[dy*fW+dx];
+
+            sumx += m*dx;
+            sumy += m*dy;
+            sum  += m;
+        }
+
+    mx = (float)sumx/sum;
+    my = (float)sumy/sum;
+
+    return (int)my*fW + (int)mx;
+}
+
+int FilterLed::GetMeanPosition(const int x, const int y, const int boxx, const int boxy) const
+{
+    float mx, my;
+    unsigned int sum;
+    return GetMeanPosition(x, y, boxx, boxy, mx, my, sum);
+}
+
+int FilterLed::GetMeanPositionBox(const int x, const int y,
+                                  const int boxx, const int boxy,
+                                  float &mx, float &my, unsigned int &sum) const
+{
+    //-------------------------------
+    // Improved algorithm:
+    // 1. Look for the largest five-pixel-cross signal inside the box
+    int x0 = max(x-boxx+1,   0);
+    int y0 = max(y-boxy+1,   0);
+
+    int x1 = min(x+boxx+1-1, fW);
+    int y1 = min(y+boxy+1-1, fH);
+
+    int maxx=0;
+    int maxy=0;
+
+    unsigned int max =0;
+    for (int dx=x0; dx<x1; dx++)
+    {
+        for (int dy=y0; dy<y1; dy++)
+        {
+            const unsigned int sumloc =
+                fImg[(dy+0)*fW + (dx-1)] +
+                fImg[(dy+0)*fW + (dx+1)] +
+                fImg[(dy+1)*fW + dx] +
+                fImg[(dy+0)*fW + dx] +
+                fImg[(dy-1)*fW + dx];
+
+            if(sumloc<=max)
+                continue;
+
+            maxx=dx;
+            maxy=dy;
+            max =sumloc;
+	}
+    }
+
+    // 2. Calculate mean position inside a circle around
+    // the highst cross-signal with radius of 6 pixels.
+    ClusterFinder find(fImg, fW, fH);
+    find.SetLimitingSize(9999);
+    find.SetRange(x0, y0, x1, y1);
+
+    const float mag = find.FindClusterAt(maxx, maxy);
+
+    mx = find.GetSumX()/mag;
+    my = find.GetSumY()/mag;
+
+    sum = (int)(mag+0.5);
+
+    return (int)my*fW + (int)mx;
+}
+
+int FilterLed::GetMeanPositionBox(const int x, const int y,
+                                  const int boxx, const int boxy) const
+{
+    float mx, my;
+    unsigned int sum;
+    return GetMeanPositionBox(x, y, boxx, boxy, mx, my, sum);
+}
+
+void FilterLed::Execute(vector<Led> &leds, int xc, int yc) const
+{
+    double bright;
+    Execute(leds, xc, yc, bright);
+}
+
+void FilterLed::Execute(vector<Led> &leds, int xc, int yc, double &bright) const
+{
+    const int x0 = max(xc-fBoxX, 0);
+    const int y0 = max(yc-fBoxY, 0);
+    const int x1 = min(xc+fBoxX, fW);
+    const int y1 = min(yc+fBoxY, fH);
+
+    const int wx = x1-x0;
+    const int hy = y1-y0;
+
+    double sum = 0;
+    double sq  = 0;
+
+    for (int x=x0; x<x1; x++)
+        for (int y=y0; y<y1; y++)
+        {
+            uint8_t &b = fImg[y*fW+x];
+
+            // Skip saturating pixels
+            if (b>0xf0)
+                continue;
+
+            sum += b;
+            sq  += b*b;
+        }
+
+    sum /= wx*hy;
+    sq  /= wx*hy;
+
+    bright=sum;
+
+    
+    // 254 because b<=max and not b<max
+    const double sdev = sqrt(sq-sum*sum);
+    const uint8_t   max  = sum+fCut*sdev>254 ? 254 : (uint8_t)(sum+fCut*sdev);
+
+    //
+    // clean image from noise
+    // (FIXME: A lookup table could accelerate things...
+    //
+    for (int x=x0; x<x1; x++)
+        for (int y=y0; y<y1; y++)
+        {
+            uint8_t &b = fImg[y*fW+x];
+            if (b<=max)
+                b = 0;
+        }
+
+    ClusterFinder find(fImg, fW, fH);
+    find.FindCluster(leds, x0, y0, x1, y1);
+}
+
+void FilterLed::FindStar(vector<Led> &leds, int xc, int yc, bool box) const
+{
+    // fBox: radius of the inner (signal) box
+    // Radius of the outer box is fBox*sqrt(2)
+
+    //
+    // Define inner box in which to search the signal
+    //
+    const int x0 = max(xc-fBoxX, 0);
+    const int y0 = max(yc-fBoxY, 0);
+    const int x1 = min(xc+fBoxX, fW);
+    const int y1 = min(yc+fBoxY, fH);
+
+    //
+    // Define outer box (excluding inner box) having almost
+    // the same number of pixels in which the background
+    // is calculated
+    //
+    const double sqrt2 = sqrt(2.);
+
+    const int xa = max(xc-(int)nearbyint(fBoxX*sqrt2), 0);
+    const int ya = max(yc-(int)nearbyint(fBoxY*sqrt2), 0);
+    const int xb = min(xc+(int)nearbyint(fBoxX*sqrt2), fW);
+    const int yb = min(yc+(int)nearbyint(fBoxY*sqrt2), fH);
+
+    //
+    // Calculate average and sdev for a square
+    // excluding the inner part were we expect
+    // the signal to be.
+    //
+    double sum = 0;
+    double sq  = 0;
+
+    int n=0;
+    for (int x=xa; x<xb; x++)
+        for (int y=ya; y<yb; y++)
+        {
+            if (x>=x0 && x<x1 && y>=y0 && y<y1)
+                continue;
+
+            uint8_t &b = fImg[y*fW+x];
+
+            sum += b;
+            sq  += b*b;
+            n++;
+        }
+
+    sum /= n;
+    sq  /= n;
+
+    // 254 because b<=max and not b<max
+    const double sdev = sqrt(sq-sum*sum);
+    const uint8_t   max  = sum+fCut*sdev>254 ? 254 : (uint8_t)(sum+fCut*sdev);
+
+    //
+    // clean image from noise
+    // (FIXME: A lookup table could accelerate things...
+    //
+    n=0;
+    for (int x=x0; x<x1; x++)
+        for (int y=y0; y<y1; y++)
+        {
+            uint8_t &b = fImg[y*fW+x];
+            if (b<=max)
+                b = 0;
+            else
+                n++;
+        }
+
+    //
+    // Mark the background region
+    //
+    for (int x=xa; x<xb; x+=2)
+    {
+        fImg[ya*fW+x]=0xf0;
+        fImg[yb*fW+x]=0xf0;
+    }
+    for (int y=ya; y<yb; y+=2)
+    {
+        fImg[y*fW+xa]=0xf0;
+        fImg[y*fW+xb]=0xf0;
+    }
+
+    //
+    // Check if any pixel found...
+    //
+    if (n<5)
+        return;
+
+    //
+    // Get the mean position of the star
+    //
+    float mx, my;
+    unsigned int mag;
+    int pos = box ? GetMeanPositionBox(xc, yc, fBoxX-1, fBoxY-1, mx, my, mag)
+        : GetMeanPosition(xc, yc, fBoxX-1, fBoxY-1, mx, my, mag);
+
+    if (pos<0 || pos>=fW*fH || fImg[pos]<sum+fCut*sdev)
+        return;
+
+    //    cout << "Mean=" << sum << "  SDev=" << sdev << "  :  ";
+    //    cout << "Sum/n = " << sum << "/" << n << " = " << (n==0?0:mag/n) << endl;
+
+    leds.push_back(Led(mx, my, 0, -2.5*log10((float)mag)+13.7));
+}
+
+void FilterLed::Stretch() const
+{
+    uint8_t min, max;
+    GetMinMax(25, &min, &max);
+
+    if (min==max || max-min>230) // 255/230=1.1
+        return;
+
+    const float scale = 255./(max-min);
+
+    uint8_t *b = fImg;
+    const uint8_t *e = fImg+fW*fH;
+
+    while (b<e)
+    {
+        if (*b<min)
+        {
+            *b++=0;
+            continue;
+        }
+        if (*b>max)
+        {
+            *b++=255;
+            continue;
+        }
+        *b = (uint8_t)((*b-min)*scale);
+        b++;
+    }
+}
Index: branches/FACT++_part_filenames/drive/FilterLed.h
===================================================================
--- branches/FACT++_part_filenames/drive/FilterLed.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/FilterLed.h	(revision 18732)
@@ -0,0 +1,70 @@
+#ifndef CAOS_FilterLed
+#define CAOS_FilterLed
+
+#include <stdint.h>
+#include <vector>
+
+class Led;
+class Ring;
+
+class FilterLed
+{
+    uint8_t *fImg;
+    int fW;
+    int fH;
+    int fBoxX;
+    int fBoxY;
+    float fCut;
+
+    float FindCluster(int &cnt, float *sum, uint32_t x, uint32_t y,
+                        uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1) const;
+
+    void GetMinMax(const int offset, uint8_t *min, uint8_t *max) const;
+    int  GetMeanPosition(const int x, const int y, const int boxx, const int boxy) const;
+    int  GetMeanPosition(const int x, const int y, const int boxx, const int boxy,
+			 float &mx, float &my, unsigned int &sum) const;
+
+    int  GetMeanPositionBox(const int x, const int y,
+                            const int boxx, const int boxy) const;
+    int  GetMeanPositionBox(const int x, const int y,
+                            const int boxx, const int boxy, float &mx, float &my,
+                            unsigned int &sum) const;
+
+    void DrawBox(const int x1, const int y1,
+                 const int x2, const int y2,
+                 const int col) const;
+
+public:
+    FilterLed(uint8_t *img, int w, int h, double cut=2.5) : fImg(img),
+        fW(w), fH(h), fBoxX(w), fBoxY(h), fCut(cut)
+    {
+    }
+
+    FilterLed(uint8_t *img, int w, int h, int boxx, int boxy, double cut=2.5) : fImg(img),
+        fW(w), fH(h), fBoxX(boxx), fBoxY(boxy), fCut(cut)
+    {
+    }
+    virtual ~FilterLed() { }
+
+    void SetBox(int box)   { fBoxX = fBoxY = box; }
+    void SetBox(int boxx, int boxy)   { fBoxX = boxx; fBoxY = boxy; }
+    void SetCut(float cut) { fCut = cut; }
+    void FindStar(std::vector<Led> &leds, int xc, int yc, bool circle=false) const;
+
+    void Execute(std::vector<Led> &leds, int xc, int yc, double &bright) const;
+    void Execute(std::vector<Led> &leds, int xc, int yc) const;
+    void Execute(std::vector<Led> &leds) const { Execute(leds, fW/2, fH/2); }
+
+    void MarkPoint(const Led &led) const;
+    void MarkPoint(float x, float y, float mag) const;
+    void Stretch() const;
+
+    void DrawCircle(float cx, float cy, float r, uint8_t col=0x40) const;
+    void DrawCircle(float r, uint8_t col=0x40) const { DrawCircle(fW/2, fH/2, r, col); }
+    void DrawCircle(const Ring &c, uint8_t col=0x40) const;
+    void DrawCircle(const Ring &c, double r, uint8_t col) const;
+    void DrawHexagon(float cx, float cy, float r, uint8_t col=0x40) const;
+    void DrawHexagon(const Ring &c, double r, uint8_t col) const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/Led.cc
===================================================================
--- branches/FACT++_part_filenames/drive/Led.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Led.cc	(revision 18732)
@@ -0,0 +1,23 @@
+#include "Led.h"
+
+#include <math.h>
+
+#include "Ring.h"
+
+using namespace std;
+
+double Led::CalcPhi(const Ring &ring)
+{
+    return atan2(fY-ring.GetY(), fX-ring.GetX())*180/M_PI;
+}
+
+/*
+void Led::Print(Option_t *o) const
+{
+    cout << "Led: ";
+    //cout << "x="   << MString::Format("%5.1f", fX)   << "+-" << fDx   << ", ";
+    //cout << "y="   << MString::Format("%5.1f", fY)   << "+-" << fDy   << ", ";
+    //cout << "phi=" << MString::Format("%6.1f", fPhi) << "+-" << fDphi << ", ";
+    cout << "mag=" << fMag << endl;
+}
+*/
Index: branches/FACT++_part_filenames/drive/Led.h
===================================================================
--- branches/FACT++_part_filenames/drive/Led.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Led.h	(revision 18732)
@@ -0,0 +1,55 @@
+#ifndef COSY_Led
+#define COSY_Led
+
+#include <stdint.h>
+
+class Ring;
+
+class Led
+{
+private:
+    double fX;
+    double fY;
+    double fPhi;
+
+    double fMag;
+
+public:
+    Led(double x=0, double y=0, double phi=0, double mag=0) :
+        fX(x), fY(y), fPhi(phi), fMag(mag)
+    {
+    }
+
+        /*
+    int32_t Compare(const TObject *obj) const
+    {
+        const Led *const l = (Led*)obj;
+
+        if (fPhi<l->fPhi)
+            return -1;
+
+        if (fPhi>l->fPhi)
+            return 1;
+
+        return 0;
+    }*/
+
+    void SetX(double x)     { fX=x; }
+    void SetY(double y)     { fY=y; }
+    void SetPhi(double phi) { fPhi=phi; }
+
+    double GetX() const    { return fX; }
+    double GetY() const    { return fY; }
+    double GetPhi() const  { return fPhi; }
+    double GetMag() const  { return fMag; }
+
+    void AddOffset(double dx, double dy) { fX+=dx; fY+=dy; }
+
+    //bool IsSortable() const { return kTRUE; }
+
+    double CalcPhi(const Ring &ring);
+
+    //void Print(Option_t *o=NULL) const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/MCaos.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MCaos.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MCaos.cc	(revision 18732)
@@ -0,0 +1,135 @@
+#include "MCaos.h"
+
+#include <fstream>
+#include <iostream>
+#include <iomanip>
+#include <math.h>
+
+#include "Led.h"
+#include "FilterLed.h"
+
+using namespace std;
+
+void MCaos::ReadResources(const char *name)
+{
+    ifstream fin(name);
+    if (!fin)
+    {
+        cout << "ERROR - Cannot open " << name << endl;
+        return;
+    }
+
+    fPositions.clear();
+
+    cout << " Reading " << name << ":" << endl;
+    cout << "------------------------------" << endl;
+    while (1)
+    {
+        double px, py, phi;
+        fin >> px >> py >> phi;
+        if (!fin)
+            break;
+
+        cout << " Led #" << fPositions.size() << ":  ";
+        cout << setw(3) << px << " ";
+        cout << setw(3) << py << "  (";
+        cout << setw(3) << phi << ")\n";
+        AddPosition(px, py, phi);
+    }
+    cout << "Found " << fPositions.size() << " leds." << endl;
+}
+
+void MCaos::CalcCenters(const vector<Led> &leds, float min, float max)
+{
+    fRings.clear();
+
+    const int nPoints = leds.size();
+
+    // A minimum of at least 3 points is mandatory!
+    if (nPoints<fMinNumberLeds || nPoints<3)
+        return;
+
+//    ofstream fout("rings.txt", ios::app);
+
+    for (int i=0; i<nPoints-2; i++)
+        for (int j=i+1; j<nPoints-1; j++)
+            for (int k=j+1; k<nPoints; k++)
+            {
+                Ring ring;
+                if (!ring.CalcCenter(leds[i], leds[j], leds[k]))
+                    continue;
+
+//                fout << i+j*10+k*100 << " " << ring.GetR() << " " << ring.GetX() << " " << ring.GetY() << endl;
+
+                //
+                //filter and remove rings with too big or too small radius
+                //
+                if ((min>=0&&ring.GetR()<min) || (max>=0&&ring.GetR()>max))
+                    continue;
+
+                fRings.push_back(ring);
+            }
+}
+
+int32_t MCaos::CalcRings(std::vector<Led> &leds, float min, float max)
+{
+    CalcCenters(leds, min, max);
+
+    fCenter.InterpolCenters(fRings);
+
+    for (auto it=leds.begin(); it!=leds.end(); it++)
+        it->CalcPhi(fCenter);
+
+    return fRings.size();
+}
+
+Ring MCaos::Run(uint8_t *img)
+{
+    fLeds.clear();
+
+    //          img  width height radius sigma
+    FilterLed f(img, 768, 576, fSizeBox, fSizeBox, fCut);
+
+    for (auto it=fPositions.begin(); it!=fPositions.end(); it++)
+    {
+        std::vector<Led> arr;
+
+        // Try to find Led in this area
+        f.Execute(arr, floor(it->GetX()), floor(it->GetY()));
+
+        // Loop over newly found Leds
+        for (auto jt=arr.begin(); jt!=arr.end(); jt++)
+        {
+            // Add Offset to Led
+            //jt->AddOffset(it->GetDx(), it->GetDy());
+
+            // Remember the expected phi for each detected led
+            jt->SetPhi(it->GetPhi());
+
+            // Mark Led in image (FIXME: Move to MStarguider)
+            f.MarkPoint(jt->GetX(), jt->GetY(), jt->GetMag());
+        }
+
+        fLeds.insert(fLeds.end(), arr.begin(), arr.end());
+    }
+
+    fNumDetectedRings = CalcRings(fLeds, fMinRadius, fMaxRadius);
+
+    double sumphi = 0;
+    for (auto it=fLeds.begin(); it!=fLeds.end(); it++)
+    {
+        //cout << it->CalcPhi(fCenter) << "|" << it->GetPhi() << " ";
+        double dphi = it->CalcPhi(fCenter) - it->GetPhi();
+        if (dphi>M_PI)
+            dphi -= 2*M_PI;
+        if (dphi<-M_PI)
+            dphi += 2*M_PI;
+
+        sumphi += dphi;
+    }
+    //cout << endl;
+
+    fCenter.SetPhi(sumphi/fLeds.size());
+
+    return fCenter;
+}
Index: branches/FACT++_part_filenames/drive/MCaos.h
===================================================================
--- branches/FACT++_part_filenames/drive/MCaos.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MCaos.h	(revision 18732)
@@ -0,0 +1,59 @@
+#ifndef CAOS_MCaos
+#define CAOS_MCaos
+
+#ifndef CAOS_Ring
+#include "Ring.h"
+#endif
+
+class MCaos
+{
+private:
+    std::vector<Led> fPositions;
+    std::vector<Led> fLeds;
+
+    int16_t  fMinNumberLeds; // minimum number of detected leds required
+    double   fMinRadius;     // minimum radius for cut in ring radius
+    double   fMaxRadius;     // maximum radius for cut in ring radius
+    uint16_t fSizeBox;       // Size of the search box (side length in units of pixels)
+    double   fCut;           // Cleaning level (sigma above noise)
+
+    int32_t fNumDetectedRings;
+
+    Ring fCenter;
+    std::vector<Ring> fRings;
+
+    void CalcCenters(const std::vector<Led> &leds, float min, float max);
+    int32_t CalcRings(std::vector<Led> &leds, float min=-1, float max=-1);
+    const Ring &GetCenter() const { return fCenter; }
+
+public:
+    MCaos() : fMinRadius(236.7), fMaxRadius(238.6), fSizeBox(19), fCut(3.5)
+    {
+    }
+
+    ~MCaos()
+    {
+    }
+
+    void AddPosition(float x, float y, float phi)
+    {
+        fPositions.push_back(Led(x, y, phi));
+    }
+
+    void ReadResources(const char *name="leds.txt");
+
+    void SetMinNumberLeds(int16_t n)
+    {
+	fMinNumberLeds = n;
+    }
+
+    void SetMinRadius(double min) { fMinRadius=min; }
+    void SetMaxRadius(double max) { fMaxRadius=max; }
+
+    int32_t GetNumDetectedLEDs() const  { return fLeds.size(); }
+    int32_t GetNumDetectedRings() const { return fNumDetectedRings; }
+
+    Ring Run(uint8_t *img);
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/MGImage.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MGImage.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MGImage.cc	(revision 18732)
@@ -0,0 +1,463 @@
+//
+// This File contains the definition of the MGImage-class
+//
+//   Author: Thomas Bretz
+//   Version: V1.0 (1-8-2000)
+//
+// x11/src/GX11Gui.cxx
+//
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// MGImage
+//
+// If sync-mode is enabled the Redraw function is secured by a mutex (ignore
+// error messages about it comming from root) This has the advantage that
+// if you use a timer for screen update reading and writing the image is
+// synchronized. In this way you don't get flickering half images.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include "MGImage.h"
+
+#include <iostream>
+
+#include <TGX11.h>
+#include <TMutex.h>
+
+#include <TMath.h>
+
+//#include "MLog.h"
+//#include "MLogManip.h"
+
+using namespace std;
+
+MGImage::MGImage(const TGWindow* p, UInt_t w, UInt_t h, UInt_t options, ULong_t back)
+    : TGFrame(p, w, h, options, back), fWidth(w), fHeight(h)
+{
+    // p = pointer to MainFrame (not owner)
+    // w = width of frame
+    // h = width of frame
+
+    //
+    // Creat drawing semaphore
+    //
+    fMuxPixmap = new TMutex;
+
+    Resize(GetWidth(), GetHeight());
+
+    //
+    // create empty pixmap
+    //
+    fDefGC  = gVirtualX->CreateGC(fId, 0);
+    fImage  = (XImage*)gVirtualX->CreateImage(fWidth, fHeight);
+
+    cout << "Detected Color Depth: " << gVirtualX->GetDepth() << endl;
+}
+
+MGImage::~MGImage()
+{
+//    if (fMuxPixmap->Lock()==13)
+//        cout << "MGImage::~MGImage - mutex is already locked by this thread" << endl;
+
+    cout << "Deleting MGImage..." << endl;
+
+    gVirtualX->DeleteGC(fDefGC);
+    gVirtualX->DeleteImage((Drawable_t)fImage);
+
+    //cout << fMuxPixmap->UnLock() << endl;
+
+    delete fMuxPixmap;
+
+    cout << "MGImage destroyed." << endl;
+}
+
+void MGImage::DoRedraw()
+{
+    if (TestBit(kSyncMode))
+        while (fMuxPixmap->Lock()==13)
+            usleep(1);
+
+    //    gVirtualX->DrawLine(fId, fDefGC, 0, 0, fWidth+2, 0);
+    //    gVirtualX->DrawLine(fId, fDefGC, 0, 0, 0, fHeight+2);
+    //    gVirtualX->DrawLine(fId, fDefGC, fWidth+2, 0,  fWidth+2, fHeight+2);
+    //    gVirtualX->DrawLine(fId, fDefGC, 0, fHeight+2, fWidth+2, fHeight+2);
+
+    //    if (TestBit(kNeedRedraw))
+    {
+        gVirtualX->PutImage(fId, fDefGC, (Drawable_t)fImage, 0, 0, 0, 0,
+                            fWidth, fHeight);
+        ResetBit(kNeedRedraw);
+    }
+
+    if (TestBit(kSyncMode))
+        if (fMuxPixmap->UnLock()==13)
+            cout << "MGImage::DoRedraw - tried to unlock mutex locked by other thread." << endl;
+}
+
+void MGImage::DrawImg16(unsigned short *d, char *s, char *e)
+{
+    // d=destination, s=source, e=end
+    // rrrrrggg gggbbbbb
+    //
+    while (s<e)
+    {
+        //         11111100    11111000      11111000
+        // *d++ = (*s&0xfc) | (*s&0xf8)<<5 | (*s&0xf8)<<11;
+
+        //      11111000       11111100       11111000
+        *d++ = (*s&0xf8)<<8 | (*s&0xfc)<<3 | (*s>>3);
+        s++;
+    }
+}
+
+void MGImage::DrawImg24(char *d, char *s, char *e)
+{
+    // d=destination, s=source, e=end
+    // rrrrrrrr gggggggg bbbbbbbb aaaaaaaa
+    //
+    while (s<e)
+    {
+        *d++ = *s;
+        *d++ = *s;
+        *d++ = *s++;
+        d++;
+    }
+}
+
+void MGImage::DrawImg(const byte *buffer)
+{
+    if (TestBit(kSyncMode))
+        while (fMuxPixmap->Lock()==13)
+            usleep(1);
+    else
+    {
+        const Int_t rc = fMuxPixmap->Lock();
+        if (rc==13)
+            cout << "MGImage::DrawImg - mutex is already locked by this thread" << endl;
+        if (rc)
+            return;
+    }
+
+    switch (gVirtualX->GetDepth())
+    {
+    case 8:
+        memcpy(fImage->data, buffer, fWidth*fHeight);
+        break;
+    case 16:
+        DrawImg16((unsigned short*)fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
+        break;
+    case 24:
+        DrawImg24(fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
+        break;
+    default:
+        cout << "Sorry, " << gVirtualX->GetDepth() << "bit color depth not yet implemented." << endl;
+    }
+
+    SetBit(kNeedRedraw);
+
+    if (fMuxPixmap->UnLock()==13)
+        cout << "MGImage::DrawImage - tried to unlock mutex locked by other thread." << endl;
+}
+
+void MGImage::DrawColImg16(unsigned short *d, char *s1, char *s2, char *e)
+{
+    // d=destination, s1=source1, s2=source2, e=end
+    // d:  rrrrrggg gggbbbbb
+    // s2:          00rrggbb
+    //
+    while (s1<e)
+    {
+        if (*s2)
+        {    
+            //      00000011   00001100        00110000
+            //*d++ = (*s2&0x3) | (*s2&0xb)<<3 | (*s2&0x30)<<7;
+            *d++ = (*s2&0x3)<<3 | (*s2&0xb)<<6 | (*s2&0x30)<<10;
+        }
+        else
+        {
+            //      11111100     11111000        11111100
+            *d++ = (*s1&0xfc) | (*s1&0xf8)<<5 | (*s1&0xfc)<<11;
+        }
+        s1++;
+        s2++;
+    }
+}
+
+void MGImage::DrawColImg24(char *d, char *s1, char *s2, char *e)
+{
+    // d=destination, s1=source1, s2=source2, e=end
+    while (s1<e)
+    {
+        if (*s2)
+        {
+            *d++ = ((*s2>>4)&0x3)*85;
+            *d++ = ((*s2>>2)&0x3)*85;
+            *d++ = ((*s2++ )&0x3)*85;
+            d++;
+            s1++;
+        }
+        else
+        {
+            *d++ = *s1;
+            *d++ = *s1;
+            *d++ = *s1++;
+            d++;
+            s2++;
+        }
+    }
+}
+
+void MGImage::DrawColImg(const byte *gbuf, const byte *cbuf)
+{
+    if (TestBit(kSyncMode))
+        while (fMuxPixmap->Lock()==13)
+            usleep(1);
+    else
+    {
+        const Int_t rc = fMuxPixmap->Lock();
+        if (rc==13)
+            cout << "MGImage::DrawColImg - mutex is already locked by this thread" << endl;
+        if (rc)
+            return;
+    }
+
+    // FROM libAfterImage:
+    // -------------------
+    //#define ALPHA_TRANSPARENT      	0x00
+    //#define ALPHA_SEMI_TRANSPARENT 	0x7F
+    //#define ALPHA_SOLID            	0xFF
+    // * Lowermost 8 bits - Blue channel
+    // * bits  8 to 15    - Green channel
+    // * bits 16 to 23    - Red channel
+    // * bits 24 to 31    - Alpha channel
+    //#define ARGB32_White    		0xFFFFFFFF
+    //#define ARGB32_Black    		0xFF000000
+
+    // FIXME: This loop depends on the screen color depth
+    switch (gVirtualX->GetDepth())
+    {
+    case 16:
+        DrawColImg16((unsigned short*)fImage->data, (char*)gbuf, (char*)cbuf, (char*)(gbuf+fWidth*fHeight));
+        break;
+    case 24:
+        DrawColImg24(fImage->data, (char*)gbuf, (char*)cbuf, (char*)(gbuf+fWidth*fHeight));
+        break;
+    default:
+        cout << "Sorry, " << gVirtualX->GetDepth() << "bit color depth not yet implemented." << endl;
+    }
+
+    SetBit(kNeedRedraw);
+
+    if (fMuxPixmap->UnLock()==13)
+        cout << "MGImage::DrawColImage - tried to unlock mutex locked by other thread." << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+// Convert root colors to arbitrary bitmap coordinates
+//
+UChar_t MGImage::Color(int col)
+{
+    switch (col)
+    {
+    case kBlack:  return 0;
+    case kWhite:  return 0xff;
+    case kYellow: return 0x0f;
+    case kRed:    return 2;
+    case kGreen:  return 2<<2;
+    case kBlue:   return 2<<4;
+    default:
+        return 0;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a line into the buffer (size w*h) from (x1, y1) to (x2, y2) with
+// the color col and the line style style (default: solid)
+//
+void MGImage::DrawLine(UChar_t *buf, int w, int h, Float_t x1, Float_t y1, Float_t x2, Float_t y2, UChar_t col, Int_t style)
+{
+    const Int_t    step = style==kSolid?1:3;
+    const Double_t len  = TMath::Hypot(x2-x1, y2-y1);
+    const Double_t dx   = (x2-x1)/len*step;
+    const Double_t dy   = (y2-y1)/len*step;
+
+    Double_t x = x1;
+    Double_t y = y1;
+
+    for (int i=0; i<len; i+=step)
+    {
+        x+= dx;
+        y+= dy;
+
+        const Int_t iy = TMath::Nint(y);
+        if (iy<0 || iy>=h)
+            continue;
+
+        const Int_t ix = TMath::Nint(x);
+        if (ix<0 || ix>=w)
+            continue;
+
+        buf[ix+iy*w] = col;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a box into the buffer (size w*h) from (x1, y1) to (x2, y2) with
+// the color col and the line style style (default: solid)
+//
+void MGImage::DrawBox(UChar_t *buf, int w, int h, Float_t x1, Float_t y1, Float_t x2, Float_t y2, UChar_t col, Int_t style)
+{
+    DrawLine(buf, w, h, x1, y1, x2, y1, col, style);
+    DrawLine(buf, w, h, x1, y2, x2, y1, col, style);
+    DrawLine(buf, w, h, x1, y1, x1, y2, col, style);
+    DrawLine(buf, w, h, x2, y1, x2, y2, col, style);
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a hexagon into the buffer (size w*h) around (x, y) with radius r and
+// the color col.
+//
+void MGImage::DrawHexagon(UChar_t *buf, int w, int h, Float_t px, Float_t py, Float_t d, UChar_t col, Int_t style)
+{
+    const Int_t np = 6;
+
+    const Double_t dy[np+1] = { .5   , 0.    , -.5   , -.5   , 0.    ,  .5   , .5    };
+    const Double_t dx[np+1] = { .2886,  .5772,  .2886, -.2886, -.5772, -.2886, .2886 };
+
+    //
+    //  calculate the positions of the pixel corners
+    //
+    Double_t x[np+1], y[np+1];
+    for (Int_t i=0; i<np+1; i++)
+    {
+        x[i] = px + dx[i]*d;
+        y[i] = py + dy[i]*d;
+    }
+
+    for (int i=0; i<6; i++)
+        DrawLine(buf, w, h, x[i], y[i], x[i+1], y[i+1], col, style);
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a circle into the buffer (size w*h) around (x, y) with radius r and
+// the color col.
+//
+void MGImage::DrawCircle(UChar_t *buf, int w, int h, Float_t x, Float_t y, Float_t r, UChar_t col)
+{
+    const Int_t n = TMath::Nint(sqrt(2.)*r*TMath::Pi()/2);
+    for (int i=0; i<n-1; i++)
+    {
+        const Double_t angle = TMath::TwoPi()*i/n;
+
+        const Double_t dx = r*cos(angle);
+        const Double_t dy = r*sin(angle);
+
+        const Int_t x1 = TMath::Nint(x+dx);
+        const Int_t x2 = TMath::Nint(x-dx);
+
+        const Int_t y1 = TMath::Nint(y+dy);
+        if (y1>=0 && y1<h)
+        {
+            if (x1>=0 && x1<w)
+                buf[x1+y1*w] = col;
+
+            if (x2>=0 && x2<w)
+                buf[x2+y1*w] = col;
+        }
+
+        const Int_t y2 = TMath::Nint(y-dy);
+        if (y2>=0 && y2<h)
+        {
+            if (x1>=0 && x1<w)
+                buf[x1+y2*w] = col;
+
+            if (x2>=0 && x2<w)
+                buf[x2+y2*w] = col;
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a dot into the buffer (size w*h) at (x, y) with color col.
+//
+void MGImage::DrawDot(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, UChar_t col)
+{
+    const Int_t x1 = TMath::Nint(cx);
+    const Int_t y1 = TMath::Nint(cy);
+
+    if (x1>=0 && y1>=0 && x1<w && y1<h)
+        buf[x1+y1*w] = col;
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw a line into the buffer. The TObject must be a TLine.
+// Currently only solid and non sloid line are supported.
+//
+/*
+void MGImage::DrawLine(TObject *o, UChar_t *buf, int w, int h, Double_t scale)
+{
+    TLine *l = dynamic_cast<TLine*>(o);
+    if (!l)
+        return;
+
+    const Double_t x1 = 0.5*w-(l->GetX1()/scale);
+    const Double_t x2 = 0.5*w-(l->GetX2()/scale);
+    const Double_t y1 = 0.5*h-(l->GetY1()/scale);
+    const Double_t y2 = 0.5*h-(l->GetY2()/scale);
+
+    const Int_t col = Color(l->GetLineColor());
+    DrawLine(buf, w, h, x1, y1, x2, y2, col, l->GetLineStyle());
+}
+*/
+void MGImage::DrawMultiply(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, Float_t size, UChar_t col)
+{
+    DrawLine(buf, w, h, cx-size, cy-size, cx+size, cy+size, col);
+    DrawLine(buf, w, h, cx+size, cy-size, cx-size, cy+size, col);
+}
+
+void MGImage::DrawCross(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, Float_t size, UChar_t col)
+{
+    DrawLine(buf, w, h, cx-size, cy, cx+size, cy, col);
+    DrawLine(buf, w, h, cx, cy-size, cx, cy+size, col);
+}
+
+// --------------------------------------------------------------------------
+//
+// Draw marker into the buffer. The TObject must be a TMarker.
+// Currently kCircle, kMultiply and KDot are supported.
+/*
+void MGImage::DrawMarker(TObject *o, UChar_t *buf, int w, int h, Double_t scale)
+{
+    TMarker *m = dynamic_cast<TMarker*>(o);
+    if (!m)
+        return;
+
+    Double_t x = 0.5*w-(m->GetX()/scale);
+    Double_t y = 0.5*h-(m->GetY()/scale);
+
+    Int_t col = Color(m->GetMarkerColor());
+
+    switch (m->GetMarkerStyle())
+    {
+    case kCircle:
+        DrawCircle(buf, w, h, x, y, m->GetMarkerSize()*2+1, col);
+        break;
+    case kDot:
+        DrawDot(buf, w, h, x, y, col);
+        break;
+    case kMultiply:
+        DrawMultiply(buf, w, h, x, y, m->GetMarkerSize()*2+1, col);
+        break;
+    case kCross:
+        DrawCross(buf, w, h, x, y, m->GetMarkerSize()*2+1, col);
+        break;
+    }
+}
+*/
Index: branches/FACT++_part_filenames/drive/MGImage.h
===================================================================
--- branches/FACT++_part_filenames/drive/MGImage.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MGImage.h	(revision 18732)
@@ -0,0 +1,66 @@
+#ifndef MGIMAGE_H
+#define MGIMAGE_H
+
+//
+// This File contains the declaration of the MGImage-class
+//
+//   Author: Thomas Bretz
+//   Version: V1.0 (1-8-2000)
+
+#ifndef ROOT_TGFrame
+#include <TGFrame.h>
+#endif
+#ifndef ROOT_TGX11
+#include <TGX11.h>
+#endif
+
+class TMutex;
+
+typedef unsigned char byte;
+
+class MGImage : public TGFrame
+{
+    XImage *fImage;
+
+    GContext_t fDefGC;
+    //Pixmap_t   fPixmap;
+
+    UInt_t fWidth;
+    UInt_t fHeight;
+
+    TMutex *fMuxPixmap; //! test
+
+    enum
+    {
+        kNeedRedraw = BIT(17),
+        kSyncMode   = BIT(18)
+    };
+
+    void DrawImg16(unsigned short *d, char *s, char *e);
+    void DrawImg24(char *d, char *s, char *e);
+    void DrawColImg16(unsigned short *d, char *s1, char *s2, char *e);
+    void DrawColImg24(char *d, char *s1, char *s2, char *e);
+
+public:
+    MGImage(const TGWindow* p, UInt_t w, UInt_t h, UInt_t options = kSunkenFrame, ULong_t back = fgDefaultFrameBackground);
+    ~MGImage();
+
+    void DoRedraw();
+
+    void DrawImg(const byte *buffer);
+    void DrawColImg(const byte *gbuf, const byte *cbuf);
+
+    void EnableSyncMode()  { SetBit(kSyncMode); }
+    void DisableSyncMode() { ResetBit(kSyncMode); }
+
+    static UChar_t Color(int col);
+    static void    DrawCircle(UChar_t *buf, int w, int h, Float_t x, Float_t y, Float_t r, UChar_t col);
+    static void    DrawHexagon(UChar_t *buf, int w, int h, Float_t x, Float_t y, Float_t r, UChar_t col, Int_t style=1);
+    static void    DrawLine(UChar_t *buf, int w, int h, Float_t x1, Float_t y1, Float_t x2, Float_t y2, UChar_t col, Int_t style=1);
+    static void    DrawBox(UChar_t *buf, int w, int h, Float_t x1, Float_t y1, Float_t x2, Float_t y2, UChar_t col, Int_t style=1);
+    static void    DrawDot(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, UChar_t col);
+    static void    DrawMultiply(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, Float_t size, UChar_t col);
+    static void    DrawCross(UChar_t *buf, int w, int h, Float_t cx, Float_t cy, Float_t size, UChar_t col);
+};
+
+#endif // MGIMAGE_H
Index: branches/FACT++_part_filenames/drive/MPointing.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MPointing.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MPointing.cc	(revision 18732)
@@ -0,0 +1,840 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz, 2003 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2007
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MPointing
+// =========
+//
+// This is the class used for the pointing correction done in the MAGIC
+// drive software cosy. NEVER CHANGE IT WITHOUT CONTACTING THE AUTHOR FIRST!
+//
+// Variables/Coefficients
+// ----------------------
+//
+//    Double_t fIe   ; // [rad] Index Error in Elevation
+//    Double_t fIa   ; // [rad] Index Error in Azimuth
+//
+//    Double_t fFlop ; // [rad] Vertical Sag
+//     * do not use if not data: Zd<0
+//
+//    Double_t fNpae ; // [rad] Az-El Nonperpendicularity
+//
+//    Double_t fCa   ; // [rad] Left-Right Collimation Error
+//
+//    Double_t fAn   ; // [rad] Azimuth Axis Misalignment (N-S)
+//    Double_t fAw   ; // [rad] Azimuth Axis Misalignment (E-W)
+//
+//    Double_t fTf   ; // [rad] Tube fluxture (sin)
+//     * same as ecec if no data: Zd<0
+//    Double_t fTx   ; // [rad] Tube fluxture (tan)
+//     * do not use with NPAE if no data: Zd<0
+//
+//    Double_t fNrx  ; // [rad] Nasmyth rotator displacement, horizontan
+//    Double_t fNry  ; // [rad] Nasmyth rotator displacement, vertical
+//
+//    Double_t fCrx  ; // [rad] Alt/Az Coude Displacement (N-S)
+//    Double_t fCry  ; // [rad] Alt/Az Coude Displacement (E-W)
+//
+//    Double_t fEces ; // [rad] Elevation Centering Error (sin)
+//    Double_t fAces ; // [rad] Azimuth Centering Error (sin)
+//    Double_t fEcec ; // [rad] Elevation Centering Error (cos)
+//    Double_t fAcec ; // [rad] Azimuth Centering Error (cos)
+//
+//    Double_t fMagic1;// [rad] MAGIC culmination hysteresis
+//    Double_t fMagic2;// [rad] undefined
+//
+//    Double_t fDx;    // [rad] X-offset in camera (for starguider calibration)
+//    Double_t fDy;    // [rad] Y-offset in camera (for starguider calibration)
+//
+//
+//  Class Version 2:
+//  ----------------
+//    + fPx
+//    + fPy
+//    + fDx
+//    + fDy
+//
+//
+////////////////////////////////////////////////////////////////////////////
+#include "MPointing.h"
+
+#include <fstream>
+
+#include <TMinuit.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#include "MTime.h"
+
+ClassImp(AltAz);
+ClassImp(ZdAz);
+ClassImp(RaDec);
+ClassImp(MPointing);
+
+using namespace std;
+
+#undef DEBUG
+//#define DEBUG(txt) txt
+#define DEBUG(txt)
+
+void ZdAz::Round()
+{
+    fX = TMath::Nint(fX);
+    fY = TMath::Nint(fY);
+}
+
+void ZdAz::Abs()
+{
+    fX = TMath::Abs(fX);
+    fY = TMath::Abs(fY);
+}
+
+void MPointing::Init(const char *name, const char *title)
+{
+    fName  = name  ? name  : "MPointing";
+    fTitle = title ? title : "Pointing correction model for the MAGIC telescope";
+
+    fCoeff = new Double_t*[kNumPar];
+    fNames = new TString[kNumPar];
+    fDescr = new TString[kNumPar];
+
+    fCoeff[kIA]     = &fIa;      fNames[kIA]     = "IA";
+    fCoeff[kIE]     = &fIe;      fNames[kIE]     = "IE";
+    fCoeff[kFLOP]   = &fFlop;    fNames[kFLOP]   = "FLOP";
+    fCoeff[kAN]     = &fAn;      fNames[kAN]     = "AN";
+    fCoeff[kAW]     = &fAw;      fNames[kAW]     = "AW";
+    fCoeff[kNPAE]   = &fNpae;    fNames[kNPAE]   = "NPAE";
+    fCoeff[kCA]     = &fCa;      fNames[kCA]     = "CA";
+    fCoeff[kTF]     = &fTf;      fNames[kTF]     = "TF";
+    fCoeff[kTX]     = &fTx;      fNames[kTX]     = "TX";
+    fCoeff[kECES]   = &fEces;    fNames[kECES]   = "ECES";
+    fCoeff[kACES]   = &fAces;    fNames[kACES]   = "ACES";
+    fCoeff[kECEC]   = &fEcec;    fNames[kECEC]   = "ECEC";
+    fCoeff[kACEC]   = &fAcec;    fNames[kACEC]   = "ACEC";
+    fCoeff[kNRX]    = &fNrx;     fNames[kNRX]    = "NRX";
+    fCoeff[kNRY]    = &fNry;     fNames[kNRY]    = "NRY";
+    fCoeff[kCRX]    = &fCrx;     fNames[kCRX]    = "CRX";
+    fCoeff[kCRY]    = &fCry;     fNames[kCRY]    = "CRY";
+    fCoeff[kMAGIC1] = &fMagic1;  fNames[kMAGIC1] = "MAGIC1";
+    fCoeff[kMAGIC2] = &fMagic2;  fNames[kMAGIC2] = "MAGIC2";
+    fCoeff[kPX]     = &fPx;      fNames[kPX]     = "PX";
+    fCoeff[kPY]     = &fPy;      fNames[kPY]     = "PY";
+    fCoeff[kDX]     = &fDx;      fNames[kDX]     = "DX";
+    fCoeff[kDY]     = &fDy;      fNames[kDY]     = "DY";
+
+    fDescr[kIA]     =  "Index Error Azimuth";
+    fDescr[kIE]     =  "Index Error Zenith Distance";
+    fDescr[kFLOP]   =  "Vertical Sag";
+    fDescr[kAN]     =  "Azimuth Axis Misalignment (N-S)";
+    fDescr[kAW]     =  "Azimuth Axis Misalignment (E-W)";
+    fDescr[kNPAE]   =  "Az-El Nonperpendicularity";
+    fDescr[kCA]     =  "Left-Right Collimation Error";
+    fDescr[kTF]     =  "Tube fluxture (sin)";
+    fDescr[kTX]     =  "Tube fluxture (tan)";
+    fDescr[kECES]   =  "Elevation Centering Error (sin)";
+    fDescr[kACES]   =  "Azimuth Centering Error (sin)";
+    fDescr[kECEC]   =  "Elevation Centering Error (cos)";
+    fDescr[kACEC]   =  "Azimuth Centering Error (cos)";
+    fDescr[kNRX]    =  "Nasmyth rotator displacement (horizontal)";
+    fDescr[kNRY]    =  "Nasmyth rotator displacement (vertical)";
+    fDescr[kCRX]    =  "Alt/Az Coude Displacement (N-S)";
+    fDescr[kCRY]    =  "Alt/Az Coude Displacement (E-W)";
+    fDescr[kMAGIC1] =  "MAGIC culmination hysteresis";
+    fDescr[kMAGIC2] =  "n/a";
+    fDescr[kPX]     =  "Starguider calibration fixed offset x";
+    fDescr[kPY]     =  "Starguider calibration fixed offset y";
+    fDescr[kDX]     =  "Starguider calibration additional offset dx";
+    fDescr[kDY]     =  "Starguider calibration additional offset dy";
+}
+
+void MPointing::Reset()
+{
+    Clear();
+}
+
+Bool_t MPointing::Load(const char *name)
+{
+    /*
+     ! MMT 1987 July 8
+     ! T   36   7.3622   41.448  -0.0481
+     !   IA        -37.5465    20.80602
+     !   IE        -13.9180     1.25217
+     !   NPAE       +7.0751    26.44763
+     !   CA         -6.9149    32.05358
+     !   AN         +0.5053     1.40956
+     !   AW         -2.2016     1.37480
+     ! END
+     */
+
+    ifstream fin(name);
+    if (!fin)
+    {
+        *fLog << err << "ERROR - Cannot open file '" << name << "'" << endl;
+        return kFALSE;
+    }
+
+    char c;
+    while (fin && fin.get()!='\n');
+    fin >> c;
+
+    if (c!='S' && c!='s')
+    {
+        *fLog << err << "Error: This in not a model correcting the star position (" << c << ")" << endl;
+        return kFALSE;
+    }
+
+    Clear();
+
+    cout << endl;
+
+    Double_t val;
+    fin >> val;
+    *fLog << inf;
+    //*fLog << "Number of observed stars: " << val << endl;
+    fin >> val;
+    //*fLog << "Sky RMS: " << val << "\"" << endl;
+    fin >> val;
+    //*fLog << "Refraction Constant A: " << val << "\"" << endl;
+    fin >> val;
+    //*fLog << "Refraction Constant B: " << val << "\"" << endl;
+
+    *fLog << endl;
+
+    *fLog << "  & = Name            Value                 Sigma " << endl;
+    *fLog << "--------------------------------------------------" << endl;
+
+    while (fin)
+    {
+        TString str;
+        fin >> str;
+        if (!fin)
+        {
+            *fLog << err << "ERROR - Reading file " << name << endl;
+            return kFALSE;
+        }
+
+        str = str.Strip(TString::kBoth);
+
+        if (str=="END")
+            break;
+
+        TString sout;
+
+        if (str[0]=='#')
+            continue;
+
+        if (str[0]=='&')
+        {
+            sout += " & ";
+            str.Remove(0);
+        }
+        else
+            sout += "   ";
+
+        if (str[1]=='=')
+        {
+            sout += "=  ";
+            str.Remove(0);
+        }
+        else
+            sout += "   ";
+
+        fin >> val;
+
+        sout += str;
+        sout += '\t';
+        sout += Form("%11f", val);
+        sout += UTF8::kDeg;
+        sout += "     \t";
+        val *= TMath::DegToRad();
+
+        // Find parameter
+        Int_t n = -1;
+        for (int i=0; i<kNumPar; i++)
+            if (str==fNames[i])
+            {
+                n = i;
+                *fCoeff[i] = val;
+                break;
+            }
+
+        fin >> val;
+        sout += Form("%9f%s", val, UTF8::kDeg);
+
+        if (*fCoeff[n]!=0 || val>0)
+            *fLog << sout << endl;
+
+        if (!fin)
+        {
+            *fLog << err << "ERROR - Reading line " << str << endl;
+            return kFALSE;
+        }
+
+        if (n<0)
+        {
+            *fLog << warn << "WARNING - Parameter " << str << " unknown." << endl;
+            continue;
+        }
+
+        // corresponding error
+        fError[n] = val*TMath::DegToRad();
+    }
+    *fLog << endl;
+
+    fName = name;
+
+    return kTRUE;
+}
+
+Bool_t MPointing::Save(const char *name)
+{
+    /*
+     ! MMT 1987 July 8
+     ! T   36   7.3622   41.448  -0.0481
+     !   IA        -37.5465    20.80602
+     !   IE        -13.9180     1.25217
+     !   NPAE       +7.0751    26.44763
+     !   CA         -6.9149    32.05358
+     !   AN         +0.5053     1.40956
+     !   AW         -2.2016     1.37480
+     ! END
+     */
+
+    ofstream fout(name);
+    if (!fout)
+    {
+        cout << "Error: Cannot open file '" << name << "'" << endl;
+        return kFALSE;
+    }
+
+    MTime t;
+    t.Now();
+
+    fout << "MAGIC1 " << t << endl;
+    fout << "S   00   000000   000000  0000000" << endl;
+    fout << setprecision(8);
+    for (int i=0; i<kNumPar; i++)
+    {
+        fout << " " << setw(6) << GetVarName(i) << " ";
+        fout << setw(13) << *fCoeff[i]*kRad2Deg << "   ";
+        fout << setw(11) << fError[i]*kRad2Deg << endl;
+    }
+    fout << "END" << endl;
+
+    fName = name;
+
+    return kTRUE;
+}
+
+Double_t MPointing::Sign(Double_t val, Double_t alt)
+{
+    // Some pointing corrections are defined as Delta ZA, which
+    // is (P. Wallace) defined [0,90]deg while Alt is defined
+    // [0,180]deg
+    return (TMath::Pi()/2-alt < 0 ? -val : val);
+}
+
+AltAz MPointing::AddOffsets(const AltAz &aa) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p = aa;
+
+    const AltAz I(fIe, fIa);
+    p += I;
+
+    return p;
+}
+
+ZdAz MPointing::AddOffsets(const ZdAz &zdaz) const
+{
+    AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az());
+
+    AltAz c = AddOffsets(p);
+
+    return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
+}
+
+TVector3 MPointing::AddOffsets(const TVector3 &v) const
+{
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = AddOffsets(p);
+
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
+AltAz MPointing::SubtractOffsets(const AltAz &aa) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p = aa;
+
+    const AltAz I(fIe, fIa);
+    p -= I;
+
+    return p;
+}
+
+ZdAz MPointing::SubtractOffsets(const ZdAz &zdaz) const
+{
+    AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az());
+
+    AltAz c = SubtractOffsets(p);
+
+    return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
+}
+
+TVector3 MPointing::SubtractOffsets(const TVector3 &v) const
+{
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = SubtractOffsets(p);
+
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
+AltAz MPointing::CalcAnAw(const AltAz &p, Int_t sign) const
+{
+    // Corrections for AN and AW without approximations
+    // as done by Patrick Wallace. The approximation cannot
+    // be used for MAGIC because the correctioon angle
+    // AW (~1.5deg) is not small enough.
+
+    // Vector in cartesian coordinates
+    TVector3 v1;
+
+    // Set Azimuth and Elevation
+    v1.SetMagThetaPhi(1, TMath::Pi()/2-p.Alt(), p.Az());
+
+
+    TVector3 v2(v1);
+//    cout << sign << endl;
+
+//    cout << "v1: " << v1.Theta()*TMath::RadToDeg() << " " << v1.Phi()*TMath::RadToDeg() << endl;
+
+    // Rotate around the x- and y-axis
+    v1.RotateY(sign*fAn);
+    v1.RotateX(sign*fAw);
+
+//    cout << "v1: " << v1.Theta()*TMath::RadToDeg() << " " << v1.Phi()*TMath::RadToDeg() << endl;
+//    cout << "v2: " << v2.Theta()*TMath::RadToDeg() << " " << v2.Theta()*TMath::RadToDeg() << endl;
+
+   // cout << "dv: " << (v2.Theta()-v1.Theta())*TMath::RadToDeg() << " " << (v2.Phi()-v1.Phi())*TMath::RadToDeg() << endl;
+
+    Double_t dalt = v1.Theta()-v2.Theta();
+    Double_t daz  = v1.Phi()  -v2.Phi();
+
+    //cout << dalt*TMath::RadToDeg() << " " << daz*TMath::RadToDeg() << endl;
+
+    if (daz>TMath::Pi())
+        daz -= TMath::TwoPi();
+    if (daz<-TMath::Pi())
+        daz += TMath::TwoPi();
+
+//    if (daz>TMath::Pi()/2)
+//    {
+//    }
+
+    AltAz d(dalt, daz);
+    return d;
+
+    // Calculate Delta Azimuth and Delta Elevation
+    /*
+    AltAz d(TMath::Pi()/2-v1.Theta(), v1.Phi());
+
+    cout << "p :  " << p.Alt()*TMath::RadToDeg() << " " << p.Az()*TMath::RadToDeg() << endl;
+    cout << "d :  " << d.Alt()*TMath::RadToDeg() << " " << d.Az()*TMath::RadToDeg() << endl;
+    d -= p;
+    cout << "d-p: " << d.Alt()*TMath::RadToDeg() << " " << d.Az()*TMath::RadToDeg() << endl;
+    d *= sign;
+    cout << "d* : " << d.Alt()*TMath::RadToDeg() << " " << d.Az()*TMath::RadToDeg() << endl;
+
+
+    cout << "p2:  " << 90-p.Alt()*TMath::RadToDeg() << " " << p.Az()*TMath::RadToDeg() << endl;
+    cout << "d2:  " << 90-d.Alt()*TMath::RadToDeg() << " " << d.Az()*TMath::RadToDeg() << endl;
+
+    Int_t s1 = 90-d.Alt()*TMath::RadToDeg() < 0 ? -1 : 1;
+    Int_t s2 = 90-p.Alt()*TMath::RadToDeg() < 0 ? -1 : 1;
+
+
+    if (s1 != s2)
+    {
+        //90-d.Alt() <-- -90+d.Alt()
+
+        d.Alt(d.Alt()-TMath::Pi());
+        cout << "Alt-" << endl;
+    }
+    cout << "d': " << 90-d.Alt()*TMath::RadToDeg() << " " << d.Az()*TMath::RadToDeg() << endl;*/
+ /*
+    // Fix 'direction' of output depending on input vector
+    if (TMath::Pi()/2-sign*p.Alt()<0)
+    {
+        d.Alt(d.Alt()-TMath::Pi());
+        cout << "Alt-" << endl;
+    }
+    //if (TMath::Pi()/2-sign*p.Alt()>TMath::Pi())
+    //{
+    //    d.Alt(TMath::Pi()-d.Alt());
+    //    cout << "Alt+" << endl;
+    //}
+
+    // Align correction into [-180,180]
+    while (d.Az()>TMath::Pi())
+    {
+        d.Az(d.Az()-TMath::Pi()*2);
+        cout << "Az-" << endl;
+    }
+    while (d.Az()<-TMath::Pi())
+    {
+        d.Az(d.Az()+TMath::Pi()*2);
+        cout << "Az+" << endl;
+    }
+   */
+    return d;
+}
+
+
+AltAz MPointing::Correct(const AltAz &aa) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p = aa;
+
+    DEBUG(cout << setprecision(16));
+    DEBUG(cout << "Bend7: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz CRX(-fCrx*sin(p.Az()-p.Alt()),  fCrx*cos(p.Az()-p.Alt())/cos(p.Alt()));
+    const AltAz CRY(-fCry*cos(p.Az()-p.Alt()), -fCry*sin(p.Az()-p.Alt())/cos(p.Alt()));
+    p += CRX;
+    p += CRY;
+
+    DEBUG(cout << "Bend6: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz NRX(fNrx*sin(p.Alt()), -fNrx);
+    const AltAz NRY(fNry*cos(p.Alt()), -fNry*tan(p.Alt()));
+    p += NRX;
+    p += NRY;
+
+    DEBUG(cout << "Bend5: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz CES(-fEces*sin(p.Alt()), -fAces*sin(p.Az()));
+    const AltAz CEC(-fEcec*cos(p.Alt()), -fAcec*cos(p.Az()));
+    p += CES;
+    p += CEC;
+
+    DEBUG(cout << "Bend4: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz TX(Sign(fTx/tan(p.Alt()), p.Alt()), 0);
+    const AltAz TF(Sign(fTf*cos(p.Alt()), p.Alt()), 0);
+    //p += TX;
+    p += TF;
+
+
+    DEBUG(cout << "Bend3: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    /*
+     //New Corrections for NPAE and CA:
+     TVector3 v(1.,1.,1.); // Vector in cartesian coordinates
+
+     //Set Azimuth and Elevation
+     v.SetPhi(p.Az());
+     v.SetTheta(TMath::Pi()/2-p.Alt());
+     //Rotation Vectors:
+     TVector3 vNpae(             cos(p.Az()),              sin(p.Az()),             0);
+     TVector3   vCa( -cos(p.Az())*cos(p.Alt()), -sin(p.Az())*cos(p.Alt()), sin(p.Alt()));
+     //Rotate around the vectors vNpae and vCa
+     v.Rotate(fNpae, vNpae);
+     v.Rotate(fCa,     vCa);
+
+     p.Az(v.Phi());
+     p.Alt(TMath::Pi()/2-v.Theta());
+     */
+
+    //Old correction terms for Npae and Ca:
+    const AltAz CA(0, -fCa/cos(p.Alt()));
+    p += CA;
+
+    const AltAz NPAE(0, -fNpae*tan(p.Alt()));
+    p += NPAE;
+
+    DEBUG(cout << "Bend2: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz ANAW(CalcAnAw(p, -1));
+    p += ANAW;
+
+    /* Old correction terms for An and Aw:
+     const AltAz AW( fAw*sin(p.Az()), -fAw*cos(p.Az())*tan(p.Alt()));
+     const AltAz AN(-fAn*cos(p.Az()), -fAn*sin(p.Az())*tan(p.Alt()));
+     p += AW;
+     p += AN;
+    */
+
+    DEBUG(cout << "Bend1: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz FLOP(Sign(fFlop, p.Alt()), 0);
+    p += FLOP;
+
+    const AltAz MAGIC1(fMagic1*TMath::Sign(1., sin(p.Az())), 0);
+    p += MAGIC1;
+
+    const AltAz I(fIe, fIa);
+    p += I;
+
+    DEBUG(cout << "Bend0: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    return p;
+}
+
+AltAz MPointing::CorrectBack(const AltAz &aa) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p = aa;
+
+    DEBUG(cout << setprecision(16));
+    DEBUG(cout << "Back0: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz I(fIe, fIa);
+    p -= I;
+
+    const AltAz MAGIC1(fMagic1*TMath::Sign(1., sin(p.Az())), 0);
+    p -= MAGIC1;
+
+    //const AltAz MAGIC1(fMagic1*sin(p.Az()), 0);
+    //p -= MAGIC1;
+
+    const AltAz FLOP(Sign(fFlop, p.Alt()), 0);
+    p -= FLOP;
+
+    DEBUG(cout << "Back1: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    /* Old correction terms for An and Aw:
+     const AltAz AN(-fAn*cos(p.Az()), -fAn*sin(p.Az())*tan(p.Alt()));
+     const AltAz AW( fAw*sin(p.Az()), -fAw*cos(p.Az())*tan(p.Alt()));
+     p -= AN;
+     p -= AW;
+     */
+
+    const AltAz ANAW(CalcAnAw(p, -1));
+    p -= ANAW;
+
+    DEBUG(cout << "Back2: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    //Old Correction terms for Npae and Ca:
+    const AltAz NPAE(0, -fNpae*tan(p.Alt()));
+    p -= NPAE;
+
+    const AltAz CA(0, -fCa/cos(p.Alt()));
+    p -= CA;
+
+    /*
+     //New Correction term for Npae and Ca:
+     TVector3 v2(1.,1.,1.); // Vector in cartesian coordinates
+     //Set Azimuth and Elevation
+     v2.SetPhi(p.Az());
+     v2.SetTheta(TMath::Pi()/2-p.Alt());
+     //Rotation Vectors:
+     TVector3 vNpae(             cos(p.Az()),              sin(p.Az()),             0);
+     TVector3   vCa( -cos(p.Az())*cos(p.Alt()), -sin(p.Az())*cos(p.Alt()), sin(p.Alt()));
+     //Rotate around the vectors vCa and vNpae
+     v2.Rotate(-fCa,     vCa);
+     v2.Rotate(-fNpae, vNpae);
+
+     p.Az(v2.Phi());
+     p.Alt(TMath::Pi()/2-v2.Theta());
+    */
+
+    DEBUG(cout << "Back3: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz TF(Sign(fTf*cos(p.Alt()), p.Alt()), 0);
+    const AltAz TX(Sign(fTx/tan(p.Alt()), p.Alt()), 0);
+    p -= TF;
+    //p -= TX;
+
+    DEBUG(cout << "Back4: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz CEC(-fEcec*cos(p.Alt()), -fAcec*cos(p.Az()));
+    const AltAz CES(-fEces*sin(p.Alt()), -fAces*sin(p.Az()));
+    p -= CEC;
+    p -= CES;
+
+    DEBUG(cout << "Back5: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz NRY(fNry*cos(p.Alt()), -fNry*tan(p.Alt()));
+    const AltAz NRX(fNrx*sin(p.Alt()), -fNrx);
+    p -= NRY;
+    p -= NRX;
+
+    DEBUG(cout << "Back6: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    const AltAz CRY(-fCry*cos(p.Az()-p.Alt()), -fCry*sin(p.Az()-p.Alt())/cos(p.Alt()));
+    const AltAz CRX(-fCrx*sin(p.Az()-p.Alt()),  fCrx*cos(p.Az()-p.Alt())/cos(p.Alt()));
+    p -= CRY;
+    p -= CRX;
+
+    DEBUG(cout << "Back7: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl);
+
+    return p;
+}
+
+ZdAz MPointing::Correct(const ZdAz &zdaz) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az());
+    AltAz c = Correct(p);
+    return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
+}
+
+TVector3 MPointing::Correct(const TVector3 &v) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = Correct(p);
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
+ZdAz MPointing::CorrectBack(const ZdAz &zdaz) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az());
+    AltAz c = CorrectBack(p);
+    return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
+}
+
+TVector3 MPointing::CorrectBack(const TVector3 &v) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = CorrectBack(p);
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
+void MPointing::SetParameters(const Double_t *par, Int_t n)
+{
+    Clear();
+
+    while (n--)
+        *fCoeff[n] = par[n]/kRad2Deg;
+}
+
+void MPointing::GetParameters(Double_t *par, Int_t n) const
+{
+    while (n--)
+        par[n] = *fCoeff[n]*kRad2Deg;
+}
+
+void MPointing::GetError(TArrayD &par) const
+{
+    par = fError;
+    for (int i=0; i<kNumPar; i++)
+        par[i] *= TMath::RadToDeg();
+}
+
+TVector2 MPointing::GetDxy() const
+{
+    return TVector2(fDx, fDy)*TMath::RadToDeg();
+}
+
+Double_t MPointing::GetPx() const
+{
+    return fPx*TMath::RadToDeg();
+}
+
+Double_t MPointing::GetPy() const
+{
+    return fPy*TMath::RadToDeg();
+}
+
+void MPointing::SetMinuitParameters(TMinuit &m, Int_t n) const
+{
+    if (n<0)
+        n = kNumPar;
+
+    Int_t ierflg = 0;
+
+    while (n--)
+        m.mnparm(n, fNames[n], *fCoeff[n]*kRad2Deg,  1, -360, 360, ierflg);
+}
+
+void MPointing::GetMinuitParameters(TMinuit &m, Int_t n)
+{
+    if (n<0 || n>m.GetNumPars())
+        n = m.GetNumPars();
+
+    while (n--)
+    {
+        m.GetParameter(n, *fCoeff[n], fError[n]);
+        *fCoeff[n] /= kRad2Deg;
+        fError[n]  /= kRad2Deg;
+    }
+}
+/*
+void FormatPar(TMinuit &m, Int_t n)
+{
+    Double_t par, err;
+    m.GetParameter(n, par, err);
+
+    int expp = (int)log10(par);
+    int expe = (int)log10(err);
+
+    if (err<2*pow(10, expe))
+        expe--;
+
+    Int_t exp = expe>expp ? expp : expe;
+
+    par = (int)(par/pow(10, exp)) * pow(10, exp);
+    err = (int)(err/pow(10, exp)) * pow(10, exp);
+
+    cout << par << " +- " << err << flush;
+}
+*/
+void MPointing::PrintMinuitParameters(TMinuit &m, Int_t n) const
+{
+    if (n<0)
+        n = m.GetNumPars();
+
+    cout << setprecision(3);
+
+    Double_t par, er;
+
+    while (n--)
+    {
+        m.GetParameter(n, par, er);
+        cout << Form(" %2d %6s: ", n, (const char*)fNames[n]);
+        cout << setw(8) << par << " \xb1 " << setw(6) <<  er << endl;
+    }
+}
Index: branches/FACT++_part_filenames/drive/MPointing.h
===================================================================
--- branches/FACT++_part_filenames/drive/MPointing.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MPointing.h	(revision 18732)
@@ -0,0 +1,313 @@
+#ifndef MARS_MPointing
+#define MARS_MPointing
+
+#ifndef ROOT_TArrayD
+#include <TArrayD.h>
+#endif
+
+#ifndef ROOT_TVector2
+#include <TVector2.h>
+#endif
+
+#ifndef ROOT_TVector3
+#include <TVector3.h>
+#endif
+
+#ifndef MARS_MParContainer
+#include "MParContainer.h"
+#endif
+
+// ---------------------------------------------------
+
+#define XY TVector2
+
+inline TVector2 Div(const TVector2 &v1, const TVector2 &v2)
+{
+    return TVector2(v1.X()/v2.X(), v1.Y()/v2.Y());
+}
+inline TVector2 Mul(const TVector2 &v1, const TVector2 &v2)
+{
+    return TVector2(v1.X()*v2.X(), v1.Y()*v2.Y());
+}
+
+inline TVector2 operator-(const TVector2 &v) { return TVector2(-v.X(), -v.Y()); }
+
+class AltAz : public XY
+{
+public:
+    AltAz(double alt=0, double az=0) : XY(alt, az) {}
+
+    double Alt() const { return fX; }
+    double Az()  const { return fY; }
+
+    void operator*=(double c) { fX*=c; fY*=c; }
+    void operator/=(double c) { fX*=c; fY*=c; }
+
+    void Alt(double d) { fX=d; }
+    void Az(double d)  { fY=d; }
+    void operator*=(const XY &c)    { fX*=c.X(); fY*=c.Y(); }
+    void operator/=(const XY &c)    { fX/=c.X(); fY/=c.Y(); }
+    void operator-=(const AltAz &c) { fX-=c.fX; fY-=c.fY; }
+    void operator+=(const AltAz &c) { fX+=c.fX; fY+=c.fY; }
+
+    AltAz operator/(double c) const { return AltAz(fX/c, fY/c); }
+    AltAz operator*(double c) const { return AltAz(fX*c, fY*c); }
+    AltAz operator*(const XY &c) const { return AltAz(fX*c.X(), fY*c.Y()); }
+    AltAz operator/(const XY &c) const { return AltAz(fX/c.X(), fY/c.Y()); }
+    AltAz operator+(const AltAz &c) const { return AltAz(fX+c.fX, fY+c.fY); }
+    AltAz operator-(const AltAz &c) const { return AltAz(fX-c.fX, fY-c.fY); }
+    AltAz operator-() const { return AltAz(-fX, -fY); }
+
+    ClassDef(AltAz, 0)
+};
+
+class ZdAz : public XY
+{
+public:
+    ZdAz(double zd=0, double az=0) : XY(zd, az) {}
+    ZdAz(const ZdAz &c) : XY(c) {}
+
+    void operator*=(double c) { fX*=c; fY*=c; }
+    void operator/=(double c) { fX*=c; fY*=c; }
+
+    double Zd() const { return fX; }
+    double Az() const { return fY; }
+
+    void Zd(double d) { fX=d; }
+    void Az(double d) { fY=d; }
+    void operator*=(const XY &c)   { fX*=c.X(); fY*=c.Y(); }
+    void operator/=(const XY &c)   { fX/=c.X(); fY/=c.Y(); }
+    void operator-=(const ZdAz &c) { fX-=c.fX; fY-=c.fY; }
+    void operator+=(const ZdAz &c) { fX+=c.fX; fY+=c.fY; }
+
+    ZdAz operator/(double c) const { return ZdAz(fX/c, fY/c); }
+    ZdAz operator*(double c) const { return ZdAz(fX*c, fY*c); }
+    ZdAz operator*(const XY &c) const { return ZdAz(fX*c.X(), fY*c.Y()); }
+    ZdAz operator/(const XY &c) const { return ZdAz(fX/c.X(), fY/c.Y()); }
+    ZdAz operator+(const ZdAz &c) const { return ZdAz(fX+c.fX, fY+c.fY); }
+    ZdAz operator-(const ZdAz &c) const { return ZdAz(fX-c.fX, fY-c.fY); }
+    ZdAz operator-() const { return ZdAz(-fX, -fY); }
+
+    // MSlewing only?!?
+    double Ratio() const { return fX/fY; }
+    void Round();
+    void Abs();
+
+    ClassDef(ZdAz, 0)
+};
+
+class RaDec : public XY
+{
+public:
+    RaDec(double ra=0, double dec=0) : XY(ra, dec) {}
+
+    double Ra()  const { return fX; }
+    double Dec() const { return fY; }
+
+    void operator*=(double c) { fX*=c; fY*=c; }
+    void operator/=(double c) { fX*=c; fY*=c; }
+
+    void Ra(double x)  { fX = x; }
+    void Dec(double y) { fY = y; }
+
+    RaDec operator/(double c) const { return RaDec(fX/c, fY/c); }
+    RaDec operator*(double c) const { return RaDec(fX*c, fY*c); }
+    RaDec operator*(const XY &c) const { return RaDec(fX*c.X(), fY*c.Y()); }
+    RaDec operator+(const RaDec &c) const { return RaDec(fX+c.fX, fY+c.fY); }
+    RaDec operator-(const RaDec &c) const { return RaDec(fX-c.fX, fY-c.fY); }
+    RaDec operator-() const { return RaDec(-fX, -fY); }
+
+    ClassDef(RaDec, 0)
+};
+
+// ---------------------------------------------------
+
+class TMinuit;
+
+class MPointing : public MParContainer
+{
+private:
+    enum {
+        kIA,           // [rad] Index Error in Elevation
+        kIE,           // [rad] Index Error in Azimuth
+        kFLOP,         // [rad] Vertical Sag
+        kAN,           // [rad] Az-El Nonperpendicularity
+        kAW,           // [rad] Left-Right Collimation Error
+        kNPAE,         // [rad] Azimuth Axis Misalignment (N-S)
+        kCA,           // [rad] Azimuth Axis Misalignment (E-W)
+        kTF,           // [rad] Tube fluxture (sin)
+        kTX,           // [rad] Tube fluxture (tan)
+        kECES,         // [rad] Nasmyth rotator displacement, horizontal
+        kACES,         // [rad] Nasmyth rotator displacement, vertical
+        kECEC,         // [rad] Alt/Az Coude Displacement (N-S)
+        kACEC,         // [rad] Alt/Az Coude Displacement (E-W)
+        kNRX,          // [rad] Elevation Centering Error (sin)
+        kNRY,          // [rad] Azimuth Centering Error (sin)
+        kCRX,          // [rad] Elevation Centering Error (cos)
+        kCRY,          // [rad] Azimuth Centering Error (cos)
+        kMAGIC1,       // [rad] Magic Term (what is it?)
+        kMAGIC2,       // [rad] Magic Term (what is it?)
+        kPX,           // [rad] Starguider calibration fixed offset x
+        kPY,           // [rad] Starguider calibration fixed offset y
+        kDX,           // [rad] Starguider calibration additional offset dx
+        kDY,           // [rad] Starguider calibration additional offset dy
+        kNumPar   // Number of elements
+    };
+
+
+    Double_t fIe   ; // [rad] Index Error in Elevation
+    Double_t fIa   ; // [rad] Index Error in Azimuth
+    Double_t fFlop ; // [rad] Vertical Sag
+    Double_t fNpae ; // [rad] Az-El Nonperpendicularity
+    Double_t fCa   ; // [rad] Left-Right Collimation Error
+    Double_t fAn   ; // [rad] Azimuth Axis Misalignment (N-S)
+    Double_t fAw   ; // [rad] Azimuth Axis Misalignment (E-W)
+    Double_t fTf   ; // [rad] Tube fluxture (sin)
+    Double_t fTx   ; // [rad] Tube fluxture (tan)
+    Double_t fNrx  ; // [rad] Nasmyth rotator displacement, horizontal
+    Double_t fNry  ; // [rad] Nasmyth rotator displacement, vertical
+    Double_t fCrx  ; // [rad] Alt/Az Coude Displacement (N-S)
+    Double_t fCry  ; // [rad] Alt/Az Coude Displacement (E-W)
+    Double_t fEces ; // [rad] Elevation Centering Error (sin)
+    Double_t fAces ; // [rad] Azimuth Centering Error (sin)
+    Double_t fEcec ; // [rad] Elevation Centering Error (cos)
+    Double_t fAcec ; // [rad] Azimuth Centering Error (cos)
+    Double_t fMagic1; // [rad] Magic Term (what is it?)
+    Double_t fMagic2; // [rad] Magic Term (what is it?)
+
+    Double_t fPx;    // [rad] Starguider calibration fixed offset x
+    Double_t fPy;    // [rad] Starguider calibration fixed offset y
+    Double_t fDx;    // [rad] Starguider calibration additional offset dx
+    Double_t fDy;    // [rad] Starguider calibration additional offset dy
+
+    Double_t **fCoeff; //!
+    TString   *fNames; //!
+    TString   *fDescr; //!
+
+    TArrayD   fError;
+
+    void Init(const char *name=0, const char *title=0);
+
+    void Clear(Option_t *o="")
+    {
+        for (int i=0; i<kNumPar; i++)
+        {
+            *fCoeff[i] = 0;
+            fError[i] = -1;
+        }
+    }
+
+    static Double_t Sign(Double_t val, Double_t alt);
+    AltAz CalcAnAw(const AltAz &p, Int_t sign) const;
+
+public:
+    MPointing() : fError(kNumPar) { Init(); Clear(); }
+    MPointing(const char *name) : fError(kNumPar) { Init(); Clear(); Load(name); }
+    virtual ~MPointing() { delete [] fNames; delete [] fCoeff; delete [] fDescr; }
+
+    Bool_t Load(const char *name);
+    Bool_t Save(const char *name);
+
+    void Reset();
+
+    ZdAz     Correct(const ZdAz &zdaz) const;
+    AltAz    Correct(const AltAz &aaz) const;
+    TVector3 Correct(const TVector3 &v) const;
+
+    ZdAz     CorrectBack(const ZdAz &zdaz) const;
+    AltAz    CorrectBack(const AltAz &aaz) const;
+    TVector3 CorrectBack(const TVector3 &v) const;
+
+    ZdAz     operator()(const ZdAz &zdaz)  const { return Correct(zdaz); }
+    AltAz    operator()(const AltAz &aaz)  const { return Correct(aaz); }
+    TVector3 operator()(const TVector3 &v) const { return Correct(v); }
+
+    ZdAz operator()(const ZdAz &zdaz, void (*fcn)(ZdAz &zdaz, Double_t *par)) const
+    {
+        Double_t par[kNumPar];
+        GetParameters(par);
+        ZdAz za = zdaz;
+        fcn(za, par);
+        return za;
+    }
+
+    AltAz operator()(const AltAz &aaz, void (*fcn)(AltAz &aaz, Double_t *par)) const
+    {
+        Double_t par[kNumPar];
+        GetParameters(par);
+        AltAz aa = aaz;
+        fcn(aa, par);
+        return aa;
+    }
+
+    TVector3 operator()(const TVector3 &aaz, void (*fcn)(TVector3 &aaz, Double_t *par)) const
+    {
+        Double_t par[kNumPar];
+        GetParameters(par);
+        TVector3 v = aaz;
+        fcn(v, par);
+        return v;
+    }
+
+    AltAz    AddOffsets(const AltAz &aa) const;
+    ZdAz     AddOffsets(const ZdAz &zdaz) const;
+    TVector3 AddOffsets(const TVector3 &v) const;
+
+    AltAz    SubtractOffsets(const AltAz &aa) const;
+    ZdAz     SubtractOffsets(const ZdAz &zdaz) const;
+    TVector3 SubtractOffsets(const TVector3 &v) const;
+
+    void SetParameters(const Double_t *par, Int_t n=kNumPar);
+    void GetParameters(Double_t *par, Int_t n=kNumPar) const;
+
+    void SetParameters(const TArrayD &par)
+    {
+        SetParameters(par.GetArray(), par.GetSize());
+    }
+    void GetParameters(TArrayD &par) const
+    {
+        par.Set(kNumPar);
+        GetParameters(par.GetArray());
+    }
+    void GetError(TArrayD &par) const;
+
+    Double_t &operator[](UInt_t i) { return *fCoeff[i]; }
+
+    void SetMinuitParameters(TMinuit &m, Int_t n=-1) const;
+    void GetMinuitParameters(TMinuit &m, Int_t n=-1);
+    void PrintMinuitParameters(TMinuit &m, Int_t n=-1) const;
+
+    const TString &GetVarName(int i) const { return fNames[i]; }
+    const TString &GetDescription(int i) const { return fDescr[i]; }
+
+    /*
+     Double_t GetIe() const { return fIe; }
+     Double_t GetIa() const { return fIa; }
+     Double_t GetCa() const { return fCa; }
+     Double_t GetAn() const { return fAn; }
+     Double_t GetAw() const { return fAw; }
+     Double_t GetNrx() const { return fNrx; }
+     Double_t GetNry() const { return fNry; }
+     Double_t GetCrx() const { return fNrx; }
+     Double_t GetCry() const { return fNry; }
+     Double_t GetEces() const { return fEces; }
+     Double_t GetEcec() const { return fEcec; }
+     Double_t GetAces() const { return fAces; }
+     Double_t GetAcec() const { return fAcec; }
+     Double_t GetNpae() const { return fNpae; }
+     */
+
+    TVector2 GetDxy() const;// { return TVector2(fDx, fDy)*TMath::RadToDeg(); }
+
+    Double_t GetPx() const;// { return fPx*TMath::RadToDeg(); }
+    Double_t GetPy() const;// { return fPy*TMath::RadToDeg(); }
+
+    Bool_t IsPxValid() const { return fError[kPX]>0; }
+    Bool_t IsPyValid() const { return fError[kPY]>0; }
+
+    static const Int_t GetNumPar() { return kNumPar; }
+
+    ClassDef(MPointing, 2) // Pointing Model for MAGIC
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/MStarguider.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MStarguider.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MStarguider.cc	(revision 18732)
@@ -0,0 +1,1350 @@
+#undef EXPERT
+#define FACT
+
+#include "MStarguider.h"
+
+#ifdef HAVE_PNG
+#include <png.h>
+#endif
+#include <iostream>
+#include <fstream>
+
+#include <math.h>
+
+#include <TEnv.h>
+#include <TSystem.h>
+
+#include <TGMenu.h>
+#include <TGLabel.h>
+#include <TGButton.h>
+#include <TGSplitter.h>    // TGHorizontal3DLine
+#include <TGTextEntry.h>
+#include <TGLayout.h>
+
+#include "MCaos.h"
+#include "MGImage.h"
+#include "Camera.h"
+#include "../src/DimSetup.h"
+#include "Led.h"
+//#include "Writer.h"
+#include "FilterLed.h"
+//#include "CaosFilter.h"
+
+using namespace std;
+
+enum {
+    IDM_kFilter,
+    IDM_kFindStar,
+    IDM_kCaosFilter,
+    IDM_kStarguider,
+    IDM_kStretch,
+    IDM_kInput,
+    IDM_kSetup,
+    IDM_kCut,
+    IDM_kInterpol250,
+    IDM_kInterpol125,
+    IDM_kInterpol50,
+    IDM_kInterpol25,
+    IDM_kInterpol10,
+    IDM_kInterpol5,
+    IDM_kInterpol2,
+    IDM_kInterpol1,
+    //IDM_kCaosPrintRings,
+    //IDM_kCaosPrintLeds,
+    IDM_kCaosWriteStart,
+    IDM_kCaosWriteStop,
+    IDM_kResetHistograms,
+};
+
+Bool_t MStarguider::HandleTimer(TTimer *)
+{
+    if (IsMapped())
+        fImage->DoRedraw();
+ 
+    return kTRUE;
+}
+
+#define kZOOM 96
+/*
+XY MStarguider::GetCoordinates() const
+{
+    return fPZdAz->GetCoordinates();
+}
+*/
+void MStarguider::InitGui(Int_t)
+{
+    //fList = new MGList;
+    //fList->SetOwner();
+
+/*
+ const TGWindow *p=gClient->GetRoot();
+
+    fChannel = new TGPopupMenu(p);
+    fChannel->AddEntry("Starfield Camera", IDM_kChannel1);
+    fChannel->AddEntry("TPoint Camera",    IDM_kChannel2);
+    //fChannel->AddEntry("Read from File",   IDM_kChannel3);
+    //if (channel<0)
+    //    fChannel->CheckEntry(IDM_kChannel3);
+    //else
+        fChannel->CheckEntry(channel==0?IDM_kChannel1:IDM_kChannel2);
+    fChannel->Associate(this);
+    fList->Add(fChannel);
+
+    fFileType = new TGPopupMenu(p);
+    fFileType->AddEntry("PP&M", IDM_kPPM);
+    fFileType->AddEntry("&PNG", IDM_kPNG);
+    fFileType->CheckEntry(IDM_kPNG);
+    fFileType->Associate(this);
+    fList->Add(fFileType);
+
+    fWriteType = new TGPopupMenu(p);
+    fWriteType->AddEntry("&Once",      IDM_kOnce);
+    fWriteType->AddEntry("&Continous", IDM_kContinous);
+    fWriteType->CheckEntry(IDM_kOnce);
+    fWriteType->Associate(this);
+    fList->Add(fWriteType);
+
+    fWriteRate = new TGPopupMenu(p);
+    fWriteRate->AddEntry("25/s", IDM_kRate25ps);
+    fWriteRate->AddEntry("5/s",  IDM_kRate5ps);
+    fWriteRate->AddEntry("1s",   IDM_kRate1s);
+    fWriteRate->AddEntry("5s",   IDM_kRate5s);
+    fWriteRate->AddEntry("30s",  IDM_kRate30s);
+    fWriteRate->AddEntry("1min", IDM_kRate1m);
+    fWriteRate->AddEntry("5min", IDM_kRate5m);
+    fWriteRate->CheckEntry(IDM_kRate1m);
+    fWriteRate->Associate(this);
+    fList->Add(fWriteRate);
+
+    fWrtRate = 25*60;
+
+    fLimMag = new TGPopupMenu(p);
+    fLimMag->AddEntry("3", IDM_kLimMag3);
+    fLimMag->AddEntry("4", IDM_kLimMag4);
+    fLimMag->AddEntry("5", IDM_kLimMag5);
+    fLimMag->AddEntry("6", IDM_kLimMag6);
+    fLimMag->AddEntry("7", IDM_kLimMag7);
+    fLimMag->AddEntry("8", IDM_kLimMag8);
+    fLimMag->AddEntry("9", IDM_kLimMag9);
+    fLimMag->CheckEntry(IDM_kLimMag9);
+    fLimMag->Associate(this);
+    fList->Add(fLimMag);
+    */
+    //fSao->SetLimitMag(9.0);
+
+    const TGWindow *p=gClient->GetRoot();
+
+    fInterpol = new TGPopupMenu(p);
+    fInterpol->AddEntry("250", IDM_kInterpol250);
+    fInterpol->AddEntry("125", IDM_kInterpol125);
+    fInterpol->AddEntry("50",  IDM_kInterpol50);
+    fInterpol->AddEntry("25",  IDM_kInterpol25);
+    fInterpol->AddEntry("10",  IDM_kInterpol10);
+    fInterpol->AddEntry("5",   IDM_kInterpol5);
+    fInterpol->AddEntry("2",   IDM_kInterpol2);
+    fInterpol->AddEntry("Off", IDM_kInterpol1);
+    fInterpol->Associate(this);
+    //fList->Add(fInterpol);
+
+    TString disp=gVirtualX->DisplayName();
+    cout << "Display: " << disp << endl;
+    if (disp.First(':')>=0)
+        disp=disp(0, disp.First(':'));
+
+    if (disp.IsNull() || disp==(TString)"localhost")
+    {
+        fInterpol->CheckEntry(IDM_kInterpol25);
+        fIntRate = 25;
+    }
+    else
+    {
+        fInterpol->CheckEntry(IDM_kInterpol125);
+        fIntRate = 125;
+    }
+
+/*
+    fCaosPrint = new TGPopupMenu(p);
+    fCaosPrint->AddEntry("&Leds",  IDM_kCaosPrintLeds);
+    fCaosPrint->AddEntry("&Rings", IDM_kCaosPrintRings);
+    fCaosPrint->Associate(this);
+    fList->Add(fCaosPrint);
+
+    fCaosWrite = new TGPopupMenu(p);
+    fCaosWrite->AddEntry("&Start", IDM_kCaosWriteStart);
+    fCaosWrite->AddEntry("Sto&p",  IDM_kCaosWriteStop);
+    fCaosWrite->DisableEntry(IDM_kCaosWriteStop);
+    fCaosWrite->Associate(this);
+    fList->Add(fCaosWrite);
+
+    fCaosAnalyse = new TGPopupMenu(p);
+    fCaosAnalyse->AddEntry("S&tart Analysis", IDM_kCaosAnalStart);
+    fCaosAnalyse->AddEntry("St&op Analysis",  IDM_kCaosAnalStop);
+    fCaosAnalyse->DisableEntry(IDM_kCaosAnalStop);
+    fCaosAnalyse->Associate(this);
+    fList->Add(fCaosAnalyse);
+*/
+    fMenu = new TGMenuBar(this, 0, 0, kHorizontalFrame);
+    fDisplay       = fMenu->AddPopup("&Display");
+    //fMode          = fMenu->AddPopup("&Mode");
+    //fWritePictures = fMenu->AddPopup("&WritePics");
+    fSetup         = fMenu->AddPopup("&Setup");
+    //fOperations    = fMenu->AddPopup("&Operations");
+    fMenu->Resize(fMenu->GetDefaultSize());
+    AddFrame(fMenu);
+
+    //
+    // Create Menu for MStarguider Display
+    //
+    //fDisplay = new MMGPopupMenu(p);
+    fDisplay->AddEntry("&Filter",               IDM_kFilter);
+    fDisplay->AddEntry("Stretch",               IDM_kStretch);
+    fDisplay->AddSeparator();
+    fDisplay->AddEntry("Find &Star",            IDM_kFindStar);
+    fDisplay->AddEntry("C&aos Filter",          IDM_kCaosFilter);
+    //fDisplay->AddSeparator();
+    //if (channel>=0)
+    //    fDisplay->AddPopup("&Input",   fChannel);
+    // fDisplay->CheckEntry(IDM_kStretch);
+    fDisplay->CheckEntry(IDM_kFindStar);
+    fDisplay->CheckEntry(IDM_kCaosFilter);
+    fDisplay->Associate(this);
+
+    //fMode->AddEntry("Tpoint",     IDM_kTpointMode);
+    //fMode->Associate(this);
+/*
+    fWritePictures->AddEntry("&Start",      IDM_kStart);
+    fWritePictures->AddEntry("Sto&p",       IDM_kStop);
+    fWritePictures->AddSeparator();
+    //fWritePictures->AddPopup("File &Type",  fFileType);
+    fWritePictures->AddPopup("&Write Type", fWriteType);
+    fWritePictures->AddPopup("Write &Rate", fWriteRate);
+    fWritePictures->DisableEntry(IDM_kStop);
+    fWritePictures->Associate(this);
+    */
+    fSetup->AddPopup("Disp. &Interpolation", fInterpol);
+    fSetup->Associate(this);
+
+/*
+    fCaOs = new TGPopupMenu(p);
+    //fCaOs->AddPopup("&Write",   fCaosWrite);
+    fCaOs->AddPopup("&Print",   fCaosPrint);
+    //fCaOs->AddPopup("&Analyse", fCaosAnalyse);
+    fCaOs->Associate(this);
+    fList->Add(fCaOs);
+*/
+    //RA,Dec for catalog
+    /*
+    fCRaDec = new MGCoordinates(this, kETypeRaDec);
+    fCRaDec->Move(4, fMenu->GetDefaultHeight()+584);
+    AddFrame(fCRaDec);
+
+    //telescope position
+    fCZdAz = new MGCoordinates(this, kETypeZdAz, 2);
+    fCZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+597);
+    AddFrame(fCZdAz);
+
+    //starguider position
+    fPZdAz = new MGCoordinates(this, kETypeZdAz, 2);
+    fPZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+640);
+    AddFrame(fPZdAz);
+
+    //mispointing
+    fDZdAz = new MGCoordinates(this, kETypeZdAz, 2);
+    fDZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+683);
+    AddFrame(fDZdAz);
+
+    fSZdAz = new MGCoordinates(this, kETypeZdAz, 2);
+    fSZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+795);
+    AddFrame(fSZdAz);
+
+    fGNumStars = new MGNumStars(this, 235);
+    fGNumStars->DrawText("Number of stars");
+    fGNumStars->Move(278, fMenu->GetDefaultHeight()+713);
+    fList->Add(fGNumStars);
+
+    fTPoint = new TGTextButton(this, "TPoint");
+    //fTPoint->Move(4, fMenu->GetDefaultHeight()+785);
+    fTPoint->Move(170, fMenu->GetDefaultHeight()+785);
+    fTPoint->AllowStayDown(kTRUE);
+    AddFrame(fTPoint);
+
+    fStargTPoint = new TGTextButton(this, "StargTPoint");
+     fStargTPoint->Move(170, fMenu->GetDefaultHeight()+785);
+     fStargTPoint->AllowStayDown(kTRUE);
+     AddFrame(fStargTPoint);
+
+     fFps = new TGLabel(this, "---fps");
+    fFps->SetTextJustify(kTextRight);
+    fFps->Move(650-495, fMenu->GetDefaultHeight()+714+23);
+    AddFrame(fFps);
+
+    fPosZoom = new TGLabel(this, "(----, ----) ----.--d/----.--d");
+    fPosZoom->SetTextJustify(kTextLeft);
+    fPosZoom->Move(4, fMenu->GetDefaultHeight()+765);
+    AddFrame(fPosZoom);
+
+    fSkyBright = new TGLabel(this, "Sky Brightness: ---         ");
+    fSkyBright->SetTextJustify(kTextLeft);
+    fSkyBright->Move(4, fMenu->GetDefaultHeight()+785);
+    AddFrame(fSkyBright);
+
+    TGLabel *l = new TGLabel(this, "deg");
+    l->SetTextJustify(kTextLeft);
+    l->Move(606-412, fMenu->GetDefaultHeight()+669);
+    AddFrame(l);
+
+    l = new TGLabel(this, "arcsec/pix");
+    l->SetTextJustify(kTextLeft);
+    l->Move(606-412, fMenu->GetDefaultHeight()+692);
+    AddFrame(l);
+
+    l = new TGLabel(this, "sigma");
+    l->SetTextJustify(kTextLeft);
+    l->Move(606-412, fMenu->GetDefaultHeight()+715);
+    AddFrame(l);
+
+    fCZdAzText = new TGLabel(this, "Zd/Az telescope pointing at");
+    fCZdAzText->SetTextJustify(kTextLeft);
+    fCZdAzText->Move(240+12+20+7, fMenu->GetDefaultHeight()+584-5);
+    AddFrame(fCZdAzText);
+
+    fPZdAzText = new TGLabel(this, "Zd/Az starguider pointing at");
+    fPZdAzText->SetTextJustify(kTextLeft);
+    fPZdAzText->Move(240+12+20+7, fMenu->GetDefaultHeight()+630+20-5-23);
+    AddFrame(fPZdAzText);
+
+    fDZdAzText = new TGLabel(this, "Zd/Az mispointing");
+    fDZdAzText->SetTextJustify(kTextLeft);
+    fDZdAzText->Move(240+12+20+7, fMenu->GetDefaultHeight()+676+2*20-5-46);
+    AddFrame(fDZdAzText);
+*/
+    // Set input box for rotation angle
+    /*
+    fAngle = new TGTextEntry(this, "           ", IDM_kAngle);
+    fAngle->SetAlignment(kTextCenterX);
+    fAngle->Move(547-410, fMenu->GetDefaultHeight()+667);
+    AddFrame(fAngle);
+
+    //SetRotationAngle(-0.2);
+
+    // Set input box for pixel size
+    fPixSize = new TGTextEntry(this, "           ", IDM_kPixSize);
+    fPixSize->SetAlignment(kTextCenterX);
+    fPixSize->Move(547-410, fMenu->GetDefaultHeight()+690);
+    AddFrame(fPixSize);
+    */
+    //SetPixSize(48.9);
+
+    // Set input box for cleaning cut
+    //fCut = new TGTextEntry(this, "           ", IDM_kCut);
+    //fCut->SetAlignment(kTextCenterX);
+    //fCut->Move(547-410, fMenu->GetDefaultHeight()+713);
+    //AddFrame(fCut);
+
+    //SetCut(3.0);
+
+    // TGHorizontal3DLine *fLineSep = new TGHorizontal3DLine(this);
+    // AddFrame(fLineSep, new TGLayoutHints (kLHintsNormal | kLHintsExpandX));
+    // fList->Add(fLineSep);
+
+    //
+    // Create Image Display
+    /*
+    fZoomImage = new MGImage(this, kZOOM, kZOOM);
+    // fZoomImage->Move(768-kZOOM-2, 700-kZOOM-2);
+    fZoomImage->Move(4, 700-kZOOM-2+85);
+    AddFrame(fZoomImage);
+    */
+    fImage = new MGImage(this, 768, 576);
+    fImage->Move(0, fMenu->GetDefaultHeight());
+    AddFrame(fImage);
+
+    const Int_t w = 768;
+    const Int_t h = 576;
+    SetWMSizeHints(w, h, w, h, 1, 1);  // set the smallest and biggest size of the Main frame
+
+    //
+    // Make everything visible
+    //
+    SetWindowName("TPoint Main Window");
+    SetIconName("TPoint");
+
+    MapSubwindows();
+    //fTPoint->UnmapWindow();
+    //fStargTPoint->UnmapWindow();
+    //fGStarg->UnmapWindow();
+    //fGNumStars->UnmapWindow();
+    //fCRaDec->UnmapWindow();
+    //fCZdAz->UnmapWindow();
+    //fCZdAzText->UnmapWindow();
+    //fPZdAz->UnmapWindow();
+    //fPZdAzText->UnmapWindow();
+    //fDZdAz->UnmapWindow();
+    //fDZdAzText->UnmapWindow();
+    //fSZdAz->UnmapWindow();
+    //fSkyBright->UnmapWindow();
+    MapWindow();
+
+
+    //IconifyWindow();
+
+    //------------------------------------------------------------
+    //    XY xy(3.819444, 24.05333);
+    //    fCRaDec->SetCoordinates(xy);
+    //    fRaDec->Set(xy.X()*360/24, xy.Y());
+    //------------------------------------------------------------
+}
+
+MStarguider::MStarguider(Int_t channel) : TGMainFrame(gClient->GetRoot(), 768, 840),
+fDimData("TPOINT/DATA", "D:11", (void*)NULL, 0),
+fDimTPoint("TPOINT/EXECUTE", "", this),
+fDimScreenshot("TPOINT/SCREENSHOT", "B:1;C", this),
+fRadius(200), fFindStarCut(2.), fFindStarBox(30), fTPointMode(0)
+{
+    cout << " #### FIXME: Make MCaos Thread safe!" << endl;
+
+    // This means that all objects added with AddFrame are deleted
+    // automatically, including all LayoutHints.
+    SetCleanup();
+
+    fCaos = new MCaos;
+    fCaos->ReadResources("leds_fact.txt");
+
+    InitGui(channel);
+
+    fTimer=new TTimer(this, 1000/25); // 40ms
+    fTimer->TurnOn();
+
+    gVirtualX->GrabButton(fId, kButton2, 0, 0, 0, 0, kTRUE);
+
+    fGetter = new Camera(*this, channel);
+
+    DimClient::setNoDataCopy();
+    DimServer::start("TPOINT");
+}
+
+MStarguider::~MStarguider()
+{
+    DimServer::stop();
+
+    fGetter->ExitLoop();
+    delete fGetter;
+
+    gVirtualX->GrabButton(fId, kButton2, 0, 0, 0, 0, kFALSE);
+
+    fTimer->TurnOff();
+    delete fTimer;
+
+    delete fInterpol;
+
+    //delete fList;
+    delete fCaos;
+
+    cout << "Camera Display destroyed." << endl;
+}
+
+/*
+void MStarguider::SetupEnv(TEnv &env)
+{
+    fCaos->ReadEnv(env, "TPointLeds", kTRUE);
+    //fStargCaos->ReadEnv(env, "StarguiderLeds", kTRUE);
+
+    //SetRotationAngle(env.GetValue("Starguider.RotationAngle", fSao->GetRotationAngle()));
+    //SetCut(env.GetValue("Starguider.CleaningLevel", atof(fCut->GetText())));
+
+    //SetPixSize(env.GetValue("StarguiderLeds.ArcsecPerPixel", fSao->GetPixSize()));
+
+    fRadius = env.GetValue("Leds.Radius", fRadius);
+
+    fStarguiderW = env.GetValue("Starguider.Width",  fStarguiderW);
+    fStarguiderH = env.GetValue("Starguider.Height", fStarguiderH);
+    fStarguiderX = env.GetValue("Starguider.X",      fStarguiderX);
+    fStarguiderY = env.GetValue("Starguider.Y",      fStarguiderY);
+
+    fSkyOffsetX = env.GetValue("Starguider.SkyOffsetX", fSkyOffsetX);
+    fSkyOffsetY = env.GetValue("Starguider.SkyOffsetY", fSkyOffsetY);
+
+    fFindStarBox = env.GetValue("FindStar.SizeBox",       fFindStarBox);
+    fFindStarCut = env.GetValue("FindStar.CleaningLevel", fFindStarCut);
+}
+*/
+
+void MStarguider::Layout()
+{
+    // Resize(GetDefaultSize());
+}
+
+void MStarguider::CloseWindow()
+{
+    cout << "EventDisplay::CloseWindow: Exit Application Loop." << endl;
+
+    //fClient.ExitLoop();
+    //    cout << "FIXME: ExitLoop not called!!!!!!" << endl;
+    fGetter->ExitLoop();
+    gSystem->ExitLoop();
+}
+
+void MStarguider::SwitchOff(TGPopupMenu *p, UInt_t id)
+{
+    p->UnCheckEntry(id);
+    p->DisableEntry(id);
+}
+
+/*
+void MStarguider::SetChannel()
+{
+    if (fChannel->IsEntryChecked(IDM_kChannel3))
+    {
+        if (dynamic_cast<PngReader*>(fGetter)==0)
+        {
+            delete fGetter;
+            fGetter=new PngReader(*this);
+        }
+    }
+    else
+    {
+        const Int_t ch = fChannel->IsEntryChecked(IDM_kChannel1) ? 0 : 1;
+        if (dynamic_cast<Camera*>(fGetter)==0)
+        {
+            delete fGetter;
+            fGetter = new Camera(*this, ch);
+        }
+        else
+            fGetter->SetChannel(ch);
+    }
+}*/
+
+void MStarguider::Toggle(TGPopupMenu *p, UInt_t id)
+{
+    if (p->IsEntryChecked(id))
+        p->UnCheckEntry(id);
+    else
+        p->CheckEntry(id);
+}
+
+
+Bool_t MStarguider::ProcessMessage(Long_t msg, Long_t mp1, Long_t)
+{
+    switch (GET_MSG(msg))
+    {
+    case kC_TEXTENTRY:
+        if (GET_SUBMSG(msg)==kTE_ENTER)
+            switch (mp1)
+            {
+                /*
+            case IDM_kPixSize:
+                {
+                    const Float_t pixsize = atof(fPixSize->GetText());
+                    gLog << all << "Pixel Size changed to " << pixsize << "\"/pix" << endl;
+                    fSao->SetPixSize(pixsize);
+                    return kTRUE;
+                }
+            case IDM_kAngle:
+                {
+                    const Float_t angle = atof(fAngle->GetText());
+                    gLog << all << "Rotation Angle changed to " << angle << "deg" << endl;
+                    fSao->SetRotationAngle(angle);
+                    return kTRUE;
+                }
+            case IDM_kCut:
+                {
+                    const Float_t cut = atof(fCut->GetText());
+                    gLog << all << "Starguider cleaning level changed to " << cut << " sigma." << endl;
+                    return kTRUE;
+                }*/
+            }
+        return kTRUE;
+
+    case kC_COMMAND:
+        switch (GET_SUBMSG(msg))
+        {
+        case kCM_MENU:
+            switch (mp1)
+            {
+/*
+            case IDM_kTpointMode:
+                Toggle(fMode, IDM_kTpointMode);
+
+                if (fMode->IsEntryChecked(IDM_kTpointMode))
+                {
+                    //unchecking not needed items
+                    //general
+                    SwitchOff(fDisplay, IDM_kFilter);
+                    SwitchOff(fChannel, IDM_kChannel3);
+
+                    //from starguider
+                    //SwitchOff(fDisplay, IDM_kStargCaosFilter);
+                    //SwitchOff(fDisplay, IDM_kCatalog);
+                    //SwitchOff(fDisplay, IDM_kStarguider);
+                    //ToggleStarguider();
+                    //fMode->UnCheckEntry(IDM_kStarguiderMode);
+                    //SwitchOff(fOperations, IDM_kStargAnalysis);
+                    //ToggleStargAnalysis();
+
+                    //switch camera
+                    SwitchOff(fChannel, IDM_kChannel1);
+                    fChannel->CheckEntry(IDM_kChannel2);
+
+                    SetChannel();
+
+                    //checking needed items
+                    fDisplay->UnCheckEntry(IDM_kStretch);
+                    fDisplay->CheckEntry(IDM_kCaosFilter);
+                    ToggleCaosFilter();
+                    fDisplay->CheckEntry(IDM_kFindStar);
+                    fTPoint->MapWindow();
+                }
+                else
+                {
+                    //enable
+                    //starguider items
+                    //fDisplay->EnableEntry(IDM_kStargCaosFilter);
+                    //fDisplay->EnableEntry(IDM_kCatalog);
+                    //fDisplay->EnableEntry(IDM_kStarguider);
+                    //fOperations->EnableEntry(IDM_kStargAnalysis);
+
+                    //general
+                    fDisplay->EnableEntry(IDM_kFilter);
+                    fChannel->EnableEntry(IDM_kChannel1);
+                    fChannel->EnableEntry(IDM_kChannel3);
+
+                    //tpoint
+                    fDisplay->UnCheckEntry(IDM_kCaosFilter);
+                    ToggleCaosFilter();
+                    fDisplay->UnCheckEntry(IDM_kFindStar);
+                    fTPoint->UnmapWindow();
+                }
+                return kTRUE;
+*/
+            case IDM_kFilter:
+                Toggle(fDisplay, IDM_kFilter);           
+                return kTRUE;
+
+            case IDM_kFindStar:
+                Toggle(fDisplay, IDM_kFindStar);
+                //ToggleFindStar();
+                return kTRUE;
+
+            case IDM_kStretch:
+                Toggle(fDisplay, IDM_kStretch);
+                return kTRUE;
+
+            case IDM_kCaosFilter:
+                Toggle(fDisplay, IDM_kCaosFilter);
+                //ToggleCaosFilter();
+                return kTRUE;
+/*
+            case IDM_kCaosPrintLeds:
+            case IDM_kCaosPrintRings:
+                Toggle(fCaosPrint, mp1);
+                return kTRUE;
+
+            case IDM_kCaosAnalStart:
+                fCaosAnalyse->DisableEntry(IDM_kCaosAnalStart);
+                fCaosAnalyse->EnableEntry(IDM_kCaosAnalStop);
+                //fCaos->InitHistograms();
+                return kTRUE;
+
+            case IDM_kCaosAnalStop:
+                fCaosAnalyse->DisableEntry(IDM_kCaosAnalStop);
+                fCaosAnalyse->EnableEntry(IDM_kCaosAnalStart);
+                fCaos->ShowHistograms();
+                fCaos->DeleteHistograms();
+                return kTRUE;
+
+            case IDM_kCaosWriteStart:
+                fCaosWrite->DisableEntry(IDM_kCaosWriteStart);
+                fCaosWrite->EnableEntry(IDM_kCaosWriteStop);
+                fCaos->OpenFile();
+                return kTRUE;
+
+            case IDM_kCaosWriteStop:
+                fCaosWrite->DisableEntry(IDM_kCaosWriteStop);
+                fCaosWrite->EnableEntry(IDM_kCaosWriteStart);
+                fCaos->CloseFile();
+                return kTRUE;
+
+            case IDM_kStart:
+                fWritePictures->DisableEntry(IDM_kStart);
+                fWritePictures->EnableEntry(IDM_kStop);
+                return kTRUE;
+
+            case IDM_kStop:
+                fWritePictures->DisableEntry(IDM_kStop);
+                fWritePictures->EnableEntry(IDM_kStart);
+                return kTRUE;
+
+            case IDM_kPNG:
+                fFileType->CheckEntry(IDM_kPNG);
+                fFileType->UnCheckEntry(IDM_kPPM);
+                return kTRUE;
+
+            case IDM_kPPM:
+                fFileType->CheckEntry(IDM_kPPM);
+                fFileType->UnCheckEntry(IDM_kPNG);
+                return kTRUE;
+
+            case IDM_kOnce:
+                fWriteType->CheckEntry(IDM_kOnce);
+                fWriteType->UnCheckEntry(IDM_kContinous);
+                return kTRUE;
+
+            case IDM_kContinous:
+                fWriteType->CheckEntry(IDM_kContinous);
+                fWriteType->UnCheckEntry(IDM_kOnce);
+                return kTRUE;
+
+            case IDM_kRate25ps:
+            case IDM_kRate5ps:
+            case IDM_kRate1s:
+            case IDM_kRate5s:
+            case IDM_kRate30s:
+            case IDM_kRate1m:
+            case IDM_kRate5m:
+                for (int i=IDM_kRate25ps; i<=IDM_kRate5m; i++)
+                    if (mp1==i)
+                        fWriteRate->CheckEntry(i);
+                    else
+                        fWriteRate->UnCheckEntry(i);
+                switch (mp1)
+                {
+                case IDM_kRate25ps:
+                    fWrtRate = 1;
+                    return kTRUE;
+                case IDM_kRate5ps:
+                    fWrtRate = 5;
+                    return kTRUE;
+                case IDM_kRate1s:
+                    fWrtRate = 25;
+                    return kTRUE;
+                case IDM_kRate5s:
+                    fWrtRate = 5*25;
+                    return kTRUE;
+                case IDM_kRate30s:
+                    fWrtRate = 30*25;
+                    return kTRUE;
+                case IDM_kRate1m:
+                    fWrtRate = 60*25;
+                    return kTRUE;
+                case IDM_kRate5m:
+                    fWrtRate = 5*60*25;
+                    return kTRUE;
+                }
+                return kTRUE;
+
+            case IDM_kChannel1:
+            case IDM_kChannel2:
+                {
+                    const Int_t ch0 = fChannel->IsEntryChecked(IDM_kChannel1) ? 0 : 1;
+                    const Int_t ch1 = mp1==IDM_kChannel1                      ? 0 : 1;
+
+		    if (ch0==ch1)
+                        return kTRUE;
+
+                    fChannel->CheckEntry  (ch1==0?IDM_kChannel1:IDM_kChannel2);
+                    fChannel->UnCheckEntry(ch1==1?IDM_kChannel1:IDM_kChannel2);
+
+                    SetChannel();
+                }
+                return kTRUE;
+             */
+            case IDM_kInterpol250:
+            case IDM_kInterpol125:
+            case IDM_kInterpol50:
+            case IDM_kInterpol25:
+            case IDM_kInterpol10:
+            case IDM_kInterpol5:
+            case IDM_kInterpol2:
+            case IDM_kInterpol1:
+                for (int i=IDM_kInterpol250; i<=IDM_kInterpol1; i++)
+                    if (mp1==i)
+                        fInterpol->CheckEntry(i);
+                    else
+                        fInterpol->UnCheckEntry(i);
+                switch (mp1)
+                {
+                case IDM_kInterpol1:
+                    fIntRate = 1;
+                    return kTRUE;
+                case IDM_kInterpol2:
+                    fIntRate = 2;
+                    return kTRUE;
+                case IDM_kInterpol5:
+                    fIntRate = 5;
+                    return kTRUE;
+                case IDM_kInterpol10:
+                    fIntRate = 10;
+                    return kTRUE;
+                case IDM_kInterpol25:
+                    fIntRate = 25;
+                    return kTRUE;
+                case IDM_kInterpol50:
+                    fIntRate = 50;
+                    return kTRUE;
+                case IDM_kInterpol125:
+                    fIntRate = 125;
+                    return kTRUE;
+                case IDM_kInterpol250:
+                    fIntRate = 250;
+                    return kTRUE;
+                }
+                return kTRUE;
+            }
+            break;
+        }
+        break;
+    }
+
+    return kTRUE;
+}
+/*
+void MStarguider::DrawZoomImage(const byte *img)
+{
+    byte zimg[kZOOM*kZOOM];
+    for (int y=0; y<kZOOM; y++)
+        for (int x=0; x<kZOOM; x++)
+            zimg[x+y*kZOOM] = img[(fDx+(x-kZOOM/2)/2)+(fDy+(y-kZOOM/2)/2)*768];
+
+    fZoomImage->DrawImg(zimg);
+}
+
+void MStarguider::DrawCosyImage(const byte *img)
+{
+    if (!fCosy)
+        return;
+
+    byte simg[(768/2-1)*(576/2-1)];
+    for (int y=0; y<576/2-1; y++)
+        for (int x=0; x<768/2-1; x++)
+            simg[x+y*(768/2-1)] = ((unsigned int)img[2*x+2*y*768]+img[2*x+2*y*768+1]+img[2*x+2*(y+1)*768]+img[2*x+2*(y+1)*768+1])/4;
+
+    fCosy->GetWin()->GetImage()->DrawImg(simg);
+}
+
+Led MStarguider::FindStar(const FilterLed &f, const FilterLed &f2, const Ring &center, Int_t numleds, Int_t numrings)
+{
+    // Get tracking coordinates
+    //const XY xy = fCRaDec->GetCoordinates();  // [h, deg]
+
+    if (center.GetX()<=0 && center.GetY()<=0)
+    {
+        cout << "Couldn't determine center of the camera." << endl;
+        //if (fTPoint->IsDown() && fCosy && fCosy->GetDriveCom())
+        //    fCosy->GetDriveCom()->SendTPoint(false, 'T', fTPointStarMag, fTPointStarName, AltAz(), ZdAz(), xy, 0, 0, t, center, Led(), numleds, numrings);    // Report
+        return;
+    }
+
+    // Try to find the star
+    Leds leds;
+    f.FindStar(leds, (Int_t)center.GetX(), (Int_t)center.GetY(), true);
+
+    // Check whether star found
+    if (leds.size()==0)
+    {
+        cout << "No star found." << endl;
+        //if (fTPoint->IsDown() && fCosy && fCosy->GetDriveCom())
+        //    fCosy->GetDriveCom()->SendTPoint(false, 'T', fTPointStarMag, fTPointStarName, AltAz(), ZdAz(), xy, 0, 0, t, center, Led(), numleds, numrings);    // Report
+        return;
+    }
+
+    cout << "Found star @ " << flush;
+
+    const Led &star = leds.front();
+
+    star.Print();
+    f2.MarkPoint(star.GetX(), star.GetY(), 2<<2);
+
+    return star;
+
+    const RaDec rd(xy.X()*MAstro::HorToRad(), xy.Y()*TMath::DegToRad());
+
+    // Initialize Star Catalog on the camera plane
+    MGeomCamMagic geom;
+    MAstroCamera ac;
+    ac.SetGeom(geom);
+    ac.SetRadiusFOV(3);
+    //ac.SetObservatory(*fSao);
+    ac.SetTime(t);
+    ac.SetRaDec(rd.Ra(), rd.Dec());
+
+    // Convert from Pixel to millimeter (1pix=2.6mm) [deg/pix / deg/mm = mm/pix]
+    // Correct for abberation.
+    const double sec_per_pix = 45.311;
+    const double mm_to_deg   = 0.011693;
+    const Double_t conv = sec_per_pix/3600/mm_to_deg / 1.0713;
+
+    // Adapt coordinate system (GUIs and humans are counting Y in different directions)
+    const Double_t dx = (star->GetX()-center.GetX())*conv;
+    const Double_t dy = (center.GetY()-star->GetY())*conv;
+
+    // Convert offset from camera plane into local ccordinates
+    Double_t dzd, daz;
+    ac.GetDiffZdAz(dx, dy, dzd, daz);
+
+    ZdAz zdaz(dzd,daz);
+
+    // Check TPoint data set request
+    if (!fMode->IsEntryChecked(IDM_kTpointMode) || !fTPoint->IsDown())
+        return;
+
+    // If no file open: open new file
+    if (!fOutTp)
+    {
+        //
+        // open tpoint file
+        //
+
+        const TString name = MCosy::GetFileName("tpoint", "tpoint", "txt");
+        cout << "TPoint File ********* " << name << " ********** " << endl;
+
+        fOutTp = new ofstream(name);
+        *fOutTp << "Magic Model  TPOINT data file" << endl;
+        *fOutTp << ": ALTAZ" << endl;
+        *fOutTp << "49 48 0 ";
+        *fOutTp << t << endl;
+        // temp(°C) pressure(mB) height(m) humidity(1) wavelength(microm) troplapserate(K/m
+    }
+
+    // Output Ra/Dec the drive system thinks that it is currently tracking
+    //cout << "TPoint Star: " << xy.X() << "h " << xy.Y() << "°" << endl;
+
+    // From the star position in the camera we calculate the Alt/Az
+    // position we are currently tracking (real pointing position)
+    fSao->SetMjd(t.GetMjd());
+    AltAz za0 = fSao->CalcAltAz(rd)*kRad2Deg;
+
+    //ZdAz za0 = fSao->GetZdAz();
+    za0 -= AltAz(-dzd, daz);
+    fAltAzOffsetFromTp = AltAz(-dzd, daz);
+    fTimeFromTp=t;
+
+    // From the Shaftencoders we get the current 'pointing' position
+    // as it is seen by the drive system (system pointing position)
+    const ZdAz za1 = fCosy->GetSePos()*360; // [deg]
+
+
+    // Write real pointing position
+    //cout << "     Alt/Az: " << za0.Alt() << "° " << za0.Az() << "°" << endl;
+    *fOutTp << setprecision(7) << za0.Az() << " " << za0.Alt() << " ";
+
+    // Write system pointing position
+    //cout << "     SE-Pos: " << 90-za1.Zd() << "° " << za1.Az() << "°" << endl;
+    *fOutTp << fmod(za1.Az()+360, 360) << " " << 90-za1.Zd();
+
+    *fOutTp << " " << xy.X() << " " << xy.Y();
+    *fOutTp << " " << -dzd << " " << -daz;
+    *fOutTp << " " << setprecision(11) << t.GetMjd();
+    *fOutTp << " " << setprecision(4) << center.GetMag();
+    *fOutTp << " " << star->GetMag();
+    *fOutTp << " " << center.GetX() << " " << center.GetY();
+    *fOutTp << " " << star->GetX() << " " << star->GetY();
+    *fOutTp << " " << numleds << " " << numrings;
+    *fOutTp << " 0 0 0";
+    *fOutTp << " " << fTPointStarMag << " " << fTPointStarName;
+    *fOutTp << endl;
+
+    gLog << all << "TPoint successfully taken." << endl;
+
+    MLog &outrep = *fCosy->GetOutRep();
+    if (outrep.Lock("MStarguider::FindStar"))
+    {
+        outrep << "FINDSTAR-REPORT 00 " << MTime(-1) << " " << setprecision(7);
+        outrep << 90-za0.Alt() << " " << za0.Az() << " ";
+        outrep << za1.Zd() << " " << za1.Az() << " ";
+        outrep << xy.X() << " " << xy.Y() << " ";
+        outrep << -dzd << " " << -daz << " ";
+        outrep << star->GetX() << " " << star->GetY() << " ";
+        outrep << center.GetX() << " " << center.GetY() << " ";
+        outrep << dx/conv << " " << dy/conv << " " << star->GetMag();
+        outrep << setprecision(11) << t.GetMjd() << endl;
+        outrep.UnLock("MStarguider::FindStar");
+    }
+    
+//    return zdaz;
+
+    if (!fCosy)
+        return;
+
+    MDriveCom *com = fCosy->GetDriveCom();
+    if (!com)
+        return;
+
+    com->SendTPoint(true, 'T', fTPointStarMag, fTPointStarName, za0, za1, xy, -dzd, -daz, t, center, *star, numleds, numrings);    // Report
+}
+*/
+
+void MStarguider::WritePNG(const char *name, const byte *gbuf, const byte *cbuf)
+{
+    string fname(name);
+    if (fname.size()<4 || fname.compare(fname.size()-4,4, ".png")==0)
+        fname += ".png";
+
+    cout << "Writing PNG '" << fname << "'" << endl;
+
+#ifdef HAVE_PNG
+    //
+    // open file
+    //
+    FILE *fd = fopen(fname.c_str(), "w");
+    if (!fd)
+    {
+        cout << "Warning: Cannot open file for writing." << endl;
+        return;
+    }
+
+    //
+    // allocate memory
+    //
+    png_structp fPng = png_create_write_struct(PNG_LIBPNG_VER_STRING,
+                                               NULL, NULL, NULL);
+
+    if (!fPng)
+    {
+        cout << "Warning: Unable to create PNG structure" << endl;
+        fclose(fd);
+        return;
+    }
+
+
+    png_infop fInfo = png_create_info_struct(fPng);
+
+    if (!fInfo)
+    {
+        cout << "Warning: Unable to create PNG info structure" << endl;
+        png_destroy_write_struct (&fPng, NULL);
+        fclose(fd);
+        return;
+    }
+
+    fInfo->width      = 768;
+    fInfo->height     = 576;
+    fInfo->bit_depth  = 8;
+    fInfo->color_type = PNG_COLOR_TYPE_RGB;
+//    fInfo->color_type = PNG_COLOR_TYPE_GRAY;
+
+    //
+    // set jump-back point in case of errors
+    //
+    if (setjmp(fPng->jmpbuf))
+    {
+        cout << "longjmp Warning: PNG encounterd an error!" << endl;
+        png_destroy_write_struct (&fPng, &fInfo);
+        fclose(fd);
+        return;
+    }
+
+    //
+    // connect file to PNG-Structure
+    //
+    png_init_io(fPng, fd);
+
+    // png_set_compression_level (fPng, Z_BEST_COMPRESSION);
+
+    //
+    // Write header
+    //
+    png_write_info(fPng, fInfo);
+
+    png_byte buf[768*576*3];
+
+    png_byte *d = buf;
+    const byte *g = gbuf;
+    const byte *c = cbuf;
+
+    // d=destination, s1=source1, s2=source2, e=end
+    while (d<buf+768*576*3)
+    {
+        if (fScreenshotColor && *c)
+        {
+            *d++ = ((*c>>4)&0x3)*85;
+            *d++ = ((*c>>2)&0x3)*85;
+            *d++ = ((*c++ )&0x3)*85;
+            g++;
+        }
+        else
+        {
+            *d++ = *g;
+            *d++ = *g;
+            *d++ = *g++;
+            c++;
+        }
+    }
+
+    //
+    // Write bitmap data
+    //
+    for (unsigned int y=0; y<768*576*3; y+=768*3)
+	png_write_row (fPng, buf+y);
+
+    //
+    // Write footer
+    //
+    png_write_end (fPng, fInfo);
+
+    //
+    // free memory
+    //
+    png_destroy_write_struct (&fPng, &fInfo);
+
+    fclose(fd);
+#else
+    cout << "Sorry, no png support compiled into tpoint." << endl;
+#endif
+}
+
+bool MStarguider::Interpolate(const unsigned long n, byte *img) const
+{
+    if (fIntRate<=1)
+        return true;
+
+    const int rate = fTPointMode>0 ? 5*25 : fIntRate;
+
+    static unsigned short myimg[768*576];
+
+    unsigned short *f = myimg;
+
+    const byte *end = img+768*576;
+
+    if (n%rate)
+    {
+        while (img<end)
+            *f++ += *img++;
+        return false;
+    }
+    else
+    {
+        while (img<end)
+        {
+            *img = (*img + *f)/rate;
+            ++img;
+            *f++ = 0;
+        }
+
+        return true;
+    }
+}
+
+void MStarguider::ProcessFrame(const unsigned long n, byte *img,
+			       struct timeval *tm)
+{
+    if (!Interpolate(n, img))
+        return;
+
+    if (fTPointMode==2)
+    {
+        fTPointMode=1;
+        return;
+    }
+
+    byte cimg[768*576];
+    memset(cimg, 0, 768*576);
+
+    FilterLed f (img,  768, 576, 2.5); // 2.5
+    FilterLed f2(cimg, 768, 576);      // former color 0xb0
+
+    if (!fTPointMode && fScreenshotName.empty() && fDisplay->IsEntryChecked(IDM_kStretch))
+        f.Stretch();
+
+    // Visual Filter, whole FOV
+    if (!fTPointMode && fDisplay->IsEntryChecked(IDM_kFilter))
+    {
+        vector<Led> leds;
+        f.Execute(leds, 768/2, 576/2);
+        for (auto it=leds.begin(); it!=leds.end(); it++)
+            f.MarkPoint(*it);
+    }
+
+    // Find Center of Camera for Caos and Tpoints
+    int numleds  = 0;
+    int numrings = 0;
+    Ring center(-1, -1);//(5, 5);
+
+    if (fTPointMode || fDisplay->IsEntryChecked(IDM_kCaosFilter))
+    {
+        center   = fCaos->Run(img);
+        numleds  = fCaos->GetNumDetectedLEDs();
+        numrings = fCaos->GetNumDetectedRings();
+    }
+
+    //cout << "cx=" << center.GetX() << "   cy=" << center.GetY() << "   Nled=" << numleds << "   Nrings=" << numrings << endl;
+
+    // Find Star at Center---for Tpoint Procedure
+    Led star(-1, -1);
+    if (center.GetX()>0 && center.GetY()>0)
+    {
+        if (fTPointMode || fDisplay->IsEntryChecked(IDM_kFindStar))
+        {
+            // Set search Paremeters (FIXME: Get them from user input!)
+            f.SetCut(fFindStarCut+1.5);  // FindStar.CleaningLevel
+            f.SetBox(fFindStarBox+12/*+80*/);  // FindStar.SizeBox
+
+            // Try to find the star
+            vector<Led> leds;
+            f.FindStar(leds, (Int_t)center.GetX(), (Int_t)center.GetY(), true);
+
+            // Check whether star found
+            if (leds.size()>0)
+            {
+                //cout << "Found star @ " << flush;
+                //leds[0].Print();
+                f2.MarkPoint(leds[0].GetX(), leds[0].GetY(), 2<<2);
+                star = leds[0];
+            }
+        }
+
+        // DrawZoomImage(img);
+        // DrawCosyImage(img);
+
+        // Position corresponding to the camera center (53.2, 293.6)
+        // Draw Circles around center of Camera
+        if (fTPointMode || fDisplay->IsEntryChecked(IDM_kCaosFilter))
+        {
+            f2.DrawCircle(center, 0x0a);
+            f2.DrawCircle(center,   7.0,
+                          fDisplay->IsEntryChecked(IDM_kFindStar)?3:0xb0);
+            //f2.DrawCircle(center, 115.0, 0x0a);
+            //f2.DrawCircle(center, 230.0, 0x0a);
+            //f2.DrawCircle(center, 245.0, 0x0a);
+        }
+    }
+
+    if (fTPointMode ||
+        fDisplay->IsEntryChecked(IDM_kCaosFilter) ||
+        fDisplay->IsEntryChecked(IDM_kFindStar))
+        fImage->DrawColImg(img, cimg);
+    else
+        fImage->DrawImg(img);
+
+    if (fTPointMode && !fScreenshotName.empty())
+    {
+        WritePNG(fScreenshotName.c_str(), img, cimg);
+        fScreenshotName = "";
+        fTPointMode = 0;
+        return;
+    }
+
+
+    if (star.GetX()<0 || star.GetY()<0 || fTPointMode==0)
+        return;
+
+    if (fTPointMode==1)
+        fTPointMode=0;
+
+    // Convert from Pixel to millimeter (1pix=2.6mm) [deg/pix / deg/mm = mm/pix]
+    // Correct for abberation.
+
+    //const float Dleds =     510; // 5.96344 deg
+    //const float Dpix  = 2*237.58;
+
+    // The DC reflector elongates light from off axis sources
+    // This is a correction. It is 7% for MAGIC (1:1) and
+    // less for FACT (1:1.4). This is an estimate from a
+    // Orbit mode observation at 0.17deg distance to the
+    // camera center [4.90m might also not be very accurate
+    // depending on the position of the CCD camera]
+    const double abberation  = 1.0638; //1.0713;
+    const double sec_per_pix = 45.14;  //45.311;  (atan(510mm/2 / 4.90m) / 237.58)           // FACT LEDs
+
+    const double conv = sec_per_pix/abberation;
+
+    const double dx = star.GetX()-center.GetX();
+    const double dy = star.GetY()-center.GetY();
+
+    //const double dxx = - conv * (star.GetX()-center.GetX());
+    //const double dyy =   conv * (star.GetY()-center.GetY());
+
+    const double dphi = - center.GetPhi() * M_PI/180;
+
+    // The sign is because the pixels are not counted in
+    // both directions in the same direction as Zd/Az
+    const double dxx = - conv * (dx*cos(dphi) - dy*sin(dphi));
+    const double dyy =   conv * (dx*sin(dphi) + dy*cos(dphi));
+
+    double arr[11] = {
+        dxx, dyy,
+        double(numleds), double(numrings),
+        center.GetX(), center.GetY(), center.GetMag(),
+        star.GetX(),   star.GetY(),   star.GetMag(),
+        center.GetPhi()
+    };
+
+    fDimData.setData(arr, 11*sizeof(double));
+    fDimData.setQuality(0);
+    fDimData.setTimestamp(tm->tv_sec, tm->tv_usec/1000);
+    fDimData.updateService();
+}
+
+/*
+void MStarguider::UpdatePosZoom()
+{
+    MString txt;
+    if (fDisplay->IsEntryChecked(IDM_kCatalog))
+    {
+        // FIXME: Necessary?
+        fSao->Now();
+        AltAz aa = fSao->CalcAltAzFromPix(fDx, fDy)*kRad2Deg;
+        if (aa.Az()<0)
+            aa.Az(aa.Az()+360);
+        txt.Form("(%d, %d) %.1fd/%.1fd", fDx, fDy, -aa.Alt(), aa.Az()-180);
+    }
+    else
+        txt.Form("(%d, %d)", fDx, fDy);
+    fPosZoom->SetText(txt);
+}
+
+Bool_t MStarguider::HandleDoubleClick(Event_t *event)
+{
+    const Int_t w = fImage->GetWidth();
+    const Int_t h = fImage->GetHeight();
+    const Int_t x = fImage->GetX();
+    const Int_t y = fImage->GetY();
+
+    if (!(event->fX>x && event->fX<x+w && event->fY>y && event->fY<y+h))
+        return kTRUE;
+
+    Int_t dx = event->fX-x;
+    Int_t dy = event->fY-y;
+
+    if (dx<kZOOM/4) dx=kZOOM/4;
+    if (dy<kZOOM/4) dy=kZOOM/4;
+    if (dx>766-kZOOM/4) dx=766-kZOOM/4;
+    if (dy>574-kZOOM/4) dy=574-kZOOM/4;
+
+    fDx = dx;
+    fDy = dy;
+
+    //UpdatePosZoom();
+    return kTRUE;
+}
+
+*/
+
+/// Overwritten DimCommand::commandHandler
+void MStarguider::commandHandler()
+{
+    DimCommand *cmd = getCommand();
+    if (!cmd)
+        return;
+
+    if (cmd==&fDimTPoint)
+    {
+        fTPointMode = 2;
+        fScreenshotName = "";
+        cout << "DimCommand[TPOINT]: " << cmd->itsSize << " " << string((char*)cmd->itsData, cmd->itsSize) << endl;
+        return;
+    }
+
+    if (cmd==&fDimScreenshot && fTPointMode==0)
+    {
+        if (cmd->itsSize<2)
+            return;
+
+        fTPointMode = 2;
+        fScreenshotColor = ((uint8_t*)cmd->itsData)[0];
+        fScreenshotName = string((char*)cmd->itsData+1, cmd->itsSize-1);
+        cout << "DimCommand[SCREENSHOT]: " << fScreenshotName << endl;
+        return;
+    }
+
+    cout << "DimCommand[UNKNOWN]: " << cmd->itsSize << " " << string((char*)cmd->itsData, cmd->itsSize) << endl;
+}
Index: branches/FACT++_part_filenames/drive/MStarguider.h
===================================================================
--- branches/FACT++_part_filenames/drive/MStarguider.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MStarguider.h	(revision 18732)
@@ -0,0 +1,106 @@
+#ifndef COSY_MStarguider
+#define COSY_MStarguider
+
+#include "PixClient.h"
+#include "MGImage.h"
+#include "Led.h"
+#include "Camera.h"
+
+#include "dic.hxx"
+#include "dis.hxx"
+
+#include <TGButton.h>
+
+class TGMenuBar;
+class TGPopupMenu;
+class TGTextEntry;
+
+class PixGetter;
+
+class MGImage;
+class MCaos;
+class FilterLed;
+class Ring;
+
+//class Leds;
+class MStarguider : public PixClient, public TGMainFrame, public DimCommandHandler
+{
+private:
+    DimService fDimData;
+    DimCommand fDimTPoint;
+    DimCommand fDimScreenshot;
+
+    Camera        *fGetter;
+
+    TGMenuBar     *fMenu;
+    MGImage       *fImage;
+
+    TGPopupMenu   *fDisplay;
+    TGPopupMenu   *fSetup;
+    TGPopupMenu   *fInterpol;
+
+    TGPopupMenu   *fCaosWrite;
+    TGPopupMenu   *fCaosPrint;
+    TGPopupMenu   *fCaosAnalyse;
+    TGPopupMenu   *fCaOs;
+
+private:
+    MCaos         *fCaos;
+    TTimer        *fTimer;
+
+    Int_t fDx;
+    Int_t fDy;
+
+    byte fIntRate;
+//    int  fWrtRate;
+
+    Double_t fLastBright;
+    Double_t fRadius; // LED radius [cm]
+
+    Float_t fFindStarCut;
+    Int_t   fFindStarBox;
+
+    int fTPointMode;
+
+    bool fScreenshotColor;
+    std::string fScreenshotName;
+
+    void WritePNG(const char *name, const byte *gbuf, const byte *cbuf);
+
+    void Toggle(TGPopupMenu *p, UInt_t id);
+    void SwitchOff(TGPopupMenu *p, UInt_t id);
+    bool Interpolate(const unsigned long n, byte *img) const;
+
+    void InitGui(Int_t channel);
+
+    //void DrawZoomImage(const byte *img);
+    //void DrawCosyImage(const byte *img);
+
+    Bool_t HandleTimer(TTimer *t);
+
+    void SetCut(Double_t cut);
+
+public:
+    MStarguider(Int_t channel);
+    virtual ~MStarguider();
+
+    //void SetupEnv(TEnv &env);
+
+    void Layout();
+    void CloseWindow();
+
+    Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
+
+    //Bool_t HandleDoubleClick(Event_t *event);
+
+    //
+    // Execution of one frame - this function may be overloaded!
+    //
+    void ProcessFrame(const unsigned long n, byte *img, struct timeval *tm);
+
+    void commandHandler();       /// Overwritten DimCommand::commandHandler
+};
+
+#endif
+
+
Index: branches/FACT++_part_filenames/drive/MThread.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MThread.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MThread.cc	(revision 18732)
@@ -0,0 +1,100 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz  1/2008 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2008
+!
+!
+\* ======================================================================== */
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// MThread
+//
+// Implementing a slightly simplified interface to multi-threading
+// based on TThread
+//
+//////////////////////////////////////////////////////////////////////////////
+#include "MThread.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+// Return the thread's state as string
+//
+TString MThread::GetThreadStateStr() const
+{
+    switch (fThread.GetState())
+    {
+    case TThread::kInvalidState:
+        return "Invalid - thread was not created properly";
+    case TThread::kNewState:
+        return "New - thread object exists but hasn't started";
+    case TThread::kRunningState:
+        return "Running - thread is running";
+    case TThread::kTerminatedState:
+        return "Terminated - thread has terminated but storage has not yet been reclaimed (i.e. waiting to be joined)";
+    case TThread::kFinishedState:
+        return "Finished - thread has finished";
+    case TThread::kCancelingState:
+        return "Canceling - thread in process of canceling";
+    case TThread::kCanceledState:
+        return "Canceled - thread has been canceled";
+    case TThread::kDeletingState:
+        return "Deleting - thread in process of deleting";
+    };
+    return "Unknown";
+}
+
+/*
+{
+    TMethodCall call(cl, "Name", 0);
+
+    if (!call.IsValid())
+        return 0;
+
+    //const char    *GetParams() const { return fParams.Data(); }
+    //const char    *GetProto() const { return fProto.Data(); }
+
+    switch (call.ReturnType())
+    {
+    case kLong:
+        break;
+    case kDouble:
+        break;
+    case kString:
+        break;
+    case kOther:
+        break;
+    case kNone:
+        break;
+    }
+
+    // NOTE execute functions are locked by a global mutex!!!
+
+   void     Execute(void *object);
+   void     Execute(void *object, Long_t &retLong);
+   void     Execute(void *object, Double_t &retDouble);
+   void     Execute(void *object, char **retText);
+
+   void     Execute();
+   void     Execute(Long_t &retLong);
+   void     Execute(Double_t &retDouble);
+}
+*/
Index: branches/FACT++_part_filenames/drive/MThread.h
===================================================================
--- branches/FACT++_part_filenames/drive/MThread.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MThread.h	(revision 18732)
@@ -0,0 +1,79 @@
+#ifndef MARS_MThread
+#define MARS_MThread
+
+#ifndef ROOT_TThread
+#include <TThread.h>
+#endif
+
+class MThread // We don't want MThread to be derived from TObject
+{
+private:
+    TThread fThread;
+
+    Int_t fNumCleanups;
+
+    virtual void CleanUp() { }
+    static void MapCleanUp(void *arg)
+    {
+        MThread *th = (MThread*)arg;
+        th->CleanUp();
+    }
+
+    virtual Int_t Thread() = 0;
+    static void *MapThread(void *arg)
+    {
+        // GetPriority();     High: -1 - -20, Norm: 0, Low: 1-20
+        // pthread_setschedprio(SelfId(), priority);
+        // 0: ok,
+
+        TThread::CleanUpPush((void*)&MapCleanUp, arg);
+
+        MThread *th = (MThread*)arg;
+        return reinterpret_cast<void*>(th->Thread());
+    }
+
+public:
+    MThread(TThread::EPriority pri = TThread::kNormalPriority) :
+        fThread(MapThread, this, pri), fNumCleanups(0) { }
+    MThread(const char *thname, TThread::EPriority pri = TThread::kNormalPriority) :
+        fThread(thname, MapThread, this, pri), fNumCleanups(0) { }
+    virtual ~MThread() { }
+
+    // Setter: Thread control
+    Int_t RunThread(void *arg = 0) { return fThread.Run(arg); }
+
+    // Send cancel request and wait for cancellation
+    // 13 is returned if thread is not running,
+    // the return code of Join otherwise
+    Int_t CancelThread(void **ret = 0) {
+        const Int_t rc = fThread.Kill();
+        if (rc==13) // Thread not running
+            return rc;
+        return fThread.Join(ret);
+    }
+
+    // Int_t            Kill() { return fThread.Kill(); }
+    // Long_t           Join(void **ret = 0) { return fThread.Join(ret); }
+
+    // void             SetPriority(EPriority pri)
+    // void             Delete(Option_t *option="") { TObject::Delete(option); }
+
+    // Getter
+    TThread::EState  GetThreadState() const { return fThread.GetState(); }
+    TString          GetThreadStateStr() const;
+    Long_t           GetThreadId() const { return fThread.GetId(); }
+    // EPriority        GetPriority() const { return fPriority; }
+
+    Bool_t IsThreadRunning()  const { return fThread.GetState()==TThread::kRunningState; }
+    Bool_t IsThreadCanceled() const { return fThread.GetState()==TThread::kCancelingState; }
+
+    // This is a version of usleep which is a cancel point
+    static void Sleep(UInt_t us)
+    {
+        TThread::SetCancelOn();
+        usleep(us);
+        TThread::SetCancelOff();
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/MVideo.cc
===================================================================
--- branches/FACT++_part_filenames/drive/MVideo.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MVideo.cc	(revision 18732)
@@ -0,0 +1,1123 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz 1/2008 <mailto:thomas.bretz@epfl.ch>
+!
+!   Copyright: MAGIC Software Development, 2000-2011
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MVideo
+//
+// Interface to Video4Linux at a simple level
+//
+// V4L2 spcifications from http://v4l2spec.bytesex.org/spec/
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "MVideo.h"
+
+// iostream
+#include <iostream>
+
+// open
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <unistd.h>    // usleep
+#include <errno.h>     // errno
+#include <sys/mman.h>  // mmap
+#include <sys/ioctl.h> // ioctl
+
+#include <TEnv.h>
+#include <TString.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#undef DEBUG
+
+using namespace std;
+
+//ClassImp(MVideo);
+
+MVideoCtrl::MVideoCtrl(const v4l2_queryctrl &ctrl)
+{
+    fId      = ctrl.id;
+    fName    = (const char*)ctrl.name;
+    fMinimum = ctrl.minimum;
+    fMaximum = ctrl.maximum;
+    fStep    = ctrl.step;
+    fDefault = ctrl.default_value;
+}
+
+// -------------------------------------------------------------
+//
+// Constructor. Specify the device (e.g. "/dev/video") to be used
+//
+MVideo::MVideo(const char *path) : fPath(path), fFileDesc(-1), fMapBuffer(0)
+{
+    Reset();
+
+    fControls.SetOwner();
+}
+
+// -------------------------------------------------------------
+//
+// Internal function to reset the descriptors of the device
+//
+void MVideo::Reset()
+{
+    fInputs.clear();
+    fStandards.clear();
+
+    memset(&fCaps,    0, sizeof(fCaps));
+    memset(&fChannel, 0, sizeof(fChannel));
+//    memset(&fBuffer,  0, sizeof(fBuffer));
+    memset(&fAbil,    0, sizeof(fAbil));
+
+    fFileDesc = -1;
+    fMapBuffer = 0;
+    fChannel.channel = -1;
+    fAbil.tuner = -1;
+
+    fControls.Delete();
+}
+
+// -------------------------------------------------------------
+//
+// Mapper around ioctl for easier access to the device
+//
+int MVideo::Ioctl(int req, void *opt, bool allowirq, bool force) const
+{
+    if (fFileDesc<0)
+    {
+        gLog << err << "ERROR - Ioctl: Device " << fPath << " not open." << endl;
+        return -1;
+    }
+
+    while (1)
+    {
+        // FIXME: This call is a possible source for a hangup
+        const int rc = ioctl(fFileDesc, req, opt);
+        if (rc==0)
+            return 0;
+
+        if (errno==EINVAL)
+            return 1;
+
+        if (!allowirq && errno==EAGAIN)
+            return -4;
+
+        cout <<"errno="<< errno << endl;
+
+        // errno== 4: Interrupted system call (e.g. by alarm())
+        // errno==16: Device or resource busy
+        if (errno==4 || errno==16)
+        {
+            if (!allowirq && errno==4)
+                return -4;
+
+            gLog << err << "ERROR - MVideo::Ioctl 0x" << hex << req << ": errno=" << dec << errno << " - ";
+            gLog << strerror(errno) << " (rc=" << rc << ")" << endl;
+            usleep(10);
+            continue;
+        }
+
+        if (!force)
+        {
+            gLog << err << "ERROR - MVideo::Ioctl 0x" << hex << req << ": errno=" << dec << errno << " - ";
+            gLog << strerror(errno) << " (rc=" << rc << ")" << endl;
+        }
+        return rc;
+    }
+    return -1;
+}
+
+// -------------------------------------------------------------
+//
+// Read the capabilities of the device
+//
+Bool_t MVideo::GetCapabilities()
+{
+    return Ioctl(VIDIOCGCAP, &fCaps)!=-1;
+}
+
+// -------------------------------------------------------------
+//
+// Read the properties of the device
+//
+Bool_t MVideo::GetProperties()
+{
+    return Ioctl(VIDIOCGPICT, &fProp)!=-1;
+}
+
+// -------------------------------------------------------------
+//
+// Read the video standard
+//
+Bool_t MVideo::GetVideoStandard()
+{
+    return Ioctl(VIDIOC_G_STD, &fVideoStandard)==-1;
+}
+
+// -------------------------------------------------------------
+//
+// Read the abilities of the tuner
+//
+Bool_t MVideo::GetTunerAbilities()
+{
+    fAbil.tuner = 0; // FIXME?
+    return Ioctl(VIDIOCGTUNER, &fAbil)!=-1;
+}
+
+// -------------------------------------------------------------
+//
+// Enumerate (get) all controls from the device and store them
+// as MVideoCtrl in fControls, starting with the id given as
+// argument.
+//
+Bool_t MVideo::EnumerateControls(UInt_t id)
+{
+    struct v4l2_queryctrl qctrl;
+    memset(&qctrl, 0, sizeof(qctrl));
+    qctrl.id = id;
+
+    while (1)
+    {
+        if (Ioctl(VIDIOC_QUERYCTRL, &qctrl, true, true)==-1)
+            break;
+
+        if (qctrl.maximum<=qctrl.minimum)
+            continue;
+
+        fControls.Add(new MVideoCtrl(qctrl));
+
+        qctrl.id++;
+    }
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Enumerate (get) all basic and private controls from the
+// device and store them as MVideoCtrl in fControls.
+//
+Bool_t MVideo::EnumerateControls()
+{
+    if (!EnumerateControls(V4L2_CID_BASE))
+        return kFALSE;
+    if (!EnumerateControls(V4L2_CID_PRIVATE_BASE))
+        return kFALSE;
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Reset a given control to it's default value as defined
+// by the device.
+//
+Bool_t MVideo::ResetControl(MVideoCtrl &vctrl) const
+{
+    return WriteControl(vctrl, vctrl.fDefault);
+}
+
+// -------------------------------------------------------------
+//
+// Reset all enumereated device controls to their default.
+// The default is defined by the device iteself.
+//
+Bool_t MVideo::ResetControls() const
+{
+    Bool_t rc = kTRUE;
+
+    TIter Next(&fControls);
+    MVideoCtrl *ctrl = 0;
+    while ((ctrl=((MVideoCtrl*)Next())))
+        if (!ResetControl(*ctrl))
+        {
+            gLog << err << "ERROR - Could not reset " << ctrl->fName << "." << endl;
+            rc = kFALSE;
+        }
+
+    return rc;
+}
+
+// -------------------------------------------------------------
+//
+//  Read the value of the given control from the device
+// and store it back into the given MVideoCtrl.
+//
+Bool_t MVideo::ReadControl(MVideoCtrl &vctrl) const
+{
+    struct v4l2_control ctrl = { vctrl.fId, 0 };
+    if (Ioctl(VIDIOC_G_CTRL, &ctrl)==-1)
+        return kFALSE;
+
+    vctrl.fValue = ctrl.value;
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Write the given value into the given control of the device.
+// On success the value is stored in the given MVideoCtrl.
+//
+Bool_t MVideo::WriteControl(MVideoCtrl &vctrl, Int_t val) const
+{
+    if (val<vctrl.fMinimum)
+    {
+        gLog << err << "ERROR - Value of " << val << " below minimum of " << vctrl.fMinimum << " for " << vctrl.fName << endl;
+        return kFALSE;
+    }
+
+    if (val>vctrl.fMaximum)
+    {
+        gLog << err << "ERROR - Value of " << val << " above maximum of " << vctrl.fMaximum << " for " << vctrl.fName << endl;
+        return kFALSE;
+    }
+
+    struct v4l2_control ctrl = { vctrl.fId, val };
+    if (Ioctl(VIDIOC_S_CTRL, &ctrl)==-1)
+        return kFALSE;
+
+    vctrl.fValue = val;
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Set all controls from a TEnv. Note that all whitespaces
+// and colons in the control names (as defined by the name of
+// the MVideoCtrls stored in fControls) are replaced by
+// underscores.
+//
+Bool_t MVideo::SetControls(TEnv &env) const
+{
+    Bool_t rc = kTRUE;
+
+    TIter Next(&fControls);
+    TObject *o = 0;
+    while ((o=Next()))
+    {
+        if (!env.Defined(o->GetName()))
+            continue;
+
+        TString str = env.GetValue(o->GetName(), "");
+        str = str.Strip(TString::kBoth);
+        str.ReplaceAll(" ", "_");
+        str.ReplaceAll(":", "_");
+        if (str.IsNull())
+            continue;
+
+        MVideoCtrl &ctrl = *static_cast<MVideoCtrl*>(o);
+
+        const Int_t val = str=="default" || str=="def" ?
+            ctrl.fDefault : env.GetValue(o->GetName(), 0);
+
+        if (!WriteControl(ctrl, val))
+            rc = kFALSE;
+    }
+
+    return rc;
+}
+
+template<class S>
+Bool_t MVideo::Enumerate(vector<S> &vec, int request)
+{
+    for (int i=0; ; i++)
+    {
+        S input;
+        input.index = i;
+
+        const int rc = Ioctl(request, &input);
+        if (rc<0)
+            return kFALSE;
+        if (rc==1)
+            return kTRUE;
+
+        vec.push_back(input);
+    }
+
+    return kFALSE;
+}
+
+void MVideo::PrintInputs() const
+{
+    gLog << all;
+    for (vector<v4l2_input>::const_iterator it=fInputs.begin(); it!=fInputs.end(); it++)
+    {
+        gLog << "Input #" << it->index << endl;
+        gLog << " - " << it->name << endl;
+        gLog << " - " << (it->type==V4L2_INPUT_TYPE_CAMERA?"Camera":"Tuner") << endl;
+        gLog << " - TV Standard: " << hex << it->std << dec << endl;
+
+        gLog << " - Status: 0x" << hex << it->status;
+        if (it->status&V4L2_IN_ST_NO_POWER)
+            gLog << " NoPower";
+        if (it->status&V4L2_IN_ST_NO_SIGNAL)
+            gLog << " NoSignal";
+        if (it->status&V4L2_IN_ST_NO_COLOR)
+            gLog << " NoColor";
+        if (it->status&V4L2_IN_ST_NO_H_LOCK)
+            gLog << " NoHLock";
+        if (it->status&V4L2_IN_ST_COLOR_KILL)
+            gLog << " ColorKill";
+        gLog << endl;
+
+        /*
+         TV Standard
+         ===========
+         #define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
+         #define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
+         #define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
+         #define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
+         #define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
+         #define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
+         #define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
+         #define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
+
+         #define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
+         #define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
+         #define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
+         #define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
+         V4L2_STD_PAL_60 is a hybrid standard with 525 lines, 60 Hz refresh rate, and PAL color modulation with a 4.43 MHz color subcarrier. Some PAL video recorders can play back NTSC tapes in this mode for display on a 50/60 Hz agnostic PAL TV.
+
+         #define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)
+         #define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)
+         #define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)
+         V4L2_STD_NTSC_443 is a hybrid standard with 525 lines, 60 Hz refresh rate, and NTSC color modulation with a 4.43 MHz color subcarrier.
+
+         #define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)
+
+         #define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
+         #define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
+         #define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
+         #define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
+         #define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
+         #define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
+         #define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
+         #define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)
+
+
+         // ATSC/HDTV
+         #define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
+         #define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
+         V4L2_STD_ATSC_8_VSB and V4L2_STD_ATSC_16_VSB are U.S. terrestrial digital TV standards. Presently the V4L2 API does not support digital TV. See also the Linux DVB API at http://linuxtv.org.
+
+         #define V4L2_STD_PAL_BG   (V4L2_STD_PAL_B   | V4L2_STD_PAL_B1    | V4L2_STD_PAL_G)
+         #define V4L2_STD_B        (V4L2_STD_PAL_B   | V4L2_STD_PAL_B1    | V4L2_STD_SECAM_B)
+         #define V4L2_STD_GH       (V4L2_STD_PAL_G   | V4L2_STD_PAL_H     | V4L2_STD_SECAM_G  | V4L2_STD_SECAM_H)
+         #define V4L2_STD_PAL_DK   (V4L2_STD_PAL_D   | V4L2_STD_PAL_D1    | V4L2_STD_PAL_K)
+         #define V4L2_STD_PAL      (V4L2_STD_PAL_BG  | V4L2_STD_PAL_DK    | V4L2_STD_PAL_H    | V4L2_STD_PAL_I)
+         #define V4L2_STD_NTSC     (V4L2_STD_NTSC_M  | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_M_KR)
+         #define V4L2_STD_MN       (V4L2_STD_PAL_M   | V4L2_STD_PAL_N     | V4L2_STD_PAL_Nc   | V4L2_STD_NTSC)
+         #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D | V4L2_STD_SECAM_K   | V4L2_STD_SECAM_K1)
+         #define V4L2_STD_DK       (V4L2_STD_PAL_DK  | V4L2_STD_SECAM_DK)
+         #define V4L2_STD_SECAM    (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G   | V4L2_STD_SECAM_H  | V4L2_STD_SECAM_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)
+         #define V4L2_STD_525_60   (V4L2_STD_PAL_M   | V4L2_STD_PAL_60    | V4L2_STD_NTSC     | V4L2_STD_NTSC_443)
+         #define V4L2_STD_625_50   (V4L2_STD_PAL     | V4L2_STD_PAL_N     | V4L2_STD_PAL_Nc   | V4L2_STD_SECAM)
+         #define V4L2_STD_UNKNOWN  0
+         #define V4L2_STD_ALL      (V4L2_STD_525_60  | V4L2_STD_625_50)
+         */
+
+         /*
+          Status:
+         =======
+         General
+         V4L2_IN_ST_NO_POWER	0x00000001	Attached device is off.
+         V4L2_IN_ST_NO_SIGNAL	0x00000002
+         V4L2_IN_ST_NO_COLOR	0x00000004	The hardware supports color decoding, but does not detect color modulation in the signal.
+
+         Analog Video
+         V4L2_IN_ST_NO_H_LOCK	0x00000100	No horizontal sync lock.
+         V4L2_IN_ST_COLOR_KILL	0x00000200	A color killer circuit automatically disables color decoding when it detects no color modulation. When this flag is set the color killer is enabled and has shut off color decoding.
+
+         Digital Video
+         V4L2_IN_ST_NO_SYNC	0x00010000	No synchronization lock.
+         V4L2_IN_ST_NO_EQU	0x00020000	No equalizer lock.
+         V4L2_IN_ST_NO_CARRIER	0x00040000	Carrier recovery failed.
+
+         VCR and Set-Top Box
+         V4L2_IN_ST_MACROVISION	0x01000000	Macrovision is an analog copy prevention system mangling the video signal to confuse video recorders. When this flag is set Macrovision has been detected.
+         V4L2_IN_ST_NO_ACCESS	0x02000000	Conditional access denied.
+         V4L2_IN_ST_VTR	        0x04000000	VTR time constant. [?]
+         */
+    }
+}
+
+void MVideo::PrintStandards() const
+{
+    gLog << all;
+    for (vector<v4l2_standard>::const_iterator it=fStandards.begin(); it!=fStandards.end(); it++)
+    {
+        gLog << "Index #" << it->index << endl;
+        gLog << " - TV Standard: " << it->name << hex << "(" << it->id << ")" << dec << endl;
+        gLog << " - FPS: " << it->frameperiod.numerator << "/" << it->frameperiod.denominator << endl;
+        gLog << " - Lines: " << it->framelines << endl;
+    }
+}
+
+// -------------------------------------------------------------
+//
+// Open channel ch of the device
+//
+Bool_t MVideo::Open(Int_t ch)
+{
+    const Bool_t rc = Init(ch);
+    if (!rc)
+        Close();
+    return rc;
+}
+
+// -------------------------------------------------------------
+//
+// Open a channel of the device and retriev all necessary
+// informations from the driver. Initialize the shared
+// memory. Other access methods are not supported yet.
+//
+Bool_t MVideo::Init(Int_t channel)
+{
+    if (IsOpen())
+    {
+        gLog << warn << "WARNING - Device " << fPath << " already open." << endl;
+        return kTRUE;
+    }
+
+    gLog << all << "Opening " << fPath << "... " << flush;
+    do
+    {
+        fFileDesc = open(fPath, O_RDWR|O_NONBLOCK, 0);
+        usleep(1);
+    }
+    while (errno==19 && fFileDesc==-1);
+
+    if (fFileDesc == -1)
+    {
+        gLog << err << "ERROR: " << strerror(errno) << endl;
+        return kFALSE;
+    }
+
+    gLog << "done (" << fFileDesc << ")." << endl;
+
+    // Close device on exit
+    if (fcntl(fFileDesc, F_SETFD, FD_CLOEXEC)<0)
+    {
+        gLog << err << "ERROR - Call to fnctl (F_SETFD, FD_CLOEXEC) failed." << endl;
+        return kFALSE;
+    }
+
+
+
+/*
+    if (!Enumerate(fInputs, VIDIOC_ENUMINPUT))
+    {
+        gLog << err << "ERROR - Could not enumerate inputs." << endl;
+        return kFALSE;
+    }
+    PrintInputs();
+
+    if (!Enumerate(fStandards, VIDIOC_ENUMSTD))
+    {
+        gLog << err << "ERROR - Could not enumerate inputs." << endl;
+        return kFALSE;
+    }
+    PrintStandards();
+   */
+
+    int index = 3;
+    if (Ioctl(VIDIOC_S_INPUT, &index)==-1)
+    {
+        gLog << err << "ERROR - Could not set input." << endl;
+        return kFALSE;
+    }
+
+    //check the input
+    if (Ioctl(VIDIOC_G_INPUT, &index))
+    {
+        gLog << err << "ERROR - Could not get input." << endl;
+        return kFALSE;
+    }
+
+    v4l2_input input;
+    memset(&input, 0, sizeof (input));
+    input.index = index;
+    if (Ioctl(VIDIOC_ENUMINPUT, &input))
+    {
+        gLog << err << "ERROR - Could enum input." << endl;
+        return kFALSE;
+    }
+    gLog << "*** Input: " << input.name << " (" << input.index << ")" << endl;
+
+    v4l2_std_id st = 4;//standard.id;
+    if (Ioctl (VIDIOC_S_STD, &st))
+    {
+        gLog << err << "ERROR - Could not set standard." << endl;
+        return kFALSE;
+    }
+
+    v4l2_capability cap;
+    if (Ioctl(VIDIOC_QUERYCAP, &cap))
+    {
+        gLog << err << "ERROR - Could not get capabilities." << endl;
+        return kFALSE;
+    }
+
+    if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
+    {
+        gLog << err << "ERROR - No capture capabaility." << endl;
+        return kFALSE;
+    }
+
+    v4l2_cropcap cropcap;
+    cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+    if (Ioctl(VIDIOC_CROPCAP, &cropcap)==-1)
+    {
+    }
+
+    v4l2_crop crop;
+    crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+    crop.c = cropcap.defrect; /* reset to default */
+
+    if (Ioctl(VIDIOC_S_CROP, &crop))
+    {
+        gLog << err << "Could not reset cropping." << endl;
+        return kFALSE;
+    }
+
+    v4l2_format fmt;
+    fmt.type                = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+    fmt.fmt.pix.width       = 768;
+    fmt.fmt.pix.height      = 576;
+    fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB32;
+
+    if (Ioctl(VIDIOC_S_FMT, &fmt)==-1)
+    {
+        gLog << err << "ERROR - Could not set format." << endl;
+        return kFALSE;
+    }
+    // The image format must be selected before buffers are allocated,
+    // with the VIDIOC_S_FMT ioctl. When no format is selected the driver
+    // may use the last, possibly by another application requested format.
+
+    v4l2_requestbuffers reqbuf;
+    memset (&reqbuf, 0, sizeof (reqbuf));
+
+    reqbuf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+    reqbuf.memory = V4L2_MEMORY_MMAP;
+    reqbuf.count  = 4;//125;
+
+    if (Ioctl(VIDIOC_REQBUFS, &reqbuf)==-1)
+    {
+        gLog << err << "ERROR - Couldn't setup frame buffers." << endl;
+        return kFALSE;
+    }
+
+    gLog << all << "Allocated " << reqbuf.count << " frame buffers." << endl;
+
+    for (unsigned int i=0; i<reqbuf.count; i++)
+    {
+        v4l2_buffer buffer;
+        memset (&buffer, 0, sizeof (buffer));
+
+        buffer.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+	buffer.memory = V4L2_MEMORY_MMAP;
+        buffer.index  = i;
+
+        if (Ioctl(VIDIOC_QUERYBUF, &buffer))
+        {
+            gLog << err << "ERROR - Request of frame buffer " << i << " failed." << endl;
+            return kFALSE;
+        }
+
+        void *ptr = mmap(NULL, buffer.length,
+                         PROT_READ | PROT_WRITE,
+                         MAP_SHARED,
+                         fFileDesc, buffer.m.offset);
+
+        if (MAP_FAILED == ptr)
+        {
+
+            gLog << err << "ERROR - Could not allocate shared memory." << endl;
+            return kFALSE;
+                // If you do not exit here you should unmap() and free()
+                // the buffers mapped so far.
+                //perror ("mmap");
+                //exit (EXIT_FAILURE);
+        }
+
+        fBuffers.push_back(make_pair(buffer, ptr));
+    }
+
+    return kTRUE;
+}
+
+Bool_t MVideo::Start()
+{
+    v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+    if (Ioctl(VIDIOC_STREAMON, &type)==-1)
+    {
+        gLog << err << "ERROR - Couldn't start capturing." << endl;
+        return kFALSE;
+    }
+
+    cout << "*** Stream on" << endl;
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Close device. Free the shared memory
+//
+Int_t MVideo::Close()
+{
+    //    if (!IsOpen())
+    //        return kTRUE;
+/*
+    if (Ioctl(VIDIOC_STREAMON, &fBuffers[0])==-1)
+    {
+        gLog << err << "ERROR - Couldn't start capturing." << endl;
+        return kFALSE;
+    }
+*/
+    Bool_t rc = kTRUE;
+
+    gLog << all << "Closing " << fPath << " (" << fFileDesc << ")... " << flush;
+    if (fFileDesc != -1)
+    {
+        if (close(fFileDesc)<0)
+        {
+            gLog << err << "ERROR!" << endl;
+            rc = kFALSE;
+        }
+        fFileDesc = -1;
+    }
+    gLog << "done." << endl;
+
+    // unmap device memory
+    for (vector<pair<v4l2_buffer,void*> >::iterator it=fBuffers.begin(); it!=fBuffers.end(); it++)
+    {
+        munmap(it->second, it->first.length);
+        fBuffers.erase(it);
+    }
+
+    Reset();
+
+    return rc;
+}
+
+// -------------------------------------------------------------
+//
+// Instruct hardware to start capture into framebuffer frame
+//
+Bool_t MVideo::CaptureStart(unsigned int frame) const
+{
+    frame %= fBuffers.size();
+
+//    cout << "*** CaptureStart " << frame << endl;
+
+    if (Ioctl(VIDIOC_QBUF, const_cast<v4l2_buffer*>(&fBuffers[frame].first))==-1)
+    {
+        gLog << err << "ERROR - Couldn't buffer " << frame << "." << endl;
+        return kFALSE;
+    }
+
+//    cout << "*** " << errno << endl;
+
+    return kTRUE;
+
+    /*
+    struct video_mmap gb =
+    {
+        frame,                           // frame
+        fCaps.maxheight, fCaps.maxwidth, // height, width
+        VIDEO_PALETTE_RGB24             // palette
+    };
+
+#ifdef DEBUG
+    gLog << dbg << "CapturStart(" << frame << ")" << endl;
+#endif
+
+    //
+    // capture frame
+    //
+    if (Ioctl(VIDIOCMCAPTURE, &gb) != -1)
+        return kTRUE;
+
+//    if (errno == EAGAIN)
+    gLog << err;
+    gLog << "ERROR - Couldn't start capturing frame " << frame << "." << endl;
+    gLog << "        Maybe your card doesn't support VIDEO_PALETTE_RGB24." << endl;
+    return kFALSE;
+    */
+}
+
+// -------------------------------------------------------------
+//
+// Wait until hardware has finished capture into framebuffer frame
+//
+Int_t MVideo::CaptureWait(unsigned int frame, unsigned char **ptr) const
+{
+    frame %= fBuffers.size();
+
+    if (ptr)
+        *ptr = NULL;
+
+//    const int SYNC_TIMEOUT = 1;
+
+//#ifdef DEBUG
+//    cout << "*** CaptureWait " << frame << endl;
+//#endif
+
+    //alarm(SYNC_TIMEOUT);
+    const Int_t rc = Ioctl(VIDIOC_DQBUF, const_cast<v4l2_buffer*>(&fBuffers[frame].first), false);
+    if (rc==-4)
+    {
+        //cout << "ERROR - Waiting for frame " << frame << " timed out." << endl;
+        return kSKIP;
+    }
+    //alarm(0);
+
+    if (rc==-1)
+    {
+        gLog << err << "ERROR - Waiting for " << frame << " frame failed." << endl;
+        return kFALSE;
+    }
+
+    if (ptr)
+        *ptr = static_cast<unsigned char*>(fBuffers[frame].second);
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Change the channel of a priviously opened device
+//
+Int_t MVideo::SetChannel(Int_t chan)
+{
+    return kSKIP;
+
+    if (fChannel.channel==chan)
+        return kSKIP;
+
+    if (chan<0 || chan>=fCaps.channels)
+    {
+        gLog << err << "ERROR - Set channel " << chan << " out of range." << endl;
+        return kFALSE;
+    }
+
+    // Switch to channel
+    struct video_channel ch = { chan, "", 0, 0, 0, 0 };
+    if (Ioctl(VIDIOCSCHAN, &ch)==-1)
+    {
+        gLog << err << "ERROR - Couldn't switch to channel " << chan << "." << endl;
+        gLog << "        You might need a bttv version > 0.5.13" << endl;
+        return kFALSE;
+    }
+
+    // Get information about channel
+    if (Ioctl(VIDIOCGCHAN, &ch)==-1)
+    {
+        gLog << err << "ERROR - Getting information for channel " << chan << " failed." << endl;
+        return kFALSE;
+    }
+
+    memcpy(&fChannel, &ch, sizeof(fChannel));
+
+    gLog << all << "Switched to channel " << chan << endl;
+
+    return kTRUE;
+}
+
+// -------------------------------------------------------------
+//
+// Has the device capture capabilities?
+//
+Bool_t MVideo::CanCapture() const
+{
+    return fCaps.type&VID_TYPE_CAPTURE;
+}
+
+// -------------------------------------------------------------
+//
+// Has a tuner
+//
+Bool_t MVideo::HasTuner() const
+{
+    return fCaps.type&VID_TYPE_TUNER;
+}
+
+// -------------------------------------------------------------
+//
+// Returns the number of frame buffers which can be used
+//
+Int_t MVideo::GetNumBuffers() const
+{
+    return fBuffers.size();
+}
+
+// -------------------------------------------------------------
+//
+// Maximum width of the frame which can be captured
+//
+Int_t MVideo::GetWidth() const
+{
+    return 768;//fCaps.maxwidth;
+}
+
+// -------------------------------------------------------------
+//
+// Maximum height of the frame which can be captured
+//
+Int_t MVideo::GetHeight() const
+{
+    return 576;//fCaps.maxheight;
+}
+
+// -------------------------------------------------------------
+//
+// Return the device type as string
+//
+TString MVideo::GetDevType(int type) const
+{
+    TString rc;
+    if (CanCapture())
+        rc += " capture";
+    if (HasTuner())
+        rc += " tuner";
+    if (type&VID_TYPE_TELETEXT)
+        rc += " teletext";
+    if (type&VID_TYPE_OVERLAY)
+        rc += " overlay";
+    if (type&VID_TYPE_CHROMAKEY)
+        rc += " chromakey";
+    if (type&VID_TYPE_CLIPPING)
+        rc += " clipping";
+    if (type&VID_TYPE_FRAMERAM)
+        rc += " frameram";
+    if (type&VID_TYPE_SCALES)
+        rc += " scales";
+    if (type&VID_TYPE_MONOCHROME)
+        rc += " monochrom";
+    if (type&VID_TYPE_SUBCAPTURE)
+        rc += " subcapature";
+    return rc;
+}
+
+TString MVideo::GetTunerFlags(Int_t flags) const
+{
+    TString rc;
+    if (flags&VIDEO_TUNER_PAL)
+        rc += " PAL";
+    if (flags&VIDEO_TUNER_NTSC)
+        rc += " NTSC";
+    if (flags&VIDEO_TUNER_SECAM)
+        rc += " SECAM";
+    if (flags&VIDEO_TUNER_LOW)
+        rc += " kHz";
+    if (flags&VIDEO_TUNER_NORM)
+        rc += " CanSetNorm";
+    if (flags&VIDEO_TUNER_STEREO_ON)
+        rc += " StereoOn";
+    return rc;
+}
+
+TString MVideo::GetTunerMode(Int_t mode) const
+{
+    switch (mode)
+    {
+    case VIDEO_MODE_PAL:
+        return "PAL";
+    case VIDEO_MODE_NTSC:
+        return "NTSC";
+    case VIDEO_MODE_SECAM:
+        return "SECAM";
+    case VIDEO_MODE_AUTO:
+        return "AUTO";
+    }
+    return "undefined";
+}
+
+// -------------------------------------------------------------
+//
+// Return the channel flags as string
+//
+TString MVideo::GetChannelFlags(Int_t flags) const
+{
+    TString rc = "video";
+    if (flags&VIDEO_VC_TUNER)
+        rc += " tuner";
+    if (flags&VIDEO_VC_AUDIO)
+        rc += " audio";
+//    if (flags&VIDEO_VC_NORM)
+//        rc += " normsetting";
+    return rc;
+}
+
+// -------------------------------------------------------------
+//
+// Return the channel type as string
+//
+TString MVideo::GetChannelType(Int_t type) const
+{
+    if (type&VIDEO_TYPE_TV)
+        return "TV";
+    if (type&VIDEO_TYPE_CAMERA)
+        return "Camera";
+    return "unknown";
+}
+
+// -------------------------------------------------------------
+//
+// Return the palette pal as string
+//
+TString MVideo::GetPalette(Int_t pal) const
+{
+    switch (pal)
+    {
+    case VIDEO_PALETTE_GREY:
+        return "VIDEO_PALETTE_GREY: Linear intensity grey scale";
+    case VIDEO_PALETTE_HI240:
+        return "VIDEO_PALETTE_HI240: BT848 8-bit color cube";
+    case VIDEO_PALETTE_RGB565:
+        return "VIDEO_PALETTE_RGB565: RGB565 packed into 16-bit words";
+    case VIDEO_PALETTE_RGB555:
+        return "VIDEO_PALETTE_RGB555: RGB555 packed into 16-bit words, top bit undefined";
+    case VIDEO_PALETTE_RGB24:
+        return "VIDEO_PALETTE_RGB24: RGB888 packed into 24-bit words";
+    case VIDEO_PALETTE_RGB32:
+        return "VIDEO_PALETTE_RGB32: RGB888 packed into the low three bytes of 32-bit words. Top bits undefined.";
+    case VIDEO_PALETTE_YUV422:
+        return "VIDEO_PALETTE_YUV422: Video style YUV422 - 8-bit packed, 4-bit Y, 2-bits U, 2-bits V";
+    case VIDEO_PALETTE_YUYV:
+        return "VIDEO_PALETTE_YUYV: YUYV";
+    case VIDEO_PALETTE_UYVY:
+        return "VIDEO_PALETTE_UYVY: UYVY";
+    case VIDEO_PALETTE_YUV420:
+        return "VIDEO_PALETTE_YUV420: YUV420";
+    case VIDEO_PALETTE_YUV411:
+        return "VIDEO_PALETTE_YUV411: YUV411";
+    case VIDEO_PALETTE_RAW:
+        return "VIDEO_PALETTE_RAW: Raw capture (Bt848)";
+    case VIDEO_PALETTE_YUV422P:
+        return "VIDEO_PALETTE_YUV422P: YUV 4:2:2 planar";
+    case VIDEO_PALETTE_YUV411P:
+        return "VIDEO_PALETTE_YUV411P: YUV 4:1:1 planar";
+    }
+    return "unknown";
+}
+
+// -------------------------------------------------------------
+//
+// Print informations about the device, the capabilities, the
+// channel and all available information
+//
+void MVideo::Print() const
+{
+    gLog << all << dec;
+
+    gLog << "Device " << fPath << " " << (fFileDesc>0?"open":"closed") << "." << endl;
+
+    if (fFileDesc<=0)
+        return;
+
+    gLog  << " - Name:       " << fCaps.name << endl;
+    gLog  << " - DevType:   "  << GetDevType(fCaps.type) << endl;
+    gLog  << " - Channels:   " << fCaps.channels << endl;
+    gLog  << " - Audios:     " << fCaps.audios << endl;
+    gLog  << " - Size:       ";
+    gLog  << fCaps.minwidth << "x" << fCaps.minheight << " to ";
+    gLog  << fCaps.maxwidth << "x" << fCaps.maxheight << endl;
+    gLog  << endl;
+    if (fChannel.channel>=0)
+    {
+        gLog  << " - Channel:    " << fChannel.channel << " (" << fChannel.name << ")" << endl;
+        gLog  << " - IsA:        " << GetChannelType(fChannel.type) << " with " << GetChannelFlags(fChannel.flags) << " (" << fChannel.flags << ")" << endl;
+        //if (fChannel.flags&VIDEO_VC_NORM)
+        gLog  << " - Norm:       " << fChannel.norm << endl;
+        gLog  << endl;
+    }
+
+    if (fAbil.tuner>=0)
+    {
+        gLog << " - Tuner:           " << fAbil.tuner << endl;
+        gLog << " - Name:            " << fAbil.name << endl;
+ //       gLog << " - Tuner Range:     " << fAbil.rangelow << " - " << fAbil.rangehigh << endl;
+        gLog << " - Tuner flags:    " << GetTunerFlags(fAbil.flags) << " (" << fAbil.flags << ")" << endl;
+        gLog << " - Tuner mode:      " << GetTunerMode(fAbil.mode) << " (" << fAbil.mode << ")" <<endl;
+        gLog << " - Signal Strength: " << fAbil.signal << endl;
+    }
+
+    gLog  << " - Brightness: " << fProp.brightness << endl;
+    gLog  << " - Hue:        " << fProp.hue << endl;
+    gLog  << " - Color:      " << fProp.colour << endl;
+    gLog  << " - Contrast:   " << fProp.contrast << endl;
+    gLog  << " - Whiteness:  " << fProp.whiteness << endl;
+    gLog  << " - Depth:      " << fProp.depth << endl;
+    gLog  << " - Palette:    " << GetPalette(fProp.palette) << " (" << fProp.palette << ")" << endl;
+    gLog  << endl;
+
+//    gLog  << " - BufferSize: 0x" << hex << fBuffer.size << " (" << dec << fBuffer.frames << " frames)" << endl;
+//    gLog  << " - Offsets:   " << hex;
+//    for (int i=0; i<fBuffer.frames; i++)
+//        gLog  << " 0x" << fBuffer.offsets[i];
+//    gLog  << dec << endl;
+
+    gLog << inf2 << "Controls:" << endl;
+    fControls.Print();
+}
+
+/*
+void MVideo::SetPicPar(int bright, int hue, int contrast)
+{
+    struct video_picture pict;
+
+    Ioctl(VIDIOCGPICT, &pict);  // get
+
+    if (contrast != -1)
+        pict.contrast = contrast;
+
+    if (bright != -1)
+        pict.brightness = bright;
+
+    if (hue != -1)
+	pict.hue = hue;
+
+    Ioctl(VIDIOCSPICT, &pict);  //set
+}
+
+void MVideo::GetPicPar(int *bright, int *hue, int *contrast)
+{
+    struct video_picture pict;
+
+    Ioctl(VIDIOCGPICT, &pict);   // get
+
+    *contrast = pict.contrast;
+    *bright   = pict.brightness;
+    *hue      = pict.hue;
+}
+*/
Index: branches/FACT++_part_filenames/drive/MVideo.h
===================================================================
--- branches/FACT++_part_filenames/drive/MVideo.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/MVideo.h	(revision 18732)
@@ -0,0 +1,140 @@
+#ifndef MARS_MVideo
+#define MARS_MVideo
+
+#ifndef MAGIC_MAGIC
+#include "MAGIC.h"
+#endif
+
+#ifndef __CINT__
+#ifndef __LINUX_VIDEODEV_H
+#include "videodev.h"  // video4linux
+#endif
+#ifndef __LINUX_VIDEODEV2_H
+#include <linux/videodev2.h> // video4linux2
+#endif
+#endif
+
+#include <vector>
+
+struct v4l2_queryctrl;
+struct v4l2_input;
+struct v4l2_standard;
+struct v4l2_buffer;
+
+class TEnv;
+
+class MVideoCtrl : public TObject
+{
+    friend class MVideo;
+private:
+    UInt_t  fId;
+    //enum v4l2_ctrl_type  type;
+    TString fName;
+    Int_t   fMinimum;
+    Int_t   fMaximum;
+    Int_t   fStep;
+    Int_t   fDefault;
+    UInt_t  fFlags;
+
+    UInt_t  fValue;
+
+public:
+    MVideoCtrl(const v4l2_queryctrl &ctrl);
+    const char *GetName() const { return fName; }
+    const char *GetTitle() const { return Form("Range=[%d;%d] Step=%d Def=%d", fMinimum, fMaximum, fStep, fDefault); }
+
+    //ClassDef(MVideoCtrl, 0) // Helper class to enumare device controls
+};
+
+class MVideo
+{
+private:
+    TString fPath; // Device path
+
+    int fFileDesc; // File descriptor
+
+    unsigned char *fMapBuffer;
+
+protected:
+    struct video_capability fCaps;      // Device capabilities
+    struct video_channel    fChannel;   // Channel information
+    //struct video_mbuf       fBuffer;    // Buffer information
+    struct video_picture    fProp;      // Picture properties
+    struct video_tuner      fAbil;      // Tuner abilities
+
+    ULong64_t fVideoStandard;
+
+    std::vector<v4l2_input>      fInputs;
+    std::vector<v4l2_standard>   fStandards;
+    std::vector<std::pair<v4l2_buffer, void*> > fBuffers;
+
+    TList fControls;
+
+private:
+    int Ioctl(int req, void *opt, bool allowirq=true, bool force=false) const;
+
+    void Reset();
+
+    Bool_t EnumerateControls(UInt_t id);
+    Bool_t EnumerateControls();
+    Bool_t GetCapabilities();
+    Bool_t GetProperties();
+    Bool_t GetTunerAbilities();
+    Bool_t GetVideoStandard();
+    Bool_t Init(Int_t channel);
+
+    template<class S>
+        Bool_t Enumerate(std::vector<S> &s, int request);
+
+    void PrintInputs() const;
+    void PrintStandards() const;
+
+    // Conversion functions
+    TString GetDevType(int type) const;
+    TString GetChannelFlags(Int_t flags) const;
+    TString GetChannelType(Int_t type) const;
+    TString GetTunerFlags(Int_t type) const;
+    TString GetTunerMode(Int_t type) const;
+    TString GetPalette(Int_t pal) const;
+
+public:
+    MVideo(const char *path="/dev/video0");
+    virtual ~MVideo() { Close(); }
+
+    // Getter
+    Bool_t IsOpen() const { return fFileDesc>0 && fBuffers.size()>0; }
+    Bool_t CanCapture() const;
+    Bool_t HasTuner() const;
+    Int_t  GetNumBuffers() const;
+
+    Int_t  GetWidth() const;
+    Int_t  GetHeight() const;
+
+    // Control
+    Bool_t Open(Int_t channel=0);
+    Int_t  Close();
+
+    Int_t SetChannel(Int_t chan);
+    Bool_t ReadControl(MVideoCtrl &vctrl) const;
+    Bool_t WriteControl(MVideoCtrl &vctrl, Int_t val) const;
+    Bool_t SetControls(TEnv &env) const;
+    Bool_t ResetControl(MVideoCtrl &vctrl) const;
+    Bool_t ResetControls() const;
+
+    // Image capture
+    Bool_t CaptureStart(unsigned int frame) const;
+    Int_t  CaptureWait(unsigned int frame, unsigned char **ptr=0) const;
+    Bool_t Start();
+
+    // Support
+    void Print() const;
+
+    // hardware features
+    //void SetPicPar(int  bright, int  hue, int  contrast);
+    //void GetPicPar(int *bright, int *hue, int *contrast);
+
+    //ClassDef(MVideo, 0) // Interface to Video4Linux at a simple level
+
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/PixClient.cc
===================================================================
--- branches/FACT++_part_filenames/drive/PixClient.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/PixClient.cc	(revision 18732)
@@ -0,0 +1,12 @@
+#include "PixClient.h"
+
+#include <iostream>
+
+using namespace std;
+
+void PixClient::ProcessFrame(const unsigned long n, byte *img,
+                             struct timeval *tm)
+{
+    cout << "PixClient - Img: " << n << "  " << (void*)img << endl;
+}
+
Index: branches/FACT++_part_filenames/drive/PixClient.h
===================================================================
--- branches/FACT++_part_filenames/drive/PixClient.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/PixClient.h	(revision 18732)
@@ -0,0 +1,22 @@
+#ifndef COSY_PixClient
+#define COSY_PixClient
+
+#ifdef __CINT__
+struct timeval;
+#else
+#include <unistd.h>
+#include <sys/time.h>
+#endif
+
+
+typedef unsigned char byte;
+
+class PixClient
+{
+public:
+    virtual ~PixClient() { }
+    virtual void ProcessFrame(const unsigned long n,
+                              byte *img, struct timeval *tm);
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/Ring.cc
===================================================================
--- branches/FACT++_part_filenames/drive/Ring.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Ring.cc	(revision 18732)
@@ -0,0 +1,90 @@
+#include "Ring.h"
+
+#include <iostream>
+
+#include <math.h>
+
+#include "Led.h"
+
+using namespace std;
+
+Ring::Ring(double x, double y) :
+    fX(x), fY(y), fR(0), fPhi(0)
+{
+}
+
+bool Ring::CalcCenter(Led i, Led j, Led k)
+{
+    double h1 = i.GetY() - j.GetY();
+
+    if (h1==0)
+    {
+        std::swap(j, k);
+        h1 = i.GetY() - j.GetY();
+        if (h1==0)
+        {
+            cout << "Ring::CalcCenter: h1==0" <<endl;
+            return false;
+        }
+    }
+
+    double h2 = j.GetY() - k.GetY();
+
+    if (h2==0)
+    {
+        std::swap(i, j);
+        h2 = j.GetY() - k.GetY();
+        if (h2==0)
+        {
+            cout << "Ring::CalcCenter: h2==0" << endl;
+            return false;
+        }
+    }
+
+    const double w1 = i.GetX() - j.GetX();
+    const double w2 = j.GetX() - k.GetX();
+
+    const double m1 = -w1/h1;
+    const double m2 = -w2/h2;
+
+    if (m2 - m1==0)
+    {
+        cout << "Ring::CalcCenter: All three points in a row! (m2-m1==0)" << endl;
+        return false;
+    }
+
+    fX = ((m2*(j.GetX() + k.GetX()) + i.GetY() - k.GetY()        -m1*(i.GetX() + j.GetX()))/(m2-m1)/2);
+    fY = ((m2*(i.GetY() + j.GetY()) + m1*m2*(k.GetX() - i.GetX())-m1*(j.GetY() + k.GetY()))/(m2-m1)/2);
+
+    fR = hypot(fX - i.GetX(), fY - i.GetY());
+
+    fMag = (i.GetMag() + j.GetMag() + k.GetMag())/3;
+
+    return true;
+}
+
+void Ring::InterpolCenters(const vector<Ring> &rings)
+{
+    fX = 0;
+    fY = 0;
+    fR = 0;
+
+    fMag=0;
+
+    const int n=rings.size();
+    if (n==0)
+        return;
+
+    for (auto it=rings.begin(); it!=rings.end(); it++)
+    {
+        fX   += it->GetX();
+        fY   += it->GetY();
+        fR   += it->GetR();
+        fMag += it->GetMag();
+    }
+
+    fX   /= n;
+    fY   /= n;
+    fR   /= n;
+    fMag /= n;
+}
Index: branches/FACT++_part_filenames/drive/Ring.h
===================================================================
--- branches/FACT++_part_filenames/drive/Ring.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Ring.h	(revision 18732)
@@ -0,0 +1,39 @@
+#ifndef COSY_Ring
+#define COSY_Ring
+
+#include <vector>
+
+#include "Led.h"
+
+class Rings;
+
+class Ring
+{
+private:
+    double fX;
+    double fY;
+    double fR;
+    double fPhi;
+
+    double fMag;
+
+    double sqr(double x) { return x*x; }
+
+public:
+    Ring(double x=0, double y=0);
+
+    void SetXY(double x=0, double y=0) { fX=x; fY=y; }
+    void SetPhi(double phi) { fPhi=phi; }
+
+    double GetX() const   { return fX; }
+    double GetY() const   { return fY; }
+    double GetR() const   { return fR; }
+    double GetPhi() const { return fPhi; }
+
+    double GetMag() const { return fMag; }
+
+    bool CalcCenter(Led, Led, Led);
+    void InterpolCenters(const std::vector<Ring> &rings);
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/TPointGui.cc
===================================================================
--- branches/FACT++_part_filenames/drive/TPointGui.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/TPointGui.cc	(revision 18732)
@@ -0,0 +1,1360 @@
+#include "TPointGui.h"
+
+#include <iomanip>
+#include <fstream>
+#include <stdlib.h>
+
+#include <TROOT.h>
+#include <TClass.h>
+#include <TSystem.h>
+
+#include <TGLabel.h>
+#include <TGButton.h>
+#include <TGTextEntry.h>
+
+#include <TView.h>
+#include <TStyle.h>
+#include <TCanvas.h>
+
+#include <TText.h>
+#include <TLine.h>
+#include <TMarker.h>
+#include <TPolyLine.h>
+
+#include <TF1.h>
+#include <TH2.h>
+#include <TMath.h>
+#include <TMinuit.h>
+#include <TProfile.h>
+#include <TGraphErrors.h>
+
+#include "TPointStar.h"
+
+using namespace std;
+
+TPointGui::TPointGui(const string fname, const string mod) : TGMainFrame(gClient->GetRoot(), 650, 435, kHorizontalFrame), fExitLoopOnClose(kFALSE),
+   fAzMin(0), fAzMax(360), fZdMin(0), fZdMax(90), fMagMax(10), fLimit(0.05)
+{
+    fCoordinates.SetOwner();
+    fOriginal.SetOwner();
+
+    fList = new TList;
+    fList->SetOwner();
+
+    gROOT->GetListOfCleanups()->Add(fList);
+    fList->SetBit(kMustCleanup);
+
+    fFont = gVirtualX->LoadQueryFont("7x13bold");
+
+    TGLayoutHints *hints0 = new TGLayoutHints(kLHintsExpandY, 7, 5, 5, 0);
+    TGLayoutHints *hints1 = new TGLayoutHints(kLHintsExpandX|kLHintsExpandY, 5, 7, 5, 6);
+    fList->Add(hints0);
+    fList->Add(hints1);
+
+    TGGroupFrame *grp1 = new TGGroupFrame(this, "Control", kVerticalFrame);
+    AddFrame(grp1, hints0);
+    fList->Add(grp1);
+
+    TGGroupFrame *grp2 = new TGGroupFrame(this, "Parameters", kHorizontalFrame);
+    AddFrame(grp2, hints1);
+    fList->Add(grp2);
+
+
+    TGLayoutHints *hints4 = new TGLayoutHints(kLHintsExpandX, 5, 5,  3);
+    TGLayoutHints *hints5 = new TGLayoutHints(kLHintsExpandX, 5, 5, 10);
+    AddTextButton(grp1, "Load Pointing Model", kTbLoad,        hints5);
+    AddTextButton(grp1, "Save Pointing Model", kTbSave,        hints4);
+    AddTextButton(grp1, "Fit Parameters",      kTbFit,         hints5);
+    AddTextButton(grp1, "Reset Parameters",    kTbReset,       hints4);
+    AddTextButton(grp1, "Load Stars",          kTbLoadStars,   hints5);
+    AddTextButton(grp1, "Reset Stars",         kTbResetStars,  hints4);
+    AddTextButton(grp1, "Reload Stars",        kTbReloadStars, hints4);
+    fList->Add(hints4);
+    fList->Add(hints5);
+
+
+
+
+
+
+
+    TGHorizontalFrame *comp = new TGHorizontalFrame(grp2, 1, 1);
+    grp2->AddFrame(comp);
+    fList->Add(comp);
+
+    TGLayoutHints *hints3 = new TGLayoutHints(kLHintsLeft|kLHintsTop, 0, 10, 5, 0);
+    fList->Add(hints3);
+
+    TGVerticalFrame *vframe = new TGVerticalFrame(comp, 1, 1);
+
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+        AddCheckButton(vframe, fBending.GetVarName(i), i);
+
+    TGButton *but = (TGButton*)FindWidget(0);
+
+    comp->AddFrame(vframe, hints3);
+    fList->Add(vframe);
+
+    vframe = new TGVerticalFrame(comp, 1, 1);
+    comp->AddFrame(vframe, hints3);
+    fList->Add(vframe);
+
+    hints3 = new TGLayoutHints(kLHintsLeft|kLHintsTop, 0, 10, 5, 0);
+    fList->Add(hints3);
+
+    TGLabel *l = new TGLabel(vframe, "+000.0000");
+    l->SetTextJustify(kTextRight);
+    fList->Add(l);
+    fLabel.Add(l);
+
+    TGLayoutHints *h = new TGLayoutHints(kLHintsCenterY, 0, 0, but->GetHeight()-l->GetHeight());
+    fList->Add(h);
+
+    vframe->AddFrame(l,h);
+
+    for (int i=1; i<MPointing::GetNumPar(); i++)
+        AddLabel(vframe, "+000.0000", h)->SetTextJustify(kTextRight);
+
+    vframe = new TGVerticalFrame(comp, 1, 1);
+    comp->AddFrame(vframe, hints3);
+    fList->Add(vframe);
+
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+        AddLabel(vframe, "\xb1 00.0000\xb0", h)->SetTextJustify(kTextRight);
+
+    hints3 = new TGLayoutHints(kLHintsLeft|kLHintsTop, 0, 20, 5, 0);
+    fList->Add(hints3);
+
+    TGLayoutHints *hreset = new TGLayoutHints(kLHintsLeft|kLHintsTop, 0, 0, 3, 1);
+    fList->Add(hreset);
+
+    TGVerticalFrame *vframe2 = new TGVerticalFrame(comp, 1, 1);
+    comp->AddFrame(vframe2, hints3);
+    fList->Add(vframe2);
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+        AddResetButton(vframe2, i+2*MPointing::GetNumPar(), hreset,
+                       but->GetHeight()-4);
+
+    vframe = new TGVerticalFrame(comp, 1, 1);
+    comp->AddFrame(vframe, hints3);
+    fList->Add(vframe);
+
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+        AddLabel(vframe, fBending.GetDescription(i), h);
+
+    TGLayoutHints *hints6 = new TGLayoutHints(kLHintsExpandX, 5, 5, 4, 6);
+    fList->Add(hints6);
+
+    l = new TGLabel(grp1, "0000000 Data Sets loaded.");
+    grp1->AddFrame(l, hints6);
+    fList->Add(l);
+    fLabel.Add(l);
+
+    l = new TGLabel(grp1, "");
+    l->SetTextJustify(kTextLeft);
+    grp1->AddFrame(l, hints6);
+    fList->Add(l);
+    fLabel.Add(l);
+
+    l = new TGLabel(grp1, "");
+    l->SetTextJustify(kTextLeft);
+    grp1->AddFrame(l, hints6);
+    fList->Add(l);
+    fLabel.Add(l);
+
+    l = new TGLabel(grp1, "");
+    l->SetTextJustify(kTextLeft);
+    grp1->AddFrame(l, hints6);
+    fList->Add(l);
+    fLabel.Add(l);
+
+    // ------------------------------------------------------------------
+
+    TGLayoutHints *hintse1 = new TGLayoutHints(kLHintsExpandX|kLHintsBottom);
+    TGLayoutHints *hintse2 = new TGLayoutHints(kLHintsExpandX, 2, 2);
+    TGLayoutHints *hintse3 = new TGLayoutHints(kLHintsExpandX);
+    TGLayoutHints *hintsl  = new TGLayoutHints(kLHintsExpandX, 1, 0, 5);
+    fList->Add(hintse1);
+    fList->Add(hintse2);
+    fList->Add(hintse3);
+
+    TGHorizontalFrame *entries = new TGHorizontalFrame(grp1, 1, 1);
+    grp1->AddFrame(entries, hintse1);
+    fList->Add(entries);
+
+    TGVerticalFrame *v1 = new TGVerticalFrame(entries);
+    TGVerticalFrame *v2 = new TGVerticalFrame(entries);
+    TGVerticalFrame *v3 = new TGVerticalFrame(entries);
+    entries->AddFrame(v1, hintse2);
+    entries->AddFrame(v2, hintse2);
+    entries->AddFrame(v3, hintse2);
+    fList->Add(v1);
+    fList->Add(v2);
+    fList->Add(v3);
+
+    TGLabel *label1 = new TGLabel(v1, "Az min/°");
+    TGLabel *label2 = new TGLabel(v2, "Az max/°");
+    TGLabel *label3 = new TGLabel(v3, "Mag min");
+    TGLabel *label4 = new TGLabel(v1, "Zd min/°");
+    TGLabel *label5 = new TGLabel(v2, "Zd max/°");
+    TGLabel *label6 = new TGLabel(v3, "Limit/°");
+    label1->SetTextJustify(kTextLeft);
+    label2->SetTextJustify(kTextLeft);
+    label3->SetTextJustify(kTextLeft);
+    label4->SetTextJustify(kTextLeft);
+    label5->SetTextJustify(kTextLeft);
+    label6->SetTextJustify(kTextLeft);
+    fList->Add(label1);
+    fList->Add(label2);
+    fList->Add(label3);
+    fList->Add(label4);
+    fList->Add(label5);
+    fList->Add(label6);
+
+    TGTextEntry *entry1 = new TGTextEntry(v1, Form("%.1f", fAzMin),  kIdAzMin);
+    TGTextEntry *entry2 = new TGTextEntry(v2, Form("%.1f", fAzMax),  kIdAzMax);
+    TGTextEntry *entry3 = new TGTextEntry(v3, Form("%.1f", fMagMax), kIdMagMax);
+    TGTextEntry *entry4 = new TGTextEntry(v1, Form("%.1f", fZdMin),  kIdZdMin);
+    TGTextEntry *entry5 = new TGTextEntry(v2, Form("%.1f", fZdMax),  kIdZdMax);
+    TGTextEntry *entry6 = new TGTextEntry(v3, Form("%.3f", fLimit),  kIdLimit);
+    entry1->SetToolTipText("TPoints with a real star located at Az<Az min are ignored in the fit.");
+    entry2->SetToolTipText("TPoints with a real star located at Az>Az max are ignored in the fit.");
+    entry2->SetToolTipText("TPoints with a artifiical magnitude Mag<Mag min are ignored in the fit.");
+    entry4->SetToolTipText("TPoints with a real star located at Zd<Zd min are ignored in the fit.");
+    entry5->SetToolTipText("TPoints with a real star located at Zd>Zd max are ignored in the fit.");
+    entry6->SetToolTipText("TPoints with an residual after the fit > Limit are output.");
+    entry1->Associate(this);
+    entry2->Associate(this);
+    entry3->Associate(this);
+    entry4->Associate(this);
+    entry5->Associate(this);
+    entry6->Associate(this);
+    v1->AddFrame(label1, hintsl);
+    v1->AddFrame(entry1, hintse3);
+    v1->AddFrame(label4, hintsl);
+    v1->AddFrame(entry4, hintse3);
+    v2->AddFrame(label2, hintsl);
+    v2->AddFrame(entry2, hintse3);
+    v2->AddFrame(label5, hintsl);
+    v2->AddFrame(entry5, hintse3);
+    v3->AddFrame(label3, hintsl);
+    v3->AddFrame(entry3, hintse3);
+    v3->AddFrame(label6, hintsl);
+    v3->AddFrame(entry6, hintse3);
+    fList->Add(entry1);
+    fList->Add(entry2);
+    fList->Add(entry3);
+    fList->Add(entry4);
+    fList->Add(entry5);
+    fList->Add(entry6);
+
+    // ------------------------------------------------------------------
+
+    // FIXME: Move this to the rc-file.
+    ((TGCheckButton*)FindWidget(0))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(1))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(3))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(4))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(5))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(6))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(7))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(8))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(11))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(12))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(13))->SetState(kButtonDown);
+    ((TGCheckButton*)FindWidget(14))->SetState(kButtonDown);
+/*
+    ((TGCheckButton*)FindWidget(19))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(20))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(21))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(22))->SetState(kButtonDisabled);
+
+    ((TGCheckButton*)FindWidget(19+2*MPointing::GetNumPar()))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(20+2*MPointing::GetNumPar()))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(21+2*MPointing::GetNumPar()))->SetState(kButtonDisabled);
+    ((TGCheckButton*)FindWidget(22+2*MPointing::GetNumPar()))->SetState(kButtonDisabled);
+*/
+    SetWindowName("Telesto");
+    SetIconName("Telesto");
+
+    Layout();
+
+    MapSubwindows();
+    MapWindow();
+
+    if (!fname.empty())
+        LoadStars(fname.c_str());
+    if (!mod.empty())
+        fBending.Load(mod.c_str());
+
+    DisplayBending();
+    DisplayData();
+}
+
+TPointGui::~TPointGui()
+{
+    if (fFont)
+        gVirtualX->DeleteFont(fFont);
+
+    delete fList;
+
+    if (fExitLoopOnClose)
+        gSystem->ExitLoop();
+}
+
+void TPointGui::Fcn(Int_t &/*npar*/, Double_t */*gin*/, Double_t &f, Double_t *par, Int_t /*iflag*/)
+{
+    f = 0;
+
+    MPointing bend;
+    bend.SetParameters(par); // Set Parameters [deg] to MPointing
+
+    int cnt = 0;
+    for (int i=0; i<fCoordinates.GetSize(); i++)
+    {
+        TPointStar set = *(TPointStar*)fCoordinates.At(i);
+
+        if (set.GetStarZd()<fZdMin || set.GetStarZd()>fZdMax ||
+            set.GetStarAz()<fAzMin || set.GetStarAz()>fAzMax ||
+            set.GetMag()   >fMagMax)
+            continue;
+
+        set.Adjust(bend);
+
+        Double_t err = 0.0043; // [deg]
+        Double_t res = set.GetResidual();//(&err);
+        res /= err;
+
+        f += res*res;
+        cnt++;
+    }
+
+    f /= cnt;
+}
+
+void TPointGui::fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
+{
+    ((TPointGui*)gMinuit->GetObjectFit())->Fcn(npar, gin, f, par, iflag);
+}
+
+void TPointGui::AddTextButton(TGCompositeFrame *f, TString txt, Int_t id, TGLayoutHints *h)
+{
+    TGButton *but = new TGTextButton(f, txt, id);
+    but->Associate(this);
+    f->AddFrame(but, h);
+    fList->Add(but);
+
+}
+
+void TPointGui::AddCheckButton(TGCompositeFrame *f, TString txt, Int_t id, TGLayoutHints *h)
+{
+    TGButton *but = new TGCheckButton(f, txt, id);
+    but->Associate(this);
+    f->AddFrame(but, h);
+    fList->Add(but);
+}
+
+void TPointGui::AddResetButton(TGCompositeFrame *f, Int_t id, TGLayoutHints *h, Int_t height)
+{
+    TGPictureButton *but = new TGPictureButton(f, "drive/skull.xpm", id);
+    but->SetHeight(height); // Offsets from TGLayout
+    but->SetWidth(height);
+    but->Associate(this);
+    f->AddFrame(but, h);
+    fList->Add(but);
+}
+
+TGLabel *TPointGui::AddLabel(TGCompositeFrame *f, TString txt, TGLayoutHints *h)
+{
+    TGLabel *l = new TGLabel(f, txt/*, TGLabel::GetDefaultGC()(), fFont*/);
+    f->AddFrame(l, h);
+    fList->Add(l);
+    fLabel.Add(l);
+    return l;
+}
+
+void TPointGui::DisplayBending()
+{
+    TArrayD par, err;
+    fBending.GetParameters(par);
+    fBending.GetError(err);
+
+    TGLabel *l;
+
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+    {
+        l = (TGLabel*)fLabel.At(i);
+        l->SetText(Form("%.4f\xb0", par[i]));
+
+        l = (TGLabel*)fLabel.At(MPointing::GetNumPar()+i);
+        l->SetText(Form("\xb1 %8.4f\xb0", err[i]>0?err[i]:0));
+    }
+}
+
+void TPointGui::DisplayData()
+{
+    TGLabel *l = (TGLabel*)fLabel.At(3*MPointing::GetNumPar());
+    l->SetText(Form("%d data sets loaded.", fOriginal.GetSize()));
+}
+
+void TPointGui::DisplayResult(Double_t before, Double_t after, Double_t backw)
+{
+    TGLabel *l1 = (TGLabel*)fLabel.At(3*MPointing::GetNumPar()+1);
+    l1->SetText(Form("Before: %.1f arcsec", before*360*3600/16384));
+
+    TGLabel *l2 = (TGLabel*)fLabel.At(3*MPointing::GetNumPar()+2);
+    l2->SetText(Form("After:  %.1f arcsec", after*360*3600/16384));
+
+    TGLabel *l3 = (TGLabel*)fLabel.At(3*MPointing::GetNumPar()+3);
+    l3->SetText(Form("Backw:  %.1f arcsec", backw*360*3600/16384));
+}
+
+void TPointGui::DrawMarker(TVirtualPad *pad, Double_t r0, Double_t phi0)
+{
+    TView *view = pad->GetView();
+
+    if (!view)
+    {
+        cout << "No View!" << endl;
+        return;
+    }
+
+    TMarker mark0;
+    mark0.SetMarkerStyle(kFullDotLarge);
+    mark0.SetMarkerColor(kBlue);
+
+    r0 /= 90;
+    phi0 *= TMath::DegToRad();
+
+    Double_t x[6] = { r0*cos(phi0), r0*sin(phi0), 0, 0, 0, 0};
+
+    view->WCtoNDC(x, x+3);
+
+    mark0.DrawMarker(-x[3], x[4]);
+}
+
+void TPointGui::DrawPolLine(TVirtualPad *pad, Double_t r0, Double_t phi0, Double_t r1, Double_t phi1)
+{
+    TView *view = pad->GetView();
+
+    if (!view)
+    {
+        cout << "No View!" << endl;
+        return;
+    }
+    /*
+    if (r0<0)
+    {
+        r0 = -r0;
+        phi0 += 180;
+    }
+    if (r1<0)
+    {
+        r1 = -r1;
+        phi1 += 180;
+    }
+
+    phi0 = fmod(phi0+360, 360);
+    phi1 = fmod(phi1+360, 360);
+
+    if (phi1-phi0<-180)
+        phi1+=360;
+    */
+    TLine line;
+    line.SetLineWidth(2);
+    line.SetLineColor(kBlue);
+
+    Double_t p0 = phi0<phi1?phi0:phi1;
+    Double_t p1 = phi0<phi1?phi1:phi0;
+
+    if (phi0>phi1)
+    {
+        Double_t d = r1;
+        r1 = r0;
+        r0 = d;
+    }
+
+    r0 /= 90;
+    r1 /= 90;
+
+    Double_t dr = r1-r0;
+    Double_t dp = p1-p0;
+
+    Double_t x0[3] = { r0*cos(p0*TMath::DegToRad()), r0*sin(p0*TMath::DegToRad()), 0};
+
+    for (double i=p0+10; i<p1+10; i+=10)
+    {
+        if (i>p1)
+            i=p1;
+
+        Double_t r = dr/dp*(i-p0)+r0;
+        Double_t p = TMath::DegToRad()*i;
+
+        Double_t x1[3] = { r*cos(p), r*sin(p), 0};
+
+        Double_t y0[3], y1[3];
+
+        view->WCtoNDC(x0, y0);
+        view->WCtoNDC(x1, y1);
+
+        line.DrawLine(y0[0], y0[1], y1[0], y1[1]);
+
+        x0[0] = x1[0];
+        x0[1] = x1[1];
+    }
+}
+
+void TPointGui::DrawSet(TVirtualPad *pad, TPointStar &set, Float_t scale, Float_t angle)
+{
+    Double_t r0   = set.GetRawZd();
+    Double_t phi0 = set.GetRawAz()-angle;
+    Double_t r1   = set.GetStarZd();
+    Double_t phi1 = set.GetStarAz()-angle;
+
+    if (r0<0)
+    {
+        r0 = -r0;
+        phi0 += 180;
+    }
+    if (r1<0)
+    {
+        r1 = -r1;
+        phi1 += 180;
+    }
+
+    phi0 = fmod(phi0+360, 360);
+    phi1 = fmod(phi1+360, 360);
+
+    if (phi1-phi0<-180)
+        phi1+=360;
+
+    if (scale<0 || scale>1000)
+        scale = -1;
+
+    if (scale>0)
+    {
+        Double_t d = r1-r0;
+        r0 += scale*d;
+        r1 -= scale*d;
+        d = phi1-phi0;
+        phi0 += scale*d;
+        phi1 -= scale*d;
+
+        DrawPolLine(pad, r0, phi0, r1, phi1);
+        DrawMarker(pad,  r0, phi0);
+    }
+    else
+        DrawMarker(pad,  r1, phi1);
+}
+
+void TPointGui::DrawHorizon(TVirtualPad *pad, const char *fname) const
+{
+    TView *view = pad->GetView();
+
+    if (!view)
+    {
+        cout << "No View!" << endl;
+        return;
+    }
+
+    ifstream fin(fname);
+    if (!fin)
+    {
+        cout << "ERROR - " << fname << " not found." << endl;
+        return;
+    }
+
+    TPolyLine poly;
+    poly.SetLineWidth(2);
+    poly.SetLineColor(12);
+    poly.SetLineStyle(8);
+
+    while (1)
+    {
+        TString line;
+        line.ReadLine(fin);
+        if (!fin)
+            break;
+
+        Float_t az, alt;
+        sscanf(line.Data(), "%f %f", &az, &alt);
+
+        Float_t zd = 90-alt;
+
+        az *= TMath::DegToRad();
+        zd /= 90;
+
+        Double_t x[6] = { zd*cos(az), zd*sin(az), 0, 0, 0, 0};
+        view->WCtoNDC(x, x+3);
+        poly.SetNextPoint(-x[3], x[4]);
+    }
+
+    poly.DrawClone()->SetBit(kCanDelete);
+
+}
+
+TString TPointGui::OpenDialog(TString &dir, EFileDialogMode mode)
+{
+    static const char *gOpenTypes[] =
+    {
+        "TPoint files",     "*.txt",
+        "Collection files", "*.col",
+        "Model files",      "*.mod",
+        "All files",        "*",
+        NULL,           NULL
+    };
+
+    //static TString dir("tpoint/");
+
+    TGFileInfo fi; // fFileName and fIniDir deleted in ~TGFileInfo
+
+    fi.fFileTypes = (const char**)gOpenTypes;
+    fi.fIniDir    = StrDup(dir);
+
+    new TGFileDialog(fClient->GetRoot(), this, mode, &fi);
+
+    if (!fi.fFilename)
+        return "";
+
+    dir = fi.fIniDir;
+
+    return fi.fFilename;
+}
+
+void TPointGui::LoadCollection(TString fname)
+{
+    ifstream fin(fname);
+    if (!fin)
+    {
+        cout << "Collection '" << fname << "' not found!" << endl;
+        return;
+    }
+
+    while (1)
+    {
+        TString line;
+        line.ReadLine(fin);
+        if (!fin)
+            break;
+
+        line = line.Strip(TString::kBoth);
+        if (line[0]=='#')
+            continue;
+        if (line.Length()==0)
+            continue;
+/*
+        if (!line.EndsWith(".txt"))
+        {
+            cout << "WARNING: " << line << endl;
+            continue;
+        }
+*/
+        LoadStars(line);
+    }
+}
+
+void TPointGui::LoadStars(TString fname)
+{
+    if (fname.EndsWith(".col"))
+    {
+        LoadCollection(fname);
+        fFileNameStars = fname;
+        SetWindowName(Form("Telesto (%s)", fFileNameStars.Data()));
+        return;
+    }
+
+    const Int_t size = fOriginal.GetSize();
+
+    ifstream fin(fname);
+
+    while (fin && fin.get()!='\n');
+    while (fin && fin.get()!='\n');
+    while (fin && fin.get()!='\n');
+    if (!fin)
+    {
+        cout << "File '" << fname << "' not found!" << endl;
+        return;
+    }
+
+    TPointStar set(fname);
+
+    while (1)
+    {
+        fin >> set;  // Read data from file [deg], it is stored in [rad]
+        if (!fin)
+            break;
+
+//        if (set.GetRawZd()>60)
+//            continue;
+
+        fOriginal.Add(new TPointStar(set));
+    }
+
+    cout << "Found " << fOriginal.GetSize()-size;
+    cout << " sets of coordinates in " << fname;
+    cout << " (Total=" << fOriginal.GetSize() << ")" << endl;
+
+    fFileNameStars = fname;
+    SetWindowName(Form("Telesto (%s)", fFileNameStars.Data()));
+}
+
+Float_t TPointGui::GetFloat(Int_t id) const
+{
+    return atof(static_cast<TGTextEntry*>(FindWidget(id))->GetText());
+}
+
+Bool_t TPointGui::ProcessMessage(Long_t msg, Long_t mp1, Long_t)
+{
+    // cout << "Msg: " << hex << GET_MSG(msg) << endl;
+    // cout << "SubMsg: " << hex << GET_SUBMSG(msg) << dec << endl;
+
+    static TString dirmod("tpoint/");
+    static TString dircol("tpoint/");
+
+    switch (GET_MSG(msg))
+    {
+    case kC_COMMAND:
+        switch (GET_SUBMSG(msg))
+        {
+        case kCM_BUTTON:
+            switch (mp1)
+            {
+            case kTbFit:
+                {
+                    Double_t before=0;
+                    Double_t after=0;
+                    Double_t backw=0;
+                    Fit(before, after, backw);
+                    DisplayBending();
+                    DisplayResult(before, after, backw);
+                }
+                return kTRUE;
+            case kTbLoad:
+                fBending.Load(OpenDialog(dirmod));
+                DisplayBending();
+                return kTRUE;
+            case kTbSave:
+                fBending.Save(OpenDialog(dirmod, kFDSave));
+                return kTRUE;
+            case kTbLoadStars:
+                LoadStars(OpenDialog(dircol));
+                DisplayData();
+                return kTRUE;
+            case kTbReset:
+                fBending.Reset();
+                DisplayBending();
+                return kTRUE;
+            case kTbReloadStars:
+                fOriginal.Delete();
+                LoadStars(fFileNameStars); // FIXME: Use TGLabel!
+                DisplayData();
+                return kTRUE;
+            case kTbResetStars:
+                fOriginal.Delete();
+                DisplayData();
+                return kTRUE;
+            }
+
+            // In the default cas a reset button must have been pressed
+            fBending[mp1-2*MPointing::GetNumPar()] = 0;
+            DisplayBending();
+            return kTRUE;
+        }
+        return kTRUE;
+
+    case kC_TEXTENTRY:
+        switch (GET_SUBMSG(msg))
+        {
+        case kTE_TEXTCHANGED:
+            switch (mp1)
+            {
+            case kIdAzMin:
+                fAzMin = GetFloat(kIdAzMin);
+                return kTRUE;
+            case kIdAzMax:
+                fAzMax = GetFloat(kIdAzMax);
+                return kTRUE;
+            case kIdZdMin:
+                fZdMin = GetFloat(kIdZdMin);
+                return kTRUE;
+            case kIdZdMax:
+                fZdMax = GetFloat(kIdZdMax);
+                return kTRUE;
+            case kIdMagMax:
+                fMagMax = GetFloat(kIdMagMax);
+                return kTRUE;
+            case kIdLimit:
+                fLimit = GetFloat(kIdLimit);
+                return kTRUE;
+            }
+            return kTRUE;
+
+        }
+        return kTRUE;
+
+    }
+    return kTRUE;
+}
+
+void TPointGui::Fit(Double_t &before, Double_t &after, Double_t &backw)
+{
+    if (fOriginal.GetSize()==0)
+    {
+        cout << "Sorry, no input data loaded..." << endl;
+        return;
+    }
+
+    fCoordinates.Delete();
+    for (int i=0; i<fOriginal.GetSize(); i++)
+        fCoordinates.Add(new TPointStar(*(TPointStar*)fOriginal.At(i)));
+
+    cout << "-----------------------------------------------------------------------" << endl;
+
+    gStyle->SetOptStat("emro");
+
+    TH1F hres1("Res1", " Residuals before correction ", fOriginal.GetSize()/3, 0, 0.3);
+    TH1F hres2("Res2", " Residuals after correction ",  fOriginal.GetSize()/3, 0, 0.3);
+    TH1F hres3("Res3", " Residuals after backward correction ",  fOriginal.GetSize()/3, 0, 0.3);
+
+    TProfile proaz ("ProAz",  " \\Delta profile vs. Az",  24, 0, 360);
+    TProfile prozd ("ProZd",  " \\Delta profile vs. Zd",  30, 0,  90);
+    TProfile promag("ProMag", " \\Delta profile vs. Mag", 10, 1,  10);
+
+    hres1.SetXTitle("\\Delta [\\circ]");
+    hres1.SetYTitle("Counts");
+
+    hres2.SetXTitle("\\Delta [\\circ]");
+    hres2.SetYTitle("Counts");
+
+    hres3.SetXTitle("\\Delta [\\circ]");
+    hres3.SetYTitle("Counts");
+
+    TGraph gdaz;
+    TGraph gdzd;
+    TGraph gaz;
+    TGraph gzd;
+    TGraphErrors graz;
+    TGraphErrors grzd;
+    TGraphErrors grmag;
+    TGraph gmaz;
+    TGraph gmzd;
+
+    gdaz.SetTitle(" \\Delta Az vs. Zd ");
+    gdzd.SetTitle(" \\Delta Zd vs. Az ");
+
+    gaz.SetTitle(" \\Delta Az vs. Az ");
+    gzd.SetTitle(" \\Delta Zd vs. Zd ");
+
+    gmaz.SetTitle(" \\Delta Az vs. Mag ");
+    gmzd.SetTitle(" \\Delta Zd vs. Mag ");
+
+    graz.SetTitle(" \\Delta vs. Az ");
+    grzd.SetTitle(" \\Delta vs. Zd ");
+    grmag.SetTitle(" \\Delta vs. Mag ");
+
+    TMinuit minuit(MPointing::GetNumPar());  //initialize TMinuit with a maximum of 5 params
+    minuit.SetObjectFit(this);
+    minuit.SetPrintLevel(-1);
+    minuit.SetFCN(fcn);
+
+    fBending.SetMinuitParameters(minuit, MPointing::GetNumPar()); // Init Parameters [deg]
+
+    for (int i=0; i<MPointing::GetNumPar(); i++)
+    {
+        TGButton *l = (TGButton*)FindWidget(i);
+        minuit.FixParameter(i);
+        if (l->GetState()==kButtonDown)
+            minuit.Release(i);
+    }
+
+    //minuit.Command("SHOW PARAMETERS");
+    //minuit.Command("SHOW LIMITS");
+
+    cout << endl;
+    cout << "Starting fit..." << endl;
+    cout << "For the fit an measurement error in the residual of ";
+    cout << "0.02deg (=1SE) is assumed." << endl;
+    cout << endl;
+
+    Int_t ierflg = 0;
+    ierflg = minuit.Migrad();
+    cout << "Migrad returns " << ierflg << endl;
+    // minuit.Release(2);
+    ierflg = minuit.Migrad();
+    cout << "Migrad returns " << ierflg << endl << endl;
+
+    //
+    // Get Fit Results
+    //
+    fBending.GetMinuitParameters(minuit);
+    fBending.PrintMinuitParameters(minuit);
+    cout << endl;
+    //fBending.Save("bending_magic.txt");
+
+
+    //
+    // Make a copy of all list entries
+    //
+    TList list;
+    list.SetOwner();
+    for (int i=0; i<fCoordinates.GetSize(); i++)
+        list.Add(new TPointStar(*(TPointStar*)fCoordinates.At(i)));
+
+    //
+    // Correct for Offsets only
+    //
+    TArrayD par;
+    fBending.GetParameters(par);
+    for (int i=2; i<MPointing::GetNumPar(); i++)
+        par[i]=0;
+
+    MPointing b2;
+    b2.SetParameters(par);
+
+    cout << endl << "Sets with Residual exceeding " << fLimit << "deg:" << endl;
+    cout << "   StarAz  StarEl      RawAz   RawEl      Mag Residual  Filename" << endl;
+
+    //
+    // Calculate correction and residuals
+    //
+    for (int i=0; i<fCoordinates.GetSize(); i++)
+    {
+        TPointStar orig = *(TPointStar*)fCoordinates.At(i);
+
+        TPointStar &set0 = *(TPointStar*)fCoordinates.At(i);
+
+        ZdAz za(set0.GetStarZdAz());
+        za *= 180/M_PI;
+
+        //
+        // Correct for offsets only
+        //
+        TPointStar set1(set0);
+        set1.Adjust(b2);
+
+        hres1.Fill(set1.GetResidual());
+
+        set0.Adjust(fBending);
+        hres2.Fill(set0.GetResidual());
+
+        Double_t dz = fmod(set0.GetDAz()+720, 360);
+        if (dz>180)
+            dz -= 360;
+
+        Double_t err;
+        Double_t resi = set0.GetResidual(&err);
+
+        gdzd.SetPoint(i, za.Az(), set0.GetDZd());
+        gdaz.SetPoint(i, za.Zd(), dz);
+        graz.SetPoint(i, za.Az(), resi);
+        graz.SetPointError(i, 0, err);
+        grzd.SetPoint(i, za.Zd(), resi);
+        grzd.SetPointError(i, 0, err);
+
+        if (resi>fLimit) // 0.13
+            cout << " " << orig << "  <" << Form("%5.3f", resi) << ">  " << orig.GetName() << endl;
+
+        proaz.Fill(za.Az(), set0.GetResidual(&err));
+        prozd.Fill(za.Zd(), set0.GetResidual(&err));
+        promag.Fill(set0.GetMag(), set0.GetResidual(&err));
+
+        gaz.SetPoint( i, za.Az(), dz);
+        gzd.SetPoint( i, za.Zd(), set0.GetDZd());
+        if (set0.GetMag()>=-20)
+        {
+            grmag.SetPoint(i, set0.GetMag(), set0.GetResidual(&err));
+            grmag.SetPointError(i, 0, err);
+            gmaz.SetPoint( i, set0.GetMag(), dz);
+            gmzd.SetPoint( i, set0.GetMag(), set0.GetDZd());
+        }
+    }
+
+    cout << "done." << endl << endl;
+
+    //
+    // Check for overflows
+    //
+    const Stat_t ov = hres2.GetBinContent(hres2.GetNbinsX()+1);
+    if (ov>0)
+        cout << "WARNING: " << ov << " overflows in residuals." << endl;
+
+
+
+    cout << dec << endl;
+    cout << "             Number of calls to FCN: " << minuit.fNfcn << endl;
+    cout << "Minimum value found for FCN (Chi^2): " << minuit.fAmin << endl;
+    cout << "                    Fit-Probability: " << TMath::Prob(minuit.fAmin/*fOriginal.GetSize()*/, fOriginal.GetSize()-minuit.GetNumFreePars())*100 << "%" << endl;
+    cout << "                          Chi^2/NDF: " << minuit.fAmin/(fOriginal.GetSize()-minuit.GetNumFreePars()) << endl;
+    //cout << "Prob(?): " << TMath::Prob(fChisquare,ndf);
+
+
+
+    //
+    // Print all data sets for which the backward correction is
+    // twice times worse than the residual gotten from the
+    // bending correction itself
+    //
+    cout << endl;
+    cout << "Checking backward correction (raw-->star):" << endl;
+    for (int i=0; i<fCoordinates.GetSize(); i++)
+    {
+        TPointStar set0(*(TPointStar*)list.At(i));
+        TPointStar &set1 = *(TPointStar*)list.At(i);
+
+        set0.AdjustBack(fBending);
+        set1.Adjust(fBending);
+
+        const Double_t res0 = set0.GetResidual();
+        const Double_t res1 = set1.GetResidual();
+        const Double_t diff = TMath::Abs(res0-res1);
+
+        hres3.Fill(res0);
+
+        if (diff<hres2.GetMean()*0.66)
+            continue;
+
+        cout << "DBack: " << setw(6) << set0.GetStarZd() << " " << setw(7) << set0.GetStarAz() << ":  ";
+        cout << "ResB="<< setw(7) << res0*60 << "  ResF=" << setw(7) << res1*60 << "  |ResB-ResF|=" << setw(7) << diff*60 << " arcmin" << endl;
+    }
+    cout << "OK." << endl;
+    cout << endl;
+
+    const Double_t max1 = TMath::Max(gaz.GetHistogram()->GetMaximum(), gdaz.GetHistogram()->GetMaximum());
+    const Double_t max2 = TMath::Max(gzd.GetHistogram()->GetMaximum(), gdzd.GetHistogram()->GetMaximum());
+    const Double_t max3 = TMath::Max(grzd.GetHistogram()->GetMaximum(), graz.GetHistogram()->GetMaximum());
+
+    const Double_t min1 = TMath::Min(gaz.GetHistogram()->GetMinimum(), gdaz.GetHistogram()->GetMinimum());
+    const Double_t min2 = TMath::Min(gzd.GetHistogram()->GetMinimum(), gdzd.GetHistogram()->GetMinimum());
+    const Double_t min3 = TMath::Min(grzd.GetHistogram()->GetMinimum(), graz.GetHistogram()->GetMinimum());
+
+    const Double_t absmax1 = 0.05;//TMath::Max(max1, TMath::Abs(min1));
+    const Double_t absmax2 = 0.05;//TMath::Max(max2, TMath::Abs(min2));
+    const Double_t absmax3 = 0.05;//TMath::Max(max3, TMath::Abs(min3));
+
+    gaz.SetMaximum(absmax1);
+    gzd.SetMaximum(absmax2);
+    gdaz.SetMaximum(absmax1);
+    gdzd.SetMaximum(absmax2);
+    gmaz.SetMaximum(absmax1);
+    gmzd.SetMaximum(absmax2);
+    graz.SetMaximum(absmax3);
+    grzd.SetMaximum(absmax3);
+    grmag.SetMaximum(absmax3);
+    gaz.SetMinimum(-absmax1);
+    gzd.SetMinimum(-absmax2);
+    gdaz.SetMinimum(-absmax1);
+    gdzd.SetMinimum(-absmax2);
+    gmaz.SetMinimum(-absmax1);
+    gmzd.SetMinimum(-absmax2);
+    graz.SetMinimum(0);
+    grzd.SetMinimum(0);
+    grmag.SetMinimum(0);
+
+    TCanvas *c1;
+
+    if (gROOT->FindObject("CanvGraphs"))
+        c1 = dynamic_cast<TCanvas*>(gROOT->FindObject("CanvGraphs"));
+    else
+        c1=new TCanvas("CanvGraphs", "Graphs");
+
+    gROOT->SetSelectedPad(0);
+    c1->SetSelectedPad(0);
+    c1->SetBorderMode(0);
+    c1->SetFrameBorderMode(0);
+    c1->Clear();
+
+    c1->SetFillColor(kWhite);
+#ifndef PRESENTATION
+    c1->Divide(3,3,1e-10,1e-10);
+#else
+    c1->Divide(2,2,1e-10,1e-10);
+#endif
+    c1->SetFillColor(kWhite);
+
+    TGraph *g=0;
+
+    TLine line;
+    line.SetLineColor(kGreen);
+    line.SetLineWidth(2);
+#ifndef PRESENTATION
+    c1->cd(1);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)gaz.DrawClone("A*");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Az [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta Az [\\circ]");
+
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+    line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+
+    c1->cd(2);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)gdaz.DrawClone("A*");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Zd [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta Az [\\circ]");
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+    line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+    cout << "Mean dAz: " << g->GetMean(2) << " \xb1 " << g->GetRMS(2) <<  endl;
+
+    c1->cd(3);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    if (gmaz.GetN()>0)
+    {
+        g=(TGraph*)gmaz.DrawClone("A*");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta Az [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+        line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+    }
+#endif
+
+#ifndef PRESENTATION
+    c1->cd(4);
+#else
+    c1->cd(1);
+#endif
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)gdzd.DrawClone("A*");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Az [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta Zd [\\circ]");
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+    line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+    cout << "Mean dZd: " << g->GetMean(2) << " \xb1 " << g->GetRMS(2) <<  endl;
+    cout << endl;
+
+#ifndef PRESENTATION
+    c1->cd(5);
+#else
+    c1->cd(2);
+#endif
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)gzd.DrawClone("A*");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Zd [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta Zd [\\circ]");
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+    line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+#ifndef PRESENTATION
+    c1->cd(6);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    if (gmzd.GetN()>0)
+    {
+        g=(TGraph*)gmzd.DrawClone("A*");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta Zd [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+        line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+    }
+#endif
+
+#ifndef PRESENTATION
+    c1->cd(7);
+#else
+    c1->cd(3);
+#endif
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)graz.DrawClone("AP");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Az [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta [\\circ]");
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+
+    proaz.SetLineWidth(2);
+    proaz.SetLineColor(kBlue);
+    proaz.SetMarkerColor(kBlue);
+    proaz.DrawCopy("pc hist same");
+
+#ifndef PRESENTATION
+    c1->cd(8);
+#else
+    c1->cd(4);
+#endif
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    g=(TGraph*)grzd.DrawClone("AP");
+    g->SetBit(kCanDelete);
+    g->GetHistogram()->SetXTitle("Zd [\\circ]");
+    g->GetHistogram()->SetYTitle("\\Delta [\\circ]");
+    line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+
+    prozd.SetLineWidth(2);
+    prozd.SetLineColor(kBlue);
+    prozd.SetMarkerColor(kBlue);
+    prozd.DrawCopy("pc hist same");
+
+#ifndef PRESENTATION
+    c1->cd(9);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetGridx();
+    gPad->SetGridy();
+    if (grmag.GetN()>0)
+    {
+        g=(TGraph*)grmag.DrawClone("AP");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+    }
+    promag.SetLineWidth(2);
+    promag.SetLineColor(kBlue);
+    promag.SetMarkerColor(kBlue);
+    promag.DrawCopy("pc hist same");
+#endif
+
+    //
+    // Print out the residual before and after correction in several
+    // units
+    //
+    cout << fCoordinates.GetSize() << " data sets." << endl << endl;
+    cout << "Total Spread of Residual:" << endl;
+    cout << "-------------------------" << endl;
+    cout << "before: " << Form("%6.4f", hres1.GetMean()) << " \xb1 " << Form("%6.4f", hres1.GetRMS()) << " deg \t";
+    cout << "before: " << Form("%4.1f", hres1.GetMean()*3600) << " \xb1 " << Form("%.1f", hres1.GetRMS()*3600) << " arcsec" << endl;
+    cout << "after:  " << Form("%6.4f", hres2.GetMean()) << " \xb1 " << Form("%6.4f", hres2.GetRMS()) << " deg \t";
+    cout << "after:  " << Form("%4.1f", hres2.GetMean()*3600) << " \xb1 " << Form("%.1f", hres2.GetRMS()*3600) << " arcsec" << endl;
+    cout << "backw:  " << Form("%6.4f", hres3.GetMean()) << " \xb1 " << Form("%6.4f", hres3.GetRMS()) << " deg \t";
+    cout << "backw:  " << Form("%4.1f", hres3.GetMean()*3600) << " \xb1 " << Form("%.1f", hres3.GetRMS()*3600) << " arcsec" << endl;
+    cout << endl;
+    cout << "before: " << Form("%4.1f", hres1.GetMean()*16348/360) << " \xb1 " << Form("%.1f", hres1.GetRMS()*16384/360) << " SE \t\t";
+    cout << "before: " << Form("%4.1f", hres1.GetMean()*60*60/23.4) << " \xb1 " << Form("%.1f", hres1.GetRMS()*60*60/23.4) << " pix" << endl;
+    cout << "after:  " << Form("%4.1f", hres2.GetMean()*16384/360) << " \xb1 " << Form("%.1f", hres2.GetRMS()*16384/360) << " SE \t\t";
+    cout << "after:  " << Form("%4.1f", hres2.GetMean()*60*60/23.4) << " \xb1 " << Form("%.1f", hres2.GetRMS()*60*60/23.4) << " pix" << endl;
+    cout << "backw:  " << Form("%4.1f", hres3.GetMean()*16384/360) << " \xb1 " << Form("%.1f", hres3.GetRMS()*16384/360) << " SE \t\t";
+    cout << "backw:  " << Form("%4.1f", hres3.GetMean()*60*60/23.4) << " \xb1 " << Form("%.1f", hres3.GetRMS()*60*60/23.4) << " pix" << endl;
+    cout << endl;
+    cout << endl; // ±
+
+
+    before = hres1.GetMean()*16384/360;
+    after  = hres2.GetMean()*16384/360;
+    backw  = hres3.GetMean()*16384/360;
+
+
+    gStyle->SetOptStat(1110);
+    gStyle->SetStatFormat("6.2g");
+
+    if (gROOT->FindObject("CanvResiduals"))
+        c1 = dynamic_cast<TCanvas*>(gROOT->FindObject("CanvResiduals"));
+    else
+        c1=new TCanvas("CanvResiduals", "Residuals", 800, 800);
+
+    gROOT->SetSelectedPad(0);
+    c1->SetSelectedPad(0);
+    c1->Clear();
+    c1->SetFillColor(kWhite);
+
+    c1->Divide(2, 2, 1e-10, 1e-10);
+
+    c1->cd(2);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    hres1.SetLineColor(kRed);
+    hres1.DrawCopy();
+
+    gPad->Update();
+
+    line.DrawLine(360./16384, gPad->GetUymin(), 360./16384, gPad->GetUymax());
+
+    c1->cd(4);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    hres2.SetLineColor(kBlue);
+    TH1 *h=hres2.DrawCopy();
+    TF1 f("mygaus", "(gaus)", 0, 1);
+    f.SetLineColor(kMagenta/*6*/);
+    f.SetLineWidth(1);
+    f.SetParameter(0, h->GetBinContent(1));
+    f.FixParameter(1, 0);
+    f.SetParameter(2, h->GetRMS());
+    h->Fit("mygaus", "QR");
+    hres3.SetLineColor(kCyan);
+    hres3.SetLineStyle(kDashed);
+    hres3.DrawCopy("same");
+    cout << "Gaus-Fit  Sigma: " << f.GetParameter(2) << "\xb0" << endl;
+    cout << "Fit-Probability: " << f.GetProb()*100 << "%" << endl;
+    cout << "      Chi^2/NDF: " << f.GetChisquare() << "/" << f.GetNDF() << " = " << f.GetChisquare()/f.GetNDF() << endl;
+    gPad->Update();
+    line.DrawLine(360./16384, gPad->GetUymin(), 360./16384, gPad->GetUymax());
+
+    c1->cd(1);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetTheta(90);
+    gPad->SetPhi(90);
+    TH2F h2res1("Res2D1", " Dataset positions on the sky ", 36, 0, 360,  8, 0, 90);
+    h2res1.SetBit(TH1::kNoStats);
+    h2res1.DrawCopy("surf1pol");
+    gPad->Modified();
+    gPad->Update();
+    DrawHorizon(gPad);
+    for (int i=0; i<fOriginal.GetSize(); i++)
+        DrawSet(gPad, *(TPointStar*)fOriginal.At(i));//, 10./hres1.GetMean());
+
+    TText text;
+    text.SetTextAlign(22);
+    text.DrawText( 0.00,  0.66, "N");
+    text.DrawText( 0.66,  0.00, "E");
+    text.DrawText( 0.00, -0.66, "S");
+    text.DrawText(-0.66,  0.00, "W");
+
+    c1->cd(3);
+    gPad->SetBorderMode(0);
+    gPad->SetFrameBorderMode(0);
+    gPad->SetTheta(90);
+    gPad->SetPhi(90);
+    h2res1.SetTitle(" Arb. Residuals after correction (scaled) ");
+    h2res1.DrawCopy("surf1pol");
+    gPad->Modified();
+    gPad->Update();
+//        for (int i=0; i<fCoordinates.GetSize(); i++)
+//            DrawSet(gPad, *(Set*)fCoordinates.At(i), 10./hres2.GetMean(), par[0]);
+
+    RaiseWindow();
+}
+
+TObject *TPointGui::FindWidget(Int_t id) const
+{
+    if (id<0)
+        return NULL;
+
+    TObject *obj;
+    TIter Next(fList);
+    while ((obj=Next()))
+    {
+        const TGWidget *wid = (TGWidget*)obj->IsA()->DynamicCast(TGWidget::Class(), obj);
+        if (!wid)
+            continue;
+
+        if (id == wid->WidgetId())
+            return obj;
+    }
+    return NULL;
+}
Index: branches/FACT++_part_filenames/drive/TPointGui.h
===================================================================
--- branches/FACT++_part_filenames/drive/TPointGui.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/TPointGui.h	(revision 18732)
@@ -0,0 +1,98 @@
+#ifndef COSY_TPointGui
+#define COSY_TPointGui
+
+#ifndef ROOT_TGFrame
+#include <TGFrame.h>
+#endif
+
+#ifndef ROOT_TGFileDialog
+#include <TGFileDialog.h>
+#endif
+
+#include "MPointing.h"
+
+class TPointStar;
+class TVirtualPad;
+class TGLabel;
+class TList;
+
+class TPointGui : public TGMainFrame
+{
+private:
+    enum {
+        kTbFit = 1024,
+        kTbLoad,
+        kTbSave,
+        kTbLoadStars,
+        kTbReset,
+        kTbResetStars,
+        kTbReloadStars,
+
+        kIdAzMin,
+        kIdAzMax,
+        kIdZdMin,
+        kIdZdMax,
+        kIdMagMax,
+        kIdLimit,
+    };
+
+    TList *fList;
+
+    TList fOriginal;
+    TList fCoordinates;
+    TList fLabel;
+
+    MPointing fBending;
+
+    TString fFileNameStars;
+
+    FontStruct_t fFont;
+
+    Bool_t fExitLoopOnClose;
+
+    Float_t fAzMin;
+    Float_t fAzMax;
+    Float_t fZdMin;
+    Float_t fZdMax;
+    Float_t fMagMax;
+
+    Float_t fLimit;
+
+    void Fcn(Int_t &/*npar*/, Double_t */*gin*/, Double_t &f, Double_t *par, Int_t /*iflag*/);
+    static void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
+
+    TObject *FindWidget(Int_t id) const;
+
+    void AddTextButton(TGCompositeFrame *f, TString txt, Int_t id=-1, TGLayoutHints *h=0);
+    void AddCheckButton(TGCompositeFrame *f, TString txt, Int_t id=-1, TGLayoutHints *h=0);
+    void AddResetButton(TGCompositeFrame *f, Int_t id, TGLayoutHints *h, Int_t height);
+    TGLabel *AddLabel(TGCompositeFrame *f, TString txt, TGLayoutHints *h=0);
+
+    void DisplayBending();
+    void DisplayData();
+    void DisplayResult(Double_t before, Double_t after, Double_t backw);
+
+    void DrawMarker(TVirtualPad *pad, Double_t r0, Double_t phi0);
+    void DrawPolLine(TVirtualPad *pad, Double_t r0, Double_t phi0, Double_t r1, Double_t phi1);
+    void DrawSet(TVirtualPad *pad, TPointStar &set, Float_t scale=-1, Float_t angle=0);
+    void DrawHorizon(TVirtualPad *pad, const char *fname="drive/horizon.dat") const;
+
+    TString OpenDialog(TString &dir, EFileDialogMode mode=kFDOpen);
+
+    void LoadCollection(TString fname);
+    void LoadStars(TString fname="tpoint.txt");
+
+    Bool_t ProcessMessage(Long_t msg, Long_t mp1, Long_t);
+
+    void Fit(Double_t &before, Double_t &after, Double_t &backw);
+
+    Float_t GetFloat(Int_t id) const;
+
+public:
+    TPointGui(const std::string fname, const std::string mod);
+    ~TPointGui();
+
+    void SetExitLoopOnClose(Bool_t b=kTRUE) { fExitLoopOnClose=b; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/TPointStar.cc
===================================================================
--- branches/FACT++_part_filenames/drive/TPointStar.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/TPointStar.cc	(revision 18732)
@@ -0,0 +1,136 @@
+#include "TPointStar.h"
+
+#include <iostream>
+#include <TMath.h>
+
+#include "MPointing.h"
+
+using namespace std;
+
+void TPointStar::Init(const char *name, const char *title)
+{
+    fName  = name  ? name  : "TPointStar";
+    fTitle = title ? title : "A set of TPoints";
+}
+
+TPointStar::TPointStar(Double_t sel, Double_t saz, Double_t rel, Double_t raz) :
+    fStarAz(saz*TMath::DegToRad()),
+    fStarEl(sel*TMath::DegToRad()),
+    fRawAz(raz*TMath::DegToRad()),
+    fRawEl(rel*TMath::DegToRad()), fMag(-25)
+{
+    Init();
+}
+
+Double_t TPointStar::GetDEl() const     { return (fRawEl-fStarEl)*TMath::RadToDeg(); }
+Double_t TPointStar::GetDZd() const     { return -GetDEl(); }
+Double_t TPointStar::GetDAz() const     { return (fRawAz-fStarAz)*TMath::RadToDeg(); }
+Double_t TPointStar::GetStarEl() const  { return fStarEl*TMath::RadToDeg(); }
+Double_t TPointStar::GetStarZd() const  { return 90.-fStarEl*TMath::RadToDeg(); }
+Double_t TPointStar::GetStarAz() const  { return fStarAz*TMath::RadToDeg(); }
+Double_t TPointStar::GetRawEl() const   { return fRawEl*TMath::RadToDeg(); }
+Double_t TPointStar::GetRawAz() const   { return fRawAz*TMath::RadToDeg(); }
+Double_t TPointStar::GetRawZd() const   { return 90.-fRawEl*TMath::RadToDeg(); }
+
+ZdAz  TPointStar::GetStarZdAz() const   { return ZdAz(TMath::Pi()/2-fStarEl, fStarAz); }
+AltAz TPointStar::GetStarAltAz() const  { return AltAz(fStarEl, fStarAz); }
+
+ZdAz  TPointStar::GetRawZdAz() const    { return ZdAz(TMath::Pi()/2-fRawEl, fRawAz); }
+AltAz TPointStar::GetRawAltAz() const   { return AltAz(fRawEl, fRawAz); }
+
+void TPointStar::Adjust(const MPointing &bend)
+{
+    AltAz p = bend(GetStarAltAz());
+    fStarEl = p.Alt();
+    fStarAz = p.Az();
+}
+
+void TPointStar::AdjustBack(const MPointing &bend)
+{
+    AltAz p = bend.CorrectBack(GetRawAltAz());
+    fRawEl = p.Alt();
+    fRawAz = p.Az();
+}
+
+Double_t TPointStar::GetResidual(Double_t *err) const
+{
+    const Double_t del = fRawEl-fStarEl;
+    const Double_t daz = fRawAz-fStarAz;
+
+    const double x = cos(fRawEl) * cos(fStarEl) * cos(fStarAz-fRawAz);
+    const double y = sin(fRawEl) * sin(fStarEl);
+
+    const Double_t d = x + y;
+
+    if (err)
+    {
+        // Error of one pixel in the CCD
+        const Double_t e1 = 45./3600*TMath::DegToRad()  /4 * 0.5;
+
+        // Error of the SE readout
+        const Double_t e2 = 360./16384*TMath::DegToRad()/4 * 0.5;
+
+        const Double_t e11 =  sin(del)+cos(fRawEl)*sin(fStarEl)*(1-cos(daz));
+        const Double_t e12 =  cos(fRawEl)*cos(fStarEl)*sin(daz);
+
+        const Double_t e21 = -sin(del)+sin(fRawEl)*cos(fStarEl)*(1-cos(daz));
+        const Double_t e22 = -cos(fRawEl)*cos(fStarEl)*sin(daz);
+
+        const Double_t err1  = sqrt(1-d*d);
+        const Double_t err2  = (e11*e11 + e12*e12)*e1*e1;
+        const Double_t err3  = (e21*e21 + e22*e22)*e2*e2;
+
+        *err = sqrt(err2+err3)/err1 * TMath::RadToDeg();
+    }
+
+    const Double_t dist = acos(d);
+    return dist * TMath::RadToDeg();
+}
+
+istream &operator>>(istream &fin, TPointStar &set)
+{
+    TString str;
+    do
+    {
+        str.ReadLine(fin);
+        if (!fin)
+            return fin;
+    } while (str[0]=='#');
+
+    Float_t v[4], mag;
+    Int_t n = sscanf(str.Data(), "%f %f %f %f %*f %*f %*f %*f %*f %*f %f", v, v+1, v+2, v+3, &mag);
+    if (n<4)
+    {
+        cout << "Read: ERROR - Not enough numbers" << endl;
+        return fin;
+    }
+    set.fMag = n<5 ? -25 : mag;
+
+    set.fStarAz = v[0]*TMath::DegToRad();
+    set.fStarEl = v[1]*TMath::DegToRad();
+
+    set.fRawAz  = v[2]*TMath::DegToRad();
+    set.fRawEl  = v[3]*TMath::DegToRad();
+
+
+
+    if (fin)
+    {
+        Double_t res, err;
+        res = set.GetResidual(&err);
+        cout << "Read: " << v[0] << " " << v[1] << "  :  " << v[2] << " " << v[3] << "  :  " << v[2]-v[0] << " " << v[3]-v[1] << "  :  " << res << " " << err << " " << err/res << endl;
+    }
+
+    return fin;
+}
+
+ostream &operator<<(ostream &out, TPointStar &set)
+{
+    out << Form("%8.3f", set.fStarAz*TMath::RadToDeg()) << " ";
+    out << Form("%7.3f", set.fStarEl*TMath::RadToDeg()) << "   ";
+    out << Form("%8.3f", set.fRawAz*TMath::RadToDeg()) << " ";
+    out << Form("%7.3f", set.fRawEl*TMath::RadToDeg()) << "   ";
+    out << Form("%6.3f", set.fMag);
+
+    return out;
+}
Index: branches/FACT++_part_filenames/drive/TPointStar.h
===================================================================
--- branches/FACT++_part_filenames/drive/TPointStar.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/TPointStar.h	(revision 18732)
@@ -0,0 +1,65 @@
+#ifndef COSY_TPointStar
+#define COSY_TPointStar
+
+#ifndef ROOT_TNamed
+#include <TNamed.h>
+#endif
+
+class ZdAz;
+class AltAz;
+
+class MPointing;
+
+class TPointStar : public TNamed
+{
+    friend std::istream &operator>>(std::istream &fin,  TPointStar &set);
+    friend std::ostream &operator<<(std::ostream &fout, TPointStar &set);
+private:
+    Double_t fStarAz;
+    Double_t fStarEl;
+
+    Double_t fRawAz;
+    Double_t fRawEl;
+
+    Double_t fMag;
+
+    void Init(const char *name=0, const char *title=0);
+public:
+    TPointStar(const char *name, const char *title=0) { Init(name, title); }
+    TPointStar(Double_t sel=0, Double_t saz=0, Double_t rel=0, Double_t raz=0);
+    TPointStar(const TPointStar &set) : TNamed(set)
+    {
+        fStarAz = set.fStarAz;
+        fStarEl = set.fStarEl;
+        fRawAz  = set.fRawAz;
+        fRawEl  = set.fRawEl;
+        fMag    = set.fMag;
+    }
+
+    Double_t GetMag() const { return fMag; }
+    Double_t GetResidual(Double_t *err=0) const;
+
+    Double_t GetDEl() const;//     { return (fRawEl-fStarEl)*TMath::RadToDeg(); }
+    Double_t GetDZd() const;//     { return -GetDEl(); }
+    Double_t GetDAz() const;//     { return (fRawAz-fStarAz)*TMath::RadToDeg(); }
+    Double_t GetStarEl() const;//  { return fStarEl*TMath::RadToDeg(); }
+    Double_t GetStarZd() const;//  { return 90.-fStarEl*TMath::RadToDeg(); }
+    Double_t GetStarAz() const;//  { return fStarAz*TMath::RadToDeg(); }
+    Double_t GetRawEl() const;//   { return fRawEl*TMath::RadToDeg(); }
+    Double_t GetRawAz() const;//   { return fRawAz*TMath::RadToDeg(); }
+    Double_t GetRawZd() const;//   { return 90.-fRawEl*TMath::RadToDeg(); }
+
+    ZdAz  GetStarZdAz() const;//   { return ZdAz(TMath::Pi()/2-fStarEl, fStarAz); }
+    AltAz GetStarAltAz() const;//  { return AltAz(fStarEl, fStarAz); }
+
+    ZdAz  GetRawZdAz() const;//    { return ZdAz(TMath::Pi()/2-fRawEl, fRawAz); }
+    AltAz GetRawAltAz() const;//   { return AltAz(fRawEl, fRawAz); }
+
+    void Adjust(const MPointing &bend);
+    void AdjustBack(const MPointing &bend);
+};
+
+std::istream &operator>>(std::istream &fin, TPointStar &set);
+std::ostream &operator<<(std::ostream &out, TPointStar &set);
+
+#endif
Index: branches/FACT++_part_filenames/drive/Writer.cc
===================================================================
--- branches/FACT++_part_filenames/drive/Writer.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Writer.cc	(revision 18732)
@@ -0,0 +1,181 @@
+#include "Writer.h"
+
+#include <iostream> // cout
+#include <fstream>  // ofstream
+
+#include <TVector2.h>
+
+#include <stdio.h>    // FILE
+#include <png.h>
+
+#include "MTime.h"
+
+ClassImp(Writer);
+
+using namespace std;
+
+void Writer::Png(const char *fname, const byte *buf,
+                 struct timeval *date, const TVector2 xy)
+{
+    MTime t(*date);
+    TString mjd;
+    mjd += t.GetMjd()-52000;
+    mjd = mjd.Strip(TString::kBoth);
+    if (mjd.Length()<10)
+        mjd.Append('0', 10-mjd.Length());
+
+    TString pos;
+    pos += xy.X();
+    pos = pos.Strip(TString::kBoth);
+    pos +="_";
+    TString posy;
+    posy += xy.Y();
+    posy = posy.Strip(TString::kBoth);
+    pos +=posy;
+
+    TString name = fname;
+    name += "_";
+    name += mjd;
+    name += "_";
+    name += pos;
+    name += ".png";
+
+    cout << "Writing PNG '" << name << "'" << endl;
+
+    //
+    // open file
+    //
+    FILE *fd = fopen(name, "w");
+    if (!fd)
+    {
+        cout << "Warning: Cannot open file for writing." << endl;
+        return;
+    }
+
+    //
+    // allocate memory
+    //
+    png_structp fPng = png_create_write_struct(PNG_LIBPNG_VER_STRING,
+                                               NULL, NULL, NULL);
+
+    if (!fPng)
+    {
+        cout << "Warning: Unable to create PNG structure" << endl;
+        fclose(fd);
+        return;
+    }
+
+
+    png_infop fInfo = png_create_info_struct(fPng);
+
+    if (!fInfo)
+    {
+        cout << "Warning: Unable to create PNG info structure" << endl;
+        png_destroy_write_struct (&fPng, NULL);
+        fclose(fd);
+        return;
+    }
+
+    fInfo->width      = 768;
+    fInfo->height     = 576;
+    fInfo->bit_depth  = 8;
+    fInfo->color_type = PNG_COLOR_TYPE_GRAY;
+
+    //
+    // set jump-back point in case of errors
+    //
+    if (setjmp(fPng->jmpbuf))
+    {
+        cout << "longjmp Warning: PNG encounterd an error!" << endl;
+        png_destroy_write_struct (&fPng, &fInfo);
+        fclose(fd);
+        return;
+    }
+
+    //
+    // connect file to PNG-Structure
+    //
+    png_init_io(fPng, fd);
+
+    // png_set_compression_level (fPng, Z_BEST_COMPRESSION);
+
+    //
+    // Write header
+    //
+    png_write_info (fPng, fInfo);
+
+    //
+    // Write Time Chunks
+    //
+    /*
+    if (date)
+    {
+        char text[36];
+
+        Timer timet(date);
+        sprintf(text, "*** %s ***", timet.GetTimeStr());
+        png_write_chunk(fPng, (png_byte*)"UTC", (png_byte*)text, strlen(text));
+        sprintf(text,"*** %s %s %.1f %i ***", tzname[0], tzname[1], 1.0/3600*timezone, daylight);
+        png_write_chunk(fPng, (png_byte*)"ZONE", (png_byte*)text, strlen(text));
+        }
+        */
+
+    //
+    // Write bitmap data
+    //
+    for (unsigned int y=0; y<768*576; y+=768)
+	png_write_row (fPng, (png_byte*)buf+y);
+
+    //
+    // Write footer
+    //
+    png_write_end (fPng, fInfo);
+
+    //
+    // free memory
+    //
+    png_destroy_write_struct (&fPng, &fInfo);
+
+    fclose(fd);
+}
+
+void Writer::Ppm(const char *fname, const byte *img, struct timeval *date, const TVector2 xy)
+{
+    TString name = fname;
+
+    MTime t(*date);
+
+    TString pos;
+    pos += xy.X();
+    pos = pos.Strip(TString::kBoth);
+    pos +="_";
+    TString posy;
+    posy += xy.Y();
+    posy = posy.Strip(TString::kBoth);
+    pos +=posy;
+
+    name += "_";
+    name += t.GetMjd()-52000;
+    name += "_";
+    name += pos;  
+    name += ".ppm";
+
+    cout << "Writing PPM '" << name << "'" << endl;
+
+    //
+    // open file for writing
+    //
+    ofstream fout(name);
+    if (!fout)
+    {
+        cout << "Warning: Cannot open file for writing." << endl;
+        return;
+    }
+
+    //
+    // write buffer to file
+    //
+    fout << "P6\n768 576\n255\n";
+    for (byte const *buf = img; buf < img+768*576; buf++)
+        fout << *buf << *buf << *buf;
+}
Index: branches/FACT++_part_filenames/drive/Writer.h
===================================================================
--- branches/FACT++_part_filenames/drive/Writer.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/Writer.h	(revision 18732)
@@ -0,0 +1,28 @@
+#ifndef WRITER_H
+#define WRITER_H
+
+#ifdef __CINT__
+struct timeval;
+#else
+#include <TROOT.h>
+#include <sys/time.h>
+#endif
+
+class TVector2;
+
+typedef unsigned char byte;
+
+class Writer;
+
+class Writer 
+{
+public:
+    virtual ~Writer() { }
+
+    static void Ppm(const char *fname, const byte *img, struct timeval *date, const TVector2 xy);
+    static void Png(const char *fname, const byte *buf, struct timeval *date, const TVector2 xy);
+
+    ClassDef(Writer, 0)
+};
+
+#endif
Index: branches/FACT++_part_filenames/drive/horizon.dat
===================================================================
--- branches/FACT++_part_filenames/drive/horizon.dat	(revision 18732)
+++ branches/FACT++_part_filenames/drive/horizon.dat	(revision 18732)
@@ -0,0 +1,392 @@
+-1.08549  -2.68443
+
+0.75582  -2.62746
+
+2.49471  -2.46402
+
+4.31136  -2.25441
+
+6.08067  -2.07441
+
+7.88166  -1.8981
+
+9.69105  -1.72197
+
+11.4892  -1.56771
+
+13.3149  -1.15821
+
+15.1554  -1.13094
+
+16.9281  -1.05615
+
+18.7434  -0.85869
+
+20.5258  -0.67374
+
+22.321  -0.4635
+
+24.0907  -0.22455
+
+25.9214  0.081
+
+27.6863  0.47934
+
+29.5379  0.76995
+
+31.3172  0.96651
+
+33.1008  1.32804
+
+34.8992  2.02284
+
+36.7245  2.46465
+
+38.5327  2.71476
+
+40.3614  3.024
+
+42.1299  3.19608
+
+43.9211  3.33747
+
+45.7597  3.65805
+
+47.5092  3.62115
+
+49.3453  3.79215
+
+51.1552  4.05918
+
+52.9582  4.35627
+
+54.731  4.56912
+
+56.4981  4.73787
+
+58.3093  5.00607
+
+60.1111  5.2893
+
+61.8979  5.56992
+
+63.6873  5.7456
+
+65.4917  6.07554
+
+67.3218  6.35787
+
+69.1094  6.53445
+
+70.9515  6.7167
+
+72.6985  7.03593
+
+74.511  7.30116
+
+76.3561  7.38909
+
+78.1582  7.938
+
+79.9492  8.92854
+
+81.7484  8.33157
+
+83.5157  8.45181
+
+85.2854  8.53614
+
+87.0911  8.73
+
+88.8773  8.82774
+
+90.7561  8.97885
+
+92.4984  9.0972
+
+94.3601  9.8622
+
+96.0811  9.64818
+
+97.9119  9.67968
+
+99.7173  9.70245
+
+101.495  10.0206
+
+103.278  10.2409
+
+105.096  10.3982
+
+106.918  10.034
+
+108.723  9.32175
+
+110.515  9.65412
+
+112.349  9.96795
+
+114.099  9.42264
+
+115.904  9.0972
+
+117.76  8.97921
+
+119.498  9.21483
+
+121.332  9.7722
+
+123.115  10.7469
+
+124.93  12.5522
+
+126.725  13.766
+
+128.481  14.2907
+
+130.296  14.7813
+
+132.146  14.9968
+
+133.91  14.5892
+
+135.758  14.0036
+
+137.514  13.8361
+
+139.3  13.3862
+
+141.1  13.2062
+
+142.901  13.3749
+
+144.736  13.6637
+
+146.493  13.8506
+
+148.286  13.5819
+
+150.085  13.1362
+
+151.881  12.9555
+
+153.735  12.7623
+
+155.537  12.6291
+
+157.338  12.8416
+
+159.105  12.4447
+
+160.942  12.172
+
+162.745  11.8119
+
+164.545  11.7135
+
+166.354  11.5065
+
+168.09  11.2936
+
+169.923  11.1227
+
+171.714  10.9247
+
+173.532  10.5733
+
+175.324  10.1763
+
+177.161  9.9333
+
+178.934  9.47682
+
+180.746  9.00225
+
+182.565  8.85735
+
+184.33  8.64135
+
+186.166  8.59086
+
+187.926  8.5131
+
+189.714  8.28405
+
+191.563  7.95834
+
+193.328  7.7526
+
+195.154  7.47441
+
+196.931  7.16886
+
+198.708  6.8661
+
+200.541  6.67665
+
+202.35  6.46614
+
+204.091  6.25617
+
+205.921  6.07572
+
+207.694  5.8104
+
+209.517  5.63958
+
+211.307  5.27166
+
+213.115  4.89672
+
+214.921  4.69125
+
+216.756  4.30605
+
+218.49  3.99177
+
+220.279  3.72024
+
+222.137  3.42378
+
+223.917  3.14478
+
+225.682  2.84121
+
+227.519  2.55375
+
+229.34  2.21373
+
+231.122  1.845
+
+232.927  1.31805
+
+234.712  0.89064
+
+236.479  0.59355
+
+238.313  0.28674
+
+240.15  -0.10359
+
+241.89  -0.14535
+
+243.734  -0.67338
+
+247.348  -1.19205
+
+249.099  -1.30275
+
+250.92  -1.395
+
+252.731  -1.72008
+
+254.487  -1.9089
+
+258.096  -2.04975
+
+259.945  -2.0934
+
+261.732  -2.37186
+
+263.509  -2.4885
+
+265.331  -2.56617
+
+272.513  -3.26025
+
+274.342  -3.40695
+
+276.154  -3.4686
+
+277.92  -3.6234
+
+279.701  -3.96684
+
+281.484  -4.16979
+
+283.307  -4.20786
+
+285.145  -4.11804
+
+286.945  -4.15485
+
+288.692  -4.1616
+
+290.499  -4.01958
+
+292.336  -4.05549
+
+294.082  -4.27635
+
+295.918  -4.43781
+
+297.705  -5.77206
+
+299.488  -4.83075
+
+301.337  -4.96674
+
+303.094  -4.99113
+
+304.918  -5.12829
+
+306.765  -5.14413
+
+308.491  -5.13468
+
+310.346  -5.29812
+
+312.137  -5.2776
+
+313.935  -5.35248
+
+315.719  -5.5305
+
+317.518  -5.6205
+
+319.318  -5.75244
+
+321.159  -6.00606
+
+322.943  -6.5106
+
+324.708  -6.40116
+
+326.488  -6.50655
+
+328.304  -6.30612
+
+330.083  -6.34554
+
+331.922  -6.29982
+
+333.767  -6.22125
+
+335.488  -6.04773
+
+337.295  -5.80878
+
+339.135  -5.72841
+
+340.935  -5.29056
+
+342.748  -5.12145
+
+344.558  -4.82985
+
+346.337  -4.55985
+
+348.136  -4.38246
+
+349.94  -4.22955
+
+351.767  -3.9816
+
+353.499  -3.63825
+
+355.315  -3.2715
+
+357.109  -3.00987
+
+358.917  -2.7828
+
Index: branches/FACT++_part_filenames/drive/telesto.cc
===================================================================
--- branches/FACT++_part_filenames/drive/telesto.cc	(revision 18732)
+++ branches/FACT++_part_filenames/drive/telesto.cc	(revision 18732)
@@ -0,0 +1,160 @@
+#include <TROOT.h>
+#include <TClass.h>
+#include <TSystem.h>
+#include <TGClient.h>
+#include <TApplication.h>
+#include <TObjectTable.h>
+
+#include "MAGIC.h"
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+//#include "MEnv.h"
+#include "MArgs.h"
+#include "MArray.h"
+#include "MParContainer.h"
+//#include "MDirIter.h"
+
+#include "TPointGui.h"
+//#include "MStatusDisplay.h"
+
+//#include "MSequence.h"
+//#include "MJStar.h"
+
+using namespace std;
+
+static void StartUpMessage()
+{
+    gLog << all << endl;
+
+    //                1         2         3         4         5         6
+    //       123456789012345678901234567890123456789012345678901234567890
+    gLog << "========================================================" << endl;
+    gLog << "                       Telesto - COSY"                    << endl;
+    gLog << "           Telesto - Telescope TPoint organizer"          << endl;
+    gLog << "       Compiled with ROOT v" << ROOT_RELEASE << " on <" << __DATE__ << ">" << endl;
+    gLog << "========================================================" << endl;
+    gLog << endl;
+}
+
+static void Usage()
+{
+    //                1         2         3         4         5         6         7         8
+    //       12345678901234567890123456789012345678901234567890123456789012345678901234567890
+    gLog << all << endl;
+    gLog << "Sorry the usage is:" << endl;
+    gLog << " telestop [file.txt|file.col [pointing.mod]]" << endl << endl;
+    gLog << " Arguments:" << endl;
+    gLog << "   file.txt|file.col         A collection of files or a file with tpoints" << endl;
+    gLog << "   pointing.mod              A pointing model to load at startup" << endl << endl;
+    gLog << " Root Options:" << endl;
+    gLog << "   -b                        Batch mode (no graphical output to screen)" << endl<<endl;
+    gLog << " Options:" << endl;
+    gLog.Usage();
+//    gLog << "   --debug-env=0             Disable debugging setting resources <default>" << endl;
+//    gLog << "   --debug-env[=1]           Display untouched resources after program execution" << endl;
+//    gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
+//    gLog << "   --debug-env=3             Debug setting resources from resource file and command line" << endl;
+    gLog << "   --debug-mem               Debug memory usage" << endl << endl;
+//    gLog << "   --rc=Name:option          Set or overwrite a resource of the resource file." << endl;
+    gLog << "                             (Note, that this option can be used multiple times." << endl;
+    gLog << endl;
+    gLog << " Output options:" << endl;
+//    gLog << "   -q                        Quit when job is finished" << endl;
+//    gLog << "   -f                        Force overwrite of existing files" << endl;
+    gLog << endl;
+    gLog << "   --version, -V             Show startup message with version number" << endl;
+    gLog << "   -?, -h, --help            This help" << endl << endl;
+    gLog << "Background:" << endl;
+    gLog << " Telesto is a moon of Saturn.  It was discovered by  Smith,  Reitsema," << endl;
+    gLog << " Larson and Fountain in 1980 from ground-based observations,  and  was" << endl;
+    gLog << " provisionally designated S/1980 S 13." << endl;
+    gLog << " In 1983 it was officially named after Telesto  of Greek mythology. It" << endl;
+    gLog << " is also designated as Saturn XIII or Tethys B." << endl;
+    gLog << " Telesto  is  co-orbital  with  Tethys,  residing  in  Tethys' leading" << endl;
+    gLog << " Lagrangian  point  (L4).  This relationship  was  first identified by" << endl;
+    gLog << " Seidelmann et al.   The  moon  Calypso  also  resides  in  the  other" << endl;
+    gLog << " (trailing) lagrangian point of Tethys, 60 deg in the other direction." << endl;
+    gLog << " The  Cassini probe  performed a distant flyby  of Telesto on Oct. 11," << endl;
+    gLog << " 2005.  The resulting  images show  that  its surface  is surprisingly" << endl;
+    gLog << " smooth, devoid of small impact craters." << endl << endl;
+}
+
+int main(int argc, char **argv)
+{
+    if (!MARS::CheckRootVer())
+        return 0xff;
+
+    MLog::RedirectErrorHandler(MLog::kColor);
+
+    //
+    // Evaluate arguments
+    //
+    MArgs arg(argc, argv);
+    gLog.Setup(arg);
+
+    StartUpMessage();
+
+    if (arg.HasOnly("-V") || arg.HasOnly("--version"))
+        return 0;
+
+    if (arg.HasOnly("-?") || arg.HasOnly("-h") || arg.HasOnly("--help"))
+    {
+        Usage();
+        return 2;
+    }
+
+    const Bool_t kDebugMem   = arg.HasOnlyAndRemove("--debug-mem");
+
+    //
+    // check for the right usage of the program (number of arguments)
+    //
+    if (arg.GetNumArguments()>2)
+    {
+        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
+        Usage();
+        return 2;
+    }
+
+    TString fname=arg.GetArgumentStr(0);
+    TString mod  =arg.GetArgumentStr(1);
+
+    //
+    // check for the right usage of the program (number of options)
+    //
+    if (arg.GetNumOptions()>0)
+    {
+        gLog << warn << "WARNING - Unknown commandline options..." << endl;
+        arg.Print("options");
+        gLog << endl;
+        return 2;
+    }
+
+//    MArray::Class()->IgnoreTObjectStreamer();
+//    MParContainer::Class()->IgnoreTObjectStreamer();
+
+    TApplication app("telesto", &argc, argv);
+    if (!gClient || gROOT->IsBatch())
+    {
+        gLog << err << "Bombing... maybe your DISPLAY variable is not set correctly!" << endl;
+        return 1;
+    }
+
+    if (kDebugMem)
+        TObject::SetObjectStat(kTRUE);
+
+    TPointGui *gui = new TPointGui(fname, mod);
+    gui->SetExitLoopOnClose();
+
+    // Wait until the user decides to exit the application
+    app.Run(kFALSE);
+
+    if (TObject::GetObjectStat())
+    {
+        TObject::SetObjectStat(kFALSE);
+        gObjectTable->Print();
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/drive/videodev.h
===================================================================
--- branches/FACT++_part_filenames/drive/videodev.h	(revision 18732)
+++ branches/FACT++_part_filenames/drive/videodev.h	(revision 18732)
@@ -0,0 +1,283 @@
+#ifndef __LINUX_VIDEODEV_H
+#define __LINUX_VIDEODEV_H
+
+#include <linux/types.h>
+
+/*#ifdef __KERNEL__
+
+#if LINUX_VERSION_CODE >= 0x020100
+#include <linux/poll.h>
+#endif
+
+struct video_device
+{
+	char name[32];
+	int type;
+	int hardware;
+
+	int (*open)(struct video_device *, int mode);
+	void (*close)(struct video_device *);
+	long (*read)(struct video_device *, char *, unsigned long, int noblock);
+	// Do we need a write method ?
+	long (*write)(struct video_device *, const char *, unsigned long, int noblock);
+#if LINUX_VERSION_CODE >= 0x020100
+	unsigned int (*poll)(struct video_device *, struct file *, poll_table *);
+#endif
+	int (*ioctl)(struct video_device *, unsigned int , void *);
+	int (*mmap)(struct video_device *, const char *, unsigned long);
+	int (*initialize)(struct video_device *);	
+	void *priv;		// Used to be 'private' but that upsets C++
+	int busy;
+	int minor;
+};
+
+extern int videodev_init(void);
+#define VIDEO_MAJOR	81
+extern int video_register_device(struct video_device *, int type);
+
+#define VFL_TYPE_GRABBER	0
+#define VFL_TYPE_VBI		1
+#define VFL_TYPE_RADIO		2
+#define VFL_TYPE_VTX		3
+
+extern void video_unregister_device(struct video_device *);
+#endif
+*/
+
+#define VID_TYPE_CAPTURE	1	/* Can capture */
+#define VID_TYPE_TUNER		2	/* Can tune */
+#define VID_TYPE_TELETEXT	4	/* Does teletext */
+#define VID_TYPE_OVERLAY	8	/* Overlay onto frame buffer */
+#define VID_TYPE_CHROMAKEY	16	/* Overlay by chromakey */
+#define VID_TYPE_CLIPPING	32	/* Can clip */
+#define VID_TYPE_FRAMERAM	64	/* Uses the frame buffer memory */
+#define VID_TYPE_SCALES		128	/* Scalable */
+#define VID_TYPE_MONOCHROME	256	/* Monochrome only */
+#define VID_TYPE_SUBCAPTURE	512	/* Can capture subareas of the image */
+
+struct video_capability
+{
+	char name[32];
+	int type;
+	int channels;	/* Num channels */
+	int audios;	/* Num audio devices */
+	int maxwidth;	/* Supported width */
+	int maxheight;	/* And height */
+	int minwidth;	/* Supported width */
+	int minheight;	/* And height */
+};
+
+
+struct video_channel
+{
+	int channel;
+	char name[32];
+	int tuners;
+	__u32  flags;
+#define VIDEO_VC_TUNER		1	/* Channel has a tuner */
+#define VIDEO_VC_AUDIO		2	/* Channel has audio */
+	__u16  type;
+#define VIDEO_TYPE_TV		1
+#define VIDEO_TYPE_CAMERA	2	
+	__u16 norm;			/* Norm set by channel */
+};
+
+struct video_tuner
+{
+	int tuner;
+	char name[32];
+	ulong rangelow, rangehigh;	/* Tuner range */
+	__u32 flags;
+#define VIDEO_TUNER_PAL		1
+#define VIDEO_TUNER_NTSC	2
+#define VIDEO_TUNER_SECAM	4
+#define VIDEO_TUNER_LOW		8	/* Uses KHz not MHz */
+#define VIDEO_TUNER_NORM	16	/* Tuner can set norm */
+#define VIDEO_TUNER_STEREO_ON	128	/* Tuner is seeing stereo */
+	__u16 mode;			/* PAL/NTSC/SECAM/OTHER */
+#define VIDEO_MODE_PAL		0
+#define VIDEO_MODE_NTSC		1
+#define VIDEO_MODE_SECAM	2
+#define VIDEO_MODE_AUTO		3
+	__u16 signal;			/* Signal strength 16bit scale */
+};
+
+struct video_picture
+{
+	__u16	brightness;
+	__u16	hue;
+	__u16	colour;
+	__u16	contrast;
+	__u16	whiteness;	/* Black and white only */
+	__u16	depth;		/* Capture depth */
+	__u16   palette;	/* Palette in use */
+#define VIDEO_PALETTE_GREY	1	/* Linear greyscale */
+#define VIDEO_PALETTE_HI240	2	/* High 240 cube (BT848) */
+#define VIDEO_PALETTE_RGB565	3	/* 565 16 bit RGB */
+#define VIDEO_PALETTE_RGB24	4	/* 24bit RGB */
+#define VIDEO_PALETTE_RGB32	5	/* 32bit RGB */	
+#define VIDEO_PALETTE_RGB555	6	/* 555 15bit RGB */
+#define VIDEO_PALETTE_YUV422	7	/* YUV422 capture */
+#define VIDEO_PALETTE_YUYV	8
+#define VIDEO_PALETTE_UYVY	9	/* The great thing about standards is ... */
+#define VIDEO_PALETTE_YUV420	10
+#define VIDEO_PALETTE_YUV411	11	/* YUV411 capture */
+#define VIDEO_PALETTE_RAW	12	/* RAW capture (BT848) */
+#define VIDEO_PALETTE_YUV422P	13	/* YUV 4:2:2 Planar */
+#define VIDEO_PALETTE_YUV411P	14	/* YUV 4:1:1 Planar */
+#define VIDEO_PALETTE_YUV420P	15	/* YUV 4:2:0 Planar */
+#define VIDEO_PALETTE_YUV410P	16	/* YUV 4:1:0 Planar */
+#define VIDEO_PALETTE_PLANAR	13	/* start of planar entries */
+#define VIDEO_PALETTE_COMPONENT 7	/* start of component entries */
+};
+
+struct video_audio
+{
+	int	audio;		/* Audio channel */
+	__u16	volume;		/* If settable */
+	__u16	bass, treble;
+	__u32	flags;
+#define VIDEO_AUDIO_MUTE	1
+#define VIDEO_AUDIO_MUTABLE	2
+#define VIDEO_AUDIO_VOLUME	4
+#define VIDEO_AUDIO_BASS	8
+#define VIDEO_AUDIO_TREBLE	16	
+	char    name[16];
+#define VIDEO_SOUND_MONO	1
+#define VIDEO_SOUND_STEREO	2
+#define VIDEO_SOUND_LANG1	4
+#define VIDEO_SOUND_LANG2	8
+        __u16   mode;		/* detected audio carriers or one to set */
+        __u16	balance;	/* Stereo balance */
+        __u16	step;		/* Step actual volume uses */
+};
+
+struct video_clip
+{
+	__s32	x,y;
+	__s32	width, height;
+	struct	video_clip *next;	/* For user use/driver use only */
+};
+
+struct video_window
+{
+	__u32	x,y;			/* Position of window */
+	__u32	width,height;		/* Its size */
+	__u32	chromakey;
+	__u32	flags;
+	struct	video_clip *clips;	/* Set only */
+	int	clipcount;
+#define VIDEO_WINDOW_INTERLACE	1
+#define VIDEO_CLIP_BITMAP	-1
+/* bitmap is 1024x625, a '1' bit represents a clipped pixel */
+#define VIDEO_CLIPMAP_SIZE	(128 * 625)
+};
+
+struct video_capture
+{
+	__u32 	x,y;			/* Offsets into image */
+	__u32	width, height;		/* Area to capture */
+	__u16	decimation;		/* Decimation divder */
+	__u16	flags;			/* Flags for capture */
+#define VIDEO_CAPTURE_ODD		0	/* Temporal */
+#define VIDEO_CAPTURE_EVEN		1
+};
+
+struct video_buffer
+{
+	void	*base;
+	int	height,width;
+	int	depth;
+	int	bytesperline;
+};
+
+struct video_mmap
+{
+	unsigned	int frame;		/* Frame (0 - n) for double buffer */
+	int		height,width;
+	unsigned	int format;		/* should be VIDEO_PALETTE_* */
+};
+
+struct video_key
+{
+	__u8	key[8];
+	__u32	flags;
+};
+
+
+#define VIDEO_MAX_FRAME		32
+
+struct video_mbuf
+{
+	int	size;		/* Total memory to map */
+	int	frames;		/* Frames */
+	int	offsets[VIDEO_MAX_FRAME];
+};
+	
+
+#define 	VIDEO_NO_UNIT	(-1)
+
+	
+struct video_unit
+{
+	int 	video;		/* Video minor */
+	int	vbi;		/* VBI minor */
+	int	radio;		/* Radio minor */
+	int	audio;		/* Audio minor */
+	int	teletext;	/* Teletext minor */
+};
+
+#define VIDIOCGCAP		_IOR('v',1,struct video_capability)	/* Get capabilities */
+#define VIDIOCGCHAN		_IOWR('v',2,struct video_channel)	/* Get channel info (sources) */
+#define VIDIOCSCHAN		_IOW('v',3,struct video_channel)	/* Set channel 	*/
+#define VIDIOCGTUNER		_IOWR('v',4,struct video_tuner)		/* Get tuner abilities */
+#define VIDIOCSTUNER		_IOW('v',5,struct video_tuner)		/* Tune the tuner for the current channel */
+#define VIDIOCGPICT		_IOR('v',6,struct video_picture)	/* Get picture properties */
+#define VIDIOCSPICT		_IOW('v',7,struct video_picture)	/* Set picture properties */
+#define VIDIOCCAPTURE		_IOW('v',8,int)				/* Start, end capture */
+#define VIDIOCGWIN		_IOR('v',9, struct video_window)	/* Set the video overlay window */
+#define VIDIOCSWIN		_IOW('v',10, struct video_window)	/* Set the video overlay window - passes clip list for hardware smarts , chromakey etc */
+#define VIDIOCGFBUF		_IOR('v',11, struct video_buffer)	/* Get frame buffer */
+#define VIDIOCSFBUF		_IOW('v',12, struct video_buffer)	/* Set frame buffer - root only */
+#define VIDIOCKEY		_IOR('v',13, struct video_key)		/* Video key event - to dev 255 is to all - cuts capture on all DMA windows with this key (0xFFFFFFFF == all) */
+#define VIDIOCGFREQ		_IOR('v',14, unsigned long)		/* Set tuner */
+#define VIDIOCSFREQ		_IOW('v',15, unsigned long)		/* Set tuner */
+#define VIDIOCGAUDIO		_IOR('v',16, struct video_audio)	/* Get audio info */
+#define VIDIOCSAUDIO		_IOW('v',17, struct video_audio)	/* Audio source, mute etc */
+#define VIDIOCSYNC		_IOW('v',18, int)			/* Sync with mmap grabbing */
+#define VIDIOCMCAPTURE		_IOW('v',19, struct video_mmap)		/* Grab frames */
+#define VIDIOCGMBUF		_IOR('v', 20, struct video_mbuf)	/* Memory map buffer info */
+#define VIDIOCGUNIT		_IOR('v', 21, struct video_unit)	/* Get attached units */
+#define VIDIOCGCAPTURE		_IOR('v',22, struct video_capture)	/* Get frame buffer */
+#define VIDIOCSCAPTURE		_IOW('v',23, struct video_capture)	/* Set frame buffer - root only */
+
+#define BASE_VIDIOCPRIVATE	192		/* 192-255 are private */
+
+
+#define VID_HARDWARE_BT848	1
+#define VID_HARDWARE_QCAM_BW	2
+#define VID_HARDWARE_PMS	3
+#define VID_HARDWARE_QCAM_C	4
+#define VID_HARDWARE_PSEUDO	5
+#define VID_HARDWARE_SAA5249	6
+#define VID_HARDWARE_AZTECH	7
+#define VID_HARDWARE_SF16MI	8
+#define VID_HARDWARE_RTRACK	9
+#define VID_HARDWARE_ZOLTRIX	10
+#define VID_HARDWARE_SAA7146    11
+#define VID_HARDWARE_VIDEUM	12	/* Reserved for Winnov videum */
+#define VID_HARDWARE_RTRACK2	13
+#define VID_HARDWARE_PERMEDIA2	14	/* Reserved for Permedia2 */
+#define VID_HARDWARE_RIVA128	15	/* Reserved for RIVA 128 */
+
+/*
+ *	Initialiser list
+ */
+ 
+struct video_init
+{
+	char *name;
+	int (*init)(struct video_init *);
+};
+
+#endif
Index: branches/FACT++_part_filenames/erfa/.gitignore
===================================================================
--- branches/FACT++_part_filenames/erfa/.gitignore	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/.gitignore	(revision 18732)
@@ -0,0 +1,24 @@
+/aclocal.m4
+/autom4te.cache/
+/config.*
+/configure
+/depcomp
+/erfa.pc
+/install-sh
+/libtool
+/ltmain.sh
+/m4/
+/missing
+/stamp-h?
+/test-driver
+.deps/
+.dirstamp
+.libs/
+*.l[ao]
+*.o
+*~
+Makefile
+Makefile.in
+/build-aux
+src/t_erfa_c
+erfa-*.tar.gz
Index: branches/FACT++_part_filenames/erfa/.travis.yml
===================================================================
--- branches/FACT++_part_filenames/erfa/.travis.yml	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/.travis.yml	(revision 18732)
@@ -0,0 +1,10 @@
+language: c
+
+compiler:
+  - clang
+  - gcc
+
+# before build script, run autoreconf
+before_script: ./bootstrap.sh
+
+script: ./configure --disable-shared && make && make check
Index: branches/FACT++_part_filenames/erfa/INFO
===================================================================
--- branches/FACT++_part_filenames/erfa/INFO	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/INFO	(revision 18732)
@@ -0,0 +1,19 @@
+ERFA has received explicit permission from the IAU SOFA Board to re-license
+and re-copyright ERFA from SOFA. The email providing permission is shown here:
+
+> The IAU Standards Of Fundamental Astronomy Board approves the
+> relicensing of a changed SOFA library by the NumFOCUS Foundation to use
+> a "Three Clause BSD" license.  The changed, relicensed version shall
+> differ from the SOFA version in that all function names shall change to
+> use "era" as a prefix in place of "iau", and that the SOFA Board shall
+> be removed as a copyright holder in the relicensed version.
+
+> Catherine
+> Chair, IAU SOFA Board
+> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+> HM Nautical Almanac Office
+> United Kingdom Hydrographic Office
+> Admiralty Way
+> Taunton TA1 2DN
+> Catherine.Hohenkerk@UKHO.gov.uk
+> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Index: branches/FACT++_part_filenames/erfa/LICENSE
===================================================================
--- branches/FACT++_part_filenames/erfa/LICENSE	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/LICENSE	(revision 18732)
@@ -0,0 +1,53 @@
+Copyright (C) 2013-2014, NumFOCUS Foundation.
+All rights reserved.
+
+This library is derived, with permission, from the International
+Astronomical Union's "Standards of Fundamental Astronomy" library,
+available from http://www.iausofa.org.
+
+The ERFA version is intended to retain identical
+functionality to the SOFA library, but made distinct through
+different function and file names, as set out in the SOFA license
+conditions. The SOFA original has a role as a reference standard
+for the IAU and IERS, and consequently redistribution is permitted only
+in its unaltered state. The ERFA version is not subject to this
+restriction and therefore can be included in distributions which do not
+support the concept of "read only" software.
+
+Although the intent is to replicate the SOFA API (other than replacement of
+prefix names) and results (with the exception of bugs; any that are
+discovered will be fixed), SOFA is not responsible for any errors found
+in this version of the library.
+
+If you wish to acknowledge the SOFA heritage, please acknowledge that
+you are using a library derived from SOFA, rather than SOFA itself.
+
+
+TERMS AND CONDITIONS
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1 Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2 Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3 Neither the name of the Standards Of Fundamental Astronomy Board, the
+   International Astronomical Union nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: branches/FACT++_part_filenames/erfa/Makefile.am
===================================================================
--- branches/FACT++_part_filenames/erfa/Makefile.am	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/Makefile.am	(revision 18732)
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = src
+
+ACLOCAL_AMFLAGS = -I m4
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = erfa.pc
+
+EXTRA_DIST = bootstrap.sh INFO LICENSE README.rst
Index: branches/FACT++_part_filenames/erfa/README.rst
===================================================================
--- branches/FACT++_part_filenames/erfa/README.rst	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/README.rst	(revision 18732)
@@ -0,0 +1,93 @@
+This is the source code repository for ERFA (Essential Routines for
+Fundamental Astronomy).  ERFA is a C library containing key algorithms for
+astronomy, and is based on the `SOFA library <http://www.iausofa.org/>`_ published by the International
+Astronomical Union (IAU).
+
+ERFA is intended to replicate the functionality of SOFA (aside from possible
+bugfixes in ERFA that have not yet been included in SOFA), but is licensed
+under a three-clause BSD license to enable its compatibility with a wide
+range of open source licenses. Permission for this release has been
+obtained from the SOFA board, and is avilable in the ``LICENSE`` file included
+in this source distribution.
+
+Differences from SOFA
+---------------------
+
+This version of ERFA (v1.3.0) is based on SOFA version "20160503_a", with the
+differences outlined below.
+
+ERFA branding
+^^^^^^^^^^^^^
+
+All references to "SOFA" in the source code have been changed to ERFA, and
+functions have the prefix ``era`` instead of ``iau``.
+
+C macro prefixes
+^^^^^^^^^^^^^^^^
+
+All C macros used in ERFA are the same as their SOFA equivalents, but with an
+``ERFA_`` prefix to prevent namespace collisions.
+
+Bugfixes
+^^^^^^^^
+
+ERFA includes smaller changes that may or may not eventually make it into SOFA,
+addressing localized bugs or similar smaller issues:
+
+* ERFA 1.3.0 and SOFA "20160503_a"
+
+  + There are no differences between ERFA 1.3.0 and SOFA "20160503_a".
+
+* ERFA 1.2.0 and SOFA "20150209_a"
+
+  + Typos have been corrected in the documentation of atco13 and atio13 (see https://github.com/liberfa/erfa/issues/29).
+
+Note that issues identified in ERFA should generally also be reported upstream to SOFA at sofa@ukho.gov.uk.
+
+Building and installing ERFA
+----------------------------
+
+To build and install a released version of ERFA in your OS's standard
+location, simply do::
+
+    ./configure
+    make
+    make install
+
+If you want to run the tests to make sure ERFA built correctly, before
+installing do::
+
+    make check
+
+
+For developers
+^^^^^^^^^^^^^^
+
+If you are using a developer version from github, you will need to first do
+``./bootstrap.sh`` before the above commands. This requires ``autoconf`` and
+``libtool``.
+
+If you wish to build against the ERFA static library without installing, you
+will find it in ``$ERFAROOT/src/.libs/liberfa.a`` after running ``make``.
+
+Creating a single-file version of the source code
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Alternatively, if you wish to bundle the ERFA source code with a separate
+package, you can use the ``source_flattener.py`` script from the
+`erfa-fetch repository`_ to combine
+the ERFA source code into just two files: a ``erfa.c`` source file, and an
+``erfa.h`` include file.  You should run this script like this::
+
+    cd /path/to/erfa-source-code
+    python /path/to/erfa-fetch/source_flattener.py src -n erfa
+
+If possible, however, it is recommended that you provide an option to use any
+copy of the ERFA library that is already installed on the system.
+
+Travis build status
+-------------------
+.. image:: https://travis-ci.org/liberfa/erfa.png
+    :target: https://travis-ci.org/liberfa/erfa
+
+.. _erfa-fetch repository: https://github.com/liberfa/erfa-fetch
Index: branches/FACT++_part_filenames/erfa/RELEASE.rst
===================================================================
--- branches/FACT++_part_filenames/erfa/RELEASE.rst	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/RELEASE.rst	(revision 18732)
@@ -0,0 +1,180 @@
+Instructions for releasing ERFA
+===============================
+
+* Clone the ERFA repository from github (if you haven't already done so),
+  and change to the ERFA directory.
+
+* Make sure you are on the "master" branch from the "liberfa" github 
+  repository and have the latest version (if you have a fresh clone, this
+  should already be the case).
+
+* If a new version of SOFA exists, run `sofa_deriver.py` from the `erfa-fetch
+  repository`_ in its own directory.  That will create a directory called `erfa`
+  inside the `erfa-fetch` directory, and   you should copy its contents to the 
+  `src` directory of `erfa`.  Add any new C files or header files added by SOFA 
+  to ``src/Makefile.am``, as appropriate. Use ``git diff`` in `erfa` to inspect 
+  the changes, and then commit and push them to github.
+
+* Update the version number in the `AC_INIT` macro of `configure.ac` to
+  the version number you are about to release, and also update the version 
+  mentioned in `README.rst`. Follow the instructions in 
+  `Version numbering` below.
+
+* Update the version info of the shared library in the `ERFA_LIB_VERSION_INFO` 
+  macro of `configure.ac`. Follow the instructions in `Version numbering` below.
+
+* Commit these changes using ``git commit``, with a commit message like 
+  ``Preparing release v0.0.1``.
+
+* Run `./bootstrap.sh`: you need `automake`, `autoconf` and `libtool` 
+  installed.  If no errors appear, this will create a new `./configure`
+  file.
+
+* Run ``./configure``, which should create a `Makefile` in the top level 
+  directory and in ./src
+
+* Run ``make check``, which will build the library and run the tests -
+  make sure they pass before proceeding.
+
+* Run ``make distcheck``: this creates the distribution tarball, 
+  unpackages it and runs the check inside the untarred directory.
+  The resulting tarball will be named e.g., `erfa-0.0.1.tar.gz` and
+  will be placed in the working directory.
+
+* Tag the current commit with the version number.  A signed tag is preferred if 
+  you have an a signing key (e.g., do ``git tag -s v0.0.1``).  
+
+* Push up your changes and the new tag to github: 
+  ``git push --tags origin master``. (The command here assumes the git remote
+  "origin" points to the "liberfa/erfa" repository.  If not, substitute the
+  appropriate name.)
+
+* Go to the "liberfa/erfa" repository for the github page, and click on the
+  "releases" button, and then the release corresponding to the tag you just 
+  made. 
+
+* Click on the "Draft release notes or downloads" button (or it might be 
+  "Edit release").  Put the version number as the title (e.g., ``v0.0.1``)and 
+  for the description put ``See `README.rst` for release notes.``
+
+* Upload the tarball you created (e.g., `erfa-0.0.1.tar.gz`) by dropping it
+  in the area that says "Attach binaries for this release  by dropping them 
+  here." 
+
+* Click the "Publish release" button.
+
+* Update the release listing on Github Pages to include this release:
+  Do ``git checkout gh-pages``, add a new ``<li>...</li>`` entry for the
+  release in `index.html`, do ``git commit``, and then
+  ``git push origin gh-pages``.
+
+Version numbering
+=================
+
+ERFA needs to provide two different version numbers.  You need to update both.
+The first is the 
+**package version number** or **version number** proper. ERFA uses 
+`semantic versioning <http://semver.org/>`_ to create this number.
+For more on this choice, see 
+`liberfa/erfa#6 <https://github.com/liberfa/erfa/issues/6>`_.
+
+The second number is `shared library version info`. When a program has been 
+linked with the ERFA shared library, the dynamic linker checks the version
+info of the library requested by the program with those of the libraries 
+present if the system. This version info is important to binary distributions
+(such as Linux distributions). ERFA uses `libtool versioning <http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html>`_.
+
+
+Package version number
+----------------------
+
+Semantic versioning dictates how to change the version number according to
+changes to the API of the library. In the case of ERFA the API is:
+
+  * The public C macros defined in erfam.h
+  * The names, return types, number of arguments and types of the functions in erfa.h
+
+To update the package version, the release manager has to check the relevant
+information about the release, such as:
+
+  * upstream SOFA documentation in http://www.iausofa.org/current_changes.html
+  * relevant bug reports in the github project page
+
+If the version is given in the form MAJOR.MINOR.PATCH, then
+
+  * if there is a backwards incompatible change (function removed, types of
+    arguments altered, macros renamed...) then increase MAJOR by one and set 
+    the others to zero.
+  * else if there is backwards compatible change (new function added or 
+    new macro added) then do not change MAJOR, increase MINOR by one and 
+    set PATCH to zero.
+  * else
+        you are either fixing a bug or making other improvements. Increase
+        patch by one and do not change the others.
+
+Change the version number in the `AC_INIT` macro and in `README.rst`
+
+Shared library version info
+---------------------------
+
+For the shared  library version info, we are only interested in a subset of
+the API, the **interfaces of the shared library**. As the C macros are 
+interpolated away at compile time, the interfaces in the ERFA 
+shared library are:
+
+  * The names, return types, number of arguments and types of the functions 
+  
+Again, the release manager has to review the relevant information:
+
+  * upstream SOFA documentation in http://www.iausofa.org/current_changes.html
+  * relevant bug reports in the github project page
+
+The shared library version info is stored in three numbers called *current*, 
+*revision* and *age*. These numbers appear in the macro `ERFA_LIB_VERSION_INFO` 
+in the mentioned order.
+
+If the version is given in the form CURRENT,REVISION,AGE then
+
+  * if there is a backwards incompatible change (function removed, types of
+    arguments altered...) then increase CURRENT by one and set 
+    the others to zero (c,r,a -> c+1,0,0).
+  * else if there is backwards compatible change (new function added)
+    then increase both CURRENT and AGE by one, set REVISON to zero 
+    (c,r,a -> c+1,0,a+1).
+  * else if the library code has been modified at all
+    then increase REVISION by one (c,r,a -> c,r+1,a)
+  * else
+       do not change the version info (c,r,a -> c,r,a)
+
+Change the verion info in `ERFA_LIB_VERSION_INFO`
+
+Examples
+---------
+We start with ERFA version 1.0.0 and library version info 0,0,0
+
+* SOFA makes a new release. A function is added and two functions change their
+  arguments. This is a backawars incompatible change, so the new package will
+  have version 2.0.0 and the shared library version info will be 1,0,0
+
+* We forgot to add README.rst to the release. We make a new one. The change
+  is a bugfix (no API changes), the new release will be 2.0.1. The shared
+  library version is not modified (no changes in the library source code).
+
+* SOFA makes a new release. They just add a new function. The new package
+  version will be 2.1.0. The shared library info will be 2,0,1 (both current
+  and age are incremented).
+
+* SOFA makes a new relase fixing some bugs in the code without changing the 
+  API. New package version is 2.1.1. The shared library version is 2,1,1
+
+* A contributor finds a bug in ERFA. The fix doesn't change the API. New
+  package version is 2.1.2. The shared library version is 2,2,1
+
+* SOFA makes a new release incorporating the bug fix and adding new functions.
+  The new package version is 2.2.0. The shared library version is 3,0,2
+
+* SOFA makes a new release removing functions. This is a backawars 
+  incompatible change, so the new package will
+  have version 3.0.0 and the shared library version info will be 4,0,0
+
+.. _erfa-fetch repository: https://github.com/liberfa/erfa-fetch
Index: branches/FACT++_part_filenames/erfa/bootstrap.sh
===================================================================
--- branches/FACT++_part_filenames/erfa/bootstrap.sh	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/bootstrap.sh	(revision 18732)
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# ensure m4 dir exists 
+mkdir -p m4
+# ensure build-aux exists
+mkdir -p build-aux
+
+autoreconf -s -i -m -f
Index: branches/FACT++_part_filenames/erfa/configure.ac
===================================================================
--- branches/FACT++_part_filenames/erfa/configure.ac	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/configure.ac	(revision 18732)
@@ -0,0 +1,29 @@
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+## Follow the instructions in RELEASE.rst to change package version
+AC_INIT([erfa],[1.3.0])
+AC_CONFIG_SRCDIR([src/erfa.h])
+AC_CONFIG_HEADER([config.h])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE([foreign])
+
+AC_PROG_CC
+LT_INIT
+
+ERFA_NUMVER
+## Version info is in current : revision : age form
+## A library supports interfaces from current downto current - age
+## Revision is the version of the current interface
+## Follow the instructions in RELEASE.rst to change the version info
+ERFA_LIB_VERSION_INFO(4, 0, 3)
+
+# Checks for libraries.
+AC_SEARCH_LIBS([sin], [m], , AC_MSG_ERROR([cannot find math functions]))
+
+AC_CONFIG_FILES([Makefile
+                 erfa.pc
+                 src/Makefile
+])
+AC_OUTPUT
Index: branches/FACT++_part_filenames/erfa/erfa.pc.in
===================================================================
--- branches/FACT++_part_filenames/erfa/erfa.pc.in	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/erfa.pc.in	(revision 18732)
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Erfa
+Description: Essential Routines for Fundamental Astronomy
+Version: @VERSION@
+Libs: -L${libdir} -lerfa
+Libs.private: @LIBS@
+Cflags: -I${includedir}
Index: branches/FACT++_part_filenames/erfa/m4/erfa-numver.m4
===================================================================
--- branches/FACT++_part_filenames/erfa/m4/erfa-numver.m4	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/m4/erfa-numver.m4	(revision 18732)
@@ -0,0 +1,45 @@
+
+AC_DEFUN([ERFA_NUMVER],[
+AS_VAR_PUSHDEF([MAJOR],[MAJOR_VERSION])dnl
+AS_VAR_PUSHDEF([MINOR],[MINOR_VERSION])dnl
+AS_VAR_PUSHDEF([MICRO],[MICRO_VERSION])dnl
+AS_VAR_PUSHDEF([PATCH],[PATCH_VERSION])dnl
+test ".$PACKAGE_VERSION" = "." && PACKAGE_VERSION="$VERSION"
+AC_MSG_CHECKING([split $PACKAGE_VERSION])
+  MINOR=`echo $PACKAGE_VERSION`
+  MAJOR=`echo "$MINOR" | sed -e 's/[[.]].*//'`
+  MINOR=`echo "$MINOR" | sed -e "s/^$MAJOR//" -e 's/^.//'`
+  MICRO="$MINOR"
+  MINOR=`echo "$MICRO" | sed -e 's/[[.]].*//'`
+  MICRO=`echo "$MICRO" | sed -e "s/^$MINOR//" -e 's/^.//'`
+  PATCH="$MICRO"
+  MICRO=`echo "$PATCH" | sed -e 's/[[^0-9]].*//'`
+  PATCH=`echo "$PATCH" | sed -e "s/^$MICRO//" -e 's/[[-.]]//'`
+  if test "_$MICRO" = "_" ; then MICRO="0" ; fi
+  if test "_$MINOR" = "_" ; then MINOR="$MAJOR" ; MAJOR="0" ; fi
+  MINOR=`echo "$MINOR" | sed -e 's/[[^0-9]].*//'`
+AC_MSG_RESULT([ $MAJOR $MINOR $MICRO $PATCH])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR, $MAJOR, [Define to the major version of this package.])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR, $MINOR, [Define to the minor version of this package.])
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MICRO, $MICRO, [Define to the micro version of this package.])
+AC_SUBST(PATCH)
+AS_VAR_POPDEF([PATCH])dnl
+AS_VAR_POPDEF([MICRO])dnl
+AS_VAR_POPDEF([MINOR])dnl
+AS_VAR_POPDEF([MAJOR])dnl
+])
+
+AC_DEFUN([ERFA_LIB_VERSION_INFO],[
+m4_ifndef([ERFA_C], [m4_define([ERFA_C], [$1])])
+m4_ifndef([ERFA_R], [m4_define([ERFA_R], [$2])])
+m4_ifndef([ERFA_A], [m4_define([ERFA_A], [$3])])
+m4_if(
+  m4_ifdef([ERFA_C], [ok]):m4_ifdef([ERFA_R], [ok]):m4_ifdef([ERFA_A], [ok]),
+    [ok:ok:ok],,
+      [m4_fatal([ERFA_LIB_VERSION_INFO should be called with current, revision and age arguments])])dnl
+AC_SUBST([VI_CURR], [m4_ifdef([ERFA_C], ['ERFA_C'])])dnl
+AC_SUBST([VI_REL], [m4_ifdef([ERFA_R], ['ERFA_R'])])dnl
+AC_SUBST([VI_AGE], [m4_ifdef([ERFA_A], ['ERFA_A'])])dnl
+vi_all=`echo $VI_CURR:$VI_REL:$VI_AGE`
+AC_SUBST([VI_ALL], [$vi_all])
+])
Index: branches/FACT++_part_filenames/erfa/src/Makefile.am
===================================================================
--- branches/FACT++_part_filenames/erfa/src/Makefile.am	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/Makefile.am	(revision 18732)
@@ -0,0 +1,47 @@
+lib_LTLIBRARIES = liberfa.la
+liberfa_la_SOURCES = a2af.c a2tf.c ab.c af2a.c anp.c anpm.c apcg13.c \
+apcg.c apci13.c apci.c apco13.c apco.c apcs13.c apcs.c aper13.c \
+aper.c apio13.c apio.c atci13.c atciq.c atciqn.c atciqz.c atco13.c \
+atic13.c aticq.c aticqn.c atio13.c atioq.c atoc13.c atoi13.c atoiq.c \
+bi00.c bp00.c bp06.c bpn2xy.c c2i00a.c c2i00b.c c2i06a.c c2ibpn.c \
+c2ixy.c c2ixys.c c2s.c c2t00a.c c2t00b.c c2t06a.c c2tcio.c c2teqx.c \
+c2tpe.c c2txy.c cal2jd.c cp.c cpv.c cr.c d2dtf.c d2tf.c dat.c dtdb.c \
+dtf2d.c eceq06.c ee00a.c ee00.c eect00.c eo06a.c epb2jd.c epj2jd.c epv00.c \
+eqeq94.c ecm06.c ee00b.c ee06a.c eform.c eors.c epb.c epj.c eqec06.c \
+era00.c fad03.c fae03.c faf03.c faju03.c fal03.c falp03.c fama03.c \
+fame03.c fane03.c faom03.c fapa03.c fasa03.c faur03.c fave03.c \
+fk52h.c fk5hip.c fk5hz.c fw2m.c fw2xy.c g2icrs.c gc2gd.c gc2gde.c gd2gc.c \
+gd2gce.c gmst00.c gmst06.c gmst82.c gst00a.c gst00b.c gst06a.c \
+gst06.c gst94.c h2fk5.c hfk5z.c icrs2g.c ir.c jd2cal.c jdcalf.c ld.c \
+ldn.c ldsun.c lteceq.c ltecm.c lteqec.c ltpb.c ltp.c ltpecl.c ltpequ.c \
+num00a.c num00b.c num06a.c numat.c nut00a.c nut00b.c \
+nut06a.c nut80.c nutm80.c obl06.c obl80.c p06e.c p2pv.c p2s.c pap.c \
+pas.c pb06.c pdp.c pfw06.c plan94.c pmat00.c pmat06.c pmat76.c \
+pm.c pmp.c pmpx.c pmsafe.c pn00a.c pn00b.c pn00.c pn06a.c \
+pn06.c pn.c pnm00a.c pnm00b.c pnm06a.c pnm80.c pom00.c ppp.c \
+ppsp.c pr00.c prec76.c pv2p.c pv2s.c pvdpv.c pvm.c pvmpv.c pvppv.c \
+pvstar.c pvtob.c pvu.c pvup.c pvxpv.c pxp.c refco.c rm2v.c rv2m.c \
+rx.c rxp.c rxpv.c rxr.c ry.c rz.c s00a.c s00b.c s00.c \
+s06a.c s06.c s2c.c s2p.c s2pv.c s2xpv.c sepp.c seps.c sp00.c \
+starpm.c starpv.c sxp.c sxpv.c taitt.c taiut1.c taiutc.c tcbtdb.c \
+tcgtt.c tdbtcb.c tdbtt.c tf2a.c tf2d.c tr.c trxp.c trxpv.c tttai.c \
+tttcg.c tttdb.c ttut1.c ut1tai.c ut1tt.c ut1utc.c utctai.c utcut1.c \
+xy06.c xys00a.c xys00b.c xys06a.c zp.c zpv.c zr.c
+
+include_HEADERS = erfa.h erfam.h
+
+## Version info is in current : revision : age form
+## A library supports interfaces from current downto current - age
+## Revision is the version of the current interface
+
+## VI_ALL is set in the macro ERFA_LIB_VERSION_INFO in configure.ac
+
+liberfa_la_LDFLAGS = -version-info $(VI_ALL)
+
+
+## Check program
+TESTS = t_erfa_c
+check_PROGRAMS = t_erfa_c
+t_erfa_c_SOURCES = t_erfa_c.c
+AM_CPPFLAGS = -I$(top_srcdir)
+LDADD = $(top_builddir)/src/liberfa.la
Index: branches/FACT++_part_filenames/erfa/src/a2af.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/a2af.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/a2af.c	(revision 18732)
@@ -0,0 +1,129 @@
+#include "erfa.h"
+
+void eraA2af(int ndp, double angle, char *sign, int idmsf[4])
+/*
+**  - - - - - - - -
+**   e r a A 2 a f
+**  - - - - - - - -
+**
+**  Decompose radians into degrees, arcminutes, arcseconds, fraction.
+**
+**  Given:
+**     ndp     int     resolution (Note 1)
+**     angle   double  angle in radians
+**
+**  Returned:
+**     sign    char    '+' or '-'
+**     idmsf   int[4]  degrees, arcminutes, arcseconds, fraction
+**
+**  Called:
+**     eraD2tf      decompose days to hms
+**
+**  Notes:
+**
+**  1) The argument ndp is interpreted as follows:
+**
+**     ndp         resolution
+**      :      ...0000 00 00
+**     -7         1000 00 00
+**     -6          100 00 00
+**     -5           10 00 00
+**     -4            1 00 00
+**     -3            0 10 00
+**     -2            0 01 00
+**     -1            0 00 10
+**      0            0 00 01
+**      1            0 00 00.1
+**      2            0 00 00.01
+**      3            0 00 00.001
+**      :            0 00 00.000...
+**
+**  2) The largest positive useful value for ndp is determined by the
+**     size of angle, the format of doubles on the target platform, and
+**     the risk of overflowing idmsf[3].  On a typical platform, for
+**     angle up to 2pi, the available floating-point precision might
+**     correspond to ndp=12.  However, the practical limit is typically
+**     ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is
+**     only 16 bits.
+**
+**  3) The absolute value of angle may exceed 2pi.  In cases where it
+**     does not, it is up to the caller to test for and handle the
+**     case where angle is very nearly 2pi and rounds up to 360 degrees,
+**     by testing for idmsf[0]=360 and setting idmsf[0-3] to zero.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Hours to degrees * radians to turns */
+   const double F = 15.0 / ERFA_D2PI;
+
+
+/* Scale then use days to h,m,s function. */
+   eraD2tf(ndp, angle*F, sign, idmsf);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/a2tf.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/a2tf.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/a2tf.c	(revision 18732)
@@ -0,0 +1,125 @@
+#include "erfa.h"
+
+void eraA2tf(int ndp, double angle, char *sign, int ihmsf[4])
+/*
+**  - - - - - - - -
+**   e r a A 2 t f
+**  - - - - - - - -
+**
+**  Decompose radians into hours, minutes, seconds, fraction.
+**
+**  Given:
+**     ndp     int     resolution (Note 1)
+**     angle   double  angle in radians
+**
+**  Returned:
+**     sign    char    '+' or '-'
+**     ihmsf   int[4]  hours, minutes, seconds, fraction
+**
+**  Called:
+**     eraD2tf      decompose days to hms
+**
+**  Notes:
+**
+**  1) The argument ndp is interpreted as follows:
+**
+**     ndp         resolution
+**      :      ...0000 00 00
+**     -7         1000 00 00
+**     -6          100 00 00
+**     -5           10 00 00
+**     -4            1 00 00
+**     -3            0 10 00
+**     -2            0 01 00
+**     -1            0 00 10
+**      0            0 00 01
+**      1            0 00 00.1
+**      2            0 00 00.01
+**      3            0 00 00.001
+**      :            0 00 00.000...
+**
+**  2) The largest positive useful value for ndp is determined by the
+**     size of angle, the format of doubles on the target platform, and
+**     the risk of overflowing ihmsf[3].  On a typical platform, for
+**     angle up to 2pi, the available floating-point precision might
+**     correspond to ndp=12.  However, the practical limit is typically
+**     ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is
+**     only 16 bits.
+**
+**  3) The absolute value of angle may exceed 2pi.  In cases where it
+**     does not, it is up to the caller to test for and handle the
+**     case where angle is very nearly 2pi and rounds up to 24 hours,
+**     by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Scale then use days to h,m,s function. */
+   eraD2tf(ndp, angle/ERFA_D2PI, sign, ihmsf);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ab.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ab.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ab.c	(revision 18732)
@@ -0,0 +1,137 @@
+#include "erfa.h"
+
+void eraAb(double pnat[3], double v[3], double s, double bm1,
+           double ppr[3])
+/*
+**  - - - - - -
+**   e r a A b
+**  - - - - - -
+**
+**  Apply aberration to transform natural direction into proper
+**  direction.
+**
+**  Given:
+**    pnat    double[3]   natural direction to the source (unit vector)
+**    v       double[3]   observer barycentric velocity in units of c
+**    s       double      distance between the Sun and the observer (au)
+**    bm1     double      sqrt(1-|v|^2): reciprocal of Lorenz factor
+**
+**  Returned:
+**    ppr     double[3]   proper direction to source (unit vector)
+**
+**  Notes:
+**
+**  1) The algorithm is based on Expr. (7.40) in the Explanatory
+**     Supplement (Urban & Seidelmann 2013), but with the following
+**     changes:
+**
+**     o  Rigorous rather than approximate normalization is applied.
+**
+**     o  The gravitational potential term from Expr. (7) in
+**        Klioner (2003) is added, taking into account only the Sun's
+**        contribution.  This has a maximum effect of about
+**        0.4 microarcsecond.
+**
+**  2) In almost all cases, the maximum accuracy will be limited by the
+**     supplied velocity.  For example, if the ERFA eraEpv00 function is
+**     used, errors of up to 5 microarcseconds could occur.
+**
+**  References:
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013).
+**
+**     Klioner, Sergei A., "A practical relativistic model for micro-
+**     arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).
+**
+**  Called:
+**     eraPdp       scalar product of two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i;
+   double pdv, w1, w2, r2, w, p[3], r;
+
+
+   pdv = eraPdp(pnat, v);
+   w1 = 1.0 + pdv/(1.0 + bm1);
+   w2 = ERFA_SRS/s;
+   r2 = 0.0;
+   for (i = 0; i < 3; i++) {
+      w = pnat[i]*bm1 + w1*v[i] + w2*(v[i] - pdv*pnat[i]);
+      p[i] = w;
+      r2 = r2 + w*w;
+   }
+   r = sqrt(r2);
+   for (i = 0; i < 3; i++) {
+      ppr[i] = p[i]/r;
+   }
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/af2a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/af2a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/af2a.c	(revision 18732)
@@ -0,0 +1,116 @@
+#include "erfa.h"
+#include <stdlib.h>
+
+int eraAf2a(char s, int ideg, int iamin, double asec, double *rad)
+/*
+**  - - - - - - - -
+**   e r a A f 2 a
+**  - - - - - - - -
+**
+**  Convert degrees, arcminutes, arcseconds to radians.
+**
+**  Given:
+**     s         char    sign:  '-' = negative, otherwise positive
+**     ideg      int     degrees
+**     iamin     int     arcminutes
+**     asec      double  arcseconds
+**
+**  Returned:
+**     rad       double  angle in radians
+**
+**  Returned (function value):
+**               int     status:  0 = OK
+**                                1 = ideg outside range 0-359
+**                                2 = iamin outside range 0-59
+**                                3 = asec outside range 0-59.999...
+**
+**  Notes:
+**
+**  1)  The result is computed even if any of the range checks fail.
+**
+**  2)  Negative ideg, iamin and/or asec produce a warning status, but
+**      the absolute value is used in the conversion.
+**
+**  3)  If there are multiple errors, the status value reflects only the
+**      first, the smallest taking precedence.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Compute the interval. */
+   *rad  = ( s == '-' ? -1.0 : 1.0 ) *
+           ( 60.0 * ( 60.0 * ( (double) abs(ideg) ) +
+                             ( (double) abs(iamin) ) ) +
+                                        fabs(asec) ) * ERFA_DAS2R;
+
+/* Validate arguments and return status. */
+   if ( ideg < 0 || ideg > 359 ) return 1;
+   if ( iamin < 0 || iamin > 59 ) return 2;
+   if ( asec < 0.0 || asec >= 60.0 ) return 3;
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/anp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/anp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/anp.c	(revision 18732)
@@ -0,0 +1,91 @@
+#include "erfa.h"
+
+double eraAnp(double a)
+/*
+**  - - - - - - -
+**   e r a A n p
+**  - - - - - - -
+**
+**  Normalize angle into the range 0 <= a < 2pi.
+**
+**  Given:
+**     a        double     angle (radians)
+**
+**  Returned (function value):
+**              double     angle in range 0-2pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double w;
+
+
+   w = fmod(a, ERFA_D2PI);
+   if (w < 0) w += ERFA_D2PI;
+
+   return w;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/anpm.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/anpm.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/anpm.c	(revision 18732)
@@ -0,0 +1,91 @@
+#include "erfa.h"
+
+double eraAnpm(double a)
+/*
+**  - - - - - - - -
+**   e r a A n p m
+**  - - - - - - - -
+**
+**  Normalize angle into the range -pi <= a < +pi.
+**
+**  Given:
+**     a        double     angle (radians)
+**
+**  Returned (function value):
+**              double     angle in range +/-pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double w;
+
+
+   w = fmod(a, ERFA_D2PI);
+   if (fabs(w) >= ERFA_DPI) w -= ERFA_DSIGN(ERFA_D2PI, a);
+
+   return w;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apcg.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apcg.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apcg.c	(revision 18732)
@@ -0,0 +1,181 @@
+#include "erfa.h"
+
+void eraApcg(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p c g
+**  - - - - - - - -
+**
+**  For a geocentric observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and GCRS coordinates.
+**  The Earth ephemeris is supplied by the caller.
+**
+**  The parameters produced by this function are required in the
+**  parallax, light deflection and aberration parts of the astrometric
+**  transformation chain.
+**
+**  Given:
+**     date1  double       TDB as a 2-part...
+**     date2  double       ...Julian Date (Note 1)
+**     ebpv   double[2][3] Earth barycentric pos/vel (au, au/day)
+**     ehp    double[3]    Earth heliocentric position (au)
+**
+**  Returned:
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  4) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraApcs      astrometry parameters, ICRS-GCRS, space observer
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Geocentric observer */
+   double pv[2][3] = { { 0.0, 0.0, 0.0 },
+                       { 0.0, 0.0, 0.0 } };
+
+
+/* Compute the star-independent astrometry parameters. */
+   eraApcs(date1, date2, pv, ebpv, ehp, astrom);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apcg13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apcg13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apcg13.c	(revision 18732)
@@ -0,0 +1,184 @@
+#include "erfa.h"
+
+void eraApcg13(double date1, double date2, eraASTROM *astrom)
+/*
+**  - - - - - - - - - -
+**   e r a A p c g 1 3
+**  - - - - - - - - - -
+**
+**  For a geocentric observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and GCRS coordinates.
+**  The caller supplies the date, and ERFA models are used to predict
+**  the Earth ephemeris.
+**
+**  The parameters produced by this function are required in the
+**  parallax, light deflection and aberration parts of the astrometric
+**  transformation chain.
+**
+**  Given:
+**     date1  double     TDB as a 2-part...
+**     date2  double     ...Julian Date (Note 1)
+**
+**  Returned:
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) In cases where the caller wishes to supply his own Earth
+**     ephemeris, the function eraApcg can be used instead of the present
+**     function.
+**
+**  4) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  5) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraEpv00     Earth position and velocity
+**     eraApcg      astrometry parameters, ICRS-GCRS, geocenter
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double ehpv[2][3], ebpv[2][3];
+
+
+/* Earth barycentric & heliocentric position/velocity (au, au/d). */
+   (void) eraEpv00(date1, date2, ehpv, ebpv);
+
+/* Compute the star-independent astrometry parameters. */
+   eraApcg(date1, date2, ebpv, ehpv[0], astrom);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apci.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apci.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apci.c	(revision 18732)
@@ -0,0 +1,190 @@
+#include "erfa.h"
+
+void eraApci(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             double x, double y, double s,
+             eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p c i
+**  - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and geocentric CIRS
+**  coordinates.  The Earth ephemeris and CIP/CIO are supplied by the
+**  caller.
+**
+**  The parameters produced by this function are required in the
+**  parallax, light deflection, aberration, and bias-precession-nutation
+**  parts of the astrometric transformation chain.
+**
+**  Given:
+**     date1  double       TDB as a 2-part...
+**     date2  double       ...Julian Date (Note 1)
+**     ebpv   double[2][3] Earth barycentric position/velocity (au, au/day)
+**     ehp    double[3]    Earth heliocentric position (au)
+**     x,y    double       CIP X,Y (components of unit vector)
+**     s      double       the CIO locator s (radians)
+**
+**  Returned:
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) In cases where the caller does not wish to provide the Earth
+**     ephemeris and CIP/CIO, the function eraApci13 can be used instead
+**     of the present function.  This computes the required quantities
+**     using other ERFA functions.
+**
+**  4) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  5) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraApcg      astrometry parameters, ICRS-GCRS, geocenter
+**     eraC2ixys    celestial-to-intermediate matrix, given X,Y and s
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Star-independent astrometry parameters for geocenter. */
+   eraApcg(date1, date2, ebpv, ehp, astrom);
+
+/* CIO based BPN matrix. */
+   eraC2ixys(x, y, s, astrom->bpn);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apci13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apci13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apci13.c	(revision 18732)
@@ -0,0 +1,202 @@
+#include "erfa.h"
+
+void eraApci13(double date1, double date2,
+               eraASTROM *astrom, double *eo)
+/*
+**  - - - - - - - - - -
+**   e r a A p c i 1 3
+**  - - - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and geocentric CIRS
+**  coordinates.  The caller supplies the date, and ERFA models are used
+**  to predict the Earth ephemeris and CIP/CIO.
+**
+**  The parameters produced by this function are required in the
+**  parallax, light deflection, aberration, and bias-precession-nutation
+**  parts of the astrometric transformation chain.
+**
+**  Given:
+**     date1  double      TDB as a 2-part...
+**     date2  double      ...Julian Date (Note 1)
+**
+**  Returned:
+**     astrom eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**     eo     double*     equation of the origins (ERA-GST)
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) In cases where the caller wishes to supply his own Earth
+**     ephemeris and CIP/CIO, the function eraApci can be used instead
+**     of the present function.
+**
+**  4) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  5) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraEpv00     Earth position and velocity
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**     eraApci      astrometry parameters, ICRS-CIRS
+**     eraEors      equation of the origins, given NPB matrix and s
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double ehpv[2][3], ebpv[2][3], r[3][3], x, y, s;
+
+
+/* Earth barycentric & heliocentric position/velocity (au, au/d). */
+   (void) eraEpv00(date1, date2, ehpv, ebpv);
+
+/* Form the equinox based BPN matrix, IAU 2006/2000A. */
+   eraPnm06a(date1, date2, r);
+
+/* Extract CIP X,Y. */
+   eraBpn2xy(r, &x, &y);
+
+/* Obtain CIO locator s. */
+   s = eraS06(date1, date2, x, y);
+
+/* Compute the star-independent astrometry parameters. */
+   eraApci(date1, date2, ebpv, ehpv[0], x, y, s, astrom);
+
+/* Equation of the origins. */
+   *eo = eraEors(r, s);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apco.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apco.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apco.c	(revision 18732)
@@ -0,0 +1,264 @@
+#include "erfa.h"
+
+void eraApco(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             double x, double y, double s, double theta,
+             double elong, double phi, double hm,
+             double xp, double yp, double sp,
+             double refa, double refb,
+             eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p c o
+**  - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and observed
+**  coordinates.  The caller supplies the Earth ephemeris, the Earth
+**  rotation information and the refraction constants as well as the
+**  site coordinates.
+**
+**  Given:
+**     date1  double       TDB as a 2-part...
+**     date2  double       ...Julian Date (Note 1)
+**     ebpv   double[2][3] Earth barycentric PV (au, au/day, Note 2)
+**     ehp    double[3]    Earth heliocentric P (au, Note 2)
+**     x,y    double       CIP X,Y (components of unit vector)
+**     s      double       the CIO locator s (radians)
+**     theta  double       Earth rotation angle (radians)
+**     elong  double       longitude (radians, east +ve, Note 3)
+**     phi    double       latitude (geodetic, radians, Note 3)
+**     hm     double       height above ellipsoid (m, geodetic, Note 3)
+**     xp,yp  double       polar motion coordinates (radians, Note 4)
+**     sp     double       the TIO locator s' (radians, Note 4)
+**     refa   double       refraction constant A (radians, Note 5)
+**     refb   double       refraction constant B (radians, Note 5)
+**
+**  Returned:
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) The vectors eb, eh, and all the astrom vectors, are with respect
+**     to BCRS axes.
+**
+**  3) The geographical coordinates are with respect to the ERFA_WGS84
+**     reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN
+**     CONVENTION:  the longitude required by the present function is
+**     right-handed, i.e. east-positive, in accordance with geographical
+**     convention.
+**
+**  4) xp and yp are the coordinates (in radians) of the Celestial
+**     Intermediate Pole with respect to the International Terrestrial
+**     Reference System (see IERS Conventions), measured along the
+**     meridians 0 and 90 deg west respectively.  sp is the TIO locator
+**     s', in radians, which positions the Terrestrial Intermediate
+**     Origin on the equator.  For many applications, xp, yp and
+**     (especially) sp can be set to zero.
+**
+**     Internally, the polar motion is stored in a form rotated onto the
+**     local meridian.
+**
+**  5) The refraction constants refa and refb are for use in a
+**     dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed
+**     (i.e. refracted) zenith distance and dZ is the amount of
+**     refraction.
+**
+**  6) It is advisable to take great care with units, as even unlikely
+**     values of the input parameters are accepted and processed in
+**     accordance with the models used.
+**
+**  7) In cases where the caller does not wish to provide the Earth
+**     Ephemeris, the Earth rotation information and refraction
+**     constants, the function eraApco13 can be used instead of the
+**     present function.  This starts from UTC and weather readings etc.
+**     and computes suitable values using other ERFA functions.
+**
+**  8) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  9) The context structure astrom produced by this function is used by
+**     eraAtioq, eraAtoiq, eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraAper      astrometry parameters: update ERA
+**     eraC2ixys    celestial-to-intermediate matrix, given X,Y and s
+**     eraPvtob     position/velocity of terrestrial station
+**     eraTrxpv     product of transpose of r-matrix and pv-vector
+**     eraApcs      astrometry parameters, ICRS-GCRS, space observer
+**     eraCr        copy r-matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double sl, cl, r[3][3], pvc[2][3], pv[2][3];
+
+
+/* Longitude with adjustment for TIO locator s'. */
+   astrom->along = elong + sp;
+
+/* Polar motion, rotated onto the local meridian. */
+   sl = sin(astrom->along);
+   cl = cos(astrom->along);
+   astrom->xpl = xp*cl - yp*sl;
+   astrom->ypl = xp*sl + yp*cl;
+
+/* Functions of latitude. */
+   astrom->sphi = sin(phi);
+   astrom->cphi = cos(phi);
+
+/* Refraction constants. */
+   astrom->refa = refa;
+   astrom->refb = refb;
+
+/* Local Earth rotation angle. */
+   eraAper(theta, astrom);
+
+/* Disable the (redundant) diurnal aberration step. */
+   astrom->diurab = 0.0;
+
+/* CIO based BPN matrix. */
+   eraC2ixys(x, y, s, r);
+
+/* Observer's geocentric position and velocity (m, m/s, CIRS). */
+   eraPvtob(elong, phi, hm, xp, yp, sp, theta, pvc);
+
+/* Rotate into GCRS. */
+   eraTrxpv(r, pvc, pv);
+
+/* ICRS <-> GCRS parameters. */
+   eraApcs(date1, date2, pv, ebpv, ehp, astrom);
+
+/* Store the CIO based BPN matrix. */
+   eraCr(r, astrom->bpn );
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apco13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apco13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apco13.c	(revision 18732)
@@ -0,0 +1,287 @@
+#include "erfa.h"
+
+int eraApco13(double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              eraASTROM *astrom, double *eo)
+/*
+**  - - - - - - - - - -
+**   e r a A p c o 1 3
+**  - - - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between ICRS and observed
+**  coordinates.  The caller supplies UTC, site coordinates, ambient air
+**  conditions and observing wavelength, and ERFA models are used to
+**  obtain the Earth ephemeris, CIP/CIO and refraction constants.
+**
+**  The parameters produced by this function are required in the
+**  parallax, light deflection, aberration, and bias-precession-nutation
+**  parts of the ICRS/CIRS transformations.
+**
+**  Given:
+**     utc1   double     UTC as a 2-part...
+**     utc2   double     ...quasi Julian Date (Notes 1,2)
+**     dut1   double     UT1-UTC (seconds, Note 3)
+**     elong  double     longitude (radians, east +ve, Note 4)
+**     phi    double     latitude (geodetic, radians, Note 4)
+**     hm     double     height above ellipsoid (m, geodetic, Notes 4,6)
+**     xp,yp  double     polar motion coordinates (radians, Note 5)
+**     phpa   double     pressure at the observer (hPa = mB, Note 6)
+**     tc     double     ambient temperature at the observer (deg C)
+**     rh     double     relative humidity at the observer (range 0-1)
+**     wl     double     wavelength (micrometers, Note 7)
+**
+**  Returned:
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**     eo     double*    equation of the origins (ERA-GST)
+**
+**  Returned (function value):
+**            int        status: +1 = dubious year (Note 2)
+**                                0 = OK
+**                               -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  2)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the
+**      future to be trusted.  See eraDat for further details.
+**
+**  3)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  4)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  5)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many
+**      applications, xp and yp can be set to zero.
+**
+**      Internally, the polar motion is stored in a form rotated onto
+**      the local meridian.
+**
+**  6)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB), is
+**      available, an adequate estimate of hm can be obtained from the
+**      expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to
+**      the pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  7)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  8)  It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  9)  In cases where the caller wishes to supply his own Earth
+**      ephemeris, Earth rotation information and refraction constants,
+**      the function eraApco can be used instead of the present function.
+**
+**  10) This is one of several functions that inserts into the astrom
+**      structure star-independent parameters needed for the chain of
+**      astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**      The various functions support different classes of observer and
+**      portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**      Those with names ending in "13" use contemporary ERFA models to
+**      compute the various ephemerides.  The others accept ephemerides
+**      supplied by the caller.
+**
+**      The transformation from ICRS to GCRS covers space motion,
+**      parallax, light deflection, and aberration.  From GCRS to CIRS
+**      comprises frame bias and precession-nutation.  From CIRS to
+**      observed takes account of Earth rotation, polar motion, diurnal
+**      aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**      transformation), and atmospheric refraction.
+**
+**  11) The context structure astrom produced by this function is used
+**      by eraAtioq, eraAtoiq, eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraUtctai    UTC to TAI
+**     eraTaitt     TAI to TT
+**     eraUtcut1    UTC to UT1
+**     eraEpv00     Earth position and velocity
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraRefco     refraction constants for given ambient conditions
+**     eraApco      astrometry parameters, ICRS-observed
+**     eraEors      equation of the origins, given NPB matrix and s
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   double tai1, tai2, tt1, tt2, ut11, ut12, ehpv[2][3], ebpv[2][3],
+          r[3][3], x, y, s, theta, sp, refa, refb;
+
+
+/* UTC to other time scales. */
+   j = eraUtctai(utc1, utc2, &tai1, &tai2);
+   if ( j < 0 ) return -1;
+   j = eraTaitt(tai1, tai2, &tt1, &tt2);
+   j = eraUtcut1(utc1, utc2, dut1, &ut11, &ut12);
+   if ( j < 0 ) return -1;
+
+/* Earth barycentric & heliocentric position/velocity (au, au/d). */
+   (void) eraEpv00(tt1, tt2, ehpv, ebpv);
+
+/* Form the equinox based BPN matrix, IAU 2006/2000A. */
+   eraPnm06a(tt1, tt2, r);
+
+/* Extract CIP X,Y. */
+   eraBpn2xy(r, &x, &y);
+
+/* Obtain CIO locator s. */
+   s = eraS06(tt1, tt2, x, y);
+
+/* Earth rotation angle. */
+   theta = eraEra00(ut11, ut12);
+
+/* TIO locator s'. */
+   sp = eraSp00(tt1, tt2);
+
+/* Refraction constants A and B. */
+   eraRefco(phpa, tc, rh, wl, &refa, &refb);
+
+/* Compute the star-independent astrometry parameters. */
+   eraApco(tt1, tt2, ebpv, ehpv[0], x, y, s, theta,
+           elong, phi, hm, xp, yp, sp, refa, refb, astrom);
+
+/* Equation of the origins. */
+   *eo = eraEors(r, s);
+
+/* Return any warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apcs.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apcs.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apcs.c	(revision 18732)
@@ -0,0 +1,233 @@
+#include "erfa.h"
+
+void eraApcs(double date1, double date2, double pv[2][3],
+             double ebpv[2][3], double ehp[3],
+             eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p c s
+**  - - - - - - - -
+**
+**  For an observer whose geocentric position and velocity are known,
+**  prepare star-independent astrometry parameters for transformations
+**  between ICRS and GCRS.  The Earth ephemeris is supplied by the
+**  caller.
+**
+**  The parameters produced by this function are required in the space
+**  motion, parallax, light deflection and aberration parts of the
+**  astrometric transformation chain.
+**
+**  Given:
+**     date1  double       TDB as a 2-part...
+**     date2  double       ...Julian Date (Note 1)
+**     pv     double[2][3] observer's geocentric pos/vel (m, m/s)
+**     ebpv   double[2][3] Earth barycentric PV (au, au/day)
+**     ehp    double[3]    Earth heliocentric P (au)
+**
+**  Returned:
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) Providing separate arguments for (i) the observer's geocentric
+**     position and velocity and (ii) the Earth ephemeris is done for
+**     convenience in the geocentric, terrestrial and Earth orbit cases.
+**     For deep space applications it maybe more convenient to specify
+**     zero geocentric position and velocity and to supply the
+**     observer's position and velocity information directly instead of
+**     with respect to the Earth.  However, note the different units:
+**     m and m/s for the geocentric vectors, au and au/day for the
+**     heliocentric and barycentric vectors.
+**
+**  4) In cases where the caller does not wish to provide the Earth
+**     ephemeris, the function eraApcs13 can be used instead of the
+**     present function.  This computes the Earth ephemeris using the
+**     ERFA function eraEpv00.
+**
+**  5) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  6) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraCp        copy p-vector
+**     eraPm        modulus of p-vector
+**     eraPn        decompose p-vector into modulus and direction
+**     eraIr        initialize r-matrix to identity
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* au/d to m/s */
+   const double AUDMS = ERFA_DAU/ERFA_DAYSEC;
+
+/* Light time for 1 AU (day) */
+   const double CR = ERFA_AULT/ERFA_DAYSEC;
+
+   int i;
+   double dp, dv, pb[3], vb[3], ph[3], v2, w;
+
+
+/* Time since reference epoch, years (for proper motion calculation). */
+   astrom->pmt = ( (date1 - ERFA_DJ00) + date2 ) / ERFA_DJY;
+
+/* Adjust Earth ephemeris to observer. */
+   for (i = 0; i < 3; i++) {
+      dp = pv[0][i] / ERFA_DAU;
+      dv = pv[1][i] / AUDMS;
+      pb[i] = ebpv[0][i] + dp;
+      vb[i] = ebpv[1][i] + dv;
+      ph[i] = ehp[i] + dp;
+   }
+
+/* Barycentric position of observer (au). */
+   eraCp(pb, astrom->eb);
+
+/* Heliocentric direction and distance (unit vector and au). */
+   eraPn(ph, &astrom->em, astrom->eh);
+
+/* Barycentric vel. in units of c, and reciprocal of Lorenz factor. */
+   v2 = 0.0;
+   for (i = 0; i < 3; i++) {
+      w = vb[i] * CR;
+      astrom->v[i] = w;
+      v2 += w*w;
+   }
+   astrom->bm1 = sqrt(1.0 - v2);
+
+/* Reset the NPB matrix. */
+   eraIr(astrom->bpn);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apcs13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apcs13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apcs13.c	(revision 18732)
@@ -0,0 +1,191 @@
+#include "erfa.h"
+
+void eraApcs13(double date1, double date2, double pv[2][3],
+               eraASTROM *astrom)
+/*
+**  - - - - - - - - - -
+**   e r a A p c s 1 3
+**  - - - - - - - - - -
+**
+**  For an observer whose geocentric position and velocity are known,
+**  prepare star-independent astrometry parameters for transformations
+**  between ICRS and GCRS.  The Earth ephemeris is from ERFA models.
+**
+**  The parameters produced by this function are required in the space
+**  motion, parallax, light deflection and aberration parts of the
+**  astrometric transformation chain.
+**
+**  Given:
+**     date1  double       TDB as a 2-part...
+**     date2  double       ...Julian Date (Note 1)
+**     pv     double[2][3] observer's geocentric pos/vel (Note 3)
+**
+**  Returned:
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       unchanged
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) All the vectors are with respect to BCRS axes.
+**
+**  3) The observer's position and velocity pv are geocentric but with
+**     respect to BCRS axes, and in units of m and m/s.  No assumptions
+**     are made about proximity to the Earth, and the function can be
+**     used for deep space applications as well as Earth orbit and
+**     terrestrial.
+**
+**  4) In cases where the caller wishes to supply his own Earth
+**     ephemeris, the function eraApcs can be used instead of the present
+**     function.
+**
+**  5) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  6) The context structure astrom produced by this function is used by
+**     eraAtciq* and eraAticq*.
+**
+**  Called:
+**     eraEpv00     Earth position and velocity
+**     eraApcs      astrometry parameters, ICRS-GCRS, space observer
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double ehpv[2][3], ebpv[2][3];
+
+
+/* Earth barycentric & heliocentric position/velocity (au, au/d). */
+   (void) eraEpv00(date1, date2, ehpv, ebpv);
+
+/* Compute the star-independent astrometry parameters. */
+   eraApcs(date1, date2, pv, ebpv, ehpv[0], astrom);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/aper.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/aper.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/aper.c	(revision 18732)
@@ -0,0 +1,162 @@
+#include "erfa.h"
+
+void eraAper(double theta, eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p e r
+**  - - - - - - - -
+**
+**  In the star-independent astrometry parameters, update only the
+**  Earth rotation angle, supplied by the caller explicitly.
+**
+**  Given:
+**     theta   double      Earth rotation angle (radians, Note 2)
+**     astrom  eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       not used
+**      eb     double[3]    not used
+**      eh     double[3]    not used
+**      em     double       not used
+**      v      double[3]    not used
+**      bm1    double       not used
+**      bpn    double[3][3] not used
+**      along  double       longitude + s' (radians)
+**      xpl    double       not used
+**      ypl    double       not used
+**      sphi   double       not used
+**      cphi   double       not used
+**      diurab double       not used
+**      eral   double       not used
+**      refa   double       not used
+**      refb   double       not used
+**
+**  Returned:
+**     astrom  eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       unchanged
+**      eb     double[3]    unchanged
+**      eh     double[3]    unchanged
+**      em     double       unchanged
+**      v      double[3]    unchanged
+**      bm1    double       unchanged
+**      bpn    double[3][3] unchanged
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) This function exists to enable sidereal-tracking applications to
+**     avoid wasteful recomputation of the bulk of the astrometry
+**     parameters:  only the Earth rotation is updated.
+**
+**  2) For targets expressed as equinox based positions, such as
+**     classical geocentric apparent (RA,Dec), the supplied theta can be
+**     Greenwich apparent sidereal time rather than Earth rotation
+**     angle.
+**
+**  3) The function eraAper13 can be used instead of the present
+**     function, and starts from UT1 rather than ERA itself.
+**
+**  4) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   astrom->eral = theta + astrom->along;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/aper13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/aper13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/aper13.c	(revision 18732)
@@ -0,0 +1,181 @@
+#include "erfa.h"
+
+void eraAper13(double ut11, double ut12, eraASTROM *astrom)
+/*
+**  - - - - - - - - - -
+**   e r a A p e r 1 3
+**  - - - - - - - - - -
+**
+**  In the star-independent astrometry parameters, update only the
+**  Earth rotation angle.  The caller provides UT1, (n.b. not UTC).
+**
+**  Given:
+**     ut11    double      UT1 as a 2-part...
+**     ut12    double      ...Julian Date (Note 1)
+**     astrom  eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       not used
+**      eb     double[3]    not used
+**      eh     double[3]    not used
+**      em     double       not used
+**      v      double[3]    not used
+**      bm1    double       not used
+**      bpn    double[3][3] not used
+**      along  double       longitude + s' (radians)
+**      xpl    double       not used
+**      ypl    double       not used
+**      sphi   double       not used
+**      cphi   double       not used
+**      diurab double       not used
+**      eral   double       not used
+**      refa   double       not used
+**      refb   double       not used
+**
+**  Returned:
+**     astrom  eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       unchanged
+**      eb     double[3]    unchanged
+**      eh     double[3]    unchanged
+**      em     double       unchanged
+**      v      double[3]    unchanged
+**      bm1    double       unchanged
+**      bpn    double[3][3] unchanged
+**      along  double       unchanged
+**      xpl    double       unchanged
+**      ypl    double       unchanged
+**      sphi   double       unchanged
+**      cphi   double       unchanged
+**      diurab double       unchanged
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       unchanged
+**      refb   double       unchanged
+**
+**  Notes:
+**
+**  1) The UT1 date (n.b. not UTC) ut11+ut12 is a Julian Date,
+**     apportioned in any convenient way between the arguments ut11 and
+**     ut12.  For example, JD(UT1)=2450123.7 could be expressed in any
+**     of these ways, among others:
+**
+**            ut11           ut12
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  The date & time method is
+**     best matched to the algorithm used:  maximum precision is
+**     delivered when the ut11 argument is for 0hrs UT1 on the day in
+**     question and the ut12 argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) If the caller wishes to provide the Earth rotation angle itself,
+**     the function eraAper can be used instead.  One use of this
+**     technique is to substitute Greenwich apparent sidereal time and
+**     thereby to support equinox based transformations directly.
+**
+**  3) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  Called:
+**     eraAper      astrometry parameters: update ERA
+**     eraEra00     Earth rotation angle, IAU 2000
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraAper(eraEra00(ut11,ut12), astrom);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apio.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apio.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apio.c	(revision 18732)
@@ -0,0 +1,213 @@
+#include "erfa.h"
+
+void eraApio(double sp, double theta,
+             double elong, double phi, double hm, double xp, double yp,
+             double refa, double refb,
+             eraASTROM *astrom)
+/*
+**  - - - - - - - -
+**   e r a A p i o
+**  - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between CIRS and observed
+**  coordinates.  The caller supplies the Earth orientation information
+**  and the refraction constants as well as the site coordinates.
+**
+**  Given:
+**     sp     double      the TIO locator s' (radians, Note 1)
+**     theta  double      Earth rotation angle (radians)
+**     elong  double      longitude (radians, east +ve, Note 2)
+**     phi    double      geodetic latitude (radians, Note 2)
+**     hm     double      height above ellipsoid (m, geodetic Note 2)
+**     xp,yp  double      polar motion coordinates (radians, Note 3)
+**     refa   double      refraction constant A (radians, Note 4)
+**     refb   double      refraction constant B (radians, Note 4)
+**
+**  Returned:
+**     astrom eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       unchanged
+**      eb     double[3]    unchanged
+**      eh     double[3]    unchanged
+**      em     double       unchanged
+**      v      double[3]    unchanged
+**      bm1    double       unchanged
+**      bpn    double[3][3] unchanged
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Notes:
+**
+**  1) sp, the TIO locator s', is a tiny quantity needed only by the
+**     most precise applications.  It can either be set to zero or
+**     predicted using the ERFA function eraSp00.
+**
+**  2) The geographical coordinates are with respect to the ERFA_WGS84
+**     reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**     longitude required by the present function is east-positive
+**     (i.e. right-handed), in accordance with geographical convention.
+**
+**  3) The polar motion xp,yp can be obtained from IERS bulletins.  The
+**     values are the coordinates (in radians) of the Celestial
+**     Intermediate Pole with respect to the International Terrestrial
+**     Reference System (see IERS Conventions 2003), measured along the
+**     meridians 0 and 90 deg west respectively.  For many applications,
+**     xp and yp can be set to zero.
+**
+**     Internally, the polar motion is stored in a form rotated onto the
+**     local meridian.
+**
+**  4) The refraction constants refa and refb are for use in a
+**     dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed
+**     (i.e. refracted) zenith distance and dZ is the amount of
+**     refraction.
+**
+**  5) It is advisable to take great care with units, as even unlikely
+**     values of the input parameters are accepted and processed in
+**     accordance with the models used.
+**
+**  6) In cases where the caller does not wish to provide the Earth
+**     rotation information and refraction constants, the function
+**     eraApio13 can be used instead of the present function.  This
+**     starts from UTC and weather readings etc. and computes suitable
+**     values using other ERFA functions.
+**
+**  7) This is one of several functions that inserts into the astrom
+**     structure star-independent parameters needed for the chain of
+**     astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**     The various functions support different classes of observer and
+**     portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**     Those with names ending in "13" use contemporary ERFA models to
+**     compute the various ephemerides.  The others accept ephemerides
+**     supplied by the caller.
+**
+**     The transformation from ICRS to GCRS covers space motion,
+**     parallax, light deflection, and aberration.  From GCRS to CIRS
+**     comprises frame bias and precession-nutation.  From CIRS to
+**     observed takes account of Earth rotation, polar motion, diurnal
+**     aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**     transformation), and atmospheric refraction.
+**
+**  8) The context structure astrom produced by this function is used by
+**     eraAtioq and eraAtoiq.
+**
+**  Called:
+**     eraPvtob     position/velocity of terrestrial station
+**     eraAper      astrometry parameters: update ERA
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double sl, cl, pv[2][3];
+
+
+/* Longitude with adjustment for TIO locator s'. */
+   astrom->along = elong + sp;
+
+/* Polar motion, rotated onto the local meridian. */
+   sl = sin(astrom->along);
+   cl = cos(astrom->along);
+   astrom->xpl = xp*cl - yp*sl;
+   astrom->ypl = xp*sl + yp*cl;
+
+/* Functions of latitude. */
+   astrom->sphi = sin(phi);
+   astrom->cphi = cos(phi);
+
+/* Observer's geocentric position and velocity (m, m/s, CIRS). */
+   eraPvtob(elong, phi, hm, xp, yp, sp, theta, pv);
+
+/* Magnitude of diurnal aberration vector. */
+   astrom->diurab = sqrt(pv[1][0]*pv[1][0]+pv[1][1]*pv[1][1]) / ERFA_CMPS;
+
+/* Refraction constants. */
+   astrom->refa = refa;
+   astrom->refb = refb;
+
+/* Local Earth rotation angle. */
+   eraAper(theta, astrom);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/apio13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/apio13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/apio13.c	(revision 18732)
@@ -0,0 +1,259 @@
+#include "erfa.h"
+
+int eraApio13(double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              eraASTROM *astrom)
+/*
+**  - - - - - - - - - -
+**   e r a A p i o 1 3
+**  - - - - - - - - - -
+**
+**  For a terrestrial observer, prepare star-independent astrometry
+**  parameters for transformations between CIRS and observed
+**  coordinates.  The caller supplies UTC, site coordinates, ambient air
+**  conditions and observing wavelength.
+**
+**  Given:
+**     utc1   double      UTC as a 2-part...
+**     utc2   double      ...quasi Julian Date (Notes 1,2)
+**     dut1   double      UT1-UTC (seconds)
+**     elong  double      longitude (radians, east +ve, Note 3)
+**     phi    double      geodetic latitude (radians, Note 3)
+**     hm     double      height above ellipsoid (m, geodetic Notes 4,6)
+**     xp,yp  double      polar motion coordinates (radians, Note 5)
+**     phpa   double      pressure at the observer (hPa = mB, Note 6)
+**     tc     double      ambient temperature at the observer (deg C)
+**     rh     double      relative humidity at the observer (range 0-1)
+**     wl     double      wavelength (micrometers, Note 7)
+**
+**  Returned:
+**     astrom eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       unchanged
+**      eb     double[3]    unchanged
+**      eh     double[3]    unchanged
+**      em     double       unchanged
+**      v      double[3]    unchanged
+**      bm1    double       unchanged
+**      bpn    double[3][3] unchanged
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned (function value):
+**            int         status: +1 = dubious year (Note 2)
+**                                 0 = OK
+**                                -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  2)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the future
+**      to be trusted.  See eraDat for further details.
+**
+**  3)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  4)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  5)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many applications,
+**      xp and yp can be set to zero.
+**
+**      Internally, the polar motion is stored in a form rotated onto
+**      the local meridian.
+**
+**  6)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB), is
+**      available, an adequate estimate of hm can be obtained from the
+**      expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to the
+**      pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  7)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  8)  It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  9)  In cases where the caller wishes to supply his own Earth
+**      rotation information and refraction constants, the function
+**      eraApc can be used instead of the present function.
+**
+**  10) This is one of several functions that inserts into the astrom
+**      structure star-independent parameters needed for the chain of
+**      astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.
+**
+**      The various functions support different classes of observer and
+**      portions of the transformation chain:
+**
+**          functions         observer        transformation
+**
+**       eraApcg eraApcg13    geocentric      ICRS <-> GCRS
+**       eraApci eraApci13    terrestrial     ICRS <-> CIRS
+**       eraApco eraApco13    terrestrial     ICRS <-> observed
+**       eraApcs eraApcs13    space           ICRS <-> GCRS
+**       eraAper eraAper13    terrestrial     update Earth rotation
+**       eraApio eraApio13    terrestrial     CIRS <-> observed
+**
+**      Those with names ending in "13" use contemporary ERFA models to
+**      compute the various ephemerides.  The others accept ephemerides
+**      supplied by the caller.
+**
+**      The transformation from ICRS to GCRS covers space motion,
+**      parallax, light deflection, and aberration.  From GCRS to CIRS
+**      comprises frame bias and precession-nutation.  From CIRS to
+**      observed takes account of Earth rotation, polar motion, diurnal
+**      aberration and parallax (unless subsumed into the ICRS <-> GCRS
+**      transformation), and atmospheric refraction.
+**
+**  11) The context structure astrom produced by this function is used
+**      by eraAtioq and eraAtoiq.
+**
+**  Called:
+**     eraUtctai    UTC to TAI
+**     eraTaitt     TAI to TT
+**     eraUtcut1    UTC to UT1
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraRefco     refraction constants for given ambient conditions
+**     eraApio      astrometry parameters, CIRS-observed
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   double tai1, tai2, tt1, tt2, ut11, ut12, sp, theta, refa, refb;
+
+
+/* UTC to other time scales. */
+   j = eraUtctai(utc1, utc2, &tai1, &tai2);
+   if ( j < 0 ) return -1;
+   j = eraTaitt(tai1, tai2, &tt1, &tt2);
+   j = eraUtcut1(utc1, utc2, dut1, &ut11, &ut12);
+   if ( j < 0 ) return -1;
+
+/* TIO locator s'. */
+   sp = eraSp00(tt1, tt2);
+
+/* Earth rotation angle. */
+   theta = eraEra00(ut11, ut12);
+
+/* Refraction constants A and B. */
+   eraRefco(phpa, tc, rh, wl, &refa, &refb);
+
+/* CIRS <-> observed astrometry parameters. */
+   eraApio(sp, theta, elong, phi, hm, xp, yp, refa, refb, astrom);
+
+/* Return any warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atci13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atci13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atci13.c	(revision 18732)
@@ -0,0 +1,159 @@
+#include "erfa.h"
+
+void eraAtci13(double rc, double dc,
+               double pr, double pd, double px, double rv,
+               double date1, double date2,
+               double *ri, double *di, double *eo)
+/*
+**  - - - - - - - - - -
+**   e r a A t c i 1 3
+**  - - - - - - - - - -
+**
+**  Transform ICRS star data, epoch J2000.0, to CIRS.
+**
+**  Given:
+**     rc     double   ICRS right ascension at J2000.0 (radians, Note 1)
+**     dc     double   ICRS declination at J2000.0 (radians, Note 1)
+**     pr     double   RA proper motion (radians/year; Note 2)
+**     pd     double   Dec proper motion (radians/year)
+**     px     double   parallax (arcsec)
+**     rv     double   radial velocity (km/s, +ve if receding)
+**     date1  double   TDB as a 2-part...
+**     date2  double   ...Julian Date (Note 3)
+**
+**  Returned:
+**     ri,di  double*  CIRS geocentric RA,Dec (radians)
+**     eo     double*  equation of the origins (ERA-GST, Note 5)
+**
+**  Notes:
+**
+**  1) Star data for an epoch other than J2000.0 (for example from the
+**     Hipparcos catalog, which has an epoch of J1991.25) will require a
+**     preliminary call to eraPmsafe before use.
+**
+**  2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  3) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.8g could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.8g           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  4) The available accuracy is better than 1 milliarcsecond, limited
+**     mainly by the precession-nutation model that is used, namely
+**     IAU 2000A/2006.  Very close to solar system bodies, additional
+**     errors of up to several milliarcseconds can occur because of
+**     unmodeled light deflection;  however, the Sun's contribution is
+**     taken into account, to first order.  The accuracy limitations of
+**     the ERFA function eraEpv00 (used to compute Earth position and
+**     velocity) can contribute aberration errors of up to
+**     5 microarcseconds.  Light deflection at the Sun's limb is
+**     uncertain at the 0.4 mas level.
+**
+**  5) Should the transformation to (equinox based) apparent place be
+**     required rather than (CIO based) intermediate place, subtract the
+**     equation of the origins from the returned right ascension:
+**     RA = RI - EO. (The eraAnp function can then be applied, as
+**     required, to keep the result in the conventional 0-2pi range.)
+**
+**  Called:
+**     eraApci13    astrometry parameters, ICRS-CIRS, 2013
+**     eraAtciq     quick ICRS to CIRS
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Star-independent astrometry parameters */
+   eraASTROM astrom;
+
+
+/* The transformation parameters. */
+   eraApci13(date1, date2, &astrom, eo);
+
+/* ICRS (epoch J2000.0) to CIRS. */
+   eraAtciq(rc, dc, pr, pd, px, rv, &astrom, ri, di);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atciq.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atciq.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atciq.c	(revision 18732)
@@ -0,0 +1,154 @@
+#include "erfa.h"
+
+void eraAtciq(double rc, double dc,
+              double pr, double pd, double px, double rv,
+              eraASTROM *astrom, double *ri, double *di)
+/*
+**  - - - - - - - - -
+**   e r a A t c i q
+**  - - - - - - - - -
+**
+**  Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed
+**  star-independent astrometry parameters.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are to be transformed for one date.  The
+**  star-independent parameters can be obtained by calling one of the
+**  functions eraApci[13], eraApcg[13], eraApco[13] or eraApcs[13].
+**
+**  If the parallax and proper motions are zero the eraAtciqz function
+**  can be used instead.
+**
+**  Given:
+**     rc,dc  double     ICRS RA,Dec at J2000.0 (radians)
+**     pr     double     RA proper motion (radians/year; Note 3)
+**     pd     double     Dec proper motion (radians/year)
+**     px     double     parallax (arcsec)
+**     rv     double     radial velocity (km/s, +ve if receding)
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned:
+**     ri,di   double    CIRS RA,Dec (radians)
+**
+**  Notes:
+**
+**  1) All the vectors are with respect to BCRS axes.
+**
+**  2) Star data for an epoch other than J2000.0 (for example from the
+**     Hipparcos catalog, which has an epoch of J1991.25) will require a
+**     preliminary call to eraPmsafe before use.
+**
+**  3) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  Called:
+**     eraPmpx      proper motion and parallax
+**     eraLdsun     light deflection by the Sun
+**     eraAb        stellar aberration
+**     eraRxp       product of r-matrix and pv-vector
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double pco[3], pnat[3], ppr[3], pi[3], w;
+
+
+/* Proper motion and parallax, giving BCRS coordinate direction. */
+   eraPmpx(rc, dc, pr, pd, px, rv, astrom->pmt, astrom->eb, pco);
+
+/* Light deflection by the Sun, giving BCRS natural direction. */
+   eraLdsun(pco, astrom->eh, astrom->em, pnat);
+
+/* Aberration, giving GCRS proper direction. */
+   eraAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr);
+
+/* Bias-precession-nutation, giving CIRS proper direction. */
+   eraRxp(astrom->bpn, ppr, pi);
+
+/* CIRS RA,Dec. */
+   eraC2s(pi, &w, di);
+   *ri = eraAnp(w);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atciqn.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atciqn.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atciqn.c	(revision 18732)
@@ -0,0 +1,191 @@
+#include "erfa.h"
+
+void eraAtciqn(double rc, double dc, double pr, double pd,
+               double px, double rv, eraASTROM *astrom,
+               int n, eraLDBODY b[], double *ri, double *di)
+/*
+**  - - - - - - - - - -
+**   e r a A t c i q n
+**  - - - - - - - - - -
+**
+**  Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed
+**  star-independent astrometry parameters plus a list of light-
+**  deflecting bodies.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are to be transformed for one date.  The
+**  star-independent parameters can be obtained by calling one of the
+**  functions eraApci[13], eraApcg[13], eraApco[13] or eraApcs[13].
+**
+**
+**  If the only light-deflecting body to be taken into account is the
+**  Sun, the eraAtciq function can be used instead.  If in addition the
+**  parallax and proper motions are zero, the eraAtciqz function can be
+**  used.
+**
+**  Given:
+**     rc,dc  double       ICRS RA,Dec at J2000.0 (radians)
+**     pr     double       RA proper motion (radians/year; Note 3)
+**     pd     double       Dec proper motion (radians/year)
+**     px     double       parallax (arcsec)
+**     rv     double       radial velocity (km/s, +ve if receding)
+**     astrom eraASTROM*   star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**      n     int           number of bodies (Note 3)
+**      b     eraLDBODY[n] data for each of the n bodies (Notes 3,4):
+**       bm    double        mass of the body (solar masses, Note 5)
+**       dl    double        deflection limiter (Note 6)
+**       pv    [2][3]        barycentric PV of the body (au, au/day)
+**
+**  Returned:
+**     ri,di   double    CIRS RA,Dec (radians)
+**
+**  Notes:
+**
+**  1) Star data for an epoch other than J2000.0 (for example from the
+**     Hipparcos catalog, which has an epoch of J1991.25) will require a
+**     preliminary call to eraPmsafe before use.
+**
+**  2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  3) The struct b contains n entries, one for each body to be
+**     considered.  If n = 0, no gravitational light deflection will be
+**     applied, not even for the Sun.
+**
+**  4) The struct b should include an entry for the Sun as well as for
+**     any planet or other body to be taken into account.  The entries
+**     should be in the order in which the light passes the body.
+**
+**  5) In the entry in the b struct for body i, the mass parameter
+**     b[i].bm can, as required, be adjusted in order to allow for such
+**     effects as quadrupole field.
+**
+**  6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is
+**     the angular separation (in radians) between star and body at
+**     which limiting is applied.  As phi shrinks below the chosen
+**     threshold, the deflection is artificially reduced, reaching zero
+**     for phi = 0.   Example values suitable for a terrestrial
+**     observer, together with masses, are as follows:
+**
+**        body i     b[i].bm        b[i].dl
+**
+**        Sun        1.0            6e-6
+**        Jupiter    0.00095435     3e-9
+**        Saturn     0.00028574     3e-10
+**
+**  7) For efficiency, validation of the contents of the b array is
+**     omitted.  The supplied masses must be greater than zero, the
+**     position and velocity vectors must be right, and the deflection
+**     limiter greater than zero.
+**
+**  Called:
+**     eraPmpx      proper motion and parallax
+**     eraLdn       light deflection by n bodies
+**     eraAb        stellar aberration
+**     eraRxp       product of r-matrix and pv-vector
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double pco[3], pnat[3], ppr[3], pi[3], w;
+
+
+/* Proper motion and parallax, giving BCRS coordinate direction. */
+   eraPmpx(rc, dc, pr, pd, px, rv, astrom->pmt, astrom->eb, pco);
+
+/* Light deflection, giving BCRS natural direction. */
+   eraLdn(n, b, astrom->eb, pco, pnat);
+
+/* Aberration, giving GCRS proper direction. */
+   eraAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr);
+
+/* Bias-precession-nutation, giving CIRS proper direction. */
+   eraRxp(astrom->bpn, ppr, pi);
+
+/* CIRS RA,Dec. */
+   eraC2s(pi, &w, di);
+   *ri = eraAnp(w);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atciqz.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atciqz.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atciqz.c	(revision 18732)
@@ -0,0 +1,153 @@
+#include "erfa.h"
+
+void eraAtciqz(double rc, double dc, eraASTROM *astrom,
+               double *ri, double *di)
+/*
+**  - - - - - - - - - -
+**   e r a A t c i q z
+**  - - - - - - - - - -
+**
+**  Quick ICRS to CIRS transformation, given precomputed star-
+**  independent astrometry parameters, and assuming zero parallax and
+**  proper motion.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are to be transformed for one date.  The
+**  star-independent parameters can be obtained by calling one of the
+**  functions eraApci[13], eraApcg[13], eraApco[13] or eraApcs[13].
+**
+**  The corresponding function for the case of non-zero parallax and
+**  proper motion is eraAtciq.
+**
+**  Given:
+**     rc,dc  double     ICRS astrometric RA,Dec (radians)
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned:
+**     ri,di  double     CIRS RA,Dec (radians)
+**
+**  Note:
+**
+**     All the vectors are with respect to BCRS axes.
+**
+**  References:
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013).
+**
+**     Klioner, Sergei A., "A practical relativistic model for micro-
+**     arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraLdsun     light deflection due to Sun
+**     eraAb        stellar aberration
+**     eraRxp       product of r-matrix and p-vector
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range +/- pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double pco[3], pnat[3], ppr[3], pi[3], w;
+
+
+/* BCRS coordinate direction (unit vector). */
+   eraS2c(rc, dc, pco);
+
+/* Light deflection by the Sun, giving BCRS natural direction. */
+   eraLdsun(pco, astrom->eh, astrom->em, pnat);
+
+/* Aberration, giving GCRS proper direction. */
+   eraAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr);
+
+/* Bias-precession-nutation, giving CIRS proper direction. */
+   eraRxp(astrom->bpn, ppr, pi);
+
+/* CIRS RA,Dec. */
+   eraC2s(pi, &w, di);
+   *ri = eraAnp(w);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atco13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atco13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atco13.c	(revision 18732)
@@ -0,0 +1,243 @@
+#include "erfa.h"
+
+int eraAtco13(double rc, double dc,
+              double pr, double pd, double px, double rv,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob, double *eo)
+/*
+**  - - - - - - - - - -
+**   e r a A t c o 1 3
+**  - - - - - - - - - -
+**
+**  ICRS RA,Dec to observed place.  The caller supplies UTC, site
+**  coordinates, ambient air conditions and observing wavelength.
+**
+**  ERFA models are used for the Earth ephemeris, bias-precession-
+**  nutation, Earth orientation and refraction.
+**
+**  Given:
+**     rc,dc  double   ICRS right ascension at J2000.0 (radians, Note 1)
+**     pr     double   RA proper motion (radians/year; Note 2)
+**     pd     double   Dec proper motion (radians/year)
+**     px     double   parallax (arcsec)
+**     rv     double   radial velocity (km/s, +ve if receding)
+**     utc1   double   UTC as a 2-part...
+**     utc2   double   ...quasi Julian Date (Notes 3-4)
+**     dut1   double   UT1-UTC (seconds, Note 5)
+**     elong  double   longitude (radians, east +ve, Note 6)
+**     phi    double   latitude (geodetic, radians, Note 6)
+**     hm     double   height above ellipsoid (m, geodetic, Notes 6,8)
+**     xp,yp  double   polar motion coordinates (radians, Note 7)
+**     phpa   double   pressure at the observer (hPa = mB, Note 8)
+**     tc     double   ambient temperature at the observer (deg C)
+**     rh     double   relative humidity at the observer (range 0-1)
+**     wl     double   wavelength (micrometers, Note 9)
+**
+**  Returned:
+**     aob    double*  observed azimuth (radians: N=0,E=90)
+**     zob    double*  observed zenith distance (radians)
+**     hob    double*  observed hour angle (radians)
+**     dob    double*  observed declination (radians)
+**     rob    double*  observed right ascension (CIO-based, radians)
+**     eo     double*  equation of the origins (ERA-GST)
+**
+**  Returned (function value):
+**            int      status: +1 = dubious year (Note 4)
+**                              0 = OK
+**                             -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  Star data for an epoch other than J2000.0 (for example from the
+**      Hipparcos catalog, which has an epoch of J1991.25) will require
+**      a preliminary call to eraPmsafe before use.
+**
+**  2)  The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  3)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  4)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the
+**      future to be trusted.  See eraDat for further details.
+**
+**  5)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  6)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  7)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many
+**      applications, xp and yp can be set to zero.
+**
+**  8)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB),
+**      is available, an adequate estimate of hm can be obtained from
+**      the expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to
+**      the pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  9)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  10) The accuracy of the result is limited by the corrections for
+**      refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**      Providing the meteorological parameters are known accurately and
+**      there are no gross local effects, the predicted observed
+**      coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**      (radio) for a zenith distance of less than 70 degrees, better
+**      than 30 arcsec (optical or radio) at 85 degrees and better
+**      than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**      Without refraction, the complementary functions eraAtco13 and
+**      eraAtoc13 are self-consistent to better than 1 microarcsecond
+**      all over the celestial sphere.  With refraction included,
+**      consistency falls off at high zenith distances, but is still
+**      better than 0.05 arcsec at 85 degrees.
+**
+**  11) "Observed" Az,ZD means the position that would be seen by a
+**      perfect geodetically aligned theodolite.  (Zenith distance is
+**      used rather than altitude in order to reflect the fact that no
+**      allowance is made for depression of the horizon.)  This is
+**      related to the observed HA,Dec via the standard rotation, using
+**      the geodetic latitude (corrected for polar motion), while the
+**      observed HA and RA are related simply through the Earth rotation
+**      angle and the site longitude.  "Observed" RA,Dec or HA,Dec thus
+**      means the position that would be seen by a perfect equatorial
+**      with its polar axis aligned to the Earth's axis of rotation.
+**
+**  12) It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  Called:
+**     eraApco13    astrometry parameters, ICRS-observed, 2013
+**     eraAtciq     quick ICRS to CIRS
+**     eraAtioq     quick CIRS to observed
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   eraASTROM astrom;
+   double ri, di;
+
+
+/* Star-independent astrometry parameters. */
+   j = eraApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom, eo);
+
+/* Abort if bad UTC. */
+   if ( j < 0 ) return j;
+
+/* Transform ICRS to CIRS. */
+   eraAtciq(rc, dc, pr, pd, px, rv, &astrom, &ri, &di);
+
+/* Transform CIRS to observed. */
+   eraAtioq(ri, di, &astrom, aob, zob, hob, dob, rob);
+
+/* Return OK/warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atic13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atic13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atic13.c	(revision 18732)
@@ -0,0 +1,152 @@
+#include "erfa.h"
+
+void eraAtic13(double ri, double di, double date1, double date2,
+               double *rc, double *dc, double *eo)
+/*
+**  - - - - - - - - - -
+**   e r a A t i c 1 3
+**  - - - - - - - - - -
+**
+**  Transform star RA,Dec from geocentric CIRS to ICRS astrometric.
+**
+**  Given:
+**     ri,di  double  CIRS geocentric RA,Dec (radians)
+**     date1  double  TDB as a 2-part...
+**     date2  double  ...Julian Date (Note 1)
+**
+**  Returned:
+**     rc,dc  double  ICRS astrometric RA,Dec (radians)
+**     eo     double  equation of the origins (ERA-GST, Note 4)
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  For most
+**     applications of this function the choice will not be at all
+**     critical.
+**
+**     TT can be used instead of TDB without any significant impact on
+**     accuracy.
+**
+**  2) Iterative techniques are used for the aberration and light
+**     deflection corrections so that the functions eraAtic13 (or
+**     eraAticq) and eraAtci13 (or eraAtciq) are accurate inverses;
+**     even at the edge of the Sun's disk the discrepancy is only about
+**     1 nanoarcsecond.
+**
+**  3) The available accuracy is better than 1 milliarcsecond, limited
+**     mainly by the precession-nutation model that is used, namely
+**     IAU 2000A/2006.  Very close to solar system bodies, additional
+**     errors of up to several milliarcseconds can occur because of
+**     unmodeled light deflection;  however, the Sun's contribution is
+**     taken into account, to first order.  The accuracy limitations of
+**     the ERFA function eraEpv00 (used to compute Earth position and
+**     velocity) can contribute aberration errors of up to
+**     5 microarcseconds.  Light deflection at the Sun's limb is
+**     uncertain at the 0.4 mas level.
+**
+**  4) Should the transformation to (equinox based) J2000.0 mean place
+**     be required rather than (CIO based) ICRS coordinates, subtract the
+**     equation of the origins from the returned right ascension:
+**     RA = RI - EO.  (The eraAnp function can then be applied, as
+**     required, to keep the result in the conventional 0-2pi range.)
+**
+**  Called:
+**     eraApci13    astrometry parameters, ICRS-CIRS, 2013
+**     eraAticq     quick CIRS to ICRS astrometric
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Star-independent astrometry parameters */
+   eraASTROM astrom;
+
+
+/* Star-independent astrometry parameters. */
+   eraApci13(date1, date2, &astrom, eo);
+
+/* CIRS to ICRS astrometric. */
+   eraAticq(ri, di, &astrom, rc, dc);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/aticq.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/aticq.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/aticq.c	(revision 18732)
@@ -0,0 +1,199 @@
+#include "erfa.h"
+
+void eraAticq(double ri, double di, eraASTROM *astrom,
+              double *rc, double *dc)
+/*
+**  - - - - - - - - -
+**   e r a A t i c q
+**  - - - - - - - - -
+**
+**  Quick CIRS RA,Dec to ICRS astrometric place, given the star-
+**  independent astrometry parameters.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are all to be transformed for one date.
+**  The star-independent astrometry parameters can be obtained by
+**  calling one of the functions eraApci[13], eraApcg[13], eraApco[13]
+**  or eraApcs[13].
+**
+**  Given:
+**     ri,di  double     CIRS RA,Dec (radians)
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned:
+**     rc,dc  double     ICRS astrometric RA,Dec (radians)
+**
+**  Notes:
+**
+**  1) Only the Sun is taken into account in the light deflection
+**     correction.
+**
+**  2) Iterative techniques are used for the aberration and light
+**     deflection corrections so that the functions eraAtic13 (or
+**     eraAticq) and eraAtci13 (or eraAtciq) are accurate inverses;
+**     even at the edge of the Sun's disk the discrepancy is only about
+**     1 nanoarcsecond.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraZp        zero p-vector
+**     eraAb        stellar aberration
+**     eraLdsun     light deflection by the Sun
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range +/- pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j, i;
+   double pi[3], ppr[3], pnat[3], pco[3], w, d[3], before[3], r2, r,
+          after[3];
+
+
+/* CIRS RA,Dec to Cartesian. */
+   eraS2c(ri, di, pi);
+
+/* Bias-precession-nutation, giving GCRS proper direction. */
+   eraTrxp(astrom->bpn, pi, ppr);
+
+/* Aberration, giving GCRS natural direction. */
+   eraZp(d);
+   for (j = 0; j < 2; j++) {
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         w = ppr[i] - d[i];
+         before[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         before[i] /= r;
+      }
+      eraAb(before, astrom->v, astrom->em, astrom->bm1, after);
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         d[i] = after[i] - before[i];
+         w = ppr[i] - d[i];
+         pnat[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         pnat[i] /= r;
+      }
+   }
+
+/* Light deflection by the Sun, giving BCRS coordinate direction. */
+   eraZp(d);
+   for (j = 0; j < 5; j++) {
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         w = pnat[i] - d[i];
+         before[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         before[i] /= r;
+      }
+      eraLdsun(before, astrom->eh, astrom->em, after);
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         d[i] = after[i] - before[i];
+         w = pnat[i] - d[i];
+         pco[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         pco[i] /= r;
+      }
+   }
+
+/* ICRS astrometric RA,Dec. */
+   eraC2s(pco, &w, dc);
+   *rc = eraAnp(w);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/aticqn.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/aticqn.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/aticqn.c	(revision 18732)
@@ -0,0 +1,237 @@
+#include "erfa.h"
+
+void eraAticqn(double ri, double di, eraASTROM *astrom,
+               int n, eraLDBODY b[], double *rc, double *dc)
+/*
+**  - - - - - - - - -
+**   e r a A t i c q n
+**  - - - - - - - - -
+**
+**  Quick CIRS to ICRS astrometric place transformation, given the star-
+**  independent astrometry parameters plus a list of light-deflecting
+**  bodies.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are all to be transformed for one date.
+**  The star-independent astrometry parameters can be obtained by
+**  calling one of the functions eraApci[13], eraApcg[13], eraApco[13]
+**  or eraApcs[13].
+*
+*  If the only light-deflecting body to be taken into account is the
+*  Sun, the eraAticq function can be used instead.
+**
+**  Given:
+**     ri,di  double      CIRS RA,Dec (radians)
+**     astrom eraASTROM*  star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**      n     int           number of bodies (Note 3)
+**      b     eraLDBODY[n] data for each of the n bodies (Notes 3,4):
+**       bm    double       mass of the body (solar masses, Note 5)
+**       dl    double       deflection limiter (Note 6)
+**       pv    [2][3]       barycentric PV of the body (au, au/day)
+**
+**  Returned:
+**     rc,dc  double     ICRS astrometric RA,Dec (radians)
+**
+**  Notes:
+**
+**  1) Iterative techniques are used for the aberration and light
+**     deflection corrections so that the functions eraAticqn and
+**     eraAtciqn are accurate inverses; even at the edge of the Sun's
+**     disk the discrepancy is only about 1 nanoarcsecond.
+**
+**  2) If the only light-deflecting body to be taken into account is the
+**     Sun, the eraAticq function can be used instead.
+**
+**  3) The struct b contains n entries, one for each body to be
+**     considered.  If n = 0, no gravitational light deflection will be
+**     applied, not even for the Sun.
+**
+**  4) The struct b should include an entry for the Sun as well as for
+**     any planet or other body to be taken into account.  The entries
+**     should be in the order in which the light passes the body.
+**
+**  5) In the entry in the b struct for body i, the mass parameter
+**     b[i].bm can, as required, be adjusted in order to allow for such
+**     effects as quadrupole field.
+**
+**  6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is
+**     the angular separation (in radians) between star and body at
+**     which limiting is applied.  As phi shrinks below the chosen
+**     threshold, the deflection is artificially reduced, reaching zero
+**     for phi = 0.   Example values suitable for a terrestrial
+**     observer, together with masses, are as follows:
+**
+**        body i     b[i].bm        b[i].dl
+**
+**        Sun        1.0            6e-6
+**        Jupiter    0.00095435     3e-9
+**        Saturn     0.00028574     3e-10
+**
+**  7) For efficiency, validation of the contents of the b array is
+**     omitted.  The supplied masses must be greater than zero, the
+**     position and velocity vectors must be right, and the deflection
+**     limiter greater than zero.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraZp        zero p-vector
+**     eraAb        stellar aberration
+**     eraLdn       light deflection by n bodies
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range +/- pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j, i;
+   double pi[3], ppr[3], pnat[3], pco[3], w, d[3], before[3], r2, r,
+          after[3];
+
+
+/* CIRS RA,Dec to Cartesian. */
+   eraS2c(ri, di, pi);
+
+/* Bias-precession-nutation, giving GCRS proper direction. */
+   eraTrxp(astrom->bpn, pi, ppr);
+
+/* Aberration, giving GCRS natural direction. */
+   eraZp(d);
+   for (j = 0; j < 2; j++) {
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         w = ppr[i] - d[i];
+         before[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         before[i] /= r;
+      }
+      eraAb(before, astrom->v, astrom->em, astrom->bm1, after);
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         d[i] = after[i] - before[i];
+         w = ppr[i] - d[i];
+         pnat[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         pnat[i] /= r;
+      }
+   }
+
+/* Light deflection, giving BCRS coordinate direction. */
+   eraZp(d);
+   for (j = 0; j < 5; j++) {
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         w = pnat[i] - d[i];
+         before[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         before[i] /= r;
+      }
+      eraLdn(n, b, astrom->eb, before, after);
+      r2 = 0.0;
+      for (i = 0; i < 3; i++) {
+         d[i] = after[i] - before[i];
+         w = pnat[i] - d[i];
+         pco[i] = w;
+         r2 += w*w;
+      }
+      r = sqrt(r2);
+      for (i = 0; i < 3; i++) {
+         pco[i] /= r;
+      }
+   }
+
+/* ICRS astrometric RA,Dec. */
+   eraC2s(pco, &w, dc);
+   *rc = eraAnp(w);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atio13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atio13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atio13.c	(revision 18732)
@@ -0,0 +1,222 @@
+#include "erfa.h"
+
+int eraAtio13(double ri, double di,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob)
+/*
+**  - - - - - - - - - -
+**   e r a A t i o 1 3
+**  - - - - - - - - - -
+**
+**  CIRS RA,Dec to observed place.  The caller supplies UTC, site
+**  coordinates, ambient air conditions and observing wavelength.
+**
+**  Given:
+**     ri     double   CIRS right ascension (CIO-based, radians)
+**     di     double   CIRS declination (radians)
+**     utc1   double   UTC as a 2-part...
+**     utc2   double   ...quasi Julian Date (Notes 1,2)
+**     dut1   double   UT1-UTC (seconds, Note 3)
+**     elong  double   longitude (radians, east +ve, Note 4)
+**     phi    double   geodetic latitude (radians, Note 4)
+**     hm     double   height above ellipsoid (m, geodetic Notes 4,6)
+**     xp,yp  double   polar motion coordinates (radians, Note 5)
+**     phpa   double   pressure at the observer (hPa = mB, Note 6)
+**     tc     double   ambient temperature at the observer (deg C)
+**     rh     double   relative humidity at the observer (range 0-1)
+**     wl     double   wavelength (micrometers, Note 7)
+**
+**  Returned:
+**     aob    double*  observed azimuth (radians: N=0,E=90)
+**     zob    double*  observed zenith distance (radians)
+**     hob    double*  observed hour angle (radians)
+**     dob    double*  observed declination (radians)
+**     rob    double*  observed right ascension (CIO-based, radians)
+**
+**  Returned (function value):
+**            int      status: +1 = dubious year (Note 2)
+**                              0 = OK
+**                             -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  2)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the
+**      future to be trusted.  See eraDat for further details.
+**
+**  3)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  4)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  5)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many
+**      applications, xp and yp can be set to zero.
+**
+**  6)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB), is
+**      available, an adequate estimate of hm can be obtained from the
+**      expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to
+**      the pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  7)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  8)  "Observed" Az,ZD means the position that would be seen by a
+**      perfect geodetically aligned theodolite.  (Zenith distance is
+**      used rather than altitude in order to reflect the fact that no
+**      allowance is made for depression of the horizon.)  This is
+**      related to the observed HA,Dec via the standard rotation, using
+**      the geodetic latitude (corrected for polar motion), while the
+**      observed HA and RA are related simply through the Earth rotation
+**      angle and the site longitude.  "Observed" RA,Dec or HA,Dec thus
+**      means the position that would be seen by a perfect equatorial
+**      with its polar axis aligned to the Earth's axis of rotation.
+**
+**  9)  The accuracy of the result is limited by the corrections for
+**      refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**      Providing the meteorological parameters are known accurately and
+**      there are no gross local effects, the predicted astrometric
+**      coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**      (radio) for a zenith distance of less than 70 degrees, better
+**      than 30 arcsec (optical or radio) at 85 degrees and better
+**      than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**  10) The complementary functions eraAtio13 and eraAtoi13 are self-
+**      consistent to better than 1 microarcsecond all over the
+**      celestial sphere.
+**
+**  11) It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  Called:
+**     eraApio13    astrometry parameters, CIRS-observed, 2013
+**     eraAtioq     quick CIRS to observed
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   eraASTROM astrom;
+
+
+/* Star-independent astrometry parameters for CIRS->observed. */
+   j = eraApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom);
+
+/* Abort if bad UTC. */
+   if ( j < 0 ) return j;
+
+/* Transform CIRS to observed. */
+   eraAtioq(ri, di, &astrom, aob, zob, hob, dob, rob);
+
+/* Return OK/warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atioq.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atioq.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atioq.c	(revision 18732)
@@ -0,0 +1,243 @@
+#include "erfa.h"
+
+void eraAtioq(double ri, double di, eraASTROM *astrom,
+              double *aob, double *zob,
+              double *hob, double *dob, double *rob)
+/*
+**  - - - - - - - - -
+**   e r a A t i o q
+**  - - - - - - - - -
+**
+**  Quick CIRS to observed place transformation.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are all to be transformed for one date.
+**  The star-independent astrometry parameters can be obtained by
+**  calling eraApio[13] or eraApco[13].
+**
+**  Given:
+**     ri     double     CIRS right ascension
+**     di     double     CIRS declination
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned:
+**     aob    double*    observed azimuth (radians: N=0,E=90)
+**     zob    double*    observed zenith distance (radians)
+**     hob    double*    observed hour angle (radians)
+**     dob    double*    observed declination (radians)
+**     rob    double*    observed right ascension (CIO-based, radians)
+**
+**  Notes:
+**
+**  1) This function returns zenith distance rather than altitude in
+**     order to reflect the fact that no allowance is made for
+**     depression of the horizon.
+**
+**  2) The accuracy of the result is limited by the corrections for
+**     refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**     Providing the meteorological parameters are known accurately and
+**     there are no gross local effects, the predicted observed
+**     coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**     (radio) for a zenith distance of less than 70 degrees, better
+**     than 30 arcsec (optical or radio) at 85 degrees and better
+**     than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**     Without refraction, the complementary functions eraAtioq and
+**     eraAtoiq are self-consistent to better than 1 microarcsecond all
+**     over the celestial sphere.  With refraction included, consistency
+**     falls off at high zenith distances, but is still better than
+**     0.05 arcsec at 85 degrees.
+**
+**  3) It is advisable to take great care with units, as even unlikely
+**     values of the input parameters are accepted and processed in
+**     accordance with the models used.
+**
+**  4) The CIRS RA,Dec is obtained from a star catalog mean place by
+**     allowing for space motion, parallax, the Sun's gravitational lens
+**     effect, annual aberration and precession-nutation.  For star
+**     positions in the ICRS, these effects can be applied by means of
+**     the eraAtci13 (etc.) functions.  Starting from classical "mean
+**     place" systems, additional transformations will be needed first.
+**
+**  5) "Observed" Az,El means the position that would be seen by a
+**     perfect geodetically aligned theodolite.  This is obtained from
+**     the CIRS RA,Dec by allowing for Earth orientation and diurnal
+**     aberration, rotating from equator to horizon coordinates, and
+**     then adjusting for refraction.  The HA,Dec is obtained by
+**     rotating back into equatorial coordinates, and is the position
+**     that would be seen by a perfect equatorial with its polar axis
+**     aligned to the Earth's axis of rotation.  Finally, the RA is
+**     obtained by subtracting the HA from the local ERA.
+**
+**  6) The star-independent CIRS-to-observed-place parameters in ASTROM
+**     may be computed with eraApio[13] or eraApco[13].  If nothing has
+**     changed significantly except the time, eraAper[13] may be used to
+**     perform the requisite adjustment to the astrom structure.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Minimum cos(alt) and sin(alt) for refraction purposes */
+   const double CELMIN = 1e-6;
+   const double SELMIN = 0.05;
+
+   double v[3], x, y, z, xhd, yhd, zhd, f, xhdt, yhdt, zhdt,
+          xaet, yaet, zaet, azobs, r, tz, w, del, cosdel,
+          xaeo, yaeo, zaeo, zdobs, hmobs, dcobs, raobs;
+
+
+/* CIRS RA,Dec to Cartesian -HA,Dec. */
+   eraS2c(ri-astrom->eral, di, v);
+   x = v[0];
+   y = v[1];
+   z = v[2];
+
+/* Polar motion. */
+   xhd = x + astrom->xpl*z;
+   yhd = y - astrom->ypl*z;
+   zhd = z - astrom->xpl*x + astrom->ypl*y;
+
+/* Diurnal aberration. */
+   f = ( 1.0 - astrom->diurab*yhd );
+   xhdt = f * xhd;
+   yhdt = f * ( yhd + astrom->diurab );
+   zhdt = f * zhd;
+
+/* Cartesian -HA,Dec to Cartesian Az,El (S=0,E=90). */
+   xaet = astrom->sphi*xhdt - astrom->cphi*zhdt;
+   yaet = yhdt;
+   zaet = astrom->cphi*xhdt + astrom->sphi*zhdt;
+
+/* Azimuth (N=0,E=90). */
+   azobs = ( xaet != 0.0 || yaet != 0.0 ) ? atan2(yaet,-xaet) : 0.0;
+
+/* ---------- */
+/* Refraction */
+/* ---------- */
+
+/* Cosine and sine of altitude, with precautions. */
+   r = sqrt(xaet*xaet + yaet*yaet);
+   r = r > CELMIN ? r : CELMIN;
+   z = zaet > SELMIN ? zaet : SELMIN;
+
+/* A*tan(z)+B*tan^3(z) model, with Newton-Raphson correction. */
+   tz = r/z;
+   w = astrom->refb*tz*tz;
+   del = ( astrom->refa + w ) * tz /
+         ( 1.0 + ( astrom->refa + 3.0*w ) / ( z*z ) );
+
+/* Apply the change, giving observed vector. */
+   cosdel = 1.0 - del*del/2.0;
+   f = cosdel - del*z/r;
+   xaeo = xaet*f;
+   yaeo = yaet*f;
+   zaeo = cosdel*zaet + del*r;
+
+/* Observed ZD. */
+   zdobs = atan2(sqrt(xaeo*xaeo+yaeo*yaeo), zaeo);
+
+/* Az/El vector to HA,Dec vector (both right-handed). */
+   v[0] = astrom->sphi*xaeo + astrom->cphi*zaeo;
+   v[1] = yaeo;
+   v[2] = - astrom->cphi*xaeo + astrom->sphi*zaeo;
+
+/* To spherical -HA,Dec. */
+   eraC2s ( v, &hmobs, &dcobs );
+
+/* Right ascension (with respect to CIO). */
+   raobs = astrom->eral + hmobs;
+
+/* Return the results. */
+   *aob = eraAnp(azobs);
+   *zob = zdobs;
+   *hob = -hmobs;
+   *dob = dcobs;
+   *rob = eraAnp(raobs);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atoc13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atoc13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atoc13.c	(revision 18732)
@@ -0,0 +1,233 @@
+#include "erfa.h"
+
+int eraAtoc13(const char *type, double ob1, double ob2,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *rc, double *dc)
+/*
+**  - - - - - - - - - -
+**   e r a A t o c 1 3
+**  - - - - - - - - - -
+**
+**  Observed place at a groundbased site to to ICRS astrometric RA,Dec.
+**  The caller supplies UTC, site coordinates, ambient air conditions
+**  and observing wavelength.
+**
+**  Given:
+**     type   char[]   type of coordinates - "R", "H" or "A" (Notes 1,2)
+**     ob1    double   observed Az, HA or RA (radians; Az is N=0,E=90)
+**     ob2    double   observed ZD or Dec (radians)
+**     utc1   double   UTC as a 2-part...
+**     utc2   double   ...quasi Julian Date (Notes 3,4)
+**     dut1   double   UT1-UTC (seconds, Note 5)
+**     elong  double   longitude (radians, east +ve, Note 6)
+**     phi    double   geodetic latitude (radians, Note 6)
+**     hm     double   height above ellipsoid (m, geodetic Notes 6,8)
+**     xp,yp  double   polar motion coordinates (radians, Note 7)
+**     phpa   double   pressure at the observer (hPa = mB, Note 8)
+**     tc     double   ambient temperature at the observer (deg C)
+**     rh     double   relative humidity at the observer (range 0-1)
+**     wl     double   wavelength (micrometers, Note 9)
+**
+**  Returned:
+**     rc,dc  double   ICRS astrometric RA,Dec (radians)
+**
+**  Returned (function value):
+**            int      status: +1 = dubious year (Note 4)
+**                              0 = OK
+**                             -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  "Observed" Az,ZD means the position that would be seen by a
+**      perfect geodetically aligned theodolite.  (Zenith distance is
+**      used rather than altitude in order to reflect the fact that no
+**      allowance is made for depression of the horizon.)  This is
+**      related to the observed HA,Dec via the standard rotation, using
+**      the geodetic latitude (corrected for polar motion), while the
+**      observed HA and RA are related simply through the Earth rotation
+**      angle and the site longitude.  "Observed" RA,Dec or HA,Dec thus
+**      means the position that would be seen by a perfect equatorial
+**      with its polar axis aligned to the Earth's axis of rotation.
+**
+**  2)  Only the first character of the type argument is significant.
+**      "R" or "r" indicates that ob1 and ob2 are the observed right
+**      ascension and declination;  "H" or "h" indicates that they are
+**      hour angle (west +ve) and declination;  anything else ("A" or
+**      "a" is recommended) indicates that ob1 and ob2 are azimuth
+**      (north zero, east 90 deg) and zenith distance.
+**
+**  3)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  4)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the
+**      future to be trusted.  See eraDat for further details.
+**
+**  5)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  6)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  7)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many
+**      applications, xp and yp can be set to zero.
+**
+**  8)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB), is
+**      available, an adequate estimate of hm can be obtained from the
+**      expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to
+**      the pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  9)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  10) The accuracy of the result is limited by the corrections for
+**      refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**      Providing the meteorological parameters are known accurately and
+**      there are no gross local effects, the predicted astrometric
+**      coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**      (radio) for a zenith distance of less than 70 degrees, better
+**      than 30 arcsec (optical or radio) at 85 degrees and better
+**      than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**      Without refraction, the complementary functions eraAtco13 and
+**      eraAtoc13 are self-consistent to better than 1 microarcsecond
+**      all over the celestial sphere.  With refraction included,
+**      consistency falls off at high zenith distances, but is still
+**      better than 0.05 arcsec at 85 degrees.
+**
+**  11) It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  Called:
+**     eraApco13    astrometry parameters, ICRS-observed
+**     eraAtoiq     quick observed to CIRS
+**     eraAticq     quick CIRS to ICRS
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   eraASTROM astrom;
+   double eo, ri, di;
+
+
+/* Star-independent astrometry parameters. */
+   j = eraApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom, &eo);
+
+/* Abort if bad UTC. */
+   if ( j < 0 ) return j;
+
+/* Transform observed to CIRS. */
+   eraAtoiq(type, ob1, ob2, &astrom, &ri, &di);
+
+/* Transform CIRS to ICRS. */
+   eraAticq(ri, di, &astrom, rc, dc);
+
+/* Return OK/warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atoi13.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atoi13.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atoi13.c	(revision 18732)
@@ -0,0 +1,228 @@
+#include "erfa.h"
+
+int eraAtoi13(const char *type, double ob1, double ob2,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *ri, double *di)
+/*
+**  - - - - - - - - - -
+**   e r a A t o i 1 3
+**  - - - - - - - - - -
+**
+**  Observed place to CIRS.  The caller supplies UTC, site coordinates,
+**  ambient air conditions and observing wavelength.
+**
+**  Given:
+**     type   char[]   type of coordinates - "R", "H" or "A" (Notes 1,2)
+**     ob1    double   observed Az, HA or RA (radians; Az is N=0,E=90)
+**     ob2    double   observed ZD or Dec (radians)
+**     utc1   double   UTC as a 2-part...
+**     utc2   double   ...quasi Julian Date (Notes 3,4)
+**     dut1   double   UT1-UTC (seconds, Note 5)
+**     elong  double   longitude (radians, east +ve, Note 6)
+**     phi    double   geodetic latitude (radians, Note 6)
+**     hm     double   height above the ellipsoid (meters, Notes 6,8)
+**     xp,yp  double   polar motion coordinates (radians, Note 7)
+**     phpa   double   pressure at the observer (hPa = mB, Note 8)
+**     tc     double   ambient temperature at the observer (deg C)
+**     rh     double   relative humidity at the observer (range 0-1)
+**     wl     double   wavelength (micrometers, Note 9)
+**
+**  Returned:
+**     ri     double*  CIRS right ascension (CIO-based, radians)
+**     di     double*  CIRS declination (radians)
+**
+**  Returned (function value):
+**            int      status: +1 = dubious year (Note 2)
+**                              0 = OK
+**                             -1 = unacceptable date
+**
+**  Notes:
+**
+**  1)  "Observed" Az,ZD means the position that would be seen by a
+**      perfect geodetically aligned theodolite.  (Zenith distance is
+**      used rather than altitude in order to reflect the fact that no
+**      allowance is made for depression of the horizon.)  This is
+**      related to the observed HA,Dec via the standard rotation, using
+**      the geodetic latitude (corrected for polar motion), while the
+**      observed HA and RA are related simply through the Earth rotation
+**      angle and the site longitude.  "Observed" RA,Dec or HA,Dec thus
+**      means the position that would be seen by a perfect equatorial
+**      with its polar axis aligned to the Earth's axis of rotation.
+**
+**  2)  Only the first character of the type argument is significant.
+**      "R" or "r" indicates that ob1 and ob2 are the observed right
+**      ascension and declination;  "H" or "h" indicates that they are
+**      hour angle (west +ve) and declination;  anything else ("A" or
+**      "a" is recommended) indicates that ob1 and ob2 are azimuth
+**      (north zero, east 90 deg) and zenith distance.
+**
+**  3)  utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**      convenient way between the two arguments, for example where utc1
+**      is the Julian Day Number and utc2 is the fraction of a day.
+**
+**      However, JD cannot unambiguously represent UTC during a leap
+**      second unless special measures are taken.  The convention in the
+**      present function is that the JD day represents UTC days whether
+**      the length is 86399, 86400 or 86401 SI seconds.
+**
+**      Applications should use the function eraDtf2d to convert from
+**      calendar date and time of day into 2-part quasi Julian Date, as
+**      it implements the leap-second-ambiguity convention just
+**      described.
+**
+**  4)  The warning status "dubious year" flags UTCs that predate the
+**      introduction of the time scale or that are too far in the
+**      future to be trusted.  See eraDat for further details.
+**
+**  5)  UT1-UTC is tabulated in IERS bulletins.  It increases by exactly
+**      one second at the end of each positive UTC leap second,
+**      introduced in order to keep UT1-UTC within +/- 0.9s.  n.b. This
+**      practice is under review, and in the future UT1-UTC may grow
+**      essentially without limit.
+**
+**  6)  The geographical coordinates are with respect to the ERFA_WGS84
+**      reference ellipsoid.  TAKE CARE WITH THE LONGITUDE SIGN:  the
+**      longitude required by the present function is east-positive
+**      (i.e. right-handed), in accordance with geographical convention.
+**
+**  7)  The polar motion xp,yp can be obtained from IERS bulletins.  The
+**      values are the coordinates (in radians) of the Celestial
+**      Intermediate Pole with respect to the International Terrestrial
+**      Reference System (see IERS Conventions 2003), measured along the
+**      meridians 0 and 90 deg west respectively.  For many
+**      applications, xp and yp can be set to zero.
+**
+**  8)  If hm, the height above the ellipsoid of the observing station
+**      in meters, is not known but phpa, the pressure in hPa (=mB), is
+**      available, an adequate estimate of hm can be obtained from the
+**      expression
+**
+**            hm = -29.3 * tsl * log ( phpa / 1013.25 );
+**
+**      where tsl is the approximate sea-level air temperature in K
+**      (See Astrophysical Quantities, C.W.Allen, 3rd edition, section
+**      52).  Similarly, if the pressure phpa is not known, it can be
+**      estimated from the height of the observing station, hm, as
+**      follows:
+**
+**            phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
+**
+**      Note, however, that the refraction is nearly proportional to
+**      the pressure and that an accurate phpa value is important for
+**      precise work.
+**
+**  9)  The argument wl specifies the observing wavelength in
+**      micrometers.  The transition from optical to radio is assumed to
+**      occur at 100 micrometers (about 3000 GHz).
+**
+**  10) The accuracy of the result is limited by the corrections for
+**      refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**      Providing the meteorological parameters are known accurately and
+**      there are no gross local effects, the predicted astrometric
+**      coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**      (radio) for a zenith distance of less than 70 degrees, better
+**      than 30 arcsec (optical or radio) at 85 degrees and better
+**      than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**      Without refraction, the complementary functions eraAtio13 and
+**      eraAtoi13 are self-consistent to better than 1 microarcsecond
+**      all over the celestial sphere.  With refraction included,
+**      consistency falls off at high zenith distances, but is still
+**      better than 0.05 arcsec at 85 degrees.
+**
+**  12) It is advisable to take great care with units, as even unlikely
+**      values of the input parameters are accepted and processed in
+**      accordance with the models used.
+**
+**  Called:
+**     eraApio13    astrometry parameters, CIRS-observed, 2013
+**     eraAtoiq     quick observed to CIRS
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   eraASTROM astrom;
+
+
+/* Star-independent astrometry parameters for CIRS->observed. */
+   j = eraApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom);
+
+/* Abort if bad UTC. */
+   if ( j < 0 ) return j;
+
+/* Transform observed to CIRS. */
+   eraAtoiq(type, ob1, ob2, &astrom, ri, di);
+
+/* Return OK/warning status. */
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/atoiq.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/atoiq.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/atoiq.c	(revision 18732)
@@ -0,0 +1,260 @@
+#include "erfa.h"
+
+void eraAtoiq(const char *type,
+              double ob1, double ob2, eraASTROM *astrom,
+              double *ri, double *di)
+/*
+**  - - - - - - - - -
+**   e r a A t o i q
+**  - - - - - - - - -
+**
+**  Quick observed place to CIRS, given the star-independent astrometry
+**  parameters.
+**
+**  Use of this function is appropriate when efficiency is important and
+**  where many star positions are all to be transformed for one date.
+**  The star-independent astrometry parameters can be obtained by
+**  calling eraApio[13] or eraApco[13].
+**
+**  Given:
+**     type   char[]     type of coordinates: "R", "H" or "A" (Note 1)
+**     ob1    double     observed Az, HA or RA (radians; Az is N=0,E=90)
+**     ob2    double     observed ZD or Dec (radians)
+**     astrom eraASTROM* star-independent astrometry parameters:
+**      pmt    double       PM time interval (SSB, Julian years)
+**      eb     double[3]    SSB to observer (vector, au)
+**      eh     double[3]    Sun to observer (unit vector)
+**      em     double       distance from Sun to observer (au)
+**      v      double[3]    barycentric observer velocity (vector, c)
+**      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
+**      bpn    double[3][3] bias-precession-nutation matrix
+**      along  double       longitude + s' (radians)
+**      xpl    double       polar motion xp wrt local meridian (radians)
+**      ypl    double       polar motion yp wrt local meridian (radians)
+**      sphi   double       sine of geodetic latitude
+**      cphi   double       cosine of geodetic latitude
+**      diurab double       magnitude of diurnal aberration vector
+**      eral   double       "local" Earth rotation angle (radians)
+**      refa   double       refraction constant A (radians)
+**      refb   double       refraction constant B (radians)
+**
+**  Returned:
+**     ri     double*    CIRS right ascension (CIO-based, radians)
+**     di     double*    CIRS declination (radians)
+**
+**  Notes:
+**
+**  1) "Observed" Az,El means the position that would be seen by a
+**     perfect geodetically aligned theodolite.  This is related to
+**     the observed HA,Dec via the standard rotation, using the geodetic
+**     latitude (corrected for polar motion), while the observed HA and
+**     RA are related simply through the Earth rotation angle and the
+**     site longitude.  "Observed" RA,Dec or HA,Dec thus means the
+**     position that would be seen by a perfect equatorial with its
+**     polar axis aligned to the Earth's axis of rotation.  By removing
+**     from the observed place the effects of atmospheric refraction and
+**     diurnal aberration, the CIRS RA,Dec is obtained.
+**
+**  2) Only the first character of the type argument is significant.
+**     "R" or "r" indicates that ob1 and ob2 are the observed right
+**     ascension and declination;  "H" or "h" indicates that they are
+**     hour angle (west +ve) and declination;  anything else ("A" or
+**     "a" is recommended) indicates that ob1 and ob2 are azimuth (north
+**     zero, east 90 deg) and zenith distance.  (Zenith distance is used
+**     rather than altitude in order to reflect the fact that no
+**     allowance is made for depression of the horizon.)
+**
+**  3) The accuracy of the result is limited by the corrections for
+**     refraction, which use a simple A*tan(z) + B*tan^3(z) model.
+**     Providing the meteorological parameters are known accurately and
+**     there are no gross local effects, the predicted observed
+**     coordinates should be within 0.05 arcsec (optical) or 1 arcsec
+**     (radio) for a zenith distance of less than 70 degrees, better
+**     than 30 arcsec (optical or radio) at 85 degrees and better than
+**     20 arcmin (optical) or 30 arcmin (radio) at the horizon.
+**
+**     Without refraction, the complementary functions eraAtioq and
+**     eraAtoiq are self-consistent to better than 1 microarcsecond all
+**     over the celestial sphere.  With refraction included, consistency
+**     falls off at high zenith distances, but is still better than
+**     0.05 arcsec at 85 degrees.
+**
+**  4) It is advisable to take great care with units, as even unlikely
+**     values of the input parameters are accepted and processed in
+**     accordance with the models used.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int c;
+   double c1, c2, sphi, cphi, ce, xaeo, yaeo, zaeo, v[3],
+          xmhdo, ymhdo, zmhdo, az, sz, zdo, refa, refb, tz, dref,
+          zdt, xaet, yaet, zaet, xmhda, ymhda, zmhda,
+          f, xhd, yhd, zhd, xpl, ypl, w, hma;
+
+
+/* Coordinate type. */
+   c = (int) type[0];
+
+/* Coordinates. */
+   c1 = ob1;
+   c2 = ob2;
+
+/* Sin, cos of latitude. */
+   sphi = astrom->sphi;
+   cphi = astrom->cphi;
+
+/* Standardize coordinate type. */
+   if ( c == 'r' || c == 'R' ) {
+      c = 'R';
+   } else if ( c == 'h' || c == 'H' ) {
+      c = 'H';
+   } else {
+      c = 'A';
+   }
+
+/* If Az,ZD, convert to Cartesian (S=0,E=90). */
+   if ( c == 'A' ) {
+      ce = sin(c2);
+      xaeo = - cos(c1) * ce;
+      yaeo = sin(c1) * ce;
+      zaeo = cos(c2);
+
+   } else {
+
+   /* If RA,Dec, convert to HA,Dec. */
+      if ( c == 'R' ) c1 = astrom->eral - c1;
+
+   /* To Cartesian -HA,Dec. */
+      eraS2c ( -c1, c2, v );
+      xmhdo = v[0];
+      ymhdo = v[1];
+      zmhdo = v[2];
+
+   /* To Cartesian Az,El (S=0,E=90). */
+      xaeo = sphi*xmhdo - cphi*zmhdo;
+      yaeo = ymhdo;
+      zaeo = cphi*xmhdo + sphi*zmhdo;
+   }
+
+/* Azimuth (S=0,E=90). */
+   az = ( xaeo != 0.0 || yaeo != 0.0 ) ? atan2(yaeo,xaeo) : 0.0;
+
+/* Sine of observed ZD, and observed ZD. */
+   sz = sqrt ( xaeo*xaeo + yaeo*yaeo );
+   zdo = atan2 ( sz, zaeo );
+
+/*
+** Refraction
+** ----------
+*/
+
+/* Fast algorithm using two constant model. */
+   refa = astrom->refa;
+   refb = astrom->refb;
+   tz = sz / zaeo;
+   dref = ( refa + refb*tz*tz ) * tz;
+   zdt = zdo + dref;
+
+/* To Cartesian Az,ZD. */
+   ce = sin(zdt);
+   xaet = cos(az) * ce;
+   yaet = sin(az) * ce;
+   zaet = cos(zdt);
+
+/* Cartesian Az,ZD to Cartesian -HA,Dec. */
+   xmhda = sphi*xaet + cphi*zaet;
+   ymhda = yaet;
+   zmhda = - cphi*xaet + sphi*zaet;
+
+/* Diurnal aberration. */
+   f = ( 1.0 + astrom->diurab*ymhda );
+   xhd = f * xmhda;
+   yhd = f * ( ymhda - astrom->diurab );
+   zhd = f * zmhda;
+
+/* Polar motion. */
+   xpl = astrom->xpl;
+   ypl = astrom->ypl;
+   w = xpl*xhd - ypl*yhd + zhd;
+   v[0] = xhd - xpl*w;
+   v[1] = yhd + ypl*w;
+   v[2] = w - ( xpl*xpl + ypl*ypl ) * zhd;
+
+/* To spherical -HA,Dec. */
+   eraC2s(v, &hma, di);
+
+/* Right ascension. */
+   *ri = eraAnp(astrom->eral + hma);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/bi00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/bi00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/bi00.c	(revision 18732)
@@ -0,0 +1,125 @@
+#include "erfa.h"
+
+void eraBi00(double *dpsibi, double *depsbi, double *dra)
+/*
+**  - - - - - - - -
+**   e r a B i 0 0
+**  - - - - - - - -
+**
+**  Frame bias components of IAU 2000 precession-nutation models (part
+**  of MHB2000 with additions).
+**
+**  Returned:
+**     dpsibi,depsbi  double  longitude and obliquity corrections
+**     dra            double  the ICRS RA of the J2000.0 mean equinox
+**
+**  Notes:
+**
+**  1) The frame bias corrections in longitude and obliquity (radians)
+**     are required in order to correct for the offset between the GCRS
+**     pole and the mean J2000.0 pole.  They define, with respect to the
+**     GCRS frame, a J2000.0 mean pole that is consistent with the rest
+**     of the IAU 2000A precession-nutation model.
+**
+**  2) In addition to the displacement of the pole, the complete
+**     description of the frame bias requires also an offset in right
+**     ascension.  This is not part of the IAU 2000A model, and is from
+**     Chapront et al. (2002).  It is returned in radians.
+**
+**  3) This is a supplemented implementation of one aspect of the IAU
+**     2000A nutation model, formally adopted by the IAU General
+**     Assembly in 2000, namely MHB2000 (Mathews et al. 2002).
+**
+**  References:
+**
+**     Chapront, J., Chapront-Touze, M. & Francou, G., Astron.
+**     Astrophys., 387, 700, 2002.
+**
+**     Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation
+**     and precession   New nutation series for nonrigid Earth and
+**     insights into the Earth's interior", J.Geophys.Res., 107, B4,
+**     2002.  The MHB2000 code itself was obtained on 9th September 2002
+**     from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* The frame bias corrections in longitude and obliquity */
+   const double DPBIAS = -0.041775  * ERFA_DAS2R,
+                DEBIAS = -0.0068192 * ERFA_DAS2R;
+
+/* The ICRS RA of the J2000.0 equinox (Chapront et al., 2002) */
+   const double DRA0 = -0.0146 * ERFA_DAS2R;
+
+
+/* Return the results (which are fixed). */
+   *dpsibi = DPBIAS;
+   *depsbi = DEBIAS;
+   *dra = DRA0;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/bp00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/bp00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/bp00.c	(revision 18732)
@@ -0,0 +1,181 @@
+#include "erfa.h"
+
+void eraBp00(double date1, double date2,
+             double rb[3][3], double rp[3][3], double rbp[3][3])
+/*
+**  - - - - - - - -
+**   e r a B p 0 0
+**  - - - - - - - -
+**
+**  Frame bias and precession, IAU 2000.
+**
+**  Given:
+**     date1,date2  double         TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rb           double[3][3]   frame bias matrix (Note 2)
+**     rp           double[3][3]   precession matrix (Note 3)
+**     rbp          double[3][3]   bias-precession matrix (Note 4)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**             date1         date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rb transforms vectors from GCRS to mean J2000.0 by
+**     applying frame bias.
+**
+**  3) The matrix rp transforms vectors from J2000.0 mean equator and
+**     equinox to mean equator and equinox of date by applying
+**     precession.
+**
+**  4) The matrix rbp transforms vectors from GCRS to mean equator and
+**     equinox of date by applying frame bias then precession.  It is
+**     the product rp x rb.
+**
+**  5) It is permissible to re-use the same array in the returned
+**     arguments.  The arrays are filled in the order given.
+**
+**  Called:
+**     eraBi00      frame bias components, IAU 2000
+**     eraPr00      IAU 2000 precession adjustments
+**     eraIr        initialize r-matrix to identity
+**     eraRx        rotate around X-axis
+**     eraRy        rotate around Y-axis
+**     eraRz        rotate around Z-axis
+**     eraCr        copy r-matrix
+**     eraRxr       product of two r-matrices
+**
+**  Reference:
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* J2000.0 obliquity (Lieske et al. 1977) */
+   const double EPS0 = 84381.448 * ERFA_DAS2R;
+
+   double t, dpsibi, depsbi, dra0, psia77, oma77, chia,
+          dpsipr, depspr, psia, oma, rbw[3][3];
+
+
+/* Interval between fundamental epoch J2000.0 and current date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Frame bias. */
+   eraBi00(&dpsibi, &depsbi, &dra0);
+
+/* Precession angles (Lieske et al. 1977) */
+   psia77 = (5038.7784 + (-1.07259 + (-0.001147) * t) * t) * t * ERFA_DAS2R;
+   oma77  =       EPS0 + ((0.05127 + (-0.007726) * t) * t) * t * ERFA_DAS2R;
+   chia   = (  10.5526 + (-2.38064 + (-0.001125) * t) * t) * t * ERFA_DAS2R;
+
+/* Apply IAU 2000 precession corrections. */
+   eraPr00(date1, date2, &dpsipr, &depspr);
+   psia = psia77 + dpsipr;
+   oma  = oma77  + depspr;
+
+/* Frame bias matrix: GCRS to J2000.0. */
+   eraIr(rbw);
+   eraRz(dra0, rbw);
+   eraRy(dpsibi*sin(EPS0), rbw);
+   eraRx(-depsbi, rbw);
+   eraCr(rbw, rb);
+
+/* Precession matrix: J2000.0 to mean of date. */
+   eraIr(rp);
+   eraRx(EPS0, rp);
+   eraRz(-psia, rp);
+   eraRx(-oma, rp);
+   eraRz(chia, rp);
+
+/* Bias-precession matrix: GCRS to mean of date. */
+   eraRxr(rp, rbw, rbp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/bp06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/bp06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/bp06.c	(revision 18732)
@@ -0,0 +1,152 @@
+#include "erfa.h"
+
+void eraBp06(double date1, double date2,
+             double rb[3][3], double rp[3][3], double rbp[3][3])
+/*
+**  - - - - - - - -
+**   e r a B p 0 6
+**  - - - - - - - -
+**
+**  Frame bias and precession, IAU 2006.
+**
+**  Given:
+**     date1,date2  double         TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rb           double[3][3]   frame bias matrix (Note 2)
+**     rp           double[3][3]   precession matrix (Note 3)
+**     rbp          double[3][3]   bias-precession matrix (Note 4)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**             date1         date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rb transforms vectors from GCRS to mean J2000.0 by
+**     applying frame bias.
+**
+**  3) The matrix rp transforms vectors from mean J2000.0 to mean of
+**     date by applying precession.
+**
+**  4) The matrix rbp transforms vectors from GCRS to mean of date by
+**     applying frame bias then precession.  It is the product rp x rb.
+**
+**  5) It is permissible to re-use the same array in the returned
+**     arguments.  The arrays are filled in the order given.
+**
+**  Called:
+**     eraPfw06     bias-precession F-W angles, IAU 2006
+**     eraFw2m      F-W angles to r-matrix
+**     eraPmat06    PB matrix, IAU 2006
+**     eraTr        transpose r-matrix
+**     eraRxr       product of two r-matrices
+**     eraCr        copy r-matrix
+**
+**  References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gamb, phib, psib, epsa, rbpw[3][3], rbt[3][3];
+
+
+/* B matrix. */
+   eraPfw06(ERFA_DJM0, ERFA_DJM00, &gamb, &phib, &psib, &epsa);
+   eraFw2m(gamb, phib, psib, epsa, rb);
+
+/* PxB matrix (temporary). */
+   eraPmat06(date1, date2, rbpw);
+
+/* P matrix. */
+   eraTr(rb, rbt);
+   eraRxr(rbpw, rbt, rp);
+
+/* PxB matrix. */
+   eraCr(rbpw, rbp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/bpn2xy.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/bpn2xy.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/bpn2xy.c	(revision 18732)
@@ -0,0 +1,109 @@
+#include "erfa.h"
+
+void eraBpn2xy(double rbpn[3][3], double *x, double *y)
+/*
+**  - - - - - - - - - -
+**   e r a B p n 2 x y
+**  - - - - - - - - - -
+**
+**  Extract from the bias-precession-nutation matrix the X,Y coordinates
+**  of the Celestial Intermediate Pole.
+**
+**  Given:
+**     rbpn      double[3][3]  celestial-to-true matrix (Note 1)
+**
+**  Returned:
+**     x,y       double        Celestial Intermediate Pole (Note 2)
+**
+**  Notes:
+**
+**  1) The matrix rbpn transforms vectors from GCRS to true equator (and
+**     CIO or equinox) of date, and therefore the Celestial Intermediate
+**     Pole unit vector is the bottom row of the matrix.
+**
+**  2) The arguments x,y are components of the Celestial Intermediate
+**     Pole unit vector in the Geocentric Celestial Reference System.
+**
+**  Reference:
+**
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154
+**     (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Extract the X,Y coordinates. */
+   *x = rbpn[2][0];
+   *y = rbpn[2][1];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2i00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2i00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2i00a.c	(revision 18732)
@@ -0,0 +1,148 @@
+#include "erfa.h"
+
+void eraC2i00a(double date1, double date2, double rc2i[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 i 0 0 a
+**  - - - - - - - - - -
+**
+**  Form the celestial-to-intermediate matrix for a given date using the
+**  IAU 2000A precession-nutation model.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rc2i        double[3][3] celestial-to-intermediate matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS]  =  RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**               =  rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  3) A faster, but slightly less accurate result (about 1 mas), can be
+**     obtained by using instead the eraC2i00b function.
+**
+**  Called:
+**     eraPnm00a    classical NPB matrix, IAU 2000A
+**     eraC2ibpn    celestial-to-intermediate matrix, given NPB matrix
+**
+**  References:
+**
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154
+**     (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3];
+
+
+/* Obtain the celestial-to-true matrix (IAU 2000A). */
+   eraPnm00a(date1, date2, rbpn);
+
+/* Form the celestial-to-intermediate matrix. */
+   eraC2ibpn(date1, date2, rbpn, rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2i00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2i00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2i00b.c	(revision 18732)
@@ -0,0 +1,148 @@
+#include "erfa.h"
+
+void eraC2i00b(double date1, double date2, double rc2i[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 i 0 0 b
+**  - - - - - - - - - -
+**
+**  Form the celestial-to-intermediate matrix for a given date using the
+**  IAU 2000B precession-nutation model.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rc2i        double[3][3] celestial-to-intermediate matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS]  =  RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**               =  rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  3) The present function is faster, but slightly less accurate (about
+**     1 mas), than the eraC2i00a function.
+**
+**  Called:
+**     eraPnm00b    classical NPB matrix, IAU 2000B
+**     eraC2ibpn    celestial-to-intermediate matrix, given NPB matrix
+**
+**  References:
+**
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154
+**     (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3];
+
+
+/* Obtain the celestial-to-true matrix (IAU 2000B). */
+   eraPnm00b(date1, date2, rbpn);
+
+/* Form the celestial-to-intermediate matrix. */
+   eraC2ibpn(date1, date2, rbpn, rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2i06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2i06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2i06a.c	(revision 18732)
@@ -0,0 +1,145 @@
+#include "erfa.h"
+
+void eraC2i06a(double date1, double date2, double rc2i[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 i 0 6 a
+**  - - - - - - - - - -
+**
+**  Form the celestial-to-intermediate matrix for a given date using the
+**  IAU 2006 precession and IAU 2000A nutation models.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rc2i        double[3][3] celestial-to-intermediate matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS]  =  RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**               =  RC2T * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  Called:
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**     eraC2ixys    celestial-to-intermediate matrix, given X,Y and s
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3], x, y, s;
+
+
+/* Obtain the celestial-to-true matrix (IAU 2006/2000A). */
+   eraPnm06a(date1, date2, rbpn);
+
+/* Extract the X,Y coordinates. */
+   eraBpn2xy(rbpn, &x, &y);
+
+/* Obtain the CIO locator. */
+   s = eraS06(date1, date2, x, y);
+
+/* Form the celestial-to-intermediate matrix. */
+   eraC2ixys(x, y, s, rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2ibpn.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2ibpn.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2ibpn.c	(revision 18732)
@@ -0,0 +1,151 @@
+#include "erfa.h"
+
+void eraC2ibpn(double date1, double date2, double rbpn[3][3],
+               double rc2i[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 i b p n
+**  - - - - - - - - - -
+**
+**  Form the celestial-to-intermediate matrix for a given date given
+**  the bias-precession-nutation matrix.  IAU 2000.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**     rbpn        double[3][3] celestial-to-true matrix (Note 2)
+**
+**  Returned:
+**     rc2i        double[3][3] celestial-to-intermediate matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix rbpn transforms vectors from GCRS to true equator (and
+**     CIO or equinox) of date.  Only the CIP (bottom row) is used.
+**
+**  3) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**              = RC2T * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  4) Although its name does not include "00", This function is in fact
+**     specific to the IAU 2000 models.
+**
+**  Called:
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraC2ixy     celestial-to-intermediate matrix, given X,Y
+**
+**  References:
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y;
+
+
+/* Extract the X,Y coordinates. */
+   eraBpn2xy(rbpn, &x, &y);
+
+/* Form the celestial-to-intermediate matrix (n.b. IAU 2000 specific). */
+   eraC2ixy(date1, date2, x, y, rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2ixy.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2ixy.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2ixy.c	(revision 18732)
@@ -0,0 +1,140 @@
+#include "erfa.h"
+
+void eraC2ixy(double date1, double date2, double x, double y,
+              double rc2i[3][3])
+/*
+**  - - - - - - - - -
+**   e r a C 2 i x y
+**  - - - - - - - - -
+**
+**  Form the celestial to intermediate-frame-of-date matrix for a given
+**  date when the CIP X,Y coordinates are known.  IAU 2000.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**     x,y         double       Celestial Intermediate Pole (Note 2)
+**
+**  Returned:
+**     rc2i        double[3][3] celestial-to-intermediate matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The Celestial Intermediate Pole coordinates are the x,y components
+**     of the unit vector in the Geocentric Celestial Reference System.
+**
+**  3) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**              = RC2T * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  4) Although its name does not include "00", This function is in fact
+**     specific to the IAU 2000 models.
+**
+**  Called:
+**     eraC2ixys    celestial-to-intermediate matrix, given X,Y and s
+**     eraS00       the CIO locator s, given X,Y, IAU 2000A
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+
+{
+/* Compute s and then the matrix. */
+   eraC2ixys(x, y, eraS00(date1, date2, x, y), rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2ixys.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2ixys.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2ixys.c	(revision 18732)
@@ -0,0 +1,132 @@
+#include "erfa.h"
+
+void eraC2ixys(double x, double y, double s, double rc2i[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 i x y s
+**  - - - - - - - - - -
+**
+**  Form the celestial to intermediate-frame-of-date matrix given the CIP
+**  X,Y and the CIO locator s.
+**
+**  Given:
+**     x,y      double         Celestial Intermediate Pole (Note 1)
+**     s        double         the CIO locator s (Note 2)
+**
+**  Returned:
+**     rc2i     double[3][3]   celestial-to-intermediate matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The Celestial Intermediate Pole coordinates are the x,y
+**     components of the unit vector in the Geocentric Celestial
+**     Reference System.
+**
+**  2) The CIO locator s (in radians) positions the Celestial
+**     Intermediate Origin on the equator of the CIP.
+**
+**  3) The matrix rc2i is the first stage in the transformation from
+**     celestial to terrestrial coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**              = RC2T * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  Called:
+**     eraIr        initialize r-matrix to identity
+**     eraRz        rotate around Z-axis
+**     eraRy        rotate around Y-axis
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r2, e, d;
+
+
+/* Obtain the spherical angles E and d. */
+   r2 = x*x + y*y;
+   e = (r2 > 0.0) ? atan2(y, x) : 0.0;
+   d = atan(sqrt(r2 / (1.0 - r2)));
+
+/* Form the matrix. */
+   eraIr(rc2i);
+   eraRz(e, rc2i);
+   eraRy(d, rc2i);
+   eraRz(-(e+s), rc2i);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2s.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2s.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2s.c	(revision 18732)
@@ -0,0 +1,105 @@
+#include "erfa.h"
+
+void eraC2s(double p[3], double *theta, double *phi)
+/*
+**  - - - - - - -
+**   e r a C 2 s
+**  - - - - - - -
+**
+**  P-vector to spherical coordinates.
+**
+**  Given:
+**     p      double[3]    p-vector
+**
+**  Returned:
+**     theta  double       longitude angle (radians)
+**     phi    double       latitude angle (radians)
+**
+**  Notes:
+**
+**  1) The vector p can have any magnitude; only its direction is used.
+**
+**  2) If p is null, zero theta and phi are returned.
+**
+**  3) At either pole, zero theta is returned.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y, z, d2;
+
+
+   x  = p[0];
+   y  = p[1];
+   z  = p[2];
+   d2 = x*x + y*y;
+
+   *theta = (d2 == 0.0) ? 0.0 : atan2(y, x);
+   *phi = (z == 0.0) ? 0.0 : atan2(z, sqrt(d2));
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2t00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2t00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2t00a.c	(revision 18732)
@@ -0,0 +1,163 @@
+#include "erfa.h"
+
+void eraC2t00a(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 t 0 0 a
+**  - - - - - - - - - -
+**
+**  Form the celestial to terrestrial matrix given the date, the UT1 and
+**  the polar motion, using the IAU 2000A nutation model.
+**
+**  Given:
+**     tta,ttb  double         TT as a 2-part Julian Date (Note 1)
+**     uta,utb  double         UT1 as a 2-part Julian Date (Note 1)
+**     xp,yp    double         coordinates of the pole (radians, Note 2)
+**
+**  Returned:
+**     rc2t     double[3][3]   celestial-to-terrestrial matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
+**     apportioned in any convenient way between the arguments uta and
+**     utb.  For example, JD(UT1)=2450123.7 could be expressed in any of
+**     these ways, among others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  In the case of uta,utb, the
+**     date & time method is best matched to the Earth rotation angle
+**     algorithm used:  maximum precision is delivered when the uta
+**     argument is for 0hrs UT1 on the day in question and the utb
+**     argument lies in the range 0 to 1, or vice versa.
+**
+**  2) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  3) The matrix rc2t transforms from celestial to terrestrial
+**     coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), RC2I is the
+**     celestial-to-intermediate matrix, ERA is the Earth rotation
+**     angle and RPOM is the polar motion matrix.
+**
+**  4) A faster, but slightly less accurate result (about 1 mas), can
+**     be obtained by using instead the eraC2t00b function.
+**
+**  Called:
+**     eraC2i00a    celestial-to-intermediate matrix, IAU 2000A
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraPom00     polar motion matrix
+**     eraC2tcio    form CIO-based celestial-to-terrestrial matrix
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rc2i[3][3], era, sp, rpom[3][3];
+
+
+/* Form the celestial-to-intermediate matrix for this TT (IAU 2000A). */
+   eraC2i00a(tta, ttb, rc2i );
+
+/* Predict the Earth rotation angle for this UT1. */
+   era = eraEra00(uta, utb);
+
+/* Estimate s'. */
+   sp = eraSp00(tta, ttb);
+
+/* Form the polar motion matrix. */
+   eraPom00(xp, yp, sp, rpom);
+
+/* Combine to form the celestial-to-terrestrial matrix. */
+   eraC2tcio(rc2i, era, rpom, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2t00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2t00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2t00b.c	(revision 18732)
@@ -0,0 +1,159 @@
+#include "erfa.h"
+
+void eraC2t00b(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 t 0 0 b
+**  - - - - - - - - - -
+**
+**  Form the celestial to terrestrial matrix given the date, the UT1 and
+**  the polar motion, using the IAU 2000B nutation model.
+**
+**  Given:
+**     tta,ttb  double         TT as a 2-part Julian Date (Note 1)
+**     uta,utb  double         UT1 as a 2-part Julian Date (Note 1)
+**     xp,yp    double         coordinates of the pole (radians, Note 2)
+**
+**  Returned:
+**     rc2t     double[3][3]   celestial-to-terrestrial matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
+**     apportioned in any convenient way between the arguments uta and
+**     utb.  For example, JD(UT1)=2450123.7 could be expressed in any of
+**     these ways, among others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  In the case of uta,utb, the
+**     date & time method is best matched to the Earth rotation angle
+**     algorithm used:  maximum precision is delivered when the uta
+**     argument is for 0hrs UT1 on the day in question and the utb
+**     argument lies in the range 0 to 1, or vice versa.
+**
+**  2) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  3) The matrix rc2t transforms from celestial to terrestrial
+**     coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), RC2I is the
+**     celestial-to-intermediate matrix, ERA is the Earth rotation
+**     angle and RPOM is the polar motion matrix.
+**
+**  4) The present function is faster, but slightly less accurate (about
+**     1 mas), than the eraC2t00a function.
+**
+**  Called:
+**     eraC2i00b    celestial-to-intermediate matrix, IAU 2000B
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraPom00     polar motion matrix
+**     eraC2tcio    form CIO-based celestial-to-terrestrial matrix
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rc2i[3][3], era, rpom[3][3];
+
+
+/* Form the celestial-to-intermediate matrix for this TT (IAU 2000B). */
+   eraC2i00b(tta, ttb, rc2i);
+
+/* Predict the Earth rotation angle for this UT1. */
+   era = eraEra00(uta, utb);
+
+/* Form the polar motion matrix (neglecting s'). */
+   eraPom00(xp, yp, 0.0, rpom);
+
+/* Combine to form the celestial-to-terrestrial matrix. */
+   eraC2tcio(rc2i, era, rpom, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2t06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2t06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2t06a.c	(revision 18732)
@@ -0,0 +1,161 @@
+#include "erfa.h"
+
+void eraC2t06a(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 t 0 6 a
+**  - - - - - - - - - -
+**
+**  Form the celestial to terrestrial matrix given the date, the UT1 and
+**  the polar motion, using the IAU 2006 precession and IAU 2000A
+**  nutation models.
+**
+**  Given:
+**     tta,ttb  double         TT as a 2-part Julian Date (Note 1)
+**     uta,utb  double         UT1 as a 2-part Julian Date (Note 1)
+**     xp,yp    double         coordinates of the pole (radians, Note 2)
+**
+**  Returned:
+**     rc2t     double[3][3]   celestial-to-terrestrial matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
+**     apportioned in any convenient way between the arguments uta and
+**     utb.  For example, JD(UT1)=2450123.7 could be expressed in any of
+**     these ways, among others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  In the case of uta,utb, the
+**     date & time method is best matched to the Earth rotation angle
+**     algorithm used:  maximum precision is delivered when the uta
+**     argument is for 0hrs UT1 on the day in question and the utb
+**     argument lies in the range 0 to 1, or vice versa.
+**
+**  2) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  3) The matrix rc2t transforms from celestial to terrestrial
+**     coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), RC2I is the
+**     celestial-to-intermediate matrix, ERA is the Earth rotation
+**     angle and RPOM is the polar motion matrix.
+**
+**  Called:
+**     eraC2i06a    celestial-to-intermediate matrix, IAU 2006/2000A
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraPom00     polar motion matrix
+**     eraC2tcio    form CIO-based celestial-to-terrestrial matrix
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rc2i[3][3], era, sp, rpom[3][3];
+
+
+/* Form the celestial-to-intermediate matrix for this TT. */
+   eraC2i06a(tta, ttb, rc2i);
+
+/* Predict the Earth rotation angle for this UT1. */
+   era = eraEra00(uta, utb);
+
+/* Estimate s'. */
+   sp = eraSp00(tta, ttb);
+
+/* Form the polar motion matrix. */
+   eraPom00(xp, yp, sp, rpom);
+
+/* Combine to form the celestial-to-terrestrial matrix. */
+   eraC2tcio(rc2i, era, rpom, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2tcio.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2tcio.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2tcio.c	(revision 18732)
@@ -0,0 +1,131 @@
+#include "erfa.h"
+
+void eraC2tcio(double rc2i[3][3], double era, double rpom[3][3],
+               double rc2t[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 t c i o
+**  - - - - - - - - - -
+**
+**  Assemble the celestial to terrestrial matrix from CIO-based
+**  components (the celestial-to-intermediate matrix, the Earth Rotation
+**  Angle and the polar motion matrix).
+**
+**  Given:
+**     rc2i     double[3][3]    celestial-to-intermediate matrix
+**     era      double          Earth rotation angle (radians)
+**     rpom     double[3][3]    polar-motion matrix
+**
+**  Returned:
+**     rc2t     double[3][3]    celestial-to-terrestrial matrix
+**
+**  Notes:
+**
+**  1) This function constructs the rotation matrix that transforms
+**     vectors in the celestial system into vectors in the terrestrial
+**     system.  It does so starting from precomputed components, namely
+**     the matrix which rotates from celestial coordinates to the
+**     intermediate frame, the Earth rotation angle and the polar motion
+**     matrix.  One use of the present function is when generating a
+**     series of celestial-to-terrestrial matrices where only the Earth
+**     Rotation Angle changes, avoiding the considerable overhead of
+**     recomputing the precession-nutation more often than necessary to
+**     achieve given accuracy objectives.
+**
+**  2) The relationship between the arguments is as follows:
+**
+**        [TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003).
+**
+**  Called:
+**     eraCr        copy r-matrix
+**     eraRz        rotate around Z-axis
+**     eraRxr       product of two r-matrices
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r[3][3];
+
+
+/* Construct the matrix. */
+   eraCr(rc2i, r);
+   eraRz(era, r);
+   eraRxr(rpom, r, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2teqx.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2teqx.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2teqx.c	(revision 18732)
@@ -0,0 +1,131 @@
+#include "erfa.h"
+
+void eraC2teqx(double rbpn[3][3], double gst, double rpom[3][3],
+               double rc2t[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a C 2 t e q x
+**  - - - - - - - - - -
+**
+**  Assemble the celestial to terrestrial matrix from equinox-based
+**  components (the celestial-to-true matrix, the Greenwich Apparent
+**  Sidereal Time and the polar motion matrix).
+**
+**  Given:
+**     rbpn   double[3][3]  celestial-to-true matrix
+**     gst    double        Greenwich (apparent) Sidereal Time (radians)
+**     rpom   double[3][3]  polar-motion matrix
+**
+**  Returned:
+**     rc2t   double[3][3]  celestial-to-terrestrial matrix (Note 2)
+**
+**  Notes:
+**
+**  1) This function constructs the rotation matrix that transforms
+**     vectors in the celestial system into vectors in the terrestrial
+**     system.  It does so starting from precomputed components, namely
+**     the matrix which rotates from celestial coordinates to the
+**     true equator and equinox of date, the Greenwich Apparent Sidereal
+**     Time and the polar motion matrix.  One use of the present function
+**     is when generating a series of celestial-to-terrestrial matrices
+**     where only the Sidereal Time changes, avoiding the considerable
+**     overhead of recomputing the precession-nutation more often than
+**     necessary to achieve given accuracy objectives.
+**
+**  2) The relationship between the arguments is as follows:
+**
+**        [TRS] = rpom * R_3(gst) * rbpn * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003).
+**
+**  Called:
+**     eraCr        copy r-matrix
+**     eraRz        rotate around Z-axis
+**     eraRxr       product of two r-matrices
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r[3][3];
+
+
+/* Construct the matrix. */
+   eraCr(rbpn, r);
+   eraRz(gst, r);
+   eraRxr(rpom, r, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2tpe.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2tpe.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2tpe.c	(revision 18732)
@@ -0,0 +1,176 @@
+#include "erfa.h"
+
+void eraC2tpe(double tta, double ttb, double uta, double utb,
+              double dpsi, double deps, double xp, double yp,
+              double rc2t[3][3])
+/*
+**  - - - - - - - - -
+**   e r a C 2 t p e
+**  - - - - - - - - -
+**
+**  Form the celestial to terrestrial matrix given the date, the UT1,
+**  the nutation and the polar motion.  IAU 2000.
+**
+**  Given:
+**     tta,ttb    double        TT as a 2-part Julian Date (Note 1)
+**     uta,utb    double        UT1 as a 2-part Julian Date (Note 1)
+**     dpsi,deps  double        nutation (Note 2)
+**     xp,yp      double        coordinates of the pole (radians, Note 3)
+**
+**  Returned:
+**     rc2t       double[3][3]  celestial-to-terrestrial matrix (Note 4)
+**
+**  Notes:
+**
+**  1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
+**     apportioned in any convenient way between the arguments uta and
+**     utb.  For example, JD(UT1)=2450123.7 could be expressed in any of
+**     these ways, among others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  In the case of uta,utb, the
+**     date & time method is best matched to the Earth rotation angle
+**     algorithm used:  maximum precision is delivered when the uta
+**     argument is for 0hrs UT1 on the day in question and the utb
+**     argument lies in the range 0 to 1, or vice versa.
+**
+**  2) The caller is responsible for providing the nutation components;
+**     they are in longitude and obliquity, in radians and are with
+**     respect to the equinox and ecliptic of date.  For high-accuracy
+**     applications, free core nutation should be included as well as
+**     any other relevant corrections to the position of the CIP.
+**
+**  3) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  4) The matrix rc2t transforms from celestial to terrestrial
+**     coordinates:
+**
+**        [TRS] = RPOM * R_3(GST) * RBPN * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), RBPN is the
+**     bias-precession-nutation matrix, GST is the Greenwich (apparent)
+**     Sidereal Time and RPOM is the polar motion matrix.
+**
+**  5) Although its name does not include "00", This function is in fact
+**     specific to the IAU 2000 models.
+**
+**  Called:
+**     eraPn00      bias/precession/nutation results, IAU 2000
+**     eraGmst00    Greenwich mean sidereal time, IAU 2000
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraEe00      equation of the equinoxes, IAU 2000
+**     eraPom00     polar motion matrix
+**     eraC2teqx    form equinox-based celestial-to-terrestrial matrix
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3],
+          rbpn[3][3], gmst, ee, sp, rpom[3][3];
+
+
+/* Form the celestial-to-true matrix for this TT. */
+   eraPn00(tta, ttb, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn);
+
+/* Predict the Greenwich Mean Sidereal Time for this UT1 and TT. */
+   gmst = eraGmst00(uta, utb, tta, ttb);
+
+/* Predict the equation of the equinoxes given TT and nutation. */
+   ee = eraEe00(tta, ttb, epsa, dpsi);
+
+/* Estimate s'. */
+   sp = eraSp00(tta, ttb);
+
+/* Form the polar motion matrix. */
+   eraPom00(xp, yp, sp, rpom);
+
+/* Combine to form the celestial-to-terrestrial matrix. */
+   eraC2teqx(rbpn, gmst + ee, rpom, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/c2txy.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/c2txy.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/c2txy.c	(revision 18732)
@@ -0,0 +1,168 @@
+#include "erfa.h"
+
+void eraC2txy(double tta, double ttb, double uta, double utb,
+              double x, double y, double xp, double yp,
+              double rc2t[3][3])
+/*
+**  - - - - - - - - -
+**   e r a C 2 t x y
+**  - - - - - - - - -
+**
+**  Form the celestial to terrestrial matrix given the date, the UT1,
+**  the CIP coordinates and the polar motion.  IAU 2000.
+**
+**  Given:
+**     tta,ttb  double         TT as a 2-part Julian Date (Note 1)
+**     uta,utb  double         UT1 as a 2-part Julian Date (Note 1)
+**     x,y      double         Celestial Intermediate Pole (Note 2)
+**     xp,yp    double         coordinates of the pole (radians, Note 3)
+**
+**  Returned:
+**     rc2t     double[3][3]   celestial-to-terrestrial matrix (Note 4)
+**
+**  Notes:
+**
+**  1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
+**     apportioned in any convenient way between the arguments uta and
+**     utb.  For example, JD(UT1)=2450123.7 could be expressed in any o
+**     these ways, among others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  In the case of uta,utb, the
+**     date & time method is best matched to the Earth rotation angle
+**     algorithm used:  maximum precision is delivered when the uta
+**     argument is for 0hrs UT1 on the day in question and the utb
+**     argument lies in the range 0 to 1, or vice versa.
+**
+**  2) The Celestial Intermediate Pole coordinates are the x,y
+**     components of the unit vector in the Geocentric Celestial
+**     Reference System.
+**
+**  3) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  4) The matrix rc2t transforms from celestial to terrestrial
+**     coordinates:
+**
+**        [TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
+**
+**              = rc2t * [CRS]
+**
+**     where [CRS] is a vector in the Geocentric Celestial Reference
+**     System and [TRS] is a vector in the International Terrestrial
+**     Reference System (see IERS Conventions 2003), ERA is the Earth
+**     Rotation Angle and RPOM is the polar motion matrix.
+**
+**  5) Although its name does not include "00", This function is in fact
+**     specific to the IAU 2000 models.
+**
+**  Called:
+**     eraC2ixy     celestial-to-intermediate matrix, given X,Y
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraSp00      the TIO locator s', IERS 2000
+**     eraPom00     polar motion matrix
+**     eraC2tcio    form CIO-based celestial-to-terrestrial matrix
+**
+** Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rc2i[3][3], era, sp, rpom[3][3];
+
+
+/* Form the celestial-to-intermediate matrix for this TT. */
+   eraC2ixy(tta, ttb, x, y, rc2i);
+
+/* Predict the Earth rotation angle for this UT1. */
+   era = eraEra00(uta, utb);
+
+/* Estimate s'. */
+   sp = eraSp00(tta, ttb);
+
+/* Form the polar motion matrix. */
+   eraPom00(xp, yp, sp, rpom);
+
+/* Combine to form the celestial-to-terrestrial matrix. */
+   eraC2tcio(rc2i, era, rpom, rc2t);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/cal2jd.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/cal2jd.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/cal2jd.c	(revision 18732)
@@ -0,0 +1,148 @@
+#include "erfa.h"
+
+int eraCal2jd(int iy, int im, int id, double *djm0, double *djm)
+/*
+**  - - - - - - - - - -
+**   e r a C a l 2 j d
+**  - - - - - - - - - -
+**
+**  Gregorian Calendar to Julian Date.
+**
+**  Given:
+**     iy,im,id  int     year, month, day in Gregorian calendar (Note 1)
+**
+**  Returned:
+**     djm0      double  MJD zero-point: always 2400000.5
+**     djm       double  Modified Julian Date for 0 hrs
+**
+**  Returned (function value):
+**               int     status:
+**                           0 = OK
+**                          -1 = bad year   (Note 3: JD not computed)
+**                          -2 = bad month  (JD not computed)
+**                          -3 = bad day    (JD computed)
+**
+**  Notes:
+**
+**  1) The algorithm used is valid from -4800 March 1, but this
+**     implementation rejects dates before -4799 January 1.
+**
+**  2) The Julian Date is returned in two pieces, in the usual ERFA
+**     manner, which is designed to preserve time resolution.  The
+**     Julian Date is available as a single number by adding djm0 and
+**     djm.
+**
+**  3) In early eras the conversion is from the "Proleptic Gregorian
+**     Calendar";  no account is taken of the date(s) of adoption of
+**     the Gregorian Calendar, nor is the AD/BC numbering convention
+**     observed.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 12.92 (p604).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j, ly, my;
+   long iypmy;
+
+/* Earliest year allowed (4800BC) */
+   const int IYMIN = -4799;
+
+/* Month lengths in days */
+   static const int mtab[]
+                     = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+
+/* Preset status. */
+   j = 0;
+
+/* Validate year and month. */
+   if (iy < IYMIN) return -1;
+   if (im < 1 || im > 12) return -2;
+
+/* If February in a leap year, 1, otherwise 0. */
+   ly = ((im == 2) && !(iy%4) && (iy%100 || !(iy%400)));
+
+/* Validate day, taking into account leap years. */
+   if ( (id < 1) || (id > (mtab[im-1] + ly))) j = -3;
+
+/* Return result. */
+   my = (im - 14) / 12;
+   iypmy = (long) (iy + my);
+   *djm0 = ERFA_DJM0;
+   *djm = (double)((1461L * (iypmy + 4800L)) / 4L
+                 + (367L * (long) (im - 2 - 12 * my)) / 12L
+                 - (3L * ((iypmy + 4900L) / 100L)) / 4L
+                 + (long) id - 2432076L);
+
+/* Return status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/cp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/cp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/cp.c	(revision 18732)
@@ -0,0 +1,89 @@
+#include "erfa.h"
+
+void eraCp(double p[3], double c[3])
+/*
+**  - - - - - -
+**   e r a C p
+**  - - - - - -
+**
+**  Copy a p-vector.
+**
+**  Given:
+**     p        double[3]     p-vector to be copied
+**
+**  Returned:
+**     c        double[3]     copy
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   c[0] = p[0];
+   c[1] = p[1];
+   c[2] = p[2];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/cpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/cpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/cpv.c	(revision 18732)
@@ -0,0 +1,91 @@
+#include "erfa.h"
+
+void eraCpv(double pv[2][3], double c[2][3])
+/*
+**  - - - - - - -
+**   e r a C p v
+**  - - - - - - -
+**
+**  Copy a position/velocity vector.
+**
+**  Given:
+**     pv     double[2][3]    position/velocity vector to be copied
+**
+**  Returned:
+**     c      double[2][3]    copy
+**
+**  Called:
+**     eraCp        copy p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraCp(pv[0], c[0]);
+   eraCp(pv[1], c[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/cr.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/cr.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/cr.c	(revision 18732)
@@ -0,0 +1,92 @@
+#include "erfa.h"
+
+void eraCr(double r[3][3], double c[3][3])
+/*
+**  - - - - - -
+**   e r a C r
+**  - - - - - -
+**
+**  Copy an r-matrix.
+**
+**  Given:
+**     r        double[3][3]    r-matrix to be copied
+**
+**  Returned:
+**     c        double[3][3]    copy
+**
+**  Called:
+**     eraCp        copy p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraCp(r[0], c[0]);
+   eraCp(r[1], c[1]);
+   eraCp(r[2], c[2]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/d2dtf.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/d2dtf.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/d2dtf.c	(revision 18732)
@@ -0,0 +1,245 @@
+#include "erfa.h"
+#include <string.h>
+
+int eraD2dtf(const char *scale, int ndp, double d1, double d2,
+             int *iy, int *im, int *id, int ihmsf[4])
+/*
+**  - - - - - - - - -
+**   e r a D 2 d t f
+**  - - - - - - - - -
+**
+**  Format for output a 2-part Julian Date (or in the case of UTC a
+**  quasi-JD form that includes special provision for leap seconds).
+**
+**  Given:
+**     scale     char[]  time scale ID (Note 1)
+**     ndp       int     resolution (Note 2)
+**     d1,d2     double  time as a 2-part Julian Date (Notes 3,4)
+**
+**  Returned:
+**     iy,im,id  int     year, month, day in Gregorian calendar (Note 5)
+**     ihmsf     int[4]  hours, minutes, seconds, fraction (Note 1)
+**
+**  Returned (function value):
+**               int     status: +1 = dubious year (Note 5)
+**                                0 = OK
+**                               -1 = unacceptable date (Note 6)
+**
+**  Notes:
+**
+**  1) scale identifies the time scale.  Only the value "UTC" (in upper
+**     case) is significant, and enables handling of leap seconds (see
+**     Note 4).
+**
+**  2) ndp is the number of decimal places in the seconds field, and can
+**     have negative as well as positive values, such as:
+**
+**     ndp         resolution
+**     -4            1 00 00
+**     -3            0 10 00
+**     -2            0 01 00
+**     -1            0 00 10
+**      0            0 00 01
+**      1            0 00 00.1
+**      2            0 00 00.01
+**      3            0 00 00.001
+**
+**     The limits are platform dependent, but a safe range is -5 to +9.
+**
+**  3) d1+d2 is Julian Date, apportioned in any convenient way between
+**     the two arguments, for example where d1 is the Julian Day Number
+**     and d2 is the fraction of a day.  In the case of UTC, where the
+**     use of JD is problematical, special conventions apply:  see the
+**     next note.
+**
+**  4) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The ERFA internal convention is that
+**     the quasi-JD day represents UTC days whether the length is 86399,
+**     86400 or 86401 SI seconds.  In the 1960-1972 era there were
+**     smaller jumps (in either direction) each time the linear UTC(TAI)
+**     expression was changed, and these "mini-leaps" are also included
+**     in the ERFA convention.
+**
+**  5) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  6) For calendar conventions and limitations, see eraCal2jd.
+**
+**  Called:
+**     eraJd2cal    JD to Gregorian calendar
+**     eraD2tf      decompose days to hms
+**     eraDat       delta(AT) = TAI-UTC
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int leap;
+   char s;
+   int iy1, im1, id1, js, iy2, im2, id2, ihmsf1[4], i;
+   double a1, b1, fd, dat0, dat12, w, dat24, dleap;
+
+
+/* The two-part JD. */
+   a1 = d1;
+   b1 = d2;
+
+/* Provisional calendar date. */
+   js = eraJd2cal(a1, b1, &iy1, &im1, &id1, &fd);
+   if ( js ) return -1;
+
+/* Is this a leap second day? */
+   leap = 0;
+   if ( ! strcmp(scale,"UTC") ) {
+
+   /* TAI-UTC at 0h today. */
+      js = eraDat(iy1, im1, id1, 0.0, &dat0);
+      if ( js < 0 ) return -1;
+
+   /* TAI-UTC at 12h today (to detect drift). */
+      js = eraDat(iy1, im1, id1, 0.5, &dat12);
+      if ( js < 0 ) return -1;
+
+   /* TAI-UTC at 0h tomorrow (to detect jumps). */
+      js = eraJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w);
+      if ( js ) return -1;
+      js = eraDat(iy2, im2, id2, 0.0, &dat24);
+      if ( js < 0 ) return -1;
+
+   /* Any sudden change in TAI-UTC (seconds). */
+      dleap = dat24 - (2.0*dat12 - dat0);
+
+   /* If leap second day, scale the fraction of a day into SI. */
+      leap = (dleap != 0.0);
+      if (leap) fd += fd * dleap/ERFA_DAYSEC;
+   }
+
+/* Provisional time of day. */
+   eraD2tf ( ndp, fd, &s, ihmsf1 );
+
+/* Has the (rounded) time gone past 24h? */
+   if ( ihmsf1[0] > 23 ) {
+
+   /* Yes.  We probably need tomorrow's calendar date. */
+      js = eraJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w);
+      if ( js ) return -1;
+
+   /* Is today a leap second day? */
+      if ( ! leap ) {
+
+      /* No.  Use 0h tomorrow. */
+         iy1 = iy2;
+         im1 = im2;
+         id1 = id2;
+         ihmsf1[0] = 0;
+         ihmsf1[1] = 0;
+         ihmsf1[2] = 0;
+
+      } else {
+
+      /* Yes.  Are we past the leap second itself? */
+         if ( ihmsf1[2] > 0 ) {
+
+         /* Yes.  Use tomorrow but allow for the leap second. */
+            iy1 = iy2;
+            im1 = im2;
+            id1 = id2;
+            ihmsf1[0] = 0;
+            ihmsf1[1] = 0;
+            ihmsf1[2] = 0;
+
+         } else {
+
+         /* No.  Use 23 59 60... today. */
+            ihmsf1[0] = 23;
+            ihmsf1[1] = 59;
+            ihmsf1[2] = 60;
+         }
+
+      /* If rounding to 10s or coarser always go up to new day. */
+         if ( ndp < 0 && ihmsf1[2] == 60 ) {
+            iy1 = iy2;
+            im1 = im2;
+            id1 = id2;
+            ihmsf1[0] = 0;
+            ihmsf1[1] = 0;
+            ihmsf1[2] = 0;
+         }
+      }
+   }
+
+/* Results. */
+   *iy = iy1;
+   *im = im1;
+   *id = id1;
+   for ( i = 0; i < 4; i++ ) {
+      ihmsf[i] = ihmsf1[i];
+   }
+
+/* Status. */
+   return js;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/d2tf.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/d2tf.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/d2tf.c	(revision 18732)
@@ -0,0 +1,169 @@
+#include "erfa.h"
+
+void eraD2tf(int ndp, double days, char *sign, int ihmsf[4])
+/*
+**  - - - - - - - -
+**   e r a D 2 t f
+**  - - - - - - - -
+**
+**  Decompose days to hours, minutes, seconds, fraction.
+**
+**  Given:
+**     ndp     int     resolution (Note 1)
+**     days    double  interval in days
+**
+**  Returned:
+**     sign    char    '+' or '-'
+**     ihmsf   int[4]  hours, minutes, seconds, fraction
+**
+**  Notes:
+**
+**  1) The argument ndp is interpreted as follows:
+**
+**     ndp         resolution
+**      :      ...0000 00 00
+**     -7         1000 00 00
+**     -6          100 00 00
+**     -5           10 00 00
+**     -4            1 00 00
+**     -3            0 10 00
+**     -2            0 01 00
+**     -1            0 00 10
+**      0            0 00 01
+**      1            0 00 00.1
+**      2            0 00 00.01
+**      3            0 00 00.001
+**      :            0 00 00.000...
+**
+**  2) The largest positive useful value for ndp is determined by the
+**     size of days, the format of double on the target platform, and
+**     the risk of overflowing ihmsf[3].  On a typical platform, for
+**     days up to 1.0, the available floating-point precision might
+**     correspond to ndp=12.  However, the practical limit is typically
+**     ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is
+**     only 16 bits.
+**
+**  3) The absolute value of days may exceed 1.0.  In cases where it
+**     does not, it is up to the caller to test for and handle the
+**     case where days is very nearly 1.0 and rounds up to 24 hours,
+**     by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int nrs, n;
+   double rs, rm, rh, a, w, ah, am, as, af;
+
+
+/* Handle sign. */
+   *sign = (char) ( ( days >= 0.0 ) ? '+' : '-' );
+
+/* Interval in seconds. */
+   a = ERFA_DAYSEC * fabs(days);
+
+/* Pre-round if resolution coarser than 1s (then pretend ndp=1). */
+   if (ndp < 0) {
+      nrs = 1;
+      for (n = 1; n <= -ndp; n++) {
+          nrs *= (n == 2 || n == 4) ? 6 : 10;
+      }
+      rs = (double) nrs;
+      w = a / rs;
+      a = rs * ERFA_DNINT(w);
+   }
+
+/* Express the unit of each field in resolution units. */
+   nrs = 1;
+   for (n = 1; n <= ndp; n++) {
+      nrs *= 10;
+   }
+   rs = (double) nrs;
+   rm = rs * 60.0;
+   rh = rm * 60.0;
+
+/* Round the interval and express in resolution units. */
+   a = ERFA_DNINT(rs * a);
+
+/* Break into fields. */
+   ah = a / rh;
+   ah = ERFA_DINT(ah);
+   a -= ah * rh;
+   am = a / rm;
+   am = ERFA_DINT(am);
+   a -= am * rm;
+   as = a / rs;
+   as = ERFA_DINT(as);
+   af = a - as * rs;
+
+/* Return results. */
+   ihmsf[0] = (int) ah;
+   ihmsf[1] = (int) am;
+   ihmsf[2] = (int) as;
+   ihmsf[3] = (int) af;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/dat.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/dat.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/dat.c	(revision 18732)
@@ -0,0 +1,306 @@
+#include "erfa.h"
+
+int eraDat(int iy, int im, int id, double fd, double *deltat )
+/*
+**  - - - - - - -
+**   e r a D a t
+**  - - - - - - -
+**
+**  For a given UTC date, calculate delta(AT) = TAI-UTC.
+**
+**     :------------------------------------------:
+**     :                                          :
+**     :                 IMPORTANT                :
+**     :                                          :
+**     :  A new version of this function must be  :
+**     :  produced whenever a new leap second is  :
+**     :  announced.  There are four items to     :
+**     :  change on each such occasion:           :
+**     :                                          :
+**     :  1) A new line must be added to the set  :
+**     :     of statements that initialize the    :
+**     :     array "changes".                     :
+**     :                                          :
+**     :  2) The constant IYV must be set to the  :
+**     :     current year.                        :
+**     :                                          :
+**     :  3) The "Latest leap second" comment     :
+**     :     below must be set to the new leap    :
+**     :     second date.                         :
+**     :                                          :
+**     :  4) The "This revision" comment, later,  :
+**     :     must be set to the current date.     :
+**     :                                          :
+**     :  Change (2) must also be carried out     :
+**     :  whenever the function is re-issued,     :
+**     :  even if no leap seconds have been       :
+**     :  added.                                  :
+**     :                                          :
+**     :  Latest leap second:  2016 December 31   :
+**     :                                          :
+**     :__________________________________________:
+**
+**  Given:
+**     iy     int      UTC:  year (Notes 1 and 2)
+**     im     int            month (Note 2)
+**     id     int            day (Notes 2 and 3)
+**     fd     double         fraction of day (Note 4)
+**
+**  Returned:
+**     deltat double   TAI minus UTC, seconds
+**
+**  Returned (function value):
+**            int      status (Note 5):
+**                       1 = dubious year (Note 1)
+**                       0 = OK
+**                      -1 = bad year
+**                      -2 = bad month
+**                      -3 = bad day (Note 3)
+**                      -4 = bad fraction (Note 4)
+**                      -5 = internal error (Note 5)
+**
+**  Notes:
+**
+**  1) UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper
+**     to call the function with an earlier date.  If this is attempted,
+**     zero is returned together with a warning status.
+**
+**     Because leap seconds cannot, in principle, be predicted in
+**     advance, a reliable check for dates beyond the valid range is
+**     impossible.  To guard against gross errors, a year five or more
+**     after the release year of the present function (see the constant
+**     IYV) is considered dubious.  In this case a warning status is
+**     returned but the result is computed in the normal way.
+**
+**     For both too-early and too-late years, the warning status is +1.
+**     This is distinct from the error status -1, which signifies a year
+**     so early that JD could not be computed.
+**
+**  2) If the specified date is for a day which ends with a leap second,
+**     the UTC-TAI value returned is for the period leading up to the
+**     leap second.  If the date is for a day which begins as a leap
+**     second ends, the UTC-TAI returned is for the period following the
+**     leap second.
+**
+**  3) The day number must be in the normal calendar range, for example
+**     1 through 30 for April.  The "almanac" convention of allowing
+**     such dates as January 0 and December 32 is not supported in this
+**     function, in order to avoid confusion near leap seconds.
+**
+**  4) The fraction of day is used only for dates before the
+**     introduction of leap seconds, the first of which occurred at the
+**     end of 1971.  It is tested for validity (0 to 1 is the valid
+**     range) even if not used;  if invalid, zero is used and status -4
+**     is returned.  For many applications, setting fd to zero is
+**     acceptable;  the resulting error is always less than 3 ms (and
+**     occurs only pre-1972).
+**
+**  5) The status value returned in the case where there are multiple
+**     errors refers to the first error detected.  For example, if the
+**     month and day are 13 and 32 respectively, status -2 (bad month)
+**     will be returned.  The "internal error" status refers to a
+**     case that is impossible but causes some compilers to issue a
+**     warning.
+**
+**  6) In cases where a valid result is not available, zero is returned.
+**
+**  References:
+**
+**  1) For dates from 1961 January 1 onwards, the expressions from the
+**     file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used.
+**
+**  2) The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of
+**     the 1992 Explanatory Supplement.
+**
+**  Called:
+**     eraCal2jd    Gregorian calendar to JD
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Release year for this version of eraDat */
+   enum { IYV = 2016};
+
+/* Reference dates (MJD) and drift rates (s/day), pre leap seconds */
+   static const double drift[][2] = {
+      { 37300.0, 0.0012960 },
+      { 37300.0, 0.0012960 },
+      { 37300.0, 0.0012960 },
+      { 37665.0, 0.0011232 },
+      { 37665.0, 0.0011232 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 38761.0, 0.0012960 },
+      { 39126.0, 0.0025920 },
+      { 39126.0, 0.0025920 }
+   };
+
+/* Number of Delta(AT) expressions before leap seconds were introduced */
+   enum { NERA1 = (int) (sizeof drift / sizeof (double) / 2) };
+
+/* Dates and Delta(AT)s */
+   static const struct {
+      int iyear, month;
+      double delat;
+   } changes[] = {
+      { 1960,  1,  1.4178180 },
+      { 1961,  1,  1.4228180 },
+      { 1961,  8,  1.3728180 },
+      { 1962,  1,  1.8458580 },
+      { 1963, 11,  1.9458580 },
+      { 1964,  1,  3.2401300 },
+      { 1964,  4,  3.3401300 },
+      { 1964,  9,  3.4401300 },
+      { 1965,  1,  3.5401300 },
+      { 1965,  3,  3.6401300 },
+      { 1965,  7,  3.7401300 },
+      { 1965,  9,  3.8401300 },
+      { 1966,  1,  4.3131700 },
+      { 1968,  2,  4.2131700 },
+      { 1972,  1, 10.0       },
+      { 1972,  7, 11.0       },
+      { 1973,  1, 12.0       },
+      { 1974,  1, 13.0       },
+      { 1975,  1, 14.0       },
+      { 1976,  1, 15.0       },
+      { 1977,  1, 16.0       },
+      { 1978,  1, 17.0       },
+      { 1979,  1, 18.0       },
+      { 1980,  1, 19.0       },
+      { 1981,  7, 20.0       },
+      { 1982,  7, 21.0       },
+      { 1983,  7, 22.0       },
+      { 1985,  7, 23.0       },
+      { 1988,  1, 24.0       },
+      { 1990,  1, 25.0       },
+      { 1991,  1, 26.0       },
+      { 1992,  7, 27.0       },
+      { 1993,  7, 28.0       },
+      { 1994,  7, 29.0       },
+      { 1996,  1, 30.0       },
+      { 1997,  7, 31.0       },
+      { 1999,  1, 32.0       },
+      { 2006,  1, 33.0       },
+      { 2009,  1, 34.0       },
+      { 2012,  7, 35.0       },
+      { 2015,  7, 36.0       },
+      { 2017,  1, 37.0       }
+   };
+
+/* Number of Delta(AT) changes */
+   enum { NDAT = (int) (sizeof changes / sizeof changes[0]) };
+
+/* Miscellaneous local variables */
+   int j, i, m;
+   double da, djm0, djm;
+
+
+/* Initialize the result to zero. */
+   *deltat = da = 0.0;
+
+/* If invalid fraction of a day, set error status and give up. */
+   if (fd < 0.0 || fd > 1.0) return -4;
+
+/* Convert the date into an MJD. */
+   j = eraCal2jd(iy, im, id, &djm0, &djm);
+
+/* If invalid year, month, or day, give up. */
+   if (j < 0) return j;
+
+/* If pre-UTC year, set warning status and give up. */
+   if (iy < changes[0].iyear) return 1;
+
+/* If suspiciously late year, set warning status but proceed. */
+   if (iy > IYV + 5) j = 1;
+
+/* Combine year and month to form a date-ordered integer... */
+   m = 12*iy + im;
+
+/* ...and use it to find the preceding table entry. */
+   for (i = NDAT-1; i >=0; i--) {
+      if (m >= (12 * changes[i].iyear + changes[i].month)) break;
+   }
+
+/* Prevent underflow warnings. */
+   if (i < 0) return -5;
+
+/* Get the Delta(AT). */
+   da = changes[i].delat;
+
+/* If pre-1972, adjust for drift. */
+   if (i < NERA1) da += (djm + fd - drift[i][0]) * drift[i][1];
+
+/* Return the Delta(AT) value. */
+   *deltat = da;
+
+/* Return the status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/dtdb.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/dtdb.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/dtdb.c	(revision 18732)
@@ -0,0 +1,1222 @@
+#include "erfa.h"
+
+double eraDtdb(double date1, double date2,
+               double ut, double elong, double u, double v)
+/*
+**  - - - - - - - -
+**   e r a D t d b
+**  - - - - - - - -
+**
+**  An approximation to TDB-TT, the difference between barycentric
+**  dynamical time and terrestrial time, for an observer on the Earth.
+**
+**  The different time scales - proper, coordinate and realized - are
+**  related to each other:
+**
+**            TAI             <-  physically realized
+**             :
+**          offset            <-  observed (nominally +32.184s)
+**             :
+**            TT              <-  terrestrial time
+**             :
+**    rate adjustment (L_G)   <-  definition of TT
+**             :
+**            TCG             <-  time scale for GCRS
+**             :
+**      "periodic" terms      <-  eraDtdb  is an implementation
+**             :
+**    rate adjustment (L_C)   <-  function of solar-system ephemeris
+**             :
+**            TCB             <-  time scale for BCRS
+**             :
+**    rate adjustment (-L_B)  <-  definition of TDB
+**             :
+**            TDB             <-  TCB scaled to track TT
+**             :
+**      "periodic" terms      <-  -eraDtdb is an approximation
+**             :
+**            TT              <-  terrestrial time
+**
+**  Adopted values for the various constants can be found in the IERS
+**  Conventions (McCarthy & Petit 2003).
+**
+**  Given:
+**     date1,date2   double  date, TDB (Notes 1-3)
+**     ut            double  universal time (UT1, fraction of one day)
+**     elong         double  longitude (east positive, radians)
+**     u             double  distance from Earth spin axis (km)
+**     v             double  distance north of equatorial plane (km)
+**
+**  Returned (function value):
+**                   double  TDB-TT (seconds)
+**
+**  Notes:
+**
+**  1) The date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**     Although the date is, formally, barycentric dynamical time (TDB),
+**     the terrestrial dynamical time (TT) can be used with no practical
+**     effect on the accuracy of the prediction.
+**
+**  2) TT can be regarded as a coordinate time that is realized as an
+**     offset of 32.184s from International Atomic Time, TAI.  TT is a
+**     specific linear transformation of geocentric coordinate time TCG,
+**     which is the time scale for the Geocentric Celestial Reference
+**     System, GCRS.
+**
+**  3) TDB is a coordinate time, and is a specific linear transformation
+**     of barycentric coordinate time TCB, which is the time scale for
+**     the Barycentric Celestial Reference System, BCRS.
+**
+**  4) The difference TCG-TCB depends on the masses and positions of the
+**     bodies of the solar system and the velocity of the Earth.  It is
+**     dominated by a rate difference, the residual being of a periodic
+**     character.  The latter, which is modeled by the present function,
+**     comprises a main (annual) sinusoidal term of amplitude
+**     approximately 0.00166 seconds, plus planetary terms up to about
+**     20 microseconds, and lunar and diurnal terms up to 2 microseconds.
+**     These effects come from the changing transverse Doppler effect
+**     and gravitational red-shift as the observer (on the Earth's
+**     surface) experiences variations in speed (with respect to the
+**     BCRS) and gravitational potential.
+**
+**  5) TDB can be regarded as the same as TCB but with a rate adjustment
+**     to keep it close to TT, which is convenient for many applications.
+**     The history of successive attempts to define TDB is set out in
+**     Resolution 3 adopted by the IAU General Assembly in 2006, which
+**     defines a fixed TDB(TCB) transformation that is consistent with
+**     contemporary solar-system ephemerides.  Future ephemerides will
+**     imply slightly changed transformations between TCG and TCB, which
+**     could introduce a linear drift between TDB and TT;  however, any
+**     such drift is unlikely to exceed 1 nanosecond per century.
+**
+**  6) The geocentric TDB-TT model used in the present function is that of
+**     Fairhead & Bretagnon (1990), in its full form.  It was originally
+**     supplied by Fairhead (private communications with P.T.Wallace,
+**     1990) as a Fortran subroutine.  The present C function contains an
+**     adaptation of the Fairhead code.  The numerical results are
+**     essentially unaffected by the changes, the differences with
+**     respect to the Fairhead & Bretagnon original being at the 1e-20 s
+**     level.
+**
+**     The topocentric part of the model is from Moyer (1981) and
+**     Murray (1983), with fundamental arguments adapted from
+**     Simon et al. 1994.  It is an approximation to the expression
+**     ( v / c ) . ( r / c ), where v is the barycentric velocity of
+**     the Earth, r is the geocentric position of the observer and
+**     c is the speed of light.
+**
+**     By supplying zeroes for u and v, the topocentric part of the
+**     model can be nullified, and the function will return the Fairhead
+**     & Bretagnon result alone.
+**
+**  7) During the interval 1950-2050, the absolute accuracy is better
+**     than +/- 3 nanoseconds relative to time ephemerides obtained by
+**     direct numerical integrations based on the JPL DE405 solar system
+**     ephemeris.
+**
+**  8) It must be stressed that the present function is merely a model,
+**     and that numerical integration of solar-system ephemerides is the
+**     definitive method for predicting the relationship between TCG and
+**     TCB and hence between TT and TDB.
+**
+**  References:
+**
+**     Fairhead, L., & Bretagnon, P., Astron.Astrophys., 229, 240-247
+**     (1990).
+**
+**     IAU 2006 Resolution 3.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Moyer, T.D., Cel.Mech., 23, 33 (1981).
+**
+**     Murray, C.A., Vectorial Astrometry, Adam Hilger (1983).
+**
+**     Seidelmann, P.K. et al., Explanatory Supplement to the
+**     Astronomical Almanac, Chapter 2, University Science Books (1992).
+**
+**     Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G. & Laskar, J., Astron.Astrophys., 282, 663-683 (1994).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, tsol, w, elsun, emsun, d, elj, els, wt, w0, w1, w2, w3, w4,
+          wf, wj;
+   int j;
+
+/*
+** =====================
+** Fairhead et al. model
+** =====================
+**
+** 787 sets of three coefficients.
+**
+** Each set is
+**    amplitude (microseconds)
+**      frequency (radians per Julian millennium since J2000.0)
+**      phase (radians)
+**
+** Sets   1-474 are the T**0 terms
+**  "   475-679  "   "  T**1
+**  "   680-764  "   "  T**2
+**  "   765-784  "   "  T**3
+**  "   785-787  "   "  T**4
+*/
+
+   static const double fairhd[787][3] = {
+   /* 1, 10 */
+      { 1656.674564e-6,     6283.075849991,  6.240054195 },
+      {   22.417471e-6,     5753.384884897,  4.296977442 },
+      {   13.839792e-6,    12566.151699983,  6.196904410 },
+      {    4.770086e-6,      529.690965095,  0.444401603 },
+      {    4.676740e-6,     6069.776754553,  4.021195093 },
+      {    2.256707e-6,      213.299095438,  5.543113262 },
+      {    1.694205e-6,      -3.523118349,   5.025132748 },
+      {    1.554905e-6,    77713.771467920,  5.198467090 },
+      {    1.276839e-6,     7860.419392439,  5.988822341 },
+      {    1.193379e-6,     5223.693919802,  3.649823730 },
+   /* 11, 20 */
+      {    1.115322e-6,     3930.209696220,  1.422745069 },
+      {    0.794185e-6,    11506.769769794,  2.322313077 },
+      {    0.447061e-6,       26.298319800,  3.615796498 },
+      {    0.435206e-6,     -398.149003408,  4.349338347 },
+      {    0.600309e-6,     1577.343542448,  2.678271909 },
+      {    0.496817e-6,     6208.294251424,  5.696701824 },
+      {    0.486306e-6,     5884.926846583,  0.520007179 },
+      {    0.432392e-6,       74.781598567,  2.435898309 },
+      {    0.468597e-6,     6244.942814354,  5.866398759 },
+      {    0.375510e-6,     5507.553238667,  4.103476804 },
+   /* 21, 30 */
+      {    0.243085e-6,     -775.522611324,  3.651837925 },
+      {    0.173435e-6,    18849.227549974,  6.153743485 },
+      {    0.230685e-6,     5856.477659115,  4.773852582 },
+      {    0.203747e-6,    12036.460734888,  4.333987818 },
+      {    0.143935e-6,     -796.298006816,  5.957517795 },
+      {    0.159080e-6,    10977.078804699,  1.890075226 },
+      {    0.119979e-6,       38.133035638,  4.551585768 },
+      {    0.118971e-6,     5486.777843175,  1.914547226 },
+      {    0.116120e-6,     1059.381930189,  0.873504123 },
+      {    0.137927e-6,    11790.629088659,  1.135934669 },
+   /* 31, 40 */
+      {    0.098358e-6,     2544.314419883,  0.092793886 },
+      {    0.101868e-6,    -5573.142801634,  5.984503847 },
+      {    0.080164e-6,      206.185548437,  2.095377709 },
+      {    0.079645e-6,     4694.002954708,  2.949233637 },
+      {    0.062617e-6,       20.775395492,  2.654394814 },
+      {    0.075019e-6,     2942.463423292,  4.980931759 },
+      {    0.064397e-6,     5746.271337896,  1.280308748 },
+      {    0.063814e-6,     5760.498431898,  4.167901731 },
+      {    0.048042e-6,     2146.165416475,  1.495846011 },
+      {    0.048373e-6,      155.420399434,  2.251573730 },
+   /* 41, 50 */
+      {    0.058844e-6,      426.598190876,  4.839650148 },
+      {    0.046551e-6,       -0.980321068,  0.921573539 },
+      {    0.054139e-6,    17260.154654690,  3.411091093 },
+      {    0.042411e-6,     6275.962302991,  2.869567043 },
+      {    0.040184e-6,       -7.113547001,  3.565975565 },
+      {    0.036564e-6,     5088.628839767,  3.324679049 },
+      {    0.040759e-6,    12352.852604545,  3.981496998 },
+      {    0.036507e-6,      801.820931124,  6.248866009 },
+      {    0.036955e-6,     3154.687084896,  5.071801441 },
+      {    0.042732e-6,      632.783739313,  5.720622217 },
+   /* 51, 60 */
+      {    0.042560e-6,   161000.685737473,  1.270837679 },
+      {    0.040480e-6,    15720.838784878,  2.546610123 },
+      {    0.028244e-6,    -6286.598968340,  5.069663519 },
+      {    0.033477e-6,     6062.663207553,  4.144987272 },
+      {    0.034867e-6,      522.577418094,  5.210064075 },
+      {    0.032438e-6,     6076.890301554,  0.749317412 },
+      {    0.030215e-6,     7084.896781115,  3.389610345 },
+      {    0.029247e-6,   -71430.695617928,  4.183178762 },
+      {    0.033529e-6,     9437.762934887,  2.404714239 },
+      {    0.032423e-6,     8827.390269875,  5.541473556 },
+   /* 61, 70 */
+      {    0.027567e-6,     6279.552731642,  5.040846034 },
+      {    0.029862e-6,    12139.553509107,  1.770181024 },
+      {    0.022509e-6,    10447.387839604,  1.460726241 },
+      {    0.020937e-6,     8429.241266467,  0.652303414 },
+      {    0.020322e-6,      419.484643875,  3.735430632 },
+      {    0.024816e-6,    -1194.447010225,  1.087136918 },
+      {    0.025196e-6,     1748.016413067,  2.901883301 },
+      {    0.021691e-6,    14143.495242431,  5.952658009 },
+      {    0.017673e-6,     6812.766815086,  3.186129845 },
+      {    0.022567e-6,     6133.512652857,  3.307984806 },
+   /* 71, 80 */
+      {    0.016155e-6,    10213.285546211,  1.331103168 },
+      {    0.014751e-6,     1349.867409659,  4.308933301 },
+      {    0.015949e-6,     -220.412642439,  4.005298270 },
+      {    0.015974e-6,    -2352.866153772,  6.145309371 },
+      {    0.014223e-6,    17789.845619785,  2.104551349 },
+      {    0.017806e-6,       73.297125859,  3.475975097 },
+      {    0.013671e-6,     -536.804512095,  5.971672571 },
+      {    0.011942e-6,     8031.092263058,  2.053414715 },
+      {    0.014318e-6,    16730.463689596,  3.016058075 },
+      {    0.012462e-6,      103.092774219,  1.737438797 },
+   /* 81, 90 */
+      {    0.010962e-6,        3.590428652,  2.196567739 },
+      {    0.015078e-6,    19651.048481098,  3.969480770 },
+      {    0.010396e-6,      951.718406251,  5.717799605 },
+      {    0.011707e-6,    -4705.732307544,  2.654125618 },
+      {    0.010453e-6,     5863.591206116,  1.913704550 },
+      {    0.012420e-6,     4690.479836359,  4.734090399 },
+      {    0.011847e-6,     5643.178563677,  5.489005403 },
+      {    0.008610e-6,     3340.612426700,  3.661698944 },
+      {    0.011622e-6,     5120.601145584,  4.863931876 },
+      {    0.010825e-6,      553.569402842,  0.842715011 },
+   /* 91, 100 */
+      {    0.008666e-6,     -135.065080035,  3.293406547 },
+      {    0.009963e-6,      149.563197135,  4.870690598 },
+      {    0.009858e-6,     6309.374169791,  1.061816410 },
+      {    0.007959e-6,      316.391869657,  2.465042647 },
+      {    0.010099e-6,      283.859318865,  1.942176992 },
+      {    0.007147e-6,     -242.728603974,  3.661486981 },
+      {    0.007505e-6,     5230.807466803,  4.920937029 },
+      {    0.008323e-6,    11769.853693166,  1.229392026 },
+      {    0.007490e-6,    -6256.777530192,  3.658444681 },
+      {    0.009370e-6,   149854.400134205,  0.673880395 },
+   /* 101, 110 */
+      {    0.007117e-6,       38.027672636,  5.294249518 },
+      {    0.007857e-6,    12168.002696575,  0.525733528 },
+      {    0.007019e-6,     6206.809778716,  0.837688810 },
+      {    0.006056e-6,      955.599741609,  4.194535082 },
+      {    0.008107e-6,    13367.972631107,  3.793235253 },
+      {    0.006731e-6,     5650.292110678,  5.639906583 },
+      {    0.007332e-6,       36.648562930,  0.114858677 },
+      {    0.006366e-6,     4164.311989613,  2.262081818 },
+      {    0.006858e-6,     5216.580372801,  0.642063318 },
+      {    0.006919e-6,     6681.224853400,  6.018501522 },
+   /* 111, 120 */
+      {    0.006826e-6,     7632.943259650,  3.458654112 },
+      {    0.005308e-6,    -1592.596013633,  2.500382359 },
+      {    0.005096e-6,    11371.704689758,  2.547107806 },
+      {    0.004841e-6,     5333.900241022,  0.437078094 },
+      {    0.005582e-6,     5966.683980335,  2.246174308 },
+      {    0.006304e-6,    11926.254413669,  2.512929171 },
+      {    0.006603e-6,    23581.258177318,  5.393136889 },
+      {    0.005123e-6,       -1.484472708,  2.999641028 },
+      {    0.004648e-6,     1589.072895284,  1.275847090 },
+      {    0.005119e-6,     6438.496249426,  1.486539246 },
+   /* 121, 130 */
+      {    0.004521e-6,     4292.330832950,  6.140635794 },
+      {    0.005680e-6,    23013.539539587,  4.557814849 },
+      {    0.005488e-6,       -3.455808046,  0.090675389 },
+      {    0.004193e-6,     7234.794256242,  4.869091389 },
+      {    0.003742e-6,     7238.675591600,  4.691976180 },
+      {    0.004148e-6,     -110.206321219,  3.016173439 },
+      {    0.004553e-6,    11499.656222793,  5.554998314 },
+      {    0.004892e-6,     5436.993015240,  1.475415597 },
+      {    0.004044e-6,     4732.030627343,  1.398784824 },
+      {    0.004164e-6,    12491.370101415,  5.650931916 },
+   /* 131, 140 */
+      {    0.004349e-6,    11513.883316794,  2.181745369 },
+      {    0.003919e-6,    12528.018664345,  5.823319737 },
+      {    0.003129e-6,     6836.645252834,  0.003844094 },
+      {    0.004080e-6,    -7058.598461315,  3.690360123 },
+      {    0.003270e-6,       76.266071276,  1.517189902 },
+      {    0.002954e-6,     6283.143160294,  4.447203799 },
+      {    0.002872e-6,       28.449187468,  1.158692983 },
+      {    0.002881e-6,      735.876513532,  0.349250250 },
+      {    0.003279e-6,     5849.364112115,  4.893384368 },
+      {    0.003625e-6,     6209.778724132,  1.473760578 },
+   /* 141, 150 */
+      {    0.003074e-6,      949.175608970,  5.185878737 },
+      {    0.002775e-6,     9917.696874510,  1.030026325 },
+      {    0.002646e-6,    10973.555686350,  3.918259169 },
+      {    0.002575e-6,    25132.303399966,  6.109659023 },
+      {    0.003500e-6,      263.083923373,  1.892100742 },
+      {    0.002740e-6,    18319.536584880,  4.320519510 },
+      {    0.002464e-6,      202.253395174,  4.698203059 },
+      {    0.002409e-6,        2.542797281,  5.325009315 },
+      {    0.003354e-6,   -90955.551694697,  1.942656623 },
+      {    0.002296e-6,     6496.374945429,  5.061810696 },
+   /* 151, 160 */
+      {    0.003002e-6,     6172.869528772,  2.797822767 },
+      {    0.003202e-6,    27511.467873537,  0.531673101 },
+      {    0.002954e-6,    -6283.008539689,  4.533471191 },
+      {    0.002353e-6,      639.897286314,  3.734548088 },
+      {    0.002401e-6,    16200.772724501,  2.605547070 },
+      {    0.003053e-6,   233141.314403759,  3.029030662 },
+      {    0.003024e-6,    83286.914269554,  2.355556099 },
+      {    0.002863e-6,    17298.182327326,  5.240963796 },
+      {    0.002103e-6,    -7079.373856808,  5.756641637 },
+      {    0.002303e-6,    83996.847317911,  2.013686814 },
+   /* 161, 170 */
+      {    0.002303e-6,    18073.704938650,  1.089100410 },
+      {    0.002381e-6,       63.735898303,  0.759188178 },
+      {    0.002493e-6,     6386.168624210,  0.645026535 },
+      {    0.002366e-6,        3.932153263,  6.215885448 },
+      {    0.002169e-6,    11015.106477335,  4.845297676 },
+      {    0.002397e-6,     6243.458341645,  3.809290043 },
+      {    0.002183e-6,     1162.474704408,  6.179611691 },
+      {    0.002353e-6,     6246.427287062,  4.781719760 },
+      {    0.002199e-6,     -245.831646229,  5.956152284 },
+      {    0.001729e-6,     3894.181829542,  1.264976635 },
+   /* 171, 180 */
+      {    0.001896e-6,    -3128.388765096,  4.914231596 },
+      {    0.002085e-6,       35.164090221,  1.405158503 },
+      {    0.002024e-6,    14712.317116458,  2.752035928 },
+      {    0.001737e-6,     6290.189396992,  5.280820144 },
+      {    0.002229e-6,      491.557929457,  1.571007057 },
+      {    0.001602e-6,    14314.168113050,  4.203664806 },
+      {    0.002186e-6,      454.909366527,  1.402101526 },
+      {    0.001897e-6,    22483.848574493,  4.167932508 },
+      {    0.001825e-6,    -3738.761430108,  0.545828785 },
+      {    0.001894e-6,     1052.268383188,  5.817167450 },
+   /* 181, 190 */
+      {    0.001421e-6,       20.355319399,  2.419886601 },
+      {    0.001408e-6,    10984.192351700,  2.732084787 },
+      {    0.001847e-6,    10873.986030480,  2.903477885 },
+      {    0.001391e-6,    -8635.942003763,  0.593891500 },
+      {    0.001388e-6,       -7.046236698,  1.166145902 },
+      {    0.001810e-6,   -88860.057071188,  0.487355242 },
+      {    0.001288e-6,    -1990.745017041,  3.913022880 },
+      {    0.001297e-6,    23543.230504682,  3.063805171 },
+      {    0.001335e-6,     -266.607041722,  3.995764039 },
+      {    0.001376e-6,    10969.965257698,  5.152914309 },
+   /* 191, 200 */
+      {    0.001745e-6,   244287.600007027,  3.626395673 },
+      {    0.001649e-6,    31441.677569757,  1.952049260 },
+      {    0.001416e-6,     9225.539273283,  4.996408389 },
+      {    0.001238e-6,     4804.209275927,  5.503379738 },
+      {    0.001472e-6,     4590.910180489,  4.164913291 },
+      {    0.001169e-6,     6040.347246017,  5.841719038 },
+      {    0.001039e-6,     5540.085789459,  2.769753519 },
+      {    0.001004e-6,     -170.672870619,  0.755008103 },
+      {    0.001284e-6,    10575.406682942,  5.306538209 },
+      {    0.001278e-6,       71.812653151,  4.713486491 },
+   /* 201, 210 */
+      {    0.001321e-6,    18209.330263660,  2.624866359 },
+      {    0.001297e-6,    21228.392023546,  0.382603541 },
+      {    0.000954e-6,     6282.095528923,  0.882213514 },
+      {    0.001145e-6,     6058.731054289,  1.169483931 },
+      {    0.000979e-6,     5547.199336460,  5.448375984 },
+      {    0.000987e-6,    -6262.300454499,  2.656486959 },
+      {    0.001070e-6,  -154717.609887482,  1.827624012 },
+      {    0.000991e-6,     4701.116501708,  4.387001801 },
+      {    0.001155e-6,      -14.227094002,  3.042700750 },
+      {    0.001176e-6,      277.034993741,  3.335519004 },
+   /* 211, 220 */
+      {    0.000890e-6,    13916.019109642,  5.601498297 },
+      {    0.000884e-6,    -1551.045222648,  1.088831705 },
+      {    0.000876e-6,     5017.508371365,  3.969902609 },
+      {    0.000806e-6,    15110.466119866,  5.142876744 },
+      {    0.000773e-6,    -4136.910433516,  0.022067765 },
+      {    0.001077e-6,      175.166059800,  1.844913056 },
+      {    0.000954e-6,    -6284.056171060,  0.968480906 },
+      {    0.000737e-6,     5326.786694021,  4.923831588 },
+      {    0.000845e-6,     -433.711737877,  4.749245231 },
+      {    0.000819e-6,     8662.240323563,  5.991247817 },
+   /* 221, 230 */
+      {    0.000852e-6,      199.072001436,  2.189604979 },
+      {    0.000723e-6,    17256.631536341,  6.068719637 },
+      {    0.000940e-6,     6037.244203762,  6.197428148 },
+      {    0.000885e-6,    11712.955318231,  3.280414875 },
+      {    0.000706e-6,    12559.038152982,  2.824848947 },
+      {    0.000732e-6,     2379.164473572,  2.501813417 },
+      {    0.000764e-6,    -6127.655450557,  2.236346329 },
+      {    0.000908e-6,      131.541961686,  2.521257490 },
+      {    0.000907e-6,    35371.887265976,  3.370195967 },
+      {    0.000673e-6,     1066.495477190,  3.876512374 },
+   /* 231, 240 */
+      {    0.000814e-6,    17654.780539750,  4.627122566 },
+      {    0.000630e-6,       36.027866677,  0.156368499 },
+      {    0.000798e-6,      515.463871093,  5.151962502 },
+      {    0.000798e-6,      148.078724426,  5.909225055 },
+      {    0.000806e-6,      309.278322656,  6.054064447 },
+      {    0.000607e-6,      -39.617508346,  2.839021623 },
+      {    0.000601e-6,      412.371096874,  3.984225404 },
+      {    0.000646e-6,    11403.676995575,  3.852959484 },
+      {    0.000704e-6,    13521.751441591,  2.300991267 },
+      {    0.000603e-6,   -65147.619767937,  4.140083146 },
+   /* 241, 250 */
+      {    0.000609e-6,    10177.257679534,  0.437122327 },
+      {    0.000631e-6,     5767.611978898,  4.026532329 },
+      {    0.000576e-6,    11087.285125918,  4.760293101 },
+      {    0.000674e-6,    14945.316173554,  6.270510511 },
+      {    0.000726e-6,     5429.879468239,  6.039606892 },
+      {    0.000710e-6,    28766.924424484,  5.672617711 },
+      {    0.000647e-6,    11856.218651625,  3.397132627 },
+      {    0.000678e-6,    -5481.254918868,  6.249666675 },
+      {    0.000618e-6,    22003.914634870,  2.466427018 },
+      {    0.000738e-6,     6134.997125565,  2.242668890 },
+   /* 251, 260 */
+      {    0.000660e-6,      625.670192312,  5.864091907 },
+      {    0.000694e-6,     3496.032826134,  2.668309141 },
+      {    0.000531e-6,     6489.261398429,  1.681888780 },
+      {    0.000611e-6,  -143571.324284214,  2.424978312 },
+      {    0.000575e-6,    12043.574281889,  4.216492400 },
+      {    0.000553e-6,    12416.588502848,  4.772158039 },
+      {    0.000689e-6,     4686.889407707,  6.224271088 },
+      {    0.000495e-6,     7342.457780181,  3.817285811 },
+      {    0.000567e-6,     3634.621024518,  1.649264690 },
+      {    0.000515e-6,    18635.928454536,  3.945345892 },
+   /* 261, 270 */
+      {    0.000486e-6,     -323.505416657,  4.061673868 },
+      {    0.000662e-6,    25158.601719765,  1.794058369 },
+      {    0.000509e-6,      846.082834751,  3.053874588 },
+      {    0.000472e-6,   -12569.674818332,  5.112133338 },
+      {    0.000461e-6,     6179.983075773,  0.513669325 },
+      {    0.000641e-6,    83467.156352816,  3.210727723 },
+      {    0.000520e-6,    10344.295065386,  2.445597761 },
+      {    0.000493e-6,    18422.629359098,  1.676939306 },
+      {    0.000478e-6,     1265.567478626,  5.487314569 },
+      {    0.000472e-6,      -18.159247265,  1.999707589 },
+   /* 271, 280 */
+      {    0.000559e-6,    11190.377900137,  5.783236356 },
+      {    0.000494e-6,     9623.688276691,  3.022645053 },
+      {    0.000463e-6,     5739.157790895,  1.411223013 },
+      {    0.000432e-6,    16858.482532933,  1.179256434 },
+      {    0.000574e-6,    72140.628666286,  1.758191830 },
+      {    0.000484e-6,    17267.268201691,  3.290589143 },
+      {    0.000550e-6,     4907.302050146,  0.864024298 },
+      {    0.000399e-6,       14.977853527,  2.094441910 },
+      {    0.000491e-6,      224.344795702,  0.878372791 },
+      {    0.000432e-6,    20426.571092422,  6.003829241 },
+   /* 281, 290 */
+      {    0.000481e-6,     5749.452731634,  4.309591964 },
+      {    0.000480e-6,     5757.317038160,  1.142348571 },
+      {    0.000485e-6,     6702.560493867,  0.210580917 },
+      {    0.000426e-6,     6055.549660552,  4.274476529 },
+      {    0.000480e-6,     5959.570433334,  5.031351030 },
+      {    0.000466e-6,    12562.628581634,  4.959581597 },
+      {    0.000520e-6,    39302.096962196,  4.788002889 },
+      {    0.000458e-6,    12132.439962106,  1.880103788 },
+      {    0.000470e-6,    12029.347187887,  1.405611197 },
+      {    0.000416e-6,    -7477.522860216,  1.082356330 },
+   /* 291, 300 */
+      {    0.000449e-6,    11609.862544012,  4.179989585 },
+      {    0.000465e-6,    17253.041107690,  0.353496295 },
+      {    0.000362e-6,    -4535.059436924,  1.583849576 },
+      {    0.000383e-6,    21954.157609398,  3.747376371 },
+      {    0.000389e-6,       17.252277143,  1.395753179 },
+      {    0.000331e-6,    18052.929543158,  0.566790582 },
+      {    0.000430e-6,    13517.870106233,  0.685827538 },
+      {    0.000368e-6,    -5756.908003246,  0.731374317 },
+      {    0.000330e-6,    10557.594160824,  3.710043680 },
+      {    0.000332e-6,    20199.094959633,  1.652901407 },
+   /* 301, 310 */
+      {    0.000384e-6,    11933.367960670,  5.827781531 },
+      {    0.000387e-6,    10454.501386605,  2.541182564 },
+      {    0.000325e-6,    15671.081759407,  2.178850542 },
+      {    0.000318e-6,      138.517496871,  2.253253037 },
+      {    0.000305e-6,     9388.005909415,  0.578340206 },
+      {    0.000352e-6,     5749.861766548,  3.000297967 },
+      {    0.000311e-6,     6915.859589305,  1.693574249 },
+      {    0.000297e-6,    24072.921469776,  1.997249392 },
+      {    0.000363e-6,     -640.877607382,  5.071820966 },
+      {    0.000323e-6,    12592.450019783,  1.072262823 },
+   /* 311, 320 */
+      {    0.000341e-6,    12146.667056108,  4.700657997 },
+      {    0.000290e-6,     9779.108676125,  1.812320441 },
+      {    0.000342e-6,     6132.028180148,  4.322238614 },
+      {    0.000329e-6,     6268.848755990,  3.033827743 },
+      {    0.000374e-6,    17996.031168222,  3.388716544 },
+      {    0.000285e-6,     -533.214083444,  4.687313233 },
+      {    0.000338e-6,     6065.844601290,  0.877776108 },
+      {    0.000276e-6,       24.298513841,  0.770299429 },
+      {    0.000336e-6,    -2388.894020449,  5.353796034 },
+      {    0.000290e-6,     3097.883822726,  4.075291557 },
+   /* 321, 330 */
+      {    0.000318e-6,      709.933048357,  5.941207518 },
+      {    0.000271e-6,    13095.842665077,  3.208912203 },
+      {    0.000331e-6,     6073.708907816,  4.007881169 },
+      {    0.000292e-6,      742.990060533,  2.714333592 },
+      {    0.000362e-6,    29088.811415985,  3.215977013 },
+      {    0.000280e-6,    12359.966151546,  0.710872502 },
+      {    0.000267e-6,    10440.274292604,  4.730108488 },
+      {    0.000262e-6,      838.969287750,  1.327720272 },
+      {    0.000250e-6,    16496.361396202,  0.898769761 },
+      {    0.000325e-6,    20597.243963041,  0.180044365 },
+   /* 331, 340 */
+      {    0.000268e-6,     6148.010769956,  5.152666276 },
+      {    0.000284e-6,     5636.065016677,  5.655385808 },
+      {    0.000301e-6,     6080.822454817,  2.135396205 },
+      {    0.000294e-6,     -377.373607916,  3.708784168 },
+      {    0.000236e-6,     2118.763860378,  1.733578756 },
+      {    0.000234e-6,     5867.523359379,  5.575209112 },
+      {    0.000268e-6,  -226858.238553767,  0.069432392 },
+      {    0.000265e-6,   167283.761587465,  4.369302826 },
+      {    0.000280e-6,    28237.233459389,  5.304829118 },
+      {    0.000292e-6,    12345.739057544,  4.096094132 },
+   /* 341, 350 */
+      {    0.000223e-6,    19800.945956225,  3.069327406 },
+      {    0.000301e-6,    43232.306658416,  6.205311188 },
+      {    0.000264e-6,    18875.525869774,  1.417263408 },
+      {    0.000304e-6,    -1823.175188677,  3.409035232 },
+      {    0.000301e-6,      109.945688789,  0.510922054 },
+      {    0.000260e-6,      813.550283960,  2.389438934 },
+      {    0.000299e-6,   316428.228673312,  5.384595078 },
+      {    0.000211e-6,     5756.566278634,  3.789392838 },
+      {    0.000209e-6,     5750.203491159,  1.661943545 },
+      {    0.000240e-6,    12489.885628707,  5.684549045 },
+   /* 351, 360 */
+      {    0.000216e-6,     6303.851245484,  3.862942261 },
+      {    0.000203e-6,     1581.959348283,  5.549853589 },
+      {    0.000200e-6,     5642.198242609,  1.016115785 },
+      {    0.000197e-6,      -70.849445304,  4.690702525 },
+      {    0.000227e-6,     6287.008003254,  2.911891613 },
+      {    0.000197e-6,      533.623118358,  1.048982898 },
+      {    0.000205e-6,    -6279.485421340,  1.829362730 },
+      {    0.000209e-6,   -10988.808157535,  2.636140084 },
+      {    0.000208e-6,     -227.526189440,  4.127883842 },
+      {    0.000191e-6,      415.552490612,  4.401165650 },
+   /* 361, 370 */
+      {    0.000190e-6,    29296.615389579,  4.175658539 },
+      {    0.000264e-6,    66567.485864652,  4.601102551 },
+      {    0.000256e-6,    -3646.350377354,  0.506364778 },
+      {    0.000188e-6,    13119.721102825,  2.032195842 },
+      {    0.000185e-6,     -209.366942175,  4.694756586 },
+      {    0.000198e-6,    25934.124331089,  3.832703118 },
+      {    0.000195e-6,     4061.219215394,  3.308463427 },
+      {    0.000234e-6,     5113.487598583,  1.716090661 },
+      {    0.000188e-6,     1478.866574064,  5.686865780 },
+      {    0.000222e-6,    11823.161639450,  1.942386641 },
+   /* 371, 380 */
+      {    0.000181e-6,    10770.893256262,  1.999482059 },
+      {    0.000171e-6,     6546.159773364,  1.182807992 },
+      {    0.000206e-6,       70.328180442,  5.934076062 },
+      {    0.000169e-6,    20995.392966449,  2.169080622 },
+      {    0.000191e-6,    10660.686935042,  5.405515999 },
+      {    0.000228e-6,    33019.021112205,  4.656985514 },
+      {    0.000184e-6,    -4933.208440333,  3.327476868 },
+      {    0.000220e-6,     -135.625325010,  1.765430262 },
+      {    0.000166e-6,    23141.558382925,  3.454132746 },
+      {    0.000191e-6,     6144.558353121,  5.020393445 },
+   /* 381, 390 */
+      {    0.000180e-6,     6084.003848555,  0.602182191 },
+      {    0.000163e-6,    17782.732072784,  4.960593133 },
+      {    0.000225e-6,    16460.333529525,  2.596451817 },
+      {    0.000222e-6,     5905.702242076,  3.731990323 },
+      {    0.000204e-6,      227.476132789,  5.636192701 },
+      {    0.000159e-6,    16737.577236597,  3.600691544 },
+      {    0.000200e-6,     6805.653268085,  0.868220961 },
+      {    0.000187e-6,    11919.140866668,  2.629456641 },
+      {    0.000161e-6,      127.471796607,  2.862574720 },
+      {    0.000205e-6,     6286.666278643,  1.742882331 },
+   /* 391, 400 */
+      {    0.000189e-6,      153.778810485,  4.812372643 },
+      {    0.000168e-6,    16723.350142595,  0.027860588 },
+      {    0.000149e-6,    11720.068865232,  0.659721876 },
+      {    0.000189e-6,     5237.921013804,  5.245313000 },
+      {    0.000143e-6,     6709.674040867,  4.317625647 },
+      {    0.000146e-6,     4487.817406270,  4.815297007 },
+      {    0.000144e-6,     -664.756045130,  5.381366880 },
+      {    0.000175e-6,     5127.714692584,  4.728443327 },
+      {    0.000162e-6,     6254.626662524,  1.435132069 },
+      {    0.000187e-6,    47162.516354635,  1.354371923 },
+   /* 401, 410 */
+      {    0.000146e-6,    11080.171578918,  3.369695406 },
+      {    0.000180e-6,     -348.924420448,  2.490902145 },
+      {    0.000148e-6,      151.047669843,  3.799109588 },
+      {    0.000157e-6,     6197.248551160,  1.284375887 },
+      {    0.000167e-6,      146.594251718,  0.759969109 },
+      {    0.000133e-6,    -5331.357443741,  5.409701889 },
+      {    0.000154e-6,       95.979227218,  3.366890614 },
+      {    0.000148e-6,    -6418.140930027,  3.384104996 },
+      {    0.000128e-6,    -6525.804453965,  3.803419985 },
+      {    0.000130e-6,    11293.470674356,  0.939039445 },
+   /* 411, 420 */
+      {    0.000152e-6,    -5729.506447149,  0.734117523 },
+      {    0.000138e-6,      210.117701700,  2.564216078 },
+      {    0.000123e-6,     6066.595360816,  4.517099537 },
+      {    0.000140e-6,    18451.078546566,  0.642049130 },
+      {    0.000126e-6,    11300.584221356,  3.485280663 },
+      {    0.000119e-6,    10027.903195729,  3.217431161 },
+      {    0.000151e-6,     4274.518310832,  4.404359108 },
+      {    0.000117e-6,     6072.958148291,  0.366324650 },
+      {    0.000165e-6,    -7668.637425143,  4.298212528 },
+      {    0.000117e-6,    -6245.048177356,  5.379518958 },
+   /* 421, 430 */
+      {    0.000130e-6,    -5888.449964932,  4.527681115 },
+      {    0.000121e-6,     -543.918059096,  6.109429504 },
+      {    0.000162e-6,     9683.594581116,  5.720092446 },
+      {    0.000141e-6,     6219.339951688,  0.679068671 },
+      {    0.000118e-6,    22743.409379516,  4.881123092 },
+      {    0.000129e-6,     1692.165669502,  0.351407289 },
+      {    0.000126e-6,     5657.405657679,  5.146592349 },
+      {    0.000114e-6,      728.762966531,  0.520791814 },
+      {    0.000120e-6,       52.596639600,  0.948516300 },
+      {    0.000115e-6,       65.220371012,  3.504914846 },
+   /* 431, 440 */
+      {    0.000126e-6,     5881.403728234,  5.577502482 },
+      {    0.000158e-6,   163096.180360983,  2.957128968 },
+      {    0.000134e-6,    12341.806904281,  2.598576764 },
+      {    0.000151e-6,    16627.370915377,  3.985702050 },
+      {    0.000109e-6,     1368.660252845,  0.014730471 },
+      {    0.000131e-6,     6211.263196841,  0.085077024 },
+      {    0.000146e-6,     5792.741760812,  0.708426604 },
+      {    0.000146e-6,      -77.750543984,  3.121576600 },
+      {    0.000107e-6,     5341.013788022,  0.288231904 },
+      {    0.000138e-6,     6281.591377283,  2.797450317 },
+   /* 441, 450 */
+      {    0.000113e-6,    -6277.552925684,  2.788904128 },
+      {    0.000115e-6,     -525.758811831,  5.895222200 },
+      {    0.000138e-6,     6016.468808270,  6.096188999 },
+      {    0.000139e-6,    23539.707386333,  2.028195445 },
+      {    0.000146e-6,    -4176.041342449,  4.660008502 },
+      {    0.000107e-6,    16062.184526117,  4.066520001 },
+      {    0.000142e-6,    83783.548222473,  2.936315115 },
+      {    0.000128e-6,     9380.959672717,  3.223844306 },
+      {    0.000135e-6,     6205.325306007,  1.638054048 },
+      {    0.000101e-6,     2699.734819318,  5.481603249 },
+   /* 451, 460 */
+      {    0.000104e-6,     -568.821874027,  2.205734493 },
+      {    0.000103e-6,     6321.103522627,  2.440421099 },
+      {    0.000119e-6,     6321.208885629,  2.547496264 },
+      {    0.000138e-6,     1975.492545856,  2.314608466 },
+      {    0.000121e-6,      137.033024162,  4.539108237 },
+      {    0.000123e-6,    19402.796952817,  4.538074405 },
+      {    0.000119e-6,    22805.735565994,  2.869040566 },
+      {    0.000133e-6,    64471.991241142,  6.056405489 },
+      {    0.000129e-6,      -85.827298831,  2.540635083 },
+      {    0.000131e-6,    13613.804277336,  4.005732868 },
+   /* 461, 470 */
+      {    0.000104e-6,     9814.604100291,  1.959967212 },
+      {    0.000112e-6,    16097.679950283,  3.589026260 },
+      {    0.000123e-6,     2107.034507542,  1.728627253 },
+      {    0.000121e-6,    36949.230808424,  6.072332087 },
+      {    0.000108e-6,   -12539.853380183,  3.716133846 },
+      {    0.000113e-6,    -7875.671863624,  2.725771122 },
+      {    0.000109e-6,     4171.425536614,  4.033338079 },
+      {    0.000101e-6,     6247.911759770,  3.441347021 },
+      {    0.000113e-6,     7330.728427345,  0.656372122 },
+      {    0.000113e-6,    51092.726050855,  2.791483066 },
+   /* 471, 480 */
+      {    0.000106e-6,     5621.842923210,  1.815323326 },
+      {    0.000101e-6,      111.430161497,  5.711033677 },
+      {    0.000103e-6,      909.818733055,  2.812745443 },
+      {    0.000101e-6,     1790.642637886,  1.965746028 },
+
+   /* T */
+      {  102.156724e-6,     6283.075849991,  4.249032005 },
+      {    1.706807e-6,    12566.151699983,  4.205904248 },
+      {    0.269668e-6,      213.299095438,  3.400290479 },
+      {    0.265919e-6,      529.690965095,  5.836047367 },
+      {    0.210568e-6,       -3.523118349,  6.262738348 },
+      {    0.077996e-6,     5223.693919802,  4.670344204 },
+   /* 481, 490 */
+      {    0.054764e-6,     1577.343542448,  4.534800170 },
+      {    0.059146e-6,       26.298319800,  1.083044735 },
+      {    0.034420e-6,     -398.149003408,  5.980077351 },
+      {    0.032088e-6,    18849.227549974,  4.162913471 },
+      {    0.033595e-6,     5507.553238667,  5.980162321 },
+      {    0.029198e-6,     5856.477659115,  0.623811863 },
+      {    0.027764e-6,      155.420399434,  3.745318113 },
+      {    0.025190e-6,     5746.271337896,  2.980330535 },
+      {    0.022997e-6,     -796.298006816,  1.174411803 },
+      {    0.024976e-6,     5760.498431898,  2.467913690 },
+   /* 491, 500 */
+      {    0.021774e-6,      206.185548437,  3.854787540 },
+      {    0.017925e-6,     -775.522611324,  1.092065955 },
+      {    0.013794e-6,      426.598190876,  2.699831988 },
+      {    0.013276e-6,     6062.663207553,  5.845801920 },
+      {    0.011774e-6,    12036.460734888,  2.292832062 },
+      {    0.012869e-6,     6076.890301554,  5.333425680 },
+      {    0.012152e-6,     1059.381930189,  6.222874454 },
+      {    0.011081e-6,       -7.113547001,  5.154724984 },
+      {    0.010143e-6,     4694.002954708,  4.044013795 },
+      {    0.009357e-6,     5486.777843175,  3.416081409 },
+   /* 501, 510 */
+      {    0.010084e-6,      522.577418094,  0.749320262 },
+      {    0.008587e-6,    10977.078804699,  2.777152598 },
+      {    0.008628e-6,     6275.962302991,  4.562060226 },
+      {    0.008158e-6,     -220.412642439,  5.806891533 },
+      {    0.007746e-6,     2544.314419883,  1.603197066 },
+      {    0.007670e-6,     2146.165416475,  3.000200440 },
+      {    0.007098e-6,       74.781598567,  0.443725817 },
+      {    0.006180e-6,     -536.804512095,  1.302642751 },
+      {    0.005818e-6,     5088.628839767,  4.827723531 },
+      {    0.004945e-6,    -6286.598968340,  0.268305170 },
+   /* 511, 520 */
+      {    0.004774e-6,     1349.867409659,  5.808636673 },
+      {    0.004687e-6,     -242.728603974,  5.154890570 },
+      {    0.006089e-6,     1748.016413067,  4.403765209 },
+      {    0.005975e-6,    -1194.447010225,  2.583472591 },
+      {    0.004229e-6,      951.718406251,  0.931172179 },
+      {    0.005264e-6,      553.569402842,  2.336107252 },
+      {    0.003049e-6,     5643.178563677,  1.362634430 },
+      {    0.002974e-6,     6812.766815086,  1.583012668 },
+      {    0.003403e-6,    -2352.866153772,  2.552189886 },
+      {    0.003030e-6,      419.484643875,  5.286473844 },
+   /* 521, 530 */
+      {    0.003210e-6,       -7.046236698,  1.863796539 },
+      {    0.003058e-6,     9437.762934887,  4.226420633 },
+      {    0.002589e-6,    12352.852604545,  1.991935820 },
+      {    0.002927e-6,     5216.580372801,  2.319951253 },
+      {    0.002425e-6,     5230.807466803,  3.084752833 },
+      {    0.002656e-6,     3154.687084896,  2.487447866 },
+      {    0.002445e-6,    10447.387839604,  2.347139160 },
+      {    0.002990e-6,     4690.479836359,  6.235872050 },
+      {    0.002890e-6,     5863.591206116,  0.095197563 },
+      {    0.002498e-6,     6438.496249426,  2.994779800 },
+   /* 531, 540 */
+      {    0.001889e-6,     8031.092263058,  3.569003717 },
+      {    0.002567e-6,      801.820931124,  3.425611498 },
+      {    0.001803e-6,   -71430.695617928,  2.192295512 },
+      {    0.001782e-6,        3.932153263,  5.180433689 },
+      {    0.001694e-6,    -4705.732307544,  4.641779174 },
+      {    0.001704e-6,    -1592.596013633,  3.997097652 },
+      {    0.001735e-6,     5849.364112115,  0.417558428 },
+      {    0.001643e-6,     8429.241266467,  2.180619584 },
+      {    0.001680e-6,       38.133035638,  4.164529426 },
+      {    0.002045e-6,     7084.896781115,  0.526323854 },
+   /* 541, 550 */
+      {    0.001458e-6,     4292.330832950,  1.356098141 },
+      {    0.001437e-6,       20.355319399,  3.895439360 },
+      {    0.001738e-6,     6279.552731642,  0.087484036 },
+      {    0.001367e-6,    14143.495242431,  3.987576591 },
+      {    0.001344e-6,     7234.794256242,  0.090454338 },
+      {    0.001438e-6,    11499.656222793,  0.974387904 },
+      {    0.001257e-6,     6836.645252834,  1.509069366 },
+      {    0.001358e-6,    11513.883316794,  0.495572260 },
+      {    0.001628e-6,     7632.943259650,  4.968445721 },
+      {    0.001169e-6,      103.092774219,  2.838496795 },
+   /* 551, 560 */
+      {    0.001162e-6,     4164.311989613,  3.408387778 },
+      {    0.001092e-6,     6069.776754553,  3.617942651 },
+      {    0.001008e-6,    17789.845619785,  0.286350174 },
+      {    0.001008e-6,      639.897286314,  1.610762073 },
+      {    0.000918e-6,    10213.285546211,  5.532798067 },
+      {    0.001011e-6,    -6256.777530192,  0.661826484 },
+      {    0.000753e-6,    16730.463689596,  3.905030235 },
+      {    0.000737e-6,    11926.254413669,  4.641956361 },
+      {    0.000694e-6,     3340.612426700,  2.111120332 },
+      {    0.000701e-6,     3894.181829542,  2.760823491 },
+   /* 561, 570 */
+      {    0.000689e-6,     -135.065080035,  4.768800780 },
+      {    0.000700e-6,    13367.972631107,  5.760439898 },
+      {    0.000664e-6,     6040.347246017,  1.051215840 },
+      {    0.000654e-6,     5650.292110678,  4.911332503 },
+      {    0.000788e-6,     6681.224853400,  4.699648011 },
+      {    0.000628e-6,     5333.900241022,  5.024608847 },
+      {    0.000755e-6,     -110.206321219,  4.370971253 },
+      {    0.000628e-6,     6290.189396992,  3.660478857 },
+      {    0.000635e-6,    25132.303399966,  4.121051532 },
+      {    0.000534e-6,     5966.683980335,  1.173284524 },
+   /* 571, 580 */
+      {    0.000543e-6,     -433.711737877,  0.345585464 },
+      {    0.000517e-6,    -1990.745017041,  5.414571768 },
+      {    0.000504e-6,     5767.611978898,  2.328281115 },
+      {    0.000485e-6,     5753.384884897,  1.685874771 },
+      {    0.000463e-6,     7860.419392439,  5.297703006 },
+      {    0.000604e-6,      515.463871093,  0.591998446 },
+      {    0.000443e-6,    12168.002696575,  4.830881244 },
+      {    0.000570e-6,      199.072001436,  3.899190272 },
+      {    0.000465e-6,    10969.965257698,  0.476681802 },
+      {    0.000424e-6,    -7079.373856808,  1.112242763 },
+   /* 581, 590 */
+      {    0.000427e-6,      735.876513532,  1.994214480 },
+      {    0.000478e-6,    -6127.655450557,  3.778025483 },
+      {    0.000414e-6,    10973.555686350,  5.441088327 },
+      {    0.000512e-6,     1589.072895284,  0.107123853 },
+      {    0.000378e-6,    10984.192351700,  0.915087231 },
+      {    0.000402e-6,    11371.704689758,  4.107281715 },
+      {    0.000453e-6,     9917.696874510,  1.917490952 },
+      {    0.000395e-6,      149.563197135,  2.763124165 },
+      {    0.000371e-6,     5739.157790895,  3.112111866 },
+      {    0.000350e-6,    11790.629088659,  0.440639857 },
+   /* 591, 600 */
+      {    0.000356e-6,     6133.512652857,  5.444568842 },
+      {    0.000344e-6,      412.371096874,  5.676832684 },
+      {    0.000383e-6,      955.599741609,  5.559734846 },
+      {    0.000333e-6,     6496.374945429,  0.261537984 },
+      {    0.000340e-6,     6055.549660552,  5.975534987 },
+      {    0.000334e-6,     1066.495477190,  2.335063907 },
+      {    0.000399e-6,    11506.769769794,  5.321230910 },
+      {    0.000314e-6,    18319.536584880,  2.313312404 },
+      {    0.000424e-6,     1052.268383188,  1.211961766 },
+      {    0.000307e-6,       63.735898303,  3.169551388 },
+   /* 601, 610 */
+      {    0.000329e-6,       29.821438149,  6.106912080 },
+      {    0.000357e-6,     6309.374169791,  4.223760346 },
+      {    0.000312e-6,    -3738.761430108,  2.180556645 },
+      {    0.000301e-6,      309.278322656,  1.499984572 },
+      {    0.000268e-6,    12043.574281889,  2.447520648 },
+      {    0.000257e-6,    12491.370101415,  3.662331761 },
+      {    0.000290e-6,      625.670192312,  1.272834584 },
+      {    0.000256e-6,     5429.879468239,  1.913426912 },
+      {    0.000339e-6,     3496.032826134,  4.165930011 },
+      {    0.000283e-6,     3930.209696220,  4.325565754 },
+   /* 611, 620 */
+      {    0.000241e-6,    12528.018664345,  3.832324536 },
+      {    0.000304e-6,     4686.889407707,  1.612348468 },
+      {    0.000259e-6,    16200.772724501,  3.470173146 },
+      {    0.000238e-6,    12139.553509107,  1.147977842 },
+      {    0.000236e-6,     6172.869528772,  3.776271728 },
+      {    0.000296e-6,    -7058.598461315,  0.460368852 },
+      {    0.000306e-6,    10575.406682942,  0.554749016 },
+      {    0.000251e-6,    17298.182327326,  0.834332510 },
+      {    0.000290e-6,     4732.030627343,  4.759564091 },
+      {    0.000261e-6,     5884.926846583,  0.298259862 },
+   /* 621, 630 */
+      {    0.000249e-6,     5547.199336460,  3.749366406 },
+      {    0.000213e-6,    11712.955318231,  5.415666119 },
+      {    0.000223e-6,     4701.116501708,  2.703203558 },
+      {    0.000268e-6,     -640.877607382,  0.283670793 },
+      {    0.000209e-6,     5636.065016677,  1.238477199 },
+      {    0.000193e-6,    10177.257679534,  1.943251340 },
+      {    0.000182e-6,     6283.143160294,  2.456157599 },
+      {    0.000184e-6,     -227.526189440,  5.888038582 },
+      {    0.000182e-6,    -6283.008539689,  0.241332086 },
+      {    0.000228e-6,    -6284.056171060,  2.657323816 },
+   /* 631, 640 */
+      {    0.000166e-6,     7238.675591600,  5.930629110 },
+      {    0.000167e-6,     3097.883822726,  5.570955333 },
+      {    0.000159e-6,     -323.505416657,  5.786670700 },
+      {    0.000154e-6,    -4136.910433516,  1.517805532 },
+      {    0.000176e-6,    12029.347187887,  3.139266834 },
+      {    0.000167e-6,    12132.439962106,  3.556352289 },
+      {    0.000153e-6,      202.253395174,  1.463313961 },
+      {    0.000157e-6,    17267.268201691,  1.586837396 },
+      {    0.000142e-6,    83996.847317911,  0.022670115 },
+      {    0.000152e-6,    17260.154654690,  0.708528947 },
+   /* 641, 650 */
+      {    0.000144e-6,     6084.003848555,  5.187075177 },
+      {    0.000135e-6,     5756.566278634,  1.993229262 },
+      {    0.000134e-6,     5750.203491159,  3.457197134 },
+      {    0.000144e-6,     5326.786694021,  6.066193291 },
+      {    0.000160e-6,    11015.106477335,  1.710431974 },
+      {    0.000133e-6,     3634.621024518,  2.836451652 },
+      {    0.000134e-6,    18073.704938650,  5.453106665 },
+      {    0.000134e-6,     1162.474704408,  5.326898811 },
+      {    0.000128e-6,     5642.198242609,  2.511652591 },
+      {    0.000160e-6,      632.783739313,  5.628785365 },
+   /* 651, 660 */
+      {    0.000132e-6,    13916.019109642,  0.819294053 },
+      {    0.000122e-6,    14314.168113050,  5.677408071 },
+      {    0.000125e-6,    12359.966151546,  5.251984735 },
+      {    0.000121e-6,     5749.452731634,  2.210924603 },
+      {    0.000136e-6,     -245.831646229,  1.646502367 },
+      {    0.000120e-6,     5757.317038160,  3.240883049 },
+      {    0.000134e-6,    12146.667056108,  3.059480037 },
+      {    0.000137e-6,     6206.809778716,  1.867105418 },
+      {    0.000141e-6,    17253.041107690,  2.069217456 },
+      {    0.000129e-6,    -7477.522860216,  2.781469314 },
+   /* 661, 670 */
+      {    0.000116e-6,     5540.085789459,  4.281176991 },
+      {    0.000116e-6,     9779.108676125,  3.320925381 },
+      {    0.000129e-6,     5237.921013804,  3.497704076 },
+      {    0.000113e-6,     5959.570433334,  0.983210840 },
+      {    0.000122e-6,     6282.095528923,  2.674938860 },
+      {    0.000140e-6,      -11.045700264,  4.957936982 },
+      {    0.000108e-6,    23543.230504682,  1.390113589 },
+      {    0.000106e-6,   -12569.674818332,  0.429631317 },
+      {    0.000110e-6,     -266.607041722,  5.501340197 },
+      {    0.000115e-6,    12559.038152982,  4.691456618 },
+   /* 671, 680 */
+      {    0.000134e-6,    -2388.894020449,  0.577313584 },
+      {    0.000109e-6,    10440.274292604,  6.218148717 },
+      {    0.000102e-6,     -543.918059096,  1.477842615 },
+      {    0.000108e-6,    21228.392023546,  2.237753948 },
+      {    0.000101e-6,    -4535.059436924,  3.100492232 },
+      {    0.000103e-6,       76.266071276,  5.594294322 },
+      {    0.000104e-6,      949.175608970,  5.674287810 },
+      {    0.000101e-6,    13517.870106233,  2.196632348 },
+      {    0.000100e-6,    11933.367960670,  4.056084160 },
+
+   /* T^2 */
+      {    4.322990e-6,     6283.075849991,  2.642893748 },
+   /* 681, 690 */
+      {    0.406495e-6,        0.000000000,  4.712388980 },
+      {    0.122605e-6,    12566.151699983,  2.438140634 },
+      {    0.019476e-6,      213.299095438,  1.642186981 },
+      {    0.016916e-6,      529.690965095,  4.510959344 },
+      {    0.013374e-6,       -3.523118349,  1.502210314 },
+      {    0.008042e-6,       26.298319800,  0.478549024 },
+      {    0.007824e-6,      155.420399434,  5.254710405 },
+      {    0.004894e-6,     5746.271337896,  4.683210850 },
+      {    0.004875e-6,     5760.498431898,  0.759507698 },
+      {    0.004416e-6,     5223.693919802,  6.028853166 },
+   /* 691, 700 */
+      {    0.004088e-6,       -7.113547001,  0.060926389 },
+      {    0.004433e-6,    77713.771467920,  3.627734103 },
+      {    0.003277e-6,    18849.227549974,  2.327912542 },
+      {    0.002703e-6,     6062.663207553,  1.271941729 },
+      {    0.003435e-6,     -775.522611324,  0.747446224 },
+      {    0.002618e-6,     6076.890301554,  3.633715689 },
+      {    0.003146e-6,      206.185548437,  5.647874613 },
+      {    0.002544e-6,     1577.343542448,  6.232904270 },
+      {    0.002218e-6,     -220.412642439,  1.309509946 },
+      {    0.002197e-6,     5856.477659115,  2.407212349 },
+   /* 701, 710 */
+      {    0.002897e-6,     5753.384884897,  5.863842246 },
+      {    0.001766e-6,      426.598190876,  0.754113147 },
+      {    0.001738e-6,     -796.298006816,  2.714942671 },
+      {    0.001695e-6,      522.577418094,  2.629369842 },
+      {    0.001584e-6,     5507.553238667,  1.341138229 },
+      {    0.001503e-6,     -242.728603974,  0.377699736 },
+      {    0.001552e-6,     -536.804512095,  2.904684667 },
+      {    0.001370e-6,     -398.149003408,  1.265599125 },
+      {    0.001889e-6,    -5573.142801634,  4.413514859 },
+      {    0.001722e-6,     6069.776754553,  2.445966339 },
+   /* 711, 720 */
+      {    0.001124e-6,     1059.381930189,  5.041799657 },
+      {    0.001258e-6,      553.569402842,  3.849557278 },
+      {    0.000831e-6,      951.718406251,  2.471094709 },
+      {    0.000767e-6,     4694.002954708,  5.363125422 },
+      {    0.000756e-6,     1349.867409659,  1.046195744 },
+      {    0.000775e-6,      -11.045700264,  0.245548001 },
+      {    0.000597e-6,     2146.165416475,  4.543268798 },
+      {    0.000568e-6,     5216.580372801,  4.178853144 },
+      {    0.000711e-6,     1748.016413067,  5.934271972 },
+      {    0.000499e-6,    12036.460734888,  0.624434410 },
+   /* 721, 730 */
+      {    0.000671e-6,    -1194.447010225,  4.136047594 },
+      {    0.000488e-6,     5849.364112115,  2.209679987 },
+      {    0.000621e-6,     6438.496249426,  4.518860804 },
+      {    0.000495e-6,    -6286.598968340,  1.868201275 },
+      {    0.000456e-6,     5230.807466803,  1.271231591 },
+      {    0.000451e-6,     5088.628839767,  0.084060889 },
+      {    0.000435e-6,     5643.178563677,  3.324456609 },
+      {    0.000387e-6,    10977.078804699,  4.052488477 },
+      {    0.000547e-6,   161000.685737473,  2.841633844 },
+      {    0.000522e-6,     3154.687084896,  2.171979966 },
+   /* 731, 740 */
+      {    0.000375e-6,     5486.777843175,  4.983027306 },
+      {    0.000421e-6,     5863.591206116,  4.546432249 },
+      {    0.000439e-6,     7084.896781115,  0.522967921 },
+      {    0.000309e-6,     2544.314419883,  3.172606705 },
+      {    0.000347e-6,     4690.479836359,  1.479586566 },
+      {    0.000317e-6,      801.820931124,  3.553088096 },
+      {    0.000262e-6,      419.484643875,  0.606635550 },
+      {    0.000248e-6,     6836.645252834,  3.014082064 },
+      {    0.000245e-6,    -1592.596013633,  5.519526220 },
+      {    0.000225e-6,     4292.330832950,  2.877956536 },
+   /* 741, 750 */
+      {    0.000214e-6,     7234.794256242,  1.605227587 },
+      {    0.000205e-6,     5767.611978898,  0.625804796 },
+      {    0.000180e-6,    10447.387839604,  3.499954526 },
+      {    0.000229e-6,      199.072001436,  5.632304604 },
+      {    0.000214e-6,      639.897286314,  5.960227667 },
+      {    0.000175e-6,     -433.711737877,  2.162417992 },
+      {    0.000209e-6,      515.463871093,  2.322150893 },
+      {    0.000173e-6,     6040.347246017,  2.556183691 },
+      {    0.000184e-6,     6309.374169791,  4.732296790 },
+      {    0.000227e-6,   149854.400134205,  5.385812217 },
+   /* 751, 760 */
+      {    0.000154e-6,     8031.092263058,  5.120720920 },
+      {    0.000151e-6,     5739.157790895,  4.815000443 },
+      {    0.000197e-6,     7632.943259650,  0.222827271 },
+      {    0.000197e-6,       74.781598567,  3.910456770 },
+      {    0.000138e-6,     6055.549660552,  1.397484253 },
+      {    0.000149e-6,    -6127.655450557,  5.333727496 },
+      {    0.000137e-6,     3894.181829542,  4.281749907 },
+      {    0.000135e-6,     9437.762934887,  5.979971885 },
+      {    0.000139e-6,    -2352.866153772,  4.715630782 },
+      {    0.000142e-6,     6812.766815086,  0.513330157 },
+   /* 761, 770 */
+      {    0.000120e-6,    -4705.732307544,  0.194160689 },
+      {    0.000131e-6,   -71430.695617928,  0.000379226 },
+      {    0.000124e-6,     6279.552731642,  2.122264908 },
+      {    0.000108e-6,    -6256.777530192,  0.883445696 },
+
+   /* T^3 */
+      {    0.143388e-6,     6283.075849991,  1.131453581 },
+      {    0.006671e-6,    12566.151699983,  0.775148887 },
+      {    0.001480e-6,      155.420399434,  0.480016880 },
+      {    0.000934e-6,      213.299095438,  6.144453084 },
+      {    0.000795e-6,      529.690965095,  2.941595619 },
+      {    0.000673e-6,     5746.271337896,  0.120415406 },
+   /* 771, 780 */
+      {    0.000672e-6,     5760.498431898,  5.317009738 },
+      {    0.000389e-6,     -220.412642439,  3.090323467 },
+      {    0.000373e-6,     6062.663207553,  3.003551964 },
+      {    0.000360e-6,     6076.890301554,  1.918913041 },
+      {    0.000316e-6,      -21.340641002,  5.545798121 },
+      {    0.000315e-6,     -242.728603974,  1.884932563 },
+      {    0.000278e-6,      206.185548437,  1.266254859 },
+      {    0.000238e-6,     -536.804512095,  4.532664830 },
+      {    0.000185e-6,      522.577418094,  4.578313856 },
+      {    0.000245e-6,    18849.227549974,  0.587467082 },
+   /* 781, 787 */
+      {    0.000180e-6,      426.598190876,  5.151178553 },
+      {    0.000200e-6,      553.569402842,  5.355983739 },
+      {    0.000141e-6,     5223.693919802,  1.336556009 },
+      {    0.000104e-6,     5856.477659115,  4.239842759 },
+
+   /* T^4 */
+      {    0.003826e-6,     6283.075849991,  5.705257275 },
+      {    0.000303e-6,    12566.151699983,  5.407132842 },
+      {    0.000209e-6,      155.420399434,  1.989815753 }
+   };
+
+
+/* Time since J2000.0 in Julian millennia. */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJM;
+
+/* ================= */
+/* Topocentric terms */
+/* ================= */
+
+/* Convert UT to local solar time in radians. */
+   tsol = fmod(ut, 1.0) * ERFA_D2PI + elong;
+
+/* FUNDAMENTAL ARGUMENTS:  Simon et al. 1994. */
+
+/* Combine time argument (millennia) with deg/arcsec factor. */
+   w = t / 3600.0;
+
+/* Sun Mean Longitude. */
+   elsun = fmod(280.46645683 + 1296027711.03429 * w, 360.0) * ERFA_DD2R;
+
+/* Sun Mean Anomaly. */
+   emsun = fmod(357.52910918 + 1295965810.481 * w, 360.0) * ERFA_DD2R;
+
+/* Mean Elongation of Moon from Sun. */
+   d = fmod(297.85019547 + 16029616012.090 * w, 360.0) * ERFA_DD2R;
+
+/* Mean Longitude of Jupiter. */
+   elj = fmod(34.35151874 + 109306899.89453 * w, 360.0) * ERFA_DD2R;
+
+/* Mean Longitude of Saturn. */
+   els = fmod(50.07744430 + 44046398.47038 * w, 360.0) * ERFA_DD2R;
+
+/* TOPOCENTRIC TERMS:  Moyer 1981 and Murray 1983. */
+   wt =   +  0.00029e-10 * u * sin(tsol + elsun - els)
+          +  0.00100e-10 * u * sin(tsol - 2.0 * emsun)
+          +  0.00133e-10 * u * sin(tsol - d)
+          +  0.00133e-10 * u * sin(tsol + elsun - elj)
+          -  0.00229e-10 * u * sin(tsol + 2.0 * elsun + emsun)
+          -  0.02200e-10 * v * cos(elsun + emsun)
+          +  0.05312e-10 * u * sin(tsol - emsun)
+          -  0.13677e-10 * u * sin(tsol + 2.0 * elsun)
+          -  1.31840e-10 * v * cos(elsun)
+          +  3.17679e-10 * u * sin(tsol);
+
+/* ===================== */
+/* Fairhead et al. model */
+/* ===================== */
+
+/* T**0 */
+   w0 = 0;
+   for (j = 473; j >= 0; j--) {
+      w0 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]);
+   }
+
+/* T**1 */
+   w1 = 0;
+   for (j = 678; j >= 474; j--) {
+      w1 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]);
+   }
+
+/* T**2 */
+   w2 = 0;
+   for (j = 763; j >= 679; j--) {
+      w2 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]);
+   }
+
+/* T**3 */
+   w3 = 0;
+   for (j = 783; j >= 764; j--) {
+      w3 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]);
+   }
+
+/* T**4 */
+   w4 = 0;
+   for (j = 786; j >= 784; j--) {
+      w4 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]);
+   }
+
+/* Multiply by powers of T and combine. */
+   wf = t * (t * (t * (t * w4 + w3) + w2) + w1) + w0;
+
+/* Adjustments to use JPL planetary masses instead of IAU. */
+   wj =   0.00065e-6 * sin(6069.776754 * t + 4.021194) +
+          0.00033e-6 * sin( 213.299095 * t + 5.543132) +
+        (-0.00196e-6 * sin(6208.294251 * t + 5.696701)) +
+        (-0.00173e-6 * sin(  74.781599 * t + 2.435900)) +
+          0.03638e-6 * t * t;
+
+/* ============ */
+/* Final result */
+/* ============ */
+
+/* TDB-TT in seconds. */
+   w = wt + wf + wj;
+
+   return w;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/dtf2d.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/dtf2d.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/dtf2d.c	(revision 18732)
@@ -0,0 +1,212 @@
+#include "erfa.h"
+#include <string.h>
+
+int eraDtf2d(const char *scale, int iy, int im, int id,
+             int ihr, int imn, double sec, double *d1, double *d2)
+/*
+**  - - - - - - - - -
+**   e r a D t f 2 d
+**  - - - - - - - - -
+**
+**  Encode date and time fields into 2-part Julian Date (or in the case
+**  of UTC a quasi-JD form that includes special provision for leap
+**  seconds).
+**
+**  Given:
+**     scale     char[]  time scale ID (Note 1)
+**     iy,im,id  int     year, month, day in Gregorian calendar (Note 2)
+**     ihr,imn   int     hour, minute
+**     sec       double  seconds
+**
+**  Returned:
+**     d1,d2     double  2-part Julian Date (Notes 3,4)
+**
+**  Returned (function value):
+**               int     status: +3 = both of next two
+**                               +2 = time is after end of day (Note 5)
+**                               +1 = dubious year (Note 6)
+**                                0 = OK
+**                               -1 = bad year
+**                               -2 = bad month
+**                               -3 = bad day
+**                               -4 = bad hour
+**                               -5 = bad minute
+**                               -6 = bad second (<0)
+**
+**  Notes:
+**
+**  1) scale identifies the time scale.  Only the value "UTC" (in upper
+**     case) is significant, and enables handling of leap seconds (see
+**     Note 4).
+**
+**  2) For calendar conventions and limitations, see eraCal2jd.
+**
+**  3) The sum of the results, d1+d2, is Julian Date, where normally d1
+**     is the Julian Day Number and d2 is the fraction of a day.  In the
+**     case of UTC, where the use of JD is problematical, special
+**     conventions apply:  see the next note.
+**
+**  4) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The ERFA internal convention is that
+**     the quasi-JD day represents UTC days whether the length is 86399,
+**     86400 or 86401 SI seconds.  In the 1960-1972 era there were
+**     smaller jumps (in either direction) each time the linear UTC(TAI)
+**     expression was changed, and these "mini-leaps" are also included
+**     in the ERFA convention.
+**
+**  5) The warning status "time is after end of day" usually means that
+**     the sec argument is greater than 60.0.  However, in a day ending
+**     in a leap second the limit changes to 61.0 (or 59.0 in the case
+**     of a negative leap second).
+**
+**  6) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  7) Only in the case of continuous and regular time scales (TAI, TT,
+**     TCG, TCB and TDB) is the result d1+d2 a Julian Date, strictly
+**     speaking.  In the other cases (UT1 and UTC) the result must be
+**     used with circumspection;  in particular the difference between
+**     two such results cannot be interpreted as a precise time
+**     interval.
+**
+**  Called:
+**     eraCal2jd    Gregorian calendar to JD
+**     eraDat       delta(AT) = TAI-UTC
+**     eraJd2cal    JD to Gregorian calendar
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int js, iy2, im2, id2;
+   double dj, w, day, seclim, dat0, dat12, dat24, dleap, time;
+
+
+/* Today's Julian Day Number. */
+   js = eraCal2jd(iy, im, id, &dj, &w);
+   if ( js ) return js;
+   dj += w;
+
+/* Day length and final minute length in seconds (provisional). */
+   day = ERFA_DAYSEC;
+   seclim = 60.0;
+
+/* Deal with the UTC leap second case. */
+   if ( ! strcmp(scale,"UTC") ) {
+
+   /* TAI-UTC at 0h today. */
+      js = eraDat(iy, im, id, 0.0, &dat0);
+      if ( js < 0 ) return js;
+
+   /* TAI-UTC at 12h today (to detect drift). */
+      js = eraDat(iy, im, id, 0.5, &dat12);
+      if ( js < 0 ) return js;
+
+   /* TAI-UTC at 0h tomorrow (to detect jumps). */
+      js = eraJd2cal ( dj, 1.5, &iy2, &im2, &id2, &w);
+      if ( js ) return js;
+      js = eraDat(iy2, im2, id2, 0.0, &dat24);
+      if ( js < 0 ) return js;
+
+   /* Any sudden change in TAI-UTC between today and tomorrow. */
+      dleap = dat24 - (2.0*dat12 - dat0);
+
+   /* If leap second day, correct the day and final minute lengths. */
+      day += dleap;
+      if ( ihr == 23 && imn == 59 ) seclim += dleap;
+
+   /* End of UTC-specific actions. */
+   }
+
+/* Validate the time. */
+   if ( ihr >= 0 && ihr <= 23 ) {
+      if ( imn >= 0 && imn <= 59 ) {
+         if ( sec >= 0 ) {
+            if ( sec >= seclim ) {
+               js += 2;
+            }
+         } else {
+            js = -6;
+         }
+      } else {
+         js = -5;
+      }
+   } else {
+      js = -4;
+   }
+   if ( js < 0 ) return js;
+
+/* The time in days. */
+   time  = ( 60.0 * ( (double) ( 60 * ihr + imn ) ) + sec ) / day;
+
+/* Return the date and time. */
+   *d1 = dj;
+   *d2 = time;
+
+/* Status. */
+   return js;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ee00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ee00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ee00.c	(revision 18732)
@@ -0,0 +1,137 @@
+#include "erfa.h"
+
+double eraEe00(double date1, double date2, double epsa, double dpsi)
+/*
+**  - - - - - - - -
+**   e r a E e 0 0
+**  - - - - - - - -
+**
+**  The equation of the equinoxes, compatible with IAU 2000 resolutions,
+**  given the nutation in longitude and the mean obliquity.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**     epsa         double    mean obliquity (Note 2)
+**     dpsi         double    nutation in longitude (Note 3)
+**
+**  Returned (function value):
+**                  double    equation of the equinoxes (Note 4)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The obliquity, in radians, is mean of date.
+**
+**  3) The result, which is in radians, operates in the following sense:
+**
+**        Greenwich apparent ST = GMST + equation of the equinoxes
+**
+**  4) The result is compatible with the IAU 2000 resolutions.  For
+**     further details, see IERS Conventions 2003 and Capitaine et al.
+**     (2002).
+**
+**  Called:
+**     eraEect00    equation of the equinoxes complementary terms
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double ee;
+
+
+/* Equation of the equinoxes. */
+   ee = dpsi * cos(epsa) + eraEect00(date1, date2);
+
+   return ee;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ee00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ee00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ee00a.c	(revision 18732)
@@ -0,0 +1,144 @@
+#include "erfa.h"
+
+double eraEe00a(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a E e 0 0 a
+**  - - - - - - - - -
+**
+**  Equation of the equinoxes, compatible with IAU 2000 resolutions.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    equation of the equinoxes (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result, which is in radians, operates in the following sense:
+**
+**        Greenwich apparent ST = GMST + equation of the equinoxes
+**
+**  3) The result is compatible with the IAU 2000 resolutions.  For
+**     further details, see IERS Conventions 2003 and Capitaine et al.
+**     (2002).
+**
+**  Called:
+**     eraPr00      IAU 2000 precession adjustments
+**     eraObl80     mean obliquity, IAU 1980
+**     eraNut00a    nutation, IAU 2000A
+**     eraEe00      equation of the equinoxes, IAU 2000
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003).
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsipr, depspr, epsa, dpsi, deps, ee;
+
+
+/* IAU 2000 precession-rate adjustments. */
+   eraPr00(date1, date2, &dpsipr, &depspr);
+
+/* Mean obliquity, consistent with IAU 2000 precession-nutation. */
+   epsa = eraObl80(date1, date2) + depspr;
+
+/* Nutation in longitude. */
+   eraNut00a(date1, date2, &dpsi, &deps);
+
+/* Equation of the equinoxes. */
+   ee = eraEe00(date1, date2, epsa, dpsi);
+
+   return ee;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ee00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ee00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ee00b.c	(revision 18732)
@@ -0,0 +1,150 @@
+#include "erfa.h"
+
+double eraEe00b(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a E e 0 0 b
+**  - - - - - - - - -
+**
+**  Equation of the equinoxes, compatible with IAU 2000 resolutions but
+**  using the truncated nutation model IAU 2000B.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    equation of the equinoxes (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result, which is in radians, operates in the following sense:
+**
+**        Greenwich apparent ST = GMST + equation of the equinoxes
+**
+**  3) The result is compatible with the IAU 2000 resolutions except
+**     that accuracy has been compromised for the sake of speed.  For
+**     further details, see McCarthy & Luzum (2001), IERS Conventions
+**     2003 and Capitaine et al. (2003).
+**
+**  Called:
+**     eraPr00      IAU 2000 precession adjustments
+**     eraObl80     mean obliquity, IAU 1980
+**     eraNut00b    nutation, IAU 2000B
+**     eraEe00      equation of the equinoxes, IAU 2000
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     McCarthy, D.D. & Luzum, B.J., "An abridged model of the
+**     precession-nutation of the celestial pole", Celestial Mechanics &
+**     Dynamical Astronomy, 85, 37-49 (2003)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsipr, depspr, epsa, dpsi, deps, ee;
+
+
+/* IAU 2000 precession-rate adjustments. */
+   eraPr00(date1, date2, &dpsipr, &depspr);
+
+/* Mean obliquity, consistent with IAU 2000 precession-nutation. */
+   epsa = eraObl80(date1, date2) + depspr;
+
+/* Nutation in longitude. */
+   eraNut00b(date1, date2, &dpsi, &deps);
+
+/* Equation of the equinoxes. */
+   ee = eraEe00(date1, date2, epsa, dpsi);
+
+   return ee;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ee06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ee06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ee06a.c	(revision 18732)
@@ -0,0 +1,131 @@
+#include "erfa.h"
+
+double eraEe06a(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a E e 0 6 a
+**  - - - - - - - - -
+**
+**  Equation of the equinoxes, compatible with IAU 2000 resolutions and
+**  IAU 2006/2000A precession-nutation.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    equation of the equinoxes (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result, which is in radians, operates in the following sense:
+**
+**        Greenwich apparent ST = GMST + equation of the equinoxes
+**
+**  Called:
+**     eraAnpm      normalize angle into range +/- pi
+**     eraGst06a    Greenwich apparent sidereal time, IAU 2006/2000A
+**     eraGmst06    Greenwich mean sidereal time, IAU 2006
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gst06a, gmst06, ee;
+
+
+/* Apparent and mean sidereal times. */
+   gst06a = eraGst06a(0.0, 0.0, date1, date2);
+   gmst06 = eraGmst06(0.0, 0.0, date1, date2);
+
+/* Equation of the equinoxes. */
+   ee  = eraAnpm(gst06a - gmst06);
+
+   return ee;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/eect00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/eect00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/eect00.c	(revision 18732)
@@ -0,0 +1,291 @@
+#include "erfa.h"
+
+double eraEect00(double date1, double date2)
+/*
+**  - - - - - - - - - -
+**   e r a E e c t 0 0
+**  - - - - - - - - - -
+**
+**  Equation of the equinoxes complementary terms, consistent with
+**  IAU 2000 resolutions.
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double   complementary terms (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The "complementary terms" are part of the equation of the
+**     equinoxes (EE), classically the difference between apparent and
+**     mean Sidereal Time:
+**
+**        GAST = GMST + EE
+**
+**     with:
+**
+**        EE = dpsi * cos(eps)
+**
+**     where dpsi is the nutation in longitude and eps is the obliquity
+**     of date.  However, if the rotation of the Earth were constant in
+**     an inertial frame the classical formulation would lead to
+**     apparent irregularities in the UT1 timescale traceable to side-
+**     effects of precession-nutation.  In order to eliminate these
+**     effects from UT1, "complementary terms" were introduced in 1994
+**     (IAU, 1994) and took effect from 1997 (Capitaine and Gontier,
+**     1993):
+**
+**        GAST = GMST + CT + EE
+**
+**     By convention, the complementary terms are included as part of
+**     the equation of the equinoxes rather than as part of the mean
+**     Sidereal Time.  This slightly compromises the "geometrical"
+**     interpretation of mean sidereal time but is otherwise
+**     inconsequential.
+**
+**     The present function computes CT in the above expression,
+**     compatible with IAU 2000 resolutions (Capitaine et al., 2002, and
+**     IERS Conventions 2003).
+**
+**  Called:
+**     eraFal03     mean anomaly of the Moon
+**     eraFalp03    mean anomaly of the Sun
+**     eraFaf03     mean argument of the latitude of the Moon
+**     eraFad03     mean elongation of the Moon from the Sun
+**     eraFaom03    mean longitude of the Moon's ascending node
+**     eraFave03    mean longitude of Venus
+**     eraFae03     mean longitude of Earth
+**     eraFapa03    general accumulated precession in longitude
+**
+**  References:
+**
+**     Capitaine, N. & Gontier, A.-M., Astron. Astrophys., 275,
+**     645-650 (1993)
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     IAU Resolution C7, Recommendation 3 (1994)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Time since J2000.0, in Julian centuries */
+   double t;
+
+/* Miscellaneous */
+   int i, j;
+   double a, s0, s1;
+
+/* Fundamental arguments */
+   double fa[14];
+
+/* Returned value. */
+   double eect;
+
+/* ----------------------------------------- */
+/* The series for the EE complementary terms */
+/* ----------------------------------------- */
+
+   typedef struct {
+      int nfa[8];      /* coefficients of l,l',F,D,Om,LVe,LE,pA */
+      double s, c;     /* sine and cosine coefficients */
+   } TERM;
+
+/* Terms of order t^0 */
+   static const TERM e0[] = {
+
+   /* 1-10 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0}, 2640.96e-6, -0.39e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},   63.52e-6, -0.02e-6 },
+      {{ 0,  0,  2, -2,  3,  0,  0,  0},   11.75e-6,  0.01e-6 },
+      {{ 0,  0,  2, -2,  1,  0,  0,  0},   11.21e-6,  0.01e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},   -4.55e-6,  0.00e-6 },
+      {{ 0,  0,  2,  0,  3,  0,  0,  0},    2.02e-6,  0.00e-6 },
+      {{ 0,  0,  2,  0,  1,  0,  0,  0},    1.98e-6,  0.00e-6 },
+      {{ 0,  0,  0,  0,  3,  0,  0,  0},   -1.72e-6,  0.00e-6 },
+      {{ 0,  1,  0,  0,  1,  0,  0,  0},   -1.41e-6, -0.01e-6 },
+      {{ 0,  1,  0,  0, -1,  0,  0,  0},   -1.26e-6, -0.01e-6 },
+
+   /* 11-20 */
+      {{ 1,  0,  0,  0, -1,  0,  0,  0},   -0.63e-6,  0.00e-6 },
+      {{ 1,  0,  0,  0,  1,  0,  0,  0},   -0.63e-6,  0.00e-6 },
+      {{ 0,  1,  2, -2,  3,  0,  0,  0},    0.46e-6,  0.00e-6 },
+      {{ 0,  1,  2, -2,  1,  0,  0,  0},    0.45e-6,  0.00e-6 },
+      {{ 0,  0,  4, -4,  4,  0,  0,  0},    0.36e-6,  0.00e-6 },
+      {{ 0,  0,  1, -1,  1, -8, 12,  0},   -0.24e-6, -0.12e-6 },
+      {{ 0,  0,  2,  0,  0,  0,  0,  0},    0.32e-6,  0.00e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},    0.28e-6,  0.00e-6 },
+      {{ 1,  0,  2,  0,  3,  0,  0,  0},    0.27e-6,  0.00e-6 },
+      {{ 1,  0,  2,  0,  1,  0,  0,  0},    0.26e-6,  0.00e-6 },
+
+   /* 21-30 */
+      {{ 0,  0,  2, -2,  0,  0,  0,  0},   -0.21e-6,  0.00e-6 },
+      {{ 0,  1, -2,  2, -3,  0,  0,  0},    0.19e-6,  0.00e-6 },
+      {{ 0,  1, -2,  2, -1,  0,  0,  0},    0.18e-6,  0.00e-6 },
+      {{ 0,  0,  0,  0,  0,  8,-13, -1},   -0.10e-6,  0.05e-6 },
+      {{ 0,  0,  0,  2,  0,  0,  0,  0},    0.15e-6,  0.00e-6 },
+      {{ 2,  0, -2,  0, -1,  0,  0,  0},   -0.14e-6,  0.00e-6 },
+      {{ 1,  0,  0, -2,  1,  0,  0,  0},    0.14e-6,  0.00e-6 },
+      {{ 0,  1,  2, -2,  2,  0,  0,  0},   -0.14e-6,  0.00e-6 },
+      {{ 1,  0,  0, -2, -1,  0,  0,  0},    0.14e-6,  0.00e-6 },
+      {{ 0,  0,  4, -2,  4,  0,  0,  0},    0.13e-6,  0.00e-6 },
+
+   /* 31-33 */
+      {{ 0,  0,  2, -2,  4,  0,  0,  0},   -0.11e-6,  0.00e-6 },
+      {{ 1,  0, -2,  0, -3,  0,  0,  0},    0.11e-6,  0.00e-6 },
+      {{ 1,  0, -2,  0, -1,  0,  0,  0},    0.11e-6,  0.00e-6 }
+   };
+
+/* Terms of order t^1 */
+   static const TERM e1[] = {
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},    -0.87e-6,  0.00e-6 }
+   };
+
+/* Number of terms in the series */
+   const int NE0 = (int) (sizeof e0 / sizeof (TERM));
+   const int NE1 = (int) (sizeof e1 / sizeof (TERM));
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental epoch J2000.0 and current date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Fundamental Arguments (from IERS Conventions 2003) */
+
+/* Mean anomaly of the Moon. */
+   fa[0] = eraFal03(t);
+
+/* Mean anomaly of the Sun. */
+   fa[1] = eraFalp03(t);
+
+/* Mean longitude of the Moon minus that of the ascending node. */
+   fa[2] = eraFaf03(t);
+
+/* Mean elongation of the Moon from the Sun. */
+   fa[3] = eraFad03(t);
+
+/* Mean longitude of the ascending node of the Moon. */
+   fa[4] = eraFaom03(t);
+
+/* Mean longitude of Venus. */
+   fa[5] = eraFave03(t);
+
+/* Mean longitude of Earth. */
+   fa[6] = eraFae03(t);
+
+/* General precession in longitude. */
+   fa[7] = eraFapa03(t);
+
+/* Evaluate the EE complementary terms. */
+   s0 = 0.0;
+   s1 = 0.0;
+
+   for (i = NE0-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)(e0[i].nfa[j]) * fa[j];
+      }
+      s0 += e0[i].s * sin(a) + e0[i].c * cos(a);
+   }
+
+   for (i = NE1-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)(e1[i].nfa[j]) * fa[j];
+      }
+      s1 += e1[i].s * sin(a) + e1[i].c * cos(a);
+   }
+
+   eect = (s0 + s1 * t ) * ERFA_DAS2R;
+
+   return eect;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/eform.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/eform.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/eform.c	(revision 18732)
@@ -0,0 +1,155 @@
+#include "erfa.h"
+
+int eraEform ( int n, double *a, double *f )
+/*
+**  - - - - - - - - -
+**   e r a E f o r m
+**  - - - - - - - - -
+**
+**  Earth reference ellipsoids.
+**
+**  Given:
+**     n    int         ellipsoid identifier (Note 1)
+**
+**  Returned:
+**     a    double      equatorial radius (meters, Note 2)
+**     f    double      flattening (Note 2)
+**
+**  Returned (function value):
+**          int         status:  0 = OK
+**                              -1 = illegal identifier (Note 3)
+**
+**  Notes:
+**
+**  1) The identifier n is a number that specifies the choice of
+**     reference ellipsoid.  The following are supported:
+**
+**        n    ellipsoid
+**
+**        1     ERFA_WGS84
+**        2     ERFA_GRS80
+**        3     ERFA_WGS72
+**
+**     The n value has no significance outside the ERFA software.  For
+**     convenience, symbols ERFA_WGS84 etc. are defined in erfam.h.
+**
+**  2) The ellipsoid parameters are returned in the form of equatorial
+**     radius in meters (a) and flattening (f).  The latter is a number
+**     around 0.00335, i.e. around 1/298.
+**
+**  3) For the case where an unsupported n value is supplied, zero a and
+**     f are returned, as well as error status.
+**
+**  References:
+**
+**     Department of Defense World Geodetic System 1984, National
+**     Imagery and Mapping Agency Technical Report 8350.2, Third
+**     Edition, p3-2.
+**
+**     Moritz, H., Bull. Geodesique 66-2, 187 (1992).
+**
+**     The Department of Defense World Geodetic System 1972, World
+**     Geodetic System Committee, May 1974.
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     p220.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Look up a and f for the specified reference ellipsoid. */
+   switch ( n ) {
+
+   case ERFA_WGS84:
+      *a = 6378137.0;
+      *f = 1.0 / 298.257223563;
+      break;
+
+   case ERFA_GRS80:
+      *a = 6378137.0;
+      *f = 1.0 / 298.257222101;
+      break;
+
+   case ERFA_WGS72:
+      *a = 6378135.0;
+      *f = 1.0 / 298.26;
+      break;
+
+   default:
+
+   /* Invalid identifier. */
+      *a = 0.0;
+      *f = 0.0;
+      return -1;
+
+   }
+
+/* OK status. */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/eo06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/eo06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/eo06a.c	(revision 18732)
@@ -0,0 +1,140 @@
+#include "erfa.h"
+
+double eraEo06a(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a E o 0 6 a
+**  - - - - - - - - -
+**
+**  Equation of the origins, IAU 2006 precession and IAU 2000A nutation.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    equation of the origins in radians
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The equation of the origins is the distance between the true
+**     equinox and the celestial intermediate origin and, equivalently,
+**     the difference between Earth rotation angle and Greenwich
+**     apparent sidereal time (ERA-GST).  It comprises the precession
+**     (since J2000.0) in right ascension plus the equation of the
+**     equinoxes (including the small correction terms).
+**
+**  Called:
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**     eraEors      equation of the origins, given NPB matrix and s
+**
+**  References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r[3][3], x, y, s, eo;
+
+
+/* Classical nutation x precession x bias matrix. */
+   eraPnm06a(date1, date2, r);
+
+/* Extract CIP coordinates. */
+   eraBpn2xy(r, &x, &y);
+
+/* The CIO locator, s. */
+   s = eraS06(date1, date2, x, y);
+
+/* Solve for the EO. */
+   eo = eraEors(r, s);
+
+   return eo;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/eors.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/eors.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/eors.c	(revision 18732)
@@ -0,0 +1,117 @@
+#include "erfa.h"
+
+double eraEors(double rnpb[3][3], double s)
+/*
+**  - - - - - - - -
+**   e r a E o r s
+**  - - - - - - - -
+**
+**  Equation of the origins, given the classical NPB matrix and the
+**  quantity s.
+**
+**  Given:
+**     rnpb  double[3][3]  classical nutation x precession x bias matrix
+**     s     double        the quantity s (the CIO locator)
+**
+**  Returned (function value):
+**           double        the equation of the origins in radians.
+**
+**  Notes:
+**
+**  1)  The equation of the origins is the distance between the true
+**      equinox and the celestial intermediate origin and, equivalently,
+**      the difference between Earth rotation angle and Greenwich
+**      apparent sidereal time (ERA-GST).  It comprises the precession
+**      (since J2000.0) in right ascension plus the equation of the
+**      equinoxes (including the small correction terms).
+**
+**  2)  The algorithm is from Wallace & Capitaine (2006).
+**
+** References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, ax, xs, ys, zs, p, q, eo;
+
+
+/* Evaluate Wallace & Capitaine (2006) expression (16). */
+   x = rnpb[2][0];
+   ax = x / (1.0 + rnpb[2][2]);
+   xs = 1.0 - ax * x;
+   ys = -ax * rnpb[2][1];
+   zs = -x;
+   p = rnpb[0][0] * xs + rnpb[0][1] * ys + rnpb[0][2] * zs;
+   q = rnpb[1][0] * xs + rnpb[1][1] * ys + rnpb[1][2] * zs;
+   eo = ((p != 0) || (q != 0)) ? s - atan2(q, p) : s;
+
+   return eo;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/epb.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/epb.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/epb.c	(revision 18732)
@@ -0,0 +1,100 @@
+#include "erfa.h"
+
+double eraEpb(double dj1, double dj2)
+/*
+**  - - - - - - -
+**   e r a E p b
+**  - - - - - - -
+**
+**  Julian Date to Besselian Epoch.
+**
+**  Given:
+**     dj1,dj2    double     Julian Date (see note)
+**
+**  Returned (function value):
+**                double     Besselian Epoch.
+**
+**  Note:
+**
+**     The Julian Date is supplied in two pieces, in the usual ERFA
+**     manner, which is designed to preserve time resolution.  The
+**     Julian Date is available as a single number by adding dj1 and
+**     dj2.  The maximum resolution is achieved if dj1 is 2451545.0
+**     (J2000.0).
+**
+**  Reference:
+**
+**     Lieske, J.H., 1979. Astron.Astrophys., 73, 282.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* J2000.0-B1900.0 (2415019.81352) in days */
+   const double D1900 = 36524.68648;
+
+   return 1900.0 + ((dj1 - ERFA_DJ00) + (dj2 + D1900)) / ERFA_DTY;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/epb2jd.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/epb2jd.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/epb2jd.c	(revision 18732)
@@ -0,0 +1,100 @@
+#include "erfa.h"
+
+void eraEpb2jd(double epb, double *djm0, double *djm)
+/*
+**  - - - - - - - - - -
+**   e r a E p b 2 j d
+**  - - - - - - - - - -
+**
+**  Besselian Epoch to Julian Date.
+**
+**  Given:
+**     epb      double    Besselian Epoch (e.g. 1957.3)
+**
+**  Returned:
+**     djm0     double    MJD zero-point: always 2400000.5
+**     djm      double    Modified Julian Date
+**
+**  Note:
+**
+**     The Julian Date is returned in two pieces, in the usual ERFA
+**     manner, which is designed to preserve time resolution.  The
+**     Julian Date is available as a single number by adding djm0 and
+**     djm.
+**
+**  Reference:
+**
+**     Lieske, J.H., 1979, Astron.Astrophys. 73, 282.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   *djm0 = ERFA_DJM0;
+   *djm  =   15019.81352 + (epb - 1900.0) * ERFA_DTY;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/epj.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/epj.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/epj.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+double eraEpj(double dj1, double dj2)
+/*
+**  - - - - - - -
+**   e r a E p j
+**  - - - - - - -
+**
+**  Julian Date to Julian Epoch.
+**
+**  Given:
+**     dj1,dj2    double     Julian Date (see note)
+**
+**  Returned (function value):
+**                double     Julian Epoch
+**
+**  Note:
+**
+**     The Julian Date is supplied in two pieces, in the usual ERFA
+**     manner, which is designed to preserve time resolution.  The
+**     Julian Date is available as a single number by adding dj1 and
+**     dj2.  The maximum resolution is achieved if dj1 is 2451545.0
+**     (J2000.0).
+**
+**  Reference:
+**
+**     Lieske, J.H., 1979, Astron.Astrophys. 73, 282.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double epj;
+
+
+   epj = 2000.0 + ((dj1 - ERFA_DJ00) + dj2) / ERFA_DJY;
+
+   return epj;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/epj2jd.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/epj2jd.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/epj2jd.c	(revision 18732)
@@ -0,0 +1,100 @@
+#include "erfa.h"
+
+void eraEpj2jd(double epj, double *djm0, double *djm)
+/*
+**  - - - - - - - - - -
+**   e r a E p j 2 j d
+**  - - - - - - - - - -
+**
+**  Julian Epoch to Julian Date.
+**
+**  Given:
+**     epj      double    Julian Epoch (e.g. 1996.8)
+**
+**  Returned:
+**     djm0     double    MJD zero-point: always 2400000.5
+**     djm      double    Modified Julian Date
+**
+**  Note:
+**
+**     The Julian Date is returned in two pieces, in the usual ERFA
+**     manner, which is designed to preserve time resolution.  The
+**     Julian Date is available as a single number by adding djm0 and
+**     djm.
+**
+**  Reference:
+**
+**     Lieske, J.H., 1979, Astron.Astrophys. 73, 282.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   *djm0 = ERFA_DJM0;
+   *djm  = ERFA_DJM00 + (epj - 2000.0) * 365.25;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/epv00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/epv00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/epv00.c	(revision 18732)
@@ -0,0 +1,2598 @@
+#include "erfa.h"
+
+int eraEpv00(double date1, double date2,
+             double pvh[2][3], double pvb[2][3])
+/*
+**  - - - - - - - - -
+**   e r a E p v 0 0
+**  - - - - - - - - -
+**
+**  Earth position and velocity, heliocentric and barycentric, with
+**  respect to the Barycentric Celestial Reference System.
+**
+**  Given:
+**     date1,date2  double        TDB date (Note 1)
+**
+**  Returned:
+**     pvh          double[2][3]  heliocentric Earth position/velocity
+**     pvb          double[2][3]  barycentric Earth position/velocity
+**
+**  Returned (function value):
+**                  int           status: 0 = OK
+**                                       +1 = warning: date outside
+**                                            the range 1900-2100 AD
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  However,
+**     the accuracy of the result is more likely to be limited by the
+**     algorithm itself than the way the date has been expressed.
+**
+**     n.b. TT can be used instead of TDB in most applications.
+**
+**  2) On return, the arrays pvh and pvb contain the following:
+**
+**        pvh[0][0]  x       }
+**        pvh[0][1]  y       } heliocentric position, AU
+**        pvh[0][2]  z       }
+**
+**        pvh[1][0]  xdot    }
+**        pvh[1][1]  ydot    } heliocentric velocity, AU/d
+**        pvh[1][2]  zdot    }
+**
+**        pvb[0][0]  x       }
+**        pvb[0][1]  y       } barycentric position, AU
+**        pvb[0][2]  z       }
+**
+**        pvb[1][0]  xdot    }
+**        pvb[1][1]  ydot    } barycentric velocity, AU/d
+**        pvb[1][2]  zdot    }
+**
+**     The vectors are with respect to the Barycentric Celestial
+**     Reference System.  The time unit is one day in TDB.
+**
+**  3) The function is a SIMPLIFIED SOLUTION from the planetary theory
+**     VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics &
+**     Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original
+**     Fortran code supplied by P. Bretagnon (private comm., 2000).
+**
+**  4) Comparisons over the time span 1900-2100 with this simplified
+**     solution and the JPL DE405 ephemeris give the following results:
+**
+**                                RMS    max
+**           Heliocentric:
+**              position error    3.7   11.2   km
+**              velocity error    1.4    5.0   mm/s
+**
+**           Barycentric:
+**              position error    4.6   13.4   km
+**              velocity error    1.4    4.9   mm/s
+**
+**     Comparisons with the JPL DE406 ephemeris show that by 1800 and
+**     2200 the position errors are approximately double their 1900-2100
+**     size.  By 1500 and 2500 the deterioration is a factor of 10 and
+**     by 1000 and 3000 a factor of 60.  The velocity accuracy falls off
+**     at about half that rate.
+**
+**  5) It is permissible to use the same array for pvh and pvb, which
+**     will receive the barycentric values.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/*
+** Matrix elements for orienting the analytical model to DE405.
+**
+** The corresponding Euler angles are:
+**
+**                       d  '  "
+**   1st rotation    -  23 26 21.4091 about the x-axis  (obliquity)
+**   2nd rotation    +         0.0475 about the z-axis  (RA offset)
+**
+** These were obtained empirically, by comparisons with DE405 over
+** 1900-2100.
+*/
+   static const double am12 =  0.000000211284,
+                       am13 = -0.000000091603,
+                       am21 = -0.000000230286,
+                       am22 =  0.917482137087,
+                       am23 = -0.397776982902,
+                       am32 =  0.397776982902,
+                       am33 =  0.917482137087;
+
+/*
+** ----------------------
+** Ephemeris Coefficients
+** ----------------------
+**
+** The ephemeris consists of harmonic terms for predicting (i) the Sun
+** to Earth vector and (ii) the Solar-System-barycenter to Sun vector
+** respectively.  The coefficients are stored in arrays which, although
+** 1-demensional, contain groups of three.  Each triplet of
+** coefficients is the amplitude, phase and frequency for one term in
+** the model, and each array contains the number of terms called for by
+** the model.
+**
+** There are eighteen such arrays, named as follows:
+**
+**     array         model      power of T      component
+**
+**      e0x      Sun-to-Earth        0              x
+**      e0y      Sun-to-Earth        0              y
+**      e0z      Sun-to-Earth        0              z
+**
+**      e1x      Sun-to-Earth        1              x
+**      e1y      Sun-to-Earth        1              y
+**      e1z      Sun-to-Earth        1              z
+**
+**      e2x      Sun-to-Earth        2              x
+**      e2y      Sun-to-Earth        2              y
+**      e2z      Sun-to-Earth        2              z
+**
+**      s0x      SSB-to-Sun          0              x
+**      s0y      SSB-to-Sun          0              y
+**      s0z      SSB-to-Sun          0              z
+**
+**      s1x      SSB-to-Sun          1              x
+**      s1y      SSB-to-Sun          1              y
+**      s1z      SSB-to-Sun          1              z
+**
+**      s2x      SSB-to-Sun          2              x
+**      s2y      SSB-to-Sun          2              y
+**      s2z      SSB-to-Sun          2              z
+*/
+
+/* Sun-to-Earth, T^0, X */
+   static const double e0x[] = {
+      0.9998292878132e+00, 0.1753485171504e+01, 0.6283075850446e+01,
+      0.8352579567414e-02, 0.1710344404582e+01, 0.1256615170089e+02,
+      0.5611445335148e-02, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.1046664295572e-03, 0.1667225416770e+01, 0.1884922755134e+02,
+      0.3110842534677e-04, 0.6687513390251e+00, 0.8399684731857e+02,
+      0.2552413503550e-04, 0.5830637358413e+00, 0.5296909721118e+00,
+      0.2137207845781e-04, 0.1092330954011e+01, 0.1577343543434e+01,
+      0.1680240182951e-04, 0.4955366134987e+00, 0.6279552690824e+01,
+      0.1679012370795e-04, 0.6153014091901e+01, 0.6286599010068e+01,
+      0.1445526946777e-04, 0.3472744100492e+01, 0.2352866153506e+01,
+
+      0.1091038246184e-04, 0.3689845786119e+01, 0.5223693906222e+01,
+      0.9344399733932e-05, 0.6073934645672e+01, 0.1203646072878e+02,
+      0.8993182910652e-05, 0.3175705249069e+01, 0.1021328554739e+02,
+      0.5665546034116e-05, 0.2152484672246e+01, 0.1059381944224e+01,
+      0.6844146703035e-05, 0.1306964099750e+01, 0.5753384878334e+01,
+      0.7346610905565e-05, 0.4354980070466e+01, 0.3981490189893e+00,
+      0.6815396474414e-05, 0.2218229211267e+01, 0.4705732307012e+01,
+      0.6112787253053e-05, 0.5384788425458e+01, 0.6812766822558e+01,
+      0.4518120711239e-05, 0.6087604012291e+01, 0.5884926831456e+01,
+      0.4521963430706e-05, 0.1279424524906e+01, 0.6256777527156e+01,
+
+      0.4497426764085e-05, 0.5369129144266e+01, 0.6309374173736e+01,
+      0.4062190566959e-05, 0.5436473303367e+00, 0.6681224869435e+01,
+      0.5412193480192e-05, 0.7867838528395e+00, 0.7755226100720e+00,
+      0.5469839049386e-05, 0.1461440311134e+01, 0.1414349524433e+02,
+      0.5205264083477e-05, 0.4432944696116e+01, 0.7860419393880e+01,
+      0.2149759935455e-05, 0.4502237496846e+01, 0.1150676975667e+02,
+      0.2279109618501e-05, 0.1239441308815e+01, 0.7058598460518e+01,
+      0.2259282939683e-05, 0.3272430985331e+01, 0.4694002934110e+01,
+      0.2558950271319e-05, 0.2265471086404e+01, 0.1216800268190e+02,
+      0.2561581447555e-05, 0.1454740653245e+01, 0.7099330490126e+00,
+
+      0.1781441115440e-05, 0.2962068630206e+01, 0.7962980379786e+00,
+      0.1612005874644e-05, 0.1473255041006e+01, 0.5486777812467e+01,
+      0.1818630667105e-05, 0.3743903293447e+00, 0.6283008715021e+01,
+      0.1818601377529e-05, 0.6274174354554e+01, 0.6283142985870e+01,
+      0.1554475925257e-05, 0.1624110906816e+01, 0.2513230340178e+02,
+      0.2090948029241e-05, 0.5852052276256e+01, 0.1179062909082e+02,
+      0.2000176345460e-05, 0.4072093298513e+01, 0.1778984560711e+02,
+      0.1289535917759e-05, 0.5217019331069e+01, 0.7079373888424e+01,
+      0.1281135307881e-05, 0.4802054538934e+01, 0.3738761453707e+01,
+      0.1518229005692e-05, 0.8691914742502e+00, 0.2132990797783e+00,
+
+      0.9450128579027e-06, 0.4601859529950e+01, 0.1097707878456e+02,
+      0.7781119494996e-06, 0.1844352816694e+01, 0.8827390247185e+01,
+      0.7733407759912e-06, 0.3582790154750e+01, 0.5507553240374e+01,
+      0.7350644318120e-06, 0.2695277788230e+01, 0.1589072916335e+01,
+      0.6535928827023e-06, 0.3651327986142e+01, 0.1176985366291e+02,
+      0.6324624183656e-06, 0.2241302375862e+01, 0.6262300422539e+01,
+      0.6298565300557e-06, 0.4407122406081e+01, 0.6303851278352e+01,
+      0.8587037089179e-06, 0.3024307223119e+01, 0.1672837615881e+03,
+      0.8299954491035e-06, 0.6192539428237e+01, 0.3340612434717e+01,
+      0.6311263503401e-06, 0.2014758795416e+01, 0.7113454667900e-02,
+
+      0.6005646745452e-06, 0.3399500503397e+01, 0.4136910472696e+01,
+      0.7917715109929e-06, 0.2493386877837e+01, 0.6069776770667e+01,
+      0.7556958099685e-06, 0.4159491740143e+01, 0.6496374930224e+01,
+      0.6773228244949e-06, 0.4034162934230e+01, 0.9437762937313e+01,
+      0.5370708577847e-06, 0.1562219163734e+01, 0.1194447056968e+01,
+      0.5710804266203e-06, 0.2662730803386e+01, 0.6282095334605e+01,
+      0.5709824583726e-06, 0.3985828430833e+01, 0.6284056366286e+01,
+      0.5143950896447e-06, 0.1308144688689e+01, 0.6290189305114e+01,
+      0.5088010604546e-06, 0.5352817214804e+01, 0.6275962395778e+01,
+      0.4960369085172e-06, 0.2644267922349e+01, 0.6127655567643e+01,
+
+      0.4803137891183e-06, 0.4008844192080e+01, 0.6438496133249e+01,
+      0.5731747768225e-06, 0.3794550174597e+01, 0.3154687086868e+01,
+      0.4735947960579e-06, 0.6107118308982e+01, 0.3128388763578e+01,
+      0.4808348796625e-06, 0.4771458618163e+01, 0.8018209333619e+00,
+      0.4115073743137e-06, 0.3327111335159e+01, 0.8429241228195e+01,
+      0.5230575889287e-06, 0.5305708551694e+01, 0.1336797263425e+02,
+      0.5133977889215e-06, 0.5784230738814e+01, 0.1235285262111e+02,
+      0.5065815825327e-06, 0.2052064793679e+01, 0.1185621865188e+02,
+      0.4339831593868e-06, 0.3644994195830e+01, 0.1726015463500e+02,
+      0.3952928638953e-06, 0.4930376436758e+01, 0.5481254917084e+01,
+
+      0.4898498111942e-06, 0.4542084219731e+00, 0.9225539266174e+01,
+      0.4757490209328e-06, 0.3161126388878e+01, 0.5856477690889e+01,
+      0.4727701669749e-06, 0.6214993845446e+00, 0.2544314396739e+01,
+      0.3800966681863e-06, 0.3040132339297e+01, 0.4265981595566e+00,
+      0.3257301077939e-06, 0.8064977360087e+00, 0.3930209696940e+01,
+      0.3255810528674e-06, 0.1974147981034e+01, 0.2146165377750e+01,
+      0.3252029748187e-06, 0.2845924913135e+01, 0.4164311961999e+01,
+      0.3255505635308e-06, 0.3017900824120e+01, 0.5088628793478e+01,
+      0.2801345211990e-06, 0.6109717793179e+01, 0.1256967486051e+02,
+      0.3688987740970e-06, 0.2911550235289e+01, 0.1807370494127e+02,
+
+      0.2475153429458e-06, 0.2179146025856e+01, 0.2629832328990e-01,
+      0.3033457749150e-06, 0.1994161050744e+01, 0.4535059491685e+01,
+      0.2186743763110e-06, 0.5125687237936e+01, 0.1137170464392e+02,
+      0.2764777032774e-06, 0.4822646860252e+00, 0.1256262854127e+02,
+      0.2199028768592e-06, 0.4637633293831e+01, 0.1255903824622e+02,
+      0.2046482824760e-06, 0.1467038733093e+01, 0.7084896783808e+01,
+      0.2611209147507e-06, 0.3044718783485e+00, 0.7143069561767e+02,
+      0.2286079656818e-06, 0.4764220356805e+01, 0.8031092209206e+01,
+      0.1855071202587e-06, 0.3383637774428e+01, 0.1748016358760e+01,
+      0.2324669506784e-06, 0.6189088449251e+01, 0.1831953657923e+02,
+
+      0.1709528015688e-06, 0.5874966729774e+00, 0.4933208510675e+01,
+      0.2168156875828e-06, 0.4302994009132e+01, 0.1044738781244e+02,
+      0.2106675556535e-06, 0.3800475419891e+01, 0.7477522907414e+01,
+      0.1430213830465e-06, 0.1294660846502e+01, 0.2942463415728e+01,
+      0.1388396901944e-06, 0.4594797202114e+01, 0.8635942003952e+01,
+      0.1922258844190e-06, 0.4943044543591e+00, 0.1729818233119e+02,
+      0.1888460058292e-06, 0.2426943912028e+01, 0.1561374759853e+03,
+      0.1789449386107e-06, 0.1582973303499e+00, 0.1592596075957e+01,
+      0.1360803685374e-06, 0.5197240440504e+01, 0.1309584267300e+02,
+      0.1504038014709e-06, 0.3120360916217e+01, 0.1649636139783e+02,
+
+      0.1382769533389e-06, 0.6164702888205e+01, 0.7632943190217e+01,
+      0.1438059769079e-06, 0.1437423770979e+01, 0.2042657109477e+02,
+      0.1326303260037e-06, 0.3609688799679e+01, 0.1213955354133e+02,
+      0.1159244950540e-06, 0.5463018167225e+01, 0.5331357529664e+01,
+      0.1433118149136e-06, 0.6028909912097e+01, 0.7342457794669e+01,
+      0.1234623148594e-06, 0.3109645574997e+01, 0.6279485555400e+01,
+      0.1233949875344e-06, 0.3539359332866e+01, 0.6286666145492e+01,
+      0.9927196061299e-07, 0.1259321569772e+01, 0.7234794171227e+01,
+      0.1242302191316e-06, 0.1065949392609e+01, 0.1511046609763e+02,
+      0.1098402195201e-06, 0.2192508743837e+01, 0.1098880815746e+02,
+
+      0.1158191395315e-06, 0.4054411278650e+01, 0.5729506548653e+01,
+      0.9048475596241e-07, 0.5429764748518e+01, 0.9623688285163e+01,
+      0.8889853269023e-07, 0.5046586206575e+01, 0.6148010737701e+01,
+      0.1048694242164e-06, 0.2628858030806e+01, 0.6836645152238e+01,
+      0.1112308378646e-06, 0.4177292719907e+01, 0.1572083878776e+02,
+      0.8631729709901e-07, 0.1601345232557e+01, 0.6418140963190e+01,
+      0.8527816951664e-07, 0.2463888997513e+01, 0.1471231707864e+02,
+      0.7892139456991e-07, 0.3154022088718e+01, 0.2118763888447e+01,
+      0.1051782905236e-06, 0.4795035816088e+01, 0.1349867339771e+01,
+      0.1048219943164e-06, 0.2952983395230e+01, 0.5999216516294e+01,
+
+      0.7435760775143e-07, 0.5420547991464e+01, 0.6040347114260e+01,
+      0.9869574106949e-07, 0.3695646753667e+01, 0.6566935184597e+01,
+      0.9156886364226e-07, 0.3922675306609e+01, 0.5643178611111e+01,
+      0.7006834356188e-07, 0.1233968624861e+01, 0.6525804586632e+01,
+      0.9806170182601e-07, 0.1919542280684e+01, 0.2122839202813e+02,
+      0.9052289673607e-07, 0.4615902724369e+01, 0.4690479774488e+01,
+      0.7554200867893e-07, 0.1236863719072e+01, 0.1253985337760e+02,
+      0.8215741286498e-07, 0.3286800101559e+00, 0.1097355562493e+02,
+      0.7185178575397e-07, 0.5880942158367e+01, 0.6245048154254e+01,
+      0.7130726476180e-07, 0.7674871987661e+00, 0.6321103546637e+01,
+
+      0.6650894461162e-07, 0.6987129150116e+00, 0.5327476111629e+01,
+      0.7396888823688e-07, 0.3576824794443e+01, 0.5368044267797e+00,
+      0.7420588884775e-07, 0.5033615245369e+01, 0.2354323048545e+02,
+      0.6141181642908e-07, 0.9449927045673e+00, 0.1296430071988e+02,
+      0.6373557924058e-07, 0.6206342280341e+01, 0.9517183207817e+00,
+      0.6359474329261e-07, 0.5036079095757e+01, 0.1990745094947e+01,
+      0.5740173582646e-07, 0.6105106371350e+01, 0.9555997388169e+00,
+      0.7019864084602e-07, 0.7237747359018e+00, 0.5225775174439e+00,
+      0.6398054487042e-07, 0.3976367969666e+01, 0.2407292145756e+02,
+      0.7797092650498e-07, 0.4305423910623e+01, 0.2200391463820e+02,
+
+      0.6466760000900e-07, 0.3500136825200e+01, 0.5230807360890e+01,
+      0.7529417043890e-07, 0.3514779246100e+01, 0.1842262939178e+02,
+      0.6924571140892e-07, 0.2743457928679e+01, 0.1554202828031e+00,
+      0.6220798650222e-07, 0.2242598118209e+01, 0.1845107853235e+02,
+      0.5870209391853e-07, 0.2332832707527e+01, 0.6398972393349e+00,
+      0.6263953473888e-07, 0.2191105358956e+01, 0.6277552955062e+01,
+      0.6257781390012e-07, 0.4457559396698e+01, 0.6288598745829e+01,
+      0.5697304945123e-07, 0.3499234761404e+01, 0.1551045220144e+01,
+      0.6335438746791e-07, 0.6441691079251e+00, 0.5216580451554e+01,
+      0.6377258441152e-07, 0.2252599151092e+01, 0.5650292065779e+01,
+
+      0.6484841818165e-07, 0.1992812417646e+01, 0.1030928125552e+00,
+      0.4735551485250e-07, 0.3744672082942e+01, 0.1431416805965e+02,
+      0.4628595996170e-07, 0.1334226211745e+01, 0.5535693017924e+00,
+      0.6258152336933e-07, 0.4395836159154e+01, 0.2608790314060e+02,
+      0.6196171366594e-07, 0.2587043007997e+01, 0.8467247584405e+02,
+      0.6159556952126e-07, 0.4782499769128e+01, 0.2394243902548e+03,
+      0.4987741172394e-07, 0.7312257619924e+00, 0.7771377146812e+02,
+      0.5459280703142e-07, 0.3001376372532e+01, 0.6179983037890e+01,
+      0.4863461189999e-07, 0.3767222128541e+01, 0.9027992316901e+02,
+      0.5349912093158e-07, 0.3663594450273e+01, 0.6386168663001e+01,
+
+      0.5673725607806e-07, 0.4331187919049e+01, 0.6915859635113e+01,
+      0.4745485060512e-07, 0.5816195745518e+01, 0.6282970628506e+01,
+      0.4745379005326e-07, 0.8323672435672e+00, 0.6283181072386e+01,
+      0.4049002796321e-07, 0.3785023976293e+01, 0.6254626709878e+01,
+      0.4247084014515e-07, 0.2378220728783e+01, 0.7875671926403e+01,
+      0.4026912363055e-07, 0.2864103423269e+01, 0.6311524991013e+01,
+      0.4062935011774e-07, 0.2415408595975e+01, 0.3634620989887e+01,
+      0.5347771048509e-07, 0.3343479309801e+01, 0.2515860172507e+02,
+      0.4829494136505e-07, 0.2821742398262e+01, 0.5760498333002e+01,
+      0.4342554404599e-07, 0.5624662458712e+01, 0.7238675589263e+01,
+
+      0.4021599184361e-07, 0.5557250275009e+00, 0.1101510648075e+02,
+      0.4104900474558e-07, 0.3296691780005e+01, 0.6709674010002e+01,
+      0.4376532905131e-07, 0.3814443999443e+01, 0.6805653367890e+01,
+      0.3314590480650e-07, 0.3560229189250e+01, 0.1259245002418e+02,
+      0.3232421839643e-07, 0.5185389180568e+01, 0.1066495398892e+01,
+      0.3541176318876e-07, 0.3921381909679e+01, 0.9917696840332e+01,
+      0.3689831242681e-07, 0.4190658955386e+01, 0.1192625446156e+02,
+      0.3890605376774e-07, 0.5546023371097e+01, 0.7478166569050e-01,
+      0.3038559339780e-07, 0.6231032794494e+01, 0.1256621883632e+02,
+      0.3137083969782e-07, 0.6207063419190e+01, 0.4292330755499e+01,
+
+      0.4024004081854e-07, 0.1195257375713e+01, 0.1334167431096e+02,
+      0.3300234879283e-07, 0.1804694240998e+01, 0.1057540660594e+02,
+      0.3635399155575e-07, 0.5597811343500e+01, 0.6208294184755e+01,
+      0.3032668691356e-07, 0.3191059366530e+01, 0.1805292951336e+02,
+      0.2809652069058e-07, 0.4094348032570e+01, 0.3523159621801e-02,
+      0.3696955383823e-07, 0.5219282738794e+01, 0.5966683958112e+01,
+      0.3562894142503e-07, 0.1037247544554e+01, 0.6357857516136e+01,
+      0.3510598524148e-07, 0.1430020816116e+01, 0.6599467742779e+01,
+      0.3617736142953e-07, 0.3002911403677e+01, 0.6019991944201e+01,
+      0.2624524910730e-07, 0.2437046757292e+01, 0.6702560555334e+01,
+
+      0.2535824204490e-07, 0.1581594689647e+01, 0.3141537925223e+02,
+      0.3519787226257e-07, 0.5379863121521e+01, 0.2505706758577e+03,
+      0.2578406709982e-07, 0.4904222639329e+01, 0.1673046366289e+02,
+      0.3423887981473e-07, 0.3646448997315e+01, 0.6546159756691e+01,
+      0.2776083886467e-07, 0.3307829300144e+01, 0.1272157198369e+02,
+      0.3379592818379e-07, 0.1747541251125e+01, 0.1494531617769e+02,
+      0.3050255426284e-07, 0.1784689432607e-01, 0.4732030630302e+01,
+      0.2652378350236e-07, 0.4420055276260e+01, 0.5863591145557e+01,
+      0.2374498173768e-07, 0.3629773929208e+01, 0.2388894113936e+01,
+      0.2716451255140e-07, 0.3079623706780e+01, 0.1202934727411e+02,
+
+      0.3038583699229e-07, 0.3312487903507e+00, 0.1256608456547e+02,
+      0.2220681228760e-07, 0.5265520401774e+01, 0.1336244973887e+02,
+      0.3044156540912e-07, 0.4766664081250e+01, 0.2908881142201e+02,
+      0.2731859923561e-07, 0.5069146530691e+01, 0.1391601904066e+02,
+      0.2285603018171e-07, 0.5954935112271e+01, 0.6076890225335e+01,
+      0.2025006454555e-07, 0.4061789589267e+01, 0.4701116388778e+01,
+      0.2012597519804e-07, 0.2485047705241e+01, 0.6262720680387e+01,
+      0.2003406962258e-07, 0.4163779209320e+01, 0.6303431020504e+01,
+      0.2207863441371e-07, 0.6923839133828e+00, 0.6489261475556e+01,
+      0.2481374305624e-07, 0.5944173595676e+01, 0.1204357418345e+02,
+
+      0.2130923288870e-07, 0.4641013671967e+01, 0.5746271423666e+01,
+      0.2446370543391e-07, 0.6125796518757e+01, 0.1495633313810e+00,
+      0.1932492759052e-07, 0.2234572324504e+00, 0.1352175143971e+02,
+      0.2600122568049e-07, 0.4281012405440e+01, 0.4590910121555e+01,
+      0.2431754047488e-07, 0.1429943874870e+00, 0.1162474756779e+01,
+      0.1875902869209e-07, 0.9781803816948e+00, 0.6279194432410e+01,
+      0.1874381139426e-07, 0.5670368130173e+01, 0.6286957268481e+01,
+      0.2156696047173e-07, 0.2008985006833e+01, 0.1813929450232e+02,
+      0.1965076182484e-07, 0.2566186202453e+00, 0.4686889479442e+01,
+      0.2334816372359e-07, 0.4408121891493e+01, 0.1002183730415e+02,
+
+      0.1869937408802e-07, 0.5272745038656e+01, 0.2427287361862e+00,
+      0.2436236460883e-07, 0.4407720479029e+01, 0.9514313292143e+02,
+      0.1761365216611e-07, 0.1943892315074e+00, 0.1351787002167e+02,
+      0.2156289480503e-07, 0.1418570924545e+01, 0.6037244212485e+01,
+      0.2164748979255e-07, 0.4724603439430e+01, 0.2301353951334e+02,
+      0.2222286670853e-07, 0.2400266874598e+01, 0.1266924451345e+02,
+      0.2070901414929e-07, 0.5230348028732e+01, 0.6528907488406e+01,
+      0.1792745177020e-07, 0.2099190328945e+01, 0.6819880277225e+01,
+      0.1841802068445e-07, 0.3467527844848e+00, 0.6514761976723e+02,
+      0.1578401631718e-07, 0.7098642356340e+00, 0.2077542790660e-01,
+
+      0.1561690152531e-07, 0.5943349620372e+01, 0.6272439236156e+01,
+      0.1558591045463e-07, 0.7040653478980e+00, 0.6293712464735e+01,
+      0.1737356469576e-07, 0.4487064760345e+01, 0.1765478049437e+02,
+      0.1434755619991e-07, 0.2993391570995e+01, 0.1102062672231e+00,
+      0.1482187806654e-07, 0.2278049198251e+01, 0.1052268489556e+01,
+      0.1424812827089e-07, 0.1682114725827e+01, 0.1311972100268e+02,
+      0.1380282448623e-07, 0.3262668602579e+01, 0.1017725758696e+02,
+      0.1811481244566e-07, 0.3187771221777e+01, 0.1887552587463e+02,
+      0.1504446185696e-07, 0.5650162308647e+01, 0.7626583626240e-01,
+      0.1740776154137e-07, 0.5487068607507e+01, 0.1965104848470e+02,
+
+      0.1374339536251e-07, 0.5745688172201e+01, 0.6016468784579e+01,
+      0.1761377477704e-07, 0.5748060203659e+01, 0.2593412433514e+02,
+      0.1535138225795e-07, 0.6226848505790e+01, 0.9411464614024e+01,
+      0.1788140543676e-07, 0.6189318878563e+01, 0.3301902111895e+02,
+      0.1375002807996e-07, 0.5371812884394e+01, 0.6327837846670e+00,
+      0.1242115758632e-07, 0.1471687569712e+01, 0.3894181736510e+01,
+      0.1450977333938e-07, 0.4143836662127e+01, 0.1277945078067e+02,
+      0.1297579575023e-07, 0.9003477661957e+00, 0.6549682916313e+01,
+      0.1462667934821e-07, 0.5760505536428e+01, 0.1863592847156e+02,
+      0.1381774374799e-07, 0.1085471729463e+01, 0.2379164476796e+01,
+
+      0.1682333169307e-07, 0.5409870870133e+01, 0.1620077269078e+02,
+      0.1190812918837e-07, 0.1397205174601e+01, 0.1149965630200e+02,
+      0.1221434762106e-07, 0.9001804809095e+00, 0.1257326515556e+02,
+      0.1549934644860e-07, 0.4262528275544e+01, 0.1820933031200e+02,
+      0.1252138953050e-07, 0.1411642012027e+01, 0.6993008899458e+01,
+      0.1237078905387e-07, 0.2844472403615e+01, 0.2435678079171e+02,
+      0.1446953389615e-07, 0.5295835522223e+01, 0.3813291813120e-01,
+      0.1388446457170e-07, 0.4969428135497e+01, 0.2458316379602e+00,
+      0.1019339179228e-07, 0.2491369561806e+01, 0.6112403035119e+01,
+      0.1258880815343e-07, 0.4679426248976e+01, 0.5429879531333e+01,
+
+      0.1297768238261e-07, 0.1074509953328e+01, 0.1249137003520e+02,
+      0.9913505718094e-08, 0.4735097918224e+01, 0.6247047890016e+01,
+      0.9830453155969e-08, 0.4158649187338e+01, 0.6453748665772e+01,
+      0.1192615865309e-07, 0.3438208613699e+01, 0.6290122169689e+01,
+      0.9835874798277e-08, 0.1913300781229e+01, 0.6319103810876e+01,
+      0.9639087569277e-08, 0.9487683644125e+00, 0.8273820945392e+01,
+      0.1175716107001e-07, 0.3228141664287e+01, 0.6276029531202e+01,
+      0.1018926508678e-07, 0.2216607854300e+01, 0.1254537627298e+02,
+      0.9500087869225e-08, 0.2625116459733e+01, 0.1256517118505e+02,
+      0.9664192916575e-08, 0.5860562449214e+01, 0.6259197520765e+01,
+
+      0.9612858712203e-08, 0.7885682917381e+00, 0.6306954180126e+01,
+      0.1117645675413e-07, 0.3932148831189e+01, 0.1779695906178e+02,
+      0.1158864052160e-07, 0.9995605521691e+00, 0.1778273215245e+02,
+      0.9021043467028e-08, 0.5263769742673e+01, 0.6172869583223e+01,
+      0.8836134773563e-08, 0.1496843220365e+01, 0.1692165728891e+01,
+      0.1045872200691e-07, 0.7009039517214e+00, 0.2204125344462e+00,
+      0.1211463487798e-07, 0.4041544938511e+01, 0.8257698122054e+02,
+      0.8541990804094e-08, 0.1447586692316e+01, 0.6393282117669e+01,
+      0.1038720703636e-07, 0.4594249718112e+00, 0.1550861511662e+02,
+      0.1126722351445e-07, 0.3925550579036e+01, 0.2061856251104e+00,
+
+      0.8697373859631e-08, 0.4411341856037e+01, 0.9491756770005e+00,
+      0.8869380028441e-08, 0.2402659724813e+01, 0.3903911373650e+01,
+      0.9247014693258e-08, 0.1401579743423e+01, 0.6267823317922e+01,
+      0.9205062930950e-08, 0.5245978000814e+01, 0.6298328382969e+01,
+      0.8000745038049e-08, 0.3590803356945e+01, 0.2648454860559e+01,
+      0.9168973650819e-08, 0.2470150501679e+01, 0.1498544001348e+03,
+      0.1075444949238e-07, 0.1328606161230e+01, 0.3694923081589e+02,
+      0.7817298525817e-08, 0.6162256225998e+01, 0.4804209201333e+01,
+      0.9541469226356e-08, 0.3942568967039e+01, 0.1256713221673e+02,
+      0.9821910122027e-08, 0.2360246287233e+00, 0.1140367694411e+02,
+
+      0.9897822023777e-08, 0.4619805634280e+01, 0.2280573557157e+02,
+      0.7737289283765e-08, 0.3784727847451e+01, 0.7834121070590e+01,
+      0.9260204034710e-08, 0.2223352487601e+01, 0.2787043132925e+01,
+      0.7320252888486e-08, 0.1288694636874e+01, 0.6282655592598e+01,
+      0.7319785780946e-08, 0.5359869567774e+01, 0.6283496108294e+01,
+      0.7147219933778e-08, 0.5516616675856e+01, 0.1725663147538e+02,
+      0.7946502829878e-08, 0.2630459984567e+01, 0.1241073141809e+02,
+      0.9001711808932e-08, 0.2849815827227e+01, 0.6281591679874e+01,
+      0.8994041507257e-08, 0.3795244450750e+01, 0.6284560021018e+01,
+      0.8298582787358e-08, 0.5236413127363e+00, 0.1241658836951e+02,
+
+      0.8526596520710e-08, 0.4794605424426e+01, 0.1098419223922e+02,
+      0.8209822103197e-08, 0.1578752370328e+01, 0.1096996532989e+02,
+      0.6357049861094e-08, 0.5708926113761e+01, 0.1596186371003e+01,
+      0.7370473179049e-08, 0.3842402530241e+01, 0.4061219149443e+01,
+      0.7232154664726e-08, 0.3067548981535e+01, 0.1610006857377e+03,
+      0.6328765494903e-08, 0.1313930030069e+01, 0.1193336791622e+02,
+      0.8030064908595e-08, 0.3488500408886e+01, 0.8460828644453e+00,
+      0.6275464259232e-08, 0.1532061626198e+01, 0.8531963191132e+00,
+      0.7051897446325e-08, 0.3285859929993e+01, 0.5849364236221e+01,
+      0.6161593705428e-08, 0.1477341999464e+01, 0.5573142801433e+01,
+
+      0.7754683957278e-08, 0.1586118663096e+01, 0.8662240327241e+01,
+      0.5889928990701e-08, 0.1304887868803e+01, 0.1232342296471e+02,
+      0.5705756047075e-08, 0.4555333589350e+01, 0.1258692712880e+02,
+      0.5964178808332e-08, 0.3001762842062e+01, 0.5333900173445e+01,
+      0.6712446027467e-08, 0.4886780007595e+01, 0.1171295538178e+02,
+      0.5941809275464e-08, 0.4701509603824e+01, 0.9779108567966e+01,
+      0.5466993627395e-08, 0.4588357817278e+01, 0.1884211409667e+02,
+      0.6340512090980e-08, 0.1164543038893e+01, 0.5217580628120e+02,
+      0.6325505710045e-08, 0.3919171259645e+01, 0.1041998632314e+02,
+      0.6164789509685e-08, 0.2143828253542e+01, 0.6151533897323e+01,
+
+      0.5263330812430e-08, 0.6066564434241e+01, 0.1885275071096e+02,
+      0.5597087780221e-08, 0.2926316429472e+01, 0.4337116142245e+00,
+      0.5396556236817e-08, 0.3244303591505e+01, 0.6286362197481e+01,
+      0.5396615148223e-08, 0.3404304703662e+01, 0.6279789503410e+01,
+      0.7091832443341e-08, 0.8532377803192e+00, 0.4907302013889e+01,
+      0.6572352589782e-08, 0.4901966774419e+01, 0.1176433076753e+02,
+      0.5960236060795e-08, 0.1874672315797e+01, 0.1422690933580e-01,
+      0.5125480043511e-08, 0.3735726064334e+01, 0.1245594543367e+02,
+      0.5928241866410e-08, 0.4502033899935e+01, 0.6414617803568e+01,
+      0.5249600357424e-08, 0.4372334799878e+01, 0.1151388321134e+02,
+
+      0.6059171276087e-08, 0.2581617302908e+01, 0.6062663316000e+01,
+      0.5295235081662e-08, 0.2974811513158e+01, 0.3496032717521e+01,
+      0.5820561875933e-08, 0.1796073748244e+00, 0.2838593341516e+00,
+      0.4754696606440e-08, 0.1981998136973e+01, 0.3104930017775e+01,
+      0.6385053548955e-08, 0.2559174171605e+00, 0.6133512519065e+01,
+      0.6589828273941e-08, 0.2750967106776e+01, 0.4087944051283e+02,
+      0.5383376567189e-08, 0.6325947523578e+00, 0.2248384854122e+02,
+      0.5928941683538e-08, 0.1672304519067e+01, 0.1581959461667e+01,
+      0.4816060709794e-08, 0.3512566172575e+01, 0.9388005868221e+01,
+      0.6003381586512e-08, 0.5610932219189e+01, 0.5326786718777e+01,
+
+      0.5504225393105e-08, 0.4037501131256e+01, 0.6503488384892e+01,
+      0.5353772620129e-08, 0.6122774968240e+01, 0.1735668374386e+03,
+      0.5786253768544e-08, 0.5527984999515e+01, 0.1350651127443e+00,
+      0.5065706702002e-08, 0.9980765573624e+00, 0.1248988586463e+02,
+      0.5972838885276e-08, 0.6044489493203e+01, 0.2673594526851e+02,
+      0.5323585877961e-08, 0.3924265998147e+01, 0.4171425416666e+01,
+      0.5210772682858e-08, 0.6220111376901e+01, 0.2460261242967e+02,
+      0.4726549040535e-08, 0.3716043206862e+01, 0.7232251527446e+01,
+      0.6029425105059e-08, 0.8548704071116e+00, 0.3227113045244e+03,
+      0.4481542826513e-08, 0.1426925072829e+01, 0.5547199253223e+01,
+
+      0.5836024505068e-08, 0.7135651752625e-01, 0.7285056171570e+02,
+      0.4137046613272e-08, 0.5330767643283e+01, 0.1087398597200e+02,
+      0.5171977473924e-08, 0.4494262335353e+00, 0.1884570439172e+02,
+      0.5694429833732e-08, 0.2952369582215e+01, 0.9723862754494e+02,
+      0.4009158925298e-08, 0.3500003416535e+01, 0.6244942932314e+01,
+      0.4784939596873e-08, 0.6196709413181e+01, 0.2929661536378e+02,
+      0.3983725022610e-08, 0.5103690031897e+01, 0.4274518229222e+01,
+      0.3870535232462e-08, 0.3187569587401e+01, 0.6321208768577e+01,
+      0.5140501213951e-08, 0.1668924357457e+01, 0.1232032006293e+02,
+      0.3849034819355e-08, 0.4445722510309e+01, 0.1726726808967e+02,
+
+      0.4002383075060e-08, 0.5226224152423e+01, 0.7018952447668e+01,
+      0.3890719543549e-08, 0.4371166550274e+01, 0.1491901785440e+02,
+      0.4887084607881e-08, 0.5973556689693e+01, 0.1478866649112e+01,
+      0.3739939287592e-08, 0.2089084714600e+01, 0.6922973089781e+01,
+      0.5031925918209e-08, 0.4658371936827e+01, 0.1715706182245e+02,
+      0.4387748764954e-08, 0.4825580552819e+01, 0.2331413144044e+03,
+      0.4147398098865e-08, 0.3739003524998e+01, 0.1376059875786e+02,
+      0.3719089993586e-08, 0.1148941386536e+01, 0.6297302759782e+01,
+      0.3934238461056e-08, 0.1559893008343e+01, 0.7872148766781e+01,
+      0.3672471375622e-08, 0.5516145383612e+01, 0.6268848941110e+01,
+
+      0.3768911277583e-08, 0.6116053700563e+01, 0.4157198507331e+01,
+      0.4033388417295e-08, 0.5076821746017e+01, 0.1567108171867e+02,
+      0.3764194617832e-08, 0.8164676232075e+00, 0.3185192151914e+01,
+      0.4840628226284e-08, 0.1360479453671e+01, 0.1252801878276e+02,
+      0.4949443923785e-08, 0.2725622229926e+01, 0.1617106187867e+03,
+      0.4117393089971e-08, 0.6054459628492e+00, 0.5642198095270e+01,
+      0.3925754020428e-08, 0.8570462135210e+00, 0.2139354194808e+02,
+      0.3630551757923e-08, 0.3552067338279e+01, 0.6294805223347e+01,
+      0.3627274802357e-08, 0.3096565085313e+01, 0.6271346477544e+01,
+      0.3806143885093e-08, 0.6367751709777e+00, 0.1725304118033e+02,
+
+      0.4433254641565e-08, 0.4848461503937e+01, 0.7445550607224e+01,
+      0.3712319846576e-08, 0.1331950643655e+01, 0.4194847048887e+00,
+      0.3849847534783e-08, 0.4958368297746e+00, 0.9562891316684e+00,
+      0.3483955430165e-08, 0.2237215515707e+01, 0.1161697602389e+02,
+      0.3961912730982e-08, 0.3332402188575e+01, 0.2277943724828e+02,
+      0.3419978244481e-08, 0.5785600576016e+01, 0.1362553364512e+02,
+      0.3329417758177e-08, 0.9812676559709e-01, 0.1685848245639e+02,
+      0.4207206893193e-08, 0.9494780468236e+00, 0.2986433403208e+02,
+      0.3268548976410e-08, 0.1739332095686e+00, 0.5749861718712e+01,
+      0.3321880082685e-08, 0.1423354800666e+01, 0.6279143387820e+01,
+
+      0.4503173010852e-08, 0.2314972675293e+00, 0.1385561574497e+01,
+      0.4316599090954e-08, 0.1012646782616e+00, 0.4176041334900e+01,
+      0.3283493323850e-08, 0.5233306881265e+01, 0.6287008313071e+01,
+      0.3164033542343e-08, 0.4005597257511e+01, 0.2099539292909e+02,
+      0.4159720956725e-08, 0.5365676242020e+01, 0.5905702259363e+01,
+      0.3565176892217e-08, 0.4284440620612e+01, 0.3932462625300e-02,
+      0.3514440950221e-08, 0.4270562636575e+01, 0.7335344340001e+01,
+      0.3540596871909e-08, 0.5953553201060e+01, 0.1234573916645e+02,
+      0.2960769905118e-08, 0.1115180417718e+01, 0.2670964694522e+02,
+      0.2962213739684e-08, 0.3863811918186e+01, 0.6408777551755e+00,
+
+      0.3883556700251e-08, 0.1268617928302e+01, 0.6660449441528e+01,
+      0.2919225516346e-08, 0.4908605223265e+01, 0.1375773836557e+01,
+      0.3115158863370e-08, 0.3744519976885e+01, 0.3802769619140e-01,
+      0.4099438144212e-08, 0.4173244670532e+01, 0.4480965020977e+02,
+      0.2899531858964e-08, 0.5910601428850e+01, 0.2059724391010e+02,
+      0.3289733429855e-08, 0.2488050078239e+01, 0.1081813534213e+02,
+      0.3933075612875e-08, 0.1122363652883e+01, 0.3773735910827e+00,
+      0.3021403764467e-08, 0.4951973724904e+01, 0.2982630633589e+02,
+      0.2798598949757e-08, 0.5117057845513e+01, 0.1937891852345e+02,
+      0.3397421302707e-08, 0.6104159180476e+01, 0.6923953605621e+01,
+
+      0.3720398002179e-08, 0.1184933429829e+01, 0.3066615496545e+02,
+      0.3598484186267e-08, 0.3505282086105e+01, 0.6147450479709e+01,
+      0.3694594027310e-08, 0.2286651088141e+01, 0.2636725487657e+01,
+      0.2680444152969e-08, 0.1871816775482e+00, 0.6816289982179e+01,
+      0.3497574865641e-08, 0.3143251755431e+01, 0.6418701221183e+01,
+      0.3130274129494e-08, 0.2462167316018e+01, 0.1235996607578e+02,
+      0.3241119069551e-08, 0.4256374004686e+01, 0.1652265972112e+02,
+      0.2601960842061e-08, 0.4970362941425e+01, 0.1045450126711e+02,
+      0.2690601527504e-08, 0.2372657824898e+01, 0.3163918923335e+00,
+      0.2908688152664e-08, 0.4232652627721e+01, 0.2828699048865e+02,
+
+      0.3120456131875e-08, 0.3925747001137e+00, 0.2195415756911e+02,
+      0.3148855423384e-08, 0.3093478330445e+01, 0.1172006883645e+02,
+      0.3051044261017e-08, 0.5560948248212e+01, 0.6055599646783e+01,
+      0.2826006876660e-08, 0.5072790310072e+01, 0.5120601093667e+01,
+      0.3100034191711e-08, 0.4998530231096e+01, 0.1799603123222e+02,
+      0.2398771640101e-08, 0.2561739802176e+01, 0.6255674361143e+01,
+      0.2384002842728e-08, 0.4087420284111e+01, 0.6310477339748e+01,
+      0.2842146517568e-08, 0.2515048217955e+01, 0.5469525544182e+01,
+      0.2847674371340e-08, 0.5235326497443e+01, 0.1034429499989e+02,
+      0.2903722140764e-08, 0.1088200795797e+01, 0.6510552054109e+01,
+
+      0.3187610710605e-08, 0.4710624424816e+01, 0.1693792562116e+03,
+      0.3048869992813e-08, 0.2857975896445e+00, 0.8390110365991e+01,
+      0.2860216950984e-08, 0.2241619020815e+01, 0.2243449970715e+00,
+      0.2701117683113e-08, 0.6651573305272e-01, 0.6129297044991e+01,
+      0.2509891590152e-08, 0.1285135324585e+01, 0.1044027435778e+02,
+      0.2623200252223e-08, 0.2981229834530e+00, 0.6436854655901e+01,
+      0.2622541669202e-08, 0.6122470726189e+01, 0.9380959548977e+01,
+      0.2818435667099e-08, 0.4251087148947e+01, 0.5934151399930e+01,
+      0.2365196797465e-08, 0.3465070460790e+01, 0.2470570524223e+02,
+      0.2358704646143e-08, 0.5791603815350e+01, 0.8671969964381e+01,
+
+      0.2388299481390e-08, 0.4142483772941e+01, 0.7096626156709e+01,
+      0.1996041217224e-08, 0.2101901889496e+01, 0.1727188400790e+02,
+      0.2687593060336e-08, 0.1526689456959e+01, 0.7075506709219e+02,
+      0.2618913670810e-08, 0.2397684236095e+01, 0.6632000300961e+01,
+      0.2571523050364e-08, 0.5751929456787e+00, 0.6206810014183e+01,
+      0.2582135006946e-08, 0.5595464352926e+01, 0.4873985990671e+02,
+      0.2372530190361e-08, 0.5092689490655e+01, 0.1590676413561e+02,
+      0.2357178484712e-08, 0.4444363527851e+01, 0.3097883698531e+01,
+      0.2451590394723e-08, 0.3108251687661e+01, 0.6612329252343e+00,
+      0.2370045949608e-08, 0.2608133861079e+01, 0.3459636466239e+02,
+
+      0.2268997267358e-08, 0.3639717753384e+01, 0.2844914056730e-01,
+      0.1731432137906e-08, 0.1741898445707e+00, 0.2019909489111e+02,
+      0.1629869741622e-08, 0.3902225646724e+01, 0.3035599730800e+02,
+      0.2206215801974e-08, 0.4971131250731e+01, 0.6281667977667e+01,
+      0.2205469554680e-08, 0.1677462357110e+01, 0.6284483723224e+01,
+      0.2148792362509e-08, 0.4236259604006e+01, 0.1980482729015e+02,
+      0.1873733657847e-08, 0.5926814998687e+01, 0.2876692439167e+02,
+      0.2026573758959e-08, 0.4349643351962e+01, 0.2449240616245e+02,
+      0.1807770325110e-08, 0.5700940482701e+01, 0.2045286941806e+02,
+      0.1881174408581e-08, 0.6601286363430e+00, 0.2358125818164e+02,
+
+      0.1368023671690e-08, 0.2211098592752e+01, 0.2473415438279e+02,
+      0.1720017916280e-08, 0.4942488551129e+01, 0.1679593901136e+03,
+      0.1702427665131e-08, 0.1452233856386e+01, 0.3338575901272e+03,
+      0.1414032510054e-08, 0.5525357721439e+01, 0.1624205518357e+03,
+      0.1652626045364e-08, 0.4108794283624e+01, 0.8956999012000e+02,
+      0.1642957769686e-08, 0.7344335209984e+00, 0.5267006960365e+02,
+      0.1614952403624e-08, 0.3541213951363e+01, 0.3332657872986e+02,
+      0.1535988291188e-08, 0.4031094072151e+01, 0.3852657435933e+02,
+      0.1593193738177e-08, 0.4185136203609e+01, 0.2282781046519e+03,
+      0.1074569126382e-08, 0.1720485636868e+01, 0.8397383534231e+02,
+
+      0.1074408214509e-08, 0.2758613420318e+01, 0.8401985929482e+02,
+      0.9700199670465e-09, 0.4216686842097e+01, 0.7826370942180e+02,
+      0.1258433517061e-08, 0.2575068876639e+00, 0.3115650189215e+03,
+      0.1240303229539e-08, 0.4800844956756e+00, 0.1784300471910e+03,
+      0.9018345948127e-09, 0.3896756361552e+00, 0.5886454391678e+02,
+      0.1135301432805e-08, 0.3700805023550e+00, 0.7842370451713e+02,
+      0.9215887951370e-09, 0.4364579276638e+01, 0.1014262087719e+03,
+      0.1055401054147e-08, 0.2156564222111e+01, 0.5660027930059e+02,
+      0.1008725979831e-08, 0.5454015785234e+01, 0.4245678405627e+02,
+      0.7217398104321e-09, 0.1597772562175e+01, 0.2457074661053e+03,
+
+      0.6912033134447e-09, 0.5824090621461e+01, 0.1679936946371e+03,
+      0.6833881523549e-09, 0.3578778482835e+01, 0.6053048899753e+02,
+      0.4887304205142e-09, 0.3724362812423e+01, 0.9656299901946e+02,
+      0.5173709754788e-09, 0.5422427507933e+01, 0.2442876000072e+03,
+      0.4671353097145e-09, 0.2396106924439e+01, 0.1435713242844e+03,
+      0.5652608439480e-09, 0.2804028838685e+01, 0.8365903305582e+02,
+      0.5604061331253e-09, 0.1638816006247e+01, 0.8433466158131e+02,
+      0.4712723365400e-09, 0.8979003224474e+00, 0.3164282286739e+03,
+      0.4909967465112e-09, 0.3210426725516e+01, 0.4059982187939e+03,
+      0.4771358267658e-09, 0.5308027211629e+01, 0.1805255418145e+03,
+
+      0.3943451445989e-09, 0.2195145341074e+01, 0.2568537517081e+03,
+      0.3952109120244e-09, 0.5081189491586e+01, 0.2449975330562e+03,
+      0.3788134594789e-09, 0.4345171264441e+01, 0.1568131045107e+03,
+      0.3738330190479e-09, 0.2613062847997e+01, 0.3948519331910e+03,
+      0.3099866678136e-09, 0.2846760817689e+01, 0.1547176098872e+03,
+      0.2002962716768e-09, 0.4921360989412e+01, 0.2268582385539e+03,
+      0.2198291338754e-09, 0.1130360117454e+00, 0.1658638954901e+03,
+      0.1491958330784e-09, 0.4228195232278e+01, 0.2219950288015e+03,
+      0.1475384076173e-09, 0.3005721811604e+00, 0.3052819430710e+03,
+      0.1661626624624e-09, 0.7830125621203e+00, 0.2526661704812e+03,
+
+      0.9015823460025e-10, 0.3807792942715e+01, 0.4171445043968e+03 };
+
+/* Sun-to-Earth, T^0, Y */
+   static const double e0y[] = {
+      0.9998921098898e+00, 0.1826583913846e+00, 0.6283075850446e+01,
+     -0.2442700893735e-01, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.8352929742915e-02, 0.1395277998680e+00, 0.1256615170089e+02,
+      0.1046697300177e-03, 0.9641423109763e-01, 0.1884922755134e+02,
+      0.3110841876663e-04, 0.5381140401712e+01, 0.8399684731857e+02,
+      0.2570269094593e-04, 0.5301016407128e+01, 0.5296909721118e+00,
+      0.2147389623610e-04, 0.2662510869850e+01, 0.1577343543434e+01,
+      0.1680344384050e-04, 0.5207904119704e+01, 0.6279552690824e+01,
+      0.1679117312193e-04, 0.4582187486968e+01, 0.6286599010068e+01,
+      0.1440512068440e-04, 0.1900688517726e+01, 0.2352866153506e+01,
+
+      0.1135139664999e-04, 0.5273108538556e+01, 0.5223693906222e+01,
+      0.9345482571018e-05, 0.4503047687738e+01, 0.1203646072878e+02,
+      0.9007418719568e-05, 0.1605621059637e+01, 0.1021328554739e+02,
+      0.5671536712314e-05, 0.5812849070861e+00, 0.1059381944224e+01,
+      0.7451401861666e-05, 0.2807346794836e+01, 0.3981490189893e+00,
+      0.6393470057114e-05, 0.6029224133855e+01, 0.5753384878334e+01,
+      0.6814275881697e-05, 0.6472990145974e+00, 0.4705732307012e+01,
+      0.6113705628887e-05, 0.3813843419700e+01, 0.6812766822558e+01,
+      0.4503851367273e-05, 0.4527804370996e+01, 0.5884926831456e+01,
+      0.4522249141926e-05, 0.5991783029224e+01, 0.6256777527156e+01,
+
+      0.4501794307018e-05, 0.3798703844397e+01, 0.6309374173736e+01,
+      0.5514927480180e-05, 0.3961257833388e+01, 0.5507553240374e+01,
+      0.4062862799995e-05, 0.5256247296369e+01, 0.6681224869435e+01,
+      0.5414900429712e-05, 0.5499032014097e+01, 0.7755226100720e+00,
+      0.5463153987424e-05, 0.6173092454097e+01, 0.1414349524433e+02,
+      0.5071611859329e-05, 0.2870244247651e+01, 0.7860419393880e+01,
+      0.2195112094455e-05, 0.2952338617201e+01, 0.1150676975667e+02,
+      0.2279139233919e-05, 0.5951775132933e+01, 0.7058598460518e+01,
+      0.2278386100876e-05, 0.4845456398785e+01, 0.4694002934110e+01,
+      0.2559088003308e-05, 0.6945321117311e+00, 0.1216800268190e+02,
+
+      0.2561079286856e-05, 0.6167224608301e+01, 0.7099330490126e+00,
+      0.1792755796387e-05, 0.1400122509632e+01, 0.7962980379786e+00,
+      0.1818715656502e-05, 0.4703347611830e+01, 0.6283142985870e+01,
+      0.1818744924791e-05, 0.5086748900237e+01, 0.6283008715021e+01,
+      0.1554518791390e-05, 0.5331008042713e-01, 0.2513230340178e+02,
+      0.2063265737239e-05, 0.4283680484178e+01, 0.1179062909082e+02,
+      0.1497613520041e-05, 0.6074207826073e+01, 0.5486777812467e+01,
+      0.2000617940427e-05, 0.2501426281450e+01, 0.1778984560711e+02,
+      0.1289731195580e-05, 0.3646340599536e+01, 0.7079373888424e+01,
+      0.1282657998934e-05, 0.3232864804902e+01, 0.3738761453707e+01,
+
+      0.1528915968658e-05, 0.5581433416669e+01, 0.2132990797783e+00,
+      0.1187304098432e-05, 0.5453576453694e+01, 0.9437762937313e+01,
+      0.7842782928118e-06, 0.2823953922273e+00, 0.8827390247185e+01,
+      0.7352892280868e-06, 0.1124369580175e+01, 0.1589072916335e+01,
+      0.6570189360797e-06, 0.2089154042840e+01, 0.1176985366291e+02,
+      0.6324967590410e-06, 0.6704855581230e+00, 0.6262300422539e+01,
+      0.6298289872283e-06, 0.2836414855840e+01, 0.6303851278352e+01,
+      0.6476686465855e-06, 0.4852433866467e+00, 0.7113454667900e-02,
+      0.8587034651234e-06, 0.1453511005668e+01, 0.1672837615881e+03,
+      0.8068948788113e-06, 0.9224087798609e+00, 0.6069776770667e+01,
+
+      0.8353786011661e-06, 0.4631707184895e+01, 0.3340612434717e+01,
+      0.6009324532132e-06, 0.1829498827726e+01, 0.4136910472696e+01,
+      0.7558158559566e-06, 0.2588596800317e+01, 0.6496374930224e+01,
+      0.5809279504503e-06, 0.5516818853476e+00, 0.1097707878456e+02,
+      0.5374131950254e-06, 0.6275674734960e+01, 0.1194447056968e+01,
+      0.5711160507326e-06, 0.1091905956872e+01, 0.6282095334605e+01,
+      0.5710183170746e-06, 0.2415001635090e+01, 0.6284056366286e+01,
+      0.5144373590610e-06, 0.6020336443438e+01, 0.6290189305114e+01,
+      0.5103108927267e-06, 0.3775634564605e+01, 0.6275962395778e+01,
+      0.4960654697891e-06, 0.1073450946756e+01, 0.6127655567643e+01,
+
+      0.4786385689280e-06, 0.2431178012310e+01, 0.6438496133249e+01,
+      0.6109911263665e-06, 0.5343356157914e+01, 0.3154687086868e+01,
+      0.4839898944024e-06, 0.5830833594047e-01, 0.8018209333619e+00,
+      0.4734822623919e-06, 0.4536080134821e+01, 0.3128388763578e+01,
+      0.4834741473290e-06, 0.2585090489754e+00, 0.7084896783808e+01,
+      0.5134858581156e-06, 0.4213317172603e+01, 0.1235285262111e+02,
+      0.5064004264978e-06, 0.4814418806478e+00, 0.1185621865188e+02,
+      0.3753476772761e-06, 0.1599953399788e+01, 0.8429241228195e+01,
+      0.4935264014283e-06, 0.2157417556873e+01, 0.2544314396739e+01,
+      0.3950929600897e-06, 0.3359394184254e+01, 0.5481254917084e+01,
+
+      0.4895849789777e-06, 0.5165704376558e+01, 0.9225539266174e+01,
+      0.4215241688886e-06, 0.2065368800993e+01, 0.1726015463500e+02,
+      0.3796773731132e-06, 0.1468606346612e+01, 0.4265981595566e+00,
+      0.3114178142515e-06, 0.3615638079474e+01, 0.2146165377750e+01,
+      0.3260664220838e-06, 0.4417134922435e+01, 0.4164311961999e+01,
+      0.3976996123008e-06, 0.4700866883004e+01, 0.5856477690889e+01,
+      0.2801459672924e-06, 0.4538902060922e+01, 0.1256967486051e+02,
+      0.3638931868861e-06, 0.1334197991475e+01, 0.1807370494127e+02,
+      0.2487013269476e-06, 0.3749275558275e+01, 0.2629832328990e-01,
+      0.3034165481994e-06, 0.4236622030873e+00, 0.4535059491685e+01,
+
+      0.2676278825586e-06, 0.5970848007811e+01, 0.3930209696940e+01,
+      0.2764903818918e-06, 0.5194636754501e+01, 0.1256262854127e+02,
+      0.2485149930507e-06, 0.1002434207846e+01, 0.5088628793478e+01,
+      0.2199305540941e-06, 0.3066773098403e+01, 0.1255903824622e+02,
+      0.2571106500435e-06, 0.7588312459063e+00, 0.1336797263425e+02,
+      0.2049751817158e-06, 0.3444977434856e+01, 0.1137170464392e+02,
+      0.2599707296297e-06, 0.1873128542205e+01, 0.7143069561767e+02,
+      0.1785018072217e-06, 0.5015891306615e+01, 0.1748016358760e+01,
+      0.2324833891115e-06, 0.4618271239730e+01, 0.1831953657923e+02,
+      0.1709711119545e-06, 0.5300003455669e+01, 0.4933208510675e+01,
+
+      0.2107159351716e-06, 0.2229819815115e+01, 0.7477522907414e+01,
+      0.1750333080295e-06, 0.6161485880008e+01, 0.1044738781244e+02,
+      0.2000598210339e-06, 0.2967357299999e+01, 0.8031092209206e+01,
+      0.1380920248681e-06, 0.3027007923917e+01, 0.8635942003952e+01,
+      0.1412460470299e-06, 0.6037597163798e+01, 0.2942463415728e+01,
+      0.1888459803001e-06, 0.8561476243374e+00, 0.1561374759853e+03,
+      0.1788370542585e-06, 0.4869736290209e+01, 0.1592596075957e+01,
+      0.1360893296167e-06, 0.3626411886436e+01, 0.1309584267300e+02,
+      0.1506846530160e-06, 0.1550975377427e+01, 0.1649636139783e+02,
+      0.1800913376176e-06, 0.2075826033190e+01, 0.1729818233119e+02,
+
+      0.1436261390649e-06, 0.6148876420255e+01, 0.2042657109477e+02,
+      0.1220227114151e-06, 0.4382583879906e+01, 0.7632943190217e+01,
+      0.1337883603592e-06, 0.2036644327361e+01, 0.1213955354133e+02,
+      0.1159326650738e-06, 0.3892276994687e+01, 0.5331357529664e+01,
+      0.1352853128569e-06, 0.1447950649744e+01, 0.1673046366289e+02,
+      0.1433408296083e-06, 0.4457854692961e+01, 0.7342457794669e+01,
+      0.1234701666518e-06, 0.1538818147151e+01, 0.6279485555400e+01,
+      0.1234027192007e-06, 0.1968523220760e+01, 0.6286666145492e+01,
+      0.1244024091797e-06, 0.5779803499985e+01, 0.1511046609763e+02,
+      0.1097934945516e-06, 0.6210975221388e+00, 0.1098880815746e+02,
+
+      0.1254611329856e-06, 0.2591963807998e+01, 0.1572083878776e+02,
+      0.1158247286784e-06, 0.2483612812670e+01, 0.5729506548653e+01,
+      0.9039078252960e-07, 0.3857554579796e+01, 0.9623688285163e+01,
+      0.9108024978836e-07, 0.5826368512984e+01, 0.7234794171227e+01,
+      0.8887068108436e-07, 0.3475694573987e+01, 0.6148010737701e+01,
+      0.8632374035438e-07, 0.3059070488983e-01, 0.6418140963190e+01,
+      0.7893186992967e-07, 0.1583194837728e+01, 0.2118763888447e+01,
+      0.8297650201172e-07, 0.8519770534637e+00, 0.1471231707864e+02,
+      0.1019759578988e-06, 0.1319598738732e+00, 0.1349867339771e+01,
+      0.1010037696236e-06, 0.9937860115618e+00, 0.6836645152238e+01,
+
+      0.1047727548266e-06, 0.1382138405399e+01, 0.5999216516294e+01,
+      0.7351993881086e-07, 0.3833397851735e+01, 0.6040347114260e+01,
+      0.9868771092341e-07, 0.2124913814390e+01, 0.6566935184597e+01,
+      0.7007321959390e-07, 0.5946305343763e+01, 0.6525804586632e+01,
+      0.6861411679709e-07, 0.4574654977089e+01, 0.7238675589263e+01,
+      0.7554519809614e-07, 0.5949232686844e+01, 0.1253985337760e+02,
+      0.9541880448335e-07, 0.3495242990564e+01, 0.2122839202813e+02,
+      0.7185606722155e-07, 0.4310113471661e+01, 0.6245048154254e+01,
+      0.7131360871710e-07, 0.5480309323650e+01, 0.6321103546637e+01,
+      0.6651142021039e-07, 0.5411097713654e+01, 0.5327476111629e+01,
+
+      0.8538618213667e-07, 0.1827849973951e+01, 0.1101510648075e+02,
+      0.8634954288044e-07, 0.5443584943349e+01, 0.5643178611111e+01,
+      0.7449415051484e-07, 0.2011535459060e+01, 0.5368044267797e+00,
+      0.7421047599169e-07, 0.3464562529249e+01, 0.2354323048545e+02,
+      0.6140694354424e-07, 0.5657556228815e+01, 0.1296430071988e+02,
+      0.6353525143033e-07, 0.3463816593821e+01, 0.1990745094947e+01,
+      0.6221964013447e-07, 0.1532259498697e+01, 0.9517183207817e+00,
+      0.5852480257244e-07, 0.1375396598875e+01, 0.9555997388169e+00,
+      0.6398637498911e-07, 0.2405645801972e+01, 0.2407292145756e+02,
+      0.7039744069878e-07, 0.5397541799027e+01, 0.5225775174439e+00,
+
+      0.6977997694382e-07, 0.4762347105419e+01, 0.1097355562493e+02,
+      0.7460629558396e-07, 0.2711944692164e+01, 0.2200391463820e+02,
+      0.5376577536101e-07, 0.2352980430239e+01, 0.1431416805965e+02,
+      0.7530607893556e-07, 0.1943940180699e+01, 0.1842262939178e+02,
+      0.6822928971605e-07, 0.4337651846959e+01, 0.1554202828031e+00,
+      0.6220772380094e-07, 0.6716871369278e+00, 0.1845107853235e+02,
+      0.6586950799043e-07, 0.2229714460505e+01, 0.5216580451554e+01,
+      0.5873800565771e-07, 0.7627013920580e+00, 0.6398972393349e+00,
+      0.6264346929745e-07, 0.6202785478961e+00, 0.6277552955062e+01,
+      0.6257929115669e-07, 0.2886775596668e+01, 0.6288598745829e+01,
+
+      0.5343536033409e-07, 0.1977241012051e+01, 0.4690479774488e+01,
+      0.5587849781714e-07, 0.1922923484825e+01, 0.1551045220144e+01,
+      0.6905100845603e-07, 0.3570757164631e+01, 0.1030928125552e+00,
+      0.6178957066649e-07, 0.5197558947765e+01, 0.5230807360890e+01,
+      0.6187270224331e-07, 0.8193497368922e+00, 0.5650292065779e+01,
+      0.5385664291426e-07, 0.5406336665586e+01, 0.7771377146812e+02,
+      0.6329363917926e-07, 0.2837760654536e+01, 0.2608790314060e+02,
+      0.4546018761604e-07, 0.2933580297050e+01, 0.5535693017924e+00,
+      0.6196091049375e-07, 0.4157871494377e+01, 0.8467247584405e+02,
+      0.6159555108218e-07, 0.3211703561703e+01, 0.2394243902548e+03,
+
+      0.4995340539317e-07, 0.1459098102922e+01, 0.4732030630302e+01,
+      0.5457031243572e-07, 0.1430457676136e+01, 0.6179983037890e+01,
+      0.4863461418397e-07, 0.2196425916730e+01, 0.9027992316901e+02,
+      0.5342947626870e-07, 0.2086612890268e+01, 0.6386168663001e+01,
+      0.5674296648439e-07, 0.2760204966535e+01, 0.6915859635113e+01,
+      0.4745783120161e-07, 0.4245368971862e+01, 0.6282970628506e+01,
+      0.4745676961198e-07, 0.5544725787016e+01, 0.6283181072386e+01,
+      0.4049796869973e-07, 0.2213984363586e+01, 0.6254626709878e+01,
+      0.4248333596940e-07, 0.8075781952896e+00, 0.7875671926403e+01,
+      0.4027178070205e-07, 0.1293268540378e+01, 0.6311524991013e+01,
+
+      0.4066543943476e-07, 0.3986141175804e+01, 0.3634620989887e+01,
+      0.4858863787880e-07, 0.1276112738231e+01, 0.5760498333002e+01,
+      0.5277398263530e-07, 0.4916111741527e+01, 0.2515860172507e+02,
+      0.4105635656559e-07, 0.1725805864426e+01, 0.6709674010002e+01,
+      0.4376781925772e-07, 0.2243642442106e+01, 0.6805653367890e+01,
+      0.3235827894693e-07, 0.3614135118271e+01, 0.1066495398892e+01,
+      0.3073244740308e-07, 0.2460873393460e+01, 0.5863591145557e+01,
+      0.3088609271373e-07, 0.5678431771790e+01, 0.9917696840332e+01,
+      0.3393022279836e-07, 0.3814017477291e+01, 0.1391601904066e+02,
+      0.3038686508802e-07, 0.4660216229171e+01, 0.1256621883632e+02,
+
+      0.4019677752497e-07, 0.5906906243735e+01, 0.1334167431096e+02,
+      0.3288834998232e-07, 0.9536146445882e+00, 0.1620077269078e+02,
+      0.3889973794631e-07, 0.3942205097644e+01, 0.7478166569050e-01,
+      0.3050438987141e-07, 0.1624810271286e+01, 0.1805292951336e+02,
+      0.3601142564638e-07, 0.4030467142575e+01, 0.6208294184755e+01,
+      0.3689015557141e-07, 0.3648878818694e+01, 0.5966683958112e+01,
+      0.3563471893565e-07, 0.5749584017096e+01, 0.6357857516136e+01,
+      0.2776183170667e-07, 0.2630124187070e+01, 0.3523159621801e-02,
+      0.2922350530341e-07, 0.1790346403629e+01, 0.1272157198369e+02,
+      0.3511076917302e-07, 0.6142198301611e+01, 0.6599467742779e+01,
+
+      0.3619351007632e-07, 0.1432421386492e+01, 0.6019991944201e+01,
+      0.2561254711098e-07, 0.2302822475792e+01, 0.1259245002418e+02,
+      0.2626903942920e-07, 0.8660470994571e+00, 0.6702560555334e+01,
+      0.2550187397083e-07, 0.6069721995383e+01, 0.1057540660594e+02,
+      0.2535873526138e-07, 0.1079020331795e-01, 0.3141537925223e+02,
+      0.3519786153847e-07, 0.3809066902283e+01, 0.2505706758577e+03,
+      0.3424651492873e-07, 0.2075435114417e+01, 0.6546159756691e+01,
+      0.2372676630861e-07, 0.2057803120154e+01, 0.2388894113936e+01,
+      0.2710980779541e-07, 0.1510068488010e+01, 0.1202934727411e+02,
+      0.3038710889704e-07, 0.5043617528901e+01, 0.1256608456547e+02,
+
+      0.2220364130585e-07, 0.3694793218205e+01, 0.1336244973887e+02,
+      0.3025880825460e-07, 0.5450618999049e-01, 0.2908881142201e+02,
+      0.2784493486864e-07, 0.3381164084502e+01, 0.1494531617769e+02,
+      0.2294414142438e-07, 0.4382309025210e+01, 0.6076890225335e+01,
+      0.2012723294724e-07, 0.9142212256518e+00, 0.6262720680387e+01,
+      0.2036357831958e-07, 0.5676172293154e+01, 0.4701116388778e+01,
+      0.2003474823288e-07, 0.2592767977625e+01, 0.6303431020504e+01,
+      0.2207144900109e-07, 0.5404976271180e+01, 0.6489261475556e+01,
+      0.2481664905135e-07, 0.4373284587027e+01, 0.1204357418345e+02,
+      0.2674949182295e-07, 0.5859182188482e+01, 0.4590910121555e+01,
+
+      0.2450554720322e-07, 0.4555381557451e+01, 0.1495633313810e+00,
+      0.2601975986457e-07, 0.3933165584959e+01, 0.1965104848470e+02,
+      0.2199860022848e-07, 0.5227977189087e+01, 0.1351787002167e+02,
+      0.2448121172316e-07, 0.4858060353949e+01, 0.1162474756779e+01,
+      0.1876014864049e-07, 0.5690546553605e+01, 0.6279194432410e+01,
+      0.1874513219396e-07, 0.4099539297446e+01, 0.6286957268481e+01,
+      0.2156380842559e-07, 0.4382594769913e+00, 0.1813929450232e+02,
+      0.1981691240061e-07, 0.1829784152444e+01, 0.4686889479442e+01,
+      0.2329992648539e-07, 0.2836254278973e+01, 0.1002183730415e+02,
+      0.1765184135302e-07, 0.2803494925833e+01, 0.4292330755499e+01,
+
+      0.2436368366085e-07, 0.2836897959677e+01, 0.9514313292143e+02,
+      0.2164089203889e-07, 0.6127522446024e+01, 0.6037244212485e+01,
+      0.1847755034221e-07, 0.3683163635008e+01, 0.2427287361862e+00,
+      0.1674798769966e-07, 0.3316993867246e+00, 0.1311972100268e+02,
+      0.2222542124356e-07, 0.8294097805480e+00, 0.1266924451345e+02,
+      0.2071074505925e-07, 0.3659492220261e+01, 0.6528907488406e+01,
+      0.1608224471835e-07, 0.4774492067182e+01, 0.1352175143971e+02,
+      0.1857583439071e-07, 0.2873120597682e+01, 0.8662240327241e+01,
+      0.1793018836159e-07, 0.5282441177929e+00, 0.6819880277225e+01,
+      0.1575391221692e-07, 0.1320789654258e+01, 0.1102062672231e+00,
+
+      0.1840132009557e-07, 0.1917110916256e+01, 0.6514761976723e+02,
+      0.1760917288281e-07, 0.2972635937132e+01, 0.5746271423666e+01,
+      0.1561779518516e-07, 0.4372569261981e+01, 0.6272439236156e+01,
+      0.1558687885205e-07, 0.5416424926425e+01, 0.6293712464735e+01,
+      0.1951359382579e-07, 0.3094448898752e+01, 0.2301353951334e+02,
+      0.1569144275614e-07, 0.2802103689808e+01, 0.1765478049437e+02,
+      0.1479130389462e-07, 0.2136435020467e+01, 0.2077542790660e-01,
+      0.1467828510764e-07, 0.7072627435674e+00, 0.1052268489556e+01,
+      0.1627627337440e-07, 0.3947607143237e+01, 0.6327837846670e+00,
+      0.1503498479758e-07, 0.4079248909190e+01, 0.7626583626240e-01,
+
+      0.1297967708237e-07, 0.6269637122840e+01, 0.1149965630200e+02,
+      0.1374416896634e-07, 0.4175657970702e+01, 0.6016468784579e+01,
+      0.1783812325219e-07, 0.1476540547560e+01, 0.3301902111895e+02,
+      0.1525884228756e-07, 0.4653477715241e+01, 0.9411464614024e+01,
+      0.1451067396763e-07, 0.2573001128225e+01, 0.1277945078067e+02,
+      0.1297713111950e-07, 0.5612799618771e+01, 0.6549682916313e+01,
+      0.1462784012820e-07, 0.4189661623870e+01, 0.1863592847156e+02,
+      0.1384185980007e-07, 0.2656915472196e+01, 0.2379164476796e+01,
+      0.1221497599801e-07, 0.5612515760138e+01, 0.1257326515556e+02,
+      0.1560574525896e-07, 0.4783414317919e+01, 0.1887552587463e+02,
+
+      0.1544598372036e-07, 0.2694431138063e+01, 0.1820933031200e+02,
+      0.1531678928696e-07, 0.4105103489666e+01, 0.2593412433514e+02,
+      0.1349321503795e-07, 0.3082437194015e+00, 0.5120601093667e+01,
+      0.1252030290917e-07, 0.6124072334087e+01, 0.6993008899458e+01,
+      0.1459243816687e-07, 0.3733103981697e+01, 0.3813291813120e-01,
+      0.1226103625262e-07, 0.1267127706817e+01, 0.2435678079171e+02,
+      0.1019449641504e-07, 0.4367790112269e+01, 0.1725663147538e+02,
+      0.1380789433607e-07, 0.3387201768700e+01, 0.2458316379602e+00,
+      0.1019453421658e-07, 0.9204143073737e+00, 0.6112403035119e+01,
+      0.1297929434405e-07, 0.5786874896426e+01, 0.1249137003520e+02,
+
+      0.9912677786097e-08, 0.3164232870746e+01, 0.6247047890016e+01,
+      0.9829386098599e-08, 0.2586762413351e+01, 0.6453748665772e+01,
+      0.1226807746104e-07, 0.6239068436607e+01, 0.5429879531333e+01,
+      0.1192691755997e-07, 0.1867380051424e+01, 0.6290122169689e+01,
+      0.9836499227081e-08, 0.3424716293727e+00, 0.6319103810876e+01,
+      0.9642862564285e-08, 0.5661372990657e+01, 0.8273820945392e+01,
+      0.1165184404862e-07, 0.5768367239093e+01, 0.1778273215245e+02,
+      0.1175794418818e-07, 0.1657351222943e+01, 0.6276029531202e+01,
+      0.1018948635601e-07, 0.6458292350865e+00, 0.1254537627298e+02,
+      0.9500383606676e-08, 0.1054306140741e+01, 0.1256517118505e+02,
+
+      0.1227512202906e-07, 0.2505278379114e+01, 0.2248384854122e+02,
+      0.9664792009993e-08, 0.4289737277000e+01, 0.6259197520765e+01,
+      0.9613285666331e-08, 0.5500597673141e+01, 0.6306954180126e+01,
+      0.1117906736211e-07, 0.2361405953468e+01, 0.1779695906178e+02,
+      0.9611378640782e-08, 0.2851310576269e+01, 0.2061856251104e+00,
+      0.8845354852370e-08, 0.6208777705343e+01, 0.1692165728891e+01,
+      0.1054046966600e-07, 0.5413091423934e+01, 0.2204125344462e+00,
+      0.1215539124483e-07, 0.5613969479755e+01, 0.8257698122054e+02,
+      0.9932460955209e-08, 0.1106124877015e+01, 0.1017725758696e+02,
+      0.8785804715043e-08, 0.2869224476477e+01, 0.9491756770005e+00,
+
+      0.8538084097562e-08, 0.6159640899344e+01, 0.6393282117669e+01,
+      0.8648994369529e-08, 0.1374901198784e+01, 0.4804209201333e+01,
+      0.1039063219067e-07, 0.5171080641327e+01, 0.1550861511662e+02,
+      0.8867983926439e-08, 0.8317320304902e+00, 0.3903911373650e+01,
+      0.8327495955244e-08, 0.3605591969180e+01, 0.6172869583223e+01,
+      0.9243088356133e-08, 0.6114299196843e+01, 0.6267823317922e+01,
+      0.9205657357835e-08, 0.3675153683737e+01, 0.6298328382969e+01,
+      0.1033269714606e-07, 0.3313328813024e+01, 0.5573142801433e+01,
+      0.8001706275552e-08, 0.2019980960053e+01, 0.2648454860559e+01,
+      0.9171858254191e-08, 0.8992015524177e+00, 0.1498544001348e+03,
+
+      0.1075327150242e-07, 0.2898669963648e+01, 0.3694923081589e+02,
+      0.9884866689828e-08, 0.4946715904478e+01, 0.1140367694411e+02,
+      0.9541835576677e-08, 0.2371787888469e+01, 0.1256713221673e+02,
+      0.7739903376237e-08, 0.2213775190612e+01, 0.7834121070590e+01,
+      0.7311962684106e-08, 0.3429378787739e+01, 0.1192625446156e+02,
+      0.9724904869624e-08, 0.6195878564404e+01, 0.2280573557157e+02,
+      0.9251628983612e-08, 0.6511509527390e+00, 0.2787043132925e+01,
+      0.7320763787842e-08, 0.6001083639421e+01, 0.6282655592598e+01,
+      0.7320296650962e-08, 0.3789073265087e+01, 0.6283496108294e+01,
+      0.7947032271039e-08, 0.1059659582204e+01, 0.1241073141809e+02,
+
+      0.9005277053115e-08, 0.1280315624361e+01, 0.6281591679874e+01,
+      0.8995601652048e-08, 0.2224439106766e+01, 0.6284560021018e+01,
+      0.8288040568796e-08, 0.5234914433867e+01, 0.1241658836951e+02,
+      0.6359381347255e-08, 0.4137989441490e+01, 0.1596186371003e+01,
+      0.8699572228626e-08, 0.1758411009497e+01, 0.6133512519065e+01,
+      0.6456797542736e-08, 0.5919285089994e+01, 0.1685848245639e+02,
+      0.7424573475452e-08, 0.5414616938827e+01, 0.4061219149443e+01,
+      0.7235671196168e-08, 0.1496516557134e+01, 0.1610006857377e+03,
+      0.8104015182733e-08, 0.1919918242764e+01, 0.8460828644453e+00,
+      0.8098576535937e-08, 0.3819615855458e+01, 0.3894181736510e+01,
+
+      0.6275292346625e-08, 0.6244264115141e+01, 0.8531963191132e+00,
+      0.6052432989112e-08, 0.5037731872610e+00, 0.1567108171867e+02,
+      0.5705651535817e-08, 0.2984557271995e+01, 0.1258692712880e+02,
+      0.5789650115138e-08, 0.6087038140697e+01, 0.1193336791622e+02,
+      0.5512132153377e-08, 0.5855668994076e+01, 0.1232342296471e+02,
+      0.7388890819102e-08, 0.2443128574740e+01, 0.4907302013889e+01,
+      0.5467593991798e-08, 0.3017561234194e+01, 0.1884211409667e+02,
+      0.6388519802999e-08, 0.5887386712935e+01, 0.5217580628120e+02,
+      0.6106777149944e-08, 0.3483461059895e+00, 0.1422690933580e-01,
+      0.7383420275489e-08, 0.5417387056707e+01, 0.2358125818164e+02,
+
+      0.5505208141738e-08, 0.2848193644783e+01, 0.1151388321134e+02,
+      0.6310757462877e-08, 0.2349882520828e+01, 0.1041998632314e+02,
+      0.6166904929691e-08, 0.5728575944077e+00, 0.6151533897323e+01,
+      0.5263442042754e-08, 0.4495796125937e+01, 0.1885275071096e+02,
+      0.5591828082629e-08, 0.1355441967677e+01, 0.4337116142245e+00,
+      0.5397051680497e-08, 0.1673422864307e+01, 0.6286362197481e+01,
+      0.5396992745159e-08, 0.1833502206373e+01, 0.6279789503410e+01,
+      0.6572913000726e-08, 0.3331122065824e+01, 0.1176433076753e+02,
+      0.5123421866413e-08, 0.2165327142679e+01, 0.1245594543367e+02,
+      0.5930495725999e-08, 0.2931146089284e+01, 0.6414617803568e+01,
+
+      0.6431797403933e-08, 0.4134407994088e+01, 0.1350651127443e+00,
+      0.5003182207604e-08, 0.3805420303749e+01, 0.1096996532989e+02,
+      0.5587731032504e-08, 0.1082469260599e+01, 0.6062663316000e+01,
+      0.5935263407816e-08, 0.8384333678401e+00, 0.5326786718777e+01,
+      0.4756019827760e-08, 0.3552588749309e+01, 0.3104930017775e+01,
+      0.6599951172637e-08, 0.4320826409528e+01, 0.4087944051283e+02,
+      0.5902606868464e-08, 0.4811879454445e+01, 0.5849364236221e+01,
+      0.5921147809031e-08, 0.9942628922396e-01, 0.1581959461667e+01,
+      0.5505382581266e-08, 0.2466557607764e+01, 0.6503488384892e+01,
+      0.5353771071862e-08, 0.4551978748683e+01, 0.1735668374386e+03,
+
+      0.5063282210946e-08, 0.5710812312425e+01, 0.1248988586463e+02,
+      0.5926120403383e-08, 0.1333998428358e+01, 0.2673594526851e+02,
+      0.5211016176149e-08, 0.4649315360760e+01, 0.2460261242967e+02,
+      0.5347075084894e-08, 0.5512754081205e+01, 0.4171425416666e+01,
+      0.4872609773574e-08, 0.1308025299938e+01, 0.5333900173445e+01,
+      0.4727711321420e-08, 0.2144908368062e+01, 0.7232251527446e+01,
+      0.6029426018652e-08, 0.5567259412084e+01, 0.3227113045244e+03,
+      0.4321485284369e-08, 0.5230667156451e+01, 0.9388005868221e+01,
+      0.4476406760553e-08, 0.6134081115303e+01, 0.5547199253223e+01,
+      0.5835268277420e-08, 0.4783808492071e+01, 0.7285056171570e+02,
+
+      0.5172183602748e-08, 0.5161817911099e+01, 0.1884570439172e+02,
+      0.5693571465184e-08, 0.1381646203111e+01, 0.9723862754494e+02,
+      0.4060634965349e-08, 0.3876705259495e+00, 0.4274518229222e+01,
+      0.3967398770473e-08, 0.5029491776223e+01, 0.3496032717521e+01,
+      0.3943754005255e-08, 0.1923162955490e+01, 0.6244942932314e+01,
+      0.4781323427824e-08, 0.4633332586423e+01, 0.2929661536378e+02,
+      0.3871483781204e-08, 0.1616650009743e+01, 0.6321208768577e+01,
+      0.5141741733997e-08, 0.9817316704659e-01, 0.1232032006293e+02,
+      0.4002385978497e-08, 0.3656161212139e+01, 0.7018952447668e+01,
+      0.4901092604097e-08, 0.4404098713092e+01, 0.1478866649112e+01,
+
+      0.3740932630345e-08, 0.5181188732639e+00, 0.6922973089781e+01,
+      0.4387283718538e-08, 0.3254859566869e+01, 0.2331413144044e+03,
+      0.5019197802033e-08, 0.3086773224677e+01, 0.1715706182245e+02,
+      0.3834931695175e-08, 0.2797882673542e+01, 0.1491901785440e+02,
+      0.3760413942497e-08, 0.2892676280217e+01, 0.1726726808967e+02,
+      0.3719717204628e-08, 0.5861046025739e+01, 0.6297302759782e+01,
+      0.4145623530149e-08, 0.2168239627033e+01, 0.1376059875786e+02,
+      0.3932788425380e-08, 0.6271811124181e+01, 0.7872148766781e+01,
+      0.3686377476857e-08, 0.3936853151404e+01, 0.6268848941110e+01,
+      0.3779077950339e-08, 0.1404148734043e+01, 0.4157198507331e+01,
+
+      0.4091334550598e-08, 0.2452436180854e+01, 0.9779108567966e+01,
+      0.3926694536146e-08, 0.6102292739040e+01, 0.1098419223922e+02,
+      0.4841000253289e-08, 0.6072760457276e+01, 0.1252801878276e+02,
+      0.4949340130240e-08, 0.1154832815171e+01, 0.1617106187867e+03,
+      0.3761557737360e-08, 0.5527545321897e+01, 0.3185192151914e+01,
+      0.3647396268188e-08, 0.1525035688629e+01, 0.6271346477544e+01,
+      0.3932405074189e-08, 0.5570681040569e+01, 0.2139354194808e+02,
+      0.3631322501141e-08, 0.1981240601160e+01, 0.6294805223347e+01,
+      0.4130007425139e-08, 0.2050060880201e+01, 0.2195415756911e+02,
+      0.4433905965176e-08, 0.3277477970321e+01, 0.7445550607224e+01,
+
+      0.3851814176947e-08, 0.5210690074886e+01, 0.9562891316684e+00,
+      0.3485807052785e-08, 0.6653274904611e+00, 0.1161697602389e+02,
+      0.3979772816991e-08, 0.1767941436148e+01, 0.2277943724828e+02,
+      0.3402607460500e-08, 0.3421746306465e+01, 0.1087398597200e+02,
+      0.4049993000926e-08, 0.1127144787547e+01, 0.3163918923335e+00,
+      0.3420511182382e-08, 0.4214794779161e+01, 0.1362553364512e+02,
+      0.3640772365012e-08, 0.5324905497687e+01, 0.1725304118033e+02,
+      0.3323037987501e-08, 0.6135761838271e+01, 0.6279143387820e+01,
+      0.4503141663637e-08, 0.1802305450666e+01, 0.1385561574497e+01,
+      0.4314560055588e-08, 0.4812299731574e+01, 0.4176041334900e+01,
+
+      0.3294226949110e-08, 0.3657547059723e+01, 0.6287008313071e+01,
+      0.3215657197281e-08, 0.4866676894425e+01, 0.5749861718712e+01,
+      0.4129362656266e-08, 0.3809342558906e+01, 0.5905702259363e+01,
+      0.3137762976388e-08, 0.2494635174443e+01, 0.2099539292909e+02,
+      0.3514010952384e-08, 0.2699961831678e+01, 0.7335344340001e+01,
+      0.3327607571530e-08, 0.3318457714816e+01, 0.5436992986000e+01,
+      0.3541066946675e-08, 0.4382703582466e+01, 0.1234573916645e+02,
+      0.3216179847052e-08, 0.5271066317054e+01, 0.3802769619140e-01,
+      0.2959045059570e-08, 0.5819591585302e+01, 0.2670964694522e+02,
+      0.3884040326665e-08, 0.5980934960428e+01, 0.6660449441528e+01,
+
+      0.2922027539886e-08, 0.3337290282483e+01, 0.1375773836557e+01,
+      0.4110846382042e-08, 0.5742978187327e+01, 0.4480965020977e+02,
+      0.2934508411032e-08, 0.2278075804200e+01, 0.6408777551755e+00,
+      0.3966896193000e-08, 0.5835747858477e+01, 0.3773735910827e+00,
+      0.3286695827610e-08, 0.5838898193902e+01, 0.3932462625300e-02,
+      0.3720643094196e-08, 0.1122212337858e+01, 0.1646033343740e+02,
+      0.3285508906174e-08, 0.9182250996416e+00, 0.1081813534213e+02,
+      0.3753880575973e-08, 0.5174761973266e+01, 0.5642198095270e+01,
+      0.3022129385587e-08, 0.3381611020639e+01, 0.2982630633589e+02,
+      0.2798569205621e-08, 0.3546193723922e+01, 0.1937891852345e+02,
+
+      0.3397872070505e-08, 0.4533203197934e+01, 0.6923953605621e+01,
+      0.3708099772977e-08, 0.2756168198616e+01, 0.3066615496545e+02,
+      0.3599283541510e-08, 0.1934395469918e+01, 0.6147450479709e+01,
+      0.3688702753059e-08, 0.7149920971109e+00, 0.2636725487657e+01,
+      0.2681084724003e-08, 0.4899819493154e+01, 0.6816289982179e+01,
+      0.3495993460759e-08, 0.1572418915115e+01, 0.6418701221183e+01,
+      0.3130770324995e-08, 0.8912190180489e+00, 0.1235996607578e+02,
+      0.2744353821941e-08, 0.3800821940055e+01, 0.2059724391010e+02,
+      0.2842732906341e-08, 0.2644717440029e+01, 0.2828699048865e+02,
+      0.3046882682154e-08, 0.3987793020179e+01, 0.6055599646783e+01,
+
+      0.2399072455143e-08, 0.9908826440764e+00, 0.6255674361143e+01,
+      0.2384306274204e-08, 0.2516149752220e+01, 0.6310477339748e+01,
+      0.2977324500559e-08, 0.5849195642118e+01, 0.1652265972112e+02,
+      0.3062835258972e-08, 0.1681660100162e+01, 0.1172006883645e+02,
+      0.3109682589231e-08, 0.5804143987737e+00, 0.2751146787858e+02,
+      0.2903920355299e-08, 0.5800768280123e+01, 0.6510552054109e+01,
+      0.2823221989212e-08, 0.9241118370216e+00, 0.5469525544182e+01,
+      0.3187949696649e-08, 0.3139776445735e+01, 0.1693792562116e+03,
+      0.2922559771655e-08, 0.3549440782984e+01, 0.2630839062450e+00,
+      0.2436302066603e-08, 0.4735540696319e+01, 0.3946258593675e+00,
+
+      0.3049473043606e-08, 0.4998289124561e+01, 0.8390110365991e+01,
+      0.2863682575784e-08, 0.6709515671102e+00, 0.2243449970715e+00,
+      0.2641750517966e-08, 0.5410978257284e+01, 0.2986433403208e+02,
+      0.2704093466243e-08, 0.4778317207821e+01, 0.6129297044991e+01,
+      0.2445522177011e-08, 0.6009020662222e+01, 0.1171295538178e+02,
+      0.2623608810230e-08, 0.5010449777147e+01, 0.6436854655901e+01,
+      0.2079259704053e-08, 0.5980943768809e+01, 0.2019909489111e+02,
+      0.2820225596771e-08, 0.2679965110468e+01, 0.5934151399930e+01,
+      0.2365221950927e-08, 0.1894231148810e+01, 0.2470570524223e+02,
+      0.2359682077149e-08, 0.4220752950780e+01, 0.8671969964381e+01,
+
+      0.2387577137206e-08, 0.2571783940617e+01, 0.7096626156709e+01,
+      0.1982102089816e-08, 0.5169765997119e+00, 0.1727188400790e+02,
+      0.2687502389925e-08, 0.6239078264579e+01, 0.7075506709219e+02,
+      0.2207751669135e-08, 0.2031184412677e+01, 0.4377611041777e+01,
+      0.2618370214274e-08, 0.8266079985979e+00, 0.6632000300961e+01,
+      0.2591951887361e-08, 0.8819350522008e+00, 0.4873985990671e+02,
+      0.2375055656248e-08, 0.3520944177789e+01, 0.1590676413561e+02,
+      0.2472019978911e-08, 0.1551431908671e+01, 0.6612329252343e+00,
+      0.2368157127199e-08, 0.4178610147412e+01, 0.3459636466239e+02,
+      0.1764846605693e-08, 0.1506764000157e+01, 0.1980094587212e+02,
+
+      0.2291769608798e-08, 0.2118250611782e+01, 0.2844914056730e-01,
+      0.2209997316943e-08, 0.3363255261678e+01, 0.2666070658668e+00,
+      0.2292699097923e-08, 0.4200423956460e+00, 0.1484170571900e-02,
+      0.1629683015329e-08, 0.2331362582487e+01, 0.3035599730800e+02,
+      0.2206492862426e-08, 0.3400274026992e+01, 0.6281667977667e+01,
+      0.2205746568257e-08, 0.1066051230724e+00, 0.6284483723224e+01,
+      0.2026310767991e-08, 0.2779066487979e+01, 0.2449240616245e+02,
+      0.1762977622163e-08, 0.9951450691840e+00, 0.2045286941806e+02,
+      0.1368535049606e-08, 0.6402447365817e+00, 0.2473415438279e+02,
+      0.1720598775450e-08, 0.2303524214705e+00, 0.1679593901136e+03,
+
+      0.1702429015449e-08, 0.6164622655048e+01, 0.3338575901272e+03,
+      0.1414033197685e-08, 0.3954561185580e+01, 0.1624205518357e+03,
+      0.1573768958043e-08, 0.2028286308984e+01, 0.3144167757552e+02,
+      0.1650705184447e-08, 0.2304040666128e+01, 0.5267006960365e+02,
+      0.1651087618855e-08, 0.2538461057280e+01, 0.8956999012000e+02,
+      0.1616409518983e-08, 0.5111054348152e+01, 0.3332657872986e+02,
+      0.1537175173581e-08, 0.5601130666603e+01, 0.3852657435933e+02,
+      0.1593191980553e-08, 0.2614340453411e+01, 0.2282781046519e+03,
+      0.1499480170643e-08, 0.3624721577264e+01, 0.2823723341956e+02,
+      0.1493807843235e-08, 0.4214569879008e+01, 0.2876692439167e+02,
+
+      0.1074571199328e-08, 0.1496911744704e+00, 0.8397383534231e+02,
+      0.1074406983417e-08, 0.1187817671922e+01, 0.8401985929482e+02,
+      0.9757576855851e-09, 0.2655703035858e+01, 0.7826370942180e+02,
+      0.1258432887565e-08, 0.4969896184844e+01, 0.3115650189215e+03,
+      0.1240336343282e-08, 0.5192460776926e+01, 0.1784300471910e+03,
+      0.9016107005164e-09, 0.1960356923057e+01, 0.5886454391678e+02,
+      0.1135392360918e-08, 0.5082427809068e+01, 0.7842370451713e+02,
+      0.9216046089565e-09, 0.2793775037273e+01, 0.1014262087719e+03,
+      0.1061276615030e-08, 0.3726144311409e+01, 0.5660027930059e+02,
+      0.1010110596263e-08, 0.7404080708937e+00, 0.4245678405627e+02,
+
+      0.7217424756199e-09, 0.2697449980577e-01, 0.2457074661053e+03,
+      0.6912003846756e-09, 0.4253296276335e+01, 0.1679936946371e+03,
+      0.6871814664847e-09, 0.5148072412354e+01, 0.6053048899753e+02,
+      0.4887158016343e-09, 0.2153581148294e+01, 0.9656299901946e+02,
+      0.5161802866314e-09, 0.3852750634351e+01, 0.2442876000072e+03,
+      0.5652599559057e-09, 0.1233233356270e+01, 0.8365903305582e+02,
+      0.4710812608586e-09, 0.5610486976767e+01, 0.3164282286739e+03,
+      0.4909977500324e-09, 0.1639629524123e+01, 0.4059982187939e+03,
+      0.4772641839378e-09, 0.3737100368583e+01, 0.1805255418145e+03,
+      0.4487562567153e-09, 0.1158417054478e+00, 0.8433466158131e+02,
+
+      0.3943441230497e-09, 0.6243502862796e+00, 0.2568537517081e+03,
+      0.3952236913598e-09, 0.3510377382385e+01, 0.2449975330562e+03,
+      0.3788898363417e-09, 0.5916128302299e+01, 0.1568131045107e+03,
+      0.3738329328831e-09, 0.1042266763456e+01, 0.3948519331910e+03,
+      0.2451199165151e-09, 0.1166788435700e+01, 0.1435713242844e+03,
+      0.2436734402904e-09, 0.3254726114901e+01, 0.2268582385539e+03,
+      0.2213605274325e-09, 0.1687210598530e+01, 0.1658638954901e+03,
+      0.1491521204829e-09, 0.2657541786794e+01, 0.2219950288015e+03,
+      0.1474995329744e-09, 0.5013089805819e+01, 0.3052819430710e+03,
+      0.1661939475656e-09, 0.5495315428418e+01, 0.2526661704812e+03,
+
+      0.9015946748003e-10, 0.2236989966505e+01, 0.4171445043968e+03 };
+
+/* Sun-to-Earth, T^0, Z */
+   static const double e0z[] = {
+      0.2796207639075e-05, 0.3198701560209e+01, 0.8433466158131e+02,
+      0.1016042198142e-05, 0.5422360395913e+01, 0.5507553240374e+01,
+      0.8044305033647e-06, 0.3880222866652e+01, 0.5223693906222e+01,
+      0.4385347909274e-06, 0.3704369937468e+01, 0.2352866153506e+01,
+      0.3186156414906e-06, 0.3999639363235e+01, 0.1577343543434e+01,
+      0.2272412285792e-06, 0.3984738315952e+01, 0.1047747311755e+01,
+      0.1645620103007e-06, 0.3565412516841e+01, 0.5856477690889e+01,
+      0.1815836921166e-06, 0.4984507059020e+01, 0.6283075850446e+01,
+      0.1447461676364e-06, 0.3702753570108e+01, 0.9437762937313e+01,
+      0.1430760876382e-06, 0.3409658712357e+01, 0.1021328554739e+02,
+
+      0.1120445753226e-06, 0.4829561570246e+01, 0.1414349524433e+02,
+      0.1090232840797e-06, 0.2080729178066e+01, 0.6812766822558e+01,
+      0.9715727346551e-07, 0.3476295881948e+01, 0.4694002934110e+01,
+      0.1036267136217e-06, 0.4056639536648e+01, 0.7109288135493e+02,
+      0.8752665271340e-07, 0.4448159519911e+01, 0.5753384878334e+01,
+      0.8331864956004e-07, 0.4991704044208e+01, 0.7084896783808e+01,
+      0.6901658670245e-07, 0.4325358994219e+01, 0.6275962395778e+01,
+      0.9144536848998e-07, 0.1141826375363e+01, 0.6620890113188e+01,
+      0.7205085037435e-07, 0.3624344170143e+01, 0.5296909721118e+00,
+      0.7697874654176e-07, 0.5554257458998e+01, 0.1676215758509e+03,
+
+      0.5197545738384e-07, 0.6251760961735e+01, 0.1807370494127e+02,
+      0.5031345378608e-07, 0.2497341091913e+01, 0.4705732307012e+01,
+      0.4527110205840e-07, 0.2335079920992e+01, 0.6309374173736e+01,
+      0.4753355798089e-07, 0.7094148987474e+00, 0.5884926831456e+01,
+      0.4296951977516e-07, 0.1101916352091e+01, 0.6681224869435e+01,
+      0.3855341568387e-07, 0.1825495405486e+01, 0.5486777812467e+01,
+      0.5253930970990e-07, 0.4424740687208e+01, 0.7860419393880e+01,
+      0.4024630496471e-07, 0.5120498157053e+01, 0.1336797263425e+02,
+      0.4061069791453e-07, 0.6029771435451e+01, 0.3930209696940e+01,
+      0.3797883804205e-07, 0.4435193600836e+00, 0.3154687086868e+01,
+
+      0.2933033225587e-07, 0.5124157356507e+01, 0.1059381944224e+01,
+      0.3503000930426e-07, 0.5421830162065e+01, 0.6069776770667e+01,
+      0.3670096214050e-07, 0.4582101667297e+01, 0.1219403291462e+02,
+      0.2905609437008e-07, 0.1926566420072e+01, 0.1097707878456e+02,
+      0.2466827821713e-07, 0.6090174539834e+00, 0.6496374930224e+01,
+      0.2691647295332e-07, 0.1393432595077e+01, 0.2200391463820e+02,
+      0.2150554667946e-07, 0.4308671715951e+01, 0.5643178611111e+01,
+      0.2237481922680e-07, 0.8133968269414e+00, 0.8635942003952e+01,
+      0.1817741038157e-07, 0.3755205127454e+01, 0.3340612434717e+01,
+      0.2227820762132e-07, 0.2759558596664e+01, 0.1203646072878e+02,
+
+      0.1944713772307e-07, 0.5699645869121e+01, 0.1179062909082e+02,
+      0.1527340520662e-07, 0.1986749091746e+01, 0.3981490189893e+00,
+      0.1577282574914e-07, 0.3205017217983e+01, 0.5088628793478e+01,
+      0.1424738825424e-07, 0.6256747903666e+01, 0.2544314396739e+01,
+      0.1616563121701e-07, 0.2601671259394e+00, 0.1729818233119e+02,
+      0.1401210391692e-07, 0.4686939173506e+01, 0.7058598460518e+01,
+      0.1488726974214e-07, 0.2815862451372e+01, 0.2593412433514e+02,
+      0.1692626442388e-07, 0.4956894109797e+01, 0.1564752902480e+03,
+      0.1123571582910e-07, 0.2381192697696e+01, 0.3738761453707e+01,
+      0.9903308606317e-08, 0.4294851657684e+01, 0.9225539266174e+01,
+
+      0.9174533187191e-08, 0.3075171510642e+01, 0.4164311961999e+01,
+      0.8645985631457e-08, 0.5477534821633e+00, 0.8429241228195e+01,
+     -0.1085876492688e-07, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.9264309077815e-08, 0.5968571670097e+01, 0.7079373888424e+01,
+      0.8243116984954e-08, 0.1489098777643e+01, 0.1044738781244e+02,
+      0.8268102113708e-08, 0.3512977691983e+01, 0.1150676975667e+02,
+      0.9043613988227e-08, 0.1290704408221e+00, 0.1101510648075e+02,
+      0.7432912038789e-08, 0.1991086893337e+01, 0.2608790314060e+02,
+      0.8586233727285e-08, 0.4238357924414e+01, 0.2986433403208e+02,
+      0.7612230060131e-08, 0.2911090150166e+01, 0.4732030630302e+01,
+
+      0.7097787751408e-08, 0.1908938392390e+01, 0.8031092209206e+01,
+      0.7640237040175e-08, 0.6129219000168e+00, 0.7962980379786e+00,
+      0.7070445688081e-08, 0.1380417036651e+01, 0.2146165377750e+01,
+      0.7690770957702e-08, 0.1680504249084e+01, 0.2122839202813e+02,
+      0.8051292542594e-08, 0.5127423484511e+01, 0.2942463415728e+01,
+      0.5902709104515e-08, 0.2020274190917e+01, 0.7755226100720e+00,
+      0.5134567496462e-08, 0.2606778676418e+01, 0.1256615170089e+02,
+      0.5525802046102e-08, 0.1613011769663e+01, 0.8018209333619e+00,
+      0.5880724784221e-08, 0.4604483417236e+01, 0.4690479774488e+01,
+      0.5211699081370e-08, 0.5718964114193e+01, 0.8827390247185e+01,
+
+      0.4891849573562e-08, 0.3689658932196e+01, 0.2132990797783e+00,
+      0.5150246069997e-08, 0.4099769855122e+01, 0.6480980550449e+02,
+      0.5102434319633e-08, 0.5660834602509e+01, 0.3379454372902e+02,
+      0.5083405254252e-08, 0.9842221218974e+00, 0.4136910472696e+01,
+      0.4206562585682e-08, 0.1341363634163e+00, 0.3128388763578e+01,
+      0.4663249683579e-08, 0.8130132735866e+00, 0.5216580451554e+01,
+      0.4099474416530e-08, 0.5791497770644e+01, 0.4265981595566e+00,
+      0.4628251220767e-08, 0.1249802769331e+01, 0.1572083878776e+02,
+      0.5024068728142e-08, 0.4795684802743e+01, 0.6290189305114e+01,
+      0.5120234327758e-08, 0.3810420387208e+01, 0.5230807360890e+01,
+
+      0.5524029815280e-08, 0.1029264714351e+01, 0.2397622045175e+03,
+      0.4757415718860e-08, 0.3528044781779e+01, 0.1649636139783e+02,
+      0.3915786131127e-08, 0.5593889282646e+01, 0.1589072916335e+01,
+      0.4869053149991e-08, 0.3299636454433e+01, 0.7632943190217e+01,
+      0.3649365703729e-08, 0.1286049002584e+01, 0.6206810014183e+01,
+      0.3992493949002e-08, 0.3100307589464e+01, 0.2515860172507e+02,
+      0.3320247477418e-08, 0.6212683940807e+01, 0.1216800268190e+02,
+      0.3287123739696e-08, 0.4699118445928e+01, 0.7234794171227e+01,
+      0.3472776811103e-08, 0.2630507142004e+01, 0.7342457794669e+01,
+      0.3423253294767e-08, 0.2946432844305e+01, 0.9623688285163e+01,
+
+      0.3896173898244e-08, 0.1224834179264e+01, 0.6438496133249e+01,
+      0.3388455337924e-08, 0.1543807616351e+01, 0.1494531617769e+02,
+      0.3062704716523e-08, 0.1191777572310e+01, 0.8662240327241e+01,
+      0.3270075600400e-08, 0.5483498767737e+01, 0.1194447056968e+01,
+      0.3101209215259e-08, 0.8000833804348e+00, 0.3772475342596e+02,
+      0.2780883347311e-08, 0.4077980721888e+00, 0.5863591145557e+01,
+      0.2903605931824e-08, 0.2617490302147e+01, 0.1965104848470e+02,
+      0.2682014743119e-08, 0.2634703158290e+01, 0.7238675589263e+01,
+      0.2534360108492e-08, 0.6102446114873e+01, 0.6836645152238e+01,
+      0.2392564882509e-08, 0.3681820208691e+01, 0.5849364236221e+01,
+
+      0.2656667254856e-08, 0.6216045388886e+01, 0.6133512519065e+01,
+      0.2331242096773e-08, 0.5864949777744e+01, 0.4535059491685e+01,
+      0.2287898363668e-08, 0.4566628532802e+01, 0.7477522907414e+01,
+      0.2336944521306e-08, 0.2442722126930e+01, 0.1137170464392e+02,
+      0.3156632236269e-08, 0.1626628050682e+01, 0.2509084901204e+03,
+      0.2982612402766e-08, 0.2803604512609e+01, 0.1748016358760e+01,
+      0.2774031674807e-08, 0.4654002897158e+01, 0.8223916695780e+02,
+      0.2295236548638e-08, 0.4326518333253e+01, 0.3378142627421e+00,
+      0.2190714699873e-08, 0.4519614578328e+01, 0.2908881142201e+02,
+      0.2191495845045e-08, 0.3012626912549e+01, 0.1673046366289e+02,
+
+      0.2492901628386e-08, 0.1290101424052e+00, 0.1543797956245e+03,
+      0.1993778064319e-08, 0.3864046799414e+01, 0.1778984560711e+02,
+      0.1898146479022e-08, 0.5053777235891e+01, 0.2042657109477e+02,
+      0.1918280127634e-08, 0.2222470192548e+01, 0.4165496312290e+02,
+      0.1916351061607e-08, 0.8719067257774e+00, 0.7737595720538e+02,
+      0.1834720181466e-08, 0.4031491098040e+01, 0.2358125818164e+02,
+      0.1249201523806e-08, 0.5938379466835e+01, 0.3301902111895e+02,
+      0.1477304050539e-08, 0.6544722606797e+00, 0.9548094718417e+02,
+      0.1264316431249e-08, 0.2059072853236e+01, 0.8399684731857e+02,
+      0.1203526495039e-08, 0.3644813532605e+01, 0.4558517281984e+02,
+
+      0.9221681059831e-09, 0.3241815055602e+01, 0.7805158573086e+02,
+      0.7849278367646e-09, 0.5043812342457e+01, 0.5217580628120e+02,
+      0.7983392077387e-09, 0.5000024502753e+01, 0.1501922143975e+03,
+      0.7925395431654e-09, 0.1398734871821e-01, 0.9061773743175e+02,
+      0.7640473285886e-09, 0.5067111723130e+01, 0.4951538251678e+02,
+      0.5398937754482e-09, 0.5597382200075e+01, 0.1613385000004e+03,
+      0.5626247550193e-09, 0.2601338209422e+01, 0.7318837597844e+02,
+      0.5525197197855e-09, 0.5814832109256e+01, 0.1432335100216e+03,
+      0.5407629837898e-09, 0.3384820609076e+01, 0.3230491187871e+03,
+      0.3856739119801e-09, 0.1072391840473e+01, 0.2334791286671e+03,
+
+      0.3856425239987e-09, 0.2369540393327e+01, 0.1739046517013e+03,
+      0.4350867755983e-09, 0.5255575751082e+01, 0.1620484330494e+03,
+      0.3844113924996e-09, 0.5482356246182e+01, 0.9757644180768e+02,
+      0.2854869155431e-09, 0.9573634763143e+00, 0.1697170704744e+03,
+      0.1719227671416e-09, 0.1887203025202e+01, 0.2265204242912e+03,
+      0.1527846879755e-09, 0.3982183931157e+01, 0.3341954043900e+03,
+      0.1128229264847e-09, 0.2787457156298e+01, 0.3119028331842e+03 };
+
+/* Sun-to-Earth, T^1, X */
+   static const double e1x[] = {
+      0.1234046326004e-05, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.5150068824701e-06, 0.6002664557501e+01, 0.1256615170089e+02,
+      0.1290743923245e-07, 0.5959437664199e+01, 0.1884922755134e+02,
+      0.1068615564952e-07, 0.2015529654209e+01, 0.6283075850446e+01,
+      0.2079619142538e-08, 0.1732960531432e+01, 0.6279552690824e+01,
+      0.2078009243969e-08, 0.4915604476996e+01, 0.6286599010068e+01,
+      0.6206330058856e-09, 0.3616457953824e+00, 0.4705732307012e+01,
+      0.5989335313746e-09, 0.3802607304474e+01, 0.6256777527156e+01,
+      0.5958495663840e-09, 0.2845866560031e+01, 0.6309374173736e+01,
+      0.4866923261539e-09, 0.5213203771824e+01, 0.7755226100720e+00,
+
+      0.4267785823142e-09, 0.4368189727818e+00, 0.1059381944224e+01,
+      0.4610675141648e-09, 0.1837249181372e-01, 0.7860419393880e+01,
+      0.3626989993973e-09, 0.2161590545326e+01, 0.5753384878334e+01,
+      0.3563071194389e-09, 0.1452631954746e+01, 0.5884926831456e+01,
+      0.3557015642807e-09, 0.4470593393054e+01, 0.6812766822558e+01,
+      0.3210412089122e-09, 0.5195926078314e+01, 0.6681224869435e+01,
+      0.2875473577986e-09, 0.5916256610193e+01, 0.2513230340178e+02,
+      0.2842913681629e-09, 0.1149902426047e+01, 0.6127655567643e+01,
+      0.2751248215916e-09, 0.5502088574662e+01, 0.6438496133249e+01,
+      0.2481432881127e-09, 0.2921989846637e+01, 0.5486777812467e+01,
+
+      0.2059885976560e-09, 0.3718070376585e+01, 0.7079373888424e+01,
+      0.2015522342591e-09, 0.5979395259740e+01, 0.6290189305114e+01,
+      0.1995364084253e-09, 0.6772087985494e+00, 0.6275962395778e+01,
+      0.1957436436943e-09, 0.2899210654665e+01, 0.5507553240374e+01,
+      0.1651609818948e-09, 0.6228206482192e+01, 0.1150676975667e+02,
+      0.1822980550699e-09, 0.1469348746179e+01, 0.1179062909082e+02,
+      0.1675223159760e-09, 0.3813910555688e+01, 0.7058598460518e+01,
+      0.1706491764745e-09, 0.3004380506684e+00, 0.7113454667900e-02,
+      0.1392952362615e-09, 0.1440393973406e+01, 0.7962980379786e+00,
+      0.1209868266342e-09, 0.4150425791727e+01, 0.4694002934110e+01,
+
+      0.1009827202611e-09, 0.3290040429843e+01, 0.3738761453707e+01,
+      0.1047261388602e-09, 0.4229590090227e+01, 0.6282095334605e+01,
+      0.1047006652004e-09, 0.2418967680575e+01, 0.6284056366286e+01,
+      0.9609993143095e-10, 0.4627943659201e+01, 0.6069776770667e+01,
+      0.9590900593873e-10, 0.1894393939924e+01, 0.4136910472696e+01,
+      0.9146249188071e-10, 0.2010647519562e+01, 0.6496374930224e+01,
+      0.8545274480290e-10, 0.5529846956226e-01, 0.1194447056968e+01,
+      0.8224377881194e-10, 0.1254304102174e+01, 0.1589072916335e+01,
+      0.6183529510410e-10, 0.3360862168815e+01, 0.8827390247185e+01,
+      0.6259255147141e-10, 0.4755628243179e+01, 0.8429241228195e+01,
+
+      0.5539291694151e-10, 0.5371746955142e+01, 0.4933208510675e+01,
+      0.7328259466314e-10, 0.4927699613906e+00, 0.4535059491685e+01,
+      0.6017835843560e-10, 0.5776682001734e-01, 0.1255903824622e+02,
+      0.7079827775243e-10, 0.4395059432251e+01, 0.5088628793478e+01,
+      0.5170358878213e-10, 0.5154062619954e+01, 0.1176985366291e+02,
+      0.4872301838682e-10, 0.6289611648973e+00, 0.6040347114260e+01,
+      0.5249869411058e-10, 0.5617272046949e+01, 0.3154687086868e+01,
+      0.4716172354411e-10, 0.3965901800877e+01, 0.5331357529664e+01,
+      0.4871214940964e-10, 0.4627507050093e+01, 0.1256967486051e+02,
+      0.4598076850751e-10, 0.6023631226459e+01, 0.6525804586632e+01,
+
+      0.4562196089485e-10, 0.4138562084068e+01, 0.3930209696940e+01,
+      0.4325493872224e-10, 0.1330845906564e+01, 0.7632943190217e+01,
+      0.5673781176748e-10, 0.2558752615657e+01, 0.5729506548653e+01,
+      0.3961436642503e-10, 0.2728071734630e+01, 0.7234794171227e+01,
+      0.5101868209058e-10, 0.4113444965144e+01, 0.6836645152238e+01,
+      0.5257043167676e-10, 0.6195089830590e+01, 0.8031092209206e+01,
+      0.5076613989393e-10, 0.2305124132918e+01, 0.7477522907414e+01,
+      0.3342169352778e-10, 0.5415998155071e+01, 0.1097707878456e+02,
+      0.3545881983591e-10, 0.3727160564574e+01, 0.4164311961999e+01,
+      0.3364063738599e-10, 0.2901121049204e+00, 0.1137170464392e+02,
+
+      0.3357039670776e-10, 0.1652229354331e+01, 0.5223693906222e+01,
+      0.4307412268687e-10, 0.4938909587445e+01, 0.1592596075957e+01,
+      0.3405769115435e-10, 0.2408890766511e+01, 0.3128388763578e+01,
+      0.3001926198480e-10, 0.4862239006386e+01, 0.1748016358760e+01,
+      0.2778264787325e-10, 0.5241168661353e+01, 0.7342457794669e+01,
+      0.2676159480666e-10, 0.3423593942199e+01, 0.2146165377750e+01,
+      0.2954273399939e-10, 0.1881721265406e+01, 0.5368044267797e+00,
+      0.3309362888795e-10, 0.1931525677349e+01, 0.8018209333619e+00,
+      0.2810283608438e-10, 0.2414659495050e+01, 0.5225775174439e+00,
+      0.3378045637764e-10, 0.4238019163430e+01, 0.1554202828031e+00,
+
+      0.2558134979840e-10, 0.1828225235805e+01, 0.5230807360890e+01,
+      0.2273755578447e-10, 0.5858184283998e+01, 0.7084896783808e+01,
+      0.2294176037690e-10, 0.4514589779057e+01, 0.1726015463500e+02,
+      0.2533506099435e-10, 0.2355717851551e+01, 0.5216580451554e+01,
+      0.2716685375812e-10, 0.2221003625100e+01, 0.8635942003952e+01,
+      0.2419043435198e-10, 0.5955704951635e+01, 0.4690479774488e+01,
+      0.2521232544812e-10, 0.1395676848521e+01, 0.5481254917084e+01,
+      0.2630195021491e-10, 0.5727468918743e+01, 0.2629832328990e-01,
+      0.2548395840944e-10, 0.2628351859400e-03, 0.1349867339771e+01 };
+
+/* Sun-to-Earth, T^1, Y */
+   static const double e1y[] = {
+      0.9304690546528e-06, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.5150715570663e-06, 0.4431807116294e+01, 0.1256615170089e+02,
+      0.1290825411056e-07, 0.4388610039678e+01, 0.1884922755134e+02,
+      0.4645466665386e-08, 0.5827263376034e+01, 0.6283075850446e+01,
+      0.2079625310718e-08, 0.1621698662282e+00, 0.6279552690824e+01,
+      0.2078189850907e-08, 0.3344713435140e+01, 0.6286599010068e+01,
+      0.6207190138027e-09, 0.5074049319576e+01, 0.4705732307012e+01,
+      0.5989826532569e-09, 0.2231842216620e+01, 0.6256777527156e+01,
+      0.5961360812618e-09, 0.1274975769045e+01, 0.6309374173736e+01,
+      0.4874165471016e-09, 0.3642277426779e+01, 0.7755226100720e+00,
+
+      0.4283834034360e-09, 0.5148765510106e+01, 0.1059381944224e+01,
+      0.4652389287529e-09, 0.4715794792175e+01, 0.7860419393880e+01,
+      0.3751707476401e-09, 0.6617207370325e+00, 0.5753384878334e+01,
+      0.3559998806198e-09, 0.6155548875404e+01, 0.5884926831456e+01,
+      0.3558447558857e-09, 0.2898827297664e+01, 0.6812766822558e+01,
+      0.3211116927106e-09, 0.3625813502509e+01, 0.6681224869435e+01,
+      0.2875609914672e-09, 0.4345435813134e+01, 0.2513230340178e+02,
+      0.2843109704069e-09, 0.5862263940038e+01, 0.6127655567643e+01,
+      0.2744676468427e-09, 0.3926419475089e+01, 0.6438496133249e+01,
+      0.2481285237789e-09, 0.1351976572828e+01, 0.5486777812467e+01,
+
+      0.2060338481033e-09, 0.2147556998591e+01, 0.7079373888424e+01,
+      0.2015822358331e-09, 0.4408358972216e+01, 0.6290189305114e+01,
+      0.2001195944195e-09, 0.5385829822531e+01, 0.6275962395778e+01,
+      0.1953667642377e-09, 0.1304933746120e+01, 0.5507553240374e+01,
+      0.1839744078713e-09, 0.6173567228835e+01, 0.1179062909082e+02,
+      0.1643334294845e-09, 0.4635942997523e+01, 0.1150676975667e+02,
+      0.1768051018652e-09, 0.5086283558874e+01, 0.7113454667900e-02,
+      0.1674874205489e-09, 0.2243332137241e+01, 0.7058598460518e+01,
+      0.1421445397609e-09, 0.6186899771515e+01, 0.7962980379786e+00,
+      0.1255163958267e-09, 0.5730238465658e+01, 0.4694002934110e+01,
+
+      0.1013945281961e-09, 0.1726055228402e+01, 0.3738761453707e+01,
+      0.1047294335852e-09, 0.2658801228129e+01, 0.6282095334605e+01,
+      0.1047103879392e-09, 0.8481047835035e+00, 0.6284056366286e+01,
+      0.9530343962826e-10, 0.3079267149859e+01, 0.6069776770667e+01,
+      0.9604637611690e-10, 0.3258679792918e+00, 0.4136910472696e+01,
+      0.9153518537177e-10, 0.4398599886584e+00, 0.6496374930224e+01,
+      0.8562458214922e-10, 0.4772686794145e+01, 0.1194447056968e+01,
+      0.8232525360654e-10, 0.5966220721679e+01, 0.1589072916335e+01,
+      0.6150223411438e-10, 0.1780985591923e+01, 0.8827390247185e+01,
+      0.6272087858000e-10, 0.3184305429012e+01, 0.8429241228195e+01,
+
+      0.5540476311040e-10, 0.3801260595433e+01, 0.4933208510675e+01,
+      0.7331901699361e-10, 0.5205948591865e+01, 0.4535059491685e+01,
+      0.6018528702791e-10, 0.4770139083623e+01, 0.1255903824622e+02,
+      0.5150530724804e-10, 0.3574796899585e+01, 0.1176985366291e+02,
+      0.6471933741811e-10, 0.2679787266521e+01, 0.5088628793478e+01,
+      0.5317460644174e-10, 0.9528763345494e+00, 0.3154687086868e+01,
+      0.4832187748783e-10, 0.5329322498232e+01, 0.6040347114260e+01,
+      0.4716763555110e-10, 0.2395235316466e+01, 0.5331357529664e+01,
+      0.4871509139861e-10, 0.3056663648823e+01, 0.1256967486051e+02,
+      0.4598417696768e-10, 0.4452762609019e+01, 0.6525804586632e+01,
+
+      0.5674189533175e-10, 0.9879680872193e+00, 0.5729506548653e+01,
+      0.4073560328195e-10, 0.5939127696986e+01, 0.7632943190217e+01,
+      0.5040994945359e-10, 0.4549875824510e+01, 0.8031092209206e+01,
+      0.5078185134679e-10, 0.7346659893982e+00, 0.7477522907414e+01,
+      0.3769343537061e-10, 0.1071317188367e+01, 0.7234794171227e+01,
+      0.4980331365299e-10, 0.2500345341784e+01, 0.6836645152238e+01,
+      0.3458236594757e-10, 0.3825159450711e+01, 0.1097707878456e+02,
+      0.3578859493602e-10, 0.5299664791549e+01, 0.4164311961999e+01,
+      0.3370504646419e-10, 0.5002316301593e+01, 0.1137170464392e+02,
+      0.3299873338428e-10, 0.2526123275282e+01, 0.3930209696940e+01,
+
+      0.4304917318409e-10, 0.3368078557132e+01, 0.1592596075957e+01,
+      0.3402418753455e-10, 0.8385495425800e+00, 0.3128388763578e+01,
+      0.2778460572146e-10, 0.3669905203240e+01, 0.7342457794669e+01,
+      0.2782710128902e-10, 0.2691664812170e+00, 0.1748016358760e+01,
+      0.2711725179646e-10, 0.4707487217718e+01, 0.5296909721118e+00,
+      0.2981760946340e-10, 0.3190260867816e+00, 0.5368044267797e+00,
+      0.2811672977772e-10, 0.3196532315372e+01, 0.7084896783808e+01,
+      0.2863454474467e-10, 0.2263240324780e+00, 0.5223693906222e+01,
+      0.3333464634051e-10, 0.3498451685065e+01, 0.8018209333619e+00,
+      0.3312991747609e-10, 0.5839154477412e+01, 0.1554202828031e+00,
+
+      0.2813255564006e-10, 0.8268044346621e+00, 0.5225775174439e+00,
+      0.2665098083966e-10, 0.3934021725360e+01, 0.5216580451554e+01,
+      0.2349795705216e-10, 0.5197620913779e+01, 0.2146165377750e+01,
+      0.2330352293961e-10, 0.2984999231807e+01, 0.1726015463500e+02,
+      0.2728001683419e-10, 0.6521679638544e+00, 0.8635942003952e+01,
+      0.2484061007669e-10, 0.3468955561097e+01, 0.5230807360890e+01,
+      0.2646328768427e-10, 0.1013724533516e+01, 0.2629832328990e-01,
+      0.2518630264831e-10, 0.6108081057122e+01, 0.5481254917084e+01,
+      0.2421901455384e-10, 0.1651097776260e+01, 0.1349867339771e+01,
+      0.6348533267831e-11, 0.3220226560321e+01, 0.8433466158131e+02 };
+
+/* Sun-to-Earth, T^1, Z */
+   static const double e1z[] = {
+      0.2278290449966e-05, 0.3413716033863e+01, 0.6283075850446e+01,
+      0.5429458209830e-07, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.1903240492525e-07, 0.3370592358297e+01, 0.1256615170089e+02,
+      0.2385409276743e-09, 0.3327914718416e+01, 0.1884922755134e+02,
+      0.8676928342573e-10, 0.1824006811264e+01, 0.5223693906222e+01,
+      0.7765442593544e-10, 0.3888564279247e+01, 0.5507553240374e+01,
+      0.7066158332715e-10, 0.5194267231944e+01, 0.2352866153506e+01,
+      0.7092175288657e-10, 0.2333246960021e+01, 0.8399684731857e+02,
+      0.5357582213535e-10, 0.2224031176619e+01, 0.5296909721118e+00,
+      0.3828035865021e-10, 0.2156710933584e+01, 0.6279552690824e+01,
+
+      0.3824857220427e-10, 0.1529755219915e+01, 0.6286599010068e+01,
+      0.3286995181628e-10, 0.4879512900483e+01, 0.1021328554739e+02 };
+
+/* Sun-to-Earth, T^2, X */
+   static const double e2x[] = {
+     -0.4143818297913e-10, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.2171497694435e-10, 0.4398225628264e+01, 0.1256615170089e+02,
+      0.9845398442516e-11, 0.2079720838384e+00, 0.6283075850446e+01,
+      0.9256833552682e-12, 0.4191264694361e+01, 0.1884922755134e+02,
+      0.1022049384115e-12, 0.5381133195658e+01, 0.8399684731857e+02 };
+
+/* Sun-to-Earth, T^2, Y */
+   static const double e2y[] = {
+      0.5063375872532e-10, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.2173815785980e-10, 0.2827805833053e+01, 0.1256615170089e+02,
+      0.1010231999920e-10, 0.4634612377133e+01, 0.6283075850446e+01,
+      0.9259745317636e-12, 0.2620612076189e+01, 0.1884922755134e+02,
+      0.1022202095812e-12, 0.3809562326066e+01, 0.8399684731857e+02 };
+
+/* Sun-to-Earth, T^2, Z */
+   static const double e2z[] = {
+      0.9722666114891e-10, 0.5152219582658e+01, 0.6283075850446e+01,
+     -0.3494819171909e-11, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.6713034376076e-12, 0.6440188750495e+00, 0.1256615170089e+02 };
+
+/* SSB-to-Sun, T^0, X */
+   static const double s0x[] = {
+      0.4956757536410e-02, 0.3741073751789e+01, 0.5296909721118e+00,
+      0.2718490072522e-02, 0.4016011511425e+01, 0.2132990797783e+00,
+      0.1546493974344e-02, 0.2170528330642e+01, 0.3813291813120e-01,
+      0.8366855276341e-03, 0.2339614075294e+01, 0.7478166569050e-01,
+      0.2936777942117e-03, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.1201317439469e-03, 0.4090736353305e+01, 0.1059381944224e+01,
+      0.7578550887230e-04, 0.3241518088140e+01, 0.4265981595566e+00,
+      0.1941787367773e-04, 0.1012202064330e+01, 0.2061856251104e+00,
+      0.1889227765991e-04, 0.3892520416440e+01, 0.2204125344462e+00,
+      0.1937896968613e-04, 0.4797779441161e+01, 0.1495633313810e+00,
+
+      0.1434506110873e-04, 0.3868960697933e+01, 0.5225775174439e+00,
+      0.1406659911580e-04, 0.4759766557397e+00, 0.5368044267797e+00,
+      0.1179022300202e-04, 0.7774961520598e+00, 0.7626583626240e-01,
+      0.8085864460959e-05, 0.3254654471465e+01, 0.3664874755930e-01,
+      0.7622752967615e-05, 0.4227633103489e+01, 0.3961708870310e-01,
+      0.6209171139066e-05, 0.2791828325711e+00, 0.7329749511860e-01,
+      0.4366435633970e-05, 0.4440454875925e+01, 0.1589072916335e+01,
+      0.3792124889348e-05, 0.5156393842356e+01, 0.7113454667900e-02,
+      0.3154548963402e-05, 0.6157005730093e+01, 0.4194847048887e+00,
+      0.3088359882942e-05, 0.2494567553163e+01, 0.6398972393349e+00,
+
+      0.2788440902136e-05, 0.4934318747989e+01, 0.1102062672231e+00,
+      0.3039928456376e-05, 0.4895077702640e+01, 0.6283075850446e+01,
+      0.2272258457679e-05, 0.5278394064764e+01, 0.1030928125552e+00,
+      0.2162007057957e-05, 0.5802978019099e+01, 0.3163918923335e+00,
+      0.1767632855737e-05, 0.3415346595193e-01, 0.1021328554739e+02,
+      0.1349413459362e-05, 0.2001643230755e+01, 0.1484170571900e-02,
+      0.1170141900476e-05, 0.2424750491620e+01, 0.6327837846670e+00,
+      0.1054355266820e-05, 0.3123311487576e+01, 0.4337116142245e+00,
+      0.9800822461610e-06, 0.3026258088130e+01, 0.1052268489556e+01,
+      0.1091203749931e-05, 0.3157811670347e+01, 0.1162474756779e+01,
+
+      0.6960236715913e-06, 0.8219570542313e+00, 0.1066495398892e+01,
+      0.5689257296909e-06, 0.1323052375236e+01, 0.9491756770005e+00,
+      0.6613172135802e-06, 0.2765348881598e+00, 0.8460828644453e+00,
+      0.6277702517571e-06, 0.5794064466382e+01, 0.1480791608091e+00,
+      0.6304884066699e-06, 0.7323555380787e+00, 0.2243449970715e+00,
+      0.4897850467382e-06, 0.3062464235399e+01, 0.3340612434717e+01,
+      0.3759148598786e-06, 0.4588290469664e+01, 0.3516457698740e-01,
+      0.3110520548195e-06, 0.1374299536572e+01, 0.6373574839730e-01,
+      0.3064708359780e-06, 0.4222267485047e+01, 0.1104591729320e-01,
+      0.2856347168241e-06, 0.3714202944973e+01, 0.1510475019529e+00,
+
+      0.2840945514288e-06, 0.2847972875882e+01, 0.4110125927500e-01,
+      0.2378951599405e-06, 0.3762072563388e+01, 0.2275259891141e+00,
+      0.2714229481417e-06, 0.1036049980031e+01, 0.2535050500000e-01,
+      0.2323551717307e-06, 0.4682388599076e+00, 0.8582758298370e-01,
+      0.1881790512219e-06, 0.4790565425418e+01, 0.2118763888447e+01,
+      0.2261353968371e-06, 0.1669144912212e+01, 0.7181332454670e-01,
+      0.2214546389848e-06, 0.3937717281614e+01, 0.2968341143800e-02,
+      0.2184915594933e-06, 0.1129169845099e+00, 0.7775000683430e-01,
+      0.2000164937936e-06, 0.4030009638488e+01, 0.2093666171530e+00,
+      0.1966105136719e-06, 0.8745955786834e+00, 0.2172315424036e+00,
+
+      0.1904742332624e-06, 0.5919743598964e+01, 0.2022531624851e+00,
+      0.1657399705031e-06, 0.2549141484884e+01, 0.7358765972222e+00,
+      0.1574070533987e-06, 0.5277533020230e+01, 0.7429900518901e+00,
+      0.1832261651039e-06, 0.3064688127777e+01, 0.3235053470014e+00,
+      0.1733615346569e-06, 0.3011432799094e+01, 0.1385174140878e+00,
+      0.1549124014496e-06, 0.4005569132359e+01, 0.5154640627760e+00,
+      0.1637044713838e-06, 0.1831375966632e+01, 0.8531963191132e+00,
+      0.1123420082383e-06, 0.1180270407578e+01, 0.1990721704425e+00,
+      0.1083754165740e-06, 0.3414101320863e+00, 0.5439178814476e+00,
+      0.1156638012655e-06, 0.6130479452594e+00, 0.5257585094865e+00,
+
+      0.1142548785134e-06, 0.3724761948846e+01, 0.5336234347371e+00,
+      0.7921463895965e-07, 0.2435425589361e+01, 0.1478866649112e+01,
+      0.7428600285231e-07, 0.3542144398753e+01, 0.2164800718209e+00,
+      0.8323211246747e-07, 0.3525058072354e+01, 0.1692165728891e+01,
+      0.7257595116312e-07, 0.1364299431982e+01, 0.2101180877357e+00,
+      0.7111185833236e-07, 0.2460478875808e+01, 0.4155522422634e+00,
+      0.6868090383716e-07, 0.4397327670704e+01, 0.1173197218910e+00,
+      0.7226419974175e-07, 0.4042647308905e+01, 0.1265567569334e+01,
+      0.6955642383177e-07, 0.2865047906085e+01, 0.9562891316684e+00,
+      0.7492139296331e-07, 0.5014278994215e+01, 0.1422690933580e-01,
+
+      0.6598363128857e-07, 0.2376730020492e+01, 0.6470106940028e+00,
+      0.7381147293385e-07, 0.3272990384244e+01, 0.1581959461667e+01,
+      0.6402909624032e-07, 0.5302290955138e+01, 0.9597935788730e-01,
+      0.6237454263857e-07, 0.5444144425332e+01, 0.7084920306520e-01,
+      0.5241198544016e-07, 0.4215359579205e+01, 0.5265099800692e+00,
+      0.5144463853918e-07, 0.1218916689916e+00, 0.5328719641544e+00,
+      0.5868164772299e-07, 0.2369402002213e+01, 0.7871412831580e-01,
+      0.6233195669151e-07, 0.1254922242403e+01, 0.2608790314060e+02,
+      0.6068463791422e-07, 0.5679713760431e+01, 0.1114304132498e+00,
+      0.4359361135065e-07, 0.6097219641646e+00, 0.1375773836557e+01,
+
+      0.4686510366826e-07, 0.4786231041431e+01, 0.1143987543936e+00,
+      0.3758977287225e-07, 0.1167368068139e+01, 0.1596186371003e+01,
+      0.4282051974778e-07, 0.1519471064319e+01, 0.2770348281756e+00,
+      0.5153765386113e-07, 0.1860532322984e+01, 0.2228608264996e+00,
+      0.4575129387188e-07, 0.7632857887158e+00, 0.1465949902372e+00,
+      0.3326844933286e-07, 0.1298219485285e+01, 0.5070101000000e-01,
+      0.3748617450984e-07, 0.1046510321062e+01, 0.4903339079539e+00,
+      0.2816756661499e-07, 0.3434522346190e+01, 0.2991266627620e+00,
+      0.3412750405039e-07, 0.2523766270318e+01, 0.3518164938661e+00,
+      0.2655796761776e-07, 0.2904422260194e+01, 0.6256703299991e+00,
+
+      0.2963597929458e-07, 0.5923900431149e+00, 0.1099462426779e+00,
+      0.2539523734781e-07, 0.4851947722567e+01, 0.1256615170089e+02,
+      0.2283087914139e-07, 0.3400498595496e+01, 0.6681224869435e+01,
+      0.2321309799331e-07, 0.5789099148673e+01, 0.3368040641550e-01,
+      0.2549657649750e-07, 0.3991856479792e-01, 0.1169588211447e+01,
+      0.2290462303977e-07, 0.2788567577052e+01, 0.1045155034888e+01,
+      0.1945398522914e-07, 0.3290896998176e+01, 0.1155361302111e+01,
+      0.1849171512638e-07, 0.2698060129367e+01, 0.4452511715700e-02,
+      0.1647199834254e-07, 0.3016735644085e+01, 0.4408250688924e+00,
+      0.1529530765273e-07, 0.5573043116178e+01, 0.6521991896920e-01,
+
+      0.1433199339978e-07, 0.1481192356147e+01, 0.9420622223326e+00,
+      0.1729134193602e-07, 0.1422817538933e+01, 0.2108507877249e+00,
+      0.1716463931346e-07, 0.3469468901855e+01, 0.2157473718317e+00,
+      0.1391206061378e-07, 0.6122436220547e+01, 0.4123712502208e+00,
+      0.1404746661924e-07, 0.1647765641936e+01, 0.4258542984690e-01,
+      0.1410452399455e-07, 0.5989729161964e+01, 0.2258291676434e+00,
+      0.1089828772168e-07, 0.2833705509371e+01, 0.4226656969313e+00,
+      0.1047374564948e-07, 0.5090690007331e+00, 0.3092784376656e+00,
+      0.1358279126532e-07, 0.5128990262836e+01, 0.7923417740620e-01,
+      0.1020456476148e-07, 0.9632772880808e+00, 0.1456308687557e+00,
+
+      0.1033428735328e-07, 0.3223779318418e+01, 0.1795258541446e+01,
+      0.1412435841540e-07, 0.2410271572721e+01, 0.1525316725248e+00,
+      0.9722759371574e-08, 0.2333531395690e+01, 0.8434341241180e-01,
+      0.9657334084704e-08, 0.6199270974168e+01, 0.1272681024002e+01,
+      0.1083641148690e-07, 0.2864222292929e+01, 0.7032915397480e-01,
+      0.1067318403838e-07, 0.5833458866568e+00, 0.2123349582968e+00,
+      0.1062366201976e-07, 0.4307753989494e+01, 0.2142632012598e+00,
+      0.1236364149266e-07, 0.2873917870593e+01, 0.1847279083684e+00,
+      0.1092759489593e-07, 0.2959887266733e+01, 0.1370332435159e+00,
+      0.8912069362899e-08, 0.5141213702562e+01, 0.2648454860559e+01,
+
+      0.9656467707970e-08, 0.4532182462323e+01, 0.4376440768498e+00,
+      0.8098386150135e-08, 0.2268906338379e+01, 0.2880807454688e+00,
+      0.7857714675000e-08, 0.4055544260745e+01, 0.2037373330570e+00,
+      0.7288455940646e-08, 0.5357901655142e+01, 0.1129145838217e+00,
+      0.9450595950552e-08, 0.4264926963939e+01, 0.5272426800584e+00,
+      0.9381718247537e-08, 0.7489366976576e-01, 0.5321392641652e+00,
+      0.7079052646038e-08, 0.1923311052874e+01, 0.6288513220417e+00,
+      0.9259004415344e-08, 0.2970256853438e+01, 0.1606092486742e+00,
+      0.8259801499742e-08, 0.3327056314697e+01, 0.8389694097774e+00,
+      0.6476334355779e-08, 0.2954925505727e+01, 0.2008557621224e+01,
+
+      0.5984021492007e-08, 0.9138753105829e+00, 0.2042657109477e+02,
+      0.5989546863181e-08, 0.3244464082031e+01, 0.2111650433779e+01,
+      0.6233108606023e-08, 0.4995232638403e+00, 0.4305306221819e+00,
+      0.6877299149965e-08, 0.2834987233449e+01, 0.9561746721300e-02,
+      0.8311234227190e-08, 0.2202951835758e+01, 0.3801276407308e+00,
+      0.6599472832414e-08, 0.4478581462618e+01, 0.1063314406849e+01,
+      0.6160491096549e-08, 0.5145858696411e+01, 0.1368660381889e+01,
+      0.6164772043891e-08, 0.3762976697911e+00, 0.4234171675140e+00,
+      0.6363248684450e-08, 0.3162246718685e+01, 0.1253008786510e-01,
+      0.6448587520999e-08, 0.3442693302119e+01, 0.5287268506303e+00,
+
+      0.6431662283977e-08, 0.8977549136606e+00, 0.5306550935933e+00,
+      0.6351223158474e-08, 0.4306447410369e+01, 0.5217580628120e+02,
+      0.5476721393451e-08, 0.3888529177855e+01, 0.2221856701002e+01,
+      0.5341772572619e-08, 0.2655560662512e+01, 0.7466759693650e-01,
+      0.5337055758302e-08, 0.5164990735946e+01, 0.7489573444450e-01,
+      0.5373120816787e-08, 0.6041214553456e+01, 0.1274714967946e+00,
+      0.5392351705426e-08, 0.9177763485932e+00, 0.1055449481598e+01,
+      0.6688495850205e-08, 0.3089608126937e+01, 0.2213766559277e+00,
+      0.5072003660362e-08, 0.4311316541553e+01, 0.2132517061319e+00,
+      0.5070726650455e-08, 0.5790675464444e+00, 0.2133464534247e+00,
+
+      0.5658012950032e-08, 0.2703945510675e+01, 0.7287631425543e+00,
+      0.4835509924854e-08, 0.2975422976065e+01, 0.7160067364790e-01,
+      0.6479821978012e-08, 0.1324168733114e+01, 0.2209183458640e-01,
+      0.6230636494980e-08, 0.2860103632836e+01, 0.3306188016693e+00,
+      0.4649239516213e-08, 0.4832259763403e+01, 0.7796265773310e-01,
+      0.6487325792700e-08, 0.2726165825042e+01, 0.3884652414254e+00,
+      0.4682823682770e-08, 0.6966602455408e+00, 0.1073608853559e+01,
+      0.5704230804976e-08, 0.5669634104606e+01, 0.8731175355560e-01,
+      0.6125413585489e-08, 0.1513386538915e+01, 0.7605151500000e-01,
+      0.6035825038187e-08, 0.1983509168227e+01, 0.9846002785331e+00,
+
+      0.4331123462303e-08, 0.2782892992807e+01, 0.4297791515992e+00,
+      0.4681107685143e-08, 0.5337232886836e+01, 0.2127790306879e+00,
+      0.4669105829655e-08, 0.5837133792160e+01, 0.2138191288687e+00,
+      0.5138823602365e-08, 0.3080560200507e+01, 0.7233337363710e-01,
+      0.4615856664534e-08, 0.1661747897471e+01, 0.8603097737811e+00,
+      0.4496916702197e-08, 0.2112508027068e+01, 0.7381754420900e-01,
+      0.4278479042945e-08, 0.5716528462627e+01, 0.7574578717200e-01,
+      0.3840525503932e-08, 0.6424172726492e+00, 0.3407705765729e+00,
+      0.4866636509685e-08, 0.4919244697715e+01, 0.7722995774390e-01,
+      0.3526100639296e-08, 0.2550821052734e+01, 0.6225157782540e-01,
+
+      0.3939558488075e-08, 0.3939331491710e+01, 0.5268983110410e-01,
+      0.4041268772576e-08, 0.2275337571218e+01, 0.3503323232942e+00,
+      0.3948761842853e-08, 0.1999324200790e+01, 0.1451108196653e+00,
+      0.3258394550029e-08, 0.9121001378200e+00, 0.5296435984654e+00,
+      0.3257897048761e-08, 0.3428428660869e+01, 0.5297383457582e+00,
+      0.3842559031298e-08, 0.6132927720035e+01, 0.9098186128426e+00,
+      0.3109920095448e-08, 0.7693650193003e+00, 0.3932462625300e-02,
+      0.3132237775119e-08, 0.3621293854908e+01, 0.2346394437820e+00,
+      0.3942189421510e-08, 0.4841863659733e+01, 0.3180992042600e-02,
+      0.3796972285340e-08, 0.1814174994268e+01, 0.1862120789403e+00,
+
+      0.3995640233688e-08, 0.1386990406091e+01, 0.4549093064213e+00,
+      0.2875013727414e-08, 0.9178318587177e+00, 0.1905464808669e+01,
+      0.3073719932844e-08, 0.2688923811835e+01, 0.3628624111593e+00,
+      0.2731016580075e-08, 0.1188259127584e+01, 0.2131850110243e+00,
+      0.2729549896546e-08, 0.3702160634273e+01, 0.2134131485323e+00,
+      0.3339372892449e-08, 0.7199163960331e+00, 0.2007689919132e+00,
+      0.2898833764204e-08, 0.1916709364999e+01, 0.5291709230214e+00,
+      0.2894536549362e-08, 0.2424043195547e+01, 0.5302110212022e+00,
+      0.3096872473843e-08, 0.4445894977497e+01, 0.2976424921901e+00,
+      0.2635672326810e-08, 0.3814366984117e+01, 0.1485980103780e+01,
+
+      0.3649302697001e-08, 0.2924200596084e+01, 0.6044726378023e+00,
+      0.3127954585895e-08, 0.1842251648327e+01, 0.1084620721060e+00,
+      0.2616040173947e-08, 0.4155841921984e+01, 0.1258454114666e+01,
+      0.2597395859860e-08, 0.1158045978874e+00, 0.2103781122809e+00,
+      0.2593286172210e-08, 0.4771850408691e+01, 0.2162200472757e+00,
+      0.2481823585747e-08, 0.4608842558889e+00, 0.1062562936266e+01,
+      0.2742219550725e-08, 0.1538781127028e+01, 0.5651155736444e+00,
+      0.3199558469610e-08, 0.3226647822878e+00, 0.7036329877322e+00,
+      0.2666088542957e-08, 0.1967991731219e+00, 0.1400015846597e+00,
+      0.2397067430580e-08, 0.3707036669873e+01, 0.2125476091956e+00,
+
+      0.2376570772738e-08, 0.1182086628042e+01, 0.2140505503610e+00,
+      0.2547228007887e-08, 0.4906256820629e+01, 0.1534957940063e+00,
+      0.2265575594114e-08, 0.3414949866857e+01, 0.2235935264888e+00,
+      0.2464381430585e-08, 0.4599122275378e+01, 0.2091065926078e+00,
+      0.2433408527044e-08, 0.2830751145445e+00, 0.2174915669488e+00,
+      0.2443605509076e-08, 0.4212046432538e+01, 0.1739420156204e+00,
+      0.2319779262465e-08, 0.9881978408630e+00, 0.7530171478090e-01,
+      0.2284622835465e-08, 0.5565347331588e+00, 0.7426161660010e-01,
+      0.2467268750783e-08, 0.5655708150766e+00, 0.2526561439362e+00,
+      0.2808513492782e-08, 0.1418405053408e+01, 0.5636314030725e+00,
+
+      0.2329528932532e-08, 0.4069557545675e+01, 0.1056200952181e+01,
+      0.9698639532817e-09, 0.1074134313634e+01, 0.7826370942180e+02 };
+
+/* SSB-to-Sun, T^0, Y */
+   static const double s0y[] = {
+      0.4955392320126e-02, 0.2170467313679e+01, 0.5296909721118e+00,
+      0.2722325167392e-02, 0.2444433682196e+01, 0.2132990797783e+00,
+      0.1546579925346e-02, 0.5992779281546e+00, 0.3813291813120e-01,
+      0.8363140252966e-03, 0.7687356310801e+00, 0.7478166569050e-01,
+      0.3385792683603e-03, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.1201192221613e-03, 0.2520035601514e+01, 0.1059381944224e+01,
+      0.7587125720554e-04, 0.1669954006449e+01, 0.4265981595566e+00,
+      0.1964155361250e-04, 0.5707743963343e+01, 0.2061856251104e+00,
+      0.1891900364909e-04, 0.2320960679937e+01, 0.2204125344462e+00,
+      0.1937373433356e-04, 0.3226940689555e+01, 0.1495633313810e+00,
+
+      0.1437139941351e-04, 0.2301626908096e+01, 0.5225775174439e+00,
+      0.1406267683099e-04, 0.5188579265542e+01, 0.5368044267797e+00,
+      0.1178703080346e-04, 0.5489483248476e+01, 0.7626583626240e-01,
+      0.8079835186041e-05, 0.1683751835264e+01, 0.3664874755930e-01,
+      0.7623253594652e-05, 0.2656400462961e+01, 0.3961708870310e-01,
+      0.6248667483971e-05, 0.4992775362055e+01, 0.7329749511860e-01,
+      0.4366353695038e-05, 0.2869706279678e+01, 0.1589072916335e+01,
+      0.3829101568895e-05, 0.3572131359950e+01, 0.7113454667900e-02,
+      0.3175733773908e-05, 0.4535372530045e+01, 0.4194847048887e+00,
+      0.3092437902159e-05, 0.9230153317909e+00, 0.6398972393349e+00,
+
+      0.2874168812154e-05, 0.3363143761101e+01, 0.1102062672231e+00,
+      0.3040119321826e-05, 0.3324250895675e+01, 0.6283075850446e+01,
+      0.2699723308006e-05, 0.2917882441928e+00, 0.1030928125552e+00,
+      0.2134832683534e-05, 0.4220997202487e+01, 0.3163918923335e+00,
+      0.1770412139433e-05, 0.4747318496462e+01, 0.1021328554739e+02,
+      0.1377264209373e-05, 0.4305058462401e+00, 0.1484170571900e-02,
+      0.1127814538960e-05, 0.8538177240740e+00, 0.6327837846670e+00,
+      0.1055608090130e-05, 0.1551800742580e+01, 0.4337116142245e+00,
+      0.9802673861420e-06, 0.1459646735377e+01, 0.1052268489556e+01,
+      0.1090329461951e-05, 0.1587351228711e+01, 0.1162474756779e+01,
+
+      0.6959590025090e-06, 0.5534442628766e+01, 0.1066495398892e+01,
+      0.5664914529542e-06, 0.6030673003297e+01, 0.9491756770005e+00,
+      0.6607787763599e-06, 0.4989507233927e+01, 0.8460828644453e+00,
+      0.6269725742838e-06, 0.4222951804572e+01, 0.1480791608091e+00,
+      0.6301889697863e-06, 0.5444316669126e+01, 0.2243449970715e+00,
+      0.4891042662861e-06, 0.1490552839784e+01, 0.3340612434717e+01,
+      0.3457083123290e-06, 0.3030475486049e+01, 0.3516457698740e-01,
+      0.3032559967314e-06, 0.2652038793632e+01, 0.1104591729320e-01,
+      0.2841133988903e-06, 0.1276744786829e+01, 0.4110125927500e-01,
+      0.2855564444432e-06, 0.2143368674733e+01, 0.1510475019529e+00,
+
+      0.2765157135038e-06, 0.5444186109077e+01, 0.6373574839730e-01,
+      0.2382312465034e-06, 0.2190521137593e+01, 0.2275259891141e+00,
+      0.2808060365077e-06, 0.5735195064841e+01, 0.2535050500000e-01,
+      0.2332175234405e-06, 0.9481985524859e-01, 0.7181332454670e-01,
+      0.2322488199659e-06, 0.5180499361533e+01, 0.8582758298370e-01,
+      0.1881850258423e-06, 0.3219788273885e+01, 0.2118763888447e+01,
+      0.2196111392808e-06, 0.2366941159761e+01, 0.2968341143800e-02,
+      0.2183810335519e-06, 0.4825445110915e+01, 0.7775000683430e-01,
+      0.2002733093326e-06, 0.2457148995307e+01, 0.2093666171530e+00,
+      0.1967111767229e-06, 0.5586291545459e+01, 0.2172315424036e+00,
+
+      0.1568473250543e-06, 0.3708003123320e+01, 0.7429900518901e+00,
+      0.1852528314300e-06, 0.4310638151560e+01, 0.2022531624851e+00,
+      0.1832111226447e-06, 0.1494665322656e+01, 0.3235053470014e+00,
+      0.1746805502310e-06, 0.1451378500784e+01, 0.1385174140878e+00,
+      0.1555730966650e-06, 0.1068040418198e+01, 0.7358765972222e+00,
+      0.1554883462559e-06, 0.2442579035461e+01, 0.5154640627760e+00,
+      0.1638380568746e-06, 0.2597913420625e+00, 0.8531963191132e+00,
+      0.1159938593640e-06, 0.5834512021280e+01, 0.1990721704425e+00,
+      0.1083427965695e-06, 0.5054033177950e+01, 0.5439178814476e+00,
+      0.1156480369431e-06, 0.5325677432457e+01, 0.5257585094865e+00,
+
+      0.1141308860095e-06, 0.2153403923857e+01, 0.5336234347371e+00,
+      0.7913146470946e-07, 0.8642846847027e+00, 0.1478866649112e+01,
+      0.7439752463733e-07, 0.1970628496213e+01, 0.2164800718209e+00,
+      0.7280277104079e-07, 0.6073307250609e+01, 0.2101180877357e+00,
+      0.8319567719136e-07, 0.1954371928334e+01, 0.1692165728891e+01,
+      0.7137705549290e-07, 0.8904989440909e+00, 0.4155522422634e+00,
+      0.6900825396225e-07, 0.2825717714977e+01, 0.1173197218910e+00,
+      0.7245757216635e-07, 0.2481677513331e+01, 0.1265567569334e+01,
+      0.6961165696255e-07, 0.1292955312978e+01, 0.9562891316684e+00,
+      0.7571804456890e-07, 0.3427517575069e+01, 0.1422690933580e-01,
+
+      0.6605425721904e-07, 0.8052192701492e+00, 0.6470106940028e+00,
+      0.7375477357248e-07, 0.1705076390088e+01, 0.1581959461667e+01,
+      0.7041664951470e-07, 0.4848356967891e+00, 0.9597935788730e-01,
+      0.6322199535763e-07, 0.3878069473909e+01, 0.7084920306520e-01,
+      0.5244380279191e-07, 0.2645560544125e+01, 0.5265099800692e+00,
+      0.5143125704988e-07, 0.4834486101370e+01, 0.5328719641544e+00,
+      0.5871866319373e-07, 0.7981472548900e+00, 0.7871412831580e-01,
+      0.6300822573871e-07, 0.5979398788281e+01, 0.2608790314060e+02,
+      0.6062154271548e-07, 0.4108655402756e+01, 0.1114304132498e+00,
+      0.4361912339976e-07, 0.5322624319280e+01, 0.1375773836557e+01,
+
+      0.4417005920067e-07, 0.6240817359284e+01, 0.2770348281756e+00,
+      0.4686806749936e-07, 0.3214977301156e+01, 0.1143987543936e+00,
+      0.3758892132305e-07, 0.5879809634765e+01, 0.1596186371003e+01,
+      0.5151351332319e-07, 0.2893377688007e+00, 0.2228608264996e+00,
+      0.4554683578572e-07, 0.5475427144122e+01, 0.1465949902372e+00,
+      0.3442381385338e-07, 0.5992034796640e+01, 0.5070101000000e-01,
+      0.2831093954933e-07, 0.5367350273914e+01, 0.3092784376656e+00,
+      0.3756267090084e-07, 0.5758171285420e+01, 0.4903339079539e+00,
+      0.2816374679892e-07, 0.1863718700923e+01, 0.2991266627620e+00,
+      0.3419307025569e-07, 0.9524347534130e+00, 0.3518164938661e+00,
+
+      0.2904250494239e-07, 0.5304471615602e+01, 0.1099462426779e+00,
+      0.2471734511206e-07, 0.1297069793530e+01, 0.6256703299991e+00,
+      0.2539620831872e-07, 0.3281126083375e+01, 0.1256615170089e+02,
+      0.2281017868007e-07, 0.1829122133165e+01, 0.6681224869435e+01,
+      0.2275319473335e-07, 0.5797198160181e+01, 0.3932462625300e-02,
+      0.2547755368442e-07, 0.4752697708330e+01, 0.1169588211447e+01,
+      0.2285979669317e-07, 0.1223205292886e+01, 0.1045155034888e+01,
+      0.1913386560994e-07, 0.1757532993389e+01, 0.1155361302111e+01,
+      0.1809020525147e-07, 0.4246116108791e+01, 0.3368040641550e-01,
+      0.1649213300201e-07, 0.1445162890627e+01, 0.4408250688924e+00,
+
+      0.1834972793932e-07, 0.1126917567225e+01, 0.4452511715700e-02,
+      0.1439550648138e-07, 0.6160756834764e+01, 0.9420622223326e+00,
+      0.1487645457041e-07, 0.4358761931792e+01, 0.4123712502208e+00,
+      0.1731729516660e-07, 0.6134456753344e+01, 0.2108507877249e+00,
+      0.1717747163567e-07, 0.1898186084455e+01, 0.2157473718317e+00,
+      0.1418190430374e-07, 0.4180286741266e+01, 0.6521991896920e-01,
+      0.1404844134873e-07, 0.7654053565412e-01, 0.4258542984690e-01,
+      0.1409842846538e-07, 0.4418612420312e+01, 0.2258291676434e+00,
+      0.1090948346291e-07, 0.1260615686131e+01, 0.4226656969313e+00,
+      0.1357577323612e-07, 0.3558248818690e+01, 0.7923417740620e-01,
+
+      0.1018154061960e-07, 0.5676087241256e+01, 0.1456308687557e+00,
+      0.1412073972109e-07, 0.8394392632422e+00, 0.1525316725248e+00,
+      0.1030938326496e-07, 0.1653593274064e+01, 0.1795258541446e+01,
+      0.1180081567104e-07, 0.1285802592036e+01, 0.7032915397480e-01,
+      0.9708510575650e-08, 0.7631889488106e+00, 0.8434341241180e-01,
+      0.9637689663447e-08, 0.4630642649176e+01, 0.1272681024002e+01,
+      0.1068910429389e-07, 0.5294934032165e+01, 0.2123349582968e+00,
+      0.1063716179336e-07, 0.2736266800832e+01, 0.2142632012598e+00,
+      0.1234858713814e-07, 0.1302891146570e+01, 0.1847279083684e+00,
+      0.8912631189738e-08, 0.3570415993621e+01, 0.2648454860559e+01,
+
+      0.1036378285534e-07, 0.4236693440949e+01, 0.1370332435159e+00,
+      0.9667798501561e-08, 0.2960768892398e+01, 0.4376440768498e+00,
+      0.8108314201902e-08, 0.6987781646841e+00, 0.2880807454688e+00,
+      0.7648364324628e-08, 0.2499017863863e+01, 0.2037373330570e+00,
+      0.7286136828406e-08, 0.3787426951665e+01, 0.1129145838217e+00,
+      0.9448237743913e-08, 0.2694354332983e+01, 0.5272426800584e+00,
+      0.9374276106428e-08, 0.4787121277064e+01, 0.5321392641652e+00,
+      0.7100226287462e-08, 0.3530238792101e+00, 0.6288513220417e+00,
+      0.9253056659571e-08, 0.1399478925664e+01, 0.1606092486742e+00,
+      0.6636432145504e-08, 0.3479575438447e+01, 0.1368660381889e+01,
+
+      0.6469975312932e-08, 0.1383669964800e+01, 0.2008557621224e+01,
+      0.7335849729765e-08, 0.1243698166898e+01, 0.9561746721300e-02,
+      0.8743421205855e-08, 0.3776164289301e+01, 0.3801276407308e+00,
+      0.5993635744494e-08, 0.5627122113596e+01, 0.2042657109477e+02,
+      0.5981008479693e-08, 0.1674336636752e+01, 0.2111650433779e+01,
+      0.6188535145838e-08, 0.5214925208672e+01, 0.4305306221819e+00,
+      0.6596074017566e-08, 0.2907653268124e+01, 0.1063314406849e+01,
+      0.6630815126226e-08, 0.2127643669658e+01, 0.8389694097774e+00,
+      0.6156772830040e-08, 0.5082160803295e+01, 0.4234171675140e+00,
+      0.6446960563014e-08, 0.1872100916905e+01, 0.5287268506303e+00,
+
+      0.6429324424668e-08, 0.5610276103577e+01, 0.5306550935933e+00,
+      0.6302232396465e-08, 0.1592152049607e+01, 0.1253008786510e-01,
+      0.6399244436159e-08, 0.2746214421532e+01, 0.5217580628120e+02,
+      0.5474965172558e-08, 0.2317666374383e+01, 0.2221856701002e+01,
+      0.5339293190692e-08, 0.1084724961156e+01, 0.7466759693650e-01,
+      0.5334733683389e-08, 0.3594106067745e+01, 0.7489573444450e-01,
+      0.5392665782110e-08, 0.5630254365606e+01, 0.1055449481598e+01,
+      0.6682075673789e-08, 0.1518480041732e+01, 0.2213766559277e+00,
+      0.5079130495960e-08, 0.2739765115711e+01, 0.2132517061319e+00,
+      0.5077759793261e-08, 0.5290711290094e+01, 0.2133464534247e+00,
+
+      0.4832037368310e-08, 0.1404473217200e+01, 0.7160067364790e-01,
+      0.6463279674802e-08, 0.6038381695210e+01, 0.2209183458640e-01,
+      0.6240592771560e-08, 0.1290170653666e+01, 0.3306188016693e+00,
+      0.4672013521493e-08, 0.3261895939677e+01, 0.7796265773310e-01,
+      0.6500650750348e-08, 0.1154522312095e+01, 0.3884652414254e+00,
+      0.6344161389053e-08, 0.6206111545062e+01, 0.7605151500000e-01,
+      0.4682518370646e-08, 0.5409118796685e+01, 0.1073608853559e+01,
+      0.5329460015591e-08, 0.1202985784864e+01, 0.7287631425543e+00,
+      0.5701588675898e-08, 0.4098715257064e+01, 0.8731175355560e-01,
+      0.6030690867211e-08, 0.4132033218460e+00, 0.9846002785331e+00,
+
+      0.4336256312655e-08, 0.1211415991827e+01, 0.4297791515992e+00,
+      0.4688498808975e-08, 0.3765479072409e+01, 0.2127790306879e+00,
+      0.4675578609335e-08, 0.4265540037226e+01, 0.2138191288687e+00,
+      0.4225578112158e-08, 0.5237566010676e+01, 0.3407705765729e+00,
+      0.5139422230028e-08, 0.1507173079513e+01, 0.7233337363710e-01,
+      0.4619995093571e-08, 0.9023957449848e-01, 0.8603097737811e+00,
+      0.4494776255461e-08, 0.5414930552139e+00, 0.7381754420900e-01,
+      0.4274026276788e-08, 0.4145735303659e+01, 0.7574578717200e-01,
+      0.5018141789353e-08, 0.3344408829055e+01, 0.3180992042600e-02,
+      0.4866163952181e-08, 0.3348534657607e+01, 0.7722995774390e-01,
+
+      0.4111986020501e-08, 0.4198823597220e+00, 0.1451108196653e+00,
+      0.3356142784950e-08, 0.5609144747180e+01, 0.1274714967946e+00,
+      0.4070575554551e-08, 0.7028411059224e+00, 0.3503323232942e+00,
+      0.3257451857278e-08, 0.5624697983086e+01, 0.5296435984654e+00,
+      0.3256973703026e-08, 0.1857842076707e+01, 0.5297383457582e+00,
+      0.3830771508640e-08, 0.4562887279931e+01, 0.9098186128426e+00,
+      0.3725024005962e-08, 0.2358058692652e+00, 0.1084620721060e+00,
+      0.3136763921756e-08, 0.2049731526845e+01, 0.2346394437820e+00,
+      0.3795147256194e-08, 0.2432356296933e+00, 0.1862120789403e+00,
+      0.2877342229911e-08, 0.5631101279387e+01, 0.1905464808669e+01,
+
+      0.3076931798805e-08, 0.1117615737392e+01, 0.3628624111593e+00,
+      0.2734765945273e-08, 0.5899826516955e+01, 0.2131850110243e+00,
+      0.2733405296885e-08, 0.2130562964070e+01, 0.2134131485323e+00,
+      0.2898552353410e-08, 0.3462387048225e+00, 0.5291709230214e+00,
+      0.2893736103681e-08, 0.8534352781543e+00, 0.5302110212022e+00,
+      0.3095717734137e-08, 0.2875061429041e+01, 0.2976424921901e+00,
+      0.2636190425832e-08, 0.2242512846659e+01, 0.1485980103780e+01,
+      0.3645512095537e-08, 0.1354016903958e+01, 0.6044726378023e+00,
+      0.2808173547723e-08, 0.6705114365631e-01, 0.6225157782540e-01,
+      0.2625012866888e-08, 0.4775705748482e+01, 0.5268983110410e-01,
+
+      0.2572233995651e-08, 0.2638924216139e+01, 0.1258454114666e+01,
+      0.2604238824792e-08, 0.4826358927373e+01, 0.2103781122809e+00,
+      0.2596886385239e-08, 0.3200388483118e+01, 0.2162200472757e+00,
+      0.3228057304264e-08, 0.5384848409563e+01, 0.2007689919132e+00,
+      0.2481601798252e-08, 0.5173373487744e+01, 0.1062562936266e+01,
+      0.2745977498864e-08, 0.6250966149853e+01, 0.5651155736444e+00,
+      0.2669878833811e-08, 0.4906001352499e+01, 0.1400015846597e+00,
+      0.3203986611711e-08, 0.5034333010005e+01, 0.7036329877322e+00,
+      0.3354961227212e-08, 0.6108262423137e+01, 0.4549093064213e+00,
+      0.2400407324558e-08, 0.2135399294955e+01, 0.2125476091956e+00,
+
+      0.2379905859802e-08, 0.5893721933961e+01, 0.2140505503610e+00,
+      0.2550844302187e-08, 0.3331940762063e+01, 0.1534957940063e+00,
+      0.2268824211001e-08, 0.1843418461035e+01, 0.2235935264888e+00,
+      0.2464700891204e-08, 0.3029548547230e+01, 0.2091065926078e+00,
+      0.2436814726024e-08, 0.4994717970364e+01, 0.2174915669488e+00,
+      0.2443623894745e-08, 0.2645102591375e+01, 0.1739420156204e+00,
+      0.2318701783838e-08, 0.5700547397897e+01, 0.7530171478090e-01,
+      0.2284448700256e-08, 0.5268898905872e+01, 0.7426161660010e-01,
+      0.2468848123510e-08, 0.5276280575078e+01, 0.2526561439362e+00,
+      0.2814052350303e-08, 0.6130168623475e+01, 0.5636314030725e+00,
+
+      0.2243662755220e-08, 0.6631692457995e+00, 0.8886590321940e-01,
+      0.2330795855941e-08, 0.2499435487702e+01, 0.1056200952181e+01,
+      0.9757679038404e-09, 0.5796846023126e+01, 0.7826370942180e+02 };
+
+/* SSB-to-Sun, T^0, Z */
+   static const double s0z[] = {
+      0.1181255122986e-03, 0.4607918989164e+00, 0.2132990797783e+00,
+      0.1127777651095e-03, 0.4169146331296e+00, 0.5296909721118e+00,
+      0.4777754401806e-04, 0.4582657007130e+01, 0.3813291813120e-01,
+      0.1129354285772e-04, 0.5758735142480e+01, 0.7478166569050e-01,
+     -0.1149543637123e-04, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.3298730512306e-05, 0.5978801994625e+01, 0.4265981595566e+00,
+      0.2733376706079e-05, 0.7665413691040e+00, 0.1059381944224e+01,
+      0.9426389657270e-06, 0.3710201265838e+01, 0.2061856251104e+00,
+      0.8187517749552e-06, 0.3390675605802e+00, 0.2204125344462e+00,
+      0.4080447871819e-06, 0.4552296640088e+00, 0.5225775174439e+00,
+
+      0.3169973017028e-06, 0.3445455899321e+01, 0.5368044267797e+00,
+      0.2438098615549e-06, 0.5664675150648e+01, 0.3664874755930e-01,
+      0.2601897517235e-06, 0.1931894095697e+01, 0.1495633313810e+00,
+      0.2314558080079e-06, 0.3666319115574e+00, 0.3961708870310e-01,
+      0.1962549548002e-06, 0.3167411699020e+01, 0.7626583626240e-01,
+      0.2180518287925e-06, 0.1544420746580e+01, 0.7113454667900e-02,
+      0.1451382442868e-06, 0.1583756740070e+01, 0.1102062672231e+00,
+      0.1358439007389e-06, 0.5239941758280e+01, 0.6398972393349e+00,
+      0.1050585898028e-06, 0.2266958352859e+01, 0.3163918923335e+00,
+      0.1050029870186e-06, 0.2711495250354e+01, 0.4194847048887e+00,
+
+      0.9934920679800e-07, 0.1116208151396e+01, 0.1589072916335e+01,
+      0.1048395331560e-06, 0.3408619600206e+01, 0.1021328554739e+02,
+      0.8370147196668e-07, 0.3810459401087e+01, 0.2535050500000e-01,
+      0.7989856510998e-07, 0.3769910473647e+01, 0.7329749511860e-01,
+      0.5441221655233e-07, 0.2416994903374e+01, 0.1030928125552e+00,
+      0.4610812906784e-07, 0.5858503336994e+01, 0.4337116142245e+00,
+      0.3923022803444e-07, 0.3354170010125e+00, 0.1484170571900e-02,
+      0.2610725582128e-07, 0.5410600646324e+01, 0.6327837846670e+00,
+      0.2455279767721e-07, 0.6120216681403e+01, 0.1162474756779e+01,
+      0.2375530706525e-07, 0.6055443426143e+01, 0.1052268489556e+01,
+
+      0.1782967577553e-07, 0.3146108708004e+01, 0.8460828644453e+00,
+      0.1581687095238e-07, 0.6255496089819e+00, 0.3340612434717e+01,
+      0.1594657672461e-07, 0.3782604300261e+01, 0.1066495398892e+01,
+      0.1563448615040e-07, 0.1997775733196e+01, 0.2022531624851e+00,
+      0.1463624258525e-07, 0.1736316792088e+00, 0.3516457698740e-01,
+      0.1331585056673e-07, 0.4331941830747e+01, 0.9491756770005e+00,
+      0.1130634557637e-07, 0.6152017751825e+01, 0.2968341143800e-02,
+      0.1028949607145e-07, 0.2101792614637e+00, 0.2275259891141e+00,
+      0.1024074971618e-07, 0.4071833211074e+01, 0.5070101000000e-01,
+      0.8826956060303e-08, 0.4861633688145e+00, 0.2093666171530e+00,
+
+      0.8572230171541e-08, 0.5268190724302e+01, 0.4110125927500e-01,
+      0.7649332643544e-08, 0.5134543417106e+01, 0.2608790314060e+02,
+      0.8581673291033e-08, 0.2920218146681e+01, 0.1480791608091e+00,
+      0.8430589300938e-08, 0.3604576619108e+01, 0.2172315424036e+00,
+      0.7776165501012e-08, 0.3772942249792e+01, 0.6373574839730e-01,
+      0.8311070234408e-08, 0.6200412329888e+01, 0.3235053470014e+00,
+      0.6927365212582e-08, 0.4543353113437e+01, 0.8531963191132e+00,
+      0.6791574208598e-08, 0.2882188406238e+01, 0.7181332454670e-01,
+      0.5593100811839e-08, 0.1776646892780e+01, 0.7429900518901e+00,
+      0.4553381853021e-08, 0.3949617611240e+01, 0.7775000683430e-01,
+
+      0.5758000450068e-08, 0.3859251775075e+01, 0.1990721704425e+00,
+      0.4281283457133e-08, 0.1466294631206e+01, 0.2118763888447e+01,
+      0.4206935661097e-08, 0.5421776011706e+01, 0.1104591729320e-01,
+      0.4213751641837e-08, 0.3412048993322e+01, 0.2243449970715e+00,
+      0.5310506239878e-08, 0.5421641370995e+00, 0.5154640627760e+00,
+      0.3827450341320e-08, 0.8887314524995e+00, 0.1510475019529e+00,
+      0.4292435241187e-08, 0.1405043757194e+01, 0.1422690933580e-01,
+      0.3189780702289e-08, 0.1060049293445e+01, 0.1173197218910e+00,
+      0.3226611928069e-08, 0.6270858897442e+01, 0.2164800718209e+00,
+      0.2893897608830e-08, 0.5117563223301e+01, 0.6470106940028e+00,
+
+      0.3239852024578e-08, 0.4079092237983e+01, 0.2101180877357e+00,
+      0.2956892222200e-08, 0.1594917021704e+01, 0.3092784376656e+00,
+      0.2980177912437e-08, 0.5258787667564e+01, 0.4155522422634e+00,
+      0.3163725690776e-08, 0.3854589225479e+01, 0.8582758298370e-01,
+      0.2662262399118e-08, 0.3561326430187e+01, 0.5257585094865e+00,
+      0.2766689135729e-08, 0.3180732086830e+00, 0.1385174140878e+00,
+      0.2411600278464e-08, 0.3324798335058e+01, 0.5439178814476e+00,
+      0.2483527695131e-08, 0.4169069291947e+00, 0.5336234347371e+00,
+      0.7788777276590e-09, 0.1900569908215e+01, 0.5217580628120e+02 };
+
+/* SSB-to-Sun, T^1, X */
+   static const double s1x[] = {
+     -0.1296310361520e-07, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.8975769009438e-08, 0.1128891609250e+01, 0.4265981595566e+00,
+      0.7771113441307e-08, 0.2706039877077e+01, 0.2061856251104e+00,
+      0.7538303866642e-08, 0.2191281289498e+01, 0.2204125344462e+00,
+      0.6061384579336e-08, 0.3248167319958e+01, 0.1059381944224e+01,
+      0.5726994235594e-08, 0.5569981398610e+01, 0.5225775174439e+00,
+      0.5616492836424e-08, 0.5057386614909e+01, 0.5368044267797e+00,
+      0.1010881584769e-08, 0.3473577116095e+01, 0.7113454667900e-02,
+      0.7259606157626e-09, 0.3651858593665e+00, 0.6398972393349e+00,
+      0.8755095026935e-09, 0.1662835408338e+01, 0.4194847048887e+00,
+
+      0.5370491182812e-09, 0.1327673878077e+01, 0.4337116142245e+00,
+      0.5743773887665e-09, 0.4250200846687e+01, 0.2132990797783e+00,
+      0.4408103140300e-09, 0.3598752574277e+01, 0.1589072916335e+01,
+      0.3101892374445e-09, 0.4887822983319e+01, 0.1052268489556e+01,
+      0.3209453713578e-09, 0.9702272295114e+00, 0.5296909721118e+00,
+      0.3017228286064e-09, 0.5484462275949e+01, 0.1066495398892e+01,
+      0.3200700038601e-09, 0.2846613338643e+01, 0.1495633313810e+00,
+      0.2137637279911e-09, 0.5692163292729e+00, 0.3163918923335e+00,
+      0.1899686386727e-09, 0.2061077157189e+01, 0.2275259891141e+00,
+      0.1401994545308e-09, 0.4177771136967e+01, 0.1102062672231e+00,
+
+      0.1578057810499e-09, 0.5782460597335e+01, 0.7626583626240e-01,
+      0.1237713253351e-09, 0.5705900866881e+01, 0.5154640627760e+00,
+      0.1313076837395e-09, 0.5163438179576e+01, 0.3664874755930e-01,
+      0.1184963304860e-09, 0.3054804427242e+01, 0.6327837846670e+00,
+      0.1238130878565e-09, 0.2317292575962e+01, 0.3961708870310e-01,
+      0.1015959527736e-09, 0.2194643645526e+01, 0.7329749511860e-01,
+      0.9017954423714e-10, 0.2868603545435e+01, 0.1990721704425e+00,
+      0.8668024955603e-10, 0.4923849675082e+01, 0.5439178814476e+00,
+      0.7756083930103e-10, 0.3014334135200e+01, 0.9491756770005e+00,
+      0.7536503401741e-10, 0.2704886279769e+01, 0.1030928125552e+00,
+
+      0.5483308679332e-10, 0.6010983673799e+01, 0.8531963191132e+00,
+      0.5184339620428e-10, 0.1952704573291e+01, 0.2093666171530e+00,
+      0.5108658712030e-10, 0.2958575786649e+01, 0.2172315424036e+00,
+      0.5019424524650e-10, 0.1736317621318e+01, 0.2164800718209e+00,
+      0.4909312625978e-10, 0.3167216416257e+01, 0.2101180877357e+00,
+      0.4456638901107e-10, 0.7697579923471e+00, 0.3235053470014e+00,
+      0.4227030350925e-10, 0.3490910137928e+01, 0.6373574839730e-01,
+      0.4095456040093e-10, 0.5178888984491e+00, 0.6470106940028e+00,
+      0.4990537041422e-10, 0.3323887668974e+01, 0.1422690933580e-01,
+      0.4321170010845e-10, 0.4288484987118e+01, 0.7358765972222e+00,
+
+      0.3544072091802e-10, 0.6021051579251e+01, 0.5265099800692e+00,
+      0.3480198638687e-10, 0.4600027054714e+01, 0.5328719641544e+00,
+      0.3440287244435e-10, 0.4349525970742e+01, 0.8582758298370e-01,
+      0.3330628322713e-10, 0.2347391505082e+01, 0.1104591729320e-01,
+      0.2973060707184e-10, 0.4789409286400e+01, 0.5257585094865e+00,
+      0.2932606766089e-10, 0.5831693799927e+01, 0.5336234347371e+00,
+      0.2876972310953e-10, 0.2692638514771e+01, 0.1173197218910e+00,
+      0.2827488278556e-10, 0.2056052487960e+01, 0.2022531624851e+00,
+      0.2515028239756e-10, 0.7411863262449e+00, 0.9597935788730e-01,
+      0.2853033744415e-10, 0.3948481024894e+01, 0.2118763888447e+01 };
+
+/* SSB-to-Sun, T^1, Y */
+   static const double s1y[] = {
+      0.8989047573576e-08, 0.5840593672122e+01, 0.4265981595566e+00,
+      0.7815938401048e-08, 0.1129664707133e+01, 0.2061856251104e+00,
+      0.7550926713280e-08, 0.6196589104845e+00, 0.2204125344462e+00,
+      0.6056556925895e-08, 0.1677494667846e+01, 0.1059381944224e+01,
+      0.5734142698204e-08, 0.4000920852962e+01, 0.5225775174439e+00,
+      0.5614341822459e-08, 0.3486722577328e+01, 0.5368044267797e+00,
+      0.1028678147656e-08, 0.1877141024787e+01, 0.7113454667900e-02,
+      0.7270792075266e-09, 0.5077167301739e+01, 0.6398972393349e+00,
+      0.8734141726040e-09, 0.9069550282609e-01, 0.4194847048887e+00,
+      0.5377371402113e-09, 0.6039381844671e+01, 0.4337116142245e+00,
+
+      0.4729719431571e-09, 0.2153086311760e+01, 0.2132990797783e+00,
+      0.4458052820973e-09, 0.5059830025565e+01, 0.5296909721118e+00,
+      0.4406855467908e-09, 0.2027971692630e+01, 0.1589072916335e+01,
+      0.3101659310977e-09, 0.3317677981860e+01, 0.1052268489556e+01,
+      0.3016749232545e-09, 0.3913703482532e+01, 0.1066495398892e+01,
+      0.3198541352656e-09, 0.1275513098525e+01, 0.1495633313810e+00,
+      0.2142065389871e-09, 0.5301351614597e+01, 0.3163918923335e+00,
+      0.1902615247592e-09, 0.4894943352736e+00, 0.2275259891141e+00,
+      0.1613410990871e-09, 0.2449891130437e+01, 0.1102062672231e+00,
+      0.1576992165097e-09, 0.4211421447633e+01, 0.7626583626240e-01,
+
+      0.1241637259894e-09, 0.4140803368133e+01, 0.5154640627760e+00,
+      0.1313974830355e-09, 0.3591920305503e+01, 0.3664874755930e-01,
+      0.1181697118258e-09, 0.1506314382788e+01, 0.6327837846670e+00,
+      0.1238239742779e-09, 0.7461405378404e+00, 0.3961708870310e-01,
+      0.1010107068241e-09, 0.6271010795475e+00, 0.7329749511860e-01,
+      0.9226316616509e-10, 0.1259158839583e+01, 0.1990721704425e+00,
+      0.8664946419555e-10, 0.3353244696934e+01, 0.5439178814476e+00,
+      0.7757230468978e-10, 0.1447677295196e+01, 0.9491756770005e+00,
+      0.7693168628139e-10, 0.1120509896721e+01, 0.1030928125552e+00,
+      0.5487897454612e-10, 0.4439380426795e+01, 0.8531963191132e+00,
+
+      0.5196118677218e-10, 0.3788856619137e+00, 0.2093666171530e+00,
+      0.5110853339935e-10, 0.1386879372016e+01, 0.2172315424036e+00,
+      0.5027804534813e-10, 0.1647881805466e+00, 0.2164800718209e+00,
+      0.4922485922674e-10, 0.1594315079862e+01, 0.2101180877357e+00,
+      0.6155599524400e-10, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.4447147832161e-10, 0.5480720918976e+01, 0.3235053470014e+00,
+      0.4144691276422e-10, 0.1931371033660e+01, 0.6373574839730e-01,
+      0.4099950625452e-10, 0.5229611294335e+01, 0.6470106940028e+00,
+      0.5060541682953e-10, 0.1731112486298e+01, 0.1422690933580e-01,
+      0.4293615946300e-10, 0.2714571038925e+01, 0.7358765972222e+00,
+
+      0.3545659845763e-10, 0.4451041444634e+01, 0.5265099800692e+00,
+      0.3479112041196e-10, 0.3029385448081e+01, 0.5328719641544e+00,
+      0.3438516493570e-10, 0.2778507143731e+01, 0.8582758298370e-01,
+      0.3297341285033e-10, 0.7898709807584e+00, 0.1104591729320e-01,
+      0.2972585818015e-10, 0.3218785316973e+01, 0.5257585094865e+00,
+      0.2931707295017e-10, 0.4260731012098e+01, 0.5336234347371e+00,
+      0.2897198149403e-10, 0.1120753978101e+01, 0.1173197218910e+00,
+      0.2832293240878e-10, 0.4597682717827e+00, 0.2022531624851e+00,
+      0.2864348326612e-10, 0.2169939928448e+01, 0.9597935788730e-01,
+      0.2852714675471e-10, 0.2377659870578e+01, 0.2118763888447e+01 };
+
+/* SSB-to-Sun, T^1, Z */
+   static const double s1z[] = {
+      0.5444220475678e-08, 0.1803825509310e+01, 0.2132990797783e+00,
+      0.3883412695596e-08, 0.4668616389392e+01, 0.5296909721118e+00,
+      0.1334341434551e-08, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.3730001266883e-09, 0.5401405918943e+01, 0.2061856251104e+00,
+      0.2894929197956e-09, 0.4932415609852e+01, 0.2204125344462e+00,
+      0.2857950357701e-09, 0.3154625362131e+01, 0.7478166569050e-01,
+      0.2499226432292e-09, 0.3657486128988e+01, 0.4265981595566e+00,
+      0.1937705443593e-09, 0.5740434679002e+01, 0.1059381944224e+01,
+      0.1374894396320e-09, 0.1712857366891e+01, 0.5368044267797e+00,
+      0.1217248678408e-09, 0.2312090870932e+01, 0.5225775174439e+00,
+
+      0.7961052740870e-10, 0.5283368554163e+01, 0.3813291813120e-01,
+      0.4979225949689e-10, 0.4298290471860e+01, 0.4194847048887e+00,
+      0.4388552286597e-10, 0.6145515047406e+01, 0.7113454667900e-02,
+      0.2586835212560e-10, 0.3019448001809e+01, 0.6398972393349e+00 };
+
+/* SSB-to-Sun, T^2, X */
+   static const double s2x[] = {
+      0.1603551636587e-11, 0.4404109410481e+01, 0.2061856251104e+00,
+      0.1556935889384e-11, 0.4818040873603e+00, 0.2204125344462e+00,
+      0.1182594414915e-11, 0.9935762734472e+00, 0.5225775174439e+00,
+      0.1158794583180e-11, 0.3353180966450e+01, 0.5368044267797e+00,
+      0.9597358943932e-12, 0.5567045358298e+01, 0.2132990797783e+00,
+      0.6511516579605e-12, 0.5630872420788e+01, 0.4265981595566e+00,
+      0.7419792747688e-12, 0.2156188581957e+01, 0.5296909721118e+00,
+      0.3951972655848e-12, 0.1981022541805e+01, 0.1059381944224e+01,
+      0.4478223877045e-12, 0.0000000000000e+00, 0.0000000000000e+00 };
+
+/* SSB-to-Sun, T^2, Y */
+   static const double s2y[] = {
+      0.1609114495091e-11, 0.2831096993481e+01, 0.2061856251104e+00,
+      0.1560330784946e-11, 0.5193058213906e+01, 0.2204125344462e+00,
+      0.1183535479202e-11, 0.5707003443890e+01, 0.5225775174439e+00,
+      0.1158183066182e-11, 0.1782400404928e+01, 0.5368044267797e+00,
+      0.1032868027407e-11, 0.4036925452011e+01, 0.2132990797783e+00,
+      0.6540142847741e-12, 0.4058241056717e+01, 0.4265981595566e+00,
+      0.7305236491596e-12, 0.6175401942957e+00, 0.5296909721118e+00,
+     -0.5580725052968e-12, 0.0000000000000e+00, 0.0000000000000e+00,
+      0.3946122651015e-12, 0.4108265279171e+00, 0.1059381944224e+01 };
+
+/* SSB-to-Sun, T^2, Z */
+   static const double s2z[] = {
+      0.3749920358054e-12, 0.3230285558668e+01, 0.2132990797783e+00,
+      0.2735037220939e-12, 0.6154322683046e+01, 0.5296909721118e+00 };
+
+/* Pointers to coefficient arrays, in x,y,z sets */
+   static const double *ce0[] = { e0x, e0y, e0z },
+                       *ce1[] = { e1x, e1y, e1z },
+                       *ce2[] = { e2x, e2y, e2z },
+                       *cs0[] = { s0x, s0y, s0z },
+                       *cs1[] = { s1x, s1y, s1z },
+                       *cs2[] = { s2x, s2y, s2z };
+   const double *coeffs;
+
+/* Numbers of terms for each component of the model, in x,y,z sets */
+   static const int ne0[3] = {(int)(sizeof e0x / sizeof (double) / 3),
+                              (int)(sizeof e0y / sizeof (double) / 3),
+                              (int)(sizeof e0z / sizeof (double) / 3) },
+                    ne1[3] = {(int)(sizeof e1x / sizeof (double) / 3),
+                              (int)(sizeof e1y / sizeof (double) / 3),
+                              (int)(sizeof e1z / sizeof (double) / 3) },
+                    ne2[3] = {(int)(sizeof e2x / sizeof (double) / 3),
+                              (int)(sizeof e2y / sizeof (double) / 3),
+                              (int)(sizeof e2z / sizeof (double) / 3) },
+                    ns0[3] = {(int)(sizeof s0x / sizeof (double) / 3),
+                              (int)(sizeof s0y / sizeof (double) / 3),
+                              (int)(sizeof s0z / sizeof (double) / 3) },
+                    ns1[3] = {(int)(sizeof s1x / sizeof (double) / 3),
+                              (int)(sizeof s1y / sizeof (double) / 3),
+                              (int)(sizeof s1z / sizeof (double) / 3) },
+                    ns2[3] = {(int)(sizeof s2x / sizeof (double) / 3),
+                              (int)(sizeof s2y / sizeof (double) / 3),
+                              (int)(sizeof s2z / sizeof (double) / 3) };
+   int nterms;
+
+/* Miscellaneous */
+   int jstat, i, j;
+   double t, t2, xyz, xyzd, a, b, c, ct, p, cp,
+          ph[3], vh[3], pb[3], vb[3], x, y, z;
+
+/*--------------------------------------------------------------------*/
+
+/* Time since reference epoch, Julian years. */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJY;
+   t2 = t*t;
+
+/* Set status. */
+   jstat = fabs(t) <= 100.0 ? 0 : 1;
+
+/* X then Y then Z. */
+   for (i = 0; i < 3; i++) {
+
+   /* Initialize position and velocity component. */
+      xyz = 0.0;
+      xyzd = 0.0;
+
+   /* ------------------------------------------------ */
+   /* Obtain component of Sun to Earth ecliptic vector */
+   /* ------------------------------------------------ */
+
+   /* Sun to Earth, T^0 terms. */
+      coeffs = ce0[i];
+      nterms = ne0[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         p = b + c*t;
+         xyz  += a*cos(p);
+         xyzd -= a*c*sin(p);
+      }
+
+   /* Sun to Earth, T^1 terms. */
+      coeffs = ce1[i];
+      nterms = ne1[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         ct = c*t;
+         p = b + ct;
+         cp = cos(p);
+         xyz  += a*t*cp;
+         xyzd += a*( cp - ct*sin(p) );
+      }
+
+   /* Sun to Earth, T^2 terms. */
+      coeffs = ce2[i];
+      nterms = ne2[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         ct = c*t;
+         p = b + ct;
+         cp = cos(p);
+         xyz  += a*t2*cp;
+         xyzd += a*t*( 2.0*cp - ct*sin(p) );
+      }
+
+   /* Heliocentric Earth position and velocity component. */
+      ph[i] = xyz;
+      vh[i] = xyzd / ERFA_DJY;
+
+   /* ------------------------------------------------ */
+   /* Obtain component of SSB to Earth ecliptic vector */
+   /* ------------------------------------------------ */
+
+   /* SSB to Sun, T^0 terms. */
+      coeffs = cs0[i];
+      nterms = ns0[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         p = b + c*t;
+         xyz  += a*cos(p);
+         xyzd -= a*c*sin(p);
+      }
+
+   /* SSB to Sun, T^1 terms. */
+      coeffs = cs1[i];
+      nterms = ns1[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         ct = c*t;
+         p = b + ct;
+         cp = cos(p);
+         xyz  += a*t*cp;
+         xyzd += a*(cp - ct*sin(p));
+      }
+
+   /* SSB to Sun, T^2 terms. */
+      coeffs = cs2[i];
+      nterms = ns2[i];
+      for (j = 0; j < nterms; j++) {
+         a = *coeffs++;
+         b = *coeffs++;
+         c = *coeffs++;
+         ct = c*t;
+         p = b + ct;
+         cp = cos(p);
+         xyz  += a*t2*cp;
+         xyzd += a*t*(2.0*cp - ct*sin(p));
+     }
+
+   /* Barycentric Earth position and velocity component. */
+     pb[i] = xyz;
+     vb[i] = xyzd / ERFA_DJY;
+
+   /* Next Cartesian component. */
+   }
+
+/* Rotate from ecliptic to BCRS coordinates. */
+
+   x = ph[0];
+   y = ph[1];
+   z = ph[2];
+   pvh[0][0] =      x + am12*y + am13*z;
+   pvh[0][1] = am21*x + am22*y + am23*z;
+   pvh[0][2] =          am32*y + am33*z;
+
+   x = vh[0];
+   y = vh[1];
+   z = vh[2];
+   pvh[1][0] =      x + am12*y + am13*z;
+   pvh[1][1] = am21*x + am22*y + am23*z;
+   pvh[1][2] =          am32*y + am33*z;
+
+   x = pb[0];
+   y = pb[1];
+   z = pb[2];
+   pvb[0][0] =      x + am12*y + am13*z;
+   pvb[0][1] = am21*x + am22*y + am23*z;
+   pvb[0][2] =          am32*y + am33*z;
+
+   x = vb[0];
+   y = vb[1];
+   z = vb[2];
+   pvb[1][0] =      x + am12*y + am13*z;
+   pvb[1][1] = am21*x + am22*y + am23*z;
+   pvb[1][2] =          am32*y + am33*z;
+
+/* Return the status. */
+   return jstat;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/eqeq94.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/eqeq94.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/eqeq94.c	(revision 18732)
@@ -0,0 +1,141 @@
+#include "erfa.h"
+
+double eraEqeq94(double date1, double date2)
+/*
+**  - - - - - - - - - -
+**   e r a E q e q 9 4
+**  - - - - - - - - - -
+**
+**  Equation of the equinoxes, IAU 1994 model.
+**
+**  Given:
+**     date1,date2   double     TDB date (Note 1)
+**
+**  Returned (function value):
+**                   double     equation of the equinoxes (Note 2)
+**
+**  Notes:
+**
+**  1) The date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result, which is in radians, operates in the following sense:
+**
+**        Greenwich apparent ST = GMST + equation of the equinoxes
+**
+**  Called:
+**     eraAnpm      normalize angle into range +/- pi
+**     eraNut80     nutation, IAU 1980
+**     eraObl80     mean obliquity, IAU 1980
+**
+**  References:
+**
+**     IAU Resolution C7, Recommendation 3 (1994).
+**
+**     Capitaine, N. & Gontier, A.-M., 1993, Astron. Astrophys., 275,
+**     645-650.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t,  om,  dpsi,  deps,  eps0, ee;
+
+
+/* Interval between fundamental epoch J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Longitude of the mean ascending node of the lunar orbit on the */
+/* ecliptic, measured from the mean equinox of date. */
+   om = eraAnpm((450160.280 + (-482890.539
+           + (7.455 + 0.008 * t) * t) * t) * ERFA_DAS2R
+           + fmod(-5.0 * t, 1.0) * ERFA_D2PI);
+
+/* Nutation components and mean obliquity. */
+   eraNut80(date1, date2, &dpsi, &deps);
+   eps0 = eraObl80(date1, date2);
+
+/* Equation of the equinoxes. */
+   ee = dpsi*cos(eps0) + ERFA_DAS2R*(0.00264*sin(om) + 0.000063*sin(om+om));
+
+   return ee;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/era00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/era00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/era00.c	(revision 18732)
@@ -0,0 +1,145 @@
+#include "erfa.h"
+
+double eraEra00(double dj1, double dj2)
+/*
+**  - - - - - - - - -
+**   e r a E r a 0 0
+**  - - - - - - - - -
+**
+**  Earth rotation angle (IAU 2000 model).
+**
+**  Given:
+**     dj1,dj2   double    UT1 as a 2-part Julian Date (see note)
+**
+**  Returned (function value):
+**               double    Earth rotation angle (radians), range 0-2pi
+**
+**  Notes:
+**
+**  1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any
+**     convenient way between the arguments dj1 and dj2.  For example,
+**     JD(UT1)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**             dj1            dj2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  The date & time method is
+**     best matched to the algorithm used:  maximum precision is
+**     delivered when the dj1 argument is for 0hrs UT1 on the day in
+**     question and the dj2 argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) The algorithm is adapted from Expression 22 of Capitaine et al.
+**     2000.  The time argument has been expressed in days directly,
+**     and, to retain precision, integer contributions have been
+**     eliminated.  The same formulation is given in IERS Conventions
+**     (2003), Chap. 5, Eq. 14.
+**
+**  Called:
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Capitaine N., Guinot B. and McCarthy D.D, 2000, Astron.
+**     Astrophys., 355, 398-405.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double d1, d2, t, f, theta;
+
+
+/* Days since fundamental epoch. */
+   if (dj1 < dj2) {
+      d1 = dj1;
+      d2 = dj2;
+   } else {
+      d1 = dj2;
+      d2 = dj1;
+   }
+   t = d1 + (d2- ERFA_DJ00);
+
+/* Fractional part of T (days). */
+   f = fmod(d1, 1.0) + fmod(d2, 1.0);
+
+/* Earth rotation angle at this UT1. */
+   theta = eraAnp(ERFA_D2PI * (f + 0.7790572732640
+                            + 0.00273781191135448 * t));
+
+   return theta;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/erfa.h
===================================================================
--- branches/FACT++_part_filenames/erfa/src/erfa.h	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/erfa.h	(revision 18732)
@@ -0,0 +1,517 @@
+#ifndef ERFAHDEF
+#define ERFAHDEF
+
+/*
+**  - - - - - - -
+**   e r f a . h
+**  - - - - - - -
+**
+**  Prototype function declarations for ERFA library.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+
+#include "erfam.h"
+#include "math.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Astronomy/Calendars */
+int eraCal2jd(int iy, int im, int id, double *djm0, double *djm);
+double eraEpb(double dj1, double dj2);
+void eraEpb2jd(double epb, double *djm0, double *djm);
+double eraEpj(double dj1, double dj2);
+void eraEpj2jd(double epj, double *djm0, double *djm);
+int eraJd2cal(double dj1, double dj2,
+                     int *iy, int *im, int *id, double *fd);
+int eraJdcalf(int ndp, double dj1, double dj2, int iymdf[4]);
+
+/* Astronomy/Astrometry */
+void eraAb(double pnat[3], double v[3], double s, double bm1,
+           double ppr[3]);
+void eraApcg(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             eraASTROM *astrom);
+void eraApcg13(double date1, double date2, eraASTROM *astrom);
+void eraApci(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             double x, double y, double s,
+             eraASTROM *astrom);
+void eraApci13(double date1, double date2,
+               eraASTROM *astrom, double *eo);
+void eraApco(double date1, double date2,
+             double ebpv[2][3], double ehp[3],
+             double x, double y, double s, double theta,
+             double elong, double phi, double hm,
+             double xp, double yp, double sp,
+             double refa, double refb,
+             eraASTROM *astrom);
+int eraApco13(double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              eraASTROM *astrom, double *eo);
+void eraApcs(double date1, double date2, double pv[2][3],
+             double ebpv[2][3], double ehp[3],
+             eraASTROM *astrom);
+void eraApcs13(double date1, double date2, double pv[2][3],
+               eraASTROM *astrom);
+void eraAper(double theta, eraASTROM *astrom);
+void eraAper13(double ut11, double ut12, eraASTROM *astrom);
+void eraApio(double sp, double theta,
+             double elong, double phi, double hm, double xp, double yp,
+             double refa, double refb,
+             eraASTROM *astrom);
+int eraApio13(double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              eraASTROM *astrom);
+void eraAtci13(double rc, double dc,
+               double pr, double pd, double px, double rv,
+               double date1, double date2,
+               double *ri, double *di, double *eo);
+void eraAtciq(double rc, double dc, double pr, double pd,
+              double px, double rv, eraASTROM *astrom,
+              double *ri, double *di);
+void eraAtciqn(double rc, double dc, double pr, double pd,
+               double px, double rv, eraASTROM *astrom,
+               int n, eraLDBODY b[], double *ri, double *di);
+void eraAtciqz(double rc, double dc, eraASTROM *astrom,
+               double *ri, double *di);
+int eraAtco13(double rc, double dc,
+              double pr, double pd, double px, double rv,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob, double *eo);
+void eraAtic13(double ri, double di,
+               double date1, double date2,
+               double *rc, double *dc, double *eo);
+void eraAticq(double ri, double di, eraASTROM *astrom,
+              double *rc, double *dc);
+void eraAticqn(double ri, double di, eraASTROM *astrom,
+               int n, eraLDBODY b[], double *rc, double *dc);
+int eraAtio13(double ri, double di,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob);
+void eraAtioq(double ri, double di, eraASTROM *astrom,
+              double *aob, double *zob,
+              double *hob, double *dob, double *rob);
+int eraAtoc13(const char *type, double ob1, double ob2,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *rc, double *dc);
+int eraAtoi13(const char *type, double ob1, double ob2,
+              double utc1, double utc2, double dut1,
+              double elong, double phi, double hm, double xp, double yp,
+              double phpa, double tc, double rh, double wl,
+              double *ri, double *di);
+void eraAtoiq(const char *type,
+              double ob1, double ob2, eraASTROM *astrom,
+              double *ri, double *di);
+void eraLd(double bm, double p[3], double q[3], double e[3],
+           double em, double dlim, double p1[3]);
+void eraLdn(int n, eraLDBODY b[], double ob[3], double sc[3],
+            double sn[3]);
+void eraLdsun(double p[3], double e[3], double em, double p1[3]);
+void eraPmpx(double rc, double dc, double pr, double pd,
+             double px, double rv, double pmt, double pob[3],
+             double pco[3]);
+int eraPmsafe(double ra1, double dec1, double pmr1, double pmd1,
+              double px1, double rv1,
+              double ep1a, double ep1b, double ep2a, double ep2b,
+              double *ra2, double *dec2, double *pmr2, double *pmd2,
+              double *px2, double *rv2);
+void eraPvtob(double elong, double phi, double height, double xp,
+              double yp, double sp, double theta, double pv[2][3]);
+void eraRefco(double phpa, double tc, double rh, double wl,
+              double *refa, double *refb);
+
+/* Astronomy/Ephemerides */
+int eraEpv00(double date1, double date2,
+             double pvh[2][3], double pvb[2][3]);
+int eraPlan94(double date1, double date2, int np, double pv[2][3]);
+
+/* Astronomy/FundamentalArgs */
+double eraFad03(double t);
+double eraFae03(double t);
+double eraFaf03(double t);
+double eraFaju03(double t);
+double eraFal03(double t);
+double eraFalp03(double t);
+double eraFama03(double t);
+double eraFame03(double t);
+double eraFane03(double t);
+double eraFaom03(double t);
+double eraFapa03(double t);
+double eraFasa03(double t);
+double eraFaur03(double t);
+double eraFave03(double t);
+
+/* Astronomy/PrecNutPolar */
+void eraBi00(double *dpsibi, double *depsbi, double *dra);
+void eraBp00(double date1, double date2,
+             double rb[3][3], double rp[3][3], double rbp[3][3]);
+void eraBp06(double date1, double date2,
+             double rb[3][3], double rp[3][3], double rbp[3][3]);
+void eraBpn2xy(double rbpn[3][3], double *x, double *y);
+void eraC2i00a(double date1, double date2, double rc2i[3][3]);
+void eraC2i00b(double date1, double date2, double rc2i[3][3]);
+void eraC2i06a(double date1, double date2, double rc2i[3][3]);
+void eraC2ibpn(double date1, double date2, double rbpn[3][3],
+               double rc2i[3][3]);
+void eraC2ixy(double date1, double date2, double x, double y,
+              double rc2i[3][3]);
+void eraC2ixys(double x, double y, double s, double rc2i[3][3]);
+void eraC2t00a(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3]);
+void eraC2t00b(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3]);
+void eraC2t06a(double tta, double ttb, double uta, double utb,
+               double xp, double yp, double rc2t[3][3]);
+void eraC2tcio(double rc2i[3][3], double era, double rpom[3][3],
+               double rc2t[3][3]);
+void eraC2teqx(double rbpn[3][3], double gst, double rpom[3][3],
+               double rc2t[3][3]);
+void eraC2tpe(double tta, double ttb, double uta, double utb,
+              double dpsi, double deps, double xp, double yp,
+              double rc2t[3][3]);
+void eraC2txy(double tta, double ttb, double uta, double utb,
+              double x, double y, double xp, double yp,
+              double rc2t[3][3]);
+double eraEo06a(double date1, double date2);
+double eraEors(double rnpb[3][3], double s);
+void eraFw2m(double gamb, double phib, double psi, double eps,
+             double r[3][3]);
+void eraFw2xy(double gamb, double phib, double psi, double eps,
+              double *x, double *y);
+void eraLtp(double epj, double rp[3][3]);
+void eraLtpb(double epj, double rpb[3][3]);
+void eraLtpecl(double epj, double vec[3]);
+void eraLtpequ(double epj, double veq[3]);
+void eraNum00a(double date1, double date2, double rmatn[3][3]);
+void eraNum00b(double date1, double date2, double rmatn[3][3]);
+void eraNum06a(double date1, double date2, double rmatn[3][3]);
+void eraNumat(double epsa, double dpsi, double deps, double rmatn[3][3]);
+void eraNut00a(double date1, double date2, double *dpsi, double *deps);
+void eraNut00b(double date1, double date2, double *dpsi, double *deps);
+void eraNut06a(double date1, double date2, double *dpsi, double *deps);
+void eraNut80(double date1, double date2, double *dpsi, double *deps);
+void eraNutm80(double date1, double date2, double rmatn[3][3]);
+double eraObl06(double date1, double date2);
+double eraObl80(double date1, double date2);
+void eraP06e(double date1, double date2,
+             double *eps0, double *psia, double *oma, double *bpa,
+             double *bqa, double *pia, double *bpia,
+             double *epsa, double *chia, double *za, double *zetaa,
+             double *thetaa, double *pa,
+             double *gam, double *phi, double *psi);
+void eraPb06(double date1, double date2,
+             double *bzeta, double *bz, double *btheta);
+void eraPfw06(double date1, double date2,
+              double *gamb, double *phib, double *psib, double *epsa);
+void eraPmat00(double date1, double date2, double rbp[3][3]);
+void eraPmat06(double date1, double date2, double rbp[3][3]);
+void eraPmat76(double date1, double date2, double rmatp[3][3]);
+void eraPn00(double date1, double date2, double dpsi, double deps,
+             double *epsa,
+             double rb[3][3], double rp[3][3], double rbp[3][3],
+             double rn[3][3], double rbpn[3][3]);
+void eraPn00a(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3]);
+void eraPn00b(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3]);
+void eraPn06(double date1, double date2, double dpsi, double deps,
+             double *epsa,
+             double rb[3][3], double rp[3][3], double rbp[3][3],
+             double rn[3][3], double rbpn[3][3]);
+void eraPn06a(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3]);
+void eraPnm00a(double date1, double date2, double rbpn[3][3]);
+void eraPnm00b(double date1, double date2, double rbpn[3][3]);
+void eraPnm06a(double date1, double date2, double rnpb[3][3]);
+void eraPnm80(double date1, double date2, double rmatpn[3][3]);
+void eraPom00(double xp, double yp, double sp, double rpom[3][3]);
+void eraPr00(double date1, double date2,
+             double *dpsipr, double *depspr);
+void eraPrec76(double date01, double date02,
+               double date11, double date12,
+               double *zeta, double *z, double *theta);
+double eraS00(double date1, double date2, double x, double y);
+double eraS00a(double date1, double date2);
+double eraS00b(double date1, double date2);
+double eraS06(double date1, double date2, double x, double y);
+double eraS06a(double date1, double date2);
+double eraSp00(double date1, double date2);
+void eraXy06(double date1, double date2, double *x, double *y);
+void eraXys00a(double date1, double date2,
+               double *x, double *y, double *s);
+void eraXys00b(double date1, double date2,
+               double *x, double *y, double *s);
+void eraXys06a(double date1, double date2,
+               double *x, double *y, double *s);
+
+/* Astronomy/RotationAndTime */
+double eraEe00(double date1, double date2, double epsa, double dpsi);
+double eraEe00a(double date1, double date2);
+double eraEe00b(double date1, double date2);
+double eraEe06a(double date1, double date2);
+double eraEect00(double date1, double date2);
+double eraEqeq94(double date1, double date2);
+double eraEra00(double dj1, double dj2);
+double eraGmst00(double uta, double utb, double tta, double ttb);
+double eraGmst06(double uta, double utb, double tta, double ttb);
+double eraGmst82(double dj1, double dj2);
+double eraGst00a(double uta, double utb, double tta, double ttb);
+double eraGst00b(double uta, double utb);
+double eraGst06(double uta, double utb, double tta, double ttb,
+                double rnpb[3][3]);
+double eraGst06a(double uta, double utb, double tta, double ttb);
+double eraGst94(double uta, double utb);
+
+/* Astronomy/SpaceMotion */
+int eraPvstar(double pv[2][3], double *ra, double *dec,
+              double *pmr, double *pmd, double *px, double *rv);
+int eraStarpv(double ra, double dec,
+              double pmr, double pmd, double px, double rv,
+              double pv[2][3]);
+
+/* Astronomy/StarCatalogs */
+void eraFk52h(double r5, double d5,
+              double dr5, double dd5, double px5, double rv5,
+              double *rh, double *dh,
+              double *drh, double *ddh, double *pxh, double *rvh);
+void eraFk5hip(double r5h[3][3], double s5h[3]);
+void eraFk5hz(double r5, double d5, double date1, double date2,
+              double *rh, double *dh);
+void eraH2fk5(double rh, double dh,
+              double drh, double ddh, double pxh, double rvh,
+              double *r5, double *d5,
+              double *dr5, double *dd5, double *px5, double *rv5);
+void eraHfk5z(double rh, double dh, double date1, double date2,
+              double *r5, double *d5, double *dr5, double *dd5);
+int eraStarpm(double ra1, double dec1,
+              double pmr1, double pmd1, double px1, double rv1,
+              double ep1a, double ep1b, double ep2a, double ep2b,
+              double *ra2, double *dec2,
+              double *pmr2, double *pmd2, double *px2, double *rv2);
+
+/* Astronomy/EclipticCoordinates */
+void eraEceq06(double date1, double date2, double dl, double db,
+               double *dr, double *dd);
+void eraEcm06(double date1, double date2, double rm[3][3]);
+void eraEqec06(double date1, double date2, double dr, double dd,
+               double *dl, double *db);
+void eraLteceq(double epj, double dl, double db, double *dr, double *dd);
+void eraLtecm(double epj, double rm[3][3]);
+void eraLteqec(double epj, double dr, double dd, double *dl, double *db);
+
+/* Astronomy/GalacticCoordinates */
+void eraG2icrs(double dl, double db, double *dr, double *dd);
+void eraIcrs2g(double dr, double dd, double *dl, double *db);
+
+/* Astronomy/GeodeticGeocentric */
+int eraEform(int n, double *a, double *f);
+int eraGc2gd(int n, double xyz[3],
+             double *elong, double *phi, double *height);
+int eraGc2gde(double a, double f, double xyz[3],
+              double *elong, double *phi, double *height);
+int eraGd2gc(int n, double elong, double phi, double height,
+             double xyz[3]);
+int eraGd2gce(double a, double f,
+              double elong, double phi, double height, double xyz[3]);
+
+/* Astronomy/Timescales */
+int eraD2dtf(const char *scale, int ndp, double d1, double d2,
+             int *iy, int *im, int *id, int ihmsf[4]);
+int eraDat(int iy, int im, int id, double fd, double *deltat);
+double eraDtdb(double date1, double date2,
+               double ut, double elong, double u, double v);
+int eraDtf2d(const char *scale, int iy, int im, int id,
+             int ihr, int imn, double sec, double *d1, double *d2);
+int eraTaitt(double tai1, double tai2, double *tt1, double *tt2);
+int eraTaiut1(double tai1, double tai2, double dta,
+              double *ut11, double *ut12);
+int eraTaiutc(double tai1, double tai2, double *utc1, double *utc2);
+int eraTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2);
+int eraTcgtt(double tcg1, double tcg2, double *tt1, double *tt2);
+int eraTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2);
+int eraTdbtt(double tdb1, double tdb2, double dtr,
+             double *tt1, double *tt2);
+int eraTttai(double tt1, double tt2, double *tai1, double *tai2);
+int eraTttcg(double tt1, double tt2, double *tcg1, double *tcg2);
+int eraTttdb(double tt1, double tt2, double dtr,
+             double *tdb1, double *tdb2);
+int eraTtut1(double tt1, double tt2, double dt,
+             double *ut11, double *ut12);
+int eraUt1tai(double ut11, double ut12, double dta,
+              double *tai1, double *tai2);
+int eraUt1tt(double ut11, double ut12, double dt,
+             double *tt1, double *tt2);
+int eraUt1utc(double ut11, double ut12, double dut1,
+              double *utc1, double *utc2);
+int eraUtctai(double utc1, double utc2, double *tai1, double *tai2);
+int eraUtcut1(double utc1, double utc2, double dut1,
+              double *ut11, double *ut12);
+
+/* VectorMatrix/AngleOps */
+void eraA2af(int ndp, double angle, char *sign, int idmsf[4]);
+void eraA2tf(int ndp, double angle, char *sign, int ihmsf[4]);
+int eraAf2a(char s, int ideg, int iamin, double asec, double *rad);
+double eraAnp(double a);
+double eraAnpm(double a);
+void eraD2tf(int ndp, double days, char *sign, int ihmsf[4]);
+int eraTf2a(char s, int ihour, int imin, double sec, double *rad);
+int eraTf2d(char s, int ihour, int imin, double sec, double *days);
+
+/* VectorMatrix/BuildRotations */
+void eraRx(double phi, double r[3][3]);
+void eraRy(double theta, double r[3][3]);
+void eraRz(double psi, double r[3][3]);
+
+/* VectorMatrix/CopyExtendExtract */
+void eraCp(double p[3], double c[3]);
+void eraCpv(double pv[2][3], double c[2][3]);
+void eraCr(double r[3][3], double c[3][3]);
+void eraP2pv(double p[3], double pv[2][3]);
+void eraPv2p(double pv[2][3], double p[3]);
+
+/* VectorMatrix/Initialization */
+void eraIr(double r[3][3]);
+void eraZp(double p[3]);
+void eraZpv(double pv[2][3]);
+void eraZr(double r[3][3]);
+
+/* VectorMatrix/MatrixOps */
+void eraRxr(double a[3][3], double b[3][3], double atb[3][3]);
+void eraTr(double r[3][3], double rt[3][3]);
+
+/* VectorMatrix/MatrixVectorProducts */
+void eraRxp(double r[3][3], double p[3], double rp[3]);
+void eraRxpv(double r[3][3], double pv[2][3], double rpv[2][3]);
+void eraTrxp(double r[3][3], double p[3], double trp[3]);
+void eraTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]);
+
+/* VectorMatrix/RotationVectors */
+void eraRm2v(double r[3][3], double w[3]);
+void eraRv2m(double w[3], double r[3][3]);
+
+/* VectorMatrix/SeparationAndAngle */
+double eraPap(double a[3], double b[3]);
+double eraPas(double al, double ap, double bl, double bp);
+double eraSepp(double a[3], double b[3]);
+double eraSeps(double al, double ap, double bl, double bp);
+
+/* VectorMatrix/SphericalCartesian */
+void eraC2s(double p[3], double *theta, double *phi);
+void eraP2s(double p[3], double *theta, double *phi, double *r);
+void eraPv2s(double pv[2][3],
+             double *theta, double *phi, double *r,
+             double *td, double *pd, double *rd);
+void eraS2c(double theta, double phi, double c[3]);
+void eraS2p(double theta, double phi, double r, double p[3]);
+void eraS2pv(double theta, double phi, double r,
+             double td, double pd, double rd,
+             double pv[2][3]);
+
+/* VectorMatrix/VectorOps */
+double eraPdp(double a[3], double b[3]);
+double eraPm(double p[3]);
+void eraPmp(double a[3], double b[3], double amb[3]);
+void eraPn(double p[3], double *r, double u[3]);
+void eraPpp(double a[3], double b[3], double apb[3]);
+void eraPpsp(double a[3], double s, double b[3], double apsb[3]);
+void eraPvdpv(double a[2][3], double b[2][3], double adb[2]);
+void eraPvm(double pv[2][3], double *r, double *s);
+void eraPvmpv(double a[2][3], double b[2][3], double amb[2][3]);
+void eraPvppv(double a[2][3], double b[2][3], double apb[2][3]);
+void eraPvu(double dt, double pv[2][3], double upv[2][3]);
+void eraPvup(double dt, double pv[2][3], double p[3]);
+void eraPvxpv(double a[2][3], double b[2][3], double axb[2][3]);
+void eraPxp(double a[3], double b[3], double axb[3]);
+void eraS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]);
+void eraSxp(double s, double p[3], double sp[3]);
+void eraSxpv(double s, double pv[2][3], double spv[2][3]);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/erfam.h
===================================================================
--- branches/FACT++_part_filenames/erfa/src/erfam.h	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/erfam.h	(revision 18732)
@@ -0,0 +1,208 @@
+#ifndef ERFAMHDEF
+#define ERFAMHDEF
+
+/*
+**  - - - - - - - -
+**   e r f a m . h
+**  - - - - - - - -
+**
+**  Macros used by ERFA library.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+
+/* Star-independent astrometry parameters */
+typedef struct {
+   double pmt;        /* PM time interval (SSB, Julian years) */
+   double eb[3];      /* SSB to observer (vector, au) */
+   double eh[3];      /* Sun to observer (unit vector) */
+   double em;         /* distance from Sun to observer (au) */
+   double v[3];       /* barycentric observer velocity (vector, c) */
+   double bm1;        /* sqrt(1-|v|^2): reciprocal of Lorenz factor */
+   double bpn[3][3];  /* bias-precession-nutation matrix */
+   double along;      /* longitude + s' + dERA(DUT) (radians) */
+   double phi;        /* geodetic latitude (radians) */
+   double xpl;        /* polar motion xp wrt local meridian (radians) */
+   double ypl;        /* polar motion yp wrt local meridian (radians) */
+   double sphi;       /* sine of geodetic latitude */
+   double cphi;       /* cosine of geodetic latitude */
+   double diurab;     /* magnitude of diurnal aberration vector */
+   double eral;       /* "local" Earth rotation angle (radians) */
+   double refa;       /* refraction constant A (radians) */
+   double refb;       /* refraction constant B (radians) */
+} eraASTROM;
+/* (Vectors eb, eh, em and v are all with respect to BCRS axes.) */
+
+/* Body parameters for light deflection */
+typedef struct {
+   double bm;         /* mass of the body (solar masses) */
+   double dl;         /* deflection limiter (radians^2/2) */
+   double pv[2][3];   /* barycentric PV of the body (au, au/day) */
+} eraLDBODY;
+
+/* Pi */
+#define ERFA_DPI (3.141592653589793238462643)
+
+/* 2Pi */
+#define ERFA_D2PI (6.283185307179586476925287)
+
+/* Radians to degrees */
+#define ERFA_DR2D (57.29577951308232087679815)
+
+/* Degrees to radians */
+#define ERFA_DD2R (1.745329251994329576923691e-2)
+
+/* Radians to arcseconds */
+#define ERFA_DR2AS (206264.8062470963551564734)
+
+/* Arcseconds to radians */
+#define ERFA_DAS2R (4.848136811095359935899141e-6)
+
+/* Seconds of time to radians */
+#define ERFA_DS2R (7.272205216643039903848712e-5)
+
+/* Arcseconds in a full circle */
+#define ERFA_TURNAS (1296000.0)
+
+/* Milliarcseconds to radians */
+#define ERFA_DMAS2R (ERFA_DAS2R / 1e3)
+
+/* Length of tropical year B1900 (days) */
+#define ERFA_DTY (365.242198781)
+
+/* Seconds per day. */
+#define ERFA_DAYSEC (86400.0)
+
+/* Days per Julian year */
+#define ERFA_DJY (365.25)
+
+/* Days per Julian century */
+#define ERFA_DJC (36525.0)
+
+/* Days per Julian millennium */
+#define ERFA_DJM (365250.0)
+
+/* Reference epoch (J2000.0), Julian Date */
+#define ERFA_DJ00 (2451545.0)
+
+/* Julian Date of Modified Julian Date zero */
+#define ERFA_DJM0 (2400000.5)
+
+/* Reference epoch (J2000.0), Modified Julian Date */
+#define ERFA_DJM00 (51544.5)
+
+/* 1977 Jan 1.0 as MJD */
+#define ERFA_DJM77 (43144.0)
+
+/* TT minus TAI (s) */
+#define ERFA_TTMTAI (32.184)
+
+/* Astronomical unit (m) */
+#define ERFA_DAU (149597870e3)
+
+/* Speed of light (m/s) */
+#define ERFA_CMPS 299792458.0
+
+/* Light time for 1 au (s) */
+#define ERFA_AULT 499.004782
+
+/* Speed of light (AU per day) */
+#define ERFA_DC (ERFA_DAYSEC / ERFA_AULT)
+
+/* L_G = 1 - d(TT)/d(TCG) */
+#define ERFA_ELG (6.969290134e-10)
+
+/* L_B = 1 - d(TDB)/d(TCB), and TDB (s) at TAI 1977/1/1.0 */
+#define ERFA_ELB (1.550519768e-8)
+#define ERFA_TDB0 (-6.55e-5)
+
+/* Schwarzschild radius of the Sun (au) */
+/* = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11 */
+#define ERFA_SRS 1.97412574336e-8
+
+/* ERFA_DINT(A) - truncate to nearest whole number towards zero (double) */
+#define ERFA_DINT(A) ((A)<0.0?ceil(A):floor(A))
+
+/* ERFA_DNINT(A) - round to nearest whole number (double) */
+#define ERFA_DNINT(A) ((A)<0.0?ceil((A)-0.5):floor((A)+0.5))
+
+/* ERFA_DSIGN(A,B) - magnitude of A with sign of B (double) */
+#define ERFA_DSIGN(A,B) ((B)<0.0?-fabs(A):fabs(A))
+
+/* max(A,B) - larger (most +ve) of two numbers (generic) */
+#define ERFA_GMAX(A,B) (((A)>(B))?(A):(B))
+
+/* min(A,B) - smaller (least +ve) of two numbers (generic) */
+#define ERFA_GMIN(A,B) (((A)<(B))?(A):(B))
+
+/* Reference ellipsoids */
+#define ERFA_WGS84 1
+#define ERFA_GRS80 2
+#define ERFA_WGS72 3
+
+#endif
+
+
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fad03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fad03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fad03.c	(revision 18732)
@@ -0,0 +1,112 @@
+#include "erfa.h"
+
+double eraFad03(double t)
+/*
+**  - - - - - - - - -
+**   e r a F a d 0 3
+**  - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean elongation of the Moon from the Sun.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    D, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean elongation of the Moon from the Sun (IERS Conventions 2003). */
+   a = fmod(          1072260.703692 +
+             t * ( 1602961601.2090 +
+             t * (        - 6.3706 +
+             t * (          0.006593 +
+             t * (        - 0.00003169 ) ) ) ), ERFA_TURNAS ) * ERFA_DAS2R;
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fae03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fae03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fae03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFae03(double t)
+/*
+**  - - - - - - - - -
+**   e r a F a e 0 3
+**  - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Earth.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Earth, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Earth (IERS Conventions 2003). */
+   a = fmod(1.753470314 + 628.3075849991 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/faf03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/faf03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/faf03.c	(revision 18732)
@@ -0,0 +1,115 @@
+#include "erfa.h"
+
+double eraFaf03(double t)
+/*
+**  - - - - - - - - -
+**   e r a F a f 0 3
+**  - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of the Moon minus mean longitude of the ascending
+**  node.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    F, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of the Moon minus that of the ascending node */
+/* (IERS Conventions 2003).                                    */
+   a = fmod(           335779.526232 +
+             t * ( 1739527262.8478 +
+             t * (       - 12.7512 +
+             t * (        - 0.001037 +
+             t * (          0.00000417 ) ) ) ), ERFA_TURNAS ) * ERFA_DAS2R;
+
+   return a;
+
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/faju03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/faju03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/faju03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFaju03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a j u 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Jupiter.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Jupiter, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Jupiter (IERS Conventions 2003). */
+   a = fmod(0.599546497 + 52.9690962641 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fal03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fal03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fal03.c	(revision 18732)
@@ -0,0 +1,112 @@
+#include "erfa.h"
+
+double eraFal03(double t)
+/*
+**  - - - - - - - - -
+**   e r a F a l 0 3
+**  - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean anomaly of the Moon.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    l, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean anomaly of the Moon (IERS Conventions 2003). */
+   a = fmod(           485868.249036  +
+             t * ( 1717915923.2178 +
+             t * (         31.8792 +
+             t * (          0.051635 +
+             t * (        - 0.00024470 ) ) ) ), ERFA_TURNAS ) * ERFA_DAS2R;
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/falp03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/falp03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/falp03.c	(revision 18732)
@@ -0,0 +1,112 @@
+#include "erfa.h"
+
+double eraFalp03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a l p 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean anomaly of the Sun.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    l', radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean anomaly of the Sun (IERS Conventions 2003). */
+   a = fmod(         1287104.793048 +
+             t * ( 129596581.0481 +
+             t * (       - 0.5532 +
+             t * (         0.000136 +
+             t * (       - 0.00001149 ) ) ) ), ERFA_TURNAS ) * ERFA_DAS2R;
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fama03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fama03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fama03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFama03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a m a 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Mars.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Mars, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Mars (IERS Conventions 2003). */
+   a = fmod(6.203480913 + 334.0612426700 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fame03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fame03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fame03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFame03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a m e 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Mercury.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Mercury, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Mercury (IERS Conventions 2003). */
+   a = fmod(4.402608842 + 2608.7903141574 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fane03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fane03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fane03.c	(revision 18732)
@@ -0,0 +1,108 @@
+#include "erfa.h"
+
+double eraFane03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a n e 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Neptune.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Neptune, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is adapted from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Neptune (IERS Conventions 2003). */
+   a = fmod(5.311886287 + 3.8133035638 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/faom03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/faom03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/faom03.c	(revision 18732)
@@ -0,0 +1,113 @@
+#include "erfa.h"
+
+double eraFaom03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a o m 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of the Moon's ascending node.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    Omega, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of the Moon's ascending node */
+/* (IERS Conventions 2003).                    */
+   a = fmod(          450160.398036 +
+             t * ( - 6962890.5431 +
+             t * (         7.4722 +
+             t * (         0.007702 +
+             t * (       - 0.00005939 ) ) ) ), ERFA_TURNAS ) * ERFA_DAS2R;
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fapa03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fapa03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fapa03.c	(revision 18732)
@@ -0,0 +1,112 @@
+#include "erfa.h"
+
+double eraFapa03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a p a 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  general accumulated precession in longitude.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    general precession in longitude, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003).  It
+**     is taken from Kinoshita & Souchay (1990) and comes originally
+**     from Lieske et al. (1977).
+**
+**  References:
+**
+**     Kinoshita, H. and Souchay J. 1990, Celest.Mech. and Dyn.Astron.
+**     48, 187
+**
+**     Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
+**     Astron.Astrophys. 58, 1-16
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* General accumulated precession in longitude. */
+   a = (0.024381750 + 0.00000538691 * t) * t;
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fasa03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fasa03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fasa03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFasa03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a s a 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Saturn.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Saturn, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Saturn (IERS Conventions 2003). */
+   a = fmod(0.874016757 + 21.3299104960 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/faur03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/faur03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/faur03.c	(revision 18732)
@@ -0,0 +1,108 @@
+#include "erfa.h"
+
+double eraFaur03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a u r 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Uranus.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned  (function value):
+**           double    mean longitude of Uranus, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     is adapted from Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Uranus (IERS Conventions 2003). */
+   a = fmod(5.481293872 + 7.4781598567 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fave03.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fave03.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fave03.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+double eraFave03(double t)
+/*
+**  - - - - - - - - - -
+**   e r a F a v e 0 3
+**  - - - - - - - - - -
+**
+**  Fundamental argument, IERS Conventions (2003):
+**  mean longitude of Venus.
+**
+**  Given:
+**     t     double    TDB, Julian centuries since J2000.0 (Note 1)
+**
+**  Returned (function value):
+**           double    mean longitude of Venus, radians (Note 2)
+**
+**  Notes:
+**
+**  1) Though t is strictly TDB, it is usually more convenient to use
+**     TT, which makes no significant difference.
+**
+**  2) The expression used is as adopted in IERS Conventions (2003) and
+**     comes from Souchay et al. (1999) after Simon et al. (1994).
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double a;
+
+
+/* Mean longitude of Venus (IERS Conventions 2003). */
+   a = fmod(3.176146697 + 1021.3285546211 * t, ERFA_D2PI);
+
+   return a;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fk52h.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fk52h.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fk52h.c	(revision 18732)
@@ -0,0 +1,152 @@
+#include "erfa.h"
+
+void eraFk52h(double r5, double d5,
+              double dr5, double dd5, double px5, double rv5,
+              double *rh, double *dh,
+              double *drh, double *ddh, double *pxh, double *rvh)
+/*
+**  - - - - - - - - -
+**   e r a F k 5 2 h
+**  - - - - - - - - -
+**
+**  Transform FK5 (J2000.0) star data into the Hipparcos system.
+**
+**  Given (all FK5, equinox J2000.0, epoch J2000.0):
+**     r5      double    RA (radians)
+**     d5      double    Dec (radians)
+**     dr5     double    proper motion in RA (dRA/dt, rad/Jyear)
+**     dd5     double    proper motion in Dec (dDec/dt, rad/Jyear)
+**     px5     double    parallax (arcsec)
+**     rv5     double    radial velocity (km/s, positive = receding)
+**
+**  Returned (all Hipparcos, epoch J2000.0):
+**     rh      double    RA (radians)
+**     dh      double    Dec (radians)
+**     drh     double    proper motion in RA (dRA/dt, rad/Jyear)
+**     ddh     double    proper motion in Dec (dDec/dt, rad/Jyear)
+**     pxh     double    parallax (arcsec)
+**     rvh     double    radial velocity (km/s, positive = receding)
+**
+**  Notes:
+**
+**  1) This function transforms FK5 star positions and proper motions
+**     into the system of the Hipparcos catalog.
+**
+**  2) The proper motions in RA are dRA/dt rather than
+**     cos(Dec)*dRA/dt, and are per year rather than per century.
+**
+**  3) The FK5 to Hipparcos transformation is modeled as a pure
+**     rotation and spin;  zonal errors in the FK5 catalog are not
+**     taken into account.
+**
+**  4) See also eraH2fk5, eraFk5hz, eraHfk5z.
+**
+**  Called:
+**     eraStarpv    star catalog data to space motion pv-vector
+**     eraFk5hip    FK5 to Hipparcos rotation and spin
+**     eraRxp       product of r-matrix and p-vector
+**     eraPxp       vector product of two p-vectors
+**     eraPpp       p-vector plus p-vector
+**     eraPvstar    space motion pv-vector to star catalog data
+**
+**  Reference:
+**
+**     F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i;
+   double pv5[2][3], r5h[3][3], s5h[3], wxp[3], vv[3], pvh[2][3];
+
+
+/* FK5 barycentric position/velocity pv-vector (normalized). */
+   eraStarpv(r5, d5, dr5, dd5, px5, rv5, pv5);
+
+/* FK5 to Hipparcos orientation matrix and spin vector. */
+   eraFk5hip(r5h, s5h);
+
+/* Make spin units per day instead of per year. */
+   for ( i = 0; i < 3; s5h[i++] /= 365.25 );
+
+/* Orient the FK5 position into the Hipparcos system. */
+   eraRxp(r5h, pv5[0], pvh[0]);
+
+/* Apply spin to the position giving an extra space motion component. */
+   eraPxp(pv5[0], s5h, wxp);
+
+/* Add this component to the FK5 space motion. */
+   eraPpp(wxp, pv5[1], vv);
+
+/* Orient the FK5 space motion into the Hipparcos system. */
+   eraRxp(r5h, vv, pvh[1]);
+
+/* Hipparcos pv-vector to spherical. */
+   eraPvstar(pvh, rh, dh, drh, ddh, pxh, rvh);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fk5hip.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fk5hip.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fk5hip.c	(revision 18732)
@@ -0,0 +1,135 @@
+#include "erfa.h"
+
+void eraFk5hip(double r5h[3][3], double s5h[3])
+/*
+**  - - - - - - - - - -
+**   e r a F k 5 h i p
+**  - - - - - - - - - -
+**
+**  FK5 to Hipparcos rotation and spin.
+**
+**  Returned:
+**     r5h   double[3][3]  r-matrix: FK5 rotation wrt Hipparcos (Note 2)
+**     s5h   double[3]     r-vector: FK5 spin wrt Hipparcos (Note 3)
+**
+**  Notes:
+**
+**  1) This function models the FK5 to Hipparcos transformation as a
+**     pure rotation and spin;  zonal errors in the FK5 catalogue are
+**     not taken into account.
+**
+**  2) The r-matrix r5h operates in the sense:
+**
+**           P_Hipparcos = r5h x P_FK5
+**
+**     where P_FK5 is a p-vector in the FK5 frame, and P_Hipparcos is
+**     the equivalent Hipparcos p-vector.
+**
+**  3) The r-vector s5h represents the time derivative of the FK5 to
+**     Hipparcos rotation.  The units are radians per year (Julian,
+**     TDB).
+**
+**  Called:
+**     eraRv2m      r-vector to r-matrix
+**
+**  Reference:
+**
+**     F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double v[3];
+
+/* FK5 wrt Hipparcos orientation and spin (radians, radians/year) */
+   double epx, epy, epz;
+   double omx, omy, omz;
+
+
+   epx = -19.9e-3 * ERFA_DAS2R;
+   epy =  -9.1e-3 * ERFA_DAS2R;
+   epz =  22.9e-3 * ERFA_DAS2R;
+
+   omx = -0.30e-3 * ERFA_DAS2R;
+   omy =  0.60e-3 * ERFA_DAS2R;
+   omz =  0.70e-3 * ERFA_DAS2R;
+
+/* FK5 to Hipparcos orientation expressed as an r-vector. */
+   v[0] = epx;
+   v[1] = epy;
+   v[2] = epz;
+
+/* Re-express as an r-matrix. */
+   eraRv2m(v, r5h);
+
+/* Hipparcos wrt FK5 spin expressed as an r-vector. */
+   s5h[0] = omx;
+   s5h[1] = omy;
+   s5h[2] = omz;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fk5hz.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fk5hz.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fk5hz.c	(revision 18732)
@@ -0,0 +1,169 @@
+#include "erfa.h"
+
+void eraFk5hz(double r5, double d5, double date1, double date2,
+              double *rh, double *dh)
+/*
+**  - - - - - - - - -
+**   e r a F k 5 h z
+**  - - - - - - - - -
+**
+**  Transform an FK5 (J2000.0) star position into the system of the
+**  Hipparcos catalogue, assuming zero Hipparcos proper motion.
+**
+**  Given:
+**     r5           double   FK5 RA (radians), equinox J2000.0, at date
+**     d5           double   FK5 Dec (radians), equinox J2000.0, at date
+**     date1,date2  double   TDB date (Notes 1,2)
+**
+**  Returned:
+**     rh           double   Hipparcos RA (radians)
+**     dh           double   Hipparcos Dec (radians)
+**
+**  Notes:
+**
+**  1) This function converts a star position from the FK5 system to
+**     the Hipparcos system, in such a way that the Hipparcos proper
+**     motion is zero.  Because such a star has, in general, a non-zero
+**     proper motion in the FK5 system, the function requires the date
+**     at which the position in the FK5 system was determined.
+**
+**  2) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  3) The FK5 to Hipparcos transformation is modeled as a pure
+**     rotation and spin;  zonal errors in the FK5 catalogue are not
+**     taken into account.
+**
+**  4) The position returned by this function is in the Hipparcos
+**     reference system but at date date1+date2.
+**
+**  5) See also eraFk52h, eraH2fk5, eraHfk5z.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraFk5hip    FK5 to Hipparcos rotation and spin
+**     eraSxp       multiply p-vector by scalar
+**     eraRv2m      r-vector to r-matrix
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraPxp       vector product of two p-vectors
+**     eraC2s       p-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Reference:
+**
+**     F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, p5e[3], r5h[3][3], s5h[3], vst[3], rst[3][3], p5[3],
+          ph[3], w;
+
+
+/* Interval from given date to fundamental epoch J2000.0 (JY). */
+   t = - ((date1 - ERFA_DJ00) + date2) / ERFA_DJY;
+
+/* FK5 barycentric position vector. */
+   eraS2c(r5, d5, p5e);
+
+/* FK5 to Hipparcos orientation matrix and spin vector. */
+   eraFk5hip(r5h, s5h);
+
+/* Accumulated Hipparcos wrt FK5 spin over that interval. */
+   eraSxp(t, s5h, vst);
+
+/* Express the accumulated spin as a rotation matrix. */
+   eraRv2m(vst, rst);
+
+/* Derotate the vector's FK5 axes back to date. */
+   eraTrxp(rst, p5e, p5);
+
+/* Rotate the vector into the Hipparcos system. */
+   eraRxp(r5h, p5, ph);
+
+/* Hipparcos vector to spherical. */
+   eraC2s(ph, &w, dh);
+   *rh = eraAnp(w);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fw2m.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fw2m.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fw2m.c	(revision 18732)
@@ -0,0 +1,143 @@
+#include "erfa.h"
+
+void eraFw2m(double gamb, double phib, double psi, double eps,
+             double r[3][3])
+/*
+**  - - - - - - - -
+**   e r a F w 2 m
+**  - - - - - - - -
+**
+**  Form rotation matrix given the Fukushima-Williams angles.
+**
+**  Given:
+**     gamb     double         F-W angle gamma_bar (radians)
+**     phib     double         F-W angle phi_bar (radians)
+**     psi      double         F-W angle psi (radians)
+**     eps      double         F-W angle epsilon (radians)
+**
+**  Returned:
+**     r        double[3][3]   rotation matrix
+**
+**  Notes:
+**
+**  1) Naming the following points:
+**
+**           e = J2000.0 ecliptic pole,
+**           p = GCRS pole,
+**           E = ecliptic pole of date,
+**     and   P = CIP,
+**
+**     the four Fukushima-Williams angles are as follows:
+**
+**        gamb = gamma = epE
+**        phib = phi = pE
+**        psi = psi = pEP
+**        eps = epsilon = EP
+**
+**  2) The matrix representing the combined effects of frame bias,
+**     precession and nutation is:
+**
+**        NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb)
+**
+**  3) Three different matrices can be constructed, depending on the
+**     supplied angles:
+**
+**     o  To obtain the nutation x precession x frame bias matrix,
+**        generate the four precession angles, generate the nutation
+**        components and add them to the psi_bar and epsilon_A angles,
+**        and call the present function.
+**
+**     o  To obtain the precession x frame bias matrix, generate the
+**        four precession angles and call the present function.
+**
+**     o  To obtain the frame bias matrix, generate the four precession
+**        angles for date J2000.0 and call the present function.
+**
+**     The nutation-only and precession-only matrices can if necessary
+**     be obtained by combining these three appropriately.
+**
+**  Called:
+**     eraIr        initialize r-matrix to identity
+**     eraRz        rotate around Z-axis
+**     eraRx        rotate around X-axis
+**
+**  Reference:
+**
+**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Construct the matrix. */
+   eraIr(r);
+   eraRz(gamb, r);
+   eraRx(phib, r);
+   eraRz(-psi, r);
+   eraRx(-eps, r);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/fw2xy.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/fw2xy.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/fw2xy.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+void eraFw2xy(double gamb, double phib, double psi, double eps,
+              double *x, double *y)
+/*
+**  - - - - - - - - -
+**   e r a F w 2 x y
+**  - - - - - - - - -
+**
+**  CIP X,Y given Fukushima-Williams bias-precession-nutation angles.
+**
+**  Given:
+**     gamb     double    F-W angle gamma_bar (radians)
+**     phib     double    F-W angle phi_bar (radians)
+**     psi      double    F-W angle psi (radians)
+**     eps      double    F-W angle epsilon (radians)
+**
+**  Returned:
+**     x,y      double    CIP unit vector X,Y
+**
+**  Notes:
+**
+**  1) Naming the following points:
+**
+**           e = J2000.0 ecliptic pole,
+**           p = GCRS pole
+**           E = ecliptic pole of date,
+**     and   P = CIP,
+**
+**     the four Fukushima-Williams angles are as follows:
+**
+**        gamb = gamma = epE
+**        phib = phi = pE
+**        psi = psi = pEP
+**        eps = epsilon = EP
+**
+**  2) The matrix representing the combined effects of frame bias,
+**     precession and nutation is:
+**
+**        NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb)
+**
+**     The returned values x,y are elements [2][0] and [2][1] of the
+**     matrix.  Near J2000.0, they are essentially angles in radians.
+**
+**  Called:
+**     eraFw2m      F-W angles to r-matrix
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**
+**  Reference:
+**
+**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r[3][3];
+
+
+/* Form NxPxB matrix. */
+   eraFw2m(gamb, phib, psi, eps, r);
+
+/* Extract CIP X,Y. */
+   eraBpn2xy(r, x, y);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/g2icrs.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/g2icrs.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/g2icrs.c	(revision 18732)
@@ -0,0 +1,170 @@
+#include "erfa.h"
+
+void eraG2icrs ( double dl, double db, double *dr, double *dd )
+/*
+**  - - - - - - - - - -
+**   e r a G 2 i c r s
+**  - - - - - - - - - -
+**
+**  Transformation from Galactic Coordinates to ICRS.
+**
+**  Given:
+**     dl     double      galactic longitude (radians)
+**     db     double      galactic latitude (radians)
+**
+**  Returned:
+**     dr     double      ICRS right ascension (radians)
+**     dd     double      ICRS declination (radians)
+**
+**  Notes:
+**
+**  1) The IAU 1958 system of Galactic coordinates was defined with
+**     respect to the now obsolete reference system FK4 B1950.0.  When
+**     interpreting the system in a modern context, several factors have
+**     to be taken into account:
+**
+**     . The inclusion in FK4 positions of the E-terms of aberration.
+**
+**     . The distortion of the FK4 proper motion system by differential
+**       Galactic rotation.
+**
+**     . The use of the B1950.0 equinox rather than the now-standard
+**       J2000.0.
+**
+**     . The frame bias between ICRS and the J2000.0 mean place system.
+**
+**     The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation
+**     matrix that transforms directly between ICRS and Galactic
+**     coordinates with the above factors taken into account.  The
+**     matrix is derived from three angles, namely the ICRS coordinates
+**     of the Galactic pole and the longitude of the ascending node of
+**     the galactic equator on the ICRS equator.  They are given in
+**     degrees to five decimal places and for canonical purposes are
+**     regarded as exact.  In the Hipparcos Catalogue the matrix
+**     elements are given to 10 decimal places (about 20 microarcsec).
+**     In the present ERFA function the matrix elements have been
+**     recomputed from the canonical three angles and are given to 30
+**     decimal places.
+**
+**  2) The inverse transformation is performed by the function eraIcrs2g.
+**
+**  Called:
+**     eraAnp       normalize angle into range 0 to 2pi
+**     eraAnpm      normalize angle into range +/- pi
+**     eraS2c       spherical coordinates to unit vector
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraC2s       p-vector to spherical
+**
+**  Reference:
+**     Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho
+**     catalogues.  Astrometric and photometric star catalogues
+**     derived from the ESA Hipparcos Space Astrometry Mission.  ESA
+**     Publications Division, Noordwijk, Netherlands.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double v1[3], v2[3];
+
+/*
+**  L2,B2 system of galactic coordinates in the form presented in the
+**  Hipparcos Catalogue.  In degrees:
+**
+**  P = 192.85948    right ascension of the Galactic north pole in ICRS
+**  Q =  27.12825    declination of the Galactic north pole in ICRS
+**  R =  32.93192    longitude of the ascending node of the Galactic
+**                   plane on the ICRS equator
+**
+**  ICRS to galactic rotation matrix, obtained by computing
+**  R_3(-R) R_1(pi/2-Q) R_3(pi/2+P) to the full precision shown:
+*/
+   double r[3][3] = { { -0.054875560416215368492398900454,
+                        -0.873437090234885048760383168409,
+                        -0.483835015548713226831774175116 },
+                      { +0.494109427875583673525222371358,
+                        -0.444829629960011178146614061616,
+                        +0.746982244497218890527388004556 },
+                      { -0.867666149019004701181616534570,
+                        -0.198076373431201528180486091412,
+                        +0.455983776175066922272100478348 } };
+
+
+/* Spherical to Cartesian. */
+   eraS2c(dl, db, v1);
+
+/* Galactic to ICRS. */
+   eraTrxp(r, v1, v2);
+
+/* Cartesian to spherical. */
+   eraC2s(v2, dr, dd);
+
+/* Express in conventional ranges. */
+   *dr = eraAnp(*dr);
+   *dd = eraAnpm(*dd);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gc2gd.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gc2gd.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gc2gd.c	(revision 18732)
@@ -0,0 +1,143 @@
+#include "erfa.h"
+
+int eraGc2gd ( int n, double xyz[3],
+               double *elong, double *phi, double *height )
+/*
+**  - - - - - - - - -
+**   e r a G c 2 g d
+**  - - - - - - - - -
+**
+**  Transform geocentric coordinates to geodetic using the specified
+**  reference ellipsoid.
+**
+**  Given:
+**     n       int        ellipsoid identifier (Note 1)
+**     xyz     double[3]  geocentric vector (Note 2)
+**
+**  Returned:
+**     elong   double     longitude (radians, east +ve, Note 3)
+**     phi     double     latitude (geodetic, radians, Note 3)
+**     height  double     height above ellipsoid (geodetic, Notes 2,3)
+**
+**  Returned (function value):
+**            int         status:  0 = OK
+**                                -1 = illegal identifier (Note 3)
+**                                -2 = internal error (Note 3)
+**
+**  Notes:
+**
+**  1) The identifier n is a number that specifies the choice of
+**     reference ellipsoid.  The following are supported:
+**
+**        n    ellipsoid
+**
+**        1     ERFA_WGS84
+**        2     ERFA_GRS80
+**        3     ERFA_WGS72
+**
+**     The n value has no significance outside the ERFA software.  For
+**     convenience, symbols ERFA_WGS84 etc. are defined in erfam.h.
+**
+**  2) The geocentric vector (xyz, given) and height (height, returned)
+**     are in meters.
+**
+**  3) An error status -1 means that the identifier n is illegal.  An
+**     error status -2 is theoretically impossible.  In all error cases,
+**     all three results are set to -1e9.
+**
+**  4) The inverse transformation is performed in the function eraGd2gc.
+**
+**  Called:
+**     eraEform     Earth reference ellipsoids
+**     eraGc2gde    geocentric to geodetic transformation, general
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   double a, f;
+
+
+/* Obtain reference ellipsoid parameters. */
+   j = eraEform ( n, &a, &f );
+
+/* If OK, transform x,y,z to longitude, geodetic latitude, height. */
+   if ( j == 0 ) {
+      j = eraGc2gde ( a, f, xyz, elong, phi, height );
+      if ( j < 0 ) j = -2;
+   }
+
+/* Deal with any errors. */
+   if ( j < 0 ) {
+      *elong = -1e9;
+      *phi = -1e9;
+      *height = -1e9;
+   }
+
+/* Return the status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gc2gde.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gc2gde.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gc2gde.c	(revision 18732)
@@ -0,0 +1,208 @@
+#include "erfa.h"
+
+int eraGc2gde ( double a, double f, double xyz[3],
+                double *elong, double *phi, double *height )
+/*
+**  - - - - - - - - - -
+**   e r a G c 2 g d e
+**  - - - - - - - - - -
+**
+**  Transform geocentric coordinates to geodetic for a reference
+**  ellipsoid of specified form.
+**
+**  Given:
+**     a       double     equatorial radius (Notes 2,4)
+**     f       double     flattening (Note 3)
+**     xyz     double[3]  geocentric vector (Note 4)
+**
+**  Returned:
+**     elong   double     longitude (radians, east +ve)
+**     phi     double     latitude (geodetic, radians)
+**     height  double     height above ellipsoid (geodetic, Note 4)
+**
+**  Returned (function value):
+**             int        status:  0 = OK
+**                                -1 = illegal f
+**                                -2 = illegal a
+**
+**  Notes:
+**
+**  1) This function is based on the GCONV2H Fortran subroutine by
+**     Toshio Fukushima (see reference).
+**
+**  2) The equatorial radius, a, can be in any units, but meters is
+**     the conventional choice.
+**
+**  3) The flattening, f, is (for the Earth) a value around 0.00335,
+**     i.e. around 1/298.
+**
+**  4) The equatorial radius, a, and the geocentric vector, xyz,
+**     must be given in the same units, and determine the units of
+**     the returned height, height.
+**
+**  5) If an error occurs (status < 0), elong, phi and height are
+**     unchanged.
+**
+**  6) The inverse transformation is performed in the function
+**     eraGd2gce.
+**
+**  7) The transformation for a standard ellipsoid (such as ERFA_WGS84) can
+**     more conveniently be performed by calling eraGc2gd, which uses a
+**     numerical code to identify the required A and F values.
+**
+**  Reference:
+**
+**     Fukushima, T., "Transformation from Cartesian to geodetic
+**     coordinates accelerated by Halley's method", J.Geodesy (2006)
+**     79: 689-693
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double aeps2, e2, e4t, ec2, ec, b, x, y, z, p2, absz, p, s0, pn, zc,
+                 c0, c02, c03, s02, s03, a02, a0, a03, d0, f0, b0, s1,
+                 cc, s12, cc2;
+
+
+/* ------------- */
+/* Preliminaries */
+/* ------------- */
+
+/* Validate ellipsoid parameters. */
+   if ( f < 0.0 || f >= 1.0 ) return -1;
+   if ( a <= 0.0 ) return -2;
+
+/* Functions of ellipsoid parameters (with further validation of f). */
+   aeps2 = a*a * 1e-32;
+   e2 = (2.0 - f) * f;
+   e4t = e2*e2 * 1.5;
+   ec2 = 1.0 - e2;
+   if ( ec2 <= 0.0 ) return -1;
+   ec = sqrt(ec2);
+   b = a * ec;
+
+/* Cartesian components. */
+   x = xyz[0];
+   y = xyz[1];
+   z = xyz[2];
+
+/* Distance from polar axis squared. */
+   p2 = x*x + y*y;
+
+/* Longitude. */
+   *elong = p2 > 0.0 ? atan2(y, x) : 0.0;
+
+/* Unsigned z-coordinate. */
+   absz = fabs(z);
+
+/* Proceed unless polar case. */
+   if ( p2 > aeps2 ) {
+
+   /* Distance from polar axis. */
+      p = sqrt(p2);
+
+   /* Normalization. */
+      s0 = absz / a;
+      pn = p / a;
+      zc = ec * s0;
+
+   /* Prepare Newton correction factors. */
+      c0 = ec * pn;
+      c02 = c0 * c0;
+      c03 = c02 * c0;
+      s02 = s0 * s0;
+      s03 = s02 * s0;
+      a02 = c02 + s02;
+      a0 = sqrt(a02);
+      a03 = a02 * a0;
+      d0 = zc*a03 + e2*s03;
+      f0 = pn*a03 - e2*c03;
+
+   /* Prepare Halley correction factor. */
+      b0 = e4t * s02 * c02 * pn * (a0 - ec);
+      s1 = d0*f0 - b0*s0;
+      cc = ec * (f0*f0 - b0*c0);
+
+   /* Evaluate latitude and height. */
+      *phi = atan(s1/cc);
+      s12 = s1 * s1;
+      cc2 = cc * cc;
+      *height = (p*cc + absz*s1 - a * sqrt(ec2*s12 + cc2)) /
+                                                        sqrt(s12 + cc2);
+   } else {
+
+   /* Exception: pole. */
+      *phi = ERFA_DPI / 2.0;
+      *height = absz - b;
+   }
+
+/* Restore sign of latitude. */
+   if ( z < 0 ) *phi = -*phi;
+
+/* OK status. */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gd2gc.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gd2gc.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gd2gc.c	(revision 18732)
@@ -0,0 +1,142 @@
+#include "erfa.h"
+
+int eraGd2gc ( int n, double elong, double phi, double height,
+               double xyz[3] )
+/*
+**  - - - - - - - - -
+**   e r a G d 2 g c
+**  - - - - - - - - -
+**
+**  Transform geodetic coordinates to geocentric using the specified
+**  reference ellipsoid.
+**
+**  Given:
+**     n       int        ellipsoid identifier (Note 1)
+**     elong   double     longitude (radians, east +ve)
+**     phi     double     latitude (geodetic, radians, Note 3)
+**     height  double     height above ellipsoid (geodetic, Notes 2,3)
+**
+**  Returned:
+**     xyz     double[3]  geocentric vector (Note 2)
+**
+**  Returned (function value):
+**             int        status:  0 = OK
+**                                -1 = illegal identifier (Note 3)
+**                                -2 = illegal case (Note 3)
+**
+**  Notes:
+**
+**  1) The identifier n is a number that specifies the choice of
+**     reference ellipsoid.  The following are supported:
+**
+**        n    ellipsoid
+**
+**        1     ERFA_WGS84
+**        2     ERFA_GRS80
+**        3     ERFA_WGS72
+**
+**     The n value has no significance outside the ERFA software.  For
+**     convenience, symbols ERFA_WGS84 etc. are defined in erfam.h.
+**
+**  2) The height (height, given) and the geocentric vector (xyz,
+**     returned) are in meters.
+**
+**  3) No validation is performed on the arguments elong, phi and
+**     height.  An error status -1 means that the identifier n is
+**     illegal.  An error status -2 protects against cases that would
+**     lead to arithmetic exceptions.  In all error cases, xyz is set
+**     to zeros.
+**
+**  4) The inverse transformation is performed in the function eraGc2gd.
+**
+**  Called:
+**     eraEform     Earth reference ellipsoids
+**     eraGd2gce    geodetic to geocentric transformation, general
+**     eraZp        zero p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j;
+   double a, f;
+
+
+/* Obtain reference ellipsoid parameters. */
+   j = eraEform ( n, &a, &f );
+
+/* If OK, transform longitude, geodetic latitude, height to x,y,z. */
+   if ( j == 0 ) {
+      j = eraGd2gce ( a, f, elong, phi, height, xyz );
+      if ( j != 0 ) j = -2;
+   }
+
+/* Deal with any errors. */
+   if ( j != 0 ) eraZp ( xyz );
+
+/* Return the status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gd2gce.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gd2gce.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gd2gce.c	(revision 18732)
@@ -0,0 +1,146 @@
+#include "erfa.h"
+
+int eraGd2gce ( double a, double f, double elong, double phi,
+                double height, double xyz[3] )
+/*
+**  - - - - - - - - - -
+**   e r a G d 2 g c e
+**  - - - - - - - - - -
+**
+**  Transform geodetic coordinates to geocentric for a reference
+**  ellipsoid of specified form.
+**
+**  Given:
+**     a       double     equatorial radius (Notes 1,4)
+**     f       double     flattening (Notes 2,4)
+**     elong   double     longitude (radians, east +ve)
+**     phi     double     latitude (geodetic, radians, Note 4)
+**     height  double     height above ellipsoid (geodetic, Notes 3,4)
+**
+**  Returned:
+**     xyz     double[3]  geocentric vector (Note 3)
+**
+**  Returned (function value):
+**             int        status:  0 = OK
+**                                -1 = illegal case (Note 4)
+**  Notes:
+**
+**  1) The equatorial radius, a, can be in any units, but meters is
+**     the conventional choice.
+**
+**  2) The flattening, f, is (for the Earth) a value around 0.00335,
+**     i.e. around 1/298.
+**
+**  3) The equatorial radius, a, and the height, height, must be
+**     given in the same units, and determine the units of the
+**     returned geocentric vector, xyz.
+**
+**  4) No validation is performed on individual arguments.  The error
+**     status -1 protects against (unrealistic) cases that would lead
+**     to arithmetic exceptions.  If an error occurs, xyz is unchanged.
+**
+**  5) The inverse transformation is performed in the function
+**     eraGc2gde.
+**
+**  6) The transformation for a standard ellipsoid (such as ERFA_WGS84) can
+**     more conveniently be performed by calling eraGd2gc,  which uses a
+**     numerical code to identify the required a and f values.
+**
+**  References:
+**
+**     Green, R.M., Spherical Astronomy, Cambridge University Press,
+**     (1985) Section 4.5, p96.
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 4.22, p202.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double sp, cp, w, d, ac, as, r;
+
+
+/* Functions of geodetic latitude. */
+   sp = sin(phi);
+   cp = cos(phi);
+   w = 1.0 - f;
+   w = w * w;
+   d = cp*cp + w*sp*sp;
+   if ( d <= 0.0 ) return -1;
+   ac = a / sqrt(d);
+   as = w * ac;
+
+/* Geocentric vector. */
+   r = (ac + height) * cp;
+   xyz[0] = r * cos(elong);
+   xyz[1] = r * sin(elong);
+   xyz[2] = (as + height) * sp;
+
+/* Success. */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gmst00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gmst00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gmst00.c	(revision 18732)
@@ -0,0 +1,154 @@
+#include "erfa.h"
+
+double eraGmst00(double uta, double utb, double tta, double ttb)
+/*
+**  - - - - - - - - - -
+**   e r a G m s t 0 0
+**  - - - - - - - - - -
+**
+**  Greenwich mean sidereal time (model consistent with IAU 2000
+**  resolutions).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**     tta,ttb    double    TT as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich mean sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both
+**     Julian Dates, apportioned in any convenient way between the
+**     argument pairs.  For example, JD=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**            Part A         Part B
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable (in the case of UT;  the TT is not at all critical
+**     in this respect).  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     Rotation Angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) Both UT1 and TT are required, UT1 to predict the Earth rotation
+**     and TT to predict the effects of precession.  If UT1 is used for
+**     both purposes, errors of order 100 microarcseconds result.
+**
+**  3) This GMST is compatible with the IAU 2000 resolutions and must be
+**     used only in conjunction with other IAU 2000 compatible
+**     components such as precession-nutation and equation of the
+**     equinoxes.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  5) The algorithm is from Capitaine et al. (2003) and IERS
+**     Conventions 2003.
+**
+**  Called:
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, gmst;
+
+
+/* TT Julian centuries since J2000.0. */
+   t = ((tta - ERFA_DJ00) + ttb) / ERFA_DJC;
+
+/* Greenwich Mean Sidereal Time, IAU 2000. */
+   gmst = eraAnp(eraEra00(uta, utb) +
+                   (     0.014506   +
+                   (  4612.15739966 +
+                   (     1.39667721 +
+                   (    -0.00009344 +
+                   (     0.00001882 )
+          * t) * t) * t) * t) * ERFA_DAS2R);
+
+   return gmst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gmst06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gmst06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gmst06.c	(revision 18732)
@@ -0,0 +1,145 @@
+#include "erfa.h"
+
+double eraGmst06(double uta, double utb, double tta, double ttb)
+/*
+**  - - - - - - - - - -
+**   e r a G m s t 0 6
+**  - - - - - - - - - -
+**
+**  Greenwich mean sidereal time (consistent with IAU 2006 precession).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**     tta,ttb    double    TT as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich mean sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both
+**     Julian Dates, apportioned in any convenient way between the
+**     argument pairs.  For example, JD=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**            Part A        Part B
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable (in the case of UT;  the TT is not at all critical
+**     in this respect).  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     rotation angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) Both UT1 and TT are required, UT1 to predict the Earth rotation
+**     and TT to predict the effects of precession.  If UT1 is used for
+**     both purposes, errors of order 100 microarcseconds result.
+**
+**  3) This GMST is compatible with the IAU 2006 precession and must not
+**     be used with other precession models.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  Called:
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Reference:
+**
+**     Capitaine, N., Wallace, P.T. & Chapront, J., 2005,
+**     Astron.Astrophys. 432, 355
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, gmst;
+
+
+/* TT Julian centuries since J2000.0. */
+   t = ((tta - ERFA_DJ00) + ttb) / ERFA_DJC;
+
+/* Greenwich mean sidereal time, IAU 2006. */
+   gmst = eraAnp(eraEra00(uta, utb) +
+                  (    0.014506     +
+                  (  4612.156534    +
+                  (     1.3915817   +
+                  (    -0.00000044  +
+                  (    -0.000029956 +
+                  (    -0.0000000368 )
+          * t) * t) * t) * t) * t) * ERFA_DAS2R);
+
+   return gmst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gmst82.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gmst82.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gmst82.c	(revision 18732)
@@ -0,0 +1,160 @@
+#include "erfa.h"
+
+double eraGmst82(double dj1, double dj2)
+/*
+**  - - - - - - - - - -
+**   e r a G m s t 8 2
+**  - - - - - - - - - -
+**
+**  Universal Time to Greenwich mean sidereal time (IAU 1982 model).
+**
+**  Given:
+**     dj1,dj2    double    UT1 Julian Date (see note)
+**
+**  Returned (function value):
+**                double    Greenwich mean sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any
+**     convenient way between the arguments dj1 and dj2.  For example,
+**     JD(UT1)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**             dj1            dj2
+**
+**         2450123.7          0          (JD method)
+**          2451545        -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5         0.2         (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  The date & time method is
+**     best matched to the algorithm used:  maximum accuracy (or, at
+**     least, minimum noise) is delivered when the dj1 argument is for
+**     0hrs UT1 on the day in question and the dj2 argument lies in the
+**     range 0 to 1, or vice versa.
+**
+**  2) The algorithm is based on the IAU 1982 expression.  This is
+**     always described as giving the GMST at 0 hours UT1.  In fact, it
+**     gives the difference between the GMST and the UT, the steady
+**     4-minutes-per-day drawing-ahead of ST with respect to UT.  When
+**     whole days are ignored, the expression happens to equal the GMST
+**     at 0 hours UT1 each day.
+**
+**  3) In this function, the entire UT1 (the sum of the two arguments
+**     dj1 and dj2) is used directly as the argument for the standard
+**     formula, the constant term of which is adjusted by 12 hours to
+**     take account of the noon phasing of Julian Date.  The UT1 is then
+**     added, but omitting whole days to conserve accuracy.
+**
+**  Called:
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Transactions of the International Astronomical Union,
+**     XVIII B, 67 (1983).
+**
+**     Aoki et al., Astron. Astrophys. 105, 359-361 (1982).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Coefficients of IAU 1982 GMST-UT1 model */
+   double A = 24110.54841  -  ERFA_DAYSEC / 2.0;
+   double B = 8640184.812866;
+   double C = 0.093104;
+   double D =  -6.2e-6;
+
+/* Note: the first constant, A, has to be adjusted by 12 hours */
+/* because the UT1 is supplied as a Julian date, which begins  */
+/* at noon.                                                    */
+
+   double d1, d2, t, f, gmst;
+
+
+/* Julian centuries since fundamental epoch. */
+   if (dj1 < dj2) {
+      d1 = dj1;
+      d2 = dj2;
+   } else {
+      d1 = dj2;
+      d2 = dj1;
+   }
+   t = (d1 + (d2 - ERFA_DJ00)) / ERFA_DJC;
+
+/* Fractional part of JD(UT1), in seconds. */
+   f = ERFA_DAYSEC * (fmod(d1, 1.0) + fmod(d2, 1.0));
+
+/* GMST at this UT1. */
+   gmst = eraAnp(ERFA_DS2R * ((A + (B + (C + D * t) * t) * t) + f));
+
+   return gmst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gst00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gst00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gst00a.c	(revision 18732)
@@ -0,0 +1,147 @@
+#include "erfa.h"
+
+double eraGst00a(double uta, double utb, double tta, double ttb)
+/*
+**  - - - - - - - - - -
+**   e r a G s t 0 0 a
+**  - - - - - - - - - -
+**
+**  Greenwich apparent sidereal time (consistent with IAU 2000
+**  resolutions).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**     tta,ttb    double    TT as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich apparent sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both
+**     Julian Dates, apportioned in any convenient way between the
+**     argument pairs.  For example, JD=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**            Part A        Part B
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable (in the case of UT;  the TT is not at all critical
+**     in this respect).  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     Rotation Angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) Both UT1 and TT are required, UT1 to predict the Earth rotation
+**     and TT to predict the effects of precession-nutation.  If UT1 is
+**     used for both purposes, errors of order 100 microarcseconds
+**     result.
+**
+**  3) This GAST is compatible with the IAU 2000 resolutions and must be
+**     used only in conjunction with other IAU 2000 compatible
+**     components such as precession-nutation.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  5) The algorithm is from Capitaine et al. (2003) and IERS
+**     Conventions 2003.
+**
+**  Called:
+**     eraGmst00    Greenwich mean sidereal time, IAU 2000
+**     eraEe00a     equation of the equinoxes, IAU 2000A
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gmst00, ee00a, gst;
+
+
+   gmst00 = eraGmst00(uta, utb, tta, ttb);
+   ee00a = eraEe00a(tta, ttb);
+   gst = eraAnp(gmst00 + ee00a);
+
+   return gst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gst00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gst00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gst00b.c	(revision 18732)
@@ -0,0 +1,155 @@
+#include "erfa.h"
+
+double eraGst00b(double uta, double utb)
+/*
+**  - - - - - - - - - -
+**   e r a G s t 0 0 b
+**  - - - - - - - - - -
+**
+**  Greenwich apparent sidereal time (consistent with IAU 2000
+**  resolutions but using the truncated nutation model IAU 2000B).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich apparent sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 date uta+utb is a Julian Date, apportioned in any
+**     convenient way between the argument pair.  For example,
+**     JD=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     Rotation Angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) The result is compatible with the IAU 2000 resolutions, except
+**     that accuracy has been compromised for the sake of speed and
+**     convenience in two respects:
+**
+**     . UT is used instead of TDB (or TT) to compute the precession
+**       component of GMST and the equation of the equinoxes.  This
+**       results in errors of order 0.1 mas at present.
+**
+**     . The IAU 2000B abridged nutation model (McCarthy & Luzum, 2001)
+**       is used, introducing errors of up to 1 mas.
+**
+**  3) This GAST is compatible with the IAU 2000 resolutions and must be
+**     used only in conjunction with other IAU 2000 compatible
+**     components such as precession-nutation.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  5) The algorithm is from Capitaine et al. (2003) and IERS
+**     Conventions 2003.
+**
+**  Called:
+**     eraGmst00    Greenwich mean sidereal time, IAU 2000
+**     eraEe00b     equation of the equinoxes, IAU 2000B
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
+**     implement the IAU 2000 definition of UT1", Astronomy &
+**     Astrophysics, 406, 1135-1149 (2003)
+**
+**     McCarthy, D.D. & Luzum, B.J., "An abridged model of the
+**     precession-nutation of the celestial pole", Celestial Mechanics &
+**     Dynamical Astronomy, 85, 37-49 (2003)
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gmst00, ee00b, gst;
+
+
+   gmst00 = eraGmst00(uta, utb, uta, utb);
+   ee00b = eraEe00b(uta, utb);
+   gst = eraAnp(gmst00 + ee00b);
+
+   return gst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gst06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gst06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gst06.c	(revision 18732)
@@ -0,0 +1,149 @@
+#include "erfa.h"
+
+double eraGst06(double uta, double utb, double tta, double ttb,
+                double rnpb[3][3])
+/*
+**  - - - - - - - - -
+**   e r a G s t 0 6
+**  - - - - - - - - -
+**
+**  Greenwich apparent sidereal time, IAU 2006, given the NPB matrix.
+**
+**  Given:
+**     uta,utb  double        UT1 as a 2-part Julian Date (Notes 1,2)
+**     tta,ttb  double        TT as a 2-part Julian Date (Notes 1,2)
+**     rnpb     double[3][3]  nutation x precession x bias matrix
+**
+**  Returned (function value):
+**              double        Greenwich apparent sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both
+**     Julian Dates, apportioned in any convenient way between the
+**     argument pairs.  For example, JD=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**            Part A        Part B
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable (in the case of UT;  the TT is not at all critical
+**     in this respect).  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     rotation angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) Both UT1 and TT are required, UT1 to predict the Earth rotation
+**     and TT to predict the effects of precession-nutation.  If UT1 is
+**     used for both purposes, errors of order 100 microarcseconds
+**     result.
+**
+**  3) Although the function uses the IAU 2006 series for s+XY/2, it is
+**     otherwise independent of the precession-nutation model and can in
+**     practice be used with any equinox-based NPB matrix.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  Called:
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**     eraAnp       normalize angle into range 0 to 2pi
+**     eraEra00     Earth rotation angle, IAU 2000
+**     eraEors      equation of the origins, given NPB matrix and s
+**
+**  Reference:
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y, s, era, eors, gst;
+
+
+/* Extract CIP coordinates. */
+   eraBpn2xy(rnpb, &x, &y);
+
+/* The CIO locator, s. */
+   s = eraS06(tta, ttb, x, y);
+
+/* Greenwich apparent sidereal time. */
+   era = eraEra00(uta, utb);
+   eors = eraEors(rnpb, s);
+   gst = eraAnp(era - eors);
+
+   return gst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gst06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gst06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gst06a.c	(revision 18732)
@@ -0,0 +1,140 @@
+#include "erfa.h"
+
+double eraGst06a(double uta, double utb, double tta, double ttb)
+/*
+**  - - - - - - - - - -
+**   e r a G s t 0 6 a
+**  - - - - - - - - - -
+**
+**  Greenwich apparent sidereal time (consistent with IAU 2000 and 2006
+**  resolutions).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**     tta,ttb    double    TT as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich apparent sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both
+**     Julian Dates, apportioned in any convenient way between the
+**     argument pairs.  For example, JD=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**            Part A        Part B
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable (in the case of UT;  the TT is not at all critical
+**     in this respect).  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     rotation angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) Both UT1 and TT are required, UT1 to predict the Earth rotation
+**     and TT to predict the effects of precession-nutation.  If UT1 is
+**     used for both purposes, errors of order 100 microarcseconds
+**     result.
+**
+**  3) This GAST is compatible with the IAU 2000/2006 resolutions and
+**     must be used only in conjunction with IAU 2006 precession and
+**     IAU 2000A nutation.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  Called:
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraGst06     Greenwich apparent ST, IAU 2006, given NPB matrix
+**
+**  Reference:
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rnpb[3][3], gst;
+
+
+/* Classical nutation x precession x bias matrix, IAU 2000A. */
+   eraPnm06a(tta, ttb, rnpb);
+
+/* Greenwich apparent sidereal time. */
+   gst = eraGst06(uta, utb, tta, ttb, rnpb);
+
+   return gst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/gst94.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/gst94.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/gst94.c	(revision 18732)
@@ -0,0 +1,140 @@
+#include "erfa.h"
+
+double eraGst94(double uta, double utb)
+/*
+**  - - - - - - - - -
+**   e r a G s t 9 4
+**  - - - - - - - - -
+**
+**  Greenwich apparent sidereal time (consistent with IAU 1982/94
+**  resolutions).
+**
+**  Given:
+**     uta,utb    double    UT1 as a 2-part Julian Date (Notes 1,2)
+**
+**  Returned (function value):
+**                double    Greenwich apparent sidereal time (radians)
+**
+**  Notes:
+**
+**  1) The UT1 date uta+utb is a Julian Date, apportioned in any
+**     convenient way between the argument pair.  For example,
+**     JD=2450123.7 could be expressed in any of these ways, among
+**     others:
+**
+**             uta            utb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 and MJD methods are good compromises
+**     between resolution and convenience.  For UT, the date & time
+**     method is best matched to the algorithm that is used by the Earth
+**     Rotation Angle function, called internally:  maximum precision is
+**     delivered when the uta argument is for 0hrs UT1 on the day in
+**     question and the utb argument lies in the range 0 to 1, or vice
+**     versa.
+**
+**  2) The result is compatible with the IAU 1982 and 1994 resolutions,
+**     except that accuracy has been compromised for the sake of
+**     convenience in that UT is used instead of TDB (or TT) to compute
+**     the equation of the equinoxes.
+**
+**  3) This GAST must be used only in conjunction with contemporaneous
+**     IAU standards such as 1976 precession, 1980 obliquity and 1982
+**     nutation.  It is not compatible with the IAU 2000 resolutions.
+**
+**  4) The result is returned in the range 0 to 2pi.
+**
+**  Called:
+**     eraGmst82    Greenwich mean sidereal time, IAU 1982
+**     eraEqeq94    equation of the equinoxes, IAU 1994
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  References:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**     IAU Resolution C7, Recommendation 3 (1994)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gmst82, eqeq94, gst;
+
+
+   gmst82 = eraGmst82(uta, utb);
+   eqeq94 = eraEqeq94(uta, utb);
+   gst = eraAnp(gmst82  + eqeq94);
+
+   return gst;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/h2fk5.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/h2fk5.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/h2fk5.c	(revision 18732)
@@ -0,0 +1,157 @@
+#include "erfa.h"
+
+void eraH2fk5(double rh, double dh,
+              double drh, double ddh, double pxh, double rvh,
+              double *r5, double *d5,
+              double *dr5, double *dd5, double *px5, double *rv5)
+/*
+**  - - - - - - - - -
+**   e r a H 2 f k 5
+**  - - - - - - - - -
+**
+**  Transform Hipparcos star data into the FK5 (J2000.0) system.
+**
+**  Given (all Hipparcos, epoch J2000.0):
+**     rh      double    RA (radians)
+**     dh      double    Dec (radians)
+**     drh     double    proper motion in RA (dRA/dt, rad/Jyear)
+**     ddh     double    proper motion in Dec (dDec/dt, rad/Jyear)
+**     pxh     double    parallax (arcsec)
+**     rvh     double    radial velocity (km/s, positive = receding)
+**
+**  Returned (all FK5, equinox J2000.0, epoch J2000.0):
+**     r5      double    RA (radians)
+**     d5      double    Dec (radians)
+**     dr5     double    proper motion in RA (dRA/dt, rad/Jyear)
+**     dd5     double    proper motion in Dec (dDec/dt, rad/Jyear)
+**     px5     double    parallax (arcsec)
+**     rv5     double    radial velocity (km/s, positive = receding)
+**
+**  Notes:
+**
+**  1) This function transforms Hipparcos star positions and proper
+**     motions into FK5 J2000.0.
+**
+**  2) The proper motions in RA are dRA/dt rather than
+**     cos(Dec)*dRA/dt, and are per year rather than per century.
+**
+**  3) The FK5 to Hipparcos transformation is modeled as a pure
+**     rotation and spin;  zonal errors in the FK5 catalog are not
+**     taken into account.
+**
+**  4) See also eraFk52h, eraFk5hz, eraHfk5z.
+**
+**  Called:
+**     eraStarpv    star catalog data to space motion pv-vector
+**     eraFk5hip    FK5 to Hipparcos rotation and spin
+**     eraRv2m      r-vector to r-matrix
+**     eraRxp       product of r-matrix and p-vector
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraPxp       vector product of two p-vectors
+**     eraPmp       p-vector minus p-vector
+**     eraPvstar    space motion pv-vector to star catalog data
+**
+**  Reference:
+**
+**     F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i;
+   double pvh[2][3], r5h[3][3], s5h[3], sh[3], wxp[3], vv[3], pv5[2][3];
+
+
+/* Hipparcos barycentric position/velocity pv-vector (normalized). */
+   eraStarpv(rh, dh, drh, ddh, pxh, rvh, pvh);
+
+/* FK5 to Hipparcos orientation matrix and spin vector. */
+   eraFk5hip(r5h, s5h);
+
+/* Make spin units per day instead of per year. */
+   for ( i = 0; i < 3; s5h[i++] /= 365.25 );
+
+/* Orient the spin into the Hipparcos system. */
+   eraRxp(r5h, s5h, sh);
+
+/* De-orient the Hipparcos position into the FK5 system. */
+   eraTrxp(r5h, pvh[0], pv5[0]);
+
+/* Apply spin to the position giving an extra space motion component. */
+   eraPxp(pvh[0], sh, wxp);
+
+/* Subtract this component from the Hipparcos space motion. */
+   eraPmp(pvh[1], wxp, vv);
+
+/* De-orient the Hipparcos space motion into the FK5 system. */
+   eraTrxp(r5h, vv, pv5[1]);
+
+/* FK5 pv-vector to spherical. */
+   eraPvstar(pv5, r5, d5, dr5, dd5, px5, rv5);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/hfk5z.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/hfk5z.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/hfk5z.c	(revision 18732)
@@ -0,0 +1,184 @@
+#include "erfa.h"
+
+void eraHfk5z(double rh, double dh, double date1, double date2,
+              double *r5, double *d5, double *dr5, double *dd5)
+/*
+**  - - - - - - - - -
+**   e r a H f k 5 z
+**  - - - - - - - - -
+**
+**  Transform a Hipparcos star position into FK5 J2000.0, assuming
+**  zero Hipparcos proper motion.
+**
+**  Given:
+**     rh            double    Hipparcos RA (radians)
+**     dh            double    Hipparcos Dec (radians)
+**     date1,date2   double    TDB date (Note 1)
+**
+**  Returned (all FK5, equinox J2000.0, date date1+date2):
+**     r5            double    RA (radians)
+**     d5            double    Dec (radians)
+**     dr5           double    FK5 RA proper motion (rad/year, Note 4)
+**     dd5           double    Dec proper motion (rad/year, Note 4)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  3) The FK5 to Hipparcos transformation is modeled as a pure rotation
+**     and spin;  zonal errors in the FK5 catalogue are not taken into
+**     account.
+**
+**  4) It was the intention that Hipparcos should be a close
+**     approximation to an inertial frame, so that distant objects have
+**     zero proper motion;  such objects have (in general) non-zero
+**     proper motion in FK5, and this function returns those fictitious
+**     proper motions.
+**
+**  5) The position returned by this function is in the FK5 J2000.0
+**     reference system but at date date1+date2.
+**
+**  6) See also eraFk52h, eraH2fk5, eraFk5zhz.
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraFk5hip    FK5 to Hipparcos rotation and spin
+**     eraRxp       product of r-matrix and p-vector
+**     eraSxp       multiply p-vector by scalar
+**     eraRxr       product of two r-matrices
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**     eraPxp       vector product of two p-vectors
+**     eraPv2s      pv-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Reference:
+**
+**     F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, ph[3], r5h[3][3], s5h[3], sh[3], vst[3],
+   rst[3][3], r5ht[3][3], pv5e[2][3], vv[3],
+   w, r, v;
+
+
+/* Time interval from fundamental epoch J2000.0 to given date (JY). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJY;
+
+/* Hipparcos barycentric position vector (normalized). */
+   eraS2c(rh, dh, ph);
+
+/* FK5 to Hipparcos orientation matrix and spin vector. */
+   eraFk5hip(r5h, s5h);
+
+/* Rotate the spin into the Hipparcos system. */
+   eraRxp(r5h, s5h, sh);
+
+/* Accumulated Hipparcos wrt FK5 spin over that interval. */
+   eraSxp(t, s5h, vst);
+
+/* Express the accumulated spin as a rotation matrix. */
+   eraRv2m(vst, rst);
+
+/* Rotation matrix:  accumulated spin, then FK5 to Hipparcos. */
+   eraRxr(r5h, rst, r5ht);
+
+/* De-orient & de-spin the Hipparcos position into FK5 J2000.0. */
+   eraTrxp(r5ht, ph, pv5e[0]);
+
+/* Apply spin to the position giving a space motion. */
+   eraPxp(sh, ph, vv);
+
+/* De-orient & de-spin the Hipparcos space motion into FK5 J2000.0. */
+   eraTrxp(r5ht, vv, pv5e[1]);
+
+/* FK5 position/velocity pv-vector to spherical. */
+   eraPv2s(pv5e, &w, d5, &r, dr5, dd5, &v);
+   *r5 = eraAnp(w);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/icrs2g.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/icrs2g.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/icrs2g.c	(revision 18732)
@@ -0,0 +1,170 @@
+#include "erfa.h"
+
+void eraIcrs2g ( double dr, double dd, double *dl, double *db )
+/*
+**  - - - - - - - - - -
+**   e r a I c r s 2 g
+**  - - - - - - - - - -
+**
+**  Transformation from ICRS to Galactic Coordinates.
+**
+**  Given:
+**     dr     double      ICRS right ascension (radians)
+**     dd     double      ICRS declination (radians)
+**
+**  Returned:
+**     dl     double      galactic longitude (radians)
+**     db     double      galactic latitude (radians)
+**
+**  Notes:
+**
+**  1) The IAU 1958 system of Galactic coordinates was defined with
+**     respect to the now obsolete reference system FK4 B1950.0.  When
+**     interpreting the system in a modern context, several factors have
+**     to be taken into account:
+**
+**     . The inclusion in FK4 positions of the E-terms of aberration.
+**
+**     . The distortion of the FK4 proper motion system by differential
+**       Galactic rotation.
+**
+**     . The use of the B1950.0 equinox rather than the now-standard
+**       J2000.0.
+**
+**     . The frame bias between ICRS and the J2000.0 mean place system.
+**
+**     The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation
+**     matrix that transforms directly between ICRS and Galactic
+**     coordinates with the above factors taken into account.  The
+**     matrix is derived from three angles, namely the ICRS coordinates
+**     of the Galactic pole and the longitude of the ascending node of
+**     the galactic equator on the ICRS equator.  They are given in
+**     degrees to five decimal places and for canonical purposes are
+**     regarded as exact.  In the Hipparcos Catalogue the matrix
+**     elements are given to 10 decimal places (about 20 microarcsec).
+**     In the present ERFA function the matrix elements have been
+**     recomputed from the canonical three angles and are given to 30
+**     decimal places.
+**
+**  2) The inverse transformation is performed by the function eraG2icrs.
+**
+**  Called:
+**     eraAnp       normalize angle into range 0 to 2pi
+**     eraAnpm      normalize angle into range +/- pi
+**     eraS2c       spherical coordinates to unit vector
+**     eraRxp       product of r-matrix and p-vector
+**     eraC2s       p-vector to spherical
+**
+**  Reference:
+**     Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho
+**     catalogues.  Astrometric and photometric star catalogues
+**     derived from the ESA Hipparcos Space Astrometry Mission.  ESA
+**     Publications Division, Noordwijk, Netherlands.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double v1[3], v2[3];
+
+/*
+**  L2,B2 system of galactic coordinates in the form presented in the
+**  Hipparcos Catalogue.  In degrees:
+**
+**  P = 192.85948    right ascension of the Galactic north pole in ICRS
+**  Q =  27.12825    declination of the Galactic north pole in ICRS
+**  R =  32.93192    longitude of the ascending node of the Galactic
+**                   plane on the ICRS equator
+**
+**  ICRS to galactic rotation matrix, obtained by computing
+**  R_3(-R) R_1(pi/2-Q) R_3(pi/2+P) to the full precision shown:
+*/
+   double r[3][3] = { { -0.054875560416215368492398900454,
+                        -0.873437090234885048760383168409,
+                        -0.483835015548713226831774175116 },
+                      { +0.494109427875583673525222371358,
+                        -0.444829629960011178146614061616,
+                        +0.746982244497218890527388004556 },
+                      { -0.867666149019004701181616534570,
+                        -0.198076373431201528180486091412,
+                        +0.455983776175066922272100478348 } };
+
+
+/* Spherical to Cartesian. */
+   eraS2c(dr, dd, v1);
+
+/* ICRS to Galactic. */
+   eraRxp(r, v1, v2);
+
+/* Cartesian to spherical. */
+   eraC2s(v2, dl, db);
+
+/* Express in conventional ranges. */
+   *dl = eraAnp(*dl);
+   *db = eraAnpm(*db);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ir.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ir.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ir.c	(revision 18732)
@@ -0,0 +1,92 @@
+#include "erfa.h"
+
+void eraIr(double r[3][3])
+/*
+**  - - - - - -
+**   e r a I r
+**  - - - - - -
+**
+**  Initialize an r-matrix to the identity matrix.
+**
+**  Returned:
+**     r       double[3][3]    r-matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   r[0][0] = 1.0;
+   r[0][1] = 0.0;
+   r[0][2] = 0.0;
+   r[1][0] = 0.0;
+   r[1][1] = 1.0;
+   r[1][2] = 0.0;
+   r[2][0] = 0.0;
+   r[2][1] = 0.0;
+   r[2][2] = 1.0;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/jd2cal.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/jd2cal.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/jd2cal.c	(revision 18732)
@@ -0,0 +1,164 @@
+#include "erfa.h"
+
+int eraJd2cal(double dj1, double dj2,
+              int *iy, int *im, int *id, double *fd)
+/*
+**  - - - - - - - - - -
+**   e r a J d 2 c a l
+**  - - - - - - - - - -
+**
+**  Julian Date to Gregorian year, month, day, and fraction of a day.
+**
+**  Given:
+**     dj1,dj2   double   Julian Date (Notes 1, 2)
+**
+**  Returned (arguments):
+**     iy        int      year
+**     im        int      month
+**     id        int      day
+**     fd        double   fraction of day
+**
+**  Returned (function value):
+**               int      status:
+**                           0 = OK
+**                          -1 = unacceptable date (Note 3)
+**
+**  Notes:
+**
+**  1) The earliest valid date is -68569.5 (-4900 March 1).  The
+**     largest value accepted is 1e9.
+**
+**  2) The Julian Date is apportioned in any convenient way between
+**     the arguments dj1 and dj2.  For example, JD=2450123.7 could
+**     be expressed in any of these ways, among others:
+**
+**            dj1             dj2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**  3) In early eras the conversion is from the "proleptic Gregorian
+**     calendar";  no account is taken of the date(s) of adoption of
+**     the Gregorian calendar, nor is the AD/BC numbering convention
+**     observed.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 12.92 (p604).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Minimum and maximum allowed JD */
+   const double DJMIN = -68569.5;
+   const double DJMAX = 1e9;
+
+   long jd, l, n, i, k;
+   double dj, d1, d2, f1, f2, f, d;
+
+
+/* Verify date is acceptable. */
+   dj = dj1 + dj2;
+   if (dj < DJMIN || dj > DJMAX) return -1;
+
+/* Copy the date, big then small, and re-align to midnight. */
+   if (dj1 >= dj2) {
+      d1 = dj1;
+      d2 = dj2;
+   } else {
+      d1 = dj2;
+      d2 = dj1;
+   }
+   d2 -= 0.5;
+
+/* Separate day and fraction. */
+   f1 = fmod(d1, 1.0);
+   f2 = fmod(d2, 1.0);
+   f = fmod(f1 + f2, 1.0);
+   if (f < 0.0) f += 1.0;
+   d = floor(d1 - f1) + floor(d2 - f2) + floor(f1 + f2 - f);
+   jd = (long) floor(d) + 1L;
+
+/* Express day in Gregorian calendar. */
+   l = jd + 68569L;
+   n = (4L * l) / 146097L;
+   l -= (146097L * n + 3L) / 4L;
+   i = (4000L * (l + 1L)) / 1461001L;
+   l -= (1461L * i) / 4L - 31L;
+   k = (80L * l) / 2447L;
+   *id = (int) (l - (2447L * k) / 80L);
+   l = k / 11L;
+   *im = (int) (k + 2L - 12L * l);
+   *iy = (int) (100L * (n - 49L) + i + l);
+   *fd = f;
+
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/jdcalf.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/jdcalf.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/jdcalf.c	(revision 18732)
@@ -0,0 +1,170 @@
+#include "erfa.h"
+
+int eraJdcalf(int ndp, double dj1, double dj2, int iymdf[4])
+/*
+**  - - - - - - - - - -
+**   e r a J d c a l f
+**  - - - - - - - - - -
+**
+**  Julian Date to Gregorian Calendar, expressed in a form convenient
+**  for formatting messages:  rounded to a specified precision.
+**
+**  Given:
+**     ndp       int      number of decimal places of days in fraction
+**     dj1,dj2   double   dj1+dj2 = Julian Date (Note 1)
+**
+**  Returned:
+**     iymdf     int[4]   year, month, day, fraction in Gregorian
+**                        calendar
+**
+**  Returned (function value):
+**               int      status:
+**                          -1 = date out of range
+**                           0 = OK
+**                          +1 = NDP not 0-9 (interpreted as 0)
+**
+**  Notes:
+**
+**  1) The Julian Date is apportioned in any convenient way between
+**     the arguments dj1 and dj2.  For example, JD=2450123.7 could
+**     be expressed in any of these ways, among others:
+**
+**             dj1            dj2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**  2) In early eras the conversion is from the "Proleptic Gregorian
+**     Calendar";  no account is taken of the date(s) of adoption of
+**     the Gregorian Calendar, nor is the AD/BC numbering convention
+**     observed.
+**
+**  3) Refer to the function eraJd2cal.
+**
+**  4) NDP should be 4 or less if internal overflows are to be
+**     avoided on machines which use 16-bit integers.
+**
+**  Called:
+**     eraJd2cal    JD to Gregorian calendar
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 12.92 (p604).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int j, js;
+   double denom, d1, d2, f1, f2, f;
+
+
+/* Denominator of fraction (e.g. 100 for 2 decimal places). */
+   if ((ndp >= 0) && (ndp <= 9)) {
+      j = 0;
+      denom = pow(10.0, ndp);
+   } else {
+      j = 1;
+      denom = 1.0;
+   }
+
+/* Copy the date, big then small, and realign to midnight. */
+   if (dj1 >= dj2) {
+      d1 = dj1;
+      d2 = dj2;
+   } else {
+      d1 = dj2;
+      d2 = dj1;
+   }
+   d2 -= 0.5;
+
+/* Separate days and fractions. */
+   f1 = fmod(d1, 1.0);
+   f2 = fmod(d2, 1.0);
+   d1 = floor(d1 - f1);
+   d2 = floor(d2 - f2);
+
+/* Round the total fraction to the specified number of places. */
+   f = floor((f1+f2)*denom + 0.5) / denom;
+
+/* Re-assemble the rounded date and re-align to noon. */
+   d2 += f + 0.5;
+
+/* Convert to Gregorian calendar. */
+   js = eraJd2cal(d1, d2, &iymdf[0], &iymdf[1], &iymdf[2], &f);
+   if (js == 0) {
+      iymdf[3] = (int) (f * denom);
+   } else {
+      j = js;
+   }
+
+/* Return the status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ld.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ld.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ld.c	(revision 18732)
@@ -0,0 +1,161 @@
+#include "erfa.h"
+
+void eraLd(double bm, double p[3], double q[3], double e[3],
+           double em, double dlim, double p1[3])
+/*
+**  - - - - - -
+**   e r a L d
+**  - - - - - -
+**
+**  Apply light deflection by a solar-system body, as part of
+**  transforming coordinate direction into natural direction.
+**
+**  Given:
+**     bm     double     mass of the gravitating body (solar masses)
+**     p      double[3]  direction from observer to source (unit vector)
+**     q      double[3]  direction from body to source (unit vector)
+**     e      double[3]  direction from body to observer (unit vector)
+**     em     double     distance from body to observer (au)
+**     dlim   double     deflection limiter (Note 4)
+**
+**  Returned:
+**     p1     double[3]  observer to deflected source (unit vector)
+**
+**  Notes:
+**
+**  1) The algorithm is based on Expr. (70) in Klioner (2003) and
+**     Expr. (7.63) in the Explanatory Supplement (Urban & Seidelmann
+**     2013), with some rearrangement to minimize the effects of machine
+**     precision.
+**
+**  2) The mass parameter bm can, as required, be adjusted in order to
+**     allow for such effects as quadrupole field.
+**
+**  3) The barycentric position of the deflecting body should ideally
+**     correspond to the time of closest approach of the light ray to
+**     the body.
+**
+**  4) The deflection limiter parameter dlim is phi^2/2, where phi is
+**     the angular separation (in radians) between source and body at
+**     which limiting is applied.  As phi shrinks below the chosen
+**     threshold, the deflection is artificially reduced, reaching zero
+**     for phi = 0.
+**
+**  5) The returned vector p1 is not normalized, but the consequential
+**     departure from unit magnitude is always negligible.
+**
+**  6) The arguments p and p1 can be the same array.
+**
+**  7) To accumulate total light deflection taking into account the
+**     contributions from several bodies, call the present function for
+**     each body in succession, in decreasing order of distance from the
+**     observer.
+**
+**  8) For efficiency, validation is omitted.  The supplied vectors must
+**     be of unit magnitude, and the deflection limiter non-zero and
+**     positive.
+**
+**  References:
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013).
+**
+**     Klioner, Sergei A., "A practical relativistic model for micro-
+**     arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).
+**
+**  Called:
+**     eraPdp       scalar product of two p-vectors
+**     eraPxp       vector product of two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i;
+   double qpe[3], qdqpe, w, eq[3], peq[3];
+
+
+/* q . (q + e). */
+   for (i = 0; i < 3; i++) {
+      qpe[i] = q[i] + e[i];
+   }
+   qdqpe = eraPdp(q, qpe);
+
+/* 2 x G x bm / ( em x c^2 x ( q . (q + e) ) ). */
+   w = bm * ERFA_SRS / em / ERFA_GMAX(qdqpe,dlim);
+
+/* p x (e x q). */
+   eraPxp(e, q, eq);
+   eraPxp(p, eq, peq);
+
+/* Apply the deflection. */
+   for (i = 0; i < 3; i++) {
+      p1[i] = p[i] + w*peq[i];
+   }
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ldn.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ldn.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ldn.c	(revision 18732)
@@ -0,0 +1,183 @@
+#include "erfa.h"
+
+void eraLdn(int n, eraLDBODY b[], double ob[3], double sc[3],
+            double sn[3])
+/*+
+**  - - - - - - -
+**   e r a L d n
+**  - - - - - - -
+**
+**  For a star, apply light deflection by multiple solar-system bodies,
+**  as part of transforming coordinate direction into natural direction.
+**
+**  Given:
+**     n    int           number of bodies (note 1)
+**     b    eraLDBODY[n]  data for each of the n bodies (Notes 1,2):
+**      bm   double         mass of the body (solar masses, Note 3)
+**      dl   double         deflection limiter (Note 4)
+**      pv   [2][3]         barycentric PV of the body (au, au/day)
+**     ob   double[3]     barycentric position of the observer (au)
+**     sc   double[3]     observer to star coord direction (unit vector)
+**
+**  Returned:
+**     sn    double[3]      observer to deflected star (unit vector)
+**
+**  1) The array b contains n entries, one for each body to be
+**     considered.  If n = 0, no gravitational light deflection will be
+**     applied, not even for the Sun.
+**
+**  2) The array b should include an entry for the Sun as well as for
+**     any planet or other body to be taken into account.  The entries
+**     should be in the order in which the light passes the body.
+**
+**  3) In the entry in the b array for body i, the mass parameter
+**     b[i].bm can, as required, be adjusted in order to allow for such
+**     effects as quadrupole field.
+**
+**  4) The deflection limiter parameter b[i].dl is phi^2/2, where phi is
+**     the angular separation (in radians) between star and body at
+**     which limiting is applied.  As phi shrinks below the chosen
+**     threshold, the deflection is artificially reduced, reaching zero
+**     for phi = 0.   Example values suitable for a terrestrial
+**     observer, together with masses, are as follows:
+**
+**        body i     b[i].bm        b[i].dl
+**
+**        Sun        1.0            6e-6
+**        Jupiter    0.00095435     3e-9
+**        Saturn     0.00028574     3e-10
+**
+**  5) For cases where the starlight passes the body before reaching the
+**     observer, the body is placed back along its barycentric track by
+**     the light time from that point to the observer.  For cases where
+**     the body is "behind" the observer no such shift is applied.  If
+**     a different treatment is preferred, the user has the option of
+**     instead using the eraLd function.  Similarly, eraLd can be used
+**     for cases where the source is nearby, not a star.
+**
+**  6) The returned vector sn is not normalized, but the consequential
+**     departure from unit magnitude is always negligible.
+**
+**  7) The arguments sc and sn can be the same array.
+**
+**  8) For efficiency, validation is omitted.  The supplied masses must
+**     be greater than zero, the position and velocity vectors must be
+**     right, and the deflection limiter greater than zero.
+**
+**  Reference:
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013), Section 7.2.4.
+**
+**  Called:
+**     eraCp        copy p-vector
+**     eraPdp       scalar product of two p-vectors
+**     eraPmp       p-vector minus p-vector
+**     eraPpsp      p-vector plus scaled p-vector
+**     eraPn        decompose p-vector into modulus and direction
+**     eraLd        light deflection by a solar-system body
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Light time for 1 AU (days) */
+   const double CR = ERFA_AULT/ERFA_DAYSEC;
+
+   int i;
+   double  v[3], dt, ev[3], em, e[3];
+
+
+/* Star direction prior to deflection. */
+   eraCp(sc, sn);
+
+/* Body by body. */
+   for ( i = 0; i < n; i++ ) {
+
+   /* Body to observer vector at epoch of observation (au). */
+      eraPmp ( ob, b[i].pv[0], v );
+
+   /* Minus the time since the light passed the body (days). */
+      dt = eraPdp(sn,v) * CR;
+
+   /* Neutralize if the star is "behind" the observer. */
+      dt = ERFA_GMIN(dt, 0.0);
+
+   /* Backtrack the body to the time the light was passing the body. */
+      eraPpsp(v, -dt, b[i].pv[1], ev);
+
+   /* Body to observer vector as magnitude and direction. */
+      eraPn(ev, &em, e);
+
+   /* Apply light deflection for this body. */
+      eraLd ( b[i].bm, sn, sn, e, em, b[i].dl, sn );
+
+   /* Next body. */
+   }
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ldsun.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ldsun.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ldsun.c	(revision 18732)
@@ -0,0 +1,115 @@
+#include "erfa.h"
+
+void eraLdsun(double p[3], double e[3], double em, double p1[3])
+/*
+**  - - - - - - - - -
+**   e r a L d s u n
+**  - - - - - - - - -
+**
+**  Deflection of starlight by the Sun.
+**
+**  Given:
+**     p      double[3]  direction from observer to star (unit vector)
+**     e      double[3]  direction from Sun to observer (unit vector)
+**     em     double     distance from Sun to observer (au)
+**
+**  Returned:
+**     p1     double[3]  observer to deflected star (unit vector)
+**
+**  Notes:
+**
+**  1) The source is presumed to be sufficiently distant that its
+**     directions seen from the Sun and the observer are essentially
+**     the same.
+**
+**  2) The deflection is restrained when the angle between the star and
+**     the center of the Sun is less than a threshold value, falling to
+**     zero deflection for zero separation.  The chosen threshold value
+**     is within the solar limb for all solar-system applications, and
+**     is about 5 arcminutes for the case of a terrestrial observer.
+**
+**  3) The arguments p and p1 can be the same array.
+**
+**  Called:
+**     eraLd        light deflection by a solar-system body
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double em2, dlim;
+
+
+/* Deflection limiter (smaller for distant observers). */
+   em2 = em*em;
+   if ( em2 < 1.0 ) em2 = 1.0;
+   dlim = 1e-6 / (em2 > 1.0 ? em2 : 1.0);
+
+/* Apply the deflection. */
+   eraLd(1.0, p, p, e, em, dlim, p1);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/num00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/num00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/num00a.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+void eraNum00a(double date1, double date2, double rmatn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a N u m 0 0 a
+**  - - - - - - - - - -
+**
+**  Form the matrix of nutation for a given date, IAU 2000A model.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rmatn        double[3][3]    nutation matrix
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(true) = rmatn * V(mean), where
+**     the p-vector V(true) is with respect to the true equatorial triad
+**     of date and the p-vector V(mean) is with respect to the mean
+**     equatorial triad of date.
+**
+**  3) A faster, but slightly less accurate result (about 1 mas), can be
+**     obtained by using instead the eraNum00b function.
+**
+**  Called:
+**     eraPn00a     bias/precession/nutation, IAU 2000A
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.222-3 (p114).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rbpn[3][3];
+
+
+/* Obtain the required matrix (discarding other results). */
+   eraPn00a(date1, date2,
+            &dpsi, &deps, &epsa, rb, rp, rbp, rmatn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/num00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/num00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/num00b.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+void eraNum00b(double date1, double date2, double rmatn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a N u m 0 0 b
+**  - - - - - - - - - -
+**
+**  Form the matrix of nutation for a given date, IAU 2000B model.
+**
+**  Given:
+**     date1,date2  double         TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rmatn        double[3][3]   nutation matrix
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(true) = rmatn * V(mean), where
+**     the p-vector V(true) is with respect to the true equatorial triad
+**     of date and the p-vector V(mean) is with respect to the mean
+**     equatorial triad of date.
+**
+**  3) The present function is faster, but slightly less accurate (about
+**     1 mas), than the eraNum00a function.
+**
+**  Called:
+**     eraPn00b     bias/precession/nutation, IAU 2000B
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.222-3 (p114).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rbpn[3][3];
+
+
+/* Obtain the required matrix (discarding other results). */
+   eraPn00b(date1, date2,
+            &dpsi, &deps, &epsa, rb, rp, rbp, rmatn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/num06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/num06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/num06a.c	(revision 18732)
@@ -0,0 +1,134 @@
+#include "erfa.h"
+
+void eraNum06a(double date1, double date2, double rmatn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a N u m 0 6 a
+**  - - - - - - - - - -
+**
+**  Form the matrix of nutation for a given date, IAU 2006/2000A model.
+**
+**  Given:
+**     date1,date2   double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rmatn         double[3][3]    nutation matrix
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(true) = rmatn * V(mean), where
+**     the p-vector V(true) is with respect to the true equatorial triad
+**     of date and the p-vector V(mean) is with respect to the mean
+**     equatorial triad of date.
+**
+**  Called:
+**     eraObl06     mean obliquity, IAU 2006
+**     eraNut06a    nutation, IAU 2006/2000A
+**     eraNumat     form nutation matrix
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.222-3 (p114).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double eps, dp, de;
+
+
+/* Mean obliquity. */
+   eps = eraObl06(date1, date2);
+
+/* Nutation components. */
+   eraNut06a(date1, date2, &dp, &de);
+
+/* Nutation matrix. */
+   eraNumat(eps, dp, de, rmatn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/numat.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/numat.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/numat.c	(revision 18732)
@@ -0,0 +1,118 @@
+#include "erfa.h"
+
+void eraNumat(double epsa, double dpsi, double deps, double rmatn[3][3])
+/*
+**  - - - - - - - - -
+**   e r a N u m a t
+**  - - - - - - - - -
+**
+**  Form the matrix of nutation.
+**
+**  Given:
+**     epsa        double         mean obliquity of date (Note 1)
+**     dpsi,deps   double         nutation (Note 2)
+**
+**  Returned:
+**     rmatn       double[3][3]   nutation matrix (Note 3)
+**
+**  Notes:
+**
+**
+**  1) The supplied mean obliquity epsa, must be consistent with the
+**     precession-nutation models from which dpsi and deps were obtained.
+**
+**  2) The caller is responsible for providing the nutation components;
+**     they are in longitude and obliquity, in radians and are with
+**     respect to the equinox and ecliptic of date.
+**
+**  3) The matrix operates in the sense V(true) = rmatn * V(mean),
+**     where the p-vector V(true) is with respect to the true
+**     equatorial triad of date and the p-vector V(mean) is with
+**     respect to the mean equatorial triad of date.
+**
+**  Called:
+**     eraIr        initialize r-matrix to identity
+**     eraRx        rotate around X-axis
+**     eraRz        rotate around Z-axis
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.222-3 (p114).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Build the rotation matrix. */
+   eraIr(rmatn);
+   eraRx(epsa, rmatn);
+   eraRz(-dpsi, rmatn);
+   eraRx(-(epsa + deps), rmatn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/nut00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/nut00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/nut00a.c	(revision 18732)
@@ -0,0 +1,2056 @@
+#include "erfa.h"
+
+void eraNut00a(double date1, double date2, double *dpsi, double *deps)
+/*
+**  - - - - - - - - - -
+**   e r a N u t 0 0 a
+**  - - - - - - - - - -
+**
+**  Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation
+**  with free core nutation omitted).
+**
+**  Given:
+**     date1,date2   double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps     double   nutation, luni-solar + planetary (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The nutation components in longitude and obliquity are in radians
+**     and with respect to the equinox and ecliptic of date.  The
+**     obliquity at J2000.0 is assumed to be the Lieske et al. (1977)
+**     value of 84381.448 arcsec.
+**
+**     Both the luni-solar and planetary nutations are included.  The
+**     latter are due to direct planetary nutations and the
+**     perturbations of the lunar and terrestrial orbits.
+**
+**  3) The function computes the MHB2000 nutation series with the
+**     associated corrections for planetary nutations.  It is an
+**     implementation of the nutation part of the IAU 2000A precession-
+**     nutation model, formally adopted by the IAU General Assembly in
+**     2000, namely MHB2000 (Mathews et al. 2002), but with the free
+**     core nutation (FCN - see Note 4) omitted.
+**
+**  4) The full MHB2000 model also contains contributions to the
+**     nutations in longitude and obliquity due to the free-excitation
+**     of the free-core-nutation during the period 1979-2000.  These FCN
+**     terms, which are time-dependent and unpredictable, are NOT
+**     included in the present function and, if required, must be
+**     independently computed.  With the FCN corrections included, the
+**     present function delivers a pole which is at current epochs
+**     accurate to a few hundred microarcseconds.  The omission of FCN
+**     introduces further errors of about that size.
+**
+**  5) The present function provides classical nutation.  The MHB2000
+**     algorithm, from which it is adapted, deals also with (i) the
+**     offsets between the GCRS and mean poles and (ii) the adjustments
+**     in longitude and obliquity due to the changed precession rates.
+**     These additional functions, namely frame bias and precession
+**     adjustments, are supported by the ERFA functions eraBi00  and
+**     eraPr00.
+**
+**  6) The MHB2000 algorithm also provides "total" nutations, comprising
+**     the arithmetic sum of the frame bias, precession adjustments,
+**     luni-solar nutation and planetary nutation.  These total
+**     nutations can be used in combination with an existing IAU 1976
+**     precession implementation, such as eraPmat76,  to deliver GCRS-
+**     to-true predictions of sub-mas accuracy at current dates.
+**     However, there are three shortcomings in the MHB2000 model that
+**     must be taken into account if more accurate or definitive results
+**     are required (see Wallace 2002):
+**
+**       (i) The MHB2000 total nutations are simply arithmetic sums,
+**           yet in reality the various components are successive Euler
+**           rotations.  This slight lack of rigor leads to cross terms
+**           that exceed 1 mas after a century.  The rigorous procedure
+**           is to form the GCRS-to-true rotation matrix by applying the
+**           bias, precession and nutation in that order.
+**
+**      (ii) Although the precession adjustments are stated to be with
+**           respect to Lieske et al. (1977), the MHB2000 model does
+**           not specify which set of Euler angles are to be used and
+**           how the adjustments are to be applied.  The most literal
+**           and straightforward procedure is to adopt the 4-rotation
+**           epsilon_0, psi_A, omega_A, xi_A option, and to add DPSIPR
+**           to psi_A and DEPSPR to both omega_A and eps_A.
+**
+**     (iii) The MHB2000 model predates the determination by Chapront
+**           et al. (2002) of a 14.6 mas displacement between the
+**           J2000.0 mean equinox and the origin of the ICRS frame.  It
+**           should, however, be noted that neglecting this displacement
+**           when calculating star coordinates does not lead to a
+**           14.6 mas change in right ascension, only a small second-
+**           order distortion in the pattern of the precession-nutation
+**           effect.
+**
+**     For these reasons, the ERFA functions do not generate the "total
+**     nutations" directly, though they can of course easily be
+**     generated by calling eraBi00, eraPr00 and the present function
+**     and adding the results.
+**
+**  7) The MHB2000 model contains 41 instances where the same frequency
+**     appears multiple times, of which 38 are duplicates and three are
+**     triplicates.  To keep the present code close to the original MHB
+**     algorithm, this small inefficiency has not been corrected.
+**
+**  Called:
+**     eraFal03     mean anomaly of the Moon
+**     eraFaf03     mean argument of the latitude of the Moon
+**     eraFaom03    mean longitude of the Moon's ascending node
+**     eraFame03    mean longitude of Mercury
+**     eraFave03    mean longitude of Venus
+**     eraFae03     mean longitude of Earth
+**     eraFama03    mean longitude of Mars
+**     eraFaju03    mean longitude of Jupiter
+**     eraFasa03    mean longitude of Saturn
+**     eraFaur03    mean longitude of Uranus
+**     eraFapa03    general accumulated precession in longitude
+**
+**  References:
+**
+**     Chapront, J., Chapront-Touze, M. & Francou, G. 2002,
+**     Astron.Astrophys. 387, 700
+**
+**     Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
+**     Astron.Astrophys. 58, 1-16
+**
+**     Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res.
+**     107, B4.  The MHB_2000 code itself was obtained on 9th September
+**     2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**     Wallace, P.T., "Software for Implementing the IAU 2000
+**     Resolutions", in IERS Workshop 5.1 (2002)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i;
+   double t, el, elp, f, d, om, arg, dp, de, sarg, carg,
+          al, af, ad, aom, alme, alve, alea, alma,
+          alju, alsa, alur, alne, apa, dpsils, depsls,
+          dpsipl, depspl;
+
+/* Units of 0.1 microarcsecond to radians */
+   const double U2R = ERFA_DAS2R / 1e7;
+
+/* ------------------------- */
+/* Luni-Solar nutation model */
+/* ------------------------- */
+
+/* The units for the sine and cosine coefficients are */
+/* 0.1 microarcsecond and the same per Julian century */
+
+   static const struct {
+      int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */
+      double sp,spt,cp;     /* longitude sin, t*sin, cos coefficients */
+      double ce,cet,se;     /* obliquity cos, t*cos, sin coefficients */
+   } xls[] = {
+
+   /* 1- 10 */
+      { 0, 0, 0, 0, 1,
+         -172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0},
+      { 0, 0, 2,-2, 2,
+           -13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0},
+      { 0, 0, 2, 0, 2,-2276413.0,-234.0,2796.0,978459.0,-485.0, 1374.0},
+      { 0, 0, 0, 0, 2,2074554.0, 207.0, -698.0,-897492.0,470.0, -291.0},
+      { 0, 1, 0, 0, 0,1475877.0,-3633.0,11817.0,73871.0,-184.0,-1924.0},
+      { 0, 1, 2,-2, 2,-516821.0,1226.0, -524.0,224386.0,-677.0, -174.0},
+      { 1, 0, 0, 0, 0, 711159.0,  73.0, -872.0,  -6750.0,  0.0,  358.0},
+      { 0, 0, 2, 0, 1,-387298.0,-367.0,  380.0, 200728.0, 18.0,  318.0},
+      { 1, 0, 2, 0, 2,-301461.0, -36.0,  816.0, 129025.0,-63.0,  367.0},
+      { 0,-1, 2,-2, 2, 215829.0,-494.0,  111.0, -95929.0,299.0,  132.0},
+
+   /* 11-20 */
+      { 0, 0, 2,-2, 1, 128227.0, 137.0,  181.0, -68982.0, -9.0,   39.0},
+      {-1, 0, 2, 0, 2, 123457.0,  11.0,   19.0, -53311.0, 32.0,   -4.0},
+      {-1, 0, 0, 2, 0, 156994.0,  10.0, -168.0,  -1235.0,  0.0,   82.0},
+      { 1, 0, 0, 0, 1,  63110.0,  63.0,   27.0, -33228.0,  0.0,   -9.0},
+      {-1, 0, 0, 0, 1, -57976.0, -63.0, -189.0,  31429.0,  0.0,  -75.0},
+      {-1, 0, 2, 2, 2, -59641.0, -11.0,  149.0,  25543.0,-11.0,   66.0},
+      { 1, 0, 2, 0, 1, -51613.0, -42.0,  129.0,  26366.0,  0.0,   78.0},
+      {-2, 0, 2, 0, 1,  45893.0,  50.0,   31.0, -24236.0,-10.0,   20.0},
+      { 0, 0, 0, 2, 0,  63384.0,  11.0, -150.0,  -1220.0,  0.0,   29.0},
+      { 0, 0, 2, 2, 2, -38571.0,  -1.0,  158.0,  16452.0,-11.0,   68.0},
+
+   /* 21-30 */
+      { 0,-2, 2,-2, 2,  32481.0,   0.0,    0.0, -13870.0,  0.0,    0.0},
+      {-2, 0, 0, 2, 0, -47722.0,   0.0,  -18.0,    477.0,  0.0,  -25.0},
+      { 2, 0, 2, 0, 2, -31046.0,  -1.0,  131.0,  13238.0,-11.0,   59.0},
+      { 1, 0, 2,-2, 2,  28593.0,   0.0,   -1.0, -12338.0, 10.0,   -3.0},
+      {-1, 0, 2, 0, 1,  20441.0,  21.0,   10.0, -10758.0,  0.0,   -3.0},
+      { 2, 0, 0, 0, 0,  29243.0,   0.0,  -74.0,   -609.0,  0.0,   13.0},
+      { 0, 0, 2, 0, 0,  25887.0,   0.0,  -66.0,   -550.0,  0.0,   11.0},
+      { 0, 1, 0, 0, 1, -14053.0, -25.0,   79.0,   8551.0, -2.0,  -45.0},
+      {-1, 0, 0, 2, 1,  15164.0,  10.0,   11.0,  -8001.0,  0.0,   -1.0},
+      { 0, 2, 2,-2, 2, -15794.0,  72.0,  -16.0,   6850.0,-42.0,   -5.0},
+
+   /* 31-40 */
+      { 0, 0,-2, 2, 0,  21783.0,   0.0,   13.0,   -167.0,  0.0,   13.0},
+      { 1, 0, 0,-2, 1, -12873.0, -10.0,  -37.0,   6953.0,  0.0,  -14.0},
+      { 0,-1, 0, 0, 1, -12654.0,  11.0,   63.0,   6415.0,  0.0,   26.0},
+      {-1, 0, 2, 2, 1, -10204.0,   0.0,   25.0,   5222.0,  0.0,   15.0},
+      { 0, 2, 0, 0, 0,  16707.0, -85.0,  -10.0,    168.0, -1.0,   10.0},
+      { 1, 0, 2, 2, 2,  -7691.0,   0.0,   44.0,   3268.0,  0.0,   19.0},
+      {-2, 0, 2, 0, 0, -11024.0,   0.0,  -14.0,    104.0,  0.0,    2.0},
+      { 0, 1, 2, 0, 2,   7566.0, -21.0,  -11.0,  -3250.0,  0.0,   -5.0},
+      { 0, 0, 2, 2, 1,  -6637.0, -11.0,   25.0,   3353.0,  0.0,   14.0},
+      { 0,-1, 2, 0, 2,  -7141.0,  21.0,    8.0,   3070.0,  0.0,    4.0},
+
+   /* 41-50 */
+      { 0, 0, 0, 2, 1,  -6302.0, -11.0,    2.0,   3272.0,  0.0,    4.0},
+      { 1, 0, 2,-2, 1,   5800.0,  10.0,    2.0,  -3045.0,  0.0,   -1.0},
+      { 2, 0, 2,-2, 2,   6443.0,   0.0,   -7.0,  -2768.0,  0.0,   -4.0},
+      {-2, 0, 0, 2, 1,  -5774.0, -11.0,  -15.0,   3041.0,  0.0,   -5.0},
+      { 2, 0, 2, 0, 1,  -5350.0,   0.0,   21.0,   2695.0,  0.0,   12.0},
+      { 0,-1, 2,-2, 1,  -4752.0, -11.0,   -3.0,   2719.0,  0.0,   -3.0},
+      { 0, 0, 0,-2, 1,  -4940.0, -11.0,  -21.0,   2720.0,  0.0,   -9.0},
+      {-1,-1, 0, 2, 0,   7350.0,   0.0,   -8.0,    -51.0,  0.0,    4.0},
+      { 2, 0, 0,-2, 1,   4065.0,   0.0,    6.0,  -2206.0,  0.0,    1.0},
+      { 1, 0, 0, 2, 0,   6579.0,   0.0,  -24.0,   -199.0,  0.0,    2.0},
+
+   /* 51-60 */
+      { 0, 1, 2,-2, 1,   3579.0,   0.0,    5.0,  -1900.0,  0.0,    1.0},
+      { 1,-1, 0, 0, 0,   4725.0,   0.0,   -6.0,    -41.0,  0.0,    3.0},
+      {-2, 0, 2, 0, 2,  -3075.0,   0.0,   -2.0,   1313.0,  0.0,   -1.0},
+      { 3, 0, 2, 0, 2,  -2904.0,   0.0,   15.0,   1233.0,  0.0,    7.0},
+      { 0,-1, 0, 2, 0,   4348.0,   0.0,  -10.0,    -81.0,  0.0,    2.0},
+      { 1,-1, 2, 0, 2,  -2878.0,   0.0,    8.0,   1232.0,  0.0,    4.0},
+      { 0, 0, 0, 1, 0,  -4230.0,   0.0,    5.0,    -20.0,  0.0,   -2.0},
+      {-1,-1, 2, 2, 2,  -2819.0,   0.0,    7.0,   1207.0,  0.0,    3.0},
+      {-1, 0, 2, 0, 0,  -4056.0,   0.0,    5.0,     40.0,  0.0,   -2.0},
+      { 0,-1, 2, 2, 2,  -2647.0,   0.0,   11.0,   1129.0,  0.0,    5.0},
+
+   /* 61-70 */
+      {-2, 0, 0, 0, 1,  -2294.0,   0.0,  -10.0,   1266.0,  0.0,   -4.0},
+      { 1, 1, 2, 0, 2,   2481.0,   0.0,   -7.0,  -1062.0,  0.0,   -3.0},
+      { 2, 0, 0, 0, 1,   2179.0,   0.0,   -2.0,  -1129.0,  0.0,   -2.0},
+      {-1, 1, 0, 1, 0,   3276.0,   0.0,    1.0,     -9.0,  0.0,    0.0},
+      { 1, 1, 0, 0, 0,  -3389.0,   0.0,    5.0,     35.0,  0.0,   -2.0},
+      { 1, 0, 2, 0, 0,   3339.0,   0.0,  -13.0,   -107.0,  0.0,    1.0},
+      {-1, 0, 2,-2, 1,  -1987.0,   0.0,   -6.0,   1073.0,  0.0,   -2.0},
+      { 1, 0, 0, 0, 2,  -1981.0,   0.0,    0.0,    854.0,  0.0,    0.0},
+      {-1, 0, 0, 1, 0,   4026.0,   0.0, -353.0,   -553.0,  0.0, -139.0},
+      { 0, 0, 2, 1, 2,   1660.0,   0.0,   -5.0,   -710.0,  0.0,   -2.0},
+
+   /* 71-80 */
+      {-1, 0, 2, 4, 2,  -1521.0,   0.0,    9.0,    647.0,  0.0,    4.0},
+      {-1, 1, 0, 1, 1,   1314.0,   0.0,    0.0,   -700.0,  0.0,    0.0},
+      { 0,-2, 2,-2, 1,  -1283.0,   0.0,    0.0,    672.0,  0.0,    0.0},
+      { 1, 0, 2, 2, 1,  -1331.0,   0.0,    8.0,    663.0,  0.0,    4.0},
+      {-2, 0, 2, 2, 2,   1383.0,   0.0,   -2.0,   -594.0,  0.0,   -2.0},
+      {-1, 0, 0, 0, 2,   1405.0,   0.0,    4.0,   -610.0,  0.0,    2.0},
+      { 1, 1, 2,-2, 2,   1290.0,   0.0,    0.0,   -556.0,  0.0,    0.0},
+      {-2, 0, 2, 4, 2,  -1214.0,   0.0,    5.0,    518.0,  0.0,    2.0},
+      {-1, 0, 4, 0, 2,   1146.0,   0.0,   -3.0,   -490.0,  0.0,   -1.0},
+      { 2, 0, 2,-2, 1,   1019.0,   0.0,   -1.0,   -527.0,  0.0,   -1.0},
+
+   /* 81-90 */
+      { 2, 0, 2, 2, 2,  -1100.0,   0.0,    9.0,    465.0,  0.0,    4.0},
+      { 1, 0, 0, 2, 1,   -970.0,   0.0,    2.0,    496.0,  0.0,    1.0},
+      { 3, 0, 0, 0, 0,   1575.0,   0.0,   -6.0,    -50.0,  0.0,    0.0},
+      { 3, 0, 2,-2, 2,    934.0,   0.0,   -3.0,   -399.0,  0.0,   -1.0},
+      { 0, 0, 4,-2, 2,    922.0,   0.0,   -1.0,   -395.0,  0.0,   -1.0},
+      { 0, 1, 2, 0, 1,    815.0,   0.0,   -1.0,   -422.0,  0.0,   -1.0},
+      { 0, 0,-2, 2, 1,    834.0,   0.0,    2.0,   -440.0,  0.0,    1.0},
+      { 0, 0, 2,-2, 3,   1248.0,   0.0,    0.0,   -170.0,  0.0,    1.0},
+      {-1, 0, 0, 4, 0,   1338.0,   0.0,   -5.0,    -39.0,  0.0,    0.0},
+      { 2, 0,-2, 0, 1,    716.0,   0.0,   -2.0,   -389.0,  0.0,   -1.0},
+
+   /* 91-100 */
+      {-2, 0, 0, 4, 0,   1282.0,   0.0,   -3.0,    -23.0,  0.0,    1.0},
+      {-1,-1, 0, 2, 1,    742.0,   0.0,    1.0,   -391.0,  0.0,    0.0},
+      {-1, 0, 0, 1, 1,   1020.0,   0.0,  -25.0,   -495.0,  0.0,  -10.0},
+      { 0, 1, 0, 0, 2,    715.0,   0.0,   -4.0,   -326.0,  0.0,    2.0},
+      { 0, 0,-2, 0, 1,   -666.0,   0.0,   -3.0,    369.0,  0.0,   -1.0},
+      { 0,-1, 2, 0, 1,   -667.0,   0.0,    1.0,    346.0,  0.0,    1.0},
+      { 0, 0, 2,-1, 2,   -704.0,   0.0,    0.0,    304.0,  0.0,    0.0},
+      { 0, 0, 2, 4, 2,   -694.0,   0.0,    5.0,    294.0,  0.0,    2.0},
+      {-2,-1, 0, 2, 0,  -1014.0,   0.0,   -1.0,      4.0,  0.0,   -1.0},
+      { 1, 1, 0,-2, 1,   -585.0,   0.0,   -2.0,    316.0,  0.0,   -1.0},
+
+   /* 101-110 */
+      {-1, 1, 0, 2, 0,   -949.0,   0.0,    1.0,      8.0,  0.0,   -1.0},
+      {-1, 1, 0, 1, 2,   -595.0,   0.0,    0.0,    258.0,  0.0,    0.0},
+      { 1,-1, 0, 0, 1,    528.0,   0.0,    0.0,   -279.0,  0.0,    0.0},
+      { 1,-1, 2, 2, 2,   -590.0,   0.0,    4.0,    252.0,  0.0,    2.0},
+      {-1, 1, 2, 2, 2,    570.0,   0.0,   -2.0,   -244.0,  0.0,   -1.0},
+      { 3, 0, 2, 0, 1,   -502.0,   0.0,    3.0,    250.0,  0.0,    2.0},
+      { 0, 1,-2, 2, 0,   -875.0,   0.0,    1.0,     29.0,  0.0,    0.0},
+      {-1, 0, 0,-2, 1,   -492.0,   0.0,   -3.0,    275.0,  0.0,   -1.0},
+      { 0, 1, 2, 2, 2,    535.0,   0.0,   -2.0,   -228.0,  0.0,   -1.0},
+      {-1,-1, 2, 2, 1,   -467.0,   0.0,    1.0,    240.0,  0.0,    1.0},
+
+   /* 111-120 */
+      { 0,-1, 0, 0, 2,    591.0,   0.0,    0.0,   -253.0,  0.0,    0.0},
+      { 1, 0, 2,-4, 1,   -453.0,   0.0,   -1.0,    244.0,  0.0,   -1.0},
+      {-1, 0,-2, 2, 0,    766.0,   0.0,    1.0,      9.0,  0.0,    0.0},
+      { 0,-1, 2, 2, 1,   -446.0,   0.0,    2.0,    225.0,  0.0,    1.0},
+      { 2,-1, 2, 0, 2,   -488.0,   0.0,    2.0,    207.0,  0.0,    1.0},
+      { 0, 0, 0, 2, 2,   -468.0,   0.0,    0.0,    201.0,  0.0,    0.0},
+      { 1,-1, 2, 0, 1,   -421.0,   0.0,    1.0,    216.0,  0.0,    1.0},
+      {-1, 1, 2, 0, 2,    463.0,   0.0,    0.0,   -200.0,  0.0,    0.0},
+      { 0, 1, 0, 2, 0,   -673.0,   0.0,    2.0,     14.0,  0.0,    0.0},
+      { 0,-1,-2, 2, 0,    658.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 121-130 */
+      { 0, 3, 2,-2, 2,   -438.0,   0.0,    0.0,    188.0,  0.0,    0.0},
+      { 0, 0, 0, 1, 1,   -390.0,   0.0,    0.0,    205.0,  0.0,    0.0},
+      {-1, 0, 2, 2, 0,    639.0, -11.0,   -2.0,    -19.0,  0.0,    0.0},
+      { 2, 1, 2, 0, 2,    412.0,   0.0,   -2.0,   -176.0,  0.0,   -1.0},
+      { 1, 1, 0, 0, 1,   -361.0,   0.0,    0.0,    189.0,  0.0,    0.0},
+      { 1, 1, 2, 0, 1,    360.0,   0.0,   -1.0,   -185.0,  0.0,   -1.0},
+      { 2, 0, 0, 2, 0,    588.0,   0.0,   -3.0,    -24.0,  0.0,    0.0},
+      { 1, 0,-2, 2, 0,   -578.0,   0.0,    1.0,      5.0,  0.0,    0.0},
+      {-1, 0, 0, 2, 2,   -396.0,   0.0,    0.0,    171.0,  0.0,    0.0},
+      { 0, 1, 0, 1, 0,    565.0,   0.0,   -1.0,     -6.0,  0.0,    0.0},
+
+   /* 131-140 */
+      { 0, 1, 0,-2, 1,   -335.0,   0.0,   -1.0,    184.0,  0.0,   -1.0},
+      {-1, 0, 2,-2, 2,    357.0,   0.0,    1.0,   -154.0,  0.0,    0.0},
+      { 0, 0, 0,-1, 1,    321.0,   0.0,    1.0,   -174.0,  0.0,    0.0},
+      {-1, 1, 0, 0, 1,   -301.0,   0.0,   -1.0,    162.0,  0.0,    0.0},
+      { 1, 0, 2,-1, 2,   -334.0,   0.0,    0.0,    144.0,  0.0,    0.0},
+      { 1,-1, 0, 2, 0,    493.0,   0.0,   -2.0,    -15.0,  0.0,    0.0},
+      { 0, 0, 0, 4, 0,    494.0,   0.0,   -2.0,    -19.0,  0.0,    0.0},
+      { 1, 0, 2, 1, 2,    337.0,   0.0,   -1.0,   -143.0,  0.0,   -1.0},
+      { 0, 0, 2, 1, 1,    280.0,   0.0,   -1.0,   -144.0,  0.0,    0.0},
+      { 1, 0, 0,-2, 2,    309.0,   0.0,    1.0,   -134.0,  0.0,    0.0},
+
+   /* 141-150 */
+      {-1, 0, 2, 4, 1,   -263.0,   0.0,    2.0,    131.0,  0.0,    1.0},
+      { 1, 0,-2, 0, 1,    253.0,   0.0,    1.0,   -138.0,  0.0,    0.0},
+      { 1, 1, 2,-2, 1,    245.0,   0.0,    0.0,   -128.0,  0.0,    0.0},
+      { 0, 0, 2, 2, 0,    416.0,   0.0,   -2.0,    -17.0,  0.0,    0.0},
+      {-1, 0, 2,-1, 1,   -229.0,   0.0,    0.0,    128.0,  0.0,    0.0},
+      {-2, 0, 2, 2, 1,    231.0,   0.0,    0.0,   -120.0,  0.0,    0.0},
+      { 4, 0, 2, 0, 2,   -259.0,   0.0,    2.0,    109.0,  0.0,    1.0},
+      { 2,-1, 0, 0, 0,    375.0,   0.0,   -1.0,     -8.0,  0.0,    0.0},
+      { 2, 1, 2,-2, 2,    252.0,   0.0,    0.0,   -108.0,  0.0,    0.0},
+      { 0, 1, 2, 1, 2,   -245.0,   0.0,    1.0,    104.0,  0.0,    0.0},
+
+   /* 151-160 */
+      { 1, 0, 4,-2, 2,    243.0,   0.0,   -1.0,   -104.0,  0.0,    0.0},
+      {-1,-1, 0, 0, 1,    208.0,   0.0,    1.0,   -112.0,  0.0,    0.0},
+      { 0, 1, 0, 2, 1,    199.0,   0.0,    0.0,   -102.0,  0.0,    0.0},
+      {-2, 0, 2, 4, 1,   -208.0,   0.0,    1.0,    105.0,  0.0,    0.0},
+      { 2, 0, 2, 0, 0,    335.0,   0.0,   -2.0,    -14.0,  0.0,    0.0},
+      { 1, 0, 0, 1, 0,   -325.0,   0.0,    1.0,      7.0,  0.0,    0.0},
+      {-1, 0, 0, 4, 1,   -187.0,   0.0,    0.0,     96.0,  0.0,    0.0},
+      {-1, 0, 4, 0, 1,    197.0,   0.0,   -1.0,   -100.0,  0.0,    0.0},
+      { 2, 0, 2, 2, 1,   -192.0,   0.0,    2.0,     94.0,  0.0,    1.0},
+      { 0, 0, 2,-3, 2,   -188.0,   0.0,    0.0,     83.0,  0.0,    0.0},
+
+   /* 161-170 */
+      {-1,-2, 0, 2, 0,    276.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 1, 0, 0, 0,   -286.0,   0.0,    1.0,      6.0,  0.0,    0.0},
+      { 0, 0, 4, 0, 2,    186.0,   0.0,   -1.0,    -79.0,  0.0,    0.0},
+      { 0, 0, 0, 0, 3,   -219.0,   0.0,    0.0,     43.0,  0.0,    0.0},
+      { 0, 3, 0, 0, 0,    276.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 2,-4, 1,   -153.0,   0.0,   -1.0,     84.0,  0.0,    0.0},
+      { 0,-1, 0, 2, 1,   -156.0,   0.0,    0.0,     81.0,  0.0,    0.0},
+      { 0, 0, 0, 4, 1,   -154.0,   0.0,    1.0,     78.0,  0.0,    0.0},
+      {-1,-1, 2, 4, 2,   -174.0,   0.0,    1.0,     75.0,  0.0,    0.0},
+      { 1, 0, 2, 4, 2,   -163.0,   0.0,    2.0,     69.0,  0.0,    1.0},
+
+   /* 171-180 */
+      {-2, 2, 0, 2, 0,   -228.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-2,-1, 2, 0, 1,     91.0,   0.0,   -4.0,    -54.0,  0.0,   -2.0},
+      {-2, 0, 0, 2, 2,    175.0,   0.0,    0.0,    -75.0,  0.0,    0.0},
+      {-1,-1, 2, 0, 2,   -159.0,   0.0,    0.0,     69.0,  0.0,    0.0},
+      { 0, 0, 4,-2, 1,    141.0,   0.0,    0.0,    -72.0,  0.0,    0.0},
+      { 3, 0, 2,-2, 1,    147.0,   0.0,    0.0,    -75.0,  0.0,    0.0},
+      {-2,-1, 0, 2, 1,   -132.0,   0.0,    0.0,     69.0,  0.0,    0.0},
+      { 1, 0, 0,-1, 1,    159.0,   0.0,  -28.0,    -54.0,  0.0,   11.0},
+      { 0,-2, 0, 2, 0,    213.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      {-2, 0, 0, 4, 1,    123.0,   0.0,    0.0,    -64.0,  0.0,    0.0},
+
+   /* 181-190 */
+      {-3, 0, 0, 0, 1,   -118.0,   0.0,   -1.0,     66.0,  0.0,    0.0},
+      { 1, 1, 2, 2, 2,    144.0,   0.0,   -1.0,    -61.0,  0.0,    0.0},
+      { 0, 0, 2, 4, 1,   -121.0,   0.0,    1.0,     60.0,  0.0,    0.0},
+      { 3, 0, 2, 2, 2,   -134.0,   0.0,    1.0,     56.0,  0.0,    1.0},
+      {-1, 1, 2,-2, 1,   -105.0,   0.0,    0.0,     57.0,  0.0,    0.0},
+      { 2, 0, 0,-4, 1,   -102.0,   0.0,    0.0,     56.0,  0.0,    0.0},
+      { 0, 0, 0,-2, 2,    120.0,   0.0,    0.0,    -52.0,  0.0,    0.0},
+      { 2, 0, 2,-4, 1,    101.0,   0.0,    0.0,    -54.0,  0.0,    0.0},
+      {-1, 1, 0, 2, 1,   -113.0,   0.0,    0.0,     59.0,  0.0,    0.0},
+      { 0, 0, 2,-1, 1,   -106.0,   0.0,    0.0,     61.0,  0.0,    0.0},
+
+   /* 191-200 */
+      { 0,-2, 2, 2, 2,   -129.0,   0.0,    1.0,     55.0,  0.0,    0.0},
+      { 2, 0, 0, 2, 1,   -114.0,   0.0,    0.0,     57.0,  0.0,    0.0},
+      { 4, 0, 2,-2, 2,    113.0,   0.0,   -1.0,    -49.0,  0.0,    0.0},
+      { 2, 0, 0,-2, 2,   -102.0,   0.0,    0.0,     44.0,  0.0,    0.0},
+      { 0, 2, 0, 0, 1,    -94.0,   0.0,    0.0,     51.0,  0.0,    0.0},
+      { 1, 0, 0,-4, 1,   -100.0,   0.0,   -1.0,     56.0,  0.0,    0.0},
+      { 0, 2, 2,-2, 1,     87.0,   0.0,    0.0,    -47.0,  0.0,    0.0},
+      {-3, 0, 0, 4, 0,    161.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-1, 1, 2, 0, 1,     96.0,   0.0,    0.0,    -50.0,  0.0,    0.0},
+      {-1,-1, 0, 4, 0,    151.0,   0.0,   -1.0,     -5.0,  0.0,    0.0},
+
+   /* 201-210 */
+      {-1,-2, 2, 2, 2,   -104.0,   0.0,    0.0,     44.0,  0.0,    0.0},
+      {-2,-1, 2, 4, 2,   -110.0,   0.0,    0.0,     48.0,  0.0,    0.0},
+      { 1,-1, 2, 2, 1,   -100.0,   0.0,    1.0,     50.0,  0.0,    0.0},
+      {-2, 1, 0, 2, 0,     92.0,   0.0,   -5.0,     12.0,  0.0,   -2.0},
+      {-2, 1, 2, 0, 1,     82.0,   0.0,    0.0,    -45.0,  0.0,    0.0},
+      { 2, 1, 0,-2, 1,     82.0,   0.0,    0.0,    -45.0,  0.0,    0.0},
+      {-3, 0, 2, 0, 1,    -78.0,   0.0,    0.0,     41.0,  0.0,    0.0},
+      {-2, 0, 2,-2, 1,    -77.0,   0.0,    0.0,     43.0,  0.0,    0.0},
+      {-1, 1, 0, 2, 2,      2.0,   0.0,    0.0,     54.0,  0.0,    0.0},
+      { 0,-1, 2,-1, 2,     94.0,   0.0,    0.0,    -40.0,  0.0,    0.0},
+
+   /* 211-220 */
+      {-1, 0, 4,-2, 2,    -93.0,   0.0,    0.0,     40.0,  0.0,    0.0},
+      { 0,-2, 2, 0, 2,    -83.0,   0.0,   10.0,     40.0,  0.0,   -2.0},
+      {-1, 0, 2, 1, 2,     83.0,   0.0,    0.0,    -36.0,  0.0,    0.0},
+      { 2, 0, 0, 0, 2,    -91.0,   0.0,    0.0,     39.0,  0.0,    0.0},
+      { 0, 0, 2, 0, 3,    128.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-2, 0, 4, 0, 2,    -79.0,   0.0,    0.0,     34.0,  0.0,    0.0},
+      {-1, 0,-2, 0, 1,    -83.0,   0.0,    0.0,     47.0,  0.0,    0.0},
+      {-1, 1, 2, 2, 1,     84.0,   0.0,    0.0,    -44.0,  0.0,    0.0},
+      { 3, 0, 0, 0, 1,     83.0,   0.0,    0.0,    -43.0,  0.0,    0.0},
+      {-1, 0, 2, 3, 2,     91.0,   0.0,    0.0,    -39.0,  0.0,    0.0},
+
+   /* 221-230 */
+      { 2,-1, 2, 0, 1,    -77.0,   0.0,    0.0,     39.0,  0.0,    0.0},
+      { 0, 1, 2, 2, 1,     84.0,   0.0,    0.0,    -43.0,  0.0,    0.0},
+      { 0,-1, 2, 4, 2,    -92.0,   0.0,    1.0,     39.0,  0.0,    0.0},
+      { 2,-1, 2, 2, 2,    -92.0,   0.0,    1.0,     39.0,  0.0,    0.0},
+      { 0, 2,-2, 2, 0,    -94.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 2,-1, 1,     68.0,   0.0,    0.0,    -36.0,  0.0,    0.0},
+      { 0,-2, 0, 0, 1,    -61.0,   0.0,    0.0,     32.0,  0.0,    0.0},
+      { 1, 0, 2,-4, 2,     71.0,   0.0,    0.0,    -31.0,  0.0,    0.0},
+      { 1,-1, 0,-2, 1,     62.0,   0.0,    0.0,    -34.0,  0.0,    0.0},
+      {-1,-1, 2, 0, 1,    -63.0,   0.0,    0.0,     33.0,  0.0,    0.0},
+
+   /* 231-240 */
+      { 1,-1, 2,-2, 2,    -73.0,   0.0,    0.0,     32.0,  0.0,    0.0},
+      {-2,-1, 0, 4, 0,    115.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 0, 0, 3, 0,   -103.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2,-1, 2, 2, 2,     63.0,   0.0,    0.0,    -28.0,  0.0,    0.0},
+      { 0, 2, 2, 0, 2,     74.0,   0.0,    0.0,    -32.0,  0.0,    0.0},
+      { 1, 1, 0, 2, 0,   -103.0,   0.0,   -3.0,      3.0,  0.0,   -1.0},
+      { 2, 0, 2,-1, 2,    -69.0,   0.0,    0.0,     30.0,  0.0,    0.0},
+      { 1, 0, 2, 1, 1,     57.0,   0.0,    0.0,    -29.0,  0.0,    0.0},
+      { 4, 0, 0, 0, 0,     94.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 2, 1, 2, 0, 1,     64.0,   0.0,    0.0,    -33.0,  0.0,    0.0},
+
+   /* 241-250 */
+      { 3,-1, 2, 0, 2,    -63.0,   0.0,    0.0,     26.0,  0.0,    0.0},
+      {-2, 2, 0, 2, 1,    -38.0,   0.0,    0.0,     20.0,  0.0,    0.0},
+      { 1, 0, 2,-3, 1,    -43.0,   0.0,    0.0,     24.0,  0.0,    0.0},
+      { 1, 1, 2,-4, 1,    -45.0,   0.0,    0.0,     23.0,  0.0,    0.0},
+      {-1,-1, 2,-2, 1,     47.0,   0.0,    0.0,    -24.0,  0.0,    0.0},
+      { 0,-1, 0,-1, 1,    -48.0,   0.0,    0.0,     25.0,  0.0,    0.0},
+      { 0,-1, 0,-2, 1,     45.0,   0.0,    0.0,    -26.0,  0.0,    0.0},
+      {-2, 0, 0, 0, 2,     56.0,   0.0,    0.0,    -25.0,  0.0,    0.0},
+      {-2, 0,-2, 2, 0,     88.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 0,-2, 4, 0,    -75.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 251-260 */
+      { 1,-2, 0, 0, 0,     85.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 0, 1, 1,     49.0,   0.0,    0.0,    -26.0,  0.0,    0.0},
+      {-1, 2, 0, 2, 0,    -74.0,   0.0,   -3.0,     -1.0,  0.0,   -1.0},
+      { 1,-1, 2,-2, 1,    -39.0,   0.0,    0.0,     21.0,  0.0,    0.0},
+      { 1, 2, 2,-2, 2,     45.0,   0.0,    0.0,    -20.0,  0.0,    0.0},
+      { 2,-1, 2,-2, 2,     51.0,   0.0,    0.0,    -22.0,  0.0,    0.0},
+      { 1, 0, 2,-1, 1,    -40.0,   0.0,    0.0,     21.0,  0.0,    0.0},
+      { 2, 1, 2,-2, 1,     41.0,   0.0,    0.0,    -21.0,  0.0,    0.0},
+      {-2, 0, 0,-2, 1,    -42.0,   0.0,    0.0,     24.0,  0.0,    0.0},
+      { 1,-2, 2, 0, 2,    -51.0,   0.0,    0.0,     22.0,  0.0,    0.0},
+
+   /* 261-270 */
+      { 0, 1, 2, 1, 1,    -42.0,   0.0,    0.0,     22.0,  0.0,    0.0},
+      { 1, 0, 4,-2, 1,     39.0,   0.0,    0.0,    -21.0,  0.0,    0.0},
+      {-2, 0, 4, 2, 2,     46.0,   0.0,    0.0,    -18.0,  0.0,    0.0},
+      { 1, 1, 2, 1, 2,    -53.0,   0.0,    0.0,     22.0,  0.0,    0.0},
+      { 1, 0, 0, 4, 0,     82.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 1, 0, 2, 2, 0,     81.0,   0.0,   -1.0,     -4.0,  0.0,    0.0},
+      { 2, 0, 2, 1, 2,     47.0,   0.0,    0.0,    -19.0,  0.0,    0.0},
+      { 3, 1, 2, 0, 2,     53.0,   0.0,    0.0,    -23.0,  0.0,    0.0},
+      { 4, 0, 2, 0, 1,    -45.0,   0.0,    0.0,     22.0,  0.0,    0.0},
+      {-2,-1, 2, 0, 0,    -44.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 271-280 */
+      { 0, 1,-2, 2, 1,    -33.0,   0.0,    0.0,     16.0,  0.0,    0.0},
+      { 1, 0,-2, 1, 0,    -61.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 0,-1,-2, 2, 1,     28.0,   0.0,    0.0,    -15.0,  0.0,    0.0},
+      { 2,-1, 0,-2, 1,    -38.0,   0.0,    0.0,     19.0,  0.0,    0.0},
+      {-1, 0, 2,-1, 2,    -33.0,   0.0,    0.0,     21.0,  0.0,    0.0},
+      { 1, 0, 2,-3, 2,    -60.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 2,-2, 3,     48.0,   0.0,    0.0,    -10.0,  0.0,    0.0},
+      { 0, 0, 2,-3, 1,     27.0,   0.0,    0.0,    -14.0,  0.0,    0.0},
+      {-1, 0,-2, 2, 1,     38.0,   0.0,    0.0,    -20.0,  0.0,    0.0},
+      { 0, 0, 2,-4, 2,     31.0,   0.0,    0.0,    -13.0,  0.0,    0.0},
+
+   /* 281-290 */
+      {-2, 1, 0, 0, 1,    -29.0,   0.0,    0.0,     15.0,  0.0,    0.0},
+      {-1, 0, 0,-1, 1,     28.0,   0.0,    0.0,    -15.0,  0.0,    0.0},
+      { 2, 0, 2,-4, 2,    -32.0,   0.0,    0.0,     15.0,  0.0,    0.0},
+      { 0, 0, 4,-4, 4,     45.0,   0.0,    0.0,     -8.0,  0.0,    0.0},
+      { 0, 0, 4,-4, 2,    -44.0,   0.0,    0.0,     19.0,  0.0,    0.0},
+      {-1,-2, 0, 2, 1,     28.0,   0.0,    0.0,    -15.0,  0.0,    0.0},
+      {-2, 0, 0, 3, 0,    -51.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0,-2, 2, 1,    -36.0,   0.0,    0.0,     20.0,  0.0,    0.0},
+      {-3, 0, 2, 2, 2,     44.0,   0.0,    0.0,    -19.0,  0.0,    0.0},
+      {-3, 0, 2, 2, 1,     26.0,   0.0,    0.0,    -14.0,  0.0,    0.0},
+
+   /* 291-300 */
+      {-2, 0, 2, 2, 0,    -60.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2,-1, 0, 0, 1,     35.0,   0.0,    0.0,    -18.0,  0.0,    0.0},
+      {-2, 1, 2, 2, 2,    -27.0,   0.0,    0.0,     11.0,  0.0,    0.0},
+      { 1, 1, 0, 1, 0,     47.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0, 1, 4,-2, 2,     36.0,   0.0,    0.0,    -15.0,  0.0,    0.0},
+      {-1, 1, 0,-2, 1,    -36.0,   0.0,    0.0,     20.0,  0.0,    0.0},
+      { 0, 0, 0,-4, 1,    -35.0,   0.0,    0.0,     19.0,  0.0,    0.0},
+      { 1,-1, 0, 2, 1,    -37.0,   0.0,    0.0,     19.0,  0.0,    0.0},
+      { 1, 1, 0, 2, 1,     32.0,   0.0,    0.0,    -16.0,  0.0,    0.0},
+      {-1, 2, 2, 2, 2,     35.0,   0.0,    0.0,    -14.0,  0.0,    0.0},
+
+   /* 301-310 */
+      { 3, 1, 2,-2, 2,     32.0,   0.0,    0.0,    -13.0,  0.0,    0.0},
+      { 0,-1, 0, 4, 0,     65.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2,-1, 0, 2, 0,     47.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0, 0, 4, 0, 1,     32.0,   0.0,    0.0,    -16.0,  0.0,    0.0},
+      { 2, 0, 4,-2, 2,     37.0,   0.0,    0.0,    -16.0,  0.0,    0.0},
+      {-1,-1, 2, 4, 1,    -30.0,   0.0,    0.0,     15.0,  0.0,    0.0},
+      { 1, 0, 0, 4, 1,    -32.0,   0.0,    0.0,     16.0,  0.0,    0.0},
+      { 1,-2, 2, 2, 2,    -31.0,   0.0,    0.0,     13.0,  0.0,    0.0},
+      { 0, 0, 2, 3, 2,     37.0,   0.0,    0.0,    -16.0,  0.0,    0.0},
+      {-1, 1, 2, 4, 2,     31.0,   0.0,    0.0,    -13.0,  0.0,    0.0},
+
+   /* 311-320 */
+      { 3, 0, 0, 2, 0,     49.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 0, 4, 2, 2,     32.0,   0.0,    0.0,    -13.0,  0.0,    0.0},
+      { 1, 1, 2, 2, 1,     23.0,   0.0,    0.0,    -12.0,  0.0,    0.0},
+      {-2, 0, 2, 6, 2,    -43.0,   0.0,    0.0,     18.0,  0.0,    0.0},
+      { 2, 1, 2, 2, 2,     26.0,   0.0,    0.0,    -11.0,  0.0,    0.0},
+      {-1, 0, 2, 6, 2,    -32.0,   0.0,    0.0,     14.0,  0.0,    0.0},
+      { 1, 0, 2, 4, 1,    -29.0,   0.0,    0.0,     14.0,  0.0,    0.0},
+      { 2, 0, 2, 4, 2,    -27.0,   0.0,    0.0,     12.0,  0.0,    0.0},
+      { 1, 1,-2, 1, 0,     30.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3, 1, 2, 1, 2,    -11.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+
+   /* 321-330 */
+      { 2, 0,-2, 0, 2,    -21.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      {-1, 0, 0, 1, 2,    -34.0,   0.0,    0.0,     15.0,  0.0,    0.0},
+      {-4, 0, 2, 2, 1,    -10.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      {-1,-1, 0, 1, 0,    -36.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0,-2, 2, 2,     -9.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 1, 0, 0,-1, 2,    -12.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 0,-1, 2,-2, 3,    -21.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      {-2, 1, 2, 0, 0,    -29.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0, 0, 2,-2, 4,    -15.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-2,-2, 0, 2, 0,    -20.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 331-340 */
+      {-2, 0,-2, 4, 0,     28.0,   0.0,    0.0,      0.0,  0.0,   -2.0},
+      { 0,-2,-2, 2, 0,     17.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 2, 0,-2, 1,    -22.0,   0.0,    0.0,     12.0,  0.0,    0.0},
+      { 3, 0, 0,-4, 1,    -14.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+      {-1, 1, 2,-2, 2,     24.0,   0.0,    0.0,    -11.0,  0.0,    0.0},
+      { 1,-1, 2,-4, 1,     11.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      { 1, 1, 0,-2, 2,     14.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      {-3, 0, 2, 0, 0,     24.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3, 0, 2, 0, 2,     18.0,   0.0,    0.0,     -8.0,  0.0,    0.0},
+      {-2, 0, 0, 1, 0,    -38.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 341-350 */
+      { 0, 0,-2, 1, 0,    -31.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3, 0, 0, 2, 1,    -16.0,   0.0,    0.0,      8.0,  0.0,    0.0},
+      {-1,-1,-2, 2, 0,     29.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 2,-4, 1,    -18.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      { 2, 1, 0,-4, 1,    -10.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 0, 2, 0,-2, 1,    -17.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      { 1, 0, 0,-3, 1,      9.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      {-2, 0, 2,-2, 2,     16.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      {-2,-1, 0, 0, 1,     22.0,   0.0,    0.0,    -12.0,  0.0,    0.0},
+      {-4, 0, 0, 2, 0,     20.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 351-360 */
+      { 1, 1, 0,-4, 1,    -13.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      {-1, 0, 2,-4, 1,    -17.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      { 0, 0, 4,-4, 1,    -14.0,   0.0,    0.0,      8.0,  0.0,    0.0},
+      { 0, 3, 2,-2, 2,      0.0,   0.0,    0.0,     -7.0,  0.0,    0.0},
+      {-3,-1, 0, 4, 0,     14.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3, 0, 0, 4, 1,     19.0,   0.0,    0.0,    -10.0,  0.0,    0.0},
+      { 1,-1,-2, 2, 0,    -34.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 0, 2, 2,    -20.0,   0.0,    0.0,      8.0,  0.0,    0.0},
+      { 1,-2, 0, 0, 1,      9.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+      { 1,-1, 0, 0, 2,    -18.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+
+   /* 361-370 */
+      { 0, 0, 0, 1, 2,     13.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      {-1,-1, 2, 0, 0,     17.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1,-2, 2,-2, 2,    -12.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 0,-1, 2,-1, 1,     15.0,   0.0,    0.0,     -8.0,  0.0,    0.0},
+      {-1, 0, 2, 0, 3,    -11.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 1, 1, 0, 0, 2,     13.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+      {-1, 1, 2, 0, 0,    -18.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 2, 0, 0, 0,    -35.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 2, 2, 0, 2,      9.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      {-1, 0, 4,-2, 1,    -19.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+
+   /* 371-380 */
+      { 3, 0, 2,-4, 2,    -26.0,   0.0,    0.0,     11.0,  0.0,    0.0},
+      { 1, 2, 2,-2, 1,      8.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 1, 0, 4,-4, 2,    -10.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      {-2,-1, 0, 4, 1,     10.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      { 0,-1, 0, 2, 2,    -21.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      {-2, 1, 0, 4, 0,    -15.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2,-1, 2, 2, 1,      9.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+      { 2, 0,-2, 2, 0,    -29.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 0, 1, 1,    -19.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      { 0, 1, 0, 2, 2,     12.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+
+   /* 381-390 */
+      { 1,-1, 2,-1, 2,     22.0,   0.0,    0.0,     -9.0,  0.0,    0.0},
+      {-2, 0, 4, 0, 1,    -10.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 2, 1, 0, 0, 1,    -20.0,   0.0,    0.0,     11.0,  0.0,    0.0},
+      { 0, 1, 2, 0, 0,    -20.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0,-1, 4,-2, 2,    -17.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+      { 0, 0, 4,-2, 4,     15.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 0, 2, 2, 0, 1,      8.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      {-3, 0, 0, 6, 0,     14.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 0, 4, 1,    -12.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      { 1,-2, 0, 2, 0,     25.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 391-400 */
+      {-1, 0, 0, 4, 2,    -13.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      {-1,-2, 2, 2, 1,    -14.0,   0.0,    0.0,      8.0,  0.0,    0.0},
+      {-1, 0, 0,-2, 2,     13.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+      { 1, 0,-2,-2, 1,    -17.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      { 0, 0,-2,-2, 1,    -12.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      {-2, 0,-2, 0, 1,    -10.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 0, 0, 0, 3, 1,     10.0,   0.0,    0.0,     -6.0,  0.0,    0.0},
+      { 0, 0, 0, 3, 0,    -15.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 1, 0, 4, 0,    -22.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 2, 2, 0,     28.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+
+   /* 401-410 */
+      {-2, 0, 2, 3, 2,     15.0,   0.0,    0.0,     -7.0,  0.0,    0.0},
+      { 1, 0, 0, 2, 2,     23.0,   0.0,    0.0,    -10.0,  0.0,    0.0},
+      { 0,-1, 2, 1, 2,     12.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+      { 3,-1, 0, 0, 0,     29.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 2, 0, 0, 1, 0,    -25.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 1,-1, 2, 0, 0,     22.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0, 2, 1, 0,    -18.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 2, 0, 3,     15.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 3, 1, 0, 0, 0,    -23.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 3,-1, 2,-2, 2,     12.0,   0.0,    0.0,     -5.0,  0.0,    0.0},
+
+   /* 411-420 */
+      { 2, 0, 2,-1, 1,     -8.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 1, 1, 2, 0, 0,    -19.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0, 4,-1, 2,    -10.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 1, 2, 2, 0, 2,     21.0,   0.0,    0.0,     -9.0,  0.0,    0.0},
+      {-2, 0, 0, 6, 0,     23.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0,-1, 0, 4, 1,    -16.0,   0.0,    0.0,      8.0,  0.0,    0.0},
+      {-2,-1, 2, 4, 1,    -19.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      { 0,-2, 2, 2, 1,    -22.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      { 0,-1, 2, 2, 0,     27.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-1, 0, 2, 3, 1,     16.0,   0.0,    0.0,     -8.0,  0.0,    0.0},
+
+   /* 421-430 */
+      {-2, 1, 2, 4, 2,     19.0,   0.0,    0.0,     -8.0,  0.0,    0.0},
+      { 2, 0, 0, 2, 2,      9.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 2,-2, 2, 0, 2,     -9.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      {-1, 1, 2, 3, 2,     -9.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 3, 0, 2,-1, 2,     -8.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 4, 0, 2,-2, 1,     18.0,   0.0,    0.0,     -9.0,  0.0,    0.0},
+      {-1, 0, 0, 6, 0,     16.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-1,-2, 2, 4, 2,    -10.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      {-3, 0, 2, 6, 2,    -23.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      {-1, 0, 2, 4, 0,     16.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+
+   /* 431-440 */
+      { 3, 0, 0, 2, 1,    -12.0,   0.0,    0.0,      6.0,  0.0,    0.0},
+      { 3,-1, 2, 0, 1,     -8.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 3, 0, 2, 0, 0,     30.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 1, 0, 4, 0, 2,     24.0,   0.0,    0.0,    -10.0,  0.0,    0.0},
+      { 5, 0, 2,-2, 2,     10.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 0,-1, 2, 4, 1,    -16.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+      { 2,-1, 2, 2, 1,    -16.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+      { 0, 1, 2, 4, 2,     17.0,   0.0,    0.0,     -7.0,  0.0,    0.0},
+      { 1,-1, 2, 4, 2,    -24.0,   0.0,    0.0,     10.0,  0.0,    0.0},
+      { 3,-1, 2, 2, 2,    -12.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+
+   /* 441-450 */
+      { 3, 0, 2, 2, 1,    -24.0,   0.0,    0.0,     11.0,  0.0,    0.0},
+      { 5, 0, 2, 0, 2,    -23.0,   0.0,    0.0,      9.0,  0.0,    0.0},
+      { 0, 0, 2, 6, 2,    -13.0,   0.0,    0.0,      5.0,  0.0,    0.0},
+      { 4, 0, 2, 2, 2,    -15.0,   0.0,    0.0,      7.0,  0.0,    0.0},
+      { 0,-1, 1,-1, 1,      0.0,   0.0,-1988.0,      0.0,  0.0,-1679.0},
+      {-1, 0, 1, 0, 3,      0.0,   0.0,  -63.0,      0.0,  0.0,  -27.0},
+      { 0,-2, 2,-2, 3,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0,-1, 0, 1,      0.0,   0.0,    5.0,      0.0,  0.0,    4.0},
+      { 2,-2, 0,-2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-1, 0, 1, 0, 2,      0.0,   0.0,  364.0,      0.0,  0.0,  176.0},
+
+   /* 451-460 */
+      {-1, 0, 1, 0, 1,      0.0,   0.0,-1044.0,      0.0,  0.0, -891.0},
+      {-1,-1, 2,-1, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-2, 2, 0, 2, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 0, 1, 0, 0,      0.0,   0.0,  330.0,      0.0,  0.0,    0.0},
+      {-4, 1, 2, 2, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-3, 0, 2, 1, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-2,-1, 2, 0, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 1, 0,-2, 1, 1,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2,-1,-2, 0, 1,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-4, 0, 2, 2, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 461-470 */
+      {-3, 1, 0, 3, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 0,-1, 2, 0,      0.0,   0.0,    5.0,      0.0,  0.0,    0.0},
+      { 0,-2, 0, 0, 2,      0.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 0,-2, 0, 0, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-3, 0, 0, 3, 0,      6.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2,-1, 0, 2, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 0,-2, 3, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-4, 0, 0, 4, 0,    -12.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 1,-2, 0, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 2,-1, 0,-2, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+
+   /* 471-480 */
+      { 0, 0, 1,-1, 0,     -5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 2, 0, 1, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 1, 2, 0, 2,     -7.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 1, 1, 0,-1, 1,      7.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 1, 0, 1,-2, 1,      0.0,   0.0,  -12.0,      0.0,  0.0,  -10.0},
+      { 0, 2, 0, 0, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 1,-1, 2,-3, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 1, 2,-1, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2, 0, 4,-2, 2,     -7.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-2, 0, 4,-2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+
+   /* 481-490 */
+      {-2,-2, 0, 2, 1,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-2, 0,-2, 4, 0,      0.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 2, 2,-4, 1,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 1, 1, 2,-4, 2,      7.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-1, 2, 2,-2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2, 0, 0,-3, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 2, 0, 0, 1,     -5.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 0, 0, 0,-2, 0,      5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 2,-2, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 1, 0, 0, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 491-500 */
+      { 0, 0, 0,-1, 2,     -8.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-2, 1, 0, 1, 0,      9.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1,-2, 0,-2, 1,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 1, 0,-2, 0, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-3, 1, 0, 2, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 1,-2, 2, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 0, 0, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-3, 0, 0, 2, 0,      5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3,-1, 0, 2, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 0, 2,-6, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+
+   /* 501-510 */
+      { 0, 1, 2,-4, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 0, 0,-4, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-2, 1, 2,-2, 1,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0,-1, 2,-4, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 0, 1, 0,-2, 2,      9.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-1, 0, 0,-2, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 0,-2,-2, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-4, 0, 2, 0, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1,-1, 0,-1, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0,-2, 0, 2,      9.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+
+   /* 511-520 */
+      {-3, 0, 0, 1, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 0,-2, 1, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 0,-2, 2, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 0, 0,-4, 2, 0,      8.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2,-1,-2, 2, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 2,-6, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 0, 2,-4, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 1, 0, 0,-4, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 2, 1, 2,-4, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 2, 1, 2,-4, 1,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+
+   /* 521-530 */
+      { 0, 1, 4,-4, 4,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 4,-4, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-1,-1,-2, 4, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-3, 0, 2, 0,      9.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 0,-2, 4, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2,-1, 0, 3, 0,     -3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0,-2, 3, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 0, 0, 3, 1,     -5.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 0,-1, 0, 1, 0,    -13.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3, 0, 2, 2, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 531-540 */
+      { 1, 1,-2, 2, 0,     10.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 1, 0, 2, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 1,-2, 2,-2, 1,     10.0,   0.0,   13.0,      6.0,  0.0,   -5.0},
+      { 0, 0, 1, 0, 2,      0.0,   0.0,   30.0,      0.0,  0.0,   14.0},
+      { 0, 0, 1, 0, 1,      0.0,   0.0, -162.0,      0.0,  0.0, -138.0},
+      { 0, 0, 1, 0, 0,      0.0,   0.0,   75.0,      0.0,  0.0,    0.0},
+      {-1, 2, 0, 2, 1,     -7.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      { 0, 0, 2, 0, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2, 0, 2, 0, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 0, 0,-1, 1,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 541-550 */
+      { 3, 0, 0,-2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 1, 0, 2,-2, 3,     -3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 2, 0, 0, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2, 0, 2,-3, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 1, 4,-2, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2,-2, 0, 4, 0,      6.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0,-3, 0, 2, 0,      9.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0,-2, 4, 0,      5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 0, 3, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 0, 0, 4, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+
+   /* 551-560 */
+      {-1, 0, 0, 3, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2,-2, 0, 0, 0,      7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1,-1, 0, 1, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 0, 0, 2, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0,-2, 2, 0, 1,     -6.0,   0.0,   -3.0,      3.0,  0.0,    1.0},
+      {-1, 0, 1, 2, 1,      0.0,   0.0,   -3.0,      0.0,  0.0,   -2.0},
+      {-1, 1, 0, 3, 0,     11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-1, 2, 1, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0,-1, 2, 0, 0,     11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 1, 2, 2, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+
+   /* 561-570 */
+      { 2,-2, 2,-2, 2,     -1.0,   0.0,    3.0,      3.0,  0.0,   -1.0},
+      { 1, 1, 0, 1, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 1, 0, 1, 0, 1,      0.0,   0.0,  -13.0,      0.0,  0.0,  -11.0},
+      { 1, 0, 1, 0, 0,      3.0,   0.0,    6.0,      0.0,  0.0,    0.0},
+      { 0, 2, 0, 2, 0,     -7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2,-1, 2,-2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 0,-1, 4,-2, 1,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 0, 0, 4,-2, 3,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 4,-2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 4, 0, 2,-4, 2,     -7.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+
+   /* 571-580 */
+      { 2, 2, 2,-2, 2,      8.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 2, 0, 4,-4, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1,-2, 0, 4, 0,     11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1,-3, 2, 2, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-3, 0, 2, 4, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-3, 0, 2,-2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1,-1, 0,-2, 1,      8.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      {-3, 0, 0, 0, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-3, 0,-2, 2, 0,     11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 0,-4, 1,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+
+   /* 581-590 */
+      {-2, 1, 0,-2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-4, 0, 0, 0, 1,     -8.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+      {-1, 0, 0,-4, 1,     -7.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-3, 0, 0,-2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 0, 3, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-1, 1, 0, 4, 1,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 1,-2, 2, 0, 1,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 0, 1, 0, 3, 0,      6.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-1, 0, 2, 2, 3,      6.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 0, 0, 2, 2, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 591-600 */
+      {-2, 0, 2, 2, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 1, 2, 2, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 3, 0, 0, 0, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2, 1, 0, 1, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2,-1, 2,-1, 2,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 0, 0, 2, 0, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 3, 0, 3,      0.0,   0.0,  -26.0,      0.0,  0.0,  -11.0},
+      { 0, 0, 3, 0, 2,      0.0,   0.0,  -10.0,      0.0,  0.0,   -5.0},
+      {-1, 2, 2, 2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-1, 0, 4, 0, 0,    -13.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 601-610 */
+      { 1, 2, 2, 0, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 3, 1, 2,-2, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 1, 1, 4,-2, 2,      7.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-2,-1, 0, 6, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0,-2, 0, 4, 0,      5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-2, 0, 0, 6, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2,-2, 2, 4, 2,     -6.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0,-3, 2, 2, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 0, 4, 2,     -7.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-1,-1, 2, 3, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 611-620 */
+      {-2, 0, 2, 4, 0,     13.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2,-1, 0, 2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 1, 0, 0, 3, 0,     -3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 0, 4, 1,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 0, 1, 0, 4, 0,    -11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1,-1, 2, 1, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 0, 0, 2, 2, 3,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 2, 2, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-1, 0, 2, 2, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-2, 0, 4, 2, 1,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+
+   /* 621-630 */
+      { 2, 1, 0, 2, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 1, 0, 2, 0,    -12.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2,-1, 2, 0, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 2, 1, 0,     -3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 1, 2, 2, 0,     -4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 0, 2, 0, 3,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 3, 0, 2, 0, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 1, 0, 2, 0, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 1, 0, 3, 0, 3,      0.0,   0.0,   -5.0,      0.0,  0.0,   -2.0},
+      { 1, 1, 2, 1, 1,     -7.0,   0.0,    0.0,      4.0,  0.0,    0.0},
+
+   /* 631-640 */
+      { 0, 2, 2, 2, 2,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 2, 1, 2, 0, 0,     -3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 0, 4,-2, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 4, 1, 2,-2, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      {-1,-1, 0, 6, 0,      3.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      {-3,-1, 2, 6, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      {-1, 0, 0, 6, 1,     -5.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-3, 0, 2, 6, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 1,-1, 0, 4, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 1,-1, 0, 4, 0,     12.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 641-650 */
+      {-2, 0, 2, 5, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 1,-2, 2, 2, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 3,-1, 0, 2, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1,-1, 2, 2, 0,      6.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0, 2, 3, 1,      5.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      {-1, 1, 2, 4, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 0, 1, 2, 3, 2,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-1, 0, 4, 2, 1,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 0, 2, 1, 1,      6.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 5, 0, 0, 0, 0,      6.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 651-660 */
+      { 2, 1, 2, 1, 2,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 1, 0, 4, 0, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 3, 1, 2, 0, 1,      7.0,   0.0,    0.0,     -4.0,  0.0,    0.0},
+      { 3, 0, 4,-2, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      {-2,-1, 2, 6, 2,     -5.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 0, 6, 0,      5.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0,-2, 2, 4, 2,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      {-2, 0, 2, 6, 1,     -6.0,   0.0,    0.0,      3.0,  0.0,    0.0},
+      { 2, 0, 0, 4, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 2, 0, 0, 4, 0,     10.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+
+   /* 661-670 */
+      { 2,-2, 2, 2, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 0, 0, 2, 4, 0,      7.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 1, 0, 2, 3, 2,      7.0,   0.0,    0.0,     -3.0,  0.0,    0.0},
+      { 4, 0, 0, 2, 0,      4.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 2, 0, 2, 2, 0,     11.0,   0.0,    0.0,      0.0,  0.0,    0.0},
+      { 0, 0, 4, 2, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 4,-1, 2, 0, 2,     -6.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 3, 0, 2, 1, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 2, 1, 2, 2, 1,      3.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 4, 1, 2, 0, 2,      5.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+
+   /* 671-678 */
+      {-1,-1, 2, 6, 2,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      {-1, 0, 2, 6, 1,     -4.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 1,-1, 2, 4, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0},
+      { 1, 1, 2, 4, 2,      4.0,   0.0,    0.0,     -2.0,  0.0,    0.0},
+      { 3, 1, 2, 2, 2,      3.0,   0.0,    0.0,     -1.0,  0.0,    0.0},
+      { 5, 0, 2, 0, 1,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 2,-1, 2, 4, 2,     -3.0,   0.0,    0.0,      1.0,  0.0,    0.0},
+      { 2, 0, 2, 4, 1,     -3.0,   0.0,    0.0,      2.0,  0.0,    0.0}
+   };
+
+/* Number of terms in the luni-solar nutation model */
+   const int NLS = (int) (sizeof xls / sizeof xls[0]);
+
+/* ------------------------ */
+/* Planetary nutation model */
+/* ------------------------ */
+
+/* The units for the sine and cosine coefficients are */
+/* 0.1 microarcsecond                                 */
+
+   static const struct {
+      int nl,               /* coefficients of l, F, D and Omega */
+          nf,
+          nd,
+          nom,
+          nme,              /* coefficients of planetary longitudes */
+          nve,
+          nea,
+          nma,
+          nju,
+          nsa,
+          nur,
+          nne,
+          npa;              /* coefficient of general precession */
+      int sp,cp;            /* longitude sin, cos coefficients */
+      int se,ce;            /* obliquity sin, cos coefficients */
+   } xpl[] = {
+
+   /* 1-10 */
+      { 0, 0, 0, 0, 0,  0,  8,-16, 4, 5, 0, 0, 0, 1440,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -8, 16,-4,-5, 0, 0, 2,   56,-117,  -42, -40},
+      { 0, 0, 0, 0, 0,  0,  8,-16, 4, 5, 0, 0, 2,  125, -43,    0, -54},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0,-1, 2, 2,    0,   5,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -4,  8,-1,-5, 0, 0, 2,    3,  -7,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  4, -8, 3, 0, 0, 0, 1,    3,   0,    0,  -2},
+      { 0, 1,-1, 1, 0,  0,  3, -8, 3, 0, 0, 0, 0, -114,   0,    0,  61},
+      {-1, 0, 0, 0, 0, 10, -3,  0, 0, 0, 0, 0, 0, -219,  89,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0,-2, 6,-3, 0, 2,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0, -462,1604,    0,   0},
+
+   /* 11-20 */
+      { 0, 1,-1, 1, 0,  0, -5,  8,-3, 0, 0, 0, 0,   99,   0,    0, -53},
+      { 0, 0, 0, 0, 0,  0, -4,  8,-3, 0, 0, 0, 1,   -3,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  4, -8, 1, 5, 0, 0, 2,    0,   6,    2,   0},
+      { 0, 0, 0, 0, 0, -5,  6,  4, 0, 0, 0, 0, 2,    3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2,-5, 0, 0, 2,  -12,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2,-5, 0, 0, 1,   14,-218,  117,   8},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 2,-5, 0, 0, 0,   31,-481, -257, -17},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2,-5, 0, 0, 0, -491, 128,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0,-2, 5, 0, 0, 0,-3084,5123, 2735,1647},
+      { 0, 0, 0, 0, 0,  0,  0,  0,-2, 5, 0, 0, 1,-1444,2409,-1286,-771},
+
+   /* 21-30 */
+      { 0, 0, 0, 0, 0,  0,  0,  0,-2, 5, 0, 0, 2,   11, -24,  -11,  -9},
+      { 2,-1,-1, 0, 0,  0,  3, -7, 0, 0, 0, 0, 0,   26,  -9,    0,   0},
+      { 1, 0,-2, 0, 0, 19,-21,  3, 0, 0, 0, 0, 0,  103, -60,    0,   0},
+      { 0, 1,-1, 1, 0,  2, -4,  0,-3, 0, 0, 0, 0,    0, -13,   -7,   0},
+      { 1, 0,-1, 1, 0,  0, -1,  0, 2, 0, 0, 0, 0,  -26, -29,  -16,  14},
+      { 0, 1,-1, 1, 0,  0, -1,  0,-4,10, 0, 0, 0,    9, -27,  -14,  -5},
+      {-2, 0, 2, 1, 0,  0,  2,  0, 0,-5, 0, 0, 0,   12,   0,    0,  -6},
+      { 0, 0, 0, 0, 0,  3, -7,  4, 0, 0, 0, 0, 0,   -7,   0,    0,   0},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 1,-1, 0, 0, 0,    0,  24,    0,   0},
+      {-2, 0, 2, 1, 0,  0,  2,  0,-2, 0, 0, 0, 0,  284,   0,    0,-151},
+
+   /* 31-40 */
+      {-1, 0, 0, 0, 0, 18,-16,  0, 0, 0, 0, 0, 0,  226, 101,    0,   0},
+      {-2, 1, 1, 2, 0,  0,  1,  0,-2, 0, 0, 0, 0,    0,  -8,   -2,   0},
+      {-1, 1,-1, 1, 0, 18,-17,  0, 0, 0, 0, 0, 0,    0,  -6,   -3,   0},
+      {-1, 0, 1, 1, 0,  0,  2, -2, 0, 0, 0, 0, 0,    5,   0,    0,  -3},
+      { 0, 0, 0, 0, 0, -8, 13,  0, 0, 0, 0, 0, 2,  -41, 175,   76,  17},
+      { 0, 2,-2, 2, 0, -8, 11,  0, 0, 0, 0, 0, 0,    0,  15,    6,   0},
+      { 0, 0, 0, 0, 0, -8, 13,  0, 0, 0, 0, 0, 1,  425, 212, -133, 269},
+      { 0, 1,-1, 1, 0, -8, 12,  0, 0, 0, 0, 0, 0, 1200, 598,  319,-641},
+      { 0, 0, 0, 0, 0,  8,-13,  0, 0, 0, 0, 0, 0,  235, 334,    0,   0},
+      { 0, 1,-1, 1, 0,  8,-14,  0, 0, 0, 0, 0, 0,   11, -12,   -7,  -6},
+
+   /* 41-50 */
+      { 0, 0, 0, 0, 0,  8,-13,  0, 0, 0, 0, 0, 1,    5,  -6,    3,   3},
+      {-2, 0, 2, 1, 0,  0,  2,  0,-4, 5, 0, 0, 0,   -5,   0,    0,   3},
+      {-2, 0, 2, 2, 0,  3, -3,  0, 0, 0, 0, 0, 0,    6,   0,    0,  -3},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-3, 1, 0, 0, 0,   15,   0,    0,   0},
+      { 0, 0, 0, 1, 0,  3, -5,  0, 2, 0, 0, 0, 0,   13,   0,    0,  -7},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-4, 3, 0, 0, 0,   -6,  -9,    0,   0},
+      { 0,-1, 1, 0, 0,  0,  0,  2, 0, 0, 0, 0, 0,  266, -78,    0,   0},
+      { 0, 0, 0, 1, 0,  0, -1,  2, 0, 0, 0, 0, 0, -460,-435, -232, 246},
+      { 0, 1,-1, 2, 0,  0, -2,  2, 0, 0, 0, 0, 0,    0,  15,    7,   0},
+      {-1, 1, 0, 1, 0,  3, -5,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   2},
+
+   /* 51-60 */
+      {-1, 0, 1, 0, 0,  3, -4,  0, 0, 0, 0, 0, 0,    0, 131,    0,   0},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-2,-2, 0, 0, 0,    4,   0,    0,   0},
+      {-2, 2, 0, 2, 0,  0, -5,  9, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 0,-1, 0, 0,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 1, 0, 0,    0,   3,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 0, 0, 2, 0,  -17, -19,  -10,   9},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 0, 2, 1,   -9, -11,    6,  -5},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 0, 2, 2,   -6,   0,    0,   3},
+      {-1, 0, 1, 0, 0,  0,  3, -4, 0, 0, 0, 0, 0,  -16,   8,    0,   0},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 0, 2, 0, 0, 0,    0,   3,    0,   0},
+
+   /* 61-70 */
+      { 0, 1,-1, 2, 0,  0, -1,  0, 0, 2, 0, 0, 0,   11,  24,   11,  -5},
+      { 0, 0, 0, 1, 0,  0, -9, 17, 0, 0, 0, 0, 0,   -3,  -4,   -2,   1},
+      { 0, 0, 0, 2, 0, -3,  5,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 1,-1, 1, 0,  0, -1,  0,-1, 2, 0, 0, 0,    0,  -8,   -4,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 1,-2, 0, 0, 0,    0,   3,    0,   0},
+      { 1, 0,-2, 0, 0, 17,-16,  0,-2, 0, 0, 0, 0,    0,   5,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 1,-3, 0, 0, 0,    0,   3,    2,   0},
+      {-2, 0, 2, 1, 0,  0,  5, -6, 0, 0, 0, 0, 0,   -6,   4,    2,   3},
+      { 0,-2, 2, 0, 0,  0,  9,-13, 0, 0, 0, 0, 0,   -3,  -5,    0,   0},
+      { 0, 1,-1, 2, 0,  0, -1,  0, 0, 1, 0, 0, 0,   -5,   0,    0,   2},
+
+   /* 71-80 */
+      { 0, 0, 0, 1, 0,  0,  0,  0, 0, 1, 0, 0, 0,    4,  24,   13,  -2},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 0, 1, 0, 0, 0,  -42,  20,    0,   0},
+      { 0,-2, 2, 0, 0,  5, -6,  0, 0, 0, 0, 0, 0,  -10, 233,    0,   0},
+      { 0,-1, 1, 1, 0,  5, -7,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+      {-2, 0, 2, 0, 0,  6, -8,  0, 0, 0, 0, 0, 0,   78, -18,    0,   0},
+      { 2, 1,-3, 1, 0, -6,  7,  0, 0, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 0, 0, 2, 0,  0,  0,  0, 1, 0, 0, 0, 0,    0,  -3,   -1,   0},
+      { 0,-1, 1, 1, 0,  0,  1,  0, 1, 0, 0, 0, 0,    0,  -4,   -2,   1},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 0, 2, 0, 0,    0,  -8,   -4,  -1},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 2, 0, 1,    0,  -5,    3,   0},
+
+   /* 81-90 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 2, 0, 2,   -7,   0,    0,   3},
+      { 0, 0, 0, 0, 0,  0, -8, 15, 0, 0, 0, 0, 2,  -14,   8,    3,   6},
+      { 0, 0, 0, 0, 0,  0, -8, 15, 0, 0, 0, 0, 1,    0,   8,   -4,   0},
+      { 0, 1,-1, 1, 0,  0, -9, 15, 0, 0, 0, 0, 0,    0,  19,   10,   0},
+      { 0, 0, 0, 0, 0,  0,  8,-15, 0, 0, 0, 0, 0,   45, -22,    0,   0},
+      { 1,-1,-1, 0, 0,  0,  8,-15, 0, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 2, 0,-2, 0, 0,  2, -5,  0, 0, 0, 0, 0, 0,    0,  -3,    0,   0},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-5, 5, 0, 0, 0,    0,   3,    0,   0},
+      { 2, 0,-2, 1, 0,  0, -6,  8, 0, 0, 0, 0, 0,    3,   5,    3,  -2},
+      { 2, 0,-2, 1, 0,  0, -2,  0, 3, 0, 0, 0, 0,   89, -16,   -9, -48},
+
+   /* 91-100 */
+      {-2, 1, 1, 0, 0,  0,  1,  0,-3, 0, 0, 0, 0,    0,   3,    0,   0},
+      {-2, 1, 1, 1, 0,  0,  1,  0,-3, 0, 0, 0, 0,   -3,   7,    4,   2},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-3, 0, 0, 0, 0, -349, -62,    0,   0},
+      {-2, 0, 2, 0, 0,  0,  6, -8, 0, 0, 0, 0, 0,  -15,  22,    0,   0},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-1,-5, 0, 0, 0,   -3,   0,    0,   0},
+      {-1, 0, 1, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,  -53,   0,    0,   0},
+      {-1, 1, 1, 1, 0,-20, 20,  0, 0, 0, 0, 0, 0,    5,   0,    0,  -3},
+      { 1, 0,-2, 0, 0, 20,-21,  0, 0, 0, 0, 0, 0,    0,  -8,    0,   0},
+      { 0, 0, 0, 1, 0,  0,  8,-15, 0, 0, 0, 0, 0,   15,  -7,   -4,  -8},
+      { 0, 2,-2, 1, 0,  0,-10, 15, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+
+   /* 101-110 */
+      { 0,-1, 1, 0, 0,  0,  1,  0, 1, 0, 0, 0, 0,  -21, -78,    0,   0},
+      { 0, 0, 0, 1, 0,  0,  0,  0, 1, 0, 0, 0, 0,   20, -70,  -37, -11},
+      { 0, 1,-1, 2, 0,  0, -1,  0, 1, 0, 0, 0, 0,    0,   6,    3,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0,-2, 4, 0, 0, 0,    5,   3,    2,  -2},
+      { 2, 0,-2, 1, 0, -6,  8,  0, 0, 0, 0, 0, 0,  -17,  -4,   -2,   9},
+      { 0,-2, 2, 1, 0,  5, -6,  0, 0, 0, 0, 0, 0,    0,   6,    3,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0,-1, 0, 0, 1,   32,  15,   -8,  17},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0,-1, 0, 0, 0,  174,  84,   45, -93},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 1, 0, 0, 0,   11,  56,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 1, 0, 0, 0,  -66, -12,   -6,  35},
+
+   /* 111-120 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 1, 0, 0, 1,   47,   8,    4, -25},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 1, 0, 0, 2,    0,   8,    4,   0},
+      { 0, 2,-2, 1, 0,  0, -9, 13, 0, 0, 0, 0, 0,   10, -22,  -12,  -5},
+      { 0, 0, 0, 1, 0,  0,  7,-13, 0, 0, 0, 0, 0,   -3,   0,    0,   2},
+      {-2, 0, 2, 0, 0,  0,  5, -6, 0, 0, 0, 0, 0,  -24,  12,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  9,-17, 0, 0, 0, 0, 0,    5,  -6,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -9, 17, 0, 0, 0, 0, 2,    3,   0,    0,  -2},
+      { 1, 0,-1, 1, 0,  0, -3,  4, 0, 0, 0, 0, 0,    4,   3,    1,  -2},
+      { 1, 0,-1, 1, 0, -3,  4,  0, 0, 0, 0, 0, 0,    0,  29,   15,   0},
+      { 0, 0, 0, 2, 0,  0, -1,  2, 0, 0, 0, 0, 0,   -5,  -4,   -2,   2},
+
+   /* 121-130 */
+      { 0,-1, 1, 1, 0,  0,  0,  2, 0, 0, 0, 0, 0,    8,  -3,   -1,  -5},
+      { 0,-2, 2, 0, 1,  0, -2,  0, 0, 0, 0, 0, 0,    0,  -3,    0,   0},
+      { 0, 0, 0, 0, 0,  3, -5,  0, 2, 0, 0, 0, 0,   10,   0,    0,   0},
+      {-2, 0, 2, 1, 0,  0,  2,  0,-3, 1, 0, 0, 0,    3,   0,    0,  -2},
+      {-2, 0, 2, 1, 0,  3, -3,  0, 0, 0, 0, 0, 0,   -5,   0,    0,   3},
+      { 0, 0, 0, 1, 0,  8,-13,  0, 0, 0, 0, 0, 0,   46,  66,   35, -25},
+      { 0,-1, 1, 0, 0,  8,-12,  0, 0, 0, 0, 0, 0,  -14,   7,    0,   0},
+      { 0, 2,-2, 1, 0, -8, 11,  0, 0, 0, 0, 0, 0,    0,   3,    2,   0},
+      {-1, 0, 1, 0, 0,  0,  2, -2, 0, 0, 0, 0, 0,   -5,   0,    0,   0},
+      {-1, 0, 0, 1, 0, 18,-16,  0, 0, 0, 0, 0, 0,  -68, -34,  -18,  36},
+
+   /* 131-140 */
+      { 0, 1,-1, 1, 0,  0, -1,  0,-1, 1, 0, 0, 0,    0,  14,    7,   0},
+      { 0, 0, 0, 1, 0,  3, -7,  4, 0, 0, 0, 0, 0,   10,  -6,   -3,  -5},
+      {-2, 1, 1, 1, 0,  0, -3,  7, 0, 0, 0, 0, 0,   -5,  -4,   -2,   3},
+      { 0, 1,-1, 2, 0,  0, -1,  0,-2, 5, 0, 0, 0,   -3,   5,    2,   1},
+      { 0, 0, 0, 1, 0,  0,  0,  0,-2, 5, 0, 0, 0,   76,  17,    9, -41},
+      { 0, 0, 0, 1, 0,  0, -4,  8,-3, 0, 0, 0, 0,   84, 298,  159, -45},
+      { 1, 0, 0, 1, 0,-10,  3,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 2,-2, 1, 0,  0, -2,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   2},
+      {-1, 0, 0, 1, 0, 10, -3,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+      { 0, 0, 0, 1, 0,  0,  4, -8, 3, 0, 0, 0, 0,  -82, 292,  156,  44},
+
+   /* 141-150 */
+      { 0, 0, 0, 1, 0,  0,  0,  0, 2,-5, 0, 0, 0,  -73,  17,    9,  39},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 2,-5, 0, 0, 0,   -9, -16,    0,   0},
+      { 2,-1,-1, 1, 0,  0,  3, -7, 0, 0, 0, 0, 0,    3,   0,   -1,  -2},
+      {-2, 0, 2, 0, 0,  0,  2,  0, 0,-5, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 1, 0, -3,  7, -4, 0, 0, 0, 0, 0,   -9,  -5,   -3,   5},
+      {-2, 0, 2, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0, -439,   0,    0,   0},
+      { 1, 0, 0, 1, 0,-18, 16,  0, 0, 0, 0, 0, 0,   57, -28,  -15, -30},
+      {-2, 1, 1, 1, 0,  0,  1,  0,-2, 0, 0, 0, 0,    0,  -6,   -3,   0},
+      { 0, 1,-1, 2, 0, -8, 12,  0, 0, 0, 0, 0, 0,   -4,   0,    0,   2},
+      { 0, 0, 0, 1, 0, -8, 13,  0, 0, 0, 0, 0, 0,  -40,  57,   30,  21},
+
+   /* 151-160 */
+      { 0, 0, 0, 0, 0,  0,  1, -2, 0, 0, 0, 0, 1,   23,   7,    3, -13},
+      { 0, 1,-1, 1, 0,  0,  0, -2, 0, 0, 0, 0, 0,  273,  80,   43,-146},
+      { 0, 0, 0, 0, 0,  0,  1, -2, 0, 0, 0, 0, 0, -449, 430,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -2,  2, 0, 0, 0, 0, 0,   -8, -47,  -25,   4},
+      { 0, 0, 0, 0, 0,  0, -1,  2, 0, 0, 0, 0, 1,    6,  47,   25,  -3},
+      {-1, 0, 1, 1, 0,  3, -4,  0, 0, 0, 0, 0, 0,    0,  23,   13,   0},
+      {-1, 0, 1, 1, 0,  0,  3, -4, 0, 0, 0, 0, 0,   -3,   0,    0,   2},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0,-2, 0, 0, 0,    3,  -4,   -2,  -2},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 2, 0, 0, 0,  -48,-110,  -59,  26},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 2, 0, 0, 1,   51, 114,   61, -27},
+
+   /* 161-170 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 2, 0, 0, 2, -133,   0,    0,  57},
+      { 0, 1,-1, 0, 0,  3, -6,  0, 0, 0, 0, 0, 0,    0,   4,    0,   0},
+      { 0, 0, 0, 1, 0, -3,  5,  0, 0, 0, 0, 0, 0,  -21,  -6,   -3,  11},
+      { 0, 1,-1, 2, 0, -3,  4,  0, 0, 0, 0, 0, 0,    0,  -3,   -1,   0},
+      { 0, 0, 0, 1, 0,  0, -2,  4, 0, 0, 0, 0, 0,  -11, -21,  -11,   6},
+      { 0, 2,-2, 1, 0, -5,  6,  0, 0, 0, 0, 0, 0,  -18,-436, -233,   9},
+      { 0,-1, 1, 0, 0,  5, -7,  0, 0, 0, 0, 0, 0,   35,  -7,    0,   0},
+      { 0, 0, 0, 1, 0,  5, -8,  0, 0, 0, 0, 0, 0,    0,   5,    3,   0},
+      {-2, 0, 2, 1, 0,  6, -8,  0, 0, 0, 0, 0, 0,   11,  -3,   -1,  -6},
+      { 0, 0, 0, 1, 0,  0, -8, 15, 0, 0, 0, 0, 0,   -5,  -3,   -1,   3},
+
+   /* 171-180 */
+      {-2, 0, 2, 1, 0,  0,  2,  0,-3, 0, 0, 0, 0,  -53,  -9,   -5,  28},
+      {-2, 0, 2, 1, 0,  0,  6, -8, 0, 0, 0, 0, 0,    0,   3,    2,   1},
+      { 1, 0,-1, 1, 0,  0, -1,  0, 1, 0, 0, 0, 0,    4,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 3,-5, 0, 0, 0,    0,  -4,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0,-1, 0, 0, 0, 0,  -50, 194,  103,  27},
+      { 0, 0, 0, 0, 0,  0,  0,  0,-1, 0, 0, 0, 1,  -13,  52,   28,   7},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 1, 0, 0, 0, 0,  -91, 248,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 1, 0, 0, 0, 1,    6,  49,   26,  -3},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 1, 0, 0, 0, 0,   -6, -47,  -25,   3},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 1, 0, 0, 0, 1,    0,   5,    3,   0},
+
+   /* 181-190 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 1, 0, 0, 0, 2,   52,  23,   10, -23},
+      { 0, 1,-1, 2, 0,  0, -1,  0, 0,-1, 0, 0, 0,   -3,   0,    0,   1},
+      { 0, 0, 0, 1, 0,  0,  0,  0, 0,-1, 0, 0, 0,    0,   5,    3,   0},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 0,-1, 0, 0, 0,   -4,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -7, 13, 0, 0, 0, 0, 2,   -4,   8,    3,   2},
+      { 0, 0, 0, 0, 0,  0,  7,-13, 0, 0, 0, 0, 0,   10,   0,    0,   0},
+      { 2, 0,-2, 1, 0,  0, -5,  6, 0, 0, 0, 0, 0,    3,   0,    0,  -2},
+      { 0, 2,-2, 1, 0,  0, -8, 11, 0, 0, 0, 0, 0,    0,   8,    4,   0},
+      { 0, 2,-2, 1,-1,  0,  2,  0, 0, 0, 0, 0, 0,    0,   8,    4,   1},
+      {-2, 0, 2, 0, 0,  0,  4, -4, 0, 0, 0, 0, 0,   -4,   0,    0,   0},
+
+   /* 191-200 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2,-2, 0, 0, 0,   -4,   0,    0,   0},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 0, 3, 0, 0, 0,   -8,   4,    2,   4},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 3, 0, 0, 1,    8,  -4,   -2,  -4},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 3, 0, 0, 2,    0,  15,    7,   0},
+      {-2, 0, 2, 0, 0,  3, -3,  0, 0, 0, 0, 0, 0, -138,   0,    0,   0},
+      { 0, 0, 0, 2, 0,  0, -4,  8,-3, 0, 0, 0, 0,    0,  -7,   -3,   0},
+      { 0, 0, 0, 2, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,  -7,   -3,   0},
+      { 2, 0,-2, 1, 0,  0, -2,  0, 2, 0, 0, 0, 0,   54,   0,    0, -29},
+      { 0, 1,-1, 2, 0,  0, -1,  0, 2, 0, 0, 0, 0,    0,  10,    4,   0},
+      { 0, 1,-1, 2, 0,  0,  0, -2, 0, 0, 0, 0, 0,   -7,   0,    0,   3},
+
+   /* 201-210 */
+      { 0, 0, 0, 1, 0,  0,  1, -2, 0, 0, 0, 0, 0,  -37,  35,   19,  20},
+      { 0,-1, 1, 0, 0,  0,  2, -2, 0, 0, 0, 0, 0,    0,   4,    0,   0},
+      { 0,-1, 1, 0, 0,  0,  1,  0, 0,-2, 0, 0, 0,   -4,   9,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -2,  0, 0, 2, 0, 0, 0,    8,   0,    0,  -4},
+      { 0, 1,-1, 1, 0,  3, -6,  0, 0, 0, 0, 0, 0,   -9, -14,   -8,   5},
+      { 0, 0, 0, 0, 0,  3, -5,  0, 0, 0, 0, 0, 1,   -3,  -9,   -5,   3},
+      { 0, 0, 0, 0, 0,  3, -5,  0, 0, 0, 0, 0, 0, -145,  47,    0,   0},
+      { 0, 1,-1, 1, 0, -3,  4,  0, 0, 0, 0, 0, 0,  -10,  40,   21,   5},
+      { 0, 0, 0, 0, 0, -3,  5,  0, 0, 0, 0, 0, 1,   11, -49,  -26,  -7},
+      { 0, 0, 0, 0, 0, -3,  5,  0, 0, 0, 0, 0, 2,-2150,   0,    0, 932},
+
+   /* 211-220 */
+      { 0, 2,-2, 2, 0, -3,  3,  0, 0, 0, 0, 0, 0,  -12,   0,    0,   5},
+      { 0, 0, 0, 0, 0, -3,  5,  0, 0, 0, 0, 0, 2,   85,   0,    0, -37},
+      { 0, 0, 0, 0, 0,  0,  2, -4, 0, 0, 0, 0, 1,    4,   0,    0,  -2},
+      { 0, 1,-1, 1, 0,  0,  1, -4, 0, 0, 0, 0, 0,    3,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  2, -4, 0, 0, 0, 0, 0,  -86, 153,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -2,  4, 0, 0, 0, 0, 1,   -6,   9,    5,   3},
+      { 0, 1,-1, 1, 0,  0, -3,  4, 0, 0, 0, 0, 0,    9, -13,   -7,  -5},
+      { 0, 0, 0, 0, 0,  0, -2,  4, 0, 0, 0, 0, 1,   -8,  12,    6,   4},
+      { 0, 0, 0, 0, 0,  0, -2,  4, 0, 0, 0, 0, 2,  -51,   0,    0,  22},
+      { 0, 0, 0, 0, 0, -5,  8,  0, 0, 0, 0, 0, 2,  -11,-268, -116,   5},
+
+   /* 221-230 */
+      { 0, 2,-2, 2, 0, -5,  6,  0, 0, 0, 0, 0, 0,    0,  12,    5,   0},
+      { 0, 0, 0, 0, 0, -5,  8,  0, 0, 0, 0, 0, 2,    0,   7,    3,   0},
+      { 0, 0, 0, 0, 0, -5,  8,  0, 0, 0, 0, 0, 1,   31,   6,    3, -17},
+      { 0, 1,-1, 1, 0, -5,  7,  0, 0, 0, 0, 0, 0,  140,  27,   14, -75},
+      { 0, 0, 0, 0, 0, -5,  8,  0, 0, 0, 0, 0, 1,   57,  11,    6, -30},
+      { 0, 0, 0, 0, 0,  5, -8,  0, 0, 0, 0, 0, 0,  -14, -39,    0,   0},
+      { 0, 1,-1, 2, 0,  0, -1,  0,-1, 0, 0, 0, 0,    0,  -6,   -2,   0},
+      { 0, 0, 0, 1, 0,  0,  0,  0,-1, 0, 0, 0, 0,    4,  15,    8,  -2},
+      { 0,-1, 1, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,    0,   4,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -2,  0, 1, 0, 0, 0, 0,   -3,   0,    0,   1},
+
+   /* 231-240 */
+      { 0, 0, 0, 0, 0,  0, -6, 11, 0, 0, 0, 0, 2,    0,  11,    5,   0},
+      { 0, 0, 0, 0, 0,  0,  6,-11, 0, 0, 0, 0, 0,    9,   6,    0,   0},
+      { 0, 0, 0, 0,-1,  0,  4,  0, 0, 0, 0, 0, 2,   -4,  10,    4,   2},
+      { 0, 0, 0, 0, 1,  0, -4,  0, 0, 0, 0, 0, 0,    5,   3,    0,   0},
+      { 2, 0,-2, 1, 0, -3,  3,  0, 0, 0, 0, 0, 0,   16,   0,    0,  -9},
+      {-2, 0, 2, 0, 0,  0,  2,  0, 0,-2, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -7,  9, 0, 0, 0, 0, 0,    0,   3,    2,  -1},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 4,-5, 0, 0, 2,    7,   0,    0,  -3},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2, 0, 0, 0, 0,  -25,  22,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2, 0, 0, 0, 1,   42, 223,  119, -22},
+
+   /* 241-250 */
+      { 0, 1,-1, 1, 0,  0, -1,  0, 2, 0, 0, 0, 0,  -27,-143,  -77,  14},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2, 0, 0, 0, 1,    9,  49,   26,  -5},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 2, 0, 0, 0, 2,-1166,   0,    0, 505},
+      { 0, 2,-2, 2, 0,  0, -2,  0, 2, 0, 0, 0, 0,   -5,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 5, 0, 0, 2,   -6,   0,    0,   3},
+      { 0, 0, 0, 1, 0,  3, -5,  0, 0, 0, 0, 0, 0,   -8,   0,    1,   4},
+      { 0,-1, 1, 0, 0,  3, -4,  0, 0, 0, 0, 0, 0,    0,  -4,    0,   0},
+      { 0, 2,-2, 1, 0, -3,  3,  0, 0, 0, 0, 0, 0,  117,   0,    0, -63},
+      { 0, 0, 0, 1, 0,  0,  2, -4, 0, 0, 0, 0, 0,   -4,   8,    4,   2},
+      { 0, 2,-2, 1, 0,  0, -4,  4, 0, 0, 0, 0, 0,    3,   0,    0,  -2},
+
+   /* 251-260 */
+      { 0, 1,-1, 2, 0, -5,  7,  0, 0, 0, 0, 0, 0,   -5,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  3, -6, 0, 0, 0, 0, 0,    0,  31,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -3,  6, 0, 0, 0, 0, 1,   -5,   0,    1,   3},
+      { 0, 1,-1, 1, 0,  0, -4,  6, 0, 0, 0, 0, 0,    4,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0, -3,  6, 0, 0, 0, 0, 1,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0, -3,  6, 0, 0, 0, 0, 2,  -24, -13,   -6,  10},
+      { 0,-1, 1, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0,    3,   0,    0,   0},
+      { 0, 0, 0, 1, 0,  2, -3,  0, 0, 0, 0, 0, 0,    0, -32,  -17,   0},
+      { 0, 0, 0, 0, 0,  0, -5,  9, 0, 0, 0, 0, 2,    8,  12,    5,  -3},
+      { 0, 0, 0, 0, 0,  0, -5,  9, 0, 0, 0, 0, 1,    3,   0,    0,  -1},
+
+   /* 261-270 */
+      { 0, 0, 0, 0, 0,  0,  5, -9, 0, 0, 0, 0, 0,    7,  13,    0,   0},
+      { 0,-1, 1, 0, 0,  0,  1,  0,-2, 0, 0, 0, 0,   -3,  16,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -2,  0, 2, 0, 0, 0, 0,   50,   0,    0, -27},
+      {-2, 1, 1, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,  -5,   -3,   0},
+      { 0,-2, 2, 0, 0,  3, -3,  0, 0, 0, 0, 0, 0,   13,   0,    0,   0},
+      { 0, 0, 0, 0, 0, -6, 10,  0, 0, 0, 0, 0, 1,    0,   5,    3,   1},
+      { 0, 0, 0, 0, 0, -6, 10,  0, 0, 0, 0, 0, 2,   24,   5,    2, -11},
+      { 0, 0, 0, 0, 0, -2,  3,  0, 0, 0, 0, 0, 2,    5, -11,   -5,  -2},
+      { 0, 0, 0, 0, 0, -2,  3,  0, 0, 0, 0, 0, 1,   30,  -3,   -2, -16},
+      { 0, 1,-1, 1, 0, -2,  2,  0, 0, 0, 0, 0, 0,   18,   0,    0,  -9},
+
+   /* 271-280 */
+      { 0, 0, 0, 0, 0,  2, -3,  0, 0, 0, 0, 0, 0,    8, 614,    0,   0},
+      { 0, 0, 0, 0, 0,  2, -3,  0, 0, 0, 0, 0, 1,    3,  -3,   -1,  -2},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 3, 0, 0, 0, 1,    6,  17,    9,  -3},
+      { 0, 1,-1, 1, 0,  0, -1,  0, 3, 0, 0, 0, 0,   -3,  -9,   -5,   2},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 3, 0, 0, 0, 1,    0,   6,    3,  -1},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 3, 0, 0, 0, 2, -127,  21,    9,  55},
+      { 0, 0, 0, 0, 0,  0,  4, -8, 0, 0, 0, 0, 0,    3,   5,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -4,  8, 0, 0, 0, 0, 2,   -6, -10,   -4,   3},
+      { 0,-2, 2, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,    5,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -4,  7, 0, 0, 0, 0, 2,   16,   9,    4,  -7},
+
+   /* 281-290 */
+      { 0, 0, 0, 0, 0,  0, -4,  7, 0, 0, 0, 0, 1,    3,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  4, -7, 0, 0, 0, 0, 0,    0,  22,    0,   0},
+      { 0, 0, 0, 1, 0, -2,  3,  0, 0, 0, 0, 0, 0,    0,  19,   10,   0},
+      { 0, 2,-2, 1, 0,  0, -2,  0, 3, 0, 0, 0, 0,    7,   0,    0,  -4},
+      { 0, 0, 0, 0, 0,  0, -5, 10, 0, 0, 0, 0, 2,    0,  -5,   -2,   0},
+      { 0, 0, 0, 1, 0, -1,  2,  0, 0, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  0, 4, 0, 0, 0, 2,   -9,   3,    1,   4},
+      { 0, 0, 0, 0, 0,  0, -3,  5, 0, 0, 0, 0, 2,   17,   0,    0,  -7},
+      { 0, 0, 0, 0, 0,  0, -3,  5, 0, 0, 0, 0, 1,    0,  -3,   -2,  -1},
+      { 0, 0, 0, 0, 0,  0,  3, -5, 0, 0, 0, 0, 0,  -20,  34,    0,   0},
+
+   /* 291-300 */
+      { 0, 0, 0, 0, 0,  1, -2,  0, 0, 0, 0, 0, 1,  -10,   0,    1,   5},
+      { 0, 1,-1, 1, 0,  1, -3,  0, 0, 0, 0, 0, 0,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  1, -2,  0, 0, 0, 0, 0, 0,   22, -87,    0,   0},
+      { 0, 0, 0, 0, 0, -1,  2,  0, 0, 0, 0, 0, 1,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0, -1,  2,  0, 0, 0, 0, 0, 2,   -3,  -6,   -2,   1},
+      { 0, 0, 0, 0, 0, -7, 11,  0, 0, 0, 0, 0, 2,  -16,  -3,   -1,   7},
+      { 0, 0, 0, 0, 0, -7, 11,  0, 0, 0, 0, 0, 1,    0,  -3,   -2,   0},
+      { 0,-2, 2, 0, 0,  4, -4,  0, 0, 0, 0, 0, 0,    4,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  2, -3, 0, 0, 0, 0, 0,  -68,  39,    0,   0},
+      { 0, 2,-2, 1, 0, -4,  4,  0, 0, 0, 0, 0, 0,   27,   0,    0, -14},
+
+   /* 301-310 */
+      { 0,-1, 1, 0, 0,  4, -5,  0, 0, 0, 0, 0, 0,    0,  -4,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1, -1, 0, 0, 0, 0, 0,  -25,   0,    0,   0},
+      { 0, 0, 0, 0, 0, -4,  7,  0, 0, 0, 0, 0, 1,  -12,  -3,   -2,   6},
+      { 0, 1,-1, 1, 0, -4,  6,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0, -4,  7,  0, 0, 0, 0, 0, 2,    3,  66,   29,  -1},
+      { 0, 0, 0, 0, 0, -4,  6,  0, 0, 0, 0, 0, 2,  490,   0,    0,-213},
+      { 0, 0, 0, 0, 0, -4,  6,  0, 0, 0, 0, 0, 1,  -22,  93,   49,  12},
+      { 0, 1,-1, 1, 0, -4,  5,  0, 0, 0, 0, 0, 0,   -7,  28,   15,   4},
+      { 0, 0, 0, 0, 0, -4,  6,  0, 0, 0, 0, 0, 1,   -3,  13,    7,   2},
+      { 0, 0, 0, 0, 0,  4, -6,  0, 0, 0, 0, 0, 0,  -46,  14,    0,   0},
+
+   /* 311-320 */
+      {-2, 0, 2, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0,   -5,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  1, 0, 0, 0, 0, 0,    2,   1,    0,   0},
+      { 0,-1, 1, 0, 0,  1,  0,  0, 0, 0, 0, 0, 0,    0,  -3,    0,   0},
+      { 0, 0, 0, 1, 0,  1, -1,  0, 0, 0, 0, 0, 0,  -28,   0,    0,  15},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 5, 0, 0, 0, 2,    5,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  1, -3, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -1,  3, 0, 0, 0, 0, 2,  -11,   0,    0,   5},
+      { 0, 0, 0, 0, 0,  0, -7, 12, 0, 0, 0, 0, 2,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0, -1,  1,  0, 0, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0, -1,  1,  0, 0, 0, 0, 0, 1,   25, 106,   57, -13},
+
+   /* 321-330 */
+      { 0, 1,-1, 1, 0, -1,  0,  0, 0, 0, 0, 0, 0,    5,  21,   11,  -3},
+      { 0, 0, 0, 0, 0,  1, -1,  0, 0, 0, 0, 0, 0, 1485,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  1, -1,  0, 0, 0, 0, 0, 1,   -7, -32,  -17,   4},
+      { 0, 1,-1, 1, 0,  1, -2,  0, 0, 0, 0, 0, 0,    0,   5,    3,   0},
+      { 0, 0, 0, 0, 0,  0, -2,  5, 0, 0, 0, 0, 2,   -6,  -3,   -2,   3},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 4, 0, 0, 0, 2,   30,  -6,   -2, -13},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-4, 0, 0, 0, 0,   -4,   4,    0,   0},
+      { 0, 0, 0, 1, 0, -1,  1,  0, 0, 0, 0, 0, 0,  -19,   0,    0,  10},
+      { 0, 0, 0, 0, 0,  0, -6, 10, 0, 0, 0, 0, 2,    0,   4,    2,  -1},
+      { 0, 0, 0, 0, 0,  0, -6, 10, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+
+   /* 331-340 */
+      { 0, 2,-2, 1, 0,  0, -3,  0, 3, 0, 0, 0, 0,    4,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0, -3,  7, 0, 0, 0, 0, 2,    0,  -3,   -1,   0},
+      {-2, 0, 2, 0, 0,  4, -4,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -5,  8, 0, 0, 0, 0, 2,    5,   3,    1,  -2},
+      { 0, 0, 0, 0, 0,  0,  5, -8, 0, 0, 0, 0, 0,    0,  11,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 3, 0, 0, 0, 2,  118,   0,    0, -52},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 3, 0, 0, 0, 1,    0,  -5,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-3, 0, 0, 0, 0,  -28,  36,    0,   0},
+      { 0, 0, 0, 0, 0,  2, -4,  0, 0, 0, 0, 0, 0,    5,  -5,    0,   0},
+      { 0, 0, 0, 0, 0, -2,  4,  0, 0, 0, 0, 0, 1,   14, -59,  -31,  -8},
+
+   /* 341-350 */
+      { 0, 1,-1, 1, 0, -2,  3,  0, 0, 0, 0, 0, 0,    0,   9,    5,   1},
+      { 0, 0, 0, 0, 0, -2,  4,  0, 0, 0, 0, 0, 2, -458,   0,    0, 198},
+      { 0, 0, 0, 0, 0, -6,  9,  0, 0, 0, 0, 0, 2,    0, -45,  -20,   0},
+      { 0, 0, 0, 0, 0, -6,  9,  0, 0, 0, 0, 0, 1,    9,   0,    0,  -5},
+      { 0, 0, 0, 0, 0,  6, -9,  0, 0, 0, 0, 0, 0,    0,  -3,    0,   0},
+      { 0, 0, 0, 1, 0,  0,  1,  0,-2, 0, 0, 0, 0,    0,  -4,   -2,  -1},
+      { 0, 2,-2, 1, 0, -2,  2,  0, 0, 0, 0, 0, 0,   11,   0,    0,  -6},
+      { 0, 0, 0, 0, 0,  0, -4,  6, 0, 0, 0, 0, 2,    6,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  4, -6, 0, 0, 0, 0, 0,  -16,  23,    0,   0},
+      { 0, 0, 0, 1, 0,  3, -4,  0, 0, 0, 0, 0, 0,    0,  -4,   -2,   0},
+
+   /* 351-360 */
+      { 0, 0, 0, 0, 0,  0, -1,  0, 2, 0, 0, 0, 2,   -5,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-2, 0, 0, 0, 0, -166, 269,    0,   0},
+      { 0, 0, 0, 1, 0,  0,  1,  0,-1, 0, 0, 0, 0,   15,   0,    0,  -8},
+      { 0, 0, 0, 0, 0, -5,  9,  0, 0, 0, 0, 0, 2,   10,   0,    0,  -4},
+      { 0, 0, 0, 0, 0,  0,  3, -4, 0, 0, 0, 0, 0,  -78,  45,    0,   0},
+      { 0, 0, 0, 0, 0, -3,  4,  0, 0, 0, 0, 0, 2,    0,  -5,   -2,   0},
+      { 0, 0, 0, 0, 0, -3,  4,  0, 0, 0, 0, 0, 1,    7,   0,    0,  -4},
+      { 0, 0, 0, 0, 0,  3, -4,  0, 0, 0, 0, 0, 0,   -5, 328,    0,   0},
+      { 0, 0, 0, 0, 0,  3, -4,  0, 0, 0, 0, 0, 1,    3,   0,    0,  -2},
+      { 0, 0, 0, 1, 0,  0,  2, -2, 0, 0, 0, 0, 0,    5,   0,    0,  -2},
+
+   /* 361-370 */
+      { 0, 0, 0, 1, 0,  0, -1,  0, 2, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0,-3, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 1,-5, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 1, 0, 0, 0, 1,    0,  -4,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,-1223, -26,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-1, 0, 0, 0, 1,    0,   7,    3,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-3, 5, 0, 0, 0,    3,   0,    0,   0},
+      { 0, 0, 0, 1, 0, -3,  4,  0, 0, 0, 0, 0, 0,    0,   3,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0,-2, 0, 0, 0,   -6,  20,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  2, -2, 0, 0, 0, 0, 0, -368,   0,    0,   0},
+
+   /* 371-380 */
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0,-1, 0, 0, 0,  -75,   0,    0,   0},
+      { 0, 0, 0, 1, 0,  0, -1,  0, 1, 0, 0, 0, 0,   11,   0,    0,  -6},
+      { 0, 0, 0, 1, 0,  0, -2,  2, 0, 0, 0, 0, 0,    3,   0,    0,  -2},
+      { 0, 0, 0, 0, 0, -8, 14,  0, 0, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 2,-5, 0, 0, 0,  -13, -30,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -8, 3, 0, 0, 0, 0,   21,   3,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -8, 3, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 0, 0, 0, 0, 1,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0, 0, 0, 0, 0,    8, -27,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  3, -8, 3, 0, 0, 0, 0,  -19, -11,    0,   0},
+
+   /* 381-390 */
+      { 0, 0, 0, 0, 0,  0, -3,  8,-3, 0, 0, 0, 2,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  1,  0,-2, 5, 0, 0, 2,    0,   5,    2,   0},
+      { 0, 0, 0, 0, 0, -8, 12,  0, 0, 0, 0, 0, 2,   -6,   0,    0,   2},
+      { 0, 0, 0, 0, 0, -8, 12,  0, 0, 0, 0, 0, 0,   -8,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 1,-2, 0, 0, 0,   -1,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0, 1, 0, 0, 2,  -14,   0,    0,   6},
+      { 0, 0, 0, 0, 0,  0,  0,  2, 0, 0, 0, 0, 0,    6,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  0,  2, 0, 0, 0, 0, 2,  -74,   0,    0,  32},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 0, 2, 0, 0, 2,    0,  -3,   -1,   0},
+      { 0, 2,-2, 1, 0, -5,  5,  0, 0, 0, 0, 0, 0,    4,   0,    0,  -2},
+
+   /* 391-400 */
+      { 0, 0, 0, 0, 0,  0,  1,  0, 1, 0, 0, 0, 0,    8,  11,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 1, 0, 0, 0, 1,    0,   3,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 1, 0, 0, 0, 2, -262,   0,    0, 114},
+      { 0, 0, 0, 0, 0,  3, -6,  0, 0, 0, 0, 0, 0,    0,  -4,    0,   0},
+      { 0, 0, 0, 0, 0, -3,  6,  0, 0, 0, 0, 0, 1,   -7,   0,    0,   4},
+      { 0, 0, 0, 0, 0, -3,  6,  0, 0, 0, 0, 0, 2,    0, -27,  -12,   0},
+      { 0, 0, 0, 0, 0,  0, -1,  4, 0, 0, 0, 0, 2,  -19,  -8,   -4,   8},
+      { 0, 0, 0, 0, 0, -5,  7,  0, 0, 0, 0, 0, 2,  202,   0,    0, -87},
+      { 0, 0, 0, 0, 0, -5,  7,  0, 0, 0, 0, 0, 1,   -8,  35,   19,   5},
+      { 0, 1,-1, 1, 0, -5,  6,  0, 0, 0, 0, 0, 0,    0,   4,    2,   0},
+
+   /* 401-410 */
+      { 0, 0, 0, 0, 0,  5, -7,  0, 0, 0, 0, 0, 0,   16,  -5,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -1,  0, 1, 0, 0, 0, 0,    5,   0,    0,  -3},
+      { 0, 0, 0, 0, 0,  0, -1,  0, 1, 0, 0, 0, 0,    0,  -3,    0,   0},
+      { 0, 0, 0, 0,-1,  0,  3,  0, 0, 0, 0, 0, 2,    1,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 2, 0, 0, 0, 2,  -35, -48,  -21,  15},
+      { 0, 0, 0, 0, 0,  0, -2,  6, 0, 0, 0, 0, 2,   -3,  -5,   -2,   1},
+      { 0, 0, 0, 1, 0,  2, -2,  0, 0, 0, 0, 0, 0,    6,   0,    0,  -3},
+      { 0, 0, 0, 0, 0,  0, -6,  9, 0, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  0,  6, -9, 0, 0, 0, 0, 0,    0,  -5,    0,   0},
+      { 0, 0, 0, 0, 0, -2,  2,  0, 0, 0, 0, 0, 1,   12,  55,   29,  -6},
+
+   /* 411-420 */
+      { 0, 1,-1, 1, 0, -2,  1,  0, 0, 0, 0, 0, 0,    0,   5,    3,   0},
+      { 0, 0, 0, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0, -598,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  2, -2,  0, 0, 0, 0, 0, 1,   -3, -13,   -7,   1},
+      { 0, 0, 0, 0, 0,  0,  1,  0, 3, 0, 0, 0, 2,   -5,  -7,   -3,   2},
+      { 0, 0, 0, 0, 0,  0, -5,  7, 0, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  0,  5, -7, 0, 0, 0, 0, 0,    5,  -7,    0,   0},
+      { 0, 0, 0, 1, 0, -2,  2,  0, 0, 0, 0, 0, 0,    4,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  4, -5, 0, 0, 0, 0, 0,   16,  -6,    0,   0},
+      { 0, 0, 0, 0, 0,  1, -3,  0, 0, 0, 0, 0, 0,    8,  -3,    0,   0},
+      { 0, 0, 0, 0, 0, -1,  3,  0, 0, 0, 0, 0, 1,    8, -31,  -16,  -4},
+
+   /* 421-430 */
+      { 0, 1,-1, 1, 0, -1,  2,  0, 0, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0, -1,  3,  0, 0, 0, 0, 0, 2,  113,   0,    0, -49},
+      { 0, 0, 0, 0, 0, -7, 10,  0, 0, 0, 0, 0, 2,    0, -24,  -10,   0},
+      { 0, 0, 0, 0, 0, -7, 10,  0, 0, 0, 0, 0, 1,    4,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  3, -3, 0, 0, 0, 0, 0,   27,   0,    0,   0},
+      { 0, 0, 0, 0, 0, -4,  8,  0, 0, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0, -4,  5,  0, 0, 0, 0, 0, 2,    0,  -4,   -2,   0},
+      { 0, 0, 0, 0, 0, -4,  5,  0, 0, 0, 0, 0, 1,    5,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  4, -5,  0, 0, 0, 0, 0, 0,    0,  -3,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  1, 0, 0, 0, 0, 2,  -13,   0,    0,   6},
+
+   /* 431-440 */
+      { 0, 0, 0, 0, 0,  0, -2,  0, 5, 0, 0, 0, 2,    5,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  0,  0,  3, 0, 0, 0, 0, 2,  -18, -10,   -4,   8},
+      { 0, 0, 0, 0, 0,  1,  0,  0, 0, 0, 0, 0, 0,   -4, -28,    0,   0},
+      { 0, 0, 0, 0, 0,  1,  0,  0, 0, 0, 0, 0, 2,   -5,   6,    3,   2},
+      { 0, 0, 0, 0, 0, -9, 13,  0, 0, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0,  0, -1,  5, 0, 0, 0, 0, 2,   -5,  -9,   -4,   2},
+      { 0, 0, 0, 0, 0,  0, -2,  0, 4, 0, 0, 0, 2,   17,   0,    0,  -7},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-4, 0, 0, 0, 0,   11,   4,    0,   0},
+      { 0, 0, 0, 0, 0,  0, -2,  7, 0, 0, 0, 0, 2,    0,  -6,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-3, 0, 0, 0, 0,   83,  15,    0,   0},
+
+   /* 441-450 */
+      { 0, 0, 0, 0, 0, -2,  5,  0, 0, 0, 0, 0, 1,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0, -2,  5,  0, 0, 0, 0, 0, 2,    0,-114,  -49,   0},
+      { 0, 0, 0, 0, 0, -6,  8,  0, 0, 0, 0, 0, 2,  117,   0,    0, -51},
+      { 0, 0, 0, 0, 0, -6,  8,  0, 0, 0, 0, 0, 1,   -5,  19,   10,   2},
+      { 0, 0, 0, 0, 0,  6, -8,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 1, 0,  0,  2,  0,-2, 0, 0, 0, 0,   -3,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0, -3,  9, 0, 0, 0, 0, 2,    0,  -3,   -1,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -6, 0, 0, 0, 0, 0,    3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -6, 0, 0, 0, 0, 2,    0,  -6,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,  393,   3,    0,   0},
+
+   /* 451-460 */
+      { 0, 0, 0, 0, 0,  0,  2,  0,-2, 0, 0, 0, 1,   -4,  21,   11,   2},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-2, 0, 0, 0, 2,   -6,   0,   -1,   3},
+      { 0, 0, 0, 0, 0, -5, 10,  0, 0, 0, 0, 0, 2,   -3,   8,    4,   1},
+      { 0, 0, 0, 0, 0,  0,  4, -4, 0, 0, 0, 0, 0,    8,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  4, -4, 0, 0, 0, 0, 2,   18, -29,  -13,  -8},
+      { 0, 0, 0, 0, 0, -3,  3,  0, 0, 0, 0, 0, 1,    8,  34,   18,  -4},
+      { 0, 0, 0, 0, 0,  3, -3,  0, 0, 0, 0, 0, 0,   89,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  3, -3,  0, 0, 0, 0, 0, 1,    3,  12,    6,  -1},
+      { 0, 0, 0, 0, 0,  3, -3,  0, 0, 0, 0, 0, 2,   54, -15,   -7, -24},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0,-3, 0, 0, 0,    0,   3,    0,   0},
+
+   /* 461-470 */
+      { 0, 0, 0, 0, 0,  0, -5, 13, 0, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-1, 0, 0, 0, 0,    0,  35,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-1, 0, 0, 0, 2, -154, -30,  -13,  67},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0,-2, 0, 0, 0,   15,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0,-2, 0, 0, 1,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  3, -2, 0, 0, 0, 0, 0,    0,   9,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  3, -2, 0, 0, 0, 0, 2,   80, -71,  -31, -35},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0,-1, 0, 0, 2,    0, -20,   -9,   0},
+      { 0, 0, 0, 0, 0,  0, -6, 15, 0, 0, 0, 0, 2,   11,   5,    2,  -5},
+      { 0, 0, 0, 0, 0, -8, 15,  0, 0, 0, 0, 0, 2,   61, -96,  -42, -27},
+
+   /* 471-480 */
+      { 0, 0, 0, 0, 0, -3,  9, -4, 0, 0, 0, 0, 2,   14,   9,    4,  -6},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 2,-5, 0, 0, 2,  -11,  -6,   -3,   5},
+      { 0, 0, 0, 0, 0,  0, -2,  8,-1,-5, 0, 0, 2,    0,  -3,   -1,   0},
+      { 0, 0, 0, 0, 0,  0,  6, -8, 3, 0, 0, 0, 2,  123,-415, -180, -53},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 0, 0, 0, 0,    0,   0,    0, -35},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 0, 0, 0, 0,   -5,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 0, 0, 0, 1,    7, -32,  -17,  -4},
+      { 0, 1,-1, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,  -9,   -5,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 0, 0, 0, 1,    0,  -4,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 0, 0, 0, 2,  -89,   0,    0,  38},
+
+   /* 481-490 */
+      { 0, 0, 0, 0, 0,  0, -6, 16,-4,-5, 0, 0, 2,    0, -86,  -19,  -6},
+      { 0, 0, 0, 0, 0,  0, -2,  8,-3, 0, 0, 0, 2,    0,   0,  -19,   6},
+      { 0, 0, 0, 0, 0,  0, -2,  8,-3, 0, 0, 0, 2, -123,-416, -180,  53},
+      { 0, 0, 0, 0, 0,  0,  6, -8, 1, 5, 0, 0, 2,    0,  -3,   -1,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-2, 5, 0, 0, 2,   12,  -6,   -3,  -5},
+      { 0, 0, 0, 0, 0,  3, -5,  4, 0, 0, 0, 0, 2,  -13,   9,    4,   6},
+      { 0, 0, 0, 0, 0, -8, 11,  0, 0, 0, 0, 0, 2,    0, -15,   -7,   0},
+      { 0, 0, 0, 0, 0, -8, 11,  0, 0, 0, 0, 0, 1,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0, -8, 11,  0, 0, 0, 0, 0, 2,  -62, -97,  -42,  27},
+      { 0, 0, 0, 0, 0,  0, 11,  0, 0, 0, 0, 0, 2,  -11,   5,    2,   5},
+
+   /* 491-500 */
+      { 0, 0, 0, 0, 0,  0,  2,  0, 0, 1, 0, 0, 2,    0, -19,   -8,   0},
+      { 0, 0, 0, 0, 0,  3, -3,  0, 2, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 2,-2, 1, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,   4,    2,   0},
+      { 0, 1,-1, 0, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+      { 0, 2,-2, 1, 0,  0, -4,  8,-3, 0, 0, 0, 0,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  1,  2, 0, 0, 0, 0, 2,  -85, -70,  -31,  37},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 1, 0, 0, 0, 2,  163, -12,   -5, -72},
+      { 0, 0, 0, 0, 0, -3,  7,  0, 0, 0, 0, 0, 2,  -63, -16,   -7,  28},
+      { 0, 0, 0, 0, 0,  0,  0,  4, 0, 0, 0, 0, 2,  -21, -32,  -14,   9},
+      { 0, 0, 0, 0, 0, -5,  6,  0, 0, 0, 0, 0, 2,    0,  -3,   -1,   0},
+
+   /* 501-510 */
+      { 0, 0, 0, 0, 0, -5,  6,  0, 0, 0, 0, 0, 1,    3,   0,    0,  -2},
+      { 0, 0, 0, 0, 0,  5, -6,  0, 0, 0, 0, 0, 0,    0,   8,    0,   0},
+      { 0, 0, 0, 0, 0,  5, -6,  0, 0, 0, 0, 0, 2,    3,  10,    4,  -1},
+      { 0, 0, 0, 0, 0,  0,  2,  0, 2, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  0, -1,  6, 0, 0, 0, 0, 2,    0,  -7,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  7, -9, 0, 0, 0, 0, 2,    0,  -4,   -2,   0},
+      { 0, 0, 0, 0, 0,  2, -1,  0, 0, 0, 0, 0, 0,    6,  19,    0,   0},
+      { 0, 0, 0, 0, 0,  2, -1,  0, 0, 0, 0, 0, 2,    5,-173,  -75,  -2},
+      { 0, 0, 0, 0, 0,  0,  6, -7, 0, 0, 0, 0, 2,    0,  -7,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -5, 0, 0, 0, 0, 2,    7, -12,   -5,  -3},
+
+   /* 511-520 */
+      { 0, 0, 0, 0, 0, -1,  4,  0, 0, 0, 0, 0, 1,   -3,   0,    0,   2},
+      { 0, 0, 0, 0, 0, -1,  4,  0, 0, 0, 0, 0, 2,    3,  -4,   -2,  -1},
+      { 0, 0, 0, 0, 0, -7,  9,  0, 0, 0, 0, 0, 2,   74,   0,    0, -32},
+      { 0, 0, 0, 0, 0, -7,  9,  0, 0, 0, 0, 0, 1,   -3,  12,    6,   2},
+      { 0, 0, 0, 0, 0,  0,  4, -3, 0, 0, 0, 0, 2,   26, -14,   -6, -11},
+      { 0, 0, 0, 0, 0,  0,  3, -1, 0, 0, 0, 0, 2,   19,   0,    0,  -8},
+      { 0, 0, 0, 0, 0, -4,  4,  0, 0, 0, 0, 0, 1,    6,  24,   13,  -3},
+      { 0, 0, 0, 0, 0,  4, -4,  0, 0, 0, 0, 0, 0,   83,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  4, -4,  0, 0, 0, 0, 0, 1,    0, -10,   -5,   0},
+      { 0, 0, 0, 0, 0,  4, -4,  0, 0, 0, 0, 0, 2,   11,  -3,   -1,  -5},
+
+   /* 521-530 */
+      { 0, 0, 0, 0, 0,  0,  2,  1, 0, 0, 0, 0, 2,    3,   0,    1,  -1},
+      { 0, 0, 0, 0, 0,  0, -3,  0, 5, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  1,  1,  0, 0, 0, 0, 0, 0,   -4,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  1,  1,  0, 0, 0, 0, 0, 1,    5, -23,  -12,  -3},
+      { 0, 0, 0, 0, 0,  1,  1,  0, 0, 0, 0, 0, 2, -339,   0,    0, 147},
+      { 0, 0, 0, 0, 0, -9, 12,  0, 0, 0, 0, 0, 2,    0, -10,   -5,   0},
+      { 0, 0, 0, 0, 0,  0,  3,  0,-4, 0, 0, 0, 0,    5,   0,    0,   0},
+      { 0, 2,-2, 1, 0,  1, -1,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  0,  7, -8, 0, 0, 0, 0, 2,    0,  -4,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  3,  0,-3, 0, 0, 0, 0,   18,  -3,    0,   0},
+
+   /* 531-540 */
+      { 0, 0, 0, 0, 0,  0,  3,  0,-3, 0, 0, 0, 2,    9, -11,   -5,  -4},
+      { 0, 0, 0, 0, 0, -2,  6,  0, 0, 0, 0, 0, 2,   -8,   0,    0,   4},
+      { 0, 0, 0, 0, 0, -6,  7,  0, 0, 0, 0, 0, 1,    3,   0,    0,  -1},
+      { 0, 0, 0, 0, 0,  6, -7,  0, 0, 0, 0, 0, 0,    0,   9,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  6, -6, 0, 0, 0, 0, 2,    6,  -9,   -4,  -2},
+      { 0, 0, 0, 0, 0,  0,  3,  0,-2, 0, 0, 0, 0,   -4, -12,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  3,  0,-2, 0, 0, 0, 2,   67, -91,  -39, -29},
+      { 0, 0, 0, 0, 0,  0,  5, -4, 0, 0, 0, 0, 2,   30, -18,   -8, -13},
+      { 0, 0, 0, 0, 0,  3, -2,  0, 0, 0, 0, 0, 0,    0,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  3, -2,  0, 0, 0, 0, 0, 2,    0,-114,  -50,   0},
+
+   /* 541-550 */
+      { 0, 0, 0, 0, 0,  0,  3,  0,-1, 0, 0, 0, 2,    0,   0,    0,  23},
+      { 0, 0, 0, 0, 0,  0,  3,  0,-1, 0, 0, 0, 2,  517,  16,    7,-224},
+      { 0, 0, 0, 0, 0,  0,  3,  0, 0,-2, 0, 0, 2,    0,  -7,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  4, -2, 0, 0, 0, 0, 2,  143,  -3,   -1, -62},
+      { 0, 0, 0, 0, 0,  0,  3,  0, 0,-1, 0, 0, 2,   29,   0,    0, -13},
+      { 0, 2,-2, 1, 0,  0,  1,  0,-1, 0, 0, 0, 0,   -4,   0,    0,   2},
+      { 0, 0, 0, 0, 0, -8, 16,  0, 0, 0, 0, 0, 2,   -6,   0,    0,   3},
+      { 0, 0, 0, 0, 0,  0,  3,  0, 2,-5, 0, 0, 2,    5,  12,    5,  -2},
+      { 0, 0, 0, 0, 0,  0,  7, -8, 3, 0, 0, 0, 2,  -25,   0,    0,  11},
+      { 0, 0, 0, 0, 0,  0, -5, 16,-4,-5, 0, 0, 2,   -3,   0,    0,   1},
+
+   /* 551-560 */
+      { 0, 0, 0, 0, 0,  0,  3,  0, 0, 0, 0, 0, 2,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0,  0, -1,  8,-3, 0, 0, 0, 2,  -22,  12,    5,  10},
+      { 0, 0, 0, 0, 0, -8, 10,  0, 0, 0, 0, 0, 2,   50,   0,    0, -22},
+      { 0, 0, 0, 0, 0, -8, 10,  0, 0, 0, 0, 0, 1,    0,   7,    4,   0},
+      { 0, 0, 0, 0, 0, -8, 10,  0, 0, 0, 0, 0, 2,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0,  0,  2,  2, 0, 0, 0, 0, 2,   -4,   4,    2,   2},
+      { 0, 0, 0, 0, 0,  0,  3,  0, 1, 0, 0, 0, 2,   -5, -11,   -5,   2},
+      { 0, 0, 0, 0, 0, -3,  8,  0, 0, 0, 0, 0, 2,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0, -5,  5,  0, 0, 0, 0, 0, 1,    4,  17,    9,  -2},
+      { 0, 0, 0, 0, 0,  5, -5,  0, 0, 0, 0, 0, 0,   59,   0,    0,   0},
+
+   /* 561-570 */
+      { 0, 0, 0, 0, 0,  5, -5,  0, 0, 0, 0, 0, 1,    0,  -4,   -2,   0},
+      { 0, 0, 0, 0, 0,  5, -5,  0, 0, 0, 0, 0, 2,   -8,   0,    0,   4},
+      { 0, 0, 0, 0, 0,  2,  0,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  2,  0,  0, 0, 0, 0, 0, 1,    4, -15,   -8,  -2},
+      { 0, 0, 0, 0, 0,  2,  0,  0, 0, 0, 0, 0, 2,  370,  -8,    0,-160},
+      { 0, 0, 0, 0, 0,  0,  7, -7, 0, 0, 0, 0, 2,    0,   0,   -3,   0},
+      { 0, 0, 0, 0, 0,  0,  7, -7, 0, 0, 0, 0, 2,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0,  0,  6, -5, 0, 0, 0, 0, 2,   -6,   3,    1,   3},
+      { 0, 0, 0, 0, 0,  7, -8,  0, 0, 0, 0, 0, 0,    0,   6,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  5, -3, 0, 0, 0, 0, 2,  -10,   0,    0,   4},
+
+   /* 571-580 */
+      { 0, 0, 0, 0, 0,  4, -3,  0, 0, 0, 0, 0, 2,    0,   9,    4,   0},
+      { 0, 0, 0, 0, 0,  1,  2,  0, 0, 0, 0, 0, 2,    4,  17,    7,  -2},
+      { 0, 0, 0, 0, 0, -9, 11,  0, 0, 0, 0, 0, 2,   34,   0,    0, -15},
+      { 0, 0, 0, 0, 0, -9, 11,  0, 0, 0, 0, 0, 1,    0,   5,    3,   0},
+      { 0, 0, 0, 0, 0,  0,  4,  0,-4, 0, 0, 0, 2,   -5,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  4,  0,-3, 0, 0, 0, 2,  -37,  -7,   -3,  16},
+      { 0, 0, 0, 0, 0, -6,  6,  0, 0, 0, 0, 0, 1,    3,  13,    7,  -2},
+      { 0, 0, 0, 0, 0,  6, -6,  0, 0, 0, 0, 0, 0,   40,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  6, -6,  0, 0, 0, 0, 0, 1,    0,  -3,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  4,  0,-2, 0, 0, 0, 2, -184,  -3,   -1,  80},
+
+   /* 581-590 */
+      { 0, 0, 0, 0, 0,  0,  6, -4, 0, 0, 0, 0, 2,   -3,   0,    0,   1},
+      { 0, 0, 0, 0, 0,  3, -1,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  3, -1,  0, 0, 0, 0, 0, 1,    0, -10,   -6,  -1},
+      { 0, 0, 0, 0, 0,  3, -1,  0, 0, 0, 0, 0, 2,   31,  -6,    0, -13},
+      { 0, 0, 0, 0, 0,  0,  4,  0,-1, 0, 0, 0, 2,   -3, -32,  -14,   1},
+      { 0, 0, 0, 0, 0,  0,  4,  0, 0,-2, 0, 0, 2,   -7,   0,    0,   3},
+      { 0, 0, 0, 0, 0,  0,  5, -2, 0, 0, 0, 0, 2,    0,  -8,   -4,   0},
+      { 0, 0, 0, 0, 0,  0,  4,  0, 0, 0, 0, 0, 0,    3,  -4,    0,   0},
+      { 0, 0, 0, 0, 0,  8, -9,  0, 0, 0, 0, 0, 0,    0,   4,    0,   0},
+      { 0, 0, 0, 0, 0,  5, -4,  0, 0, 0, 0, 0, 2,    0,   3,    1,   0},
+
+   /* 591-600 */
+      { 0, 0, 0, 0, 0,  2,  1,  0, 0, 0, 0, 0, 2,   19, -23,  -10,   2},
+      { 0, 0, 0, 0, 0,  2,  1,  0, 0, 0, 0, 0, 1,    0,   0,    0, -10},
+      { 0, 0, 0, 0, 0,  2,  1,  0, 0, 0, 0, 0, 1,    0,   3,    2,   0},
+      { 0, 0, 0, 0, 0, -7,  7,  0, 0, 0, 0, 0, 1,    0,   9,    5,  -1},
+      { 0, 0, 0, 0, 0,  7, -7,  0, 0, 0, 0, 0, 0,   28,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  4, -2,  0, 0, 0, 0, 0, 1,    0,  -7,   -4,   0},
+      { 0, 0, 0, 0, 0,  4, -2,  0, 0, 0, 0, 0, 2,    8,  -4,    0,  -4},
+      { 0, 0, 0, 0, 0,  4, -2,  0, 0, 0, 0, 0, 0,    0,   0,   -2,   0},
+      { 0, 0, 0, 0, 0,  4, -2,  0, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  5,  0,-4, 0, 0, 0, 2,   -3,   0,    0,   1},
+
+   /* 601-610 */
+      { 0, 0, 0, 0, 0,  0,  5,  0,-3, 0, 0, 0, 2,   -9,   0,    1,   4},
+      { 0, 0, 0, 0, 0,  0,  5,  0,-2, 0, 0, 0, 2,    3,  12,    5,  -1},
+      { 0, 0, 0, 0, 0,  3,  0,  0, 0, 0, 0, 0, 2,   17,  -3,   -1,   0},
+      { 0, 0, 0, 0, 0, -8,  8,  0, 0, 0, 0, 0, 1,    0,   7,    4,   0},
+      { 0, 0, 0, 0, 0,  8, -8,  0, 0, 0, 0, 0, 0,   19,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  5, -3,  0, 0, 0, 0, 0, 1,    0,  -5,   -3,   0},
+      { 0, 0, 0, 0, 0,  5, -3,  0, 0, 0, 0, 0, 2,   14,  -3,    0,  -1},
+      { 0, 0, 0, 0, 0, -9,  9,  0, 0, 0, 0, 0, 1,    0,   0,   -1,   0},
+      { 0, 0, 0, 0, 0, -9,  9,  0, 0, 0, 0, 0, 1,    0,   0,    0,  -5},
+      { 0, 0, 0, 0, 0, -9,  9,  0, 0, 0, 0, 0, 1,    0,   5,    3,   0},
+
+   /* 611-620 */
+      { 0, 0, 0, 0, 0,  9, -9,  0, 0, 0, 0, 0, 0,   13,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  6, -4,  0, 0, 0, 0, 0, 1,    0,  -3,   -2,   0},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 2,    2,   9,    4,   3},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 0,    0,   0,    0,  -4},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 0,    8,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 1,    0,   4,    2,   0},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 2,    6,   0,    0,  -3},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 0,    6,   0,    0,   0},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 1,    0,   3,    1,   0},
+      { 0, 0, 0, 0, 0,  0,  6,  0, 0, 0, 0, 0, 2,    5,   0,    0,  -2},
+
+   /* 621-630 */
+      { 0, 0, 0, 0, 0,  0,  0,  0, 0, 0, 0, 0, 2,    3,   0,    0,  -1},
+      { 1, 0,-2, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 1, 0,-2, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0,    6,   0,    0,   0},
+      { 1, 0,-2, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,    7,   0,    0,   0},
+      { 1, 0,-2, 0, 0,  1, -1,  0, 0, 0, 0, 0, 0,   -4,   0,    0,   0},
+      {-1, 0, 0, 0, 0,  3, -3,  0, 0, 0, 0, 0, 0,    4,   0,    0,   0},
+      {-1, 0, 0, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,    6,   0,    0,   0},
+      {-1, 0, 2, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,  -4,    0,   0},
+      { 1, 0,-2, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,  -4,    0,   0},
+      {-2, 0, 2, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0,    5,   0,    0,   0},
+
+   /* 631-640 */
+      {-1, 0, 0, 0, 0,  0,  2,  0,-3, 0, 0, 0, 0,   -3,   0,    0,   0},
+      {-1, 0, 0, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,    4,   0,    0,   0},
+      {-1, 0, 0, 0, 0,  1, -1,  0, 0, 0, 0, 0, 0,   -5,   0,    0,   0},
+      {-1, 0, 2, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0,    4,   0,    0,   0},
+      { 1,-1, 1, 0, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,   3,    0,   0},
+      {-1, 0, 2, 0, 0,  0,  2,  0,-3, 0, 0, 0, 0,   13,   0,    0,   0},
+      {-2, 0, 0, 0, 0,  0,  2,  0,-3, 0, 0, 0, 0,   21,  11,    0,   0},
+      { 1, 0, 0, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,  -5,    0,   0},
+      {-1, 1,-1, 1, 0,  0, -1,  0, 0, 0, 0, 0, 0,    0,  -5,   -2,   0},
+      { 1, 1,-1, 1, 0,  0, -1,  0, 0, 0, 0, 0, 0,    0,   5,    3,   0},
+
+   /* 641-650 */
+      {-1, 0, 0, 0, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,  -5,    0,   0},
+      {-1, 0, 2, 1, 0,  0,  2,  0,-2, 0, 0, 0, 0,   -3,   0,    0,   2},
+      { 0, 0, 0, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,   20,  10,    0,   0},
+      {-1, 0, 2, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,  -34,   0,    0,   0},
+      {-1, 0, 2, 0, 0,  3, -3,  0, 0, 0, 0, 0, 0,  -19,   0,    0,   0},
+      { 1, 0,-2, 1, 0,  0, -2,  0, 2, 0, 0, 0, 0,    3,   0,    0,  -2},
+      { 1, 2,-2, 2, 0, -3,  3,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+      { 1, 2,-2, 2, 0,  0, -2,  0, 2, 0, 0, 0, 0,   -6,   0,    0,   3},
+      { 1, 0, 0, 0, 0,  1, -1,  0, 0, 0, 0, 0, 0,   -4,   0,    0,   0},
+      { 1, 0, 0, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,    3,   0,    0,   0},
+
+   /* 651-660 */
+      { 0, 0,-2, 0, 0,  2, -2,  0, 0, 0, 0, 0, 0,    3,   0,    0,   0},
+      { 0, 0,-2, 0, 0,  0,  1,  0,-1, 0, 0, 0, 0,    4,   0,    0,   0},
+      { 0, 2, 0, 2, 0, -2,  2,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 2, 0, 2, 0,  0, -1,  0, 1, 0, 0, 0, 0,    6,   0,    0,  -3},
+      { 0, 2, 0, 2, 0, -1,  1,  0, 0, 0, 0, 0, 0,   -8,   0,    0,   3},
+      { 0, 2, 0, 2, 0, -2,  3,  0, 0, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 0, 2, 0, 0,  0,  2,  0,-2, 0, 0, 0, 0,   -3,   0,    0,   0},
+      { 0, 1, 1, 2, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,  -3,   -2,   0},
+      { 1, 2, 0, 2, 0,  0,  1,  0, 0, 0, 0, 0, 0,  126, -63,  -27, -55},
+      {-1, 2, 0, 2, 0, 10, -3,  0, 0, 0, 0, 0, 0,   -5,   0,    1,   2},
+
+   /* 661-670 */
+      { 0, 1, 1, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,   -3,  28,   15,   2},
+      { 1, 2, 0, 2, 0,  0,  1,  0, 0, 0, 0, 0, 0,    5,   0,    1,  -2},
+      { 0, 2, 0, 2, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,   9,    4,   1},
+      { 0, 2, 0, 2, 0,  0, -4,  8,-3, 0, 0, 0, 0,    0,   9,    4,  -1},
+      {-1, 2, 0, 2, 0,  0, -4,  8,-3, 0, 0, 0, 0, -126, -63,  -27,  55},
+      { 2, 2,-2, 2, 0,  0, -2,  0, 3, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 1, 2, 0, 1, 0,  0, -2,  0, 3, 0, 0, 0, 0,   21, -11,   -6, -11},
+      { 0, 1, 1, 0, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,  -4,    0,   0},
+      {-1, 2, 0, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,  -21, -11,   -6,  11},
+      {-2, 2, 2, 2, 0,  0,  2,  0,-2, 0, 0, 0, 0,   -3,   0,    0,   1},
+
+   /* 671-680 */
+      { 0, 2, 0, 2, 0,  2, -3,  0, 0, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 0, 2, 0, 2, 0,  1, -1,  0, 0, 0, 0, 0, 0,    8,   0,    0,  -4},
+      { 0, 2, 0, 2, 0,  0,  1,  0,-1, 0, 0, 0, 0,   -6,   0,    0,   3},
+      { 0, 2, 0, 2, 0,  2, -2,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+      {-1, 2, 2, 2, 0,  0, -1,  0, 1, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 1, 2, 0, 2, 0, -1,  1,  0, 0, 0, 0, 0, 0,   -3,   0,    0,   1},
+      {-1, 2, 2, 2, 0,  0,  2,  0,-3, 0, 0, 0, 0,   -5,   0,    0,   2},
+      { 2, 2, 0, 2, 0,  0,  2,  0,-3, 0, 0, 0, 0,   24, -12,   -5, -11},
+      { 1, 2, 0, 2, 0,  0, -4,  8,-3, 0, 0, 0, 0,    0,   3,    1,   0},
+      { 1, 2, 0, 2, 0,  0,  4, -8, 3, 0, 0, 0, 0,    0,   3,    1,   0},
+
+   /* 681-687 */
+      { 1, 1, 1, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,    0,   3,    2,   0},
+      { 0, 2, 0, 2, 0,  0,  1,  0, 0, 0, 0, 0, 0,  -24, -12,   -5,  10},
+      { 2, 2, 0, 1, 0,  0,  1,  0, 0, 0, 0, 0, 0,    4,   0,   -1,  -2},
+      {-1, 2, 2, 2, 0,  0,  2,  0,-2, 0, 0, 0, 0,   13,   0,    0,  -6},
+      {-1, 2, 2, 2, 0,  3, -3,  0, 0, 0, 0, 0, 0,    7,   0,    0,  -3},
+      { 1, 2, 0, 2, 0,  1, -1,  0, 0, 0, 0, 0, 0,    3,   0,    0,  -1},
+      { 0, 2, 2, 2, 0,  0,  2,  0,-2, 0, 0, 0, 0,    3,   0,    0,  -1}
+   };
+
+/* Number of terms in the planetary nutation model */
+   const int NPL = (int) (sizeof xpl / sizeof xpl[0]);
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* ------------------- */
+/* LUNI-SOLAR NUTATION */
+/* ------------------- */
+
+/* Fundamental (Delaunay) arguments */
+
+/* Mean anomaly of the Moon (IERS 2003). */
+   el = eraFal03(t);
+
+/* Mean anomaly of the Sun (MHB2000). */
+   elp = fmod(1287104.79305  +
+            t * (129596581.0481  +
+            t * (-0.5532  +
+            t * (0.000136  +
+            t * (-0.00001149)))), ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean longitude of the Moon minus that of the ascending node */
+/* (IERS 2003. */
+   f = eraFaf03(t);
+
+/* Mean elongation of the Moon from the Sun (MHB2000). */
+   d = fmod(1072260.70369  +
+          t * (1602961601.2090  +
+          t * (-6.3706  +
+          t * (0.006593  +
+          t * (-0.00003169)))), ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean longitude of the ascending node of the Moon (IERS 2003). */
+   om = eraFaom03(t);
+
+/* Initialize the nutation values. */
+   dp = 0.0;
+   de = 0.0;
+
+/* Summation of luni-solar nutation series (in reverse order). */
+   for (i = NLS-1; i >= 0; i--) {
+
+   /* Argument and functions. */
+      arg = fmod((double)xls[i].nl  * el +
+                 (double)xls[i].nlp * elp +
+                 (double)xls[i].nf  * f +
+                 (double)xls[i].nd  * d +
+                 (double)xls[i].nom * om, ERFA_D2PI);
+      sarg = sin(arg);
+      carg = cos(arg);
+
+   /* Term. */
+      dp += (xls[i].sp + xls[i].spt * t) * sarg + xls[i].cp * carg;
+      de += (xls[i].ce + xls[i].cet * t) * carg + xls[i].se * sarg;
+   }
+
+/* Convert from 0.1 microarcsec units to radians. */
+   dpsils = dp * U2R;
+   depsls = de * U2R;
+
+/* ------------------ */
+/* PLANETARY NUTATION */
+/* ------------------ */
+
+/* n.b.  The MHB2000 code computes the luni-solar and planetary nutation */
+/* in different functions, using slightly different Delaunay */
+/* arguments in the two cases.  This behaviour is faithfully */
+/* reproduced here.  Use of the IERS 2003 expressions for both */
+/* cases leads to negligible changes, well below */
+/* 0.1 microarcsecond. */
+
+/* Mean anomaly of the Moon (MHB2000). */
+   al = fmod(2.35555598 + 8328.6914269554 * t, ERFA_D2PI);
+
+/* Mean longitude of the Moon minus that of the ascending node */
+/*(MHB2000). */
+   af = fmod(1.627905234 + 8433.466158131 * t, ERFA_D2PI);
+
+/* Mean elongation of the Moon from the Sun (MHB2000). */
+   ad = fmod(5.198466741 + 7771.3771468121 * t, ERFA_D2PI);
+
+/* Mean longitude of the ascending node of the Moon (MHB2000). */
+   aom = fmod(2.18243920 - 33.757045 * t, ERFA_D2PI);
+
+/* General accumulated precession in longitude (IERS 2003). */
+   apa = eraFapa03(t);
+
+/* Planetary longitudes, Mercury through Uranus (IERS 2003). */
+   alme = eraFame03(t);
+   alve = eraFave03(t);
+   alea = eraFae03(t);
+   alma = eraFama03(t);
+   alju = eraFaju03(t);
+   alsa = eraFasa03(t);
+   alur = eraFaur03(t);
+
+/* Neptune longitude (MHB2000). */
+   alne = fmod(5.321159000 + 3.8127774000 * t, ERFA_D2PI);
+
+/* Initialize the nutation values. */
+   dp = 0.0;
+   de = 0.0;
+
+/* Summation of planetary nutation series (in reverse order). */
+   for (i = NPL-1; i >= 0; i--) {
+
+   /* Argument and functions. */
+      arg = fmod((double)xpl[i].nl  * al   +
+                 (double)xpl[i].nf  * af   +
+                 (double)xpl[i].nd  * ad   +
+                 (double)xpl[i].nom * aom  +
+                 (double)xpl[i].nme * alme +
+                 (double)xpl[i].nve * alve +
+                 (double)xpl[i].nea * alea +
+                 (double)xpl[i].nma * alma +
+                 (double)xpl[i].nju * alju +
+                 (double)xpl[i].nsa * alsa +
+                 (double)xpl[i].nur * alur +
+                 (double)xpl[i].nne * alne +
+                 (double)xpl[i].npa * apa, ERFA_D2PI);
+      sarg = sin(arg);
+      carg = cos(arg);
+
+   /* Term. */
+      dp += (double)xpl[i].sp * sarg + (double)xpl[i].cp * carg;
+      de += (double)xpl[i].se * sarg + (double)xpl[i].ce * carg;
+
+   }
+
+/* Convert from 0.1 microarcsec units to radians. */
+   dpsipl = dp * U2R;
+   depspl = de * U2R;
+
+/* ------- */
+/* RESULTS */
+/* ------- */
+
+/* Add luni-solar and planetary components. */
+   *dpsi = dpsils + dpsipl;
+   *deps = depsls + depspl;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/nut00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/nut00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/nut00b.c	(revision 18732)
@@ -0,0 +1,381 @@
+#include "erfa.h"
+
+void eraNut00b(double date1, double date2, double *dpsi, double *deps)
+/*
+**  - - - - - - - - - -
+**   e r a N u t 0 0 b
+**  - - - - - - - - - -
+**
+**  Nutation, IAU 2000B model.
+**
+**  Given:
+**     date1,date2   double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps     double    nutation, luni-solar + planetary (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The nutation components in longitude and obliquity are in radians
+**     and with respect to the equinox and ecliptic of date.  The
+**     obliquity at J2000.0 is assumed to be the Lieske et al. (1977)
+**     value of 84381.448 arcsec.  (The errors that result from using
+**     this function with the IAU 2006 value of 84381.406 arcsec can be
+**     neglected.)
+**
+**     The nutation model consists only of luni-solar terms, but
+**     includes also a fixed offset which compensates for certain long-
+**     period planetary terms (Note 7).
+**
+**  3) This function is an implementation of the IAU 2000B abridged
+**     nutation model formally adopted by the IAU General Assembly in
+**     2000.  The function computes the MHB_2000_SHORT luni-solar
+**     nutation series (Luzum 2001), but without the associated
+**     corrections for the precession rate adjustments and the offset
+**     between the GCRS and J2000.0 mean poles.
+**
+**  4) The full IAU 2000A (MHB2000) nutation model contains nearly 1400
+**     terms.  The IAU 2000B model (McCarthy & Luzum 2003) contains only
+**     77 terms, plus additional simplifications, yet still delivers
+**     results of 1 mas accuracy at present epochs.  This combination of
+**     accuracy and size makes the IAU 2000B abridged nutation model
+**     suitable for most practical applications.
+**
+**     The function delivers a pole accurate to 1 mas from 1900 to 2100
+**     (usually better than 1 mas, very occasionally just outside
+**     1 mas).  The full IAU 2000A model, which is implemented in the
+**     function eraNut00a (q.v.), delivers considerably greater accuracy
+**     at current dates;  however, to realize this improved accuracy,
+**     corrections for the essentially unpredictable free-core-nutation
+**     (FCN) must also be included.
+**
+**  5) The present function provides classical nutation.  The
+**     MHB_2000_SHORT algorithm, from which it is adapted, deals also
+**     with (i) the offsets between the GCRS and mean poles and (ii) the
+**     adjustments in longitude and obliquity due to the changed
+**     precession rates.  These additional functions, namely frame bias
+**     and precession adjustments, are supported by the ERFA functions
+**     eraBi00  and eraPr00.
+**
+**  6) The MHB_2000_SHORT algorithm also provides "total" nutations,
+**     comprising the arithmetic sum of the frame bias, precession
+**     adjustments, and nutation (luni-solar + planetary).  These total
+**     nutations can be used in combination with an existing IAU 1976
+**     precession implementation, such as eraPmat76,  to deliver GCRS-
+**     to-true predictions of mas accuracy at current epochs.  However,
+**     for symmetry with the eraNut00a  function (q.v. for the reasons),
+**     the ERFA functions do not generate the "total nutations"
+**     directly.  Should they be required, they could of course easily
+**     be generated by calling eraBi00, eraPr00 and the present function
+**     and adding the results.
+**
+**  7) The IAU 2000B model includes "planetary bias" terms that are
+**     fixed in size but compensate for long-period nutations.  The
+**     amplitudes quoted in McCarthy & Luzum (2003), namely
+**     Dpsi = -1.5835 mas and Depsilon = +1.6339 mas, are optimized for
+**     the "total nutations" method described in Note 6.  The Luzum
+**     (2001) values used in this ERFA implementation, namely -0.135 mas
+**     and +0.388 mas, are optimized for the "rigorous" method, where
+**     frame bias, precession and nutation are applied separately and in
+**     that order.  During the interval 1995-2050, the ERFA
+**     implementation delivers a maximum error of 1.001 mas (not
+**     including FCN).
+**
+**  References:
+**
+**     Lieske, J.H., Lederle, T., Fricke, W., Morando, B., "Expressions
+**     for the precession quantities based upon the IAU /1976/ system of
+**     astronomical constants", Astron.Astrophys. 58, 1-2, 1-16. (1977)
+**
+**     Luzum, B., private communication, 2001 (Fortran code
+**     MHB_2000_SHORT)
+**
+**     McCarthy, D.D. & Luzum, B.J., "An abridged model of the
+**     precession-nutation of the celestial pole", Cel.Mech.Dyn.Astron.
+**     85, 37-49 (2003)
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J., Astron.Astrophys. 282, 663-683 (1994)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, el, elp, f, d, om, arg, dp, de, sarg, carg,
+          dpsils, depsls, dpsipl, depspl;
+   int i;
+
+/* Units of 0.1 microarcsecond to radians */
+   static const double U2R = ERFA_DAS2R / 1e7;
+
+/* ---------------------------------------- */
+/* Fixed offsets in lieu of planetary terms */
+/* ---------------------------------------- */
+
+   static const double DPPLAN = -0.135 * ERFA_DMAS2R;
+   static const double DEPLAN =  0.388 * ERFA_DMAS2R;
+
+/* --------------------------------------------------- */
+/* Luni-solar nutation: argument and term coefficients */
+/* --------------------------------------------------- */
+
+/* The units for the sine and cosine coefficients are */
+/* 0.1 microarcsec and the same per Julian century    */
+
+   static const struct {
+      int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */
+      double ps,pst,pc;     /* longitude sin, t*sin, cos coefficients */
+      double ec,ect,es;     /* obliquity cos, t*cos, sin coefficients */
+
+   } x[] = {
+
+   /* 1-10 */
+      { 0, 0, 0, 0,1,
+         -172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0},
+      { 0, 0, 2,-2,2,
+           -13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0},
+      { 0, 0, 2, 0,2,-2276413.0,-234.0, 2796.0, 978459.0,-485.0,1374.0},
+      { 0, 0, 0, 0,2,2074554.0,  207.0, -698.0,-897492.0, 470.0,-291.0},
+      { 0, 1, 0, 0,0,1475877.0,-3633.0,11817.0, 73871.0,-184.0,-1924.0},
+      { 0, 1, 2,-2,2,-516821.0, 1226.0, -524.0, 224386.0,-677.0,-174.0},
+      { 1, 0, 0, 0,0, 711159.0,   73.0, -872.0,  -6750.0,   0.0, 358.0},
+      { 0, 0, 2, 0,1,-387298.0, -367.0,  380.0, 200728.0,  18.0, 318.0},
+      { 1, 0, 2, 0,2,-301461.0,  -36.0,  816.0, 129025.0, -63.0, 367.0},
+      { 0,-1, 2,-2,2, 215829.0, -494.0,  111.0, -95929.0, 299.0, 132.0},
+
+   /* 11-20 */
+      { 0, 0, 2,-2,1, 128227.0,  137.0,  181.0, -68982.0,  -9.0,  39.0},
+      {-1, 0, 2, 0,2, 123457.0,   11.0,   19.0, -53311.0,  32.0,  -4.0},
+      {-1, 0, 0, 2,0, 156994.0,   10.0, -168.0,  -1235.0,   0.0,  82.0},
+      { 1, 0, 0, 0,1,  63110.0,   63.0,   27.0, -33228.0,   0.0,  -9.0},
+      {-1, 0, 0, 0,1, -57976.0,  -63.0, -189.0,  31429.0,   0.0, -75.0},
+      {-1, 0, 2, 2,2, -59641.0,  -11.0,  149.0,  25543.0, -11.0,  66.0},
+      { 1, 0, 2, 0,1, -51613.0,  -42.0,  129.0,  26366.0,   0.0,  78.0},
+      {-2, 0, 2, 0,1,  45893.0,   50.0,   31.0, -24236.0, -10.0,  20.0},
+      { 0, 0, 0, 2,0,  63384.0,   11.0, -150.0,  -1220.0,   0.0,  29.0},
+      { 0, 0, 2, 2,2, -38571.0,   -1.0,  158.0,  16452.0, -11.0,  68.0},
+
+   /* 21-30 */
+      { 0,-2, 2,-2,2,  32481.0,    0.0,    0.0, -13870.0,   0.0,   0.0},
+      {-2, 0, 0, 2,0, -47722.0,    0.0,  -18.0,    477.0,   0.0, -25.0},
+      { 2, 0, 2, 0,2, -31046.0,   -1.0,  131.0,  13238.0, -11.0,  59.0},
+      { 1, 0, 2,-2,2,  28593.0,    0.0,   -1.0, -12338.0,  10.0,  -3.0},
+      {-1, 0, 2, 0,1,  20441.0,   21.0,   10.0, -10758.0,   0.0,  -3.0},
+      { 2, 0, 0, 0,0,  29243.0,    0.0,  -74.0,   -609.0,   0.0,  13.0},
+      { 0, 0, 2, 0,0,  25887.0,    0.0,  -66.0,   -550.0,   0.0,  11.0},
+      { 0, 1, 0, 0,1, -14053.0,  -25.0,   79.0,   8551.0,  -2.0, -45.0},
+      {-1, 0, 0, 2,1,  15164.0,   10.0,   11.0,  -8001.0,   0.0,  -1.0},
+      { 0, 2, 2,-2,2, -15794.0,   72.0,  -16.0,   6850.0, -42.0,  -5.0},
+
+   /* 31-40 */
+      { 0, 0,-2, 2,0,  21783.0,    0.0,   13.0,   -167.0,   0.0,  13.0},
+      { 1, 0, 0,-2,1, -12873.0,  -10.0,  -37.0,   6953.0,   0.0, -14.0},
+      { 0,-1, 0, 0,1, -12654.0,   11.0,   63.0,   6415.0,   0.0,  26.0},
+      {-1, 0, 2, 2,1, -10204.0,    0.0,   25.0,   5222.0,   0.0,  15.0},
+      { 0, 2, 0, 0,0,  16707.0,  -85.0,  -10.0,    168.0,  -1.0,  10.0},
+      { 1, 0, 2, 2,2,  -7691.0,    0.0,   44.0,   3268.0,   0.0,  19.0},
+      {-2, 0, 2, 0,0, -11024.0,    0.0,  -14.0,    104.0,   0.0,   2.0},
+      { 0, 1, 2, 0,2,   7566.0,  -21.0,  -11.0,  -3250.0,   0.0,  -5.0},
+      { 0, 0, 2, 2,1,  -6637.0,  -11.0,   25.0,   3353.0,   0.0,  14.0},
+      { 0,-1, 2, 0,2,  -7141.0,   21.0,    8.0,   3070.0,   0.0,   4.0},
+
+   /* 41-50 */
+      { 0, 0, 0, 2,1,  -6302.0,  -11.0,    2.0,   3272.0,   0.0,   4.0},
+      { 1, 0, 2,-2,1,   5800.0,   10.0,    2.0,  -3045.0,   0.0,  -1.0},
+      { 2, 0, 2,-2,2,   6443.0,    0.0,   -7.0,  -2768.0,   0.0,  -4.0},
+      {-2, 0, 0, 2,1,  -5774.0,  -11.0,  -15.0,   3041.0,   0.0,  -5.0},
+      { 2, 0, 2, 0,1,  -5350.0,    0.0,   21.0,   2695.0,   0.0,  12.0},
+      { 0,-1, 2,-2,1,  -4752.0,  -11.0,   -3.0,   2719.0,   0.0,  -3.0},
+      { 0, 0, 0,-2,1,  -4940.0,  -11.0,  -21.0,   2720.0,   0.0,  -9.0},
+      {-1,-1, 0, 2,0,   7350.0,    0.0,   -8.0,    -51.0,   0.0,   4.0},
+      { 2, 0, 0,-2,1,   4065.0,    0.0,    6.0,  -2206.0,   0.0,   1.0},
+      { 1, 0, 0, 2,0,   6579.0,    0.0,  -24.0,   -199.0,   0.0,   2.0},
+
+   /* 51-60 */
+      { 0, 1, 2,-2,1,   3579.0,    0.0,    5.0,  -1900.0,   0.0,   1.0},
+      { 1,-1, 0, 0,0,   4725.0,    0.0,   -6.0,    -41.0,   0.0,   3.0},
+      {-2, 0, 2, 0,2,  -3075.0,    0.0,   -2.0,   1313.0,   0.0,  -1.0},
+      { 3, 0, 2, 0,2,  -2904.0,    0.0,   15.0,   1233.0,   0.0,   7.0},
+      { 0,-1, 0, 2,0,   4348.0,    0.0,  -10.0,    -81.0,   0.0,   2.0},
+      { 1,-1, 2, 0,2,  -2878.0,    0.0,    8.0,   1232.0,   0.0,   4.0},
+      { 0, 0, 0, 1,0,  -4230.0,    0.0,    5.0,    -20.0,   0.0,  -2.0},
+      {-1,-1, 2, 2,2,  -2819.0,    0.0,    7.0,   1207.0,   0.0,   3.0},
+      {-1, 0, 2, 0,0,  -4056.0,    0.0,    5.0,     40.0,   0.0,  -2.0},
+      { 0,-1, 2, 2,2,  -2647.0,    0.0,   11.0,   1129.0,   0.0,   5.0},
+
+   /* 61-70 */
+      {-2, 0, 0, 0,1,  -2294.0,    0.0,  -10.0,   1266.0,   0.0,  -4.0},
+      { 1, 1, 2, 0,2,   2481.0,    0.0,   -7.0,  -1062.0,   0.0,  -3.0},
+      { 2, 0, 0, 0,1,   2179.0,    0.0,   -2.0,  -1129.0,   0.0,  -2.0},
+      {-1, 1, 0, 1,0,   3276.0,    0.0,    1.0,     -9.0,   0.0,   0.0},
+      { 1, 1, 0, 0,0,  -3389.0,    0.0,    5.0,     35.0,   0.0,  -2.0},
+      { 1, 0, 2, 0,0,   3339.0,    0.0,  -13.0,   -107.0,   0.0,   1.0},
+      {-1, 0, 2,-2,1,  -1987.0,    0.0,   -6.0,   1073.0,   0.0,  -2.0},
+      { 1, 0, 0, 0,2,  -1981.0,    0.0,    0.0,    854.0,   0.0,   0.0},
+      {-1, 0, 0, 1,0,   4026.0,    0.0, -353.0,   -553.0,   0.0,-139.0},
+      { 0, 0, 2, 1,2,   1660.0,    0.0,   -5.0,   -710.0,   0.0,  -2.0},
+
+   /* 71-77 */
+      {-1, 0, 2, 4,2,  -1521.0,    0.0,    9.0,    647.0,   0.0,   4.0},
+      {-1, 1, 0, 1,1,   1314.0,    0.0,    0.0,   -700.0,   0.0,   0.0},
+      { 0,-2, 2,-2,1,  -1283.0,    0.0,    0.0,    672.0,   0.0,   0.0},
+      { 1, 0, 2, 2,1,  -1331.0,    0.0,    8.0,    663.0,   0.0,   4.0},
+      {-2, 0, 2, 2,2,   1383.0,    0.0,   -2.0,   -594.0,   0.0,  -2.0},
+      {-1, 0, 0, 0,2,   1405.0,    0.0,    4.0,   -610.0,   0.0,   2.0},
+      { 1, 1, 2,-2,2,   1290.0,    0.0,    0.0,   -556.0,   0.0,   0.0}
+   };
+
+/* Number of terms in the series */
+   const int NLS = (int) (sizeof x / sizeof x[0]);
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental epoch J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* --------------------*/
+/* LUNI-SOLAR NUTATION */
+/* --------------------*/
+
+/* Fundamental (Delaunay) arguments from Simon et al. (1994) */
+
+/* Mean anomaly of the Moon. */
+   el = fmod(485868.249036 + (1717915923.2178) * t, ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean anomaly of the Sun. */
+   elp = fmod(1287104.79305 + (129596581.0481) * t, ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean argument of the latitude of the Moon. */
+   f = fmod(335779.526232 + (1739527262.8478) * t, ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean elongation of the Moon from the Sun. */
+   d = fmod(1072260.70369 + (1602961601.2090) * t, ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Mean longitude of the ascending node of the Moon. */
+   om = fmod(450160.398036 + (-6962890.5431) * t, ERFA_TURNAS) * ERFA_DAS2R;
+
+/* Initialize the nutation values. */
+   dp = 0.0;
+   de = 0.0;
+
+/* Summation of luni-solar nutation series (smallest terms first). */
+   for (i = NLS-1; i >= 0; i--) {
+
+   /* Argument and functions. */
+      arg = fmod( (double)x[i].nl  * el  +
+                  (double)x[i].nlp * elp +
+                  (double)x[i].nf  * f   +
+                  (double)x[i].nd  * d   +
+                  (double)x[i].nom * om, ERFA_D2PI  );
+      sarg = sin(arg);
+      carg = cos(arg);
+
+   /* Term. */
+      dp += (x[i].ps + x[i].pst * t) * sarg + x[i].pc * carg;
+      de += (x[i].ec + x[i].ect * t) * carg + x[i].es * sarg;
+   }
+
+/* Convert from 0.1 microarcsec units to radians. */
+   dpsils = dp * U2R;
+   depsls = de * U2R;
+
+/* ------------------------------*/
+/* IN LIEU OF PLANETARY NUTATION */
+/* ------------------------------*/
+
+/* Fixed offset to correct for missing terms in truncated series. */
+   dpsipl = DPPLAN;
+   depspl = DEPLAN;
+
+/* --------*/
+/* RESULTS */
+/* --------*/
+
+/* Add luni-solar and planetary components. */
+   *dpsi = dpsils + dpsipl;
+   *deps = depsls + depspl;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/nut06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/nut06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/nut06a.c	(revision 18732)
@@ -0,0 +1,162 @@
+#include "erfa.h"
+
+void eraNut06a(double date1, double date2, double *dpsi, double *deps)
+/*
+**  - - - - - - - - - -
+**   e r a N u t 0 6 a
+**  - - - - - - - - - -
+**
+**  IAU 2000A nutation with adjustments to match the IAU 2006
+**  precession.
+**
+**  Given:
+**     date1,date2   double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps     double   nutation, luni-solar + planetary (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The nutation components in longitude and obliquity are in radians
+**     and with respect to the mean equinox and ecliptic of date,
+**     IAU 2006 precession model (Hilton et al. 2006, Capitaine et al.
+**     2005).
+**
+**  3) The function first computes the IAU 2000A nutation, then applies
+**     adjustments for (i) the consequences of the change in obliquity
+**     from the IAU 1980 ecliptic to the IAU 2006 ecliptic and (ii) the
+**     secular variation in the Earth's dynamical form factor J2.
+**
+**  4) The present function provides classical nutation, complementing
+**     the IAU 2000 frame bias and IAU 2006 precession.  It delivers a
+**     pole which is at current epochs accurate to a few tens of
+**     microarcseconds, apart from the free core nutation.
+**
+**  Called:
+**     eraNut00a    nutation, IAU 2000A
+**
+**  References:
+**
+**     Chapront, J., Chapront-Touze, M. & Francou, G. 2002,
+**     Astron.Astrophys. 387, 700
+**
+**     Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
+**     Astron.Astrophys. 58, 1-16
+**
+**     Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res.
+**     107, B4.  The MHB_2000 code itself was obtained on 9th September
+**     2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
+**
+**     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**     Wallace, P.T., "Software for Implementing the IAU 2000
+**     Resolutions", in IERS Workshop 5.1 (2002)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, fj2, dp, de;
+
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Factor correcting for secular variation of J2. */
+   fj2 = -2.7774e-6 * t;
+
+/* Obtain IAU 2000A nutation. */
+   eraNut00a(date1, date2, &dp, &de);
+
+/* Apply P03 adjustments (Wallace & Capitaine, 2006, Eqs.5). */
+   *dpsi = dp + dp * (0.4697e-6 + fj2);
+   *deps = de + de * fj2;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/nut80.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/nut80.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/nut80.c	(revision 18732)
@@ -0,0 +1,334 @@
+#include "erfa.h"
+
+void eraNut80(double date1, double date2, double *dpsi, double *deps)
+/*
+**  - - - - - - - - -
+**   e r a N u t 8 0
+**  - - - - - - - - -
+**
+**  Nutation, IAU 1980 model.
+**
+**  Given:
+**     date1,date2   double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi          double    nutation in longitude (radians)
+**     deps          double    nutation in obliquity (radians)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The nutation components are with respect to the ecliptic of
+**     date.
+**
+**  Called:
+**     eraAnpm      normalize angle into range +/- pi
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.222 (p111).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, el, elp, f, d, om, dp, de, arg, s, c;
+   int j;
+
+/* Units of 0.1 milliarcsecond to radians */
+   const double U2R = ERFA_DAS2R / 1e4;
+
+/* ------------------------------------------------ */
+/* Table of multiples of arguments and coefficients */
+/* ------------------------------------------------ */
+
+/* The units for the sine and cosine coefficients are 0.1 mas and */
+/* the same per Julian century */
+
+   static const struct {
+      int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */
+      double sp,spt;        /* longitude sine, 1 and t coefficients */
+      double ce,cet;        /* obliquity cosine, 1 and t coefficients */
+   } x[] = {
+
+   /* 1-10 */
+      {  0,  0,  0,  0,  1, -171996.0, -174.2,  92025.0,    8.9 },
+      {  0,  0,  0,  0,  2,    2062.0,    0.2,   -895.0,    0.5 },
+      { -2,  0,  2,  0,  1,      46.0,    0.0,    -24.0,    0.0 },
+      {  2,  0, -2,  0,  0,      11.0,    0.0,      0.0,    0.0 },
+      { -2,  0,  2,  0,  2,      -3.0,    0.0,      1.0,    0.0 },
+      {  1, -1,  0, -1,  0,      -3.0,    0.0,      0.0,    0.0 },
+      {  0, -2,  2, -2,  1,      -2.0,    0.0,      1.0,    0.0 },
+      {  2,  0, -2,  0,  1,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  2, -2,  2,  -13187.0,   -1.6,   5736.0,   -3.1 },
+      {  0,  1,  0,  0,  0,    1426.0,   -3.4,     54.0,   -0.1 },
+
+   /* 11-20 */
+      {  0,  1,  2, -2,  2,    -517.0,    1.2,    224.0,   -0.6 },
+      {  0, -1,  2, -2,  2,     217.0,   -0.5,    -95.0,    0.3 },
+      {  0,  0,  2, -2,  1,     129.0,    0.1,    -70.0,    0.0 },
+      {  2,  0,  0, -2,  0,      48.0,    0.0,      1.0,    0.0 },
+      {  0,  0,  2, -2,  0,     -22.0,    0.0,      0.0,    0.0 },
+      {  0,  2,  0,  0,  0,      17.0,   -0.1,      0.0,    0.0 },
+      {  0,  1,  0,  0,  1,     -15.0,    0.0,      9.0,    0.0 },
+      {  0,  2,  2, -2,  2,     -16.0,    0.1,      7.0,    0.0 },
+      {  0, -1,  0,  0,  1,     -12.0,    0.0,      6.0,    0.0 },
+      { -2,  0,  0,  2,  1,      -6.0,    0.0,      3.0,    0.0 },
+
+   /* 21-30 */
+      {  0, -1,  2, -2,  1,      -5.0,    0.0,      3.0,    0.0 },
+      {  2,  0,  0, -2,  1,       4.0,    0.0,     -2.0,    0.0 },
+      {  0,  1,  2, -2,  1,       4.0,    0.0,     -2.0,    0.0 },
+      {  1,  0,  0, -1,  0,      -4.0,    0.0,      0.0,    0.0 },
+      {  2,  1,  0, -2,  0,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  0, -2,  2,  1,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  1, -2,  2,  0,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  0,  0,  2,       1.0,    0.0,      0.0,    0.0 },
+      { -1,  0,  0,  1,  1,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  2, -2,  0,      -1.0,    0.0,      0.0,    0.0 },
+
+   /* 31-40 */
+      {  0,  0,  2,  0,  2,   -2274.0,   -0.2,    977.0,   -0.5 },
+      {  1,  0,  0,  0,  0,     712.0,    0.1,     -7.0,    0.0 },
+      {  0,  0,  2,  0,  1,    -386.0,   -0.4,    200.0,    0.0 },
+      {  1,  0,  2,  0,  2,    -301.0,    0.0,    129.0,   -0.1 },
+      {  1,  0,  0, -2,  0,    -158.0,    0.0,     -1.0,    0.0 },
+      { -1,  0,  2,  0,  2,     123.0,    0.0,    -53.0,    0.0 },
+      {  0,  0,  0,  2,  0,      63.0,    0.0,     -2.0,    0.0 },
+      {  1,  0,  0,  0,  1,      63.0,    0.1,    -33.0,    0.0 },
+      { -1,  0,  0,  0,  1,     -58.0,   -0.1,     32.0,    0.0 },
+      { -1,  0,  2,  2,  2,     -59.0,    0.0,     26.0,    0.0 },
+
+   /* 41-50 */
+      {  1,  0,  2,  0,  1,     -51.0,    0.0,     27.0,    0.0 },
+      {  0,  0,  2,  2,  2,     -38.0,    0.0,     16.0,    0.0 },
+      {  2,  0,  0,  0,  0,      29.0,    0.0,     -1.0,    0.0 },
+      {  1,  0,  2, -2,  2,      29.0,    0.0,    -12.0,    0.0 },
+      {  2,  0,  2,  0,  2,     -31.0,    0.0,     13.0,    0.0 },
+      {  0,  0,  2,  0,  0,      26.0,    0.0,     -1.0,    0.0 },
+      { -1,  0,  2,  0,  1,      21.0,    0.0,    -10.0,    0.0 },
+      { -1,  0,  0,  2,  1,      16.0,    0.0,     -8.0,    0.0 },
+      {  1,  0,  0, -2,  1,     -13.0,    0.0,      7.0,    0.0 },
+      { -1,  0,  2,  2,  1,     -10.0,    0.0,      5.0,    0.0 },
+
+   /* 51-60 */
+      {  1,  1,  0, -2,  0,      -7.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  2,  0,  2,       7.0,    0.0,     -3.0,    0.0 },
+      {  0, -1,  2,  0,  2,      -7.0,    0.0,      3.0,    0.0 },
+      {  1,  0,  2,  2,  2,      -8.0,    0.0,      3.0,    0.0 },
+      {  1,  0,  0,  2,  0,       6.0,    0.0,      0.0,    0.0 },
+      {  2,  0,  2, -2,  2,       6.0,    0.0,     -3.0,    0.0 },
+      {  0,  0,  0,  2,  1,      -6.0,    0.0,      3.0,    0.0 },
+      {  0,  0,  2,  2,  1,      -7.0,    0.0,      3.0,    0.0 },
+      {  1,  0,  2, -2,  1,       6.0,    0.0,     -3.0,    0.0 },
+      {  0,  0,  0, -2,  1,      -5.0,    0.0,      3.0,    0.0 },
+
+   /* 61-70 */
+      {  1, -1,  0,  0,  0,       5.0,    0.0,      0.0,    0.0 },
+      {  2,  0,  2,  0,  1,      -5.0,    0.0,      3.0,    0.0 },
+      {  0,  1,  0, -2,  0,      -4.0,    0.0,      0.0,    0.0 },
+      {  1,  0, -2,  0,  0,       4.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  0,  1,  0,      -4.0,    0.0,      0.0,    0.0 },
+      {  1,  1,  0,  0,  0,      -3.0,    0.0,      0.0,    0.0 },
+      {  1,  0,  2,  0,  0,       3.0,    0.0,      0.0,    0.0 },
+      {  1, -1,  2,  0,  2,      -3.0,    0.0,      1.0,    0.0 },
+      { -1, -1,  2,  2,  2,      -3.0,    0.0,      1.0,    0.0 },
+      { -2,  0,  0,  0,  1,      -2.0,    0.0,      1.0,    0.0 },
+
+   /* 71-80 */
+      {  3,  0,  2,  0,  2,      -3.0,    0.0,      1.0,    0.0 },
+      {  0, -1,  2,  2,  2,      -3.0,    0.0,      1.0,    0.0 },
+      {  1,  1,  2,  0,  2,       2.0,    0.0,     -1.0,    0.0 },
+      { -1,  0,  2, -2,  1,      -2.0,    0.0,      1.0,    0.0 },
+      {  2,  0,  0,  0,  1,       2.0,    0.0,     -1.0,    0.0 },
+      {  1,  0,  0,  0,  2,      -2.0,    0.0,      1.0,    0.0 },
+      {  3,  0,  0,  0,  0,       2.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  2,  1,  2,       2.0,    0.0,     -1.0,    0.0 },
+      { -1,  0,  0,  0,  2,       1.0,    0.0,     -1.0,    0.0 },
+      {  1,  0,  0, -4,  0,      -1.0,    0.0,      0.0,    0.0 },
+
+   /* 81-90 */
+      { -2,  0,  2,  2,  2,       1.0,    0.0,     -1.0,    0.0 },
+      { -1,  0,  2,  4,  2,      -2.0,    0.0,      1.0,    0.0 },
+      {  2,  0,  0, -4,  0,      -1.0,    0.0,      0.0,    0.0 },
+      {  1,  1,  2, -2,  2,       1.0,    0.0,     -1.0,    0.0 },
+      {  1,  0,  2,  2,  1,      -1.0,    0.0,      1.0,    0.0 },
+      { -2,  0,  2,  4,  2,      -1.0,    0.0,      1.0,    0.0 },
+      { -1,  0,  4,  0,  2,       1.0,    0.0,      0.0,    0.0 },
+      {  1, -1,  0, -2,  0,       1.0,    0.0,      0.0,    0.0 },
+      {  2,  0,  2, -2,  1,       1.0,    0.0,     -1.0,    0.0 },
+      {  2,  0,  2,  2,  2,      -1.0,    0.0,      0.0,    0.0 },
+
+   /* 91-100 */
+      {  1,  0,  0,  2,  1,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  4, -2,  2,       1.0,    0.0,      0.0,    0.0 },
+      {  3,  0,  2, -2,  2,       1.0,    0.0,      0.0,    0.0 },
+      {  1,  0,  2, -2,  0,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  2,  0,  1,       1.0,    0.0,      0.0,    0.0 },
+      { -1, -1,  0,  2,  1,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  0, -2,  0,  1,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  2, -1,  2,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  0,  2,  0,      -1.0,    0.0,      0.0,    0.0 },
+      {  1,  0, -2, -2,  0,      -1.0,    0.0,      0.0,    0.0 },
+
+   /* 101-106 */
+      {  0, -1,  2,  0,  1,      -1.0,    0.0,      0.0,    0.0 },
+      {  1,  1,  0, -2,  1,      -1.0,    0.0,      0.0,    0.0 },
+      {  1,  0, -2,  2,  0,      -1.0,    0.0,      0.0,    0.0 },
+      {  2,  0,  0,  2,  0,       1.0,    0.0,      0.0,    0.0 },
+      {  0,  0,  2,  4,  2,      -1.0,    0.0,      0.0,    0.0 },
+      {  0,  1,  0,  1,  0,       1.0,    0.0,      0.0,    0.0 }
+   };
+
+/* Number of terms in the series */
+   const int NT = (int) (sizeof x / sizeof x[0]);
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental epoch J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* --------------------- */
+/* Fundamental arguments */
+/* --------------------- */
+
+/* Mean longitude of Moon minus mean longitude of Moon's perigee. */
+   el = eraAnpm(
+        (485866.733 + (715922.633 + (31.310 + 0.064 * t) * t) * t)
+        * ERFA_DAS2R + fmod(1325.0 * t, 1.0) * ERFA_D2PI);
+
+/* Mean longitude of Sun minus mean longitude of Sun's perigee. */
+   elp = eraAnpm(
+         (1287099.804 + (1292581.224 + (-0.577 - 0.012 * t) * t) * t)
+         * ERFA_DAS2R + fmod(99.0 * t, 1.0) * ERFA_D2PI);
+
+/* Mean longitude of Moon minus mean longitude of Moon's node. */
+   f = eraAnpm(
+       (335778.877 + (295263.137 + (-13.257 + 0.011 * t) * t) * t)
+       * ERFA_DAS2R + fmod(1342.0 * t, 1.0) * ERFA_D2PI);
+
+/* Mean elongation of Moon from Sun. */
+   d = eraAnpm(
+       (1072261.307 + (1105601.328 + (-6.891 + 0.019 * t) * t) * t)
+       * ERFA_DAS2R + fmod(1236.0 * t, 1.0) * ERFA_D2PI);
+
+/* Longitude of the mean ascending node of the lunar orbit on the */
+/* ecliptic, measured from the mean equinox of date. */
+   om = eraAnpm(
+        (450160.280 + (-482890.539 + (7.455 + 0.008 * t) * t) * t)
+        * ERFA_DAS2R + fmod(-5.0 * t, 1.0) * ERFA_D2PI);
+
+/* --------------- */
+/* Nutation series */
+/* --------------- */
+
+/* Initialize nutation components. */
+   dp = 0.0;
+   de = 0.0;
+
+/* Sum the nutation terms, ending with the biggest. */
+   for (j = NT-1; j >= 0; j--) {
+
+   /* Form argument for current term. */
+      arg = (double)x[j].nl  * el
+          + (double)x[j].nlp * elp
+          + (double)x[j].nf  * f
+          + (double)x[j].nd  * d
+          + (double)x[j].nom * om;
+
+   /* Accumulate current nutation term. */
+      s = x[j].sp + x[j].spt * t;
+      c = x[j].ce + x[j].cet * t;
+      if (s != 0.0) dp += s * sin(arg);
+      if (c != 0.0) de += c * cos(arg);
+   }
+
+/* Convert results from 0.1 mas units to radians. */
+   *dpsi = dp * U2R;
+   *deps = de * U2R;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/nutm80.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/nutm80.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/nutm80.c	(revision 18732)
@@ -0,0 +1,126 @@
+#include "erfa.h"
+
+void eraNutm80(double date1, double date2, double rmatn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a N u t m 8 0
+**  - - - - - - - - - -
+**
+**  Form the matrix of nutation for a given date, IAU 1980 model.
+**
+**  Given:
+**     date1,date2    double          TDB date (Note 1)
+**
+**  Returned:
+**     rmatn          double[3][3]    nutation matrix
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(true) = rmatn * V(mean),
+**     where the p-vector V(true) is with respect to the true
+**     equatorial triad of date and the p-vector V(mean) is with
+**     respect to the mean equatorial triad of date.
+**
+**  Called:
+**     eraNut80     nutation, IAU 1980
+**     eraObl80     mean obliquity, IAU 1980
+**     eraNumat     form nutation matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsi, deps, epsa;
+
+
+/* Nutation components and mean obliquity. */
+   eraNut80(date1, date2, &dpsi, &deps);
+   epsa = eraObl80(date1, date2);
+
+/* Build the rotation matrix. */
+   eraNumat(epsa, dpsi, deps, rmatn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/obl06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/obl06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/obl06.c	(revision 18732)
@@ -0,0 +1,127 @@
+#include "erfa.h"
+
+double eraObl06(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a O b l 0 6
+**  - - - - - - - - -
+**
+**  Mean obliquity of the ecliptic, IAU 2006 precession model.
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double   obliquity of the ecliptic (radians, Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result is the angle between the ecliptic and mean equator of
+**     date date1+date2.
+**
+**  Reference:
+**
+**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, eps0;
+
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Mean obliquity. */
+   eps0 = (84381.406     +
+          (-46.836769    +
+          ( -0.0001831   +
+          (  0.00200340  +
+          ( -0.000000576 +
+          ( -0.0000000434) * t) * t) * t) * t) * t) * ERFA_DAS2R;
+
+   return eps0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/obl80.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/obl80.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/obl80.c	(revision 18732)
@@ -0,0 +1,127 @@
+#include "erfa.h"
+
+double eraObl80(double date1, double date2)
+/*
+**  - - - - - - - - -
+**   e r a O b l 8 0
+**  - - - - - - - - -
+**
+**  Mean obliquity of the ecliptic, IAU 1980 model.
+**
+**  Given:
+**     date1,date2   double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                   double    obliquity of the ecliptic (radians, Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The result is the angle between the ecliptic and mean equator of
+**     date date1+date2.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Expression 3.222-1 (p114).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, eps0;
+
+
+/* Interval between fundamental epoch J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Mean obliquity of date. */
+   eps0 = ERFA_DAS2R * (84381.448  +
+                  (-46.8150   +
+                  (-0.00059   +
+                  ( 0.001813) * t) * t) * t);
+
+   return eps0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/p06e.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/p06e.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/p06e.c	(revision 18732)
@@ -0,0 +1,330 @@
+#include "erfa.h"
+
+void eraP06e(double date1, double date2,
+             double *eps0, double *psia, double *oma, double *bpa,
+             double *bqa, double *pia, double *bpia,
+             double *epsa, double *chia, double *za, double *zetaa,
+             double *thetaa, double *pa,
+             double *gam, double *phi, double *psi)
+/*
+**  - - - - - - - -
+**   e r a P 0 6 e
+**  - - - - - - - -
+**
+**  Precession angles, IAU 2006, equinox based.
+**
+**  Given:
+**     date1,date2   double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (see Note 2):
+**     eps0          double   epsilon_0
+**     psia          double   psi_A
+**     oma           double   omega_A
+**     bpa           double   P_A
+**     bqa           double   Q_A
+**     pia           double   pi_A
+**     bpia          double   Pi_A
+**     epsa          double   obliquity epsilon_A
+**     chia          double   chi_A
+**     za            double   z_A
+**     zetaa         double   zeta_A
+**     thetaa        double   theta_A
+**     pa            double   p_A
+**     gam           double   F-W angle gamma_J2000
+**     phi           double   F-W angle phi_J2000
+**     psi           double   F-W angle psi_J2000
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) This function returns the set of equinox based angles for the
+**     Capitaine et al. "P03" precession theory, adopted by the IAU in
+**     2006.  The angles are set out in Table 1 of Hilton et al. (2006):
+**
+**     eps0   epsilon_0   obliquity at J2000.0
+**     psia   psi_A       luni-solar precession
+**     oma    omega_A     inclination of equator wrt J2000.0 ecliptic
+**     bpa    P_A         ecliptic pole x, J2000.0 ecliptic triad
+**     bqa    Q_A         ecliptic pole -y, J2000.0 ecliptic triad
+**     pia    pi_A        angle between moving and J2000.0 ecliptics
+**     bpia   Pi_A        longitude of ascending node of the ecliptic
+**     epsa   epsilon_A   obliquity of the ecliptic
+**     chia   chi_A       planetary precession
+**     za     z_A         equatorial precession: -3rd 323 Euler angle
+**     zetaa  zeta_A      equatorial precession: -1st 323 Euler angle
+**     thetaa theta_A     equatorial precession: 2nd 323 Euler angle
+**     pa     p_A         general precession
+**     gam    gamma_J2000 J2000.0 RA difference of ecliptic poles
+**     phi    phi_J2000   J2000.0 codeclination of ecliptic pole
+**     psi    psi_J2000   longitude difference of equator poles, J2000.0
+**
+**     The returned values are all radians.
+**
+**  3) Hilton et al. (2006) Table 1 also contains angles that depend on
+**     models distinct from the P03 precession theory itself, namely the
+**     IAU 2000A frame bias and nutation.  The quoted polynomials are
+**     used in other ERFA functions:
+**
+**     . eraXy06  contains the polynomial parts of the X and Y series.
+**
+**     . eraS06  contains the polynomial part of the s+XY/2 series.
+**
+**     . eraPfw06  implements the series for the Fukushima-Williams
+**       angles that are with respect to the GCRS pole (i.e. the variants
+**       that include frame bias).
+**
+**  4) The IAU resolution stipulated that the choice of parameterization
+**     was left to the user, and so an IAU compliant precession
+**     implementation can be constructed using various combinations of
+**     the angles returned by the present function.
+**
+**  5) The parameterization used by ERFA is the version of the Fukushima-
+**     Williams angles that refers directly to the GCRS pole.  These
+**     angles may be calculated by calling the function eraPfw06.  ERFA
+**     also supports the direct computation of the CIP GCRS X,Y by
+**     series, available by calling eraXy06.
+**
+**  6) The agreement between the different parameterizations is at the
+**     1 microarcsecond level in the present era.
+**
+**  7) When constructing a precession formulation that refers to the GCRS
+**     pole rather than the dynamical pole, it may (depending on the
+**     choice of angles) be necessary to introduce the frame bias
+**     explicitly.
+**
+**  8) It is permissible to re-use the same variable in the returned
+**     arguments.  The quantities are stored in the stated order.
+**
+**  Reference:
+**
+**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
+**
+**  Called:
+**     eraObl06     mean obliquity, IAU 2006
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t;
+
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Obliquity at J2000.0. */
+
+   *eps0 = 84381.406 * ERFA_DAS2R;
+
+/* Luni-solar precession. */
+
+   *psia = ( 5038.481507     +
+           (   -1.0790069    +
+           (   -0.00114045   +
+           (    0.000132851  +
+           (   -0.0000000951 )
+           * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Inclination of mean equator with respect to the J2000.0 ecliptic. */
+
+   *oma = *eps0 + ( -0.025754     +
+                  (  0.0512623    +
+                  ( -0.00772503   +
+                  ( -0.000000467  +
+                  (  0.0000003337 )
+                  * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Ecliptic pole x, J2000.0 ecliptic triad. */
+
+   *bpa = (  4.199094     +
+          (  0.1939873    +
+          ( -0.00022466   +
+          ( -0.000000912  +
+          (  0.0000000120 )
+          * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Ecliptic pole -y, J2000.0 ecliptic triad. */
+
+   *bqa = ( -46.811015     +
+          (   0.0510283    +
+          (   0.00052413   +
+          (  -0.000000646  +
+          (  -0.0000000172 )
+          * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Angle between moving and J2000.0 ecliptics. */
+
+   *pia = ( 46.998973     +
+          ( -0.0334926    +
+          ( -0.00012559   +
+          (  0.000000113  +
+          ( -0.0000000022 )
+          * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Longitude of ascending node of the moving ecliptic. */
+
+   *bpia = ( 629546.7936      +
+           (   -867.95758     +
+           (      0.157992    +
+           (     -0.0005371   +
+           (     -0.00004797  +
+           (      0.000000072 )
+           * t) * t) * t) * t) * t) * ERFA_DAS2R;
+
+/* Mean obliquity of the ecliptic. */
+
+   *epsa = eraObl06(date1, date2);
+
+/* Planetary precession. */
+
+   *chia = ( 10.556403     +
+           ( -2.3814292    +
+           ( -0.00121197   +
+           (  0.000170663  +
+           ( -0.0000000560 )
+           * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Equatorial precession: minus the third of the 323 Euler angles. */
+
+   *za = (   -2.650545     +
+         ( 2306.077181     +
+         (    1.0927348    +
+         (    0.01826837   +
+         (   -0.000028596  +
+         (   -0.0000002904 )
+         * t) * t) * t) * t) * t) * ERFA_DAS2R;
+
+/* Equatorial precession: minus the first of the 323 Euler angles. */
+
+   *zetaa = (    2.650545     +
+            ( 2306.083227     +
+            (    0.2988499    +
+            (    0.01801828   +
+            (   -0.000005971  +
+            (   -0.0000003173 )
+            * t) * t) * t) * t) * t) * ERFA_DAS2R;
+
+/* Equatorial precession: second of the 323 Euler angles. */
+
+   *thetaa = ( 2004.191903     +
+             (   -0.4294934    +
+             (   -0.04182264   +
+             (   -0.000007089  +
+             (   -0.0000001274 )
+             * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* General precession. */
+
+   *pa = ( 5028.796195     +
+         (    1.1054348    +
+         (    0.00007964   +
+         (   -0.000023857  +
+         (    0.0000000383 )
+         * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+/* Fukushima-Williams angles for precession. */
+
+   *gam = ( 10.556403     +
+          (  0.4932044    +
+          ( -0.00031238   +
+          ( -0.000002788  +
+          (  0.0000000260 )
+          * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+   *phi = *eps0 + ( -46.811015     +
+                  (   0.0511269    +
+                  (   0.00053289   +
+                  (  -0.000000440  +
+                  (  -0.0000000176 )
+                  * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+   *psi = ( 5038.481507     +
+          (    1.5584176    +
+          (   -0.00018522   +
+          (   -0.000026452  +
+          (   -0.0000000148 )
+          * t) * t) * t) * t) * t * ERFA_DAS2R;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/p2pv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/p2pv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/p2pv.c	(revision 18732)
@@ -0,0 +1,92 @@
+#include "erfa.h"
+
+void eraP2pv(double p[3], double pv[2][3])
+/*
+**  - - - - - - - -
+**   e r a P 2 p v
+**  - - - - - - - -
+**
+**  Extend a p-vector to a pv-vector by appending a zero velocity.
+**
+**  Given:
+**     p        double[3]       p-vector
+**
+**  Returned:
+**     pv       double[2][3]    pv-vector
+**
+**  Called:
+**     eraCp        copy p-vector
+**     eraZp        zero p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraCp(p, pv[0]);
+   eraZp(pv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/p2s.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/p2s.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/p2s.c	(revision 18732)
@@ -0,0 +1,100 @@
+#include "erfa.h"
+
+void eraP2s(double p[3], double *theta, double *phi, double *r)
+/*
+**  - - - - - - -
+**   e r a P 2 s
+**  - - - - - - -
+**
+**  P-vector to spherical polar coordinates.
+**
+**  Given:
+**     p        double[3]    p-vector
+**
+**  Returned:
+**     theta    double       longitude angle (radians)
+**     phi      double       latitude angle (radians)
+**     r        double       radial distance
+**
+**  Notes:
+**
+**  1) If P is null, zero theta, phi and r are returned.
+**
+**  2) At either pole, zero theta is returned.
+**
+**  Called:
+**     eraC2s       p-vector to spherical
+**     eraPm        modulus of p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraC2s(p, theta, phi);
+   *r = eraPm(p);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pap.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pap.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pap.c	(revision 18732)
@@ -0,0 +1,148 @@
+#include "erfa.h"
+
+double eraPap(double a[3], double b[3])
+/*
+**  - - - - - - -
+**   e r a P a p
+**  - - - - - - -
+**
+**  Position-angle from two p-vectors.
+**
+**  Given:
+**     a      double[3]  direction of reference point
+**     b      double[3]  direction of point whose PA is required
+**
+**  Returned (function value):
+**            double     position angle of b with respect to a (radians)
+**
+**  Notes:
+**
+**  1) The result is the position angle, in radians, of direction b with
+**     respect to direction a.  It is in the range -pi to +pi.  The
+**     sense is such that if b is a small distance "north" of a the
+**     position angle is approximately zero, and if b is a small
+**     distance "east" of a the position angle is approximately +pi/2.
+**
+**  2) The vectors a and b need not be of unit length.
+**
+**  3) Zero is returned if the two directions are the same or if either
+**     vector is null.
+**
+**  4) If vector a is at a pole, the result is ill-defined.
+**
+**  Called:
+**     eraPn        decompose p-vector into modulus and direction
+**     eraPm        modulus of p-vector
+**     eraPxp       vector product of two p-vectors
+**     eraPmp       p-vector minus p-vector
+**     eraPdp       scalar product of two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double am, au[3], bm, st, ct, xa, ya, za, eta[3], xi[3], a2b[3], pa;
+
+
+/* Modulus and direction of the a vector. */
+   eraPn(a, &am, au);
+
+/* Modulus of the b vector. */
+   bm = eraPm(b);
+
+/* Deal with the case of a null vector. */
+   if ((am == 0.0) || (bm == 0.0)) {
+      st = 0.0;
+      ct = 1.0;
+   } else {
+
+   /* The "north" axis tangential from a (arbitrary length). */
+      xa = a[0];
+      ya = a[1];
+      za = a[2];
+      eta[0] = -xa * za;
+      eta[1] = -ya * za;
+      eta[2] =  xa*xa + ya*ya;
+
+   /* The "east" axis tangential from a (same length). */
+      eraPxp(eta, au, xi);
+
+   /* The vector from a to b. */
+      eraPmp(b, a, a2b);
+
+   /* Resolve into components along the north and east axes. */
+      st = eraPdp(a2b, xi);
+      ct = eraPdp(a2b, eta);
+
+   /* Deal with degenerate cases. */
+      if ((st == 0.0) && (ct == 0.0)) ct = 1.0;
+   }
+
+/* Position angle. */
+   pa = atan2(st, ct);
+
+   return pa;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pas.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pas.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pas.c	(revision 18732)
@@ -0,0 +1,105 @@
+#include "erfa.h"
+
+double eraPas(double al, double ap, double bl, double bp)
+/*
+**  - - - - - - -
+**   e r a P a s
+**  - - - - - - -
+**
+**  Position-angle from spherical coordinates.
+**
+**  Given:
+**     al     double     longitude of point A (e.g. RA) in radians
+**     ap     double     latitude of point A (e.g. Dec) in radians
+**     bl     double     longitude of point B
+**     bp     double     latitude of point B
+**
+**  Returned (function value):
+**            double     position angle of B with respect to A
+**
+**  Notes:
+**
+**  1) The result is the bearing (position angle), in radians, of point
+**     B with respect to point A.  It is in the range -pi to +pi.  The
+**     sense is such that if B is a small distance "east" of point A,
+**     the bearing is approximately +pi/2.
+**
+**  2) Zero is returned if the two points are coincident.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dl, x, y, pa;
+
+
+   dl = bl - al;
+   y = sin(dl) * cos(bp);
+   x = sin(bp) * cos(ap) - cos(bp) * sin(ap) * cos(dl);
+   pa = ((x != 0.0) || (y != 0.0)) ? atan2(y, x) : 0.0;
+
+   return pa;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pb06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pb06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pb06.c	(revision 18732)
@@ -0,0 +1,153 @@
+#include "erfa.h"
+
+void eraPb06(double date1, double date2,
+             double *bzeta, double *bz, double *btheta)
+/*
+**  - - - - - - - -
+**   e r a P b 0 6
+**  - - - - - - - -
+**
+**  This function forms three Euler angles which implement general
+**  precession from epoch J2000.0, using the IAU 2006 model.  Frame
+**  bias (the offset between ICRS and mean J2000.0) is included.
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     bzeta        double   1st rotation: radians cw around z
+**     bz           double   3rd rotation: radians cw around z
+**     btheta       double   2nd rotation: radians ccw around y
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The traditional accumulated precession angles zeta_A, z_A,
+**     theta_A cannot be obtained in the usual way, namely through
+**     polynomial expressions, because of the frame bias.  The latter
+**     means that two of the angles undergo rapid changes near this
+**     date.  They are instead the results of decomposing the
+**     precession-bias matrix obtained by using the Fukushima-Williams
+**     method, which does not suffer from the problem.  The
+**     decomposition returns values which can be used in the
+**     conventional formulation and which include frame bias.
+**
+**  3) The three angles are returned in the conventional order, which
+**     is not the same as the order of the corresponding Euler
+**     rotations.  The precession-bias matrix is
+**     R_3(-z) x R_2(+theta) x R_3(-zeta).
+**
+**  4) Should zeta_A, z_A, theta_A angles be required that do not
+**     contain frame bias, they are available by calling the ERFA
+**     function eraP06e.
+**
+**  Called:
+**     eraPmat06    PB matrix, IAU 2006
+**     eraRz        rotate around Z-axis
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r[3][3], r31, r32;
+
+
+/* Precession matrix via Fukushima-Williams angles. */
+   eraPmat06(date1, date2, r);
+
+/* Solve for z. */
+   *bz = atan2(r[1][2], r[0][2]);
+
+/* Remove it from the matrix. */
+   eraRz(*bz, r);
+
+/* Solve for the remaining two angles. */
+   *bzeta = atan2 (r[1][0], r[1][1]);
+   r31 = r[2][0];
+   r32 = r[2][1];
+   *btheta = atan2(-ERFA_DSIGN(sqrt(r31 * r31 + r32 * r32), r[0][2]),
+                   r[2][2]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pdp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pdp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pdp.c	(revision 18732)
@@ -0,0 +1,93 @@
+#include "erfa.h"
+
+double eraPdp(double a[3], double b[3])
+/*
+**  - - - - - - -
+**   e r a P d p
+**  - - - - - - -
+**
+**  p-vector inner (=scalar=dot) product.
+**
+**  Given:
+**     a      double[3]     first p-vector
+**     b      double[3]     second p-vector
+**
+**  Returned (function value):
+**            double        a . b
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double w;
+
+
+   w  = a[0] * b[0]
+      + a[1] * b[1]
+      + a[2] * b[2];
+
+   return w;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pfw06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pfw06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pfw06.c	(revision 18732)
@@ -0,0 +1,174 @@
+#include "erfa.h"
+
+void eraPfw06(double date1, double date2,
+              double *gamb, double *phib, double *psib, double *epsa)
+/*
+**  - - - - - - - - -
+**   e r a P f w 0 6
+**  - - - - - - - - -
+**
+**  Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     gamb         double   F-W angle gamma_bar (radians)
+**     phib         double   F-W angle phi_bar (radians)
+**     psib         double   F-W angle psi_bar (radians)
+**     epsa         double   F-W angle epsilon_A (radians)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) Naming the following points:
+**
+**           e = J2000.0 ecliptic pole,
+**           p = GCRS pole,
+**           E = mean ecliptic pole of date,
+**     and   P = mean pole of date,
+**
+**     the four Fukushima-Williams angles are as follows:
+**
+**        gamb = gamma_bar = epE
+**        phib = phi_bar = pE
+**        psib = psi_bar = pEP
+**        epsa = epsilon_A = EP
+**
+**  3) The matrix representing the combined effects of frame bias and
+**     precession is:
+**
+**        PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb)
+**
+**  4) The matrix representing the combined effects of frame bias,
+**     precession and nutation is simply:
+**
+**        NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb)
+**
+**     where dP and dE are the nutation components with respect to the
+**     ecliptic of date.
+**
+**  Reference:
+**
+**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
+**
+**  Called:
+**     eraObl06     mean obliquity, IAU 2006
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t;
+
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* P03 bias+precession angles. */
+   *gamb = (    -0.052928     +
+           (    10.556378     +
+           (     0.4932044    +
+           (    -0.00031238   +
+           (    -0.000002788  +
+           (     0.0000000260 )
+           * t) * t) * t) * t) * t) * ERFA_DAS2R;
+   *phib = ( 84381.412819     +
+           (   -46.811016     +
+           (     0.0511268    +
+           (     0.00053289   +
+           (    -0.000000440  +
+           (    -0.0000000176 )
+           * t) * t) * t) * t) * t) * ERFA_DAS2R;
+   *psib = (    -0.041775     +
+           (  5038.481484     +
+           (     1.5584175    +
+           (    -0.00018522   +
+           (    -0.000026452  +
+           (    -0.0000000148 )
+           * t) * t) * t) * t) * t) * ERFA_DAS2R;
+   *epsa =  eraObl06(date1, date2);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/plan94.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/plan94.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/plan94.c	(revision 18732)
@@ -0,0 +1,523 @@
+#include "erfa.h"
+
+int eraPlan94(double date1, double date2, int np, double pv[2][3])
+/*
+**  - - - - - - - - - -
+**   e r a P l a n 9 4
+**  - - - - - - - - - -
+**
+**  Approximate heliocentric position and velocity of a nominated major
+**  planet:  Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or
+**  Neptune (but not the Earth itself).
+**
+**  Given:
+**     date1  double       TDB date part A (Note 1)
+**     date2  double       TDB date part B (Note 1)
+**     np     int          planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars,
+**                             5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
+**
+**  Returned (argument):
+**     pv     double[2][3] planet p,v (heliocentric, J2000.0, AU,AU/d)
+**
+**  Returned (function value):
+**            int          status: -1 = illegal NP (outside 1-8)
+**                                  0 = OK
+**                                 +1 = warning: year outside 1000-3000
+**                                 +2 = warning: failed to converge
+**
+**  Notes:
+**
+**  1) The date date1+date2 is in the TDB time scale (in practice TT can
+**     be used) and is a Julian Date, apportioned in any convenient way
+**     between the two arguments.  For example, JD(TDB)=2450123.7 could
+**     be expressed in any of these ways, among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.  The limited
+**     accuracy of the present algorithm is such that any of the methods
+**     is satisfactory.
+**
+**  2) If an np value outside the range 1-8 is supplied, an error status
+**     (function value -1) is returned and the pv vector set to zeroes.
+**
+**  3) For np=3 the result is for the Earth-Moon Barycenter.  To obtain
+**     the heliocentric position and velocity of the Earth, use instead
+**     the ERFA function eraEpv00.
+**
+**  4) On successful return, the array pv contains the following:
+**
+**        pv[0][0]   x      }
+**        pv[0][1]   y      } heliocentric position, AU
+**        pv[0][2]   z      }
+**
+**        pv[1][0]   xdot   }
+**        pv[1][1]   ydot   } heliocentric velocity, AU/d
+**        pv[1][2]   zdot   }
+**
+**     The reference frame is equatorial and is with respect to the
+**     mean equator and equinox of epoch J2000.0.
+**
+**  5) The algorithm is due to J.L. Simon, P. Bretagnon, J. Chapront,
+**     M. Chapront-Touze, G. Francou and J. Laskar (Bureau des
+**     Longitudes, Paris, France).  From comparisons with JPL
+**     ephemeris DE102, they quote the following maximum errors
+**     over the interval 1800-2050:
+**
+**                     L (arcsec)    B (arcsec)      R (km)
+**
+**        Mercury          4             1             300
+**        Venus            5             1             800
+**        EMB              6             1            1000
+**        Mars            17             1            7700
+**        Jupiter         71             5           76000
+**        Saturn          81            13          267000
+**        Uranus          86             7          712000
+**        Neptune         11             1          253000
+**
+**     Over the interval 1000-3000, they report that the accuracy is no
+**     worse than 1.5 times that over 1800-2050.  Outside 1000-3000 the
+**     accuracy declines.
+**
+**     Comparisons of the present function with the JPL DE200 ephemeris
+**     give the following RMS errors over the interval 1960-2025:
+**
+**                      position (km)     velocity (m/s)
+**
+**        Mercury            334               0.437
+**        Venus             1060               0.855
+**        EMB               2010               0.815
+**        Mars              7690               1.98
+**        Jupiter          71700               7.70
+**        Saturn          199000              19.4
+**        Uranus          564000              16.4
+**        Neptune         158000              14.4
+**
+**     Comparisons against DE200 over the interval 1800-2100 gave the
+**     following maximum absolute differences.  (The results using
+**     DE406 were essentially the same.)
+**
+**                   L (arcsec)   B (arcsec)     R (km)   Rdot (m/s)
+**
+**        Mercury        7            1            500       0.7
+**        Venus          7            1           1100       0.9
+**        EMB            9            1           1300       1.0
+**        Mars          26            1           9000       2.5
+**        Jupiter       78            6          82000       8.2
+**        Saturn        87           14         263000      24.6
+**        Uranus        86            7         661000      27.4
+**        Neptune       11            2         248000      21.4
+**
+**  6) The present ERFA re-implementation of the original Simon et al.
+**     Fortran code differs from the original in the following respects:
+**
+**       *  C instead of Fortran.
+**
+**       *  The date is supplied in two parts.
+**
+**       *  The result is returned only in equatorial Cartesian form;
+**          the ecliptic longitude, latitude and radius vector are not
+**          returned.
+**
+**       *  The result is in the J2000.0 equatorial frame, not ecliptic.
+**
+**       *  More is done in-line: there are fewer calls to subroutines.
+**
+**       *  Different error/warning status values are used.
+**
+**       *  A different Kepler's-equation-solver is used (avoiding
+**          use of double precision complex).
+**
+**       *  Polynomials in t are nested to minimize rounding errors.
+**
+**       *  Explicit double constants are used to avoid mixed-mode
+**          expressions.
+**
+**     None of the above changes affects the result significantly.
+**
+**  7) The returned status indicates the most serious condition
+**     encountered during execution of the function.  Illegal np is
+**     considered the most serious, overriding failure to converge,
+**     which in turn takes precedence over the remote date warning.
+**
+**  Called:
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Reference:  Simon, J.L, Bretagnon, P., Chapront, J.,
+**              Chapront-Touze, M., Francou, G., and Laskar, J.,
+**              Astron. Astrophys. 282, 663 (1994).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Gaussian constant */
+   static const double GK = 0.017202098950;
+
+/* Sin and cos of J2000.0 mean obliquity (IAU 1976) */
+   static const double SINEPS = 0.3977771559319137;
+   static const double COSEPS = 0.9174820620691818;
+
+/* Maximum number of iterations allowed to solve Kepler's equation */
+   static const int KMAX = 10;
+
+   int jstat, i, k;
+   double t, da, dl, de, dp, di, dom, dmu, arga, argl, am,
+          ae, dae, ae2, at, r, v, si2, xq, xp, tl, xsw,
+          xcw, xm2, xf, ci2, xms, xmc, xpxq2, x, y, z;
+
+/* Planetary inverse masses */
+   static const double amas[] = { 6023600.0,       /* Mercury */
+                                   408523.5,       /* Venus   */
+                                   328900.5,       /* EMB     */
+                                  3098710.0,       /* Mars    */
+                                     1047.355,     /* Jupiter */
+                                     3498.5,       /* Saturn  */
+                                    22869.0,       /* Uranus  */
+                                    19314.0 };     /* Neptune */
+
+/*
+** Tables giving the mean Keplerian elements, limited to t^2 terms:
+**
+**   a       semi-major axis (AU)
+**   dlm     mean longitude (degree and arcsecond)
+**   e       eccentricity
+**   pi      longitude of the perihelion (degree and arcsecond)
+**   dinc    inclination (degree and arcsecond)
+**   omega   longitude of the ascending node (degree and arcsecond)
+*/
+
+   static const double a[][3] = {
+       {  0.3870983098,           0.0,     0.0 },  /* Mercury */
+       {  0.7233298200,           0.0,     0.0 },  /* Venus   */
+       {  1.0000010178,           0.0,     0.0 },  /* EMB     */
+       {  1.5236793419,         3e-10,     0.0 },  /* Mars    */
+       {  5.2026032092,     19132e-10, -39e-10 },  /* Jupiter */
+       {  9.5549091915, -0.0000213896, 444e-10 },  /* Saturn  */
+       { 19.2184460618,     -3716e-10, 979e-10 },  /* Uranus  */
+       { 30.1103868694,    -16635e-10, 686e-10 }   /* Neptune */
+   };
+
+   static const double dlm[][3] = {
+       { 252.25090552, 5381016286.88982,  -1.92789 },
+       { 181.97980085, 2106641364.33548,   0.59381 },
+       { 100.46645683, 1295977422.83429,  -2.04411 },
+       { 355.43299958,  689050774.93988,   0.94264 },
+       {  34.35151874,  109256603.77991, -30.60378 },
+       {  50.07744430,   43996098.55732,  75.61614 },
+       { 314.05500511,   15424811.93933,  -1.75083 },
+       { 304.34866548,    7865503.20744,   0.21103 }
+   };
+
+   static const double e[][3] = {
+       { 0.2056317526,  0.0002040653,    -28349e-10 },
+       { 0.0067719164, -0.0004776521,     98127e-10 },
+       { 0.0167086342, -0.0004203654, -0.0000126734 },
+       { 0.0934006477,  0.0009048438,    -80641e-10 },
+       { 0.0484979255,  0.0016322542, -0.0000471366 },
+       { 0.0555481426, -0.0034664062, -0.0000643639 },
+       { 0.0463812221, -0.0002729293,  0.0000078913 },
+       { 0.0094557470,  0.0000603263,           0.0 }
+   };
+
+   static const double pi[][3] = {
+       {  77.45611904,  5719.11590,   -4.83016 },
+       { 131.56370300,   175.48640, -498.48184 },
+       { 102.93734808, 11612.35290,   53.27577 },
+       { 336.06023395, 15980.45908,  -62.32800 },
+       {  14.33120687,  7758.75163,  259.95938 },
+       {  93.05723748, 20395.49439,  190.25952 },
+       { 173.00529106,  3215.56238,  -34.09288 },
+       {  48.12027554,  1050.71912,   27.39717 }
+   };
+
+   static const double dinc[][3] = {
+       { 7.00498625, -214.25629,   0.28977 },
+       { 3.39466189,  -30.84437, -11.67836 },
+       {        0.0,  469.97289,  -3.35053 },
+       { 1.84972648, -293.31722,  -8.11830 },
+       { 1.30326698,  -71.55890,  11.95297 },
+       { 2.48887878,   91.85195, -17.66225 },
+       { 0.77319689,  -60.72723,   1.25759 },
+       { 1.76995259,    8.12333,   0.08135 }
+   };
+
+   static const double omega[][3] = {
+       {  48.33089304,  -4515.21727,  -31.79892 },
+       {  76.67992019, -10008.48154,  -51.32614 },
+       { 174.87317577,  -8679.27034,   15.34191 },
+       {  49.55809321, -10620.90088, -230.57416 },
+       { 100.46440702,   6362.03561,  326.52178 },
+       { 113.66550252,  -9240.19942,  -66.23743 },
+       {  74.00595701,   2669.15033,  145.93964 },
+       { 131.78405702,   -221.94322,   -0.78728 }
+   };
+
+/* Tables for trigonometric terms to be added to the mean elements of */
+/* the semi-major axes */
+
+   static const double kp[][9] = {
+    {   69613, 75645, 88306, 59899, 15746, 71087, 142173,  3086,    0 },
+    {   21863, 32794, 26934, 10931, 26250, 43725,  53867, 28939,    0 },
+    {   16002, 21863, 32004, 10931, 14529, 16368,  15318, 32794,    0 },
+    {    6345,  7818, 15636,  7077,  8184, 14163,   1107,  4872,    0 },
+    {    1760,  1454,  1167,   880,   287,  2640,     19,  2047, 1454 },
+    {     574,     0,   880,   287,    19,  1760,   1167,   306,  574 },
+    {     204,     0,   177,  1265,     4,   385,    200,   208,  204 },
+    {       0,   102,   106,     4,    98,  1367,    487,   204,    0 }
+   };
+
+   static const double ca[][9] = {
+    {       4,    -13,    11,   -9,    -9,   -3,     -1,     4,     0 },
+    {    -156,     59,   -42,    6,    19,  -20,    -10,   -12,     0 },
+    {      64,   -152,    62,   -8,    32,  -41,     19,   -11,     0 },
+    {     124,    621,  -145,  208,    54,  -57,     30,    15,     0 },
+    {  -23437,  -2634,  6601, 6259, -1507,-1821,   2620, -2115, -1489 },
+    {   62911,-119919, 79336,17814,-24241,12068,   8306, -4893,  8902 },
+    {  389061,-262125,-44088, 8387,-22976,-2093,   -615, -9720,  6633 },
+    { -412235,-157046,-31430,37817, -9740,  -13,  -7449,  9644,     0 }
+   };
+
+   static const double sa[][9] = {
+    {     -29,    -1,     9,     6,    -6,     5,     4,     0,     0 },
+    {     -48,  -125,   -26,   -37,    18,   -13,   -20,    -2,     0 },
+    {    -150,   -46,    68,    54,    14,    24,   -28,    22,     0 },
+    {    -621,   532,  -694,   -20,   192,   -94,    71,   -73,     0 },
+    {  -14614,-19828, -5869,  1881, -4372, -2255,   782,   930,   913 },
+    {  139737,     0, 24667, 51123, -5102,  7429, -4095, -1976, -9566 },
+    { -138081,     0, 37205,-49039,-41901,-33872,-27037,-12474, 18797 },
+    {       0, 28492,133236, 69654, 52322,-49577,-26430, -3593,     0 }
+   };
+
+/* Tables giving the trigonometric terms to be added to the mean */
+/* elements of the mean longitudes */
+
+   static const double kq[][10] = {
+    {   3086,15746,69613,59899,75645,88306, 12661,  2658,    0,     0 },
+    {  21863,32794,10931,   73, 4387,26934,  1473,  2157,    0,     0 },
+    {     10,16002,21863,10931, 1473,32004,  4387,    73,    0,     0 },
+    {     10, 6345, 7818, 1107,15636, 7077,  8184,   532,   10,     0 },
+    {     19, 1760, 1454,  287, 1167,  880,   574,  2640,   19,  1454 },
+    {     19,  574,  287,  306, 1760,   12,    31,    38,   19,   574 },
+    {      4,  204,  177,    8,   31,  200,  1265,   102,    4,   204 },
+    {      4,  102,  106,    8,   98, 1367,   487,   204,    4,   102 }
+   };
+
+   static const double cl[][10] = {
+    {      21,   -95, -157,   41,   -5,   42,  23,  30,      0,     0 },
+    {    -160,  -313, -235,   60,  -74,  -76, -27,  34,      0,     0 },
+    {    -325,  -322,  -79,  232,  -52,   97,  55, -41,      0,     0 },
+    {    2268,  -979,  802,  602, -668,  -33, 345, 201,    -55,     0 },
+    {    7610, -4997,-7689,-5841,-2617, 1115,-748,-607,   6074,   354 },
+    {  -18549, 30125,20012, -730,  824,   23,1289,-352, -14767, -2062 },
+    { -135245,-14594, 4197,-4030,-5630,-2898,2540,-306,   2939,  1986 },
+    {   89948,  2103, 8963, 2695, 3682, 1648, 866,-154,  -1963,  -283 }
+   };
+
+   static const double sl[][10] = {
+    {   -342,   136,  -23,   62,   66,  -52, -33,    17,     0,     0 },
+    {    524,  -149,  -35,  117,  151,  122, -71,   -62,     0,     0 },
+    {   -105,  -137,  258,   35, -116,  -88,-112,   -80,     0,     0 },
+    {    854,  -205, -936, -240,  140, -341, -97,  -232,   536,     0 },
+    { -56980,  8016, 1012, 1448,-3024,-3710, 318,   503,  3767,   577 },
+    { 138606,-13478,-4964, 1441,-1319,-1482, 427,  1236, -9167, -1918 },
+    {  71234,-41116, 5334,-4935,-1848,   66, 434, -1748,  3780,  -701 },
+    { -47645, 11647, 2166, 3194,  679,    0,-244,  -419, -2531,    48 }
+   };
+
+/*--------------------------------------------------------------------*/
+
+/* Validate the planet number. */
+   if ((np < 1) || (np > 8)) {
+      jstat = -1;
+
+   /* Reset the result in case of failure. */
+      for (k = 0; k < 2; k++) {
+         for (i = 0; i < 3; i++) {
+            pv[k][i] = 0.0;
+         }
+      }
+
+   } else {
+
+   /* Decrement the planet number to start at zero. */
+      np--;
+
+   /* Time: Julian millennia since J2000.0. */
+      t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJM;
+
+   /* OK status unless remote date. */
+      jstat = fabs(t) <= 1.0 ? 0 : 1;
+
+   /* Compute the mean elements. */
+      da = a[np][0] +
+          (a[np][1] +
+           a[np][2] * t) * t;
+      dl = (3600.0 * dlm[np][0] +
+                    (dlm[np][1] +
+                     dlm[np][2] * t) * t) * ERFA_DAS2R;
+      de = e[np][0] +
+         ( e[np][1] +
+           e[np][2] * t) * t;
+      dp = eraAnpm((3600.0 * pi[np][0] +
+                            (pi[np][1] +
+                             pi[np][2] * t) * t) * ERFA_DAS2R);
+      di = (3600.0 * dinc[np][0] +
+                    (dinc[np][1] +
+                     dinc[np][2] * t) * t) * ERFA_DAS2R;
+      dom = eraAnpm((3600.0 * omega[np][0] +
+                             (omega[np][1] +
+                              omega[np][2] * t) * t) * ERFA_DAS2R);
+
+   /* Apply the trigonometric terms. */
+      dmu = 0.35953620 * t;
+      for (k = 0; k < 8; k++) {
+         arga = kp[np][k] * dmu;
+         argl = kq[np][k] * dmu;
+         da += (ca[np][k] * cos(arga) +
+                sa[np][k] * sin(arga)) * 1e-7;
+         dl += (cl[np][k] * cos(argl) +
+                sl[np][k] * sin(argl)) * 1e-7;
+      }
+      arga = kp[np][8] * dmu;
+      da += t * (ca[np][8] * cos(arga) +
+                 sa[np][8] * sin(arga)) * 1e-7;
+      for (k = 8; k < 10; k++) {
+         argl = kq[np][k] * dmu;
+         dl += t * (cl[np][k] * cos(argl) +
+                    sl[np][k] * sin(argl)) * 1e-7;
+      }
+      dl = fmod(dl, ERFA_D2PI);
+
+   /* Iterative soln. of Kepler's equation to get eccentric anomaly. */
+      am = dl - dp;
+      ae = am + de * sin(am);
+      k = 0;
+      dae = 1.0;
+      while (k < KMAX && fabs(dae) > 1e-12) {
+         dae = (am - ae + de * sin(ae)) / (1.0 - de * cos(ae));
+         ae += dae;
+         k++;
+         if (k == KMAX-1) jstat = 2;
+      }
+
+   /* True anomaly. */
+      ae2 = ae / 2.0;
+      at = 2.0 * atan2(sqrt((1.0 + de) / (1.0 - de)) * sin(ae2),
+                                                       cos(ae2));
+
+   /* Distance (AU) and speed (radians per day). */
+      r = da * (1.0 - de * cos(ae));
+      v = GK * sqrt((1.0 + 1.0 / amas[np]) / (da * da * da));
+
+      si2 = sin(di / 2.0);
+      xq = si2 * cos(dom);
+      xp = si2 * sin(dom);
+      tl = at + dp;
+      xsw = sin(tl);
+      xcw = cos(tl);
+      xm2 = 2.0 * (xp * xcw - xq * xsw);
+      xf = da / sqrt(1  -  de * de);
+      ci2 = cos(di / 2.0);
+      xms = (de * sin(dp) + xsw) * xf;
+      xmc = (de * cos(dp) + xcw) * xf;
+      xpxq2 = 2 * xp * xq;
+
+   /* Position (J2000.0 ecliptic x,y,z in AU). */
+      x = r * (xcw - xm2 * xp);
+      y = r * (xsw + xm2 * xq);
+      z = r * (-xm2 * ci2);
+
+   /* Rotate to equatorial. */
+      pv[0][0] = x;
+      pv[0][1] = y * COSEPS - z * SINEPS;
+      pv[0][2] = y * SINEPS + z * COSEPS;
+
+   /* Velocity (J2000.0 ecliptic xdot,ydot,zdot in AU/d). */
+      x = v * (( -1.0 + 2.0 * xp * xp) * xms + xpxq2 * xmc);
+      y = v * ((  1.0 - 2.0 * xq * xq) * xmc - xpxq2 * xms);
+      z = v * (2.0 * ci2 * (xp * xms + xq * xmc));
+
+   /* Rotate to equatorial. */
+      pv[1][0] = x;
+      pv[1][1] = y * COSEPS - z * SINEPS;
+      pv[1][2] = y * SINEPS + z * COSEPS;
+
+   }
+
+/* Return the status. */
+   return jstat;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pm.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pm.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pm.c	(revision 18732)
@@ -0,0 +1,85 @@
+#include "erfa.h"
+
+double eraPm(double p[3])
+/*
+**  - - - - - -
+**   e r a P m
+**  - - - - - -
+**
+**  Modulus of p-vector.
+**
+**  Given:
+**     p      double[3]     p-vector
+**
+**  Returned (function value):
+**            double        modulus
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   return sqrt( p[0]*p[0] + p[1]*p[1] + p[2]*p[2] );
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmat00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmat00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmat00.c	(revision 18732)
@@ -0,0 +1,127 @@
+#include "erfa.h"
+
+void eraPmat00(double date1, double date2, double rbp[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P m a t 0 0
+**  - - - - - - - - - -
+**
+**  Precession matrix (including frame bias) from GCRS to a specified
+**  date, IAU 2000 model.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rbp          double[3][3]    bias-precession matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rbp * V(GCRS), where
+**     the p-vector V(GCRS) is with respect to the Geocentric Celestial
+**     Reference System (IAU, 2000) and the p-vector V(date) is with
+**     respect to the mean equatorial triad of the given date.
+**
+**  Called:
+**     eraBp00      frame bias and precession matrices, IAU 2000
+**
+**  Reference:
+**
+**     IAU: Trans. International Astronomical Union, Vol. XXIVB;  Proc.
+**     24th General Assembly, Manchester, UK.  Resolutions B1.3, B1.6.
+**     (2000)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rb[3][3], rp[3][3];
+
+
+/* Obtain the required matrix (discarding others). */
+   eraBp00(date1, date2, rb, rp, rbp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmat06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmat06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmat06.c	(revision 18732)
@@ -0,0 +1,131 @@
+#include "erfa.h"
+
+void eraPmat06(double date1, double date2, double rbp[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P m a t 0 6
+**  - - - - - - - - - -
+**
+**  Precession matrix (including frame bias) from GCRS to a specified
+**  date, IAU 2006 model.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rbp          double[3][3]    bias-precession matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rbp * V(GCRS), where
+**     the p-vector V(GCRS) is with respect to the Geocentric Celestial
+**     Reference System (IAU, 2000) and the p-vector V(date) is with
+**     respect to the mean equatorial triad of the given date.
+**
+**  Called:
+**     eraPfw06     bias-precession F-W angles, IAU 2006
+**     eraFw2m      F-W angles to r-matrix
+**
+**  References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gamb, phib, psib, epsa;
+
+
+/* Bias-precession Fukushima-Williams angles. */
+   eraPfw06(date1, date2, &gamb, &phib, &psib, &epsa);
+
+/* Form the matrix. */
+   eraFw2m(gamb, phib, psib, epsa, rbp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmat76.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmat76.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmat76.c	(revision 18732)
@@ -0,0 +1,150 @@
+#include "erfa.h"
+
+void eraPmat76(double date1, double date2, double rmatp[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P m a t 7 6
+**  - - - - - - - - - -
+**
+**  Precession matrix from J2000.0 to a specified date, IAU 1976 model.
+**
+**  Given:
+**     date1,date2 double       ending date, TT (Note 1)
+**
+**  Returned:
+**     rmatp       double[3][3] precession matrix, J2000.0 -> date1+date2
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = RMATP * V(J2000),
+**     where the p-vector V(J2000) is with respect to the mean
+**     equatorial triad of epoch J2000.0 and the p-vector V(date)
+**     is with respect to the mean equatorial triad of the given
+**     date.
+**
+**  3) Though the matrix method itself is rigorous, the precession
+**     angles are expressed through canonical polynomials which are
+**     valid only for a limited time span.  In addition, the IAU 1976
+**     precession rate is known to be imperfect.  The absolute accuracy
+**     of the present formulation is better than 0.1 arcsec from
+**     1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD,
+**     and remains below 3 arcsec for the whole of the period
+**     500BC to 3000AD.  The errors exceed 10 arcsec outside the
+**     range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to
+**     5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.
+**
+**  Called:
+**     eraPrec76    accumulated precession angles, IAU 1976
+**     eraIr        initialize r-matrix to identity
+**     eraRz        rotate around Z-axis
+**     eraRy        rotate around Y-axis
+**     eraCr        copy r-matrix
+**
+**  References:
+**
+**     Lieske, J.H., 1979, Astron.Astrophys. 73, 282.
+**      equations (6) & (7), p283.
+**
+**     Kaplan,G.H., 1981. USNO circular no. 163, pA2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double zeta, z, theta, wmat[3][3];
+
+
+/* Precession Euler angles, J2000.0 to specified date. */
+   eraPrec76(ERFA_DJ00, 0.0, date1, date2, &zeta, &z, &theta);
+
+/* Form the rotation matrix. */
+   eraIr(  wmat);
+   eraRz( -zeta, wmat);
+   eraRy(  theta, wmat);
+   eraRz( -z, wmat);
+   eraCr( wmat, rmatp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmp.c	(revision 18732)
@@ -0,0 +1,94 @@
+#include "erfa.h"
+
+void eraPmp(double a[3], double b[3], double amb[3])
+/*
+**  - - - - - - -
+**   e r a P m p
+**  - - - - - - -
+**
+**  P-vector subtraction.
+**
+**  Given:
+**     a        double[3]      first p-vector
+**     b        double[3]      second p-vector
+**
+**  Returned:
+**     amb      double[3]      a - b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   amb[0] = a[0] - b[0];
+   amb[1] = a[1] - b[1];
+   amb[2] = a[2] - b[2];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmpx.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmpx.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmpx.c	(revision 18732)
@@ -0,0 +1,153 @@
+#include "erfa.h"
+
+void eraPmpx(double rc, double dc, double pr, double pd,
+             double px, double rv, double pmt, double pob[3],
+             double pco[3])
+/*
+**  - - - - - - - -
+**   e r a P m p x
+**  - - - - - - - -
+**
+**  Proper motion and parallax.
+**
+**  Given:
+**     rc,dc  double     ICRS RA,Dec at catalog epoch (radians)
+**     pr     double     RA proper motion (radians/year; Note 1)
+**     pd     double     Dec proper motion (radians/year)
+**     px     double     parallax (arcsec)
+**     rv     double     radial velocity (km/s, +ve if receding)
+**     pmt    double     proper motion time interval (SSB, Julian years)
+**     pob    double[3]  SSB to observer vector (au)
+**
+**  Returned:
+**     pco    double[3]  coordinate direction (BCRS unit vector)
+**
+**  Notes:
+**
+**  1) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+**
+**  2) The proper motion time interval is for when the starlight
+**     reaches the solar system barycenter.
+**
+**  3) To avoid the need for iteration, the Roemer effect (i.e. the
+**     small annual modulation of the proper motion coming from the
+**     changing light time) is applied approximately, using the
+**     direction of the star at the catalog epoch.
+**
+**  References:
+**
+**     1984 Astronomical Almanac, pp B39-B41.
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013), Section 7.2.
+**
+**  Called:
+**     eraPdp       scalar product of two p-vectors
+**     eraPn        decompose p-vector into modulus and direction
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Km/s to au/year */
+   const double VF = ERFA_DAYSEC*ERFA_DJM/ERFA_DAU;
+
+/* Light time for 1 au, Julian years */
+   const double AULTY = ERFA_AULT/ERFA_DAYSEC/ERFA_DJY;
+
+   int i;
+   double sr, cr, sd, cd, x, y, z, p[3], dt, pxr, w, pdz, pm[3];
+
+
+/* Spherical coordinates to unit vector (and useful functions). */
+   sr = sin(rc);
+   cr = cos(rc);
+   sd = sin(dc);
+   cd = cos(dc);
+   p[0] = x = cr*cd;
+   p[1] = y = sr*cd;
+   p[2] = z = sd;
+
+/* Proper motion time interval (y) including Roemer effect. */
+   dt = pmt + eraPdp(p,pob)*AULTY;
+
+/* Space motion (radians per year). */
+   pxr = px * ERFA_DAS2R;
+   w = VF * rv * pxr;
+   pdz = pd * z;
+   pm[0] = - pr*y - pdz*cr + w*x;
+   pm[1] =   pr*x - pdz*sr + w*y;
+   pm[2] =   pd*cd + w*z;
+
+/* Coordinate direction of star (unit vector, BCRS). */
+   for (i = 0; i < 3; i++) {
+      p[i] += dt*pm[i] - pxr*pob[i];
+   }
+   eraPn(p, &w, pco);
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pmsafe.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pmsafe.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pmsafe.c	(revision 18732)
@@ -0,0 +1,206 @@
+#include "erfa.h"
+
+int eraPmsafe(double ra1, double dec1, double pmr1, double pmd1,
+              double px1, double rv1,
+              double ep1a, double ep1b, double ep2a, double ep2b,
+              double *ra2, double *dec2, double *pmr2, double *pmd2,
+              double *px2, double *rv2)
+/*
+**  - - - - - - - - - -
+**   e r a P m s a f e
+**  - - - - - - - - - -
+**
+**  Star proper motion:  update star catalog data for space motion, with
+**  special handling to handle the zero parallax case.
+**
+**  Given:
+**     ra1    double      right ascension (radians), before
+**     dec1   double      declination (radians), before
+**     pmr1   double      RA proper motion (radians/year), before
+**     pmd1   double      Dec proper motion (radians/year), before
+**     px1    double      parallax (arcseconds), before
+**     rv1    double      radial velocity (km/s, +ve = receding), before
+**     ep1a   double      "before" epoch, part A (Note 1)
+**     ep1b   double      "before" epoch, part B (Note 1)
+**     ep2a   double      "after" epoch, part A (Note 1)
+**     ep2b   double      "after" epoch, part B (Note 1)
+**
+**  Returned:
+**     ra2    double      right ascension (radians), after
+**     dec2   double      declination (radians), after
+**     pmr2   double      RA proper motion (radians/year), after
+**     pmd2   double      Dec proper motion (radians/year), after
+**     px2    double      parallax (arcseconds), after
+**     rv2    double      radial velocity (km/s, +ve = receding), after
+**
+**  Returned (function value):
+**            int         status:
+**                         -1 = system error (should not occur)
+**                          0 = no warnings or errors
+**                          1 = distance overridden (Note 6)
+**                          2 = excessive velocity (Note 7)
+**                          4 = solution didn't converge (Note 8)
+**                       else = binary logical OR of the above warnings
+**
+**  Notes:
+**
+**  1) The starting and ending TDB epochs ep1a+ep1b and ep2a+ep2b are
+**     Julian Dates, apportioned in any convenient way between the two
+**     parts (A and B).  For example, JD(TDB)=2450123.7 could be
+**     expressed in any of these ways, among others:
+**
+**            epNa            epNb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     resolution.  The MJD method and the date & time methods are both
+**     good compromises between resolution and convenience.
+**
+**  2) In accordance with normal star-catalog conventions, the object's
+**     right ascension and declination are freed from the effects of
+**     secular aberration.  The frame, which is aligned to the catalog
+**     equator and equinox, is Lorentzian and centered on the SSB.
+**
+**     The proper motions are the rate of change of the right ascension
+**     and declination at the catalog epoch and are in radians per TDB
+**     Julian year.
+**
+**     The parallax and radial velocity are in the same frame.
+**
+**  3) Care is needed with units.  The star coordinates are in radians
+**     and the proper motions in radians per Julian year, but the
+**     parallax is in arcseconds.
+**
+**  4) The RA proper motion is in terms of coordinate angle, not true
+**     angle.  If the catalog uses arcseconds for both RA and Dec proper
+**     motions, the RA proper motion will need to be divided by cos(Dec)
+**     before use.
+**
+**  5) Straight-line motion at constant speed, in the inertial frame, is
+**     assumed.
+**
+**  6) An extremely small (or zero or negative) parallax is overridden
+**     to ensure that the object is at a finite but very large distance,
+**     but not so large that the proper motion is equivalent to a large
+**     but safe speed (about 0.1c using the chosen constant).  A warning
+**     status of 1 is added to the status if this action has been taken.
+**
+**  7) If the space velocity is a significant fraction of c (see the
+**     constant VMAX in the function eraStarpv), it is arbitrarily set
+**     to zero.  When this action occurs, 2 is added to the status.
+**
+**  8) The relativistic adjustment carried out in the eraStarpv function
+**     involves an iterative calculation.  If the process fails to
+**     converge within a set number of iterations, 4 is added to the
+**     status.
+**
+**  Called:
+**     eraSeps      angle between two points
+**     eraStarpm    update star catalog data for space motion
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Minimum allowed parallax (arcsec) */
+   const double PXMIN = 5e-7;
+
+/* Factor giving maximum allowed transverse speed of about 1% c */
+   const double F = 326.0;
+
+   int jpx, j;
+   double pm, px1a;
+
+
+/* Proper motion in one year (radians). */
+   pm = eraSeps(ra1, dec1, ra1+pmr1, dec1+pmd1);
+
+/* Override the parallax to reduce the chances of a warning status. */
+   jpx = 0;
+   px1a = px1;
+   pm *= F;
+   if (px1a < pm) {jpx = 1; px1a = pm;}
+   if (px1a < PXMIN) {jpx = 1; px1a = PXMIN;}
+
+/* Carry out the transformation using the modified parallax. */
+   j = eraStarpm(ra1, dec1, pmr1, pmd1, px1a, rv1,
+                 ep1a, ep1b, ep2a, ep2b,
+                 ra2, dec2, pmr2, pmd2, px2, rv2);
+
+/* Revise and return the status. */
+   if ( !(j%2) ) j += jpx;
+   return j;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn.c	(revision 18732)
@@ -0,0 +1,118 @@
+#include "erfa.h"
+
+void eraPn(double p[3], double *r, double u[3])
+/*
+**  - - - - - -
+**   e r a P n
+**  - - - - - -
+**
+**  Convert a p-vector into modulus and unit vector.
+**
+**  Given:
+**     p        double[3]      p-vector
+**
+**  Returned:
+**     r        double         modulus
+**     u        double[3]      unit vector
+**
+**  Notes:
+**
+**  1) If p is null, the result is null.  Otherwise the result is a unit
+**     vector.
+**
+**  2) It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Called:
+**     eraPm        modulus of p-vector
+**     eraZp        zero p-vector
+**     eraSxp       multiply p-vector by scalar
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double w;
+
+
+/* Obtain the modulus and test for zero. */
+   w = eraPm(p);
+   if (w == 0.0) {
+
+   /* Null vector. */
+      eraZp(u);
+
+   } else {
+
+   /* Unit vector. */
+      eraSxp(1.0/w, p, u);
+   }
+
+/* Return the modulus. */
+   *r = w;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn00.c	(revision 18732)
@@ -0,0 +1,186 @@
+#include "erfa.h"
+
+void eraPn00(double date1, double date2, double dpsi, double deps,
+             double *epsa,
+             double rb[3][3], double rp[3][3], double rbp[3][3],
+             double rn[3][3], double rbpn[3][3])
+/*
+**  - - - - - - - -
+**   e r a P n 0 0
+**  - - - - - - - -
+**
+**  Precession-nutation, IAU 2000 model:  a multi-purpose function,
+**  supporting classical (equinox-based) use directly and CIO-based
+**  use indirectly.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**     dpsi,deps    double          nutation (Note 2)
+**
+**  Returned:
+**     epsa         double          mean obliquity (Note 3)
+**     rb           double[3][3]    frame bias matrix (Note 4)
+**     rp           double[3][3]    precession matrix (Note 5)
+**     rbp          double[3][3]    bias-precession matrix (Note 6)
+**     rn           double[3][3]    nutation matrix (Note 7)
+**     rbpn         double[3][3]    GCRS-to-true matrix (Note 8)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The caller is responsible for providing the nutation components;
+**     they are in longitude and obliquity, in radians and are with
+**     respect to the equinox and ecliptic of date.  For high-accuracy
+**     applications, free core nutation should be included as well as
+**     any other relevant corrections to the position of the CIP.
+**
+**  3) The returned mean obliquity is consistent with the IAU 2000
+**     precession-nutation models.
+**
+**  4) The matrix rb transforms vectors from GCRS to J2000.0 mean
+**     equator and equinox by applying frame bias.
+**
+**  5) The matrix rp transforms vectors from J2000.0 mean equator and
+**     equinox to mean equator and equinox of date by applying
+**     precession.
+**
+**  6) The matrix rbp transforms vectors from GCRS to mean equator and
+**     equinox of date by applying frame bias then precession.  It is
+**     the product rp x rb.
+**
+**  7) The matrix rn transforms vectors from mean equator and equinox of
+**     date to true equator and equinox of date by applying the nutation
+**     (luni-solar + planetary).
+**
+**  8) The matrix rbpn transforms vectors from GCRS to true equator and
+**     equinox of date.  It is the product rn x rbp, applying frame
+**     bias, precession and nutation in that order.
+**
+**  9) It is permissible to re-use the same array in the returned
+**     arguments.  The arrays are filled in the order given.
+**
+**  Called:
+**     eraPr00      IAU 2000 precession adjustments
+**     eraObl80     mean obliquity, IAU 1980
+**     eraBp00      frame bias and precession matrices, IAU 2000
+**     eraCr        copy r-matrix
+**     eraNumat     form nutation matrix
+**     eraRxr       product of two r-matrices
+**
+**  Reference:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsipr, depspr, rbpw[3][3], rnw[3][3];
+
+
+/* IAU 2000 precession-rate adjustments. */
+   eraPr00(date1, date2, &dpsipr, &depspr);
+
+/* Mean obliquity, consistent with IAU 2000 precession-nutation. */
+   *epsa = eraObl80(date1, date2) + depspr;
+
+/* Frame bias and precession matrices and their product. */
+   eraBp00(date1, date2, rb, rp, rbpw);
+   eraCr(rbpw, rbp);
+
+/* Nutation matrix. */
+   eraNumat(*epsa, dpsi, deps, rnw);
+   eraCr(rnw, rn);
+
+/* Bias-precession-nutation matrix (classical). */
+   eraRxr(rnw, rbpw, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn00a.c	(revision 18732)
@@ -0,0 +1,172 @@
+#include "erfa.h"
+
+void eraPn00a(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3])
+/*
+**  - - - - - - - - -
+**   e r a P n 0 0 a
+**  - - - - - - - - -
+**
+**  Precession-nutation, IAU 2000A model:  a multi-purpose function,
+**  supporting classical (equinox-based) use directly and CIO-based
+**  use indirectly.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps    double          nutation (Note 2)
+**     epsa         double          mean obliquity (Note 3)
+**     rb           double[3][3]    frame bias matrix (Note 4)
+**     rp           double[3][3]    precession matrix (Note 5)
+**     rbp          double[3][3]    bias-precession matrix (Note 6)
+**     rn           double[3][3]    nutation matrix (Note 7)
+**     rbpn         double[3][3]    GCRS-to-true matrix (Notes 8,9)
+**
+**  Notes:
+**
+**  1)  The TT date date1+date2 is a Julian Date, apportioned in any
+**      convenient way between the two arguments.  For example,
+**      JD(TT)=2450123.7 could be expressed in any of these ways,
+**      among others:
+**
+**             date1          date2
+**
+**          2450123.7           0.0       (JD method)
+**          2451545.0       -1421.3       (J2000 method)
+**          2400000.5       50123.2       (MJD method)
+**          2450123.5           0.2       (date & time method)
+**
+**      The JD method is the most natural and convenient to use in
+**      cases where the loss of several decimal digits of resolution
+**      is acceptable.  The J2000 method is best matched to the way
+**      the argument is handled internally and will deliver the
+**      optimum resolution.  The MJD method and the date & time methods
+**      are both good compromises between resolution and convenience.
+**
+**  2)  The nutation components (luni-solar + planetary, IAU 2000A) in
+**      longitude and obliquity are in radians and with respect to the
+**      equinox and ecliptic of date.  Free core nutation is omitted;
+**      for the utmost accuracy, use the eraPn00  function, where the
+**      nutation components are caller-specified.  For faster but
+**      slightly less accurate results, use the eraPn00b function.
+**
+**  3)  The mean obliquity is consistent with the IAU 2000 precession.
+**
+**  4)  The matrix rb transforms vectors from GCRS to J2000.0 mean
+**      equator and equinox by applying frame bias.
+**
+**  5)  The matrix rp transforms vectors from J2000.0 mean equator and
+**      equinox to mean equator and equinox of date by applying
+**      precession.
+**
+**  6)  The matrix rbp transforms vectors from GCRS to mean equator and
+**      equinox of date by applying frame bias then precession.  It is
+**      the product rp x rb.
+**
+**  7)  The matrix rn transforms vectors from mean equator and equinox
+**      of date to true equator and equinox of date by applying the
+**      nutation (luni-solar + planetary).
+**
+**  8)  The matrix rbpn transforms vectors from GCRS to true equator and
+**      equinox of date.  It is the product rn x rbp, applying frame
+**      bias, precession and nutation in that order.
+**
+**  9)  The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate
+**      Pole are elements (3,1-3) of the GCRS-to-true matrix,
+**      i.e. rbpn[2][0-2].
+**
+**  10) It is permissible to re-use the same array in the returned
+**      arguments.  The arrays are filled in the order given.
+**
+**  Called:
+**     eraNut00a    nutation, IAU 2000A
+**     eraPn00      bias/precession/nutation results, IAU 2000
+**
+**  Reference:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Nutation. */
+   eraNut00a(date1, date2, dpsi, deps);
+
+/* Remaining results. */
+   eraPn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn00b.c	(revision 18732)
@@ -0,0 +1,172 @@
+#include "erfa.h"
+
+void eraPn00b(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3])
+/*
+**  - - - - - - - - -
+**   e r a P n 0 0 b
+**  - - - - - - - - -
+**
+**  Precession-nutation, IAU 2000B model:  a multi-purpose function,
+**  supporting classical (equinox-based) use directly and CIO-based
+**  use indirectly.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps    double          nutation (Note 2)
+**     epsa         double          mean obliquity (Note 3)
+**     rb           double[3][3]    frame bias matrix (Note 4)
+**     rp           double[3][3]    precession matrix (Note 5)
+**     rbp          double[3][3]    bias-precession matrix (Note 6)
+**     rn           double[3][3]    nutation matrix (Note 7)
+**     rbpn         double[3][3]    GCRS-to-true matrix (Notes 8,9)
+**
+**  Notes:
+**
+**  1)  The TT date date1+date2 is a Julian Date, apportioned in any
+**      convenient way between the two arguments.  For example,
+**      JD(TT)=2450123.7 could be expressed in any of these ways,
+**      among others:
+**
+**             date1          date2
+**
+**          2450123.7           0.0       (JD method)
+**          2451545.0       -1421.3       (J2000 method)
+**          2400000.5       50123.2       (MJD method)
+**          2450123.5           0.2       (date & time method)
+**
+**      The JD method is the most natural and convenient to use in
+**      cases where the loss of several decimal digits of resolution
+**      is acceptable.  The J2000 method is best matched to the way
+**      the argument is handled internally and will deliver the
+**      optimum resolution.  The MJD method and the date & time methods
+**      are both good compromises between resolution and convenience.
+**
+**  2)  The nutation components (luni-solar + planetary, IAU 2000B) in
+**      longitude and obliquity are in radians and with respect to the
+**      equinox and ecliptic of date.  For more accurate results, but
+**      at the cost of increased computation, use the eraPn00a function.
+**      For the utmost accuracy, use the eraPn00  function, where the
+**      nutation components are caller-specified.
+**
+**  3)  The mean obliquity is consistent with the IAU 2000 precession.
+**
+**  4)  The matrix rb transforms vectors from GCRS to J2000.0 mean
+**      equator and equinox by applying frame bias.
+**
+**  5)  The matrix rp transforms vectors from J2000.0 mean equator and
+**      equinox to mean equator and equinox of date by applying
+**      precession.
+**
+**  6)  The matrix rbp transforms vectors from GCRS to mean equator and
+**      equinox of date by applying frame bias then precession.  It is
+**      the product rp x rb.
+**
+**  7)  The matrix rn transforms vectors from mean equator and equinox
+**      of date to true equator and equinox of date by applying the
+**      nutation (luni-solar + planetary).
+**
+**  8)  The matrix rbpn transforms vectors from GCRS to true equator and
+**      equinox of date.  It is the product rn x rbp, applying frame
+**      bias, precession and nutation in that order.
+**
+**  9)  The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate
+**      Pole are elements (3,1-3) of the GCRS-to-true matrix,
+**      i.e. rbpn[2][0-2].
+**
+**  10) It is permissible to re-use the same array in the returned
+**      arguments.  The arrays are filled in the stated order.
+**
+**  Called:
+**     eraNut00b    nutation, IAU 2000B
+**     eraPn00      bias/precession/nutation results, IAU 2000
+**
+**  Reference:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003).
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Nutation. */
+   eraNut00b(date1, date2, dpsi, deps);
+
+/* Remaining results. */
+   eraPn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn06.c	(revision 18732)
@@ -0,0 +1,196 @@
+#include "erfa.h"
+
+void eraPn06(double date1, double date2, double dpsi, double deps,
+             double *epsa,
+             double rb[3][3], double rp[3][3], double rbp[3][3],
+             double rn[3][3], double rbpn[3][3])
+/*
+**  - - - - - - - -
+**   e r a P n 0 6
+**  - - - - - - - -
+**
+**  Precession-nutation, IAU 2006 model:  a multi-purpose function,
+**  supporting classical (equinox-based) use directly and CIO-based use
+**  indirectly.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**     dpsi,deps    double          nutation (Note 2)
+**
+**  Returned:
+**     epsa         double          mean obliquity (Note 3)
+**     rb           double[3][3]    frame bias matrix (Note 4)
+**     rp           double[3][3]    precession matrix (Note 5)
+**     rbp          double[3][3]    bias-precession matrix (Note 6)
+**     rn           double[3][3]    nutation matrix (Note 7)
+**     rbpn         double[3][3]    GCRS-to-true matrix (Note 8)
+**
+**  Notes:
+**
+**  1)  The TT date date1+date2 is a Julian Date, apportioned in any
+**      convenient way between the two arguments.  For example,
+**      JD(TT)=2450123.7 could be expressed in any of these ways,
+**      among others:
+**
+**             date1          date2
+**
+**          2450123.7           0.0       (JD method)
+**          2451545.0       -1421.3       (J2000 method)
+**          2400000.5       50123.2       (MJD method)
+**          2450123.5           0.2       (date & time method)
+**
+**      The JD method is the most natural and convenient to use in
+**      cases where the loss of several decimal digits of resolution
+**      is acceptable.  The J2000 method is best matched to the way
+**      the argument is handled internally and will deliver the
+**      optimum resolution.  The MJD method and the date & time methods
+**      are both good compromises between resolution and convenience.
+**
+**  2)  The caller is responsible for providing the nutation components;
+**      they are in longitude and obliquity, in radians and are with
+**      respect to the equinox and ecliptic of date.  For high-accuracy
+**      applications, free core nutation should be included as well as
+**      any other relevant corrections to the position of the CIP.
+**
+**  3)  The returned mean obliquity is consistent with the IAU 2006
+**      precession.
+**
+**  4)  The matrix rb transforms vectors from GCRS to J2000.0 mean
+**      equator and equinox by applying frame bias.
+**
+**  5)  The matrix rp transforms vectors from J2000.0 mean equator and
+**      equinox to mean equator and equinox of date by applying
+**      precession.
+**
+**  6)  The matrix rbp transforms vectors from GCRS to mean equator and
+**      equinox of date by applying frame bias then precession.  It is
+**      the product rp x rb.
+**
+**  7)  The matrix rn transforms vectors from mean equator and equinox
+**      of date to true equator and equinox of date by applying the
+**      nutation (luni-solar + planetary).
+**
+**  8)  The matrix rbpn transforms vectors from GCRS to true equator and
+**      equinox of date.  It is the product rn x rbp, applying frame
+**      bias, precession and nutation in that order.
+**
+**  9)  The X,Y,Z coordinates of the Celestial Intermediate Pole are
+**      elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].
+**
+**  10) It is permissible to re-use the same array in the returned
+**      arguments.  The arrays are filled in the stated order.
+**
+**  Called:
+**     eraPfw06     bias-precession F-W angles, IAU 2006
+**     eraFw2m      F-W angles to r-matrix
+**     eraCr        copy r-matrix
+**     eraTr        transpose r-matrix
+**     eraRxr       product of two r-matrices
+**
+**  References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gamb, phib, psib, eps, r1[3][3], r2[3][3], rt[3][3];
+
+
+/* Bias-precession Fukushima-Williams angles of J2000.0 = frame bias. */
+   eraPfw06(ERFA_DJM0, ERFA_DJM00, &gamb, &phib, &psib, &eps);
+
+/* B matrix. */
+   eraFw2m(gamb, phib, psib, eps, r1);
+   eraCr(r1, rb);
+
+/* Bias-precession Fukushima-Williams angles of date. */
+   eraPfw06(date1, date2, &gamb, &phib, &psib, &eps);
+
+/* Bias-precession matrix. */
+   eraFw2m(gamb, phib, psib, eps, r2);
+   eraCr(r2, rbp);
+
+/* Solve for precession matrix. */
+   eraTr(r1, rt);
+   eraRxr(r2, rt, rp);
+
+/* Equinox-based bias-precession-nutation matrix. */
+   eraFw2m(gamb, phib, psib + dpsi, eps + deps, r1);
+   eraCr(r1, rbpn);
+
+/* Solve for nutation matrix. */
+   eraTr(r2, rt);
+   eraRxr(r1, rt, rn);
+
+/* Obliquity, mean of date. */
+   *epsa = eps;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pn06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pn06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pn06a.c	(revision 18732)
@@ -0,0 +1,162 @@
+#include "erfa.h"
+
+void eraPn06a(double date1, double date2,
+              double *dpsi, double *deps, double *epsa,
+              double rb[3][3], double rp[3][3], double rbp[3][3],
+              double rn[3][3], double rbpn[3][3])
+/*
+**  - - - - - - - - -
+**   e r a P n 0 6 a
+**  - - - - - - - - -
+**
+**  Precession-nutation, IAU 2006/2000A models:  a multi-purpose function,
+**  supporting classical (equinox-based) use directly and CIO-based use
+**  indirectly.
+**
+**  Given:
+**     date1,date2  double          TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsi,deps    double          nutation (Note 2)
+**     epsa         double          mean obliquity (Note 3)
+**     rb           double[3][3]    frame bias matrix (Note 4)
+**     rp           double[3][3]    precession matrix (Note 5)
+**     rbp          double[3][3]    bias-precession matrix (Note 6)
+**     rn           double[3][3]    nutation matrix (Note 7)
+**     rbpn         double[3][3]    GCRS-to-true matrix (Notes 8,9)
+**
+**  Notes:
+**
+**  1)  The TT date date1+date2 is a Julian Date, apportioned in any
+**      convenient way between the two arguments.  For example,
+**      JD(TT)=2450123.7 could be expressed in any of these ways,
+**      among others:
+**
+**             date1          date2
+**
+**          2450123.7           0.0       (JD method)
+**          2451545.0       -1421.3       (J2000 method)
+**          2400000.5       50123.2       (MJD method)
+**          2450123.5           0.2       (date & time method)
+**
+**      The JD method is the most natural and convenient to use in
+**      cases where the loss of several decimal digits of resolution
+**      is acceptable.  The J2000 method is best matched to the way
+**      the argument is handled internally and will deliver the
+**      optimum resolution.  The MJD method and the date & time methods
+**      are both good compromises between resolution and convenience.
+**
+**  2)  The nutation components (luni-solar + planetary, IAU 2000A) in
+**      longitude and obliquity are in radians and with respect to the
+**      equinox and ecliptic of date.  Free core nutation is omitted;
+**      for the utmost accuracy, use the eraPn06 function, where the
+**      nutation components are caller-specified.
+**
+**  3)  The mean obliquity is consistent with the IAU 2006 precession.
+**
+**  4)  The matrix rb transforms vectors from GCRS to mean J2000.0 by
+**      applying frame bias.
+**
+**  5)  The matrix rp transforms vectors from mean J2000.0 to mean of
+**      date by applying precession.
+**
+**  6)  The matrix rbp transforms vectors from GCRS to mean of date by
+**      applying frame bias then precession.  It is the product rp x rb.
+**
+**  7)  The matrix rn transforms vectors from mean of date to true of
+**      date by applying the nutation (luni-solar + planetary).
+**
+**  8)  The matrix rbpn transforms vectors from GCRS to true of date
+**      (CIP/equinox).  It is the product rn x rbp, applying frame bias,
+**      precession and nutation in that order.
+**
+**  9)  The X,Y,Z coordinates of the IAU 2006/2000A Celestial
+**      Intermediate Pole are elements (3,1-3) of the GCRS-to-true
+**      matrix, i.e. rbpn[2][0-2].
+**
+**  10) It is permissible to re-use the same array in the returned
+**      arguments.  The arrays are filled in the stated order.
+**
+**  Called:
+**     eraNut06a    nutation, IAU 2006/2000A
+**     eraPn06      bias/precession/nutation results, IAU 2006
+**
+**  Reference:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Nutation. */
+   eraNut06a(date1, date2, dpsi, deps);
+
+/* Remaining results. */
+   eraPn06(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pnm00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pnm00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pnm00a.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+void eraPnm00a(double date1, double date2, double rbpn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P n m 0 0 a
+**  - - - - - - - - - -
+**
+**  Form the matrix of precession-nutation for a given date (including
+**  frame bias), equinox-based, IAU 2000A model.
+**
+**  Given:
+**     date1,date2  double     TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rbpn         double[3][3]    classical NPB matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where
+**     the p-vector V(date) is with respect to the true equatorial triad
+**     of date date1+date2 and the p-vector V(GCRS) is with respect to
+**     the Geocentric Celestial Reference System (IAU, 2000).
+**
+**  3) A faster, but slightly less accurate result (about 1 mas), can be
+**     obtained by using instead the eraPnm00b function.
+**
+**  Called:
+**     eraPn00a     bias/precession/nutation, IAU 2000A
+**
+**  Reference:
+**
+**     IAU: Trans. International Astronomical Union, Vol. XXIVB;  Proc.
+**     24th General Assembly, Manchester, UK.  Resolutions B1.3, B1.6.
+**     (2000)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3];
+
+
+/* Obtain the required matrix (discarding other results). */
+   eraPn00a(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pnm00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pnm00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pnm00b.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+void eraPnm00b(double date1, double date2, double rbpn[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P n m 0 0 b
+**  - - - - - - - - - -
+**
+**  Form the matrix of precession-nutation for a given date (including
+**  frame bias), equinox-based, IAU 2000B model.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rbpn        double[3][3] bias-precession-nutation matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where
+**     the p-vector V(date) is with respect to the true equatorial triad
+**     of date date1+date2 and the p-vector V(GCRS) is with respect to
+**     the Geocentric Celestial Reference System (IAU, 2000).
+**
+**  3) The present function is faster, but slightly less accurate (about
+**     1 mas), than the eraPnm00a function.
+**
+**  Called:
+**     eraPn00b     bias/precession/nutation, IAU 2000B
+**
+**  Reference:
+**
+**     IAU: Trans. International Astronomical Union, Vol. XXIVB;  Proc.
+**     24th General Assembly, Manchester, UK.  Resolutions B1.3, B1.6.
+**     (2000)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3];
+
+
+/* Obtain the required matrix (discarding other results). */
+   eraPn00b(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pnm06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pnm06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pnm06a.c	(revision 18732)
@@ -0,0 +1,133 @@
+#include "erfa.h"
+
+void eraPnm06a(double date1, double date2, double rnpb[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P n m 0 6 a
+**  - - - - - - - - - -
+**
+**  Form the matrix of precession-nutation for a given date (including
+**  frame bias), IAU 2006 precession and IAU 2000A nutation models.
+**
+**  Given:
+**     date1,date2 double       TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     rnpb        double[3][3] bias-precession-nutation matrix (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rnpb * V(GCRS), where
+**     the p-vector V(date) is with respect to the true equatorial triad
+**     of date date1+date2 and the p-vector V(GCRS) is with respect to
+**     the Geocentric Celestial Reference System (IAU, 2000).
+**
+**  Called:
+**     eraPfw06     bias-precession F-W angles, IAU 2006
+**     eraNut06a    nutation, IAU 2006/2000A
+**     eraFw2m      F-W angles to r-matrix
+**
+**  Reference:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double gamb, phib, psib, epsa, dp, de;
+
+
+/* Fukushima-Williams angles for frame bias and precession. */
+   eraPfw06(date1, date2, &gamb, &phib, &psib, &epsa);
+
+/* Nutation components. */
+   eraNut06a(date1, date2, &dp, &de);
+
+/* Equinox based nutation x precession x bias matrix. */
+   eraFw2m(gamb, phib, psib + dp, epsa + de, rnpb);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pnm80.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pnm80.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pnm80.c	(revision 18732)
@@ -0,0 +1,135 @@
+#include "erfa.h"
+
+void eraPnm80(double date1, double date2, double rmatpn[3][3])
+/*
+**  - - - - - - - - -
+**   e r a P n m 8 0
+**  - - - - - - - - -
+**
+**  Form the matrix of precession/nutation for a given date, IAU 1976
+**  precession model, IAU 1980 nutation model.
+**
+**  Given:
+**     date1,date2    double         TDB date (Note 1)
+**
+**  Returned:
+**     rmatpn         double[3][3]   combined precession/nutation matrix
+**
+**  Notes:
+**
+**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TDB)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The matrix operates in the sense V(date) = rmatpn * V(J2000),
+**     where the p-vector V(date) is with respect to the true equatorial
+**     triad of date date1+date2 and the p-vector V(J2000) is with
+**     respect to the mean equatorial triad of epoch J2000.0.
+**
+**  Called:
+**     eraPmat76    precession matrix, IAU 1976
+**     eraNutm80    nutation matrix, IAU 1980
+**     eraRxr       product of two r-matrices
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992),
+**     Section 3.3 (p145).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rmatp[3][3], rmatn[3][3];
+
+
+/* Precession matrix, J2000.0 to date. */
+   eraPmat76(date1, date2, rmatp);
+
+/* Nutation matrix. */
+   eraNutm80(date1, date2, rmatn);
+
+/* Combine the matrices:  PN = N x P. */
+   eraRxr(rmatn, rmatp, rmatpn);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pom00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pom00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pom00.c	(revision 18732)
@@ -0,0 +1,124 @@
+#include "erfa.h"
+
+void eraPom00(double xp, double yp, double sp, double rpom[3][3])
+/*
+**  - - - - - - - - - -
+**   e r a P o m 0 0
+**  - - - - - - - - - -
+**
+**  Form the matrix of polar motion for a given date, IAU 2000.
+**
+**  Given:
+**     xp,yp    double    coordinates of the pole (radians, Note 1)
+**     sp       double    the TIO locator s' (radians, Note 2)
+**
+**  Returned:
+**     rpom     double[3][3]   polar-motion matrix (Note 3)
+**
+**  Notes:
+**
+**  1) The arguments xp and yp are the coordinates (in radians) of the
+**     Celestial Intermediate Pole with respect to the International
+**     Terrestrial Reference System (see IERS Conventions 2003),
+**     measured along the meridians to 0 and 90 deg west respectively.
+**
+**  2) The argument sp is the TIO locator s', in radians, which
+**     positions the Terrestrial Intermediate Origin on the equator.  It
+**     is obtained from polar motion observations by numerical
+**     integration, and so is in essence unpredictable.  However, it is
+**     dominated by a secular drift of about 47 microarcseconds per
+**     century, and so can be taken into account by using s' = -47*t,
+**     where t is centuries since J2000.0.  The function eraSp00
+**     implements this approximation.
+**
+**  3) The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning
+**     that it is the final rotation when computing the pointing
+**     direction to a celestial source.
+**
+**  Called:
+**     eraIr        initialize r-matrix to identity
+**     eraRz        rotate around Z-axis
+**     eraRy        rotate around Y-axis
+**     eraRx        rotate around X-axis
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Construct the matrix. */
+   eraIr(rpom);
+   eraRz(sp, rpom);
+   eraRy(-xp, rpom);
+   eraRx(-yp, rpom);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ppp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ppp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ppp.c	(revision 18732)
@@ -0,0 +1,94 @@
+#include "erfa.h"
+
+void eraPpp(double a[3], double b[3], double apb[3])
+/*
+**  - - - - - - -
+**   e r a P p p
+**  - - - - - - -
+**
+**  P-vector addition.
+**
+**  Given:
+**     a        double[3]      first p-vector
+**     b        double[3]      second p-vector
+**
+**  Returned:
+**     apb      double[3]      a + b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   apb[0] = a[0] + b[0];
+   apb[1] = a[1] + b[1];
+   apb[2] = a[2] + b[2];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ppsp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ppsp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ppsp.c	(revision 18732)
@@ -0,0 +1,103 @@
+#include "erfa.h"
+
+void eraPpsp(double a[3], double s, double b[3], double apsb[3])
+/*
+**  - - - - - - - -
+**   e r a P p s p
+**  - - - - - - - -
+**
+**  P-vector plus scaled p-vector.
+**
+**  Given:
+**     a      double[3]     first p-vector
+**     s      double        scalar (multiplier for b)
+**     b      double[3]     second p-vector
+**
+**  Returned:
+**     apsb   double[3]     a + s*b
+**
+**  Note:
+**     It is permissible for any of a, b and apsb to be the same array.
+**
+**  Called:
+**     eraSxp       multiply p-vector by scalar
+**     eraPpp       p-vector plus p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double sb[3];
+
+
+/* s*b. */
+   eraSxp(s, b, sb);
+
+/* a + s*b. */
+   eraPpp(a, sb, apsb);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pr00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pr00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pr00.c	(revision 18732)
@@ -0,0 +1,151 @@
+#include "erfa.h"
+
+void eraPr00(double date1, double date2, double *dpsipr, double *depspr)
+/*
+**  - - - - - - - -
+**   e r a P r 0 0
+**  - - - - - - - -
+**
+**  Precession-rate part of the IAU 2000 precession-nutation models
+**  (part of MHB2000).
+**
+**  Given:
+**     date1,date2    double  TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     dpsipr,depspr  double  precession corrections (Notes 2,3)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The precession adjustments are expressed as "nutation
+**     components", corrections in longitude and obliquity with respect
+**     to the J2000.0 equinox and ecliptic.
+**
+**  3) Although the precession adjustments are stated to be with respect
+**     to Lieske et al. (1977), the MHB2000 model does not specify which
+**     set of Euler angles are to be used and how the adjustments are to
+**     be applied.  The most literal and straightforward procedure is to
+**     adopt the 4-rotation epsilon_0, psi_A, omega_A, xi_A option, and
+**     to add dpsipr to psi_A and depspr to both omega_A and eps_A.
+**
+**  4) This is an implementation of one aspect of the IAU 2000A nutation
+**     model, formally adopted by the IAU General Assembly in 2000,
+**     namely MHB2000 (Mathews et al. 2002).
+**
+**  References:
+**
+**     Lieske, J.H., Lederle, T., Fricke, W. & Morando, B., "Expressions
+**     for the precession quantities based upon the IAU (1976) System of
+**     Astronomical Constants", Astron.Astrophys., 58, 1-16 (1977)
+**
+**     Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation
+**     and precession   New nutation series for nonrigid Earth and
+**     insights into the Earth's interior", J.Geophys.Res., 107, B4,
+**     2002.  The MHB2000 code itself was obtained on 9th September 2002
+**     from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
+**
+**     Wallace, P.T., "Software for Implementing the IAU 2000
+**     Resolutions", in IERS Workshop 5.1 (2002).
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t;
+
+/* Precession and obliquity corrections (radians per century) */
+   static const double PRECOR = -0.29965 * ERFA_DAS2R,
+                       OBLCOR = -0.02524 * ERFA_DAS2R;
+
+
+/* Interval between fundamental epoch J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Precession rate contributions with respect to IAU 1976/80. */
+   *dpsipr = PRECOR * t;
+   *depspr = OBLCOR * t;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/prec76.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/prec76.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/prec76.c	(revision 18732)
@@ -0,0 +1,157 @@
+#include "erfa.h"
+
+void eraPrec76(double date01, double date02, double date11, double date12,
+               double *zeta, double *z, double *theta)
+/*
+**  - - - - - - - - - -
+**   e r a P r e c 7 6
+**  - - - - - - - - - -
+**
+**  IAU 1976 precession model.
+**
+**  This function forms the three Euler angles which implement general
+**  precession between two dates, using the IAU 1976 model (as for the
+**  FK5 catalog).
+**
+**  Given:
+**     date01,date02   double    TDB starting date (Note 1)
+**     date11,date12   double    TDB ending date (Note 1)
+**
+**  Returned:
+**     zeta            double    1st rotation: radians cw around z
+**     z               double    3rd rotation: radians cw around z
+**     theta           double    2nd rotation: radians ccw around y
+**
+**  Notes:
+**
+**  1) The dates date01+date02 and date11+date12 are Julian Dates,
+**     apportioned in any convenient way between the arguments daten1
+**     and daten2.  For example, JD(TDB)=2450123.7 could be expressed in
+**     any of these ways, among others:
+**
+**           daten1        daten2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in cases
+**     where the loss of several decimal digits of resolution is
+**     acceptable.  The J2000 method is best matched to the way the
+**     argument is handled internally and will deliver the optimum
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**     The two dates may be expressed using different methods, but at
+**     the risk of losing some resolution.
+**
+**  2) The accumulated precession angles zeta, z, theta are expressed
+**     through canonical polynomials which are valid only for a limited
+**     time span.  In addition, the IAU 1976 precession rate is known to
+**     be imperfect.  The absolute accuracy of the present formulation
+**     is better than 0.1 arcsec from 1960AD to 2040AD, better than
+**     1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for
+**     the whole of the period 500BC to 3000AD.  The errors exceed
+**     10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec
+**     outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to
+**     8200AD.
+**
+**  3) The three angles are returned in the conventional order, which
+**     is not the same as the order of the corresponding Euler
+**     rotations.  The precession matrix is
+**     R_3(-z) x R_2(+theta) x R_3(-zeta).
+**
+**  Reference:
+**
+**     Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations
+**     (6) & (7), p283.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t0, t, tas2r, w;
+
+
+/* Interval between fundamental epoch J2000.0 and start date (JC). */
+   t0 = ((date01 - ERFA_DJ00) + date02) / ERFA_DJC;
+
+/* Interval over which precession required (JC). */
+   t = ((date11 - date01) + (date12 - date02)) / ERFA_DJC;
+
+/* Euler angles. */
+   tas2r = t * ERFA_DAS2R;
+   w = 2306.2181 + (1.39656 - 0.000139 * t0) * t0;
+
+   *zeta = (w + ((0.30188 - 0.000344 * t0) + 0.017998 * t) * t) * tas2r;
+
+   *z = (w + ((1.09468 + 0.000066 * t0) + 0.018203 * t) * t) * tas2r;
+
+   *theta = ((2004.3109 + (-0.85330 - 0.000217 * t0) * t0)
+          + ((-0.42665 - 0.000217 * t0) - 0.041833 * t) * t) * tas2r;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pv2p.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pv2p.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pv2p.c	(revision 18732)
@@ -0,0 +1,90 @@
+#include "erfa.h"
+
+void eraPv2p(double pv[2][3], double p[3])
+/*
+**  - - - - - - - -
+**   e r a P v 2 p
+**  - - - - - - - -
+**
+**  Discard velocity component of a pv-vector.
+**
+**  Given:
+**     pv      double[2][3]     pv-vector
+**
+**  Returned:
+**     p       double[3]        p-vector
+**
+**  Called:
+**     eraCp        copy p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraCp(pv[0], p);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pv2s.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pv2s.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pv2s.c	(revision 18732)
@@ -0,0 +1,153 @@
+#include "erfa.h"
+
+void eraPv2s(double pv[2][3],
+             double *theta, double *phi, double *r,
+             double *td, double *pd, double *rd)
+/*
+**  - - - - - - - -
+**   e r a P v 2 s
+**  - - - - - - - -
+**
+**  Convert position/velocity from Cartesian to spherical coordinates.
+**
+**  Given:
+**     pv       double[2][3]  pv-vector
+**
+**  Returned:
+**     theta    double        longitude angle (radians)
+**     phi      double        latitude angle (radians)
+**     r        double        radial distance
+**     td       double        rate of change of theta
+**     pd       double        rate of change of phi
+**     rd       double        rate of change of r
+**
+**  Notes:
+**
+**  1) If the position part of pv is null, theta, phi, td and pd
+**     are indeterminate.  This is handled by extrapolating the
+**     position through unit time by using the velocity part of
+**     pv.  This moves the origin without changing the direction
+**     of the velocity component.  If the position and velocity
+**     components of pv are both null, zeroes are returned for all
+**     six results.
+**
+**  2) If the position is a pole, theta, td and pd are indeterminate.
+**     In such cases zeroes are returned for all three.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y, z, xd, yd, zd, rxy2, rxy, r2, rtrue, rw, xyp;
+
+
+/* Components of position/velocity vector. */
+   x  = pv[0][0];
+   y  = pv[0][1];
+   z  = pv[0][2];
+   xd = pv[1][0];
+   yd = pv[1][1];
+   zd = pv[1][2];
+
+/* Component of r in XY plane squared. */
+   rxy2 = x*x + y*y;
+
+/* Modulus squared. */
+   r2 = rxy2 + z*z;
+
+/* Modulus. */
+   rtrue = sqrt(r2);
+
+/* If null vector, move the origin along the direction of movement. */
+   rw = rtrue;
+   if (rtrue == 0.0) {
+       x = xd;
+       y = yd;
+       z = zd;
+       rxy2 = x*x + y*y;
+       r2 = rxy2 + z*z;
+       rw = sqrt(r2);
+   }
+
+/* Position and velocity in spherical coordinates. */
+   rxy = sqrt(rxy2);
+   xyp = x*xd + y*yd;
+   if (rxy2 != 0.0) {
+       *theta = atan2(y, x);
+       *phi = atan2(z, rxy);
+       *td = (x*yd - y*xd) / rxy2;
+       *pd = (zd*rxy2 - z*xyp) / (r2*rxy);
+   } else {
+       *theta = 0.0;
+       *phi = (z != 0.0) ? atan2(z, rxy) : 0.0;
+       *td = 0.0;
+       *pd = 0.0;
+   }
+   *r = rtrue;
+   *rd = (rw != 0.0) ? (xyp + z*zd) / rw : 0.0;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvdpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvdpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvdpv.c	(revision 18732)
@@ -0,0 +1,111 @@
+#include "erfa.h"
+
+void eraPvdpv(double a[2][3], double b[2][3], double adb[2])
+/*
+**  - - - - - - - - -
+**   e r a P v d p v
+**  - - - - - - - - -
+**
+**  Inner (=scalar=dot) product of two pv-vectors.
+**
+**  Given:
+**     a        double[2][3]      first pv-vector
+**     b        double[2][3]      second pv-vector
+**
+**  Returned:
+**     adb      double[2]         a . b (see note)
+**
+**  Note:
+**
+**     If the position and velocity components of the two pv-vectors are
+**     ( ap, av ) and ( bp, bv ), the result, a . b, is the pair of
+**     numbers ( ap . bp , ap . bv + av . bp ).  The two numbers are the
+**     dot-product of the two p-vectors and its derivative.
+**
+**  Called:
+**     eraPdp       scalar product of two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double adbd, addb;
+
+
+/* a . b = constant part of result. */
+   adb[0] = eraPdp(a[0], b[0]);
+
+/* a . bdot */
+   adbd = eraPdp(a[0], b[1]);
+
+/* adot . b */
+   addb = eraPdp(a[1], b[0]);
+
+/* Velocity part of result. */
+   adb[1] = adbd + addb;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvm.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvm.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvm.c	(revision 18732)
@@ -0,0 +1,95 @@
+#include "erfa.h"
+
+void eraPvm(double pv[2][3], double *r, double *s)
+/*
+**  - - - - - - -
+**   e r a P v m
+**  - - - - - - -
+**
+**  Modulus of pv-vector.
+**
+**  Given:
+**     pv     double[2][3]   pv-vector
+**
+**  Returned:
+**     r      double         modulus of position component
+**     s      double         modulus of velocity component
+**
+**  Called:
+**     eraPm        modulus of p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Distance. */
+   *r = eraPm(pv[0]);
+
+/* Speed. */
+   *s = eraPm(pv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvmpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvmpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvmpv.c	(revision 18732)
@@ -0,0 +1,96 @@
+#include "erfa.h"
+
+void eraPvmpv(double a[2][3], double b[2][3], double amb[2][3])
+/*
+**  - - - - - - - - -
+**   e r a P v m p v
+**  - - - - - - - - -
+**
+**  Subtract one pv-vector from another.
+**
+**  Given:
+**     a       double[2][3]      first pv-vector
+**     b       double[2][3]      second pv-vector
+**
+**  Returned:
+**     amb     double[2][3]      a - b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Called:
+**     eraPmp       p-vector minus p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraPmp(a[0], b[0], amb[0]);
+   eraPmp(a[1], b[1], amb[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvppv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvppv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvppv.c	(revision 18732)
@@ -0,0 +1,96 @@
+#include "erfa.h"
+
+void eraPvppv(double a[2][3], double b[2][3], double apb[2][3])
+/*
+**  - - - - - - - - -
+**   e r a P v p p v
+**  - - - - - - - - -
+**
+**  Add one pv-vector to another.
+**
+**  Given:
+**     a        double[2][3]      first pv-vector
+**     b        double[2][3]      second pv-vector
+**
+**  Returned:
+**     apb      double[2][3]      a + b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Called:
+**     eraPpp       p-vector plus p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraPpp(a[0], b[0], apb[0]);
+   eraPpp(a[1], b[1], apb[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvstar.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvstar.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvstar.c	(revision 18732)
@@ -0,0 +1,216 @@
+#include "erfa.h"
+
+int eraPvstar(double pv[2][3], double *ra, double *dec,
+              double *pmr, double *pmd, double *px, double *rv)
+/*
+**  - - - - - - - - - -
+**   e r a P v s t a r
+**  - - - - - - - - - -
+**
+**  Convert star position+velocity vector to catalog coordinates.
+**
+**  Given (Note 1):
+**     pv     double[2][3]   pv-vector (AU, AU/day)
+**
+**  Returned (Note 2):
+**     ra     double         right ascension (radians)
+**     dec    double         declination (radians)
+**     pmr    double         RA proper motion (radians/year)
+**     pmd    double         Dec proper motion (radians/year)
+**     px     double         parallax (arcsec)
+**     rv     double         radial velocity (km/s, positive = receding)
+**
+**  Returned (function value):
+**            int            status:
+**                              0 = OK
+**                             -1 = superluminal speed (Note 5)
+**                             -2 = null position vector
+**
+**  Notes:
+**
+**  1) The specified pv-vector is the coordinate direction (and its rate
+**     of change) for the date at which the light leaving the star
+**     reached the solar-system barycenter.
+**
+**  2) The star data returned by this function are "observables" for an
+**     imaginary observer at the solar-system barycenter.  Proper motion
+**     and radial velocity are, strictly, in terms of barycentric
+**     coordinate time, TCB.  For most practical applications, it is
+**     permissible to neglect the distinction between TCB and ordinary
+**     "proper" time on Earth (TT/TAI).  The result will, as a rule, be
+**     limited by the intrinsic accuracy of the proper-motion and
+**     radial-velocity data;  moreover, the supplied pv-vector is likely
+**     to be merely an intermediate result (for example generated by the
+**     function eraStarpv), so that a change of time unit will cancel
+**     out overall.
+**
+**     In accordance with normal star-catalog conventions, the object's
+**     right ascension and declination are freed from the effects of
+**     secular aberration.  The frame, which is aligned to the catalog
+**     equator and equinox, is Lorentzian and centered on the SSB.
+**
+**     Summarizing, the specified pv-vector is for most stars almost
+**     identical to the result of applying the standard geometrical
+**     "space motion" transformation to the catalog data.  The
+**     differences, which are the subject of the Stumpff paper cited
+**     below, are:
+**
+**     (i) In stars with significant radial velocity and proper motion,
+**     the constantly changing light-time distorts the apparent proper
+**     motion.  Note that this is a classical, not a relativistic,
+**     effect.
+**
+**     (ii) The transformation complies with special relativity.
+**
+**  3) Care is needed with units.  The star coordinates are in radians
+**     and the proper motions in radians per Julian year, but the
+**     parallax is in arcseconds; the radial velocity is in km/s, but
+**     the pv-vector result is in AU and AU/day.
+**
+**  4) The proper motions are the rate of change of the right ascension
+**     and declination at the catalog epoch and are in radians per Julian
+**     year.  The RA proper motion is in terms of coordinate angle, not
+**     true angle, and will thus be numerically larger at high
+**     declinations.
+**
+**  5) Straight-line motion at constant speed in the inertial frame is
+**     assumed.  If the speed is greater than or equal to the speed of
+**     light, the function aborts with an error status.
+**
+**  6) The inverse transformation is performed by the function eraStarpv.
+**
+**  Called:
+**     eraPn        decompose p-vector into modulus and direction
+**     eraPdp       scalar product of two p-vectors
+**     eraSxp       multiply p-vector by scalar
+**     eraPmp       p-vector minus p-vector
+**     eraPm        modulus of p-vector
+**     eraPpp       p-vector plus p-vector
+**     eraPv2s      pv-vector to spherical
+**     eraAnp       normalize angle into range 0 to 2pi
+**
+**  Reference:
+**
+**     Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double r, x[3], vr, ur[3], vt, ut[3], bett, betr, d, w, del,
+          usr[3], ust[3], a, rad, decd, rd;
+
+
+/* Isolate the radial component of the velocity (AU/day, inertial). */
+   eraPn(pv[0], &r, x);
+   vr = eraPdp(x, pv[1]);
+   eraSxp(vr, x, ur);
+
+/* Isolate the transverse component of the velocity (AU/day, inertial). */
+   eraPmp(pv[1], ur, ut);
+   vt = eraPm(ut);
+
+/* Special-relativity dimensionless parameters. */
+   bett = vt / ERFA_DC;
+   betr = vr / ERFA_DC;
+
+/* The inertial-to-observed correction terms. */
+   d = 1.0 + betr;
+   w = 1.0 - betr*betr - bett*bett;
+   if (d == 0.0 || w < 0) return -1;
+   del = sqrt(w) - 1.0;
+
+/* Apply relativistic correction factor to radial velocity component. */
+   w = (betr != 0) ? (betr - del) / (betr * d) : 1.0;
+   eraSxp(w, ur, usr);
+
+/* Apply relativistic correction factor to tangential velocity */
+/* component.                                                  */
+   eraSxp(1.0/d, ut, ust);
+
+/* Combine the two to obtain the observed velocity vector (AU/day). */
+   eraPpp(usr, ust, pv[1]);
+
+/* Cartesian to spherical. */
+   eraPv2s(pv, &a, dec, &r, &rad, &decd, &rd);
+   if (r == 0.0) return -2;
+
+/* Return RA in range 0 to 2pi. */
+   *ra = eraAnp(a);
+
+/* Return proper motions in radians per year. */
+   *pmr = rad * ERFA_DJY;
+   *pmd = decd * ERFA_DJY;
+
+/* Return parallax in arcsec. */
+   *px = ERFA_DR2AS / r;
+
+/* Return radial velocity in km/s. */
+   *rv = 1e-3 * rd * ERFA_DAU / ERFA_DAYSEC;
+
+/* OK status. */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvtob.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvtob.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvtob.c	(revision 18732)
@@ -0,0 +1,162 @@
+#include "erfa.h"
+
+void eraPvtob(double elong, double phi, double hm,
+              double xp, double yp, double sp, double theta,
+              double pv[2][3])
+/*
+**  - - - - - - - - -
+**   e r a P v t o b
+**  - - - - - - - - -
+**
+**  Position and velocity of a terrestrial observing station.
+**
+**  Given:
+**     elong   double       longitude (radians, east +ve, Note 1)
+**     phi     double       latitude (geodetic, radians, Note 1)
+**     hm      double       height above ref. ellipsoid (geodetic, m)
+**     xp,yp   double       coordinates of the pole (radians, Note 2)
+**     sp      double       the TIO locator s' (radians, Note 2)
+**     theta   double       Earth rotation angle (radians, Note 3)
+**
+**  Returned:
+**     pv      double[2][3] position/velocity vector (m, m/s, CIRS)
+**
+**  Notes:
+**
+**  1) The terrestrial coordinates are with respect to the ERFA_WGS84
+**     reference ellipsoid.
+**
+**  2) xp and yp are the coordinates (in radians) of the Celestial
+**     Intermediate Pole with respect to the International Terrestrial
+**     Reference System (see IERS Conventions), measured along the
+**     meridians 0 and 90 deg west respectively.  sp is the TIO locator
+**     s', in radians, which positions the Terrestrial Intermediate
+**     Origin on the equator.  For many applications, xp, yp and
+**     (especially) sp can be set to zero.
+**
+**  3) If theta is Greenwich apparent sidereal time instead of Earth
+**     rotation angle, the result is with respect to the true equator
+**     and equinox of date, i.e. with the x-axis at the equinox rather
+**     than the celestial intermediate origin.
+**
+**  4) The velocity units are meters per UT1 second, not per SI second.
+**     This is unlikely to have any practical consequences in the modern
+**     era.
+**
+**  5) No validation is performed on the arguments.  Error cases that
+**     could lead to arithmetic exceptions are trapped by the eraGd2gc
+**     function, and the result set to zeros.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to
+**     the Astronomical Almanac, 3rd ed., University Science Books
+**     (2013), Section 7.4.3.3.
+**
+**  Called:
+**     eraGd2gc     geodetic to geocentric transformation
+**     eraPom00     polar motion matrix
+**     eraTrxp      product of transpose of r-matrix and p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Earth rotation rate in radians per UT1 second */
+   const double OM = 1.00273781191135448 * ERFA_D2PI / ERFA_DAYSEC;
+
+   double xyzm[3], rpm[3][3], xyz[3], x, y, z, s, c;
+
+
+/* Geodetic to geocentric transformation (ERFA_WGS84). */
+   (void) eraGd2gc(1, elong, phi, hm, xyzm);
+
+/* Polar motion and TIO position. */
+   eraPom00(xp, yp, sp, rpm);
+   eraTrxp(rpm, xyzm, xyz);
+   x = xyz[0];
+   y = xyz[1];
+   z = xyz[2];
+
+/* Functions of ERA. */
+   s = sin(theta);
+   c = cos(theta);
+
+/* Position. */
+   pv[0][0] = c*x - s*y;
+   pv[0][1] = s*x + c*y;
+   pv[0][2] = z;
+
+/* Velocity. */
+   pv[1][0] = OM * ( -s*x - c*y );
+   pv[1][1] = OM * (  c*x - s*y );
+   pv[1][2] = 0.0;
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvu.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvu.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvu.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+void eraPvu(double dt, double pv[2][3], double upv[2][3])
+/*
+**  - - - - - - -
+**   e r a P v u
+**  - - - - - - -
+**
+**  Update a pv-vector.
+**
+**  Given:
+**     dt       double           time interval
+**     pv       double[2][3]     pv-vector
+**
+**  Returned:
+**     upv      double[2][3]     p updated, v unchanged
+**
+**  Notes:
+**
+**  1) "Update" means "refer the position component of the vector
+**     to a new date dt time units from the existing date".
+**
+**  2) The time units of dt must match those of the velocity.
+**
+**  3) It is permissible for pv and upv to be the same array.
+**
+**  Called:
+**     eraPpsp      p-vector plus scaled p-vector
+**     eraCp        copy p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraPpsp(pv[0], dt, pv[1], upv[0]);
+   eraCp(pv[1], upv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvup.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvup.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvup.c	(revision 18732)
@@ -0,0 +1,97 @@
+#include "erfa.h"
+
+void eraPvup(double dt, double pv[2][3], double p[3])
+/*
+**  - - - - - - - -
+**   e r a P v u p
+**  - - - - - - - -
+**
+**  Update a pv-vector, discarding the velocity component.
+**
+**  Given:
+**     dt       double            time interval
+**     pv       double[2][3]      pv-vector
+**
+**  Returned:
+**     p        double[3]         p-vector
+**
+**  Notes:
+**
+**  1) "Update" means "refer the position component of the vector to a
+**     new date dt time units from the existing date".
+**
+**  2) The time units of dt must match those of the velocity.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   p[0] = pv[0][0] + dt * pv[1][0];
+   p[1] = pv[0][1] + dt * pv[1][1];
+   p[2] = pv[0][2] + dt * pv[1][2];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pvxpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pvxpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pvxpv.c	(revision 18732)
@@ -0,0 +1,116 @@
+#include "erfa.h"
+
+void eraPvxpv(double a[2][3], double b[2][3], double axb[2][3])
+/*
+**  - - - - - - - - -
+**   e r a P v x p v
+**  - - - - - - - - -
+**
+**  Outer (=vector=cross) product of two pv-vectors.
+**
+**  Given:
+**     a        double[2][3]      first pv-vector
+**     b        double[2][3]      second pv-vector
+**
+**  Returned:
+**     axb      double[2][3]      a x b
+**
+**  Notes:
+**
+**  1) If the position and velocity components of the two pv-vectors are
+**     ( ap, av ) and ( bp, bv ), the result, a x b, is the pair of
+**     vectors ( ap x bp, ap x bv + av x bp ).  The two vectors are the
+**     cross-product of the two p-vectors and its derivative.
+**
+**  2) It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Called:
+**     eraCpv       copy pv-vector
+**     eraPxp       vector product of two p-vectors
+**     eraPpp       p-vector plus p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double wa[2][3], wb[2][3], axbd[3], adxb[3];
+
+
+/* Make copies of the inputs. */
+   eraCpv(a, wa);
+   eraCpv(b, wb);
+
+/* a x b = position part of result. */
+   eraPxp(wa[0], wb[0], axb[0]);
+
+/* a x bdot + adot x b = velocity part of result. */
+   eraPxp(wa[0], wb[1], axbd);
+   eraPxp(wa[1], wb[0], adxb);
+   eraPpp(axbd, adxb, axb[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/pxp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/pxp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/pxp.c	(revision 18732)
@@ -0,0 +1,103 @@
+#include "erfa.h"
+
+void eraPxp(double a[3], double b[3], double axb[3])
+/*
+**  - - - - - - -
+**   e r a P x p
+**  - - - - - - -
+**
+**  p-vector outer (=vector=cross) product.
+**
+**  Given:
+**     a        double[3]      first p-vector
+**     b        double[3]      second p-vector
+**
+**  Returned:
+**     axb      double[3]      a x b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double xa, ya, za, xb, yb, zb;
+
+
+   xa = a[0];
+   ya = a[1];
+   za = a[2];
+   xb = b[0];
+   yb = b[1];
+   zb = b[2];
+   axb[0] = ya*zb - za*yb;
+   axb[1] = za*xb - xa*zb;
+   axb[2] = xa*yb - ya*xb;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/refco.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/refco.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/refco.c	(revision 18732)
@@ -0,0 +1,262 @@
+#include "erfa.h"
+
+void eraRefco(double phpa, double tc, double rh, double wl,
+              double *refa, double *refb)
+/*
+**  - - - - - - - - -
+**   e r a R e f c o
+**  - - - - - - - - -
+**
+**  Determine the constants A and B in the atmospheric refraction model
+**  dZ = A tan Z + B tan^3 Z.
+**
+**  Z is the "observed" zenith distance (i.e. affected by refraction)
+**  and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo)
+**  zenith distance.
+**
+**  Given:
+**    phpa   double    pressure at the observer (hPa = millibar)
+**    tc     double    ambient temperature at the observer (deg C)
+**    rh     double    relative humidity at the observer (range 0-1)
+**    wl     double    wavelength (micrometers)
+**
+**  Returned:
+**    refa   double*   tan Z coefficient (radians)
+**    refb   double*   tan^3 Z coefficient (radians)
+**
+**  Notes:
+**
+**  1) The model balances speed and accuracy to give good results in
+**     applications where performance at low altitudes is not paramount.
+**     Performance is maintained across a range of conditions, and
+**     applies to both optical/IR and radio.
+**
+**  2) The model omits the effects of (i) height above sea level (apart
+**     from the reduced pressure itself), (ii) latitude (i.e. the
+**     flattening of the Earth), (iii) variations in tropospheric lapse
+**     rate and (iv) dispersive effects in the radio.
+**
+**     The model was tested using the following range of conditions:
+**
+**       lapse rates 0.0055, 0.0065, 0.0075 deg/meter
+**       latitudes 0, 25, 50, 75 degrees
+**       heights 0, 2500, 5000 meters ASL
+**       pressures mean for height -10% to +5% in steps of 5%
+**       temperatures -10 deg to +20 deg with respect to 280 deg at SL
+**       relative humidity 0, 0.5, 1
+**       wavelengths 0.4, 0.6, ... 2 micron, + radio
+**       zenith distances 15, 45, 75 degrees
+**
+**     The accuracy with respect to raytracing through a model
+**     atmosphere was as follows:
+**
+**                            worst         RMS
+**
+**       optical/IR           62 mas       8 mas
+**       radio               319 mas      49 mas
+**
+**     For this particular set of conditions:
+**
+**       lapse rate 0.0065 K/meter
+**       latitude 50 degrees
+**       sea level
+**       pressure 1005 mb
+**       temperature 280.15 K
+**       humidity 80%
+**       wavelength 5740 Angstroms
+**
+**     the results were as follows:
+**
+**       ZD       raytrace     eraRefco   Saastamoinen
+**
+**       10         10.27        10.27        10.27
+**       20         21.19        21.20        21.19
+**       30         33.61        33.61        33.60
+**       40         48.82        48.83        48.81
+**       45         58.16        58.18        58.16
+**       50         69.28        69.30        69.27
+**       55         82.97        82.99        82.95
+**       60        100.51       100.54       100.50
+**       65        124.23       124.26       124.20
+**       70        158.63       158.68       158.61
+**       72        177.32       177.37       177.31
+**       74        200.35       200.38       200.32
+**       76        229.45       229.43       229.42
+**       78        267.44       267.29       267.41
+**       80        319.13       318.55       319.10
+**
+**      deg        arcsec       arcsec       arcsec
+**
+**     The values for Saastamoinen's formula (which includes terms
+**     up to tan^5) are taken from Hohenkerk and Sinclair (1985).
+**
+**  3) A wl value in the range 0-100 selects the optical/IR case and is
+**     wavelength in micrometers.  Any value outside this range selects
+**     the radio case.
+**
+**  4) Outlandish input parameters are silently limited to
+**     mathematically safe values.  Zero pressure is permissible, and
+**     causes zeroes to be returned.
+**
+**  5) The algorithm draws on several sources, as follows:
+**
+**     a) The formula for the saturation vapour pressure of water as
+**        a function of temperature and temperature is taken from
+**        Equations (A4.5-A4.7) of Gill (1982).
+**
+**     b) The formula for the water vapour pressure, given the
+**        saturation pressure and the relative humidity, is from
+**        Crane (1976), Equation (2.5.5).
+**
+**     c) The refractivity of air is a function of temperature,
+**        total pressure, water-vapour pressure and, in the case
+**        of optical/IR, wavelength.  The formulae for the two cases are
+**        developed from Hohenkerk & Sinclair (1985) and Rueger (2002).
+**
+**     d) The formula for beta, the ratio of the scale height of the
+**        atmosphere to the geocentric distance of the observer, is
+**        an adaption of Equation (9) from Stone (1996).  The
+**        adaptations, arrived at empirically, consist of (i) a small
+**        adjustment to the coefficient and (ii) a humidity term for the
+**        radio case only.
+**
+**     e) The formulae for the refraction constants as a function of
+**        n-1 and beta are from Green (1987), Equation (4.31).
+**
+**  References:
+**
+**     Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral
+**     Atmosphere", Methods of Experimental Physics: Astrophysics 12B,
+**     Academic Press, 1976.
+**
+**     Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press,
+**     1982.
+**
+**     Green, R.M., "Spherical Astronomy", Cambridge University Press,
+**     1987.
+**
+**     Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63,
+**     1985.
+**
+**     Rueger, J.M., "Refractive Index Formulae for Electronic Distance
+**     Measurement with Radio and Millimetre Waves", in Unisurv Report
+**     S-68, School of Surveying and Spatial Information Systems,
+**     University of New South Wales, Sydney, Australia, 2002.
+**
+**     Stone, Ronald C., P.A.S.P. 108, 1051-1058, 1996.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int optic;
+   double p, t, r, w, ps, pw, tk, wlsq, gamma, beta;
+
+
+/* Decide whether optical/IR or radio case:  switch at 100 microns. */
+   optic = ( wl <= 100.0 );
+
+/* Restrict parameters to safe values. */
+   t = ERFA_GMAX ( tc, -150.0 );
+   t = ERFA_GMIN ( t, 200.0 );
+   p = ERFA_GMAX ( phpa, 0.0 );
+   p = ERFA_GMIN ( p, 10000.0 );
+   r = ERFA_GMAX ( rh, 0.0 );
+   r = ERFA_GMIN ( r, 1.0 );
+   w = ERFA_GMAX ( wl, 0.1 );
+   w = ERFA_GMIN ( w, 1e6 );
+
+/* Water vapour pressure at the observer. */
+   if ( p > 0.0 ) {
+      ps = pow ( 10.0, ( 0.7859 + 0.03477*t ) /
+                          ( 1.0 + 0.00412*t ) ) *
+                 ( 1.0 + p * ( 4.5e-6 + 6e-10*t*t )  );
+      pw = r * ps / ( 1.0 - (1.0-r)*ps/p );
+   } else {
+      pw = 0.0;
+   }
+
+/* Refractive index minus 1 at the observer. */
+   tk = t + 273.15;
+   if ( optic ) {
+      wlsq = w * w;
+      gamma = ( ( 77.53484e-6 +
+                 ( 4.39108e-7 + 3.666e-9/wlsq ) / wlsq ) * p
+                    - 11.2684e-6*pw ) / tk;
+   } else {
+      gamma = ( 77.6890e-6*p - ( 6.3938e-6 - 0.375463/tk ) * pw ) / tk;
+   }
+
+/* Formula for beta from Stone, with empirical adjustments. */
+   beta = 4.4474e-6 * tk;
+   if ( ! optic ) beta -= 0.0074 * pw * beta;
+
+/* Refraction constants from Green. */
+   *refa = gamma * ( 1.0 - beta );
+   *refb = - gamma * ( beta - gamma / 2.0 );
+
+/* Finished. */
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rm2v.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rm2v.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rm2v.c	(revision 18732)
@@ -0,0 +1,120 @@
+#include "erfa.h"
+
+void eraRm2v(double r[3][3], double w[3])
+/*
+**  - - - - - - - -
+**   e r a R m 2 v
+**  - - - - - - - -
+**
+**  Express an r-matrix as an r-vector.
+**
+**  Given:
+**     r        double[3][3]    rotation matrix
+**
+**  Returned:
+**     w        double[3]       rotation vector (Note 1)
+**
+**  Notes:
+**
+**  1) A rotation matrix describes a rotation through some angle about
+**     some arbitrary axis called the Euler axis.  The "rotation vector"
+**     returned by this function has the same direction as the Euler axis,
+**     and its magnitude is the angle in radians.  (The magnitude and
+**     direction can be separated by means of the function eraPn.)
+**
+**  2) If r is null, so is the result.  If r is not a rotation matrix
+**     the result is undefined;  r must be proper (i.e. have a positive
+**     determinant) and real orthogonal (inverse = transpose).
+**
+**  3) The reference frame rotates clockwise as seen looking along
+**     the rotation vector from the origin.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y, z, s2, c2, phi, f;
+
+
+   x = r[1][2] - r[2][1];
+   y = r[2][0] - r[0][2];
+   z = r[0][1] - r[1][0];
+   s2 = sqrt(x*x + y*y + z*z);
+   if (s2 > 0) {
+      c2 = r[0][0] + r[1][1] + r[2][2] - 1.0;
+      phi = atan2(s2, c2);
+      f =  phi / s2;
+      w[0] = x * f;
+      w[1] = y * f;
+      w[2] = z * f;
+   } else {
+      w[0] = 0.0;
+      w[1] = 0.0;
+      w[2] = 0.0;
+   }
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rv2m.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rv2m.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rv2m.c	(revision 18732)
@@ -0,0 +1,127 @@
+#include "erfa.h"
+
+void eraRv2m(double w[3], double r[3][3])
+/*
+**  - - - - - - - -
+**   e r a R v 2 m
+**  - - - - - - - -
+**
+**  Form the r-matrix corresponding to a given r-vector.
+**
+**  Given:
+**     w        double[3]      rotation vector (Note 1)
+**
+**  Returned:
+**     r        double[3][3]    rotation matrix
+**
+**  Notes:
+**
+**  1) A rotation matrix describes a rotation through some angle about
+**     some arbitrary axis called the Euler axis.  The "rotation vector"
+**     supplied to This function has the same direction as the Euler
+**     axis, and its magnitude is the angle in radians.
+**
+**  2) If w is null, the unit matrix is returned.
+**
+**  3) The reference frame rotates clockwise as seen looking along the
+**     rotation vector from the origin.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double x, y, z, phi, s, c, f;
+
+
+/* Euler angle (magnitude of rotation vector) and functions. */
+   x = w[0];
+   y = w[1];
+   z = w[2];
+   phi = sqrt(x*x + y*y + z*z);
+   s = sin(phi);
+   c = cos(phi);
+   f = 1.0 - c;
+
+/* Euler axis (direction of rotation vector), perhaps null. */
+   if (phi > 0.0) {
+       x /= phi;
+       y /= phi;
+       z /= phi;
+   }
+
+/* Form the rotation matrix. */
+   r[0][0] = x*x*f + c;
+   r[0][1] = x*y*f + z*s;
+   r[0][2] = x*z*f - y*s;
+   r[1][0] = y*x*f - z*s;
+   r[1][1] = y*y*f + c;
+   r[1][2] = y*z*f + x*s;
+   r[2][0] = z*x*f + y*s;
+   r[2][1] = z*y*f - x*s;
+   r[2][2] = z*z*f + c;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rx.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rx.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rx.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+void eraRx(double phi, double r[3][3])
+/*
+**  - - - - - -
+**   e r a R x
+**  - - - - - -
+**
+**  Rotate an r-matrix about the x-axis.
+**
+**  Given:
+**     phi    double          angle (radians)
+**
+**  Given and returned:
+**     r      double[3][3]    r-matrix, rotated
+**
+**  Notes:
+**
+**  1) Calling this function with positive phi incorporates in the
+**     supplied r-matrix r an additional rotation, about the x-axis,
+**     anticlockwise as seen looking towards the origin from positive x.
+**
+**  2) The additional rotation can be represented by this matrix:
+**
+**         (  1        0            0      )
+**         (                               )
+**         (  0   + cos(phi)   + sin(phi)  )
+**         (                               )
+**         (  0   - sin(phi)   + cos(phi)  )
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double s, c, a10, a11, a12, a20, a21, a22;
+
+
+   s = sin(phi);
+   c = cos(phi);
+
+   a10 =   c*r[1][0] + s*r[2][0];
+   a11 =   c*r[1][1] + s*r[2][1];
+   a12 =   c*r[1][2] + s*r[2][2];
+   a20 = - s*r[1][0] + c*r[2][0];
+   a21 = - s*r[1][1] + c*r[2][1];
+   a22 = - s*r[1][2] + c*r[2][2];
+
+   r[1][0] = a10;
+   r[1][1] = a11;
+   r[1][2] = a12;
+   r[2][0] = a20;
+   r[2][1] = a21;
+   r[2][2] = a22;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rxp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rxp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rxp.c	(revision 18732)
@@ -0,0 +1,108 @@
+#include "erfa.h"
+
+void eraRxp(double r[3][3], double p[3], double rp[3])
+/*
+**  - - - - - - -
+**   e r a R x p
+**  - - - - - - -
+**
+**  Multiply a p-vector by an r-matrix.
+**
+**  Given:
+**     r        double[3][3]    r-matrix
+**     p        double[3]       p-vector
+**
+**  Returned:
+**     rp       double[3]       r * p
+**
+**  Note:
+**     It is permissible for p and rp to be the same array.
+**
+**  Called:
+**     eraCp        copy p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double w, wrp[3];
+   int i, j;
+
+
+/* Matrix r * vector p. */
+   for (j = 0; j < 3; j++) {
+       w = 0.0;
+       for (i = 0; i < 3; i++) {
+           w += r[j][i] * p[i];
+       }
+       wrp[j] = w;
+   }
+
+/* Return the result. */
+   eraCp(wrp, rp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rxpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rxpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rxpv.c	(revision 18732)
@@ -0,0 +1,95 @@
+#include "erfa.h"
+
+void eraRxpv(double r[3][3], double pv[2][3], double rpv[2][3])
+/*
+**  - - - - - - - -
+**   e r a R x p v
+**  - - - - - - - -
+**
+**  Multiply a pv-vector by an r-matrix.
+**
+**  Given:
+**     r        double[3][3]    r-matrix
+**     pv       double[2][3]    pv-vector
+**
+**  Returned:
+**     rpv      double[2][3]    r * pv
+**
+**  Note:
+**     It is permissible for pv and rpv to be the same array.
+**
+**  Called:
+**     eraRxp       product of r-matrix and p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraRxp(r, pv[0], rpv[0]);
+   eraRxp(r, pv[1], rpv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rxr.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rxr.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rxr.c	(revision 18732)
@@ -0,0 +1,108 @@
+#include "erfa.h"
+
+void eraRxr(double a[3][3], double b[3][3], double atb[3][3])
+/*
+**  - - - - - - -
+**   e r a R x r
+**  - - - - - - -
+**
+**  Multiply two r-matrices.
+**
+**  Given:
+**     a        double[3][3]    first r-matrix
+**     b        double[3][3]    second r-matrix
+**
+**  Returned:
+**     atb      double[3][3]    a * b
+**
+**  Note:
+**     It is permissible to re-use the same array for any of the
+**     arguments.
+**
+**  Called:
+**     eraCr        copy r-matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int i, j, k;
+   double w, wm[3][3];
+
+
+   for (i = 0; i < 3; i++) {
+      for (j = 0; j < 3; j++) {
+         w = 0.0;
+         for (k = 0; k < 3; k++) {
+            w +=  a[i][k] * b[k][j];
+         }
+         wm[i][j] = w;
+      }
+   }
+   eraCr(wm, atb);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ry.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ry.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ry.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+void eraRy(double theta, double r[3][3])
+/*
+**  - - - - - -
+**   e r a R y
+**  - - - - - -
+**
+**  Rotate an r-matrix about the y-axis.
+**
+**  Given:
+**     theta  double          angle (radians)
+**
+**  Given and returned:
+**     r      double[3][3]    r-matrix, rotated
+**
+**  Notes:
+**
+**  1) Calling this function with positive theta incorporates in the
+**     supplied r-matrix r an additional rotation, about the y-axis,
+**     anticlockwise as seen looking towards the origin from positive y.
+**
+**  2) The additional rotation can be represented by this matrix:
+**
+**         (  + cos(theta)     0      - sin(theta)  )
+**         (                                        )
+**         (       0           1           0        )
+**         (                                        )
+**         (  + sin(theta)     0      + cos(theta)  )
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double s, c, a00, a01, a02, a20, a21, a22;
+
+
+   s = sin(theta);
+   c = cos(theta);
+
+   a00 = c*r[0][0] - s*r[2][0];
+   a01 = c*r[0][1] - s*r[2][1];
+   a02 = c*r[0][2] - s*r[2][2];
+   a20 = s*r[0][0] + c*r[2][0];
+   a21 = s*r[0][1] + c*r[2][1];
+   a22 = s*r[0][2] + c*r[2][2];
+
+   r[0][0] = a00;
+   r[0][1] = a01;
+   r[0][2] = a02;
+   r[2][0] = a20;
+   r[2][1] = a21;
+   r[2][2] = a22;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/rz.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/rz.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/rz.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+void eraRz(double psi, double r[3][3])
+/*
+**  - - - - - -
+**   e r a R z
+**  - - - - - -
+**
+**  Rotate an r-matrix about the z-axis.
+**
+**  Given:
+**     psi    double          angle (radians)
+**
+**  Given and returned:
+**     r      double[3][3]    r-matrix, rotated
+**
+**  Notes:
+**
+**  1) Calling this function with positive psi incorporates in the
+**     supplied r-matrix r an additional rotation, about the z-axis,
+**     anticlockwise as seen looking towards the origin from positive z.
+**
+**  2) The additional rotation can be represented by this matrix:
+**
+**         (  + cos(psi)   + sin(psi)     0  )
+**         (                                 )
+**         (  - sin(psi)   + cos(psi)     0  )
+**         (                                 )
+**         (       0            0         1  )
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double s, c, a00, a01, a02, a10, a11, a12;
+
+
+   s = sin(psi);
+   c = cos(psi);
+
+   a00 =   c*r[0][0] + s*r[1][0];
+   a01 =   c*r[0][1] + s*r[1][1];
+   a02 =   c*r[0][2] + s*r[1][2];
+   a10 = - s*r[0][0] + c*r[1][0];
+   a11 = - s*r[0][1] + c*r[1][1];
+   a12 = - s*r[0][2] + c*r[1][2];
+
+   r[0][0] = a00;
+   r[0][1] = a01;
+   r[0][2] = a02;
+   r[1][0] = a10;
+   r[1][1] = a11;
+   r[1][2] = a12;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s00.c	(revision 18732)
@@ -0,0 +1,380 @@
+#include "erfa.h"
+
+double eraS00(double date1, double date2, double x, double y)
+/*
+**  - - - - - - -
+**   e r a S 0 0
+**  - - - - - - -
+**
+**  The CIO locator s, positioning the Celestial Intermediate Origin on
+**  the equator of the Celestial Intermediate Pole, given the CIP's X,Y
+**  coordinates.  Compatible with IAU 2000A precession-nutation.
+**
+**  Given:
+**     date1,date2   double    TT as a 2-part Julian Date (Note 1)
+**     x,y           double    CIP coordinates (Note 3)
+**
+**  Returned (function value):
+**                   double    the CIO locator s in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The CIO locator s is the difference between the right ascensions
+**     of the same point in two systems:  the two systems are the GCRS
+**     and the CIP,CIO, and the point is the ascending node of the
+**     CIP equator.  The quantity s remains below 0.1 arcsecond
+**     throughout 1900-2100.
+**
+**  3) The series used to compute s is in fact for s+XY/2, where X and Y
+**     are the x and y components of the CIP unit vector;  this series
+**     is more compact than a direct series for s would be.  This
+**     function requires X,Y to be supplied by the caller, who is
+**     responsible for providing values that are consistent with the
+**     supplied date.
+**
+**  4) The model is consistent with the IAU 2000A precession-nutation.
+**
+**  Called:
+**     eraFal03     mean anomaly of the Moon
+**     eraFalp03    mean anomaly of the Sun
+**     eraFaf03     mean argument of the latitude of the Moon
+**     eraFad03     mean elongation of the Moon from the Sun
+**     eraFaom03    mean longitude of the Moon's ascending node
+**     eraFave03    mean longitude of Venus
+**     eraFae03     mean longitude of Earth
+**     eraFapa03    general accumulated precession in longitude
+**
+**  References:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Time since J2000.0, in Julian centuries */
+   double t;
+
+/* Miscellaneous */
+   int i, j;
+   double a, w0, w1, w2, w3, w4, w5;
+
+/* Fundamental arguments */
+   double fa[8];
+
+/* Returned value */
+   double s;
+
+/* --------------------- */
+/* The series for s+XY/2 */
+/* --------------------- */
+
+   typedef struct {
+      int nfa[8];      /* coefficients of l,l',F,D,Om,LVe,LE,pA */
+      double s, c;     /* sine and cosine coefficients */
+   } TERM;
+
+/* Polynomial coefficients */
+   static const double sp[] = {
+
+   /* 1-6 */
+          94.00e-6,
+        3808.35e-6,
+        -119.94e-6,
+      -72574.09e-6,
+          27.70e-6,
+          15.61e-6
+   };
+
+/* Terms of order t^0 */
+   static const TERM s0[] = {
+
+   /* 1-10 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0}, -2640.73e-6,   0.39e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},   -63.53e-6,   0.02e-6 },
+      {{ 0,  0,  2, -2,  3,  0,  0,  0},   -11.75e-6,  -0.01e-6 },
+      {{ 0,  0,  2, -2,  1,  0,  0,  0},   -11.21e-6,  -0.01e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},     4.57e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  3,  0,  0,  0},    -2.02e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  1,  0,  0,  0},    -1.98e-6,   0.00e-6 },
+      {{ 0,  0,  0,  0,  3,  0,  0,  0},     1.72e-6,   0.00e-6 },
+      {{ 0,  1,  0,  0,  1,  0,  0,  0},     1.41e-6,   0.01e-6 },
+      {{ 0,  1,  0,  0, -1,  0,  0,  0},     1.26e-6,   0.01e-6 },
+
+   /* 11-20 */
+      {{ 1,  0,  0,  0, -1,  0,  0,  0},     0.63e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0,  1,  0,  0,  0},     0.63e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  3,  0,  0,  0},    -0.46e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  1,  0,  0,  0},    -0.45e-6,   0.00e-6 },
+      {{ 0,  0,  4, -4,  4,  0,  0,  0},    -0.36e-6,   0.00e-6 },
+      {{ 0,  0,  1, -1,  1, -8, 12,  0},     0.24e-6,   0.12e-6 },
+      {{ 0,  0,  2,  0,  0,  0,  0,  0},    -0.32e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},    -0.28e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  3,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  1,  0,  0,  0},    -0.26e-6,   0.00e-6 },
+
+   /* 21-30 */
+      {{ 0,  0,  2, -2,  0,  0,  0,  0},     0.21e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -3,  0,  0,  0},    -0.19e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -1,  0,  0,  0},    -0.18e-6,   0.00e-6 },
+      {{ 0,  0,  0,  0,  0,  8,-13, -1},     0.10e-6,  -0.05e-6 },
+      {{ 0,  0,  0,  2,  0,  0,  0,  0},    -0.15e-6,   0.00e-6 },
+      {{ 2,  0, -2,  0, -1,  0,  0,  0},     0.14e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  2,  0,  0,  0},     0.14e-6,   0.00e-6 },
+      {{ 1,  0,  0, -2,  1,  0,  0,  0},    -0.14e-6,   0.00e-6 },
+      {{ 1,  0,  0, -2, -1,  0,  0,  0},    -0.14e-6,   0.00e-6 },
+      {{ 0,  0,  4, -2,  4,  0,  0,  0},    -0.13e-6,   0.00e-6 },
+
+   /* 31-33 */
+      {{ 0,  0,  2, -2,  4,  0,  0,  0},     0.11e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -3,  0,  0,  0},    -0.11e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -1,  0,  0,  0},    -0.11e-6,   0.00e-6 }
+   };
+
+/* Terms of order t^1 */
+   static const TERM s1[] ={
+
+   /* 1-3 */
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},    -0.07e-6,   3.57e-6 },
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},     1.71e-6,  -0.03e-6 },
+      {{ 0,  0,  2, -2,  3,  0,  0,  0},     0.00e-6,   0.48e-6 }
+   };
+
+/* Terms of order t^2 */
+   static const TERM s2[] ={
+
+   /* 1-10 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},   743.53e-6,  -0.17e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},    56.91e-6,   0.06e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},     9.84e-6,  -0.01e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},    -8.85e-6,   0.01e-6 },
+      {{ 0,  1,  0,  0,  0,  0,  0,  0},    -6.38e-6,  -0.05e-6 },
+      {{ 1,  0,  0,  0,  0,  0,  0,  0},    -3.07e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  2,  0,  0,  0},     2.23e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  1,  0,  0,  0},     1.67e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  2,  0,  0,  0},     1.30e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -2,  0,  0,  0},     0.93e-6,   0.00e-6 },
+
+   /* 11-20 */
+      {{ 1,  0,  0, -2,  0,  0,  0,  0},     0.68e-6,   0.00e-6 },
+      {{ 0,  0,  2, -2,  1,  0,  0,  0},    -0.55e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -2,  0,  0,  0},     0.53e-6,   0.00e-6 },
+      {{ 0,  0,  0,  2,  0,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0,  1,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0, -2, -2, -2,  0,  0,  0},    -0.26e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0, -1,  0,  0,  0},    -0.25e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  1,  0,  0,  0},     0.22e-6,   0.00e-6 },
+      {{ 2,  0,  0, -2,  0,  0,  0,  0},    -0.21e-6,   0.00e-6 },
+      {{ 2,  0, -2,  0, -1,  0,  0,  0},     0.20e-6,   0.00e-6 },
+
+   /* 21-25 */
+      {{ 0,  0,  2,  2,  2,  0,  0,  0},     0.17e-6,   0.00e-6 },
+      {{ 2,  0,  2,  0,  2,  0,  0,  0},     0.13e-6,   0.00e-6 },
+      {{ 2,  0,  0,  0,  0,  0,  0,  0},    -0.13e-6,   0.00e-6 },
+      {{ 1,  0,  2, -2,  2,  0,  0,  0},    -0.12e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  0,  0,  0,  0},    -0.11e-6,   0.00e-6 }
+   };
+
+/* Terms of order t^3 */
+   static const TERM s3[] ={
+
+   /* 1-4 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},     0.30e-6, -23.51e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},    -0.03e-6,  -1.39e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},    -0.01e-6,  -0.24e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},     0.00e-6,   0.22e-6 }
+   };
+
+/* Terms of order t^4 */
+   static const TERM s4[] ={
+
+   /* 1-1 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},    -0.26e-6,  -0.01e-6 }
+   };
+
+/* Number of terms in the series */
+   const int NS0 = (int) (sizeof s0 / sizeof (TERM));
+   const int NS1 = (int) (sizeof s1 / sizeof (TERM));
+   const int NS2 = (int) (sizeof s2 / sizeof (TERM));
+   const int NS3 = (int) (sizeof s3 / sizeof (TERM));
+   const int NS4 = (int) (sizeof s4 / sizeof (TERM));
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental epoch J2000.0 and current date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Fundamental Arguments (from IERS Conventions 2003) */
+
+/* Mean anomaly of the Moon. */
+   fa[0] = eraFal03(t);
+
+/* Mean anomaly of the Sun. */
+   fa[1] = eraFalp03(t);
+
+/* Mean longitude of the Moon minus that of the ascending node. */
+   fa[2] = eraFaf03(t);
+
+/* Mean elongation of the Moon from the Sun. */
+   fa[3] = eraFad03(t);
+
+/* Mean longitude of the ascending node of the Moon. */
+   fa[4] = eraFaom03(t);
+
+/* Mean longitude of Venus. */
+   fa[5] = eraFave03(t);
+
+/* Mean longitude of Earth. */
+   fa[6] = eraFae03(t);
+
+/* General precession in longitude. */
+   fa[7] = eraFapa03(t);
+
+/* Evaluate s. */
+   w0 = sp[0];
+   w1 = sp[1];
+   w2 = sp[2];
+   w3 = sp[3];
+   w4 = sp[4];
+   w5 = sp[5];
+
+   for (i = NS0-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+       a += (double)s0[i].nfa[j] * fa[j];
+   }
+   w0 += s0[i].s * sin(a) + s0[i].c * cos(a);
+   }
+
+   for (i = NS1-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+       a += (double)s1[i].nfa[j] * fa[j];
+   }
+   w1 += s1[i].s * sin(a) + s1[i].c * cos(a);
+   }
+
+   for (i = NS2-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+       a += (double)s2[i].nfa[j] * fa[j];
+   }
+   w2 += s2[i].s * sin(a) + s2[i].c * cos(a);
+   }
+
+   for (i = NS3-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+       a += (double)s3[i].nfa[j] * fa[j];
+   }
+   w3 += s3[i].s * sin(a) + s3[i].c * cos(a);
+   }
+
+   for (i = NS4-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+       a += (double)s4[i].nfa[j] * fa[j];
+   }
+   w4 += s4[i].s * sin(a) + s4[i].c * cos(a);
+   }
+
+   s = (w0 +
+       (w1 +
+       (w2 +
+       (w3 +
+       (w4 +
+        w5 * t) * t) * t) * t) * t) * ERFA_DAS2R - x*y/2.0;
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s00a.c	(revision 18732)
@@ -0,0 +1,152 @@
+#include "erfa.h"
+
+double eraS00a(double date1, double date2)
+/*
+**  - - - - - - - -
+**   e r a S 0 0 a
+**  - - - - - - - -
+**
+**  The CIO locator s, positioning the Celestial Intermediate Origin on
+**  the equator of the Celestial Intermediate Pole, using the IAU 2000A
+**  precession-nutation model.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    the CIO locator s in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The CIO locator s is the difference between the right ascensions
+**     of the same point in two systems.  The two systems are the GCRS
+**     and the CIP,CIO, and the point is the ascending node of the
+**     CIP equator.  The CIO locator s remains a small fraction of
+**     1 arcsecond throughout 1900-2100.
+**
+**  3) The series used to compute s is in fact for s+XY/2, where X and Y
+**     are the x and y components of the CIP unit vector;  this series
+**     is more compact than a direct series for s would be.  The present
+**     function uses the full IAU 2000A nutation model when predicting
+**     the CIP position.  Faster results, with no significant loss of
+**     accuracy, can be obtained via the function eraS00b, which uses
+**     instead the IAU 2000B truncated model.
+**
+**  Called:
+**     eraPnm00a    classical NPB matrix, IAU 2000A
+**     eraBnp2xy    extract CIP X,Y from the BPN matrix
+**     eraS00       the CIO locator s, given X,Y, IAU 2000A
+**
+**  References:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3], x, y, s;
+
+
+/* Bias-precession-nutation-matrix, IAU 2000A. */
+   eraPnm00a(date1, date2, rbpn);
+
+/* Extract the CIP coordinates. */
+   eraBpn2xy(rbpn, &x, &y);
+
+/* Compute the CIO locator s, given the CIP coordinates. */
+   s = eraS00(date1, date2, x, y);
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s00b.c	(revision 18732)
@@ -0,0 +1,152 @@
+#include "erfa.h"
+
+double eraS00b(double date1, double date2)
+/*
+**  - - - - - - - -
+**   e r a S 0 0 b
+**  - - - - - - - -
+**
+**  The CIO locator s, positioning the Celestial Intermediate Origin on
+**  the equator of the Celestial Intermediate Pole, using the IAU 2000B
+**  precession-nutation model.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    the CIO locator s in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The CIO locator s is the difference between the right ascensions
+**     of the same point in two systems.  The two systems are the GCRS
+**     and the CIP,CIO, and the point is the ascending node of the
+**     CIP equator.  The CIO locator s remains a small fraction of
+**     1 arcsecond throughout 1900-2100.
+**
+**  3) The series used to compute s is in fact for s+XY/2, where X and Y
+**     are the x and y components of the CIP unit vector;  this series
+**     is more compact than a direct series for s would be.  The present
+**     function uses the IAU 2000B truncated nutation model when
+**     predicting the CIP position.  The function eraS00a uses instead
+**     the full IAU 2000A model, but with no significant increase in
+**     accuracy and at some cost in speed.
+**
+**  Called:
+**     eraPnm00b    classical NPB matrix, IAU 2000B
+**     eraBnp2xy    extract CIP X,Y from the BPN matrix
+**     eraS00       the CIO locator s, given X,Y, IAU 2000A
+**
+**  References:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3], x, y, s;
+
+
+/* Bias-precession-nutation-matrix, IAU 2000B. */
+   eraPnm00b(date1, date2, rbpn);
+
+/* Extract the CIP coordinates. */
+   eraBpn2xy(rbpn, &x, &y);
+
+/* Compute the CIO locator s, given the CIP coordinates. */
+   s = eraS00(date1, date2, x, y);
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s06.c	(revision 18732)
@@ -0,0 +1,377 @@
+#include "erfa.h"
+
+double eraS06(double date1, double date2, double x, double y)
+/*
+**  - - - - - - -
+**   e r a S 0 6
+**  - - - - - - -
+**
+**  The CIO locator s, positioning the Celestial Intermediate Origin on
+**  the equator of the Celestial Intermediate Pole, given the CIP's X,Y
+**  coordinates.  Compatible with IAU 2006/2000A precession-nutation.
+**
+**  Given:
+**     date1,date2   double    TT as a 2-part Julian Date (Note 1)
+**     x,y           double    CIP coordinates (Note 3)
+**
+**  Returned (function value):
+**                   double    the CIO locator s in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The CIO locator s is the difference between the right ascensions
+**     of the same point in two systems:  the two systems are the GCRS
+**     and the CIP,CIO, and the point is the ascending node of the
+**     CIP equator.  The quantity s remains below 0.1 arcsecond
+**     throughout 1900-2100.
+**
+**  3) The series used to compute s is in fact for s+XY/2, where X and Y
+**     are the x and y components of the CIP unit vector;  this series
+**     is more compact than a direct series for s would be.  This
+**     function requires X,Y to be supplied by the caller, who is
+**     responsible for providing values that are consistent with the
+**     supplied date.
+**
+**  4) The model is consistent with the "P03" precession (Capitaine et
+**     al. 2003), adopted by IAU 2006 Resolution 1, 2006, and the
+**     IAU 2000A nutation (with P03 adjustments).
+**
+**  Called:
+**     eraFal03     mean anomaly of the Moon
+**     eraFalp03    mean anomaly of the Sun
+**     eraFaf03     mean argument of the latitude of the Moon
+**     eraFad03     mean elongation of the Moon from the Sun
+**     eraFaom03    mean longitude of the Moon's ascending node
+**     eraFave03    mean longitude of Venus
+**     eraFae03     mean longitude of Earth
+**     eraFapa03    general accumulated precession in longitude
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron.
+**     Astrophys. 432, 355
+**
+**     McCarthy, D.D., Petit, G. (eds.) 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Time since J2000.0, in Julian centuries */
+   double t;
+
+/* Miscellaneous */
+   int i, j;
+   double a, w0, w1, w2, w3, w4, w5;
+
+/* Fundamental arguments */
+   double fa[8];
+
+/* Returned value */
+   double s;
+
+/* --------------------- */
+/* The series for s+XY/2 */
+/* --------------------- */
+
+   typedef struct {
+      int nfa[8];      /* coefficients of l,l',F,D,Om,LVe,LE,pA */
+      double s, c;     /* sine and cosine coefficients */
+   } TERM;
+
+/* Polynomial coefficients */
+   static const double sp[] = {
+
+   /* 1-6 */
+          94.00e-6,
+        3808.65e-6,
+        -122.68e-6,
+      -72574.11e-6,
+          27.98e-6,
+          15.62e-6
+   };
+
+/* Terms of order t^0 */
+   static const TERM s0[] = {
+
+   /* 1-10 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0}, -2640.73e-6,   0.39e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},   -63.53e-6,   0.02e-6 },
+      {{ 0,  0,  2, -2,  3,  0,  0,  0},   -11.75e-6,  -0.01e-6 },
+      {{ 0,  0,  2, -2,  1,  0,  0,  0},   -11.21e-6,  -0.01e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},     4.57e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  3,  0,  0,  0},    -2.02e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  1,  0,  0,  0},    -1.98e-6,   0.00e-6 },
+      {{ 0,  0,  0,  0,  3,  0,  0,  0},     1.72e-6,   0.00e-6 },
+      {{ 0,  1,  0,  0,  1,  0,  0,  0},     1.41e-6,   0.01e-6 },
+      {{ 0,  1,  0,  0, -1,  0,  0,  0},     1.26e-6,   0.01e-6 },
+
+   /* 11-20 */
+      {{ 1,  0,  0,  0, -1,  0,  0,  0},     0.63e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0,  1,  0,  0,  0},     0.63e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  3,  0,  0,  0},    -0.46e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  1,  0,  0,  0},    -0.45e-6,   0.00e-6 },
+      {{ 0,  0,  4, -4,  4,  0,  0,  0},    -0.36e-6,   0.00e-6 },
+      {{ 0,  0,  1, -1,  1, -8, 12,  0},     0.24e-6,   0.12e-6 },
+      {{ 0,  0,  2,  0,  0,  0,  0,  0},    -0.32e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},    -0.28e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  3,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  1,  0,  0,  0},    -0.26e-6,   0.00e-6 },
+
+   /* 21-30 */
+      {{ 0,  0,  2, -2,  0,  0,  0,  0},     0.21e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -3,  0,  0,  0},    -0.19e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -1,  0,  0,  0},    -0.18e-6,   0.00e-6 },
+      {{ 0,  0,  0,  0,  0,  8,-13, -1},     0.10e-6,  -0.05e-6 },
+      {{ 0,  0,  0,  2,  0,  0,  0,  0},    -0.15e-6,   0.00e-6 },
+      {{ 2,  0, -2,  0, -1,  0,  0,  0},     0.14e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  2,  0,  0,  0},     0.14e-6,   0.00e-6 },
+      {{ 1,  0,  0, -2,  1,  0,  0,  0},    -0.14e-6,   0.00e-6 },
+      {{ 1,  0,  0, -2, -1,  0,  0,  0},    -0.14e-6,   0.00e-6 },
+      {{ 0,  0,  4, -2,  4,  0,  0,  0},    -0.13e-6,   0.00e-6 },
+
+   /* 31-33 */
+      {{ 0,  0,  2, -2,  4,  0,  0,  0},     0.11e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -3,  0,  0,  0},    -0.11e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -1,  0,  0,  0},    -0.11e-6,   0.00e-6 }
+   };
+
+/* Terms of order t^1 */
+   static const TERM s1[] = {
+
+   /* 1 - 3 */
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},    -0.07e-6,   3.57e-6 },
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},     1.73e-6,  -0.03e-6 },
+      {{ 0,  0,  2, -2,  3,  0,  0,  0},     0.00e-6,   0.48e-6 }
+   };
+
+/* Terms of order t^2 */
+   static const TERM s2[] = {
+
+   /* 1-10 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},   743.52e-6,  -0.17e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},    56.91e-6,   0.06e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},     9.84e-6,  -0.01e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},    -8.85e-6,   0.01e-6 },
+      {{ 0,  1,  0,  0,  0,  0,  0,  0},    -6.38e-6,  -0.05e-6 },
+      {{ 1,  0,  0,  0,  0,  0,  0,  0},    -3.07e-6,   0.00e-6 },
+      {{ 0,  1,  2, -2,  2,  0,  0,  0},     2.23e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  1,  0,  0,  0},     1.67e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  2,  0,  0,  0},     1.30e-6,   0.00e-6 },
+      {{ 0,  1, -2,  2, -2,  0,  0,  0},     0.93e-6,   0.00e-6 },
+
+   /* 11-20 */
+      {{ 1,  0,  0, -2,  0,  0,  0,  0},     0.68e-6,   0.00e-6 },
+      {{ 0,  0,  2, -2,  1,  0,  0,  0},    -0.55e-6,   0.00e-6 },
+      {{ 1,  0, -2,  0, -2,  0,  0,  0},     0.53e-6,   0.00e-6 },
+      {{ 0,  0,  0,  2,  0,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0,  1,  0,  0,  0},    -0.27e-6,   0.00e-6 },
+      {{ 1,  0, -2, -2, -2,  0,  0,  0},    -0.26e-6,   0.00e-6 },
+      {{ 1,  0,  0,  0, -1,  0,  0,  0},    -0.25e-6,   0.00e-6 },
+      {{ 1,  0,  2,  0,  1,  0,  0,  0},     0.22e-6,   0.00e-6 },
+      {{ 2,  0,  0, -2,  0,  0,  0,  0},    -0.21e-6,   0.00e-6 },
+      {{ 2,  0, -2,  0, -1,  0,  0,  0},     0.20e-6,   0.00e-6 },
+
+   /* 21-25 */
+      {{ 0,  0,  2,  2,  2,  0,  0,  0},     0.17e-6,   0.00e-6 },
+      {{ 2,  0,  2,  0,  2,  0,  0,  0},     0.13e-6,   0.00e-6 },
+      {{ 2,  0,  0,  0,  0,  0,  0,  0},    -0.13e-6,   0.00e-6 },
+      {{ 1,  0,  2, -2,  2,  0,  0,  0},    -0.12e-6,   0.00e-6 },
+      {{ 0,  0,  2,  0,  0,  0,  0,  0},    -0.11e-6,   0.00e-6 }
+   };
+
+/* Terms of order t^3 */
+   static const TERM s3[] = {
+
+   /* 1-4 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},     0.30e-6, -23.42e-6 },
+      {{ 0,  0,  2, -2,  2,  0,  0,  0},    -0.03e-6,  -1.46e-6 },
+      {{ 0,  0,  2,  0,  2,  0,  0,  0},    -0.01e-6,  -0.25e-6 },
+      {{ 0,  0,  0,  0,  2,  0,  0,  0},     0.00e-6,   0.23e-6 }
+   };
+
+/* Terms of order t^4 */
+   static const TERM s4[] = {
+
+   /* 1-1 */
+      {{ 0,  0,  0,  0,  1,  0,  0,  0},    -0.26e-6,  -0.01e-6 }
+   };
+
+/* Number of terms in the series */
+   static const int NS0 = (int) (sizeof s0 / sizeof (TERM));
+   static const int NS1 = (int) (sizeof s1 / sizeof (TERM));
+   static const int NS2 = (int) (sizeof s2 / sizeof (TERM));
+   static const int NS3 = (int) (sizeof s3 / sizeof (TERM));
+   static const int NS4 = (int) (sizeof s4 / sizeof (TERM));
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental epoch J2000.0 and current date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Fundamental Arguments (from IERS Conventions 2003) */
+
+/* Mean anomaly of the Moon. */
+   fa[0] = eraFal03(t);
+
+/* Mean anomaly of the Sun. */
+   fa[1] = eraFalp03(t);
+
+/* Mean longitude of the Moon minus that of the ascending node. */
+   fa[2] = eraFaf03(t);
+
+/* Mean elongation of the Moon from the Sun. */
+   fa[3] = eraFad03(t);
+
+/* Mean longitude of the ascending node of the Moon. */
+   fa[4] = eraFaom03(t);
+
+/* Mean longitude of Venus. */
+   fa[5] = eraFave03(t);
+
+/* Mean longitude of Earth. */
+   fa[6] = eraFae03(t);
+
+/* General precession in longitude. */
+   fa[7] = eraFapa03(t);
+
+/* Evaluate s. */
+   w0 = sp[0];
+   w1 = sp[1];
+   w2 = sp[2];
+   w3 = sp[3];
+   w4 = sp[4];
+   w5 = sp[5];
+
+   for (i = NS0-1; i >= 0; i--) {
+   a = 0.0;
+   for (j = 0; j < 8; j++) {
+      a += (double)s0[i].nfa[j] * fa[j];
+   }
+   w0 += s0[i].s * sin(a) + s0[i].c * cos(a);
+   }
+
+   for (i = NS1-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)s1[i].nfa[j] * fa[j];
+      }
+      w1 += s1[i].s * sin(a) + s1[i].c * cos(a);
+   }
+
+   for (i = NS2-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)s2[i].nfa[j] * fa[j];
+      }
+      w2 += s2[i].s * sin(a) + s2[i].c * cos(a);
+   }
+
+   for (i = NS3-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)s3[i].nfa[j] * fa[j];
+      }
+      w3 += s3[i].s * sin(a) + s3[i].c * cos(a);
+   }
+
+   for (i = NS4-1; i >= 0; i--) {
+      a = 0.0;
+      for (j = 0; j < 8; j++) {
+         a += (double)s4[i].nfa[j] * fa[j];
+      }
+      w4 += s4[i].s * sin(a) + s4[i].c * cos(a);
+   }
+
+   s = (w0 +
+       (w1 +
+       (w2 +
+       (w3 +
+       (w4 +
+        w5 * t) * t) * t) * t) * t) * ERFA_DAS2R - x*y/2.0;
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s06a.c	(revision 18732)
@@ -0,0 +1,154 @@
+#include "erfa.h"
+
+double eraS06a(double date1, double date2)
+/*
+**  - - - - - - - -
+**   e r a S 0 6 a
+**  - - - - - - - -
+**
+**  The CIO locator s, positioning the Celestial Intermediate Origin on
+**  the equator of the Celestial Intermediate Pole, using the IAU 2006
+**  precession and IAU 2000A nutation models.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    the CIO locator s in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The CIO locator s is the difference between the right ascensions
+**     of the same point in two systems.  The two systems are the GCRS
+**     and the CIP,CIO, and the point is the ascending node of the
+**     CIP equator.  The CIO locator s remains a small fraction of
+**     1 arcsecond throughout 1900-2100.
+**
+**  3) The series used to compute s is in fact for s+XY/2, where X and Y
+**     are the x and y components of the CIP unit vector;  this series is
+**     more compact than a direct series for s would be.  The present
+**     function uses the full IAU 2000A nutation model when predicting
+**     the CIP position.
+**
+**  Called:
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**
+**  References:
+**
+**     Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
+**     "Expressions for the Celestial Intermediate Pole and Celestial
+**     Ephemeris Origin consistent with the IAU 2000A precession-
+**     nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
+**
+**     n.b. The celestial ephemeris origin (CEO) was renamed "celestial
+**          intermediate origin" (CIO) by IAU 2006 Resolution 2.
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rnpb[3][3], x, y, s;
+
+
+/* Bias-precession-nutation-matrix, IAU 20006/2000A. */
+   eraPnm06a(date1, date2, rnpb);
+
+/* Extract the CIP coordinates. */
+   eraBpn2xy(rnpb, &x, &y);
+
+/* Compute the CIO locator s, given the CIP coordinates. */
+   s = eraS06(date1, date2, x, y);
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s2c.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s2c.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s2c.c	(revision 18732)
@@ -0,0 +1,94 @@
+#include "erfa.h"
+
+void eraS2c(double theta, double phi, double c[3])
+/*
+**  - - - - - - -
+**   e r a S 2 c
+**  - - - - - - -
+**
+**  Convert spherical coordinates to Cartesian.
+**
+**  Given:
+**     theta    double       longitude angle (radians)
+**     phi      double       latitude angle (radians)
+**
+**  Returned:
+**     c        double[3]    direction cosines
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double cp;
+
+
+   cp = cos(phi);
+   c[0] = cos(theta) * cp;
+   c[1] = sin(theta) * cp;
+   c[2] = sin(phi);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s2p.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s2p.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s2p.c	(revision 18732)
@@ -0,0 +1,97 @@
+#include "erfa.h"
+
+void eraS2p(double theta, double phi, double r, double p[3])
+/*
+**  - - - - - - -
+**   e r a S 2 p
+**  - - - - - - -
+**
+**  Convert spherical polar coordinates to p-vector.
+**
+**  Given:
+**     theta   double       longitude angle (radians)
+**     phi     double       latitude angle (radians)
+**     r       double       radial distance
+**
+**  Returned:
+**     p       double[3]    Cartesian coordinates
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraSxp       multiply p-vector by scalar
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double u[3];
+
+
+   eraS2c(theta, phi, u);
+   eraSxp(r, u, p);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s2pv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s2pv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s2pv.c	(revision 18732)
@@ -0,0 +1,112 @@
+#include "erfa.h"
+
+void eraS2pv(double theta, double phi, double r,
+             double td, double pd, double rd,
+             double pv[2][3])
+/*
+**  - - - - - - - -
+**   e r a S 2 p v
+**  - - - - - - - -
+**
+**  Convert position/velocity from spherical to Cartesian coordinates.
+**
+**  Given:
+**     theta    double          longitude angle (radians)
+**     phi      double          latitude angle (radians)
+**     r        double          radial distance
+**     td       double          rate of change of theta
+**     pd       double          rate of change of phi
+**     rd       double          rate of change of r
+**
+**  Returned:
+**     pv       double[2][3]    pv-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double st, ct, sp, cp, rcp, x, y, rpd, w;
+
+
+   st = sin(theta);
+   ct = cos(theta);
+   sp = sin(phi);
+   cp = cos(phi);
+   rcp = r * cp;
+   x = rcp * ct;
+   y = rcp * st;
+   rpd = r * pd;
+   w = rpd*sp - cp*rd;
+
+   pv[0][0] = x;
+   pv[0][1] = y;
+   pv[0][2] = r * sp;
+   pv[1][0] = -y*td - w*ct;
+   pv[1][1] =  x*td - w*st;
+   pv[1][2] = rpd*cp + sp*rd;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/s2xpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/s2xpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/s2xpv.c	(revision 18732)
@@ -0,0 +1,96 @@
+#include "erfa.h"
+
+void eraS2xpv(double s1, double s2, double pv[2][3], double spv[2][3])
+/*
+**  - - - - - - - - -
+**   e r a S 2 x p v
+**  - - - - - - - - -
+**
+**  Multiply a pv-vector by two scalars.
+**
+**  Given:
+**     s1     double         scalar to multiply position component by
+**     s2     double         scalar to multiply velocity component by
+**     pv     double[2][3]   pv-vector
+**
+**  Returned:
+**     spv    double[2][3]   pv-vector: p scaled by s1, v scaled by s2
+**
+**  Note:
+**     It is permissible for pv and spv to be the same array.
+**
+**  Called:
+**     eraSxp       multiply p-vector by scalar
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraSxp(s1, pv[0], spv[0]);
+   eraSxp(s2, pv[1], spv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/sepp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/sepp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/sepp.c	(revision 18732)
@@ -0,0 +1,114 @@
+#include "erfa.h"
+
+double eraSepp(double a[3], double b[3])
+/*
+**  - - - - - - - -
+**   e r a S e p p
+**  - - - - - - - -
+**
+**  Angular separation between two p-vectors.
+**
+**  Given:
+**     a      double[3]    first p-vector (not necessarily unit length)
+**     b      double[3]    second p-vector (not necessarily unit length)
+**
+**  Returned (function value):
+**            double       angular separation (radians, always positive)
+**
+**  Notes:
+**
+**  1) If either vector is null, a zero result is returned.
+**
+**  2) The angular separation is most simply formulated in terms of
+**     scalar product.  However, this gives poor accuracy for angles
+**     near zero and pi.  The present algorithm uses both cross product
+**     and dot product, to deliver full accuracy whatever the size of
+**     the angle.
+**
+**  Called:
+**     eraPxp       vector product of two p-vectors
+**     eraPm        modulus of p-vector
+**     eraPdp       scalar product of two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double axb[3], ss, cs, s;
+
+
+/* Sine of angle between the vectors, multiplied by the two moduli. */
+   eraPxp(a, b, axb);
+   ss = eraPm(axb);
+
+/* Cosine of the angle, multiplied by the two moduli. */
+   cs = eraPdp(a, b);
+
+/* The angle. */
+   s = ((ss != 0.0) || (cs != 0.0)) ? atan2(ss, cs) : 0.0;
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/seps.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/seps.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/seps.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+double eraSeps(double al, double ap, double bl, double bp)
+/*
+**  - - - - - - - -
+**   e r a S e p s
+**  - - - - - - - -
+**
+**  Angular separation between two sets of spherical coordinates.
+**
+**  Given:
+**     al     double       first longitude (radians)
+**     ap     double       first latitude (radians)
+**     bl     double       second longitude (radians)
+**     bp     double       second latitude (radians)
+**
+**  Returned (function value):
+**            double       angular separation (radians)
+**
+**  Called:
+**     eraS2c       spherical coordinates to unit vector
+**     eraSepp      angular separation between two p-vectors
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double ac[3], bc[3], s;
+
+
+/* Spherical to Cartesian. */
+   eraS2c(al, ap, ac);
+   eraS2c(bl, bp, bc);
+
+/* Angle between the vectors. */
+   s = eraSepp(ac, bc);
+
+   return s;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/sp00.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/sp00.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/sp00.c	(revision 18732)
@@ -0,0 +1,127 @@
+#include "erfa.h"
+
+double eraSp00(double date1, double date2)
+/*
+**  - - - - - - - -
+**   e r a S p 0 0
+**  - - - - - - - -
+**
+**  The TIO locator s', positioning the Terrestrial Intermediate Origin
+**  on the equator of the Celestial Intermediate Pole.
+**
+**  Given:
+**     date1,date2  double    TT as a 2-part Julian Date (Note 1)
+**
+**  Returned (function value):
+**                  double    the TIO locator s' in radians (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The TIO locator s' is obtained from polar motion observations by
+**     numerical integration, and so is in essence unpredictable.
+**     However, it is dominated by a secular drift of about
+**     47 microarcseconds per century, which is the approximation
+**     evaluated by the present function.
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double t, sp;
+
+
+/* Interval between fundamental epoch J2000.0 and current date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Approximate s'. */
+   sp = -47e-6 * t * ERFA_DAS2R;
+
+   return sp;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/starpm.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/starpm.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/starpm.c	(revision 18732)
@@ -0,0 +1,214 @@
+#include "erfa.h"
+
+int eraStarpm(double ra1, double dec1,
+              double pmr1, double pmd1, double px1, double rv1,
+              double ep1a, double ep1b, double ep2a, double ep2b,
+              double *ra2, double *dec2,
+              double *pmr2, double *pmd2, double *px2, double *rv2)
+/*
+**  - - - - - - - - - -
+**   e r a S t a r p m
+**  - - - - - - - - - -
+**
+**  Star proper motion:  update star catalog data for space motion.
+**
+**  Given:
+**     ra1    double     right ascension (radians), before
+**     dec1   double     declination (radians), before
+**     pmr1   double     RA proper motion (radians/year), before
+**     pmd1   double     Dec proper motion (radians/year), before
+**     px1    double     parallax (arcseconds), before
+**     rv1    double     radial velocity (km/s, +ve = receding), before
+**     ep1a   double     "before" epoch, part A (Note 1)
+**     ep1b   double     "before" epoch, part B (Note 1)
+**     ep2a   double     "after" epoch, part A (Note 1)
+**     ep2b   double     "after" epoch, part B (Note 1)
+**
+**  Returned:
+**     ra2    double     right ascension (radians), after
+**     dec2   double     declination (radians), after
+**     pmr2   double     RA proper motion (radians/year), after
+**     pmd2   double     Dec proper motion (radians/year), after
+**     px2    double     parallax (arcseconds), after
+**     rv2    double     radial velocity (km/s, +ve = receding), after
+**
+**  Returned (function value):
+**            int        status:
+**                          -1 = system error (should not occur)
+**                           0 = no warnings or errors
+**                           1 = distance overridden (Note 6)
+**                           2 = excessive velocity (Note 7)
+**                           4 = solution didn't converge (Note 8)
+**                        else = binary logical OR of the above warnings
+**
+**  Notes:
+**
+**  1) The starting and ending TDB dates ep1a+ep1b and ep2a+ep2b are
+**     Julian Dates, apportioned in any convenient way between the two
+**     parts (A and B).  For example, JD(TDB)=2450123.7 could be
+**     expressed in any of these ways, among others:
+**
+**             epna          epnb
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) In accordance with normal star-catalog conventions, the object's
+**     right ascension and declination are freed from the effects of
+**     secular aberration.  The frame, which is aligned to the catalog
+**     equator and equinox, is Lorentzian and centered on the SSB.
+**
+**     The proper motions are the rate of change of the right ascension
+**     and declination at the catalog epoch and are in radians per TDB
+**     Julian year.
+**
+**     The parallax and radial velocity are in the same frame.
+**
+**  3) Care is needed with units.  The star coordinates are in radians
+**     and the proper motions in radians per Julian year, but the
+**     parallax is in arcseconds.
+**
+**  4) The RA proper motion is in terms of coordinate angle, not true
+**     angle.  If the catalog uses arcseconds for both RA and Dec proper
+**     motions, the RA proper motion will need to be divided by cos(Dec)
+**     before use.
+**
+**  5) Straight-line motion at constant speed, in the inertial frame,
+**     is assumed.
+**
+**  6) An extremely small (or zero or negative) parallax is interpreted
+**     to mean that the object is on the "celestial sphere", the radius
+**     of which is an arbitrary (large) value (see the eraStarpv
+**     function for the value used).  When the distance is overridden in
+**     this way, the status, initially zero, has 1 added to it.
+**
+**  7) If the space velocity is a significant fraction of c (see the
+**     constant VMAX in the function eraStarpv), it is arbitrarily set
+**     to zero.  When this action occurs, 2 is added to the status.
+**
+**  8) The relativistic adjustment carried out in the eraStarpv function
+**     involves an iterative calculation.  If the process fails to
+**     converge within a set number of iterations, 4 is added to the
+**     status.
+**
+**  Called:
+**     eraStarpv    star catalog data to space motion pv-vector
+**     eraPvu       update a pv-vector
+**     eraPdp       scalar product of two p-vectors
+**     eraPvstar    space motion pv-vector to star catalog data
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double pv1[2][3], tl1, dt, pv[2][3], r2, rdv, v2, c2mv2, tl2,
+          pv2[2][3];
+   int j1, j2, j;
+
+
+/* RA,Dec etc. at the "before" epoch to space motion pv-vector. */
+   j1 = eraStarpv(ra1, dec1, pmr1, pmd1, px1, rv1, pv1);
+
+/* Light time when observed (days). */
+   tl1 = eraPm(pv1[0]) / ERFA_DC;
+
+/* Time interval, "before" to "after" (days). */
+   dt = (ep2a - ep1a) + (ep2b - ep1b);
+
+/* Move star along track from the "before" observed position to the */
+/* "after" geometric position. */
+   eraPvu(dt + tl1, pv1, pv);
+
+/* From this geometric position, deduce the observed light time (days) */
+/* at the "after" epoch (with theoretically unneccessary error check). */
+   r2 = eraPdp(pv[0], pv[0]);
+   rdv = eraPdp(pv[0], pv[1]);
+   v2 = eraPdp(pv[1], pv[1]);
+   c2mv2 = ERFA_DC*ERFA_DC - v2;
+   if (c2mv2 <=  0) return -1;
+   tl2 = (-rdv + sqrt(rdv*rdv + c2mv2*r2)) / c2mv2;
+
+/* Move the position along track from the observed place at the */
+/* "before" epoch to the observed place at the "after" epoch. */
+   eraPvu(dt + (tl1 - tl2), pv1, pv2);
+
+/* Space motion pv-vector to RA,Dec etc. at the "after" epoch. */
+   j2 = eraPvstar(pv2, ra2, dec2, pmr2, pmd2, px2, rv2);
+
+/* Final status. */
+   j = (j2 == 0) ? j1 : -1;
+
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/starpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/starpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/starpv.c	(revision 18732)
@@ -0,0 +1,273 @@
+#include "erfa.h"
+
+int eraStarpv(double ra, double dec,
+              double pmr, double pmd, double px, double rv,
+              double pv[2][3])
+/*
+**  - - - - - - - - - -
+**   e r a S t a r p v
+**  - - - - - - - - - -
+**
+**  Convert star catalog coordinates to position+velocity vector.
+**
+**  Given (Note 1):
+**     ra     double        right ascension (radians)
+**     dec    double        declination (radians)
+**     pmr    double        RA proper motion (radians/year)
+**     pmd    double        Dec proper motion (radians/year)
+**     px     double        parallax (arcseconds)
+**     rv     double        radial velocity (km/s, positive = receding)
+**
+**  Returned (Note 2):
+**     pv     double[2][3]  pv-vector (AU, AU/day)
+**
+**  Returned (function value):
+**            int           status:
+**                              0 = no warnings
+**                              1 = distance overridden (Note 6)
+**                              2 = excessive speed (Note 7)
+**                              4 = solution didn't converge (Note 8)
+**                           else = binary logical OR of the above
+**
+**  Notes:
+**
+**  1) The star data accepted by this function are "observables" for an
+**     imaginary observer at the solar-system barycenter.  Proper motion
+**     and radial velocity are, strictly, in terms of barycentric
+**     coordinate time, TCB.  For most practical applications, it is
+**     permissible to neglect the distinction between TCB and ordinary
+**     "proper" time on Earth (TT/TAI).  The result will, as a rule, be
+**     limited by the intrinsic accuracy of the proper-motion and
+**     radial-velocity data;  moreover, the pv-vector is likely to be
+**     merely an intermediate result, so that a change of time unit
+**     would cancel out overall.
+**
+**     In accordance with normal star-catalog conventions, the object's
+**     right ascension and declination are freed from the effects of
+**     secular aberration.  The frame, which is aligned to the catalog
+**     equator and equinox, is Lorentzian and centered on the SSB.
+**
+**  2) The resulting position and velocity pv-vector is with respect to
+**     the same frame and, like the catalog coordinates, is freed from
+**     the effects of secular aberration.  Should the "coordinate
+**     direction", where the object was located at the catalog epoch, be
+**     required, it may be obtained by calculating the magnitude of the
+**     position vector pv[0][0-2] dividing by the speed of light in
+**     AU/day to give the light-time, and then multiplying the space
+**     velocity pv[1][0-2] by this light-time and adding the result to
+**     pv[0][0-2].
+**
+**     Summarizing, the pv-vector returned is for most stars almost
+**     identical to the result of applying the standard geometrical
+**     "space motion" transformation.  The differences, which are the
+**     subject of the Stumpff paper referenced below, are:
+**
+**     (i) In stars with significant radial velocity and proper motion,
+**     the constantly changing light-time distorts the apparent proper
+**     motion.  Note that this is a classical, not a relativistic,
+**     effect.
+**
+**     (ii) The transformation complies with special relativity.
+**
+**  3) Care is needed with units.  The star coordinates are in radians
+**     and the proper motions in radians per Julian year, but the
+**     parallax is in arcseconds; the radial velocity is in km/s, but
+**     the pv-vector result is in AU and AU/day.
+**
+**  4) The RA proper motion is in terms of coordinate angle, not true
+**     angle.  If the catalog uses arcseconds for both RA and Dec proper
+**     motions, the RA proper motion will need to be divided by cos(Dec)
+**     before use.
+**
+**  5) Straight-line motion at constant speed, in the inertial frame,
+**     is assumed.
+**
+**  6) An extremely small (or zero or negative) parallax is interpreted
+**     to mean that the object is on the "celestial sphere", the radius
+**     of which is an arbitrary (large) value (see the constant PXMIN).
+**     When the distance is overridden in this way, the status,
+**     initially zero, has 1 added to it.
+**
+**  7) If the space velocity is a significant fraction of c (see the
+**     constant VMAX), it is arbitrarily set to zero.  When this action
+**     occurs, 2 is added to the status.
+**
+**  8) The relativistic adjustment involves an iterative calculation.
+**     If the process fails to converge within a set number (IMAX) of
+**     iterations, 4 is added to the status.
+**
+**  9) The inverse transformation is performed by the function
+**     eraPvstar.
+**
+**  Called:
+**     eraS2pv      spherical coordinates to pv-vector
+**     eraPm        modulus of p-vector
+**     eraZp        zero p-vector
+**     eraPn        decompose p-vector into modulus and direction
+**     eraPdp       scalar product of two p-vectors
+**     eraSxp       multiply p-vector by scalar
+**     eraPmp       p-vector minus p-vector
+**     eraPpp       p-vector plus p-vector
+**
+**  Reference:
+**
+**     Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+/* Smallest allowed parallax */
+   static const double PXMIN = 1e-7;
+
+/* Largest allowed speed (fraction of c) */
+   static const double VMAX = 0.5;
+
+/* Maximum number of iterations for relativistic solution */
+   static const int IMAX = 100;
+
+   int i, iwarn;
+   double w, r, rd, rad, decd, v, x[3], usr[3], ust[3],
+          vsr, vst, betst, betsr, bett, betr,
+          dd, ddel, ur[3], ut[3],
+          d = 0.0, del = 0.0,       /* to prevent */
+          odd = 0.0, oddel = 0.0,   /* compiler   */
+          od = 0.0, odel = 0.0;     /* warnings   */
+
+
+/* Distance (AU). */
+   if (px >= PXMIN) {
+      w = px;
+      iwarn = 0;
+   } else {
+      w = PXMIN;
+      iwarn = 1;
+   }
+   r = ERFA_DR2AS / w;
+
+/* Radial velocity (AU/day). */
+   rd = ERFA_DAYSEC * rv * 1e3 / ERFA_DAU;
+
+/* Proper motion (radian/day). */
+   rad = pmr / ERFA_DJY;
+   decd = pmd / ERFA_DJY;
+
+/* To pv-vector (AU,AU/day). */
+   eraS2pv(ra, dec, r, rad, decd, rd, pv);
+
+/* If excessive velocity, arbitrarily set it to zero. */
+   v = eraPm(pv[1]);
+   if (v / ERFA_DC > VMAX) {
+      eraZp(pv[1]);
+      iwarn += 2;
+   }
+
+/* Isolate the radial component of the velocity (AU/day). */
+   eraPn(pv[0], &w, x);
+   vsr = eraPdp(x, pv[1]);
+   eraSxp(vsr, x, usr);
+
+/* Isolate the transverse component of the velocity (AU/day). */
+   eraPmp(pv[1], usr, ust);
+   vst = eraPm(ust);
+
+/* Special-relativity dimensionless parameters. */
+   betsr = vsr / ERFA_DC;
+   betst = vst / ERFA_DC;
+
+/* Determine the inertial-to-observed relativistic correction terms. */
+   bett = betst;
+   betr = betsr;
+   for (i = 0; i < IMAX; i++) {
+      d = 1.0 + betr;
+      del = sqrt(1.0 - betr*betr - bett*bett) - 1.0;
+      betr = d * betsr + del;
+      bett = d * betst;
+      if (i > 0) {
+         dd = fabs(d - od);
+         ddel = fabs(del - odel);
+         if ((i > 1) && (dd >= odd) && (ddel >= oddel)) break;
+         odd = dd;
+         oddel = ddel;
+      }
+      od = d;
+      odel = del;
+   }
+   if (i >= IMAX) iwarn += 4;
+
+/* Replace observed radial velocity with inertial value. */
+   w = (betsr != 0.0) ? d + del / betsr : 1.0;
+   eraSxp(w, usr, ur);
+
+/* Replace observed tangential velocity with inertial value. */
+   eraSxp(d, ust, ut);
+
+/* Combine the two to obtain the inertial space velocity. */
+   eraPpp(ur, ut, pv[1]);
+
+/* Return the status. */
+   return iwarn;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/sxp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/sxp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/sxp.c	(revision 18732)
@@ -0,0 +1,93 @@
+#include "erfa.h"
+
+void eraSxp(double s, double p[3], double sp[3])
+/*
+**  - - - - - - -
+**   e r a S x p
+**  - - - - - - -
+**
+**  Multiply a p-vector by a scalar.
+**
+**  Given:
+**     s      double        scalar
+**     p      double[3]     p-vector
+**
+**  Returned:
+**     sp     double[3]     s * p
+**
+**  Note:
+**     It is permissible for p and sp to be the same array.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   sp[0] = s * p[0];
+   sp[1] = s * p[1];
+   sp[2] = s * p[2];
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/sxpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/sxpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/sxpv.c	(revision 18732)
@@ -0,0 +1,94 @@
+#include "erfa.h"
+
+void eraSxpv(double s, double pv[2][3], double spv[2][3])
+/*
+**  - - - - - - - -
+**   e r a S x p v
+**  - - - - - - - -
+**
+**  Multiply a pv-vector by a scalar.
+**
+**  Given:
+**     s       double          scalar
+**     pv      double[2][3]    pv-vector
+**
+**  Returned:
+**     spv     double[2][3]    s * pv
+**
+**  Note:
+**     It is permissible for pv and spv to be the same array
+**
+**  Called:
+**     eraS2xpv     multiply pv-vector by two scalars
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraS2xpv(s, s, pv, spv);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/t_erfa_c.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/t_erfa_c.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/t_erfa_c.c	(revision 18732)
@@ -0,0 +1,9742 @@
+#include <stdio.h>
+#include <erfa.h>
+
+static int verbose = 0;
+
+/*
+**  - - - - - - - - -
+**   t _ e r f a _ c
+**  - - - - - - - - -
+**
+**  Validate the ERFA C functions.
+**
+**  Each ERFA function is at least called and a usually quite basic test
+**  is performed.  Successful completion is signalled by a confirming
+**  message.  Failure of a given function or group of functions results
+**  in error messages.
+**
+**  All messages go to stdout.
+**
+**  This revision:  2016 July 11
+**
+*/
+
+static void viv(int ival, int ivalok,
+                const char *func, const char *test, int *status)
+/*
+**  - - - -
+**   v i v
+**  - - - -
+**
+**  Validate an integer result.
+**
+**  Internal function used by t_erfa_c program.
+**
+**  Given:
+**     ival     int          value computed by function under test
+**     ivalok   int          correct value
+**     func     char[]       name of function under test
+**     test     char[]       name of individual test
+**
+**  Given and returned:
+**     status   int          set to TRUE if test fails
+**
+**  This revision:  2013 August 7
+*/
+{
+   if (ival != ivalok) {
+      *status = 1;
+      printf("%s failed: %s want %d got %d\n",
+             func, test, ivalok, ival);
+   } else if (verbose) {
+      printf("%s passed: %s want %d got %d\n",
+                    func, test, ivalok, ival);
+   }
+
+}
+
+static void vvd(double val, double valok, double dval,
+                const char *func, const char *test, int *status)
+/*
+**  - - - -
+**   v v d
+**  - - - -
+**
+**  Validate a double result.
+**
+**  Internal function used by t_erfa_c program.
+**
+**  Given:
+**     val      double       value computed by function under test
+**     valok    double       expected value
+**     dval     double       maximum allowable error
+**     func     char[]       name of function under test
+**     test     char[]       name of individual test
+**
+**  Given and returned:
+**     status   int          set to TRUE if test fails
+**
+**  This revision:  2016 April 21
+*/
+{
+   double a, f;   /* absolute and fractional error */
+
+
+   a = val - valok;
+   if (a != 0.0 && fabs(a) > fabs(dval)) {
+      f = fabs(valok / a);
+      *status = 1;
+      printf("%s failed: %s want %.20g got %.20g (1/%.3g)\n",
+             func, test, valok, val, f);
+   } else if (verbose) {
+      printf("%s passed: %s want %.20g got %.20g\n",
+             func, test, valok, val);
+   }
+
+}
+
+static void t_a2af(int *status)
+/*
+**  - - - - - - -
+**   t _ a 2 a f
+**  - - - - - - -
+**
+**  Test eraA2af function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraA2af, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   int idmsf[4];
+   char s;
+
+
+   eraA2af(4, 2.345, &s, idmsf);
+
+   viv(s, '+', "eraA2af", "s", status);
+
+   viv(idmsf[0],  134, "eraA2af", "0", status);
+   viv(idmsf[1],   21, "eraA2af", "1", status);
+   viv(idmsf[2],   30, "eraA2af", "2", status);
+   viv(idmsf[3], 9706, "eraA2af", "3", status);
+
+}
+
+static void t_a2tf(int *status)
+/*
+**  - - - - - - -
+**   t _ a 2 t f
+**  - - - - - - -
+**
+**  Test eraA2tf function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraA2tf, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   int ihmsf[4];
+   char s;
+
+
+   eraA2tf(4, -3.01234, &s, ihmsf);
+
+   viv((int)s, '-', "eraA2tf", "s", status);
+
+   viv(ihmsf[0],   11, "eraA2tf", "0", status);
+   viv(ihmsf[1],   30, "eraA2tf", "1", status);
+   viv(ihmsf[2],   22, "eraA2tf", "2", status);
+   viv(ihmsf[3], 6484, "eraA2tf", "3", status);
+
+}
+
+static void t_ab(int *status)
+/*
+**  - - - - -
+**   t _ a b
+**  - - - - -
+**
+**  Test eraAb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAb, vvd
+**
+**  This revision:  2013 October 1
+*/
+{
+   double pnat[3], v[3], s, bm1, ppr[3];
+
+
+   pnat[0] = -0.76321968546737951;
+   pnat[1] = -0.60869453983060384;
+   pnat[2] = -0.21676408580639883;
+   v[0] =  2.1044018893653786e-5;
+   v[1] = -8.9108923304429319e-5;
+   v[2] = -3.8633714797716569e-5;
+   s = 0.99980921395708788;
+   bm1 = 0.99999999506209258;
+
+   eraAb(pnat, v, s, bm1, ppr);
+
+   vvd(ppr[0], -0.7631631094219556269, 1e-12, "eraAb", "1", status);
+   vvd(ppr[1], -0.6087553082505590832, 1e-12, "eraAb", "2", status);
+   vvd(ppr[2], -0.2167926269368471279, 1e-12, "eraAb", "3", status);
+
+}
+
+static void t_af2a(int *status)
+/*
+**  - - - - - - -
+**   t _ a f 2 a
+**  - - - - - - -
+**
+**  Test eraAf2a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAf2a, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a;
+   int j;
+
+
+   j = eraAf2a('-', 45, 13, 27.2, &a);
+
+   vvd(a, -0.7893115794313644842, 1e-12, "eraAf2a", "a", status);
+   viv(j, 0, "eraAf2a", "j", status);
+
+}
+
+static void t_anp(int *status)
+/*
+**  - - - - - -
+**   t _ a n p
+**  - - - - - -
+**
+**  Test eraAnp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAnp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraAnp(-0.1), 6.183185307179586477, 1e-12, "eraAnp", "", status);
+}
+
+static void t_anpm(int *status)
+/*
+**  - - - - - - -
+**   t _ a n p m
+**  - - - - - - -
+**
+**  Test eraAnpm function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAnpm, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraAnpm(-4.0), 2.283185307179586477, 1e-12, "eraAnpm", "", status);
+}
+
+static void t_apcg(int *status)
+/*
+**  - - - - - - -
+**   t _ a p c g
+**  - - - - - - -
+**
+**  Test eraApcg function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApcg, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, ebpv[2][3], ehp[3];
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   ebpv[0][0] =  0.901310875;
+   ebpv[0][1] = -0.417402664;
+   ebpv[0][2] = -0.180982288;
+   ebpv[1][0] =  0.00742727954;
+   ebpv[1][1] =  0.0140507459;
+   ebpv[1][2] =  0.00609045792;
+   ehp[0] =  0.903358544;
+   ehp[1] = -0.415395237;
+   ehp[2] = -0.180084014;
+
+   eraApcg(date1, date2, ebpv, ehp, &astrom);
+
+   vvd(astrom.pmt, 12.65133794027378508, 1e-11,
+                   "eraApcg", "pmt", status);
+   vvd(astrom.eb[0], 0.901310875, 1e-12,
+                     "eraApcg", "eb(1)", status);
+   vvd(astrom.eb[1], -0.417402664, 1e-12,
+                     "eraApcg", "eb(2)", status);
+   vvd(astrom.eb[2], -0.180982288, 1e-12,
+                     "eraApcg", "eb(3)", status);
+   vvd(astrom.eh[0], 0.8940025429324143045, 1e-12,
+                     "eraApcg", "eh(1)", status);
+   vvd(astrom.eh[1], -0.4110930268679817955, 1e-12,
+                     "eraApcg", "eh(2)", status);
+   vvd(astrom.eh[2], -0.1782189004872870264, 1e-12,
+                     "eraApcg", "eh(3)", status);
+   vvd(astrom.em, 1.010465295811013146, 1e-12,
+                  "eraApcg", "em", status);
+   vvd(astrom.v[0], 0.4289638897813379954e-4, 1e-16,
+                    "eraApcg", "v(1_", status);
+   vvd(astrom.v[1], 0.8115034021720941898e-4, 1e-16,
+                    "eraApcg", "v(2)", status);
+   vvd(astrom.v[2], 0.3517555123437237778e-4, 1e-16,
+                    "eraApcg", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999951686013336, 1e-12,
+                   "eraApcg", "bm1", status);
+   vvd(astrom.bpn[0][0], 1.0, 0.0,
+                         "eraApcg", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.0, 0.0,
+                         "eraApcg", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.0, 0.0,
+                         "eraApcg", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], 0.0, 0.0,
+                         "eraApcg", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 1.0, 0.0,
+                         "eraApcg", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], 0.0, 0.0,
+                         "eraApcg", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], 0.0, 0.0,
+                         "eraApcg", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.0, 0.0,
+                         "eraApcg", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 1.0, 0.0,
+                         "eraApcg", "bpn(3,3)", status);
+
+}
+
+static void t_apcg13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p c g 1 3
+**  - - - - - - - - -
+**
+**  Test eraApcg13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApcg13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2;
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+
+   eraApcg13(date1, date2, &astrom);
+
+   vvd(astrom.pmt, 12.65133794027378508, 1e-11,
+                   "eraApcg13", "pmt", status);
+   vvd(astrom.eb[0], 0.9013108747340644755, 1e-12,
+                   "eraApcg13", "eb(1)", status);
+   vvd(astrom.eb[1], -0.4174026640406119957, 1e-12,
+                   "eraApcg13", "eb(2)", status);
+   vvd(astrom.eb[2], -0.1809822877867817771, 1e-12,
+                   "eraApcg13", "eb(3)", status);
+   vvd(astrom.eh[0], 0.8940025429255499549, 1e-12,
+                   "eraApcg13", "eh(1)", status);
+   vvd(astrom.eh[1], -0.4110930268331896318, 1e-12,
+                   "eraApcg13", "eh(2)", status);
+   vvd(astrom.eh[2], -0.1782189006019749850, 1e-12,
+                   "eraApcg13", "eh(3)", status);
+   vvd(astrom.em, 1.010465295964664178, 1e-12,
+                   "eraApcg13", "em", status);
+   vvd(astrom.v[0], 0.4289638897157027528e-4, 1e-16,
+                   "eraApcg13", "v(1)", status);
+   vvd(astrom.v[1], 0.8115034002544663526e-4, 1e-16,
+                   "eraApcg13", "v(2)", status);
+   vvd(astrom.v[2], 0.3517555122593144633e-4, 1e-16,
+                   "eraApcg13", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999951686013498, 1e-12,
+                   "eraApcg13", "bm1", status);
+   vvd(astrom.bpn[0][0], 1.0, 0.0,
+                         "eraApcg13", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.0, 0.0,
+                         "eraApcg13", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.0, 0.0,
+                         "eraApcg13", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], 0.0, 0.0,
+                         "eraApcg13", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 1.0, 0.0,
+                         "eraApcg13", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], 0.0, 0.0,
+                         "eraApcg13", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], 0.0, 0.0,
+                         "eraApcg13", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.0, 0.0,
+                         "eraApcg13", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 1.0, 0.0,
+                         "eraApcg13", "bpn(3,3)", status);
+
+}
+
+static void t_apci(int *status)
+/*
+**  - - - - - - -
+**   t _ a p c i
+**  - - - - - - -
+**
+**  Test eraApci function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, ebpv[2][3], ehp[3], x, y, s;
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   ebpv[0][0] =  0.901310875;
+   ebpv[0][1] = -0.417402664;
+   ebpv[0][2] = -0.180982288;
+   ebpv[1][0] =  0.00742727954;
+   ebpv[1][1] =  0.0140507459;
+   ebpv[1][2] =  0.00609045792;
+   ehp[0] =  0.903358544;
+   ehp[1] = -0.415395237;
+   ehp[2] = -0.180084014;
+   x =  0.0013122272;
+   y = -2.92808623e-5;
+   s =  3.05749468e-8;
+
+   eraApci(date1, date2, ebpv, ehp, x, y, s, &astrom);
+
+   vvd(astrom.pmt, 12.65133794027378508, 1e-11,
+                   "eraApci", "pmt", status);
+   vvd(astrom.eb[0], 0.901310875, 1e-12,
+                     "eraApci", "eb(1)", status);
+   vvd(astrom.eb[1], -0.417402664, 1e-12,
+                     "eraApci", "eb(2)", status);
+   vvd(astrom.eb[2], -0.180982288, 1e-12,
+                     "eraApci", "eb(3)", status);
+   vvd(astrom.eh[0], 0.8940025429324143045, 1e-12,
+                     "eraApci", "eh(1)", status);
+   vvd(astrom.eh[1], -0.4110930268679817955, 1e-12,
+                     "eraApci", "eh(2)", status);
+   vvd(astrom.eh[2], -0.1782189004872870264, 1e-12,
+                     "eraApci", "eh(3)", status);
+   vvd(astrom.em, 1.010465295811013146, 1e-12,
+                  "eraApci", "em", status);
+   vvd(astrom.v[0], 0.4289638897813379954e-4, 1e-16,
+                    "eraApci", "v(1)", status);
+   vvd(astrom.v[1], 0.8115034021720941898e-4, 1e-16,
+                    "eraApci", "v(2)", status);
+   vvd(astrom.v[2], 0.3517555123437237778e-4, 1e-16,
+                    "eraApci", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999951686013336, 1e-12,
+                   "eraApci", "bm1", status);
+   vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12,
+                         "eraApci", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12,
+                         "eraApci", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12,
+                         "eraApci", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12,
+                         "eraApci", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12,
+                         "eraApci", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12,
+                         "eraApci", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12,
+                         "eraApci", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12,
+                         "eraApci", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12,
+                         "eraApci", "bpn(3,3)", status);
+
+}
+
+static void t_apci13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p c i 1 3
+**  - - - - - - - - -
+**
+**  Test eraApci13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, eo;
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+
+   eraApci13(date1, date2, &astrom, &eo);
+
+   vvd(astrom.pmt, 12.65133794027378508, 1e-11,
+                   "eraApci13", "pmt", status);
+   vvd(astrom.eb[0], 0.9013108747340644755, 1e-12,
+                     "eraApci13", "eb(1)", status);
+   vvd(astrom.eb[1], -0.4174026640406119957, 1e-12,
+                     "eraApci13", "eb(2)", status);
+   vvd(astrom.eb[2], -0.1809822877867817771, 1e-12,
+                     "eraApci13", "eb(3)", status);
+   vvd(astrom.eh[0], 0.8940025429255499549, 1e-12,
+                     "eraApci13", "eh(1)", status);
+   vvd(astrom.eh[1], -0.4110930268331896318, 1e-12,
+                     "eraApci13", "eh(2)", status);
+   vvd(astrom.eh[2], -0.1782189006019749850, 1e-12,
+                     "eraApci13", "eh(3)", status);
+   vvd(astrom.em, 1.010465295964664178, 1e-12,
+                  "eraApci13", "em", status);
+   vvd(astrom.v[0], 0.4289638897157027528e-4, 1e-16,
+                    "eraApci13", "v(1)", status);
+   vvd(astrom.v[1], 0.8115034002544663526e-4, 1e-16,
+                    "eraApci13", "v(2)", status);
+   vvd(astrom.v[2], 0.3517555122593144633e-4, 1e-16,
+                    "eraApci13", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999951686013498, 1e-12,
+                   "eraApci13", "bm1", status);
+   vvd(astrom.bpn[0][0], 0.9999992060376761710, 1e-12,
+                         "eraApci13", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.4124244860106037157e-7, 1e-12,
+                         "eraApci13", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.1260128571051709670e-2, 1e-12,
+                         "eraApci13", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], -0.1282291987222130690e-7, 1e-12,
+                         "eraApci13", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 0.9999999997456835325, 1e-12,
+                         "eraApci13", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], -0.2255288829420524935e-4, 1e-12,
+                         "eraApci13", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], -0.1260128571661374559e-2, 1e-12,
+                         "eraApci13", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.2255285422953395494e-4, 1e-12,
+                         "eraApci13", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 0.9999992057833604343, 1e-12,
+                         "eraApci13", "bpn(3,3)", status);
+   vvd(eo, -0.2900618712657375647e-2, 1e-12,
+           "eraApci13", "eo", status);
+
+}
+
+static void t_apco(int *status)
+/*
+**  - - - - - - -
+**   t _ a p c o
+**  - - - - - - -
+**
+**  Test eraApco function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApco, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, ebpv[2][3], ehp[3], x, y, s,
+          theta, elong, phi, hm, xp, yp, sp, refa, refb;
+   eraASTROM astrom;
+
+
+   date1 = 2456384.5;
+   date2 = 0.970031644;
+   ebpv[0][0] = -0.974170438;
+   ebpv[0][1] = -0.211520082;
+   ebpv[0][2] = -0.0917583024;
+   ebpv[1][0] = 0.00364365824;
+   ebpv[1][1] = -0.0154287319;
+   ebpv[1][2] = -0.00668922024;
+   ehp[0] = -0.973458265;
+   ehp[1] = -0.209215307;
+   ehp[2] = -0.0906996477;
+   x = 0.0013122272;
+   y = -2.92808623e-5;
+   s = 3.05749468e-8;
+   theta = 3.14540971;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   sp = -3.01974337e-11;
+   refa = 0.000201418779;
+   refb = -2.36140831e-7;
+
+   eraApco(date1, date2, ebpv, ehp, x, y, s,
+           theta, elong, phi, hm, xp, yp, sp,
+           refa, refb, &astrom);
+
+   vvd(astrom.pmt, 13.25248468622587269, 1e-11,
+                   "eraApco", "pmt", status);
+   vvd(astrom.eb[0], -0.9741827110630897003, 1e-12,
+                     "eraApco", "eb(1)", status);
+   vvd(astrom.eb[1], -0.2115130190135014340, 1e-12,
+                     "eraApco", "eb(2)", status);
+   vvd(astrom.eb[2], -0.09179840186968295686, 1e-12,
+                     "eraApco", "eb(3)", status);
+   vvd(astrom.eh[0], -0.9736425571689670428, 1e-12,
+                     "eraApco", "eh(1)", status);
+   vvd(astrom.eh[1], -0.2092452125848862201, 1e-12,
+                     "eraApco", "eh(2)", status);
+   vvd(astrom.eh[2], -0.09075578152261439954, 1e-12,
+                     "eraApco", "eh(3)", status);
+   vvd(astrom.em, 0.9998233241710617934, 1e-12,
+                  "eraApco", "em", status);
+   vvd(astrom.v[0], 0.2078704985147609823e-4, 1e-16,
+                    "eraApco", "v(1)", status);
+   vvd(astrom.v[1], -0.8955360074407552709e-4, 1e-16,
+                    "eraApco", "v(2)", status);
+   vvd(astrom.v[2], -0.3863338980073114703e-4, 1e-16,
+                    "eraApco", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999950277561600, 1e-12,
+                   "eraApco", "bm1", status);
+   vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12,
+                         "eraApco", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12,
+                         "eraApco", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12,
+                         "eraApco", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12,
+                         "eraApco", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12,
+                         "eraApco", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12,
+                         "eraApco", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12,
+                         "eraApco", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12,
+                         "eraApco", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12,
+                         "eraApco", "bpn(3,3)", status);
+   vvd(astrom.along, -0.5278008060301974337, 1e-12,
+                     "eraApco", "along", status);
+   vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17,
+                   "eraApco", "xpl", status);
+   vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17,
+                   "eraApco", "ypl", status);
+   vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
+                    "eraApco", "sphi", status);
+   vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
+                    "eraApco", "cphi", status);
+   vvd(astrom.diurab, 0, 0,
+                      "eraApco", "diurab", status);
+   vvd(astrom.eral, 2.617608903969802566, 1e-12,
+                    "eraApco", "eral", status);
+   vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15,
+                    "eraApco", "refa", status);
+   vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18,
+                    "eraApco", "refb", status);
+
+}
+
+static void t_apco13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p c o 1 3
+**  - - - - - - - - -
+**
+**  Test eraApco13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApco13, vvd, viv
+**
+**  This revision:  2013 October 4
+*/
+{
+   double utc1, utc2, dut1, elong, phi, hm, xp, yp,
+          phpa, tc, rh, wl, eo;
+   eraASTROM astrom;
+   int j;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   j = eraApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom, &eo);
+
+   vvd(astrom.pmt, 13.25248468622475727, 1e-11,
+                   "eraApco13", "pmt", status);
+   vvd(astrom.eb[0], -0.9741827107321449445, 1e-12,
+                   "eraApco13", "eb(1)", status);
+   vvd(astrom.eb[1], -0.2115130190489386190, 1e-12,
+                     "eraApco13", "eb(2)", status);
+   vvd(astrom.eb[2], -0.09179840189515518726, 1e-12,
+                     "eraApco13", "eb(3)", status);
+   vvd(astrom.eh[0], -0.9736425572586866640, 1e-12,
+                     "eraApco13", "eh(1)", status);
+   vvd(astrom.eh[1], -0.2092452121602867431, 1e-12,
+                     "eraApco13", "eh(2)", status);
+   vvd(astrom.eh[2], -0.09075578153903832650, 1e-12,
+                     "eraApco13", "eh(3)", status);
+   vvd(astrom.em, 0.9998233240914558422, 1e-12,
+                  "eraApco13", "em", status);
+   vvd(astrom.v[0], 0.2078704986751370303e-4, 1e-16,
+                    "eraApco13", "v(1)", status);
+   vvd(astrom.v[1], -0.8955360100494469232e-4, 1e-16,
+                    "eraApco13", "v(2)", status);
+   vvd(astrom.v[2], -0.3863338978840051024e-4, 1e-16,
+                    "eraApco13", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999950277561368, 1e-12,
+                   "eraApco13", "bm1", status);
+   vvd(astrom.bpn[0][0], 0.9999991390295147999, 1e-12,
+                         "eraApco13", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0.4978650075315529277e-7, 1e-12,
+                         "eraApco13", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0.001312227200850293372, 1e-12,
+                         "eraApco13", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], -0.1136336652812486604e-7, 1e-12,
+                         "eraApco13", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 0.9999999995713154865, 1e-12,
+                         "eraApco13", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], -0.2928086230975367296e-4, 1e-12,
+                         "eraApco13", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], -0.001312227201745553566, 1e-12,
+                         "eraApco13", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0.2928082218847679162e-4, 1e-12,
+                         "eraApco13", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 0.9999991386008312212, 1e-12,
+                         "eraApco13", "bpn(3,3)", status);
+   vvd(astrom.along, -0.5278008060301974337, 1e-12,
+                     "eraApco13", "along", status);
+   vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17,
+                   "eraApco13", "xpl", status);
+   vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17,
+                   "eraApco13", "ypl", status);
+   vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
+                    "eraApco13", "sphi", status);
+   vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
+                    "eraApco13", "cphi", status);
+   vvd(astrom.diurab, 0, 0,
+                      "eraApco13", "diurab", status);
+   vvd(astrom.eral, 2.617608909189066140, 1e-12,
+                    "eraApco13", "eral", status);
+   vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15,
+                    "eraApco13", "refa", status);
+   vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18,
+                    "eraApco13", "refb", status);
+   vvd(eo, -0.003020548354802412839, 1e-14,
+           "eraApco13", "eo", status);
+   viv(j, 0, "eraApco13", "j", status);
+
+}
+
+static void t_apcs(int *status)
+/*
+**  - - - - - - -
+**   t _ a p c s
+**  - - - - - - -
+**
+**  Test eraApcs function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApcs, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, pv[2][3], ebpv[2][3], ehp[3];
+   eraASTROM astrom;
+
+
+   date1 = 2456384.5;
+   date2 = 0.970031644;
+   pv[0][0] = -1836024.09;
+   pv[0][1] = 1056607.72;
+   pv[0][2] = -5998795.26;
+   pv[1][0] = -77.0361767;
+   pv[1][1] = -133.310856;
+   pv[1][2] = 0.0971855934;
+   ebpv[0][0] = -0.974170438;
+   ebpv[0][1] = -0.211520082;
+   ebpv[0][2] = -0.0917583024;
+   ebpv[1][0] = 0.00364365824;
+   ebpv[1][1] = -0.0154287319;
+   ebpv[1][2] = -0.00668922024;
+   ehp[0] = -0.973458265;
+   ehp[1] = -0.209215307;
+   ehp[2] = -0.0906996477;
+
+   eraApcs(date1, date2, pv, ebpv, ehp, &astrom);
+
+   vvd(astrom.pmt, 13.25248468622587269, 1e-11,
+                   "eraApcs", "pmt", status);
+   vvd(astrom.eb[0], -0.9741827110630456169, 1e-12,
+                     "eraApcs", "eb(1)", status);
+   vvd(astrom.eb[1], -0.2115130190136085494, 1e-12,
+                     "eraApcs", "eb(2)", status);
+   vvd(astrom.eb[2], -0.09179840186973175487, 1e-12,
+                     "eraApcs", "eb(3)", status);
+   vvd(astrom.eh[0], -0.9736425571689386099, 1e-12,
+                     "eraApcs", "eh(1)", status);
+   vvd(astrom.eh[1], -0.2092452125849967195, 1e-12,
+                     "eraApcs", "eh(2)", status);
+   vvd(astrom.eh[2], -0.09075578152266466572, 1e-12,
+                     "eraApcs", "eh(3)", status);
+   vvd(astrom.em, 0.9998233241710457140, 1e-12,
+                  "eraApcs", "em", status);
+   vvd(astrom.v[0], 0.2078704985513566571e-4, 1e-16,
+                    "eraApcs", "v(1)", status);
+   vvd(astrom.v[1], -0.8955360074245006073e-4, 1e-16,
+                    "eraApcs", "v(2)", status);
+   vvd(astrom.v[2], -0.3863338980073572719e-4, 1e-16,
+                    "eraApcs", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999950277561601, 1e-12,
+                   "eraApcs", "bm1", status);
+   vvd(astrom.bpn[0][0], 1, 0,
+                         "eraApcs", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0, 0,
+                         "eraApcs", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0, 0,
+                         "eraApcs", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], 0, 0,
+                         "eraApcs", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 1, 0,
+                         "eraApcs", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], 0, 0,
+                         "eraApcs", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], 0, 0,
+                         "eraApcs", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0, 0,
+                         "eraApcs", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 1, 0,
+                         "eraApcs", "bpn(3,3)", status);
+
+}
+
+static void t_apcs13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p c s 1 3
+**  - - - - - - - - -
+**
+**  Test eraApcs13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApcs13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, pv[2][3];
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   pv[0][0] = -6241497.16;
+   pv[0][1] = 401346.896;
+   pv[0][2] = -1251136.04;
+   pv[1][0] = -29.264597;
+   pv[1][1] = -455.021831;
+   pv[1][2] = 0.0266151194;
+
+   eraApcs13(date1, date2, pv, &astrom);
+
+   vvd(astrom.pmt, 12.65133794027378508, 1e-11,
+                   "eraApcs13", "pmt", status);
+   vvd(astrom.eb[0], 0.9012691529023298391, 1e-12,
+                     "eraApcs13", "eb(1)", status);
+   vvd(astrom.eb[1], -0.4173999812023068781, 1e-12,
+                     "eraApcs13", "eb(2)", status);
+   vvd(astrom.eb[2], -0.1809906511146821008, 1e-12,
+                     "eraApcs13", "eb(3)", status);
+   vvd(astrom.eh[0], 0.8939939101759726824, 1e-12,
+                     "eraApcs13", "eh(1)", status);
+   vvd(astrom.eh[1], -0.4111053891734599955, 1e-12,
+                     "eraApcs13", "eh(2)", status);
+   vvd(astrom.eh[2], -0.1782336880637689334, 1e-12,
+                     "eraApcs13", "eh(3)", status);
+   vvd(astrom.em, 1.010428384373318379, 1e-12,
+                  "eraApcs13", "em", status);
+   vvd(astrom.v[0], 0.4279877278327626511e-4, 1e-16,
+                    "eraApcs13", "v(1)", status);
+   vvd(astrom.v[1], 0.7963255057040027770e-4, 1e-16,
+                    "eraApcs13", "v(2)", status);
+   vvd(astrom.v[2], 0.3517564000441374759e-4, 1e-16,
+                    "eraApcs13", "v(3)", status);
+   vvd(astrom.bm1, 0.9999999952947981330, 1e-12,
+                   "eraApcs13", "bm1", status);
+   vvd(astrom.bpn[0][0], 1, 0,
+                         "eraApcs13", "bpn(1,1)", status);
+   vvd(astrom.bpn[1][0], 0, 0,
+                         "eraApcs13", "bpn(2,1)", status);
+   vvd(astrom.bpn[2][0], 0, 0,
+                         "eraApcs13", "bpn(3,1)", status);
+   vvd(astrom.bpn[0][1], 0, 0,
+                         "eraApcs13", "bpn(1,2)", status);
+   vvd(astrom.bpn[1][1], 1, 0,
+                         "eraApcs13", "bpn(2,2)", status);
+   vvd(astrom.bpn[2][1], 0, 0,
+                         "eraApcs13", "bpn(3,2)", status);
+   vvd(astrom.bpn[0][2], 0, 0,
+                         "eraApcs13", "bpn(1,3)", status);
+   vvd(astrom.bpn[1][2], 0, 0,
+                         "eraApcs13", "bpn(2,3)", status);
+   vvd(astrom.bpn[2][2], 1, 0,
+                         "eraApcs13", "bpn(3,3)", status);
+
+}
+
+static void t_aper(int *status)
+/*
+**  - - - - - - -
+**   t _ a p e r
+**  - - - - - - -
+*
+**  Test eraAper function.
+*
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+*
+**  Called:  eraAper, vvd
+*
+**  This revision:  2013 October 3
+*/
+{
+   double theta;
+   eraASTROM astrom;
+
+
+   astrom.along = 1.234;
+   theta = 5.678;
+
+   eraAper(theta, &astrom);
+
+   vvd(astrom.eral, 6.912000000000000000, 1e-12,
+                    "eraAper", "pmt", status);
+
+}
+
+static void t_aper13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p e r 1 3
+**  - - - - - - - - -
+**
+**  Test eraAper13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAper13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double ut11, ut12;
+   eraASTROM astrom;
+
+
+   astrom.along = 1.234;
+   ut11 = 2456165.5;
+   ut12 = 0.401182685;
+
+   eraAper13(ut11, ut12, &astrom);
+
+   vvd(astrom.eral, 3.316236661789694933, 1e-12,
+                    "eraAper13", "pmt", status);
+
+}
+
+static void t_apio(int *status)
+/*
+**  - - - - - - -
+**   t _ a p i o
+**  - - - - - - -
+**
+**  Test eraApio function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApio, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double sp, theta, elong, phi, hm, xp, yp, refa, refb;
+   eraASTROM astrom;
+
+
+   sp = -3.01974337e-11;
+   theta = 3.14540971;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   refa = 0.000201418779;
+   refb = -2.36140831e-7;
+
+   eraApio(sp, theta, elong, phi, hm, xp, yp, refa, refb, &astrom);
+
+   vvd(astrom.along, -0.5278008060301974337, 1e-12,
+                     "eraApio", "along", status);
+   vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17,
+                   "eraApio", "xpl", status);
+   vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17,
+                   "eraApio", "ypl", status);
+   vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
+                    "eraApio", "sphi", status);
+   vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
+                    "eraApio", "cphi", status);
+   vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12,
+                      "eraApio", "diurab", status);
+   vvd(astrom.eral, 2.617608903969802566, 1e-12,
+                    "eraApio", "eral", status);
+   vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15,
+                    "eraApio", "refa", status);
+   vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18,
+                    "eraApio", "refb", status);
+
+}
+
+static void t_apio13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a p i o 1 3
+**  - - - - - - - - -
+**
+**  Test eraApio13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApio13, vvd, viv
+**
+**  This revision:  2013 October 4
+*/
+{
+   double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl;
+   int j;
+   eraASTROM astrom;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   j = eraApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl, &astrom);
+
+   vvd(astrom.along, -0.5278008060301974337, 1e-12,
+                     "eraApio13", "along", status);
+   vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17,
+                   "eraApio13", "xpl", status);
+   vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17,
+                   "eraApio13", "ypl", status);
+   vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
+                    "eraApio13", "sphi", status);
+   vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
+                    "eraApio13", "cphi", status);
+   vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12,
+                      "eraApio13", "diurab", status);
+   vvd(astrom.eral, 2.617608909189066140, 1e-12,
+                    "eraApio13", "eral", status);
+   vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15,
+                    "eraApio13", "refa", status);
+   vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18,
+                    "eraApio13", "refb", status);
+   viv(j, 0, "eraApio13", "j", status);
+
+}
+
+static void t_atci13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t c i 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtci13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtci13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double rc, dc, pr, pd, px, rv, date1, date2, ri, di, eo;
+
+
+   rc = 2.71;
+   dc = 0.174;
+   pr = 1e-5;
+   pd = 5e-6;
+   px = 0.1;
+   rv = 55.0;
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+
+   eraAtci13(rc, dc, pr, pd, px, rv, date1, date2, &ri, &di, &eo);
+
+   vvd(ri, 2.710121572969038991, 1e-12,
+           "eraAtci13", "ri", status);
+   vvd(di, 0.1729371367218230438, 1e-12,
+           "eraAtci13", "di", status);
+   vvd(eo, -0.002900618712657375647, 1e-14,
+           "eraAtci13", "eo", status);
+
+}
+
+static void t_atciq(int *status)
+/*
+**  - - - - - - - -
+**   t _ a t c i q
+**  - - - - - - - -
+**
+**  Test eraAtciq function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, eraAtciq, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, eo, rc, dc, pr, pd, px, rv, ri, di;
+   eraASTROM astrom;
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   eraApci13(date1, date2, &astrom, &eo);
+   rc = 2.71;
+   dc = 0.174;
+   pr = 1e-5;
+   pd = 5e-6;
+   px = 0.1;
+   rv = 55.0;
+
+   eraAtciq(rc, dc, pr, pd, px, rv, &astrom, &ri, &di);
+
+   vvd(ri, 2.710121572969038991, 1e-12, "eraAtciq", "ri", status);
+   vvd(di, 0.1729371367218230438, 1e-12, "eraAtciq", "di", status);
+
+}
+
+static void t_atciqn(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t c i q n
+**  - - - - - - - - -
+**
+**  Test eraAtciqn function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, eraAtciqn, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   eraLDBODY b[3];
+   double date1, date2, eo, rc, dc, pr, pd, px, rv, ri, di;
+   eraASTROM astrom;
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   eraApci13(date1, date2, &astrom, &eo);
+   rc = 2.71;
+   dc = 0.174;
+   pr = 1e-5;
+   pd = 5e-6;
+   px = 0.1;
+   rv = 55.0;
+   b[0].bm = 0.00028574;
+   b[0].dl = 3e-10;
+   b[0].pv[0][0] = -7.81014427;
+   b[0].pv[0][1] = -5.60956681;
+   b[0].pv[0][2] = -1.98079819;
+   b[0].pv[1][0] =  0.0030723249;
+   b[0].pv[1][1] = -0.00406995477;
+   b[0].pv[1][2] = -0.00181335842;
+   b[1].bm = 0.00095435;
+   b[1].dl = 3e-9;
+   b[1].pv[0][0] =  0.738098796;
+   b[1].pv[0][1] =  4.63658692;
+   b[1].pv[0][2] =  1.9693136;
+   b[1].pv[1][0] = -0.00755816922;
+   b[1].pv[1][1] =  0.00126913722;
+   b[1].pv[1][2] =  0.000727999001;
+   b[2].bm = 1.0;
+   b[2].dl = 6e-6;
+   b[2].pv[0][0] = -0.000712174377;
+   b[2].pv[0][1] = -0.00230478303;
+   b[2].pv[0][2] = -0.00105865966;
+   b[2].pv[1][0] =  6.29235213e-6;
+   b[2].pv[1][1] = -3.30888387e-7;
+   b[2].pv[1][2] = -2.96486623e-7;
+
+   eraAtciqn ( rc, dc, pr, pd, px, rv, &astrom, 3, b, &ri, &di);
+
+   vvd(ri, 2.710122008105325582, 1e-12, "eraAtciqn", "ri", status);
+   vvd(di, 0.1729371916491459122, 1e-12, "eraAtciqn", "di", status);
+
+}
+
+static void t_atciqz(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t c i q z
+**  - - - - - - - - -
+**
+**  Test eraAtciqz function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, eraAtciqz, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, eo, rc, dc, ri, di;
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   eraApci13(date1, date2, &astrom, &eo);
+   rc = 2.71;
+   dc = 0.174;
+
+   eraAtciqz(rc, dc, &astrom, &ri, &di);
+
+   vvd(ri, 2.709994899247599271, 1e-12, "eraAtciqz", "ri", status);
+   vvd(di, 0.1728740720983623469, 1e-12, "eraAtciqz", "di", status);
+
+}
+
+static void t_atco13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t c o 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtco13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtco13, vvd, viv
+**
+**  This revision:  2013 October 4
+*/
+{
+   double rc, dc, pr, pd, px, rv, utc1, utc2, dut1,
+          elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+          aob, zob, hob, dob, rob, eo;
+   int j;
+
+
+   rc = 2.71;
+   dc = 0.174;
+   pr = 1e-5;
+   pd = 5e-6;
+   px = 0.1;
+   rv = 55.0;
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   j = eraAtco13(rc, dc, pr, pd, px, rv,
+                 utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                 phpa, tc, rh, wl,
+                 &aob, &zob, &hob, &dob, &rob, &eo);
+
+   vvd(aob, 0.09251774485358230653, 1e-12, "eraAtco13", "aob", status);
+   vvd(zob, 1.407661405256767021, 1e-12, "eraAtco13", "zob", status);
+   vvd(hob, -0.09265154431403157925, 1e-12, "eraAtco13", "hob", status);
+   vvd(dob, 0.1716626560075591655, 1e-12, "eraAtco13", "dob", status);
+   vvd(rob, 2.710260453503097719, 1e-12, "eraAtco13", "rob", status);
+   vvd(eo, -0.003020548354802412839, 1e-14, "eraAtco13", "eo", status);
+   viv(j, 0, "eraAtco13", "j", status);
+
+}
+
+static void t_atic13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t i c 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtic13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtic13, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double ri, di, date1, date2, rc, dc, eo;
+
+
+   ri = 2.710121572969038991;
+   di = 0.1729371367218230438;
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+
+   eraAtic13(ri, di, date1, date2, &rc, &dc, &eo);
+
+   vvd(rc, 2.710126504531374930, 1e-12, "eraAtic13", "rc", status);
+   vvd(dc, 0.1740632537628342320, 1e-12, "eraAtic13", "dc", status);
+   vvd(eo, -0.002900618712657375647, 1e-14, "eraAtic13", "eo", status);
+
+}
+
+static void t_aticq(int *status)
+/*
+**  - - - - - - - -
+**   t _ a t i c q
+**  - - - - - - - -
+**
+**  Test eraAticq function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, eraAticq, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, eo, ri, di, rc, dc;
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   eraApci13(date1, date2, &astrom, &eo);
+   ri = 2.710121572969038991;
+   di = 0.1729371367218230438;
+
+   eraAticq(ri, di, &astrom, &rc, &dc);
+
+   vvd(rc, 2.710126504531374930, 1e-12, "eraAticq", "rc", status);
+   vvd(dc, 0.1740632537628342320, 1e-12, "eraAticq", "dc", status);
+
+}
+
+static void t_aticqn(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t i c q n
+**  - - - - - - - - -
+**
+**  Test eraAticqn function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApci13, eraAticqn, vvd
+**
+**  This revision:  2013 October 3
+*/
+{
+   double date1, date2, eo, ri, di, rc, dc;
+   eraLDBODY b[3];
+   eraASTROM astrom;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   eraApci13(date1, date2, &astrom, &eo);
+   ri = 2.709994899247599271;
+   di = 0.1728740720983623469;
+   b[0].bm = 0.00028574;
+   b[0].dl = 3e-10;
+   b[0].pv[0][0] = -7.81014427;
+   b[0].pv[0][1] = -5.60956681;
+   b[0].pv[0][2] = -1.98079819;
+   b[0].pv[1][0] =  0.0030723249;
+   b[0].pv[1][1] = -0.00406995477;
+   b[0].pv[1][2] = -0.00181335842;
+   b[1].bm = 0.00095435;
+   b[1].dl = 3e-9;
+   b[1].pv[0][0] =  0.738098796;
+   b[1].pv[0][1] =  4.63658692;
+   b[1].pv[0][2] =  1.9693136;
+   b[1].pv[1][0] = -0.00755816922;
+   b[1].pv[1][1] =  0.00126913722;
+   b[1].pv[1][2] =  0.000727999001;
+   b[2].bm = 1.0;
+   b[2].dl = 6e-6;
+   b[2].pv[0][0] = -0.000712174377;
+   b[2].pv[0][1] = -0.00230478303;
+   b[2].pv[0][2] = -0.00105865966;
+   b[2].pv[1][0] =  6.29235213e-6;
+   b[2].pv[1][1] = -3.30888387e-7;
+   b[2].pv[1][2] = -2.96486623e-7;
+
+   eraAticqn(ri, di, &astrom, 3, b, &rc, &dc);
+
+   vvd(rc, 2.709999575032685412, 1e-12, "eraAtciqn", "rc", status);
+   vvd(dc, 0.1739999656317778034, 1e-12, "eraAtciqn", "dc", status);
+
+}
+
+static void t_atio13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t i o 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtio13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtio13, vvd, viv
+**
+**  This revision:  2013 October 3
+*/
+{
+   double ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp,
+          phpa, tc, rh, wl, aob, zob, hob, dob, rob;
+   int j;
+
+
+   ri = 2.710121572969038991;
+   di = 0.1729371367218230438;
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   j = eraAtio13(ri, di, utc1, utc2, dut1, elong, phi, hm,
+                 xp, yp, phpa, tc, rh, wl,
+                 &aob, &zob, &hob, &dob, &rob);
+
+   vvd(aob, 0.09233952224794989993, 1e-12, "eraAtio13", "aob", status);
+   vvd(zob, 1.407758704513722461, 1e-12, "eraAtio13", "zob", status);
+   vvd(hob, -0.09247619879782006106, 1e-12, "eraAtio13", "hob", status);
+   vvd(dob, 0.1717653435758265198, 1e-12, "eraAtio13", "dob", status);
+   vvd(rob, 2.710085107986886201, 1e-12, "eraAtio13", "rob", status);
+   viv(j, 0, "eraAtio13", "j", status);
+
+}
+
+static void t_atioq(int *status)
+/*
+**  - - - - - - - -
+**   t _ a t i o q
+**  - - - - - - - -
+**
+**  Test eraAtioq function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraApio13, eraAtioq, vvd, viv
+**
+**  This revision:  2013 October 4
+*/
+{
+   double utc1, utc2, dut1, elong, phi, hm, xp, yp,
+          phpa, tc, rh, wl, ri, di, aob, zob, hob, dob, rob;
+   eraASTROM astrom;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+   (void) eraApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                    phpa, tc, rh, wl, &astrom);
+   ri = 2.710121572969038991;
+   di = 0.1729371367218230438;
+
+   eraAtioq(ri, di, &astrom, &aob, &zob, &hob, &dob, &rob);
+
+   vvd(aob, 0.09233952224794989993, 1e-12, "eraAtioq", "aob", status);
+   vvd(zob, 1.407758704513722461, 1e-12, "eraAtioq", "zob", status);
+   vvd(hob, -0.09247619879782006106, 1e-12, "eraAtioq", "hob", status);
+   vvd(dob, 0.1717653435758265198, 1e-12, "eraAtioq", "dob", status);
+   vvd(rob, 2.710085107986886201, 1e-12, "eraAtioq", "rob", status);
+
+}
+
+static void t_atoc13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t o c 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtoc13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtoc13, vvd, viv
+**
+**  This revision:  2013 October 3
+*/
+{
+   double utc1, utc2, dut1,
+          elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+          ob1, ob2, rc, dc;
+   int j;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   ob1 = 2.710085107986886201;
+   ob2 = 0.1717653435758265198;
+   j = eraAtoc13 ( "R", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &rc, &dc);
+   vvd(rc, 2.709956744661000609, 1e-12, "eraAtoc13", "R/rc", status);
+   vvd(dc, 0.1741696500895398562, 1e-12, "eraAtoc13", "R/dc", status);
+   viv(j, 0, "eraAtoc13", "R/j", status);
+
+   ob1 = -0.09247619879782006106;
+   ob2 = 0.1717653435758265198;
+   j = eraAtoc13 ( "H", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &rc, &dc);
+   vvd(rc, 2.709956744661000609, 1e-12, "eraAtoc13", "H/rc", status);
+   vvd(dc, 0.1741696500895398562, 1e-12, "eraAtoc13", "H/dc", status);
+   viv(j, 0, "eraAtoc13", "H/j", status);
+
+   ob1 = 0.09233952224794989993;
+   ob2 = 1.407758704513722461;
+   j = eraAtoc13 ( "A", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &rc, &dc);
+   vvd(rc, 2.709956744661000609, 1e-12, "eraAtoc13", "A/rc", status);
+   vvd(dc, 0.1741696500895398565, 1e-12, "eraAtoc13", "A/dc", status);
+   viv(j, 0, "eraAtoc13", "A/j", status);
+
+}
+
+static void t_atoi13(int *status)
+/*
+**  - - - - - - - - -
+**   t _ a t o i 1 3
+**  - - - - - - - - -
+**
+**  Test eraAtoi13 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraAtoi13, vvd, viv
+**
+**  This revision:  2013 October 3
+*/
+{
+   double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+          ob1, ob2, ri, di;
+   int j;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+
+   ob1 = 2.710085107986886201;
+   ob2 = 0.1717653435758265198;
+   j = eraAtoi13 ( "R", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12, "eraAtoi13", "R/ri", status);
+   vvd(di, 0.1729371839114567725, 1e-12, "eraAtoi13", "R/di", status);
+   viv(j, 0, "eraAtoi13", "R/J", status);
+
+   ob1 = -0.09247619879782006106;
+   ob2 = 0.1717653435758265198;
+   j = eraAtoi13 ( "H", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12, "eraAtoi13", "H/ri", status);
+   vvd(di, 0.1729371839114567725, 1e-12, "eraAtoi13", "H/di", status);
+   viv(j, 0, "eraAtoi13", "H/J", status);
+
+   ob1 = 0.09233952224794989993;
+   ob2 = 1.407758704513722461;
+   j = eraAtoi13 ( "A", ob1, ob2, utc1, utc2, dut1,
+                   elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+                   &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12, "eraAtoi13", "A/ri", status);
+   vvd(di, 0.1729371839114567728, 1e-12, "eraAtoi13", "A/di", status);
+   viv(j, 0, "eraAtoi13", "A/J", status);
+
+}
+
+static void t_atoiq(int *status)
+/*
+**  - - - - - - - -
+**   t _ a t o i q
+**  - - - - - - - -
+*
+**  Test eraAtoiq function.
+*
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+*
+**  Called:  eraApio13, eraAtoiq, vvd
+*
+**  This revision:  2013 October 4
+*/
+{
+   double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl,
+          ob1, ob2, ri, di;
+   eraASTROM astrom;
+
+
+   utc1 = 2456384.5;
+   utc2 = 0.969254051;
+   dut1 = 0.1550675;
+   elong = -0.527800806;
+   phi = -1.2345856;
+   hm = 2738.0;
+   xp = 2.47230737e-7;
+   yp = 1.82640464e-6;
+   phpa = 731.0;
+   tc = 12.8;
+   rh = 0.59;
+   wl = 0.55;
+   (void) eraApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
+                    phpa, tc, rh, wl, &astrom);
+
+   ob1 = 2.710085107986886201;
+   ob2 = 0.1717653435758265198;
+   eraAtoiq("R", ob1, ob2, &astrom, &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12,
+           "eraAtoiq", "R/ri", status);
+   vvd(di, 0.1729371839114567725, 1e-12,
+           "eraAtoiq", "R/di", status);
+
+   ob1 = -0.09247619879782006106;
+   ob2 = 0.1717653435758265198;
+   eraAtoiq("H", ob1, ob2, &astrom, &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12,
+           "eraAtoiq", "H/ri", status);
+   vvd(di, 0.1729371839114567725, 1e-12,
+           "eraAtoiq", "H/di", status);
+
+   ob1 = 0.09233952224794989993;
+   ob2 = 1.407758704513722461;
+   eraAtoiq("A", ob1, ob2, &astrom, &ri, &di);
+   vvd(ri, 2.710121574449135955, 1e-12,
+           "eraAtoiq", "A/ri", status);
+   vvd(di, 0.1729371839114567728, 1e-12,
+           "eraAtoiq", "A/di", status);
+
+}
+
+static void t_bi00(int *status)
+/*
+**  - - - - - - -
+**   t _ b i 0 0
+**  - - - - - - -
+**
+**  Test eraBi00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraBi00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsibi, depsbi, dra;
+
+   eraBi00(&dpsibi, &depsbi, &dra);
+
+   vvd(dpsibi, -0.2025309152835086613e-6, 1e-12,
+      "eraBi00", "dpsibi", status);
+   vvd(depsbi, -0.3306041454222147847e-7, 1e-12,
+      "eraBi00", "depsbi", status);
+   vvd(dra, -0.7078279744199225506e-7, 1e-12,
+      "eraBi00", "dra", status);
+}
+
+static void t_bp00(int *status)
+/*
+**  - - - - - - -
+**   t _ b p 0 0
+**  - - - - - - -
+**
+**  Test eraBp00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraBp00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rb[3][3], rp[3][3], rbp[3][3];
+
+
+   eraBp00(2400000.5, 50123.9999, rb, rp, rbp);
+
+   vvd(rb[0][0], 0.9999999999999942498, 1e-12,
+       "eraBp00", "rb11", status);
+   vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16,
+       "eraBp00", "rb12", status);
+   vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16,
+       "eraBp00", "rb13", status);
+   vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16,
+       "eraBp00", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraBp00", "rb22", status);
+   vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16,
+       "eraBp00", "rb23", status);
+   vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16,
+       "eraBp00", "rb31", status);
+   vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16,
+       "eraBp00", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraBp00", "rb33", status);
+
+   vvd(rp[0][0], 0.9999995504864048241, 1e-12,
+       "eraBp00", "rp11", status);
+   vvd(rp[0][1], 0.8696113836207084411e-3, 1e-14,
+       "eraBp00", "rp12", status);
+   vvd(rp[0][2], 0.3778928813389333402e-3, 1e-14,
+       "eraBp00", "rp13", status);
+   vvd(rp[1][0], -0.8696113818227265968e-3, 1e-14,
+       "eraBp00", "rp21", status);
+   vvd(rp[1][1], 0.9999996218879365258, 1e-12,
+       "eraBp00", "rp22", status);
+   vvd(rp[1][2], -0.1690679263009242066e-6, 1e-14,
+       "eraBp00", "rp23", status);
+   vvd(rp[2][0], -0.3778928854764695214e-3, 1e-14,
+       "eraBp00", "rp31", status);
+   vvd(rp[2][1], -0.1595521004195286491e-6, 1e-14,
+       "eraBp00", "rp32", status);
+   vvd(rp[2][2], 0.9999999285984682756, 1e-12,
+       "eraBp00", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999995505175087260, 1e-12,
+       "eraBp00", "rbp11", status);
+   vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14,
+       "eraBp00", "rbp12", status);
+   vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14,
+       "eraBp00", "rbp13", status);
+   vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14,
+       "eraBp00", "rbp21", status);
+   vvd(rbp[1][1], 0.9999996219494925900, 1e-12,
+       "eraBp00", "rbp22", status);
+   vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14,
+       "eraBp00", "rbp23", status);
+   vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14,
+       "eraBp00", "rbp31", status);
+   vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14,
+       "eraBp00", "rbp32", status);
+   vvd(rbp[2][2], 0.9999999285680153377, 1e-12,
+       "eraBp00", "rbp33", status);
+}
+
+static void t_bp06(int *status)
+/*
+**  - - - - - - -
+**   t _ b p 0 6
+**  - - - - - - -
+**
+**  Test eraBp06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraBp06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rb[3][3], rp[3][3], rbp[3][3];
+
+
+   eraBp06(2400000.5, 50123.9999, rb, rp, rbp);
+
+   vvd(rb[0][0], 0.9999999999999942497, 1e-12,
+       "eraBp06", "rb11", status);
+   vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14,
+       "eraBp06", "rb12", status);
+   vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14,
+       "eraBp06", "rb13", status);
+   vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14,
+       "eraBp06", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraBp06", "rb22", status);
+   vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14,
+       "eraBp06", "rb23", status);
+   vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14,
+       "eraBp06", "rb31", status);
+   vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14,
+       "eraBp06", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraBp06", "rb33", status);
+
+   vvd(rp[0][0], 0.9999995504864960278, 1e-12,
+       "eraBp06", "rp11", status);
+   vvd(rp[0][1], 0.8696112578855404832e-3, 1e-14,
+       "eraBp06", "rp12", status);
+   vvd(rp[0][2], 0.3778929293341390127e-3, 1e-14,
+       "eraBp06", "rp13", status);
+   vvd(rp[1][0], -0.8696112560510186244e-3, 1e-14,
+       "eraBp06", "rp21", status);
+   vvd(rp[1][1], 0.9999996218880458820, 1e-12,
+       "eraBp06", "rp22", status);
+   vvd(rp[1][2], -0.1691646168941896285e-6, 1e-14,
+       "eraBp06", "rp23", status);
+   vvd(rp[2][0], -0.3778929335557603418e-3, 1e-14,
+       "eraBp06", "rp31", status);
+   vvd(rp[2][1], -0.1594554040786495076e-6, 1e-14,
+       "eraBp06", "rp32", status);
+   vvd(rp[2][2], 0.9999999285984501222, 1e-12,
+       "eraBp06", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999995505176007047, 1e-12,
+       "eraBp06", "rbp11", status);
+   vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14,
+       "eraBp06", "rbp12", status);
+   vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14,
+       "eraBp06", "rbp13", status);
+   vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14,
+       "eraBp06", "rbp21", status);
+   vvd(rbp[1][1], 0.9999996219496027161, 1e-12,
+       "eraBp06", "rbp22", status);
+   vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14,
+       "eraBp06", "rbp23", status);
+   vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14,
+       "eraBp06", "rbp31", status);
+   vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14,
+       "eraBp06", "rbp32", status);
+   vvd(rbp[2][2], 0.9999999285679971958, 1e-12,
+       "eraBp06", "rbp33", status);
+}
+
+static void t_bpn2xy(int *status)
+/*
+**  - - - - - - - - -
+**   t _ b p n 2 x y
+**  - - - - - - - - -
+**
+**  Test eraBpn2xy function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraBpn2xy, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3], x, y;
+
+
+   rbpn[0][0] =  9.999962358680738e-1;
+   rbpn[0][1] = -2.516417057665452e-3;
+   rbpn[0][2] = -1.093569785342370e-3;
+
+   rbpn[1][0] =  2.516462370370876e-3;
+   rbpn[1][1] =  9.999968329010883e-1;
+   rbpn[1][2] =  4.006159587358310e-5;
+
+   rbpn[2][0] =  1.093465510215479e-3;
+   rbpn[2][1] = -4.281337229063151e-5;
+   rbpn[2][2] =  9.999994012499173e-1;
+
+   eraBpn2xy(rbpn, &x, &y);
+
+   vvd(x,  1.093465510215479e-3, 1e-12, "eraBpn2xy", "x", status);
+   vvd(y, -4.281337229063151e-5, 1e-12, "eraBpn2xy", "y", status);
+
+}
+
+static void t_c2i00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 i 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraC2i00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2i00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rc2i[3][3];
+
+
+   eraC2i00a(2400000.5, 53736.0, rc2i);
+
+   vvd(rc2i[0][0], 0.9999998323037165557, 1e-12,
+       "eraC2i00a", "11", status);
+   vvd(rc2i[0][1], 0.5581526348992140183e-9, 1e-12,
+       "eraC2i00a", "12", status);
+   vvd(rc2i[0][2], -0.5791308477073443415e-3, 1e-12,
+       "eraC2i00a", "13", status);
+
+   vvd(rc2i[1][0], -0.2384266227870752452e-7, 1e-12,
+       "eraC2i00a", "21", status);
+   vvd(rc2i[1][1], 0.9999999991917405258, 1e-12,
+       "eraC2i00a", "22", status);
+   vvd(rc2i[1][2], -0.4020594955028209745e-4, 1e-12,
+       "eraC2i00a", "23", status);
+
+   vvd(rc2i[2][0], 0.5791308472168152904e-3, 1e-12,
+       "eraC2i00a", "31", status);
+   vvd(rc2i[2][1], 0.4020595661591500259e-4, 1e-12,
+       "eraC2i00a", "32", status);
+   vvd(rc2i[2][2], 0.9999998314954572304, 1e-12,
+       "eraC2i00a", "33", status);
+
+}
+
+static void t_c2i00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 i 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraC2i00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2i00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rc2i[3][3];
+
+
+   eraC2i00b(2400000.5, 53736.0, rc2i);
+
+   vvd(rc2i[0][0], 0.9999998323040954356, 1e-12,
+       "eraC2i00b", "11", status);
+   vvd(rc2i[0][1], 0.5581526349131823372e-9, 1e-12,
+       "eraC2i00b", "12", status);
+   vvd(rc2i[0][2], -0.5791301934855394005e-3, 1e-12,
+       "eraC2i00b", "13", status);
+
+   vvd(rc2i[1][0], -0.2384239285499175543e-7, 1e-12,
+       "eraC2i00b", "21", status);
+   vvd(rc2i[1][1], 0.9999999991917574043, 1e-12,
+       "eraC2i00b", "22", status);
+   vvd(rc2i[1][2], -0.4020552974819030066e-4, 1e-12,
+       "eraC2i00b", "23", status);
+
+   vvd(rc2i[2][0], 0.5791301929950208873e-3, 1e-12,
+       "eraC2i00b", "31", status);
+   vvd(rc2i[2][1], 0.4020553681373720832e-4, 1e-12,
+       "eraC2i00b", "32", status);
+   vvd(rc2i[2][2], 0.9999998314958529887, 1e-12,
+       "eraC2i00b", "33", status);
+
+}
+
+static void t_c2i06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 i 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraC2i06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2i06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rc2i[3][3];
+
+
+   eraC2i06a(2400000.5, 53736.0, rc2i);
+
+   vvd(rc2i[0][0], 0.9999998323037159379, 1e-12,
+       "eraC2i06a", "11", status);
+   vvd(rc2i[0][1], 0.5581121329587613787e-9, 1e-12,
+       "eraC2i06a", "12", status);
+   vvd(rc2i[0][2], -0.5791308487740529749e-3, 1e-12,
+       "eraC2i06a", "13", status);
+
+   vvd(rc2i[1][0], -0.2384253169452306581e-7, 1e-12,
+       "eraC2i06a", "21", status);
+   vvd(rc2i[1][1], 0.9999999991917467827, 1e-12,
+       "eraC2i06a", "22", status);
+   vvd(rc2i[1][2], -0.4020579392895682558e-4, 1e-12,
+       "eraC2i06a", "23", status);
+
+   vvd(rc2i[2][0], 0.5791308482835292617e-3, 1e-12,
+       "eraC2i06a", "31", status);
+   vvd(rc2i[2][1], 0.4020580099454020310e-4, 1e-12,
+       "eraC2i06a", "32", status);
+   vvd(rc2i[2][2], 0.9999998314954628695, 1e-12,
+       "eraC2i06a", "33", status);
+
+}
+
+static void t_c2ibpn(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 i b p n
+**  - - - - - - - - -
+**
+**  Test eraC2ibpn function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2ibpn, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3], rc2i[3][3];
+
+
+   rbpn[0][0] =  9.999962358680738e-1;
+   rbpn[0][1] = -2.516417057665452e-3;
+   rbpn[0][2] = -1.093569785342370e-3;
+
+   rbpn[1][0] =  2.516462370370876e-3;
+   rbpn[1][1] =  9.999968329010883e-1;
+   rbpn[1][2] =  4.006159587358310e-5;
+
+   rbpn[2][0] =  1.093465510215479e-3;
+   rbpn[2][1] = -4.281337229063151e-5;
+   rbpn[2][2] =  9.999994012499173e-1;
+
+   eraC2ibpn(2400000.5, 50123.9999, rbpn, rc2i);
+
+   vvd(rc2i[0][0], 0.9999994021664089977, 1e-12,
+       "eraC2ibpn", "11", status);
+   vvd(rc2i[0][1], -0.3869195948017503664e-8, 1e-12,
+       "eraC2ibpn", "12", status);
+   vvd(rc2i[0][2], -0.1093465511383285076e-2, 1e-12,
+       "eraC2ibpn", "13", status);
+
+   vvd(rc2i[1][0], 0.5068413965715446111e-7, 1e-12,
+       "eraC2ibpn", "21", status);
+   vvd(rc2i[1][1], 0.9999999990835075686, 1e-12,
+       "eraC2ibpn", "22", status);
+   vvd(rc2i[1][2], 0.4281334246452708915e-4, 1e-12,
+       "eraC2ibpn", "23", status);
+
+   vvd(rc2i[2][0], 0.1093465510215479000e-2, 1e-12,
+       "eraC2ibpn", "31", status);
+   vvd(rc2i[2][1], -0.4281337229063151000e-4, 1e-12,
+       "eraC2ibpn", "32", status);
+   vvd(rc2i[2][2], 0.9999994012499173103, 1e-12,
+       "eraC2ibpn", "33", status);
+
+}
+
+static void t_c2ixy(int *status)
+/*
+**  - - - - - - - -
+**   t _ c 2 i x y
+**  - - - - - - - -
+**
+**  Test eraC2ixy function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2ixy, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, rc2i[3][3];
+
+
+   x = 0.5791308486706011000e-3;
+   y = 0.4020579816732961219e-4;
+
+   eraC2ixy(2400000.5, 53736, x, y, rc2i);
+
+   vvd(rc2i[0][0], 0.9999998323037157138, 1e-12,
+       "eraC2ixy", "11", status);
+   vvd(rc2i[0][1], 0.5581526349032241205e-9, 1e-12,
+       "eraC2ixy", "12", status);
+   vvd(rc2i[0][2], -0.5791308491611263745e-3, 1e-12,
+       "eraC2ixy", "13", status);
+
+   vvd(rc2i[1][0], -0.2384257057469842953e-7, 1e-12,
+       "eraC2ixy", "21", status);
+   vvd(rc2i[1][1], 0.9999999991917468964, 1e-12,
+       "eraC2ixy", "22", status);
+   vvd(rc2i[1][2], -0.4020579110172324363e-4, 1e-12,
+       "eraC2ixy", "23", status);
+
+   vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12,
+       "eraC2ixy", "31", status);
+   vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12,
+       "eraC2ixy", "32", status);
+   vvd(rc2i[2][2], 0.9999998314954627590, 1e-12,
+       "eraC2ixy", "33", status);
+
+}
+
+static void t_c2ixys(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 i x y s
+**  - - - - - - - - -
+**
+**  Test eraC2ixys function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2ixys, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s, rc2i[3][3];
+
+
+   x =  0.5791308486706011000e-3;
+   y =  0.4020579816732961219e-4;
+   s = -0.1220040848472271978e-7;
+
+   eraC2ixys(x, y, s, rc2i);
+
+   vvd(rc2i[0][0], 0.9999998323037157138, 1e-12,
+       "eraC2ixys", "11", status);
+   vvd(rc2i[0][1], 0.5581984869168499149e-9, 1e-12,
+       "eraC2ixys", "12", status);
+   vvd(rc2i[0][2], -0.5791308491611282180e-3, 1e-12,
+       "eraC2ixys", "13", status);
+
+   vvd(rc2i[1][0], -0.2384261642670440317e-7, 1e-12,
+       "eraC2ixys", "21", status);
+   vvd(rc2i[1][1], 0.9999999991917468964, 1e-12,
+       "eraC2ixys", "22", status);
+   vvd(rc2i[1][2], -0.4020579110169668931e-4, 1e-12,
+       "eraC2ixys", "23", status);
+
+   vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12,
+       "eraC2ixys", "31", status);
+   vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12,
+       "eraC2ixys", "32", status);
+   vvd(rc2i[2][2], 0.9999998314954627590, 1e-12,
+       "eraC2ixys", "33", status);
+
+}
+
+static void t_c2s(int *status)
+/*
+**  - - - - - -
+**   t _ c 2 s
+**  - - - - - -
+**
+**  Test eraC2s function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2s, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], theta, phi;
+
+
+   p[0] = 100.0;
+   p[1] = -50.0;
+   p[2] =  25.0;
+
+   eraC2s(p, &theta, &phi);
+
+   vvd(theta, -0.4636476090008061162, 1e-14, "eraC2s", "theta", status);
+   vvd(phi, 0.2199879773954594463, 1e-14, "eraC2s", "phi", status);
+
+}
+
+static void t_c2t00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 t 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraC2t00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2t00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double tta, ttb, uta, utb, xp, yp, rc2t[3][3];
+
+
+   tta = 2400000.5;
+   uta = 2400000.5;
+   ttb = 53736.0;
+   utb = 53736.0;
+   xp = 2.55060238e-7;
+   yp = 1.860359247e-6;
+
+   eraC2t00a(tta, ttb, uta, utb, xp, yp, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128307182668, 1e-12,
+       "eraC2t00a", "11", status);
+   vvd(rc2t[0][1], 0.9834769806938457836, 1e-12,
+       "eraC2t00a", "12", status);
+   vvd(rc2t[0][2], 0.6555535638688341725e-4, 1e-12,
+       "eraC2t00a", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134135984552, 1e-12,
+       "eraC2t00a", "21", status);
+   vvd(rc2t[1][1], -0.1810332203649520727, 1e-12,
+       "eraC2t00a", "22", status);
+   vvd(rc2t[1][2], 0.5749801116141056317e-3, 1e-12,
+       "eraC2t00a", "23", status);
+
+   vvd(rc2t[2][0], 0.5773474014081406921e-3, 1e-12,
+       "eraC2t00a", "31", status);
+   vvd(rc2t[2][1], 0.3961832391770163647e-4, 1e-12,
+       "eraC2t00a", "32", status);
+   vvd(rc2t[2][2], 0.9999998325501692289, 1e-12,
+       "eraC2t00a", "33", status);
+
+}
+
+static void t_c2t00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 t 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraC2t00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2t00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double tta, ttb, uta, utb, xp, yp, rc2t[3][3];
+
+
+   tta = 2400000.5;
+   uta = 2400000.5;
+   ttb = 53736.0;
+   utb = 53736.0;
+   xp = 2.55060238e-7;
+   yp = 1.860359247e-6;
+
+   eraC2t00b(tta, ttb, uta, utb, xp, yp, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128439678965, 1e-12,
+       "eraC2t00b", "11", status);
+   vvd(rc2t[0][1], 0.9834769806913872359, 1e-12,
+       "eraC2t00b", "12", status);
+   vvd(rc2t[0][2], 0.6555565082458415611e-4, 1e-12,
+       "eraC2t00b", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134115435923, 1e-12,
+       "eraC2t00b", "21", status);
+   vvd(rc2t[1][1], -0.1810332203784001946, 1e-12,
+       "eraC2t00b", "22", status);
+   vvd(rc2t[1][2], 0.5749793922030017230e-3, 1e-12,
+       "eraC2t00b", "23", status);
+
+   vvd(rc2t[2][0], 0.5773467471863534901e-3, 1e-12,
+       "eraC2t00b", "31", status);
+   vvd(rc2t[2][1], 0.3961790411549945020e-4, 1e-12,
+       "eraC2t00b", "32", status);
+   vvd(rc2t[2][2], 0.9999998325505635738, 1e-12,
+       "eraC2t00b", "33", status);
+
+}
+
+static void t_c2t06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 t 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraC2t06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2t06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double tta, ttb, uta, utb, xp, yp, rc2t[3][3];
+
+
+   tta = 2400000.5;
+   uta = 2400000.5;
+   ttb = 53736.0;
+   utb = 53736.0;
+   xp = 2.55060238e-7;
+   yp = 1.860359247e-6;
+
+   eraC2t06a(tta, ttb, uta, utb, xp, yp, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128305897282, 1e-12,
+       "eraC2t06a", "11", status);
+   vvd(rc2t[0][1], 0.9834769806938592296, 1e-12,
+       "eraC2t06a", "12", status);
+   vvd(rc2t[0][2], 0.6555550962998436505e-4, 1e-12,
+       "eraC2t06a", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134136214897, 1e-12,
+       "eraC2t06a", "21", status);
+   vvd(rc2t[1][1], -0.1810332203649130832, 1e-12,
+       "eraC2t06a", "22", status);
+   vvd(rc2t[1][2], 0.5749800844905594110e-3, 1e-12,
+       "eraC2t06a", "23", status);
+
+   vvd(rc2t[2][0], 0.5773474024748545878e-3, 1e-12,
+       "eraC2t06a", "31", status);
+   vvd(rc2t[2][1], 0.3961816829632690581e-4, 1e-12,
+       "eraC2t06a", "32", status);
+   vvd(rc2t[2][2], 0.9999998325501747785, 1e-12,
+       "eraC2t06a", "33", status);
+
+}
+
+static void t_c2tcio(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 t c i o
+**  - - - - - - - - -
+**
+**  Test eraC2tcio function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2tcio, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rc2i[3][3], era, rpom[3][3], rc2t[3][3];
+
+
+   rc2i[0][0] =  0.9999998323037164738;
+   rc2i[0][1] =  0.5581526271714303683e-9;
+   rc2i[0][2] = -0.5791308477073443903e-3;
+
+   rc2i[1][0] = -0.2384266227524722273e-7;
+   rc2i[1][1] =  0.9999999991917404296;
+   rc2i[1][2] = -0.4020594955030704125e-4;
+
+   rc2i[2][0] =  0.5791308472168153320e-3;
+   rc2i[2][1] =  0.4020595661593994396e-4;
+   rc2i[2][2] =  0.9999998314954572365;
+
+   era = 1.75283325530307;
+
+   rpom[0][0] =  0.9999999999999674705;
+   rpom[0][1] = -0.1367174580728847031e-10;
+   rpom[0][2] =  0.2550602379999972723e-6;
+
+   rpom[1][0] =  0.1414624947957029721e-10;
+   rpom[1][1] =  0.9999999999982694954;
+   rpom[1][2] = -0.1860359246998866338e-5;
+
+   rpom[2][0] = -0.2550602379741215275e-6;
+   rpom[2][1] =  0.1860359247002413923e-5;
+   rpom[2][2] =  0.9999999999982369658;
+
+
+   eraC2tcio(rc2i, era, rpom, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128307110439, 1e-12,
+       "eraC2tcio", "11", status);
+   vvd(rc2t[0][1], 0.9834769806938470149, 1e-12,
+       "eraC2tcio", "12", status);
+   vvd(rc2t[0][2], 0.6555535638685466874e-4, 1e-12,
+       "eraC2tcio", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134135996657, 1e-12,
+       "eraC2tcio", "21", status);
+   vvd(rc2t[1][1], -0.1810332203649448367, 1e-12,
+       "eraC2tcio", "22", status);
+   vvd(rc2t[1][2], 0.5749801116141106528e-3, 1e-12,
+       "eraC2tcio", "23", status);
+
+   vvd(rc2t[2][0], 0.5773474014081407076e-3, 1e-12,
+       "eraC2tcio", "31", status);
+   vvd(rc2t[2][1], 0.3961832391772658944e-4, 1e-12,
+       "eraC2tcio", "32", status);
+   vvd(rc2t[2][2], 0.9999998325501691969, 1e-12,
+       "eraC2tcio", "33", status);
+
+}
+
+static void t_c2teqx(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c 2 t e q x
+**  - - - - - - - - -
+**
+**  Test eraC2teqx function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2teqx, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3], gst, rpom[3][3], rc2t[3][3];
+
+
+   rbpn[0][0] =  0.9999989440476103608;
+   rbpn[0][1] = -0.1332881761240011518e-2;
+   rbpn[0][2] = -0.5790767434730085097e-3;
+
+   rbpn[1][0] =  0.1332858254308954453e-2;
+   rbpn[1][1] =  0.9999991109044505944;
+   rbpn[1][2] = -0.4097782710401555759e-4;
+
+   rbpn[2][0] =  0.5791308472168153320e-3;
+   rbpn[2][1] =  0.4020595661593994396e-4;
+   rbpn[2][2] =  0.9999998314954572365;
+
+   gst = 1.754166138040730516;
+
+   rpom[0][0] =  0.9999999999999674705;
+   rpom[0][1] = -0.1367174580728847031e-10;
+   rpom[0][2] =  0.2550602379999972723e-6;
+
+   rpom[1][0] =  0.1414624947957029721e-10;
+   rpom[1][1] =  0.9999999999982694954;
+   rpom[1][2] = -0.1860359246998866338e-5;
+
+   rpom[2][0] = -0.2550602379741215275e-6;
+   rpom[2][1] =  0.1860359247002413923e-5;
+   rpom[2][2] =  0.9999999999982369658;
+
+   eraC2teqx(rbpn, gst, rpom, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128528685730, 1e-12,
+       "eraC2teqx", "11", status);
+   vvd(rc2t[0][1], 0.9834769806897685071, 1e-12,
+       "eraC2teqx", "12", status);
+   vvd(rc2t[0][2], 0.6555535639982634449e-4, 1e-12,
+       "eraC2teqx", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134095211257, 1e-12,
+       "eraC2teqx", "21", status);
+   vvd(rc2t[1][1], -0.1810332203871023800, 1e-12,
+       "eraC2teqx", "22", status);
+   vvd(rc2t[1][2], 0.5749801116126438962e-3, 1e-12,
+       "eraC2teqx", "23", status);
+
+   vvd(rc2t[2][0], 0.5773474014081539467e-3, 1e-12,
+       "eraC2teqx", "31", status);
+   vvd(rc2t[2][1], 0.3961832391768640871e-4, 1e-12,
+       "eraC2teqx", "32", status);
+   vvd(rc2t[2][2], 0.9999998325501691969, 1e-12,
+       "eraC2teqx", "33", status);
+
+}
+
+static void t_c2tpe(int *status)
+/*
+**  - - - - - - - -
+**   t _ c 2 t p e
+**  - - - - - - - -
+**
+**  Test eraC2tpe function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2tpe, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t[3][3];
+
+
+   tta = 2400000.5;
+   uta = 2400000.5;
+   ttb = 53736.0;
+   utb = 53736.0;
+   deps =  0.4090789763356509900;
+   dpsi = -0.9630909107115582393e-5;
+   xp = 2.55060238e-7;
+   yp = 1.860359247e-6;
+
+   eraC2tpe(tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t);
+
+   vvd(rc2t[0][0], -0.1813677995763029394, 1e-12,
+       "eraC2tpe", "11", status);
+   vvd(rc2t[0][1], 0.9023482206891683275, 1e-12,
+       "eraC2tpe", "12", status);
+   vvd(rc2t[0][2], -0.3909902938641085751, 1e-12,
+       "eraC2tpe", "13", status);
+
+   vvd(rc2t[1][0], -0.9834147641476804807, 1e-12,
+       "eraC2tpe", "21", status);
+   vvd(rc2t[1][1], -0.1659883635434995121, 1e-12,
+       "eraC2tpe", "22", status);
+   vvd(rc2t[1][2], 0.7309763898042819705e-1, 1e-12,
+       "eraC2tpe", "23", status);
+
+   vvd(rc2t[2][0], 0.1059685430673215247e-2, 1e-12,
+       "eraC2tpe", "31", status);
+   vvd(rc2t[2][1], 0.3977631855605078674, 1e-12,
+       "eraC2tpe", "32", status);
+   vvd(rc2t[2][2], 0.9174875068792735362, 1e-12,
+       "eraC2tpe", "33", status);
+
+}
+
+static void t_c2txy(int *status)
+/*
+**  - - - - - - - -
+**   t _ c 2 t x y
+**  - - - - - - - -
+**
+**  Test eraC2txy function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraC2txy, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double tta, ttb, uta, utb, x, y, xp, yp, rc2t[3][3];
+
+
+   tta = 2400000.5;
+   uta = 2400000.5;
+   ttb = 53736.0;
+   utb = 53736.0;
+   x = 0.5791308486706011000e-3;
+   y = 0.4020579816732961219e-4;
+   xp = 2.55060238e-7;
+   yp = 1.860359247e-6;
+
+   eraC2txy(tta, ttb, uta, utb, x, y, xp, yp, rc2t);
+
+   vvd(rc2t[0][0], -0.1810332128306279253, 1e-12,
+       "eraC2txy", "11", status);
+   vvd(rc2t[0][1], 0.9834769806938520084, 1e-12,
+       "eraC2txy", "12", status);
+   vvd(rc2t[0][2], 0.6555551248057665829e-4, 1e-12,
+       "eraC2txy", "13", status);
+
+   vvd(rc2t[1][0], -0.9834768134136142314, 1e-12,
+       "eraC2txy", "21", status);
+   vvd(rc2t[1][1], -0.1810332203649529312, 1e-12,
+       "eraC2txy", "22", status);
+   vvd(rc2t[1][2], 0.5749800843594139912e-3, 1e-12,
+       "eraC2txy", "23", status);
+
+   vvd(rc2t[2][0], 0.5773474028619264494e-3, 1e-12,
+       "eraC2txy", "31", status);
+   vvd(rc2t[2][1], 0.3961816546911624260e-4, 1e-12,
+       "eraC2txy", "32", status);
+   vvd(rc2t[2][2], 0.9999998325501746670, 1e-12,
+       "eraC2txy", "33", status);
+
+}
+
+static void t_cal2jd(int *status)
+/*
+**  - - - - - - - - -
+**   t _ c a l 2 j d
+**  - - - - - - - - -
+**
+**  Test eraCal2jd function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraCal2jd, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   int j;
+   double djm0, djm;
+
+
+   j = eraCal2jd(2003, 06, 01, &djm0, &djm);
+
+   vvd(djm0, 2400000.5, 0.0, "eraCal2jd", "djm0", status);
+   vvd(djm,    52791.0, 0.0, "eraCal2jd", "djm", status);
+
+   viv(j, 0, "eraCal2jd", "j", status);
+
+}
+
+static void t_cp(int *status)
+/*
+**  - - - - -
+**   t _ c p
+**  - - - - -
+**
+**  Test eraCp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraCp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], c[3];
+
+
+   p[0] =  0.3;
+   p[1] =  1.2;
+   p[2] = -2.5;
+
+   eraCp(p, c);
+
+   vvd(c[0],  0.3, 0.0, "eraCp", "1", status);
+   vvd(c[1],  1.2, 0.0, "eraCp", "2", status);
+   vvd(c[2], -2.5, 0.0, "eraCp", "3", status);
+}
+
+static void t_cpv(int *status)
+/*
+**  - - - - - -
+**   t _ c p v
+**  - - - - - -
+**
+**  Test eraCpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraCpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], c[2][3];
+
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] = -0.5;
+   pv[1][1] =  3.1;
+   pv[1][2] =  0.9;
+
+   eraCpv(pv, c);
+
+   vvd(c[0][0],  0.3, 0.0, "eraCpv", "p1", status);
+   vvd(c[0][1],  1.2, 0.0, "eraCpv", "p2", status);
+   vvd(c[0][2], -2.5, 0.0, "eraCpv", "p3", status);
+
+   vvd(c[1][0], -0.5, 0.0, "eraCpv", "v1", status);
+   vvd(c[1][1],  3.1, 0.0, "eraCpv", "v2", status);
+   vvd(c[1][2],  0.9, 0.0, "eraCpv", "v3", status);
+
+}
+
+static void t_cr(int *status)
+/*
+**  - - - - -
+**   t _ c r
+**  - - - - -
+**
+**  Test eraCr function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraCr, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], c[3][3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraCr(r, c);
+
+   vvd(c[0][0], 2.0, 0.0, "eraCr", "11", status);
+   vvd(c[0][1], 3.0, 0.0, "eraCr", "12", status);
+   vvd(c[0][2], 2.0, 0.0, "eraCr", "13", status);
+
+   vvd(c[1][0], 3.0, 0.0, "eraCr", "21", status);
+   vvd(c[1][1], 2.0, 0.0, "eraCr", "22", status);
+   vvd(c[1][2], 3.0, 0.0, "eraCr", "23", status);
+
+   vvd(c[2][0], 3.0, 0.0, "eraCr", "31", status);
+   vvd(c[2][1], 4.0, 0.0, "eraCr", "32", status);
+   vvd(c[2][2], 5.0, 0.0, "eraCr", "33", status);
+}
+
+static void t_d2dtf(int *status )
+/*
+**  - - - - - - - -
+**   t _ d 2 d t f
+**  - - - - - - - -
+**
+**  Test eraD2dtf function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraD2dtf, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   int j, iy, im, id, ihmsf[4];
+
+
+   j = eraD2dtf("UTC", 5, 2400000.5, 49533.99999, &iy, &im, &id, ihmsf);
+
+   viv(iy, 1994, "eraD2dtf", "y", status);
+   viv(im, 6, "eraD2dtf", "mo", status);
+   viv(id, 30, "eraD2dtf", "d", status);
+   viv(ihmsf[0], 23, "eraD2dtf", "h", status);
+   viv(ihmsf[1], 59, "eraD2dtf", "m", status);
+   viv(ihmsf[2], 60, "eraD2dtf", "s", status);
+   viv(ihmsf[3], 13599, "eraD2dtf", "f", status);
+   viv(j, 0, "eraD2dtf", "j", status);
+
+}
+
+static void t_d2tf(int *status)
+/*
+**  - - - - - - -
+**   t _ d 2 t f
+**  - - - - - - -
+**
+**  Test eraD2tf function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraD2tf, viv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   int ihmsf[4];
+   char s;
+
+
+   eraD2tf(4, -0.987654321, &s, ihmsf);
+
+   viv((int)s, '-', "eraD2tf", "s", status);
+
+   viv(ihmsf[0], 23, "eraD2tf", "0", status);
+   viv(ihmsf[1], 42, "eraD2tf", "1", status);
+   viv(ihmsf[2], 13, "eraD2tf", "2", status);
+   viv(ihmsf[3], 3333, "eraD2tf", "3", status);
+
+}
+
+static void t_dat(int *status)
+/*
+**  - - - - - -
+**   t _ d a t
+**  - - - - - -
+**
+**  Test eraDat function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraDat, vvd, viv
+**
+**  This revision:  2016 July 11
+*/
+{
+   int j;
+   double deltat;
+
+
+   j = eraDat(2003, 6, 1, 0.0, &deltat);
+
+   vvd(deltat, 32.0, 0.0, "eraDat", "d1", status);
+   viv(j, 0, "eraDat", "j1", status);
+
+   j = eraDat(2008, 1, 17, 0.0, &deltat);
+
+   vvd(deltat, 33.0, 0.0, "eraDat", "d2", status);
+   viv(j, 0, "eraDat", "j2", status);
+
+   j = eraDat(2017, 9, 1, 0.0, &deltat);
+
+   vvd(deltat, 37.0, 0.0, "eraDat", "d3", status);
+   viv(j, 0, "eraDat", "j3", status);
+
+}
+
+static void t_dtdb(int *status)
+/*
+**  - - - - - - -
+**   t _ d t d b
+**  - - - - - - -
+**
+**  Test eraDtdb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraDtdb, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dtdb;
+
+
+   dtdb = eraDtdb(2448939.5, 0.123, 0.76543, 5.0123, 5525.242, 3190.0);
+
+   vvd(dtdb, -0.1280368005936998991e-2, 1e-15, "eraDtdb", "", status);
+
+}
+
+static void t_dtf2d(int *status)
+/*
+**  - - - - - - - -
+**   t _ d t f 2 d
+**  - - - - - - - -
+**
+**  Test eraDtf2d function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraDtf2d, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraDtf2d("UTC", 1994, 6, 30, 23, 59, 60.13599, &u1, &u2);
+
+   vvd(u1+u2, 2449534.49999, 1e-6, "eraDtf2d", "u", status);
+   viv(j, 0, "eraDtf2d", "j", status);
+
+}
+
+static void t_eceq06(int *status)
+/*
+**  - - - - -
+**   t _ e c e q 0 6
+**  - - - - -
+**
+**  Test eraEceq06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEceq06, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double date1, date2, dl, db, dr, dd;
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+   dl = 5.1;
+   db = -0.9;
+
+   eraEceq06(date1, date2, dl, db, &dr, &dd);
+
+   vvd(dr, 5.533459733613627767, 1e-14, "eraEceq06", "dr", status);
+   vvd(dd, -1.246542932554480576, 1e-14, "eraEceq06", "dd", status);
+
+}
+
+static void t_ecm06(int *status)
+/*
+**  - - - - - - - -
+**   t _ e c m 0 6
+**  - - - - - - - -
+**
+**  Test eraEcm06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEcm06, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double date1, date2, rm[3][3];
+
+
+   date1 = 2456165.5;
+   date2 = 0.401182685;
+
+   eraEcm06(date1, date2, rm);
+
+   vvd(rm[0][0], 0.9999952427708701137, 1e-14,
+       "eraEcm06", "rm11", status);
+   vvd(rm[0][1], -0.2829062057663042347e-2, 1e-14,
+       "eraEcm06", "rm12", status);
+   vvd(rm[0][2], -0.1229163741100017629e-2, 1e-14,
+       "eraEcm06", "rm13", status);
+   vvd(rm[1][0], 0.3084546876908653562e-2, 1e-14,
+       "eraEcm06", "rm21", status);
+   vvd(rm[1][1], 0.9174891871550392514, 1e-14,
+       "eraEcm06", "rm22", status);
+   vvd(rm[1][2], 0.3977487611849338124, 1e-14,
+       "eraEcm06", "rm23", status);
+   vvd(rm[2][0], 0.2488512951527405928e-5, 1e-14,
+       "eraEcm06", "rm31", status);
+   vvd(rm[2][1], -0.3977506604161195467, 1e-14,
+       "eraEcm06", "rm32", status);
+   vvd(rm[2][2], 0.9174935488232863071, 1e-14,
+       "eraEcm06", "rm33", status);
+
+}
+
+static void t_ee00(int *status)
+/*
+**  - - - - - - -
+**   t _ e e 0 0
+**  - - - - - - -
+**
+**  Test eraEe00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEe00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epsa, dpsi, ee;
+
+
+   epsa =  0.4090789763356509900;
+   dpsi = -0.9630909107115582393e-5;
+
+   ee = eraEe00(2400000.5, 53736.0, epsa, dpsi);
+
+   vvd(ee, -0.8834193235367965479e-5, 1e-18, "eraEe00", "", status);
+
+}
+
+static void t_ee00a(int *status)
+/*
+**  - - - - - - - -
+**   t _ e e 0 0 a
+**  - - - - - - - -
+**
+**  Test eraEe00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEe00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ee;
+
+
+   ee = eraEe00a(2400000.5, 53736.0);
+
+   vvd(ee, -0.8834192459222588227e-5, 1e-18, "eraEe00a", "", status);
+
+}
+
+static void t_ee00b(int *status)
+/*
+**  - - - - - - - -
+**   t _ e e 0 0 b
+**  - - - - - - - -
+**
+**  Test eraEe00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEe00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ee;
+
+
+   ee = eraEe00b(2400000.5, 53736.0);
+
+   vvd(ee, -0.8835700060003032831e-5, 1e-18, "eraEe00b", "", status);
+
+}
+
+static void t_ee06a(int *status)
+/*
+**  - - - - - - - -
+**   t _ e e 0 6 a
+**  - - - - - - - -
+**
+**  Test eraEe06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEe06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ee;
+
+
+   ee = eraEe06a(2400000.5, 53736.0);
+
+   vvd(ee, -0.8834195072043790156e-5, 1e-15, "eraEe06a", "", status);
+}
+
+static void t_eect00(int *status)
+/*
+**  - - - - - - - - -
+**   t _ e e c t 0 0
+**  - - - - - - - - -
+**
+**  Test eraEect00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEect00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double eect;
+
+
+   eect = eraEect00(2400000.5, 53736.0);
+
+   vvd(eect, 0.2046085004885125264e-8, 1e-20, "eraEect00", "", status);
+
+}
+
+static void t_eform(int *status)
+/*
+**  - - - - - - - -
+**   t _ e f o r m
+**  - - - - - - - -
+**
+**  Test eraEform function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEform, viv, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   int j;
+   double a, f;
+
+   j = eraEform(0, &a, &f);
+
+   viv(j, -1, "eraEform", "j0", status);
+
+   j = eraEform(ERFA_WGS84, &a, &f);
+
+   viv(j, 0, "eraEform", "j1", status);
+   vvd(a, 6378137.0, 1e-10, "eraEform", "a1", status);
+   vvd(f, 0.3352810664747480720e-2, 1e-18, "eraEform", "f1", status);
+
+   j = eraEform(ERFA_GRS80, &a, &f);
+
+   viv(j, 0, "eraEform", "j2", status);
+   vvd(a, 6378137.0, 1e-10, "eraEform", "a2", status);
+   vvd(f, 0.3352810681182318935e-2, 1e-18, "eraEform", "f2", status);
+
+   j = eraEform(ERFA_WGS72, &a, &f);
+
+   viv(j, 0, "eraEform", "j2", status);
+   vvd(a, 6378135.0, 1e-10, "eraEform", "a3", status);
+   vvd(f, 0.3352779454167504862e-2, 1e-18, "eraEform", "f3", status);
+
+   j = eraEform(4, &a, &f);
+   viv(j, -1, "eraEform", "j3", status);
+}
+
+static void t_eo06a(int *status)
+/*
+**  - - - - - - - -
+**   t _ e o 0 6 a
+**  - - - - - - - -
+**
+**  Test eraEo06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEo06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double eo;
+
+
+   eo = eraEo06a(2400000.5, 53736.0);
+
+   vvd(eo, -0.1332882371941833644e-2, 1e-15, "eraEo06a", "", status);
+
+}
+
+static void t_eors(int *status)
+/*
+**  - - - - - - -
+**   t _ e o r s
+**  - - - - - - -
+**
+**  Test eraEors function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEors, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rnpb[3][3], s, eo;
+
+
+   rnpb[0][0] =  0.9999989440476103608;
+   rnpb[0][1] = -0.1332881761240011518e-2;
+   rnpb[0][2] = -0.5790767434730085097e-3;
+
+   rnpb[1][0] =  0.1332858254308954453e-2;
+   rnpb[1][1] =  0.9999991109044505944;
+   rnpb[1][2] = -0.4097782710401555759e-4;
+
+   rnpb[2][0] =  0.5791308472168153320e-3;
+   rnpb[2][1] =  0.4020595661593994396e-4;
+   rnpb[2][2] =  0.9999998314954572365;
+
+   s = -0.1220040848472271978e-7;
+
+   eo = eraEors(rnpb, s);
+
+   vvd(eo, -0.1332882715130744606e-2, 1e-14, "eraEors", "", status);
+
+}
+
+static void t_epb(int *status)
+/*
+**  - - - - - -
+**   t _ e p b
+**  - - - - - -
+**
+**  Test eraEpb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEpb, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epb;
+
+
+   epb = eraEpb(2415019.8135, 30103.18648);
+
+   vvd(epb, 1982.418424159278580, 1e-12, "eraEpb", "", status);
+
+}
+
+static void t_epb2jd(int *status)
+/*
+**  - - - - - - - - -
+**   t _ e p b 2 j d
+**  - - - - - - - - -
+**
+**  Test eraEpb2jd function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEpb2jd, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epb, djm0, djm;
+
+
+   epb = 1957.3;
+
+   eraEpb2jd(epb, &djm0, &djm);
+
+   vvd(djm0, 2400000.5, 1e-9, "eraEpb2jd", "djm0", status);
+   vvd(djm, 35948.1915101513, 1e-9, "eraEpb2jd", "mjd", status);
+
+}
+
+static void t_epj(int *status)
+/*
+**  - - - - - -
+**   t _ e p j
+**  - - - - - -
+**
+**  Test eraEpj function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEpj, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epj;
+
+
+   epj = eraEpj(2451545, -7392.5);
+
+   vvd(epj, 1979.760438056125941, 1e-12, "eraEpj", "", status);
+
+}
+
+static void t_epj2jd(int *status)
+/*
+**  - - - - - - - - -
+**   t _ e p j 2 j d
+**  - - - - - - - - -
+**
+**  Test eraEpj2jd function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEpj2jd, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epj, djm0, djm;
+
+
+   epj = 1996.8;
+
+   eraEpj2jd(epj, &djm0, &djm);
+
+   vvd(djm0, 2400000.5, 1e-9, "eraEpj2jd", "djm0", status);
+   vvd(djm,    50375.7, 1e-9, "eraEpj2jd", "mjd",  status);
+
+}
+
+static void t_epv00(int *status)
+/*
+**  - - - - - - - -
+**   t _ e p v 0 0
+**  - - - - - - - -
+**
+**  Test eraEpv00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called: eraEpv00, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pvh[2][3], pvb[2][3];
+   int j;
+
+
+   j = eraEpv00(2400000.5, 53411.52501161, pvh, pvb);
+
+   vvd(pvh[0][0], -0.7757238809297706813, 1e-14,
+       "eraEpv00", "ph(x)", status);
+   vvd(pvh[0][1], 0.5598052241363340596, 1e-14,
+       "eraEpv00", "ph(y)", status);
+   vvd(pvh[0][2], 0.2426998466481686993, 1e-14,
+       "eraEpv00", "ph(z)", status);
+
+   vvd(pvh[1][0], -0.1091891824147313846e-1, 1e-15,
+       "eraEpv00", "vh(x)", status);
+   vvd(pvh[1][1], -0.1247187268440845008e-1, 1e-15,
+       "eraEpv00", "vh(y)", status);
+   vvd(pvh[1][2], -0.5407569418065039061e-2, 1e-15,
+       "eraEpv00", "vh(z)", status);
+
+   vvd(pvb[0][0], -0.7714104440491111971, 1e-14,
+       "eraEpv00", "pb(x)", status);
+   vvd(pvb[0][1], 0.5598412061824171323, 1e-14,
+       "eraEpv00", "pb(y)", status);
+   vvd(pvb[0][2], 0.2425996277722452400, 1e-14,
+       "eraEpv00", "pb(z)", status);
+
+   vvd(pvb[1][0], -0.1091874268116823295e-1, 1e-15,
+       "eraEpv00", "vb(x)", status);
+   vvd(pvb[1][1], -0.1246525461732861538e-1, 1e-15,
+       "eraEpv00", "vb(y)", status);
+   vvd(pvb[1][2], -0.5404773180966231279e-2, 1e-15,
+       "eraEpv00", "vb(z)", status);
+
+   viv(j, 0, "eraEpv00", "j", status);
+
+}
+
+static void t_eqec06(int *status)
+/*
+**  - - - - - - - - -
+**   t _ e q e c 0 6
+**  - - - - - - - - -
+**
+**  Test eraEqec06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEqec06, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double date1, date2, dr, dd, dl, db;
+
+
+   date1 = 1234.5;
+   date2 = 2440000.5;
+   dr = 1.234;
+   dd = 0.987;
+
+   eraEqec06(date1, date2, dr, dd, &dl, &db);
+
+   vvd(dl, 1.342509918994654619, 1e-14, "eraEqec06", "dl", status);
+   vvd(db, 0.5926215259704608132, 1e-14, "eraEqec06", "db", status);
+
+}
+
+static void t_eqeq94(int *status)
+/*
+**  - - - - - - - - -
+**   t _ e q e q 9 4
+**  - - - - - - - - -
+**
+**  Test eraEqeq94 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEqeq94, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double eqeq;
+
+
+   eqeq = eraEqeq94(2400000.5, 41234.0);
+
+   vvd(eqeq, 0.5357758254609256894e-4, 1e-17, "eraEqeq94", "", status);
+
+}
+
+static void t_era00(int *status)
+/*
+**  - - - - - - - -
+**   t _ e r a 0 0
+**  - - - - - - - -
+**
+**  Test eraEra00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraEra00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double era00;
+
+
+   era00 = eraEra00(2400000.5, 54388.0);
+
+   vvd(era00, 0.4022837240028158102, 1e-12, "eraEra00", "", status);
+
+}
+
+static void t_fad03(int *status)
+/*
+**  - - - - - - - -
+**   t _ f a d 0 3
+**  - - - - - - - -
+**
+**  Test eraFad03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFad03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFad03(0.80), 1.946709205396925672, 1e-12,
+       "eraFad03", "", status);
+}
+
+static void t_fae03(int *status)
+/*
+**  - - - - - - - -
+**   t _ f a e 0 3
+**  - - - - - - - -
+**
+**  Test eraFae03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFae03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFae03(0.80), 1.744713738913081846, 1e-12,
+       "eraFae03", "", status);
+}
+
+static void t_faf03(int *status)
+/*
+**  - - - - - - - -
+**   t _ f a f 0 3
+**  - - - - - - - -
+**
+**  Test eraFaf03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFaf03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFaf03(0.80), 0.2597711366745499518, 1e-12,
+       "eraFaf03", "", status);
+}
+
+static void t_faju03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a j u 0 3
+**  - - - - - - - - -
+**
+**  Test eraFaju03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFaju03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFaju03(0.80), 5.275711665202481138, 1e-12,
+       "eraFaju03", "", status);
+}
+
+static void t_fal03(int *status)
+/*
+**  - - - - - - - -
+**   t _ f a l 0 3
+**  - - - - - - - -
+**
+**  Test eraFal03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFal03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFal03(0.80), 5.132369751108684150, 1e-12,
+       "eraFal03", "", status);
+}
+
+static void t_falp03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a l p 0 3
+**  - - - - - - - - -
+**
+**  Test eraFalp03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFalp03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFalp03(0.80), 6.226797973505507345, 1e-12,
+      "eraFalp03", "", status);
+}
+
+static void t_fama03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a m a 0 3
+**  - - - - - - - - -
+**
+**  Test eraFama03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFama03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFama03(0.80), 3.275506840277781492, 1e-12,
+       "eraFama03", "", status);
+}
+
+static void t_fame03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a m e 0 3
+**  - - - - - - - - -
+**
+**  Test eraFame03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFame03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFame03(0.80), 5.417338184297289661, 1e-12,
+       "eraFame03", "", status);
+}
+
+static void t_fane03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a n e 0 3
+**  - - - - - - - - -
+**
+**  Test eraFane03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFane03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFane03(0.80), 2.079343830860413523, 1e-12,
+       "eraFane03", "", status);
+}
+
+static void t_faom03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a o m 0 3
+**  - - - - - - - - -
+**
+**  Test eraFaom03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFaom03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFaom03(0.80), -5.973618440951302183, 1e-12,
+       "eraFaom03", "", status);
+}
+
+static void t_fapa03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a p a 0 3
+**  - - - - - - - - -
+**
+**  Test eraFapa03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFapa03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFapa03(0.80), 0.1950884762240000000e-1, 1e-12,
+       "eraFapa03", "", status);
+}
+
+static void t_fasa03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a s a 0 3
+**  - - - - - - - - -
+**
+**  Test eraFasa03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFasa03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFasa03(0.80), 5.371574539440827046, 1e-12,
+       "eraFasa03", "", status);
+}
+
+static void t_faur03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a u r 0 3
+**  - - - - - - - - -
+**
+**  Test eraFaur03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFaur03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFaur03(0.80), 5.180636450180413523, 1e-12,
+       "eraFaur03", "", status);
+}
+
+static void t_fave03(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f a v e 0 3
+**  - - - - - - - - -
+**
+**  Test eraFave03 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFave03, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraFave03(0.80), 3.424900460533758000, 1e-12,
+       "eraFave03", "", status);
+}
+
+static void t_fk52h(int *status)
+/*
+**  - - - - - - - -
+**   t _ f k 5 2 h
+**  - - - - - - - -
+**
+**  Test eraFk52h function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFk52h, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r5, d5, dr5, dd5, px5, rv5, rh, dh, drh, ddh, pxh, rvh;
+
+
+   r5  =  1.76779433;
+   d5  = -0.2917517103;
+   dr5 = -1.91851572e-7;
+   dd5 = -5.8468475e-6;
+   px5 =  0.379210;
+   rv5 = -7.6;
+
+   eraFk52h(r5, d5, dr5, dd5, px5, rv5,
+            &rh, &dh, &drh, &ddh, &pxh, &rvh);
+
+   vvd(rh, 1.767794226299947632, 1e-14,
+       "eraFk52h", "ra", status);
+   vvd(dh,  -0.2917516070530391757, 1e-14,
+       "eraFk52h", "dec", status);
+   vvd(drh, -0.19618741256057224e-6,1e-19,
+       "eraFk52h", "dr5", status);
+   vvd(ddh, -0.58459905176693911e-5, 1e-19,
+       "eraFk52h", "dd5", status);
+   vvd(pxh,  0.37921, 1e-14,
+       "eraFk52h", "px", status);
+   vvd(rvh, -7.6000000940000254, 1e-11,
+       "eraFk52h", "rv", status);
+
+}
+
+static void t_fk5hip(int *status)
+/*
+**  - - - - - - - - -
+**   t _ f k 5 h i p
+**  - - - - - - - - -
+**
+**  Test eraFk5hip function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFk5hip, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r5h[3][3], s5h[3];
+
+
+   eraFk5hip(r5h, s5h);
+
+   vvd(r5h[0][0], 0.9999999999999928638, 1e-14,
+       "eraFk5hip", "11", status);
+   vvd(r5h[0][1], 0.1110223351022919694e-6, 1e-17,
+       "eraFk5hip", "12", status);
+   vvd(r5h[0][2], 0.4411803962536558154e-7, 1e-17,
+       "eraFk5hip", "13", status);
+   vvd(r5h[1][0], -0.1110223308458746430e-6, 1e-17,
+       "eraFk5hip", "21", status);
+   vvd(r5h[1][1], 0.9999999999999891830, 1e-14,
+       "eraFk5hip", "22", status);
+   vvd(r5h[1][2], -0.9647792498984142358e-7, 1e-17,
+       "eraFk5hip", "23", status);
+   vvd(r5h[2][0], -0.4411805033656962252e-7, 1e-17,
+       "eraFk5hip", "31", status);
+   vvd(r5h[2][1], 0.9647792009175314354e-7, 1e-17,
+       "eraFk5hip", "32", status);
+   vvd(r5h[2][2], 0.9999999999999943728, 1e-14,
+       "eraFk5hip", "33", status);
+   vvd(s5h[0], -0.1454441043328607981e-8, 1e-17,
+       "eraFk5hip", "s1", status);
+   vvd(s5h[1], 0.2908882086657215962e-8, 1e-17,
+       "eraFk5hip", "s2", status);
+   vvd(s5h[2], 0.3393695767766751955e-8, 1e-17,
+       "eraFk5hip", "s3", status);
+
+}
+
+static void t_fk5hz(int *status)
+/*
+**  - - - - - - - -
+**   t _ f k 5 h z
+**  - - - - - - - -
+**
+**  Test eraFk5hz function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFk5hz, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r5, d5, rh, dh;
+
+
+   r5 =  1.76779433;
+   d5 = -0.2917517103;
+
+   eraFk5hz(r5, d5, 2400000.5, 54479.0, &rh, &dh);
+
+   vvd(rh,  1.767794191464423978, 1e-12, "eraFk5hz", "ra", status);
+   vvd(dh, -0.2917516001679884419, 1e-12, "eraFk5hz", "dec", status);
+
+}
+
+static void t_fw2m(int *status)
+/*
+**  - - - - - - -
+**   t _ f w 2 m
+**  - - - - - - -
+**
+**  Test eraFw2m function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFw2m, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double gamb, phib, psi, eps, r[3][3];
+
+
+   gamb = -0.2243387670997992368e-5;
+   phib =  0.4091014602391312982;
+   psi  = -0.9501954178013015092e-3;
+   eps  =  0.4091014316587367472;
+
+   eraFw2m(gamb, phib, psi, eps, r);
+
+   vvd(r[0][0], 0.9999995505176007047, 1e-12,
+       "eraFw2m", "11", status);
+   vvd(r[0][1], 0.8695404617348192957e-3, 1e-12,
+       "eraFw2m", "12", status);
+   vvd(r[0][2], 0.3779735201865582571e-3, 1e-12,
+       "eraFw2m", "13", status);
+
+   vvd(r[1][0], -0.8695404723772016038e-3, 1e-12,
+       "eraFw2m", "21", status);
+   vvd(r[1][1], 0.9999996219496027161, 1e-12,
+       "eraFw2m", "22", status);
+   vvd(r[1][2], -0.1361752496887100026e-6, 1e-12,
+       "eraFw2m", "23", status);
+
+   vvd(r[2][0], -0.3779734957034082790e-3, 1e-12,
+       "eraFw2m", "31", status);
+   vvd(r[2][1], -0.1924880848087615651e-6, 1e-12,
+       "eraFw2m", "32", status);
+   vvd(r[2][2], 0.9999999285679971958, 1e-12,
+       "eraFw2m", "33", status);
+
+}
+
+static void t_fw2xy(int *status)
+/*
+**  - - - - - - - -
+**   t _ f w 2 x y
+**  - - - - - - - -
+**
+**  Test eraFw2xy function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraFw2xy, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double gamb, phib, psi, eps, x, y;
+
+
+   gamb = -0.2243387670997992368e-5;
+   phib =  0.4091014602391312982;
+   psi  = -0.9501954178013015092e-3;
+   eps  =  0.4091014316587367472;
+
+   eraFw2xy(gamb, phib, psi, eps, &x, &y);
+
+   vvd(x, -0.3779734957034082790e-3, 1e-14, "eraFw2xy", "x", status);
+   vvd(y, -0.1924880848087615651e-6, 1e-14, "eraFw2xy", "y", status);
+
+}
+
+static void t_g2icrs(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g 2 i c r s
+**  - - - - - - - - -
+**
+**  Test eraG2icrs function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraG2icrs, vvd
+**
+**  This revision:  2015 January 30
+*/
+{
+   double dl, db, dr, dd;
+
+
+   dl =  5.5850536063818546461558105;
+   db = -0.7853981633974483096156608;
+   eraG2icrs (dl, db, &dr, &dd);
+   vvd(dr,  5.9338074302227188048671, 1e-14, "eraG2icrs", "R", status);
+   vvd(dd, -1.1784870613579944551541, 1e-14, "eraG2icrs", "D", status);
+ }
+
+static void t_gc2gd(int *status)
+/*
+**  - - - - - - - -
+**   t _ g c 2 g d
+**  - - - - - - - -
+**
+**  Test eraGc2gd function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGc2gd, viv, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   int j;
+   double xyz[] = {2e6, 3e6, 5.244e6};
+   double e, p, h;
+
+   j = eraGc2gd(0, xyz, &e, &p, &h);
+
+   viv(j, -1, "eraGc2gd", "j0", status);
+
+   j = eraGc2gd(ERFA_WGS84, xyz, &e, &p, &h);
+
+   viv(j, 0, "eraGc2gd", "j1", status);
+   vvd(e, 0.9827937232473290680, 1e-14, "eraGc2gd", "e1", status);
+   vvd(p, 0.97160184819075459, 1e-14, "eraGc2gd", "p1", status);
+   vvd(h, 331.4172461426059892, 1e-8, "eraGc2gd", "h1", status);
+
+   j = eraGc2gd(ERFA_GRS80, xyz, &e, &p, &h);
+
+   viv(j, 0, "eraGc2gd", "j2", status);
+   vvd(e, 0.9827937232473290680, 1e-14, "eraGc2gd", "e2", status);
+   vvd(p, 0.97160184820607853, 1e-14, "eraGc2gd", "p2", status);
+   vvd(h, 331.41731754844348, 1e-8, "eraGc2gd", "h2", status);
+
+   j = eraGc2gd(ERFA_WGS72, xyz, &e, &p, &h);
+
+   viv(j, 0, "eraGc2gd", "j3", status);
+   vvd(e, 0.9827937232473290680, 1e-14, "eraGc2gd", "e3", status);
+   vvd(p, 0.9716018181101511937, 1e-14, "eraGc2gd", "p3", status);
+   vvd(h, 333.2770726130318123, 1e-8, "eraGc2gd", "h3", status);
+
+   j = eraGc2gd(4, xyz, &e, &p, &h);
+
+   viv(j, -1, "eraGc2gd", "j4", status);
+}
+
+static void t_gc2gde(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g c 2 g d e
+**  - - - - - - - - -
+**
+**  Test eraGc2gde function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGc2gde, viv, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   int j;
+   double a = 6378136.0, f = 0.0033528;
+   double xyz[] = {2e6, 3e6, 5.244e6};
+   double e, p, h;
+
+   j = eraGc2gde(a, f, xyz, &e, &p, &h);
+
+   viv(j, 0, "eraGc2gde", "j", status);
+   vvd(e, 0.9827937232473290680, 1e-14, "eraGc2gde", "e", status);
+   vvd(p, 0.9716018377570411532, 1e-14, "eraGc2gde", "p", status);
+   vvd(h, 332.36862495764397, 1e-8, "eraGc2gde", "h", status);
+}
+
+static void t_gd2gc(int *status)
+/*
+**  - - - - - - - -
+**   t _ g d 2 g c
+**  - - - - - - - -
+**
+**  Test eraGd2gc function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGd2gc, viv, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   int j;
+   double e = 3.1, p = -0.5, h = 2500.0;
+   double xyz[3];
+
+   j = eraGd2gc(0, e, p, h, xyz);
+
+   viv(j, -1, "eraGd2gc", "j0", status);
+
+   j = eraGd2gc(ERFA_WGS84, e, p, h, xyz);
+
+   viv(j, 0, "eraGd2gc", "j1", status);
+   vvd(xyz[0], -5599000.5577049947, 1e-7, "eraGd2gc", "1/1", status);
+   vvd(xyz[1], 233011.67223479203, 1e-7, "eraGd2gc", "2/1", status);
+   vvd(xyz[2], -3040909.4706983363, 1e-7, "eraGd2gc", "3/1", status);
+
+   j = eraGd2gc(ERFA_GRS80, e, p, h, xyz);
+
+   viv(j, 0, "eraGd2gc", "j2", status);
+   vvd(xyz[0], -5599000.5577260984, 1e-7, "eraGd2gc", "1/2", status);
+   vvd(xyz[1], 233011.6722356702949, 1e-7, "eraGd2gc", "2/2", status);
+   vvd(xyz[2], -3040909.4706095476, 1e-7, "eraGd2gc", "3/2", status);
+
+   j = eraGd2gc(ERFA_WGS72, e, p, h, xyz);
+
+   viv(j, 0, "eraGd2gc", "j3", status);
+   vvd(xyz[0], -5598998.7626301490, 1e-7, "eraGd2gc", "1/3", status);
+   vvd(xyz[1], 233011.5975297822211, 1e-7, "eraGd2gc", "2/3", status);
+   vvd(xyz[2], -3040908.6861467111, 1e-7, "eraGd2gc", "3/3", status);
+
+   j = eraGd2gc(4, e, p, h, xyz);
+
+   viv(j, -1, "eraGd2gc", "j4", status);
+}
+
+static void t_gd2gce(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g d 2 g c e
+**  - - - - - - - - -
+**
+**  Test eraGd2gce function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGd2gce, viv, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   int j;
+   double a = 6378136.0, f = 0.0033528;
+   double e = 3.1, p = -0.5, h = 2500.0;
+   double xyz[3];
+
+   j = eraGd2gce(a, f, e, p, h, xyz);
+
+   viv(j, 0, "eraGd2gce", "j", status);
+   vvd(xyz[0], -5598999.6665116328, 1e-7, "eraGd2gce", "1", status);
+   vvd(xyz[1], 233011.6351463057189, 1e-7, "eraGd2gce", "2", status);
+   vvd(xyz[2], -3040909.0517314132, 1e-7, "eraGd2gce", "3", status);
+}
+
+static void t_gmst00(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g m s t 0 0
+**  - - - - - - - - -
+**
+**  Test eraGmst00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGmst00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGmst00(2400000.5, 53736.0, 2400000.5, 53736.0);
+
+   vvd(theta, 1.754174972210740592, 1e-12, "eraGmst00", "", status);
+
+}
+
+static void t_gmst06(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g m s t 0 6
+**  - - - - - - - - -
+**
+**  Test eraGmst06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGmst06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGmst06(2400000.5, 53736.0, 2400000.5, 53736.0);
+
+   vvd(theta, 1.754174971870091203, 1e-12, "eraGmst06", "", status);
+
+}
+
+static void t_gmst82(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g m s t 8 2
+**  - - - - - - - - -
+**
+**  Test eraGmst82 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGmst82, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGmst82(2400000.5, 53736.0);
+
+   vvd(theta, 1.754174981860675096, 1e-12, "eraGmst82", "", status);
+
+}
+
+static void t_gst00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g s t 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraGst00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGst00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGst00a(2400000.5, 53736.0, 2400000.5, 53736.0);
+
+   vvd(theta, 1.754166138018281369, 1e-12, "eraGst00a", "", status);
+
+}
+
+static void t_gst00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g s t 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraGst00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGst00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGst00b(2400000.5, 53736.0);
+
+   vvd(theta, 1.754166136510680589, 1e-12, "eraGst00b", "", status);
+
+}
+
+static void t_gst06(int *status)
+/*
+**  - - - - - - - -
+**   t _ g s t 0 6
+**  - - - - - - - -
+**
+**  Test eraGst06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGst06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rnpb[3][3], theta;
+
+
+   rnpb[0][0] =  0.9999989440476103608;
+   rnpb[0][1] = -0.1332881761240011518e-2;
+   rnpb[0][2] = -0.5790767434730085097e-3;
+
+   rnpb[1][0] =  0.1332858254308954453e-2;
+   rnpb[1][1] =  0.9999991109044505944;
+   rnpb[1][2] = -0.4097782710401555759e-4;
+
+   rnpb[2][0] =  0.5791308472168153320e-3;
+   rnpb[2][1] =  0.4020595661593994396e-4;
+   rnpb[2][2] =  0.9999998314954572365;
+
+   theta = eraGst06(2400000.5, 53736.0, 2400000.5, 53736.0, rnpb);
+
+   vvd(theta, 1.754166138018167568, 1e-12, "eraGst06", "", status);
+
+}
+
+static void t_gst06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ g s t 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraGst06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGst06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGst06a(2400000.5, 53736.0, 2400000.5, 53736.0);
+
+   vvd(theta, 1.754166137675019159, 1e-12, "eraGst06a", "", status);
+
+}
+
+static void t_gst94(int *status)
+/*
+**  - - - - - - - -
+**   t _ g s t 9 4
+**  - - - - - - - -
+**
+**  Test eraGst94 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraGst94, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta;
+
+
+   theta = eraGst94(2400000.5, 53736.0);
+
+   vvd(theta, 1.754166136020645203, 1e-12, "eraGst94", "", status);
+
+}
+
+static void t_icrs2g(int *status)
+/*
+**  - - - - - - - - -
+**   t _ i c r s 2 g
+**  - - - - - - - - -
+**
+**  Test eraIcrs2g function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraIcrs2g, vvd
+**
+**  This revision:  2015 January 30
+*/
+{
+   double dr, dd, dl, db;
+
+   dr =  5.9338074302227188048671087;
+   dd = -1.1784870613579944551540570;
+   eraIcrs2g (dr, dd, &dl, &db);
+   vvd(dl,  5.5850536063818546461558, 1e-14, "eraIcrs2g", "L", status);
+   vvd(db, -0.7853981633974483096157, 1e-14, "eraIcrs2g", "B", status);
+ }
+
+static void t_h2fk5(int *status)
+/*
+**  - - - - - - - -
+**   t _ h 2 f k 5
+**  - - - - - - - -
+**
+**  Test eraH2fk5 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraH2fk5, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rh, dh, drh, ddh, pxh, rvh, r5, d5, dr5, dd5, px5, rv5;
+
+
+   rh  =  1.767794352;
+   dh  = -0.2917512594;
+   drh = -2.76413026e-6;
+   ddh = -5.92994449e-6;
+   pxh =  0.379210;
+   rvh = -7.6;
+
+   eraH2fk5(rh, dh, drh, ddh, pxh, rvh,
+            &r5, &d5, &dr5, &dd5, &px5, &rv5);
+
+   vvd(r5, 1.767794455700065506, 1e-13,
+       "eraH2fk5", "ra", status);
+   vvd(d5, -0.2917513626469638890, 1e-13,
+       "eraH2fk5", "dec", status);
+   vvd(dr5, -0.27597945024511204e-5, 1e-18,
+       "eraH2fk5", "dr5", status);
+   vvd(dd5, -0.59308014093262838e-5, 1e-18,
+       "eraH2fk5", "dd5", status);
+   vvd(px5, 0.37921, 1e-13,
+       "eraH2fk5", "px", status);
+   vvd(rv5, -7.6000001309071126, 1e-10,
+       "eraH2fk5", "rv", status);
+
+}
+
+static void t_hfk5z(int *status)
+/*
+**  - - - - - - - -
+**   t _ h f k 5 z
+**  - - - - - - - -
+**
+**  Test eraHfk5z function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraHfk5z, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rh, dh, r5, d5, dr5, dd5;
+
+
+
+   rh =  1.767794352;
+   dh = -0.2917512594;
+
+   eraHfk5z(rh, dh, 2400000.5, 54479.0, &r5, &d5, &dr5, &dd5);
+
+   vvd(r5, 1.767794490535581026, 1e-13,
+       "eraHfk5z", "ra", status);
+   vvd(d5, -0.2917513695320114258, 1e-14,
+       "eraHfk5z", "dec", status);
+   vvd(dr5, 0.4335890983539243029e-8, 1e-22,
+       "eraHfk5z", "dr5", status);
+   vvd(dd5, -0.8569648841237745902e-9, 1e-23,
+       "eraHfk5z", "dd5", status);
+
+}
+
+static void t_ir(int *status)
+/*
+**  - - - - -
+**   t _ i r
+**  - - - - -
+**
+**  Test eraIr function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraIr, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraIr(r);
+
+   vvd(r[0][0], 1.0, 0.0, "eraIr", "11", status);
+   vvd(r[0][1], 0.0, 0.0, "eraIr", "12", status);
+   vvd(r[0][2], 0.0, 0.0, "eraIr", "13", status);
+
+   vvd(r[1][0], 0.0, 0.0, "eraIr", "21", status);
+   vvd(r[1][1], 1.0, 0.0, "eraIr", "22", status);
+   vvd(r[1][2], 0.0, 0.0, "eraIr", "23", status);
+
+   vvd(r[2][0], 0.0, 0.0, "eraIr", "31", status);
+   vvd(r[2][1], 0.0, 0.0, "eraIr", "32", status);
+   vvd(r[2][2], 1.0, 0.0, "eraIr", "33", status);
+
+}
+
+static void t_jd2cal(int *status)
+/*
+**  - - - - - - - - -
+**   t _ j d 2 c a l
+**  - - - - - - - - -
+**
+**  Test eraJd2cal function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraJd2cal, viv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dj1, dj2, fd;
+   int iy, im, id, j;
+
+
+   dj1 = 2400000.5;
+   dj2 = 50123.9999;
+
+   j = eraJd2cal(dj1, dj2, &iy, &im, &id, &fd);
+
+   viv(iy, 1996, "eraJd2cal", "y", status);
+   viv(im, 2, "eraJd2cal", "m", status);
+   viv(id, 10, "eraJd2cal", "d", status);
+   vvd(fd, 0.9999, 1e-7, "eraJd2cal", "fd", status);
+   viv(j, 0, "eraJd2cal", "j", status);
+
+}
+
+static void t_jdcalf(int *status)
+/*
+**  - - - - - - - - -
+**   t _ j d c a l f
+**  - - - - - - - - -
+**
+**  Test eraJdcalf function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraJdcalf, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dj1, dj2;
+   int iydmf[4], j;
+
+
+   dj1 = 2400000.5;
+   dj2 = 50123.9999;
+
+   j = eraJdcalf(4, dj1, dj2, iydmf);
+
+   viv(iydmf[0], 1996, "eraJdcalf", "y", status);
+   viv(iydmf[1], 2, "eraJdcalf", "m", status);
+   viv(iydmf[2], 10, "eraJdcalf", "d", status);
+   viv(iydmf[3], 9999, "eraJdcalf", "f", status);
+
+   viv(j, 0, "eraJdcalf", "j", status);
+
+}
+
+static void t_ld(int *status)
+/*
+**  - - - - -
+**   t _ l d
+**  - - - - -
+**
+**  Test eraLd function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLd, vvd
+*
+**  This revision:  2013 October 2
+*/
+{
+   double bm, p[3], q[3], e[3], em, dlim, p1[3];
+
+
+   bm = 0.00028574;
+   p[0] = -0.763276255;
+   p[1] = -0.608633767;
+   p[2] = -0.216735543;
+   q[0] = -0.763276255;
+   q[1] = -0.608633767;
+   q[2] = -0.216735543;
+   e[0] = 0.76700421;
+   e[1] = 0.605629598;
+   e[2] = 0.211937094;
+   em = 8.91276983;
+   dlim = 3e-10;
+
+   eraLd(bm, p, q, e, em, dlim, p1);
+
+   vvd(p1[0], -0.7632762548968159627, 1e-12,
+               "eraLd", "1", status);
+   vvd(p1[1], -0.6086337670823762701, 1e-12,
+               "eraLd", "2", status);
+   vvd(p1[2], -0.2167355431320546947, 1e-12,
+               "eraLd", "3", status);
+
+}
+
+static void t_ldn(int *status)
+/*
+**  - - - - - -
+**   t _ l d n
+**  - - - - - -
+**
+**  Test eraLdn function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLdn, vvd
+**
+**  This revision:  2013 October 2
+*/
+{
+   int n;
+   eraLDBODY b[3];
+   double ob[3], sc[3], sn[3];
+
+
+   n = 3;
+   b[0].bm = 0.00028574;
+   b[0].dl = 3e-10;
+   b[0].pv[0][0] = -7.81014427;
+   b[0].pv[0][1] = -5.60956681;
+   b[0].pv[0][2] = -1.98079819;
+   b[0].pv[1][0] =  0.0030723249;
+   b[0].pv[1][1] = -0.00406995477;
+   b[0].pv[1][2] = -0.00181335842;
+   b[1].bm = 0.00095435;
+   b[1].dl = 3e-9;
+   b[1].pv[0][0] =  0.738098796;
+   b[1].pv[0][1] =  4.63658692;
+   b[1].pv[0][2] =  1.9693136;
+   b[1].pv[1][0] = -0.00755816922;
+   b[1].pv[1][1] =  0.00126913722;
+   b[1].pv[1][2] =  0.000727999001;
+   b[2].bm = 1.0;
+   b[2].dl = 6e-6;
+   b[2].pv[0][0] = -0.000712174377;
+   b[2].pv[0][1] = -0.00230478303;
+   b[2].pv[0][2] = -0.00105865966;
+   b[2].pv[1][0] =  6.29235213e-6;
+   b[2].pv[1][1] = -3.30888387e-7;
+   b[2].pv[1][2] = -2.96486623e-7;
+   ob[0] =  -0.974170437;
+   ob[1] =  -0.2115201;
+   ob[2] =  -0.0917583114;
+   sc[0] =  -0.763276255;
+   sc[1] =  -0.608633767;
+   sc[2] =  -0.216735543;
+
+   eraLdn(n, b, ob, sc, sn);
+
+   vvd(sn[0], -0.7632762579693333866, 1e-12,
+               "eraLdn", "1", status);
+   vvd(sn[1], -0.6086337636093002660, 1e-12,
+               "eraLdn", "2", status);
+   vvd(sn[2], -0.2167355420646328159, 1e-12,
+               "eraLdn", "3", status);
+
+}
+
+static void t_ldsun(int *status)
+/*
+**  - - - - - - - -
+**   t _ l d s u n
+**  - - - - - - - -
+**
+**  Test eraLdsun function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLdsun, vvd
+**
+**  This revision:  2013 October 2
+*/
+{
+   double p[3], e[3], em, p1[3];
+
+
+   p[0] = -0.763276255;
+   p[1] = -0.608633767;
+   p[2] = -0.216735543;
+   e[0] = -0.973644023;
+   e[1] = -0.20925523;
+   e[2] = -0.0907169552;
+   em = 0.999809214;
+
+   eraLdsun(p, e, em, p1);
+
+   vvd(p1[0], -0.7632762580731413169, 1e-12,
+               "eraLdsun", "1", status);
+   vvd(p1[1], -0.6086337635262647900, 1e-12,
+               "eraLdsun", "2", status);
+   vvd(p1[2], -0.2167355419322321302, 1e-12,
+               "eraLdsun", "3", status);
+
+}
+
+static void t_lteceq(int *status)
+/*
+**  - - - - - - - - -
+**   t _ l t e c e q
+**  - - - - - - - - -
+**
+**  Test eraLteceq function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLteceq, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, dl, db, dr, dd;
+
+
+   epj = 2500.0;
+   dl = 1.5;
+   db = 0.6;
+
+   eraLteceq(epj, dl, db, &dr, &dd);
+
+   vvd(dr, 1.275156021861921167, 1e-14, "eraLteceq", "dr", status);
+   vvd(dd, 0.9966573543519204791, 1e-14, "eraLteceq", "dd", status);
+
+}
+
+static void t_ltecm(int *status)
+/*
+**  - - - - - - - -
+**   t _ l t e c m
+**  - - - - - - - -
+**
+**  Test eraLtecm function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLtecm, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, rm[3][3];
+
+
+   epj = -3000.0;
+
+   eraLtecm(epj, rm);
+
+   vvd(rm[0][0], 0.3564105644859788825, 1e-14,
+       "eraLtecm", "rm11", status);
+   vvd(rm[0][1], 0.8530575738617682284, 1e-14,
+       "eraLtecm", "rm12", status);
+   vvd(rm[0][2], 0.3811355207795060435, 1e-14,
+       "eraLtecm", "rm13", status);
+   vvd(rm[1][0], -0.9343283469640709942, 1e-14,
+       "eraLtecm", "rm21", status);
+   vvd(rm[1][1], 0.3247830597681745976, 1e-14,
+       "eraLtecm", "rm22", status);
+   vvd(rm[1][2], 0.1467872751535940865, 1e-14,
+       "eraLtecm", "rm23", status);
+   vvd(rm[2][0], 0.1431636191201167793e-2, 1e-14,
+       "eraLtecm", "rm31", status);
+   vvd(rm[2][1], -0.4084222566960599342, 1e-14,
+       "eraLtecm", "rm32", status);
+   vvd(rm[2][2], 0.9127919865189030899, 1e-14,
+       "eraLtecm", "rm33", status);
+
+}
+
+static void t_lteqec(int *status)
+/*
+**  - - - - - - - - -
+**   t _ l t e q e c
+**  - - - - - - - - -
+**
+**  Test eraLteqec function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLteqec, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, dr, dd, dl, db;
+
+
+   epj = -1500.0;
+   dr = 1.234;
+   dd = 0.987;
+
+   eraLteqec(epj, dr, dd, &dl, &db);
+
+   vvd(dl, 0.5039483649047114859, 1e-14, "eraLteqec", "dl", status);
+   vvd(db, 0.5848534459726224882, 1e-14, "eraLteqec", "db", status);
+
+}
+
+static void t_ltp(int *status)
+/*
+**  - - - - - -
+**   t _ l t p
+**  - - - - - -
+**
+**  Test eraLtp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLtp, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, rp[3][3];
+
+
+   epj = 1666.666;
+
+   eraLtp(epj, rp);
+
+   vvd(rp[0][0], 0.9967044141159213819, 1e-14,
+       "eraLtp", "rp11", status);
+   vvd(rp[0][1], 0.7437801893193210840e-1, 1e-14,
+       "eraLtp", "rp12", status);
+   vvd(rp[0][2], 0.3237624409345603401e-1, 1e-14,
+       "eraLtp", "rp13", status);
+   vvd(rp[1][0], -0.7437802731819618167e-1, 1e-14,
+       "eraLtp", "rp21", status);
+   vvd(rp[1][1], 0.9972293894454533070, 1e-14,
+       "eraLtp", "rp22", status);
+   vvd(rp[1][2], -0.1205768842723593346e-2, 1e-14,
+       "eraLtp", "rp23", status);
+   vvd(rp[2][0], -0.3237622482766575399e-1, 1e-14,
+       "eraLtp", "rp31", status);
+   vvd(rp[2][1], -0.1206286039697609008e-2, 1e-14,
+       "eraLtp", "rp32", status);
+   vvd(rp[2][2], 0.9994750246704010914, 1e-14,
+       "eraLtp", "rp33", status);
+
+}
+
+static void t_ltpb(int *status)
+/*
+**  - - - - - - -
+**   t _ l t p b
+**  - - - - - - -
+**
+**  Test eraLtpb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLtpb, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, rpb[3][3];
+
+
+   epj = 1666.666;
+
+   eraLtpb(epj, rpb);
+
+   vvd(rpb[0][0], 0.9967044167723271851, 1e-14,
+       "eraLtpb", "rpb11", status);
+   vvd(rpb[0][1], 0.7437794731203340345e-1, 1e-14,
+       "eraLtpb", "rpb12", status);
+   vvd(rpb[0][2], 0.3237632684841625547e-1, 1e-14,
+       "eraLtpb", "rpb13", status);
+   vvd(rpb[1][0], -0.7437795663437177152e-1, 1e-14,
+       "eraLtpb", "rpb21", status);
+   vvd(rpb[1][1], 0.9972293947500013666, 1e-14,
+       "eraLtpb", "rpb22", status);
+   vvd(rpb[1][2], -0.1205741865911243235e-2, 1e-14,
+       "eraLtpb", "rpb23", status);
+   vvd(rpb[2][0], -0.3237630543224664992e-1, 1e-14,
+       "eraLtpb", "rpb31", status);
+   vvd(rpb[2][1], -0.1206316791076485295e-2, 1e-14,
+       "eraLtpb", "rpb32", status);
+   vvd(rpb[2][2], 0.9994750220222438819, 1e-14,
+       "eraLtpb", "rpb33", status);
+
+}
+
+static void t_ltpecl(int *status)
+/*
+**  - - - - - - - - -
+**   t _ l t p e c l
+**  - - - - - - - - -
+**
+**  Test eraLtpecl function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLtpecl, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, vec[3];
+
+
+   epj = -1500.0;
+
+   eraLtpecl(epj, vec);
+
+   vvd(vec[0], 0.4768625676477096525e-3, 1e-14,
+       "eraLtpecl", "vec1", status);
+   vvd(vec[1], -0.4052259533091875112, 1e-14,
+       "eraLtpecl", "vec2", status);
+   vvd(vec[2], 0.9142164401096448012, 1e-14,
+       "eraLtpecl", "vec3", status);
+
+}
+
+static void t_ltpequ(int *status)
+/*
+**  - - - - - - - - -
+**   t _ l t p e q u
+**  - - - - - - - - -
+**
+**  Test eraLtpequ function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraLtpequ, vvd
+**
+**  This revision:  2016 March 12
+*/
+{
+   double epj, veq[3];
+
+
+   epj = -2500.0;
+
+   eraLtpequ(epj, veq);
+
+   vvd(veq[0], -0.3586652560237326659, 1e-14,
+       "eraLtpequ", "veq1", status);
+   vvd(veq[1], -0.1996978910771128475, 1e-14,
+       "eraLtpequ", "veq2", status);
+   vvd(veq[2], 0.9118552442250819624, 1e-14,
+       "eraLtpequ", "veq3", status);
+
+}
+
+static void t_num00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u m 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraNum00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNum00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rmatn[3][3];
+
+
+   eraNum00a(2400000.5, 53736.0, rmatn);
+
+   vvd(rmatn[0][0], 0.9999999999536227949, 1e-12,
+       "eraNum00a", "11", status);
+   vvd(rmatn[0][1], 0.8836238544090873336e-5, 1e-12,
+       "eraNum00a", "12", status);
+   vvd(rmatn[0][2], 0.3830835237722400669e-5, 1e-12,
+       "eraNum00a", "13", status);
+
+   vvd(rmatn[1][0], -0.8836082880798569274e-5, 1e-12,
+       "eraNum00a", "21", status);
+   vvd(rmatn[1][1], 0.9999999991354655028, 1e-12,
+       "eraNum00a", "22", status);
+   vvd(rmatn[1][2], -0.4063240865362499850e-4, 1e-12,
+       "eraNum00a", "23", status);
+
+   vvd(rmatn[2][0], -0.3831194272065995866e-5, 1e-12,
+       "eraNum00a", "31", status);
+   vvd(rmatn[2][1], 0.4063237480216291775e-4, 1e-12,
+       "eraNum00a", "32", status);
+   vvd(rmatn[2][2], 0.9999999991671660338, 1e-12,
+       "eraNum00a", "33", status);
+
+}
+
+static void t_num00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u m 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraNum00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNum00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+    double rmatn[3][3];
+
+    eraNum00b(2400000.5, 53736, rmatn);
+
+   vvd(rmatn[0][0], 0.9999999999536069682, 1e-12,
+       "eraNum00b", "11", status);
+   vvd(rmatn[0][1], 0.8837746144871248011e-5, 1e-12,
+       "eraNum00b", "12", status);
+   vvd(rmatn[0][2], 0.3831488838252202945e-5, 1e-12,
+       "eraNum00b", "13", status);
+
+   vvd(rmatn[1][0], -0.8837590456632304720e-5, 1e-12,
+       "eraNum00b", "21", status);
+   vvd(rmatn[1][1], 0.9999999991354692733, 1e-12,
+       "eraNum00b", "22", status);
+   vvd(rmatn[1][2], -0.4063198798559591654e-4, 1e-12,
+       "eraNum00b", "23", status);
+
+   vvd(rmatn[2][0], -0.3831847930134941271e-5, 1e-12,
+       "eraNum00b", "31", status);
+   vvd(rmatn[2][1], 0.4063195412258168380e-4, 1e-12,
+       "eraNum00b", "32", status);
+   vvd(rmatn[2][2], 0.9999999991671806225, 1e-12,
+       "eraNum00b", "33", status);
+
+}
+
+static void t_num06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u m 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraNum06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNum06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+    double rmatn[3][3];
+
+    eraNum06a(2400000.5, 53736, rmatn);
+
+   vvd(rmatn[0][0], 0.9999999999536227668, 1e-12,
+       "eraNum06a", "11", status);
+   vvd(rmatn[0][1], 0.8836241998111535233e-5, 1e-12,
+       "eraNum06a", "12", status);
+   vvd(rmatn[0][2], 0.3830834608415287707e-5, 1e-12,
+       "eraNum06a", "13", status);
+
+   vvd(rmatn[1][0], -0.8836086334870740138e-5, 1e-12,
+       "eraNum06a", "21", status);
+   vvd(rmatn[1][1], 0.9999999991354657474, 1e-12,
+       "eraNum06a", "22", status);
+   vvd(rmatn[1][2], -0.4063240188248455065e-4, 1e-12,
+       "eraNum06a", "23", status);
+
+   vvd(rmatn[2][0], -0.3831193642839398128e-5, 1e-12,
+       "eraNum06a", "31", status);
+   vvd(rmatn[2][1], 0.4063236803101479770e-4, 1e-12,
+       "eraNum06a", "32", status);
+   vvd(rmatn[2][2], 0.9999999991671663114, 1e-12,
+       "eraNum06a", "33", status);
+
+}
+
+static void t_numat(int *status)
+/*
+**  - - - - - - - -
+**   t _ n u m a t
+**  - - - - - - - -
+**
+**  Test eraNumat function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNumat, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double epsa, dpsi, deps, rmatn[3][3];
+
+
+   epsa =  0.4090789763356509900;
+   dpsi = -0.9630909107115582393e-5;
+   deps =  0.4063239174001678826e-4;
+
+   eraNumat(epsa, dpsi, deps, rmatn);
+
+   vvd(rmatn[0][0], 0.9999999999536227949, 1e-12,
+       "eraNumat", "11", status);
+   vvd(rmatn[0][1], 0.8836239320236250577e-5, 1e-12,
+       "eraNumat", "12", status);
+   vvd(rmatn[0][2], 0.3830833447458251908e-5, 1e-12,
+       "eraNumat", "13", status);
+
+   vvd(rmatn[1][0], -0.8836083657016688588e-5, 1e-12,
+       "eraNumat", "21", status);
+   vvd(rmatn[1][1], 0.9999999991354654959, 1e-12,
+       "eraNumat", "22", status);
+   vvd(rmatn[1][2], -0.4063240865361857698e-4, 1e-12,
+       "eraNumat", "23", status);
+
+   vvd(rmatn[2][0], -0.3831192481833385226e-5, 1e-12,
+       "eraNumat", "31", status);
+   vvd(rmatn[2][1], 0.4063237480216934159e-4, 1e-12,
+       "eraNumat", "32", status);
+   vvd(rmatn[2][2], 0.9999999991671660407, 1e-12,
+       "eraNumat", "33", status);
+
+}
+
+static void t_nut00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u t 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraNut00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNut00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps;
+
+
+   eraNut00a(2400000.5, 53736.0, &dpsi, &deps);
+
+   vvd(dpsi, -0.9630909107115518431e-5, 1e-13,
+       "eraNut00a", "dpsi", status);
+   vvd(deps,  0.4063239174001678710e-4, 1e-13,
+       "eraNut00a", "deps", status);
+
+}
+
+static void t_nut00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u t 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraNut00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNut00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps;
+
+
+   eraNut00b(2400000.5, 53736.0, &dpsi, &deps);
+
+   vvd(dpsi, -0.9632552291148362783e-5, 1e-13,
+       "eraNut00b", "dpsi", status);
+   vvd(deps,  0.4063197106621159367e-4, 1e-13,
+       "eraNut00b", "deps", status);
+
+}
+
+static void t_nut06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u t 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraNut06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNut06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps;
+
+
+   eraNut06a(2400000.5, 53736.0, &dpsi, &deps);
+
+   vvd(dpsi, -0.9630912025820308797e-5, 1e-13,
+       "eraNut06a", "dpsi", status);
+   vvd(deps,  0.4063238496887249798e-4, 1e-13,
+       "eraNut06a", "deps", status);
+
+}
+
+static void t_nut80(int *status)
+/*
+**  - - - - - - - -
+**   t _ n u t 8 0
+**  - - - - - - - -
+**
+**  Test eraNut80 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNut80, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps;
+
+
+   eraNut80(2400000.5, 53736.0, &dpsi, &deps);
+
+   vvd(dpsi, -0.9643658353226563966e-5, 1e-13,
+       "eraNut80", "dpsi", status);
+   vvd(deps,  0.4060051006879713322e-4, 1e-13,
+       "eraNut80", "deps", status);
+
+}
+
+static void t_nutm80(int *status)
+/*
+**  - - - - - - - - -
+**   t _ n u t m 8 0
+**  - - - - - - - - -
+**
+**  Test eraNutm80 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraNutm80, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rmatn[3][3];
+
+
+   eraNutm80(2400000.5, 53736.0, rmatn);
+
+   vvd(rmatn[0][0], 0.9999999999534999268, 1e-12,
+      "eraNutm80", "11", status);
+   vvd(rmatn[0][1], 0.8847935789636432161e-5, 1e-12,
+      "eraNutm80", "12", status);
+   vvd(rmatn[0][2], 0.3835906502164019142e-5, 1e-12,
+      "eraNutm80", "13", status);
+
+   vvd(rmatn[1][0], -0.8847780042583435924e-5, 1e-12,
+      "eraNutm80", "21", status);
+   vvd(rmatn[1][1], 0.9999999991366569963, 1e-12,
+      "eraNutm80", "22", status);
+   vvd(rmatn[1][2], -0.4060052702727130809e-4, 1e-12,
+      "eraNutm80", "23", status);
+
+   vvd(rmatn[2][0], -0.3836265729708478796e-5, 1e-12,
+      "eraNutm80", "31", status);
+   vvd(rmatn[2][1], 0.4060049308612638555e-4, 1e-12,
+      "eraNutm80", "32", status);
+   vvd(rmatn[2][2], 0.9999999991684415129, 1e-12,
+      "eraNutm80", "33", status);
+
+}
+
+static void t_obl06(int *status)
+/*
+**  - - - - - - - -
+**   t _ o b l 0 6
+**  - - - - - - - -
+**
+**  Test eraObl06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraObl06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraObl06(2400000.5, 54388.0), 0.4090749229387258204, 1e-14,
+       "eraObl06", "", status);
+}
+
+static void t_obl80(int *status)
+/*
+**  - - - - - - - -
+**   t _ o b l 8 0
+**  - - - - - - - -
+**
+**  Test eraObl80 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraObl80, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double eps0;
+
+
+   eps0 = eraObl80(2400000.5, 54388.0);
+
+   vvd(eps0, 0.4090751347643816218, 1e-14, "eraObl80", "", status);
+
+}
+
+static void t_p06e(int *status)
+/*
+**  - - - - - - -
+**   t _ p 0 6 e
+**  - - - - - - -
+**
+**  Test eraP06e function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraP06e, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+    double eps0, psia, oma, bpa, bqa, pia, bpia,
+           epsa, chia, za, zetaa, thetaa, pa, gam, phi, psi;
+
+
+   eraP06e(2400000.5, 52541.0, &eps0, &psia, &oma, &bpa,
+           &bqa, &pia, &bpia, &epsa, &chia, &za,
+           &zetaa, &thetaa, &pa, &gam, &phi, &psi);
+
+   vvd(eps0, 0.4090926006005828715, 1e-14,
+       "eraP06e", "eps0", status);
+   vvd(psia, 0.6664369630191613431e-3, 1e-14,
+       "eraP06e", "psia", status);
+   vvd(oma , 0.4090925973783255982, 1e-14,
+       "eraP06e", "oma", status);
+   vvd(bpa, 0.5561149371265209445e-6, 1e-14,
+       "eraP06e", "bpa", status);
+   vvd(bqa, -0.6191517193290621270e-5, 1e-14,
+       "eraP06e", "bqa", status);
+   vvd(pia, 0.6216441751884382923e-5, 1e-14,
+       "eraP06e", "pia", status);
+   vvd(bpia, 3.052014180023779882, 1e-14,
+       "eraP06e", "bpia", status);
+   vvd(epsa, 0.4090864054922431688, 1e-14,
+       "eraP06e", "epsa", status);
+   vvd(chia, 0.1387703379530915364e-5, 1e-14,
+       "eraP06e", "chia", status);
+   vvd(za, 0.2921789846651790546e-3, 1e-14,
+       "eraP06e", "za", status);
+   vvd(zetaa, 0.3178773290332009310e-3, 1e-14,
+       "eraP06e", "zetaa", status);
+   vvd(thetaa, 0.2650932701657497181e-3, 1e-14,
+       "eraP06e", "thetaa", status);
+   vvd(pa, 0.6651637681381016344e-3, 1e-14,
+       "eraP06e", "pa", status);
+   vvd(gam, 0.1398077115963754987e-5, 1e-14,
+       "eraP06e", "gam", status);
+   vvd(phi, 0.4090864090837462602, 1e-14,
+       "eraP06e", "phi", status);
+   vvd(psi, 0.6664464807480920325e-3, 1e-14,
+       "eraP06e", "psi", status);
+
+}
+
+static void t_p2pv(int *status)
+/*
+**  - - - - - - -
+**   t _ p 2 p v
+**  - - - - - - -
+**
+**  Test eraP2pv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraP2pv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], pv[2][3];
+
+
+   p[0] = 0.25;
+   p[1] = 1.2;
+   p[2] = 3.0;
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] = -0.5;
+   pv[1][1] =  3.1;
+   pv[1][2] =  0.9;
+
+   eraP2pv(p, pv);
+
+   vvd(pv[0][0], 0.25, 0.0, "eraP2pv", "p1", status);
+   vvd(pv[0][1], 1.2,  0.0, "eraP2pv", "p2", status);
+   vvd(pv[0][2], 3.0,  0.0, "eraP2pv", "p3", status);
+
+   vvd(pv[1][0], 0.0,  0.0, "eraP2pv", "v1", status);
+   vvd(pv[1][1], 0.0,  0.0, "eraP2pv", "v2", status);
+   vvd(pv[1][2], 0.0,  0.0, "eraP2pv", "v3", status);
+
+}
+
+static void t_p2s(int *status)
+/*
+**  - - - - - -
+**   t _ p 2 s
+**  - - - - - -
+**
+**  Test eraP2s function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraP2s, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], theta, phi, r;
+
+
+   p[0] = 100.0;
+   p[1] = -50.0;
+   p[2] =  25.0;
+
+   eraP2s(p, &theta, &phi, &r);
+
+   vvd(theta, -0.4636476090008061162, 1e-12, "eraP2s", "theta", status);
+   vvd(phi, 0.2199879773954594463, 1e-12, "eraP2s", "phi", status);
+   vvd(r, 114.5643923738960002, 1e-9, "eraP2s", "r", status);
+
+}
+
+static void t_pap(int *status)
+/*
+**  - - - - - -
+**   t _ p a p
+**  - - - - - -
+**
+**  Test eraPap function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPap, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], theta;
+
+
+   a[0] =  1.0;
+   a[1] =  0.1;
+   a[2] =  0.2;
+
+   b[0] = -3.0;
+   b[1] = 1e-3;
+   b[2] =  0.2;
+
+   theta = eraPap(a, b);
+
+   vvd(theta, 0.3671514267841113674, 1e-12, "eraPap", "", status);
+
+}
+
+static void t_pas(int *status)
+/*
+**  - - - - - -
+**   t _ p a s
+**  - - - - - -
+**
+**  Test eraPas function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPas, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double al, ap, bl, bp, theta;
+
+
+   al =  1.0;
+   ap =  0.1;
+   bl =  0.2;
+   bp = -1.0;
+
+   theta = eraPas(al, ap, bl, bp);
+
+   vvd(theta, -2.724544922932270424, 1e-12, "eraPas", "", status);
+
+}
+
+static void t_pb06(int *status)
+/*
+**  - - - - - - -
+**   t _ p b 0 6
+**  - - - - - - -
+**
+**  Test eraPb06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPb06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double bzeta, bz, btheta;
+
+
+   eraPb06(2400000.5, 50123.9999, &bzeta, &bz, &btheta);
+
+   vvd(bzeta, -0.5092634016326478238e-3, 1e-12,
+       "eraPb06", "bzeta", status);
+   vvd(bz, -0.3602772060566044413e-3, 1e-12,
+       "eraPb06", "bz", status);
+   vvd(btheta, -0.3779735537167811177e-3, 1e-12,
+       "eraPb06", "btheta", status);
+
+}
+
+static void t_pdp(int *status)
+/*
+**  - - - - - -
+**   t _ p d p
+**  - - - - - -
+**
+**  Test eraPdp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPdp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], adb;
+
+
+   a[0] = 2.0;
+   a[1] = 2.0;
+   a[2] = 3.0;
+
+   b[0] = 1.0;
+   b[1] = 3.0;
+   b[2] = 4.0;
+
+   adb = eraPdp(a, b);
+
+   vvd(adb, 20, 1e-12, "eraPdp", "", status);
+
+}
+
+static void t_pfw06(int *status)
+/*
+**  - - - - - - - -
+**   t _ p f w 0 6
+**  - - - - - - - -
+**
+**  Test eraPfw06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPfw06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double gamb, phib, psib, epsa;
+
+
+   eraPfw06(2400000.5, 50123.9999, &gamb, &phib, &psib, &epsa);
+
+   vvd(gamb, -0.2243387670997995690e-5, 1e-16,
+       "eraPfw06", "gamb", status);
+   vvd(phib,  0.4091014602391312808, 1e-12,
+       "eraPfw06", "phib", status);
+   vvd(psib, -0.9501954178013031895e-3, 1e-14,
+       "eraPfw06", "psib", status);
+   vvd(epsa,  0.4091014316587367491, 1e-12,
+       "eraPfw06", "epsa", status);
+
+}
+
+static void t_plan94(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p l a n 9 4
+**  - - - - - - - - -
+**
+**  Test eraPlan94 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPlan94, vvd, viv
+**
+**  This revision:  2013 October 2
+*/
+{
+   double pv[2][3];
+   int j;
+
+
+   j = eraPlan94(2400000.5, 1e6, 0, pv);
+
+   vvd(pv[0][0], 0.0, 0.0, "eraPlan94", "x 1", status);
+   vvd(pv[0][1], 0.0, 0.0, "eraPlan94", "y 1", status);
+   vvd(pv[0][2], 0.0, 0.0, "eraPlan94", "z 1", status);
+
+   vvd(pv[1][0], 0.0, 0.0, "eraPlan94", "xd 1", status);
+   vvd(pv[1][1], 0.0, 0.0, "eraPlan94", "yd 1", status);
+   vvd(pv[1][2], 0.0, 0.0, "eraPlan94", "zd 1", status);
+
+   viv(j, -1, "eraPlan94", "j 1", status);
+
+   j = eraPlan94(2400000.5, 1e6, 10, pv);
+
+   viv(j, -1, "eraPlan94", "j 2", status);
+
+   j = eraPlan94(2400000.5, -320000, 3, pv);
+
+   vvd(pv[0][0], 0.9308038666832975759, 1e-11,
+       "eraPlan94", "x 3", status);
+   vvd(pv[0][1], 0.3258319040261346000, 1e-11,
+       "eraPlan94", "y 3", status);
+   vvd(pv[0][2], 0.1422794544481140560, 1e-11,
+       "eraPlan94", "z 3", status);
+
+   vvd(pv[1][0], -0.6429458958255170006e-2, 1e-11,
+       "eraPlan94", "xd 3", status);
+   vvd(pv[1][1], 0.1468570657704237764e-1, 1e-11,
+       "eraPlan94", "yd 3", status);
+   vvd(pv[1][2], 0.6406996426270981189e-2, 1e-11,
+       "eraPlan94", "zd 3", status);
+
+   viv(j, 1, "eraPlan94", "j 3", status);
+
+   j = eraPlan94(2400000.5, 43999.9, 1, pv);
+
+   vvd(pv[0][0], 0.2945293959257430832, 1e-11,
+       "eraPlan94", "x 4", status);
+   vvd(pv[0][1], -0.2452204176601049596, 1e-11,
+       "eraPlan94", "y 4", status);
+   vvd(pv[0][2], -0.1615427700571978153, 1e-11,
+       "eraPlan94", "z 4", status);
+
+   vvd(pv[1][0], 0.1413867871404614441e-1, 1e-11,
+       "eraPlan94", "xd 4", status);
+   vvd(pv[1][1], 0.1946548301104706582e-1, 1e-11,
+       "eraPlan94", "yd 4", status);
+   vvd(pv[1][2], 0.8929809783898904786e-2, 1e-11,
+       "eraPlan94", "zd 4", status);
+
+   viv(j, 0, "eraPlan94", "j 4", status);
+
+}
+
+static void t_pmat00(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p m a t 0 0
+**  - - - - - - - - -
+**
+**  Test eraPmat00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmat00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbp[3][3];
+
+
+   eraPmat00(2400000.5, 50123.9999, rbp);
+
+   vvd(rbp[0][0], 0.9999995505175087260, 1e-12,
+       "eraPmat00", "11", status);
+   vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14,
+       "eraPmat00", "12", status);
+   vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14,
+       "eraPmat00", "13", status);
+
+   vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14,
+       "eraPmat00", "21", status);
+   vvd(rbp[1][1], 0.9999996219494925900, 1e-12,
+       "eraPmat00", "22", status);
+   vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14,
+       "eraPmat00", "23", status);
+
+   vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14,
+       "eraPmat00", "31", status);
+   vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14,
+       "eraPmat00", "32", status);
+   vvd(rbp[2][2], 0.9999999285680153377, 1e-12,
+       "eraPmat00", "33", status);
+
+}
+
+static void t_pmat06(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p m a t 0 6
+**  - - - - - - - - -
+**
+**  Test eraPmat06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmat06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbp[3][3];
+
+
+   eraPmat06(2400000.5, 50123.9999, rbp);
+
+   vvd(rbp[0][0], 0.9999995505176007047, 1e-12,
+       "eraPmat06", "11", status);
+   vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14,
+       "eraPmat06", "12", status);
+   vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14,
+       "eraPmat06", "13", status);
+
+   vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14,
+       "eraPmat06", "21", status);
+   vvd(rbp[1][1], 0.9999996219496027161, 1e-12,
+       "eraPmat06", "22", status);
+   vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14,
+       "eraPmat06", "23", status);
+
+   vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14,
+       "eraPmat06", "31", status);
+   vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14,
+       "eraPmat06", "32", status);
+   vvd(rbp[2][2], 0.9999999285679971958, 1e-12,
+       "eraPmat06", "33", status);
+
+}
+
+static void t_pmat76(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p m a t 7 6
+**  - - - - - - - - -
+**
+**  Test eraPmat76 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmat76, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rmatp[3][3];
+
+
+   eraPmat76(2400000.5, 50123.9999, rmatp);
+
+   vvd(rmatp[0][0], 0.9999995504328350733, 1e-12,
+       "eraPmat76", "11", status);
+   vvd(rmatp[0][1], 0.8696632209480960785e-3, 1e-14,
+       "eraPmat76", "12", status);
+   vvd(rmatp[0][2], 0.3779153474959888345e-3, 1e-14,
+       "eraPmat76", "13", status);
+
+   vvd(rmatp[1][0], -0.8696632209485112192e-3, 1e-14,
+       "eraPmat76", "21", status);
+   vvd(rmatp[1][1], 0.9999996218428560614, 1e-12,
+       "eraPmat76", "22", status);
+   vvd(rmatp[1][2], -0.1643284776111886407e-6, 1e-14,
+       "eraPmat76", "23", status);
+
+   vvd(rmatp[2][0], -0.3779153474950335077e-3, 1e-14,
+       "eraPmat76", "31", status);
+   vvd(rmatp[2][1], -0.1643306746147366896e-6, 1e-14,
+       "eraPmat76", "32", status);
+   vvd(rmatp[2][2], 0.9999999285899790119, 1e-12,
+       "eraPmat76", "33", status);
+
+}
+
+static void t_pm(int *status)
+/*
+**  - - - - -
+**   t _ p m
+**  - - - - -
+**
+**  Test eraPm function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPm, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], r;
+
+
+   p[0] =  0.3;
+   p[1] =  1.2;
+   p[2] = -2.5;
+
+   r = eraPm(p);
+
+   vvd(r, 2.789265136196270604, 1e-12, "eraPm", "", status);
+
+}
+
+static void t_pmp(int *status)
+/*
+**  - - - - - -
+**   t _ p m p
+**  - - - - - -
+**
+**  Test eraPmp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], amb[3];
+
+
+   a[0] = 2.0;
+   a[1] = 2.0;
+   a[2] = 3.0;
+
+   b[0] = 1.0;
+   b[1] = 3.0;
+   b[2] = 4.0;
+
+   eraPmp(a, b, amb);
+
+   vvd(amb[0],  1.0, 1e-12, "eraPmp", "0", status);
+   vvd(amb[1], -1.0, 1e-12, "eraPmp", "1", status);
+   vvd(amb[2], -1.0, 1e-12, "eraPmp", "2", status);
+
+}
+
+static void t_pmpx(int *status)
+/*
+**  - - - - - - -
+**   t _ p m p x
+**  - - - - - - -
+**
+**  Test eraPmpx function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmpx, vvd
+**
+**  This revision:  2013 October 2
+*/
+{
+   double rc, dc, pr, pd, px, rv, pmt, pob[3], pco[3];
+
+
+   rc = 1.234;
+   dc = 0.789;
+   pr = 1e-5;
+   pd = -2e-5;
+   px = 1e-2;
+   rv = 10.0;
+   pmt = 8.75;
+   pob[0] = 0.9;
+   pob[1] = 0.4;
+   pob[2] = 0.1;
+
+   eraPmpx(rc, dc, pr, pd, px, rv, pmt, pob, pco);
+
+   vvd(pco[0], 0.2328137623960308440, 1e-12,
+               "eraPmpx", "1", status);
+   vvd(pco[1], 0.6651097085397855317, 1e-12,
+               "eraPmpx", "2", status);
+   vvd(pco[2], 0.7095257765896359847, 1e-12,
+               "eraPmpx", "3", status);
+
+}
+
+static void t_pmsafe(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p m s a f e
+**  - - - - - - - - -
+**
+**  Test eraPmsafe function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPmsafe, vvd, viv
+**
+**  This revision:  2013 October 2
+*/
+{
+   int j;
+   double ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b,
+          ra2, dec2, pmr2, pmd2, px2, rv2;
+
+
+   ra1 = 1.234;
+   dec1 = 0.789;
+   pmr1 = 1e-5;
+   pmd1 = -2e-5;
+   px1 = 1e-2;
+   rv1 = 10.0;
+   ep1a = 2400000.5;
+   ep1b = 48348.5625;
+   ep2a = 2400000.5;
+   ep2b = 51544.5;
+
+   j = eraPmsafe(ra1, dec1, pmr1, pmd1, px1, rv1,
+                 ep1a, ep1b, ep2a, ep2b,
+                 &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2);
+
+   vvd(ra2, 1.234087484501017061, 1e-12,
+            "eraPmsafe", "ra2", status);
+   vvd(dec2, 0.7888249982450468574, 1e-12,
+            "eraPmsafe", "dec2", status);
+   vvd(pmr2, 0.9996457663586073988e-5, 1e-12,
+             "eraPmsafe", "pmr2", status);
+   vvd(pmd2, -0.2000040085106737816e-4, 1e-16,
+             "eraPmsafe", "pmd2", status);
+   vvd(px2, 0.9999997295356765185e-2, 1e-12,
+            "eraPmsafe", "px2", status);
+   vvd(rv2, 10.38468380113917014, 1e-10,
+            "eraPmsafe", "rv2", status);
+   viv ( j, 0, "eraPmsafe", "j", status);
+
+}
+
+static void t_pn(int *status)
+/*
+**  - - - - -
+**   t _ p n
+**  - - - - -
+**
+**  Test eraPn function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3], r, u[3];
+
+
+   p[0] =  0.3;
+   p[1] =  1.2;
+   p[2] = -2.5;
+
+   eraPn(p, &r, u);
+
+   vvd(r, 2.789265136196270604, 1e-12, "eraPn", "r", status);
+
+   vvd(u[0], 0.1075552109073112058, 1e-12, "eraPn", "u1", status);
+   vvd(u[1], 0.4302208436292448232, 1e-12, "eraPn", "u2", status);
+   vvd(u[2], -0.8962934242275933816, 1e-12, "eraPn", "u3", status);
+
+}
+
+static void t_pn00(int *status)
+/*
+**  - - - - - - -
+**   t _ p n 0 0
+**  - - - - - - -
+**
+**  Test eraPn00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps, epsa,
+          rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
+
+
+   dpsi = -0.9632552291149335877e-5;
+   deps =  0.4063197106621141414e-4;
+
+   eraPn00(2400000.5, 53736.0, dpsi, deps,
+           &epsa, rb, rp, rbp, rn, rbpn);
+
+   vvd(epsa, 0.4090791789404229916, 1e-12, "eraPn00", "epsa", status);
+
+   vvd(rb[0][0], 0.9999999999999942498, 1e-12,
+       "eraPn00", "rb11", status);
+   vvd(rb[0][1], -0.7078279744199196626e-7, 1e-18,
+       "eraPn00", "rb12", status);
+   vvd(rb[0][2], 0.8056217146976134152e-7, 1e-18,
+       "eraPn00", "rb13", status);
+
+   vvd(rb[1][0], 0.7078279477857337206e-7, 1e-18,
+       "eraPn00", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraPn00", "rb22", status);
+   vvd(rb[1][2], 0.3306041454222136517e-7, 1e-18,
+       "eraPn00", "rb23", status);
+
+   vvd(rb[2][0], -0.8056217380986972157e-7, 1e-18,
+       "eraPn00", "rb31", status);
+   vvd(rb[2][1], -0.3306040883980552500e-7, 1e-18,
+       "eraPn00", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraPn00", "rb33", status);
+
+   vvd(rp[0][0], 0.9999989300532289018, 1e-12,
+       "eraPn00", "rp11", status);
+   vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14,
+       "eraPn00", "rp12", status);
+   vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14,
+       "eraPn00", "rp13", status);
+
+   vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14,
+       "eraPn00", "rp21", status);
+   vvd(rp[1][1], 0.9999990999908750433, 1e-12,
+       "eraPn00", "rp22", status);
+   vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14,
+       "eraPn00", "rp23", status);
+
+   vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14,
+       "eraPn00", "rp31", status);
+   vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14,
+       "eraPn00", "rp32", status);
+   vvd(rp[2][2], 0.9999998300623538046, 1e-12,
+       "eraPn00", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999989300052243993, 1e-12,
+       "eraPn00", "rbp11", status);
+   vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14,
+       "eraPn00", "rbp12", status);
+   vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14,
+       "eraPn00", "rbp13", status);
+
+   vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14,
+       "eraPn00", "rbp21", status);
+   vvd(rbp[1][1], 0.9999990998959191343, 1e-12,
+       "eraPn00", "rbp22", status);
+   vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14,
+       "eraPn00", "rbp23", status);
+
+   vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14,
+       "eraPn00", "rbp31", status);
+   vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14,
+       "eraPn00", "rbp32", status);
+   vvd(rbp[2][2], 0.9999998301093036269, 1e-12,
+       "eraPn00", "rbp33", status);
+
+   vvd(rn[0][0], 0.9999999999536069682, 1e-12,
+       "eraPn00", "rn11", status);
+   vvd(rn[0][1], 0.8837746144872140812e-5, 1e-16,
+       "eraPn00", "rn12", status);
+   vvd(rn[0][2], 0.3831488838252590008e-5, 1e-16,
+       "eraPn00", "rn13", status);
+
+   vvd(rn[1][0], -0.8837590456633197506e-5, 1e-16,
+       "eraPn00", "rn21", status);
+   vvd(rn[1][1], 0.9999999991354692733, 1e-12,
+       "eraPn00", "rn22", status);
+   vvd(rn[1][2], -0.4063198798559573702e-4, 1e-16,
+       "eraPn00", "rn23", status);
+
+   vvd(rn[2][0], -0.3831847930135328368e-5, 1e-16,
+       "eraPn00", "rn31", status);
+   vvd(rn[2][1], 0.4063195412258150427e-4, 1e-16,
+       "eraPn00", "rn32", status);
+   vvd(rn[2][2], 0.9999999991671806225, 1e-12,
+       "eraPn00", "rn33", status);
+
+   vvd(rbpn[0][0], 0.9999989440499982806, 1e-12,
+       "eraPn00", "rbpn11", status);
+   vvd(rbpn[0][1], -0.1332880253640848301e-2, 1e-14,
+       "eraPn00", "rbpn12", status);
+   vvd(rbpn[0][2], -0.5790760898731087295e-3, 1e-14,
+       "eraPn00", "rbpn13", status);
+
+   vvd(rbpn[1][0], 0.1332856746979948745e-2, 1e-14,
+       "eraPn00", "rbpn21", status);
+   vvd(rbpn[1][1], 0.9999991109064768883, 1e-12,
+       "eraPn00", "rbpn22", status);
+   vvd(rbpn[1][2], -0.4097740555723063806e-4, 1e-14,
+       "eraPn00", "rbpn23", status);
+
+   vvd(rbpn[2][0], 0.5791301929950205000e-3, 1e-14,
+       "eraPn00", "rbpn31", status);
+   vvd(rbpn[2][1], 0.4020553681373702931e-4, 1e-14,
+       "eraPn00", "rbpn32", status);
+   vvd(rbpn[2][2], 0.9999998314958529887, 1e-12,
+       "eraPn00", "rbpn33", status);
+
+}
+
+static void t_pn00a(int *status)
+/*
+**  - - - - - - - -
+**   t _ p n 0 0 a
+**  - - - - - - - -
+**
+**  Test eraPn00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps, epsa,
+          rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
+
+
+   eraPn00a(2400000.5, 53736.0,
+            &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn);
+
+   vvd(dpsi, -0.9630909107115518431e-5, 1e-12,
+       "eraPn00a", "dpsi", status);
+   vvd(deps,  0.4063239174001678710e-4, 1e-12,
+       "eraPn00a", "deps", status);
+   vvd(epsa,  0.4090791789404229916, 1e-12, "eraPn00a", "epsa", status);
+
+   vvd(rb[0][0], 0.9999999999999942498, 1e-12,
+       "eraPn00a", "rb11", status);
+   vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16,
+       "eraPn00a", "rb12", status);
+   vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16,
+       "eraPn00a", "rb13", status);
+
+   vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16,
+       "eraPn00a", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraPn00a", "rb22", status);
+   vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16,
+       "eraPn00a", "rb23", status);
+
+   vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16,
+       "eraPn00a", "rb31", status);
+   vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16,
+       "eraPn00a", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraPn00a", "rb33", status);
+
+   vvd(rp[0][0], 0.9999989300532289018, 1e-12,
+       "eraPn00a", "rp11", status);
+   vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14,
+       "eraPn00a", "rp12", status);
+   vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14,
+       "eraPn00a", "rp13", status);
+
+   vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14,
+       "eraPn00a", "rp21", status);
+   vvd(rp[1][1], 0.9999990999908750433, 1e-12,
+       "eraPn00a", "rp22", status);
+   vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14,
+       "eraPn00a", "rp23", status);
+
+   vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14,
+       "eraPn00a", "rp31", status);
+   vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14,
+       "eraPn00a", "rp32", status);
+   vvd(rp[2][2], 0.9999998300623538046, 1e-12,
+       "eraPn00a", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999989300052243993, 1e-12,
+       "eraPn00a", "rbp11", status);
+   vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14,
+       "eraPn00a", "rbp12", status);
+   vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14,
+       "eraPn00a", "rbp13", status);
+
+   vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14,
+       "eraPn00a", "rbp21", status);
+   vvd(rbp[1][1], 0.9999990998959191343, 1e-12,
+       "eraPn00a", "rbp22", status);
+   vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14,
+       "eraPn00a", "rbp23", status);
+
+   vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14,
+       "eraPn00a", "rbp31", status);
+   vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14,
+       "eraPn00a", "rbp32", status);
+   vvd(rbp[2][2], 0.9999998301093036269, 1e-12,
+       "eraPn00a", "rbp33", status);
+
+   vvd(rn[0][0], 0.9999999999536227949, 1e-12,
+       "eraPn00a", "rn11", status);
+   vvd(rn[0][1], 0.8836238544090873336e-5, 1e-14,
+       "eraPn00a", "rn12", status);
+   vvd(rn[0][2], 0.3830835237722400669e-5, 1e-14,
+       "eraPn00a", "rn13", status);
+
+   vvd(rn[1][0], -0.8836082880798569274e-5, 1e-14,
+       "eraPn00a", "rn21", status);
+   vvd(rn[1][1], 0.9999999991354655028, 1e-12,
+       "eraPn00a", "rn22", status);
+   vvd(rn[1][2], -0.4063240865362499850e-4, 1e-14,
+       "eraPn00a", "rn23", status);
+
+   vvd(rn[2][0], -0.3831194272065995866e-5, 1e-14,
+       "eraPn00a", "rn31", status);
+   vvd(rn[2][1], 0.4063237480216291775e-4, 1e-14,
+       "eraPn00a", "rn32", status);
+   vvd(rn[2][2], 0.9999999991671660338, 1e-12,
+       "eraPn00a", "rn33", status);
+
+   vvd(rbpn[0][0], 0.9999989440476103435, 1e-12,
+       "eraPn00a", "rbpn11", status);
+   vvd(rbpn[0][1], -0.1332881761240011763e-2, 1e-14,
+       "eraPn00a", "rbpn12", status);
+   vvd(rbpn[0][2], -0.5790767434730085751e-3, 1e-14,
+       "eraPn00a", "rbpn13", status);
+
+   vvd(rbpn[1][0], 0.1332858254308954658e-2, 1e-14,
+       "eraPn00a", "rbpn21", status);
+   vvd(rbpn[1][1], 0.9999991109044505577, 1e-12,
+       "eraPn00a", "rbpn22", status);
+   vvd(rbpn[1][2], -0.4097782710396580452e-4, 1e-14,
+       "eraPn00a", "rbpn23", status);
+
+   vvd(rbpn[2][0], 0.5791308472168152904e-3, 1e-14,
+       "eraPn00a", "rbpn31", status);
+   vvd(rbpn[2][1], 0.4020595661591500259e-4, 1e-14,
+       "eraPn00a", "rbpn32", status);
+   vvd(rbpn[2][2], 0.9999998314954572304, 1e-12,
+       "eraPn00a", "rbpn33", status);
+
+}
+
+static void t_pn00b(int *status)
+/*
+**  - - - - - - - -
+**   t _ p n 0 0 b
+**  - - - - - - - -
+**
+**  Test eraPn00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps, epsa,
+          rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
+
+
+   eraPn00b(2400000.5, 53736.0, &dpsi, &deps, &epsa,
+            rb, rp, rbp, rn, rbpn);
+
+   vvd(dpsi, -0.9632552291148362783e-5, 1e-12,
+       "eraPn00b", "dpsi", status);
+   vvd(deps,  0.4063197106621159367e-4, 1e-12,
+       "eraPn00b", "deps", status);
+   vvd(epsa,  0.4090791789404229916, 1e-12, "eraPn00b", "epsa", status);
+
+   vvd(rb[0][0], 0.9999999999999942498, 1e-12,
+      "eraPn00b", "rb11", status);
+   vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16,
+      "eraPn00b", "rb12", status);
+   vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16,
+      "eraPn00b", "rb13", status);
+
+   vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16,
+      "eraPn00b", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+      "eraPn00b", "rb22", status);
+   vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16,
+      "eraPn00b", "rb23", status);
+
+   vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16,
+      "eraPn00b", "rb31", status);
+   vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16,
+      "eraPn00b", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+      "eraPn00b", "rb33", status);
+
+   vvd(rp[0][0], 0.9999989300532289018, 1e-12,
+      "eraPn00b", "rp11", status);
+   vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14,
+      "eraPn00b", "rp12", status);
+   vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14,
+      "eraPn00b", "rp13", status);
+
+   vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14,
+      "eraPn00b", "rp21", status);
+   vvd(rp[1][1], 0.9999990999908750433, 1e-12,
+      "eraPn00b", "rp22", status);
+   vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14,
+      "eraPn00b", "rp23", status);
+
+   vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14,
+      "eraPn00b", "rp31", status);
+   vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14,
+      "eraPn00b", "rp32", status);
+   vvd(rp[2][2], 0.9999998300623538046, 1e-12,
+      "eraPn00b", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999989300052243993, 1e-12,
+      "eraPn00b", "rbp11", status);
+   vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14,
+      "eraPn00b", "rbp12", status);
+   vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14,
+      "eraPn00b", "rbp13", status);
+
+   vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14,
+      "eraPn00b", "rbp21", status);
+   vvd(rbp[1][1], 0.9999990998959191343, 1e-12,
+      "eraPn00b", "rbp22", status);
+   vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14,
+      "eraPn00b", "rbp23", status);
+
+   vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14,
+      "eraPn00b", "rbp31", status);
+   vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14,
+      "eraPn00b", "rbp32", status);
+   vvd(rbp[2][2], 0.9999998301093036269, 1e-12,
+      "eraPn00b", "rbp33", status);
+
+   vvd(rn[0][0], 0.9999999999536069682, 1e-12,
+      "eraPn00b", "rn11", status);
+   vvd(rn[0][1], 0.8837746144871248011e-5, 1e-14,
+      "eraPn00b", "rn12", status);
+   vvd(rn[0][2], 0.3831488838252202945e-5, 1e-14,
+      "eraPn00b", "rn13", status);
+
+   vvd(rn[1][0], -0.8837590456632304720e-5, 1e-14,
+      "eraPn00b", "rn21", status);
+   vvd(rn[1][1], 0.9999999991354692733, 1e-12,
+      "eraPn00b", "rn22", status);
+   vvd(rn[1][2], -0.4063198798559591654e-4, 1e-14,
+      "eraPn00b", "rn23", status);
+
+   vvd(rn[2][0], -0.3831847930134941271e-5, 1e-14,
+      "eraPn00b", "rn31", status);
+   vvd(rn[2][1], 0.4063195412258168380e-4, 1e-14,
+      "eraPn00b", "rn32", status);
+   vvd(rn[2][2], 0.9999999991671806225, 1e-12,
+      "eraPn00b", "rn33", status);
+
+   vvd(rbpn[0][0], 0.9999989440499982806, 1e-12,
+      "eraPn00b", "rbpn11", status);
+   vvd(rbpn[0][1], -0.1332880253640849194e-2, 1e-14,
+      "eraPn00b", "rbpn12", status);
+   vvd(rbpn[0][2], -0.5790760898731091166e-3, 1e-14,
+      "eraPn00b", "rbpn13", status);
+
+   vvd(rbpn[1][0], 0.1332856746979949638e-2, 1e-14,
+      "eraPn00b", "rbpn21", status);
+   vvd(rbpn[1][1], 0.9999991109064768883, 1e-12,
+      "eraPn00b", "rbpn22", status);
+   vvd(rbpn[1][2], -0.4097740555723081811e-4, 1e-14,
+      "eraPn00b", "rbpn23", status);
+
+   vvd(rbpn[2][0], 0.5791301929950208873e-3, 1e-14,
+      "eraPn00b", "rbpn31", status);
+   vvd(rbpn[2][1], 0.4020553681373720832e-4, 1e-14,
+      "eraPn00b", "rbpn32", status);
+   vvd(rbpn[2][2], 0.9999998314958529887, 1e-12,
+      "eraPn00b", "rbpn33", status);
+
+}
+
+static void t_pn06a(int *status)
+/*
+**  - - - - - - - -
+**   t _ p n 0 6 a
+**  - - - - - - - -
+**
+**  Test eraPn06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps, epsa;
+   double rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
+
+
+   eraPn06a(2400000.5, 53736.0, &dpsi, &deps, &epsa,
+            rb, rp, rbp, rn, rbpn);
+
+   vvd(dpsi, -0.9630912025820308797e-5, 1e-12,
+       "eraPn06a", "dpsi", status);
+   vvd(deps,  0.4063238496887249798e-4, 1e-12,
+       "eraPn06a", "deps", status);
+   vvd(epsa,  0.4090789763356509926, 1e-12, "eraPn06a", "epsa", status);
+
+   vvd(rb[0][0], 0.9999999999999942497, 1e-12,
+       "eraPn06a", "rb11", status);
+   vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14,
+       "eraPn06a", "rb12", status);
+   vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14,
+       "eraPn06a", "rb13", status);
+
+   vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14,
+       "eraPn06a", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraPn06a", "rb22", status);
+   vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14,
+       "eraPn06a", "rb23", status);
+
+   vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14,
+       "eraPn06a", "rb31", status);
+   vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14,
+       "eraPn06a", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraPn06a", "rb33", status);
+
+   vvd(rp[0][0], 0.9999989300536854831, 1e-12,
+       "eraPn06a", "rp11", status);
+   vvd(rp[0][1], -0.1341646886204443795e-2, 1e-14,
+       "eraPn06a", "rp12", status);
+   vvd(rp[0][2], -0.5829880933488627759e-3, 1e-14,
+       "eraPn06a", "rp13", status);
+
+   vvd(rp[1][0], 0.1341646890569782183e-2, 1e-14,
+       "eraPn06a", "rp21", status);
+   vvd(rp[1][1], 0.9999990999913319321, 1e-12,
+       "eraPn06a", "rp22", status);
+   vvd(rp[1][2], -0.3835944216374477457e-6, 1e-14,
+       "eraPn06a", "rp23", status);
+
+   vvd(rp[2][0], 0.5829880833027867368e-3, 1e-14,
+       "eraPn06a", "rp31", status);
+   vvd(rp[2][1], -0.3985701514686976112e-6, 1e-14,
+       "eraPn06a", "rp32", status);
+   vvd(rp[2][2], 0.9999998300623534950, 1e-12,
+       "eraPn06a", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999989300056797893, 1e-12,
+       "eraPn06a", "rbp11", status);
+   vvd(rbp[0][1], -0.1341717650545059598e-2, 1e-14,
+       "eraPn06a", "rbp12", status);
+   vvd(rbp[0][2], -0.5829075756493728856e-3, 1e-14,
+       "eraPn06a", "rbp13", status);
+
+   vvd(rbp[1][0], 0.1341717674223918101e-2, 1e-14,
+       "eraPn06a", "rbp21", status);
+   vvd(rbp[1][1], 0.9999990998963748448, 1e-12,
+       "eraPn06a", "rbp22", status);
+   vvd(rbp[1][2], -0.3504269280170069029e-6, 1e-14,
+       "eraPn06a", "rbp23", status);
+
+   vvd(rbp[2][0], 0.5829075211461454599e-3, 1e-14,
+       "eraPn06a", "rbp31", status);
+   vvd(rbp[2][1], -0.4316708436255949093e-6, 1e-14,
+       "eraPn06a", "rbp32", status);
+   vvd(rbp[2][2], 0.9999998301093032943, 1e-12,
+       "eraPn06a", "rbp33", status);
+
+   vvd(rn[0][0], 0.9999999999536227668, 1e-12,
+       "eraPn06a", "rn11", status);
+   vvd(rn[0][1], 0.8836241998111535233e-5, 1e-14,
+       "eraPn06a", "rn12", status);
+   vvd(rn[0][2], 0.3830834608415287707e-5, 1e-14,
+       "eraPn06a", "rn13", status);
+
+   vvd(rn[1][0], -0.8836086334870740138e-5, 1e-14,
+       "eraPn06a", "rn21", status);
+   vvd(rn[1][1], 0.9999999991354657474, 1e-12,
+       "eraPn06a", "rn22", status);
+   vvd(rn[1][2], -0.4063240188248455065e-4, 1e-14,
+       "eraPn06a", "rn23", status);
+
+   vvd(rn[2][0], -0.3831193642839398128e-5, 1e-14,
+       "eraPn06a", "rn31", status);
+   vvd(rn[2][1], 0.4063236803101479770e-4, 1e-14,
+       "eraPn06a", "rn32", status);
+   vvd(rn[2][2], 0.9999999991671663114, 1e-12,
+       "eraPn06a", "rn33", status);
+
+   vvd(rbpn[0][0], 0.9999989440480669738, 1e-12,
+       "eraPn06a", "rbpn11", status);
+   vvd(rbpn[0][1], -0.1332881418091915973e-2, 1e-14,
+       "eraPn06a", "rbpn12", status);
+   vvd(rbpn[0][2], -0.5790767447612042565e-3, 1e-14,
+       "eraPn06a", "rbpn13", status);
+
+   vvd(rbpn[1][0], 0.1332857911250989133e-2, 1e-14,
+       "eraPn06a", "rbpn21", status);
+   vvd(rbpn[1][1], 0.9999991109049141908, 1e-12,
+       "eraPn06a", "rbpn22", status);
+   vvd(rbpn[1][2], -0.4097767128546784878e-4, 1e-14,
+       "eraPn06a", "rbpn23", status);
+
+   vvd(rbpn[2][0], 0.5791308482835292617e-3, 1e-14,
+       "eraPn06a", "rbpn31", status);
+   vvd(rbpn[2][1], 0.4020580099454020310e-4, 1e-14,
+       "eraPn06a", "rbpn32", status);
+   vvd(rbpn[2][2], 0.9999998314954628695, 1e-12,
+       "eraPn06a", "rbpn33", status);
+
+}
+
+static void t_pn06(int *status)
+/*
+**  - - - - - - -
+**   t _ p n 0 6
+**  - - - - - - -
+**
+**  Test eraPn06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPn06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsi, deps, epsa,
+          rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
+
+
+   dpsi = -0.9632552291149335877e-5;
+   deps =  0.4063197106621141414e-4;
+
+   eraPn06(2400000.5, 53736.0, dpsi, deps,
+           &epsa, rb, rp, rbp, rn, rbpn);
+
+   vvd(epsa, 0.4090789763356509926, 1e-12, "eraPn06", "epsa", status);
+
+   vvd(rb[0][0], 0.9999999999999942497, 1e-12,
+       "eraPn06", "rb11", status);
+   vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14,
+       "eraPn06", "rb12", status);
+   vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14,
+       "eraPn06", "rb13", status);
+
+   vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14,
+       "eraPn06", "rb21", status);
+   vvd(rb[1][1], 0.9999999999999969484, 1e-12,
+       "eraPn06", "rb22", status);
+   vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14,
+       "eraPn06", "rb23", status);
+
+   vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14,
+       "eraPn06", "rb31", status);
+   vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14,
+       "eraPn06", "rb32", status);
+   vvd(rb[2][2], 0.9999999999999962084, 1e-12,
+       "eraPn06", "rb33", status);
+
+   vvd(rp[0][0], 0.9999989300536854831, 1e-12,
+       "eraPn06", "rp11", status);
+   vvd(rp[0][1], -0.1341646886204443795e-2, 1e-14,
+       "eraPn06", "rp12", status);
+   vvd(rp[0][2], -0.5829880933488627759e-3, 1e-14,
+       "eraPn06", "rp13", status);
+
+   vvd(rp[1][0], 0.1341646890569782183e-2, 1e-14,
+       "eraPn06", "rp21", status);
+   vvd(rp[1][1], 0.9999990999913319321, 1e-12,
+       "eraPn06", "rp22", status);
+   vvd(rp[1][2], -0.3835944216374477457e-6, 1e-14,
+       "eraPn06", "rp23", status);
+
+   vvd(rp[2][0], 0.5829880833027867368e-3, 1e-14,
+       "eraPn06", "rp31", status);
+   vvd(rp[2][1], -0.3985701514686976112e-6, 1e-14,
+       "eraPn06", "rp32", status);
+   vvd(rp[2][2], 0.9999998300623534950, 1e-12,
+       "eraPn06", "rp33", status);
+
+   vvd(rbp[0][0], 0.9999989300056797893, 1e-12,
+       "eraPn06", "rbp11", status);
+   vvd(rbp[0][1], -0.1341717650545059598e-2, 1e-14,
+       "eraPn06", "rbp12", status);
+   vvd(rbp[0][2], -0.5829075756493728856e-3, 1e-14,
+       "eraPn06", "rbp13", status);
+
+   vvd(rbp[1][0], 0.1341717674223918101e-2, 1e-14,
+       "eraPn06", "rbp21", status);
+   vvd(rbp[1][1], 0.9999990998963748448, 1e-12,
+       "eraPn06", "rbp22", status);
+   vvd(rbp[1][2], -0.3504269280170069029e-6, 1e-14,
+       "eraPn06", "rbp23", status);
+
+   vvd(rbp[2][0], 0.5829075211461454599e-3, 1e-14,
+       "eraPn06", "rbp31", status);
+   vvd(rbp[2][1], -0.4316708436255949093e-6, 1e-14,
+       "eraPn06", "rbp32", status);
+   vvd(rbp[2][2], 0.9999998301093032943, 1e-12,
+       "eraPn06", "rbp33", status);
+
+   vvd(rn[0][0], 0.9999999999536069682, 1e-12,
+       "eraPn06", "rn11", status);
+   vvd(rn[0][1], 0.8837746921149881914e-5, 1e-14,
+       "eraPn06", "rn12", status);
+   vvd(rn[0][2], 0.3831487047682968703e-5, 1e-14,
+       "eraPn06", "rn13", status);
+
+   vvd(rn[1][0], -0.8837591232983692340e-5, 1e-14,
+       "eraPn06", "rn21", status);
+   vvd(rn[1][1], 0.9999999991354692664, 1e-12,
+       "eraPn06", "rn22", status);
+   vvd(rn[1][2], -0.4063198798558931215e-4, 1e-14,
+       "eraPn06", "rn23", status);
+
+   vvd(rn[2][0], -0.3831846139597250235e-5, 1e-14,
+       "eraPn06", "rn31", status);
+   vvd(rn[2][1], 0.4063195412258792914e-4, 1e-14,
+       "eraPn06", "rn32", status);
+   vvd(rn[2][2], 0.9999999991671806293, 1e-12,
+       "eraPn06", "rn33", status);
+
+   vvd(rbpn[0][0], 0.9999989440504506688, 1e-12,
+       "eraPn06", "rbpn11", status);
+   vvd(rbpn[0][1], -0.1332879913170492655e-2, 1e-14,
+       "eraPn06", "rbpn12", status);
+   vvd(rbpn[0][2], -0.5790760923225655753e-3, 1e-14,
+       "eraPn06", "rbpn13", status);
+
+   vvd(rbpn[1][0], 0.1332856406595754748e-2, 1e-14,
+       "eraPn06", "rbpn21", status);
+   vvd(rbpn[1][1], 0.9999991109069366795, 1e-12,
+       "eraPn06", "rbpn22", status);
+   vvd(rbpn[1][2], -0.4097725651142641812e-4, 1e-14,
+       "eraPn06", "rbpn23", status);
+
+   vvd(rbpn[2][0], 0.5791301952321296716e-3, 1e-14,
+       "eraPn06", "rbpn31", status);
+   vvd(rbpn[2][1], 0.4020538796195230577e-4, 1e-14,
+       "eraPn06", "rbpn32", status);
+   vvd(rbpn[2][2], 0.9999998314958576778, 1e-12,
+       "eraPn06", "rbpn33", status);
+
+}
+
+static void t_pnm00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p n m 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraPnm00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPnm00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3];
+
+
+   eraPnm00a(2400000.5, 50123.9999, rbpn);
+
+   vvd(rbpn[0][0], 0.9999995832793134257, 1e-12,
+       "eraPnm00a", "11", status);
+   vvd(rbpn[0][1], 0.8372384254137809439e-3, 1e-14,
+       "eraPnm00a", "12", status);
+   vvd(rbpn[0][2], 0.3639684306407150645e-3, 1e-14,
+       "eraPnm00a", "13", status);
+
+   vvd(rbpn[1][0], -0.8372535226570394543e-3, 1e-14,
+       "eraPnm00a", "21", status);
+   vvd(rbpn[1][1], 0.9999996486491582471, 1e-12,
+       "eraPnm00a", "22", status);
+   vvd(rbpn[1][2], 0.4132915262664072381e-4, 1e-14,
+       "eraPnm00a", "23", status);
+
+   vvd(rbpn[2][0], -0.3639337004054317729e-3, 1e-14,
+       "eraPnm00a", "31", status);
+   vvd(rbpn[2][1], -0.4163386925461775873e-4, 1e-14,
+       "eraPnm00a", "32", status);
+   vvd(rbpn[2][2], 0.9999999329094390695, 1e-12,
+       "eraPnm00a", "33", status);
+
+}
+
+static void t_pnm00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p n m 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraPnm00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPnm00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3];
+
+
+   eraPnm00b(2400000.5, 50123.9999, rbpn);
+
+   vvd(rbpn[0][0], 0.9999995832776208280, 1e-12,
+       "eraPnm00b", "11", status);
+   vvd(rbpn[0][1], 0.8372401264429654837e-3, 1e-14,
+       "eraPnm00b", "12", status);
+   vvd(rbpn[0][2], 0.3639691681450271771e-3, 1e-14,
+       "eraPnm00b", "13", status);
+
+   vvd(rbpn[1][0], -0.8372552234147137424e-3, 1e-14,
+       "eraPnm00b", "21", status);
+   vvd(rbpn[1][1], 0.9999996486477686123, 1e-12,
+       "eraPnm00b", "22", status);
+   vvd(rbpn[1][2], 0.4132832190946052890e-4, 1e-14,
+       "eraPnm00b", "23", status);
+
+   vvd(rbpn[2][0], -0.3639344385341866407e-3, 1e-14,
+       "eraPnm00b", "31", status);
+   vvd(rbpn[2][1], -0.4163303977421522785e-4, 1e-14,
+       "eraPnm00b", "32", status);
+   vvd(rbpn[2][2], 0.9999999329092049734, 1e-12,
+       "eraPnm00b", "33", status);
+
+}
+
+static void t_pnm06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p n m 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraPnm06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPnm06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rbpn[3][3];
+
+
+   eraPnm06a(2400000.5, 50123.9999, rbpn);
+
+   vvd(rbpn[0][0], 0.9999995832794205484, 1e-12,
+       "eraPnm06a", "11", status);
+   vvd(rbpn[0][1], 0.8372382772630962111e-3, 1e-14,
+       "eraPnm06a", "12", status);
+   vvd(rbpn[0][2], 0.3639684771140623099e-3, 1e-14,
+       "eraPnm06a", "13", status);
+
+   vvd(rbpn[1][0], -0.8372533744743683605e-3, 1e-14,
+       "eraPnm06a", "21", status);
+   vvd(rbpn[1][1], 0.9999996486492861646, 1e-12,
+       "eraPnm06a", "22", status);
+   vvd(rbpn[1][2], 0.4132905944611019498e-4, 1e-14,
+       "eraPnm06a", "23", status);
+
+   vvd(rbpn[2][0], -0.3639337469629464969e-3, 1e-14,
+       "eraPnm06a", "31", status);
+   vvd(rbpn[2][1], -0.4163377605910663999e-4, 1e-14,
+       "eraPnm06a", "32", status);
+   vvd(rbpn[2][2], 0.9999999329094260057, 1e-12,
+       "eraPnm06a", "33", status);
+
+}
+
+static void t_pnm80(int *status)
+/*
+**  - - - - - - - -
+**   t _ p n m 8 0
+**  - - - - - - - -
+**
+**  Test eraPnm80 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPnm80, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double rmatpn[3][3];
+
+
+   eraPnm80(2400000.5, 50123.9999, rmatpn);
+
+   vvd(rmatpn[0][0], 0.9999995831934611169, 1e-12,
+       "eraPnm80", "11", status);
+   vvd(rmatpn[0][1], 0.8373654045728124011e-3, 1e-14,
+       "eraPnm80", "12", status);
+   vvd(rmatpn[0][2], 0.3639121916933106191e-3, 1e-14,
+       "eraPnm80", "13", status);
+
+   vvd(rmatpn[1][0], -0.8373804896118301316e-3, 1e-14,
+       "eraPnm80", "21", status);
+   vvd(rmatpn[1][1], 0.9999996485439674092, 1e-12,
+       "eraPnm80", "22", status);
+   vvd(rmatpn[1][2], 0.4130202510421549752e-4, 1e-14,
+       "eraPnm80", "23", status);
+
+   vvd(rmatpn[2][0], -0.3638774789072144473e-3, 1e-14,
+       "eraPnm80", "31", status);
+   vvd(rmatpn[2][1], -0.4160674085851722359e-4, 1e-14,
+       "eraPnm80", "32", status);
+   vvd(rmatpn[2][2], 0.9999999329310274805, 1e-12,
+       "eraPnm80", "33", status);
+
+}
+
+static void t_pom00(int *status)
+/*
+**  - - - - - - - -
+**   t _ p o m 0 0
+**  - - - - - - - -
+**
+**  Test eraPom00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPom00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double xp, yp, sp, rpom[3][3];
+
+
+   xp =  2.55060238e-7;
+   yp =  1.860359247e-6;
+   sp = -0.1367174580728891460e-10;
+
+   eraPom00(xp, yp, sp, rpom);
+
+   vvd(rpom[0][0], 0.9999999999999674721, 1e-12,
+       "eraPom00", "11", status);
+   vvd(rpom[0][1], -0.1367174580728846989e-10, 1e-16,
+       "eraPom00", "12", status);
+   vvd(rpom[0][2], 0.2550602379999972345e-6, 1e-16,
+       "eraPom00", "13", status);
+
+   vvd(rpom[1][0], 0.1414624947957029801e-10, 1e-16,
+       "eraPom00", "21", status);
+   vvd(rpom[1][1], 0.9999999999982695317, 1e-12,
+       "eraPom00", "22", status);
+   vvd(rpom[1][2], -0.1860359246998866389e-5, 1e-16,
+       "eraPom00", "23", status);
+
+   vvd(rpom[2][0], -0.2550602379741215021e-6, 1e-16,
+       "eraPom00", "31", status);
+   vvd(rpom[2][1], 0.1860359247002414021e-5, 1e-16,
+       "eraPom00", "32", status);
+   vvd(rpom[2][2], 0.9999999999982370039, 1e-12,
+       "eraPom00", "33", status);
+
+}
+
+static void t_ppp(int *status)
+/*
+**  - - - - - -
+**   t _ p p p
+**  - - - - - -
+**
+**  Test eraPpp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPpp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], apb[3];
+
+
+   a[0] = 2.0;
+   a[1] = 2.0;
+   a[2] = 3.0;
+
+   b[0] = 1.0;
+   b[1] = 3.0;
+   b[2] = 4.0;
+
+   eraPpp(a, b, apb);
+
+   vvd(apb[0], 3.0, 1e-12, "eraPpp", "0", status);
+   vvd(apb[1], 5.0, 1e-12, "eraPpp", "1", status);
+   vvd(apb[2], 7.0, 1e-12, "eraPpp", "2", status);
+
+}
+
+static void t_ppsp(int *status)
+/*
+**  - - - - - - -
+**   t _ p p s p
+**  - - - - - - -
+**
+**  Test eraPpsp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPpsp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], s, b[3], apsb[3];
+
+
+   a[0] = 2.0;
+   a[1] = 2.0;
+   a[2] = 3.0;
+
+   s = 5.0;
+
+   b[0] = 1.0;
+   b[1] = 3.0;
+   b[2] = 4.0;
+
+   eraPpsp(a, s, b, apsb);
+
+   vvd(apsb[0], 7.0, 1e-12, "eraPpsp", "0", status);
+   vvd(apsb[1], 17.0, 1e-12, "eraPpsp", "1", status);
+   vvd(apsb[2], 23.0, 1e-12, "eraPpsp", "2", status);
+
+}
+
+static void t_pr00(int *status)
+/*
+**  - - - - - - -
+**   t _ p r 0 0
+**  - - - - - - -
+**
+**  Test eraPr00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPr00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double dpsipr, depspr;
+
+   eraPr00(2400000.5, 53736, &dpsipr, &depspr);
+
+   vvd(dpsipr, -0.8716465172668347629e-7, 1e-22,
+      "eraPr00", "dpsipr", status);
+   vvd(depspr, -0.7342018386722813087e-8, 1e-22,
+      "eraPr00", "depspr", status);
+
+}
+
+static void t_prec76(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p r e c 7 6
+**  - - - - - - - - -
+**
+**  Test eraPrec76 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPrec76, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ep01, ep02, ep11, ep12, zeta, z, theta;
+
+
+   ep01 = 2400000.5;
+   ep02 = 33282.0;
+   ep11 = 2400000.5;
+   ep12 = 51544.0;
+
+   eraPrec76(ep01, ep02, ep11, ep12, &zeta, &z, &theta);
+
+   vvd(zeta,  0.5588961642000161243e-2, 1e-12,
+       "eraPrec76", "zeta",  status);
+   vvd(z,     0.5589922365870680624e-2, 1e-12,
+       "eraPrec76", "z",     status);
+   vvd(theta, 0.4858945471687296760e-2, 1e-12,
+       "eraPrec76", "theta", status);
+
+}
+
+static void t_pv2p(int *status)
+/*
+**  - - - - - - -
+**   t _ p v 2 p
+**  - - - - - - -
+**
+**  Test eraPv2p function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPv2p, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], p[3];
+
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] = -0.5;
+   pv[1][1] =  3.1;
+   pv[1][2] =  0.9;
+
+   eraPv2p(pv, p);
+
+   vvd(p[0],  0.3, 0.0, "eraPv2p", "1", status);
+   vvd(p[1],  1.2, 0.0, "eraPv2p", "2", status);
+   vvd(p[2], -2.5, 0.0, "eraPv2p", "3", status);
+
+}
+
+static void t_pv2s(int *status)
+/*
+**  - - - - - - -
+**   t _ p v 2 s
+**  - - - - - - -
+**
+**  Test eraPv2s function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPv2s, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], theta, phi, r, td, pd, rd;
+
+
+   pv[0][0] = -0.4514964673880165;
+   pv[0][1] =  0.03093394277342585;
+   pv[0][2] =  0.05594668105108779;
+
+   pv[1][0] =  1.292270850663260e-5;
+   pv[1][1] =  2.652814182060692e-6;
+   pv[1][2] =  2.568431853930293e-6;
+
+   eraPv2s(pv, &theta, &phi, &r, &td, &pd, &rd);
+
+   vvd(theta, 3.073185307179586515, 1e-12, "eraPv2s", "theta", status);
+   vvd(phi, 0.1229999999999999992, 1e-12, "eraPv2s", "phi", status);
+   vvd(r, 0.4559999999999999757, 1e-12, "eraPv2s", "r", status);
+   vvd(td, -0.7800000000000000364e-5, 1e-16, "eraPv2s", "td", status);
+   vvd(pd, 0.9010000000000001639e-5, 1e-16, "eraPv2s", "pd", status);
+   vvd(rd, -0.1229999999999999832e-4, 1e-16, "eraPv2s", "rd", status);
+
+}
+
+static void t_pvdpv(int *status)
+/*
+**  - - - - - - - -
+**   t _ p v d p v
+**  - - - - - - - -
+**
+**  Test eraPvdpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvdpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[2][3], b[2][3], adb[2];
+
+
+   a[0][0] = 2.0;
+   a[0][1] = 2.0;
+   a[0][2] = 3.0;
+
+   a[1][0] = 6.0;
+   a[1][1] = 0.0;
+   a[1][2] = 4.0;
+
+   b[0][0] = 1.0;
+   b[0][1] = 3.0;
+   b[0][2] = 4.0;
+
+   b[1][0] = 0.0;
+   b[1][1] = 2.0;
+   b[1][2] = 8.0;
+
+   eraPvdpv(a, b, adb);
+
+   vvd(adb[0], 20.0, 1e-12, "eraPvdpv", "1", status);
+   vvd(adb[1], 50.0, 1e-12, "eraPvdpv", "2", status);
+
+}
+
+static void t_pvm(int *status)
+/*
+**  - - - - - -
+**   t _ p v m
+**  - - - - - -
+**
+**  Test eraPvm function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvm, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], r, s;
+
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] =  0.45;
+   pv[1][1] = -0.25;
+   pv[1][2] =  1.1;
+
+   eraPvm(pv, &r, &s);
+
+   vvd(r, 2.789265136196270604, 1e-12, "eraPvm", "r", status);
+   vvd(s, 1.214495780149111922, 1e-12, "eraPvm", "s", status);
+
+}
+
+static void t_pvmpv(int *status)
+/*
+**  - - - - - - - -
+**   t _ p v m p v
+**  - - - - - - - -
+**
+**  Test eraPvmpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvmpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[2][3], b[2][3], amb[2][3];
+
+
+   a[0][0] = 2.0;
+   a[0][1] = 2.0;
+   a[0][2] = 3.0;
+
+   a[1][0] = 5.0;
+   a[1][1] = 6.0;
+   a[1][2] = 3.0;
+
+   b[0][0] = 1.0;
+   b[0][1] = 3.0;
+   b[0][2] = 4.0;
+
+   b[1][0] = 3.0;
+   b[1][1] = 2.0;
+   b[1][2] = 1.0;
+
+   eraPvmpv(a, b, amb);
+
+   vvd(amb[0][0],  1.0, 1e-12, "eraPvmpv", "11", status);
+   vvd(amb[0][1], -1.0, 1e-12, "eraPvmpv", "21", status);
+   vvd(amb[0][2], -1.0, 1e-12, "eraPvmpv", "31", status);
+
+   vvd(amb[1][0],  2.0, 1e-12, "eraPvmpv", "12", status);
+   vvd(amb[1][1],  4.0, 1e-12, "eraPvmpv", "22", status);
+   vvd(amb[1][2],  2.0, 1e-12, "eraPvmpv", "32", status);
+
+}
+
+static void t_pvppv(int *status)
+/*
+**  - - - - - - - -
+**   t _ p v p p v
+**  - - - - - - - -
+**
+**  Test eraPvppv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvppv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[2][3], b[2][3], apb[2][3];
+
+
+   a[0][0] = 2.0;
+   a[0][1] = 2.0;
+   a[0][2] = 3.0;
+
+   a[1][0] = 5.0;
+   a[1][1] = 6.0;
+   a[1][2] = 3.0;
+
+   b[0][0] = 1.0;
+   b[0][1] = 3.0;
+   b[0][2] = 4.0;
+
+   b[1][0] = 3.0;
+   b[1][1] = 2.0;
+   b[1][2] = 1.0;
+
+   eraPvppv(a, b, apb);
+
+   vvd(apb[0][0], 3.0, 1e-12, "eraPvppv", "p1", status);
+   vvd(apb[0][1], 5.0, 1e-12, "eraPvppv", "p2", status);
+   vvd(apb[0][2], 7.0, 1e-12, "eraPvppv", "p3", status);
+
+   vvd(apb[1][0], 8.0, 1e-12, "eraPvppv", "v1", status);
+   vvd(apb[1][1], 8.0, 1e-12, "eraPvppv", "v2", status);
+   vvd(apb[1][2], 4.0, 1e-12, "eraPvppv", "v3", status);
+
+}
+
+static void t_pvstar(int *status)
+/*
+**  - - - - - - - - -
+**   t _ p v s t a r
+**  - - - - - - - - -
+**
+**  Test eraPvstar function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvstar, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], ra, dec, pmr, pmd, px, rv;
+   int j;
+
+
+   pv[0][0] =  126668.5912743160601;
+   pv[0][1] =  2136.792716839935195;
+   pv[0][2] = -245251.2339876830091;
+
+   pv[1][0] = -0.4051854035740712739e-2;
+   pv[1][1] = -0.6253919754866173866e-2;
+   pv[1][2] =  0.1189353719774107189e-1;
+
+   j = eraPvstar(pv, &ra, &dec, &pmr, &pmd, &px, &rv);
+
+   vvd(ra, 0.1686756e-1, 1e-12, "eraPvstar", "ra", status);
+   vvd(dec, -1.093989828, 1e-12, "eraPvstar", "dec", status);
+   vvd(pmr, -0.178323516e-4, 1e-16, "eraPvstar", "pmr", status);
+   vvd(pmd, 0.2336024047e-5, 1e-16, "eraPvstar", "pmd", status);
+   vvd(px, 0.74723, 1e-12, "eraPvstar", "px", status);
+   vvd(rv, -21.6, 1e-11, "eraPvstar", "rv", status);
+
+   viv(j, 0, "eraPvstar", "j", status);
+
+}
+
+static void t_pvtob(int *status)
+/*
+**  - - - - - - - -
+**   t _ p v t o b
+**  - - - - - - - -
+**
+**  Test eraPvtob function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvtob, vvd
+**
+**  This revision:  2013 October 2
+*/
+{
+   double elong, phi, hm, xp, yp, sp, theta, pv[2][3];
+
+
+   elong = 2.0;
+   phi = 0.5;
+   hm = 3000.0;
+   xp = 1e-6;
+   yp = -0.5e-6;
+   sp = 1e-8;
+   theta = 5.0;
+
+   eraPvtob(elong, phi, hm, xp, yp, sp, theta, pv);
+
+   vvd(pv[0][0], 4225081.367071159207, 1e-5,
+                 "eraPvtob", "p(1)", status);
+   vvd(pv[0][1], 3681943.215856198144, 1e-5,
+                 "eraPvtob", "p(2)", status);
+   vvd(pv[0][2], 3041149.399241260785, 1e-5,
+                 "eraPvtob", "p(3)", status);
+   vvd(pv[1][0], -268.4915389365998787, 1e-9,
+                 "eraPvtob", "v(1)", status);
+   vvd(pv[1][1], 308.0977983288903123, 1e-9,
+                 "eraPvtob", "v(2)", status);
+   vvd(pv[1][2], 0, 0,
+                 "eraPvtob", "v(3)", status);
+
+}
+
+static void t_pvu(int *status)
+/*
+**  - - - - - -
+**   t _ p v u
+**  - - - - - -
+**
+**  Test eraPvu function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvu, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], upv[2][3];
+
+
+   pv[0][0] =  126668.5912743160734;
+   pv[0][1] =  2136.792716839935565;
+   pv[0][2] = -245251.2339876830229;
+
+   pv[1][0] = -0.4051854035740713039e-2;
+   pv[1][1] = -0.6253919754866175788e-2;
+   pv[1][2] =  0.1189353719774107615e-1;
+
+   eraPvu(2920.0, pv, upv);
+
+   vvd(upv[0][0], 126656.7598605317105, 1e-12,
+       "eraPvu", "p1", status);
+   vvd(upv[0][1], 2118.531271155726332, 1e-12,
+       "eraPvu", "p2", status);
+   vvd(upv[0][2], -245216.5048590656190, 1e-12,
+       "eraPvu", "p3", status);
+
+   vvd(upv[1][0], -0.4051854035740713039e-2, 1e-12,
+       "eraPvu", "v1", status);
+   vvd(upv[1][1], -0.6253919754866175788e-2, 1e-12,
+       "eraPvu", "v2", status);
+   vvd(upv[1][2], 0.1189353719774107615e-1, 1e-12,
+       "eraPvu", "v3", status);
+
+}
+
+static void t_pvup(int *status)
+/*
+**  - - - - - - -
+**   t _ p v u p
+**  - - - - - - -
+**
+**  Test eraPvup function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvup, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3], p[3];
+
+
+   pv[0][0] =  126668.5912743160734;
+   pv[0][1] =  2136.792716839935565;
+   pv[0][2] = -245251.2339876830229;
+
+   pv[1][0] = -0.4051854035740713039e-2;
+   pv[1][1] = -0.6253919754866175788e-2;
+   pv[1][2] =  0.1189353719774107615e-1;
+
+   eraPvup(2920.0, pv, p);
+
+   vvd(p[0],  126656.7598605317105,   1e-12, "eraPvup", "1", status);
+   vvd(p[1],    2118.531271155726332, 1e-12, "eraPvup", "2", status);
+   vvd(p[2], -245216.5048590656190,   1e-12, "eraPvup", "3", status);
+
+}
+
+static void t_pvxpv(int *status)
+/*
+**  - - - - - - - -
+**   t _ p v x p v
+**  - - - - - - - -
+**
+**  Test eraPvxpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPvxpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[2][3], b[2][3], axb[2][3];
+
+
+   a[0][0] = 2.0;
+   a[0][1] = 2.0;
+   a[0][2] = 3.0;
+
+   a[1][0] = 6.0;
+   a[1][1] = 0.0;
+   a[1][2] = 4.0;
+
+   b[0][0] = 1.0;
+   b[0][1] = 3.0;
+   b[0][2] = 4.0;
+
+   b[1][0] = 0.0;
+   b[1][1] = 2.0;
+   b[1][2] = 8.0;
+
+   eraPvxpv(a, b, axb);
+
+   vvd(axb[0][0],  -1.0, 1e-12, "eraPvxpv", "p1", status);
+   vvd(axb[0][1],  -5.0, 1e-12, "eraPvxpv", "p2", status);
+   vvd(axb[0][2],   4.0, 1e-12, "eraPvxpv", "p3", status);
+
+   vvd(axb[1][0],  -2.0, 1e-12, "eraPvxpv", "v1", status);
+   vvd(axb[1][1], -36.0, 1e-12, "eraPvxpv", "v2", status);
+   vvd(axb[1][2],  22.0, 1e-12, "eraPvxpv", "v3", status);
+
+}
+
+static void t_pxp(int *status)
+/*
+**  - - - - - -
+**   t _ p x p
+**  - - - - - -
+**
+**  Test eraPxp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraPxp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], axb[3];
+
+
+   a[0] = 2.0;
+   a[1] = 2.0;
+   a[2] = 3.0;
+
+   b[0] = 1.0;
+   b[1] = 3.0;
+   b[2] = 4.0;
+
+   eraPxp(a, b, axb);
+
+   vvd(axb[0], -1.0, 1e-12, "eraPxp", "1", status);
+   vvd(axb[1], -5.0, 1e-12, "eraPxp", "2", status);
+   vvd(axb[2],  4.0, 1e-12, "eraPxp", "3", status);
+
+}
+
+static void t_refco(int *status)
+/*
+**  - - - - - - - -
+**   t _ r e f c o
+**  - - - - - - - -
+**
+**  Test eraRefco function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRefco, vvd
+**
+**  This revision:  2013 October 2
+*/
+{
+   double phpa, tc, rh, wl, refa, refb;
+
+
+   phpa = 800.0;
+   tc = 10.0;
+   rh = 0.9;
+   wl = 0.4;
+
+   eraRefco(phpa, tc, rh, wl, &refa, &refb);
+
+   vvd(refa, 0.2264949956241415009e-3, 1e-15,
+             "eraRefco", "refa", status);
+   vvd(refb, -0.2598658261729343970e-6, 1e-18,
+             "eraRefco", "refb", status);
+
+}
+
+static void t_rm2v(int *status)
+/*
+**  - - - - - - -
+**   t _ r m 2 v
+**  - - - - - - -
+**
+**  Test eraRm2v function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRm2v, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], w[3];
+
+
+   r[0][0] =  0.00;
+   r[0][1] = -0.80;
+   r[0][2] = -0.60;
+
+   r[1][0] =  0.80;
+   r[1][1] = -0.36;
+   r[1][2] =  0.48;
+
+   r[2][0] =  0.60;
+   r[2][1] =  0.48;
+   r[2][2] = -0.64;
+
+   eraRm2v(r, w);
+
+   vvd(w[0],  0.0,                  1e-12, "eraRm2v", "1", status);
+   vvd(w[1],  1.413716694115406957, 1e-12, "eraRm2v", "2", status);
+   vvd(w[2], -1.884955592153875943, 1e-12, "eraRm2v", "3", status);
+
+}
+
+static void t_rv2m(int *status)
+/*
+**  - - - - - - -
+**   t _ r v 2 m
+**  - - - - - - -
+**
+**  Test eraRv2m function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRv2m, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double w[3], r[3][3];
+
+
+   w[0] =  0.0;
+   w[1] =  1.41371669;
+   w[2] = -1.88495559;
+
+   eraRv2m(w, r);
+
+   vvd(r[0][0], -0.7071067782221119905, 1e-14, "eraRv2m", "11", status);
+   vvd(r[0][1], -0.5656854276809129651, 1e-14, "eraRv2m", "12", status);
+   vvd(r[0][2], -0.4242640700104211225, 1e-14, "eraRv2m", "13", status);
+
+   vvd(r[1][0],  0.5656854276809129651, 1e-14, "eraRv2m", "21", status);
+   vvd(r[1][1], -0.0925483394532274246, 1e-14, "eraRv2m", "22", status);
+   vvd(r[1][2], -0.8194112531408833269, 1e-14, "eraRv2m", "23", status);
+
+   vvd(r[2][0],  0.4242640700104211225, 1e-14, "eraRv2m", "31", status);
+   vvd(r[2][1], -0.8194112531408833269, 1e-14, "eraRv2m", "32", status);
+   vvd(r[2][2],  0.3854415612311154341, 1e-14, "eraRv2m", "33", status);
+
+}
+
+static void t_rx(int *status)
+/*
+**  - - - - -
+**   t _ r x
+**  - - - - -
+**
+**  Test eraRx function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRx, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double phi, r[3][3];
+
+
+   phi = 0.3456789;
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraRx(phi, r);
+
+   vvd(r[0][0], 2.0, 0.0, "eraRx", "11", status);
+   vvd(r[0][1], 3.0, 0.0, "eraRx", "12", status);
+   vvd(r[0][2], 2.0, 0.0, "eraRx", "13", status);
+
+   vvd(r[1][0], 3.839043388235612460, 1e-12, "eraRx", "21", status);
+   vvd(r[1][1], 3.237033249594111899, 1e-12, "eraRx", "22", status);
+   vvd(r[1][2], 4.516714379005982719, 1e-12, "eraRx", "23", status);
+
+   vvd(r[2][0], 1.806030415924501684, 1e-12, "eraRx", "31", status);
+   vvd(r[2][1], 3.085711545336372503, 1e-12, "eraRx", "32", status);
+   vvd(r[2][2], 3.687721683977873065, 1e-12, "eraRx", "33", status);
+
+}
+
+static void t_rxp(int *status)
+/*
+**  - - - - - -
+**   t _ r x p
+**  - - - - - -
+**
+**  Test eraRxp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRxp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], p[3], rp[3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   p[0] = 0.2;
+   p[1] = 1.5;
+   p[2] = 0.1;
+
+   eraRxp(r, p, rp);
+
+   vvd(rp[0], 5.1, 1e-12, "eraRxp", "1", status);
+   vvd(rp[1], 3.9, 1e-12, "eraRxp", "2", status);
+   vvd(rp[2], 7.1, 1e-12, "eraRxp", "3", status);
+
+}
+
+static void t_rxpv(int *status)
+/*
+**  - - - - - - -
+**   t _ r x p v
+**  - - - - - - -
+**
+**  Test eraRxpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRxpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], pv[2][3], rpv[2][3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   pv[0][0] = 0.2;
+   pv[0][1] = 1.5;
+   pv[0][2] = 0.1;
+
+   pv[1][0] = 1.5;
+   pv[1][1] = 0.2;
+   pv[1][2] = 0.1;
+
+   eraRxpv(r, pv, rpv);
+
+   vvd(rpv[0][0], 5.1, 1e-12, "eraRxpv", "11", status);
+   vvd(rpv[1][0], 3.8, 1e-12, "eraRxpv", "12", status);
+
+   vvd(rpv[0][1], 3.9, 1e-12, "eraRxpv", "21", status);
+   vvd(rpv[1][1], 5.2, 1e-12, "eraRxpv", "22", status);
+
+   vvd(rpv[0][2], 7.1, 1e-12, "eraRxpv", "31", status);
+   vvd(rpv[1][2], 5.8, 1e-12, "eraRxpv", "32", status);
+
+}
+
+static void t_rxr(int *status)
+/*
+**  - - - - - -
+**   t _ r x r
+**  - - - - - -
+**
+**  Test eraRxr function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRxr, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3][3], b[3][3], atb[3][3];
+
+
+   a[0][0] = 2.0;
+   a[0][1] = 3.0;
+   a[0][2] = 2.0;
+
+   a[1][0] = 3.0;
+   a[1][1] = 2.0;
+   a[1][2] = 3.0;
+
+   a[2][0] = 3.0;
+   a[2][1] = 4.0;
+   a[2][2] = 5.0;
+
+   b[0][0] = 1.0;
+   b[0][1] = 2.0;
+   b[0][2] = 2.0;
+
+   b[1][0] = 4.0;
+   b[1][1] = 1.0;
+   b[1][2] = 1.0;
+
+   b[2][0] = 3.0;
+   b[2][1] = 0.0;
+   b[2][2] = 1.0;
+
+   eraRxr(a, b, atb);
+
+   vvd(atb[0][0], 20.0, 1e-12, "eraRxr", "11", status);
+   vvd(atb[0][1],  7.0, 1e-12, "eraRxr", "12", status);
+   vvd(atb[0][2],  9.0, 1e-12, "eraRxr", "13", status);
+
+   vvd(atb[1][0], 20.0, 1e-12, "eraRxr", "21", status);
+   vvd(atb[1][1],  8.0, 1e-12, "eraRxr", "22", status);
+   vvd(atb[1][2], 11.0, 1e-12, "eraRxr", "23", status);
+
+   vvd(atb[2][0], 34.0, 1e-12, "eraRxr", "31", status);
+   vvd(atb[2][1], 10.0, 1e-12, "eraRxr", "32", status);
+   vvd(atb[2][2], 15.0, 1e-12, "eraRxr", "33", status);
+
+}
+
+static void t_ry(int *status)
+/*
+**  - - - - -
+**   t _ r y
+**  - - - - -
+**
+**  Test eraRy function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRy, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double theta, r[3][3];
+
+
+   theta = 0.3456789;
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraRy(theta, r);
+
+   vvd(r[0][0], 0.8651847818978159930, 1e-12, "eraRy", "11", status);
+   vvd(r[0][1], 1.467194920539316554, 1e-12, "eraRy", "12", status);
+   vvd(r[0][2], 0.1875137911274457342, 1e-12, "eraRy", "13", status);
+
+   vvd(r[1][0], 3, 1e-12, "eraRy", "21", status);
+   vvd(r[1][1], 2, 1e-12, "eraRy", "22", status);
+   vvd(r[1][2], 3, 1e-12, "eraRy", "23", status);
+
+   vvd(r[2][0], 3.500207892850427330, 1e-12, "eraRy", "31", status);
+   vvd(r[2][1], 4.779889022262298150, 1e-12, "eraRy", "32", status);
+   vvd(r[2][2], 5.381899160903798712, 1e-12, "eraRy", "33", status);
+
+}
+
+static void t_rz(int *status)
+/*
+**  - - - - -
+**   t _ r z
+**  - - - - -
+**
+**  Test eraRz function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraRz, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double psi, r[3][3];
+
+
+   psi = 0.3456789;
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraRz(psi, r);
+
+   vvd(r[0][0], 2.898197754208926769, 1e-12, "eraRz", "11", status);
+   vvd(r[0][1], 3.500207892850427330, 1e-12, "eraRz", "12", status);
+   vvd(r[0][2], 2.898197754208926769, 1e-12, "eraRz", "13", status);
+
+   vvd(r[1][0], 2.144865911309686813, 1e-12, "eraRz", "21", status);
+   vvd(r[1][1], 0.865184781897815993, 1e-12, "eraRz", "22", status);
+   vvd(r[1][2], 2.144865911309686813, 1e-12, "eraRz", "23", status);
+
+   vvd(r[2][0], 3.0, 1e-12, "eraRz", "31", status);
+   vvd(r[2][1], 4.0, 1e-12, "eraRz", "32", status);
+   vvd(r[2][2], 5.0, 1e-12, "eraRz", "33", status);
+
+}
+
+static void t_s00a(int *status)
+/*
+**  - - - - - - -
+**   t _ s 0 0 a
+**  - - - - - - -
+**
+**  Test eraS00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s;
+
+
+   s = eraS00a(2400000.5, 52541.0);
+
+   vvd(s, -0.1340684448919163584e-7, 1e-18, "eraS00a", "", status);
+
+}
+
+static void t_s00b(int *status)
+/*
+**  - - - - - - -
+**   t _ s 0 0 b
+**  - - - - - - -
+**
+**  Test eraS00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s;
+
+
+   s = eraS00b(2400000.5, 52541.0);
+
+   vvd(s, -0.1340695782951026584e-7, 1e-18, "eraS00b", "", status);
+
+}
+
+static void t_s00(int *status)
+/*
+**  - - - - - -
+**   t _ s 0 0
+**  - - - - - -
+**
+**  Test eraS00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s;
+
+
+   x = 0.5791308486706011000e-3;
+   y = 0.4020579816732961219e-4;
+
+   s = eraS00(2400000.5, 53736.0, x, y);
+
+   vvd(s, -0.1220036263270905693e-7, 1e-18, "eraS00", "", status);
+
+}
+
+static void t_s06a(int *status)
+/*
+**  - - - - - - -
+**   t _ s 0 6 a
+**  - - - - - - -
+**
+**  Test eraS06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s;
+
+
+   s = eraS06a(2400000.5, 52541.0);
+
+   vvd(s, -0.1340680437291812383e-7, 1e-18, "eraS06a", "", status);
+
+}
+
+static void t_s06(int *status)
+/*
+**  - - - - - -
+**   t _ s 0 6
+**  - - - - - -
+**
+**  Test eraS06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s;
+
+
+   x = 0.5791308486706011000e-3;
+   y = 0.4020579816732961219e-4;
+
+   s = eraS06(2400000.5, 53736.0, x, y);
+
+   vvd(s, -0.1220032213076463117e-7, 1e-18, "eraS06", "", status);
+
+}
+
+static void t_s2c(int *status)
+/*
+**  - - - - - -
+**   t _ s 2 c
+**  - - - - - -
+**
+**  Test eraS2c function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS2c, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double c[3];
+
+
+   eraS2c(3.0123, -0.999, c);
+
+   vvd(c[0], -0.5366267667260523906, 1e-12, "eraS2c", "1", status);
+   vvd(c[1],  0.0697711109765145365, 1e-12, "eraS2c", "2", status);
+   vvd(c[2], -0.8409302618566214041, 1e-12, "eraS2c", "3", status);
+
+}
+
+static void t_s2p(int *status)
+/*
+**  - - - - - -
+**   t _ s 2 p
+**  - - - - - -
+**
+**  Test eraS2p function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS2p, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3];
+
+
+   eraS2p(-3.21, 0.123, 0.456, p);
+
+   vvd(p[0], -0.4514964673880165228, 1e-12, "eraS2p", "x", status);
+   vvd(p[1],  0.0309339427734258688, 1e-12, "eraS2p", "y", status);
+   vvd(p[2],  0.0559466810510877933, 1e-12, "eraS2p", "z", status);
+
+}
+
+static void t_s2pv(int *status)
+/*
+**  - - - - - - -
+**   t _ s 2 p v
+**  - - - - - - -
+**
+**  Test eraS2pv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS2pv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3];
+
+
+   eraS2pv(-3.21, 0.123, 0.456, -7.8e-6, 9.01e-6, -1.23e-5, pv);
+
+   vvd(pv[0][0], -0.4514964673880165228, 1e-12, "eraS2pv", "x", status);
+   vvd(pv[0][1],  0.0309339427734258688, 1e-12, "eraS2pv", "y", status);
+   vvd(pv[0][2],  0.0559466810510877933, 1e-12, "eraS2pv", "z", status);
+
+   vvd(pv[1][0],  0.1292270850663260170e-4, 1e-16,
+       "eraS2pv", "vx", status);
+   vvd(pv[1][1],  0.2652814182060691422e-5, 1e-16,
+       "eraS2pv", "vy", status);
+   vvd(pv[1][2],  0.2568431853930292259e-5, 1e-16,
+       "eraS2pv", "vz", status);
+
+}
+
+static void t_s2xpv(int *status)
+/*
+**  - - - - - - - -
+**   t _ s 2 x p v
+**  - - - - - - - -
+**
+**  Test eraS2xpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraS2xpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s1, s2, pv[2][3], spv[2][3];
+
+
+   s1 = 2.0;
+   s2 = 3.0;
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] =  0.5;
+   pv[1][1] =  2.3;
+   pv[1][2] = -0.4;
+
+   eraS2xpv(s1, s2, pv, spv);
+
+   vvd(spv[0][0],  0.6, 1e-12, "eraS2xpv", "p1", status);
+   vvd(spv[0][1],  2.4, 1e-12, "eraS2xpv", "p2", status);
+   vvd(spv[0][2], -5.0, 1e-12, "eraS2xpv", "p3", status);
+
+   vvd(spv[1][0],  1.5, 1e-12, "eraS2xpv", "v1", status);
+   vvd(spv[1][1],  6.9, 1e-12, "eraS2xpv", "v2", status);
+   vvd(spv[1][2], -1.2, 1e-12, "eraS2xpv", "v3", status);
+
+}
+
+static void t_sepp(int *status)
+/*
+**  - - - - - - -
+**   t _ s e p p
+**  - - - - - - -
+**
+**  Test eraSepp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraSepp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a[3], b[3], s;
+
+
+   a[0] =  1.0;
+   a[1] =  0.1;
+   a[2] =  0.2;
+
+   b[0] = -3.0;
+   b[1] =  1e-3;
+   b[2] =  0.2;
+
+   s = eraSepp(a, b);
+
+   vvd(s, 2.860391919024660768, 1e-12, "eraSepp", "", status);
+
+}
+
+static void t_seps(int *status)
+/*
+**  - - - - - - -
+**   t _ s e p s
+**  - - - - - - -
+**
+**  Test eraSeps function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraSeps, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double al, ap, bl, bp, s;
+
+
+   al =  1.0;
+   ap =  0.1;
+
+   bl =  0.2;
+   bp = -3.0;
+
+   s = eraSeps(al, ap, bl, bp);
+
+   vvd(s, 2.346722016996998842, 1e-14, "eraSeps", "", status);
+
+}
+
+static void t_sp00(int *status)
+/*
+**  - - - - - - -
+**   t _ s p 0 0
+**  - - - - - - -
+**
+**  Test eraSp00 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraSp00, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   vvd(eraSp00(2400000.5, 52541.0),
+       -0.6216698469981019309e-11, 1e-12, "eraSp00", "", status);
+
+}
+
+static void t_starpm(int *status)
+/*
+**  - - - - - - - - -
+**   t _ s t a r p m
+**  - - - - - - - - -
+**
+**  Test eraStarpm function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraStarpm, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ra1, dec1, pmr1, pmd1, px1, rv1;
+   double ra2, dec2, pmr2, pmd2, px2, rv2;
+   int j;
+
+
+   ra1 =   0.01686756;
+   dec1 = -1.093989828;
+   pmr1 = -1.78323516e-5;
+   pmd1 =  2.336024047e-6;
+   px1 =   0.74723;
+   rv1 = -21.6;
+
+   j = eraStarpm(ra1, dec1, pmr1, pmd1, px1, rv1,
+                 2400000.5, 50083.0, 2400000.5, 53736.0,
+                 &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2);
+
+   vvd(ra2, 0.01668919069414242368, 1e-13,
+       "eraStarpm", "ra", status);
+   vvd(dec2, -1.093966454217127879, 1e-13,
+       "eraStarpm", "dec", status);
+   vvd(pmr2, -0.1783662682155932702e-4, 1e-17,
+       "eraStarpm", "pmr", status);
+   vvd(pmd2, 0.2338092915987603664e-5, 1e-17,
+       "eraStarpm", "pmd", status);
+   vvd(px2, 0.7473533835323493644, 1e-13,
+       "eraStarpm", "px", status);
+   vvd(rv2, -21.59905170476860786, 1e-11,
+       "eraStarpm", "rv", status);
+
+   viv(j, 0, "eraStarpm", "j", status);
+
+}
+
+static void t_starpv(int *status)
+/*
+**  - - - - - - - - -
+**   t _ s t a r p v
+**  - - - - - - - - -
+**
+**  Test eraStarpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraStarpv, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double ra, dec, pmr, pmd, px, rv, pv[2][3];
+   int j;
+
+
+   ra =   0.01686756;
+   dec = -1.093989828;
+   pmr = -1.78323516e-5;
+   pmd =  2.336024047e-6;
+   px =   0.74723;
+   rv = -21.6;
+
+   j = eraStarpv(ra, dec, pmr, pmd, px, rv, pv);
+
+   vvd(pv[0][0], 126668.5912743160601, 1e-10,
+       "eraStarpv", "11", status);
+   vvd(pv[0][1], 2136.792716839935195, 1e-12,
+       "eraStarpv", "12", status);
+   vvd(pv[0][2], -245251.2339876830091, 1e-10,
+       "eraStarpv", "13", status);
+
+   vvd(pv[1][0], -0.4051854035740712739e-2, 1e-13,
+       "eraStarpv", "21", status);
+   vvd(pv[1][1], -0.6253919754866173866e-2, 1e-15,
+       "eraStarpv", "22", status);
+   vvd(pv[1][2], 0.1189353719774107189e-1, 1e-13,
+       "eraStarpv", "23", status);
+
+   viv(j, 0, "eraStarpv", "j", status);
+
+}
+
+static void t_sxp(int *status)
+/*
+**  - - - - - -
+**   t _ s x p
+**  - - - - - -
+**
+**  Test eraSxp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraSxp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s, p[3], sp[3];
+
+
+   s = 2.0;
+
+   p[0] =  0.3;
+   p[1] =  1.2;
+   p[2] = -2.5;
+
+   eraSxp(s, p, sp);
+
+   vvd(sp[0],  0.6, 0.0, "eraSxp", "1", status);
+   vvd(sp[1],  2.4, 0.0, "eraSxp", "2", status);
+   vvd(sp[2], -5.0, 0.0, "eraSxp", "3", status);
+
+}
+
+
+static void t_sxpv(int *status)
+/*
+**  - - - - - - -
+**   t _ s x p v
+**  - - - - - - -
+**
+**  Test eraSxpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraSxpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double s, pv[2][3], spv[2][3];
+
+
+   s = 2.0;
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] =  0.5;
+   pv[1][1] =  3.2;
+   pv[1][2] = -0.7;
+
+   eraSxpv(s, pv, spv);
+
+   vvd(spv[0][0],  0.6, 0.0, "eraSxpv", "p1", status);
+   vvd(spv[0][1],  2.4, 0.0, "eraSxpv", "p2", status);
+   vvd(spv[0][2], -5.0, 0.0, "eraSxpv", "p3", status);
+
+   vvd(spv[1][0],  1.0, 0.0, "eraSxpv", "v1", status);
+   vvd(spv[1][1],  6.4, 0.0, "eraSxpv", "v2", status);
+   vvd(spv[1][2], -1.4, 0.0, "eraSxpv", "v3", status);
+
+}
+
+static void t_taitt(int *status)
+/*
+**  - - - - - - - -
+**   t _ t a i t t
+**  - - - - - - - -
+**
+**  Test eraTaitt function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTaitt, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double t1, t2;
+   int j;
+
+
+   j = eraTaitt(2453750.5, 0.892482639, &t1, &t2);
+
+   vvd(t1, 2453750.5, 1e-6, "eraTaitt", "t1", status);
+   vvd(t2, 0.892855139, 1e-12, "eraTaitt", "t2", status);
+   viv(j, 0, "eraTaitt", "j", status);
+
+}
+
+static void t_taiut1(int *status)
+/*
+**  - - - - - - - - -
+**   t _ t a i u t 1
+**  - - - - - - - - -
+**
+**  Test eraTaiut1 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTaiut1, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraTaiut1(2453750.5, 0.892482639, -32.6659, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraTaiut1", "u1", status);
+   vvd(u2, 0.8921045614537037037, 1e-12, "eraTaiut1", "u2", status);
+   viv(j, 0, "eraTaiut1", "j", status);
+
+}
+
+static void t_taiutc(int *status)
+/*
+**  - - - - - - - - -
+**   t _ t a i u t c
+**  - - - - - - - - -
+**
+**  Test eraTaiutc function.
+**
+**  Returned:
+**     status    LOGICAL     TRUE = success, FALSE = fail
+**
+**  Called:  eraTaiutc, vvd, viv
+**
+**  This revision:  2013 October 3
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraTaiutc(2453750.5, 0.892482639, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraTaiutc", "u1", status);
+   vvd(u2, 0.8921006945555555556, 1e-12, "eraTaiutc", "u2", status);
+   viv(j, 0, "eraTaiutc", "j", status);
+
+}
+
+static void t_tcbtdb(int *status)
+/*
+**  - - - - - - - - -
+**   t _ t c b t d b
+**  - - - - - - - - -
+**
+**  Test eraTcbtdb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTcbtdb, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double b1, b2;
+   int j;
+
+
+   j = eraTcbtdb(2453750.5, 0.893019599, &b1, &b2);
+
+   vvd(b1, 2453750.5, 1e-6, "eraTcbtdb", "b1", status);
+   vvd(b2, 0.8928551362746343397, 1e-12, "eraTcbtdb", "b2", status);
+   viv(j, 0, "eraTcbtdb", "j", status);
+
+}
+
+static void t_tcgtt(int *status)
+/*
+**  - - - - - - - -
+**   t _ t c g t t
+**  - - - - - - - -
+**
+**  Test eraTcgtt function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTcgtt, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double t1, t2;
+   int j;
+
+
+   j = eraTcgtt(2453750.5, 0.892862531, &t1, &t2);
+
+   vvd(t1, 2453750.5, 1e-6, "eraTcgtt", "t1", status);
+   vvd(t2, 0.8928551387488816828, 1e-12, "eraTcgtt", "t2", status);
+   viv(j, 0, "eraTcgtt", "j", status);
+
+}
+
+static void t_tdbtcb(int *status)
+/*
+**  - - - - - - - - -
+**   t _ t d b t c b
+**  - - - - - - - - -
+**
+**  Test eraTdbtcb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTdbtcb, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double b1, b2;
+   int j;
+
+
+   j = eraTdbtcb(2453750.5, 0.892855137, &b1, &b2);
+
+   vvd( b1, 2453750.5, 1e-6, "eraTdbtcb", "b1", status);
+   vvd( b2, 0.8930195997253656716, 1e-12, "eraTdbtcb", "b2", status);
+   viv(j, 0, "eraTdbtcb", "j", status);
+
+}
+
+static void t_tdbtt(int *status)
+/*
+**  - - - - - - - -
+**   t _ t d b t t
+**  - - - - - - - -
+**
+**  Test eraTdbtt function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTdbtt, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double t1, t2;
+   int j;
+
+
+   j = eraTdbtt(2453750.5, 0.892855137, -0.000201, &t1, &t2);
+
+   vvd(t1, 2453750.5, 1e-6, "eraTdbtt", "t1", status);
+   vvd(t2, 0.8928551393263888889, 1e-12, "eraTdbtt", "t2", status);
+   viv(j, 0, "eraTdbtt", "j", status);
+
+}
+
+static void t_tf2a(int *status)
+/*
+**  - - - - - - -
+**   t _ t f 2 a
+**  - - - - - - -
+**
+**  Test eraTf2a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTf2a, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a;
+   int j;
+
+
+   j = eraTf2a('+', 4, 58, 20.2, &a);
+
+   vvd(a, 1.301739278189537429, 1e-12, "eraTf2a", "a", status);
+   viv(j, 0, "eraTf2a", "j", status);
+
+}
+
+static void t_tf2d(int *status)
+/*
+**  - - - - - - -
+**   t _ t f 2 d
+**  - - - - - - -
+**
+**  Test eraTf2d function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTf2d, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double d;
+   int j;
+
+
+   j = eraTf2d(' ', 23, 55, 10.9, &d);
+
+   vvd(d, 0.9966539351851851852, 1e-12, "eraTf2d", "d", status);
+   viv(j, 0, "eraTf2d", "j", status);
+
+}
+
+static void t_tr(int *status)
+/*
+**  - - - - -
+**   t _ t r
+**  - - - - -
+**
+**  Test eraTr function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTr, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], rt[3][3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   eraTr(r, rt);
+
+   vvd(rt[0][0], 2.0, 0.0, "eraTr", "11", status);
+   vvd(rt[0][1], 3.0, 0.0, "eraTr", "12", status);
+   vvd(rt[0][2], 3.0, 0.0, "eraTr", "13", status);
+
+   vvd(rt[1][0], 3.0, 0.0, "eraTr", "21", status);
+   vvd(rt[1][1], 2.0, 0.0, "eraTr", "22", status);
+   vvd(rt[1][2], 4.0, 0.0, "eraTr", "23", status);
+
+   vvd(rt[2][0], 2.0, 0.0, "eraTr", "31", status);
+   vvd(rt[2][1], 3.0, 0.0, "eraTr", "32", status);
+   vvd(rt[2][2], 5.0, 0.0, "eraTr", "33", status);
+
+}
+
+static void t_trxp(int *status)
+/*
+**  - - - - - - -
+**   t _ t r x p
+**  - - - - - - -
+**
+**  Test eraTrxp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTrxp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], p[3], trp[3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   p[0] = 0.2;
+   p[1] = 1.5;
+   p[2] = 0.1;
+
+   eraTrxp(r, p, trp);
+
+   vvd(trp[0], 5.2, 1e-12, "eraTrxp", "1", status);
+   vvd(trp[1], 4.0, 1e-12, "eraTrxp", "2", status);
+   vvd(trp[2], 5.4, 1e-12, "eraTrxp", "3", status);
+
+}
+
+static void t_trxpv(int *status)
+/*
+**  - - - - - - - -
+**   t _ t r x p v
+**  - - - - - - - -
+**
+**  Test eraTrxpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTrxpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3], pv[2][3], trpv[2][3];
+
+
+   r[0][0] = 2.0;
+   r[0][1] = 3.0;
+   r[0][2] = 2.0;
+
+   r[1][0] = 3.0;
+   r[1][1] = 2.0;
+   r[1][2] = 3.0;
+
+   r[2][0] = 3.0;
+   r[2][1] = 4.0;
+   r[2][2] = 5.0;
+
+   pv[0][0] = 0.2;
+   pv[0][1] = 1.5;
+   pv[0][2] = 0.1;
+
+   pv[1][0] = 1.5;
+   pv[1][1] = 0.2;
+   pv[1][2] = 0.1;
+
+   eraTrxpv(r, pv, trpv);
+
+   vvd(trpv[0][0], 5.2, 1e-12, "eraTrxpv", "p1", status);
+   vvd(trpv[0][1], 4.0, 1e-12, "eraTrxpv", "p1", status);
+   vvd(trpv[0][2], 5.4, 1e-12, "eraTrxpv", "p1", status);
+
+   vvd(trpv[1][0], 3.9, 1e-12, "eraTrxpv", "v1", status);
+   vvd(trpv[1][1], 5.3, 1e-12, "eraTrxpv", "v2", status);
+   vvd(trpv[1][2], 4.1, 1e-12, "eraTrxpv", "v3", status);
+
+}
+
+static void t_tttai(int *status)
+/*
+**  - - - - - - - -
+**   t _ t t t a i
+**  - - - - - - - -
+**
+**  Test eraTttai function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTttai, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a1, a2;
+   int j;
+
+
+   j = eraTttai(2453750.5, 0.892482639, &a1, &a2);
+
+   vvd(a1, 2453750.5, 1e-6, "eraTttai", "a1", status);
+   vvd(a2, 0.892110139, 1e-12, "eraTttai", "a2", status);
+   viv(j, 0, "eraTttai", "j", status);
+
+}
+
+static void t_tttcg(int *status)
+/*
+**  - - - - - - - -
+**   t _ t t t c g
+**  - - - - - - - -
+**
+**  Test eraTttcg function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTttcg, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double g1, g2;
+   int j;
+
+
+   j = eraTttcg(2453750.5, 0.892482639, &g1, &g2);
+
+   vvd( g1, 2453750.5, 1e-6, "eraTttcg", "g1", status);
+   vvd( g2, 0.8924900312508587113, 1e-12, "eraTttcg", "g2", status);
+   viv(j, 0, "eraTttcg", "j", status);
+
+}
+
+static void t_tttdb(int *status)
+/*
+**  - - - - - - - -
+**   t _ t t t d b
+**  - - - - - - - -
+**
+**  Test eraTttdb function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTttdb, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double b1, b2;
+   int j;
+
+
+   j = eraTttdb(2453750.5, 0.892855139, -0.000201, &b1, &b2);
+
+   vvd(b1, 2453750.5, 1e-6, "eraTttdb", "b1", status);
+   vvd(b2, 0.8928551366736111111, 1e-12, "eraTttdb", "b2", status);
+   viv(j, 0, "eraTttdb", "j", status);
+
+}
+
+static void t_ttut1(int *status)
+/*
+**  - - - - - - - -
+**   t _ t t u t 1
+**  - - - - - - - -
+**
+**  Test eraTtut1 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraTtut1, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraTtut1(2453750.5, 0.892855139, 64.8499, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraTtut1", "u1", status);
+   vvd(u2, 0.8921045614537037037, 1e-12, "eraTtut1", "u2", status);
+   viv(j, 0, "eraTtut1", "j", status);
+
+}
+
+static void t_ut1tai(int *status)
+/*
+**  - - - - - - - - -
+**   t _ u t 1 t a i
+**  - - - - - - - - -
+**
+**  Test eraUt1tai function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraUt1tai, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double a1, a2;
+   int j;
+
+
+   j = eraUt1tai(2453750.5, 0.892104561, -32.6659, &a1, &a2);
+
+   vvd(a1, 2453750.5, 1e-6, "eraUt1tai", "a1", status);
+   vvd(a2, 0.8924826385462962963, 1e-12, "eraUt1tai", "a2", status);
+   viv(j, 0, "eraUt1tai", "j", status);
+
+}
+
+static void t_ut1tt(int *status)
+/*
+**  - - - - - - - -
+**   t _ u t 1 t t
+**  - - - - - - - -
+**
+**  Test eraUt1tt function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraUt1tt, vvd, viv
+**
+**  This revision:  2013 October 3
+*/
+{
+   double t1, t2;
+   int j;
+
+
+   j = eraUt1tt(2453750.5, 0.892104561, 64.8499, &t1, &t2);
+
+   vvd(t1, 2453750.5, 1e-6, "eraUt1tt", "t1", status);
+   vvd(t2, 0.8928551385462962963, 1e-12, "eraUt1tt", "t2", status);
+   viv(j, 0, "eraUt1tt", "j", status);
+
+}
+
+static void t_ut1utc(int *status)
+/*
+**  - - - - - - - - -
+**   t _ u t 1 u t c
+**  - - - - - - - - -
+**
+**  Test eraUt1utc function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraUt1utc, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraUt1utc(2453750.5, 0.892104561, 0.3341, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraUt1utc", "u1", status);
+   vvd(u2, 0.8921006941018518519, 1e-12, "eraUt1utc", "u2", status);
+   viv(j, 0, "eraUt1utc", "j", status);
+
+}
+
+static void t_utctai(int *status)
+/*
+**  - - - - - - - - -
+**   t _ u t c t a i
+**  - - - - - - - - -
+**
+**  Test eraUtctai function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraUtctai, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraUtctai(2453750.5, 0.892100694, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraUtctai", "u1", status);
+   vvd(u2, 0.8924826384444444444, 1e-12, "eraUtctai", "u2", status);
+   viv(j, 0, "eraUtctai", "j", status);
+
+}
+
+static void t_utcut1(int *status)
+/*
+**  - - - - - - - - -
+**   t _ u t c u t 1
+**  - - - - - - - - -
+**
+**  Test eraUtcut1 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraUtcut1, vvd, viv
+**
+**  This revision:  2013 August 7
+*/
+{
+   double u1, u2;
+   int j;
+
+
+   j = eraUtcut1(2453750.5, 0.892100694, 0.3341, &u1, &u2);
+
+   vvd(u1, 2453750.5, 1e-6, "eraUtcut1", "u1", status);
+   vvd(u2, 0.8921045608981481481, 1e-12, "eraUtcut1", "u2", status);
+   viv(j, 0, "eraUtcut1", "j", status);
+
+}
+
+static void t_xy06(int *status)
+/*
+**  - - - - - - -
+**   t _ x y 0 6
+**  - - - - - - -
+**
+**  Test eraXy06 function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraXy06, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y;
+
+
+   eraXy06(2400000.5, 53736.0, &x, &y);
+
+   vvd(x, 0.5791308486706010975e-3, 1e-15, "eraXy06", "x", status);
+   vvd(y, 0.4020579816732958141e-4, 1e-16, "eraXy06", "y", status);
+
+}
+
+static void t_xys00a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ x y s 0 0 a
+**  - - - - - - - - -
+**
+**  Test eraXys00a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraXys00a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s;
+
+
+   eraXys00a(2400000.5, 53736.0, &x, &y, &s);
+
+   vvd(x,  0.5791308472168152904e-3, 1e-14, "eraXys00a", "x", status);
+   vvd(y,  0.4020595661591500259e-4, 1e-15, "eraXys00a", "y", status);
+   vvd(s, -0.1220040848471549623e-7, 1e-18, "eraXys00a", "s", status);
+
+}
+
+static void t_xys00b(int *status)
+/*
+**  - - - - - - - - -
+**   t _ x y s 0 0 b
+**  - - - - - - - - -
+**
+**  Test eraXys00b function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraXys00b, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s;
+
+
+   eraXys00b(2400000.5, 53736.0, &x, &y, &s);
+
+   vvd(x,  0.5791301929950208873e-3, 1e-14, "eraXys00b", "x", status);
+   vvd(y,  0.4020553681373720832e-4, 1e-15, "eraXys00b", "y", status);
+   vvd(s, -0.1220027377285083189e-7, 1e-18, "eraXys00b", "s", status);
+
+}
+
+static void t_xys06a(int *status)
+/*
+**  - - - - - - - - -
+**   t _ x y s 0 6 a
+**  - - - - - - - - -
+**
+**  Test eraXys06a function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraXys06a, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double x, y, s;
+
+
+   eraXys06a(2400000.5, 53736.0, &x, &y, &s);
+
+   vvd(x,  0.5791308482835292617e-3, 1e-14, "eraXys06a", "x", status);
+   vvd(y,  0.4020580099454020310e-4, 1e-15, "eraXys06a", "y", status);
+   vvd(s, -0.1220032294164579896e-7, 1e-18, "eraXys06a", "s", status);
+
+}
+
+static void t_zp(int *status)
+/*
+**  - - - - -
+**   t _ z p
+**  - - - - -
+**
+**  Test eraZp function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraZp, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double p[3];
+
+
+   p[0] =  0.3;
+   p[1] =  1.2;
+   p[2] = -2.5;
+
+   eraZp(p);
+
+   vvd(p[0], 0.0, 0.0, "eraZp", "1", status);
+   vvd(p[1], 0.0, 0.0, "eraZp", "2", status);
+   vvd(p[2], 0.0, 0.0, "eraZp", "3", status);
+
+}
+
+static void t_zpv(int *status)
+/*
+**  - - - - - -
+**   t _ z p v
+**  - - - - - -
+**
+**  Test eraZpv function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraZpv, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double pv[2][3];
+
+
+   pv[0][0] =  0.3;
+   pv[0][1] =  1.2;
+   pv[0][2] = -2.5;
+
+   pv[1][0] = -0.5;
+   pv[1][1] =  3.1;
+   pv[1][2] =  0.9;
+
+   eraZpv(pv);
+
+   vvd(pv[0][0], 0.0, 0.0, "eraZpv", "p1", status);
+   vvd(pv[0][1], 0.0, 0.0, "eraZpv", "p2", status);
+   vvd(pv[0][2], 0.0, 0.0, "eraZpv", "p3", status);
+
+   vvd(pv[1][0], 0.0, 0.0, "eraZpv", "v1", status);
+   vvd(pv[1][1], 0.0, 0.0, "eraZpv", "v2", status);
+   vvd(pv[1][2], 0.0, 0.0, "eraZpv", "v3", status);
+
+}
+
+static void t_zr(int *status)
+/*
+**  - - - - -
+**   t _ z r
+**  - - - - -
+**
+**  Test eraZr function.
+**
+**  Returned:
+**     status    int         FALSE = success, TRUE = fail
+**
+**  Called:  eraZr, vvd
+**
+**  This revision:  2013 August 7
+*/
+{
+   double r[3][3];
+
+
+   r[0][0] = 2.0;
+   r[1][0] = 3.0;
+   r[2][0] = 2.0;
+
+   r[0][1] = 3.0;
+   r[1][1] = 2.0;
+   r[2][1] = 3.0;
+
+   r[0][2] = 3.0;
+   r[1][2] = 4.0;
+   r[2][2] = 5.0;
+
+   eraZr(r);
+
+   vvd(r[0][0], 0.0, 0.0, "eraZr", "00", status);
+   vvd(r[1][0], 0.0, 0.0, "eraZr", "01", status);
+   vvd(r[2][0], 0.0, 0.0, "eraZr", "02", status);
+
+   vvd(r[0][1], 0.0, 0.0, "eraZr", "10", status);
+   vvd(r[1][1], 0.0, 0.0, "eraZr", "11", status);
+   vvd(r[2][1], 0.0, 0.0, "eraZr", "12", status);
+
+   vvd(r[0][2], 0.0, 0.0, "eraZr", "20", status);
+   vvd(r[1][2], 0.0, 0.0, "eraZr", "21", status);
+   vvd(r[2][2], 0.0, 0.0, "eraZr", "22", status);
+
+}
+
+int main(int argc, char *argv[])
+/*
+**  - - - - -
+**   m a i n
+**  - - - - -
+**
+**  This revision:  2016 March 12
+*/
+{
+   int status;
+
+
+/* If any command-line argument, switch to verbose reporting. */
+   if (argc > 1) {
+      verbose = 1;
+      argv[0][0] += 0;    /* to avoid compiler warnings */
+   }
+
+/* Preset the &status to FALSE = success. */
+   status = 0;
+
+/* Test all of the ERFA functions. */
+   t_a2af(&status);
+   t_a2tf(&status);
+   t_ab(&status);
+   t_af2a(&status);
+   t_anp(&status);
+   t_anpm(&status);
+   t_apcg(&status);
+   t_apcg13(&status);
+   t_apci(&status);
+   t_apci13(&status);
+   t_apco(&status);
+   t_apco13(&status);
+   t_apcs(&status);
+   t_apcs13(&status);
+   t_aper(&status);
+   t_aper13(&status);
+   t_apio(&status);
+   t_apio13(&status);
+   t_atci13(&status);
+   t_atciq(&status);
+   t_atciqn(&status);
+   t_atciqz(&status);
+   t_atco13(&status);
+   t_atic13(&status);
+   t_aticq(&status);
+   t_aticqn(&status);
+   t_atio13(&status);
+   t_atioq(&status);
+   t_atoc13(&status);
+   t_atoi13(&status);
+   t_atoiq(&status);
+   t_bi00(&status);
+   t_bp00(&status);
+   t_bp06(&status);
+   t_bpn2xy(&status);
+   t_c2i00a(&status);
+   t_c2i00b(&status);
+   t_c2i06a(&status);
+   t_c2ibpn(&status);
+   t_c2ixy(&status);
+   t_c2ixys(&status);
+   t_c2s(&status);
+   t_c2t00a(&status);
+   t_c2t00b(&status);
+   t_c2t06a(&status);
+   t_c2tcio(&status);
+   t_c2teqx(&status);
+   t_c2tpe(&status);
+   t_c2txy(&status);
+   t_cal2jd(&status);
+   t_cp(&status);
+   t_cpv(&status);
+   t_cr(&status);
+   t_d2dtf(&status);
+   t_d2tf(&status);
+   t_dat(&status);
+   t_dtdb(&status);
+   t_dtf2d(&status);
+   t_eceq06(&status);
+   t_ecm06(&status);
+   t_ee00(&status);
+   t_ee00a(&status);
+   t_ee00b(&status);
+   t_ee06a(&status);
+   t_eect00(&status);
+   t_eform(&status);
+   t_eo06a(&status);
+   t_eors(&status);
+   t_epb(&status);
+   t_epb2jd(&status);
+   t_epj(&status);
+   t_epj2jd(&status);
+   t_epv00(&status);
+   t_eqec06(&status);
+   t_eqeq94(&status);
+   t_era00(&status);
+   t_fad03(&status);
+   t_fae03(&status);
+   t_faf03(&status);
+   t_faju03(&status);
+   t_fal03(&status);
+   t_falp03(&status);
+   t_fama03(&status);
+   t_fame03(&status);
+   t_fane03(&status);
+   t_faom03(&status);
+   t_fapa03(&status);
+   t_fasa03(&status);
+   t_faur03(&status);
+   t_fave03(&status);
+   t_fk52h(&status);
+   t_fk5hip(&status);
+   t_fk5hz(&status);
+   t_fw2m(&status);
+   t_fw2xy(&status);
+   t_g2icrs(&status);
+   t_gc2gd(&status);
+   t_gc2gde(&status);
+   t_gd2gc(&status);
+   t_gd2gce(&status);
+   t_gmst00(&status);
+   t_gmst06(&status);
+   t_gmst82(&status);
+   t_gst00a(&status);
+   t_gst00b(&status);
+   t_gst06(&status);
+   t_gst06a(&status);
+   t_gst94(&status);
+   t_h2fk5(&status);
+   t_hfk5z(&status);
+   t_icrs2g(&status);
+   t_ir(&status);
+   t_jd2cal(&status);
+   t_jdcalf(&status);
+   t_ld(&status);
+   t_ldn(&status);
+   t_ldsun(&status);
+   t_lteceq(&status);
+   t_ltecm(&status);
+   t_lteqec(&status);
+   t_ltp(&status);
+   t_ltpb(&status);
+   t_ltpecl(&status);
+   t_ltpequ(&status);
+   t_num00a(&status);
+   t_num00b(&status);
+   t_num06a(&status);
+   t_numat(&status);
+   t_nut00a(&status);
+   t_nut00b(&status);
+   t_nut06a(&status);
+   t_nut80(&status);
+   t_nutm80(&status);
+   t_obl06(&status);
+   t_obl80(&status);
+   t_p06e(&status);
+   t_p2pv(&status);
+   t_p2s(&status);
+   t_pap(&status);
+   t_pas(&status);
+   t_pb06(&status);
+   t_pdp(&status);
+   t_pfw06(&status);
+   t_plan94(&status);
+   t_pmat00(&status);
+   t_pmat06(&status);
+   t_pmat76(&status);
+   t_pm(&status);
+   t_pmp(&status);
+   t_pmpx(&status);
+   t_pmsafe(&status);
+   t_pn(&status);
+   t_pn00(&status);
+   t_pn00a(&status);
+   t_pn00b(&status);
+   t_pn06a(&status);
+   t_pn06(&status);
+   t_pnm00a(&status);
+   t_pnm00b(&status);
+   t_pnm06a(&status);
+   t_pnm80(&status);
+   t_pom00(&status);
+   t_ppp(&status);
+   t_ppsp(&status);
+   t_pr00(&status);
+   t_prec76(&status);
+   t_pv2p(&status);
+   t_pv2s(&status);
+   t_pvdpv(&status);
+   t_pvm(&status);
+   t_pvmpv(&status);
+   t_pvppv(&status);
+   t_pvstar(&status);
+   t_pvtob(&status);
+   t_pvu(&status);
+   t_pvup(&status);
+   t_pvxpv(&status);
+   t_pxp(&status);
+   t_refco(&status);
+   t_rm2v(&status);
+   t_rv2m(&status);
+   t_rx(&status);
+   t_rxp(&status);
+   t_rxpv(&status);
+   t_rxr(&status);
+   t_ry(&status);
+   t_rz(&status);
+   t_s00a(&status);
+   t_s00b(&status);
+   t_s00(&status);
+   t_s06a(&status);
+   t_s06(&status);
+   t_s2c(&status);
+   t_s2p(&status);
+   t_s2pv(&status);
+   t_s2xpv(&status);
+   t_sepp(&status);
+   t_seps(&status);
+   t_sp00(&status);
+   t_starpm(&status);
+   t_starpv(&status);
+   t_sxp(&status);
+   t_sxpv(&status);
+   t_taitt(&status);
+   t_taiut1(&status);
+   t_taiutc(&status);
+   t_tcbtdb(&status);
+   t_tcgtt(&status);
+   t_tdbtcb(&status);
+   t_tdbtt(&status);
+   t_tf2a(&status);
+   t_tf2d(&status);
+   t_tr(&status);
+   t_trxp(&status);
+   t_trxpv(&status);
+   t_tttai(&status);
+   t_tttcg(&status);
+   t_tttdb(&status);
+   t_ttut1(&status);
+   t_ut1tai(&status);
+   t_ut1tt(&status) ;
+   t_ut1utc(&status);
+   t_utctai(&status);
+   t_utcut1(&status);
+   t_xy06(&status);
+   t_xys00a(&status);
+   t_xys00b(&status);
+   t_xys06a(&status);
+   t_zp(&status);
+   t_zpv(&status);
+   t_zr(&status);
+
+/* Report, set up an appropriate exit status, and finish. */
+   if (status) {
+      printf("t_erfa_c validation failed!\n");
+   } else {
+      printf("t_erfa_c validation successful\n");
+   }
+   return status;
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/taitt.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/taitt.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/taitt.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+int eraTaitt(double tai1, double tai2, double *tt1, double *tt2)
+/*
+**  - - - - - - - - -
+**   e r a T a i t t
+**  - - - - - - - - -
+**
+**  Time scale transformation:  International Atomic Time, TAI, to
+**  Terrestrial Time, TT.
+**
+**  Given:
+**     tai1,tai2  double    TAI as a 2-part Julian Date
+**
+**  Returned:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Note:
+**
+**     tai1+tai2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tai1 is the Julian
+**     Day Number and tai2 is the fraction of a day.  The returned
+**     tt1,tt2 follow suit.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* TT minus TAI (days). */
+   static const double dtat = ERFA_TTMTAI/ERFA_DAYSEC;
+
+
+/* Result, safeguarding precision. */
+   if ( tai1 > tai2 ) {
+      *tt1 = tai1;
+      *tt2 = tai2 + dtat;
+   } else {
+      *tt1 = tai1 + dtat;
+      *tt2 = tai2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/taiut1.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/taiut1.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/taiut1.c	(revision 18732)
@@ -0,0 +1,120 @@
+#include "erfa.h"
+
+int eraTaiut1(double tai1, double tai2, double dta,
+              double *ut11, double *ut12)
+/*
+**  - - - - - - - - - -
+**   e r a T a i u t 1
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  International Atomic Time, TAI, to
+**  Universal Time, UT1.
+**
+**  Given:
+**     tai1,tai2  double    TAI as a 2-part Julian Date
+**     dta        double    UT1-TAI in seconds
+**
+**  Returned:
+**     ut11,ut12  double    UT1 as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tai1+tai2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tai1 is the Julian
+**     Day Number and tai2 is the fraction of a day.  The returned
+**     UT11,UT12 follow suit.
+**
+**  2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is
+**     available from IERS tabulations.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtad;
+
+
+/* Result, safeguarding precision. */
+   dtad = dta / ERFA_DAYSEC;
+   if ( tai1 > tai2 ) {
+      *ut11 = tai1;
+      *ut12 = tai2 + dtad;
+   } else {
+      *ut11 = tai1 + dtad;
+      *ut12 = tai2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/taiutc.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/taiutc.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/taiutc.c	(revision 18732)
@@ -0,0 +1,168 @@
+#include "erfa.h"
+
+int eraTaiutc(double tai1, double tai2, double *utc1, double *utc2)
+/*
+**  - - - - - - - - - -
+**   e r a T a i u t c
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  International Atomic Time, TAI, to
+**  Coordinated Universal Time, UTC.
+**
+**  Given:
+**     tai1,tai2  double   TAI as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     utc1,utc2  double   UTC as a 2-part quasi Julian Date (Notes 1-3)
+**
+**  Returned (function value):
+**                int      status: +1 = dubious year (Note 4)
+**                                  0 = OK
+**                                 -1 = unacceptable date
+**
+**  Notes:
+**
+**  1) tai1+tai2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tai1 is the Julian
+**     Day Number and tai2 is the fraction of a day.  The returned utc1
+**     and utc2 form an analogous pair, except that a special convention
+**     is used, to deal with the problem of leap seconds - see the next
+**     note.
+**
+**  2) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The convention in the present
+**     function is that the JD day represents UTC days whether the
+**     length is 86399, 86400 or 86401 SI seconds.  In the 1960-1972 era
+**     there were smaller jumps (in either direction) each time the
+**     linear UTC(TAI) expression was changed, and these "mini-leaps"
+**     are also included in the ERFA convention.
+**
+**  3) The function eraD2dtf can be used to transform the UTC quasi-JD
+**     into calendar date and clock time, including UTC leap second
+**     handling.
+**
+**  4) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  Called:
+**     eraUtctai    UTC to TAI
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int big1;
+   int i, j;
+   double a1, a2, u1, u2, g1, g2;
+
+
+/* Put the two parts of the TAI into big-first order. */
+   big1 = ( tai1 >= tai2 );
+   if ( big1 ) {
+      a1 = tai1;
+      a2 = tai2;
+   } else {
+      a1 = tai2;
+      a2 = tai1;
+   }
+
+/* Initial guess for UTC. */
+   u1 = a1;
+   u2 = a2;
+
+/* Iterate (though in most cases just once is enough). */
+   for ( i = 0; i < 3; i++ ) {
+
+   /* Guessed UTC to TAI. */
+      j = eraUtctai(u1, u2, &g1, &g2);
+      if ( j < 0 ) return j;
+
+   /* Adjust guessed UTC. */
+      u2 += a1 - g1;
+      u2 += a2 - g2;
+   }
+
+/* Return the UTC result, preserving the TAI order. */
+   if ( big1 ) {
+      *utc1 = u1;
+      *utc2 = u2;
+   } else {
+      *utc1 = u2;
+      *utc2 = u1;
+   }
+
+/* Status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tcbtdb.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tcbtdb.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tcbtdb.c	(revision 18732)
@@ -0,0 +1,141 @@
+#include "erfa.h"
+
+int eraTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2)
+/*
+**  - - - - - - - - - -
+**   e r a T c b t d b
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Barycentric Coordinate Time, TCB, to
+**  Barycentric Dynamical Time, TDB.
+**
+**  Given:
+**     tcb1,tcb2  double    TCB as a 2-part Julian Date
+**
+**  Returned:
+**     tdb1,tdb2  double    TDB as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tcb1+tcb2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tcb1 is the Julian
+**     Day Number and tcb2 is the fraction of a day.  The returned
+**     tdb1,tdb2 follow suit.
+**
+**  2) The 2006 IAU General Assembly introduced a conventional linear
+**     transformation between TDB and TCB.  This transformation
+**     compensates for the drift between TCB and terrestrial time TT,
+**     and keeps TDB approximately centered on TT.  Because the
+**     relationship between TT and TCB depends on the adopted solar
+**     system ephemeris, the degree of alignment between TDB and TT over
+**     long intervals will vary according to which ephemeris is used.
+**     Former definitions of TDB attempted to avoid this problem by
+**     stipulating that TDB and TT should differ only by periodic
+**     effects.  This is a good description of the nature of the
+**     relationship but eluded precise mathematical formulation.  The
+**     conventional linear relationship adopted in 2006 sidestepped
+**     these difficulties whilst delivering a TDB that in practice was
+**     consistent with values before that date.
+**
+**  3) TDB is essentially the same as Teph, the time argument for the
+**     JPL solar system ephemerides.
+**
+**  Reference:
+**
+**     IAU 2006 Resolution B3
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* 1977 Jan 1 00:00:32.184 TT, as two-part JD */
+   static const double t77td = ERFA_DJM0 + ERFA_DJM77;
+   static const double t77tf = ERFA_TTMTAI/ERFA_DAYSEC;
+
+/* TDB (days) at TAI 1977 Jan 1.0 */
+   static const double tdb0 = ERFA_TDB0/ERFA_DAYSEC;
+
+   double d;
+
+
+/* Result, safeguarding precision. */
+   if ( tcb1 > tcb2 ) {
+      d = tcb1 - t77td;
+      *tdb1 = tcb1;
+      *tdb2 = tcb2 + tdb0 - ( d + ( tcb2 - t77tf ) ) * ERFA_ELB;
+   } else {
+      d = tcb2 - t77td;
+      *tdb1 = tcb1 + tdb0 - ( d + ( tcb1 - t77tf ) ) * ERFA_ELB;
+      *tdb2 = tcb2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tcgtt.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tcgtt.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tcgtt.c	(revision 18732)
@@ -0,0 +1,118 @@
+#include "erfa.h"
+
+int eraTcgtt(double tcg1, double tcg2, double *tt1, double *tt2)
+/*
+**  - - - - - - - - -
+**   e r a T c g t t
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Geocentric Coordinate Time, TCG, to
+**  Terrestrial Time, TT.
+**
+**  Given:
+**     tcg1,tcg2  double    TCG as a 2-part Julian Date
+**
+**  Returned:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Note:
+**
+**     tcg1+tcg2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tcg1 is the Julian
+**     Day Number and tcg22 is the fraction of a day.  The returned
+**     tt1,tt2 follow suit.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),.
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     IAU 2000 Resolution B1.9
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* 1977 Jan 1 00:00:32.184 TT, as MJD */
+   static const double t77t = ERFA_DJM77 + ERFA_TTMTAI/ERFA_DAYSEC;
+
+
+/* Result, safeguarding precision. */
+   if ( tcg1 > tcg2 ) {
+      *tt1 = tcg1;
+      *tt2 = tcg2 - ( ( tcg1 - ERFA_DJM0 ) + ( tcg2 - t77t ) ) * ERFA_ELG;
+   } else {
+      *tt1 = tcg1 - ( ( tcg2 - ERFA_DJM0 ) + ( tcg1 - t77t ) ) * ERFA_ELG;
+      *tt2 = tcg2;
+   }
+
+/* OK status. */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tdbtcb.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tdbtcb.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tdbtcb.c	(revision 18732)
@@ -0,0 +1,146 @@
+#include "erfa.h"
+
+int eraTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2)
+/*
+**  - - - - - - - - - -
+**   e r a T d b t c b
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Barycentric Dynamical Time, TDB, to
+**  Barycentric Coordinate Time, TCB.
+**
+**  Given:
+**     tdb1,tdb2  double    TDB as a 2-part Julian Date
+**
+**  Returned:
+**     tcb1,tcb2  double    TCB as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tdb1+tdb2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tdb1 is the Julian
+**     Day Number and tdb2 is the fraction of a day.  The returned
+**     tcb1,tcb2 follow suit.
+**
+**  2) The 2006 IAU General Assembly introduced a conventional linear
+**     transformation between TDB and TCB.  This transformation
+**     compensates for the drift between TCB and terrestrial time TT,
+**     and keeps TDB approximately centered on TT.  Because the
+**     relationship between TT and TCB depends on the adopted solar
+**     system ephemeris, the degree of alignment between TDB and TT over
+**     long intervals will vary according to which ephemeris is used.
+**     Former definitions of TDB attempted to avoid this problem by
+**     stipulating that TDB and TT should differ only by periodic
+**     effects.  This is a good description of the nature of the
+**     relationship but eluded precise mathematical formulation.  The
+**     conventional linear relationship adopted in 2006 sidestepped
+**     these difficulties whilst delivering a TDB that in practice was
+**     consistent with values before that date.
+**
+**  3) TDB is essentially the same as Teph, the time argument for the
+**     JPL solar system ephemerides.
+**
+**  Reference:
+**
+**     IAU 2006 Resolution B3
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* 1977 Jan 1 00:00:32.184 TT, as two-part JD */
+   static const double t77td = ERFA_DJM0 + ERFA_DJM77;
+   static const double t77tf = ERFA_TTMTAI/ERFA_DAYSEC;
+
+/* TDB (days) at TAI 1977 Jan 1.0 */
+   static const double tdb0 = ERFA_TDB0/ERFA_DAYSEC;
+
+/* TDB to TCB rate */
+   static const double elbb = ERFA_ELB/(1.0-ERFA_ELB);
+
+   double d, f;
+
+
+/* Result, preserving date format but safeguarding precision. */
+   if ( tdb1 > tdb2 ) {
+      d = t77td - tdb1;
+      f  = tdb2 - tdb0;
+      *tcb1 = tdb1;
+      *tcb2 = f - ( d - ( f - t77tf ) ) * elbb;
+   } else {
+      d = t77td - tdb2;
+      f  = tdb1 - tdb0;
+      *tcb1 = f + ( d - ( f - t77tf ) ) * elbb;
+      *tcb2 = tdb2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tdbtt.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tdbtt.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tdbtt.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+int eraTdbtt(double tdb1, double tdb2, double dtr,
+             double *tt1, double *tt2 )
+/*
+**  - - - - - - - - -
+**   e r a T d b t t
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Barycentric Dynamical Time, TDB, to
+**  Terrestrial Time, TT.
+**
+**  Given:
+**     tdb1,tdb2  double    TDB as a 2-part Julian Date
+**     dtr        double    TDB-TT in seconds
+**
+**  Returned:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tdb1+tdb2 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where tdb1 is the Julian
+**     Day Number and tdb2 is the fraction of a day.  The returned
+**     tt1,tt2 follow suit.
+**
+**  2) The argument dtr represents the quasi-periodic component of the
+**     GR transformation between TT and TCB.  It is dependent upon the
+**     adopted solar-system ephemeris, and can be obtained by numerical
+**     integration, by interrogating a precomputed time ephemeris or by
+**     evaluating a model such as that implemented in the ERFA function
+**     eraDtdb.   The quantity is dominated by an annual term of 1.7 ms
+**     amplitude.
+**
+**  3) TDB is essentially the same as Teph, the time argument for the
+**     JPL solar system ephemerides.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     IAU 2006 Resolution 3
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtrd;
+
+
+/* Result, safeguarding precision. */
+   dtrd = dtr / ERFA_DAYSEC;
+   if ( tdb1 > tdb2 ) {
+      *tt1 = tdb1;
+      *tt2 = tdb2 - dtrd;
+   } else {
+      *tt1 = tdb1 - dtrd;
+      *tt2 = tdb2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tf2a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tf2a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tf2a.c	(revision 18732)
@@ -0,0 +1,116 @@
+#include "erfa.h"
+#include <stdlib.h>
+
+int eraTf2a(char s, int ihour, int imin, double sec, double *rad)
+/*
+**  - - - - - - - -
+**   e r a T f 2 a
+**  - - - - - - - -
+**
+**  Convert hours, minutes, seconds to radians.
+**
+**  Given:
+**     s         char    sign:  '-' = negative, otherwise positive
+**     ihour     int     hours
+**     imin      int     minutes
+**     sec       double  seconds
+**
+**  Returned:
+**     rad       double  angle in radians
+**
+**  Returned (function value):
+**               int     status:  0 = OK
+**                                1 = ihour outside range 0-23
+**                                2 = imin outside range 0-59
+**                                3 = sec outside range 0-59.999...
+**
+**  Notes:
+**
+**  1)  The result is computed even if any of the range checks fail.
+**
+**  2)  Negative ihour, imin and/or sec produce a warning status, but
+**      the absolute value is used in the conversion.
+**
+**  3)  If there are multiple errors, the status value reflects only the
+**      first, the smallest taking precedence.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Compute the interval. */
+   *rad  = ( s == '-' ? -1.0 : 1.0 ) *
+           ( 60.0 * ( 60.0 * ( (double) abs(ihour) ) +
+                             ( (double) abs(imin) ) ) +
+                                        fabs(sec) ) * ERFA_DS2R;
+
+/* Validate arguments and return status. */
+   if ( ihour < 0 || ihour > 23 ) return 1;
+   if ( imin < 0 || imin > 59 ) return 2;
+   if ( sec < 0.0 || sec >= 60.0 ) return 3;
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tf2d.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tf2d.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tf2d.c	(revision 18732)
@@ -0,0 +1,116 @@
+#include "erfa.h"
+#include <stdlib.h>
+
+int eraTf2d(char s, int ihour, int imin, double sec, double *days)
+/*
+**  - - - - - - - -
+**   e r a T f 2 d
+**  - - - - - - - -
+**
+**  Convert hours, minutes, seconds to days.
+**
+**  Given:
+**     s         char    sign:  '-' = negative, otherwise positive
+**     ihour     int     hours
+**     imin      int     minutes
+**     sec       double  seconds
+**
+**  Returned:
+**     days      double  interval in days
+**
+**  Returned (function value):
+**               int     status:  0 = OK
+**                                1 = ihour outside range 0-23
+**                                2 = imin outside range 0-59
+**                                3 = sec outside range 0-59.999...
+**
+**  Notes:
+**
+**  1)  The result is computed even if any of the range checks fail.
+**
+**  2)  Negative ihour, imin and/or sec produce a warning status, but
+**      the absolute value is used in the conversion.
+**
+**  3)  If there are multiple errors, the status value reflects only the
+**      first, the smallest taking precedence.
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Compute the interval. */
+   *days  = ( s == '-' ? -1.0 : 1.0 ) *
+            ( 60.0 * ( 60.0 * ( (double) abs(ihour) ) +
+                              ( (double) abs(imin) ) ) +
+                                         fabs(sec) ) / ERFA_DAYSEC;
+
+/* Validate arguments and return status. */
+   if ( ihour < 0 || ihour > 23 ) return 1;
+   if ( imin < 0 || imin > 59 ) return 2;
+   if ( sec < 0.0 || sec >= 60.0 ) return 3;
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tr.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tr.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tr.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+void eraTr(double r[3][3], double rt[3][3])
+/*
+**  - - - - - -
+**   e r a T r
+**  - - - - - -
+**
+**  Transpose an r-matrix.
+**
+**  Given:
+**     r        double[3][3]    r-matrix
+**
+**  Returned:
+**     rt       double[3][3]    transpose
+**
+**  Note:
+**     It is permissible for r and rt to be the same array.
+**
+**  Called:
+**     eraCr        copy r-matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double wm[3][3];
+   int i, j;
+
+
+   for (i = 0; i < 3; i++) {
+      for (j = 0; j < 3; j++) {
+         wm[i][j] = r[j][i];
+      }
+   }
+   eraCr(wm, rt);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/trxp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/trxp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/trxp.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+void eraTrxp(double r[3][3], double p[3], double trp[3])
+/*
+**  - - - - - - - -
+**   e r a T r x p
+**  - - - - - - - -
+**
+**  Multiply a p-vector by the transpose of an r-matrix.
+**
+**  Given:
+**     r        double[3][3]   r-matrix
+**     p        double[3]      p-vector
+**
+**  Returned:
+**     trp      double[3]      r * p
+**
+**  Note:
+**     It is permissible for p and trp to be the same array.
+**
+**  Called:
+**     eraTr        transpose r-matrix
+**     eraRxp       product of r-matrix and p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double tr[3][3];
+
+
+/* Transpose of matrix r. */
+   eraTr(r, tr);
+
+/* Matrix tr * vector p -> vector trp. */
+   eraRxp(tr, p, trp);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/trxpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/trxpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/trxpv.c	(revision 18732)
@@ -0,0 +1,102 @@
+#include "erfa.h"
+
+void eraTrxpv(double r[3][3], double pv[2][3], double trpv[2][3])
+/*
+**  - - - - - - - - -
+**   e r a T r x p v
+**  - - - - - - - - -
+**
+**  Multiply a pv-vector by the transpose of an r-matrix.
+**
+**  Given:
+**     r        double[3][3]    r-matrix
+**     pv       double[2][3]    pv-vector
+**
+**  Returned:
+**     trpv     double[2][3]    r * pv
+**
+**  Note:
+**     It is permissible for pv and trpv to be the same array.
+**
+**  Called:
+**     eraTr        transpose r-matrix
+**     eraRxpv      product of r-matrix and pv-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double tr[3][3];
+
+
+/* Transpose of matrix r. */
+   eraTr(r, tr);
+
+/* Matrix tr * vector pv -> vector trpv. */
+   eraRxpv(tr, pv, trpv);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tttai.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tttai.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tttai.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+int eraTttai(double tt1, double tt2, double *tai1, double *tai2)
+/*
+**  - - - - - - - - -
+**   e r a T t t a i
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Terrestrial Time, TT, to International
+**  Atomic Time, TAI.
+**
+**  Given:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned:
+**     tai1,tai2  double    TAI as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Note:
+**
+**     tt1+tt2 is Julian Date, apportioned in any convenient way between
+**     the two arguments, for example where tt1 is the Julian Day Number
+**     and tt2 is the fraction of a day.  The returned tai1,tai2 follow
+**     suit.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* TT minus TAI (days). */
+   static const double dtat = ERFA_TTMTAI/ERFA_DAYSEC;
+
+
+/* Result, safeguarding precision. */
+   if ( tt1 > tt2 ) {
+      *tai1 = tt1;
+      *tai2 = tt2 - dtat;
+   } else {
+      *tai1 = tt1 - dtat;
+      *tai2 = tt2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tttcg.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tttcg.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tttcg.c	(revision 18732)
@@ -0,0 +1,121 @@
+#include "erfa.h"
+
+int eraTttcg(double tt1, double tt2, double *tcg1, double *tcg2)
+/*
+**  - - - - - - - - -
+**   e r a T t t c g
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Terrestrial Time, TT, to Geocentric
+**  Coordinate Time, TCG.
+**
+**  Given:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned:
+**     tcg1,tcg2  double    TCG as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Note:
+**
+**     tt1+tt2 is Julian Date, apportioned in any convenient way between
+**     the two arguments, for example where tt1 is the Julian Day Number
+**     and tt2 is the fraction of a day.  The returned tcg1,tcg2 follow
+**     suit.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     IAU 2000 Resolution B1.9
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* 1977 Jan 1 00:00:32.184 TT, as MJD */
+   static const double t77t = ERFA_DJM77 + ERFA_TTMTAI/ERFA_DAYSEC;
+
+/* TT to TCG rate */
+   static const double elgg = ERFA_ELG/(1.0-ERFA_ELG);
+
+
+/* Result, safeguarding precision. */
+   if ( tt1 > tt2 ) {
+      *tcg1 = tt1;
+      *tcg2 = tt2 + ( ( tt1 - ERFA_DJM0 ) + ( tt2 - t77t ) ) * elgg;
+   } else {
+      *tcg1 = tt1 + ( ( tt2 - ERFA_DJM0 ) + ( tt1 - t77t ) ) * elgg;
+      *tcg2 = tt2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/tttdb.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/tttdb.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/tttdb.c	(revision 18732)
@@ -0,0 +1,130 @@
+#include "erfa.h"
+
+int eraTttdb(double tt1, double tt2, double dtr,
+             double *tdb1, double *tdb2)
+/*
+**  - - - - - - - - -
+**   e r a T t t d b
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Terrestrial Time, TT, to Barycentric
+**  Dynamical Time, TDB.
+**
+**  Given:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**     dtr        double    TDB-TT in seconds
+**
+**  Returned:
+**     tdb1,tdb2  double    TDB as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tt1+tt2 is Julian Date, apportioned in any convenient way between
+**     the two arguments, for example where tt1 is the Julian Day Number
+**     and tt2 is the fraction of a day.  The returned tdb1,tdb2 follow
+**     suit.
+**
+**  2) The argument dtr represents the quasi-periodic component of the
+**     GR transformation between TT and TCB.  It is dependent upon the
+**     adopted solar-system ephemeris, and can be obtained by numerical
+**     integration, by interrogating a precomputed time ephemeris or by
+**     evaluating a model such as that implemented in the ERFA function
+**     eraDtdb.   The quantity is dominated by an annual term of 1.7 ms
+**     amplitude.
+**
+**  3) TDB is essentially the same as Teph, the time argument for the JPL
+**     solar system ephemerides.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     IAU 2006 Resolution 3
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtrd;
+
+
+/* Result, safeguarding precision. */
+   dtrd = dtr / ERFA_DAYSEC;
+   if ( tt1 > tt2 ) {
+      *tdb1 = tt1;
+      *tdb2 = tt2 + dtrd;
+   } else {
+      *tdb1 = tt1 + dtrd;
+      *tdb2 = tt2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ttut1.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ttut1.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ttut1.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+int eraTtut1(double tt1, double tt2, double dt,
+             double *ut11, double *ut12)
+/*
+**  - - - - - - - - -
+**   e r a T t u t 1
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Terrestrial Time, TT, to Universal Time,
+**  UT1.
+**
+**  Given:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**     dt         double    TT-UT1 in seconds
+**
+**  Returned:
+**     ut11,ut12  double    UT1 as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) tt1+tt2 is Julian Date, apportioned in any convenient way between
+**     the two arguments, for example where tt1 is the Julian Day Number
+**     and tt2 is the fraction of a day.  The returned ut11,ut12 follow
+**     suit.
+**
+**  2) The argument dt is classical Delta T.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtd;
+
+
+/* Result, safeguarding precision. */
+   dtd = dt / ERFA_DAYSEC;
+   if ( tt1 > tt2 ) {
+      *ut11 = tt1;
+      *ut12 = tt2 - dtd;
+   } else {
+      *ut11 = tt1 - dtd;
+      *ut12 = tt2;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ut1tai.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ut1tai.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ut1tai.c	(revision 18732)
@@ -0,0 +1,120 @@
+#include "erfa.h"
+
+int eraUt1tai(double ut11, double ut12, double dta,
+              double *tai1, double *tai2)
+/*
+**  - - - - - - - - - -
+**   e r a U t 1 t a i
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Universal Time, UT1, to International
+**  Atomic Time, TAI.
+**
+**  Given:
+**     ut11,ut12  double    UT1 as a 2-part Julian Date
+**     dta        double    UT1-TAI in seconds
+**
+**  Returned:
+**     tai1,tai2  double    TAI as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) ut11+ut12 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where ut11 is the Julian
+**     Day Number and ut12 is the fraction of a day.  The returned
+**     tai1,tai2 follow suit.
+**
+**  2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is
+**     available from IERS tabulations.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtad;
+
+
+/* Result, safeguarding precision. */
+   dtad = dta / ERFA_DAYSEC;
+   if ( ut11 > ut12 ) {
+      *tai1 = ut11;
+      *tai2 = ut12 - dtad;
+   } else {
+      *tai1 = ut11 - dtad;
+      *tai2 = ut12;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ut1tt.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ut1tt.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ut1tt.c	(revision 18732)
@@ -0,0 +1,119 @@
+#include "erfa.h"
+
+int eraUt1tt(double ut11, double ut12, double dt,
+             double *tt1, double *tt2)
+/*
+**  - - - - - - - - -
+**   e r a U t 1 t t
+**  - - - - - - - - -
+**
+**  Time scale transformation:  Universal Time, UT1, to Terrestrial
+**  Time, TT.
+**
+**  Given:
+**     ut11,ut12  double    UT1 as a 2-part Julian Date
+**     dt         double    TT-UT1 in seconds
+**
+**  Returned:
+**     tt1,tt2    double    TT as a 2-part Julian Date
+**
+**  Returned (function value):
+**                int       status:  0 = OK
+**
+**  Notes:
+**
+**  1) ut11+ut12 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where ut11 is the Julian
+**     Day Number and ut12 is the fraction of a day.  The returned
+**     tt1,tt2 follow suit.
+**
+**  2) The argument dt is classical Delta T.
+**
+**  Reference:
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double dtd;
+
+
+/* Result, safeguarding precision. */
+   dtd = dt / ERFA_DAYSEC;
+   if ( ut11 > ut12 ) {
+      *tt1 = ut11;
+      *tt2 = ut12 + dtd;
+   } else {
+      *tt1 = ut11 + dtd;
+      *tt2 = ut12;
+   }
+
+/* Status (always OK). */
+   return 0;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/ut1utc.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/ut1utc.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/ut1utc.c	(revision 18732)
@@ -0,0 +1,202 @@
+#include "erfa.h"
+
+int eraUt1utc(double ut11, double ut12, double dut1,
+              double *utc1, double *utc2)
+/*
+**  - - - - - - - - - -
+**   e r a U t 1 u t c
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Universal Time, UT1, to Coordinated
+**  Universal Time, UTC.
+**
+**  Given:
+**     ut11,ut12  double   UT1 as a 2-part Julian Date (Note 1)
+**     dut1       double   Delta UT1: UT1-UTC in seconds (Note 2)
+**
+**  Returned:
+**     utc1,utc2  double   UTC as a 2-part quasi Julian Date (Notes 3,4)
+**
+**  Returned (function value):
+**                int      status: +1 = dubious year (Note 5)
+**                                  0 = OK
+**                                 -1 = unacceptable date
+**
+**  Notes:
+**
+**  1) ut11+ut12 is Julian Date, apportioned in any convenient way
+**     between the two arguments, for example where ut11 is the Julian
+**     Day Number and ut12 is the fraction of a day.  The returned utc1
+**     and utc2 form an analogous pair, except that a special convention
+**     is used, to deal with the problem of leap seconds - see Note 3.
+**
+**  2) Delta UT1 can be obtained from tabulations provided by the
+**     International Earth Rotation and Reference Systems Service.  The
+**     value changes abruptly by 1s at a leap second;  however, close to
+**     a leap second the algorithm used here is tolerant of the "wrong"
+**     choice of value being made.
+**
+**  3) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The convention in the present
+**     function is that the returned quasi JD day UTC1+UTC2 represents
+**     UTC days whether the length is 86399, 86400 or 86401 SI seconds.
+**
+**  4) The function eraD2dtf can be used to transform the UTC quasi-JD
+**     into calendar date and clock time, including UTC leap second
+**     handling.
+**
+**  5) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  Called:
+**     eraJd2cal    JD to Gregorian calendar
+**     eraDat       delta(AT) = TAI-UTC
+**     eraCal2jd    Gregorian calendar to JD
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int big1;
+   int i, iy, im, id, js;
+   double duts, u1, u2, d1, dats1, d2, fd, dats2, ddats, us1, us2, du;
+
+
+/* UT1-UTC in seconds. */
+   duts = dut1;
+
+/* Put the two parts of the UT1 into big-first order. */
+   big1 = ( ut11 >= ut12 );
+   if ( big1 ) {
+      u1 = ut11;
+      u2 = ut12;
+   } else {
+      u1 = ut12;
+      u2 = ut11;
+   }
+
+/* See if the UT1 can possibly be in a leap-second day. */
+   d1 = u1;
+   dats1 = 0;
+   for ( i = -1; i <= 3; i++ ) {
+      d2 = u2 + (double) i;
+      if ( eraJd2cal(d1, d2, &iy, &im, &id, &fd) ) return -1;
+      js = eraDat(iy, im, id, 0.0, &dats2);
+      if ( js < 0 ) return -1;
+      if ( i == - 1 ) dats1 = dats2;
+      ddats = dats2 - dats1;
+      if ( fabs(ddats) >= 0.5 ) {
+
+      /* Yes, leap second nearby: ensure UT1-UTC is "before" value. */
+         if ( ddats * duts >= 0 ) duts -= ddats;
+
+      /* UT1 for the start of the UTC day that ends in a leap. */
+         if ( eraCal2jd(iy, im, id, &d1, &d2) ) return -1;
+         us1 = d1;
+         us2 = d2 - 1.0 + duts/ERFA_DAYSEC;
+
+      /* Is the UT1 after this point? */
+         du = u1 - us1;
+         du += u2 - us2;
+         if ( du > 0 ) {
+
+         /* Yes:  fraction of the current UTC day that has elapsed. */
+            fd = du * ERFA_DAYSEC / ( ERFA_DAYSEC + ddats );
+
+         /* Ramp UT1-UTC to bring about ERFA's JD(UTC) convention. */
+            duts += ddats * ( fd <= 1.0 ? fd : 1.0 );
+         }
+
+      /* Done. */
+         break;
+      }
+      dats1 = dats2;
+   }
+
+/* Subtract the (possibly adjusted) UT1-UTC from UT1 to give UTC. */
+   u2 -= duts / ERFA_DAYSEC;
+
+/* Result, safeguarding precision. */
+   if ( big1 ) {
+      *utc1 = u1;
+      *utc2 = u2;
+   } else {
+      *utc1 = u2;
+      *utc2 = u1;
+   }
+
+/* Status. */
+   return js;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/utctai.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/utctai.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/utctai.c	(revision 18732)
@@ -0,0 +1,186 @@
+#include "erfa.h"
+
+int eraUtctai(double utc1, double utc2, double *tai1, double *tai2)
+/*
+**  - - - - - - - - - -
+**   e r a U t c t a i
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Coordinated Universal Time, UTC, to
+**  International Atomic Time, TAI.
+**
+**  Given:
+**     utc1,utc2  double   UTC as a 2-part quasi Julian Date (Notes 1-4)
+**
+**  Returned:
+**     tai1,tai2  double   TAI as a 2-part Julian Date (Note 5)
+**
+**  Returned (function value):
+**                int      status: +1 = dubious year (Note 3)
+**                                  0 = OK
+**                                 -1 = unacceptable date
+**
+**  Notes:
+**
+**  1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**     convenient way between the two arguments, for example where utc1
+**     is the Julian Day Number and utc2 is the fraction of a day.
+**
+**  2) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The convention in the present
+**     function is that the JD day represents UTC days whether the
+**     length is 86399, 86400 or 86401 SI seconds.  In the 1960-1972 era
+**     there were smaller jumps (in either direction) each time the
+**     linear UTC(TAI) expression was changed, and these "mini-leaps"
+**     are also included in the ERFA convention.
+**
+**  3) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  4) The function eraDtf2d converts from calendar date and time of day
+**     into 2-part Julian Date, and in the case of UTC implements the
+**     leap-second-ambiguity convention described above.
+**
+**  5) The returned TAI1,TAI2 are such that their sum is the TAI Julian
+**     Date.
+**
+**  Called:
+**     eraJd2cal    JD to Gregorian calendar
+**     eraDat       delta(AT) = TAI-UTC
+**     eraCal2jd    Gregorian calendar to JD
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int big1;
+   int iy, im, id, j, iyt, imt, idt;
+   double u1, u2, fd, dat0, dat12, w, dat24, dlod, dleap, z1, z2, a2;
+
+
+/* Put the two parts of the UTC into big-first order. */
+   big1 = ( utc1 >= utc2 );
+   if ( big1 ) {
+      u1 = utc1;
+      u2 = utc2;
+   } else {
+      u1 = utc2;
+      u2 = utc1;
+   }
+
+/* Get TAI-UTC at 0h today. */
+   j = eraJd2cal(u1, u2, &iy, &im, &id, &fd);
+   if ( j ) return j;
+   j = eraDat(iy, im, id, 0.0, &dat0);
+   if ( j < 0 ) return j;
+
+/* Get TAI-UTC at 12h today (to detect drift). */
+   j = eraDat(iy, im, id, 0.5, &dat12);
+   if ( j < 0 ) return j;
+
+/* Get TAI-UTC at 0h tomorrow (to detect jumps). */
+   j = eraJd2cal(u1+1.5, u2-fd, &iyt, &imt, &idt, &w);
+   if ( j ) return j;
+   j = eraDat(iyt, imt, idt, 0.0, &dat24);
+   if ( j < 0 ) return j;
+
+/* Separate TAI-UTC change into per-day (DLOD) and any jump (DLEAP). */
+   dlod = 2.0 * (dat12 - dat0);
+   dleap = dat24 - (dat0 + dlod);
+
+/* Remove any scaling applied to spread leap into preceding day. */
+   fd *= (ERFA_DAYSEC+dleap)/ERFA_DAYSEC;
+
+/* Scale from (pre-1972) UTC seconds to SI seconds. */
+   fd *= (ERFA_DAYSEC+dlod)/ERFA_DAYSEC;
+
+/* Today's calendar date to 2-part JD. */
+   if ( eraCal2jd(iy, im, id, &z1, &z2) ) return -1;
+
+/* Assemble the TAI result, preserving the UTC split and order. */
+   a2 = z1 - u1;
+   a2 += z2;
+   a2 += fd + dat0/ERFA_DAYSEC;
+   if ( big1 ) {
+      *tai1 = u1;
+      *tai2 = a2;
+   } else {
+      *tai1 = a2;
+      *tai2 = u1;
+   }
+
+/* Status. */
+   return j;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/utcut1.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/utcut1.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/utcut1.c	(revision 18732)
@@ -0,0 +1,156 @@
+#include "erfa.h"
+
+int eraUtcut1(double utc1, double utc2, double dut1,
+              double *ut11, double *ut12)
+/*
+**  - - - - - - - - - -
+**   e r a U t c u t 1
+**  - - - - - - - - - -
+**
+**  Time scale transformation:  Coordinated Universal Time, UTC, to
+**  Universal Time, UT1.
+**
+**  Given:
+**     utc1,utc2  double   UTC as a 2-part quasi Julian Date (Notes 1-4)
+**     dut1       double   Delta UT1 = UT1-UTC in seconds (Note 5)
+**
+**  Returned:
+**     ut11,ut12  double   UT1 as a 2-part Julian Date (Note 6)
+**
+**  Returned (function value):
+**                int      status: +1 = dubious year (Note 3)
+**                                  0 = OK
+**                                 -1 = unacceptable date
+**
+**  Notes:
+**
+**  1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
+**     convenient way between the two arguments, for example where utc1
+**     is the Julian Day Number and utc2 is the fraction of a day.
+**
+**  2) JD cannot unambiguously represent UTC during a leap second unless
+**     special measures are taken.  The convention in the present
+**     function is that the JD day represents UTC days whether the
+**     length is 86399, 86400 or 86401 SI seconds.
+**
+**  3) The warning status "dubious year" flags UTCs that predate the
+**     introduction of the time scale or that are too far in the future
+**     to be trusted.  See eraDat for further details.
+**
+**  4) The function eraDtf2d converts from calendar date and time of
+**     day into 2-part Julian Date, and in the case of UTC implements
+**     the leap-second-ambiguity convention described above.
+**
+**  5) Delta UT1 can be obtained from tabulations provided by the
+**     International Earth Rotation and Reference Systems Service.
+**     It is the caller's responsibility to supply a dut1 argument
+**     containing the UT1-UTC value that matches the given UTC.
+**
+**  6) The returned ut11,ut12 are such that their sum is the UT1 Julian
+**     Date.
+**
+**  References:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**     Explanatory Supplement to the Astronomical Almanac,
+**     P. Kenneth Seidelmann (ed), University Science Books (1992)
+**
+**  Called:
+**     eraJd2cal    JD to Gregorian calendar
+**     eraDat       delta(AT) = TAI-UTC
+**     eraUtctai    UTC to TAI
+**     eraTaiut1    TAI to UT1
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   int iy, im, id, js, jw;
+   double w, dat, dta, tai1, tai2;
+
+
+/* Look up TAI-UTC. */
+   if ( eraJd2cal(utc1, utc2, &iy, &im, &id, &w) ) return -1;
+   js = eraDat ( iy, im, id, 0.0, &dat);
+   if ( js < 0 ) return -1;
+
+/* Form UT1-TAI. */
+   dta = dut1 - dat;
+
+/* UTC to TAI to UT1. */
+   jw = eraUtctai(utc1, utc2, &tai1, &tai2);
+   if ( jw < 0 ) {
+      return -1;
+   } else if ( jw > 0 ) {
+      js = jw;
+   }
+   if ( eraTaiut1(tai1, tai2, dta, ut11, ut12) ) return -1;
+
+/* Status. */
+   return js;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/xy06.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/xy06.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/xy06.c	(revision 18732)
@@ -0,0 +1,2767 @@
+#include "erfa.h"
+
+void eraXy06(double date1, double date2, double *x, double *y)
+/*
+**  - - - - - - - -
+**   e r a X y 0 6
+**  - - - - - - - -
+**
+**  X,Y coordinates of celestial intermediate pole from series based
+**  on IAU 2006 precession and IAU 2000A nutation.
+**
+**  Given:
+**     date1,date2  double     TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     x,y          double     CIP X,Y coordinates (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The X,Y coordinates are those of the unit vector towards the
+**     celestial intermediate pole.  They represent the combined effects
+**     of frame bias, precession and nutation.
+**
+**  3) The fundamental arguments used are as adopted in IERS Conventions
+**     (2003) and are from Simon et al. (1994) and Souchay et al.
+**     (1999).
+**
+**  4) This is an alternative to the angles-based method, via the ERFA
+**     function eraFw2xy and as used in eraXys06a for example.  The two
+**     methods agree at the 1 microarcsecond level (at present), a
+**     negligible amount compared with the intrinsic accuracy of the
+**     models.  However, it would be unwise to mix the two methods
+**     (angles-based and series-based) in a single application.
+**
+**  Called:
+**     eraFal03     mean anomaly of the Moon
+**     eraFalp03    mean anomaly of the Sun
+**     eraFaf03     mean argument of the latitude of the Moon
+**     eraFad03     mean elongation of the Moon from the Sun
+**     eraFaom03    mean longitude of the Moon's ascending node
+**     eraFame03    mean longitude of Mercury
+**     eraFave03    mean longitude of Venus
+**     eraFae03     mean longitude of Earth
+**     eraFama03    mean longitude of Mars
+**     eraFaju03    mean longitude of Jupiter
+**     eraFasa03    mean longitude of Saturn
+**     eraFaur03    mean longitude of Uranus
+**     eraFane03    mean longitude of Neptune
+**     eraFapa03    general accumulated precession in longitude
+**
+**  References:
+**
+**     Capitaine, N., Wallace, P.T. & Chapront, J., 2003,
+**     Astron.Astrophys., 412, 567
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG
+**
+**     Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+**     Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663
+**
+**     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M., 1999,
+**     Astron.Astrophys.Supp.Ser. 135, 111
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+
+/* Maximum power of T in the polynomials for X and Y */
+   enum { MAXPT = 5 };
+
+/* Polynomial coefficients (arcsec, X then Y). */
+   static const double xyp[2][MAXPT+1] = {
+
+      {    -0.016617,
+         2004.191898,
+           -0.4297829,
+           -0.19861834,
+            0.000007578,
+            0.0000059285
+      },
+      {    -0.006951,
+           -0.025896,
+          -22.4072747,
+            0.00190059,
+            0.001112526,
+            0.0000001358
+      }
+   };
+
+/* Fundamental-argument multipliers:  luni-solar terms */
+   static const int mfals[][5] = {
+
+   /* 1-10 */
+      {  0,   0,   0,   0,   1 },
+      {  0,   0,   2,  -2,   2 },
+      {  0,   0,   2,   0,   2 },
+      {  0,   0,   0,   0,   2 },
+      {  0,   1,   0,   0,   0 },
+      {  0,   1,   2,  -2,   2 },
+      {  1,   0,   0,   0,   0 },
+      {  0,   0,   2,   0,   1 },
+      {  1,   0,   2,   0,   2 },
+      {  0,   1,  -2,   2,  -2 },
+
+   /* 11-20 */
+      {  0,   0,   2,  -2,   1 },
+      {  1,   0,  -2,   0,  -2 },
+      {  1,   0,   0,  -2,   0 },
+      {  1,   0,   0,   0,   1 },
+      {  1,   0,   0,   0,  -1 },
+      {  1,   0,  -2,  -2,  -2 },
+      {  1,   0,   2,   0,   1 },
+      {  2,   0,  -2,   0,  -1 },
+      {  0,   0,   0,   2,   0 },
+      {  0,   0,   2,   2,   2 },
+
+   /* 21-30 */
+      {  2,   0,   0,  -2,   0 },
+      {  0,   2,  -2,   2,  -2 },
+      {  2,   0,   2,   0,   2 },
+      {  1,   0,   2,  -2,   2 },
+      {  1,   0,  -2,   0,  -1 },
+      {  2,   0,   0,   0,   0 },
+      {  0,   0,   2,   0,   0 },
+      {  0,   1,   0,   0,   1 },
+      {  1,   0,   0,  -2,  -1 },
+      {  0,   2,   2,  -2,   2 },
+
+   /* 31-40 */
+      {  0,   0,   2,  -2,   0 },
+      {  1,   0,   0,  -2,   1 },
+      {  0,   1,   0,   0,  -1 },
+      {  0,   2,   0,   0,   0 },
+      {  1,   0,  -2,  -2,  -1 },
+      {  1,   0,   2,   2,   2 },
+      {  0,   1,   2,   0,   2 },
+      {  2,   0,  -2,   0,   0 },
+      {  0,   0,   2,   2,   1 },
+      {  0,   1,  -2,   0,  -2 },
+
+   /* 41-50 */
+      {  0,   0,   0,   2,   1 },
+      {  1,   0,   2,  -2,   1 },
+      {  2,   0,   0,  -2,  -1 },
+      {  2,   0,   2,  -2,   2 },
+      {  2,   0,   2,   0,   1 },
+      {  0,   0,   0,   2,  -1 },
+      {  0,   1,  -2,   2,  -1 },
+      {  1,   1,   0,  -2,   0 },
+      {  2,   0,   0,  -2,   1 },
+      {  1,   0,   0,   2,   0 },
+
+   /* 51-60 */
+      {  0,   1,   2,  -2,   1 },
+      {  1,  -1,   0,   0,   0 },
+      {  0,   1,  -1,   1,  -1 },
+      {  2,   0,  -2,   0,  -2 },
+      {  0,   1,   0,  -2,   0 },
+      {  1,   0,   0,  -1,   0 },
+      {  3,   0,   2,   0,   2 },
+      {  0,   0,   0,   1,   0 },
+      {  1,  -1,   2,   0,   2 },
+      {  1,   1,  -2,  -2,  -2 },
+
+   /* 61-70 */
+      {  1,   0,  -2,   0,   0 },
+      {  2,   0,   0,   0,  -1 },
+      {  0,   1,  -2,  -2,  -2 },
+      {  1,   1,   2,   0,   2 },
+      {  2,   0,   0,   0,   1 },
+      {  1,   1,   0,   0,   0 },
+      {  1,   0,  -2,   2,  -1 },
+      {  1,   0,   2,   0,   0 },
+      {  1,  -1,   0,  -1,   0 },
+      {  1,   0,   0,   0,   2 },
+
+   /* 71-80 */
+      {  1,   0,  -1,   0,  -1 },
+      {  0,   0,   2,   1,   2 },
+      {  1,   0,  -2,  -4,  -2 },
+      {  1,  -1,   0,  -1,  -1 },
+      {  1,   0,   2,   2,   1 },
+      {  0,   2,  -2,   2,  -1 },
+      {  1,   0,   0,   0,  -2 },
+      {  2,   0,  -2,  -2,  -2 },
+      {  1,   1,   2,  -2,   2 },
+      {  2,   0,  -2,  -4,  -2 },
+
+   /* 81-90 */
+      {  1,   0,  -4,   0,  -2 },
+      {  2,   0,   2,  -2,   1 },
+      {  1,   0,   0,  -1,  -1 },
+      {  2,   0,   2,   2,   2 },
+      {  3,   0,   0,   0,   0 },
+      {  1,   0,   0,   2,   1 },
+      {  0,   0,   2,  -2,  -1 },
+      {  3,   0,   2,  -2,   2 },
+      {  0,   0,   4,  -2,   2 },
+      {  1,   0,   0,  -4,   0 },
+
+   /* 91-100 */
+      {  0,   1,   2,   0,   1 },
+      {  2,   0,   0,  -4,   0 },
+      {  1,   1,   0,  -2,  -1 },
+      {  2,   0,  -2,   0,   1 },
+      {  0,   0,   2,   0,  -1 },
+      {  0,   1,  -2,   0,  -1 },
+      {  0,   1,   0,   0,   2 },
+      {  0,   0,   2,  -1,   2 },
+      {  0,   0,   2,   4,   2 },
+      {  2,   1,   0,  -2,   0 },
+
+   /* 101-110 */
+      {  1,   1,   0,  -2,   1 },
+      {  1,  -1,   0,  -2,   0 },
+      {  1,  -1,   0,  -1,  -2 },
+      {  1,  -1,   0,   0,   1 },
+      {  0,   1,  -2,   2,   0 },
+      {  0,   1,   0,   0,  -2 },
+      {  1,  -1,   2,   2,   2 },
+      {  1,   0,   0,   2,  -1 },
+      {  1,  -1,  -2,  -2,  -2 },
+      {  3,   0,   2,   0,   1 },
+
+   /* 111-120 */
+      {  0,   1,   2,   2,   2 },
+      {  1,   0,   2,  -2,   0 },
+      {  1,   1,  -2,  -2,  -1 },
+      {  1,   0,   2,  -4,   1 },
+      {  0,   1,  -2,  -2,  -1 },
+      {  2,  -1,   2,   0,   2 },
+      {  0,   0,   0,   2,   2 },
+      {  1,  -1,   2,   0,   1 },
+      {  1,  -1,  -2,   0,  -2 },
+      {  0,   1,   0,   2,   0 },
+
+   /* 121-130 */
+      {  0,   1,   2,  -2,   0 },
+      {  0,   0,   0,   1,   1 },
+      {  1,   0,  -2,  -2,   0 },
+      {  0,   3,   2,  -2,   2 },
+      {  2,   1,   2,   0,   2 },
+      {  1,   1,   0,   0,   1 },
+      {  2,   0,   0,   2,   0 },
+      {  1,   1,   2,   0,   1 },
+      {  1,   0,   0,  -2,  -2 },
+      {  1,   0,  -2,   2,   0 },
+
+   /* 131-140 */
+      {  1,   0,  -1,   0,  -2 },
+      {  0,   1,   0,  -2,   1 },
+      {  0,   1,   0,   1,   0 },
+      {  0,   0,   0,   1,  -1 },
+      {  1,   0,  -2,   2,  -2 },
+      {  1,  -1,   0,   0,  -1 },
+      {  0,   0,   0,   4,   0 },
+      {  1,  -1,   0,   2,   0 },
+      {  1,   0,   2,   1,   2 },
+      {  1,   0,   2,  -1,   2 },
+
+   /* 141-150 */
+      {  0,   0,   2,   1,   1 },
+      {  1,   0,   0,  -2,   2 },
+      {  1,   0,  -2,   0,   1 },
+      {  1,   0,  -2,  -4,  -1 },
+      {  0,   0,   2,   2,   0 },
+      {  1,   1,   2,  -2,   1 },
+      {  1,   0,  -2,   1,  -1 },
+      {  0,   0,   1,   0,   1 },
+      {  2,   0,  -2,  -2,  -1 },
+      {  4,   0,   2,   0,   2 },
+
+   /* 151-160 */
+      {  2,  -1,   0,   0,   0 },
+      {  2,   1,   2,  -2,   2 },
+      {  0,   1,   2,   1,   2 },
+      {  1,   0,   4,  -2,   2 },
+      {  1,   1,   0,   0,  -1 },
+      {  2,   0,   2,   0,   0 },
+      {  2,   0,  -2,  -4,  -1 },
+      {  1,   0,  -1,   0,   0 },
+      {  1,   0,   0,   1,   0 },
+      {  0,   1,   0,   2,   1 },
+
+   /* 161-170 */
+      {  1,   0,  -4,   0,  -1 },
+      {  1,   0,   0,  -4,  -1 },
+      {  2,   0,   2,   2,   1 },
+      {  2,   1,   0,   0,   0 },
+      {  0,   0,   2,  -3,   2 },
+      {  1,   2,   0,  -2,   0 },
+      {  0,   3,   0,   0,   0 },
+      {  0,   0,   4,   0,   2 },
+      {  0,   0,   2,  -4,   1 },
+      {  2,   0,   0,  -2,  -2 },
+
+   /* 171-180 */
+      {  1,   1,  -2,  -4,  -2 },
+      {  0,   1,   0,  -2,  -1 },
+      {  0,   0,   0,   4,   1 },
+      {  3,   0,   2,  -2,   1 },
+      {  1,   0,   2,   4,   2 },
+      {  1,   1,  -2,   0,  -2 },
+      {  0,   0,   4,  -2,   1 },
+      {  2,  -2,   0,  -2,   0 },
+      {  2,   1,   0,  -2,  -1 },
+      {  0,   2,   0,  -2,   0 },
+
+   /* 181-190 */
+      {  1,   0,   0,  -1,   1 },
+      {  1,   1,   2,   2,   2 },
+      {  3,   0,   0,   0,  -1 },
+      {  2,   0,   0,  -4,  -1 },
+      {  3,   0,   2,   2,   2 },
+      {  0,   0,   2,   4,   1 },
+      {  0,   2,  -2,  -2,  -2 },
+      {  1,  -1,   0,  -2,  -1 },
+      {  0,   0,   2,  -1,   1 },
+      {  2,   0,   0,   2,   1 },
+
+   /* 191-200 */
+      {  1,  -1,  -2,   2,  -1 },
+      {  0,   0,   0,   2,  -2 },
+      {  2,   0,   0,  -4,   1 },
+      {  1,   0,   0,  -4,   1 },
+      {  2,   0,   2,  -4,   1 },
+      {  4,   0,   2,  -2,   2 },
+      {  2,   1,  -2,   0,  -1 },
+      {  2,   1,  -2,  -4,  -2 },
+      {  3,   0,   0,  -4,   0 },
+      {  1,  -1,   2,   2,   1 },
+
+   /* 201-210 */
+      {  1,  -1,  -2,   0,  -1 },
+      {  0,   2,   0,   0,   1 },
+      {  1,   2,  -2,  -2,  -2 },
+      {  1,   1,   0,  -4,   0 },
+      {  2,   0,   0,  -2,   2 },
+      {  0,   2,   2,  -2,   1 },
+      {  1,   0,   2,   0,  -1 },
+      {  2,   1,   0,  -2,   1 },
+      {  2,  -1,  -2,   0,  -1 },
+      {  1,  -1,  -2,  -2,  -1 },
+
+   /* 211-220 */
+      {  0,   1,  -2,   1,  -2 },
+      {  1,   0,  -4,   2,  -2 },
+      {  0,   1,   2,   2,   1 },
+      {  3,   0,   0,   0,   1 },
+      {  2,  -1,   2,   2,   2 },
+      {  0,   1,  -2,  -4,  -2 },
+      {  1,   0,  -2,  -3,  -2 },
+      {  2,   0,   0,   0,   2 },
+      {  1,  -1,   0,  -2,  -2 },
+      {  2,   0,  -2,   2,  -1 },
+
+   /* 221-230 */
+      {  0,   2,  -2,   0,  -2 },
+      {  3,   0,  -2,   0,  -1 },
+      {  2,  -1,   2,   0,   1 },
+      {  1,   0,  -2,  -1,  -2 },
+      {  0,   0,   2,   0,   3 },
+      {  2,   0,  -4,   0,  -2 },
+      {  2,   1,   0,  -4,   0 },
+      {  1,   1,  -2,   1,  -1 },
+      {  0,   2,   2,   0,   2 },
+      {  1,  -1,   2,  -2,   2 },
+
+   /* 231-240 */
+      {  1,  -1,   0,  -2,   1 },
+      {  2,   1,   2,   0,   1 },
+      {  1,   0,   2,  -4,   2 },
+      {  1,   1,  -2,   0,  -1 },
+      {  1,   1,   0,   2,   0 },
+      {  1,   0,   0,  -3,   0 },
+      {  2,   0,   2,  -1,   2 },
+      {  0,   2,   0,   0,  -1 },
+      {  2,  -1,   0,  -2,   0 },
+      {  4,   0,   0,   0,   0 },
+
+   /* 241-250 */
+      {  2,   1,  -2,  -2,  -2 },
+      {  0,   2,  -2,   2,   0 },
+      {  1,   0,   2,   1,   1 },
+      {  1,   0,  -1,   0,  -3 },
+      {  3,  -1,   2,   0,   2 },
+      {  2,   0,   2,  -2,   0 },
+      {  1,  -2,   0,   0,   0 },
+      {  2,   0,   0,   0,  -2 },
+      {  1,   0,   0,   4,   0 },
+      {  0,   1,   0,   1,   1 },
+
+   /* 251-260 */
+      {  1,   0,   2,   2,   0 },
+      {  0,   1,   0,   2,  -1 },
+      {  0,   1,   0,   1,  -1 },
+      {  0,   0,   2,  -2,   3 },
+      {  3,   1,   2,   0,   2 },
+      {  1,   1,   2,   1,   2 },
+      {  1,   1,  -2,   2,  -1 },
+      {  2,  -1,   2,  -2,   2 },
+      {  1,  -2,   2,   0,   2 },
+      {  1,   0,   2,  -4,   0 },
+
+   /* 261-270 */
+      {  0,   0,   1,   0,   0 },
+      {  1,   0,   2,  -3,   1 },
+      {  1,  -2,   0,  -2,   0 },
+      {  2,   0,   0,   2,  -1 },
+      {  1,   1,   2,  -4,   1 },
+      {  4,   0,   2,   0,   1 },
+      {  0,   1,   2,   1,   1 },
+      {  1,   2,   2,  -2,   2 },
+      {  2,   0,   2,   1,   2 },
+      {  2,   1,   2,  -2,   1 },
+
+   /* 271-280 */
+      {  1,   0,   2,  -1,   1 },
+      {  1,   0,   4,  -2,   1 },
+      {  1,  -1,   2,  -2,   1 },
+      {  0,   1,   0,  -4,   0 },
+      {  3,   0,  -2,  -2,  -2 },
+      {  0,   0,   4,  -4,   2 },
+      {  2,   0,  -4,  -2,  -2 },
+      {  2,  -2,   0,  -2,  -1 },
+      {  1,   0,   2,  -2,  -1 },
+      {  2,   0,  -2,  -6,  -2 },
+
+   /* 281-290 */
+      {  1,   0,  -2,   1,  -2 },
+      {  1,   0,  -2,   2,   1 },
+      {  1,  -1,   0,   2,  -1 },
+      {  1,   0,  -2,   1,   0 },
+      {  2,  -1,   0,  -2,   1 },
+      {  1,  -1,   0,   2,   1 },
+      {  2,   0,  -2,  -2,   0 },
+      {  1,   0,   2,  -3,   2 },
+      {  0,   0,   0,   4,  -1 },
+      {  2,  -1,   0,   0,   1 },
+
+   /* 291-300 */
+      {  2,   0,   4,  -2,   2 },
+      {  0,   0,   2,   3,   2 },
+      {  0,   1,   4,  -2,   2 },
+      {  0,   1,  -2,   2,   1 },
+      {  1,   1,   0,   2,   1 },
+      {  1,   0,   0,   4,   1 },
+      {  0,   0,   4,   0,   1 },
+      {  2,   0,   0,  -3,   0 },
+      {  1,   0,   0,  -1,  -2 },
+      {  1,  -2,  -2,  -2,  -2 },
+
+   /* 301-310 */
+      {  3,   0,   0,   2,   0 },
+      {  2,   0,   2,  -4,   2 },
+      {  1,   1,  -2,  -4,  -1 },
+      {  1,   0,  -2,  -6,  -2 },
+      {  2,  -1,   0,   0,  -1 },
+      {  2,  -1,   0,   2,   0 },
+      {  0,   1,   2,  -2,  -1 },
+      {  1,   1,   0,   1,   0 },
+      {  1,   2,   0,  -2,  -1 },
+      {  1,   0,   0,   1,  -1 },
+
+   /* 311-320 */
+      {  0,   0,   1,   0,   2 },
+      {  3,   1,   2,  -2,   2 },
+      {  1,   0,  -4,  -2,  -2 },
+      {  1,   0,   2,   4,   1 },
+      {  1,  -2,   2,   2,   2 },
+      {  1,  -1,  -2,  -4,  -2 },
+      {  0,   0,   2,  -4,   2 },
+      {  0,   0,   2,  -3,   1 },
+      {  2,   1,  -2,   0,   0 },
+      {  3,   0,  -2,  -2,  -1 },
+
+   /* 321-330 */
+      {  2,   0,   2,   4,   2 },
+      {  0,   0,   0,   0,   3 },
+      {  2,  -1,  -2,  -2,  -2 },
+      {  2,   0,   0,  -1,   0 },
+      {  3,   0,   2,  -4,   2 },
+      {  2,   1,   2,   2,   2 },
+      {  0,   0,   3,   0,   3 },
+      {  1,   1,   2,   2,   1 },
+      {  2,   1,   0,   0,  -1 },
+      {  1,   2,   0,  -2,   1 },
+
+   /* 331-340 */
+      {  3,   0,   2,   2,   1 },
+      {  1,  -1,  -2,   2,  -2 },
+      {  1,   1,   0,  -1,   0 },
+      {  1,   2,   0,   0,   0 },
+      {  1,   0,   4,   0,   2 },
+      {  1,  -1,   2,   4,   2 },
+      {  2,   1,   0,   0,   1 },
+      {  1,   0,   0,   2,   2 },
+      {  1,  -1,  -2,   2,   0 },
+      {  0,   2,  -2,  -2,  -1 },
+
+   /* 341-350 */
+      {  2,   0,  -2,   0,   2 },
+      {  5,   0,   2,   0,   2 },
+      {  3,   0,  -2,  -6,  -2 },
+      {  1,  -1,   2,  -1,   2 },
+      {  3,   0,   0,  -4,  -1 },
+      {  1,   0,   0,   1,   1 },
+      {  1,   0,  -4,   2,  -1 },
+      {  0,   1,   2,  -4,   1 },
+      {  1,   2,   2,   0,   2 },
+      {  0,   1,   0,  -2,  -2 },
+
+   /* 351-360 */
+      {  0,   0,   2,  -1,   0 },
+      {  1,   0,   1,   0,   1 },
+      {  0,   2,   0,  -2,   1 },
+      {  3,   0,   2,   0,   0 },
+      {  1,   1,  -2,   1,   0 },
+      {  2,   1,  -2,  -4,  -1 },
+      {  3,  -1,   0,   0,   0 },
+      {  2,  -1,  -2,   0,   0 },
+      {  4,   0,   2,  -2,   1 },
+      {  2,   0,  -2,   2,   0 },
+
+   /* 361-370 */
+      {  1,   1,   2,  -2,   0 },
+      {  1,   0,  -2,   4,  -1 },
+      {  1,   0,  -2,  -2,   1 },
+      {  2,   0,   2,  -4,   0 },
+      {  1,   1,   0,  -2,  -2 },
+      {  1,   1,  -2,  -2,   0 },
+      {  1,   0,   1,  -2,   1 },
+      {  2,  -1,  -2,  -4,  -2 },
+      {  3,   0,  -2,   0,  -2 },
+      {  0,   1,  -2,  -2,   0 },
+
+   /* 371-380 */
+      {  3,   0,   0,  -2,  -1 },
+      {  1,   0,  -2,  -3,  -1 },
+      {  0,   1,   0,  -4,  -1 },
+      {  1,  -2,   2,  -2,   1 },
+      {  0,   1,  -2,   1,  -1 },
+      {  1,  -1,   0,   0,   2 },
+      {  2,   0,   0,   1,   0 },
+      {  1,  -2,   0,   2,   0 },
+      {  1,   2,  -2,  -2,  -1 },
+      {  0,   0,   4,  -4,   1 },
+
+   /* 381-390 */
+      {  0,   1,   2,   4,   2 },
+      {  0,   1,  -4,   2,  -2 },
+      {  3,   0,  -2,   0,   0 },
+      {  2,  -1,   2,   2,   1 },
+      {  0,   1,  -2,  -4,  -1 },
+      {  4,   0,   2,   2,   2 },
+      {  2,   0,  -2,  -3,  -2 },
+      {  2,   0,   0,  -6,   0 },
+      {  1,   0,   2,   0,   3 },
+      {  3,   1,   0,   0,   0 },
+
+   /* 391-400 */
+      {  3,   0,   0,  -4,   1 },
+      {  1,  -1,   2,   0,   0 },
+      {  1,  -1,   0,  -4,   0 },
+      {  2,   0,  -2,   2,  -2 },
+      {  1,   1,   0,  -2,   2 },
+      {  4,   0,   0,  -2,   0 },
+      {  2,   2,   0,  -2,   0 },
+      {  0,   1,   2,   0,   0 },
+      {  1,   1,   0,  -4,   1 },
+      {  1,   0,   0,  -4,  -2 },
+
+   /* 401-410 */
+      {  0,   0,   0,   1,   2 },
+      {  3,   0,   0,   2,   1 },
+      {  1,   1,   0,  -4,  -1 },
+      {  0,   0,   2,   2,  -1 },
+      {  1,   1,   2,   0,   0 },
+      {  1,  -1,   2,  -4,   1 },
+      {  1,   1,   0,   0,   2 },
+      {  0,   0,   2,   6,   2 },
+      {  4,   0,  -2,  -2,  -1 },
+      {  2,   1,   0,  -4,  -1 },
+
+   /* 411-420 */
+      {  0,   0,   0,   3,   1 },
+      {  1,  -1,  -2,   0,   0 },
+      {  0,   0,   2,   1,   0 },
+      {  1,   0,   0,   2,  -2 },
+      {  3,  -1,   2,   2,   2 },
+      {  3,  -1,   2,  -2,   2 },
+      {  1,   0,   0,  -1,   2 },
+      {  1,  -2,   2,  -2,   2 },
+      {  0,   1,   0,   2,   2 },
+      {  0,   1,  -2,  -1,  -2 },
+
+   /* 421-430 */
+      {  1,   1,  -2,   0,   0 },
+      {  0,   2,   2,  -2,   0 },
+      {  3,  -1,  -2,  -1,  -2 },
+      {  1,   0,   0,  -6,   0 },
+      {  1,   0,  -2,  -4,   0 },
+      {  2,   1,   0,  -4,   1 },
+      {  2,   0,   2,   0,  -1 },
+      {  2,   0,  -4,   0,  -1 },
+      {  0,   0,   3,   0,   2 },
+      {  2,   1,  -2,  -2,  -1 },
+
+   /* 431-440 */
+      {  1,  -2,   0,   0,   1 },
+      {  2,  -1,   0,  -4,   0 },
+      {  0,   0,   0,   3,   0 },
+      {  5,   0,   2,  -2,   2 },
+      {  1,   2,  -2,  -4,  -2 },
+      {  1,   0,   4,  -4,   2 },
+      {  0,   0,   4,  -1,   2 },
+      {  3,   1,   0,  -4,   0 },
+      {  3,   0,   0,  -6,   0 },
+      {  2,   0,   0,   2,   2 },
+
+   /* 441-450 */
+      {  2,  -2,   2,   0,   2 },
+      {  1,   0,   0,  -3,   1 },
+      {  1,  -2,  -2,   0,  -2 },
+      {  1,  -1,  -2,  -3,  -2 },
+      {  0,   0,   2,  -2,  -2 },
+      {  2,   0,  -2,  -4,   0 },
+      {  1,   0,  -4,   0,   0 },
+      {  0,   1,   0,  -1,   0 },
+      {  4,   0,   0,   0,  -1 },
+      {  3,   0,   2,  -1,   2 },
+
+   /* 451-460 */
+      {  3,  -1,   2,   0,   1 },
+      {  2,   0,   2,  -1,   1 },
+      {  1,   2,   2,  -2,   1 },
+      {  1,   1,   0,   2,  -1 },
+      {  0,   2,   2,   0,   1 },
+      {  3,   1,   2,   0,   1 },
+      {  1,   1,   2,   1,   1 },
+      {  1,   1,   0,  -1,   1 },
+      {  1,  -2,   0,  -2,  -1 },
+      {  4,   0,   0,  -4,   0 },
+
+   /* 461-470 */
+      {  2,   1,   0,   2,   0 },
+      {  1,  -1,   0,   4,   0 },
+      {  0,   1,   0,  -2,   2 },
+      {  0,   0,   2,   0,  -2 },
+      {  1,   0,  -1,   0,   1 },
+      {  3,   0,   2,  -2,   0 },
+      {  2,   0,   2,   2,   0 },
+      {  1,   2,   0,  -4,   0 },
+      {  1,  -1,   0,  -3,   0 },
+      {  0,   1,   0,   4,   0 },
+
+   /* 471 - 480 */
+      {  0,   1,  -2,   0,   0 },
+      {  2,   2,   2,  -2,   2 },
+      {  0,   0,   0,   1,  -2 },
+      {  0,   2,  -2,   0,  -1 },
+      {  4,   0,   2,  -4,   2 },
+      {  2,   0,  -4,   2,  -2 },
+      {  2,  -1,  -2,   0,  -2 },
+      {  1,   1,   4,  -2,   2 },
+      {  1,   1,   2,  -4,   2 },
+      {  1,   0,   2,   3,   2 },
+
+   /* 481-490 */
+      {  1,   0,   0,   4,  -1 },
+      {  0,   0,   0,   4,   2 },
+      {  2,   0,   0,   4,   0 },
+      {  1,   1,  -2,   2,   0 },
+      {  2,   1,   2,   1,   2 },
+      {  2,   1,   2,  -4,   1 },
+      {  2,   0,   2,   1,   1 },
+      {  2,   0,  -4,  -2,  -1 },
+      {  2,   0,  -2,  -6,  -1 },
+      {  2,  -1,   2,  -1,   2 },
+
+   /* 491-500 */
+      {  1,  -2,   2,   0,   1 },
+      {  1,  -2,   0,  -2,   1 },
+      {  1,  -1,   0,  -4,  -1 },
+      {  0,   2,   2,   2,   2 },
+      {  0,   2,  -2,  -4,  -2 },
+      {  0,   1,   2,   3,   2 },
+      {  0,   1,   0,  -4,   1 },
+      {  3,   0,   0,  -2,   1 },
+      {  2,   1,  -2,   0,   1 },
+      {  2,   0,   4,  -2,   1 },
+
+   /* 501-510 */
+      {  2,   0,   0,  -3,  -1 },
+      {  2,  -2,   0,  -2,   1 },
+      {  2,  -1,   2,  -2,   1 },
+      {  1,   0,   0,  -6,  -1 },
+      {  1,  -2,   0,   0,  -1 },
+      {  1,  -2,  -2,  -2,  -1 },
+      {  0,   1,   4,  -2,   1 },
+      {  0,   0,   2,   3,   1 },
+      {  2,  -1,   0,  -1,   0 },
+      {  1,   3,   0,  -2,   0 },
+
+   /* 511-520 */
+      {  0,   3,   0,  -2,   0 },
+      {  2,  -2,   2,  -2,   2 },
+      {  0,   0,   4,  -2,   0 },
+      {  4,  -1,   2,   0,   2 },
+      {  2,   2,  -2,  -4,  -2 },
+      {  4,   1,   2,   0,   2 },
+      {  4,  -1,  -2,  -2,  -2 },
+      {  2,   1,   0,  -2,  -2 },
+      {  2,   1,  -2,  -6,  -2 },
+      {  2,   0,   0,  -1,   1 },
+
+   /* 521-530 */
+      {  2,  -1,  -2,   2,  -1 },
+      {  1,   1,  -2,   2,  -2 },
+      {  1,   1,  -2,  -3,  -2 },
+      {  1,   0,   3,   0,   3 },
+      {  1,   0,  -2,   1,   1 },
+      {  1,   0,  -2,   0,   2 },
+      {  1,  -1,   2,   1,   2 },
+      {  1,  -1,   0,   0,  -2 },
+      {  1,  -1,  -4,   2,  -2 },
+      {  0,   3,  -2,  -2,  -2 },
+
+   /* 531-540 */
+      {  0,   1,   0,   4,   1 },
+      {  0,   0,   4,   2,   2 },
+      {  3,   0,  -2,  -2,   0 },
+      {  2,  -2,   0,   0,   0 },
+      {  1,   1,   2,  -4,   0 },
+      {  1,   1,   0,  -3,   0 },
+      {  1,   0,   2,  -3,   0 },
+      {  1,  -1,   2,  -2,   0 },
+      {  0,   2,   0,   2,   0 },
+      {  0,   0,   2,   4,   0 },
+
+   /* 541-550 */
+      {  1,   0,   1,   0,   0 },
+      {  3,   1,   2,  -2,   1 },
+      {  3,   0,   4,  -2,   2 },
+      {  3,   0,   2,   1,   2 },
+      {  3,   0,   0,   2,  -1 },
+      {  3,   0,   0,   0,   2 },
+      {  3,   0,  -2,   2,  -1 },
+      {  2,   0,   4,  -4,   2 },
+      {  2,   0,   2,  -3,   2 },
+      {  2,   0,   0,   4,   1 },
+
+   /* 551-560 */
+      {  2,   0,   0,  -3,   1 },
+      {  2,   0,  -4,   2,  -1 },
+      {  2,   0,  -2,  -2,   1 },
+      {  2,  -2,   2,   2,   2 },
+      {  2,  -2,   0,  -2,  -2 },
+      {  2,  -1,   0,   2,   1 },
+      {  2,  -1,   0,   2,  -1 },
+      {  1,   1,   2,   4,   2 },
+      {  1,   1,   0,   1,   1 },
+      {  1,   1,   0,   1,  -1 },
+
+   /* 561-570 */
+      {  1,   1,  -2,  -6,  -2 },
+      {  1,   0,   0,  -3,  -1 },
+      {  1,   0,  -4,  -2,  -1 },
+      {  1,   0,  -2,  -6,  -1 },
+      {  1,  -2,   2,   2,   1 },
+      {  1,  -2,  -2,   2,  -1 },
+      {  1,  -1,  -2,  -4,  -1 },
+      {  0,   2,   0,   0,   2 },
+      {  0,   1,   2,  -4,   2 },
+      {  0,   1,  -2,   4,  -1 },
+
+   /* 571-580 */
+      {  5,   0,   0,   0,   0 },
+      {  3,   0,   0,  -3,   0 },
+      {  2,   2,   0,  -4,   0 },
+      {  1,  -1,   2,   2,   0 },
+      {  0,   1,   0,   3,   0 },
+      {  4,   0,  -2,   0,  -1 },
+      {  3,   0,  -2,  -6,  -1 },
+      {  3,   0,  -2,  -1,  -1 },
+      {  2,   1,   2,   2,   1 },
+      {  2,   1,   0,   2,   1 },
+
+   /* 581-590 */
+      {  2,   0,   2,   4,   1 },
+      {  2,   0,   2,  -6,   1 },
+      {  2,   0,   2,  -2,  -1 },
+      {  2,   0,   0,  -6,  -1 },
+      {  2,  -1,  -2,  -2,  -1 },
+      {  1,   2,   2,   0,   1 },
+      {  1,   2,   0,   0,   1 },
+      {  1,   0,   4,   0,   1 },
+      {  1,   0,   2,  -6,   1 },
+      {  1,   0,   2,  -4,  -1 },
+
+   /* 591-600 */
+      {  1,   0,  -1,  -2,  -1 },
+      {  1,  -1,   2,   4,   1 },
+      {  1,  -1,   2,  -3,   1 },
+      {  1,  -1,   0,   4,   1 },
+      {  1,  -1,  -2,   1,  -1 },
+      {  0,   1,   2,  -2,   3 },
+      {  3,   0,   0,  -2,   0 },
+      {  1,   0,   1,  -2,   0 },
+      {  0,   2,   0,  -4,   0 },
+      {  0,   0,   2,  -4,   0 },
+
+   /* 601-610 */
+      {  0,   0,   1,  -1,   0 },
+      {  0,   0,   0,   6,   0 },
+      {  0,   2,   0,   0,  -2 },
+      {  0,   1,  -2,   2,  -3 },
+      {  4,   0,   0,   2,   0 },
+      {  3,   0,   0,  -1,   0 },
+      {  3,  -1,   0,   2,   0 },
+      {  2,   1,   0,   1,   0 },
+      {  2,   1,   0,  -6,   0 },
+      {  2,  -1,   2,   0,   0 },
+
+   /* 611-620 */
+      {  1,   0,   2,  -1,   0 },
+      {  1,  -1,   0,   1,   0 },
+      {  1,  -1,  -2,  -2,   0 },
+      {  0,   1,   2,   2,   0 },
+      {  0,   0,   2,  -3,   0 },
+      {  2,   2,   0,  -2,  -1 },
+      {  2,  -1,  -2,   0,   1 },
+      {  1,   2,   2,  -4,   1 },
+      {  0,   1,   4,  -4,   2 },
+      {  0,   0,   0,   3,   2 },
+
+   /* 621-630 */
+      {  5,   0,   2,   0,   1 },
+      {  4,   1,   2,  -2,   2 },
+      {  4,   0,  -2,  -2,   0 },
+      {  3,   1,   2,   2,   2 },
+      {  3,   1,   0,  -2,   0 },
+      {  3,   1,  -2,  -6,  -2 },
+      {  3,   0,   0,   0,  -2 },
+      {  3,   0,  -2,  -4,  -2 },
+      {  3,  -1,   0,  -3,   0 },
+      {  3,  -1,   0,  -2,   0 },
+
+   /* 631-640 */
+      {  2,   1,   2,   0,   0 },
+      {  2,   1,   2,  -4,   2 },
+      {  2,   1,   2,  -2,   0 },
+      {  2,   1,   0,  -3,   0 },
+      {  2,   1,  -2,   0,  -2 },
+      {  2,   0,   0,  -4,   2 },
+      {  2,   0,   0,  -4,  -2 },
+      {  2,   0,  -2,  -5,  -2 },
+      {  2,  -1,   2,   4,   2 },
+      {  2,  -1,   0,  -2,   2 },
+
+   /* 641-650 */
+      {  1,   3,  -2,  -2,  -2 },
+      {  1,   1,   0,   0,  -2 },
+      {  1,   1,   0,  -6,   0 },
+      {  1,   1,  -2,   1,  -2 },
+      {  1,   1,  -2,  -1,  -2 },
+      {  1,   0,   2,   1,   0 },
+      {  1,   0,   0,   3,   0 },
+      {  1,   0,   0,  -4,   2 },
+      {  1,   0,  -2,   4,  -2 },
+      {  1,  -2,   0,  -1,   0 },
+
+   /* 651-NFLS */
+      {  0,   1,  -4,   2,  -1 },
+      {  1,   0,  -2,   0,  -3 },
+      {  0,   0,   4,  -4,   4 }
+   };
+
+/* Number of frequencies:  luni-solar */
+   static const int NFLS = (int) (sizeof mfals / sizeof (int) / 5);
+
+/* Fundamental-argument multipliers:  planetary terms */
+   static const int mfapl[][14] = {
+
+   /* 1-10 */
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -2,  5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0, -8, 12,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  8,-16,  4,  5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -1,  2,  0,  0,  0,  0,  0 },
+
+   /* 11-20 */
+      {  0,  0,  0,  0,  0,  0,  8,-13,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  2, -5,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0, -5,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -6,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -1,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -8,  3,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6, -8,  3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2, -3,  0,  0,  0,  0,  0,  0 },
+
+   /* 21-30 */
+      {  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  1,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  1, -1,  1,  0,  0,  0, -2,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2, -1,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  1 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+
+   /* 31-40 */
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-13,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  5, -8,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  1 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0, -1,  0,  0,  0 },
+
+   /* 41-50 */
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -7,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  0,  0,  0,  0, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0, -2,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  8,-13,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2, -1,  0,  0,  0,  0,  0,  2 },
+      {  1,  0,  0,  0,  0,  0,-18, 16,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  1,  0,  0,  0,  2 },
+
+   /* 51-60 */
+      {  0,  0,  1, -1,  1,  0, -5,  7,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,-10,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0,  0, -5,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -1,  0,  0,  0,  2 },
+      {  1,  0,  2,  0,  2,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -2,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  1 },
+      {  1,  0, -2,  0, -2,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  2,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+
+   /* 61-70 */
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  8,-16,  4,  5,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0,  0,  3, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-11,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  8,-16,  4,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  4, -6,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -3,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0,  0 },
+
+   /* 71-80 */
+      {  0,  0,  0,  0,  0,  0,  6, -8,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  3, -2,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  8,-15,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  1, -3,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -2,  0,  0,  0,  2 },
+      {  0,  0,  1, -1,  1,  0,  0, -5,  8, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -2,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0,  0,  0 },
+
+   /* 81-90 */
+      {  2,  0,  0, -2,  1,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -8,  0,  0,  0,  0,  0, -1 },
+      {  2,  0,  0, -2,  0,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  8,-13,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0, -2,  5,  0,  0,  0 },
+      {  1,  0,  0, -1,  0,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  2 },
+      {  1,  0,  0,  0, -1,  0,-18, 16,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0,  2, -5,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0 },
+
+   /* 91-100 */
+      {  1,  0,  0, -2,  0,  0, 19,-21,  3,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -8, 13,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7, -9,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  2 },
+      {  1,  0,  0,  0,  1,  0,-18, 16,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-16,  4,  5,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  4, -7,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  3, -7,  0,  0,  0,  0,  0, -2 },
+
+   /* 101-110 */
+      {  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  1 },
+      {  2,  0,  0, -2,  1,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -4,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2, -1,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  2,  0,  0,  0,  2 },
+
+   /* 111-120 */
+      {  0,  0,  0,  0,  1,  0,  0,  1, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  2 },
+      {  0,  0,  2, -2,  1,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  3, -3,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0, -1,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0, -6,  8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+
+   /* 121-130 */
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  1 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -3,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, -1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-10,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6, -9,  0,  0,  0,  0,  0, -2 },
+      {  1,  0,  0, -1,  1,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+
+   /* 131-140 */
+      {  0,  0,  0,  0,  0,  0,  5, -7,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  5, -5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  3, -3,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0, -3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  1,  0,  2, -3,  0,  0,  0,  0,  0,  0 },
+
+   /* 141-150 */
+      {  1,  0,  0, -1,  0,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -3,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -4,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  9,-11,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -3,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  8,-15,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -4,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0, -1,  0,  0,  0,  2 },
+
+   /* 151-160 */
+      {  1,  0,  0, -1,  1,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1,  1,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -4, 10,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  0, -1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -1,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -4,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0, -2 },
+      {  0,  0,  2, -2,  1,  0, -4,  4,  0,  0,  0,  0,  0,  0 },
+
+   /* 161-170 */
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0,  0, -1,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -3,  0,  0,  0,  0,  2 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  0,  0,  2,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  5, -8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  1,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -9, 13,  0,  0,  0,  0,  0 },
+      {  2,  0,  2,  0,  2,  0,  0,  2,  0, -3,  0,  0,  0,  0 },
+
+   /* 171-180 */
+      {  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0,  0,  2,  0,  0,  0 },
+      {  1,  0,  0, -1, -1,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  6, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  1 },
+      {  1,  0,  2,  0,  1,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  1,  0, -2,  0, -1,  0,  0, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -2,  4,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0,  0 },
+
+   /* 181-190 */
+      {  0,  0,  0,  0,  0,  0,  2,  1,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  2,  0,  2,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -8,  3,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  6,-10,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  7, -8,  3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  1,  0, -3,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -1,  0,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0, -5,  7,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -2,  0,  0,  0,  1 },
+
+   /* 191-200 */
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7,-10,  0,  0,  0,  0,  0, -2 },
+      {  1,  0,  0, -2,  0,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  2, -5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6, -8,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1,  1,  0,  0, -9, 15,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -2,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -1,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0,  0 },
+
+   /* 201-210 */
+      {  0,  0,  0,  0,  0,  0,  0,  1, -4,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, -1,  0,  0,  2 },
+      {  2,  0,  0, -2,  1,  0, -6,  8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -5,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1,  1,  0,  3, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  8,-14,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+
+   /* 211-220 */
+      {  0,  0,  0,  0,  1,  0,  0,  8,-15,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -6,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7, -7,  0,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  1,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -1,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  1,  0,  0,  2 },
+      {  2,  0, -1, -1,  0,  0,  0,  3, -7,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -7,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -3,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -3,  4,  0,  0,  0,  0,  0 },
+
+   /* 221-230 */
+      {  2,  0,  0, -2,  0,  0,  0, -6,  8,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -5,  6,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  2,  1,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  1,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -9,  4,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0, -2 },
+
+   /* 231-240 */
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -4,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  1 },
+      {  0,  0,  0,  0,  0,  0,  7,-11,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  3, -5,  4,  0,  0,  0,  0,  2 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0, -1,  1,  0,  0,  0 },
+      {  2,  0,  0,  0,  0,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  8,-15,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  2,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  6, -6,  0,  0,  0,  0,  0, -1 },
+
+   /* 241-250 */
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -1,  1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -7,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  2, -4,  0, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  3, -5,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -3,  0,  0,  0,  2 },
+      {  0,  0,  2, -2,  2,  0, -8, 11,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, -2,  0,  0,  0 },
+
+   /* 251-260 */
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  1,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -9,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -5,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  7, -9,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  4, -7,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  2, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0, -2, -2, -2,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -2,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  3, -3,  0,  0,  0,  0,  0,  1 },
+
+   /* 261-270 */
+      {  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  2, -5,  0,  0,  2 },
+      {  2,  0,  0, -2, -1,  0,  0, -2,  0,  0,  5,  0,  0,  0 },
+      {  2,  0,  0, -2, -1,  0, -6,  8,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8, -8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0,  2, -5,  0,  0,  2 },
+      {  0,  0,  0,  0,  1,  0,  3, -7,  4,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+
+   /* 271-280 */
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0, -2,  5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -1,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  2, -3,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-15,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0,  1,  0,  0,  0,  2 },
+      {  1,  0,  0, -1,  0,  0,  0, -3,  4,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -3,  7, -4,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,  0, -2,  0,  0,  0,  2 },
+
+   /* 281-290 */
+      {  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  2, -2,  2,  0, -5,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  2,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -5,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -7,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-11,  0,  0,  0,  0, -2 },
+
+   /* 291-300 */
+      {  0,  0,  0,  0,  0,  0,  0,  1, -3,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  9,-12,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  1, -1,  0,  0, -8, 12,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -2,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7, -7,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0, -1 },
+
+   /* 301-310 */
+      {  0,  0,  0,  0,  0,  0,  0,  6, -6,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  1,  0, -4,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6, -9,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1, -1,  0,  0,  0, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -5,  0,  0,  0,  0, -2 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  3, -1,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, -2,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -9,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  0,  2 },
+
+   /* 311-320 */
+      {  0,  0,  0,  0,  0,  0,  9, -9,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  3,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  2, -4,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -3,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  1 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -9,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -3,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  2 },
+      {  0,  0,  2,  0,  2,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+
+   /* 321-330 */
+      {  0,  0,  2,  0,  2,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,  0, -3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  0,  0 },
+      {  2,  0, -1, -1, -1,  0,  0, -1,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -3,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  4, -2,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  5,-10,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  8,-13,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  2, -2,  1, -1,  0,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  0,  2,  0,  0 },
+
+   /* 331-340 */
+      {  0,  0,  0,  0,  1,  0,  3, -5,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  9, -9,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -8, 11,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -2,  0,  0,  2,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -1,  2,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -5,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  2, -6,  0,  0,  0,  0,  0, -2 },
+
+   /* 341-350 */
+      {  0,  0,  0,  0,  0,  0,  0,  8,-15,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -2,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  7,-13,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  3,  0,  0,  0,  2 },
+      {  0,  0,  2, -2,  1,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8, -8,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  8,-10,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  4, -2,  0,  0,  0,  0,  0,  1 },
+
+   /* 351-360 */
+      {  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  3, -4,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -4,  0,  0,  0,  0 },
+      {  2,  0,  0, -2, -1,  0,  0, -5,  6,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  0,  0, -2 },
+      {  2,  0, -1, -1, -1,  0,  0,  3, -7,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -8,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0, -1,  1,  0,  0,  0,  0,  0,  0 },
+
+   /* 361-370 */
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  4, -3,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-11,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  1,  0,  0, -6,  8,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  1,  5,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6, -5,  0,  0,  0,  0,  2 },
+      {  1,  0, -2, -2, -2,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0,  0,  0, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  2,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  2,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  1 },
+
+   /* 371-380 */
+      {  0,  0,  0,  0,  0,  0,  0,  6, -7,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0,  0, -2,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0,  0, -2,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -1,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1, -6,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  4, -5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  3, -5,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  7,-13,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -2,  0,  0,  0,  2 },
+
+   /* 381-390 */
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  0,  2,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -8, 15,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2, -2,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  2,  0, -1, -1, -1,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  1,  0,  2, -2,  2,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  1,  0, -1,  1, -1,  0,-18, 17,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  2, -2, -1,  0, -5,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+
+   /* 391-400 */
+      {  0,  0,  0,  0,  1,  0,  2, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-16,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2 },
+      {  0,  0,  0,  0,  2,  0,  0, -1,  2,  0,  0,  0,  0,  0 },
+      {  2,  0, -1, -1, -2,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6,-10,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0, -2,  4,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  2,  0,  0,  0,  0,  2 },
+      {  2,  0,  0, -2, -1,  0,  0, -2,  0,  4, -5,  0,  0,  0 },
+
+   /* 401-410 */
+      {  2,  0,  0, -2, -1,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  2,  0, -1, -1, -1,  0,  0, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  1, -1,  1,  0,  0, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -1, -1,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+      {  1,  0, -1, -1, -1,  0, 20,-20,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  1, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -2,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  5, -8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  0,  0,  0, -1,  0,  0,  0 },
+
+   /* 411-420 */
+      {  0,  0,  0,  0,  0,  0,  9,-11,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  5, -3,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -3,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  6, -7,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0, -2,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0, -2,  5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -7,  0,  0,  0,  0,  0 },
+
+   /* 421-430 */
+      {  0,  0,  0,  0,  0,  0,  1, -3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -8,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -6,  0,  0,  0,  0, -2 },
+      {  1,  0,  0, -2,  0,  0, 20,-21,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-12,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -4,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  8,-12,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  9,-17,  0,  0,  0,  0,  0 },
+
+   /* 431-440 */
+      {  0,  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  1,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -6,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -7,  0,  0,  0,  0, -2 },
+      {  1,  0,  0, -1,  1,  0,  0, -3,  4,  0,  0,  0,  0,  0 },
+      {  1,  0, -2,  0, -2,  0,-10,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -9, 17,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -4,  0,  0,  0,  0,  0, -2 },
+      {  1,  0, -2, -2, -2,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  1,  0, -1,  1, -1,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+
+   /* 441-450 */
+      {  0,  0,  2, -2,  2,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0,  0,  1,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0, -5,  7,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  2, -2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  4, -5,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  3, -4,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,-10,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0, -4,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0, -5,  0,  0,  0, -2 },
+
+   /* 451-460 */
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -5,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -2,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -2,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -3,  0,  0,  0,  0,  0,  1 },
+      {  1,  0,  0, -2,  0,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -7,  4,  0,  0,  0,  0,  0 },
+      {  2,  0,  2,  0,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1, -1,  0,  0, -1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  1,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-10,  0,  0,  0,  0, -2 },
+
+   /* 461-470 */
+      {  1,  0,  0, -1,  1,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -3,  0,  3,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0, -5,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  1, -3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -4,  6,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  0,  0, -1,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -5,  6,  0,  0,  0,  0,  0,  0 },
+
+   /* 471-480 */
+      {  0,  0,  0,  0,  1,  0,  3, -4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7,-10,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  5, -5,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  4, -5,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  3, -8,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  2, -5,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  7, -9,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  7, -8,  0,  0,  0,  0,  2 },
+
+   /* 481-490 */
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -8,  3,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, -2,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -4,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -1,  0,  0,  0, -1 },
+      {  2,  0,  0, -2, -1,  0,  0, -6,  8,  0,  0,  0,  0,  0 },
+      {  2,  0, -1, -1,  1,  0,  0,  3, -7,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -7,  9,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0,  0, -1 },
+
+   /* 491-500 */
+      {  0,  0,  1, -1,  2,  0, -8, 12,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  2, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7, -8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  1,  0,  0, -5,  6,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2, -1,  0,  0, -2,  0,  3, -1,  0,  0,  0 },
+      {  1,  0,  1,  1,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  1,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  1,  0,  0, -2, -1,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+
+   /* 501-510 */
+      {  1,  0,  0, -1, -1,  0,  0, -3,  4,  0,  0,  0,  0,  0 },
+      {  1,  0, -1,  0, -1,  0, -3,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -4,  4,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0, -8, 11,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0,  0,  0, -9, 13,  0,  0,  0,  0,  0 },
+      {  0,  0,  1,  1,  2,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0,  1, -4,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0,  0, -1,  0,  1, -3,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0,  7,-13,  0,  0,  0,  0,  0 },
+
+   /* 511-520 */
+      {  0,  0,  0,  0,  1,  0,  0,  2,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  1,  0, -4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  7,-11,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  6, -6,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  6, -4,  0,  0,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  4, -2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -4,  0,  0,  0,  0,  0,  1 },
+
+   /* 521-530 */
+      {  0,  0,  0,  0,  0,  0,  1, -4,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  9,-17,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  7, -7,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  3,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  3,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -8,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4, -7,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  0,  1 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -4,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+
+   /* 531-540 */
+      {  2,  0,  0, -2,  0,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0, -1,  1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0, 17,-16,  0, -2,  0,  0,  0,  0 },
+      {  1,  0,  0, -1,  0,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  6, -9,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -4,  0,  0,  0,  0 },
+
+   /* 541-550 */
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, -2, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  1,  0,  0,  0,  0,  2 },
+      {  2,  0,  0, -2,  0,  0,  0, -4,  4,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  2,  2,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+
+   /* 551-560 */
+      {  1,  0,  0, -2,  0,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0,  0, -4,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1,  1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  3, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -2,  2,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  0,  1,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0, -4,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  2,  0,  0,  0, -1,  0,  1,  0,  0,  0,  0 },
+
+   /* 561-570 */
+      {  0,  0,  0,  0,  0,  0,  8, -9,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  3, -5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  0 },
+      {  2,  0, -2, -2, -2,  0,  0, -2,  0,  2,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  1,  0,-10,  3,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0, -1,  0,-10,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0,  2, -3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0,  2, -2,  0,  0,  0,  0,  0,  0 },
+
+   /* 571-580 */
+      {  0,  0,  2,  0,  2,  0, -2,  3,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  0,  2,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  2,  0,  0,  0,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0,  0, -1,  0,  2,  0,  0,  0,  0 },
+      {  2,  0,  2, -2,  2,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  2,  0,  1, -3,  1,  0, -6,  7,  0,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  2, -5,  0,  0,  0,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  5, -5,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  1,  5,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  0,  5,  0,  0,  0 },
+
+   /* 581-590 */
+      {  2,  0,  0, -2,  0,  0,  0, -2,  0,  0,  2,  0,  0,  0 },
+      {  2,  0,  0, -2,  0,  0, -4,  4,  0,  0,  0,  0,  0,  0 },
+      {  2,  0, -2,  0, -2,  0,  0,  5, -9,  0,  0,  0,  0,  0 },
+      {  2,  0, -1, -1,  0,  0,  0, -1,  0,  3,  0,  0,  0,  0 },
+      {  1,  0,  2,  0,  2,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  2,  0,  2,  0,  0,  4, -8,  3,  0,  0,  0,  0 },
+      {  1,  0,  2,  0,  2,  0,  0, -4,  8, -3,  0,  0,  0,  0 },
+      {  1,  0,  2,  0,  2,  0, -1,  1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  2, -2,  2,  0, -3,  3,  0,  0,  0,  0,  0,  0 },
+      {  1,  0,  0,  0,  0,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+
+   /* 591-600 */
+      {  1,  0,  0,  0,  0,  0,  0, -2,  0,  3,  0,  0,  0,  0 },
+      {  1,  0,  0, -2,  0,  0,  0,  2,  0, -2,  0,  0,  0,  0 },
+      {  1,  0, -2, -2, -2,  0,  0,  1,  0, -1,  0,  0,  0,  0 },
+      {  1,  0, -1,  1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  1,  0, -1, -1,  0,  0,  0,  8,-15,  0,  0,  0,  0,  0 },
+      {  0,  0,  2,  2,  2,  0,  0,  2,  0, -2,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  1, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0, -2,  0,  1,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  1,  0,  0,-10, 15,  0,  0,  0,  0,  0 },
+      {  0,  0,  2, -2,  0, -1,  0,  2,  0,  0,  0,  0,  0,  0 },
+
+   /* 601-610 */
+      {  0,  0,  1, -1,  2,  0,  0, -1,  0,  0, -1,  0,  0,  0 },
+      {  0,  0,  1, -1,  2,  0, -3,  4,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -4,  6,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  1,  0, -1,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0,  0, -1,  0,  0, -2,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1,  0,  0, -1,  0,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  1, -1, -1,  0, -5,  7,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  2,  0,  0,  0,  2,  0, -2,  0,  0,  0,  0 },
+
+   /* 611-620 */
+      {  0,  0,  0,  2,  0,  0, -2,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  2,  0, -3,  5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  1,  0, -1,  2,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  9,-13,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  8,-14,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  8,-11,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  6, -9,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6, -8,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  6, -7,  0,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  0, -2 },
+
+   /* 621-630 */
+      {  0,  0,  0,  0,  0,  0,  5, -6, -4,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  5, -4,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  4, -8,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  4, -5,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  3, -3,  0,  2,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  3, -1,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  7,-12,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6, -9,  0,  0,  0,  0, -2 },
+
+   /* 631-640 */
+      {  0,  0,  0,  0,  0,  0,  0,  6, -8,  1,  5,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6, -4,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  6,-10,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,  0, -4,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -9,  0,  0,  0,  0, -1 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -8,  3,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -7,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5, -6,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,-16,  4,  5,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  5,-13,  0,  0,  0,  0, -2 },
+
+   /* 641-650 */
+      {  0,  0,  0,  0,  0,  0,  0,  3,  0, -5,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -9,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  3, -7,  0,  0,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  2,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, -3,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  2, -8,  1,  5,  0,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  1, -5,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  2,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, -3,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  1,  0, -3,  5,  0,  0,  0 },
+
+   /* 651-NFPL */
+      {  0,  0,  0,  0,  0,  0,  0,  1, -3,  0,  0,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, -6,  3,  0, -2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, -2,  0,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2 },
+      {  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0 }
+   };
+
+/* Number of frequencies:  planetary */
+   static const int NFPL = (int) (sizeof mfapl / sizeof (int) / 14);
+
+/* Pointers into amplitudes array, one pointer per frequency */
+   static const int nc[] = {
+
+   /* 1-100 */
+       1,    21,    37,    51,    65,    79,    91,   103,   115,   127,
+     139,   151,   163,   172,   184,   196,   207,   219,   231,   240,
+     252,   261,   273,   285,   297,   309,   318,   327,   339,   351,
+     363,   372,   384,   396,   405,   415,   423,   435,   444,   452,
+     460,   467,   474,   482,   490,   498,   506,   513,   521,   528,
+     536,   543,   551,   559,   566,   574,   582,   590,   597,   605,
+     613,   620,   628,   636,   644,   651,   658,   666,   674,   680,
+     687,   695,   702,   710,   717,   725,   732,   739,   746,   753,
+     760,   767,   774,   782,   790,   798,   805,   812,   819,   826,
+     833,   840,   846,   853,   860,   867,   874,   881,   888,   895,
+
+   /* 101-200 */
+     901,   908,   914,   921,   928,   934,   941,   948,   955,   962,
+     969,   976,   982,   989,   996,  1003,  1010,  1017,  1024,  1031,
+    1037,  1043,  1050,  1057,  1064,  1071,  1078,  1084,  1091,  1098,
+    1104,  1112,  1118,  1124,  1131,  1138,  1145,  1151,  1157,  1164,
+    1171,  1178,  1185,  1192,  1199,  1205,  1212,  1218,  1226,  1232,
+    1239,  1245,  1252,  1259,  1266,  1272,  1278,  1284,  1292,  1298,
+    1304,  1310,  1316,  1323,  1329,  1335,  1341,  1347,  1353,  1359,
+    1365,  1371,  1377,  1383,  1389,  1396,  1402,  1408,  1414,  1420,
+    1426,  1434,  1440,  1446,  1452,  1459,  1465,  1471,  1477,  1482,
+    1488,  1493,  1499,  1504,  1509,  1514,  1520,  1527,  1532,  1538,
+
+   /* 201-300 */
+    1543,  1548,  1553,  1558,  1564,  1569,  1574,  1579,  1584,  1589,
+    1594,  1596,  1598,  1600,  1602,  1605,  1608,  1610,  1612,  1617,
+    1619,  1623,  1625,  1627,  1629,  1632,  1634,  1640,  1642,  1644,
+    1646,  1648,  1650,  1652,  1654,  1658,  1660,  1662,  1664,  1668,
+    1670,  1672,  1673,  1675,  1679,  1681,  1683,  1684,  1686,  1688,
+    1690,  1693,  1695,  1697,  1701,  1703,  1705,  1707,  1709,  1711,
+    1712,  1715,  1717,  1721,  1723,  1725,  1727,  1729,  1731,  1733,
+    1735,  1737,  1739,  1741,  1743,  1745,  1747,  1749,  1751,  1753,
+    1755,  1757,  1759,  1761,  1762,  1764,  1766,  1768,  1769,  1771,
+    1773,  1775,  1777,  1779,  1781,  1783,  1785,  1787,  1788,  1790,
+
+   /* 301-400 */
+    1792,  1794,  1796,  1798,  1800,  1802,  1804,  1806,  1807,  1809,
+    1811,  1815,  1817,  1819,  1821,  1823,  1825,  1827,  1829,  1831,
+    1833,  1835,  1837,  1839,  1840,  1842,  1844,  1848,  1850,  1852,
+    1854,  1856,  1858,  1859,  1860,  1862,  1864,  1866,  1868,  1869,
+    1871,  1873,  1875,  1877,  1879,  1881,  1883,  1885,  1887,  1889,
+    1891,  1892,  1896,  1898,  1900,  1901,  1903,  1905,  1907,  1909,
+    1910,  1911,  1913,  1915,  1919,  1921,  1923,  1927,  1929,  1931,
+    1933,  1935,  1937,  1939,  1943,  1945,  1947,  1948,  1949,  1951,
+    1953,  1955,  1957,  1958,  1960,  1962,  1964,  1966,  1968,  1970,
+    1971,  1973,  1974,  1975,  1977,  1979,  1980,  1981,  1982,  1984,
+
+   /* 401-500 */
+    1986,  1988,  1990,  1992,  1994,  1995,  1997,  1999,  2001,  2003,
+    2005,  2007,  2008,  2009,  2011,  2013,  2015,  2017,  2019,  2021,
+    2023,  2024,  2025,  2027,  2029,  2031,  2033,  2035,  2037,  2041,
+    2043,  2045,  2046,  2047,  2049,  2051,  2053,  2055,  2056,  2057,
+    2059,  2061,  2063,  2065,  2067,  2069,  2070,  2071,  2072,  2074,
+    2076,  2078,  2080,  2082,  2084,  2086,  2088,  2090,  2092,  2094,
+    2095,  2096,  2097,  2099,  2101,  2105,  2106,  2107,  2108,  2109,
+    2110,  2111,  2113,  2115,  2119,  2121,  2123,  2125,  2127,  2129,
+    2131,  2133,  2135,  2136,  2137,  2139,  2141,  2143,  2145,  2147,
+    2149,  2151,  2153,  2155,  2157,  2159,  2161,  2163,  2165,  2167,
+
+   /* 501-600 */
+    2169,  2171,  2173,  2175,  2177,  2179,  2181,  2183,  2185,  2186,
+    2187,  2188,  2192,  2193,  2195,  2197,  2199,  2201,  2203,  2205,
+    2207,  2209,  2211,  2213,  2217,  2219,  2221,  2223,  2225,  2227,
+    2229,  2231,  2233,  2234,  2235,  2236,  2237,  2238,  2239,  2240,
+    2241,  2244,  2246,  2248,  2250,  2252,  2254,  2256,  2258,  2260,
+    2262,  2264,  2266,  2268,  2270,  2272,  2274,  2276,  2278,  2280,
+    2282,  2284,  2286,  2288,  2290,  2292,  2294,  2296,  2298,  2300,
+    2302,  2303,  2304,  2305,  2306,  2307,  2309,  2311,  2313,  2315,
+    2317,  2319,  2321,  2323,  2325,  2327,  2329,  2331,  2333,  2335,
+    2337,  2341,  2343,  2345,  2347,  2349,  2351,  2352,  2355,  2356,
+
+   /* 601-700 */
+    2357,  2358,  2359,  2361,  2363,  2364,  2365,  2366,  2367,  2368,
+    2369,  2370,  2371,  2372,  2373,  2374,  2376,  2378,  2380,  2382,
+    2384,  2385,  2386,  2387,  2388,  2389,  2390,  2391,  2392,  2393,
+    2394,  2395,  2396,  2397,  2398,  2399,  2400,  2401,  2402,  2403,
+    2404,  2405,  2406,  2407,  2408,  2409,  2410,  2411,  2412,  2413,
+    2414,  2415,  2417,  2418,  2430,  2438,  2445,  2453,  2460,  2468,
+    2474,  2480,  2488,  2496,  2504,  2512,  2520,  2527,  2535,  2543,
+    2550,  2558,  2566,  2574,  2580,  2588,  2596,  2604,  2612,  2619,
+    2627,  2634,  2642,  2648,  2656,  2664,  2671,  2679,  2685,  2693,
+    2701,  2709,  2717,  2725,  2733,  2739,  2747,  2753,  2761,  2769,
+
+   /* 701-800 */
+    2777,  2785,  2793,  2801,  2809,  2817,  2825,  2833,  2841,  2848,
+    2856,  2864,  2872,  2878,  2884,  2892,  2898,  2906,  2914,  2922,
+    2930,  2938,  2944,  2952,  2958,  2966,  2974,  2982,  2988,  2996,
+    3001,  3009,  3017,  3025,  3032,  3039,  3045,  3052,  3059,  3067,
+    3069,  3076,  3083,  3090,  3098,  3105,  3109,  3111,  3113,  3120,
+    3124,  3128,  3132,  3136,  3140,  3144,  3146,  3150,  3158,  3161,
+    3165,  3166,  3168,  3172,  3176,  3180,  3182,  3185,  3189,  3193,
+    3194,  3197,  3200,  3204,  3208,  3212,  3216,  3219,  3221,  3222,
+    3226,  3230,  3234,  3238,  3242,  3243,  3247,  3251,  3254,  3258,
+    3262,  3266,  3270,  3274,  3275,  3279,  3283,  3287,  3289,  3293,
+
+   /* 801-900 */
+    3296,  3300,  3303,  3307,  3311,  3315,  3319,  3321,  3324,  3327,
+    3330,  3334,  3338,  3340,  3342,  3346,  3350,  3354,  3358,  3361,
+    3365,  3369,  3373,  3377,  3381,  3385,  3389,  3393,  3394,  3398,
+    3402,  3406,  3410,  3413,  3417,  3421,  3425,  3429,  3433,  3435,
+    3439,  3443,  3446,  3450,  3453,  3457,  3458,  3461,  3464,  3468,
+    3472,  3476,  3478,  3481,  3485,  3489,  3493,  3497,  3501,  3505,
+    3507,  3511,  3514,  3517,  3521,  3524,  3525,  3527,  3529,  3533,
+    3536,  3540,  3541,  3545,  3548,  3551,  3555,  3559,  3563,  3567,
+    3569,  3570,  3574,  3576,  3578,  3582,  3586,  3590,  3593,  3596,
+    3600,  3604,  3608,  3612,  3616,  3620,  3623,  3626,  3630,  3632,
+
+   /* 901-1000 */
+    3636,  3640,  3643,  3646,  3648,  3652,  3656,  3660,  3664,  3667,
+    3669,  3671,  3675,  3679,  3683,  3687,  3689,  3693,  3694,  3695,
+    3699,  3703,  3705,  3707,  3710,  3713,  3717,  3721,  3725,  3729,
+    3733,  3736,  3740,  3744,  3748,  3752,  3754,  3757,  3759,  3763,
+    3767,  3770,  3773,  3777,  3779,  3783,  3786,  3790,  3794,  3798,
+    3801,  3805,  3809,  3813,  3817,  3821,  3825,  3827,  3831,  3835,
+    3836,  3837,  3840,  3844,  3848,  3852,  3856,  3859,  3863,  3867,
+    3869,  3871,  3875,  3879,  3883,  3887,  3890,  3894,  3898,  3901,
+    3905,  3909,  3913,  3917,  3921,  3922,  3923,  3924,  3926,  3930,
+    3932,  3936,  3938,  3940,  3944,  3948,  3952,  3956,  3959,  3963,
+
+   /* 1001-1100 */
+    3965,  3969,  3973,  3977,  3979,  3981,  3982,  3986,  3989,  3993,
+    3997,  4001,  4004,  4006,  4009,  4012,  4016,  4020,  4024,  4026,
+    4028,  4032,  4036,  4040,  4044,  4046,  4050,  4054,  4058,  4060,
+    4062,  4063,  4064,  4068,  4071,  4075,  4077,  4081,  4083,  4087,
+    4089,  4091,  4095,  4099,  4101,  4103,  4105,  4107,  4111,  4115,
+    4119,  4123,  4127,  4129,  4131,  4135,  4139,  4141,  4143,  4145,
+    4149,  4153,  4157,  4161,  4165,  4169,  4173,  4177,  4180,  4183,
+    4187,  4191,  4195,  4198,  4201,  4205,  4209,  4212,  4213,  4216,
+    4217,  4221,  4223,  4226,  4230,  4234,  4236,  4240,  4244,  4248,
+    4252,  4256,  4258,  4262,  4264,  4266,  4268,  4270,  4272,  4276,
+
+   /* 1101-1200 */
+    4279,  4283,  4285,  4287,  4289,  4293,  4295,  4299,  4300,  4301,
+    4305,  4309,  4313,  4317,  4319,  4323,  4325,  4329,  4331,  4333,
+    4335,  4337,  4341,  4345,  4349,  4351,  4353,  4357,  4361,  4365,
+    4367,  4369,  4373,  4377,  4381,  4383,  4387,  4389,  4391,  4395,
+    4399,  4403,  4407,  4411,  4413,  4414,  4415,  4418,  4419,  4421,
+    4423,  4427,  4429,  4431,  4433,  4435,  4437,  4439,  4443,  4446,
+    4450,  4452,  4456,  4458,  4460,  4462,  4466,  4469,  4473,  4477,
+    4481,  4483,  4487,  4489,  4491,  4493,  4497,  4499,  4501,  4504,
+    4506,  4510,  4513,  4514,  4515,  4518,  4521,  4522,  4525,  4526,
+    4527,  4530,  4533,  4534,  4537,  4541,  4542,  4543,  4544,  4545,
+
+   /* 1201-1300 */
+    4546,  4547,  4550,  4553,  4554,  4555,  4558,  4561,  4564,  4567,
+    4568,  4571,  4574,  4575,  4578,  4581,  4582,  4585,  4586,  4588,
+    4590,  4592,  4596,  4598,  4602,  4604,  4608,  4612,  4613,  4616,
+    4619,  4622,  4623,  4624,  4625,  4626,  4629,  4632,  4633,  4636,
+    4639,  4640,  4641,  4642,  4643,  4644,  4645,  4648,  4649,  4650,
+    4651,  4652,  4653,  4656,  4657,  4660,  4661,  4664,  4667,  4670,
+    4671,  4674,  4675,  4676,  4677,  4678,  4681,  4682,  4683,  4684,
+    4687,  4688,  4689,  4692,  4693,  4696,  4697,  4700,  4701,  4702,
+    4703,  4704,  4707,  4708,  4711,  4712,  4715,  4716,  4717,  4718,
+    4719,  4720,  4721,  4722,  4723,  4726,  4729,  4730,  4733,  4736,
+
+   /* 1301-(NFLS+NFPL) */
+    4737,  4740,  4741,  4742,  4745,  4746,  4749,  4752,  4753
+   };
+
+/* Amplitude coefficients (microarcsec);  indexed using the nc array. */
+   static const double a[] = {
+
+   /* 1-105 */
+         -6844318.44,     9205236.26,1328.67,1538.18,      205833.11,
+           153041.79,       -3309.73, 853.32,2037.98,       -2301.27,
+       81.46, 120.56, -20.39, -15.22,   1.73,  -1.61,  -0.10,   0.11,
+       -0.02,  -0.02,     -523908.04,      573033.42,-544.75,-458.66,
+            12814.01,       11714.49, 198.97,-290.91, 155.74,-143.27,
+       -2.75,  -1.03,  -1.27,  -1.16,   0.00,  -0.01,      -90552.22,
+            97846.69, 111.23, 137.41,2187.91,2024.68,  41.44, -51.26,
+       26.92, -24.46,  -0.46,  -0.28,  -0.22,  -0.20,       82168.76,
+           -89618.24, -27.64, -29.05,       -2004.36,       -1837.32,
+      -36.07,  48.00, -24.43,  22.41,   0.47,   0.24,   0.20,   0.18,
+            58707.02,7387.02, 470.05,-192.40, 164.33,       -1312.21,
+     -179.73, -28.93, -17.36,  -1.83,  -0.50,   3.57,   0.00,   0.13,
+           -20557.78,       22438.42, -20.84, -17.40, 501.82, 459.68,
+       59.20, -67.30,   6.08,  -5.61,  -1.36,  -1.19,       28288.28,
+     -674.99, -34.69,  35.80, -15.07,-632.54, -11.19,   0.78,  -8.41,
+        0.17,   0.01,   0.07,      -15406.85,       20069.50,  15.12,
+
+   /* 106-219 */
+       31.80, 448.76, 344.50,  -5.77,   1.41,   4.59,  -5.02,   0.17,
+        0.24,      -11991.74,       12902.66,  32.46,  36.70, 288.49,
+      268.14,   5.70,  -7.06,   3.57,  -3.23,  -0.06,  -0.04,
+            -8584.95,       -9592.72,   4.42, -13.20,-214.50, 192.06,
+       23.87,  29.83,   2.54,   2.40,   0.60,  -0.48,5095.50,
+            -6918.22,   7.19,   3.92,-154.91,-113.94,   2.86,  -1.04,
+       -1.52,   1.73,  -0.07,  -0.10,       -4910.93,       -5331.13,
+        0.76,   0.40,-119.21, 109.81,   2.16,   3.20,   1.46,   1.33,
+        0.04,  -0.02,       -6245.02,-123.48,  -6.68,  -8.20,  -2.76,
+      139.64,   2.71,   0.15,   1.86,2511.85,       -3323.89,   1.07,
+       -0.90, -74.33, -56.17,   1.16,  -0.01,  -0.75,   0.83,  -0.02,
+       -0.04,2307.58,3143.98,  -7.52,   7.50,  70.31, -51.60,   1.46,
+        0.16,  -0.69,  -0.79,   0.02,  -0.05,2372.58,2554.51,   5.93,
+       -6.60,  57.12, -53.05,  -0.96,  -1.24,  -0.71,  -0.64,  -0.01,
+            -2053.16,2636.13,   5.13,   7.80,  58.94,  45.91,  -0.42,
+       -0.12,   0.61,  -0.66,   0.02,   0.03,       -1825.49,
+
+   /* 220-339 */
+            -2423.59,   1.23,  -2.00, -54.19,  40.82,  -1.07,  -1.02,
+        0.54,   0.61,  -0.04,   0.04,2521.07,-122.28,  -5.97,   2.90,
+       -2.73, -56.37,  -0.82,   0.13,  -0.75,       -1534.09,1645.01,
+        6.29,   6.80,  36.78,  34.30,   0.92,  -1.25,   0.46,  -0.41,
+       -0.02,  -0.01,1898.27,  47.70,  -0.72,   2.50,   1.07, -42.45,
+       -0.94,   0.02,  -0.56,       -1292.02,       -1387.00,   0.00,
+        0.00, -31.01,  28.89,   0.68,   0.00,   0.38,   0.35,  -0.01,
+       -0.01,       -1234.96,1323.81,   5.21,   5.90,  29.60,  27.61,
+        0.74,  -1.22,   0.37,  -0.33,  -0.02,  -0.01,1137.48,
+            -1233.89,  -0.04,  -0.30, -27.59, -25.43,  -0.61,   1.00,
+       -0.34,   0.31,   0.01,   0.01,-813.13,       -1075.60,   0.40,
+        0.30, -24.05,  18.18,  -0.40,  -0.01,   0.24,   0.27,  -0.01,
+        0.01,1163.22, -60.90,  -2.94,   1.30,  -1.36, -26.01,  -0.58,
+        0.07,  -0.35,1029.70, -55.55,  -2.63,   1.10,  -1.25, -23.02,
+       -0.52,   0.06,  -0.31,-556.26, 852.85,   3.16,  -4.48,  19.06,
+       12.44,  -0.81,  -0.27,   0.17,  -0.21,   0.00,   0.02,-603.52,
+
+   /* 340-467 */
+     -800.34,   0.44,   0.10, -17.90,  13.49,  -0.08,  -0.01,   0.18,
+        0.20,  -0.01,   0.01,-628.24, 684.99,  -0.64,  -0.50,  15.32,
+       14.05,   3.18,  -4.19,   0.19,  -0.17,  -0.09,  -0.07,-866.48,
+      -16.26,   0.52,  -1.30,  -0.36,  19.37,   0.43,  -0.01,   0.26,
+     -512.37, 695.54,  -1.47,  -1.40,  15.55,  11.46,  -0.16,   0.03,
+        0.15,  -0.17,   0.01,   0.01, 506.65, 643.75,   2.54,  -2.62,
+       14.40, -11.33,  -0.77,  -0.06,  -0.15,  -0.16,   0.00,   0.01,
+      664.57,  16.81,  -0.40,   1.00,   0.38, -14.86,  -3.71,  -0.09,
+       -0.20, 405.91, 522.11,   0.99,  -1.50,  11.67,  -9.08,  -0.25,
+       -0.02,  -0.12,  -0.13,-305.78, 326.60,   1.75,   1.90,   7.30,
+        6.84,   0.20,  -0.04, 300.99,-325.03,  -0.44,  -0.50,  -7.27,
+       -6.73,  -1.01,   0.01,   0.00,   0.08,   0.00,   0.02, 438.51,
+       10.47,  -0.56,  -0.20,   0.24,  -9.81,  -0.24,   0.01,  -0.13,
+     -264.02, 335.24,   0.99,   1.40,   7.49,   5.90,  -0.27,  -0.02,
+      284.09, 307.03,   0.32,  -0.40,   6.87,  -6.35,  -0.99,  -0.01,
+     -250.54, 327.11,   0.08,   0.40,   7.31,   5.60,  -0.30, 230.72,
+
+   /* 468-595 */
+     -304.46,   0.08,  -0.10,  -6.81,  -5.16,   0.27, 229.78, 304.17,
+       -0.60,   0.50,   6.80,  -5.14,   0.33,   0.01, 256.30,-276.81,
+       -0.28,  -0.40,  -6.19,  -5.73,  -0.14,   0.01,-212.82, 269.45,
+        0.84,   1.20,   6.02,   4.76,   0.14,  -0.02, 196.64, 272.05,
+       -0.84,   0.90,   6.08,  -4.40,   0.35,   0.02, 188.95, 272.22,
+       -0.12,   0.30,   6.09,  -4.22,   0.34,-292.37,  -5.10,  -0.32,
+       -0.40,  -0.11,   6.54,   0.14,   0.01, 161.79,-220.67,   0.24,
+        0.10,  -4.93,  -3.62,  -0.08, 261.54, -19.94,  -0.95,   0.20,
+       -0.45,  -5.85,  -0.13,   0.02, 142.16,-190.79,   0.20,   0.10,
+       -4.27,  -3.18,  -0.07, 187.95,  -4.11,  -0.24,   0.30,  -0.09,
+       -4.20,  -0.09,   0.01,   0.00,   0.00, -79.08, 167.90,   0.04,
+        0.00,   3.75,   1.77, 121.98, 131.04,  -0.08,   0.10,   2.93,
+       -2.73,  -0.06,-172.95,  -8.11,  -0.40,  -0.20,  -0.18,   3.87,
+        0.09,   0.01,-160.15, -55.30, -14.04,  13.90,  -1.23,   3.58,
+        0.40,   0.31,-115.40, 123.20,   0.60,   0.70,   2.75,   2.58,
+        0.08,  -0.01,-168.26,  -2.00,   0.20,  -0.20,  -0.04,   3.76,
+
+   /* 596-723 */
+        0.08,-114.49, 123.20,   0.32,   0.40,   2.75,   2.56,   0.07,
+       -0.01, 112.14, 120.70,   0.28,  -0.30,   2.70,  -2.51,  -0.07,
+       -0.01, 161.34,   4.03,   0.20,   0.20,   0.09,  -3.61,  -0.08,
+       91.31, 126.64,  -0.40,   0.40,   2.83,  -2.04,  -0.04,   0.01,
+      105.29, 112.90,   0.44,  -0.50,   2.52,  -2.35,  -0.07,  -0.01,
+       98.69,-106.20,  -0.28,  -0.30,  -2.37,  -2.21,  -0.06,   0.01,
+       86.74,-112.94,  -0.08,  -0.20,  -2.53,  -1.94,  -0.05,-134.81,
+        3.51,   0.20,  -0.20,   0.08,   3.01,   0.07,  79.03, 107.31,
+       -0.24,   0.20,   2.40,  -1.77,  -0.04,   0.01, 132.81, -10.77,
+       -0.52,   0.10,  -0.24,  -2.97,  -0.07,   0.01,-130.31,  -0.90,
+        0.04,   0.00,   0.00,   2.91, -78.56,  85.32,   0.00,   0.00,
+        1.91,   1.76,   0.04,   0.00,   0.00, -41.53,  89.10,   0.02,
+        0.00,   1.99,   0.93,  66.03, -71.00,  -0.20,  -0.20,  -1.59,
+       -1.48,  -0.04,  60.50,  64.70,   0.36,  -0.40,   1.45,  -1.35,
+       -0.04,  -0.01, -52.27, -70.01,   0.00,   0.00,  -1.57,   1.17,
+        0.03, -52.95,  66.29,   0.32,   0.40,   1.48,   1.18,   0.04,
+
+   /* 724-851 */
+       -0.01,  51.02,  67.25,   0.00,   0.00,   1.50,  -1.14,  -0.03,
+      -55.66, -60.92,   0.16,  -0.20,  -1.36,   1.24,   0.03, -54.81,
+      -59.20,  -0.08,   0.20,  -1.32,   1.23,   0.03,  51.32, -55.60,
+        0.00,   0.00,  -1.24,  -1.15,  -0.03,  48.29,  51.80,   0.20,
+       -0.20,   1.16,  -1.08,  -0.03, -45.59, -49.00,  -0.12,   0.10,
+       -1.10,   1.02,   0.03,  40.54, -52.69,  -0.04,  -0.10,  -1.18,
+       -0.91,  -0.02, -40.58, -49.51,  -1.00,   1.00,  -1.11,   0.91,
+        0.04,   0.02, -43.76,  46.50,   0.36,   0.40,   1.04,   0.98,
+        0.03,  -0.01,  62.65,  -5.00,  -0.24,   0.00,  -0.11,  -1.40,
+       -0.03,   0.01, -38.57,  49.59,   0.08,   0.10,   1.11,   0.86,
+        0.02, -33.22, -44.04,   0.08,  -0.10,  -0.98,   0.74,   0.02,
+       37.15, -39.90,  -0.12,  -0.10,  -0.89,  -0.83,  -0.02,  36.68,
+      -39.50,  -0.04,  -0.10,  -0.88,  -0.82,  -0.02, -53.22,  -3.91,
+       -0.20,   0.00,  -0.09,   1.19,   0.03,  32.43, -42.19,  -0.04,
+       -0.10,  -0.94,  -0.73,  -0.02, -51.00,  -2.30,  -0.12,  -0.10,
+        0.00,   1.14, -29.53, -39.11,   0.04,   0.00,  -0.87,   0.66,
+
+   /* 852-979 */
+        0.02,  28.50, -38.92,  -0.08,  -0.10,  -0.87,  -0.64,  -0.02,
+       26.54,  36.95,  -0.12,   0.10,   0.83,  -0.59,  -0.01,  26.54,
+       34.59,   0.04,  -0.10,   0.77,  -0.59,  -0.02,  28.35, -32.55,
+       -0.16,   0.20,  -0.73,  -0.63,  -0.01, -28.00,  30.40,   0.00,
+        0.00,   0.68,   0.63,   0.01, -27.61,  29.40,   0.20,   0.20,
+        0.66,   0.62,   0.02,  40.33,   0.40,  -0.04,   0.10,   0.00,
+       -0.90, -23.28,  31.61,  -0.08,  -0.10,   0.71,   0.52,   0.01,
+       37.75,   0.80,   0.04,   0.10,   0.00,  -0.84,  23.66,  25.80,
+        0.00,   0.00,   0.58,  -0.53,  -0.01,  21.01, -27.91,   0.00,
+        0.00,  -0.62,  -0.47,  -0.01, -34.81,   2.89,   0.04,   0.00,
+        0.00,   0.78, -23.49, -25.31,   0.00,   0.00,  -0.57,   0.53,
+        0.01, -23.47,  25.20,   0.16,   0.20,   0.56,   0.52,   0.02,
+       19.58,  27.50,  -0.12,   0.10,   0.62,  -0.44,  -0.01, -22.67,
+      -24.40,  -0.08,   0.10,  -0.55,   0.51,   0.01, -19.97,  25.00,
+        0.12,   0.20,   0.56,   0.45,   0.01,  21.28, -22.80,  -0.08,
+       -0.10,  -0.51,  -0.48,  -0.01, -30.47,   0.91,   0.04,   0.00,
+
+   /* 980-1107 */
+        0.00,   0.68,  18.58,  24.00,   0.04,  -0.10,   0.54,  -0.42,
+       -0.01, -18.02,  24.40,  -0.04,  -0.10,   0.55,   0.40,   0.01,
+       17.74,  22.50,   0.08,  -0.10,   0.50,  -0.40,  -0.01, -19.41,
+       20.70,   0.08,   0.10,   0.46,   0.43,   0.01, -18.64,  20.11,
+        0.00,   0.00,   0.45,   0.42,   0.01, -16.75,  21.60,   0.04,
+        0.10,   0.48,   0.37,   0.01, -18.42, -20.00,   0.00,   0.00,
+       -0.45,   0.41,   0.01, -26.77,   1.41,   0.08,   0.00,   0.00,
+        0.60, -26.17,  -0.19,   0.00,   0.00,   0.00,   0.59, -15.52,
+       20.51,   0.00,   0.00,   0.46,   0.35,   0.01, -25.42,  -1.91,
+       -0.08,   0.00,  -0.04,   0.57,   0.45, -17.42,  18.10,   0.00,
+        0.00,   0.40,   0.39,   0.01,  16.39, -17.60,  -0.08,  -0.10,
+       -0.39,  -0.37,  -0.01, -14.37,  18.91,   0.00,   0.00,   0.42,
+        0.32,   0.01,  23.39,  -2.40,  -0.12,   0.00,   0.00,  -0.52,
+       14.32, -18.50,  -0.04,  -0.10,  -0.41,  -0.32,  -0.01,  15.69,
+       17.08,   0.00,   0.00,   0.38,  -0.35,  -0.01, -22.99,   0.50,
+        0.04,   0.00,   0.00,   0.51,   0.00,   0.00,  14.47, -17.60,
+
+   /* 1108-1235 */
+       -0.01,   0.00,  -0.39,  -0.32, -13.33,  18.40,  -0.04,  -0.10,
+        0.41,   0.30,  22.47,  -0.60,  -0.04,   0.00,   0.00,  -0.50,
+      -12.78, -17.41,   0.04,   0.00,  -0.39,   0.29,   0.01, -14.10,
+      -15.31,   0.04,   0.00,  -0.34,   0.32,   0.01,  11.98,  16.21,
+       -0.04,   0.00,   0.36,  -0.27,  -0.01,  19.65,  -1.90,  -0.08,
+        0.00,   0.00,  -0.44,  19.61,  -1.50,  -0.08,   0.00,   0.00,
+       -0.44,  13.41, -14.30,  -0.04,  -0.10,  -0.32,  -0.30,  -0.01,
+      -13.29,  14.40,   0.00,   0.00,   0.32,   0.30,   0.01,  11.14,
+      -14.40,  -0.04,   0.00,  -0.32,  -0.25,  -0.01,  12.24, -13.38,
+        0.04,   0.00,  -0.30,  -0.27,  -0.01,  10.07, -13.81,   0.04,
+        0.00,  -0.31,  -0.23,  -0.01,  10.46,  13.10,   0.08,  -0.10,
+        0.29,  -0.23,  -0.01,  16.55,  -1.71,  -0.08,   0.00,   0.00,
+       -0.37,   9.75, -12.80,   0.00,   0.00,  -0.29,  -0.22,  -0.01,
+        9.11,  12.80,   0.00,   0.00,   0.29,  -0.20,   0.00,   0.00,
+       -6.44, -13.80,   0.00,   0.00,  -0.31,   0.14,  -9.19, -12.00,
+        0.00,   0.00,  -0.27,   0.21, -10.30,  10.90,   0.08,   0.10,
+
+   /* 1236-1363 */
+        0.24,   0.23,   0.01,  14.92,  -0.80,  -0.04,   0.00,   0.00,
+       -0.33,  10.02, -10.80,   0.00,   0.00,  -0.24,  -0.22,  -0.01,
+       -9.75,  10.40,   0.04,   0.00,   0.23,   0.22,   0.01,   9.67,
+      -10.40,  -0.04,   0.00,  -0.23,  -0.22,  -0.01,  -8.28, -11.20,
+        0.04,   0.00,  -0.25,   0.19,  13.32,  -1.41,  -0.08,   0.00,
+        0.00,  -0.30,   8.27,  10.50,   0.04,   0.00,   0.23,  -0.19,
+        0.00,   0.00,  13.13,   0.00,   0.00,   0.00,   0.00,  -0.29,
+      -12.93,   0.70,   0.04,   0.00,   0.00,   0.29,   7.91, -10.20,
+        0.00,   0.00,  -0.23,  -0.18,  -7.84, -10.00,  -0.04,   0.00,
+       -0.22,   0.18,   7.44,   9.60,   0.00,   0.00,   0.21,  -0.17,
+       -7.64,   9.40,   0.08,   0.10,   0.21,   0.17,   0.01, -11.38,
+        0.60,   0.04,   0.00,   0.00,   0.25,  -7.48,   8.30,   0.00,
+        0.00,   0.19,   0.17, -10.98,  -0.20,   0.00,   0.00,   0.00,
+        0.25,  10.98,   0.20,   0.00,   0.00,   0.00,  -0.25,   7.40,
+       -7.90,  -0.04,   0.00,  -0.18,  -0.17,  -6.09,   8.40,  -0.04,
+        0.00,   0.19,   0.14,  -6.94,  -7.49,   0.00,   0.00,  -0.17,
+
+   /* 1364-1491 */
+        0.16,   6.92,   7.50,   0.04,   0.00,   0.17,  -0.15,   6.20,
+        8.09,   0.00,   0.00,   0.18,  -0.14,  -6.12,   7.80,   0.04,
+        0.00,   0.17,   0.14,   5.85,  -7.50,   0.00,   0.00,  -0.17,
+       -0.13,  -6.48,   6.90,   0.08,   0.10,   0.15,   0.14,   0.01,
+        6.32,   6.90,   0.00,   0.00,   0.15,  -0.14,   5.61,  -7.20,
+        0.00,   0.00,  -0.16,  -0.13,   9.07,   0.00,   0.00,   0.00,
+        0.00,  -0.20,   5.25,   6.90,   0.00,   0.00,   0.15,  -0.12,
+       -8.47,  -0.40,   0.00,   0.00,   0.00,   0.19,   6.32,  -5.39,
+       -1.11,   1.10,  -0.12,  -0.14,   0.02,   0.02,   5.73,  -6.10,
+       -0.04,   0.00,  -0.14,  -0.13,   4.70,   6.60,  -0.04,   0.00,
+        0.15,  -0.11,  -4.90,  -6.40,   0.00,   0.00,  -0.14,   0.11,
+       -5.33,   5.60,   0.04,   0.10,   0.13,   0.12,   0.01,  -4.81,
+        6.00,   0.04,   0.00,   0.13,   0.11,   5.13,   5.50,   0.04,
+        0.00,   0.12,  -0.11,   4.50,   5.90,   0.00,   0.00,   0.13,
+       -0.10,  -4.22,   6.10,   0.00,   0.00,   0.14,  -4.53,   5.70,
+        0.00,   0.00,   0.13,   0.10,   4.18,   5.70,   0.00,   0.00,
+
+   /* 1492-1619 */
+        0.13,  -4.75,  -5.19,   0.00,   0.00,  -0.12,   0.11,  -4.06,
+        5.60,   0.00,   0.00,   0.13,  -3.98,   5.60,  -0.04,   0.00,
+        0.13,   4.02,  -5.40,   0.00,   0.00,  -0.12,   4.49,  -4.90,
+       -0.04,   0.00,  -0.11,  -0.10,  -3.62,  -5.40,  -0.16,   0.20,
+       -0.12,   0.00,   0.01,   4.38,   4.80,   0.00,   0.00,   0.11,
+       -6.40,  -0.10,   0.00,   0.00,   0.00,   0.14,  -3.98,   5.00,
+        0.04,   0.00,   0.11,  -3.82,  -5.00,   0.00,   0.00,  -0.11,
+       -3.71,   5.07,   0.00,   0.00,   0.11,   4.14,   4.40,   0.00,
+        0.00,   0.10,  -6.01,  -0.50,  -0.04,   0.00,   0.00,   0.13,
+       -4.04,   4.39,   0.00,   0.00,   0.10,   3.45,  -4.72,   0.00,
+        0.00,  -0.11,   3.31,   4.71,   0.00,   0.00,   0.11,   3.26,
+       -4.50,   0.00,   0.00,  -0.10,  -3.26,  -4.50,   0.00,   0.00,
+       -0.10,  -3.34,  -4.40,   0.00,   0.00,  -0.10,  -3.74,  -4.00,
+        3.70,   4.00,   3.34,  -4.30,   3.30,  -4.30,  -3.66,   3.90,
+        0.04,   3.66,   3.90,   0.04,  -3.62,  -3.90,  -3.61,   3.90,
+       -0.20,   5.30,   0.00,   0.00,   0.12,   3.06,   4.30,   3.30,
+
+   /* 1620-1747 */
+        4.00,   0.40,   0.20,   3.10,   4.10,  -3.06,   3.90,  -3.30,
+       -3.60,  -3.30,   3.36,   0.01,   3.14,   3.40,  -4.57,  -0.20,
+        0.00,   0.00,   0.00,   0.10,  -2.70,  -3.60,   2.94,  -3.20,
+       -2.90,   3.20,   2.47,  -3.40,   2.55,  -3.30,   2.80,  -3.08,
+        2.51,   3.30,  -4.10,   0.30,  -0.12,  -0.10,   4.10,   0.20,
+       -2.74,   3.00,   2.46,   3.23,  -3.66,   1.20,  -0.20,   0.20,
+        3.74,  -0.40,  -2.51,  -2.80,  -3.74,   2.27,  -2.90,   0.00,
+        0.00,  -2.50,   2.70,  -2.51,   2.60,  -3.50,   0.20,   3.38,
+       -2.22,  -2.50,   3.26,  -0.40,   1.95,  -2.60,   3.22,  -0.40,
+       -0.04,  -1.79,  -2.60,   1.91,   2.50,   0.74,   3.05,  -0.04,
+        0.08,   2.11,  -2.30,  -2.11,   2.20,  -1.87,  -2.40,   2.03,
+       -2.20,  -2.03,   2.20,   2.98,   0.00,   0.00,   2.98,  -1.71,
+        2.40,   2.94,  -0.10,  -0.12,   0.10,   1.67,   2.40,  -1.79,
+        2.30,  -1.79,   2.20,  -1.67,   2.20,   1.79,  -2.00,   1.87,
+       -1.90,   1.63,  -2.10,  -1.59,   2.10,   1.55,  -2.10,  -1.55,
+        2.10,  -2.59,  -0.20,  -1.75,  -1.90,  -1.75,   1.90,  -1.83,
+
+   /* 1748-1875 */
+       -1.80,   1.51,   2.00,  -1.51,  -2.00,   1.71,   1.80,   1.31,
+        2.10,  -1.43,   2.00,   1.43,   2.00,  -2.43,  -1.51,   1.90,
+       -1.47,   1.90,   2.39,   0.20,  -2.39,   1.39,   1.90,   1.39,
+       -1.80,   1.47,  -1.60,   1.47,  -1.60,   1.43,  -1.50,  -1.31,
+        1.60,   1.27,  -1.60,  -1.27,   1.60,   1.27,  -1.60,   2.03,
+        1.35,   1.50,  -1.39,  -1.40,   1.95,  -0.20,  -1.27,   1.49,
+        1.19,   1.50,   1.27,   1.40,   1.15,   1.50,   1.87,  -0.10,
+       -1.12,  -1.50,   1.87,  -1.11,  -1.50,  -1.11,  -1.50,   0.00,
+        0.00,   1.19,   1.40,   1.27,  -1.30,  -1.27,  -1.30,  -1.15,
+        1.40,  -1.23,   1.30,  -1.23,  -1.30,   1.22,  -1.29,   1.07,
+       -1.40,   1.75,  -0.20,  -1.03,  -1.40,  -1.07,   1.20,  -1.03,
+        1.15,   1.07,   1.10,   1.51,  -1.03,   1.10,   1.03,  -1.10,
+        0.00,   0.00,  -1.03,  -1.10,   0.91,  -1.20,  -0.88,  -1.20,
+       -0.88,   1.20,  -0.95,   1.10,  -0.95,  -1.10,   1.43,  -1.39,
+        0.95,  -1.00,  -0.95,   1.00,  -0.80,   1.10,   0.91,  -1.00,
+       -1.35,   0.88,   1.00,  -0.83,   1.00,  -0.91,   0.90,   0.91,
+
+   /* 1876-2003 */
+        0.90,   0.88,  -0.90,  -0.76,  -1.00,  -0.76,   1.00,   0.76,
+        1.00,  -0.72,   1.00,   0.84,  -0.90,   0.84,   0.90,   1.23,
+        0.00,   0.00,  -0.52,  -1.10,  -0.68,   1.00,   1.19,  -0.20,
+        1.19,   0.76,   0.90,   1.15,  -0.10,   1.15,  -0.10,   0.72,
+       -0.90,  -1.15,  -1.15,   0.68,   0.90,  -0.68,   0.90,  -1.11,
+        0.00,   0.00,   0.20,   0.79,   0.80,  -1.11,  -0.10,   0.00,
+        0.00,  -0.48,  -1.00,  -0.76,  -0.80,  -0.72,  -0.80,  -1.07,
+       -0.10,   0.64,   0.80,  -0.64,  -0.80,   0.64,   0.80,   0.40,
+        0.60,   0.52,  -0.50,  -0.60,  -0.80,  -0.71,   0.70,  -0.99,
+        0.99,   0.56,   0.80,  -0.56,   0.80,   0.68,  -0.70,   0.68,
+        0.70,  -0.95,  -0.64,   0.70,   0.64,   0.70,  -0.60,   0.70,
+       -0.60,  -0.70,  -0.91,  -0.10,  -0.51,   0.76,  -0.91,  -0.56,
+        0.70,   0.88,   0.88,  -0.63,  -0.60,   0.55,  -0.60,  -0.80,
+        0.80,  -0.80,  -0.52,   0.60,   0.52,   0.60,   0.52,  -0.60,
+       -0.48,   0.60,   0.48,   0.60,   0.48,   0.60,  -0.76,   0.44,
+       -0.60,   0.52,  -0.50,  -0.52,   0.50,   0.40,   0.60,  -0.40,
+
+   /* 2004-2131 */
+       -0.60,   0.40,  -0.60,   0.72,  -0.72,  -0.51,  -0.50,  -0.48,
+        0.50,   0.48,  -0.50,  -0.48,   0.50,  -0.48,   0.50,   0.48,
+       -0.50,  -0.48,  -0.50,  -0.68,  -0.68,   0.44,   0.50,  -0.64,
+       -0.10,  -0.64,  -0.10,  -0.40,   0.50,   0.40,   0.50,   0.40,
+        0.50,   0.00,   0.00,  -0.40,  -0.50,  -0.36,  -0.50,   0.36,
+       -0.50,   0.60,  -0.60,   0.40,  -0.40,   0.40,   0.40,  -0.40,
+        0.40,  -0.40,   0.40,  -0.56,  -0.56,   0.36,  -0.40,  -0.36,
+        0.40,   0.36,  -0.40,  -0.36,  -0.40,   0.36,   0.40,   0.36,
+        0.40,  -0.52,   0.52,   0.52,   0.32,   0.40,  -0.32,   0.40,
+       -0.32,   0.40,  -0.32,   0.40,   0.32,  -0.40,  -0.32,  -0.40,
+        0.32,  -0.40,   0.28,  -0.40,  -0.28,   0.40,   0.28,  -0.40,
+        0.28,   0.40,   0.48,  -0.48,   0.48,   0.36,  -0.30,  -0.36,
+       -0.30,   0.00,   0.00,   0.20,   0.40,  -0.44,   0.44,  -0.44,
+       -0.44,  -0.44,  -0.44,   0.32,  -0.30,   0.32,   0.30,   0.24,
+        0.30,  -0.12,  -0.10,  -0.28,   0.30,   0.28,   0.30,   0.28,
+        0.30,   0.28,  -0.30,   0.28,  -0.30,   0.28,  -0.30,   0.28,
+
+   /* 2132-2259 */
+        0.30,  -0.28,   0.30,   0.40,   0.40,  -0.24,   0.30,   0.24,
+       -0.30,   0.24,  -0.30,  -0.24,  -0.30,   0.24,   0.30,   0.24,
+       -0.30,  -0.24,   0.30,   0.24,  -0.30,  -0.24,  -0.30,   0.24,
+       -0.30,   0.24,   0.30,  -0.24,   0.30,  -0.24,   0.30,   0.20,
+       -0.30,   0.20,  -0.30,   0.20,  -0.30,   0.20,   0.30,   0.20,
+       -0.30,   0.20,  -0.30,   0.20,   0.30,   0.20,   0.30,  -0.20,
+       -0.30,   0.20,  -0.30,   0.20,  -0.30,  -0.36,  -0.36,  -0.36,
+       -0.04,   0.30,   0.12,  -0.10,  -0.32,  -0.24,   0.20,   0.24,
+        0.20,   0.20,  -0.20,  -0.20,  -0.20,  -0.20,  -0.20,   0.20,
+        0.20,   0.20,  -0.20,   0.20,   0.20,   0.20,   0.20,  -0.20,
+       -0.20,   0.00,   0.00,  -0.20,  -0.20,  -0.20,   0.20,  -0.20,
+        0.20,   0.20,  -0.20,  -0.20,  -0.20,   0.20,   0.20,   0.20,
+        0.20,   0.20,  -0.20,   0.20,  -0.20,   0.28,   0.28,   0.28,
+        0.28,   0.28,   0.28,  -0.28,   0.28,   0.12,   0.00,   0.24,
+        0.16,  -0.20,   0.16,  -0.20,   0.16,  -0.20,   0.16,   0.20,
+       -0.16,   0.20,   0.16,   0.20,  -0.16,   0.20,  -0.16,   0.20,
+
+   /* 2260-2387 */
+       -0.16,   0.20,   0.16,  -0.20,   0.16,   0.20,   0.16,  -0.20,
+       -0.16,   0.20,  -0.16,  -0.20,  -0.16,   0.20,   0.16,   0.20,
+        0.16,  -0.20,   0.16,  -0.20,   0.16,   0.20,   0.16,   0.20,
+        0.16,   0.20,  -0.16,  -0.20,   0.16,   0.20,  -0.16,   0.20,
+        0.16,   0.20,  -0.16,  -0.20,   0.16,  -0.20,   0.16,  -0.20,
+       -0.16,  -0.20,   0.24,  -0.24,  -0.24,   0.24,   0.24,   0.12,
+        0.20,   0.12,   0.20,  -0.12,  -0.20,   0.12,  -0.20,   0.12,
+       -0.20,  -0.12,   0.20,  -0.12,   0.20,  -0.12,  -0.20,   0.12,
+        0.20,   0.12,   0.20,   0.12,  -0.20,  -0.12,   0.20,   0.12,
+       -0.20,  -0.12,   0.20,   0.12,   0.20,   0.00,   0.00,  -0.12,
+        0.20,  -0.12,   0.20,   0.12,  -0.20,  -0.12,   0.20,   0.12,
+        0.20,   0.00,  -0.21,  -0.20,   0.00,   0.00,   0.20,  -0.20,
+       -0.20,  -0.20,   0.20,  -0.16,  -0.10,   0.00,   0.17,   0.16,
+        0.16,   0.16,   0.16,  -0.16,   0.16,   0.16,  -0.16,   0.16,
+       -0.16,   0.16,   0.12,   0.10,   0.12,  -0.10,  -0.12,   0.10,
+       -0.12,   0.10,   0.12,  -0.10,  -0.12,   0.12,  -0.12,   0.12,
+
+   /* 2388-2515 */
+       -0.12,   0.12,  -0.12,  -0.12,  -0.12,  -0.12,  -0.12,  -0.12,
+       -0.12,   0.12,   0.12,   0.12,   0.12,  -0.12,  -0.12,   0.12,
+        0.12,   0.12,  -0.12,   0.12,  -0.12,  -0.12,  -0.12,   0.12,
+       -0.12,  -0.12,   0.12,   0.00,   0.11,   0.11,-122.67, 164.70,
+      203.78, 273.50,   3.58,   2.74,   6.18,  -4.56,   0.00,  -0.04,
+        0.00,  -0.07,  57.44, -77.10,  95.82, 128.60,  -1.77,  -1.28,
+        2.85,  -2.14,  82.14,  89.50,   0.00,   0.00,   2.00,  -1.84,
+       -0.04,  47.73, -64.10,  23.79,  31.90,  -1.45,  -1.07,   0.69,
+       -0.53, -46.38,  50.50,   0.00,   0.00,   1.13,   1.04,   0.02,
+      -18.38,   0.00,  63.80,   0.00,   0.00,   0.41,   0.00,  -1.43,
+       59.07,   0.00,   0.00,   0.00,   0.00,  -1.32,  57.28,   0.00,
+        0.00,   0.00,   0.00,  -1.28, -48.65,   0.00,  -1.15,   0.00,
+        0.00,   1.09,   0.00,   0.03, -18.30,  24.60, -17.30, -23.20,
+        0.56,   0.41,  -0.51,   0.39, -16.91,  26.90,   8.43,  13.30,
+        0.60,   0.38,   0.31,  -0.19,   1.23,  -1.70, -19.13, -25.70,
+       -0.03,  -0.03,  -0.58,   0.43,  -0.72,   0.90, -17.34, -23.30,
+
+   /* 2516-2643 */
+        0.03,   0.02,  -0.52,   0.39, -19.49, -21.30,   0.00,   0.00,
+       -0.48,   0.44,   0.01,  20.57, -20.10,   0.64,   0.70,  -0.45,
+       -0.46,   0.00,  -0.01,   4.89,   5.90, -16.55,  19.90,   0.14,
+       -0.11,   0.44,   0.37,  18.22,  19.80,   0.00,   0.00,   0.44,
+       -0.41,  -0.01,   4.89,  -5.30, -16.51, -18.00,  -0.11,  -0.11,
+       -0.41,   0.37, -17.86,   0.00,  17.10,   0.00,   0.00,   0.40,
+        0.00,  -0.38,   0.32,   0.00,  24.42,   0.00,   0.00,  -0.01,
+        0.00,  -0.55, -23.79,   0.00,   0.00,   0.00,   0.00,   0.53,
+       14.72, -16.00,  -0.32,   0.00,  -0.36,  -0.33,  -0.01,   0.01,
+        3.34,  -4.50,  11.86,  15.90,  -0.11,  -0.07,   0.35,  -0.27,
+       -3.26,   4.40,  11.62,  15.60,   0.09,   0.07,   0.35,  -0.26,
+      -19.53,   0.00,   5.09,   0.00,   0.00,   0.44,   0.00,  -0.11,
+      -13.48,  14.70,   0.00,   0.00,   0.33,   0.30,   0.01,  10.86,
+      -14.60,   3.18,   4.30,  -0.33,  -0.24,   0.09,  -0.07, -11.30,
+      -15.10,   0.00,   0.00,  -0.34,   0.25,   0.01,   2.03,  -2.70,
+       10.82,  14.50,  -0.07,  -0.05,   0.32,  -0.24,  17.46,   0.00,
+
+   /* 2644-2771 */
+        0.00,   0.00,   0.00,  -0.39,  16.43,   0.00,   0.52,   0.00,
+        0.00,  -0.37,   0.00,  -0.01,   9.35,   0.00,  13.29,   0.00,
+        0.00,  -0.21,   0.00,  -0.30, -10.42,  11.40,   0.00,   0.00,
+        0.25,   0.23,   0.01,   0.44,   0.50, -10.38,  11.30,   0.02,
+       -0.01,   0.25,   0.23, -14.64,   0.00,   0.00,   0.00,   0.00,
+        0.33,   0.56,   0.80,  -8.67,  11.70,   0.02,  -0.01,   0.26,
+        0.19,  13.88,   0.00,  -2.47,   0.00,   0.00,  -0.31,   0.00,
+        0.06,  -1.99,   2.70,   7.72,  10.30,   0.06,   0.04,   0.23,
+       -0.17,  -0.20,   0.00,  13.05,   0.00,   0.00,   0.00,   0.00,
+       -0.29,   6.92,  -9.30,   3.34,   4.50,  -0.21,  -0.15,   0.10,
+       -0.07,  -6.60,   0.00,  10.70,   0.00,   0.00,   0.15,   0.00,
+       -0.24,  -8.04,  -8.70,   0.00,   0.00,  -0.19,   0.18, -10.58,
+        0.00,  -3.10,   0.00,   0.00,   0.24,   0.00,   0.07,  -7.32,
+        8.00,  -0.12,  -0.10,   0.18,   0.16,   1.63,   1.70,   6.96,
+       -7.60,   0.03,  -0.04,  -0.17,  -0.16,  -3.62,   0.00,   9.86,
+        0.00,   0.00,   0.08,   0.00,  -0.22,   0.20,  -0.20,  -6.88,
+
+   /* 2772-2899 */
+       -7.50,   0.00,   0.00,  -0.17,   0.15,  -8.99,   0.00,   4.02,
+        0.00,   0.00,   0.20,   0.00,  -0.09,  -1.07,   1.40,  -5.69,
+       -7.70,   0.03,   0.02,  -0.17,   0.13,   6.48,  -7.20,  -0.48,
+       -0.50,  -0.16,  -0.14,  -0.01,   0.01,   5.57,  -7.50,   1.07,
+        1.40,  -0.17,  -0.12,   0.03,  -0.02,   8.71,   0.00,   3.54,
+        0.00,   0.00,  -0.19,   0.00,  -0.08,   0.40,   0.00,   9.27,
+        0.00,   0.00,  -0.01,   0.00,  -0.21,  -6.13,   6.70,  -1.19,
+       -1.30,   0.15,   0.14,  -0.03,   0.03,   5.21,  -5.70,  -2.51,
+       -2.60,  -0.13,  -0.12,  -0.06,   0.06,   5.69,  -6.20,  -0.12,
+       -0.10,  -0.14,  -0.13,  -0.01,   2.03,  -2.70,   4.53,   6.10,
+       -0.06,  -0.05,   0.14,  -0.10,   5.01,   5.50,  -2.51,   2.70,
+        0.12,  -0.11,   0.06,   0.06,  -1.91,   2.60,  -4.38,  -5.90,
+        0.06,   0.04,  -0.13,   0.10,   4.65,  -6.30,   0.00,   0.00,
+       -0.14,  -0.10,  -5.29,   5.70,   0.00,   0.00,   0.13,   0.12,
+       -2.23,  -4.00,  -4.65,   4.20,  -0.09,   0.05,   0.10,   0.10,
+       -4.53,   6.10,   0.00,   0.00,   0.14,   0.10,   2.47,   2.70,
+
+   /* 2900-3027 */
+       -4.46,   4.90,   0.06,  -0.06,   0.11,   0.10,  -5.05,   5.50,
+        0.84,   0.90,   0.12,   0.11,   0.02,  -0.02,   4.97,  -5.40,
+       -1.71,   0.00,  -0.12,  -0.11,   0.00,   0.04,  -0.99,  -1.30,
+        4.22,  -5.70,  -0.03,   0.02,  -0.13,  -0.09,   0.99,   1.40,
+        4.22,  -5.60,   0.03,  -0.02,  -0.13,  -0.09,  -4.69,  -5.20,
+        0.00,   0.00,  -0.12,   0.10,  -3.42,   0.00,   6.09,   0.00,
+        0.00,   0.08,   0.00,  -0.14,  -4.65,  -5.10,   0.00,   0.00,
+       -0.11,   0.10,   0.00,   0.00,  -4.53,  -5.00,   0.00,   0.00,
+       -0.11,   0.10,  -2.43,  -2.70,  -3.82,   4.20,  -0.06,   0.05,
+        0.10,   0.09,   0.00,   0.00,  -4.53,   4.90,   0.00,   0.00,
+        0.11,   0.10,  -4.49,  -4.90,   0.00,   0.00,  -0.11,   0.10,
+        2.67,  -2.90,  -3.62,  -3.90,  -0.06,  -0.06,  -0.09,   0.08,
+        3.94,  -5.30,   0.00,   0.00,  -0.12,  -3.38,   3.70,  -2.78,
+       -3.10,   0.08,   0.08,  -0.07,   0.06,   3.18,  -3.50,  -2.82,
+       -3.10,  -0.08,  -0.07,  -0.07,   0.06,  -5.77,   0.00,   1.87,
+        0.00,   0.00,   0.13,   0.00,  -0.04,   3.54,  -4.80,  -0.64,
+
+   /* 3028-3155 */
+       -0.90,  -0.11,   0.00,  -0.02,  -3.50,  -4.70,   0.68,  -0.90,
+       -0.11,   0.00,  -0.02,   5.49,   0.00,   0.00,   0.00,   0.00,
+       -0.12,   1.83,  -2.50,   2.63,   3.50,  -0.06,   0.00,   0.08,
+        3.02,  -4.10,   0.68,   0.90,  -0.09,   0.00,   0.02,   0.00,
+        0.00,   5.21,   0.00,   0.00,   0.00,   0.00,  -0.12,  -3.54,
+        3.80,   2.70,   3.60,  -1.35,   1.80,   0.08,   0.00,   0.04,
+       -2.90,   3.90,   0.68,   0.90,   0.09,   0.00,   0.02,   0.80,
+       -1.10,  -2.78,  -3.70,  -0.02,   0.00,  -0.08,   4.10,   0.00,
+       -2.39,   0.00,   0.00,  -0.09,   0.00,   0.05,  -1.59,   2.10,
+        2.27,   3.00,   0.05,   0.00,   0.07,  -2.63,   3.50,  -0.48,
+       -0.60,  -2.94,  -3.20,  -2.94,   3.20,   2.27,  -3.00,  -1.11,
+       -1.50,  -0.07,   0.00,  -0.03,  -0.56,  -0.80,  -2.35,   3.10,
+        0.00,  -0.60,  -3.42,   1.90,  -0.12,  -0.10,   2.63,  -2.90,
+        2.51,   2.80,  -0.64,   0.70,  -0.48,  -0.60,   2.19,  -2.90,
+        0.24,  -0.30,   2.15,   2.90,   2.15,  -2.90,   0.52,   0.70,
+        2.07,  -2.80,  -3.10,   0.00,   1.79,   0.00,   0.00,   0.07,
+
+   /* 3156-3283 */
+        0.00,  -0.04,   0.88,   0.00,  -3.46,   2.11,   2.80,  -0.36,
+        0.50,   3.54,  -0.20,  -3.50,  -1.39,   1.50,  -1.91,  -2.10,
+       -1.47,   2.00,   1.39,   1.90,   2.07,  -2.30,   0.91,   1.00,
+        1.99,  -2.70,   3.30,   0.00,   0.60,  -0.44,  -0.70,  -1.95,
+        2.60,   2.15,  -2.40,  -0.60,  -0.70,   3.30,   0.84,   0.00,
+       -3.10,  -3.10,   0.00,  -0.72,  -0.32,   0.40,  -1.87,  -2.50,
+        1.87,  -2.50,   0.32,   0.40,  -0.24,   0.30,  -1.87,  -2.50,
+       -0.24,  -0.30,   1.87,  -2.50,  -2.70,   0.00,   1.55,   2.03,
+        2.20,  -2.98,  -1.99,  -2.20,   0.12,  -0.10,  -0.40,   0.50,
+        1.59,   2.10,   0.00,   0.00,  -1.79,   2.00,  -1.03,   1.40,
+       -1.15,  -1.60,   0.32,   0.50,   1.39,  -1.90,   2.35,  -1.27,
+        1.70,   0.60,   0.80,  -0.32,  -0.40,   1.35,  -1.80,   0.44,
+        0.00,   2.23,  -0.84,   0.90,  -1.27,  -1.40,  -1.47,   1.60,
+       -0.28,  -0.30,  -0.28,   0.40,  -1.27,  -1.70,   0.28,  -0.40,
+       -1.43,  -1.50,   0.00,   0.00,  -1.27,  -1.70,   2.11,  -0.32,
+       -0.40,  -1.23,   1.60,   1.19,  -1.30,  -0.72,  -0.80,   0.72,
+
+   /* 3284-3411 */
+       -0.80,  -1.15,  -1.30,  -1.35,  -1.50,  -1.19,  -1.60,  -0.12,
+        0.20,   1.79,   0.00,  -0.88,  -0.28,   0.40,   1.11,   1.50,
+       -1.83,   0.00,   0.56,  -0.12,   0.10,  -1.27,  -1.40,   0.00,
+        0.00,   1.15,   1.50,  -0.12,   0.20,   1.11,   1.50,   0.36,
+       -0.50,  -1.07,  -1.40,  -1.11,   1.50,   1.67,   0.00,   0.80,
+       -1.11,   0.00,   1.43,   1.23,  -1.30,  -0.24,  -1.19,  -1.30,
+       -0.24,   0.20,  -0.44,  -0.90,  -0.95,   1.10,   1.07,  -1.40,
+        1.15,  -1.30,   1.03,  -1.10,  -0.56,  -0.60,  -0.68,   0.90,
+       -0.76,  -1.00,  -0.24,  -0.30,   0.95,  -1.30,   0.56,   0.70,
+        0.84,  -1.10,  -0.56,   0.00,  -1.55,   0.91,  -1.30,   0.28,
+        0.30,   0.16,  -0.20,   0.95,   1.30,   0.40,  -0.50,  -0.88,
+       -1.20,   0.95,  -1.10,  -0.48,  -0.50,   0.00,   0.00,  -1.07,
+        1.20,   0.44,  -0.50,   0.95,   1.10,   0.00,   0.00,   0.92,
+       -1.30,   0.95,   1.00,  -0.52,   0.60,   1.59,   0.24,  -0.40,
+        0.91,   1.20,   0.84,  -1.10,  -0.44,  -0.60,   0.84,   1.10,
+       -0.44,   0.60,  -0.44,   0.60,  -0.84,  -1.10,  -0.80,   0.00,
+
+   /* 3412-3539 */
+        1.35,   0.76,   0.20,  -0.91,  -1.00,   0.20,  -0.30,  -0.91,
+       -1.20,  -0.95,   1.00,  -0.48,  -0.50,   0.88,   1.00,   0.48,
+       -0.50,  -0.95,  -1.10,   0.20,  -0.20,  -0.99,   1.10,  -0.84,
+        1.10,  -0.24,  -0.30,   0.20,  -0.30,   0.84,   1.10,  -1.39,
+        0.00,  -0.28,  -0.16,   0.20,   0.84,   1.10,   0.00,   0.00,
+        1.39,   0.00,   0.00,  -0.95,   1.00,   1.35,  -0.99,   0.00,
+        0.88,  -0.52,   0.00,  -1.19,   0.20,   0.20,   0.76,  -1.00,
+        0.00,   0.00,   0.76,   1.00,   0.00,   0.00,   0.76,   1.00,
+       -0.76,   1.00,   0.00,   0.00,   1.23,   0.76,   0.80,  -0.32,
+        0.40,  -0.72,   0.80,  -0.40,  -0.40,   0.00,   0.00,  -0.80,
+       -0.90,  -0.68,   0.90,  -0.16,  -0.20,  -0.16,  -0.20,   0.68,
+       -0.90,  -0.36,   0.50,  -0.56,  -0.80,   0.72,  -0.90,   0.44,
+       -0.60,  -0.48,  -0.70,  -0.16,   0.00,  -1.11,   0.32,   0.00,
+       -1.07,   0.60,  -0.80,  -0.28,  -0.40,  -0.64,   0.00,   0.91,
+        1.11,   0.64,  -0.90,   0.76,  -0.80,   0.00,   0.00,  -0.76,
+       -0.80,   1.03,   0.00,  -0.36,  -0.64,  -0.70,   0.36,  -0.40,
+
+   /* 3540-3667 */
+        1.07,   0.36,  -0.50,  -0.52,  -0.70,   0.60,   0.00,   0.88,
+        0.95,   0.00,   0.48,   0.16,  -0.20,   0.60,   0.80,   0.16,
+       -0.20,  -0.60,  -0.80,   0.00,  -1.00,   0.12,   0.20,   0.16,
+       -0.20,   0.68,   0.70,   0.59,  -0.80,  -0.99,  -0.56,  -0.60,
+        0.36,  -0.40,  -0.68,  -0.70,  -0.68,  -0.70,  -0.36,  -0.50,
+       -0.44,   0.60,   0.64,   0.70,  -0.12,   0.10,  -0.52,   0.60,
+        0.36,   0.40,   0.00,   0.00,   0.95,  -0.84,   0.00,   0.44,
+        0.56,   0.60,   0.32,  -0.30,   0.00,   0.00,   0.60,   0.70,
+        0.00,   0.00,   0.60,   0.70,  -0.12,  -0.20,   0.52,  -0.70,
+        0.00,   0.00,   0.56,   0.70,  -0.12,   0.10,  -0.52,  -0.70,
+        0.00,   0.00,   0.88,  -0.76,   0.00,  -0.44,   0.00,   0.00,
+       -0.52,  -0.70,   0.52,  -0.70,   0.36,  -0.40,  -0.44,  -0.50,
+        0.00,   0.00,   0.60,   0.60,   0.84,   0.00,   0.12,  -0.24,
+        0.00,   0.80,  -0.56,   0.60,  -0.32,  -0.30,   0.48,  -0.50,
+        0.28,  -0.30,  -0.48,  -0.50,   0.12,   0.20,   0.48,  -0.60,
+        0.48,   0.60,  -0.12,   0.20,   0.24,   0.00,   0.76,  -0.52,
+
+   /* 3668-3795 */
+       -0.60,  -0.52,   0.60,   0.48,  -0.50,  -0.24,  -0.30,   0.12,
+       -0.10,   0.48,   0.60,   0.52,  -0.20,   0.36,   0.40,  -0.44,
+        0.50,  -0.24,  -0.30,  -0.48,  -0.60,  -0.44,  -0.60,  -0.12,
+        0.10,   0.76,   0.76,   0.20,  -0.20,   0.48,   0.50,   0.40,
+       -0.50,  -0.24,  -0.30,   0.44,  -0.60,   0.44,  -0.60,   0.36,
+        0.00,  -0.64,   0.72,   0.00,  -0.12,   0.00,  -0.10,  -0.40,
+       -0.60,  -0.20,  -0.20,  -0.44,   0.50,  -0.44,   0.50,   0.20,
+        0.20,  -0.44,  -0.50,   0.20,  -0.20,  -0.20,   0.20,  -0.44,
+       -0.50,   0.64,   0.00,   0.32,  -0.36,   0.50,  -0.20,  -0.30,
+        0.12,  -0.10,   0.48,   0.50,  -0.12,   0.30,  -0.36,  -0.50,
+        0.00,   0.00,   0.48,   0.50,  -0.48,   0.50,   0.68,   0.00,
+       -0.12,   0.56,  -0.40,   0.44,  -0.50,  -0.12,  -0.10,   0.24,
+        0.30,  -0.40,   0.40,   0.64,   0.00,  -0.24,   0.64,   0.00,
+       -0.20,   0.00,   0.00,   0.44,  -0.50,   0.44,   0.50,  -0.12,
+        0.20,  -0.36,  -0.50,   0.12,   0.00,   0.64,  -0.40,   0.50,
+        0.00,   0.10,   0.00,   0.00,  -0.40,   0.50,   0.00,   0.00,
+
+   /* 3796-3923 */
+       -0.40,  -0.50,   0.56,   0.00,   0.28,   0.00,   0.10,   0.36,
+        0.50,   0.00,  -0.10,   0.36,  -0.50,   0.36,   0.50,   0.00,
+       -0.10,   0.24,  -0.20,  -0.36,  -0.40,   0.16,   0.20,   0.40,
+       -0.40,   0.00,   0.00,  -0.36,  -0.50,  -0.36,  -0.50,  -0.32,
+       -0.50,  -0.12,   0.10,   0.20,   0.20,  -0.36,   0.40,  -0.60,
+        0.60,   0.28,   0.00,   0.52,   0.12,  -0.10,   0.40,   0.40,
+        0.00,  -0.50,   0.20,  -0.20,  -0.32,   0.40,   0.16,   0.20,
+       -0.16,   0.20,   0.32,   0.40,   0.56,   0.00,  -0.12,   0.32,
+       -0.40,  -0.16,  -0.20,   0.00,   0.00,   0.40,   0.40,  -0.40,
+       -0.40,  -0.40,   0.40,  -0.36,   0.40,   0.12,   0.10,   0.00,
+        0.10,   0.36,   0.40,   0.00,  -0.10,   0.36,   0.40,  -0.36,
+        0.40,   0.00,   0.10,   0.32,   0.00,   0.44,   0.12,   0.20,
+        0.28,  -0.40,   0.00,   0.00,   0.36,   0.40,   0.32,  -0.40,
+       -0.16,   0.12,   0.10,   0.32,  -0.40,   0.20,   0.30,  -0.24,
+        0.30,   0.00,   0.10,   0.32,   0.40,   0.00,  -0.10,  -0.32,
+       -0.40,  -0.32,   0.40,   0.00,   0.10,  -0.52,  -0.52,   0.52,
+
+   /* 3924-4051 */
+        0.32,  -0.40,   0.00,   0.00,   0.32,   0.40,   0.32,  -0.40,
+        0.00,   0.00,  -0.32,  -0.40,  -0.32,   0.40,   0.32,   0.40,
+        0.00,   0.00,   0.32,   0.40,   0.00,   0.00,  -0.32,  -0.40,
+        0.00,   0.00,   0.32,   0.40,   0.16,   0.20,   0.32,  -0.30,
+       -0.16,   0.00,  -0.48,  -0.20,   0.20,  -0.28,  -0.30,   0.28,
+       -0.40,   0.00,   0.00,   0.28,  -0.40,   0.00,   0.00,   0.28,
+       -0.40,   0.00,   0.00,  -0.28,  -0.40,   0.28,   0.40,  -0.28,
+       -0.40,  -0.48,  -0.20,   0.20,   0.24,   0.30,   0.44,   0.00,
+        0.16,   0.24,   0.30,   0.16,  -0.20,   0.24,   0.30,  -0.12,
+        0.20,   0.20,   0.30,  -0.16,   0.20,   0.00,   0.00,   0.44,
+       -0.32,   0.30,   0.24,   0.00,  -0.36,   0.36,   0.00,   0.24,
+        0.12,  -0.20,   0.20,   0.30,  -0.12,   0.00,  -0.28,   0.30,
+       -0.24,   0.30,   0.12,   0.10,  -0.28,  -0.30,  -0.28,   0.30,
+        0.00,   0.00,  -0.28,  -0.30,   0.00,   0.00,  -0.28,  -0.30,
+        0.00,   0.00,   0.28,   0.30,   0.00,   0.00,  -0.28,  -0.30,
+       -0.28,   0.30,   0.00,   0.00,  -0.28,  -0.30,   0.00,   0.00,
+
+   /* 4052-4179 */
+        0.28,   0.30,   0.00,   0.00,  -0.28,   0.30,   0.28,  -0.30,
+       -0.28,   0.30,   0.40,   0.40,  -0.24,   0.30,   0.00,  -0.10,
+        0.16,   0.00,   0.36,  -0.20,   0.30,  -0.12,  -0.10,  -0.24,
+       -0.30,   0.00,   0.00,  -0.24,   0.30,  -0.24,   0.30,   0.00,
+        0.00,  -0.24,   0.30,  -0.24,   0.30,   0.24,  -0.30,   0.00,
+        0.00,   0.24,  -0.30,   0.00,   0.00,   0.24,   0.30,   0.24,
+       -0.30,   0.24,   0.30,  -0.24,   0.30,  -0.24,   0.30,  -0.20,
+        0.20,  -0.16,  -0.20,   0.00,   0.00,  -0.32,   0.20,   0.00,
+        0.10,   0.20,  -0.30,   0.20,  -0.20,   0.12,   0.20,  -0.16,
+        0.20,   0.16,   0.20,   0.20,   0.30,   0.20,   0.30,   0.00,
+        0.00,  -0.20,   0.30,   0.00,   0.00,   0.20,   0.30,  -0.20,
+       -0.30,  -0.20,  -0.30,   0.20,  -0.30,   0.00,   0.00,   0.20,
+        0.30,   0.00,   0.00,   0.20,   0.30,   0.00,   0.00,   0.20,
+        0.30,   0.00,   0.00,   0.20,   0.30,   0.00,   0.00,   0.20,
+       -0.30,   0.00,   0.00,  -0.20,  -0.30,   0.00,   0.00,  -0.20,
+        0.30,   0.00,   0.00,  -0.20,   0.30,   0.00,   0.00,   0.36,
+
+   /* 4180-4307 */
+        0.00,   0.00,   0.36,   0.12,   0.10,  -0.24,   0.20,   0.12,
+       -0.20,  -0.16,  -0.20,  -0.13,   0.10,   0.22,   0.21,   0.20,
+        0.00,  -0.28,   0.32,   0.00,  -0.12,  -0.20,  -0.20,   0.12,
+       -0.10,   0.12,   0.10,  -0.20,   0.20,   0.00,   0.00,  -0.32,
+        0.32,   0.00,   0.00,   0.32,   0.32,   0.00,   0.00,  -0.24,
+       -0.20,   0.24,   0.20,   0.20,   0.00,  -0.24,   0.00,   0.00,
+       -0.24,  -0.20,   0.00,   0.00,   0.24,   0.20,  -0.24,  -0.20,
+        0.00,   0.00,  -0.24,   0.20,   0.16,  -0.20,   0.12,   0.10,
+        0.20,   0.20,   0.00,  -0.10,  -0.12,   0.10,  -0.16,  -0.20,
+       -0.12,  -0.10,  -0.16,   0.20,   0.20,   0.20,   0.00,   0.00,
+       -0.20,   0.20,  -0.20,   0.20,  -0.20,   0.20,  -0.20,   0.20,
+        0.20,  -0.20,  -0.20,  -0.20,   0.00,   0.00,  -0.20,   0.20,
+        0.20,   0.00,  -0.20,   0.00,   0.00,  -0.20,   0.20,  -0.20,
+        0.20,  -0.20,  -0.20,  -0.20,  -0.20,   0.00,   0.00,   0.20,
+        0.20,   0.20,   0.20,   0.12,  -0.20,  -0.12,  -0.10,   0.28,
+       -0.28,   0.16,  -0.20,   0.00,  -0.10,   0.00,   0.10,  -0.16,
+
+   /* 4308-4435 */
+        0.20,   0.00,  -0.10,  -0.16,  -0.20,   0.00,  -0.10,   0.16,
+       -0.20,   0.16,  -0.20,   0.00,   0.00,   0.16,   0.20,  -0.16,
+        0.20,   0.00,   0.00,   0.16,   0.20,   0.16,  -0.20,   0.16,
+       -0.20,  -0.16,   0.20,   0.16,  -0.20,   0.00,   0.00,   0.16,
+        0.20,   0.00,   0.00,   0.16,   0.20,   0.00,   0.00,  -0.16,
+       -0.20,   0.16,  -0.20,  -0.16,  -0.20,   0.00,   0.00,  -0.16,
+       -0.20,   0.00,   0.00,  -0.16,   0.20,   0.00,   0.00,   0.16,
+       -0.20,   0.16,   0.20,   0.16,   0.20,   0.00,   0.00,  -0.16,
+       -0.20,   0.00,   0.00,  -0.16,  -0.20,   0.00,   0.00,   0.16,
+        0.20,   0.16,   0.20,   0.00,   0.00,   0.16,   0.20,   0.16,
+       -0.20,   0.16,   0.20,   0.00,   0.00,  -0.16,   0.20,   0.00,
+        0.10,   0.12,  -0.20,   0.12,  -0.20,   0.00,  -0.10,   0.00,
+       -0.10,   0.12,   0.20,   0.00,  -0.10,  -0.12,   0.20,  -0.15,
+        0.20,  -0.24,   0.24,   0.00,   0.00,   0.24,   0.24,   0.12,
+       -0.20,  -0.12,  -0.20,   0.00,   0.00,   0.12,   0.20,   0.12,
+       -0.20,   0.12,   0.20,   0.12,   0.20,   0.12,   0.20,   0.12,
+
+   /* 4436-4563 */
+       -0.20,  -0.12,   0.20,   0.00,   0.00,   0.12,   0.20,   0.12,
+        0.00,  -0.20,   0.00,   0.00,  -0.12,  -0.20,   0.12,  -0.20,
+        0.00,   0.00,   0.12,   0.20,  -0.12,   0.20,  -0.12,   0.20,
+        0.12,  -0.20,   0.00,   0.00,   0.12,   0.20,   0.20,   0.00,
+        0.12,   0.00,   0.00,  -0.12,   0.20,   0.00,   0.00,  -0.12,
+       -0.20,   0.00,   0.00,  -0.12,  -0.20,  -0.12,  -0.20,   0.00,
+        0.00,   0.12,  -0.20,   0.12,  -0.20,   0.12,   0.20,  -0.12,
+       -0.20,   0.00,   0.00,   0.12,  -0.20,   0.12,  -0.20,   0.12,
+        0.20,   0.12,   0.00,   0.20,  -0.12,  -0.20,   0.00,   0.00,
+        0.12,   0.20,  -0.16,   0.00,   0.16,  -0.20,   0.20,   0.00,
+        0.00,  -0.20,   0.00,   0.00,  -0.20,   0.20,   0.00,   0.00,
+        0.20,   0.20,  -0.20,   0.00,   0.00,  -0.20,   0.12,   0.00,
+       -0.16,   0.20,   0.00,   0.00,   0.20,   0.12,  -0.10,   0.00,
+        0.10,   0.16,  -0.16,  -0.16,  -0.16,  -0.16,  -0.16,   0.00,
+        0.00,  -0.16,   0.00,   0.00,  -0.16,  -0.16,  -0.16,   0.00,
+        0.00,  -0.16,   0.00,   0.00,   0.16,   0.00,   0.00,   0.16,
+
+   /* 4564-4691 */
+        0.00,   0.00,   0.16,   0.16,   0.00,   0.00,  -0.16,   0.00,
+        0.00,  -0.16,  -0.16,   0.00,   0.00,   0.16,   0.00,   0.00,
+       -0.16,  -0.16,   0.00,   0.00,  -0.16,  -0.16,   0.12,   0.10,
+        0.12,  -0.10,   0.12,   0.10,   0.00,   0.00,   0.12,   0.10,
+       -0.12,   0.10,   0.00,   0.00,   0.12,   0.10,   0.12,  -0.10,
+        0.00,   0.00,  -0.12,  -0.10,   0.00,   0.00,   0.12,   0.10,
+        0.12,   0.00,   0.00,   0.12,   0.00,   0.00,  -0.12,   0.00,
+        0.00,   0.12,   0.12,   0.12,   0.12,   0.12,   0.00,   0.00,
+        0.12,   0.00,   0.00,   0.12,   0.12,   0.00,   0.00,   0.12,
+        0.00,   0.00,   0.12,  -0.12,  -0.12,   0.12,   0.12,  -0.12,
+       -0.12,   0.00,   0.00,   0.12,  -0.12,   0.12,   0.12,  -0.12,
+       -0.12,   0.00,   0.00,  -0.12,  -0.12,   0.00,   0.00,  -0.12,
+        0.12,   0.00,   0.00,   0.12,   0.00,   0.00,   0.12,   0.00,
+        0.00,   0.12,  -0.12,   0.00,   0.00,  -0.12,   0.12,  -0.12,
+       -0.12,   0.12,   0.00,   0.00,   0.12,   0.12,   0.12,  -0.12,
+        0.00,   0.00,  -0.12,  -0.12,  -0.12,   0.00,   0.00,  -0.12,
+
+   /* 4692-NA */
+       -0.12,   0.00,   0.00,   0.12,   0.12,   0.00,   0.00,  -0.12,
+       -0.12,  -0.12,  -0.12,   0.12,   0.00,   0.00,   0.12,  -0.12,
+        0.00,   0.00,  -0.12,  -0.12,   0.00,   0.00,   0.12,  -0.12,
+       -0.12,  -0.12,  -0.12,   0.12,   0.12,  -0.12,  -0.12,   0.00,
+        0.00,  -0.12,   0.00,   0.00,  -0.12,   0.12,   0.00,   0.00,
+        0.12,   0.00,   0.00,  -0.12,  -0.12,   0.00,   0.00,  -0.12,
+       -0.12,   0.12,   0.00,   0.00,   0.12,   0.12,   0.00,   0.00,
+        0.12,   0.00,   0.00,   0.12,   0.12,   0.08,   0.00,   0.04
+   };
+
+/* Number of amplitude coefficients */
+   static const int NA = (int) (sizeof a / sizeof (double));
+
+/* Amplitude usage: X or Y, sin or cos, power of T. */
+   static const int jaxy[] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
+   static const int jasc[] = {0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0};
+   static const int japt[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
+
+/* Miscellaneous */
+   double t, w, pt[MAXPT+1], fa[14], xypr[2], xypl[2], xyls[2], arg,
+          sc[2];
+   int jpt, i, j, jxy, ialast, ifreq, m, ia, jsc;
+
+/*--------------------------------------------------------------------*/
+
+/* Interval between fundamental date J2000.0 and given date (JC). */
+   t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJC;
+
+/* Powers of T. */
+   w = 1.0;
+   for (jpt = 0; jpt <= MAXPT; jpt++) {
+      pt[jpt] = w;
+      w *= t;
+   }
+
+/* Initialize totals in X and Y:  polynomial, luni-solar, planetary. */
+   for (jxy = 0; jxy < 2; jxy++) {
+      xypr[jxy] = 0.0;
+      xyls[jxy] = 0.0;
+      xypl[jxy] = 0.0;
+   }
+
+/* --------------------------------- */
+/* Fundamental arguments (IERS 2003) */
+/* --------------------------------- */
+
+/* Mean anomaly of the Moon. */
+   fa[0] = eraFal03(t);
+
+/* Mean anomaly of the Sun. */
+   fa[1] = eraFalp03(t);
+
+/* Mean argument of the latitude of the Moon. */
+   fa[2] = eraFaf03(t);
+
+/* Mean elongation of the Moon from the Sun. */
+   fa[3] = eraFad03(t);
+
+/* Mean longitude of the ascending node of the Moon. */
+   fa[4] = eraFaom03(t);
+
+/* Planetary longitudes, Mercury through Neptune. */
+   fa[5] = eraFame03(t);
+   fa[6] = eraFave03(t);
+   fa[7] = eraFae03(t);
+   fa[8] = eraFama03(t);
+   fa[9] = eraFaju03(t);
+   fa[10] = eraFasa03(t);
+   fa[11] = eraFaur03(t);
+   fa[12] = eraFane03(t);
+
+/* General accumulated precession in longitude. */
+   fa[13] = eraFapa03(t);
+
+/* -------------------------------------- */
+/* Polynomial part of precession-nutation */
+/* -------------------------------------- */
+
+   for (jxy = 0; jxy < 2; jxy++) {
+      for (j = MAXPT; j >= 0; j--) {
+         xypr[jxy] += xyp[jxy][j] * pt[j];
+      }
+   }
+
+/* ---------------------------------- */
+/* Nutation periodic terms, planetary */
+/* ---------------------------------- */
+
+/* Work backwards through the coefficients per frequency list. */
+   ialast = NA;
+   for (ifreq = NFPL-1; ifreq >= 0; ifreq--) {
+
+   /* Obtain the argument functions. */
+      arg = 0.0;
+      for (i = 0; i < 14; i++) {
+         m = mfapl[ifreq][i];
+         if (m != 0) arg += (double)m * fa[i];
+      }
+      sc[0] = sin(arg);
+      sc[1] = cos(arg);
+
+   /* Work backwards through the amplitudes at this frequency. */
+      ia = nc[ifreq+NFLS];
+      for (i = ialast; i >= ia; i--) {
+
+      /* Coefficient number (0 = 1st). */
+         j = i-ia;
+
+      /* X or Y. */
+         jxy = jaxy[j];
+
+      /* Sin or cos. */
+         jsc = jasc[j];
+
+      /* Power of T. */
+         jpt = japt[j];
+
+      /* Accumulate the component. */
+         xypl[jxy] += a[i-1] * sc[jsc] * pt[jpt];
+      }
+      ialast = ia-1;
+   }
+
+/* ----------------------------------- */
+/* Nutation periodic terms, luni-solar */
+/* ----------------------------------- */
+
+/* Continue working backwards through the number of coefficients list. */
+   for (ifreq = NFLS-1; ifreq >= 0; ifreq--) {
+
+   /* Obtain the argument functions. */
+      arg = 0.0;
+      for (i = 0; i < 5; i++) {
+         m = mfals[ifreq][i];
+         if (m != 0) arg += (double)m * fa[i];
+      }
+      sc[0] = sin(arg);
+      sc[1] = cos(arg);
+
+   /* Work backwards through the amplitudes at this frequency. */
+      ia = nc[ifreq];
+      for (i = ialast; i >= ia; i--) {
+
+      /* Coefficient number (0 = 1st). */
+         j = i-ia;
+
+      /* X or Y. */
+         jxy = jaxy[j];
+
+      /* Sin or cos. */
+         jsc = jasc[j];
+
+      /* Power of T. */
+         jpt = japt[j];
+
+      /* Accumulate the component. */
+         xyls[jxy] += a[i-1] * sc[jsc] * pt[jpt];
+      }
+      ialast = ia-1;
+   }
+
+/* ------------------------------------ */
+/* Results:  CIP unit vector components */
+/* ------------------------------------ */
+
+   *x = ERFA_DAS2R * (xypr[0] + (xyls[0] + xypl[0]) / 1e6);
+   *y = ERFA_DAS2R * (xypr[1] + (xyls[1] + xypl[1]) / 1e6);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/xys00a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/xys00a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/xys00a.c	(revision 18732)
@@ -0,0 +1,142 @@
+#include "erfa.h"
+
+void eraXys00a(double date1, double date2,
+               double *x, double *y, double *s)
+/*
+**  - - - - - - - - - -
+**   e r a X y s 0 0 a
+**  - - - - - - - - - -
+**
+**  For a given TT date, compute the X,Y coordinates of the Celestial
+**  Intermediate Pole and the CIO locator s, using the IAU 2000A
+**  precession-nutation model.
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     x,y          double   Celestial Intermediate Pole (Note 2)
+**     s            double   the CIO locator s (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The Celestial Intermediate Pole coordinates are the x,y
+**     components of the unit vector in the Geocentric Celestial
+**     Reference System.
+**
+**  3) The CIO locator s (in radians) positions the Celestial
+**     Intermediate Origin on the equator of the CIP.
+**
+**  4) A faster, but slightly less accurate result (about 1 mas for
+**     X,Y), can be obtained by using instead the eraXys00b function.
+**
+**  Called:
+**     eraPnm00a    classical NPB matrix, IAU 2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS00       the CIO locator s, given X,Y, IAU 2000A
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3];
+
+
+/* Form the bias-precession-nutation matrix, IAU 2000A. */
+   eraPnm00a(date1, date2, rbpn);
+
+/* Extract X,Y. */
+   eraBpn2xy(rbpn, x, y);
+
+/* Obtain s. */
+   *s = eraS00(date1, date2, *x, *y);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/xys00b.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/xys00b.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/xys00b.c	(revision 18732)
@@ -0,0 +1,142 @@
+#include "erfa.h"
+
+void eraXys00b(double date1, double date2,
+               double *x, double *y, double *s)
+/*
+**  - - - - - - - - - -
+**   e r a X y s 0 0 b
+**  - - - - - - - - - -
+**
+**  For a given TT date, compute the X,Y coordinates of the Celestial
+**  Intermediate Pole and the CIO locator s, using the IAU 2000B
+**  precession-nutation model.
+**
+**  Given:
+**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     x,y          double   Celestial Intermediate Pole (Note 2)
+**     s            double   the CIO locator s (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The Celestial Intermediate Pole coordinates are the x,y
+**     components of the unit vector in the Geocentric Celestial
+**     Reference System.
+**
+**  3) The CIO locator s (in radians) positions the Celestial
+**     Intermediate Origin on the equator of the CIP.
+**
+**  4) The present function is faster, but slightly less accurate (about
+**     1 mas in X,Y), than the eraXys00a function.
+**
+**  Called:
+**     eraPnm00b    classical NPB matrix, IAU 2000B
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS00       the CIO locator s, given X,Y, IAU 2000A
+**
+**  Reference:
+**
+**     McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
+**     IERS Technical Note No. 32, BKG (2004)
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3];
+
+
+/* Form the bias-precession-nutation matrix, IAU 2000A. */
+   eraPnm00b(date1, date2, rbpn);
+
+/* Extract X,Y. */
+   eraBpn2xy(rbpn, x, y);
+
+/* Obtain s. */
+   *s = eraS00(date1, date2, *x, *y);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/xys06a.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/xys06a.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/xys06a.c	(revision 18732)
@@ -0,0 +1,142 @@
+#include "erfa.h"
+
+void eraXys06a(double date1, double date2,
+               double *x, double *y, double *s)
+/*
+**  - - - - - - - - - -
+**   e r a X y s 0 6 a
+**  - - - - - - - - - -
+**
+**  For a given TT date, compute the X,Y coordinates of the Celestial
+**  Intermediate Pole and the CIO locator s, using the IAU 2006
+**  precession and IAU 2000A nutation models.
+**
+**  Given:
+**     date1,date2  double  TT as a 2-part Julian Date (Note 1)
+**
+**  Returned:
+**     x,y          double  Celestial Intermediate Pole (Note 2)
+**     s            double  the CIO locator s (Note 2)
+**
+**  Notes:
+**
+**  1) The TT date date1+date2 is a Julian Date, apportioned in any
+**     convenient way between the two arguments.  For example,
+**     JD(TT)=2450123.7 could be expressed in any of these ways,
+**     among others:
+**
+**            date1          date2
+**
+**         2450123.7           0.0       (JD method)
+**         2451545.0       -1421.3       (J2000 method)
+**         2400000.5       50123.2       (MJD method)
+**         2450123.5           0.2       (date & time method)
+**
+**     The JD method is the most natural and convenient to use in
+**     cases where the loss of several decimal digits of resolution
+**     is acceptable.  The J2000 method is best matched to the way
+**     the argument is handled internally and will deliver the
+**     optimum resolution.  The MJD method and the date & time methods
+**     are both good compromises between resolution and convenience.
+**
+**  2) The Celestial Intermediate Pole coordinates are the x,y components
+**     of the unit vector in the Geocentric Celestial Reference System.
+**
+**  3) The CIO locator s (in radians) positions the Celestial
+**     Intermediate Origin on the equator of the CIP.
+**
+**  4) Series-based solutions for generating X and Y are also available:
+**     see Capitaine & Wallace (2006) and eraXy06.
+**
+**  Called:
+**     eraPnm06a    classical NPB matrix, IAU 2006/2000A
+**     eraBpn2xy    extract CIP X,Y coordinates from NPB matrix
+**     eraS06       the CIO locator s, given X,Y, IAU 2006
+**
+**  References:
+**
+**     Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
+**
+**     Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   double rbpn[3][3];
+
+
+/* Form the bias-precession-nutation matrix, IAU 2006/2000A. */
+   eraPnm06a(date1, date2, rbpn);
+
+/* Extract X,Y. */
+   eraBpn2xy(rbpn, x, y);
+
+/* Obtain s. */
+   *s = eraS06(date1, date2, *x, *y);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/zp.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/zp.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/zp.c	(revision 18732)
@@ -0,0 +1,86 @@
+#include "erfa.h"
+
+void eraZp(double p[3])
+/*
+**  - - - - - -
+**   e r a Z p
+**  - - - - - -
+**
+**  Zero a p-vector.
+**
+**  Returned:
+**     p        double[3]      p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   p[0] = 0.0;
+   p[1] = 0.0;
+   p[2] = 0.0;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/zpv.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/zpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/zpv.c	(revision 18732)
@@ -0,0 +1,88 @@
+#include "erfa.h"
+
+void eraZpv(double pv[2][3])
+/*
+**  - - - - - - -
+**   e r a Z p v
+**  - - - - - - -
+**
+**  Zero a pv-vector.
+**
+**  Returned:
+**     pv       double[2][3]      pv-vector
+**
+**  Called:
+**     eraZp        zero p-vector
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   eraZp(pv[0]);
+   eraZp(pv[1]);
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/erfa/src/zr.c
===================================================================
--- branches/FACT++_part_filenames/erfa/src/zr.c	(revision 18732)
+++ branches/FACT++_part_filenames/erfa/src/zr.c	(revision 18732)
@@ -0,0 +1,92 @@
+#include "erfa.h"
+
+void eraZr(double r[3][3])
+/*
+**  - - - - - -
+**   e r a Z r
+**  - - - - - -
+**
+**  Initialize an r-matrix to the null matrix.
+**
+**  Returned:
+**     r        double[3][3]    r-matrix
+**
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  Derived, with permission, from the SOFA library.  See notes at end of file.
+*/
+{
+   r[0][0] = 0.0;
+   r[0][1] = 0.0;
+   r[0][2] = 0.0;
+   r[1][0] = 0.0;
+   r[1][1] = 0.0;
+   r[1][2] = 0.0;
+   r[2][0] = 0.0;
+   r[2][1] = 0.0;
+   r[2][2] = 0.0;
+
+   return;
+
+}
+/*----------------------------------------------------------------------
+**  
+**  
+**  Copyright (C) 2013-2016, NumFOCUS Foundation.
+**  All rights reserved.
+**  
+**  This library is derived, with permission, from the International
+**  Astronomical Union's "Standards of Fundamental Astronomy" library,
+**  available from http://www.iausofa.org.
+**  
+**  The ERFA version is intended to retain identical functionality to
+**  the SOFA library, but made distinct through different function and
+**  file names, as set out in the SOFA license conditions.  The SOFA
+**  original has a role as a reference standard for the IAU and IERS,
+**  and consequently redistribution is permitted only in its unaltered
+**  state.  The ERFA version is not subject to this restriction and
+**  therefore can be included in distributions which do not support the
+**  concept of "read only" software.
+**  
+**  Although the intent is to replicate the SOFA API (other than
+**  replacement of prefix names) and results (with the exception of
+**  bugs;  any that are discovered will be fixed), SOFA is not
+**  responsible for any errors found in this version of the library.
+**  
+**  If you wish to acknowledge the SOFA heritage, please acknowledge
+**  that you are using a library derived from SOFA, rather than SOFA
+**  itself.
+**  
+**  
+**  TERMS AND CONDITIONS
+**  
+**  Redistribution and use in source and binary forms, with or without
+**  modification, are permitted provided that the following conditions
+**  are met:
+**  
+**  1 Redistributions of source code must retain the above copyright
+**    notice, this list of conditions and the following disclaimer.
+**  
+**  2 Redistributions in binary form must reproduce the above copyright
+**    notice, this list of conditions and the following disclaimer in
+**    the documentation and/or other materials provided with the
+**    distribution.
+**  
+**  3 Neither the name of the Standards Of Fundamental Astronomy Board,
+**    the International Astronomical Union nor the names of its
+**    contributors may be used to endorse or promote products derived
+**    from this software without specific prior written permission.
+**  
+**  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+**  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+**  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+**  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+**  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+**  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+**  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+**  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+**  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+**  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+**  POSSIBILITY OF SUCH DAMAGE.
+**  
+*/
Index: branches/FACT++_part_filenames/fact.rc
===================================================================
--- branches/FACT++_part_filenames/fact.rc	(revision 18732)
+++ branches/FACT++_part_filenames/fact.rc	(revision 18732)
@@ -0,0 +1,29 @@
+run-type=drs-pedestal|DRS Calib: Pedestal
+run-type=drs-gain|DRS Calib: Gain
+run-type=drs-time|DRS Calib: Time
+run-type=pedestal|Pedestal
+run-type=single-pe|Pedestal for singles
+run-type=light-pulser-ext|External light pulser
+run-type=data|Data: Full trigger region
+run-type=data-rt|Data: Reduced trigger region
+run-type=ratescan|Configure ratescan
+run-type=custom|Custom run configuration
+
+run-time=30|00:30
+run-time=60|01:00
+run-time=150|02:30
+run-time=300|05:00
+run-time=600|10:00
+run-time=900|15:00
+run-time=1200|20:00
+run-time=1800|30:00
+run-time=3600|60:00
+
+run-count=100
+run-count=300
+run-count=1000
+run-count=3000
+run-count=10000
+run-count=30000
+
+CommentDB=runcomments:Ice+uFRC@fact01.fact.local/factdata
Index: branches/FACT++_part_filenames/ftmctrl.rc
===================================================================
--- branches/FACT++_part_filenames/ftmctrl.rc	(revision 18732)
+++ branches/FACT++_part_filenames/ftmctrl.rc	(revision 18732)
@@ -0,0 +1,1 @@
+database=readpo:readc0nf1g@10.0.100.21/programoptions
Index: branches/FACT++_part_filenames/gui/BasicGlCamera.cc
===================================================================
--- branches/FACT++_part_filenames/gui/BasicGlCamera.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/BasicGlCamera.cc	(revision 18732)
@@ -0,0 +1,1149 @@
+#include "BasicGlCamera.h"
+
+#include <math.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <algorithm>
+
+#include <QLabel>
+#include <QRadioButton>
+#include <QButtonGroup>
+
+#include <GL/glu.h>
+
+#include "src/Time.h"
+#include "src/tools.h"
+
+using namespace std;;
+
+//static variables
+PixelMap BasicGlCamera::fPixelMap;
+GLfloat BasicGlCamera::pixelsCoords[MAX_NUM_PIXELS][3];
+PixelsNeighbors BasicGlCamera::neighbors[MAX_NUM_PIXELS];
+int BasicGlCamera::hardwareMapping[NPIX];
+GLfloat BasicGlCamera::verticesList[NPIX*6][2];
+vector<edge> BasicGlCamera::patchesIndices[160];
+int BasicGlCamera::verticesIndices[NPIX][6];
+int BasicGlCamera::pixelsPatch[NPIX];
+int BasicGlCamera::softwareMapping[NPIX];
+
+//Coordinates of an hexagon of radius 1 and center 0
+GLfloat hexcoords[6][2] = {{-1./sqrt(3.),  1},
+                           { 1./sqrt(3.),  1},
+                           { 2./sqrt(3.),  0},
+                           { 1./sqrt(3.), -1},
+                           {-1./sqrt(3.), -1},
+                           {-2./sqrt(3.),  0}};
+
+
+
+    BasicGlCamera::BasicGlCamera(QWidget* cParent)
+    : QGLWidget(QGLFormat(QGL::DoubleBuffer |
+                          QGL::DepthBuffer  /*|
+                          QGL::IndirectRendering*/),cParent)
+    {
+        QGL::setPreferredPaintEngine(QPaintEngine::OpenGL);
+        fWhite = -1;
+        fWhitePatch = -1;
+        fMin = -1;
+        fMax = -1;
+        fScaleLimit = -0.5;
+        fTextSize = 0;
+        autoRefresh = false;
+        logScale = false;
+        cameraRotation = +90;
+        fTextEnabled = true;
+        unitsText = "";
+        titleText = "";
+        dataText = "";
+        pixelContourColour[0] = 0.1f;
+        pixelContourColour[1] = 0.1f;
+        pixelContourColour[2] = 0.1f;
+        patchesCoulour[0] = 0.1f;
+        patchesCoulour[1] = 0.1f;
+        patchesCoulour[2] = 0.1f;
+        highlightedPatchesCoulour[0] = 0.6f;
+        highlightedPatchesCoulour[1] = 0.6f;
+        highlightedPatchesCoulour[2] = 0.6f;
+        highlightedPixelsCoulour[0] = 0.8f;
+        highlightedPixelsCoulour[1] = 0.8f;
+        highlightedPixelsCoulour[2] = 0.8f;
+
+        regularPalettePlease(true);
+
+
+        hexRadius = 0.015f;
+        hexTolerance = hexRadius/100.0f;
+        viewSize = 1.0f;
+        calculatePixelsCoords();
+
+        buildVerticesList();
+/*
+       ifstream fin1("Trigger-Patches.txt");
+       if (!fin1.is_open())
+       {
+           cout << "Error: file \"Trigger-Patches.txt\" missing. Aborting." << endl;
+           exit(-1);
+       }
+       l=0;
+        while (getline(fin1, buf, '\n'))
+        {
+            buf = Tools::Trim(buf);
+            if (buf[0]=='#')
+                continue;
+
+            stringstream str(buf);
+            for (int i=0; i<9; i++)
+            {
+                unsigned int n;
+                str >> n;
+
+                if (n>=1440)
+                    continue;
+
+                patches[l][i] = hardwareMapping[n];
+            }
+            l++;
+        }
+
+        //now construct the correspondance between pixels and patches
+        for (int i=0;i<NTMARK;i++)
+            for (int j=0;j<9;j++)
+                pixelsPatch[softwareMapping[patches[i][j]]] = i;
+
+        for (int i=0;i<1440;i++)
+            updateNeighbors(i);
+
+        buildPatchesIndices();
+*/////////////////////////////////
+        regularPalettePlease(true);
+//        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+//        rr[0] = 0.15; rr[1] = 0;     rr[2] = 0;    rr[3] = 1.0f;  rr[4] = 0.85f;
+//        gg[0] = 0.15; gg[1] = 0;     gg[2] = 1;    gg[3] = 0;     gg[4] = 0.85f;
+//        bb[0] = 0.15; bb[1] = 1;     bb[2] = 0;    bb[3] = 0;     bb[4] = 0.85f;
+
+        fPixelStride = 1;
+        fcSlice = 0;
+        fData.resize(1440);
+        for (int i=0;i<NPIX;i++)
+            fData[i] = (double)i;///1.44;//(double)(i)/(double)(ACTUAL_NUM_PIXELS);
+
+//        setFont(QFont("Arial", 8));
+        int buttonShift=0;
+        scaleLabel = new QLabel("Scale", this);
+//        buttonShift += scaleLabel->height();
+
+        linearButton = new QRadioButton("Linear", this);
+        linearButton->move(scaleLabel->width(), buttonShift);
+        buttonShift += linearButton->height();
+
+        logButton = new QRadioButton("Log", this);
+        logButton->move(scaleLabel->width(), buttonShift);
+        buttonShift += logButton->height()*1.1f;
+
+        colorPaletteLabel = new QLabel("Colour\nPalette", this);
+        colorPaletteLabel->move(0, buttonShift);
+ //       buttonShift += colorPaletteLabel->height();
+
+        regularPaletteButton = new QRadioButton("Regular", this);
+        regularPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += regularPaletteButton->height();
+
+        prettyPaletteButton = new QRadioButton("Pretty", this);
+        prettyPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += prettyPaletteButton->height();
+
+        greyScalePaletteButton = new QRadioButton("Grey Scale", this);
+        greyScalePaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += greyScalePaletteButton->height();
+
+        glowingPaletteButton = new QRadioButton("Glowing", this);
+        glowingPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += glowingPaletteButton->height()*1.1f;
+
+        rotationLabel = new QLabel("Camera\nRotation", this);
+        rotationLabel->move(0, buttonShift);
+ //       buttonShift += rotationLabel->height();
+
+        unsigned short utf16Array;
+        utf16Array = 0x00b0;
+        QString degreeSymbol(QString::fromUtf16(&utf16Array, 1));
+        QString zerostr("0" + degreeSymbol);
+        zeroRotationButton = new QRadioButton(zerostr, this);
+        zeroRotationButton->move(rotationLabel->width(), buttonShift);
+        buttonShift += zeroRotationButton->height();
+         QString minus90str("+90" + degreeSymbol);
+        minus90RotationButton = new QRadioButton(minus90str, this);
+        minus90RotationButton->move(rotationLabel->width(), buttonShift);
+        buttonShift += minus90RotationButton->height();
+        QString plus90str("-90"+degreeSymbol);
+        plus90Rotationbutton = new QRadioButton(plus90str, this);
+        plus90Rotationbutton->move(rotationLabel->width(), buttonShift);
+
+
+        scaleGroup = new QButtonGroup(this);
+        colorGroup = new QButtonGroup(this);
+        rotationGroup = new QButtonGroup(this);
+        scaleGroup->addButton(linearButton);
+        scaleGroup->addButton(logButton);
+        colorGroup->addButton(regularPaletteButton);
+        colorGroup->addButton(prettyPaletteButton);
+        colorGroup->addButton(greyScalePaletteButton);
+        colorGroup->addButton(glowingPaletteButton);
+        rotationGroup->addButton(zeroRotationButton);
+        rotationGroup->addButton(minus90RotationButton);
+        rotationGroup->addButton(plus90Rotationbutton);
+
+        linearButton->setChecked(true);
+        regularPaletteButton->setChecked(true);
+//        zeroRotationButton->setChecked(true);
+        minus90RotationButton->setChecked(true);
+//        linearButton->palette.setColor();
+
+        linearButton->setAutoFillBackground(true);
+        logButton->setAutoFillBackground(true);
+        regularPaletteButton->setAutoFillBackground(true);
+        prettyPaletteButton->setAutoFillBackground(true);
+        greyScalePaletteButton->setAutoFillBackground(true);
+        glowingPaletteButton->setAutoFillBackground(true);
+        zeroRotationButton->setAutoFillBackground(true);
+        minus90RotationButton->setAutoFillBackground(true);
+        plus90Rotationbutton->setAutoFillBackground(true);
+        scaleLabel->setAutoFillBackground(true);
+        colorPaletteLabel->setAutoFillBackground(true);
+        rotationLabel->setAutoFillBackground(true);
+
+        linearButton->hide();
+        logButton->hide();
+        regularPaletteButton->hide();
+        prettyPaletteButton->hide();
+        greyScalePaletteButton->hide();
+        glowingPaletteButton->hide();
+        zeroRotationButton->hide();
+        minus90RotationButton->hide();
+        plus90Rotationbutton->hide();
+        scaleLabel->hide();
+        colorPaletteLabel->hide();
+        rotationLabel->hide();
+
+        connect(linearButton, SIGNAL(toggled(bool)),
+                 this, SLOT(linearScalePlease(bool)));
+        connect(logButton, SIGNAL(toggled(bool)),
+                 this, SLOT(logScalePlease(bool)));
+        connect(regularPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(regularPalettePlease(bool)));
+        connect(prettyPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(prettyPalettePlease(bool)));
+        connect(greyScalePaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(greyScalePalettePlease(bool)));
+        connect(glowingPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(glowingPalettePlease(bool)));
+        connect(zeroRotationButton, SIGNAL(toggled(bool)),
+                 this, SLOT(zeroRotationPlease(bool)));
+        connect(minus90RotationButton, SIGNAL(toggled(bool)),
+                 this, SLOT(plus90RotationPlease(bool)));
+        connect(plus90Rotationbutton, SIGNAL(toggled(bool)),
+                 this, SLOT(minus90RotationPlease(bool)));
+
+        connect(this, SIGNAL(signalUpdateCamera()),
+                this, SLOT(timedUpdate()));
+    }
+    BasicGlCamera::~BasicGlCamera()
+    {
+    }
+    void BasicGlCamera::assignPixelMap(const PixelMap& map)
+    {
+        fPixelMap = map;
+
+        for (auto it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+        {
+            hardwareMapping[it->index] = it->hw();
+            softwareMapping[it->hw()]  = it->index;
+        }
+
+        //now construct the correspondance between pixels and patches
+        for (int i=0;i<NTMARK;i++)
+            for (int j=0;j<9;j++)
+                pixelsPatch[softwareMapping[i*9+j]] = i;
+
+        calculatePixelsCoords();
+
+        for (int i=0;i<1440;i++)
+        {
+            for (int j=0;j<6;j++)
+                neighbors[i][j] = -1;
+            updateNeighbors(i);
+        }
+
+        buildVerticesList();
+
+        buildPatchesIndices();
+
+    }
+    void BasicGlCamera::enableText(bool on)
+    {
+        fTextEnabled = on;
+    }
+    void BasicGlCamera::setPatchColor(int id, float color[3])
+    {
+        for (int i=0;i<9;i++)
+            for (int j=0;j<3;j++)
+                pixelsColor[softwareMapping[id*9+i]][j] = color[j];
+    }
+    void BasicGlCamera::setUnits(const string& units)
+    {
+        unitsText = units;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::setTitle(const string& title)
+    {
+        titleText = title;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::SetWhite(int idx)
+    {
+        fWhite = idx;
+        fWhitePatch = pixelsPatch[fWhite];
+        if (isVisible() && autoRefresh)
+            updateGL();
+//         CalculatePatchColor();
+    }
+    void BasicGlCamera::SetMin(int64_t min)
+    {
+//        cout << "min: " << min << endl;
+        fMin = min;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::setAutoscaleLowerLimit(float val)
+    {
+        fScaleLimit = val;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+
+    void BasicGlCamera::SetMax(int64_t max)
+    {
+//        cout << "max: " << max << endl;
+        fMax = max;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::linearScalePlease(bool checked)
+    {
+        if (!checked) return;
+        logScale = false;
+        pixelColorUpToDate = false;
+        emit colorPaletteHasChanged();
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::UpdateText()
+    {
+        ostringstream str;
+        float min, max, median;
+        int ii=0;
+        for (;ii<ACTUAL_NUM_PIXELS;ii++)
+        {
+            if (finite(fData[ii]))
+            {
+                min = max = fData[ii];
+                break;
+            }
+        }
+        double mean = 0;
+        double rms = 0;
+        median = 0;
+        if (ii==ACTUAL_NUM_PIXELS)
+        {
+            fmin = fmax = fmean = frms = fmedian = 0;
+            return;
+        }
+
+        vector<double> medianVec;
+        medianVec.resize(ACTUAL_NUM_PIXELS);
+        auto it = medianVec.begin();
+        int numSamples = 0;
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            if (!finite(fData[i]))
+                continue;
+            if (fData[i] < min)
+                min = fData[i];
+            if (fData[i] > max)
+                max = fData[i];
+            mean += fData[i];
+            rms += fData[i]*fData[i];
+            //medianSet.insert(fData[i]);
+            *it = fData[i];
+            it++;
+            numSamples++;
+        }
+
+//        vector<double> medianVec;
+//        medianVec.resize(ACTUAL_NUM_PIXELS);
+//        int iii=0;
+//        for (auto it=medianVec.begin(); it != medianVec.end(); it++) {
+//            *it = fData[iii];
+//            iii++;
+//        }
+        sort(medianVec.begin(), medianVec.begin()+numSamples);
+
+
+        mean /= numSamples;
+        rms = sqrt((rms/numSamples) - (mean * mean));
+
+//       multiset<double>::iterator it = medianSet.begin();
+        auto jt = medianVec.begin();
+        for (int i=0;i<(numSamples/2)-1;i++)
+        {
+//            it++;
+            jt++;
+        }
+        median = *jt;
+ //       cout << *it << " " << *jt << endl;
+        if (numSamples%2==0){
+        jt++;
+        median += *jt;
+        median /= 2;}
+
+        str << "Min: " << min << endl << " Max: " << max << " Mean: " << mean << " RMS: " << rms << " Median: " << median;
+        str << " Units: " << unitsText;
+        dataText = str.str();
+
+        fmin = min;
+        fmax = max;
+        fmean = mean;
+        frms = rms;
+        fmedian = median;
+    }
+    void BasicGlCamera::DrawCameraText()
+    {
+        if (!fTextEnabled)
+            return;
+        glPushMatrix();
+        glLoadIdentity();
+//         cout << width() << " " << height() << endl;
+        int textSize = (int)(height()*14/600);
+//        setFont(QFont("Times", textSize));
+        qglColor(QColor(255,223,127));
+        float shiftx = 0.01f;//0.55f;
+        float shifty = 0.01f;//0.65f;
+        renderText(-shownSizex/2.f + shiftx, 0.f, 0.f, QString(dataText.c_str()));//-shownSizey/2.f + shifty, 0.f, QString(dataText.c_str()));
+
+
+//        int textLength = titleText.size();
+        renderText(-shownSizex/2.f + shiftx, shownSizey/2.f - textSize*pixelSize - shifty, 0.f, QString(titleText.c_str()));
+
+        glPopMatrix();
+
+  //      textSize = (int)(600*14/600);
+//        setFont(QFont("Times", textSize));
+    }
+    void BasicGlCamera::DrawScale()
+    {
+        glPushMatrix();
+        glLoadIdentity();
+        glPushAttrib(GL_POLYGON_BIT);
+        glShadeModel(GL_SMOOTH);
+        glBegin(GL_QUADS);
+        float oneX = shownSizex/2.f - shownSizex/50.f;
+        float twoX = shownSizex/2.f;
+        float oneY = -shownSizey/2.f;
+        float twoY = -shownSizey/4.f;
+        float threeY = 0;
+        float fourY = shownSizey/4.f;
+        float fiveY = shownSizey/2.f;
+        glColor3f(rr[0], gg[0], bb[0]);
+        glVertex2f(oneX, oneY);
+        glVertex2f(twoX, oneY);
+        glColor3f(rr[1], gg[1], bb[1]);
+        glVertex2f(twoX, twoY);
+        glVertex2f(oneX, twoY);
+
+        glVertex2f(oneX, twoY);
+        glVertex2f(twoX, twoY);
+        glColor3f(rr[2], gg[2], bb[2]);
+        glVertex2f(twoX, threeY);
+        glVertex2f(oneX, threeY);
+
+        glVertex2f(oneX, threeY);
+        glVertex2f(twoX, threeY);
+        glColor3f(rr[3], gg[3], bb[3]);
+        glVertex2f(twoX, fourY);
+        glVertex2f(oneX, fourY);
+
+        glVertex2f(oneX, fourY);
+        glVertex2f(twoX, fourY);
+        glColor3f(rr[4], gg[4], bb[4]);
+        glVertex2f(twoX, fiveY);
+        glVertex2f(oneX, fiveY);
+        float zeroX = oneX - shownSizex/50.f;
+        float zeroY = fiveY - shownSizey/50.f;
+        glColor3fv(tooHighValueCoulour);
+        glVertex2f(zeroX, fiveY);
+        glVertex2f(oneX, fiveY);
+        glVertex2f(oneX, zeroY);
+        glVertex2f(zeroX, zeroY);
+        glColor3fv(tooLowValueCoulour);
+        glVertex2f(zeroX, -fiveY);
+        glVertex2f(oneX, -fiveY);
+        glVertex2f(oneX, -zeroY);
+        glVertex2f(zeroX, -zeroY);
+        glEnd();
+        glTranslatef(0,0,0.1f);
+
+        //draw linear/log tick marks
+        glColor3f(0.f,0.f,0.f);
+        glBegin(GL_LINES);
+        float value;
+        for (int i=1;i<10;i++)
+        {
+            if (logScale)
+                value = log10(i);
+            else
+                value = (float)(i)/10.f;
+            float yy = -shownSizey/2.f + value*shownSizey;
+            glVertex2f(oneX, yy);
+            glVertex2f(twoX, yy);
+        }
+        glEnd();
+        glPopAttrib();
+        glPopMatrix();
+    }
+    void BasicGlCamera::logScalePlease(bool checked)
+    {
+        if (!checked) return;
+        logScale = true;
+        pixelColorUpToDate = false;
+        emit colorPaletteHasChanged();
+          if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::regularPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0;    rr[1] = 0;     rr[2] = 0;    rr[3] = 1.0f;  rr[4] = 1;
+        gg[0] = 0;    gg[1] = 1;     gg[2] = 1;    gg[3] = 1;     gg[4] = 0;
+        bb[0] = 0.5f; bb[1] = 1;     bb[2] = 0;    bb[3] = 0;     bb[4] = 0;
+        tooHighValueCoulour[0] = 1.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 1.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 0.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::prettyPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0.f;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0.f; rr[1] = 0.35f;     rr[2] = 0.85f;    rr[3] = 1.0f;  rr[4] = 1.f;
+        gg[0] = 0.f; gg[1] = 0.10f;     gg[2] = 0.20f;    gg[3] = 0.73f;     gg[4] = 1.f;
+        bb[0] = 0.f; bb[1] = 0.03f;     bb[2] = 0.06f;    bb[3] = 0.00f;     bb[4] = 1.f;
+        tooHighValueCoulour[0] = 0.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 1.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::greyScalePalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0; rr[1] = 0.25f;     rr[2] = 0.5f;    rr[3] = 0.75f;  rr[4] = 1.0f;
+        gg[0] = 0; gg[1] = 0.25f;     gg[2] = 0.5f;    gg[3] = 0.75f;     gg[4] = 1.0f;
+        bb[0] = 0; bb[1] = 0.25f;     bb[2] = 0.5f;    bb[3] = 0.75f;     bb[4] = 1.0f;
+        tooHighValueCoulour[0] = 0.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 1.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::glowingPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0.15; rr[1] = 0.5;     rr[2] = 1.f;    rr[3] = 0.0f;  rr[4] = 1.f;
+        gg[0] = 0.15; gg[1] = 0.5;     gg[2] = 1.f;    gg[3] = 0.5f;     gg[4] = 0.5f;
+        bb[0] = 0.15; bb[1] = 0.5;     bb[2] = 1;      bb[3] = 1.f;     bb[4] = 0.f;
+        tooHighValueCoulour[0] = 1.f;
+        tooHighValueCoulour[1] = 0.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 1.f;
+        tooLowValueCoulour[2] = 0.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::SetAutoRefresh(bool on)
+    {
+        autoRefresh = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::zeroRotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = 0;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::plus90RotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = 90;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::minus90RotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = -90;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+
+    void BasicGlCamera::initializeGL()
+    {
+        qglClearColor(QColor(212,208,200));//25,25,38));
+        glShadeModel(GL_FLAT);
+        glEnable(GL_DEPTH_TEST);
+        glDisable(GL_CULL_FACE);
+
+   //     glEnable (GL_LINE_SMOOTH);
+   //     glEnable (GL_BLEND);
+   //     glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+   //     glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+
+    }
+    void BasicGlCamera::resizeGL(int cWidth, int cHeight)
+    {
+        glViewport(0, 0, cWidth, cHeight);
+         glMatrixMode(GL_PROJECTION);
+         glLoadIdentity();
+         GLfloat windowRatio = (float)cWidth/(float)cHeight;
+         if (windowRatio < 1)
+         {
+             windowRatio = 1.0f/windowRatio;
+             gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+             pixelSize = 2*viewSize/(float)cWidth;
+             shownSizex = 2*viewSize;
+             shownSizey = 2*viewSize*windowRatio;
+         }
+         else
+         {
+             gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+             pixelSize = 2*viewSize/(float)cHeight;
+             shownSizex = 2*viewSize*windowRatio;
+             shownSizey = 2*viewSize;
+         }
+         glMatrixMode(GL_MODELVIEW);
+
+         fTextSize = (int)(cWidth*12/600); //want a sized 12 font for a window of 600 pixels width
+         setFont(QFont("Monospace", fTextSize));
+    }
+    void BasicGlCamera::paintGL()
+    {
+         glClear(GL_COLOR_BUFFER_BIT);
+         glLoadIdentity();
+
+         glTranslatef(0,-0.44,0);
+         glScalef(1.5, 1.5, 1.5);
+
+         drawCamera(true);
+
+         drawPatches();
+    }
+    void BasicGlCamera::toggleInterfaceDisplay()
+    {
+        if (linearButton->isVisible())
+        {
+            linearButton->hide();
+            logButton->hide();
+            regularPaletteButton->hide();
+            prettyPaletteButton->hide();
+            greyScalePaletteButton->hide();
+            glowingPaletteButton->hide();
+            zeroRotationButton->hide();
+            minus90RotationButton->hide();
+            plus90Rotationbutton->hide();
+            scaleLabel->hide();
+            colorPaletteLabel->hide();
+            rotationLabel->hide();
+        }
+        else
+        {
+            linearButton->show();
+            logButton->show();
+            regularPaletteButton->show();
+            prettyPaletteButton->show();
+            greyScalePaletteButton->show();
+            glowingPaletteButton->show();
+            zeroRotationButton->show();
+            minus90RotationButton->show();
+            plus90Rotationbutton->show();
+            scaleLabel->show();
+            colorPaletteLabel->show();
+            rotationLabel->show();
+        }
+    }
+
+    void BasicGlCamera::mousePressEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::mouseMoveEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::mouseDoubleClickEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::timedUpdate()
+    {
+        if (isVisible())
+            updateGL();
+    }
+    void BasicGlCamera::updateCamera()
+    {
+        emit signalUpdateCamera();
+    }
+    void BasicGlCamera::drawCamera(bool alsoWire)
+    {
+//        cout << "Super PaintGL" << endl;
+        glColor3f(0.5,0.5,0.5);
+        glLineWidth(1.0);
+        float color;
+
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            color = float(fData[i*fPixelStride+fcSlice]);// + ]eventData[nRoi*i + whichSlice]+(VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+            int index = 0;
+            while (ss[index] < color)
+                index++;
+            index--;
+            float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+            float weight1 = 1.0f-weight0;
+            pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+            pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+            pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+        }
+
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+ //           if (i == 690 ||
+ //               i == 70)
+ //               continue;
+            glColor3fv(pixelsColor[i]);
+            glLoadName(i);
+
+        drawHexagon(i,true);
+
+        }
+        if (!alsoWire)
+            return;
+        glColor3f(0.0f,0.0f,0.0f);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+//            if (i == 690 ||
+//                i == 70)
+//                continue;
+            drawHexagon(i, false);
+        }
+    }
+    void BasicGlCamera::drawPatches()
+    {
+        glLineWidth(2.0f);
+        float backupRadius = hexRadius;
+        hexRadius *= 0.95;
+        glColor3f(0.5f, 0.5f, 0.3f);
+        glBegin(GL_LINES);
+        for (int i=0;i<NTMARK;i++)
+        {
+            for (unsigned int j=0;j<patchesIndices[i].size();j++)
+            {
+                glVertex2fv(verticesList[patchesIndices[i][j].first]);
+                glVertex2fv(verticesList[patchesIndices[i][j].second]);
+            }
+        }
+        glEnd();
+        hexRadius = backupRadius;
+    }
+    int BasicGlCamera::PixelAtPosition(const QPoint &cPos)
+    {
+        const int MaxSize = 512;
+        GLuint buffer[MaxSize];
+        GLint viewport[4];
+
+        makeCurrent();
+
+        glGetIntegerv(GL_VIEWPORT, viewport);
+        glSelectBuffer(MaxSize, buffer);
+        glRenderMode(GL_SELECT);
+
+        glInitNames();
+        glPushName(0);
+
+        glMatrixMode(GL_PROJECTION);
+        glPushMatrix();
+        glLoadIdentity();
+        GLfloat windowRatio = GLfloat(width()) / GLfloat(height());
+        gluPickMatrix(GLdouble(cPos.x()), GLdouble(viewport[3] - cPos.y()),
+                1.0, 1.0, viewport);
+
+        if (windowRatio < 1)
+         {
+             windowRatio = 1.0f/windowRatio;
+             gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+         }
+         else
+         {
+             gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+         }
+
+        glMatrixMode(GL_MODELVIEW);
+        drawCamera(false);
+        glMatrixMode(GL_PROJECTION);
+        glPopMatrix();
+
+        //for some reason that I cannot understand, the push/pop matrix doesn't do the trick here... bizarre
+        //ok, so re-do the resizeGL thing.
+        resizeGL(width(), height());
+
+        if (!glRenderMode(GL_RENDER))
+            return -1;
+
+        return buffer[3];
+    }
+    void BasicGlCamera::drawHexagon(int index, bool solid)
+    {
+/*        float minX, maxX, minY, maxY;
+        minX = minY = 1e10;
+        maxX = maxY = -1e10;
+        for (int i=0;i<1438;i++)
+        {
+            for (int j=0;j<6;j++)
+            {
+                if (verticesList[verticesIndices[i][j]][0] > maxX)
+                    maxX = verticesList[verticesIndices[i][j]][0];
+                if (verticesList[verticesIndices[i][j]][0] < minX)
+                    minX = verticesList[verticesIndices[i][j]][0];
+                if (verticesList[verticesIndices[i][j]][1] > maxY)
+                    maxY = verticesList[verticesIndices[i][j]][1];
+                if (verticesList[verticesIndices[i][j]][1] < minY)
+                    minY = verticesList[verticesIndices[i][j]][1];
+            }
+        }
+        cout << "Min, Max X: " << minX << " " << maxX << endl;
+        cout << "Min, Max Y: " << minY << " " << maxY << endl;
+        exit(0);*/
+        if (solid)
+            glBegin(GL_POLYGON);
+        else
+            glBegin(GL_LINE_LOOP);
+
+        glVertex2fv(verticesList[verticesIndices[index][0]]);
+        glVertex2fv(verticesList[verticesIndices[index][1]]);
+        glVertex2fv(verticesList[verticesIndices[index][2]]);
+        glVertex2fv(verticesList[verticesIndices[index][3]]);
+        glVertex2fv(verticesList[verticesIndices[index][4]]);
+        glVertex2fv(verticesList[verticesIndices[index][5]]);
+        if (solid)
+            glVertex2fv(verticesList[verticesIndices[index][0]]);
+
+        glEnd();
+    }
+
+    void BasicGlCamera::updateNeighbors(int currentPixel)
+    {
+        float squaredDistance = 0;
+        for (int i=0;i<currentPixel;i++)
+        {
+            squaredDistance = (pixelsCoords[i][0] - pixelsCoords[currentPixel][0])*
+                              (pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) +
+                              (pixelsCoords[i][1] - pixelsCoords[currentPixel][1])*
+                              (pixelsCoords[i][1] - pixelsCoords[currentPixel][1]);
+            if (squaredDistance < 4*hexRadius*hexRadius*(1.0f+hexTolerance))//neighbor !
+            {//ok, but which one ?
+                if (fabs(pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) < hexTolerance &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//top
+                    neighbors[i][0] = currentPixel;
+                    neighbors[currentPixel][3] = i;
+                    continue;}
+                if (fabs(pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) < hexTolerance &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//bottom
+                    neighbors[i][3] = currentPixel;
+                    neighbors[currentPixel][0] = i;
+                    continue;}
+                if (pixelsCoords[i][0] > pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//top right
+                    neighbors[i][4] = currentPixel;
+                    neighbors[currentPixel][1] = i;
+                    continue;}
+                if (pixelsCoords[i][0] > pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//bottom right
+                    neighbors[i][5] = currentPixel;
+                    neighbors[currentPixel][2] = i;
+                    continue;}
+                if (pixelsCoords[i][0] < pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//top left
+                    neighbors[i][2] = currentPixel;
+                    neighbors[currentPixel][5] = i;
+                    continue;}
+                if (pixelsCoords[i][0] < pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//bottom left
+                    neighbors[i][1] = currentPixel;
+                    neighbors[currentPixel][4] = i;
+                    continue;}
+            }
+        }
+    }
+    void BasicGlCamera::skipPixels(int start, int howMany)
+    {
+        for (int i=start;i<MAX_NUM_PIXELS-howMany;i++)
+        {
+            pixelsCoords[i][0] = pixelsCoords[i+howMany][0];
+            pixelsCoords[i][1] = pixelsCoords[i+howMany][1];
+        }
+    }
+    void BasicGlCamera::calculatePixelsCoords()
+    {
+        if (pixelsCoords[0][1] >= (0.299999-hexRadius) && pixelsCoords[0][1] <= (0.300001-hexRadius))
+            return;
+        pixelsCoords[0][0] = 0;
+        pixelsCoords[0][1] = 0.3 - hexRadius;
+        pixelsCoords[0][2] = 0;
+        pixelsCoords[1][0] = 0;
+        pixelsCoords[1][1] = 0.3+hexRadius;
+        pixelsCoords[1][2] = 0;
+        neighbors[0][0] = 1;
+        neighbors[1][3] = 0;
+        //from which side of the previous hexagon are we coming from ?
+        int fromSide = 3;
+        //to which side are we heading to ?
+        int toSide = 0;
+        for (int i=2;i<MAX_NUM_PIXELS;i++)
+        {
+            toSide = fromSide-1;
+            if (toSide < 0)
+                toSide =5;
+            while (neighbors[i-1][toSide] >= 0)
+            {
+                toSide--;
+                if (toSide < 0)
+                    toSide = 5;
+            }
+            fromSide = toSide + 3;
+            if (fromSide > 5)
+                fromSide -= 6;
+            //ok. now we now in which direction we're heading
+            pixelsCoords[i][0] = pixelsCoords[i-1][0];
+            pixelsCoords[i][1] = pixelsCoords[i-1][1];
+            pixelsCoords[i][2] = pixelsCoords[i-1][2];
+            switch (toSide)
+            {
+            case 0:
+                pixelsCoords[i][1] += 2*hexRadius;
+            break;
+            case 1:
+                pixelsCoords[i][0] += (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] += (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 2:
+                pixelsCoords[i][0] += (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] -= (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 3:
+                pixelsCoords[i][1] -= 2*hexRadius;
+            break;
+            case 4:
+                pixelsCoords[i][0] -= (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] -= (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 5:
+                pixelsCoords[i][0] -= (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] += (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            };
+//            pixelsCoords[i][1] -= hexRadius;
+
+            updateNeighbors(i);
+        }
+        //Ok. So now we've circled around all the way to MAX_NUM_PIXELS
+        //do the required shifts so that it matches the fact camera up to ACTUAL_NUM_PIXELS pixels
+        //remember the location pixels 1438 and 1439, and re-assign them later on
+        GLfloat backupCoords[4];
+        skipPixels(1200, 1);
+        skipPixels(1218, 3);
+        skipPixels(1236, 1);
+        skipPixels(1256, 1);
+        skipPixels(1274, 3);
+        skipPixels(1292, 3);
+        skipPixels(1309, 6);
+        skipPixels(1323, 7);
+        skipPixels(1337, 6);
+        skipPixels(1354, 6);
+        skipPixels(1368, 7);
+        //la c'est dans 1390 qu'il y a 1439
+         backupCoords[0] = pixelsCoords[1390][0];
+         backupCoords[1] = pixelsCoords[1390][1];
+        skipPixels(1382, 9);
+         skipPixels(1394, 12);
+        skipPixels(1402, 15);
+        skipPixels(1410, 12);
+        //la c'est dans 1422 qu'il y a 1438
+        backupCoords[2] = pixelsCoords[1422][0];
+        backupCoords[3] = pixelsCoords[1422][1];
+        skipPixels(1422, 12);
+        skipPixels(1430, 15);
+
+        pixelsCoords[1438][0] = backupCoords[2];
+        pixelsCoords[1438][1] = backupCoords[3];
+        pixelsCoords[1439][0] = backupCoords[0];
+        pixelsCoords[1439][1] = backupCoords[1];
+   }
+    void BasicGlCamera::buildVerticesList()
+    {
+        numVertices = 0;
+         GLfloat cVertex[2];
+         for (int i=0;i<NPIX;i++)
+         {
+             for (int j=0;j<6;j++)
+             {
+                 for (int k=0;k<2;k++)
+                     cVertex[k] = hexcoords[j][k]*hexRadius + pixelsCoords[i][k];
+
+                 bool found = false;
+                 for (int k=0;k<numVertices;k++)
+                 {
+                     if ((cVertex[0] - verticesList[k][0])*
+                         (cVertex[0] - verticesList[k][0]) +
+                         (cVertex[1] - verticesList[k][1])*
+                         (cVertex[1] - verticesList[k][1]) < hexTolerance*hexTolerance)
+                         {
+                             found = true;
+                             break;
+                         }
+                 }
+                 if (!found)
+                 {
+                     for (int k=0;k<2;k++)
+                         verticesList[numVertices][k] = cVertex[k];
+                     numVertices++;
+                 }
+             }
+         }
+//cout << "numVertices: " << numVertices << endl;
+         for (int i=0;i<NPIX;i++)
+         {
+             for (int j=0;j<6;j++)
+             {
+                 for (int k=0;k<2;k++)
+                     cVertex[k] = hexcoords[j][k]*hexRadius + pixelsCoords[i][k];
+
+                 for (int k=0;k<numVertices;k++)
+                 {
+                     if ((cVertex[0] - verticesList[k][0])*
+                          (cVertex[0] - verticesList[k][0]) +
+                          (cVertex[1] - verticesList[k][1])*
+                          (cVertex[1] - verticesList[k][1]) < hexTolerance*hexTolerance)
+                          {
+                             verticesIndices[i][j] = k;
+                             break;
+                          }
+                 }
+             }
+         }
+    }
+    void BasicGlCamera::buildPatchesIndices()
+    {
+        vector<edge>::iterator it;
+        bool erased = false;
+//        patchesIndices.resize(NTMARK);
+        for (int i=0;i<NTMARK;i++)//for all patches
+        {
+            patchesIndices[i].clear();
+            for (int j=0;j<9;j++)//for all cells of the current patch
+            {
+                if (softwareMapping[i*9+j] >= ACTUAL_NUM_PIXELS)
+                    continue;
+                for (int k=0;k<6;k++)//for all sides of the current cell
+                {
+                    int first = k-1;
+                    int second = k;
+                    if (first < 0)
+                        first = 5;
+                    erased = false;
+                    for (it=(patchesIndices[i]).begin(); it != (patchesIndices[i]).end(); it++)//check if this side is here already or not
+                    {
+                        const int idx = i*9+j;
+
+                        if ((it->first == verticesIndices[softwareMapping[idx]][first] &&
+                             it->second == verticesIndices[softwareMapping[idx]][second]) ||
+                            (it->first == verticesIndices[softwareMapping[idx]][second] &&
+                             it->second == verticesIndices[softwareMapping[idx]][first]))
+                        {
+                            patchesIndices[i].erase(it);
+                            erased = true;
+                            break;
+                        }
+                    }
+                    if (!erased)
+                    {
+                        edge temp;
+                        temp.first = verticesIndices[softwareMapping[i*9+j]][first];
+                        temp.second = verticesIndices[softwareMapping[i*9+j]][second];
+                        patchesIndices[i].push_back(temp);
+                    }
+                }
+            }
+        }
+//        for (int i=0;i<NTMARK;i++)
+//        {
+//            cout << ".....................patch " << i << " size: " << patchesIndices[i].size() << endl;
+//            for (unsigned int j=0;j<patchesIndices[i].size();j++)
+//            {
+//               if (patchesIndices[i][j].first < 0 || patchesIndices[i][j].first > 3013)
+//                cout << patchesIndices[i][j].first << " and " << patchesIndices[i][j].second << " and " << j << endl;
+//            }
+//        }
+    }
+
Index: branches/FACT++_part_filenames/gui/BasicGlCamera.h
===================================================================
--- branches/FACT++_part_filenames/gui/BasicGlCamera.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/BasicGlCamera.h	(revision 18732)
@@ -0,0 +1,185 @@
+#ifndef BASIC_GL_CAMERA_H_
+#define BASIC_GL_CAMERA_H_
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+#define MAX_NUM_PIXELS 1600
+#define ACTUAL_NUM_PIXELS 1440
+
+#include <vector>
+
+#include <QtOpenGL/QGLWidget>
+
+#include "externals/PixelMap.h"
+
+class QMouseEvent;
+class QRadioButton;
+class QLabel;
+class QButtonGroup;
+
+///structure for storing edges of hexagons (for blurry display)
+struct edge
+{
+    int first;
+    int second;
+};
+
+///structure for storing neighbors of pixels. For camera position calculation and blurry display
+struct PixelsNeighbors
+{
+    //neighbors. clockwise, starting from top
+    int neighbors[6];
+    PixelsNeighbors()
+    {
+        for (int i=0;i<6;i++)
+            neighbors[i] = -1;
+    }
+    int& operator[](int index){return neighbors[index];}
+};
+
+class BasicGlCamera : public QGLWidget
+{
+    Q_OBJECT
+
+public:
+    BasicGlCamera(QWidget* parent = 0);
+    ~BasicGlCamera();
+
+    int fWhite;
+    int fWhitePatch;
+
+    int64_t fMin;
+    int64_t fMax;
+    float fScaleLimit;
+    void setAutoscaleLowerLimit(float);
+
+    int fTextSize;
+
+    static PixelMap fPixelMap;
+    static int pixelsPatch[NPIX];
+
+    bool pixelColorUpToDate;
+
+    GLfloat patchColour[3];
+    GLfloat pixelContourColour[3];
+    GLfloat patchesCoulour[3];
+    GLfloat highlightedPatchesCoulour[3];
+    GLfloat highlightedPixelsCoulour[3];
+    GLfloat tooHighValueCoulour[3];
+    GLfloat tooLowValueCoulour[3];
+
+    std::string dataText;
+    std::string unitsText;
+    std::string titleText;
+
+    void setUnits(const std::string& units);
+    void setTitle(const std::string& title);
+    void SetWhite(int idx);
+    void SetMin(int64_t min);
+    void SetMax(int64_t max);
+    void SetAutoRefresh(bool on);
+    void updateCamera();
+    void assignPixelMap(const PixelMap& );
+    void enableText(bool);
+
+    bool fTextEnabled;
+
+    float ss[5];// = {0.00, 0.25, 0.5, 0.75, 1.00};
+    float rr[5];// = {0.15, 0.00, 0.00, 1.00, 0.85};
+    float gg[5];// = {0.15, 0.00, 1.00, 0.00, 0.85};
+    float bb[5];// = {0.15, 1.00, 0.00, 0.00, 0.85};
+
+public Q_SLOTS:
+        void linearScalePlease(bool);
+        void logScalePlease(bool);
+        void regularPalettePlease(bool);
+        void prettyPalettePlease(bool);
+        void greyScalePalettePlease(bool);
+        void glowingPalettePlease(bool);
+        void zeroRotationPlease(bool);
+        void plus90RotationPlease(bool);
+        void minus90RotationPlease(bool);
+        void timedUpdate();
+
+Q_SIGNALS:
+         void signalCurrentPixel(int pixel);
+         void signalPixelMoveOver(int pixel);
+         void signalPixelDoubleClick(int pixel);
+         void colorPaletteHasChanged();
+         void signalUpdateCamera();
+
+
+
+protected:
+    virtual void initializeGL();
+    virtual void resizeGL(int width, int height);
+    virtual void paintGL();
+    virtual void mousePressEvent(QMouseEvent *event);
+    virtual void mouseMoveEvent(QMouseEvent *event);
+    virtual void mouseDoubleClickEvent(QMouseEvent *event);
+    virtual void drawCamera(bool alsoWire);
+    virtual void drawPatches();
+    virtual void setPatchColor(int id, float color[3]);
+    virtual int PixelAtPosition(const QPoint &pos);
+    virtual void DrawCameraText();
+    void drawHexagon(int index, bool solid);
+
+    int fPixelStride;
+    int fcSlice;
+    std::vector<double>fData;
+
+ //   bool recalcColorPlease;
+    static GLfloat pixelsCoords[MAX_NUM_PIXELS][3];
+    static PixelsNeighbors neighbors[MAX_NUM_PIXELS];
+    static int hardwareMapping[NPIX];
+    GLfloat pixelsColor[NPIX][3];
+    static  GLfloat verticesList[NPIX*6][2];
+    static std::vector<edge> patchesIndices[160];
+    static int verticesIndices[NPIX][6];
+    static int softwareMapping[NPIX];
+    float shownSizex;
+    float shownSizey;
+    float pixelSize;
+    virtual void UpdateText();
+    void DrawScale();
+    void toggleInterfaceDisplay();
+    QRadioButton* linearButton;
+    QRadioButton* logButton;
+    QRadioButton* regularPaletteButton;
+    QRadioButton* prettyPaletteButton;
+    QRadioButton* greyScalePaletteButton;
+    QRadioButton* glowingPaletteButton;
+    QRadioButton* zeroRotationButton;
+    QRadioButton* minus90RotationButton;
+    QRadioButton* plus90Rotationbutton;
+    QLabel*       scaleLabel;
+    QLabel*       colorPaletteLabel;
+    QLabel*       rotationLabel;
+    QButtonGroup* scaleGroup;
+    QButtonGroup* colorGroup;
+    QButtonGroup* rotationGroup;
+
+
+    bool logScale;
+    int cameraRotation;
+    void buildVerticesList();
+    virtual void buildPatchesIndices();
+    void updateNeighbors(int currentPixel);
+    void calculatePixelsCoords();
+    float viewSize;
+    bool autoRefresh;
+
+  private:
+    void skipPixels(int start, int howMany);
+    float hexRadius;
+    float hexTolerance;
+     int numVertices;
+  protected:
+     float fmin, fmax, fmean, frms, fmedian;
+
+
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/CheckBoxDelegate.cc
===================================================================
--- branches/FACT++_part_filenames/gui/CheckBoxDelegate.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/CheckBoxDelegate.cc	(revision 18732)
@@ -0,0 +1,85 @@
+// **************************************************************************
+/** @class CheckBoxDelegate
+
+@brief A delegate which displays an arrow if there are sub items and raises an event if the checkbox is checked
+
+*/
+// **************************************************************************
+#include "CheckBoxDelegate.h"
+
+#include <QPainter>
+#include <QApplication>
+
+void CheckBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    //---  QColumnViewDelegate
+    const bool reverse = (option.direction == Qt::RightToLeft);
+    const int  width   = (option.rect.height() * 2) / 3;
+
+
+    // Modify the options to give us room to add an arrow
+    QStyleOptionViewItemV4 opt = option;
+    if (reverse)
+        opt.rect.adjust(width,0,0,0);
+    else
+        opt.rect.adjust(0,0,-width,0);
+
+    if (!(index.model()->flags(index) & Qt::ItemIsEnabled))
+    {
+        opt.showDecorationSelected = true;
+        opt.state |= QStyle::State_Selected;
+    }
+
+
+    QStyledItemDelegate::paint(painter, opt, index);
+
+
+    if (reverse)
+        opt.rect = QRect(option.rect.x(), option.rect.y(),
+                         width, option.rect.height());
+    else
+        opt.rect = QRect(option.rect.x() + option.rect.width() - width, option.rect.y(),
+                         width, option.rect.height());
+
+    // Draw >
+    if (index.model()->hasChildren(index))
+    {
+        const QWidget *view = opt.widget;
+
+        QStyle *style = view ? view->style() : qApp->style();
+        style->drawPrimitive(QStyle::PE_IndicatorColumnViewArrow, &opt,
+                             painter, view);
+    }
+}
+
+
+bool CheckBoxDelegate::editorEvent(QEvent *evt, QAbstractItemModel *model, const QStyleOptionViewItem &option,
+                                   const QModelIndex &index)
+{
+    QStandardItemModel *it = dynamic_cast<QStandardItemModel*>(model);
+    if (!it)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const QStandardItem *item = it->itemFromIndex(index);
+    if (!item)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState before = item->checkState();
+
+    const bool rc = QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState after = item->checkState();
+
+    if (before!=after)
+        QApplication::sendEvent(it->parent(), new CheckBoxEvent(*item));
+
+    return rc;
+}
+
+// **************************************************************************
+/** @class CheckBoxEvent
+
+@brief An event posted by the CheckBoxDelegate if the CheckBox is used
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/gui/CheckBoxDelegate.h
===================================================================
--- branches/FACT++_part_filenames/gui/CheckBoxDelegate.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/CheckBoxDelegate.h	(revision 18732)
@@ -0,0 +1,38 @@
+#ifndef FACT_CheckBoxDelegate
+#define FACT_CheckBoxDelegate
+
+#include <QEvent>
+#include <QStandardItem>
+
+using namespace std;
+
+class CheckBoxEvent : public QEvent
+{
+public:
+    const QStandardItem &item;
+
+    CheckBoxEvent(const QStandardItem &i)
+        : QEvent((QEvent::Type)QEvent::registerEventType()),
+    item(i) { }
+};
+
+
+#include <QStyledItemDelegate>
+
+class CheckBoxDelegate : public QStyledItemDelegate
+{
+public:
+    CheckBoxDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    bool editorEvent(QEvent *evt, QAbstractItemModel *model,
+                     const QStyleOptionViewItem &option,
+                     const QModelIndex &index);
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/DockWindow.cc
===================================================================
--- branches/FACT++_part_filenames/gui/DockWindow.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/DockWindow.cc	(revision 18732)
@@ -0,0 +1,57 @@
+// **************************************************************************
+/** @class DockWindow
+
+@brief A main window which can be used to display a QDockWidget from a tab
+
+*/
+// **************************************************************************
+#include "DockWindow.h"
+
+#include <QDockWidget>
+#include <QGridLayout>
+
+#include <stdexcept>
+
+using namespace std;
+
+DockWindow::DockWindow(QDockWidget *d, const QString &name)
+    : fDockWidget(d)
+{
+    QObject *w0 = d->parent();   // QWidget
+    if (!w0)
+        throw runtime_error("1st parent of QDockWidget is NULL");
+
+    QObject *w1 = w0->parent();  // QWidget
+    if (!w1)
+        throw runtime_error("2nd parent of QDockWidget is NULL");
+
+    QObject *w2 = w1->parent();  // QWidget
+    if (!w2)
+            throw runtime_error("3rd parent of QDockWidget is NULL");
+
+    fTabWidget = dynamic_cast<QTabWidget*>(w2);
+    if (!fTabWidget)
+        throw runtime_error("3rd parent of QDockWidget is not a QTabWidget");
+
+    setGeometry(d->geometry());
+    addDockWidget(Qt::LeftDockWidgetArea, fDockWidget);
+    setWindowTitle(name);
+
+    // FIXME: ToolTip, WhatsThis
+
+    show();
+}
+
+void DockWindow::closeEvent(QCloseEvent *)
+{
+    QWidget *w = new QWidget;
+
+    QGridLayout *l = new QGridLayout(w);
+    //layout->setObjectName(QString::fromUtf8("gridLayout_")+windowTitle());
+    l->addWidget(fDockWidget, 0, 0, 1, 1);
+
+    fTabWidget->addTab(w, windowTitle());
+    fTabWidget->setTabsClosable(true);
+
+    fDockWidget->setParent(w);
+}
Index: branches/FACT++_part_filenames/gui/DockWindow.h
===================================================================
--- branches/FACT++_part_filenames/gui/DockWindow.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/DockWindow.h	(revision 18732)
@@ -0,0 +1,25 @@
+#ifndef FACT_DockWindow
+#define FACT_DockWindow
+
+#include <QMainWindow>
+
+class QDockWidget;
+class QTabWidget;
+class QCloseEvent;
+
+class DockWindow : public QMainWindow
+{
+    Q_OBJECT;
+
+    QDockWidget  *fDockWidget;
+    QTabWidget   *fTabWidget;
+
+public:
+
+    DockWindow(QDockWidget *d, const QString &name);
+
+protected:
+    void closeEvent(QCloseEvent *);
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/FactGui.cc
===================================================================
--- branches/FACT++_part_filenames/gui/FactGui.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/FactGui.cc	(revision 18732)
@@ -0,0 +1,2 @@
+#include "gui/MainWindow.h"
+
Index: branches/FACT++_part_filenames/gui/FactGui.h
===================================================================
--- branches/FACT++_part_filenames/gui/FactGui.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/FactGui.h	(revision 18732)
@@ -0,0 +1,4120 @@
+#ifndef FACT_FactGui
+#define FACT_FactGui
+
+#include "MainWindow.h"
+
+#include <iomanip>
+#include <valarray>
+
+#include <boost/regex.hpp>
+
+#include <QTimer>
+#include <QtSql/QSqlError>
+#include <QtSql/QSqlTableModel>
+#include <QStandardItemModel>
+
+#include "CheckBoxDelegate.h"
+
+#include "src/Dim.h"
+#include "src/Converter.h"
+#include "src/Configuration.h"
+#include "src/DimNetwork.h"
+#include "src/tools.h"
+#include "src/DimData.h"
+#include "externals/PixelMap.h"
+
+#ifdef HAVE_ROOT
+#include "TROOT.h"
+#include "TSystem.h"
+#include "TGraph.h"
+#include "TGraphErrors.h"
+#include "TH2.h"
+#include "TBox.h"
+#include "TStyle.h"
+#include "TMarker.h"
+#include "TColor.h"
+#endif
+
+#include "QCameraWidget.h"
+
+#include "src/FAD.h"
+#include "src/HeadersMCP.h"
+#include "src/HeadersFTM.h"
+#include "src/HeadersFAD.h"
+#include "src/HeadersFSC.h"
+#include "src/HeadersBIAS.h"
+#include "src/HeadersDrive.h"
+#include "src/HeadersFeedback.h"
+#include "src/HeadersRateScan.h"
+#include "src/HeadersRateControl.h"
+#include "src/HeadersMagicWeather.h"
+
+using namespace std;
+
+// #########################################################################
+
+class FactGui : public MainWindow, public DimNetwork, public DimInfoHandler
+{
+private:
+    class FunctionEvent : public QEvent
+    {
+    public:
+        function<void(const QEvent &)> fFunction;
+
+        FunctionEvent(const function<void(const QEvent &)> &f)
+            : QEvent((QEvent::Type)QEvent::registerEventType()),
+            fFunction(f) { }
+
+        bool Exec() { fFunction(*this); return true; }
+    };
+
+    valarray<int8_t> fFtuStatus;
+
+    PixelMap fPixelMap;
+
+    //vector<int>  fPixelMapHW; // Software -> Hardware
+    vector<int> fPatchMapHW; // Software -> Hardware
+
+    bool fInChoosePatchTH;   // FIXME. Find a better solution
+    bool fInChooseBiasHv;    // FIXME. Find a better solution
+    bool fInChooseBiasCam;   // FIXME. Find a better solution
+
+    DimStampedInfo fDimDNS;
+
+    DimStampedInfo fDimLoggerStats;
+    DimStampedInfo fDimLoggerFilenameNight;
+    DimStampedInfo fDimLoggerFilenameRun;
+    DimStampedInfo fDimLoggerNumSubs;
+
+    DimStampedInfo fDimFtmPassport;
+    DimStampedInfo fDimFtmTriggerRates;
+    DimStampedInfo fDimFtmError;
+    DimStampedInfo fDimFtmFtuList;
+    DimStampedInfo fDimFtmStaticData;
+    DimStampedInfo fDimFtmDynamicData;
+    DimStampedInfo fDimFtmCounter;
+
+    DimStampedInfo fDimFadWriteStats;
+    DimStampedInfo fDimFadStartRun;
+    DimStampedInfo fDimFadRuns;
+    DimStampedInfo fDimFadEvents;
+    DimStampedInfo fDimFadRawData;
+    DimStampedInfo fDimFadEventData;
+    DimStampedInfo fDimFadConnections;
+    DimStampedInfo fDimFadFwVersion;
+    DimStampedInfo fDimFadRunNumber;
+    DimStampedInfo fDimFadDNA;
+    DimStampedInfo fDimFadTemperature;
+    DimStampedInfo fDimFadPrescaler;
+    DimStampedInfo fDimFadRefClock;
+    DimStampedInfo fDimFadRoi;
+    DimStampedInfo fDimFadDac;
+    DimStampedInfo fDimFadDrsCalibration;
+    DimStampedInfo fDimFadStatus;
+    DimStampedInfo fDimFadStatistics1;
+    //DimStampedInfo fDimFadStatistics2;
+    DimStampedInfo fDimFadFileFormat;
+
+    DimStampedInfo fDimFscTemp;
+    DimStampedInfo fDimFscVolt;
+    DimStampedInfo fDimFscCurrent;
+    DimStampedInfo fDimFscHumidity;
+
+    DimStampedInfo fDimFeedbackCalibration;
+    DimStampedInfo fDimFeedbackCalibrated;
+
+    DimStampedInfo fDimBiasNominal;
+    DimStampedInfo fDimBiasVolt;
+    DimStampedInfo fDimBiasDac;
+    DimStampedInfo fDimBiasCurrent;
+
+    DimStampedInfo fDimRateScan;
+
+    DimStampedInfo fDimMagicWeather;
+
+    map<string, DimInfo*> fServices;
+
+    // ========================== LED Colors ================================
+
+    enum LedColor_t
+    {
+        kLedRed,
+        kLedGreen,
+        kLedGreenWarn,
+        kLedGreenCheck,
+        kLedGreenBar,
+        kLedYellow,
+        kLedOrange,
+        kLedGray,
+        kLedWarnBorder,
+        kLedWarn,
+        kLedWarnTriangleBorder,
+        kLedWarnTriangle,
+        kLedInProgress,
+    };
+
+    void SetLedColor(QPushButton *button, LedColor_t col, const Time &t)
+    {
+        switch (col)
+        {
+        case kLedRed:
+            button->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
+            break;
+
+        case kLedGreen:
+            button->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+            break;
+
+        case kLedGreenBar:
+            button->setIcon(QIcon(":/Resources/icons/green bar.png"));
+            break;
+
+        case kLedGreenWarn:
+            button->setIcon(QIcon(":/Resources/icons/green warn.png"));
+            break;
+
+        case kLedGreenCheck:
+            button->setIcon(QIcon(":/Resources/icons/green check.png"));
+            break;
+
+        case kLedYellow:
+            button->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
+            break;
+
+        case kLedOrange:
+            button->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
+            break;
+
+        case kLedGray:
+            button->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+            break;
+
+        case kLedWarnBorder:
+            button->setIcon(QIcon(":/Resources/icons/warning 1.png"));
+            break;
+
+        case kLedWarn:
+            button->setIcon(QIcon(":/Resources/icons/warning 2.png"));
+            break;
+
+        case kLedWarnTriangle:
+            button->setIcon(QIcon(":/Resources/icons/warning 3.png"));
+            break;
+
+        case kLedWarnTriangleBorder:
+            button->setIcon(QIcon(":/Resources/icons/warning 4.png"));
+            break;
+
+        case kLedInProgress:
+            button->setIcon(QIcon(":/Resources/icons/in progress.png"));
+            break;
+
+        }
+
+        //button->setToolTip("Last change: "+QDateTime::currentDateTimeUtc().toString()+" UTC");
+        button->setToolTip(("Last change: "+t.GetAsStr()+" (UTC)").c_str());
+    }
+
+    // ===================== Services and Commands ==========================
+
+    QStandardItem *AddServiceItem(const string &server, const string &service, bool iscmd)
+    {
+        QListView *servers     = iscmd ? fDimCmdServers     : fDimSvcServers;
+        QListView *services    = iscmd ? fDimCmdCommands    : fDimSvcServices;
+        QListView *description = iscmd ? fDimCmdDescription : fDimSvcDescription;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+        {
+            m = new QStandardItemModel(this);
+            servers->setModel(m);
+            services->setModel(m);
+            description->setModel(m);
+        }
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+
+        if (l.size()>1)
+        {
+            cout << "hae" << endl;
+            return 0;
+        }
+
+        QStandardItem *col = l.size()==0 ? NULL : l[0];
+
+        if (!col)
+        {
+            col = new QStandardItem(server.c_str());
+            m->appendRow(col);
+
+            if (!services->rootIndex().isValid())
+            {
+                services->setRootIndex(col->index());
+                servers->setCurrentIndex(col->index());
+            }
+        }
+
+        QStandardItem *item = 0;
+        for (int i=0; i<col->rowCount(); i++)
+        {
+            QStandardItem *coli = col->child(i);
+            if (coli->text().toStdString()==service)
+                return coli;
+        }
+
+        item = new QStandardItem(service.c_str());
+        col->appendRow(item);
+        col->sortChildren(0);
+
+        if (!description->rootIndex().isValid())
+        {
+            description->setRootIndex(item->index());
+            services->setCurrentIndex(item->index());
+        }
+
+        if (!iscmd)
+            item->setCheckable(true);
+
+        return item;
+    }
+
+    void AddDescription(QStandardItem *item, const vector<Description> &vec)
+    {
+        if (!item)
+            return;
+        if (vec.size()==0)
+            return;
+
+        item->setToolTip(vec[0].comment.c_str());
+
+        const string str = Description::GetHtmlDescription(vec);
+
+        QStandardItem *desc = new QStandardItem(str.c_str());
+        desc->setSelectable(false);
+        item->setChild(0, 0, desc);
+    }
+
+    void AddServer(const string &s)
+    {
+        DimNetwork::AddServer(s);
+
+        const State state = GetState(s, GetCurrentState(s));
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddServer, this, s, state)));
+    }
+
+    void AddService(const string &server, const string &service, const string &fmt, bool iscmd)
+    {
+        const vector<Description> v = GetDescription(server, service);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddService, this, server, service, fmt, iscmd, v)));
+    }
+
+    void RemoveService(string server, string service, bool iscmd)
+    {
+        UnsubscribeService(server+'/'+service, true);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleRemoveService, this, server, service, iscmd)));
+    }
+
+    void RemoveAllServices(const string &server)
+    {
+        UnsubscribeAllServices(server);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleRemoveAllServices, this, server)));
+    }
+
+    void AddDescription(const string &server, const string &service, const vector<Description> &vec)
+    {
+        const bool iscmd = IsCommand(server, service)==true;
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddDescription, this, server, service, vec, iscmd)));
+    }
+
+    // ======================================================================
+
+    void handleAddServer(const string &server, const State &state)
+    {
+        handleStateChanged(Time(), server, state);
+    }
+
+    void handleAddService(const string &server, const string &service, const string &/*fmt*/, bool iscmd, const vector<Description> &vec)
+    {
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        AddDescription(item, vec);
+    }
+
+    void handleRemoveService(const string &server, const string &service, bool iscmd)
+    {
+        QListView *servers = iscmd ? fDimCmdServers : fDimSvcServers;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+            return;
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+        if (l.size()!=1)
+            return;
+
+        for (int i=0; i<l[0]->rowCount(); i++)
+        {
+            QStandardItem *row = l[0]->child(i);
+            if (row->text().toStdString()==service)
+            {
+                l[0]->removeRow(row->index().row());
+                return;
+            }
+        }
+    }
+
+    void handleRemoveAllServices(const string &server)
+    {
+        handleStateChanged(Time(), server, State(-2, "Offline", "No connection via DIM."));
+
+        QStandardItemModel *m = 0;
+        if ((m=dynamic_cast<QStandardItemModel*>(fDimCmdServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+
+        if ((m = dynamic_cast<QStandardItemModel*>(fDimSvcServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+    }
+
+    void handleAddDescription(const string &server, const string &service, const vector<Description> &vec, bool iscmd)
+    {
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        AddDescription(item, vec);
+    }
+
+    // ======================================================================
+
+    void SubscribeService(const string &service)
+    {
+        if (fServices.find(service)!=fServices.end())
+        {
+            cerr << "ERROR - We are already subscribed to " << service << endl;
+            return;
+        }
+
+        fServices[service] = new DimStampedInfo(service.c_str(), (void*)NULL, 0, this);
+    }
+
+    void UnsubscribeService(const string &service, bool allow_unsubscribed=false)
+    {
+        const map<string,DimInfo*>::iterator i=fServices.find(service);
+
+        if (i==fServices.end())
+        {
+            if (!allow_unsubscribed)
+                cerr << "ERROR - We are not subscribed to " << service << endl;
+            return;
+        }
+
+        delete i->second;
+
+        fServices.erase(i);
+    }
+
+    void UnsubscribeAllServices(const string &server)
+    {
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            if (i->first.substr(0, server.length()+1)==server+'/')
+            {
+                delete i->second;
+                fServices.erase(i);
+            }
+    }
+
+    // ======================= DNS ==========================================
+
+    uint32_t fDimVersion;
+
+    void UpdateGlobalStatus()
+    {
+        ostringstream dns;
+        dns << (fDimVersion==0?"No connection":"Connection");
+        dns << " to DIM DNS (" << getenv("DIM_DNS_NODE") << ")";
+        dns << (fDimVersion==0?".":" established");
+
+        ostringstream str;
+        str << "V" << fDimVersion/100 << 'r' << fDimVersion%100;
+
+        LedColor_t led = kLedGreen;
+        if (fDimVersion>0)
+        {
+            dns << fixed << setprecision(1) << right;
+            if (fFreeSpaceLogger!=UINT64_MAX)
+                dns << "<pre> * Data logger:   " << setw(7) << fFreeSpaceLogger*1e-7 << " GB</pre>";
+            if (fFreeSpaceData!=UINT64_MAX)
+                dns << "<pre> * Event Builder: " << setw(7) << fFreeSpaceData*1e-7 << " GB</pre>";
+
+            if (fFreeSpaceLogger<500000000 || fFreeSpaceData<500000000)
+                led = kLedGreenWarn;
+            if (fFreeSpaceLogger<200000000 || fFreeSpaceData<200000000)
+                led = kLedWarnTriangleBorder;
+
+            if (led!=kLedGreen)
+                str << " (Disk space!)";
+        }
+
+        fStatusDNSLabel->setToolTip(dns.str().c_str());
+
+        SetLedColor(fStatusDNSLed, fDimVersion==0 ? kLedRed : led, Time());
+
+        fStatusDNSLabel->setText(fDimVersion==0?"Offline":str.str().c_str());
+    }
+
+    void handleDimDNS(const DimData &d)
+    {
+        fDimVersion = d.size()!=4 ? 0 : d.get<uint32_t>();
+
+        UpdateGlobalStatus();
+
+        fShutdown->setEnabled(fDimVersion!=0);
+        fShutdownAll->setEnabled(fDimVersion!=0);
+    }
+
+
+    // ======================= Logger =======================================
+
+    uint64_t fFreeSpaceLogger;
+
+    void handleLoggerStats(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerET->setEnabled(connected);
+        fLoggerRate->setEnabled(connected);
+        fLoggerWritten->setEnabled(connected);
+        fLoggerFreeSpace->setEnabled(connected);
+        fLoggerSpaceLeft->setEnabled(connected);
+
+        fFreeSpaceLogger = UINT64_MAX;
+        UpdateGlobalStatus();
+
+        if (!connected)
+            return;
+
+        const uint64_t *vals = d.ptr<uint64_t>();
+
+        const size_t space   = vals[0];
+        const size_t written = vals[1];
+        const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceLogger = space;
+        UpdateGlobalStatus();
+
+        fLoggerFreeSpace->setSuffix(" MB");
+        fLoggerFreeSpace->setDecimals(0);
+        fLoggerFreeSpace->setValue(space*1e-6);
+
+        if (space>   1000000)  // > 1GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(2);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=  3000000)  // >= 3GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(1);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=100000000)  // >= 100GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(0);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+
+        fLoggerET->setTime(QTime().addSecs(rate>0?space/rate:0));
+        fLoggerRate->setValue(rate*1e-3); // kB/s
+        fLoggerWritten->setValue(written*1e-6);
+
+        fLoggerRate->setSuffix(" kB/s");
+        fLoggerRate->setDecimals(2);
+        fLoggerRate->setValue(rate);
+        if (rate>   2)  // > 2kB/s
+        {
+            fLoggerRate->setSuffix(" kB/s");
+            fLoggerRate->setDecimals(1);
+            fLoggerRate->setValue(rate);
+        }
+        if (rate>=100)  // >100kB/s
+        {
+            fLoggerRate->setSuffix(" kB/s");
+            fLoggerRate->setDecimals(0);
+            fLoggerRate->setValue(rate);
+        }
+        if (rate>=1000)  // >100kB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(2);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+        if (rate>=10000)  // >1MB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(1);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+        if (rate>=100000)  // >10MB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(0);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+
+        if (space/1000000>static_cast<size_t>(fLoggerSpaceLeft->maximum()))
+            fLoggerSpaceLeft->setValue(fLoggerSpaceLeft->maximum());  // GB
+        else
+            fLoggerSpaceLeft->setValue(space/1000000);  // MB
+    }
+
+    void handleLoggerFilenameNight(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerFilenameNight->setEnabled(connected);
+        if (!connected)
+            return;
+
+        fLoggerFilenameNight->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray, d.time);
+    }
+
+    void handleLoggerFilenameRun(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerFilenameRun->setEnabled(connected);
+        if (!connected)
+            return;
+
+        fLoggerFilenameRun->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray, d.time);
+    }
+
+    void handleLoggerNumSubs(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerSubscriptions->setEnabled(connected);
+        fLoggerOpenFiles->setEnabled(connected);
+        if (!connected)
+            return;
+
+        const uint32_t *vals = d.ptr<uint32_t>();
+
+        fLoggerSubscriptions->setValue(vals[0]);
+        fLoggerOpenFiles->setValue(vals[1]);
+    }
+
+
+    // ===================== All ============================================
+
+    bool CheckSize(const DimData &d, size_t sz, bool print=true) const
+    {
+        if (d.size()==0)
+            return false;
+
+        if (d.size()!=sz)
+        {
+            if (print)
+                cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << sz << endl;
+            return false;
+        }
+
+        return true;
+    }
+
+    // ===================== FAD ============================================
+
+    uint64_t fFreeSpaceData;
+
+    void handleFadWriteStats(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fEvtBuilderET->setEnabled(connected);
+        fEvtBuilderRate->setEnabled(connected);
+        fEvtBuilderWritten->setEnabled(connected);
+        fEvtBuilderFreeSpace->setEnabled(connected);
+        fEvtBuilderSpaceLeft->setEnabled(connected);
+
+        fFreeSpaceData = UINT64_MAX;
+        UpdateGlobalStatus();
+
+        if (!connected)
+            return;
+
+        const uint64_t *vals = d.ptr<uint64_t>();
+
+        const size_t space   = vals[0];
+        const size_t written = vals[1];
+        const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceData = space;
+        UpdateGlobalStatus();
+
+        fEvtBuilderFreeSpace->setSuffix(" MB");
+        fEvtBuilderFreeSpace->setDecimals(0);
+        fEvtBuilderFreeSpace->setValue(space*1e-6);
+
+        if (space>   1000000)  // > 1GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(2);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=  3000000)  // >= 3GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(1);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=100000000)  // >= 100GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(0);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+
+        fEvtBuilderET->setTime(QTime().addSecs(rate>0?space/rate:0));
+        fEvtBuilderRate->setValue(rate*1e-3); // kB/s
+        fEvtBuilderWritten->setValue(written*1e-6);
+
+        fEvtBuilderRate->setSuffix(" kB/s");
+        fEvtBuilderRate->setDecimals(2);
+        fEvtBuilderRate->setValue(rate);
+        if (rate>   2)  // > 2kB/s
+        {
+            fEvtBuilderRate->setSuffix(" kB/s");
+            fEvtBuilderRate->setDecimals(1);
+            fEvtBuilderRate->setValue(rate);
+        }
+        if (rate>=100)  // >100kB/s
+        {
+            fEvtBuilderRate->setSuffix(" kB/s");
+            fEvtBuilderRate->setDecimals(0);
+            fEvtBuilderRate->setValue(rate);
+        }
+        if (rate>=1000)  // >100kB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(2);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+        if (rate>=10000)  // >1MB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(1);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+        if (rate>=100000)  // >10MB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(0);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+
+        if (space/1000000>static_cast<size_t>(fEvtBuilderSpaceLeft->maximum()))
+            fEvtBuilderSpaceLeft->setValue(fEvtBuilderSpaceLeft->maximum());  // GB
+        else
+            fEvtBuilderSpaceLeft->setValue(space/1000000);  // MB
+    }
+
+    void handleFadRuns(const DimData &d)
+    {
+        if (d.size()==0)
+            return;
+
+        if (d.size()<8)
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=8" << endl;
+            return;
+        }
+
+        const uint32_t *ptr = d.ptr<uint32_t>();
+
+        fEvtBldLastOpened->setValue(ptr[0]);
+        fEvtBldLastClosed->setValue(ptr[1]);
+
+        if (d.size()>=8)
+            fEvtBldFilename->setText(d.ptr<char>(8));
+
+        fEvtBldLastOpened->setEnabled(d.qos);
+        fEvtBldLastClosed->setEnabled(d.qos);
+        fEvtBldFilename->setEnabled(d.qos);
+    }
+
+    void handleFadStartRun(const DimData &d)
+    {
+        if (!CheckSize(d, 16))
+            return;
+
+        const int64_t *runs = d.ptr<int64_t>();
+
+        fFadRunNoCur->setValue(runs[0]);
+        fFadRunNoNext->setValue(runs[1]);
+        fFadRunNoCur->setEnabled(runs[0]>=0);
+        //fMcpStopRun->setEnabled(runs[0]>=0);
+
+    }
+
+    void handleFadEvents(const DimData &d)
+    {
+        if (!CheckSize(d, 16))
+            return;
+
+        const uint32_t *ptr = d.ptr<uint32_t>();
+
+        fEvtsSuccessCurRun->setValue(ptr[0]);
+        fEvtsSuccessTotal->setValue(ptr[1]);
+        fEvtBldEventId->setValue(ptr[2]);
+        fFadEvtCounter->setValue(ptr[2]);
+        fEvtBldTriggerId->setValue(ptr[3]);
+    }
+
+    void handleFadTemperature(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadTempMin->setEnabled(false);
+            fFadTempMax->setEnabled(false);
+            SetLedColor(fFadLedTemp, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, sizeof(uint16_t)+160*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fFadTempMin->setEnabled(true);
+        fFadTempMax->setEnabled(true);
+
+        float min =  FLT_MAX;
+        float max = -FLT_MAX;
+
+        vector<float> mn(40,  FLT_MAX);
+        vector<float> mx(40, -FLT_MAX);
+        for (int i=0; i<160; i++)
+        {
+            if (!finite(ptr[i]))
+                continue;
+
+            if (ptr[i]<min)
+                min = ptr[i];
+            if (ptr[i]>max)
+                max = ptr[i];
+
+            if (ptr[i]<mn[i/4])
+                mn[i/4] = ptr[i];
+            if (ptr[i]>mx[i/4])
+                mx[i/4] = ptr[i];
+        }
+
+        fFadTempMin->setValue(min);
+        fFadTempMax->setValue(max);
+
+        handleFadToolTip(d.time, fFadTempMin, mn.data());
+        handleFadToolTip(d.time, fFadTempMax, mx.data());
+    }
+
+    void handleFadRefClock(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadRefClockMin->setEnabled(false);
+            fFadRefClockMax->setEnabled(false);
+            SetLedColor(fFadLedRefClock, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, sizeof(uint16_t)+40*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fFadRefClockMin->setEnabled(true);
+        fFadRefClockMax->setEnabled(true);
+
+        float min =  FLT_MAX;
+        float max = -FLT_MAX;
+        for (int i=0; i<40; i++)
+        {
+            if (!finite(ptr[i]))
+                continue;
+
+            if (ptr[i]<min)
+                min = ptr[i];
+            if (ptr[i]>max)
+                max = ptr[i];
+        }
+
+        fFadRefClockMin->setValue(min);
+        fFadRefClockMax->setValue(max);
+
+        const int64_t diff = int64_t(max) - int64_t(min);
+
+        SetLedColor(fFadLedRefClock, abs(diff)>3?kLedRed:kLedGreen, d.time);
+
+        handleFadToolTip(d.time, fFadLedRefClock, ptr);
+    }
+
+    void handleFadRoi(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadRoi->setEnabled(false);
+            fFadRoiCh9->setEnabled(false);
+            //SetLedColor(fFadLedRoi, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, 2*sizeof(uint16_t)))
+            return;
+
+        const uint16_t *ptr = d.ptr<uint16_t>();
+
+        fFadRoi->setEnabled(true);
+	fFadRoiCh9->setEnabled(true);
+
+	fFadRoi->setValue(ptr[0]);
+	fFadRoiCh9->setValue(ptr[1]);
+
+        //SetLedColor(fFadLedRoi, kLedGray, d.time);
+    }
+
+    void handleDac(QPushButton *led, QSpinBox *box, const DimData &d, int idx)
+    {
+        if (d.size()==0)
+        {
+            box->setEnabled(false);
+            SetLedColor(led, kLedGray, d.time);
+            return;
+        }
+
+        const uint16_t *ptr = d.ptr<uint16_t>()+idx*42;
+
+        box->setEnabled(true);
+        box->setValue(ptr[40]==ptr[41]?ptr[40]:0);
+
+        SetLedColor(led, ptr[40]==ptr[41]?kLedGreen:kLedOrange, d.time);
+        handleFadToolTip(d.time, led, ptr);
+    }
+
+    void handleFadDac(const DimData &d)
+    {
+        if (!CheckSize(d, 8*42*sizeof(uint16_t)) && !d.size()==0)
+            return;
+
+        handleDac(fFadLedDac0, fFadDac0, d, 0);
+        handleDac(fFadLedDac1, fFadDac1, d, 1);
+        handleDac(fFadLedDac2, fFadDac2, d, 2);
+        handleDac(fFadLedDac3, fFadDac3, d, 3);
+        handleDac(fFadLedDac4, fFadDac4, d, 4);
+        handleDac(fFadLedDac5, fFadDac5, d, 5);
+        handleDac(fFadLedDac6, fFadDac6, d, 6);
+        handleDac(fFadLedDac7, fFadDac7, d, 7);
+    }
+
+    EVENT *fEventData;
+
+    void DrawHorizontal(TH1 *hf, double xmax, TH1 &h, double scale)
+    {
+        for (Int_t i=1;i<=h.GetNbinsX();i++)
+        {
+            if (h.GetBinContent(i)<0.5 || h.GetBinContent(i)>h.GetEntries()-0.5)
+                continue;
+
+            TBox * box=new TBox(xmax, h.GetBinLowEdge(i),
+                                xmax+h.GetBinContent(i)*scale,
+                                h.GetBinLowEdge(i+1));
+
+            box->SetFillStyle(0);
+            box->SetLineColor(h.GetLineColor());
+            box->SetLineStyle(kSolid);
+            box->SetBit(kCannotPick|kNoContextMenu);
+            //box->Draw();
+
+            hf->GetListOfFunctions()->Add(box);
+        }
+    }
+
+    void DisplayEventData()
+    {
+        if (!fEventData)
+            return;
+
+#ifdef HAVE_ROOT
+	TCanvas *c = fAdcDataCanv->GetCanvas();
+
+        TH1 *hf = dynamic_cast<TH1*>(c->FindObject("Frame"));
+        TH1 *h  = dynamic_cast<TH1*>(c->FindObject("EventData"));
+	TH1 *d0 = dynamic_cast<TH1*>(c->FindObject("DrsCalib0"));
+	TH1 *d1 = dynamic_cast<TH1*>(c->FindObject("DrsCalib1"));
+        TH1 *d2 = dynamic_cast<TH1*>(c->FindObject("DrsCalib2"));
+
+        const int roi = fAdcPhysical->isChecked() ? 1024 : (fEventData->Roi>0 ? fEventData->Roi : 1);
+
+        if ((hf && hf->GetNbinsX()!=roi) ||
+            (dynamic_cast<TH2*>(h) && !fAdcPersistent->isChecked()) ||
+            (!dynamic_cast<TH2*>(h) && fAdcPersistent->isChecked()))
+        {
+            delete hf;
+            delete h;
+            delete d0;
+            delete d1;
+            delete d2;
+            d0 = 0;
+            d1 = 0;
+            d2 = 0;
+	    hf = 0;
+        }
+
+	if (!hf)
+        {
+            hf = new TH1F("Frame", "", roi, -0.5, roi-0.5);
+            hf->SetDirectory(0);
+            hf->SetBit(kCanDelete);
+            hf->SetStats(kFALSE);
+            hf->SetYTitle("Voltage [mV]");
+            hf->GetXaxis()->CenterTitle();
+            hf->GetYaxis()->CenterTitle();
+            hf->SetMinimum(-1250);
+            hf->SetMaximum(2150);
+
+            if (!fAdcPersistent->isChecked())
+                h = new TH1F("EventData", "", roi, -0.5, roi-0.5);
+            else
+            {
+                h = new TH2F("EventData", "", roi, -0.5, roi-0.5, 6751, -2350.5*2000/4096, 4400.5*2000/4096);
+                h->SetContour(50);
+                gStyle->SetPalette(1, 0);
+            }
+
+            h->SetDirectory(0);
+            h->SetBit(kCanDelete);
+            h->SetMarkerStyle(kFullDotMedium);
+            h->SetMarkerColor(kBlue);
+
+            c->GetListOfPrimitives()->Add(hf, "");
+
+            if (dynamic_cast<TH2*>(h))
+                c->GetListOfPrimitives()->Add(h, "col same");
+        }
+
+        if (d0 && !(fDrsCalibBaselineOn->isChecked() && fDrsCalibBaseline->value()>0))
+        {
+            delete d0;
+            d0 = 0;
+        }
+        if (d1 && !(fDrsCalibGainOn->isChecked() && fDrsCalibGain->value()>0))
+        {
+            delete d1;
+            d1 = 0;
+        }
+        if (d2 && !(fDrsCalibTrgOffsetOn->isChecked() && fDrsCalibTrgOffset->value()>0))
+        {
+            delete d2;
+            d2 = 0;
+        }
+
+        if (!d0 && fDrsCalibBaselineOn->isChecked() && fDrsCalibBaseline->value()>0)
+        {
+            d0 = new TH1F("DrsCalib0", "", roi, -0.5, roi-0.5);
+	    d0->SetDirectory(0);
+            d0->SetBit(kCanDelete);
+	    d0->SetMarkerStyle(kFullDotSmall);
+	    d0->SetMarkerColor(kRed);
+	    d0->SetLineColor(kRed);
+            c->GetListOfPrimitives()->Add(d0, "PEX0same");
+        }
+
+        if (!d1 && fDrsCalibGainOn->isChecked() && fDrsCalibGain->value()>0)
+        {
+            d1 = new TH1F("DrsCalib1", "", roi, -0.5, roi-0.5);
+	    d1->SetDirectory(0);
+            d1->SetBit(kCanDelete);
+	    d1->SetMarkerStyle(kFullDotSmall);
+	    d1->SetMarkerColor(kMagenta);
+            d1->SetLineColor(kMagenta);
+            c->GetListOfPrimitives()->Add(d1, "PEX0same");
+        }
+
+        if (!d2 && fDrsCalibTrgOffsetOn->isChecked() && fDrsCalibTrgOffset->value()>0)
+        {
+            d2 = new TH1F("DrsCalib2", "", roi, -0.5, roi-0.5);
+            d2->SetDirectory(0);
+            d2->SetBit(kCanDelete);
+	    d2->SetMarkerStyle(kFullDotSmall);
+	    d2->SetMarkerColor(kGreen);
+            d2->SetLineColor(kGreen);
+            c->GetListOfPrimitives()->Add(d2, "PEX0same");
+        }
+
+        if (!dynamic_cast<TH2*>(h) && !c->GetListOfPrimitives()->FindObject(h))
+            c->GetListOfPrimitives()->Add(h, "PLsame");
+
+        // -----------------------------------------------------------
+
+        const uint32_t p =
+            fAdcChannel->value()    +
+            fAdcChip->value()   *  9+
+            fAdcBoard->value()  * 36+
+            fAdcCrate->value()  *360;
+
+        ostringstream str;
+        str << "CBPX = " << fAdcCrate->value() << '|' << fAdcBoard->value() << '|' << fAdcChip->value() << '|' << fAdcChannel->value() << " (" << p << ")";
+        str << "   EventNum = " << fEventData->EventNum;
+        str << "   TriggerNum = " << fEventData->TriggerNum;
+        str << "   TriggerType = " << fEventData->TriggerType;
+        str << "   BoardTime = " << fEventData->BoardTime[fAdcBoard->value()+fAdcCrate->value()*10];
+        str << "   (" << Time(fEventData->PCTime, fEventData->PCUsec) << ")";
+        hf->SetTitle(str.str().c_str());
+        str.str("");
+        str << "ADC Pipeline (start cell: " << fEventData->StartPix[p] << ")";
+	hf->SetXTitle(str.str().c_str());
+
+        // -----------------------------------------------------------
+
+        const int16_t start = fEventData->StartPix[p];
+
+        fDrsCalibBaseline->setEnabled(fDrsCalibBaseline->value()>0);
+        fDrsCalibGain->setEnabled(fDrsCalibGain->value()>0);
+        fDrsCalibTrgOffset->setEnabled(fDrsCalibTrgOffset->value()>0);
+        fDrsCalibROI->setEnabled(fDrsCalibROI->value()>0);
+
+        fDrsCalibBaseline2->setEnabled(fDrsCalibBaseline->value()>0);
+        fDrsCalibGain2->setEnabled(fDrsCalibGain->value()>0);
+        fDrsCalibTrgOffset2->setEnabled(fDrsCalibTrgOffset->value()>0);
+        fDrsCalibROI2->setEnabled(fDrsCalibROI->value()>0);
+
+        SetLedColor(fFadLedDrsBaseline, fDrsCalibBaseline->value()>0 ?kLedGreen:kLedGray, Time());
+        SetLedColor(fFadLedDrsGain,     fDrsCalibGain->value()>0     ?kLedGreen:kLedGray, Time());
+        SetLedColor(fFadLedDrsTrgOff,   fDrsCalibTrgOffset->value()>0?kLedGreen:kLedGray, Time());
+
+        if (d0)//fDrsCalibBaseline->value()==0  || start<0)
+            d0->Reset();
+        if (d1)//fDrsCalibGain->value()==0      || start<0)
+            d1->Reset();
+        if (d2)//fDrsCalibTrgOffset->value()==0 || start<0)
+            d2->Reset();
+
+        if (!dynamic_cast<TH2*>(h))
+            h->Reset();
+        if (d0)
+            d0->SetEntries(0);
+        if (d1)
+            d1->SetEntries(0);
+        if (d2)
+            d2->SetEntries(0);
+
+        for (int i=0; i<fEventData->Roi; i++)
+        {
+            // FIXME: physcial: i -> (i+start)%1024
+            // FIXME: logical:  i ->  i
+
+            const int ii = fAdcPhysical->isChecked() ? (i+start)%1024 : i;
+
+            //if (dynamic_cast<TH2*>(h))
+                h->Fill(ii, reinterpret_cast<float*>(fEventData->Adc_Data)[p*fEventData->Roi+i]);
+            //else
+            //    h->SetBinContent(i+1, reinterpret_cast<float*>(fEventData->Adc_Data)[p*fEventData->Roi+i]);
+            if (start<0)
+                continue;
+
+            if (d0)
+            {
+                d0->SetBinContent(ii+1, fDrsCalibration[1440*1024*0 + p*1024+(start+i)%1024]);
+                d0->SetBinError(ii+1,   fDrsCalibration[1440*1024*1 + p*1024+(start+i)%1024]);
+
+            }
+            if (d1)
+            {
+                d1->SetBinContent(ii+1, fDrsCalibration[1440*1024*2 + p*1024+(start+i)%1024]);
+                d1->SetBinError(ii+1,   fDrsCalibration[1440*1024*3 + p*1024+(start+i)%1024]);
+            }
+            if (d2)
+            {
+                d2->SetBinContent(ii+1, fDrsCalibration[1440*1024*4 + p*1024 + i]);
+                d2->SetBinError(ii+1,   fDrsCalibration[1440*1024*5 + p*1024 + i]);
+            }
+        }
+
+        // -----------------------------------------------------------
+        if (fAdcDynamicScale->isEnabled() && fAdcDynamicScale->isChecked())
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+
+            hf->SetMinimum(h->GetMinimum());
+            hf->SetMaximum(h->GetMaximum());
+        }
+        if (fAdcManualScale->isEnabled() && fAdcManualScale->isChecked())
+	{
+            if (h->GetMinimumStored()==-1111)
+            {
+                h->SetMinimum(-1150);//-1026);
+                hf->SetMinimum(-1150);//-1026);
+            }
+            if (h->GetMaximumStored()==-1111)
+            {
+                h->SetMaximum(2150);//1025);
+                hf->SetMaximum(2150);//1025);
+            }
+        }
+
+        if (fAdcAutoScale->isEnabled() && fAdcAutoScale->isChecked())
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+
+            if (h->GetMinimum()<hf->GetMinimum())
+                hf->SetMinimum(h->GetMinimum());
+            if (h->GetMaximum()>hf->GetMaximum())
+                hf->SetMaximum(h->GetMaximum());
+        }
+
+        if (dynamic_cast<TH2*>(h))
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+        }
+
+        // -----------------------------------------------------------
+
+        const int imin = ceil(hf->GetMinimum());
+        const int imax = floor(hf->GetMaximum());
+
+        TH1S hd("", "", imax-imin+1, imin-0.5, imax+0.5);
+        hd.SetDirectory(0);
+        TH1S h0("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h0.SetDirectory(0);
+        TH1S h1("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h1.SetDirectory(0);
+        TH1S h2("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h2.SetDirectory(0);
+        hd.SetLineColor(h->GetLineColor());
+        if (d0)
+            h0.SetLineColor(d0->GetLineColor());
+        if (d1)
+            h1.SetLineColor(d1->GetLineColor());
+        if (d2)
+            h2.SetLineColor(d2->GetLineColor());
+
+        for (int i=0; i<fEventData->Roi; i++)
+        {
+            if (!dynamic_cast<TH2*>(h))
+                hd.Fill(h->GetBinContent(i+1));
+            if (d0)
+                h0.Fill(d0->GetBinContent(i+1));
+            if (d1)
+                h1.Fill(d1->GetBinContent(i+1));
+            if (d2)
+                h2.Fill(d2->GetBinContent(i+1));
+        }
+
+        double mm = hd.GetMaximum(hd.GetEntries());
+        if (h0.GetMaximum(h0.GetEntries())>mm)
+            mm = h0.GetMaximum();
+        if (h1.GetMaximum(h1.GetEntries())>mm)
+            mm = h1.GetMaximum();
+        if (h2.GetMaximum(h2.GetEntries())>mm)
+            mm = h2.GetMaximum();
+
+        TIter Next(hf->GetListOfFunctions());
+        TObject *obj = 0;
+        while ((obj=Next()))
+            if (dynamic_cast<TBox*>(obj))
+                delete hf->GetListOfFunctions()->Remove(obj);
+
+        const double l = h->GetBinLowEdge(h->GetXaxis()->GetLast()+1);
+        const double m = c->GetX2();
+
+        const double scale = 0.9*(m-l)/mm;
+
+        DrawHorizontal(hf, l, h2, scale);
+        DrawHorizontal(hf, l, h1, scale);
+        DrawHorizontal(hf, l, h0, scale);
+        DrawHorizontal(hf, l, hd, scale);
+
+        // -----------------------------------------------------------
+
+	c->Modified();
+	c->Update();
+#endif
+    }
+
+    void handleFadRawData(const DimData &d)
+    {
+	if (d.size()==0)
+            return;
+
+        if (fAdcStop->isChecked())
+            return;
+
+	const EVENT &dat = d.ref<EVENT>();
+
+        if (d.size()<sizeof(EVENT))
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=" << sizeof(EVENT) << endl;
+            return;
+        }
+
+        if (d.size()!=sizeof(EVENT)+dat.Roi*4*1440+dat.Roi*4*160)
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << dat.Roi*4*1440+sizeof(EVENT) << " [roi=" << dat.Roi << "]" << endl;
+            return;
+        }
+
+        delete [] reinterpret_cast<char*>(fEventData);
+        fEventData = reinterpret_cast<EVENT*>(new char[d.size()]);
+        memcpy(fEventData, d.ptr<void>(), d.size());
+
+        DisplayEventData();
+    }
+
+    void handleFadEventData(const DimData &d)
+    {
+        if (!CheckSize(d, 4*1440*sizeof(float)))
+            return;
+
+        if (fEventsStop->isChecked())
+            return;
+
+        const float *ptr = d.ptr<float>();
+
+        valarray<double> arr1(1440);
+        valarray<double> arr2(1440);
+        valarray<double> arr3(1440);
+        valarray<double> arr4(1440);
+
+        for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+        {
+            arr1[it->index] = ptr[0*1440+it->hw()];
+            arr2[it->index] = ptr[1*1440+it->hw()];
+            arr3[it->index] = ptr[2*1440+it->hw()];
+            arr4[it->index] = ptr[3*1440+it->hw()];
+        }
+
+        fEventCanv1->SetData(arr1);
+        fEventCanv2->SetData(arr2);
+        fEventCanv3->SetData(arr3);
+        fEventCanv4->SetData(arr4);
+
+        fEventCanv1->updateCamera();
+        fEventCanv2->updateCamera();
+        fEventCanv3->updateCamera();
+        fEventCanv4->updateCamera();
+    }
+
+    vector<float> fDrsCalibration;
+
+    void handleFadDrsCalibration(const DimData &d)
+    {
+        const size_t sz = 1024*1440*6+1024*160*2;
+
+        if (d.size()==0)
+        {
+            fDrsCalibBaseline->setValue(-1);
+            fDrsCalibGain->setValue(-1);
+            fDrsCalibTrgOffset->setValue(-1);
+            fDrsCalibROI->setValue(-1);
+
+            fDrsCalibBaseline2->setValue(-1);
+            fDrsCalibGain2->setValue(-1);
+            fDrsCalibTrgOffset2->setValue(-1);
+            fDrsCalibROI2->setValue(-1);
+
+            fDrsCalibration.assign(sz, 0);
+            DisplayEventData();
+            return;
+        }
+
+        if (!CheckSize(d, sz*sizeof(float)+4*sizeof(uint32_t)))
+            // Do WHAT?
+            return;
+
+        const uint32_t *run = d.ptr<uint32_t>();
+
+        fDrsCalibROI->setValue(run[0]);
+        fDrsCalibBaseline->setValue(run[1]);
+        fDrsCalibGain->setValue(run[2]);
+        fDrsCalibTrgOffset->setValue(run[3]);
+
+        fDrsCalibROI2->setValue(run[0]);
+        fDrsCalibBaseline2->setValue(run[1]);
+        fDrsCalibGain2->setValue(run[2]);
+        fDrsCalibTrgOffset2->setValue(run[3]);
+
+        const float *dat = d.ptr<float>(sizeof(uint32_t)*4);
+        fDrsCalibration.assign(dat, dat+sz);
+
+        DisplayEventData();
+    }
+
+//    vector<uint8_t> fFadConnections;
+
+    void handleFadConnections(const DimData &d)
+    {
+        if (!CheckSize(d, 41))
+        {
+            fStatusEventBuilderLabel->setText("Offline");
+            fStatusEventBuilderLabel->setToolTip("FADs or fadctrl seems to be offline.");
+            fGroupEthernet->setEnabled(false);
+            fGroupOutput->setEnabled(false);
+
+            SetLedColor(fStatusEventBuilderLed, kLedGray, d.time);
+            return;
+        }
+
+        const uint8_t *ptr = d.ptr<uint8_t>();
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            if (stat1==0 && stat2==0)
+            {
+                SetLedColor(fFadLED[i], kLedGray,   d.time);
+                continue;
+            }
+            if (stat1>=2 && stat2==8)
+            {
+                SetLedColor(fFadLED[i], stat1==2?kLedGreen:kLedGreenCheck,  d.time);
+                continue;
+            }
+
+            if (stat1==1 && stat2==1)
+                SetLedColor(fFadLED[i], kLedRed, d.time);
+            else
+                SetLedColor(fFadLED[i], kLedOrange, d.time);
+        }
+
+
+        const bool runs = ptr[40]!=0;
+
+        fStatusEventBuilderLabel->setText(runs?"Running":"Not running");
+        fStatusEventBuilderLabel->setToolTip(runs?"Event builder thread running.":"Event builder thread stopped.");
+
+        fGroupEthernet->setEnabled(runs);
+        fGroupOutput->setEnabled(runs);
+
+        SetLedColor(fStatusEventBuilderLed, runs?kLedGreen:kLedRed, d.time);
+
+//        fFadConnections.assign(ptr, ptr+40);
+    }
+
+    template<typename T>
+        void handleFadToolTip(const Time &time, QWidget *w, T *ptr)
+    {
+        ostringstream tip;
+        tip << "<table border='1'><tr><th colspan='11'>" << time.GetAsStr() << " (UTC)</th></tr><tr><th></th>";
+        for (int b=0; b<10; b++)
+            tip << "<th>" << b << "</th>";
+        tip << "</tr>";
+
+        for (int c=0; c<4; c++)
+        {
+            tip << "<tr><th>" << c << "</th>";
+            for (int b=0; b<10; b++)
+                tip << "<td>" << ptr[c*10+b] << "</td>";
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        w->setToolTip(tip.str().c_str());
+    }
+
+    template<typename T, class S>
+        void handleFadMinMax(const DimData &d, QPushButton *led, S *wmin, S *wmax=0)
+    {
+        if (!CheckSize(d, 42*sizeof(T)))
+            return;
+
+        const T *ptr = d.ptr<T>();
+        const T  min = ptr[40];
+        const T  max = ptr[41];
+
+        if (max==0 && min>max)
+            SetLedColor(led, kLedGray, d.time);
+        else
+            SetLedColor(led, min==max?kLedGreen: kLedOrange, d.time);
+
+        if (!wmax && max!=min)
+            wmin->setValue(0);
+        else
+            wmin->setValue(min);
+
+        if (wmax)
+            wmax->setValue(max);
+
+        handleFadToolTip(d.time, led, ptr);
+    }
+
+    void handleFadFwVersion(const DimData &d)
+    {
+        handleFadMinMax<float, QDoubleSpinBox>(d, fFadLedFwVersion, fFadFwVersion);
+    }
+
+    void handleFadRunNumber(const DimData &d)
+    {
+        handleFadMinMax<uint32_t, QSpinBox>(d, fFadLedRunNumber, fFadRunNumber);
+    }
+
+    void handleFadPrescaler(const DimData &d)
+    {
+        handleFadMinMax<uint16_t, QSpinBox>(d, fFadLedPrescaler, fFadPrescaler);
+    }
+
+    void handleFadDNA(const DimData &d)
+    {
+        if (!CheckSize(d, 40*sizeof(uint64_t)))
+            return;
+
+        const uint64_t *ptr = d.ptr<uint64_t>();
+
+        ostringstream tip;
+        tip << "<table width='100%'>";
+        tip << "<tr><th>Crate</th><td></td><th>Board</th><td></td><th>DNA</th></tr>";
+
+        for (int i=0; i<40; i++)
+        {
+            tip << dec;
+            tip << "<tr>";
+            tip << "<td align='center'>" << i/10 << "</td><td>:</td>";
+            tip << "<td align='center'>" << i%10 << "</td><td>:</td>";
+            tip << hex;
+            tip << "<td>0x" << setfill('0') << setw(16) << ptr[i] << "</td>";
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        fFadDNA->setText(tip.str().c_str());
+    }
+
+    void SetFadLed(QPushButton *led, const DimData &d, uint16_t bitmask, bool invert=false)
+    {
+        if (d.size()==0)
+        {
+            SetLedColor(led, kLedGray, d.time);
+            return;
+        }
+
+        const bool      quality = d.ptr<uint16_t>()[0]&bitmask;
+        const bool      value   = d.ptr<uint16_t>()[1]&bitmask;
+        const uint16_t *ptr     = d.ptr<uint16_t>()+2;
+
+        SetLedColor(led, quality?kLedOrange:(value^invert?kLedGreen:kLedGreenBar), d.time);
+
+        ostringstream tip;
+        tip << "<table border='1'><tr><th colspan='11'>" << d.time.GetAsStr() << " (UTC)</th></tr><tr><th></th>";
+        for (int b=0; b<10; b++)
+            tip << "<th>" << b << "</th>";
+        tip << "</tr>";
+
+        /*
+	 tip << "<tr>" << hex;
+	 tip << "<th>" << d.ptr<uint16_t>()[0] << " " << (d.ptr<uint16_t>()[0]&bitmask) << "</th>";
+	 tip << "<th>" << d.ptr<uint16_t>()[1] << " " << (d.ptr<uint16_t>()[1]&bitmask) << "</th>";
+	 tip << "</tr>";
+	 */
+
+        for (int c=0; c<4; c++)
+        {
+            tip << "<tr><th>" << dec << c << "</th>" << hex;
+            for (int b=0; b<10; b++)
+            {
+                tip << "<td>"
+                    << (ptr[c*10+b]&bitmask)
+                    << "</td>";
+            }
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        led->setToolTip(tip.str().c_str());
+    }
+
+    void handleFadStatus(const DimData &d)
+    {
+        if (d.size()!=0 && !CheckSize(d, 42*sizeof(uint16_t)))
+            return;
+
+        SetFadLed(fFadLedDrsEnabled,     d, FAD::EventHeader::kDenable);
+        SetFadLed(fFadLedDrsWrite,       d, FAD::EventHeader::kDwrite);
+        SetFadLed(fFadLedDcmLocked,      d, FAD::EventHeader::kDcmLocked);
+        SetFadLed(fFadLedDcmReady,       d, FAD::EventHeader::kDcmReady);
+        SetFadLed(fFadLedSpiSclk,        d, FAD::EventHeader::kSpiSclk);
+        SetFadLed(fFadLedRefClockTooLow, d, FAD::EventHeader::kRefClkTooLow, true);
+        SetFadLed(fFadLedBusyOn,         d, FAD::EventHeader::kBusyOn);
+        SetFadLed(fFadLedBusyOff,        d, FAD::EventHeader::kBusyOff);
+        SetFadLed(fFadLedTriggerLine,    d, FAD::EventHeader::kTriggerLine);
+        SetFadLed(fFadLedContTrigger,    d, FAD::EventHeader::kContTrigger);
+        SetFadLed(fFadLedSocket,         d, FAD::EventHeader::kSock17);
+        SetFadLed(fFadLedPllLock,        d, 0xf000);
+    }
+
+    void handleFadStatistics1(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(GUI_STAT)))
+            return;
+
+        const GUI_STAT &stat = d.ref<GUI_STAT>();
+
+        fFadBufferMax->setValue(stat.totMem/1000000);  // Memory::allocated
+        fFadBuffer->setMaximum(stat.maxMem/100);       // g_maxMem
+        fFadBuffer->setValue(stat.usdMem/100);         // Memory::inuse
+
+        uint32_t sum = 0;
+        int cnt = 0;
+
+        for (int i=0; i<40; i++)
+        {
+            if (stat.numConn[i]==1)
+            {
+                sum += stat.rateBytes[i];
+                cnt++;
+            }
+        }
+
+        fFadEvtConn->setValue(cnt);
+
+        fFadEvtBufNew->setValue(stat.bufNew);  // Incomplete in buffer (evtCtrl)
+        fFadEvtBufEvt->setValue(stat.bufTot);  // Complete events in buffer (max_inuse)
+
+        fFadEvtCheck->setValue(stat.bufEvt);  // Complete in buffer
+        fFadEvtWrite->setValue(stat.bufWrite);
+        fFadEvtProc->setValue(stat.bufProc);
+
+        if (stat.deltaT==0)
+            return;
+
+        //fFadEthernetRateMin->setValue(min/stat.deltaT);
+        //fFadEthernetRateMax->setValue(max/stat.deltaT);
+        fFadEthernetRateTot->setValue(sum/stat.deltaT);
+        fFadEthernetRateAvg->setValue(cnt==0 ? 0 : sum/cnt/stat.deltaT);
+
+        fFadTransmission->setValue(1000*stat.rateNew/stat.deltaT);
+        fFadWriteRate->setValue(1000*stat.rateWrite/stat.deltaT);
+    }
+
+    /*
+    void handleFadStatistics2(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(EVT_STAT)))
+            return;
+
+        //const EVT_STAT &stat = d.ref<EVT_STAT>();
+    }*/
+
+    void handleFadFileFormat(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(uint16_t)))
+            return;
+
+        const uint16_t &fmt = d.get<uint16_t>();
+
+        SetLedColor(fFadLedFileFormatNone,  fmt==FAD::kNone ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatDebug, fmt==FAD::kDebug?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatRaw,   fmt==FAD::kRaw  ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatFits,  fmt==FAD::kFits ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatZFits, fmt==FAD::kZFits?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatCalib, fmt==FAD::kCalib?kLedGreen:kLedGray, d.time);
+    }
+
+    // ===================== FTM ============================================
+
+    FTM::DimTriggerRates fTriggerRates;
+
+    void UpdateTriggerRate(const FTM::DimTriggerRates &sdata)
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        if (sdata.fTimeStamp<=fTriggerRates.fTimeStamp)
+        {
+            fGraphFtmRate.Set(0);
+
+            const double tm = Time().RootTime();
+
+            h->SetBins(1, tm, tm+60);
+            h->GetXaxis()->SetTimeFormat("%M'%S\"%F1995-01-01 00:00:00 GMT");
+            h->GetXaxis()->SetTitle("Time");
+
+            c->Modified();
+            c->Update();
+            return;
+        }
+
+        const double t1 = h->GetXaxis()->GetXmax();
+        const double t0 = h->GetXaxis()->GetXmin();
+
+        const double now = t0+sdata.fTimeStamp/1000000.;
+
+        h->SetBins(h->GetNbinsX()+1, t0, now+1);
+        fGraphFtmRate.SetPoint(fGraphFtmRate.GetN(), now, sdata.fTriggerRate);
+
+        if (t1-t0>300)
+        {
+            h->GetXaxis()->SetTimeFormat("%Hh%M'%F1995-01-01 00:00:00 GMT");
+            h->GetXaxis()->SetTitle("Time");
+        }
+
+        h->SetMinimum(0);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void UpdateRatesCam(const FTM::DimTriggerRates &sdata)
+    {
+        if (fThresholdIdx->value()>=0)
+        {
+            const int isw = fThresholdIdx->value();
+            const int ihw = fPatchMapHW[isw];
+            fPatchRate->setValue(sdata.fPatchRate[ihw]);
+            fBoardRate->setValue(sdata.fBoardRate[ihw/4]);
+        }
+
+        const bool b = fBoardRatesEnabled->isChecked();
+
+        valarray<double> dat(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const int ihw = fPixelMap.index(i).hw()/9;
+            dat[i] = b ? sdata.fBoardRate[ihw/4] : sdata.fPatchRate[ihw];
+        }
+
+        fRatesCanv->SetData(dat);
+        fRatesCanv->updateCamera();
+    }
+
+    int64_t fTimeStamp0;
+
+    void on_fBoardRatesEnabled_toggled(bool)
+    {
+        UpdateRatesCam(fTriggerRates);
+    }
+
+    void UpdateRatesGraphs(const FTM::DimTriggerRates &sdata)
+    {
+#ifdef HAVE_ROOT
+        if (fTimeStamp0<0)
+        {
+            fTimeStamp0 = sdata.fTimeStamp;
+            return;
+        }
+
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        const double tdiff = sdata.fTimeStamp-fTimeStamp0;
+        fTimeStamp0 = sdata.fTimeStamp;
+
+        if (tdiff<0)
+        {
+            for (int i=0; i<160; i++)
+                fGraphPatchRate[i].Set(0);
+            for (int i=0; i<40; i++)
+                fGraphBoardRate[i].Set(0);
+
+            return;
+        }
+
+        //const double t1 = h->GetXaxis()->GetXmax();
+        const double t0 = h->GetXaxis()->GetXmin();
+
+        for (int i=0; i<160; i++)
+            if (fFtuStatus[i/4]>0)
+                fGraphPatchRate[i].SetPoint(fGraphPatchRate[i].GetN(),
+                                            t0+sdata.fTimeStamp/1000000., sdata.fPatchRate[i]);
+        for (int i=0; i<40; i++)
+            if (fFtuStatus[i]>0)
+                fGraphBoardRate[i].SetPoint(fGraphBoardRate[i].GetN(),
+                                            t0+sdata.fTimeStamp/1000000., sdata.fBoardRate[i]);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void handleFtmTriggerRates(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimTriggerRates)))
+            return;
+
+        const FTM::DimTriggerRates &sdata = d.ref<FTM::DimTriggerRates>();
+
+        fFtmTime->setText(QString::number(sdata.fTimeStamp/1000000., 'f', 6)+ " s");
+        fTriggerCounter->setText(QString::number(sdata.fTriggerCounter));
+
+        if (sdata.fTimeStamp>0)
+            fTriggerCounterRate->setValue(1000000.*sdata.fTriggerCounter/sdata.fTimeStamp);
+        else
+            fTriggerCounterRate->setValue(0);
+
+        // ----------------------------------------------
+
+        fOnTime->setText(QString::number(sdata.fOnTimeCounter/1000000., 'f', 6)+" s");
+
+        if (sdata.fTimeStamp>0)
+            fOnTimeRel->setValue(100.*sdata.fOnTimeCounter/sdata.fTimeStamp);
+        else
+            fOnTimeRel->setValue(0);
+
+        // ----------------------------------------------
+
+        UpdateTriggerRate(sdata);
+        UpdateRatesGraphs(sdata);
+        UpdateRatesCam(sdata);
+
+        fTriggerRates = sdata;
+    }
+
+    void handleFtmCounter(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(uint32_t)*6))
+            return;
+
+        const uint32_t *sdata = d.ptr<uint32_t>();
+
+        fFtmCounterH->setValue(sdata[0]);
+        fFtmCounterS->setValue(sdata[1]);
+        fFtmCounterD->setValue(sdata[2]);
+        fFtmCounterF->setValue(sdata[3]);
+        fFtmCounterE->setValue(sdata[4]);
+        fFtmCounterR->setValue(sdata[5]);
+    }
+
+    void handleFtmDynamicData(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimDynamicData)))
+            return;
+
+        const FTM::DimDynamicData &sdata = d.ref<FTM::DimDynamicData>();
+
+        fFtmTemp0->setValue(sdata.fTempSensor[0]*0.1);
+        fFtmTemp1->setValue(sdata.fTempSensor[1]*0.1);
+        fFtmTemp2->setValue(sdata.fTempSensor[2]*0.1);
+        fFtmTemp3->setValue(sdata.fTempSensor[3]*0.1);
+
+        SetLedColor(fClockCondLed, sdata.fState&FTM::kFtmLocked ? kLedGreen : kLedRed, d.time);
+    }
+
+    void DisplayRates()
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TList * l = c->GetListOfPrimitives();
+
+
+        while (c->FindObject("PatchRate"))
+            l->Remove(c->FindObject("PatchRate"));
+
+        while (c->FindObject("BoardRate"))
+            l->Remove(c->FindObject("BoardRate"));
+
+        if (fRatePatch1->value()>=0)
+        {
+            fGraphPatchRate[fRatePatch1->value()].SetLineColor(kRed);
+            fGraphPatchRate[fRatePatch1->value()].SetMarkerColor(kRed);
+            l->Add(&fGraphPatchRate[fRatePatch1->value()], "PL");
+        }
+        if (fRatePatch2->value()>=0)
+        {
+            fGraphPatchRate[fRatePatch2->value()].SetLineColor(kGreen);
+            fGraphPatchRate[fRatePatch2->value()].SetMarkerColor(kGreen);
+            l->Add(&fGraphPatchRate[fRatePatch2->value()], "PL");
+        }
+        if (fRateBoard1->value()>=0)
+        {
+            fGraphBoardRate[fRateBoard1->value()].SetLineColor(kMagenta);
+            fGraphBoardRate[fRateBoard1->value()].SetMarkerColor(kMagenta);
+            l->Add(&fGraphBoardRate[fRateBoard1->value()], "PL");
+        }
+        if (fRateBoard2->value()>=0)
+        {
+            fGraphBoardRate[fRateBoard2->value()].SetLineColor(kCyan);
+            fGraphBoardRate[fRateBoard2->value()].SetMarkerColor(kCyan);
+            l->Add(&fGraphBoardRate[fRateBoard2->value()], "PL");
+        }
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    FTM::DimStaticData fFtmStaticData;
+
+    void SetFtuLed(int idx, int counter, const Time &t)
+    {
+        if (counter==0 || counter>3)
+            counter = 3;
+
+        if (counter<0)
+            counter = 0;
+
+        const LedColor_t col[4] = { kLedGray, kLedGreen, kLedOrange, kLedRed };
+
+        SetLedColor(fFtuLED[idx], col[counter], t);
+
+        fFtuStatus[idx] = counter;
+    }
+
+    void SetFtuStatusLed(const Time &t)
+    {
+        const int max = fFtuStatus.max();
+
+        switch (max)
+        {
+        case 0:
+            SetLedColor(fStatusFTULed, kLedGray, t);
+            fStatusFTULabel->setText("All disabled");
+            fStatusFTULabel->setToolTip("All FTUs are disabled");
+            break;
+
+        case 1:
+            SetLedColor(fStatusFTULed, kLedGreen, t);
+            fStatusFTULabel->setToolTip("Communication with FTU is smooth.");
+            fStatusFTULabel->setText("ok");
+            break;
+
+        case 2:
+            SetLedColor(fStatusFTULed, kLedOrange, t);
+            fStatusFTULabel->setText("Warning");
+            fStatusFTULabel->setToolTip("At least one FTU didn't answer immediately");
+            break;
+
+        case 3:
+            SetLedColor(fStatusFTULed, kLedRed, t);
+            fStatusFTULabel->setToolTip("At least one FTU didn't answer!");
+            fStatusFTULabel->setText("ERROR");
+            break;
+        }
+
+        const int cnt = count(&fFtuStatus[0], &fFtuStatus[40], 0);
+        fFtuAllOn->setEnabled(cnt!=0);
+        fFtuAllOff->setEnabled(cnt!=40);
+    }
+
+    void handleFtmStaticData(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimStaticData)))
+            return;
+
+        const FTM::DimStaticData &sdata = d.ref<FTM::DimStaticData>();
+
+        fTriggerInterval->setValue(sdata.fTriggerInterval);
+        fPhysicsCoincidence->setValue(sdata.fMultiplicityPhysics);
+        fCalibCoincidence->setValue(sdata.fMultiplicityCalib);
+        fPhysicsWindow->setValue(sdata.fWindowPhysics);
+        fCalibWindow->setValue(sdata.fWindowCalib);
+
+        fTriggerDelay->setValue(sdata.fDelayTrigger);
+        fTimeMarkerDelay->setValue(sdata.fDelayTimeMarker);
+        fDeadTime->setValue(sdata.fDeadTime);
+
+        fClockCondR0->setValue(sdata.fClockConditioner[0]);
+        fClockCondR1->setValue(sdata.fClockConditioner[1]);
+        fClockCondR8->setValue(sdata.fClockConditioner[2]);
+        fClockCondR9->setValue(sdata.fClockConditioner[3]);
+        fClockCondR11->setValue(sdata.fClockConditioner[4]);
+        fClockCondR13->setValue(sdata.fClockConditioner[5]);
+        fClockCondR14->setValue(sdata.fClockConditioner[6]);
+        fClockCondR15->setValue(sdata.fClockConditioner[7]);
+
+        const uint32_t R0  = sdata.fClockConditioner[0];
+        const uint32_t R14 = sdata.fClockConditioner[6];
+        const uint32_t R15 = sdata.fClockConditioner[7];
+
+        const uint32_t Ndiv = (R15&0x1ffff00)<<2;
+        const uint32_t Rdiv = (R14&0x007ff00)>>8;
+        const uint32_t Cdiv = (R0 &0x000ff00)>>8;
+
+        double freq = 40.*Ndiv/(Rdiv*Cdiv);
+
+        fClockCondFreqRes->setValue(freq);
+
+        //fClockCondFreq->setEditText("");
+        fClockCondFreq->setCurrentIndex(0);
+
+        fTriggerSeqPed->setValue(sdata.fTriggerSeqPed);
+        fTriggerSeqLPint->setValue(sdata.fTriggerSeqLPint);
+        fTriggerSeqLPext->setValue(sdata.fTriggerSeqLPext);
+
+        fLpIntIntensity->setValue(sdata.fIntensityLPint);
+        fLpExtIntensity->setValue(sdata.fIntensityLPext);
+
+        fLpIntGroup1->setChecked(sdata.HasLPintG1());
+        fLpIntGroup2->setChecked(sdata.HasLPintG2());
+        fLpExtGroup1->setChecked(sdata.HasLPextG1());
+        fLpExtGroup2->setChecked(sdata.HasLPextG2());
+
+        fEnableTrigger->setChecked(sdata.HasTrigger());
+        fEnableVeto->setChecked(sdata.HasVeto());
+        fEnableExt1->setChecked(sdata.HasExt1());
+        fEnableExt2->setChecked(sdata.HasExt2());
+        fEnableClockCond->setChecked(sdata.HasClockConditioner());
+
+        uint16_t multiplicity = sdata.fMultiplicity[0];
+
+        for (int i=0; i<40; i++)
+        {
+            if (!sdata.IsActive(i))
+                SetFtuLed(i, -1, d.time);
+            else
+            {
+                if (fFtuStatus[i]==0)
+                    SetFtuLed(i, 1, d.time);
+            }
+            fFtuLED[i]->setChecked(false);
+
+            if (sdata.fMultiplicity[i]!=multiplicity)
+                multiplicity = -1;
+
+        }
+        SetFtuStatusLed(d.time);
+
+        fNoutof4Val->setValue(multiplicity);
+
+        for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+            fRatesCanv->SetEnable(it->index, sdata.IsEnabled(it->hw()));
+
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+        fPixelEnable->setChecked(sdata.IsEnabled(entry.hw()));
+
+        if (fThresholdIdx->value()>=0)
+        {
+            const int isw = fThresholdIdx->value();
+            const int ihw = fPatchMapHW[isw];
+            fThresholdVal->setValue(sdata.fThreshold[ihw]);
+        }
+
+        fPrescalingVal->setValue(sdata.fPrescaling[0]);
+
+        fFtmStaticData = sdata;
+    }
+
+    void handleFtmPassport(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimPassport)))
+            return;
+
+        const FTM::DimPassport &sdata = d.ref<FTM::DimPassport>();
+
+        stringstream str1, str2;
+        str1 << hex << "0x" << setfill('0') << setw(16) << sdata.fBoardId;
+        str2 << sdata.fFirmwareId;
+
+        fFtmBoardId->setText(str1.str().c_str());
+        fFtmFirmwareId->setText(str2.str().c_str());
+    }
+
+    void handleFtmFtuList(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimFtuList)))
+            return;
+
+        fFtuPing->setChecked(false);
+
+        const FTM::DimFtuList &sdata = d.ref<FTM::DimFtuList>();
+
+        stringstream str;
+        str << "<table width='100%'>" << setfill('0');
+        str << "<tr><th>Num</th><th></th><th>Addr</th><th></th><th>DNA</th></tr>";
+        for (int i=0; i<40; i++)
+        {
+            str << "<tr>";
+            str << "<td align='center'>"   << dec << i << hex << "</td>";
+            str << "<td align='center'>:</td>";
+            str << "<td align='center'>0x" << setw(2)  << (int)sdata.fAddr[i] << "</td>";
+            str << "<td align='center'>:</td>";
+            str << "<td align='center'>0x" << setw(16) << sdata.fDNA[i] << "</td>";
+            str << "</tr>";
+        }
+        str << "</table>";
+
+        fFtuDNA->setText(str.str().c_str());
+
+        fFtuAnswersTotal->setValue(sdata.fNumBoards);
+        fFtuAnswersCrate0->setValue(sdata.fNumBoardsCrate[0]);
+        fFtuAnswersCrate1->setValue(sdata.fNumBoardsCrate[1]);
+        fFtuAnswersCrate2->setValue(sdata.fNumBoardsCrate[2]);
+        fFtuAnswersCrate3->setValue(sdata.fNumBoardsCrate[3]);
+
+        for (int i=0; i<40; i++)
+            SetFtuLed(i, sdata.IsActive(i) ? sdata.fPing[i] : -1, d.time);
+
+        SetFtuStatusLed(d.time);
+    }
+
+    void handleFtmError(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimError)))
+            return;
+
+        const FTM::DimError &sdata = d.ref<FTM::DimError>();
+
+        SetFtuLed(sdata.fError.fDestAddress, sdata.fError.fNumCalls, d.time);
+        SetFtuStatusLed(d.time);
+
+        // FIXME: Write to special window!
+        //Out() << "Error:" << endl;
+        //Out() << sdata.fError << endl;
+    }
+
+    // ========================== FSC =======================================
+
+    void SetFscValue(QDoubleSpinBox *box, const DimData &d, int idx, bool enable)
+    {
+        //box->setEnabled(enable);
+        if (!enable)
+        {
+            box->setToolTip(d.time.GetAsStr().c_str());
+            return;
+        }
+
+        ostringstream str;
+        str << d.time << "  --  " << d.get<float>() << "s";
+
+        box->setToolTip(str.str().c_str());
+        box->setValue(d.get<float>(idx*4+4));
+    }
+
+
+    void handleFscTemp(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 60*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fTempCam00, fTempCam01,
+            fTempCam10, fTempCam11, fTempCam12, fTempCam13, fTempCam14, 
+            fTempCam20, fTempCam21, fTempCam22, fTempCam23, fTempCam24, fTempCam25,
+            fTempCam30, fTempCam31, fTempCam32, fTempCam33, fTempCam34, 
+            fTempCam40, fTempCam41, fTempCam42, fTempCam43, fTempCam44, fTempCam45,
+            fTempCam50, fTempCam51, fTempCam52, fTempCam53, fTempCam54,
+            fTempCam60, fTempCam61,
+            // 0:b/f 1:b/f 2:b/f 3:b/f
+            fTempCrate0back, fTempCrate0front,
+            fTempCrate1back, fTempCrate1front,
+            fTempCrate2back, fTempCrate2front,
+            fTempCrate3back, fTempCrate3front,
+            // 0:b/f 1:b/f 2:b/f 3:b/f
+            fTempPS0back, fTempPS0front,
+            fTempPS1back, fTempPS1front,
+            fTempPS2back, fTempPS2front,
+            fTempPS3back, fTempPS3front,
+            // AUX PS:  FTM t/b; FSC t/b
+            fTempAuxFTMtop, fTempAuxFTMbottom,
+            fTempAuxFSCtop, fTempAuxFSCbottom,
+            // Backpanel:  FTM t/b; FSC t/b
+            fTempBackpanelFTMtop, fTempBackpanelFTMbottom,
+            fTempBackpanelFSCtop, fTempBackpanelFSCbottom,
+            // top front/back; bottom front/back
+            fTempSwitchboxTopFront,    fTempSwitchboxTopBack,
+            fTempSwitchboxBottomFront, fTempSwitchboxBottomBack,
+        };
+
+        for (int i=0; i<59; i++)
+            SetFscValue(boxes[i], d, i, enable);
+
+        if (!enable)
+            return;
+
+        const float *ptr = d.ptr<float>();
+
+        double avg = 0;
+        int    num = 0;
+        for (int i=1; i<32; i++)
+            if (ptr[i]!=0)
+            {
+                avg += ptr[i];
+                num ++;
+            }
+
+        fTempCamAvg->setValue(num?avg/num:0);
+    }
+
+    void handleFscVolt(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 31*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fVoltFad00, fVoltFad10, fVoltFad20, fVoltFad30,
+            fVoltFad01, fVoltFad11, fVoltFad21, fVoltFad31,
+            fVoltFad02, fVoltFad12, fVoltFad22, fVoltFad32,
+            fVoltFPA00, fVoltFPA10, fVoltFPA20, fVoltFPA30,
+            fVoltFPA01, fVoltFPA11, fVoltFPA21, fVoltFPA31,
+            fVoltFPA02, fVoltFPA12, fVoltFPA22, fVoltFPA32,
+            fVoltETH0,  fVoltETH1,
+            fVoltFTM0,  fVoltFTM1,
+            fVoltFFC,   fVoltFLP,
+        };
+
+        for (int i=0; i<30; i++)
+            SetFscValue(boxes[i], d, i, enable);
+    }
+
+    void handleFscCurrent(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 31*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fAmpFad00, fAmpFad10, fAmpFad20, fAmpFad30,
+            fAmpFad01, fAmpFad11, fAmpFad21, fAmpFad31,
+            fAmpFad02, fAmpFad12, fAmpFad22, fAmpFad32,
+            fAmpFPA00, fAmpFPA10, fAmpFPA20, fAmpFPA30,
+            fAmpFPA01, fAmpFPA11, fAmpFPA21, fAmpFPA31,
+            fAmpFPA02, fAmpFPA12, fAmpFPA22, fAmpFPA32,
+            fAmpETH0,  fAmpETH1,
+            fAmpFTM0,  fAmpFTM1,
+            fAmpFFC,   fAmpFLP,
+        };
+
+        for (int i=0; i<30; i++)
+            SetFscValue(boxes[i], d, i, enable);
+    }
+
+    void handleFscHumidity(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 5*sizeof(float));
+
+        SetFscValue(fHumidity1, d, 0, enable);
+        SetFscValue(fHumidity2, d, 1, enable);
+        SetFscValue(fHumidity3, d, 2, enable);
+        SetFscValue(fHumidity4, d, 3, enable);
+    }
+
+    // ========================== Feedback ==================================
+
+#ifdef HAVE_ROOT
+    TGraphErrors fGraphFeedbackDev;
+    TGraphErrors fGraphFeedbackCmd;
+
+    void UpdateFeedback(TQtWidget &rwidget, const Time &time, TGraphErrors &graph, double avg, double rms)
+    {
+        TCanvas *c = rwidget.GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        while (graph.GetN()>500)
+            graph.RemovePoint(0);
+
+        const double now = time.RootTime();
+
+        while (graph.GetN()>0 && now-graph.GetX()[0]>3600)
+            graph.RemovePoint(0);
+
+        const int n = graph.GetN();
+
+        const double xmin = n>0 ? graph.GetX()[0] : now;
+
+        h->SetBins(n+1, xmin-1, now+1);
+        graph.SetPoint(n, now, avg);
+        graph.SetPointError(n, 0, rms);
+
+        h->GetXaxis()->SetTimeFormat(now-xmin>300 ? "%Hh%M'%F1995-01-01 00:00:00 GMT" : "%M'%S\"%F1995-01-01 00:00:00 GMT");
+
+        c->Modified();
+        c->Update();
+    }
+#endif
+
+    vector <float> fVecFeedbackCurrents;
+
+    void handleFeedbackCalibratedCurrents(const DimData &d)
+    {
+        if (!CheckSize(d, (416+1+1+1+1+1+416+1+1)*sizeof(float)+sizeof(uint32_t)))
+            return;
+
+        const float *ptr = d.ptr<float>();
+        const float *Uov = ptr+416+6;
+
+        fVecFeedbackCurrents.assign(ptr, ptr+416);
+
+        valarray<double> datc(0., 1440);
+        valarray<double> datu(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const PixelMapEntry &entry = fPixelMap.index(i);
+
+            datc[i] = fVecFeedbackCurrents[entry.hv()];
+            datu[i] = Uov[entry.hv()];
+
+            if (fVecBiasCurrent.size()>0)
+            {
+                fBiasCamA->SetEnable(i, uint16_t(fVecBiasCurrent[entry.hv()])!=0x8000);
+                fBiasCamA->highlightPixel(i, fVecBiasCurrent[entry.hv()]<0);
+            }
+        }
+
+        fBiasCamA->SetData(datc);
+        fBiasCamA->updateCamera();
+
+        UpdateBiasValues();
+
+        // --------------------------------------------------------
+
+        double avg = 0;
+        double rms = 0;
+
+        for (int i=0; i<320; i++)
+        {
+            avg += Uov[i];
+            rms += Uov[i]*Uov[i];
+        }
+
+        avg /= 320;
+        rms /= 320;
+        rms = sqrt(rms-avg*avg);
+
+
+        fFeedbackDevCam->SetData(datu);
+        //fFeedbackCmdCam->SetData(cmd);
+
+        fFeedbackDevCam->updateCamera();
+        //fFeedbackCmdCam->updateCamera();
+
+#ifdef HAVE_ROOT
+        UpdateFeedback(*fFeedbackDev, d.time, fGraphFeedbackDev, avg, rms);
+        //UpdateFeedback(*fFeedbackCmd, d.time, fGraphFeedbackCmd, avgcmd, rmscmd);
+#endif
+    }
+
+    // ======================= Rate Scan ====================================
+
+    TGraph fGraphRateScan[201];
+
+    void UpdateRateScan(uint32_t th, const float *rates)
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fRateScanCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("Frame");
+
+        if (fGraphRateScan[0].GetN()==0 || th<fGraphRateScan[0].GetX()[fGraphRateScan[0].GetN()-1])
+        {
+            h->SetBins(1, th<10 ? 0 : th-10, th+10);
+            h->SetMinimum(1);
+            h->SetMaximum(rates[0]*2);
+
+            for (int i=0; i<201; i++)
+            {
+                fGraphRateScan[i].Set(0);
+                fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
+            }
+
+            c->SetGrid();
+            c->SetLogy();
+
+            c->Modified();
+            c->Update();
+            return;
+        }
+
+        const double dac = h->GetXaxis()->GetXmin();
+        h->SetBins(h->GetNbinsX()+1, dac, th+10);
+
+        for (int i=0; i<201; i++)
+            fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void DisplayRateScan()
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fRateScanCanv->GetCanvas();
+
+        TList *l = c->GetListOfPrimitives();
+
+        while (c->FindObject("PatchRate"))
+            l->Remove(c->FindObject("PatchRate"));
+
+        while (c->FindObject("BoardRate"))
+            l->Remove(c->FindObject("BoardRate"));
+
+        if (fRateScanPatch1->value()>=0)
+        {
+            fGraphRateScan[fRateScanPatch1->value()+41].SetLineColor(kRed);
+            fGraphRateScan[fRateScanPatch1->value()+41].SetMarkerColor(kRed);
+            l->Add(&fGraphRateScan[fRateScanPatch1->value()+41], "PL");
+        }
+        if (fRateScanPatch2->value()>=0)
+        {
+            fGraphRateScan[fRateScanPatch2->value()+41].SetLineColor(kGreen);
+            fGraphRateScan[fRateScanPatch2->value()+41].SetMarkerColor(kGreen);
+            l->Add(&fGraphRateScan[fRateScanPatch2->value()+41], "PL");
+        }
+        if (fRateScanBoard1->value()>=0)
+        {
+            fGraphRateScan[fRateScanBoard1->value()+1].SetLineColor(kMagenta);
+            fGraphRateScan[fRateScanBoard1->value()+1].SetMarkerColor(kMagenta);
+            l->Add(&fGraphRateScan[fRateScanBoard1->value()+1], "PL");
+        }
+        if (fRateScanBoard2->value()>=0)
+        {
+            fGraphRateScan[fRateScanBoard2->value()+1].SetLineColor(kCyan);
+            fGraphRateScan[fRateScanBoard2->value()+1].SetMarkerColor(kCyan);
+            l->Add(&fGraphRateScan[fRateScanBoard2->value()+1], "PL");
+        }
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void handleRateScan(const DimData &d)
+    {
+        if (!CheckSize(d, 206*sizeof(float)))
+            return;
+
+        UpdateRateScan(d.get<uint32_t>(8), d.ptr<float>(20));
+    }
+
+    // ===================== MAGIC Weather ==================================
+
+    void handleMagicWeather(const DimData &d)
+    {
+        if (!CheckSize(d, 7*sizeof(float)+sizeof(uint16_t)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fMagicTemp->setValue(ptr[0]);
+        fMagicDew->setValue(ptr[1]);
+        fMagicHum->setValue(ptr[2]);
+        fMagicPressure->setValue(ptr[3]);
+        fMagicWind->setValue(ptr[4]);
+        fMagicGusts->setValue(ptr[5]);
+
+        static const char *dir[] =
+        {
+            "N", "NNE", "NE", "ENE",
+            "E", "ESE", "SE", "SSE",
+            "S", "SSW", "SW", "WSW",
+            "W", "WNW", "NW", "NNW"
+        };
+
+        const uint16_t i = uint16_t(floor(fmod(ptr[6]+11.25, 360)/22.5));
+        fMagicWindDir->setText(dir[i%16]);
+    }
+
+    // ========================== FSC =======================================
+
+    vector<float>   fVecBiasVolt;
+    vector<int16_t> fVecBiasDac;
+    vector<int16_t> fVecBiasCurrent;
+
+    void handleBiasVolt(const DimData &d)
+    {
+        if (!CheckSize(d, 416*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>();
+        fVecBiasVolt.assign(ptr, ptr+416);
+
+        on_fBiasDispRefVolt_stateChanged();
+    }
+
+    void handleBiasDac(const DimData &d)
+    {
+        if (!CheckSize(d, 2*416*sizeof(int16_t)))
+            return;
+
+        const int16_t *ptr = d.ptr<int16_t>();
+        fVecBiasDac.assign(ptr, ptr+2*416);
+
+        on_fBiasDispRefVolt_stateChanged();
+        UpdateBiasValues();
+    }
+
+    int fStateFeedback;
+
+    void handleBiasCurrent(const DimData &d)
+    {
+        if (!CheckSize(d, 416*sizeof(int16_t)))
+            return;
+
+        const int16_t *ptr = d.ptr<int16_t>();
+
+        fVecBiasCurrent.assign(ptr, ptr+416);
+
+        valarray<double> dat(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const PixelMapEntry &entry = fPixelMap.index(i);
+
+            dat[i] = abs(ptr[entry.hv()]) * 5000./4096;
+
+            fBiasCamA->SetEnable(i, uint16_t(ptr[entry.hv()])!=0x8000);
+            fBiasCamA->highlightPixel(i, ptr[entry.hv()]<0);
+        }
+
+        if (fStateFeedback<Feedback::State::kCalibrated)
+            fBiasCamA->SetData(dat);
+
+        fBiasCamA->updateCamera();
+
+        UpdateBiasValues();
+    }
+
+    // ====================== MessageImp ====================================
+
+    bool fChatOnline;
+
+    void handleStateChanged(const Time &time, const string &server,
+                            const State &s)
+    {
+        // FIXME: Prefix tooltip with time
+        if (server=="MCP")
+        {
+            // FIXME: Enable FTU page!!!
+            fStatusMCPLabel->setText(s.name.c_str());
+            fStatusMCPLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<MCP::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusMCPLed, kLedGray, time);
+            if (s.index==MCP::State::kDisconnected) // Disconnected
+                SetLedColor(fStatusMCPLed, kLedRed, time);
+            if (s.index==MCP::State::kConnecting) // Connecting
+                SetLedColor(fStatusMCPLed, kLedOrange, time);
+            if (s.index==MCP::State::kConnected) // Connected
+                SetLedColor(fStatusMCPLed, kLedYellow, time);
+            if (s.index==MCP::State::kIdle || s.index>=MCP::State::kConfigured) // Idle, TriggerOn, TakingData
+                SetLedColor(fStatusMCPLed, kLedGreen, time);
+
+            if (s.index>MCP::State::kIdle && s.index<MCP::State::kConfigured)
+                SetLedColor(fStatusMCPLed, kLedGreenBar, time);
+
+            fMcpStartRun->setEnabled(s.index>=MCP::State::kIdle);
+            fMcpStopRun->setEnabled(s.index>=MCP::State::kIdle);
+            fMcpReset->setEnabled(s.index>=MCP::State::kIdle && MCP::State::kConfigured);
+        }
+
+        if (server=="FTM_CONTROL")
+        {
+            // FIXME: Enable FTU page!!!
+            fStatusFTMLabel->setText(s.name.c_str());
+            fStatusFTMLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+            const bool configuring =
+                s.index==FTM::State::kConfiguring1 ||
+                s.index==FTM::State::kConfiguring2 ||
+                s.index==FTM::State::kConfigured1  ||
+                s.index==FTM::State::kConfigured2;
+
+            if (s.index<FTM::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusFTMLed, kLedGray, time);
+            if (s.index==FTM::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFTMLed, kLedYellow, time);
+            if (s.index==FTM::State::kConnected    ||
+                s.index==FTM::State::kIdle         ||
+                s.index==FTM::State::kValid        ||
+                configuring) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreen, time);
+            if (s.index==FTM::State::kTriggerOn) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreenCheck, time);
+            if (s.index==FTM::State::kConnected ||
+                s.index==FTM::State::kIdle ||
+                s.index==FTM::State::kValid) // Dim connection / FTM connected
+                enable = true;
+            if (s.index>=FTM::State::kConfigError1) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreenWarn, time);
+
+            fFtmStartRun->setEnabled(!configuring && enable && s.index!=FTM::State::kTriggerOn);
+            fFtmStopRun->setEnabled(!configuring && !enable);
+
+            fTriggerWidget->setEnabled(enable);
+            fFtuGroupEnable->setEnabled(enable);
+            fRatesControls->setEnabled(enable);
+            fFtuWidget->setEnabled(s.index>FTM::State::kDisconnected);
+
+            if (s.index>=FTM::State::kConnected)
+                SetFtuStatusLed(time);
+            else
+            {
+                SetLedColor(fStatusFTULed, kLedGray, time);
+                fStatusFTULabel->setText("Offline");
+                fStatusFTULabel->setToolTip("FTM is not online.");
+            }
+        }
+
+        if (server=="FAD_CONTROL")
+        {
+            fStatusFADLabel->setText(s.name.c_str());
+            fStatusFADLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+
+            if (s.index<FAD::State::kOffline) // No Dim connection
+            {
+                SetLedColor(fStatusFADLed, kLedGray, time);
+
+                // Timing problem - sometimes they stay gray :(
+                //for (int i=0; i<40; i++)
+                //    SetLedColor(fFadLED[i], kLedGray, time);
+
+                /*
+                 fStatusEventBuilderLabel->setText("Offline");
+                 fStatusEventBuilderLabel->setToolTip("No connection to fadctrl.");
+                 fEvtBldWidget->setEnabled(false);
+
+                 SetLedColor(fStatusEventBuilderLed, kLedGray, time);
+                 */
+            }
+            if (s.index==FAD::State::kOffline) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFADLed, kLedRed, time);
+            if (s.index==FAD::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFADLed, kLedOrange, time);
+	    if (s.index==FAD::State::kConnecting) // Dim connection / FTM disconnected
+            {
+		SetLedColor(fStatusFADLed, kLedYellow, time);
+		// FIXME FIXME FIXME: The LEDs are not displayed when disabled!
+                enable = true;
+            }
+            if (s.index>=FAD::State::kConnected) // Dim connection / FTM connected
+            {
+                SetLedColor(fStatusFADLed, kLedGreen, time);
+                enable = true;
+            }
+
+            fFadWidget->setEnabled(enable);
+
+            fFadStart->setEnabled    (s.index==FAD::State::kOffline);
+            fFadStop->setEnabled     (s.index >FAD::State::kOffline);
+            fFadAbort->setEnabled    (s.index >FAD::State::kOffline);
+            fFadSoftReset->setEnabled(s.index >FAD::State::kOffline);
+            fFadHardReset->setEnabled(s.index >FAD::State::kOffline);
+        }
+
+	if (server=="FSC_CONTROL")
+        {
+            fStatusFSCLabel->setText(s.name.c_str());
+            fStatusFSCLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+
+            if (s.index<FSC::State::kDisconnected)  // No Dim connection
+                SetLedColor(fStatusFSCLed, kLedGray, time);
+            if (s.index==FSC::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFSCLed, kLedRed, time);
+            if (s.index>=FSC::State::kConnected)    // Dim connection / FTM disconnected
+            {
+                SetLedColor(fStatusFSCLed, kLedGreen, time);
+                enable = true;
+            }
+
+            fAuxWidget->setEnabled(enable);
+        }
+
+        if (server=="DRIVE_CONTROL")
+        {
+            fStatusDriveLabel->setText(s.name.c_str());
+            fStatusDriveLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<Drive::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusDriveLed, kLedGray, time);
+            if (s.index==Drive::State::kDisconnected) // Dim connection / No connection to cosy
+                SetLedColor(fStatusDriveLed, kLedRed, time);
+            if (s.index==Drive::State::kConnected || /*s.index==Drive::State::kNotReady ||*/ s.index==Drive::State::kLocked)  // Not Ready
+                SetLedColor(fStatusDriveLed, kLedGreenBar, time);
+            if (s.index==Drive::State::kConnected || s.index==Drive::State::kArmed)  // Connected / Armed
+                SetLedColor(fStatusDriveLed, kLedGreen, time);
+            if (s.index==Drive::State::kMoving)  // Moving
+                SetLedColor(fStatusDriveLed, kLedInProgress, time);
+            if (s.index==Drive::State::kTracking || s.index==Drive::State::kOnTrack)  // Tracking
+                SetLedColor(fStatusDriveLed, kLedGreenCheck, time);
+            if (s.index>=0xff)  // Error
+                SetLedColor(fStatusDriveLed, kLedGreenWarn, time);
+        }
+
+        if (server=="BIAS_CONTROL")
+        {
+            fStatusBiasLabel->setText(s.name.c_str());
+            fStatusBiasLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<1) // No Dim connection
+                SetLedColor(fStatusBiasLed, kLedGray, time);
+            if (s.index==BIAS::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusBiasLed, kLedRed, time);
+            if (s.index==BIAS::State::kConnecting || s.index==BIAS::State::kInitializing) // Connecting / Initializing
+                SetLedColor(fStatusBiasLed, kLedOrange, time);
+            if (s.index==BIAS::State::kVoltageOff || BIAS::State::kLocked) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenBar, time);
+            if (s.index==BIAS::State::kNotReferenced) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenWarn, time);
+            if (s.index==BIAS::State::kRamping) // Ramping
+                SetLedColor(fStatusBiasLed, kLedInProgress, time);
+            if (s.index==BIAS::State::kVoltageOn) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenCheck, time);
+            if (s.index==BIAS::State::kOverCurrent) // Over current
+                SetLedColor(fStatusBiasLed, kLedWarnBorder, time);
+            if (s.index==BIAS::State::kExpertMode) // ExpertMode
+                SetLedColor(fStatusBiasLed, kLedWarnTriangleBorder, time);
+
+            fBiasWidget->setEnabled(s.index>=BIAS::State::kInitializing);
+        }
+
+        if (server=="FEEDBACK")
+        {
+            fStatusFeedbackLabel->setText(s.name.c_str());
+            fStatusFeedbackLabel->setToolTip(s.comment.c_str());
+
+            const bool connected = s.index> Feedback::State::kConnecting;
+            const bool idle      = s.index==Feedback::State::kCalibrated || s.index==Feedback::State::kWaitingForData;
+
+            if (s.index<=Feedback::State::kConnecting) // NoDim / Disconnected
+                SetLedColor(fStatusFeedbackLed, kLedRed, time);
+            if (s.index<Feedback::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusFeedbackLed, kLedGray, time);
+            if (s.index==Feedback::State::kConnecting) // Connecting
+                SetLedColor(fStatusFeedbackLed, kLedOrange, time);
+            if (connected) // Connected
+                SetLedColor(fStatusFeedbackLed, kLedYellow, time);
+            if (idle)
+                SetLedColor(fStatusFeedbackLed, kLedGreen, time);
+            if (s.index==Feedback::State::kInProgress)
+                SetLedColor(fStatusFeedbackLed, kLedGreenCheck, time);
+            if (s.index==Feedback::State::kCalibrating)
+                SetLedColor(fStatusFeedbackLed, kLedInProgress, time);
+
+            fFeedbackWidget->setEnabled(connected);
+
+            fFeedbackCalibrate->setEnabled(s.index==Feedback::State::kConnected || s.index==Feedback::State::kCalibrated);
+            fFeedbackStart->setEnabled(s.index==Feedback::State::kCalibrated);
+            fFeedbackStop->setEnabled(s.index>Feedback::State::kCalibrated);
+            fFeedbackOvervoltage->setEnabled(connected);
+
+            const bool enable = s.index>=Feedback::State::kCalibrated;
+
+            fFeedbackFrameLeft->setEnabled(enable);
+            fFeedbackCanvLeft->setEnabled(enable);
+
+            fStateFeedback = s.index;
+        }
+
+        if (server=="RATE_CONTROL")
+        {
+            fStatusRateControlLabel->setText(s.name.c_str());
+            fStatusRateControlLabel->setToolTip(s.comment.c_str());
+
+            if (s.index==RateControl::State::kInProgress)
+                SetLedColor(fStatusRateControlLed, kLedGreenCheck, time);
+            if (s.index==RateControl::State::kGlobalThresholdSet)
+                SetLedColor(fStatusRateControlLed, kLedGreen, time);
+            if (s.index==RateControl::State::kSettingGlobalThreshold)
+                SetLedColor(fStatusRateControlLed, kLedInProgress, time);
+            if (s.index==RateControl::State::kConnected)
+                SetLedColor(fStatusRateControlLed, kLedGreenBar, time);
+            if (s.index==RateControl::State::kConnecting)
+                SetLedColor(fStatusRateControlLed, kLedOrange, time);
+            if (s.index<RateControl::State::kConnecting)
+                SetLedColor(fStatusRateControlLed, kLedRed, time);
+            if (s.index<RateControl::State::kDisconnected)
+                SetLedColor(fStatusRateControlLed, kLedGray, time);
+        }
+
+        if (server=="DATA_LOGGER")
+        {
+            fStatusLoggerLabel->setText(s.name.c_str());
+            fStatusLoggerLabel->setToolTip(s.comment.c_str());
+
+            bool enable = true;
+
+            if (s.index<30)   // Ready/Waiting
+                SetLedColor(fStatusLoggerLed, kLedYellow, time);
+            if (s.index==30)   // Ready/Waiting
+                SetLedColor(fStatusLoggerLed, kLedGreen, time);
+            if (s.index<-1)     // Offline
+            {
+                SetLedColor(fStatusLoggerLed, kLedGray, time);
+                enable = false;
+            }
+            if (s.index>=0x100) // Error
+                SetLedColor(fStatusLoggerLed, kLedRed, time);
+            if (s.index==40)   // Logging
+                SetLedColor(fStatusLoggerLed, kLedGreen, time);
+
+            fLoggerWidget->setEnabled(enable);
+            fLoggerStart->setEnabled(s.index>-1 && s.index<30);
+            fLoggerStop->setEnabled(s.index>=30);
+        }
+
+        if (server=="MAGIC_WEATHER")
+        {
+            fStatusWeatherLabel->setText(s.name.c_str());
+
+            if (s.index==MagicWeather::State::kReceiving)
+                SetLedColor(fStatusWeatherLed, kLedGreen, time);
+            if (s.index<MagicWeather::State::kReceiving)
+                SetLedColor(fStatusWeatherLed, kLedRed, time);
+            if (s.index<MagicWeather::State::kConnected)
+                SetLedColor(fStatusWeatherLed, kLedGray, time);
+        }
+
+        if (server=="CHAT")
+        {
+            fStatusChatLabel->setText(s.name.c_str());
+
+            fChatOnline = s.index==0;
+
+            SetLedColor(fStatusChatLed, fChatOnline ? kLedGreen : kLedGray, time);
+
+            fChatSend->setEnabled(fChatOnline);
+            fChatMessage->setEnabled(fChatOnline);
+        }
+
+        if (server=="RATESCAN")
+            fRateScanControls->setEnabled(s.index>=RateScan::State::kConnected);
+
+        if (server=="SCHEDULER")
+        {
+            fStatusSchedulerLabel->setText(s.name.c_str());
+
+            SetLedColor(fStatusSchedulerLed, s.index>=0 ? kLedGreen : kLedRed, time);
+        }
+    }
+
+    void on_fTabWidget_currentChanged(int which)
+    {
+        if (fTabWidget->tabText(which)=="Chat")
+            fTabWidget->setTabIcon(which, QIcon());
+    }
+
+    void handleWrite(const Time &time, const string &text, int qos)
+    {
+        stringstream out;
+
+        if (text.substr(0, 6)=="CHAT: ")
+        {
+            if (qos==MessageImp::kDebug)
+                return;
+
+            out << "<font size='-1' color='navy'>[<B>";
+            out << time.GetAsStr("%H:%M:%S");
+            out << "</B>]</FONT>  " << text.substr(6);
+            fChatText->append(out.str().c_str());
+
+            if (fTabWidget->tabText(fTabWidget->currentIndex())=="Chat")
+                return;
+
+            static int num = 0;
+            if (num++<2)
+                return;
+
+            for (int i=0; i<fTabWidget->count(); i++)
+                if (fTabWidget->tabText(i)=="Chat")
+                {
+                    fTabWidget->setTabIcon(i, QIcon(":/Resources/icons/warning 3.png"));
+                    break;
+                }
+
+            return;
+        }
+
+
+        out << "<font style='font-family:monospace' color='";
+
+        switch (qos)
+        {
+        case kMessage: out << "black";   break;
+        case kInfo:    out << "green";   break;
+        case kWarn:    out << "#FF6600"; break;
+        case kError:   out << "maroon";  break;
+        case kFatal:   out << "maroon";  break;
+        case kDebug:   out << "navy";    break;
+        default:       out << "navy";    break;
+        }
+        out << "'>";
+        out << time.GetAsStr("%H:%M:%S.%f").substr(0,12);
+        out << " - " << text << "</font>";
+
+        fLogText->append(out.str().c_str());
+
+        if (qos>=kWarn && qos!=kDebug && qos!=kComment)
+            fTextEdit->append(out.str().c_str());
+    }
+
+    void IndicateStateChange(const Time &time, const string &server)
+    {
+        const State s = GetState(server, GetCurrentState(server));
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleStateChanged, this, time, server, s)));
+    }
+
+    int Write(const Time &time, const string &txt, int qos)
+    {
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleWrite, this, time, txt, qos)));
+
+        return 0;
+    }
+
+    // ====================== Dim infoHandler================================
+
+    void handleDimService(const string &txt)
+    {
+        fDimSvcText->append(txt.c_str());
+    }
+
+    void infoHandlerService(DimInfo &info)
+    {
+        const string fmt = string(info.getFormat()).empty() ? "C" : info.getFormat();
+
+        stringstream dummy;
+        const Converter conv(dummy, fmt, false);
+
+        const Time tm(info.getTimestamp(), info.getTimestampMillisecs()*1000);
+
+        stringstream out;
+        out << "<font size'-1' color='navy'>[";
+        out << tm.GetAsStr("%H:%M:%S.%f").substr(0,12);
+        out << "]</font>   <B>" << info.getName() << "</B> - ";
+
+        uint8_t iserr = 2;
+        if (!conv)
+        {
+            out << "Compilation of format string '" << fmt << "' failed!";
+        }
+        else
+        {
+            try
+            {
+                const string dat = info.getSize()==0 ? "&lt;empty&gt;" : conv.GetString(info.getData(), info.getSize());
+                out << dat;
+                iserr = info.getSize()==0;
+            }
+            catch (const runtime_error &e)
+            {
+                out << "Conversion to string failed!<pre>" << e.what() << "</pre>";
+            }
+        }
+
+        // srand(hash<string>()(string(info.getName())));
+        // int bg = rand()&0xffffff;
+
+        int bg = hash<string>()(string(info.getName()));
+
+        // allow only light colors
+        bg = ~(bg&0x1f1f1f)&0xffffff;
+
+        if (iserr==2)
+            bg = 0xffffff;
+
+        stringstream bgcol;
+        bgcol << hex << setfill('0') << setw(6) << bg;
+
+        const string col = iserr==0 ? "black" : (iserr==1 ? "#FF6600" : "black");
+        const string str = "<table width='100%' bgcolor=#"+bgcol.str()+"><tr><td><font color='"+col+"'>"+out.str()+"</font></td></tr></table>";
+
+        QApplication::postEvent(this,
+                                new FunctionEvent(bind(&FactGui::handleDimService, this, str)));
+    }
+
+    void CallInfoHandler(void (FactGui::*handler)(const DimData&), const DimData &d)
+    {
+        fInHandler = true;
+        (this->*handler)(d);
+        fInHandler = false;
+    }
+
+    /*
+    void CallInfoHandler(const boost::function<void()> &func)
+    {
+        // This ensures that newly received values are not sent back to the emitter
+        // because changing the value emits the valueChanged signal (or similar)
+        fInHandler = true;
+        func();
+        fInHandler = false;
+    }*/
+
+    void PostInfoHandler(void (FactGui::*handler)(const DimData&))
+    {
+        //const boost::function<void()> f = boost::bind(handler, this, DimData(getInfo()));
+
+        FunctionEvent *evt = new FunctionEvent(bind(&FactGui::CallInfoHandler, this, handler, DimData(getInfo())));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(&FactGui::CallInfoHandler, this, f));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(handler, this, DimData(getInfo()))));
+
+        QApplication::postEvent(this, evt);
+    }
+
+    void infoHandler()
+    {
+        // Initialize the time-stamp (what a weird workaround...)
+        if (getInfo())
+            getInfo()->getTimestamp();
+
+        if (getInfo()==&fDimDNS)
+            return PostInfoHandler(&FactGui::handleDimDNS);
+#ifdef DEBUG_DIM
+        cout << "HandleDimInfo " << getInfo()->getName() << endl;
+#endif
+        if (getInfo()==&fDimLoggerStats)
+            return PostInfoHandler(&FactGui::handleLoggerStats);
+
+//        if (getInfo()==&fDimFadFiles)
+//            return PostInfoHandler(&FactGui::handleFadFiles);
+
+        if (getInfo()==&fDimFadWriteStats)
+            return PostInfoHandler(&FactGui::handleFadWriteStats);
+
+        if (getInfo()==&fDimFadConnections)
+            return PostInfoHandler(&FactGui::handleFadConnections);
+
+        if (getInfo()==&fDimFadFwVersion)
+            return PostInfoHandler(&FactGui::handleFadFwVersion);
+
+        if (getInfo()==&fDimFadRunNumber)
+            return PostInfoHandler(&FactGui::handleFadRunNumber);
+
+        if (getInfo()==&fDimFadDNA)
+            return PostInfoHandler(&FactGui::handleFadDNA);
+
+        if (getInfo()==&fDimFadTemperature)
+            return PostInfoHandler(&FactGui::handleFadTemperature);
+
+        if (getInfo()==&fDimFadRefClock)
+            return PostInfoHandler(&FactGui::handleFadRefClock);
+
+	if (getInfo()==&fDimFadRoi)
+            return PostInfoHandler(&FactGui::handleFadRoi);
+
+        if (getInfo()==&fDimFadDac)
+            return PostInfoHandler(&FactGui::handleFadDac);
+
+        if (getInfo()==&fDimFadDrsCalibration)
+            return PostInfoHandler(&FactGui::handleFadDrsCalibration);
+
+        if (getInfo()==&fDimFadPrescaler)
+            return PostInfoHandler(&FactGui::handleFadPrescaler);
+
+        if (getInfo()==&fDimFadStatus)
+            return PostInfoHandler(&FactGui::handleFadStatus);
+
+        if (getInfo()==&fDimFadStatistics1)
+            return PostInfoHandler(&FactGui::handleFadStatistics1);
+
+        //if (getInfo()==&fDimFadStatistics2)
+        //    return PostInfoHandler(&FactGui::handleFadStatistics2);
+
+        if (getInfo()==&fDimFadFileFormat)
+            return PostInfoHandler(&FactGui::handleFadFileFormat);
+
+        if (getInfo()==&fDimFadEvents)
+            return PostInfoHandler(&FactGui::handleFadEvents);
+
+        if (getInfo()==&fDimFadRuns)
+            return PostInfoHandler(&FactGui::handleFadRuns);
+
+        if (getInfo()==&fDimFadStartRun)
+            return PostInfoHandler(&FactGui::handleFadStartRun);
+
+	if (getInfo()==&fDimFadRawData)
+            return PostInfoHandler(&FactGui::handleFadRawData);
+
+        if (getInfo()==&fDimFadEventData)
+            return PostInfoHandler(&FactGui::handleFadEventData);
+
+/*
+        if (getInfo()==&fDimFadSetup)
+            return PostInfoHandler(&FactGui::handleFadSetup);
+*/
+        if (getInfo()==&fDimLoggerFilenameNight)
+            return PostInfoHandler(&FactGui::handleLoggerFilenameNight);
+
+        if (getInfo()==&fDimLoggerNumSubs)
+            return PostInfoHandler(&FactGui::handleLoggerNumSubs);
+
+        if (getInfo()==&fDimLoggerFilenameRun)
+            return PostInfoHandler(&FactGui::handleLoggerFilenameRun);
+
+        if (getInfo()==&fDimFtmTriggerRates)
+            return PostInfoHandler(&FactGui::handleFtmTriggerRates);
+
+        if (getInfo()==&fDimFtmCounter)
+            return PostInfoHandler(&FactGui::handleFtmCounter);
+
+        if (getInfo()==&fDimFtmDynamicData)
+            return PostInfoHandler(&FactGui::handleFtmDynamicData);
+
+        if (getInfo()==&fDimFtmPassport)
+            return PostInfoHandler(&FactGui::handleFtmPassport);
+
+        if (getInfo()==&fDimFtmFtuList)
+            return PostInfoHandler(&FactGui::handleFtmFtuList);
+
+        if (getInfo()==&fDimFtmStaticData)
+            return PostInfoHandler(&FactGui::handleFtmStaticData);
+
+        if (getInfo()==&fDimFtmError)
+            return PostInfoHandler(&FactGui::handleFtmError);
+
+        if (getInfo()==&fDimFscTemp)
+            return PostInfoHandler(&FactGui::handleFscTemp);
+
+        if (getInfo()==&fDimFscVolt)
+            return PostInfoHandler(&FactGui::handleFscVolt);
+
+        if (getInfo()==&fDimFscCurrent)
+            return PostInfoHandler(&FactGui::handleFscCurrent);
+
+        if (getInfo()==&fDimFscHumidity)
+            return PostInfoHandler(&FactGui::handleFscHumidity);
+
+        //if (getInfo()==&fDimBiasNominal)
+        //    return PostInfoHandler(&FactGui::handleBiasNominal);
+
+        if (getInfo()==&fDimBiasVolt)
+            return PostInfoHandler(&FactGui::handleBiasVolt);
+
+        if (getInfo()==&fDimBiasDac)
+            return PostInfoHandler(&FactGui::handleBiasDac);
+
+        if (getInfo()==&fDimBiasCurrent)
+            return PostInfoHandler(&FactGui::handleBiasCurrent);
+
+        if (getInfo()==&fDimFeedbackCalibrated)
+            return PostInfoHandler(&FactGui::handleFeedbackCalibratedCurrents);
+
+        if (getInfo()==&fDimRateScan)
+            return PostInfoHandler(&FactGui::handleRateScan);
+
+        if (getInfo()==&fDimMagicWeather)
+            return PostInfoHandler(&FactGui::handleMagicWeather);
+
+//        if (getInfo()==&fDimFadFiles)
+//            return PostInfoHandler(&FactGui::handleFadFiles);
+
+        for (map<string,DimInfo*>::iterator i=fServices.begin(); i!=fServices.end(); i++)
+            if (i->second==getInfo())
+            {
+                infoHandlerService(*i->second);
+                return;
+            }
+
+        //DimNetwork::infoHandler();
+    }
+
+
+    // ======================================================================
+
+    bool event(QEvent *evt)
+    {
+        if (dynamic_cast<FunctionEvent*>(evt))
+            return static_cast<FunctionEvent*>(evt)->Exec();
+
+        if (dynamic_cast<CheckBoxEvent*>(evt))
+        {
+            const QStandardItem &item = static_cast<CheckBoxEvent*>(evt)->item;
+            const QStandardItem *par  = item.parent();
+            if (par)
+            {
+                const QString server  = par->text();
+                const QString service = item.text();
+
+                const string s = (server+'/'+service).toStdString();
+
+                if (item.checkState()==Qt::Checked)
+                    SubscribeService(s);
+                else
+                    UnsubscribeService(s);
+            }
+        }
+
+        return MainWindow::event(evt); // unrecognized
+    }
+
+    void on_fDimCmdSend_clicked()
+    {
+        const QString server    = fDimCmdServers->currentIndex().data().toString();
+        const QString command   = fDimCmdCommands->currentIndex().data().toString();
+        const QString arguments = fDimCmdLineEdit->displayText();
+
+        // FIXME: Sending a command exactly when the info Handler changes
+        //        the list it might lead to confusion.
+        try
+        {
+            SendDimCommand(server.toStdString(), command.toStdString()+" "+arguments.toStdString());
+            fTextEdit->append("<font color='green'>Command '"+server+'/'+command+"' successfully emitted.</font>");
+            fDimCmdLineEdit->clear();
+        }
+        catch (const runtime_error &e)
+        {
+            stringstream txt;
+            txt << e.what();
+
+            string buffer;
+            while (getline(txt, buffer, '\n'))
+                fTextEdit->append(("<font color='red'><pre>"+buffer+"</pre></font>").c_str());
+        }
+    }
+
+#ifdef HAVE_ROOT
+    void slot_RootEventProcessed(TObject *obj, unsigned int evt, TCanvas *canv)
+    {
+        // kMousePressEvent       // TCanvas processed QEvent mousePressEvent
+        // kMouseMoveEvent        // TCanvas processed QEvent mouseMoveEvent
+        // kMouseReleaseEvent     // TCanvas processed QEvent mouseReleaseEvent
+        // kMouseDoubleClickEvent // TCanvas processed QEvent mouseDoubleClickEvent
+        // kKeyPressEvent         // TCanvas processed QEvent keyPressEvent
+        // kEnterEvent            // TCanvas processed QEvent enterEvent
+        // kLeaveEvent            // TCanvas processed QEvent leaveEvent
+
+        if (dynamic_cast<TCanvas*>(obj))
+            return;
+
+        TQtWidget *tipped = static_cast<TQtWidget*>(sender());
+
+        if (evt==11/*kMouseReleaseEvent*/)
+            return;
+
+        if (evt==61/*kMouseDoubleClickEvent*/)
+            return;
+
+        if (obj)
+        {
+            // Find the object which will get picked by the GetObjectInfo
+            // due to buffer overflows in many root-versions
+            // in TH1 and TProfile we have to work around and implement
+            // our own GetObjectInfo which make everything a bit more
+            // complicated.
+            canv->cd();
+#if ROOT_VERSION_CODE > ROOT_VERSION(5,22,00)
+            const char *objectInfo =
+                obj->GetObjectInfo(tipped->GetEventX(),tipped->GetEventY());
+#else
+            const char *objectInfo = dynamic_cast<TH1*>(obj) ?
+                "" : obj->GetObjectInfo(tipped->GetEventX(),tipped->GetEventY());
+#endif
+
+            QString tipText;
+            tipText += obj->GetName();
+            tipText += " [";
+            tipText += obj->ClassName();
+            tipText += "]: ";
+            tipText += objectInfo;
+
+            fStatusBar->showMessage(tipText, 3000);
+        }
+
+        gSystem->DispatchOneEvent(kFALSE);
+        //gSystem->ProcessEvents();
+        //QWhatsThis::display(tipText)
+    }
+
+    void slot_RootUpdate()
+    {
+        gSystem->DispatchOneEvent(kFALSE);
+        //gSystem->ProcessEvents();
+        QTimer::singleShot(10, this, SLOT(slot_RootUpdate()));
+    }
+#endif
+
+    void ChoosePatchThreshold(Camera &cam, int isw)
+    {
+        cam.Reset();
+
+        fThresholdIdx->setValue(isw);
+
+        const int ihw = isw<0 ? 0 : fPatchMapHW[isw];
+
+        fPatchRate->setEnabled(isw>=0);
+        fThresholdCrate->setEnabled(isw>=0);
+        fThresholdBoard->setEnabled(isw>=0);
+        fThresholdPatch->setEnabled(isw>=0);
+
+        if (isw<0)
+            return;
+
+        const int patch = ihw%4;
+        const int board = (ihw/4)%10;
+        const int crate = (ihw/4)/10;
+
+        fInChoosePatchTH = true;
+
+        fThresholdCrate->setValue(crate);
+        fThresholdBoard->setValue(board);
+        fThresholdPatch->setValue(patch);
+
+        fInChoosePatchTH = false;
+
+        fThresholdVal->setValue(fFtmStaticData.fThreshold[ihw]);
+        fPatchRate->setValue(fTriggerRates.fPatchRate[ihw]);
+        fBoardRate->setValue(fTriggerRates.fBoardRate[ihw/4]);
+
+        // Loop over the software idx of all pixels
+//        for (unsigned int i=0; i<1440; i++)
+//            if (fPatchHW[i]==ihw)
+//                cam.SetBold(i);
+    }
+
+    void slot_ChoosePixelThreshold(int isw)
+    {
+        fPixelIdx->setValue(isw);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        fPixelEnable->setChecked(fFtmStaticData.IsEnabled(entry.hw()));
+    }
+
+    void slot_CameraDoubleClick(int isw)
+    {
+        fPixelIdx->setValue(isw);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", uint16_t(entry.hw()));
+    }
+
+    void slot_CameraMouseMove(int isw)
+    {
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+
+        QString tipText;
+        tipText += fRatesCanv->GetName();
+        ostringstream str;
+        str << setfill('0') <<
+            "  ||  HW: " << entry.crate() << "|" << entry.board() << "|" << entry.patch() << "|" << entry.pixel() << " (crate|board|patch|pixel)" <<
+            "  ||  HV: " << entry.hv_board << "|" << setw(2) << entry.hv_channel << " (board|channel)" <<
+            "  ||  ID: " << isw;
+
+
+        tipText += str.str().c_str();
+        fStatusBar->showMessage(tipText, 3000);
+    }
+
+    void on_fPixelIdx_valueChanged(int isw)
+    {
+        int ii = 0;
+        for (; ii<160; ii++)
+            if (fPixelMap.index(isw).hw()/9==fPatchMapHW[ii])
+                break;
+
+        fRatesCanv->SetWhite(isw);
+        ChoosePatchThreshold(*fRatesCanv, ii);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        fPixelEnable->setChecked(fFtmStaticData.IsEnabled(entry.hw()));
+    }
+
+    // ------------------- Bias display ---------------------
+
+    void UpdateBiasValues()
+    {
+        const int b = fBiasHvBoard->value();
+        const int c = fBiasHvChannel->value();
+
+        const int ihw = b*32+c;
+
+        if (fVecBiasVolt.size()>0)
+        {
+            fBiasVoltCur->setValue(fVecBiasVolt[ihw]);
+            SetLedColor(fBiasNominalLed,
+                        fVecBiasDac[ihw]==fVecBiasDac[ihw+416]?kLedGreen:kLedRed, Time());
+        }
+
+        if (fVecBiasCurrent.size()>0)
+        {
+            const double val = abs(fVecBiasCurrent[ihw]) * 5000./4096;
+            fBiasCurrent->setValue(val);
+            SetLedColor(fBiasOverCurrentLed,
+                        fVecBiasCurrent[ihw]<0?kLedRed:kLedGreen, Time());
+        }
+
+        const bool calibrated = fStateFeedback>=Feedback::State::kCalibrated &&
+            fVecFeedbackCurrents.size()>0;
+
+        fBiasCalibrated->setValue(calibrated ? fVecFeedbackCurrents[ihw] : 0);
+        fBiasCalibrated->setEnabled(calibrated);
+    }
+
+    void UpdateBiasCam(const PixelMapEntry &entry)
+    {
+        fInChooseBiasCam = true;
+
+        fBiasCamCrate->setValue(entry.crate());
+        fBiasCamBoard->setValue(entry.board());
+        fBiasCamPatch->setValue(entry.patch());
+        fBiasCamPixel->setValue(entry.pixel());
+
+        fInChooseBiasCam = false;
+    }
+
+    void BiasHvChannelChanged()
+    {
+        if (fInChooseBiasHv)
+            return;
+
+        const int b  = fBiasHvBoard->value();
+        const int ch = fBiasHvChannel->value();
+
+        // FIXME: Mark corresponding patch in camera
+        const PixelMapEntry &entry = fPixelMap.hv(b, ch);
+        fBiasCamV->SetWhite(entry.index);
+        fBiasCamA->SetWhite(entry.index);
+        fBiasCamV->updateCamera();
+        fBiasCamA->updateCamera();
+
+        UpdateBiasCam(entry);
+        UpdateBiasValues();
+    }
+
+    void UpdateBiasHv(const PixelMapEntry &entry)
+    {
+        fInChooseBiasHv = true;
+
+        fBiasHvBoard->setValue(entry.hv_board);
+        fBiasHvChannel->setValue(entry.hv_channel);
+
+        fInChooseBiasHv = false;
+    }
+
+    void BiasCamChannelChanged()
+    {
+        if (fInChooseBiasCam)
+            return;
+
+        const int crate = fBiasCamCrate->value();
+        const int board = fBiasCamBoard->value();
+        const int patch = fBiasCamPatch->value();
+        const int pixel = fBiasCamPixel->value();
+
+        // FIXME: Display corresponding patches
+        const PixelMapEntry &entry = fPixelMap.cbpx(crate, board, patch, pixel);
+        fBiasCamV->SetWhite(entry.index);
+        fBiasCamA->SetWhite(entry.index);
+        fBiasCamV->updateCamera();
+        fBiasCamA->updateCamera();
+
+        UpdateBiasHv(entry);
+        UpdateBiasValues();
+    }
+
+    void slot_ChooseBiasChannel(int isw)
+    {
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+
+        UpdateBiasHv(entry);
+        UpdateBiasCam(entry);
+        UpdateBiasValues();
+    }
+
+    void on_fBiasDispRefVolt_stateChanged(int = 0)
+    {
+        // FIXME: Display patches for which ref==cur
+
+        valarray<double> dat(0., 1440);
+        fBiasCamV->setTitle("Applied BIAS voltage");
+
+        if (fVecBiasVolt.size()>0 && fVecBiasDac.size()>0)
+        {
+            for (int i=0; i<1440; i++)
+            {
+                const PixelMapEntry &entry = fPixelMap.index(i);
+
+                dat[i] = fVecBiasVolt[entry.hv()];
+                fBiasCamV->highlightPixel(i, fVecBiasDac[entry.hv()]!=fVecBiasDac[entry.hv()+416]);
+            }
+
+            fBiasCamV->SetData(dat);
+        }
+
+        fBiasCamV->updateCamera();
+    }
+
+    // ------------------------------------------------------
+
+    void on_fPixelEnable_stateChanged(int b)
+    {
+        if (fInHandler)
+            return;
+
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+
+        Dim::SendCommand(b==Qt::Unchecked ?
+                         "FTM_CONTROL/DISABLE_PIXEL" : "FTM_CONTROL/ENABLE_PIXEL",
+                         uint16_t(entry.hw()));
+    }
+
+    void on_fPixelDisableOthers_clicked()
+    {
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+        Dim::SendCommand("FTM_CONTROL/DISABLE_ALL_PIXELS_EXCEPT", uint16_t(entry.hw()));
+    }
+
+    void on_fThresholdDisableOthers_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+        if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/DISABLE_ALL_PATCHES_EXCEPT", ihw);
+    }
+
+    void on_fThresholdEnablePatch_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+       if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/ENABLE_PATCH", ihw);
+    }
+
+    void on_fThresholdDisablePatch_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+        if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/DISABLE_PATCH", ihw);
+    }
+
+    void on_fThresholdVal_valueChanged(int v)
+    {
+        fThresholdVolt->setValue(2500./4095*v);
+
+        const int32_t isw = fThresholdIdx->value();
+        const int32_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+
+        const int32_t d[2] = { ihw, v };
+
+        if (!fInHandler)
+            Dim::SendCommand("FTM_CONTROL/SET_THRESHOLD", d);
+    }
+
+    TGraph fGraphFtmTemp[4];
+    TGraph fGraphFtmRate;
+    TGraph fGraphPatchRate[160];
+    TGraph fGraphBoardRate[40];
+
+#ifdef HAVE_ROOT
+    TH1 *DrawTimeFrame(const char *ytitle)
+    {
+        const double tm = Time().RootTime();
+
+        TH1F *h=new TH1F("TimeFrame", "", 1, tm, tm+60);//Time().RootTime()-1./24/60/60, Time().RootTime());
+        h->SetDirectory(0);
+        h->SetBit(kCanDelete);
+        h->SetStats(kFALSE);
+//        h.SetMinimum(0);
+//        h.SetMaximum(1);
+        h->SetXTitle("Time");
+        h->SetYTitle(ytitle);
+        h->GetXaxis()->CenterTitle();
+	h->GetYaxis()->CenterTitle();
+        h->GetXaxis()->SetTimeDisplay(true);
+        h->GetXaxis()->SetTimeFormat("%Mh%S'%F1995-01-01 00:00:00 GMT");
+	h->GetXaxis()->SetLabelSize(0.025);
+	h->GetYaxis()->SetLabelSize(0.025);
+        h->GetYaxis()->SetTitleOffset(1.2);
+	//        h.GetYaxis()->SetTitleSize(1.2);
+        return h;
+    }
+#endif
+
+    pair<string,string> Split(const string &str) const
+    {
+        const size_t p = str.find_first_of('|');
+        if (p==string::npos)
+            return make_pair(str, "");
+
+        return make_pair(str.substr(0, p), str.substr(p+1));
+    }
+
+public:
+    FactGui(Configuration &conf) :
+        fFtuStatus(40), 
+        /*fPixelMapHW(1440),*/ fPatchMapHW(160), 
+        fInChoosePatchTH(false),
+        fInChooseBiasHv(false), fInChooseBiasCam(false),
+        fDimDNS("DIS_DNS/VERSION_NUMBER", 1, int(0), this),
+        //-
+        fDimLoggerStats        ("DATA_LOGGER/STATS",            (void*)NULL, 0, this),
+        fDimLoggerFilenameNight("DATA_LOGGER/FILENAME_NIGHTLY", (void*)NULL, 0, this),
+        fDimLoggerFilenameRun  ("DATA_LOGGER/FILENAME_RUN",     (void*)NULL, 0, this),
+        fDimLoggerNumSubs      ("DATA_LOGGER/NUM_SUBS",         (void*)NULL, 0, this),
+        //-
+        fDimFtmPassport        ("FTM_CONTROL/PASSPORT",         (void*)NULL, 0, this),
+        fDimFtmTriggerRates    ("FTM_CONTROL/TRIGGER_RATES",    (void*)NULL, 0, this),
+        fDimFtmError           ("FTM_CONTROL/ERROR",            (void*)NULL, 0, this),
+        fDimFtmFtuList         ("FTM_CONTROL/FTU_LIST",         (void*)NULL, 0, this),
+        fDimFtmStaticData      ("FTM_CONTROL/STATIC_DATA",      (void*)NULL, 0, this),
+        fDimFtmDynamicData     ("FTM_CONTROL/DYNAMIC_DATA",     (void*)NULL, 0, this),
+        fDimFtmCounter         ("FTM_CONTROL/COUNTER",          (void*)NULL, 0, this),
+        //-
+        fDimFadWriteStats      ("FAD_CONTROL/STATS",              (void*)NULL, 0, this),
+        fDimFadStartRun        ("FAD_CONTROL/START_RUN",          (void*)NULL, 0, this),
+        fDimFadRuns            ("FAD_CONTROL/RUNS",               (void*)NULL, 0, this),
+        fDimFadEvents          ("FAD_CONTROL/EVENTS",             (void*)NULL, 0, this),
+        fDimFadRawData         ("FAD_CONTROL/RAW_DATA",           (void*)NULL, 0, this),
+        fDimFadEventData       ("FAD_CONTROL/EVENT_DATA",         (void*)NULL, 0, this),
+        fDimFadConnections     ("FAD_CONTROL/CONNECTIONS",        (void*)NULL, 0, this),
+        fDimFadFwVersion       ("FAD_CONTROL/FIRMWARE_VERSION",   (void*)NULL, 0, this),
+        fDimFadRunNumber       ("FAD_CONTROL/RUN_NUMBER",         (void*)NULL, 0, this),
+        fDimFadDNA             ("FAD_CONTROL/DNA",                (void*)NULL, 0, this),
+        fDimFadTemperature     ("FAD_CONTROL/TEMPERATURE",        (void*)NULL, 0, this),
+        fDimFadPrescaler       ("FAD_CONTROL/PRESCALER",          (void*)NULL, 0, this),
+        fDimFadRefClock        ("FAD_CONTROL/REFERENCE_CLOCK",    (void*)NULL, 0, this),
+        fDimFadRoi             ("FAD_CONTROL/REGION_OF_INTEREST", (void*)NULL, 0, this),
+        fDimFadDac             ("FAD_CONTROL/DAC",                (void*)NULL, 0, this),
+        fDimFadDrsCalibration  ("FAD_CONTROL/DRS_CALIBRATION",    (void*)NULL, 0, this),
+        fDimFadStatus          ("FAD_CONTROL/STATUS",             (void*)NULL, 0, this),
+        fDimFadStatistics1     ("FAD_CONTROL/STATISTICS1",        (void*)NULL, 0, this),
+        //fDimFadStatistics2     ("FAD_CONTROL/STATISTICS2",        (void*)NULL, 0, this),
+        fDimFadFileFormat      ("FAD_CONTROL/FILE_FORMAT",        (void*)NULL, 0, this),
+        //-
+        fDimFscTemp            ("FSC_CONTROL/TEMPERATURE",        (void*)NULL, 0, this),
+        fDimFscVolt            ("FSC_CONTROL/VOLTAGE",            (void*)NULL, 0, this),
+        fDimFscCurrent         ("FSC_CONTROL/CURRENT",            (void*)NULL, 0, this),
+        fDimFscHumidity        ("FSC_CONTROL/HUMIDITY",           (void*)NULL, 0, this),
+        //-
+        fDimFeedbackCalibrated ("FEEDBACK/CALIBRATED_CURRENTS",   (void*)NULL, 0, this),
+        //-
+        fDimBiasNominal        ("BIAS_CONTROL/NOMINAL",           (void*)NULL, 0, this),
+        fDimBiasVolt           ("BIAS_CONTROL/VOLTAGE",           (void*)NULL, 0, this),
+        fDimBiasDac            ("BIAS_CONTROL/DAC",               (void*)NULL, 0, this),
+        fDimBiasCurrent        ("BIAS_CONTROL/CURRENT",           (void*)NULL, 0, this),
+        //-
+        fDimRateScan           ("RATE_SCAN/DATA",                 (void*)NULL, 0, this),
+        //-
+        fDimMagicWeather       ("MAGIC_WEATHER/DATA",             (void*)NULL, 0, this),
+        //-
+        fDimVersion(0),
+        fFreeSpaceLogger(UINT64_MAX), fFreeSpaceData(UINT64_MAX),
+        fEventData(0),
+        fDrsCalibration(1440*1024*6+160*1024*2),
+        fTimeStamp0(0)
+    {
+        fClockCondFreq->addItem("--- Hz",  QVariant(-1));
+        fClockCondFreq->addItem("800 MHz", QVariant(800));
+        fClockCondFreq->addItem("1 GHz",   QVariant(1000));
+        fClockCondFreq->addItem("2 GHz",   QVariant(2000));
+        fClockCondFreq->addItem("3 GHz",   QVariant(3000));
+        fClockCondFreq->addItem("4 GHz",   QVariant(4000));
+        fClockCondFreq->addItem("5 GHz",   QVariant(5000));
+
+        cout << "-- run counter ---" << endl;
+        fMcpNumEvents->addItem("unlimited", QVariant(0));
+        const vector<uint32_t> runcount = conf.Vec<uint32_t>("run-count");
+        for (vector<uint32_t>::const_iterator it=runcount.begin(); it!=runcount.end(); it++)
+        {
+            cout << *it << endl;
+            ostringstream str;
+            str << *it;
+            fMcpNumEvents->addItem(str.str().c_str(), QVariant(*it));
+        }
+
+        cout << "-- run times ---" << endl;
+        fMcpTime->addItem("unlimited", QVariant(0));
+        const vector<string> runtime = conf.Vec<string>("run-time");
+        for (vector<string>::const_iterator it=runtime.begin(); it!=runtime.end(); it++)
+        {
+            const pair<string,string> p = Split(*it);
+            cout << *it << "|" << p.second << "|" << p.first << "|" << endl;
+            fMcpTime->addItem(p.second.c_str(), QVariant(stoi(p.first)));
+        }
+
+        cout << "-- run types ---" << endl;
+        const vector<string> runtype = conf.Vec<string>("run-type");
+        for (vector<string>::const_iterator it=runtype.begin(); it!=runtype.end(); it++)
+        {
+            const pair<string,string> p = Split(*it);
+            cout << *it << "|" << p.second << "|" << p.first << "|" << endl;
+            fMcpRunType->addItem(p.second.c_str(), QVariant(p.first.c_str()));
+        }
+
+        fTriggerWidget->setEnabled(false);
+        fFtuWidget->setEnabled(false);
+        fFtuGroupEnable->setEnabled(false);
+        fRatesControls->setEnabled(false);
+        fFadWidget->setEnabled(false);
+        fGroupEthernet->setEnabled(false);
+        fGroupOutput->setEnabled(false);
+        fLoggerWidget->setEnabled(false);
+        fBiasWidget->setEnabled(false);
+        fAuxWidget->setEnabled(false);
+
+        fChatSend->setEnabled(false);
+        fChatMessage->setEnabled(false);
+
+        DimClient::sendCommand("CHAT/MSG", "GUI online.");
+        // + MessageDimRX
+
+        // --------------------------------------------------------------------------
+
+        if (!fPixelMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            cerr << "ERROR - Problems reading " << conf.Get<string>("pixel-map-file") << endl;
+            exit(-1);
+        }
+
+        // --------------------------------------------------------------------------
+
+        ifstream fin3("PatchList.txt");
+
+        string buf;
+
+        int l = 0;
+        while (getline(fin3, buf, '\n'))
+        {
+            buf = Tools::Trim(buf);
+            if (buf[0]=='#')
+                continue;
+
+            unsigned int softid, hardid;
+
+            stringstream str(buf);
+
+            str >> softid;
+            str >> hardid;
+
+            if (softid>=fPatchMapHW.size())
+                continue;
+
+            fPatchMapHW[softid] = hardid-1;
+
+            l++;
+        }
+
+        if (l!=160)
+            cerr << "WARNING - Problems reading PatchList.txt" << endl;
+
+        // --------------------------------------------------------------------------
+
+        fCommentsWidget->setEnabled(false);
+
+        static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+
+        const string database = conf.Get<string>("CommentDB");
+
+        if (!database.empty())
+        {
+            boost::smatch what;
+            if (!boost::regex_match(database, what, expr, boost::match_extra))
+                throw runtime_error("Couldn't parse '"+database+"'.");
+
+            if (what.size()!=10)
+                throw runtime_error("Error parsing '"+database+"'.");
+
+            const string user   = what[2];
+            const string passwd = what[4];
+            const string server = what[5];
+            const string db     = what[9];
+            const int port      = atoi(string(what[7]).c_str());
+
+            QSqlDatabase qdb = QSqlDatabase::addDatabase("QMYSQL");
+            qdb.setHostName(server.c_str());
+            qdb.setDatabaseName(db.c_str());
+            qdb.setUserName(user.c_str());
+            qdb.setPassword(passwd.c_str());
+            qdb.setPort(port);
+            qdb.setConnectOptions("CLIENT_SSL=1;MYSQL_OPT_RECONNECT=1");
+            if (qdb.open())
+            {
+                QSqlTableModel *model = new QSqlTableModel(fTableComments, qdb);
+                model->setTable("runcomments");
+                model->setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+                const bool ok2 = model->select();
+
+                if (ok2)
+                {
+                    fTableComments->setModel(model);
+                    fTableComments->resizeColumnsToContents();
+                    fTableComments->resizeRowsToContents();
+
+                    connect(fCommentSubmit, SIGNAL(clicked()), model, SLOT(submitAll()));
+                    connect(fCommentRevert, SIGNAL(clicked()), model, SLOT(revertAll()));
+                    connect(fCommentUpdateLayout, SIGNAL(clicked()), fTableComments, SLOT(resizeColumnsToContents()));
+                    connect(fCommentUpdateLayout, SIGNAL(clicked()), fTableComments, SLOT(resizeRowsToContents()));
+
+                    fCommentsWidget->setEnabled(true);
+                }
+                else
+                    cout << "\n==> ERROR: Select on table failed.\n" << endl;
+            }
+            else
+                cout << "\n==> ERROR: Connection to database failed:\n           "
+                    << qdb.lastError().text().toStdString() << endl << endl;
+        }
+
+        // --------------------------------------------------------------------------
+#ifdef HAVE_ROOT
+
+        fGraphFeedbackDev.SetLineColor(kBlue);
+        fGraphFeedbackDev.SetMarkerColor(kBlue);
+        fGraphFeedbackDev.SetMarkerStyle(kFullDotMedium);
+
+        fGraphFeedbackCmd.SetLineColor(kBlue);
+        fGraphFeedbackCmd.SetMarkerColor(kBlue);
+        fGraphFeedbackCmd.SetMarkerStyle(kFullDotMedium);
+
+        // Evolution of control deviation
+        // Evolution of command values (bias voltage change)
+        fGraphFeedbackDev.SetName("ControlDev");
+        fGraphFeedbackCmd.SetName("CommandVal");
+
+        TCanvas *c = fFeedbackDev->GetCanvas();
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+	TH1 *hf = DrawTimeFrame("Overvoltage [V]   ");
+        hf->GetXaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetTitleSize(0.08);
+        hf->GetYaxis()->SetTitleOffset(0.55);
+        hf->GetXaxis()->SetTitle("");
+        hf->GetYaxis()->SetRangeUser(0, 1.5);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFeedbackDev, "LP");
+
+        c = fFeedbackCmd->GetCanvas();
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+        hf = DrawTimeFrame("Command temp delta [V]   ");
+        hf->GetXaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetTitleSize(0.08);
+        hf->GetYaxis()->SetTitleOffset(0.55);
+        hf->GetXaxis()->SetTitle("");
+        hf->GetYaxis()->SetRangeUser(-2, 2);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFeedbackCmd, "LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fRateScanCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+        TH1F *h=new TH1F("Frame", "", 1, 0, 1);
+        h->SetDirectory(0);
+        h->SetBit(kCanDelete);
+        h->SetStats(kFALSE);
+        h->SetXTitle("Threshold [DAC]");
+        h->SetYTitle("Rate [Hz]");
+        h->GetXaxis()->CenterTitle();
+	h->GetYaxis()->CenterTitle();
+	h->GetXaxis()->SetLabelSize(0.025);
+	h->GetYaxis()->SetLabelSize(0.025);
+        h->GetYaxis()->SetTitleOffset(1.2);
+        c->GetListOfPrimitives()->Add(h, "");
+
+        fGraphRateScan[0].SetName("CameraRate");
+        for (int i=0; i<40; i++)
+        {
+            fGraphRateScan[i+1].SetName("BoardRate");
+            fGraphRateScan[i+1].SetMarkerStyle(kFullDotMedium);
+        }
+        for (int i=0; i<160; i++)
+        {
+            fGraphRateScan[i+41].SetName("PatchRate");
+            fGraphRateScan[i+41].SetMarkerStyle(kFullDotMedium);
+        }
+
+        fGraphRateScan[0].SetLineColor(kBlue);
+        fGraphRateScan[0].SetMarkerColor(kBlue);
+        fGraphRateScan[0].SetMarkerStyle(kFullDotSmall);
+        c->GetListOfPrimitives()->Add(&fGraphRateScan[0], "LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fFtmRateCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+	hf = DrawTimeFrame("Trigger rate [Hz]");
+        hf->GetYaxis()->SetRangeUser(0, 1010);
+
+        for (int i=0; i<160; i++)
+        {
+            fGraphPatchRate[i].SetName("PatchRate");
+            //fGraphPatchRate[i].SetLineColor(kBlue);
+            //fGraphPatchRate[i].SetMarkerColor(kBlue);
+            fGraphPatchRate[i].SetMarkerStyle(kFullDotMedium);
+        }
+        for (int i=0; i<40; i++)
+        {
+            fGraphBoardRate[i].SetName("BoardRate");
+            //fGraphBoardRate[i].SetLineColor(kBlue);
+            //fGraphBoardRate[i].SetMarkerColor(kBlue);
+            fGraphBoardRate[i].SetMarkerStyle(kFullDotMedium);
+        }
+
+        fGraphFtmRate.SetLineColor(kBlue);
+        fGraphFtmRate.SetMarkerColor(kBlue);
+        fGraphFtmRate.SetMarkerStyle(kFullDotSmall);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFtmRate, "LP");
+
+        /*
+        TCanvas *c = fFtmTempCanv->GetCanvas();
+        c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->cd();
+        */
+        //CreateTimeFrame("Temperature / �C");
+
+        fGraphFtmTemp[0].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[1].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[2].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[3].SetMarkerStyle(kFullDotSmall);
+
+        fGraphFtmTemp[1].SetLineColor(kBlue);
+        fGraphFtmTemp[2].SetLineColor(kRed);
+        fGraphFtmTemp[3].SetLineColor(kGreen);
+
+        fGraphFtmTemp[1].SetMarkerColor(kBlue);
+        fGraphFtmTemp[2].SetMarkerColor(kRed);
+        fGraphFtmTemp[3].SetMarkerColor(kGreen);
+
+        //fGraphFtmTemp[0].Draw("LP");
+        //fGraphFtmTemp[1].Draw("LP");
+        //fGraphFtmTemp[2].Draw("LP");
+        //fGraphFtmTemp[3].Draw("LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fAdcDataCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.10);
+        c->SetGrid();
+        //c->cd();
+#endif
+
+        // --------------------------------------------------------------------------
+        fFeedbackDevCam->assignPixelMap(fPixelMap);
+        fFeedbackDevCam->setAutoscaleLowerLimit((fFeedbackDevMin->minimum()+0.5*fFeedbackDevMin->singleStep()));
+        fFeedbackDevCam->SetMin(fFeedbackDevMin->value());
+        fFeedbackDevCam->SetMax(fFeedbackDevMax->value());
+        fFeedbackDevCam->updateCamera();
+
+        fFeedbackCmdCam->assignPixelMap(fPixelMap);
+        fFeedbackCmdCam->setAutoscaleLowerLimit((fFeedbackCmdMin->minimum()+0.5*fFeedbackCmdMin->singleStep()));
+        fFeedbackCmdCam->SetMin(fFeedbackCmdMin->value());
+        fFeedbackCmdCam->SetMax(fFeedbackCmdMax->value());
+        fFeedbackCmdCam->updateCamera();
+
+        // --------------------------------------------------------------------------
+
+        fBiasCamV->assignPixelMap(fPixelMap);
+        fBiasCamV->setAutoscaleLowerLimit((fBiasVoltMin->minimum()+0.5*fBiasVoltMin->singleStep()));
+        fBiasCamV->SetMin(fBiasVoltMin->value());
+        fBiasCamV->SetMax(fBiasVoltMax->value());
+        fBiasCamV->updateCamera();
+
+        fBiasCamA->assignPixelMap(fPixelMap);
+        fBiasCamA->setAutoscaleLowerLimit((fBiasCurrentMin->minimum()+0.5*fBiasCurrentMin->singleStep()));
+        fBiasCamA->SetMin(fBiasCurrentMin->value());
+        fBiasCamA->SetMax(fBiasCurrentMax->value());
+        fBiasCamA->updateCamera();
+
+        // --------------------------------------------------------------------------
+
+        fRatesCanv->assignPixelMap(fPixelMap);
+        fRatesCanv->setAutoscaleLowerLimit((fRatesMin->minimum()+0.5*fRatesMin->singleStep())*0.001);
+        fRatesCanv->SetMin(fRatesMin->value());
+        fRatesCanv->SetMax(fRatesMax->value());
+        fRatesCanv->updateCamera();
+        on_fPixelIdx_valueChanged(0);
+
+        // --------------------------------------------------------------------------
+
+        fRatesCanv->setTitle("Patch rates");
+        fRatesCanv->setUnits("Hz");
+
+        fBiasCamA->setTitle("BIAS current");
+        fBiasCamA->setUnits("uA");
+
+        fBiasCamV->setTitle("Applied BIAS voltage");
+        fBiasCamV->setUnits("V");
+
+        fEventCanv1->setTitle("Average (all slices)");
+        fEventCanv2->setTitle("RMS (all slices)");
+        fEventCanv3->setTitle("Maximum (all slices)");
+        fEventCanv4->setTitle("Position of maximum (all slices)");
+
+        fEventCanv1->setUnits("mV");
+        fEventCanv2->setUnits("mV");
+        fEventCanv3->setUnits("mV");
+        fEventCanv4->setUnits("slice");
+
+        // --------------------------------------------------------------------------
+
+        fFeedbackDevCam->setTitle("Control deviation (Pulser amplitude voltage)");
+        fFeedbackCmdCam->setTitle("Applied voltage change (BIAS voltage)");
+
+        fFeedbackDevCam->setUnits("mV");
+        fFeedbackCmdCam->setUnits("mV");
+
+        // --------------------------------------------------------------------------
+
+        QTimer::singleShot(1000, this, SLOT(slot_RootUpdate()));
+
+        //widget->setMouseTracking(true);
+        //widget->EnableSignalEvents(kMouseMoveEvent);
+
+        fFtmRateCanv->setMouseTracking(true);
+        fFtmRateCanv->EnableSignalEvents(kMouseMoveEvent);
+
+        fAdcDataCanv->setMouseTracking(true);
+        fAdcDataCanv->EnableSignalEvents(kMouseMoveEvent);
+
+        fRatesCanv->setMouseTracking(true);
+        fEventCanv1->setMouseTracking(true);
+        fEventCanv2->setMouseTracking(true);
+        fEventCanv3->setMouseTracking(true);
+        fEventCanv4->setMouseTracking(true);
+
+        fBiasCamV->setMouseTracking(true);
+        fBiasCamA->setMouseTracking(true);
+
+        fFeedbackDevCam->setMouseTracking(true);
+        fFeedbackCmdCam->setMouseTracking(true);
+
+        fEventCanv1->ShowPixelCursor(true);
+        fEventCanv2->ShowPixelCursor(true);
+        fEventCanv3->ShowPixelCursor(true);
+        fEventCanv4->ShowPixelCursor(true);
+
+        fEventCanv1->ShowPatchCursor(true);
+        fEventCanv2->ShowPatchCursor(true);
+        fEventCanv3->ShowPatchCursor(true);
+        fEventCanv4->ShowPatchCursor(true);
+
+        fFeedbackDevCam->ShowPixelCursor(true);
+        fFeedbackCmdCam->ShowPixelCursor(true);
+
+        fFeedbackDevCam->ShowPatchCursor(true);
+        fFeedbackCmdCam->ShowPatchCursor(true);
+
+        connect(fRatesCanv, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv1, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv2, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv3, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv4, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fBiasCamV, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fBiasCamA, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fFeedbackDevCam, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fFeedbackCmdCam, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fRatesCanv, SIGNAL(signalPixelDoubleClick(int)),
+                this, SLOT(slot_CameraDoubleClick(int)));
+        connect(fRatesCanv, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChoosePixelThreshold(int)));
+        connect(fBiasCamV, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChooseBiasChannel(int)));
+        connect(fBiasCamA, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChooseBiasChannel(int)));
+
+        connect(fFtmRateCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
+                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
+        connect(fAdcDataCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
+                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
+    }
+
+    ~FactGui()
+    {
+        // Unsubscribe all services
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            delete i->second;
+
+        // This is allocated as a chuck of chars
+        delete [] reinterpret_cast<char*>(fEventData);
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/HtmlDelegate.cc
===================================================================
--- branches/FACT++_part_filenames/gui/HtmlDelegate.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/HtmlDelegate.cc	(revision 18732)
@@ -0,0 +1,36 @@
+// **************************************************************************
+/** @class HtmlDelegate
+
+@brief A Qt-Delegate to display HTML text (QTextDocument) in a list
+
+*/
+// **************************************************************************
+#include "HtmlDelegate.h"
+
+#include <QPainter>
+#include <QTextDocument>
+
+void HtmlDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setPageSize(option.rect.size());
+    doc.setHtml(index.data().toString());
+
+    // === This can be used if a scrolling is needed ===
+    // painter->save();
+    // painter->translate(option.rect.topLeft());
+    // QRect r(QPoint(0, 0), option.rect.size());
+    // doc.drawContents(painter, r);
+    // painter->restore();
+    // drawFocus(painter, option, option.rect);
+
+    doc.drawContents(painter, option.rect);
+}
+
+QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setPageSize(option.rect.size());
+    doc.setHtml(index.data().toString());
+    return doc.size().toSize();
+}
Index: branches/FACT++_part_filenames/gui/HtmlDelegate.h
===================================================================
--- branches/FACT++_part_filenames/gui/HtmlDelegate.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/HtmlDelegate.h	(revision 18732)
@@ -0,0 +1,21 @@
+#ifndef FACT_HtmlDelegate
+#define FACT_HtmlDelegate
+
+#include <QStyledItemDelegate>
+
+class HtmlDelegate : public QStyledItemDelegate
+{
+public:
+    HtmlDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    QSize sizeHint(const QStyleOptionViewItem &option,
+                   const QModelIndex &index) const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/MainWindow.cc
===================================================================
--- branches/FACT++_part_filenames/gui/MainWindow.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/MainWindow.cc	(revision 18732)
@@ -0,0 +1,763 @@
+#include "MainWindow.h"
+
+#include <iostream>
+#include <sstream>
+
+#include <QTimer>
+
+#include "src/Dim.h"
+
+#include "DockWindow.h"
+#include "HtmlDelegate.h"
+#include "CheckBoxDelegate.h"
+
+using namespace std;
+
+void MainWindow::MakeLEDs(QPushButton **arr, QGridLayout *lay, const char *slot) const
+{
+    arr[0]->setToolTip("Crate 0, Board 0, Index 0");
+
+    for (int i=1; i<40; i++)
+    {
+        QPushButton *b = new QPushButton(static_cast<QWidget*>(arr[0]->parent()));
+
+        b->setEnabled(arr[0]->isEnabled());
+        b->setSizePolicy(arr[0]->sizePolicy());
+        b->setMaximumSize(arr[0]->maximumSize());
+        b->setIcon(arr[0]->icon());
+        b->setIconSize(arr[0]->iconSize());
+        b->setCheckable(arr[0]->isCheckable());
+        b->setFlat(arr[0]->isFlat());
+
+        ostringstream str;
+        str << "Crate " << i/10 << ", Board " << i%10 << ", Index " << i;
+        b->setToolTip(str.str().c_str());
+
+        lay->addWidget(b, i/10+1, i%10+1, 1, 1);
+
+        arr[i] = b;
+    }
+
+    const QString name = arr[0]->objectName();
+
+    for (int i=0; i<40; i++)
+    {
+        arr[i]->setObjectName(name+QString::number(i));
+        QObject::connect(arr[i], SIGNAL(clicked()), this, slot);
+    }
+}
+
+MainWindow::MainWindow(QWidget *p) : QMainWindow(p)
+{
+    // setupUi MUST be called before the DimNetwork is initilized
+    // In this way it can be ensured that nothing from the
+    // DimNetwork arrives before all graphical elements are
+    // initialized. This is a simple but very powerfull trick.
+    setupUi(this);
+
+    // Now here we can do further setup which should be done
+    // before the gui is finally displayed.
+    fDimCmdServers->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdCommands->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdDescription->setItemDelegate(new HtmlDelegate);
+
+    fDimSvcServers->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcServices->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcDescription->setItemDelegate(new HtmlDelegate);
+
+    // Set a default string to be displayed in a the status bar at startup
+    fStatusBar->showMessage(PACKAGE_STRING "   |   " PACKAGE_URL "   |   report bugs to <" PACKAGE_BUGREPORT ">");
+
+    // Initialize the 40 FTU Leds as a copy of the prototype LED
+    fFtuLED[0] = fFtuLEDPrototype;
+    MakeLEDs(fFtuLED, fFtuLedLayout, SLOT(slot_fFtuLED_clicked()));
+
+    // Initialize the 40 FAD Leds as a copy of the prototype LED
+    fFadLED[0] = fFadLEDPrototype;
+    MakeLEDs(fFadLED, fFadLedLayout, SLOT(slot_fFadLED_clicked()));
+
+    // Initialize a timer to update the displayed UTC time
+    QTimer *timer = new QTimer(this);
+    connect(timer, SIGNAL(timeout()), this, SLOT(slot_TimeUpdate()));
+    timer->start(100);
+}
+
+void MainWindow::slot_TimeUpdate()
+{
+    // Used toUTC to support also older Qt versions
+    // toTime_t() always returns the datetime converted to UTC
+    // dateTime() unfortunately returns our UTC always as LocalTime
+    QDateTime now = QDateTime::currentDateTime().toUTC();
+    now.setTimeSpec(Qt::LocalTime);
+
+    if (now.toTime_t()==fUTC->dateTime().toTime_t())
+        return;
+
+    fUTC->setDateTime(now);
+}
+
+
+void MainWindow::SelectTab(const QString &name)
+{
+    for (int i=0; i<fTabWidget->count(); i++)
+        if (fTabWidget->tabText(i)==name)
+        {
+            fTabWidget->setCurrentIndex(i);
+            break;
+        }
+}
+
+void MainWindow::on_fCommentInsertRow_clicked()
+{
+    if (fTableComments->model())
+        fTableComments->model()->insertRow(fTableComments->model()->rowCount());
+}
+
+void MainWindow::on_fNoutof4Val_valueChanged(int val)
+{
+    const int32_t v[2] = { -1, val };
+
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_N_OUT_OF_4", v);
+}
+
+void MainWindow::on_fRatesMin_valueChanged(int min)
+{
+    fRatesCanv->SetMin(min);
+}
+
+void MainWindow::on_fRatesMax_valueChanged(int max)
+{
+    fRatesCanv->SetMax(max);
+}
+
+void MainWindow::on_fShutdown_clicked()
+{
+    Dim::SendCommand("DIS_DNS/KILL_SERVERS", int(1));
+}
+
+void MainWindow::on_fShutdownAll_clicked()
+{
+    Dim::SendCommand("DIS_DNS/KILL_SERVERS", int(1));
+    Dim::SendCommand("DIS_DNS/EXIT", int(1));
+}
+
+void MainWindow::on_fTabWidget_tabCloseRequested(int which)
+{
+    // To get the correct size we have to switch to this tab
+    // An alternative would be to take the size of the current tab
+    fTabWidget->setCurrentIndex(which);
+
+    QWidget *w = fTabWidget->currentWidget(); //fTabWidget->widget(which);
+    if (!w)
+    {
+        cout << "Weird... the tab requested to be closed doesn't exist!" << endl;
+        return;
+    }
+
+    QDockWidget *d = w->findChild<QDockWidget*>();
+    if (!d)
+    {
+        cout << "Sorry, tab requested to be closed contains no QDockWidget!" << endl;
+        return;
+    }
+
+    new DockWindow(d, fTabWidget->tabText(which));
+    fTabWidget->removeTab(which);
+
+    if (fTabWidget->count()==1)
+        fTabWidget->setTabsClosable(false);
+}
+
+void MainWindow::on_fMcpStartRun_clicked()
+{
+    struct Value
+    {
+        uint64_t time;
+        uint64_t nevts;
+        char type[];
+    };
+
+    const int idx1 = fMcpRunType->currentIndex();
+    const int idx2 = fMcpTime->currentIndex();
+    const int idx3 = fMcpNumEvents->currentIndex();
+
+    const int64_t v2 = fMcpTime->itemData(idx2).toInt();
+    const int64_t v3 = fMcpNumEvents->itemData(idx3).toInt();
+
+    const QString rt = fMcpRunType->itemData(idx1).toString();
+
+    const size_t len = sizeof(Value)+rt.length()+1;
+
+    char *buf = new char[len];
+
+    Value *val = reinterpret_cast<Value*>(buf);
+
+    val->time  = v2;
+    val->nevts = v3;
+
+    strcpy(val->type, rt.toStdString().c_str());
+
+    Dim::SendCommand("MCP/START", buf, len);
+
+    delete [] buf;
+
+}
+void MainWindow::on_fMcpStopRun_clicked()
+{
+   Dim::SendCommand("MCP/STOP");
+}
+
+void MainWindow::on_fMcpReset_clicked()
+{
+   Dim::SendCommand("MCP/RESET");
+}
+
+void MainWindow::on_fLoggerStart_clicked()
+{
+    Dim::SendCommand("DATA_LOGGER/START_RUN_LOGGING");
+}
+
+void MainWindow::on_fLoggerStop_clicked()
+{
+    Dim::SendCommand("DATA_LOGGER/STOP_RUN_LOGGING");
+}
+
+void MainWindow::on_fFtmStartRun_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/START_TRIGGER");
+}
+
+void MainWindow::on_fFtmStopRun_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/STOP_TRIGGER");
+}
+
+/*
+void MainWindow::on_fFadStartRun_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START_RUN");
+}
+
+void MainWindow::on_fFadStopRun_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/STOP_RUN");
+}
+*/
+
+void MainWindow::on_fFadDrsOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DRS", uint8_t(true));
+}
+
+void MainWindow::on_fFadDrsOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DRS", uint8_t(false));
+}
+
+void MainWindow::on_fFadDwriteOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DWRITE", uint8_t(true));
+}
+
+void MainWindow::on_fFadDwriteOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DWRITE", uint8_t(false));
+}
+
+void MainWindow::on_fFadSingleTrigger_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/SEND_SINGLE_TRIGGER");
+}
+
+void MainWindow::on_fFadTriggerLineOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", uint8_t(true));
+}
+
+void MainWindow::on_fFadTriggerLineOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", uint8_t(false));
+}
+
+void MainWindow::on_fFadContTriggerOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", uint8_t(true));
+}
+
+void MainWindow::on_fFadContTriggerOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", uint8_t(false));
+}
+
+void MainWindow::on_fFadBusyOnOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_ON", uint8_t(true));
+}
+
+void MainWindow::on_fFadBusyOnOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_ON", uint8_t(false));
+}
+
+void MainWindow::on_fFadBusyOffOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_OFF", uint8_t(true));
+}
+
+void MainWindow::on_fFadBusyOffOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_OFF", uint8_t(false));
+}
+
+void MainWindow::on_fFadSocket0_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_COMMAND_SOCKET_MODE", uint8_t(true));
+}
+
+void MainWindow::on_fFadSocket17_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_COMMAND_SOCKET_MODE", uint8_t(false));
+}
+
+void MainWindow::on_fFadResetTriggerId_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/RESET_EVENT_COUNTER");
+}
+
+void MainWindow::FadSetFileFormat(uint16_t fmt)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_FILE_FORMAT", fmt);
+}
+
+void MainWindow::on_fFadStart_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START");
+}
+
+void MainWindow::on_fFadStop_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/STOP");
+}
+
+void MainWindow::on_fFadAbort_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ABORT");
+}
+
+void MainWindow::on_fFadSoftReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/SOFT_RESET");
+}
+
+void MainWindow::on_fFadHardReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/HARD_RESET");
+}
+
+void MainWindow::slot_fFadLED_clicked()
+{
+    for (int32_t i=0; i<40; i++)
+        if (sender()==fFadLED[i])
+        {
+            Dim::SendCommand("FAD_CONTROL/TOGGLE", i);
+            break;
+        }
+}
+
+void MainWindow::on_fFadPrescalerCmd_valueChanged(int val)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_TRIGGER_RATE", uint32_t(val));
+}
+
+void MainWindow::on_fFadRunNumberCmd_valueChanged(int val)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_RUN_NUMBER", uint64_t(val));
+}
+
+void MainWindow::on_fFadRoiCmd_valueChanged(int)
+{
+    const int32_t vals1[2] = { -1, fFadRoiCmd->value() };
+    Dim::SendCommand("FAD_CONTROL/SET_REGION_OF_INTEREST", vals1);
+
+    for (int ch=8; ch<36; ch+=9)
+    {
+        const int32_t vals2[2] = { ch,  fFadRoiCh9Cmd->value() };
+        Dim::SendCommand("FAD_CONTROL/SET_REGION_OF_INTEREST", vals2);
+    }
+}
+
+void MainWindow::FadDacCmd_valueChanged(uint16_t val, uint16_t idx)
+{
+    const uint32_t cmd[2] = { idx, val };
+    Dim::SendCommand("FAD_CONTROL/SET_DAC_VALUE", cmd);
+}
+
+void MainWindow::on_fDrsCalibStart_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START_DRS_CALIBRATION");
+}
+
+void MainWindow::on_fDrsCalibReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+}
+
+void MainWindow::SetTriggerSequence()
+{
+    const uint16_t d[3] =
+    {
+        uint16_t(fTriggerSeqPed->value()),
+        uint16_t(fTriggerSeqLPext->value()),
+        uint16_t(fTriggerSeqLPint->value())
+    };
+
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_SEQUENCE", d);
+}
+
+/*
+void MainWindow::on_fEnableTrigger_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_TRIGGER", b);
+}
+
+void MainWindow::on_fEnableExt1_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_EXT1", b);
+}
+
+void MainWindow::on_fEnableExt2_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_EXT2", b);
+}
+
+void MainWindow::on_fEnableVeto_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_VETO", b);
+}
+*/
+void MainWindow::on_fPhysicsCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_MULTIPLICITY", v);
+}
+
+void MainWindow::on_fPhysicsWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_WINDOW", v/4-2);
+}
+
+void MainWindow::on_fCalibCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_MULTIPLICITY", v);
+}
+
+void MainWindow::on_fCalibWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_WINDOW", v/4-2);
+}
+
+void MainWindow::on_fTriggerInterval_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_INTERVAL", val);
+}
+
+void MainWindow::on_fTriggerDelay_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_DELAY", val/4-2);
+}
+
+void MainWindow::on_fTimeMarkerDelay_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TIME_MARKER_DELAY", val/4-2);
+}
+
+void MainWindow::on_fDeadTime_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_DEAD_TIME", val/4-2);
+}
+
+void MainWindow::on_fPrescalingVal_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_PRESCALING", val);
+}
+
+void MainWindow::on_fPixelEnableAll_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_PIXEL", int16_t(-1));
+}
+
+void MainWindow::on_fPixelDisableAll_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/DISABLE_PIXEL", int16_t(-1));
+}
+
+void MainWindow::on_fEnableTrigger_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_TRIGGER", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableExt1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_EXT1", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableExt2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_EXT2", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableClockCond_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_CLOCK_CONDITIONER", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableVeto_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_VETO", b==Qt::Checked);
+}
+
+void MainWindow::on_fClockCondFreq_activated(int idx)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CLOCK_FREQUENCY", fClockCondFreq->itemData(idx).toInt());
+}
+
+void MainWindow::slot_fFtuLED_clicked()
+{
+    for (int32_t i=0; i<40; i++)
+        if (sender()==fFtuLED[i])
+        {
+            Dim::SendCommand("FTM_CONTROL/TOGGLE_FTU", i);
+            break;
+        }
+}
+
+void MainWindow::on_fFtuPing_toggled(bool checked)
+{
+    if (checked)
+        Dim::SendCommand("FTM_CONTROL/PING");
+}
+
+void MainWindow::on_fFtuAllOn_clicked()
+{
+    static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 1 };
+    Dim::SendCommand("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+}
+
+void MainWindow::on_fFtuAllOff_clicked()
+{
+    static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 0 };
+    Dim::SendCommand("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+}
+
+void MainWindow::on_fLpIntIntensity_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_INTENSITY_LPINT", uint16_t(val));
+}
+
+void MainWindow::on_fLpExtIntensity_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_INTENSITY_LPEXT", uint16_t(val));
+}
+
+void MainWindow::on_fLpIntGroup1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP1_LPINT", uint8_t(b));
+}
+
+void MainWindow::on_fLpExtGroup1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP1_LPEXT", uint8_t(b));
+}
+
+void MainWindow::on_fLpIntGroup2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP2_LPINT", uint8_t(b));
+}
+
+void MainWindow::on_fLpExtGroup2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP2_LPEXT", uint8_t(b));
+}
+
+void MainWindow::on_fFeedbackDevMin_valueChanged(int min)
+{
+    fFeedbackDevCam->SetMin(min);
+    fFeedbackDevCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackDevMax_valueChanged(int max)
+{
+    fFeedbackDevCam->SetMax(max);
+    fFeedbackDevCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackCmdMin_valueChanged(int min)
+{
+    fFeedbackCmdCam->SetMin(min);
+    fFeedbackCmdCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackCmdMax_valueChanged(int max)
+{
+    fFeedbackCmdCam->SetMax(max);
+    fFeedbackCmdCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackStart_clicked()
+{
+    Dim::SendCommand("FEEDBACK/START",
+                     (float)fFeedbackOvervoltage->value());
+}
+
+void MainWindow::on_fFeedbackStop_clicked()
+{
+    Dim::SendCommand("FEEDBACK/STOP");
+}
+
+void MainWindow::on_fFeedbackCalibrate_clicked()
+{
+    Dim::SendCommand("FEEDBACK/CALIBRATE");
+}
+
+void MainWindow::on_fBiasVoltDac_valueChanged(int val)
+{
+    fBiasVoltDacVolt->setValue(val*90./4096);
+}
+
+/*
+void MainWindow::on_fBiasRequestStatus_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/REQUEST_STATUS");
+}
+*/
+
+void MainWindow::on_fBiasSetToZero_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+}
+
+void MainWindow::on_fBiasReset_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/RESET_OVER_CURRENT_STATUS");
+}
+
+
+void MainWindow::on_fBiasApplyChVolt_clicked()       // SET_CHANNEL_VOLTAGE
+{
+    if (fInHandler)
+        return;
+
+    const struct Data { uint16_t ch; float val; } __attribute__((__packed__)) val = {
+        uint16_t(fBiasHvBoard->value()*32+fBiasHvChannel->value()),
+        float(fBiasVolt->value())
+    };
+
+    Dim::SendCommand("BIAS_CONTROL/SET_CHANNEL_VOLTAGE", &val, sizeof(Data));
+}
+
+void MainWindow::on_fBiasApplyChDac_clicked()
+{
+    if (fInHandler)
+        return;
+
+    const uint16_t val[2] =
+    {
+        uint16_t(fBiasHvBoard->value()*32+fBiasHvChannel->value()),
+        uint16_t(fBiasVoltDac->value())
+    };
+
+    Dim::SendCommand("BIAS_CONTROL/SET_CHANNEL_DAC", val);
+}
+
+void MainWindow::on_fBiasApplyGlobalVolt_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_GLOBAL_VOLTAGE", float(fBiasVolt->value()));
+}
+    
+void MainWindow::on_fBiasApplyGlobalDac_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_GLOBAL_DAC", uint16_t(fBiasVoltDac->value()));
+}
+
+void MainWindow::on_fBiasVoltMin_valueChanged(int min)
+{
+    fBiasCamV->SetMin(min);
+    fBiasCamV->updateCamera();
+}
+
+void MainWindow::on_fBiasVoltMax_valueChanged(int max)
+{
+    fBiasCamV->SetMax(max);
+    fBiasCamV->updateCamera();
+}
+
+void MainWindow::on_fBiasCurrentMin_valueChanged(int min)
+{
+    fBiasCamA->SetMin(min);
+    fBiasCamA->updateCamera();
+}
+
+void MainWindow::on_fBiasCurrentMax_valueChanged(int max)
+{
+    fBiasCamA->SetMax(max);
+    fBiasCamA->updateCamera();
+}
+
+void MainWindow::on_fChatSend_clicked()
+{
+    const string msg = fChatMessage->text().toStdString();
+    if (Dim::SendCommand("CHAT/MSG", msg.c_str(), msg.length()+1))
+        fChatMessage->clear();
+}
+
+void MainWindow::on_fStatusLoggerLed_clicked()
+{
+    SelectTab("Logger");
+}
+
+void MainWindow::on_fStatusChatLed_clicked()
+{
+    SelectTab("Chat");
+}
+
+void MainWindow::on_fStatusFTMLed_clicked()
+{
+    SelectTab("Trigger");
+}
+
+void MainWindow::on_fStatusFTULed_clicked()
+{
+    SelectTab("FTUs");
+}
+
+void MainWindow::on_fStatusFADLed_clicked()
+{
+    SelectTab("FAD");
+}
Index: branches/FACT++_part_filenames/gui/MainWindow.h
===================================================================
--- branches/FACT++_part_filenames/gui/MainWindow.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/MainWindow.h	(revision 18732)
@@ -0,0 +1,269 @@
+#ifndef FACT_MainWindow
+#define FACT_MainWindow
+
+#include "design.h"
+
+#include <QMainWindow>
+
+class TObject;
+class TCanvas;
+
+class MainWindow : public QMainWindow, protected Ui::MainWindow
+{
+    Q_OBJECT;
+
+    void MakeLEDs(QPushButton **arr, QGridLayout *lay, const char *slot) const;
+
+    void SelectTab(const QString &name);
+    void SetTriggerSequence();
+    void SetTriggerCoincidence();
+    void SetCalibCoincidence();
+
+protected:
+    QPushButton *fFtuLED[40];
+    QPushButton *fFadLED[40];
+
+    bool fInHandler;
+
+public:
+    MainWindow(QWidget *p=0);
+
+private slots:
+    // Helper
+    void on_fFtmStartRun_clicked();
+    void on_fFtmStopRun_clicked();
+
+    void on_fFadStart_clicked();
+    void on_fFadStop_clicked();
+    void on_fFadAbort_clicked();
+    void on_fFadSoftReset_clicked();
+    void on_fFadHardReset_clicked();
+
+    void on_fLoggerStart_clicked();
+    void on_fLoggerStop_clicked();
+
+    void on_fMcpStartRun_clicked();
+    void on_fMcpStopRun_clicked();
+    void on_fMcpReset_clicked();
+
+    // Comment Sql Table
+    void on_fCommentInsertRow_clicked();
+
+    // System status
+    void on_fShutdown_clicked();
+    void on_fShutdownAll_clicked();
+
+    // Status LEDs signals
+    void on_fStatusFTULed_clicked();
+    void on_fStatusFTMLed_clicked();
+    void on_fStatusFADLed_clicked();
+    void on_fStatusLoggerLed_clicked();
+    void on_fStatusChatLed_clicked();
+    //void on_fStatusFTMEnable_stateChanged(int state);
+
+    // Tab Widget
+    void on_fTabWidget_tabCloseRequested(int which);
+    virtual void on_fTabWidget_currentChanged(int) = 0;
+
+    // Tab: FAD
+    void slot_fFadLED_clicked();
+
+//    void on_fFadStartRun_clicked();
+//    void on_fFadStopRun_clicked();
+    void on_fFadDrsOn_clicked();
+    void on_fFadDrsOff_clicked();
+    void on_fFadDwriteOn_clicked();
+    void on_fFadDwriteOff_clicked();
+    void on_fFadSingleTrigger_clicked();
+    void on_fFadTriggerLineOn_clicked();
+    void on_fFadTriggerLineOff_clicked();
+    void on_fFadContTriggerOn_clicked();
+    void on_fFadContTriggerOff_clicked();
+    void on_fFadBusyOnOn_clicked();
+    void on_fFadBusyOnOff_clicked();
+    void on_fFadBusyOffOn_clicked();
+    void on_fFadBusyOffOff_clicked();
+    void on_fFadResetTriggerId_clicked();
+    void on_fFadSocket0_clicked();
+    void on_fFadSocket17_clicked();
+
+    void FadSetFileFormat(uint16_t fmt);
+
+    void on_fFadButtonFileFormatNone_clicked()  { FadSetFileFormat(0); }
+    void on_fFadButtonFileFormatDebug_clicked() { FadSetFileFormat(1); }
+    void on_fFadButtonFileFormatFits_clicked()  { FadSetFileFormat(2); }
+    void on_fFadButtonFileFormatRaw_clicked()   { FadSetFileFormat(3); }
+    void on_fFadButtonFileFormatZFits_clicked() { FadSetFileFormat(6); }
+
+    void on_fFadPrescalerCmd_valueChanged(int);
+    void on_fFadRunNumberCmd_valueChanged(int);
+    void on_fFadRoiCmd_valueChanged(int = 0);
+    void on_fFadRoiCh9Cmd_valueChanged(int) { on_fFadRoiCmd_valueChanged(); }
+
+    void FadDacCmd_valueChanged(uint16_t, uint16_t);
+
+    void on_fFadDac0Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 0); }
+    void on_fFadDac1Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 1); }
+    void on_fFadDac2Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 2); }
+    void on_fFadDac3Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 3); }
+    void on_fFadDac4Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 4); }
+    void on_fFadDac5Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 5); }
+    void on_fFadDac6Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 6); }
+    void on_fFadDac7Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 7); }
+
+    void on_fDrsCalibStart_clicked();
+    void on_fDrsCalibReset_clicked();
+
+    void on_fDrsCalibStart2_clicked() { on_fDrsCalibStart_clicked(); }
+    void on_fDrsCalibReset2_clicked() { on_fDrsCalibReset_clicked(); }
+
+    // Tab: Adc
+    virtual void DisplayEventData() = 0;
+    void on_fAdcCrate_valueChanged(int)   { DisplayEventData(); }
+    void on_fAdcBoard_valueChanged(int)   { DisplayEventData(); }
+    void on_fAdcChip_valueChanged(int)    { DisplayEventData(); }
+    void on_fAdcChannel_valueChanged(int) { DisplayEventData(); }
+
+    // Tab: FTM
+    void on_fEnableTrigger_stateChanged(int);
+    void on_fEnableExt1_stateChanged(int);
+    void on_fEnableExt2_stateChanged(int);
+    void on_fEnableClockCond_stateChanged(int);
+    void on_fEnableVeto_stateChanged(int);
+
+    void on_fTriggerSeqPed_valueChanged(int)   { SetTriggerSequence(); }
+    void on_fTriggerSeqLPint_valueChanged(int) { SetTriggerSequence(); }
+    void on_fTriggerSeqLPext_valueChanged(int) { SetTriggerSequence(); }
+
+    void on_fPhysicsCoincidence_valueChanged(int);
+    void on_fPhysicsWindow_valueChanged(int);
+    void on_fCalibCoincidence_valueChanged(int);
+    void on_fCalibWindow_valueChanged(int);
+
+    void on_fTriggerInterval_valueChanged(int);
+    void on_fTriggerDelay_valueChanged(int);
+    void on_fTimeMarkerDelay_valueChanged(int);
+    void on_fDeadTime_valueChanged(int);
+/*
+    void on_fClockCondR0_valueChanged(int) { }
+    void on_fClockCondR1_valueChanged(int) { }
+    void on_fClockCondR8_valueChanged(int) { }
+    void on_fClockCondR9_valueChanged(int) { }
+    void on_fClockCondR11_valueChanged(int) { }
+    void on_fClockCondR13_valueChanged(int) { }
+    void on_fClockCondR14_valueChanged(int) { }
+    void on_fClockCondR15_valueChanged(int) { }
+*/
+    void on_fPrescalingVal_valueChanged(int);
+
+    void on_fClockCondFreq_activated(int);
+
+    void on_fLpIntIntensity_valueChanged(int);
+    void on_fLpExtIntensity_valueChanged(int);
+    void on_fLpIntGroup1_stateChanged(int);
+    void on_fLpExtGroup1_stateChanged(int);
+    void on_fLpIntGroup2_stateChanged(int);
+    void on_fLpExtGroup2_stateChanged(int);
+
+    // Tab: FTUs
+    void slot_fFtuLED_clicked();
+    void on_fFtuPing_toggled(bool);
+    void on_fFtuAllOn_clicked();
+    void on_fFtuAllOff_clicked();
+
+    // Tab: Feedback
+    void on_fFeedbackDevMin_valueChanged(int);
+    void on_fFeedbackDevMax_valueChanged(int);
+    void on_fFeedbackCmdMin_valueChanged(int);
+    void on_fFeedbackCmdMax_valueChanged(int);
+    void on_fFeedbackStart_clicked();
+    void on_fFeedbackStop_clicked();
+    void on_fFeedbackCalibrate_clicked();
+
+    // Tab: Bias
+    virtual void BiasHvChannelChanged() = 0;
+    virtual void BiasCamChannelChanged() = 0;
+    void on_fBiasHvBoard_valueChanged(int)   { BiasHvChannelChanged(); }
+    void on_fBiasHvChannel_valueChanged(int) { BiasHvChannelChanged(); }
+    void on_fBiasCamCrate_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamBoard_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamPatch_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamPixel_valueChanged(int)  { BiasCamChannelChanged(); }
+
+    void on_fBiasVoltDac_valueChanged(int);
+
+    void on_fBiasVoltMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fBiasVoltMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+
+    void on_fBiasCurrentMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fBiasCurrentMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+
+    void on_fBiasApplyChVolt_clicked();
+    void on_fBiasApplyChDac_clicked();
+    void on_fBiasApplyGlobalVolt_clicked();
+    void on_fBiasApplyGlobalDac_clicked();
+
+    void on_fBiasSetToZero_clicked();
+    void on_fBiasReset_clicked();
+
+    virtual void on_fBiasDispRefVolt_stateChanged(int) = 0;
+
+    // Tab: Rates
+    //virtual void UpdateThresholdIdx() = 0;
+    virtual void on_fPixelIdx_valueChanged(int) = 0;
+    //void on_fThresholdCrate_valueChanged(int) { UpdateThresholdIdx() ; }
+    //void on_fThresholdBoard_valueChanged(int) { UpdateThresholdIdx() ; }
+    //void on_fThresholdPatch_valueChanged(int) { UpdateThresholdIdx() ; }
+
+    virtual void on_fPixelEnable_stateChanged(int) = 0;
+    virtual void on_fThresholdVal_valueChanged(int) = 0;
+    //virtual void on_fThresholdIdx_valueChanged(int) = 0;
+
+    virtual void on_fBoardRatesEnabled_toggled(bool) = 0;
+
+    void on_fNoutof4Val_valueChanged(int);
+
+    void on_fRatesMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fRatesMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fPixelEnableAll_clicked();
+    void on_fPixelDisableAll_clicked();
+
+    virtual void on_fPixelDisableOthers_clicked() = 0;
+    virtual void on_fThresholdDisableOthers_clicked() = 0;
+    virtual void on_fThresholdEnablePatch_clicked() = 0;
+    virtual void on_fThresholdDisablePatch_clicked() = 0;
+
+    virtual void DisplayRates() = 0;
+    void on_fRatePatch1_valueChanged(int) { DisplayRates(); }
+    void on_fRatePatch2_valueChanged(int) { DisplayRates(); }
+    void on_fRateBoard1_valueChanged(int) { DisplayRates(); }
+    void on_fRateBoard2_valueChanged(int) { DisplayRates(); }
+
+    // Tab: RateScan
+
+    virtual void DisplayRateScan() = 0;
+    void on_fRateScanPatch1_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanPatch2_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanBoard1_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanBoard2_valueChanged(int) { DisplayRateScan(); }
+
+    // Tab: Chat
+    void on_fChatSend_clicked();
+
+    // Tab: Commands
+    /// Needs access to DimNetwork thus it is implemented in the derived class
+    virtual void on_fDimCmdSend_clicked() = 0;
+
+    // Main menu
+    //    void on_fMenuLogSaveAs_triggered(bool)
+
+    virtual void slot_RootEventProcessed(TObject *, unsigned int, TCanvas *) = 0;
+    virtual void slot_RootUpdate() = 0;
+    virtual void slot_ChoosePixelThreshold(int) = 0;
+    virtual void slot_ChooseBiasChannel(int) = 0;
+    virtual void slot_CameraDoubleClick(int) = 0;
+    virtual void slot_CameraMouseMove(int) = 0;
+    void slot_TimeUpdate();
+};
+
+#endif
Index: branches/FACT++_part_filenames/gui/Q3DCameraWidget.cc
===================================================================
--- branches/FACT++_part_filenames/gui/Q3DCameraWidget.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/Q3DCameraWidget.cc	(revision 18732)
@@ -0,0 +1,262 @@
+/*
+ * Q3DCameraWidget.cc
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+#include "Q3DCameraWidget.h"
+
+#include <math.h>
+#include <sstream>
+
+#include <GL/glu.h>
+
+#include <QMouseEvent>
+
+    Q3DCameraWidget::Q3DCameraWidget(QWidget* pparent) : BasicGlCamera(pparent),
+                                                         currentLoc()
+    {
+        _data.resize(432000);
+        _colorR.resize(432000);
+        _colorG.resize(432000);
+        _colorB.resize(432000);
+        _x.resize(432000);
+        _y.resize(432000);
+        _z.resize(432000);
+        for (int i=0;i<432000;i++)
+        {
+            _data[i] = 0;
+            _colorR[i] = 0;
+            _colorG[i] = 0;
+            _colorB[i] = 0;
+            _x[i] = 0;
+            _y[i] = 0;
+            _z[i] = 0;
+        }
+        _warningWritten = false;
+    }
+    Q3DCameraWidget::~Q3DCameraWidget()
+    {
+
+    }
+    void Q3DCameraWidget::timedUpdate()
+    {
+        updateGL();
+    }
+
+    int rotation =130;
+    int rotationy = 30;
+    float transZ = 0;
+   void Q3DCameraWidget::mousePressEvent(QMouseEvent* cEvent)
+    {
+
+         if (cEvent->buttons()  & Qt::LeftButton)
+         {
+             rotationy = -60 + (cEvent->pos().y()/(float)height())*120.f;
+             rotation = 130 + (cEvent->pos().x()/(float)width())*180.f;
+         }
+         else if (cEvent->buttons() & Qt::RightButton)
+         {
+             if (cEvent->pos().y() > height()/2)
+                 transZ -= 0.5;
+             else
+                 transZ += 0.5;
+         }
+         updateGL();
+    }
+    void Q3DCameraWidget::mouseDoubleClickEvent(QMouseEvent *cEvent)
+    {
+
+    }
+    void Q3DCameraWidget::mouseMoveEvent(QMouseEvent *cEvent)
+    {
+        if (cEvent->buttons() & Qt::LeftButton) {
+            mousePressEvent(cEvent);
+        }
+
+    }
+    void Q3DCameraWidget::paintGL()
+    {
+        makeCurrent();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+        glLoadIdentity();
+
+        glTranslatef(-0.0,-0.0, -5);
+        glTranslatef(0,0,(float)(transZ));
+        glRotatef((float)rotationy,1.0,0.0,0.0);
+        glRotatef((float)rotation, 0.0, 1.0, 0.0);
+
+        glColor3f(1.0,0.0,0.0);
+
+        glBegin(GL_TRIANGLES);
+        for (int i=0;i<1439;i++)
+        {
+            for (int j=6;j<250;j++)
+            {
+                //get the 4 vertices that we need for drawing this patch
+                glColor3f(_colorR[i*300+j],_colorG[i*300+j],_colorB[i*300+j]);
+                glVertex3f(_x[i*300+j], _y[i*300+j], _z[i*300+j]);
+                glColor3f(_colorR[i*300+j+1],_colorG[i*300+j+1],_colorB[i*300+j+1]);
+                glVertex3f(_x[i*300+j+1], _y[i*300+j+1], _z[i*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j],_colorG[(i+1)*300+j],_colorB[(i+1)*300+j]);
+                glVertex3f(_x[(i+1)*300+j], _y[(i+1)*300+j], _z[(i+1)*300+j]);
+
+                glColor3f(_colorR[i*300+j+1],_colorG[i*300+j+1],_colorB[i*300+j+1]);
+                glVertex3f(_x[i*300+j+1], _y[i*300+j+1], _z[i*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j+1],_colorG[(i+1)*300+j+1],_colorB[(i+1)*300+j+1]);
+                glVertex3f(_x[(i+1)*300+j+1], _y[(i+1)*300+j+1], _z[(i+1)*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j],_colorG[(i+1)*300+j],_colorB[(i+1)*300+j]);
+                glVertex3f(_x[(i+1)*300+j], _y[(i+1)*300+j], _z[(i+1)*300+j]);
+
+            }
+        }
+        glEnd();
+
+    }
+    void Q3DCameraWidget::calculateColorsAndPositions()
+    {
+        short min = 10000;
+         short max = -10000;
+         for (int k=0;k<1440;k++)
+             for (int j=6;j<251;j++)
+         {
+               int  i = k*300+j;
+             if (_data[i] < min)
+                 min = _data[i];
+             if (_data[i] > max)
+                 max = _data[i];
+         }
+         float span = max - min;
+
+
+         //max should be at one, min at -1
+
+         for (int i=0;i<1440;i++)
+         {
+             for (int j=6;j<251;j++)
+             {
+                 _x[i*300+j] = -1 + (2.f*i)/1440.f;
+                 _y[i*300+j] = -0.5 + 1.0f*(_data[i*300+j] - min)/span;
+                 _z[i*300+j] = -1+(2.f*j)/300.f;
+                 float value = (_data[i*300 + j] - min)/span;
+                 if (value < 0.33)
+                 {
+                      _colorR[i*300+j] = 0;
+                      _colorG[i*300+j] = 0;
+                      _colorB[i*300+j] = value/0.33;
+                 }
+                 if (value >= 0.33 && value <= 0.66)
+                 {
+                     _colorR[i*300+j] = 0;
+                     _colorG[i*300+j] = (value-0.33)/0.33;
+                     _colorB[i*300+j] = 1 - ((value-0.33)/0.33);
+                  }
+                 if (value > 0.66)
+                 {
+                     _colorR[i*300+j] = (value-0.66)/0.33;
+                      _colorG[i*300+j] = 1 - ((value-0.66)/0.33);
+                      _colorB[i*300+j] = 0;
+
+                 }
+             }
+         }
+
+
+
+    }
+    void Q3DCameraWidget::setData(float* ddata)
+    {
+        if (!_warningWritten)
+        {
+            _warningWritten = true;
+            cout << "Info : 3D plotter disabled. requires more work so that less than 300 slices per pixel can be loaded" << endl;
+            cout << "Contact Etienne (etienne.lyard@unige.ch) for more information." << endl;
+        }
+       //disabled for now as I am working with 150 slices only
+/*        for (int i=0;i<1440;i++)
+            for (int j=0;j<300;j++)
+            _data[i*300+j] = (short)(ddata[i*300 + j]);
+        calculateColorsAndPositions();
+        if (isVisible())
+            updateGL();
+*/
+    }
+    void Q3DCameraWidget::setData(short* ddata)
+    {
+        if (!_warningWritten)
+        {
+            _warningWritten = true;
+            cout << "Info : 3D plotter disabled. requires more work so that less than 300 slices per pixel can be loaded" << endl;
+            cout << "Contact Etienne (etienne.lyard@unige.ch) for more information." << endl;
+        }
+            /*        for (int i=0;i<1440;i++)
+            for (int j=0;j<300;j++)
+                _data[i*300+j] = ddata[i* 300 + j];
+        calculateColorsAndPositions();
+        if (isVisible())
+            updateGL();
+*/
+    }
+    void Q3DCameraWidget::drawCameraBody()
+    {
+        glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
+
+        GLfloat color[4] = {0.8f, 1.f, 1.f, 1.f};
+        glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+        glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 1.0f);
+        gluCylinder( gluNewQuadric(),
+                        0.62,
+                        0.62,
+                        1.83,
+                        30,
+                        2 );
+        glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+
+
+
+    }
+
+    void Q3DCameraWidget::initializeGL()
+    {
+        qglClearColor(QColor(25,25,38));
+
+        glShadeModel(GL_SMOOTH);
+        glEnable(GL_DEPTH_TEST);
+        glDepthFunc(GL_LESS);
+        glDisable(GL_LIGHTING);
+//        glEnable(GL_LIGHTING);
+//        glEnable(GL_LIGHT0);
+//        glEnable(GL_AUTO_NORMAL);
+        glDisable(GL_CULL_FACE);
+//        glCullFace(GL_FRONT);
+
+        glEnable(GL_POLYGON_SMOOTH);
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+        glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
+    }
+    void Q3DCameraWidget::resizeGL(int cWidth, int cHeight)
+    {
+        glViewport(0,0,cWidth, cHeight);
+        glMatrixMode(GL_PROJECTION);
+        glLoadIdentity();
+        GLfloat windowRatio = (float)cWidth/(float)cHeight;
+        if (windowRatio < 1)
+        {
+//            windowRatio = 1.0f/windowRatio;
+            gluPerspective(40.f, windowRatio, 1, 100);
+//            gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+            pixelSize = 2*viewSize/(float)cWidth;
+            shownSizex = 2*viewSize;
+            shownSizey = 2*viewSize*windowRatio;
+        }
+        else
+        {
+            gluPerspective(40.f, windowRatio,1, 8);
+//            gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+            pixelSize = 2*viewSize/(float)cHeight;
+            shownSizex = 2*viewSize*windowRatio;
+            shownSizey = 2*viewSize;
+        }
+        glMatrixMode(GL_MODELVIEW);
+    }
Index: branches/FACT++_part_filenames/gui/Q3DCameraWidget.h
===================================================================
--- branches/FACT++_part_filenames/gui/Q3DCameraWidget.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/Q3DCameraWidget.h	(revision 18732)
@@ -0,0 +1,81 @@
+/*
+ * Q3DCameraWidget.h
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+
+#ifndef Q3DCAMERAWIDGET_H_
+#define Q3DCAMERAWIDGET_H_
+
+#include "BasicGlCamera.h"
+#include <QtCore/QTimer>
+#include <iostream>
+
+
+using namespace std;
+
+struct cameraLocation
+{
+    float rotX;
+    float rotY;
+    float position[3];
+
+    cameraLocation() : rotX(0), rotY(0), position{0,0,0}
+    {}
+    cameraLocation(float rx, float ry, float x, float y, float z): rotX(rx), rotY(ry), position{x,y,z}
+    {}
+};
+
+struct float3
+{
+    float data[4];
+    float3()
+    {
+        data[0] = data[1] = data[2] = 0;
+        data[3] = 1.f;
+    }
+    float& operator [] (int index)
+    {
+        return data[index];
+    }
+};
+class Q3DCameraWidget : public BasicGlCamera
+{
+    Q_OBJECT
+
+public:
+    Q3DCameraWidget(QWidget* pparent = 0);
+    ~Q3DCameraWidget();
+    void setData(float* data);
+    void setData(short* data);
+public Q_SLOTS:
+    void timedUpdate();
+
+protected:
+    void paintGL();
+    void initializeGL();
+    void resizeGL(int cWidth, int cHeight);
+    void drawCameraBody();
+    float rotX, rotY;
+    void mousePressEvent(QMouseEvent* event);
+    void mouseDoubleClickEvent(QMouseEvent *cEvent);
+    void mouseMoveEvent(QMouseEvent *cEvent);
+
+private:
+    cameraLocation currentLoc;
+    vector<short> _data;
+    vector<float> _colorR;
+    vector<float> _colorG;
+    vector<float> _colorB;
+    vector<float> _x;
+    vector<float> _y;
+    vector<float> _z;
+    QTimer _timer;
+    bool isPicking;
+    void calculateColorsAndPositions();
+    bool _warningWritten;
+
+};
+
+#endif /* Q3DCAMERAWIDGET_H_ */
Index: branches/FACT++_part_filenames/gui/QCameraWidget.cc
===================================================================
--- branches/FACT++_part_filenames/gui/QCameraWidget.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/QCameraWidget.cc	(revision 18732)
@@ -0,0 +1,518 @@
+#include "QCameraWidget.h"
+
+#include <sstream>
+#include <iostream>
+
+#include <QMouseEvent>
+
+using namespace std;
+
+    QCameraWidget::QCameraWidget(QWidget *pparent) : BasicGlCamera(pparent)
+    {
+        fBold.resize(1440, false);
+        fEnable.resize(1440, true);
+        lastFace = -1;
+        fShowPixelMoveOver = false;
+        fShowPatchMoveOver = false;
+        fDrawPatch = false;
+
+        CalculatePixelsColor();
+
+   }
+
+    void QCameraWidget::paintGL()
+    {
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+         glLoadIdentity();
+
+         glTranslatef(0,-0.44,0);
+         glTranslatef(-0.1,0,0);
+         glRotatef(cameraRotation, 0,0,-1);
+         if (cameraRotation == 90)
+         {
+             glTranslatef(-0.45,-0.45,0);
+  //           cout << "correction" << endl;
+         }
+         if (cameraRotation == -90)
+         {
+             glTranslatef(0.45,-0.45,0);
+         }
+         glScalef(1.5, 1.5, 1.0);
+         glTranslatef(0,0,-0.5);
+         drawCamera(true);
+         glTranslatef(0,0,0.1f);
+
+         if (fDrawPatch)
+             drawPatches();
+         glTranslatef(0,0,0.1f);
+
+         glLineWidth(1.0f);
+         glColor3fv(highlightedPixelsCoulour);
+         for (vector<int>::iterator it = highlightedPixels.begin(); it!= highlightedPixels.end(); it++)
+         {
+             drawHexagon(*it, false);
+         }
+
+        glLineWidth(1.0f);
+        glTranslatef(0,0,0.1f);
+
+        //glColor3f(1.f - pixelsColor[fWhite][0],1.f - pixelsColor[fWhite][1],1.f - pixelsColor[fWhite][2]);
+        if (fWhite != -1)
+        {
+            glColor3f(1.f, 0.f, 0.f);
+            drawHexagon(fWhite, false);
+        }
+        DrawCameraText();
+
+        DrawScale();
+
+//        if (linearButton->isVisible())
+//            repaintInterface();
+    }
+    void QCameraWidget::drawCamera(bool alsoWire)
+    {
+
+        if (!pixelColorUpToDate)
+            CalculatePixelsColor();
+        glLineWidth(1.0);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            glColor3fv(pixelsColor[i]);
+            glLoadName(i);
+            drawHexagon(i,true);
+        }
+        if (!alsoWire)
+            return;
+        glTranslatef(0,0,0.1f);
+        glColor3fv(pixelContourColour);//0.0f,0.0f,0.0f);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            drawHexagon(i, false);
+        }
+    }
+    void QCameraWidget::DrawCameraText()
+    {
+        if (!fTextEnabled) return;
+
+        glPushMatrix();
+        glLoadIdentity();
+
+
+
+//        int textSize = (int)(width()*14/600);
+//        setFont(QFont("Monospace", textSize));
+        qglColor(QColor(25, 22, 12));
+
+        //first let's draw the usual data
+        //title
+        renderText(-shownSizex/2.f + 0.01f, shownSizey/2.f - fTextSize*pixelSize - 0.01f, 0.f, QString(titleText.c_str()));
+        //stats
+        ostringstream str;
+        str.precision(2);
+        str.setf(ios::fixed,ios::floatfield);
+        str << "Med " << fmedian;// << unitsText;
+        renderText(3, height()-3-4*fTextSize-35, QString(str.str().c_str()));
+        str.str("");
+        str << "Avg " << fmean;// <<  unitsText;
+        renderText(3, height()-3-3*fTextSize-27, QString(str.str().c_str()));
+        str.str("");
+        str << "RMS " << frms;// <<  unitsText;
+        renderText(3, height()-3-2*fTextSize-21, QString(str.str().c_str()));
+        str.str("");
+        str << "Min " << fmin;// << unitsText;
+        renderText(3, height()-3-3, QString(str.str().c_str()));
+        str.str("");
+        str << "Max " << fmax;// << unitsText;
+        renderText(3, height()-3-1*fTextSize-8, QString(str.str().c_str()));
+        //then draw the values beside the scale
+        //the difficulty here is to write the correct min/max besides the scale
+        //it depends whether the actual mean of the data is given by the user
+        //or not. the values given by user are fMin and fMax, while the data
+        //real min/max are fmin and fmax (I know, quite confusing... sorry about that)
+        //so. first let's see what is the span of one pixel
+        float min = (fMin < fScaleLimit || fMax < fScaleLimit) ? fmin : fMin;
+        float max = (fMin < fScaleLimit || fMax < fScaleLimit) ? fmax : fMax;
+//        textSize = (int)(height()*12/600);
+ //       setFont(QFont("Monospace", textSize));
+        float pixelSpan = (height() - fTextSize - 1)/(max - min);
+
+        //draw the scale values
+        float value = min;
+        int fontWidth = fTextSize;
+        if (fTextSize > 12) fontWidth--;
+        if (fTextSize > 10) fontWidth--;
+        if (fTextSize > 7) fontWidth--;//else fontWidth -=1;
+//        if (fTextSize < 7) fontWidth++;
+        for (int i=0;i<11;i++)
+        {
+            str.str("");
+            str << value;
+            if (i==0 || i==10)
+                str << ' ' << unitsText;
+            str << ' ';
+            int h = (value - min)*pixelSpan;
+            if (logScale && h != 0)
+            {
+                float fh = h;
+                float mult = (max - min)*pixelSpan;
+                fh = log10(h*10.f/mult);
+                fh *= mult;
+                h = (int)fh;
+            }
+            h = height()-h;
+            int w = width() - (width()/50) - fontWidth*str.str().size();
+            if (i==0 || i==10) w -= width()/50;
+            if (i!=0 && i!=10) h -= fTextSize/2;
+            renderText(w, h, QString(str.str().c_str()));
+            value += (max - min)/10;
+        }
+
+/*
+        str.str("");
+        str << min << unitsText;
+        int fontWidth = textSize;
+        if (textSize > 12) fontWidth-=3; else fontWidth -= 2;
+        //height of min ?
+        int hmin = (min - min)*pixelSpan;
+        hmin = height() - hmin;
+        renderText(width() - (width()/25) - fontWidth*str.str().size(), hmin, QString(str.str().c_str()));
+        str.str("");
+        str << max << unitsText;
+        int hmax = (max - min)*pixelSpan;
+        hmax = height() - hmax;
+        renderText(width() - (width()/25) - fontWidth*str.str().size(), hmax, QString(str.str().c_str()));
+*/
+        glPopMatrix();
+
+//        textSize = (int)(600*14/600);
+//        setFont(QFont("Times", textSize));
+    }
+    void QCameraWidget::drawPatches()
+    {
+        glLineWidth(3.0f);
+        glColor3fv(patchesCoulour);
+         glBegin(GL_LINES);
+                 for (int i=0;i<NTMARK;i++)
+                {
+                     for (unsigned int j=0;j<patchesIndices[i].size();j++)
+                     {
+                         glVertex2fv(verticesList[patchesIndices[i][j].first]);
+                         glVertex2fv(verticesList[patchesIndices[i][j].second]);
+                     }
+                 }
+         glEnd();
+         glTranslatef(0,0,0.1f);
+
+         glColor3fv(highlightedPatchesCoulour);
+         glBegin(GL_LINES);
+         for (vector<int>::iterator it=highlightedPatches.begin(); it!= highlightedPatches.end(); it++)
+         {
+             for (unsigned int j=0;j<patchesIndices[*it].size();j++)
+             {
+                 glVertex2fv(verticesList[patchesIndices[*it][j].first]);
+                 glVertex2fv(verticesList[patchesIndices[*it][j].second]);
+             }
+         }
+         glEnd();
+         if (fWhitePatch != -1)
+         {
+             glTranslatef(0,0,0.01);
+             glColor3f(1.f, 0.6f, 0.f);//patchColour);//[0],patchColour[1],patchColour[2]);//0.5f, 0.5f, 0.3f);
+             glBegin(GL_LINES);
+             for (unsigned int j=0;j<patchesIndices[fWhitePatch].size();j++)
+             {
+                 glVertex2fv(verticesList[patchesIndices[fWhitePatch][j].first]);
+                 glVertex2fv(verticesList[patchesIndices[fWhitePatch][j].second]);
+             }
+             glEnd();
+         }
+
+    }
+    void QCameraWidget::Reset()
+    {
+        fBold.assign(1440, false);
+    }
+
+    void QCameraWidget::mousePressEvent(QMouseEvent *cEvent)
+    {
+        if (cEvent->pos().x() > width()-(width()/50.f))
+        {
+            toggleInterfaceDisplay();
+            return;
+        }
+        int face = PixelAtPosition(cEvent->pos());
+//        cout << face << endl;
+        if (face != -1) {
+            fWhite = face;
+            fWhitePatch = pixelsPatch[fWhite];
+ //           CalculatePatchColor();
+            emit signalCurrentPixel(face);
+            }
+        else
+        {
+            fWhite = -1;
+            fWhitePatch = -1;
+        }
+        updateGL();
+   }
+    void QCameraWidget::mouseMoveEvent(QMouseEvent* cEvent)
+    {
+        int face = PixelAtPosition(cEvent->pos());
+        if (face != -1 && lastFace != face) {
+            emit signalPixelMoveOver(face);
+        }
+        if (lastFace != face)
+        {
+            if (fShowPixelMoveOver)
+                fWhite = face;
+
+            if (fShowPatchMoveOver)
+                fWhitePatch = face != -1 ? pixelsPatch[face] : -1;
+        }
+
+        if (fShowPixelMoveOver || fShowPatchMoveOver)
+            if (lastFace != face && isVisible())
+                updateGL();
+
+        lastFace = face;
+    }
+    void QCameraWidget::mouseDoubleClickEvent(QMouseEvent* cEvent)
+    {
+        int face = PixelAtPosition(cEvent->pos());
+        if (face != -1) {
+ //           cout << "Event !" << endl;
+            fWhite = face;
+             fWhitePatch = pixelsPatch[fWhite];
+ //          highlightPixel(face);
+ //           highlightPatch(fWhitePatch);
+ //           CalculatePatchColor();
+            emit signalPixelDoubleClick(face);
+       }
+        else
+        {
+            fWhite = -1;
+            fWhitePatch = -1;
+ //           clearHighlightedPixels();
+ //           clearHighlightedPatches();
+        }
+        updateGL();
+
+    }
+    void QCameraWidget::ShowPixelCursor(bool on)
+    {
+        fShowPixelMoveOver = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void QCameraWidget::ShowPatchCursor(bool on)
+    {
+        fShowPatchMoveOver = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void QCameraWidget::SetEnable(int idx, bool b)
+    {
+         fEnable[idx] = b;
+     }
+
+     double QCameraWidget::GetData(int idx)
+     {
+         return fData[idx];
+     }
+     const char* QCameraWidget::GetName()
+     {
+         return "QCameraWidget";
+     }
+     char *QCameraWidget::GetObjectInfo(int px, int py)
+     {
+
+         static stringstream stream;
+         static string str;
+         const int pixel = this->PixelAtPosition(QPoint(px, py));
+         if (pixel >= 0)
+         {
+             stream << "Pixel=" << pixel << "   Data=" << fData[pixel] << '\0';
+         }
+         str = stream.str();
+         return const_cast<char*>(str.c_str());
+     }
+     void QCameraWidget::CalculatePixelsColor()
+     {
+         double dmin = fData[0];
+          double dmax = fData[0];
+          for (int ii=0;ii<ACTUAL_NUM_PIXELS;ii++)
+          {
+              if (finite(fData[ii]))
+              {
+                  dmin = dmax = fData[ii];
+                  break;
+              }
+          }
+          if (fMin < fScaleLimit || fMax < fScaleLimit)
+          {
+              for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+              {
+                  if (!finite(fData[i])) continue;
+                  if (!fEnable[i]) continue;
+                  if (fData[i] > dmax) dmax = fData[i];
+                  if (fData[i] < dmin) dmin = fData[i];
+              }
+          }
+          if (fMin > fScaleLimit) dmin = fMin;
+          if (fMax > fScaleLimit) dmax = fMax;
+//          cout << "min: " << dmin << " max: " << dmax << " fMin: " << fMin << " fMax: " << fMax << endl;
+          float color;
+          for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+           {
+              if (!fEnable[i])
+              {
+//                  cout << "not enabled !" << i << endl;
+                  pixelsColor[i][0] = 0.1f;
+                  pixelsColor[i][1] = 0.1f;
+                  pixelsColor[i][2] = 0.15f;
+                  continue;
+              }
+              if (!finite(fData[i]))
+              {
+//                  cout << "not enabled !" << i << endl;
+                  pixelsColor[i][0] = 0.9f;
+                  pixelsColor[i][1] = 0.0f;
+                  pixelsColor[i][2] = 0.9f;
+                  continue;
+              }
+              if (fData[i] < dmin)
+               {
+                   pixelsColor[i][0] = tooLowValueCoulour[0];
+                   pixelsColor[i][1] = tooLowValueCoulour[1];
+                   pixelsColor[i][2] = tooLowValueCoulour[2];
+                   continue;
+               }
+               if (fData[i] > dmax)
+               {
+                   pixelsColor[i][0] = tooHighValueCoulour[0];
+                   pixelsColor[i][1] = tooHighValueCoulour[1];
+                   pixelsColor[i][2] = tooHighValueCoulour[2];
+                   continue;
+               }
+               color = float((fData[i]-dmin)/(dmax-dmin));
+               if (logScale)
+               {
+                   color *= 9;
+                   color += 1;
+                   color = log10(color);
+               }
+
+               int index = 0;
+               while (ss[index] < color && index < 4)
+                   index++;
+               index--;
+               if (index < 0) index = 0;
+               float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+               if (weight0 > 1.0f) weight0 = 1.0f;
+               if (weight0 < 0.0f) weight0 = 0.0f;
+               float weight1 = 1.0f-weight0;
+               pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+               pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+               pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+          }
+          CalculatePatchColor();
+          UpdateText();
+          pixelColorUpToDate = true;
+     }
+     void QCameraWidget::CalculatePatchColor()
+     {
+         return;
+         //calculate the patch contour color. let's use the anti-colour of the pixels
+         GLfloat averagePatchColour[3] = {0.0f,0.0f,0.0f};
+         for (int i=0;i<9;i++)
+             for (int j=0;j<3;j++)
+                 averagePatchColour[j] += pixelsColor[softwareMapping[fWhitePatch*9+i]][j];
+         for (int j=0;j<3;j++)
+             averagePatchColour[j] /= 9;
+         for (int j=0;j<3;j++)
+             patchColour[j] = 1.0f - averagePatchColour[j];
+     }
+     void QCameraWidget::SetData(const valarray<double> &ddata)
+     {
+//             fData = ddata;
+         for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+             fData[i] = ddata[i];
+         pixelColorUpToDate = false;
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+void QCameraWidget::SetData(const valarray<float> &ddata)
+     {
+//             fData = ddata;
+         for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+             fData[i] = ddata[i];
+         pixelColorUpToDate = false;
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+
+     void QCameraWidget::highlightPixel(int idx, bool highlight)
+     {
+         if (idx < 0 || idx >= ACTUAL_NUM_PIXELS)
+         {
+           cout << "Error: requested pixel highlight out of bounds" << endl;
+           return;
+         }
+
+         const vector<int>::iterator v = ::find(highlightedPixels.begin(), highlightedPixels.end(), idx);
+         if (highlight)
+         {
+             if (v==highlightedPixels.end())
+                 highlightedPixels.push_back(idx);
+         }
+         else
+         {
+             if (v!=highlightedPixels.end())
+                 highlightedPixels.erase(v);
+         }
+
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+     void QCameraWidget::highlightPatch(int idx, bool highlight)
+     {
+         if (idx < 0 || idx >= NTMARK)
+         {
+             cout << "Error: requested patch highlight out of bounds" << endl;
+             return;
+         }
+
+         const vector<int>::iterator v = ::find(highlightedPatches.begin(), highlightedPatches.end(), idx);
+         if (highlight)
+         {
+             if (v==highlightedPatches.end())
+                 highlightedPatches.push_back(idx);
+         }
+         else
+         {
+             if (v!=highlightedPatches.end())
+                 highlightedPatches.erase(v);
+         }
+
+         if (isVisible() && autoRefresh)
+             updateGL();
+
+     }
+     void QCameraWidget::clearHighlightedPatches()
+     {
+         highlightedPatches.clear();
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+     void QCameraWidget::clearHighlightedPixels()
+     {
+         highlightedPixels.clear();
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+
+
+
Index: branches/FACT++_part_filenames/gui/QCameraWidget.h
===================================================================
--- branches/FACT++_part_filenames/gui/QCameraWidget.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/QCameraWidget.h	(revision 18732)
@@ -0,0 +1,65 @@
+#ifndef Q_CAMERA_WIDGET_H_
+#define Q_CAMERA_WIDGET_H_
+
+#include "BasicGlCamera.h"
+#include <valarray>
+#include <set>
+
+class QCameraWidget : public BasicGlCamera
+{
+    Q_OBJECT
+
+    typedef std::pair<double, double> Position;
+    typedef std::vector<Position> Positions;
+
+    //FIXME this variable seems to be deprecated
+    Positions fGeom;
+
+    std::vector<bool> fBold;
+    std::vector<bool> fEnable;
+
+    std::vector<int> highlightedPatches;
+    std::vector<int> highlightedPixels;
+
+
+    int lastFace;
+    bool fShowPixelMoveOver;
+    bool fShowPatchMoveOver;
+
+public:
+    bool fDrawPatch;
+    void highlightPixel(int idx, bool highlight=true);
+    void highlightPatch(int idx, bool highlight=true);
+    void clearHighlightedPatches();
+    void clearHighlightedPixels();
+    QCameraWidget(QWidget *pparent = 0);
+    void paintGL();
+    void mousePressEvent(QMouseEvent *cEvent);
+    void mouseMoveEvent(QMouseEvent *event);
+    void mouseDoubleClickEvent(QMouseEvent *event);
+    void Reset();
+    void drawCamera(bool alsoWire);
+    void DrawCameraText();
+    void drawPatches();
+     void SetEnable(int idx, bool b);
+     double GetData(int idx);
+    const char *GetName();
+
+     int GetIdx(float px, float py);
+     char *GetObjectInfo(int px, int py);
+
+     void SetData(const std::valarray<double> &ddata);
+     void SetData(const std::valarray<float> &ddata);
+
+
+     void ShowPixelCursor(bool);
+     void ShowPatchCursor(bool);
+
+private:
+     void CalculatePixelsColor();
+     void CalculatePatchColor();
+
+};
+
+typedef QCameraWidget Camera;
+#endif
Index: branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.cc
===================================================================
--- branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.cc	(revision 18732)
@@ -0,0 +1,2405 @@
+/*
+ * QtGl.cpp
+ *
+ *  Created on: Jul 19, 2011
+ *      Author: lyard
+ *
+ ******
+ */
+#include <math.h>
+#include <fstream>
+
+#include <boost/date_time/local_time/local_time.hpp>
+
+#include "RawEventsViewer.h"
+#include "viewer.h"
+
+#include <QFileDialog>
+#include <QMouseEvent>
+
+#include <qwt_symbol.h>
+#include <qwt_plot_grid.h>
+#include <qwt_plot_zoomer.h>
+
+#include "src/Configuration.h"
+#include "externals/factfits.h"
+
+
+using namespace std;
+
+#undef ACTUAL_NUM_PIXELS
+#define ACTUAL_NUM_PIXELS 1440
+
+//bounding box for diplaying the impulse curve
+float bboxMin[2] = {-0.8,-0.9};
+float bboxMax[2] = {0.8,-0.3};
+/************************************************************
+ * CALC BLUR COLOR if in blur display mode, calculate the interpolated
+ * colour for a given vertex
+ ************************************************************/
+void RawDataViewer::calcBlurColor(int pixel,  int vertex)
+{
+    GLfloat color[3];
+    int first, second;
+    first = vertex-1;
+    second = vertex;
+    if (first < 0)
+        first = 5;
+
+    first = neighbors[pixel][first];
+    second = neighbors[pixel][second];
+//    cout << pixel << " " << vertex << " " << "first: " << first << " second: " << second << endl;
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[pixel][i];
+    float divide = 1;
+    if (first != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[first][i];
+    }
+    if (second != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[second][i];
+    }
+    for (int i=0;i<3;i++)
+        color[i] /= divide;
+
+//    cout << color[0] << " " << color[1] << " " << color[2] << endl;
+
+    glColor3fv(color);
+}
+void RawDataViewer::calcMidBlurColor(int pixel, int vertex)
+{
+    GLfloat color[3];
+    int first;
+    first = vertex-1;
+    if (first < 0)
+        first = 5;
+    first = neighbors[pixel][first];
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[pixel][i];
+    float divide = 1;
+    if (first != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[first][i];
+    }
+    for (int i=0;i<3;i++)
+        color[i] /= divide;
+    glColor3fv(color);
+}
+/************************************************************
+ * DRAW BLURRY HEXAGON. draws a solid hexagon, with interpolated colours
+ ************************************************************/
+void RawDataViewer::drawBlurryHexagon(int index)
+{
+
+//per-pixel mesh
+    GLfloat color[3];
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[index][i];
+    glBegin(GL_TRIANGLES);
+    calcBlurColor(index, 0);
+    glVertex2fv(verticesList[verticesIndices[index][0]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 1);
+    glVertex2fv(verticesList[verticesIndices[index][1]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][1]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 2);
+    glVertex2fv(verticesList[verticesIndices[index][2]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][2]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 3);
+    glVertex2fv(verticesList[verticesIndices[index][3]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][3]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 4);
+    glVertex2fv(verticesList[verticesIndices[index][4]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][4]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 5);
+    glVertex2fv(verticesList[verticesIndices[index][5]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][5]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 0);
+    glVertex2fv(verticesList[verticesIndices[index][0]]);
+    glEnd();
+
+    return;
+}
+
+/************************************************************
+ * DRAW CAMERA draws all the camera pixels
+ ************************************************************/
+void RawDataViewer::drawCamera(bool alsoWire)
+{
+    glLoadIdentity();
+    if (!drawImpulse)
+    {
+        glTranslatef(0,-0.44,0);
+        glRotatef(cameraRotation, 0,0,-1);
+        if (cameraRotation == 90)
+        {
+            glTranslatef(-0.45,-0.45,0);
+        }
+        if (cameraRotation == -90)
+        {
+            glTranslatef(0.45,-0.45,0);
+        }
+        glScalef(1.5,1.5,1);
+    }
+    else
+    {
+        glRotatef(cameraRotation, 0,0,-1);
+          if (cameraRotation == 90)
+        {
+            glTranslatef(-0.45/1.5,-0.45/1.5,0);
+        }
+        if (cameraRotation == -90)
+        {
+            glTranslatef(0.45/1.5,-0.45/1.5,0);
+        }
+  }
+    glColor3f(0.5,0.5,0.5);
+    glLineWidth(1.0);
+    float color;
+
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+        if (!nRoi)
+          color = (float)(i)/(float)(ACTUAL_NUM_PIXELS);
+        else
+
+//        if (_softwareOrdering)
+//            color = float(eventData[nRoi*i + whichSlice] + (VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+//        else
+            color = float(eventData[nRoi*hardwareMapping[i] + whichSlice]+(VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+        if (logScale)
+        {
+            color *= 9;
+            color += 1;
+            color = log10(color);
+        }
+
+        if (color < ss[0])
+        {
+            pixelsColor[i][0] = tooLowValueCoulour[0];
+            pixelsColor[i][1] = tooLowValueCoulour[1];
+            pixelsColor[i][2] = tooLowValueCoulour[2];
+            continue;
+        }
+        if (color > ss[4])
+        {
+            pixelsColor[i][0] = tooHighValueCoulour[0];
+            pixelsColor[i][1] = tooHighValueCoulour[1];
+            pixelsColor[i][2] = tooHighValueCoulour[2];
+            continue;
+        }
+        int index = 0;
+        while (ss[index] < color && index < 4)
+            index++;
+        index--;
+        if (index < 0) index = 0;
+        float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+        if (weight0 > 1.0f) weight0 = 1.0f;
+        if (weight0 < 0.0f) weight0 = 0.0f;
+        float weight1 = 1.0f-weight0;
+        pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+        pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+        pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+    }
+
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+
+        glColor3fv(pixelsColor[i]);
+        glLoadName(i);
+if (drawBlur)
+    drawBlurryHexagon(i);
+else
+    drawHexagon(i,true);
+
+    }
+    if (!alsoWire)
+        return;
+    glTranslatef(0,0,0.1f);
+    glColor3f(0.0f,0.0f,0.0f);
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+
+        drawHexagon(i, false);
+    }
+
+}
+
+/************************************************************
+ * DRAW PIXEL CURVE. draws the raw impulse curve of the currently selected pixel
+ ************************************************************/
+void RawDataViewer::drawPixelCurve()
+{
+    float xRange = bboxMax[0] - bboxMin[0];
+    float yRange = bboxMax[1] - bboxMin[1];
+
+    glBegin(GL_LINES);
+    glLineWidth(1.0f);
+    glColor3f(0.0,0.0,0.0);
+    glVertex2f(bboxMin[0], bboxMin[1]);
+    glVertex2f(bboxMax[0], bboxMin[1]);
+    glVertex2f(bboxMin[0], bboxMin[1]);
+    glVertex2f(bboxMin[0], bboxMax[1]);
+    glVertex2f(bboxMin[0], (bboxMin[1]+bboxMax[1])/2.0f);
+    glVertex2f(bboxMax[0], (bboxMin[1]+bboxMax[1])/2.0f);
+    glVertex2f(bboxMin[0] + xRange*nRoi/(float)(nRoi+nRoiTM),
+               bboxMin[1]);
+    glVertex2f(bboxMin[0] + xRange*nRoi/(float)(nRoi+nRoiTM),
+               bboxMax[1]);
+   glEnd();
+    glTranslatef(0,0,0.1f);
+    if (!nRoi)
+          return;
+     glBegin(GL_LINES);
+    glColor3f(1.0f,1.0f,0.0f);
+    float divideMe = (float)(VALUES_SPAN-1);
+    float plusMe = (float)(VALUES_SPAN)/2;
+    if (divideMe <= 0)
+        divideMe = 1;
+
+    /*
+    if (drawCalibrationLoaded)
+        plusMe += 0;//VALUES_SPAN/2;
+    if (drawCalibrationLoaded && calibrationLoaded)
+    {
+        divideMe /=2;
+        plusMe = 0 ;///=2;
+        }*/
+
+//    int mapping = _softwareOrdering ? selectedPixel : hardwareMapping[selectedPixel];
+    int mapping = hardwareMapping[selectedPixel];
+    const int hw = mapping;
+    const PixelMapEntry& mapEntry = fPixelMap.index(selectedPixel);
+    const int pixelIdInPatch = mapEntry.pixel();
+    const int patchId = mapEntry.patch();
+    const int boardId = mapEntry.board();
+    const int crateId = mapEntry.crate();
+
+    if (selectedPixel != -1)
+    {
+    for (int i=0;i<nRoi-1;i++)
+    {
+        float d1 = eventData[nRoi*hw + i]+plusMe;
+        float d2 = eventData[nRoi*hw + i+1]+plusMe;
+        if (!finite(d1)) d1 = 20000;
+        if (!finite(d2)) d2 = 20000;
+        glVertex2f(bboxMin[0] + xRange*i/(float)(nRoi+nRoiTM),
+                   bboxMin[1] + yRange*(d1) /divideMe);
+        glVertex2f(bboxMin[0] + xRange*(i+1)/(float)(nRoi+nRoiTM),
+                   bboxMin[1] + yRange*(d2) /divideMe);
+    }
+    glEnd();
+
+    glColor3f(0.0f, 1.0f, 1.0f);
+    glBegin(GL_LINES);
+    if (pixelIdInPatch == 8)//this channel has a time marker
+    {
+
+        for (int i=0;i<nRoiTM-1;i++)
+        {
+            float d1 = eventData[nRoi*1440 + nRoiTM*(40*crateId + 4*boardId + patchId) + i] + plusMe;
+            float d2 = eventData[nRoi*1440 + nRoiTM*(40*crateId + 4*boardId + patchId) + i+1] + plusMe;
+            if (!finite(d1)) d1 = 20000;
+            if (!finite(d2)) d2 = 20000;
+            glVertex2f(bboxMin[0] + xRange*(i+nRoi)/(float)(nRoi+nRoiTM),
+                       bboxMin[1] + yRange*(d1)/divideMe);
+            glVertex2f(bboxMin[0] + xRange*(i+1+nRoi)/(float)(nRoi+nRoiTM),
+                       bboxMin[1] + yRange*(d2) / divideMe);
+        }
+    }
+
+    }
+    glEnd();
+    glTranslatef(0,0,0.1f);
+    glBegin(GL_LINES);
+    glColor3f(1.0,0.0,0.0);
+    glVertex2f(bboxMin[0] + xRange*whichSlice/(float)(nRoi+nRoiTM),
+               bboxMin[1]);
+    glVertex2f(bboxMin[0] + xRange*whichSlice/(float)(nRoi+nRoiTM),
+               bboxMax[1]);
+
+    glEnd();
+
+}
+/************************************************************
+ * CONSTRUCTOR.
+ ************************************************************/
+RawDataViewer::RawDataViewer(QWidget *cParent) : BasicGlCamera(cParent), RMSvalues(1440), Meanvalues(1440), Maxvalues(1440), PosOfMaxvalues(1440), VALUES_SPAN(4096)
+
+{
+
+    whichSlice = 0;
+
+    nRoi = 0;
+    nRoiTM = 0;
+    offSetRoi = 0;
+    eventNum = 0;
+    rowNum = -1;
+    eventStep = 1;
+    selectedPixel = 393;
+    inputFile = NULL;
+    eventData = NULL;
+    drawPatch = false;
+    drawImpulse = true;
+    drawBlur = false;
+    loopCurrentEvent = false;
+    fIsDrsCalibration = false;
+    SetAutoRefresh(true);
+    runType = "unkown";
+
+
+}
+
+void RawDataViewer::assignPixelMapFile(const string& map)
+{
+    PixelMap mypMap;
+    if (map.empty())
+    {
+        if (!mypMap.Read("FACTmap111030.txt"))
+        {
+            if (!mypMap.Read("/swdev_nfs/FACT++/FACTmap111030.txt"))
+            {
+                if (!mypMap.Read("./FACTmap111030.txt"))
+                {
+                    cerr << "ERROR - Problems reading FACTmap111030.txt" << endl;
+                    exit(-1);
+                }
+            }
+        }
+    }
+    else
+    {
+        if (!mypMap.Read(map))
+        {
+            cerr << "ERROR - Problems reading mapping file '" << map << "'" << endl;
+            exit(-1);
+        }
+    }
+
+    assignPixelMap(mypMap);
+
+    for (int i=0;i<160;i++)
+    {
+        const float color[3] = { 0.5, 0.5, 0.3 };
+
+        for (int j=0;j<3;j++)
+            patchesColor[i][j] = color[j];
+    }
+    fZeroArray = NULL;
+
+    _softwareOrdering = false;
+}
+/************************************************************
+ *  DESTRUCTOR
+ ************************************************************/
+RawDataViewer::~RawDataViewer()
+{
+    if (inputFile != NULL)
+    {
+        inputFile->close();
+        delete inputFile;
+    }
+    if (eventData != NULL) {
+        delete[] eventData;
+        delete[] rawEventData;
+        delete[] waveLetArray;
+    }
+    if (fZeroArray != NULL)
+        delete[] fZeroArray;
+}
+void RawDataViewer::allocateZeroArray()
+{
+    if (fZeroArray == NULL)
+    {
+        fZeroArray = new char[8192];
+    }
+}
+/************************************************************
+ * PAINT GL. main drawing function.
+ ************************************************************/
+void RawDataViewer::paintGL()
+{
+    //Should not be required, but apparently it helps when piping it through X forwarding
+    glFinish();
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glLoadIdentity();
+
+    glTranslatef(0,0,-0.5);
+
+    if (drawBlur)
+    {
+        glShadeModel(GL_SMOOTH);
+        drawCamera(false);
+    }
+    else
+    {
+        glShadeModel(GL_FLAT);
+        drawCamera(true);
+    }
+    glTranslatef(0,0,0.1f);
+    if (drawPatch)
+        drawPatches();
+    glTranslatef(0,0,0.1f);
+   if (!drawBlur && (selectedPixel != -1))
+   {
+        glLineWidth(1.0f);
+        glColor3f(1.0,1.0,1.0);
+        drawHexagon(selectedPixel, false);
+   }
+   glTranslatef(0,0,0.1f);
+   if (drawImpulse)
+   {
+    //   glRotatef(cameraRotation, 0,0,1);
+       glLoadIdentity();
+       glLineWidth(2.0);
+       drawPixelCurve();
+   }
+   glTranslatef(0,0,0.1f);
+   DrawScale();
+}
+
+/************************************************************
+ * MOUSE PRESS EVENT. mouse click handler.
+ ************************************************************/
+void RawDataViewer::mousePressEvent(QMouseEvent *cEvent)
+{
+    if (cEvent->pos().x() > width()-(width()/50.f))
+    {
+        toggleInterfaceDisplay();
+        return;
+    }
+    lastPos = cEvent->pos();
+    if (setCorrectSlice(cEvent))
+        return;
+    int face = PixelAtPosition(cEvent->pos());
+
+        selectedPixel = face;
+        emit signalCurrentPixel(face);
+
+    updateGL();
+}
+
+/************************************************************
+ * SET CORRECT SLICE. if displayed, figures out if the graph was
+ * clicked, and if so, which slice should be displayed
+ ************************************************************/
+bool RawDataViewer::setCorrectSlice(QMouseEvent* cEvent)
+{
+    if (!drawImpulse)
+        return false;
+    float cx = (float)cEvent->x() * pixelSize - shownSizex/2;
+    float cy = ((float)height()-(float)cEvent->y())*pixelSize - shownSizey/2;
+    if (cx < bboxMin[0] ||
+        cx > bboxMax[0] ||
+        cy < bboxMin[1] ||
+        cy > bboxMax[1])
+        return false;
+    whichSlice = (cx - bboxMin[0])*(nRoi+nRoiTM)/(bboxMax[0] - bboxMin[0]);
+    if (whichSlice >= nRoi)
+        whichSlice = nRoi-1;
+    emit signalCurrentSlice(whichSlice);
+    return true;
+}
+
+/************************************************************
+ * MOUSE MOVE EVENT. used to track the dragging of slices display
+ ************************************************************/
+void RawDataViewer::mouseMoveEvent(QMouseEvent *cEvent)
+{
+    if (cEvent->buttons() & Qt::LeftButton) {
+        setCorrectSlice(cEvent);
+        updateGL();
+    } else if (cEvent->buttons() & Qt::RightButton) {
+        updateGL();
+    }
+    lastPos = cEvent->pos();
+}
+
+/************************************************************
+ * MOUSE DOUBLE CLICK EVENT. used to select pixels
+ ************************************************************/
+void RawDataViewer::mouseDoubleClickEvent(QMouseEvent *cEvent)
+{
+    int face = PixelAtPosition(cEvent->pos());
+    if (face != -1) {
+        selectedPixel = face;
+        emit signalCurrentPixel(face);
+        updateGL();
+        }
+}
+
+/************************************************************
+ * OPEN FILE. opens a new fits file
+ ************************************************************/
+void RawDataViewer::openFile(string& file)
+{
+    if (inputFile)
+    {
+        inputFile->close();
+        delete inputFile;
+    }
+    try {
+    inputFile = new factfits(file, "Events");
+    }
+    catch (std::runtime_error e)
+    {
+        cout << "Something went wrong while loading fits. Aborting: " << e.what() << endl;
+        return;
+    }
+    if (!*inputFile)
+    {
+        delete inputFile;
+        inputFile = NULL;
+        return;
+    }
+    vector<string> entriesToCheck;
+    if (inputFile->IsCompressedFITS())
+        entriesToCheck.push_back("ZNAXIS2");
+    else
+        entriesToCheck.push_back("NAXIS2");
+    entriesToCheck.push_back("NROI");
+    entriesToCheck.push_back("REVISION");
+    entriesToCheck.push_back("RUNID");
+    entriesToCheck.push_back("NBOARD");
+    entriesToCheck.push_back("NPIX");
+    entriesToCheck.push_back("NROITM");
+    entriesToCheck.push_back("TIMESYS");
+    entriesToCheck.push_back("DATE");
+    entriesToCheck.push_back("NIGHT");
+    entriesToCheck.push_back("CAMERA");
+    entriesToCheck.push_back("DAQ");
+    entriesToCheck.push_back("TSTART");
+    entriesToCheck.push_back("TSTOP");
+
+
+    for (vector<string>::const_iterator it=entriesToCheck.begin(); it != entriesToCheck.end(); it++)
+    {
+        try {
+        if (!inputFile->HasKey(*it)){
+            cout << "Warning: header keyword " << *it << " missing." << endl;
+            }
+        }
+        catch (std::runtime_error e)
+        {
+            cout << e.what() << endl;
+            return;
+        }
+    }
+
+    nRows = 0;
+    if (inputFile->IsCompressedFITS())
+        nRows = inputFile->HasKey("ZNAXIS2") ? inputFile->GetInt("ZNAXIS2") : 0;
+    else
+        nRows = inputFile->HasKey("NAXIS2") ? inputFile->GetInt("NAXIS2") : 0;
+    nRoi =           inputFile->HasKey("NROI") ?  inputFile->GetInt("NROI") : 0;
+    runNumber =      inputFile->HasKey("RUNID") ?  inputFile->GetInt("RUNID") : -1;
+    nTM =            inputFile->HasKey("NTMARK") ? inputFile->GetInt("NTMARK") : 0;
+
+    runType = "unkown";
+    if (inputFile->HasKey("RUNTYPE"))
+    {
+        runType = inputFile->GetStr("RUNTYPE");
+        if (runType == "")
+            runType = "unkown";
+    }
+    firstDataTime =  inputFile->HasKey("TSTART") ? inputFile->GetInt("TSTART") : -1;
+    lastDataTime =   inputFile->HasKey("TSTOP") ? inputFile->GetInt("TSTOP"): -1;
+    nRoiTM =         inputFile->HasKey("NROITM") ? inputFile->GetInt("NROITM") : 0;
+    revision =       inputFile->HasKey("REVISION") ? inputFile->GetInt("REVISION") : -1;
+    builderVersion = inputFile->HasKey("BLDVER") ? inputFile->GetInt("BLDVER") : -1;
+    nBoards =        inputFile->HasKey("NBOARD") ? inputFile->GetInt("NBOARD") : 0;
+    nPixels =        inputFile->HasKey("NPIX") ?  inputFile->GetInt("NPIX") : 0;
+    timeSystem =     inputFile->HasKey("TIMESYS") ? inputFile->GetStr("TIMESYS") : "";
+    creationDate =   inputFile->HasKey("DATE") ? inputFile->GetStr("DATE") : "";
+    nightInt =       inputFile->HasKey("NIGHT") ? inputFile->GetInt("NIGHT") : 0;
+    camera =         inputFile->HasKey("CAMERA") ? inputFile->GetStr("CAMERA") : "";
+    daq =            inputFile->HasKey("DAQ") ? inputFile->GetStr("DAQ") : "";
+    adcCount =       inputFile->HasKey("ADCRANGE") ? inputFile->GetFloat("ADCRANGE") : 2000;
+    if (nPixels == 0)
+    {
+        cout << "could not read num pixels from fits header. Assuming 1440 (FACT)." << endl;
+        nPixels = 1440;
+    }
+    if (nRoi == 0 && !inputFile->HasKey("NROI"))
+    {//let's try to figure out the roi from the column's format
+        const fits::Table::Columns& cols = inputFile->GetColumns();
+        if (cols.find("Data") == cols.end())
+        {
+            cout << "ERROR: Column \"Data\" could not be found. abortin load." << endl;
+            return;
+        }
+        const fits::Table::Columns::const_iterator col = cols.find("Data");
+        if (col->second.type != 'I')
+        {
+            cout << "ERROR: Data Column has type " << col->second.type << " while viewer expects I" << endl;
+            return;
+        }
+        if (col->second.num % nPixels != 0)
+        {
+            cout << "ERROR: Num pixels (" << nPixels << ") does not match Data length (" << col->second.num << "). Aborting" << endl;
+            return;
+        }
+        nRoi = col->second.num/nPixels;
+        cout << "Estimate num samples per pixels to be " << nRoi;
+        _softwareOrdering = true;
+    }
+    else
+        _softwareOrdering = inputFile->Get<string>("ISMC", "F")=="T";
+
+    if (inputFile->HasKey("OFFSET"))
+        offSetRoi = inputFile->GetInt("OFFSET");
+
+    nbOk = 0;//inputFile->GetInt("NBEVTOK");
+    nbRej = 0;//inputFile->GetInt("NBEVTREJ");
+    nbBad = 0;//inputFile->GetInt("NBEVTBAD");
+
+    eventNum = 1;
+
+    if (eventData != NULL) {
+        delete[] eventData;
+        delete[] rawEventData;
+        delete[] waveLetArray;
+    }
+    eventData = new float[1440*nRoi + 160*nRoiTM];//(1440+160)*nRoi];
+
+    rawEventData = new int16_t[1440*nRoi + 160*nRoiTM];//(1440+160)*nRoi];
+    waveLetArray = new int16_t[1024*1440];
+    try
+    {
+        inputFile->SetPtrAddress("Data", rawEventData);
+        if (inputFile->HasColumn("EventNum"))
+            inputFile->SetPtrAddress("EventNum", &eventNum);
+        else
+            cout << "Warning: could not find column \"EventNum\"" << endl;
+        if (inputFile->HasColumn("TriggerType"))
+            inputFile->SetPtrAddress("TriggerType", &triggerType);
+        else
+            cout << "Warning: could not find column \"TriggerType\"" << endl;
+        if (inputFile->HasColumn("SoftTrig"))
+            inputFile->SetPtrAddress("SoftTrig", &softTrig);
+        else
+            cout << "Warning: could not find column \"SoftTrig\"" << endl;
+        if (inputFile->HasColumn("BoardTime"))
+            inputFile->SetPtrAddress("BoardTime", boardTime);
+        else
+            cout << "Warning: could not find column \"BoardTime\"" << endl;
+        if (inputFile->HasColumn("StartCellData"))
+            inputFile->SetPtrAddress("StartCellData", startPix);
+        else
+            cout << "Warning: could not find column \"StartCellData\"" << endl;
+        if (inputFile->HasColumn("StartCellTimeMarker"))
+            inputFile->SetPtrAddress("StartCellTimeMarker", startTM);
+        else
+            cout << "Warning: could not find column \"StartCellTimeMarker\"" << endl;
+        if (inputFile->HasColumn("TimeMarker"))
+            inputFile->SetPtrAddress("TimeMarker", &rawEventData[1440*nRoi]);
+        else
+            cout << "Warning: could not find column \"TimeMarker\"" << endl;
+    }
+    catch (const runtime_error &e)
+    {
+        cout << e.what() << endl;
+        cout << "Loading aborted." << endl;
+
+        nRoi = nRows = 0;
+
+        return;
+    }
+
+    try
+    {
+        pcTime[0] = pcTime[1] = 0;
+        if (inputFile->HasColumn("UnixTimeUTC"))
+            inputFile->SetPtrAddress("UnixTimeUTC", pcTime);
+    }
+    catch (const runtime_error&)
+    {
+            try
+        {
+            if (inputFile->HasColumn("PCTime"))
+                inputFile->SetPtrAddress("PCTime", pcTime);
+            else
+                cout << "Warning: could not find column \"UnixTimeUTC\" nor \"PCTime\"" << endl;
+
+        }
+        catch (const runtime_error&)
+        {
+
+        }
+    }
+
+
+    int backupStep = eventStep;
+    rowNum = -1;
+    eventStep = 1;
+
+    plusEvent();
+    eventStep = backupStep;
+    emit newFileLoaded();
+    emit signalCurrentPixel(selectedPixel);
+}
+
+void RawDataViewer::openCalibFile(string& file)
+{
+    //calibrationLoaded = false;
+    string msg;
+    try
+    {
+        msg = fDrsCalib.ReadFitsImp(file);
+        if (msg.empty())
+        {
+            emit newFileLoaded();
+            updateGL();
+            return;
+        }
+    }
+    catch (const runtime_error &e)
+    {
+        msg = string("Something went wrong while loading Drs Calib: ") + e.what() + string(".. Aborting file loading");
+    }
+    cerr << msg << endl;
+    fDrsCalib.Clear();
+}
+
+template <typename T>
+void RawDataViewer::getCalibrationDataForDisplay(const CalibDataTypes/* calibTypes*/,
+                                                 const vector<T>& inputData,
+                                                 const int roi,
+                                                 const int roiTM)
+{
+
+    eventData = new float[1440*roi + 160*roiTM];//(1440+160)*nRoi];
+    nRoi=roi;
+    nRoiTM=roiTM;
+
+    long long min, max, mean;
+    min = max = inputData[0];
+    mean=0;
+    for (int i=0;i<1440*roi + 160*roiTM;i++) {
+        eventData[i] = (float)inputData[i];
+        mean += inputData[i];
+        if (inputData[i] > max)
+            max = inputData[i];
+        if (inputData[i] < min)
+            min = inputData[i];
+    }
+    mean /= 1440*roi + 160*roiTM;
+    for (int i=0;i<1440*roi + 160*roiTM;i++)
+        eventData[i] -= (float)mean;
+    VALUES_SPAN = max - min;
+//    cout << VALUES_SPAN << " " << min << " " << max << " " << mean << endl;
+//    cout << 1440*roi + 160*roiTM << " " << roi << " " << roiTM << " " << inputData.size() << endl;
+}
+/************************************************************
+ * PLUS EVENT
+ ************************************************************/
+void RawDataViewer::plusEvent()
+{
+    eventStepping(true);
+}
+/************************************************************
+ * MINUS EVENT
+ ************************************************************/
+void RawDataViewer::minusEvent()
+{
+    eventStepping(false);
+}
+/************************************************************
+ * SET EVENT STEP
+ ************************************************************/
+void RawDataViewer::setEventStep(int step)
+{
+    eventStep = step;
+}
+/************************************************************
+ * EVENT STEPPING
+ ************************************************************/
+
+void RawDataViewer::ApplyCalibration()
+{
+    for (int i=0;i<1440*nRoi + 160*nRoiTM;i++)//(1440+160)*nRoi;i++)
+        eventData[i] = (float)rawEventData[i];
+
+    if (fIsDrsCalibration)
+    {
+        fDrsCalib.Apply(eventData, rawEventData, startPix, nRoi);
+        DrsCalibrate::RemoveSpikes(eventData, nRoi);
+        //TODO apply calibration to the Time markers
+    }
+
+    //hide the time markers
+    int nSlicesToRemove = 60;
+    float* backupData = 0;
+    if (nRoiTM == 0) //they are written into the regular channel
+    {
+        backupData = new float[nSlicesToRemove*160];
+        for (int i=0;i<1440;i++)
+        {
+            const PixelMapEntry& mapEntry = fPixelMap.index(i);
+            const int pixelIdInPatch = mapEntry.pixel();
+            const int patchId = mapEntry.patch();
+            const int boardId = mapEntry.board();
+            const int crateId = mapEntry.crate();
+
+            const int hw = mapEntry.hw();
+            if (pixelIdInPatch == 8)
+            {
+                for (int j=0;j<nSlicesToRemove;j++)
+                {
+                    backupData[(40*crateId + 4*boardId + patchId)*nSlicesToRemove+j] = eventData[(hw*nRoi) + (nRoi-nSlicesToRemove) + j];
+                    eventData[(hw*nRoi) + (nRoi-nSlicesToRemove) + j] = eventData[hw*nRoi + (nRoi-nSlicesToRemove) - 1];
+                }
+            }
+        }
+    }
+
+    vector<float> pixelStatsData(1440*4);
+    DrsCalibrate::GetPixelStats(pixelStatsData.data(), eventData, nRoi);
+
+    for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+    {
+        Meanvalues[it->index]     = pixelStatsData[0*1440+it->hw()];
+        RMSvalues[it->index]      = pixelStatsData[1*1440+it->hw()];
+        Maxvalues[it->index]      = pixelStatsData[2*1440+it->hw()];
+        PosOfMaxvalues[it->index] = pixelStatsData[3*1440+it->hw()];
+    }
+    if (nRoiTM == 0)//move back the data back in place
+    {
+        for (int i=0;i<1440;i++)
+        {
+            const PixelMapEntry& mapEntry = fPixelMap.index(i);
+            const int pixelIdInPatch = mapEntry.pixel();
+            const int patchId = mapEntry.patch();
+            const int boardId = mapEntry.board();
+            const int crateId = mapEntry.crate();
+            if (patchId > 160)
+                cout << "Voila mon probleme: " << patchId << endl;
+            const int hw = mapEntry.hw();
+            if (pixelIdInPatch == 8)
+            {
+ //               cout << "|" << crateId << " " << boardId << " " << patchId << " " << hw << "| ";
+                for (int j=0;j<nSlicesToRemove;j++)
+                {
+                    eventData[(hw*nRoi) + (nRoi - nSlicesToRemove) + j] = backupData[(40*crateId + 4*boardId + patchId)*nSlicesToRemove+j];
+                }
+            }
+        }
+        delete[] backupData;
+    }
+    if (isVisible())
+        updateGL();
+}
+
+void RawDataViewer::eventStepping(bool plus)
+{
+    if (plus)
+        rowNum += eventStep;
+    else
+        rowNum -= eventStep;
+    if (rowNum >= nRows)
+        rowNum -= nRows;
+    if (rowNum < 0)
+        rowNum += nRows;
+
+    if (inputFile == NULL)
+        return;
+    inputFile->GetRow(rowNum);
+    if (_softwareOrdering)
+    {//remap pixels data according to hardware id
+        if (nRoiTM != 0)
+            cout << "Warning: did not expect Time Markers data from Monte-Carlo simulations. These will not be mapped properly." << endl;
+        //first copy the data
+        int16_t* tempData = new int16_t[1440*nRoi];
+        for (int i=0;i<1440*nRoi;i++)
+            tempData[i] = rawEventData[i];
+        //copy back the data and re-map it on the fly
+        for (int i=0;i<1440;i++)
+            for (int j=0;j<nRoi;j++)
+                rawEventData[i*nRoi + j] = tempData[softwareMapping[i]*nRoi + j];
+
+        delete[] tempData;
+    }
+//    cout << "Getting row " << rowNum << endl;
+
+
+    ApplyCalibration();
+
+    emit signalCurrentEvent(eventNum);
+    emit signalCurrentPixel(selectedPixel);
+}
+
+/************************************************************
+ * NEXT SLICE. deprec ?
+ ************************************************************/
+void RawDataViewer::nextSlice()
+{
+    whichSlice++;
+    if (whichSlice >= nRoi)
+    {
+        whichSlice = 0;
+        if (!loopCurrentEvent)
+        {
+            int backupStep = eventStep;
+            eventStep = 1;
+            eventStepping(true);
+            eventStep = backupStep;
+        }
+    }
+    emit signalCurrentSlice(whichSlice);
+    updateGL();
+}
+void RawDataViewer::previousSlice()
+{
+    whichSlice--;
+    if (whichSlice < 0)
+    {
+        whichSlice = nRoi-1;
+        if (!loopCurrentEvent)
+        {
+            int backupStep = eventStep;
+            eventStep = 1;
+            eventStepping(false);
+            eventStep = backupStep;
+        }
+    }
+    emit signalCurrentSlice(whichSlice);
+    updateGL();
+}
+void RawDataViewer::setCurrentPixel(int pix)
+{
+ //   if (pix == -1)
+ //       return;
+    selectedPixel = pix;
+    if (isVisible())
+    updateGL();
+     emit signalCurrentPixel(pix);
+}
+void RawDataViewer::computePulsesStatistics()
+{
+    if (!inputFile)
+    {
+        cout << "A FITS file must be open in order to complete this operation" << endl;
+        return;
+    }
+
+
+//    for (int i=0;i<nRows;i++)//for all events
+//    {
+//        inputFile->GetRow(rowNum);
+//        for (int i=0;i<(1440+160)*nRoi;i++)
+//            eventData[i] = (float)rawEventData[i];
+
+//        for (int j=0;j<ACTUAL_NUM_PIXELS;j++)
+///        {
+    int j = selectedPixel;
+    if (j == -1)
+        return;
+            for (int i=0;i<nRoi;i++)
+            {
+                aMeas[i] = eventData[j*nRoi+i];// * adcCount;
+
+            }
+            for (int i=0;i<nRoi;i++)
+            {
+                if (i==0)
+                    n1mean[i] = aMeas[i+1];
+                else
+                {
+                    if (i==1023)
+                        n1mean[i] = aMeas[i-1];
+                    else
+                        n1mean[i] = (aMeas[i-1]+aMeas[i+1])/2.f;
+                }
+            }
+            //find spike
+            for (int i=0;i<nRoi-3;i++)
+            {
+                const float fract = 0.8f;
+                float xx, xp, xpp;
+                vCorr[i] = 0;//aMeas[i];
+                xx = aMeas[i] - n1mean[i];
+                if (xx < -8.f)
+                {
+                    xp = aMeas[i+1] - n1mean[i+1];
+                    xpp = aMeas[i+2] - n1mean[i+2];
+                    if ((aMeas[i+2] - (aMeas[i] + aMeas[i+3])/2.f) > 10.f)
+                    {
+                        vCorr[i+1] = (aMeas[i] + aMeas[i+3])/2.f;
+                        vCorr[i+2] = (aMeas[i] + aMeas[i+3])/2.f;
+                        i = i+2;
+                    }
+                    else
+                    {
+                        if ((xp > -2.*xx*fract) && (xpp < -10.f))
+                        {
+                            vCorr[i+1] = n1mean[i+1];
+                            n1mean[i+2] = aMeas[i+1] - aMeas[i+3]/2.f;
+                            i++;
+                        }
+                    }
+                }
+            }
+            for (int i=0;i<nRoi;i++)
+                n1mean[i] = aMeas[i]-n1mean[i];
+ //       }
+ //   }
+}
+/************************************************************
+ * UICONNECTOR CONSTRUCTOR
+ ************************************************************/
+UIConnector::UIConnector(QWidget *p)
+{
+    setupUi(this);
+    initHistograms();
+
+    currentFile = "none";
+    currentCalibFile = "none";
+
+    updateSpinnerDisplay = true;
+    updating = false;
+
+    timer.setInterval(10.0);
+    QObject::connect(&timer, SIGNAL(timeout()),
+                     this, SLOT(nextSlicePlease()));
+
+    QButtonGroup &scaleGroup = *new QButtonGroup(p);// = new QButtonGroup(canvas);
+    QButtonGroup &animateGroup = *new QButtonGroup(p);// = new QButtonGroup(canvas);
+
+    scaleGroup.addButton(currentPixelScale);
+    scaleGroup.addButton(entireCameraScale);
+
+    animateGroup.addButton(playEventsRadio);
+    animateGroup.addButton(playSlicesRadio);
+    animateGroup.addButton(playPixelsRadio);
+
+    entireCameraScale->setChecked(true);
+
+    RMS_window->enableText(false);
+    Mean_window->enableText(false);
+    PosOfMax_window->enableText(false);
+    Max_window->enableText(false);
+
+ //   RMS_window->ShowPatchCursor(true);
+
+    QObject::connect(GLWindow, SIGNAL(colorPaletteHasChanged()),
+                     this, SLOT(on_autoScaleColor_clicked()));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentSlice(int)),
+                     this, SLOT(currentSliceHasChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentEvent(int)),
+                     this, SLOT(currentEventHasChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentPixel(int)),
+                     this, SLOT(pixelChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(newFileLoaded()),
+                     this, SLOT(newFileLoaded()));
+
+    QObject::connect(RMS_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(Max_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(PosOfMax_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(Mean_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+
+
+
+    show();
+}
+UIConnector::~UIConnector()
+{
+    grid1->detach();
+    grid2->detach();
+    grid3->detach();
+    grid4->detach();
+    grid5->detach();
+    grid6->detach();
+    boardsTimeHistoItem.detach();
+    startCellHistoItem.detach();
+    startTimeMarkHistoItem.detach();
+    pixelValueCurveItem.detach();
+    pixelAverageCurveItem.detach();
+    aMeanCurveItem.detach();
+    vCorrCurveItem.detach();
+    meanCurveItem.detach();
+}
+void UIConnector::slicesPlusPlus()
+{
+    GLWindow->nextSlice();
+}
+void UIConnector::slicesMinusMinus()
+{
+    GLWindow->previousSlice();
+}
+void UIConnector::on_calibratedCheckBox_stateChanged(int state)
+{
+    GLWindow->fIsDrsCalibration = state;
+    GLWindow->ApplyCalibration();
+    threeD_Window->setData(GLWindow->eventData);
+
+    on_autoScaleColor_clicked();
+    pixelChanged(GLWindow->selectedPixel);
+
+}
+/************************************************************
+ * DRAW PATCHES CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawPatchCheckBox_stateChanged(int state)
+{
+    GLWindow->drawPatch = state;
+    GLWindow->updateGL();
+    RMS_window->fDrawPatch = state;
+    RMS_window->updateGL();
+    Mean_window->fDrawPatch = state;
+    Mean_window->updateGL();
+    Max_window->fDrawPatch = state;
+    Max_window->updateGL();
+    PosOfMax_window->fDrawPatch = state;
+    PosOfMax_window->updateGL();
+}
+/************************************************************
+ * DRAW IMPULSE CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawImpulseCheckBox_stateChanged(int state)
+{
+    GLWindow->drawImpulse = state;
+    TriggerOffset_window->drawImpulse = state;
+    Gain_window->drawImpulse = state;
+    Baseline_window->drawImpulse = state;
+    GLWindow->updateGL();
+    TriggerOffset_window->updateGL();
+    Gain_window->updateGL();
+    Baseline_window->updateGL();
+}
+/************************************************************
+ * DRAW BLUR CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawBlurCheckBox_stateChanged(int state)
+{
+    GLWindow->drawBlur = state;
+    GLWindow->updateGL();
+}
+void UIConnector::on_loopOverCurrentEventBox_stateChanged(int state)
+{
+    GLWindow->loopCurrentEvent = state;
+}
+
+/************************************************************
+ * NEXT SLICE PLEASE
+ ************************************************************/
+void UIConnector::nextSlicePlease()
+{
+    if (playEventsRadio->isChecked ())
+        GLWindow->eventStepping(true);
+    else
+        if (playPixelsRadio->isChecked())
+            GLWindow->setCurrentPixel((GLWindow->getCurrentPixel()+1)%1440);
+        else
+            GLWindow->nextSlice();
+}
+
+/************************************************************
+ * SET VIEWER.
+ ************************************************************/
+//void UIConnector::setViewer(RawDataViewer* v)
+//{
+//    viewer = v;
+//}
+/************************************************************
+ * SLICES PER SECOND CHANGED. timing ui handler
+ ************************************************************/
+void UIConnector::slicesPerSecondChanged(double value)
+{
+    timer.setInterval(1000.0/value);
+}
+
+void UIConnector::on_colorRange0_valueChanged(double value) { GLWindow->ss[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange1_valueChanged(double value) { GLWindow->ss[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange2_valueChanged(double value) { GLWindow->ss[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange3_valueChanged(double value) { GLWindow->ss[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange4_valueChanged(double value) { GLWindow->ss[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_redValue0_valueChanged(double value) { GLWindow->rr[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue1_valueChanged(double value) { GLWindow->rr[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue2_valueChanged(double value) { GLWindow->rr[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue3_valueChanged(double value) { GLWindow->rr[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue4_valueChanged(double value) { GLWindow->rr[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_greenValue0_valueChanged(double value) { GLWindow->gg[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue1_valueChanged(double value) { GLWindow->gg[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue2_valueChanged(double value) { GLWindow->gg[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue3_valueChanged(double value) { GLWindow->gg[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue4_valueChanged(double value) { GLWindow->gg[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_blueValue0_valueChanged(double value) { GLWindow->bb[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue1_valueChanged(double value) { GLWindow->bb[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue2_valueChanged(double value) { GLWindow->bb[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue3_valueChanged(double value) { GLWindow->bb[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue4_valueChanged(double value) { GLWindow->bb[4] = (float)value; GLWindow->updateGL(); }
+
+/************************************************************
+ * LOAD NEW FILE CLICKED. button handler
+ ************************************************************/
+void UIConnector::on_loadNewFileButton_clicked()
+{
+    QFileDialog dialog;
+    dialog.setFileMode(QFileDialog::ExistingFile);
+    dialog.open(this, SLOT(fileSelected(QString)));
+    dialog.setVisible(true);
+    dialog.exec();
+}
+void UIConnector::on_loadDRSCalibButton_clicked()
+{
+    QFileDialog dialog;
+    dialog.setFileMode(QFileDialog::ExistingFile);
+    dialog.open(this, SLOT(calibFileSelected(QString)));
+    dialog.setVisible(true);
+    dialog.exec();
+}
+/************************************************************
+ * FILE SELECTED. return of the file open dialog handler
+ ************************************************************/
+void UIConnector::fileSelected(QString file)
+{
+    currentFile = file.toStdString();
+    if (currentFile != "")
+        GLWindow->openFile(currentFile);
+}
+void UIConnector::calibFileSelected(QString file)
+{
+    currentCalibFile = file.toStdString();
+    if (currentCalibFile != "")
+        GLWindow->openCalibFile(currentCalibFile);
+    if (GLWindow->fDrsCalib.fRoi != 0)
+    {//spread the calibration data to the displayers
+        Baseline_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_BASELINE,
+                                                      GLWindow->fDrsCalib.fOffset,
+                                                      GLWindow->fDrsCalib.fRoi,
+                                                      GLWindow->fDrsCalib.fNumTm);
+
+        Gain_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_GAIN,
+                                                  GLWindow->fDrsCalib.fGain,
+                                                  GLWindow->fDrsCalib.fRoi,
+                                                  GLWindow->fDrsCalib.fNumTm);
+
+        TriggerOffset_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_TRIG_OFFSET,
+                                                           GLWindow->fDrsCalib.fTrgOff,
+                                                           GLWindow->fDrsCalib.fRoi,
+                                                           GLWindow->fDrsCalib.fNumTm);
+
+    }
+}
+/************************************************************
+ * NEW FILE LOADED. update of the UI after a new file has been loaded
+ ************************************************************/
+void UIConnector::newFileLoaded()
+{
+    ostringstream str;
+
+    //extract the file name only (no path) from the full name
+    str << "File: ";
+    if (currentFile.size() > 2)
+        str << currentFile.substr(currentFile.find_last_of("//")+1, currentFile.size()) << "\n";
+    else
+        str << "--\n";
+    str << "Calibration: ";
+    if (currentCalibFile.size() > 2)
+        str << currentCalibFile.substr(currentCalibFile.find_last_of("//")+1, currentCalibFile.size()) << "\n";
+    else
+        str << "--\n";
+//    fileLoadedLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Run number: " << GLWindow->runNumber << "\n";
+//    runNumberLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Number of Events: " << GLWindow->nRows << "\n";
+
+    displayingEventBox->setMaximum(GLWindow->nRows-1);
+
+    str << "Number of Slices: " << GLWindow->nRoi << "\n";// << "/1024";
+//    numberOfSlicesLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Number of Time Marks: " << GLWindow->nTM << "\n";
+//    numberOfTimeMarksLabel->setText(QString(str.str().c_str()));
+
+//    str.str("");
+    str << "Run Type: " << GLWindow->runType << "\n";
+//    runTypeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Time of 1st data: " << GLWindow->firstDataTime << "\n";
+//    firstTimeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Time of last data: " << GLWindow->lastDataTime << "\n";
+//    lastTimeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "SVN revision: " << GLWindow->revision << '\n';
+    str << "Number of boards: " << GLWindow->nBoards << '\n';
+    str << "Number of pixels: " << GLWindow->nPixels << '\n';
+    str << "Number of Slices TM: " << GLWindow->nRoiTM << '\n';
+    str << "Time system: " << GLWindow->timeSystem << '\n';
+    str << "Date: " << GLWindow->creationDate << '\n';
+    str << "Night: " << GLWindow->nightInt << '\n';
+    str << "Camera: " << GLWindow->camera << '\n';
+    str << "DAQ: " << GLWindow->daq << '\n';
+    str << "ADC Count: " << GLWindow->adcCount << '\n';
+    str << "NB Evts OK:" << GLWindow->nbOk << '\n';
+    str << "NB Evts Rejected: " << GLWindow->nbRej << '\n';
+    str << "NB Evts Bad: " << GLWindow->nbBad << '\n';
+    extraInfoLabel->setText(QString(str.str().c_str()));
+
+    /*
+    if (GLWindow->calibrationLoaded)
+    {
+        drawCalibrationCheckBox->setEnabled(true);
+    }*/
+
+
+}
+/************************************************************
+ * PLAY PAUSE CLICKED. ui handler
+ ************************************************************/
+void UIConnector::on_playPauseButton_clicked()
+{
+    if (timer.isActive())
+        timer.stop();
+    else
+        timer.start();
+}
+
+void UIConnector::displaySliceValue()
+{
+    if (!GLWindow->nRoi)
+        return;
+    if (GLWindow->selectedPixel == -1)
+    {
+        ostringstream str;
+        str << " Current Pixel val.: --";
+        currentPixelValue->setText(QString(str.str().c_str()));
+        return;
+    }
+//    int mapping = GLWindow->_softwareOrdering ? GLWindow->selectedPixel : GLWindow->hardwareMapping[GLWindow->selectedPixel];
+    int mapping = GLWindow->hardwareMapping[GLWindow->selectedPixel];
+    const int idx = GLWindow->nRoi*mapping + GLWindow->whichSlice;
+
+    ostringstream str;
+    str << "Current Pixel val.: " << GLWindow->eventData[idx];
+    currentPixelValue->setText(QString(str.str().c_str()));
+}
+
+/************************************************************
+ * CURRENT SLICE HAS CHANGE. ui handler
+ ************************************************************/
+void UIConnector::currentSliceHasChanged(int slice)
+{
+    if (!GLWindow->nRoi)
+        return;
+
+    if (updateSpinnerDisplay)
+        displayingSliceBox->setValue(slice);
+
+    displaySliceValue();
+}
+
+/*****
+ *******************************************************
+ * CURRENT EVENT HAS CHANGED. ui handler
+ ************************************************************/
+
+double xval[50000];
+double yval[50000];
+void UIConnector::on_displayingEventBox_valueChanged(int cEvent)
+{
+//    cout << "Here " << updateSpinnerDisplay << endl;
+    if (!updateSpinnerDisplay)
+        return;
+    updateSpinnerDisplay = false;
+//    currentEventHasChanged(cEvent);
+    GLWindow->rowNum = cEvent - GLWindow->eventStep;
+    GLWindow->eventStepping(true);
+    updateSpinnerDisplay = true;
+
+//    GLWindow->updateGL();
+}
+void UIConnector::on_slicesPerSecValue_valueChanged(double value)
+{
+    timer.setInterval(1000.0/value);
+}
+void UIConnector::on_displayingSliceBox_valueChanged(int cSlice)
+{
+    updateSpinnerDisplay = false;
+    currentSliceHasChanged(cSlice);
+    updateSpinnerDisplay = true;
+    GLWindow->whichSlice = cSlice;
+    GLWindow->updateGL();
+}
+void UIConnector::currentEventHasChanged(int )
+{
+
+    RMS_window->SetData(GLWindow->RMSvalues);
+    Mean_window->SetData(GLWindow->Meanvalues);
+    PosOfMax_window->SetData(GLWindow->PosOfMaxvalues);
+    Max_window->SetData(GLWindow->Maxvalues);
+    threeD_Window->setData(GLWindow->eventData);//rawEventData);
+
+    if (RMS_window->isVisible())
+        RMS_window->updateGL();
+    if (Mean_window->isVisible())
+        Mean_window->updateGL();
+    if (PosOfMax_window->isVisible())
+        PosOfMax_window->updateGL();
+    if (Max_window->isVisible())
+        Max_window->updateGL();
+    ostringstream str;
+//    str << "Displaying Event " << cEvent;
+//    QString qstr(str.str().c_str());
+//    emit updateCurrentEventDisplay(qstr);
+    if (updateSpinnerDisplay)
+    {
+        updateSpinnerDisplay = false;
+        displayingEventBox->setValue(GLWindow->rowNum);
+        updateSpinnerDisplay = true;
+    }
+
+ //   GLWindow->doWaveLetOnCurrentEventPlease();
+
+        //retrieve the data that we want to display
+    boost::posix_time::ptime hrTime( boost::gregorian::date(1970, boost::gregorian::Jan, 1),
+            boost::posix_time::seconds(GLWindow->pcTime[0]) +  boost::posix_time::microsec(GLWindow->pcTime[1]));
+
+    str.str("");
+    str << "PC Time: " << boost::posix_time::to_iso_extended_string(hrTime);
+    PCTimeLabel->setText(QString(str.str().c_str()));
+
+    str.str("");
+    str << "Software Trigger: " << GLWindow->softTrig;
+    softwareTriggerLabel->setText(QString(str.str().c_str()));
+
+    str.str("");
+    str << "Trigger Type: " << GLWindow->triggerType;
+    triggerTypeLabel->setText(QString(str.str().c_str()));
+
+    displaySliceValue();
+
+    if (autoScaleColor->isChecked())
+        emit GLWindow->colorPaletteHasChanged();//autoScalePressed();
+
+    boardsTimeList->clear();
+    startPixelsList->clear();
+    startTimeMarksList->clear();
+    triggerDelayList->clear();
+    std::map<int, int> boardsHistoMap;
+    for (int i=0;i <NBOARDS; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->boardTime[i];
+        boardsTimeList->addItem(QString(str.str().c_str()));
+        if (boardsHistoMap.find(GLWindow->boardTime[i]) != boardsHistoMap.end())
+            boardsHistoMap[GLWindow->boardTime[i]]++;
+        else
+            boardsHistoMap[GLWindow->boardTime[i]] = 1;
+    }
+    std::map<int, int> pixelHistoMap;
+    for (int i=0;i <NPIX; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->startPix[i];
+        startPixelsList->addItem(QString(str.str().c_str()));
+        if (pixelHistoMap.find(GLWindow->startPix[i]) != pixelHistoMap.end())
+            pixelHistoMap[GLWindow->startPix[i]]++;
+        else
+            pixelHistoMap[GLWindow->startPix[i]] = 1;
+    }
+
+    std::map<int, int> timeMarksMap;
+    for (int i=0;i <NTMARK; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->startTM[i];
+        startTimeMarksList->addItem(QString(str.str().c_str()));
+        if (timeMarksMap.find(GLWindow->startTM[i]) != timeMarksMap.end())
+            timeMarksMap[GLWindow->startTM[i]]++;
+        else
+            timeMarksMap[GLWindow->startTM[i]] = 1;
+    }
+    std::map<int,int> delayMap;
+    triggerDelayList->addItem(QString("Patch | Slice:Delay Slice:Delay..."));
+    for (int i=0;i<NTMARK; i++)
+    {
+        str.str("");
+        str << i << " | ";
+        for (int j=0;j<GLWindow->nRoi;j++)
+        {
+            int value = GLWindow->eventData[1440*GLWindow->nRoi + i*GLWindow->nRoi + j];
+            if (delayMap.find(value) != delayMap.end())
+                 delayMap[value]++;
+             else
+                 delayMap[value] = 1;
+            str << j << ":" << value << " ";
+         }
+        triggerDelayList->addItem(QString(str.str().c_str()));
+    }
+
+    std::map<int,int>::iterator it = boardsHistoMap.begin();
+    int nsamples = 0;
+    int previousValue = it->first-10;
+    for (unsigned int i=0;i<boardsHistoMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==boardsHistoMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+ //   if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       boardsTimeHistoItem.setData(xval, yval, nsamples);
+#else
+       boardsTimeHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = pixelHistoMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<pixelHistoMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+   }
+    xval[nsamples] = it==pixelHistoMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+//    if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       startCellHistoItem.setData(xval, yval, nsamples);
+#else
+       startCellHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = timeMarksMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<timeMarksMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==timeMarksMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+ //   if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       startTimeMarkHistoItem.setData(xval, yval, nsamples);
+#else
+       startTimeMarkHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = delayMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<delayMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==delayMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+  //  if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       triggerDelayHistoItem.setData(xval, yval, nsamples);
+#else
+       triggerDelayHistoItem.setSamples(xval, yval, nsamples);
+#endif
+       //WAVELETS HACK
+/*       std::map<int, int> valuesHistoMap;
+       std::map<int, int> waveletHistoMap;
+       for (int i=0;i<1024*1440;i++)
+       {
+           if (valuesHistoMap.find(GLWindow->rawEventData[i]) != valuesHistoMap.end())
+               valuesHistoMap[GLWindow->rawEventData[i]]++;
+           else
+               valuesHistoMap[GLWindow->rawEventData[i]] = 1;
+           if (waveletHistoMap.find(GLWindow->waveLetArray[i]) != waveletHistoMap.end())
+               waveletHistoMap[GLWindow->waveLetArray[i]]++;
+           else
+               waveletHistoMap[GLWindow->waveLetArray[i]] = 1;
+       }
+
+       it = valuesHistoMap.begin();
+       nsamples = 0;
+       previousValue = it->first-10;
+       cout << "Num values Original: " << valuesHistoMap.size() << endl;
+       for (unsigned int i=0;i<valuesHistoMap.size();i++)
+       {
+           if (previousValue != it->first-1)
+           {
+               xval[nsamples] = previousValue+1;
+               yval[nsamples] = 0;
+               nsamples++;
+               xval[nsamples] = it->first-1;
+               yval[nsamples] = 0;
+               nsamples++;
+           }
+           xval[nsamples] = it->first;
+           yval[nsamples] = it->second;
+           previousValue = it->first;
+           it++;
+           nsamples++;
+           xval[nsamples] = previousValue;
+           yval[nsamples] = 0;
+           nsamples++;
+           if (nsamples > 50000)
+           {
+               cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+               break;
+           }
+       }
+       xval[nsamples] = it==valuesHistoMap.begin() ? 0 : (--it)->first+1;
+       yval[nsamples] = 0;
+       nsamples++;
+     //  if (nsamples > 5)
+   #if QWT_VERSION < 0x060000
+          triggerDelayHistoItem.setData(xval, yval, nsamples);
+   #else
+          triggerDelayHistoItem.setSamples(xval, yval, nsamples);
+   #endif
+
+          it = waveletHistoMap.begin();
+          nsamples = 0;
+          previousValue = it->first-10;
+          cout << "Num values WaveLets: " << waveletHistoMap.size() << endl;
+          for (unsigned int i=0;i<waveletHistoMap.size();i++)
+          {
+              if (previousValue != it->first-1)
+              {
+                  xval[nsamples] = previousValue+1;
+                  yval[nsamples] = 0;
+                  nsamples++;
+                  xval[nsamples] = it->first-1;
+                  yval[nsamples] = 0;
+                  nsamples++;
+              }
+              xval[nsamples] = it->first;
+              yval[nsamples] = it->second;
+              previousValue = it->first;
+              it++;
+              nsamples++;
+              xval[nsamples] = previousValue;
+              yval[nsamples] = 0;
+              nsamples++;
+              if (nsamples > 50000)
+              {
+                  cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+                  break;
+              }
+          }
+          xval[nsamples] = it==waveletHistoMap.begin() ? 0 : (--it)->first+1;
+          yval[nsamples] = 0;
+          nsamples++;
+        //  if (nsamples > 5)
+      #if QWT_VERSION < 0x060000
+          startTimeMarkHistoItem.setData(xval, yval, nsamples);
+      #else
+          startTimeMarkHistoItem.setSamples(xval, yval, nsamples);
+      #endif
+*/
+//END OF WAVELETS HACK
+       //    startCellHistoZoom->setZoomBase(startCellHistoItem.boundingRect());
+    QStack< QRectF > stack;
+//    QRectF cRectangle = boardsTimeHistoItem.boundingRect();
+    stack.push(scaleBoundingRectangle(boardsTimeHistoItem.boundingRect(), 1.05f));//cRectangle);//boardsTimeHistoItem.boundingRect());
+    boardsTimeHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(startCellHistoItem.boundingRect(), 1.05f));
+    startCellHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(startTimeMarkHistoItem.boundingRect(), 1.05f));
+    startTimeMarkHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(triggerDelayHistoItem.boundingRect(), 1.05f));
+    triggerDelayHistoZoom->setZoomStack(stack);
+    stack.pop();
+
+    pixelChanged(GLWindow->selectedPixel);
+}
+//can't use a ref to rectangle, as the type must be converted first
+QRectF UIConnector::scaleBoundingRectangle(QRectF rectangle, float scale)
+{
+    QPointF bottomRight = rectangle.bottomRight();
+    QPointF topLeft = rectangle.topLeft();
+    QPointF center = rectangle.center();
+    return QRectF(topLeft + (topLeft-center)*(scale-1.0f), //top left
+                  bottomRight + (bottomRight-center)*(scale-1.0f)); //bottom right
+}
+void UIConnector::initHistograms()
+{
+//    QwtPlot*     boardsTimeHisto;
+//    QwtPlotHistogram boardsTimeHistoItem;
+    grid1 = new QwtPlotGrid;
+    grid1->enableX(false);
+    grid1->enableY(true);
+    grid1->enableXMin(false);
+    grid1->enableYMin(false);
+    grid1->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid1->attach(boardsTimeHisto);
+
+    grid2 = new QwtPlotGrid;
+    grid2->enableX(false);
+    grid2->enableY(true);
+    grid2->enableXMin(false);
+    grid2->enableYMin(false);
+    grid2->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid2->attach(startCellsHisto);
+
+    grid3 = new QwtPlotGrid;
+    grid3->enableX(false);
+    grid3->enableY(true);
+    grid3->enableXMin(false);
+    grid3->enableYMin(false);
+    grid3->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid3->attach(startTimeMarkHisto);
+
+    grid4 = new QwtPlotGrid;
+    grid4->enableX(false);
+    grid4->enableY(true);
+    grid4->enableXMin(false);
+    grid4->enableYMin(false);
+    grid4->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid4->attach(pixelValueCurve);
+
+    grid6 = new QwtPlotGrid;
+    grid6->enableX(false);
+    grid6->enableY(true);
+    grid6->enableXMin(false);
+    grid6->enableYMin(false);
+    grid6->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid6->attach(pixelAverageCurve);
+
+    grid5 = new QwtPlotGrid;
+    grid5->enableX(false);
+    grid5->enableY(true);
+    grid5->enableXMin(false);
+    grid5->enableYMin(false);
+    grid5->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid5->attach(triggerDelayHisto);
+
+    boardsTimeHisto->setAutoReplot(true);
+    startCellsHisto->setAutoReplot(true);
+    startTimeMarkHisto->setAutoReplot(true);
+    pixelValueCurve->setAutoReplot(true);
+    pixelAverageCurve->setAutoReplot(true);
+    triggerDelayHisto->setAutoReplot(true);
+    boardsTimeHisto->setTitle("Boards time values");
+    startCellsHisto->setTitle("Start Cell values");
+    startTimeMarkHisto->setTitle("Start Time Marks values");
+    pixelValueCurve->setTitle("Current pixel values");
+    pixelAverageCurve->setTitle("Average pixels values");
+    triggerDelayHisto->setTitle("Trigger Delays");
+
+ //   boardsTimeHistoItem.setBrush(QBrush(Qt::red));
+//    startCellHistoItem.setBrush(QBrush(Qt::red));
+//    startTimeMarkHistoItem.setBrush(QBrush(Qt::red));
+//    triggerDelayHistoItem.setBrush(QBrush(Qt::red));
+//    pixelValueCurveItem.setBrush(QBrush(Qt::red));
+
+    boardsTimeHistoItem.setPen(QColor(Qt::darkGreen));
+    boardsTimeHistoItem.setStyle(QwtPlotCurve::Steps);
+    startCellHistoItem.setPen(QColor(Qt::darkGreen));
+    startCellHistoItem.setStyle(QwtPlotCurve::Steps);
+    startTimeMarkHistoItem.setPen(QColor(Qt::darkGreen));
+    startTimeMarkHistoItem.setStyle(QwtPlotCurve::Steps);
+    triggerDelayHistoItem.setPen(QColor(Qt::darkGreen));
+    triggerDelayHistoItem.setStyle(QwtPlotCurve::Steps);
+
+    boardsTimeHistoItem.attach(boardsTimeHisto);
+    startCellHistoItem.attach(startCellsHisto);
+    startTimeMarkHistoItem.attach(startTimeMarkHisto);
+    triggerDelayHistoItem.attach(triggerDelayHisto);
+
+    //curve
+//    pixelValueCurveItem.setSymbol(new QwtSymbol(QwtSymbol::Cross, Qt::NoBrush, QPen(Qt::black), QSize(5,5)));
+    pixelValueCurveItem.setPen(QColor(Qt::black));
+    pixelAverageCurveItem.setPen(QColor(Qt::black));
+    aMeanCurveItem.setPen(QColor(Qt::darkGreen));
+    vCorrCurveItem.setPen(QColor(Qt::red));
+    meanCurveItem.setPen(QColor(Qt::blue));
+    pixelValueCurveItem.setStyle(QwtPlotCurve::Lines);
+    pixelAverageCurveItem.setStyle(QwtPlotCurve::Lines);
+    aMeanCurveItem.setStyle(QwtPlotCurve::Lines);
+    vCorrCurveItem.setStyle(QwtPlotCurve::Lines);
+    meanCurveItem.setStyle(QwtPlotCurve::Lines);
+
+//    pixelValueCurveItem.setCurveAttribute(QwtPlotCurve::Fitted);
+    pixelValueCurveItem.attach(pixelValueCurve);
+    pixelAverageCurveItem.attach(pixelAverageCurve);
+//    aMeanCurveItem.attach(pixelValueCurve);
+ //   vCorrCurveItem.attach(pixelValueCurve);
+//    meanCurveItem.attach(pixelValueCurve);
+
+    //FIXME delete these pointers with the destructor
+    curveZoom = new QwtPlotZoomer(pixelValueCurve->canvas());
+    curveZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    curveZoom->setTrackerPen(QPen(Qt::gray));
+    averageCurveZoom = new QwtPlotZoomer(pixelAverageCurve->canvas());
+    averageCurveZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    averageCurveZoom->setTrackerPen(QPen(Qt::gray));
+
+    boardsTimeHistoZoom = new QwtPlotZoomer(boardsTimeHisto->canvas());
+    boardsTimeHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    boardsTimeHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    startCellHistoZoom = new QwtPlotZoomer(startCellsHisto->canvas());
+    startCellHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    startCellHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    startTimeMarkHistoZoom = new QwtPlotZoomer(startTimeMarkHisto->canvas());
+    startTimeMarkHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    startTimeMarkHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    triggerDelayHistoZoom = new QwtPlotZoomer(triggerDelayHisto->canvas());
+    triggerDelayHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    triggerDelayHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+
+}
+
+void UIConnector::pixelChanged(int pixel)
+{
+    RMS_window->fWhite = pixel;
+    Mean_window->fWhite = pixel;
+    Max_window->fWhite = pixel;
+    PosOfMax_window->fWhite = pixel;
+    if (pixel != -1)
+    {
+        RMS_window->fWhitePatch = RMS_window->pixelsPatch[pixel];
+        Mean_window->fWhitePatch = Mean_window->pixelsPatch[pixel];
+        Max_window->fWhitePatch = Max_window->pixelsPatch[pixel];
+        PosOfMax_window->fWhitePatch = PosOfMax_window->pixelsPatch[pixel];
+    }
+    else
+    {
+        RMS_window->fWhitePatch = -1;
+        Mean_window->fWhitePatch = -1;
+        Max_window->fWhitePatch = -1;
+        PosOfMax_window->fWhitePatch = -1;
+    }
+    if (pixel == -1)
+        return;
+    int softwarePix = pixel;
+//    if (!GLWindow->_softwareOrdering)
+        pixel = GLWindow->hardwareMapping[pixel];
+
+    HwIDBox->setValue(pixel);
+
+    if (!GLWindow->nRoi)
+        return;
+
+int currentPixel = pixel;
+
+    for (int i=0;i<GLWindow->nRoi;i++)
+    {
+        xval[i] = i;
+        yval[i] = GLWindow->eventData[GLWindow->nRoi*currentPixel + i];
+    }
+
+
+int realNumSamples = GLWindow->nRoi;
+    if (GLWindow->nRoiTM != 0)
+    {
+        const PixelMapEntry& mapEntry = GLWindow->fPixelMap.index(softwarePix);
+        const int pixelIdInPatch = mapEntry.pixel();
+        const int patchId = mapEntry.patch();
+        const int boardId = mapEntry.board();
+        const int crateId = mapEntry.crate();
+        if (pixelIdInPatch == 8)
+        {
+            int TMIndex = 0;
+            int xIndex = GLWindow->nRoi;
+            int arrayIndex = GLWindow->nRoi;
+            if (GLWindow->offSetRoi < 0)
+                TMIndex -= GLWindow->offSetRoi;
+            if (GLWindow->offSetRoi > 0)
+                xIndex += GLWindow->offSetRoi;
+            for (int i=TMIndex;i<GLWindow->nRoiTM;i++, xIndex++, arrayIndex++)
+            {
+                xval[arrayIndex] = xIndex;
+                yval[arrayIndex] = GLWindow->eventData[GLWindow->nRoi*1440 + GLWindow->nRoiTM*(40*crateId + 4*boardId + patchId) + i];
+            }
+            realNumSamples += GLWindow->nRoiTM - TMIndex;
+        }
+      //  cout << pixelIdInPatch << " " ;
+    }
+
+#if QWT_VERSION < 0x060000
+    pixelValueCurveItem.setData(xval, yval, realNumSamples);
+#else
+       pixelValueCurveItem.setSamples(xval, yval, realNumSamples);
+#endif
+
+//now compute the average value of all pixels
+       currentPixel = 0;
+       for (int i=0;i<GLWindow->nRoi;i++)
+           yval[i] = 0;
+       for (int j=0;j<1440;j++) {
+           currentPixel = j;
+           for (int i=0;i<GLWindow->nRoi;i++)
+           {
+               xval[i] = i;
+               yval[i] += GLWindow->eventData[GLWindow->nRoi*currentPixel + i];
+           }
+       }
+       for (int i=0;i<GLWindow->nRoi;i++)
+           yval[i] /= 1440;
+#if QWT_VERSION < 0x060000
+       pixelAverageCurveItem.setData(xval, yval, GLWindow->nRoi);
+#else
+    pixelAverageCurveItem.setSamples(xval, yval, realNumSamples);
+#endif
+
+    QStack< QRectF > stack;
+    stack.push(scaleBoundingRectangle(pixelValueCurveItem.boundingRect(), 1.5f));
+    curveZoom->setZoomBase(scaleBoundingRectangle(pixelValueCurveItem.boundingRect(), 1.5f));
+    curveZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(pixelAverageCurveItem.boundingRect(), 1.5f));
+    averageCurveZoom->setZoomBase(scaleBoundingRectangle(pixelAverageCurveItem.boundingRect(), 1.5f));
+    averageCurveZoom->setZoomStack(stack);
+    stack.pop();
+
+    displaySliceValue();
+    on_autoScaleColor_clicked();
+}
+
+void UIConnector::on_HwIDBox_valueChanged(int)
+{
+    updating = true;
+
+    const int hwID = HwIDBox->value();
+
+    const int crateID =  hwID/360;
+    const int boardID = (hwID%360)/36;
+    const int patchID = (hwID%36 )/9;
+    const int pixelID =  hwID%9;
+
+    SwIDBox->setValue(GLWindow->softwareMapping[hwID]);
+
+    crateIDBox->setValue(crateID);
+    boardIDBox->setValue(boardID);
+    patchIDBox->setValue(patchID);
+    pixelIDBox->setValue(pixelID);
+
+    updating = false;
+
+    GLWindow->selectedPixel = GLWindow->softwareMapping[hwID];
+    GLWindow->updateGL();
+
+    pixelChanged(GLWindow->selectedPixel);
+}
+
+void UIConnector::cbpxChanged()
+{
+    if (updating)
+        return;
+
+    const int hwid = crateIDBox->value()*360 + boardIDBox->value()*36 + patchIDBox->value()*9 + pixelIDBox->value();
+    HwIDBox->setValue(hwid);
+}
+
+void UIConnector::on_SwIDBox_valueChanged(int swid)
+{
+    if (updating)
+        return;
+
+//    if (GLWindow->_softwareOrdering)
+//        HwIDBox->setValue(swid);
+//    else
+        HwIDBox->setValue(GLWindow->hardwareMapping[swid]);
+}
+
+void UIConnector::on_autoScaleColor_clicked()
+{
+    if (!autoScaleColor->isChecked())
+    {
+        GLWindow->ss[0] = 0.496;
+        GLWindow->ss[1] = 0.507;
+        GLWindow->ss[2] = 0.518;
+        GLWindow->ss[3] = 0.529;
+        GLWindow->ss[4] = 0.540;;
+        colorRange0->setValue(GLWindow->ss[0]);
+        colorRange1->setValue(GLWindow->ss[1]);
+        colorRange2->setValue(GLWindow->ss[2]);
+        colorRange3->setValue(GLWindow->ss[3]);
+        colorRange4->setValue(GLWindow->ss[4]);
+        return;
+    }
+    if (!GLWindow->nRoi)
+        return;
+
+    int start = 0;
+    int end   = 1440;
+
+    if (!entireCameraScale->isChecked())
+    {
+        start = GLWindow->selectedPixel;
+        end   = GLWindow->selectedPixel+1;
+        if (end == 0)
+        {
+            start = 0;
+            end = 1440;
+        }
+    }
+
+    int min =  100000; //real min = -2048, int_16 = -32768 to 32767
+    int max = -100000; //real max = 2047
+
+    long average = 0;
+    long numSamples = 0;
+    int errorDetected = -1;
+
+    for (int i=start;i<end;i++)
+    {
+        if (i==863)//keep crazy pixel out of the autoscale
+            continue;
+        for (int j=10;j<GLWindow->nRoi-50;j++)
+        {
+            int cValue = GLWindow->eventData[i*GLWindow->nRoi+j];
+            if (cValue > max && cValue < 32767)
+                max = cValue;
+            if (cValue < min && cValue > -32768)
+               min = cValue;
+            if (cValue < 32767 && cValue > -32768)
+            {
+                average+=cValue;
+                numSamples++;
+            }
+            else
+            {
+                errorDetected = i;
+            }
+//            numSamples++;
+        }
+    }
+    average /= numSamples;
+    if (errorDetected != -1)
+    {
+        cout << "Overflow detected at pixel " << errorDetected << " (at least)" << endl;
+    }
+//    cout << "min: " << min << " max: " << max << " average: " << average << endl;
+    float minRange = (float)(min+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    float maxRange = (float)(max+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    float midRange = (float)(average+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    if (GLWindow->logScale)
+    {
+        minRange *= 9;
+        maxRange *= 9;
+//        midRange *= 9;
+        minRange += 1;
+        maxRange += 1;
+//        midRange += 1;
+        minRange = log10(minRange);
+        maxRange = log10(maxRange);
+//        midRange = (minRange + maxRange)/2.f;
+        midRange = log10(midRange);
+    }
+
+    GLWindow->ss[0] = minRange;
+    colorRange0->setValue(GLWindow->ss[0]);
+    GLWindow->ss[4] = maxRange;
+    colorRange4->setValue(GLWindow->ss[4]);
+//    GLWindow->ss[2] = midRange;
+//    range2->setValue(GLWindow->ss[2]);
+//    GLWindow->ss[1] = (minRange+midRange)/2;
+//    range1->setValue(GLWindow->ss[1]);
+//    GLWindow->ss[3] = (maxRange+midRange)/2;
+//    range3->setValue(GLWindow->ss[3]);
+
+    GLWindow->ss[2] = (maxRange+minRange)/2;
+    colorRange2->setValue(GLWindow->ss[2]);
+
+    GLWindow->ss[1] = minRange+(maxRange-minRange)/4;
+    colorRange1->setValue(GLWindow->ss[1]);
+
+    GLWindow->ss[3] = minRange+3*(maxRange-minRange)/4;
+    colorRange3->setValue(GLWindow->ss[3]);
+}
+
+void PrintUsage()
+{
+    cout << "\n"
+        "The FACT++ raw data viewer.\n"
+        "\n"
+        "Usage: viewer [OPTIONS] [datafile.fits[.gz|.fz] [calibration.drs.fits[.gz]]]\n"
+        "  or:  viewer [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    cout <<
+            "\n"
+         << endl;
+}
+
+int UIConnector::SetupConfiguration(Configuration &conf)
+{
+    RawDataViewer *canvas = GLWindow;
+
+    if (conf.Has("mappingFile"))
+    {
+        canvas->assignPixelMapFile(conf.Get<string>("mappingFile"));
+    }
+    else
+        canvas->assignPixelMapFile("");
+
+    if (conf.Has("color.range"))
+    {
+        vector<double> value = conf.Vec<double>("color.range");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorRange option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->ss[i] = value[i];
+    }
+
+    if (conf.Has("color.red"))
+    {
+        vector<double> value = conf.Vec<double>("color.red");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorRed option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->rr[i] = value[i];
+    }
+
+    if (conf.Has("color.green"))
+    {
+        vector<double> value = conf.Vec<double>("color.green");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorGreen option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->gg[i] = value[i];
+    }
+
+    if (conf.Has("color.blue"))
+    {
+        vector<double> value = conf.Vec<double>("color.blue");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorBlue option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->bb[i] = value[i];
+    }
+
+    colorRange0->setValue(canvas->ss[0]);
+    colorRange1->setValue(canvas->ss[1]);
+    colorRange2->setValue(canvas->ss[2]);
+    colorRange3->setValue(canvas->ss[3]);
+    colorRange4->setValue(canvas->ss[4]);
+    redValue0->setValue(canvas->rr[0]);
+    redValue1->setValue(canvas->rr[1]);
+    redValue2->setValue(canvas->rr[2]);
+    redValue3->setValue(canvas->rr[3]);
+    redValue4->setValue(canvas->rr[4]);
+    greenValue0->setValue(canvas->gg[0]);
+    greenValue1->setValue(canvas->gg[1]);
+    greenValue2->setValue(canvas->gg[2]);
+    greenValue3->setValue(canvas->gg[3]);
+    greenValue4->setValue(canvas->gg[4]);
+    blueValue0->setValue(canvas->bb[0]);
+    blueValue1->setValue(canvas->bb[1]);
+    blueValue2->setValue(canvas->bb[2]);
+    blueValue3->setValue(canvas->bb[3]);
+    blueValue4->setValue(canvas->bb[4]);
+
+    if (conf.Has("drs"))
+    {
+        const QString qstr(conf.Get<string>("drs").c_str());
+        calibFileSelected(qstr);
+    }
+
+    if (conf.Has("file"))
+    {
+        const QString qstr(conf.Get<string>("file").c_str());
+        fileSelected(qstr);
+    }
+
+
+    return 0;
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Raw Events Viewer Options");
+    configs.add_options()
+        ("color.range", vars<double>(), "Range of the display colours")
+        ("color.red",   vars<double>(), "Range of red values")
+        ("color.green", vars<double>(), "Range of green values")
+        ("color.blue",  vars<double>(), "Range of blue values")
+        ("file,f",      var<string>(),  "File to be loaded")
+        ("drs,d",       var<string>(),  "DRS calibration file to be loaded")
+        ("mappingFile", var<string>(),  "Which pixels mapping file to use")
+        ;
+    conf.AddOptions(configs);
+
+    po::positional_options_description p;
+    p.add("file", 1); // The first positional options
+    p.add("drs",  2); // The first positional options
+    conf.SetArgumentPositions(p);
+
+}
+
+/************************************************************
+ * MAIN PROGRAM FUNCTION.
+ ************************************************************/
+int main(int argc, const char *argv[])
+{
+    QApplication app(argc, const_cast<char**>(argv));
+
+    if (!QGLFormat::hasOpenGL()) {
+        std::cerr << "This system has no OpenGL support" << std::endl;
+        return 1;
+    }
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 2;
+
+    UIConnector myUi;
+    if (myUi.SetupConfiguration(conf)<0)
+        return 3;
+
+    return app.exec();
+}
+
Index: branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.h
===================================================================
--- branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/RawEventsViewer/RawEventsViewer.h	(revision 18732)
@@ -0,0 +1,316 @@
+/*
+ * QtGl.h
+ *
+ *  Created on: Jul 20, 2011
+ *      Author: lyard
+ */
+
+#ifndef QTGL_H_
+#define QTGL_H_
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+#include <string>
+#include <valarray>
+
+#include <QObject>
+
+#include "../BasicGlCamera.h"
+
+#include <qwt_plot_curve.h>
+
+class QwtPlotZoomer;
+class QwtPlotGrid;
+
+#include "../../src/DataCalib.h"
+#include "../../externals/ofits.h"
+
+/*************************************************
+ * Class Raw Data Viewer. FACT raw data diplayer
+ *************************************************/
+class RawDataViewer : public BasicGlCamera//QGLWidget
+{
+    Q_OBJECT
+
+    friend class UIConnector;
+
+    enum CalibDataTypes {
+        CALIB_BASELINE,
+        CALIB_GAIN,
+        CALIB_TRIG_OFFSET
+    };
+
+public:
+    DrsCalibration fDrsCalib;
+
+    bool fIsDrsCalibration;
+
+    RawDataViewer(QWidget *parent = 0);
+    ~RawDataViewer();
+    void openFile(std::string& file);
+    void openCalibFile(std::string& file);
+
+    template <typename T>
+    void getCalibrationDataForDisplay(const CalibDataTypes calibTypes,
+                                                     const vector<T>& inputData,
+                                                     const int roi,
+                                                     const int roiTM);
+    int getCurrentPixel(){return selectedPixel;}
+    void assignPixelMapFile(const string& map="");
+public Q_SLOTS:
+    void plusEvent();
+    void minusEvent();
+    void setEventStep(int step);
+    void nextSlice();
+    void previousSlice();
+    void setCurrentPixel(int);
+
+
+Q_SIGNALS:
+    void signalCurrentEvent(int event);
+    void signalCurrentSlice(int slice);
+    void newFileLoaded();
+    void signalCurrentPixel(int pixel);
+    void signalAutoScaleNeeded();
+
+protected:
+//    void initializeGL();
+//    void resizeGL(int width, int height);
+    void paintGL();
+    void mousePressEvent(QMouseEvent *event);
+    void mouseMoveEvent(QMouseEvent *event);
+    void mouseDoubleClickEvent(QMouseEvent *event);
+    void drawCamera(bool alsoWire);
+//    void drawPatches();
+//    int PixelAtPosition(const QPoint &pos);
+//    void drawHexagon(int index, bool solid);
+    int selectedPixel;
+    float *eventData;
+    float *rmsData;
+    int16_t* rawEventData;
+    int16_t* waveLetArray;
+    valarray<double> RMSvalues;//(1440);
+    valarray<double> Meanvalues;
+    valarray<double> Maxvalues;
+    valarray<double> PosOfMaxvalues;
+
+    ///Used to load zero data in case of missing fits columns
+    void allocateZeroArray();
+    char* fZeroArray;
+    //bool telling whether the data is natively ordered in software or hardware id
+    //used to correctly display monte-carlo data.
+    bool _softwareOrdering;
+
+private:
+    void drawPixelCurve();
+//    void updateNeighbors(int currentPixel);
+//    void skipPixels(int start, int howMany);
+//    void calculatePixelsCoords();
+    bool setCorrectSlice(QMouseEvent* event);
+    void eventStepping(bool plus);
+//    void buildVerticesList();
+//    void buildPatchesIndices();
+    void calcBlurColor(int pixel, int vertex);
+    void calcMidBlurColor(int pixel, int vertex);
+    void drawBlurryHexagon(int index);
+    int whichSlice;
+ //   float shownSizex;
+ //   float shownSizey;
+    bool drawPatch;
+    bool drawImpulse;
+    bool drawBlur;
+    bool loopCurrentEvent;
+    //allocate the maximum size for one event
+    uint32_t boardTime[NBOARDS];
+    int16_t startPix[NPIX];
+    int16_t startTM[NTMARK];
+    int32_t pcTime[2];
+    uint32_t softTrig;
+    uint16_t triggerType;
+    int nRows;
+    int rowNum;
+    int eventNum;
+    int nRoi;
+    int nRoiTM;
+    int offSetRoi;
+    int runNumber;
+    int nTM;
+    std::string runType;
+    int firstDataTime;
+    int lastDataTime;
+    int revision;
+    int builderVersion;
+    int nBoards;
+    int nPixels;
+    std::string timeSystem;
+    std::string creationDate;
+    int nightInt;
+    std::string camera;
+    std::string daq;
+    float adcCount;
+    int nbOk;
+    int nbRej;
+    int nbBad;
+
+    int eventStep;
+
+
+
+
+
+//    int hardwareMapping[1440];
+//    int softwareMapping[1440];
+////    int patches[160][9];
+    GLfloat patchesColor[160][3];
+//    vector<edge> patchesIndices[160];
+    fits* inputFile;
+//    std::fits* calibInputFile;
+//    float baseLineMean[1440*1024];
+//    float gainMean[1440*1024];
+//    float triggerOffsetMean[1440*1024];
+//    bool calibrationLoaded;
+    bool drawCalibrationLoaded;
+
+    QPoint lastPos;
+public:
+    void computePulsesStatistics();
+    double aMeas[1024];
+    double n1mean[1024];
+    double n2mean[1024];
+    double vCorr[1024];
+    int64_t VALUES_SPAN;
+
+    void ApplyCalibration();
+
+//    GLfloat pixelsCoords[MAX_NUM_PIXELS][3];
+//    PixelsNeighbors neighbors[MAX_NUM_PIXELS];
+ //   GLfloat pixelsColor[ACTUAL_NUM_PIXELS][3];
+//    GLfloat verticesList[ACTUAL_NUM_PIXELS*6][2];
+//    int verticesIndices[ACTUAL_NUM_PIXELS][6];
+//    int numVertices;
+};
+
+/*************************************************
+ * Class UIConnector. used to connect the interface to the raw data displayer
+ *************************************************/
+#include "viewer.h"
+
+class Configuration;
+
+class UIConnector : public QMainWindow, protected Ui::MainWindow
+{
+    Q_OBJECT
+private:
+    QTimer timer;
+    std::string currentFile;
+    std::string currentCalibFile;
+
+    QRectF scaleBoundingRectangle(QRectF rectangle, float scale);
+
+    bool updateSpinnerDisplay;
+    bool updating;
+
+    void initHistograms();
+
+public:
+    UIConnector(QWidget *parent = 0);
+    ~UIConnector();
+
+public Q_SLOTS:
+    void fileSelected(QString file);
+    void calibFileSelected(QString file);
+
+    void newFileLoaded();
+    void slicesPerSecondChanged(double value);
+    void nextSlicePlease();
+    void currentSliceHasChanged(int slice);
+    void currentEventHasChanged(int event);
+
+    void on_playPauseButton_clicked();
+    void on_loadNewFileButton_clicked();
+    void on_loadDRSCalibButton_clicked();
+
+    void on_drawPatchCheckBox_stateChanged(int);
+    void on_drawImpulseCheckBox_stateChanged(int);
+    void on_drawBlurCheckBox_stateChanged(int);
+    void on_loopOverCurrentEventBox_stateChanged(int);
+
+    void on_colorRange0_valueChanged(double);
+    void on_colorRange1_valueChanged(double);
+    void on_colorRange2_valueChanged(double);
+    void on_colorRange3_valueChanged(double);
+    void on_colorRange4_valueChanged(double);
+    void on_redValue0_valueChanged(double);
+    void on_redValue1_valueChanged(double);
+    void on_redValue2_valueChanged(double);
+    void on_redValue3_valueChanged(double);
+    void on_redValue4_valueChanged(double);
+    void on_greenValue0_valueChanged(double);
+    void on_greenValue1_valueChanged(double);
+    void on_greenValue2_valueChanged(double);
+    void on_greenValue3_valueChanged(double);
+    void on_greenValue4_valueChanged(double);
+    void on_blueValue0_valueChanged(double);
+    void on_blueValue1_valueChanged(double);
+    void on_blueValue2_valueChanged(double);
+    void on_blueValue3_valueChanged(double);
+    void on_blueValue4_valueChanged(double);
+
+    void on_slicesPerSecValue_valueChanged(double);
+
+    void pixelChanged(int);
+
+    void cbpxChanged();
+
+    void on_HwIDBox_valueChanged(int = 0);
+    void on_SwIDBox_valueChanged(int);
+    void on_crateIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_boardIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_patchIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_pixelIDBox_valueChanged(int) { cbpxChanged(); }
+
+    void on_autoScaleColor_clicked();
+    void on_entireCameraScale_toggled(bool) { on_autoScaleColor_clicked(); }
+    void on_currentPixelScale_toggled(bool) { on_autoScaleColor_clicked(); }
+
+    void slicesPlusPlus();
+    void slicesMinusMinus();
+
+    void on_calibratedCheckBox_stateChanged(int state);
+    void on_displayingSliceBox_valueChanged(int);
+    void on_displayingEventBox_valueChanged(int);
+
+    void displaySliceValue();
+
+    int SetupConfiguration(Configuration &conf);
+
+private:
+    QwtPlotCurve boardsTimeHistoItem;
+    QwtPlotCurve startCellHistoItem;
+    QwtPlotCurve startTimeMarkHistoItem;
+    QwtPlotCurve pixelValueCurveItem;
+    QwtPlotCurve pixelAverageCurveItem;
+    QwtPlotCurve aMeanCurveItem;
+    QwtPlotCurve vCorrCurveItem;
+    QwtPlotCurve meanCurveItem;
+    QwtPlotCurve triggerDelayHistoItem;
+
+    QwtPlotZoomer* curveZoom;
+    QwtPlotZoomer* averageCurveZoom;
+    QwtPlotZoomer* boardsTimeHistoZoom;
+    QwtPlotZoomer* startCellHistoZoom;
+    QwtPlotZoomer* startTimeMarkHistoZoom;
+    QwtPlotZoomer* triggerDelayHistoZoom;
+
+    //declare the grids here, because I must have access to them to detach them properly at destruction time (bug and crash with "bad" versions of qwt)
+    QwtPlotGrid* grid1;
+    QwtPlotGrid* grid2;
+    QwtPlotGrid* grid3;
+    QwtPlotGrid* grid4;
+    QwtPlotGrid* grid5;
+    QwtPlotGrid* grid6;
+};
+
+#endif /* QTGL_H_ */
Index: branches/FACT++_part_filenames/gui/RawEventsViewer/viewer.ui
===================================================================
--- branches/FACT++_part_filenames/gui/RawEventsViewer/viewer.ui	(revision 18732)
+++ branches/FACT++_part_filenames/gui/RawEventsViewer/viewer.ui	(revision 18732)
@@ -0,0 +1,1297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>984</width>
+    <height>757</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout_2">
+    <item row="0" column="0">
+     <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="10,0">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0">
+        <property name="sizeConstraint">
+         <enum>QLayout::SetDefaultConstraint</enum>
+        </property>
+        <item>
+         <widget class="QTabWidget" name="tabWidget_2">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>1</horstretch>
+            <verstretch>1</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="currentIndex">
+           <number>0</number>
+          </property>
+          <widget class="QWidget" name="tab_5">
+           <property name="layoutDirection">
+            <enum>Qt::LeftToRight</enum>
+           </property>
+           <attribute name="title">
+            <string>Camera</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_3">
+            <item row="0" column="0">
+             <widget class="RawDataViewer" name="GLWindow" native="true">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>1</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_6">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <attribute name="title">
+            <string>Data</string>
+           </attribute>
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <item>
+             <widget class="QTabWidget" name="tabWidget_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>1</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="tabShape">
+               <enum>QTabWidget::Rounded</enum>
+              </property>
+              <property name="currentIndex">
+               <number>1</number>
+              </property>
+              <property name="elideMode">
+               <enum>Qt::ElideNone</enum>
+              </property>
+              <widget class="QWidget" name="tab_3">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <attribute name="title">
+                <string>Arrays data</string>
+               </attribute>
+               <layout class="QVBoxLayout" name="verticalLayout_6">
+                <item>
+                 <widget class="QLabel" name="label_3">
+                  <property name="text">
+                   <string>Boards time values</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="boardsTimeList">
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_13">
+                  <property name="text">
+                   <string>Start Cells</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="startPixelsList">
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="StartTimeMarksList">
+                  <property name="text">
+                   <string>Start Time Marks</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="startTimeMarksList">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_4">
+                  <property name="text">
+                   <string>Trigger Delays</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="triggerDelayList"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_4">
+               <attribute name="title">
+                <string>Histograms</string>
+               </attribute>
+               <layout class="QVBoxLayout" name="verticalLayout_3">
+                <item>
+                 <widget class="QwtPlot" name="boardsTimeHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="startCellsHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="startTimeMarkHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="triggerDelayHisto"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab">
+               <attribute name="title">
+                <string>Pixel Curves</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_4">
+                <item row="0" column="0">
+                 <widget class="QwtPlot" name="pixelValueCurve"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_7">
+               <attribute name="title">
+                <string>Average Curve</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_41">
+                <item row="0" column="0">
+                 <widget class="QwtPlot" name="pixelAverageCurve"/>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_15">
+           <attribute name="title">
+            <string>Statistics</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_11">
+            <item row="0" column="0">
+             <widget class="QTabWidget" name="tabWidget_4">
+              <property name="currentIndex">
+               <number>0</number>
+              </property>
+              <widget class="QWidget" name="tab_16">
+               <attribute name="title">
+                <string>RMS</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_12">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="RMS_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_17">
+               <attribute name="title">
+                <string>Mean</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_13">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="Mean_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_18">
+               <attribute name="title">
+                <string>Max</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_14">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="Max_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_19">
+               <attribute name="title">
+                <string>Pos. of Max.</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_15">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="PosOfMax_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_11">
+           <attribute name="title">
+            <string>Calibration</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="0" column="0">
+             <widget class="QTabWidget" name="tabWidget">
+              <property name="currentIndex">
+               <number>2</number>
+              </property>
+              <widget class="QWidget" name="tab_12">
+               <attribute name="title">
+                <string>Baseline</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_8">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="Baseline_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_13">
+               <attribute name="title">
+                <string>Gain</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_9">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="Gain_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_14">
+               <attribute name="title">
+                <string>Trigger Offset</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_10">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="TriggerOffset_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_2">
+           <attribute name="title">
+            <string>3D</string>
+           </attribute>
+           <layout class="QHBoxLayout" name="horizontalLayout_7">
+            <item>
+             <widget class="Q3DCameraWidget" name="threeD_Window" native="true">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>10000</width>
+                <height>10000</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0">
+        <property name="sizeConstraint">
+         <enum>QLayout::SetDefaultConstraint</enum>
+        </property>
+        <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>FACT - Raw events viewer - v0.7</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="extraInfoLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>8</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>File loaded: none
+Calibration file loaded: none
+Run number:
+Number of Events:
+Number ofSlices:
+Number of Time Marks:
+Run Type:
+Time of 1st data:
+Time of last data:
+SVN revision:
+Number of boards:
+Number of pixels:
+Number of Slices TM:
+Time system:
+Date:
+Night:
+Camera:
+DAQ:
+ADC Count:
+NB Evts OK:
+NB Evts Rejected:
+NB Evts Bad:
+</string>
+          </property>
+          <property name="scaledContents">
+           <bool>false</bool>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
+           <widget class="QLabel" name="label_5">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+              <weight>75</weight>
+              <bold>true</bold>
+             </font>
+            </property>
+            <property name="text">
+             <string>Selected Pixel</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_6">
+            <item>
+             <widget class="QLabel" name="label_10">
+              <property name="text">
+               <string>Hw ID</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="HwIDBox">
+              <property name="maximum">
+               <number>10000</number>
+              </property>
+              <property name="value">
+               <number>393</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_11">
+              <property name="text">
+               <string>Sw ID</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="SwIDBox">
+              <property name="maximum">
+               <number>1440</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QGridLayout" name="gridLayout_5">
+            <item row="2" column="0">
+             <widget class="QLabel" name="label_6">
+              <property name="text">
+               <string>Crate</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <widget class="QLabel" name="label_8">
+              <property name="text">
+               <string>Board</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="2">
+             <widget class="QLabel" name="label_9">
+              <property name="text">
+               <string>Patch</string>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0">
+             <widget class="QSpinBox" name="crateIDBox">
+              <property name="maximum">
+               <number>3</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="1">
+             <widget class="QSpinBox" name="boardIDBox">
+              <property name="maximum">
+               <number>9</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="2">
+             <widget class="QSpinBox" name="patchIDBox">
+              <property name="maximum">
+               <number>3</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="3">
+             <widget class="QSpinBox" name="pixelIDBox">
+              <property name="maximum">
+               <number>8</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="3">
+             <widget class="QLabel" name="label_2">
+              <property name="text">
+               <string>Ch</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_4">
+          <property name="spacing">
+           <number>2</number>
+          </property>
+          <item>
+           <widget class="QLabel" name="label_7">
+            <property name="font">
+             <font>
+              <pointsize>12</pointsize>
+              <weight>75</weight>
+              <bold>true</bold>
+             </font>
+            </property>
+            <property name="text">
+             <string>Current Event Information</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_10">
+            <item>
+             <widget class="QLabel" name="displayingEventLabel">
+              <property name="text">
+               <string>Event</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="displayingEventBox"/>
+            </item>
+            <item>
+             <widget class="QLabel" name="displayingSliceLabel">
+              <property name="text">
+               <string>Slice  </string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="displayingSliceBox">
+              <property name="maximum">
+               <number>1023</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QLabel" name="currentPixelValue">
+            <property name="text">
+             <string>Current Pixel val.:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="triggerTypeLabel">
+            <property name="text">
+             <string>Trigger Type:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="softwareTriggerLabel">
+            <property name="text">
+             <string>Software Trigger: </string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="PCTimeLabel">
+            <property name="text">
+             <string>PC Time:</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </item>
+    <item row="1" column="0">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="7">
+       <widget class="QDoubleSpinBox" name="colorRange4">
+        <property name="enabled">
+         <bool>true</bool>
+        </property>
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="7">
+       <widget class="QDoubleSpinBox" name="greenValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="7">
+       <widget class="QDoubleSpinBox" name="redValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="7">
+       <widget class="QDoubleSpinBox" name="blueValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="6">
+       <widget class="QDoubleSpinBox" name="redValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="5">
+       <widget class="QDoubleSpinBox" name="redValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="4">
+       <widget class="QDoubleSpinBox" name="redValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="3">
+       <widget class="QDoubleSpinBox" name="redValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <widget class="QLabel" name="label_20">
+        <property name="text">
+         <string>Red</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2">
+       <widget class="QLabel" name="label_21">
+        <property name="text">
+         <string>Ranges</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2">
+       <widget class="QLabel" name="label_22">
+        <property name="text">
+         <string>Green</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="2">
+       <widget class="QLabel" name="label_23">
+        <property name="text">
+         <string>Blue</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3">
+       <widget class="QDoubleSpinBox" name="colorRange0">
+        <property name="enabled">
+         <bool>true</bool>
+        </property>
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="3">
+       <widget class="QDoubleSpinBox" name="greenValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="3">
+       <widget class="QDoubleSpinBox" name="blueValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="4">
+       <widget class="QDoubleSpinBox" name="colorRange1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="4">
+       <widget class="QDoubleSpinBox" name="greenValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="4">
+       <widget class="QDoubleSpinBox" name="blueValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="5">
+       <widget class="QDoubleSpinBox" name="colorRange2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="5">
+       <widget class="QDoubleSpinBox" name="greenValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="5">
+       <widget class="QDoubleSpinBox" name="blueValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="6">
+       <widget class="QDoubleSpinBox" name="colorRange3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="6">
+       <widget class="QDoubleSpinBox" name="greenValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="6">
+       <widget class="QDoubleSpinBox" name="blueValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QPushButton" name="playPauseButton">
+          <property name="toolTip">
+           <string>Play/Pause events animation</string>
+          </property>
+          <property name="text">
+           <string>Play/Pause</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="label_24">
+          <property name="text">
+           <string>Slices per sec</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QDoubleSpinBox" name="slicesPerSecValue">
+          <property name="toolTip">
+           <string>Number of slices to display per seconds</string>
+          </property>
+          <property name="minimum">
+           <double>1.000000000000000</double>
+          </property>
+          <property name="maximum">
+           <double>1000.000000000000000</double>
+          </property>
+          <property name="singleStep">
+           <double>1.000000000000000</double>
+          </property>
+          <property name="value">
+           <double>100.000000000000000</double>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="0">
+       <widget class="QCheckBox" name="drawImpulseCheckBox">
+        <property name="toolTip">
+         <string>Whether the impulse of the current pixel should be drawn below the camera or not</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Draw Impulse</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QCheckBox" name="drawBlurCheckBox">
+        <property name="toolTip">
+         <string>Draw the pixels blurred (for having &quot;nice&quot;, non-scientific images).</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Blur pixels</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QCheckBox" name="drawPatchCheckBox">
+        <property name="toolTip">
+         <string>Whether the pixels clustering should be drawn or not</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Draw Patches</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+        <property name="tristate">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="QCheckBox" name="loopOverCurrentEventBox">
+        <property name="toolTip">
+         <string>Whether the animation should loop over the current event, or continue to the next event</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Loop event</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QPushButton" name="autoScaleColor">
+        <property name="toolTip">
+         <string>Rescale the coloring to match the values of the current event</string>
+        </property>
+        <property name="text">
+         <string>AutoScale</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QRadioButton" name="entireCameraScale">
+        <property name="toolTip">
+         <string>Use the entire camera to do the scaling</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>entire camera</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QRadioButton" name="currentPixelScale">
+        <property name="toolTip">
+         <string>Use the current pixel only to do the scaling</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>current pixel</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_5">
+        <item>
+         <widget class="QRadioButton" name="playSlicesRadio">
+          <property name="text">
+           <string>play Slices</string>
+          </property>
+          <property name="checked">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="playEventsRadio">
+          <property name="text">
+           <string>play Events</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="playPixelsRadio">
+          <property name="text">
+           <string>play Pixels</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_8">
+        <item>
+         <widget class="QPushButton" name="loadNewFileButton">
+          <property name="toolTip">
+           <string>Load a new fits file</string>
+          </property>
+          <property name="text">
+           <string>Load Data</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="loadDRSCalibButton">
+          <property name="text">
+           <string>Load DRS calib.</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="1">
+       <widget class="QCheckBox" name="calibratedCheckBox">
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Calibrated data</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_4"/>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QwtPlot</class>
+   <extends>QFrame</extends>
+   <header>qwt_plot.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>QGLWidget</class>
+   <extends>QWidget</extends>
+   <header>QtOpenGL/QGLWidget</header>
+  </customwidget>
+  <customwidget>
+   <class>RawDataViewer</class>
+   <extends>QGLWidget</extends>
+   <header>RawEventsViewer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>../QCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3DCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>../Q3DCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>autoScaleColor</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>entireCameraScale</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>210</x>
+     <y>938</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>197</x>
+     <y>974</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>autoScaleColor</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>currentPixelScale</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>219</x>
+     <y>943</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>214</x>
+     <y>1002</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: branches/FACT++_part_filenames/gui/RootWidget.h
===================================================================
--- branches/FACT++_part_filenames/gui/RootWidget.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/RootWidget.h	(revision 18732)
@@ -0,0 +1,10 @@
+#ifdef HAVE_ROOT
+
+#include <TQtWidget.h>
+#define RootWidget TQtWidget
+
+#else
+
+#define RootWidget QWidget
+
+#endif
Index: branches/FACT++_part_filenames/gui/SpinBox4ns.h
===================================================================
--- branches/FACT++_part_filenames/gui/SpinBox4ns.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/SpinBox4ns.h	(revision 18732)
@@ -0,0 +1,45 @@
+#ifndef FACT_SpinBox4ns
+#define FACT_SpinBox4ns
+
+#include <QSpinBox>
+
+class SpinBox4ns : public QSpinBox
+{
+public:
+    SpinBox4ns(QWidget *p) : QSpinBox(p)
+    {
+    }
+
+    QValidator::State validate(QString &input, int &p) const
+    {
+        const QValidator::State rc = QSpinBox::validate(input, p);
+        if (rc!=QValidator::Acceptable)
+            return rc;
+
+        const int pf = prefix().length();
+        const int sf = suffix().length();
+        const int len = input.length();
+
+        return input.mid(pf, len-sf-pf).toUInt()%4==0 ? QValidator::Acceptable : QValidator::Intermediate;
+    }
+
+    void fixup(QString &input) const
+    {
+        const int pf = prefix().length();
+        const int sf = suffix().length();
+        const int len = input.length();
+
+        const uint i = input.mid(pf, len-pf-sf).toUInt()+2;
+        input = QString::number((i/4)*4);
+    }
+};
+
+#endif
+
+// **************************************************************************
+/** @class SpinBox4ns
+
+@brief A QSpinBox which only accepts values dividable by 4
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/gui/SpinBoxHex.h
===================================================================
--- branches/FACT++_part_filenames/gui/SpinBoxHex.h	(revision 18732)
+++ branches/FACT++_part_filenames/gui/SpinBoxHex.h	(revision 18732)
@@ -0,0 +1,45 @@
+#ifndef FACT_SpinBoxHex
+#define FACT_SpinBoxHex
+
+#include <QSpinBox>
+
+#include <iostream>
+class QRegExpValidator;
+
+class SpinBoxHex : public QSpinBox
+{
+public:
+    SpinBoxHex(QWidget *p=0) : QSpinBox(p)
+    {
+    }
+
+protected:
+    QValidator::State validate(QString &txt, int &/*pos*/) const
+    {
+        bool ok;
+        txt.toInt(&ok, 16);
+
+        return ok ? QValidator::Acceptable : QValidator::Invalid;
+    }
+
+    QString textFromValue(int val) const
+    {
+        return QString::number(val, 16).right(8).rightJustified(8, '0').toLower().insert(4, ':');
+    }
+
+    int valueFromText(const QString &txt) const
+    {
+        bool ok;
+        return txt.toInt(&ok, 16);
+    }
+};
+
+#endif
+
+// **************************************************************************
+/** @class SpinBoxHex
+
+@brief A QSpinBox which displays the value as hex-value
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/gui/TempViewer.cc
===================================================================
--- branches/FACT++_part_filenames/gui/TempViewer.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/TempViewer.cc	(revision 18732)
@@ -0,0 +1,69 @@
+/*
+ * TempViewer.cc
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+#include "Q3DCameraWidget.h"
+#include <qapplication.h>
+#include <qlayout.h>
+
+#include "dic.hxx"
+
+class TemperatureSub : public DimClient
+{
+    DimStampedInfo info;
+    Q3DCameraWidget* view;
+    int numC;
+
+public:
+    TemperatureSub() : info("FSC_CONTROL/TEMPERATURE", (void*)NULL, 0, this), view(NULL)
+    {numC = 0;}
+    void setViewer(Q3DCameraWidget* v) { view = v;}
+    void infoHandler()
+    {
+        DimInfo* I = getInfo();
+        if (!(I==&info))
+        {
+            cout << "Hum, I'm getting info from subsciptions to which I didn\'t subscribe... weird" << endl;
+            return;
+        }
+        float* values = (float*)(I->getData());
+        if (I->getSize() != 60*sizeof(float))
+        {
+            cout << "wrong size: " << I->getSize() << endl;
+            return;
+        }
+        if (view)// && numC > 2)
+            view->updateData(values);
+        numC++;
+    }
+};
+void do3DView(int argc, char** argv)
+{
+    QApplication a(argc, argv);
+
+    Q3DCameraWidget* view = new Q3DCameraWidget();
+    TemperatureSub sub;
+
+    QWidget window;
+    QHBoxLayout* layout = new QHBoxLayout(&window);
+    layout->setContentsMargins(0,0,0,0);
+    layout->addWidget(view);
+//    layout->setMouseTracking(true);
+//    window.setMouseTracking(true);
+//    view->setMouseTracking(true);
+    window.resize(600,600);
+    window.show();
+
+    sub.setViewer(view);
+
+    a.exec();
+
+}
+
+int main(int argc, char** argv)
+{
+    do3DView(argc, argv);
+
+}
Index: branches/FACT++_part_filenames/gui/design.qrc
===================================================================
--- branches/FACT++_part_filenames/gui/design.qrc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/design.qrc	(revision 18732)
@@ -0,0 +1,17 @@
+<RCC>
+  <qresource prefix="Resources">
+    <file>icons/green bar.png</file>
+    <file>icons/green check.png</file>
+    <file>icons/green warn.png</file>
+    <file>icons/in progress.png</file>
+    <file>icons/gray circle 1.png</file>
+    <file>icons/green circle 1.png</file>
+    <file>icons/orange circle 1.png</file>
+    <file>icons/red circle 1.png</file>
+    <file>icons/warning 1.png</file>
+    <file>icons/warning 2.png</file>
+    <file>icons/warning 3.png</file>
+    <file>icons/warning 4.png</file>
+    <file>icons/yellow circle 1.png</file>
+  </qresource>
+</RCC>
Index: branches/FACT++_part_filenames/gui/design.ui
===================================================================
--- branches/FACT++_part_filenames/gui/design.ui	(revision 18732)
+++ branches/FACT++_part_filenames/gui/design.ui	(revision 18732)
@@ -0,0 +1,18035 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <author>Thomas Bretz for the FACT collaboration</author>
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="enabled">
+   <bool>true</bool>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1358</width>
+    <height>936</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>FACT++</string>
+  </property>
+  <property name="dockNestingEnabled">
+   <bool>false</bool>
+  </property>
+  <widget class="QWidget" name="fCentralWidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <layout class="QGridLayout" name="gridLayout" rowstretch="0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item row="0" column="0">
+     <widget class="QTabWidget" name="fTabWidget">
+      <property name="enabled">
+       <bool>true</bool>
+      </property>
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="mouseTracking">
+       <bool>true</bool>
+      </property>
+      <property name="currentIndex">
+       <number>6</number>
+      </property>
+      <property name="documentMode">
+       <bool>false</bool>
+      </property>
+      <property name="tabsClosable">
+       <bool>true</bool>
+      </property>
+      <property name="movable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="fTriggerTab">
+       <attribute name="title">
+        <string>Trigger</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_16">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fTriggerDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Trigger settings</string>
+          </property>
+          <widget class="QWidget" name="fTriggerWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_21" rowstretch="0,1,1" columnstretch="1,1,1">
+            <item row="1" column="0">
+             <widget class="QGroupBox" name="groupBox_5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger setup</string>
+              </property>
+              <property name="flat">
+               <bool>false</bool>
+              </property>
+              <property name="checkable">
+               <bool>false</bool>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_23">
+               <item row="2" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_10">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <spacer name="horizontalSpacer_18">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_31">
+                   <property name="text">
+                    <string>Interval</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fTriggerInterval">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> ms</string>
+                   </property>
+                   <property name="minimum">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>1023</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_17">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="6" column="0" colspan="4">
+                <widget class="Line" name="line_5">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="4">
+                <widget class="Line" name="line_6">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_8">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="15" column="2">
+                <spacer name="verticalSpacer_9">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="0">
+                <spacer name="horizontalSpacer_23">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="3">
+                <spacer name="horizontalSpacer_24">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="11" column="0" colspan="4">
+                <widget class="Line" name="line_11">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="13" column="2">
+                <layout class="QGridLayout" name="gridLayout_30">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_23">
+                   <property name="text">
+                    <string>Trg</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_29">
+                   <property name="text">
+                    <string>Ext1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_30">
+                   <property name="text">
+                    <string>Ext2</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="4">
+                  <widget class="QLabel" name="label_28">
+                   <property name="text">
+                    <string>Clk</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="5">
+                  <spacer name="horizontalSpacer_30">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>10</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="6">
+                  <widget class="QLabel" name="label_27">
+                   <property name="text">
+                    <string>Veto</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="6">
+                  <layout class="QHBoxLayout" name="horizontalLayout_20">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableVeto">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="baseSize">
+                      <size>
+                       <width>0</width>
+                       <height>0</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="4">
+                  <layout class="QHBoxLayout" name="horizontalLayout_19">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableClockCond">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="3">
+                  <layout class="QHBoxLayout" name="horizontalLayout_18">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableExt2">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="2">
+                  <layout class="QHBoxLayout" name="horizontalLayout_17">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableExt1">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <layout class="QHBoxLayout" name="horizontalLayout_16">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableTrigger">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="checked">
+                      <bool>false</bool>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </item>
+               <item row="7" column="2">
+                <spacer name="verticalSpacer_10">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="2">
+                <layout class="QGridLayout" name="gridLayout_24">
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_34">
+                   <property name="text">
+                    <string>Pedestal</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QSpinBox" name="fTriggerSeqPed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_32">
+                   <property name="text">
+                    <string>:</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="5">
+                  <widget class="QLabel" name="label_33">
+                   <property name="text">
+                    <string>:</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="6">
+                  <widget class="QSpinBox" name="fTriggerSeqLPint">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="4">
+                  <widget class="QSpinBox" name="fTriggerSeqLPext">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="6">
+                  <widget class="QLabel" name="label_36">
+                   <property name="text">
+                    <string>LPint</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="4">
+                  <widget class="QLabel" name="label_38">
+                   <property name="text">
+                    <string>LPext</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="10" column="2">
+                <spacer name="verticalSpacer_11">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Fixed</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>5</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="12" column="2">
+                <spacer name="verticalSpacer_17">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Fixed</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>5</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="14" column="2">
+                <spacer name="verticalSpacer_18">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="2">
+                <spacer name="verticalSpacer_7">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="0">
+             <widget class="QGroupBox" name="groupBox_6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Light pulser settings</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_56" rowstretch="0,0,0,0,0,0">
+               <item row="0" column="0" colspan="5">
+                <widget class="Line" name="line_16">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <layout class="QVBoxLayout" name="verticalLayout_9">
+                 <item>
+                  <widget class="QCheckBox" name="fLpIntGroup1">
+                   <property name="text">
+                    <string>Group 1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QCheckBox" name="fLpIntGroup2">
+                   <property name="text">
+                    <string>Group 2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_37">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_156">
+                   <property name="text">
+                    <string>Intensity</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLpIntIntensity">
+                   <property name="maximum">
+                    <number>127</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="3">
+                <layout class="QVBoxLayout" name="verticalLayout_11">
+                 <item>
+                  <widget class="QCheckBox" name="fLpExtGroup1">
+                   <property name="text">
+                    <string>Group 1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QCheckBox" name="fLpExtGroup2">
+                   <property name="text">
+                    <string>Group 2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_40">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_157">
+                   <property name="text">
+                    <string>Intensity</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLpExtIntensity">
+                   <property name="maximum">
+                    <number>127</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="2">
+                <spacer name="horizontalSpacer_34">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::MinimumExpanding</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="1">
+                <widget class="Line" name="line_17">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="3">
+                <widget class="Line" name="line_18">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <widget class="QLabel" name="label_159">
+                 <property name="text">
+                  <string>Extern</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="2">
+                <spacer name="verticalSpacer_39">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_38">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="4" column="4">
+                <spacer name="horizontalSpacer_33">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Preferred</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="4" column="0">
+                <spacer name="horizontalSpacer_32">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Preferred</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_158">
+                 <property name="text">
+                  <string>Intern</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" colspan="3">
+             <layout class="QHBoxLayout" name="horizontalLayout_21">
+              <item>
+               <spacer name="horizontalSpacer_15">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>5</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <layout class="QGridLayout" name="gridLayout_26">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_35">
+                  <property name="text">
+                   <string>FTM Firmware ID</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_37">
+                  <property name="text">
+                   <string>FTM Board ID</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QLineEdit" name="fFtmFirmwareId">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QLineEdit" name="fFtmBoardId">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_7">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>10</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <layout class="QGridLayout" name="gridLayout_27">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_61">
+                  <property name="text">
+                   <string>Header</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="3">
+                 <widget class="QLabel" name="label_62">
+                  <property name="text">
+                   <string>Dynamic data</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="6">
+                 <widget class="QLabel" name="label_66">
+                  <property name="text">
+                   <string>Register</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="8">
+                 <widget class="QSpinBox" name="fFtmCounterE">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="8">
+                 <widget class="QSpinBox" name="fFtmCounterR">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="5">
+                 <widget class="QSpinBox" name="fFtmCounterS">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="5">
+                 <widget class="QSpinBox" name="fFtmCounterD">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="2">
+                 <widget class="QSpinBox" name="fFtmCounterF">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="2">
+                 <widget class="QSpinBox" name="fFtmCounterH">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="minimum">
+                   <number>0</number>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="3">
+                 <widget class="QLabel" name="label_63">
+                  <property name="text">
+                   <string>Static data</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="6">
+                 <widget class="QLabel" name="label_65">
+                  <property name="text">
+                   <string>Error</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_64">
+                  <property name="text">
+                   <string>FTU list</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_16">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>3</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="1">
+             <widget class="QGroupBox" name="groupBox">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger Majority Logic</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_15">
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_8">
+                 <property name="text">
+                  <string>Physics</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="QSpinBox" name="fPhysicsCoincidence">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> / 40</string>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>40</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="2">
+                <widget class="QSpinBox" name="fCalibCoincidence">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> / 40</string>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>40</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <widget class="SpinBox4ns" name="fPhysicsWindow">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>false</bool>
+                 </property>
+                 <property name="correctionMode">
+                  <enum>QAbstractSpinBox::CorrectToPreviousValue</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>68</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="3">
+                <widget class="SpinBox4ns" name="fCalibWindow">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>68</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="1">
+                <widget class="QLabel" name="label_13">
+                 <property name="text">
+                  <string>LPext</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <widget class="QLabel" name="label_9">
+                 <property name="text">
+                  <string>Coincidence</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="3">
+                <widget class="QLabel" name="label_10">
+                 <property name="text">
+                  <string>Window</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="5">
+                <widget class="Line" name="line_8">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <spacer name="verticalSpacer_14">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="1">
+                <spacer name="verticalSpacer_15">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="0">
+                <spacer name="horizontalSpacer_21">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="4">
+                <spacer name="horizontalSpacer_22">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <widget class="QGroupBox" name="groupBox_4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Rate settings</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_22">
+               <item row="0" column="0" colspan="9">
+                <widget class="Line" name="line_7">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="4">
+                <spacer name="verticalSpacer_6">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="4">
+                <widget class="QSpinBox" name="fPrescalingVal">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>256</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="4">
+                <spacer name="verticalSpacer_22">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="3">
+                <widget class="QLabel" name="label_56">
+                 <property name="text">
+                  <string>Prescaling</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="5">
+                <widget class="QLabel" name="label_57">
+                 <property name="text">
+                  <string>· 0.5s</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="2">
+             <widget class="QGroupBox" name="groupBox_2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger timing</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_17">
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_12">
+                 <property name="text">
+                  <string>Trigger signal delay</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1">
+                <widget class="QLabel" name="label_14">
+                 <property name="text">
+                  <string>Time marker delay</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <widget class="QLabel" name="label_15">
+                 <property name="text">
+                  <string>Dead time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="SpinBox4ns" name="fTriggerDelay">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="prefix">
+                  <string/>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>4100</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="2">
+                <widget class="SpinBox4ns" name="fTimeMarkerDelay">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>4100</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="2">
+                <widget class="SpinBox4ns" name="fDeadTime">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>262148</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="4">
+                <widget class="Line" name="line_9">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_2">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="5" column="1">
+                <spacer name="verticalSpacer_5">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="3">
+                <spacer name="horizontalSpacer_19">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="0">
+                <spacer name="horizontalSpacer_20">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="2">
+             <widget class="QGroupBox" name="groupBox_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Clock conditioner (Clk)</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_18">
+               <item row="0" column="0" colspan="6">
+                <widget class="Line" name="line_10">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="10" column="2">
+                <spacer name="verticalSpacer_12">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_13">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="0">
+                <spacer name="horizontalSpacer_25">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="5">
+                <spacer name="horizontalSpacer_26">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="1" colspan="2">
+                <widget class="QComboBox" name="fClockCondFreq">
+                 <property name="frame">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1" colspan="2">
+                <widget class="QLabel" name="label_133">
+                 <property name="text">
+                  <string>DRS sampling frequency (def=2GHz)</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="2" rowspan="3">
+                <spacer name="verticalSpacer_28">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="4">
+                <widget class="QDoubleSpinBox" name="fClockCondFreqRes">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> MHz</string>
+                 </property>
+                 <property name="maximum">
+                  <double>10000.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="4">
+                <widget class="QLabel" name="label_143">
+                 <property name="text">
+                  <string>Calculated rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="3">
+                <layout class="QHBoxLayout" name="horizontalLayout_31">
+                 <item>
+                  <spacer name="horizontalSpacer_43">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fClockCondLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="9" column="1" colspan="4">
+                <layout class="QGridLayout" name="gridLayout_69">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_16">
+                   <property name="text">
+                    <string>R0</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_11">
+                   <property name="text">
+                    <string>R1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_17">
+                   <property name="text">
+                    <string>R8</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_18">
+                   <property name="text">
+                    <string>R9</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="SpinBoxHex" name="fClockCondR0">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="SpinBoxHex" name="fClockCondR1">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="2">
+                  <widget class="SpinBoxHex" name="fClockCondR8">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="3">
+                  <widget class="SpinBoxHex" name="fClockCondR9">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="SpinBoxHex" name="fClockCondR11">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="1">
+                  <widget class="SpinBoxHex" name="fClockCondR13">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="2">
+                  <widget class="SpinBoxHex" name="fClockCondR14">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="3">
+                  <widget class="SpinBoxHex" name="fClockCondR15">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_19">
+                   <property name="text">
+                    <string>R11</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QLabel" name="label_20">
+                   <property name="text">
+                    <string>R13</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_21">
+                   <property name="text">
+                    <string>R14</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="3">
+                  <widget class="QLabel" name="label_22">
+                   <property name="text">
+                    <string>R15</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFtuTab">
+       <attribute name="title">
+        <string>FTUs</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_28">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fFtuDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FTU overview</string>
+          </property>
+          <widget class="QWidget" name="fFtuWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_25" rowstretch="0,0,0,0,0" columnstretch="1,0">
+            <item row="0" column="1" rowspan="5">
+             <widget class="QGroupBox" name="groupBox_8">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>FTM Temperatures</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_4">
+               <item>
+                <layout class="QHBoxLayout" name="horizontalLayout_14">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp0">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp1">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp2">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp3">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="QFrame" name="frame_2">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="frameShape">
+                  <enum>QFrame::StyledPanel</enum>
+                 </property>
+                 <property name="frameShadow">
+                  <enum>QFrame::Sunken</enum>
+                 </property>
+                 <layout class="QGridLayout" name="gridLayout_29">
+                  <property name="margin">
+                   <number>3</number>
+                  </property>
+                  <item row="1" column="0">
+                   <layout class="QGridLayout" name="gridLayout_34">
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <item row="0" column="0">
+                     <widget class="QLabel" name="label_70">
+                      <property name="text">
+                       <string>Patch</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="0">
+                     <widget class="QSpinBox" name="fRatePatch1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="2">
+                     <widget class="QSpinBox" name="fRateBoard1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="0" column="2">
+                     <widget class="QLabel" name="label_72">
+                      <property name="text">
+                       <string>Board</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="1">
+                     <widget class="QSpinBox" name="fRatePatch2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="3">
+                     <widget class="QSpinBox" name="fRateBoard2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                   </layout>
+                  </item>
+                  <item row="0" column="0">
+                   <widget class="RootWidget" name="fFtmRateCanv" native="true">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QGroupBox" name="fFtuGroupCounter">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>FTM Counter</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_33">
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_39">
+                 <property name="text">
+                  <string>Time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_41">
+                 <property name="text">
+                  <string>On time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fFtmTime">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLineEdit" name="fOnTime">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1">
+                <widget class="QLineEdit" name="fTriggerCounter">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_40">
+                 <property name="text">
+                  <string>Trigger counter</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="QDoubleSpinBox" name="fOnTimeRel">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string>%</string>
+                 </property>
+                 <property name="maximum">
+                  <double>100.000000000000000</double>
+                 </property>
+                 <property name="singleStep">
+                  <double>0.010000000000000</double>
+                 </property>
+                 <property name="value">
+                  <double>100.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="2">
+                <widget class="QDoubleSpinBox" name="fTriggerCounterRate">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> Hz</string>
+                 </property>
+                 <property name="maximum">
+                  <double>10000.000000000000000</double>
+                 </property>
+                 <property name="value">
+                  <double>10000.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="0">
+             <widget class="QGroupBox" name="groupBox_7">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>359</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="title">
+               <string>FTU DNAs</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_13">
+               <item row="0" column="0">
+                <widget class="QTextEdit" name="fFtuDNA">
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QGroupBox" name="fFtuGroupEnable">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>359</width>
+                <height>185</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>359</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="title">
+               <string>FTU Enable</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_32">
+               <item row="1" column="0" colspan="6">
+                <layout class="QGridLayout" name="fFtuLedLayout" rowstretch="0,1,1,1,1" columnstretch="0,1,1,1,1,1,1,1,1,1,1,0">
+                 <property name="margin">
+                  <number>4</number>
+                 </property>
+                 <item row="1" column="1">
+                  <widget class="QPushButton" name="fFtuLEDPrototype">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_42">
+                   <property name="text">
+                    <string>Crate #0</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_43">
+                   <property name="text">
+                    <string>Crate #1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_44">
+                   <property name="text">
+                    <string>Crate #2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QLabel" name="label_45">
+                   <property name="text">
+                    <string>Crate #3</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_46">
+                   <property name="text">
+                    <string>0</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_47">
+                   <property name="text">
+                    <string>1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_48">
+                   <property name="text">
+                    <string>2</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="4">
+                  <widget class="QLabel" name="label_49">
+                   <property name="text">
+                    <string>3</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="5">
+                  <widget class="QLabel" name="label_50">
+                   <property name="text">
+                    <string>4</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="6">
+                  <widget class="QLabel" name="label_51">
+                   <property name="text">
+                    <string>5</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="7">
+                  <widget class="QLabel" name="label_52">
+                   <property name="text">
+                    <string>6</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="8">
+                  <widget class="QLabel" name="label_53">
+                   <property name="text">
+                    <string>7</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="9">
+                  <widget class="QLabel" name="label_54">
+                   <property name="text">
+                    <string>8</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="10">
+                  <widget class="QLabel" name="label_55">
+                   <property name="text">
+                    <string>9</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate0">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate1">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate2">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate3">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersTotal">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>40</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="2" column="4">
+                <widget class="QPushButton" name="fFtuPing">
+                 <property name="text">
+                  <string> Ping </string>
+                 </property>
+                 <property name="checkable">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QPushButton" name="fFtuAllOn">
+                 <property name="text">
+                  <string>All on</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <spacer name="horizontalSpacer_13">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="2">
+                <widget class="QPushButton" name="fFtuAllOff">
+                 <property name="text">
+                  <string>All off</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fRatesTab">
+       <attribute name="title">
+        <string>Rates</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_12">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fRatesDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>224</width>
+            <height>710</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FTU rate display</string>
+          </property>
+          <widget class="QWidget" name="fRatesWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_6">
+            <item row="0" column="1" rowspan="2">
+             <widget class="QGroupBox" name="fRatesControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_64" columnstretch="0">
+               <property name="sizeConstraint">
+                <enum>QLayout::SetMinimumSize</enum>
+               </property>
+               <item row="1" column="0">
+                <layout class="QVBoxLayout" name="verticalLayout_5">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_68">
+                   <property name="text">
+                    <string>Pixel</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_12">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QSpinBox" name="fPixelIdx">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1439</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QCheckBox" name="fPixelEnable">
+                     <property name="maximumSize">
+                      <size>
+                       <width>20</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_24">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QPushButton" name="fPixelEnableAll">
+                     <property name="text">
+                      <string>Enable all</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QPushButton" name="fPixelDisableAll">
+                     <property name="text">
+                      <string>Disable all</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_22">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QPushButton" name="fPixelDisableOthers">
+                     <property name="text">
+                      <string>Disable others</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_52">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_16">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_25">
+                   <property name="text">
+                    <string>Patch</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fThresholdIdx">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="specialValueText">
+                    <string>all</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>159</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_96">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="1" column="0" colspan="2">
+                    <widget class="QPushButton" name="fThresholdDisableOthers">
+                     <property name="text">
+                      <string>Disable others</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QPushButton" name="fThresholdEnablePatch">
+                     <property name="text">
+                      <string>Enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fThresholdDisablePatch">
+                     <property name="text">
+                      <string>Disable</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_20">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_40">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="1" column="0">
+                    <widget class="QSpinBox" name="fThresholdCrate">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>3</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fThresholdBoard">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>9</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fThresholdPatch">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>3</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QLabel" name="label_130">
+                     <property name="text">
+                      <string>Patch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_132">
+                     <property name="text">
+                      <string>Crate</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QLabel" name="label_131">
+                     <property name="text">
+                      <string>Board</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_27">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_53">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_24">
+                   <property name="text">
+                    <string>Patch threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fThresholdVal">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>4095</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fThresholdVolt">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>100</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>2500.000000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_54">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_69">
+                   <property name="text">
+                    <string>Patch Rate</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fPatchRate">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="maximum">
+                    <double>999999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_79">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_55">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_248">
+                   <property name="text">
+                    <string>N-out-of-4 threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fNoutof4Val">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>inconsistent</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>4095</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fNoutof4Volt">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>100</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>2500.000000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_249">
+                   <property name="text">
+                    <string>Board rate</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fBoardRate">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="maximum">
+                    <double>999999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_19">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="0">
+                <widget class="Line" name="line_23">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <layout class="QGridLayout" name="gridLayout_66" rowstretch="0,0" columnstretch="0,0">
+                 <property name="sizeConstraint">
+                  <enum>QLayout::SetDefaultConstraint</enum>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_173">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QSpinBox" name="fRatesMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_174">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="QSpinBox" name="fRatesMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                   <property name="value">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="2" column="0">
+                <widget class="QCheckBox" name="fBoardRatesEnabled">
+                 <property name="text">
+                  <string>Display board rates</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" rowspan="2">
+             <widget class="QFrame" name="frame_4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_31">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fRatesCanv" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fTabRateScan">
+       <attribute name="title">
+        <string>Scan</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_108">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fRateScanDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Rate Scan display</string>
+          </property>
+          <widget class="QWidget" name="fRateScanWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_102">
+            <item row="0" column="1" rowspan="2">
+             <widget class="QGroupBox" name="fRateScanControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_104" columnstretch="0">
+               <property name="sizeConstraint">
+                <enum>QLayout::SetMinimumSize</enum>
+               </property>
+               <item row="1" column="0">
+                <layout class="QVBoxLayout" name="verticalLayout_20">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_106">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_253">
+                     <property name="text">
+                      <string>Start</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fRateScanTo">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fRateScanFrom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                     <property name="value">
+                      <number>350</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_252">
+                     <property name="text">
+                      <string>End</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_254">
+                     <property name="text">
+                      <string>Step</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QSpinBox" name="fRateScanStep">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                     <property name="value">
+                      <number>5</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStartTH">
+                   <property name="text">
+                    <string>Start Threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStartN4">
+                   <property name="text">
+                    <string>Start N/4</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_81">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStop">
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_80">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_82">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_83">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_84">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="0">
+                <widget class="Line" name="line_60">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QGroupBox" name="groupBox_26">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Rate vs Threshold</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_22">
+               <item>
+                <widget class="QFrame" name="frame_11">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="frameShape">
+                  <enum>QFrame::StyledPanel</enum>
+                 </property>
+                 <property name="frameShadow">
+                  <enum>QFrame::Sunken</enum>
+                 </property>
+                 <layout class="QGridLayout" name="gridLayout_109">
+                  <property name="margin">
+                   <number>3</number>
+                  </property>
+                  <item row="0" column="0">
+                   <widget class="RootWidget" name="fRateScanCanv" native="true">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
+                   </widget>
+                  </item>
+                  <item row="1" column="0">
+                   <layout class="QGridLayout" name="gridLayout_110">
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <item row="0" column="0">
+                     <widget class="QLabel" name="label_255">
+                      <property name="text">
+                       <string>Patch</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="0">
+                     <widget class="QSpinBox" name="fRateScanPatch1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="2">
+                     <widget class="QSpinBox" name="fRateScanBoard1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="0" column="2">
+                     <widget class="QLabel" name="label_260">
+                      <property name="text">
+                       <string>Board</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="1">
+                     <widget class="QSpinBox" name="fRateScanPatch2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="3">
+                     <widget class="QSpinBox" name="fRateScanBoard2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                   </layout>
+                  </item>
+                 </layout>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fBiasTab">
+       <attribute name="title">
+        <string>Bias</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_86">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fBiasDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>1094</width>
+            <height>336</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>BIAS power supply</string>
+          </property>
+          <widget class="QWidget" name="fBiasWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_81">
+            <item row="1" column="0" colspan="2">
+             <widget class="QGroupBox" name="fBiasControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QHBoxLayout" name="horizontalLayout_46" stretch="0,0,0,0,0,0,0,0,0">
+               <item>
+                <layout class="QGridLayout" name="gridLayout_84">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="8" column="4">
+                  <widget class="QSpinBox" name="fBiasCamPixel">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::UpDownArrows</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>8</number>
+                   </property>
+                   <property name="singleStep">
+                    <number>1</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="3">
+                  <widget class="QSpinBox" name="fBiasCamPatch">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>3</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="2">
+                  <widget class="QSpinBox" name="fBiasCamBoard">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>9</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="1">
+                  <widget class="QSpinBox" name="fBiasCamCrate">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>3</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="4">
+                  <widget class="QLabel" name="label_231">
+                   <property name="text">
+                    <string>Pixel</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="3">
+                  <widget class="QLabel" name="label_222">
+                   <property name="text">
+                    <string>Patch</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="2">
+                  <widget class="QLabel" name="label_224">
+                   <property name="text">
+                    <string>Board</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="1">
+                  <widget class="QLabel" name="label_223">
+                   <property name="text">
+                    <string>Crate</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="0">
+                  <widget class="QLabel" name="label_206">
+                   <property name="text">
+                    <string>Camera</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="4">
+                  <widget class="QSpinBox" name="fBiasHvChannel">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::UpDownArrows</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="3">
+                  <widget class="QSpinBox" name="fBiasHvBoard">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>9</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1" colspan="2">
+                  <widget class="QLabel" name="label_202">
+                   <property name="text">
+                    <string>Bias supply</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="4">
+                  <widget class="QLabel" name="label_230">
+                   <property name="text">
+                    <string>Channel</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="3">
+                  <widget class="QLabel" name="label_229">
+                   <property name="text">
+                    <string>Board</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0" colspan="5">
+                  <widget class="Line" name="line_46">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="0" colspan="4">
+                  <widget class="QLabel" name="label_238">
+                   <property name="text">
+                    <string>Channel selection</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0" colspan="5">
+                  <widget class="Line" name="line_47">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_40">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QGridLayout" name="gridLayout_91">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="2" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasVoltRef">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="decimals">
+                    <number>3</number>
+                   </property>
+                   <property name="maximum">
+                    <double>90.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0" colspan="3">
+                  <widget class="Line" name="line_50">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="2">
+                  <widget class="QLabel" name="label_233">
+                   <property name="text">
+                    <string>target</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_234">
+                   <property name="text">
+                    <string>applied</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QPushButton" name="fBiasNominalLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1" colspan="2">
+                  <widget class="QLabel" name="label_226">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Values for this channel</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasCurrent">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="maximum">
+                    <double>9999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="2">
+                  <widget class="QLabel" name="label_239">
+                   <property name="text">
+                    <string>total</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QPushButton" name="fBiasOverCurrentLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasCalibrated">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="maximum">
+                    <double>9999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="2">
+                  <widget class="QLabel" name="label_261">
+                   <property name="text">
+                    <string>calibrated</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasVoltCur">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="decimals">
+                    <number>3</number>
+                   </property>
+                   <property name="maximum">
+                    <double>90.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_41">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QVBoxLayout" name="verticalLayout_17">
+                 <item>
+                  <widget class="QLabel" name="label_225">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>0</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>Absolute Voltage</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_48">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_47">
+                   <item row="0" column="0">
+                    <widget class="QDoubleSpinBox" name="fBiasVolt">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>false</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::UpDownArrows</enum>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="suffix">
+                      <string> V</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>99.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="2">
+                    <widget class="QDoubleSpinBox" name="fBiasVoltDacVolt">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="prefix">
+                      <string>~</string>
+                     </property>
+                     <property name="suffix">
+                      <string> V</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>99.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1" rowspan="4">
+                    <widget class="Line" name="line_66">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fBiasVoltDac">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="suffix">
+                      <string> DAC</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="maximum">
+                      <number>4095</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QPushButton" name="fBiasApplyChDac">
+                     <property name="text">
+                      <string>Set Ch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QPushButton" name="fBiasApplyGlobalDac">
+                     <property name="text">
+                      <string>Set global</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fBiasApplyChVolt">
+                     <property name="text">
+                      <string>Set Ch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fBiasApplyGlobalVolt">
+                     <property name="text">
+                      <string>Set global</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_43">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="Line" name="line_42">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="Line" name="line_44">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QVBoxLayout" name="verticalLayout_16">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QPushButton" name="fBiasSetToZero">
+                   <property name="text">
+                    <string>Set all to 0</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_39">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fBiasReset">
+                   <property name="text">
+                    <string>Over current reset</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Minimum</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame_5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_82">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fBiasCamA" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_43">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_227">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasCurrentMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>5000</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_55">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_228">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasCurrentMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>110</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QFrame" name="frame_6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_83">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fBiasCamV" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_44">
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_235">
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasVoltMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>5000</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_52">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_236">
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasVoltMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>90</number>
+                   </property>
+                   <property name="value">
+                    <number>75</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFeedbackTab">
+       <attribute name="title">
+        <string>Feedback</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_94">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fFeedbackDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>1048</width>
+            <height>514</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>BIAS voltage feedback system</string>
+          </property>
+          <widget class="QWidget" name="fFeedbackWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_85" rowstretch="3,2">
+            <item row="0" column="0">
+             <widget class="QFrame" name="fFeedbackFrameLeft">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>450</width>
+                <height>450</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_90">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fFeedbackDevCam" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_54">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_256">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackDevMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>-100</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_62">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_257">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackDevMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>100</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QFrame" name="frame_8">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>450</width>
+                <height>450</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_93">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fFeedbackCmdCam" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="fFeedbackRefBox">
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_258">
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackCmdMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>-1000</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_64">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_259">
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackCmdMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>1000</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QFrame" name="fFeedbackCanvLeft">
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_92">
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fFeedbackDev" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="1">
+             <widget class="QFrame" name="frame_10">
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_95">
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fFeedbackCmd" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="2" rowspan="2">
+             <layout class="QVBoxLayout" name="verticalLayout_19">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_23">
+                <property name="title">
+                 <string>Feedback</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_99">
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_247">
+                   <property name="text">
+                    <string>Voltage offset</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QDoubleSpinBox" name="fFeedbackOvervoltage">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <double>-2.500000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>2.500000000000000</double>
+                   </property>
+                   <property name="singleStep">
+                    <double>0.100000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>1.100000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QPushButton" name="fFeedbackStart">
+                   <property name="text">
+                    <string>Start</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_25">
+                <property name="title">
+                 <string>Global</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_101">
+                 <item row="2" column="0">
+                  <spacer name="verticalSpacer_85">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>10</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <spacer name="verticalSpacer_78">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>10</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QPushButton" name="fFeedbackStop">
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QPushButton" name="fFeedbackCalibrate">
+                   <property name="text">
+                    <string>Calibrate</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_77">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>40</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFadTab">
+       <attribute name="title">
+        <string>FAD</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_41">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fFadDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FAD overview</string>
+          </property>
+          <widget class="QWidget" name="fFadWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_53">
+            <item row="0" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_32">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_14">
+                <property name="title">
+                 <string>FAD Controls I</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_43">
+                 <property name="leftMargin">
+                  <number>4</number>
+                 </property>
+                 <item row="1" column="0">
+                  <layout class="QGridLayout" name="gridLayout_38">
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadLedPrescaler">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_99">
+                     <property name="text">
+                      <string>Prescaler</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_102">
+                     <property name="toolTip">
+                      <string>This is&lt;br&gt;a tool tip</string>
+                     </property>
+                     <property name="text">
+                      <string>Version</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QSpinBox" name="fFadPrescaler">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadFwVersion">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="prefix">
+                      <string>V</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QSpinBox" name="fFadPrescalerCmd">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_145">
+                     <property name="text">
+                      <string>Run Number</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fFadRunNumber">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadLedRunNumber">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <spacer name="verticalSpacer_26">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadRunNumberCmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QLabel" name="label_128">
+                     <property name="text">
+                      <string>Min</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QLabel" name="label_129">
+                     <property name="text">
+                      <string>Max</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadTempMin">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadTempMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadRefClockMin">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MHz</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>70000000.000000000000000</double>
+                     </property>
+                     <property name="value">
+                      <double>0.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadRefClockMax">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MHz</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>70000000.000000000000000</double>
+                     </property>
+                     <property name="value">
+                      <double>0.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QLabel" name="label_111">
+                     <property name="text">
+                      <string>Temperature</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadLedTemp">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0">
+                    <widget class="QLabel" name="label_101">
+                     <property name="text">
+                      <string>Reference clock</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="1">
+                    <widget class="QPushButton" name="fFadLedRefClock">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QPushButton" name="fFadLedRefClockTooLow">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QLabel" name="label_103">
+                     <property name="text">
+                      <string>  --  underflow</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QLabel" name="label_92">
+                     <property name="text">
+                      <string>PLL lock</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QPushButton" name="fFadLedPllLock">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QSpinBox" name="fFadRoi">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QSpinBox" name="fFadRoiCmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QSpinBox" name="fFadRoiCh9">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QSpinBox" name="fFadRoiCh9Cmd">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0" colspan="2">
+                    <widget class="QLabel" name="label_161">
+                     <property name="text">
+                      <string>(ch9)</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fFadLedFwVersion">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0" colspan="2">
+                    <widget class="QLabel" name="label_100">
+                     <property name="text">
+                      <string>Region of interest</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_13">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_18">
+                <property name="title">
+                 <string>Memory</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_59">
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_19">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <layout class="QGridLayout" name="gridLayout_49">
+                   <item row="3" column="1">
+                    <spacer name="verticalSpacer_30">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_140">
+                     <property name="text">
+                      <string>Incompl.</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fFadBufferMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MB</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0" colspan="2">
+                    <widget class="QProgressBar" name="fFadBuffer">
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_105">
+                     <property name="text">
+                      <string>Allocated</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <spacer name="verticalSpacer_29">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QSpinBox" name="fFadEvtBufEvt">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_139">
+                     <property name="text">
+                      <string>Complete</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QLabel" name="label_152">
+                     <property name="text">
+                      <string>Write</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="0">
+                    <widget class="QLabel" name="label_153">
+                     <property name="text">
+                      <string>Process</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QLabel" name="label_154">
+                     <property name="text">
+                      <string>Check</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QSpinBox" name="fFadEvtCheck">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QSpinBox" name="fFadEvtWrite">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="1">
+                    <widget class="QSpinBox" name="fFadEvtProc">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QSpinBox" name="fFadEvtBufNew">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QLabel" name="label_164">
+                     <property name="text">
+                      <string>Buffer contents</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="1">
+                    <widget class="QLabel" name="label_142">
+                     <property name="text">
+                      <string>Queues</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="3" column="0">
+                  <spacer name="verticalSpacer_35">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_10">
+                <property name="title">
+                 <string>Statistics</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_71">
+                 <item row="1" column="0">
+                  <layout class="QVBoxLayout" name="verticalLayout_12">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QLabel" name="label_185">
+                     <property name="text">
+                      <string>Run number</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <layout class="QGridLayout" name="gridLayout_70">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="1" column="0">
+                      <widget class="QSpinBox" name="fFadRunNoCur">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="specialValueText">
+                        <string>n/a</string>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="1">
+                      <widget class="QSpinBox" name="fFadRunNoNext">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_190">
+                       <property name="text">
+                        <string>Current</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_191">
+                       <property name="text">
+                        <string>Next</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item>
+                    <widget class="Line" name="line_56">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_113">
+                     <property name="text">
+                      <string>Last</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <layout class="QGridLayout" name="gridLayout_60">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_115">
+                       <property name="text">
+                        <string>Opened</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_117">
+                       <property name="text">
+                        <string>Closed</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QSpinBox" name="fEvtBldLastOpened">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="1">
+                      <widget class="QSpinBox" name="fEvtBldLastClosed">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item>
+                    <widget class="Line" name="line_57">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_186">
+                     <property name="text">
+                      <string>Event counter</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fFadEvtCounter">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_109">
+                     <property name="text">
+                      <string>Event ID</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fEvtBldEventId">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_108">
+                     <property name="text">
+                      <string>Trigger ID</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fEvtBldTriggerId">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_25">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="verticalLayout_21">
+                <property name="rightMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_11">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>307</width>
+                    <height>161</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>359</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="title">
+                   <string>Connection</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_35">
+                   <item row="3" column="0" colspan="2">
+                    <layout class="QGridLayout" name="fFadLedLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0,0,0,0,0,0,0,0,0">
+                     <property name="margin">
+                      <number>4</number>
+                     </property>
+                     <item row="1" column="1">
+                      <widget class="QPushButton" name="fFadLEDPrototype">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="sizePolicy">
+                        <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                         <horstretch>0</horstretch>
+                         <verstretch>0</verstretch>
+                        </sizepolicy>
+                       </property>
+                       <property name="maximumSize">
+                        <size>
+                         <width>18</width>
+                         <height>16777215</height>
+                        </size>
+                       </property>
+                       <property name="text">
+                        <string/>
+                       </property>
+                       <property name="icon">
+                        <iconset resource="design.qrc">
+                         <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                       </property>
+                       <property name="iconSize">
+                        <size>
+                         <width>16</width>
+                         <height>16</height>
+                        </size>
+                       </property>
+                       <property name="checkable">
+                        <bool>false</bool>
+                       </property>
+                       <property name="flat">
+                        <bool>true</bool>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QLabel" name="label_71">
+                       <property name="text">
+                        <string>Crate #0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="0">
+                      <widget class="QLabel" name="label_73">
+                       <property name="text">
+                        <string>Crate #1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="0">
+                      <widget class="QLabel" name="label_74">
+                       <property name="text">
+                        <string>Crate #2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="0">
+                      <widget class="QLabel" name="label_75">
+                       <property name="text">
+                        <string>Crate #3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_76">
+                       <property name="text">
+                        <string>0</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QLabel" name="label_77">
+                       <property name="text">
+                        <string>1</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QLabel" name="label_78">
+                       <property name="text">
+                        <string>2</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="4">
+                      <widget class="QLabel" name="label_79">
+                       <property name="text">
+                        <string>3</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="5">
+                      <widget class="QLabel" name="label_80">
+                       <property name="text">
+                        <string>4</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="6">
+                      <widget class="QLabel" name="label_81">
+                       <property name="text">
+                        <string>5</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="7">
+                      <widget class="QLabel" name="label_82">
+                       <property name="text">
+                        <string>6</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="8">
+                      <widget class="QLabel" name="label_83">
+                       <property name="text">
+                        <string>7</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="9">
+                      <widget class="QLabel" name="label_84">
+                       <property name="text">
+                        <string>8</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="10">
+                      <widget class="QLabel" name="label_85">
+                       <property name="text">
+                        <string>9</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0" colspan="2">
+                    <widget class="Line" name="line_14">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QSpinBox" name="fFadEvtConn">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> boards</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_163">
+                     <property name="text">
+                      <string>Event builder connections</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_15">
+                  <property name="title">
+                   <string>Network</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_51">
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_188">
+                     <property name="text">
+                      <string>Ethernet transmission rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_165">
+                     <property name="text">
+                      <string>per board</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fFadEthernetRateTot">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fFadEthernetRateAvg">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_187">
+                     <property name="text">
+                      <string>Transmission rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QSpinBox" name="fFadTransmission">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evt/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_189">
+                     <property name="text">
+                      <string>Output buffer release rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QSpinBox" name="fFadWriteRate">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evt/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0" colspan="2">
+                    <widget class="Line" name="line_22">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_27">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_12">
+                <property name="title">
+                 <string>FAD DNAs</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_39">
+                 <item row="1" column="0">
+                  <widget class="QTextEdit" name="fFadDNA"/>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_62">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_9">
+                <property name="title">
+                 <string>DACs</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_63">
+                 <item row="1" column="0">
+                  <layout class="QGridLayout" name="gridLayout_62">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="2">
+                    <widget class="QSpinBox" name="fFadDac0">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fFadDac1">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QSpinBox" name="fFadDac2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QSpinBox" name="fFadDac3">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QSpinBox" name="fFadDac4">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QSpinBox" name="fFadDac5">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QSpinBox" name="fFadDac6">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QSpinBox" name="fFadDac0Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadDac1Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QSpinBox" name="fFadDac2Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QSpinBox" name="fFadDac3Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QSpinBox" name="fFadDac4Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QSpinBox" name="fFadDac5Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QSpinBox" name="fFadDac6Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QSpinBox" name="fFadDac7">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QSpinBox" name="fFadDac7Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_162">
+                     <property name="text">
+                      <string>DAC0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_166">
+                     <property name="text">
+                      <string>DAC1</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_167">
+                     <property name="text">
+                      <string>DAC2</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_168">
+                     <property name="text">
+                      <string>DAC3</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_169">
+                     <property name="text">
+                      <string>DAC4</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_170">
+                     <property name="text">
+                      <string>DAC5</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_171">
+                     <property name="text">
+                      <string>DAC6</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QLabel" name="label_172">
+                     <property name="text">
+                      <string>DAC7</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadLedDac1">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadLedDac2">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadLedDac3">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadLedDac4">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadLedDac5">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QPushButton" name="fFadLedDac6">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadLedDac7">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fFadLedDac0">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="verticalSpacer_34">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_61">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="verticalLayout_7">
+                <property name="leftMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_28">
+                  <property name="title">
+                   <string>File format</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_103">
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatNone">
+                     <property name="text">
+                      <string>None</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatDebug">
+                     <property name="text">
+                      <string>Debug</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatFits">
+                     <property name="text">
+                      <string>FITS</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatRaw">
+                     <property name="text">
+                      <string>Raw</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatNone">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatDebug">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatFits">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatRaw">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0" colspan="2">
+                    <widget class="Line" name="line_58">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fDrsCalibStart2">
+                     <property name="text">
+                      <string>DRS Cal</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibBaseline2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibGain2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatCalib">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsBaseline">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsGain">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibTrgOffset2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsTrgOff">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="12" column="1">
+                    <widget class="QPushButton" name="fDrsCalibReset2">
+                     <property name="text">
+                      <string>Reset</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="13" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibROI2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0" colspan="2">
+                    <widget class="Line" name="line_59">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatZFits">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatZFits">
+                     <property name="text">
+                      <string>ZFITS</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_13">
+                <property name="title">
+                 <string>FAD Controls II</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_42">
+                 <item row="2" column="0">
+                  <layout class="QGridLayout" name="gridLayout_37" rowstretch="0,0,0,0,0,0,0,0,0,0,0">
+                   <item row="0" column="2">
+                    <widget class="QPushButton" name="fFadSingleTrigger">
+                     <property name="text">
+                      <string>Trigger</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QPushButton" name="fFadResetTriggerId">
+                     <property name="text">
+                      <string>Reset Evt ID</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QPushButton" name="fFadSocket17">
+                     <property name="text">
+                      <string>Sock 1-7</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadSocket0">
+                     <property name="text">
+                      <string>Sock 0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QPushButton" name="fFadTriggerLineOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QPushButton" name="fFadContTriggerOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QPushButton" name="fFadBusyOnOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QPushButton" name="fFadBusyOffOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QPushButton" name="fFadDrsOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QPushButton" name="fFadDwriteOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QLabel" name="label_137">
+                     <property name="text">
+                      <string>Data Sockets</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QLabel" name="label_134">
+                     <property name="text">
+                      <string>Trigger line</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QLabel" name="label_106">
+                     <property name="text">
+                      <string>Continous trigger</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QLabel" name="label_104">
+                     <property name="text">
+                      <string>Constant busy on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QLabel" name="label_180">
+                     <property name="text">
+                      <string>Constant busy off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QLabel" name="label_93">
+                     <property name="text">
+                      <string>DRS enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QLabel" name="label_94">
+                     <property name="text">
+                      <string>Write enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="3">
+                    <widget class="QLabel" name="label_95">
+                     <property name="text">
+                      <string>DCM locked</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="3">
+                    <widget class="QLabel" name="label_96">
+                     <property name="text">
+                      <string>DCM ready</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QPushButton" name="fFadLedSocket">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fFadLedTriggerLine">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fFadLedContTrigger">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QPushButton" name="fFadLedBusyOn">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QPushButton" name="fFadLedBusyOff">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsEnabled">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsWrite">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0">
+                    <widget class="QPushButton" name="fFadLedDcmLocked">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QPushButton" name="fFadLedDcmReady">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadTriggerLineOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadContTriggerOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadBusyOnOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadBusyOffOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QPushButton" name="fFadDrsOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadDwriteOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QPushButton" name="fFadLedSpiSclk">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="3">
+                    <widget class="QLabel" name="label_97">
+                     <property name="text">
+                      <string>SPI serial clock</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_15">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <spacer name="verticalSpacer_36">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fAdcTab">
+       <attribute name="title">
+        <string>ADC</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_57">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fAdcDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fAdcWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_46">
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_52">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fAdcDataCanv" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <layout class="QVBoxLayout" name="verticalLayout_6">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLabel" name="label_148">
+                <property name="text">
+                 <string>Crate</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcCrate">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>3</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_149">
+                <property name="text">
+                 <string>Board</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcBoard">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>9</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_138">
+                <property name="text">
+                 <string>Chip</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcChip">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="minimum">
+                 <number>0</number>
+                </property>
+                <property name="maximum">
+                 <number>3</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_175">
+                <property name="text">
+                 <string>Channel</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcChannel">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>8</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_33">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcStop">
+                <property name="text">
+                 <string>Stop</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_51">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>10</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcManualScale">
+                <property name="text">
+                 <string>Manual scale</string>
+                </property>
+                <property name="checked">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcDynamicScale">
+                <property name="text">
+                 <string>Dynamic scale</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcAutoScale">
+                <property name="text">
+                 <string>Auto min/max</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_55">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>10</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcPersistent">
+                <property name="text">
+                 <string>Persistent</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcPhysical">
+                <property name="text">
+                 <string>Physical</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_32">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>40</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_184">
+                <property name="text">
+                 <string>DRS Calibration</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="Line" name="line_24">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDrsCalibStart">
+                <property name="text">
+                 <string>Start</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_183">
+                <property name="text">
+                 <string>Baseline</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_40">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibBaselineOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibBaseline">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_182">
+                <property name="text">
+                 <string>Gain</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_41">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibGainOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibGain">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_181">
+                <property name="text">
+                 <string>Trigger Offset</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_42">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibTrgOffsetOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibTrgOffset">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDrsCalibReset">
+                <property name="text">
+                 <string>Reset</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_98">
+                <property name="text">
+                 <string>Region of interest</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fDrsCalibROI">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="readOnly">
+                 <bool>true</bool>
+                </property>
+                <property name="buttonSymbols">
+                 <enum>QAbstractSpinBox::NoButtons</enum>
+                </property>
+                <property name="specialValueText">
+                 <string>n/a</string>
+                </property>
+                <property name="prefix">
+                 <string/>
+                </property>
+                <property name="minimum">
+                 <number>-1</number>
+                </property>
+                <property name="maximum">
+                 <number>9999</number>
+                </property>
+                <property name="value">
+                 <number>-1</number>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fEventTab">
+       <attribute name="title">
+        <string>Events</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_68">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fEventDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fEventWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_65">
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="midLineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_67">
+               <property name="margin">
+                <number>4</number>
+               </property>
+               <property name="horizontalSpacing">
+                <number>-1</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fEventCanv1" native="true"/>
+               </item>
+               <item row="0" column="1">
+                <widget class="QCameraWidget" name="fEventCanv2" native="true"/>
+               </item>
+               <item row="2" column="0">
+                <widget class="QCameraWidget" name="fEventCanv3" native="true"/>
+               </item>
+               <item row="2" column="1">
+                <widget class="QCameraWidget" name="fEventCanv4" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <layout class="QVBoxLayout" name="verticalLayout_10">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QCheckBox" name="fAdcEnable">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="text">
+                 <string>Enable</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="Line" name="line_67">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="fAdcControls">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QLabel" name="label_176">
+                  <property name="text">
+                   <string>Crate</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcCrate_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>3</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_177">
+                  <property name="text">
+                   <string>Board</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcBoard_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>9</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_178">
+                  <property name="text">
+                   <string>Chip</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcChip_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="minimum">
+                   <number>0</number>
+                  </property>
+                  <property name="maximum">
+                   <number>3</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_179">
+                  <property name="text">
+                   <string>Channel</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcChannel_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>8</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_52">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeType">
+                   <enum>QSizePolicy::Fixed</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QCheckBox" name="fEventsStop">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="text">
+                   <string>Stop</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_53">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeType">
+                   <enum>QSizePolicy::Fixed</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>10</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcManualScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Manual scale</string>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcDynamicScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Dynamic scale</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcAutoScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Auto min/max</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_54">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fAuxTab">
+       <attribute name="title">
+        <string>Aux</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_74">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fAuxDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fAuxWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_72">
+            <item row="0" column="0">
+             <layout class="QGridLayout" name="gridLayout_88">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item row="0" column="0">
+               <layout class="QVBoxLayout" name="verticalLayout_14">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_19">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="title">
+                   <string>Camera temperatures</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_73">
+                   <property name="sizeConstraint">
+                    <enum>QLayout::SetDefaultConstraint</enum>
+                   </property>
+                   <property name="bottomMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_36">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <layout class="QVBoxLayout" name="verticalLayout_13">
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_34">
+                       <property name="sizeConstraint">
+                        <enum>QLayout::SetDefaultConstraint</enum>
+                       </property>
+                       <item>
+                        <spacer name="horizontalSpacer_46">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam00">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam01">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_47">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_36">
+                       <item>
+                        <spacer name="horizontalSpacer_44">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam10">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam11">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam12">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam13">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam14">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_45">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_33">
+                       <item>
+                        <spacer name="horizontalSpacer_58">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam20">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam21">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam22">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam23">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam24">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam25">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_59">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_35">
+                       <item>
+                        <spacer name="horizontalSpacer_29">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam30">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam31">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam32">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam33">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam34">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_31">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_37">
+                       <item>
+                        <spacer name="horizontalSpacer_57">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam40">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam41">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam42">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam43">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam44">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam45">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_60">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_38">
+                       <item>
+                        <spacer name="horizontalSpacer_48">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam50">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam51">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam52">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam53">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam54">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_49">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_39">
+                       <item>
+                        <spacer name="horizontalSpacer_50">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam60">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam61">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_51">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="2" column="0">
+                    <layout class="QHBoxLayout" name="horizontalLayout_49">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item>
+                      <spacer name="horizontalSpacer_61">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                       <property name="sizeHint" stdset="0">
+                        <size>
+                         <width>40</width>
+                         <height>20</height>
+                        </size>
+                       </property>
+                      </spacer>
+                     </item>
+                     <item>
+                      <widget class="QLabel" name="label_240">
+                       <property name="text">
+                        <string>Average</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item>
+                      <widget class="QDoubleSpinBox" name="fTempCamAvg">
+                       <property name="sizePolicy">
+                        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                         <horstretch>0</horstretch>
+                         <verstretch>0</verstretch>
+                        </sizepolicy>
+                       </property>
+                       <property name="minimumSize">
+                        <size>
+                         <width>0</width>
+                         <height>0</height>
+                        </size>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>°C</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-999.899999999999977</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                       <property name="value">
+                        <double>0.000000000000000</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_62">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+              <item row="0" column="1">
+               <layout class="QVBoxLayout" name="verticalLayout_15">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_21">
+                  <property name="title">
+                   <string>Humidity</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_76">
+                   <item row="1" column="0">
+                    <layout class="QGridLayout" name="gridLayout_77">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="0" column="0">
+                      <widget class="QDoubleSpinBox" name="fHumidity1">
+                       <property name="enabled">
+                        <bool>false</bool>
+                       </property>
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QDoubleSpinBox" name="fHumidity2">
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QDoubleSpinBox" name="fHumidity4">
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QDoubleSpinBox" name="fHumidity3">
+                       <property name="enabled">
+                        <bool>false</bool>
+                       </property>
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_38">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_20">
+                  <property name="title">
+                   <string>Power</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_75">
+                   <item row="1" column="0">
+                    <layout class="QGridLayout" name="gridLayout_78">
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_193">
+                       <property name="text">
+                        <string>FAD0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QLabel" name="label_194">
+                       <property name="text">
+                        <string>FAD1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="0">
+                      <widget class="QLabel" name="label_195">
+                       <property name="text">
+                        <string>FAD2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="0">
+                      <widget class="QLabel" name="label_196">
+                       <property name="text">
+                        <string>FAD3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="0">
+                      <widget class="QLabel" name="label_197">
+                       <property name="text">
+                        <string>FPA0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="0">
+                      <widget class="QLabel" name="label_198">
+                       <property name="text">
+                        <string>FPA1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="2" colspan="3">
+                      <widget class="Line" name="line_26">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="0">
+                      <widget class="QLabel" name="label_199">
+                       <property name="text">
+                        <string>FPA2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="0">
+                      <widget class="QLabel" name="label_200">
+                       <property name="text">
+                        <string>FPA3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad00">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad10">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad31">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad11">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad02">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad01">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad30">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad12">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad32">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA00">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA01">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA02">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA10">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA11">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA12">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA31">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA32">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1" rowspan="4">
+                      <widget class="Line" name="line_27">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="1" rowspan="4">
+                      <widget class="Line" name="line_28">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="5" rowspan="4">
+                      <widget class="Line" name="line_29">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="5" rowspan="4">
+                      <widget class="Line" name="line_30">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad00">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad10">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad30">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA00">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA10">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad01">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad11">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad31">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA01">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA11">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA31">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad02">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad12">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad32">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA02">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA12">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA32">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="6" colspan="3">
+                      <widget class="Line" name="line_31">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="9" column="2" colspan="3">
+                      <widget class="Line" name="line_32">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="9" column="6" colspan="3">
+                      <widget class="Line" name="line_33">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="0">
+                      <widget class="QLabel" name="label_192">
+                       <property name="text">
+                        <string>ETH</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="0">
+                      <widget class="QLabel" name="label_203">
+                       <property name="text">
+                        <string>FTM</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA30">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFTM1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltETH0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFTM0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA30">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpETH0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFTM0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFTM1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="1" rowspan="5">
+                      <widget class="Line" name="line_34">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="5" rowspan="5">
+                      <widget class="Line" name="line_35">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltETH1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpETH1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFFC">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="0">
+                      <widget class="QLabel" name="label_204">
+                       <property name="text">
+                        <string>FFC</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="4">
+                      <widget class="QLabel" name="label_201">
+                       <property name="text">
+                        <string>FLP</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFLP">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="8">
+                      <widget class="QLabel" name="label_205">
+                       <property name="text">
+                        <string>FLP</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFLP">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFFC">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_37">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_66">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_23">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_30">
+                <property name="title">
+                 <string>MAGIC Weather</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_111">
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_120">
+                   <property name="text">
+                    <string>Temp</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_119">
+                   <property name="text">
+                    <string>Hum</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="0">
+                  <widget class="QLabel" name="label_136">
+                   <property name="text">
+                    <string>Wind-Direction</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicTemp">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-9999.000000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicHum">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>%</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicDew">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-9999.000000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_123">
+                   <property name="text">
+                    <string>Dew</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicPressure">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> hPa</string>
+                   </property>
+                   <property name="decimals">
+                    <number>0</number>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_146">
+                   <property name="text">
+                    <string>Pressure</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicWind">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> km/h</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="6" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicGusts">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> km/h</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="0">
+                  <widget class="QLabel" name="label_126">
+                   <property name="text">
+                    <string>Wind-Speed</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="6" column="0">
+                  <widget class="QLabel" name="label_151">
+                   <property name="text">
+                    <string>Wind-Gusts</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="1">
+                  <widget class="QLineEdit" name="fMagicWindDir">
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="maxLength">
+                    <number>3</number>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_22">
+                <property name="title">
+                 <string>Temperatures</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_79">
+                 <item row="0" column="1">
+                  <spacer name="horizontalSpacer_53">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="4">
+                  <layout class="QGridLayout" name="gridLayout_89">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_215">
+                     <property name="text">
+                      <string>FTM top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_216">
+                     <property name="text">
+                      <string>FTM bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_217">
+                     <property name="text">
+                      <string>FSC bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_218">
+                     <property name="text">
+                      <string>FSC top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QLabel" name="label_219">
+                     <property name="text">
+                      <string>Backpanel</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFTMtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFTMbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFSCtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFSCbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <spacer name="verticalSpacer_75">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="7" column="1">
+                    <spacer name="verticalSpacer_76">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="4" column="1" colspan="2">
+                    <widget class="Line" name="line_51">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFTMtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QLabel" name="label_221">
+                     <property name="text">
+                      <string>PS aux</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFTMbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFSCtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFSCbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="2">
+                  <layout class="QGridLayout" name="gridLayout_87">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="1">
+                    <widget class="QLabel" name="label_220">
+                     <property name="text">
+                      <string>Front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxTopFront">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxBottomFront">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_241">
+                     <property name="text">
+                      <string>Top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_243">
+                     <property name="text">
+                      <string>Bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxTopBack">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QLabel" name="label_245">
+                     <property name="text">
+                      <string>Back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxBottomBack">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1" colspan="2">
+                    <widget class="QLabel" name="label_242">
+                     <property name="text">
+                      <string>Switchbox</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <spacer name="verticalSpacer_71">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="0" column="1">
+                    <spacer name="verticalSpacer_72">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="3">
+                  <spacer name="horizontalSpacer_65">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <layout class="QGridLayout" name="gridLayout_80">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_210">
+                     <property name="text">
+                      <string>Crate 0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_207">
+                     <property name="text">
+                      <string>Crate 1</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_208">
+                     <property name="text">
+                      <string>Crate 3</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_209">
+                     <property name="text">
+                      <string>Crate 2</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QLabel" name="label_212">
+                     <property name="text">
+                      <string>Front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="5">
+                    <widget class="QLabel" name="label_214">
+                     <property name="text">
+                      <string>PS front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate0front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate1front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate2front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate3front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS0front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>99.900000000000006</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS1front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS2front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS3front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate0back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate1back">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate2back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate3back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QLabel" name="label_211">
+                     <property name="text">
+                      <string>Back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS0back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS1back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS2back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS3back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="6">
+                    <widget class="QLabel" name="label_213">
+                     <property name="text">
+                      <string>PS back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <spacer name="verticalSpacer_74">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="6" column="0">
+                    <spacer name="verticalSpacer_73">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="2" column="4" rowspan="4">
+                    <widget class="Line" name="line_45">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fLoggerTab">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <attribute name="title">
+        <string>Logger</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_20">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fLoggerDock">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Data logger overview</string>
+          </property>
+          <widget class="QWidget" name="fLoggerWidget">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_19">
+            <item row="27" column="1">
+             <spacer name="verticalSpacer_4">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Expanding</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="13" column="1">
+             <spacer name="verticalSpacer_21">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="15" column="1">
+             <spacer name="verticalSpacer_23">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="28" column="0" colspan="2">
+             <layout class="QHBoxLayout" name="horizontalLayout_51">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="fGroupEthernet">
+                <property name="title">
+                 <string>Ethernet</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_58">
+                 <item row="2" column="1">
+                  <layout class="QGridLayout" name="gridLayout_48" columnstretch="0,0,0,0">
+                   <item row="3" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadEthernetRateMin">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="maximum">
+                      <double>100000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadEthernetRateMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="maximum">
+                      <double>100000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QLabel" name="label_118">
+                     <property name="text">
+                      <string>Min</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QLabel" name="label_122">
+                     <property name="text">
+                      <string>Max</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <spacer name="verticalSpacer_25">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>10</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QLabel" name="label_141">
+                     <property name="text">
+                      <string>I/O Errors</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadEvtConnErr">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string/>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="verticalSpacer_41">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="3" column="1">
+                  <spacer name="verticalSpacer_42">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="horizontalSpacer_35">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="2">
+                  <spacer name="horizontalSpacer_36">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="Line" name="line_20">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="fGroupOutput">
+                <property name="title">
+                 <string>Open output streams</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_61">
+                 <item row="2" column="1">
+                  <layout class="QGridLayout" name="gridLayout_50">
+                   <item row="1" column="0" colspan="3">
+                    <widget class="QLabel" name="label_114">
+                     <property name="text">
+                      <string>Output stream with maximum run number</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_116">
+                     <property name="text">
+                      <string>Current run</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QSpinBox" name="fEvtsSuccessCurRun">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_121">
+                     <property name="text">
+                      <string>Total</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QSpinBox" name="fEvtsSuccessTotal">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0" colspan="3">
+                    <widget class="Line" name="line_12">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="verticalSpacer_43">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="4" column="1">
+                  <spacer name="verticalSpacer_44">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="2">
+                  <spacer name="horizontalSpacer_39">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="horizontalSpacer_40">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="Line" name="line_21">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0" colspan="2">
+             <widget class="QGroupBox" name="groupBox_29">
+              <property name="title">
+               <string>Event Builder</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_107">
+               <item row="0" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_15">
+                 <item>
+                  <spacer name="horizontalSpacer_27">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fEvtBldLedBin">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>16777215</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>bin</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fEvtBldLedFits">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>16777215</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>fits</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fEvtBldFilename">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_89">
+                 <property name="text">
+                  <string>Newest file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1" rowspan="2">
+                <layout class="QGridLayout" name="gridLayout_36">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderWritten">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="toolTip">
+                    <string>Number of bytes written since startup of data logger.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> MB</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <spacer name="horizontalSpacer_28">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderRate">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Current writing speed</string>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="keyboardTracking">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> kB/s</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_91">
+                 <property name="text">
+                  <string>Rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_90">
+                 <property name="text">
+                  <string>Written</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="3" rowspan="5">
+                <layout class="QVBoxLayout" name="verticalLayout_8">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderFreeSpace">
+                   <property name="toolTip">
+                    <string>Remaining free disk space</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="prefix">
+                    <string/>
+                   </property>
+                   <property name="suffix">
+                    <string> GB</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_86">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>&gt;=1GB</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_13">
+                   <item>
+                    <widget class="QProgressBar" name="fEvtBuilderSpaceLeft">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="contextMenuPolicy">
+                      <enum>Qt::DefaultContextMenu</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                     <property name="textVisible">
+                      <bool>false</bool>
+                     </property>
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="invertedAppearance">
+                      <bool>false</bool>
+                     </property>
+                     <property name="textDirection">
+                      <enum>QProgressBar::BottomToTop</enum>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_87">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Empty</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QTimeEdit" name="fEvtBuilderET">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <italic>false</italic>
+                     <bold>false</bold>
+                     <underline>false</underline>
+                     <strikeout>false</strikeout>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Estimated time until disk is filled with the current writing speed.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="time">
+                    <time>
+                     <hour>0</hour>
+                     <minute>0</minute>
+                     <second>0</second>
+                    </time>
+                   </property>
+                   <property name="currentSection">
+                    <enum>QDateTimeEdit::HourSection</enum>
+                   </property>
+                   <property name="displayFormat">
+                    <string>hh:mm:ss</string>
+                   </property>
+                   <property name="calendarPopup">
+                    <bool>false</bool>
+                   </property>
+                   <property name="timeSpec">
+                    <enum>Qt::OffsetFromUTC</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="2" rowspan="4">
+                <widget class="Line" name="line_64">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_88">
+                 <property name="text">
+                  <string>Open files</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <spacer name="verticalSpacer_3">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" colspan="2">
+             <widget class="QGroupBox" name="groupBox_31">
+              <property name="title">
+               <string>Data Logger</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_112">
+               <item row="0" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_11">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QSpinBox" name="fLoggerOpenFiles">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_58">
+                   <property name="text">
+                    <string>/</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLoggerSubscriptions">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_147">
+                   <property name="text">
+                    <string>subscriptions</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_12">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedLog">
+                   <property name="text">
+                    <string>log</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedRep">
+                   <property name="text">
+                    <string>rep</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedFits">
+                   <property name="text">
+                    <string>fits</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fLoggerFilenameNight">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLineEdit" name="fLoggerFilenameRun">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1" rowspan="2">
+                <layout class="QGridLayout" name="gridLayout_14">
+                 <item row="1" column="0">
+                  <widget class="QDoubleSpinBox" name="fLoggerWritten">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="toolTip">
+                    <string>Number of bytes written since startup of data logger.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> MB</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QDoubleSpinBox" name="fLoggerRate">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Current writing speed</string>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="keyboardTracking">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> kB/s</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="horizontalSpacer_11">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_5">
+                 <property name="text">
+                  <string>Night file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_4">
+                 <property name="text">
+                  <string>Run file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_6">
+                 <property name="text">
+                  <string>Written</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="0">
+                <widget class="QLabel" name="label_7">
+                 <property name="text">
+                  <string>Rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="3" rowspan="7">
+                <layout class="QVBoxLayout" name="verticalLayout_23">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fLoggerFreeSpace">
+                   <property name="toolTip">
+                    <string>Remaining free disk space</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="prefix">
+                    <string/>
+                   </property>
+                   <property name="suffix">
+                    <string> GB</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_3">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>&gt;=1GB</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_9">
+                   <item>
+                    <widget class="QProgressBar" name="fLoggerSpaceLeft">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="contextMenuPolicy">
+                      <enum>Qt::DefaultContextMenu</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                     <property name="textVisible">
+                      <bool>false</bool>
+                     </property>
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="invertedAppearance">
+                      <bool>false</bool>
+                     </property>
+                     <property name="textDirection">
+                      <enum>QProgressBar::BottomToTop</enum>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Empty</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QTimeEdit" name="fLoggerET">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <italic>false</italic>
+                     <bold>false</bold>
+                     <underline>false</underline>
+                     <strikeout>false</strikeout>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Estimated time until disk is filled with the current writing speed.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="time">
+                    <time>
+                     <hour>0</hour>
+                     <minute>0</minute>
+                     <second>0</second>
+                    </time>
+                   </property>
+                   <property name="currentSection">
+                    <enum>QDateTimeEdit::HourSection</enum>
+                   </property>
+                   <property name="displayFormat">
+                    <string>hh:mm:ss</string>
+                   </property>
+                   <property name="calendarPopup">
+                    <bool>false</bool>
+                   </property>
+                   <property name="timeSpec">
+                    <enum>Qt::OffsetFromUTC</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="2" rowspan="5">
+                <widget class="Line" name="line_65">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="1">
+                <spacer name="verticalSpacer_24">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_26">
+                 <property name="text">
+                  <string>Open files</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="6" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_28">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerStart">
+                   <property name="text">
+                    <string>Start</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerStop">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_37">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fCommentsTab">
+       <attribute name="title">
+        <string>/*...*/</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_44">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fCommentsDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Run Comments</string>
+          </property>
+          <widget class="QWidget" name="fCommentsWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_45">
+            <item row="0" column="0">
+             <widget class="QTableView" name="fTableComments">
+              <property name="alternatingRowColors">
+               <bool>true</bool>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_30">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QPushButton" name="fCommentInsertRow">
+                <property name="text">
+                 <string>Insert row</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentUpdateLayout">
+                <property name="text">
+                 <string>Update Layout</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_38">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentSubmit">
+                <property name="text">
+                 <string>Submit</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentUpdate">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="text">
+                 <string>Update</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentRevert">
+                <property name="text">
+                 <string>Revert</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fDimCmdTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="accessibleName">
+        <string/>
+       </property>
+       <attribute name="title">
+        <string>Commands</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimCmdDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim command overview</string>
+          </property>
+          <widget class="QWidget" name="fDimCmdWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_5">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimCmdServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>3</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdCommands">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>8</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="wordWrap">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="4" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_6">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>Arguments</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLineEdit" name="fDimCmdLineEdit">
+                <property name="toolTip">
+                 <string>Arguments to be sent with the command (0x will be interpreted as hex value, a leading 0 as octal)</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDimCmdSend">
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fDimSvcTab">
+       <attribute name="title">
+        <string>Services</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimSvcDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim service overview</string>
+          </property>
+          <widget class="QWidget" name="fDimSvcWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_10" rowstretch="0,0,4,0,3">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_7" stretch="3,5,8">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimSvcServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcServices">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="4" column="0">
+             <widget class="QTextEdit" name="fDimSvcText">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>16777215</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_8">
+              <property name="bottomMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_9">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton">
+                <property name="toolTip">
+                 <string>Clear contents of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_10">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton_2">
+                <property name="toolTip">
+                 <string>Increase size of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton_3">
+                <property name="toolTip">
+                 <string>Decrease size of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab">
+       <attribute name="title">
+        <string>Drive</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_98">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDriveDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Drive controls</string>
+          </property>
+          <widget class="QWidget" name="fDriveWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_97" rowstretch="0,0" columnstretch="0,0">
+            <item row="0" column="1">
+             <widget class="QGroupBox" name="groupBox_27">
+              <property name="title">
+               <string>TPoint LEDs</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_105">
+               <item row="0" column="1">
+                <widget class="QSpinBox" name="spinBox">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="specialValueText">
+                  <string>off</string>
+                 </property>
+                 <property name="maximum">
+                  <number>32767</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <widget class="QSpinBox" name="spinBox_2">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="specialValueText">
+                  <string>off</string>
+                 </property>
+                 <property name="maximum">
+                  <number>32767</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_250">
+                 <property name="text">
+                  <string>Top</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_251">
+                 <property name="text">
+                  <string>Bottom</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <spacer name="horizontalSpacer_63">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="1" column="0">
+             <spacer name="verticalSpacer_90">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fChatTab">
+       <attribute name="title">
+        <string>Chat</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_9">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fChatDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Chat Window</string>
+          </property>
+          <widget class="QWidget" name="fChatWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_8">
+            <item row="0" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_3">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_5">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_6">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="1">
+             <widget class="QTextEdit" name="fChatText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="html">
+               <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_4">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLineEdit" name="fChatMessage">
+                <property name="toolTip">
+                 <string>Entry field for a chat message.</string>
+                </property>
+                <property name="frame">
+                 <bool>true</bool>
+                </property>
+                <property name="dragEnabled">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatSend">
+                <property name="toolTip">
+                 <string>Send a chat message.</string>
+                </property>
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fLogTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <attribute name="title">
+        <string>Log</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fLogDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Logging of MESSAGE services</string>
+          </property>
+          <widget class="QWidget" name="fLogWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_5">
+            <item row="1" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_2">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_2">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_3">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="2" column="1">
+             <widget class="QTextEdit" name="fLogText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="lineWrapMode">
+               <enum>QTextEdit::NoWrap</enum>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="Line" name="line_3">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="fMenuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>1358</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="fMenuLog">
+    <property name="title">
+     <string>Log</string>
+    </property>
+    <addaction name="fMenuLogSaveAs"/>
+   </widget>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionTest"/>
+   </widget>
+   <addaction name="fMenuLog"/>
+   <addaction name="menuFile"/>
+  </widget>
+  <widget class="QStatusBar" name="fStatusBar">
+   <property name="statusTip">
+    <string/>
+   </property>
+   <property name="whatsThis">
+    <string/>
+   </property>
+  </widget>
+  <widget class="QDockWidget" name="dockWidget_2">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>350</width>
+     <height>97</height>
+    </size>
+   </property>
+   <property name="maximumSize">
+    <size>
+     <width>524287</width>
+     <height>524287</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::BottomDockWidgetArea|Qt::TopDockWidgetArea</set>
+   </property>
+   <property name="windowTitle">
+    <string>Warnings and Errors</string>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>8</number>
+   </attribute>
+   <widget class="QWidget" name="dockWidgetContents_2">
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <layout class="QVBoxLayout" name="verticalLayout_3">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetDefaultConstraint</enum>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QDateTimeEdit" name="fUTC">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="font">
+            <font>
+             <weight>50</weight>
+             <bold>false</bold>
+            </font>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+           <property name="readOnly">
+            <bool>true</bool>
+           </property>
+           <property name="buttonSymbols">
+            <enum>QAbstractSpinBox::NoButtons</enum>
+           </property>
+           <property name="dateTime">
+            <datetime>
+             <hour>0</hour>
+             <minute>0</minute>
+             <second>2</second>
+             <year>2000</year>
+             <month>1</month>
+             <day>1</day>
+            </datetime>
+           </property>
+           <property name="currentSection">
+            <enum>QDateTimeEdit::DaySection</enum>
+           </property>
+           <property name="displayFormat">
+            <string>dd.MM.yyyy HH:mm:ss</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_67">
+           <property name="text">
+            <string>UTC</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextClear">
+           <property name="font">
+            <font>
+             <pointsize>9</pointsize>
+            </font>
+           </property>
+           <property name="toolTip">
+            <string>Clear contents of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>Clear</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_4">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontPlus">
+           <property name="toolTip">
+            <string>Increase font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>+</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontMinus">
+           <property name="toolTip">
+            <string>Decrease font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>-</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QTextEdit" name="fTextEdit">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>29</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="undoRedoEnabled">
+          <bool>false</bool>
+         </property>
+         <property name="readOnly">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QDockWidget" name="fStatusDock">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>241</width>
+     <height>787</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
+   </property>
+   <property name="windowTitle">
+    <string>System status</string>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>1</number>
+   </attribute>
+   <widget class="QWidget" name="fStatusContent">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="Line" name="line_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_11">
+       <item row="2" column="0" colspan="5">
+        <widget class="Line" name="line">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QLabel" name="fStatusFTM">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Trigger Master</string>
+         </property>
+         <property name="text">
+          <string>FTM</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QLabel" name="fStatusDNS">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>DIM Domain Name Servcer (DNS)</string>
+         </property>
+         <property name="text">
+          <string>DNS</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="1">
+        <widget class="QLabel" name="label_59">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>FTU</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="1">
+        <widget class="QLabel" name="fStatusFAD">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data acquisition (DRS4 readou)</string>
+         </property>
+         <property name="text">
+          <string>FAD</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="1">
+        <widget class="QLabel" name="label_135">
+         <property name="text">
+          <string>Slow Control</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2">
+        <widget class="QPushButton" name="fStatusDNSLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3">
+        <widget class="QLabel" name="fStatusDNSLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="4">
+        <spacer name="horizontalSpacer_8">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="4" column="2">
+        <widget class="QPushButton" name="fStatusFTMLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="3">
+        <widget class="QLabel" name="fStatusFTMLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="2">
+        <widget class="QPushButton" name="fStatusFTULed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="2">
+        <widget class="QPushButton" name="fStatusFADLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="2">
+        <widget class="QPushButton" name="fStatusFSCLed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="3">
+        <widget class="QLabel" name="fStatusFSCLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="3">
+        <widget class="QLabel" name="fStatusFADLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="3">
+        <widget class="QLabel" name="fStatusFTULabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="2">
+        <widget class="QPushButton" name="fStatusEventBuilderLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="1">
+        <widget class="QLabel" name="label_232">
+         <property name="text">
+          <string>Bias supply</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="1">
+        <widget class="QLabel" name="label_244">
+         <property name="text">
+          <string>Feedback</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="3">
+        <widget class="QLabel" name="fStatusBiasLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="3">
+        <widget class="QLabel" name="fStatusMCPLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="2">
+        <widget class="QPushButton" name="fStatusMCPLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1">
+        <widget class="QLabel" name="label_246">
+         <property name="text">
+          <string>MCP</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="2">
+        <widget class="QPushButton" name="fStatusBiasLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="2">
+        <widget class="QPushButton" name="fStatusDriveLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="1">
+        <widget class="QLabel" name="label_124">
+         <property name="text">
+          <string>Event builder</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="1">
+        <widget class="QLabel" name="label_125">
+         <property name="text">
+          <string>Drive</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="3">
+        <widget class="QLabel" name="fStatusEventBuilderLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="3">
+        <widget class="QLabel" name="fStatusDriveLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="1">
+        <widget class="QLabel" name="label_262">
+         <property name="text">
+          <string>Rate control</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="2">
+        <widget class="QPushButton" name="fStatusFeedbackLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="2">
+        <widget class="QPushButton" name="fStatusRateControlLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="3">
+        <widget class="QLabel" name="fStatusFeedbackLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="3">
+        <widget class="QLabel" name="fStatusRateControlLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="3">
+        <widget class="QLabel" name="fStatusChatLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="2">
+        <widget class="QPushButton" name="fStatusChatLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="1">
+        <widget class="QLabel" name="fStatusChat">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Chat server</string>
+         </property>
+         <property name="text">
+          <string>Chat</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="1">
+        <widget class="QLabel" name="label_60">
+         <property name="text">
+          <string>Scheduler</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="2">
+        <widget class="QPushButton" name="fStatusSchedulerLed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="3">
+        <widget class="QLabel" name="fStatusSchedulerLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="2">
+        <widget class="QPushButton" name="fStatusLoggerLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="2">
+        <widget class="QPushButton" name="fStatusWeatherLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="1">
+        <widget class="QLabel" name="fStatusLogger">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data Logger (writes slow control files)</string>
+         </property>
+         <property name="text">
+          <string>Logger</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="1">
+        <widget class="QLabel" name="fStatusWeather">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data Logger (writes slow control files)</string>
+         </property>
+         <property name="text">
+          <string>Weather</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="3">
+        <widget class="QLabel" name="fStatusLoggerLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="3">
+        <widget class="QLabel" name="fStatusWeatherLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="Line" name="line_4">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_144">
+       <property name="text">
+        <string>FTM</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_25">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QPushButton" name="fFtmStartRun">
+         <property name="text">
+          <string>Start trigger</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="fFtmStopRun">
+         <property name="text">
+          <string>Stop trigger</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_150">
+       <property name="text">
+        <string>FAD</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_54">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item row="0" column="0">
+        <widget class="QPushButton" name="fFadStart">
+         <property name="text">
+          <string>Start</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QPushButton" name="fFadStop">
+         <property name="text">
+          <string>Stop</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QPushButton" name="fFadAbort">
+         <property name="text">
+          <string>Abort</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <layout class="QHBoxLayout" name="horizontalLayout_26">
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="fFadSoftReset">
+           <property name="text">
+            <string>Soft Reset</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fFadHardReset">
+           <property name="text">
+            <string>Hard Reset</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_155">
+       <property name="text">
+        <string>MCP</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_55">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item row="0" column="0">
+        <widget class="QPushButton" name="fMcpStartRun">
+         <property name="text">
+          <string>Start Run</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <widget class="QComboBox" name="fMcpRunType"/>
+       </item>
+       <item row="2" column="0" colspan="3">
+        <layout class="QHBoxLayout" name="horizontalLayout_29">
+         <item>
+          <widget class="QComboBox" name="fMcpNumEvents"/>
+         </item>
+         <item>
+          <widget class="QComboBox" name="fMcpTime"/>
+         </item>
+        </layout>
+       </item>
+       <item row="0" column="1">
+        <widget class="QPushButton" name="fMcpStopRun">
+         <property name="text">
+          <string>Stop Run</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QPushButton" name="fMcpReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_31">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>40</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdown">
+       <property name="text">
+        <string>Shutdown Network</string>
+       </property>
+       <property name="icon">
+        <iconset resource="design.qrc">
+         <normaloff>:/Resources/icons/warning 1.png</normaloff>:/Resources/icons/warning 1.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdownAll">
+       <property name="text">
+        <string>Shutdown Network + DNS</string>
+       </property>
+       <property name="icon">
+        <iconset resource="design.qrc">
+         <normaloff>:/Resources/icons/warning 1.png</normaloff>:/Resources/icons/warning 1.png</iconset>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <action name="fMenuLogSaveAs">
+   <property name="text">
+    <string>Save as...</string>
+   </property>
+  </action>
+  <action name="actionTest">
+   <property name="text">
+    <string>Test</string>
+   </property>
+  </action>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>RootWidget</class>
+   <extends>QWidget</extends>
+   <header>RootWidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>SpinBox4ns</class>
+   <extends>QSpinBox</extends>
+   <header>SpinBox4ns.h</header>
+  </customwidget>
+  <customwidget>
+   <class>SpinBoxHex</class>
+   <extends>QSpinBox</extends>
+   <header>SpinBoxHex.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>QCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources>
+  <include location="design.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>fTextClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1252</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>775</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1313</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>939</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1348</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>927</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>631</x>
+     <y>122</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatMessage</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fChatSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1280</x>
+     <y>793</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>794</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>369</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>433</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>358</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>539</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdLineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fDimCmdSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1280</x>
+     <y>793</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>794</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>178</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>243</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>298</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>372</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>255</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>252</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>318</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1003</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton_2</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton_3</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcAutoScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>399</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcDynamicScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>374</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcManualScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>349</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: branches/FACT++_part_filenames/gui/fact.cc
===================================================================
--- branches/FACT++_part_filenames/gui/fact.cc	(revision 18732)
+++ branches/FACT++_part_filenames/gui/fact.cc	(revision 18732)
@@ -0,0 +1,97 @@
+#include "FactGui.h"
+
+#include <TQtWidget.h>
+#include <TSystem.h>
+
+#include "src/FACT.h"
+#include "src/Dim.h"
+#include "src/Configuration.h"
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The FACT++ Graphical User Interfact (GUI).\n"
+        "\n"
+        "Usage: fact [-c type] [OPTIONS]\n"
+        "  or:  fact [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",  var<string>("localhost"), "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host", var<string>(""),          "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("pixel-map-file",  var<string>("FACTmap111030.txt"), "Pixel mapping file. Used here to get the default reference voltage.")
+        ("CommentDB",  var<string>(""), "")
+        ;
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",  vars<string>(),   "Names of available run-types")
+        ("run-time",  vars<string>(),   "Possible run-times for runs")
+        ("run-count", vars<uint32_t>(), "Number of events for a run")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+    conf.AddOptions(runtype);
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
+
+    cout << "--- Starting QApplication ---" << endl;
+    QApplication app(argc, const_cast<char**>(argv));
+
+    cout << "--- Working around a root bug ---" << endl;
+    {
+        // It seems sometimes TGQt::RegisterWid is called before
+        // fWidgetArray is initialized, so we force that to happen here
+//        TQtWidget(NULL);
+//        cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
+    }
+
+    cout << "--- Instantiating GUI ---" << endl;
+    FactGui gui(conf);
+
+    cout << "--- Show GUI ---" << endl;
+    gui.show();
+
+    cout << "--- Main loop ---" << endl;
+
+    const int rc = app.exec();
+
+    cout << "The end." << endl;
+
+    return rc;
+}
Index: branches/FACT++_part_filenames/munin/agilent_curr
===================================================================
--- branches/FACT++_part_filenames/munin/agilent_curr	(revision 18732)
+++ branches/FACT++_part_filenames/munin/agilent_curr	(revision 18732)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_title Agilent current
+graph_vlabel current
+graph_category environment
+agilent_cur1.label Camera current
+agilent_cur2.label Interlock current
+agilent_cur3.label Bias current
+EOM
+        exit 0;;
+esac
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.220 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur1.value $DATA
+fi
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.224 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur2.value $DATA
+fi
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.222 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur3.value $DATA
+fi
+
Index: branches/FACT++_part_filenames/munin/agilent_volt
===================================================================
--- branches/FACT++_part_filenames/munin/agilent_volt	(revision 18732)
+++ branches/FACT++_part_filenames/munin/agilent_volt	(revision 18732)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_title Agilent voltage
+graph_vlabel volt
+graph_category environment
+agilent_volt1.label Camera voltage (51V)
+agilent_volt2.label Interlock voltage (24V)
+agilent_volt3.label Bias voltage (80V)
+EOM
+        exit 0;;
+esac
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.220 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000"  ] ; then
+   echo agilent_volt1.value $DATA
+fi
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.224 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000"  ] ; then
+   echo agilent_volt2.value $DATA
+fi
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.222 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000" ] ; then
+   echo agilent_volt3.value $DATA
+fi
+
Index: branches/FACT++_part_filenames/munin/container_temp
===================================================================
--- branches/FACT++_part_filenames/munin/container_temp	(revision 18732)
+++ branches/FACT++_part_filenames/munin/container_temp	(revision 18732)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_args --lower-limit -15 -r
+graph_title Temperature
+graph_vlabel temperature
+graph_category environment
+container_temp.label container
+magic_temp.label MAGIC
+magic_dew.label dew point
+container_temp.warning 35
+container_temp.critical 40
+EOM
+        exit 0;;
+esac
+
+
+DATA=`curl -s "http://10.0.100.234/statusjsn.js?components=18179&_=1365876572736"`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+     . /etc/munin/plugins/ticktick.sh
+
+     tickParse "$DATA"
+
+     VAL1=``sensor_values[0].values[0][0].v``
+     MIN1=``sensor_values[0].values[0][0].st[0]``
+     MAX1=``sensor_values[0].values[0][0].st[1]``
+
+     echo container_temp.value $VAL1
+
+fi
+
+
+VAL2=`wget -q -O- http://www.magic.iac.es/site/weather/weather_data.txt | grep TE | cut -c3-`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+    echo magic_temp.value $VAL2
+
+fi
+
+
+VAL3=`wget -q -O- http://www.magic.iac.es/site/weather/weather_data.txt | grep DP | cut -c3-`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+    echo magic_dew.value $VAL3
+
+fi
Index: branches/FACT++_part_filenames/munin/ticktick.sh
===================================================================
--- branches/FACT++_part_filenames/munin/ticktick.sh	(revision 18732)
+++ branches/FACT++_part_filenames/munin/ticktick.sh	(revision 18732)
@@ -0,0 +1,368 @@
+#!/usr/bin/env bash
+
+ARGV=$@
+
+__tick_error() {
+  echo "TICKTICK PARSING ERROR: "$1
+}
+
+# This is from https://github.com/dominictarr/JSON.sh
+# See LICENSE for more info. {{{
+__tick_json_tokenize() {
+  local ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
+  local CHAR='[^[:cntrl:]"\\]'
+  local STRING="\"$CHAR*($ESCAPE$CHAR*)*\""
+  local VARIABLE="\\\$[A-Za-z0-9_]*"
+  local NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'
+  local KEYWORD='null|false|true'
+  local SPACE='[[:space:]]+'
+  egrep -ao "$STRING|$VARIABLE|$NUMBER|$KEYWORD|$SPACE|." --color=never | egrep -v "^$SPACE$"  # eat whitespace
+}
+
+__tick_json_parse_array() {
+  local index=0
+  local ary=''
+
+  read -r Token
+
+  case "$Token" in
+    ']') ;;
+    *)
+      while :
+      do
+        __tick_json_parse_value "$1" "`printf "%012d" $index`"
+
+        (( index++ ))
+        ary+="$Value" 
+
+        read -r Token
+        case "$Token" in
+          ']') break ;;
+          ',') ary+=_ ;;
+          *) 
+            __tick_error "Array syntax malformed"
+            break ;;
+        esac
+        read -r Token
+      done
+      ;;
+  esac
+}
+
+__tick_json_parse_object() {
+  local key
+  local obj=''
+  read -r Token
+
+  case "$Token" in
+    '}') ;;
+    *)
+      while :
+      do
+        # The key, it should be valid
+        case "$Token" in
+          '"'*'"'|\$[A-Za-z0-9_]*) key=$Token ;;
+          # If we get here then we aren't on a valid key
+          *) 
+            __tick_error "Object without a Key"
+            break
+            ;;
+        esac
+
+        # A colon
+        read -r Token
+
+        # The value
+        read -r Token
+        __tick_json_parse_value "$1" "$key"
+        obj+="$key:$Value"        
+
+        read -r Token
+        case "$Token" in
+          '}') break ;;
+          ',') obj+=_ ;;
+        esac
+        read -r Token
+      done
+    ;;
+  esac
+}
+
+__tick_json_parse_value() {
+  local jpath="${1:+$1_}$2"
+  local prej=${jpath//\"/}
+
+  [ "$prej" ] && prej="_$prej"
+  [ "$prej" ] && prej=${prej/-/__hyphen__}
+
+  case "$Token" in
+    '{') __tick_json_parse_object "$jpath" ;;
+    '[') __tick_json_parse_array  "$jpath" ;;
+
+    *) 
+      Value=$Token 
+      Path="$Prefix$prej"
+      Path=${Path/#_/}
+      echo __tick_data_${Path// /}=$Value 
+      ;;
+  esac
+}
+
+__tick_json_parse() {
+  read -r Token
+  __tick_json_parse_value
+  read -r Token
+}
+# }}} End of code from github
+
+# Since the JSON parser is just json parser, and we have a runtime
+# and assignments built on to this, along with javascript like referencing
+# there is a two-pass system, just because it was easier to code.
+#
+# This one separates out the valid JSON from the runtime library support
+# and little fo' language that this is coded in.
+__tick_fun_tokenize_expression() {
+  CHAR='[0-9]*[A-Za-z_$\\][0-9]*'
+  FUNCTION="(push|pop|shift|items|delete|length)[[:space:]]*\("
+  NUMBER='[0-9]*'
+  STRING="$CHAR*($CHAR*)*"
+  PAREN="[()]"
+  QUOTE="[\"\']"
+  SPACE='[[:space:]]+'
+  egrep -ao "$FUNCTION|$STRING|$QUOTE|$PAREN|$NUMBER|$SPACE|." --color=never |\
+    sed "s/^/S/g;s/$/E/g" # Make sure spaces are respected
+}
+
+__tick_fun_parse_expression() {
+  while read -r token; do
+    token=${token/#S/}
+    token=${token/%E/}
+
+    if [ $done ]; then
+      suffix+="$token"
+    else
+      case "$token" in
+        #
+        # The ( makes sure that you can do key.push = 1, not that you would, but
+        # avoiding having reserved words lowers the barrier to entry.  Try doing
+        # say function debugger() {} in javascript and then run it in firefox. That's
+        # a fun one.
+        #
+        # So, it's probably better to be as lenient as possible when dealing with
+        # syntax like this.
+        #
+        'push('|'pop('|'shift('|'items('|'delete('|'length(') function=$token ;;
+        ')') 
+          function=${function/%(/}
+
+          #
+          # Since bash only returns integers, we have to have a significant hack in order
+          # to return a string and then do something to the object. Basically, everything
+          # gets slammed inline.
+          #
+          # Q: Why don't you just reserve a global and then have the subfunction assign to it?
+          #
+          # A: Because the assignment has to happen prior to the function running. There's a number
+          #    of syntax tricks where you can basically emulate "pointers", but then the coder would
+          #    have to know about this "pointer" idea and then deal with their variables a different
+          #    way.
+          #
+          # ---------
+          #
+          # Q: Why don't you just do stuff in a sub-shell and then make sure you emit things in 
+          #    something like a ( ) or a ` ` block?
+          #
+          # A: Because environments get copied into the subshell and then you'd be modifying the
+          #    copy, not the original data.  After the subshell ended, the original environment
+          #    would stay, unmodified.
+          #
+          # ---------
+          # 
+          # Q: Why don't you use the file system and do some magic with subthreads or something?
+          #
+          # A: Really? This should have side-effects? In programming there is something called
+          #    the principle of least astonishment. In a way, the implementation below somewhat
+          #    breaks that principle.  However, using a file system or doing something really 
+          #    funky like that, would violate that principle far more.
+          #
+          # ---------
+          #
+          # But really, I sincerely hate the current solution. If you have a better idea, please
+          # please, open a dialog with me.
+          #
+          case $function in
+            items) echo '${!__tick_data_'"$Prefix"'*}' ;;
+            delete) echo 'unset __tick_data_'${Prefix/%_/} ;;
+            pop) echo '"$( __tick_runtime_last ${!__tick_data_'"$Prefix"'*} )"; __tick_runtime_pop ${!__tick_data_'"$Prefix"'*}' ;;
+            shift) echo '`__tick_runtime_first ${!__tick_data_'"$Prefix"'*}`; __tick_runtime_shift ${!__tick_data_'"$Prefix"'*}' ;;
+            length) echo '`__tick_runtime_length ${!__tick_data_'"$Prefix"'*}`' ;;
+            *) echo "__tick_runtime_$function \"$arguments\" __tick_data_$Prefix "'${!__tick_data_'"$Prefix"'*}'
+          esac
+          unset function
+
+          return
+          ;;
+
+        [0-9]*[A-Za-z]*[0-9]*) [ -n "$function" ] && arguments+="$token" || Prefix+="$token" ;;
+
+        [0-9]*) Prefix+=`printf "%012d" $token` ;;
+        '['|.) Prefix+=_ ;;
+        '"'|"'"|']') ;;
+        =) done=1 ;;
+        # Only respect a space if its in the args.
+        ' ') [ -n "$function" ] && arguments+="$token" ;;
+        *) [ -n "$function" ] && arguments+="$token" || Prefix+="$token" ;;
+      esac
+    fi
+  done
+
+  if [ "$suffix" ]; then
+    echo "$suffix" | __tick_json_tokenize | __tick_json_parse
+  else
+    Prefix=${Prefix/-/__hyphen__}
+    echo '${__tick_data_'$Prefix'}'
+  fi
+}
+
+__tick_fun_parse_tickcount_reset() {
+  # If the tick count is 1 then the backtick we encountered was a 
+  # shell code escape. These ticks need to be preserved for the script.
+  if (( ticks == 1 )); then
+    code+='`'
+  fi
+
+  # This resets the backtick counter so that `some shell code` doesn't
+  # trip up the tokenizer
+  ticks=0
+}
+
+# The purpose of this function is to separate out the Bash code from the
+# special "tick tick" code.  We do this by hijacking the IFS and reading
+# in a single character at a time
+__tick_fun_parse() {
+  IFS=
+
+  # code oscillates between being bash or tick tick blocks.
+  code=''
+
+  # By using -n, we are given that a newline will be an empty token. We
+  # can certainly test for that.
+  while read -r -n 1 token; do
+    case "$token" in
+      '`') 
+
+        # To make sure that we find two sequential backticks, we reset the counter
+        # if it's not a backtick.
+        if (( ++ticks == 2 )); then
+
+          # Whether we are in the stanza or not, is controlled by a different
+          # variable
+          if (( tickFlag == 1 )); then
+            tickFlag=0
+            [ "$code" ] && echo -n "`echo $code | __tick_fun_tokenize_expression | __tick_fun_parse_expression`"
+          else
+            tickFlag=1
+            echo -n "$code"
+          fi
+
+          # If we have gotten this deep, then we are toggling between backtick
+          # and bash. So se should unset the code.
+          unset code
+        fi
+        ;;
+
+      '') 
+        __tick_fun_parse_tickcount_reset
+
+        # this is a newline. If we are in ticktick, then we want to consume
+        # them for the parser later on. If we are in bash, then we want to
+        # preserve them.  We do this by emitting our buffer and then clearing
+        # it
+        if (( tickFlag == 0 )); then
+          echo "$code"
+          unset code
+        fi
+
+        ;;
+
+      *) 
+        __tick_fun_parse_tickcount_reset
+        
+        # This is a buffer of the current code, either bash or backtick
+        code+="$token"
+        ;;
+    esac 
+  done
+}
+
+__tick_fun_tokenize() {
+  # This makes sure that when we rerun the code that we are
+  # interpreting, we don't try to interpret it again.
+  export __tick_var_tokenized=1
+
+  # Using bash's caller function, which is for debugging, we
+  # can find out the name of the program that called us. We 
+  # then cat the calling program and push it through our parser
+  local code=$(cat `caller 1 | cut -d ' ' -f 3` | __tick_fun_parse)
+
+  # Before the execution we search to see if we emitted any parsing errors
+  hasError=`echo "$code" | grep "TICKTICK PARSING ERROR" | wc -l`
+
+  if [ $__tick_var_debug ]; then
+    printf "%s\n" "$code"
+    exit 0
+  fi
+
+  # If there are no errors, then we go ahead
+  if (( hasError == 0 )); then
+    # Take the output and then execute it
+
+    bash -c "$code" -- $ARGV
+  else
+    echo "Parsing Error Detected, see below"
+
+    # printf observes the new lines
+    printf "%s\n" "$code"
+    echo "Parsing stopped here."
+  fi
+
+  exit
+}
+
+## Runtime {
+__tick_runtime_length() { echo $#; }
+__tick_runtime_first() { echo ${!1}; }
+__tick_runtime_last() { eval 'echo $'${!#}; }
+__tick_runtime_pop() { eval unset ${!#}; }
+
+__tick_runtime_shift() {
+  local left=
+  local right=
+
+  for (( i = 1; i <= $# + 1; i++ )) ; do
+    if [ "$left" ]; then
+      eval "$left=\$$right"
+    fi
+    left=$right
+    right=${!i}
+  done
+  eval unset $left
+}
+__tick_runtime_push() {
+  local value="${1/\'/\\\'}"
+  local base=$2
+  local lastarg=${!#}
+
+  let nextval=${lastarg/$base/}+1
+  nextval=`printf "%012d" $nextval`
+
+  eval $base$nextval=\'$value\'
+}
+
+tickParse() {
+  eval `echo "$1" | __tick_json_tokenize | __tick_json_parse | tr '\n' ';'`
+}
+## } End of Runtime
+
+
+[ $__tick_var_tokenized ] || __tick_fun_tokenize
Index: branches/FACT++_part_filenames/pal/.gitignore
===================================================================
--- branches/FACT++_part_filenames/pal/.gitignore	(revision 18732)
+++ branches/FACT++_part_filenames/pal/.gitignore	(revision 18732)
@@ -0,0 +1,55 @@
+*~
+*.trs
+.deps
+.libs
+Makefile
+Makefile.in
+configure
+configure.in
+*.o
+*.lo
+*.lof
+*.la
+*.dSYM
+palTest
+make.log
+make.log.err
+config.h
+config.h.in
+config.log
+config.status
+stamp-h1
+libtool
+*.htx
+*.aux
+*.bbl
+*.blg
+*.dvi
+*.log
+*.htx_tar
+aclocal.m4
+autom4te.cache/
+componentinfo.dtd
+starconf.status
+sun267.ps
+sun267.pdf
+compile
+config.guess
+config.sub
+depcomp
+install-sh
+ltmain.sh
+missing
+stamp-h2
+pal-*.tar.gz
+pubs/adass2012/P56.pdf
+test-driver
+*.os
+.sconf_temp/
+.sconsign.dblite
+libpal.*.dylib
+libpal.a
+libpal.dylib
+sun267.fls
+sun267.out
+sun267.toc
Index: branches/FACT++_part_filenames/pal/COPYING
===================================================================
--- branches/FACT++_part_filenames/pal/COPYING	(revision 18732)
+++ branches/FACT++_part_filenames/pal/COPYING	(revision 18732)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 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 <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: branches/FACT++_part_filenames/pal/COPYING.LESSER
===================================================================
--- branches/FACT++_part_filenames/pal/COPYING.LESSER	(revision 18732)
+++ branches/FACT++_part_filenames/pal/COPYING.LESSER	(revision 18732)
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
Index: branches/FACT++_part_filenames/pal/Makefile.am
===================================================================
--- branches/FACT++_part_filenames/pal/Makefile.am	(revision 18732)
+++ branches/FACT++_part_filenames/pal/Makefile.am	(revision 18732)
@@ -0,0 +1,138 @@
+## Process this file with automake to produce Makefile.in
+
+lib_LTLIBRARIES = libpal.la
+
+
+# Include palOne2One.c separately since it is a combo file
+libpal_la_SOURCES = $(PUBLIC_C_FILES) palOne2One.c $(PRIVATE_C_FILES)
+
+# If we are using a non-standard location
+libpal_la_CPPFLAGS = $(ERFA_CPPFLAGS)
+libpal_la_LDFLAGS = $(ERFA_LDFLAGS)
+
+# Force a link against ERFA and, optionally, starutil
+libpal_la_LIBADD = $(ERFA_LIBADD) $(STARUTIL_LIBADD)
+
+# Misc files
+dist_starnews_DATA = pal.news
+dist_pkgdata_DATA = COPYING COPYING.LESSER README.md
+
+# Make all library code position independent. This is handy for creating
+# shareable libraries from the static ones (Java JNI libraries).
+if !NOPIC
+libpal_la_CFLAGS = $(AM_CFLAGS) -prefer-pic
+endif
+
+# install pal as "star/pal.h"
+cincludedir = $(includedir)/star
+cinclude_HEADERS = pal.h palmac.h
+
+noinst_HEADERS = $(PRIVATE_INCLUDES)
+
+PRIVATE_INCLUDES = pal1.h pal1sofa.h
+
+PUBLIC_C_FILES = \
+palAddet.c \
+palAirmas.c \
+palAltaz.c \
+palAmp.c \
+palAmpqk.c \
+palAop.c \
+palAoppa.c \
+palAoppat.c \
+palAopqk.c \
+palAtmdsp.c \
+palCaldj.c \
+palDafin.c \
+palDe2h.c \
+palDeuler.c \
+palDfltin.c \
+palDh2e.c \
+palDjcal.c \
+palDmat.c \
+palDs2tp.c \
+palDat.c \
+palDmoon.c \
+palDrange.c \
+palDt.c \
+palDtp2s.c \
+palDtps2c.c \
+palDtt.c \
+palEcleq.c \
+palEcmat.c \
+palEl2ue.c \
+palEpco.c \
+palEpv.c \
+palEtrms.c \
+palEqecl.c \
+palEqgal.c \
+palEvp.c \
+palFk45z.c \
+palFk524.c \
+palFk54z.c \
+palGaleq.c \
+palGalsup.c \
+palGe50.c \
+palGeoc.c \
+palIntin.c \
+palMap.c \
+palMappa.c \
+palMapqk.c \
+palMapqkz.c \
+palNut.c \
+palNutc.c \
+palOap.c \
+palOapqk.c \
+palObs.c \
+palPa.c \
+palPcd.c \
+palPertel.c \
+palPertue.c \
+palPlanel.c \
+palPlanet.c \
+palPlante.c \
+palPlantu.c \
+palPm.c \
+palPolmo.c \
+palPrebn.c \
+palPrec.c \
+palPreces.c \
+palPrenut.c \
+palPv2el.c \
+palPv2ue.c \
+palPvobs.c \
+palRdplan.c \
+palRefco.c \
+palRefro.c \
+palRefv.c \
+palRefz.c \
+palRverot.c \
+palRvgalc.c \
+palRvlg.c \
+palRvlsrd.c \
+palRvlsrk.c \
+palSubet.c \
+palSupgal.c \
+palUe2el.c \
+palUe2pv.c \
+palUnpcd.c \
+palVers.c
+
+PRIVATE_C_FILES = \
+pal1Atms.c \
+pal1Atmt.c
+
+stardocs_DATA = @STAR_LATEX_DOCUMENTATION@
+
+TESTS = palTest
+
+check_PROGRAMS = palTest
+palTest_SOURCES = palTest.c
+palTest_LDADD = libpal.la
+
+# A target for making the SUN documentation. We do not do this automatically
+palsun.tex: $(PUBLIC_C_FILES)
+	-rm -f palsun.tex all.c
+	cat $(PUBLIC_C_FILES) > all.c
+	${STARCONF_DEFAULT_PREFIX}/bin/sst/prolat in=all.c out=palsun.tex single=no page=no atask=no document=no
+	-rm all.c
Index: branches/FACT++_part_filenames/pal/README.md
===================================================================
--- branches/FACT++_part_filenames/pal/README.md	(revision 18732)
+++ branches/FACT++_part_filenames/pal/README.md	(revision 18732)
@@ -0,0 +1,76 @@
+PAL - Positional Astronomy Library
+==================================
+
+[![DOI](https://zenodo.org/badge/12517/Starlink/pal.svg)](http://dx.doi.org/10.5281/zenodo.17212)
+
+The PAL library is a partial re-implementation of Pat Wallace's popular SLALIB
+library written in C using a Gnu GPL license and layered on top of the IAU's
+SOFA library (or the BSD-licensed ERFA) where appropriate.
+PAL attempts to stick to the SLA C API where
+possible although `palObs()` has a more C-like API than the equivalent
+`slaObs()` function. In most cases it is enough to simply change the function
+prefix of a routine in order to link against PAL rather than SLALIB. Routines
+calling SOFA use modern nutation and precession models so will return slightly
+different answers than native SLALIB. PAL functions not available in SOFA were
+ported from the Fortran version of SLALIB that ships as part of the Starlink
+software and uses a GPL licence.
+
+See `pal.news` for release notes.
+
+Building
+--------
+
+A simple `configure` script is provided:
+
+    ./configure --prefix=/usr/local --without-starlink
+    make
+    make install
+
+The tests can be run using `make check`. Use `--prefix` to specify an install location.
+Given the history of the source code as a Starlink library the default will be `/star`.
+
+`--without-starlink` forces the configure script to forget about any Starlink
+configurations. This is the safe option if you run into problems when using
+a simple `--prefix` for building outside of Starlink. The configure script
+will assume Starlink is not being used by looking to see if
+`STARCONF_DEFAULT_PREFIX` environment variable is set. You may run into problems if
+`STARCONF_DEFAULT_PREFIX` is set but you use `--without-starlink`.
+
+Requirements
+------------
+
+Requires that either the SOFA C library or the ERFA library variant
+(which has a more permissive license than SOFA) be installed.  The
+`configure` script will abort if neither SOFA nor ERFA can be
+found. SOFA can be obtained either from <http://www.iausofa.org> or
+from an unofficial github repository (with a configure script) at
+<https://github.com/Starlink/sofa/downloads>.  ERFA can be downloaded
+from <https://github.com/liberfa/erfa>.
+
+Missing Functions
+-----------------
+
+Not all SLALIB functions have been added. New routines are added to PAL as demand arises.
+
+
+Language Bindings
+-----------------
+
+A Perl binding of PAL is available (<https://github.com/timj/perl-Astro-PAL>) named `Astro::PAL`
+and is available from CPAN at <https://metacpan.org/module/Astro::PAL>. This is a standalone
+distribution that comes with its own copies of PAL and SOFA and so can be installed directly
+from the `cpan` shell.
+
+A Python binding of PAL is available (<https://github.com/Starlink/palpy>). This is a standalone
+distribution that comes with its own copies of PAL and SOFA.
+
+The Starlink AST (<http://www.starlink.ac.uk/ast>) library now uses PAL and can be built
+either with a private PAL or with an external PAL.
+
+Documentation
+-------------
+
+The description paper for PAL is: ["_PAL: A Positional Astronomy Library_"](http://adsabs.harvard.edu/abs/2013ASPC..475..307J),
+Jenness, T. & Berry, D. S., in _Astronomical Data Anaysis Software and Systems XXII_,
+Friedel, D. N. (ed), ASP Conf. Ser. **475**, p307.
+
Index: branches/FACT++_part_filenames/pal/SConstruct
===================================================================
--- branches/FACT++_part_filenames/pal/SConstruct	(revision 18732)
+++ branches/FACT++_part_filenames/pal/SConstruct	(revision 18732)
@@ -0,0 +1,208 @@
+# PAL SConstruct file
+import os
+
+version = "0.9.2"
+
+def CheckStarlink(context):
+    context.Message( "Checking for Starlink environment...")
+    if "STARLINK_DIR" in os.environ:
+        star_root = os.environ["STARCONF_DEFAULT_PREFIX"]
+        star_lib = os.path.join(star_root, "lib")
+        star_inc = os.path.join(star_root, "include")
+        star_share = os.path.join(star_root, "share")
+        star_bin = os.path.join(star_root, "bin")
+        context.env.PrependENVPath('PATH', star_bin)
+        context.Result(star_root)
+        context.env.Replace(PREFIX = star_root)
+        context.env.Append(CPPPATH=star_inc, LIBPATH=star_lib)
+        return { "root": star_root,
+                 "lib": star_lib,
+                 "include": star_inc,
+                 "bin": star_bin,
+                 "share": star_share, }
+    context.Result("failed")
+    return None
+
+# Allow --prefix to be specified. We don't use it in Starlink mode
+# though
+AddOption('--prefix',
+          dest='prefix',
+          type='string',
+          nargs=1,
+          action='store',
+          metavar='DIR',
+          help='installation prefix')
+
+env = Environment(PREFIX = "/usr/local" ) # Initialise the environment
+
+prefix = GetOption("prefix")
+if prefix:
+    env.Replace(PREFIX = prefix)
+
+
+# Basic configure checks: but not if --help or --clean
+if not GetOption("help") and not GetOption("clean"):
+    conf = Configure(env, custom_tests = {"CheckStarlink": CheckStarlink} )
+
+    if not conf.CheckCC():
+        print("!! Your compiler and/or environment is not correctly configured.")
+        Exit(0)
+
+    if conf.CheckFunc("copysign"):
+        conf.env.Append(CPPDEFINES={"HAVE_COPYSIGN": 1})
+
+    if conf.CheckFunc("isblank"):
+        conf.env.Append(CPPDEFINES={"HAVE_ISBLANK": 1})
+
+    if conf.CheckFunc("strlcpy"):
+        conf.env.Append(CPPDEFINES={"HAVE_STRLCPY": 1})
+
+    # Force -lm if we need it
+    conf.CheckLib("m","sin")
+
+    # Try to look in current directory
+    conf.env.Append(LIBPATH=["."])
+    conf.env.Append(CPPPATH=["."])
+
+    # If we are in a Starlink environment we know we have
+    # ERFA so just set things up for that. This should be done
+    # using a general SCons "are we starlink" plugin
+    starlink = conf.CheckStarlink()
+    if starlink is not None:
+        conf.env.Append(LIBS=["erfa"])
+        conf.env.Append(CPPDEFINES={"HAVE_STAR_UTIL": 1})
+        conf.env.Append(LIBS=["starutil"])
+    else:
+        # Allow PREFIX to work
+        conf.env.Append(CPPPATH=[os.path.join("$PREFIX", "include")])
+        conf.env.Append(LIBPATH=[os.path.join("$PREFIX", "lib")])
+
+        # Maybe starutil will be available
+        if conf.CheckLib("starutil"):
+            conf.env.Append(CPPDEFINES={"HAVE_STAR_UTIL": 1})
+
+        # Need to look for ERFA vs SOFA
+        if not conf.CheckLib("erfa","eraCal2jd"):
+            if conf.CheckLib("sofa_c","iauCal2jd"):
+                conf.env.Append(CPPDEFINES={"HAVE_SOFA_H": 1})
+            else:
+                print("!! Neither ERFA not SOFA library located. Can not continue. !!")
+                Exit(0)
+
+    env = conf.Finish()
+
+# PAL source code
+libpal_sources = [
+    "pal1Atms.c",
+    "pal1Atmt.c",
+    "palAddet.c",
+    "palAirmas.c",
+    "palAltaz.c",
+    "palAmp.c",
+    "palAmpqk.c",
+    "palAop.c",
+    "palAoppa.c",
+    "palAoppat.c",
+    "palAopqk.c",
+    "palAtmdsp.c",
+    "palCaldj.c",
+    "palDafin.c",
+    "palDat.c",
+    "palDe2h.c",
+    "palDeuler.c",
+    "palDfltin.c",
+    "palDh2e.c",
+    "palDjcal.c",
+    "palDmat.c",
+    "palDmoon.c",
+    "palDrange.c",
+    "palDs2tp.c",
+    "palDt.c",
+    "palDtp2s.c",
+    "palDtps2c.c",
+    "palDtt.c",
+    "palEcmat.c",
+    "palEl2ue.c",
+    "palEpco.c",
+    "palEpv.c",
+    "palEqecl.c",
+    "palEqgal.c",
+    "palEtrms.c",
+    "palEvp.c",
+    "palFk45z.c",
+    "palFk524.c",
+    "palFk54z.c",
+    "palGaleq.c",
+    "palGalsup.c",
+    "palGe50.c",
+    "palGeoc.c",
+    "palIntin.c",
+    "palMap.c",
+    "palMappa.c",
+    "palMapqk.c",
+    "palMapqkz.c",
+    "palNut.c",
+    "palNutc.c",
+    "palOap.c",
+    "palOapqk.c",
+    "palObs.c",
+    "palOne2One.c",
+    "palPa.c",
+    "palPertel.c",
+    "palPertue.c",
+    "palPlanel.c",
+    "palPlanet.c",
+    "palPlante.c",
+    "palPlantu.c",
+    "palPm.c",
+    "palPolmo.c",
+    "palPrebn.c",
+    "palPrec.c",
+    "palPreces.c",
+    "palPrenut.c",
+    "palPv2el.c",
+    "palPv2ue.c",
+    "palPvobs.c",
+    "palRdplan.c",
+    "palRefco.c",
+    "palRefro.c",
+    "palRefv.c",
+    "palRefz.c",
+    "palRverot.c",
+    "palRvgalc.c",
+    "palRvlg.c",
+    "palRvlsrd.c",
+    "palRvlsrk.c",
+    "palSubet.c",
+    "palSupgal.c",
+    "palUe2el.c",
+    "palUe2pv.c",
+    ]
+
+sun267_sources = [ "sun267.tex" ]
+sun267_pdf = env.PDF( sun267_sources )
+Default(sun267_pdf)
+
+# Compiler should look in current directory for header files
+
+staticpal = env.StaticLibrary(target="pal", source=libpal_sources)
+sharedpal = env.SharedLibrary( target="pal", source = libpal_sources,
+                               SHLIBVERSION=version )
+
+palTest = env.Program("palTest", "palTest.c", LIBS=["pal"] )
+test_alias = Alias("test", [palTest], palTest[0].abspath)
+AlwaysBuild(test_alias)
+
+installed_sharedlib = env.InstallVersionedLib(os.path.join("$PREFIX","lib"),
+                                            [sharedpal], SHLIBVERSION=version )
+installed_staticlib = env.Install("$PREFIX/lib", [staticpal] )
+
+# Just build the library by default
+Default(sharedpal)
+Default(staticpal)
+
+# install on request
+if "install" in COMMAND_LINE_TARGETS:
+    env.Alias( "install", "$PREFIX" )
+    Default(installed_sharedlib, installed_staticlib)
+
Index: branches/FACT++_part_filenames/pal/bootstrap
===================================================================
--- branches/FACT++_part_filenames/pal/bootstrap	(revision 18732)
+++ branches/FACT++_part_filenames/pal/bootstrap	(revision 18732)
@@ -0,0 +1,134 @@
+#! /bin/sh -
+# original bootstrap file, installed by starconf 1.3, rnum=1003000
+# If you _need_ to change this file, delete `original' in the line above,
+# or else starconf may overwrite it with an updated version.
+#
+# bootstrap.installed.  Generated from bootstrap.installed.in by configure.
+#
+# Bootstrap a checked-out component of the Starlink software tree.
+# Run this script in a freshly checked-out directory to bring the
+# system to the point where you can just type ./configure;make
+#
+# Usage:
+#     ./bootstrap
+
+
+# This script should be installed, by starconf, in all `component
+# directories'.  A `component directory' is a directory which has a
+# component.xml.in file in it.  All component directories will have a
+# manifest file created and installed in .../manifests; non-component
+# directories will not have manifest files.  Everything that's
+# installed should be installed as part of some component
+# or other.
+#
+# The ./bootstrap scripts will stop recursing when they find a
+# component.xml.in file.  They'll warn if they find a component.xml.in
+# file in any AC_CONFIG_SUBDIRS directory, but ignore it, and exit
+# with an error if they do not find a component.xml.in file and there
+# are no AC_CONFIG_SUBDIRS directories in which to search further.
+# That is, the tree of directories which the top-level bootstrap
+# traverses should have component.xml.in files at or above all its
+# leaves.
+
+
+# The starconf below might update bootstrap, if a newer version is
+# available.  Unfortunately, this confuses sh, which appears _not_ to
+# keep open the script it's reading, but to reopen it afresh, or reseek
+# within the file, for each line (or something like that!?).
+# So rewrite this script to a temporary file and exec it.
+tempfile="${TMP-/tmp}/$0-$$.tmp"
+rm -f $tempfile
+echo "trap 'rm -f $tempfile' 0" >$tempfile   # remove temporary at exit
+sed '1,/^--TRAMPOLINE--/d' $0 >>$tempfile    # strip out the trampoline
+exec /bin/sh $tempfile                       # exec the temporary
+--TRAMPOLINE--
+
+
+echo "Bootstrapping `pwd` ..."
+
+if test ! -f configure.ac; then
+    echo "bootstrap: No configure.ac in directory `pwd`" >&2
+    exit 1
+fi
+
+subdirs=`autoconf --trace=AC_CONFIG_SUBDIRS:$% configure.ac`
+
+if test -f component.xml.in; then
+
+    if starconf --show buildsupport >/dev/null 2>&1; then
+
+        # starconf is in the path
+        echo "...using starconf in " `starconf --show buildsupport`
+        starconf || exit 1
+
+    else
+
+        # The temptation here is to use ./starconf.status to find the
+        # starconf that it came from and invoke that explicitly.  Don't do
+        # this, however: we don't want to be too clever, and it's better
+        # to be consistent with the way the autotools behave (the first
+        # one in your path is the one that works, and they don't have this
+        # sort of `phone home' cleverness in them).
+
+        echo "bootstrap error: The starconf application is not in your path"
+
+        # This doesn't stop us being helpful, however.
+        if test -f ./starconf.status; then
+            starconf_home=`./starconf.status --show buildsupport`
+            echo "This directory was last bootstrapped with $starconf_home/bin/starconf"
+        fi
+
+        exit 1
+    fi
+
+    # Check that there are no component.xml.in files in any subdirectories
+    if test -n "$subdirs"; then
+        for d in $subdirs
+        do
+            if test -d "$d" && test -f "$d/component.xml.in"; then
+                echo "bootstrap: warning: ignoring child $d/component.xml.in" >&2
+            fi
+        done
+    fi
+
+    # If STAR_SUPPRESS_AUTORECONF is true in the environment, then we
+    # suppress the call of `autoreconf'.  This is here _only_ so that
+    # the top-level bootstrap file can suppress multiple calls of this
+    # in bootstrap scripts in its children.  This mechanism must not
+    # be used by users, as it is likely to change without warning. 
+    if ${STAR_SUPPRESS_AUTORECONF-false}; then
+        echo "Suppressing autoreconf in" `pwd`
+    else
+        echo autoreconf --install --symlink
+        autoreconf --install --symlink || exit 1
+    fi
+
+else
+
+    # This is not a component directory, so simply recurse into the children.
+
+    # ...if there are any, that is.
+    if test -z "$subdirs"; then
+        echo "bootstrap: error: non-component directory `pwd` has no subdirs" >&2
+        exit 1
+    fi
+
+    # Bootstrap the child directories mentioned in AC_CONFIG_SUBDIRS.
+    # These bootstrap files must exist.
+    for d in $subdirs
+    do
+        if test -d "$d"; then
+            echo "Bootstrapping $d..."
+            if test -f $d/bootstrap; then
+                # good...
+                (cd $d; /bin/sh ./bootstrap)
+            else
+                echo "bootstrap: no file $d/bootstrap" >&2
+                exit 1
+            fi
+        fi
+    done
+
+fi
+
+exit 0
Index: branches/FACT++_part_filenames/pal/codemeta.json
===================================================================
--- branches/FACT++_part_filenames/pal/codemeta.json	(revision 18732)
+++ branches/FACT++_part_filenames/pal/codemeta.json	(revision 18732)
@@ -0,0 +1,41 @@
+{
+    "@context": "https://raw.githubusercontent.com/mbjones/codemeta/master/codemeta.jsonld",
+    "@type": "Code",
+    "author": [
+        {
+            "@id": "http://orcid.org/0000-0001-5982-167X",
+            "@type": "Person",
+            "email": "tim.jenness@gmail.com",
+            "name": "Tim Jenness",
+        },
+        {
+            "@id": "http://orcid.org/0000-0001-6524-2447",
+            "@type": "Person",
+            "email": "d.berry@eaobservatory.org",
+            "name": "David Berry",
+            "affiliation": "East Asian Observatory"
+        },
+        {
+            "@id": "",
+            "@type": "Person",
+            "email": "patrick.wallace@stfc.ac.uk",
+            "name": "Patrick Wallace",
+            "affiliation": "STFC",
+        }
+    ],
+    "identifier": "http://dx.doi.org/10.5281/zenodo.17212",
+    "codeRepository": "https://github.com/Starlink/pal",
+    "dateCreated": "2012-02-08",
+    "description": "The PAL library is a partial re-implementation of Pat Wallace's popular SLALIB library written in C using a Gnu GPL license and layered on top of the IAU's SOFA library (or the BSD-licensed ERFA) where appropriate.",
+    "keywords": "astronomy, Starlink, astrometry",
+    "license": "http://opensource.org/licenses/GPL-3.0",
+    "title": "PAL: Positional Astronomy Library",
+    "version": "0.9.1",
+    "uploadedBy":
+        {
+            "@id": "http://orcid.org/0000-0001-5982-167X",
+            "@type": "Person",
+            "email": "tim.jenness@gmail.com",
+            "name": "Tim Jenness",
+        }
+}
Index: branches/FACT++_part_filenames/pal/component.xml
===================================================================
--- branches/FACT++_part_filenames/pal/component.xml	(revision 18732)
+++ branches/FACT++_part_filenames/pal/component.xml	(revision 18732)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!DOCTYPE component SYSTEM "componentinfo.dtd">
+<!-- component.xml.  Generated from component.xml.in by configure. -->
+
+<component id="pal" support="S">
+  <version>0.9.7</version>
+  <path>libext/pal</path>
+  <description>Positional Astronomy Library</description>
+  <abstract><p>
+    This library is a collection of code designed to aid in
+    replacing the SLA library with code from SOFA.
+
+    Where possible the API is similar to the C SLA API
+    except for the use of a "pal" prefix.
+    </p></abstract>
+  <dependencies >
+    <build>erfa</build><build>starutil</build><link>erfa</link><link>starutil</link><sourceset>star2html</sourceset>
+  </dependencies>
+  <developers>
+    <person>
+      <name>Tim Jenness</name>
+      <uname>t.jenness@jach.hawaii.edu</uname>
+    </person>
+  </developers>
+  <documentation> sun267</documentation>
+  <bugreports>starlink@jiscmail.ac.uk</bugreports>
+  <!-- <notes><p></p></notes> -->
+</component>
Index: branches/FACT++_part_filenames/pal/component.xml.in
===================================================================
--- branches/FACT++_part_filenames/pal/component.xml.in	(revision 18732)
+++ branches/FACT++_part_filenames/pal/component.xml.in	(revision 18732)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!DOCTYPE component SYSTEM "componentinfo.dtd">
+<!-- @configure_input@ -->
+
+<component id="@PACKAGE@" support="S">
+  <version>@PACKAGE_VERSION@</version>
+  <path>libext/pal</path>
+  <description>Positional Astronomy Library</description>
+  <abstract><p>
+    This library is a collection of code designed to aid in
+    replacing the SLA library with code from SOFA.
+
+    Where possible the API is similar to the C SLA API
+    except for the use of a "pal" prefix.
+    </p></abstract>
+  <dependencies @STAR_DEPENDENCIES_ATTRIBUTES@>
+    @STAR_DEPENDENCIES_CHILDREN@
+  </dependencies>
+  <developers>
+    <person>
+      <name>Tim Jenness</name>
+      <uname>t.jenness@jach.hawaii.edu</uname>
+    </person>
+  </developers>
+  <documentation>@STAR_DOCUMENTATION@</documentation>
+  <bugreports>@PACKAGE_BUGREPORT@</bugreports>
+  <!-- <notes><p></p></notes> -->
+</component>
Index: branches/FACT++_part_filenames/pal/configure.ac
===================================================================
--- branches/FACT++_part_filenames/pal/configure.ac	(revision 18732)
+++ branches/FACT++_part_filenames/pal/configure.ac	(revision 18732)
@@ -0,0 +1,138 @@
+dnl    Process this file with autoconf to produce a configure script
+AC_REVISION($Revision: 27534 $)
+
+dnl    Initialisation: package name and version number
+AC_INIT([pal],[0.9.7],[starlink@jiscmail.ac.uk])
+AC_CONFIG_AUX_DIR([build-aux])
+
+dnl    Require autoconf-2.50 at least
+AC_PREREQ([2.69])
+dnl    Require Starlink automake
+AM_INIT_AUTOMAKE(1.8.2-starlink)
+
+dnl    Sanity-check: name a file in the source directory -- if this
+dnl    isn't found then configure will complain
+AC_CONFIG_SRCDIR([pal.h])
+
+dnl    Include defaults for Starlink configurations
+STAR_DEFAULTS
+
+dnl    Would like the version number as an integer
+AC_DEFINE_UNQUOTED([PACKAGE_VERSION_INTEGER], $PACKAGE_VERSION_INTEGER,
+                    [Integer version number, in the form major*1e6+minor*1e3+release])
+
+dnl    Find required versions of the programs we need for configuration
+AC_PROG_CC
+LT_INIT
+
+#   If --with-pic=no is set we should honour that.
+AM_CONDITIONAL(NOPIC, test x$pic_mode = xno)
+
+dnl    copysign and isblank are a c99 feature
+AC_CHECK_FUNCS(copysign)
+AC_CHECK_FUNCS(isblank)
+
+dnl    Use strlcpy if it is available
+AC_SEARCH_LIBS([strlcpy], [bsd])
+AS_IF([test "x$ac_cv_search_strlcpy" = "x-lbsd"], [AC_CHECK_HEADERS([bsd/string.h])])
+AC_CHECK_FUNCS([strlcpy])
+
+# Need the math library
+AC_CHECK_LIB([m],[sin])
+
+dnl    We can not simply test for Starlink starutil because
+dnl    when configure runs in a Starlink build starutil will not
+dnl    have been built yet. If --without-starlink has been used
+dnl    $STARLINK will be unset but to play safe we also check STARCONF_DEFAULT_PREFIX
+dnl    If we do not have Starlink we can do the test anyhow just in case
+
+if test -n "$STARCONF_DEFAULT_PREFIX" -a -n "$STARLINK"
+then
+  AC_MSG_NOTICE([Assuming a Starlink environment])
+  AC_SUBST( STARUTIL_LIBADD, "${libdir}/libstarutil.la" )
+  AC_SUBST( ERFA_LIBADD, "${libdir}/liberfa.la" )
+  AC_SUBST( ERFA_LDFLAGS, "" )
+  AC_DEFINE( [HAVE_STAR_UTIL_H], [1], [Define to 1 if you have the <star/util.h> header file])
+else
+  AC_MSG_NOTICE([Building outside a Starlink environment])
+
+  #   Allow ERFA/SOFA location to be specified using --with-erfa=$ERFA_DIR
+  #   Assumes that the value supplied here is the root and lib and include directories
+  #   are below it. --with-erfa=no or --without-erfa will result in ERFA being
+  #   located in $PREFIX tree. This option is only effective if Starlink is not
+  #   active.
+  AC_ARG_WITH(erfa,
+              AS_HELP_STRING([--with-erfa],
+                             [Location of ERFA/SOFA tree]),
+              [if test -z "$withval" -o "$withval" = yes; then
+                   unset ERFA_DIR
+               elif test "X$withval" = Xno; then
+                   unset ERFA_DIR
+               elif test -d "$withval"; then
+                   ERFA_DIR="$withval"
+               else
+                   unset ERFA_DIR
+                   AC_MSG_WARN([--with-erfa given nonexistent directory; ignored: using default instead])
+               fi])
+  if test -n "$ERFA_DIR"; then
+      AC_MSG_NOTICE([ERFA/SOFA tree located at $ERFA_DIR])
+      erfa_includedir="${ERFA_DIR}/include"
+      erfa_libdir="${ERFA_DIR}/lib"
+  else
+      ERFA_DIR=${prefix}
+      erfa_includedir=${includedir}
+      erfa_libdir=${libdir}
+      AC_MSG_NOTICE([Looking for ERFA/SOFA in default location of $ERFA_DIR])
+  fi
+
+  dnl AC_CHECK_HEADERS does not search $includedir
+  save_CPPFLAGS="$CPPFLAGS"
+  eval CPPFLAGS=\"$CPPFLAGS -I${includedir} -I${erfa_includedir}\"
+  eval CPPFLAGS=\"$CPPFLAGS\"
+  AC_CHECK_HEADERS( star/util.h )
+  CPPFLAGS="$save_CPPFLAGS"
+
+  dnl for some reason AC_CHECK_LIB does not look in the --prefix hierarchy so
+  dnl $libdir is not searched.
+  dnl and we use eval twice to convert $libdir -> $exec_prefix/lib -> $prefix/lib
+  save_LDFLAGS="$LDFLAGS"
+  eval LDFLAGS=\"$LDFLAGS -L${libdir} -L${erfa_libdir}\"
+  eval LDFLAGS=\"$LDFLAGS\"
+
+  AC_CHECK_LIB([starutil],[star_strlcpy],
+               [AC_SUBST(STARUTIL_LIBADD, "-lstarutil")],
+               [AC_SUBST(STARUTIL_LIBADD, "")])
+
+  AC_CHECK_LIB([erfa],[eraCal2jd],
+               [AC_SUBST(ERFA_LIBADD, "-lerfa")],
+               [
+                AC_CHECK_LIB([sofa_c],[iauCal2jd],
+                             [AC_SUBST(ERFA_LIBADD, "-lsofa_c")
+                              AC_DEFINE([HAVE_SOFA_H],[1],"Build with SOFA library")],
+                             [AC_MSG_ERROR(Neither ERFA nor SOFA library located. Can not continue)])
+               ])
+  LDFLAGS="$save_LDFLAGS"
+
+  dnl  Ensure that we use the $prefix values and the ERFA values
+  AC_SUBST( ERFA_LDFLAGS, "-L${libdir} -L${erfa_libdir}" )
+  AC_SUBST( ERFA_CPPFLAGS, "-I${includedir} -I${erfa_includedir}" )
+
+  dnl  Disable document building regardless of --without-stardocs
+  _star_build_docs=false
+fi
+
+dnl    Declare the build and use dependencies for this package
+STAR_DECLARE_DEPENDENCIES(build, [erfa starutil])
+STAR_DECLARE_DEPENDENCIES(link,  [erfa starutil])
+
+dnl    List the sun/ssn/... numbers which document this package and
+dnl    which are present as .tex files in this directory.
+STAR_LATEX_DOCUMENTATION(sun267)
+
+dnl    If you wish to configure extra files, you can add them to this
+dnl    declaration.
+AC_CONFIG_FILES(Makefile component.xml)
+AC_CONFIG_HEADERS( config.h )
+
+dnl    This is the bit that does the actual work
+AC_OUTPUT
Index: branches/FACT++_part_filenames/pal/pal.h
===================================================================
--- branches/FACT++_part_filenames/pal/pal.h	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal.h	(revision 18732)
@@ -0,0 +1,551 @@
+#ifndef PALHDEF
+#define PALHDEF
+
+/*
+*+
+*  Name:
+*     pal.h
+
+*  Purpose:
+*     Function prototypes for PAL routines.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Include file
+
+*  Description:
+*     Function prototypes for PAL routines.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version. Define all SLA prototypes in PAL form even
+*        though none are implemented.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <math.h>
+#include <stdlib.h>
+
+void palAddet ( double rm, double dm, double eq, double *rc, double *dc );
+
+void palAfin ( const char *string, int *iptr, float *a, int *j );
+
+double palAirmas ( double zd );
+
+void palAltaz ( double ha, double dec, double phi,
+                double *az, double *azd, double *azdd,
+                double *el, double *eld, double *eldd,
+                double *pa, double *pad, double *padd );
+
+void palAmp ( double ra, double da, double date, double eq,
+              double *rm, double *dm );
+
+void palAmpqk ( double ra, double da, double amprms[21],
+                double *rm, double *dm );
+
+void palAop ( double rap, double dap, double date, double dut,
+              double elongm, double phim, double hm, double xp,
+              double yp, double tdk, double pmb, double rh,
+              double wl, double tlr,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob );
+
+void palAoppa ( double date, double dut, double elongm, double phim,
+                double hm, double xp, double yp, double tdk, double pmb,
+                double rh, double wl, double tlr, double aoprms[14] );
+
+void palAoppat ( double date, double aoprms[14] );
+
+void palAopqk ( double rap, double dap, const double aoprms[14],
+                double *aob, double *zob, double *hob,
+                double *dob, double *rob );
+
+void palAtmdsp ( double tdk, double pmb, double rh, double wl1,
+                 double a1, double b1, double wl2, double *a2, double *b2 );
+
+void palAv2m ( float axvec[3], float rmat[3][3] );
+
+float palBear ( float a1, float b1, float a2, float b2 );
+
+void palCaf2r ( int ideg, int iamin, float asec, float *rad, int *j );
+
+void palCaldj ( int iy, int im, int id, double *djm, int *j );
+
+void palCalyd ( int iy, int im, int id, int *ny, int *nd, int *j );
+
+void palCc2s ( float v[3], float *a, float *b );
+
+void palCc62s ( float v[6], float *a, float *b, float *r,
+                float *ad, float *bd, float *rd );
+
+void palCd2tf ( int ndp, float days, char *sign, int ihmsf[4] );
+
+void palCldj ( int iy, int im, int id, double *djm, int *j );
+
+void palClyd ( int iy, int im, int id, int *ny, int *nd, int *jstat );
+
+void palCombn ( int nsel, int ncand, int list[], int *j );
+
+void palCr2af ( int ndp, float angle, char *sign, int idmsf[4] );
+
+void palCr2tf ( int ndp, float angle, char *sign, int ihmsf[4] );
+
+void palCs2c ( float a, float b, float v[3] );
+
+void palCs2c6 ( float a, float b, float r, float ad,
+                float bd, float rd, float v[6] );
+
+void palCtf2d ( int ihour, int imin, float sec, float *days, int *j );
+
+void palCtf2r ( int ihour, int imin, float sec, float *rad, int *j );
+
+void palDaf2r ( int ideg, int iamin, double asec, double *rad, int *j );
+
+void palDafin ( const char *string, int *iptr, double *a, int *j );
+
+double palDat ( double dju );
+
+void palDav2m ( double axvec[3], double rmat[3][3] );
+
+double palDbear ( double a1, double b1, double a2, double b2 );
+
+void palDbjin ( const char *string, int *nstrt,
+                double *dreslt, int *jf1, int *jf2 );
+
+void palDc62s ( double v[6], double *a, double *b, double *r,
+                double *ad, double *bd, double *rd );
+
+void palDcc2s ( double v[3], double *a, double *b );
+
+void palDcmpf ( double coeffs[6], double *xz, double *yz, double *xs,
+                double *ys, double *perp, double *orient );
+
+void palDcs2c ( double a, double b, double v[3] );
+
+void palDd2tf ( int ndp, double days, char *sign, int ihmsf[4] );
+
+void palDe2h ( double ha, double dec, double phi,
+               double *az, double *el );
+
+void palDeuler ( const char *order, double phi, double theta, double psi,
+                 double rmat[3][3] );
+
+void palDfltin ( const char *string, int *nstrt, double *dreslt, int *jflag );
+
+void palDh2e ( double az, double el, double phi, double *ha, double *dec);
+
+void palDimxv ( double dm[3][3], double va[3], double vb[3] );
+
+void palDjcal ( int ndp, double djm, int iymdf[4], int *j );
+
+void palDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j );
+
+void palDm2av ( double rmat[3][3], double axvec[3] );
+
+void palDmat ( int n, double *a, double *y, double *d, int *jf, int *iw );
+
+void palDmoon ( double date, double pv[6] );
+
+void palDmxm ( double a[3][3], double b[3][3], double c[3][3] );
+
+void palDmxv ( double dm[3][3], double va[3], double vb[3] );
+
+double palDpav ( double v1[3], double v2[3] );
+
+void palDr2af ( int ndp, double angle, char *sign, int idmsf[4] );
+
+void palDr2tf ( int ndp, double angle, char *sign, int ihmsf[4] );
+
+double palDrange ( double angle );
+
+double palDranrm ( double angle );
+
+void palDs2c6 ( double a, double b, double r, double ad, double bd,
+                double rd, double v[6] );
+
+void palDs2tp ( double ra, double dec, double raz, double decz,
+                double *xi, double *eta, int *j );
+
+double palDsep ( double a1, double b1, double a2, double b2 );
+
+double palDsepv ( double v1[3], double v2[3] );
+
+double palDt ( double epoch );
+
+void palDtf2d ( int ihour, int imin, double sec, double *days, int *j );
+
+void palDtf2r ( int ihour, int imin, double sec, double *rad, int *j );
+
+void palDtp2s ( double xi, double eta, double raz, double decz,
+                double *ra, double *dec );
+
+void palDtp2v ( double xi, double eta, double v0[3], double v[3] );
+
+void palDtps2c ( double xi, double eta, double ra, double dec,
+                 double *raz1, double *decz1,
+                 double *raz2, double *decz2, int *n );
+
+void palDtpv2c ( double xi, double eta, double v[3],
+                 double v01[3], double v02[3], int *n );
+
+double palDtt ( double dju );
+
+void palDv2tp ( double v[3], double v0[3], double *xi, double *eta, int *j );
+
+double palDvdv ( double va[3], double vb[3] );
+
+void palDvn ( double v[3], double uv[3], double *vm );
+
+void palDvxv ( double va[3], double vb[3], double vc[3] );
+
+void palE2h ( float ha, float dec, float phi, float *az, float *el );
+
+void palEarth ( int iy, int id, float fd, float posvel[6] );
+
+void palEcleq ( double dl, double db, double date, double *dr, double *dd );
+
+void palEcmat ( double date, double rmat[3][3] );
+
+void palEcor ( float rm, float dm, int iy, int id, float fd,
+               float *rv, float *tl );
+
+void palEg50 ( double dr, double dd, double *dl, double *db );
+
+void palEl2ue ( double date, int jform, double epoch, double orbinc,
+                double anode, double perih, double aorq, double e,
+                double aorl, double dm, double u[13], int *jstat );
+
+double palEpb ( double date );
+
+double palEpb2d ( double epb );
+
+double palEpco ( char k0, char k, double e );
+
+double palEpj ( double date );
+
+double palEpj2d ( double epj );
+
+void palEpv( double date, double ph[3], double vh[3],
+             double pb[3], double vb[3] );
+
+void palEqecl ( double dr, double dd, double date, double *dl, double *db );
+
+double palEqeqx ( double date );
+
+void palEqgal ( double dr, double dd, double *dl, double *db );
+
+void palEtrms ( double ep, double ev[3] );
+
+void palEuler ( const char *order, float phi, float theta, float psi,
+                float rmat[3][3] );
+
+void palEvp ( double date, double deqx,
+              double dvb[3], double dpb[3],
+              double dvh[3], double dph[3] );
+
+void palFitxy ( int itype, int np, double xye[][2], double xym[][2],
+                double coeffs[6], int *j );
+
+void palFk425 ( double r1950, double d1950, double dr1950,
+                double dd1950, double p1950, double v1950,
+                double *r2000, double *d2000, double *dr2000,
+                double *dd2000, double *p2000, double *v2000 );
+
+void palFk45z ( double r1950, double d1950, double bepoch,
+                double *r2000, double *d2000 );
+
+void palFk524 ( double r2000, double d2000, double dr2000,
+                double dd2000, double p2000, double v2000,
+                double *r1950, double *d1950, double *dr1950,
+                double *dd1950, double *p1950, double *v1950 );
+
+void palFk52h ( double r5, double d5, double dr5, double dd5,
+                double *dr, double *dh, double *drh, double *ddh );
+
+void palFk54z ( double r2000, double d2000, double bepoch,
+                double *r1950, double *d1950,
+                double *dr1950, double *dd1950 );
+
+void palFk5hz ( double r5, double d5, double epoch,
+                double *rh, double *dh );
+
+void palFlotin ( const char *string, int *nstrt, float *reslt, int *jflag );
+
+void palGaleq ( double dl, double db, double *dr, double *dd );
+
+void palGalsup ( double dl, double db, double *dsl, double *dsb );
+
+void palGe50 ( double dl, double db, double *dr, double *dd );
+
+void palGeoc ( double p, double h, double *r, double *z );
+
+double palGmst ( double ut1 );
+
+double palGmsta ( double date, double ut1 );
+
+void palH2e ( float az, float el, float phi, float *ha, float *dec );
+
+void palH2fk5 ( double dr, double dh, double drh, double ddh,
+                double *r5, double *d5, double *dr5, double *dd5 );
+
+void palHfk5z ( double rh, double dh, double epoch,
+                double *r5, double *d5, double *dr5, double *dd5 );
+
+void palImxv ( float rm[3][3], float va[3], float vb[3] );
+
+void palInt2in ( const char *string, int *nstrt, int *ireslt, int *jflag );
+
+void palIntin ( const char *string, int *nstrt, long *ireslt, int *jflag );
+
+void palInvf ( double fwds[6], double bkwds[6], int *j );
+
+void palKbj ( int jb, double e, char *k, int *j );
+
+void palM2av ( float rmat[3][3], float axvec[3] );
+
+void palMap ( double rm, double dm, double pr, double pd,
+              double px, double rv, double eq, double date,
+              double *ra, double *da );
+
+void palMappa ( double eq, double date, double amprms[21] );
+
+void palMapqk ( double rm, double dm, double pr, double pd,
+                double px, double rv, double amprms[21],
+                double *ra, double *da );
+
+void palMapqkz ( double rm, double dm, double amprms[21],
+                 double *ra, double *da );
+
+void palMoon ( int iy, int id, float fd, float posvel[6] );
+
+void palMxm ( float a[3][3], float b[3][3], float c[3][3] );
+
+void palMxv ( float rm[3][3], float va[3], float vb[3] );
+
+void palNut ( double date, double rmatn[3][3] );
+
+void palNutc ( double date, double *dpsi, double *deps, double *eps0 );
+
+void palNutc80 ( double date, double *dpsi, double *deps, double *eps0 );
+
+void palOap ( const char *type, double ob1, double ob2, double date,
+              double dut, double elongm, double phim, double hm,
+              double xp, double yp, double tdk, double pmb,
+              double rh, double wl, double tlr,
+              double *rap, double *dap );
+
+void palOapqk ( const char *type, double ob1, double ob2, const double aoprms[14],
+                double *rap, double *dap );
+
+int palObs( size_t n, const char * c,
+            char * ident, size_t identlen,
+            char * name, size_t namelen,
+            double * w, double * p, double * h );
+
+double palPa ( double ha, double dec, double phi );
+
+double palPav ( float v1[3], float v2[3] );
+
+void palPcd ( double disco, double *x, double *y );
+
+void palPda2h ( double p, double d, double a,
+                double *h1, int *j1, double *h2, int *j2 );
+
+void palPdq2h ( double p, double d, double q,
+                double *h1, int *j1, double *h2, int *j2 );
+
+void palPermut ( int n, int istate[], int iorder[], int *j );
+
+void palPertel (int jform, double date0, double date1,
+                double epoch0, double orbi0, double anode0,
+                double perih0, double aorq0, double e0, double am0,
+                double *epoch1, double *orbi1, double *anode1,
+                double *perih1, double *aorq1, double *e1, double *am1,
+                int *jstat );
+
+void palPertue ( double date, double u[13], int *jstat );
+
+void palPlanel ( double date, int jform, double epoch, double orbinc,
+                 double anode, double perih, double aorq,  double e,
+                 double aorl, double dm, double pv[6], int *jstat );
+
+void palPlanet ( double date, int np, double pv[6], int *j );
+
+void palPlante ( double date, double elong, double phi, int jform,
+                 double epoch, double orbinc, double anode, double perih,
+                 double aorq, double e, double aorl, double dm,
+                 double *ra, double *dec, double *r, int *jstat );
+
+void palPlantu ( double date, double elong, double phi, const double u[13],
+                 double *ra, double *dec, double *r, int *jstat );
+
+void palPm ( double r0, double d0, double pr, double pd,
+             double px, double rv, double ep0, double ep1,
+             double *r1, double *d1 );
+
+void palPolmo ( double elongm, double phim, double xp, double yp,
+                double *elong, double *phi, double *daz );
+
+void palPrebn ( double bep0, double bep1, double rmatp[3][3] );
+
+void palPrec ( double ep0, double ep1, double rmatp[3][3] );
+
+void palPrecl ( double ep0, double ep1, double rmatp[3][3] );
+
+void palPreces ( const char sys[3], double ep0, double ep1,
+                 double *ra, double *dc );
+
+void palPrenut ( double epoch, double date, double rmatpn[3][3] );
+
+void palPv2el ( const double pv[6], double date, double pmass, int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat );
+
+void palPv2ue ( const double pv[6], double date, double pmass,
+                double u[13], int *jstat );
+
+void palPvobs ( double p, double h, double stl, double pv[6] );
+
+void palPxy ( int np, double xye[][2], double xym[][2],
+              double coeffs[6],
+              double xyp[][2], double *xrms, double *yrms, double *rrms );
+
+float palRange ( float angle );
+
+float palRanorm ( float angle );
+
+double palRcc ( double tdb, double ut1, double wl, double u, double v );
+
+void palRdplan ( double date, int np, double elong, double phi,
+                 double *ra, double *dec, double *diam );
+
+void palRefco ( double hm, double tdk, double pmb, double rh,
+                double wl, double phi, double tlr, double eps,
+                double *refa, double *refb );
+
+void palRefcoq ( double tdk, double pmb, double rh, double wl,
+                double *refa, double *refb );
+
+void palRefro ( double zobs, double hm, double tdk, double pmb,
+                double rh, double wl, double phi, double tlr, double eps,
+                double *ref );
+
+void palRefv ( double vu[3], double refa, double refb, double vr[3] );
+
+void palRefz ( double zu, double refa, double refb, double *zr );
+
+double palRverot ( double phi, double ra, double da, double st );
+
+double palRvgalc ( double r2000, double d2000 );
+
+double palRvlg ( double r2000, double d2000 );
+
+double palRvlsrd ( double r2000, double d2000 );
+
+double palRvlsrk ( double r2000, double d2000 );
+
+void palS2tp ( float ra, float dec, float raz, float decz,
+               float *xi, float *eta, int *j );
+
+float palSep ( float a1, float b1, float a2, float b2 );
+
+float palSepv ( float v1[3], float v2[3] );
+
+void palSmat ( int n, float *a, float *y, float *d, int *jf, int *iw );
+
+void palSubet ( double rc, double dc, double eq,
+                double *rm, double *dm );
+
+void palSupgal ( double dsl, double dsb, double *dl, double *db );
+
+void palSvd ( int m, int n, int mp, int np,
+              double *a, double *w, double *v, double *work,
+              int *jstat );
+
+void palSvdcov ( int n, int np, int nc,
+                 double *w, double *v, double *work, double *cvm );
+
+void palSvdsol ( int m, int n, int mp, int np,
+                 double *b, double *u, double *w, double *v,
+                 double *work, double *x );
+
+void palTp2s ( float xi, float eta, float raz, float decz,
+               float *ra, float *dec );
+
+void palTp2v ( float xi, float eta, float v0[3], float v[3] );
+
+void palTps2c ( float xi, float eta, float ra, float dec,
+                float *raz1, float *decz1,
+                float *raz2, float *decz2, int *n );
+
+void palTpv2c ( float xi, float eta, float v[3],
+                float v01[3], float v02[3], int *n );
+
+void palUe2el ( const double u[13], int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat );
+
+void palUe2pv ( double date, double u[13], double pv[], int *jstat );
+
+void palUnpcd ( double disco, double *x, double *y );
+
+void palV2tp ( float v[3], float v0[3], float *xi, float *eta, int *j );
+
+float palVdv ( float va[3], float vb[3] );
+
+int palVers ( char * verstring, size_t verlen );
+
+void palVn ( float v[3], float uv[3], float *vm );
+
+void palVxv ( float va[3], float vb[3], float vc[3] );
+
+void palXy2xy ( double x1, double y1, double coeffs[6],
+                double *x2, double *y2 );
+
+double palZd ( double ha, double dec, double phi );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: branches/FACT++_part_filenames/pal/pal.news
===================================================================
--- branches/FACT++_part_filenames/pal/pal.news	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal.news	(revision 18732)
@@ -0,0 +1,150 @@
+PAL Library
+
+The Starlink Positional Astronomy Library (PAL) is a C implementation of the
+SLALIB API. It is distributed under the GPL and uses the SOFA library wherever
+possible.
+
+V0.9.7
+
+- Enable light deflection in palAmpqk.
+
+V0.9.5
+
+- Add light deflection to palAmpqk. SLALIB always had it but for some reason
+  the relevant piece of code never got ported to PAL.
+
+V0.9.4
+
+- Add light deflection to palMapqkz (thanks to Scott Daniel)
+- Add test for palMapqk (thanks to Scott Daniel)
+- Correctly disable documentation build when running outside of a Starlink
+  environment.
+
+V0.9.3
+
+- Fix value of small in palFk524. Typo in port from Fortran
+  had removed the "e" in the number. Thanks to @danielsf.
+
+- Add test for palFk524
+
+V0.9.2
+
+Thanks to Github user @nega0 for some BSD build fixes.
+
+More STARCONF_DEFAULT_PREFIX fixes for Scons file and for
+document building.
+
+New configure option: --with-erfa to allow the ERFA
+root location to be specified.
+
+V0.9.1
+
+Now checks for STARCONF_DEFAULT_PREFIX environment variable
+when deciding whether a Starlink environment is present. This
+was more reliable than checking for STARLINK_DIR.
+
+V0.9.0
+
+Add palPcd and palUnpcd
+
+V0.8.0
+
+Add palEcleq
+
+V0.7.0
+
+Add palPolmo.
+
+V0.6.0
+
+New function, palVers, provides API access to the PAL
+version number as a string or integer.
+
+V0.5.1
+
+The configure script was getting confused if run outside of
+Starlink without using --without-starlink. This was because
+$STARLINK is set in the script if it is not set and the
+configure script was assuming $STARLINK would be unset
+outside of a Starlink environment. The configure script
+now keys off $STARLINK_DIR but that may interact badly
+if STARLINK_DIR is set and --without-starlink is used.
+
+An experimental SConstruct build script is now available
+for users of scons.
+
+SUN/267 has been synced up with the associated source files.
+
+palIntin now respects the isblank configure check (as it
+should have done all along).
+
+Minor clean ups of some source prologues.
+
+V0.5.0
+
+Now works with ERFA <https://github.com/liberfa/erfa>.
+The configure script has been modified to first check
+for ERFA and then check for SOFA.
+
+V0.4.0
+
+New routines ported from SLA: palRefv, palAtmdsp
+New routine inherited from SOFA: palRefcoq
+
+Minimum SOFA version now 2013-12-02
+
+palObs: Now includes telescope positions for APEX and NANTEN2
+
+The autotools build scripts now require autoconf version 2.69.
+
+Thanks to Github user @nega0 for some BSD build fixes.
+
+A subset of the routines have been relicensed using LGPL
+to allow them to be included in the AST library. Thanks to
+Patrick Wallace for giving this permission.
+
+A paper on PAL has been published at ADASS:
+  http://adsabs.harvard.edu/abs/2013ASPC..475..307J
+
+V0.3.0
+
+Add refraction code and support palOap and palAop. For closer compatibility
+with SLA for testing purposes the refraction routines internally use
+clones of slaNutc, slaEqeqx, slaGmst and slaGeoc. Once the code has
+been verified further the PAL/SOFA routines will be used instead. Switching
+routines seems to change the results in palTest by about 0.05 arcsec.
+
+V0.2.0
+
+Improve configure script when not in a Starlink build environment. Use
+
+  ./configure --prefix=/path/to/install
+
+when Starlink is not available and add --without-starlink if Starlink
+is present but should not be used.
+
+V0.1.5
+
+Explcitly look for libm rather than relying on SOFA to pull it in.
+
+V0.1.4
+
+Check for isblank() function and fall back if it is missing.
+
+V0.1.3
+
+Improve copysign() detection.
+
+V0.1.2
+
+Check for copysign() c99 function and fall back if it is missing.
+
+V0.1.1
+
+The palDrange function has been modified so that it now returns +PI if
+the supplied angle is +PI (previously, it returned -PI in these cases).
+
+
+V0.1.0
+
+Initial release with sufficient SLALIB API for AST and the Astro::Coords perl module.
Index: branches/FACT++_part_filenames/pal/pal1.h
===================================================================
--- branches/FACT++_part_filenames/pal/pal1.h	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal1.h	(revision 18732)
@@ -0,0 +1,68 @@
+/*
+*+
+*  Name:
+*     pal1.h
+
+*  Purpose:
+*     Definitions of private PAL functions
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Include file
+
+*  Invocation:
+*     #include "pal1.h"
+
+*  Description:
+*     Function prototypes for private PAL functions. Will not be
+*     installed.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#ifndef PAL1HDEF
+#define PAL1HDEF
+
+void pal1Atms ( double rt, double tt, double dnt, double gamal,
+                double r, double * dn, double * rdndr );
+
+void pal1Atmt ( double r0, double t0, double alpha, double gamm2,
+                double delm2, double c1, double c2, double c3, double c4,
+                double c5, double c6, double r,
+                double *t, double *dn, double *rdndr );
+
+#endif
Index: branches/FACT++_part_filenames/pal/pal1Atms.c
===================================================================
--- branches/FACT++_part_filenames/pal/pal1Atms.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal1Atms.c	(revision 18732)
@@ -0,0 +1,95 @@
+/*
+*+
+*  Name:
+*     pal1Atms
+
+*  Purpose:
+*     Calculate stratosphere parameters
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void pal1Atms ( double rt, double tt, double dnt, double gamal,
+*                     double r, double * dn, double * rdndr );
+
+*  Arguments:
+*     rt = double (Given)
+*         Height of the tropopause from centre of the Earth (metre)
+*     tt = double (Given)
+*         Temperature at the tropopause (K)
+*     dnt = double (Given)
+*         Refractive index at the tropopause
+*     gamal = double (Given)
+*         Constant of the atmospheric model = G*MD/R
+*     r = double (Given)
+*         Current distance from the centre of the Earth (metre)
+*     dn = double * (Returned)
+*         Refractive index at r
+*     rdndr = double * (Returned)
+*         r * rate the refractive index is changing at r
+
+*  Description:
+*     Refractive index and derivative with respect to height for the
+*     stratosphere.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Internal routine used by palRefro.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal1.h"
+
+void pal1Atms ( double rt, double tt, double dnt, double gamal,
+                double r, double * dn, double * rdndr ) {
+
+  double b;
+  double w;
+
+  b = gamal / tt;
+  w = (dnt - 1.0) * exp( -b * (r-rt) );
+  *dn = 1.0 + w;
+  *rdndr = -r * b * w;
+
+}
+
Index: branches/FACT++_part_filenames/pal/pal1Atmt.c
===================================================================
--- branches/FACT++_part_filenames/pal/pal1Atmt.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal1Atmt.c	(revision 18732)
@@ -0,0 +1,119 @@
+/*
+*+
+*  Name:
+*     pal1Atmt
+
+*  Purpose:
+*     Calculate troposphere parameters
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void pal1Atmt ( double r0, double t0, double alpha, double gamm2,
+*                     double delm2, double c1, double c2, double c3,
+*                     double c4, double c5, double c6, double r,
+*                     double *t, double *dn, double *rdndr );
+
+*  Arguments:
+*     r0 = double (Given)
+*         Height of observer from centre of the Earth (metre)
+*     t0 = double (Given)
+*         Temperature of the observer (K)
+*     alpha = double (Given)
+*         Alpha (see HMNAO paper)
+*     gamm2 = double (Given)
+*         Gamma minus 2 (see HMNAO paper)
+*     delm2 = double (Given)
+*         Delta minus 2 (see HMNAO paper)
+*     c1 = double (Given)
+*         Useful term (see palRefro source)
+*     c2 = double (Given)
+*         Useful term (see palRefro source)
+*     c3 = double (Given)
+*         Useful term (see palRefro source)
+*     c4 = double (Given)
+*         Useful term (see palRefro source)
+*     c5 = double (Given)
+*         Useful term (see palRefro source)
+*     c6 = double (Given)
+*         Useful term (see palRefro source)
+*     r = double (Given)
+*         Current distance from the centre of the Earth (metre)
+*     t = double * (Returned)
+*         Temperature at r (K)
+*     dn = double * (Returned)
+*         Refractive index at r.
+*     rdndr = double * (Returned)
+*         r * rate the refractive index is changing at r.
+
+*  Description:
+*     Refractive index and derivative with respect to height for
+*     the troposphere.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Internal routine used by palRefro
+*     - Note that in the optical case c5 and c6 are zero.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version, copied from Fortran SLA source.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "palmac.h"
+#include "pal1.h"
+
+void pal1Atmt ( double r0, double t0, double alpha, double gamm2,
+                double delm2, double c1, double c2, double c3, double c4,
+                double c5, double c6, double r,
+                double *t, double *dn, double *rdndr ) {
+
+  double tt0;
+  double tt0gm2;
+  double tt0dm2;
+
+  *t = DMAX( DMIN( t0 - alpha*(r-r0), 320.0), 100.0 );
+  tt0 = *t / t0;
+  tt0gm2 = pow( tt0, gamm2 );
+  tt0dm2 = pow( tt0, delm2 );
+  *dn = 1.0 + ( c1 * tt0gm2 - ( c2 - c5 / *t ) * tt0dm2 ) * tt0;
+  *rdndr = r * ( -c3 * tt0gm2 + ( c4 - c6 / tt0 ) * tt0dm2 );
+
+}
Index: branches/FACT++_part_filenames/pal/pal1sofa.h
===================================================================
--- branches/FACT++_part_filenames/pal/pal1sofa.h	(revision 18732)
+++ branches/FACT++_part_filenames/pal/pal1sofa.h	(revision 18732)
@@ -0,0 +1,142 @@
+/*
+*+
+*  Name:
+*     pal1sofa.h
+
+*  Purpose:
+*     Mappings of ERFA names to SOFA names
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Include file
+
+*  Invocation:
+*     #include "pal1sofa.h"
+
+*  Description:
+*     PAL will work with both SOFA and ERFA libraries and the
+*     difference is generally a change in prefix. This include
+*     file maps the ERFA form of functions to the SOFA form
+*     and includes the relevant sofa.h vs erfa.h file.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - PAL uses the ERFA form by default.
+
+*  History:
+*     2014-07-29 (TIMJ):
+*        Initial version
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2014 Tim Jenness
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#ifndef PAL1SOFAHDEF
+#define PAL1SOFAHDEF
+
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+# if HAVE_SOFA_H
+
+#  include "sofa.h"
+#  include "sofam.h"
+
+   /* Must replace ERFA with SOFA */
+
+#  define eraA2af iauA2af
+#  define eraA2tf iauA2tf
+#  define eraAf2a iauAf2a
+#  define eraAnp iauAnp
+#  define eraAnpm iauAnpm
+#  define eraC2s iauC2s
+#  define eraCal2jd iauCal2jd
+#  define eraD2tf iauD2tf
+#  define eraDat iauDat
+#  define eraEe06a iauEe06a
+#  define eraEpb iauEpb
+#  define eraEpb2jd iauEpb2jd
+#  define eraEpj iauEpj
+#  define eraEpj2jd iauEpj2jd
+#  define eraEpv00 iauEpv00
+#  define eraFk5hz iauFk5hz
+#  define eraGd2gc iauGd2gc
+#  define eraGmst06 iauGmst06
+#  define eraHfk5z iauHfk5z
+#  define eraIr iauIr
+#  define eraJd2cal iauJd2cal
+#  define eraNut06a iauNut06a
+#  define eraObl06 iauObl06
+#  define eraP06e iauP06e
+#  define eraPap iauPap
+#  define eraPas iauPas
+#  define eraPdp iauPdp
+#  define eraPlan94 iauPlan94
+#  define eraPmat06 iauPmat06
+#  define eraPn iauPn
+#  define eraPnm06a iauPnm06a
+#  define eraPxp iauPxp
+#  define eraRefco iauRefco
+#  define eraRm2v iauRm2v
+#  define eraRv2m iauRv2m
+#  define eraRx iauRx
+#  define eraRxp iauRxp
+#  define eraRxpv iauRxpv
+#  define eraRxr iauRxr
+#  define eraRy iauRy
+#  define eraRz iauRz
+#  define eraS2c iauS2c
+#  define eraSepp iauSepp
+#  define eraSeps iauSeps
+#  define eraStarpm iauStarpm
+#  define eraTf2a iauTf2a
+#  define eraTf2d iauTf2d
+#  define eraTr iauTr
+#  define eraTrxp iauTrxp
+
+/* These are from sofam.h */
+
+#  define ERFA_WGS84 WGS84
+
+#  define ERFA_DJ00 DJ00
+#  define ERFA_DJY DJY
+#  define ERFA_DAU DAU
+
+# else
+
+#  include "erfa.h"
+#  include "erfam.h"
+
+/* No further action required */
+
+# endif
+
+#endif
Index: branches/FACT++_part_filenames/pal/palAddet.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAddet.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAddet.c	(revision 18732)
@@ -0,0 +1,112 @@
+/*
+*+
+*  Name:
+*     palAddet
+
+*  Purpose:
+*     Add the E-terms to a pre IAU 1976 mean place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAddet ( double rm, double dm, double eq,
+*                     double *rc, double *dc );
+
+*  Arguments:
+*     rm = double (Given)
+*        RA without E-terms (radians)
+*     dm = double (Given)
+*        Dec without E-terms (radians)
+*     eq = double (Given)
+*        Besselian epoch of mean equator and equinox
+*     rc = double * (Returned)
+*        RA with E-terms included (radians)
+*     dc = double * (Returned)
+*        Dec with E-terms included (radians)
+
+*  Description:
+*     Add the E-terms (elliptic component of annual aberration)
+*     to a pre IAU 1976 mean place to conform to the old
+*     catalogue convention.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     Most star positions from pre-1984 optical catalogues (or
+*     derived from astrometry using such stars) embody the
+*     E-terms.  If it is necessary to convert a formal mean
+*     place (for example a pulsar timing position) to one
+*     consistent with such a star catalogue, then the RA,Dec
+*     should be adjusted using this routine.
+
+*  See Also:
+*     Explanatory Supplement to the Astronomical Ephemeris,
+*     section 2D, page 48.
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palAddet ( double rm, double dm, double eq, double *rc, double *dc ) {
+  double a[3];   /* The E-terms */
+  double v[3];
+  int i;
+
+  /* Note the preference for IAU routines */
+
+  /* Retrieve the E-terms */
+  palEtrms( eq, a );
+
+  /* Spherical to Cartesian */
+  eraS2c( rm, dm, v );
+
+  /* Include the E-terms */
+  for (i=0; i<3; i++) {
+    v[i] += a[i];
+  }
+
+  /* Cartesian to spherical */
+  eraC2s( v, rc, dc );
+
+  /* Bring RA into conventional range */
+  *rc = eraAnp( *rc );
+
+}
Index: branches/FACT++_part_filenames/pal/palAirmas.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAirmas.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAirmas.c	(revision 18732)
@@ -0,0 +1,99 @@
+/*
+*+
+*  Name:
+*     palAirmas
+
+*  Purpose:
+*     Air mass at given zenith distance
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palAirmas( double zd );
+
+*  Arguments:
+*     zd = double (Given)
+*        Observed zenith distance (radians)
+
+*  Description:
+*     Calculates the airmass at the observed zenith distance.
+
+*  Authors:
+*     PTW: Patrick Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The "observed" zenith distance referred to above means "as
+*       affected by refraction".
+*     - Uses Hardie's (1962) polynomial fit to Bemporad's data for
+*       the relative air mass, X, in units of thickness at the zenith
+*       as tabulated by Schoenberg (1929). This is adequate for all
+*       normal needs as it is accurate to better than 0.1% up to X =
+*       6.8 and better than 1% up to X = 10. Bemporad's tabulated
+*       values are unlikely to be trustworthy to such accuracy
+*       because of variations in density, pressure and other
+*       conditions in the atmosphere from those assumed in his work.
+*     - The sign of the ZD is ignored.
+*     - At zenith distances greater than about ZD = 87 degrees the
+*       air mass is held constant to avoid arithmetic overflows.
+
+*  See Also:
+*     - Hardie, R.H., 1962, in "Astronomical Techniques"
+*         ed. W.A. Hiltner, University of Chicago Press, p180.
+*     - Schoenberg, E., 1929, Hdb. d. Ap.,
+*         Berlin, Julius Springer, 2, 268.
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version from the SLA/F version including documentation.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory.
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+
+double palAirmas ( double zd ) {
+  double seczm1;
+  double airmass;
+
+  /* Have maximum zenith distance of 87 deg */
+  const double MAXZD = 87.0 * PAL__DD2R;
+
+  zd = fabs(zd);
+  zd = ( zd > MAXZD ? MAXZD : zd );
+
+  seczm1 = (1.0 / cos(zd)) - 1.0;
+  airmass = 1.0 + seczm1*(0.9981833 - seczm1*(0.002875 + 0.0008083*seczm1));
+  return airmass;
+}
Index: branches/FACT++_part_filenames/pal/palAltaz.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAltaz.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAltaz.c	(revision 18732)
@@ -0,0 +1,200 @@
+/*
+*+
+*  Name:
+*     palAltaz
+
+*  Purpose:
+*     Positions, velocities and accelerations for an altazimuth telescope mount
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palAltaz ( double ha, double dec, double phi,
+*                double *az, double *azd, double *azdd,
+*                double *el, double *eld, double *eldd,
+*                double *pa, double *pad, double *padd );
+
+*  Arguments:
+*     ha = double (Given)
+*        Hour angle (radians)
+*     dec = double (Given)
+*        Declination (radians)
+*     phi = double (Given)
+*        Observatory latitude (radians)
+*     az = double * (Returned)
+*        Azimuth (radians)
+*     azd = double * (Returned)
+*        Azimuth velocity (radians per radian of HA)
+*     azdd = double * (Returned)
+*        Azimuth acceleration (radians per radian of HA squared)
+*     el = double * (Returned)
+*        Elevation (radians)
+*     eld = double * (Returned)
+*        Elevation velocity (radians per radian of HA)
+*     eldd = double * (Returned)
+*        Elevation acceleration (radians per radian of HA squared)
+*     pa = double * (Returned)
+*        Parallactic angle (radians)
+*     pad = double * (Returned)
+*        Parallactic angle velocity (radians per radian of HA)
+*     padd = double * (Returned)
+*        Parallactic angle acceleration (radians per radian of HA squared)
+
+
+*  Description:
+*     Positions, velocities and accelerations for an altazimuth
+*     telescope mount.
+
+*  Authors:
+*     PTW: P. T. Wallace
+*     TIMJ: Tim Jenness (Cornell)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Natural units are used throughout.  HA, DEC, PHI, AZ, EL
+*       and ZD are in radians.  The velocities and accelerations
+*       assume constant declination and constant rate of change of
+*       hour angle (as for tracking a star);  the units of AZD, ELD
+*       and PAD are radians per radian of HA, while the units of AZDD,
+*       ELDD and PADD are radians per radian of HA squared.  To
+*       convert into practical degree- and second-based units:
+*
+*         angles * 360/2pi -> degrees
+*         velocities * (2pi/86400)*(360/2pi) -> degree/sec
+*         accelerations * ((2pi/86400)**2)*(360/2pi) -> degree/sec/sec
+*
+*       Note that the seconds here are sidereal rather than SI.  One
+*       sidereal second is about 0.99727 SI seconds.
+*
+*       The velocity and acceleration factors assume the sidereal
+*       tracking case.  Their respective numerical values are (exactly)
+*       1/240 and (approximately) 1/3300236.9.
+*
+*     - Azimuth is returned in the range 0-2pi;  north is zero,
+*       and east is +pi/2.  Elevation and parallactic angle are
+*       returned in the range +/-pi.  Parallactic angle is +ve for
+*       a star west of the meridian and is the angle NP-star-zenith.
+*
+*     - The latitude is geodetic as opposed to geocentric.  The
+*       hour angle and declination are topocentric.  Refraction and
+*       deficiencies in the telescope mounting are ignored.  The
+*       purpose of the routine is to give the general form of the
+*       quantities.  The details of a real telescope could profoundly
+*       change the results, especially close to the zenith.
+*
+*     - No range checking of arguments is carried out.
+*
+*     - In applications which involve many such calculations, rather
+*       than calling the present routine it will be more efficient to
+*       use inline code, having previously computed fixed terms such
+*       as sine and cosine of latitude, and (for tracking a star)
+*       sine and cosine of declination.
+
+*  History:
+*     2014-09-30 (TIMJ):
+*        Initial version. Ported from Fortran SLA
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 P.T. Wallace
+*     Copyright (C) 2014 Cornell University
+*     All Rights Reserved.
+
+*  Licence:
+*     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 <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void
+palAltaz ( double ha, double dec, double phi,
+           double *az, double *azd, double *azdd,
+           double *el, double *eld, double *eldd,
+           double *pa, double *pad, double *padd ) {
+
+  const double TINY = 1E-30;
+
+  double sh,ch,sd,cd,sp,cp,chcd,sdcp,x,y,z,rsq,r,a,e,c,s,
+    q,qd,ad,ed,edr,add,edd,qdd;
+
+
+  /*  Useful functions */
+  sh=sin(ha);
+  ch=cos(ha);
+  sd=sin(dec);
+  cd=cos(dec);
+  sp=sin(phi);
+  cp=cos(phi);
+  chcd=ch*cd;
+  sdcp=sd*cp;
+  x=-chcd*sp+sdcp;
+  y=-sh*cd;
+  z=chcd*cp+sd*sp;
+  rsq=x*x+y*y;
+  r=sqrt(rsq);
+
+  /*  Azimuth and elevation */
+  if (rsq == 0.0) {
+    a=0.0;
+  } else {
+    a=atan2(y,x);
+  }
+  if (a < 0.0) a += PAL__D2PI;
+  e=atan2(z,r);
+
+  /*  Parallactic angle */
+  c=cd*sp-ch*sdcp;
+  s=sh*cp;
+  if (c*c+s*s > 0) {
+    q=atan2(s,c);
+  } else {
+    q= PAL__DPI - ha;
+  }
+
+  /*  Velocities and accelerations (clamped at zenith/nadir) */
+  if (rsq < TINY) {
+    rsq=TINY;
+    r=sqrt(rsq);
+  }
+  qd=-x*cp/rsq;
+  ad=sp+z*qd;
+  ed=cp*y/r;
+  edr=ed/r;
+  add=edr*(z*sp+(2.0-rsq)*qd);
+  edd=-r*qd*ad;
+  qdd=edr*(sp+2.0*z*qd);
+
+  /*  Results */
+  *az=a;
+  *azd=ad;
+  *azdd=add;
+  *el=e;
+  *eld=ed;
+  *eldd=edd;
+  *pa=q;
+  *pad=qd;
+  *padd=qdd;
+
+}
Index: branches/FACT++_part_filenames/pal/palAmp.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAmp.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAmp.c	(revision 18732)
@@ -0,0 +1,84 @@
+/*
+*+
+*  Name:
+*     palAmp
+
+*  Purpose:
+*     Convert star RA,Dec from geocentric apparaent to mean place.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*      void palAmp ( double ra, double da, double date, double eq,
+*                    double *rm, double *dm );
+
+*  Arguments:
+*     ra = double (Given)
+*        Apparent RA (radians)
+*     dec = double (Given)
+*        Apparent Dec (radians)
+*     date = double (Given)
+*        TDB for apparent place (JD-2400000.5)
+*     eq = double (Given)
+*        Equinox: Julian epoch of mean place.
+*     rm = double * (Returned)
+*        Mean RA (radians)
+*     dm = double * (Returned)
+*        Mean Dec (radians)
+
+*  Description:
+*     Convert star RA,Dec from geocentric apparent to mean place. The
+*     mean coordinate system is close to ICRS. See palAmpqk for details.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - See palMappa and palAmpqk for details.
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2001 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palAmp ( double ra, double da, double date, double eq,
+              double *rm, double *dm ) {
+  double amprms[21];
+  palMappa( eq, date, amprms );
+  palAmpqk( ra, da, amprms, rm, dm );
+}
Index: branches/FACT++_part_filenames/pal/palAmpqk.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAmpqk.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAmpqk.c	(revision 18732)
@@ -0,0 +1,159 @@
+/*
+*+
+*  Name:
+*     palAmpqk
+
+*  Purpose:
+*     Convert star RA,Dec from geocentric apparent to mean place.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAmpqk ( double ra, double da, double amprms[21],
+*                     double *rm, double *dm )
+
+*  Arguments:
+*     ra = double (Given)
+*        Apparent RA (radians).
+*     da = double (Given)
+*        Apparent Dec (radians).
+*     amprms = double[21] (Given)
+*        Star-independent mean-to-apparent parameters (see palMappa):
+*        (0)      time interval for proper motion (Julian years)
+*        (1-3)    barycentric position of the Earth (AU)
+*        (4-6)    heliocentric direction of the Earth (unit vector)
+*        (7)      (grav rad Sun)*2/(Sun-Earth distance)
+*        (8-10)   abv: barycentric Earth velocity in units of c
+*        (11)     sqrt(1-v*v) where v=modulus(abv)
+*        (12-20)  precession/nutation (3,3) matrix
+*     rm = double (Returned)
+*        Mean RA (radians).
+*     dm = double (Returned)
+*        Mean Dec (radians).
+
+*  Description:
+*     Convert star RA,Dec from geocentric apparent to mean place. The "mean"
+*     coordinate system is in fact close to ICRS. Use of this function
+*     is appropriate when efficiency is important and where many star
+*     positions are all to be transformed for one epoch and equinox.  The
+*     star-independent parameters can be obtained by calling the palMappa
+*     function.
+
+*  Note:
+*     Iterative techniques are used for the aberration and
+*     light deflection corrections so that the routines
+*     palAmp (or palAmpqk) and palMap (or palMapqk) are
+*     accurate inverses;  even at the edge of the Sun's disc
+*     the discrepancy is only about 1 nanoarcsecond.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (PTW):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     2016-12-19 (TIMJ):
+*        Add in light deflection (was missed in the initial port).
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2000 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     Copyright (C) 2016 Tim Jenness
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palAmpqk ( double ra, double da, double amprms[21], double *rm,
+                double *dm ){
+
+/* Local Variables: */
+   double ab1;                 /* sqrt(1-v*v) where v=modulus of Earth vel */
+   double abv[3];              /* Earth velocity wrt SSB (c, FK5) */
+   double p1[3], p2[3], p3[3]; /* work vectors */
+   double ab1p1, p1dv, p1dvp1, w;
+   double gr2e, pde, pdep1, ehn[3], p[3];
+   int i, j;
+
+/* Unpack some of the parameters */
+   gr2e = amprms[7];
+   ab1  = amprms[11];
+   for( i = 0; i < 3; i++ ) {
+      ehn[i] = amprms[i + 4];
+      abv[i] = amprms[i + 8];
+   }
+
+/* Apparent RA,Dec to Cartesian */
+   eraS2c( ra, da, p3 );
+
+/* Precession and nutation */
+   eraTrxp( (double(*)[3]) &amprms[12], p3, p2 );
+
+/* Aberration */
+   ab1p1 = ab1 + 1.0;
+   for( i = 0; i < 3; i++ ) {
+      p1[i] = p2[i];
+   }
+   for( j = 0; j < 2; j++ ) {
+      p1dv = eraPdp( p1, abv );
+      p1dvp1 = 1.0 + p1dv;
+      w = 1.0 + p1dv / ab1p1;
+      for( i = 0; i < 3; i++ ) {
+         p1[i] = ( p1dvp1 * p2[i] - w * abv[i] ) / ab1;
+      }
+      eraPn( p1, &w, p3 );
+      for( i = 0; i < 3; i++ ) {
+         p1[i] = p3[i];
+      }
+   }
+
+/* Light deflection */
+   for( i = 0; i < 3; i++ ) {
+       p[i] = p1[i];
+   }
+   for( j = 0; j < 5; j++ ) {
+      pde = eraPdp( p, ehn );
+      pdep1 = 1.0 + pde;
+      w = pdep1 - gr2e*pde;
+      for( i = 0; i < 3; i++ ) {
+         p[i] = (pdep1*p1[i] - gr2e*ehn[i])/w;
+      }
+      eraPn( p, &w, p2 );
+      for( i = 0; i < 3; i++ ) {
+         p[i] = p2[i];
+      }
+   }
+
+/* Mean RA,Dec */
+   eraC2s( p, rm, dm );
+   *rm = eraAnp( *rm );
+}
Index: branches/FACT++_part_filenames/pal/palAop.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAop.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAop.c	(revision 18732)
@@ -0,0 +1,238 @@
+/*
+*+
+*  Name:
+*     palAop
+
+*  Purpose:
+*     Apparent to observed place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAop ( double rap, double dap, double date, double dut,
+*                   double elongm, double phim, double hm, double xp,
+*                   double yp, double tdk, double pmb, double rh,
+*                   double wl, double tlr,
+*                   double *aob, double *zob, double *hob,
+*                   double *dob, double *rob );
+
+*  Arguments:
+*     rap = double (Given)
+*        Geocentric apparent right ascension
+*     dap = double (Given)
+*        Geocentirc apparent declination
+*     date = double (Given)
+*        UTC date/time (Modified Julian Date, JD-2400000.5)
+*     dut = double (Given)
+*        delta UT: UT1-UTC (UTC seconds)
+*     elongm = double (Given)
+*        Mean longitude of the observer (radians, east +ve)
+*     phim = double (Given)
+*        Mean geodetic latitude of the observer (radians)
+*     hm = double (Given)
+*        Observer's height above sea level (metres)
+*     xp = double (Given)
+*        Polar motion x-coordinates (radians)
+*     yp = double (Given)
+*        Polar motion y-coordinates (radians)
+*     tdk = double (Given)
+*        Local ambient temperature (K; std=273.15)
+*     pmb = double (Given)
+*        Local atmospheric pressure (mb; std=1013.25)
+*     rh = double (Given)
+*        Local relative humidity (in the range 0.0-1.0)
+*     wl = double (Given)
+*        Effective wavelength (micron, e.g. 0.55)
+*     tlr = double (Given)
+*        Tropospheric laps rate (K/metre, e.g. 0.0065)
+*     aob = double * (Returned)
+*        Observed azimuth (radians: N=0; E=90)
+*     zob = double * (Returned)
+*        Observed zenith distance (radians)
+*     hob = double * (Returned)
+*        Observed Hour Angle (radians)
+*     dob = double * (Returned)
+*        Observed Declination (radians)
+*     rob = double * (Returned)
+*        Observed Right Ascension (radians)
+
+
+*  Description:
+*     Apparent to observed place for sources distant from the solar system.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - This routine returns zenith distance rather than elevation
+*       in order to reflect the fact that no allowance is made for
+*       depression of the horizon.
+*
+*     - The accuracy of the result is limited by the corrections for
+*       refraction.  Providing the meteorological parameters are
+*       known accurately and there are no gross local effects, the
+*       predicted apparent RA,Dec should be within about 0.1 arcsec
+*       for a zenith distance of less than 70 degrees.  Even at a
+*       topocentric zenith distance of 90 degrees, the accuracy in
+*       elevation should be better than 1 arcmin;  useful results
+*       are available for a further 3 degrees, beyond which the
+*       palRefro routine returns a fixed value of the refraction.
+*       The complementary routines palAop (or palAopqk) and palOap
+*       (or palOapqk) are self-consistent to better than 1 micro-
+*       arcsecond all over the celestial sphere.
+*
+*     - It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*     - "Apparent" place means the geocentric apparent right ascension
+*       and declination, which is obtained from a catalogue mean place
+*       by allowing for space motion, parallax, precession, nutation,
+*       annual aberration, and the Sun's gravitational lens effect.  For
+*       star positions in the FK5 system (i.e. J2000), these effects can
+*       be applied by means of the palMap etc routines.  Starting from
+*       other mean place systems, additional transformations will be
+*       needed;  for example, FK4 (i.e. B1950) mean places would first
+*       have to be converted to FK5, which can be done with the
+*       palFk425 etc routines.
+*
+*     - "Observed" Az,El means the position that would be seen by a
+*       perfect theodolite located at the observer.  This is obtained
+*       from the geocentric apparent RA,Dec by allowing for Earth
+*       orientation and diurnal aberration, rotating from equator
+*       to horizon coordinates, and then adjusting for refraction.
+*       The HA,Dec is obtained by rotating back into equatorial
+*       coordinates, using the geodetic latitude corrected for polar
+*       motion, and is the position that would be seen by a perfect
+*       equatorial located at the observer and with its polar axis
+*       aligned to the Earth's axis of rotation (n.b. not to the
+*       refracted pole).  Finally, the RA is obtained by subtracting
+*       the HA from the local apparent ST.
+*
+*     - To predict the required setting of a real telescope, the
+*       observed place produced by this routine would have to be
+*       adjusted for the tilt of the azimuth or polar axis of the
+*       mounting (with appropriate corrections for mount flexures),
+*       for non-perpendicularity between the mounting axes, for the
+*       position of the rotator axis and the pointing axis relative
+*       to it, for tube flexure, for gear and encoder errors, and
+*       finally for encoder zero points.  Some telescopes would, of
+*       course, exhibit other properties which would need to be
+*       accounted for at the appropriate point in the sequence.
+*
+*     - This routine takes time to execute, due mainly to the
+*       rigorous integration used to evaluate the refraction.
+*       For processing multiple stars for one location and time,
+*       call palAoppa once followed by one call per star to palAopqk.
+*       Where a range of times within a limited period of a few hours
+*       is involved, and the highest precision is not required, call
+*       palAoppa once, followed by a call to palAoppat each time the
+*       time changes, followed by one call per star to palAopqk.
+*
+*     - The DATE argument is UTC expressed as an MJD.  This is,
+*       strictly speaking, wrong, because of leap seconds.  However,
+*       as long as the delta UT and the UTC are consistent there
+*       are no difficulties, except during a leap second.  In this
+*       case, the start of the 61st second of the final minute should
+*       begin a new MJD day and the old pre-leap delta UT should
+*       continue to be used.  As the 61st second completes, the MJD
+*       should revert to the start of the day as, simultaneously,
+*       the delta UTC changes by one second to its post-leap new value.
+*
+*     - The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*       elsewhere.  It increases by exactly one second at the end of
+*       each UTC leap second, introduced in order to keep delta UT
+*       within +/- 0.9 seconds.
+*
+*     - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*       The longitude required by the present routine is east-positive,
+*       in accordance with geographical convention (and right-handed).
+*       In particular, note that the longitudes returned by the
+*       palObs routine are west-positive, following astronomical
+*       usage, and must be reversed in sign before use in the present
+*       routine.
+*
+*     - The polar coordinates XP,YP can be obtained from IERS
+*       circulars and equivalent publications.  The maximum amplitude
+*       is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*       use XP=YP=0.0.  See page B60 of the 1988 Astronomical Almanac
+*       for a definition of the two angles.
+*
+*     - The height above sea level of the observing station, HM,
+*       can be obtained from the Astronomical Almanac (Section J
+*       in the 1988 edition), or via the routine palObs.  If P,
+*       the pressure in millibars, is available, an adequate
+*       estimate of HM can be obtained from the expression
+*
+*             HM ~ -29.3*TSL*LOG(P/1013.25).
+*
+*       where TSL is the approximate sea-level air temperature in K
+*       (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*       section 52).  Similarly, if the pressure P is not known,
+*       it can be estimated from the height of the observing
+*       station, HM, as follows:
+*
+*             P ~ 1013.25*EXP(-HM/(29.3*TSL)).
+*
+*       Note, however, that the refraction is nearly proportional to the
+*       pressure and that an accurate P value is important for precise
+*       work.
+*
+*     - The azimuths etc produced by the present routine are with
+*       respect to the celestial pole.  Corrections to the terrestrial
+*       pole can be computed using palPolmo.
+
+*  History:
+*     2012-08-25 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palAop ( double rap, double dap, double date, double dut,
+              double elongm, double phim, double hm, double xp,
+              double yp, double tdk, double pmb, double rh,
+              double wl, double tlr,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob ) {
+
+  double aoprms[14];
+
+  palAoppa(date,dut,elongm,phim,hm,xp,yp,tdk,pmb,rh,wl,tlr,
+           aoprms);
+  palAopqk(rap,dap,aoprms,aob,zob,hob,dob,rob);
+
+}
Index: branches/FACT++_part_filenames/pal/palAoppa.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAoppa.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAoppa.c	(revision 18732)
@@ -0,0 +1,963 @@
+/*
+*+
+*  Name:
+*     palAoppa
+
+*  Purpose:
+*     Precompute apparent to observed place parameters
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAoppa ( double date, double dut, double elongm, double phim,
+*                     double hm, double xp, double yp, double tdk, double pmb,
+*                     double rh, double wl, double tlr, double aoprms[14] );
+
+*  Arguments:
+*     date = double (Given)
+*        UTC date/time (modified Julian Date, JD-2400000.5)
+*     dut = double (Given)
+*        delta UT:  UT1-UTC (UTC seconds)
+*     elongm = double (Given)
+*        mean longitude of the observer (radians, east +ve)
+*     phim = double (Given)
+*        mean geodetic latitude of the observer (radians)
+*     hm = double (Given)
+*        observer's height above sea level (metres)
+*     xp = double (Given)
+*        polar motion x-coordinate (radians)
+*     yp = double (Given)
+*        polar motion y-coordinate (radians)
+*     tdk = double (Given)
+*        local ambient temperature (K; std=273.15)
+*     pmb = double (Given)
+*        local atmospheric pressure (mb; std=1013.25)
+*     rh = double (Given)
+*        local relative humidity (in the range 0.0-1.0)
+*     wl = double (Given)
+*        effective wavelength (micron, e.g. 0.55)
+*     tlr = double (Given)
+*        tropospheric lapse rate (K/metre, e.g. 0.0065)
+*     aoprms = double [14] (Returned)
+*        Star-independent apparent-to-observed parameters
+*
+*         (0)      geodetic latitude (radians)
+*         (1,2)    sine and cosine of geodetic latitude
+*         (3)      magnitude of diurnal aberration vector
+*         (4)      height (hm)
+*         (5)      ambient temperature (tdk)
+*         (6)      pressure (pmb)
+*         (7)      relative humidity (rh)
+*         (8)      wavelength (wl)
+*         (9)     lapse rate (tlr)
+*         (10,11)  refraction constants A and B (radians)
+*         (12)     longitude + eqn of equinoxes + sidereal DUT (radians)
+*         (13)     local apparent sidereal time (radians)
+
+*  Description:
+*     Precompute apparent to observed place parameters required by palAopqk
+*     and palOapqk.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*     - The DATE argument is UTC expressed as an MJD.  This is,
+*       strictly speaking, improper, because of leap seconds.  However,
+*       as long as the delta UT and the UTC are consistent there
+*       are no difficulties, except during a leap second.  In this
+*       case, the start of the 61st second of the final minute should
+*       begin a new MJD day and the old pre-leap delta UT should
+*       continue to be used.  As the 61st second completes, the MJD
+*       should revert to the start of the day as, simultaneously,
+*       the delta UTC changes by one second to its post-leap new value.
+*
+*     - The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*       elsewhere.  It increases by exactly one second at the end of
+*       each UTC leap second, introduced in order to keep delta UT
+*       within +/- 0.9 seconds.
+*
+*     - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*       The longitude required by the present routine is east-positive,
+*       in accordance with geographical convention (and right-handed).
+*       In particular, note that the longitudes returned by the
+*       palObs routine are west-positive, following astronomical
+*       usage, and must be reversed in sign before use in the present
+*       routine.
+*
+*     - The polar coordinates XP,YP can be obtained from IERS
+*       circulars and equivalent publications.  The maximum amplitude
+*       is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*       use XP=YP=0.0.  See page B60 of the 1988 Astronomical Almanac
+*       for a definition of the two angles.
+*
+*     - The height above sea level of the observing station, HM,
+*       can be obtained from the Astronomical Almanac (Section J
+*       in the 1988 edition), or via the routine palObs.  If P,
+*       the pressure in millibars, is available, an adequate
+*       estimate of HM can be obtained from the expression
+*
+*             HM ~ -29.3*TSL*log(P/1013.25).
+*
+*       where TSL is the approximate sea-level air temperature in K
+*       (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*       section 52).  Similarly, if the pressure P is not known,
+*       it can be estimated from the height of the observing
+*       station, HM, as follows:
+*
+*             P ~ 1013.25*exp(-HM/(29.3*TSL)).
+*
+*       Note, however, that the refraction is nearly proportional to the
+*       pressure and that an accurate P value is important for precise
+*       work.
+*
+*     - Repeated, computationally-expensive, calls to palAoppa for
+*       times that are very close together can be avoided by calling
+*       palAoppa just once and then using palAoppat for the subsequent
+*       times.  Fresh calls to palAoppa will be needed only when
+*       changes in the precession have grown to unacceptable levels or
+*       when anything affecting the refraction has changed.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version, ported directly from Fortran SLA.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "math.h"
+
+#include "pal.h"
+#include "palmac.h"
+
+/* These are local SLA implementations to aid in testing. Switch
+ * to native PAL implementations when tests are complete. */
+static void pal__Geoc( double p, double h, double *r, double * z );
+static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 );
+static double pal__Eqeqx( double date );
+
+void palAoppa ( double date, double dut, double elongm, double phim,
+                double hm, double xp, double yp, double tdk, double pmb,
+                double rh, double wl, double tlr, double aoprms[14] ) {
+
+  /* Constants */
+  const double C = 173.14463331; /* Speed of light (AU per day) */
+  const double SOLSID = 1.0027379093; /* Ratio between solar and sidereal time */
+
+  /* Local variables */
+  double cphim,xt,yt,zt,xc,yc,zc,elong,phi,uau,vau;
+
+  /*  Observer's location corrected for polar motion */
+  cphim = cos(phim);
+  xt = cos(elongm)*cphim;
+  yt = sin(elongm)*cphim;
+  zt = sin(phim);
+  xc = xt-xp*zt;
+  yc = yt+yp*zt;
+  zc = xp*xt-yp*yt+zt;
+  if (xc == 0.0 && yc == 0.0) {
+    elong = 0.0;
+  } else {
+    elong = atan2(yc,xc);
+  }
+  phi = atan2(zc,sqrt(xc*xc+yc*yc));
+  aoprms[0] = phi;
+  aoprms[1] = sin(phi);
+  aoprms[2] = cos(phi);
+
+  /*  magnitude of the diurnal aberration vector */
+  pal__Geoc(phi,hm,&uau,&vau);
+  aoprms[3] = PAL__D2PI*uau*SOLSID/C;
+
+  /*  copy the refraction parameters and compute the a & b constants */
+  aoprms[4] = hm;
+  aoprms[5] = tdk;
+  aoprms[6] = pmb;
+  aoprms[7] = rh;
+  aoprms[8] = wl;
+  aoprms[9] = tlr;
+  palRefco(hm,tdk,pmb,rh,wl,phi,tlr,1e-10,
+           &aoprms[10],&aoprms[11]);
+
+  /*  longitude + equation of the equinoxes + sidereal equivalent of DUT
+   *  (ignoring change in equation of the equinoxes between UTC and TDB) */
+  aoprms[12] = elong+pal__Eqeqx(date)+dut*SOLSID*PAL__DS2R;
+
+  /*  sidereal time */
+  palAoppat(date,aoprms);
+
+}
+
+/* Private reimplementation of slaEqeqx for testing the algorithm */
+
+#include <math.h>
+
+static void pal__Geoc( double p, double h, double *r, double * z ) {
+  /*  earth equatorial radius (metres) */
+  const double A0=6378140.0;
+
+  /*  reference spheroid flattening factor and useful function */
+  const double f = 1.0/298.257;
+  double b;
+
+  /*  astronomical unit in metres */
+  const double AU = 1.49597870e11;
+
+  double sp,cp,c,s;
+
+  b = pow( 1.0-f, 2.0 );
+
+  /*  geodetic to geocentric conversion */
+  sp = sin(p);
+  cp = cos(p);
+  c = 1.0/sqrt(cp*cp+b*sp*sp);
+  s = b*c;
+  *r = (A0*c+h)*cp/AU;
+  *z = (A0*s+h)*sp/AU;
+
+}
+
+static double pal__Eqeqx( double date ) {
+
+  const double T2AS=1296000.0;
+
+  double pal_eqeqx;
+  double t, om, dpsi, deps, eps0;
+
+  /*  interval between basic epoch j2000.0 and current epoch (jc) */
+  t=(date-51544.5)/36525.0;
+
+  /*  longitude of the mean ascending node of the lunar orbit on the
+   *   ecliptic, measured from the mean equinox of date */
+  om=PAL__DAS2R*(450160.280+(-5.0*T2AS-482890.539
+                               +(7.455+0.008*t)*t)*t);
+
+  /*  nutation */
+  pal__Nutc(date,&dpsi,&deps,&eps0);
+
+  /*  equation of the equinoxes */
+  pal_eqeqx=dpsi*cos(eps0)+PAL__DAS2R*(0.00264*sin(om)+
+                                 0.000063*sin(om+om));
+
+  return pal_eqeqx;
+}
+
+#include "palmac.h"
+
+static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 ) {
+
+  const double DJC = 36525.0;
+  const double DJM0 = 51544.5;
+  const double TURNAS = 1296000.0;
+
+  #define NTERMS 194
+
+  int j;
+  double t,el,elp,f,d,om,ve,ma,ju,sa,theta,c,s,dp,de;
+
+  int na[         194 ][9] = {
+    {            0 ,            0 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            0 ,           -2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            2 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,           -2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,           -1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            3 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,           -1 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,           -2 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            1 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            1 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            1 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            1 ,            0 ,            1 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            4 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -2 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            0 ,           -2 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            4 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            4 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,           -1 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            3 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            3 ,            0 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            4 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            4 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            3 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            0 ,            4 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,           -1 ,            0 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -1 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            1 ,            0 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            4 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,           -1 ,            0 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            0 ,           -2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            1 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            3 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,           -2 ,            4 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,           -1 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,           -1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            3 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            1 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            1 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            2 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,           -1 ,            0 ,            2 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,           -2 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            1 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            4 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,           -1 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,            1 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            2 ,           -1 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            2 ,           -2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            1 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,            4 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            2 ,           -2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            1 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            2 ,           -1 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,           -1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            4 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            1 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            2 ,            1 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            4 ,           -2 ,            2 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            1 ,            0 ,            0 ,           -1 ,            0 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            4 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            1 ,            0 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,            0 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            4 ,            0 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {           -1 ,            0 ,            0 ,            4 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            0 ,            2 ,            2 ,            1 ,            0 ,            0 ,            0 ,            0  },
+    {            2 ,            1 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            5 ,           -5 ,            5 ,           -3 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            2 ,            0  },
+    {            0 ,            0 ,            1 ,           -1 ,            1 ,            0 ,            0 ,           -1 ,            0  },
+    {            0 ,            0 ,           -1 ,            1 ,           -1 ,            1 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -1 ,            1 ,            0 ,            0 ,            2 ,            0 ,            0  },
+    {            0 ,            0 ,            3 ,           -3 ,            3 ,            0 ,            0 ,           -1 ,            0  },
+    {            0 ,            0 ,           -8 ,            8 ,           -7 ,            5 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -1 ,            1 ,           -1 ,            0 ,            2 ,            0 ,            0  },
+    {            0 ,            0 ,           -2 ,            2 ,           -2 ,            2 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -6 ,            6 ,           -6 ,            4 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -2 ,            2 ,           -2 ,            0 ,            8 ,           -3 ,            0  },
+    {            0 ,            0 ,            6 ,           -6 ,            6 ,            0 ,           -8 ,            3 ,            0  },
+    {            0 ,            0 ,            4 ,           -4 ,            4 ,           -2 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -3 ,            3 ,           -3 ,            2 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            4 ,           -4 ,            3 ,            0 ,           -8 ,            3 ,            0  },
+    {            0 ,            0 ,           -4 ,            4 ,           -5 ,            0 ,            8 ,           -3 ,            0  },
+    {            0 ,            0 ,            0 ,            0 ,            0 ,            2 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,           -4 ,            4 ,           -4 ,            3 ,            0 ,            0 ,            0  },
+    {            0 ,            1 ,           -1 ,            1 ,           -1 ,            0 ,            0 ,            1 ,            0  },
+    {            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            1 ,            0  },
+    {            0 ,            0 ,            1 ,           -1 ,            1 ,            1 ,            0 ,            0 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            2 ,            0 ,           -2 ,            0 ,            0  },
+    {            0 ,           -1 ,           -7 ,            7 ,           -7 ,            5 ,            0 ,            0 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,            2 ,            0 ,            0 ,           -2 ,            0  },
+    {           -2 ,            0 ,            2 ,            0 ,            1 ,            0 ,            0 ,           -3 ,            0  },
+    {            0 ,            0 ,            2 ,           -2 ,            2 ,            0 ,            0 ,           -2 ,            0  },
+    {            0 ,            0 ,            1 ,           -1 ,            1 ,            0 ,            0 ,            1 ,            0  },
+    {            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            2  },
+    {            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            0 ,            1  },
+    {            2 ,            0 ,           -2 ,            0 ,           -2 ,            0 ,            0 ,            3 ,            0  },
+    {            0 ,            0 ,            1 ,           -1 ,            1 ,            0 ,            0 ,           -2 ,            0  },
+    {            0 ,            0 ,           -7 ,            7 ,           -7 ,            5 ,            0 ,            0 ,            0  }
+  };
+  double psi[         194 ][4] = {
+    {    3341.5000000000000      ,    17206241.800000001      ,    3.1000000000000001      ,    17409.500000000000       },
+    {   -1716.8000000000000      ,   -1317185.3000000000      ,    1.3999999999999999      ,   -156.80000000000001       },
+    {    285.69999999999999      ,   -227667.00000000000      ,   0.29999999999999999      ,   -23.500000000000000       },
+    {   -68.599999999999994      ,   -207448.00000000000      ,    0.0000000000000000      ,   -21.399999999999999       },
+    {    950.29999999999995      ,    147607.89999999999      ,   -2.2999999999999998      ,   -355.00000000000000       },
+    {   -66.700000000000003      ,   -51689.099999999999      ,   0.20000000000000001      ,    122.59999999999999       },
+    {   -108.59999999999999      ,    71117.600000000006      ,    0.0000000000000000      ,    7.0000000000000000       },
+    {    35.600000000000001      ,   -38740.199999999997      ,   0.10000000000000001      ,   -36.200000000000003       },
+    {    85.400000000000006      ,   -30127.599999999999      ,    0.0000000000000000      ,   -3.1000000000000001       },
+    {    9.0000000000000000      ,    21583.000000000000      ,   0.10000000000000001      ,   -50.299999999999997       },
+    {    22.100000000000001      ,    12822.799999999999      ,    0.0000000000000000      ,    13.300000000000001       },
+    {    3.3999999999999999      ,    12350.799999999999      ,    0.0000000000000000      ,    1.3000000000000000       },
+    {   -21.100000000000001      ,    15699.400000000000      ,    0.0000000000000000      ,    1.6000000000000001       },
+    {    4.2000000000000002      ,    6313.8000000000002      ,    0.0000000000000000      ,    6.2000000000000002       },
+    {   -22.800000000000001      ,    5796.8999999999996      ,    0.0000000000000000      ,    6.0999999999999996       },
+    {    15.699999999999999      ,   -5961.1000000000004      ,    0.0000000000000000      ,  -0.59999999999999998       },
+    {    13.100000000000000      ,   -5159.1000000000004      ,    0.0000000000000000      ,   -4.5999999999999996       },
+    {    1.8000000000000000      ,    4592.6999999999998      ,    0.0000000000000000      ,    4.5000000000000000       },
+    {   -17.500000000000000      ,    6336.0000000000000      ,    0.0000000000000000      ,   0.69999999999999996       },
+    {    16.300000000000001      ,   -3851.0999999999999      ,    0.0000000000000000      ,  -0.40000000000000002       },
+    {   -2.7999999999999998      ,    4771.6999999999998      ,    0.0000000000000000      ,   0.50000000000000000       },
+    {    13.800000000000001      ,   -3099.3000000000002      ,    0.0000000000000000      ,  -0.29999999999999999       },
+    {   0.20000000000000001      ,    2860.3000000000002      ,    0.0000000000000000      ,   0.29999999999999999       },
+    {    1.3999999999999999      ,    2045.3000000000000      ,    0.0000000000000000      ,    2.0000000000000000       },
+    {   -8.5999999999999996      ,    2922.5999999999999      ,    0.0000000000000000      ,   0.29999999999999999       },
+    {   -7.7000000000000002      ,    2587.9000000000001      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {    8.8000000000000007      ,   -1408.0999999999999      ,    0.0000000000000000      ,    3.7000000000000002       },
+    {    1.3999999999999999      ,    1517.5000000000000      ,    0.0000000000000000      ,    1.5000000000000000       },
+    {   -1.8999999999999999      ,   -1579.7000000000000      ,    0.0000000000000000      ,    7.7000000000000002       },
+    {    1.3000000000000000      ,   -2178.5999999999999      ,    0.0000000000000000      ,  -0.20000000000000001       },
+    {   -4.7999999999999998      ,    1286.8000000000000      ,    0.0000000000000000      ,    1.3000000000000000       },
+    {    6.2999999999999998      ,    1267.2000000000000      ,    0.0000000000000000      ,   -4.0000000000000000       },
+    {   -1.0000000000000000      ,    1669.3000000000000      ,    0.0000000000000000      ,   -8.3000000000000007       },
+    {    2.3999999999999999      ,   -1020.0000000000000      ,    0.0000000000000000      ,  -0.90000000000000002       },
+    {    4.5000000000000000      ,   -766.89999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.1000000000000001      ,    756.50000000000000      ,    0.0000000000000000      ,   -1.7000000000000000       },
+    {   -1.3999999999999999      ,   -1097.3000000000000      ,    0.0000000000000000      ,  -0.50000000000000000       },
+    {    2.6000000000000001      ,   -663.00000000000000      ,    0.0000000000000000      ,  -0.59999999999999998       },
+    {   0.80000000000000004      ,   -714.10000000000002      ,    0.0000000000000000      ,    1.6000000000000001       },
+    {   0.40000000000000002      ,   -629.89999999999998      ,    0.0000000000000000      ,  -0.59999999999999998       },
+    {   0.29999999999999999      ,    580.39999999999998      ,    0.0000000000000000      ,   0.59999999999999998       },
+    {   -1.6000000000000001      ,    577.29999999999995      ,    0.0000000000000000      ,   0.50000000000000000       },
+    {  -0.90000000000000002      ,    644.39999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    2.2000000000000002      ,   -534.00000000000000      ,    0.0000000000000000      ,  -0.50000000000000000       },
+    {   -2.5000000000000000      ,    493.30000000000001      ,    0.0000000000000000      ,   0.50000000000000000       },
+    {  -0.10000000000000001      ,   -477.30000000000001      ,    0.0000000000000000      ,   -2.3999999999999999       },
+    {  -0.90000000000000002      ,    735.00000000000000      ,    0.0000000000000000      ,   -1.7000000000000000       },
+    {   0.69999999999999996      ,    406.19999999999999      ,    0.0000000000000000      ,   0.40000000000000002       },
+    {   -2.7999999999999998      ,    656.89999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.59999999999999998      ,    358.00000000000000      ,    0.0000000000000000      ,    2.0000000000000000       },
+    {  -0.69999999999999996      ,    472.50000000000000      ,    0.0000000000000000      ,   -1.1000000000000001       },
+    {  -0.10000000000000001      ,   -300.50000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.2000000000000000      ,    435.10000000000002      ,    0.0000000000000000      ,   -1.0000000000000000       },
+    {    1.8000000000000000      ,   -289.39999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.59999999999999998      ,   -422.60000000000002      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.80000000000000004      ,   -287.60000000000002      ,    0.0000000000000000      ,   0.59999999999999998       },
+    {   -38.600000000000001      ,   -392.30000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.69999999999999996      ,   -281.80000000000001      ,    0.0000000000000000      ,   0.59999999999999998       },
+    {   0.59999999999999998      ,   -405.69999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.2000000000000000      ,    229.00000000000000      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {    1.1000000000000001      ,   -264.30000000000001      ,    0.0000000000000000      ,   0.50000000000000000       },
+    {  -0.69999999999999996      ,    247.90000000000001      ,    0.0000000000000000      ,  -0.50000000000000000       },
+    {  -0.20000000000000001      ,    218.00000000000000      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {   0.59999999999999998      ,   -339.00000000000000      ,    0.0000000000000000      ,   0.80000000000000004       },
+    {  -0.69999999999999996      ,    198.69999999999999      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {   -1.5000000000000000      ,    334.00000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,    334.00000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,   -198.09999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -106.59999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.50000000000000000      ,    165.80000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    134.80000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.90000000000000002      ,   -151.59999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -129.69999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.80000000000000004      ,   -132.80000000000001      ,    0.0000000000000000      ,  -0.10000000000000001       },
+    {   0.50000000000000000      ,   -140.69999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    138.40000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    129.00000000000000      ,    0.0000000000000000      ,  -0.29999999999999999       },
+    {   0.50000000000000000      ,   -121.20000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.29999999999999999      ,    114.50000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    101.80000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -3.6000000000000001      ,   -101.90000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.80000000000000004      ,   -109.40000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.20000000000000001      ,   -97.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.69999999999999996      ,    157.30000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.20000000000000001      ,   -83.299999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.29999999999999999      ,    93.299999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    92.099999999999994      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.50000000000000000      ,    133.59999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    81.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    123.90000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.29999999999999999      ,    128.09999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,    74.099999999999994      ,    0.0000000000000000      ,  -0.29999999999999999       },
+    {  -0.20000000000000001      ,   -70.299999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.40000000000000002      ,    66.599999999999994      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -66.700000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.69999999999999996      ,    69.299999999999997      ,    0.0000000000000000      ,  -0.29999999999999999       },
+    {    0.0000000000000000      ,   -70.400000000000006      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    101.50000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.50000000000000000      ,   -69.099999999999994      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    58.500000000000000      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {   0.10000000000000001      ,   -94.900000000000006      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {    0.0000000000000000      ,    52.899999999999999      ,    0.0000000000000000      ,  -0.20000000000000001       },
+    {   0.10000000000000001      ,    86.700000000000003      ,    0.0000000000000000      ,  -0.20000000000000001       },
+    {  -0.10000000000000001      ,   -59.200000000000003      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {   0.29999999999999999      ,   -58.799999999999997      ,    0.0000000000000000      ,   0.10000000000000001       },
+    {  -0.29999999999999999      ,    49.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    56.899999999999999      ,    0.0000000000000000      ,  -0.10000000000000001       },
+    {   0.29999999999999999      ,   -50.200000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    53.399999999999999      ,    0.0000000000000000      ,  -0.10000000000000001       },
+    {   0.10000000000000001      ,   -76.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    45.299999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -46.799999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.20000000000000001      ,   -44.600000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.20000000000000001      ,   -48.700000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -46.799999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -42.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    46.399999999999999      ,    0.0000000000000000      ,  -0.10000000000000001       },
+    {   0.20000000000000001      ,   -67.299999999999997      ,    0.0000000000000000      ,   0.10000000000000001       },
+    {    0.0000000000000000      ,   -65.799999999999997      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {  -0.10000000000000001      ,   -43.899999999999999      ,    0.0000000000000000      ,   0.29999999999999999       },
+    {    0.0000000000000000      ,   -38.899999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.29999999999999999      ,    63.899999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    41.200000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -36.100000000000001      ,    0.0000000000000000      ,   0.20000000000000001       },
+    {  -0.29999999999999999      ,    58.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    36.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -39.700000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -57.700000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    33.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    36.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    55.700000000000003      ,    0.0000000000000000      ,  -0.10000000000000001       },
+    {   0.10000000000000001      ,   -35.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -31.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    30.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.29999999999999999      ,    49.200000000000003      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    49.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    33.600000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -33.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -31.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    28.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -25.199999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -26.199999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    41.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    24.500000000000000      ,    0.0000000000000000      ,   0.10000000000000001       },
+    {   -16.199999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -22.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    23.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    37.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.20000000000000001      ,   -25.699999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    25.199999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -24.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    24.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -20.699999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -20.800000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,    33.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    32.899999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -32.600000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    19.899999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.10000000000000001      ,    19.600000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -18.699999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -19.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.10000000000000001      ,   -28.600000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    4.0000000000000000      ,    178.80000000000001      ,   -11.800000000000001      ,   0.29999999999999999       },
+    {    39.799999999999997      ,   -107.30000000000000      ,   -5.5999999999999996      ,   -1.0000000000000000       },
+    {    9.9000000000000004      ,    164.00000000000000      ,   -4.0999999999999996      ,   0.10000000000000001       },
+    {   -4.7999999999999998      ,   -135.30000000000001      ,   -3.3999999999999999      ,  -0.10000000000000001       },
+    {    50.500000000000000      ,    75.000000000000000      ,    1.3999999999999999      ,   -1.2000000000000000       },
+    {   -1.1000000000000001      ,   -53.500000000000000      ,    1.3000000000000000      ,    0.0000000000000000       },
+    {   -45.000000000000000      ,   -2.3999999999999999      ,  -0.40000000000000002      ,    6.5999999999999996       },
+    {   -11.500000000000000      ,   -61.000000000000000      ,  -0.90000000000000002      ,   0.40000000000000002       },
+    {    4.4000000000000004      ,   -68.400000000000006      ,   -3.3999999999999999      ,    0.0000000000000000       },
+    {    7.7000000000000002      ,   -47.100000000000001      ,   -4.7000000000000002      ,   -1.0000000000000000       },
+    {   -42.899999999999999      ,   -12.600000000000000      ,   -1.2000000000000000      ,    4.2000000000000002       },
+    {   -42.799999999999997      ,    12.699999999999999      ,   -1.2000000000000000      ,   -4.2000000000000002       },
+    {   -7.5999999999999996      ,   -44.100000000000001      ,    2.1000000000000001      ,  -0.50000000000000000       },
+    {   -64.099999999999994      ,    1.7000000000000000      ,   0.20000000000000001      ,    4.5000000000000000       },
+    {    36.399999999999999      ,   -10.400000000000000      ,    1.0000000000000000      ,    3.5000000000000000       },
+    {    35.600000000000001      ,    10.199999999999999      ,    1.0000000000000000      ,   -3.5000000000000000       },
+    {   -1.7000000000000000      ,    39.500000000000000      ,    2.0000000000000000      ,    0.0000000000000000       },
+    {    50.899999999999999      ,   -8.1999999999999993      ,  -0.80000000000000004      ,   -5.0000000000000000       },
+    {    0.0000000000000000      ,    52.299999999999997      ,    1.2000000000000000      ,    0.0000000000000000       },
+    {   -42.899999999999999      ,   -17.800000000000001      ,   0.40000000000000002      ,    0.0000000000000000       },
+    {    2.6000000000000001      ,    34.299999999999997      ,   0.80000000000000004      ,    0.0000000000000000       },
+    {  -0.80000000000000004      ,   -48.600000000000001      ,    2.3999999999999999      ,  -0.10000000000000001       },
+    {   -4.9000000000000004      ,    30.500000000000000      ,    3.7000000000000002      ,   0.69999999999999996       },
+    {    0.0000000000000000      ,   -43.600000000000001      ,    2.1000000000000001      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -25.399999999999999      ,    1.2000000000000000      ,    0.0000000000000000       },
+    {    2.0000000000000000      ,    40.899999999999999      ,   -2.0000000000000000      ,    0.0000000000000000       },
+    {   -2.1000000000000001      ,    26.100000000000001      ,   0.59999999999999998      ,    0.0000000000000000       },
+    {    22.600000000000001      ,   -3.2000000000000002      ,  -0.50000000000000000      ,  -0.50000000000000000       },
+    {   -7.5999999999999996      ,    24.899999999999999      ,  -0.40000000000000002      ,  -0.20000000000000001       },
+    {   -6.2000000000000002      ,    34.899999999999999      ,    1.7000000000000000      ,   0.29999999999999999       },
+    {    2.0000000000000000      ,    17.399999999999999      ,  -0.40000000000000002      ,   0.10000000000000001       },
+    {   -3.8999999999999999      ,    20.500000000000000      ,    2.3999999999999999      ,   0.59999999999999998       }
+  };
+  double eps[         194 ][4] = {
+    {    9205365.8000000007      ,   -1506.2000000000000      ,    885.70000000000005      ,  -0.20000000000000001       },
+    {    573095.90000000002      ,   -570.20000000000005      ,   -305.00000000000000      ,  -0.29999999999999999       },
+    {    97845.500000000000      ,    147.80000000000001      ,   -48.799999999999997      ,  -0.20000000000000001       },
+    {   -89753.600000000006      ,    28.000000000000000      ,    46.899999999999999      ,    0.0000000000000000       },
+    {    7406.6999999999998      ,   -327.10000000000002      ,   -18.199999999999999      ,   0.80000000000000004       },
+    {    22442.299999999999      ,   -22.300000000000001      ,   -67.599999999999994      ,    0.0000000000000000       },
+    {   -683.60000000000002      ,    46.799999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    20070.700000000001      ,    36.000000000000000      ,    1.6000000000000001      ,    0.0000000000000000       },
+    {    12893.799999999999      ,    39.500000000000000      ,   -6.2000000000000002      ,    0.0000000000000000       },
+    {   -9593.2000000000007      ,    14.400000000000000      ,    30.199999999999999      ,  -0.10000000000000001       },
+    {   -6899.5000000000000      ,    4.7999999999999998      ,  -0.59999999999999998      ,    0.0000000000000000       },
+    {   -5332.5000000000000      ,  -0.10000000000000001      ,    2.7000000000000002      ,    0.0000000000000000       },
+    {   -125.20000000000000      ,    10.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -3323.4000000000001      ,  -0.90000000000000002      ,  -0.29999999999999999      ,    0.0000000000000000       },
+    {    3142.3000000000002      ,    8.9000000000000004      ,   0.29999999999999999      ,    0.0000000000000000       },
+    {    2552.5000000000000      ,    7.2999999999999998      ,   -1.2000000000000000      ,    0.0000000000000000       },
+    {    2634.4000000000001      ,    8.8000000000000007      ,   0.20000000000000001      ,    0.0000000000000000       },
+    {   -2424.4000000000001      ,    1.6000000000000001      ,  -0.40000000000000002      ,    0.0000000000000000       },
+    {   -123.30000000000000      ,    3.8999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    1642.4000000000001      ,    7.2999999999999998      ,  -0.80000000000000004      ,    0.0000000000000000       },
+    {    47.899999999999999      ,    3.2000000000000002      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    1321.2000000000000      ,    6.2000000000000002      ,  -0.59999999999999998      ,    0.0000000000000000       },
+    {   -1234.0999999999999      ,  -0.29999999999999999      ,   0.59999999999999998      ,    0.0000000000000000       },
+    {   -1076.5000000000000      ,  -0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -61.600000000000001      ,    1.8000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -55.399999999999999      ,    1.6000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    856.89999999999998      ,   -4.9000000000000004      ,   -2.1000000000000001      ,    0.0000000000000000       },
+    {   -800.70000000000005      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    685.10000000000002      ,  -0.59999999999999998      ,   -3.7999999999999998      ,    0.0000000000000000       },
+    {   -16.899999999999999      ,   -1.5000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    695.70000000000005      ,    1.8000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    642.20000000000005      ,   -2.6000000000000001      ,   -1.6000000000000001      ,    0.0000000000000000       },
+    {    13.300000000000001      ,    1.1000000000000001      ,  -0.10000000000000001      ,    0.0000000000000000       },
+    {    521.89999999999998      ,    1.6000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    325.80000000000001      ,    2.0000000000000000      ,  -0.10000000000000001      ,    0.0000000000000000       },
+    {   -325.10000000000002      ,  -0.50000000000000000      ,   0.90000000000000002      ,    0.0000000000000000       },
+    {    10.100000000000000      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    334.50000000000000      ,    1.6000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    307.10000000000002      ,   0.40000000000000002      ,  -0.90000000000000002      ,    0.0000000000000000       },
+    {    327.19999999999999      ,   0.50000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -304.60000000000002      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    304.00000000000000      ,   0.59999999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -276.80000000000001      ,  -0.50000000000000000      ,   0.10000000000000001      ,    0.0000000000000000       },
+    {    268.89999999999998      ,    1.3000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    271.80000000000001      ,    1.1000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    271.50000000000000      ,  -0.40000000000000002      ,  -0.80000000000000004      ,    0.0000000000000000       },
+    {   -5.2000000000000002      ,   0.50000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -220.50000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -20.100000000000001      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -191.00000000000000      ,   0.10000000000000001      ,   0.50000000000000000      ,    0.0000000000000000       },
+    {   -4.0999999999999996      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    130.59999999999999      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    3.0000000000000000      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    122.90000000000001      ,   0.80000000000000004      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    3.7000000000000002      ,  -0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    123.09999999999999      ,   0.40000000000000002      ,  -0.29999999999999999      ,    0.0000000000000000       },
+    {   -52.700000000000003      ,    15.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    120.70000000000000      ,   0.29999999999999999      ,  -0.29999999999999999      ,    0.0000000000000000       },
+    {    4.0000000000000000      ,  -0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    126.50000000000000      ,   0.50000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    112.70000000000000      ,   0.50000000000000000      ,  -0.29999999999999999      ,    0.0000000000000000       },
+    {   -106.09999999999999      ,  -0.29999999999999999      ,   0.29999999999999999      ,    0.0000000000000000       },
+    {   -112.90000000000001      ,  -0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    3.6000000000000001      ,  -0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    107.40000000000001      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -10.900000000000000      ,   0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.90000000000000002      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    85.400000000000006      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -88.799999999999997      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -71.000000000000000      ,  -0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -70.299999999999997      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    64.500000000000000      ,   0.40000000000000002      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    69.799999999999997      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    66.099999999999994      ,   0.40000000000000002      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -61.000000000000000      ,  -0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -59.500000000000000      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -55.600000000000001      ,    0.0000000000000000      ,   0.20000000000000001      ,    0.0000000000000000       },
+    {    51.700000000000003      ,   0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -49.000000000000000      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -52.700000000000003      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -49.600000000000001      ,    1.3999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    46.299999999999997      ,   0.40000000000000002      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    49.600000000000001      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -5.0999999999999996      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -44.000000000000000      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -39.899999999999999      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -39.500000000000000      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -3.8999999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -42.100000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -17.199999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -2.2999999999999998      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -39.200000000000003      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -38.399999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    36.799999999999997      ,   0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    34.600000000000001      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -32.700000000000003      ,   0.29999999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    30.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.40000000000000002      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    29.300000000000001      ,   0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    31.600000000000001      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.80000000000000004      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -27.899999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    2.8999999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -25.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    25.000000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    27.500000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -24.399999999999999      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    24.899999999999999      ,   0.20000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -22.800000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.90000000000000002      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    24.399999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    23.899999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    22.500000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    20.800000000000001      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    20.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    21.500000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -20.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    1.3999999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.20000000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    19.000000000000000      ,    0.0000000000000000      ,  -0.10000000000000001      ,    0.0000000000000000       },
+    {    20.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -2.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -17.600000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    19.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -2.3999999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -18.399999999999999      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    17.100000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.40000000000000002      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    18.399999999999999      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,    17.399999999999999      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.59999999999999998      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -15.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -16.800000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    16.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -2.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.5000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -14.300000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    14.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -13.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -14.300000000000001      ,  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -13.699999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    13.100000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.7000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -12.800000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   -14.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    12.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -12.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {  -0.80000000000000004      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    10.900000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -10.800000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    10.500000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -10.400000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -11.199999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    10.500000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -1.3999999999999999      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    0.0000000000000000      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.69999999999999996      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -10.300000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -10.000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    9.5999999999999996      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {    9.4000000000000004      ,   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.59999999999999998      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -87.700000000000003      ,    4.4000000000000004      ,  -0.40000000000000002      ,   -6.2999999999999998       },
+    {    46.299999999999997      ,    22.399999999999999      ,   0.50000000000000000      ,   -2.3999999999999999       },
+    {    15.600000000000000      ,   -3.3999999999999999      ,   0.10000000000000001      ,   0.40000000000000002       },
+    {    5.2000000000000002      ,    5.7999999999999998      ,   0.20000000000000001      ,  -0.10000000000000001       },
+    {   -30.100000000000001      ,    26.899999999999999      ,   0.69999999999999996      ,    0.0000000000000000       },
+    {    23.199999999999999      ,  -0.50000000000000000      ,    0.0000000000000000      ,   0.59999999999999998       },
+    {    1.0000000000000000      ,    23.199999999999999      ,    3.3999999999999999      ,    0.0000000000000000       },
+    {   -12.199999999999999      ,   -4.2999999999999998      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -2.1000000000000001      ,   -3.7000000000000002      ,  -0.20000000000000001      ,   0.10000000000000001       },
+    {   -18.600000000000001      ,   -3.7999999999999998      ,  -0.40000000000000002      ,    1.8000000000000000       },
+    {    5.5000000000000000      ,   -18.699999999999999      ,   -1.8000000000000000      ,  -0.50000000000000000       },
+    {   -5.5000000000000000      ,   -18.699999999999999      ,    1.8000000000000000      ,  -0.50000000000000000       },
+    {    18.399999999999999      ,   -3.6000000000000001      ,   0.29999999999999999      ,   0.90000000000000002       },
+    {  -0.59999999999999998      ,    1.3000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -5.5999999999999996      ,   -19.500000000000000      ,    1.8999999999999999      ,    0.0000000000000000       },
+    {    5.5000000000000000      ,   -19.100000000000001      ,   -1.8999999999999999      ,    0.0000000000000000       },
+    {   -17.300000000000001      ,  -0.80000000000000004      ,    0.0000000000000000      ,   0.90000000000000002       },
+    {   -3.2000000000000002      ,   -8.3000000000000007      ,  -0.80000000000000004      ,   0.29999999999999999       },
+    {  -0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -5.4000000000000004      ,    7.7999999999999998      ,  -0.29999999999999999      ,    0.0000000000000000       },
+    {   -14.800000000000001      ,    1.3999999999999999      ,    0.0000000000000000      ,   0.29999999999999999       },
+    {   -3.7999999999999998      ,   0.40000000000000002      ,    0.0000000000000000      ,  -0.20000000000000001       },
+    {    12.600000000000000      ,    3.2000000000000002      ,   0.50000000000000000      ,   -1.5000000000000000       },
+    {   0.10000000000000001      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -13.600000000000000      ,    2.3999999999999999      ,  -0.10000000000000001      ,    0.0000000000000000       },
+    {   0.90000000000000002      ,    1.2000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   -11.900000000000000      ,  -0.50000000000000000      ,    0.0000000000000000      ,   0.29999999999999999       },
+    {   0.40000000000000002      ,    12.000000000000000      ,   0.29999999999999999      ,  -0.20000000000000001       },
+    {    8.3000000000000007      ,    6.0999999999999996      ,  -0.10000000000000001      ,   0.10000000000000001       },
+    {    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000      ,    0.0000000000000000       },
+    {   0.40000000000000002      ,   -10.800000000000001      ,   0.29999999999999999      ,    0.0000000000000000       },
+    {    9.5999999999999996      ,    2.2000000000000002      ,   0.29999999999999999      ,   -1.2000000000000000       }
+  };
+
+  /*  interval between fundamental epoch j2000.0 and given epoch (jc). */
+  t = (date-DJM0)/DJC;
+
+  /*  mean anomaly of the moon. */
+  el  = 134.96340251*PAL__DD2R+
+    fmod(t*(1717915923.2178+
+            t*(        31.8792+
+                       t*(         0.051635+
+                                   t*(       - 0.00024470)))),TURNAS)*PAL__DAS2R;
+
+  /*  mean anomaly of the sun. */
+  elp = 357.52910918*PAL__DD2R+
+    fmod(t*( 129596581.0481+
+             t*(       - 0.5532+
+                       t*(         0.000136+
+                                   t*(       - 0.00001149)))),TURNAS)*PAL__DAS2R;
+      
+  /*  mean argument of the latitude of the moon. */
+  f   =  93.27209062*PAL__DD2R+
+    fmod(t*(1739527262.8478+
+           t*(      - 12.7512+
+                    t*(      -  0.001037+
+                             t*(         0.00000417)))),TURNAS)*PAL__DAS2R;
+
+  /*  mean elongation of the moon from the sun. */
+  d   = 297.85019547*PAL__DD2R+
+    fmod(t*(1602961601.2090+
+           t*(       - 6.3706+
+                     t*(         0.006539+
+                                 t*(       - 0.00003169)))),TURNAS)*PAL__DAS2R;
+
+  /*  mean longitude of the ascending node of the moon. */
+  om  = 125.04455501*PAL__DD2R+
+    fmod(t*( - 6962890.5431+
+            t*(         7.4722+
+                        t*(         0.007702+
+                                    t*(       - 0.00005939)))),TURNAS)*PAL__DAS2R;
+
+  /*  mean longitude of venus. */
+  ve    = 181.97980085*PAL__DD2R+fmod(210664136.433548*t,TURNAS)*PAL__DAS2R;
+
+  /*  mean longitude of mars.*/
+  ma    = 355.43299958*PAL__DD2R+fmod( 68905077.493988*t,TURNAS)*PAL__DAS2R;
+
+  /*  mean longitude of jupiter. */
+  ju    =  34.35151874*PAL__DD2R+fmod( 10925660.377991*t,TURNAS)*PAL__DAS2R;
+
+  /*  mean longitude of saturn. */
+  sa    =  50.07744430*PAL__DD2R+fmod(  4399609.855732*t,TURNAS)*PAL__DAS2R;
+
+  /*  geodesic nutation (fukushima 1991) in microarcsec. */
+  dp = -153.1*sin(elp)-1.9*sin(2*elp);
+  de = 0.0;
+
+  /*  shirai & fukushima (2001) nutation series. */
+  for (j=NTERMS-1; j >= 0; j--) {
+    theta = ((double)na[j][0])*el+
+      ((double)na[j][1])*elp+
+      ((double)na[j][2])*f+
+      ((double)na[j][3])*d+
+      ((double)na[j][4])*om+
+      ((double)na[j][5])*ve+
+      ((double)na[j][6])*ma+
+      ((double)na[j][7])*ju+
+      ((double)na[j][8])*sa;
+    c = cos(theta);
+    s = sin(theta);
+    dp += (psi[j][0] + psi[j][2]*t)*c + (psi[j][1] + psi[j][3]*t)*s;
+    de += (eps[j][0] + eps[j][2]*t)*c + (eps[j][1] + eps[j][3]*t)*s;
+  }
+
+  /*  change of units, and addition of the precession correction.*/
+  *dpsi = (dp*1e-6-0.042888-0.29856*t)*PAL__DAS2R;
+  *deps = (de*1e-6-0.005171-0.02408*t)*PAL__DAS2R;
+
+  /*  mean obliquity of date (simon et al. 1994). */
+  *eps0 = (84381.412+
+          (-46.80927+
+           (-0.000152+
+            (0.0019989+
+             (-0.00000051+
+              (-0.000000025)*t)*t)*t)*t)*t)*PAL__DAS2R;
+
+}
Index: branches/FACT++_part_filenames/pal/palAoppat.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAoppat.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAoppat.c	(revision 18732)
@@ -0,0 +1,103 @@
+/*
+*+
+*  Name:
+*     palAoppat
+
+*  Purpose:
+*     Recompute sidereal time to support apparent to observed place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAoppat( double date, double aoprms[14] );
+
+*  Arguments:
+*     date = double (Given)
+*         UTC date/time (modified Julian Date, JD-2400000.5)
+*         (see palAoppa description for comments on leap seconds)
+*     aoprms = double[14] (Given & Returned)
+*         Star-independent apparent-to-observed parameters. Updated
+*         by this routine. Requires element 12 to be the longitude +
+*         eqn of equinoxes + sidereal DUT and fills in element 13
+*         with the local apparent sidereal time (in radians).
+
+*  Description:
+*     This routine recomputes the sidereal time in the apparent to
+*     observed place star-independent parameter block.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - See palAoppa for more information.
+*     - The star-independent parameters are not treated as an opaque
+*       struct in order to retain compatibility with SLA.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version, ported from Fortran SLA source.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+static double pal__Gmst( double ut1 );
+
+void palAoppat( double date, double aoprms[14] ) {
+  aoprms[13] = pal__Gmst(date) + aoprms[12];
+}
+
+/* Use a private implementation of palGmst for testing that matches
+   the SLA rather than SOFA/ERFA implementation. This is used for comparing
+   SLA with PAL refraction code. */
+
+#include "math.h"
+#include "palmac.h"
+
+static double pal__Gmst( double ut1 ) {
+
+  double tu;
+  double gmst;
+
+  /*  Julian centuries from fundamental epoch J2000 to this UT */
+  tu=(ut1-51544.5)/36525;
+
+  /*  GMST at this UT */
+   gmst=palDranrm(fmod(ut1,1.0)*PAL__D2PI+
+                  (24110.54841+
+                   (8640184.812866+
+                    (0.093104-6.2e-6*tu)*tu)*tu)*PAL__DS2R);
+   return gmst;
+}
Index: branches/FACT++_part_filenames/pal/palAopqk.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAopqk.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAopqk.c	(revision 18732)
@@ -0,0 +1,288 @@
+/*
+*+
+*  Name:
+*     palAopqk
+
+*  Purpose:
+*     Quick apparent to observed place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAopqk ( double rap, double dap, const double aoprms[14],
+*                     double *aob, double *zob, double *hob,
+*                     double *dob, double *rob );
+
+*  Arguments:
+*     rap = double (Given)
+*        Geocentric apparent right ascension
+*     dap = double (Given)
+*        Geocentric apparent declination
+*     aoprms = const double [14] (Given)
+*        Star-independent apparent-to-observed parameters.
+*
+*         [0]      geodetic latitude (radians)
+*         [1,2]    sine and cosine of geodetic latitude
+*         [3]      magnitude of diurnal aberration vector
+*         [4]      height (HM)
+*         [5]      ambient temperature (T)
+*         [6]      pressure (P)
+*         [7]      relative humidity (RH)
+*         [8]      wavelength (WL)
+*         [9]      lapse rate (TLR)
+*         [10,11]  refraction constants A and B (radians)
+*         [12]     longitude + eqn of equinoxes + sidereal DUT (radians)
+*         [13]     local apparent sidereal time (radians)
+*     aob = double * (Returned)
+*        Observed azimuth (radians: N=0,E=90)
+*     zob = double * (Returned)
+*        Observed zenith distance (radians)
+*     hob = double * (Returned)
+*        Observed Hour Angle (radians)
+*     dob = double * (Returned)
+*        Observed Declination (radians)
+*     rob = double * (Returned)
+*        Observed Right Ascension (radians)
+
+*  Description:
+*     Quick apparent to observed place.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - This routine returns zenith distance rather than elevation
+*       in order to reflect the fact that no allowance is made for
+*       depression of the horizon.
+*
+*     - The accuracy of the result is limited by the corrections for
+*       refraction.  Providing the meteorological parameters are
+*       known accurately and there are no gross local effects, the
+*       observed RA,Dec predicted by this routine should be within
+*       about 0.1 arcsec for a zenith distance of less than 70 degrees.
+*       Even at a topocentric zenith distance of 90 degrees, the
+*       accuracy in elevation should be better than 1 arcmin;  useful
+*       results are available for a further 3 degrees, beyond which
+*       the palRefro routine returns a fixed value of the refraction.
+*       The complementary routines palAop (or palAopqk) and palOap
+*       (or palOapqk) are self-consistent to better than 1 micro-
+*       arcsecond all over the celestial sphere.
+*
+*     - It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*     - "Apparent" place means the geocentric apparent right ascension
+*       and declination, which is obtained from a catalogue mean place
+*       by allowing for space motion, parallax, precession, nutation,
+*       annual aberration, and the Sun's gravitational lens effect.  For
+*       star positions in the FK5 system (i.e. J2000), these effects can
+*       be applied by means of the palMap etc routines.  Starting from
+*       other mean place systems, additional transformations will be
+*       needed;  for example, FK4 (i.e. B1950) mean places would first
+*       have to be converted to FK5, which can be done with the
+*       palFk425 etc routines.
+*
+*     - "Observed" Az,El means the position that would be seen by a
+*       perfect theodolite located at the observer.  This is obtained
+*       from the geocentric apparent RA,Dec by allowing for Earth
+*       orientation and diurnal aberration, rotating from equator
+*       to horizon coordinates, and then adjusting for refraction.
+*       The HA,Dec is obtained by rotating back into equatorial
+*       coordinates, using the geodetic latitude corrected for polar
+*       motion, and is the position that would be seen by a perfect
+*       equatorial located at the observer and with its polar axis
+*       aligned to the Earth's axis of rotation (n.b. not to the
+*       refracted pole).  Finally, the RA is obtained by subtracting
+*       the HA from the local apparent ST.
+*
+*     - To predict the required setting of a real telescope, the
+*       observed place produced by this routine would have to be
+*       adjusted for the tilt of the azimuth or polar axis of the
+*       mounting (with appropriate corrections for mount flexures),
+*       for non-perpendicularity between the mounting axes, for the
+*       position of the rotator axis and the pointing axis relative
+*       to it, for tube flexure, for gear and encoder errors, and
+*       finally for encoder zero points.  Some telescopes would, of
+*       course, exhibit other properties which would need to be
+*       accounted for at the appropriate point in the sequence.
+*
+*     - The star-independent apparent-to-observed-place parameters
+*       in AOPRMS may be computed by means of the palAoppa routine.
+*       If nothing has changed significantly except the time, the
+*       palAoppat routine may be used to perform the requisite
+*       partial recomputation of AOPRMS.
+*
+*     - At zenith distances beyond about 76 degrees, the need for
+*       special care with the corrections for refraction causes a
+*       marked increase in execution time.  Moreover, the effect
+*       gets worse with increasing zenith distance.  Adroit
+*       programming in the calling application may allow the
+*       problem to be reduced.  Prepare an alternative AOPRMS array,
+*       computed for zero air-pressure;  this will disable the
+*       refraction corrections and cause rapid execution.  Using
+*       this AOPRMS array, a preliminary call to the present routine
+*       will, depending on the application, produce a rough position
+*       which may be enough to establish whether the full, slow
+*       calculation (using the real AOPRMS array) is worthwhile.
+*       For example, there would be no need for the full calculation
+*       if the preliminary call had already established that the
+*       source was well below the elevation limits for a particular
+*       telescope.
+*
+*     - The azimuths etc produced by the present routine are with
+*       respect to the celestial pole.  Corrections to the terrestrial
+*       pole can be computed using palPolmo.
+
+*  History:
+*     2012-08-25 (TIMJ):
+*        Initial version, copied from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2003 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+
+void palAopqk ( double rap, double dap, const double aoprms[14],
+                double *aob, double *zob, double *hob,
+                double *dob, double *rob ) {
+
+  /*  Breakpoint for fast/slow refraction algorithm:
+   *  ZD greater than arctan(4), (see palRefco routine)
+   *  or vector Z less than cosine(arctan(Z)) = 1/sqrt(17) */
+  const double zbreak = 0.242535625;
+  int i;
+
+  double  sphi,cphi,st,v[3],xhd,yhd,zhd,diurab,f,
+    xhdt,yhdt,zhdt,xaet,yaet,zaet,azobs,
+    zdt,refa,refb,zdobs,dzd,dref,ce,
+    xaeo,yaeo,zaeo,hmobs,dcobs,raobs;
+
+  /*  sin, cos of latitude */
+  sphi = aoprms[1];
+  cphi = aoprms[2];
+
+  /*  local apparent sidereal time */
+  st = aoprms[13];
+
+  /*  apparent ra,dec to cartesian -ha,dec */
+  palDcs2c( rap-st, dap, v );
+  xhd = v[0];
+  yhd = v[1];
+  zhd = v[2];
+
+  /*  diurnal aberration */
+  diurab = aoprms[3];
+  f = (1.0-diurab*yhd);
+  xhdt = f*xhd;
+  yhdt = f*(yhd+diurab);
+  zhdt = f*zhd;
+
+  /*  cartesian -ha,dec to cartesian az,el (s=0,e=90) */
+  xaet = sphi*xhdt-cphi*zhdt;
+  yaet = yhdt;
+  zaet = cphi*xhdt+sphi*zhdt;
+
+  /*  azimuth (n=0,e=90) */
+  if (xaet == 0.0 && yaet == 0.0) {
+    azobs = 0.0;
+  } else {
+    azobs = atan2(yaet,-xaet);
+  }
+
+  /*  topocentric zenith distance */
+  zdt = atan2(sqrt(xaet*xaet+yaet*yaet),zaet);
+
+  /*
+   *  refraction
+   *  ---------- */
+
+  /*  fast algorithm using two constant model */
+  refa = aoprms[10];
+  refb = aoprms[11];
+  palRefz(zdt,refa,refb,&zdobs);
+
+  /*  large zenith distance? */
+  if (cos(zdobs) < zbreak) {
+
+    /*     yes: use rigorous algorithm */
+
+    /*     initialize loop (maximum of 10 iterations) */
+    i = 1;
+    dzd = 1.0e1;
+    while (fabs(dzd) > 1e-10 && i <= 10) {
+
+      /*        compute refraction using current estimate of observed zd */
+      palRefro(zdobs,aoprms[4],aoprms[5],aoprms[6],
+               aoprms[7],aoprms[8],aoprms[0],
+               aoprms[9],1e-8,&dref);
+
+      /*        remaining discrepancy */
+      dzd = zdobs+dref-zdt;
+
+      /*        update the estimate */
+      zdobs = zdobs-dzd;
+
+      /*        increment the iteration counter */
+      i++;
+    }
+  }
+
+  /*  to cartesian az/zd */
+  ce = sin(zdobs);
+  xaeo = -cos(azobs)*ce;
+  yaeo = sin(azobs)*ce;
+  zaeo = cos(zdobs);
+
+  /*  cartesian az/zd to cartesian -ha,dec */
+  v[0] = sphi*xaeo+cphi*zaeo;
+  v[1] = yaeo;
+  v[2] = -cphi*xaeo+sphi*zaeo;
+
+  /*  to spherical -ha,dec */
+  palDcc2s(v,&hmobs,&dcobs);
+
+  /*  right ascension */
+  raobs = palDranrm(st+hmobs);
+
+  /*  return the results */
+  *aob = azobs;
+  *zob = zdobs;
+  *hob = -hmobs;
+  *dob = dcobs;
+  *rob = raobs;
+
+}
Index: branches/FACT++_part_filenames/pal/palAtmdsp.c
===================================================================
--- branches/FACT++_part_filenames/pal/palAtmdsp.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palAtmdsp.c	(revision 18732)
@@ -0,0 +1,180 @@
+/*
+*+
+*  Name:
+*     palAtmdsp
+
+*  Purpose:
+*     Apply atmospheric-dispersion adjustments to refraction coefficients
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palAtmdsp( double tdk, double pmb, double rh, double wl1,
+*                     double a1, double b1, double wl2, double *a2, double *b2 );
+
+
+*  Arguments:
+*     tdk = double (Given)
+*        Ambient temperature, K
+*     pmb = double (Given)
+*        Ambient pressure, millibars
+*     rh = double (Given)
+*        Ambient relative humidity, 0-1
+*     wl1 = double (Given)
+*        Reference wavelength, micrometre (0.4 recommended)
+*     a1 = double (Given)
+*        Refraction coefficient A for wavelength wl1 (radians)
+*     b1 = double (Given)
+*        Refraction coefficient B for wavelength wl1 (radians)
+*     wl2 = double (Given)
+*        Wavelength for which adjusted A,B required
+*     a2 = double * (Returned)
+*        Refraction coefficient A for wavelength WL2 (radians)
+*     b2 = double * (Returned)
+*        Refraction coefficient B for wavelength WL2 (radians)
+
+*  Description:
+*     Apply atmospheric-dispersion adjustments to refraction coefficients.
+
+*  Authors:
+*     TIMJ: Tim Jenness
+*     PTW: Patrick Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - To use this routine, first call palRefco specifying WL1 as the
+*     wavelength.  This yields refraction coefficients A1,B1, correct
+*     for that wavelength.  Subsequently, calls to palAtmdsp specifying
+*     different wavelengths will produce new, slightly adjusted
+*     refraction coefficients which apply to the specified wavelength.
+*
+*     - Most of the atmospheric dispersion happens between 0.7 micrometre
+*     and the UV atmospheric cutoff, and the effect increases strongly
+*     towards the UV end.  For this reason a blue reference wavelength
+*     is recommended, for example 0.4 micrometres.
+*
+*     - The accuracy, for this set of conditions:
+*
+*        height above sea level    2000 m
+*                      latitude    29 deg
+*                      pressure    793 mb
+*                   temperature    17 degC
+*                      humidity    50%
+*                    lapse rate    0.0065 degC/m
+*          reference wavelength    0.4 micrometre
+*                star elevation    15 deg
+*
+*     is about 2.5 mas RMS between 0.3 and 1.0 micrometres, and stays
+*     within 4 mas for the whole range longward of 0.3 micrometres
+*     (compared with a total dispersion from 0.3 to 20.0 micrometres
+*     of about 11 arcsec).  These errors are typical for ordinary
+*     conditions and the given elevation;  in extreme conditions values
+*     a few times this size may occur, while at higher elevations the
+*     errors become much smaller.
+*
+*     - If either wavelength exceeds 100 micrometres, the radio case
+*     is assumed and the returned refraction coefficients are the
+*     same as the given ones.  Note that radio refraction coefficients
+*     cannot be turned into optical values using this routine, nor
+*     vice versa.
+*
+*     - The algorithm consists of calculation of the refractivity of the
+*     air at the observer for the two wavelengths, using the methods
+*     of the palRefro routine, and then scaling of the two refraction
+*     coefficients according to classical refraction theory.  This
+*     amounts to scaling the A coefficient in proportion to (n-1) and
+*     the B coefficient almost in the same ratio (see R.M.Green,
+*     "Spherical Astronomy", Cambridge University Press, 1985).
+
+*  History:
+*     2014-07-15 (TIMJ):
+*        Initial version. A direct copy of the Fortran SLA implementation.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2014 Tim Jenness
+*     Copyright (C) 2005 Patrick Wallace
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include <math.h>
+
+void palAtmdsp ( double tdk, double pmb, double rh, double wl1,
+                 double a1, double b1, double wl2, double *a2, double *b2 ) {
+
+  double f,tdkok,pmbok,rhok;
+  double psat,pwo,w1,wlok,wlsq,w2,dn1,dn2;
+
+  /*  Check for radio wavelengths */
+  if (wl1 > 100.0 || wl2 > 100.0) {
+
+    /*     Radio: no dispersion */
+    *a2 = a1;
+    *b2 = b1;
+
+  } else {
+
+    /*     Optical: keep arguments within safe bounds */
+    tdkok = DMIN(DMAX(tdk,100.0),500.0);
+    pmbok = DMIN(DMAX(pmb,0.0),10000.0);
+    rhok = DMIN(DMAX(rh,0.0),1.0);
+
+    /*     Atmosphere parameters at the observer */
+    psat = pow(10.0, -8.7115+0.03477*tdkok);
+    pwo = rhok*psat;
+    w1 = 11.2684e-6*pwo;
+
+    /*     Refractivity at the observer for first wavelength */
+    wlok = DMAX(wl1,0.1);
+    wlsq = wlok*wlok;
+    w2 = 77.5317e-6+(0.43909e-6+0.00367e-6/wlsq)/wlsq;
+    dn1 = (w2*pmbok-w1)/tdkok;
+
+    /*     Refractivity at the observer for second wavelength */
+    wlok = DMAX(wl2,0.1);
+    wlsq = wlok*wlok;
+    w2 = 77.5317e-6+(0.43909e-6+0.00367e-6/wlsq)/wlsq;
+    dn2 = (w2*pmbok-w1)/tdkok;
+
+    /*     Scale the refraction coefficients (see Green 4.31, p93) */
+    if (dn1 != 0.0) {
+      f = dn2/dn1;
+      *a2 = a1*f;
+      *b2 = b1*f;
+      if (dn1 != a1) {
+        *b2 *= (1.0+dn1*(dn1-dn2)/(2.0*(dn1-a1)));
+      }
+    }  else {
+      *a2 = a1;
+      *b2 = b1;
+    }
+  }
+
+}
Index: branches/FACT++_part_filenames/pal/palCaldj.c
===================================================================
--- branches/FACT++_part_filenames/pal/palCaldj.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palCaldj.c	(revision 18732)
@@ -0,0 +1,99 @@
+/*
+*+
+*  Name:
+*     palCaldj
+
+*  Purpose:
+*     Gregorian Calendar to Modified Julian Date
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palCaldj ( int iy, int im, int id, double *djm, int *j );
+
+*  Arguments:
+*     iy = int (Given)
+*        Year in the Gregorian calendar
+*     im = int (Given)
+*        Month in the Gergorian calendar
+*     id = int (Given)
+*        Day in the Gregorian calendar
+*     djm = double * (Returned)
+*        Modified Julian Date (JD-2400000.5) for 0 hrs
+*     j = status (Returned)
+*       0 = OK. See eraCal2jd for other values.
+
+*  Description:
+*     Modified Julian Date to Gregorian Calendar with special
+*     behaviour for 2-digit years relating to 1950 to 2049.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-11 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Notes:
+*     - Uses eraCal2jd
+*     - Unlike eraCal2jd this routine treats the years 0-100 as
+*       referring to the end of the 20th Century and beginning of
+*       the 21st Century. If this behaviour is not acceptable
+*       use the SOFA/ERFA routine directly or palCldj.
+*       Acceptable years are 00-49, interpreted as 2000-2049,
+*                            50-99,     "       "  1950-1999,
+*                            all others, interpreted literally.
+*     - Unlike SLA this routine will work with negative years.
+
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palCaldj ( int iy, int im, int id, double *djm, int *j ) {
+  int adj = 0;   /* Year adjustment */
+  double djm0;
+
+  if (iy >= 0 && iy <= 49) {
+    adj = 2000;
+  } else if (iy >= 50 && iy <= 99) {
+    adj = 1900;
+  }
+  iy += adj;
+
+  *j = eraCal2jd( iy, im, id, &djm0, djm );
+}
Index: branches/FACT++_part_filenames/pal/palDafin.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDafin.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDafin.c	(revision 18732)
@@ -0,0 +1,194 @@
+/*
+*+
+*  Name:
+*     palDafin
+
+*  Purpose:
+*     Sexagesimal character string to angle
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDafin ( const char *string, int *ipos, double *a, int *j );
+
+*  Arguments:
+*     string = const char * (Given)
+*        String containing deg, arcmin, arcsec fields
+*     ipos = int * (Given & Returned)
+*        Position to start decoding "string". First character
+*        is position 1 for compatibility with SLA. After
+*        calling this routine "iptr" will be positioned after
+*        the sexagesimal string.
+*     a = double * (Returned)
+*        Angle in radians.
+*     j = int * (Returned)
+*        status:  0 = OK
+*                +1 = default, A unchanged
+*                -1 = bad degrees      )
+*                -2 = bad arcminutes   )  (note 3)
+*                -3 = bad arcseconds   )
+
+*  Description:
+*     Extracts an angle from a sexagesimal string with degrees, arcmin,
+*     arcsec fields using space or comma delimiters.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Example:
+*     argument    before                           after
+*
+*     STRING      '-57 17 44.806  12 34 56.7'      unchanged
+*     IPTR        1                                16 (points to 12...)
+*     A           ?                                -1.00000D0
+*     J           ?                                0
+
+*  Notes:
+*     - The first three "fields" in STRING are degrees, arcminutes,
+*       arcseconds, separated by spaces or commas.  The degrees field
+*       may be signed, but not the others.  The decoding is carried
+*       out by the palDfltin routine and is free-format.
+*     - Successive fields may be absent, defaulting to zero.  For
+*       zero status, the only combinations allowed are degrees alone,
+*       degrees and arcminutes, and all three fields present.  If all
+*       three fields are omitted, a status of +1 is returned and A is
+*       unchanged.  In all other cases A is changed.
+*     - Range checking:
+*
+*           The degrees field is not range checked.  However, it is
+*           expected to be integral unless the other two fields are absent.
+*
+*           The arcminutes field is expected to be 0-59, and integral if
+*           the arcseconds field is present.  If the arcseconds field
+*           is absent, the arcminutes is expected to be 0-59.9999...
+*
+*           The arcseconds field is expected to be 0-59.9999...
+*
+*     - Decoding continues even when a check has failed.  Under these
+*       circumstances the field takes the supplied value, defaulting
+*       to zero, and the result A is computed and returned.
+*     - Further fields after the three expected ones are not treated
+*       as an error.  The pointer IPOS is left in the correct state
+*       for further decoding with the present routine or with palDfltin
+*       etc. See the example, above.
+*     - If STRING contains hours, minutes, seconds instead of degrees
+*       etc, or if the required units are turns (or days) instead of
+*       radians, the result A should be multiplied as follows:
+*
+*           for        to obtain    multiply
+*           STRING     A in         A by
+*
+*           d ' "      radians      1       =  1.0
+*           d ' "      turns        1/2pi   =  0.1591549430918953358
+*           h m s      radians      15      =  15.0
+*           h m s      days         15/2pi  =  2.3873241463784300365
+
+*  History:
+*     2012-03-08 (TIMJ):
+*        Initial version from SLA/F using Fortran documentation
+*        Adapted with permission from the Fortran SLALIB library.
+*     2012-10-17 (TIMJ):
+*        Fix range check on arcminute value.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+#include <math.h>
+
+void palDafin ( const char *string, int *ipos, double *a, int *j ) {
+
+  int jd = 0;    /* Status for degree parsing */
+  int jm = 0;    /* Status for arcmin parsing */
+  int js = 0;    /* Status for arcsec parsing */
+  int jf = 0;    /* Internal copy of status */
+  double deg = 0.0;
+  double arcmin = 0.0;
+  double arcsec = 0.0;
+
+  /* Decode degrees, arcminutes, arcseconds */
+  palDfltin( string, ipos, &deg, &jd );
+  if (jd > 1) {
+    jf = -1;
+  } else {
+
+    palDfltin( string, ipos, &arcmin, &jm );
+    if ( jm < 0 || jm > 1 ) {
+      jf = -2;
+    } else {
+
+      palDfltin( string, ipos, &arcsec, &js );
+      if (js < 0 || js > 1) {
+        jf = -3;
+
+      } else if (jd > 0) { /* See if combination of fields is credible */
+        /* No degrees: arcmin, arcsec ought also to be absent */
+        if (jm == 0) {
+          /* Suspect arcmin */
+          jf = -2;
+        } else if (js == 0) {
+          /* Suspect arcsec */
+          jf = -3;
+        } else {
+          /* All three fields absent */
+          jf = 1;
+        }
+
+      } else if (jm != 0 && js == 0) { /* Deg present: if arcsec present should have arcmin */
+        jf = -3;
+
+      /* Tests for range and integrality */
+      } else if (jm == 0 && DINT(deg) != deg) { /* Degrees */
+        jf = -1;
+
+      } else if ( (js == 0 && DINT(arcmin) != arcmin) || arcmin >= 60.0 ) { /* Arcmin */
+        jf = -2;
+
+      } else if (arcsec >= 60.0) { /* Arcsec */
+        jf = -3;
+      }
+    }
+  }
+
+  /* Unless all three fields absent, compute angle value */
+  if (jf <= 0) {
+    *a = PAL__DAS2R * ( 60.0 * ( 60.0 * fabs(deg) + arcmin) + arcsec );
+    if ( jd < 0 ) *a *= -1.;
+  }
+
+  *j = jf;
+
+}
Index: branches/FACT++_part_filenames/pal/palDat.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDat.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDat.c	(revision 18732)
@@ -0,0 +1,95 @@
+/*
+*+
+*  Name:
+*     palDat
+
+*  Purpose:
+*     Return offset between UTC and TAI
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     dat = palDat( double utc );
+
+*  Arguments:
+*     utc = double (Given)
+*        UTC date as a modified JD (JD-2400000.5)
+
+*  Returned Value:
+*     dat = double
+*        TAI-UTC in seconds
+
+*  Description:
+*     Increment to be applied to Coordinated Universal Time UTC to give
+*     International Atomic Time (TAI).
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - This routine converts the MJD argument to calendar date before calling
+*       the SOFA/ERFA eraDat function.
+*     - This routine matches the slaDat interface which differs from the eraDat
+*       interface. Consider coding directly to the SOFA/ERFA interface.
+*     - See eraDat for a description of error conditions when calling this function
+*       with a time outside of the UTC range.
+*     - The status argument from eraDat is ignored. This is reasonable since the
+*       error codes are mainly related to incorrect calendar dates when calculating
+*       the JD internally.
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library
+*        although the core algorithm is now from SOFA.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+
+#include "pal1sofa.h"
+
+double palDat ( double dju ) {
+  int iy;
+  int im;
+  int id;
+  int status;
+  double fd;
+  double deltat;
+
+  eraJd2cal( PAL__MJD0, dju,
+             &iy, &im, &id, &fd );
+
+  status = eraDat( iy, im, id, fd, &deltat );
+  return deltat;
+}
Index: branches/FACT++_part_filenames/pal/palDe2h.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDe2h.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDe2h.c	(revision 18732)
@@ -0,0 +1,142 @@
+/*
+*+
+*  Name:
+*     palDe2h
+
+*  Purpose:
+*     Equatorial to horizon coordinates: HA,Dec to Az,E
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDe2h( double ha, double dec, double phi, double * az, double * el );
+
+*  Arguments:
+*     ha = double * (Given)
+*        Hour angle (radians)
+*     dec = double * (Given)
+*        Declination (radians)
+*     phi = double (Given)
+*        Observatory latitude (radians)
+*     az = double * (Returned)
+*        Azimuth (radians)
+*     el = double * (Returned)
+*        Elevation (radians)
+
+*  Description:
+*     Convert equatorial to horizon coordinates.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - All the arguments are angles in radians.
+*     - Azimuth is returned in the range 0-2pi;  north is zero,
+*       and east is +pi/2.  Elevation is returned in the range
+*       +/-pi/2.
+*     - The latitude must be geodetic.  In critical applications,
+*       corrections for polar motion should be applied.
+*     - In some applications it will be important to specify the
+*       correct type of hour angle and declination in order to
+*       produce the required type of azimuth and elevation.  In
+*       particular, it may be important to distinguish between
+*       elevation as affected by refraction, which would
+*       require the "observed" HA,Dec, and the elevation
+*       in vacuo, which would require the "topocentric" HA,Dec.
+*       If the effects of diurnal aberration can be neglected, the
+*       "apparent" HA,Dec may be used instead of the topocentric
+*       HA,Dec.
+*     - No range checking of arguments is carried out.
+*     - In applications which involve many such calculations, rather
+*       than calling the present routine it will be more efficient to
+*       use inline code, having previously computed fixed terms such
+*       as sine and cosine of latitude, and (for tracking a star)
+*       sine and cosine of declination.
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include <math.h>
+
+void
+palDe2h ( double ha, double dec, double phi, double *az, double *el) {
+
+  double sh;
+  double ch;
+  double sd;
+  double cd;
+  double sp;
+  double cp;
+
+  double a;
+
+  double x;
+  double y;
+  double z;
+  double r;
+
+  /*  Useful trig functions */
+  sh = sin(ha);
+  ch = cos(ha);
+  sd = sin(dec);
+  cd = cos(dec);
+  sp = sin(phi);
+  cp = cos(phi);
+
+  /*  Az,El as x,y,z */
+  x = -ch * cd * sp + sd * cp;
+  y = -sh * cd;
+  z = ch * cd * cp + sd * sp;
+
+  /*  To spherical */
+  r = sqrt(x * x + y * y);
+  if (r == 0.) {
+    a = 0.;
+  } else {
+    a = atan2(y, x);
+  }
+  if (a < 0.) {
+    a += PAL__D2PI;
+  }
+  *az = a;
+  *el = atan2(z, r);
+
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDeuler.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDeuler.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDeuler.c	(revision 18732)
@@ -0,0 +1,141 @@
+/*
+*+
+*  Name:
+*     palDeuler
+
+*  Purpose:
+*     Form a rotation matrix from the Euler angles
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDeuler ( const char *order, double phi, double theta, double psi,
+*                      double rmat[3][3] );
+
+*  Arguments:
+*     order = const char[] (Given)
+*        Specifies about which axes the rotation occurs
+*     phi = double (Given)
+*        1st rotation (radians)
+*     theta = double (Given)
+*        2nd rotation (radians)
+*     psi = double (Given)
+*        3rd rotation (radians)
+*     rmat = double[3][3] (Given & Returned)
+*        Rotation matrix
+
+*  Description:
+*     A rotation is positive when the reference frame rotates
+*     anticlockwise as seen looking towards the origin from the
+*     positive region of the specified axis.
+*
+*     The characters of ORDER define which axes the three successive
+*     rotations are about.  A typical value is 'ZXZ', indicating that
+*     RMAT is to become the direction cosine matrix corresponding to
+*     rotations of the reference frame through PHI radians about the
+*     old Z-axis, followed by THETA radians about the resulting X-axis,
+*     then PSI radians about the resulting Z-axis.
+*
+*     The axis names can be any of the following, in any order or
+*     combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+*     axis labelling/numbering conventions apply;  the xyz (=123)
+*     triad is right-handed.  Thus, the 'ZXZ' example given above
+*     could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ').  ORDER
+*     is terminated by length or by the first unrecognized character.
+*
+*     Fewer than three rotations are acceptable, in which case the later
+*     angle arguments are ignored.  If all rotations are zero, the
+*     identity matrix is produced.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1997 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void
+palDeuler( const char *order, double phi, double theta, double psi,
+                 double rmat[3][3] ) {
+  int i = 0;
+  double rotations[3];
+
+  /* Initialise rmat */
+  eraIr( rmat );
+
+  /* copy the rotations into an array */
+  rotations[0] = phi;
+  rotations[1] = theta;
+  rotations[2] = psi;
+
+  /* maximum three rotations */
+  while (i < 3 && order[i] != '\0') {
+
+    switch (order[i]) {
+    case 'X':
+    case 'x':
+    case '1':
+      eraRx( rotations[i], rmat );
+      break;
+
+    case 'Y':
+    case 'y':
+    case '2':
+      eraRy( rotations[i], rmat );
+      break;
+
+    case 'Z':
+    case 'z':
+    case '3':
+      eraRz( rotations[i], rmat );
+      break;
+
+    default:
+      /* break out the loop if we do not recognize something */
+      i = 3;
+
+    }
+
+    /* Go to the next position */
+    i++;
+  }
+
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDfltin.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDfltin.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDfltin.c	(revision 18732)
@@ -0,0 +1,258 @@
+/*
+*+
+*  Name:
+*     palDfltin
+
+*  Purpose:
+*     Convert free-format input into double precision floating point
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDfltin( const char * string, int *nstrt,
+*                     double *dreslt, int *jflag );
+
+*  Arguments:
+*     string = const char * (Given)
+*        String containing number to be decoded.
+*     nstrt = int * (Given and Returned)
+*        Character number indicating where decoding should start.
+*        On output its value is updated to be the location of the
+*        possible next value. For compatibility with SLA the first
+*        character is index 1.
+*     dreslt = double * (Returned)
+*        Result. Not updated when jflag=1.
+*     jflag = int * (Returned)
+*        status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
+
+*  Description:
+*     Extracts a number from an input string starting at the specified
+*     index.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Uses the strtod() system call to do the parsing. This may lead to
+*       subtle differences when compared to the SLA/F parsing.
+*     - All "D" characters are converted to "E" to handle fortran exponents.
+*     - Commas are recognized as a special case and are skipped if one happens
+*       to be the next character when updating nstrt. Additionally the output
+*       nstrt position will skip past any trailing space.
+*     - If no number can be found flag will be set to 1.
+*     - If the number overflows or underflows jflag will be set to 2. For overflow
+*       the returned result will have the value HUGE_VAL, for underflow it
+*       will have the value 0.0.
+*     - For compatiblity with SLA/F -0 will be returned as "0" with jflag == -1.
+*     - Unlike slaDfltin a standalone "E" will return status 1 (could not find
+*       a number) rather than 2 (bad number).
+
+*  Implementation Status:
+*     - The code is more robust if the C99 copysign() function is available.
+*     This can recognize the -0.0 values returned by strtod. If copysign() is
+*     missing we try to scan the string looking for minus signs.
+
+*  History:
+*     2012-03-08 (TIMJ):
+*        Initial version based on strtod
+*        Adapted with permission from the Fortran SLALIB library
+*        although this is a completely distinct implementation of the SLA API.
+*     2012-06-21 (TIMJ):
+*        Provide a backup for missing copysign.
+*     2012-06-22 (TIMJ):
+*        Check __STDC_VERSION__
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+/* Use the config file if we have one, else look at
+   compiler defines to see if we have C99 */
+#if HAVE_CONFIG_H
+#include <config.h>
+#else
+#ifdef __STDC_VERSION__
+#  if (__STDC_VERSION__ >= 199901L)
+#    define HAVE_COPYSIGN 1
+#  endif
+#endif
+#endif
+
+/* isblank() is a C99 feature so we just reimplement it if it is missing */
+#if HAVE_ISBLANK
+#define _POSIX_C_SOURCE 200112L
+#define _ISOC99_SOURCE
+#include <ctype.h>
+# define ISBLANK isblank
+#else
+
+static int ISBLANK( int c ) {
+  return ( c == ' ' || c == '\t' );
+}
+
+#endif
+
+#ifdef HAVE_BSD_STRING_H
+#include <bsd/string.h>
+#endif
+
+/* System include files */
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+
+#include "pal.h"
+
+#if HAVE_COPYSIGN
+# define SCAN_FOR_MINUS 0
+#else
+# define SCAN_FOR_MINUS 1
+#endif
+
+/* We prefer to use the starutil package */
+#if HAVE_STAR_UTIL_H
+# include "star/util.h"
+#else
+#endif
+
+void palDfltin( const char * string, int *nstrt,
+                double *dreslt, int *jflag ) {
+
+  char * ctemp = NULL; /* Pointer into string */
+  char * endptr = NULL;/* Pointer to string after number */
+  double retval;       /* Return value from strtod */
+
+  /* We have to copy the string in order to modify the exponents
+     from Fortran style. Rather than using malloc we have a static
+     buffer. Technically we only have to do the copy if we have a
+     D or d in the string. */
+  char tempbuf[256];
+
+#if SCAN_FOR_MINUS
+  int dreslt_sign = 1;
+  int ipos = *nstrt;
+  const char * cctemp = NULL;
+
+  /* Scan the string looking for a minus sign. Then update the
+     start position for the subsequent copy iff we find a '-'.
+     Note  that commas are a special delimiter so we stop looking for a
+     minus if we find one or if we find a digit. */
+  cctemp = &(string[ipos-1]);
+  while (!isdigit(*cctemp) && (*cctemp != ',') && (*cctemp != '\0')) {
+    if (*cctemp == '-') {
+      *nstrt = ipos;
+      dreslt_sign = -1;
+      break;
+    }
+    ipos++;
+    cctemp++;
+  }
+#endif
+
+  /* Correct for SLA use of fortran convention */
+#if HAVE_STAR_UTIL_H
+  star_strlcpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf) );
+#else
+# if HAVE_STRLCPY
+  strlcpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf) );
+# else
+  /* Use standard C interface */
+  strncpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf));
+  tempbuf[sizeof(tempbuf)-1] = '\0';
+# endif
+#endif
+
+  /* Convert d or D to E */
+  ctemp = tempbuf;
+  while (*ctemp != '\0') {
+    if (*ctemp == 'd' || *ctemp == 'D') *ctemp = 'E';
+    ctemp++;
+  }
+
+  /* strtod man page indicates that we should reset errno before
+     calling strtod */
+  errno = 0;
+
+  /* We know we are starting at the beginning of the string now */
+  retval = strtod( tempbuf, &endptr );
+  if (retval == 0.0 && endptr == tempbuf) {
+    /* conversion did not find anything */
+    *jflag = 1;
+
+    /* but SLA compatibility requires that we step
+       through to remove leading spaces. We also step
+       through alphabetic characters since they can never
+       be numbers standalone (no number starts with an 'E') */
+    while (ISBLANK(*endptr) || isalpha(*endptr) ) {
+      endptr++;
+    }
+
+  } else if ( errno == ERANGE ) {
+    *jflag = 2;
+  } else {
+#if SCAN_FOR_MINUS
+    *jflag = (dreslt_sign < 0 ? -1 : 0);
+#else
+    if ( retval < 0.0 ) {
+      *jflag = -1;
+    } else if ( retval == 0.0 ) {
+      /* Need to distinguish -0 from +0 */
+      double test = copysign( 1.0, retval );
+      if ( test < 0.0 ) {
+        *jflag = -1;
+      } else {
+        *jflag = 0;
+      }
+    } else {
+      *jflag = 0;
+    }
+#endif
+  }
+
+  /* Sort out the position for the next index */
+  *nstrt += endptr - tempbuf;
+
+  /* Skip a comma */
+  if (*endptr == ',') {
+    (*nstrt)++;
+  } else {
+    /* jump past any leading spaces for the next part of the string */
+    ctemp = endptr;
+    while ( ISBLANK(*ctemp) ) {
+      (*nstrt)++;
+      ctemp++;
+    }
+  }
+
+  /* And the result unless we found nothing */
+  if (*jflag != 1) *dreslt = retval;
+
+}
Index: branches/FACT++_part_filenames/pal/palDh2e.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDh2e.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDh2e.c	(revision 18732)
@@ -0,0 +1,133 @@
+/*
+*+
+*  Name:
+*     palDh2e
+
+*  Purpose:
+*     Horizon to equatorial coordinates: Az,El to HA,Dec
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDh2e( double az, double el, double phi, double * ha, double * dec );
+
+*  Arguments:
+*     az = double (Given)
+*        Azimuth (radians)
+*     el = double (Given)
+*        Elevation (radians)
+*     phi = double (Given)
+*        Observatory latitude (radians)
+*     ha = double * (Returned)
+*        Hour angle (radians)
+*     dec = double * (Returned)
+*        Declination (radians)
+
+*  Description:
+*     Convert horizon to equatorial coordinates.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - All the arguments are angles in radians.
+*     - The sign convention for azimuth is north zero, east +pi/2.
+*     - HA is returned in the range +/-pi.  Declination is returned
+*       in the range +/-pi/2.
+*     - The latitude is (in principle) geodetic.  In critical
+*       applications, corrections for polar motion should be applied.
+*     - In some applications it will be important to specify the
+*       correct type of elevation in order to produce the required
+*       type of HA,Dec.  In particular, it may be important to
+*       distinguish between the elevation as affected by refraction,
+*       which will yield the "observed" HA,Dec, and the elevation
+*       in vacuo, which will yield the "topocentric" HA,Dec.  If the
+*       effects of diurnal aberration can be neglected, the
+*       topocentric HA,Dec may be used as an approximation to the
+*       "apparent" HA,Dec.
+*     - No range checking of arguments is done.
+*     - In applications which involve many such calculations, rather
+*       than calling the present routine it will be more efficient to
+*       use inline code, having previously computed fixed terms such
+*       as sine and cosine of latitude.
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include <math.h>
+
+void
+palDh2e ( double az, double el, double phi, double *ha, double *dec) {
+
+  double sa;
+  double ca;
+  double se;
+  double ce;
+  double sp;
+  double cp;
+
+  double x;
+  double y;
+  double z;
+  double r;
+
+  /*  Useful trig functions */
+  sa = sin(az);
+  ca = cos(az);
+  se = sin(el);
+  ce = cos(el);
+  sp = sin(phi);
+  cp = cos(phi);
+
+  /*  HA,Dec as x,y,z */
+  x = -ca * ce * sp + se * cp;
+  y = -sa * ce;
+  z = ca * ce * cp + se * sp;
+
+  /*  To HA,Dec */
+  r = sqrt(x * x + y * y);
+  if (r == 0.) {
+    *ha = 0.;
+  } else {
+    *ha = atan2(y, x);
+  }
+  *dec = atan2(z, r);
+
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDjcal.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDjcal.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDjcal.c	(revision 18732)
@@ -0,0 +1,97 @@
+/*
+*+
+*  Name:
+*     palDjcal
+
+*  Purpose:
+*     Modified Julian Date to Gregorian Calendar
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDjcal ( int ndp, double djm, int iymdf[4], int *j );
+
+*  Arguments:
+*     ndp = int (Given)
+*        Number of decimal places of days in fraction.
+*     djm = double (Given)
+*        Modified Julian Date (JD-2400000.5)
+*     iymdf[4] = int[] (Returned)
+*       Year, month, day, fraction in Gregorian calendar.
+*     j = status (Returned)
+*       0 = OK. See eraJd2cal for other values.
+
+*  Description:
+*     Modified Julian Date to Gregorian Calendar, expressed
+*     in a form convenient for formatting messages (namely
+*     rounded to a specified precision, and with the fields
+*     stored in a single array)
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-10 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Notes:
+*     - Uses eraJd2cal
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palDjcal ( int ndp, double djm, int iymdf[4], int *j ) {
+  double frac = 0.0;
+  double nfd;
+
+  *j = eraJd2cal( PAL__MJD0, djm, &(iymdf[0]),
+		  &(iymdf[1]), &(iymdf[2]),
+		  &frac);
+
+  /* Convert ndp to a power of 10 */
+  nfd = pow( 10., (double)ndp );
+
+  /* Multiply the fraction */
+  frac *= nfd;
+
+  /* and now we want to round to the nearest integer */
+  iymdf[3] = (int)DNINT(frac);
+
+}
Index: branches/FACT++_part_filenames/pal/palDmat.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDmat.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDmat.c	(revision 18732)
@@ -0,0 +1,182 @@
+/*
+*+
+*  Name:
+*     palDmat
+
+*  Purpose:
+*     Matrix inversion & solution of simultaneous equations
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDmat( int n, double *a, double *y, double *d, int *jf,
+*                    int *iw );
+
+*  Arguments:
+*     n = int (Given)
+*        Number of simultaneous equations and number of unknowns.
+*     a = double[] (Given & Returned)
+*        A non-singular NxN matrix (implemented as a contiguous block
+*        of memory). After calling this routine "a" contains the
+*        inverse of the matrix.
+*     y = double[] (Given & Returned)
+*        On input the vector of N knowns. On exit this vector contains the
+*        N solutions.
+*     d = double * (Returned)
+*        The determinant.
+*     jf = int * (Returned)
+*        The singularity flag.  If the matrix is non-singular, jf=0
+*        is returned.  If the matrix is singular, jf=-1 & d=0.0 are
+*        returned.  In the latter case, the contents of array "a" on
+*        return are undefined.
+*     iw = int[] (Given)
+*        Integer workspace of size N.
+
+*  Description:
+*     Matrix inversion & solution of simultaneous equations
+*     For the set of n simultaneous equations in n unknowns:
+*          A.Y = X
+*     this routine calculates the inverse of A, the determinant
+*     of matrix A and the vector of N unknowns.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-11 (TIMJ):
+*        Combination of a port of the Fortran and a comparison
+*        with the obfuscated GPL C routine.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Notes:
+*     - Implemented using Gaussian elimination with partial pivoting.
+*     - Optimized for speed rather than accuracy with errors 1 to 4
+*       times those of routines optimized for accuracy.
+
+*  Copyright:
+*     Copyright (C) 2001 Rutherford Appleton Laboratory.
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ) {
+
+  const double SFA = 1e-20;
+
+  int k;
+  double*aoff;
+
+  *jf=0;
+  *d=1.0;
+  for(k=0,aoff=a; k<n; k++, aoff+=n){
+    int imx;
+    double * aoff2 = aoff;
+    double amx=fabs(aoff[k]);
+    imx=k;
+    if(k!=n){
+      int i;
+      double *apos2;
+      for(i=k+1,apos2=aoff+n;i<n;i++,apos2+=n){
+	double t=fabs(apos2[k]);
+	if(t>amx){
+	  amx=t;
+	  imx=i;
+	  aoff2=apos2;
+	}
+      }
+    }
+    if(amx<SFA){
+      *jf=-1;
+    } else {
+      if(imx!=k){
+	double t;
+	int j;
+	for(j=0;j<n;j++){
+	  t=aoff[j];
+	  aoff[j]=aoff2[j];
+	  aoff2[j]=t;
+	}
+	t=y[k];
+	y[k]=y[imx];
+	y[imx]=t;*d=-*d;
+      }
+      iw[k]=imx;
+      *d*=aoff[k];
+      if(fabs(*d)<SFA){
+	*jf=-1;
+      } else {
+	double yk;
+	double * apos2;
+	int i, j;
+	aoff[k]=1.0/aoff[k];
+	for(j=0;j<n;j++){
+	  if(j!=k){
+	    aoff[j]*=aoff[k];
+	  }
+	}
+	yk=y[k]*aoff[k];
+	y[k]=yk;
+	for(i=0,apos2=a;i<n;i++,apos2+=n){
+	  if(i!=k){
+	    for(j=0;j<n;j++){
+	      if(j!=k){
+		apos2[j]-=apos2[k]*aoff[j];
+	      }
+	    }
+	    y[i]-=apos2[k]*yk;
+	  }
+	}
+	for(i=0,apos2=a;i<n;i++,apos2+=n){
+	  if(i!=k){
+	    apos2[k]*=-aoff[k];
+	  }
+	}
+      }
+    }
+  }
+  if(*jf!=0){
+    *d=0.0;
+  } else {
+    for(k=n;k-->0;){
+      int ki=iw[k];
+      if(k!=ki){
+	int i;
+	double *apos = a;
+	for(i=0;i<n;i++,apos+=n){
+	  double t=apos[k];
+	  apos[k]=apos[ki];
+	  apos[ki]=t;
+	}
+      }
+    }
+  }
+}
Index: branches/FACT++_part_filenames/pal/palDmoon.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDmoon.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDmoon.c	(revision 18732)
@@ -0,0 +1,573 @@
+/*
+*+
+*  Name:
+*     palDmoon
+
+*  Purpose:
+*     Approximate geocentric position and velocity of the Moon
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palDmoon( double date, double pv[6] );
+
+*  Arguments:
+*     date = double (Given)
+*        TDB as a Modified Julian Date (JD-2400000.5)
+*     pv = double [6] (Returned)
+*        Moon x,y,z,xdot,ydot,zdot, mean equator and
+*        equinox of date (AU, AU/s)
+
+*  Description:
+*      Calculate the approximate geocentric position of the Moon
+*      using a full implementation of the algorithm published by
+*      Meeus (l'Astronomie, June 1984, p348).
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in
+*       latitude and 0.2 arcsec in HP (equivalent to about 20 km in
+*       distance).  Comparison with JPL DE200 over the interval
+*       1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in
+*       longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km
+*       and 81 mm/s in distance.  The maximum errors over the same
+*       interval are 18 arcsec and 0.50 arcsec/hour in longitude,
+*       11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s
+*       in distance.
+*     - The original algorithm is expressed in terms of the obsolete
+*       timescale Ephemeris Time.  Either TDB or TT can be used, but
+*       not UT without incurring significant errors (30 arcsec at
+*       the present time) due to the Moon's 0.5 arcsec/sec movement.
+*     - The algorithm is based on pre IAU 1976 standards.  However,
+*       the result has been moved onto the new (FK5) equinox, an
+*       adjustment which is in any case much smaller than the
+*       intrinsic accuracy of the procedure.
+*     - Velocity is obtained by a complete analytical differentiation
+*       of the Meeus model.
+
+*  History:
+*     2012-03-07 (TIMJ):
+*        Initial version based on a direct port of the SLA/F code.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1998 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+#include "palmac.h"
+
+/* Autoconf can give us -DPIC */
+#undef PIC
+
+void palDmoon( double date, double pv[6] ) {
+
+  /*  Seconds per Julian century (86400*36525) */
+  const double CJ = 3155760000.0;
+
+  /*  Julian epoch of B1950 */
+  const double B1950 = 1949.9997904423;
+
+  /*  Earth equatorial radius in AU ( = 6378.137 / 149597870 ) */
+  const double ERADAU=4.2635212653763e-5;
+
+  double T,THETA,SINOM,COSOM,DOMCOM,WA,DWA,WB,DWB,WOM,
+    DWOM,SINWOM,COSWOM,V,DV,COEFF,EMN,EMPN,DN,FN,EN,
+    DEN,DTHETA,FTHETA,EL,DEL,B,DB,BF,DBF,P,DP,SP,R,
+    DR,X,Y,Z,XD,YD,ZD,SEL,CEL,SB,CB,RCB,RBD,W,EPJ,
+    EQCOR,EPS,SINEPS,COSEPS,ES,EC;
+  double ELP, DELP;
+  double EM, DEM, EMP, DEMP, D, DD, F, DF, OM, DOM, E, DESQ, ESQ, DE;
+  int N,I;
+
+  /*
+   *  Coefficients for fundamental arguments
+   *
+   *   at J1900:  T**0, T**1, T**2, T**3
+   *   at epoch:  T**0, T**1
+   *
+   *  Units are degrees for position and Julian centuries for time
+   *
+   */
+
+  /*  Moon's mean longitude */
+  const double ELP0=270.434164;
+  const double ELP1=481267.8831;
+  const double ELP2=-0.001133;
+  const double ELP3=0.0000019;
+
+  /*  Sun's mean anomaly */
+  const double EM0=358.475833;
+  const double EM1=35999.0498;
+  const double EM2=-0.000150;
+  const double EM3=-0.0000033;
+
+  /*  Moon's mean anomaly */
+  const double EMP0=296.104608;
+  const double EMP1=477198.8491;
+  const double EMP2=0.009192;
+  const double EMP3=0.0000144;
+
+  /*  Moon's mean elongation */
+  const double D0=350.737486;
+  const double D1=445267.1142;
+  const double D2=-0.001436;
+  const double D3=0.0000019;
+
+  /*  Mean distance of the Moon from its ascending node */
+  const double F0=11.250889;
+  const double F1=483202.0251;
+  const double F2=-0.003211;
+  const double F3=-0.0000003;
+
+  /*  Longitude of the Moon's ascending node */
+  const double OM0=259.183275;
+  const double OM1=-1934.1420;
+  const double OM2=0.002078;
+  const double OM3=0.0000022;
+
+  /*  Coefficients for (dimensionless) E factor */
+  const double E1=-0.002495;
+  const double E2=-0.00000752;
+
+  /*  Coefficients for periodic variations etc */
+  const double PAC=0.000233;
+  const double PA0=51.2;
+  const double PA1=20.2;
+  const double PBC=-0.001778;
+  const double PCC=0.000817;
+  const double PDC=0.002011;
+  const double PEC=0.003964;
+  const double PE0=346.560;
+  const double PE1=132.870;
+  const double PE2=-0.0091731;
+  const double PFC=0.001964;
+  const double PGC=0.002541;
+  const double PHC=0.001964;
+  const double PIC=-0.024691;
+  const double PJC=-0.004328;
+  const double PJ0=275.05;
+  const double PJ1=-2.30;
+  const double CW1=0.0004664;
+  const double CW2=0.0000754;
+
+  /*
+   *  Coefficients for Moon position
+   *
+   *   Tx(N)       = coefficient of L, B or P term (deg)
+   *   ITx(N,1-5)  = coefficients of M, M', D, F, E**n in argument
+   */
+#define NL 50
+#define NB 45
+#define NP 31
+
+  /*
+   *  Longitude
+   */
+  const double TL[NL] = {
+    6.28875,1.274018,.658309,.213616,-.185596,
+    -.114336,.058793,.057212,.05332,.045874,.041024,-.034718,-.030465,
+    .015326,-.012528,-.01098,.010674,.010034,.008548,-.00791,-.006783,
+    .005162,.005,.004049,.003996,.003862,.003665,.002695,.002602,
+    .002396,-.002349,.002249,-.002125,-.002079,.002059,-.001773,
+    -.001595,.00122,-.00111,8.92e-4,-8.11e-4,7.61e-4,7.17e-4,7.04e-4,
+    6.93e-4,5.98e-4,5.5e-4,5.38e-4,5.21e-4,4.86e-4
+  };
+
+  const int ITL[NL][5] = {
+    /* M   M'  D   F   n */
+    { +0, +1, +0, +0, 0 },
+    { +0, -1, +2, +0, 0 },
+    { +0, +0, +2, +0, 0 },
+    { +0, +2, +0, +0, 0 },
+    { +1, +0, +0, +0, 1 },
+    { +0, +0, +0, +2, 0 },
+    { +0, -2, +2, +0, 0 },
+    { -1, -1, +2, +0, 1 },
+    { +0, +1, +2, +0, 0 },
+    { -1, +0, +2, +0, 1 },
+    { -1, +1, +0, +0, 1 },
+    { +0, +0, +1, +0, 0 },
+    { +1, +1, +0, +0, 1 },
+    { +0, +0, +2, -2, 0 },
+    { +0, +1, +0, +2, 0 },
+    { +0, -1, +0, +2, 0 },
+    { +0, -1, +4, +0, 0 },
+    { +0, +3, +0, +0, 0 },
+    { +0, -2, +4, +0, 0 },
+    { +1, -1, +2, +0, 1 },
+    { +1, +0, +2, +0, 1 },
+    { +0, +1, -1, +0, 0 },
+    { +1, +0, +1, +0, 1 },
+    { -1, +1, +2, +0, 1 },
+    { +0, +2, +2, +0, 0 },
+    { +0, +0, +4, +0, 0 },
+    { +0, -3, +2, +0, 0 },
+    { -1, +2, +0, +0, 1 },
+    { +0, +1, -2, -2, 0 },
+    { -1, -2, +2, +0, 1 },
+    { +0, +1, +1, +0, 0 },
+    { -2, +0, +2, +0, 2 },
+    { +1, +2, +0, +0, 1 },
+    { +2, +0, +0, +0, 2 },
+    { -2, -1, +2, +0, 2 },
+    { +0, +1, +2, -2, 0 },
+    { +0, +0, +2, +2, 0 },
+    { -1, -1, +4, +0, 1 },
+    { +0, +2, +0, +2, 0 },
+    { +0, +1, -3, +0, 0 },
+    { +1, +1, +2, +0, 1 },
+    { -1, -2, +4, +0, 1 },
+    { -2, +1, +0, +0, 2 },
+    { -2, +1, -2, +0, 2 },
+    { +1, -2, +2, +0, 1 },
+    { -1, +0, +2, -2, 1 },
+    { +0, +1, +4, +0, 0 },
+    { +0, +4, +0, +0, 0 },
+    { -1, +0, +4, +0, 1 },
+    { +0, +2, -1, +0, 0 }
+  };
+
+  /*
+   *  Latitude
+   */
+  const double TB[NB] = {
+    5.128189,.280606,.277693,.173238,.055413,
+    .046272,.032573,.017198,.009267,.008823,.008247,.004323,.0042,
+    .003372,.002472,.002222,.002072,.001877,.001828,-.001803,-.00175,
+    .00157,-.001487,-.001481,.001417,.00135,.00133,.001106,.00102,
+    8.33e-4,7.81e-4,6.7e-4,6.06e-4,5.97e-4,4.92e-4,4.5e-4,4.39e-4,
+    4.23e-4,4.22e-4,-3.67e-4,-3.53e-4,3.31e-4,3.17e-4,3.06e-4,
+    -2.83e-4
+  };
+
+  const int ITB[NB][5] = {
+    /* M   M'  D   F   n */
+    { +0, +0, +0, +1, 0 },
+    { +0, +1, +0, +1, 0 },
+    { +0, +1, +0, -1, 0 },
+    { +0, +0, +2, -1, 0 },
+    { +0, -1, +2, +1, 0 },
+    { +0, -1, +2, -1, 0 },
+    { +0, +0, +2, +1, 0 },
+    { +0, +2, +0, +1, 0 },
+    { +0, +1, +2, -1, 0 },
+    { +0, +2, +0, -1, 0 },
+    { -1, +0, +2, -1, 1 },
+    { +0, -2, +2, -1, 0 },
+    { +0, +1, +2, +1, 0 },
+    { -1, +0, -2, +1, 1 },
+    { -1, -1, +2, +1, 1 },
+    { -1, +0, +2, +1, 1 },
+    { -1, -1, +2, -1, 1 },
+    { -1, +1, +0, +1, 1 },
+    { +0, -1, +4, -1, 0 },
+    { +1, +0, +0, +1, 1 },
+    { +0, +0, +0, +3, 0 },
+    { -1, +1, +0, -1, 1 },
+    { +0, +0, +1, +1, 0 },
+    { +1, +1, +0, +1, 1 },
+    { -1, -1, +0, +1, 1 },
+    { -1, +0, +0, +1, 1 },
+    { +0, +0, -1, +1, 0 },
+    { +0, +3, +0, +1, 0 },
+    { +0, +0, +4, -1, 0 },
+    { +0, -1, +4, +1, 0 },
+    { +0, +1, +0, -3, 0 },
+    { +0, -2, +4, +1, 0 },
+    { +0, +0, +2, -3, 0 },
+    { +0, +2, +2, -1, 0 },
+    { -1, +1, +2, -1, 1 },
+    { +0, +2, -2, -1, 0 },
+    { +0, +3, +0, -1, 0 },
+    { +0, +2, +2, +1, 0 },
+    { +0, -3, +2, -1, 0 },
+    { +1, -1, +2, +1, 1 },
+    { +1, +0, +2, +1, 1 },
+    { +0, +0, +4, +1, 0 },
+    { -1, +1, +2, +1, 1 },
+    { -2, +0, +2, -1, 2 },
+    { +0, +1, +0, +3, 0 }
+  };
+
+  /*
+   *  Parallax
+   */
+  const double TP[NP] = {
+    .950724,.051818,.009531,.007843,.002824,
+    8.57e-4,5.33e-4,4.01e-4,3.2e-4,-2.71e-4,-2.64e-4,-1.98e-4,1.73e-4,
+    1.67e-4,-1.11e-4,1.03e-4,-8.4e-5,-8.3e-5,7.9e-5,7.2e-5,6.4e-5,
+    -6.3e-5,4.1e-5,3.5e-5,-3.3e-5,-3e-5,-2.9e-5,-2.9e-5,2.6e-5,
+    -2.3e-5,1.9e-5
+  };
+
+  const int ITP[NP][5] = {
+    /* M   M'  D   F   n */
+    { +0, +0, +0, +0, 0 },
+    { +0, +1, +0, +0, 0 },
+    { +0, -1, +2, +0, 0 },
+    { +0, +0, +2, +0, 0 },
+    { +0, +2, +0, +0, 0 },
+    { +0, +1, +2, +0, 0 },
+    { -1, +0, +2, +0, 1 },
+    { -1, -1, +2, +0, 1 },
+    { -1, +1, +0, +0, 1 },
+    { +0, +0, +1, +0, 0 },
+    { +1, +1, +0, +0, 1 },
+    { +0, -1, +0, +2, 0 },
+    { +0, +3, +0, +0, 0 },
+    { +0, -1, +4, +0, 0 },
+    { +1, +0, +0, +0, 1 },
+    { +0, -2, +4, +0, 0 },
+    { +0, +2, -2, +0, 0 },
+    { +1, +0, +2, +0, 1 },
+    { +0, +2, +2, +0, 0 },
+    { +0, +0, +4, +0, 0 },
+    { -1, +1, +2, +0, 1 },
+    { +1, -1, +2, +0, 1 },
+    { +1, +0, +1, +0, 1 },
+    { -1, +2, +0, +0, 1 },
+    { +0, +3, -2, +0, 0 },
+    { +0, +1, +1, +0, 0 },
+    { +0, +0, -2, +2, 0 },
+    { +1, +2, +0, +0, 1 },
+    { -2, +0, +2, +0, 2 },
+    { +0, +1, -2, +2, 0 },
+    { -1, -1, +4, +0, 1 }
+  };
+
+  /*  Centuries since J1900 */
+  T=(date-15019.5)/36525.;
+
+  /*
+   *  Fundamental arguments (radians) and derivatives (radians per
+   *  Julian century) for the current epoch
+   */
+
+  /*  Moon's mean longitude */
+  ELP=PAL__DD2R*fmod(ELP0+(ELP1+(ELP2+ELP3*T)*T)*T,360.);
+  DELP=PAL__DD2R*(ELP1+(2.*ELP2+3*ELP3*T)*T);
+
+  /*  Sun's mean anomaly */
+  EM=PAL__DD2R*fmod(EM0+(EM1+(EM2+EM3*T)*T)*T,360.);
+  DEM=PAL__DD2R*(EM1+(2.*EM2+3*EM3*T)*T);
+
+  /*  Moon's mean anomaly */
+  EMP=PAL__DD2R*fmod(EMP0+(EMP1+(EMP2+EMP3*T)*T)*T,360.);
+  DEMP=PAL__DD2R*(EMP1+(2.*EMP2+3*EMP3*T)*T);
+
+  /*  Moon's mean elongation */
+  D=PAL__DD2R*fmod(D0+(D1+(D2+D3*T)*T)*T,360.);
+  DD=PAL__DD2R*(D1+(2.*D2+3.*D3*T)*T);
+
+  /*  Mean distance of the Moon from its ascending node */
+  F=PAL__DD2R*fmod(F0+(F1+(F2+F3*T)*T)*T,360.);
+  DF=PAL__DD2R*(F1+(2.*F2+3.*F3*T)*T);
+
+  /*  Longitude of the Moon's ascending node */
+  OM=PAL__DD2R*fmod(OM0+(OM1+(OM2+OM3*T)*T)*T,360.);
+  DOM=PAL__DD2R*(OM1+(2.*OM2+3.*OM3*T)*T);
+  SINOM=sin(OM);
+  COSOM=cos(OM);
+  DOMCOM=DOM*COSOM;
+
+  /*  Add the periodic variations */
+  THETA=PAL__DD2R*(PA0+PA1*T);
+  WA=sin(THETA);
+  DWA=PAL__DD2R*PA1*cos(THETA);
+  THETA=PAL__DD2R*(PE0+(PE1+PE2*T)*T);
+  WB=PEC*sin(THETA);
+  DWB=PAL__DD2R*PEC*(PE1+2.*PE2*T)*cos(THETA);
+  ELP=ELP+PAL__DD2R*(PAC*WA+WB+PFC*SINOM);
+  DELP=DELP+PAL__DD2R*(PAC*DWA+DWB+PFC*DOMCOM);
+  EM=EM+PAL__DD2R*PBC*WA;
+  DEM=DEM+PAL__DD2R*PBC*DWA;
+  EMP=EMP+PAL__DD2R*(PCC*WA+WB+PGC*SINOM);
+  DEMP=DEMP+PAL__DD2R*(PCC*DWA+DWB+PGC*DOMCOM);
+  D=D+PAL__DD2R*(PDC*WA+WB+PHC*SINOM);
+  DD=DD+PAL__DD2R*(PDC*DWA+DWB+PHC*DOMCOM);
+  WOM=OM+PAL__DD2R*(PJ0+PJ1*T);
+  DWOM=DOM+PAL__DD2R*PJ1;
+  SINWOM=sin(WOM);
+  COSWOM=cos(WOM);
+  F=F+PAL__DD2R*(WB+PIC*SINOM+PJC*SINWOM);
+  DF=DF+PAL__DD2R*(DWB+PIC*DOMCOM+PJC*DWOM*COSWOM);
+
+  /*  E-factor, and square */
+  E=1.+(E1+E2*T)*T;
+  DE=E1+2.*E2*T;
+  ESQ=E*E;
+  DESQ=2.*E*DE;
+
+  /*
+   *  Series expansions
+   */
+
+  /*  Longitude */
+  V=0.;
+  DV=0.;
+  for (N=NL-1; N>=0; N--) { /* DO N=NL, 1, -1 */
+    COEFF=TL[N];
+    EMN=(double)(ITL[N][0]);
+    EMPN=(double)(ITL[N][1]);
+    DN=(double)(ITL[N][2]);
+    FN=(double)(ITL[N][3]);
+    I=ITL[N][4];
+    if (I == 0) {
+      EN=1.;
+      DEN=0.;
+    } else if (I == 1) {
+      EN=E;
+      DEN=DE;
+    } else {
+      EN=ESQ;
+      DEN=DESQ;
+    }
+    THETA=EMN*EM+EMPN*EMP+DN*D+FN*F;
+    DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF;
+    FTHETA=sin(THETA);
+    V=V+COEFF*FTHETA*EN;
+    DV=DV+COEFF*(cos(THETA)*DTHETA*EN+FTHETA*DEN);
+  }
+  EL=ELP+PAL__DD2R*V;
+  DEL=(DELP+PAL__DD2R*DV)/CJ;
+
+  /*  Latitude */
+  V=0.;
+  DV=0.;
+  for (N=NB-1; N>=0; N--) { /* DO N=NB,1,-1 */
+    COEFF=TB[N];
+    EMN=(double)(ITB[N][0]);
+    EMPN=(double)(ITB[N][1]);
+    DN=(double)(ITB[N][2]);
+    FN=(double)(ITB[N][3]);
+    I=ITB[N][4];
+    if (I == 0 ) {
+      EN=1.;
+      DEN=0.;
+    } else if (I == 1) {
+      EN=E;
+      DEN=DE;
+    } else {
+      EN=ESQ;
+      DEN=DESQ;
+    }
+    THETA=EMN*EM+EMPN*EMP+DN*D+FN*F;
+    DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF;
+    FTHETA=sin(THETA);
+    V=V+COEFF*FTHETA*EN;
+    DV=DV+COEFF*(cos(THETA)*DTHETA*EN+FTHETA*DEN);
+  }
+  BF=1.-CW1*COSOM-CW2*COSWOM;
+  DBF=CW1*DOM*SINOM+CW2*DWOM*SINWOM;
+  B=PAL__DD2R*V*BF;
+  DB=PAL__DD2R*(DV*BF+V*DBF)/CJ;
+
+  /*  Parallax */
+  V=0.;
+  DV=0.;
+  for (N=NP-1; N>=0; N--) { /* DO N=NP,1,-1 */
+    COEFF=TP[N];
+    EMN=(double)(ITP[N][0]);
+    EMPN=(double)(ITP[N][1]);
+    DN=(double)(ITP[N][2]);
+    FN=(double)(ITP[N][3]);
+    I=ITP[N][4];
+    if (I == 0) {
+      EN=1.;
+      DEN=0.;
+    } else if (I == 1) {
+      EN=E;
+      DEN=DE;
+    } else {
+      EN=ESQ;
+      DEN=DESQ;
+    }
+    THETA=EMN*EM+EMPN*EMP+DN*D+FN*F;
+    DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF;
+    FTHETA=cos(THETA);
+    V=V+COEFF*FTHETA*EN;
+    DV=DV+COEFF*(-sin(THETA)*DTHETA*EN+FTHETA*DEN);
+  }
+  P=PAL__DD2R*V;
+  DP=PAL__DD2R*DV/CJ;
+
+  /*
+   *  Transformation into final form
+   */
+
+  /*  Parallax to distance (AU, AU/sec) */
+  SP=sin(P);
+  R=ERADAU/SP;
+  DR=-R*DP*cos(P)/SP;
+
+  /*  Longitude, latitude to x,y,z (AU) */
+  SEL=sin(EL);
+  CEL=cos(EL);
+  SB=sin(B);
+  CB=cos(B);
+  RCB=R*CB;
+  RBD=R*DB;
+  W=RBD*SB-CB*DR;
+  X=RCB*CEL;
+  Y=RCB*SEL;
+  Z=R*SB;
+  XD=-Y*DEL-W*CEL;
+  YD=X*DEL-W*SEL;
+  ZD=RBD*CB+SB*DR;
+
+  /*  Julian centuries since J2000 */
+  T=(date-51544.5)/36525.;
+
+  /*  Fricke equinox correction */
+  EPJ=2000.+T*100.;
+  EQCOR=PAL__DS2R*(0.035+0.00085*(EPJ-B1950));
+
+  /*  Mean obliquity (IAU 1976) */
+  EPS=PAL__DAS2R*(84381.448+(-46.8150+(-0.00059+0.001813*T)*T)*T);
+
+  /*  To the equatorial system, mean of date, FK5 system */
+  SINEPS=sin(EPS);
+  COSEPS=cos(EPS);
+  ES=EQCOR*SINEPS;
+  EC=EQCOR*COSEPS;
+  pv[0]=X-EC*Y+ES*Z;
+  pv[1]=EQCOR*X+Y*COSEPS-Z*SINEPS;
+  pv[2]=Y*SINEPS+Z*COSEPS;
+  pv[3]=XD-EC*YD+ES*ZD;
+  pv[4]=EQCOR*XD+YD*COSEPS-ZD*SINEPS;
+  pv[5]=YD*SINEPS+ZD*COSEPS;
+
+}
Index: branches/FACT++_part_filenames/pal/palDrange.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDrange.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDrange.c	(revision 18732)
@@ -0,0 +1,77 @@
+/*
+*+
+*  Name:
+*     palDrange
+
+*  Purpose:
+*     Normalize angle into range +/- pi
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDrange( double angle )
+
+*  Arguments:
+*     angle = double (Given)
+*        The angle in radians.
+
+*  Description:
+*     The result is "angle" expressed in the range +/- pi. If the
+*     supplied value for "angle" is equal to +/- pi, it is returned
+*     unchanged.
+
+*  Authors:
+*     DSB: David S Berry (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-05-09 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include <math.h>
+
+double palDrange( double angle ){
+   double result = fmod( angle, PAL__D2PI );
+   if( result > PAL__DPI ) {
+      result -= PAL__D2PI;
+   } else if( result < -PAL__DPI ) {
+      result += PAL__D2PI;
+   }
+   return result;
+}
+
Index: branches/FACT++_part_filenames/pal/palDs2tp.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDs2tp.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDs2tp.c	(revision 18732)
@@ -0,0 +1,127 @@
+/*
+*+
+*  Name:
+*     palDs2tp
+
+*  Purpose:
+*     Spherical to tangent plane projection
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDs2tp( double ra, double dec, double raz, double decz,
+*               double *xi, double *eta, int *j );
+
+*  Arguments:
+*     ra = double (Given)
+*        RA spherical coordinate of point to be projected (radians)
+*     dec = double (Given)
+*        Dec spherical coordinate of point to be projected (radians)
+*     raz = double (Given)
+*        RA spherical coordinate of tangent point (radians)
+*     decz = double (Given)
+*        Dec spherical coordinate of tangent point (radians)
+*     xi = double * (Returned)
+*        First rectangular coordinate on tangent plane (radians)
+*     eta = double * (Returned)
+*        Second rectangular coordinate on tangent plane (radians)
+*     j = int * (Returned)
+*        status: 0 = OK, star on tangent plane
+*                1 = error, star too far from axis
+*                2 = error, antistar on tangent plane
+*                3 = error, antistar too far from axis
+
+*  Description:
+*     Projection of spherical coordinates onto tangent plane:
+*     "gnomonic" projection - "standard coordinates"
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include <math.h>
+
+void
+palDs2tp ( double ra, double dec, double raz, double decz,
+           double *xi, double *eta, int *j ) {
+
+  const double TINY = 1.0e-6;
+
+  double cdec;
+  double sdec;
+  double radif;
+  double cdecz;
+  double denom;
+  double sdecz;
+  double cradif;
+  double sradif;
+
+  /*  Trig functions */
+  sdecz = sin(decz);
+  sdec = sin(dec);
+  cdecz = cos(decz);
+  cdec = cos(dec);
+  radif = ra - raz;
+  sradif = sin(radif);
+  cradif = cos(radif);
+
+  /*  Reciprocal of star vector length to tangent plane */
+  denom = sdec * sdecz + cdec * cdecz * cradif;
+
+  /*  Handle vectors too far from axis */
+  if (denom > TINY) {
+    *j = 0;
+  } else if (denom >= 0.) {
+    *j = 1;
+    denom = TINY;
+  } else if (denom > -TINY) {
+    *j = 2;
+    denom = -TINY;
+  } else {
+    *j = 3;
+  }
+
+  /*  Compute tangent plane coordinates (even in dubious cases) */
+  *xi = cdec * sradif / denom;
+  *eta = (sdec * cdecz - cdec * sdecz * cradif) / denom;
+
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDt.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDt.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDt.c	(revision 18732)
@@ -0,0 +1,125 @@
+/*
+*+
+*  Name:
+*     palDt
+
+*  Purpose:
+*     Estimate the offset between dynamical time and UT
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palDt( double epoch );
+
+*  Arguments:
+*     epoch = double (Given)
+*        Julian epoch (e.g. 1850.0)
+
+*  Returned Value:
+*     palDt = double
+*        Rough estimate of ET-UT (after 1984, TT-UT) at the
+*        given epoch, in seconds.
+
+*  Description:
+*     Estimate the offset between dynamical time and Universal Time
+*     for a given historical epoch.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Depending on the epoch, one of three parabolic approximations
+*       is used:
+*
+*         before 979    Stephenson & Morrison's 390 BC to AD 948 model
+*         979 to 1708   Stephenson & Morrison's 948 to 1600 model
+*         after 1708    McCarthy & Babcock's post-1650 model
+*
+*       The breakpoints are chosen to ensure continuity:  they occur
+*       at places where the adjacent models give the same answer as
+*       each other.
+*     - The accuracy is modest, with errors of up to 20 sec during
+*       the interval since 1650, rising to perhaps 30 min by 1000 BC.
+*       Comparatively accurate values from AD 1600 are tabulated in
+*       the Astronomical Almanac (see section K8 of the 1995 AA).
+*     - The use of double-precision for both argument and result is
+*       purely for compatibility with other SLALIB time routines.
+*     - The models used are based on a lunar tidal acceleration value
+*       of -26.00 arcsec per century.
+*
+*  See Also:
+*     Explanatory Supplement to the Astronomical Almanac,
+*     ed P.K.Seidelmann, University Science Books (1992),
+*     section 2.553, p83.  This contains references to
+*     the Stephenson & Morrison and McCarthy & Babcock
+*     papers.
+
+*  History:
+*     2012-03-08 (TIMJ):
+*        Initial version with documentation from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+double palDt ( double epoch ) {
+
+  double t,w,s;
+
+  /* Centuries since 1800 */
+  t = (epoch - 1800.0) / 100.0;
+
+  /* Select model */
+  if ( epoch >= 1708.185161980887 ) {
+
+    /* Post-1708: use McCarthy & Babcock */
+    w = t - 0.19;
+    s = 5.156 + 13.3066 * w * w;
+
+  } else if ( epoch >= 979.0258204760233 ) {
+
+    /* 978-1708: use Stephenson & Morrison's 948-1600 model */
+    s = 25.5 * t * t;
+
+  } else {
+
+    /* Pre-979: use Stephenson & Morrison's 390 BC to AD 948 model */
+    s = 1360.0 + (320.0 + 44.3*t) * t;
+
+  }
+
+  return s;
+
+}
Index: branches/FACT++_part_filenames/pal/palDtp2s.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDtp2s.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDtp2s.c	(revision 18732)
@@ -0,0 +1,95 @@
+/*
+*+
+*  Name:
+*     palDtp2s
+
+*  Purpose:
+*     Tangent plane to spherical coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDtp2s( double xi, double eta, double raz, double decz,
+*               double *ra, double *dec);
+
+*  Arguments:
+*     xi = double (Given)
+*        First rectangular coordinate on tangent plane (radians)
+*     eta = double (Given)
+*        Second rectangular coordinate on tangent plane (radians)
+*     raz = double (Given)
+*        RA spherical coordinate of tangent point (radians)
+*     decz = double (Given)
+*        Dec spherical coordinate of tangent point (radians)
+*     ra = double * (Returned)
+*        RA spherical coordinate of point to be projected (radians)
+*     dec = double * (Returned)
+*        Dec spherical coordinate of point to be projected (radians)
+
+*  Description:
+*     Transform tangent plane coordinates into spherical.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+#include <math.h>
+
+void
+palDtp2s ( double xi, double eta, double raz, double decz,
+           double *ra, double *dec ) {
+
+  double cdecz;
+  double denom;
+  double sdecz;
+  double d;
+
+  sdecz = sin(decz);
+  cdecz = cos(decz);
+  denom = cdecz - eta * sdecz;
+  d = atan2(xi, denom) + raz;
+  *ra = eraAnp(d);
+  *dec = atan2(sdecz + eta * cdecz, sqrt(xi * xi + denom * denom));
+
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDtps2c.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDtps2c.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDtps2c.c	(revision 18732)
@@ -0,0 +1,151 @@
+/*
+*+
+*  Name:
+*     palDtps2c
+
+*  Purpose:
+*     Determine RA,Dec of tangent point from coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDtps2c( double xi, double eta, double ra, double dec,
+*                double * raz1, double decz1,
+*                double * raz2, double decz2, int *n);
+
+*  Arguments:
+*     xi = double (Given)
+*        First rectangular coordinate on tangent plane (radians)
+*     eta = double (Given)
+*        Second rectangular coordinate on tangent plane (radians)
+*     ra = double (Given)
+*        RA spherical coordinate of star (radians)
+*     dec = double (Given)
+*        Dec spherical coordinate of star (radians)
+*     raz1 = double * (Returned)
+*        RA spherical coordinate of tangent point, solution 1 (radians)
+*     decz1 = double * (Returned)
+*        Dec spherical coordinate of tangent point, solution 1 (radians)
+*     raz2 = double * (Returned)
+*        RA spherical coordinate of tangent point, solution 2 (radians)
+*     decz2 = double * (Returned)
+*        Dec spherical coordinate of tangent point, solution 2 (radians)
+*     n = int * (Returned)
+*        number of solutions: 0 = no solutions returned (note 2)
+*                             1 = only the first solution is useful (note 3)
+*                             2 = both solutions are useful (note 3)
+
+
+*  Description:
+*     From the tangent plane coordinates of a star of known RA,Dec,
+*     determine the RA,Dec of the tangent point.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The RAZ1 and RAZ2 values are returned in the range 0-2pi.
+*     - Cases where there is no solution can only arise near the poles.
+*       For example, it is clearly impossible for a star at the pole
+*       itself to have a non-zero XI value, and hence it is
+*       meaningless to ask where the tangent point would have to be
+*       to bring about this combination of XI and DEC.
+*     - Also near the poles, cases can arise where there are two useful
+*       solutions.  The argument N indicates whether the second of the
+*       two solutions returned is useful.  N=1 indicates only one useful
+*       solution, the usual case;  under these circumstances, the second
+*       solution corresponds to the "over-the-pole" case, and this is
+*       reflected in the values of RAZ2 and DECZ2 which are returned.
+*     - The DECZ1 and DECZ2 values are returned in the range +/-pi, but
+*       in the usual, non-pole-crossing, case, the range is +/-pi/2.
+*     - This routine is the spherical equivalent of the routine sla_DTPV2C.
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+#include <math.h>
+
+void
+palDtps2c( double xi, double eta, double ra, double dec,
+           double * raz1, double * decz1,
+           double * raz2, double * decz2, int *n) {
+
+  double x2;
+  double y2;
+  double sd;
+  double cd;
+  double sdf;
+  double r2;
+
+  x2 = xi * xi;
+  y2 = eta * eta;
+  sd = sin(dec);
+  cd = cos(dec);
+  sdf = sd * sqrt(x2 + 1. + y2);
+  r2 = cd * cd * (y2 + 1.) - sd * sd * x2;
+  if (r2 >= 0.) {
+    double r;
+    double s;
+    double c;
+
+    r = sqrt(r2);
+    s = sdf - eta * r;
+    c = sdf * eta + r;
+    if (xi == 0. && r == 0.) {
+      r = 1.;
+    }
+    *raz1 = eraAnp(ra - atan2(xi, r));
+    *decz1 = atan2(s, c);
+    r = -r;
+    s = sdf - eta * r;
+    c = sdf * eta + r;
+    *raz2 = eraAnp(ra - atan2(xi, r));
+    *decz2 = atan2(s, c);
+    if (fabs(sdf) < 1.) {
+      *n = 1;
+    } else {
+      *n = 2;
+    }
+  } else {
+    *n = 0;
+  }
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palDtt.c
===================================================================
--- branches/FACT++_part_filenames/pal/palDtt.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palDtt.c	(revision 18732)
@@ -0,0 +1,77 @@
+/*
+*+
+*  Name:
+*     palDtt
+
+*  Purpose:
+*     Return offset between UTC and TT
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     dtt = palDtt( double utc );
+
+*  Arguments:
+*     utc = double (Given)
+*        UTC date as a modified JD (JD-2400000.5)
+
+*  Returned Value:
+*     dtt = double
+*        TT-UTC in seconds
+
+*  Description:
+*     Increment to be applied to Coordinated Universal Time UTC to give
+*     Terrestrial Time TT (formerly Ephemeris Time ET)
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     PTW: Patrick T. Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Consider a comprehensive upgrade to use the time transformations in SOFA's time
+*       cookbook:  http://www.iausofa.org/sofa_ts_c.pdf.
+*     - See eraDat for a description of error conditions when calling this function
+*       with a time outside of the UTC range. This behaviour differs from slaDtt.
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+double palDtt( double utc ) {
+  return 32.184 + palDat( utc );
+}
Index: branches/FACT++_part_filenames/pal/palEcleq.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEcleq.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEcleq.c	(revision 18732)
@@ -0,0 +1,97 @@
+/*
+*+
+*  Name:
+*     palEcleq
+
+*  Purpose:
+*     Transform from ecliptic coordinates to J2000.0 equatorial coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEcleq ( double dl, double db, double date,
+*                     double *dr, double *dd );
+
+*  Arguments:
+*     dl = double (Given)
+*        Ecliptic longitude (mean of date, IAU 1980 theory, radians)
+*     db = double (Given)
+*        Ecliptic latitude (mean of date, IAU 1980 theory, radians)
+*     date = double (Given)
+*        TT as Modified Julian Date (JD-2400000.5). The difference
+*        between TT and TDB is of the order of a millisecond or two
+*        (i.e. about 0.02 arc-seconds).
+*     dr = double * (Returned)
+*        J2000.0 mean RA (radians)
+*     dd = double * (Returned)
+*        J2000.0 mean Dec (Radians)
+
+*  Description:
+*     Transform from ecliptic coordinate to J2000.0 equatorial coordinates.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (Cornell University)
+*     {enter_new_authors_here}
+
+*  History:
+*     2014-11-18 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2014 Cornell University
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palEcleq ( double dl, double db, double date, double *dr, double *dd ) {
+  double v1[3], v2[3];
+  double rmat[3][3];
+
+  /* Spherical to Cartesian */
+  eraS2c( dl, db, v1 );
+
+  /* Ecliptic to equatorial */
+  palEcmat( date, rmat );
+  eraTrxp( rmat, v1, v2 );
+
+  /* Mean of date to J2000 */
+  palPrec( 2000.0, palEpj(date), rmat );
+  eraTrxp( rmat, v2, v1 );
+
+  /* Cartesian to spherical */
+  eraC2s( v1, dr, dd );
+
+  /* Express in conventional range */
+  *dr = eraAnp( *dr );
+  *dd = palDrange( *dd );
+}
Index: branches/FACT++_part_filenames/pal/palEcmat.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEcmat.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEcmat.c	(revision 18732)
@@ -0,0 +1,82 @@
+/*
+*+
+*  Name:
+*     palEcmat
+
+*  Purpose:
+*     Form the equatorial to ecliptic rotation matrix - IAU 2006
+*     precession model.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palEcmat( double date, double rmat[3][3] )
+
+*  Arguments:
+*     date = double (Given)
+*        TT as Modified Julian Date (JD-2400000.5). The difference
+*        between TT and TDB is of the order of a millisecond or two
+*        (i.e. about 0.02 arc-seconds).
+*     rmat = double[3][3] (Returned)
+*        Rotation matrix
+
+*  Description:
+*     The equatorial to ecliptic rotation matrix is found and returned.
+*     The matrix is in the sense   V(ecl)  =  RMAT * V(equ);  the
+*     equator, equinox and ecliptic are mean of date.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-10 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palEcmat( double date, double rmat[3][3] ) {
+
+/* Mean obliquity (the angle between the ecliptic and mean equator of
+   date). */
+   double eps0 = eraObl06( PAL__MJD0, date );
+
+/* Matrix */
+   palDeuler( "X", eps0, 0.0, 0.0, rmat );
+
+}
Index: branches/FACT++_part_filenames/pal/palEl2ue.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEl2ue.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEl2ue.c	(revision 18732)
@@ -0,0 +1,351 @@
+/*
+*+
+*  Name:
+*     palEl2ue
+
+*  Purpose:
+*     Transform conventional elements into "universal" form
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEl2ue ( double date, int jform, double epoch, double orbinc,
+*                     double anode, double perih, double aorq, double e,
+*                     double aorl, double dm, double u[13], int *jstat );
+
+*  Arguments:
+*     date = double (Given)
+*        Epoch (TT MJD) of osculation (Note 3)
+*     jform = int (Given)
+*        Element set actually returned (1-3; Note 6)
+*     epoch = double (Given)
+*        Epoch of elements (TT MJD)
+*     orbinc = double (Given)
+*        inclination (radians)
+*     anode = double (Given)
+*        longitude of the ascending node (radians)
+*     perih = double (Given)
+*        longitude or argument of perihelion (radians)
+*     aorq = double (Given)
+*        mean distance or perihelion distance (AU)
+*     e = double (Given)
+*        eccentricity
+*     aorl = double (Given)
+*        mean anomaly or longitude (radians, JFORM=1,2 only)
+*     dm = double (Given)
+*        daily motion (radians, JFORM=1 only)
+*     u = double [13] (Returned)
+*        Universal orbital elements (Note 1)
+*          -   (0)  combined mass (M+m)
+*          -   (1)  total energy of the orbit (alpha)
+*          -   (2)  reference (osculating) epoch (t0)
+*          - (3-5)  position at reference epoch (r0)
+*          - (6-8)  velocity at reference epoch (v0)
+*          -   (9)  heliocentric distance at reference epoch
+*          -  (10)  r0.v0
+*          -  (11)  date (t)
+*          -  (12)  universal eccentric anomaly (psi) of date, approx
+*     jstat = int * (Returned)
+*        status:  0 = OK
+*              - -1 = illegal JFORM
+*              - -2 = illegal E
+*              - -3 = illegal AORQ
+*              - -4 = illegal DM
+*              - -5 = numerical error
+
+*  Description:
+*      Transform conventional osculating elements into "universal" form.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - The companion routine is palUe2pv.  This takes the set of numbers
+*       that the present routine outputs and uses them to derive the
+*       object's position and velocity.  A single prediction requires one
+*       call to the present routine followed by one call to palUe2pv;
+*       for convenience, the two calls are packaged as the routine
+*       palPlanel.  Multiple predictions may be made by again calling the
+*       present routine once, but then calling palUe2pv multiple times,
+*       which is faster than multiple calls to palPlanel.
+*     - DATE is the epoch of osculation.  It is in the TT timescale
+*       (formerly Ephemeris Time, ET) and is a Modified Julian Date
+*       (JD-2400000.5).
+*     - The supplied orbital elements are with respect to the J2000
+*       ecliptic and equinox.  The position and velocity parameters
+*       returned in the array U are with respect to the mean equator and
+*       equinox of epoch J2000, and are for the perihelion prior to the
+*       specified epoch.
+*     - The universal elements returned in the array U are in canonical
+*       units (solar masses, AU and canonical days).
+*     - Three different element-format options are available:
+*
+*       Option JFORM=1, suitable for the major planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = longitude of perihelion, curly pi (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean longitude L (radians)
+*       DM     = daily motion (radians)
+*
+*       Option JFORM=2, suitable for minor planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean anomaly M (radians)
+*
+*       Option JFORM=3, suitable for comets:
+*
+*       EPOCH  = epoch of perihelion (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = perihelion distance, q (AU)
+*       E      = eccentricity, e (range 0 to 10)
+*
+*     - Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+*       not accessed.
+*     - The algorithm was originally adapted from the EPHSLA program of
+*       D.H.P.Jones (private communication, 1996).  The method is based
+*       on Stumpff's Universal Variables.
+*
+*  See Also:
+*     Everhart & Pitkin, Am.J.Phys. 51, 712 (1983).
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version taken directly from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void palEl2ue ( double date, int jform, double epoch, double orbinc,
+                double anode, double perih, double aorq, double e,
+                double aorl, double dm, double u[13], int *jstat ) {
+
+  /*  Sin and cos of J2000 mean obliquity (IAU 1976) */
+  const double SE=0.3977771559319137;
+  const double CE=0.9174820620691818;
+
+  int J;
+
+  double PHT,ARGPH,Q,W,CM,ALPHA,PHS,SW,CW,SI,CI,SO,CO,
+    X,Y,Z,PX,PY,PZ,VX,VY,VZ,DT,FC,FP,PSI,
+    UL[13],PV[6];
+
+  /*  Validate arguments. */
+  if (jform < 1 || jform > 3) {
+    *jstat = -1;
+    return;
+  }
+  if (e < 0.0 || e > 10.0 || (e >= 1.0 && jform != 3)) {
+    *jstat = -2;
+    return;
+  }
+  if (aorq <= 0.0) {
+    *jstat = -3;
+    return;
+  }
+  if (jform == 1 && dm <= 0.0) {
+    *jstat = -4;
+    return;
+  }
+
+  /*
+   *  Transform elements into standard form:
+   *
+   *  PHT   = epoch of perihelion passage
+   *  ARGPH = argument of perihelion (little omega)
+   *  Q     = perihelion distance (q)
+   *  CM    = combined mass, M+m (mu)
+   */
+
+  if (jform == 1) {
+
+    /*     Major planet. */
+    PHT = epoch-(aorl-perih)/dm;
+    ARGPH = perih-anode;
+    Q = aorq*(1.0-e);
+    W = dm/PAL__GCON;
+    CM = W*W*aorq*aorq*aorq;
+
+  } else if (jform == 2) {
+
+    /*     Minor planet. */
+    PHT = epoch-aorl*sqrt(aorq*aorq*aorq)/PAL__GCON;
+    ARGPH = perih;
+    Q = aorq*(1.0-e);
+    CM = 1.0;
+
+  } else {
+
+    /*     Comet. */
+    PHT = epoch;
+    ARGPH = perih;
+    Q = aorq;
+    CM = 1.0;
+
+  }
+
+  /*  The universal variable alpha.  This is proportional to the total
+   *  energy of the orbit:  -ve for an ellipse, zero for a parabola,
+   *  +ve for a hyperbola. */
+
+  ALPHA = CM*(e-1.0)/Q;
+
+  /*  Speed at perihelion. */
+
+  PHS = sqrt(ALPHA+2.0*CM/Q);
+
+  /*  In a Cartesian coordinate system which has the x-axis pointing
+   *  to perihelion and the z-axis normal to the orbit (such that the
+   *  object orbits counter-clockwise as seen from +ve z), the
+   *  perihelion position and velocity vectors are:
+   *
+   *    position   [Q,0,0]
+   *    velocity   [0,PHS,0]
+   *
+   *  To express the results in J2000 equatorial coordinates we make a
+   *  series of four rotations of the Cartesian axes:
+   *
+   *           axis      Euler angle
+   *
+   *     1      z        argument of perihelion (little omega)
+   *     2      x        inclination (i)
+   *     3      z        longitude of the ascending node (big omega)
+   *     4      x        J2000 obliquity (epsilon)
+   *
+   *  In each case the rotation is clockwise as seen from the +ve end of
+   *  the axis concerned.
+   */
+
+  /*  Functions of the Euler angles. */
+  SW = sin(ARGPH);
+  CW = cos(ARGPH);
+  SI = sin(orbinc);
+  CI = cos(orbinc);
+  SO = sin(anode);
+  CO = cos(anode);
+
+  /*  Position at perihelion (AU). */
+  X = Q*CW;
+  Y = Q*SW;
+  Z = Y*SI;
+  Y = Y*CI;
+  PX = X*CO-Y*SO;
+  Y = X*SO+Y*CO;
+  PY = Y*CE-Z*SE;
+  PZ = Y*SE+Z*CE;
+
+  /*  Velocity at perihelion (AU per canonical day). */
+  X = -PHS*SW;
+  Y = PHS*CW;
+  Z = Y*SI;
+  Y = Y*CI;
+  VX = X*CO-Y*SO;
+  Y = X*SO+Y*CO;
+  VY = Y*CE-Z*SE;
+  VZ = Y*SE+Z*CE;
+
+  /*  Time from perihelion to date (in Canonical Days: a canonical day
+   *  is 58.1324409... days, defined as 1/PAL__GCON). */
+
+  DT = (date-PHT)*PAL__GCON;
+
+  /*  First approximation to the Universal Eccentric Anomaly, PSI,
+   *  based on the circle (FC) and parabola (FP) values. */
+
+  FC = DT/Q;
+  W = pow(3.0*DT+sqrt(9.0*DT*DT+8.0*Q*Q*Q), 1.0/3.0);
+  FP = W-2.0*Q/W;
+  PSI = (1.0-e)*FC+e*FP;
+
+  /*  Assemble local copy of element set. */
+  UL[0] = CM;
+  UL[1] = ALPHA;
+  UL[2] = PHT;
+  UL[3] = PX;
+  UL[4] = PY;
+  UL[5] = PZ;
+  UL[6] = VX;
+  UL[7] = VY;
+  UL[8] = VZ;
+  UL[9] = Q;
+  UL[10] = 0.0;
+  UL[11] = date;
+  UL[12] = PSI;
+
+  /*  Predict position+velocity at epoch of osculation. */
+  palUe2pv( date, UL, PV, &J );
+  if (J != 0) {
+    *jstat = -5;
+    return;
+  }
+
+  /*  Convert back to universal elements. */
+  palPv2ue( PV, date, CM-1.0, u, &J );
+  if (J != 0) {
+    *jstat = -5;
+    return;
+  }
+
+  /*  OK exit. */
+  *jstat = 0;
+
+}
Index: branches/FACT++_part_filenames/pal/palEpco.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEpco.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEpco.c	(revision 18732)
@@ -0,0 +1,102 @@
+/*
+*+
+*  Name:
+*     palEpco
+
+*  Purpose:
+*     Convert an epoch into the appropriate form - 'B' or 'J'
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palEpco( char k0, char k, double e );
+
+*  Arguments:
+*     k0 = char (Given)
+*       Form of result: 'B'=Besselian, 'J'=Julian
+*     k = char (Given)
+*       Form of given epoch: 'B' or 'J'.
+
+*  Description:
+*     Converts a Besselian or Julian epoch to a Julian or Besselian
+*     epoch.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The result is always either equal to or very close to
+*       the given epoch E.  The routine is required only in
+*       applications where punctilious treatment of heterogeneous
+*       mixtures of star positions is necessary.
+*     - k and k0 are case insensitive. This differes slightly from the
+*       Fortran SLA implementation.
+*     - k and k0 are not validated. They are interpreted as follows:
+*       o If k0 and k are the same the result is e
+*       o If k0 is 'b' or 'B' and k isn't the conversion is J to B.
+*       o In all other cases, the conversion is B to J.
+
+*  History:
+*     2012-03-01 (TIMJ):
+*        Initial version. Documentation from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+*     USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+#include <ctype.h>
+
+double palEpco( char k0, char k, double e ) {
+
+  double new_epoch = 0.0;
+  double djm;
+  double djm0;
+
+  /* Use upper case */
+  k0 = toupper( k0 );
+  k = toupper( k );
+
+  if (k == k0) {
+    new_epoch = e;
+  } else if (k0 == 'B') {
+    eraEpj2jd( e, &djm0, &djm );
+    new_epoch = eraEpb( djm0, djm );
+  } else {
+    eraEpb2jd( e, &djm0, &djm );
+    new_epoch = eraEpj( djm0, djm );
+  }
+  return new_epoch;
+}
Index: branches/FACT++_part_filenames/pal/palEpv.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEpv.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEpv.c	(revision 18732)
@@ -0,0 +1,96 @@
+/*
+*+
+*  Name:
+*     palEpv
+
+*  Purpose:
+*     Earth position and velocity with respect to the BCRS
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEpv( double date, double ph[3], double vh[3],
+*                  double pb[3], double vb[3] );
+
+*  Arguments:
+*     date = double (Given)
+*        Date, TDB Modified Julian Date (JD-2400000.5)
+*     ph = double [3] (Returned)
+*        Heliocentric Earth position (AU)
+*     vh = double [3] (Returned)
+*        Heliocentric Earth velocity (AU/day)
+*     pb = double [3] (Returned)
+*        Barycentric Earth position (AU)
+*     vb = double [3] (Returned)
+*        Barycentric Earth velocity (AU/day)
+
+*  Description:
+*     Earth position and velocity, heliocentric and barycentric, with
+*     respect to the Barycentric Celestial Reference System.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - See eraEpv00 for details on accuracy
+*     - Note that the status argument from eraEpv00 is ignored
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library
+*        but now mainly calls SOFA routines.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "palmac.h"
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palEpv( double date, double ph[3], double vh[3],
+             double pb[3], double vb[3] ) {
+
+  int i;
+  double pvh[2][3];
+  double pvb[2][3];
+
+  eraEpv00( PAL__MJD0, date, pvh, pvb );
+
+  /* Copy into output arrays */
+  for (i=0; i<3; i++) {
+    ph[i] = pvh[0][i];
+    vh[i] = pvh[1][i];
+    pb[i] = pvb[0][i];
+    vb[i] = pvb[1][i];
+  }
+
+}
Index: branches/FACT++_part_filenames/pal/palEqecl.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEqecl.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEqecl.c	(revision 18732)
@@ -0,0 +1,97 @@
+/*
+*+
+*  Name:
+*     palEqecl
+
+*  Purpose:
+*     Transform from J2000.0 equatorial coordinates to ecliptic coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEqecl( double dr, double dd, double date,
+*                    double *dl, double *db);
+
+*  Arguments:
+*     dr = double (Given)
+*        J2000.0 mean RA (radians)
+*     dd = double (Given)
+*        J2000.0 mean Dec (Radians)
+*     date = double (Given)
+*        TT as Modified Julian Date (JD-2400000.5). The difference
+*        between TT and TDB is of the order of a millisecond or two
+*        (i.e. about 0.02 arc-seconds).
+*     dl = double * (Returned)
+*        Ecliptic longitude (mean of date, IAU 1980 theory, radians)
+*     db = double * (Returned)
+*        Ecliptic latitude (mean of date, IAU 1980 theory, radians)
+
+*  Description:
+*     Transform from J2000.0 equatorial coordinates to ecliptic coordinates.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palEqecl ( double dr, double dd, double date, double *dl, double *db ) {
+  double v1[3], v2[3];
+  double rmat[3][3];
+
+  /* Spherical to Cartesian */
+  eraS2c( dr, dd, v1 );
+
+  /* Mean J2000 to mean of date */
+  palPrec( 2000.0, palEpj(date), rmat );
+  eraRxp( rmat, v1, v2 );
+
+  /* Equatorial to ecliptic */
+  palEcmat( date, rmat );
+  eraRxp( rmat, v2, v1 );
+
+  /* Cartesian to spherical */
+  eraC2s( v1, dl, db );
+
+  /* Express in conventional range */
+  *dl = eraAnp( *dl );
+  *db = palDrange( *db );
+}
Index: branches/FACT++_part_filenames/pal/palEqgal.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEqgal.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEqgal.c	(revision 18732)
@@ -0,0 +1,118 @@
+/*
+*+
+*  Name:
+*     palEqgal
+
+*  Purpose:
+*     Convert from J2000.0 equatorial coordinates to Galactic
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEqgal ( double dr, double dd, double *dl, double *db );
+
+*  Arguments:
+*     dr = double (Given)
+*       J2000.0 RA (radians)
+*     dd = double (Given)
+*       J2000.0 Dec (radians
+*     dl = double * (Returned)
+*       Galactic longitude (radians).
+*     db = double * (Returned)
+*       Galactic latitude (radians).
+
+*  Description:
+*     Transformation from J2000.0 equatorial coordinates
+*     to IAU 1958 galactic coordinates.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     The equatorial coordinates are J2000.0.  Use the routine
+*     palGe50 if conversion to B1950.0 'FK4' coordinates is
+*     required.
+
+*  See Also:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1998 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palEqgal ( double dr, double dd, double *dl, double *db ) {
+
+  double v1[3];
+  double v2[3];
+
+/*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*  Equatorial to galactic rotation matrix (J2000.0), obtained by
+*  applying the standard FK4 to FK5 transformation, for zero proper
+*  motion in FK5, to the columns of the B1950 equatorial to
+*  galactic rotation matrix:
+*/
+  double rmat[3][3] = {
+    { -0.054875539726,-0.873437108010,-0.483834985808 },
+    { +0.494109453312,-0.444829589425,+0.746982251810 },
+    { -0.867666135858,-0.198076386122,+0.455983795705 }
+  };
+
+  /* Spherical to Cartesian */
+  eraS2c( dr, dd, v1 );
+
+  /* Equatorial to Galactic */
+  eraRxp( rmat, v1, v2 );
+
+  /* Cartesian to spherical */
+  eraC2s( v2, dl, db );
+
+  /* Express in conventional ranges */
+  *dl = eraAnp( *dl );
+  *db = eraAnpm( *db );
+
+}
Index: branches/FACT++_part_filenames/pal/palEtrms.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEtrms.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEtrms.c	(revision 18732)
@@ -0,0 +1,106 @@
+/*
+*+
+*  Name:
+*     palEtrms
+
+*  Purpose:
+*     Compute the E-terms vector
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEtrms ( double ep, double ev[3] );
+
+*  Arguments:
+*     ep = double (Given)
+*        Besselian epoch
+*     ev = double [3] (Returned)
+*        E-terms as (dx,dy,dz)
+
+*  Description:
+*     Computes the E-terms (elliptic component of annual aberration)
+*     vector.
+*
+*     Note the use of the J2000 aberration constant (20.49552 arcsec).
+*     This is a reflection of the fact that the E-terms embodied in
+*     existing star catalogues were computed from a variety of
+*     aberration constants.  Rather than adopting one of the old
+*     constants the latest value is used here.
+*
+*  See also:
+*     - Smith, C.A. et al., 1989.  Astr.J. 97, 265.
+*     - Yallop, B.D. et al., 1989.  Astr.J. 97, 274.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-12 (TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+
+void palEtrms ( double ep, double ev[3] ) {
+
+  /* Use the J2000 aberration constant */
+  const double ABCONST = 20.49552;
+
+  double t, e, e0, p, ek, cp;
+
+  /*  Julian centuries since B1950 */
+  t = (ep - 1950.) * .0100002135903;
+
+  /*  Eccentricity */
+  e = .01673011 - (t * 1.26e-7 + 4.193e-5) * t;
+
+  /*  Mean obliquity */
+  e0 = (84404.836 - ((t * .00181 + .00319) * t + 46.8495) * t) *
+    PAL__DAS2R;
+
+  /*  Mean longitude of perihelion */
+  p = (((t * .012 + 1.65) * t + 6190.67) * t + 1015489.951) *
+    PAL__DAS2R;
+
+  /*  E-terms */
+  ek = e * ABCONST * PAL__DAS2R;
+  cp = cos(p);
+  ev[0] = ek * sin(p);
+  ev[1] = -ek * cp * cos(e0);
+  ev[2] = -ek * cp * sin(e0);
+
+}
Index: branches/FACT++_part_filenames/pal/palEvp.c
===================================================================
--- branches/FACT++_part_filenames/pal/palEvp.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palEvp.c	(revision 18732)
@@ -0,0 +1,110 @@
+/*
+*+
+*  Name:
+*     palEvp
+
+*  Purpose:
+*     Returns the barycentric and heliocentric velocity and position of the
+*     Earth.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palEvp( double date, double deqx, double dvb[3], double dpb[3],
+*                  double dvh[3], double dph[3] )
+
+*  Arguments:
+*     date = double (Given)
+*        TDB (loosely ET) as a Modified Julian Date (JD-2400000.5)
+*     deqx = double (Given)
+*        Julian epoch (e.g. 2000.0) of mean equator and equinox of the
+*        vectors returned.  If deqx <= 0.0, all vectors are referred to the
+*        mean equator and equinox (FK5) of epoch date.
+*     dvb = double[3] (Returned)
+*        Barycentric velocity (AU/s, AU)
+*     dpb = double[3] (Returned)
+*        Barycentric position (AU/s, AU)
+*     dvh = double[3] (Returned)
+*        heliocentric velocity (AU/s, AU)
+*     dph = double[3] (Returned)
+*        Heliocentric position (AU/s, AU)
+
+*  Description:
+*     Returns the barycentric and heliocentric velocity and position of the
+*     Earth at a given epoch, given with respect to a specified equinox.
+*     For information about accuracy, see the function eraEpv00.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (PTW):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palEvp( double date, double deqx, double dvb[3], double dpb[3],
+             double dvh[3], double dph[3] ){
+
+/* Local Variables; */
+   int i;
+   double pvh[2][3], pvb[2][3], d1, d2, r[3][3];
+
+/* BCRS PV-vectors. */
+   eraEpv00 ( 2400000.5, date, pvh, pvb );
+
+/* Was precession to another equinox requested? */
+   if ( deqx > 0.0 ) {
+
+/* Yes: compute precession matrix from J2000.0 to deqx. */
+      eraEpj2jd ( deqx, &d1, &d2 );
+      eraPmat06 ( d1, d2, r );
+
+/* Rotate the PV-vectors. */
+      eraRxpv ( r, pvh, pvh );
+      eraRxpv ( r, pvb, pvb );
+   }
+
+/* Return the required vectors. */
+   for ( i = 0; i < 3; i++ ) {
+      dvh[i] = pvh[1][i] / PAL__SPD;
+      dvb[i] = pvb[1][i] / PAL__SPD;
+      dph[i] = pvh[0][i];
+      dpb[i] = pvb[0][i];
+   }
+}
Index: branches/FACT++_part_filenames/pal/palFk45z.c
===================================================================
--- branches/FACT++_part_filenames/pal/palFk45z.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palFk45z.c	(revision 18732)
@@ -0,0 +1,186 @@
+/*
+*+
+*  Name:
+*     palFk45z
+
+*  Purpose:
+*     Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+*     proper motion in the FK5 frame
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palFk45z( double r1950, double d1950, double bepoch, double *r2000,
+*               double *d2000 )
+
+*  Arguments:
+*     r1950 = double (Given)
+*        B1950.0 FK4 RA at epoch (radians).
+*     d1950 = double (Given)
+*        B1950.0 FK4 Dec at epoch (radians).
+*     bepoch = double (Given)
+*        Besselian epoch (e.g. 1979.3)
+*     r2000 = double (Returned)
+*        J2000.0 FK5 RA (Radians).
+*     d2000 = double (Returned)
+*        J2000.0 FK5 Dec(Radians).
+
+*  Description:
+*     Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+*     proper motion in the FK5 frame (double precision)
+*
+*     This function converts stars from the Bessel-Newcomb, FK4
+*     system to the IAU 1976, FK5, Fricke system, in such a
+*     way that the FK5 proper motion is zero.  Because such a star
+*     has, in general, a non-zero proper motion in the FK4 system,
+*     the routine requires the epoch at which the position in the
+*     FK4 system was determined.
+*
+*     The method is from Appendix 2 of Ref 1, but using the constants
+*     of Ref 4.
+
+*  Notes:
+*     - The epoch BEPOCH is strictly speaking Besselian, but if a
+*     Julian epoch is supplied the result will be affected only to
+*     a negligible extent.
+*
+*     - Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0
+*     only is provided for.  Conversions involving other epochs will
+*     require use of the appropriate precession, proper motion, and
+*     E-terms routines before and/or after palFk45z is called.
+*
+*     - In the FK4 catalogue the proper motions of stars within 10
+*     degrees of the poles do not embody the differential E-term effect
+*     and should, strictly speaking, be handled in a different manner
+*     from stars outside these regions. However, given the general lack
+*     of homogeneity of the star data available for routine astrometry,
+*     the difficulties of handling positions that may have been
+*     determined from astrometric fields spanning the polar and non-polar
+*     regions, the likelihood that the differential E-terms effect was not
+*     taken into account when allowing for proper motion in past
+*     astrometry, and the undesirability of a discontinuity in the
+*     algorithm, the decision has been made in this routine to include the
+*     effect of differential E-terms on the proper motions for all stars,
+*     whether polar or not.  At epoch 2000, and measuring on the sky rather
+*     than in terms of dRA, the errors resulting from this simplification
+*     are less than 1 milliarcsecond in position and 1 milliarcsecond per
+*     century in proper motion.
+*
+*  References:
+*     - Aoki,S., et al, 1983.  Astron.Astrophys., 128, 263.
+*     - Smith, C.A. et al, 1989.  "The transformation of astrometric
+*       catalog systems to the equinox J2000.0".  Astron.J. 97, 265.
+*     - Yallop, B.D. et al, 1989.  "Transformation of mean star places
+*       from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
+*       Astron.J. 97, 274.
+*     - Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement to
+*       the Astronomical Almanac", ISBN 0-935702-68-7.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-10 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1998 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palFk45z( double r1950, double d1950, double bepoch, double *r2000,
+               double *d2000 ){
+
+/* Local Variables: */
+   double w;
+   int i;
+   int j;
+   double r0[3], a1[3], v1[3], v2[6]; /* Position and position+velocity vectors */
+
+
+/* CANONICAL CONSTANTS  (see references) */
+
+/* Vector A. */
+   double a[3] = { -1.62557E-6, -0.31919E-6, -0.13843E-6 };
+
+/* Vectors Adot. */
+   double ad[3] = { 1.245E-3, -1.580E-3, -0.659E-3 };
+
+/* Matrix M (only half of which is needed here). */
+   double em[6][3] = { {0.9999256782, -0.0111820611, -0.0048579477},
+                       {0.0111820610, 0.9999374784, -0.0000271765},
+                       {0.0048579479, -0.0000271474, 0.9999881997},
+                       {-0.000551, -0.238565, 0.435739},
+                       {0.238514, -0.002667, -0.008541},
+                       {-0.435623, 0.012254, 0.002117} };
+
+
+/* Spherical to Cartesian. */
+   eraS2c( r1950, d1950, r0 );
+
+/* Adjust vector A to give zero proper motion in FK5. */
+   w = ( bepoch - 1950.0 )/PAL__PMF;
+   for( i = 0; i < 3; i++ ) {
+      a1[ i ] = a[ i ] + w*ad[ i ];
+   }
+
+/* Remove e-terms. */
+   w = r0[ 0 ]*a1[ 0 ] + r0[ 1 ]*a1[ 1 ] + r0[ 2 ]*a1[ 2 ];
+   for( i = 0; i < 3; i++ ) {
+      v1[ i ] = r0[ i ] - a1[ i ] + w*r0[ i ];
+   }
+
+/* Convert position vector to Fricke system. */
+   for( i = 0; i < 6; i++ ) {
+      w = 0.0;
+      for( j = 0; j < 3; j++ ) {
+         w += em[ i ][ j ]*v1[ j ];
+      }
+      v2[ i ] = w;
+   }
+
+/* Allow for fictitious proper motion in FK4. */
+   w = ( palEpj( palEpb2d( bepoch ) ) - 2000.0 )/PAL__PMF;
+   for( i = 0; i < 3; i++ ) {
+      v2[ i ] += w*v2[ i + 3 ];
+   }
+
+/* Revert to spherical coordinates. */
+   eraC2s( v2, &w, d2000 );
+   *r2000 = eraAnp( w );
+}
+
+
Index: branches/FACT++_part_filenames/pal/palFk524.c
===================================================================
--- branches/FACT++_part_filenames/pal/palFk524.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palFk524.c	(revision 18732)
@@ -0,0 +1,259 @@
+/*
+*+
+*  Name:
+*     palFk524
+
+*  Purpose:
+*     Convert J2000.0 FK5 star data to B1950.0 FK4.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palFk524( double r2000, double d2000, double dr2000, double dd2000,
+*               double p2000, double v2000, double *r1950, double *d1950,
+*               double *dr1950, double *dd1950, double *p1950, double *v1950 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 FK5 RA (radians).
+*     d2000 = double (Given)
+*        J2000.0 FK5 Dec (radians).
+*     dr2000 = double (Given)
+*        J2000.0 FK5 RA proper motion (rad/Jul.yr)
+*     dd2000 = double (Given)
+*        J2000.0 FK5 Dec proper motion (rad/Jul.yr)
+*     p2000 = double (Given)
+*        J2000.0 FK5 parallax (arcsec)
+*     v2000 = double (Given)
+*         J2000.0 FK5 radial velocity (km/s, +ve = moving away)
+*     r1950 = double * (Returned)
+*        B1950.0 FK4 RA (radians).
+*     d1950 = double * (Returned)
+*        B1950.0 FK4 Dec (radians).
+*     dr1950 = double * (Returned)
+*        B1950.0 FK4 RA proper motion (rad/Jul.yr)
+*     dd1950 = double * (Returned)
+*        B1950.0 FK4 Dec proper motion (rad/Jul.yr)
+*     p1950 = double * (Returned)
+*        B1950.0 FK4 parallax (arcsec)
+*     v1950 = double * (Returned)
+*         B1950.0 FK4 radial velocity (km/s, +ve = moving away)
+
+*  Description:
+*     This function converts stars from the IAU 1976, FK5, Fricke
+*     system, to the Bessel-Newcomb, FK4 system.  The precepts
+*     of Smith et al (Ref 1) are followed, using the implementation
+*     by Yallop et al (Ref 2) of a matrix method due to Standish.
+*     Kinoshita's development of Andoyer's post-Newcomb precession is
+*     used.  The numerical constants from Seidelmann et al (Ref 3) are
+*     used canonically.
+
+*  Notes:
+*     - The proper motions in RA are dRA/dt rather than
+*     cos(Dec)*dRA/dt, and are per year rather than per century.
+*     - Note that conversion from Julian epoch 2000.0 to Besselian
+*     epoch 1950.0 only is provided for.  Conversions involving
+*     other epochs will require use of the appropriate precession,
+*     proper motion, and E-terms routines before and/or after
+*     FK524 is called.
+*     - In the FK4 catalogue the proper motions of stars within
+*     10 degrees of the poles do not embody the differential
+*     E-term effect and should, strictly speaking, be handled
+*     in a different manner from stars outside these regions.
+*     However, given the general lack of homogeneity of the star
+*     data available for routine astrometry, the difficulties of
+*     handling positions that may have been determined from
+*     astrometric fields spanning the polar and non-polar regions,
+*     the likelihood that the differential E-terms effect was not
+*     taken into account when allowing for proper motion in past
+*     astrometry, and the undesirability of a discontinuity in
+*     the algorithm, the decision has been made in this routine to
+*     include the effect of differential E-terms on the proper
+*     motions for all stars, whether polar or not.  At epoch 2000,
+*     and measuring on the sky rather than in terms of dRA, the
+*     errors resulting from this simplification are less than
+*     1 milliarcsecond in position and 1 milliarcsecond per
+*     century in proper motion.
+*
+*  References:
+*     - Smith, C.A. et al, 1989.  "The transformation of astrometric
+*       catalog systems to the equinox J2000.0".  Astron.J. 97, 265.
+*     - Yallop, B.D. et al, 1989.  "Transformation of mean star places
+*       from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
+*       Astron.J. 97, 274.
+*     - Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement to
+*       the Astronomical Almanac", ISBN 0-935702-68-7.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "math.h"
+
+void palFk524( double r2000, double d2000, double dr2000, double dd2000,
+               double p2000, double v2000, double *r1950, double *d1950,
+               double *dr1950, double *dd1950, double *p1950, double *v1950 ){
+
+/* Local Variables; */
+   double r, d, ur, ud, px, rv;
+   double sr, cr, sd, cd, x, y, z, w;
+   double v1[ 6 ], v2[ 6 ];
+   double xd, yd, zd;
+   double rxyz, wd, rxysq, rxy;
+   int i, j;
+
+/* Small number to avoid arithmetic problems. */
+   static const double tiny = 1.0E-30;
+
+/* Canonical constants (see references). Constant vector and matrix. */
+   double a[ 6 ] = { -1.62557E-6,  -0.31919E-6, -0.13843E-6,
+                     +1.245E-3,    -1.580E-3,   -0.659E-3 };
+   double emi[ 6 ][ 6 ] = {
+                 { 0.9999256795,      0.0111814828,      0.0048590039,
+                  -0.00000242389840, -0.00000002710544, -0.00000001177742},
+                 {-0.0111814828,      0.9999374849,     -0.0000271771,
+                   0.00000002710544, -0.00000242392702,  0.00000000006585 },
+                 {-0.0048590040,     -0.0000271557,      0.9999881946,
+                   0.00000001177742,  0.00000000006585, -0.00000242404995 },
+                 {-0.000551,          0.238509,         -0.435614,
+                   0.99990432,        0.01118145,        0.00485852 },
+                 {-0.238560,         -0.002667,          0.012254,
+                  -0.01118145,        0.99991613,       -0.00002717},
+                 { 0.435730,         -0.008541,          0.002117,
+                  -0.00485852,       -0.00002716,        0.99996684 } };
+
+/* Pick up J2000 data (units radians and arcsec/JC). */
+   r = r2000;
+   d = d2000;
+   ur = dr2000*PAL__PMF;
+   ud = dd2000*PAL__PMF;
+   px = p2000;
+   rv = v2000;
+
+/* Spherical to Cartesian. */
+   sr = sin( r );
+   cr = cos( r );
+   sd = sin( d );
+   cd = cos( d );
+
+   x = cr*cd;
+   y = sr*cd;
+   z =    sd;
+
+   w = PAL__VF*rv*px;
+
+   v1[ 0 ] = x;
+   v1[ 1 ] = y;
+   v1[ 2 ] = z;
+
+   v1[ 3 ] = -ur*y - cr*sd*ud + w*x;
+   v1[ 4 ] =  ur*x - sr*sd*ud + w*y;
+   v1[ 5 ] =            cd*ud + w*z;
+
+/* Convert position+velocity vector to BN system. */
+   for( i = 0; i < 6; i++ ) {
+      w = 0.0;
+      for( j = 0; j < 6; j++ ) {
+         w += emi[ i ][ j ]*v1[ j ];
+      }
+      v2[ i ] = w;
+   }
+
+/* Position vector components and magnitude. */
+   x = v2[ 0 ];
+   y = v2[ 1 ];
+   z = v2[ 2 ];
+   rxyz = sqrt( x*x + y*y + z*z );
+
+/* Apply E-terms to position. */
+   w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ];
+   x += a[ 0 ]*rxyz - w*x;
+   y += a[ 1 ]*rxyz - w*y;
+   z += a[ 2 ]*rxyz - w*z;
+
+/* Recompute magnitude. */
+   rxyz = sqrt( x*x + y*y + z*z );
+
+/* Apply E-terms to both position and velocity. */
+   x = v2[ 0 ];
+   y = v2[ 1 ];
+   z = v2[ 2 ];
+   w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ];
+   wd = x*a[ 3 ] + y*a[ 4 ] + z*a[ 5 ];
+   x += a[ 0 ]*rxyz - w*x;
+   y += a[ 1 ]*rxyz - w*y;
+   z += a[ 2 ]*rxyz - w*z;
+   xd = v2[ 3 ] + a[ 3 ]*rxyz - wd*x;
+   yd = v2[ 4 ] + a[ 4 ]*rxyz - wd*y;
+   zd = v2[ 5 ] + a[ 5 ]*rxyz - wd*z;
+
+/* Convert to spherical. */
+   rxysq = x*x + y*y;
+   rxy = sqrt( rxysq );
+
+   if( x == 0.0 && y == 0.0 ) {
+      r = 0.0;
+   } else {
+      r = atan2( y, x );
+      if( r <  0.0 ) r += PAL__D2PI;
+   }
+   d = atan2( z, rxy );
+
+   if( rxy > tiny ) {
+      ur = ( x*yd - y*xd )/rxysq;
+      ud = ( zd*rxysq - z*( x*xd + y*yd ) )/( ( rxysq + z*z )*rxy );
+   }
+
+/* Radial velocity and parallax. */
+   if( px > tiny ) {
+      rv = ( x*xd + y*yd + z*zd )/( px*PAL__VF*rxyz );
+      px /= rxyz;
+   }
+
+/* Return results. */
+   *r1950 = r;
+   *d1950 = d;
+   *dr1950 = ur/PAL__PMF;
+   *dd1950 = ud/PAL__PMF;
+   *p1950 = px;
+   *v1950 = rv;
+}
Index: branches/FACT++_part_filenames/pal/palFk54z.c
===================================================================
--- branches/FACT++_part_filenames/pal/palFk54z.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palFk54z.c	(revision 18732)
@@ -0,0 +1,113 @@
+/*
+*+
+*  Name:
+*     palFk54z
+
+*  Purpose:
+*     Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming
+*     zero proper motion and parallax.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palFk54z( double r2000, double d2000, double bepoch, double *r1950,
+*               double *d1950, double *dr1950, double *dd1950 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 FK5 RA (radians).
+*     d2000 = double (Given)
+*        J2000.0 FK5 Dec (radians).
+*     bepoch = double (Given)
+*         Besselian epoch (e.g. 1950.0).
+*     r1950 = double * (Returned)
+*        B1950 FK4 RA (radians) at epoch "bepoch".
+*     d1950 = double * (Returned)
+*        B1950 FK4 Dec (radians) at epoch "bepoch".
+*     dr1950 = double * (Returned)
+*        B1950 FK4 proper motion (RA) (radians/trop.yr)).
+*     dr1950 = double * (Returned)
+*        B1950 FK4 proper motion (Dec) (radians/trop.yr)).
+
+*  Description:
+*     This function converts star positions from the IAU 1976,
+*     FK5, Fricke system to the Bessel-Newcomb, FK4 system.
+
+*  Notes:
+*     - The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+*     - Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0
+*     only is provided for.  Conversions involving other epochs will
+*     require use of the appropriate precession functions before and
+*     after this function is called.
+*     - The FK5 proper motions, the parallax and the radial velocity
+*      are presumed zero.
+*     - It is the intention that FK5 should be a close approximation
+*     to an inertial frame, so that distant objects have zero proper
+*     motion;  such objects have (in general) non-zero proper motion
+*     in FK4, and this function returns those fictitious proper
+*     motions.
+*     - The position returned by this function is in the B1950
+*     reference frame but at Besselian epoch BEPOCH.  For comparison
+*     with catalogues the "bepoch" argument will frequently be 1950.0.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palFk54z( double r2000, double d2000, double bepoch, double *r1950,
+               double *d1950, double *dr1950, double *dd1950 ){
+
+/* Local Variables: */
+   double r, d, px, rv, y;
+
+/* FK5 equinox J2000 (any epoch) to FK4 equinox B1950 epoch B1950. */
+   palFk524( r2000, d2000, 0.0, 0.0, 0.0, 0.0, &r, &d, dr1950, dd1950,
+             &px, &rv );
+
+/* Fictitious proper motion to epoch "bepoch". */
+   y = bepoch - 1950.0;
+   *r1950 = r + *dr1950*y;
+   *d1950 = d + *dd1950*y;
+
+}
+
Index: branches/FACT++_part_filenames/pal/palGaleq.c
===================================================================
--- branches/FACT++_part_filenames/pal/palGaleq.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palGaleq.c	(revision 18732)
@@ -0,0 +1,118 @@
+/*
+*+
+*  Name:
+*     palGaleq
+
+*  Purpose:
+*     Convert from galactic to J2000.0 equatorial coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palGaleq ( double dl, double db, double *dr, double *dd );
+
+*  Arguments:
+*     dl = double (Given)
+*       Galactic longitude (radians).
+*     db = double (Given)
+*       Galactic latitude (radians).
+*     dr = double * (Returned)
+*       J2000.0 RA (radians)
+*     dd = double * (Returned)
+*       J2000.0 Dec (radians)
+
+*  Description:
+*     Transformation from IAU 1958 galactic coordinates to
+*     J2000.0 equatorial coordinates.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     The equatorial coordinates are J2000.0.  Use the routine
+*     palGe50 if conversion to B1950.0 'FK4' coordinates is
+*     required.
+
+*  See Also:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1998 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palGaleq ( double dl, double db, double *dr, double *dd ) {
+
+  double v1[3];
+  double v2[3];
+
+/*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*  Equatorial to galactic rotation matrix (J2000.0), obtained by
+*  applying the standard FK4 to FK5 transformation, for zero proper
+*  motion in FK5, to the columns of the B1950 equatorial to
+*  galactic rotation matrix:
+*/
+  double rmat[3][3] = {
+    { -0.054875539726,-0.873437108010,-0.483834985808 },
+    { +0.494109453312,-0.444829589425,+0.746982251810 },
+    { -0.867666135858,-0.198076386122,+0.455983795705 }
+  };
+
+  /* Spherical to Cartesian */
+  eraS2c( dl, db, v1 );
+
+  /* Galactic to equatorial */
+  eraTrxp( rmat, v1, v2 );
+
+  /* Cartesian to spherical */
+  eraC2s( v2, dr, dd );
+
+  /* Express in conventional ranges */
+  *dr = eraAnp( *dr );
+  *dd = eraAnpm( *dd );
+
+}
Index: branches/FACT++_part_filenames/pal/palGalsup.c
===================================================================
--- branches/FACT++_part_filenames/pal/palGalsup.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palGalsup.c	(revision 18732)
@@ -0,0 +1,116 @@
+/*
+*+
+*  Name:
+*     palGalsup
+
+*  Purpose:
+*     Convert from galactic to supergalactic coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palGalsup ( double dl, double db, double *dsl, double *dsb );
+
+*  Arguments:
+*     dl = double (Given)
+*       Galactic longitude.
+*     db = double (Given)
+*       Galactic latitude.
+*     dsl = double * (Returned)
+*       Supergalactic longitude.
+*     dsb = double * (Returned)
+*       Supergalactic latitude.
+
+*  Description:
+*     Transformation from IAU 1958 galactic coordinates to
+*     de Vaucouleurs supergalactic coordinates.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  See Also:
+*     - de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference
+*       Catalogue of Bright Galaxies, U. Texas, page 8.
+*     - Systems & Applied Sciences Corp., Documentation for the
+*       machine-readable version of the above catalogue,
+*       Contract NAS 5-26490.
+*
+*     (These two references give different values for the galactic
+*     longitude of the supergalactic origin.  Both are wrong;  the
+*     correct value is L2=137.37.)
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palGalsup ( double dl, double db, double *dsl, double *dsb ) {
+
+  double v1[3];
+  double v2[3];
+
+/*
+*  System of supergalactic coordinates:
+*
+*    SGL   SGB        L2     B2      (deg)
+*     -    +90      47.37  +6.32
+*     0     0         -      0
+*
+*  Galactic to supergalactic rotation matrix:
+*/
+  double rmat[3][3] = {
+    { -0.735742574804,+0.677261296414,+0.000000000000 },
+    { -0.074553778365,-0.080991471307,+0.993922590400 },
+    { +0.673145302109,+0.731271165817,+0.110081262225 }
+  };
+
+  /* Spherical to Cartesian */
+  eraS2c( dl, db, v1 );
+
+  /* Galactic to Supergalactic */
+  eraRxp( rmat, v1, v2 );
+
+  /* Cartesian to spherical */
+  eraC2s( v2, dsl, dsb );
+
+  /* Express in conventional ranges */
+  *dsl = eraAnp( *dsl );
+  *dsb = eraAnpm( *dsb );
+
+}
Index: branches/FACT++_part_filenames/pal/palGe50.c
===================================================================
--- branches/FACT++_part_filenames/pal/palGe50.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palGe50.c	(revision 18732)
@@ -0,0 +1,128 @@
+/*
+*+
+*  Name:
+*     palGe50
+
+*  Purpose:
+*     Transform Galactic Coordinate to B1950 FK4
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palGe50( double dl, double db, double *dr, double *dd );
+
+*  Arguments:
+*     dl = double (Given)
+*        Galactic longitude (radians)
+*     db = double (Given)
+*        Galactic latitude (radians)
+*     dr = double * (Returned)
+*        B9150.0 FK4 RA.
+*     dd = double * (Returned)
+*        B1950.0 FK4 Dec.
+
+*  Description:
+*     Transformation from IAU 1958 galactic coordinates to
+*     B1950.0 'FK4' equatorial coordinates.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The equatorial coordinates are B1950.0 'FK4'. Use the routine
+*     palGaleq if conversion to J2000.0 coordinates is required.
+
+*  See Also:
+*     - Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+
+*  History:
+*     2012-03-23 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palGe50 ( double dl, double db, double * dr, double * dd ) {
+
+/*
+ *  L2,B2 system of galactic coordinates
+ *
+ *  P = 192.25       RA of galactic north pole (mean B1950.0)
+ *  Q =  62.6        inclination of galactic to mean B1950.0 equator
+ *  R =  33          longitude of ascending node
+ *
+ *  P,Q,R are degrees
+ *
+ *
+ *  Equatorial to galactic rotation matrix
+ *
+ *  The Euler angles are P, Q, 90-R, about the z then y then
+ *  z axes.
+ *
+ *         +CP.CQ.SR-SP.CR     +SP.CQ.SR+CP.CR     -SQ.SR
+ *
+ *         -CP.CQ.CR-SP.SR     -SP.CQ.CR+CP.SR     +SQ.CR
+ *
+ *         +CP.SQ              +SP.SQ              +CQ
+ *
+ */
+
+  double rmat[3][3] = {
+    { -0.066988739415,-0.872755765852,-0.483538914632 },
+    { +0.492728466075,-0.450346958020,+0.744584633283 },
+    { -0.867600811151,-0.188374601723,+0.460199784784 }
+  };
+
+  double v1[3], v2[3], r, d, re, de;
+
+  /* Spherical to cartesian */
+  eraS2c( dl, db, v1 );
+
+  /* Rotate to mean B1950.0 */
+  eraTrxp( rmat, v1, v2 );
+
+  /* Cartesian to spherical */
+  eraC2s( v2, &r, &d );
+
+  /* Introduce E-terms */
+  palAddet( r, d, 1950.0, &re, &de );
+
+  /* Express in conventional ranges */
+  *dr = eraAnp( re );
+  *dd = eraAnpm( de );
+
+}
Index: branches/FACT++_part_filenames/pal/palGeoc.c
===================================================================
--- branches/FACT++_part_filenames/pal/palGeoc.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palGeoc.c	(revision 18732)
@@ -0,0 +1,83 @@
+/*
+*+
+*  Name:
+*     palGeoc
+
+*  Purpose:
+*     Convert geodetic position to geocentric
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palGeoc( double p, double h, double * r, double *z );
+
+*  Arguments:
+*     p = double (Given)
+*       latitude (radians)
+*     h = double (Given)
+*       height above reference spheroid (geodetic, metres)
+*     r = double * (Returned)
+*       distance from Earth axis (AU)
+*     z = double * (Returned)
+*       distance from plane of Earth equator (AU)
+
+*  Description:
+*     Convert geodetic position to geocentric.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Geocentric latitude can be obtained by evaluating atan2(z,r)
+*     - Uses WGS84 reference ellipsoid and calls eraGd2gc
+
+*  History:
+*     2012-03-01 (TIMJ):
+*        Initial version moved from palOne2One
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palGeoc ( double p, double h, double *r, double *z ) {
+  double xyz[3];
+  const double elong = 0.0;   /* Use zero longitude */
+  const double AU = 1.49597870E11;
+  /* WGS84 looks to be the closest match */
+  eraGd2gc( ERFA_WGS84, elong, p, h, xyz );
+  *r = xyz[0] / (AU * cos(elong) );
+  *z = xyz[2] / AU;
+}
Index: branches/FACT++_part_filenames/pal/palIntin.c
===================================================================
--- branches/FACT++_part_filenames/pal/palIntin.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palIntin.c	(revision 18732)
@@ -0,0 +1,185 @@
+/*
+*+
+*  Name:
+*     palIntin
+
+*  Purpose:
+*     Convert free-format input into an integer
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palIntin( const char * string, int *nstrt,
+*                     long *ireslt, int *jflag );
+
+*  Arguments:
+*     string = const char * (Given)
+*        String containing number to be decoded.
+*     nstrt = int * (Given and Returned)
+*        Character number indicating where decoding should start.
+*        On output its value is updated to be the location of the
+*        possible next value. For compatibility with SLA the first
+*        character is index 1.
+*     ireslt = long * (Returned)
+*        Result. Not updated when jflag=1.
+*     jflag = int * (Returned)
+*        status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
+
+*  Description:
+*     Extracts a number from an input string starting at the specified
+*     index.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Uses the strtol() system call to do the parsing. This may lead to
+*       subtle differences when compared to the SLA/F parsing.
+*     - Commas are recognized as a special case and are skipped if one happens
+*       to be the next character when updating nstrt. Additionally the output
+*       nstrt position will skip past any trailing space.
+*     - If no number can be found flag will be set to 1.
+*     - If the number overflows or underflows jflag will be set to 2. For overflow
+*       the returned result will have the value LONG_MAX, for underflow it
+*       will have the value LONG_MIN.
+
+*  History:
+*     2012-03-15 (TIMJ):
+*        Initial version
+*        Matches the SLALIB interface but brand new implementation using
+*        C library calls and not a direct port of the Fortran.
+*     2014-08-07 (TIMJ):
+*        Check for isblank availability.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012,2014 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <errno.h>
+
+/* isblank() is a C99 feature so we just reimplement it if it is missing */
+#if HAVE_ISBLANK
+#ifndef _ISOC99_SOURCE
+#define _ISOC99_SOURCE
+#endif
+#include <ctype.h>
+# define ISBLANK isblank
+#else
+
+static int ISBLANK( int c ) {
+  return ( c == ' ' || c == '\t' );
+}
+
+#endif
+
+/* Still need ctype for isalpha and isdigit */
+#include <ctype.h>
+
+#include "pal.h"
+
+void palIntin( const char * string, int *nstrt,
+               long *ireslt, int *jflag ) {
+
+  const char *strstart = NULL; /* Pointer to start of search */
+  const char * ctemp = NULL; /* Pointer into string */
+  char * endptr = NULL;/* Pointer to string after number */
+  int retval;       /* Return value from strtol */
+  int hasminus;     /* is this a -0 */
+
+  /* strtol man page indicates that we should reset errno before
+     calling strtod */
+  errno = 0;
+
+  /* Locate the start postion */
+  strstart = &(string[*nstrt-1]);
+
+  /* We have to be able to deal with -0 so we have to search the
+     string first and look for the negative */
+  hasminus = 0;
+  ctemp = strstart;
+  while ( ctemp != '\0' ) {
+    if (isdigit(*ctemp)) break;
+    /* Reset so that - 12345 is not a negative number */
+    hasminus = 0;
+    /* Flag that we have found a minus */
+    if (*ctemp == '-') hasminus = 1;
+    ctemp++;
+  }
+
+  /* Look for the number using the system call, offsetting using
+     1-based counter. */
+  retval = strtol( strstart, &endptr, 10 );
+  if (retval == 0.0 && endptr == strstart) {
+    /* conversion did not find anything */
+    *jflag = 1;
+
+    /* but SLA compatibility requires that we step
+       through to remove leading spaces. We also step
+       through alphabetic characters since they can never
+       be numbers. Skip past a "+" since it doesn't gain
+       us anything and matches slalib. */
+    while (ISBLANK(*endptr) || isalpha(*endptr) || *endptr == '+' ) {
+      endptr++;
+    }
+
+  } else if ( errno == ERANGE ) {
+    *jflag = 2;
+  } else {
+    if ( retval < 0 || hasminus ) {
+      *jflag = -1;
+    } else {
+      *jflag = 0;
+    }
+  }
+
+  /* Sort out the position for the next index */
+  *nstrt = endptr - string + 1;
+
+  /* Skip a comma */
+  if (*endptr == ',') {
+    (*nstrt)++;
+  } else {
+    /* jump past any leading spaces for the next part of the string */
+    ctemp = endptr;
+    while ( ISBLANK(*ctemp) ) {
+      (*nstrt)++;
+      ctemp++;
+    }
+  }
+
+  /* And the result unless we found nothing */
+  if (*jflag != 1) *ireslt = retval;
+
+}
Index: branches/FACT++_part_filenames/pal/palMap.c
===================================================================
--- branches/FACT++_part_filenames/pal/palMap.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palMap.c	(revision 18732)
@@ -0,0 +1,128 @@
+/*
+*+
+*  Name:
+*     palMap
+
+*  Purpose:
+*     Convert star RA,Dec from mean place to geocentric apparent
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palMap( double rm, double dm, double pr, double pd,
+*                  double px, double rv, double eq, double date,
+*                  double *ra, double *da );
+
+*  Arguments:
+*     rm = double (Given)
+*        Mean RA (radians)
+*     dm = double (Given)
+*        Mean declination (radians)
+*     pr = double (Given)
+*        RA proper motion, changes per Julian year (radians)
+*     pd = double (Given)
+*        Dec proper motion, changes per Julian year (radians)
+*     px = double (Given)
+*        Parallax (arcsec)
+*     rv = double (Given)
+*        Radial velocity (km/s, +ve if receding)
+*     eq = double (Given)
+*        Epoch and equinox of star data (Julian)
+*     date = double (Given)
+*        TDB for apparent place (JD-2400000.5)
+*     ra = double * (Returned)
+*        Apparent RA (radians)
+*     dec = double * (Returned)
+*        Apparent dec (radians)
+
+*  Description:
+*     Convert star RA,Dec from mean place to geocentric apparent.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Calls palMappa and palMapqk
+
+*     - The reference systems and timescales used are IAU 2006.
+
+*     - EQ is the Julian epoch specifying both the reference frame and
+*       the epoch of the position - usually 2000.  For positions where
+*       the epoch and equinox are different, use the routine palPm to
+*       apply proper motion corrections before using this routine.
+*
+*     - The distinction between the required TDB and TT is always
+*       negligible.  Moreover, for all but the most critical
+*       applications UTC is adequate.
+*
+*     - The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt.
+*
+*     - This routine may be wasteful for some applications because it
+*       recomputes the Earth position/velocity and the precession-
+*       nutation matrix each time, and because it allows for parallax
+*       and proper motion.  Where multiple transformations are to be
+*       carried out for one epoch, a faster method is to call the
+*       palMappa routine once and then either the palMapqk routine
+*       (which includes parallax and proper motion) or palMapqkz (which
+*       assumes zero parallax and proper motion).
+*
+*     - The accuracy is sub-milliarcsecond, limited by the
+*       precession-nutation model (see palPrenut for details).
+*
+*     - The accuracy is further limited by the routine palEvp, called
+*       by palMappa, which computes the Earth position and velocity.
+*       See eraEpv00 for details on that calculation.
+
+*  History:
+*     2012-03-01 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2001 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+*     USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palMap( double rm, double dm, double pr, double pd,
+             double px, double rv, double eq, double date,
+             double *ra, double *da ) {
+
+  double amprms[21];
+
+  /* Star independent parameters */
+  palMappa( eq, date, amprms );
+
+  /* Mean to apparent */
+  palMapqk( rm, dm, pr, pd, px, rv, amprms, ra, da );
+
+}
Index: branches/FACT++_part_filenames/pal/palMappa.c
===================================================================
--- branches/FACT++_part_filenames/pal/palMappa.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palMappa.c	(revision 18732)
@@ -0,0 +1,129 @@
+/*
+*+
+*  Name:
+*     palMappa
+
+*  Purpose:
+*     Compute parameters needed by palAmpqk and palMapqk.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palMappa( double eq, double date, double amprms[21] )
+
+*  Arguments:
+*     eq = double (Given)
+*        epoch of mean equinox to be used (Julian)
+*     date = double (Given)
+*        TDB (JD-2400000.5)
+*     amprms =   double[21]  (Returned)
+*        star-independent mean-to-apparent parameters:
+*        - (0)      time interval for proper motion (Julian years)
+*        - (1-3)    barycentric position of the Earth (AU)
+*        - (4-6)    heliocentric direction of the Earth (unit vector)
+*        - (7)      (Schwarzschild radius of Sun)/(Sun-Earth distance)
+*        - (8-10)   abv: barycentric Earth velocity in units of c
+*        - (11)     sqrt(1-v^2) where v=modulus(abv)
+*        - (12-20)  precession/nutation (3,3) matrix
+
+*  Description:
+*     Compute star-independent parameters in preparation for
+*     transformations between mean place and geocentric apparent place.
+*
+*     The parameters produced by this function are required in the
+*     parallax, aberration, and nutation/bias/precession parts of the
+*     mean/apparent transformations.
+*
+*     The reference systems and timescales used are IAU 2006.
+
+*  Notes:
+*     - For date, the distinction between the required TDB and TT
+*     is always negligible.  Moreover, for all but the most
+*     critical applications UTC is adequate.
+*     - The vector amprms(1-3) is referred to the mean equinox and
+*     equator of epoch eq.
+*     - The parameters amprms produced by this function are used by
+*     palAmpqk, palMapqk and palMapqkz.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (PTW):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2003 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+#include <string.h>
+
+void palMappa( double eq, double date, double amprms[21] ){
+
+/* Local constants */
+
+/*  Gravitational radius of the Sun x 2 (2*mu/c**2, AU) */
+  const double GR2 = 2.0 * 9.87063e-9;
+
+/* Local Variables; */
+   int i;
+   double ebd[ 3 ], ehd[ 3 ], eh[ 3 ], e, vn[ 3 ], vm;
+
+/* Initialise so that unsused values are returned holding zero */
+   memset( amprms, 0, 21*sizeof( *amprms ) );
+
+/* Time interval for proper motion correction. */
+   amprms[ 0 ] = eraEpj( PAL__MJD0, date ) - eq;
+
+/* Get Earth barycentric and heliocentric position and velocity. */
+   palEvp( date, eq, ebd, &amprms[ 1 ], ehd, eh );
+
+/* Heliocentric direction of Earth (normalized) and modulus. */
+   eraPn( eh, &e, &amprms[ 4 ] );
+
+/* Light deflection parameter */
+   amprms[7] = GR2 / e;
+
+/* Aberration parameters. */
+   for( i = 0; i < 3; i++ ) {
+      amprms[ i + 8 ] = ebd[ i ]*PAL__CR;
+   }
+   eraPn( &amprms[8], &vm, vn );
+   amprms[ 11 ] = sqrt( 1.0 - vm*vm );
+
+/* NPB matrix. */
+   palPrenut( eq, date, (double(*)[ 3 ]) &amprms[ 12 ] );
+}
Index: branches/FACT++_part_filenames/pal/palMapqk.c
===================================================================
--- branches/FACT++_part_filenames/pal/palMapqk.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palMapqk.c	(revision 18732)
@@ -0,0 +1,172 @@
+/*
+*+
+*  Name:
+*     palMapqk
+
+*  Purpose:
+*     Quick mean to apparent place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palMapqk ( double rm, double dm, double pr, double pd,
+*                     double px, double rv, double amprms[21],
+*                     double *ra, double *da );
+
+*  Arguments:
+*     rm = double (Given)
+*        Mean RA (radians)
+*     dm = double (Given)
+*        Mean declination (radians)
+*     pr = double (Given)
+*        RA proper motion, changes per Julian year (radians)
+*     pd = double (Given)
+*        Dec proper motion, changes per Julian year (radians)
+*     px = double (Given)
+*        Parallax (arcsec)
+*     rv = double (Given)
+*        Radial velocity (km/s, +ve if receding)
+*     amprms = double [21] (Given)
+*        Star-independent mean-to-apparent parameters (see palMappa).
+*     ra = double * (Returned)
+*        Apparent RA (radians)
+*     dec = double * (Returned)
+*        Apparent dec (radians)
+
+*  Description:
+*     Quick mean to apparent place:  transform a star RA,Dec from
+*     mean place to geocentric apparent place, given the
+*     star-independent parameters.
+*
+*     Use of this routine is appropriate when efficiency is important
+*     and where many star positions, all referred to the same equator
+*     and equinox, are to be transformed for one epoch.  The
+*     star-independent parameters can be obtained by calling the
+*     palMappa routine.
+*
+*     If the parallax and proper motions are zero the palMapqkz
+*     routine can be used instead.
+
+*  Notes:
+*     - The reference frames and timescales used are post IAU 2006.
+*     - The mean place rm, dm and the vectors amprms[1-3] and amprms[4-6]
+*       are referred to the mean equinox and equator of the epoch
+*       specified when generating the precession/nutation matrix
+*       amprms[12-20].  In the call to palMappa (q.v.) normally used
+*       to populate amprms, this epoch is the first argument (eq).
+*     - Strictly speaking, the routine is not valid for solar-system
+*       sources, though the error will usually be extremely small.
+*       However, to prevent gross errors in the case where the
+*       position of the Sun is specified, the gravitational
+*       deflection term is restrained within about 920 arcsec of the
+*       centre of the Sun's disc.  The term has a maximum value of
+*       about 1.85 arcsec at this radius, and decreases to zero as
+*       the centre of the disc is approached.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-03-01 (TIMJ):
+*        Initial version with documentation from SLA/F
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2000 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palMapqk ( double rm, double dm, double pr, double pd,
+                double px, double rv, double amprms[21],
+                double *ra, double *da ) {
+
+/* local constants */
+   const double VF = 0.210945028; /* Km/s to AU/year */
+
+/* Local Variables: */
+   int i;
+   double ab1, abv[3], p[3], w, p1dv, p2[3], p3[3];
+   double pmt, gr2e, eb[3], q[3], pxr, em[3];
+   double pde, pdep1, p1[3], ehn[3], pn[3];
+
+/* Unpack scalar and vector parameters. */
+   pmt = amprms[0];
+   gr2e = amprms[7];
+   ab1 = amprms[11];
+   for( i = 0; i < 3; i++ ) {
+      eb[i] = amprms[i+1];
+      ehn[i] = amprms[i+4];
+      abv[i] = amprms[i+8];
+   }
+
+/* Spherical to x,y,z. */
+   eraS2c( rm, dm, q);
+
+ /* Space motion (radians per year) */
+   pxr = px * PAL__DAS2R;
+   w = VF * rv * pxr;
+   em[0] = -pr * q[1] - pd * cos(rm) * sin(dm) + w * q[0];
+   em[1] =  pr * q[0] - pd * sin(rm) * sin(dm) + w * q[1];
+   em[2] =              pd * cos(dm)           + w * q[2];
+
+/* Geocentric direction of star (normalised) */
+   for( i = 0; i < 3; i++ ) {
+      p[i] = q[i] + pmt * em[i] - pxr * eb[i];
+   }
+   eraPn( p, &w, pn );
+
+/* Light deflection (restrained within the Sun's disc) */
+   pde = eraPdp( pn, ehn );
+   pdep1 = pde + 1.0;
+   w = gr2e / ( pdep1 > 1.0e-5 ? pdep1 : 1.0e-5 );
+   for( i = 0; i < 3; i++) {
+      p1[i] = pn[i] + w * ( ehn[i] - pde * pn[i] );
+   }
+
+/* Aberration (normalisation omitted). */
+   p1dv = eraPdp( p, abv );
+   w = 1.0 + p1dv / ( ab1 + 1.0 );
+   for( i = 0; i < 3; i++ ) {
+      p2[i] = ( ab1 * p1[i] ) + ( w * abv[i] );
+   }
+
+/* Precession and nutation. */
+   eraRxp( (double(*)[3]) &amprms[12], p2, p3 );
+
+/* Geocentric apparent RA,dec. */
+   eraC2s( p3, ra, da );
+   *ra = eraAnp( *ra );
+
+}
Index: branches/FACT++_part_filenames/pal/palMapqkz.c
===================================================================
--- branches/FACT++_part_filenames/pal/palMapqkz.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palMapqkz.c	(revision 18732)
@@ -0,0 +1,150 @@
+/*
+*+
+*  Name:
+*     palMapqkz
+
+*  Purpose:
+*     Quick mean to apparent place (no proper motion or parallax).
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palMapqkz( double rm, double dm, double amprms[21],
+*                     double *ra, double *da )
+
+*  Arguments:
+*     rm = double (Given)
+*        Mean RA (radians).
+*     dm = double (Given)
+*        Mean Dec (radians).
+*     amprms = double[21] (Given)
+*        Star-independent mean-to-apparent parameters (see palMappa):
+*        (0-3)    not used
+*        (4-6)    heliocentric direction of the Earth (unit vector)
+*        (7)      not used
+*        (8-10)   abv: barycentric Earth velocity in units of c
+*        (11)     sqrt(1-v^2) where v=modulus(abv)
+*        (12-20)  precession/nutation (3,3) matrix
+*     ra = double * (Returned)
+*        Apparent RA (radians).
+*     da = double * (Returned)
+*        Apparent Dec (radians).
+
+*  Description:
+*     Quick mean to apparent place:  transform a star RA,dec from
+*     mean place to geocentric apparent place, given the
+*     star-independent parameters, and assuming zero parallax
+*     and proper motion.
+*
+*     Use of this function is appropriate when efficiency is important
+*     and where many star positions, all with parallax and proper
+*     motion either zero or already allowed for, and all referred to
+*     the same equator and equinox, are to be transformed for one
+*     epoch.  The star-independent parameters can be obtained by
+*     calling the palMappa function.
+*
+*     The corresponding function for the case of non-zero parallax
+*     and proper motion is palMapqk.
+
+*  Notes:
+*     - The reference systems and timescales used are IAU 2006.
+*     - The mean place rm, dm and the vectors amprms[1-3] and amprms[4-6]
+*       are referred to the mean equinox and equator of the epoch
+*       specified when generating the precession/nutation matrix
+*       amprms[12-20].  In the call to palMappa (q.v.) normally used
+*       to populate amprms, this epoch is the first argument (eq).
+*     - The vector amprms(4-6) is referred to the mean equinox and
+*       equator of epoch eq.
+*     - Strictly speaking, the routine is not valid for solar-system
+*       sources, though the error will usually be extremely small.
+*       However, to prevent gross errors in the case where the
+*       position of the Sun is specified, the gravitational
+*       deflection term is restrained within about 920 arcsec of the
+*       centre of the Sun's disc.  The term has a maximum value of
+*       about 1.85 arcsec at this radius, and decreases to zero as
+*       the centre of the disc is approached.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-13 (PTW):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palMapqkz ( double rm, double dm, double amprms[21], double *ra,
+                 double *da ){
+
+/* Local Variables: */
+   int i;
+   double ab1, abv[3], p[3], w, p1dv, p2[3], p3[3];
+   double gr2e, pde, pdep1, ehn[3], p1[3];
+
+/* Unpack scalar and vector parameters. */
+   ab1 = amprms[11];
+   gr2e = amprms[7];
+   for( i = 0; i < 3; i++ ) {
+      abv[i] = amprms[i+8];
+      ehn[i] = amprms[i+4];
+   }
+
+/* Spherical to x,y,z. */
+   eraS2c( rm, dm, p );
+
+/* Light deflection (restrained within the Sun's disc) */
+   pde = eraPdp( p, ehn );
+   pdep1 = pde + 1.0;
+   w = gr2e / ( pdep1 > 1.0e-5 ? pdep1 : 1.0e-5 );
+   for( i = 0; i < 3; i++) {
+      p1[i] = p[i] + w * ( ehn[i] - pde * p[i] );
+   }
+
+/* Aberration. */
+   p1dv = eraPdp( p1, abv );
+   w = 1.0 + p1dv / ( ab1 + 1.0 );
+   for( i = 0; i < 3; i++ ) {
+      p2[i] = ( ( ab1 * p1[i] ) + ( w * abv[i] ) );
+   }
+
+/* Precession and nutation. */
+   eraRxp( (double(*)[3]) &amprms[12], p2, p3 );
+
+/* Geocentric apparent RA,dec. */
+   eraC2s( p3, ra, da );
+   *ra = eraAnp( *ra );
+}
Index: branches/FACT++_part_filenames/pal/palNut.c
===================================================================
--- branches/FACT++_part_filenames/pal/palNut.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palNut.c	(revision 18732)
@@ -0,0 +1,85 @@
+/*
+*+
+*  Name:
+*     palNut
+
+*  Purpose:
+*     Form the matrix of nutation
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palNut( double date, double rmatn[3][3] );
+
+*  Arguments:
+*     date = double (Given)
+*        TT as modified Julian date (JD-2400000.5)
+*     rmatn = double [3][3] (Returned)
+*        Nutation matrix in the sense v(true)=rmatn * v(mean)
+*        where v(true) is the star vector relative to the
+*        true equator and equinox of date and v(mean) is the
+*        star vector relative to the mean equator and equinox
+*        of date.
+
+*  Description:
+*     Form the matrix of nutation for a given date using
+*     the IAU 2006 nutation model and palDeuler.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Uses eraNut06a via palNutc
+*     - The distinction between TDB and TT is negligible. For all but
+*       the most critical applications UTC is adequate.
+
+*  History:
+*     2012-03-07 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palNut( double date, double rmatn[3][3]) {
+  double dpsi, deps, eps0;
+
+  /* Nutation component and mean obliquity */
+  palNutc( date, &dpsi, &deps, &eps0 );
+
+  /* Rotation matrix */
+  palDeuler( "XZX", eps0, -dpsi, -(eps0+deps), rmatn );
+
+}
Index: branches/FACT++_part_filenames/pal/palNutc.c
===================================================================
--- branches/FACT++_part_filenames/pal/palNutc.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palNutc.c	(revision 18732)
@@ -0,0 +1,80 @@
+/*
+*+
+*  Name:
+*     palNutc
+
+*  Purpose:
+*     Calculate nutation longitude & obliquoty components
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palNutc( double date, double * dpsi, double *deps, double *eps0 );
+
+*  Arguments:
+*     date = double (Given)
+*        TT as modified Julian date (JD-2400000.5)
+*     dpsi = double * (Returned)
+*        Nutation in longitude
+*     deps = double * (Returned)
+*        Nutation in obliquity
+*     eps0 = double * (Returned)
+*        Mean obliquity.
+
+*  Description:
+*     Calculates the longitude * obliquity components and mean obliquity
+*     using the SOFA/ERFA library.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Calls eraObl06 and eraNut06a and therefore uses the IAU 206
+*       precession/nutation model.
+*     - Note the change from SLA/F regarding the date. TT is used
+*       rather than TDB.
+
+*  History:
+*     2012-03-05 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palNutc( double date, double * dpsi, double *deps, double *eps0 ) {
+  eraNut06a( PAL__MJD0, date, dpsi, deps );
+  *eps0 = eraObl06( PAL__MJD0, date );
+}
Index: branches/FACT++_part_filenames/pal/palOap.c
===================================================================
--- branches/FACT++_part_filenames/pal/palOap.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palOap.c	(revision 18732)
@@ -0,0 +1,234 @@
+/*
+*+
+*  Name:
+*     palOap
+
+*  Purpose:
+*     Observed to apparent place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palOap ( const char *type, double ob1, double ob2, double date,
+*                   double dut, double elongm, double phim, double hm,
+*                   double xp, double yp, double tdk, double pmb,
+*                   double rh, double wl, double tlr,
+*                   double *rap, double *dap );
+
+*  Arguments:
+*     type = const char * (Given)
+*        Type of coordinates - 'R', 'H' or 'A' (see below)
+*     ob1 = double (Given)
+*        Observed Az, HA or RA (radians; Az is N=0;E=90)
+*     ob2 = double (Given)
+*        Observed ZD or Dec (radians)
+*     date = double (Given)
+*        UTC date/time (Modified Julian Date, JD-2400000.5)
+*     dut = double (Given)
+*        delta UT: UT1-UTC (UTC seconds)
+*     elongm = double (Given)
+*        Mean longitude of the observer (radians, east +ve)
+*     phim = double (Given)
+*        Mean geodetic latitude of the observer (radians)
+*     hm = double (Given)
+*        Observer's height above sea level (metres)
+*     xp = double (Given)
+*        Polar motion x-coordinates (radians)
+*     yp = double (Given)
+*        Polar motion y-coordinates (radians)
+*     tdk = double (Given)
+*        Local ambient temperature (K; std=273.15)
+*     pmb = double (Given)
+*        Local atmospheric pressure (mb; std=1013.25)
+*     rh = double (Given)
+*        Local relative humidity (in the range 0.0-1.0)
+*     wl = double (Given)
+*        Effective wavelength (micron, e.g. 0.55)
+*     tlr = double (Given)
+*        Tropospheric laps rate (K/metre, e.g. 0.0065)
+*     rap = double * (Given)
+*        Geocentric apparent right ascension
+*     dap = double * (Given)
+*        Geocentric apparent declination
+
+*  Description:
+*     Observed to apparent place.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Only the first character of the TYPE argument is significant.
+*     'R' or 'r' indicates that OBS1 and OBS2 are the observed right
+*     ascension and declination;  'H' or 'h' indicates that they are
+*     hour angle (west +ve) and declination;  anything else ('A' or
+*     'a' is recommended) indicates that OBS1 and OBS2 are azimuth
+*     (north zero, east 90 deg) and zenith distance.  (Zenith
+*     distance is used rather than elevation in order to reflect the
+*     fact that no allowance is made for depression of the horizon.)
+*
+*     - The accuracy of the result is limited by the corrections for
+*     refraction.  Providing the meteorological parameters are
+*     known accurately and there are no gross local effects, the
+*     predicted apparent RA,Dec should be within about 0.1 arcsec
+*     for a zenith distance of less than 70 degrees.  Even at a
+*     topocentric zenith distance of 90 degrees, the accuracy in
+*     elevation should be better than 1 arcmin;  useful results
+*     are available for a further 3 degrees, beyond which the
+*     palRefro routine returns a fixed value of the refraction.
+*     The complementary routines palAop (or palAopqk) and palOap
+*     (or palOapqk) are self-consistent to better than 1 micro-
+*     arcsecond all over the celestial sphere.
+*
+*     - It is advisable to take great care with units, as even
+*     unlikely values of the input parameters are accepted and
+*     processed in accordance with the models used.
+*
+*     - "Observed" Az,El means the position that would be seen by a
+*     perfect theodolite located at the observer.  This is
+*     related to the observed HA,Dec via the standard rotation, using
+*     the geodetic latitude (corrected for polar motion), while the
+*     observed HA and RA are related simply through the local
+*     apparent ST.  "Observed" RA,Dec or HA,Dec thus means the
+*     position that would be seen by a perfect equatorial located
+*     at the observer and with its polar axis aligned to the
+*     Earth's axis of rotation (n.b. not to the refracted pole).
+*     By removing from the observed place the effects of
+*     atmospheric refraction and diurnal aberration, the
+*     geocentric apparent RA,Dec is obtained.
+*
+*     - Frequently, mean rather than apparent RA,Dec will be required,
+*     in which case further transformations will be necessary.  The
+*     palAmp etc routines will convert the apparent RA,Dec produced
+*     by the present routine into an "FK5" (J2000) mean place, by
+*     allowing for the Sun's gravitational lens effect, annual
+*     aberration, nutation and precession.  Should "FK4" (1950)
+*     coordinates be needed, the routines palFk524 etc will also
+*     need to be applied.
+*
+*     - To convert to apparent RA,Dec the coordinates read from a
+*     real telescope, corrections would have to be applied for
+*     encoder zero points, gear and encoder errors, tube flexure,
+*     the position of the rotator axis and the pointing axis
+*     relative to it, non-perpendicularity between the mounting
+*     axes, and finally for the tilt of the azimuth or polar axis
+*     of the mounting (with appropriate corrections for mount
+*     flexures).  Some telescopes would, of course, exhibit other
+*     properties which would need to be accounted for at the
+*     appropriate point in the sequence.
+*
+*     - This routine takes time to execute, due mainly to the rigorous
+*     integration used to evaluate the refraction.  For processing
+*     multiple stars for one location and time, call palAoppa once
+*     followed by one call per star to palOapqk.  Where a range of
+*     times within a limited period of a few hours is involved, and the
+*     highest precision is not required, call palAoppa once, followed
+*     by a call to palAoppat each time the time changes, followed by
+*     one call per star to palOapqk.
+*
+*     - The DATE argument is UTC expressed as an MJD.  This is, strictly
+*     speaking, wrong, because of leap seconds.  However, as long as
+*     the delta UT and the UTC are consistent there are no
+*     difficulties, except during a leap second.  In this case, the
+*     start of the 61st second of the final minute should begin a new
+*     MJD day and the old pre-leap delta UT should continue to be used.
+*     As the 61st second completes, the MJD should revert to the start
+*     of the day as, simultaneously, the delta UTC changes by one
+*     second to its post-leap new value.
+*
+*     - The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*     elsewhere.  It increases by exactly one second at the end of
+*     each UTC leap second, introduced in order to keep delta UT
+*     within +/- 0.9 seconds.
+*
+*     - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*     The longitude required by the present routine is east-positive,
+*     in accordance with geographical convention (and right-handed).
+*     In particular, note that the longitudes returned by the
+*     palOBS routine are west-positive, following astronomical
+*     usage, and must be reversed in sign before use in the present
+*     routine.
+*
+*     - The polar coordinates XP,YP can be obtained from IERS
+*     circulars and equivalent publications.  The maximum amplitude
+*     is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*     use XP=YP=0D0.  See page B60 of the 1988 Astronomical Almanac
+*     for a definition of the two angles.
+*
+*     - The height above sea level of the observing station, HM,
+*     can be obtained from the Astronomical Almanac (Section J
+*     in the 1988 edition), or via the routine palOBS.  If P,
+*     the pressure in millibars, is available, an adequate
+*     estimate of HM can be obtained from the expression
+*
+*            HM ~ -29.3*TSL*LOG(P/1013.25).
+*
+*     where TSL is the approximate sea-level air temperature in K
+*     (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*     section 52).  Similarly, if the pressure P is not known,
+*     it can be estimated from the height of the observing
+*     station, HM, as follows:
+*
+*            P ~ 1013.25*EXP(-HM/(29.3*TSL)).
+*
+*     Note, however, that the refraction is nearly proportional to the
+*     pressure and that an accurate P value is important for precise
+*     work.
+*
+*     - The azimuths etc. used by the present routine are with respect
+*     to the celestial pole.  Corrections from the terrestrial pole
+*     can be computed using palPolmo.
+
+*  History:
+*     2012-08-27 (TIMJ):
+*        Initial version, copied from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palOap ( const char *type, double ob1, double ob2, double date,
+              double dut, double elongm, double phim, double hm,
+              double xp, double yp, double tdk, double pmb,
+              double rh, double wl, double tlr,
+              double *rap, double *dap ) {
+
+  double aoprms[14];
+
+  palAoppa(date,dut,elongm,phim,hm,xp,yp,tdk,pmb,rh,wl,tlr,
+           aoprms);
+  palOapqk(type,ob1,ob2,aoprms,rap,dap);
+
+}
Index: branches/FACT++_part_filenames/pal/palOapqk.c
===================================================================
--- branches/FACT++_part_filenames/pal/palOapqk.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palOapqk.c	(revision 18732)
@@ -0,0 +1,266 @@
+/*
+*+
+*  Name:
+*     palOapqk
+
+*  Purpose:
+*     Quick observed to apparent place
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palOapqk ( const char *type, double ob1, double ob2,
+*                     const  double aoprms[14], double *rap, double *dap );
+
+*  Arguments:
+*     Quick observed to apparent place.
+
+*  Description:
+*     type = const char * (Given)
+*        Type of coordinates - 'R', 'H' or 'A' (see below)
+*     ob1 = double (Given)
+*        Observed Az, HA or RA (radians; Az is N=0;E=90)
+*     ob2 = double (Given)
+*        Observed ZD or Dec (radians)
+*     aoprms = const double [14] (Given)
+*        Star-independent apparent-to-observed parameters.
+*        See palAopqk for details.
+*     rap = double * (Given)
+*        Geocentric apparent right ascension
+*     dap = double * (Given)
+*        Geocentric apparent declination
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Only the first character of the TYPE argument is significant.
+*     'R' or 'r' indicates that OBS1 and OBS2 are the observed right
+*     ascension and declination;  'H' or 'h' indicates that they are
+*     hour angle (west +ve) and declination;  anything else ('A' or
+*     'a' is recommended) indicates that OBS1 and OBS2 are azimuth
+*     (north zero, east 90 deg) and zenith distance.  (Zenith distance
+*     is used rather than elevation in order to reflect the fact that
+*     no allowance is made for depression of the horizon.)
+*
+*     - The accuracy of the result is limited by the corrections for
+*     refraction.  Providing the meteorological parameters are
+*     known accurately and there are no gross local effects, the
+*     predicted apparent RA,Dec should be within about 0.1 arcsec
+*     for a zenith distance of less than 70 degrees.  Even at a
+*     topocentric zenith distance of 90 degrees, the accuracy in
+*     elevation should be better than 1 arcmin;  useful results
+*     are available for a further 3 degrees, beyond which the
+*     palREFRO routine returns a fixed value of the refraction.
+*     The complementary routines palAop (or palAopqk) and palOap
+*     (or palOapqk) are self-consistent to better than 1 micro-
+*     arcsecond all over the celestial sphere.
+*
+*     - It is advisable to take great care with units, as even
+*     unlikely values of the input parameters are accepted and
+*     processed in accordance with the models used.
+*
+*     - "Observed" Az,El means the position that would be seen by a
+*     perfect theodolite located at the observer.  This is
+*     related to the observed HA,Dec via the standard rotation, using
+*     the geodetic latitude (corrected for polar motion), while the
+*     observed HA and RA are related simply through the local
+*     apparent ST.  "Observed" RA,Dec or HA,Dec thus means the
+*     position that would be seen by a perfect equatorial located
+*     at the observer and with its polar axis aligned to the
+*     Earth's axis of rotation (n.b. not to the refracted pole).
+*     By removing from the observed place the effects of
+*     atmospheric refraction and diurnal aberration, the
+*     geocentric apparent RA,Dec is obtained.
+*
+*     - Frequently, mean rather than apparent RA,Dec will be required,
+*     in which case further transformations will be necessary.  The
+*     palAmp etc routines will convert the apparent RA,Dec produced
+*     by the present routine into an "FK5" (J2000) mean place, by
+*     allowing for the Sun's gravitational lens effect, annual
+*     aberration, nutation and precession.  Should "FK4" (1950)
+*     coordinates be needed, the routines palFk524 etc will also
+*     need to be applied.
+*
+*     - To convert to apparent RA,Dec the coordinates read from a
+*     real telescope, corrections would have to be applied for
+*     encoder zero points, gear and encoder errors, tube flexure,
+*     the position of the rotator axis and the pointing axis
+*     relative to it, non-perpendicularity between the mounting
+*     axes, and finally for the tilt of the azimuth or polar axis
+*     of the mounting (with appropriate corrections for mount
+*     flexures).  Some telescopes would, of course, exhibit other
+*     properties which would need to be accounted for at the
+*     appropriate point in the sequence.
+*
+*     - The star-independent apparent-to-observed-place parameters
+*     in AOPRMS may be computed by means of the palAoppa routine.
+*     If nothing has changed significantly except the time, the
+*     palAoppat routine may be used to perform the requisite
+*     partial recomputation of AOPRMS.
+*
+*     - The azimuths etc used by the present routine are with respect
+*     to the celestial pole.  Corrections from the terrestrial pole
+*     can be computed using palPolmo.
+
+
+*  History:
+*     2012-08-27 (TIMJ):
+*        Initial version, direct copy of Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void palOapqk ( const char *type, double ob1, double ob2, const double aoprms[14],
+                double *rap, double *dap ) {
+
+  /*  breakpoint for fast/slow refraction algorithm:
+   *  zd greater than arctan(4), (see palRefco routine)
+   *  or vector z less than cosine(arctan(z)) = 1/sqrt(17) */
+  const double zbreak = 0.242535625;
+
+  char c;
+  double c1,c2,sphi,cphi,st,ce,xaeo,yaeo,zaeo,v[3],
+    xmhdo,ymhdo,zmhdo,az,sz,zdo,tz,dref,zdt,
+    xaet,yaet,zaet,xmhda,ymhda,zmhda,diurab,f,hma;
+
+  /*  coordinate type */
+  c = type[0];
+
+  /*  coordinates */
+  c1 = ob1;
+  c2 = ob2;
+
+  /*  sin, cos of latitude */
+  sphi = aoprms[1];
+  cphi = aoprms[2];
+
+  /*  local apparent sidereal time */
+  st = aoprms[13];
+
+  /*  standardise coordinate type */
+  if (c == 'r' || c == 'R') {
+    c = 'r';
+  } else if (c == 'h' || c == 'H') {
+    c = 'h';
+  } else {
+    c = 'a';
+  }
+
+  /*  if az,zd convert to cartesian (s=0,e=90) */
+  if (c == 'a') {
+    ce = sin(c2);
+    xaeo = -cos(c1)*ce;
+    yaeo = sin(c1)*ce;
+    zaeo = cos(c2);
+  } else {
+
+    /*     if ra,dec convert to ha,dec */
+    if (c == 'r') {
+      c1 = st-c1;
+    }
+
+    /*     to cartesian -ha,dec */
+    palDcs2c( -c1, c2, v );
+    xmhdo = v[0];
+    ymhdo = v[1];
+    zmhdo = v[2];
+
+    /*     to cartesian az,el (s=0,e=90) */
+    xaeo = sphi*xmhdo-cphi*zmhdo;
+    yaeo = ymhdo;
+    zaeo = cphi*xmhdo+sphi*zmhdo;
+  }
+
+  /*  azimuth (s=0,e=90) */
+  if (xaeo != 0.0 || yaeo != 0.0) {
+    az = atan2(yaeo,xaeo);
+  } else {
+    az = 0.0;
+  }
+
+  /*  sine of observed zd, and observed zd */
+  sz = sqrt(xaeo*xaeo+yaeo*yaeo);
+  zdo = atan2(sz,zaeo);
+
+  /*
+   *  refraction
+   *  ---------- */
+
+  /*  large zenith distance? */
+  if (zaeo >= zbreak) {
+
+    /*     fast algorithm using two constant model */
+    tz = sz/zaeo;
+    dref = (aoprms[10]+aoprms[11]*tz*tz)*tz;
+
+  } else {
+
+    /*     rigorous algorithm for large zd */
+    palRefro(zdo,aoprms[4],aoprms[5],aoprms[6],aoprms[7],
+             aoprms[8],aoprms[0],aoprms[9],1e-8,&dref);
+  }
+
+  zdt = zdo+dref;
+
+  /*  to cartesian az,zd */
+  ce = sin(zdt);
+  xaet = cos(az)*ce;
+  yaet = sin(az)*ce;
+  zaet = cos(zdt);
+
+  /*  cartesian az,zd to cartesian -ha,dec */
+  xmhda = sphi*xaet+cphi*zaet;
+  ymhda = yaet;
+  zmhda = -cphi*xaet+sphi*zaet;
+
+  /*  diurnal aberration */
+  diurab = -aoprms[3];
+  f = (1.0-diurab*ymhda);
+  v[0] = f*xmhda;
+  v[1] = f*(ymhda+diurab);
+  v[2] = f*zmhda;
+
+  /*  to spherical -ha,dec */
+  palDcc2s(v,&hma,dap);
+
+  /*  Right Ascension */
+  *rap = palDranrm(st+hma);
+
+}
Index: branches/FACT++_part_filenames/pal/palObs.c
===================================================================
--- branches/FACT++_part_filenames/pal/palObs.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palObs.c	(revision 18732)
@@ -0,0 +1,928 @@
+/*
+*+
+*  Name:
+*     palObs
+
+*  Purpose:
+*     Parameters of selected ground-based observing stations
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     int palObs( size_t n, const char * c,
+*                 char * ident, size_t identlen,
+*                 char * name, size_t namelen,
+*                 double * w, double * p, double * h );
+
+*  Arguments:
+*     n = size_t (Given)
+*         Number specifying the observing station. If 0
+*         the identifier in "c" is used to determine the
+*         observing station to use.
+*     c = const char * (Given)
+*         Identifier specifying the observing station for
+*         which the parameters should be returned. Only used
+*         if n is 0. Can be NULL for n>0. Case insensitive.
+*     ident = char * (Returned)
+*         Identifier of the observing station selected. Will be
+*         identical to "c" if n==0. Unchanged if "n" or "c"
+*         do not match an observing station. Should be at least
+*         11 characters (including the trailing nul).
+*     identlen = size_t (Given)
+*         Size of the buffer "ident" including trailing nul.
+*     name = char * (Returned)
+*         Full name of the specified observing station. Contains "?"
+*         if "n" or "c" did not correspond to a valid station. Should
+*         be at least 41 characters (including the trailing nul).
+*     w = double * (Returned)
+*         Longitude (radians, West +ve). Unchanged if observing
+*         station could not be identified.
+*     p = double * (Returned)
+*         Geodetic latitude (radians, North +ve). Unchanged if observing
+*         station could not be identified.
+*     h = double * (Returned)
+*         Height above sea level (metres). Unchanged if observing
+*         station could not be identified.
+
+*  Returned Value:
+*     palObs = int
+*         0 if an observing station was returned. -1 if no match was
+*         found.
+
+*  Description:
+*     Station numbers, identifiers, names and other details are
+*     subject to change and should not be hardwired into
+*     application programs.
+*
+*     All characters in "c" up to the first space are
+*     checked;  thus an abbreviated ID will return the parameters
+*     for the first station in the list which matches the
+*     abbreviation supplied, and no station in the list will ever
+*     contain embedded spaces. "c" must not have leading spaces.
+*
+*     IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION.  The
+*     longitude returned by palOBS (and SLA_OBS) is west-positive in accordance
+*     with astronomical usage.  However, this sign convention is
+*     left-handed and is the opposite of the one used by geographers;
+*     elsewhere in PAL the preferable east-positive convention is
+*     used.  In particular, note that for use in palAop, palAoppa
+*     and palOap the sign of the longitude must be reversed.
+*
+*     Users are urged to inform the author of any improvements
+*     they would like to see made.  For example:
+*
+*         typographical corrections
+*         more accurate parameters
+*         better station identifiers or names
+*         additional stations
+
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Differs from the SLA interface in that the output short name
+*       is not the same variable as the input short name. This simplifies
+*       consting. Additionally the size of the output buffers are now
+*       specified in the API and a status integer is returned.
+
+*  History:
+*     2012-03-06 (TIMJ):
+*        Initial version containing entries from SLA/F as of 15 March 2002
+*        with a 2008 tweak to the JCMT GPS position.
+*        Adapted with permission from the Fortran SLALIB library.
+*     2014-04-08 (TIMJ):
+*        Add APEX and NANTEN2
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2002 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     Copyright (C) 2014 Cornell University.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_BSD_STRING_H
+#include <bsd/string.h>
+#endif
+
+#include <string.h>
+
+/* We prefer to use the starutil package. */
+#if HAVE_STAR_UTIL_H
+#include "star/util.h"
+#else
+/* This version is just a straight copy without putting ellipsis on the end. */
+static void star__strellcpy( char * dest, const char * src, size_t size ) {
+# if HAVE_STRLCPY
+  strlcpy( dest, src, size );
+# else
+  strncpy( dest, src, size );
+  dest[size-1] = '\0';
+# endif
+}
+
+#define star_strellcpy(dest, src, size) star__strellcpy(dest, src, size)
+#endif
+
+#include "pal.h"
+#include "palmac.h"
+
+/* Helper macros to convert degrees to radians in longitude and latitude */
+#define WEST(ID,IAM,AS) PAL__DAS2R*((60.0*(60.0*(double)ID+(double)IAM))+(double)AS)
+#define NORTH(ID,IAM,AS) WEST(ID,IAM,AS)
+#define EAST(ID,IAM,AS) -1.0*WEST(ID,IAM,AS)
+#define SOUTH(ID,IAM,AS) -1.0*WEST(ID,IAM,AS)
+
+struct telData {
+  double w;
+  double p;
+  double h;
+  char shortname[11];
+  char longname[41];
+};
+
+
+int palObs( size_t n, const char * c,
+            char * ident, size_t identlen,
+            char * name, size_t namelen,
+            double * w, double * p, double * h ) {
+  const struct telData telData[] = {
+    /* AAT (Observer's Guide)                                            AAT */
+    {
+      EAST(149,3,57.91),
+      SOUTH(31,16,37.34),
+      1164E0,
+      "AAT",
+      "Anglo-Australian 3.9m Telescope"
+    },
+    /* WHT (Gemini, April 1987)                                       LPO4.2 */
+    {
+      WEST(17,52,53.9),
+      NORTH(28,45,38.1),
+      2332E0,
+      "LPO4.2",
+      "William Herschel 4.2m Telescope"
+    },
+    /* INT (Gemini, April 1987)                                       LPO2.5 */
+    {
+      WEST(17,52,39.5),
+      NORTH(28,45,43.2),
+      2336E0,
+      "LPO2.5",
+      "Isaac Newton 2.5m Telescope"
+    },
+    /* JKT (Gemini, April 1987)                                         LPO1 */
+    {
+      WEST(17,52,41.2),
+      NORTH(28,45,39.9),
+      2364E0,
+      "LPO1",
+      "Jacobus Kapteyn 1m Telescope"
+    },
+    /* Lick 120" (S.L.Allen, private communication, 2002)            LICK120 */
+    {
+      WEST(121,38,13.689),
+      NORTH(37,20,34.931),
+      1286E0,
+      "LICK120",
+      "Lick 120 inch"
+    },
+    /* MMT 6.5m conversion (MMT Observatory website)                     MMT */
+    {
+      WEST(110,53,4.4),
+      NORTH(31,41,19.6),
+      2608E0,
+      "MMT",
+      "MMT 6.5m, Mt Hopkins"
+    },
+    /* Victoria B.C. 1.85m (1984 Almanac)                              DAO72 */
+    {
+      WEST(123,25,1.18),
+      NORTH(48,31,11.9),
+      238E0,
+      "DAO72",
+      "DAO Victoria BC 1.85 metre"
+    },
+    /* Las Campanas (1983 Almanac)                                    DUPONT */
+    {
+      WEST(70,42,9.),
+      SOUTH(29,0,11.),
+      2280E0,
+      "DUPONT",
+      "Du Pont 2.5m Telescope, Las Campanas"
+    },
+    /* Mt Hopkins 1.5m (1983 Almanac)                               MTHOP1.5 */
+    {
+      WEST(110,52,39.00),
+      NORTH(31,40,51.4),
+      2344E0,
+      "MTHOP1.5",
+      "Mt Hopkins 1.5 metre"
+    },
+    /* Mt Stromlo 74" (1983 Almanac)                               STROMLO74 */
+    {
+      EAST(149,0,27.59),
+      SOUTH(35,19,14.3),
+      767E0,
+      "STROMLO74",
+      "Mount Stromlo 74 inch"
+    },
+    /* ANU 2.3m, SSO (Gary Hovey)                                     ANU2.3 */
+    {
+      EAST(149,3,40.3),
+      SOUTH(31,16,24.1),
+      1149E0,
+      "ANU2.3",
+      "Siding Spring 2.3 metre"
+    },
+    /* Greenbank 140' (1983 Almanac)                                 GBVA140 */
+    {
+      WEST(79,50,9.61),
+      NORTH(38,26,15.4),
+      881E0,
+      "GBVA140",
+      "Greenbank 140 foot"
+    },
+    /* Cerro Tololo 4m (1982 Almanac)                               TOLOLO4M */
+    {
+      WEST(70,48,53.6),
+      SOUTH(30,9,57.8),
+      2235E0,
+      "TOLOLO4M",
+      "Cerro Tololo 4 metre"
+    },
+    /* Cerro Tololo 1.5m (1982 Almanac)                           TOLOLO1.5M */
+    {
+      WEST(70,48,54.5),
+      SOUTH(30,9,56.3),
+      2225E0,
+      "TOLOLO1.5M",
+      "Cerro Tololo 1.5 metre"
+    },
+    /* Tidbinbilla 64m (1982 Almanac)                              TIDBINBLA */
+    {
+      EAST(148,58,48.20),
+      SOUTH(35,24,14.3),
+      670E0,
+      "TIDBINBLA",
+      "Tidbinbilla 64 metre"
+    },
+    /* Bloemfontein 1.52m (1981 Almanac)                              BLOEMF */
+    {
+      EAST(26,24,18.),
+      SOUTH(29,2,18.),
+      1387E0,
+      "BLOEMF",
+      "Bloemfontein 1.52 metre"
+    },
+    /* Bosque Alegre 1.54m (1981 Almanac)                         BOSQALEGRE */
+    {
+      WEST(64,32,48.0),
+      SOUTH(31,35,53.),
+      1250E0,
+      "BOSQALEGRE",
+      "Bosque Alegre 1.54 metre"
+    },
+    /* USNO 61" astrographic reflector, Flagstaff (1981 Almanac)   FLAGSTF61 */
+    {
+      WEST(111,44,23.6),
+      NORTH(35,11,2.5),
+      2316E0,
+      "FLAGSTF61",
+      "USNO 61 inch astrograph, Flagstaff"
+    },
+    /* Lowell 72" (1981 Almanac)                                    LOWELL72 */
+    {
+      WEST(111,32,9.3),
+      NORTH(35,5,48.6),
+      2198E0,
+      "LOWELL72",
+      "Perkins 72 inch, Lowell"
+    },
+    /* Harvard 1.55m (1981 Almanac)                                  HARVARD */
+    {
+      WEST(71,33,29.32),
+      NORTH(42,30,19.0),
+      185E0,
+      "HARVARD",
+      "Harvard College Observatory 1.55m"
+    },
+    /* Okayama 1.88m (1981 Almanac)                                  OKAYAMA */
+    {
+      EAST(133,35,47.29),
+      NORTH(34,34,26.1),
+      372E0,
+      "OKAYAMA",
+      "Okayama 1.88 metre"
+    },
+    /* Kitt Peak Mayall 4m (1981 Almanac)                            KPNO158 */
+    {
+      WEST(111,35,57.61),
+      NORTH(31,57,50.3),
+      2120E0,
+      "KPNO158",
+      "Kitt Peak 158 inch"
+    },
+    /* Kitt Peak 90 inch (1981 Almanac)                               KPNO90 */
+    {
+      WEST(111,35,58.24),
+      NORTH(31,57,46.9),
+      2071E0,
+      "KPNO90",
+      "Kitt Peak 90 inch"
+    },
+    /* Kitt Peak 84 inch (1981 Almanac)                               KPNO84 */
+    {
+      WEST(111,35,51.56),
+      NORTH(31,57,29.2),
+      2096E0,
+      "KPNO84",
+      "Kitt Peak 84 inch"
+    },
+    /* Kitt Peak 36 foot (1981 Almanac)                             KPNO36FT */
+    {
+      WEST(111,36,51.12),
+      NORTH(31,57,12.1),
+      1939E0,
+      "KPNO36FT",
+      "Kitt Peak 36 foot"
+    },
+    /* Kottamia 74" (1981 Almanac)                                  KOTTAMIA */
+    {
+      EAST(31,49,30.),
+      NORTH(29,55,54.),
+      476E0,
+      "KOTTAMIA",
+      "Kottamia 74 inch"
+    },
+    /* La Silla 3.6m (1981 Almanac)                                   ESO3.6 */
+    {
+      WEST(70,43,36.),
+      SOUTH(29,15,36.),
+      2428E0,
+      "ESO3.6",
+      "ESO 3.6 metre"
+    },
+    /* Mauna Kea 88 inch                                            MAUNAK88 */
+    /* (IfA website, Richard Wainscoat) */
+    {
+      WEST(155,28,9.96),
+      NORTH(19,49,22.77),
+      4213.6E0,
+      "MAUNAK88",
+      "Mauna Kea 88 inch"
+    },
+    /* UKIRT (IfA website, Richard Wainscoat)                          UKIRT */
+    {
+      WEST(155,28,13.18),
+      NORTH(19,49,20.75),
+      4198.5E0,
+      "UKIRT",
+      "UK Infra Red Telescope"
+    },
+    /* Quebec 1.6m (1981 Almanac)                                  QUEBEC1.6 */
+    {
+      WEST(71,9,9.7),
+      NORTH(45,27,20.6),
+      1114E0,
+      "QUEBEC1.6",
+      "Quebec 1.6 metre"
+    },
+    /* Mt Ekar 1.82m (1981 Almanac)                                   MTEKAR */
+    {
+      EAST(11,34,15.),
+      NORTH(45,50,48.),
+      1365E0,
+      "MTEKAR",
+      "Mt Ekar 1.82 metre"
+    },
+    /* Mt Lemmon 60" (1981 Almanac)                               MTLEMMON60 */
+    {
+      WEST(110,42,16.9),
+      NORTH(32,26,33.9),
+      2790E0,
+      "MTLEMMON60",
+      "Mt Lemmon 60 inch"
+    },
+    /* Mt Locke 2.7m (1981 Almanac)                               MCDONLD2.7 */
+    {
+      WEST(104,1,17.60),
+      NORTH(30,40,17.7),
+      2075E0,
+      "MCDONLD2.7",
+      "McDonald 2.7 metre"
+    },
+    /* Mt Locke 2.1m (1981 Almanac)                               MCDONLD2.1 */
+    {
+      WEST(104,1,20.10),
+      NORTH(30,40,17.7),
+      2075E0,
+      "MCDONLD2.1",
+      "McDonald 2.1 metre"
+    },
+    /* Palomar 200" (1981 Almanac)                                PALOMAR200 */
+    {
+      WEST(116,51,50.),
+      NORTH(33,21,22.),
+      1706E0,
+      "PALOMAR200",
+      "Palomar 200 inch"
+    },
+    /* Palomar 60" (1981 Almanac)                                  PALOMAR60 */
+    {
+      WEST(116,51,31.),
+      NORTH(33,20,56.),
+      1706E0,
+      "PALOMAR60",
+      "Palomar 60 inch"
+    },
+    /* David Dunlap 74" (1981 Almanac)                              DUNLAP74 */
+    {
+      WEST(79,25,20.),
+      NORTH(43,51,46.),
+      244E0,
+      "DUNLAP74",
+      "David Dunlap 74 inch"
+    },
+    /* Haute Provence 1.93m (1981 Almanac)                         HPROV1.93 */
+    {
+      EAST(5,42,46.75),
+      NORTH(43,55,53.3),
+      665E0,
+      "HPROV1.93",
+      "Haute Provence 1.93 metre"
+    },
+    /* Haute Provence 1.52m (1981 Almanac)                         HPROV1.52 */
+    {
+      EAST(5,42,43.82),
+      NORTH(43,56,0.2),
+      667E0,
+      "HPROV1.52",
+      "Haute Provence 1.52 metre"
+    },
+    /* San Pedro Martir 83" (1981 Almanac)                           SANPM83 */
+    {
+      WEST(115,27,47.),
+      NORTH(31,2,38.),
+      2830E0,
+      "SANPM83",
+      "San Pedro Martir 83 inch"
+    },
+    /* Sutherland 74" (1981 Almanac)                                  SAAO74 */
+    {
+      EAST(20,48,44.3),
+      SOUTH(32,22,43.4),
+      1771E0,
+      "SAAO74",
+      "Sutherland 74 inch"
+    },
+    /* Tautenburg 2m (1981 Almanac)                                  TAUTNBG */
+    {
+      EAST(11,42,45.),
+      NORTH(50,58,51.),
+      331E0,
+      "TAUTNBG",
+      "Tautenburg 2 metre"
+    },
+    /* Catalina 61" (1981 Almanac)                                CATALINA61 */
+    {
+      WEST(110,43,55.1),
+      NORTH(32,25,0.7),
+      2510E0,
+      "CATALINA61",
+      "Catalina 61 inch"
+    },
+    /* Steward 90" (1981 Almanac)                                  STEWARD90 */
+    {
+      WEST(111,35,58.24),
+      NORTH(31,57,46.9),
+      2071E0,
+      "STEWARD90",
+      "Steward 90 inch"
+    },
+    /* Russian 6m (1981 Almanac)                                       USSR6 */
+    {
+      EAST(41,26,30.0),
+      NORTH(43,39,12.),
+      2100E0,
+      "USSR6",
+      "USSR 6 metre"
+    },
+    /* Arecibo 1000' (1981 Almanac)                                  ARECIBO */
+    {
+      WEST(66,45,11.1),
+      NORTH(18,20,36.6),
+      496E0,
+      "ARECIBO",
+      "Arecibo 1000 foot"
+    },
+    /* Cambridge 5km (1981 Almanac)                                  CAMB5KM */
+    {
+      EAST(0,2,37.23),
+      NORTH(52,10,12.2),
+      17E0,
+      "CAMB5KM",
+      "Cambridge 5km"
+    },
+    /* Cambridge 1 mile (1981 Almanac)                             CAMB1MILE */
+    {
+      EAST(0,2,21.64),
+      NORTH(52,9,47.3),
+      17E0,
+      "CAMB1MILE",
+      "Cambridge 1 mile"
+    },
+    /* Bonn 100m (1981 Almanac)                                   EFFELSBERG */
+    {
+      EAST(6,53,1.5),
+      NORTH(50,31,28.6),
+      366E0,
+      "EFFELSBERG",
+      "Effelsberg 100 metre"
+    },
+    /* Greenbank 300' (1981 Almanac)                        GBVA300 (R.I.P.) */
+    {
+      WEST(79,50,56.36),
+      NORTH(38,25,46.3),
+      894E0,
+      "(R.I.P.)",
+      "Greenbank 300 foot"
+    },
+    /* Jodrell Bank Mk 1 (1981 Almanac)                             JODRELL1 */
+    {
+      WEST(2,18,25.),
+      NORTH(53,14,10.5),
+      78E0,
+      "JODRELL1",
+      "Jodrell Bank 250 foot"
+    },
+    /* Australia Telescope Parkes Observatory                         PARKES */
+    /* (Peter te Lintel Hekkert) */
+    {
+      EAST(148,15,44.3591),
+      SOUTH(32,59,59.8657),
+      391.79E0,
+      "PARKES",
+      "Parkes 64 metre"
+    },
+    /* VLA (1981 Almanac)                                                VLA */
+    {
+      WEST(107,37,3.82),
+      NORTH(34,4,43.5),
+      2124E0,
+      "VLA",
+      "Very Large Array"
+    },
+    /* Sugar Grove 150' (1981 Almanac)                            SUGARGROVE */
+    {
+      WEST(79,16,23.),
+      NORTH(38,31,14.),
+      705E0,
+      "SUGARGROVE",
+      "Sugar Grove 150 foot"
+    },
+    /* Russian 600' (1981 Almanac)                                   USSR600 */
+    {
+      EAST(41,35,25.5),
+      NORTH(43,49,32.),
+      973E0,
+      "USSR600",
+      "USSR 600 foot"
+    },
+    /* Nobeyama 45 metre mm dish (based on 1981 Almanac entry)      NOBEYAMA */
+    {
+      EAST(138,29,12.),
+      NORTH(35,56,19.),
+      1350E0,
+      "NOBEYAMA",
+      "Nobeyama 45 metre"
+    },
+    /* James Clerk Maxwell 15 metre mm telescope, Mauna Kea             JCMT */
+    /* From GPS measurements on 11Apr2007 for eSMA setup (R. Tilanus) */
+    {
+      WEST(155,28,37.30),
+      NORTH(19,49,22.22),
+      4124.75E0,
+      "JCMT",
+      "JCMT 15 metre"
+    },
+    /* ESO 3.5 metre NTT, La Silla (K.Wirenstrand)                    ESONTT */
+    {
+      WEST(70,43,7.),
+      SOUTH(29,15,30.),
+      2377E0,
+      "ESONTT",
+      "ESO 3.5 metre NTT"
+    },
+    /* St Andrews University Observatory (1982 Almanac)           ST.ANDREWS */
+    {
+      WEST(2,48,52.5),
+      NORTH(56,20,12.),
+      30E0,
+      "ST.ANDREWS",
+      "St Andrews"
+    },
+    /* Apache Point 3.5 metre (R.Owen)                                APO3.5 */
+    {
+      WEST(105,49,11.56),
+      NORTH(32,46,48.96),
+      2809E0,
+      "APO3.5",
+      "Apache Point 3.5m"
+    },
+    /* W.M.Keck Observatory, Telescope 1                               KECK1 */
+    /* (William Lupton) */
+    {
+      WEST(155,28,28.99),
+      NORTH(19,49,33.41),
+      4160E0,
+      "KECK1",
+      "Keck 10m Telescope #1"
+    },
+    /* Tautenberg Schmidt (1983 Almanac)                            TAUTSCHM */
+    {
+      EAST(11,42,45.0),
+      NORTH(50,58,51.0),
+      331E0,
+      "TAUTSCHM",
+      "Tautenberg 1.34 metre Schmidt"
+    },
+    /* Palomar Schmidt (1981 Almanac)                              PALOMAR48 */
+    {
+      WEST(116,51,32.0),
+      NORTH(33,21,26.0),
+      1706E0,
+      "PALOMAR48",
+      "Palomar 48-inch Schmidt"
+    },
+    /* UK Schmidt, Siding Spring (1983 Almanac)                         UKST */
+    {
+      EAST(149,4,12.8),
+      SOUTH(31,16,27.8),
+      1145E0,
+      "UKST",
+      "UK 1.2 metre Schmidt, Siding Spring"
+    },
+    /* Kiso Schmidt, Japan (1981 Almanac)                               KISO */
+    {
+      EAST(137,37,42.2),
+      NORTH(35,47,38.7),
+      1130E0,
+      "KISO",
+      "Kiso 1.05 metre Schmidt, Japan"
+    },
+    /* ESO Schmidt, La Silla (1981 Almanac)                          ESOSCHM */
+    {
+      WEST(70,43,46.5),
+      SOUTH(29,15,25.8),
+      2347E0,
+      "ESOSCHM",
+      "ESO 1 metre Schmidt, La Silla"
+    },
+    /* Australia Telescope Compact Array                                ATCA */
+    /* (WGS84 coordinates of Station 35, Mark Calabretta) */
+    {
+      EAST(149,33,0.500),
+      SOUTH(30,18,46.385),
+      236.9E0,
+      "ATCA",
+      "Australia Telescope Compact Array"
+    },
+    /* Australia Telescope Mopra Observatory                           MOPRA */
+    /* (Peter te Lintel Hekkert) */
+    {
+      EAST(149,5,58.732),
+      SOUTH(31,16,4.451),
+      850E0,
+      "MOPRA",
+      "ATNF Mopra Observatory"
+    },
+    /* Subaru telescope, Mauna Kea                                     SUBARU */
+    /* (IfA website, Richard Wainscoat) */
+    {
+      WEST(155,28,33.67),
+      NORTH(19,49,31.81),
+      4163E0,
+      "SUBARU",
+      "Subaru 8m telescope"
+    },
+    /* Canada-France-Hawaii Telescope, Mauna Kea                         CFHT */
+    /* (IfA website, Richard Wainscoat) */
+    {
+      WEST(155,28,7.95),
+      NORTH(19,49,30.91),
+      4204.1E0,
+      "CFHT",
+      "Canada-France-Hawaii 3.6m Telescope"
+    },
+    /* W.M.Keck Observatory, Telescope 2                                KECK2 */
+    /* (William Lupton) */
+    {
+      WEST(155,28,27.24),
+      NORTH(19,49,35.62),
+      4159.6E0,
+      "KECK2",
+      "Keck 10m Telescope #2"
+    },
+    /* Gemini North, Mauna Kea                                        GEMININ */
+    /* (IfA website, Richard Wainscoat) */
+    {
+      WEST(155,28,8.57),
+      NORTH(19,49,25.69),
+      4213.4E0,
+      "GEMININ",
+      "Gemini North 8-m telescope"
+    },
+    /* Five College Radio Astronomy Observatory                        FCRAO */
+    /* (Tim Jenness) */
+    {
+      WEST(72,20,42.0),
+      NORTH(42,23,30.0),
+      314E0,
+      "FCRAO",
+      "Five College Radio Astronomy Obs"
+    },
+    /* NASA Infra Red Telescope Facility                                IRTF */
+    /* (IfA website, Richard Wainscoat) */
+    {
+      WEST(155,28,19.20),
+      NORTH(19,49,34.39),
+      4168.1E0,
+      "IRTF",
+      "NASA IR Telescope Facility, Mauna Kea"
+    },
+    /* Caltech Submillimeter Observatory                                 CSO */
+    /* (IfA website, Richard Wainscoat; height estimated) */
+    {
+      WEST(155,28,31.79),
+      NORTH(19,49,20.78),
+      4080E0,
+      "CSO",
+      "Caltech Sub-mm Observatory, Mauna Kea"
+    },
+    /* ESO VLT, UT1                                                       VLT1 */
+    /* (ESO website, VLT Whitebook Chapter 2) */
+    {
+      WEST(70,24,11.642),
+      SOUTH(24,37,33.117),
+      2635.43,
+      "VLT1",
+      "ESO VLT, Paranal, Chile: UT1"
+    },
+    /* ESO VLT, UT2                                                       VLT2 */
+    /* (ESO website, VLT Whitebook Chapter 2) */
+    {
+      WEST(70,24,10.855),
+      SOUTH(24,37,31.465),
+      2635.43,
+      "VLT2",
+      "ESO VLT, Paranal, Chile: UT2"
+    },
+    /* ESO VLT, UT3                                                       VLT3 */
+    /* (ESO website, VLT Whitebook Chapter 2) */
+    {
+      WEST(70,24,9.896),
+      SOUTH(24,37,30.300),
+      2635.43,
+      "VLT3",
+      "ESO VLT, Paranal, Chile: UT3"
+    },
+    /* ESO VLT, UT4                                                       VLT4 */
+    /* (ESO website, VLT Whitebook Chapter 2) */
+    {
+      WEST(70,24,8.000),
+      SOUTH(24,37,31.000),
+      2635.43,
+      "VLT4",
+      "ESO VLT, Paranal, Chile: UT4"
+    },
+    /* Gemini South, Cerro Pachon                                     GEMINIS */
+    /* (GPS readings by Patrick Wallace) */
+    {
+      WEST(70,44,11.5),
+      SOUTH(30,14,26.7),
+      2738E0,
+      "GEMINIS",
+      "Gemini South 8-m telescope"
+    },
+    /* Cologne Observatory for Submillimeter Astronomy (KOSMA)        KOSMA3M */
+    /* (Holger Jakob) */
+    {
+      EAST(7,47,3.48),
+      NORTH(45,58,59.772),
+      3141E0,
+      "KOSMA3M",
+      "KOSMA 3m telescope, Gornergrat"
+    },
+    /* Magellan 1, 6.5m telescope at Las Campanas, Chile            MAGELLAN1 */
+    /* (Skip Schaller) */
+    {
+      WEST(70,41,31.9),
+      SOUTH(29,0,51.7),
+      2408E0,
+      "MAGELLAN1",
+      "Magellan 1, 6.5m, Las Campanas"
+    },
+    /* Magellan 2, 6.5m telescope at Las Campanas, Chile            MAGELLAN2 */
+    /* (Skip Schaller) */
+    {
+      WEST(70,41,33.5),
+      SOUTH(29,0,50.3),
+      2408E0,
+      "MAGELLAN2",
+      "Magellan 2, 6.5m, Las Campanas"
+    },
+    /* APEX - Atacama Pathfinder EXperiment, Llano de Chajnantor    APEX */
+    /* (APEX web site) */
+    {
+      WEST(67,45,33.0),
+      SOUTH(23,0,20.8),
+      5105E0,
+      "APEX",
+      "APEX 12m telescope, Llano de Chajnantor"
+    },
+    /* NANTEN2 Submillimeter Observatory, 4m telescope Atacame desert NANTEN2 */
+    /* (NANTEN2 web site) */
+    {
+      WEST(67,42,8.0),
+      SOUTH(22,57,47.0),
+      4865E0,
+      "NANTEN2",
+      "NANTEN2 4m telescope, Pampa la Bola"
+    }
+  };
+
+  int retval = -1;    /* Return status. 0 if found. -1 if no match */
+
+  /* Work out the number of telescopes */
+  const size_t NTEL = sizeof(telData) / sizeof(struct telData);
+
+  /* Prefill the return buffer in a pessimistic manner */
+  star_strellcpy( name, "?", namelen );
+
+  if (n > 0) {
+    if (n <= NTEL) {
+      /* Index into telData with correction for zero-based indexing */
+      struct telData thistel;
+      thistel = telData[n-1];
+      *w = thistel.w;
+      *p = thistel.p;
+      *h = thistel.h;
+      star_strellcpy( ident, thistel.shortname, identlen );
+      star_strellcpy( name, thistel.longname, namelen );
+      retval = 0;
+    }
+
+  } else {
+    /* Searching */
+    size_t i;
+    for (i=0; i<NTEL; i++) {
+      struct telData thistel = telData[i];
+      if (strcasecmp( c, thistel.shortname) == 0) {
+        /* a match */
+        *w = thistel.w;
+        *p = thistel.p;
+        *h = thistel.h;
+        star_strellcpy( ident, thistel.shortname, identlen );
+        star_strellcpy( name, thistel.longname, namelen );
+        retval = 0;
+        break;
+      }
+    }
+
+  }
+
+  return retval;
+
+}
Index: branches/FACT++_part_filenames/pal/palOne2One.c
===================================================================
--- branches/FACT++_part_filenames/pal/palOne2One.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palOne2One.c	(revision 18732)
@@ -0,0 +1,1482 @@
+/*
+*+
+*  Name:
+*     palOne2One
+
+*  Purpose:
+*     File containing simple PAL wrappers for SLA routines that are identical in SOFA
+
+*  Invocation:
+*     Matches SLA API
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Description:
+*     Some SOFA/ERFA routines are identical to their SLA counterparts. PAL provides
+*     direct counterparts to these although it is generally a better idea to
+*     use the SOFA/ERFA routine directly in new code.
+*
+*     The PAL routines with direct equivalents in SOFA/ERFA are:
+*     - palCldj
+*     - palDbear
+*     - palDaf2r
+*     - palDav2m
+*     - palDcc2s
+*     - palDcs2c
+*     - palDd2tf
+*     - palDimxv
+*     - palDm2av
+*     - palDjcl
+*     - palDmxm
+*     - palDmxv
+*     - palDpav
+*     - palDr2af
+*     - palDr2tf
+*     - palDranrm
+*     - palDsep
+*     - palDsepv
+*     - palDtf2d
+*     - palDtf2r
+*     - palDvdv
+*     - palDvn
+*     - palDvxv
+*     - palEpb
+*     - palEpb2d
+*     - palEpj
+*     - palEpj2d
+*     - palEqeqx
+*     - palFk5hz
+*     - palGmst
+*     - palGmsta
+*     - palHfk5z
+*     - palRefcoq
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     DSB: David S Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Do not call these functions from other PAL functions. Always use
+*       the SOFA/ERFA routines directly in new code.
+*     - These are implemented as real functions rather than C preprocessor
+*       macros so there may be a performance penalty in using the PAL
+*       version instead of the SOFA/ERFA version.
+*     - Routines that take MJDs have SOFA/ERFA equivalents that have an explicit
+*       MJD offset included.
+*     - palEqeqx, palGmst and palGmsta use the IAU 2006 precession model.
+
+*  History:
+*     2012-02-10 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     2012-03-23 (TIMJ):
+*        Update prologue.
+*     2012-05-09 (DSBJ):
+*        Move palDrange into a separate file.
+*     2014-07-15 (TIMJ):
+*        SOFA now has palRefcoq equivalent.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2014 Tim Jenness
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+/*
+*+
+*  Name:
+*     palCldj
+
+*  Purpose:
+*     Gregorian Calendar to Modified Julian Date
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palCldj( int iy, int im, int id, double *djm, int *j );
+
+*  Arguments:
+*     iy = int (Given)
+*        Year in Gregorian calendar
+*     im = int (Given)
+*        Month in Gregorian calendar
+*     id = int (Given)
+*        Day in Gregorian calendar
+*     djm = double * (Returned)
+*        Modified Julian Date (JD-2400000.5) for 0 hrs
+*     j = int * (Returned)
+*        status: 0 = OK, 1 = bad year (MJD not computed),
+*        2 = bad month (MJD not computed), 3 = bad day (MJD computed).
+
+*  Description:
+*     Gregorian calendar to Modified Julian Date.
+
+*  Notes:
+*     - Uses eraCal2jd(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palCldj ( int iy, int im, int id, double *djm, int *j ) {
+  double djm0;
+  *j = eraCal2jd( iy, im, id, &djm0, djm );
+}
+
+/*
+*+
+*  Name:
+*     palDbear
+
+*  Purpose:
+*     Bearing (position angle) of one point on a sphere relative to another
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     pa = palDbear( double a1, double b1, double a2, double b2 );
+
+*  Arguments:
+*     a1 = double (Given)
+*        Longitude of point A (e.g. RA) in radians.
+*     a2 = double (Given)
+*        Latitude of point A (e.g. Dec) in radians.
+*     b1 = double (Given)
+*        Longitude of point B in radians.
+*     b2 = double (Given)
+*        Latitude of point B in radians.
+
+*  Returned Value:
+*     The result is the bearing (position angle), in radians, of point
+*     A2,B2 as seen from point A1,B1.  It is in the range +/- pi.  If
+*     A2,B2 is due east of A1,B1 the bearing is +pi/2.  Zero is returned
+*     if the two points are coincident.
+
+*  Description:
+*     Bearing (position angle) of one point in a sphere relative to another.
+
+*  Notes:
+*     - Uses eraPas(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDbear ( double a1, double b1, double a2, double b2 ) {
+  return eraPas( a1, b1, a2, b2 );
+}
+
+/*
+*+
+*  Name:
+*     palDaf2r
+
+*  Purpose:
+*     Convert degrees, arcminutes, arcseconds to radians
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDaf2r( int ideg, int iamin, double asec, double *rad, int *j );
+
+*  Arguments:
+*     ideg = int (Given)
+*        Degrees.
+*     iamin = int (Given)
+*        Arcminutes.
+*     iasec = double (Given)
+*        Arcseconds.
+*     rad = double * (Returned)
+*        Angle in radians.
+*     j = int * (Returned)
+*        Status: 0 = OK, 1 = "ideg" out of range 0-359,
+*                2 = "iamin" outside of range 0-59,
+*                2 = "asec" outside range 0-59.99999
+
+*  Description:
+*     Convert degrees, arcminutes, arcseconds to radians.
+
+*  Notes:
+*     - Uses eraAf2a(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Arguments differ slightly. Assumes that the sign is always positive
+   and dealt with externally. */
+void palDaf2r ( int ideg, int iamin, double asec, double *rad, int *j ) {
+  *j = eraAf2a( ' ', ideg, iamin, asec, rad );
+}
+
+/*
+*+
+*  Name:
+*     palDav2m
+
+*  Purpose:
+*     Form the rotation matrix corresponding to a given axial vector.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDav2m( double axvec[3], double rmat[3][3] );
+
+*  Arguments:
+*     axvec = double [3] (Given)
+*       Axial vector (radians)
+*     rmat = double [3][3] (Returned)
+*       Rotation matrix.
+
+*  Description:
+*     A rotation matrix describes a rotation about some arbitrary axis,
+*     called the Euler axis.  The "axial vector" supplied to this routine
+*     has the same direction as the Euler axis, and its magnitude is the
+*     amount of rotation in radians.
+
+*  Notes:
+*     - Uses eraRv2m(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDav2m ( double axvec[3], double rmat[3][3] ) {
+  eraRv2m( axvec, rmat );
+}
+
+/*
+*+
+*  Name:
+*     palDcc2s
+
+*  Purpose:
+*     Cartesian to spherical coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDcc2s( double v[3], double *a, double *b );
+
+*  Arguments:
+*     v = double [3] (Given)
+*        x, y, z vector.
+*     a = double * (Returned)
+*        Spherical coordinate (radians)
+*     b = double * (Returned)
+*        Spherical coordinate (radians)
+
+*  Description:
+*     The spherical coordinates are longitude (+ve anticlockwise looking
+*     from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*     are right handed, with the x axis at zero longitude and latitude, and
+*     the z axis at the +ve latitude pole.
+
+*  Notes:
+*     - Uses eraC2s(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDcc2s ( double v[3], double *a, double *b ) {
+  eraC2s( v, a, b );
+}
+
+/*
+*+
+*  Name:
+*     palDcs2c
+
+*  Purpose:
+*     Spherical coordinates to direction cosines
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDcs2c( double a, double b, double v[3] );
+
+*  Arguments:
+*     a = double (Given)
+*        Spherical coordinate in radians (ra, long etc).
+*     b = double (Given)
+*        Spherical coordinate in radians (dec, lat etc).
+*     v = double [3] (Returned)
+*        x, y, z vector
+
+*  Description:
+*     The spherical coordinates are longitude (+ve anticlockwise looking
+*     from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*     are right handed, with the x axis at zero longitude and latitude, and
+*     the z axis at the +ve latitude pole.
+
+*  Notes:
+*     - Uses eraS2c(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDcs2c ( double a, double b, double v[3] ) {
+  eraS2c( a, b, v );
+}
+
+/*
+*+
+*  Name:
+*     palDd2tf
+
+*  Purpose:
+*     Convert an interval in days into hours, minutes, seconds
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDd2tf( int ndp, double days, char *sign, int ihmsf[4] );
+
+*  Arguments:
+*     ndp = int (Given)
+*        Number of decimal places of seconds
+*     days = double (Given)
+*        Interval in days
+*     sign = char * (Returned)
+*        '+' or '-' (single character, not string)
+*     ihmsf = int [4] (Returned)
+*        Hours, minutes, seconds, fraction
+
+*  Description:
+*     Convert and interval in days into hours, minutes, seconds.
+
+*  Notes:
+*     - Uses eraD2tf(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDd2tf ( int ndp, double days, char *sign, int ihmsf[4] ) {
+  eraD2tf( ndp, days, sign, ihmsf );
+}
+
+/*
+*+
+*  Name:
+*     palDimxv
+
+*  Purpose:
+*     Perform the 3-D backward unitary transformation
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDimxv( double dm[3][3], double va[3], double vb[3] );
+
+*  Arguments:
+*     dm = double [3][3] (Given)
+*        Matrix
+*     va = double [3] (Given)
+*        vector
+*     vb = double [3] (Returned)
+*        Result vector
+
+*  Description:
+*     Perform the 3-D backward unitary transformation.
+
+*  Notes:
+*     - Uses eraTrxp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDimxv ( double dm[3][3], double va[3], double vb[3] ) {
+  eraTrxp( dm, va, vb );
+}
+
+/*
+*+
+*  Name:
+*     palDm2av
+
+*  Purpose:
+*     From a rotation matrix, determine the corresponding axial vector
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDm2av( double rmat[3][3], double axvec[3] );
+
+*  Arguments:
+*     rmat = double [3][3] (Given)
+*        Rotation matrix
+*     axvec = double [3] (Returned)
+*        Axial vector (radians)
+
+*  Description:
+*     A rotation matrix describes a rotation about some arbitrary axis,
+*     called the Euler axis.  The "axial vector" returned by this routine
+*     has the same direction as the Euler axis, and its magnitude is the
+*     amount of rotation in radians.  (The magnitude and direction can be
+*     separated by means of the routine palDvn.)
+
+*  Notes:
+*     - Uses eraRm2v(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDm2av ( double rmat[3][3], double axvec[3] ) {
+  eraRm2v( rmat, axvec );
+}
+
+/*
+*+
+*  Name:
+*     palDjcl
+
+*  Purpose:
+*     Modified Julian Date to Gregorian year, month, day and fraction of day
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDjcl( double djm, int *iy, int *im, int *id, double *fd, int *j );
+
+*  Arguments:
+*     djm = double (Given)
+*        modified Julian Date (JD-2400000.5)
+*     iy = int * (Returned)
+*        year
+*     im = int * (Returned)
+*        month
+*     id = int * (Returned)
+*        day
+*     fd = double * (Returned)
+*        Fraction of day.
+
+*  Description:
+*     Modified Julian Date to Gregorian year, month, day and fraction of day.
+
+*  Notes:
+*     - Uses eraJd2cal(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Requires additional SLA MJD reference date */
+void palDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j ) {
+  *j = eraJd2cal( PAL__MJD0, djm, iy, im, id, fd );
+}
+
+/*
+*+
+*  Name:
+*     palDmxm
+
+*  Purpose:
+*     Product of two 3x3 matrices
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDmxm( double a[3][3], double b[3][3], double c[3][3] );
+
+*  Arguments:
+*     a = double [3][3] (Given)
+*        Matrix
+*     b = double [3][3] (Given)
+*        Matrix
+*     c = double [3][3] (Returned)
+*        Matrix result
+
+*  Description:
+*     Product of two 3x3 matrices.
+
+*  Notes:
+*     - Uses eraRxr(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDmxm ( double a[3][3], double b[3][3], double c[3][3] ) {
+  eraRxr( a, b, c );
+}
+
+/*
+*+
+*  Name:
+*     palDmxv
+
+*  Purpose:
+*     Performs the 3-D forward unitary transformation
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDmxv( double dm[3][3], double va[3], double vb[3] );
+
+*  Arguments:
+*     dm = double [3][3] (Given)
+*        matrix
+*     va = double [3] (Given)
+*        vector
+*     dp = double [3] (Returned)
+*        result vector
+
+*  Description:
+*     Performs the 3-D forward unitary transformation.
+
+*  Notes:
+*     - Uses eraRxp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDmxv ( double dm[3][3], double va[3], double vb[3] ) {
+  eraRxp( dm, va, vb );
+}
+
+/*
+*+
+*  Name:
+*     palDpav
+
+*  Purpose:
+*     Position angle of one celestial direction with respect to another
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     pa = palDpav( double v1[3], double v2[3] );
+
+*  Arguments:
+*     v1 = double [3] (Given)
+*        direction cosines of one point.
+*     v2 = double [3] (Given)
+*        direction cosines of the other point.
+
+*  Returned Value:
+*     The result is the bearing (position angle), in radians, of point
+*     V2 with respect to point V1.  It is in the range +/- pi.  The
+*     sense is such that if V2 is a small distance east of V1, the
+*     bearing is about +pi/2.  Zero is returned if the two points
+*     are coincident.
+
+*  Description:
+*     Position angle of one celestial direction with respect to another.
+
+*  Notes:
+*     - The coordinate frames correspond to RA,Dec, Long,Lat etc.
+*     - Uses eraPap(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDpav ( double v1[3], double v2[3] ) {
+  return eraPap( v1, v2 );
+}
+
+/*
+*+
+*  Name:
+*     palDr2af
+
+*  Purpose:
+*     Convert an angle in radians to degrees, arcminutes, arcseconds
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDr2af( int ndp, double angle, char *sign, int idmsf[4] );
+
+*  Arguments:
+*     ndp = int (Given)
+*        number of decimal places of arcseconds
+*     angle = double (Given)
+*        angle in radians
+*     sign = char * (Returned)
+*        '+' or '-' (single character)
+*     idmsf = int [4] (Returned)
+*        Degrees, arcminutes, arcseconds, fraction
+
+*  Description:
+*     Convert an angle in radians to degrees, arcminutes, arcseconds.
+
+*  Notes:
+*     - Uses eraA2af(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDr2af ( int ndp, double angle, char *sign, int idmsf[4] ) {
+  eraA2af( ndp, angle, sign, idmsf );
+}
+
+/*
+*+
+*  Name:
+*     palDr2tf
+
+*  Purpose:
+*     Convert an angle in radians to hours, minutes, seconds
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDr2tf ( int ndp, double angle, char *sign, int ihmsf[4] );
+
+*  Arguments:
+*     ndp = int (Given)
+*        number of decimal places of arcseconds
+*     angle = double (Given)
+*        angle in radians
+*     sign = char * (Returned)
+*        '+' or '-' (single character)
+*     idmsf = int [4] (Returned)
+*        Hours, minutes, seconds, fraction
+
+*  Description:
+*     Convert an angle in radians to hours, minutes, seconds.
+
+*  Notes:
+*     - Uses eraA2tf(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDr2tf( int ndp, double angle, char *sign, int ihmsf[4] ) {
+  eraA2tf( ndp, angle, sign, ihmsf );
+}
+
+/*
+*+
+*  Name:
+*     palDranrm
+
+*  Purpose:
+*     Normalize angle into range 0-2 pi
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     norm = palDranrm( double angle );
+
+*  Arguments:
+*     angle = double (Given)
+*        angle in radians
+
+*  Returned Value:
+*     Angle expressed in the range 0-2 pi
+
+*  Description:
+*     Normalize angle into range 0-2 pi.
+
+*  Notes:
+*     - Uses eraAnp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDranrm ( double angle ) {
+  return eraAnp( angle );
+}
+
+/*
+*+
+*  Name:
+*     palDsep
+
+*  Purpose:
+*     Angle between two points on a sphere
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     ang = palDsep( double a1, double b1, double a2, double b2 );
+
+*  Arguments:
+*     a1 = double (Given)
+*        Spherical coordinate of one point (radians)
+*     b1 = double (Given)
+*        Spherical coordinate of one point (radians)
+*     a2 = double (Given)
+*        Spherical coordinate of other point (radians)
+*     b2 = double (Given)
+*        Spherical coordinate of other point (radians)
+
+*  Returned Value:
+*     Angle, in radians, between the two points. Always positive.
+
+*  Description:
+*     Angle between two points on a sphere.
+
+*  Notes:
+*     - The spherical coordinates are [RA,Dec], [Long,Lat] etc, in radians.
+*     - Uses eraSeps(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDsep ( double a1, double b1, double a2, double b2 ) {
+  return eraSeps( a1, b1, a2, b2 );
+}
+
+/*
+*+
+*  Name:
+*     palDsepv
+
+*  Purpose:
+*     Angle between two vectors
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     ang = palDsepv( double v1[3], double v2[3] );
+
+*  Arguments:
+*     v1 = double [3] (Given)
+*        First vector
+*     v2 = double [3] (Given)
+*        Second vector
+
+*  Returned Value:
+*     Angle, in radians, between the two points. Always positive.
+
+*  Description:
+*     Angle between two vectors.
+
+*  Notes:
+*     - Uses eraSepp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDsepv ( double v1[3], double v2[3] ) {
+  return eraSepp( v1, v2 );
+}
+
+/*
+*+
+*  Name:
+*     palDtf2d
+
+*  Purpose:
+*     Convert hours, minutes, seconds to days
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDtf2d( int ihour, int imin, double sec, double *days, int *j );
+
+*  Arguments:
+*     ihour = int (Given)
+*        Hours
+*     imin = int (Given)
+*        Minutes
+*     sec = double (Given)
+*        Seconds
+*     days = double * (Returned)
+*        Interval in days
+*     j = int * (Returned)
+*        status: 0 = ok, 1 = ihour outside range 0-23,
+*        2 = imin outside range 0-59, 3 = sec outside range 0-59.999...
+
+*  Description:
+*     Convert hours, minutes, seconds to days.
+
+*  Notes:
+*     - Uses eraTf2d(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Assumes that the sign is always positive and is dealt with externally */
+void palDtf2d ( int ihour, int imin, double sec, double *days, int *j ) {
+  *j = eraTf2d( ' ', ihour, imin, sec, days );
+}
+
+/*
+*+
+*  Name:
+*     palDtf2r
+
+*  Purpose:
+*     Convert hours, minutes, seconds to radians
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDtf2r( int ihour, int imin, double sec, double *rad, int *j );
+
+*  Arguments:
+*     ihour = int (Given)
+*        Hours
+*     imin = int (Given)
+*        Minutes
+*     sec = double (Given)
+*        Seconds
+*     days = double * (Returned)
+*        Angle in radians
+*     j = int * (Returned)
+*        status: 0 = ok, 1 = ihour outside range 0-23,
+*        2 = imin outside range 0-59, 3 = sec outside range 0-59.999...
+
+*  Description:
+*     Convert hours, minutes, seconds to radians.
+
+*  Notes:
+*     - Uses eraTf2a(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Assumes that the sign is dealt with outside this routine */
+void palDtf2r ( int ihour, int imin, double sec, double *rad, int *j ) {
+  *j = eraTf2a( ' ', ihour, imin, sec, rad );
+}
+
+/*
+*+
+*  Name:
+*     palDvdv
+
+*  Purpose:
+*     Scalar product of two 3-vectors
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     prod = palDvdv ( double va[3], double vb[3] );
+
+*  Arguments:
+*     va = double [3] (Given)
+*        First vector
+*     vb = double [3] (Given)
+*        Second vector
+
+*  Returned Value:
+*     Scalar product va.vb
+
+*  Description:
+*     Scalar product of two 3-vectors.
+
+*  Notes:
+*     - Uses eraPdp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+double palDvdv ( double va[3], double vb[3] ) {
+  return eraPdp( va, vb );
+}
+
+/*
+*+
+*  Name:
+*     palDvn
+
+*  Purpose:
+*     Normalizes a 3-vector also giving the modulus
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDvn( double v[3], double uv[3], double *vm );
+
+*  Arguments:
+*     v = double [3] (Given)
+*        vector
+*     uv = double [3] (Returned)
+*        unit vector in direction of "v"
+*     vm = double * (Returned)
+*        modulus of "v"
+
+*  Description:
+*     Normalizes a 3-vector also giving the modulus.
+
+*  Notes:
+*     - Uses eraPn(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Note that the arguments are flipped */
+void palDvn ( double v[3], double uv[3], double *vm ) {
+  eraPn( v, vm, uv );
+}
+
+/*
+*+
+*  Name:
+*     palDvxv
+
+*  Purpose:
+*     Vector product of two 3-vectors
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palDvxv( double va[3], double vb[3], double vc[3] );
+
+*  Arguments:
+*     va = double [3] (Given)
+*        First vector
+*     vb = double [3] (Given)
+*        Second vector
+*     vc = double [3] (Returned)
+*        Result vector
+
+*  Description:
+*     Vector product of two 3-vectors.
+
+*  Notes:
+*     - Uses eraPxp(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palDvxv ( double va[3], double vb[3], double vc[3] ) {
+  eraPxp( va, vb, vc );
+}
+
+/*
+*+
+*  Name:
+*     palEpb
+
+*  Purpose:
+*     Conversion of modified Julian Data to Besselian Epoch
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     epb = palEpb ( double date );
+
+*  Arguments:
+*     date = double (Given)
+*        Modified Julian Date (JD - 2400000.5)
+
+*  Returned Value:
+*      Besselian epoch.
+
+*  Description:
+*     Conversion of modified Julian Data to Besselian Epoch.
+
+*  Notes:
+*     - Uses eraEpb(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Requires additional SLA MJD reference date */
+double palEpb ( double date ) {
+  return eraEpb( PAL__MJD0, date );
+}
+
+/*
+*+
+*  Name:
+*     palEpb2d
+
+*  Purpose:
+*     Conversion of Besselian Epoch to Modified Julian Date
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     mjd = palEpb2d ( double epb );
+
+*  Arguments:
+*     epb = double (Given)
+*        Besselian Epoch
+
+*  Returned Value:
+*     Modified Julian Date (JD - 2400000.5)
+
+*  Description:
+*     Conversion of Besselian Epoch to Modified Julian Date.
+
+*  Notes:
+*     - Uses eraEpb2jd(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+
+double palEpb2d ( double epb ) {
+  double djm0, djm;
+  eraEpb2jd( epb, &djm0, &djm );
+  return djm;
+}
+
+/*
+*+
+*  Name:
+*     palEpj
+
+*  Purpose:
+*     Conversion of Modified Julian Date to Julian Epoch
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     epj = palEpj ( double date );
+
+*  Arguments:
+*     date = double (Given)
+*        Modified Julian Date (JD - 2400000.5)
+
+*  Returned Value:
+*     The Julian Epoch.
+
+*  Description:
+*     Conversion of Modified Julian Date to Julian Epoch.
+
+*  Notes:
+*     - Uses eraEpj(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Requires additional SLA MJD reference date */
+double palEpj ( double date ) {
+  return eraEpj( PAL__MJD0, date );
+}
+
+/*
+*+
+*  Name:
+*     palEpj2d
+
+*  Purpose:
+*     Conversion of Julian Epoch to Modified Julian Date
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     mjd = palEpj2d ( double epj );
+
+*  Arguments:
+*     epj = double (Given)
+*        Julian Epoch.
+
+*  Returned Value:
+*     Modified Julian Date (JD - 2400000.5)
+
+*  Description:
+*     Conversion of Julian Epoch to Modified Julian Date.
+
+*  Notes:
+*     - Uses eraEpj2d(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+double palEpj2d ( double epj ) {
+  double djm0, djm;
+  eraEpj2jd( epj, &djm0, &djm );
+  return djm;
+}
+
+/*
+*+
+*  Name:
+*     palEqeqx
+
+*  Purpose:
+*     Equation of the equinoxes (IAU 2000/2006)
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palEqeqx( double date );
+
+*  Arguments:
+*     date = double (Given)
+*        TT as Modified Julian Date (JD-400000.5)
+
+*  Description:
+*     Equation of the equinoxes (IAU 2000/2006).
+
+*  Notes:
+*     - Uses eraEe06a(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Requires additional SLA MJD reference date */
+double palEqeqx ( double date ) {
+  return eraEe06a( PAL__MJD0, date );
+}
+
+/*
+*+
+*  Name:
+*     palFk5hz
+
+*  Purpose:
+*     Transform an FK5 (J2000) star position into the frame of the
+*     Hipparcos catalogue.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palFk5hz ( double r5, double d5, double epoch,
+*                double *rh, double *dh );
+
+*  Arguments:
+*     r5 = double (Given)
+*        FK5 RA (radians), equinox J2000, epoch "epoch"
+*     d5 = double (Given)
+*        FK5 dec (radians), equinox J2000, epoch "epoch"
+*     epoch = double (Given)
+*        Julian epoch
+*     rh = double * (Returned)
+*        RA (radians)
+*     dh = double * (Returned)
+*        Dec (radians)
+
+*  Description:
+*     Transform an FK5 (J2000) star position into the frame of the
+*     Hipparcos catalogue.
+
+*  Notes:
+*     - Assumes zero Hipparcos proper motion.
+*     - Uses eraEpj2jd() and eraFk5hz.
+*       See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palFk5hz ( double r5, double d5, double epoch,
+                double *rh, double *dh ) {
+  /* Need to convert epoch to Julian date first */
+  double date1, date2;
+  eraEpj2jd( epoch, &date1, &date2 );
+  eraFk5hz( r5, d5, date1, date2, rh, dh );
+}
+
+/*
+*+
+*  Name:
+*     palGmst
+
+*  Purpose:
+*     Greenwich mean sidereal time (consistent with IAU 2006 precession).
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     mst = palGmst ( double ut1 );
+
+*  Arguments:
+*     ut1 = double (Given)
+*        Universal time (UT1) expressed as modified Julian Date (JD-2400000.5)
+
+*  Returned Value:
+*     Greenwich mean sidereal time
+
+*  Description:
+*     Greenwich mean sidereal time (consistent with IAU 2006 precession).
+
+*  Notes:
+*     - Uses eraGmst06(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Note that SOFA/ERFA has more accurate time arguments
+   and we use the 2006 precession model */
+double palGmst ( double ut1 ) {
+  return eraGmst06( PAL__MJD0, ut1, PAL__MJD0, ut1 );
+}
+
+/*
+*+
+*  Name:
+*     palGmsta
+
+*  Purpose:
+*     Greenwich mean sidereal time (consistent with IAU 2006 precession).
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     mst = palGmsta ( double date, double ut1 );
+
+*  Arguments:
+*     date = double (Given)
+*        UT1 date (MJD: integer part of JD-2400000.5)
+*     ut1 = double (Given)
+*        UT1 time (fraction of a day)
+
+*  Returned Value:
+*     Greenwich mean sidereal time (in range 0 to 2 pi)
+
+*  Description:
+*     Greenwich mean sidereal time (consistent with IAU 2006 precession).
+
+*  Notes:
+*     - For best accuracy use eraGmst06() directly.
+*     - Uses eraGmst06(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+/* Slightly better but still not as accurate as SOFA/ERFA */
+
+double palGmsta( double date, double ut ) {
+  date += PAL__MJD0;
+  return eraGmst06( date, ut, date, ut );
+}
+
+/*
+*+
+*  Name:
+*     palHfk5z
+
+*  Purpose:
+*     Hipparcos star position to FK5 J2000
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palHfk5z( double rh, double dh, double epoch,
+*               double *r5, double *d5, double *dr5, double *dd5 );
+
+*  Arguments:
+*     rh = double (Given)
+*        Hipparcos RA (radians)
+*     dh = double (Given)
+*        Hipparcos Dec (radians)
+*     epoch = double (Given)
+*        Julian epoch (TDB)
+*     r5 = double * (Returned)
+*        RA (radians, FK5, equinox J2000, epoch "epoch")
+*     d5 = double * (Returned)
+*        Dec (radians, FK5, equinox J2000, epoch "epoch")
+
+*  Description:
+*     Transform a Hipparcos star position into FK5 J2000, assuming
+*     zero Hipparcos proper motion.
+
+*  Notes:
+*     - Uses eraEpj2jd and eraHfk5z(). See SOFA/ERFA documentation for details.
+
+*-
+*/
+
+void palHfk5z ( double rh, double dh, double epoch,
+                double *r5, double *d5, double *dr5, double *dd5 ) {
+  /* Need to convert epoch to Julian date first */
+  double date1, date2;
+  eraEpj2jd( epoch, &date1, &date2 );
+  eraHfk5z( rh, dh, date1, date2, r5, d5, dr5, dd5 );
+}
+
+/*
+*+
+*  Name:
+*     palRefcoq
+
+*  Purpose:
+*     Determine the constants A and B in the atmospheric refraction model
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palRefcoq( double tdk, double pmb, double rh, double wl,
+*                double *refa, double *refb );
+
+*  Arguments:
+*     tdk = double (Given)
+*        Ambient temperature at the observer (K)
+*     pmb = double (Given)
+*        Pressure at the observer (millibar)
+*     rh =  double (Given)
+*        Relative humidity at the observer (range 0-1)
+*     wl =  double (Given)
+*        Effective wavelength of the source (micrometre).
+*        Radio refraction is chosen by specifying wl > 100 micrometres.
+*     refa = double * (Returned)
+*        tan Z coefficient (radian)
+*     refb = double * (Returned)
+*        tan**3 Z coefficient (radian)
+
+*  Description:
+*     Determine the constants A and B in the atmospheric refraction
+*     model dZ = A tan Z + B tan**3 Z.  This is a fast alternative
+*     to the palRefco routine.
+*
+*     Z is the "observed" zenith distance (i.e. affected by refraction)
+*     and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo)
+*     zenith distance.
+
+*  Notes:
+*     - Uses eraRefco(). See SOFA/ERFA documentation for details.
+*     - Note that the SOFA/ERFA routine uses different order of
+*       of arguments and uses deg C rather than K.
+
+*-
+*/
+
+void palRefcoq ( double tdk, double pmb, double rh, double wl,
+                 double *refa, double *refb ) {
+  /* Note that SLA (and therefore PAL) uses units of kelvin
+     but SOFA/ERFA uses deg C */
+  eraRefco( pmb, tdk - 273.15, rh, wl, refa, refb );
+}
Index: branches/FACT++_part_filenames/pal/palPa.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPa.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPa.c	(revision 18732)
@@ -0,0 +1,91 @@
+/*
+*+
+*  Name:
+*     palPa
+
+*  Purpose:
+*     HA, Dec to Parallactic Angle
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palPa( double ha, double dec, double phi );
+
+*  Arguments:
+*     ha = double (Given)
+*        Hour angle in radians (Geocentric apparent)
+*     dec = double (Given)
+*        Declination in radians (Geocentric apparent)
+*     phi = double (Given)
+*        Observatory latitude in radians (geodetic)
+
+*  Returned Value:
+*     palPa = double
+*        Parallactic angle in the range -pi to +pi.
+
+*  Description:
+*     Converts HA, Dec to Parallactic Angle.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The parallactic angle at a point in the sky is the position
+*       angle of the vertical, i.e. the angle between the direction to
+*       the pole and to the zenith.  In precise applications care must
+*       be taken only to use geocentric apparent HA,Dec and to consider
+*       separately the effects of atmospheric refraction and telescope
+*       mount errors.
+*     - At the pole a zero result is returned.
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+#include <math.h>
+
+double palPa( double ha, double dec, double phi ) {
+  double cp, sqsz, cqsz;
+
+  cp = cos(phi);
+  sqsz = cp * sin(ha);
+  cqsz = sin(phi) * cos(dec) - cp * sin(dec) * cos(ha);
+  if (sqsz == 0.0 && cqsz == 0.0) cqsz = 1.0;
+  return atan2( sqsz, cqsz );
+}
Index: branches/FACT++_part_filenames/pal/palPcd.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPcd.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPcd.c	(revision 18732)
@@ -0,0 +1,105 @@
+/*
+*+
+*  Name:
+*     palPcd
+
+*  Purpose:
+*     Apply pincushion/barrel distortion to a tangent-plane [x,y]
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palPcd( double disco, double * x, double * y );
+
+*  Arguments:
+*     disco = double (Given)
+*        Pincushion/barrel distortion coefficient.
+*     x = double * (Given & Returned)
+*        On input the tangent-plane X coordinate, on output
+*        the distorted X coordinate.
+*     y = double * (Given & Returned)
+*        On input the tangent-plane Y coordinate, on output
+*        the distorted Y coordinate.
+
+*  Description:
+*     Applies pincushion and barrel distortion to a tangent
+*     plane coordinate.
+
+*  Authors:
+*     PTW: Pat Wallace (RAL)
+*     TIMJ: Tim Jenness
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The distortion is of the form RP = R*(1 + C*R**2), where R is
+*       the radial distance from the tangent point, C is the DISCO
+*       argument, and RP is the radial distance in the presence of
+*       the distortion.
+*
+*     - For pincushion distortion, C is +ve;  for barrel distortion,
+*       C is -ve.
+*
+*     - For X,Y in units of one projection radius (in the case of
+*       a photographic plate, the focal length), the following
+*       DISCO values apply:
+*
+*           Geometry          DISCO
+*
+*           astrograph         0.0
+*           Schmidt           -0.3333
+*           AAT PF doublet  +147.069
+*           AAT PF triplet  +178.585
+*           AAT f/8          +21.20
+*           JKT f/8          +13.32
+*
+*  See Also:
+*     - There is a companion routine, palUnpcd, which performs the
+*       inverse operation.
+
+*  History:
+*     2000-09-03 (PTW):
+*        SLALIB implementation.
+*     2015-01-01 (TIMJ):
+*        Initial version. Ported from Fortran.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2000 Rutherford Appleton Laboratory.
+*     Copyright (C) 2015 Tim Jenness
+*     All Rights Reserved.
+
+*  Licence:
+*     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 (see SLA_CONDITIONS); if not, write to the
+*     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+*     Boston, MA  02110-1301  USA
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palPcd( double disco, double *x, double *y ) {
+  double f;
+
+  f = 1.0 + disco * ( (*x) * (*x) + (*y) * (*y) );
+  *x *= f;
+  *y *= f;
+}
+
Index: branches/FACT++_part_filenames/pal/palPertel.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPertel.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPertel.c	(revision 18732)
@@ -0,0 +1,212 @@
+/*
+*+
+*  Name:
+*     palPertel
+
+*  Purpose:
+*     Update elements by applying planetary perturbations
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPertel (int jform, double date0, double date1,
+*                     double epoch0, double orbi0, double anode0,
+*                     double perih0, double aorq0, double e0, double am0,
+*                     double *epoch1, double *orbi1, double *anode1,
+*                     double *perih1, double *aorq1, double *e1, double *am1,
+*                     int *jstat );
+
+*  Arguments:
+*     jform = int (Given)
+*        Element set actually returned (1-3; Note 6)
+*     date0 = double (Given)
+*        Date of osculation (TT MJD) for the given elements.
+*     date1 = double (Given)
+*        Date of osculation (TT MJD) for the updated elements.
+*     epoch0 = double (Given)
+*        Epoch of elements (TT MJD)
+*     orbi0 = double (Given)
+*        inclination (radians)
+*     anode0 = double (Given)
+*        longitude of the ascending node (radians)
+*     perih0 = double (Given)
+*        longitude or argument of perihelion (radians)
+*     aorq0 = double (Given)
+*        mean distance or perihelion distance (AU)
+*     e0 = double (Given)
+*        eccentricity
+*     am0 = double (Given)
+*        mean anomaly (radians, JFORM=2 only)
+*     epoch1 = double * (Returned)
+*        Epoch of elements (TT MJD)
+*     orbi1 = double * (Returned)
+*        inclination (radians)
+*     anode1 = double * (Returned)
+*        longitude of the ascending node (radians)
+*     perih1 = double * (Returned)
+*        longitude or argument of perihelion (radians)
+*     aorq1 = double * (Returned)
+*        mean distance or perihelion distance (AU)
+*     e1 = double * (Returned)
+*        eccentricity
+*     am1 = double * (Returned)
+*        mean anomaly (radians, JFORM=2 only)
+*     jstat = int * (Returned)
+*        status:
+*          -      +102 = warning, distant epoch
+*          -      +101 = warning, large timespan ( > 100 years)
+*          - +1 to +10 = coincident with planet (Note 6)
+*          -         0 = OK
+*          -        -1 = illegal JFORM
+*          -        -2 = illegal E0
+*          -        -3 = illegal AORQ0
+*          -        -4 = internal error
+*          -        -5 = numerical error
+
+*  Description:
+*     Update the osculating orbital elements of an asteroid or comet by
+*     applying planetary perturbations.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Two different element-format options are available:
+*
+*       Option JFORM=2, suitable for minor planets:
+*
+*       EPOCH   = epoch of elements (TT MJD)
+*       ORBI    = inclination i (radians)
+*       ANODE   = longitude of the ascending node, big omega (radians)
+*       PERIH   = argument of perihelion, little omega (radians)
+*       AORQ    = mean distance, a (AU)
+*       E       = eccentricity, e
+*       AM      = mean anomaly M (radians)
+*
+*       Option JFORM=3, suitable for comets:
+*
+*       EPOCH   = epoch of perihelion (TT MJD)
+*       ORBI    = inclination i (radians)
+*       ANODE   = longitude of the ascending node, big omega (radians)
+*       PERIH   = argument of perihelion, little omega (radians)
+*       AORQ    = perihelion distance, q (AU)
+*       E       = eccentricity, e
+*
+*     - DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in
+*       the TT timescale (formerly Ephemeris Time, ET), expressed
+*       as Modified Julian Dates (JD-2400000.5).
+*
+*       DATE0 is the instant at which the given (i.e. unperturbed)
+*       osculating elements are correct.
+*
+*       DATE1 is the specified instant at which the updated osculating
+*       elements are correct.
+*
+*       EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1
+*       (respectively) for the JFORM=2 case, normally used for minor
+*       planets.  For the JFORM=3 case, the two epochs will refer to
+*       perihelion passage and so will not, in general, be the same as
+*       DATE0 and/or DATE1 though they may be similar to one another.
+*     - The elements are with respect to the J2000 ecliptic and equinox.
+*     - Unused elements (AM0 and AM1 for JFORM=3) are not accessed.
+*     - See the palPertue routine for details of the algorithm used.
+*     - This routine is not intended to be used for major planets, which
+*       is why JFORM=1 is not available and why there is no opportunity
+*       to specify either the longitude of perihelion or the daily
+*       motion.  However, if JFORM=2 elements are somehow obtained for a
+*       major planet and supplied to the routine, sensible results will,
+*       in fact, be produced.  This happens because the palPertue routine
+*       that is called to perform the calculations checks the separation
+*       between the body and each of the planets and interprets a
+*       suspiciously small value (0.001 AU) as an attempt to apply it to
+*       the planet concerned.  If this condition is detected, the
+*       contribution from that planet is ignored, and the status is set to
+*       the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter,
+*       Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+*
+*  See Also:
+*     - Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*       Interscience Publishers Inc., 1960.  Section 6.7, p199.
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version direct conversion of SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palPertel (int jform, double date0, double date1,
+                double epoch0, double orbi0, double anode0,
+                double perih0, double aorq0, double e0, double am0,
+                double *epoch1, double *orbi1, double *anode1,
+                double *perih1, double *aorq1, double *e1, double *am1,
+                int *jstat ) {
+
+  double u[13], dm;
+  int j, jf;
+
+  /*  Check that the elements are either minor-planet or comet format. */
+  if (jform < 2 || jform > 3) {
+    *jstat = -1;
+    return;
+  } else {
+
+    /*     Provisionally set the status to OK. */
+    *jstat = 0;
+  }
+
+  /*  Transform the elements from conventional to universal form. */
+  palEl2ue(date0,jform,epoch0,orbi0,anode0,perih0,
+           aorq0,e0,am0,0.0,u,&j);
+  if (j != 0) {
+    *jstat = j;
+    return;
+  }
+
+  /*  Update the universal elements. */
+  palPertue(date1,u,&j);
+  if (j > 0) {
+    *jstat = j;
+  } else if (j < 0) {
+    *jstat = -5;
+    return;
+  }
+
+  /*  Transform from universal to conventional elements. */
+  palUe2el(u, jform, &jf, epoch1, orbi1, anode1, perih1,
+           aorq1, e1, am1, &dm, &j);
+  if (jf != jform || j != 0) *jstat = -5;
+}
Index: branches/FACT++_part_filenames/pal/palPertue.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPertue.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPertue.c	(revision 18732)
@@ -0,0 +1,655 @@
+/*
+*+
+*  Name:
+*     palPertue
+
+*  Purpose:
+*     Update the universal elements by applying planetary perturbations
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPertue( double date, double u[13], int *jstat );
+
+*  Arguments:
+*     date = double (Given)
+*        Final epoch (TT MJD) for the update elements.
+*     u = const double [13] (Given & Returned)
+*        Universal orbital elements (Note 1)
+*            (0)  combined mass (M+m)
+*            (1)  total energy of the orbit (alpha)
+*            (2)  reference (osculating) epoch (t0)
+*          (3-5)  position at reference epoch (r0)
+*          (6-8)  velocity at reference epoch (v0)
+*            (9)  heliocentric distance at reference epoch
+*           (10)  r0.v0
+*           (11)  date (t)
+*           (12)  universal eccentric anomaly (psi) of date, approx
+*     jstat = int * (Returned)
+*        status:
+*                   +102 = warning, distant epoch
+*                   +101 = warning, large timespan ( > 100 years)
+*              +1 to +10 = coincident with major planet (Note 5)
+*                      0 = OK
+*                     -1 = numerical error
+
+*  Description:
+*     Update the universal elements of an asteroid or comet by applying
+*     planetary perturbations.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference 2).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - The universal elements are with respect to the J2000 equator and
+*       equinox.
+*     - The epochs DATE, U(3) and U(12) are all Modified Julian Dates
+*       (JD-2400000.5).
+*     - The algorithm is a simplified form of Encke's method.  It takes as
+*       a basis the unperturbed motion of the body, and numerically
+*       integrates the perturbing accelerations from the major planets.
+*       The expression used is essentially Sterne's 6.7-2 (reference 1).
+*       Everhart and Pitkin (reference 2) suggest rectifying the orbit at
+*       each integration step by propagating the new perturbed position
+*       and velocity as the new universal variables.  In the present
+*       routine the orbit is rectified less frequently than this, in order
+*       to gain a slight speed advantage.  However, the rectification is
+*       done directly in terms of position and velocity, as suggested by
+*       Everhart and Pitkin, bypassing the use of conventional orbital
+*       elements.
+*
+*       The f(q) part of the full Encke method is not used.  The purpose
+*       of this part is to avoid subtracting two nearly equal quantities
+*       when calculating the "indirect member", which takes account of the
+*       small change in the Sun's attraction due to the slightly displaced
+*       position of the perturbed body.  A simpler, direct calculation in
+*       double precision proves to be faster and not significantly less
+*       accurate.
+*
+*       Apart from employing a variable timestep, and occasionally
+*       "rectifying the orbit" to keep the indirect member small, the
+*       integration is done in a fairly straightforward way.  The
+*       acceleration estimated for the middle of the timestep is assumed
+*       to apply throughout that timestep;  it is also used in the
+*       extrapolation of the perturbations to the middle of the next
+*       timestep, to predict the new disturbed position.  There is no
+*       iteration within a timestep.
+*
+*       Measures are taken to reach a compromise between execution time
+*       and accuracy.  The starting-point is the goal of achieving
+*       arcsecond accuracy for ordinary minor planets over a ten-year
+*       timespan.  This goal dictates how large the timesteps can be,
+*       which in turn dictates how frequently the unperturbed motion has
+*       to be recalculated from the osculating elements.
+*
+*       Within predetermined limits, the timestep for the numerical
+*       integration is varied in length in inverse proportion to the
+*       magnitude of the net acceleration on the body from the major
+*       planets.
+*
+*       The numerical integration requires estimates of the major-planet
+*       motions.  Approximate positions for the major planets (Pluto
+*       alone is omitted) are obtained from the routine palPlanet.  Two
+*       levels of interpolation are used, to enhance speed without
+*       significantly degrading accuracy.  At a low frequency, the routine
+*       palPlanet is called to generate updated position+velocity "state
+*       vectors".  The only task remaining to be carried out at the full
+*       frequency (i.e. at each integration step) is to use the state
+*       vectors to extrapolate the planetary positions.  In place of a
+*       strictly linear extrapolation, some allowance is made for the
+*       curvature of the orbit by scaling back the radius vector as the
+*       linear extrapolation goes off at a tangent.
+*
+*       Various other approximations are made.  For example, perturbations
+*       by Pluto and the minor planets are neglected and relativistic
+*       effects are not taken into account.
+*
+*       In the interests of simplicity, the background calculations for
+*       the major planets are carried out en masse.  The mean elements and
+*       state vectors for all the planets are refreshed at the same time,
+*       without regard for orbit curvature, mass or proximity.
+*
+*       The Earth-Moon system is treated as a single body when the body is
+*       distant but as separate bodies when closer to the EMB than the
+*       parameter RNE, which incurs a time penalty but improves accuracy
+*       for near-Earth objects.
+*
+*     - This routine is not intended to be used for major planets.
+*       However, if major-planet elements are supplied, sensible results
+*       will, in fact, be produced.  This happens because the routine
+*       checks the separation between the body and each of the planets and
+*       interprets a suspiciously small value (0.001 AU) as an attempt to
+*       apply the routine to the planet concerned.  If this condition is
+*       detected, the contribution from that planet is ignored, and the
+*       status is set to the planet number (1-10 = Mercury, Venus, EMB,
+*       Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+
+*  See Also:
+*     - Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*       Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*     - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version direct conversion of SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     2012-06-21 (TIMJ):
+*        Support a lack of copysign() function.
+*     2012-06-22 (TIMJ):
+*        Check __STDC_VERSION__
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+/* Use the config file if we have one, else look at
+   compiler defines to see if we have C99 */
+#if HAVE_CONFIG_H
+#include <config.h>
+#else
+#ifdef __STDC_VERSION__
+#  if (__STDC_VERSION__ >= 199901L)
+#    define HAVE_COPYSIGN 1
+#  endif
+#endif
+#endif
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+/* copysign is C99 */
+#if HAVE_COPYSIGN
+# define COPYSIGN copysign
+#else
+# define COPYSIGN(a,b) DSIGN(a,b)
+#endif
+
+void palPertue( double date, double u[13], int *jstat ) {
+
+  /*  Distance from EMB at which Earth and Moon are treated separately */
+  const double RNE=1.0;
+
+  /*  Coincidence with major planet distance */
+  const double COINC=0.0001;
+
+  /*  Coefficient relating timestep to perturbing force */
+  const double TSC=1e-4;
+
+  /*  Minimum and maximum timestep (days) */
+  const double TSMIN = 0.01;
+  const double TSMAX = 10.0;
+
+  /*  Age limit for major-planet state vector (days) */
+  const double AGEPMO=5.0;
+
+  /*  Age limit for major-planet mean elements (days) */
+  const double AGEPEL=50.0;
+
+  /*  Margin for error when deciding whether to renew the planetary data */
+  const double TINY=1e-6;
+
+  /*  Age limit for the body's osculating elements (before rectification) */
+  const double AGEBEL=100.0;
+
+  /*  Gaussian gravitational constant squared */
+  const double GCON2 = PAL__GCON * PAL__GCON;
+
+  /*  The final epoch */
+  double TFINAL;
+
+  /*  The body's current universal elements */
+  double UL[13];
+
+  /*  Current reference epoch */
+  double T0;
+
+  /*  Timespan from latest orbit rectification to final epoch (days) */
+  double TSPAN;
+
+  /*  Time left to go before integration is complete */
+  double TLEFT;
+
+  /*  Time direction flag: +1=forwards, -1=backwards */
+  double FB;
+
+  /*  First-time flag */
+  int FIRST = 0;
+
+  /*
+   *  The current perturbations
+   */
+
+  /*  Epoch (days relative to current reference epoch) */
+  double RTN;
+  /*  Position (AU) */
+  double PERP[3];
+  /*  Velocity (AU/d) */
+  double PERV[3];
+  /*  Acceleration (AU/d/d) */
+  double PERA[3];
+
+  /*  Length of current timestep (days), and half that */
+  double TS,HTS;
+
+  /*  Epoch of middle of timestep */
+  double T;
+
+  /*  Epoch of planetary mean elements */
+  double TPEL = 0.0;
+
+  /*  Planet number (1=Mercury, 2=Venus, 3=EMB...8=Neptune) */
+  int NP;
+
+  /*  Planetary universal orbital elements */
+  double UP[8][13];
+
+  /*  Epoch of planetary state vectors */
+  double TPMO = 0.0;
+
+  /*  State vectors for the major planets (AU,AU/s) */
+  double PVIN[8][6];
+
+  /*  Earth velocity and position vectors (AU,AU/s) */
+  double VB[3],PB[3],VH[3],PE[3];
+
+  /*  Moon geocentric state vector (AU,AU/s) and position part */
+  double PVM[6],PM[3];
+
+  /*  Date to J2000 de-precession matrix */
+  double PMAT[3][3];
+
+  /*
+   *  Correction terms for extrapolated major planet vectors
+   */
+
+  /*  Sun-to-planet distances squared multiplied by 3 */
+  double R2X3[8];
+  /*  Sunward acceleration terms, G/2R^3 */
+  double GC[8];
+  /*  Tangential-to-circular correction factor */
+  double FC;
+  /*  Radial correction factor due to Sunwards acceleration */
+  double FG;
+
+  /*  The body's unperturbed and perturbed state vectors (AU,AU/s) */
+  double PV0[6],PV[6];
+
+  /*  The body's perturbed and unperturbed heliocentric distances (AU) cubed */
+  double R03,R3;
+
+  /*  The perturbating accelerations, indirect and direct */
+  double FI[3],FD[3];
+
+  /*  Sun-to-planet vector, and distance cubed */
+  double RHO[3],RHO3;
+
+  /*  Body-to-planet vector, and distance cubed */
+  double DELTA[3],DELTA3;
+
+  /*  Miscellaneous */
+  int I,J;
+  double R2,W,DT,DT2,R,FT;
+  int NE;
+
+  /*  Planetary inverse masses, Mercury through Neptune then Earth and Moon */
+  const double AMAS[10] = {
+    6023600., 408523.5, 328900.5, 3098710.,
+    1047.355, 3498.5, 22869., 19314.,
+    332946.038, 27068709.
+  };
+
+  /*  Preset the status to OK. */
+  *jstat = 0;
+
+  /*  Copy the final epoch. */
+  TFINAL = date;
+
+  /*  Copy the elements (which will be periodically updated). */
+  for (I=0; I<13; I++) {
+    UL[I] = u[I];
+  }
+
+/*  Initialize the working reference epoch. */
+  T0=UL[2];
+
+  /*  Total timespan (days) and hence time left. */
+  TSPAN = TFINAL-T0;
+  TLEFT = TSPAN;
+
+  /*  Warn if excessive. */
+  if (fabs(TSPAN) > 36525.0) *jstat=101;
+
+  /*  Time direction: +1 for forwards, -1 for backwards. */
+  FB = COPYSIGN(1.0,TSPAN);
+
+  /*  Initialize relative epoch for start of current timestep. */
+  RTN = 0.0;
+
+  /*  Reset the perturbations (position, velocity, acceleration). */
+  for (I=0; I<3; I++) {
+    PERP[I] = 0.0;
+    PERV[I] = 0.0;
+    PERA[I] = 0.0;
+  }
+
+  /*  Set "first iteration" flag. */
+  FIRST = 1;
+
+  /*  Step through the time left. */
+  while (FB*TLEFT > 0.0) {
+
+    /*     Magnitude of current acceleration due to planetary attractions. */
+    if (FIRST) {
+      TS = TSMIN;
+    } else {
+      R2 = 0.0;
+      for (I=0; I<3; I++) {
+        W = FD[I];
+        R2 = R2+W*W;
+      }
+      W = sqrt(R2);
+
+      /*        Use the acceleration to decide how big a timestep can be tolerated. */
+      if (W != 0.0) {
+        TS = DMIN(TSMAX,DMAX(TSMIN,TSC/W));
+      } else {
+        TS = TSMAX;
+      }
+    }
+    TS = TS*FB;
+
+    /*     Override if final epoch is imminent. */
+    TLEFT = TSPAN-RTN;
+    if (fabs(TS) > fabs(TLEFT)) TS=TLEFT;
+
+    /*     Epoch of middle of timestep. */
+    HTS = TS/2.0;
+    T = T0+RTN+HTS;
+
+    /*     Is it time to recompute the major-planet elements? */
+    if (FIRST || fabs(T-TPEL)-AGEPEL >= TINY) {
+
+      /*        Yes: go forward in time by just under the maximum allowed. */
+      TPEL = T+FB*AGEPEL;
+
+      /*        Compute the state vector for the new epoch. */
+      for (NP=1; NP<=8; NP++) {
+        palPlanet(TPEL,NP,PV,&J);
+
+        /*           Warning if remote epoch, abort if error. */
+        if (J == 1) {
+          *jstat = 102;
+        } else if (J != 0) {
+          goto ABORT;
+        }
+
+        /*           Transform the vector into universal elements. */
+        palPv2ue(PV,TPEL,0.0,&(UP[NP-1][0]),&J);
+        if (J != 0) goto ABORT;
+      }
+    }
+
+    /*     Is it time to recompute the major-planet motions? */
+    if (FIRST || fabs(T-TPMO)-AGEPMO >= TINY) {
+
+      /*        Yes: look ahead. */
+      TPMO = T+FB*AGEPMO;
+
+      /*        Compute the motions of each planet (AU,AU/d). */
+      for (NP=1; NP<=8; NP++) {
+
+        /*           The planet's position and velocity (AU,AU/s). */
+        palUe2pv(TPMO,&(UP[NP-1][0]),&(PVIN[NP-1][0]),&J);
+        if (J != 0) goto ABORT;
+
+        /*           Scale velocity to AU/d. */
+        for (J=3; J<6; J++) {
+          PVIN[NP-1][J] = PVIN[NP-1][J]*PAL__SPD;
+        }
+
+        /*           Precompute also the extrapolation correction terms. */
+        R2 = 0.0;
+        for (I=0; I<3; I++) {
+          W = PVIN[NP-1][I];
+          R2 = R2+W*W;
+        }
+        R2X3[NP-1] = R2*3.0;
+        GC[NP-1] = GCON2/(2.0*R2*sqrt(R2));
+      }
+    }
+
+    /*     Reset the first-time flag. */
+    FIRST = 0;
+
+    /*     Unperturbed motion of the body at middle of timestep (AU,AU/s). */
+    palUe2pv(T,UL,PV0,&J);
+    if (J != 0) goto ABORT;
+
+    /*     Perturbed position of the body (AU) and heliocentric distance cubed. */
+    R2 = 0.0;
+    for (I=0; I<3; I++) {
+      W = PV0[I]+PERP[I]+(PERV[I]+PERA[I]*HTS/2.0)*HTS;
+      PV[I] = W;
+      R2 = R2+W*W;
+    }
+    R3 = R2*sqrt(R2);
+
+    /*     The body's unperturbed heliocentric distance cubed. */
+    R2 = 0.0;
+    for (I=0; I<3; I++) {
+      W = PV0[I];
+      R2 = R2+W*W;
+    }
+    R03 = R2*sqrt(R2);
+
+    /*     Compute indirect and initialize direct parts of the perturbation. */
+    for (I=0; I<3; I++) {
+      FI[I] = PV0[I]/R03-PV[I]/R3;
+      FD[I] = 0.0;
+    }
+
+    /*     Ready to compute the direct planetary effects. */
+
+    /*     Reset the "near-Earth" flag. */
+    NE = 0;
+
+    /*     Interval from state-vector epoch to middle of current timestep. */
+    DT = T-TPMO;
+    DT2 = DT*DT;
+
+    /*     Planet by planet, including separate Earth and Moon. */
+    for (NP=1; NP<10; NP++) {
+
+      /*        Which perturbing body? */
+      if (NP <= 8) {
+
+        /*           Planet: compute the extrapolation in longitude (squared). */
+        R2 = 0.0;
+        for (J=3; J<6; J++) {
+          W = PVIN[NP-1][J]*DT;
+          R2 = R2+W*W;
+        }
+
+        /*           Hence the tangential-to-circular correction factor. */
+        FC = 1.0+R2/R2X3[NP-1];
+
+        /*           The radial correction factor due to the inwards acceleration. */
+        FG = 1.0-GC[NP-1]*DT2;
+
+        /*           Planet's position. */
+        for (I=0; I<3; I++) {
+          RHO[I] = FG*(PVIN[NP-1][I]+FC*PVIN[NP-1][I+3]*DT);
+        }
+
+      } else if (NE) {
+
+        /*           Near-Earth and either Earth or Moon. */
+
+        if (NP == 9) {
+
+          /*              Earth: position. */
+          palEpv(T,PE,VH,PB,VB);
+          for (I=0; I<3; I++) {
+            RHO[I] = PE[I];
+          }
+
+        } else {
+
+          /*              Moon: position. */
+          palPrec(palEpj(T),2000.0,PMAT);
+          palDmoon(T,PVM);
+          eraRxp(PMAT,PVM,PM);
+          for (I=0; I<3; I++) {
+            RHO[I] = PM[I]+PE[I];
+          }
+        }
+      }
+
+      /*        Proceed unless Earth or Moon and not the near-Earth case. */
+      if (NP <= 8 || NE) {
+
+        /*           Heliocentric distance cubed. */
+        R2 = 0.0;
+        for (I=0; I<3; I++) {
+          W = RHO[I];
+          R2 = R2+W*W;
+        }
+        R = sqrt(R2);
+        RHO3 = R2*R;
+
+        /*           Body-to-planet vector, and distance. */
+        R2 = 0.0;
+        for (I=0; I<3; I++) {
+          W = RHO[I]-PV[I];
+          DELTA[I] = W;
+          R2 = R2+W*W;
+        }
+        R = sqrt(R2);
+
+        /*           If this is the EMB, set the near-Earth flag appropriately. */
+        if (NP == 3 && R < RNE) NE = 1;
+
+        /*           Proceed unless EMB and this is the near-Earth case. */
+        if ( ! (NE && NP == 3) ) {
+
+          /*              If too close, ignore this planet and set a warning. */
+          if (R < COINC) {
+            *jstat = NP;
+
+          } else {
+
+            /*                 Accumulate "direct" part of perturbation acceleration. */
+            DELTA3 = R2*R;
+            W = AMAS[NP-1];
+            for (I=0; I<3; I++) {
+              FD[I] = FD[I]+(DELTA[I]/DELTA3-RHO[I]/RHO3)/W;
+            }
+          }
+        }
+      }
+    }
+
+    /*     Update the perturbations to the end of the timestep. */
+    RTN += TS;
+    for (I=0; I<3; I++) {
+      W = (FI[I]+FD[I])*GCON2;
+      FT = W*TS;
+      PERP[I] = PERP[I]+(PERV[I]+FT/2.0)*TS;
+      PERV[I] = PERV[I]+FT;
+      PERA[I] = W;
+    }
+
+    /*     Time still to go. */
+    TLEFT = TSPAN-RTN;
+
+    /*     Is it either time to rectify the orbit or the last time through? */
+    if (fabs(RTN) >= AGEBEL || FB*TLEFT <= 0.0) {
+
+      /*        Yes: update to the end of the current timestep. */
+      T0 += RTN;
+      RTN = 0.0;
+
+      /*        The body's unperturbed motion (AU,AU/s). */
+      palUe2pv(T0,UL,PV0,&J);
+      if (J != 0) goto ABORT;
+
+      /*        Add and re-initialize the perturbations. */
+      for (I=0; I<3; I++) {
+        J = I+3;
+        PV[I] = PV0[I]+PERP[I];
+        PV[J] = PV0[J]+PERV[I]/PAL__SPD;
+        PERP[I] = 0.0;
+        PERV[I] = 0.0;
+        PERA[I] = FD[I]*GCON2;
+      }
+
+      /*        Use the position and velocity to set up new universal elements. */
+      palPv2ue(PV,T0,0.0,UL,&J);
+      if (J != 0) goto ABORT;
+
+      /*        Adjust the timespan and time left. */
+      TSPAN = TFINAL-T0;
+      TLEFT = TSPAN;
+    }
+
+    /*     Next timestep. */
+  }
+
+  /*  Return the updated universal-element set. */
+  for (I=0; I<13; I++) {
+    u[I] = UL[I];
+  }
+
+  /*  Finished. */
+  return;
+
+  /*  Miscellaneous numerical error. */
+ ABORT:
+  *jstat = -1;
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palPlanel.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPlanel.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPlanel.c	(revision 18732)
@@ -0,0 +1,220 @@
+/*
+*+
+*  Name:
+*     palPlanel
+
+*  Purpose:
+*     Transform conventional elements into position and velocity
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPlanel ( double date, int jform, double epoch, double orbinc,
+*                      double anode, double perih, double aorq, double e,
+*                      double aorl, double dm, double pv[6], int *jstat );
+
+*  Arguments:
+*     date = double (Given)
+*        Epoch (TT MJD) of osculation (Note 1)
+*     jform = int (Given)
+*        Element set actually returned (1-3; Note 3)
+*     epoch = double (Given)
+*        Epoch of elements (TT MJD) (Note 4)
+*     orbinc = double (Given)
+*        inclination (radians)
+*     anode = double (Given)
+*        longitude of the ascending node (radians)
+*     perih = double (Given)
+*        longitude or argument of perihelion (radians)
+*     aorq = double (Given)
+*        mean distance or perihelion distance (AU)
+*     e = double (Given)
+*        eccentricity
+*     aorl = double (Given)
+*        mean anomaly or longitude (radians, JFORM=1,2 only)
+*     dm = double (Given)
+*        daily motion (radians, JFORM=1 only)
+*     u = double [13] (Returned)
+*        Universal orbital elements (Note 1)
+*            (0)  combined mass (M+m)
+*            (1)  total energy of the orbit (alpha)
+*            (2)  reference (osculating) epoch (t0)
+*          (3-5)  position at reference epoch (r0)
+*          (6-8)  velocity at reference epoch (v0)
+*            (9)  heliocentric distance at reference epoch
+*           (10)  r0.v0
+*           (11)  date (t)
+*           (12)  universal eccentric anomaly (psi) of date, approx
+*     jstat = int * (Returned)
+*        status:  0 = OK
+*              - -1 = illegal JFORM
+*              - -2 = illegal E
+*              - -3 = illegal AORQ
+*              - -4 = illegal DM
+*              - -5 = numerical error
+
+*  Description:
+*     Heliocentric position and velocity of a planet, asteroid or comet,
+*     starting from orbital elements.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - DATE is the instant for which the prediction is required.  It is
+*       in the TT timescale (formerly Ephemeris Time, ET) and is a
+*       Modified Julian Date (JD-2400000.5).
+*     - The elements are with respect to the J2000 ecliptic and equinox.
+*     - A choice of three different element-set options is available:
+*
+*       Option JFORM = 1, suitable for the major planets:
+*
+*         EPOCH  = epoch of elements (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = longitude of perihelion, curly pi (radians)
+*         AORQ   = mean distance, a (AU)
+*         E      = eccentricity, e (range 0 to <1)
+*         AORL   = mean longitude L (radians)
+*         DM     = daily motion (radians)
+*
+*       Option JFORM = 2, suitable for minor planets:
+*
+*         EPOCH  = epoch of elements (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = argument of perihelion, little omega (radians)
+*         AORQ   = mean distance, a (AU)
+*         E      = eccentricity, e (range 0 to <1)
+*         AORL   = mean anomaly M (radians)
+*
+*       Option JFORM = 3, suitable for comets:
+*
+*         EPOCH  = epoch of elements and perihelion (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = argument of perihelion, little omega (radians)
+*         AORQ   = perihelion distance, q (AU)
+*         E      = eccentricity, e (range 0 to 10)
+*
+*       Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+*       accessed.
+*     - Each of the three element sets defines an unperturbed heliocentric
+*       orbit.  For a given epoch of observation, the position of the body
+*       in its orbit can be predicted from these elements, which are
+*       called "osculating elements", using standard two-body analytical
+*       solutions.  However, due to planetary perturbations, a given set
+*       of osculating elements remains usable for only as long as the
+*       unperturbed orbit that it describes is an adequate approximation
+*       to reality.  Attached to such a set of elements is a date called
+*       the "osculating epoch", at which the elements are, momentarily,
+*       a perfect representation of the instantaneous position and
+*       velocity of the body.
+*
+*       Therefore, for any given problem there are up to three different
+*       epochs in play, and it is vital to distinguish clearly between
+*       them:
+*
+*       . The epoch of observation:  the moment in time for which the
+*         position of the body is to be predicted.
+*
+*       . The epoch defining the position of the body:  the moment in time
+*         at which, in the absence of purturbations, the specified
+*         position (mean longitude, mean anomaly, or perihelion) is
+*         reached.
+*
+*       . The osculating epoch:  the moment in time at which the given
+*         elements are correct.
+*
+*       For the major-planet and minor-planet cases it is usual to make
+*       the epoch that defines the position of the body the same as the
+*       epoch of osculation.  Thus, only two different epochs are
+*       involved:  the epoch of the elements and the epoch of observation.
+*
+*       For comets, the epoch of perihelion fixes the position in the
+*       orbit and in general a different epoch of osculation will be
+*       chosen.  Thus, all three types of epoch are involved.
+*
+*       For the present routine:
+*
+*       . The epoch of observation is the argument DATE.
+*
+*       . The epoch defining the position of the body is the argument
+*         EPOCH.
+*
+*       . The osculating epoch is not used and is assumed to be close
+*         enough to the epoch of observation to deliver adequate accuracy.
+*         If not, a preliminary call to palPertel may be used to update
+*         the element-set (and its associated osculating epoch) by
+*         applying planetary perturbations.
+*     - The reference frame for the result is with respect to the mean
+*       equator and equinox of epoch J2000.
+*     - The algorithm was originally adapted from the EPHSLA program of
+*       D.H.P.Jones (private communication, 1996).  The method is based
+*       on Stumpff's Universal Variables.
+
+*  See Also:
+*     Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version taken directly from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2002 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+
+void palPlanel ( double date, int jform, double epoch, double orbinc,
+		 double anode, double perih, double aorq, double e,
+		 double aorl, double dm, double pv[6], int *jstat ) {
+
+  int j;
+  double u[13];
+
+  /*  Validate elements and convert to "universal variables" parameters. */
+  palEl2ue( date, jform, epoch, orbinc, anode, perih, aorq, e, aorl,
+	    dm, u, &j );
+
+  /* Determine the position and velocity */
+  if (j == 0) {
+    palUe2pv( date, u, pv, &j);
+    if (j != 0) j = -5;
+  }
+
+  /* Wrap up */
+  *jstat = j;
+
+}
Index: branches/FACT++_part_filenames/pal/palPlanet.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPlanet.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPlanet.c	(revision 18732)
@@ -0,0 +1,99 @@
+/*
+*+
+*  Name:
+*     palPlanet
+
+*  Purpose:
+*     Approximate heliocentric position and velocity of major planet
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPlanet ( double date, int np, double pv[6], int *j );
+
+*  Arguments:
+*     date = double (Given)
+*        TDB Modified Julian Date (JD-2400000.5).
+*     np = int (Given)
+*        planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars,
+*                5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
+*     pv = double [6] (Returned)
+*        heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad
+*        in units AU and AU/s.
+*     j = int * (Returned)
+*        - -2 = solution didn't converge.
+*        - -1 = illegal np (1-8)
+*        -  0 = OK
+*        - +1 = warning: year outside 1000-3000
+
+*  Description:
+*     Calculates the approximate heliocentric position and velocity of
+*     the specified major planet.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - See SOFA/ERFA eraPlan94 for details
+*     - Note that Pluto is supported in SLA/F but not in this routine
+*     - Status -2 is equivalent to eraPlan94 status +2.
+*     - Note that velocity units here match the SLA/F documentation.
+
+*  History:
+*     2012-03-07 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palPlanet ( double date, int np, double pv[6], int *j ) {
+  double erapv[2][3];
+
+  *j = eraPlan94( PAL__MJD0, date, np, erapv );
+
+  /* Convert the outputs to the correct form and also correct AU/d
+     to AU/s */
+  pv[0] = erapv[0][0];
+  pv[1] = erapv[0][1];
+  pv[2] = erapv[0][2];
+  pv[3] = erapv[1][0] / PAL__SPD;
+  pv[4] = erapv[1][1] / PAL__SPD;
+  pv[5] = erapv[1][2] / PAL__SPD;
+
+  /* SLA compatibility for status */
+  if (*j == 2) *j = -2;
+
+}
Index: branches/FACT++_part_filenames/pal/palPlante.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPlante.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPlante.c	(revision 18732)
@@ -0,0 +1,286 @@
+/*
+*+
+*  Name:
+*     palPlante
+
+*  Purpose:
+*     Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPlante ( double date, double elong, double phi, int jform,
+*                      double epoch, double orbinc, double anode, double perih,
+*                      double aorq, double e, double aorl, double dm,
+*                      double *ra, double *dec, double *r, int *jstat );
+
+
+*  Description:
+*     Topocentric apparent RA,Dec of a Solar-System object whose
+*     heliocentric orbital elements are known.
+
+*  Arguments:
+*     date = double (Given)
+*        TT MJD of observation (JD-2400000.5)
+*     elong = double (Given)
+*        Observer's east longitude (radians)
+*     phi = double (Given)
+*        Observer's geodetic latitude (radians)
+*     jform = int (Given)
+*        Element set actually returned (1-3; Note 6)
+*     epoch = double (Given)
+*        Epoch of elements (TT MJD)
+*     orbinc = double (Given)
+*        inclination (radians)
+*     anode = double (Given)
+*        longitude of the ascending node (radians)
+*     perih = double (Given)
+*        longitude or argument of perihelion (radians)
+*     aorq = double (Given)
+*        mean distance or perihelion distance (AU)
+*     e = double (Given)
+*        eccentricity
+*     aorl = double (Given)
+*        mean anomaly or longitude (radians, JFORM=1,2 only)
+*     dm = double (Given)
+*        daily motion (radians, JFORM=1 only)
+*     ra = double * (Returned)
+*        Topocentric apparent RA (radians)
+*     dec = double * (Returned)
+*        Topocentric apparent Dec (radians)
+*     r = double * (Returned)
+*        Distance from observer (AU)
+*     jstat = int * (Returned)
+*        status: 0 = OK
+*             - -1 = illegal jform
+*             - -2 = illegal e
+*             - -3 = illegal aorq
+*             - -4 = illegal dm
+*             - -5 = numerical error
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - DATE is the instant for which the prediction is required.  It is
+*       in the TT timescale (formerly Ephemeris Time, ET) and is a
+*       Modified Julian Date (JD-2400000.5).
+*     - The longitude and latitude allow correction for geocentric
+*       parallax.  This is usually a small effect, but can become
+*       important for near-Earth asteroids.  Geocentric positions can be
+*       generated by appropriate use of routines palEpv (or palEvp) and
+*       palUe2pv.
+*     - The elements are with respect to the J2000 ecliptic and equinox.
+*     - A choice of three different element-set options is available:
+*
+*       Option JFORM = 1, suitable for the major planets:
+*
+*         EPOCH  = epoch of elements (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = longitude of perihelion, curly pi (radians)
+*         AORQ   = mean distance, a (AU)
+*         E      = eccentricity, e (range 0 to <1)
+*         AORL   = mean longitude L (radians)
+*         DM     = daily motion (radians)
+*
+*       Option JFORM = 2, suitable for minor planets:
+*
+*         EPOCH  = epoch of elements (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = argument of perihelion, little omega (radians)
+*         AORQ   = mean distance, a (AU)
+*         E      = eccentricity, e (range 0 to <1)
+*         AORL   = mean anomaly M (radians)
+*
+*       Option JFORM = 3, suitable for comets:
+*
+*         EPOCH  = epoch of elements and perihelion (TT MJD)
+*         ORBINC = inclination i (radians)
+*         ANODE  = longitude of the ascending node, big omega (radians)
+*         PERIH  = argument of perihelion, little omega (radians)
+*         AORQ   = perihelion distance, q (AU)
+*         E      = eccentricity, e (range 0 to 10)
+*
+*       Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+*       accessed.
+*     - Each of the three element sets defines an unperturbed heliocentric
+*       orbit.  For a given epoch of observation, the position of the body
+*       in its orbit can be predicted from these elements, which are
+*       called "osculating elements", using standard two-body analytical
+*       solutions.  However, due to planetary perturbations, a given set
+*       of osculating elements remains usable for only as long as the
+*       unperturbed orbit that it describes is an adequate approximation
+*       to reality.  Attached to such a set of elements is a date called
+*       the "osculating epoch", at which the elements are, momentarily,
+*       a perfect representation of the instantaneous position and
+*       velocity of the body.
+*
+*       Therefore, for any given problem there are up to three different
+*       epochs in play, and it is vital to distinguish clearly between
+*       them:
+*
+*       . The epoch of observation:  the moment in time for which the
+*         position of the body is to be predicted.
+*
+*       . The epoch defining the position of the body:  the moment in time
+*         at which, in the absence of purturbations, the specified
+*         position (mean longitude, mean anomaly, or perihelion) is
+*         reached.
+*
+*       . The osculating epoch:  the moment in time at which the given
+*         elements are correct.
+*
+*       For the major-planet and minor-planet cases it is usual to make
+*       the epoch that defines the position of the body the same as the
+*       epoch of osculation.  Thus, only two different epochs are
+*       involved:  the epoch of the elements and the epoch of observation.
+*
+*       For comets, the epoch of perihelion fixes the position in the
+*       orbit and in general a different epoch of osculation will be
+*       chosen.  Thus, all three types of epoch are involved.
+*
+*       For the present routine:
+*
+*       . The epoch of observation is the argument DATE.
+*
+*       . The epoch defining the position of the body is the argument
+*         EPOCH.
+*
+*       . The osculating epoch is not used and is assumed to be close
+*         enough to the epoch of observation to deliver adequate accuracy.
+*         If not, a preliminary call to palPertel may be used to update
+*         the element-set (and its associated osculating epoch) by
+*         applying planetary perturbations.
+*     - Two important sources for orbital elements are Horizons, operated
+*       by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet
+*       Center, operated by the Center for Astrophysics, Harvard.
+*
+*       The JPL Horizons elements (heliocentric, J2000 ecliptic and
+*       equinox) correspond to PAL/SLALIB arguments as follows.
+*
+*        Major planets:
+*
+*         JFORM  = 1
+*         EPOCH  = JDCT-2400000.5
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = OM+W (in radians)
+*         AORQ   = A
+*         E      = EC
+*         AORL   = MA+OM+W (in radians)
+*         DM     = N (in radians)
+*
+*         Epoch of osculation = JDCT-2400000.5
+*
+*        Minor planets:
+*
+*         JFORM  = 2
+*         EPOCH  = JDCT-2400000.5
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = W (in radians)
+*         AORQ   = A
+*         E      = EC
+*         AORL   = MA (in radians)
+*
+*         Epoch of osculation = JDCT-2400000.5
+*
+*        Comets:
+*
+*         JFORM  = 3
+*         EPOCH  = Tp-2400000.5
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = W (in radians)
+*         AORQ   = QR
+*         E      = EC
+*
+*         Epoch of osculation = JDCT-2400000.5
+*
+*      The MPC elements correspond to SLALIB arguments as follows.
+*
+*        Minor planets:
+*
+*         JFORM  = 2
+*         EPOCH  = Epoch-2400000.5
+*         ORBINC = Incl. (in radians)
+*         ANODE  = Node (in radians)
+*         PERIH  = Perih. (in radians)
+*         AORQ   = a
+*         E      = e
+*         AORL   = M (in radians)
+*
+*         Epoch of osculation = Epoch-2400000.5
+*
+*       Comets:
+*
+*         JFORM  = 3
+*         EPOCH  = T-2400000.5
+*         ORBINC = Incl. (in radians)
+*         ANODE  = Node. (in radians)
+*         PERIH  = Perih. (in radians)
+*         AORQ   = q
+*         E      = e
+*
+*         Epoch of osculation = Epoch-2400000.5
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version direct conversion of SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palPlante ( double date, double elong, double phi, int jform,
+		 double epoch, double orbinc, double anode, double perih,
+		 double aorq, double e, double aorl, double dm,
+		 double *ra, double *dec, double *r, int *jstat ) {
+
+  double u[13];
+
+  /* Transform conventional elements to universal elements */
+  palEl2ue( date, jform, epoch, orbinc, anode, perih, aorq, e, aorl,
+	    dm, u, jstat );
+
+  /* If succcessful, make the prediction */
+  if (*jstat == 0) palPlantu( date, elong, phi, u, ra, dec, r, jstat );
+
+}
+
+
+
Index: branches/FACT++_part_filenames/pal/palPlantu.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPlantu.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPlantu.c	(revision 18732)
@@ -0,0 +1,189 @@
+/*
+*+
+*  Name:
+*     palPlantu
+
+*  Purpose:
+*     Topocentric RA,Dec of a Solar-System object from universal elements
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPlantu ( double date, double elong, double phi, const double u[13],
+*                      double *ra, double *dec, double *r, int *jstat ) {
+
+*  Description:
+*     Topocentric apparent RA,Dec of a Solar-System object whose
+*     heliocentric universal elements are known.
+
+*  Arguments:
+*     date = double (Given)
+*        TT MJD of observation (JD-2400000.5)
+*     elong = double (Given)
+*        Observer's east longitude (radians)
+*     phi = double (Given)
+*        Observer's geodetic latitude (radians)
+*     u = const double [13] (Given)
+*        Universal orbital elements
+*          -   (0)  combined mass (M+m)
+*          -   (1)  total energy of the orbit (alpha)
+*          -   (2)  reference (osculating) epoch (t0)
+*          - (3-5)  position at reference epoch (r0)
+*          - (6-8)  velocity at reference epoch (v0)
+*          -   (9)  heliocentric distance at reference epoch
+*          -  (10)  r0.v0
+*          -  (11)  date (t)
+*          -  (12)  universal eccentric anomaly (psi) of date, approx
+*     ra = double * (Returned)
+*        Topocentric apparent RA (radians)
+*     dec = double * (Returned)
+*        Topocentric apparent Dec (radians)
+*     r = double * (Returned)
+*        Distance from observer (AU)
+*     jstat = int * (Returned)
+*        status: 0 = OK
+*             - -1 = radius vector zero
+*             - -2 = failed to converge
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - DATE is the instant for which the prediction is required.  It is
+*       in the TT timescale (formerly Ephemeris Time, ET) and is a
+*       Modified Julian Date (JD-2400000.5).
+*     - The longitude and latitude allow correction for geocentric
+*       parallax.  This is usually a small effect, but can become
+*       important for near-Earth asteroids.  Geocentric positions can be
+*       generated by appropriate use of routines palEpv (or palEvp) and
+*       palUe2pv.
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference 2).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - The universal elements are with respect to the J2000 equator and
+*       equinox.
+
+*  See Also:
+*     - Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*       Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*     - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-12 (TIMJ):
+*        Initial version direct conversion of SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+#include "pal1sofa.h"
+
+void palPlantu ( double date, double elong, double phi, const double u[13],
+                 double *ra, double *dec, double *r, int *jstat ) {
+
+  int i;
+  double dvb[3], dpb[3], vsg[6], vsp[6], v[6], rmat[3][3],
+    vgp[6], stl, vgo[6], dx, dy, dz, d, tl;
+
+  double ucp[13];
+
+  /* To retain the stated const API and conform to the documentation
+     we must copy the contents of the u array as palUe2pv updates
+     the final two elements */
+  for (i=0;i<13;i++) {
+    ucp[i] = u[i];
+  }
+
+  /* Sun to geocentre (J2000, velocity in AU/s) */
+  palEpv( date, vsg, &(vsg[3]), dpb, dvb );
+  for (i=3; i < 6; i++) {
+    vsg[i] /= PAL__SPD;
+  }
+
+  /* Sun to planet (J2000) */
+  palUe2pv( date, ucp, vsp, jstat );
+
+  /* Geocentre to planet (J2000) */
+  for (i=0; i<6; i++) {
+    v[i] = vsp[i] - vsg[i];
+  }
+
+  /* Precession and nutation to date */
+  palPrenut( 2000.0, date, rmat );
+  eraRxp(rmat, v, vgp);
+  eraRxp( rmat, &(v[3]), &(vgp[3]) );
+
+  /* Geocentre to observer (date) */
+  stl = palGmst( date - palDt( palEpj(date) ) / PAL__SPD ) + elong;
+  palPvobs( phi, 0.0, stl, vgo );
+
+  /* Observer to planet (date) */
+  for (i=0; i<6; i++) {
+    v[i] = vgp[i] - vgo[i];
+  }
+
+  /* Geometric distance (AU) */
+  dx = v[0];
+  dy = v[1];
+  dz = v[2];
+  d = sqrt( dx*dx + dy*dy + dz*dz );
+
+  /* Light time (sec) */
+  tl = PAL__CR * d;
+
+  /* Correct position for planetary aberration */
+  for (i=0; i<3; i++) {
+    v[i] -= tl * v[i+3];
+  }
+
+  /* To RA,Dec */
+  eraC2s( v, ra, dec );
+  *ra = eraAnp( *ra );
+  *r = d;
+}
+
Index: branches/FACT++_part_filenames/pal/palPm.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPm.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPm.c	(revision 18732)
@@ -0,0 +1,108 @@
+/*
+*+
+*  Name:
+*     palPm
+
+*  Purpose:
+*     Apply corrections for proper motion a star RA,Dec
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPm ( double r0, double d0, double pr, double pd,
+*                  double px, double rv, double ep0, double ep1,
+*                  double *r1, double *d1 );
+
+*  Arguments:
+*     r0 = double (Given)
+*        RA at epoch ep0 (radians)
+*     d0 = double (Given)
+*        Dec at epoch ep0 (radians)
+*     pr = double (Given)
+*        RA proper motion in radians per year.
+*     pd = double (Given)
+*        Dec proper motion in radians per year.
+*     px = double (Given)
+*        Parallax (arcsec)
+*     rv = double (Given)
+*        Radial velocity (km/sec +ve if receding)
+*     ep0 = double (Given)
+*        Start epoch in years, assumed to be Julian.
+*     ep1 = double (Given)
+*        End epoch in years, assumed to be Julian.
+*     r1 = double * (Returned)
+*        RA at epoch ep1 (radians)
+*     d1 = double * (Returned)
+*        Dec at epoch ep1 (radians)
+
+*  Description:
+*     Apply corrections for proper motion to a star RA,Dec using the
+*     SOFA/ERFA routine eraStarpm.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Uses eraStarpm but ignores the status returns from that routine.
+*       In particular note that parallax should not be zero when the
+*       proper motions are non-zero. SLA/F allows parallax to be zero.
+*     - Assumes all epochs are Julian epochs.
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palPm ( double r0, double d0, double pr, double pd,
+             double px, double rv, double ep0, double ep1,
+             double *r1, double *d1 ) {
+
+  int status;
+  double ep1a, ep1b, ep2a, ep2b;
+  double pmr2, pmd2, px2, rv2;
+
+  /* SOFA/ERFA requires the epochs in TDB MJD so we have to
+     assume that the supplied epochs are Julian years */
+  eraEpj2jd( ep0, &ep1a, &ep1b );
+  eraEpj2jd( ep1, &ep2a, &ep2b );
+
+  status = eraStarpm( r0, d0, pr, pd, px, rv,
+                      ep1a, ep1b, ep2a, ep2b,
+                      r1, d1,
+                      &pmr2, &pmd2, &px2, &rv2 );
+
+}
Index: branches/FACT++_part_filenames/pal/palPolmo.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPolmo.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPolmo.c	(revision 18732)
@@ -0,0 +1,190 @@
+/*
+*+
+*  Name:
+*     palPolmo
+
+*  Purpose:
+*     Correct for polar motion
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palPolmo ( double elongm, double phim, double xp, double yp,
+*                double *elong, double *phi, double *daz );
+
+*  Arguments:
+*     elongm = double (Given)
+*        Mean logitude of the observer (radians, east +ve)
+*     phim = double (Given)
+*        Mean geodetic latitude of the observer (radians)
+*     xp = double (Given)
+*        Polar motion x-coordinate (radians)
+*     yp = double (Given)
+*        Polar motion y-coordinate (radians)
+*     elong = double * (Returned)
+*        True longitude of the observer (radians, east +ve)
+*     phi = double * (Returned)
+*        True geodetic latitude of the observer (radians)
+*     daz = double * (Returned)
+*        Azimuth correction (terrestrial-celestial, radians)
+
+*  Description:
+*     Polar motion:  correct site longitude and latitude for polar
+*     motion and calculate azimuth difference between celestial and
+*     terrestrial poles.
+
+*  Authors:
+*     PTW: Patrick Wallace (STFC)
+*     TIMJ: Tim Jenness (Cornell)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - "Mean" longitude and latitude are the (fixed) values for the
+*       site's location with respect to the IERS terrestrial reference
+*       frame;  the latitude is geodetic.  TAKE CARE WITH THE LONGITUDE
+*       SIGN CONVENTION.  The longitudes used by the present routine
+*       are east-positive, in accordance with geographical convention
+*       (and right-handed).  In particular, note that the longitudes
+*       returned by the sla_OBS routine are west-positive, following
+*       astronomical usage, and must be reversed in sign before use in
+*       the present routine.
+*
+*     - XP and YP are the (changing) coordinates of the Celestial
+*       Ephemeris Pole with respect to the IERS Reference Pole.
+*       XP is positive along the meridian at longitude 0 degrees,
+*       and YP is positive along the meridian at longitude
+*       270 degrees (i.e. 90 degrees west).  Values for XP,YP can
+*       be obtained from IERS circulars and equivalent publications;
+*       the maximum amplitude observed so far is about 0.3 arcseconds.
+*
+*     - "True" longitude and latitude are the (moving) values for
+*       the site's location with respect to the celestial ephemeris
+*       pole and the meridian which corresponds to the Greenwich
+*       apparent sidereal time.  The true longitude and latitude
+*       link the terrestrial coordinates with the standard celestial
+*       models (for precession, nutation, sidereal time etc).
+*
+*     - The azimuths produced by sla_AOP and sla_AOPQK are with
+*       respect to due north as defined by the Celestial Ephemeris
+*       Pole, and can therefore be called "celestial azimuths".
+*       However, a telescope fixed to the Earth measures azimuth
+*       essentially with respect to due north as defined by the
+*       IERS Reference Pole, and can therefore be called "terrestrial
+*       azimuth".  Uncorrected, this would manifest itself as a
+*       changing "azimuth zero-point error".  The value DAZ is the
+*       correction to be added to a celestial azimuth to produce
+*       a terrestrial azimuth.
+*
+*     - The present routine is rigorous.  For most practical
+*       purposes, the following simplified formulae provide an
+*       adequate approximation:
+*
+*       elong = elongm+xp*cos(elongm)-yp*sin(elongm)
+*       phi   = phim+(xp*sin(elongm)+yp*cos(elongm))*tan(phim)
+*       daz   = -sqrt(xp*xp+yp*yp)*cos(elongm-atan2(xp,yp))/cos(phim)
+*
+*       An alternative formulation for DAZ is:
+*
+*       x = cos(elongm)*cos(phim)
+*       y = sin(elongm)*cos(phim)
+*       daz = atan2(-x*yp-y*xp,x*x+y*y)
+*
+*     - Reference:  Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement
+*                   to the Astronomical Almanac", ISBN 0-935702-68-7,
+*                   sections 3.27, 4.25, 4.52.
+
+*  History:
+*     2000-11-30 (PTW):
+*        SLALIB implementation.
+*     2014-10-18 (TIMJ):
+*        Initial version in C.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2000 Rutherford Appleton Laboratory.
+*     Copyright (C) 2014 Cornell University
+*     All Rights Reserved.
+
+*  Licence:
+*     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 <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+
+void palPolmo ( double elongm, double phim, double xp, double yp,
+                double *elong, double *phi, double *daz ) {
+
+  double  sel,cel,sph,cph,xm,ym,zm,xnm,ynm,znm,
+    sxp,cxp,syp,cyp,zw,xt,yt,zt,xnt,ynt;
+
+  /*  Site mean longitude and mean geodetic latitude as a Cartesian vector */
+  sel=sin(elongm);
+  cel=cos(elongm);
+  sph=sin(phim);
+  cph=cos(phim);
+
+  xm=cel*cph;
+  ym=sel*cph;
+  zm=sph;
+
+  /*  Rotate site vector by polar motion, Y-component then X-component */
+  sxp=sin(xp);
+  cxp=cos(xp);
+  syp=sin(yp);
+  cyp=cos(yp);
+
+  zw=(-ym*syp+zm*cyp);
+
+  xt=xm*cxp-zw*sxp;
+  yt=ym*cyp+zm*syp;
+  zt=xm*sxp+zw*cxp;
+
+  /*  Rotate also the geocentric direction of the terrestrial pole (0,0,1) */
+  xnm=-sxp*cyp;
+  ynm=syp;
+  znm=cxp*cyp;
+
+  cph=sqrt(xt*xt+yt*yt);
+  if (cph == 0.0) xt=1.0;
+  sel=yt/cph;
+  cel=xt/cph;
+
+  /*  Return true longitude and true geodetic latitude of site */
+  if (xt != 0.0 || yt != 0.0) {
+    *elong=atan2(yt,xt);
+  } else {
+    *elong=0.0;
+  }
+  *phi=atan2(zt,cph);
+
+  /*  Return current azimuth of terrestrial pole seen from site position */
+  xnt=(xnm*cel+ynm*sel)*zt-znm*cph;
+  ynt=-xnm*sel+ynm*cel;
+  if (xnt != 0.0 || ynt != 0.0) {
+    *daz=atan2(-ynt,-xnt);
+  } else {
+    *daz=0.0;
+  }
+
+}
Index: branches/FACT++_part_filenames/pal/palPrebn.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPrebn.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPrebn.c	(revision 18732)
@@ -0,0 +1,98 @@
+/*
+*+
+*  Name:
+*     palPrebn
+
+*  Purpose:
+*     Generate the matrix of precession between two objects (old)
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPrebn ( double bep0, double bep1, double rmatp[3][3] );
+
+*  Arguments:
+*     bep0 = double (Given)
+*        Beginning Besselian epoch.
+*     bep1 = double (Given)
+*        Ending Besselian epoch
+*     rmatp = double[3][3] (Returned)
+*        precession matrix in the sense V(BEP1) = RMATP * V(BEP0)
+
+*  Description:
+*     Generate the matrix of precession between two epochs,
+*     using the old, pre-IAU1976, Bessel-Newcomb model, using
+*     Kinoshita's formulation
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  See Also:
+*     Kinoshita, H. (1975) 'Formulas for precession', SAO Special
+*     Report No. 364, Smithsonian Institution Astrophysical
+*     Observatory, Cambridge, Massachusetts.
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+
+void palPrebn ( double bep0, double bep1, double rmatp[3][3] ) {
+
+  double t,bigt, zeta, theta, z, tas2r, w;
+
+  /* Interval between basic epoch B1850.0 and beginning epoch in TC */
+  bigt = (bep0-1850)/100.;
+
+  /*  Interval over which precession required, in tropical centuries */
+  t = (bep1-bep0)/100.;
+
+  /* Euler angles */
+  tas2r = t * PAL__DAS2R;
+  w = 2303.5548 + ( 1.39720 + 0.000059 * bigt) * bigt;
+
+  zeta = ( w + ( 0.30242 - 0.000269 * bigt + 0.017996 * t ) * t ) * tas2r;
+  z = ( w + ( 1.09478 + 0.000387 * bigt + 0.018324 * t ) * t ) * tas2r;
+  theta = ( 2005.1125 + ( -0.85294 - 0.000365 * bigt ) * bigt +
+	    (-0.42647 - 0.000365 * bigt - 0.041802 * t ) * t ) * tas2r;
+
+  /*  Rotation matrix */
+  palDeuler("ZYZ", -zeta, theta, -z, rmatp);
+
+}
Index: branches/FACT++_part_filenames/pal/palPrec.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPrec.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPrec.c	(revision 18732)
@@ -0,0 +1,107 @@
+/*
+*+
+*  Name:
+*     palPrec
+
+*  Purpose:
+*     Form the matrix of precession between two epochs (IAU 2006)
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palPrec( double ep0, double ep1, double rmatp[3][3] )
+
+*  Arguments:
+*     ep0 = double (Given)
+*        Beginning epoch
+*     ep1 = double (Given)
+*        Ending epoch
+*     rmatp = double[3][3] (Returned)
+*        Precession matrix
+
+*  Description:
+*     The IAU 2006 precession matrix from ep0 to ep1 is found and
+*     returned. The matrix is in the sense  V(EP1)  =  RMATP * V(EP0).
+*     The epochs are TDB (loosely TT) Julian epochs.
+*
+*     Though the matrix method itself is rigorous, the precession
+*     angles are expressed through canonical polynomials which are
+*     valid only for a limited time span of a few hundred years around
+*     the current epoch.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-10 (DSB):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1996 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palPrec( double ep0, double ep1, double rmatp[3][3] ){
+
+/* Local Variables: */
+   double rmatq[3][3];
+   double ep0_days;
+   double ep1_days;
+
+/* Convert supplied dates to days since J2000 */
+   ep0_days = ( ep0 - 2000.0 )*ERFA_DJY;
+   ep1_days = ( ep1 - 2000.0 )*ERFA_DJY;
+
+/* If beginning epoch is J2000, just return the rotation matrix from
+   J2000 to EP1. */
+   if( ep0 == 2000.0 ) {
+      eraPmat06( ERFA_DJ00, ep1_days, rmatp );
+
+/* If end epoch is J2000, get the rotation matrix from J2000 to EP0 and
+   then transpose it to get the rotation matrix from EP0 to J2000. */
+   } else if( ep1 == 2000.0 ) {
+      eraPmat06( ERFA_DJ00, ep0_days, rmatp );
+      eraTr( rmatp, rmatp );
+
+/* Otherwise. get the two matrices used above and multiply them
+   together. */
+   } else {
+      eraPmat06( ERFA_DJ00, ep0_days, rmatp );
+      eraTr( rmatp, rmatp );
+      eraPmat06( ERFA_DJ00, ep1_days, rmatq );
+      eraRxr( rmatp, rmatq, rmatp );
+   }
+
+}
Index: branches/FACT++_part_filenames/pal/palPreces.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPreces.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPreces.c	(revision 18732)
@@ -0,0 +1,118 @@
+/*
+*+
+*  Name:
+*     palPreces
+
+*  Purpose:
+*     Precession - either FK4 or FK5 as required.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPreces ( const char sys[3], double ep0, double ep1,
+*                      double *ra, double *dc );
+
+*  Arguments:
+*     sys = const char [3] (Given)
+*        Precession to be applied: FK4 or FK5. Case insensitive.
+*     ep0 = double (Given)
+*        Starting epoch.
+*     ep1 = double (Given)
+*        Ending epoch
+*     ra = double * (Given & Returned)
+*        On input the RA mean equator & equinox at epoch ep0. On exit
+*        the RA mean equator & equinox of epoch ep1.
+*     dec = double * (Given & Returned)
+*        On input the dec mean equator & equinox at epoch ep0. On exit
+*        the dec mean equator & equinox of epoch ep1.
+
+*  Description:
+*     Precess coordinates using the appropriate system and epochs.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Uses palPrec for FK5 data and palPrebn for FK4 data.
+*     - The epochs are Besselian if SYSTEM='FK4' and Julian if 'FK5'.
+*        For example, to precess coordinates in the old system from
+*        equinox 1900.0 to 1950.0 the call would be:
+*             palPreces( "FK4", 1900.0, 1950.0, &ra, &dc );
+*     - This routine will NOT correctly convert between the old and
+*       the new systems - for example conversion from B1950 to J2000.
+*       For these purposes see palFk425, palFk524, palFk45z and
+*       palFk54z.
+*     - If an invalid SYSTEM is supplied, values of -99D0,-99D0 will
+*       be returned for both RA and DC.
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+#include <string.h>
+
+void palPreces ( const char sys[3], double ep0, double ep1,
+                 double *ra, double *dc ) {
+
+  double pm[3][3];
+  double v1[3];
+  double v2[3];
+
+  /* Generate appropriate precession matrix */
+  if ( strncasecmp( "FK4", sys, 3 ) == 0 ) {
+    palPrebn( ep0, ep1, pm );
+  } else if (strncasecmp( "FK5", sys, 3 ) == 0 ) {
+    palPrec( ep0, ep1, pm );
+  } else {
+    *ra = -99.0;
+    *dc = -99.0;
+    return;
+  }
+
+  /* Convert RA,Dec to x,y,z */
+  eraS2c( *ra, *dc, v1 );
+
+  /* Precess */
+  eraRxp( pm, v1, v2 );
+
+  /* Back to RA,Dec */
+  eraC2s( v2, ra, dc );
+  *ra = eraAnp( *ra );
+}
Index: branches/FACT++_part_filenames/pal/palPrenut.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPrenut.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPrenut.c	(revision 18732)
@@ -0,0 +1,111 @@
+/*
+*+
+*  Name:
+*     palPrenut
+
+*  Purpose:
+*     Form the matrix of bias-precession-nutation (IAU 2006/2000A)
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPrenut( double epoch, double date, double rmatpn[3][3] )
+
+*  Arguments:
+*     epoch = double (Returned)
+*        Julian epoch for mean coordinates.
+*     date = double (Returned)
+*        Modified Julian Date (JD-2400000.5) for true coordinates.
+*     rmatpn = double[3][3] (Returned)
+*        combined NPB matrix
+
+*  Description:
+*     Form the matrix of bias-precession-nutation (IAU 2006/2000A).
+*     The epoch and date are TT (but TDB is usually close enough).
+*     The matrix is in the sense   v(true)  =  rmatpn * v(mean).
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-10 (PTW):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palPrenut ( double epoch, double date, double rmatpn[3][3] ){
+
+/* Local Variables: */
+   double bpa;
+   double bpia;
+   double bqa;
+   double chia;
+   double d1;
+   double d2;
+   double eps0;
+   double epsa;
+   double gam;
+   double oma;
+   double pa;
+   double phi;
+   double pia;
+   double psi;
+   double psia;
+   double r1[3][3];
+   double r2[3][3];
+   double thetaa;
+   double za;
+   double zetaa;
+
+/* Specified Julian epoch as a 2-part JD. */
+   eraEpj2jd( epoch, &d1, &d2 );
+
+/* P matrix, from specified epoch to J2000.0. */
+   eraP06e( d1, d2, &eps0, &psia, &oma, &bpa, &bqa, &pia, &bpia, &epsa,
+            &chia, &za, &zetaa, &thetaa, &pa, &gam, &phi, &psi );
+   eraIr( r1 );
+   eraRz( -chia, r1 );
+   eraRx( oma, r1 );
+   eraRz( psia, r1 );
+   eraRx( -eps0, r1 );
+
+/* NPB matrix, from J2000.0 to date. */
+   eraPnm06a( PAL__MJD0, date, r2 );
+
+/* NPB matrix, from specified epoch to date. */
+   eraRxr( r2, r1, rmatpn );
+}
Index: branches/FACT++_part_filenames/pal/palPv2el.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPv2el.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPv2el.c	(revision 18732)
@@ -0,0 +1,405 @@
+/*
+*+
+*  Name:
+*     palPv2el
+
+*  Purpose:
+*     Position velocity to heliocentirc osculating elements
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPv2el ( const double pv[6], double date, double pmass, int jformr,
+*                     int *jform, double *epoch, double *orbinc,
+*                     double *anode, double *perih, double *aorq, double *e,
+*                     double *aorl, double *dm, int *jstat );
+
+*  Arguments:
+*     pv = const double [6] (Given)
+*        Heliocentric x,y,z,xdot,ydot,zdot of date,
+*        J2000 equatorial triad (AU,AU/s; Note 1)
+*     date = double (Given)
+*        Date (TT Modified Julian Date = JD-2400000.5)
+*     pmass = double (Given)
+*        Mass of the planet (Sun=1; Note 2)
+*     jformr = int (Given)
+*        Requested element set (1-3; Note 3)
+*     jform = int * (Returned)
+*        Element set actually returned (1-3; Note 4)
+*     epoch = double * (Returned)
+*        Epoch of elements (TT MJD)
+*     orbinc = double * (Returned)
+*        inclination (radians)
+*     anode = double * (Returned)
+*        longitude of the ascending node (radians)
+*     perih = double * (Returned)
+*        longitude or argument of perihelion (radians)
+*     aorq = double * (Returned)
+*        mean distance or perihelion distance (AU)
+*     e = double * (Returned)
+*        eccentricity
+*     aorl = double * (Returned)
+*        mean anomaly or longitude (radians, JFORM=1,2 only)
+*     dm = double * (Returned)
+*        daily motion (radians, JFORM=1 only)
+*     jstat = int * (Returned)
+*        status:  0 = OK
+*               - -1 = illegal PMASS
+*               - -2 = illegal JFORMR
+*               - -3 = position/velocity out of range
+
+*  Description:
+*     Heliocentric osculating elements obtained from instantaneous position
+*     and velocity.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The PV 6-vector is with respect to the mean equator and equinox of
+*       epoch J2000.  The orbital elements produced are with respect to
+*       the J2000 ecliptic and mean equinox.
+*     - The mass, PMASS, is important only for the larger planets.  For
+*       most purposes (e.g. asteroids) use 0D0.  Values less than zero
+*       are illegal.
+*     - Three different element-format options are supported:
+*
+*       Option JFORM=1, suitable for the major planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = longitude of perihelion, curly pi (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e
+*       AORL   = mean longitude L (radians)
+*       DM     = daily motion (radians)
+*
+*       Option JFORM=2, suitable for minor planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e
+*       AORL   = mean anomaly M (radians)
+*
+*       Option JFORM=3, suitable for comets:
+*
+*       EPOCH  = epoch of perihelion (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = perihelion distance, q (AU)
+*       E      = eccentricity, e
+*
+*     - It may not be possible to generate elements in the form
+*       requested through JFORMR.  The caller is notified of the form
+*       of elements actually returned by means of the JFORM argument:
+
+*        JFORMR   JFORM     meaning
+*
+*          1        1       OK - elements are in the requested format
+*          1        2       never happens
+*          1        3       orbit not elliptical
+*
+*          2        1       never happens
+*          2        2       OK - elements are in the requested format
+*          2        3       orbit not elliptical
+*
+*          3        1       never happens
+*          3        2       never happens
+*          3        3       OK - elements are in the requested format
+*
+*     - The arguments returned for each value of JFORM (cf Note 5: JFORM
+*       may not be the same as JFORMR) are as follows:
+*
+*         JFORM         1              2              3
+*         EPOCH         t0             t0             T
+*         ORBINC        i              i              i
+*         ANODE         Omega          Omega          Omega
+*         PERIH         curly pi       omega          omega
+*         AORQ          a              a              q
+*         E             e              e              e
+*         AORL          L              M              -
+*         DM            n              -              -
+*
+*       where:
+*
+*         t0           is the epoch of the elements (MJD, TT)
+*         T              "    epoch of perihelion (MJD, TT)
+*         i              "    inclination (radians)
+*         Omega          "    longitude of the ascending node (radians)
+*         curly pi       "    longitude of perihelion (radians)
+*         omega          "    argument of perihelion (radians)
+*         a              "    mean distance (AU)
+*         q              "    perihelion distance (AU)
+*         e              "    eccentricity
+*         L              "    longitude (radians, 0-2pi)
+*         M              "    mean anomaly (radians, 0-2pi)
+*         n              "    daily motion (radians)
+*         -             means no value is set
+*
+*     - At very small inclinations, the longitude of the ascending node
+*       ANODE becomes indeterminate and under some circumstances may be
+*       set arbitrarily to zero.  Similarly, if the orbit is close to
+*       circular, the true anomaly becomes indeterminate and under some
+*       circumstances may be set arbitrarily to zero.  In such cases,
+*       the other elements are automatically adjusted to compensate,
+*       and so the elements remain a valid description of the orbit.
+*     - The osculating epoch for the returned elements is the argument
+*       DATE.
+*
+*     - Reference:  Sterne, Theodore E., "An Introduction to Celestial
+*                   Mechanics", Interscience Publishers, 1960
+
+*  History:
+*     2012-03-09 (TIMJ):
+*        Initial version converted from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal1sofa.h"
+#include "pal.h"
+#include "palmac.h"
+
+void palPv2el ( const double pv[6], double date, double pmass, int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat ) {
+
+  /*  Sin and cos of J2000 mean obliquity (IAU 1976) */
+  const double SE = 0.3977771559319137;
+  const double CE = 0.9174820620691818;
+
+  /*  Minimum allowed distance (AU) and speed (AU/day) */
+  const double RMIN = 1e-3;
+  const double VMIN = 1e-8;
+
+  /*  How close to unity the eccentricity has to be to call it a parabola */
+  const double PARAB = 1.0e-8;
+
+  double X,Y,Z,XD,YD,ZD,R,V2,V,RDV,GMU,HX,HY,HZ,
+    HX2PY2,H2,H,OI,BIGOM,AR,ECC,S,C,AT,U,OM,
+    GAR3,EM1,EP1,HAT,SHAT,CHAT,AE,AM,DN,PL,
+    EL,Q,TP,THAT,THHF,F;
+
+  int JF;
+
+  /*  Validate arguments PMASS and JFORMR.*/
+  if (pmass < 0.0) {
+    *jstat = -1;
+    return;
+  }
+  if (jformr < 1 || jformr > 3) {
+    *jstat = -2;
+    return;
+  }
+
+  /*  Provisionally assume the elements will be in the chosen form. */
+  JF = jformr;
+
+  /*  Rotate the position from equatorial to ecliptic coordinates. */
+  X = pv[0];
+  Y = pv[1]*CE+pv[2]*SE;
+  Z = -pv[1]*SE+pv[2]*CE;
+
+  /*  Rotate the velocity similarly, scaling to AU/day. */
+  XD = PAL__SPD*pv[3];
+  YD = PAL__SPD*(pv[4]*CE+pv[5]*SE);
+  ZD = PAL__SPD*(-pv[4]*SE+pv[5]*CE);
+
+  /*  Distance and speed. */
+  R = sqrt(X*X+Y*Y+Z*Z);
+  V2 = XD*XD+YD*YD+ZD*ZD;
+  V = sqrt(V2);
+
+  /*  Reject unreasonably small values. */
+  if (R < RMIN || V < VMIN) {
+    *jstat = -3;
+    return;
+  }
+
+  /*  R dot V. */
+  RDV = X*XD+Y*YD+Z*ZD;
+
+  /*  Mu. */
+  GMU = (1.0+pmass)*PAL__GCON*PAL__GCON;
+
+  /*  Vector angular momentum per unit reduced mass. */
+  HX = Y*ZD-Z*YD;
+  HY = Z*XD-X*ZD;
+  HZ = X*YD-Y*XD;
+
+  /*  Areal constant. */
+  HX2PY2 = HX*HX+HY*HY;
+  H2 = HX2PY2+HZ*HZ;
+  H = sqrt(H2);
+
+  /*  Inclination. */
+  OI = atan2(sqrt(HX2PY2),HZ);
+
+  /*  Longitude of ascending node. */
+  if (HX != 0.0 || HY != 0.0) {
+    BIGOM = atan2(HX,-HY);
+  } else {
+    BIGOM=0.0;
+  }
+
+  /*  Reciprocal of mean distance etc. */
+  AR = 2.0/R-V2/GMU;
+
+  /*  Eccentricity. */
+  ECC = sqrt(DMAX(1.0-AR*H2/GMU,0.0));
+
+  /*  True anomaly. */
+  S = H*RDV;
+  C = H2-R*GMU;
+  if (S != 0.0 || C != 0.0) {
+    AT = atan2(S,C);
+  } else {
+    AT = 0.0;
+  }
+
+  /*  Argument of the latitude. */
+  S = sin(BIGOM);
+  C = cos(BIGOM);
+  U = atan2((-X*S+Y*C)*cos(OI)+Z*sin(OI),X*C+Y*S);
+
+  /*  Argument of perihelion. */
+  OM = U-AT;
+
+  /*  Capture near-parabolic cases. */
+  if (fabs(ECC-1.0) < PARAB) ECC=1.0;
+
+  /*  Comply with JFORMR = 1 or 2 only if orbit is elliptical. */
+  if (ECC > 1.0) JF=3;
+
+  /*  Functions. */
+  GAR3 = GMU*AR*AR*AR;
+  EM1 = ECC-1.0;
+  EP1 = ECC+1.0;
+  HAT = AT/2.0;
+  SHAT = sin(HAT);
+  CHAT = cos(HAT);
+
+  /*  Variable initializations to avoid compiler warnings. */
+  AM = 0.0;
+  DN = 0.0;
+  PL = 0.0;
+  EL = 0.0;
+  Q = 0.0;
+  TP = 0.0;
+
+  /*  Ellipse? */
+  if (ECC < 1.0 ) {
+
+    /*     Eccentric anomaly. */
+    AE = 2.0*atan2(sqrt(-EM1)*SHAT,sqrt(EP1)*CHAT);
+
+    /*     Mean anomaly. */
+    AM = AE-ECC*sin(AE);
+
+    /*     Daily motion. */
+    DN = sqrt(GAR3);
+  }
+
+  /*  "Major planet" element set? */
+  if (JF == 1) {
+
+    /*     Longitude of perihelion. */
+    PL = BIGOM+OM;
+
+    /*     Longitude at epoch. */
+    EL = PL+AM;
+  }
+
+  /*  "Comet" element set? */
+  if (JF == 3) {
+
+    /*     Perihelion distance. */
+    Q = H2/(GMU*EP1);
+
+    /*     Ellipse, parabola, hyperbola? */
+    if (ECC < 1.0) {
+
+      /*        Ellipse: epoch of perihelion. */
+      TP = date-AM/DN;
+
+    } else {
+
+      /*        Parabola or hyperbola: evaluate tan ( ( true anomaly ) / 2 ) */
+      THAT = SHAT/CHAT;
+      if (ECC == 1.0) {
+
+        /*           Parabola: epoch of perihelion. */
+        TP = date-THAT*(1.0+THAT*THAT/3.0)*H*H2/(2.0*GMU*GMU);
+
+      } else {
+
+        /*           Hyperbola: epoch of perihelion. */
+        THHF = sqrt(EM1/EP1)*THAT;
+        F = log(1.0+THHF)-log(1.0-THHF);
+        TP = date-(ECC*sinh(F)-F)/sqrt(-GAR3);
+      }
+    }
+  }
+
+  /*  Return the appropriate set of elements. */
+  *jform = JF;
+  *orbinc = OI;
+  *anode = eraAnp(BIGOM);
+  *e = ECC;
+  if (JF == 1) {
+    *perih = eraAnp(PL);
+    *aorl = eraAnp(EL);
+    *dm = DN;
+  } else {
+    *perih = eraAnp(OM);
+    if (JF == 2) *aorl = eraAnp(AM);
+  }
+  if (JF != 3) {
+    *epoch = date;
+    *aorq = 1.0/AR;
+  } else {
+    *epoch = TP;
+    *aorq = Q;
+  }
+  *jstat = 0;
+
+}
Index: branches/FACT++_part_filenames/pal/palPv2ue.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPv2ue.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPv2ue.c	(revision 18732)
@@ -0,0 +1,182 @@
+/*
+*+
+*  Name:
+*     palPv2ue
+
+*  Purpose:
+*     Universal elements to position and velocity.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palPv2ue( const double pv[6], double date, double pmass,
+*                    double u[13], int * jstat );
+
+*  Arguments:
+*     pv = double [6] (Given)
+*        Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1)
+*     date = double (Given)
+*        Date (TT modified Julian Date = JD-2400000.5)
+*     pmass = double (Given)
+*        Mass of the planet (Sun=1; note 2)
+*     u = double [13] (Returned)
+*        Universal orbital elements (Note 3)
+*
+*          -  (0)  combined mass (M+m)
+*          -   (1)  total energy of the orbit (alpha)
+*          -   (2)  reference (osculating) epoch (t0)
+*          - (3-5)  position at reference epoch (r0)
+*          - (6-8)  velocity at reference epoch (v0)
+*          -   (9)  heliocentric distance at reference epoch
+*          -  (10)  r0.v0
+*          -  (11)  date (t)
+*          -  (12)  universal eccentric anomaly (psi) of date, approx
+*     jstat = int * (Returned)
+*        status: 0 = OK
+*               - -1 = illegal PMASS
+*               - -2 = too close to Sun
+*               - -3 = too slow
+
+*  Description:
+*     Construct a universal element set based on an instantaneous position
+*     and velocity.
+
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The PV 6-vector can be with respect to any chosen inertial frame,
+*       and the resulting universal-element set will be with respect to
+*       the same frame.  A common choice will be mean equator and ecliptic
+*       of epoch J2000.
+*     - The mass, PMASS, is important only for the larger planets.  For
+*       most purposes (e.g. asteroids) use 0D0.  Values less than zero
+*       are illegal.
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - Reference:  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-09 (TIMJ):
+*        Initial version from the SLA/F implementation.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void palPv2ue( const double pv[6], double date, double pmass,
+               double u[13], int * jstat ) {
+
+  /*  Canonical days to seconds */
+  const double CD2S = PAL__GCON / PAL__SPD;
+
+  /*  Minimum allowed distance (AU) and speed (AU per canonical day) */
+  const double RMIN = 1e-3;
+  const double VMIN = 1e-3;
+
+  double T0,CM,X,Y,Z,XD,YD,ZD,R,V2,V,ALPHA,RDV;
+
+  /*  Reference epoch. */
+  T0 = date;
+
+  /*  Combined mass (mu=M+m). */
+  if (pmass < 0.0 ) { /* Negative planet mass */
+    *jstat = -1;
+    return;
+  }
+  CM = 1.0+pmass;
+
+  /*  Unpack the state vector, expressing velocity in AU per canonical day. */
+  X = pv[0];
+  Y = pv[1];
+  Z = pv[2];
+  XD = pv[3]/CD2S;
+  YD = pv[4]/CD2S;
+  ZD = pv[5]/CD2S;
+
+  /*  Heliocentric distance, and speed. */
+  R = sqrt(X*X+Y*Y+Z*Z);
+  V2 = XD*XD+YD*YD+ZD*ZD;
+  V = sqrt(V2);
+
+  /*  Reject unreasonably small values. */
+  if (R < RMIN) { /* Too close */
+    *jstat = -2;
+    return;
+  }
+  if (V < VMIN) { /* Too slow */
+    *jstat = -3;
+    return;
+  }
+
+  /*  Total energy of the orbit. */
+  ALPHA = V2-2.0*CM/R;
+
+  /*  Outward component of velocity. */
+  RDV = X*XD+Y*YD+Z*ZD;
+
+  /*  Construct the universal-element set. */
+  u[0] = CM;
+  u[1] = ALPHA;
+  u[2] = T0;
+  u[3] = X;
+  u[4] = Y;
+  u[5] = Z;
+  u[6] = XD;
+  u[7] = YD;
+  u[8] = ZD;
+  u[9] = R;
+  u[10] = RDV;
+  u[11] = T0;
+  u[12] = 0.0;
+
+  *jstat = 0;
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palPvobs.c
===================================================================
--- branches/FACT++_part_filenames/pal/palPvobs.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palPvobs.c	(revision 18732)
@@ -0,0 +1,108 @@
+/*
+*+
+*  Name:
+*     palPvobs
+
+*  Purpose:
+*     Position and velocity of an observing station.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palPvobs( double p, double h, double stl, double pv[6] )
+
+*  Arguments:
+*     p = double (Given)
+*        Latitude (geodetic, radians).
+*     h = double (Given)
+*        Height above reference spheroid (geodetic, metres).
+*     stl = double (Given)
+*        Local apparent sidereal time (radians).
+*     pv = double[ 6 ] (Returned)
+*        position/velocity 6-vector (AU, AU/s, true equator
+*                                    and equinox of date).
+
+*  Description:
+*     Returns the position and velocity of an observing station.
+
+*  Notes:
+*     - The WGS84 reference ellipsoid is used.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-16 (DSB):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palPvobs( double p, double h, double stl, double pv[6] ){
+
+/* Local Variables: */
+   double xyz[3], z, r, s, c, v;
+
+/* Geodetic to geocentric conversion (WGS84 reference ellipsoid). */
+   eraGd2gc( ERFA_WGS84, 0.0, p, h, xyz );
+
+/* Convert from metres to AU */
+   r = xyz[ 0 ]/ERFA_DAU;
+   z = xyz[ 2 ]/ERFA_DAU;
+
+/* Functions of ST. */
+   s = sin( stl );
+   c = cos( stl );
+
+/* Speed. */
+   v = PAL__SR*r;
+
+/* Position. */
+   pv[ 0 ] = r*c;
+   pv[ 1 ] = r*s;
+   pv[ 2 ] = z;
+
+/* Velocity. */
+   pv[ 3 ] = -v*s;
+   pv[ 4 ] = v*c;
+   pv[ 5 ] = 0.0;
+
+}
+
+
Index: branches/FACT++_part_filenames/pal/palRdplan.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRdplan.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRdplan.c	(revision 18732)
@@ -0,0 +1,224 @@
+/*
+*+
+*  Name:
+*     palRdplan
+
+*  Purpose:
+*     Approximate topocentric apparent RA,Dec of a planet
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palRdplan( double date, int np, double elong, double phi,
+*                     double * ra, double * dec, double * diam );
+
+*  Arguments:
+*     date = double (Given)
+*        MJD of observation (JD-2400000.5) in TDB. For all practical
+*        purposes TT can be used instead of TDB, and for many applications
+*        UT will do (except for the Moon).
+*     np = int (Given)
+*        Planet: 1 = Mercury
+*                2 = Venus
+*                3 = Moon
+*                4 = Mars
+*                5 = Jupiter
+*                6 = Saturn
+*                7 = Uranus
+*                8 = Neptune
+*             else = Sun
+*     elong = double (Given)
+*        Observer's east longitude (radians)
+*     phi = double (Given)
+*        Observer's geodetic latitude (radians)
+*     ra = double * (Returned)
+*        RA (topocentric apparent, radians)
+*     dec = double * (Returned)
+*        Dec (topocentric apparent, radians)
+*     diam = double * (Returned)
+*        Angular diameter (equatorial, radians)
+
+*  Description:
+*     Approximate topocentric apparent RA,Dec of a planet, and its
+*     angular diameter.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Unlike with slaRdplan, Pluto is not supported.
+*     - The longitude and latitude allow correction for geocentric
+*       parallax.  This is a major effect for the Moon, but in the
+*       context of the limited accuracy of the present routine its
+*       effect on planetary positions is small (negligible for the
+*       outer planets).  Geocentric positions can be generated by
+*       appropriate use of the routines palDmoon and eraPlan94.
+
+*  History:
+*     2012-03-07 (TIMJ):
+*        Initial version, with some documentation from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1997 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palRdplan( double date, int np, double elong, double phi,
+                double * ra, double * dec, double * diam ) {
+
+  /* AU in km */
+  const double AUKM = 1.49597870e8;
+
+  /* Equatorial radii (km) */
+  const double EQRAU[] = {
+    696000.0, /* Sun */
+      2439.7,
+      6051.9,
+      1738,
+      3397,
+     71492,
+     60268,
+     25559,
+     24764
+  };
+
+  /* Local variables */
+  int i, j;
+  double stl;
+  double vgm[6];
+  double v[6];
+  double rmat[3][3];
+  double vse[6];
+  double vsg[6];
+  double vsp[6];
+  double vgo[6];
+  double dx,dy,dz,r,tl;
+
+  /* Classify np */
+  if (np < 0 || np > 8 ) np=0;  /* Sun */
+
+  /* Approximate local sidereal time */
+  stl = palGmst( date - palDt( palEpj(date)) / 86400.0) + elong;
+
+  /* Geocentre to Moon (mean of date) */
+  palDmoon( date, v );
+
+  /* Nutation to true of date */
+  palNut( date, rmat );
+  eraRxp( rmat, v, vgm );
+  eraRxp( rmat, &(v[3]), &(vgm[3]) );
+
+  /* Moon? */
+  if (np == 3) {
+
+    /* geocentre to Moon (true of date) */
+    for (i=0; i<6; i++) {
+      v[i] = vgm[i];
+    }
+
+  } else {
+
+    /* Not moon: precession/nutation matrix J2000 to date */
+    palPrenut( 2000.0, date, rmat );
+
+    /* Sun to Earth-Moon Barycentre (J2000) */
+    palPlanet( date, 3, v, &j );
+
+    /* Precession and nutation to date */
+    eraRxp( rmat, v, vse );
+    eraRxp( rmat, &(v[3]), &(vse[3]) );
+
+    /* Sun to geocentre (true of date) */
+    for (i=0; i<6; i++) {
+      vsg[i] = vse[i] - 0.012150581 * vgm[i];
+    }
+
+    /* Sun ? */
+    if (np == 0) {
+
+      /* Geocentre to Sun */
+      for (i=0; i<6; i++) {
+        v[i] = -vsg[i];
+      }
+
+    } else {
+
+      /* Sun to Planet (J2000) */
+      palPlanet( date, np, v, &j );
+
+      /* Precession and nutation to date */
+      eraRxp( rmat, v, vsp );
+      eraRxp( rmat, &(v[3]), &(vsp[3]) );
+
+      /* Geocentre to planet */
+      for (i=0; i<6; i++) {
+        v[i] = vsp[i] - vsg[i];
+      }
+
+    }
+
+  }
+
+  /* Refer to origina at the observer */
+  palPvobs( phi, 0.0, stl, vgo );
+  for (i=0; i<6; i++) {
+    v[i] -= vgo[i];
+  }
+
+  /* Geometric distance (AU) */
+  dx = v[0];
+  dy = v[1];
+  dz = v[2];
+  r = sqrt( dx*dx + dy*dy + dz*dz );
+
+  /* Light time */
+  tl = PAL__CR * r;
+
+  /* Correct position for planetary aberration */
+  for (i=0; i<3; i++) {
+    v[i] -= tl * v[i+3];
+  }
+
+  /* To RA,Dec */
+  eraC2s( v, ra, dec );
+  *ra = eraAnp( *ra );
+
+  /* Angular diameter (radians) */
+  *diam = 2.0 * asin( EQRAU[np] / (r * AUKM ) );
+
+}
Index: branches/FACT++_part_filenames/pal/palRefco.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRefco.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRefco.c	(revision 18732)
@@ -0,0 +1,120 @@
+/*
+*+
+*  Name:
+*     palRefco
+
+*  Purpose:
+*     Determine constants in atmospheric refraction model
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palRefco ( double hm, double tdk, double pmb, double rh,
+*                     double wl, double phi, double tlr, double eps,
+*                     double *refa, double *refb );
+
+*  Arguments:
+*     hm = double (Given)
+*        Height of the observer above sea level (metre)
+*     tdk = double (Given)
+*        Ambient temperature at the observer (K)
+*     pmb = double (Given)
+*        Pressure at the observer (millibar)
+*     rh = double (Given)
+*        Relative humidity at the observer (range 0-1)
+*     wl = double (Given)
+*        Effective wavelength of the source (micrometre)
+*     phi = double (Given)
+*        Latitude of the observer (radian, astronomical)
+*     tlr = double (Given)
+*        Temperature lapse rate in the troposphere (K/metre)
+*     eps = double (Given)
+*        Precision required to terminate iteration (radian)
+*     refa = double * (Returned)
+*        tan Z coefficient (radian)
+*     refb = double * (Returned)
+*        tan**3 Z coefficient (radian)
+
+*  Description:
+*     Determine the constants A and B in the atmospheric refraction
+*     model dZ = A tan Z + B tan**3 Z.
+*
+*     Z is the "observed" zenith distance (i.e. affected by refraction)
+*     and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo)
+*     zenith distance.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Typical values for the TLR and EPS arguments might be 0.0065 and
+*     1E-10 respectively.
+*
+*     - The radio refraction is chosen by specifying WL > 100 micrometres.
+*
+*     - The routine is a slower but more accurate alternative to the
+*     palRefcoq routine.  The constants it produces give perfect
+*     agreement with palRefro at zenith distances arctan(1) (45 deg)
+*     and arctan(4) (about 76 deg).  It achieves 0.5 arcsec accuracy
+*     for ZD < 80 deg, 0.01 arcsec accuracy for ZD < 60 deg, and
+*     0.001 arcsec accuracy for ZD < 45 deg.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version. A direct copy of the Fortran SLA implementation.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+void palRefco ( double hm, double tdk, double pmb, double rh,
+                double wl, double phi, double tlr, double eps,
+                double *refa, double *refb ) {
+
+  double r1, r2;
+
+  /*  Sample zenith distances: arctan(1) and arctan(4) */
+  const double ATN1 = 0.7853981633974483;
+  const double ATN4 = 1.325817663668033;
+
+  /*  Determine refraction for the two sample zenith distances */
+  palRefro(ATN1,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r1);
+  palRefro(ATN4,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r2);
+
+  /*  Solve for refraction constants */
+  *refa = (64.0*r1-r2)/60.0;
+  *refb = (r2-4.0*r1)/60.0;
+
+}
Index: branches/FACT++_part_filenames/pal/palRefro.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRefro.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRefro.c	(revision 18732)
@@ -0,0 +1,437 @@
+/*
+*+
+*  Name:
+*     palRefro
+
+*  Purpose:
+*     Atmospheric refraction for radio and optical/IR wavelengths
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palRefro( double zobs, double hm, double tdk, double pmb,
+*                    double rh, double wl, double phi, double tlr,
+*                    double eps, double * ref ) {
+
+*  Arguments:
+*     zobs = double (Given)
+*        Observed zenith distance of the source (radian)
+*     hm = double (Given)
+*        Height of the observer above sea level (metre)
+*     tdk = double (Given)
+*        Ambient temperature at the observer (K)
+*     pmb = double (Given)
+*        Pressure at the observer (millibar)
+*     rh = double (Given)
+*        Relative humidity at the observer (range 0-1)
+*     wl = double (Given)
+*        Effective wavelength of the source (micrometre)
+*     phi = double (Given)
+*        Latitude of the observer (radian, astronomical)
+*     tlr = double (Given)
+*        Temperature lapse rate in the troposphere (K/metre)
+*     eps = double (Given)
+*        Precision required to terminate iteration (radian)
+*     ref = double * (Returned)
+*        Refraction: in vacuao ZD minus observed ZD (radian)
+
+*  Description:
+*     Calculates the atmospheric refraction for radio and optical/IR
+*     wavelengths.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - A suggested value for the TLR argument is 0.0065.  The
+*     refraction is significantly affected by TLR, and if studies
+*     of the local atmosphere have been carried out a better TLR
+*     value may be available.  The sign of the supplied TLR value
+*     is ignored.
+*
+*     - A suggested value for the EPS argument is 1E-8.  The result is
+*     usually at least two orders of magnitude more computationally
+*     precise than the supplied EPS value.
+*
+*     - The routine computes the refraction for zenith distances up
+*     to and a little beyond 90 deg using the method of Hohenkerk
+*     and Sinclair (NAO Technical Notes 59 and 63, subsequently adopted
+*     in the Explanatory Supplement, 1992 edition - see section 3.281).
+*
+*     - The code is a development of the optical/IR refraction subroutine
+*     AREF of C.Hohenkerk (HMNAO, September 1984), with extensions to
+*     support the radio case.  Apart from merely cosmetic changes, the
+*     following modifications to the original HMNAO optical/IR refraction
+*     code have been made:
+*
+*     .  The angle arguments have been changed to radians.
+*
+*     .  Any value of ZOBS is allowed (see note 6, below).
+*
+*     .  Other argument values have been limited to safe values.
+*
+*     .  Murray's values for the gas constants have been used
+*        (Vectorial Astrometry, Adam Hilger, 1983).
+*
+*     .  The numerical integration phase has been rearranged for
+*        extra clarity.
+*
+*     .  A better model for Ps(T) has been adopted (taken from
+*        Gill, Atmosphere-Ocean Dynamics, Academic Press, 1982).
+*
+*     .  More accurate expressions for Pwo have been adopted
+*        (again from Gill 1982).
+*
+*     .  The formula for the water vapour pressure, given the
+*        saturation pressure and the relative humidity, is from
+*        Crane (1976), expression 2.5.5.
+
+*     .  Provision for radio wavelengths has been added using
+*        expressions devised by A.T.Sinclair, RGO (private
+*        communication 1989).  The refractivity model currently
+*        used is from J.M.Rueger, "Refractive Index Formulae for
+*        Electronic Distance Measurement with Radio and Millimetre
+*        Waves", in Unisurv Report S-68 (2002), School of Surveying
+*        and Spatial Information Systems, University of New South
+*        Wales, Sydney, Australia.
+*
+*     .  The optical refractivity for dry air is from Resolution 3 of
+*        the International Association of Geodesy adopted at the XXIIth
+*        General Assembly in Birmingham, UK, 1999.
+*
+*     .  Various small changes have been made to gain speed.
+*
+*     - The radio refraction is chosen by specifying WL > 100 micrometres.
+*     Because the algorithm takes no account of the ionosphere, the
+*     accuracy deteriorates at low frequencies, below about 30 MHz.
+*
+*     - Before use, the value of ZOBS is expressed in the range +/- pi.
+*     If this ranged ZOBS is -ve, the result REF is computed from its
+*     absolute value before being made -ve to match.  In addition, if
+*     it has an absolute value greater than 93 deg, a fixed REF value
+*     equal to the result for ZOBS = 93 deg is returned, appropriately
+*     signed.
+*
+*     - As in the original Hohenkerk and Sinclair algorithm, fixed values
+*     of the water vapour polytrope exponent, the height of the
+*     tropopause, and the height at which refraction is negligible are
+*     used.
+*
+*     - The radio refraction has been tested against work done by
+*     Iain Coulson, JACH, (private communication 1995) for the
+*     James Clerk Maxwell Telescope, Mauna Kea.  For typical conditions,
+*     agreement at the 0.1 arcsec level is achieved for moderate ZD,
+*     worsening to perhaps 0.5-1.0 arcsec at ZD 80 deg.  At hot and
+*     humid sea-level sites the accuracy will not be as good.
+*
+*     - It should be noted that the relative humidity RH is formally
+*     defined in terms of "mixing ratio" rather than pressures or
+*     densities as is often stated.  It is the mass of water per unit
+*     mass of dry air divided by that for saturated air at the same
+*     temperature and pressure (see Gill 1982).
+
+*     - The algorithm is designed for observers in the troposphere. The
+*     supplied temperature, pressure and lapse rate are assumed to be
+*     for a point in the troposphere and are used to define a model
+*     atmosphere with the tropopause at 11km altitude and a constant
+*     temperature above that.  However, in practice, the refraction
+*     values returned for stratospheric observers, at altitudes up to
+*     25km, are quite usable.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version, direct port of SLA Fortran source.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Patrick T. Wallace
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "pal1.h"
+#include "palmac.h"
+
+void palRefro( double zobs, double hm, double tdk, double pmb,
+               double rh, double wl, double phi, double tlr,
+               double eps, double * ref ) {
+
+  /*
+   *  Fixed parameters
+   */
+
+  /*  93 degrees in radians */
+  const double D93 = 1.623156204;
+  /*  Universal gas constant */
+  const double GCR = 8314.32;
+  /*  Molecular weight of dry air */
+  const double DMD = 28.9644;
+  /*  Molecular weight of water vapour */
+  const double DMW = 18.0152;
+  /*  Mean Earth radius (metre) */
+  const double S = 6378120.;
+  /*  Exponent of temperature dependence of water vapour pressure */
+  const double DELTA = 18.36;
+  /*  Height of tropopause (metre) */
+  const double HT = 11000.;
+  /*  Upper limit for refractive effects (metre) */
+  const double HS = 80000.;
+  /*  Numerical integration: maximum number of strips. */
+  const int ISMAX=16384l;
+
+  /* Local variables */
+  int is, k, n, i, j;
+
+  int optic, loop; /* booleans */
+
+  double zobs1,zobs2,hmok,tdkok,pmbok,rhok,wlok,alpha,
+    tol,wlsq,gb,a,gamal,gamma,gamm2,delm2,
+    tdc,psat,pwo,w,
+    c1,c2,c3,c4,c5,c6,r0,tempo,dn0,rdndr0,sk0,f0,
+    rt,tt,dnt,rdndrt,sine,zt,ft,dnts,rdndrp,zts,fts,
+    rs,dns,rdndrs,zs,fs,refold,z0,zrange,fb,ff,fo,fe,
+    h,r,sz,rg,dr,tg,dn,rdndr,t,f,refp,reft;
+
+  /*  The refraction integrand */
+#define refi(DN,RDNDR) RDNDR/(DN+RDNDR)
+
+  /*  Transform ZOBS into the normal range. */
+  zobs1 = palDrange(zobs);
+  zobs2 = DMIN(fabs(zobs1),D93);
+
+  /*  keep other arguments within safe bounds. */
+  hmok = DMIN(DMAX(hm,-1e3),HS);
+  tdkok = DMIN(DMAX(tdk,100.0),500.0);
+  pmbok = DMIN(DMAX(pmb,0.0),10000.0);
+  rhok = DMIN(DMAX(rh,0.0),1.0);
+  wlok = DMAX(wl,0.1);
+  alpha = DMIN(DMAX(fabs(tlr),0.001),0.01);
+
+  /*  tolerance for iteration. */
+  tol = DMIN(DMAX(fabs(eps),1e-12),0.1)/2.0;
+
+  /*  decide whether optical/ir or radio case - switch at 100 microns. */
+  optic = wlok < 100.0;
+
+  /*  set up model atmosphere parameters defined at the observer. */
+  wlsq = wlok*wlok;
+  gb = 9.784*(1.0-0.0026*cos(phi+phi)-0.00000028*hmok);
+  if (optic) {
+    a = (287.6155+(1.62887+0.01360/wlsq)/wlsq) * 273.15e-6/1013.25;
+  } else {
+    a = 77.6890e-6;
+  }
+  gamal = (gb*DMD)/GCR;
+  gamma = gamal/alpha;
+  gamm2 = gamma-2.0;
+  delm2 = DELTA-2.0;
+  tdc = tdkok-273.15;
+  psat = pow(10.0,(0.7859+0.03477*tdc)/(1.0+0.00412*tdc)) *
+    (1.0+pmbok*(4.5e-6+6.0e-10*tdc*tdc));
+  if (pmbok > 0.0) {
+    pwo = rhok*psat/(1.0-(1.0-rhok)*psat/pmbok);
+  } else {
+    pwo = 0.0;
+  }
+  w = pwo*(1.0-DMW/DMD)*gamma/(DELTA-gamma);
+  c1 = a*(pmbok+w)/tdkok;
+  if (optic) {
+    c2 = (a*w+11.2684e-6*pwo)/tdkok;
+  } else {
+    c2 = (a*w+6.3938e-6*pwo)/tdkok;
+  }
+  c3 = (gamma-1.0)*alpha*c1/tdkok;
+  c4 = (DELTA-1.0)*alpha*c2/tdkok;
+  if (optic) {
+    c5 = 0.0;
+    c6 = 0.0;
+  } else {
+    c5 = 375463e-6*pwo/tdkok;
+    c6 = c5*delm2*alpha/(tdkok*tdkok);
+  }
+
+  /*  conditions at the observer. */
+  r0 = S+hmok;
+  pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6,
+           r0,&tempo,&dn0,&rdndr0);
+  sk0 = dn0*r0*sin(zobs2);
+  f0 = refi(dn0,rdndr0);
+
+  /*  conditions in the troposphere at the tropopause. */
+  rt = S+DMAX(HT,hmok);
+  pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6,
+           rt,&tt,&dnt,&rdndrt);
+  sine = sk0/(rt*dnt);
+  zt = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
+  ft = refi(dnt,rdndrt);
+
+  /*  conditions in the stratosphere at the tropopause. */
+  pal1Atms(rt,tt,dnt,gamal,rt,&dnts,&rdndrp);
+  sine = sk0/(rt*dnts);
+  zts = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
+  fts = refi(dnts,rdndrp);
+
+  /*  conditions at the stratosphere limit. */
+  rs = S+HS;
+  pal1Atms(rt,tt,dnt,gamal,rs,&dns,&rdndrs);
+  sine = sk0/(rs*dns);
+  zs = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
+  fs = refi(dns,rdndrs);
+
+  /*  variable initialization to avoid compiler warning. */
+  reft = 0.0;
+
+  /*  integrate the refraction integral in two parts;  first in the
+   *  troposphere (k=1), then in the stratosphere (k=2). */
+
+  for (k=1; k<=2; k++) {
+
+    /*     initialize previous refraction to ensure at least two iterations. */
+    refold = 1.0;
+
+    /*     start off with 8 strips. */
+    is = 8;
+
+    /*     start z, z range, and start and end values. */
+    if (k==1) {
+      z0 = zobs2;
+      zrange = zt-z0;
+      fb = f0;
+      ff = ft;
+    } else {
+      z0 = zts;
+      zrange = zs-z0;
+      fb = fts;
+      ff = fs;
+    }
+
+    /*     sums of odd and even values. */
+    fo = 0.0;
+    fe = 0.0;
+
+    /*     first time through the loop we have to do every point. */
+    n = 1;
+
+    /*     start of iteration loop (terminates at specified precision). */
+    loop = 1;
+    while (loop) {
+
+      /*        strip width. */
+      h = zrange/((double)is);
+
+      /*        initialize distance from earth centre for quadrature pass. */
+      if (k == 1) {
+        r = r0;
+      } else {
+        r = rt;
+      }
+
+      /*        one pass (no need to compute evens after first time). */
+      for (i=1; i<is; i+=n) {
+
+              /*           sine of observed zenith distance. */
+        sz = sin(z0+h*(double)(i));
+
+        /*           find r (to the nearest metre, maximum four iterations). */
+        if (sz > 1e-20) {
+          w = sk0/sz;
+          rg = r;
+          dr = 1.0e6;
+          j = 0;
+          while ( fabs(dr) > 1.0 && j < 4 ) {
+            j++;
+            if (k==1) {
+              pal1Atmt(r0,tdkok,alpha,gamm2,delm2,
+                       c1,c2,c3,c4,c5,c6,rg,&tg,&dn,&rdndr);
+            } else {
+              pal1Atms(rt,tt,dnt,gamal,rg,&dn,&rdndr);
+            }
+            dr = (rg*dn-w)/(dn+rdndr);
+            rg = rg-dr;
+          }
+          r = rg;
+        }
+
+        /*           find the refractive index and integrand at r. */
+        if (k==1) {
+          pal1Atmt(r0,tdkok,alpha,gamm2,delm2,
+                   c1,c2,c3,c4,c5,c6,r,&t,&dn,&rdndr);
+        } else {
+          pal1Atms(rt,tt,dnt,gamal,r,&dn,&rdndr);
+        }
+        f = refi(dn,rdndr);
+
+        /*           accumulate odd and (first time only) even values. */
+        if (n==1 && i%2 == 0) {
+          fe += f;
+        } else {
+          fo += f;
+        }
+      }
+
+      /*        evaluate the integrand using simpson's rule. */
+      refp = h*(fb+4.0*fo+2.0*fe+ff)/3.0;
+
+      /*        has the required precision been achieved (or can't be)? */
+      if (fabs(refp-refold) > tol && is < ISMAX) {
+
+        /*           no: prepare for next iteration.*/
+
+        /*           save current value for convergence test. */
+        refold = refp;
+
+        /*           double the number of strips. */
+        is += is;
+
+        /*           sum of all current values = sum of next pass's even values. */
+        fe += fo;
+
+        /*           prepare for new odd values. */
+        fo = 0.0;
+
+        /*           skip even values next time. */
+        n = 2;
+      } else {
+
+        /*           yes: save troposphere component and terminate the loop. */
+        if (k==1) reft = refp;
+        loop = 0;
+      }
+    }
+  }
+
+  /*  result. */
+  *ref = reft+refp;
+  if (zobs1 < 0.0) *ref = -(*ref);
+
+}
Index: branches/FACT++_part_filenames/pal/palRefv.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRefv.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRefv.c	(revision 18732)
@@ -0,0 +1,155 @@
+/*
+*+
+*  Name:
+*     palRefv
+
+*  Purpose:
+*     Adjust an unrefracted Cartesian vector to include the effect of atmospheric refraction
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palRefv ( double vu[3], double refa, double refb, double vr[3] );
+
+*  Arguments:
+*     vu[3] = double (Given)
+*        Unrefracted position of the source (Az/El 3-vector)
+*     refa = double (Given)
+*        tan Z coefficient (radian)
+*     refb = double (Given)
+*        tan**3 Z coefficient (radian)
+*     vr[3] = double (Returned)
+*        Refracted position of the source (Az/El 3-vector)
+
+*  Description:
+*     Adjust an unrefracted Cartesian vector to include the effect of
+*     atmospheric refraction, using the simple A tan Z + B tan**3 Z
+*     model.
+
+*  Authors:
+*     TIMJ: Tim Jenness
+*     PTW: Patrick Wallace
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - This routine applies the adjustment for refraction in the
+*     opposite sense to the usual one - it takes an unrefracted
+*     (in vacuo) position and produces an observed (refracted)
+*     position, whereas the A tan Z + B tan**3 Z model strictly
+*     applies to the case where an observed position is to have the
+*     refraction removed.  The unrefracted to refracted case is
+*     harder, and requires an inverted form of the text-book
+*     refraction models;  the algorithm used here is equivalent to
+*     one iteration of the Newton-Raphson method applied to the above
+*     formula.
+*
+*     - Though optimized for speed rather than precision, the present
+*     routine achieves consistency with the refracted-to-unrefracted
+*     A tan Z + B tan**3 Z model at better than 1 microarcsecond within
+*     30 degrees of the zenith and remains within 1 milliarcsecond to
+*     beyond ZD 70 degrees.  The inherent accuracy of the model is, of
+*     course, far worse than this - see the documentation for palRefco
+*     for more information.
+*
+*     - At low elevations (below about 3 degrees) the refraction
+*     correction is held back to prevent arithmetic problems and
+*     wildly wrong results.  For optical/IR wavelengths, over a wide
+*     range of observer heights and corresponding temperatures and
+*     pressures, the following levels of accuracy (arcsec, worst case)
+*     are achieved, relative to numerical integration through a model
+*     atmosphere:
+*
+*              ZD    error
+*
+*              80      0.7
+*              81      1.3
+*              82      2.5
+*              83      5
+*              84     10
+*              85     20
+*              86     55
+*              87    160
+*              88    360
+*              89    640
+*              90   1100
+*              91   1700         } relevant only to
+*              92   2600         } high-elevation sites
+*
+*     The results for radio are slightly worse over most of the range,
+*     becoming significantly worse below ZD=88 and unusable beyond
+*     ZD=90.
+*
+*     - See also the routine palRefz, which performs the adjustment to
+*     the zenith distance rather than in Cartesian Az/El coordinates.
+*     The present routine is faster than palRefz and, except very low down,
+*     is equally accurate for all practical purposes.  However, beyond
+*     about ZD 84 degrees palRefz should be used, and for the utmost
+*     accuracy iterative use of palRefro should be considered.
+
+*  History:
+*     2014-07-15 (TIMJ):
+*        Initial version. A direct copy of the Fortran SLA implementation.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2014 Tim Jenness
+*     Copyright (C) 2004 Patrick Wallace
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+#include <math.h>
+
+void palRefv ( double vu[3], double refa, double refb, double vr[3] ) {
+
+  double x,y,z1,z,zsq,rsq,r,wb,wt,d,cd,f;
+
+  /*  Initial estimate = unrefracted vector */
+  x = vu[0];
+  y = vu[1];
+  z1 = vu[2];
+
+  /*  Keep correction approximately constant below about 3 deg elevation */
+  z = DMAX(z1,0.05);
+
+  /*  One Newton-Raphson iteration */
+  zsq = z*z;
+  rsq = x*x+y*y;
+  r = sqrt(rsq);
+  wb = refb*rsq/zsq;
+  wt = (refa+wb)/(1.0+(refa+3.0*wb)*(zsq+rsq)/zsq);
+  d = wt*r/z;
+  cd = 1.0-d*d/2.0;
+  f = cd*(1.0-wt);
+
+  /*  Post-refraction x,y,z */
+  vr[0] = x*f;
+  vr[1] = y*f;
+  vr[2] = cd*(z+d*r)+(z1-z);
+}
Index: branches/FACT++_part_filenames/pal/palRefz.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRefz.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRefz.c	(revision 18732)
@@ -0,0 +1,191 @@
+/*
+*+
+*  Name:
+*     palRefz
+
+*  Purpose:
+*     Adjust unrefracted zenith distance
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palRefz ( double zu, double refa, double refb, double *zr );
+
+*  Arguments:
+*     zu = double (Given)
+*         Unrefracted zenith distance of the source (radians)
+*     refa = double (Given)
+*         tan Z coefficient (radians)
+*     refb = double (Given)
+*         tan**3 Z coefficient (radian)
+*     zr = double * (Returned)
+*         Refracted zenith distance (radians)
+
+*  Description:
+*     Adjust an unrefracted zenith distance to include the effect of
+*     atmospheric refraction, using the simple A tan Z + B tan**3 Z
+*     model (plus special handling for large ZDs).
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - This routine applies the adjustment for refraction in the
+*     opposite sense to the usual one - it takes an unrefracted
+*     (in vacuo) position and produces an observed (refracted)
+*     position, whereas the A tan Z + B tan**3 Z model strictly
+*     applies to the case where an observed position is to have the
+*     refraction removed.  The unrefracted to refracted case is
+*     harder, and requires an inverted form of the text-book
+*     refraction models;  the formula used here is based on the
+*     Newton-Raphson method.  For the utmost numerical consistency
+*     with the refracted to unrefracted model, two iterations are
+*     carried out, achieving agreement at the 1D-11 arcseconds level
+*     for a ZD of 80 degrees.  The inherent accuracy of the model
+*     is, of course, far worse than this - see the documentation for
+*     palRefco for more information.
+*
+*     - At ZD 83 degrees, the rapidly-worsening A tan Z + B tan^3 Z
+*     model is abandoned and an empirical formula takes over.  For
+*     optical/IR wavelengths, over a wide range of observer heights and
+*     corresponding temperatures and pressures, the following levels of
+*     accuracy (arcsec, worst case) are achieved, relative to numerical
+*     integration through a model atmosphere:
+*
+*              ZR    error
+*
+*              80      0.7
+*              81      1.3
+*              82      2.4
+*              83      4.7
+*              84      6.2
+*              85      6.4
+*              86      8
+*              87     10
+*              88     15
+*              89     30
+*              90     60
+*              91    150         } relevant only to
+*              92    400         } high-elevation sites
+*
+*     For radio wavelengths the errors are typically 50% larger than
+*     the optical figures and by ZD 85 deg are twice as bad, worsening
+*     rapidly below that.  To maintain 1 arcsec accuracy down to ZD=85
+*     at the Green Bank site, Condon (2004) has suggested amplifying
+*     the amount of refraction predicted by palRefz below 10.8 deg
+*     elevation by the factor (1+0.00195*(10.8-E_t)), where E_t is the
+*     unrefracted elevation in degrees.
+*
+*     The high-ZD model is scaled to match the normal model at the
+*     transition point;  there is no glitch.
+*
+*     - Beyond 93 deg zenith distance, the refraction is held at its
+*     93 deg value.
+*
+*     - See also the routine palRefv, which performs the adjustment in
+*     Cartesian Az/El coordinates, and with the emphasis on speed
+*     rather than numerical accuracy.
+
+*  References:
+*     Condon,J.J., Refraction Corrections for the GBT, PTCS/PN/35.2,
+*     NRAO Green Bank, 2004.
+
+*  History:
+*     2012-08-24 (TIMJ):
+*        Initial version, ported directly from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2004 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void palRefz ( double zu, double refa, double refb, double *zr ) {
+
+  /* Constants */
+
+  /* Largest usable ZD (deg) */
+  const double D93 = 93.0;
+
+  /* ZD at which one model hands over to the other (radians) */
+  const double Z83 = 83.0 * PAL__DD2R;
+
+  /* coefficients for high ZD model (used beyond ZD 83 deg) */
+  const double C1 = +0.55445;
+  const double C2 = -0.01133;
+  const double C3 = +0.00202;
+  const double C4 = +0.28385;
+  const double C5 = +0.02390;
+
+  /* High-ZD-model prefiction (deg) for that point */
+  const double REF83 = (C1+C2*7.0+C3*49.0)/(1.0+C4*7.0+C5*49.0);
+
+  double zu1,zl,s,c,t,tsq,tcu,ref,e,e2;
+
+  /*  perform calculations for zu or 83 deg, whichever is smaller */
+  zu1 = DMIN(zu,Z83);
+
+  /*  functions of ZD */
+  zl = zu1;
+  s = sin(zl);
+  c = cos(zl);
+  t = s/c;
+  tsq = t*t;
+  tcu = t*tsq;
+
+  /*  refracted zd (mathematically to better than 1 mas at 70 deg) */
+  zl = zl-(refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c));
+
+  /*  further iteration */
+  s = sin(zl);
+  c = cos(zl);
+  t = s/c;
+  tsq = t*t;
+  tcu = t*tsq;
+  ref = zu1-zl+
+    (zl-zu1+refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c));
+
+  /*  special handling for large zu */
+  if (zu > zu1) {
+    e = 90.0-DMIN(D93,zu*PAL__DR2D);
+    e2 = e*e;
+    ref = (ref/REF83)*(C1+C2*e+C3*e2)/(1.0+C4*e+C5*e2);
+  }
+
+  /*  return refracted zd */
+  *zr = zu-ref;
+
+}
Index: branches/FACT++_part_filenames/pal/palRverot.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRverot.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRverot.c	(revision 18732)
@@ -0,0 +1,91 @@
+/*
+*+
+*  Name:
+*     palRverot
+
+*  Purpose:
+*     Velocity component in a given direction due to Earth rotation
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palRverot ( double phi, double ra, double da, double st );
+
+*  Arguments:
+*     phi = double (Given)
+*        latitude of observing station (geodetic) (radians)
+*     ra = double (Given)
+*        apparent RA (radians)
+*     da = double (Given)
+*        apparent Dec (radians)
+*     st = double (Given)
+*        Local apparent sidereal time.
+
+*  Returned Value:
+*     palRverot = double
+*        Component of Earth rotation in direction RA,DA (km/s).
+*        The result is +ve when the observatory is receding from the
+*        given point on the sky.
+
+*  Description:
+*     Calculate the velocity component in a given direction due to Earth
+*     rotation.
+*
+*     The simple algorithm used assumes a spherical Earth, of
+*     a radius chosen to give results accurate to about 0.0005 km/s
+*     for observing stations at typical latitudes and heights.  For
+*     applications requiring greater precision, use the routine
+*     palPvobs.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-03-02 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+
+#include <math.h>
+
+double palRverot ( double phi, double ra, double da, double st ) {
+
+  /*  Nominal mean sidereal speed of Earth equator in km/s (the actual
+   *  value is about 0.4651) */
+  const double espeed = 0.4655;
+  return espeed * cos(phi) * sin(st-ra) * cos(da);
+}
Index: branches/FACT++_part_filenames/pal/palRvgalc.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRvgalc.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRvgalc.c	(revision 18732)
@@ -0,0 +1,111 @@
+/*
+*+
+*  Name:
+*     palRvgalc
+
+*  Purpose:
+*     Velocity component in a given direction due to the rotation
+*     of the Galaxy.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palRvgalc( double r2000, double d2000 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 mean RA (radians)
+*     d2000 = double (Given)
+*        J2000.0 mean Dec (radians)
+
+*  Returned Value:
+*     Component of dynamical LSR motion in direction R2000,D2000 (km/s).
+
+*  Description:
+*     This function returns the Component of dynamical LSR motion in
+*     the direction of R2000,D2000. The result is +ve when the dynamical
+*     LSR is receding from the given point on the sky.
+*
+*  Notes:
+*     - The Local Standard of Rest used here is a point in the
+*     vicinity of the Sun which is in a circular orbit around
+*     the Galactic centre.  Sometimes called the "dynamical" LSR,
+*     it is not to be confused with a "kinematical" LSR, which
+*     is the mean standard of rest of star catalogues or stellar
+*     populations.
+*
+*  Reference:
+*     - The orbital speed of 220 km/s used here comes from Kerr &
+*     Lynden-Bell (1986), MNRAS, 221, p1023.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-16 (DSB):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+double palRvgalc( double r2000, double d2000 ){
+
+/* Local Variables: */
+   double vb[ 3 ];
+
+/*
+*  LSR velocity due to Galactic rotation
+*
+*  Speed = 220 km/s
+*  Apex  = L2,B2  90deg, 0deg
+*        = RA,Dec  21 12 01.1  +48 19 47  J2000.0
+*
+*  This is expressed in the form of a J2000.0 x,y,z vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+*/
+
+   double va[ 3 ] = { -108.70408, +97.86251, -164.33610 };
+
+/* Convert given J2000 RA,Dec to x,y,z. */
+   eraS2c( r2000, d2000, vb );
+
+/* Compute dot product with LSR motion vector. */
+   return eraPdp( va, vb );
+}
Index: branches/FACT++_part_filenames/pal/palRvlg.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRvlg.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRvlg.c	(revision 18732)
@@ -0,0 +1,106 @@
+/*
+*+
+*  Name:
+*     palRvlg
+
+*  Purpose:
+*     Velocity component in a given direction due to Galactic rotation
+*     and motion of the local group.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palRvlg( double r2000, double d2000 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 mean RA (radians)
+*     d2000 = double (Given)
+*        J2000.0 mean Dec (radians)
+
+*  Returned Value:
+*     Component of SOLAR motion in direction R2000,D2000 (km/s).
+
+*  Description:
+*     This function returns the velocity component in a given
+*     direction due to the combination of the rotation of the
+*     Galaxy and the motion of the Galaxy relative to the mean
+*     motion of the local group. The result is +ve when the Sun
+*     is receding from the given point on the sky.
+*
+*  Reference:
+*     - IAU Trans 1976, 168, p201.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-16 (DSB):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+double palRvlg( double r2000, double d2000 ){
+
+/* Local Variables: */
+   double vb[ 3 ];
+
+/*
+*
+*  Solar velocity due to Galactic rotation and translation
+*
+*  Speed = 300 km/s
+*
+*  Apex  = L2,B2  90deg, 0deg
+*        = RA,Dec  21 12 01.1  +48 19 47  J2000.0
+*
+*  This is expressed in the form of a J2000.0 x,y,z vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+*/
+
+   double va[ 3 ] = { -148.23284, +133.44888, -224.09467 };
+
+/* Convert given J2000 RA,Dec to x,y,z. */
+   eraS2c( r2000, d2000, vb );
+
+/* Compute dot product with Solar motion vector. */
+   return eraPdp( va, vb );
+}
Index: branches/FACT++_part_filenames/pal/palRvlsrd.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRvlsrd.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRvlsrd.c	(revision 18732)
@@ -0,0 +1,116 @@
+/*
+*+
+*  Name:
+*     palRvlsrd
+
+*  Purpose:
+*     Velocity component in a given direction due to the Sun's motion
+*     with respect to the dynamical Local Standard of Rest.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palRvlsrd( double r2000, double d2000 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 mean RA (radians)
+*     d2000 = double (Given)
+*        J2000.0 mean Dec (radians)
+
+*  Returned Value:
+*     Component of "peculiar" solar motion in direction R2000,D2000 (km/s).
+
+*  Description:
+*     This function returns the velocity component in a given direction
+*     due to the Sun's motion with respect to the dynamical Local Standard
+*     of Rest. The result is +ve when the Sun is receding from the given
+*     point on the sky.
+
+*  Notes:
+*     - The Local Standard of Rest used here is the "dynamical" LSR,
+*     a point in the vicinity of the Sun which is in a circular orbit
+*     around the Galactic centre.  The Sun's motion with respect to the
+*     dynamical LSR is called the "peculiar" solar motion.
+*     - There is another type of LSR, called a "kinematical" LSR.  A
+*     kinematical LSR is the mean standard of rest of specified star
+*     catalogues or stellar populations, and several slightly different
+*     kinematical LSRs are in use.  The Sun's motion with respect to an
+*     agreed kinematical LSR is known as the "standard" solar motion.
+*     To obtain a radial velocity correction with respect to an adopted
+*     kinematical LSR use the routine palRvlsrk.
+
+*  Reference:
+*     - Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-16 (DSB):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+double palRvlsrd( double r2000, double d2000 ){
+
+/* Local Variables: */
+   double vb[ 3 ];
+
+/*
+*  Peculiar solar motion from Delhaye 1965: in Galactic Cartesian
+*  coordinates (+9,+12,+7) km/s.  This corresponds to about 16.6 km/s
+*  towards Galactic coordinates L2 = 53 deg, B2 = +25 deg, or RA,Dec
+*  17 49 58.7 +28 07 04 J2000.
+*
+*  The solar motion is expressed here in the form of a J2000.0
+*  equatorial Cartesian vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+*/
+
+   double va[ 3 ] = { +0.63823, +14.58542, -7.80116 };
+
+/* Convert given J2000 RA,Dec to x,y,z. */
+   eraS2c( r2000, d2000, vb );
+
+/* Compute dot product with Solar motion vector. */
+   return eraPdp( va, vb );
+}
Index: branches/FACT++_part_filenames/pal/palRvlsrk.c
===================================================================
--- branches/FACT++_part_filenames/pal/palRvlsrk.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palRvlsrk.c	(revision 18732)
@@ -0,0 +1,116 @@
+/*
+*+
+*  Name:
+*     palRvlsrk
+
+*  Purpose:
+*     Velocity component in a given direction due to the Sun's motion
+*     with respect to an adopted kinematic Local Standard of Rest.
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     double palRvlsrk( double r2000, double d2000 )
+
+*  Arguments:
+*     r2000 = double (Given)
+*        J2000.0 mean RA (radians)
+*     d2000 = double (Given)
+*        J2000.0 mean Dec (radians)
+
+*  Returned Value:
+*     Component of "standard" solar motion in direction R2000,D2000 (km/s).
+
+*  Description:
+*     This function returns the velocity component in a given direction
+*     due to the Sun's motion with respect to an adopted kinematic
+*     Local Standard of Rest. The result is +ve when the Sun is receding
+*     from the given point on the sky.
+
+*  Notes:
+*     - The Local Standard of Rest used here is one of several
+*     "kinematical" LSRs in common use.  A kinematical LSR is the mean
+*     standard of rest of specified star catalogues or stellar
+*     populations.  The Sun's motion with respect to a kinematical LSR
+*     is known as the "standard" solar motion.
+*     - There is another sort of LSR, the "dynamical" LSR, which is a
+*     point in the vicinity of the Sun which is in a circular orbit
+*     around the Galactic centre.  The Sun's motion with respect to
+*     the dynamical LSR is called the "peculiar" solar motion.  To
+*     obtain a radial velocity correction with respect to the
+*     dynamical LSR use the routine palRvlsrd.
+
+*  Reference:
+*     - Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-16 (DSB):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+double palRvlsrk( double r2000, double d2000 ){
+
+/* Local Variables: */
+   double vb[ 3 ];
+
+/*
+*  Standard solar motion (from Methods of Experimental Physics, ed Meeks,
+*  vol 12, part C, sec 6.1.5.2, p281):
+*
+*  20 km/s towards RA 18h Dec +30d (1900).
+*
+*  The solar motion is expressed here in the form of a J2000.0
+*  equatorial Cartesian vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+*/
+
+   double va[ 3 ] = { -0.29000, +17.31726, -10.00141 };
+
+/* Convert given J2000 RA,Dec to x,y,z. */
+   eraS2c( r2000, d2000, vb );
+
+/* Compute dot product with Solar motion vector. */
+   return eraPdp( va, vb );
+}
Index: branches/FACT++_part_filenames/pal/palSubet.c
===================================================================
--- branches/FACT++_part_filenames/pal/palSubet.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palSubet.c	(revision 18732)
@@ -0,0 +1,112 @@
+/*
+*+
+*  Name:
+*     palSubet
+
+*  Purpose:
+*     Remove the E-terms from a pre IAU 1976 catalogue RA,Dec
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palSubet ( double rc, double dc, double eq,
+*                     double *rm, double *dm );
+
+*  Arguments:
+*     rc = double (Given)
+*        RA with E-terms included (radians)
+*     dc = double (Given)
+*        Dec with E-terms included (radians)
+*     eq = double (Given)
+*        Besselian epoch of mean equator and equinox
+*     rm = double * (Returned)
+*        RA without E-terms (radians)
+*     dm = double * (Returned)
+*        Dec without E-terms (radians)
+
+*  Description:
+*     Remove the E-terms (elliptic component of annual aberration)
+*     from a pre IAU 1976 catalogue RA,Dec to give a mean place.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     Most star positions from pre-1984 optical catalogues (or
+*     derived from astrometry using such stars) embody the
+*     E-terms.  This routine converts such a position to a
+*     formal mean place (allowing, for example, comparison with a
+*     pulsar timing position).
+
+*  See Also:
+*     Explanatory Supplement to the Astronomical Ephemeris,
+*     section 2D, page 48.
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palSubet ( double rc, double dc, double eq, double *rm, double *dm ) {
+  double a[3];   /* The E-terms */
+  double v[3];
+  double f;
+  int i;
+
+  /* Note the preference for IAU routines */
+
+  /* Retrieve the E-terms */
+  palEtrms( eq, a );
+
+  /* Spherical to Cartesian */
+  eraS2c( rc, dc, v );
+
+  /* Include the E-terms */
+  f = 1.0 + eraPdp( v, a );
+  for (i=0; i<3; i++) {
+    v[i] = f*v[i] - a[i];
+  }
+
+  /* Cartesian to spherical */
+  eraC2s( v, rm, dm );
+
+  /* Bring RA into conventional range */
+  *rm = eraAnp( *rm );
+
+}
Index: branches/FACT++_part_filenames/pal/palSupgal.c
===================================================================
--- branches/FACT++_part_filenames/pal/palSupgal.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palSupgal.c	(revision 18732)
@@ -0,0 +1,116 @@
+/*
+*+
+*  Name:
+*     palSupgal
+
+*  Purpose:
+*     Convert from supergalactic to galactic coordinates
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palSupgal ( double dsl, double dsb, double *dl, double *db );
+
+*  Arguments:
+*     dsl = double (Given)
+*       Supergalactic longitude.
+*     dsb = double (Given)
+*       Supergalactic latitude.
+*     dl = double * (Returned)
+*       Galactic longitude.
+*     db = double * (Returned)
+*       Galactic latitude.
+
+*  Description:
+*     Transformation from de Vaucouleurs supergalactic coordinates
+*     to IAU 1958 galactic coordinates
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  See Also:
+*     - de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference
+*       Catalogue of Bright Galaxies, U. Texas, page 8.
+*     - Systems & Applied Sciences Corp., Documentation for the
+*       machine-readable version of the above catalogue,
+*       Contract NAS 5-26490.
+*
+*     (These two references give different values for the galactic
+*     longitude of the supergalactic origin.  Both are wrong;  the
+*     correct value is L2=137.37.)
+
+*  History:
+*     2012-02-12(TIMJ):
+*        Initial version with documentation taken from Fortran SLA
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1995 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "pal1sofa.h"
+
+void palSupgal ( double dsl, double dsb, double *dl, double *db ) {
+
+  double v1[3];
+  double v2[3];
+
+/*
+*  System of supergalactic coordinates:
+*
+*    SGL   SGB        L2     B2      (deg)
+*     -    +90      47.37  +6.32
+*     0     0         -      0
+*
+*  Galactic to supergalactic rotation matrix:
+*/
+  double rmat[3][3] = {
+    { -0.735742574804,+0.677261296414,+0.000000000000 },
+    { -0.074553778365,-0.080991471307,+0.993922590400 },
+    { +0.673145302109,+0.731271165817,+0.110081262225 }
+  };
+
+  /* Spherical to Cartesian */
+  eraS2c( dsl, dsb, v1 );
+
+  /* Supergalactic to galactic */
+  eraTrxp( rmat, v1, v2 );
+
+  /* Cartesian to spherical */
+  eraC2s( v2, dl, db );
+
+  /* Express in conventional ranges */
+  *dl = eraAnp( *dl );
+  *db = eraAnpm( *db );
+
+}
Index: branches/FACT++_part_filenames/pal/palTest.c
===================================================================
--- branches/FACT++_part_filenames/pal/palTest.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palTest.c	(revision 18732)
@@ -0,0 +1,2108 @@
+/*
+*+
+*  Name:
+*     palTest
+
+*  Purpose:
+*     Test the PAL library
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Application
+
+*  Description:
+*     Test the PAL library is functioning correctly. Uses some of the SLA test code.
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+*     USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+static int verbose = 1;
+
+/* Support functions to allow to test results.
+   viv and vvd match the SOFA/ERFA implementations */
+
+static void viv(int ival, int ivalok, const char *func, const char *test,
+                int *status)
+/*
+**  - - - -
+**   v i v
+**  - - - -
+**
+**  Validate an integer result.
+**
+**  Internal function used by t_sofa_c program.
+**
+**  Given:
+**     ival     int          value computed by function under test
+**     ivalok   int          correct value
+**     func     char[]       name of function under test
+**     test     char[]       name of individual test
+**
+**  Given and returned:
+**     status   int          set to FALSE if test fails
+**
+**  This revision:  2009 November 4
+*/
+{
+   if (ival != ivalok) {
+      *status = 1;
+      printf("%s failed: %s want %d got %d\n",
+             func, test, ivalok, ival);
+   } else if (verbose) {
+      printf("%s passed: %s want %d got %d\n",
+                    func, test, ivalok, ival);
+   }
+   return;
+}
+
+static void vvd(double val, double valok, double dval,
+                const char *func, const char *test, int *status)
+/*
+**  - - - -
+**   v v d
+**  - - - -
+**
+**  Validate a double result.
+**
+**  Internal function used by t_sofa_c program.
+**
+**  Given:
+**     val      double       value computed by function under test
+**     valok    double       expected value
+**     dval     double       maximum allowable error
+**     func     char[]       name of function under test
+**     test     char[]       name of individual test
+**
+**  Given and returned:
+**     status   int          set to FALSE if test fails
+**
+**  This revision:  2008 June 8
+*/
+{
+   double a, f;   /* absolute and fractional error */
+
+
+   a = val - valok;
+   if (fabs(a) > dval) {
+      f = fabs(valok / a);
+      *status = 1;
+      printf("%s failed: %s want %.20g got %.20g (1/%.3g)\n",
+             func, test, valok, val, f);
+   } else if (verbose) {
+      printf("%s passed: %s want %.20g got %.20g\n",
+             func, test, valok, val);
+   }
+   return;
+}
+
+/* Verify a string */
+static void vcs( const char * val, const char * valok,
+                 const char * func, const char * test,
+                 int *status ) {
+
+  if (strcmp(val, valok) != 0) {
+    *status = 1;
+    printf("%s failed: %s want %s got %s\n",
+           func, test, valok, val );
+  } else if (verbose) {
+    printf("%s passed: %s want %s got %s\n",
+           func, test, valok, val );
+  }
+  return;
+
+}
+
+/* Verify the 3x3 rmat matrix */
+static void
+vrmat( double rmat[3][3], double expected[3][3], const char * func,
+       double dval, int * status ) {
+  int i;
+  char buf[10];
+  for( i = 0; i < 3; i++ ) {
+    int j;
+    for( j = 0; j < 3; j++ ) {
+      sprintf( buf, "%d,%d", i, j );
+      vvd( rmat[i][j], expected[i][j], dval, func, buf, status );
+    }
+  }
+}
+
+/* Verify a vector */
+static void
+vvec( int len, double *vec, double *expected, const char *func,
+      int *status ) {
+  int i;
+  char buf[10];
+  for( i = 0; i < len; i++ ) {
+    sprintf( buf, "%d", i );
+    vvd( vec[i], expected[i], 1e-12, func, buf, status );
+  }
+}
+
+/******************************************************************/
+/*          TEST FUNCTIONS          */
+
+/* Adding E-terms */
+
+static void t_addet( int *status ) {
+  double r1,d1,r2,d2;
+  double rm = 2.;
+  double dm = -1.;
+  double eq = 1975.;
+
+
+  palAddet ( rm, dm, eq, &r1, &d1 );
+  vvd ( r1 - rm, 2.983864874295250e-6, 1e-12, "palAddet",
+	"R", status );
+  vvd ( d1 - dm, 2.379650804185118e-7, 1e-12, "palAddet",
+	"D", status );
+
+  palSubet ( r1, d1, eq, &r2, &d2 );
+  vvd ( r2 - rm, 0, 1e-12, "palSubet", "R", status );
+  vvd ( d2 - dm, 0, 1e-12, "palSubet", "D", status );
+
+}
+
+static void t_afin( int * status ) {
+
+  int j;
+  int i = 1;
+  double d = 0.0;
+  const char * s = "12 34 56.7 |";
+  const char * s2 = "45 00 00.000 ";
+
+  palDafin (s, &i, &d, &j);
+  viv ( i, 12, "palDafin", "I", status );
+  vvd ( d, 0.2196045986911432, 1e-12, "palDafin", "A",
+        status );
+  viv ( j, 0, "palDafin", "J", status );
+
+  i = 1;
+  palDafin (s2, &i, &d, &j);
+  viv ( i, 14, "palDafin", "I", status );
+  vvd ( d, PAL__DPI/4.0, 1e-12, "palDafin", "A",
+        status );
+  viv ( j, 0, "palDafin", "J", status );
+}
+
+/* Altaz */
+
+static void t_altaz( int *status ) {
+  double az, azd, azdd, el, eld, eldd, pa, pad, padd;
+  palAltaz( 0.7, -0.7, -0.65,
+            &az, &azd, &azdd, &el, &eld, &eldd, &pa, &pad, &padd );
+
+  vvd ( az, 4.400560746660174, 1e-12, "palAltaz",
+        "AZ", status );
+  vvd ( azd, -0.2015438937145421, 1e-13, "palAltaz",
+        "AZD", status );
+  vvd ( azdd, -0.4381266949668748, 1e-13, "palAltaz",
+        "AZDD", status );
+  vvd ( el, 1.026646506651396, 1e-12, "palAltaz",
+        "EL", status );
+  vvd ( eld, -0.7576920683826450, 1e-13, "palAltaz",
+        "ELD", status );
+  vvd ( eldd, 0.04922465406857453, 1e-14, "palAltaz",
+        "ELDD", status );
+  vvd ( pa, 1.707639969653937, 1e-12, "palAltaz",
+        "PA", status );
+  vvd ( pad, 0.4717832355365627, 1e-13, "palAltaz",
+        "PAD", status );
+  vvd ( padd, -0.2957914128185515, 1e-13, "palAltaz",
+        "PADD", status );
+}
+
+/* Airmass */
+
+static void t_airmas( int *status ) {
+  vvd ( palAirmas ( 1.2354 ), 3.015698990074724,
+        1e-12, "palAirmas", " ", status );
+}
+
+/* Apparent to mean place */
+
+static void t_amp ( int *status ) {
+  double rm, dm;
+
+  /* Original SLA test is not accurate since palMapqk
+     differs from slaMapqk */
+  palAmp ( 2.345, -1.234, 50100, 1990, &rm, &dm );
+  vvd ( rm, 2.344472180027961, 1e-6, "palAmp", "R",
+        status );
+  vvd ( dm, -1.233573099847705, 1e-7, "palAmp", "D",
+        status );
+
+  /* This is the palMapqk test */
+  palAmp( 1.234, -0.567, 55927.0, 2010.0, &rm, &dm );
+  vvd( rm, 1.233512033578303857, 1.0E-12, "palAmp", "rm", status );
+  vvd( dm, -0.56702909748530827549, 1.0E-12, "palAmp", "dm", status );
+}
+
+/* Apparent to Observed place */
+
+static void t_aop ( int *status ) {
+
+  int i;
+
+  double rap, dap, date, dut, elongm, phim, hm, xp, yp,
+    tdk, pmb, rh, wl, tlr, aob, zob, hob, dob, rob, aoprms[14];
+
+  dap = -0.1234;
+  date = 51000.1;
+  dut = 25.0;
+  elongm = 2.1;
+  phim = 0.5;
+  hm = 3000.0;
+  xp = -0.5e-6;
+  yp = 1.0e-6;
+  tdk = 280.0;
+  pmb = 550.0;
+  rh = 0.6;
+  tlr = 0.006;
+
+  for (i=1; i<=3; i++) {
+
+    if ( i == 1 ) {
+      rap = 2.7;
+      wl = 0.45;
+    } else if ( i == 2 ) {
+      rap = 2.345;
+    } else {
+      wl = 1.0e6;
+    }
+
+    palAop ( rap, dap, date, dut, elongm, phim, hm, xp, yp,
+             tdk, pmb, rh, wl, tlr, &aob, &zob, &hob, &dob, &rob );
+
+    if ( i == 1 ) {
+      vvd( aob, 1.812817787123283034, 1e-10, "palAop",
+           "lo aob", status );
+      vvd( zob, 1.393860816635714034, 1e-8, "palAop",
+           "lo zob", status );
+      vvd( hob, -1.297808009092456683, 1e-8, "palAop",
+           "lo hob", status );
+      vvd( dob, -0.122967060534561, 1e-8, "palAop",
+           "lo dob", status );
+      vvd( rob, 2.699270287872084, 1e-8, "palAop",
+           "lo rob", status );
+    } else if ( i == 2 ) {
+      vvd( aob, 2.019928026670621442, 1e-10, "palAop",
+           "aob/o", status );
+      vvd( zob, 1.101316172427482466, 1e-10, "palAop",
+           "zob/o", status );
+      vvd( hob, -0.9432923558497740862, 1e-10, "palAop",
+           "hob/o", status );
+      vvd( dob, -0.1232144708194224, 1e-10, "palAop",
+           "dob/o", status );
+      vvd( rob, 2.344754634629428, 1e-10, "palAop",
+           "rob/o", status );
+    } else {
+      vvd( aob, 2.019928026670621442, 1e-10, "palAop",
+           "aob/r", status );
+      vvd( zob, 1.101267532198003760, 1e-10, "palAop",
+           "zob/r", status );
+      vvd( hob, -0.9432533138143315937, 1e-10, "palAop",
+           "hob/r", status );
+      vvd( dob, -0.1231850665614878, 1e-10, "palAop",
+           "dob/r", status );
+      vvd( rob, 2.344715592593984, 1e-10, "palAop",
+           "rob/r", status );
+    }
+  }
+
+  date = 48000.3;
+  wl = 0.45;
+
+  palAoppa ( date, dut, elongm, phim, hm, xp, yp, tdk,
+             pmb, rh, wl, tlr, aoprms );
+  vvd( aoprms[0], 0.4999993892136306, 1e-13, "palAoppa",
+       "0", status );
+  vvd( aoprms[1], 0.4794250025886467, 1e-13, "palAoppa",
+       "1", status );
+  vvd( aoprms[2], 0.8775828547167932, 1e-13, "palAoppa",
+       "2", status );
+  vvd( aoprms[3], 1.363180872136126e-6, 1e-13, "palAoppa",
+       "3", status );
+  vvd( aoprms[4], 3000.0, 1e-10, "palAoppa", "4",
+       status );
+  vvd( aoprms[5], 280.0, 1e-11, "palAoppa", "5",
+       status );
+  vvd( aoprms[6], 550.0, 1e-11, "palAoppa", "6",
+       status );
+  vvd( aoprms[7], 0.6, 1e-13, "palAoppa", "7",
+       status );
+  vvd( aoprms[8], 0.45, 1e-13, "palAoppa", "8",
+       status );
+  vvd( aoprms[9], 0.006, 1e-15, "palAoppa", "9",
+       status );
+  vvd( aoprms[10], 0.0001562803328459898, 1e-13,
+       "palAoppa", "10", status );
+  vvd( aoprms[11], -1.792293660141e-7, 1e-13,
+       "palAoppa", "11", status );
+  vvd( aoprms[12], 2.101874231495843, 1e-13,
+       "palAoppa", "12", status );
+  vvd( aoprms[13], 7.601916802079765, 1e-8,
+       "palAoppa", "13", status );
+
+  palOap ( "r", 1.6, -1.01, date, dut, elongm, phim,
+           hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap );
+  vvd( rap, 1.601197569844787, 1e-10, "palOap",
+       "rr", status );
+  vvd( dap, -1.012528566544262, 1e-10, "palOap",
+       "rd", status );
+  palOap ( "h", -1.234, 2.34, date, dut, elongm, phim,
+           hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap );
+  vvd( rap, 5.693087688154886463, 1e-10, "palOap",
+       "hr", status );
+  vvd( dap, 0.8010281167405444, 1e-10, "palOap",
+       "hd", status );
+  palOap ( "a", 6.1, 1.1, date, dut, elongm, phim,
+           hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap );
+  vvd( rap, 5.894305175192448940, 1e-10, "palOap",
+       "ar", status );
+  vvd( dap, 1.406150707974922, 1e-10, "palOap",
+       "ad", status );
+
+  palOapqk ( "r", 2.1, -0.345, aoprms, &rap, &dap );
+  vvd( rap, 2.10023962776202, 1e-10, "palOapqk",
+       "rr", status );
+  vvd( dap, -0.3452428692888919, 1e-10, "palOapqk",
+       "rd", status );
+  palOapqk ( "h", -0.01, 1.03, aoprms, &rap, &dap );
+  vvd( rap, 1.328731933634564995, 1e-10, "palOapqk",
+       "hr", status );
+  vvd( dap, 1.030091538647746, 1e-10, "palOapqk",
+       "hd", status );
+  palOapqk ( "a", 4.321, 0.987, aoprms, &rap, &dap );
+  vvd( rap, 0.4375507112075065923, 1e-10, "palOapqk",
+       "ar", status );
+  vvd( dap, -0.01520898480744436, 1e-10, "palOapqk",
+       "ad", status );
+
+  palAoppat ( date + PAL__DS2R, aoprms );
+  vvd( aoprms[13], 7.602374979243502, 1e-8, "palAoppat",
+       " ", status );
+}
+
+/* Bearings */
+
+static void t_bear( int *status ) {
+  double a1 = 1.234;
+  double b1 = -0.123;
+  double a2 = 2.345;
+  double b2 = 0.789;
+
+  double d1[3];
+  double d2[3];
+
+  vvd ( palDbear ( a1, b1, a2, b2 ), 0.7045970341781791,
+	1e-12, "palDbear", " ", status );
+  palDcs2c ( a1, b1, d1 );
+  palDcs2c ( a2, b2, d2 );
+
+  vvd ( palDpav ( d1, d2 ), 0.7045970341781791,
+	1e-12, "palDpav", " ", status );
+
+}
+
+/* Calendar to MJD */
+
+static void t_caldj( int *status ) {
+  int j;
+  double djm;
+
+  palCaldj ( 1999, 12, 31, &djm, &j );
+  vvd ( djm, 51543, 0, "palCaldj", " ", status );
+  viv ( j, 0, "palCaldj", "J", status );
+}
+
+/* palDaf2r */
+
+static void t_caf2r( int * status ) {
+  int j;
+  double dr;
+
+  palDaf2r ( 76, 54, 32.1, &dr, &j );
+  vvd ( dr, 1.342313819975276, 1e-12, "palDaf2r",
+        "r", status );
+  viv ( j, 0, "palDaf2r", "j", status );
+}
+
+/* Test palDcc2s routines */
+
+static void t_cc2s( int * status ) {
+  double dv[3] = { 100., -50., 25. };
+  double da, db;
+
+  palDcc2s ( dv, &da, &db );
+  vvd ( da, -0.4636476090008061, 1e-12, "palDcc2s",
+        "A", status );
+  vvd ( db, 0.2199879773954594, 1e-12, "palDcc2s",
+        "B", status );
+}
+
+/* palDd2tf */
+
+static void t_cd2tf( int *status ) {
+  int ihmsf[4];
+  char s;
+
+  palDd2tf ( 4, -0.987654321, &s, ihmsf );
+  viv ( s, '-', "palDd2tf", "S", status );
+  viv ( ihmsf[0], 23, "palDd2tf", "(1)", status );
+  viv ( ihmsf[1], 42, "palDd2tf", "(2)", status );
+  viv ( ihmsf[2], 13, "palDd2tf", "(3)", status );
+  viv ( ihmsf[3], 3333, "palDd2tf", "(4)", status );
+}
+
+/* Calendar to MJD */
+
+static void t_cldj( int *status ) {
+  double d;
+  int j;
+
+  palCldj ( 1899, 12, 31, &d, &j );
+  vvd ( d, 15019, 0, "palCldj", "D", status );
+  viv ( j, 0, "palCldj", "J", status );
+}
+
+/* palDr2af */
+
+static void t_cr2af( int *status ) {
+  char s;
+  int idmsf[4];
+  palDr2af ( 4, 2.345, &s, idmsf );
+  viv ( s, '+', "palDr2af", "S", status );
+  viv ( idmsf[0], 134, "palDr2af", "(1)", status );
+  viv ( idmsf[1], 21, "palDr2af", "(2)", status );
+  viv ( idmsf[2], 30, "palDr2af", "(3)", status );
+  viv ( idmsf[3], 9706, "palDr2af", "(4)", status );
+}
+
+/* palDr2tf */
+
+static void t_cr2tf( int *status ) {
+  char s;
+  int ihmsf[4];
+  palDr2tf ( 4, -3.01234, &s, ihmsf );
+  viv ( s, '-', "palDr2tf", "S", status );
+  viv ( ihmsf[0], 11, "palDr2tf", "(1)", status );
+  viv ( ihmsf[1], 30, "palDr2tf", "(2)", status );
+  viv ( ihmsf[2], 22, "palDr2tf", "(3)", status );
+  viv ( ihmsf[3], 6484, "palDr2tf", "(4)", status );
+}
+
+/* palDtf2d */
+
+static void t_ctf2d( int *status ) {
+  double dd;
+  int j;
+
+  palDtf2d (23, 56, 59.1, &dd, &j);
+  vvd ( dd, 0.99790625, 1e-12, "palDtf2d", "D", status );
+  viv ( j, 0, "palDtf2d", "J", status );
+}
+
+/* palDtf2r */
+
+static void t_ctf2r( int *status ) {
+  double dr;
+  int j;
+
+  palDtf2r (23, 56, 59.1, &dr, &j);
+  vvd ( dr, 6.270029887942679, 1e-12, "palDtf2r",
+        "R", status );
+  viv ( j, 0, "palDtf2r", "J", status );
+}
+
+static void t_dat ( int *status ) {
+  vvd ( palDat ( 43900 ), 18, 0, "palDat",
+        " ", status );
+  vvd ( palDtt ( 40404 ), 39.709746, 1e-12, "palDtt",
+        " ", status );
+  vvd ( palDt ( 500 ), 4686.7, 1e-10, "palDt",
+        "500", status );
+  vvd ( palDt ( 1400 ), 408, 1e-11, "palDt",
+        "1400", status );
+  vvd ( palDt ( 1950 ), 27.99145626, 1e-12, "palDt",
+        "1950", status );
+}
+
+/* Dates */
+
+static void t_djcal( int *status ) {
+  const double djm = 50123.9999;
+  int iy, im, id;
+  int iydmf[4];
+  int j;
+  double f;
+
+  palDjcal ( 4, djm, iydmf, &j );
+  viv ( iydmf[0], 1996, "palDjcal", "Y", status );
+  viv ( iydmf[1], 2, "palDjcal", "M", status );
+  viv ( iydmf[2], 10, "palDjcal", "D", status );
+  viv ( iydmf[3], 9999, "palDjcal", "F", status );
+  viv ( j, 0, "palDjcal", "J", status );
+
+  palDjcl ( djm, &iy, &im, &id, &f, &j );
+  viv ( iy, 1996, "palDjcl", "Y", status );
+  viv ( im, 2, "palDjcl", "M", status );
+  viv ( id, 10, "palDjcl", "D", status );
+  vvd ( f, 0.9999, 1e-7, "palDjcl", "F", status );
+  viv ( j, 0, "palDjcl", "J", status );
+
+}
+
+/* Matrix inversion */
+
+static void t_dmat( int *status ) {
+  int j;
+  int iw[3];
+  double dd;
+  double da[9] = {
+    2.22,     1.6578,     1.380522,
+    1.6578,   1.380522,   1.22548578,
+    1.380522, 1.22548578, 1.1356276122
+  };
+  double dv[3] = {
+    2.28625, 1.7128825, 1.429432225
+  };
+
+  palDmat( 3, da, dv, &dd, &j, iw );
+  vvd ( da[0], 18.02550629769198,
+	1e-10, "palDmat", "a[0]", status );
+  vvd ( da[1], -52.16386644917280607,
+	1e-10, "palDmat", "a[1]", status );
+  vvd ( da[2], 34.37875949717850495,
+	1e-10, "palDmat", "a[2]", status );
+  vvd ( da[3], -52.16386644917280607,
+	1e-10, "palDmat", "a[3]", status );
+  vvd ( da[4], 168.1778099099805627,
+	1e-10, "palDmat", "a[4]", status );
+  vvd ( da[5], -118.0722869694232670,
+	1e-10, "palDmat", "a[5]", status );
+  vvd ( da[6], 34.37875949717850495,
+	1e-10, "palDmat", "a[6]", status );
+  vvd ( da[7], -118.0722869694232670,
+	1e-10, "palDmat", "a[7]", status );
+  vvd ( da[8], 86.50307003740151262,
+	1e-10, "palDmat", "a[8]", status );
+  vvd ( dv[0], 1.002346480763383,
+	1e-12, "palDmat", "v[0]", status );
+  vvd ( dv[1], 0.03285594016974583489,
+	1e-12, "palDmat", "v[1]", status );
+  vvd ( dv[2], 0.004760688414885247309,
+	1e-12, "palDmat", "v[2]", status );
+  vvd ( dd, 0.003658344147359863,
+	1e-12, "palDmat", "D", status );
+  viv ( j, 0, "palDmat", "J", status );
+
+}
+
+/* Test palDe2h and palDh2e routines */
+
+static void t_e2h( int *status ) {
+  double dh, dd, dp, da, de;
+
+  dh = -0.3;
+  dd = -1.1;
+  dp = -0.7;
+
+  palDe2h( dh, dd, dp, &da, &de );
+  vvd( da, 2.820087515852369, 1e-12, "palDe2h",
+       "AZ", status);
+  vvd( de, 1.132711866443304, 1e-12, "palDe2h",
+       "EL", status );
+
+  palDh2e( da, de, dp, &dh, &dd );
+  vvd( dh, -0.3, 1e-12, "palDh2e", "HA", status);
+  vvd( dd, -1.1, 1e-12, "palDh2e", "DEC", status );
+
+}
+
+/* Epochs */
+
+static void t_epb( int *status ) {
+  vvd ( palEpb( 45123 ), 1982.419793168669, 1e-8,
+        "palEpb", " ", status );
+}
+
+static void t_epb2d( int *status ) {
+  vvd ( palEpb2d( 1975.5 ), 42595.5995279655, 1e-7,
+        "palEpb2d", " ", status );
+}
+
+static void t_epco( int *status ) {
+  vvd ( palEpco ( 'B', 'J', 2000 ), 2000.001277513665,
+        1e-7, "palEpco", "BJ", status );
+  vvd ( palEpco ( 'J', 'B', 1950 ), 1949.999790442300,
+        1e-7, "palEpco", "JB", status );
+  vvd ( palEpco ( 'J', 'j', 2000 ), 2000,
+        1e-7, "palEpco", "JJ", status );
+}
+
+static void t_epj( int *status ) {
+  vvd ( palEpj( 42999 ), 1976.603696098563,
+        1e-7, "palEpj", " ", status );
+}
+
+static void t_epj2d( int *status ) {
+  vvd ( palEpj2d( 2010.077 ), 55225.124250,
+        1e-6, "palEpj2d", " ", status );
+}
+
+/* Equation of the equinoxes */
+
+/* Use SOFA/ERFA test because of change in precession model */
+static void t_eqeqx (int *status ) {
+  vvd ( palEqeqx( 53736. ), -0.8834195072043790156e-5,
+        1e-15, "palEqeqx", " ", status );
+}
+
+/* E-terms */
+
+static void t_etrms( int * status ) {
+  double ev[3];
+
+  palEtrms ( 1976.9, ev );
+
+  vvd ( ev[0], -1.621617102537041e-6, 1e-18, "palEtrms",
+	"X", status );
+  vvd ( ev[1], -3.310070088507914e-7, 1e-18, "palEtrms",
+	"Y", status );
+  vvd ( ev[2], -1.435296627515719e-7, 1e-18, "palEtrms",
+	"Z", status );
+}
+
+/* J2000 to Galactic */
+
+static void t_eqgal( int *status ) {
+  double dl, db;
+
+  palEqgal ( 5.67, -1.23, &dl, &db );
+
+  vvd ( dl, 5.612270780904526, 1e-12, "palEqgal",
+	"DL", status );
+  vvd ( db, -0.6800521449061520, 1e-12, "palEqgal",
+	"DB", status );
+}
+
+/* Galactic to J2000 equatorial */
+
+static void t_galeq( int *status ) {
+  double dr, dd;
+
+  palGaleq ( 5.67, -1.23, &dr, &dd );
+
+  vvd ( dr, 0.04729270418071426, 1e-12, "palGaleq",
+	"DR", status );
+  vvd ( dd, -0.7834003666745548, 1e-12, "palGaleq",
+	"DD", status );
+}
+
+/* Galactic to supergalactic */
+static void t_galsup(int *status ) {
+  double dsl, dsb;
+
+  palGalsup ( 6.1, -1.4, &dsl, &dsb );
+
+  vvd ( dsl, 4.567933268859171, 1e-12, "palGalsup",
+	"DSL", status );
+  vvd ( dsb, -0.01862369899731829, 1e-12, "palGalsup",
+	"DSB", status );
+}
+
+/* Geocentric coordinates */
+
+/* This is not from sla_test.f */
+
+static void t_geoc( int *status ) {
+  double r;
+  double z;
+  /* JCMT */
+  const double lat = 19.822838905884 * PAL__DD2R;
+  const double alt = 4120.0;
+  palGeoc( lat, alt, &r, &z );
+
+  /* Note the lower tolerance than normal since the models in SLA
+     differ from the more up to date model in SOFA/ERFA */
+  vvd( r, 4.01502667039618e-05, 1e-10, "palGeoc", "R", status );
+  vvd( z, 1.43762411970295e-05, 1e-10, "palGeoc", "Z", status );
+
+}
+
+/* Galactic to Fk4 */
+
+static void t_ge50 ( int *status ) {
+  double dr, dd;
+  palGe50( 6.1, -1.55, &dr, &dd );
+  vvd ( dr, 0.1966825219934508, 1e-12, "palGe50",
+        "DR", status );
+  vvd ( dd, -0.4924752701678960, 1e-12, "palGe50",
+        "DD", status );
+
+
+}
+
+/* GMST */
+
+/* We use the SOFA/ERFA test values rather than the values from SLA
+   because the precession models have changed */
+
+static void t_gmst( int *status ) {
+  vvd ( palGmst( 53736. ), 1.754174971870091203,
+        1e-12, "palGmst", " ", status );
+
+  vvd ( palGmsta( 53736., 0.0 ), 1.754174971870091203,
+        1e-12, "palGmsta", " ", status );
+}
+
+/* FK5 */
+
+static void t_fk52h ( int *status ) {
+  double r5, d5, dr5, dd5, rh, dh;
+
+  palFk5hz ( 1.234, -0.987, 1980, &rh, &dh );
+  vvd ( rh, 1.234000136713611301, 1e-13, "palFk5hz",
+        "R", status );
+  vvd ( dh, -0.9869999702020807601, 1e-13, "palFk5hz",
+        "D", status );
+  palHfk5z ( rh, dh, 1980, &r5, &d5, &dr5, &dd5 );
+  vvd ( r5, 1.234, 1e-13, "palHfk5z", "R", status );
+  vvd ( d5, -0.987, 1e-13, "palHfk5z", "D", status );
+  vvd ( dr5, 0.000000006822074, 1e-13, "palHfk5z",
+        "DR", status );
+  vvd ( dd5, -0.000000002334012, 1e-13, "palHfk5z",
+        "DD", status );
+
+}
+
+static void t_intin( int *status ) {
+  const char s[] = "  -12345, , -0  2000  +     ";
+  /*                1234567890123456789012345678 */
+  int i = 1;
+  long n = 0;
+  int j;
+
+  palIntin ( s, &i, &n, &j );
+  viv ( i, 10, "palIntin", "I1", status );
+  viv ( n, -12345, "palIntin", "V1", status );
+  viv ( j, -1, "palIntin", "J1", status );
+
+  palIntin ( s, &i, &n, &j );
+  viv ( i, 12, "palIntin", "I2", status );
+  viv ( n, -12345, "palIntin", "V2", status );
+  viv ( j, 1, "palIntin", "J2", status );
+
+  palIntin ( s, &i, &n, &j );
+  viv ( i, 17, "palIntin", "I3", status );
+  viv ( n, 0, "palIntin", "V3", status );
+  viv ( j, -1, "palIntin", "J3", status );
+
+  palIntin ( s, &i, &n, &j );
+  viv ( i, 23, "palIntin", "I4", status );
+  viv ( n, 2000, "palIntin", "V4", status );
+  viv ( j, 0, "palIntin", "J4", status );
+
+  palIntin ( s, &i, &n, &j );
+  viv ( i, 29, "palIntin", "I5", status );
+  viv ( n, 2000, "palIntin", "V5", status );
+  viv ( j, 1, "palIntin", "J5", status ); /* Note that strtol does not care about a + */
+
+}
+
+
+/* Moon */
+
+static void t_moon ( int *status ) {
+  double pv[6];
+
+  double expected1[] = {
+    0.00229161514616454,
+    0.000973912029208393,
+    0.000669931538978146,
+    -3.44709700068209e-09,
+    5.44477533462392e-09,
+    2.11785724844417e-09
+  };
+
+  /* SLA test only include slaMoon so we use the
+     example from SUN/67 */
+  palDmoon( 48634.4687174074, pv );
+  vvec( 6, pv, expected1, "palDmoon", status );
+}
+
+/* Nutation */
+
+static void t_nut( int *status ) {
+  double dpsi, deps, eps0;
+
+  double expected[3][3] = {
+    {  9.999999969492166e-1, 7.166577986249302e-5,  3.107382973077677e-5 },
+    { -7.166503970900504e-5, 9.999999971483732e-1, -2.381965032461830e-5 },
+    { -3.107553669598237e-5, 2.381742334472628e-5,  9.999999992335206818e-1 }
+  };
+
+  double rmatn[3][3];
+
+  /* SLA tests with low precision */
+  palNut( 46012.32, rmatn );
+  vrmat( rmatn, expected, "palNut", 1.0e-3, status );
+
+  /* Use the SOFA/ERFA tests */
+  palNutc( 54388.0, &dpsi, &deps, &eps0 );
+  vvd( eps0, 0.4090749229387258204, 1e-14,
+      "palNutc", "eps0", status);
+
+  palNutc( 53736.0, &dpsi, &deps, &eps0 );
+   vvd(dpsi, -0.9630912025820308797e-5, 1e-13,
+       "palNutc", "dpsi", status);
+   vvd(deps,  0.4063238496887249798e-4, 1e-13,
+       "palNutc", "deps", status);
+}
+
+/* palPrebn */
+
+static void t_prebn( int *status ) {
+  double rmatp[3][3];
+  double prebn_expected[3][3] = {
+    { 9.999257613786738e-1, -1.117444640880939e-2, -4.858341150654265e-3 },
+    { 1.117444639746558e-2,  9.999375635561940e-1, -2.714797892626396e-5 },
+    { 4.858341176745641e-3, -2.714330927085065e-5,  9.999881978224798e-1 },
+  };
+
+  palPrebn ( 1925., 1975., rmatp );
+  vrmat( rmatp, prebn_expected, "palPrebn", 1.0e-12, status );
+}
+
+/* Range */
+
+static void t_range( int *status ) {
+  vvd ( palDrange ( -4 ), 2.283185307179586,
+        1e-12, "palDrange", " ", status );
+}
+
+static void t_ranorm( int *status ) {
+  vvd ( palDranrm ( -0.1 ), 6.183185307179587,
+        1e-12, "palDranrm", "2", status );
+}
+
+/* Separation routines */
+
+static void t_sep( int *status ) {
+  double d1[3] = { 1.0, 0.1, 0.2 };
+  double d2[3] = { -3.0, 1e-3, 0.2 };
+  double ad1, bd1, ad2, bd2;
+
+  palDcc2s( d1, &ad1, &bd1 );
+  palDcc2s( d2, &ad2, &bd2 );
+
+  vvd ( palDsep ( ad1, bd1, ad2, bd2 ),
+        2.8603919190246608, 1e-7, "palDsep", " ", status );
+  vvd ( palDsepv ( d1, d2 ),
+        2.8603919190246608, 1e-7, "palDsepv", " ", status );
+
+}
+
+/* Supergalactic */
+
+static void t_supgal( int *status ) {
+  double dl, db;
+
+  palSupgal ( 6.1, -1.4, &dl, &db );
+
+  vvd ( dl, 3.798775860769474, 1e-12, "palSupgal",
+	"DL", status );
+  vvd ( db, -0.1397070490669407, 1e-12, "palSupgal",
+	"DB", status );
+
+}
+
+/* Test spherical tangent-plane-projection routines */
+static void t_tp( int *status ) {
+
+  int j;
+  double dr0, dd0, dr1, dd1, dx, dy, dr2, dd2, dr01,
+    dd01, dr02, dd02;
+
+  dr0 = 3.1;
+  dd0 = -0.9;
+  dr1 = dr0 + 0.2;
+  dd1 = dd0 - 0.1;
+  palDs2tp( dr1, dd1, dr0, dd0, &dx, &dy, &j );
+  vvd( dx, 0.1086112301590404, 1e-12, "palDs2tp",
+       "x", status );
+  vvd( dy, -0.1095506200711452, 1e-12, "palDs2tp",
+       "y", status );
+  viv( j, 0, "palDs2tp", "j", status );
+
+  palDtp2s( dx, dy, dr0, dd0, &dr2, &dd2 );
+  vvd( dr2 - dr1, 0., 1e-12, "palDtp2s", "r", status );
+  vvd( dd2 - dd1, 0., 1e-12, "palDtp2s", "d", status );
+
+  palDtps2c( dx, dy, dr2, dd2, &dr01, &dd01, &dr02, &dd02, &j );
+  vvd( dr01, 3.1, 1e-12, "palDtps2c", "r1", status);
+  vvd( dd01, -0.9, 1e-12, "palDtps2c", "d1", status);
+  vvd( dr02, 0.3584073464102072, 1e-12, "palDtps2c",
+       "r2", status);
+  vvd( dd02, -2.023361658234722, 1e-12, "palDtps2c",
+       "d2", status );
+  viv( j, 1, "palDtps2c", "n", status );
+
+}
+
+/* Test all the 3-vector and 3x3 matrix routines. */
+
+static void t_vecmat( int * status ) {
+  int i;
+
+  /* palDav2m */
+  double drm1[3][3];
+  double dav[3] = { -0.123, 0.0987, 0.0654 };
+  double dav2m_expected[3][3] = {
+    {  0.9930075842721269,  0.05902743090199868, -0.1022335560329612 },
+    { -0.07113807138648245, 0.9903204657727545,  -0.1191836812279541 },
+    {  0.09420887631983825, 0.1256229973879967,   0.9875948309655174 },
+  };
+
+  /* palDeuler */
+  double drm2[3][3];
+  double deuler_expected[3][3] = {
+    { -0.1681574770810878,  0.1981362273264315,  0.9656423242187410 },
+    { -0.2285369373983370,  0.9450659587140423, -0.2337117924378156 },
+    { -0.9589024617479674, -0.2599853247796050, -0.1136384607117296 } };
+
+  /* palDmxm */
+  double drm[3][3];
+  double dmxm_expected[3][3] = {
+    { -0.09010460088585805,  0.3075993402463796,  0.9472400998581048 },
+    { -0.3161868071070688,   0.8930686362478707, -0.3200848543149236 },
+    { -0.9444083141897035,  -0.3283459407855694,  0.01678926022795169 },
+  };
+
+  /* palDcs2c et al */
+  double dv1[3];
+  double dv2[3];
+  double dv3[3];
+  double dv4[3];
+  double dv5[3];
+  double dv6[3];
+  double dv7[3];
+  double dvm;
+
+  /* palDav2m */
+  palDav2m( dav, drm1 );
+  vrmat( drm1, dav2m_expected, "palDav2m", 1.0e-12, status );
+
+  /* Test palDeuler */
+  palDeuler( "YZY", 2.345, -0.333, 2.222, drm2 );
+  vrmat( drm2, deuler_expected, "palDeuler", 1.0e-12, status );
+
+  /* palDmxm */
+  palDmxm( drm2, drm1, drm );
+  vrmat( drm, dmxm_expected, "palDmxm", 1.0e-12, status );
+
+  /* palDcs2c */
+  palDcs2c( 3.0123, -0.999, dv1 );
+  vvd ( dv1[0], -0.5366267667260525, 1e-12,
+        "palDcs2c", "x", status );
+  vvd ( dv1[1], 0.06977111097651444, 1e-12,
+        "palDcs2c", "y", status );
+  vvd ( dv1[2], -0.8409302618566215, 1e-12,
+        "palDcs2c", "z", status );
+
+  /* palDmxv */
+  palDmxv( drm1, dv1, dv2 );
+  palDmxv( drm2, dv2, dv3 );
+  vvd ( dv3[0], -0.7267487768696160, 1e-12,
+        "palDmxv", "x", status );
+  vvd ( dv3[1], 0.5011537352639822, 1e-12,
+        "palDmxv", "y", status );
+  vvd ( dv3[2], 0.4697671220397141, 1e-12,
+        "palDmxv", "z", status );
+
+  /* palDimxv */
+  palDimxv( drm, dv3, dv4 );
+  vvd ( dv4[0], -0.5366267667260526, 1e-12,
+        "palDimxv", "X", status );
+  vvd ( dv4[1], 0.06977111097651445, 1e-12,
+        "palDimxv", "Y", status );
+  vvd ( dv4[2], -0.8409302618566215, 1e-12,
+        "palDimxv", "Z", status );
+
+  /* palDm2av */
+  palDm2av( drm, dv5 );
+  vvd ( dv5[0], 0.006889040510209034, 1e-12,
+        "palDm2av", "X", status );
+  vvd ( dv5[1], -1.577473205461961, 1e-12,
+        "palDm2av", "Y", status );
+  vvd ( dv5[2], 0.5201843672856759, 1e-12,
+        "palDm2av", "Z", status );
+
+  for (i=0; i<3; i++) {
+    dv5[i] *= 1000.0;
+  }
+
+  /* palDvn */
+  palDvn( dv5, dv6, &dvm );
+  vvd ( dv6[0], 0.004147420704640065, 1e-12,
+        "palDvn", "X", status );
+  vvd ( dv6[1], -0.9496888606842218, 1e-12,
+        "palDvn", "Y", status );
+  vvd ( dv6[2], 0.3131674740355448, 1e-12,
+        "palDvn", "Z", status );
+  vvd ( dvm, 1661.042127339937, 1e-9, "palDvn",
+        "M", status );
+
+  vvd ( palDvdv ( dv6, dv1 ), -0.3318384698006295,
+        1e-12, "palDvn", " ", status );
+
+  /* palDvxv */
+  palDvxv( dv6, dv1, dv7 );
+  vvd ( dv7[0], 0.7767720597123304, 1e-12,
+        "palDvxv", "X", status );
+  vvd ( dv7[1], -0.1645663574562769, 1e-12,
+        "palDvxv", "Y", status );
+  vvd ( dv7[2], -0.5093390925544726, 1e-12,
+        "palDvxv", "Z", status );
+
+}
+
+static void t_ecleq( int *status ) {
+  double dr;
+  double dd;
+  palEcleq( 1.234, -0.123, 43210.0, &dr, &dd );
+  vvd( dr, 1.229910118208851, 1e-5, "palEcleq",
+       "RA", status );
+  vvd( dd, 0.2638461400411088, 1e-5, "palEcleq",
+       "Dec", status );
+}
+
+static void t_ecmat( int *status ) {
+   double rmat[3][3];
+   double expected[3][3] = {
+     { 1.0,                    0.0,                   0.0 },
+     { 0.0, 0.91749307789883549624, 0.3977517467060596168 },
+     { 0.0, -0.3977517467060596168, 0.91749307789883549624 } };
+
+   palEcmat( 55966.46, rmat );
+   vrmat( rmat, expected, "palEcmat", 1.0e-12, status );
+}
+
+static void t_eqecl ( int *status ) {
+  double dl, db;
+  palEqecl ( 0.789, -0.123, 46555, &dl, &db );
+
+  /* Slight changes from SLA for 2006 precession/nutation */
+  vvd ( dl, 0.7036566430349022, 1e-6, "palEqecl",
+        "L", status );
+  vvd ( db, -0.4036047164116848, 1e-6, "palEqecl",
+        "B", status );
+}
+
+static void t_prec( int *status ) {
+   double rmat[3][3];
+   double expected[3][3] = {
+     { 0.9999856154510, -0.0049192906204,    -0.0021376320580 },
+     {  0.0049192906805,  0.9999879002027,    -5.2297405698747e-06 },
+     { 0.0021376319197, -5.2859681191735e-06, 0.9999977152483 } };
+
+   palPrec( 1990.0, 2012.0, rmat );
+   vrmat( rmat, expected, "palPrec", 1.0e-12, status );
+}
+
+static void t_preces( int *status ) {
+  double ra;
+  double dc;
+  ra = 6.28;
+  dc = -1.123;
+  palPreces ( "FK4", 1925, 1950, &ra, &dc );
+  vvd ( ra,  0.002403604864728447, 1e-12, "palPreces",
+        "R", status );
+  vvd ( dc, -1.120570643322045, 1e-12, "palPreces",
+        "D", status );
+
+  /* This is the SLA test but PAL now uses the IAU 2006
+     precession model so we need to loosen the comparison */
+  ra = 0.0123;
+  dc = 1.0987;
+  palPreces ( "FK5", 2050, 1990, &ra, &dc );
+  vvd ( ra, 6.282003602708382, 1e-6, "palPreces",
+        "R", status );
+  vvd ( dc, 1.092870326188383, 1e-6, "palPreces",
+        "D", status );
+
+}
+
+static void t_evp( int *status ) {
+   double dvb[3],dpb[3],dvh[3],dph[3];
+   double vbex[3] = { 1.6957348127008098514e-07,
+                     -9.1093446116039685966e-08,
+                     -3.9528532243991863036e-08 };
+   double pbex[3] = {-0.49771075259730546136,
+                     -0.80273812396332311359,
+                     -0.34851593942866060383  };
+   double vhex[3] = { 1.6964379181455713805e-07,
+                     -9.1147224045727438391e-08,
+                     -3.9553158272334222497e-08 };
+   double phex[3] = { -0.50169124421419830639,
+                      -0.80650980174901798492,
+                      -0.34997162028527262212 };
+
+   double vbex2[3] = {
+     -0.0109187426811683,
+     -0.0124652546173285,
+     -0.0054047731809662
+   };
+   double pbex2[3] = {
+     -0.7714104440491060,
+     +0.5598412061824225,
+     +0.2425996277722475
+   };
+   double vhex2[3] = {
+     -0.0109189182414732,
+     -0.0124718726844084,
+     -0.0054075694180650
+   };
+   double phex2[3] = {
+     -0.7757238809297653,
+     +0.5598052241363390,
+     +0.2426998466481708
+   };
+
+   palEvp( 2010.0, 2012.0, dvb, dpb, dvh, dph );
+
+   vvec( 3, dvb, vbex, "palEvp", status );
+   vvec( 3, dpb, pbex, "palEvp", status );
+   vvec( 3, dvh, vhex, "palEvp", status );
+   vvec( 3, dph, phex, "palEvp", status );
+
+   palEpv ( 53411.52501161, dph, dvh, dpb, dvb );
+
+   vvec( 3, dvb, vbex2, "palEpv", status );
+   vvec( 3, dpb, pbex2, "palEpv", status );
+   vvec( 3, dvh, vhex2, "palEpv", status );
+   vvec( 3, dph, phex2, "palEpv", status );
+
+}
+
+static void t_map( int *status ) {
+  double ra, da;
+  palMap ( 6.123, -0.999, 1.23e-5, -0.987e-5,
+           0.123, 32.1, 1999, 43210.9, &ra, &da );
+
+  /* These are the SLA tests but and they agree to 0.1 arcsec
+     with PAL/SOFA/ERFA. We expect a slight difference from the change
+     to nutation models. */
+  vvd ( ra, 6.117130429775647, 1e-6, "palMap",
+          "RA", status );
+  vvd ( da, -1.000880769038632, 1e-8, "palMap",
+        "DA", status );
+}
+
+static void t_mappa( int *status ) {
+   double amprms[21];
+   double expected[21] = {1.9986310746064646082,
+                          -0.1728200754134739392,
+                          0.88745394651412767839,
+                          0.38472374350184274094,
+                          -0.17245634725219796679,
+                          0.90374808622520386159,
+                          0.3917884696321610738,
+                          2.0075929387510784968e-08,
+                          -9.9464149073251757597e-05,
+                          -1.6125306981057062306e-05,
+                          -6.9897255793245634435e-06,
+                          0.99999999489900059935,
+                          0.99999983777998024959,
+                          -0.00052248206600935195865,
+                          -0.00022683144398381763045,
+                          0.00052248547063364874764,
+                          0.99999986339269864022,
+                          1.4950491424992534218e-05,
+                          0.00022682360163333854623,
+                          -1.5069005133483779417e-05,
+                          0.99999997416198904698};
+
+   palMappa( 2010.0, 55927.0, amprms );
+   vvec( 21, amprms, expected, "palMappa", status );
+}
+
+static void t_mapqk( int *status ) {
+    /* Test mapqk by taking the geocentric apparent positions of Arcturus
+       as downloaded from aa.usno.mil/data/docs/geocentric.php and trying
+       to calculate it from Arcturus' mean position, proper motion, parallax,
+       and radial velocity */
+
+    double amprms[21];
+    double ra_0, dec_0; /* mean position */
+    double ra_app, dec_app; /* geocentric apparent position */
+    double ra_test, dec_test;
+    double px, pm_ra, pm_dec, v_rad;
+    int j;
+    int iposn;
+
+    /*
+    The data below represents the position of Arcturus on
+    JD (UT) 2457000.375 as reported by
+    http://aa.usno.navy.mil/data/docs/geocentric.php
+    */
+
+    const char radec_0[] = "14 15 39.67207 19 10 56.673";
+    const char radec_app[] = "14 16 19.59 19 6 19.56";
+
+    iposn = 1;
+    palDafin(radec_0, &iposn, &ra_0, &j);
+    palDafin(radec_0, &iposn, &dec_0, &j);
+    ra_0 *= 15.0;
+
+    pm_ra = -1.0939*PAL__DAS2R;
+    pm_ra /= cos(dec_0);
+    pm_dec = -2.00006*PAL__DAS2R;
+    v_rad = -5.19;
+    px = 0.08883*PAL__DAS2R;
+
+    palMappa(2000.0, 56999.87537249177, amprms);  /* time is the TDB MJD calculated from
+                                                     a JD of 2457000.375 with astropy.time */
+
+    palMapqk(ra_0, dec_0, pm_ra, pm_dec, px, v_rad, amprms, &ra_test, &dec_test);
+
+    iposn = 1;
+    palDafin(radec_app, &iposn, &ra_app, &j);
+    palDafin(radec_app, &iposn, &dec_app, &j);
+    ra_app *= 15.0;
+
+    /* find the angular distance from the known mean position
+       to the calculated mean postion */
+    double dd;
+    dd = palDsep(ra_test, dec_test, ra_app, dec_app);
+    dd *= PAL__DR2AS;
+    vvd( dd, 0.0, 0.1, "palMapqk", "distance", status);
+}
+
+static void t_mapqkz( int *status ) {
+   double amprms[21],  ra, da, ra_c, da_c;
+
+   /* Run inputs through mapqk with zero proper motion, parallax
+      and radial velocity.  Then run the same inputs through mapqkz.
+      Verify that the results are the same */
+   palMappa( 2010.0, 55927.0, amprms );
+   palMapqk(1.234, -0.567, 0.0, 0.0, 0.0, 0.0, amprms, &ra_c, &da_c);
+   palMapqkz( 1.234, -0.567, amprms, &ra, &da );
+   vvd( ra, ra_c, 1.0E-12, "palMapqkz", "ra", status );
+   vvd( da, da_c, 1.0E-12, "palMapqkz", "da", status );
+}
+
+static void t_ampqk( int *status ) {
+   double amprms[21],  rm, dm;
+   palMappa( 2010.0, 55927.0, amprms );
+   palAmpqk( 1.234, -0.567, amprms, &rm, &dm );
+   vvd( rm, 1.233512033578303857, 1.0E-12, "palAmpqk", "rm", status );
+   vvd( dm, -0.56702909748530827549, 1.0E-12, "palAmpqk", "dm", status );
+}
+
+static void t_fk45z( int *status ) {
+   double r2000, d2000;
+   palFk45z( 1.2, -0.3, 1960.0, &r2000, &d2000 );
+   vvd( r2000, 1.2097812228966762227, 1.0E-12, "palFk45z", "r2000", status );
+   vvd( d2000, -0.29826111711331398935, 1.0E-12, "palFk45z", "d2000", status );
+}
+
+static void t_fk54z( int *status ) {
+   double r1950, d1950, dr1950, dd1950;
+   palFk54z( 1.2, -0.3, 1960.0, &r1950, &d1950, &dr1950, &dd1950 );
+   vvd( r1950, 1.1902221805755279771, 1.0E-12, "palFk54z", "r1950", status );
+   vvd( d1950, -0.30178317645793828472, 1.0E-12, "palFk54z", "d1950", status );
+   vvd( dr1950, -1.7830874775952945507e-08, 1.0E-12, "palFk54z", "dr1950", status );
+   vvd( dd1950, 7.196059425334821089e-09, 1.0E-12, "palFk54z", "dd1950", status );
+}
+
+static void t_fk524( int *status ) {
+  double r1950, d1950, dr1950, dd1950, p1950, v1950;
+  palFk524(4.567, -1.23, -3e-5, 8e-6, 0.29,
+           -35.0, &r1950, &d1950, &dr1950, &dd1950, &p1950, &v1950);
+  vvd(r1950, 4.543778603272084, 1e-12, "palFk524", "r", status);
+  vvd(d1950, -1.229642790187574, 1e-12, "palFk524", "d", status);
+  vvd(dr1950, -2.957873121769244e-5, 1e-17, "palFk524", "dr", status);
+  vvd(dd1950, 8.117725309659079e-6, 1e-17, "palFk524", "dd", status);
+  vvd(p1950, 0.2898494999992917, 1e-12, "palFk524", "p", status);
+  vvd(v1950, -35.026862824252680, 1e-11, "palFk524", "v", status);
+}
+
+static void t_flotin( int * status ) {
+
+  int j;
+  const char * s = "  12.345, , -0 1E3-4 2000  E     ";
+  /*                123456789012345678901234567890123 */
+  int i = 1;
+  double dv = 0.0;
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 10, "palDfltin", "I1", status );
+  vvd ( dv, 12.345, 1e-12, "palDfltin", "V1", status );
+  viv ( j, 0, "palDfltin", "J1", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 12, "palDfltin", "I2", status );
+  vvd ( dv, 12.345, 1e-12, "palDfltin", "V2", status );
+  viv ( j, 1, "palDfltin", "J2", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 16, "palDfltin", "I3", status );
+  vvd ( dv, 0, 0, "palDfltin", "V3", status );
+  viv ( j, -1, "palDfltin", "J3", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 19, "palDfltin", "I4", status );
+  vvd ( dv, 1000, 0, "palDfltin", "V4", status );
+  viv ( j, 0, "palDfltin", "J4", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 22, "palDfltin", "I5", status );
+  vvd ( dv, -4, 0, "palDfltin", "V5", status );
+  viv ( j, -1, "palDfltin", "J5", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 28, "palDfltin", "I6", status );
+  vvd ( dv, 2000, 0, "palDfltin", "V6", status );
+  viv ( j, 0, "palDfltin", "J6", status );
+
+  palDfltin ( s, &i, &dv, &j );
+  viv ( i, 34, "palDfltin", "I7", status );
+  vvd ( dv, 2000, 0, "palDfltin", "V7", status );
+  viv ( j, 1, "palDfltin", "J7", status ); /* differs from slaDfltin */
+
+  /* Now test overflow and underflow */
+  i = 1;
+  palDfltin( " 1D600 ", &i, &dv, &j );
+  viv ( i, 8, "palDfltin", "I8", status );
+  vvd ( dv, HUGE_VAL, 0, "palDfltin", "V8", status );
+  viv ( j, 2, "palDfltin", "J8", status );
+
+}
+
+static void t_obs( int * status ) {
+
+  char shortname[11];
+  char longname[41];
+  double w, p, h;
+  int lstat;
+
+  lstat = palObs( 0, "MMT", shortname, sizeof(shortname),
+                  longname, sizeof(longname), &w, &p, &h );
+  vcs ( shortname, "MMT", "palObs", "1/C", status );
+  vcs ( longname, "MMT 6.5m, Mt Hopkins", "palObs", "1/NAME",
+        status );
+  vvd ( w, 1.935300584055477, 1e-8, "palObs",
+        "1/W", status );
+  vvd ( p, 0.5530735081550342238, 1e-10, "palObs",
+        "1/P", status );
+  vvd ( h, 2608, 1e-10, "palObs",
+        "1/H", status );
+  viv( lstat, 0, "palObs", "retval", status );
+
+  lstat = palObs ( 61, NULL, shortname, sizeof(shortname),
+                   longname, sizeof(longname), &w, &p, &h );
+  vcs ( shortname, "KECK1", "palObs", "2/C", status );
+  vcs ( longname, "Keck 10m Telescope #1", "palObs",
+        "2/NAME", status );
+  vvd ( w, 2.713545757918895, 1e-8, "palObs",
+        "2/W", status );
+  vvd ( p, 0.3460280563536619, 1e-8, "palObs",
+        "2/P", status );
+  vvd ( h, 4160, 1e-10, "palObs",
+        "2/H", status );
+  viv( lstat, 0, "palObs", "retval", status );
+
+  lstat = palObs ( 83, NULL, shortname, sizeof(shortname),
+                   longname, sizeof(longname), &w, &p, &h );
+  vcs ( shortname, "MAGELLAN2", "palObs", "3/C", status );
+  vcs ( longname, "Magellan 2, 6.5m, Las Campanas",
+        "palObs", "3/NAME", status );
+  vvd ( w, 1.233819305534497, 1e-8, "palObs",
+        "3/W", status );
+  vvd ( p, -0.506389344359954, 1e-8, "palObs",
+        "3/P", status );
+  vvd ( h, 2408, 1e-10, "palObs",
+        "3/H", status );
+  viv( lstat, 0, "palObs", "retval", status );
+
+  /* the first argument here should be 1 greater than the number of items
+   * in const struct telData defined in palObs.c
+   */
+  lstat = palObs ( 86, NULL, shortname, sizeof(shortname),
+                   longname, sizeof(longname), &w, &p, &h );
+  vcs ( longname, "?", "palObs", "4/NAME", status );
+  viv( lstat, -1, "palObs", "retval", status );
+
+  lstat = palObs ( 0, "MISSING", shortname, sizeof(shortname),
+                   longname, sizeof(longname), &w, &p, &h );
+  vcs ( longname, "?", "palObs", "5/NAME", status );
+  viv( lstat, -1, "palObs", "retval", status );
+
+  lstat = palObs( 0, "mmt", shortname, sizeof(shortname),
+                  longname, sizeof(longname), &w, &p, &h );
+  vcs ( shortname, "MMT", "palObs", "6/C", status );
+  vcs ( longname, "MMT 6.5m, Mt Hopkins", "palObs", "6/NAME",
+        status );
+  vvd ( w, 1.935300584055477, 1e-8, "palObs",
+        "6/W", status );
+  vvd ( p, 0.5530735081550342238, 1e-10, "palObs",
+        "6/P", status );
+  vvd ( h, 2608, 1e-10, "palObs",
+        "6/H", status );
+  viv( lstat, 0, "palObs", "retval", status );
+
+}
+
+static void t_pa( int *status ) {
+  vvd ( palPa ( -1.567, 1.5123, 0.987 ),
+        -1.486288540423851, 1e-12, "palPa", " ", status );
+  vvd ( palPa ( 0, 0.789, 0.789 ),
+        0, 0, "palPa", "zenith", status );
+}
+
+static void t_pcd( int *status ) {
+  double disco, x, y;
+  disco = 178.585;
+  x = 0.0123;
+  y = -0.00987;
+
+  palPcd ( disco, &x, &y );
+  vvd ( x, 0.01284630845735895, 1e-14, "palPcd", "x", status );
+  vvd ( y, -0.01030837922553926, 1e-14, "palPcd", "y", status );
+
+  palUnpcd ( disco, &x, &y );
+  vvd ( x, 0.0123, 1e-14, "palUnpcd", "x", status );
+  vvd ( y, -0.00987, 1e-14, "palUnpcd", "y,", status );
+
+  /* Now negative disco round trip */
+  disco = -0.3333333;
+  x = 0.0123;
+  y = -0.00987;
+  palPcd ( disco, &x, &y );
+  palUnpcd ( disco, &x, &y );
+  vvd ( x, 0.0123, 1e-14, "palUnpcd", "x", status );
+  vvd ( y, -0.00987, 1e-14, "palUnpcd", "y,", status );
+}
+
+static void t_planet( int * status ) {
+  int j;
+  double pv[6];
+  double u[13];
+  double expected1[6] = { 0., 0., 0., 0., 0., 0. };
+  double expectedue1[13] = {
+     1.000878908362435284,  -0.3336263027874777288,  50000.,
+     2.840425801310305210,   0.1264380368035014224, -0.2287711835229143197,
+    -0.01301062595106185195, 0.5657102158104651697,  0.2189745287281794885,
+     2.852427310959998500,  -0.01552349065435120900,
+     50000., 0.0
+  };
+  double expectedue2[13] = {
+    1.00006, -4.856142884511782, 50000., 0.3, -0.2,
+    0.1,  -0.4520378601821727,  0.4018114312730424,
+    -.3515850023639121, 0.3741657386773941,
+    -0.2511321445456515, 50000., 0.
+  };
+  double expectedue3[13] = {
+    1.000000000000000,
+    -0.3329769417028020949,
+    50100.,
+    2.638884303608524597,
+    1.070994304747824305,
+    0.1544112080167568589,
+    -0.2188240619161439344,
+    0.5207557453451906385,
+    0.2217782439275216936,
+    2.852118859689216658,
+    0.01452010174371893229,
+    50100.,
+    0.
+  };
+  double expectedpv[6] = {
+    0.07944764084631667011, -0.04118141077419014775,
+    0.002915180702063625400, -0.6890132370721108608e-6,
+    0.4326690733487621457e-6, -0.1763249096254134306e-6,
+  };
+  double expectedpv2[6] = {
+    1.947628959288897677,
+    -1.013736058752235271,
+    -0.3536409947732733647,
+    2.742247411571786194e-8,
+    1.170467244079075911e-7,
+    3.709878268217564005e-8
+  };
+
+  double ra,dec,diam, r;
+  int jform;
+  double epoch, orbinc, anode, perih, aorq, e, aorl,
+    dm;
+
+  /* palEl2ue */
+  palEl2ue ( 50000, 1, 49000, 0.1, 2, 0.2,
+             3, 0.05, 3, 0.003312, u, &j );
+  vvec( 13, u, expectedue1, "palEl2ue", status );
+  viv ( j, 0, "palEl2ue", "J", status );
+
+  /* palPertel */
+  palPertel ( 2, 43000., 43200., 43000.,
+              0.2, 3, 4, 5, 0.02, 6,
+              &epoch, &orbinc, &anode, &perih, &aorq, &e, &aorl, &j );
+  vvd ( epoch, 43200., 1e-10, "palPertel",
+        "EPOCH", status );
+  vvd ( orbinc, 0.1995661466545422381, 1e-7, "palPertel",
+        "ORBINC", status );
+  vvd ( anode, 2.998052737821591215, 1e-7, "palPertel",
+        "ANODE", status );
+  vvd ( perih, 4.009516448441143636, 1e-6, "palPertel",
+        "PERIH", status );
+  vvd ( aorq, 5.014216294790922323, 1e-7, "palPertel",
+        "AORQ", status );
+  vvd ( e, 0.02281386258309823607, 1e-7, "palPertel",
+        "E", status );
+  vvd ( aorl, 0.01735248648779583748, 1e-6, "palPertel",
+        "AORL", status );
+  viv ( j, 0, "palPertel", "J", status );
+
+  /* palPertue */
+  palPertue ( 50100, u, &j );
+  vvec( 13, u, expectedue3, "palPertue", status );
+  viv ( j, 0, "palPertue", "J", status );
+
+  /* palPlanel */
+  palPlanel ( 50600, 2, 50500, 0.1, 3, 5,
+	      2, 0.3, 4, 0, pv, &j );
+  vvec( 6, pv, expectedpv2, "palPlanel", status );
+  viv ( j, 0, "palPlanel", "J", status );
+
+  /* palPlanet */
+
+  palPlanet( 1e6, 0, pv, &j );
+  vvec( 6, pv, expected1, "palPlanet 1", status );
+  viv ( j, -1, "palPlanet", "J 1", status );
+
+  palPlanet( 1e6, 9, pv, &j);
+  viv ( j, -1, "palPlanet", "J 2", status );
+
+  palPlanet ( -320000, 3, pv, &j );
+  vvd ( pv[0], 0.9308038666827242603, 1e-11, "palPlanet",
+        "pv[0] 3", status );
+  vvd ( pv[1], 0.3258319040252137618, 1e-11, "palPlanet",
+        "pv[1] 3", status );
+  vvd ( pv[2], 0.1422794544477122021, 1e-11, "palPlanet",
+        "pv[2] 3", status );
+  vvd ( pv[3], -7.441503423889371696e-8, 1e-17, "palPlanet",
+        "pv[3] 3", status );
+  vvd ( pv[4], 1.699734557528650689e-7, 1e-17, "palPlanet",
+        "pv[4] 3", status );
+  vvd ( pv[5], 7.415505123001430864e-8, 1e-17, "palPlanet",
+        "pv[5] 3", status );
+  viv ( j, 1, "palPlanet", "J 3", status );
+
+  palPlanet ( 43999.9, 1, pv, &j );
+  vvd ( pv[0], 0.2945293959257422246, 1e-11, "palPlanet",
+        "pv[0] 4", status );
+  vvd ( pv[1], -0.2452204176601052181, 1e-11, "palPlanet",
+        "pv[1] 4", status );
+  vvd ( pv[2], -0.1615427700571978643, 1e-11, "palPlanet",
+        "pv[2] 4", status );
+  vvd ( pv[3], 1.636421147459047057e-7, 1e-18, "palPlanet",
+        "pv[3] 4", status );
+  vvd ( pv[4], 2.252949422574889753e-7, 1e-18, "palPlanet",
+        "pv[4] 4", status );
+  vvd ( pv[5], 1.033542799062371839e-7, 1e-18, "palPlanet",
+        "pv[5] 4", status );
+  viv ( j, 0, "palPlanet", "J 4", status );
+
+  /* palPlante test would go here */
+
+  palPlante ( 50600., -1.23, 0.456, 2, 50500.,
+	      0.1, 3., 5., 2., 0.3, 4.,
+	      0., &ra, &dec, &r, &j );
+  vvd ( ra, 6.222958101333794007, 1e-6, "palPlante",
+	"RA", status );
+  vvd ( dec, 0.01142220305739771601, 1e-6, "palPlante",
+	"DEC", status );
+  vvd ( r, 2.288902494080167624, 1e-8, "palPlante",
+	"R", status );
+  viv ( j, 0, "palPlante", "J", status );
+
+  u[0] = 1.0005;
+  u[1] = -0.3;
+  u[2] = 55000.;
+  u[3] = 2.8;
+  u[4] = 0.1;
+  u[5] = -0.2;
+  u[6] = -0.01;
+  u[7] = 0.5;
+  u[8] = 0.22;
+  u[9] = 2.8;
+  u[10] = -0.015;
+  u[11] = 55001.;
+  u[12] = 0;
+
+  /* palPlantu */
+
+  palPlantu ( 55001., -1.23, 0.456, u, &ra, &dec, &r, &j );
+  vvd ( ra, 0.3531814831241686647, 1e-6, "palPlantu",
+	"RA", status );
+  vvd ( dec, 0.06940344580567131328, 1e-6, "palPlantu",
+	"DEC", status );
+  vvd ( r, 3.031687170873274464, 1e-8, "palPlantu",
+	"R", status );
+  viv ( j, 0, "palPlantu", "J", status );
+
+  /* palPv2el */
+
+  pv[0] = 0.3;
+  pv[1] = -0.2;
+  pv[2] = 0.1;
+  pv[3] = -0.9e-7;
+  pv[4] = 0.8e-7;
+  pv[5] = -0.7e-7;
+
+  palPv2el ( pv, 50000, 0.00006, 1,
+             &jform, &epoch, &orbinc, &anode, &perih,
+             &aorq, &e, &aorl, &dm, &j );
+  viv ( jform, 1, "palPv2el", "JFORM", status );
+  vvd ( epoch, 50000, 1e-10, "palPv2el",
+        "EPOCH", status );
+  vvd ( orbinc, 1.52099895268912, 1e-12, "palPv2el",
+        "ORBINC", status );
+  vvd ( anode, 2.720503180538650, 1e-12, "palPv2el",
+        "ANODE", status );
+  vvd ( perih, 2.194081512031836, 1e-12, "palPv2el",
+        "PERIH", status );
+  vvd ( aorq, 0.2059371035373771, 1e-12, "palPv2el",
+        "AORQ", status );
+  vvd ( e, 0.9866822985810528, 1e-12, "palPv2el",
+        "E", status );
+  vvd ( aorl, 0.2012758344836794, 1e-12, "palPv2el",
+        "AORL", status );
+  vvd ( dm, 0.1840740507951820, 1e-12, "palPv2el",
+        "DM", status );
+  viv ( j, 0, "palPv2el", "J", status );
+
+  /* palPv2ue */
+  palPv2ue ( pv, 50000., 0.00006, u, &j );
+  vvec( 13, u, expectedue2, "palPv2ue", status );
+  viv ( j, 0, "palPv2ue", "J", status );
+
+  /* Planets */
+  palRdplan ( 40999.9, 0, 0.1, -0.9, &ra, &dec, &diam );
+  vvd ( ra, 5.772270359389275837, 1e-6, "palRdplan",
+        "ra 0", status );
+  vvd ( dec, -0.2089207338795416192, 1e-7, "palRdplan",
+        "dec 0", status );
+  vvd ( diam, 9.415338935229717875e-3, 1e-10, "palRdplan",
+        "diam 0", status );
+  palRdplan ( 41999.9, 1, 1.1, -0.9, &ra, &dec, &diam );
+  vvd ( ra, 3.866363420052936653, 1e-6, "palRdplan",
+        "ra 1", status );
+  vvd ( dec, -0.2594430577550113130, 1e-7, "palRdplan",
+        "dec 1", status );
+  vvd ( diam, 4.638468996795023071e-5, 1e-14, "palRdplan",
+        "diam 1", status );
+  palRdplan ( 42999.9, 2, 2.1, 0.9, &ra, &dec, &diam );
+  vvd ( ra, 2.695383203184077378, 1e-6, "palRdplan",
+        "ra 2", status );
+  vvd ( dec, 0.2124044506294805126, 1e-7, "palRdplan",
+        "dec 2", status );
+  vvd ( diam, 4.892222838681000389e-5, 1e-14, "palRdplan",
+        "diam 2", status );
+  palRdplan ( 43999.9, 3, 3.1, 0.9, &ra, &dec, &diam );
+  vvd ( ra, 2.908326678461540165, 1e-7, "palRdplan",
+        "ra 3", status );
+  vvd ( dec, 0.08729783126905579385, 1e-7, "palRdplan",
+        "dec 3", status );
+  vvd ( diam, 8.581305866034962476e-3, 1e-7, "palRdplan",
+        "diam 3", status );
+  palRdplan ( 44999.9, 4, -0.1, 1.1, &ra, &dec, &diam );
+  vvd ( ra, 3.429840787472851721, 1e-6, "palRdplan",
+        "ra 4", status );
+  vvd ( dec, -0.06979851055261161013, 1e-7, "palRdplan",
+        "dec 4", status );
+  vvd ( diam, 4.540536678439300199e-5, 1e-14, "palRdplan",
+        "diam 4", status );
+  palRdplan ( 45999.9, 5, -1.1, 0.1, &ra, &dec, &diam );
+  vvd ( ra, 4.864669466449422548, 1e-6, "palRdplan",
+        "ra 5", status );
+  vvd ( dec, -0.4077714497908953354, 1e-7, "palRdplan",
+        "dec 5", status );
+  vvd ( diam, 1.727945579027815576e-4, 1e-14, "palRdplan",
+        "diam 5", status );
+  palRdplan ( 46999.9, 6, -2.1, -0.1, &ra, &dec, &diam );
+  vvd ( ra, 4.432929829176388766, 1e-6, "palRdplan",
+        "ra 6", status );
+  vvd ( dec, -0.3682820877854730530, 1e-7, "palRdplan",
+        "dec 6", status );
+  vvd ( diam, 8.670829016099083311e-5, 1e-14, "palRdplan",
+        "diam 6", status );
+  palRdplan ( 47999.9, 7, -3.1, -1.1, &ra, &dec, &diam );
+  vvd ( ra, 4.894972492286818487, 1e-6, "palRdplan",
+        "ra 7", status );
+  vvd ( dec, -0.4084068901053653125, 1e-7, "palRdplan",
+        "dec 7", status );
+  vvd ( diam, 1.793916783975974163e-5, 1e-14, "palRdplan",
+        "diam 7", status );
+  palRdplan ( 48999.9, 8, 0, 0, &ra, &dec, &diam );
+  vvd ( ra, 5.066050284760144000, 1e-6, "palRdplan",
+        "ra 8", status );
+  vvd ( dec, -0.3744690779683850609, 1e-7, "palRdplan",
+        "dec 8", status );
+  vvd ( diam, 1.062210086082700563e-5, 1e-14, "palRdplan",
+        "diam 8", status );
+
+  /* palUe2el */
+  palUe2el ( u, 1, &jform, &epoch, &orbinc, &anode, &perih,
+             &aorq, &e, &aorl, &dm, &j );
+  viv ( jform, 1, "palUe2el", "JFORM", status );
+  vvd ( epoch, 50000.00000000000, 1e-10, "palUe2el",
+        "EPOCH", status );
+  vvd ( orbinc, 1.520998952689120, 1e-12, "palUe2el",
+        "ORBINC", status );
+  vvd ( anode, 2.720503180538650, 1e-12, "palUe2el",
+        "ANODE", status );
+  vvd ( perih, 2.194081512031836, 1e-12, "palUe2el",
+        "PERIH", status );
+  vvd ( aorq, 0.2059371035373771, 1e-12, "palUe2el",
+        "AORQ", status );
+  vvd ( e, 0.9866822985810528, 1e-12, "palUe2el",
+        "E", status );
+  vvd ( aorl, 0.2012758344836794, 1e-12, "palUe2el",
+        "AORL", status );
+  viv ( j, 0, "palUe2el", "J", status );
+
+  /* palUe2pv */
+  palUe2pv( 50010., u, pv, &j );
+
+  /* Update the final two elements of the expecte UE array */
+  expectedue2[11] = 50010.;
+  expectedue2[12] = 0.7194308220038886856;
+
+  vvec( 13, u, expectedue2, "palUe2pv", status );
+  vvec( 6, pv, expectedpv, "palUe2pv", status );
+  viv ( j, 0, "palUe2pv", "J", status );
+
+}
+
+static void t_pm( int * status ) {
+  double ra2, dec2;
+  double ra1, dec1, pmr1, pmd1, px1, rv1;
+
+  ra1 = 5.43;
+  dec1 = -0.87;
+  pmr1 = -0.33e-5;
+  pmd1 = 0.77e-5;
+  px1 = 0.7;
+  rv1 = 50.3*365.2422/365.25;
+
+  palPm ( ra1, dec1, pmr1, pmd1, px1, rv1,
+          1899, 1943,
+          &ra2, &dec2 );
+  vvd ( ra2, 5.429855087793875, 1e-10, "palPm",
+        "R", status );
+  vvd ( dec2, -0.8696617307805072, 1e-10, "palPm",
+        "D", status );
+
+  /* SOFA/ERFA test */
+  ra1 =   0.01686756;
+  dec1 = -1.093989828;
+  pmr1 = -1.78323516e-5;
+  pmd1 =  2.336024047e-6;
+  px1 =   0.74723;
+  rv1 = -21.6;
+
+  palPm(ra1, dec1, pmr1, pmd1, px1, rv1,
+        palEpj(50083.0), palEpj(53736.0),
+        &ra2, &dec2);
+  vvd(ra2, 0.01668919069414242368, 1e-13,
+      "palPm", "ra", status);
+  vvd(dec2, -1.093966454217127879, 1e-13,
+      "palPm", "dec", status);
+
+
+}
+
+static void t_polmo( int *status ) {
+  double elong, phi, daz;
+
+  palPolmo( 0.7, -0.5, 1.0e-6, -2.0e-6, &elong, &phi, &daz );
+  vvd(elong, 0.7000004837322044, 1.0e-12, "palPolmo", "elong", status );
+  vvd(phi, -0.4999979467222241, 1.0e-12, "palPolmo", "phi", status );
+  vvd(daz, 1.008982781275728e-6, 1.0e-12, "palPolmo", "daz", status );
+}
+
+static void t_pvobs( int *status ) {
+   double pv[6];
+   double expected[6] = { -4.7683600138836167813e-06,
+                           1.0419056712717953176e-05,
+                           4.099831053320363277e-05,
+                          -7.5976959740661272483e-10,
+                          -3.4771429582640930371e-10,
+                           0.0};
+   palPvobs( 1.3, 10000.0, 2.0, pv );
+   vvec( 6, pv, expected, "palPvobs", status );
+}
+
+static void t_rv( int *status ) {
+  vvd ( palRverot ( -0.777, 5.67, -0.3, 3.19 ),
+        -0.1948098355075913, 1e-6,
+        "palRverot", " ", status );
+  vvd ( palRvgalc ( 1.11E0, -0.99E0 ),
+        158.9630759840254, 1e-3, "palRvgalc", " ", status );
+  vvd ( palRvlg ( 3.97E0, 1.09E0 ),
+        -197.818762175363, 1e-3, "palRvlg", " ", status );
+  vvd ( palRvlsrd ( 6.01E0, 0.1E0 ),
+        -4.082811335150567, 1e-4, "palRvlsrd", " ", status );
+  vvd ( palRvlsrk ( 6.01E0, 0.1E0 ),
+        -5.925180579830265, 1e-4, "palRvlsrk", " ", status );
+}
+
+static void t_rvgalc( int *status ) {
+   double rv;
+   rv = palRvgalc( 2.7, -1.0 );
+   vvd( rv, 213.98084425751144977, 1.0E-12, "palRvgalc", "rv", status );
+}
+
+static void t_rvlg( int *status ) {
+   double rv;
+   rv = palRvlg( 2.7, -1.0 );
+   vvd( rv, 291.79205281252404802, 1.0E-12, "palRvlg", "rv", status );
+}
+
+static void t_rvlsrd( int *status ) {
+   double rv;
+   rv = palRvlsrd( 2.7, -1.0 );
+   vvd( rv, 9.620674692097630043, 1.0E-12, "palRvlsrd", "rv", status );
+}
+
+static void t_rvlsrk( int *status ) {
+   double rv;
+   rv = palRvlsrk( 2.7, -1.0 );
+   vvd( rv, 12.556356851411955233, 1.0E-12, "palRvlsrk", "rv", status );
+}
+
+static void t_refco( int *status ) {
+  double phpa, tc, rh, wl, refa, refb;
+  phpa = 800.0;
+  tc = 10.0 + 273.15; /* SLA uses kelvin */
+  rh = 0.9;
+  wl = 0.4;
+  palRefcoq(tc, phpa, rh, wl, &refa, &refb);
+  vvd(refa, 0.2264949956241415009e-3, 1e-15,
+      "palRefcoq", "refa", status);
+  vvd(refb, -0.2598658261729343970e-6, 1e-18,
+      "palRefcoq", "refb", status);
+}
+
+static void t_ref( int *status ) {
+  double ref, refa, refb, refa2, refb2, vu[3], vr[3], zr;
+
+  palRefro( 1.4, 3456.7, 280, 678.9, 0.9, 0.55,
+            -0.3, 0.006, 1e-9, &ref );
+  vvd( ref, 0.00106715763018568, 1e-12, "palRefro",
+       "o", status );
+
+  palRefro( 1.4, 3456.7, 280, 678.9, 0.9, 1000,
+            -0.3, 0.006, 1e-9, &ref );
+  vvd( ref, 0.001296416185295403, 1e-12, "palRefro",
+       "r", status );
+
+  palRefcoq( 275.9, 709.3, 0.9, 101, &refa, &refb );
+  vvd( refa, 2.324736903790639e-4, 1e-12, "palRefcoq",
+       "a/r", status );
+  vvd( refb, -2.442884551059e-7, 1e-15, "palRefcoq",
+       "b/r", status );
+
+  palRefco( 2111.1, 275.9, 709.3, 0.9, 101,
+            -1.03, 0.0067, 1e-12, &refa, &refb );
+  vvd( refa, 2.324673985217244e-4, 1e-12, "palRefco",
+       "a/r", status );
+  vvd( refb, -2.265040682496e-7, 1e-15, "palRefco",
+       "b/r", status );
+
+  palRefcoq( 275.9, 709.3, 0.9, 0.77, &refa, &refb );
+  vvd( refa, 2.007406521596588e-4, 1e-12, "palRefcoq",
+       "a", status );
+  vvd( refb, -2.264210092590e-7, 1e-15, "palRefcoq",
+       "b", status );
+
+  palRefco( 2111.1, 275.9, 709.3, 0.9, 0.77,
+            -1.03, 0.0067, 1e-12, &refa, &refb );
+  vvd( refa, 2.007202720084551e-4, 1e-12, "palRefco",
+       "a", status );
+  vvd( refb, -2.223037748876e-7, 1e-15, "palRefco",
+       "b", status );
+
+  palAtmdsp ( 275.9, 709.3, 0.9, 0.77,
+              refa, refb, 0.5, &refa2, &refb2 );
+  vvd ( refa2, 2.034523658888048e-4, 1e-12, "palAtmdsp",
+        "a", status );
+  vvd ( refb2, -2.250855362179e-7, 1e-15, "palAtmdsp",
+        "b", status );
+
+  palDcs2c ( 0.345, 0.456, vu );
+  palRefv ( vu, refa, refb, vr );
+  vvd ( vr[0], 0.8447487047790478, 1e-12, "palRefv",
+        "x1", status );
+  vvd ( vr[1], 0.3035794890562339, 1e-12, "palRefv",
+        "y1", status );
+  vvd ( vr[2], 0.4407256738589851, 1e-12, "palRefv",
+        "z1", status );
+
+  palDcs2c ( 3.7, 0.03, vu );
+  palRefv ( vu, refa, refb, vr );
+  vvd ( vr[0], -0.8476187691681673, 1e-12, "palRefv",
+        "x2", status );
+  vvd ( vr[1], -0.5295354802804889, 1e-12, "palRefv",
+        "y2", status );
+  vvd ( vr[2], 0.0322914582168426, 1e-12, "palRefv",
+        "z2", status );
+
+  palRefz ( 0.567, refa, refb, &zr );
+    vvd ( zr, 0.566872285910534, 1e-12, "palRefz",
+          "hi el", status );
+
+  palRefz ( 1.55, refa, refb, &zr );
+  vvd ( zr, 1.545697350690958, 1e-12, "palRefz",
+        "lo el", status );
+
+
+
+}
+
+static void t_vers( int *status ) {
+  char verstring[32];
+
+  int ver = palVers( verstring, sizeof(verstring));
+  printf("PAL Version %s (%d)\n", verstring, ver);
+  if ( ver < 6000 ) {
+    *status = 1; /* palVers introduced at v0.6.0 */
+  }
+}
+
+/**********************************************************************/
+
+int main (void) {
+
+  /* Use the SLA and SOFA/ERFA conventions */
+  int status = 0; /* Unix and SAE convention */
+
+  t_addet(&status);
+  t_afin(&status);
+  t_altaz(&status);
+  t_ampqk(&status);
+  t_aop(&status);
+  t_airmas(&status);
+  t_amp(&status);
+  t_bear(&status);
+  t_caf2r(&status);
+  t_caldj(&status);
+  t_cc2s(&status);
+  t_cd2tf(&status);
+  t_cldj(&status);
+  t_cr2af(&status);
+  t_cr2tf(&status);
+  t_ctf2d(&status);
+  t_ctf2r(&status);
+  t_dat(&status);
+  t_djcal(&status);
+  t_dmat(&status);
+  t_epb(&status);
+  t_epb2d(&status);
+  t_epco(&status);
+  t_epj(&status);
+  t_epj2d(&status);
+  t_eqecl(&status);
+  t_eqeqx(&status);
+  t_etrms(&status);
+  t_eqgal(&status);
+  t_evp(&status);
+  t_fk45z(&status);
+  t_fk54z(&status);
+  t_fk524(&status);
+  t_flotin(&status);
+  t_galeq(&status);
+  t_galsup(&status);
+  t_ge50(&status);
+  t_geoc(&status);
+  t_gmst(&status);
+  t_fk52h(&status);
+  t_intin(&status);
+  t_prec(&status);
+  t_preces(&status);
+  t_ecleq(&status);
+  t_ecmat(&status);
+  t_e2h(&status);
+  t_map(&status);
+  t_mappa(&status);
+  t_mapqk(&status);
+  t_mapqkz(&status);
+  t_moon(&status);
+  t_nut(&status);
+  t_obs(&status);
+  t_pa(&status);
+  t_pcd(&status);
+  t_planet(&status);
+  t_pm(&status);
+  t_polmo(&status);
+  t_prebn(&status);
+  t_pvobs(&status);
+  t_range(&status);
+  t_ranorm(&status);
+  t_ref(&status);
+  t_refco(&status);
+  t_rv(&status);
+  t_rvgalc(&status);
+  t_rvlg(&status);
+  t_rvlsrd(&status);
+  t_rvlsrk(&status);
+  t_sep(&status);
+  t_supgal(&status);
+  t_tp(&status);
+  t_vecmat(&status);
+  t_vers(&status);
+  return status;
+}
Index: branches/FACT++_part_filenames/pal/palUe2el.c
===================================================================
--- branches/FACT++_part_filenames/pal/palUe2el.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palUe2el.c	(revision 18732)
@@ -0,0 +1,234 @@
+/*
+*+
+*  Name:
+*     palUe2el
+
+*  Purpose:
+*     Universal elements to heliocentric osculating elements
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palUe2el ( const double u[13], int jformr,
+*                     int *jform, double *epoch, double *orbinc,
+*                     double *anode, double *perih, double *aorq, double *e,
+*                     double *aorl, double *dm, int *jstat );
+
+*  Arguments:
+*     u = const double [13] (Given)
+*        Universal orbital elements (Note 1)
+*            (0)  combined mass (M+m)
+*            (1)  total energy of the orbit (alpha)
+*            (2)  reference (osculating) epoch (t0)
+*          (3-5)  position at reference epoch (r0)
+*          (6-8)  velocity at reference epoch (v0)
+*            (9)  heliocentric distance at reference epoch
+*           (10)  r0.v0
+*           (11)  date (t)
+*           (12)  universal eccentric anomaly (psi) of date, approx
+*     jformr = int (Given)
+*        Requested element set (1-3; Note 3)
+*     jform = int * (Returned)
+*        Element set actually returned (1-3; Note 4)
+*     epoch = double * (Returned)
+*        Epoch of elements (TT MJD)
+*     orbinc = double * (Returned)
+*        inclination (radians)
+*     anode = double * (Returned)
+*        longitude of the ascending node (radians)
+*     perih = double * (Returned)
+*        longitude or argument of perihelion (radians)
+*     aorq = double * (Returned)
+*        mean distance or perihelion distance (AU)
+*     e = double * (Returned)
+*        eccentricity
+*     aorl = double * (Returned)
+*        mean anomaly or longitude (radians, JFORM=1,2 only)
+*     dm = double * (Returned)
+*        daily motion (radians, JFORM=1 only)
+*     jstat = int * (Returned)
+*        status:  0 = OK
+*                -1 = illegal combined mass
+*                -2 = illegal JFORMR
+*                -3 = position/velocity out of range
+
+*  Description:
+*     Transform universal elements into conventional heliocentric
+*     osculating elements.
+
+*  Authors:
+*     PTW: Patrick T. Wallace
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference 2).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - The universal elements are with respect to the mean equator and
+*       equinox of epoch J2000.  The orbital elements produced are with
+*       respect to the J2000 ecliptic and mean equinox.
+*     - Three different element-format options are supported:
+*
+*        Option JFORM=1, suitable for the major planets:
+*
+*        EPOCH  = epoch of elements (TT MJD)
+*        ORBINC = inclination i (radians)
+*        ANODE  = longitude of the ascending node, big omega (radians)
+*        PERIH  = longitude of perihelion, curly pi (radians)
+*        AORQ   = mean distance, a (AU)
+*        E      = eccentricity, e
+*        AORL   = mean longitude L (radians)
+*        DM     = daily motion (radians)
+*
+*        Option JFORM=2, suitable for minor planets:
+*
+*        EPOCH  = epoch of elements (TT MJD)
+*        ORBINC = inclination i (radians)
+*        ANODE  = longitude of the ascending node, big omega (radians)
+*        PERIH  = argument of perihelion, little omega (radians)
+*        AORQ   = mean distance, a (AU)
+*        E      = eccentricity, e
+*        AORL   = mean anomaly M (radians)
+*
+*        Option JFORM=3, suitable for comets:
+*
+*        EPOCH  = epoch of perihelion (TT MJD)
+*        ORBINC = inclination i (radians)
+*        ANODE  = longitude of the ascending node, big omega (radians)
+*        PERIH  = argument of perihelion, little omega (radians)
+*        AORQ   = perihelion distance, q (AU)
+*        E      = eccentricity, e
+*
+*     - It may not be possible to generate elements in the form
+*       requested through JFORMR.  The caller is notified of the form
+*       of elements actually returned by means of the JFORM argument:
+*
+*        JFORMR   JFORM     meaning
+*
+*          1        1       OK - elements are in the requested format
+*          1        2       never happens
+*          1        3       orbit not elliptical
+*
+*          2        1       never happens
+*          2        2       OK - elements are in the requested format
+*          2        3       orbit not elliptical
+*
+*          3        1       never happens
+*          3        2       never happens
+*          3        3       OK - elements are in the requested format
+*
+*     - The arguments returned for each value of JFORM (cf Note 6: JFORM
+*       may not be the same as JFORMR) are as follows:
+*
+*         JFORM         1              2              3
+*         EPOCH         t0             t0             T
+*         ORBINC        i              i              i
+*         ANODE         Omega          Omega          Omega
+*         PERIH         curly pi       omega          omega
+*         AORQ          a              a              q
+*         E             e              e              e
+*         AORL          L              M              -
+*         DM            n              -              -
+*
+*     where:
+*
+*         t0           is the epoch of the elements (MJD, TT)
+*         T              "    epoch of perihelion (MJD, TT)
+*         i              "    inclination (radians)
+*         Omega          "    longitude of the ascending node (radians)
+*         curly pi       "    longitude of perihelion (radians)
+*         omega          "    argument of perihelion (radians)
+*         a              "    mean distance (AU)
+*         q              "    perihelion distance (AU)
+*         e              "    eccentricity
+*         L              "    longitude (radians, 0-2pi)
+*         M              "    mean anomaly (radians, 0-2pi)
+*         n              "    daily motion (radians)
+*         -             means no value is set
+*
+*     - At very small inclinations, the longitude of the ascending node
+*       ANODE becomes indeterminate and under some circumstances may be
+*       set arbitrarily to zero.  Similarly, if the orbit is close to
+*       circular, the true anomaly becomes indeterminate and under some
+*       circumstances may be set arbitrarily to zero.  In such cases,
+*       the other elements are automatically adjusted to compensate,
+*       and so the elements remain a valid description of the orbit.
+
+*  See Also:
+*     - Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*       Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*     - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-09 (TIMJ):
+*        Initial version
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 1999 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include "pal.h"
+#include "palmac.h"
+
+void palUe2el ( const double u[], int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat ) {
+
+  /*  Canonical days to seconds */
+  const double CD2S = PAL__GCON / PAL__SPD;
+
+  int i;
+  double pmass, date, pv[6];
+
+  /* Unpack the universal elements */
+  pmass = u[0] - 1.0;
+  date = u[2];
+  for (i=0; i<3; i++) {
+    pv[i] = u[i+3];
+    pv[i+3] = u[i+6] * CD2S;
+  }
+
+  /* Convert the position and velocity etc into conventional elements */
+  palPv2el( pv, date, pmass, jformr, jform, epoch, orbinc, anode,
+            perih, aorq, e, aorl, dm, jstat );
+}
Index: branches/FACT++_part_filenames/pal/palUe2pv.c
===================================================================
--- branches/FACT++_part_filenames/pal/palUe2pv.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palUe2pv.c	(revision 18732)
@@ -0,0 +1,263 @@
+/*
+*+
+*  Name:
+*     palUe2pv
+
+*  Purpose:
+*     Heliocentric position and velocity of a planet, asteroid or comet, from universal elements
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     void palUe2pv( double date, double u[13], double pv[6], int *jstat );
+
+*  Arguments:
+*     date = double (Given)
+*        TT Modified Julian date (JD-2400000.5).
+*     u = double [13] (Given & Returned)
+*        Universal orbital elements (updated, see note 1)
+*        given    (0)   combined mass (M+m)
+*          "      (1)   total energy of the orbit (alpha)
+*          "      (2)   reference (osculating) epoch (t0)
+*          "    (3-5)   position at reference epoch (r0)
+*          "    (6-8)   velocity at reference epoch (v0)
+*          "      (9)   heliocentric distance at reference epoch
+*          "     (10)   r0.v0
+*       returned (11)   date (t)
+*          "     (12)   universal eccentric anomaly (psi) of date
+*     pv = double [6] (Returned)
+*       Position (AU) and velocity (AU/s)
+*     jstat = int * (Returned)
+*       status:  0 = OK
+*               -1 = radius vector zero
+*               -2 = failed to converge
+
+*  Description:
+*     Heliocentric position and velocity of a planet, asteroid or comet,
+*     starting from orbital elements in the "universal variables" form.
+
+*  Authors:
+*     PTW: Pat Wallace (STFC)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The "universal" elements are those which define the orbit for the
+*       purposes of the method of universal variables (see reference).
+*       They consist of the combined mass of the two bodies, an epoch,
+*       and the position and velocity vectors (arbitrary reference frame)
+*       at that epoch.  The parameter set used here includes also various
+*       quantities that can, in fact, be derived from the other
+*       information.  This approach is taken to avoiding unnecessary
+*       computation and loss of accuracy.  The supplementary quantities
+*       are (i) alpha, which is proportional to the total energy of the
+*       orbit, (ii) the heliocentric distance at epoch, (iii) the
+*       outwards component of the velocity at the given epoch, (iv) an
+*       estimate of psi, the "universal eccentric anomaly" at a given
+*       date and (v) that date.
+*     - The companion routine is palEl2ue.  This takes the conventional
+*       orbital elements and transforms them into the set of numbers
+*       needed by the present routine.  A single prediction requires one
+*       one call to palEl2ue followed by one call to the present routine;
+*       for convenience, the two calls are packaged as the routine
+*       palPlanel.  Multiple predictions may be made by again
+*       calling palEl2ue once, but then calling the present routine
+*       multiple times, which is faster than multiple calls to palPlanel.
+*     - It is not obligatory to use palEl2ue to obtain the parameters.
+*       However, it should be noted that because palEl2ue performs its
+*       own validation, no checks on the contents of the array U are made
+*       by the present routine.
+*     - DATE is the instant for which the prediction is required.  It is
+*       in the TT timescale (formerly Ephemeris Time, ET) and is a
+*       Modified Julian Date (JD-2400000.5).
+*     - The universal elements supplied in the array U are in canonical
+*       units (solar masses, AU and canonical days).  The position and
+*       velocity are not sensitive to the choice of reference frame.  The
+*       palEl2ue routine in fact produces coordinates with respect to the
+*       J2000 equator and equinox.
+*     - The algorithm was originally adapted from the EPHSLA program of
+*       D.H.P.Jones (private communication, 1996).  The method is based
+*       on Stumpff's Universal Variables.
+*     - Reference:  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+
+*  History:
+*     2012-03-09 (TIMJ):
+*        Initial version cloned from SLA/F.
+*        Adapted with permission from the Fortran SLALIB library.
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2005 Rutherford Appleton Laboratory
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     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, write to the Free Software
+*     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+*     MA 02110-1301, USA.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+void palUe2pv( double date, double u[13], double pv[6], int *jstat ) {
+
+  /*  Canonical days to seconds */
+  const double CD2S = PAL__GCON / PAL__SPD;
+
+  /*  Test value for solution and maximum number of iterations */
+  const double TEST = 1e-13;
+  const int NITMAX = 25;
+
+  int I, NIT, N;
+  double CM,ALPHA,T0,P0[3],V0[3],R0,SIGMA0,T,PSI,DT,W,
+    TOL,PSJ,PSJ2,BETA,S0,S1,S2,S3,
+    FF,R,F,G,FD,GD;
+
+  double PLAST = 0.0;
+  double FLAST = 0.0;
+
+  /*  Unpack the parameters. */
+  CM = u[0];
+  ALPHA = u[1];
+  T0 = u[2];
+  for (I=0; I<3; I++) {
+    P0[I] = u[I+3];
+    V0[I] = u[I+6];
+  }
+  R0 = u[9];
+  SIGMA0 = u[10];
+  T = u[11];
+  PSI = u[12];
+
+  /*  Approximately update the universal eccentric anomaly. */
+  PSI = PSI+(date-T)*PAL__GCON/R0;
+
+  /*  Time from reference epoch to date (in Canonical Days: a canonical
+   *  day is 58.1324409... days, defined as 1/PAL__GCON). */
+  DT = (date-T0)*PAL__GCON;
+
+  /*  Refine the universal eccentric anomaly, psi. */
+  NIT = 1;
+  W = 1.0;
+  TOL = 0.0;
+  while (fabs(W) >= TOL) {
+
+    /*     Form half angles until BETA small enough. */
+    N = 0;
+    PSJ = PSI;
+    PSJ2 = PSJ*PSJ;
+    BETA = ALPHA*PSJ2;
+    while (fabs(BETA) > 0.7) {
+      N = N+1;
+      BETA = BETA/4.0;
+      PSJ = PSJ/2.0;
+      PSJ2 = PSJ2/4.0;
+    }
+
+    /*     Calculate Universal Variables S0,S1,S2,S3 by nested series. */
+    S3 = PSJ*PSJ2*((((((BETA/210.0+1.0)
+                       *BETA/156.0+1.0)
+                      *BETA/110.0+1.0)
+                     *BETA/72.0+1.0)
+                    *BETA/42.0+1.0)
+                   *BETA/20.0+1.0)/6.0;
+    S2 = PSJ2*((((((BETA/182.0+1.0)
+                   *BETA/132.0+1.0)
+                  *BETA/90.0+1.0)
+                 *BETA/56.0+1.0)
+                *BETA/30.0+1.0)
+               *BETA/12.0+1.0)/2.0;
+    S1 = PSJ+ALPHA*S3;
+    S0 = 1.0+ALPHA*S2;
+
+    /*     Undo the angle-halving. */
+    TOL = TEST;
+    while (N > 0) {
+      S3 = 2.0*(S0*S3+PSJ*S2);
+      S2 = 2.0*S1*S1;
+      S1 = 2.0*S0*S1;
+      S0 = 2.0*S0*S0-1.0;
+      PSJ = PSJ+PSJ;
+      TOL += TOL;
+      N--;
+    }
+
+    /*     Values of F and F' corresponding to the current value of psi. */
+    FF = R0*S1+SIGMA0*S2+CM*S3-DT;
+    R = R0*S0+SIGMA0*S1+CM*S2;
+
+    /*     If first iteration, create dummy "last F". */
+    if ( NIT == 1) FLAST = FF;
+
+    /*     Check for sign change. */
+    if ( FF*FLAST < 0.0 ) {
+
+      /*        Sign change:  get psi adjustment using secant method. */
+      W = FF*(PLAST-PSI)/(FLAST-FF);
+    } else {
+
+      /*        No sign change:  use Newton-Raphson method instead. */
+      if (R == 0.0) {
+        /* Null radius vector */
+        *jstat = -1;
+        return;
+      }
+      W = FF/R;
+    }
+
+    /*     Save the last psi and F values. */
+    PLAST = PSI;
+    FLAST = FF;
+
+    /*     Apply the Newton-Raphson or secant adjustment to psi. */
+    PSI = PSI-W;
+
+    /*     Next iteration, unless too many already. */
+    if (NIT > NITMAX) {
+      *jstat = -2; /* Failed to converge */
+      return;
+    }
+    NIT++;
+  }
+
+  /*  Project the position and velocity vectors (scaling velocity to AU/s). */
+  W = CM*S2;
+  F = 1.0-W/R0;
+  G = DT-CM*S3;
+  FD = -CM*S1/(R0*R);
+  GD = 1.0-W/R;
+  for (I=0; I<3; I++) {
+    pv[I] = P0[I]*F+V0[I]*G;
+    pv[I+3] = CD2S*(P0[I]*FD+V0[I]*GD);
+  }
+
+  /*  Update the parameters to allow speedy prediction of PSI next time. */
+  u[11] = date;
+  u[12] = PSI;
+
+  /*  OK exit. */
+  *jstat = 0;
+  return;
+}
Index: branches/FACT++_part_filenames/pal/palUnpcd.c
===================================================================
--- branches/FACT++_part_filenames/pal/palUnpcd.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palUnpcd.c	(revision 18732)
@@ -0,0 +1,176 @@
+/*
+*+
+*  Name:
+*     palUnpcd
+
+*  Purpose:
+*     Remove pincushion/barrel distortion
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     palUnpcd( double disco, double * x, double * y );
+
+*  Arguments:
+*     disco = double (Given)
+*        Pincushion/barrel distortion coefficient.
+*     x = double * (Given & Returned)
+*        On input the distorted X coordinate, on output
+*        the tangent-plane X coordinate.
+*     y = double * (Given & Returned)
+*        On input the distorted Y coordinate, on output
+*        the tangent-plane Y coordinate.
+
+*  Description:
+*     Remove pincushion/barrel distortion from a distorted [x,y] to give
+*     tangent-plane [x,y].
+
+*  Authors:
+*     PTW: Pat Wallace (RAL)
+*     TIMJ: Tim Jenness
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - The distortion is of the form RP = R*(1+C*R^2), where R is
+*       the radial distance from the tangent point, C is the DISCO
+*       argument, and RP is the radial distance in the presence of
+*       the distortion.
+*
+*     - For pincushion distortion, C is +ve;  for barrel distortion,
+*       C is -ve.
+*
+*     - For X,Y in "radians" - units of one projection radius,
+*       which in the case of a photograph is the focal length of
+*       the camera - the following DISCO values apply:
+*
+*           Geometry          DISCO
+*
+*           astrograph         0.0
+*           Schmidt           -0.3333
+*           AAT PF doublet  +147.069
+*           AAT PF triplet  +178.585
+*           AAT f/8          +21.20
+*           JKT f/8          +13.32
+*
+*     - The present routine is a rigorous inverse of the companion
+*       routine palPcd.  The expression for RP in Note 1 is rewritten
+*       in the form x^3+a*x+b=0 and solved by standard techniques.
+*
+*     - Cases where the cubic has multiple real roots can sometimes
+*       occur, corresponding to extreme instances of barrel distortion
+*       where up to three different undistorted [X,Y]s all produce the
+*       same distorted [X,Y].  However, only one solution is returned,
+*       the one that produces the smallest change in [X,Y].
+
+*  See Also:
+*     palPcd
+
+*  History:
+*     2000-09-03 (PTW):
+*        SLALIB implementation.
+*     2015-01-01 (TIMJ):
+*        Initial version
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2000 Rutherford Appleton Laboratory.
+*     Copyright (C) 2015 Tim Jenness
+*     All Rights Reserved.
+
+*  Licence:
+*     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 <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+
+/* copysign is C99 */
+#if HAVE_COPYSIGN
+# define COPYSIGN copysign
+#else
+# define COPYSIGN(a,b) DSIGN(a,b)
+#endif
+
+void palUnpcd( double disco, double * x, double *y ) {
+
+  const double THIRD = 1.0/3.0;
+
+  double rp,q,r,d,w,s,t,f,c,t3,f1,f2,f3,w1,w2,w3;
+  double c2;
+
+  /*  Distance of the point from the origin. */
+  rp = sqrt( (*x)*(*x)+(*y)*(*y));
+
+  /*  If zero, or if no distortion, no action is necessary. */
+  if (rp != 0.0 && disco != 0.0) {
+
+    /*     Begin algebraic solution. */
+    q = 1.0/(3.0*disco);
+    r = rp/(2.0*disco);
+    w = q*q*q+r*r;
+
+    /* Continue if one real root, or three of which only one is positive. */
+    if (w > 0.0) {
+
+      d = sqrt(w);
+      w = r+d;
+      s = COPYSIGN(pow(fabs(w),THIRD),w);
+      w = r-d;
+      t = COPYSIGN(pow(fabs(w),THIRD),w);
+      f = s+t;
+
+    } else {
+      /* Three different real roots:  use geometrical method instead. */
+      w = 2.0/sqrt(-3.0*disco);
+      c = 4.0*rp/(disco*w*w*w);
+      c2 = c*c;
+      s = sqrt(1.0-DMIN(c2,1.0));
+      t3 = atan2(s,c);
+
+      /* The three solutions. */
+      f1 = w*cos((PAL__D2PI-t3)/3.0);
+      f2 = w*cos((t3)/3.0);
+      f3 = w*cos((PAL__D2PI+t3)/3.0);
+
+      /* Pick the one that moves [X,Y] least. */
+      w1 = fabs(f1-rp);
+      w2 = fabs(f2-rp);
+      w3 = fabs(f3-rp);
+      if (w1 < w2) {
+        f = ( w1 < w3 ? f1 : f3 );
+      } else {
+        f = ( w2 < w3 ? f2 : f3 );
+      }
+    }
+
+    /* Remove the distortion. */
+    f = f/rp;
+    *x *= f;
+    *y *= f;
+  }
+}
Index: branches/FACT++_part_filenames/pal/palVers.c
===================================================================
--- branches/FACT++_part_filenames/pal/palVers.c	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palVers.c	(revision 18732)
@@ -0,0 +1,92 @@
+/*
+*+
+*  Name:
+*     palVers
+
+*  Purpose:
+*     Obtain PAL version number
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Library routine
+
+*  Invocation:
+*     int palVers( char *verstring, size_t verlen );
+
+*  Arguments:
+*     verstring = char * (Returned)
+*        Buffer to receive version string of the form "A.B.C". Can be NULL.
+*     verlen = size_t (Given)
+*        Allocated size of "verstring" including nul. Version string
+*        will be truncated if it does not fit in buffer.
+
+*  Returned Value:
+*     vernum = int (Returned)
+*        Version number as an integer.
+
+*  Description:
+*     Retrieve the PAL version number as a string in the form "A.B.C"
+*     and as an integer (major*1e6+minor*1e3+release).
+
+*  Authors:
+*     TIMJ: Tim Jenness (Cornell)
+*     {enter_new_authors_here}
+
+*  Notes:
+*     - Note that this API does not match the slaVers API.
+
+*  History:
+*     2014-08-27 (TIMJ):
+*        Initial version
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2014 Cornell University
+*     All Rights Reserved.
+
+*  Licence:
+*     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 <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef HAVE_BSD_STRING_H
+#include <bsd/string.h>
+#endif
+
+#include <string.h>
+
+/* This version is just a straight copy without putting ellipsis on the end. */
+static void my__strlcpy( char * dest, const char * src, size_t size ) {
+# if HAVE_STRLCPY
+  strlcpy( dest, src, size );
+# else
+  strncpy( dest, src, size );
+  dest[size-1] = '\0';
+# endif
+}
+
+int
+palVers( char *verstring, size_t verlen ) {
+  if (verstring) my__strlcpy( verstring, PACKAGE_VERSION, verlen );
+  return PACKAGE_VERSION_INTEGER;
+}
Index: branches/FACT++_part_filenames/pal/palmac.h
===================================================================
--- branches/FACT++_part_filenames/pal/palmac.h	(revision 18732)
+++ branches/FACT++_part_filenames/pal/palmac.h	(revision 18732)
@@ -0,0 +1,136 @@
+#ifndef PALMACDEF
+#define PALMACDEF
+
+/*
+*+
+*  Name:
+*     palmac.h
+
+*  Purpose:
+*     Macros used by the PAL library
+
+*  Language:
+*     Starlink ANSI C
+
+*  Type of Module:
+*     Include file
+
+*  Description:
+*     A collection of useful macros provided and used by the PAL library
+
+*  Authors:
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     DSB: David Berry (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  Notes:
+*
+
+*  History:
+*     2012-02-08 (TIMJ):
+*        Initial version.
+*        Adapted with permission from the Fortran SLALIB library.
+*     2012-04-13 (DSB):
+*        Added PAL__DR2H and PAL__DR2S
+*     {enter_further_changes_here}
+
+*  Copyright:
+*     Copyright (C) 2012 Science and Technology Facilities Council.
+*     All Rights Reserved.
+
+*  Licence:
+*     This program is free software: you can redistribute it and/or
+*     modify it under the terms of the GNU Lesser General Public
+*     License as published by the Free Software Foundation, either
+*     version 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 Lesser General Public License for more details.
+*
+*     You should have received a copy of the GNU Lesser General
+*     License along with this program.  If not, see
+*     <http://www.gnu.org/licenses/>.
+
+*  Bugs:
+*     {note_any_bugs_here}
+*-
+*/
+
+/* Pi */
+static const double PAL__DPI = 3.1415926535897932384626433832795028841971693993751;
+
+/* 2Pi */
+static const double PAL__D2PI = 6.2831853071795864769252867665590057683943387987502;
+
+/* pi/2:  90 degrees in radians */
+static const double PAL__DPIBY2 = 1.5707963267948966192313216916397514420985846996876;
+
+/* pi/180:  degrees to radians */
+static const double PAL__DD2R = 0.017453292519943295769236907684886127134428718885417;
+
+/* Radians to arcseconds */
+static const double PAL__DR2AS = 2.0626480624709635515647335733077861319665970087963e5;
+
+/* Arcseconds to radians */
+static const double PAL__DAS2R = 4.8481368110953599358991410235794797595635330237270e-6;
+
+/* Radians to degrees */
+static const double PAL__DR2D = 57.295779513082320876798154814105170332405472466564;
+
+/* Hours to radians */
+static const double PAL__DH2R = 0.26179938779914943653855361527329190701643078328126;
+
+/* Radians to hours */
+static const double PAL__DR2H = 3.8197186342054880584532103209403446888270314977709;
+
+/* Radians to seconds of time */
+static const double PAL__DR2S = 1.3750987083139757010431557155385240879777313391975e4;
+
+/* Seconds of time to radians */
+static const double PAL__DS2R = 7.272205216643039903848712e-5;
+
+/* Start of SLA modified Julian date epoch */
+static const double PAL__MJD0 = 2400000.5;
+
+/* Light time for 1 AU (sec) */
+static const double PAL__CR = 499.004782;
+
+/* Seconds per day */
+static const double PAL__SPD = 86400.0;
+
+/* Km per sec to AU per tropical century
+   = 86400 * 36524.2198782 / 149597870 */
+static const double PAL__VF = 21.095;
+
+/*  Radians per year to arcsec per century. This needs to be a macro since it
+    is an expression including other constants. */
+#define PAL__PMF (100.0*60.0*60.0*360.0/PAL__D2PI);
+
+/* Mean sidereal rate - the rotational angular velocity of Earth
+   in radians/sec from IERS Conventions (2003). */
+static const double PAL__SR = 7.2921150e-5;
+
+/*  Gaussian gravitational constant (exact) */
+static const double PAL__GCON = 0.01720209895;
+
+/* DINT(A) - truncate to nearest whole number towards zero (double) */
+#define DINT(A) ((A)<0.0?ceil(A):floor(A))
+
+/* DNINT(A) - round to nearest whole number (double) */
+#define DNINT(A) ((A)<0.0?ceil((A)-0.5):floor((A)+0.5))
+
+/* DMAX(A,B) - return maximum value - evaluates arguments multiple times */
+#define DMAX(A,B) ((A) > (B) ? (A) : (B) )
+
+/* DMIN(A,B) - return minimum value - evaluates arguments multiple times */
+#define DMIN(A,B) ((A) < (B) ? (A) : (B) )
+
+/* We actually prefer to use C99 copysign() but we define this here as a backup
+   but it will not detect -0.0 so is not useful for palDfltin. */
+/* DSIGN(A,B) - magnitude of A with sign of B (double) */
+#define DSIGN(A,B) ((B)<0.0?-fabs(A):fabs(A))
+
+#endif
Index: branches/FACT++_part_filenames/pal/sofa-porting-guide.txt
===================================================================
--- branches/FACT++_part_filenames/pal/sofa-porting-guide.txt	(revision 18732)
+++ branches/FACT++_part_filenames/pal/sofa-porting-guide.txt	(revision 18732)
@@ -0,0 +1,42 @@
+Some SLA routines migrate directly to SOFA. Simple PAL wrappers are
+made available using the SLA name but new code should use the SOFA
+variant directly. The PAL routines should not be called internally
+by other PAL routines.
+
+Daf2r  => Af2a
+Dav2m  => Rv2m
+Dcc2s  => C2s
+Dcs2c  => S2c
+Dd2tf  => D2tf
+Dimxv  => Trxp
+Djcl   => Jd2cal
+Dmxm   => Rxr
+Dmxv   => Rxp
+Dm2av  => Rm2v
+Dranrm => Anp
+Drange => Anpm
+Dsep   => Seps
+Dsepv  => Sepp
+Dtf2d  => Tf2d
+Dtf2r  => Tf2a
+Dvdv   => Pdp
+Dvn    => Pn
+Dvxv   => Pxp
+Epb    => Epb
+Epb2d  => Epb2jd
+Epj    => Epj
+Epj2d  => Epj2jd
+Eqeqx  => Ee06a
+Fk5hz  => Fk5hz
+Gmst   => Gmst06
+Hfk5z  => Hfk5z
+
+
+Some SLA routines are close to the same but have different arguments
+so a PAL routine is provided although it is probably best to port software
+to the SOFA variant:
+
+slaDat =>palDat => iauDat
+
+slaGeoc has different arguments and uses the WGS84 model. The code is not
+quite one-to-one.
Index: branches/FACT++_part_filenames/pal/sun267.tex
===================================================================
--- branches/FACT++_part_filenames/pal/sun267.tex	(revision 18732)
+++ branches/FACT++_part_filenames/pal/sun267.tex	(revision 18732)
@@ -0,0 +1,8810 @@
+\documentclass[twoside,11pt,nolof]{starlink}
+
+% ? Specify used packages
+% ? End of specify used packages
+
+% -----------------------------------------------------------------------------
+% ? Document identification
+% Fixed part
+\stardoccategory  {Starlink User Note}
+\stardocinitials  {SUN}
+\stardocsource    {sun\stardocnumber}
+\stardoccopyright{%
+Copyright \copyright\ 2012 Science and Technology Facilities
+  Council.\\ Copyright \copyright\ 2014 Cornell University.\\
+Copyright \copyright\ 2015 Tim Jenness}
+
+% Variable part - replace [xxx] as appropriate.
+\stardocnumber    {267.3}
+\stardocauthors   {Tim Jenness}
+\stardocdate      {2015 January 1}
+\stardoctitle     {PAL --- Positional Astronomy Library}
+\stardocversion   {0.9.0}
+\stardocmanual    {Programmer's Manual}
+\stardocabstract  {%
+PAL provides a subset of the Fortran SLALIB library but written in C
+using the SLALIB C API. Where possible the PAL routines are
+implemented using the C SOFA/ERFA library. It is provided with a GPLv3 license.
+}
+% ? End of document identification
+% -----------------------------------------------------------------------------
+
+\begin{document}
+\scfrontmatter
+
+% ? Main text
+
+\section{Introduction}
+
+This library provides a C library designed as a API-compatible
+replacement for the C SLALIB library (SUN/67) and uses a GPL licence so is
+freely redistributable. Where possible the functions call equivalent
+SOFA routines (Hohenkerk, C., 2011, Scholarpedia, \textbf{6}, \emph{11404})\footnote{or equivalent ERFA routines.}
+and use current IAU 2006 standards. This means that any
+functions that rely on nutation or precession will return slightly
+different answers to the SLA functions.
+
+\section{Citing PAL}
+
+If you use PAL in your work please consider citing it. The description paper
+for PAL is: \emph{PAL: A Positional Astronomy Library}, Jenness, T. \& Berry, D. S.,
+in \emph{Astronomical Data Anaysis Software and Systems XXII}, Friedel, D. N. (ed),
+ASP Conf.\ Ser. \textbf{475}, p307.
+
+\clearpage
+\appendix
+\section{\label{APP:SPEC}Function Descriptions}
+
+By default PAL is set up to use the ERFA variant of SOFA. ERFA is an
+approved redistribution of the SOFA code using a BSD-license and
+renamed function calls. Whereas SOFA routines have a \texttt{iau} prefix
+the ERFA equivalents have a \texttt{era} prefix. The PAL build script
+will try to detect which of ERFA and SOFA is available. Wherever SOFA
+is mentioned in this document the ERFA equivalent can be substituted.
+
+ERFA can be obtained from \htmladdnormallink{https://github.com/liberfa/erfa}.
+
+\subsection{SOFA Mappings}
+
+The following table lists PAL/SLA functions that have direct
+replacements in SOFA. Whilst these routines are implemented in the PAL
+library using SOFA new code should probably call SOFA directly.
+
+\begin{tabbing}
+\hspace*{2cm}\=\hspace*{3cm}\= \kill
+SLA/PAL \>  SOFA \\
+\texttt{palCldj} \> \texttt{iauCal2jd} \\
+\texttt{palDbear} \> \texttt{iauPas} \\
+\texttt{palDaf2r} \> \texttt{iauAf2a} \\
+\texttt{palDav2m} \>  \texttt{iauRv2m} \\
+\texttt{palDcc2s} \>  \texttt{iauC2s} \\
+\texttt{palDcs2c} \> \texttt{iauS2c} \\
+\texttt{palDd2tf} \> \texttt{iauD2tf}\\
+\texttt{palDimxv} \> \texttt{iauTrxp}\\
+\texttt{palDm2av} \> \texttt{iauRm2v}\\
+\texttt{palDjcl} \> \texttt{iauJd2cal}\\
+\texttt{palDmxm} \> \texttt{iauRxr}\\
+\texttt{palDmxv} \> \texttt{iauRxp}\\
+\texttt{palDpav} \> \texttt{iauPap}\\
+\texttt{palDr2af} \> \texttt{iauA2af}\\
+\texttt{palDr2tf} \> \texttt{iauA2tf}\\
+\texttt{palDranrm} \> \texttt{iauAnp}\\
+\texttt{palDsep} \> \texttt{iauSeps}\\
+\texttt{palDsepv} \> \texttt{iauSepp}\\
+\texttt{palDtf2d} \> \texttt{iauTf2d}\\
+\texttt{palDtf2r} \> \texttt{iauTf2a}\\
+\texttt{palDvdv} \> \texttt{iauPdp}\\
+\texttt{palDvn} \> \texttt{iauPn}\\
+\texttt{palDvxv} \> \texttt{iauPxp}\\
+\texttt{palEpb} \> \texttt{iauEpb}\\
+\texttt{palEpb2d} \> \texttt{iauEpb2d}\\
+\texttt{palEpj} \> \texttt{iauEpj}\\
+\texttt{palEpj2d} \> \texttt{iauEpj2jd}\\
+\texttt{palEqeqx} \> \texttt{iauEe06a}\\
+\texttt{palFk5hz} \> \texttt{iauFk5hz} \textit{also calls iauEpj2jd}\\
+\texttt{palGmst} \> \texttt{iauGmst06}\\
+\texttt{palGmsta} \> \texttt{iauGmst06}\\
+\texttt{palHfk5z} \> \texttt{iauHfk5z} \textit{also calls iauEpj2jd}\\
+\texttt{palRefcoq} \> \texttt{iauRefco}\\
+\end{tabbing}
+
+\sstroutine{
+   palCldj
+}{
+   Gregorian Calendar to Modified Julian Date
+}{
+   \sstdescription{
+      Gregorian calendar to Modified Julian Date.
+   }
+   \sstinvocation{
+      palCldj( int iy, int im, int id, double $*$djm, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         iy = int (Given)
+      }{
+         Year in Gregorian calendar
+      }
+      \sstsubsection{
+         im = int (Given)
+      }{
+         Month in Gregorian calendar
+      }
+      \sstsubsection{
+         id = int (Given)
+      }{
+         Day in Gregorian calendar
+      }
+      \sstsubsection{
+         djm = double $*$ (Returned)
+      }{
+         Modified Julian Date (JD-2400000.5) for 0 hrs
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         status: 0 = OK, 1 = bad year (MJD not computed),
+         2 = bad month (MJD not computed), 3 = bad day (MJD computed).
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraCal2jd(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDbear
+}{
+   Bearing (position angle) of one point on a sphere relative to another
+}{
+   \sstdescription{
+      Bearing (position angle) of one point in a sphere relative to another.
+   }
+   \sstinvocation{
+      pa = palDbear( double a1, double b1, double a2, double b2 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         a1 = double (Given)
+      }{
+         Longitude of point A (e.g. RA) in radians.
+      }
+      \sstsubsection{
+         a2 = double (Given)
+      }{
+         Latitude of point A (e.g. Dec) in radians.
+      }
+      \sstsubsection{
+         b1 = double (Given)
+      }{
+         Longitude of point B in radians.
+      }
+      \sstsubsection{
+         b2 = double (Given)
+      }{
+         Latitude of point B in radians.
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         The result is the bearing (position angle), in radians, of point
+      }{
+      }
+      \sstsubsection{
+         A2,B2 as seen from point A1,B1.  It is in the range $+$/- pi.  If
+      }{
+      }
+      \sstsubsection{
+         A2,B2 is due east of A1,B1 the bearing is $+$pi/2.  Zero is returned
+      }{
+      }
+      \sstsubsection{
+         if the two points are coincident.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraPas(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDaf2r
+}{
+   Convert degrees, arcminutes, arcseconds to radians
+}{
+   \sstdescription{
+      Convert degrees, arcminutes, arcseconds to radians.
+   }
+   \sstinvocation{
+      palDaf2r( int ideg, int iamin, double asec, double $*$rad, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ideg = int (Given)
+      }{
+         Degrees.
+      }
+      \sstsubsection{
+         iamin = int (Given)
+      }{
+         Arcminutes.
+      }
+      \sstsubsection{
+         iasec = double (Given)
+      }{
+         Arcseconds.
+      }
+      \sstsubsection{
+         rad = double $*$ (Returned)
+      }{
+         Angle in radians.
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         Status: 0 = OK, 1 = {\tt "}ideg{\tt "} out of range 0-359,
+                 2 = {\tt "}iamin{\tt "} outside of range 0-59,
+                 2 = {\tt "}asec{\tt "} outside range 0-59.99999
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraAf2a(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDav2m
+}{
+   Form the rotation matrix corresponding to a given axial vector
+}{
+   \sstdescription{
+      A rotation matrix describes a rotation about some arbitrary axis,
+      called the Euler axis.  The {\tt "}axial vector{\tt "} supplied to this routine
+      has the same direction as the Euler axis, and its magnitude is the
+      amount of rotation in radians.
+   }
+   \sstinvocation{
+      palDav2m( double axvec[3], double rmat[3][3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         axvec = double [3] (Given)
+      }{
+         Axial vector (radians)
+      }
+      \sstsubsection{
+         rmat = double [3][3] (Returned)
+      }{
+         Rotation matrix.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraRv2m(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDcc2s
+}{
+   Cartesian to spherical coordinates
+}{
+   \sstdescription{
+      The spherical coordinates are longitude ($+$ve anticlockwise looking
+      from the $+$ve latitude pole) and latitude.  The Cartesian coordinates
+      are right handed, with the x axis at zero longitude and latitude, and
+      the z axis at the $+$ve latitude pole.
+   }
+   \sstinvocation{
+      palDcc2s( double v[3], double $*$a, double $*$b );
+   }
+   \sstarguments{
+      \sstsubsection{
+         v = double [3] (Given)
+      }{
+         x, y, z vector.
+      }
+      \sstsubsection{
+         a = double $*$ (Returned)
+      }{
+         Spherical coordinate (radians)
+      }
+      \sstsubsection{
+         b = double $*$ (Returned)
+      }{
+         Spherical coordinate (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraC2s(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDcs2c
+}{
+   Spherical coordinates to direction cosines
+}{
+   \sstdescription{
+      The spherical coordinates are longitude ($+$ve anticlockwise looking
+      from the $+$ve latitude pole) and latitude.  The Cartesian coordinates
+      are right handed, with the x axis at zero longitude and latitude, and
+      the z axis at the $+$ve latitude pole.
+   }
+   \sstinvocation{
+      palDcs2c( double a, double b, double v[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         a = double (Given)
+      }{
+         Spherical coordinate in radians (ra, long etc).
+      }
+      \sstsubsection{
+         b = double (Given)
+      }{
+         Spherical coordinate in radians (dec, lat etc).
+      }
+      \sstsubsection{
+         v = double [3] (Returned)
+      }{
+         x, y, z vector
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraS2c(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDd2tf
+}{
+   Convert an interval in days into hours, minutes, seconds
+}{
+   \sstdescription{
+      Convert and interval in days into hours, minutes, seconds.
+   }
+   \sstinvocation{
+      palDd2tf( int ndp, double days, char $*$sign, int ihmsf[4] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ndp = int (Given)
+      }{
+         Number of decimal places of seconds
+      }
+      \sstsubsection{
+         days = double (Given)
+      }{
+         Interval in days
+      }
+      \sstsubsection{
+         sign = char $*$ (Returned)
+      }{
+         {\tt '}$+${\tt '} or {\tt '}-{\tt '} (single character, not string)
+      }
+      \sstsubsection{
+         ihmsf = int [4] (Returned)
+      }{
+         Hours, minutes, seconds, fraction
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraD2tf(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDimxv
+}{
+   Perform the 3-D backward unitary transformation
+}{
+   \sstdescription{
+      Perform the 3-D backward unitary transformation.
+   }
+   \sstinvocation{
+      palDimxv( double dm[3][3], double va[3], double vb[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dm = double [3][3] (Given)
+      }{
+         Matrix
+      }
+      \sstsubsection{
+         va = double [3] (Given)
+      }{
+         vector
+      }
+      \sstsubsection{
+         vb = double [3] (Returned)
+      }{
+         Result vector
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraTrxp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDm2av
+}{
+   From a rotation matrix, determine the corresponding axial vector
+}{
+   \sstdescription{
+      A rotation matrix describes a rotation about some arbitrary axis,
+      called the Euler axis.  The {\tt "}axial vector{\tt "} returned by this routine
+      has the same direction as the Euler axis, and its magnitude is the
+      amount of rotation in radians.  (The magnitude and direction can be
+      separated by means of the routine palDvn.)
+   }
+   \sstinvocation{
+      palDm2av( double rmat[3][3], double axvec[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rmat = double [3][3] (Given)
+      }{
+         Rotation matrix
+      }
+      \sstsubsection{
+         axvec = double [3] (Returned)
+      }{
+         Axial vector (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraRm2v(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDjcl
+}{
+   Modified Julian Date to Gregorian year, month, day and fraction of day
+}{
+   \sstdescription{
+      Modified Julian Date to Gregorian year, month, day and fraction of day.
+   }
+   \sstinvocation{
+      palDjcl( double djm, int $*$iy, int $*$im, int $*$id, double $*$fd, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         djm = double (Given)
+      }{
+         modified Julian Date (JD-2400000.5)
+      }
+      \sstsubsection{
+         iy = int $*$ (Returned)
+      }{
+         year
+      }
+      \sstsubsection{
+         im = int $*$ (Returned)
+      }{
+         month
+      }
+      \sstsubsection{
+         id = int $*$ (Returned)
+      }{
+         day
+      }
+      \sstsubsection{
+         fd = double $*$ (Returned)
+      }{
+         Fraction of day.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraJd2cal(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDmxm
+}{
+   Product of two 3x3 matrices
+}{
+   \sstdescription{
+      Product of two 3x3 matrices.
+   }
+   \sstinvocation{
+      palDmxm( double a[3][3], double b[3][3], double c[3][3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         a = double [3][3] (Given)
+      }{
+         Matrix
+      }
+      \sstsubsection{
+         b = double [3][3] (Given)
+      }{
+         Matrix
+      }
+      \sstsubsection{
+         c = double [3][3] (Returned)
+      }{
+         Matrix result
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraRxr(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDmxv
+}{
+   Performs the 3-D forward unitary transformation
+}{
+   \sstdescription{
+      Performs the 3-D forward unitary transformation.
+   }
+   \sstinvocation{
+      palDmxv( double dm[3][3], double va[3], double vb[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dm = double [3][3] (Given)
+      }{
+         matrix
+      }
+      \sstsubsection{
+         va = double [3] (Given)
+      }{
+         vector
+      }
+      \sstsubsection{
+         dp = double [3] (Returned)
+      }{
+         result vector
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraRxp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDpav
+}{
+   Position angle of one celestial direction with respect to another
+}{
+   \sstdescription{
+      Position angle of one celestial direction with respect to another.
+   }
+   \sstinvocation{
+      pa = palDpav( double v1[3], double v2[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         v1 = double [3] (Given)
+      }{
+         direction cosines of one point.
+      }
+      \sstsubsection{
+         v2 = double [3] (Given)
+      }{
+         direction cosines of the other point.
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         The result is the bearing (position angle), in radians, of point
+      }{
+      }
+      \sstsubsection{
+         V2 with respect to point V1.  It is in the range $+$/- pi.  The
+      }{
+      }
+      \sstsubsection{
+         sense is such that if V2 is a small distance east of V1, the
+      }{
+      }
+      \sstsubsection{
+         bearing is about $+$pi/2.  Zero is returned if the two points
+      }{
+      }
+      \sstsubsection{
+         are coincident.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The coordinate frames correspond to RA,Dec, Long,Lat etc.
+
+         \sstitem
+         Uses eraPap(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDr2af
+}{
+   Convert an angle in radians to degrees, arcminutes, arcseconds
+}{
+   \sstdescription{
+      Convert an angle in radians to degrees, arcminutes, arcseconds.
+   }
+   \sstinvocation{
+      palDr2af( int ndp, double angle, char $*$sign, int idmsf[4] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ndp = int (Given)
+      }{
+         number of decimal places of arcseconds
+      }
+      \sstsubsection{
+         angle = double (Given)
+      }{
+         angle in radians
+      }
+      \sstsubsection{
+         sign = char $*$ (Returned)
+      }{
+         {\tt '}$+${\tt '} or {\tt '}-{\tt '} (single character)
+      }
+      \sstsubsection{
+         idmsf = int [4] (Returned)
+      }{
+         Degrees, arcminutes, arcseconds, fraction
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraA2af(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDr2tf
+}{
+   Convert an angle in radians to hours, minutes, seconds
+}{
+   \sstdescription{
+      Convert an angle in radians to hours, minutes, seconds.
+   }
+   \sstinvocation{
+      palDr2tf ( int ndp, double angle, char $*$sign, int ihmsf[4] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ndp = int (Given)
+      }{
+         number of decimal places of arcseconds
+      }
+      \sstsubsection{
+         angle = double (Given)
+      }{
+         angle in radians
+      }
+      \sstsubsection{
+         sign = char $*$ (Returned)
+      }{
+         {\tt '}$+${\tt '} or {\tt '}-{\tt '} (single character)
+      }
+      \sstsubsection{
+         idmsf = int [4] (Returned)
+      }{
+         Hours, minutes, seconds, fraction
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraA2tf(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDranrm
+}{
+   Normalize angle into range 0-2 pi
+}{
+   \sstdescription{
+      Normalize angle into range 0-2 pi.
+   }
+   \sstinvocation{
+      norm = palDranrm( double angle );
+   }
+   \sstarguments{
+      \sstsubsection{
+         angle = double (Given)
+      }{
+         angle in radians
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Angle expressed in the range 0-2 pi
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraAnp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDsep
+}{
+   Angle between two points on a sphere
+}{
+   \sstdescription{
+      Angle between two points on a sphere.
+   }
+   \sstinvocation{
+      ang = palDsep( double a1, double b1, double a2, double b2 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         a1 = double (Given)
+      }{
+         Spherical coordinate of one point (radians)
+      }
+      \sstsubsection{
+         b1 = double (Given)
+      }{
+         Spherical coordinate of one point (radians)
+      }
+      \sstsubsection{
+         a2 = double (Given)
+      }{
+         Spherical coordinate of other point (radians)
+      }
+      \sstsubsection{
+         b2 = double (Given)
+      }{
+         Spherical coordinate of other point (radians)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Angle, in radians, between the two points. Always positive.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The spherical coordinates are [RA,Dec], [Long,Lat] etc, in radians.
+
+         \sstitem
+         Uses eraSeps(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDsepv
+}{
+   Angle between two vectors
+}{
+   \sstdescription{
+      Angle between two vectors.
+   }
+   \sstinvocation{
+      ang = palDsepv( double v1[3], double v2[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         v1 = double [3] (Given)
+      }{
+         First vector
+      }
+      \sstsubsection{
+         v2 = double [3] (Given)
+      }{
+         Second vector
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Angle, in radians, between the two points. Always positive.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraSepp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDtf2d
+}{
+   Convert hours, minutes, seconds to days
+}{
+   \sstdescription{
+      Convert hours, minutes, seconds to days.
+   }
+   \sstinvocation{
+      palDtf2d( int ihour, int imin, double sec, double $*$days, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ihour = int (Given)
+      }{
+         Hours
+      }
+      \sstsubsection{
+         imin = int (Given)
+      }{
+         Minutes
+      }
+      \sstsubsection{
+         sec = double (Given)
+      }{
+         Seconds
+      }
+      \sstsubsection{
+         days = double $*$ (Returned)
+      }{
+         Interval in days
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         status: 0 = ok, 1 = ihour outside range 0-23,
+         2 = imin outside range 0-59, 3 = sec outside range 0-59.999...
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraTf2d(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDtf2r
+}{
+   Convert hours, minutes, seconds to radians
+}{
+   \sstdescription{
+      Convert hours, minutes, seconds to radians.
+   }
+   \sstinvocation{
+      palDtf2r( int ihour, int imin, double sec, double $*$rad, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ihour = int (Given)
+      }{
+         Hours
+      }
+      \sstsubsection{
+         imin = int (Given)
+      }{
+         Minutes
+      }
+      \sstsubsection{
+         sec = double (Given)
+      }{
+         Seconds
+      }
+      \sstsubsection{
+         days = double $*$ (Returned)
+      }{
+         Angle in radians
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         status: 0 = ok, 1 = ihour outside range 0-23,
+         2 = imin outside range 0-59, 3 = sec outside range 0-59.999...
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraTf2a(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDvdv
+}{
+   Scalar product of two 3-vectors
+}{
+   \sstdescription{
+      Scalar product of two 3-vectors.
+   }
+   \sstinvocation{
+      prod = palDvdv ( double va[3], double vb[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         va = double [3] (Given)
+      }{
+         First vector
+      }
+      \sstsubsection{
+         vb = double [3] (Given)
+      }{
+         Second vector
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Scalar product va.vb
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraPdp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDvn
+}{
+   Normalizes a 3-vector also giving the modulus
+}{
+   \sstdescription{
+      Normalizes a 3-vector also giving the modulus.
+   }
+   \sstinvocation{
+      palDvn( double v[3], double uv[3], double $*$vm );
+   }
+   \sstarguments{
+      \sstsubsection{
+         v = double [3] (Given)
+      }{
+         vector
+      }
+      \sstsubsection{
+         uv = double [3] (Returned)
+      }{
+         unit vector in direction of {\tt "}v{\tt "}
+      }
+      \sstsubsection{
+         vm = double $*$ (Returned)
+      }{
+         modulus of {\tt "}v{\tt "}
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraPn(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palDvxv
+}{
+   Vector product of two 3-vectors
+}{
+   \sstdescription{
+      Vector product of two 3-vectors.
+   }
+   \sstinvocation{
+      palDvxv( double va[3], double vb[3], double vc[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         va = double [3] (Given)
+      }{
+         First vector
+      }
+      \sstsubsection{
+         vb = double [3] (Given)
+      }{
+         Second vector
+      }
+      \sstsubsection{
+         vc = double [3] (Returned)
+      }{
+         Result vector
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraPxp(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palEpb
+}{
+   Conversion of modified Julian Data to Besselian Epoch
+}{
+   \sstdescription{
+      Conversion of modified Julian Data to Besselian Epoch.
+   }
+   \sstinvocation{
+      epb = palEpb ( double date );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Modified Julian Date (JD - 2400000.5)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Besselian epoch.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEpb(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palEpb2d
+}{
+   Conversion of Besselian Epoch to Modified Julian Date
+}{
+   \sstdescription{
+      Conversion of Besselian Epoch to Modified Julian Date.
+   }
+   \sstinvocation{
+      mjd = palEpb2d ( double epb );
+   }
+   \sstarguments{
+      \sstsubsection{
+         epb = double (Given)
+      }{
+         Besselian Epoch
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Modified Julian Date (JD - 2400000.5)
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEpb2jd(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palEpj
+}{
+   Conversion of Modified Julian Date to Julian Epoch
+}{
+   \sstdescription{
+      Conversion of Modified Julian Date to Julian Epoch.
+   }
+   \sstinvocation{
+      epj = palEpj ( double date );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Modified Julian Date (JD - 2400000.5)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         The Julian Epoch.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEpj(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palEpj2d
+}{
+   Conversion of Julian Epoch to Modified Julian Date
+}{
+   \sstdescription{
+      Conversion of Julian Epoch to Modified Julian Date.
+   }
+   \sstinvocation{
+      mjd = palEpj2d ( double epj );
+   }
+   \sstarguments{
+      \sstsubsection{
+         epj = double (Given)
+      }{
+         Julian Epoch.
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Modified Julian Date (JD - 2400000.5)
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEpj2d(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palEqeqx
+}{
+   Equation of the equinoxes (IAU 2000/2006)
+}{
+   \sstdescription{
+      Equation of the equinoxes (IAU 2000/2006).
+   }
+   \sstinvocation{
+      palEqeqx( double date );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as Modified Julian Date (JD-400000.5)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEe06a(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palFk5hz
+}{
+   Transform an FK5 (J2000) star position into the frame of the
+   Hipparcos catalogue
+}{
+   \sstdescription{
+      Transform an FK5 (J2000) star position into the frame of the
+      Hipparcos catalogue.
+   }
+   \sstinvocation{
+      palFk5hz ( double r5, double d5, double epoch,
+                 double $*$rh, double $*$dh );
+   }
+   \sstarguments{
+      \sstsubsection{
+         r5 = double (Given)
+      }{
+         FK5 RA (radians), equinox J2000, epoch {\tt "}epoch{\tt "}
+      }
+      \sstsubsection{
+         d5 = double (Given)
+      }{
+         FK5 dec (radians), equinox J2000, epoch {\tt "}epoch{\tt "}
+      }
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Julian epoch
+      }
+      \sstsubsection{
+         rh = double $*$ (Returned)
+      }{
+         RA (radians)
+      }
+      \sstsubsection{
+         dh = double $*$ (Returned)
+      }{
+         Dec (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Assumes zero Hipparcos proper motion.
+
+         \sstitem
+         Uses eraEpj2jd() and eraFk5hz.
+           See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palGmst
+}{
+   Greenwich mean sidereal time (consistent with IAU 2006 precession)
+}{
+   \sstdescription{
+      Greenwich mean sidereal time (consistent with IAU 2006 precession).
+   }
+   \sstinvocation{
+      mst = palGmst ( double ut1 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ut1 = double (Given)
+      }{
+         Universal time (UT1) expressed as modified Julian Date (JD-2400000.5)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Greenwich mean sidereal time
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraGmst06(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palGmsta
+}{
+   Greenwich mean sidereal time (consistent with IAU 2006 precession)
+}{
+   \sstdescription{
+      Greenwich mean sidereal time (consistent with IAU 2006 precession).
+   }
+   \sstinvocation{
+      mst = palGmsta ( double date, double ut1 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         UT1 date (MJD: integer part of JD-2400000.5)
+      }
+      \sstsubsection{
+         ut1 = double (Given)
+      }{
+         UT1 time (fraction of a day)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Greenwich mean sidereal time (in range 0 to 2 pi)
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         For best accuracy use eraGmst06() directly.
+
+         \sstitem
+         Uses eraGmst06(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palHfk5z
+}{
+   Hipparcos star position to FK5 J2000
+}{
+   \sstdescription{
+      Transform a Hipparcos star position into FK5 J2000, assuming
+      zero Hipparcos proper motion.
+   }
+   \sstinvocation{
+      palHfk5z( double rh, double dh, double epoch,
+                double $*$r5, double $*$d5, double $*$dr5, double $*$dd5 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Hipparcos RA (radians)
+      }
+      \sstsubsection{
+         dh = double (Given)
+      }{
+         Hipparcos Dec (radians)
+      }
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Julian epoch (TDB)
+      }
+      \sstsubsection{
+         r5 = double $*$ (Returned)
+      }{
+         RA (radians, FK5, equinox J2000, epoch {\tt "}epoch{\tt "})
+      }
+      \sstsubsection{
+         d5 = double $*$ (Returned)
+      }{
+         Dec (radians, FK5, equinox J2000, epoch {\tt "}epoch{\tt "})
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraEpj2jd and eraHfk5z(). See SOFA/ERFA documentation for details.
+      }
+   }
+}
+\sstroutine{
+   palRefcoq
+}{
+   Determine the constants A and B in the atmospheric refraction model
+}{
+   \sstdescription{
+      Determine the constants A and B in the atmospheric refraction
+      model dZ = A tan Z $+$ B tan$*$$*$3 Z.  This is a fast alternative
+      to the palRefco routine.
+
+      Z is the {\tt "}observed{\tt "} zenith distance (i.e. affected by refraction)
+      and dZ is what to add to Z to give the {\tt "}topocentric{\tt "} (i.e. in vacuo)
+      zenith distance.
+   }
+   \sstinvocation{
+      palRefcoq( double tdk, double pmb, double rh, double wl,
+                 double $*$refa, double $*$refb );
+   }
+   \sstarguments{
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Ambient temperature at the observer (K)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Pressure at the observer (millibar)
+      }
+      \sstsubsection{
+         rh =  double (Given)
+      }{
+         Relative humidity at the observer (range 0-1)
+      }
+      \sstsubsection{
+         wl =  double (Given)
+      }{
+         Effective wavelength of the source (micrometre).
+         Radio refraction is chosen by specifying wl $>$ 100 micrometres.
+      }
+      \sstsubsection{
+         refa = double $*$ (Returned)
+      }{
+         tan Z coefficient (radian)
+      }
+      \sstsubsection{
+         refb = double $*$ (Returned)
+      }{
+         tan$*$$*$3 Z coefficient (radian)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraRefco(). See SOFA/ERFA documentation for details.
+
+         \sstitem
+         Note that the SOFA/ERFA routine uses different order of
+           of arguments and uses deg C rather than K.
+      }
+   }
+}
+
+
+\subsection{More complex functions}
+
+These functions do not have a simple equivalent in SOFA so are
+reimplemented either completely standalone or using multiple
+SOFA functions.
+
+%% Regenerate everything after this from the prologues using SST by
+%% running "make palsun.tex". We do not build this automatically as
+%% there is no particular need for an SST dependency.
+
+%% Some manual tweaking is required after creating the SST tex.
+
+\sstroutine{
+   palAddet
+}{
+   Add the E-terms to a pre IAU 1976 mean place
+}{
+   \sstdescription{
+      Add the E-terms (elliptic component of annual aberration)
+      to a pre IAU 1976 mean place to conform to the old
+      catalogue convention.
+   }
+   \sstinvocation{
+      void palAddet ( double rm, double dm, double eq,
+                      double $*$rc, double $*$dc );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rm = double (Given)
+      }{
+         RA without E-terms (radians)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         Dec without E-terms (radians)
+      }
+      \sstsubsection{
+         eq = double (Given)
+      }{
+         Besselian epoch of mean equator and equinox
+      }
+      \sstsubsection{
+         rc = double $*$ (Returned)
+      }{
+         RA with E-terms included (radians)
+      }
+      \sstsubsection{
+         dc = double $*$ (Returned)
+      }{
+         Dec with E-terms included (radians)
+      }
+   }
+   \sstnotes{
+      Most star positions from pre-1984 optical catalogues (or
+      derived from astrometry using such stars) embody the
+      E-terms.  If it is necessary to convert a formal mean
+      place (for example a pulsar timing position) to one
+      consistent with such a star catalogue, then the RA,Dec
+      should be adjusted using this routine.
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Explanatory Supplement to the Astronomical Ephemeris,
+      section 2D, page 48.
+   }
+}
+\sstroutine{
+   palAirmas
+}{
+   Air mass at given zenith distance
+}{
+   \sstdescription{
+      Calculates the airmass at the observed zenith distance.
+   }
+   \sstinvocation{
+      double palAirmas( double zd );
+   }
+   \sstarguments{
+      \sstsubsection{
+         zd = double (Given)
+      }{
+         Observed zenith distance (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The {\tt "}observed{\tt "} zenith distance referred to above means {\tt "}as
+           affected by refraction{\tt "}.
+
+         \sstitem
+         Uses Hardie{\tt '}s (1962) polynomial fit to Bemporad{\tt '}s data for
+           the relative air mass, X, in units of thickness at the zenith
+           as tabulated by Schoenberg (1929). This is adequate for all
+           normal needs as it is accurate to better than 0.1\% up to X =
+           6.8 and better than 1\% up to X = 10. Bemporad{\tt '}s tabulated
+           values are unlikely to be trustworthy to such accuracy
+           because of variations in density, pressure and other
+           conditions in the atmosphere from those assumed in his work.
+
+         \sstitem
+         The sign of the ZD is ignored.
+
+         \sstitem
+         At zenith distances greater than about ZD = 87 degrees the
+           air mass is held constant to avoid arithmetic overflows.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Hardie, R.H., 1962, in {\tt "}Astronomical Techniques{\tt "}
+             ed. W.A. Hiltner, University of Chicago Press, p180.
+
+         \sstitem
+         Schoenberg, E., 1929, Hdb. d. Ap.,
+             Berlin, Julius Springer, 2, 268.
+      }
+   }
+}
+\sstroutine{
+   palAmp
+}{
+   Convert star RA,Dec from geocentric apparaent to mean place
+}{
+   \sstdescription{
+      Convert star RA,Dec from geocentric apparent to mean place. The
+      mean coordinate system is close to ICRS. See palAmpqk for details.
+   }
+   \sstinvocation{
+      void palAmp ( double ra, double da, double date, double eq,
+                    double $*$rm, double $*$dm );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ra = double (Given)
+      }{
+         Apparent RA (radians)
+      }
+      \sstsubsection{
+         dec = double (Given)
+      }{
+         Apparent Dec (radians)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB for apparent place (JD-2400000.5)
+      }
+      \sstsubsection{
+         eq = double (Given)
+      }{
+         Equinox: Julian epoch of mean place.
+      }
+      \sstsubsection{
+         rm = double $*$ (Returned)
+      }{
+         Mean RA (radians)
+      }
+      \sstsubsection{
+         dm = double $*$ (Returned)
+      }{
+         Mean Dec (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         See palMappa and palAmpqk for details.
+      }
+   }
+}
+\sstroutine{
+   palAmpqk
+}{
+   Convert star RA,Dec from geocentric apparent to mean place
+}{
+   \sstdescription{
+      Convert star RA,Dec from geocentric apparent to mean place. The {\tt "}mean{\tt "}
+      coordinate system is in fact close to ICRS. Use of this function
+      is appropriate when efficiency is important and where many star
+      positions are all to be transformed for one epoch and equinox.  The
+      star-independent parameters can be obtained by calling the palMappa
+      function.
+   }
+   \sstinvocation{
+      void palAmpqk ( double ra, double da, double amprms[21],
+                      double $*$rm, double $*$dm )
+   }
+   \sstarguments{
+      \sstsubsection{
+         ra = double (Given)
+      }{
+         Apparent RA (radians).
+      }
+      \sstsubsection{
+         da = double (Given)
+      }{
+         Apparent Dec (radians).
+      }
+      \sstsubsection{
+         amprms = double[21] (Given)
+      }{
+         Star-independent mean-to-apparent parameters (see palMappa):
+         (0)      time interval for proper motion (Julian years)
+         (1-3)    barycentric position of the Earth (AU)
+         (4-6)    not used
+         (7)      not used
+         (8-10)   abv: barycentric Earth velocity in units of c
+         (11)     sqrt(1-v$*$v) where v=modulus(abv)
+         (12-20)  precession/nutation (3,3) matrix
+      }
+      \sstsubsection{
+         rm = double (Returned)
+      }{
+         Mean RA (radians).
+      }
+      \sstsubsection{
+         dm = double (Returned)
+      }{
+         Mean Dec (radians).
+      }
+   }
+}
+\sstroutine{
+   palAop
+}{
+   Apparent to observed place
+}{
+   \sstdescription{
+      Apparent to observed place for sources distant from the solar system.
+   }
+   \sstinvocation{
+      void palAop ( double rap, double dap, double date, double dut,
+                    double elongm, double phim, double hm, double xp,
+                    double yp, double tdk, double pmb, double rh,
+                    double wl, double tlr,
+                    double $*$aob, double $*$zob, double $*$hob,
+                    double $*$dob, double $*$rob );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rap = double (Given)
+      }{
+         Geocentric apparent right ascension
+      }
+      \sstsubsection{
+         dap = double (Given)
+      }{
+         Geocentirc apparent declination
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         UTC date/time (Modified Julian Date, JD-2400000.5)
+      }
+      \sstsubsection{
+         dut = double (Given)
+      }{
+         delta UT: UT1-UTC (UTC seconds)
+      }
+      \sstsubsection{
+         elongm = double (Given)
+      }{
+         Mean longitude of the observer (radians, east $+$ve)
+      }
+      \sstsubsection{
+         phim = double (Given)
+      }{
+         Mean geodetic latitude of the observer (radians)
+      }
+      \sstsubsection{
+         hm = double (Given)
+      }{
+         Observer{\tt '}s height above sea level (metres)
+      }
+      \sstsubsection{
+         xp = double (Given)
+      }{
+         Polar motion x-coordinates (radians)
+      }
+      \sstsubsection{
+         yp = double (Given)
+      }{
+         Polar motion y-coordinates (radians)
+      }
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Local ambient temperature (K; std=273.15)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Local atmospheric pressure (mb; std=1013.25)
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Local relative humidity (in the range 0.0-1.0)
+      }
+      \sstsubsection{
+         wl = double (Given)
+      }{
+         Effective wavelength (micron, e.g. 0.55)
+      }
+      \sstsubsection{
+         tlr = double (Given)
+      }{
+         Tropospheric laps rate (K/metre, e.g. 0.0065)
+      }
+      \sstsubsection{
+         aob = double $*$ (Returned)
+      }{
+         Observed azimuth (radians: N=0; E=90)
+      }
+      \sstsubsection{
+         zob = double $*$ (Returned)
+      }{
+         Observed zenith distance (radians)
+      }
+      \sstsubsection{
+         hob = double $*$ (Returned)
+      }{
+         Observed Hour Angle (radians)
+      }
+      \sstsubsection{
+         dob = double $*$ (Returned)
+      }{
+         Observed Declination (radians)
+      }
+      \sstsubsection{
+         rob = double $*$ (Returned)
+      }{
+         Observed Right Ascension (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         This routine returns zenith distance rather than elevation
+           in order to reflect the fact that no allowance is made for
+           depression of the horizon.
+
+         \sstitem
+         The accuracy of the result is limited by the corrections for
+           refraction.  Providing the meteorological parameters are
+           known accurately and there are no gross local effects, the
+           predicted apparent RA,Dec should be within about 0.1 arcsec
+           for a zenith distance of less than 70 degrees.  Even at a
+           topocentric zenith distance of 90 degrees, the accuracy in
+           elevation should be better than 1 arcmin;  useful results
+           are available for a further 3 degrees, beyond which the
+           palRefro routine returns a fixed value of the refraction.
+           The complementary routines palAop (or palAopqk) and palOap
+           (or palOapqk) are self-consistent to better than 1 micro-
+           arcsecond all over the celestial sphere.
+
+         \sstitem
+         It is advisable to take great care with units, as even
+           unlikely values of the input parameters are accepted and
+           processed in accordance with the models used.
+
+         \sstitem
+         {\tt "}Apparent{\tt "} place means the geocentric apparent right ascension
+           and declination, which is obtained from a catalogue mean place
+           by allowing for space motion, parallax, precession, nutation,
+           annual aberration, and the Sun{\tt '}s gravitational lens effect.  For
+           star positions in the FK5 system (i.e. J2000), these effects can
+           be applied by means of the palMap etc routines.  Starting from
+           other mean place systems, additional transformations will be
+           needed;  for example, FK4 (i.e. B1950) mean places would first
+           have to be converted to FK5, which can be done with the
+           palFk425 etc routines.
+
+         \sstitem
+         {\tt "}Observed{\tt "} Az,El means the position that would be seen by a
+           perfect theodolite located at the observer.  This is obtained
+           from the geocentric apparent RA,Dec by allowing for Earth
+           orientation and diurnal aberration, rotating from equator
+           to horizon coordinates, and then adjusting for refraction.
+           The HA,Dec is obtained by rotating back into equatorial
+           coordinates, using the geodetic latitude corrected for polar
+           motion, and is the position that would be seen by a perfect
+           equatorial located at the observer and with its polar axis
+           aligned to the Earth{\tt '}s axis of rotation (n.b. not to the
+           refracted pole).  Finally, the RA is obtained by subtracting
+           the HA from the local apparent ST.
+
+         \sstitem
+         To predict the required setting of a real telescope, the
+           observed place produced by this routine would have to be
+           adjusted for the tilt of the azimuth or polar axis of the
+           mounting (with appropriate corrections for mount flexures),
+           for non-perpendicularity between the mounting axes, for the
+           position of the rotator axis and the pointing axis relative
+           to it, for tube flexure, for gear and encoder errors, and
+           finally for encoder zero points.  Some telescopes would, of
+           course, exhibit other properties which would need to be
+           accounted for at the appropriate point in the sequence.
+
+         \sstitem
+         This routine takes time to execute, due mainly to the
+           rigorous integration used to evaluate the refraction.
+           For processing multiple stars for one location and time,
+           call palAoppa once followed by one call per star to palAopqk.
+           Where a range of times within a limited period of a few hours
+           is involved, and the highest precision is not required, call
+           palAoppa once, followed by a call to palAoppat each time the
+           time changes, followed by one call per star to palAopqk.
+
+         \sstitem
+         The DATE argument is UTC expressed as an MJD.  This is,
+           strictly speaking, wrong, because of leap seconds.  However,
+           as long as the delta UT and the UTC are consistent there
+           are no difficulties, except during a leap second.  In this
+           case, the start of the 61st second of the final minute should
+           begin a new MJD day and the old pre-leap delta UT should
+           continue to be used.  As the 61st second completes, the MJD
+           should revert to the start of the day as, simultaneously,
+           the delta UTC changes by one second to its post-leap new value.
+
+         \sstitem
+         The delta UT (UT1-UTC) is tabulated in IERS circulars and
+           elsewhere.  It increases by exactly one second at the end of
+           each UTC leap second, introduced in order to keep delta UT
+           within $+$/- 0.9 seconds.
+
+         \sstitem
+         IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+           The longitude required by the present routine is east-positive,
+           in accordance with geographical convention (and right-handed).
+           In particular, note that the longitudes returned by the
+           palObs routine are west-positive, following astronomical
+           usage, and must be reversed in sign before use in the present
+           routine.
+
+         \sstitem
+         The polar coordinates XP,YP can be obtained from IERS
+           circulars and equivalent publications.  The maximum amplitude
+           is about 0.3 arcseconds.  If XP,YP values are unavailable,
+           use XP=YP=0.0.  See page B60 of the 1988 Astronomical Almanac
+           for a definition of the two angles.
+
+         \sstitem
+         The height above sea level of the observing station, HM,
+           can be obtained from the Astronomical Almanac (Section J
+           in the 1988 edition), or via the routine palObs.  If P,
+           the pressure in millibars, is available, an adequate
+           estimate of HM can be obtained from the expression
+
+      }
+              HM $\sim$ -29.3$*$TSL$*$LOG(P/1013.25).
+
+        where TSL is the approximate sea-level air temperature in K
+        (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+        section 52).  Similarly, if the pressure P is not known,
+        it can be estimated from the height of the observing
+        station, HM, as follows:
+
+              P $\sim$ 1013.25$*$EXP(-HM/(29.3$*$TSL)).
+
+        Note, however, that the refraction is nearly proportional to the
+        pressure and that an accurate P value is important for precise
+        work.
+
+      \sstitemlist{
+
+         \sstitem
+         The azimuths etc produced by the present routine are with
+           respect to the celestial pole.  Corrections to the terrestrial
+           pole can be computed using palPolmo.
+      }
+   }
+}
+\sstroutine{
+   palAoppa
+}{
+   Precompute apparent to observed place parameters
+}{
+   \sstdescription{
+      Precompute apparent to observed place parameters required by palAopqk
+      and palOapqk.
+   }
+   \sstinvocation{
+      void palAoppa ( double date, double dut, double elongm, double phim,
+                      double hm, double xp, double yp, double tdk, double pmb,
+                      double rh, double wl, double tlr, double aoprms[14] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         UTC date/time (modified Julian Date, JD-2400000.5)
+      }
+      \sstsubsection{
+         dut = double (Given)
+      }{
+         delta UT:  UT1-UTC (UTC seconds)
+      }
+      \sstsubsection{
+         elongm = double (Given)
+      }{
+         mean longitude of the observer (radians, east $+$ve)
+      }
+      \sstsubsection{
+         phim = double (Given)
+      }{
+         mean geodetic latitude of the observer (radians)
+      }
+      \sstsubsection{
+         hm = double (Given)
+      }{
+         observer{\tt '}s height above sea level (metres)
+      }
+      \sstsubsection{
+         xp = double (Given)
+      }{
+         polar motion x-coordinate (radians)
+      }
+      \sstsubsection{
+         yp = double (Given)
+      }{
+         polar motion y-coordinate (radians)
+      }
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         local ambient temperature (K; std=273.15)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         local atmospheric pressure (mb; std=1013.25)
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         local relative humidity (in the range 0.0-1.0)
+      }
+      \sstsubsection{
+         wl = double (Given)
+      }{
+         effective wavelength (micron, e.g. 0.55)
+      }
+      \sstsubsection{
+         tlr = double (Given)
+      }{
+         tropospheric lapse rate (K/metre, e.g. 0.0065)
+      }
+      \sstsubsection{
+         aoprms = double [14] (Returned)
+      }{
+         Star-independent apparent-to-observed parameters
+
+          (0)      geodetic latitude (radians)
+          (1,2)    sine and cosine of geodetic latitude
+          (3)      magnitude of diurnal aberration vector
+          (4)      height (hm)
+          (5)      ambient temperature (tdk)
+          (6)      pressure (pmb)
+          (7)      relative humidity (rh)
+          (8)      wavelength (wl)
+          (9)     lapse rate (tlr)
+          (10,11)  refraction constants A and B (radians)
+          (12)     longitude $+$ eqn of equinoxes $+$ sidereal DUT (radians)
+          (13)     local apparent sidereal time (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         It is advisable to take great care with units, as even
+           unlikely values of the input parameters are accepted and
+           processed in accordance with the models used.
+
+         \sstitem
+         The DATE argument is UTC expressed as an MJD.  This is,
+           strictly speaking, improper, because of leap seconds.  However,
+           as long as the delta UT and the UTC are consistent there
+           are no difficulties, except during a leap second.  In this
+           case, the start of the 61st second of the final minute should
+           begin a new MJD day and the old pre-leap delta UT should
+           continue to be used.  As the 61st second completes, the MJD
+           should revert to the start of the day as, simultaneously,
+           the delta UTC changes by one second to its post-leap new value.
+
+         \sstitem
+         The delta UT (UT1-UTC) is tabulated in IERS circulars and
+           elsewhere.  It increases by exactly one second at the end of
+           each UTC leap second, introduced in order to keep delta UT
+           within $+$/- 0.9 seconds.
+
+         \sstitem
+         IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+           The longitude required by the present routine is east-positive,
+           in accordance with geographical convention (and right-handed).
+           In particular, note that the longitudes returned by the
+           palObs routine are west-positive, following astronomical
+           usage, and must be reversed in sign before use in the present
+           routine.
+
+         \sstitem
+         The polar coordinates XP,YP can be obtained from IERS
+           circulars and equivalent publications.  The maximum amplitude
+           is about 0.3 arcseconds.  If XP,YP values are unavailable,
+           use XP=YP=0.0.  See page B60 of the 1988 Astronomical Almanac
+           for a definition of the two angles.
+
+         \sstitem
+         The height above sea level of the observing station, HM,
+           can be obtained from the Astronomical Almanac (Section J
+           in the 1988 edition), or via the routine palObs.  If P,
+           the pressure in millibars, is available, an adequate
+           estimate of HM can be obtained from the expression
+
+      }
+              HM $\sim$ -29.3$*$TSL$*$log(P/1013.25).
+
+        where TSL is the approximate sea-level air temperature in K
+        (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+        section 52).  Similarly, if the pressure P is not known,
+        it can be estimated from the height of the observing
+        station, HM, as follows:
+
+              P $\sim$ 1013.25$*$exp(-HM/(29.3$*$TSL)).
+
+        Note, however, that the refraction is nearly proportional to the
+        pressure and that an accurate P value is important for precise
+        work.
+
+      \sstitemlist{
+
+         \sstitem
+         Repeated, computationally-expensive, calls to palAoppa for
+           times that are very close together can be avoided by calling
+           palAoppa just once and then using palAoppat for the subsequent
+           times.  Fresh calls to palAoppa will be needed only when
+           changes in the precession have grown to unacceptable levels or
+           when anything affecting the refraction has changed.
+      }
+   }
+}
+\sstroutine{
+   palAoppat
+}{
+   Recompute sidereal time to support apparent to observed place
+}{
+   \sstdescription{
+      This routine recomputes the sidereal time in the apparent to
+      observed place star-independent parameter block.
+   }
+   \sstinvocation{
+      void palAoppat( double date, double aoprms[14] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         UTC date/time (modified Julian Date, JD-2400000.5)
+         (see palAoppa description for comments on leap seconds)
+      }
+      \sstsubsection{
+         aoprms = double[14] (Given \& Returned)
+      }{
+         Star-independent apparent-to-observed parameters. Updated
+         by this routine. Requires element 12 to be the longitude $+$
+         eqn of equinoxes $+$ sidereal DUT and fills in element 13
+         with the local apparent sidereal time (in radians).
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         See palAoppa for more information.
+
+         \sstitem
+         The star-independent parameters are not treated as an opaque
+           struct in order to retain compatibility with SLA.
+      }
+   }
+}
+\sstroutine{
+   palAopqk
+}{
+   Quick apparent to observed place
+}{
+   \sstdescription{
+      Quick apparent to observed place.
+   }
+   \sstinvocation{
+      void palAopqk ( double rap, double dap, const double aoprms[14],
+                      double $*$aob, double $*$zob, double $*$hob,
+                      double $*$dob, double $*$rob );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rap = double (Given)
+      }{
+         Geocentric apparent right ascension
+      }
+      \sstsubsection{
+         dap = double (Given)
+      }{
+         Geocentric apparent declination
+      }
+      \sstsubsection{
+         aoprms = const double [14] (Given)
+      }{
+         Star-independent apparent-to-observed parameters.
+
+          [0]      geodetic latitude (radians)
+          [1,2]    sine and cosine of geodetic latitude
+          [3]      magnitude of diurnal aberration vector
+          [4]      height (HM)
+          [5]      ambient temperature (T)
+          [6]      pressure (P)
+          [7]      relative humidity (RH)
+          [8]      wavelength (WL)
+          [9]      lapse rate (TLR)
+          [10,11]  refraction constants A and B (radians)
+          [12]     longitude $+$ eqn of equinoxes $+$ sidereal DUT (radians)
+          [13]     local apparent sidereal time (radians)
+      }
+      \sstsubsection{
+         aob = double $*$ (Returned)
+      }{
+         Observed azimuth (radians: N=0,E=90)
+      }
+      \sstsubsection{
+         zob = double $*$ (Returned)
+      }{
+         Observed zenith distance (radians)
+      }
+      \sstsubsection{
+         hob = double $*$ (Returned)
+      }{
+         Observed Hour Angle (radians)
+      }
+      \sstsubsection{
+         dob = double $*$ (Returned)
+      }{
+         Observed Declination (radians)
+      }
+      \sstsubsection{
+         rob = double $*$ (Returned)
+      }{
+         Observed Right Ascension (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         This routine returns zenith distance rather than elevation
+           in order to reflect the fact that no allowance is made for
+           depression of the horizon.
+
+         \sstitem
+         The accuracy of the result is limited by the corrections for
+           refraction.  Providing the meteorological parameters are
+           known accurately and there are no gross local effects, the
+           observed RA,Dec predicted by this routine should be within
+           about 0.1 arcsec for a zenith distance of less than 70 degrees.
+           Even at a topocentric zenith distance of 90 degrees, the
+           accuracy in elevation should be better than 1 arcmin;  useful
+           results are available for a further 3 degrees, beyond which
+           the palRefro routine returns a fixed value of the refraction.
+           The complementary routines palAop (or palAopqk) and palOap
+           (or palOapqk) are self-consistent to better than 1 micro-
+           arcsecond all over the celestial sphere.
+
+         \sstitem
+         It is advisable to take great care with units, as even
+           unlikely values of the input parameters are accepted and
+           processed in accordance with the models used.
+
+         \sstitem
+         {\tt "}Apparent{\tt "} place means the geocentric apparent right ascension
+           and declination, which is obtained from a catalogue mean place
+           by allowing for space motion, parallax, precession, nutation,
+           annual aberration, and the Sun{\tt '}s gravitational lens effect.  For
+           star positions in the FK5 system (i.e. J2000), these effects can
+           be applied by means of the palMap etc routines.  Starting from
+           other mean place systems, additional transformations will be
+           needed;  for example, FK4 (i.e. B1950) mean places would first
+           have to be converted to FK5, which can be done with the
+           palFk425 etc routines.
+
+         \sstitem
+         {\tt "}Observed{\tt "} Az,El means the position that would be seen by a
+           perfect theodolite located at the observer.  This is obtained
+           from the geocentric apparent RA,Dec by allowing for Earth
+           orientation and diurnal aberration, rotating from equator
+           to horizon coordinates, and then adjusting for refraction.
+           The HA,Dec is obtained by rotating back into equatorial
+           coordinates, using the geodetic latitude corrected for polar
+           motion, and is the position that would be seen by a perfect
+           equatorial located at the observer and with its polar axis
+           aligned to the Earth{\tt '}s axis of rotation (n.b. not to the
+           refracted pole).  Finally, the RA is obtained by subtracting
+           the HA from the local apparent ST.
+
+         \sstitem
+         To predict the required setting of a real telescope, the
+           observed place produced by this routine would have to be
+           adjusted for the tilt of the azimuth or polar axis of the
+           mounting (with appropriate corrections for mount flexures),
+           for non-perpendicularity between the mounting axes, for the
+           position of the rotator axis and the pointing axis relative
+           to it, for tube flexure, for gear and encoder errors, and
+           finally for encoder zero points.  Some telescopes would, of
+           course, exhibit other properties which would need to be
+           accounted for at the appropriate point in the sequence.
+
+         \sstitem
+         The star-independent apparent-to-observed-place parameters
+           in AOPRMS may be computed by means of the palAoppa routine.
+           If nothing has changed significantly except the time, the
+           palAoppat routine may be used to perform the requisite
+           partial recomputation of AOPRMS.
+
+         \sstitem
+         At zenith distances beyond about 76 degrees, the need for
+           special care with the corrections for refraction causes a
+           marked increase in execution time.  Moreover, the effect
+           gets worse with increasing zenith distance.  Adroit
+           programming in the calling application may allow the
+           problem to be reduced.  Prepare an alternative AOPRMS array,
+           computed for zero air-pressure;  this will disable the
+           refraction corrections and cause rapid execution.  Using
+           this AOPRMS array, a preliminary call to the present routine
+           will, depending on the application, produce a rough position
+           which may be enough to establish whether the full, slow
+           calculation (using the real AOPRMS array) is worthwhile.
+           For example, there would be no need for the full calculation
+           if the preliminary call had already established that the
+           source was well below the elevation limits for a particular
+           telescope.
+
+         \sstitem
+         The azimuths etc produced by the present routine are with
+           respect to the celestial pole.  Corrections to the terrestrial
+           pole can be computed using palPolmo.
+      }
+   }
+}
+\sstroutine{
+   palAtmdsp
+}{
+   Apply atmospheric-dispersion adjustments to refraction coefficients
+}{
+   \sstdescription{
+      Apply atmospheric-dispersion adjustments to refraction coefficients.
+   }
+   \sstinvocation{
+      void palAtmdsp( double tdk, double pmb, double rh, double wl1,
+                      double a1, double b1, double wl2, double $*$a2, double $*$b2 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Ambient temperature, K
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Ambient pressure, millibars
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Ambient relative humidity, 0-1
+      }
+      \sstsubsection{
+         wl1 = double (Given)
+      }{
+         Reference wavelength, micrometre (0.4 recommended)
+      }
+      \sstsubsection{
+         a1 = double (Given)
+      }{
+         Refraction coefficient A for wavelength wl1 (radians)
+      }
+      \sstsubsection{
+         b1 = double (Given)
+      }{
+         Refraction coefficient B for wavelength wl1 (radians)
+      }
+      \sstsubsection{
+         wl2 = double (Given)
+      }{
+         Wavelength for which adjusted A,B required
+      }
+      \sstsubsection{
+         a2 = double $*$ (Returned)
+      }{
+         Refraction coefficient A for wavelength WL2 (radians)
+      }
+      \sstsubsection{
+         b2 = double $*$ (Returned)
+      }{
+         Refraction coefficient B for wavelength WL2 (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         To use this routine, first call palRefco specifying WL1 as the
+         wavelength.  This yields refraction coefficients A1,B1, correct
+         for that wavelength.  Subsequently, calls to palAtmdsp specifying
+         different wavelengths will produce new, slightly adjusted
+         refraction coefficients which apply to the specified wavelength.
+
+         \sstitem
+         Most of the atmospheric dispersion happens between 0.7 micrometre
+         and the UV atmospheric cutoff, and the effect increases strongly
+         towards the UV end.  For this reason a blue reference wavelength
+         is recommended, for example 0.4 micrometres.
+
+         \sstitem
+         The accuracy, for this set of conditions:
+
+      }
+         height above sea level    2000 m
+                       latitude    29 deg
+                       pressure    793 mb
+                    temperature    17 degC
+                       humidity    50\%
+                     lapse rate    0.0065 degC/m
+           reference wavelength    0.4 micrometre
+                 star elevation    15 deg
+
+      is about 2.5 mas RMS between 0.3 and 1.0 micrometres, and stays
+      within 4 mas for the whole range longward of 0.3 micrometres
+      (compared with a total dispersion from 0.3 to 20.0 micrometres
+      of about 11 arcsec).  These errors are typical for ordinary
+      conditions and the given elevation;  in extreme conditions values
+      a few times this size may occur, while at higher elevations the
+      errors become much smaller.
+
+      \sstitemlist{
+
+         \sstitem
+         If either wavelength exceeds 100 micrometres, the radio case
+         is assumed and the returned refraction coefficients are the
+         same as the given ones.  Note that radio refraction coefficients
+         cannot be turned into optical values using this routine, nor
+         vice versa.
+
+         \sstitem
+         The algorithm consists of calculation of the refractivity of the
+         air at the observer for the two wavelengths, using the methods
+         of the palRefro routine, and then scaling of the two refraction
+         coefficients according to classical refraction theory.  This
+         amounts to scaling the A coefficient in proportion to (n-1) and
+         the B coefficient almost in the same ratio (see R.M.Green,
+         {\tt "}Spherical Astronomy{\tt "}, Cambridge University Press, 1985).
+      }
+   }
+}
+\sstroutine{
+   palCaldj
+}{
+   Gregorian Calendar to Modified Julian Date
+}{
+   \sstdescription{
+      Modified Julian Date to Gregorian Calendar with special
+      behaviour for 2-digit years relating to 1950 to 2049.
+   }
+   \sstinvocation{
+      void palCaldj ( int iy, int im, int id, double $*$djm, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         iy = int (Given)
+      }{
+         Year in the Gregorian calendar
+      }
+      \sstsubsection{
+         im = int (Given)
+      }{
+         Month in the Gergorian calendar
+      }
+      \sstsubsection{
+         id = int (Given)
+      }{
+         Day in the Gregorian calendar
+      }
+      \sstsubsection{
+         djm = double $*$ (Returned)
+      }{
+         Modified Julian Date (JD-2400000.5) for 0 hrs
+      }
+      \sstsubsection{
+         j = status (Returned)
+      }{
+         0 = OK. See eraCal2jd for other values.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraCal2jd
+
+         \sstitem
+         Unlike eraCal2jd this routine treats the years 0-100 as
+           referring to the end of the 20th Century and beginning of
+           the 21st Century. If this behaviour is not acceptable
+           use the SOFA/ERFA routine directly or palCldj.
+           Acceptable years are 00-49, interpreted as 2000-2049,
+                                50-99,     {\tt "}       {\tt "}  1950-1999,
+                                all others, interpreted literally.
+
+         \sstitem
+         Unlike SLA this routine will work with negative years.
+      }
+   }
+}
+\sstroutine{
+   palDafin
+}{
+   Sexagesimal character string to angle
+}{
+   \sstdescription{
+      Extracts an angle from a sexagesimal string with degrees, arcmin,
+      arcsec fields using space or comma delimiters.
+   }
+   \sstinvocation{
+      void palDafin ( const char $*$string, int $*$ipos, double $*$a, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         string = const char $*$ (Given)
+      }{
+         String containing deg, arcmin, arcsec fields
+      }
+      \sstsubsection{
+         ipos = int $*$ (Given \& Returned)
+      }{
+         Position to start decoding {\tt "}string{\tt "}. First character
+         is position 1 for compatibility with SLA. After
+         calling this routine {\tt "}iptr{\tt "} will be positioned after
+         the sexagesimal string.
+      }
+      \sstsubsection{
+         a = double $*$ (Returned)
+      }{
+         Angle in radians.
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         status:  0 = OK
+                 $+$1 = default, A unchanged
+         \sstitemlist{
+
+            \sstitem
+                    1 = bad degrees      )
+
+            \sstitem
+                    2 = bad arcminutes   )  (note 3)
+
+            \sstitem
+                    3 = bad arcseconds   )
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The first three {\tt "}fields{\tt "} in STRING are degrees, arcminutes,
+           arcseconds, separated by spaces or commas.  The degrees field
+           may be signed, but not the others.  The decoding is carried
+           out by the palDfltin routine and is free-format.
+
+         \sstitem
+         Successive fields may be absent, defaulting to zero.  For
+           zero status, the only combinations allowed are degrees alone,
+           degrees and arcminutes, and all three fields present.  If all
+           three fields are omitted, a status of $+$1 is returned and A is
+           unchanged.  In all other cases A is changed.
+
+         \sstitem
+         Range checking:
+
+      }
+            The degrees field is not range checked.  However, it is
+            expected to be integral unless the other two fields are absent.
+
+            The arcminutes field is expected to be 0-59, and integral if
+            the arcseconds field is present.  If the arcseconds field
+            is absent, the arcminutes is expected to be 0-59.9999...
+
+            The arcseconds field is expected to be 0-59.9999...
+
+      \sstitemlist{
+
+         \sstitem
+         Decoding continues even when a check has failed.  Under these
+           circumstances the field takes the supplied value, defaulting
+           to zero, and the result A is computed and returned.
+
+         \sstitem
+         Further fields after the three expected ones are not treated
+           as an error.  The pointer IPOS is left in the correct state
+           for further decoding with the present routine or with palDfltin
+           etc. See the example, above.
+
+         \sstitem
+         If STRING contains hours, minutes, seconds instead of degrees
+           etc, or if the required units are turns (or days) instead of
+           radians, the result A should be multiplied as follows:
+
+      }
+            for        to obtain    multiply
+            STRING     A in         A by
+
+            d {\tt '} {\tt "}      radians      1       =  1.0
+            d {\tt '} {\tt "}      turns        1/2pi   =  0.1591549430918953358
+            h m s      radians      15      =  15.0
+            h m s      days         15/2pi  =  2.3873241463784300365
+   }
+   \sstdiytopic{
+      Example
+   }{
+      argument    before                           after
+
+      STRING      {\tt '}-57 17 44.806  12 34 56.7{\tt '}      unchanged
+      IPTR        1                                16 (points to 12...)
+      A           ?                                -1.00000D0
+      J           ?                                0
+   }
+}
+\sstroutine{
+   palDe2h
+}{
+   Equatorial to horizon coordinates: HA,Dec to Az,E
+}{
+   \sstdescription{
+      Convert equatorial to horizon coordinates.
+   }
+   \sstinvocation{
+      palDe2h( double ha, double dec, double phi, double $*$ az, double $*$ el );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ha = double $*$ (Given)
+      }{
+         Hour angle (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Given)
+      }{
+         Declination (radians)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observatory latitude (radians)
+      }
+      \sstsubsection{
+         az = double $*$ (Returned)
+      }{
+         Azimuth (radians)
+      }
+      \sstsubsection{
+         el = double $*$ (Returned)
+      }{
+         Elevation (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         All the arguments are angles in radians.
+
+         \sstitem
+         Azimuth is returned in the range 0-2pi;  north is zero,
+           and east is $+$pi/2.  Elevation is returned in the range
+           $+$/-pi/2.
+
+         \sstitem
+         The latitude must be geodetic.  In critical applications,
+           corrections for polar motion should be applied.
+
+         \sstitem
+         In some applications it will be important to specify the
+           correct type of hour angle and declination in order to
+           produce the required type of azimuth and elevation.  In
+           particular, it may be important to distinguish between
+           elevation as affected by refraction, which would
+           require the {\tt "}observed{\tt "} HA,Dec, and the elevation
+           in vacuo, which would require the {\tt "}topocentric{\tt "} HA,Dec.
+           If the effects of diurnal aberration can be neglected, the
+           {\tt "}apparent{\tt "} HA,Dec may be used instead of the topocentric
+           HA,Dec.
+
+         \sstitem
+         No range checking of arguments is carried out.
+
+         \sstitem
+         In applications which involve many such calculations, rather
+           than calling the present routine it will be more efficient to
+           use inline code, having previously computed fixed terms such
+           as sine and cosine of latitude, and (for tracking a star)
+           sine and cosine of declination.
+      }
+   }
+}
+\sstroutine{
+   palDeuler
+}{
+   Form a rotation matrix from the Euler angles
+}{
+   \sstdescription{
+      A rotation is positive when the reference frame rotates
+      anticlockwise as seen looking towards the origin from the
+      positive region of the specified axis.
+
+      The characters of ORDER define which axes the three successive
+      rotations are about.  A typical value is {\tt '}ZXZ{\tt '}, indicating that
+      RMAT is to become the direction cosine matrix corresponding to
+      rotations of the reference frame through PHI radians about the
+      old Z-axis, followed by THETA radians about the resulting X-axis,
+      then PSI radians about the resulting Z-axis.
+
+      The axis names can be any of the following, in any order or
+      combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+      axis labelling/numbering conventions apply;  the xyz (=123)
+      triad is right-handed.  Thus, the {\tt '}ZXZ{\tt '} example given above
+      could be written {\tt '}zxz{\tt '} or {\tt '}313{\tt '} (or even {\tt '}ZxZ{\tt '} or {\tt '}3xZ{\tt '}).  ORDER
+      is terminated by length or by the first unrecognized character.
+
+      Fewer than three rotations are acceptable, in which case the later
+      angle arguments are ignored.  If all rotations are zero, the
+      identity matrix is produced.
+   }
+   \sstinvocation{
+      void palDeuler ( const char $*$order, double phi, double theta, double psi,
+                       double rmat[3][3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         order = const char[] (Given)
+      }{
+         Specifies about which axes the rotation occurs
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         1st rotation (radians)
+      }
+      \sstsubsection{
+         theta = double (Given)
+      }{
+         2nd rotation (radians)
+      }
+      \sstsubsection{
+         psi = double (Given)
+      }{
+         3rd rotation (radians)
+      }
+      \sstsubsection{
+         rmat = double[3][3] (Given \& Returned)
+      }{
+         Rotation matrix
+      }
+   }
+}
+\sstroutine{
+   palDfltin
+}{
+   Convert free-format input into double precision floating point
+}{
+   \sstdescription{
+      Extracts a number from an input string starting at the specified
+      index.
+   }
+   \sstinvocation{
+      void palDfltin( const char $*$ string, int $*$nstrt,
+                      double $*$dreslt, int $*$jflag );
+   }
+   \sstarguments{
+      \sstsubsection{
+         string = const char $*$ (Given)
+      }{
+         String containing number to be decoded.
+      }
+      \sstsubsection{
+         nstrt = int $*$ (Given and Returned)
+      }{
+         Character number indicating where decoding should start.
+         On output its value is updated to be the location of the
+         possible next value. For compatibility with SLA the first
+         character is index 1.
+      }
+      \sstsubsection{
+         dreslt = double $*$ (Returned)
+      }{
+         Result. Not updated when jflag=1.
+      }
+      \sstsubsection{
+         jflag = int $*$ (Returned)
+      }{
+         status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses the strtod() system call to do the parsing. This may lead to
+           subtle differences when compared to the SLA/F parsing.
+
+         \sstitem
+         All {\tt "}D{\tt "} characters are converted to {\tt "}E{\tt "} to handle fortran exponents.
+
+         \sstitem
+         Commas are recognized as a special case and are skipped if one happens
+           to be the next character when updating nstrt. Additionally the output
+           nstrt position will skip past any trailing space.
+
+         \sstitem
+         If no number can be found flag will be set to 1.
+
+         \sstitem
+         If the number overflows or underflows jflag will be set to 2. For overflow
+           the returned result will have the value HUGE\_VAL, for underflow it
+           will have the value 0.0.
+
+         \sstitem
+         For compatiblity with SLA/F -0 will be returned as {\tt "}0{\tt "} with jflag == -1.
+
+         \sstitem
+         Unlike slaDfltin a standalone {\tt "}E{\tt "} will return status 1 (could not find
+           a number) rather than 2 (bad number).
+      }
+   }
+   \sstimplementationstatus{
+      \sstitemlist{
+
+         \sstitem
+         The code is more robust if the C99 copysign() function is available.
+         This can recognize the -0.0 values returned by strtod. If copysign() is
+         missing we try to scan the string looking for minus signs.
+      }
+   }
+}
+\sstroutine{
+   palDh2e
+}{
+   Horizon to equatorial coordinates: Az,El to HA,Dec
+}{
+   \sstdescription{
+      Convert horizon to equatorial coordinates.
+   }
+   \sstinvocation{
+      palDh2e( double az, double el, double phi, double $*$ ha, double $*$ dec );
+   }
+   \sstarguments{
+      \sstsubsection{
+         az = double (Given)
+      }{
+         Azimuth (radians)
+      }
+      \sstsubsection{
+         el = double (Given)
+      }{
+         Elevation (radians)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observatory latitude (radians)
+      }
+      \sstsubsection{
+         ha = double $*$ (Returned)
+      }{
+         Hour angle (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Declination (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         All the arguments are angles in radians.
+
+         \sstitem
+         The sign convention for azimuth is north zero, east $+$pi/2.
+
+         \sstitem
+         HA is returned in the range $+$/-pi.  Declination is returned
+           in the range $+$/-pi/2.
+
+         \sstitem
+         The latitude is (in principle) geodetic.  In critical
+           applications, corrections for polar motion should be applied.
+
+         \sstitem
+         In some applications it will be important to specify the
+           correct type of elevation in order to produce the required
+           type of HA,Dec.  In particular, it may be important to
+           distinguish between the elevation as affected by refraction,
+           which will yield the {\tt "}observed{\tt "} HA,Dec, and the elevation
+           in vacuo, which will yield the {\tt "}topocentric{\tt "} HA,Dec.  If the
+           effects of diurnal aberration can be neglected, the
+           topocentric HA,Dec may be used as an approximation to the
+           {\tt "}apparent{\tt "} HA,Dec.
+
+         \sstitem
+         No range checking of arguments is done.
+
+         \sstitem
+         In applications which involve many such calculations, rather
+           than calling the present routine it will be more efficient to
+           use inline code, having previously computed fixed terms such
+           as sine and cosine of latitude.
+      }
+   }
+}
+\sstroutine{
+   palDjcal
+}{
+   Modified Julian Date to Gregorian Calendar
+}{
+   \sstdescription{
+      Modified Julian Date to Gregorian Calendar, expressed
+      in a form convenient for formatting messages (namely
+      rounded to a specified precision, and with the fields
+      stored in a single array)
+   }
+   \sstinvocation{
+      void palDjcal ( int ndp, double djm, int iymdf[4], int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ndp = int (Given)
+      }{
+         Number of decimal places of days in fraction.
+      }
+      \sstsubsection{
+         djm = double (Given)
+      }{
+         Modified Julian Date (JD-2400000.5)
+      }
+      \sstsubsection{
+         iymdf[4] = int[] (Returned)
+      }{
+         Year, month, day, fraction in Gregorian calendar.
+      }
+      \sstsubsection{
+         j = status (Returned)
+      }{
+         0 = OK. See eraJd2cal for other values.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraJd2cal
+      }
+   }
+}
+\sstroutine{
+   palDmat
+}{
+   Matrix inversion \& solution of simultaneous equations
+}{
+   \sstdescription{
+      Matrix inversion \& solution of simultaneous equations
+      For the set of n simultaneous equations in n unknowns:
+           A.Y = X
+      this routine calculates the inverse of A, the determinant
+      of matrix A and the vector of N unknowns.
+   }
+   \sstinvocation{
+      void palDmat( int n, double $*$a, double $*$y, double $*$d, int $*$jf,
+                     int $*$iw );
+   }
+   \sstarguments{
+      \sstsubsection{
+         n = int (Given)
+      }{
+         Number of simultaneous equations and number of unknowns.
+      }
+      \sstsubsection{
+         a = double[] (Given \& Returned)
+      }{
+         A non-singular NxN matrix (implemented as a contiguous block
+         of memory). After calling this routine {\tt "}a{\tt "} contains the
+         inverse of the matrix.
+      }
+      \sstsubsection{
+         y = double[] (Given \& Returned)
+      }{
+         On input the vector of N knowns. On exit this vector contains the
+         N solutions.
+      }
+      \sstsubsection{
+         d = double $*$ (Returned)
+      }{
+         The determinant.
+      }
+      \sstsubsection{
+         jf = int $*$ (Returned)
+      }{
+         The singularity flag.  If the matrix is non-singular, jf=0
+         is returned.  If the matrix is singular, jf=-1 \& d=0.0 are
+         returned.  In the latter case, the contents of array {\tt "}a{\tt "} on
+         return are undefined.
+      }
+      \sstsubsection{
+         iw = int[] (Given)
+      }{
+         Integer workspace of size N.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Implemented using Gaussian elimination with partial pivoting.
+
+         \sstitem
+         Optimized for speed rather than accuracy with errors 1 to 4
+           times those of routines optimized for accuracy.
+      }
+   }
+}
+\sstroutine{
+   palDs2tp
+}{
+   Spherical to tangent plane projection
+}{
+   \sstdescription{
+      Projection of spherical coordinates onto tangent plane:
+      {\tt "}gnomonic{\tt "} projection - {\tt "}standard coordinates{\tt "}
+   }
+   \sstinvocation{
+      palDs2tp( double ra, double dec, double raz, double decz,
+                double $*$xi, double $*$eta, int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ra = double (Given)
+      }{
+         RA spherical coordinate of point to be projected (radians)
+      }
+      \sstsubsection{
+         dec = double (Given)
+      }{
+         Dec spherical coordinate of point to be projected (radians)
+      }
+      \sstsubsection{
+         raz = double (Given)
+      }{
+         RA spherical coordinate of tangent point (radians)
+      }
+      \sstsubsection{
+         decz = double (Given)
+      }{
+         Dec spherical coordinate of tangent point (radians)
+      }
+      \sstsubsection{
+         xi = double $*$ (Returned)
+      }{
+         First rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         eta = double $*$ (Returned)
+      }{
+         Second rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         status: 0 = OK, star on tangent plane
+                 1 = error, star too far from axis
+                 2 = error, antistar on tangent plane
+                 3 = error, antistar too far from axis
+      }
+   }
+}
+\sstroutine{
+   palDat
+}{
+   Return offset between UTC and TAI
+}{
+   \sstdescription{
+      Increment to be applied to Coordinated Universal Time UTC to give
+      International Atomic Time (TAI).
+   }
+   \sstinvocation{
+      dat = palDat( double utc );
+   }
+   \sstarguments{
+      \sstsubsection{
+         utc = double (Given)
+      }{
+         UTC date as a modified JD (JD-2400000.5)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         dat = double
+      }{
+         TAI-UTC in seconds
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         This routine converts the MJD argument to calendar date before calling
+           the SOFA/ERFA eraDat function.
+
+         \sstitem
+         This routine matches the slaDat interface which differs from the eraDat
+           interface. Consider coding directly to the SOFA/ERFA interface.
+
+         \sstitem
+         See eraDat for a description of error conditions when calling this function
+           with a time outside of the UTC range.
+
+         \sstitem
+         The status argument from eraDat is ignored. This is reasonable since the
+           error codes are mainly related to incorrect calendar dates when calculating
+           the JD internally.
+      }
+   }
+}
+\sstroutine{
+   palDmoon
+}{
+   Approximate geocentric position and velocity of the Moon
+}{
+   \sstdescription{
+      Calculate the approximate geocentric position of the Moon
+      using a full implementation of the algorithm published by
+      Meeus (l{\tt '}Astronomie, June 1984, p348).
+   }
+   \sstinvocation{
+      void palDmoon( double date, double pv[6] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB as a Modified Julian Date (JD-2400000.5)
+      }
+      \sstsubsection{
+         pv = double [6] (Returned)
+      }{
+         Moon x,y,z,xdot,ydot,zdot, mean equator and
+         equinox of date (AU, AU/s)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in
+           latitude and 0.2 arcsec in HP (equivalent to about 20 km in
+           distance).  Comparison with JPL DE200 over the interval
+           1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in
+           longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km
+           and 81 mm/s in distance.  The maximum errors over the same
+           interval are 18 arcsec and 0.50 arcsec/hour in longitude,
+           11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s
+           in distance.
+
+         \sstitem
+         The original algorithm is expressed in terms of the obsolete
+           timescale Ephemeris Time.  Either TDB or TT can be used, but
+           not UT without incurring significant errors (30 arcsec at
+           the present time) due to the Moon{\tt '}s 0.5 arcsec/sec movement.
+
+         \sstitem
+         The algorithm is based on pre IAU 1976 standards.  However,
+           the result has been moved onto the new (FK5) equinox, an
+           adjustment which is in any case much smaller than the
+           intrinsic accuracy of the procedure.
+
+         \sstitem
+         Velocity is obtained by a complete analytical differentiation
+           of the Meeus model.
+      }
+   }
+}
+\sstroutine{
+   palDrange
+}{
+   Normalize angle into range $+$/- pi
+}{
+   \sstdescription{
+      The result is {\tt "}angle{\tt "} expressed in the range $+$/- pi. If the
+      supplied value for {\tt "}angle{\tt "} is equal to $+$/- pi, it is returned
+      unchanged.
+   }
+   \sstinvocation{
+      palDrange( double angle )
+   }
+   \sstarguments{
+      \sstsubsection{
+         angle = double (Given)
+      }{
+         The angle in radians.
+      }
+   }
+}
+\sstroutine{
+   palDt
+}{
+   Estimate the offset between dynamical time and UT
+}{
+   \sstdescription{
+      Estimate the offset between dynamical time and Universal Time
+      for a given historical epoch.
+   }
+   \sstinvocation{
+      double palDt( double epoch );
+   }
+   \sstarguments{
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Julian epoch (e.g. 1850.0)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         palDt = double
+      }{
+         Rough estimate of ET-UT (after 1984, TT-UT) at the
+         given epoch, in seconds.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Depending on the epoch, one of three parabolic approximations
+           is used:
+
+      }
+          before 979    Stephenson \& Morrison{\tt '}s 390 BC to AD 948 model
+          979 to 1708   Stephenson \& Morrison{\tt '}s 948 to 1600 model
+          after 1708    McCarthy \& Babcock{\tt '}s post-1650 model
+
+        The breakpoints are chosen to ensure continuity:  they occur
+        at places where the adjacent models give the same answer as
+        each other.
+      \sstitemlist{
+
+         \sstitem
+         The accuracy is modest, with errors of up to 20 sec during
+           the interval since 1650, rising to perhaps 30 min by 1000 BC.
+           Comparatively accurate values from AD 1600 are tabulated in
+           the Astronomical Almanac (see section K8 of the 1995 AA).
+
+         \sstitem
+         The use of double-precision for both argument and result is
+           purely for compatibility with other SLALIB time routines.
+
+         \sstitem
+         The models used are based on a lunar tidal acceleration value
+           of -26.00 arcsec per century.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Explanatory Supplement to the Astronomical Almanac,
+      ed P.K.Seidelmann, University Science Books (1992),
+      section 2.553, p83.  This contains references to
+      the Stephenson \& Morrison and McCarthy \& Babcock
+      papers.
+   }
+}
+\sstroutine{
+   palDtp2s
+}{
+   Tangent plane to spherical coordinates
+}{
+   \sstdescription{
+      Transform tangent plane coordinates into spherical.
+   }
+   \sstinvocation{
+      palDtp2s( double xi, double eta, double raz, double decz,
+                double $*$ra, double $*$dec);
+   }
+   \sstarguments{
+      \sstsubsection{
+         xi = double (Given)
+      }{
+         First rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         eta = double (Given)
+      }{
+         Second rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         raz = double (Given)
+      }{
+         RA spherical coordinate of tangent point (radians)
+      }
+      \sstsubsection{
+         decz = double (Given)
+      }{
+         Dec spherical coordinate of tangent point (radians)
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         RA spherical coordinate of point to be projected (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Dec spherical coordinate of point to be projected (radians)
+      }
+   }
+}
+\sstroutine{
+   palDtps2c
+}{
+   Determine RA,Dec of tangent point from coordinates
+}{
+   \sstdescription{
+      From the tangent plane coordinates of a star of known RA,Dec,
+      determine the RA,Dec of the tangent point.
+   }
+   \sstinvocation{
+      palDtps2c( double xi, double eta, double ra, double dec,
+                 double $*$ raz1, double decz1,
+                 double $*$ raz2, double decz2, int $*$n);
+   }
+   \sstarguments{
+      \sstsubsection{
+         xi = double (Given)
+      }{
+         First rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         eta = double (Given)
+      }{
+         Second rectangular coordinate on tangent plane (radians)
+      }
+      \sstsubsection{
+         ra = double (Given)
+      }{
+         RA spherical coordinate of star (radians)
+      }
+      \sstsubsection{
+         dec = double (Given)
+      }{
+         Dec spherical coordinate of star (radians)
+      }
+      \sstsubsection{
+         raz1 = double $*$ (Returned)
+      }{
+         RA spherical coordinate of tangent point, solution 1 (radians)
+      }
+      \sstsubsection{
+         decz1 = double $*$ (Returned)
+      }{
+         Dec spherical coordinate of tangent point, solution 1 (radians)
+      }
+      \sstsubsection{
+         raz2 = double $*$ (Returned)
+      }{
+         RA spherical coordinate of tangent point, solution 2 (radians)
+      }
+      \sstsubsection{
+         decz2 = double $*$ (Returned)
+      }{
+         Dec spherical coordinate of tangent point, solution 2 (radians)
+      }
+      \sstsubsection{
+         n = int $*$ (Returned)
+      }{
+         number of solutions: 0 = no solutions returned (note 2)
+                              1 = only the first solution is useful (note 3)
+                              2 = both solutions are useful (note 3)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The RAZ1 and RAZ2 values are returned in the range 0-2pi.
+
+         \sstitem
+         Cases where there is no solution can only arise near the poles.
+           For example, it is clearly impossible for a star at the pole
+           itself to have a non-zero XI value, and hence it is
+           meaningless to ask where the tangent point would have to be
+           to bring about this combination of XI and DEC.
+
+         \sstitem
+         Also near the poles, cases can arise where there are two useful
+           solutions.  The argument N indicates whether the second of the
+           two solutions returned is useful.  N=1 indicates only one useful
+           solution, the usual case;  under these circumstances, the second
+           solution corresponds to the {\tt "}over-the-pole{\tt "} case, and this is
+           reflected in the values of RAZ2 and DECZ2 which are returned.
+
+         \sstitem
+         The DECZ1 and DECZ2 values are returned in the range $+$/-pi, but
+           in the usual, non-pole-crossing, case, the range is $+$/-pi/2.
+
+         \sstitem
+         This routine is the spherical equivalent of the routine sla\_DTPV2C.
+      }
+   }
+}
+\sstroutine{
+   palDtt
+}{
+   Return offset between UTC and TT
+}{
+   \sstdescription{
+      Increment to be applied to Coordinated Universal Time UTC to give
+      Terrestrial Time TT (formerly Ephemeris Time ET)
+   }
+   \sstinvocation{
+      dtt = palDtt( double utc );
+   }
+   \sstarguments{
+      \sstsubsection{
+         utc = double (Given)
+      }{
+         UTC date as a modified JD (JD-2400000.5)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         dtt = double
+      }{
+         TT-UTC in seconds
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Consider a comprehensive upgrade to use the time transformations in SOFA{\tt '}s time
+           cookbook:  http://www.iausofa.org/sofa\_ts\_c.pdf.
+
+         \sstitem
+         See eraDat for a description of error conditions when calling this function
+           with a time outside of the UTC range. This behaviour differs from slaDtt.
+      }
+   }
+}
+\sstroutine{
+   palEcleq
+}{
+   Transform from ecliptic coordinates to J2000.0 equatorial coordinates
+}{
+   \sstdescription{
+      Transform from ecliptic coordinate to J2000.0 equatorial coordinates.
+   }
+   \sstinvocation{
+      void palEcleq ( double dl, double db, double date,
+                      double $*$dr, double $*$dd );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dl = double (Given)
+      }{
+         Ecliptic longitude (mean of date, IAU 1980 theory, radians)
+      }
+      \sstsubsection{
+         db = double (Given)
+      }{
+         Ecliptic latitude (mean of date, IAU 1980 theory, radians)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as Modified Julian Date (JD-2400000.5). The difference
+         between TT and TDB is of the order of a millisecond or two
+         (i.e. about 0.02 arc-seconds).
+      }
+      \sstsubsection{
+         dr = double $*$ (Returned)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         dd = double $*$ (Returned)
+      }{
+         J2000.0 mean Dec (Radians)
+      }
+   }
+}
+\sstroutine{
+   palEcmat
+}{
+   Form the equatorial to ecliptic rotation matrix - IAU 2006
+   precession model
+}{
+   \sstdescription{
+      The equatorial to ecliptic rotation matrix is found and returned.
+      The matrix is in the sense   V(ecl)  =  RMAT $*$ V(equ);  the
+      equator, equinox and ecliptic are mean of date.
+   }
+   \sstinvocation{
+      palEcmat( double date, double rmat[3][3] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as Modified Julian Date (JD-2400000.5). The difference
+         between TT and TDB is of the order of a millisecond or two
+         (i.e. about 0.02 arc-seconds).
+      }
+      \sstsubsection{
+         rmat = double[3][3] (Returned)
+      }{
+         Rotation matrix
+      }
+   }
+}
+\sstroutine{
+   palEl2ue
+}{
+   Transform conventional elements into {\tt "}universal{\tt "} form
+}{
+   \sstdescription{
+      Transform conventional osculating elements into {\tt "}universal{\tt "} form.
+   }
+   \sstinvocation{
+      void palEl2ue ( double date, int jform, double epoch, double orbinc,
+                      double anode, double perih, double aorq, double e,
+                      double aorl, double dm, double u[13], int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Epoch (TT MJD) of osculation (Note 3)
+      }
+      \sstsubsection{
+         jform = int (Given)
+      }{
+         Element set actually returned (1-3; Note 6)
+      }
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbinc = double (Given)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode = double (Given)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih = double (Given)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq = double (Given)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e = double (Given)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         aorl = double (Given)
+      }{
+         mean anomaly or longitude (radians, JFORM=1,2 only)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         daily motion (radians, JFORM=1 only)
+      }
+      \sstsubsection{
+         u = double [13] (Returned)
+      }{
+         Universal orbital elements (Note 1)
+         \sstitemlist{
+
+            \sstitem
+              (0)  combined mass (M$+$m)
+
+            \sstitem
+              (1)  total energy of the orbit (alpha)
+
+            \sstitem
+              (2)  reference (osculating) epoch (t0)
+
+            \sstitem
+              (3-5)  position at reference epoch (r0)
+
+            \sstitem
+              (6-8)  velocity at reference epoch (v0)
+
+            \sstitem
+              (9)  heliocentric distance at reference epoch
+
+            \sstitem
+              (10)  r0.v0
+
+            \sstitem
+              (11)  date (t)
+
+            \sstitem
+              (12)  universal eccentric anomaly (psi) of date, approx
+         }
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:  0 = OK
+         \sstitemlist{
+
+            \sstitem
+                  -1 = illegal JFORM
+
+            \sstitem
+                  -2 = illegal E
+
+            \sstitem
+                  -3 = illegal AORQ
+
+            \sstitem
+                  -4 = illegal DM
+
+            \sstitem
+                  -5 = numerical error
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The {\tt "}universal{\tt "} elements are those which define the orbit for the
+           purposes of the method of universal variables (see reference).
+           They consist of the combined mass of the two bodies, an epoch,
+           and the position and velocity vectors (arbitrary reference frame)
+           at that epoch.  The parameter set used here includes also various
+           quantities that can, in fact, be derived from the other
+           information.  This approach is taken to avoiding unnecessary
+           computation and loss of accuracy.  The supplementary quantities
+           are (i) alpha, which is proportional to the total energy of the
+           orbit, (ii) the heliocentric distance at epoch, (iii) the
+           outwards component of the velocity at the given epoch, (iv) an
+           estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+           date and (v) that date.
+
+         \sstitem
+         The companion routine is palUe2pv.  This takes the set of numbers
+           that the present routine outputs and uses them to derive the
+           object{\tt '}s position and velocity.  A single prediction requires one
+           call to the present routine followed by one call to palUe2pv;
+           for convenience, the two calls are packaged as the routine
+           palPlanel.  Multiple predictions may be made by again calling the
+           present routine once, but then calling palUe2pv multiple times,
+           which is faster than multiple calls to palPlanel.
+
+         \sstitem
+         DATE is the epoch of osculation.  It is in the TT timescale
+           (formerly Ephemeris Time, ET) and is a Modified Julian Date
+           (JD-2400000.5).
+
+         \sstitem
+         The supplied orbital elements are with respect to the J2000
+           ecliptic and equinox.  The position and velocity parameters
+           returned in the array U are with respect to the mean equator and
+           equinox of epoch J2000, and are for the perihelion prior to the
+           specified epoch.
+
+         \sstitem
+         The universal elements returned in the array U are in canonical
+           units (solar masses, AU and canonical days).
+
+         \sstitem
+         Three different element-format options are available:
+
+      }
+        Option JFORM=1, suitable for the major planets:
+
+        EPOCH  = epoch of elements (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = longitude of perihelion, curly pi (radians)
+        AORQ   = mean distance, a (AU)
+        E      = eccentricity, e (range 0 to $<$1)
+        AORL   = mean longitude L (radians)
+        DM     = daily motion (radians)
+
+        Option JFORM=2, suitable for minor planets:
+
+        EPOCH  = epoch of elements (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = argument of perihelion, little omega (radians)
+        AORQ   = mean distance, a (AU)
+        E      = eccentricity, e (range 0 to $<$1)
+        AORL   = mean anomaly M (radians)
+
+        Option JFORM=3, suitable for comets:
+
+        EPOCH  = epoch of perihelion (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = argument of perihelion, little omega (radians)
+        AORQ   = perihelion distance, q (AU)
+        E      = eccentricity, e (range 0 to 10)
+
+      \sstitemlist{
+
+         \sstitem
+         Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+           not accessed.
+
+         \sstitem
+         The algorithm was originally adapted from the EPHSLA program of
+           D.H.P.Jones (private communication, 1996).  The method is based
+           on Stumpff{\tt '}s Universal Variables.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Everhart \& Pitkin, Am.J.Phys. 51, 712 (1983).
+   }
+}
+\sstroutine{
+   palEpco
+}{
+   Convert an epoch into the appropriate form - {\tt '}B{\tt '} or {\tt '}J{\tt '}
+}{
+   \sstdescription{
+      Converts a Besselian or Julian epoch to a Julian or Besselian
+      epoch.
+   }
+   \sstinvocation{
+      double palEpco( char k0, char k, double e );
+   }
+   \sstarguments{
+      \sstsubsection{
+         k0 = char (Given)
+      }{
+         Form of result: {\tt '}B{\tt '}=Besselian, {\tt '}J{\tt '}=Julian
+      }
+      \sstsubsection{
+         k = char (Given)
+      }{
+         Form of given epoch: {\tt '}B{\tt '} or {\tt '}J{\tt '}.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The result is always either equal to or very close to
+           the given epoch E.  The routine is required only in
+           applications where punctilious treatment of heterogeneous
+           mixtures of star positions is necessary.
+
+         \sstitem
+         k and k0 are case insensitive. This differes slightly from the
+           Fortran SLA implementation.
+
+         \sstitem
+         k and k0 are not validated. They are interpreted as follows:
+           o If k0 and k are the same the result is e
+           o If k0 is {\tt '}b{\tt '} or {\tt '}B{\tt '} and k isn{\tt '}t the conversion is J to B.
+           o In all other cases, the conversion is B to J.
+      }
+   }
+}
+\sstroutine{
+   palEpv
+}{
+   Earth position and velocity with respect to the BCRS
+}{
+   \sstdescription{
+      Earth position and velocity, heliocentric and barycentric, with
+      respect to the Barycentric Celestial Reference System.
+   }
+   \sstinvocation{
+      void palEpv( double date, double ph[3], double vh[3],
+                   double pb[3], double vb[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Date, TDB Modified Julian Date (JD-2400000.5)
+      }
+      \sstsubsection{
+         ph = double [3] (Returned)
+      }{
+         Heliocentric Earth position (AU)
+      }
+      \sstsubsection{
+         vh = double [3] (Returned)
+      }{
+         Heliocentric Earth velocity (AU/day)
+      }
+      \sstsubsection{
+         pb = double [3] (Returned)
+      }{
+         Barycentric Earth position (AU)
+      }
+      \sstsubsection{
+         vb = double [3] (Returned)
+      }{
+         Barycentric Earth velocity (AU/day)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         See eraEpv00 for details on accuracy
+
+         \sstitem
+         Note that the status argument from eraEpv00 is ignored
+      }
+   }
+}
+\sstroutine{
+   palEtrms
+}{
+   Compute the E-terms vector
+}{
+   \sstdescription{
+      Computes the E-terms (elliptic component of annual aberration)
+      vector.
+
+      Note the use of the J2000 aberration constant (20.49552 arcsec).
+      This is a reflection of the fact that the E-terms embodied in
+      existing star catalogues were computed from a variety of
+      aberration constants.  Rather than adopting one of the old
+      constants the latest value is used here.
+   }
+   \sstinvocation{
+      void palEtrms ( double ep, double ev[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ep = double (Given)
+      }{
+         Besselian epoch
+      }
+      \sstsubsection{
+         ev = double [3] (Returned)
+      }{
+         E-terms as (dx,dy,dz)
+      }
+   }
+   \sstdiytopic{
+      See also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Smith, C.A. et al., 1989.  Astr.J. 97, 265.
+
+         \sstitem
+         Yallop, B.D. et al., 1989.  Astr.J. 97, 274.
+      }
+   }
+}
+\sstroutine{
+   palEqecl
+}{
+   Transform from J2000.0 equatorial coordinates to ecliptic coordinates
+}{
+   \sstdescription{
+      Transform from J2000.0 equatorial coordinates to ecliptic coordinates.
+   }
+   \sstinvocation{
+      void palEqecl( double dr, double dd, double date,
+                     double $*$dl, double $*$db);
+   }
+   \sstarguments{
+      \sstsubsection{
+         dr = double (Given)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         dd = double (Given)
+      }{
+         J2000.0 mean Dec (Radians)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as Modified Julian Date (JD-2400000.5). The difference
+         between TT and TDB is of the order of a millisecond or two
+         (i.e. about 0.02 arc-seconds).
+      }
+      \sstsubsection{
+         dl = double $*$ (Returned)
+      }{
+         Ecliptic longitude (mean of date, IAU 1980 theory, radians)
+      }
+      \sstsubsection{
+         db = double $*$ (Returned)
+      }{
+         Ecliptic latitude (mean of date, IAU 1980 theory, radians)
+      }
+   }
+}
+\sstroutine{
+   palEqgal
+}{
+   Convert from J2000.0 equatorial coordinates to Galactic
+}{
+   \sstdescription{
+      Transformation from J2000.0 equatorial coordinates
+      to IAU 1958 galactic coordinates.
+   }
+   \sstinvocation{
+      void palEqgal ( double dr, double dd, double $*$dl, double $*$db );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dr = double (Given)
+      }{
+         J2000.0 RA (radians)
+      }
+      \sstsubsection{
+         dd = double (Given)
+      }{
+         J2000.0 Dec (radians
+      }
+      \sstsubsection{
+         dl = double $*$ (Returned)
+      }{
+         Galactic longitude (radians).
+      }
+      \sstsubsection{
+         db = double $*$ (Returned)
+      }{
+         Galactic latitude (radians).
+      }
+   }
+   \sstnotes{
+      The equatorial coordinates are J2000.0.  Use the routine
+      palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is
+      required.
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+   }
+}
+\sstroutine{
+   palEvp
+}{
+   Returns the barycentric and heliocentric velocity and position of the
+   Earth
+}{
+   \sstdescription{
+      Returns the barycentric and heliocentric velocity and position of the
+      Earth at a given epoch, given with respect to a specified equinox.
+      For information about accuracy, see the function eraEpv00.
+   }
+   \sstinvocation{
+      void palEvp( double date, double deqx, double dvb[3], double dpb[3],
+                   double dvh[3], double dph[3] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB (loosely ET) as a Modified Julian Date (JD-2400000.5)
+      }
+      \sstsubsection{
+         deqx = double (Given)
+      }{
+         Julian epoch (e.g. 2000.0) of mean equator and equinox of the
+         vectors returned.  If deqx $<$= 0.0, all vectors are referred to the
+         mean equator and equinox (FK5) of epoch date.
+      }
+      \sstsubsection{
+         dvb = double[3] (Returned)
+      }{
+         Barycentric velocity (AU/s, AU)
+      }
+      \sstsubsection{
+         dpb = double[3] (Returned)
+      }{
+         Barycentric position (AU/s, AU)
+      }
+      \sstsubsection{
+         dvh = double[3] (Returned)
+      }{
+         heliocentric velocity (AU/s, AU)
+      }
+      \sstsubsection{
+         dph = double[3] (Returned)
+      }{
+         Heliocentric position (AU/s, AU)
+      }
+   }
+}
+\sstroutine{
+   palFk45z
+}{
+   Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+   proper motion in the FK5 frame
+}{
+   \sstdescription{
+      Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+      proper motion in the FK5 frame (double precision)
+
+      This function converts stars from the Bessel-Newcomb, FK4
+      system to the IAU 1976, FK5, Fricke system, in such a
+      way that the FK5 proper motion is zero.  Because such a star
+      has, in general, a non-zero proper motion in the FK4 system,
+      the routine requires the epoch at which the position in the
+      FK4 system was determined.
+
+      The method is from Appendix 2 of Ref 1, but using the constants
+      of Ref 4.
+   }
+   \sstinvocation{
+      palFk45z( double r1950, double d1950, double bepoch, double $*$r2000,
+                double $*$d2000 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r1950 = double (Given)
+      }{
+         B1950.0 FK4 RA at epoch (radians).
+      }
+      \sstsubsection{
+         d1950 = double (Given)
+      }{
+         B1950.0 FK4 Dec at epoch (radians).
+      }
+      \sstsubsection{
+         bepoch = double (Given)
+      }{
+         Besselian epoch (e.g. 1979.3)
+      }
+      \sstsubsection{
+         r2000 = double (Returned)
+      }{
+         J2000.0 FK5 RA (Radians).
+      }
+      \sstsubsection{
+         d2000 = double (Returned)
+      }{
+         J2000.0 FK5 Dec(Radians).
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The epoch BEPOCH is strictly speaking Besselian, but if a
+         Julian epoch is supplied the result will be affected only to
+         a negligible extent.
+
+         \sstitem
+         Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0
+         only is provided for.  Conversions involving other epochs will
+         require use of the appropriate precession, proper motion, and
+         E-terms routines before and/or after palFk45z is called.
+
+         \sstitem
+         In the FK4 catalogue the proper motions of stars within 10
+         degrees of the poles do not embody the differential E-term effect
+         and should, strictly speaking, be handled in a different manner
+         from stars outside these regions. However, given the general lack
+         of homogeneity of the star data available for routine astrometry,
+         the difficulties of handling positions that may have been
+         determined from astrometric fields spanning the polar and non-polar
+         regions, the likelihood that the differential E-terms effect was not
+         taken into account when allowing for proper motion in past
+         astrometry, and the undesirability of a discontinuity in the
+         algorithm, the decision has been made in this routine to include the
+         effect of differential E-terms on the proper motions for all stars,
+         whether polar or not.  At epoch 2000, and measuring on the sky rather
+         than in terms of dRA, the errors resulting from this simplification
+         are less than 1 milliarcsecond in position and 1 milliarcsecond per
+         century in proper motion.
+      }
+   }
+   \sstdiytopic{
+      References
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Aoki,S., et al, 1983.  Astron.Astrophys., 128, 263.
+
+         \sstitem
+         Smith, C.A. et al, 1989.  {\tt "}The transformation of astrometric
+           catalog systems to the equinox J2000.0{\tt "}.  Astron.J. 97, 265.
+
+         \sstitem
+         Yallop, B.D. et al, 1989.  {\tt "}Transformation of mean star places
+           from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}.
+           Astron.J. 97, 274.
+
+         \sstitem
+         Seidelmann, P.K. (ed), 1992.  {\tt "}Explanatory Supplement to
+           the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7.
+      }
+   }
+}
+\sstroutine{
+   palFk524
+}{
+   Convert J2000.0 FK5 star data to B1950.0 FK4
+}{
+   \sstdescription{
+      This function converts stars from the IAU 1976, FK5, Fricke
+      system, to the Bessel-Newcomb, FK4 system.  The precepts
+      of Smith et al (Ref 1) are followed, using the implementation
+      by Yallop et al (Ref 2) of a matrix method due to Standish.
+      Kinoshita{\tt '}s development of Andoyer{\tt '}s post-Newcomb precession is
+      used.  The numerical constants from Seidelmann et al (Ref 3) are
+      used canonically.
+   }
+   \sstinvocation{
+      palFk524( double r2000, double d2000, double dr2000, double dd2000,
+                double p2000, double v2000, double $*$r1950, double $*$d1950,
+                double $*$dr1950, double $*$dd1950, double $*$p1950, double $*$v1950 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 FK5 RA (radians).
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 FK5 Dec (radians).
+      }
+      \sstsubsection{
+         dr2000 = double (Given)
+      }{
+         J2000.0 FK5 RA proper motion (rad/Jul.yr)
+      }
+      \sstsubsection{
+         dd2000 = double (Given)
+      }{
+         J2000.0 FK5 Dec proper motion (rad/Jul.yr)
+      }
+      \sstsubsection{
+         p2000 = double (Given)
+      }{
+         J2000.0 FK5 parallax (arcsec)
+      }
+      \sstsubsection{
+         v2000 = double (Given)
+      }{
+         J2000.0 FK5 radial velocity (km/s, $+$ve = moving away)
+      }
+      \sstsubsection{
+         r1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 RA (radians).
+      }
+      \sstsubsection{
+         d1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 Dec (radians).
+      }
+      \sstsubsection{
+         dr1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 RA proper motion (rad/Jul.yr)
+      }
+      \sstsubsection{
+         dd1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 Dec proper motion (rad/Jul.yr)
+      }
+      \sstsubsection{
+         p1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 parallax (arcsec)
+      }
+      \sstsubsection{
+         v1950 = double $*$ (Returned)
+      }{
+         B1950.0 FK4 radial velocity (km/s, $+$ve = moving away)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The proper motions in RA are dRA/dt rather than
+         cos(Dec)$*$dRA/dt, and are per year rather than per century.
+
+         \sstitem
+         Note that conversion from Julian epoch 2000.0 to Besselian
+         epoch 1950.0 only is provided for.  Conversions involving
+         other epochs will require use of the appropriate precession,
+         proper motion, and E-terms routines before and/or after
+         FK524 is called.
+
+         \sstitem
+         In the FK4 catalogue the proper motions of stars within
+         10 degrees of the poles do not embody the differential
+         E-term effect and should, strictly speaking, be handled
+         in a different manner from stars outside these regions.
+         However, given the general lack of homogeneity of the star
+         data available for routine astrometry, the difficulties of
+         handling positions that may have been determined from
+         astrometric fields spanning the polar and non-polar regions,
+         the likelihood that the differential E-terms effect was not
+         taken into account when allowing for proper motion in past
+         astrometry, and the undesirability of a discontinuity in
+         the algorithm, the decision has been made in this routine to
+         include the effect of differential E-terms on the proper
+         motions for all stars, whether polar or not.  At epoch 2000,
+         and measuring on the sky rather than in terms of dRA, the
+         errors resulting from this simplification are less than
+         1 milliarcsecond in position and 1 milliarcsecond per
+         century in proper motion.
+      }
+   }
+   \sstdiytopic{
+      References
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Smith, C.A. et al, 1989.  {\tt "}The transformation of astrometric
+           catalog systems to the equinox J2000.0{\tt "}.  Astron.J. 97, 265.
+
+         \sstitem
+         Yallop, B.D. et al, 1989.  {\tt "}Transformation of mean star places
+           from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}.
+           Astron.J. 97, 274.
+
+         \sstitem
+         Seidelmann, P.K. (ed), 1992.  {\tt "}Explanatory Supplement to
+           the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7.
+      }
+   }
+}
+\sstroutine{
+   palFk54z
+}{
+   Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming
+   zero proper motion and parallax
+}{
+   \sstdescription{
+      This function converts star positions from the IAU 1976,
+      FK5, Fricke system to the Bessel-Newcomb, FK4 system.
+   }
+   \sstinvocation{
+      palFk54z( double r2000, double d2000, double bepoch, double $*$r1950,
+                double $*$d1950, double $*$dr1950, double $*$dd1950 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 FK5 RA (radians).
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 FK5 Dec (radians).
+      }
+      \sstsubsection{
+         bepoch = double (Given)
+      }{
+         Besselian epoch (e.g. 1950.0).
+      }
+      \sstsubsection{
+         r1950 = double $*$ (Returned)
+      }{
+         B1950 FK4 RA (radians) at epoch {\tt "}bepoch{\tt "}.
+      }
+      \sstsubsection{
+         d1950 = double $*$ (Returned)
+      }{
+         B1950 FK4 Dec (radians) at epoch {\tt "}bepoch{\tt "}.
+      }
+      \sstsubsection{
+         dr1950 = double $*$ (Returned)
+      }{
+         B1950 FK4 proper motion (RA) (radians/trop.yr)).
+      }
+      \sstsubsection{
+         dr1950 = double $*$ (Returned)
+      }{
+         B1950 FK4 proper motion (Dec) (radians/trop.yr)).
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The proper motion in RA is dRA/dt rather than cos(Dec)$*$dRA/dt.
+
+         \sstitem
+         Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0
+         only is provided for.  Conversions involving other epochs will
+         require use of the appropriate precession functions before and
+         after this function is called.
+
+         \sstitem
+         The FK5 proper motions, the parallax and the radial velocity
+          are presumed zero.
+
+         \sstitem
+         It is the intention that FK5 should be a close approximation
+         to an inertial frame, so that distant objects have zero proper
+         motion;  such objects have (in general) non-zero proper motion
+         in FK4, and this function returns those fictitious proper
+         motions.
+
+         \sstitem
+         The position returned by this function is in the B1950
+         reference frame but at Besselian epoch BEPOCH.  For comparison
+         with catalogues the {\tt "}bepoch{\tt "} argument will frequently be 1950.0.
+      }
+   }
+}
+\sstroutine{
+   palGaleq
+}{
+   Convert from galactic to J2000.0 equatorial coordinates
+}{
+   \sstdescription{
+      Transformation from IAU 1958 galactic coordinates to
+      J2000.0 equatorial coordinates.
+   }
+   \sstinvocation{
+      void palGaleq ( double dl, double db, double $*$dr, double $*$dd );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dl = double (Given)
+      }{
+         Galactic longitude (radians).
+      }
+      \sstsubsection{
+         db = double (Given)
+      }{
+         Galactic latitude (radians).
+      }
+      \sstsubsection{
+         dr = double $*$ (Returned)
+      }{
+         J2000.0 RA (radians)
+      }
+      \sstsubsection{
+         dd = double $*$ (Returned)
+      }{
+         J2000.0 Dec (radians)
+      }
+   }
+   \sstnotes{
+      The equatorial coordinates are J2000.0.  Use the routine
+      palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is
+      required.
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+   }
+}
+\sstroutine{
+   palGalsup
+}{
+   Convert from galactic to supergalactic coordinates
+}{
+   \sstdescription{
+      Transformation from IAU 1958 galactic coordinates to
+      de Vaucouleurs supergalactic coordinates.
+   }
+   \sstinvocation{
+      void palGalsup ( double dl, double db, double $*$dsl, double $*$dsb );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dl = double (Given)
+      }{
+         Galactic longitude.
+      }
+      \sstsubsection{
+         db = double (Given)
+      }{
+         Galactic latitude.
+      }
+      \sstsubsection{
+         dsl = double $*$ (Returned)
+      }{
+         Supergalactic longitude.
+      }
+      \sstsubsection{
+         dsb = double $*$ (Returned)
+      }{
+         Supergalactic latitude.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+          de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference
+            Catalogue of Bright Galaxies, U. Texas, page 8.
+
+         \sstitem
+          Systems \& Applied Sciences Corp., Documentation for the
+            machine-readable version of the above catalogue,
+            Contract NAS 5-26490.
+
+      }
+      (These two references give different values for the galactic
+       longitude of the supergalactic origin.  Both are wrong;  the
+       correct value is L2=137.37.)
+   }
+}
+\sstroutine{
+   palGe50
+}{
+   Transform Galactic Coordinate to B1950 FK4
+}{
+   \sstdescription{
+      Transformation from IAU 1958 galactic coordinates to
+      B1950.0 {\tt '}FK4{\tt '} equatorial coordinates.
+   }
+   \sstinvocation{
+      palGe50( double dl, double db, double $*$dr, double $*$dd );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dl = double (Given)
+      }{
+         Galactic longitude (radians)
+      }
+      \sstsubsection{
+         db = double (Given)
+      }{
+         Galactic latitude (radians)
+      }
+      \sstsubsection{
+         dr = double $*$ (Returned)
+      }{
+         B9150.0 FK4 RA.
+      }
+      \sstsubsection{
+         dd = double $*$ (Returned)
+      }{
+         B1950.0 FK4 Dec.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The equatorial coordinates are B1950.0 {\tt '}FK4{\tt '}. Use the routine
+         palGaleq if conversion to J2000.0 coordinates is required.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+      }
+   }
+}
+\sstroutine{
+   palGeoc
+}{
+   Convert geodetic position to geocentric
+}{
+   \sstdescription{
+      Convert geodetic position to geocentric.
+   }
+   \sstinvocation{
+      void palGeoc( double p, double h, double $*$ r, double $*$z );
+   }
+   \sstarguments{
+      \sstsubsection{
+         p = double (Given)
+      }{
+         latitude (radians)
+      }
+      \sstsubsection{
+         h = double (Given)
+      }{
+         height above reference spheroid (geodetic, metres)
+      }
+      \sstsubsection{
+         r = double $*$ (Returned)
+      }{
+         distance from Earth axis (AU)
+      }
+      \sstsubsection{
+         z = double $*$ (Returned)
+      }{
+         distance from plane of Earth equator (AU)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Geocentric latitude can be obtained by evaluating atan2(z,r)
+
+         \sstitem
+         Uses WGS84 reference ellipsoid and calls eraGd2gc
+      }
+   }
+}
+\sstroutine{
+   palIntin
+}{
+   Convert free-format input into an integer
+}{
+   \sstdescription{
+      Extracts a number from an input string starting at the specified
+      index.
+   }
+   \sstinvocation{
+      void palIntin( const char $*$ string, int $*$nstrt,
+                      long $*$ireslt, int $*$jflag );
+   }
+   \sstarguments{
+      \sstsubsection{
+         string = const char $*$ (Given)
+      }{
+         String containing number to be decoded.
+      }
+      \sstsubsection{
+         nstrt = int $*$ (Given and Returned)
+      }{
+         Character number indicating where decoding should start.
+         On output its value is updated to be the location of the
+         possible next value. For compatibility with SLA the first
+         character is index 1.
+      }
+      \sstsubsection{
+         ireslt = long $*$ (Returned)
+      }{
+         Result. Not updated when jflag=1.
+      }
+      \sstsubsection{
+         jflag = int $*$ (Returned)
+      }{
+         status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses the strtol() system call to do the parsing. This may lead to
+           subtle differences when compared to the SLA/F parsing.
+
+         \sstitem
+         Commas are recognized as a special case and are skipped if one happens
+           to be the next character when updating nstrt. Additionally the output
+           nstrt position will skip past any trailing space.
+
+         \sstitem
+         If no number can be found flag will be set to 1.
+
+         \sstitem
+         If the number overflows or underflows jflag will be set to 2. For overflow
+           the returned result will have the value LONG\_MAX, for underflow it
+           will have the value LONG\_MIN.
+      }
+   }
+}
+\sstroutine{
+   palMap
+}{
+   Convert star RA,Dec from mean place to geocentric apparent
+}{
+   \sstdescription{
+      Convert star RA,Dec from mean place to geocentric apparent.
+   }
+   \sstinvocation{
+      void palMap( double rm, double dm, double pr, double pd,
+                   double px, double rv, double eq, double date,
+                   double $*$ra, double $*$da );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rm = double (Given)
+      }{
+         Mean RA (radians)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         Mean declination (radians)
+      }
+      \sstsubsection{
+         pr = double (Given)
+      }{
+         RA proper motion, changes per Julian year (radians)
+      }
+      \sstsubsection{
+         pd = double (Given)
+      }{
+         Dec proper motion, changes per Julian year (radians)
+      }
+      \sstsubsection{
+         px = double (Given)
+      }{
+         Parallax (arcsec)
+      }
+      \sstsubsection{
+         rv = double (Given)
+      }{
+         Radial velocity (km/s, $+$ve if receding)
+      }
+      \sstsubsection{
+         eq = double (Given)
+      }{
+         Epoch and equinox of star data (Julian)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB for apparent place (JD-2400000.5)
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         Apparent RA (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Apparent dec (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Calls palMappa and palMapqk
+
+         \sstitem
+         The reference systems and timescales used are IAU 2006.
+
+         \sstitem
+         EQ is the Julian epoch specifying both the reference frame and
+           the epoch of the position - usually 2000.  For positions where
+           the epoch and equinox are different, use the routine palPm to
+           apply proper motion corrections before using this routine.
+
+         \sstitem
+         The distinction between the required TDB and TT is always
+           negligible.  Moreover, for all but the most critical
+           applications UTC is adequate.
+
+         \sstitem
+         The proper motions in RA are dRA/dt rather than cos(Dec)$*$dRA/dt.
+
+         \sstitem
+         This routine may be wasteful for some applications because it
+           recomputes the Earth position/velocity and the precession-
+           nutation matrix each time, and because it allows for parallax
+           and proper motion.  Where multiple transformations are to be
+           carried out for one epoch, a faster method is to call the
+           palMappa routine once and then either the palMapqk routine
+           (which includes parallax and proper motion) or palMapqkz (which
+           assumes zero parallax and proper motion).
+
+         \sstitem
+         The accuracy is sub-milliarcsecond, limited by the
+           precession-nutation model (see palPrenut for details).
+
+         \sstitem
+         The accuracy is further limited by the routine palEvp, called
+           by palMappa, which computes the Earth position and velocity.
+           See eraEpv00 for details on that calculation.
+      }
+   }
+}
+\sstroutine{
+   palMappa
+}{
+   Compute parameters needed by palAmpqk and palMapqk
+}{
+   \sstdescription{
+      Compute star-independent parameters in preparation for
+      transformations between mean place and geocentric apparent place.
+
+      The parameters produced by this function are required in the
+      parallax, aberration, and nutation/bias/precession parts of the
+      mean/apparent transformations.
+
+      The reference systems and timescales used are IAU 2006.
+   }
+   \sstinvocation{
+      void palMappa( double eq, double date, double amprms[21] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         eq = double (Given)
+      }{
+         epoch of mean equinox to be used (Julian)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB (JD-2400000.5)
+      }
+      \sstsubsection{
+         amprms =   double[21]  (Returned)
+      }{
+         star-independent mean-to-apparent parameters:
+         \sstitemlist{
+
+            \sstitem
+            (0)      time interval for proper motion (Julian years)
+
+            \sstitem
+            (1-3)    barycentric position of the Earth (AU)
+
+            \sstitem
+            (4-6)    heliocentric direction of the Earth (unit vector)
+
+            \sstitem
+            (7)      (grav rad Sun)$*$2/(Sun-Earth distance)
+
+            \sstitem
+            (8-10)   abv: barycentric Earth velocity in units of c
+
+            \sstitem
+            (11)     sqrt(1-v$*$$*$2) where v=modulus(abv)
+
+            \sstitem
+            (12-20)  precession/nutation (3,3) matrix
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         For date, the distinction between the required TDB and TT
+         is always negligible.  Moreover, for all but the most
+         critical applications UTC is adequate.
+
+         \sstitem
+         The vector amprms(1-3) is referred to the mean equinox and
+         equator of epoch eq.
+
+         \sstitem
+         The parameters amprms produced by this function are used by
+         palAmpqk, palMapqk and palMapqkz.
+      }
+   }
+}
+\sstroutine{
+   palMapqk
+}{
+   Quick mean to apparent place
+}{
+   \sstdescription{
+      Quick mean to apparent place:  transform a star RA,Dec from
+      mean place to geocentric apparent place, given the
+      star-independent parameters.
+
+      Use of this routine is appropriate when efficiency is important
+      and where many star positions, all referred to the same equator
+      and equinox, are to be transformed for one epoch.  The
+      star-independent parameters can be obtained by calling the
+      palMappa routine.
+
+      If the parallax and proper motions are zero the palMapqkz
+      routine can be used instead.
+   }
+   \sstinvocation{
+      void palMapqk ( double rm, double dm, double pr, double pd,
+                      double px, double rv, double amprms[21],
+                      double $*$ra, double $*$da );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rm = double (Given)
+      }{
+         Mean RA (radians)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         Mean declination (radians)
+      }
+      \sstsubsection{
+         pr = double (Given)
+      }{
+         RA proper motion, changes per Julian year (radians)
+      }
+      \sstsubsection{
+         pd = double (Given)
+      }{
+         Dec proper motion, changes per Julian year (radians)
+      }
+      \sstsubsection{
+         px = double (Given)
+      }{
+         Parallax (arcsec)
+      }
+      \sstsubsection{
+         rv = double (Given)
+      }{
+         Radial velocity (km/s, $+$ve if receding)
+      }
+      \sstsubsection{
+         amprms = double [21] (Given)
+      }{
+         Star-independent mean-to-apparent parameters (see palMappa).
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         Apparent RA (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Apparent dec (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The reference frames and timescales used are post IAU 2006.
+      }
+   }
+}
+\sstroutine{
+   palMapqkz
+}{
+   Quick mean to apparent place
+}{
+   \sstdescription{
+      Quick mean to apparent place:  transform a star RA,dec from
+      mean place to geocentric apparent place, given the
+      star-independent parameters, and assuming zero parallax
+      and proper motion.
+
+      Use of this function is appropriate when efficiency is important
+      and where many star positions, all with parallax and proper
+      motion either zero or already allowed for, and all referred to
+      the same equator and equinox, are to be transformed for one
+      epoch.  The star-independent parameters can be obtained by
+      calling the palMappa function.
+
+      The corresponding function for the case of non-zero parallax
+      and proper motion is palMapqk.
+
+      The reference systems and timescales used are IAU 2006.
+
+      Strictly speaking, the function is not valid for solar-system
+      sources, though the error will usually be extremely small.
+   }
+   \sstinvocation{
+      void palMapqkz( double rm, double dm, double amprms[21],
+                      double $*$ra, double $*$da )
+   }
+   \sstarguments{
+      \sstsubsection{
+         rm = double (Given)
+      }{
+         Mean RA (radians).
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         Mean Dec (radians).
+      }
+      \sstsubsection{
+         amprms = double[21] (Given)
+      }{
+         Star-independent mean-to-apparent parameters (see palMappa):
+         (0-3)    not used
+         (4-6)    not used
+         (7)      not used
+         (8-10)   abv: barycentric Earth velocity in units of c
+         (11)     sqrt(1-v$*$$*$2) where v=modulus(abv)
+         (12-20)  precession/nutation (3,3) matrix
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         Apparent RA (radians).
+      }
+      \sstsubsection{
+         da = double $*$ (Returned)
+      }{
+         Apparent Dec (radians).
+      }
+   }
+}
+\sstroutine{
+   palNut
+}{
+   Form the matrix of nutation
+}{
+   \sstdescription{
+      Form the matrix of nutation for a given date using
+      the IAU 2006 nutation model and palDeuler.
+   }
+   \sstinvocation{
+      void palNut( double date, double rmatn[3][3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as modified Julian date (JD-2400000.5)
+      }
+      \sstsubsection{
+         rmatn = double [3][3] (Returned)
+      }{
+         Nutation matrix in the sense v(true)=rmatn $*$ v(mean)
+         where v(true) is the star vector relative to the
+         true equator and equinox of date and v(mean) is the
+         star vector relative to the mean equator and equinox
+         of date.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraNut06a via palNutc
+
+         \sstitem
+         The distinction between TDB and TT is negligible. For all but
+           the most critical applications UTC is adequate.
+      }
+   }
+}
+\sstroutine{
+   palNutc
+}{
+   Calculate nutation longitude \& obliquoty components
+}{
+   \sstdescription{
+      Calculates the longitude $*$ obliquity components and mean obliquity
+      using the SOFA/ERFA library.
+   }
+   \sstinvocation{
+      void palNutc( double date, double $*$ dpsi, double $*$deps, double $*$eps0 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT as modified Julian date (JD-2400000.5)
+      }
+      \sstsubsection{
+         dpsi = double $*$ (Returned)
+      }{
+         Nutation in longitude
+      }
+      \sstsubsection{
+         deps = double $*$ (Returned)
+      }{
+         Nutation in obliquity
+      }
+      \sstsubsection{
+         eps0 = double $*$ (Returned)
+      }{
+         Mean obliquity.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Calls eraObl06 and eraNut06a and therefore uses the IAU 206
+           precession/nutation model.
+
+         \sstitem
+         Note the change from SLA/F regarding the date. TT is used
+           rather than TDB.
+      }
+   }
+}
+\sstroutine{
+   palOap
+}{
+   Observed to apparent place
+}{
+   \sstdescription{
+      Observed to apparent place.
+   }
+   \sstinvocation{
+      void palOap ( const char $*$type, double ob1, double ob2, double date,
+                    double dut, double elongm, double phim, double hm,
+                    double xp, double yp, double tdk, double pmb,
+                    double rh, double wl, double tlr,
+                    double $*$rap, double $*$dap );
+   }
+   \sstarguments{
+      \sstsubsection{
+         type = const char $*$ (Given)
+      }{
+         Type of coordinates - {\tt '}R{\tt '}, {\tt '}H{\tt '} or {\tt '}A{\tt '} (see below)
+      }
+      \sstsubsection{
+         ob1 = double (Given)
+      }{
+         Observed Az, HA or RA (radians; Az is N=0;E=90)
+      }
+      \sstsubsection{
+         ob2 = double (Given)
+      }{
+         Observed ZD or Dec (radians)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         UTC date/time (Modified Julian Date, JD-2400000.5)
+      }
+      \sstsubsection{
+         dut = double (Given)
+      }{
+         delta UT: UT1-UTC (UTC seconds)
+      }
+      \sstsubsection{
+         elongm = double (Given)
+      }{
+         Mean longitude of the observer (radians, east $+$ve)
+      }
+      \sstsubsection{
+         phim = double (Given)
+      }{
+         Mean geodetic latitude of the observer (radians)
+      }
+      \sstsubsection{
+         hm = double (Given)
+      }{
+         Observer{\tt '}s height above sea level (metres)
+      }
+      \sstsubsection{
+         xp = double (Given)
+      }{
+         Polar motion x-coordinates (radians)
+      }
+      \sstsubsection{
+         yp = double (Given)
+      }{
+         Polar motion y-coordinates (radians)
+      }
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Local ambient temperature (K; std=273.15)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Local atmospheric pressure (mb; std=1013.25)
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Local relative humidity (in the range 0.0-1.0)
+      }
+      \sstsubsection{
+         wl = double (Given)
+      }{
+         Effective wavelength (micron, e.g. 0.55)
+      }
+      \sstsubsection{
+         tlr = double (Given)
+      }{
+         Tropospheric laps rate (K/metre, e.g. 0.0065)
+      }
+      \sstsubsection{
+         rap = double $*$ (Given)
+      }{
+         Geocentric apparent right ascension
+      }
+      \sstsubsection{
+         dap = double $*$ (Given)
+      }{
+         Geocentric apparent declination
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Only the first character of the TYPE argument is significant.
+         {\tt '}R{\tt '} or {\tt '}r{\tt '} indicates that OBS1 and OBS2 are the observed right
+         ascension and declination;  {\tt '}H{\tt '} or {\tt '}h{\tt '} indicates that they are
+         hour angle (west $+$ve) and declination;  anything else ({\tt '}A{\tt '} or
+         {\tt '}a{\tt '} is recommended) indicates that OBS1 and OBS2 are azimuth
+         (north zero, east 90 deg) and zenith distance.  (Zenith
+         distance is used rather than elevation in order to reflect the
+         fact that no allowance is made for depression of the horizon.)
+
+         \sstitem
+         The accuracy of the result is limited by the corrections for
+         refraction.  Providing the meteorological parameters are
+         known accurately and there are no gross local effects, the
+         predicted apparent RA,Dec should be within about 0.1 arcsec
+         for a zenith distance of less than 70 degrees.  Even at a
+         topocentric zenith distance of 90 degrees, the accuracy in
+         elevation should be better than 1 arcmin;  useful results
+         are available for a further 3 degrees, beyond which the
+         palRefro routine returns a fixed value of the refraction.
+         The complementary routines palAop (or palAopqk) and palOap
+         (or palOapqk) are self-consistent to better than 1 micro-
+         arcsecond all over the celestial sphere.
+
+         \sstitem
+         It is advisable to take great care with units, as even
+         unlikely values of the input parameters are accepted and
+         processed in accordance with the models used.
+
+         \sstitem
+         {\tt "}Observed{\tt "} Az,El means the position that would be seen by a
+         perfect theodolite located at the observer.  This is
+         related to the observed HA,Dec via the standard rotation, using
+         the geodetic latitude (corrected for polar motion), while the
+         observed HA and RA are related simply through the local
+         apparent ST.  {\tt "}Observed{\tt "} RA,Dec or HA,Dec thus means the
+         position that would be seen by a perfect equatorial located
+         at the observer and with its polar axis aligned to the
+         Earth{\tt '}s axis of rotation (n.b. not to the refracted pole).
+         By removing from the observed place the effects of
+         atmospheric refraction and diurnal aberration, the
+         geocentric apparent RA,Dec is obtained.
+
+         \sstitem
+         Frequently, mean rather than apparent RA,Dec will be required,
+         in which case further transformations will be necessary.  The
+         palAmp etc routines will convert the apparent RA,Dec produced
+         by the present routine into an {\tt "}FK5{\tt "} (J2000) mean place, by
+         allowing for the Sun{\tt '}s gravitational lens effect, annual
+         aberration, nutation and precession.  Should {\tt "}FK4{\tt "} (1950)
+         coordinates be needed, the routines palFk524 etc will also
+         need to be applied.
+
+         \sstitem
+         To convert to apparent RA,Dec the coordinates read from a
+         real telescope, corrections would have to be applied for
+         encoder zero points, gear and encoder errors, tube flexure,
+         the position of the rotator axis and the pointing axis
+         relative to it, non-perpendicularity between the mounting
+         axes, and finally for the tilt of the azimuth or polar axis
+         of the mounting (with appropriate corrections for mount
+         flexures).  Some telescopes would, of course, exhibit other
+         properties which would need to be accounted for at the
+         appropriate point in the sequence.
+
+         \sstitem
+         This routine takes time to execute, due mainly to the rigorous
+         integration used to evaluate the refraction.  For processing
+         multiple stars for one location and time, call palAoppa once
+         followed by one call per star to palOapqk.  Where a range of
+         times within a limited period of a few hours is involved, and the
+         highest precision is not required, call palAoppa once, followed
+         by a call to palAoppat each time the time changes, followed by
+         one call per star to palOapqk.
+
+         \sstitem
+         The DATE argument is UTC expressed as an MJD.  This is, strictly
+         speaking, wrong, because of leap seconds.  However, as long as
+         the delta UT and the UTC are consistent there are no
+         difficulties, except during a leap second.  In this case, the
+         start of the 61st second of the final minute should begin a new
+         MJD day and the old pre-leap delta UT should continue to be used.
+         As the 61st second completes, the MJD should revert to the start
+         of the day as, simultaneously, the delta UTC changes by one
+         second to its post-leap new value.
+
+         \sstitem
+         The delta UT (UT1-UTC) is tabulated in IERS circulars and
+         elsewhere.  It increases by exactly one second at the end of
+         each UTC leap second, introduced in order to keep delta UT
+         within $+$/- 0.9 seconds.
+
+         \sstitem
+         IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+         The longitude required by the present routine is east-positive,
+         in accordance with geographical convention (and right-handed).
+         In particular, note that the longitudes returned by the
+         palOBS routine are west-positive, following astronomical
+         usage, and must be reversed in sign before use in the present
+         routine.
+
+         \sstitem
+         The polar coordinates XP,YP can be obtained from IERS
+         circulars and equivalent publications.  The maximum amplitude
+         is about 0.3 arcseconds.  If XP,YP values are unavailable,
+         use XP=YP=0D0.  See page B60 of the 1988 Astronomical Almanac
+         for a definition of the two angles.
+
+         \sstitem
+         The height above sea level of the observing station, HM,
+         can be obtained from the Astronomical Almanac (Section J
+         in the 1988 edition), or via the routine palOBS.  If P,
+         the pressure in millibars, is available, an adequate
+         estimate of HM can be obtained from the expression
+
+      }
+             HM $\sim$ -29.3$*$TSL$*$LOG(P/1013.25).
+
+      where TSL is the approximate sea-level air temperature in K
+      (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+      section 52).  Similarly, if the pressure P is not known,
+      it can be estimated from the height of the observing
+      station, HM, as follows:
+
+             P $\sim$ 1013.25$*$EXP(-HM/(29.3$*$TSL)).
+
+      Note, however, that the refraction is nearly proportional to the
+      pressure and that an accurate P value is important for precise
+      work.
+
+      \sstitemlist{
+
+         \sstitem
+         The azimuths etc. used by the present routine are with respect
+         to the celestial pole.  Corrections from the terrestrial pole
+         can be computed using palPolmo.
+      }
+   }
+}
+\sstroutine{
+   palOapqk
+}{
+   Quick observed to apparent place
+}{
+   \sstdescription{
+      type = const char $*$ (Given)
+         Type of coordinates - {\tt '}R{\tt '}, {\tt '}H{\tt '} or {\tt '}A{\tt '} (see below)
+      ob1 = double (Given)
+         Observed Az, HA or RA (radians; Az is N=0;E=90)
+      ob2 = double (Given)
+         Observed ZD or Dec (radians)
+      aoprms = const double [14] (Given)
+         Star-independent apparent-to-observed parameters.
+         See palAopqk for details.
+      rap = double $*$ (Given)
+         Geocentric apparent right ascension
+      dap = double $*$ (Given)
+         Geocentric apparent declination
+   }
+   \sstinvocation{
+      void palOapqk ( const char $*$type, double ob1, double ob2,
+                      const  double aoprms[14], double $*$rap, double $*$dap );
+   }
+   \sstarguments{
+      \sstsubsection{
+         Quick observed to apparent place.
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Only the first character of the TYPE argument is significant.
+         {\tt '}R{\tt '} or {\tt '}r{\tt '} indicates that OBS1 and OBS2 are the observed right
+         ascension and declination;  {\tt '}H{\tt '} or {\tt '}h{\tt '} indicates that they are
+         hour angle (west $+$ve) and declination;  anything else ({\tt '}A{\tt '} or
+         {\tt '}a{\tt '} is recommended) indicates that OBS1 and OBS2 are azimuth
+         (north zero, east 90 deg) and zenith distance.  (Zenith distance
+         is used rather than elevation in order to reflect the fact that
+         no allowance is made for depression of the horizon.)
+
+         \sstitem
+         The accuracy of the result is limited by the corrections for
+         refraction.  Providing the meteorological parameters are
+         known accurately and there are no gross local effects, the
+         predicted apparent RA,Dec should be within about 0.1 arcsec
+         for a zenith distance of less than 70 degrees.  Even at a
+         topocentric zenith distance of 90 degrees, the accuracy in
+         elevation should be better than 1 arcmin;  useful results
+         are available for a further 3 degrees, beyond which the
+         palREFRO routine returns a fixed value of the refraction.
+         The complementary routines palAop (or palAopqk) and palOap
+         (or palOapqk) are self-consistent to better than 1 micro-
+         arcsecond all over the celestial sphere.
+
+         \sstitem
+         It is advisable to take great care with units, as even
+         unlikely values of the input parameters are accepted and
+         processed in accordance with the models used.
+
+         \sstitem
+         {\tt "}Observed{\tt "} Az,El means the position that would be seen by a
+         perfect theodolite located at the observer.  This is
+         related to the observed HA,Dec via the standard rotation, using
+         the geodetic latitude (corrected for polar motion), while the
+         observed HA and RA are related simply through the local
+         apparent ST.  {\tt "}Observed{\tt "} RA,Dec or HA,Dec thus means the
+         position that would be seen by a perfect equatorial located
+         at the observer and with its polar axis aligned to the
+         Earth{\tt '}s axis of rotation (n.b. not to the refracted pole).
+         By removing from the observed place the effects of
+         atmospheric refraction and diurnal aberration, the
+         geocentric apparent RA,Dec is obtained.
+
+         \sstitem
+         Frequently, mean rather than apparent RA,Dec will be required,
+         in which case further transformations will be necessary.  The
+         palAmp etc routines will convert the apparent RA,Dec produced
+         by the present routine into an {\tt "}FK5{\tt "} (J2000) mean place, by
+         allowing for the Sun{\tt '}s gravitational lens effect, annual
+         aberration, nutation and precession.  Should {\tt "}FK4{\tt "} (1950)
+         coordinates be needed, the routines palFk524 etc will also
+         need to be applied.
+
+         \sstitem
+         To convert to apparent RA,Dec the coordinates read from a
+         real telescope, corrections would have to be applied for
+         encoder zero points, gear and encoder errors, tube flexure,
+         the position of the rotator axis and the pointing axis
+         relative to it, non-perpendicularity between the mounting
+         axes, and finally for the tilt of the azimuth or polar axis
+         of the mounting (with appropriate corrections for mount
+         flexures).  Some telescopes would, of course, exhibit other
+         properties which would need to be accounted for at the
+         appropriate point in the sequence.
+
+         \sstitem
+         The star-independent apparent-to-observed-place parameters
+         in AOPRMS may be computed by means of the palAoppa routine.
+         If nothing has changed significantly except the time, the
+         palAoppat routine may be used to perform the requisite
+         partial recomputation of AOPRMS.
+
+         \sstitem
+         The azimuths etc used by the present routine are with respect
+         to the celestial pole.  Corrections from the terrestrial pole
+         can be computed using palPolmo.
+      }
+   }
+}
+\sstroutine{
+   palObs
+}{
+   Parameters of selected ground-based observing stations
+}{
+   \sstdescription{
+      Station numbers, identifiers, names and other details are
+      subject to change and should not be hardwired into
+      application programs.
+
+      All characters in {\tt "}c{\tt "} up to the first space are
+      checked;  thus an abbreviated ID will return the parameters
+      for the first station in the list which matches the
+      abbreviation supplied, and no station in the list will ever
+      contain embedded spaces. {\tt "}c{\tt "} must not have leading spaces.
+
+      IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION.  The
+      longitude returned by sla\_OBS is west-positive in accordance
+      with astronomical usage.  However, this sign convention is
+      left-handed and is the opposite of the one used by geographers;
+      elsewhere in PAL the preferable east-positive convention is
+      used.  In particular, note that for use in palAop, palAoppa
+      and palOap the sign of the longitude must be reversed.
+
+      Users are urged to inform the author of any improvements
+      they would like to see made.  For example:
+
+          typographical corrections
+          more accurate parameters
+          better station identifiers or names
+          additional stations
+   }
+   \sstinvocation{
+      int palObs( size\_t n, const char $*$ c,
+                  char $*$ ident, size\_t identlen,
+                  char $*$ name, size\_t namelen,
+                  double $*$ w, double $*$ p, double $*$ h );
+   }
+   \sstarguments{
+      \sstsubsection{
+         n = size\_t (Given)
+      }{
+         Number specifying the observing station. If 0
+         the identifier in {\tt "}c{\tt "} is used to determine the
+         observing station to use.
+      }
+      \sstsubsection{
+         c = const char $*$ (Given)
+      }{
+         Identifier specifying the observing station for
+         which the parameters should be returned. Only used
+         if n is 0. Can be NULL for n$>$0. Case insensitive.
+      }
+      \sstsubsection{
+         ident = char $*$ (Returned)
+      }{
+         Identifier of the observing station selected. Will be
+         identical to {\tt "}c{\tt "} if n==0. Unchanged if {\tt "}n{\tt "} or {\tt "}c{\tt "}
+         do not match an observing station. Should be at least
+         11 characters (including the trailing nul).
+      }
+      \sstsubsection{
+         identlen = size\_t (Given)
+      }{
+         Size of the buffer {\tt "}ident{\tt "} including trailing nul.
+      }
+      \sstsubsection{
+         name = char $*$ (Returned)
+      }{
+         Full name of the specified observing station. Contains {\tt "}?{\tt "}
+         if {\tt "}n{\tt "} or {\tt "}c{\tt "} did not correspond to a valid station. Should
+         be at least 41 characters (including the trailing nul).
+      }
+      \sstsubsection{
+         w = double $*$ (Returned)
+      }{
+         Longitude (radians, West $+$ve). Unchanged if observing
+         station could not be identified.
+      }
+      \sstsubsection{
+         p = double $*$ (Returned)
+      }{
+         Geodetic latitude (radians, North $+$ve). Unchanged if observing
+         station could not be identified.
+      }
+      \sstsubsection{
+         h = double $*$ (Returned)
+      }{
+         Height above sea level (metres). Unchanged if observing
+         station could not be identified.
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         palObs = int
+      }{
+         0 if an observing station was returned. -1 if no match was
+         found.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Differs from the SLA interface in that the output short name
+           is not the same variable as the input short name. This simplifies
+           consting. Additionally the size of the output buffers are now
+           specified in the API and a status integer is returned.
+      }
+   }
+}
+\sstroutine{
+   palPa
+}{
+   HA, Dec to Parallactic Angle
+}{
+   \sstdescription{
+      Converts HA, Dec to Parallactic Angle.
+   }
+   \sstinvocation{
+      double palPa( double ha, double dec, double phi );
+   }
+   \sstarguments{
+      \sstsubsection{
+         ha = double (Given)
+      }{
+         Hour angle in radians (Geocentric apparent)
+      }
+      \sstsubsection{
+         dec = double (Given)
+      }{
+         Declination in radians (Geocentric apparent)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observatory latitude in radians (geodetic)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         palPa = double
+      }{
+         Parallactic angle in the range -pi to $+$pi.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The parallactic angle at a point in the sky is the position
+           angle of the vertical, i.e. the angle between the direction to
+           the pole and to the zenith.  In precise applications care must
+           be taken only to use geocentric apparent HA,Dec and to consider
+           separately the effects of atmospheric refraction and telescope
+           mount errors.
+
+         \sstitem
+         At the pole a zero result is returned.
+      }
+   }
+}
+\sstroutine{
+   palPcd
+}{
+   Apply pincushion/barrel distortion to a tangent-plane [x,y]
+}{
+   \sstdescription{
+      Applies pincushion and barrel distortion to a tangent
+      plane coordinate.
+   }
+   \sstinvocation{
+      palPcd( double disco, double $*$ x, double $*$ y );
+   }
+   \sstarguments{
+      \sstsubsection{
+         disco = double (Given)
+      }{
+         Pincushion/barrel distortion coefficient.
+      }
+      \sstsubsection{
+         x = double $*$ (Given \& Returned)
+      }{
+         On input the tangent-plane X coordinate, on output
+         the distorted X coordinate.
+      }
+      \sstsubsection{
+         y = double $*$ (Given \& Returned)
+      }{
+         On input the tangent-plane Y coordinate, on output
+         the distorted Y coordinate.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The distortion is of the form RP = R$*$(1 $+$ C$*$R$*$$*$2), where R is
+           the radial distance from the tangent point, C is the DISCO
+           argument, and RP is the radial distance in the presence of
+           the distortion.
+
+         \sstitem
+         For pincushion distortion, C is $+$ve;  for barrel distortion,
+           C is -ve.
+
+         \sstitem
+         For X,Y in units of one projection radius (in the case of
+           a photographic plate, the focal length), the following
+           DISCO values apply:
+
+\begin{center}
+\begin{tabular}{ll}
+            Geometry          &DISCO \\
+\hline
+            astrograph        & 0.0 \\
+            Schmidt           &-0.3333 \\
+            AAT PF doublet  &$+$147.069 \\
+            AAT PF triplet  &$+$178.585 \\
+            AAT f/8          &$+$21.20 \\
+            JKT f/8          &$+$13.32 \\
+\end{tabular}
+\end{center}
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         There is a companion routine, palUnpcd, which performs the
+           inverse operation.
+      }
+   }
+}
+
+\sstroutine{
+   palPertel
+}{
+   Update elements by applying planetary perturbations
+}{
+   \sstdescription{
+      Update the osculating orbital elements of an asteroid or comet by
+      applying planetary perturbations.
+   }
+   \sstinvocation{
+      void palPertel (int jform, double date0, double date1,
+                      double epoch0, double orbi0, double anode0,
+                      double perih0, double aorq0, double e0, double am0,
+                      double $*$epoch1, double $*$orbi1, double $*$anode1,
+                      double $*$perih1, double $*$aorq1, double $*$e1, double $*$am1,
+                      int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         jform = int (Given)
+      }{
+         Element set actually returned (1-3; Note 6)
+      }
+      \sstsubsection{
+         date0 = double (Given)
+      }{
+         Date of osculation (TT MJD) for the given elements.
+      }
+      \sstsubsection{
+         date1 = double (Given)
+      }{
+         Date of osculation (TT MJD) for the updated elements.
+      }
+      \sstsubsection{
+         epoch0 = double (Given)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbi0 = double (Given)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode0 = double (Given)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih0 = double (Given)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq0 = double (Given)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e0 = double (Given)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         am0 = double (Given)
+      }{
+         mean anomaly (radians, JFORM=2 only)
+      }
+      \sstsubsection{
+         epoch1 = double $*$ (Returned)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbi1 = double $*$ (Returned)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode1 = double $*$ (Returned)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih1 = double $*$ (Returned)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq1 = double $*$ (Returned)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e1 = double $*$ (Returned)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         am1 = double $*$ (Returned)
+      }{
+         mean anomaly (radians, JFORM=2 only)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:
+         \sstitemlist{
+
+            \sstitem
+              $+$102 = warning, distant epoch
+
+            \sstitem
+              $+$101 = warning, large timespan ( $>$ 100 years)
+
+            \sstitem
+              $+$1 to $+$10 = coincident with planet (Note 6)
+
+            \sstitem
+              0 = OK
+
+            \sstitem
+              -1 = illegal JFORM
+
+            \sstitem
+              -2 = illegal E0
+
+            \sstitem
+              -3 = illegal AORQ0
+
+            \sstitem
+              -4 = internal error
+
+            \sstitem
+              -5 = numerical error
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Two different element-format options are available:
+
+      }
+        Option JFORM=2, suitable for minor planets:
+
+        EPOCH   = epoch of elements (TT MJD)
+        ORBI    = inclination i (radians)
+        ANODE   = longitude of the ascending node, big omega (radians)
+        PERIH   = argument of perihelion, little omega (radians)
+        AORQ    = mean distance, a (AU)
+        E       = eccentricity, e
+        AM      = mean anomaly M (radians)
+
+        Option JFORM=3, suitable for comets:
+
+        EPOCH   = epoch of perihelion (TT MJD)
+        ORBI    = inclination i (radians)
+        ANODE   = longitude of the ascending node, big omega (radians)
+        PERIH   = argument of perihelion, little omega (radians)
+        AORQ    = perihelion distance, q (AU)
+        E       = eccentricity, e
+
+      \sstitemlist{
+
+         \sstitem
+         DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in
+           the TT timescale (formerly Ephemeris Time, ET), expressed
+           as Modified Julian Dates (JD-2400000.5).
+
+      }
+        DATE0 is the instant at which the given (i.e. unperturbed)
+        osculating elements are correct.
+
+        DATE1 is the specified instant at which the updated osculating
+        elements are correct.
+
+        EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1
+        (respectively) for the JFORM=2 case, normally used for minor
+        planets.  For the JFORM=3 case, the two epochs will refer to
+        perihelion passage and so will not, in general, be the same as
+        DATE0 and/or DATE1 though they may be similar to one another.
+      \sstitemlist{
+
+         \sstitem
+         The elements are with respect to the J2000 ecliptic and equinox.
+
+         \sstitem
+         Unused elements (AM0 and AM1 for JFORM=3) are not accessed.
+
+         \sstitem
+         See the palPertue routine for details of the algorithm used.
+
+         \sstitem
+         This routine is not intended to be used for major planets, which
+           is why JFORM=1 is not available and why there is no opportunity
+           to specify either the longitude of perihelion or the daily
+           motion.  However, if JFORM=2 elements are somehow obtained for a
+           major planet and supplied to the routine, sensible results will,
+           in fact, be produced.  This happens because the sla\_PERTUE routine
+           that is called to perform the calculations checks the separation
+           between the body and each of the planets and interprets a
+           suspiciously small value (0.001 AU) as an attempt to apply it to
+           the planet concerned.  If this condition is detected, the
+           contribution from that planet is ignored, and the status is set to
+           the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter,
+           Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "},
+           Interscience Publishers Inc., 1960.  Section 6.7, p199.
+      }
+   }
+}
+\sstroutine{
+   palPertue
+}{
+   Update the universal elements by applying planetary perturbations
+}{
+   \sstdescription{
+      Update the universal elements of an asteroid or comet by applying
+      planetary perturbations.
+   }
+   \sstinvocation{
+      void palPertue( double date, double u[13], int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Final epoch (TT MJD) for the update elements.
+      }
+      \sstsubsection{
+         u = const double [13] (Given \& Returned)
+      }{
+         Universal orbital elements (Note 1)
+             (0)  combined mass (M$+$m)
+             (1)  total energy of the orbit (alpha)
+             (2)  reference (osculating) epoch (t0)
+           (3-5)  position at reference epoch (r0)
+           (6-8)  velocity at reference epoch (v0)
+             (9)  heliocentric distance at reference epoch
+            (10)  r0.v0
+            (11)  date (t)
+            (12)  universal eccentric anomaly (psi) of date, approx
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:
+                    $+$102 = warning, distant epoch
+                    $+$101 = warning, large timespan ( $>$ 100 years)
+               $+$1 to $+$10 = coincident with major planet (Note 5)
+                       0 = OK
+         \sstitemlist{
+
+            \sstitem
+                         1 = numerical error
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The {\tt "}universal{\tt "} elements are those which define the orbit for the
+           purposes of the method of universal variables (see reference 2).
+           They consist of the combined mass of the two bodies, an epoch,
+           and the position and velocity vectors (arbitrary reference frame)
+           at that epoch.  The parameter set used here includes also various
+           quantities that can, in fact, be derived from the other
+           information.  This approach is taken to avoiding unnecessary
+           computation and loss of accuracy.  The supplementary quantities
+           are (i) alpha, which is proportional to the total energy of the
+           orbit, (ii) the heliocentric distance at epoch, (iii) the
+           outwards component of the velocity at the given epoch, (iv) an
+           estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+           date and (v) that date.
+
+         \sstitem
+         The universal elements are with respect to the J2000 equator and
+           equinox.
+
+         \sstitem
+         The epochs DATE, U(3) and U(12) are all Modified Julian Dates
+           (JD-2400000.5).
+
+         \sstitem
+         The algorithm is a simplified form of Encke{\tt '}s method.  It takes as
+           a basis the unperturbed motion of the body, and numerically
+           integrates the perturbing accelerations from the major planets.
+           The expression used is essentially Sterne{\tt '}s 6.7-2 (reference 1).
+           Everhart and Pitkin (reference 2) suggest rectifying the orbit at
+           each integration step by propagating the new perturbed position
+           and velocity as the new universal variables.  In the present
+           routine the orbit is rectified less frequently than this, in order
+           to gain a slight speed advantage.  However, the rectification is
+           done directly in terms of position and velocity, as suggested by
+           Everhart and Pitkin, bypassing the use of conventional orbital
+           elements.
+
+      }
+        The f(q) part of the full Encke method is not used.  The purpose
+        of this part is to avoid subtracting two nearly equal quantities
+        when calculating the {\tt "}indirect member{\tt "}, which takes account of the
+        small change in the Sun{\tt '}s attraction due to the slightly displaced
+        position of the perturbed body.  A simpler, direct calculation in
+        double precision proves to be faster and not significantly less
+        accurate.
+
+        Apart from employing a variable timestep, and occasionally
+        {\tt "}rectifying the orbit{\tt "} to keep the indirect member small, the
+        integration is done in a fairly straightforward way.  The
+        acceleration estimated for the middle of the timestep is assumed
+        to apply throughout that timestep;  it is also used in the
+        extrapolation of the perturbations to the middle of the next
+        timestep, to predict the new disturbed position.  There is no
+        iteration within a timestep.
+
+        Measures are taken to reach a compromise between execution time
+        and accuracy.  The starting-point is the goal of achieving
+        arcsecond accuracy for ordinary minor planets over a ten-year
+        timespan.  This goal dictates how large the timesteps can be,
+        which in turn dictates how frequently the unperturbed motion has
+        to be recalculated from the osculating elements.
+
+        Within predetermined limits, the timestep for the numerical
+        integration is varied in length in inverse proportion to the
+        magnitude of the net acceleration on the body from the major
+        planets.
+
+        The numerical integration requires estimates of the major-planet
+        motions.  Approximate positions for the major planets (Pluto
+        alone is omitted) are obtained from the routine palPlanet.  Two
+        levels of interpolation are used, to enhance speed without
+        significantly degrading accuracy.  At a low frequency, the routine
+        palPlanet is called to generate updated position$+$velocity {\tt "}state
+        vectors{\tt "}.  The only task remaining to be carried out at the full
+        frequency (i.e. at each integration step) is to use the state
+        vectors to extrapolate the planetary positions.  In place of a
+        strictly linear extrapolation, some allowance is made for the
+        curvature of the orbit by scaling back the radius vector as the
+        linear extrapolation goes off at a tangent.
+
+        Various other approximations are made.  For example, perturbations
+        by Pluto and the minor planets are neglected and relativistic
+        effects are not taken into account.
+
+        In the interests of simplicity, the background calculations for
+        the major planets are carried out en masse.  The mean elements and
+        state vectors for all the planets are refreshed at the same time,
+        without regard for orbit curvature, mass or proximity.
+
+        The Earth-Moon system is treated as a single body when the body is
+        distant but as separate bodies when closer to the EMB than the
+        parameter RNE, which incurs a time penalty but improves accuracy
+        for near-Earth objects.
+
+      \sstitemlist{
+
+         \sstitem
+         This routine is not intended to be used for major planets.
+           However, if major-planet elements are supplied, sensible results
+           will, in fact, be produced.  This happens because the routine
+           checks the separation between the body and each of the planets and
+           interprets a suspiciously small value (0.001 AU) as an attempt to
+           apply the routine to the planet concerned.  If this condition is
+           detected, the contribution from that planet is ignored, and the
+           status is set to the planet number (1-10 = Mercury, Venus, EMB,
+           Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "},
+           Interscience Publishers Inc., 1960.  Section 6.7, p199.
+
+         \sstitem
+         Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+      }
+   }
+}
+\sstroutine{
+   palPlanel
+}{
+   Transform conventional elements into position and velocity
+}{
+   \sstdescription{
+      Heliocentric position and velocity of a planet, asteroid or comet,
+      starting from orbital elements.
+   }
+   \sstinvocation{
+      void palPlanel ( double date, int jform, double epoch, double orbinc,
+                       double anode, double perih, double aorq, double e,
+                       double aorl, double dm, double pv[6], int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Epoch (TT MJD) of osculation (Note 1)
+      }
+      \sstsubsection{
+         jform = int (Given)
+      }{
+         Element set actually returned (1-3; Note 3)
+      }
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Epoch of elements (TT MJD) (Note 4)
+      }
+      \sstsubsection{
+         orbinc = double (Given)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode = double (Given)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih = double (Given)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq = double (Given)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e = double (Given)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         aorl = double (Given)
+      }{
+         mean anomaly or longitude (radians, JFORM=1,2 only)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         daily motion (radians, JFORM=1 only)
+      }
+      \sstsubsection{
+         u = double [13] (Returned)
+      }{
+         Universal orbital elements (Note 1)
+             (0)  combined mass (M$+$m)
+             (1)  total energy of the orbit (alpha)
+             (2)  reference (osculating) epoch (t0)
+           (3-5)  position at reference epoch (r0)
+           (6-8)  velocity at reference epoch (v0)
+             (9)  heliocentric distance at reference epoch
+            (10)  r0.v0
+            (11)  date (t)
+            (12)  universal eccentric anomaly (psi) of date, approx
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:  0 = OK
+         \sstitemlist{
+
+            \sstitem
+                  -1 = illegal JFORM
+
+            \sstitem
+                  -2 = illegal E
+
+            \sstitem
+                  -3 = illegal AORQ
+
+            \sstitem
+                  -4 = illegal DM
+
+            \sstitem
+                  -5 = numerical error
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         DATE is the instant for which the prediction is required.  It is
+           in the TT timescale (formerly Ephemeris Time, ET) and is a
+           Modified Julian Date (JD-2400000.5).
+
+         \sstitem
+         The elements are with respect to the J2000 ecliptic and equinox.
+
+         \sstitem
+         A choice of three different element-set options is available:
+
+      }
+        Option JFORM = 1, suitable for the major planets:
+
+          EPOCH  = epoch of elements (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = longitude of perihelion, curly pi (radians)
+          AORQ   = mean distance, a (AU)
+          E      = eccentricity, e (range 0 to $<$1)
+          AORL   = mean longitude L (radians)
+          DM     = daily motion (radians)
+
+        Option JFORM = 2, suitable for minor planets:
+
+          EPOCH  = epoch of elements (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = argument of perihelion, little omega (radians)
+          AORQ   = mean distance, a (AU)
+          E      = eccentricity, e (range 0 to $<$1)
+          AORL   = mean anomaly M (radians)
+
+        Option JFORM = 3, suitable for comets:
+
+          EPOCH  = epoch of elements and perihelion (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = argument of perihelion, little omega (radians)
+          AORQ   = perihelion distance, q (AU)
+          E      = eccentricity, e (range 0 to 10)
+
+        Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+        accessed.
+      \sstitemlist{
+
+         \sstitem
+         Each of the three element sets defines an unperturbed heliocentric
+           orbit.  For a given epoch of observation, the position of the body
+           in its orbit can be predicted from these elements, which are
+           called {\tt "}osculating elements{\tt "}, using standard two-body analytical
+           solutions.  However, due to planetary perturbations, a given set
+           of osculating elements remains usable for only as long as the
+           unperturbed orbit that it describes is an adequate approximation
+           to reality.  Attached to such a set of elements is a date called
+           the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily,
+           a perfect representation of the instantaneous position and
+           velocity of the body.
+
+      }
+        Therefore, for any given problem there are up to three different
+        epochs in play, and it is vital to distinguish clearly between
+        them:
+
+        . The epoch of observation:  the moment in time for which the
+          position of the body is to be predicted.
+
+        . The epoch defining the position of the body:  the moment in time
+          at which, in the absence of purturbations, the specified
+          position (mean longitude, mean anomaly, or perihelion) is
+          reached.
+
+        . The osculating epoch:  the moment in time at which the given
+          elements are correct.
+
+        For the major-planet and minor-planet cases it is usual to make
+        the epoch that defines the position of the body the same as the
+        epoch of osculation.  Thus, only two different epochs are
+        involved:  the epoch of the elements and the epoch of observation.
+
+        For comets, the epoch of perihelion fixes the position in the
+        orbit and in general a different epoch of osculation will be
+        chosen.  Thus, all three types of epoch are involved.
+
+        For the present routine:
+
+        . The epoch of observation is the argument DATE.
+
+        . The epoch defining the position of the body is the argument
+          EPOCH.
+
+        . The osculating epoch is not used and is assumed to be close
+          enough to the epoch of observation to deliver adequate accuracy.
+          If not, a preliminary call to sla\_PERTEL may be used to update
+          the element-set (and its associated osculating epoch) by
+          applying planetary perturbations.
+      \sstitemlist{
+
+         \sstitem
+         The reference frame for the result is with respect to the mean
+           equator and equinox of epoch J2000.
+
+         \sstitem
+         The algorithm was originally adapted from the EPHSLA program of
+           D.H.P.Jones (private communication, 1996).  The method is based
+           on Stumpff{\tt '}s Universal Variables.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+   }
+}
+\sstroutine{
+   palPlanet
+}{
+   Approximate heliocentric position and velocity of major planet
+}{
+   \sstdescription{
+      Calculates the approximate heliocentric position and velocity of
+      the specified major planet.
+   }
+   \sstinvocation{
+      void palPlanet ( double date, int np, double pv[6], int $*$j );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TDB Modified Julian Date (JD-2400000.5).
+      }
+      \sstsubsection{
+         np = int (Given)
+      }{
+         planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars,
+                 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
+      }
+      \sstsubsection{
+         pv = double [6] (Returned)
+      }{
+         heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad
+         in units AU and AU/s.
+      }
+      \sstsubsection{
+         j = int $*$ (Returned)
+      }{
+         \sstitemlist{
+
+            \sstitem
+            -2 = solution didn{\tt '}t converge.
+
+            \sstitem
+            -1 = illegal np (1-8)
+
+            \sstitem
+            0 = OK
+
+            \sstitem
+            $+$1 = warning: year outside 1000-3000
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         See SOFA/ERFA eraPlan94 for details
+
+         \sstitem
+         Note that Pluto is supported in SLA/F but not in this routine
+
+         \sstitem
+         Status -2 is equivalent to eraPlan94 status $+$2.
+
+         \sstitem
+         Note that velocity units here match the SLA/F documentation.
+      }
+   }
+}
+\sstroutine{
+   palPlante
+}{
+   Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements
+}{
+   \sstdescription{
+      Topocentric apparent RA,Dec of a Solar-System object whose
+      heliocentric orbital elements are known.
+   }
+   \sstinvocation{
+      void palPlante ( double date, double elong, double phi, int jform,
+                       double epoch, double orbinc, double anode, double perih,
+                       double aorq, double e, double aorl, double dm,
+                       double $*$ra, double $*$dec, double $*$r, int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT MJD of observation (JD-2400000.5)
+      }
+      \sstsubsection{
+         elong = double (Given)
+      }{
+         Observer{\tt '}s east longitude (radians)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observer{\tt '}s geodetic latitude (radians)
+      }
+      \sstsubsection{
+         jform = int (Given)
+      }{
+         Element set actually returned (1-3; Note 6)
+      }
+      \sstsubsection{
+         epoch = double (Given)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbinc = double (Given)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode = double (Given)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih = double (Given)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq = double (Given)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e = double (Given)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         aorl = double (Given)
+      }{
+         mean anomaly or longitude (radians, JFORM=1,2 only)
+      }
+      \sstsubsection{
+         dm = double (Given)
+      }{
+         daily motion (radians, JFORM=1 only)
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         Topocentric apparent RA (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Topocentric apparent Dec (radians)
+      }
+      \sstsubsection{
+         r = double $*$ (Returned)
+      }{
+         Distance from observer (AU)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status: 0 = OK
+         \sstitemlist{
+
+            \sstitem
+                 -1 = illegal jform
+
+            \sstitem
+                 -2 = illegal e
+
+            \sstitem
+                 -3 = illegal aorq
+
+            \sstitem
+                 -4 = illegal dm
+
+            \sstitem
+                 -5 = numerical error
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         DATE is the instant for which the prediction is required.  It is
+           in the TT timescale (formerly Ephemeris Time, ET) and is a
+           Modified Julian Date (JD-2400000.5).
+
+         \sstitem
+         The longitude and latitude allow correction for geocentric
+           parallax.  This is usually a small effect, but can become
+           important for near-Earth asteroids.  Geocentric positions can be
+           generated by appropriate use of routines palEpv (or palEvp) and
+           palUe2pv.
+
+         \sstitem
+         The elements are with respect to the J2000 ecliptic and equinox.
+
+         \sstitem
+         A choice of three different element-set options is available:
+
+      }
+        Option JFORM = 1, suitable for the major planets:
+
+          EPOCH  = epoch of elements (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = longitude of perihelion, curly pi (radians)
+          AORQ   = mean distance, a (AU)
+          E      = eccentricity, e (range 0 to $<$1)
+          AORL   = mean longitude L (radians)
+          DM     = daily motion (radians)
+
+        Option JFORM = 2, suitable for minor planets:
+
+          EPOCH  = epoch of elements (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = argument of perihelion, little omega (radians)
+          AORQ   = mean distance, a (AU)
+          E      = eccentricity, e (range 0 to $<$1)
+          AORL   = mean anomaly M (radians)
+
+        Option JFORM = 3, suitable for comets:
+
+          EPOCH  = epoch of elements and perihelion (TT MJD)
+          ORBINC = inclination i (radians)
+          ANODE  = longitude of the ascending node, big omega (radians)
+          PERIH  = argument of perihelion, little omega (radians)
+          AORQ   = perihelion distance, q (AU)
+          E      = eccentricity, e (range 0 to 10)
+
+        Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+        accessed.
+      \sstitemlist{
+
+         \sstitem
+         Each of the three element sets defines an unperturbed heliocentric
+           orbit.  For a given epoch of observation, the position of the body
+           in its orbit can be predicted from these elements, which are
+           called {\tt "}osculating elements{\tt "}, using standard two-body analytical
+           solutions.  However, due to planetary perturbations, a given set
+           of osculating elements remains usable for only as long as the
+           unperturbed orbit that it describes is an adequate approximation
+           to reality.  Attached to such a set of elements is a date called
+           the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily,
+           a perfect representation of the instantaneous position and
+           velocity of the body.
+
+      }
+        Therefore, for any given problem there are up to three different
+        epochs in play, and it is vital to distinguish clearly between
+        them:
+
+        . The epoch of observation:  the moment in time for which the
+          position of the body is to be predicted.
+
+        . The epoch defining the position of the body:  the moment in time
+          at which, in the absence of purturbations, the specified
+          position (mean longitude, mean anomaly, or perihelion) is
+          reached.
+
+        . The osculating epoch:  the moment in time at which the given
+          elements are correct.
+
+        For the major-planet and minor-planet cases it is usual to make
+        the epoch that defines the position of the body the same as the
+        epoch of osculation.  Thus, only two different epochs are
+        involved:  the epoch of the elements and the epoch of observation.
+
+        For comets, the epoch of perihelion fixes the position in the
+        orbit and in general a different epoch of osculation will be
+        chosen.  Thus, all three types of epoch are involved.
+
+        For the present routine:
+
+        . The epoch of observation is the argument DATE.
+
+        . The epoch defining the position of the body is the argument
+          EPOCH.
+
+        . The osculating epoch is not used and is assumed to be close
+          enough to the epoch of observation to deliver adequate accuracy.
+          If not, a preliminary call to sla\_PERTEL may be used to update
+          the element-set (and its associated osculating epoch) by
+          applying planetary perturbations.
+      \sstitemlist{
+
+         \sstitem
+         Two important sources for orbital elements are Horizons, operated
+           by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet
+           Center, operated by the Center for Astrophysics, Harvard.
+
+      }
+        The JPL Horizons elements (heliocentric, J2000 ecliptic and
+        equinox) correspond to SLALIB arguments as follows.
+
+         Major planets:
+
+          JFORM  = 1
+          EPOCH  = JDCT-2400000.5
+          ORBINC = IN (in radians)
+          ANODE  = OM (in radians)
+          PERIH  = OM$+$W (in radians)
+          AORQ   = A
+          E      = EC
+          AORL   = MA$+$OM$+$W (in radians)
+          DM     = N (in radians)
+
+          Epoch of osculation = JDCT-2400000.5
+
+         Minor planets:
+
+          JFORM  = 2
+          EPOCH  = JDCT-2400000.5
+          ORBINC = IN (in radians)
+          ANODE  = OM (in radians)
+          PERIH  = W (in radians)
+          AORQ   = A
+          E      = EC
+          AORL   = MA (in radians)
+
+          Epoch of osculation = JDCT-2400000.5
+
+         Comets:
+
+          JFORM  = 3
+          EPOCH  = Tp-2400000.5
+          ORBINC = IN (in radians)
+          ANODE  = OM (in radians)
+          PERIH  = W (in radians)
+          AORQ   = QR
+          E      = EC
+
+          Epoch of osculation = JDCT-2400000.5
+
+       The MPC elements correspond to SLALIB arguments as follows.
+
+         Minor planets:
+
+          JFORM  = 2
+          EPOCH  = Epoch-2400000.5
+          ORBINC = Incl. (in radians)
+          ANODE  = Node (in radians)
+          PERIH  = Perih. (in radians)
+          AORQ   = a
+          E      = e
+          AORL   = M (in radians)
+
+          Epoch of osculation = Epoch-2400000.5
+
+        Comets:
+
+          JFORM  = 3
+          EPOCH  = T-2400000.5
+          ORBINC = Incl. (in radians)
+          ANODE  = Node. (in radians)
+          PERIH  = Perih. (in radians)
+          AORQ   = q
+          E      = e
+
+          Epoch of osculation = Epoch-2400000.5
+   }
+}
+\sstroutine{
+   palPlantu
+}{
+   Topocentric RA,Dec of a Solar-System object from universal elements
+}{
+   \sstdescription{
+      Topocentric apparent RA,Dec of a Solar-System object whose
+      heliocentric universal elements are known.
+   }
+   \sstinvocation{
+      void palPlantu ( double date, double elong, double phi, const double u[13],
+                       double $*$ra, double $*$dec, double $*$r, int $*$jstat ) \{
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT MJD of observation (JD-2400000.5)
+      }
+      \sstsubsection{
+         elong = double (Given)
+      }{
+         Observer{\tt '}s east longitude (radians)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observer{\tt '}s geodetic latitude (radians)
+      }
+      \sstsubsection{
+         u = const double [13] (Given)
+      }{
+         Universal orbital elements
+         \sstitemlist{
+
+            \sstitem
+              (0)  combined mass (M$+$m)
+
+            \sstitem
+              (1)  total energy of the orbit (alpha)
+
+            \sstitem
+              (2)  reference (osculating) epoch (t0)
+
+            \sstitem
+              (3-5)  position at reference epoch (r0)
+
+            \sstitem
+              (6-8)  velocity at reference epoch (v0)
+
+            \sstitem
+              (9)  heliocentric distance at reference epoch
+
+            \sstitem
+              (10)  r0.v0
+
+            \sstitem
+              (11)  date (t)
+
+            \sstitem
+              (12)  universal eccentric anomaly (psi) of date, approx
+         }
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         Topocentric apparent RA (radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Topocentric apparent Dec (radians)
+      }
+      \sstsubsection{
+         r = double $*$ (Returned)
+      }{
+         Distance from observer (AU)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status: 0 = OK
+         \sstitemlist{
+
+            \sstitem
+                 -1 = radius vector zero
+
+            \sstitem
+                 -2 = failed to converge
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         DATE is the instant for which the prediction is required.  It is
+           in the TT timescale (formerly Ephemeris Time, ET) and is a
+           Modified Julian Date (JD-2400000.5).
+
+         \sstitem
+         The longitude and latitude allow correction for geocentric
+           parallax.  This is usually a small effect, but can become
+           important for near-Earth asteroids.  Geocentric positions can be
+           generated by appropriate use of routines palEpv (or palEvp) and
+           palUe2pv.
+
+         \sstitem
+         The {\tt "}universal{\tt "} elements are those which define the orbit for the
+           purposes of the method of universal variables (see reference 2).
+           They consist of the combined mass of the two bodies, an epoch,
+           and the position and velocity vectors (arbitrary reference frame)
+           at that epoch.  The parameter set used here includes also various
+           quantities that can, in fact, be derived from the other
+           information.  This approach is taken to avoiding unnecessary
+           computation and loss of accuracy.  The supplementary quantities
+           are (i) alpha, which is proportional to the total energy of the
+           orbit, (ii) the heliocentric distance at epoch, (iii) the
+           outwards component of the velocity at the given epoch, (iv) an
+           estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+           date and (v) that date.
+
+         \sstitem
+         The universal elements are with respect to the J2000 equator and
+           equinox.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "},
+           Interscience Publishers Inc., 1960.  Section 6.7, p199.
+
+         \sstitem
+         Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+      }
+   }
+}
+\sstroutine{
+   palPm
+}{
+   Apply corrections for proper motion a star RA,Dec
+}{
+   \sstdescription{
+      Apply corrections for proper motion to a star RA,Dec using the
+      SOFA/ERFA routine eraStarpm.
+   }
+   \sstinvocation{
+      void palPm ( double r0, double d0, double pr, double pd,
+                   double px, double rv, double ep0, double ep1,
+                   double $*$r1, double $*$d1 );
+   }
+   \sstarguments{
+      \sstsubsection{
+         r0 = double (Given)
+      }{
+         RA at epoch ep0 (radians)
+      }
+      \sstsubsection{
+         d0 = double (Given)
+      }{
+         Dec at epoch ep0 (radians)
+      }
+      \sstsubsection{
+         pr = double (Given)
+      }{
+         RA proper motion in radians per year.
+      }
+      \sstsubsection{
+         pd = double (Given)
+      }{
+         Dec proper motion in radians per year.
+      }
+      \sstsubsection{
+         px = double (Given)
+      }{
+         Parallax (arcsec)
+      }
+      \sstsubsection{
+         rv = double (Given)
+      }{
+         Radial velocity (km/sec $+$ve if receding)
+      }
+      \sstsubsection{
+         ep0 = double (Given)
+      }{
+         Start epoch in years, assumed to be Julian.
+      }
+      \sstsubsection{
+         ep1 = double (Given)
+      }{
+         End epoch in years, assumed to be Julian.
+      }
+      \sstsubsection{
+         r1 = double $*$ (Returned)
+      }{
+         RA at epoch ep1 (radians)
+      }
+      \sstsubsection{
+         d1 = double $*$ (Returned)
+      }{
+         Dec at epoch ep1 (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses eraStarpm but ignores the status returns from that routine.
+           In particular note that parallax should not be zero when the
+           proper motions are non-zero. SLA/F allows parallax to be zero.
+
+         \sstitem
+         Assumes all epochs are Julian epochs.
+      }
+   }
+}
+\sstroutine{
+   palPolmo
+}{
+   Correct for polar motion
+}{
+   \sstdescription{
+      Polar motion:  correct site longitude and latitude for polar
+      motion and calculate azimuth difference between celestial and
+      terrestrial poles.
+   }
+   \sstinvocation{
+      palPolmo ( double elongm, double phim, double xp, double yp,
+                 double $*$elong, double $*$phi, double $*$daz );
+   }
+   \sstarguments{
+      \sstsubsection{
+         elongm = double (Given)
+      }{
+         Mean logitude of the observer (radians, east $+$ve)
+      }
+      \sstsubsection{
+         phim = double (Given)
+      }{
+         Mean geodetic latitude of the observer (radians)
+      }
+      \sstsubsection{
+         xp = double (Given)
+      }{
+         Polar motion x-coordinate (radians)
+      }
+      \sstsubsection{
+         yp = double (Given)
+      }{
+         Polar motion y-coordinate (radians)
+      }
+      \sstsubsection{
+         elong = double $*$ (Returned)
+      }{
+         True longitude of the observer (radians, east $+$ve)
+      }
+      \sstsubsection{
+         phi = double $*$ (Returned)
+      }{
+         True geodetic latitude of the observer (radians)
+      }
+      \sstsubsection{
+         daz = double $*$ (Returned)
+      }{
+         Azimuth correction (terrestrial-celestial, radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         {\tt "}Mean{\tt "} longitude and latitude are the (fixed) values for the
+           site{\tt '}s location with respect to the IERS terrestrial reference
+           frame;  the latitude is geodetic.  TAKE CARE WITH THE LONGITUDE
+           SIGN CONVENTION.  The longitudes used by the present routine
+           are east-positive, in accordance with geographical convention
+           (and right-handed).  In particular, note that the longitudes
+           returned by the sla\_OBS routine are west-positive, following
+           astronomical usage, and must be reversed in sign before use in
+           the present routine.
+
+         \sstitem
+         XP and YP are the (changing) coordinates of the Celestial
+           Ephemeris Pole with respect to the IERS Reference Pole.
+           XP is positive along the meridian at longitude 0 degrees,
+           and YP is positive along the meridian at longitude
+           270 degrees (i.e. 90 degrees west).  Values for XP,YP can
+           be obtained from IERS circulars and equivalent publications;
+           the maximum amplitude observed so far is about 0.3 arcseconds.
+
+         \sstitem
+         {\tt "}True{\tt "} longitude and latitude are the (moving) values for
+           the site{\tt '}s location with respect to the celestial ephemeris
+           pole and the meridian which corresponds to the Greenwich
+           apparent sidereal time.  The true longitude and latitude
+           link the terrestrial coordinates with the standard celestial
+           models (for precession, nutation, sidereal time etc).
+
+         \sstitem
+         The azimuths produced by sla\_AOP and sla\_AOPQK are with
+           respect to due north as defined by the Celestial Ephemeris
+           Pole, and can therefore be called {\tt "}celestial azimuths{\tt "}.
+           However, a telescope fixed to the Earth measures azimuth
+           essentially with respect to due north as defined by the
+           IERS Reference Pole, and can therefore be called {\tt "}terrestrial
+           azimuth{\tt "}.  Uncorrected, this would manifest itself as a
+           changing {\tt "}azimuth zero-point error{\tt "}.  The value DAZ is the
+           correction to be added to a celestial azimuth to produce
+           a terrestrial azimuth.
+
+         \sstitem
+         The present routine is rigorous.  For most practical
+           purposes, the following simplified formulae provide an
+           adequate approximation:
+
+      }
+        elong = elongm$+$xp$*$cos(elongm)-yp$*$sin(elongm)
+        phi   = phim$+$(xp$*$sin(elongm)$+$yp$*$cos(elongm))$*$tan(phim)
+        daz   = -sqrt(xp$*$xp$+$yp$*$yp)$*$cos(elongm-atan2(xp,yp))/cos(phim)
+
+        An alternative formulation for DAZ is:
+
+        x = cos(elongm)$*$cos(phim)
+        y = sin(elongm)$*$cos(phim)
+        daz = atan2(-x$*$yp-y$*$xp,x$*$x$+$y$*$y)
+
+      \sstitemlist{
+
+         \sstitem
+         Reference:  Seidelmann, P.K. (ed), 1992.  {\tt "}Explanatory Supplement
+                       to the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7,
+                       sections 3.27, 4.25, 4.52.
+      }
+   }
+}
+
+\sstroutine{
+   palPrebn
+}{
+   Generate the matrix of precession between two objects (old)
+}{
+   \sstdescription{
+      Generate the matrix of precession between two epochs,
+      using the old, pre-IAU1976, Bessel-Newcomb model, using
+      Kinoshita{\tt '}s formulation
+   }
+   \sstinvocation{
+      void palPrebn ( double bep0, double bep1, double rmatp[3][3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         bep0 = double (Given)
+      }{
+         Beginning Besselian epoch.
+      }
+      \sstsubsection{
+         bep1 = double (Given)
+      }{
+         Ending Besselian epoch
+      }
+      \sstsubsection{
+         rmatp = double[3][3] (Returned)
+      }{
+         precession matrix in the sense V(BEP1) = RMATP $*$ V(BEP0)
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Kinoshita, H. (1975) {\tt '}Formulas for precession{\tt '}, SAO Special
+      Report No. 364, Smithsonian Institution Astrophysical
+      Observatory, Cambridge, Massachusetts.
+   }
+}
+\sstroutine{
+   palPrec
+}{
+   Form the matrix of precession between two epochs (IAU 2006)
+}{
+   \sstdescription{
+      The IAU 2006 precession matrix from ep0 to ep1 is found and
+      returned. The matrix is in the sense  V(EP1)  =  RMATP $*$ V(EP0).
+      The epochs are TDB (loosely TT) Julian epochs.
+
+      Though the matrix method itself is rigorous, the precession
+      angles are expressed through canonical polynomials which are
+      valid only for a limited time span of a few hundred years around
+      the current epoch.
+   }
+   \sstinvocation{
+      palPrec( double ep0, double ep1, double rmatp[3][3] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         ep0 = double (Given)
+      }{
+         Beginning epoch
+      }
+      \sstsubsection{
+         ep1 = double (Given)
+      }{
+         Ending epoch
+      }
+      \sstsubsection{
+         rmatp = double[3][3] (Returned)
+      }{
+         Precession matrix
+      }
+   }
+}
+\sstroutine{
+   palPreces
+}{
+   Precession - either FK4 or FK5 as required
+}{
+   \sstdescription{
+      Precess coordinates using the appropriate system and epochs.
+   }
+   \sstinvocation{
+      void palPreces ( const char sys[3], double ep0, double ep1,
+                       double $*$ra, double $*$dc );
+   }
+   \sstarguments{
+      \sstsubsection{
+         sys = const char [3] (Given)
+      }{
+         Precession to be applied: FK4 or FK5. Case insensitive.
+      }
+      \sstsubsection{
+         ep0 = double (Given)
+      }{
+         Starting epoch.
+      }
+      \sstsubsection{
+         ep1 = double (Given)
+      }{
+         Ending epoch
+      }
+      \sstsubsection{
+         ra = double $*$ (Given \& Returned)
+      }{
+         On input the RA mean equator \& equinox at epoch ep0. On exit
+         the RA mean equator \& equinox of epoch ep1.
+      }
+      \sstsubsection{
+         dec = double $*$ (Given \& Returned)
+      }{
+         On input the dec mean equator \& equinox at epoch ep0. On exit
+         the dec mean equator \& equinox of epoch ep1.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Uses palPrec for FK5 data and palPrebn for FK4 data.
+
+         \sstitem
+         The epochs are Besselian if SYSTEM={\tt '}FK4{\tt '} and Julian if {\tt '}FK5{\tt '}.
+            For example, to precess coordinates in the old system from
+            equinox 1900.0 to 1950.0 the call would be:
+                 palPreces( {\tt "}FK4{\tt "}, 1900.0, 1950.0, \&ra, \&dc );
+
+         \sstitem
+         This routine will NOT correctly convert between the old and
+           the new systems - for example conversion from B1950 to J2000.
+           For these purposes see palFk425, palFk524, palFk45z and
+           palFk54z.
+
+         \sstitem
+         If an invalid SYSTEM is supplied, values of -99D0,-99D0 will
+           be returned for both RA and DC.
+      }
+   }
+}
+\sstroutine{
+   palPrenut
+}{
+   Form the matrix of bias-precession-nutation (IAU 2006/2000A)
+}{
+   \sstdescription{
+      Form the matrix of bias-precession-nutation (IAU 2006/2000A).
+      The epoch and date are TT (but TDB is usually close enough).
+      The matrix is in the sense   v(true)  =  rmatpn $*$ v(mean).
+   }
+   \sstinvocation{
+      void palPrenut( double epoch, double date, double rmatpn[3][3] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         epoch = double (Returned)
+      }{
+         Julian epoch for mean coordinates.
+      }
+      \sstsubsection{
+         date = double (Returned)
+      }{
+         Modified Julian Date (JD-2400000.5) for true coordinates.
+      }
+      \sstsubsection{
+         rmatpn = double[3][3] (Returned)
+      }{
+         combined NPB matrix
+      }
+   }
+}
+\sstroutine{
+   palPv2el
+}{
+   Position velocity to heliocentirc osculating elements
+}{
+   \sstdescription{
+      Heliocentric osculating elements obtained from instantaneous position
+      and velocity.
+   }
+   \sstinvocation{
+      void palPv2el ( const double pv[6], double date, double pmass, int jformr,
+                      int $*$jform, double $*$epoch, double $*$orbinc,
+                      double $*$anode, double $*$perih, double $*$aorq, double $*$e,
+                      double $*$aorl, double $*$dm, int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         pv = const double [6] (Given)
+      }{
+         Heliocentric x,y,z,xdot,ydot,zdot of date,
+         J2000 equatorial triad (AU,AU/s; Note 1)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Date (TT Modified Julian Date = JD-2400000.5)
+      }
+      \sstsubsection{
+         pmass = double (Given)
+      }{
+         Mass of the planet (Sun=1; Note 2)
+      }
+      \sstsubsection{
+         jformr = int (Given)
+      }{
+         Requested element set (1-3; Note 3)
+      }
+      \sstsubsection{
+         jform = int $*$ (Returned)
+      }{
+         Element set actually returned (1-3; Note 4)
+      }
+      \sstsubsection{
+         epoch = double $*$ (Returned)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbinc = double $*$ (Returned)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode = double $*$ (Returned)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih = double $*$ (Returned)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq = double $*$ (Returned)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e = double $*$ (Returned)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         aorl = double $*$ (Returned)
+      }{
+         mean anomaly or longitude (radians, JFORM=1,2 only)
+      }
+      \sstsubsection{
+         dm = double $*$ (Returned)
+      }{
+         daily motion (radians, JFORM=1 only)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:  0 = OK
+         \sstitemlist{
+
+            \sstitem
+                   -1 = illegal PMASS
+
+            \sstitem
+                   -2 = illegal JFORMR
+
+            \sstitem
+                   -3 = position/velocity out of range
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The PV 6-vector is with respect to the mean equator and equinox of
+           epoch J2000.  The orbital elements produced are with respect to
+           the J2000 ecliptic and mean equinox.
+
+         \sstitem
+         The mass, PMASS, is important only for the larger planets.  For
+           most purposes (e.g. asteroids) use 0D0.  Values less than zero
+           are illegal.
+
+         \sstitem
+         Three different element-format options are supported:
+
+      }
+        Option JFORM=1, suitable for the major planets:
+
+        EPOCH  = epoch of elements (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = longitude of perihelion, curly pi (radians)
+        AORQ   = mean distance, a (AU)
+        E      = eccentricity, e
+        AORL   = mean longitude L (radians)
+        DM     = daily motion (radians)
+
+        Option JFORM=2, suitable for minor planets:
+
+        EPOCH  = epoch of elements (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = argument of perihelion, little omega (radians)
+        AORQ   = mean distance, a (AU)
+        E      = eccentricity, e
+        AORL   = mean anomaly M (radians)
+
+        Option JFORM=3, suitable for comets:
+
+        EPOCH  = epoch of perihelion (TT MJD)
+        ORBINC = inclination i (radians)
+        ANODE  = longitude of the ascending node, big omega (radians)
+        PERIH  = argument of perihelion, little omega (radians)
+        AORQ   = perihelion distance, q (AU)
+        E      = eccentricity, e
+
+      \sstitemlist{
+
+         \sstitem
+         It may not be possible to generate elements in the form
+           requested through JFORMR.  The caller is notified of the form
+           of elements actually returned by means of the JFORM argument:
+
+      }
+         JFORMR   JFORM     meaning
+
+           1        1       OK - elements are in the requested format
+           1        2       never happens
+           1        3       orbit not elliptical
+
+           2        1       never happens
+           2        2       OK - elements are in the requested format
+           2        3       orbit not elliptical
+
+           3        1       never happens
+           3        2       never happens
+           3        3       OK - elements are in the requested format
+
+      \sstitemlist{
+
+         \sstitem
+         The arguments returned for each value of JFORM (cf Note 5: JFORM
+           may not be the same as JFORMR) are as follows:
+
+      }
+          JFORM         1              2              3
+          EPOCH         t0             t0             T
+          ORBINC        i              i              i
+          ANODE         Omega          Omega          Omega
+          PERIH         curly pi       omega          omega
+          AORQ          a              a              q
+          E             e              e              e
+          AORL          L              M              -
+          DM            n              -              -
+
+        where:
+
+          t0           is the epoch of the elements (MJD, TT)
+          T              {\tt "}    epoch of perihelion (MJD, TT)
+          i              {\tt "}    inclination (radians)
+          Omega          {\tt "}    longitude of the ascending node (radians)
+          curly pi       {\tt "}    longitude of perihelion (radians)
+          omega          {\tt "}    argument of perihelion (radians)
+          a              {\tt "}    mean distance (AU)
+          q              {\tt "}    perihelion distance (AU)
+          e              {\tt "}    eccentricity
+          L              {\tt "}    longitude (radians, 0-2pi)
+          M              {\tt "}    mean anomaly (radians, 0-2pi)
+          n              {\tt "}    daily motion (radians)
+      \sstitemlist{
+
+         \sstitem
+             means no value is set
+
+         \sstitem
+         At very small inclinations, the longitude of the ascending node
+           ANODE becomes indeterminate and under some circumstances may be
+           set arbitrarily to zero.  Similarly, if the orbit is close to
+           circular, the true anomaly becomes indeterminate and under some
+           circumstances may be set arbitrarily to zero.  In such cases,
+           the other elements are automatically adjusted to compensate,
+           and so the elements remain a valid description of the orbit.
+
+         \sstitem
+         The osculating epoch for the returned elements is the argument
+           DATE.
+
+         \sstitem
+         Reference:  Sterne, Theodore E., {\tt "}An Introduction to Celestial
+                       Mechanics{\tt "}, Interscience Publishers, 1960
+      }
+   }
+}
+\sstroutine{
+   palPv2ue
+}{
+   Universal elements to position and velocity
+}{
+   \sstdescription{
+      Construct a universal element set based on an instantaneous position
+      and velocity.
+   }
+   \sstinvocation{
+      void palPv2ue( const double pv[6], double date, double pmass,
+                     double u[13], int $*$ jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         pv = double [6] (Given)
+      }{
+         Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1)
+      }
+      \sstsubsection{
+         date = double (Given)
+      }{
+         Date (TT modified Julian Date = JD-2400000.5)
+      }
+      \sstsubsection{
+         pmass = double (Given)
+      }{
+         Mass of the planet (Sun=1; note 2)
+      }
+      \sstsubsection{
+         u = double [13] (Returned)
+      }{
+         Universal orbital elements (Note 3)
+
+         \sstitemlist{
+
+            \sstitem
+              (0)  combined mass (M$+$m)
+
+            \sstitem
+              (1)  total energy of the orbit (alpha)
+
+            \sstitem
+              (2)  reference (osculating) epoch (t0)
+
+            \sstitem
+              (3-5)  position at reference epoch (r0)
+
+            \sstitem
+              (6-8)  velocity at reference epoch (v0)
+
+            \sstitem
+              (9)  heliocentric distance at reference epoch
+
+            \sstitem
+              (10)  r0.v0
+
+            \sstitem
+              (11)  date (t)
+
+            \sstitem
+              (12)  universal eccentric anomaly (psi) of date, approx
+         }
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status: 0 = OK
+         \sstitemlist{
+
+            \sstitem
+                   -1 = illegal PMASS
+
+            \sstitem
+                   -2 = too close to Sun
+
+            \sstitem
+                   -3 = too slow
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The PV 6-vector can be with respect to any chosen inertial frame,
+           and the resulting universal-element set will be with respect to
+           the same frame.  A common choice will be mean equator and ecliptic
+           of epoch J2000.
+
+         \sstitem
+         The mass, PMASS, is important only for the larger planets.  For
+           most purposes (e.g. asteroids) use 0D0.  Values less than zero
+           are illegal.
+
+         \sstitem
+         The {\tt "}universal{\tt "} elements are those which define the orbit for the
+           purposes of the method of universal variables (see reference).
+           They consist of the combined mass of the two bodies, an epoch,
+           and the position and velocity vectors (arbitrary reference frame)
+           at that epoch.  The parameter set used here includes also various
+           quantities that can, in fact, be derived from the other
+           information.  This approach is taken to avoiding unnecessary
+           computation and loss of accuracy.  The supplementary quantities
+           are (i) alpha, which is proportional to the total energy of the
+           orbit, (ii) the heliocentric distance at epoch, (iii) the
+           outwards component of the velocity at the given epoch, (iv) an
+           estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+           date and (v) that date.
+
+         \sstitem
+         Reference:  Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+      }
+   }
+}
+\sstroutine{
+   palPvobs
+}{
+   Position and velocity of an observing station
+}{
+   \sstdescription{
+      Returns the position and velocity of an observing station.
+   }
+   \sstinvocation{
+      palPvobs( double p, double h, double stl, double pv[6] )
+   }
+   \sstarguments{
+      \sstsubsection{
+         p = double (Given)
+      }{
+         Latitude (geodetic, radians).
+      }
+      \sstsubsection{
+         h = double (Given)
+      }{
+         Height above reference spheroid (geodetic, metres).
+      }
+      \sstsubsection{
+         stl = double (Given)
+      }{
+         Local apparent sidereal time (radians).
+      }
+      \sstsubsection{
+         pv = double[ 6 ] (Returned)
+      }{
+         position/velocity 6-vector (AU, AU/s, true equator
+                                     and equinox of date).
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The WGS84 reference ellipsoid is used.
+      }
+   }
+}
+\sstroutine{
+   palRdplan
+}{
+   Approximate topocentric apparent RA,Dec of a planet
+}{
+   \sstdescription{
+      Approximate topocentric apparent RA,Dec of a planet, and its
+      angular diameter.
+   }
+   \sstinvocation{
+      void palRdplan( double date, int np, double elong, double phi,
+                      double $*$ ra, double $*$ dec, double $*$ diam );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         MJD of observation (JD-2400000.5) in TDB. For all practical
+         purposes TT can be used instead of TDB, and for many applications
+         UT will do (except for the Moon).
+      }
+      \sstsubsection{
+         np = int (Given)
+      }{
+         Planet: 1 = Mercury
+                 2 = Venus
+                 3 = Moon
+                 4 = Mars
+                 5 = Jupiter
+                 6 = Saturn
+                 7 = Uranus
+                 8 = Neptune
+              else = Sun
+      }
+      \sstsubsection{
+         elong = double (Given)
+      }{
+         Observer{\tt '}s east longitude (radians)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Observer{\tt '}s geodetic latitude (radians)
+      }
+      \sstsubsection{
+         ra = double $*$ (Returned)
+      }{
+         RA (topocentric apparent, radians)
+      }
+      \sstsubsection{
+         dec = double $*$ (Returned)
+      }{
+         Dec (topocentric apparent, radians)
+      }
+      \sstsubsection{
+         diam = double $*$ (Returned)
+      }{
+         Angular diameter (equatorial, radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Unlike with slaRdplan, Pluto is not supported.
+
+         \sstitem
+         The longitude and latitude allow correction for geocentric
+           parallax.  This is a major effect for the Moon, but in the
+           context of the limited accuracy of the present routine its
+           effect on planetary positions is small (negligible for the
+           outer planets).  Geocentric positions can be generated by
+           appropriate use of the routines palDmoon and eraPlan94.
+      }
+   }
+}
+\sstroutine{
+   palRefco
+}{
+   Determine constants in atmospheric refraction model
+}{
+   \sstdescription{
+      Determine the constants A and B in the atmospheric refraction
+      model dZ = A tan Z $+$ B tan$*$$*$3 Z.
+
+      Z is the {\tt "}observed{\tt "} zenith distance (i.e. affected by refraction)
+      and dZ is what to add to Z to give the {\tt "}topocentric{\tt "} (i.e. in vacuo)
+      zenith distance.
+   }
+   \sstinvocation{
+      void palRefco ( double hm, double tdk, double pmb, double rh,
+                      double wl, double phi, double tlr, double eps,
+                      double $*$refa, double $*$refb );
+   }
+   \sstarguments{
+      \sstsubsection{
+         hm = double (Given)
+      }{
+         Height of the observer above sea level (metre)
+      }
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Ambient temperature at the observer (K)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Pressure at the observer (millibar)
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Relative humidity at the observer (range 0-1)
+      }
+      \sstsubsection{
+         wl = double (Given)
+      }{
+         Effective wavelength of the source (micrometre)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Latitude of the observer (radian, astronomical)
+      }
+      \sstsubsection{
+         tlr = double (Given)
+      }{
+         Temperature lapse rate in the troposphere (K/metre)
+      }
+      \sstsubsection{
+         eps = double (Given)
+      }{
+         Precision required to terminate iteration (radian)
+      }
+      \sstsubsection{
+         refa = double $*$ (Returned)
+      }{
+         tan Z coefficient (radian)
+      }
+      \sstsubsection{
+         refb = double $*$ (Returned)
+      }{
+         tan$*$$*$3 Z coefficient (radian)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         Typical values for the TLR and EPS arguments might be 0.0065 and
+         1E-10 respectively.
+
+         \sstitem
+         The radio refraction is chosen by specifying WL $>$ 100 micrometres.
+
+         \sstitem
+         The routine is a slower but more accurate alternative to the
+         palRefcoq routine.  The constants it produces give perfect
+         agreement with palRefro at zenith distances arctan(1) (45 deg)
+         and arctan(4) (about 76 deg).  It achieves 0.5 arcsec accuracy
+         for ZD $<$ 80 deg, 0.01 arcsec accuracy for ZD $<$ 60 deg, and
+         0.001 arcsec accuracy for ZD $<$ 45 deg.
+      }
+   }
+}
+\sstroutine{
+   palRefro
+}{
+   Atmospheric refraction for radio and optical/IR wavelengths
+}{
+   \sstdescription{
+      Calculates the atmospheric refraction for radio and optical/IR
+      wavelengths.
+   }
+   \sstinvocation{
+      void palRefro( double zobs, double hm, double tdk, double pmb,
+   }
+   \sstarguments{
+      \sstsubsection{
+         zobs = double (Given)
+      }{
+         Observed zenith distance of the source (radian)
+      }
+      \sstsubsection{
+         hm = double (Given)
+      }{
+         Height of the observer above sea level (metre)
+      }
+      \sstsubsection{
+         tdk = double (Given)
+      }{
+         Ambient temperature at the observer (K)
+      }
+      \sstsubsection{
+         pmb = double (Given)
+      }{
+         Pressure at the observer (millibar)
+      }
+      \sstsubsection{
+         rh = double (Given)
+      }{
+         Relative humidity at the observer (range 0-1)
+      }
+      \sstsubsection{
+         wl = double (Given)
+      }{
+         Effective wavelength of the source (micrometre)
+      }
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         Latitude of the observer (radian, astronomical)
+      }
+      \sstsubsection{
+         tlr = double (Given)
+      }{
+         Temperature lapse rate in the troposphere (K/metre)
+      }
+      \sstsubsection{
+         eps = double (Given)
+      }{
+         Precision required to terminate iteration (radian)
+      }
+      \sstsubsection{
+         ref = double $*$ (Returned)
+      }{
+         Refraction: in vacuao ZD minus observed ZD (radian)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         A suggested value for the TLR argument is 0.0065.  The
+         refraction is significantly affected by TLR, and if studies
+         of the local atmosphere have been carried out a better TLR
+         value may be available.  The sign of the supplied TLR value
+         is ignored.
+
+         \sstitem
+         A suggested value for the EPS argument is 1E-8.  The result is
+         usually at least two orders of magnitude more computationally
+         precise than the supplied EPS value.
+
+         \sstitem
+         The routine computes the refraction for zenith distances up
+         to and a little beyond 90 deg using the method of Hohenkerk
+         and Sinclair (NAO Technical Notes 59 and 63, subsequently adopted
+         in the Explanatory Supplement, 1992 edition - see section 3.281).
+
+         \sstitem
+         The code is a development of the optical/IR refraction subroutine
+         AREF of C.Hohenkerk (HMNAO, September 1984), with extensions to
+         support the radio case.  Apart from merely cosmetic changes, the
+         following modifications to the original HMNAO optical/IR refraction
+         code have been made:
+
+      }
+      .  The angle arguments have been changed to radians.
+
+      .  Any value of ZOBS is allowed (see note 6, below).
+
+      .  Other argument values have been limited to safe values.
+
+      .  Murray{\tt '}s values for the gas constants have been used
+         (Vectorial Astrometry, Adam Hilger, 1983).
+
+      .  The numerical integration phase has been rearranged for
+         extra clarity.
+
+      .  A better model for Ps(T) has been adopted (taken from
+         Gill, Atmosphere-Ocean Dynamics, Academic Press, 1982).
+
+      .  More accurate expressions for Pwo have been adopted
+         (again from Gill 1982).
+
+      .  The formula for the water vapour pressure, given the
+         saturation pressure and the relative humidity, is from
+         Crane (1976), expression 2.5.5.
+
+      .  Provision for radio wavelengths has been added using
+         expressions devised by A.T.Sinclair, RGO (private
+         communication 1989).  The refractivity model currently
+         used is from J.M.Rueger, {\tt "}Refractive Index Formulae for
+         Electronic Distance Measurement with Radio and Millimetre
+         Waves{\tt "}, in Unisurv Report S-68 (2002), School of Surveying
+         and Spatial Information Systems, University of New South
+         Wales, Sydney, Australia.
+
+      .  The optical refractivity for dry air is from Resolution 3 of
+         the International Association of Geodesy adopted at the XXIIth
+         General Assembly in Birmingham, UK, 1999.
+
+      .  Various small changes have been made to gain speed.
+
+      \sstitemlist{
+
+         \sstitem
+         The radio refraction is chosen by specifying WL $>$ 100 micrometres.
+         Because the algorithm takes no account of the ionosphere, the
+         accuracy deteriorates at low frequencies, below about 30 MHz.
+
+         \sstitem
+         Before use, the value of ZOBS is expressed in the range $+$/- pi.
+         If this ranged ZOBS is -ve, the result REF is computed from its
+         absolute value before being made -ve to match.  In addition, if
+         it has an absolute value greater than 93 deg, a fixed REF value
+         equal to the result for ZOBS = 93 deg is returned, appropriately
+         signed.
+
+         \sstitem
+         As in the original Hohenkerk and Sinclair algorithm, fixed values
+         of the water vapour polytrope exponent, the height of the
+         tropopause, and the height at which refraction is negligible are
+         used.
+
+         \sstitem
+         The radio refraction has been tested against work done by
+         Iain Coulson, JACH, (private communication 1995) for the
+         James Clerk Maxwell Telescope, Mauna Kea.  For typical conditions,
+         agreement at the 0.1 arcsec level is achieved for moderate ZD,
+         worsening to perhaps 0.5-1.0 arcsec at ZD 80 deg.  At hot and
+         humid sea-level sites the accuracy will not be as good.
+
+         \sstitem
+         It should be noted that the relative humidity RH is formally
+         defined in terms of {\tt "}mixing ratio{\tt "} rather than pressures or
+         densities as is often stated.  It is the mass of water per unit
+         mass of dry air divided by that for saturated air at the same
+         temperature and pressure (see Gill 1982).
+
+         \sstitem
+         The algorithm is designed for observers in the troposphere. The
+         supplied temperature, pressure and lapse rate are assumed to be
+         for a point in the troposphere and are used to define a model
+         atmosphere with the tropopause at 11km altitude and a constant
+         temperature above that.  However, in practice, the refraction
+         values returned for stratospheric observers, at altitudes up to
+         25km, are quite usable.
+      }
+   }
+}
+\sstroutine{
+   palRefv
+}{
+   Adjust an unrefracted Cartesian vector to include the effect of atmospheric refraction
+}{
+   \sstdescription{
+      Adjust an unrefracted Cartesian vector to include the effect of
+      atmospheric refraction, using the simple A tan Z $+$ B tan$*$$*$3 Z
+      model.
+   }
+   \sstinvocation{
+      void palRefv ( double vu[3], double refa, double refb, double vr[3] );
+   }
+   \sstarguments{
+      \sstsubsection{
+         vu[3] = double (Given)
+      }{
+         Unrefracted position of the source (Az/El 3-vector)
+      }
+      \sstsubsection{
+         refa = double (Given)
+      }{
+         tan Z coefficient (radian)
+      }
+      \sstsubsection{
+         refb = double (Given)
+      }{
+         tan$*$$*$3 Z coefficient (radian)
+      }
+      \sstsubsection{
+         vr[3] = double (Returned)
+      }{
+         Refracted position of the source (Az/El 3-vector)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         This routine applies the adjustment for refraction in the
+         opposite sense to the usual one - it takes an unrefracted
+         (in vacuo) position and produces an observed (refracted)
+         position, whereas the A tan Z $+$ B tan$*$$*$3 Z model strictly
+         applies to the case where an observed position is to have the
+         refraction removed.  The unrefracted to refracted case is
+         harder, and requires an inverted form of the text-book
+         refraction models;  the algorithm used here is equivalent to
+         one iteration of the Newton-Raphson method applied to the above
+         formula.
+
+         \sstitem
+         Though optimized for speed rather than precision, the present
+         routine achieves consistency with the refracted-to-unrefracted
+         A tan Z $+$ B tan$*$$*$3 Z model at better than 1 microarcsecond within
+         30 degrees of the zenith and remains within 1 milliarcsecond to
+         beyond ZD 70 degrees.  The inherent accuracy of the model is, of
+         course, far worse than this - see the documentation for sla\_REFCO
+         for more information.
+
+         \sstitem
+         At low elevations (below about 3 degrees) the refraction
+         correction is held back to prevent arithmetic problems and
+         wildly wrong results.  For optical/IR wavelengths, over a wide
+         range of observer heights and corresponding temperatures and
+         pressures, the following levels of accuracy (arcsec, worst case)
+         are achieved, relative to numerical integration through a model
+         atmosphere:
+
+      }
+               ZD    error
+
+               80      0.7
+               81      1.3
+               82      2.5
+               83      5
+               84     10
+               85     20
+               86     55
+               87    160
+               88    360
+               89    640
+               90   1100
+               91   1700         \} relevant only to
+               92   2600         \} high-elevation sites
+
+      The results for radio are slightly worse over most of the range,
+      becoming significantly worse below ZD=88 and unusable beyond
+      ZD=90.
+
+      \sstitemlist{
+
+         \sstitem
+         See also the routine palRefz, which performs the adjustment to
+         the zenith distance rather than in Cartesian Az/El coordinates.
+         The present routine is faster than palRefz and, except very low down,
+         is equally accurate for all practical purposes.  However, beyond
+         about ZD 84 degrees palRefz should be used, and for the utmost
+         accuracy iterative use of palRefro should be considered.
+      }
+   }
+}
+\sstroutine{
+   palRefz
+}{
+   Adjust unrefracted zenith distance
+}{
+   \sstdescription{
+      Adjust an unrefracted zenith distance to include the effect of
+      atmospheric refraction, using the simple A tan Z $+$ B tan$*$$*$3 Z
+      model (plus special handling for large ZDs).
+   }
+   \sstinvocation{
+      void palRefz ( double zu, double refa, double refb, double $*$zr );
+   }
+   \sstarguments{
+      \sstsubsection{
+         zu = double (Given)
+      }{
+         Unrefracted zenith distance of the source (radians)
+      }
+      \sstsubsection{
+         refa = double (Given)
+      }{
+         tan Z coefficient (radians)
+      }
+      \sstsubsection{
+         refb = double (Given)
+      }{
+         tan$*$$*$3 Z coefficient (radian)
+      }
+      \sstsubsection{
+         zr = double $*$ (Returned)
+      }{
+         Refracted zenith distance (radians)
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         This routine applies the adjustment for refraction in the
+         opposite sense to the usual one - it takes an unrefracted
+         (in vacuo) position and produces an observed (refracted)
+         position, whereas the A tan Z $+$ B tan$*$$*$3 Z model strictly
+         applies to the case where an observed position is to have the
+         refraction removed.  The unrefracted to refracted case is
+         harder, and requires an inverted form of the text-book
+         refraction models;  the formula used here is based on the
+         Newton-Raphson method.  For the utmost numerical consistency
+         with the refracted to unrefracted model, two iterations are
+         carried out, achieving agreement at the 1D-11 arcseconds level
+         for a ZD of 80 degrees.  The inherent accuracy of the model
+         is, of course, far worse than this - see the documentation for
+         palRefco for more information.
+
+         \sstitem
+         At ZD 83 degrees, the rapidly-worsening A tan Z $+$ B tan$\wedge$3 Z
+         model is abandoned and an empirical formula takes over.  For
+         optical/IR wavelengths, over a wide range of observer heights and
+         corresponding temperatures and pressures, the following levels of
+         accuracy (arcsec, worst case) are achieved, relative to numerical
+         integration through a model atmosphere:
+
+      }
+               ZR    error
+
+               80      0.7
+               81      1.3
+               82      2.4
+               83      4.7
+               84      6.2
+               85      6.4
+               86      8
+               87     10
+               88     15
+               89     30
+               90     60
+               91    150         \} relevant only to
+               92    400         \} high-elevation sites
+
+      For radio wavelengths the errors are typically 50\% larger than
+      the optical figures and by ZD 85 deg are twice as bad, worsening
+      rapidly below that.  To maintain 1 arcsec accuracy down to ZD=85
+      at the Green Bank site, Condon (2004) has suggested amplifying
+      the amount of refraction predicted by palRefz below 10.8 deg
+      elevation by the factor (1$+$0.00195$*$(10.8-E\_t)), where E\_t is the
+      unrefracted elevation in degrees.
+
+      The high-ZD model is scaled to match the normal model at the
+      transition point;  there is no glitch.
+
+      \sstitemlist{
+
+         \sstitem
+         Beyond 93 deg zenith distance, the refraction is held at its
+         93 deg value.
+
+         \sstitem
+         See also the routine palRefv, which performs the adjustment in
+         Cartesian Az/El coordinates, and with the emphasis on speed
+         rather than numerical accuracy.
+      }
+   }
+   \sstdiytopic{
+      References
+   }{
+      Condon,J.J., Refraction Corrections for the GBT, PTCS/PN/35.2,
+      NRAO Green Bank, 2004.
+   }
+}
+\sstroutine{
+   palRverot
+}{
+   Velocity component in a given direction due to Earth rotation
+}{
+   \sstdescription{
+      Calculate the velocity component in a given direction due to Earth
+      rotation.
+
+      The simple algorithm used assumes a spherical Earth, of
+      a radius chosen to give results accurate to about 0.0005 km/s
+      for observing stations at typical latitudes and heights.  For
+      applications requiring greater precision, use the routine
+      palPvobs.
+   }
+   \sstinvocation{
+      double palRverot ( double phi, double ra, double da, double st );
+   }
+   \sstarguments{
+      \sstsubsection{
+         phi = double (Given)
+      }{
+         latitude of observing station (geodetic) (radians)
+      }
+      \sstsubsection{
+         ra = double (Given)
+      }{
+         apparent RA (radians)
+      }
+      \sstsubsection{
+         da = double (Given)
+      }{
+         apparent Dec (radians)
+      }
+      \sstsubsection{
+         st = double (Given)
+      }{
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         palRverot = double
+      }{
+         Component of Earth rotation in direction RA,DA (km/s).
+         The result is $+$ve when the observatory is receding from the
+         given point on the sky.
+      }
+   }
+}
+\sstroutine{
+   palRvgalc
+}{
+   Velocity component in a given direction due to the rotation
+   of the Galaxy
+}{
+   \sstdescription{
+      This function returns the Component of dynamical LSR motion in
+      the direction of R2000,D2000. The result is $+$ve when the dynamical
+      LSR is receding from the given point on the sky.
+   }
+   \sstinvocation{
+      double palRvgalc( double r2000, double d2000 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 mean Dec (radians)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Component of dynamical LSR motion in direction R2000,D2000 (km/s).
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The Local Standard of Rest used here is a point in the
+         vicinity of the Sun which is in a circular orbit around
+         the Galactic centre.  Sometimes called the {\tt "}dynamical{\tt "} LSR,
+         it is not to be confused with a {\tt "}kinematical{\tt "} LSR, which
+         is the mean standard of rest of star catalogues or stellar
+         populations.
+      }
+   }
+   \sstdiytopic{
+      Reference
+   }{
+      \sstitemlist{
+
+         \sstitem
+         The orbital speed of 220 km/s used here comes from Kerr \&
+         Lynden-Bell (1986), MNRAS, 221, p1023.
+      }
+   }
+}
+\sstroutine{
+   palRvlg
+}{
+   Velocity component in a given direction due to Galactic rotation
+   and motion of the local group
+}{
+   \sstdescription{
+      This function returns the velocity component in a given
+      direction due to the combination of the rotation of the
+      Galaxy and the motion of the Galaxy relative to the mean
+      motion of the local group. The result is $+$ve when the Sun
+      is receding from the given point on the sky.
+   }
+   \sstinvocation{
+      double palRvlg( double r2000, double d2000 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 mean Dec (radians)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Component of SOLAR motion in direction R2000,D2000 (km/s).
+      }{
+      }
+   }
+   \sstdiytopic{
+      Reference
+   }{
+      \sstitemlist{
+
+         \sstitem
+         IAU Trans 1976, 168, p201.
+      }
+   }
+}
+\sstroutine{
+   palRvlsrd
+}{
+   Velocity component in a given direction due to the Sun{\tt '}s motion
+   with respect to the dynamical Local Standard of Rest
+}{
+   \sstdescription{
+      This function returns the velocity component in a given direction
+      due to the Sun{\tt '}s motion with respect to the dynamical Local Standard
+      of Rest. The result is $+$ve when the Sun is receding from the given
+      point on the sky.
+   }
+   \sstinvocation{
+      double palRvlsrd( double r2000, double d2000 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 mean Dec (radians)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Component of {\tt "}peculiar{\tt "} solar motion in direction R2000,D2000 (km/s).
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The Local Standard of Rest used here is the {\tt "}dynamical{\tt "} LSR,
+         a point in the vicinity of the Sun which is in a circular orbit
+         around the Galactic centre.  The Sun{\tt '}s motion with respect to the
+         dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion.
+
+         \sstitem
+         There is another type of LSR, called a {\tt "}kinematical{\tt "} LSR.  A
+         kinematical LSR is the mean standard of rest of specified star
+         catalogues or stellar populations, and several slightly different
+         kinematical LSRs are in use.  The Sun{\tt '}s motion with respect to an
+         agreed kinematical LSR is known as the {\tt "}standard{\tt "} solar motion.
+         To obtain a radial velocity correction with respect to an adopted
+         kinematical LSR use the routine sla\_RVLSRK.
+      }
+   }
+   \sstdiytopic{
+      Reference
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73.
+      }
+   }
+}
+\sstroutine{
+   palRvlsrk
+}{
+   Velocity component in a given direction due to the Sun{\tt '}s motion
+   with respect to an adopted kinematic Local Standard of Rest
+}{
+   \sstdescription{
+      This function returns the velocity component in a given direction
+      due to the Sun{\tt '}s motion with respect to an adopted kinematic
+      Local Standard of Rest. The result is $+$ve when the Sun is receding
+      from the given point on the sky.
+   }
+   \sstinvocation{
+      double palRvlsrk( double r2000, double d2000 )
+   }
+   \sstarguments{
+      \sstsubsection{
+         r2000 = double (Given)
+      }{
+         J2000.0 mean RA (radians)
+      }
+      \sstsubsection{
+         d2000 = double (Given)
+      }{
+         J2000.0 mean Dec (radians)
+      }
+   }
+   \sstreturnedvalue{
+      \sstsubsection{
+         Component of {\tt "}standard{\tt "} solar motion in direction R2000,D2000 (km/s).
+      }{
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The Local Standard of Rest used here is one of several
+         {\tt "}kinematical{\tt "} LSRs in common use.  A kinematical LSR is the mean
+         standard of rest of specified star catalogues or stellar
+         populations.  The Sun{\tt '}s motion with respect to a kinematical LSR
+         is known as the {\tt "}standard{\tt "} solar motion.
+
+         \sstitem
+         There is another sort of LSR, the {\tt "}dynamical{\tt "} LSR, which is a
+         point in the vicinity of the Sun which is in a circular orbit
+         around the Galactic centre.  The Sun{\tt '}s motion with respect to
+         the dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion.  To
+         obtain a radial velocity correction with respect to the
+         dynamical LSR use the routine sla\_RVLSRD.
+      }
+   }
+   \sstdiytopic{
+      Reference
+   }{
+      \sstitemlist{
+
+         \sstitem
+         Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73.
+      }
+   }
+}
+\sstroutine{
+   palSubet
+}{
+   Remove the E-terms from a pre IAU 1976 catalogue RA,Dec
+}{
+   \sstdescription{
+      Remove the E-terms (elliptic component of annual aberration)
+      from a pre IAU 1976 catalogue RA,Dec to give a mean place.
+   }
+   \sstinvocation{
+      void palSubet ( double rc, double dc, double eq,
+                      double $*$rm, double $*$dm );
+   }
+   \sstarguments{
+      \sstsubsection{
+         rc = double (Given)
+      }{
+         RA with E-terms included (radians)
+      }
+      \sstsubsection{
+         dc = double (Given)
+      }{
+         Dec with E-terms included (radians)
+      }
+      \sstsubsection{
+         eq = double (Given)
+      }{
+         Besselian epoch of mean equator and equinox
+      }
+      \sstsubsection{
+         rm = double $*$ (Returned)
+      }{
+         RA without E-terms (radians)
+      }
+      \sstsubsection{
+         dm = double $*$ (Returned)
+      }{
+         Dec without E-terms (radians)
+      }
+   }
+   \sstnotes{
+      Most star positions from pre-1984 optical catalogues (or
+      derived from astrometry using such stars) embody the
+      E-terms.  This routine converts such a position to a
+      formal mean place (allowing, for example, comparison with a
+      pulsar timing position).
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      Explanatory Supplement to the Astronomical Ephemeris,
+      section 2D, page 48.
+   }
+}
+\sstroutine{
+   palSupgal
+}{
+   Convert from supergalactic to galactic coordinates
+}{
+   \sstdescription{
+      Transformation from de Vaucouleurs supergalactic coordinates
+      to IAU 1958 galactic coordinates
+   }
+   \sstinvocation{
+      void palSupgal ( double dsl, double dsb, double $*$dl, double $*$db );
+   }
+   \sstarguments{
+      \sstsubsection{
+         dsl = double (Given)
+      }{
+         Supergalactic longitude.
+      }
+      \sstsubsection{
+         dsb = double (Given)
+      }{
+         Supergalactic latitude.
+      }
+      \sstsubsection{
+         dl = double $*$ (Returned)
+      }{
+         Galactic longitude.
+      }
+      \sstsubsection{
+         db = double $*$ (Returned)
+      }{
+         Galactic latitude.
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      \sstitemlist{
+
+         \sstitem
+          de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference
+            Catalogue of Bright Galaxies, U. Texas, page 8.
+
+         \sstitem
+          Systems \& Applied Sciences Corp., Documentation for the
+            machine-readable version of the above catalogue,
+            Contract NAS 5-26490.
+
+      }
+      (These two references give different values for the galactic
+       longitude of the supergalactic origin.  Both are wrong;  the
+       correct value is L2=137.37.)
+   }
+}
+\sstroutine{
+   palUe2el
+}{
+   Universal elements to heliocentric osculating elements
+}{
+   \sstdescription{
+      Transform universal elements into conventional heliocentric
+      osculating elements.
+   }
+   \sstinvocation{
+      void palUe2el ( const double u[13], int jformr,
+                      int $*$jform, double $*$epoch, double $*$orbinc,
+                      double $*$anode, double $*$perih, double $*$aorq, double $*$e,
+                      double $*$aorl, double $*$dm, int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         u = const double [13] (Given)
+      }{
+         Universal orbital elements (Note 1)
+             (0)  combined mass (M$+$m)
+             (1)  total energy of the orbit (alpha)
+             (2)  reference (osculating) epoch (t0)
+           (3-5)  position at reference epoch (r0)
+           (6-8)  velocity at reference epoch (v0)
+             (9)  heliocentric distance at reference epoch
+            (10)  r0.v0
+            (11)  date (t)
+            (12)  universal eccentric anomaly (psi) of date, approx
+      }
+      \sstsubsection{
+         jformr = int (Given)
+      }{
+         Requested element set (1-3; Note 3)
+      }
+      \sstsubsection{
+         jform = int $*$ (Returned)
+      }{
+         Element set actually returned (1-3; Note 4)
+      }
+      \sstsubsection{
+         epoch = double $*$ (Returned)
+      }{
+         Epoch of elements (TT MJD)
+      }
+      \sstsubsection{
+         orbinc = double $*$ (Returned)
+      }{
+         inclination (radians)
+      }
+      \sstsubsection{
+         anode = double $*$ (Returned)
+      }{
+         longitude of the ascending node (radians)
+      }
+      \sstsubsection{
+         perih = double $*$ (Returned)
+      }{
+         longitude or argument of perihelion (radians)
+      }
+      \sstsubsection{
+         aorq = double $*$ (Returned)
+      }{
+         mean distance or perihelion distance (AU)
+      }
+      \sstsubsection{
+         e = double $*$ (Returned)
+      }{
+         eccentricity
+      }
+      \sstsubsection{
+         aorl = double $*$ (Returned)
+      }{
+         mean anomaly or longitude (radians, JFORM=1,2 only)
+      }
+      \sstsubsection{
+         dm = double $*$ (Returned)
+      }{
+         daily motion (radians, JFORM=1 only)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:  0 = OK
+         \sstitemlist{
+
+            \sstitem
+                    1 = illegal combined mass
+
+            \sstitem
+                    2 = illegal JFORMR
+
+            \sstitem
+                    3 = position/velocity out of range
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+           The {\tt "}universal{\tt "} elements are those which define the orbit for the
+             purposes of the method of universal variables (see reference 2).
+             They consist of the combined mass of the two bodies, an epoch,
+             and the position and velocity vectors (arbitrary reference frame)
+             at that epoch.  The parameter set used here includes also various
+             quantities that can, in fact, be derived from the other
+             information.  This approach is taken to avoiding unnecessary
+             computation and loss of accuracy.  The supplementary quantities
+             are (i) alpha, which is proportional to the total energy of the
+             orbit, (ii) the heliocentric distance at epoch, (iii) the
+             outwards component of the velocity at the given epoch, (iv) an
+             estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+             date and (v) that date.
+
+         \sstitem
+           The universal elements are with respect to the mean equator and
+             equinox of epoch J2000.  The orbital elements produced are with
+             respect to the J2000 ecliptic and mean equinox.
+
+         \sstitem
+           Three different element-format options are supported:
+
+      }
+           Option JFORM=1, suitable for the major planets:
+
+           EPOCH  = epoch of elements (TT MJD)
+           ORBINC = inclination i (radians)
+           ANODE  = longitude of the ascending node, big omega (radians)
+           PERIH  = longitude of perihelion, curly pi (radians)
+           AORQ   = mean distance, a (AU)
+           E      = eccentricity, e
+           AORL   = mean longitude L (radians)
+           DM     = daily motion (radians)
+
+           Option JFORM=2, suitable for minor planets:
+
+           EPOCH  = epoch of elements (TT MJD)
+           ORBINC = inclination i (radians)
+           ANODE  = longitude of the ascending node, big omega (radians)
+           PERIH  = argument of perihelion, little omega (radians)
+           AORQ   = mean distance, a (AU)
+           E      = eccentricity, e
+           AORL   = mean anomaly M (radians)
+
+           Option JFORM=3, suitable for comets:
+
+           EPOCH  = epoch of perihelion (TT MJD)
+           ORBINC = inclination i (radians)
+           ANODE  = longitude of the ascending node, big omega (radians)
+           PERIH  = argument of perihelion, little omega (radians)
+           AORQ   = perihelion distance, q (AU)
+           E      = eccentricity, e
+
+      \sstitemlist{
+
+         \sstitem
+           It may not be possible to generate elements in the form
+             requested through JFORMR.  The caller is notified of the form
+             of elements actually returned by means of the JFORM argument:
+
+      }
+           JFORMR   JFORM     meaning
+
+             1        1       OK - elements are in the requested format
+             1        2       never happens
+             1        3       orbit not elliptical
+
+             2        1       never happens
+             2        2       OK - elements are in the requested format
+             2        3       orbit not elliptical
+
+             3        1       never happens
+             3        2       never happens
+             3        3       OK - elements are in the requested format
+
+      \sstitemlist{
+
+         \sstitem
+           The arguments returned for each value of JFORM (cf Note 6: JFORM
+             may not be the same as JFORMR) are as follows:
+
+      }
+            JFORM         1              2              3
+            EPOCH         t0             t0             T
+            ORBINC        i              i              i
+            ANODE         Omega          Omega          Omega
+            PERIH         curly pi       omega          omega
+            AORQ          a              a              q
+            E             e              e              e
+            AORL          L              M              -
+            DM            n              -              -
+
+        where:
+
+            t0           is the epoch of the elements (MJD, TT)
+            T              {\tt "}    epoch of perihelion (MJD, TT)
+            i              {\tt "}    inclination (radians)
+            Omega          {\tt "}    longitude of the ascending node (radians)
+            curly pi       {\tt "}    longitude of perihelion (radians)
+            omega          {\tt "}    argument of perihelion (radians)
+            a              {\tt "}    mean distance (AU)
+            q              {\tt "}    perihelion distance (AU)
+            e              {\tt "}    eccentricity
+            L              {\tt "}    longitude (radians, 0-2pi)
+            M              {\tt "}    mean anomaly (radians, 0-2pi)
+            n              {\tt "}    daily motion (radians)
+      \sstitemlist{
+
+         \sstitem
+               means no value is set
+
+         \sstitem
+           At very small inclinations, the longitude of the ascending node
+             ANODE becomes indeterminate and under some circumstances may be
+             set arbitrarily to zero.  Similarly, if the orbit is close to
+             circular, the true anomaly becomes indeterminate and under some
+             circumstances may be set arbitrarily to zero.  In such cases,
+             the other elements are automatically adjusted to compensate,
+             and so the elements remain a valid description of the orbit.
+
+      }
+      See Also:
+      \sstitemlist{
+
+         \sstitem
+           Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "},
+             Interscience Publishers Inc., 1960.  Section 6.7, p199.
+
+         \sstitem
+           Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+      }
+   }
+}
+\sstroutine{
+   palUe2pv
+}{
+   Heliocentric position and velocity of a planet, asteroid or comet, from universal elements
+}{
+   \sstdescription{
+      Heliocentric position and velocity of a planet, asteroid or comet,
+      starting from orbital elements in the {\tt "}universal variables{\tt "} form.
+   }
+   \sstinvocation{
+      void palUe2pv( double date, double u[13], double pv[6], int $*$jstat );
+   }
+   \sstarguments{
+      \sstsubsection{
+         date = double (Given)
+      }{
+         TT Modified Julian date (JD-2400000.5).
+      }
+      \sstsubsection{
+         u = double [13] (Given \& Returned)
+      }{
+          Universal orbital elements (updated, see note 1)
+          given    (0)   combined mass (M$+$m)
+            {\tt "}      (1)   total energy of the orbit (alpha)
+            {\tt "}      (2)   reference (osculating) epoch (t0)
+            {\tt "}    (3-5)   position at reference epoch (r0)
+            {\tt "}    (6-8)   velocity at reference epoch (v0)
+            {\tt "}      (9)   heliocentric distance at reference epoch
+            {\tt "}     (10)   r0.v0
+         returned (11)   date (t)
+            {\tt "}     (12)   universal eccentric anomaly (psi) of date
+      }
+      \sstsubsection{
+         pv = double [6] (Returned)
+      }{
+         Position (AU) and velocity (AU/s)
+      }
+      \sstsubsection{
+         jstat = int $*$ (Returned)
+      }{
+         status:  0 = OK
+         \sstitemlist{
+
+            \sstitem
+                    1 = radius vector zero
+
+            \sstitem
+                    2 = failed to converge
+         }
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The {\tt "}universal{\tt "} elements are those which define the orbit for the
+           purposes of the method of universal variables (see reference).
+           They consist of the combined mass of the two bodies, an epoch,
+           and the position and velocity vectors (arbitrary reference frame)
+           at that epoch.  The parameter set used here includes also various
+           quantities that can, in fact, be derived from the other
+           information.  This approach is taken to avoiding unnecessary
+           computation and loss of accuracy.  The supplementary quantities
+           are (i) alpha, which is proportional to the total energy of the
+           orbit, (ii) the heliocentric distance at epoch, (iii) the
+           outwards component of the velocity at the given epoch, (iv) an
+           estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given
+           date and (v) that date.
+
+         \sstitem
+         The companion routine is palEl2ue.  This takes the conventional
+           orbital elements and transforms them into the set of numbers
+           needed by the present routine.  A single prediction requires one
+           one call to palEl2ue followed by one call to the present routine;
+           for convenience, the two calls are packaged as the routine
+           sla\_PLANEL.  Multiple predictions may be made by again
+           calling palEl2ue once, but then calling the present routine
+           multiple times, which is faster than multiple calls to palPlanel.
+
+         \sstitem
+         It is not obligatory to use palEl2ue to obtain the parameters.
+           However, it should be noted that because palEl2ue performs its
+           own validation, no checks on the contents of the array U are made
+           by the present routine.
+           in the TT timescale (formerly Ephemeris Time, ET) and is a
+           Modified Julian Date (JD-2400000.5).
+           units (solar masses, AU and canonical days).  The position and
+           velocity are not sensitive to the choice of reference frame.  The
+           palEl2ue routine in fact produces coordinates with respect to the
+           J2000 equator and equinox.
+
+         \sstitem
+         The algorithm was originally adapted from the EPHSLA program of
+           D.H.P.Jones (private communication, 1996).  The method is based
+           on Stumpff{\tt '}s Universal Variables.
+
+         \sstitem
+         Reference:  Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+      }
+   }
+}
+\sstroutine{
+   palUnpcd
+}{
+   Remove pincushion/barrel distortion
+}{
+   \sstdescription{
+      Remove pincushion/barrel distortion from a distorted [x,y] to give
+      tangent-plane [x,y].
+   }
+   \sstinvocation{
+      palUnpcd( double disco, double $*$ x, double $*$ y );
+   }
+   \sstarguments{
+      \sstsubsection{
+         disco = double (Given)
+      }{
+         Pincushion/barrel distortion coefficient.
+      }
+      \sstsubsection{
+         x = double $*$ (Given \& Returned)
+      }{
+         On input the distorted X coordinate, on output
+         the tangent-plane X coordinate.
+      }
+      \sstsubsection{
+         y = double $*$ (Given \& Returned)
+      }{
+         On input the distorted Y coordinate, on output
+         the tangent-plane Y coordinate.
+      }
+   }
+   \sstnotes{
+      \sstitemlist{
+
+         \sstitem
+         The distortion is of the form RP = R$*$(1$+$C$*$R$\wedge$2), where R is
+           the radial distance from the tangent point, C is the DISCO
+           argument, and RP is the radial distance in the presence of
+           the distortion.
+
+         \sstitem
+         For pincushion distortion, C is $+$ve;  for barrel distortion,
+           C is -ve.
+
+         \sstitem
+         For X,Y in \texttt{"} radians\texttt{"}  - units of one projection radius,
+           which in the case of a photograph is the focal length of
+           the camera - the following DISCO values apply:
+
+\begin{center}
+\begin{tabular}{ll}
+            Geometry          &DISCO \\
+\hline
+            astrograph        & 0.0 \\
+            Schmidt           &-0.3333 \\
+            AAT PF doublet  &$+$147.069 \\
+            AAT PF triplet  &$+$178.585 \\
+            AAT f/8          &$+$21.20 \\
+            JKT f/8          &$+$13.32 \\
+\end{tabular}
+\end{center}
+
+      }
+      \sstitemlist{
+
+         \sstitem
+         The present routine is a rigorous inverse of the companion
+           routine palPcd.  The expression for RP in Note 1 is rewritten
+           in the form x$\wedge$3$+$a$*$x$+$b=0 and solved by standard techniques.
+
+         \sstitem
+         Cases where the cubic has multiple real roots can sometimes
+           occur, corresponding to extreme instances of barrel distortion
+           where up to three different undistorted [X,Y]s all produce the
+           same distorted [X,Y].  However, only one solution is returned,
+           the one that produces the smallest change in [X,Y].
+      }
+   }
+   \sstdiytopic{
+      See Also
+   }{
+      palPcd
+   }
+}
+
+
+
+% ? End of main text
+\end{document}
Index: branches/FACT++_part_filenames/recompile.sh
===================================================================
--- branches/FACT++_part_filenames/recompile.sh	(revision 18732)
+++ branches/FACT++_part_filenames/recompile.sh	(revision 18732)
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ ! -f compiling.lock ]; then
+
+   touch compiling.lock
+
+   if [ ! -x dimctrl ]; then
+      make $* dimctrl || exit
+   fi
+
+   dimctrl --quit --cmd ".w 3000" --cmd "DIS_DNS/KILL_SERVERS 126" --cmd ".w 3000" --cmd "DIS_DNS/EXIT 126"
+
+   sleep 5
+
+   make clean
+fi
+
+make $* && rm compiling.lock && sleep 15 && dimctrl --quit --cmd '.js scripts/check.js'
Index: branches/FACT++_part_filenames/scripts/CheckFTU.js
===================================================================
--- branches/FACT++_part_filenames/scripts/CheckFTU.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/CheckFTU.js	(revision 18732)
@@ -0,0 +1,47 @@
+'use strict';
+
+var service_ftm = new Subscription("FTM_CONTROL/FTU_LIST");
+
+// Make sure that we receive a 'Yes, we are connected and names are available' event
+service_ftm.get(5000);
+
+// Check for all FTUs to be connected when the next event arrives
+service_ftm.onchange = function(event)
+{
+    var ping = event.obj['Ping'];
+    for (var i=0; i<40; i++)
+    {
+        if (ping[i]==1)
+            continue;
+
+        var str = "";
+        for (var h=0; h<4; h++)
+        {
+            for (var w=0; w<10; w++)
+                str += ping[h*10+w];
+            if (h!=3)
+                str += '|';
+        }
+
+        console.out(str)
+
+        console.out("Problems in the FTU communication found.");
+        console.out("Send command to disable all FTUs.");
+        console.out(" => Crate reset needed.");
+
+        dim.send("FTM_CONTROL/ENABLE_FTU", -1, false);
+        throw new Error("CrateReset[FTU]");
+    }
+
+    // Signal success by closing the connection
+    service_ftm.close();
+}
+
+// Send ping (request FTU status)
+dim.send("FTM_CONTROL/PING");
+
+// Wait for 1 second for the answer
+var timeout = new Thread(3000, function(){ if (service_ftm.isOpen) throw new Error("Could not check that all FTUs are ok within 3s."); });
+while (service_ftm.isOpen)
+    v8.sleep();
+
Index: branches/FACT++_part_filenames/scripts/CheckStates.js
===================================================================
--- branches/FACT++_part_filenames/scripts/CheckStates.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/CheckStates.js	(revision 18732)
@@ -0,0 +1,304 @@
+'use strict';
+
+/**
+ *
+ *  Waits for the timeout (in ms) for the given servers to be online
+ *  and in one of the provided states.
+ *
+ *  Returns true if MAGIC_WEATHER is online, FTM_CONTROL is in Idle
+ *  and LID_CONTROL is either in Open or Closed.
+ *
+ *  Returns false if all given servers are online, but at least one is
+ *  not in the expected state.
+ *
+ *  Throws an exception if not all provided servers are online after
+ *  the given timeout.
+ *
+ *  If you want to wait infinitely: CheckStates(table, null)
+ *  If the timeout is negative (e.g. -500 means 500ms) or zero,
+ *     no exception is thrown but false is returned.
+ *
+ * @param table
+ *
+ * @param {Integer} [timeout=5000]
+ *    timeout in milliseconds
+ *
+ * @returns
+ *
+ * @throws
+ *
+ * @example
+ *    var table =
+ *    [
+ *        [ "MAGIC_WEATHER"  ],
+ *        [ "FTM_CONTROL",  [ "Idle" ] ],
+ *        [ "LID_CONTROL",  [ "Open", "Closed" ] ],
+ *    ];
+ *
+ *    checkStates(table);
+ *
+ *
+ */
+function checkStates(table, timeout, wait)
+{
+    if (timeout===undefined)
+        timeout = 5000;
+
+    var states = [];
+
+    var time = new Date();
+    while (1)
+    {
+        // Get states of all servers in question
+        states = [];
+        for (var i=0; i<table.length; i++)
+        {
+            var state = dim.state(table[i][0]);
+            states[i] = state ? state.name : undefined;
+        }
+
+        // Check if they are all valid
+        if (states.indexOf(undefined)<0)
+        {
+            // If they are all valid, check them against the
+            // state lists provided for each server
+            var rc = true;
+            for (var i=0; i<table.length; i++)
+            {
+                if (!table[i][1] || table[i][1].indexOf(states[i])>=0)
+                    continue;
+
+                if (!wait)
+                    dim.log(table[i][0]+" in ["+states[i]+"] not as it ought to be ["+table[i][1]+"]");
+
+                rc = false;
+            }
+            if (rc)
+                return rc;
+
+            if (!wait)
+                return false;
+        }
+
+        if ((new Date())-time>=Math.abs(timeout))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout<0)
+        return false;
+
+    // Create a list of all servers which do not have valid states yet
+    var servers = [];
+    for (var i=0; i<table.length; i++)
+        if (!states[i])
+            servers.push(table[i][0]);
+
+    // If all servers do not yet have valid states, it is obsolete to
+    // print all their names
+    if (servers.length==table.length && servers.length>1)
+        servers = [ "servers." ];
+
+    throw new Error("Timeout waiting for access to named states of "+servers.join(", "));
+}
+
+function checkSend(servers, timeout)
+{
+    if (timeout===undefined)
+        timeout = 5000;
+
+    var states = [];
+
+    var time = new Date();
+    while (1)
+    {
+        // Get states of all servers in question
+        states = [];
+        for (var i=0; i<servers.length; i++)
+            states[i] = dim.send(servers[i]);
+
+        // Check if they are all valid
+        if (states.indexOf(false)<0)
+            return true;
+
+        if ((new Date())-time>=Math.abs(timeout))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout<0)
+        return false;
+
+    // Create a list of all servers which do not have valid states yet
+    var missing = [];
+    for (var i=0; i<servers.length; i++)
+        if (!states[i])
+            missing.push(servers[i]);
+
+    throw new Error("Timeout waiting for send-ready of "+missing.join(", "));
+}
+
+function Wait(server,states,timeout1,timeout2)
+{
+    if (typeof(states)=="string")
+        states = [ states ];
+
+    // If timeout2 is defined and >0 wait first for the
+    // server to come online. If it does not come online
+    // in time, an exception is thrown.
+    if (timout2>0 && CheckStates([ server ], timeout2))
+        return true;
+
+    var time = new Date();
+    while (1)
+    {
+        // If a server disconnects now while checking for the
+        // states, an exception will be thrown, too.
+        if (CheckStates([ server, states ], 0))
+            return true;
+
+        if (Date()-time>=abs(timeout1))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout1<0)
+        throw new Error("Timeout waiting for Server "+server+" to be in ["+states+"]");
+
+    return false;
+}
+
+// Wait 5s for the FAD_CONTROL to get to the states
+//   return false if FAD_CONTROL is not online
+//   return false if state is not
+// Wait("FAD_CONTROL", [ "COnnected", "Disconnected" ], 5000);
+
+function dimwait(server, state, timeout)
+{
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (1)
+    {
+        var s = dim.state(server);
+        if (s.index===state || s.name===state)
+            return true;
+
+        //if (s.index==undefined)
+        //    throw "Server "+server+" not connected waiting for "+state+".";
+
+        if (Date()-time>=timeout)
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout>0)
+        throw new Error("Timeout waiting for ["+states+"] of "+server+".");
+
+    return false;
+
+
+    /*
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (timeout<0 || new Date()-time<timeout)
+    {
+        var s = dim.state(server);
+        if (s.index===state || s.name===state)
+            return true;
+
+        if (s.index==undefined)
+            throw "Server "+server+" not connected waiting for "+state+".";
+
+        v8.sleep();
+    }
+
+    return false;
+*/
+}
+
+function Sleep(timeout)
+{
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (Date()-time<timeout)
+        v8.sleep();
+}
+
+function Timer()
+{
+    this.date = new Date();
+
+    this.reset = function() { this.date = new Date(); }
+    this.print = function(id)
+    {
+        var diff = Date()-this.date;
+        if (id)
+            console.out("Time["+id+"]: "+diff+"ms");
+        else
+            console.out("Time: "+diff+"ms");
+    }
+}
+
+function WaitStates(server, states, timeout, func)
+{
+    var save = dim.onchange[server];
+
+    function inner()
+    {
+        dim.onchange[server] = function(arg)
+        {
+            if (!this.states)
+                this.states = states instanceof Array ? states : [ states ];
+
+            var comp = this.states[0];
+            if (arg.index===comp || arg.name===comp || comp=='*')
+                this.states.shift();
+
+            //console.out(JSON.stringify(arg), this.states, comp, arg.name, "");
+
+            if (save instanceof Function)
+                save();
+
+            if (this.states.length==0)
+                delete dim.onchange[server];
+
+        }
+
+        if (func instanceof Function)
+            func();
+
+        var time = new Date();
+        while (1)
+        {
+            if (!dim.onchange[server])
+                return true;
+
+            if (new Date()-time>=timeout)
+                break;
+
+            v8.sleep();
+        }
+
+        delete dim.onchange[server];
+
+        if (timeout>0)
+            throw new Error("Timeout waiting for ["+states+"] of "+server+".");
+
+        return false;
+    }
+
+    var rc = inner();
+    dim.onchang
+        e[server] = save;
+    return rc;
+}
Index: branches/FACT++_part_filenames/scripts/CheckUnderflow.js
===================================================================
--- branches/FACT++_part_filenames/scripts/CheckUnderflow.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/CheckUnderflow.js	(revision 18732)
@@ -0,0 +1,243 @@
+'use strict';
+
+var Func = function() { };
+Func.sum = function(a, b) { return a+b; }
+Func.sq  = function(a, b) { return Math.sqrt(a*a + b*b); }
+Func.min = function(a, b) { return Math.min(a, b); }
+Func.max = function(a, b) { return Math.max(a, b); }
+Func.avg = function(arr)  { return arr.reduce(Func.Sum, 0)/arr.length; }
+Func.stat = function(arr, func)
+{
+    if (arr.length==0)
+        return undefined;
+
+    var sum = 0;
+    var sq  = 0;
+    var cnt = 0;
+    var min = arr[0];
+    var max = arr[0];
+    arr.forEach(function(val, idx) { sum+=val; sq+=val*val; if (val>max) max=val; if (val<min) min=val; if (func && func(val, idx)) cnt++ });
+    sum /= arr.length;
+    sq  /= arr.length;
+
+    return { avg:sum, rms:Math.sqrt(sq-sum*sum), min:min, max:max, count:cnt };
+}
+
+// ===================================================================
+
+console.out(("\n%78s".$("")).replace(/ /g, "="));
+
+if (dim.state("FTM_CONTROL").name=="TriggerOn")
+{
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+    dim.wait("FTM_CONTROL", "Valid");
+}
+
+
+include('scripts/CheckStates.js');
+
+var table =
+[
+ [ "MCP",                 [ "Idle"      ] ],
+ [ "AGILENT_CONTROL_24V", [ "VoltageOn" ] ],
+ [ "AGILENT_CONTROL_50V", [ "VoltageOn" ] ],
+ [ "AGILENT_CONTROL_80V", [ "VoltageOn" ] ],
+ [ "FTM_CONTROL",         [ "Valid"     ] ],
+ [ "FAD_CONTROL",         [ "Connected",    "RunInProgress"   ] ],
+ [ "BIAS_CONTROL",        [ "Disconnected", "VoltageOff"      ] ],
+ [ "DATA_LOGGER",         [ "WaitForRun",   "NightlyFileOpen", "Logging" ] ],
+];
+
+console.out("Checking states.");
+if (!checkStates(table))
+{
+    throw new Error("Something unexpected has happened. One of the servers",
+            "is in a state in which it should not be. Please,",
+            "try to find out what happened...");
+}
+
+// ===================================================================
+
+include('scripts/Hist1D.js');
+include('scripts/Hist2D.js');
+
+console.out("Checking power on time");
+
+var service_drs = new Subscription("FAD_CONTROL/DRS_RUNS");
+
+var runs = service_drs.get(5000, false);
+//if (!runs)
+//    throw new Error("Could not connect to FAD_CONTROL/DRS_RUNS");
+
+var power = dim.state("AGILENT_CONTROL_50V").time;
+var now   = new Date();
+
+var diff = (now-runs.time)/3600000;
+
+console.out(" * Now:                "+now);
+console.out(" * Last power cycle:   "+power);
+console.out(" * Last DRS calib set: "+(runs.data?runs.time:"none"));
+
+
+if (1)//diff>8 && now.getHours()>16 || runs.time<power)
+{
+    console.out("Checking send.");
+    checkSend(["FAD_CONTROL", "MCP", "RATE_CONTROL"]);
+    console.out("Checking send: done");
+
+    //console.out("Most probablay the camera has not been checked for underflows yet.");
+
+    var service_event = new Subscription("FAD_CONTROL/EVENT_DATA");
+
+    dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+    dim.send("FAD_CONTROL/SET_FILE_FORMAT", 0);
+
+    var sub_runs = new Subscription("FAD_CONTROL/RUNS");
+    var sruns = sub_runs.get(5000, false);
+
+    if (dim.state("FAD_CONTROL").name=="RunInProgress" || sruns.qos==1)
+    {
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+
+        console.out("Waiting for open files to be closed...");
+        v8.timeout(60000, function() { if (sub_runs.get(0, false).qos==0) return true; });
+
+        // Although the file should be closed now, the processing might still be on-going
+        // and delayed events might be received. The only fix for that issue is to
+        // add the run number to the data we are waiting for
+        v8.sleep(5000);
+    }
+
+    sub_runs.close();
+
+    console.out("Starting drs-gain... waiting for new event");
+
+    var sub_startrun = new Subscription("FAD_CONTROL/START_RUN");
+    var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+    var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+    sub_connections.get(5000);
+    sub_startrun.get(5000);
+
+    include('scripts/takeRun.js');
+
+    while (1)
+    {
+        var event_counter = service_event.get(10000, false).counter;
+
+        var stop = function ()
+        {
+            while (1)
+            {
+                if (dim.state("MCP").name=="TakingData" && service_event.get(0, false).counter>event_counter)
+                {
+                    dim.send("MCP/STOP");
+                    console.out("Sent MCP/STOP.");
+                    return;
+                }
+                v8.sleep(100);
+            }
+        }
+
+        var thread = new Thread(250, stop);
+
+        var rc = takeRun("drs-gain");
+
+        thread.kill();
+
+        if (rc)
+            break;
+    }
+
+    console.out("Event received.");
+
+    sub_incomplete.close();
+    sub_connections.close();
+    sub_startrun.close();
+
+
+    // FIXME: Restore DRS calibration in case of failure!!
+    //        FAD Re-connect in case of failure?
+    //        MCP/RESET in case of failure?
+    //        Proper error reporting!
+
+    var event = service_event.get(3000);//, false);
+    service_event.close();
+
+    console.out("Run stopped.");
+
+    dim.send("RATE_CONTROL/STOP"); // GlobalThresholdSet -> Connected
+    dim.wait("MCP", "Idle", 3000);
+
+    var nn = runs.data && runs.data.length>0 && runs.obj['roi']>0 ? runs.obj['run'].reduce(Func.max) : -1;
+    if (nn>0)
+    {
+        var night = runs.obj['night'];
+
+        var yy =  night/10000;
+        var mm = (night/100)%100;
+        var dd =  night%100;
+
+        var filefmt = "/loc_data/raw/%d/%02d/%02d/%8d_%03d.drs.fits";
+
+        dim.log("Trying to restore last DRS calibration #"+nn+"  ["+runs.time+"; "+night+"]");
+
+        // FIXME: Timeout
+        var drs_counter = service_drs.get(0, false).counter;
+        dim.send("FAD_CONTROL/LOAD_DRS_CALIBRATION", filefmt.$(yy, mm, dd, night, nn));
+
+        try
+        {
+            var now = new Date();
+            v8.timeout(3000, function() { if (service_drs.get(0, false).counter>drs_counter) return true; });
+            dim.log("Last DRS calibration restored ["+(new Date()-now)/1000+"s]");
+        }
+        catch (e)
+        {
+            console.warn("Restoring last DRS calibration failed.");
+        }
+    }
+
+    var hist = Hist2D(16, -2048.5, 2048.5, 11, -10, 100);
+
+    var data = event.obj;
+
+    for (var i=0; i<1440; i++)
+        hist.fill(data.avg[i], isNaN(data.rms[i])?-1:data.rms[i]);
+
+    hist.print();
+
+    var stat0 = Func.stat(data.avg, function(val, idx) { if (val<600) console.out(" PIX[hw="+idx+"]="+val); return val<600; });
+    var stat1 = Func.stat(data.rms);
+
+    console.out("Avg[min]=%.1f".$(stat0.min));
+    console.out("Avg[avg]=%.1f +- %.1f".$(stat0.avg, stat0.rms));
+    console.out("Avg[max]=%.1f".$(+stat0.max));
+    console.out("Avg[cnt]="+stat0.count);
+    console.out("");
+    console.out("Rms[min]=%.1f".$(stat1.min));
+    console.out("Rms[avg]=%.1f +- %.1f".$(stat1.avg, stat1.rms));
+    console.out("Rms[max]=%.1f".$(stat1.max));
+    console.out(("%78s\n".$("")).replace(/ /g, "="));
+
+    //      OK                            UNDERFLOW
+    // ------------------------------------------------------
+    // Avg[min]=722.0                Avg[min]=-380.0
+    // Avg[avg]=815.9 +- 45.9        Avg[avg]= 808.0 +- 102.0
+    // Avg[max]=930.5                Avg[max]= 931.1
+    // Avg[cnt]=0                    Avg[cnt]= 9
+
+    // Rms[min]=14.0                 Rms[min]=13.9
+    // Rms[avg]=16.5 +- 1.6          Rms[avg]=18.8 +- 26.8
+    // Rms[max]=44.0                 Rms[max]=382.1
+
+    if (stat0.count>0)
+    {
+        if (stat0.count>8)
+            throw new Error("Underflow condition detected in about "+parseInt(stat0.count/9+.5)+" DRS.");
+
+        console.warn("There is probably an underflow condition in one DRS... please check manually.");
+    }
+}
+
+service_drs.close();
Index: branches/FACT++_part_filenames/scripts/Handler.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Handler.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Handler.js	(revision 18732)
@@ -0,0 +1,48 @@
+'use strict';
+
+function Handler(name)
+{
+    this.name  = name;
+    this.array = [];
+
+    this.add = function(func)
+    {
+        this.array.push(func);
+        //console.out(this.name+":add [N="+this.array.length+"]");
+    }
+
+    this.run = function(timeout)
+    {
+        console.out(this.name+":start");
+
+        var rc = [];
+
+        var start = new Date();
+        while (!timeout || (new Date()-start)<timeout)
+        {
+            var done = true;
+
+            //rc = rc.map(this.array[i]);
+            //
+            //rc.forEach(function(el){ done &= el && el.length==0;);
+
+            for (var i=0; i<this.array.length; i++)
+            {
+                rc[i] = this.array[i](rc[i]);
+                if (rc[i]===undefined || rc[i].length>0)
+                    done = false;
+            }
+
+            if (done)
+            {
+                console.out(this.name+":success [time="+(new Date()-start)+"ms]");
+                return true;
+            }
+
+            v8.sleep();
+        }
+
+        console.out(this.name+":timeout ["+timeout+"ms]");
+        return false;
+    }
+}
Index: branches/FACT++_part_filenames/scripts/Hist1D.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Hist1D.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Hist1D.js	(revision 18732)
@@ -0,0 +1,109 @@
+/**
+ * @fileOverview A simple one dimensional histogram.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+/**
+ *
+ * @constructor
+ *
+ * @param {Interger} nx
+ *
+ * @param {Number} xmin
+ *
+ * @param {Number} xmax
+ *
+ * @returns
+ *     A sub-classed array with the Hist1D functions added as properties.
+ *
+ * @example
+ *     var hist = Hist1D(10, -0.5, 1.5);
+ *
+ */
+function Hist1D(nx, xmin, xmax)
+{
+    /**
+     *
+     * Array
+     *
+     */
+    var arr = new Array(nx);
+
+    /**
+     *
+     * @exports arr.get as Hist1D.get
+     *
+     */
+    arr.get = function(x)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+
+        return arr[ix] ? arr[ix] : 0;
+    }
+
+    /**
+     *
+     * @exports arr.fill as Hist1D.fill
+     *
+     */
+    arr.fill = function(x, w)
+    {
+        if (!x || x===NaN)
+            return false;
+
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        if (ix<0 || ix>=nx)
+            return false;
+
+        if (!arr[ix])
+            arr[ix] = 0;
+
+        arr[ix] += w ? w : 1;
+
+        return true;
+    }
+
+    /**
+     *
+     * @exports arr.print as Hist1D.print
+     *
+     */
+    arr.print = function(len)
+    {
+        if (!len)
+            len = 40;
+        if (len<6)
+            len = 6;
+
+        var sum = arr.reduce(function(a,b){return a+b;}, 0);
+        var max = arr.reduce(function(a,b){return Math.max(a,b);}, 0);
+
+        console.out("");
+        for (var ix=nx-1; ix>=0; ix--)
+        {
+            var entry = arr[ix] ? arr[ix] : 0;
+
+            var line ="%3d [%3d%] ".$(ix, sum==0 ? 0 : 100*entry/sum);
+            if (arr[ix])
+            {
+                var val = parseInt(len*arr[ix]/max);
+                var entry = ("%"+val+"s").$("");
+                entry = entry.replace(/ /g, "*");
+                line += ("%-"+len+"s").$(entry)+" |";
+            }
+
+            console.out(line);
+        }
+
+        var entry = arr[ix] ? arr[ix] : 0;
+        console.out("   --------"+("%"+(len-5)+"s").$("")+"-------");
+
+        var line =" %9d  ".$(sum);
+        line += ("%"+len+"d").$(max);
+        console.out(line);
+        console.out("");
+    }
+
+    return arr;
+}
Index: branches/FACT++_part_filenames/scripts/Hist2D.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Hist2D.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Hist2D.js	(revision 18732)
@@ -0,0 +1,90 @@
+'use strict';
+
+function Hist2D(nx, xmin, xmax, ny, ymin, ymax)
+{
+    var arr = new Array(nx);
+
+    arr.get = function(x, y)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        var iy = parseInt(ny*(y-ymin)/(ymax-ymin));
+
+        if (!arr[ix])
+            return 0;
+
+        if (!arr[ix][iy])
+            return 0;
+
+        return arr[ix][iy];
+    }
+
+    arr.fill = function(x, y, w)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        var iy = parseInt(ny*(y-ymin)/(ymax-ymin));
+
+        if (ix<0 || ix>=nx || iy<0 || iy>=ny)
+            return false;
+
+        if (!arr[ix])
+            arr[ix] = new Array(ny);
+
+        if (!arr[ix][iy])
+            arr[ix][iy] = 0;
+
+        arr[ix][iy] += w ? w : 1;
+
+        return true;
+    }
+
+    arr.print = function()
+    {
+        var line1 = "   |";
+        for (var ix=0; ix<nx; ix++)
+            line1 += " %3d ".$(ix);
+
+        var line2 = "---+";
+        for (var ix=0; ix<nx; ix++)
+            line2 += "+----";
+        line2+="+----";
+
+        console.out("", line1, line2);
+
+        var sum = 0;
+        var sx = [];
+        for (var ix=0; ix<nx; ix++)
+            sx[ix] = 0;
+
+        for (var iy=ny-1; iy>=0; iy--)
+        {
+            var line = "%3d|".$(iy);
+
+            var sy = 0;
+            for (var ix=0; ix<nx; ix++)
+            {
+                var val = arr[ix] ? arr[ix][iy] : "";
+                line += " %4s".$(val?val:"");
+
+                if (arr[ix])
+                {
+                    sy     += val?val:0;
+                    sx[ix] += val?val:0;
+                }
+            }
+
+            sum += sy;
+
+            console.out(line+"|%4d".$(sy));
+        }
+
+        console.out(line2);
+
+        line = "   |";
+        for (var ix=0; ix<nx; ix++)
+            line += " %4d".$(sx[ix]);
+
+        console.out(line+"|%4d".$(sum), "");
+    }
+
+    return arr;
+}
Index: branches/FACT++_part_filenames/scripts/Main.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Main.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Main.js	(revision 18732)
@@ -0,0 +1,1623 @@
+/**
+ * @fileOverview This file has functions related to documenting JavaScript.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+dim.log("Start: "+__FILE__+" ["+__DATE__+"]");
+
+// This should be set in dimctrl.rc as JavaScript.schedule-database.
+// It is sent together with the script to the dimserver.
+// If started directly, it has to be set after the command:
+//
+//   .js scripts/Main.js schedule-database=...
+//
+if (!$['schedule-database'])
+    throw new Error("Environment 'schedule-database' not set!");
+
+//dimctrl.defineState(37, "TimeOutBeforeTakingData", "MCP took more than 5minutes to start TakingData");
+
+// ================================================================
+//  Code related to the schedule
+// ================================================================
+
+//this is just the class implementation of 'Observation'
+include('scripts/Observation_class.js');
+include('scripts/getSchedule.js');
+
+var observations = [ ];
+
+// Get the observation scheduled for 'now' from the table and
+// return its index
+function getObservation(now)
+{
+    if (now==undefined)
+        now = new Date();
+
+    if (isNaN(now.valueOf()))
+        throw new Error("Date argument in getObservation invalid.");
+
+    observations = getSchedule();
+    if (observations.length==0)
+        return -1;
+
+    var suspended = -1;
+
+    var rc = observations.length-1;
+
+    for (var i=0; i<observations.length; i++)
+    {
+        // Find the first observation which is in the future
+        if (observations[i].start>now)
+        {
+            rc = i-1;
+            break;
+        }
+
+        // If the loop just passed a suspend, i.e. it is in the past, set the suspend flag
+        if (observations[i][0].task=="SUSPEND")
+            suspended = i;
+
+        // If the loop just passed a resume, i.e. it is in the past, remove the suspend flag
+        if (observations[i][0].task=="RESUME")
+            suspended = -1;
+    }
+
+    // Now rc contains the index of the first observation in the past
+
+    // If the system is in suspend mode, the suspend observation is
+    // returned as recent measurement. For convenience (to avoid that
+    // the next observation is announced), all furture observations
+    // are removed.
+    if (suspended>=0)
+    {
+        observations.splice(suspended+1);
+        return suspended;
+    }
+
+    // Observations have already been resumed and the last scheduled
+    // observation is the resume itself: remove the resume and
+    // all leading suspend/resume pairs until the last observation
+    // is found
+    while (rc>=0 && observations[rc][0].task=="RESUME")
+    {
+        observations.splice(rc--, 1);
+
+        // Find previous suspend
+        if (rc>=0 && observations[rc][0].task=="SUSPEND")
+            observations.splice(rc--, 1);
+    }
+
+    return rc;
+}
+
+// ================================================================
+//  Code to check whether observation is allowed
+// ================================================================
+/*
+function currentEst(source)
+{
+    var moon = new Moon();
+    if (!moon.isUp)
+        return 7.7;
+
+    var dist = Sky.dist(moon, source);
+
+    var alt = 90-moon.toLocal().zd;
+
+    var lc = dist*alt*pow(Moon.disk(), 6)/360/360;
+
+    var cur = 7.7+4942*lc;
+
+    return cur;
+}
+
+function thresholdEst(source) // relative threshold (ratio)
+{
+    // Assumption:
+    // atmosphere is 70km, shower taks place after 60km, earth radius 6400km
+    // just using the cosine law
+    // This fits very well with MC results: See Roger Firpo, p.45
+    // "Study of the MAGIC telescope sensitivity for Large Zenith Angle observations"
+
+    var c = Math.cos(Math.Pi-source.zd);
+    var ratio = (10*sqrt(409600*c*c+9009) + 6400*c - 60)/10;
+
+    // assumption: Energy threshold increases linearily with current
+    // assumption: Energy threshold increases linearily with distance
+
+    return ratio*currentEst(source)/7.7;
+}
+*/
+
+// ================================================================
+//  Code to perform the DRS calib sequence
+// ================================================================
+
+var irq;
+
+function doDrsCalibration(where)
+{
+    dim.log("Starting DRS calibration ["+where+"]");
+
+    service_feedback.voltageOff();
+
+    var tm = new Date();
+
+    while (!irq)
+    {
+        dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+        if (irq || !takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        if (irq || !takeRun("drs-gain",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        if (where!="data")
+        {
+            if (irq || !takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+                continue;
+        }
+
+        break;
+    }
+
+    if (where!="data")
+    {
+        dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+        while (!irq && !takeRun("drs-pedestal", 1000));     // 40 / 20s     (50Hz)
+        while (!irq && !takeRun("drs-time",     1000));     // 40 / 20s     (50Hz)
+    }
+
+    while (!irq)
+    {
+        dim.send("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+        if (takeRun("pedestal",     1000))              // 40 / 10s     (80Hz)
+            break;
+    }
+
+    dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+    while (!irq && !takeRun("pedestal",     1000));     // 40 / 10s     (80Hz)
+    //                                                   -----------
+    //                                                   4'40 / 2'00
+
+    if (irq)
+        dim.log("DRS calibration interrupted [%.1fs]".$((new Date()-tm)/1000));
+    else
+        dim.log("DRS calibration done [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to the lid
+// ================================================================
+
+function OpenLid()
+{
+    /*
+    while (Sun.horizon(-13).isUp)
+    {
+        var now = new Date();
+        var minutes_until_sunset = (Sun.horizon(-13).set - now)/60000;
+        console.out(now.toUTCString()+": Sun above FACT-horizon, lid cannot be opened: sleeping 1min, remaining %.1fmin".$(minutes_until_sunset));
+        v8.sleep(60000);
+    }*/
+
+    var isClosed = dim.state("LID_CONTROL").name=="Closed";
+    var isInconsistent = dim.state("LID_CONTROL").name=="Inconsistent";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isClosed || isInconsistent)
+    {
+        dim.log("Opening lid");
+        dim.send("LID_CONTROL/OPEN");
+
+        dim.log("Turning off IR camera LEDs...");
+
+        var cam = new Curl("fact@cam/cgi-bin/user/Config.cgi");
+        cam.data.push("action=set");
+        cam.data.push("Camera.System.Title=Camera1");
+        cam.data.push("Camera.General.IRControl.Value=2");
+        cam.data.push("Camera.System.Display=ALL");
+        cam.data.push("Camera.Environment=OUTDOOR");
+        var ret = cam.send();
+        dim.log("Camera response: "+ret.data.replace(/\n/g,"/")+" ["+ret.rc+"]");
+    }
+    dim.wait("LID_CONTROL", "Open", 30000);
+
+    if (isClosed || isInconsistent)
+        dim.log("Lid open [%.1fs]".$((new Date()-tm)/1000));
+}
+
+function CloseLid()
+{
+    var isOpen = dim.state("LID_CONTROL").name=="Open";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isOpen)
+    {
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.log("Closing lid.");
+        dim.send("LID_CONTROL/CLOSE");
+    }
+    v8.timeout(30000, function() { if (dim.state("LID_CONTROL").name=="Closed" || dim.state("LID_CONTROL").name=="Inconsistent") return true; });
+    //dim.wait("LID_CONTROL", "Closed", 30000);
+    //dim.wait("LID_CONTROL", "Inconsistent", 30000);
+
+    if (isOpen)
+        dim.log("Lid closed [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Interrupt data taking in case of high currents
+// ================================================================
+dim.onchange['FEEDBACK'] = function(state)
+{
+    if ((state.name=="Critical" || state.name=="OnStandby") &&
+        (this.prev!="Critical"  && this.prev!="OnStandby"))
+    {
+        console.out("Feedback state changed from "+this.prev+" to "+state.name+" [Main.js]");
+        irq = "RESCHEDULE";
+    }
+    this.prev=state.name;
+}
+
+// ================================================================
+//  Code related to switching bias voltage on and off
+// ================================================================
+
+var service_feedback = new Subscription("FEEDBACK/CALIBRATED_CURRENTS");
+
+service_feedback.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    if (this.ok==undefined)
+        return;
+
+    var Unom = evt.obj['U_nom'];
+    var Uov  = evt.obj['U_ov'];
+    if (!Uov)
+        return;
+
+    var cnt = 0;
+    var avg = 0;
+    for (var i=0; i<320; i++)
+    {
+        // This is a fix for the channel with a shortcut
+        if (i==272)
+            continue;
+
+        var dU = Uov[i]-Unom;
+
+        // 0.022 corresponds to 1 DAC count (90V/4096)
+        if (Math.abs(dU)>0.033)
+            cnt++;
+
+        avg += dU;
+    }
+    avg /= 320;
+
+    this.ok = cnt<3;// || (this.last!=undefined && Math.abs(this.last-avg)<0.002);
+
+    console.out("  DeltaUov=%.3f (%.3f) [N(>0.033V)=%d]".$(avg, avg-this.last, cnt));
+
+    this.last = avg;
+}
+
+service_feedback.voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    if (state=="Disconnected")
+    {
+        console.out("  Voltage off: bias crate disconnected!");
+        return;
+    }
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        dim.log("Switching voltage off.");
+
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        //dim.send("FEEDBACK/STOP");
+        //dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        //dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+
+        // Switch voltage off
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000?
+    dim.wait("FEEDBACK",     "Calibrated",  3000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        dim.log("Voltage off.");
+}
+
+// DN:  The name of the method voltageOn() in the context of the method
+//      voltageOff() is a little bit misleading, since when voltageOff() returns
+//      the caller can be sure the voltage is off, but when voltageOn() return
+//      this is not the case, in the sense, that the caller can now take data.
+//      instead the caller of voltageOn() *must* call waitForVoltageOn() afterwards
+//      in order to safely take good-quality data.
+//      This could lead to nasty bugs in the sense, that the second call might 
+//      be forgotten by somebody
+//      
+//      so I suggest to rename voltageOn() --> prepareVoltageOn()
+//      waitForVoltageOn() stays as it is
+//      and one creates a third method called:voltageOn() like this
+/*      service_feedback.voltageOn = function()
+ *      {
+ *          this.prepareVoltageOn();
+ *          this.waitForVoltageOn();
+ *      }
+ * 
+ * */
+//      For convenience.
+
+service_feedback.voltageOn = function(ov)
+{
+    if (isNaN(ov))
+        ov = 1.1;
+
+    if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov)
+    {
+        dim.log("Stoping feedback.");
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.send("FEEDBACK/STOP");
+        dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+    }
+
+    var isOff = dim.state("FEEDBACK").name=="Calibrated";
+    if (isOff)
+    {
+        dim.log("Switching voltage to Uov="+ov+"V.");
+
+        dim.send("FEEDBACK/START", ov);
+
+        // FIXME: We could miss "InProgress" if it immediately changes to "Warning"
+        //        Maybe a dim.timeout state>8 ?
+        dim.wait("FEEDBACK", "InProgress", 45000);
+
+        this.ov = ov;
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+}
+
+service_feedback.waitForVoltageOn = function()
+{
+    // Avoid output if condition is already fulfilled
+    dim.log("Waiting for voltage to be stable.");
+
+    function func()
+    {
+        if (irq || this.ok==true)
+            return true;
+    }
+
+    var now = new Date();
+
+    this.last = undefined;
+    this.ok = false;
+    v8.timeout(4*60000, func, this); // FIMXE: Remove 4!
+    this.ok = undefined;
+
+    if (irq)
+        dim.log("Waiting for stable voltage interrupted.");
+    else
+        dim.log("Voltage stable within limits");
+}
+
+// ================================================================
+//  Function to shutdown the system
+// ================================================================
+
+function Shutdown(type)
+{
+    if (!type)
+        type = "default";
+
+    dim.log("Starting shutdown ["+type+"].");
+
+    var now1 = new Date();
+
+    var bias = dim.state("BIAS_CONTROL").name;
+    if (bias=="VoltageOn" || bias=="Ramping")
+        service_feedback.voltageOn(0);
+
+    CloseLid();
+
+    var now2 = new Date();
+
+    dim.send("DRIVE_CONTROL/PARK");
+
+    console.out("","Waiting for telescope to park. This may take a while.");
+
+    // FIXME: This might not work is the drive is already close to park position
+    //dim.wait("DRIVE_CONTROL", "Parking", 3000);
+
+    /*
+    // Check if DRS calibration is necessary
+    var diff = getTimeSinceLastDrsCalib();
+    if (diff>30 || diff==null)
+    {
+        doDrsCalibration("singlepe");  // will turn voltage off
+        if (irq)
+            break;
+    }*/
+
+    //take single pe run if required
+    if (type=="singlepe")
+    {
+        dim.log("Taking single-pe run.");
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        /*
+         Maybe we need to send a trigger... but data runs contain pedestal triggers... so it should work in any case...
+        var customRun = function()
+            {
+                v8.sleep(500);//wait that configuration is set
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+                dim.send("FAD_CONTROL/SEND_SINGLE_TRIGGER");
+                dim.send("RATE_CONTROL/STOP");
+                dim.send("FTM_CONTROL/STOP_TRIGGER");
+                dim.wait("FTM_CONTROL", "Valid", 3000);
+                dim.send("FTM_CONTROL/ENABLE_TRIGGER", true);
+                dim.send("FTM_CONTROL/SET_TIME_MARKER_DELAY", 123);
+                dim.send("FTM_CONTROL/SET_THRESHOLD", -1, obs[sub].threshold);
+                v8.sleep(500);//wait that configuration is set
+                dim.send("FTM_CONTROL/START_TRIGGER");
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+            }*/
+    }
+
+    //wait until drive is in locked (after it reached park position)
+    dim.wait("DRIVE_CONTROL", "Locked", 150000);
+
+    //unlock drive if task was sleep
+    if (type=="unlock")
+        dim.send("DRIVE_CONTROL/UNLOCK");
+
+
+    // It is unclear what comes next, so we better switch off the voltage
+    service_feedback.voltageOff();
+
+    dim.log("Finishing shutdown.");
+
+    var now3 = new Date();
+
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+    dim.wait("FTM_CONTROL",  "Valid",        3000);
+
+    if (bias!="Disconnected")
+        dim.wait("FEEDBACK", "Calibrated",   3000);
+
+    if (type!="unlock")
+    {
+        dim.send("BIAS_CONTROL/DISCONNECT");
+
+        var pwrctrl_state = dim.state("PWR_CONTROL").name;
+        if (pwrctrl_state=="SystemOn" ||
+            pwrctrl_state=="BiasOff"  ||
+            pwrctrl_state=="DriveOn")
+            dim.send("PWR_CONTROL/TOGGLE_DRIVE");
+
+        dim.wait("BIAS_CONTROL", "Disconnected", 3000);
+        dim.wait("PWR_CONTROL",  "DriveOff",     6000);
+    }
+
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    var report = sub.get();
+
+    console.out("");
+    console.out("Shutdown procedure ["+type+"] seems to be finished...");
+    console.out("  "+new Date().toUTCString());
+    console.out("  Telescope at Zd=%.1fdeg Az=%.1fdeg".$(report.obj['Zd'], report.obj['Az']));
+    console.out("  Please check on the web cam that the park position was reached");
+    console.out("  and the telescope is not moving anymore.");
+    console.out("  Please check visually that the lid is really closed and");
+    console.out("  that the biasctrl really switched the voltage off.", "");
+    console.out("    DRIVE_CONTROL: "+dim.state("DRIVE_CONTROL").name);
+    console.out("    FEEDBACK:      "+dim.state("FEEDBACK").name);
+    console.out("    FTM_CONTROL:   "+dim.state("FTM_CONTROL").name);
+    console.out("    BIAS_CONTROL:  "+dim.state("BIAS_CONTROL").name);
+    console.out("    PWR_CONTROL:   "+dim.state("PWR_CONTROL").name);
+    console.out("");
+    dim.log("Shutdown: end ["+(now2-now1)/1000+"s, "+(now3-now2)/1000+"s, "+(new Date()-now3)/1000+"s]");
+    console.out("");
+
+    sub.close();
+}
+
+
+// ================================================================
+//  Function to set the system to sleep-mode
+// ================================================================
+// FIXME: do not repeat code from shutdown-function
+/*
+function GoToSleep()
+{
+    CloseLid();
+
+    var isArmed = dim.state("DRIVE_CONTROL").name=="Armed";
+    if (!isArmed)
+    {
+        dim.log("Drive not ready to move. -> send STOP");
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 5000);
+    }
+
+    dim.send("DRIVE_CONTROL/MOVE_TO 101 0");//park position
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    function func()
+    {
+        var report = sub.get();
+
+        var zd = report.obj['Zd'];
+        var az = report.obj['Az'];
+
+        if (zd>100 && Math.abs(az)<1)
+            return true;
+
+        return undefined;
+    }
+
+    try { v8.timeout(150000, func); }
+    catch (e)
+    {
+        var p = sub.get();
+        dim.log('Park position not reached? Telescope at Zd='+p.obj['Zd']+' Az='+p.obj['Az']);
+    }
+    var p2 = sub.get();
+    dim.log('Telescope at Zd=%.1fdeg Az=%.1fdeg'.$(p2.obj['Zd'], p2.obj['Az']));
+    sub.close();
+}
+*/
+
+// ================================================================
+// Check datalogger subscriptions
+// ================================================================
+
+var datalogger_subscriptions = new Subscription("DATA_LOGGER/SUBSCRIPTIONS");
+datalogger_subscriptions.get(3000, false);
+
+datalogger_subscriptions.check = function()
+{
+    var obj = this.get();
+    if (!obj.data)
+        throw new Error("DATA_LOGGER/SUBSCRIPTIONS not available.");
+
+    var expected =
+        [
+         "AGILENT_CONTROL_24V/DATA",
+         "AGILENT_CONTROL_50V/DATA",
+         "AGILENT_CONTROL_80V/DATA",
+         "BIAS_CONTROL/CURRENT",
+         "BIAS_CONTROL/DAC",
+         "BIAS_CONTROL/NOMINAL",
+         "BIAS_CONTROL/VOLTAGE",
+         "DRIVE_CONTROL/POINTING_POSITION",
+         "DRIVE_CONTROL/SOURCE_POSITION",
+         "DRIVE_CONTROL/STATUS",
+         "DRIVE_CONTROL/TRACKING_POSITION",
+         "FAD_CONTROL/CONNECTIONS",
+         "FAD_CONTROL/DAC",
+         "FAD_CONTROL/DNA",
+         "FAD_CONTROL/DRS_RUNS",
+         "FAD_CONTROL/EVENTS",
+         "FAD_CONTROL/FEEDBACK_DATA",
+         "FAD_CONTROL/FILE_FORMAT",
+         "FAD_CONTROL/FIRMWARE_VERSION",
+         "FAD_CONTROL/INCOMPLETE",
+         "FAD_CONTROL/PRESCALER",
+         "FAD_CONTROL/REFERENCE_CLOCK",
+         "FAD_CONTROL/REGION_OF_INTEREST",
+         "FAD_CONTROL/RUNS",
+         "FAD_CONTROL/RUN_NUMBER",
+         "FAD_CONTROL/START_RUN",
+         "FAD_CONTROL/STATISTICS1",
+         "FAD_CONTROL/STATS",
+         "FAD_CONTROL/STATUS",
+         "FAD_CONTROL/TEMPERATURE",
+         "FEEDBACK/CALIBRATED_CURRENTS",
+         "FEEDBACK/CALIBRATION",
+         "FEEDBACK/CALIBRATION_R8",
+         "FEEDBACK/CALIBRATION_STEPS",
+/*         "FEEDBACK/REFERENCE",*/
+         "FSC_CONTROL/CURRENT",
+         "FSC_CONTROL/HUMIDITY",
+         "FSC_CONTROL/TEMPERATURE",
+         "FSC_CONTROL/VOLTAGE",
+         "FTM_CONTROL/COUNTER",
+         "FTM_CONTROL/DYNAMIC_DATA",
+         "FTM_CONTROL/ERROR",
+         "FTM_CONTROL/FTU_LIST",
+         "FTM_CONTROL/PASSPORT",
+         "FTM_CONTROL/STATIC_DATA",
+         "FTM_CONTROL/TRIGGER_RATES",
+         "GPS_CONTROL/NEMA",
+         "SQM_CONTROL/DATA",
+         "LID_CONTROL/DATA",
+         "MAGIC_LIDAR/DATA",
+         "MAGIC_WEATHER/DATA",
+         "MCP/CONFIGURATION",
+         "PWR_CONTROL/DATA",
+         "RATE_CONTROL/THRESHOLD",
+         "RATE_SCAN/DATA",
+         "RATE_SCAN/PROCESS_DATA",
+         "TEMPERATURE/DATA",
+         "TIME_CHECK/OFFSET",
+         "TNG_WEATHER/DATA",
+         "TNG_WEATHER/DUST",
+         "PFMINI_CONTROL/DATA",
+        ];
+
+    function map(entry)
+    {
+        if (entry.length==0)
+            return undefined;
+
+        var rc = entry.split(',');
+        if (rc.length!=2)
+            throw new Error("Subscription list entry '"+entry+"' has wrong number of elements.");
+        return rc;
+    }
+
+    var list = obj.data.split('\n').map(map);
+    function check(name)
+    {
+        if (list.every(function(el){return el==undefined || el[0]!=name;}))
+            throw new Error("Subscription to '"+name+"' not available.");
+    }
+
+    expected.forEach(check);
+}
+
+
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// ----------------------------------------------------------------
+// Do a standard startup to bring the system in into a well
+// defined state
+// ----------------------------------------------------------------
+include('scripts/Startup.js');
+
+// ================================================================
+//  Code to monitor clock conditioner
+// ================================================================
+
+var sub_counter = new Subscription("FTM_CONTROL/COUNTER");
+sub_counter.onchange = function(evt)
+{
+    if (evt.qos>0 && evt.qos!=2 && evt.qos&0x100==0)
+        throw new Error("FTM reports: clock conditioner not locked.");
+}
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+// This code is here, because scripts/Startup.js needs the
+// same subscriptions... to be revised.
+var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+var sub_startrun = new Subscription("FAD_CONTROL/START_RUN");
+sub_startrun.get(5000);
+
+include('scripts/takeRun.js');
+
+// ----------------------------------------------------------------
+// Check that everything we need is availabel to receive commands
+// (FIXME: Should that go to the general CheckState?)
+// ----------------------------------------------------------------
+//console.out("Checking send.");
+checkSend(["MCP", "DRIVE_CONTROL", "LID_CONTROL", "FAD_CONTROL", "FEEDBACK"]);
+//console.out("Checking send: done");
+
+// ----------------------------------------------------------------
+// Bring feedback into the correct operational state
+// ----------------------------------------------------------------
+//console.out("Feedback init: start.");
+service_feedback.get(5000);
+
+// ----------------------------------------------------------------
+// Connect to the DRS_RUNS service
+// ----------------------------------------------------------------
+//console.out("Drs runs init: start.");
+
+var sub_drsruns = new Subscription("FAD_CONTROL/DRS_RUNS");
+sub_drsruns.get(5000);
+// FIXME: Check if the last DRS calibration was complete?
+
+function getTimeSinceLastDrsCalib()
+{
+    // ----- Time since last DRS Calibration [min] ------
+    var runs = sub_drsruns.get(0);
+    var diff = (new Date()-runs.time)/60000;
+
+    // Warning: 'roi=300' is a number which is not intrisically fixed
+    //          but can change depending on the taste of the observers
+    var valid = runs.obj['run'][2]>0 && runs.obj['roi']==300;
+
+    if (valid)
+        dim.log("Last DRS calibration was %.1fmin ago".$(diff));
+    else
+        dim.log("No valid DRS calibration available.");
+
+    return valid ? diff : null;
+}
+
+// ----------------------------------------------------------------
+// Install interrupt handler
+// ----------------------------------------------------------------
+function handleIrq(cmd, args, time, user)
+{
+    console.out("Interrupt received:");
+    console.out("  IRQ:  "+cmd);
+    console.out("  Time: "+time);
+    console.out("  User: "+user);
+
+    irq = cmd ? cmd : "stop";
+
+    // This will end a run in progress as if it where correctly stopped
+    if (dim.state("MCP").name=="TakingData")
+        dim.send("MCP/STOP");
+
+    // This will stop a rate scan in progress
+    if (dim.state("RATE_SCAN").name=="InProgress")
+        dim.send("RATE_SCAN/STOP");
+}
+
+dimctrl.setInterruptHandler(handleIrq);
+
+// ----------------------------------------------------------------
+// Make sure we will write files
+// ----------------------------------------------------------------
+dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+// ----------------------------------------------------------------
+// Print some information for the user about the
+// expected first oberservation
+// ----------------------------------------------------------------
+var test = getObservation();
+if (test!=undefined)
+{
+    var n = new Date();
+    if (observations.length>0 && test==-1)
+        dim.log("First observation scheduled for "+observations[0].start.toUTCString()+" [id="+observations[0].id+"]");
+    if (test>=0 && test<observations.length)
+        dim.log("First observation should start immediately ["+observations[test].start.toUTCString()+", id="+observations[test].id+"]");
+    if (observations.length>0 && observations[0].start>n+12*3600*1000)
+        dim.log("No observations scheduled for the next 12 hours!");
+    if (observations.length==0)
+        dim.log("No observations scheduled!");
+}
+
+// ----------------------------------------------------------------
+// Start main loop
+// ----------------------------------------------------------------
+dim.log("Entering main loop.");
+console.out("");
+
+var run = -2; // getObservation never called
+var sub;
+var lastId;
+var nextId;
+var sun = Sun.horizon(-12);
+var system_on;  // undefined
+
+function processIrq()
+{
+    if (!irq)
+        return false;
+
+    if (irq.toUpperCase()=="RESCHEDULE")
+    {
+        irq = undefined;
+        return false;
+    }
+
+    if (irq.toUpperCase()=="OFF")
+    {
+        service_feedback.voltageOff();
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        return true;
+    }
+
+    /*
+    if (irq.toUpperCase()=="STOP")
+    {
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.send("MCP/STOP");
+        return true;
+    }*/
+
+    if (irq.toUpperCase()=="SHUTDOWN")
+    {
+        Shutdown();
+        return true;
+    }
+
+    dim.log("IRQ "+irq+" unhandled... stopping script.");
+    return true;
+}
+
+while (!processIrq())
+{
+    // Check if observation position is still valid
+    // If source position has changed, set run=0
+    var idxObs = getObservation();
+    if (idxObs===undefined)
+        break;
+
+    // we are still waiting for the first observation in the schedule
+    if (idxObs==-1)
+    {
+        // flag that the first observation will be in the future
+        run = -1; 
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if we have to take action do to sun-rise
+    var was_up = sun.isUp;
+    sun = Sun.horizon(-12);
+    if (!was_up && sun.isUp)
+    {
+        console.out("");
+        dim.log("Sun rise detected.... automatic shutdown initiated!");
+        // FIXME: State check?
+        Shutdown();
+        system_on = false;
+        continue;
+    }
+
+    // Current and next observation target
+    var obs     = observations[idxObs];
+    var nextObs = observations[idxObs+1];
+
+    // Check if observation target has changed
+    if (lastId!=obs.id) // !Object.isEqual(obs, nextObs)
+    {
+        dim.log("Starting new observation ["+obs.start.toUTCString()+", id="+obs.id+"]");
+
+        // This is the first source, but we do not come from
+        // a scheduled 'START', so we have to check if the
+        // telescop is operational already
+        sub = 0;
+        if (run<0)
+        {
+            //Startup();   // -> Bias On/Off?, Lid open/closed?
+            //CloseLid();
+        }
+
+        // The first observation had a start-time in the past...
+        // In this particular case start with the last entry
+        // in the list of measurements
+        if (run==-2)
+            sub = obs.length-1;
+
+        run = 0;
+        lastId = obs.id;
+    }
+
+    //dim.log("DEBUG: Next observation scheduled for "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+    if (nextObs && nextId!=nextObs.id)
+    {
+        dim.log("Next observation scheduled for "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+        console.out("");
+        nextId = nextObs.id;
+    }
+
+    if (!nextObs && nextId)
+    {
+        if (obs[sub].task=="SUSPEND")
+            dim.log("Further observation suspended.");
+        else
+            dim.log("No further observation scheduled.");
+        console.out("");
+        nextId = undefined;
+    }
+
+    //if (nextObs==undefined && obs[obs.length-1].task!="SHUTDOWN")
+    //    throw Error("Last scheduled measurement must be a shutdown.");
+
+    // We are done with all measurement slots for this
+    // observation... wait for next observation
+    if (sub>=obs.length)
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    if (system_on===false && obs[sub].task!="STARTUP")
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if sun is still up... only DATA and */
+    if ((obs[sub].task=="DATA" || obs[sub].task=="RATESCAN" || obs[sub].task=="RATESCAN2" ) && sun.isUp)
+    {
+        var now = new Date();
+        var remaining = (sun.set - now)/60000;
+        console.out(now.toUTCString()+" - "+obs[sub].task+": Sun above FACT-horizon: sleeping 1min, remaining %.1fmin".$(remaining));
+        v8.sleep(60000);
+        continue;
+    }
+
+
+    if (obs[sub].task!="IDLE" && (obs[sub].task!="DATA" && run>0))
+        dim.log("New task ["+obs[sub]+"]");
+
+    // FIXME: Maybe print a warning if Drive is on during day time!
+
+    // It is not ideal that we allow the drive to be on during day time, but
+    // otherwise it is difficult to allow e.g. the STARTUP at the beginning of the night
+    var power_states = sun.isUp || !system_on ? [ "DriveOff", "SystemOn" ] : [ "SystemOn" ];
+    var drive_states = sun.isUp || !system_on ? undefined : [ "Initialized", "Tracking", "OnTrack" ];
+
+    // A scheduled task was found, lets check if all servers are
+    // still only and in reasonable states. If this is not the case,
+    // something unexpected must have happend and the script is aborted.
+    //console.out("  Checking states [general]");
+    var table =
+        [
+         [ "TNG_WEATHER"   ],
+         [ "MAGIC_WEATHER" ],
+         [ "CHAT"          ],
+         [ "SMART_FACT"    ],
+         [ "TEMPERATURE"   ],
+         [ "DATA_LOGGER",         [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+         [ "FSC_CONTROL",         [ "Connected"                ] ],
+         [ "MCP",                 [ "Idle"                     ] ],
+         [ "TIME_CHECK",          [ "Valid"                    ] ],
+         [ "PWR_CONTROL",         power_states/*[ "SystemOn"                 ]*/ ],
+         [ "AGILENT_CONTROL_24V", [ "VoltageOn"                ] ],
+         [ "AGILENT_CONTROL_50V", [ "VoltageOn"                ] ],
+         [ "AGILENT_CONTROL_80V", [ "VoltageOn"                ] ],
+         [ "BIAS_CONTROL",        [ "VoltageOff", "VoltageOn", "Ramping" ] ],
+         [ "FEEDBACK",            [ "Calibrated", "InProgress", "OnStandby", "Warning", "Critical" ] ],
+//         [ "LID_CONTROL",         [ "Open", "Closed"           ] ],
+         [ "LID_CONTROL",         [ "Open", "Closed", "Inconsistent"  ] ],
+         [ "DRIVE_CONTROL",       drive_states/*[ "Armed", "Tracking", "OnTrack" ]*/ ],
+         [ "FTM_CONTROL",         [ "Valid", "TriggerOn"       ] ],
+         [ "FAD_CONTROL",         [ "Connected", "RunInProgress" ] ],
+         [ "RATE_SCAN",           [ "Connected"                ] ],
+         [ "RATE_CONTROL",        [ "Connected", "GlobalThresholdSet", "InProgress"  ] ],
+         [ "GPS_CONTROL",         [ "Locked"  ] ],
+         [ "SQM_CONTROL",         [ "Disconnected", "Connected", "Valid" ] ],
+         [ "PFMINI_CONTROL",      [ "Disconnected", "Connected", "Receiving" ] ],
+        ];
+
+
+    if (!checkStates(table))
+    {
+        throw new Error("Something unexpected has happened. One of the servers "+
+                        "is in a state in which it should not be. Please,"+ 
+                        "try to find out what happened...");
+    }
+
+    datalogger_subscriptions.check();
+
+    // If this is an observation which needs the voltage to be swicthed on
+    // skip that if the voltage is not stable
+    /*
+    if (obs[sub].task=="DATA" || obs[sub].task=="RATESCAN")
+    {
+        var state = dim.state("FEEDBACK").name;
+        if (state=="Warning" || state=="Critical" || state=="OnStandby")
+        {
+            v8.sleep(1000);
+            continue;
+        }
+    }*/
+
+
+    // Check if obs.task is one of the one-time-tasks
+    switch (obs[sub].task)
+    {
+    case "IDLE":
+        v8.sleep(5000);
+        continue;
+
+    case "SUSPEND":
+    case "SLEEP":
+        Shutdown("unlock"); //GoToSleep();
+
+        dim.log("Task finished ["+obs[sub].task+"].");
+        console.out("");
+        sub++;
+        continue;
+
+    case "STARTUP":
+        CloseLid();
+
+        doDrsCalibration("startup");  // will switch the voltage off
+
+        if (irq)
+            break;
+
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+
+        system_on = true;
+        dim.log("Task finished [STARTUP]");
+        console.out("");
+        break;
+
+    case "SHUTDOWN":
+        Shutdown("singlepe");
+        system_on = false;
+
+        // FIXME: Avoid new observations after a shutdown until
+        //        the next startup (set run back to -2?)
+        sub++;
+        dim.log("Task finished [SHUTDOWN]");
+        console.out("");
+        //console.out("  Waiting for next startup.", "");
+        continue;
+
+    case "DRSCALIB":
+        doDrsCalibration("drscalib");  // will switch the voltage off
+        dim.log("Task finished [DRSCALIB]");
+        console.out("");
+        break;
+
+    case "SINGLEPE":
+        // The lid must be closes
+        CloseLid();
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+        {
+            doDrsCalibration("singlepe");  // will turn voltage off
+            if (irq)
+                break;
+        }
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        dim.log("Task finished [SINGLE-PE]");
+        console.out("");
+        break;
+
+    case "OVTEST":
+        var locked = dim.state("DRIVE_CONTROL").name=="Locked";
+        if (!locked)
+            dim.send("DRIVE_CONTROL/PARK");
+
+        dim.send("FEEDBACK/STOP");
+
+        // The lid must be closed
+        CloseLid();
+
+        if (!locked)
+        {
+            //console.out("Waiting for telescope to park. This may take a while.");
+            dim.wait("DRIVE_CONTROL", "Locked", 3000);
+            dim.send("DRIVE_CONTROL/UNLOCK");
+        }
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+        {
+            doDrsCalibration("ovtest");  // will turn voltage off
+            if (irq)
+                break;
+        }
+
+        // The voltage must be on
+        service_feedback.voltageOn(0.4);
+        service_feedback.waitForVoltageOn();
+
+        dim.log("Taking single p.e. run (0.4V)");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        for (var i=5; i<18 && !irq; i++)
+        {
+            dim.send("FEEDBACK/STOP");
+            dim.wait("FEEDBACK", "Calibrated", 3000);
+            dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+            dim.send("FEEDBACK/START", i*0.1);
+            dim.wait("FEEDBACK", "InProgress", 45000);
+            dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+            service_feedback.waitForVoltageOn();
+            dim.log("Taking single p.e. run ("+(i*0.1)+"V)");
+            while (!irq && !takeRun("single-pe", 10000));
+        }
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        dim.log("Task finished [OVTEST]");
+        console.out("");
+        break;
+
+    case "RATESCAN":
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Initialized", 15000);
+
+        // The lid must be open
+        OpenLid();
+
+        // Switch the voltage to a reduced level (Ubd)
+        service_feedback.voltageOn(0);
+
+        if (obs[sub].source != null) // undefined != null -> false
+        {
+            dim.log("Pointing telescope to '"+obs[sub].source+"'.");
+            dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+        }
+        else
+        {
+            dim.log("Pointing telescope to ra="+obs[sub].ra+" dec="+obs[sub].dec);
+            dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+        }
+
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        if (!irq)
+        {
+            dim.log("Starting calibration.");
+
+            // Calibration (2% of 20')
+            while (!irq)
+            {
+                if (irq || !takeRun("pedestal",         1000))  // 80 Hz  -> 10s
+                    continue;
+                //if (irq || !takeRun("light-pulser-ext", 1000))  // 80 Hz  -> 10s
+                //    continue;
+                break;
+            }
+
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan.");
+
+            //set reference to whole camera (in case it was changed)
+            dim.send("RATE_SCAN/SET_REFERENCE_CAMERA");
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 1000, -10, "default");
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            dim.wait("RATE_SCAN", "Connected", 2700000);
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        dim.log("Task finished [RATESCAN]");
+        console.out("");
+        break; // case "RATESCAN"
+
+    case "RATESCAN2":
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Initialized", 15000);
+
+        if (obs[sub].rstype=="dark-bias-off")
+            service_feedback.voltageOff();
+        else
+        {
+            // Switch the voltage to a reduced level (Ubd)
+            var bias = dim.state("BIAS_CONTROL").name;
+            if (bias=="VoltageOn" || bias=="Ramping")
+                service_feedback.voltageOn(0);
+        }
+
+        // Open the lid if required
+        if (!obs[sub].lidclosed)
+            OpenLid();
+        else
+            CloseLid();
+
+        // track source/position or move to position
+        if (obs[sub].lidclosed)
+        {
+            dim.log("Moving telescope to zd="+obs[sub].zd+" az="+obs[sub].az);
+            dim.send("DRIVE_CONTROL/MOVE_TO", obs[sub].zd, obs[sub].az);
+            v8.sleep(3000);
+            dim.wait("DRIVE_CONTROL", "Initialized", 150000); // 110s for turning and 30s for stabilizing
+        }
+        else
+        {
+            if (obs[sub].source != null)  // undefined != null -> false
+            {
+                dim.log("Pointing telescope to '"+obs[sub].source+"'.");
+                dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+            }
+            else
+            {
+                dim.log("Pointing telescope to ra="+obs[sub].ra+" dec="+obs[sub].dec);
+                dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+            }
+
+            dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+        }
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        if (obs[sub].rstype!="dark-bias-off")
+        {
+            service_feedback.voltageOn();
+            service_feedback.waitForVoltageOn();
+        }
+
+        if (!irq)
+        {
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan 2/1 ["+obs[sub].rstype+"]");
+
+            //set reference to whole camera (in case it was changed)
+            dim.send("RATE_SCAN/SET_REFERENCE_CAMERA");
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 300, 20, obs[sub].rstype);
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            //FIXME: discuss what best value is here
+            dim.wait("RATE_SCAN", "Connected", 2700000);//45min
+            //dim.wait("RATE_SCAN", "Connected", 1200000);//3.3h
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan 2/1 done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        if (!irq)
+        {
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan 2/2 ["+obs[sub].rstype+"]");
+
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 300, 1000, 100, obs[sub].rstype);
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            dim.wait("RATE_SCAN", "Connected", 2700000);
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan 2/2 done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        dim.log("Task finished [RATESCAN2]");
+        console.out("");
+        break; // case "RATESCAN2"
+
+    case "CUSTOM":
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Initialized", 15000);
+
+        // Ramp bias if needed
+        if (!obs[sub].biason)
+            service_feedback.voltageOff();
+        else
+        {
+            // Switch the voltage to a reduced level (Ubd)
+            var bias = dim.state("BIAS_CONTROL").name;
+            if (bias=="VoltageOn" || bias=="Ramping")
+                service_feedback.voltageOn(0);
+        }
+        // Close lid
+        CloseLid();
+
+        // Move to position (zd/az)
+        dim.log("Moving telescope to zd="+obs[sub].zd+" az="+obs[sub].az);
+        dim.send("DRIVE_CONTROL/MOVE_TO", obs[sub].zd, obs[sub].az);
+        v8.sleep(3000);
+        dim.wait("DRIVE_CONTROL", "Initialized", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        if (obs[sub].biason)
+        {
+            service_feedback.voltageOn();
+            service_feedback.waitForVoltageOn();
+        }
+
+        if (!irq)
+        {
+            dim.log("Taking custom run with time "+obs[sub].time+"s, threshold="+obs[sub].threshold+", biason="+obs[sub].biason);
+
+            var customRun = function()
+            {
+                v8.sleep(500);//wait that configuration is set
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+                dim.send("FAD_CONTROL/SEND_SINGLE_TRIGGER");
+                dim.send("RATE_CONTROL/STOP");
+                dim.send("FTM_CONTROL/STOP_TRIGGER");
+                dim.wait("FTM_CONTROL", "Valid", 3000);
+                dim.send("FTM_CONTROL/ENABLE_TRIGGER", true);
+                dim.send("FTM_CONTROL/SET_TIME_MARKER_DELAY", 123);
+                dim.send("FTM_CONTROL/SET_THRESHOLD", -1, obs[sub].threshold);
+                v8.sleep(500);//wait that configuration is set
+                dim.send("FTM_CONTROL/START_TRIGGER");
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+            }
+
+            takeRun("custom", -1, obs[sub].time, customRun);
+        }
+        dim.log("Task finished [CUSTOM].");
+        dim.log("");
+        break; // case "CUSTOM"
+
+    case "DATA":
+
+        // ========================== case "DATA" ============================
+    /*
+        if (Sun.horizon("FACT").isUp)
+        {
+            console.out("  SHUTDOWN","");
+            Shutdown();
+            console.out("  Exit forced due to broken schedule", "");
+            exit();
+        }
+    */
+
+        // Calculate remaining time for this observation in minutes
+        var remaining = nextObs==undefined ? 0 : (nextObs.start-new Date())/60000;
+        //dim.log("DEBUG: remaining: "+remaining+" nextObs="+nextObs+" start="+nextObs.start);
+
+        // ------------------------------------------------------------
+
+        dim.log("Run count "+run+" [remaining "+parseInt(remaining)+"min]");
+
+        // ----- Time since last DRS Calibration [min] ------
+        var diff = getTimeSinceLastDrsCalib();
+
+        // Changine pointing position and take calibration...
+        //  ...every four runs (every ~20min)
+        //  ...if at least ten minutes of observation time are left
+        //  ...if this is the first run on the source
+        var point  = (run%4==0 && remaining>10 && !obs[sub].orbit) || run==0; // undefined==null -> true!
+
+        // Take DRS Calib...
+        //  ...every four runs (every ~20min)
+        //  ...at last  every two hours
+        //  ...when DRS temperature has changed by more than 2deg (?)
+        //  ...when more than 15min of observation are left
+        //  ...no drs calibration was done yet
+        var drscal = (run%4==0 && (remaining>15 && diff>70)) || diff==null;
+    
+        if (point)
+        {
+            // Switch the voltage to a reduced voltage level
+            service_feedback.voltageOn(0);
+
+            // Change wobble position every four runs,
+            // start with alternating wobble positions each day
+            var wobble = (parseInt(run/4) + parseInt(new Date()/1000/3600/24-0.5))%2+1;
+            var angle  = obs[sub].angle == null ? Math.random()*360 : obs[sub].angle;
+
+            if (obs[sub].orbit) // != undefined, != null, != 0
+                dim.log("Pointing telescope to '"+obs[sub].source+"' [orbit="+obs[sub].orbit+"min, angle="+angle+"]");
+            else
+                dim.log("Pointing telescope to '"+obs[sub].source+"' [wobble="+wobble+"]");
+
+            // This is a workaround to make sure that we really catch
+            // the new OnTrack state later and not the old one
+            dim.send("DRIVE_CONTROL/STOP");
+            dim.wait("DRIVE_CONTROL", "Initialized", 15000);
+
+            if (obs[sub].orbit) // != undefined, != null, != 0
+                dim.send("DRIVE_CONTROL/TRACK_ORBIT", angle, obs[sub].orbit, obs[sub].source);
+            else
+                dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, obs[sub].source);
+
+            // Do we have to check if the telescope is really moving?
+            // We can cross-check the SOURCE service later
+        }
+
+        if (drscal)
+        {
+            doDrsCalibration("data");  // will turn voltage off
+
+            // Now we switch on the voltage and a significant amount of
+            // time has been passed, so do the check again.
+            sun = Sun.horizon(-12);
+            if (!was_up && sun.isUp)
+            {
+                dim.log("Sun rise detected....");
+                continue;
+            }
+        }
+
+        if (irq)
+            continue;
+
+        OpenLid();
+
+        // This is now th right time to wait for th drive to be stable
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now check the voltage... (do not start a lot of stuff just to do nothing)
+        var state = dim.state("FEEDBACK").name;
+        if (state=="Warning" || state=="Critical" || state=="OnStandby")
+        {
+            v8.sleep(60000);
+            continue;
+        }
+
+        // Now we are 'OnTrack', so we can ramp to nominal voltage
+        // and wait for the feedback to get stable
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // If pointing had changed, do calibration
+        if (!irq && point)
+        {
+            dim.log("Starting calibration.");
+
+            // Calibration (2% of 20')
+            while (!irq)
+            {
+                if (irq || !takeRun("pedestal",         1000))  // 80 Hz  -> 10s
+                    continue;
+//                if (irq || !takeRun("light-pulser-ext", 1000))  // 80 Hz  -> 10s
+//                    continue;
+                break;
+            }
+        }
+
+        //console.out("  Taking data: start [5min]");
+
+        // FIXME: What do we do if during calibration something has happened
+        // e.g. drive went to ERROR? Maybe we have to check all states again?
+
+        var twilight = Sun.horizon(-16).isUp;
+
+        if (twilight)
+        {
+            for (var i=0; i<5 && !irq; i++)
+                takeRun("data", -1, 60); // Take data (1min)
+        }
+        else
+        {
+            var len = 300;
+            while (!irq && len>15)
+            {
+                var time = new Date();
+                if (takeRun("data", -1, len)) // Take data (5min)
+                    break;
+
+                len -= parseInt((new Date()-time)/1000);
+            }
+        }
+
+        //console.out("  Taking data: done");
+        run++;
+
+        continue; // case "DATA"
+    }
+
+    if (nextObs!=undefined && sub==obs.length-1)
+        dim.log("Next observation will start at "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+
+    sub++;
+}
+
+sub_drsruns.close();
+
+dim.log("Left main loop [irq="+irq+"]");
+
+// ================================================================
+// Comments and ToDo goes here
+// ================================================================
+
+// error handline : http://www.sitepoint.com/exceptional-exception-handling-in-javascript/
+// classes: http://www.phpied.com/3-ways-to-define-a-javascript-class/
Index: branches/FACT++_part_filenames/scripts/MainClassic.js
===================================================================
--- branches/FACT++_part_filenames/scripts/MainClassic.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/MainClassic.js	(revision 18732)
@@ -0,0 +1,1263 @@
+/**
+ * @fileOverview This file has functions related to documenting JavaScript.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+dim.log("Start: "+__FILE__+" ["+__DATE__+"]");
+
+//dimctrl.defineState(37, "TimeOutBeforeTakingData", "MCP took more than 5minutes to start TakingData");
+
+// ================================================================
+//  Code related to the schedule
+// ================================================================
+
+//this is just the class implementation of 'Observation'
+include('scripts/Observation_class.js');
+
+// this file just contains the definition of
+// the variable observations, which builds our nightly schedule, hence the filename
+include('scripts/schedule.js');
+
+// make Observation objects from user input and check if 'date' is increasing.
+for (var i=0; i<observations.length; i++)
+{
+    observations[i] = new Observation(observations[i]);
+
+    // check if the start date given by the user is increasing.
+    if (i>0 && observations[i].start <= observations[i-1].start)
+    {
+        throw new Error("Start time '"+ observations[i].start.toUTCString()+
+                        "' in row "+i+" exceeds start time in row "+(i-1));
+    }
+}
+
+// Get the observation scheduled for 'now' from the table and
+// return its index
+function getObservation(now)
+{
+    if (now==undefined)
+        now = new Date();
+
+    if (isNaN(now.valueOf()))
+        throw new Error("Date argument in getObservation invalid.");
+
+    for (var i=0; i<observations.length; i++)
+        if (now<observations[i].start)
+            return i-1;
+
+    return observations.length-1;
+}
+
+// ================================================================
+//  Code to check whether observation is allowed
+// ================================================================
+/*
+function currentEst(source)
+{
+    var moon = new Moon();
+    if (!moon.isUp)
+        return 7.7;
+
+    var dist = Sky.dist(moon, source);
+
+    var alt = 90-moon.toLocal().zd;
+
+    var lc = dist*alt*pow(Moon.disk(), 6)/360/360;
+
+    var cur = 7.7+4942*lc;
+
+    return cur;
+}
+
+function thresholdEst(source) // relative threshold (ratio)
+{
+    // Assumption:
+    // atmosphere is 70km, shower taks place after 60km, earth radius 6400km
+    // just using the cosine law
+    // This fits very well with MC results: See Roger Firpo, p.45
+    // "Study of the MAGIC telescope sensitivity for Large Zenith Angle observations"
+
+    var c = Math.cos(Math.Pi-source.zd);
+    var ratio = (10*sqrt(409600*c*c+9009) + 6400*c - 60)/10;
+
+    // assumption: Energy threshold increases linearily with current
+    // assumption: Energy threshold increases linearily with distance
+
+    return ratio*currentEst(source)/7.7;
+}
+*/
+
+// ----------------------------------------------------------------
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+
+var incomplete = 0;
+
+sub_incomplete.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    var inc = evt.obj['incomplete'];
+    if (!inc || inc>0xffffffffff)
+        return;
+
+    if (incomplete>0)
+        return;
+
+    if (dim.state("MCP").name!="TakingData")
+        return;
+
+    incomplete = inc;
+
+    console.out("Sending MCP/STOP");
+    dim.send("MCP/STOP");
+}
+
+var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+
+/**
+ * call-back function of FAD_CONTROL/CONNECTIONS
+ * store IDs of problematic FADs 
+ *
+ */
+/*
+sub_connections.onchange = function(evt)
+{
+    // This happens, but why?
+    if (!evt.obj['status'])
+        return;
+
+    this.reset = [ ];
+
+    for (var x=0; x<40; x++)
+        if (evt.obj['status'][x]!=66 && evt.obj['status'][x]!=67)
+            this.reset.push(x);
+
+    if (this.reset.length==0)
+        return;
+
+    //m.alarm("FAD board loss detected...");
+    dim.send("MCP/RESET");
+    dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+}
+*/
+
+/**
+ * reconnect to problematic FADs
+ *
+ * Dis- and Reconnects to FADs, found to be problematic by call-back function
+ * onchange() to have a different CONNECTION value than 66 or 67. 
+ * 
+ * @returns
+ *      a boolean is returned. 
+ *      reconnect returns true if:
+ *          * nothing needed to be reset --> no problems found by onchange()
+ *          * the reconnection went fine.
+ *      
+ *      reconnect *never returns false* so far.
+ *
+ * @example
+ *      if (!sub_connections.reconnect())
+ *          exit();
+ */
+sub_connections.reconnect = function()
+{
+    // this.reset is a list containing the IDs of FADs, 
+    // which have neither CONNECTION==66 nor ==67, whatever this means :-)
+    if (this.reset.length==0)
+        return true;
+
+    console.out("  Reconnect: start ["+this.reset.length+"]");
+
+    for (var i=0; i<this.reset.length; i++)
+        dim.send("FAD_CONTROL/DISCONNECT", this.reset[i]);
+
+    v8.sleep(3000);
+
+    while (this.reset.length)
+        dim.send("FAD_CONTROL/CONNECT", this.reset.pop());
+
+    v8.sleep(1000);
+    dim.wait("FAD_CONTROL", "Connected", 3000);
+
+    console.out("  Reconnect: end");
+
+    return true;
+}
+
+// ================================================================
+//  Code related to taking data
+// ================================================================
+
+var startrun = new Subscription("FAD_CONTROL/START_RUN");
+startrun.get(5000);
+
+function reconnect(list, txt)
+{ /*
+    var reset = [ ];
+
+    for (var i=0; i<list.length; i++)
+        {
+            console.out("  FAD %2d".$(list[i])+" lost during "+txt);
+            reset.push(parseInt(list[i]/10));
+        }
+
+    reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+    console.out("");
+    console.out("  FADs belong to crate(s): "+reset);
+    console.out("");
+*/
+    console.out("");
+    console.out("Trying automatic reconnect ["+txt+"]...");
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...disconnect "+list[i]);
+        dim.send("FAD_CONTROL/DISCONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 5s");
+    v8.sleep(5000);
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...reconnect "+list[i]);
+        dim.send("FAD_CONTROL/CONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 1s");
+    v8.sleep(1000);
+    console.out("");
+}
+
+function takeRun(type, count, time)
+{
+    if (!count)
+        count = -1;
+    if (!time)
+        time = -1;
+
+    var nextrun = startrun.get().obj['next'];
+    console.out("  Take run %3d".$(nextrun)+": N="+count+" T="+time+"s ["+type+"]");
+
+    incomplete = 0;
+    dim.send("MCP/START", time?time:-1, count?count:-1, type);
+
+    // FIXME: Replace by callback?
+    //
+    // DN: I believe instead of waiting for 'TakingData' one could split this
+    // up into two checks with an extra condition:
+    //  if type == 'data':
+    //      wait until ThresholdCalibration starts:
+    //          --> this time should be pretty identical for each run
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //    
+    //      wait until "TakingData":
+    //          --> this seems to take even some minutes sometimes... 
+    //              (might be optimized rather soon, but still in the moment...)
+    //      if this takes way too long: 
+    //          there might be something broken, 
+    //          so maybe a very high time limit is ok here.
+    //          I think there is not much that can go wrong, 
+    //          when the Thr-Calib has already started. Still it might be nice 
+    //          If in the future RateControl is written so to find out that 
+    //          in case the threshold finding algorithm does 
+    //          *not converge as usual*
+    //          it can complain, and in this way give a hint, that the weather
+    //          might be a little bit too bad.
+    //  else:
+    //      wait until "TakingData":
+    //          --> in a non-data run this time should be pretty short again
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //  
+
+    // Use this if you use the rate control to calibrate by rates
+    //if (!dim.wait("MCP", "TakingData", -300000) )
+    //{
+    //    throw new Error("MCP took longer than 5 minutes to start TakingData"+
+    //                    "maybe this idicates a problem with one of the FADs?");
+    //}
+
+    // Here we could check and handle fad losses
+
+    try
+    {
+        dim.wait("MCP", "TakingData", 15000);
+    }
+    catch (e)
+    {
+        console.out("");
+        console.out("MCP:         "+dim.state("MCP").name);
+        console.out("FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out("FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+        console.out("");
+
+        if (dim.state("MCP").name!="Configuring3" ||
+            dim.state("FAD_CONTROL").name!="Configuring2")
+            throw e;
+
+        console.out("");
+        console.out("Waiting for fadctrl to get configured timed out... checking for in-run FAD loss.");
+
+        var con  = sub_connections.get();
+        var stat = con.obj['status'];
+
+        console.out("Sending MCP/RESET");
+        dim.send("MCP/RESET");
+
+        dim.wait("FTM_CONTROL", "Idle",      3000);
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+        dim.wait("MCP",         "Idle",      3000);
+
+        /*** FOR REMOVE ***/
+        var reset = [ ];
+
+        for (var i=0; i<40; i++)
+            if (stat[i]!=0x43)
+            {
+                console.out("  FAD %2d".$(i)+" not in Configured state.");
+                reset.push(parseInt(i/10));
+            }
+
+        reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+        if (reset.length>0)
+        {
+            console.out("");
+            console.out("  FADs belong to crate(s): "+reset);
+            console.out("");
+        }
+        /**** FOR REMOVE ****/
+
+        var list = [];
+        for (var i=0; i<40; i++)
+            if (stat[i]!=0x43)
+                list.push(i);
+
+        reconnect(list, "configuration");
+
+        throw e;
+    }
+
+    dim.wait("MCP", "Idle", time>0 ? time*1250 : undefined); // run time plus 25%
+
+    if (incomplete)
+    {
+        console.out("Incomplete: "+incomplete);
+
+        console.out("");
+        console.out("MCP:         "+dim.state("MCP").name);
+        console.out("FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out("FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+        console.out("");
+
+        dim.wait("MCP",         "Idle", 3000);
+        dim.wait("FTM_CONTROL", "Idle", 3000);
+
+        // Necessary to allow the disconnect, reconnect
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+
+        var list = [];
+        for (var i=0; i<40; i++)
+            if (incomplete&(1<<i))
+                list.push(i);
+
+        reconnect(list, "data taking");
+
+        throw new Error("In-run FAD loss detected.");
+    }
+
+    //console.out("  Take run: end");
+
+    // DN: currently reconnect() never returns false 
+    //     .. but it can fail of course.
+    //if (!sub_connections.reconnect())
+    //    exit();
+
+    return true;//sub_connections.reconnect();
+}
+
+// ----------------------------------------------------------------
+
+function doDrsCalibration(where)
+{
+    console.out("  Take DRS calibration ["+where+"]");
+
+    service_feedback.voltageOff();
+
+    var tm = new Date();
+
+    while (1)
+    {
+        dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        // Does that fix the runopen before runclose problem?
+        //dim.wait("FAD_CONTROL", "Connected", 3000);
+        //v8.sleep(1000);
+
+        if (!takeRun("drs-gain",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        // Does that fix the runopen before runclose problem?
+        //dim.wait("FAD_CONTROL", "Connected", 3000);
+        //v8.sleep(1000);
+
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+        if (!takeRun("drs-time",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+        if (!takeRun("pedestal",     1000))     // 40 / 10s     (80Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+        if (!takeRun("pedestal",     1000))     // 40 / 10s     (80Hz)
+            continue;
+        //                                       -----------
+        //                                       4'40 / 2'00
+
+        break;
+    }
+
+    console.out("  DRS calibration done [%.1f]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to the lid
+// ================================================================
+
+function OpenLid()
+{
+    /*
+    while (Sun.horizon(-13).isUp)
+    {
+        var now = new Date();
+        var minutes_until_sunset = (Sun.horizon(-13).set - now)/60000;
+        console.out(now.toUTCString()+": Sun above FACT-horizon, lid cannot be opened: sleeping 1min, remaining %.1fmin".$(minutes_until_sunset));
+        v8.sleep(60000);
+    }*/
+
+    var isClosed = dim.state("LID_CONTROL").name=="Closed";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isClosed)
+    {
+        console.out("  Open lid: start");
+        dim.send("LID_CONTROL/OPEN");
+    }
+    dim.wait("LID_CONTROL", "Open", 30000);
+
+    if (isClosed)
+        console.out("  Open lid: done [%.1fs]".$((new Date()-tm)/1000));
+}
+
+function CloseLid()
+{
+    var isOpen = dim.state("LID_CONTROL").name=="Open";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isOpen)
+    {
+        console.out("  Close lid: start");
+        dim.send("LID_CONTROL/CLOSE");
+    }
+    dim.wait("LID_CONTROL", "Closed", 30000);
+
+    if (isOpen)
+        console.out("  Close lid: end [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to switching bias voltage on and off
+// ================================================================
+
+var service_feedback = new Subscription("FEEDBACK/DEVIATION");
+
+service_feedback.onchange = function(evt)
+{
+    if (this.cnt && evt.counter>this.cnt+12)
+        return;
+
+    this.voltageStep = null;
+    if (!evt.data)
+        return;
+
+    var delta = evt.obj['DeltaBias'];
+
+    var avg = 0;
+    for (var i=0; i<320; i++)
+        avg += delta[i];
+    avg /= 320;
+
+    if (this.previous)
+        this.voltageStep = Math.abs(avg-this.previous);
+
+    this.previous = avg;
+
+    console.out("  DeltaV="+this.voltageStep);
+}
+
+// DN:  Why is voltageOff() implemented as 
+//      a method of a Subscription to a specific Service
+//      I naively would think of voltageOff() as an unbound function.
+//      I seems to me it has to be a method of a Subscription object, in order
+//      to use the update counting method. But does it have to be
+//      a Subscription to FEEDBACK/DEVIATION, or could it work with other services as well?
+service_feedback.voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        console.out("  Voltage off: start");
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        var isControl = dim.state("FEEDBACK").name=="CurrentControl";
+        if (isControl)
+        {
+            console.out("  Suspending feedback.");
+            dim.send("FEEDBACK/ENABLE_OUTPUT", false);
+            dim.wait("FEEDBACK", "CurrentCtrlIdle", 3000);
+        }
+
+        // Switch voltage off
+        console.out("  Voltage on: switch off");
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+
+        // If the feedback was enabled, re-enable it
+        if (isControl)
+        {
+            console.out("  Resuming feedback.");
+            dim.send("FEEDBACK/ENABLE_OUTPUT", true);
+            dim.wait("FEEDBACK", "CurrentControl", 3000);
+        }
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 5000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        console.out("  Voltage off: end");
+}
+
+// DN:  The name of the method voltageOn() in the context of the method
+//      voltageOff() is a little bit misleading, since when voltageOff() returns
+//      the caller can be sure the voltage is off, but when voltageOn() return
+//      this is not the case, in the sense, that the caller can now take data.
+//      instead the caller of voltageOn() *must* call waitForVoltageOn() afterwards
+//      in order to safely take good-quality data.
+//      This could lead to nasty bugs in the sense, that the second call might 
+//      be forgotten by somebody
+//      
+//      so I suggest to rename voltageOn() --> prepareVoltageOn()
+//      waitForVoltageOn() stays as it is
+//      and one creates a third method called:voltageOn() like this
+/*      service_feedback.voltageOn = function()
+ *      {
+ *          this.prepareVoltageOn();
+ *          this.waitForVoltageOn();
+ *      }
+ * 
+ * */
+//      For convenience.
+
+service_feedback.voltageOn = function()
+{
+    //if (Sun.horizon("FACT").isUp)
+    //    throw new Error("Sun is above FACT-horizon, voltage cannot be switched on.");
+
+    var isOff = dim.state("BIAS_CONTROL").name=="VoltageOff";
+    if (isOff)
+    {
+        console.out("  Voltage on: switch on");
+        //console.out(JSON.stringify(dim.state("BIAS_CONTROL")));
+
+        dim.send("BIAS_CONTROL/SET_GLOBAL_DAC", 1);
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 5000);
+
+    // From now on the feedback waits for a valid report from the FSC
+    // and than switchs to CurrentControl
+    dim.wait("FEEDBACK", "CurrentControl", 60000);
+
+    if (isOff)
+    {
+        console.out("  Voltage on: cnt="+this.cnt);
+
+        this.previous = undefined;
+        this.cnt = this.get().counter;
+        this.voltageStep = undefined;
+    }
+}
+
+service_feedback.waitForVoltageOn = function()
+{
+    // waiting 45sec for the current control to stabilize...
+    // v8.sleep(45000);
+
+    // ----- Wait for at least three updates -----
+    // The feedback is started as if the camera where at 0deg
+    // Then after the first temp update, the temperature will be set to the
+    // correct value (this has already happened)
+    // So we only have to wait for the current to get stable.
+    // This should happen after three to five current updates.
+    // So we want one recent temperature update
+    //  and three recent current updates
+
+    // Avoid output if condition is already fulfilled
+    if (this.cnt && this.get().counter>this.cnt+10)
+        return;
+
+    // FIXME: timeout missing
+    console.out("  Feedback wait: start");
+
+    function func(service)
+    {
+        if ((service.cnt!=undefined && service.get().counter>service.cnt+10) ||
+            (service.voltageStep && service.voltageStep<0.02))
+            return true;
+    }
+
+    var now = new Date();
+    //v8.timeout(5*60000, func, this);
+    while ((this.cnt==undefined || this.get().counter<=this.cnt+10) && (!this.voltageStep || this.voltageStep>0.02))
+        v8.sleep();
+
+    console.out("  Feedback wait: end [dV=%.3f, cnt=%d, %.2fs]".$(this.voltageStep, this.get().counter, (new Date()-now)/1000));
+}
+
+// ================================================================
+//  Function to shutdown the system
+// ================================================================
+
+function Shutdown()
+{
+    console.out("Shutdown: start");
+
+    service_feedback.voltageOff();
+    CloseLid(); 
+    dim.send("DRIVE_CONTROL/PARK");
+
+    console.out("Waiting for telescope to park. This may take a while.");
+
+    // FIXME: This might not work is the drive is already close to park position
+    dim.wait("DRIVE_CONTROL", "Locked", 3000);
+
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    function func()
+    {
+        var report = sub.get();
+
+        var zd = report.obj['Zd'];
+        var az = report.obj['Az'];
+
+        if (zd>100 && Math.abs(az)<1)
+            return true;
+
+        return undefined;
+    }
+
+    var now = new Date();
+    v8.timeout(150000, func);
+
+    //dim.send("FEEDBACK/STOP");
+    dim.send("FEEDBACK/ENABLE_OUTPUT", false);
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+
+    dim.wait("FEEDBACK", "CurrentCtrlIdle", 3000);
+    dim.wait("FTM_CONTROL", "Idle", 3000);
+
+    var report = sub.get();
+
+    console.out("");
+    console.out("Shutdown procedure seems to be finished...");
+    console.out("  Telescope at Zd=%.1fdeg Az=%.1fdeg".$(report.obj['Zd'], report.obj['Az']));
+    console.out("  Please make sure the park position was reached");
+    console.out("  and the telescope is not moving anymore.");
+    console.out("  Please check that the lid is closed and the voltage switched off.");
+    console.out("");
+    console.out("Shutdown: end ["+(new Date()-now)/1000+"s]");
+
+    sub.close();
+}
+
+// ================================================================
+// Check datalogger subscriptions
+// ================================================================
+
+var datalogger_subscriptions = new Subscription("DATA_LOGGER/SUBSCRIPTIONS");
+datalogger_subscriptions.get(3000, false);
+
+datalogger_subscriptions.check = function()
+{
+    var obj = this.get();
+    if (!obj.data)
+        throw new Error("DATA_LOGGER/SUBSCRIPTIONS not available.");
+
+    var expected =
+        [
+         "BIAS_CONTROL/CURRENT",
+         "BIAS_CONTROL/DAC",
+         "BIAS_CONTROL/NOMINAL",
+         "BIAS_CONTROL/VOLTAGE",
+         "DRIVE_CONTROL/POINTING_POSITION",
+         "DRIVE_CONTROL/SOURCE_POSITION",
+         "DRIVE_CONTROL/STATUS",
+         "DRIVE_CONTROL/TRACKING_POSITION",
+         "FAD_CONTROL/CONNECTIONS",
+         "FAD_CONTROL/DAC",
+         "FAD_CONTROL/DNA",
+         "FAD_CONTROL/DRS_RUNS",
+         "FAD_CONTROL/EVENTS",
+         "FAD_CONTROL/FEEDBACK_DATA",
+         "FAD_CONTROL/FILE_FORMAT",
+         "FAD_CONTROL/FIRMWARE_VERSION",
+         "FAD_CONTROL/INCOMPLETE",
+         "FAD_CONTROL/PRESCALER",
+         "FAD_CONTROL/REFERENCE_CLOCK",
+         "FAD_CONTROL/REGION_OF_INTEREST",
+         "FAD_CONTROL/RUNS",
+         "FAD_CONTROL/RUN_NUMBER",
+         "FAD_CONTROL/START_RUN",
+         "FAD_CONTROL/STATISTICS1",
+         "FAD_CONTROL/STATISTICS2",
+         "FAD_CONTROL/STATS",
+         "FAD_CONTROL/STATUS",
+         "FAD_CONTROL/TEMPERATURE",
+         "FEEDBACK/CALIBRATED_CURRENTS",
+         "FEEDBACK/CALIBRATION",
+         "FEEDBACK/DEVIATION",
+         "FEEDBACK/REFERENCE",
+         "FSC_CONTROL/CURRENT",
+         "FSC_CONTROL/HUMIDITY",
+         "FSC_CONTROL/TEMPERATURE",
+         "FSC_CONTROL/VOLTAGE",
+         "FTM_CONTROL/COUNTER",
+         "FTM_CONTROL/DYNAMIC_DATA",
+         "FTM_CONTROL/ERROR",
+         "FTM_CONTROL/FTU_LIST",
+         "FTM_CONTROL/PASSPORT",
+         "FTM_CONTROL/STATIC_DATA",
+         "FTM_CONTROL/TRIGGER_RATES",
+         "LID_CONTROL/DATA",
+         "MAGIC_LIDAR/DATA",
+         "MAGIC_WEATHER/DATA",
+         "MCP/CONFIGURATION",
+         "PWR_CONTROL/DATA",
+         "RATE_CONTROL/THRESHOLD",
+         "RATE_SCAN/DATA",
+         "RATE_SCAN/PROCESS_DATA",
+         "TEMPERATURE/DATA",
+         "TIME_CHECK/OFFSET",
+         "TNG_WEATHER/DATA",
+         "TNG_WEATHER/DUST",
+        ];
+
+    function map(entry)
+    {
+        if (entry.length==0)
+            return undefined;
+
+        var rc = entry.split(',');
+        if (rc.length!=2)
+            throw new Error("Subscription list entry '"+entry+"' has wrong number of elements.");
+        return rc;
+    }
+
+    var list = obj.data.split('\n').map(map);
+
+    function check(name)
+    {
+        if (list.every(function(el){return el[0]!=name;}))
+            throw new Error("Subscription to '"+name+"' not available.");
+    }
+
+    expected.forEach(check);
+}
+
+
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// ----------------------------------------------------------------
+// Do a standard startup to bring the system in into a well
+// defined state
+// ----------------------------------------------------------------
+include('scripts/Startup.js');
+
+// ----------------------------------------------------------------
+// Check that everything we need is availabel to receive commands
+// (FIXME: Should that go to the general CheckState?)
+// ----------------------------------------------------------------
+console.out("Checking send.");
+checkSend(["MCP", "DRIVE_CONTROL", "LID_CONTROL", "FAD_CONTROL", "FEEDBACK"]);
+console.out("Checking send: done");
+
+// ----------------------------------------------------------------
+// Bring feedback into the correct operational state
+// ----------------------------------------------------------------
+console.out("Feedback init: start.");
+service_feedback.get(5000);
+
+dim.send("FEEDBACK/ENABLE_OUTPUT", true);
+dim.send("FEEDBACK/START_CURRENT_CONTROL", 0.);
+
+v8.timeout(3000, function() { var n = dim.state("FEEDBACK").name; if (n=="CurrentCtrlIdle" || n=="CurrentControl") return true; });
+
+// ----------------------------------------------------------------
+// Connect to the DRS_RUNS service
+// ----------------------------------------------------------------
+console.out("Drs runs init: start.");
+
+var sub_drsruns = new Subscription("FAD_CONTROL/DRS_RUNS");
+sub_drsruns.get(5000);
+// FIXME: Check if the last DRS calibration was complete?
+
+function getTimeSinceLastDrsCalib()
+{
+    // ----- Time since last DRS Calibration [min] ------
+    var runs = sub_drsruns.get(0);
+    var diff = (new Date()-runs.time)/60000;
+
+    // Warning: 'roi=300' is a number which is not intrisically fixed
+    //          but can change depending on the taste of the observers
+    var valid = runs.obj['run'][2]>0 && runs.obj['roi']==300;
+
+    if (valid)
+        console.out("  Last DRS calib: %.1fmin ago".$(diff));
+    else
+        console.out("  No valid drs calibration available");
+
+    return valid ? diff : null;
+}
+
+// ----------------------------------------------------------------
+// Make sure we will write files
+// ----------------------------------------------------------------
+dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+
+// ----------------------------------------------------------------
+// Print some information for the user about the
+// expected first oberservation
+// ----------------------------------------------------------------
+var test = getObservation();
+if (test!=undefined)
+{
+    var n = new Date();
+    if (test==-1)
+        console.out(n.toUTCString()+": First observation scheduled for "+observations[0].start.toUTCString());
+    if (test>=0 && test<observations.length)
+        console.out(n.toUTCString()+": First observation should start immediately.");
+    if (observations[0].start>n+12*3600*1000)
+        console.out(n.toUTCString()+": No observations scheduled for the next 12 hours!");
+}
+
+// ----------------------------------------------------------------
+// Start main loop
+// ----------------------------------------------------------------
+console.out("Start main loop.");
+
+var run = -2; // getObservation never called
+var sub;
+var lastObs;
+var sun = Sun.horizon(-13);
+var system_on;  // undefined
+
+while (1)
+{
+    // Check if observation position is still valid
+    // If source position has changed, set run=0
+    var idxObs = getObservation();
+    if (idxObs===undefined)
+        break;
+
+    // we are still waiting for the first observation in the schedule
+    if (idxObs==-1)
+    {
+        // flag that the first observation will be in the future
+        run = -1; 
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if we have to take action do to sun-rise
+    var was_up = sun.isUp;
+    sun = Sun.horizon(-13);
+    if (!was_up && sun.isUp)
+    {
+        console.out("", "Sun rise detected.... automatic shutdown initiated!");
+        // FIXME: State check?
+        Shutdown();
+        system_on = false;
+        continue;
+    }
+
+    // Current and next observation target
+    var obs     = observations[idxObs];
+    var nextObs = observations[idxObs+1];
+
+    // Check if observation target has changed
+    if (lastObs!=idxObs) // !Object.isEqual(obs, nextObs)
+    {
+        console.out("--- "+idxObs+" ---");
+        console.out("Current time:        "+new Date().toUTCString());
+        console.out("Current observation: "+obs.start.toUTCString());
+        if (nextObs!=undefined)
+            console.out("Next    observation: "+nextObs.start.toUTCString());
+        console.out("");
+
+        // This is the first source, but we do not come from
+        // a scheduled 'START', so we have to check if the
+        // telescop is operational already
+        sub = 0;
+        if (run<0)
+        {
+            //Startup();   // -> Bias On/Off?, Lid open/closed?
+            //CloseLid();
+        }
+
+        // The first observation had a start-time in the past...
+        // In this particular case start with the last entry
+        // in the list of measurements
+        if (run==-2)
+            sub = obs.length-1;
+
+        run = 0;
+    }
+    lastObs = idxObs;
+
+    if (nextObs==undefined && obs[obs.length-1].task!="SHUTDOWN")
+        throw Error("Last scheduled measurement must be a shutdown.");
+
+    // We are done with all measurement slots for this
+    // observation... wait for next observation
+    if (sub>=obs.length)
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    var task = obs[sub].task;
+
+    if (system_on===false && task!="STARTUP")
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if sun is still up... only DATA and RATESCAN must be suppressed
+    if ((task=="DATA" || task=="RATESCAN") && sun.isUp)
+    {
+        var now = new Date();
+        var remaining = (sun.set - now)/60000;
+        console.out(now.toUTCString()+" - "+obs[sub].task+": Sun above FACT-horizon: sleeping 1min, remaining %.1fmin".$(remaining));
+        v8.sleep(60000);
+        continue;
+    }
+
+    console.out("\n"+(new Date()).toUTCString()+": Current measurement: "+obs[sub]);
+
+    var power_states = sun.isUp || system_on===false ? [ "DriveOff" ] : [ "SystemOn" ];
+    var drive_states = sun.isUp || system_on===false ?   undefined    : [ "Armed", "Tracking", "OnTrack" ];
+
+    // A scheduled task was found, lets check if all servers are
+    // still only and in reasonable states. If this is not the case,
+    // something unexpected must have happend and the script is aborted.
+    //console.out("  Checking states [general]");
+    var table =
+        [
+         [ "TNG_WEATHER"   ],
+         [ "MAGIC_WEATHER" ],
+         [ "CHAT"          ],
+         [ "SMART_FACT"    ],
+         [ "TEMPERATURE"   ],
+         [ "DATA_LOGGER",     [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+         [ "FSC_CONTROL",     [ "Connected"                ] ],
+         [ "MCP",             [ "Idle"                     ] ],
+         [ "TIME_CHECK",      [ "Valid"                    ] ],
+         [ "PWR_CONTROL",     power_states/*[ "SystemOn"                 ]*/ ],
+//         [ "AGILENT_CONTROL", [ "VoltageOn"                ] ],
+         [ "BIAS_CONTROL",    [ "VoltageOff", "VoltageOn", "Ramping" ] ],
+         [ "FEEDBACK",        [ "CurrentControl", "CurrentCtrlIdle" ] ],
+         [ "LID_CONTROL",     [ "Open", "Closed"           ] ],
+         [ "DRIVE_CONTROL",   drive_states/*[ "Armed", "Tracking", "OnTrack" ]*/ ],
+         [ "FTM_CONTROL",     [ "Idle", "TriggerOn"        ] ],
+         [ "FAD_CONTROL",     [ "Connected", "WritingData" ] ],
+         [ "RATE_SCAN",       [ "Connected"                ] ],
+         [ "RATE_CONTROL",    [ "Connected", "GlobalThresholdSet", "InProgress"  ] ],
+        ];
+
+    if (!checkStates(table))
+    {
+        throw new Error("Something unexpected has happened. One of the servers"+
+                        "is in a state in which it should not be. Please,"+
+                        "try to find out what happened...");
+    }
+
+    datalogger_subscriptions.check();
+
+    // Check if obs.task is one of the one-time-tasks
+    switch (obs[sub].task)
+    {
+    case "STARTUP":
+        console.out("  STARTUP", "");
+        CloseLid();
+
+        doDrsCalibration("startup");  // will switch the voltage off
+
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        console.out("  Take single p.e. run.");
+        while (!takeRun("pedestal", 5000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        system_on = true;
+        break;
+
+    case "SHUTDOWN":
+        console.out("  SHUTDOWN", "");
+        Shutdown();
+        system_on = false;
+
+        // FIXME: Avoid new observations after a shutdown until
+        //        the next startup (set run back to -2?)
+        console.out("  Waiting for next startup.", "");
+        sub++;
+        continue;
+
+    case "IDLE":
+        v8.sleep(1000);
+        continue;
+
+    case "DRSCALIB":
+        console.out("  DRSCALIB", "");
+        doDrsCalibration("drscalib");  // will switch the voltage off
+        break;
+
+    case "SINGLEPE":
+        console.out("  SINGLE-PE", "");
+
+        // The lid must be closes
+        CloseLid();
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+            doDrsCalibration("singlepe");  // will turn voltage off
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        console.out("  Take single p.e. run.");
+        while (!takeRun("pedestal", 5000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        break;
+
+    case "RATESCAN":
+        console.out("  RATESCAN", "");
+
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new state and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 5000);
+
+        // The lid must be open
+        OpenLid();
+
+        // The voltage must be switched on
+        service_feedback.voltageOn();
+
+        if (obs.source != undefined)
+            dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+        else
+            dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        service_feedback.waitForVoltageOn();
+
+        var tm2 = new Date();
+
+        // Start rate scan
+        dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 1000, -10);
+
+        // Lets wait if the ratescan really starts... this might take a few
+        // seconds because RATE_SCAN configures the ftm and is waiting for
+        // it to be configured.
+        dim.wait("RATE_SCAN", "InProgress", 10000);
+        dim.wait("RATE_SCAN", "Connected", 2700000);
+
+        // this line is actually some kind of hack. 
+        // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+        // So I decided to put this line here as a kind of patchwork....
+        //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+
+        console.out("  Ratescan done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        break; // case "RATESCAN"
+
+    case "DATA":
+
+        // ========================== case "DATA" ============================
+    /*
+        if (Sun.horizon("FACT").isUp)
+        {
+            console.out("  SHUTDOWN","");
+            Shutdown();
+            console.out("  Exit forced due to broken schedule", "");
+            exit();
+        }
+    */
+        // Calculate remaining time for this observation in minutes
+        var remaining = nextObs==undefined ? 0 : (nextObs.start-new Date())/60000;
+
+        // ------------------------------------------------------------
+
+        console.out("  Run #"+run+"  (remaining "+parseInt(remaining)+"min)");
+
+        // ----- Time since last DRS Calibration [min] ------
+        var diff = getTimeSinceLastDrsCalib();
+
+        // Changine pointing position and take calibration...
+        //  ...every four runs (every ~20min)
+        //  ...if at least ten minutes of observation time are left
+        //  ...if this is the first run on the source
+        var point  = (run%4==0 && remaining>10) || run==0;
+
+        // Take DRS Calib...
+        //  ...every four runs (every ~20min)
+        //  ...at last  every two hours
+        //  ...when DRS temperature has changed by more than 2deg (?)
+        //  ...when more than 15min of observation are left
+        //  ...no drs calibration was done yet
+        var drscal = (run%4==0 && (remaining>15 && diff>70)) || diff==null;
+
+        if (point)
+        {
+            // Change wobble position every four runs,
+            // start with alternating wobble positions each day
+            var wobble = (parseInt(run/4) + parseInt(new Date()/1000/3600/24-0.5))%2+1;
+
+            //console.out("  Move telescope to '"+source+"' "+offset+" "+wobble);
+            console.out("  Move telescope to '"+obs[sub].source+"' ["+wobble+"]");
+
+            //var offset = observations[obs][2];
+            //var wobble = observations[obs][3 + parseInt(run/4)%2];
+
+            //dim.send("DRIVE_CONTROL/TRACK_SOURCE", offset, wobble, source);
+
+            dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, obs[sub].source);
+
+            // Do we have to check if the telescope is really moving?
+            // We can cross-check the SOURCE service later
+        }
+
+        if (drscal)
+            doDrsCalibration("data");  // will turn voltage off
+
+        OpenLid();
+
+        // voltage must be switched on after the lid is open for the
+        // feedback to adapt the voltage properly to the night-sky
+        // background light level.
+        service_feedback.voltageOn();
+
+        // This is now th right time to wait for th drive to be stable
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now we have to be prepared for data-taking:
+        // make sure voltage is on
+        service_feedback.waitForVoltageOn();
+
+        // If pointing had changed, do calibration
+        if (point)
+        {
+            console.out("  Calibration.");
+
+            // Calibration (2% of 20')
+            while (1)
+            {
+                if (!takeRun("pedestal",         1000))  // 80 Hz  -> 10s
+                    continue;
+                if (!takeRun("light-pulser-ext", 1000))  // 80 Hz  -> 10s
+                    continue;
+                break;
+            }
+        }
+
+        console.out("  Taking data: start [5min]");
+
+        var len = 300;
+        while (len>0)
+        {
+            var time = new Date();
+            if (takeRun("data", -1, len)) // Take data (5min)
+                break;
+
+            len -= parseInt((new Date()-time)/1000);
+        }
+
+        console.out("  Taking data: done");
+        run++;
+
+        continue; // case "DATA"
+    }
+
+    if (nextObs!=undefined && sub==obs.length-1)
+        console.out("  Waiting for next observation scheduled for "+nextObs.start.toUTCString(),"");
+
+    sub++;
+}
+
+sub_drsruns.close();
+
+// ================================================================
+// Comments and ToDo goes here
+// ================================================================
+
+// error handline : http://www.sitepoint.com/exceptional-exception-handling-in-javascript/
+// classes: http://www.phpied.com/3-ways-to-define-a-javascript-class/
+//
+// Arguments: TakeFirstDrsCalib
+// To be determined: How to stop the script without foreceful interruption?
Index: branches/FACT++_part_filenames/scripts/Observation_class.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Observation_class.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Observation_class.js	(revision 18732)
@@ -0,0 +1,125 @@
+'use strict';
+
+//
+// this file contains just the implementation of the
+// Observation class (I know there are no classes in javascript...)
+//
+
+function Observation(obj)
+{
+    if (typeof(obj)!='object')
+        throw new Error("Observation object can only be constructed using an object.");
+
+    if (!obj.date)
+        throw new Error("Observation object must have a 'date' parameter");
+
+    var ret = [];
+
+    // FIXME: Check transisiton from summer- and winter-time!!
+    var utc = obj.date.toString().toUpperCase()=="NOW" ? new Date() : new Date(obj.date);
+    if (isNaN(utc.valueOf()))
+        throw new Error('"'+obj.date+'" not a valid Date... try something like "2013-01-08 23:05 UTC".');
+
+    ret.start = utc;
+    ret.id    = obj.id;
+
+    // If the given data is not an array, make it the first entry of an array
+    // so that we can simply loop over all entries
+    if (obj.measurements.length===undefined)
+    {
+        var cpy = obj.measurements;
+        obj.measurements = [];
+        obj.measurements[0] = cpy;
+    }
+
+    for (var i=0; i<obj.measurements.length; i++)
+    {
+        var obs = obj.measurements[i];
+
+        ret[i] = { };
+        ret[i].task   = obs.task ? obs.task.toUpperCase() : "DATA";
+        ret[i].source = obs.source;
+        ret[i].ra     = parseFloat(obs.ra);
+        ret[i].dec    = parseFloat(obs.dec);
+        ret[i].zd     = parseFloat(obs.zd);
+        ret[i].az     = parseFloat(obs.az);
+        ret[i].orbit  = parseFloat(obs.orbit);
+        ret[i].angle  = parseFloat(obs.angle);
+        ret[i].time   = parseInt(obs.time);
+        ret[i].threshold = parseInt(obs.threshold);
+        ret[i].lidclosed = obs.lidclosed;
+        ret[i].biason = obs.biason;
+        ret[i].rstype = obs.rstype ? obs.rstype : "default";
+        ret[i].sub    = i;
+        ret[i].start  = utc;
+
+
+        ret[i].toString = function()
+        {
+            var rc = this.task;
+            rc += "["+this.sub+"]";
+            if (this.source)
+                rc += ": " + this.source;
+            //rc += " ["+this.start.toUTCString()+"]";
+            return rc;
+        }
+
+        switch (ret[i].task)
+        {
+        case 'DATA':
+            if (i!=obj.measurements.length-1)
+                throw new Error("Measurement DATA [n="+i+", "+utc.toUTCString()+"] must be the last in the list of measurements [cnt="+obj.measurements.length+"]");
+            if (ret[i].source == undefined)
+                throw new Error("Measurement DATA must have a source defined");
+            // This is obsolete. We cannot check everything which is not evaluated anyways
+            //if (ret[i].lidclosed == true)
+            //    throw new Error("Observation must not have 'lidclosed'==true " +
+            //                    "if 'task'=='data'");
+            break;
+
+        case 'SUSPEND':
+        case 'RESUME':
+            if (obj.measurements.length!=1)
+                throw new Error("Measurement "+ret[i].task+" [n="+i+", "+utc.toUTCString()+"] must be the only measurements [cnt="+obj.measurements.length+"] in an observation");
+            break;
+
+        case 'STARTUP':
+        case 'SHUTDOWN':
+            if (ret[i].source != undefined)
+                console.out("WARNING - Measurement "+ret[i].task+" has a source defined");
+            break;
+
+        case 'RATESCAN':
+            if (ret[i].source == undefined && (isNaN(ret[i].ra) || isNaN(ret[i].dec)))
+                throw new Error("Measurement RATESCAN must have either a source or 'ra' & 'dec' defined");
+            // This is obsolete. We cannot check everything which is not evaluated anyways
+            //if (ret[i].lidclosed == true)
+            //    throw new Error("Observation RATESCAN must not have 'lidclosed'==true");
+            break;
+
+        case 'RATESCAN2':
+            if ((ret[i].lidclosed != true) && ret[i].source == undefined && (isNaN(ret[i].ra) || isNaN(ret[i].dec)))
+                throw new Error("Measurement RATESCAN2 ('lidclosed'==false or undefined) must have either a source or 'ra' & 'dec' defined");
+            if (ret[i].lidclosed == true && (isNaN(ret[i].az) || isNaN(ret[i].az)))
+                throw new Error("Measurement RATESCAN2 ('lidclosed'==true) must have 'zd' & 'az' defined");
+            break;
+
+        case 'CUSTOM':
+            if (isNaN(ret[i].az) || isNaN(ret[i].az) || isNaN(ret[i].time) || isNaN(ret[i].threshold))
+                throw new Error("Measurement CUSTOM must have 'zd' & 'az', 'time' and 'threshold' defined.");
+            break;
+
+        case 'SINGLEPE':
+        case 'OVTEST':
+        case 'DRSCALIB':
+        case 'IDLE':
+        case 'SLEEP':
+            break;
+
+        default:
+            throw new Error("The measurement type "+ret[i].task+" is unknown.");
+        }
+    }
+
+    return ret;
+}
Index: branches/FACT++_part_filenames/scripts/Startup.js
===================================================================
--- branches/FACT++_part_filenames/scripts/Startup.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/Startup.js	(revision 18732)
@@ -0,0 +1,332 @@
+'use strict';
+
+// To de done:
+//  - CheckLID status (should be open or closed)
+//  - Is it necessary to switch the bias-voltage off?
+//  - Get reasonable timeouts for all steps (wait, get, run)
+//  - Improve order to accelerate execution
+//
+// =================================================================
+
+/*
+var table =
+[
+ [ "AGILENT_CONTROL" ],
+ [ "BIAS_CONTROL"    ],
+ [ "CHAT"            ],
+ [ "DATA_LOGGER"     ],
+ [ "DRIVE_CONTROL"   ],
+ [ "FEEDBACK"        ],
+ [ "FAD_CONTROL"     ],
+ [ "FSC_CONTROL"     ],
+ [ "FTM_CONTROL"     ],
+ [ "LID_CONTROL"     ],
+ [ "MAGIC_WEATHER"   ],
+ [ "MCP"             ],
+ [ "PWR_CONTROL"     ],
+ [ "RATE_CONTROL"    ],
+ [ "RATE_SCAN"       ],
+ [ "SMART_FACT"      ],
+ [ "TIME_CHECK"      ],
+ [ "TNG_WEATHER"     ],
+];
+
+if (dim.state("DRIVE_CONTROL").name=="Locked")
+{
+    throw new Error("Drivectrl still locked... needs UNLOCK first.");
+    //while (!dim.send("DRIVE_CONTROL"))
+    //    v8.sleep();
+    //dim.send("DRIVE_CONTROL/UNLOCK");
+    //dim.wait("DRIVE_CONTROL", "Armed", 1000);
+}
+
+*/
+
+console.out("");
+dim.alarm();
+
+var loop;
+include("scripts/Handler.js");
+include("scripts/CheckStates.js");
+
+// -----------------------------------------------------------------
+// Make sure camera electronics is switched on and has power
+// -----------------------------------------------------------------
+
+include("scripts/handleAgilentPowerOn24V.js");
+include("scripts/handleAgilentPowerOn50V.js");
+include("scripts/handleAgilentPowerOn80V.js");
+include("scripts/handlePwrCameraOn.js");
+
+checkSend(["AGILENT_CONTROL_24V","AGILENT_CONTROL_50V","AGILENT_CONTROL_80V","PWR_CONTROL"]);
+
+loop = new Handler("PowerOn");
+//loop.add(handleAgilentPowerOn24V);
+//loop.add(handleAgilentPowerOn50V);
+//loop.add(handleAgilentPowerOn80V);
+loop.add(handlePwrCameraOn);
+loop.run();
+console.out("");
+
+// If power was switched on: wait for a few seconds
+
+// -----------------------------------------------------------------
+// Now take care that the bias control, the ftm and the fsc are
+// properly connected and are in a reasonable state (e.g. the
+// trigger is switched off)
+// -----------------------------------------------------------------
+
+include("scripts/handleBiasVoltageOff.js");
+include("scripts/handleFtmIdle.js");
+include("scripts/handleFscConnected.js");
+include("scripts/handleFeedbackConnected.js");
+include("scripts/handleRatectrlConnected.js");
+include("scripts/handleLidClosed.js");
+include("scripts/handleFadConnected.js");
+
+checkSend(["BIAS_CONTROL","FAD_CONTROL","FTM_CONTROL", "FSC_CONTROL", "FEEDBACK", "RATE_CONTROL", "MCP"]);
+
+dim.send("MCP/RESET");
+
+loop = new Handler("SystemSetup");
+loop.add(handleBiasVoltageOff);
+loop.add(handleFtmIdle);
+loop.add(handleFscConnected);
+loop.add(handleFadConnected);
+loop.add(handleFeedbackConnected); // Feedback needs FAD to be Connected
+loop.add(handleRatectrlConnected);
+loop.add(handleLidClosed);
+loop.run();
+
+console.out("biasctrl:    "+dim.state("BIAS_CONTROL").name);
+console.out("ftmctrl:     "+dim.state("FTM_CONTROL").name);
+console.out("fscctrl:     "+dim.state("FSC_CONTROL").name);
+console.out("feedback:    "+dim.state("FEEDBACK").name);
+console.out("ratecontrol: "+dim.state("RATE_CONTROL").name);
+console.out("fadctrl:     "+dim.state("FAD_CONTROL").name);
+console.out("mcp:         "+dim.state("MCP").name);
+console.out("");
+
+console.out("Enable all FTU");
+dim.send("FTM_CONTROL/ENABLE_FTU", -1, true);
+
+// -----------------------------------------------------------------
+// Now we check the FTU connection
+// -----------------------------------------------------------------
+
+/*
+include("scripts/handleFtuCheck.js");
+
+loop = new Handler("FtuCheck");
+loop.ftuList = new Subscription("FTM_CONTROL/FTU_LIST");
+loop.add(handleFtuCheck);
+loop.run();
+loop.ftuList.close();
+
+dim.log("All FTUs are enabled and without error.");
+*/
+
+console.out("Checking FTU: start");
+include("scripts/CheckFTU.js");
+console.out("Checking FTU: done");
+console.out("");
+
+// -----------------------------------------------------------------
+// Now we check the clock conditioner
+// -----------------------------------------------------------------
+
+var sub_counter = new Subscription("FTM_CONTROL/COUNTER");
+var counter = sub_counter.get(3000, false).counter;
+dim.send("FTM_CONTROL/REQUEST_STATIC_DATA");
+v8.timeout(3000, function() { if (sub_counter.get(0, false).counter>counter) return true; });
+if (sub_counter.get(0, false).qos&0x100==0)
+    throw new Error("Clock conditioner not locked.");
+sub_counter.close();
+
+// -----------------------------------------------------------------
+// Now we can safely try to connect the FAD boards.
+// -----------------------------------------------------------------
+/*
+ include("scripts/handleFadConnected.js");
+
+// If FADs already connected
+
+checkSend(["FAD_CONTROL"]);
+
+loop = new Handler("ConnectFad");
+loop.add(handleFadConnected);
+loop.run();
+
+var failed = false;
+dim.onchange["FAD_CONTROL"] = function(arg)
+{
+    if (this.rc && arg.name!="Connected")
+        failed = true;
+}
+
+console.out("FADs connected.");
+console.out("");
+
+console.out(dim.state("FAD_CONTROL").name);
+console.out(dim.state("MCP").name);
+*/
+
+// ================================================================
+// Underflow check
+// ================================================================
+// Is it necessary to check for the so called 'underflow-problem'?
+// (This is necessary after each power cycle)
+// ----------------------------------------------------------------
+
+include('scripts/CheckUnderflow.js');
+
+// Now it is time to check the connection of the FADs
+// it might hav thrown an exception already anyway
+
+
+// ================================================================
+// Power on drive system if power is off (do it hre to make sure not
+// everything is switchd on at the same time)
+// ================================================================
+
+//console.out("PWR: "+(dim.state("PWR_CONTROL").index&16));
+
+if ((dim.state("PWR_CONTROL").index&16)==0)
+{
+    console.out("Drive cabinet not powered... Switching on.");
+    dim.send("PWR_CONTROL/TOGGLE_DRIVE");
+    v8.timeout(5000, function() { if (dim.state("PWR_CONTROL").index&16) return true; });
+}
+
+include("scripts/handleDriveArmed.js");
+
+checkSend(["DRIVE_CONTROL"]);
+
+loop = new Handler("ArmDrive");
+loop.add(handleDriveArmed);
+loop.run();
+
+
+// ================================================================
+// Bias crate calibration
+// ================================================================
+// Bias crate calibration if necessary (it is aftr 4pm (local tome)
+// and the last calibration was more than eight hours ago.
+// -----------------------------------------------------------------
+
+// At this point we know that:
+//  1) The lid is closed
+//  2) The feedback is stopped
+//  3) The voltage is off
+function makeCurrentCalibration()
+{
+    dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    dim.wait("BIAS_CONTROL", "VoltageOff", 30000); // waS: 15000
+
+    var now = new Date();
+    dim.send("FEEDBACK/CALIBRATE");
+
+    console.out("Wait for calibration to start");
+    dim.wait("FEEDBACK", "Calibrating", 5000);
+
+    console.out("Wait for calibration to end");
+    dim.wait("FEEDBACK", "Calibrated", 90000);
+
+    console.out("Calibration finished ["+(new Date()-now)+"ms]");
+
+    console.out("Wait for voltage to be off");
+    dim.wait("BIAS_CONTROL", "VoltageOff", 30000); // was: 15000
+}
+
+// Check age of calibration
+var service_calibration = new Subscription("FEEDBACK/CALIBRATION");
+
+var data_calibration = service_calibration.get(3000, false);
+
+var age = data_calibration.time;
+var now = new Date();
+
+var diff = (now-age)/3600000;
+
+var fb_state = dim.state("FEEDBACK").index;
+
+// !data_calibration.data: FEEDBACK might just be freshly
+// started and will not yet serve this service.
+if (fb_state<5 || (diff>8 && now.getHours()>16))
+{
+    if (fb_state<5)
+        console.out("No BIAS crate calibration available: New calibration needed.");
+    else
+        console.out("Last BIAS crate calibration taken at "+age.toUTCString()+": New calibration needed.");
+
+    makeCurrentCalibration();
+}
+
+service_calibration.close();
+
+// ================================================================
+// Setup GPS control and wait for the satellites to be locked
+// ================================================================
+
+checkSend(["GPS_CONTROL"]);
+
+if (dim.state("GPS_CONTROL").name=="Disconnected")
+    dim.send("GPS_CONTROL/RECONNECT");
+
+// Wait for being connectes
+v8.timeout(5000, function() { if (dim.state("GPS_CONTROL").name!="Disconnected") return true; });
+
+// Wait for status available
+v8.timeout(5000, function() { if (dim.state("GPS_CONTROL").name!="Connected") return true; });
+
+if (dim.state("GPS_CONTROL").name=="Disabled")
+    dim.send("GPS_CONTROL/ENABLE");
+
+// Wait for gps to be enabled and locked
+dim.wait("GPS_CONTROL", "Locked", 15000);
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// FIXME: Check if there is a startup scheduled, if not do not force
+// drive to be switched on
+
+var table =
+[
+ [ "TNG_WEATHER"   ],
+ [ "MAGIC_WEATHER" ],
+ [ "CHAT"          ],
+ [ "SMART_FACT"    ],
+ [ "TEMPERATURE"   ],
+ [ "EVENT_SERVER",        [ "Running", "Standby" ] ],
+ [ "DATA_LOGGER",         [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+ [ "FSC_CONTROL",         [ "Connected"                       ] ],
+ [ "MCP",                 [ "Idle"                            ] ],
+ [ "TIME_CHECK",          [ "Valid"                           ] ],
+ [ "PWR_CONTROL",         [ "SystemOn"                        ] ],
+ [ "AGILENT_CONTROL_24V", [ "VoltageOn"                       ] ],
+ [ "AGILENT_CONTROL_50V", [ "VoltageOn"                       ] ],
+ [ "AGILENT_CONTROL_80V", [ "VoltageOn"                       ] ],
+ [ "BIAS_CONTROL",        [ "VoltageOff"                      ] ],
+ [ "FEEDBACK",            [ "Calibrated"                      ] ],
+ [ "RATE_SCAN",           [ "Connected"                       ] ],
+ [ "RATE_CONTROL",        [ "Connected"                       ] ],
+ [ "DRIVE_CONTROL",       [ "Initialized", "Tracking", "OnTrack", "Locked" ] ],
+ [ "LID_CONTROL",         [ "Open", "Closed"                  ] ],
+ [ "FTM_CONTROL",         [ "Valid", "TriggerOn"              ] ],
+ [ "FAD_CONTROL",         [ "Connected", "WritingData"        ] ],
+ [ "GPS_CONTROL",         [ "Locked" ] ],
+ [ "SQM_CONTROL",         [ "Valid" ] ],
+ [ "PFMINI_CONTROL",      [ "Receiving" ] ],
+];
+
+
+
+if (!checkStates(table))
+{
+    throw new Error("Something unexpected has happened. Although the startup-"+
+                    "procedure has finished, not all servers are in the state "+
+                    "in which they ought to be. Please, try to find out what "+
+                    "happened...");
+}
Index: branches/FACT++_part_filenames/scripts/closed_lid_ratescan.js
===================================================================
--- branches/FACT++_part_filenames/scripts/closed_lid_ratescan.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/closed_lid_ratescan.js	(revision 18732)
@@ -0,0 +1,143 @@
+voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    if (state=="Disconnected")
+    {
+        console.out("  Voltage off: bias crate disconnected!");
+        return;
+    }
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        dim.log("Switching voltage off.");
+
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        //dim.send("FEEDBACK/STOP");
+        //dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        //dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+
+        // Switch voltage off
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000?
+    dim.wait("FEEDBACK",     "Calibrated",  3000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        dim.log("Voltage off.");
+}
+
+waitForVoltageOn = function()
+{
+    // Avoid output if condition is already fulfilled
+    dim.log("Waiting for voltage to be stable.");
+
+    function func()
+    {
+        if (this.ok==true)
+            return true;
+    }
+
+    var now = new Date();
+
+    this.last = undefined;
+    this.ok = false;
+    v8.timeout(4*60000, func, this); // FIMXE: Remove 4!
+    this.ok = undefined;
+
+    dim.log("Voltage On(?)");
+
+    //if (irq)
+        //dim.log("Waiting for stable voltage interrupted.");
+    //else
+        //dim.log("Voltage stable within limits");
+}
+
+
+voltageOn = function(ov)
+{
+    if (isNaN(ov))
+        ov = 1.1;
+
+    if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov)
+    {
+        dim.log("Stoping feedback.");
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.send("FEEDBACK/STOP");
+        dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+    }
+
+    var isOff = dim.state("FEEDBACK").name=="Calibrated";
+    if (isOff)
+    {
+        dim.log("Switching voltage to Uov="+ov+"V.");
+
+        dim.send("FEEDBACK/START", ov);
+
+        // FIXME: We could miss "InProgress" if it immediately changes to "Warning"
+        //        Maybe a dim.timeout state>8 ?
+        dim.wait("FEEDBACK", "InProgress", 45000);
+
+        this.ov = ov;
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+}
+
+ dim.log("STARTING SCRIPT closed_lid_ratescan");
+
+// dim.log("Sending Voltage On");
+// voltageOn();
+ v8.sleep(10000);
+
+     var tm = new Date();
+
+     dim.log("Starting ratescan.");
+
+     // Start rate scan
+     //dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 200, 900, 20);
+     dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 100, 900, 10);
+
+      // PAUSE
+     dim.log("PAUSE 10s");
+     v8.sleep(10000);
+     dim.log("Start Ratescan");
+
+     // Lets wait if the ratescan really starts... this might take a few
+     dim.wait("RATE_SCAN", "InProgress", 10000);
+     //dim.wait("RATE_SCAN", "Connected", 2700000);
+     dim.wait("RATE_SCAN", "Connected", 3500000);
+
+     dim.log("Ratescan done");
+
+
+// voltageOff();
+
+ dim.log("Task finished [RATESCAN]");
+ console.out("");
+
Index: branches/FACT++_part_filenames/scripts/crateReset.js
===================================================================
--- branches/FACT++_part_filenames/scripts/crateReset.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/crateReset.js	(revision 18732)
@@ -0,0 +1,159 @@
+'use strict';
+
+// ==========================================================================
+// Reset Crate
+// ==========================================================================
+
+// call it with: .js doCrateReset.js crate0=true crate3=true
+//           or: DIM_CONTROL/START doCrateReset.js crate0=true crate3=true
+
+// -------------------------------------------------------------------------
+
+include('scripts/CheckStates.js');
+
+function crateReset(crate)
+{
+    var msg = "Starting crate reset:";
+
+    var cnt = 0;
+    for (var i=0; i<4; i++)
+        if (crate[i])
+        {
+            cnt++;
+            msg += " "+i;
+        }
+
+    if (cnt==0)
+    {
+        console.out("No crate to reset.");
+        return;
+    }
+
+    dim.log(msg);
+
+    console.out("Checking availability of servers...");
+
+    var table =
+        [
+         [ "MCP" ],
+         [ "FTM_CONTROL" ],
+         [ "FAD_CONTROL" ],
+        ];
+    if (!checkStates(table, 3000))
+        throw new Error("Either MCP, FTM_CONTROL or FAD_CONTROL not online.");
+
+    // No data taking should be in progress
+    // Trigger must be switched off
+    checkSend(["MCP", "FAD_CONTROL", "FTM_CONTROL" ]);
+
+
+    var mcp = dim.state("MCP");
+    if (mcp.name=="TriggerOn" || mcp.state=="TakingData")
+        dim.send("MCP/STOP");
+    if (mcp.name.substr(0,7)=="kConfig")
+        dim.send("MCP/RESET");
+    if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        dim.send("FTM_CONTROL/STOP_TRIGGER");
+    if (dim.state("FTM_CONTROL").name.indexOf("Config")==0)
+        dim.send("FTM_CONTROL/RESET_CONFIGURE");
+
+    console.out("Checking status of servers...");
+
+    var table =
+        [
+         [ "MCP", [ "Idle", "Connected" ]],
+         [ "FTM_CONTROL", [ "Valid" ] ],
+         [ "FAD_CONTROL", [ "Disengaged", "Disconnected", "Connecting", "Connected" ] ],
+        ];
+    if (!checkStates(table, 3000, true))
+        throw new Error("Either MCP, FTM_CONTROL or FAD_CONTROL not in a state in which it ought to be.");
+
+    // FTUs must be switched off
+
+    console.out("Disable FTUs...");
+
+    //checkSend(["FTM_CONTROL"]);
+    dim.send("FTM_CONTROL/ENABLE_FTU", -1, false);
+    v8.sleep(1000);
+
+    // Boards in the crates must be disconnected
+
+    //checkSend(["FAD_CONTROL"]);
+
+    dim.log("Disconnecting crates.");
+
+    if (dim.state("FAD_CONTROL").name=="Connecting" || dim.state("FAD_CONTROL").name=="Connected")
+        for (var i=0; i<10; i++)
+        {
+            for (var j=0; j<4; j++)
+                if (crate[j])
+                {
+                    console.out("Sending DISCONNECT "+(j*10+i));
+                    dim.send("FAD_CONTROL/DISCONNECT", j*10+i);
+                }
+        }
+
+    v8.sleep(2000);
+    if (!checkStates([[ "FAD_CONTROL", [ "Disengaged", "Disconnected", "Connected" ] ]]))
+        throw new Error("FAD_CONTROL neither Disengaged, Disconnected not Connected.");
+
+
+    // Reset crates
+
+    dim.log("Sending reset.");
+
+    if (cnt==4)
+        dim.send("FTM_CONTROL/RESET_CAMERA");
+    else
+    {
+        for (var i=0; i<4; i++)
+            if (crate[i])
+            {
+                console.out("Sending RESET_CRATE "+i);
+                dim.send("FTM_CONTROL/RESET_CRATE", i);
+            }
+    }
+
+    // We have to wait a bit
+
+    v8.sleep(3200);
+
+    // Reconnect all boards
+
+    dim.log("Waiting for connection.");
+
+    if (dim.state("FAD_CONTROL").name=="Disengaged")
+    {
+        dim.send("Waiting 38s for crates to finish reset.");
+        v8.sleep(38000);
+        dim.send("FAD_CONTROL", "START");
+    }
+    else
+        for (var i=0; i<10; i++)
+        {
+            v8.sleep(3200);
+            for (var j=0; j<4; j++)
+                if (crate[j])
+                {
+                    console.out("Sending CONNECT "+(j*10+i));
+                    dim.send("FAD_CONTROL/CONNECT", j*10+i);
+                }
+        }
+
+
+    // Reconnect all FTUs
+
+    console.out("Enable FTUs...");
+
+    v8.sleep(1000);
+    dim.send("FTM_CONTROL/ENABLE_FTU", -1, true);
+    v8.sleep(3000);
+    dim.send("FTM_CONTROL/PING");
+    v8.sleep(1000);
+
+    dim.wait("FAD_CONTROL", "Connected", 3000);
+
+    // Done
+
+    dim.log("Crate reset finished.");
+}
Index: branches/FACT++_part_filenames/scripts/doCrateReset.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doCrateReset.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doCrateReset.js	(revision 18732)
@@ -0,0 +1,24 @@
+'use strict';
+
+// ==========================================================================
+// Reset Crate
+// ==========================================================================
+
+// call it with: .js doCrateReset.js crate0=true crate3=true
+//           or: DIM_CONTROL/START doCrateReset.js crate0=true crate3=true
+
+// -------------------------------------------------------------------------
+
+include('scripts/CheckStates.js');
+
+var crates =
+[
+     $['camera']=='true' || $['crate0']=='true',
+     $['camera']=='true' || $['crate1']=='true',
+     $['camera']=='true' || $['crate2']=='true',
+     $['camera']=='true' || $['crate3']=='true'
+];
+
+include('scripts/crateReset.js');
+
+crateReset(crates);
Index: branches/FACT++_part_filenames/scripts/doDrivePark.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doDrivePark.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doDrivePark.js	(revision 18732)
@@ -0,0 +1,6 @@
+console.out("Sending drive park...");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/PARK");
Index: branches/FACT++_part_filenames/scripts/doDriveReset.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doDriveReset.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doDriveReset.js	(revision 18732)
@@ -0,0 +1,6 @@
+console.out("Sending drive reset.");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/RESET");
Index: branches/FACT++_part_filenames/scripts/doDriveStop.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doDriveStop.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doDriveStop.js	(revision 18732)
@@ -0,0 +1,6 @@
+console.out("Sending drive stop.");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/STOP");
Index: branches/FACT++_part_filenames/scripts/doDriveToggle.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doDriveToggle.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doDriveToggle.js	(revision 18732)
@@ -0,0 +1,6 @@
+console.out("Sending troggle drive.");
+
+include("scripts/CheckStates.js");
+
+checkSend(["PWR_CONTROL"]);
+dim.send("PWR_CONTROL/TOGGLE_DRIVE");
Index: branches/FACT++_part_filenames/scripts/doDriveUnlock.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doDriveUnlock.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doDriveUnlock.js	(revision 18732)
@@ -0,0 +1,6 @@
+console.out("Sending drive unlock...");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/UNLOCK");
Index: branches/FACT++_part_filenames/scripts/doMoveTelescope.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doMoveTelescope.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doMoveTelescope.js	(revision 18732)
@@ -0,0 +1,15 @@
+var zd = $['zd'];
+var az = $['az'];
+
+if (isNaN(zd) || zd<-100 || zd>100)
+    throw new Error("Invalid zenith distance!");
+
+if (isNaN(az) || az<-290 || az>80)
+    throw new Error("Invalid azimuth!");
+
+console.out("Moving telescope to zd="+zd+"deg, az="+az+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/MOVE_TO", zd, az);
Index: branches/FACT++_part_filenames/scripts/doTrackPosition.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doTrackPosition.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doTrackPosition.js	(revision 18732)
@@ -0,0 +1,9 @@
+var ra = $['ra'];
+var dec = $['dec'];
+
+console.out("Start tracking at ra="+ra+"h, dec="+dec+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK", ra, dec);
Index: branches/FACT++_part_filenames/scripts/doTrackSource.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doTrackSource.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doTrackSource.js	(revision 18732)
@@ -0,0 +1,16 @@
+var offset = parseFloat($['offset']);
+var angle  = parseFloat($['wobble']);
+var source = $['source'];
+
+if (isNaN(offset) || offset<0)
+    throw new Error("Invalid wobble offset!");
+
+if (isNaN(angle) || angle<0 || angle>360)
+    throw new Error("Invalid wobble angle!");
+
+console.out("Start tracking source "+source+" at wobble angle "+angle+"deg and offset "+offset+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK_SOURCE", offset, angle, source);
Index: branches/FACT++_part_filenames/scripts/doTrackWobble.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doTrackWobble.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doTrackWobble.js	(revision 18732)
@@ -0,0 +1,9 @@
+var wobble = $['wobble']=='true' ? 2 : 1;
+var source = $['source'];
+
+console.out("Start tracking wobble position "+wobble+" of "+source);
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, source);
Index: branches/FACT++_part_filenames/scripts/doc/Curl.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Curl.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Curl.js	(revision 18732)
@@ -0,0 +1,63 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    A class which allows to issue simple http requests through 'curl'
+ */
+
+
+/**
+ * @class
+ *
+ * This class represents an interface to the program 'curl'.
+ *
+ * Note that it currently only implements the minimum required
+ * interface but it can easily be extended.
+ *
+ * To send a http request, create an instance with the address
+ * and (if required) username and password as argument.
+ *
+ * @example
+ *     var curl = new Curl("user:password@www.server.com/path/index.html");
+ *
+ *     // You can add data with
+ *     curl.data.push("argument1=value1");
+ *     curl.data.push("argument2=value3");
+ *
+ *     // Issue the request
+ *     var ret = curl.send();
+ *
+ * @author <a href="mailto:tbretz@physik.rwth-aachen.de">Thomas Bretz</a>
+ *
+ */
+function Curl()
+{
+
+    /**
+     * Data of the post/get request
+     *
+     * @type Array[String]
+     */
+    this.data = data;
+
+    /**
+     * Send the request. This calles the 'curl' program. For further
+     * details, e.g. on the return value, see the corresponding man page.
+     *
+     * @param {Boolean} [block=true]
+     *    This parameter specifies whether the pipe should be closed,
+     *    which means that a blocking wait is performed until the 'mail'
+     *    program returns, or the pipe will be closed automatically
+     *    in the background when the 'curl' program has finished.
+     *    Note, that if the calling program terminates, maybe this
+     *    call will never succeed.
+     *
+     * @returns {Object}
+     *    An object with three properties is returned.
+     *    'cmd'  contains the command issued
+     *    'data' contains the data returned from the server in case of
+     *           success, some error string returned by curl otherwise.
+     *    'rc'   is an integer and the return code of 'curl'
+     *
+     */
+    this.send = function() { /* [native code] */ }
+}
Index: branches/FACT++_part_filenames/scripts/doc/Database.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Database.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Database.js	(revision 18732)
@@ -0,0 +1,97 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Database connection object
+ */
+
+/**
+ * @class
+ *
+ * Returns a connection to a MySQL server or a specific database.
+ *
+ * For connection the MySQL++ library is used. MySQL++ throws exceptions
+ * in case of errors, e.g. connection timeout.<P>
+ *
+ * Note that although the object is created with 'new' and there
+ * is a 'delete' is JavaScript, it will not call any kind of
+ * destructor. To close a Subscription you have to explicitly call
+ * the close() member function. 'delete' in JavaScript is only
+ * to remove a property from an Object.
+ *
+ * @param {String} database
+ *    The databse argument is of this form (optional parts ar given in brackets):<br>
+ *    <tt>user:password@server.domain.com[:port]/database</tt>
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If no connection could be opened, an exception with the reason is
+ *    thrown.
+ *
+ * @example
+ *    var db = new Database("thomas@sql.at-home.com/database");
+ */
+function Database()
+{
+    /**
+     * User connected to the database
+     * @constant
+     */
+    this.user = user;
+
+    /**
+     * Server which is connected
+     * @constant
+     */
+    this.server = server;
+
+    /**
+     * Database which is connected
+     * @constant
+     */
+    this.database = database;
+
+    /**
+     * Port connected (if no port was given 'undefined')
+     * @constant
+     */
+    this.port = port;
+
+    /**
+     * Returns the result of an sql query sent to the database.
+     *
+     * @param arguments
+     *    The arguments specify the query to be sent
+     *
+     * @throws
+     *    If no connection could be opened, an exception with the reason is
+     *    thrown.
+     *
+     * @returns
+     *    An array is returned. Each entry in the array corresponds to one
+     *    row of the table and is expressed an an associative array (object).
+     *    The names of the entries (columns) in each row are stored in
+     *    a property cols which is an array itself. For convenience,
+     *    table and query are stored in identically names properties.
+     *
+     * @example
+     *    var table = db.query("SELECT * FROM table WHERE value BETWEEN", 5, "AND 20");
+     *    for (var row=0; row&lt;table.length; row++)
+     *        for (var col in table.cols)
+     *            console.out("table["+row+"]['"+col+"']="+table[row][col]);
+     *
+     */
+    this.query = function() { /* [native code] */ }
+
+    /**
+     *
+     * Close the connection to the database.
+     *
+     * The connection is automaically closed at cript termination.
+     *
+     * @returns {Boolean}
+     *     If the connection was successfully closed, i.e. it
+     *     was still open, true is returned, false otherwise.
+     *
+     */
+    this.close = function() { /* [native code] */ }
+};
Index: branches/FACT++_part_filenames/scripts/doc/Event.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Event.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Event.js	(revision 18732)
@@ -0,0 +1,119 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the Event object returned by Subscription.get()
+ */
+
+/**
+ * @class
+ *
+ * The object returned by Subscription.get(). It contains
+ * all data received with the event.
+ *
+ */
+function Event()
+{
+    /**
+     * The name of the Subscription this event belongs to.
+     *
+     * @type String
+     * @constant
+     */
+    this.name = name;
+
+    /**
+     * The format string corresponding to this event.
+     *
+     * @see <A HREF="dim.cern.ch">DIM</A> for more details
+     * @type String
+     * @constant
+     */
+    this.format = format;
+
+    /**
+     * The Quality-of-Service transmitted by this event.
+     *
+     * @type Integer
+     * @constant
+     */
+    this.qos = qos;
+
+    /**
+     * The size in bytes of the event received
+     *
+     * @type Integer
+     * @constant
+     */
+    this.size = size;
+
+    /**
+     * An counter of events received since the Subscription has
+     * been created. The first event received is 1. 0 corresponds
+     * to no event received yet.
+     *
+     * @type Integer
+     * @constant
+     */
+    this.counter = counter;
+
+    /**
+     * The time transmitted with this event, if transmitted. If nonw
+     * was transmitted, this might just be the time the event was
+     * received.
+     *
+     * @type Date
+     * @constant
+     */
+    this.time = time;
+
+    /**
+     * Array with the data received.
+     *
+     * The contents of the array are sorted in the order of the event format
+     * string. The contents of the array can be all kind of objects
+     * defined by the format string. If a format described several entries
+     * (e.g. I:5) and array will be added.<P>
+     *
+     * In the special case that the format string contains only a single
+     * format, e.g. "I", "F:5" or "C", data will not be an array,
+     * but contain the object data (or the array) directly.
+     *
+     * If valid data was received, but the size was zero, then
+     * null is returned as data
+     *
+     *    <li> data===undefined: no data received (no connection)
+     *    <li> data===null:      an event was received, but it was empty
+     *    <li> data.length>0:    an event was received and it contains data
+     *
+     * @type Array
+     * @constant
+     *
+     */
+    this.data = [ ];
+
+    /**
+     * Object with the data received.
+     *
+     * The object contains essentially the same information than the
+     * data memeber, but the received data are added as properties
+     * instead of enumerable lements. This allows to access
+     * the received data by names as specified by the SERVICE_DESC
+     * service.<P>
+     *
+     * If an empty event was received, but names are available,
+     * the object will be empty. Otherwise 'obj' will be undefined.
+     *
+     *     <li> obj===undefined: no names are available
+     *     <li> obj!==undefined, length==0: names are available, but no data (no connection)
+     *     <li> obj!==undefined, length>0: names are available, data has been received
+     *
+     * <P>
+     * Note that to get the number of properties (length) you have to call
+     * Object.keys(obj).length;
+     *
+     * @type Object
+     * @constant
+     *
+     */
+    this.obj = { };
+}
Index: branches/FACT++_part_filenames/scripts/doc/Local.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Local.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Local.js	(revision 18732)
@@ -0,0 +1,101 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Local class built into dimctrl.
+ */
+
+/**
+ * @class
+ *
+ * A set of coordinates on the celestial sphere.
+ *
+ * The class stores a set of coordinates on the celestial, i.e. local,
+ * sky. If the data was the result of a coordinate transformation, the
+ * corresponding time is stored in addition. Functions to convert to sky
+ * coordinates and to measure distances on th sky are included.
+ *
+ * @param {Number} zenithDistance
+ *     Zenith angle in degree (Zenith=0deg)
+ *
+ * @param {Number} azimuth
+ *     Azimuth angle in degree (North=0deg, East=90deg)
+ *
+ * @example
+ *     var local = new Local(12, 45);
+ *     var sky   = local.toSky();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Local(zenithDistance, azimuth)
+{
+    /**
+     * Zenith distance in degree (Zenith=0deg)
+     *
+     * @constant
+     *
+     * @type Number
+     */
+    this.zd = zenithDistance;
+
+    /**
+     * Azimuth in degree (North=0deg, East=90deg)
+     *
+     * @constant
+     *
+     * @type Number
+     */
+    this.az = azimuth;
+
+    /**
+     * Time corresponding to ra and dec if they are the result of
+     * a conversion.
+     *
+     * @constant
+     * @default undefined
+     *
+     * @type Date
+     */
+    this.time = undefined;
+
+
+    /**
+     * Convert celestial coordinats to sky coordinates.
+     * As observatory location the FACT telescope is assumed.
+     * The conversion is done using libnova's ln_get_equ_from_hrz.
+     *
+     * @constant
+     *
+     * @param {Date} [time=new Date()]
+     *     Reference time for the conversion
+     *
+     * @returns {Sky}
+     *     A Sky object with the converted coordinates and
+     *     the corresponding time.
+     */
+    this.toSky = function() { /* [native code] */ }
+}
+
+/**
+ * Calculate the distance between two celestial sky positions.
+ *
+ * The distance between the two provided objects is calculated.
+ * The returned value is an absolute distance (angle) between
+ * the two positions.
+ *
+ * @constant
+ *
+ * @param {Local} local1
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'zd' and 'az' can be provided.
+ *
+ * @param {Local} local2
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'zd' and 'az' can be provided.
+ *
+ * @returns {Number}
+ *     Absolute distance between both positions on the sky in degrees.
+     */
+Local.dist = function() { /* [native code] */}
Index: branches/FACT++_part_filenames/scripts/doc/Mail.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Mail.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Mail.js	(revision 18732)
@@ -0,0 +1,115 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    A class which allows to send mails through the 'mail' program
+ */
+
+
+/**
+ * @class
+ *
+ * This class represents an interface to the program 'mail'.
+ *
+ * To send a mail, create an instance and fill the properties
+ * (see reference) with proper data.
+ *
+ * @example
+ *     var mail = new Mail("This is the subject");
+ *
+ *     // At least one recipient is mandatory
+ *     mail.recipients.push("max.mustermann@musterstadt.com");
+ *     // To add several recipients
+ *     mail.recipients.push("max.mustermann@musterstadt.com", "erika.mustermann@musterstadt.com");
+ *
+ *     // similar to the property recipient you can use the properties 'cc' and 'bcc'
+ *
+ *     // If you want to add attachments [optional]
+ *     mail.attachments.push("logfile.txt");
+ *     // or for several attachments
+ *     mail.attachments.push("logfile1.txt", "logfile2.txt");
+ *
+ *     // The text of the message is set in the property text...
+ *     // ...either as single string
+ *     mail.text.push("This is line1\nThis is line2");
+ *     mail.text.push("This is line1");
+ *     mail.text.push("This is line2");
+ *
+ *     // Send the message
+ *     mail.send();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Mail()
+{
+
+    /**
+     * Subject of the mail
+     *
+     * @type String
+     * @constant
+     */
+    this.subject = subject;
+
+    /**
+     * Recipient(s) of the mail. One recipient is mandatory.
+     *
+     * @type Array[String]
+     */
+    this.recipients = recipient;
+
+    /**
+     * Carbon copy [optional]. Adresses who should receive a copy of the
+     * mail. All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.cc = undefined;
+
+    /**
+     * Blind carbon copy [optional]. Adresses who should receive a copy of the
+     * mail. All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.bcc = undefined;
+
+    /**
+     * Attachments [optional]. File to be attached to the mail.
+     * All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.attachments = undefined;
+
+    /**
+     * Message body. At least one line in the message is mandatory.
+     * Undefined or null entries in the array are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.text = text;
+
+    /**
+     * Send the message. This calles the 'mailx' program. For further
+     * details, e.g. on the return value, see the corresponding man page.
+     *
+     * @param {Boolean} [block=true]
+     *    This parameter specifies whether the pipe should be closed,
+     *    which means that a blocking wait is performed until the 'mail'
+     *    program returns, or the pipe will be closed automatically
+     *    in the background when the 'mail' program has finished.
+     *    Note, that if the calling program terminates, maybe this
+     *    call will never succeed.
+     *
+     * @returns {Integer}
+     *    The return code of the 'mail' program is returned (0
+     *    usually means success), undefined if block was set to false.
+     *
+     * @throws
+     *    An exception is thrown if any validity check for the
+     *    properties or the arguments fail.
+     *
+     */
+    this.send = function() { /* [native code] */ }
+}
Index: branches/FACT++_part_filenames/scripts/doc/Moon.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Moon.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Moon.js	(revision 18732)
@@ -0,0 +1,116 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Moon class built into dimctrl.
+ */
+
+/**
+ * @class
+ *
+ * Calculates the moon's sky position at a given time.
+ *
+ * When instantiated, the class members are set to the sky position
+ * of the moon at the given time. The calculation is done using
+ * libnova's ln_get_lunar_equ_coords. A different time can be provided
+ * by the user. The sky coordinates are stored together with the time.
+ * A function is provided to convert the moon's position to celestial
+ * coordinates. A function to calculate the illuminated fraction of
+ * the moon's disk.
+ *
+ * @param {Date} [time=new Date()]
+ *    Reference time for the calculation of the moon's position.
+ *
+ * @example
+ *    var moon = new Moon();
+ *    var local = moon.toLocal();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+function Moon(time)
+{
+    /**
+     * Right ascension of the moon in hours.
+     *
+     * @type Number
+     * @constant
+     *
+     */
+    this.ra = 0;
+
+    /**
+     * Declination of the moon in degrees.
+     *
+     * @type Number
+     * @constant
+     *
+     */
+    this.dec = 0;
+
+    /**
+     * Time corresponding to the calculated sky coordinates of the moon.
+     *
+     * @type Date
+     * @constant
+     */
+    this.time = time;
+
+    /**
+     * Converts the moon's sky coordinates to celestial coordinates.
+     * As observatory location the FACT telescope is assumed. For the
+     * time, the time corresponding to the stored sky coordinates is used.
+     * The conversion is done using libnova's ln_get_hrz_from_equ.
+     *
+     * @returns {Local}
+     *     A Local object with the converted coordinates and
+     *     the corresponding time.
+     */
+    this.toLocal = function() { /* [native code] */  }
+}
+
+/**
+ * Calculates the illuminated fraction of the moon's disk.
+ *
+ * Calculates the illuminated fraction of the moon's disk for the
+ * provided time. If no time is provided, the current system time
+ * is used. The calculation is done using libnova's ln_get_lunar_disk.
+ *
+ * @param {Date} [time=new Date()]
+ *    Time for which the moon disk should be calculated. If no time is
+ *    given, the current time is used.
+ *
+ * @type Number
+ *
+ * @returns
+ *    The illuminated fraction of the moon's disk corresponding
+ *    to the time argument
+ *
+ */
+Moon.disk = function() { /* [native code] */ }
+
+/**
+ * Calculate moon rise, set and transit times.
+ *
+ * Calculates the moon rise and set time, above and below horizon,
+ * and the time of culmination (transit time) for the given time.
+ * The calculation is done using libnova's ln_get_lunar_rst and is
+ * always performed for the FACT site at La Palma.
+ *
+ * @param {Date} [time=new Date()]
+ *    Date for which the times should be calculated. Note that the date
+ *    is converted to UTC and the times are calculated such that the
+ *    Date (yy/mm/dd) is identical for all returned values.
+ *
+ * @type {Object}
+ *
+ * @returns
+ *    An object with the following properties is returned: time {Date}
+ *    the provided time; rise, transit, set {Date} times of rise, set and
+ *    transit; isUp {Boolean} whether the moon is above or below horizon
+ *    at the provided time. If the moon does not rise or set, the properties
+ *    rise, transit and set will be undefined.
+ *
+ * @example
+ *    var date = new Date("2012-10-25 16:30 GMT"); // Date in UTC
+ *    console.out(JSON.stringify(Moon.horizon(date));
+ */
+Moon.horizon = function() { /* [native code] */ }
Index: branches/FACT++_part_filenames/scripts/doc/Sky.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Sky.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Sky.js	(revision 18732)
@@ -0,0 +1,97 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Sky class built into dimctrl.
+ */
+
+
+/**
+ * @class
+ *
+ * This class represents a set of sky coordinates.
+ *
+ * If the data was the result of a coordinate transformation, the
+ * corresponding time is stored in addition. A function to convert
+ * to local coordinates is included.
+ *
+ * @param {Number} rightAscension
+ *    Right ascension in hours
+ *
+ * @param {Number} declination
+ *    Declination in degree
+ *
+ * @example
+ *     var sky   = new Sky(12, 45);
+ *     var local = sky.toLocal();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Sky()
+{
+
+    /**
+     * Right ascension in hours
+     *
+     * @constant
+     * @type Number
+     */
+    this.ra = rightAscension
+
+    /**
+     * Declination in degrees
+     *
+     * @constant
+     * @type Number
+     */
+    this.dec = declination;
+
+    /**
+     * Time corresponding to ra and dec if they are the result of
+     * a conversion.
+     *
+     * @constant
+     * @type Date
+     */
+    this.time = undefined;
+
+    /**
+     * Convert sky coordinates to celestial coordinates.
+     * As observatory location the FACT telescope is assumed.
+     * The conversion is done using libnova's ln_get_hrz_from_equ.
+     *
+     * @param {Date} [time=new Date()]
+     *     Reference time for the converstion.
+     *
+     * @type Local
+     *
+     * @returns
+     *     A Local object with the converted coordinates and
+     *     the conversion time.
+     */
+    this.toLocal = function() { /* [native code] */  }
+}
+
+/**
+ * Calculate the distance between two sky positions.
+ *
+ * The distance between the two provided objects is calculated.
+ * The returned value is an absolute distance (angle) between
+ * the two positions.
+ *
+ * @constant
+ *
+ * @param {Sky} sky1
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'ra' and 'dec' can be provided.
+ *
+ * @param {Sky} sky2
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'ra' and 'dec' can be provided.
+ *
+ * @returns {Number}
+ *     Absolute distance between both positions on the sky in degrees.
+ */
+Sky.dist = function() { /* [native code] */}
Index: branches/FACT++_part_filenames/scripts/doc/String.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/String.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/String.js	(revision 18732)
@@ -0,0 +1,122 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the extension of the String class
+ *    built into dimctrl.
+ */
+
+/**
+ * Format a string (similar to printf in C).
+ *
+ * This function replaces modifiers (very similar to printf) with
+ * a formated version of the argument. Since JavaScript does implicit
+ * format conversion already, this is actually a very powerful tool,
+ * because the type of th arguments to be formated is of no importance.
+ * Implicit conversion means that also arrays and objects can be given
+ * as arguments. A shortcut is available as $-extension of the native
+ * String class.<P>
+ *
+ * Note that this function is completely written in JavaScript. It
+ * can be found in InterpreterV8.cc.<P>
+ *
+ * The following modifiers are available (optional parts are put in
+ * brackets:<br>
+ *
+ * <li><dt><B>c:</B> <tt>%[[-][0]N]c</tt></dt>
+ * <dd>Extracts the first element from an array. In case of a String this
+ * is the first character.</dd><p>
+ *
+ * <li><dt><B>s:</B> <tt>%[[-][0]N]s</tt></dt>
+ * <dd>Converts the argument to a string using toString()</dd><p>
+ *
+ * <li><dt><B>f:</B> <tt>%[[-][0]N[.n]]f</tt></dt>
+ * <dd>Converts to a Number value with n internal decimal places</dd><p>
+ *
+ * <li><dt><B>p:</B> <tt>%[[-][0]N[.n]]p</tt></dt>
+ * <dd>Converts to a Number value with a precision of n decimal places</dd><P>
+ *
+ * <li><dt><b>e:</b> <tt>%[[-][0]N]e</tt></dt>
+ * <dd>Converts to an exponential with a precision of n decimal places</dd><p>
+ *
+ * <li><dt><b>x:</b> <tt>%[[-][0]N[#b]x</tt></dt>
+ * <dd>Converts to an integer value using the basis b for conversion
+ * (default is 16 for hexadecimal)</dd><p>
+ *
+ * <li><dt><b>d:</b> <tt>%[[-][0]N[.n][#b]]d</tt></dt>
+ * <dd>Converts from a value using the basis b for conversion (default
+ * is 10 for decimal). The integer can be rounded to the given precision n.
+ * </dd><p>
+ *
+ * The output string will have at least a length of N. If 0 is given,
+ * it is filled with 0's instead of white spaces. If prefixed by a minus
+ * the contents will be left aligned.
+ *
+ * @param {String} format
+ *     The format string defining how the given argument elements are
+ *     formated
+ *
+ * @param {Array} elements
+ *     An array with the elements to be formated
+ *
+ * @returns {String}
+ *     The formated string is returned.
+ *
+ * @see
+ *     String.$
+ *
+ * @example
+ *    var result;
+ *    result = String.form("%5d %3d", [ 5, "2" ]);
+ *    result = String.form("%5x", [ 12 ]);
+ *    result = String.form("%#16d", [ "b" ]);
+ *    result = String.form("%s", [ [ 1, 2, 3, ] ]);
+ *    result = String.form("%s", [ { a:1, b:2, c:3, } ]);
+ *    var abbrev = "%03d".$(42);
+ *
+ */
+String.form = function() { /* [native code] */ }
+
+
+/**
+ * An abbreviation for String.form.
+ *
+ * Converts all arguments provided by the user into an array
+ * which is passed to String.form. The contents of the String itself
+ * is passed as format string. This allows a very compact syntax to
+ * format any kind of object, array or number.
+ * For details see String.form.
+ *
+ * @param   arg       An argument to be formated.
+ * @param   [. . .]   An undefined number of additional optional arguments.
+ *
+ * @returns {String} see String.form
+ * @throws  see String.form
+ * @see     String.form
+ *
+ * @example
+ *    var result = "%5d = %12s".$(5, "five");
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+String.prototype.$ = function() { /* [native code] */ };
+
+/**
+ * Like String match, but return the number counts how often
+ * the regular expression matches.
+ *
+ * @param {String} regex
+ *     The regular expression to search for, e.g., "s" (to count the s's) or
+ *     "As+A" (to count how often s's are surrounded by A's)
+ *
+ * @param {Boolean} [case=false]
+ *     Search is case insensitive if set to true.
+ *
+ * @returns {Interger}
+ *     The number of occurances of the regular expression
+ *
+ * @example
+ *    var result = "Thomas Bretz".count("[hme]"); // returns 3
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+String.prototype.count = function() { /* [native code] */ };
Index: branches/FACT++_part_filenames/scripts/doc/Subscription.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Subscription.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Subscription.js	(revision 18732)
@@ -0,0 +1,156 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of a DIM service Subscription
+ */
+
+/**
+ * @class
+ *
+ * Subscription to a DIM service.
+ *
+ * This class represents the subscription to a DIM service. Received
+ * events are first copied to an even queue internally, to avoid
+ * any processing blocking the DIM thread (which could block the
+ * whole network as a result). Then the events are processed.
+ * If a callback is installed, the processing will take place in
+ * another JavaScript thread. Physically it will run synchronously
+ * with the other JavaScript threads. However, the processing blocks
+ * event processing. Consequetly, processing should on average be
+ * faster than the frequency with which events arrive to ensure they
+ * will not fill up the memory and possible reactions to there
+ * contents will happen within a reasonable time and not delayed
+ * too much.
+ *
+ * Each subscription must exist only once, therefore the function-call
+ * can be used to check for an open subscription.  
+ *
+ * @param {String} service
+ *    Name of the DIM service to which a subscription should be made.
+ *    Usully of the form SERVER/SUBSCRIPTION.
+ *
+ * @param {Function} [callback]
+ *    An optional function which is set as 'onchange' property.
+ *    This can avoid to loose th first event after the subscription
+ *    before the callback is set by the 'onchange' property (which
+ *    is very unlikely).
+ *
+ * @throws
+ *    <li>If number or type of arguments is wrong
+ *    <li>If an open subscription to the same service already exists.
+ *
+ * @example
+ *    var handle1 = Subscription("MAGIC_WEATHER/DATA");
+ *    if (!handle1)
+ *        handle1 = new Subscription("MAGIC_WEATHER/DATA");
+ *    var handle2 = new Subscription("TNG_WEATHER/DATA", function(evt) { console.out(JSON.stringify(evt)); });
+ *    ...
+ *    handle2.close();
+ *    handle1.close();
+ */
+function Subscription(service, callback)
+{
+    /**
+     *
+     * The name of the service subscribed to.
+     *
+     * @constant
+     * @type String
+     *
+     */
+    this.name = service;
+
+    /**
+     *
+     * Boolean value which is set to false if the Subscription was closed.
+     *
+     * @type Boolean
+     *
+     */
+    this.isOpen = false;
+
+    /**
+     *
+     * Callback in case of event reception.
+     *
+     * To install a callback in case a new event of this Subscription
+     * was received, set this property to a function. The argument
+     * provided to the function is identical with the object returned
+     * by Subscription.get(). For the code executed, the same rules apply
+     * than for a thread created with Thread.
+     *
+     * @type Function
+     *
+     * @example
+     *     handle.onchange = function(event) { console.out(JSON.stringify(event); };
+     *
+     */
+    this.onchange = callback;
+
+    /**
+     *
+     * Returns the last received event of this subscription.
+     *
+     * @param {Integer} [timeout=0]
+     *     A timeout in millisecond to wait for an event to arrive.
+     *     This timeout only applied if no event has been received yet
+     *     after a new Subscription has been created. If an event
+     *     is already available, the event is returned. If the timeout
+     *     is 'null', waiting will never timeout until an event was received.
+     *     If the timeout is less than zero, no exception will be thrown,
+     *     but 'undefined' returned in case of timeout. The corresponding
+     *     timeout is then Math.abs(timeout).
+     *
+     * @param {Boolean} [requireNamed=true]
+     *     Usually an event is only considered complete, if also the
+     *     corresponding decription is available distributed through
+     *     the service SERVER/SERVICE_DESC. If an event has no
+     *     description or access to the data by name is not important,
+     *     requireNamed can be set to false.
+     *
+     * @throws
+     *    <li> If number or type of arguments is wrong
+     *    <li> After a timeout, if the timeout value was greater or equal zero
+     *    <li> If conversion of the received data to an event object has failed
+     *
+     * @returns {Event}
+     *     A valid event is returned, undefined in the case waiting for an
+     *     event has timed out and exceptions are supressed by a negative
+     *     timeout.
+     *
+     * @example
+     *     var a = new Subscription("...service does not exist...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // throws and exception
+     *     a.get(-3000, true);  // returns undefined
+     *     a.get(-3000, false); // returns undefined
+     *
+     *     var a = new Subscription("...service with valid description but no valid data yet...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // returns Event.data==null, Event.obj valid but empty
+     *     a.get(-3000, true);  // return undefined
+     *     a.get(-3000, false); // returns Event.data==null, Event.obj valid but emoty
+     *
+     *     // Assuming that now valid description is available but data
+     *     var a = new Subscription("...service without valid description but valid data...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // returns Event.data valid, Event.obj==undefined
+     *     a.get(-3000, true);  // returns undefined
+     *     a.get(-3000, false); // returns Event.data valid, Event.obj==undefined
+     *
+     */
+    this.get = function() { /* [native code] */ }
+
+    /**
+     *
+     * Unsubscribe from an existing subscription. Note that all open
+     * subscription produce network traffic and should be omitted if
+     * not needed.
+     *
+     * @returns {Boolean}
+     *     true if the subscription was still open, false if it was
+     *     already closed.
+     *
+     */
+    this.close = function() { /* [native code] */ }
+}
Index: branches/FACT++_part_filenames/scripts/doc/Sun.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Sun.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Sun.js	(revision 18732)
@@ -0,0 +1,58 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Sun class built into dimctrl.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for functions returning astrometry information about the Sun.
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var Sun = { };
+
+/**
+ * Calculate sun rise, set and transit times.
+ *
+ * Calculates the sun's rise and set time, above and below horizon,
+ * and the time of culmination (transit time) for the given time.
+ * As a second argument the angle abov or below horizon of interest
+ * can be provided. The calculation is done using libnova's
+ * ln_get_solar_rst_horizon and is always performed for the FACT
+ * site at La Palma.
+ *
+ * @param {Number,String} [angle=null]
+ *    Angle above (positive) or below (negative) horizon. The
+ *    angle can be given as Number in degree or as string referring to
+ *    "horizon" (0deg), "civil" (-6deg), "nautical" (-12deg),
+ *    "fact" (-15deg), "astronomical" (-18deg). Strings can be abbreviated
+ *    down to "h", "c", "n", "f" and "a". If the argument is omitted or
+ *    null, a value referring to the appearance or the disappearance of
+ *    the Sun's disk at horizon is chosen (~-0.8deg).
+ *
+ * @param {Date} [time=new Date()]
+ *    Date for which the times should be calculated. Note that the date
+ *    is converted to UTC and the times are calculated such that the
+ *    Date (yy/mm/dd) is identical for all returned values.
+ *
+ * @type {Object}
+ *
+ * @returns
+ *    An object with the following properties is returned: time {Date}
+ *    the provided time; rise, transit, set {Date} times of rise, set and
+ *    transit; horizon {Number} the angle used for the calculation;
+ *    isUp {Boolean} whether the sun is above or below the given horizon
+ *    at th given time. If the sun does not rise or set, the properties
+ *    rise, transit and set will be undefined, isUp will refer to
+ *    the fact whether the sun is the whole day above or below the
+ *    horizon (0deg).
+ *
+ * @example
+ *    var date = new Date("2012-10-25 16:30 GMT"); // Date in UTC
+ *    console.out(JSON.stringify(Sun.horizon());
+ *    console.out(JSON.stringify(Sun.horizon("astro"));
+ *    console.out(JSON.stringify(Sun.horizon(-12, date); // nautical
+ */
+Sun.horizon = function() { /* [native code] */ }
Index: branches/FACT++_part_filenames/scripts/doc/Thread.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/Thread.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/Thread.js	(revision 18732)
@@ -0,0 +1,62 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the Thread object
+ */
+
+/**
+ * @class
+ *
+ * Creates a handle to a new thread.
+ *
+ * The handle can be used to
+ * kill the thread or be ignored. The function provided is
+ * executed after an initial timeout. Note that although this
+ * looks similar to the setTimeout in web-browsers, after started,
+ * the thread will not run until completion but run in parallel to
+ * the executed script.<P>
+ *
+ * To stop the script from within a thread, use exit(). To stop only
+ * execution of the thread (silently) throw a null exception
+ * ("throw null;"). To terminate the script with an exception
+ * throw a normal exception ("throw new Error("my error");").
+ *
+ * Note that a running thread might consume all CPU. Although it is
+ * a seperated thread, JavaScript allows only one thread to run at
+ * a time (thus it can make programming simpler, but is not really
+ * consuming more CPU). In certain circumstances, it might be necessary
+ * to give CPU time with v8.sleep(...) back to allow other threads to run.
+ *
+ * @param {Integer} timeout
+ *    A positive integer given the initial delay in milliseconds before
+ *    the thread is executed.
+ *
+ * @param {Function} function
+ *    A function which is executed aftr the initial timeout.
+ *
+ * @param {Object} [_this]
+ *    An object which will be the reference for 'this' in the function call.
+ *    If none is given, the function itself will be the 'this' object.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *
+ * @example
+ *    var handle = new Thread(100, function() { console.out("Hello world!"); });
+ *    ...
+ *    handle.kill();
+ */
+function Thread(timeout, function, _this)
+{
+    /**
+     *
+     * Kills a running thread
+     *
+     * @returns {Boolean}
+     *     If the thread was still known, true is returned, false
+     *     otherwise. If the thread terminated already, false is
+     *     returned.
+     *
+     */
+    this.kill = function() { /* [native code] */ }
+};
Index: branches/FACT++_part_filenames/scripts/doc/_global_.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/_global_.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/_global_.js	(revision 18732)
@@ -0,0 +1,161 @@
+throw new Error("Description for built in functions. Must not be included!");
+/***************************************************************************/
+/***                                                                     ***/
+/***        JsDoc: http://code.google.com/p/jsdoc-toolkit/w/list         ***/
+/***                                                                     ***/
+/***                 jsdoc -d=html/dimctrl scripts/doc/                  ***/
+/***                                                                     ***/
+/***************************************************************************/
+/**
+ * @fileOverview
+ *    Documentation of the native functions built into dimctrl's
+ *    global namespace.
+ */
+
+/**
+ * An associative array containing the user supplied arguments identical to arg.
+ *
+ * @static
+ * @type Array
+ *
+ * @example
+ *    var value = $['name'];
+ *
+ */
+_global_.$ = [];
+
+/**
+ * An associative array containing the user supplied arguments identical to $.
+ *
+ * @static
+ * @type Array
+ *
+ * @example
+ *    for (var key in arg)
+ *        console.out("arg["+key+"]="+arg[key]);
+ */
+_global_.arg = [];
+
+/**
+ * A magic variable which is always set to the filename of the
+ * JavaScript file currently executed, if any.
+ *
+ * @static
+ * @type String
+ *
+ * @example
+ *    console.out(__FILE__);
+ */
+_global_.__FILE__ = filename;
+
+/**
+ * A magic variable which is always set to the modification time of the
+ * JavaScript file currently executed, if any.
+ *
+ * @static
+ * @type Date
+ *
+ * @example
+ *    console.out(__DATE__);
+ */
+_global_.__DATE__ = filedate;
+
+/**
+ * A magic variable which is always set to the start time when the
+ * current JavaScript session was started.
+ *
+ * @static
+ * @constant
+ * @type Date
+ *
+ * @example
+ *    console.out(__START__);
+ */
+_global_.__START__ = starttime;
+
+
+/**
+ * Includes another java script.
+ *
+ * Note that it is literally included,
+ * i.e. its code is executed as if it were at included at this
+ * place of the current file.
+ *
+ * @param {String} [name="test"]
+ *    Name of the file to be included. The base directory is
+ *    the directory in which dimctrl was started.
+ *
+ * @param {String} [. . . ]
+ *    More files to be included
+ *
+ * @type Array
+ *
+ * @static
+ *
+ */
+_global_.include = function() { /* [native code] */  }
+
+/**
+ * Forecefully exit the current script. This function can be called
+ * from anywhere and will terminate the current script.
+ *
+ * The effect is the same than throwing a null expecption ("throw null;")
+ * in the main thread. In every other thread or callback, the whole script
+ * will terminate which is different from the behaviour of a null exception
+ * which only terminates the corresponding thread.
+ *
+ * @static
+ *
+ */
+_global_.exit = function() { /* [native code] */  }
+
+/**
+ *
+ * @returns {String}
+ *    A string with the JavaScript V8 version is returned.
+ *
+ * @static
+ *
+ */
+_global_.version = function() { /* [native code] */  }
+
+/**
+ * Reads a file as a whole.
+ *
+ * Files can be split into an array when reading the file. It is
+ * important to note that no size check is done. So trying to read
+ * a file larger than the available memory will most probably crash
+ * the program. Strictly speaking only reading ascii fils make sense.
+ * Also gzip'ed files are supported.
+ *
+ * Note that this is only meant for debugging purpose and should
+ * not be usd in a production environment. Scripts should not
+ * access any files by defaults. If external values have to be
+ * provided arguments should be given to the script.
+ *
+ * @static
+ *
+ * @param {String} name
+ *    Name of the file to read. The base directory is the current
+ *    working directory
+ *
+ * @param {String} [delim=undefined]
+ *    A delimiter used to split the file into an array. If provided
+ *    it must be a String of length 1.
+ *
+ * @returns {String,Array[String]}
+ *    If no delimiter is given, a StringObject with the file (read
+ *    until \0) is returned. If a delimiter is given, an array
+ *    of Strings is returned, one for each chunk. Both objects
+ *    contain the property 'name' with the file name and the array
+ *    contains the property 'delim' with the used delimiter.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If there was an error reading the file, the system error is thrown
+ *
+ * @example
+ *    var string = File("fact++.rc");
+ *    var array  = File("fact++.rc", "\n");
+ */
+_global_.File = function() { /* [native code] */ }
Index: branches/FACT++_part_filenames/scripts/doc/console.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/console.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/console.js	(revision 18732)
@@ -0,0 +1,53 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for extension functions dealing with the console
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var console = { };
+
+/**
+ *
+ * Displays a message on the local console (only).
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     console.out("Five="+5, "--- new line ---");
+ *
+ */
+console.out = function() { /* [native code] */ }
+
+/**
+ *
+ * Displays a warning message on the local console (only).
+ *
+ * (This is mainly meant for debugging purpose to highlight warning
+ *  messages.)
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     console.warn("WARNING: Five="+5, "--- new line ---");
+ *
+ */
+console.warn = function() { /* [native code] */ }
Index: branches/FACT++_part_filenames/scripts/doc/dim.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/dim.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/dim.js	(revision 18732)
@@ -0,0 +1,260 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for extension functions dealing with the DIM network.
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var dim = { };
+
+/**
+ *
+ * Post a message into the dim log stream.
+ *
+ * It will be logged by the datalogger, displayed on the console
+ * and in the smartfact web-gui.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     dim.log("Five="+5, "--- new line ---");
+ *
+ */
+dim.log = function() { /* [native code] */ }
+
+/**
+ *
+ * Posts a message to the dim network with alarm severity.
+ *
+ * Similar to dim.log, but the message is posted to the network
+ * with alarm severity. This means that it is displayed in red
+ * and the smartfact web-gui will play an alarm sound.
+ * The alarm state will stay valid (displayed in the web-gui) until it
+ * is reset.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear as
+ *     individual alarm.
+ *
+ * @example
+ *     dim.alarm("Alarm for 30 seconds!");
+ *     v8.sleep(30000);
+ *     dim.alarm();
+ */
+dim.alarm = function() { /* [native code] */ }
+
+/**
+ *
+ * Send a dim command to a dim client.
+ *
+ * @param {String} commandId
+ *     The command id is a string and usually compiles like
+ *     'SERVER/COMMAND'
+ *
+ * @param argument
+ *     Any kind of argument can be given. Arguments are internally
+ *     converted into strings using toString() and processed as
+ *     if they were typed on th console.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments.
+ *
+ * @example
+ *     dim.send('DRIVE_CONTROL/TRACK_SOURCE 0.5 180 "Mrk 421"');
+ *     dim.send('DRIVE_CONTROL/TRACK_SOURCE', 0.5, 180, 'Mrk 421');
+ *
+ * @returns
+ *     A boolean value is returned whether the command was succesfully
+ *     posted into the network or not. Note that true does by no means
+ *     mean that the command was sucessfully received or even processed.
+ */
+dim.send = function() { /* [native code] */ }
+
+/**
+ * Returns the state of the given server.
+ *
+ * @param {String} name
+ *     The name of the server of which you want to get the state.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @returns {Object}
+ *     An object with the properties 'index' {Integer} and 'name' {String}
+ *     is returned if a connection to the server is established and
+ *     state information have been received, 'undefined' otherwise. If
+ *     the time of the last state change is available, it is stored
+ *     in the 'property'. If a server disconnected, a valid object will
+ *     be returned, but without any properties.
+ */
+dim.state = function() { /* [native code] */ }
+
+/**
+ * Wait for the given state of a server.
+ *
+ * Note that the function is internally asynchornously checking the
+ * state, that means that theoretically, a state could be missed if
+ * it changes too fast. If this can happen callbacks have to be used.
+ *
+ * @param {String} name
+ *     The name of the server of which you want to wait for a state.
+ *     The name must not contain quotation marks. To wait for
+ *     "not the given state", prefix the server name with an
+ *     exclamation mark, e.g. "!DIM_CONTROL"
+ *
+ * @param {String,Integer} state
+ *     The state you want to wait for. It can either be given as an Integer
+ *     or as the corresponding short name. If given as String it must
+ *     not contain quotation marks.
+ *
+ * @param {Integer} [timeout]
+ *     An optional timeout. If no timeout is given or a timeout of undefined,
+ *     waiting will not stop until the condition is fulfilled. A timeout
+ *     of 0 is allowed and will essentially just check if the server is
+ *     in this state or not. If a negative value is given, exceptions are
+ *     suppressed and false is returned in case of timeout. As timeout
+ *     the absolute value is used.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If no connection to the server is established or no state
+ *         has been received yet. This is identical to dim.state()
+ *         returning 'undefined' (only in case a positive timeout 
+ *         is given)
+ *
+ * @returns {Boolean}
+ *     true if the state was achived within the timeout, false otherwise.
+ */
+dim.wait = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a list of all known state of a given server.
+ *
+ * The returned object has all states with their index as property.
+ * Each state is returned as a String object with the property description.
+ *
+ * @param {String} [server='DIM_CONTROL']
+ *     Name of the server for which states should be listed.
+ *     The states of the DIM_CONTROl server are the default.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type Object[StringObject]
+ *
+ * @example
+ *     var states = dim.getStates("SERVER");
+ *     console.out(JSON.stringify(states));
+ *     for (var index in states)
+ *         console.out(index+"="+states[index]+": "+states[index].description);
+ */
+dim.getStates = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a description for one service
+ *
+ * The returned array has objects with the properties: name, description and unit. The last
+ * two are optional. The array itself has the properties name, server, service, isCommand
+ * and optionally format.
+ *
+ * @param {String} service
+ *     String specifying the name of the service to be returned.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type {Description}
+ *
+ * @example
+ *     var s = dim.getDescription("TNG_WEATHER/DATA");
+ *     console.out("Name="+s.name);
+ *     console.out("Server="+s.server);
+ *     console.out("Service="+s.service);
+ *     console.out("Format="+s.format);
+ *     console.out("Description="+s.name);
+ *     console.out("IsCommand="+s.isCommand);
+ *     console.out(JSON.stringify(s));
+ */
+dim.getDescription = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a list of all known services
+ *
+ * The returned array has objects with the properties: name, server, service, command
+ * and (optional) format.
+ *
+ * @param {String} [service='*']
+ *     String a service has to start with to be returned. The default is to return
+ *     all available services. An empty string or '*' are wildcards for all
+ *     services.
+ *
+ * @param {Boolean} [isCommand=undefined]
+ *     If no second argument is specified, data services and commands are returned.
+ *     With true, only commands, with false, only data-services are returned.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type Array[Object]
+ *
+ * @example
+ *     // Return all services of the FAD_CONTROL starting with E
+ *     var services = dim.getServices("FAD_CONTROL/E");
+ *     console.out(JSON.stringify(services));
+ */
+dim.getServices = function() { /* [native code] */ }
+
+/**
+ *
+ * Callback in case of state changes.
+ *
+ * To install a callback in case the state of a server changes. set
+ * the corresponding property of this array to a function. The argument
+ * provided to the function is identical with the object returned
+ * by dim.state(). In addition the name of the server is added
+ * as the 'name' property and the comment sent with the state change
+ * as 'comment' property. For the code executed, the same rules apply
+ * than for a thread created with Thread.<P>
+ *
+ * If a state change is defined for a server for which no callback
+ * has been set, the special entry '*' is checked.
+ *
+ *
+ * @type Array[Function]
+ *
+ * @example
+ *     dim.onchange['*'] = function(state) { console.out("State change from "+state.name+" received"); }
+ *     dim.onchange['DIM_CONTROL'] = function(state) { console.out(JSON.stringify(state); }
+ *     ...
+ *     delete dim.onchange['DIM_CONTROL']; // to remove the callback
+ *
+ */
+dim.onchange = [];
+
+
+/**
+ * DIM version number
+ *
+ * @constant
+ * @type Integer
+ */
+dim.version = 0;
Index: branches/FACT++_part_filenames/scripts/doc/dimctrl.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/dimctrl.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/dimctrl.js	(revision 18732)
@@ -0,0 +1,157 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the dimctrl namespace
+ */
+
+/**
+ * @namespace
+ *
+ * Global namespace for functions dealing with the dimctrl state
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var dimctrl = { };
+
+/**
+ * Define a new internal state.
+ *
+ * States should be defined when a script is started.
+ *
+ * @param {Integer} index
+ *    The intgeger number assigned to the new state. Only numbers
+ *    in the range [10, 255] are allowed.
+ *
+ * @param {String} [name]
+ *    A short name describing the state. According the the convention
+ *    used throughout FACT++, it it must not contain whitespaces or
+ *    underscores. Ever word should start with a capital letter,
+ *    e.g. 'TriggerOn'
+ *
+ * @param {String} [decription]
+ *    A user defined string which gives a more conscise explanation
+ *    of the meaning of the state and can also be displayed in the GUI
+ *    or anywhere else automatically,
+ *    e.g. "System setup and trigger switched on"
+ *
+ * @throws
+ *    <li> if something is wrong with the supplied arguments (type, number)
+ *    <li> when the index is out of range [10,255]
+ *    <li> the given state name is empty
+ *    <li> the given state name contains a colon or an equal sign
+ *    <li> when a state with the same name or index was already
+ *    <li> set since the script was started.
+ *
+ * @returns {Boolean}
+ *    A boolean whether the state was newly added (true) or an existing
+ *    one overwritten (false).
+ *
+ * @example
+ *     dim.defineState(10, "StateTen", "This is state number ten");
+ */
+dimctrl.defineState = function() { /* [native code] */ }
+
+/**
+ * Change the internal state.
+ *
+ * @param {Integer,String} state
+ *    Either the name of the state to set or its index can be supplied.
+ *
+ * @throws
+ *    <li> if something is wrong with the supplied arguments (type, number)
+ *    <li> if a String is given and it is not found in the list of names
+ *
+ * @returns {Boolean}
+ *     A boolean is returned whether setting the state wa sucessfull or
+ *     not. If the function is not called at unexpected time, i.e.
+ *     before the execution of the JavaScript has been started or
+ *     after it has already be terminated, true should be returned
+ *     always.
+ *
+ * @example
+ *     dim.setState(10);
+ *     dim.setState("StateTen");
+ */
+dimctrl.setState = function() { /* [native code] */ }
+
+/**
+ * Get the current internal state.
+ *
+ * @throws
+ *    if arguments are supplied
+ *
+ * @returns {Object}
+ *     An object with the properties index {Number}, name {String} and
+ *     description {String}. Note that name and description might be
+ *     an empty string.
+ *
+ * @example
+ *     var state = dim.getState();
+ *     console.out(JSON.stringify(state));
+ */
+dimctrl.getState = function() { /* [native code] */ }
+
+/**
+ * Set an interrupt handler, a function which is called if an
+ * interrupt is received, e.g. via dim (dimctrl --interrupt).
+ * Note that the interrupt handler is executed in its own JavaScript
+ * thread. Thus it interrupts the execution of the script, but does
+ * not stop its execution. Please also note that this is a callback
+ * from the main loop. As long as the handler is executed, no other
+ * event (dim or command interface) will be processed.
+ *
+ * If an interrupt was triggered by dimctrl (so not from within
+ * the script) and a number between 10 and 255 is returned,
+ * the state machine will change its state accordingly. Other returned
+ * ojects or returned values outside of this range are ignored.
+ *
+ * @param {Function} [func]
+ *    Function to be called when an interrupt is received. Null, undefined
+ *    or no argument to remove the handler.
+ *
+ * @throws
+ *    if number of type of arguments is wrong
+ *
+ * @example
+ *     function handleIrq(irq, args, time, user)
+ *     {
+ *         console.out("IRQ received:   "+irq);
+ *         console.out("Interrupt time: "+time);
+ *         console.out("Issuing user:   "+user);
+ *         console.out("Arguments:");
+ *         for (var key in args)
+ *             console.out(" args["+key+"="+args[key]);
+ *
+ *         var newState = 10;
+ *         return newState;
+ *     }
+ *     dimctrl.setInterruptHandler(handleIrq);
+ */
+dimctrl.setInterruptHandler = function() { /* [native code] */ }
+
+/**
+ * You can also issue an interrupt from anywhere in your code.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function. The result
+ *     must not contain any line break.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @returns
+ *    the return of the interrupt handler which is called is returned
+ *
+ * @throws
+ *    if an argument contains a line break
+ *
+ * @example
+ *     dimctrl.triggerInterrupt();
+ *     dimctrl.triggerInterrupt("my_command");
+ *     dimctrl.triggerInterrupt("my_command arg1 arg2=x arg3");
+ *     dimctrl.triggerInterrupt("arg1=x arg2 arg3");
+ *
+ */
+dimctrl.triggerInterrupt = function() { /* [native code] */ }
Index: branches/FACT++_part_filenames/scripts/doc/v8.js
===================================================================
--- branches/FACT++_part_filenames/scripts/doc/v8.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/doc/v8.js	(revision 18732)
@@ -0,0 +1,69 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for general extension functions
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var v8 = { };
+
+/**
+ * Sleep for a while. This can be used to just wait or give time
+ * back to the operating system to produce less CPU load if the
+ * main purpose of a loop is, e.g., to wait for something to happen.
+ *
+ * @param {Integer} [milliseconds=0]
+ *     Number of millliseconds to sleep. Note that even 0 will always
+ *     sleep at least one millisecond.
+ *
+ */
+v8.sleep = function() { /* [native code] */ }
+
+/**
+ * This function implements a simple timeout functionality. 
+ * back to the operating system to produce less CPU load if the
+ * main purpose of a loop is, e.g., to wait for something to happen.
+ *
+ * @param {Integer} milliseconds
+ *     Number of millliseconds until the timeout. Note that even 0
+ *     will execute the function at least once. If the timeout
+ *     is negative no exception will be thrown by undefined will
+ *     be returned in case of a timeout.
+ *
+ * @param {Function} func
+ *     A function. The function defines when the conditional to end
+ *     the timeout will be fullfilled. As soon as the function returns
+ *     a defined value, i.e. something else than undefined, the
+ *     timeout is stopped and its return value is returned.
+ *
+ * @param {Object} [_this]
+ *    An object which will be the reference for 'this' in the function call.
+ *    If none is given, the function itself will be the 'this' object.
+ *
+ * @param [. . .]
+ *     Any further argument will be passed as argument to the function.
+ *
+ * @returns
+ *     Whatever is returned by the function. undefined in case of timeout
+ *     and a negative timeout value.
+ *
+ * @throws
+ *     <li> When the number or type of argument is wrong
+ *     <li> In case the timeout is positive and the timeout condition occurs
+ *
+ */
+v8.timeout = function() { /* [native code] */ }
+
+/**
+ * Version number of the V8 JavaScript engine.
+ *
+ * @constant
+ * @type String
+ */
+v8.version = "";
Index: branches/FACT++_part_filenames/scripts/getSchedule.js
===================================================================
--- branches/FACT++_part_filenames/scripts/getSchedule.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/getSchedule.js	(revision 18732)
@@ -0,0 +1,87 @@
+// ======================================================================================
+
+function getSchedule()
+{
+    // Get current time
+    var start = new Date();//new Date("2013-04-07 19:00:00 UTC");
+
+    // Because Main.js could start a new observations just in the moment between 'now'
+    // and entering the new data in the database, we have to use the unique id
+    // in Main.js to check if the current observation should be changed (and sub resetted)
+    start = new Date(start.getTime()-10*3600000);
+
+    // ----------------------------------------------------------------------
+
+    // Connect to database
+    var db = new Database($['schedule-database']);
+
+    // Get the current schedule
+    var rows = db.query("SELECT * FROM Schedule "+
+                        "LEFT JOIN MeasurementType USING (fMeasurementTypeKey) "+
+                        "LEFT JOIN Source USING (fSourceKey) "+
+                        "WHERE fStart>'"+start.toISOString()+"' "+
+                        "ORDER BY fStart ASC, fMeasurementID ASC");
+
+    // Close db connection
+    db.close();
+
+    // ----------------------------------------------------------------------
+
+    var schedule = [];
+    var entry    = -1;
+    var sub      =  0;
+
+    for (var i=0; i<rows.length; i++)
+    {
+        var id  = rows[i]['fScheduleID'];
+        var sub = rows[i]['fMeasurementID'];
+        if (sub==0)
+            entry++;
+
+        var m = { }
+
+        m.task = rows[i]['fMeasurementTypeName'];
+        if (!m.task)
+            throw new Error("No valid measurement type for id=("+id+":"+sub+")");
+
+        // For simplicity, measurements suspend and resume must be unique in an observation
+        if ((m.task=="suspend" || m.task=="resume") && sub>0)
+            throw new Error("Measurement "+m.task+" not the only one in the observation (id="+id+")");
+
+        m.source = rows[i]['fSourceName'];
+
+        var data = rows[i]['fData'];
+        if (data)
+        {
+            var obj = JSON.parse(("{"+data+"}").replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":"));
+            for (var key in obj)
+                m[key] = obj[key];
+        }
+
+        if (!schedule[entry])
+            schedule[entry] = { };
+
+        schedule[entry].id   = id;
+        schedule[entry].date = new Date(rows[i]['fStart']+" UTC");
+
+        if (!schedule[entry].measurements)
+            schedule[entry].measurements = [];
+
+        schedule[entry].measurements[sub] = m;
+    }
+
+    for (var i=0; i<schedule.length; i++)
+        schedule[i] = new Observation(schedule[i]);
+
+    return schedule;
+}
+
+// -------------------------------------------------------------------------------------
+
+/*
+ // remove "
+ conv = conv.replace(/\"(\w+)\":/ig, "$1:");
+ // must contain one , less than :
+ // must not contain " and '
+ //var test = "{ra:12,dec:13}".replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":");
+*/
Index: branches/FACT++_part_filenames/scripts/handleAgilentPowerOn.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleAgilentPowerOn.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleAgilentPowerOn.js	(revision 18732)
@@ -0,0 +1,37 @@
+'use strict';
+
+// switch agilent control output on
+function handleAgilentPowerOn(wait_state)
+{
+    var state = dim.state("AGILENT_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("AGILENT_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+    case "Connected":
+        return undefined;
+
+    case "VoltageLow":
+        return wait_state;
+
+    case "VoltageOff":
+        console.out("Agilent in 'VoltageOff'... sending SET_POWER ON... waiting for 'VoltageOn'.");
+        dim.send("AGILENT_CONTROL/SET_POWER", true);
+        return "VoltageOn";
+
+    case "VoltageOn":
+        return "";
+
+    case "VoltageHigh":
+        throw new Error("Agilent reports voltage above limit ('VoltageHigh')... please check.");
+    }
+
+    throw new Error("AGILENT_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleBiasVoltageOff.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleBiasVoltageOff.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleBiasVoltageOff.js	(revision 18732)
@@ -0,0 +1,50 @@
+'use strict';
+
+// Get bias control connected and voltage off
+function handleBiasVoltageOff(wait_state)
+{
+    var state = dim.state("BIAS_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("BIAS_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Connecting":
+    case "Initializing":
+    case "Connected":
+    case "Ramping":
+        return wait_state;
+
+    case "Locked":
+        console.out("WARNING - Bias is LOCKED. Please report, this is serious, unlock manually and go on.");
+        return "";
+
+    // Do-something conditions
+    case "Disconnected":
+        console.out("Bias in Disconnected... connect.");
+        dim.send("BIAS_CONTROL/RECONNECT");
+        return "VoltageOff";
+
+    case "NotReferenced":
+    case "VoltageOn":
+        console.out("Bias in "+state.name+"... switch voltage off.");
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+        return "VoltageOff";
+
+    // Final state reached condition
+    case "VoltageOff":
+        return "";
+
+    // Conditions which cannot be handled
+    case "OverCurrent": throw "BIAS_CONTROL in OverCurrent";
+    case "ExpertMode":  throw "BIAS_CONTROL in expert mode";
+    }
+
+    throw new Error("BIAS_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleDriveArmed.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleDriveArmed.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleDriveArmed.js	(revision 18732)
@@ -0,0 +1,53 @@
+'use strict';
+
+// Get Drive control armed
+function handleDriveArmed(wait_state)
+{
+    var state = dim.state("DRIVE_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("DRIVE_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+        console.out("Drivectrl in 'Disconnected'... sending RECONNECT... waiting for 'Initialized'.");
+        dim.send("DRIVE_CONTROL/RECONNECT");
+        return "Initialized";
+
+    case "Connected":
+    case "Parking":
+    case "Stopping":
+    case "Armed":
+    case "Blocked":
+        v8.sleep(1000);
+        return undefined;
+
+    case "Locked":
+        console.out("WARNING - Drive is LOCKED. Please unlock manually.");
+        // Do NOT unlock the drive here... it is a safety feature which should
+        // never be used in an auotmatic process otherwise it is not realiable!
+        return "";
+
+    case "Moving":
+    case "Tracking":
+    case "OnTrack":
+        console.out("Drive in '"+state.name+"'... sending STOP... waiting for 'Initialized'.");
+        dim.send("DRIVE_CONTROL/STOP");
+        return "Initialized";
+
+    case "ERROR":
+        console.out("Drive in '"+state.name+"'... sending STOP... waiting for 'Initialized'");
+        dim.send("DRIVE_CONTROL/STOP");
+        return "Initialized";  // Process that again if necessary
+
+    case "Initialized":
+        return "";
+    }
+
+    throw new Error("DRIVE_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleFadConnected.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleFadConnected.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleFadConnected.js	(revision 18732)
@@ -0,0 +1,65 @@
+'use strict';
+
+// Get fad control connected
+function handleFadConnected(wait_state)
+{
+    var state = dim.state("FAD_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("BIAS_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Offline":
+        return undefined;
+
+    case "Disconnected":
+        console.out("Fadctrl in 'Disconnected'... sending START... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/START");
+        return "Connected";
+
+    // Do-nothing conditions
+    case "Connecting":
+        return wait_state;
+
+    // Do-something conditions
+    case "Configuring1":
+    case "Configuring2":
+    case "Configuring3":
+    case "Configured":
+        console.out("Fadctrl in Configure state... sending RESET_CONFIGURE... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/RESET_CONFIGURE");
+        return "Connected";
+
+    case "Disengaged":
+        console.out("Fadctrl in 'Disengaged'... sending START... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/START");
+        return "Connected";
+
+    case "RunInProgress":
+        console.out("Fadctrl in 'RunInProgress'... sending CLOSE_OPEN_FILES... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        return "Connected";
+
+    // Final state reached condition
+    case "Connected":
+        var sub_con = new Subscription("FAD_CONTROL/CONNECTIONS");
+        var con = sub_con.get(5000);
+        var all = true;
+        for (var i=0; i<40; i++)
+            if (con.obj['status'][i]&66!=66)
+            {
+                console.out("Board "+i+" not connected... sending CONNECT... waiting for 'Connected'.");
+                dim.send("FAD_CONTROL/CONNECT", i);
+                all = false;
+            }
+        sub_con.close();
+        return all ? "" : "Connected";
+    }
+
+    throw new Error("FAD_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleFeedbackConnected.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleFeedbackConnected.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleFeedbackConnected.js	(revision 18732)
@@ -0,0 +1,41 @@
+'use strict';
+
+function handleFeedbackConnected(wait_state)
+{
+    var state = dim.state("FEEDBACK");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("FEEDBACK:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+    case "Connecting":
+        return undefined;
+
+    case "Connected":
+    case "Calibrated":
+        return "";
+
+    case "WaitingForData":
+    case "OnStandby":
+    case "InProgress":
+    case "Warning":
+    case "Critical":
+        console.out("Feedback in '"+state.name+"'... sending STOP... waiting for 'Calibrated'.");
+        dim.send("FEEDBACK/STOP");
+        return "Calibrated";
+
+    case "Calibrating":
+        console.out("Feedback in '"+state.name+"'... sending STOP... waiting for 'Connected'.");
+        dim.send("FEEDBACK/STOP");
+        return "Connected";
+    }
+
+    throw new Error("FEEDBACK:"+state.name+"["+state.index+"] unknown or not handled.");
+}
+
Index: branches/FACT++_part_filenames/scripts/handleFscConnected.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleFscConnected.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleFscConnected.js	(revision 18732)
@@ -0,0 +1,28 @@
+'use strict';
+
+// Get FSC connected
+function handleFscConnected(wait_state)
+{
+    var state = dim.state("FSC_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //console.out("FSC_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Disconnected":
+        console.out("Fscctrl in 'Disconnected'... sending RECONNECT... waiting for 'Connected'.");
+        dim.send("FSC_CONTROL/RECONNECT");
+        return "Connected";
+
+    case "Connected":
+        return "";
+    }
+
+    throw new Error("FSC_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleFtmIdle.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleFtmIdle.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleFtmIdle.js	(revision 18732)
@@ -0,0 +1,54 @@
+'use strict';
+
+// Get ftm connected, idle and with working FTUs
+function handleFtmIdle(wait_state)
+{
+    var state = dim.state("FTM_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    // Only try to open the service if the server is already in the list
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("FTM_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+        console.out("Ftmctrl in 'Disconnected'... sending RECONNECT... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/RECONNECT");
+        return "Valid";
+
+    case "Idle":
+        console.out("Ftmctrl in 'Idle'... sending DISCONNECT... waiting for 'Disconnected'.");
+        dim.send("FTM_CONTROL/DISCONNECT");
+        v8.sleep(3000);
+        return "Disconnected";
+
+    case "Valid":
+        return "";
+
+    case "TriggerOn":
+        console.out("Ftmctrl in 'TriggerOn'... sending STOP_TRIGGER... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/STOP_TRIGGER");
+        return "Valid";
+ 
+    case "Configuring1":
+    case "Configuring2":
+    case "Configured1":
+        console.out("Ftmctrl in '"+state.name+"'... sending RESET_CONFIGURE... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/RESET_CONFIGURE");
+        return "Valid";
+
+    case "Configured2":
+        return "TriggerOn";
+
+    case "ConfigError1":
+    case "ConfigError2":
+    case "ConfigError3":
+        throw new Error("FTM_CONTROL:"+state.name+"["+state.index+"] in error state.");
+    }
+
+    throw new Error("FTM_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleFtuCheck.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleFtuCheck.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleFtuCheck.js	(revision 18732)
@@ -0,0 +1,32 @@
+'use strict';
+
+function handleFtuCheck(wait_state)
+{
+    var service = this.ftuList.get();
+    if (!service.obj || service.obj.length==0)
+        return undefined;
+
+    if (!wait_state)
+    {
+        dim.send("FTM_CONTOL/PING");
+        return toString(service.counter);
+    }
+
+    if (toInt(wait_state)==service.counter)
+        return wait_state;
+
+    var ping = service.data['Ping'];
+    for (var i=0; i<40; i++)
+    {
+        if (ping[i]==1)
+            continue;
+
+        dim.log("Problems in the FTU communication found.");
+        dim.log("Send command to disable all FTUs.");
+        dim.log(" => Power cycle needed.");
+        dim.send("FTM_CONTOL/ENABLE_FTU", -1, false);
+        throw new Error("CrateReset[FTU]");
+    }
+
+    return "";
+}
Index: branches/FACT++_part_filenames/scripts/handleLidClosed.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleLidClosed.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleLidClosed.js	(revision 18732)
@@ -0,0 +1,38 @@
+'use strict';
+
+// Get Lids closed
+function handleLidClosed(wait_state)
+{
+    var state = dim.state("LID_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("LID_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "NotReady":
+    case "Ready":
+    case "NoConnection":
+    case "Connected":
+    case "Moving":
+        return wait_state;
+
+    case "Unknown":
+    case "Inconsistent":
+    case "PowerProblem":
+    case "Open":
+        console.out("Lidctrl in '"+state.name+"'... sending CLOSE... waiting for 'Closed'.");
+        dim.send("LID_CONTROL/CLOSE");
+        return "Closed";
+
+    case "Closed":
+        return "";
+    }
+
+    throw new Error("LID_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handlePwrCameraOn.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handlePwrCameraOn.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handlePwrCameraOn.js	(revision 18732)
@@ -0,0 +1,52 @@
+'use strict';
+
+// Switch interlock camera power on
+function handlePwrCameraOn(wait_state)
+{
+    var state = dim.state("PWR_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("PWR_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Disconnected":
+    case "Connected":
+    case "NoConnection":
+        return undefined;
+
+    // Drive off
+    case "PowerOff":
+        console.out("Pwrctrl in 'PowerOff'... sending CAMERA_POWER ON... waiting for 'DriveOff'.");
+        dim.send("PWR_CONTROL/CAMERA_POWER", true);
+        return "DriveOff";
+
+    // Drive on
+    case "DriveOn":
+        console.out("Pwrctrl in 'DriveOn'... sending CAMERA_POWER ON... waiting for 'SystemOn'.");
+        dim.send("PWR_CONTROL/CAMERA_POWER", true);
+        return "SystemOn";
+
+    // Intermediate states?
+    case "CameraOn":
+    case "BiasOn":
+    case "CameraOff":
+    case "BiasOff":
+        return wait_state;
+
+    case "DriveOff":
+    case "SystemOn":
+        // Now the agilent control need to be switched on!
+        return "";
+
+    case "CoolingFailure":
+        throw new Error("Cooling unit reports failure... please check.");
+    }
+
+    throw new Error("PWR_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/FACT++_part_filenames/scripts/handleRatectrlConnected.js
===================================================================
--- branches/FACT++_part_filenames/scripts/handleRatectrlConnected.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/handleRatectrlConnected.js	(revision 18732)
@@ -0,0 +1,33 @@
+'use strict';
+
+function handleRatectrlConnected(wait_state)
+{
+    var state = dim.state("RATE_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("RATE_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "DimNetworkNotAvailable":
+    case "Disconnected":
+        return undefined;
+
+    case "Calibrating":
+    case "GlobalThresholdSet":
+    case "InProgress":
+        console.out("Ratectrl in '"+state.name+"'... sending STOP... waiting for 'Connected'.");
+        dim.send("RATE_CONTROL/STOP");
+        return "Connected";
+
+    case "Connected":
+        return "";
+    }
+
+    throw new Error("RATE_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
+
Index: branches/FACT++_part_filenames/scripts/schedule.js_template
===================================================================
--- branches/FACT++_part_filenames/scripts/schedule.js_template	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/schedule.js_template	(revision 18732)
@@ -0,0 +1,60 @@
+'use strict';
+
+// This list contains the schedule for one or several nights.
+// The schedule consists of observations and measurements.
+// An observation is compiled by several measurements.
+// Most measurements (like RATESCAN) cannot be interrupted, but
+// will be finished at some point (like a single run).
+// A measurement which takes until the next observation is started is DATA.
+// Whenever a measurement is finished and the start time of a new
+// observation has passed, the new observation is started.
+// In an observation it makes only sense that the last measurment
+// is data. All previous measurement just take as much time as they take.
+// Note that after each measurement, a new observation might be started
+// if the start time of the new observation has passed. Thus there is,
+// strictly speaking, no gurantee that any other than the first measurement
+// of one observation will ever be excuted.
+// A list of observations must end with a shutdown.
+//
+// here is an example:
+//
+var observations =
+[
+ { date:"2013-03-14 19:55 UTC", measurements:
+     [
+      { task:'startup' }
+     ]
+ },
+
+ { date:"2013-03-14 20:05 UTC", measurements:
+     [
+      { task:'data', source:'Crab' }
+     ]
+ },
+
+ { date:"2013-03-14 23:58 UTC", measurements:
+     [
+      { task:'ratescan', ra:9.438888, dec:29.0 },
+      { task:'data',     source:'Crab'        }
+     ]
+ },
+
+ { date:"2013-03-15 00:45 UTC", measurements:
+     [
+      { task:'ratescan', ra:11.26888888, dec:28.4477777 },
+      { task:'data',     source:'Mrk 421'}
+     ]
+ },
+
+ { date:"2013-03-15 03:30 UTC", measurements:
+     [
+      { task:'data', source:'Mrk 501'}
+     ]
+ },
+
+ { date:"2013-03-15 06:38 UTC", measurements:
+     [
+      { task:'shutdown'}
+     ]
+ },
+];
Index: branches/FACT++_part_filenames/scripts/takeRun.js
===================================================================
--- branches/FACT++_part_filenames/scripts/takeRun.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/takeRun.js	(revision 18732)
@@ -0,0 +1,331 @@
+'use strict';
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+var incomplete = 0;
+
+sub_incomplete.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    var inc = evt.obj['incomplete'];
+    if (!inc || inc>0xffffffffff)
+        return;
+
+    if (incomplete>0)
+        return;
+
+    if (dim.state("MCP").name!="TakingData")
+        return;
+
+    console.out("");
+    dim.log("Incomplete event ["+inc+","+incomplete+"] detected, sending MCP/STOP");
+
+    incomplete = inc;
+    dim.send("MCP/STOP");
+}
+
+// ================================================================
+//  Code related to taking data
+// ================================================================
+
+/**
+ * reconnect to problematic FADs
+ *
+ * Dis- and Reconnects to FADs, found to be problematic by call-back function
+ * onchange() to have a different CONNECTION value than 66 or 67. 
+ * 
+ * @returns
+ *      a boolean is returned. 
+ *      reconnect returns true if:
+ *          * nothing needed to be reset --> no problems found by onchange()
+ *          * the reconnection went fine.
+ *      
+ *      reconnect *never returns false* so far.
+ *
+ * @example
+ *      if (!sub_connections.reconnect())
+ *          exit();
+ */
+function reconnect(list, txt)
+{ /*
+    var reset = [ ];
+
+    for (var i=0; i<list.length; i++)
+        {
+            console.out("  FAD %2d".$(list[i])+" lost during "+txt);
+            reset.push(parseInt(list[i]/10));
+        }
+
+    reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+    console.out("");
+    console.out("  FADs belong to crate(s): "+reset);
+    console.out("");
+*/
+    console.out("");
+    dim.log("Trying automatic reconnect ["+txt+",n="+list.length+"]...");
+
+    if (list.length>3)
+        throw new Error("Too many boards to be reconnected. Please check what happened.");
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...disconnect "+list[i]);
+        dim.send("FAD_CONTROL/DISCONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 3s");
+    v8.sleep(3000);
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...reconnect "+list[i]);
+        dim.send("FAD_CONTROL/CONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 1s");
+
+    // Wait for one second to bridge possible pending connects
+    v8.sleep(1000);
+
+    console.out("   ...checking connection");
+
+    // Wait for FAD_CONTROL to realize that all boards are connected
+    // FIXME: Wait for '40' boards being connected instead
+    try
+    {
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+    }
+    catch (e)
+    {
+        if (dim.state("FAD_CONTROL").name!="Connecting")
+        {
+            console.out("");
+            console.out(" + FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+            console.out("");
+            throw e;
+        }
+
+        var crates = [];
+        for (var i=0; i<list.length; i++)
+            crates[list[i]/10] = true;
+
+        include('scripts/crateReset.js');
+        crateReset(crates);
+    }
+
+    // Wait also for MCP to have all boards connected again
+    dim.wait("MCP", "Idle", 3000);
+
+    dim.log("Automatic reconnect successfull.");
+    console.out("");
+}
+
+function takeRun(type, count, time, func)
+{
+    if (!count)
+        count = -1;
+    if (!time)
+        time = -1;
+
+    var nextrun = sub_startrun.get().obj['next'];
+    dim.log("Take run %3d".$(nextrun)+": N="+count+" T="+time+"s ["+type+"]");
+
+    // FIXME: Replace by callback?
+    //
+    // DN: I believe instead of waiting for 'TakingData' one could split this
+    // up into two checks with an extra condition:
+    //  if type == 'data':
+    //      wait until ThresholdCalibration starts:
+    //          --> this time should be pretty identical for each run
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //    
+    //      wait until "TakingData":
+    //          --> this seems to take even some minutes sometimes... 
+    //              (might be optimized rather soon, but still in the moment...)
+    //      if this takes way too long: 
+    //          there might be something broken, 
+    //          so maybe a very high time limit is ok here.
+    //          I think there is not much that can go wrong, 
+    //          when the Thr-Calib has already started. Still it might be nice 
+    //          If in the future RateControl is written so to find out that 
+    //          in case the threshold finding algorithm does 
+    //          *not converge as usual*
+    //          it can complain, and in this way give a hint, that the weather
+    //          might be a little bit too bad.
+    //  else:
+    //      wait until "TakingData":
+    //          --> in a non-data run this time should be pretty short again
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //  
+
+    // Use this if you use the rate control to calibrate by rates
+    //if (!dim.wait("MCP", "TakingData", -300000) )
+    //{
+    //    throw new Error("MCP took longer than 5 minutes to start TakingData"+
+    //                    "maybe this idicates a problem with one of the FADs?");
+    //}
+
+    // ================================================================
+    //  Function for Critical voltage
+    // ================================================================
+
+    // INSTALL a watchdog... send FAD_CONTROL/CLOSE_OPEN_FILES
+    // could send MCP/RESET as well but would result in a timeout
+    var callback = dim.onchange['FEEDBACK'];
+    dim.onchange['FEEDBACK'] = function(state)
+    {
+        if (callback)
+            callback.call(this, state);
+
+        if ((state.name=="Critical" || state.name=="OnStandby") &&
+            (this.last!="Critical"  && this.last!="OnStandby"))
+        {
+            console.out("Feedback state changed from "+this.last+" to "+state.name+" [takeRun.js]");
+
+            // Includes FAD_CONTROL/CLOSE_ALL_OPEN_FILES
+            dim.send("MCP/STOP");
+        }
+
+        this.last=state.name;
+    }
+
+    // Here we could check and handle fad losses
+
+    incomplete = 0;
+
+    var start = true;
+
+    for (var n=0; n<3; n++)
+    {
+        if (start)
+        {
+            dim.send("MCP/START", time, count, type);
+            if (typeof(func)=="function")
+                func();
+        }
+
+        try
+        {
+            dim.wait("MCP", "TakingData", 15000);
+            break;
+        }
+        catch (e)
+        {
+            if (dim.state("MCP").name=="TriggerOn" &&
+                dim.state("FAD_CONTROL").name=="Connected" &&
+                dim.state("FTM_CONTROL").name=="TriggerOn")
+            {
+                console.out("");
+                console.out("Waiting for TakingData timed out. Everything looks ok, but file not yet open... waiting once more.");
+                start = false;
+                continue;
+            }
+
+            start = true;
+
+            console.out("");
+            console.out(" + MCP:         "+dim.state("MCP").name);
+            console.out(" + FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+            console.out(" + FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+            console.out("");
+
+            if (dim.state("MCP").name!="Configuring3" ||
+                (dim.state("FAD_CONTROL").name!="Configuring1" &&
+                 dim.state("FAD_CONTROL").name!="Configuring2"))
+                throw e;
+
+            console.out("");
+            console.out("Waiting for fadctrl to get configured timed out... checking for in-run FAD loss.");
+
+            var con  = sub_connections.get();
+            var stat = con.obj['status'];
+
+            console.out("Sending MCP/RESET");
+            dim.send("MCP/RESET");
+
+            dim.wait("FTM_CONTROL", "Valid",     3000);
+            dim.wait("FAD_CONTROL", "Connected", 3000);
+            dim.wait("MCP",         "Idle",      3000);
+
+            var list = [];
+            for (var i=0; i<40; i++)
+                if (stat[i]!=0x43)
+                    list.push(i);
+
+            reconnect(list, "configuration");
+
+            if (n==2)
+                throw e;
+
+            //dim.wait("MCP", "Idle", 3000);
+        }
+    }
+
+    // This is to check if we have missed the event. This can happen as
+    // a race condition when the MCP/STOP is sent by the event handler
+    // but the run was not yet fully configured.
+    var statefb = dim.state("FEEDBACK").name;
+    if (statefb=="Critical" || statefb=="OnStandby")
+    {
+        console.out("Run started by FEEDBACK in state "+statefb);
+        dim.send("MCP/STOP"); // Includes FAD_CONTROL/CLOSE_ALL_OPEN_FILES
+
+        dim.onchange['FEEDBACK'] = callback;
+
+        return true;
+    }
+
+    dim.wait("MCP", "Idle", time>0 ? time*1250 : undefined); // run time plus 25%
+
+    // REMOVE watchdog
+    dim.onchange['FEEDBACK'] = callback;
+
+    if (incomplete)
+    {
+        console.out("");
+        console.out(" - MCP:         "+dim.state("MCP").name);
+        console.out(" - FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out(" - FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+
+        dim.wait("FTM_CONTROL", "Valid",     3000);
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+        dim.wait("MCP",         "Idle",      3000);
+
+        var str = incomplete.toString(2);
+        var len = str.length;
+
+        var list = [];
+        for (var i=0; i<str.length; i++)
+            if (str[str.length-i-1]=='1')
+                list.push(i);
+
+        reconnect(list, "data taking");
+
+        return false;
+    }
+
+    // FIXME: What if the ext1 is not enabled in the configuration?
+    if (type=="data")
+    {
+        var dim_trg = new Subscription("FAD_CONTROL/TRIGGER_COUNTER");
+        var counter = dim_trg.get(3000);
+
+        // The check on physics and pedestal triggers is to ensure that
+        // there was at least a chance to receive any event (e.g. in case
+        // of an interrupt this might not be the case)
+        if (counter.qos!=111 &&
+            (counter.data['N_trg']>1000 || counter.data['N_ped']>5) &&
+            counter.data['N_ext1']==0) // 'o' for open
+            throw new Error("No ext1 triggers received during data taking... please check the reason and report in the logbook.");
+        dim_trg.close();
+    }
+
+    return true;
+}
Index: branches/FACT++_part_filenames/scripts/tests_n_examples/example_Access_of_a_service.py
===================================================================
--- branches/FACT++_part_filenames/scripts/tests_n_examples/example_Access_of_a_service.py	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/tests_n_examples/example_Access_of_a_service.py	(revision 18732)
@@ -0,0 +1,107 @@
+'use strict';
+
+// Subscribe to the the services (returns a handle to each of them)
+var w = new Subscription("MAGIC_WEATHER/DATA");
+var x = new Subscription("TNG_WEATHER/DUST");
+var y = new Subscription("TNG_WEATHER/CLIENT_LIST");
+
+// Name which corresponds to handle
+console.out(w.name);
+
+// Wait until a valid service object is in the internal buffer
+while (!w.get(-1))
+    v8.sleep(100);
+
+// Make sure that the service description for this service is available
+// This allows to access the service values by name (access by index
+// is always possible)
+while (!w.get().obj)
+    v8.sleep(100);
+
+console.out("have data");
+
+// get the current service data
+var d = w.get();
+
+// Here is a summary:
+//    d.obj===undefined: no data received yet
+//    d.obj!==undefined, d.obj.length==0: valid names are available, received data empty (d.data===null)
+//    obj!==undefined, obj.length>0: valid names are available, data received
+//
+//    d.data===undefined: no data received yet
+//    d.data===null: event received, but contains no data
+//    d.data.length>0: event received, contains data
+
+console.out("Format: "+d.format); // Dim format string
+console.out("Counter: "+d.counter); // How many service object have been received so far?
+console.out("Time: "+d.time); // Which time is attached to the data?
+console.out("QoS: "+d.qos); // Quality-of-Service parameter
+console.out("Length: "+d.data.length); // Number of entries in data array
+console.out("Data: "+d.data); // Print array
+
+// Or to plot the whole contents, you can do
+console.out(JSON.stringify(d));
+console.out(JSON.stringify(d.data));
+console.out(JSON.stringify(d.obj));
+
+// Loop over all service properties by name
+for (var name in d.obj)
+{
+    console.out("obj." + name + "=" + d.obj[name]);
+}
+
+// Loop over all service properties by index
+for (var i=0; i<d.data.length; i++)
+{
+    console.out("data["+ i +"]="+ d.data[i]);
+}
+
+// Note that in case of formats like F:160, the entries in data
+// might be arrays themselves
+
+var cnt = d.counter;
+
+// Print counter and time
+console.out("Time: "+d.counter+" - "+d.time);
+
+// Wait until at least one new event has been received
+while (cnt==d.counter)
+{
+    v8.sleep(1000);
+    d = w.get();
+}
+
+// Print counter and time of new event (usually counter+1, but this is
+// not guranteed) We can have missed service objects
+console.out("Time: "+d.counter+" - "+d.time);
+
+// Access the Wind property of the weather data
+console.out("Wind: "+d.obj.v);
+console.out("Wind: "+d.obj['v']);
+
+// Get the dust and client_list
+var xx = x.get();
+var yy = y.get();
+
+// data contains only a single value. No array indexing required
+console.out("Dust: "+xx.data);
+console.out("CL:   "+yy.data);
+
+// Service is still open
+console.out(w.isOpen);
+
+// Close the subscription (unsubscribe from the dim-service)
+// Tells you if the service was still subscribed or not
+var rc = w.close();
+
+// Service is not subscribed anymore
+console.out(w.isOpen);
+console.out(rc)
+
+
+rc = x.close();
+console.out(rc)
+rc = y.close();
+console.out(rc)
+
+
Index: branches/FACT++_part_filenames/scripts/tests_n_examples/test_Sun.js
===================================================================
--- branches/FACT++_part_filenames/scripts/tests_n_examples/test_Sun.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/tests_n_examples/test_Sun.js	(revision 18732)
@@ -0,0 +1,16 @@
+'use strict';
+var date = new Date(); // Date in UTC
+console.out(date);
+console.out("------------------------------");
+console.out(" - no params: -");
+console.out( JSON.stringify( Sun.horizon()  ) );
+console.out('params: ("astro") ');
+console.out( JSON.stringify( Sun.horizon("astro") ) );
+console.out('params: (-12, date) ');
+console.out(JSON.stringify(Sun.horizon(-12, date ) ) ); // nautical
+console.out('params: ("FACT") ');
+console.out(JSON.stringify(Sun.horizon("FACT") ) );
+console.out("------------------------------");
+console.out("-----------time when LidOpen() will work-----------");
+console.out('nautical');
+console.out(JSON.stringify(Sun.horizon("nautical" ) ) ); // nautical
Index: branches/FACT++_part_filenames/scripts/tests_n_examples/test_double_subscription.js
===================================================================
--- branches/FACT++_part_filenames/scripts/tests_n_examples/test_double_subscription.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/tests_n_examples/test_double_subscription.js	(revision 18732)
@@ -0,0 +1,42 @@
+'use strict';
+
+// Subscribe to the the services (returns a handle to each of them)
+var w = new Subscription("MAGIC_WEATHER/DATA");
+
+// Name which corresponds to handle
+console.out(w.name);
+
+// Wait until a valid service object is in the internal buffer
+while (!w.get(-1))
+    v8.sleep(100);
+
+// Make sure that the service description for this service is available
+// This allows to access the service values by name (access by index
+// is always possible)
+while (!w.get().obj)
+    v8.sleep(100);
+
+console.out("have data");
+
+
+console.out("double subscription");
+var ww = new Subscription("MAGIC_WEATHER/DATA");
+
+console.out("closing 1st subscription.");
+
+var rc = w.close();
+
+console.out(" closing worked? "+rc);
+console.out("is 2nd subscription still open? "+ww.isOpen());
+
+if (ww.isOpen())
+{
+    console.out("was still open?! ... closing it ...");
+    ww.close();
+}
+else
+{
+    console.out("what if we close an already closed subscription?");
+    ww.close();
+}
+
Index: branches/FACT++_part_filenames/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py
===================================================================
--- branches/FACT++_part_filenames/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py	(revision 18732)
@@ -0,0 +1,13 @@
+'use strict';
+
+// DN 09.12.2012
+
+// this script tests, if FEEDBACK will really time out 
+// when started freshly, when one tries to get the CALIBRATION Service.
+
+// so this script will run fine, when FEEDBACK already had a CALIBRATION in the past
+// and it will throw an exception after the long time of 50sec, when 
+// FEEDBACK had never ever had a CALIBRATION (e.g. becauce it was started just a minute ago)
+var service_calibration = new Subscription("FEEDBACK/CALIBRATION");
+var data_calibration = service_calibration.get(50000);
+
Index: branches/FACT++_part_filenames/scripts/tests_n_examples/throw.js
===================================================================
--- branches/FACT++_part_filenames/scripts/tests_n_examples/throw.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/tests_n_examples/throw.js	(revision 18732)
@@ -0,0 +1,2 @@
+console.out("incl");
+throw new Error("test error");
Index: branches/FACT++_part_filenames/scripts/updateSchedule.js
===================================================================
--- branches/FACT++_part_filenames/scripts/updateSchedule.js	(revision 18732)
+++ branches/FACT++_part_filenames/scripts/updateSchedule.js	(revision 18732)
@@ -0,0 +1,257 @@
+'use strict';
+
+//this is just the class implementation of 'Observation'
+include('scripts/Observation_class.js');
+
+var file = $['file'] ? $['file'] : 'scripts/schedule.js';
+
+console.out('Reading schedule from '+file);
+
+// this file just contains the definition of
+// the variable observations, which builds our nightly schedule, hence the filename
+include(file);
+
+// -------------------------------------------------------------------------------------
+
+// Get current time
+var now = new Date(); //new Date("2013-04-07 19:00:00 UTC");
+
+// Because Main.js could start a new observations just in the moment between 'now'
+// and entering the new data in the database, we have to use the unique id
+// in Main.js to check if the current observation should be changed (and sub resetted)
+now = new Date(now.getTime());
+
+//console.out("","NOW: "+now.toUTCString());
+
+// -------------------------------------------------------------------------------------
+
+console.out("Processing "+observations.length+" entries.");
+
+var has_now = false;
+
+// make Observation objects from user input and check if 'date' is increasing.
+for (var i=0; i<observations.length; i++)
+{
+    if (observations[i].date.toUpperCase()=="NOW")
+    {
+        if (has_now)
+            throw new Error("Only one entry 'now' allowed");
+
+        has_now = true;
+    }
+
+    observations[i] = new Observation(observations[i]);
+
+    // check if the start date given by the user is increasing.
+    if (i>0 && observations[i].start <= observations[i-1].start)
+    {
+        throw new Error("Start time '"+ observations[i].start.toUTCString()+
+                        "' in row "+i+" exceeds start time in row "+(i-1)+" "+observations[i-1].start.toUTCString() );
+    }
+}
+
+// Remove all past entries from the schedule
+while (observations.length>0 && observations[0].start<now)
+    observations.shift();
+
+// Output for debugging
+/*
+console.out("");
+for (var i=0; i<observations.length; i++)
+{
+    for (var j=0; j<observations[i].length; j++)
+        console.out("%3d.%3d: ".$(i,j)+JSON.stringify(observations[i][j]));
+    console.out("");
+}*/
+
+// -------------------------------------------------------------------------------------
+
+// Connect to database
+var db = new Database("scheduler:5ch3du13r@www.fact-project.org/factdata");
+
+// get all sources from database
+var sources = db.query("SELECT * from Source");
+
+// Convert SourceName to SourceKey
+function getSourceKey(src)
+{
+    var arr = sources.filter(function(e) { return e['fSourceName']==src; });
+    if (arr.length==0)
+        throw new Error("Source '"+src+"' unknown.");
+    if (arr.length>1)
+        throw new Error("More than one source '"+src+"' found.");
+    return arr[0]['fSourceKEY'];
+}
+
+// -------------------------------------------------------------------------------------
+
+// List of all available measurement types
+var measurementType = [ "STARTUP", "IDLE", "DRSCALIB", "SINGLEPE", "DATA", "RATESCAN", "SHUTDOWN", "OVTEST", "RATESCAN2", "SLEEP", "CUSTOM" ];
+
+// Convert measurement type to index
+function getMeasurementTypeKey(task)
+{
+    var idx = measurementType.indexOf(task);
+    if (idx>=0)
+        return idx;
+
+    throw new Error("Task "+task+" not supported!");
+}
+
+// -------------------------------------------------------------------------------------
+
+var queries = [ ];
+
+var system_on = false;
+
+// Now create the schedule which should be entered into the databse
+for (var i=0; i<observations.length; i++)
+{
+    var obs = observations[i];
+
+    for (var j=0; j<obs.length; j++)
+    {
+        console.out(i+" "+j+" "+obs[j].start.toUTCString());
+        var isUp = Sun.horizon(-12, obs[j].start).isUp;
+
+        if (obs[j].task=="STARTUP" && j>0)
+            throw new Error("STARTUP must be the first measurement in a list of measurements.");
+        if (obs[j].task=="DATA" && j!=obs.length-1)
+            throw new Error("DATA must be the last task in a list of measurements");
+        if (obs[j].task=="SHUTDOWN" && j!=obs.length-1)
+            throw new Error("SHUTDOWN must be the last task in a list of measurements");
+        if (system_on && obs[j].task=="SHUTDOWN" && isUp)
+            throw new Error("SHUTDOWN must not be scheduled after -12deg (~10min before nautical sun-rise)");
+        // FIXME: Check also end-time!
+        if ((obs[j].task=="DATA" || obs[j].task=="RATESCAN" ||  obs[j].task=="RATESCAN2" ) && isUp)
+            throw new Error("Data or Ratescan must not be scheduled when the sun is up (-12deg, earlist/lastest during astronomical twilight)");
+
+        if (obs[j].task=="STARTUP" || obs[j].task=="DATA")
+            system_on = true;
+
+        var str = "INSERT INTO Schedule SET";
+        str += " fStart='"+obs[j].start.toISOString()+"'";
+        str += ",fMeasurementID="+obs[j].sub;
+        str += ",fMeasurementTypeKey="+getMeasurementTypeKey(obs[j].task);
+
+        // Currently only data in the case when a source is given or ra/dec is given can be provided
+        if (obs[j].source)
+            str += ",fSourceKey="+getSourceKey(obs[j].source);
+
+        //lidclosed only  needs to be inserted to DB if 'false'
+        if (obs[j].lidclosed)
+        {
+            if (obs[j].task=="RATESCAN2" && obs[j].rstype!="default")
+                str += ",fData='\"lidclosed\":"+obs[j].lidclosed+",\"rstype\":\""+obs[j].rstype+"\",\"zd\":"+obs[j].zd+",\"az\":"+obs[j].az+"'";
+            else
+                str += ",fData='\"lidclosed\":"+obs[j].lidclosed+",\"zd\":"+obs[j].zd+",\"az\":"+obs[j].az+"'";
+        }
+        else
+            if (obs[j].ra)
+                str += ",fData='\"ra\":"+obs[j].ra+",\"dec\":"+obs[j].dec+"'";
+
+        if (obs[j].task=="CUSTOM")
+            str += ",fData='\"biason\":"+obs[j].biason+",\"time\":\""+obs[j].time+"\",\"threshold\":\""+obs[j].threshold+"\",\"zd\":"+obs[j].zd+",\"az\":"+obs[j].az+"'";
+
+        queries.push(str);
+    }
+}
+
+if (queries.length==0)
+{
+    console.out("","Nothing to do... no observation past "+now.toUTCString(), "");
+    exit();
+}
+
+// Output and send all queries, update the databse
+//console.out("");
+
+db.query("LOCK TABLES Schedule WRITE");
+db.query("DELETE FROM Schedule WHERE fStart>='"+now.toISOString()+"'");
+for (var i=0; i<queries.length; i++)
+    db.query(queries[i]);
+db.query("UNLOCK TABLES");
+
+//console.out("");
+
+// ======================================================================================
+
+// Because Main.js could start a new observations just in the moment between 'now'
+// and entering the new data in the database, we have to use the unique id
+// in Main.js to check if the current observation should be changed (and sub resetted)
+var start = new Date(now.getTime());//-12*3600000);
+
+//console.out("","START: "+now.toUTCString());
+
+// Get the current schedule
+var rows = db.query("SELECT * FROM Schedule WHERE fStart>='"+start.toISOString()+"' ORDER BY fStart, fMeasurementID");
+
+var schedule = [];
+var entry    = -1;
+var sub      =  0;
+
+for (var i=0; i<rows.length; i++)
+{
+    //console.out(JSON.stringify(rows[i]));
+
+    var start = new Date(rows[i]['fStart']+" UTC");
+    var id    = rows[i]['fScheduleID'];
+    var src   = rows[i]['fSourceKey'];
+    var task  = rows[i]['fMeasurementTypeKey'];
+    var sub   = rows[i]['fMeasurementID'];
+    var data  = rows[i]['fData'];
+
+    if (sub==0)
+        entry++;
+
+    var m = { }
+    m.task = measurementType[task];
+
+    if (src)
+    {
+        // Convert SourceKey to SourceName
+        var arr = sources.filter(function(e) { return e['fSourceKEY']==src; });
+        if (arr.length==0)
+            throw new Error("SourceKey "+src+" unknown.");
+
+        m.source = arr[0]['fSourceName'];
+    }
+
+    if (data)
+    {
+        var obj = JSON.parse(("{"+data+"}").replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":"));
+        for (var key in obj)
+            m[key] = obj[key];
+    }
+
+    if (!schedule[entry])
+        schedule[entry] = { };
+
+    schedule[entry].id   = id;
+    schedule[entry].date = start;
+
+    if (!schedule[entry].measurements)
+        schedule[entry].measurements = [];
+
+    schedule[entry].measurements[sub] = m;
+}
+
+// -------------------------------------------------------------------------------------
+
+console.out("[");
+for (var i=0; i<schedule.length; i++)
+{
+    var obs = schedule[i];
+
+    console.out(' { date:"'+obs.date.toISOString()+'" measurements:');
+    var obs = obs.measurements;
+
+    console.out("     [");
+    for (var j=0; j<obs.length; j++)
+    {
+        console.out("      "+JSON.stringify(obs[j])+",");
+    }
+    console.out("     ]");
+    console.out(" },");
+}
+console.out("]");
Index: branches/FACT++_part_filenames/showlog.rc
===================================================================
--- branches/FACT++_part_filenames/showlog.rc	(revision 18732)
+++ branches/FACT++_part_filenames/showlog.rc	(revision 18732)
@@ -0,0 +1,1 @@
+no-database=true
Index: branches/FACT++_part_filenames/src/ByteOrder.h
===================================================================
--- branches/FACT++_part_filenames/src/ByteOrder.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ByteOrder.h	(revision 18732)
@@ -0,0 +1,135 @@
+#ifndef FACT_ByteOrder
+#define FACT_ByteOrder
+
+#include <string.h>
+#include <arpa/inet.h>
+
+#include <vector>
+#include <algorithm>
+#include <typeinfo>
+#include <stdexcept>
+
+template<typename S>
+void reset(S &s)
+{
+    memset(&s, 0, sizeof(S));
+}
+
+template<typename S>
+void init(S &s)
+{
+    if (sizeof(S)%2!=0)
+        throw std::logic_error("size of "+std::string(typeid(S).name())+" not a multiple of 2.");
+
+    reset(s);
+}
+
+template<typename S>
+void hton(S &s)
+{
+    std::transform(reinterpret_cast<uint16_t*>(&s),
+                   reinterpret_cast<uint16_t*>(&s)+sizeof(S)/2,
+                   reinterpret_cast<uint16_t*>(&s),
+                   htons);
+}
+
+template<typename S>
+void ntoh(S &s)
+{
+    std::transform(reinterpret_cast<uint16_t*>(&s),
+                   reinterpret_cast<uint16_t*>(&s)+sizeof(S)/2,
+                   reinterpret_cast<uint16_t*>(&s),
+                   ntohs);
+}
+
+template<typename S>
+S NtoH(const S &s)
+{
+    S ret(s);
+    ntoh(ret);
+        return ret;
+}
+
+template<typename S>
+S HtoN(const S &s)
+{
+    S ret(s);
+    hton(ret);
+    return ret;
+}
+
+template<typename S>
+void ntohcpy(const std::vector<uint16_t> &vec, S &s)
+{
+    if (sizeof(S)!=vec.size()*2)
+        throw std::logic_error("ntohcpy: size of vector mismatch "+std::string(typeid(S).name()));
+
+    std::transform(vec.begin(), vec.end(),
+                   reinterpret_cast<uint16_t*>(&s), ntohs);
+}
+
+template<typename S>
+std::vector<uint16_t> htoncpy(const S &s)
+{
+    if (sizeof(S)%2)
+        throw std::logic_error("htoncpy: size of "+std::string(typeid(S).name())+" not a multiple of 2");
+
+    std::vector<uint16_t> v(sizeof(S)/2);
+
+    std::transform(reinterpret_cast<const uint16_t*>(&s),
+                   reinterpret_cast<const uint16_t*>(&s)+sizeof(S)/2,
+                   v.begin(), htons);
+
+    return v;
+}
+
+template<typename T, typename S>
+void bitcpy(T *target, size_t ntarget, const S *source, size_t nsource, size_t ss=0, size_t ts=0)
+{
+    const size_t targetsize = ts==0 ? sizeof(T)*8 : std::min(ts, sizeof(T)*8);
+    const size_t sourcesize = ss==0 ? sizeof(S)*8 : std::min(ss, sizeof(S)*8);
+
+    const S *const ends = source + nsource;
+    const T *const endt = target + ntarget;
+
+    const S *s = source;
+    T *t = target;
+
+    memset(t, 0, sizeof(T)*ntarget);
+
+    size_t targetpos = 0;
+    size_t sourcepos = 0;
+
+    while (s<ends && t<endt)
+    {
+        // Start filling with "source size" - "position" bits
+        *t |= (*s>>sourcepos)<<targetpos;
+
+        // Calculate how many bits were siuccessfully copied
+        const int ncopy = std::min(sourcesize-sourcepos, targetsize-targetpos);
+
+        targetpos += ncopy;
+        sourcepos += ncopy;
+
+        if (sourcepos>=sourcesize)
+        {
+            sourcepos %= sourcesize;
+            s++;
+        }
+
+        if (targetpos>=targetsize)
+        {
+            targetpos %= targetsize;
+            t++;
+        }
+
+    }
+}
+
+template<typename T>
+void Reverse(T *t)
+{
+    std::reverse((uint16_t*)t, ((uint16_t*)t)+sizeof(T)/2);
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/ChatClient.h
===================================================================
--- branches/FACT++_part_filenames/src/ChatClient.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ChatClient.h	(revision 18732)
@@ -0,0 +1,127 @@
+#ifndef FACT_ChatClient
+#define FACT_ChatClient
+
+// **************************************************************************
+/** @class ChatClientImp
+
+@brief The base implementation for a chat client
+
+**/
+// **************************************************************************
+#include "Time.h"
+#include "MessageDim.h"
+#include "DimErrorRedirecter.h"
+
+using namespace std;
+
+class ChatClientImp : public MessageImp, public DimErrorRedirecter, public MessageDimRX
+{
+protected:
+    std::ostream &lout;          /// Output stream for local synchrounous output
+
+    int Write(const Time &t, const string &txt, int)
+    {
+        Out() << t << ": " << txt.substr(6) << endl;
+        return 0;
+    }
+
+protected:
+    // Redirect asynchronous output to the output window
+    ChatClientImp(std::ostream &out, std::ostream &in) :
+        MessageImp(out),
+        DimErrorRedirecter(static_cast<MessageImp&>(*this)),
+        MessageDimRX("CHAT", static_cast<MessageImp&>(*this)),
+        lout(in)
+    {
+        Out() << Time::fmt("%H:%M:%S");
+    }
+};
+
+// **************************************************************************
+/** @class ChatClient
+
+@brief Implements a remote control based on a Readline class for the Chat client
+
+@tparam T
+   The base class for ChatClient. Either Readline or a class
+    deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include "WindowLog.h"
+#include "ReadlineColor.h"
+#include "tools.h"
+
+template <class T>
+class ChatClient : public T, public ChatClientImp
+{
+public:
+    // Redirect asynchronous output to the output window
+    ChatClient(const char *name) : T(name),
+        ChatClientImp(T::GetStreamOut(), T::GetStreamIn())
+    {
+    }
+
+    // returns whether a command should be put into the history
+    bool Process(const std::string &str)
+    {
+        if (ReadlineColor::Process(lout, str))
+            return true;
+
+        if (T::Process(str))
+            return true;
+
+        const int rc = DimClient::sendCommand("CHAT/MSG", str.c_str());
+        if (!rc)
+            lout << kRed << "ERROR - Sending message failed." << endl;
+
+        return false;
+    }
+
+    std::string GetUpdatePrompt() const
+    {
+        // If we have not cd'ed to a server show only the line start
+        return T::GetLinePrompt() + " " + (IsConnected() ? "" : "dis") + "connected> ";
+    }
+};
+
+
+
+// **************************************************************************
+/** @class ChatConsole
+
+@brief Derives the ChatClient from Control and adds a proper prompt
+
+*/
+// **************************************************************************
+#include "Console.h"
+
+class ChatConsole : public ChatClient<Console>
+{
+public:
+    ChatConsole(const char *name, bool continous=false) :
+        ChatClient<Console>(name)
+    {
+        SetContinous(continous);
+    }
+};
+
+// **************************************************************************
+/** @class ChatShell
+
+@brief Derives the ChatClient from Shell and adds colored prompt
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class ChatShell : public ChatClient<Shell>
+{
+public:
+    ChatShell(const char *name, bool = false) :
+        ChatClient<Shell>(name)
+    {
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Configuration.cc
===================================================================
--- branches/FACT++_part_filenames/src/Configuration.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Configuration.cc	(revision 18732)
@@ -0,0 +1,1481 @@
+// **************************************************************************
+/** @class Configuration
+
+@brief Commandline parsing, resource file parsing and database access
+
+
+@section User For the user
+
+The Configuration class will process the following steps:
+
+Check the command-line for <B> --default=default.rc </B> (If no configuration
+filename is given on the command-line use \e program_name.rc instead. (Note
+that the name is retrieved from \b argv[0] and might change if you start
+the program through a symbolic link with a different name)
+
+Read the "<B>database=user:password@database:port/database</B>" entry from the file.
+(For details about the syntax see Configuration::parse_database)
+The retrieved entry can be overwritten by
+"<B>--database=user:passwd@server:port/database</B>" from the command line. If
+neither option is given no configuration data will be read from the
+database. To suppress any database access use \b --no-database.
+
+Check the command-line for <B> -C priority.rc </B>
+
+The configuration data is now evaluated from the following sources in
+the following order. Note that options from earlier source have
+priority.
+
+   - (1) Commandline options
+   - (2) Options from the high prioroty configuration-file (given by \b -C or \b --config)
+   - (3) Database entries
+   - (4) Options from the default configuration-file (given by \b --default, defaults to \b program_name.rc)
+   - (5) Options from the global configuration-file (constrctor path + \b fact++.rc)
+   - (6) Environment variables
+
+Which options are accepted is defined by the program. To get a list
+of all command-line option use \b --help. This also lists all other
+available options to list for exmaple the options available in the
+configuration files or from the databse. In addition some default options
+are available which allow to debug parsing of the options, by either printing
+the options retrieval or after parsing.
+
+Options in the configuration files must be given in the form
+
+   - key = value
+
+which is equivalent to the command-line option <B>--key=value</B>.
+
+If there are sections in the configuration file like
+
+\code
+
+   [section1]
+   key = value
+
+\endcode
+
+the key is transformed into <B>section1.key</B> (which would be equivalent
+to <B>--section1.key</B>)
+
+@attention
+In principle it is possible that an exception is thrown before options
+like \b --help are properly parsed and evaluated. In this case it is
+necessary to first resolve the problem. Usually, this mean that there
+is a design flaw in the program rather than a mistake of usage.
+
+For more details on the order in which configuration is read,
+check Configuration::Parse. For more details on the parsing itself
+see the documentation of boost::program_options.
+
+
+
+
+@section API For the programmer
+
+The Configuration class heavily uses the
+<A HREF="http://www.boost.org"><B>C++ boost library</B></A>
+and makes heavy use of the
+<A HREF="http://www.boost.org/doc/libs/release/doc/html/program_options.html">
+<B>boost::program_options</B></A>
+
+The databse access is based on the
+<A HREF="http://tangentsoft.net/mysql++/"><B>MySQL++ library</B></A>.
+
+The basic idea is to have an easy to use, but powerfull setup. The setup on
+all options is based on a special syntax of options_description. Here is an
+example:
+
+\code
+
+    int opt = 0;
+
+    po::options_description config("Section");
+    config.add_options()
+        ("option1",    var<string>(),                        "This is option1")
+        ("option2",    var<int>(22),                         "This is option2")
+        ("option3,o",  var<double>->required(),              "This option is mandatory")
+        ("option4",    var<int>(&opt),                       "This is option 4")
+        ("option5",    vars<string>(),                       "A list of strings")
+        ("option6",    vars<string>(),                       "A list of strings")
+        ("option7",    vars<string>,                         "A list of strings")
+        ("option8",    var<string>()->implicit_value("val"), "Just a string")
+        ("option9",    var<string>()->default_value("def"),  "Just a string")
+        ("optionA",    var<string>("def"),                   "Just a string")
+        ("bool",       po_bool(),                            "A special switch")
+        ;
+
+\endcode
+
+This will setup, e.g.,  the commandline option '<B>--option1 arg</B>' (which
+is identical to '<B>--option1=arg</B>'. Option 3 can also be expressed
+in a short form as '<B>-o arg</B>' or '<B>-o=arg</B>'. Option 2 defaults
+to 22 if no explicit value is given. Option 3 is mandatory and an exceptionb
+is thrown if not specified. Option 4 will, apart from the usual access to the
+option values, also store its value in the variable opt.
+
+The used functions po_*() are defined in configuration.h and are abbreviations.
+Generally speaking also other variable types are possible.
+
+If the options are displayed, e.g. by \b --help the corresponding section will
+by titled \e Section, also untitled sections are possible.
+
+If an option can be given more than once then a std::vector<type> can be used.
+Abbreviations po_ints(), po_doubles() and po_strings() are available.
+
+There are several ways to define the behaviour of the options. In the
+example above Parse will throw an exception if the "--option3" or "-o"
+option is not given. "option9" will evaluate to "def" if it is not
+given on the command line. The syntax of "optionA" is just an
+abbreviation. "option8" will evaluate to "val" if just "--option5" but
+no argument is given. Note, that these modifiers can be concatenated.
+
+A special type po_bool() is provided which is an abbreviation of
+var<bool>()->implicit_value(true)->default_value(false). In
+contradiction to po_switch() this allows to set a true and
+false value in the setup file.
+
+In addition to options introduced by a minus or double minus, so called
+positional options can be given on the command line. To describe these
+options use
+
+\code
+
+    po::positional_options_description p;
+    p.add("option5", 2); // The first 2 positional options
+    p.add("option6", 3); // The next three positional options
+    // p.add("option7", -1); // All others, if wanted
+
+\endcode
+
+This assigns option-keys to the positional options (arguments) in the
+command-line. Note that the validity of the given commandline is checked.
+Hence, this way of defining the options makes sense.
+
+As needed options_descriptions can be grouped together
+
+\code
+
+    po::options_description config1("Section1");
+    po::options_description config2("Section2");
+
+    po::options_description configall;
+    configall.add(config1);
+    configall.add(config2);
+
+\endcode
+
+The member functions of Configurations allow to define for which option
+source these options are valid. The member functions are:
+
+\code
+
+    Configuration conf;
+
+    conf.AddOptionsCommandline(configall, true);
+    conf.AddOptionsConfigfile(config1, true);
+    conf.AddOptionsDatabase(config2, true);
+
+    // To enable the mapping of the position arguments call this
+    conf.SetArgumentPositions(p);
+
+\endcode
+
+If the second option is false, the options will not be displayed in any
+\b --help directive, but are available to the user. Each of the functions
+can be called more than once. If an option should be available from
+all kind of inputs AddOptions() can be used which will call all
+four other AddOptions() functions.
+
+A special case are the options from environment variables. Since you might
+want to use the same option-key for the command-line and the environment,
+a mapping is needed (e.g. from \b PATH to \b --path). This mapping
+can be implemented by a mapping function or by the build in mapping
+and be initialized like this:
+
+\code
+
+   conf.AddEnv("path", "PATH");
+
+\endcode
+
+or
+
+\code
+
+   const string name_mapper(const string str)
+   {
+      return str=="PATH" ? "path" : "";
+   }
+
+   conf.SetNameMapper(name_mapper);
+
+\endcode
+
+Assuming all the above is done in a function calles SetupConfiguration(),
+a simple program to demonstrate the power of the class could look like this:
+
+\code
+
+   int main(int argc, char **argv)
+   {
+       int opt;
+
+       Configuration conf(argv[0]);
+       SetupConfiguration(conf, opt);
+
+       po::variables_map vm;
+       try
+       {
+          vm = conf.Parse(argc, argv);
+       }
+       catch (std::exception &e)
+       {
+           po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+           if (MO)
+               cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+           else
+               cout << "Error: " << e.what() << endl;
+           cout << endl;
+
+           return -1;
+       }
+
+       cout << "Opt1: " << conf.GetString("option1") << endl;
+       cout << "Opt2: " << conf.GetInt("option2") << endl;
+       cout << "Opt3: " << conf.GetDouble("option3") << endl;
+       cout << "Opt4: " << opt << endl;
+
+       return 0;
+   }
+
+\endcode
+
+Another possibility to access the result is the direct approach, for example:
+
+\code
+
+   vector<int>    i   = vm["option2"].as<int>();
+   vector<string> vec = vm["option6"].as<vector<string>>();
+
+\endcode
+
+Note that accessing an option which was not given will throw an exception.
+Therefor its availability should first be checked in one of the following
+ways:
+
+\code
+
+   bool has_option1 = vm.count("option1");
+   bool has_option2 = conf.Has("option2");
+
+\endcode
+
+@section Extensions
+
+The configuration interpreter can be easily extended to new types, for example:
+
+\code
+
+template<class T,class S> // Just for the output
+   std::ostream &operator<<(std::ostream &out, const pair<T,S> &f)
+   {
+       out << f.first << "|" << f.second;
+       return out;
+   }
+
+template<class T, class S> // Needed to convert the option
+   std::istream &operator>>(std::istream &in,  pair<T,S> &f)
+   {
+       char c;
+       in >> f.first;
+       in >> c;
+       if (c!=':')
+           return in;
+       in >> f.second;
+       return in;
+   }
+
+typedef pair<int,int> mytype; // Type definition
+
+void main(int argc, char **argv)
+{
+   po::options_description config("Configuration");
+   config.add_options()
+        ("mytype", var<mytype>(), "my new type")
+        ;
+
+   Configuration conf;
+   conf.AddOptionsCommandline(config);
+   conf.Parse(argc, argv);
+
+   cout << conf.Get<mytype>("mytype") << endl;
+}
+
+\endcode
+
+@section Examples
+
+ - An example can be found in \ref argv.cc
+
+@todo
+
+ - Maybe we should remove the necessity to propagate argv[0] in the constructor?
+ - Add an option to the constructor to switch of database/file access
+
+*/
+// **************************************************************************
+#include "Configuration.h"
+
+#include <fstream>
+#include <iostream>
+#include <iomanip>
+
+#include <boost/filesystem.hpp>
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+using namespace std;
+
+namespace style = boost::program_options::command_line_style;
+
+// --------------------------------------------------------------------------
+//
+//!  The purpose of this function is basically to connect to the database,
+//!  and retrieve all the options entries from the 'Configuration' table.
+//!
+//!  @param database
+//!      The URL of the database from which the configuration data is
+//!      retrieved. It should be given in the form
+//!          \li [user[:password]@]server.com[:port]/database
+//!
+//!      with
+//!          - user:     user name (default is the current user)
+//!          - password: necessary if required by the database rights
+//!          - server:   the URL of the server (can be 'localhost')
+//!          - port:     the port to which to connect (usually obsolete)
+//!          - database: The name of the database containing the table
+//!
+//!  @param desc
+//!     A reference to the object with the description of the options
+//!     which should be retrieved.
+//!
+//!  @param allow_unregistered
+//!     If this is true also unregistered, i.e. options unknown to desc,
+//!     are returned. Otherwise an exception is thrown if such an option
+//!     was retrieved.
+//!
+//!  @return
+//!     Return an object of type basic_parsed_options containing all
+//!     the entries retrieved from the database. Options not found in
+//!     desc are flagged as unregistered.
+//!
+//!  @throws
+//!     Two types of exceptions are thrown
+//!        - It thows an unnamed exception if the options could not be
+//!          retrieved properly from the databse.
+//!        - If an option is not registered within the given descriptions
+//!          and \b allow_unregistered is \b false, an exception of type
+//!          \b  po::unknown_option is thrown.
+//!
+//!  @todo
+//!     - The exceptions handling should be improved.
+//!     - The final database layout is missing in the description
+//!     - Shell we allow options to be given more than once?
+//
+#ifdef HAVE_SQL
+po::basic_parsed_options<char>
+    Configuration::parse_database(const string &prgname, const string &database, const po::options_description& desc, bool allow_unregistered)
+{
+    Database db(database);
+
+    cerr << "Connected to '" << db.uri() << "' for " << prgname << endl;
+
+    const mysqlpp::StoreQueryResult res =
+        db.query("SELECT CONCAT(fKey1,fKey2), fValue "
+                 "FROM ProgramOption "
+                 "WHERE fCounter=(SELECT MAX(fCounter) FROM History) "
+                 "AND NOT ISNULL(fValue) "
+                 "AND (fProgram='"+prgname+"' OR fProgram='*')").store();
+
+    set<string> allowed_options;
+
+    const vector<boost::shared_ptr<po::option_description>> &options = desc.options();
+    for (unsigned i=0; i<options.size(); ++i)
+    {
+        const po::option_description &d = *options[i];
+        if (d.long_name().empty())
+            boost::throw_exception(po::error("long name required for database"));
+
+        allowed_options.insert(d.long_name());
+    }
+
+    po::parsed_options result(&desc);
+
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+    {
+        const string key = (*v)[0].c_str();
+        if (key.empty())  // key  == > Throw exception
+            continue;
+
+        // Check if we are allowed to accept unregistered options,
+        // i.e. options which are not in options_description &desc.
+        const bool unregistered = allowed_options.find(key)==allowed_options.end();
+        if (unregistered && allow_unregistered)
+            boost::throw_exception(po::unknown_option(key));
+
+        // Create a key/value-pair and store whether it is a
+        // registered option of not
+        po::option n;
+        n.string_key = key;
+        // This is now identical to file parsing. What if we want
+        // to concatenate options like on the command line?
+        n.value.clear();          // Fixme: composing?
+        n.value.push_back((*v)[1].c_str());
+        //n.unregistered = unregistered;
+
+        // If any parsing will be done in the future...
+        //n.value().original_tokens.clear();
+        //n.value().original_tokens.push_back(name);
+        //n.value().original_tokens.push_back(value);
+
+        result.options.push_back(n);
+    }
+
+    return result;
+}
+#else
+po::basic_parsed_options<char>
+    Configuration::parse_database(const string &, const string &, const po::options_description &desc, bool)
+{
+    return po::parsed_options(&desc);
+}
+#endif
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+Configuration::Configuration(const string &prgname) : fName(UnLibToolize(prgname)),
+fNameMapper(bind1st(mem_fun(&Configuration::DefaultMapper), this)),
+fPrintUsage(bind(&Configuration::PrintUsage, this))
+{
+    po::options_description generic("Generic options");
+    generic.add_options()
+        ("version,V",           "Print version information.")
+        ("help",                "Print available commandline options.")
+        ("help-environment",    "Print available environment variables.")
+        ("help-database",       "Print available options retreived from the database.")
+        ("help-config",         "Print available configuration file options.")
+        ("print-all",           "Print all options as parsed from all the different sources.")
+        ("print",               "Print options as parsed from the commandline.")
+        ("print-default",       "Print options as parsed from default configuration file.")
+        ("print-database",      "Print options as retrieved from the database.")
+        ("print-config",        "Print options as parsed from the high priority configuration file.")
+        ("print-environment",   "Print options as parsed from the environment.")
+        ("print-unknown",       "Print unrecognized options.")
+        ("print-options",       "Print options as passed to program.")
+        ("print-wildcards",     "Print all options registered with wildcards.")
+        ("dont-check",          "Do not check validity of options from files and database.")
+        ("dont-check-files",    "Do not check validity of options from files.")
+        ("dont-check-database", "Do not check validity of options from database.")
+        ;
+
+    po::options_description def_config;
+    def_config.add_options()
+        ("default",  var<string>(fName+string(".rc")), "Default configuration file.")
+        ;
+
+    po::options_description config("Configuration options");
+    config.add_options()
+        ("config,C",    var<string>(), "Configuration file overwriting options retrieved from the database.")
+        ("database",    var<string>(), "Database link as in\n\t[user[:password]@]server.com[:port]/database\nOverwrites options from the default configuration file.")
+        ("no-database",                "Suppress any access to the database even if a database URL was set.")
+        ;
+
+    fOptionsCommandline[kVisible].add(generic);
+    fOptionsCommandline[kVisible].add(config);
+    fOptionsCommandline[kVisible].add(def_config);
+    fOptionsConfigfile[kVisible].add(config);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintParsed(const po::parsed_options &parsed) const
+{
+    const vector< po::basic_option<char> >& options = parsed.options;
+
+    // .description -> Pointer to opt_commandline
+    // const std::vector< shared_ptr<option_description> >& options() const;
+
+    //const std::string& key(const std::string& option) const;
+    //const std::string& long_name() const;
+    //const std::string& description() const;
+    //shared_ptr<const value_semantic> semantic() const;
+
+    int maxlen = 0;
+    for (unsigned i=0; i<options.size(); ++i)
+    {
+        const po::basic_option<char> &opt = options[i];
+
+        if (opt.value.size()>0 && opt.string_key[0]!='-')
+            Max(maxlen, opt.string_key.length());
+    }
+
+    cout.setf(ios_base::left);
+
+    // =============> Implement printing of parsed options
+    for(unsigned i=0; i<options.size(); ++i)
+    {
+        const po::basic_option<char> &opt = options[i];
+
+        if (opt.value.size()==0 && opt.string_key[0]!='-')
+            cout << "--";
+        cout << setw(maxlen) << opt.string_key;
+        if (opt.value.size()>0)
+            cout << " = " << opt.value[0];
+
+        //for (int j=0; j<options[i].value.size(); j++)
+        //    cout << "\t = " << options[i].value[j];
+        //cout << "/" << options[i].original_tokens[0];
+
+        ostringstream com;
+
+        if (opt.position_key>=0)
+            com << " [position=" << opt.position_key << "]";
+        if (opt.unregistered)
+            com << " [unregistered]";
+
+        if (!com.str().empty())
+            cout << "  # " << com.str();
+
+        cout << endl;
+    }
+}
+
+template<class T>
+string Configuration::VecAsStr(const po::variable_value &v) const
+{
+    ostringstream str;
+
+    const vector<T> vec = v.as<vector<T>>();
+    for (typename std::vector<T>::const_iterator s=vec.begin(); s<vec.end(); s++)
+        str << " " << *s;
+
+    return str.str().substr(1);
+}
+
+string Configuration::VarAsStr(const po::variable_value &v) const
+{
+    if (v.value().type()==typeid(bool))
+        return v.as<bool>() ? "yes ": "no";
+
+    if (v.value().type()==typeid(string))
+        return v.as<string>();
+
+    if (v.value().type()==typeid(int16_t))
+        return to_string((long long int)v.as<int16_t>());
+
+    if (v.value().type()==typeid(int32_t))
+        return to_string((long long int)v.as<int32_t>());
+
+    if (v.value().type()==typeid(int64_t))
+        return to_string((long long int)v.as<int64_t>());
+
+    if (v.value().type()==typeid(uint16_t))
+        return to_string((long long unsigned int)v.as<uint16_t>());
+
+    if (v.value().type()==typeid(uint32_t))
+        return to_string((long long unsigned int)v.as<uint32_t>());
+
+    if (v.value().type()==typeid(uint64_t))
+        return to_string((long long unsigned int)v.as<uint64_t>());
+
+    if (v.value().type()==typeid(float))
+        return to_string((long double)v.as<float>());
+
+    if (v.value().type()==typeid(double))
+        return to_string((long double)v.as<double>());
+
+    if (v.value().type()==typeid(vector<string>))
+        return VecAsStr<string>(v);
+
+    if (v.value().type()==typeid(vector<int16_t>))
+        return VecAsStr<int16_t>(v);
+
+    if (v.value().type()==typeid(vector<int32_t>))
+        return VecAsStr<int32_t>(v);
+
+    if (v.value().type()==typeid(vector<int64_t>))
+        return VecAsStr<int64_t>(v);
+
+    if (v.value().type()==typeid(vector<uint16_t>))
+        return VecAsStr<uint16_t>(v);
+
+    if (v.value().type()==typeid(vector<uint32_t>))
+        return VecAsStr<uint32_t>(v);
+
+    if (v.value().type()==typeid(vector<uint64_t>))
+        return VecAsStr<uint64_t>(v);
+
+    if (v.value().type()==typeid(vector<float>))
+        return VecAsStr<float>(v);
+
+    if (v.value().type()==typeid(vector<double>))
+        return VecAsStr<double>(v);
+
+    ostringstream str;
+    str << hex << setfill('0') << "0x";
+    if (v.value().type()==typeid(Hex<uint16_t>))
+        str << setw(4) << v.as<Hex<uint16_t>>();
+
+    if (v.value().type()==typeid(Hex<uint32_t>))
+        str << setw(8) << v.as<Hex<uint32_t>>();
+
+    if (v.value().type()==typeid(Hex<uint64_t>))
+        str << setw(16) << v.as<Hex<uint64_t>>();
+
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintOptions() const
+{
+    cout << "Options propagated to program:" << endl;
+
+    int maxlen = 0;
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+        Max(maxlen, m->first.length());
+
+    cout.setf(ios_base::left);
+
+    // =============> Implement prining of options in use
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+    {
+        const po::variable_value &v = m->second;
+
+        ostringstream str;
+
+        if (v.value().type()==typeid(bool))
+            str << " bool";
+        if (v.value().type()==typeid(string))
+            str << " string";
+        if (v.value().type()==typeid(int16_t))
+            str << " int16_t";
+        if (v.value().type()==typeid(int32_t))
+            str << " int32_t";
+        if (v.value().type()==typeid(int64_t))
+            str << " int64_t";
+        if (v.value().type()==typeid(uint16_t))
+            str << " uint16_t";
+        if (v.value().type()==typeid(uint32_t))
+            str << " uint32_t";
+        if (v.value().type()==typeid(uint64_t))
+            str << " uint64_t";
+        if (v.value().type()==typeid(float))
+            str << " float";
+        if (v.value().type()==typeid(double))
+            str << " double";
+        if (v.value().type()==typeid(Hex<uint16_t>))
+            str << " Hex<uint16_t>";
+        if (v.value().type()==typeid(Hex<uint32_t>))
+            str << " Hex<uint32_t>";
+        if (v.value().type()==typeid(Hex<uint64_t>))
+            str << " Hex<uint64_t>";
+        if (v.value().type()==typeid(vector<string>))
+            str << " vector<string>";
+        if (v.value().type()==typeid(vector<int16_t>))
+            str << " vector<int16_t>";
+        if (v.value().type()==typeid(vector<int32_t>))
+            str << " vector<int32_t>";
+        if (v.value().type()==typeid(vector<int64_t>))
+            str << " vector<int64_t>";
+        if (v.value().type()==typeid(vector<uint16_t>))
+            str << " vector<uint16_t>";
+        if (v.value().type()==typeid(vector<uint32_t>))
+            str << " vector<uint32_t>";
+        if (v.value().type()==typeid(vector<uint64_t>))
+            str << " vector<uint64_t>";
+        if (v.value().type()==typeid(vector<float>))
+            str << " vector<float>";
+        if (v.value().type()==typeid(vector<double>))
+            str << " vector<double>";
+
+        if (str.str().empty())
+            str << " unknown[" << v.value().type().name() << "]";
+
+        const string var = VarAsStr(v);
+        cout << setw(maxlen) << m->first;
+        if (!var.empty())
+            cout << " = ";
+        cout << var << "   #" << str.str();
+
+        if (v.defaulted())
+            cout << " [default]";
+        if (v.empty())
+            cout << " [empty]";
+
+        cout << endl;
+    }
+
+    cout << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintUnknown(const vector<string> &vec, int steps) const
+{
+    for (vector<string>::const_iterator v=vec.begin(); v<vec.end(); v+=steps)
+        cout << " " << *v << endl;
+    cout << endl;
+}
+
+multimap<string, string> Configuration::GetOptions() const
+{
+    multimap<string,string> rc;
+
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+        rc.insert(make_pair(m->first, VarAsStr(m->second)));
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintUnknown() const
+{
+    if (!fUnknownCommandline.empty())
+    {
+        cout << "Unknown commandline options:" << endl;
+        PrintUnknown(fUnknownCommandline);
+    }
+
+    if (!fUnknownConfigfile.empty())
+    {
+        cout << "Unknown options in configfile:" << endl;
+        PrintUnknown(fUnknownConfigfile, 2);
+    }
+
+    if (!fUnknownEnvironment.empty())
+    {
+        cout << "Unknown environment variables:" << endl;
+        PrintUnknown(fUnknownEnvironment);
+    }
+
+    if (!fUnknownDatabase.empty())
+    {
+        cout << "Unknown database entry:" << endl;
+        PrintUnknown(fUnknownDatabase);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsCommandline(const po::options_description &cl, bool visible)
+{
+    fOptionsCommandline[visible].add(cl);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsConfigfile(const po::options_description &cf, bool visible)
+{
+    fOptionsConfigfile[visible].add(cf);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsEnvironment(const po::options_description &env, bool visible)
+{
+    fOptionsEnvironment[visible].add(env);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsDatabase(const po::options_description &db, bool visible)
+{
+    fOptionsDatabase[visible].add(db);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::SetArgumentPositions(const po::positional_options_description &desc)
+{
+    fArgumentPositions = desc;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::SetNameMapper(const function<string(string)> &func)
+{
+    fNameMapper = func;
+}
+
+void Configuration::SetNameMapper()
+{
+    fNameMapper = bind1st(mem_fun(&Configuration::DefaultMapper), this);
+}
+
+void Configuration::SetPrintUsage(const function<void(void)> &func)
+{
+    fPrintUsage = func;
+}
+
+void Configuration::SetPrintUsage()
+{
+    fPrintUsage = bind(&Configuration::PrintUsage, this);
+}
+
+void Configuration::SetPrintVersion(const function<void(const string&)> &func)
+{
+    fPrintVersion = func;
+}
+
+void Configuration::SetPrintVersion()
+{
+    fPrintVersion = function<void(const string&)>();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//! The idea of the Parse() memeber-function is to parse the command-line,
+//! the configuration files, the databse and the environment and return
+//! a proper combined result.
+//!
+//! In details the following actions are performed in the given order:
+//!
+//!  - (0)  Init local variables with the list of options described by the
+//!         data members.
+//!  - (1)  Reset the data members fPriorityFile, fDefaultFile, fDatabase
+//!  - (2)  Parse the command line
+//!  - (3)  Check for \b --help* command-line options and performe
+//!         corresponding action
+//!  - (4)  Check for \b --print and \b --print-all and perform corresponding
+//!         action
+//!  - (5)  Read and parse the global configuration file, which is compiled
+//!         from the path corresponding to the argument given in the
+//!         constructor + "/fact++.rc", unrecognized options are always
+//!         allowed. Note that in contradiction to all other options
+//!         the options in this file are not checked at all. Hence,
+//!         typos might stay unnoticed.
+//!  - (6)  Read and parse the default configuration file, which is either
+//!         given by the default name or the \b --default command-line
+//!         option. The default name is compiled from the argument
+//!         given to the constructor and ".rc".  If the file-name is
+//!         identical to the default (no command-line option given)
+//!         a missing configuration file is no error. Depending on
+//!         the \b --dont-check and \b --dont-check-files options,
+//!         unrecognized options in the file throw an exception or not.
+//!  - (7)  Check for \b --print-default and \b --print-all and perform
+//!         corresponding action
+//!  - (8)  Read and parse the priority configuration file, which must be given
+//!         by the \b --config or \b -C command-line option or a
+//!         corresponding entry in the default-configuration file.
+//!         If an option on the command-line and the in the configuration
+//!         file exists, the command-line option has priority.
+//!         If none is given, no priority file is read. Depending on
+//!         the \b --dont-check and \b --dont-check-files options,
+//!         unrecognized options in the file throw an exception or not.
+//!  - (9)  Check for \b --print-config and \b --print-all and perform
+//!         corresponding action
+//!  - (10) Retrieve options from the database according to the
+//!         options \b --database and \b --no-database. Note that
+//!         options given on the command-line have highest priority.
+//!         The second priority is the priority-configuration file.
+//!         The options from the default configuration-file have
+//!         lowest priority.
+//!  - (11) Check for \b --print-database and \b --print-all and perform
+//!         corresponding action
+//!  - (12)  Parse the environment options.
+//!  - (13) Check for \b --print-environment and \b --print-all and perform
+//!         corresponding action
+//!  - (14) Compile the final result. The priority of the options is (in
+//!         decreasing order): command-line options, options from the
+//!         priority configuration file, options from the database,
+//!         options from the default configuration-file and options
+//!         from the environment.
+//!  - (15) Find all options which were found and flagged as unrecognized,
+//!         because they are not in the user-defined list of described
+//!         options, are collected and stored in the corresponding
+//!         data-members.
+//!  - (16) Find all options which where registered with wildcards and
+//!         store the list in fWildcardOptions.
+//!  - (17) Before the function returns it check for \b --print-options
+//!         and \b --print-unknown and performs the corresponding actions.
+//!
+//!
+//! @param argc,argv
+//!    arguments passed to <B>main(int argc, char **argv)</B>
+//!
+//! @returns
+//!    A reference to the list with the resulting options with their
+//!    values.
+//!
+//! @todo
+//!    - describe the exceptions
+//!    - describe what happens in a more general way
+//!    - print a waring when no default coonfig file is read
+//!    - proper handling and error messages if files not available
+//
+const po::variables_map &Configuration::Parse(int argc, const char **argv, const std::function<void()> &PrintHelp)
+{
+    const po::positional_options_description &opt_positional = fArgumentPositions;
+
+    // ------------------------ (0) --------------------------
+#ifdef DEBUG
+    cout << "--0--" << endl;
+#endif
+
+    po::options_description opt_commandline;
+    po::options_description opt_configfile;
+    po::options_description opt_environment;
+    po::options_description opt_database;
+
+    for (int i=0; i<2; i++)
+    {
+        opt_commandline.add(fOptionsCommandline[i]);
+        opt_configfile.add(fOptionsConfigfile[i]);
+        opt_environment.add(fOptionsEnvironment[i]);
+        opt_database.add(fOptionsDatabase[i]);
+    }
+
+    // ------------------------ (1) --------------------------
+#ifdef DEBUG
+    cout << "--1--" << endl;
+#endif
+
+    fPriorityFile = "";
+    fDefaultFile  = "";
+    fDatabase     = "";
+
+    // ------------------------ (2) --------------------------
+#ifdef DEBUG
+    cout << "--2--" << endl;
+#endif
+
+    po::command_line_parser parser(argc, const_cast<char**>(argv));
+    parser.options(opt_commandline);
+    parser.positional(opt_positional);
+    parser.style(style::unix_style&~style::allow_guessing);
+    //parser.allow_unregistered();
+
+    const po::parsed_options parsed_commandline = parser.run();
+
+    // ------------------------ (3) --------------------------
+#ifdef DEBUG
+    cout << "--3--" << endl;
+#endif
+
+    po::variables_map getfiles;
+    po::store(parsed_commandline, getfiles);
+
+    if (getfiles.count("version"))
+        PrintVersion();
+    if (getfiles.count("help"))
+    {
+        fPrintUsage();
+        cout <<
+            "Options:\n"
+            "The following describes the available commandline options. "
+            "For further details on how command line option are parsed "
+            "and in which order which configuration sources are accessed "
+            "please refer to the class reference of the Configuration class." << endl;
+        cout << fOptionsCommandline[kVisible] << endl;
+    }
+    if (getfiles.count("help-config"))
+        cout << fOptionsConfigfile[kVisible] << endl;
+    if (getfiles.count("help-env"))
+        cout << fOptionsEnvironment[kVisible] << endl;
+    if (getfiles.count("help-database"))
+        cout << fOptionsDatabase[kVisible] << endl;
+
+
+
+    // ------------------------ (4) --------------------------
+#ifdef DEBUG
+    cout << "--4--" << endl;
+#endif
+
+    if (getfiles.count("print") || getfiles.count("print-all"))
+    {
+        cout << endl << "Parsed commandline options:" << endl;
+        PrintParsed(parsed_commandline);
+        cout << endl;
+    }
+
+    if (getfiles.count("help")     || getfiles.count("help-config") ||
+        getfiles.count("help-env") || getfiles.count("help-database"))
+    {
+        if (PrintHelp)
+            PrintHelp();
+    }
+
+    // ------------------------ (5) --------------------------
+#ifdef DEBUG
+    cout << "--5--" << endl;
+#endif
+
+    const boost::filesystem::path path(GetName());
+    const string globalfile = (path.parent_path()/boost::filesystem::path("fact++.rc")).string();
+
+    cerr << "Reading global  options from '" << globalfile << "'." << endl;
+
+    ifstream gfile(globalfile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_globalfile =
+        !gfile ?
+        po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(gfile, opt_configfile, true);
+
+    // ------------------------ (6) --------------------------
+#ifdef DEBUG
+    cout << "--6--" << endl;
+#endif
+
+    // Get default file from command line
+    if (getfiles.count("default"))
+    {
+        fDefaultFile = getfiles["default"].as<string>();
+        cerr << "Reading default options from '" << fDefaultFile << "'." << endl;
+    }
+
+    const bool checkf    = !getfiles.count("dont-check-files") && !getfiles.count("dont-check");
+    const bool defaulted = getfiles.count("default") && getfiles["default"].defaulted();
+    //const bool exists    = boost::filesystem::exists(fDefaultFile);
+
+    ifstream indef(fDefaultFile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_defaultfile =
+        !indef && defaulted ?
+        po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(indef, opt_configfile, !checkf);
+
+    // ------------------------ (7) --------------------------
+#ifdef DEBUG
+    cout << "--7--" << endl;
+#endif
+
+    if (getfiles.count("print-default") || getfiles.count("print-all"))
+    {
+        if (!indef.is_open() && defaulted)
+            cout << "No configuration file by --default option specified." << endl;
+        else
+        {
+            cout << endl << "Parsed options from '" << fDefaultFile << "':" << endl;
+            PrintParsed(parsed_defaultfile);
+            cout << endl;
+        }
+    }
+
+    po::store(parsed_defaultfile, getfiles);
+
+    // ------------------------ (8) --------------------------
+#ifdef DEBUG
+    cout << "--8--" << endl;
+#endif
+
+    // Get priority from commandline(1), defaultfile(2)
+    if (getfiles.count("config"))
+    {
+        fPriorityFile = getfiles["config"].as<string>();
+        cerr << "Reading config options from '" << fPriorityFile << "'." << endl;
+    }
+
+    ifstream inpri(fPriorityFile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_priorityfile =
+        fPriorityFile.empty() ? po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(inpri, opt_configfile, !checkf);
+
+    // ------------------------ (9) --------------------------
+#ifdef DEBUG
+    cout << "--9--" << endl;
+#endif
+
+    if (getfiles.count("print-config") || getfiles.count("print-all"))
+    {
+        if (fPriorityFile.empty())
+            cout << "No configuration file by --config option specified." << endl;
+        else
+        {
+            cout << endl << "Parsed options from '" << fPriorityFile << "':" << endl;
+            PrintParsed(parsed_priorityfile);
+            cout << endl;
+        }
+    }
+
+    // ------------------------ (10) -------------------------
+#ifdef DEBUG
+    cout << "--10--" << endl;
+#endif
+
+    po::variables_map getdatabase;
+    po::store(parsed_commandline,  getdatabase);
+    po::store(parsed_priorityfile, getdatabase);
+    po::store(parsed_defaultfile,  getdatabase);
+    po::store(parsed_globalfile,   getdatabase);
+
+    if (getdatabase.count("database") && !getdatabase.count("no-database"))
+    {
+        fDatabase = getdatabase["database"].as<string>();
+        cerr << "Requesting options from database for '" << fName << "'" << endl;
+    }
+
+    const bool checkdb = !getdatabase.count("dont-check-database") && !getdatabase.count("dont-check");
+
+    const po::parsed_options parsed_database =
+        fDatabase.empty() ? po::parsed_options(&opt_database) :
+#if BOOST_VERSION < 104600
+        parse_database(path.filename(), fDatabase, opt_database, !checkdb);
+#else
+        parse_database(path.filename().string(), fDatabase, opt_database, !checkdb);
+#endif
+    // ------------------------ (11) -------------------------
+#ifdef DEBUG
+    cout << "--11--" << endl;
+#endif
+
+    if (getfiles.count("print-database") || getfiles.count("print-all"))
+    {
+        if (fDatabase.empty())
+            cout << "No database access requested." << endl;
+        else
+        {
+            cout << endl << "Options received from '" << fDatabase << "':" << endl;
+            PrintParsed(parsed_database);
+            cout << endl;
+        }
+    }
+
+    // ------------------------ (12) -------------------------
+#ifdef DEBUG
+    cout << "--12--" << endl;
+#endif
+
+    const po::parsed_options parsed_environment = po::parse_environment(opt_environment, fNameMapper);
+
+    // ------------------------ (13) -------------------------
+#ifdef DEBUG
+    cout << "--13--" << endl;
+#endif
+
+    if (getfiles.count("print-environment"))
+    {
+        cout << "Parsed options from environment:" << endl;
+        PrintParsed(parsed_environment);
+        cout << endl;
+    }
+
+    // ------------------------ (14) -------------------------
+#ifdef DEBUG
+    cout << "--14--" << endl;
+#endif
+
+    po::variables_map result;
+    po::store(parsed_commandline,  result);
+    po::store(parsed_priorityfile, result);
+    po::store(parsed_database,     result);
+    po::store(parsed_defaultfile,  result);
+    po::store(parsed_globalfile,   result);
+    po::store(parsed_environment,  result);
+    po::notify(result);
+
+    fVariables = result;
+
+    // ------------------------ (15) -------------------------
+#ifdef DEBUG
+    cout << "--15--" << endl;
+#endif
+
+    const vector<string> unknown0 = collect_unrecognized(parsed_globalfile.options,   po::exclude_positional);
+    const vector<string> unknown1 = collect_unrecognized(parsed_defaultfile.options,  po::exclude_positional);
+    const vector<string> unknown2 = collect_unrecognized(parsed_priorityfile.options, po::exclude_positional);
+
+    fUnknownConfigfile.clear();
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown0.begin(), unknown0.end());
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown1.begin(), unknown1.end());
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown2.begin(), unknown2.end());
+
+    fUnknownCommandline = collect_unrecognized(parsed_commandline.options, po::exclude_positional);
+    fUnknownEnvironment = collect_unrecognized(parsed_environment.options, po::exclude_positional);
+    fUnknownDatabase    = collect_unrecognized(parsed_database.options, po::exclude_positional);
+
+    // ------------------------ (16) -------------------------
+#ifdef DEBUG
+    cout << "--16--" << endl;
+#endif
+
+    CreateWildcardOptions();
+
+    // ------------------------ (17) -------------------------
+#ifdef DEBUG
+    cout << "--17--" << endl;
+#endif
+
+    if (result.count("print-options"))
+        PrintOptions();
+
+    if (result.count("print-wildcards"))
+        PrintWildcardOptions();
+
+    if (result.count("print-unknown"))
+        PrintUnknown();
+
+#ifdef DEBUG
+    cout << "------" << endl;
+#endif
+
+    return fVariables;
+}
+
+bool Configuration::DoParse(int argc, const char **argv, const std::function<void()> &PrintHelp)
+{
+    try
+    {
+        Parse(argc, argv, PrintHelp);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return false;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return false;
+    }
+
+    return !HasVersion() && !HasPrint() && !HasHelp();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Create a list of all options which were registered using wildcards
+//!
+void Configuration::CreateWildcardOptions()
+{
+    po::options_description opts;
+
+    for (int i=0; i<2; i++)
+    {
+        opts.add(fOptionsCommandline[i]);
+        opts.add(fOptionsConfigfile[i]);
+        opts.add(fOptionsEnvironment[i]);
+        opts.add(fOptionsDatabase[i]);
+    }
+
+    fWildcardOptions.clear();
+
+    typedef map<string,po::variable_value> Vars;
+    typedef vector<boost::shared_ptr<po::option_description>> Descs;
+
+    const Descs &desc = opts.options();
+
+    for (Vars::const_iterator io=fVariables.begin(); io!=fVariables.end(); io++)
+    {
+        for (Descs::const_iterator id=desc.begin(); id!=desc.end(); id++)
+#if BOOST_VERSION > 104000
+            if ((*id)->match(io->first, false, false, false)==po::option_description::approximate_match)
+#else
+            if ((*id)->match(io->first, false)==po::option_description::approximate_match)
+#endif
+                fWildcardOptions[io->first] = (*id)->long_name();
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all options which were registered using wildcards and
+//! have not be registered subsequently by access.
+//!
+void Configuration::PrintWildcardOptions() const
+{
+    cout << "Options registered with wildcards and not yet accessed:" << endl;
+
+    size_t max = 0;
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+        if (it->second.length()>max)
+            max = it->second.length();
+
+    cout.setf(ios_base::left);
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+        cout << setw(max+1) << it->second << " : " << it->first <<endl;
+}
+
+const vector<string> Configuration::GetWildcardOptions(const std::string &opt) const
+{
+    vector<string> rc;
+
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+    {
+        if (it->second == opt)
+            rc.push_back(it->first);
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes /.libs/lt- from a path or just lt- from the filename.
+//!
+//! @param src
+//!    input path with filename
+//! @returns
+//!    path cleaned from libtool extensions
+//!
+string Configuration::UnLibToolize(const string &src) const
+{
+    const boost::filesystem::path path(src);
+
+    string pname = path.parent_path().string();
+#if BOOST_VERSION < 104600
+    string fname = path.filename();
+#else
+    string fname = path.filename().string();
+#endif
+
+    // If the filename starts with "lt-" remove it from the name
+    if (fname.substr(0, 3)=="lt-")
+        fname = fname.substr(3);
+
+    string pwd;
+    // If no directory is contained determine the current directory
+    if (pname.empty())
+        pname = boost::filesystem::current_path().string();
+
+    // If the directory is relative and just ".libs" forget about it
+    if (pname==".libs")
+        return fname;
+
+
+    // Check if the directory is long enough to contain "/.libs"
+    if (pname.length()>=6)
+    {
+        // If the directory ends with "/.libs", remove it
+        const size_t pos = pname.length()-6;
+        if (pname.substr(pos)=="/.libs")
+            pname = pname.substr(0, pos);
+    }
+
+    // If the path is the local path do not return the path-name
+    if (pname==boost::filesystem::current_path().string())
+        return fname;
+
+    return pname+'/'+fname;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print version information about the program and package.
+//!
+//! The program name is taken from fName. If a leading "lt-" is found,
+//! it is removed. This is useful if the program was build and run
+//! using libtool.
+//!
+//! The package name is taken from the define PACKAGE_STRING. If it is
+//! not defined (like automatically done by autoconf) no package information
+//! is printed. The same is true for PACKAGE_URL and PACKAGE_BUGREPORT.
+//!
+//! From help2man:
+//!
+//! The first line of the --version information is assumed to be in one
+//! of the following formats:
+//!
+//! \verbatim
+//!  - <version>
+//!  - <program> <version>
+//!  - {GNU,Free} <program> <version>
+//!  - <program> ({GNU,Free} <package>) <version>
+//!  - <program> - {GNU,Free} <package> <version>
+//! \endverbatim
+//!
+//!  and separated from any copyright/author details by a blank line.
+//!
+//! Handle multi-line bug reporting sections of the form:
+//!
+//! \verbatim
+//!  - Report <program> bugs to <addr>
+//!  - GNU <package> home page: <url>
+//!  - ...
+//! \endverbatim
+//!
+//! @param name
+//!     name of the program (usually argv[0]). 
+//!
+void Configuration::PrintVersion() const
+{
+#ifndef PACKAGE_STRING
+#define PACKAGE_STRING ""
+#endif
+
+#ifndef PACKAGE_URL
+#define PACKAGE_URL ""
+#endif
+
+#ifndef PACKAGE_BUGREPORT
+#define PACKAGE_BUGREPORT ""
+#endif
+
+    if (fPrintVersion)
+    {
+        fPrintVersion(fName);
+        return;
+    }
+
+#if BOOST_VERSION < 104600
+    const std::string n = boost::filesystem::path(fName).filename();
+#else
+    const std::string n = boost::filesystem::path(fName).filename().string();
+#endif
+
+    const string name = PACKAGE_STRING;
+    const string bugs = PACKAGE_BUGREPORT;
+    const string url  = PACKAGE_URL;
+
+    cout << n;
+    if (!name.empty())
+        cout << " - " << name;
+    cout <<
+        "\n\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n";
+    if (!bugs.empty())
+        cout << "Report bugs to <" << bugs << ">\n";
+    if (!url.empty())
+        cout << "Home page: " << url << "\n";
+    cout <<
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << std::endl;
+}
Index: branches/FACT++_part_filenames/src/Configuration.h
===================================================================
--- branches/FACT++_part_filenames/src/Configuration.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Configuration.h	(revision 18732)
@@ -0,0 +1,271 @@
+#ifndef FACT_Configuration
+#define FACT_Configuration
+
+#include <iostream>
+#include <boost/program_options.hpp>
+
+namespace po = boost::program_options;
+
+class Configuration
+{
+private:
+    /// Convienience enum to access the fOption* data memebers more verbosely.
+    enum
+    {
+        kHidden  = 0, ///< Index for hidden options (not shown in PrintParsed)
+        kVisible = 1  ///< Index for options visible in PrintParsed
+    };
+
+    const std::string fName; /// argv[0]
+
+    std::map<std::string, std::string> fEnvMap;
+
+    po::options_description fOptionsCommandline[2]; /// Description of the command-line options
+    po::options_description fOptionsConfigfile[2];  /// Description of the options in the configuration file
+    po::options_description fOptionsDatabase[2];    /// Description of options from the database
+    po::options_description fOptionsEnvironment[2]; /// Description of options from the environment
+
+    po::positional_options_description fArgumentPositions; /// Description of positional command-line options (arguments)
+
+    std::vector<std::string> fUnknownCommandline;   /// Storage container for unrecognized commandline options
+    std::vector<std::string> fUnknownConfigfile;    /// Storage container for unrecognized options from configuration files
+    std::vector<std::string> fUnknownEnvironment;   /// Storage container for unrecognized options from the environment
+    std::vector<std::string> fUnknownDatabase;      /// Storage container for unrecognized options retrieved from the database
+
+    std::map<std::string, std::string> fWildcardOptions;  /// Options which were registered using wildcards
+
+    std::string fPriorityFile;  /// File name of the priority configuration file (overwrites option from the databse)
+    std::string fDefaultFile;   /// File name of the default configuration file (usually {program}.rc)
+    std::string fDatabase;      /// URL for database connection (see Configuration::parse_database)
+
+    po::variables_map fVariables;  /// Variables as compiled by the Parse-function, which will be passed to the program
+
+    /// A default mapper for environment variables skipping all of them
+    std::string DefaultMapper(const std::string env)
+    {
+        return fEnvMap[env];
+    }
+
+    /// Pointer to the mapper function for environment variables
+    std::function<std::string(std::string)> fNameMapper;
+    std::function<void()>                   fPrintUsage;
+    std::function<void(const std::string&)> fPrintVersion;
+
+    /// Helper function which return the max of the two arguments in the first argument
+    static void Max(int &val, const int &comp)
+    {
+        if (comp>val)
+            val=comp;
+    }
+
+    /// Helper for Parse to create list of used wildcard options
+    void CreateWildcardOptions();
+
+    // Helper functions for PrintOptions and GetOptions
+    template<class T>
+        std::string VecAsStr(const po::variable_value &v) const;
+    std::string VarAsStr(const po::variable_value &v) const;
+
+    /// Print all options from a list of already parsed options
+    void PrintParsed(const po::parsed_options &parsed) const;
+    /// Print a list of all unkown options within the given vector
+    void PrintUnknown(const std::vector<std::string> &vec, int steps=1) const;
+
+    virtual void PrintUsage() const { }
+    virtual void PrintVersion() const;
+
+    std::string UnLibToolize(const std::string &src) const;
+
+public:
+    Configuration(const std::string &prgname="");
+    virtual ~Configuration() { }
+
+    /// Retrieve data from a database and return them as options
+    static po::basic_parsed_options<char>
+        parse_database(const std::string &prgname, const std::string &database, const po::options_description& desc, bool allow_unregistered=false);
+
+    // Setup
+    void AddOptionsCommandline(const po::options_description &cl, bool visible=true);
+    void AddOptionsConfigfile(const po::options_description &cf, bool visible=true);
+    void AddOptionsEnvironment(const po::options_description &env, bool visible=true);
+    void AddOptionsDatabase(const po::options_description &db, bool visible=true);
+    void AddOptions(const po::options_description &opt, bool visible=true)
+    {
+        AddOptionsCommandline(opt, visible);
+        AddOptionsConfigfile(opt, visible);
+        AddOptionsEnvironment(opt, visible);
+        AddOptionsDatabase(opt, visible);
+    }
+
+    void SetArgumentPositions(const po::positional_options_description &desc);
+
+    void SetNameMapper(const std::function<std::string(std::string)> &func);
+    void SetNameMapper();
+
+    void SetPrintUsage(const std::function<void(void)> &func);
+    void SetPrintUsage();
+
+    void SetPrintVersion(const std::function<void(const std::string &)> &func);
+    void SetPrintVersion();
+
+    void AddEnv(const std::string &conf, const std::string &env)
+    {
+        fEnvMap[env] = conf;
+    }
+
+    // Output
+    void PrintOptions() const;
+    void PrintUnknown() const;
+    void PrintWildcardOptions() const;
+
+    const std::map<std::string,std::string> &GetWildcardOptions() const { return fWildcardOptions; }
+    const std::vector<std::string> GetWildcardOptions(const std::string &opt) const;
+
+    template<class T>
+    const std::map<std::string,T> GetOptions(const std::string &opt)
+    {
+        const std::vector<std::string> rc = GetWildcardOptions(opt+'*');
+
+        std::map<std::string,T> map;
+        for (auto it=rc.begin(); it!=rc.end(); it++)
+            map[it->substr(opt.length())] = Get<T>(*it);
+
+        return map;
+    }
+
+    std::multimap<std::string, std::string> GetOptions() const;
+
+    // Process command line arguments
+    const po::variables_map &Parse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
+    bool DoParse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
+
+    bool HasVersion()
+    {
+        return Has("version");
+    }
+
+    bool HasHelp()
+    {
+        return Has("help") || Has("help-config") || Has("help-env") || Has("help-database");
+    }
+
+    bool HasPrint()
+    {
+        return Has("print-all") || Has("print") || Has("print-default") ||
+            Has("print-database") || Has("print-config") ||
+            Has("print-environment") || Has("print-unknown") ||
+            Has("print-options") || Has("print-wildcards");
+    }
+
+    // Simplified access to the parsed options
+    template<class T>
+        T Get(const std::string &var) { fWildcardOptions.erase(var); return fVariables[var].as<T>(); }
+    bool Has(const std::string &var) { fWildcardOptions.erase(var); return fVariables.count(var)>0; }
+
+    template<class T>
+        std::vector<T> Vec(const std::string &var) { return Has(var) ? fVariables[var].as<std::vector<T>>() : std::vector<T>(); }
+
+    template<class T, class S>
+    T Get(const std::string &var, const S &val)
+    {
+        std::ostringstream str;
+        str << var << val;
+        return Get<T>(str.str());
+    }
+
+    template<class T>
+    bool Has(const std::string &var, const T &val)
+    {
+        std::ostringstream str;
+        str << var << val;
+        return Has(str.str());
+    }
+
+    template<class T, class S>
+    T GetDef(const std::string &var, const S &val)
+    {
+        return Has(var, val) ? Get<T>(var, val) : Get<T>(var+"default");
+    }
+
+    template<class T>
+    bool HasDef(const std::string &var, const T &val)
+    {
+        // Make sure the .default option is touched
+        const bool rc = Has(var+"default");
+
+        return Has(var, val) ? true : rc;
+    }
+
+    void Remove(const std::string &var)
+    {
+        fVariables.erase(var);
+    }
+
+/*
+    template<class T>
+    std::map<std::string, T> GetMap(const std::string &var)
+    {
+        const size_t len = var.length();
+
+        std::map<std::string, T> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc[it->first] = it->second.as<T>();
+
+        return rc;
+    }
+
+    template<class T>
+    std::vector<std::string> GetKeys(const std::string &var)
+    {
+        const size_t len = var.length();
+
+        std::vector<std::string> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc.push_back(it->first);
+
+        return rc;
+    }
+*/
+    const std::string &GetName() const { return fName; }
+};
+
+template<typename T>
+struct Hex
+{
+    T val;
+    Hex() { }
+    Hex(const T &v) : val(v) { }
+    operator T() const { return val; }
+};
+template<typename T>
+std::istream &operator>>(std::istream &in, Hex<T> &rc)
+{
+    T val;
+    in >> std::hex >> val;
+    rc.val = val;
+    return in;
+}
+
+template<class T>
+inline po::typed_value<T> *var(T *ptr=0)
+{ return po::value<T>(ptr); }
+
+template<class T>
+inline po::typed_value<T> *var(const T &val, T *ptr=0)
+{ return po::value<T>(ptr)->default_value(val); }
+
+template<class T>
+inline po::typed_value<std::vector<T>> *vars()
+{ return po::value<std::vector<T>>(); }
+
+inline po::typed_value<bool> *po_switch()
+{ return po::bool_switch(); }
+
+inline po::typed_value<bool> *po_bool(bool def=false)
+{ return po::value<bool>()->implicit_value(true)->default_value(def); }
+
+#endif
Index: branches/FACT++_part_filenames/src/Connection.cc
===================================================================
--- branches/FACT++_part_filenames/src/Connection.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Connection.cc	(revision 18732)
@@ -0,0 +1,460 @@
+// **************************************************************************
+/** @class Connection
+
+@brief Maintains an ansynchronous TCP/IP client connection
+
+@todo
+   Unify with ConnectionUSB
+
+*/
+// **************************************************************************
+#include "Connection.h"
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using ba::ip::tcp;
+
+    // -------- Abbreviations for starting async tasks ---------
+
+int Connection::Write(const Time &t, const string &txt, int qos)
+{
+    if (fLog)
+        return fLog->Write(t, txt, qos);
+
+    return MessageImp::Write(t, txt, qos);
+}
+
+void Connection::AsyncRead(const ba::mutable_buffers_1 buffers, int type)
+{
+    ba::async_read(*this, buffers,
+                   boost::bind(&Connection::HandleReceivedData, this,
+                               dummy::error, dummy::bytes_transferred, type));
+}
+
+void Connection::AsyncWrite(const ba::const_buffers_1 &buffers)
+{
+    ba::async_write(*this, buffers,
+                    boost::bind(&Connection::HandleSentData, this,
+                                dummy::error, dummy::bytes_transferred));
+}
+
+/*
+void Connection::AsyncWait(ba::deadline_timer &timer, int millisec,
+                           void (Connection::*handler)(const bs::error_code&))
+{
+    // - The boost::asio::basic_deadline_timer::expires_from_now()
+    //   function cancels any pending asynchronous waits, and returns
+    //   the number of asynchronous waits that were cancelled. If it
+    //   returns 0 then you were too late and the wait handler has
+    //   already been executed, or will soon be executed. If it
+    //   returns 1 then the wait handler was successfully cancelled.
+    // - If a wait handler is cancelled, the bs::error_code passed to
+    //   it contains the value bs::error::operation_aborted.
+    timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+    timer.async_wait(boost::bind(handler, this, dummy::error));
+}
+*/
+
+void Connection::AsyncConnect(tcp::resolver::iterator iterator)
+{
+    tcp::endpoint endpoint = *iterator;
+
+    // AsyncConnect + Deadline
+     async_connect(endpoint,
+                  boost::bind(&Connection::ConnectIter,
+                              this, iterator, ba::placeholders::error));
+
+    // We will get a "Connection timeout anyway"
+    //AsyncWait(fConnectTimeout, 5, &Connection::HandleConnectTimeout);
+}
+
+void Connection::AsyncConnect()
+{
+    // AsyncConnect + Deadline
+     async_connect(fEndpoint,
+                  boost::bind(&Connection::ConnectAddr,
+                              this, fEndpoint, ba::placeholders::error));
+
+    // We will get a "Connection timeout anyway"
+    //AsyncWait(fConnectTimeout, 5, &Connection::HandleConnectTimeout);
+}
+
+// ------------------------ close --------------------------
+// close from another thread
+void Connection::CloseImp(bool restart)
+{
+    if (IsConnected() && fVerbose)
+    {
+        ostringstream str;
+        str << "Connection closed to " << URL() << ".";
+        Info(str);
+    }
+
+    // Stop any pending connection attempt
+    fConnectionTimer.cancel();
+
+    // Close possible open connections
+    close();
+
+    // Reset the connection status
+    fQueueSize = 0;
+    fConnectionStatus = kDisconnected;
+
+    // Stop deadline counters
+    fInTimeout.cancel();
+    fOutTimeout.cancel();
+
+    if (!restart || IsConnecting())
+        return;
+
+    // We need some timeout before reconnecting!
+    // And we have to check if we are alreayd trying to connect
+    // We shoudl wait until all operations in progress were canceled
+
+    // Start trying to reconnect
+    fMsgConnect = "";
+    fErrConnect = "";
+    StartConnect();
+}
+
+void Connection::PostClose(bool restart)
+{
+    get_io_service().post(boost::bind(&Connection::CloseImp, this, restart));
+}
+
+// ------------------------ write --------------------------
+void Connection::HandleWriteTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp();
+        return;
+    }
+
+    if (!is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fOutTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    Error("fOutTimeout has expired, writing data to "+URL());
+
+    CloseImp();
+}
+
+void Connection::HandleSentData(const bs::error_code& error, size_t n)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error && error != ba::error::not_connected)
+    {
+        ostringstream str;
+        str << "Writing to " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp();
+        return;
+    }
+
+    if (error == ba::error::not_connected)
+    {
+        ostringstream msg;
+        msg << n << " bytes could not be sent to " << URL() << " due to missing connection.";
+        Warn(msg);
+
+        return;
+    }
+
+    if (--fQueueSize==0)
+        fOutTimeout.cancel();
+
+    if (fDebugTx)
+    {
+        ostringstream msg;
+        msg << n << " bytes successfully sent to " << URL();
+        Debug(msg);
+    }
+}
+
+void Connection::PostMessage(const void *ptr, size_t sz)
+{
+    // This function can be called from a different thread...
+    if (!is_open())
+        return;
+
+    // ... this is why we have to increase fQueueSize first
+    fQueueSize++;
+
+    // ... and shift the deadline timer
+    // This is not ideal, because if we are continously
+    // filling the buffer, it will never timeout
+    AsyncWait(fOutTimeout, 5000, &Connection::HandleWriteTimeout);
+
+    // Now we can schedule the buffer to be sent
+    AsyncWrite(ba::const_buffers_1(ptr, sz));
+
+    // If a socket is closed, all pending asynchronous
+    // operation will be aborted.
+}
+
+void Connection::PostMessage(const string &cmd, size_t max)
+{
+    if (max==size_t(-1))
+        max = cmd.length()+1;
+
+    PostMessage(cmd.c_str(), min(cmd.length()+1, max));
+}
+
+void Connection::HandleConnectionTimer(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error)
+    {
+        ostringstream str;
+        str << "Connetion timer of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+    }
+
+    if (is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fConnectionTimer.expires_at() < ba::deadline_timer::traits_type::now())
+        StartConnect();
+}
+
+bool Connection::ConnectImp(const tcp::endpoint &endpoint, const bs::error_code& error)
+{
+    const string host = endpoint.port()==0 ? "" :
+        endpoint.address().to_string()+':'+to_string((long long unsigned int)endpoint.port());
+
+    // Connection established
+    if (!error)
+    {
+	set_option(socket_base::keep_alive(true));
+
+	const int optval = 30;
+        // First keep alive after 30s
+	setsockopt(native(), SOL_TCP, TCP_KEEPIDLE, &optval, sizeof(optval));
+        // New keep alive after 30s
+	setsockopt(native(), SOL_TCP, TCP_KEEPINTVL, &optval, sizeof(optval));
+
+        if (fVerbose)
+            Info("Connection established to "+host+"...");
+
+        fQueueSize = 0;
+        fConnectionStatus = kConnected;
+
+        ConnectionEstablished();
+        return true;
+    }
+
+    // If returning from run will lead to deletion of this
+    // instance, close() is not needed (maybe implicitly called).
+    // If run is called again, close() is needed here. Otherwise:
+    // Software caused connection abort when we try to resolve
+    // the endpoint again.
+    CloseImp(false);
+
+    ostringstream msg;
+    if (!host.empty())
+        msg << "Connecting to " << host << ": " << error.message() << " (" << error << ")";
+
+    if (fErrConnect!=msg.str())
+    {
+        if (error!=ba::error::basic_errors::connection_refused)
+            fMsgConnect = "";
+        fErrConnect = msg.str();
+        Warn(fErrConnect);
+    }
+
+    if (error==ba::error::basic_errors::operation_aborted)
+        return true;
+
+    fConnectionStatus = kConnecting;
+
+    return false;
+/*
+    // Go on with the next
+    if (++iterator != tcp::resolver::iterator())
+    {
+        AsyncConnect(iterator);
+        return;
+    }
+*/
+    // No more entries to try, if we would not put anything else
+    // into the queue anymore it would now return (run() would return)
+
+    // Since we don't want to block the main loop, we wait using an
+    // asnychronous timer
+
+    // FIXME: Should we move this before AsyncConnect() ?
+//    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::ConnectIter(tcp::resolver::iterator iterator, const bs::error_code& error)
+{
+    if (ConnectImp(*iterator, error))
+        return;
+
+    // Go on with the next
+    if (++iterator != tcp::resolver::iterator())
+    {
+        AsyncConnect(iterator);
+        return;
+    }
+
+    // No more entries to try, if we would not put anything else
+    // into the queue anymore it would now return (run() would return)
+    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::ConnectAddr(const tcp::endpoint &endpoint, const bs::error_code& error)
+{
+    if (ConnectImp(endpoint, error))
+        return;
+
+    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+// FIXME: Async connect should get address and port as an argument
+void Connection::StartConnect()
+{
+    fConnectionStatus = kConnecting;
+
+    if (fEndpoint!=tcp::endpoint())
+    {
+        ostringstream msg;
+        msg << "Trying to connect to " << fEndpoint << "...";
+        if (fMsgConnect!=msg.str())
+        {
+            fMsgConnect = msg.str();
+            Info(msg);
+        }
+
+        AsyncConnect();
+        return;
+    }
+
+    const bool valid = !fAddress.empty() || !fPort.empty();
+
+    boost::system::error_code ec;
+
+    ostringstream msg;
+    if (!valid)
+        msg << "No target address... connection attempt postponed.";
+    else
+    {
+        tcp::resolver resolver(get_io_service());
+
+        tcp::resolver::query query(fAddress, fPort);
+        tcp::resolver::iterator iterator = resolver.resolve(query, ec);
+
+        msg << "Trying to connect to " << URL() << "...";
+
+        // Start connection attempts (will also reset deadline counter)
+        if (!ec)
+            AsyncConnect(iterator);
+        else
+            msg << " " << ec.message() << " (" << ec << ")";
+    }
+
+    // Only output message if it has changed
+    if (fMsgConnect!=msg.str())
+    {
+        fMsgConnect = msg.str();
+        if (ec)
+            Error(msg);
+        if (!ec && fVerbose)
+            Info(msg);
+    }
+
+    if (!valid || ec)
+        AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::SetEndpoint(const string &addr, int port)
+{
+    if (fConnectionStatus>=1)
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = addr;
+    fPort    = to_string((long long)port);
+}
+
+void Connection::SetEndpoint(const string &addr, const string &port)
+{
+    if (fConnectionStatus>=1 && URL()!=":")
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = addr;
+    fPort    = port;
+}
+
+void Connection::SetEndpoint(const string &addr)
+{
+    const size_t p0 = addr.find_first_of(':');
+    const size_t p1 = addr.find_last_of(':');
+
+    if (p0==string::npos || p0!=p1)
+    {
+        Error("Connection::SetEndpoint - Wrong format of argument '"+addr+"' ('host:port' expected)");
+        return;
+    }
+
+    SetEndpoint(addr.substr(0, p0), addr.substr(p0+1));
+}
+
+void Connection::SetEndpoint(const tcp::endpoint &ep)
+{
+    const ba::ip::address addr = ep.address();
+
+    const ba::ip::address use =
+        addr.is_v6() && addr.to_v6().is_loopback() ?
+        ba::ip::address(ba::ip::address_v4::loopback()) :
+        addr;
+
+    SetEndpoint(use.to_string(), ep.port());
+
+    fEndpoint = tcp::endpoint(use, ep.port());
+}
+
+
+Connection::Connection(ba::io_service& ioservice, ostream &out) :
+MessageImp(out), tcp::socket(ioservice),
+fLog(0), fVerbose(true), fDebugTx(false),
+fInTimeout(ioservice), fOutTimeout(ioservice), fConnectionTimer(ioservice),
+fQueueSize(0), fConnectionStatus(kDisconnected)
+{
+}
Index: branches/FACT++_part_filenames/src/Connection.h
===================================================================
--- branches/FACT++_part_filenames/src/Connection.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Connection.h	(revision 18732)
@@ -0,0 +1,156 @@
+#ifndef FACT_Connection
+#define FACT_Connection
+
+#include <list>
+#include <array>
+#include <string>
+
+#include <boost/bind.hpp>
+#include <boost/asio.hpp>
+#include <boost/function.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "MessageImp.h"
+
+class Connection : public MessageImp, public boost::asio::ip::tcp::socket
+{
+private:
+    MessageImp *fLog;
+
+    std::string fAddress;
+    std::string fPort;
+
+    boost::asio::ip::tcp::endpoint fEndpoint;
+
+    bool fVerbose;
+    bool fDebugTx;
+
+    enum ConnectionStatus_t
+    {
+        kDisconnected = 0,
+        kConnecting   = 1,
+        kConnected    = 2,
+    };
+
+protected:
+    boost::asio::deadline_timer   fInTimeout;
+
+private:
+    boost::asio::deadline_timer   fOutTimeout;
+    boost::asio::deadline_timer   fConnectionTimer;
+
+    size_t fQueueSize;
+
+    ConnectionStatus_t fConnectionStatus;
+
+    std::string fErrConnect;
+    std::string fMsgConnect;
+
+public:
+    void SetLogStream(MessageImp *log) { fLog = log; }
+    std::ostream &Out() { return fLog ? fLog->Out() : Out(); }
+
+    // -------- Abbreviations for starting async tasks ---------
+
+    void AsyncRead(const boost::asio::mutable_buffers_1 buffers, int type=0);
+    void AsyncWrite(const boost::asio::const_buffers_1 &buffers);
+
+    template<class T>
+    void AsyncWaitImp(boost::asio::deadline_timer &timer, int millisec,
+                      void (T::*handler)(const boost::system::error_code&))
+    {
+        // - The boost::asio::basic_deadline_timer::expires_from_now()
+        //   function cancels any pending asynchronous waits, and returns
+        //   the number of asynchronous waits that were cancelled. If it
+        //   returns 0 then you were too late and the wait handler has
+        //   already been executed, or will soon be executed. If it
+        //   returns 1 then the wait handler was successfully cancelled.
+        // - If a wait handler is cancelled, the bs::error_code passed to
+        //   it contains the value bs::error::operation_aborted.
+        timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+        timer.async_wait(boost::bind(handler, this, boost::asio::placeholders::error));
+    }
+
+    void AsyncWait(boost::asio::deadline_timer &timer, int millisec,
+                   void (Connection::*handler)(const boost::system::error_code&))
+    {
+        AsyncWaitImp(timer, millisec, handler);
+    }
+
+
+private:
+    void AsyncConnect(boost::asio::ip::tcp::resolver::iterator iterator);
+    void AsyncConnect();
+
+    void CloseImp(bool restart=true);
+
+    bool ConnectImp(const boost::asio::ip::tcp::endpoint &endpoint,
+                    const boost::system::error_code& error);
+    void ConnectIter(boost::asio::ip::tcp::resolver::iterator endpoint_iterator,
+                     const boost::system::error_code& error);
+    void ConnectAddr(const boost::asio::ip::tcp::endpoint &endpoint,
+                     const boost::system::error_code& error);
+
+    void HandleConnectionTimer(const boost::system::error_code &error);
+    void HandleWriteTimeout(const boost::system::error_code &error);
+    void HandleSentData(const boost::system::error_code& error, size_t);
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    virtual void ConnectionEstablished() { }
+    virtual void ConnectionFailed() { }
+
+public:
+    Connection(boost::asio::io_service& io_service, std::ostream &out);
+
+    // ------------------------ connect --------------------------
+
+    void SetEndpoint(const std::string &addr, int port);
+    void SetEndpoint(const std::string &addr, const std::string &port);
+    void SetEndpoint(const std::string &addr);
+    void SetEndpoint(const boost::asio::ip::tcp::endpoint &ep);
+
+    virtual void StartConnect();
+
+    // ------------------------ close --------------------------
+    void PostClose(bool restart=true);
+
+    // ------------------------ write --------------------------
+    void PostMessage(const void *msg, size_t s=0);
+    void PostMessage(const std::string &cmd, size_t s=-1);
+
+    template<typename T, size_t N>
+    void PostMessage(const std::array<T, N> &msg)
+    {
+        PostMessage(msg.begin(), msg.size()*sizeof(T));
+    }
+
+    template<typename T>
+        void PostMessage(const std::vector<T> &msg)
+    {
+        PostMessage(&msg[0], msg.size()*sizeof(T));
+    }
+
+    // ------------------------ others --------------------------
+
+    virtual void HandleReceivedData(const boost::system::error_code&, size_t, int = 0) { }
+    virtual void HandleReadTimeout(const boost::system::error_code&) { }
+
+    bool IsTxQueueEmpty() const { return fQueueSize==0; /*fOutQueue.empty();*/ }
+
+    int IsClosed() const { return !is_open(); }
+
+    bool IsDisconnected() const { return fConnectionStatus==kDisconnected; }
+    bool IsConnected()  const   { return fConnectionStatus==kConnected;    }
+    bool IsConnecting() const   { return fConnectionStatus==kConnecting;   }
+
+    void SetVerbose(bool b=true) { fVerbose=b; }
+    void SetDebugTx(bool b=true) { fDebugTx=b; }
+
+    std::string URL() const { return fAddress + ":" + fPort; }
+
+    const boost::asio::ip::tcp::endpoint &GetEndpoint() const { return fEndpoint; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/ConnectionUSB.cc
===================================================================
--- branches/FACT++_part_filenames/src/ConnectionUSB.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ConnectionUSB.cc	(revision 18732)
@@ -0,0 +1,335 @@
+// **************************************************************************
+/** @class Connection
+
+@brief Maintains an ansynchronous TCP/IP client connection
+
+*/
+// **************************************************************************
+#include "ConnectionUSB.h"
+
+#include <boost/bind.hpp>
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using ba::serial_port_base;
+
+//#define DEBUG_TX
+//#define DEBUG
+
+#ifdef DEBUG
+#include <fstream>
+#include <iomanip>
+#include "Time.h"
+#endif
+
+// -------- Abbreviations for starting async tasks ---------
+
+int ConnectionUSB::Write(const Time &t, const string &txt, int qos)
+{
+    if (fLog)
+        return fLog->Write(t, txt, qos);
+
+    return MessageImp::Write(t, txt, qos);
+}
+
+void ConnectionUSB::AsyncRead(const ba::mutable_buffers_1 buffers, int type, int counter)
+{
+    ba::async_read(*this, buffers,
+                   boost::bind(&ConnectionUSB::HandleReceivedData, this,
+                               dummy::error, dummy::bytes_transferred, type, counter));
+}
+
+void ConnectionUSB::AsyncWrite(const ba::const_buffers_1 &buffers)
+{
+    ba::async_write(*this, buffers,
+                    boost::bind(&ConnectionUSB::HandleSentData, this,
+                                dummy::error, dummy::bytes_transferred));
+}
+
+void ConnectionUSB::AsyncWait(ba::deadline_timer &timer, int millisec,
+                           void (ConnectionUSB::*handler)(const bs::error_code&))
+{
+    // - The boost::asio::basic_deadline_timer::expires_from_now()
+    //   function cancels any pending asynchronous waits, and returns
+    //   the number of asynchronous waits that were cancelled. If it
+    //   returns 0 then you were too late and the wait handler has
+    //   already been executed, or will soon be executed. If it
+    //   returns 1 then the wait handler was successfully cancelled.
+    // - If a wait handler is cancelled, the bs::error_code passed to
+    //   it contains the value bs::error::operation_aborted.
+    timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+    timer.async_wait(boost::bind(handler, this, dummy::error));
+}
+
+// ------------------------ close --------------------------
+// close from another thread
+void ConnectionUSB::CloseImp(int64_t delay)
+{
+    if (IsConnected())
+        Info("Closing connection to "+URL()+".");
+
+    // Close possible open connections
+    bs::error_code ec;
+    cancel(ec);
+    if (ec && ec!=ba::error::basic_errors::bad_descriptor)
+    {
+        ostringstream msg;
+        msg << "Cancel async requests on " << URL() << ": " << ec.message() << " (" << ec << ")";
+        Error(msg);
+    }
+
+    if (IsConnected())
+    {
+        close(ec);
+        if (ec)
+        {
+            ostringstream msg;
+            msg << "Closing " << URL() << ": " << ec.message() << " (" << ec << ")";
+            Error(msg);
+        }
+        else
+            Info("Closed connection to "+URL()+" succesfully.");
+    }
+
+    // Stop deadline counters
+    fInTimeout.cancel();
+    fOutTimeout.cancel();
+    fConnectTimeout.cancel();
+
+    // Reset the connection status
+    fQueueSize = 0;
+    fConnectionStatus = kDisconnected;
+
+#ifdef DEBUG
+    ofstream fout1("transmitted.txt", ios::app);
+    ofstream fout2("received.txt", ios::app);
+    ofstream fout3("send.txt", ios::app);
+    fout1 << Time() << ": ---" << endl;
+    fout2 << Time() << ": ---" << endl;
+    fout3 << Time() << ": ---" << endl;
+#endif
+
+    if (delay<0 || IsConnecting())
+        return;
+
+    // We need some timeout before reconnecting!
+    // And we have to check if we are alreayd trying to connect
+    // We should wait until all operations in progress were canceled
+    fConnectTimeout.expires_from_now(boost::posix_time::seconds(delay));
+    fConnectTimeout.async_wait(boost::bind(&ConnectionUSB::HandleReconnectTimeout, this, dummy::error));
+}
+
+void ConnectionUSB::PostClose(int64_t delay)
+{
+    get_io_service().post(boost::bind(&ConnectionUSB::CloseImp, this, delay));
+}
+
+void ConnectionUSB::HandleReconnectTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Reconnect timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+
+    if (is_open())
+    {
+        Error("HandleReconnectTimeout - "+URL()+" is already open.");
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fConnectTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    // Start trying to reconnect
+    Connect();
+}
+
+
+// ------------------------ write --------------------------
+void ConnectionUSB::HandleWriteTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+    if (!is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fOutTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    Error("fOutTimeout has expired, writing data to "+URL());
+
+    CloseImp(-1);
+}
+
+void ConnectionUSB::HandleSentData(const bs::error_code& error, size_t n)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error && error != ba::error::not_connected)
+    {
+        ostringstream str;
+        str << "Writing to " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+    if (error == ba::error::not_connected)
+    {
+        ostringstream msg;
+        msg << n << " bytes could not be sent to " << URL() << " due to missing connection.";
+        Warn(msg);
+        return;
+    }
+
+    if (--fQueueSize==0)
+        fOutTimeout.cancel();
+
+#ifdef DEBUG_TX
+    ostringstream msg;
+    msg << n << " bytes successfully sent to " << URL();
+    Message(msg);
+#endif
+
+#ifdef DEBUG
+    ofstream fout("transmitted.txt", ios::app);
+    fout << Time() << ": ";
+    for (unsigned int i=0; i<fOutQueue.front().size(); i++)
+        fout << hex << setfill('0') << setw(2) << (uint32_t)fOutQueue.front()[i];
+    fout << endl;
+#endif
+
+    HandleTransmittedData(n);
+}
+
+void ConnectionUSB::PostMessage(const void *ptr, size_t sz)
+{
+    // This function can be called from a different thread...
+    if (!is_open())
+        return;
+
+    // ... this is why we have to increase fQueueSize first
+    fQueueSize++;
+
+    // ... and shift the deadline timer
+    // This is not ideal, because if we are continously
+    // filling the buffer, it will never timeout
+    AsyncWait(fOutTimeout, 5000, &ConnectionUSB::HandleWriteTimeout);
+
+    // Now we can schedule the buffer to be sent
+    AsyncWrite(ba::const_buffers_1(ptr, sz));
+}
+
+void ConnectionUSB::PostMessage(const string &cmd, size_t max)
+{
+    if (max==size_t(-1))
+        max = cmd.length()+1;
+
+    PostMessage(cmd.c_str(), min(cmd.length()+1, max));
+}
+
+void ConnectionUSB::Connect()
+{
+    fConnectionStatus = kConnecting;
+
+    Info("Connecting to "+URL()+".");
+
+    bs::error_code ec;
+    open(URL(), ec);
+
+    if (ec)
+    {
+        ostringstream msg;
+        msg << "Error opening " << URL() << "... " << ec.message() << " (" << ec << ")";
+        Error(msg);
+        fConnectionStatus = kDisconnected;
+        return;
+    }
+
+    Info("Connection established.");
+
+    try
+    {
+        Info("Setting Baud Rate");
+        set_option(fBaudRate);
+        Info("Setting Character Size");
+        set_option(fCharacterSize);
+        Info("Setting Parity");
+        set_option(fParity);
+        Info("Setting Sop Bits");
+        set_option(fStopBits);
+        Info("Setting Flow control");
+        set_option(fFlowControl);
+    }
+    catch (const bs::system_error &erc)
+    {
+        Error(string("Setting connection options: ")+erc.what());
+        // CLOSE
+        return;
+    }
+
+    fQueueSize = 0;
+    fConnectionStatus = kConnected;
+
+    ConnectionEstablished();
+}
+
+void ConnectionUSB::SetEndpoint(const string &addr)
+{
+    if (fConnectionStatus>=1)
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = "/dev/"+addr;
+}
+
+
+ConnectionUSB::ConnectionUSB(ba::io_service& ioservice, ostream &out) :
+MessageImp(out), ba::serial_port(ioservice), fLog(0),
+fBaudRate(115200),
+fCharacterSize(8), fParity(parity::none), fStopBits(stop_bits::one),
+fFlowControl(flow_control::none),
+fInTimeout(ioservice), fOutTimeout(ioservice), fConnectTimeout(ioservice),
+fQueueSize(0), fConnectionStatus(kDisconnected)
+{
+}
Index: branches/FACT++_part_filenames/src/ConnectionUSB.h
===================================================================
--- branches/FACT++_part_filenames/src/ConnectionUSB.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ConnectionUSB.h	(revision 18732)
@@ -0,0 +1,113 @@
+#ifndef FACT_Connection
+#define FACT_Connection
+
+#include <list>
+#include <array>
+#include <string>
+
+#include <boost/asio.hpp>
+#include <boost/function.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "MessageImp.h"
+
+class ConnectionUSB : public MessageImp, public boost::asio::serial_port
+{
+private:
+    MessageImp *fLog;
+
+    std::string fAddress;
+
+    boost::asio::serial_port_base::baud_rate      fBaudRate;      // unisgned int
+    boost::asio::serial_port_base::character_size fCharacterSize; // unisgned int
+    boost::asio::serial_port_base::parity         fParity;        // unisgned int
+    boost::asio::serial_port_base::stop_bits      fStopBits;      // unisgned int
+    boost::asio::serial_port_base::flow_control   fFlowControl;   // unisgned int
+
+    enum ConnectionStatus_t
+    {
+        kDisconnected = 0,
+        kConnecting   = 1,
+        kConnected    = 2,
+    };
+
+protected:
+    boost::asio::deadline_timer   fInTimeout;
+
+private:
+    boost::asio::deadline_timer   fOutTimeout;
+    boost::asio::deadline_timer   fConnectTimeout;
+
+    size_t fQueueSize;
+
+    ConnectionStatus_t fConnectionStatus;
+
+public:
+    void SetLogStream(MessageImp *log) { fLog = log; }
+    std::ostream &Out() { return fLog ? fLog->Out() : Out(); }
+
+    // -------- Abbreviations for starting async tasks ---------
+
+    void AsyncRead(const boost::asio::mutable_buffers_1 buffers, int type=0, int counter=0);
+    void AsyncWrite(const boost::asio::const_buffers_1 &buffers);
+    void AsyncWait(boost::asio::deadline_timer &timer, int millisec,
+                   void (ConnectionUSB::*handler)(const boost::system::error_code&));
+
+protected:
+    void CloseImp(int64_t delay=0);
+
+private:
+    void ConnectImp(const boost::system::error_code& error,
+                    boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+    void HandleWriteTimeout(const boost::system::error_code &error);
+    void HandleSentData(const boost::system::error_code& error, size_t);
+    void HandleReconnectTimeout(const boost::system::error_code &error);
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    virtual void ConnectionEstablished() { }
+
+public:
+    ConnectionUSB(boost::asio::io_service& io_service, std::ostream &out);
+
+    // ------------------------ connect --------------------------
+
+    void SetEndpoint(const std::string &addr);
+
+    void Connect();
+
+    // ------------------------ close --------------------------
+    void PostClose(int64_t delay=0);
+
+    // ------------------------ write --------------------------
+    void PostMessage(const void *msg, size_t s=0);
+    void PostMessage(const std::string &cmd, size_t s=-1);
+
+    template<typename T, size_t N>
+    void PostMessage(const std::array<T, N> &msg)
+    {
+        PostMessage(msg.begin(), msg.size()*sizeof(T));
+    }
+
+    template<typename T>
+        void PostMessage(const std::vector<T> &msg)
+    {
+        PostMessage(&msg[0], msg.size()*sizeof(T));
+    }
+
+    // ------------------------ others --------------------------
+
+    virtual void HandleReceivedData(const boost::system::error_code&, size_t, int = 0, int = 0) { }
+    virtual void HandleTransmittedData(size_t) { }
+    virtual void HandleReadTimeout(const boost::system::error_code&) { }
+
+    int IsClosed() const { return !is_open(); }
+
+    bool IsConnected()  const { return fConnectionStatus==kConnected;  }
+    bool IsConnecting() const { return fConnectionStatus==kConnecting; }
+
+    std::string URL() const { return fAddress; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Console.cc
===================================================================
--- branches/FACT++_part_filenames/src/Console.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Console.cc	(revision 18732)
@@ -0,0 +1,263 @@
+// **************************************************************************
+/** @class Console
+
+@brief This is an extension to the Readline class provding buffered output
+
+This in an extension to the Readline class. It's purpose is to keep a
+buffered output stream and flush the stream either between readline entries
+(non continous mode) or continously, keeping the readline prompt as
+intact as possible.
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+#include <unistd.h>
+
+#include <sstream>
+#include <iostream>
+
+#include "tools.h"
+
+#include "ReadlineColor.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Instantiate a console stream. It will create a WindowLog object
+//! and immediatel switch off its output to the console. The default more
+//! is non-continous.
+//!
+//! @param name
+//!     The name of the program passed to the Readline constructor
+//!
+Console::Console(const char *name) : Readline(name), fContinous(false)
+{
+    fLogO.SetNullOutput();
+    fLogI.SetNullOutput();
+    fLogO.SetBacklog(true);
+    fLogI.SetBacklog(true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Flush the contents of the buffer before it is destroyed.
+//
+Console::~Console()
+{
+    // flush buffer to display before it is destroyed in its destructor
+    fLogO.Display();
+    fLogI.Display();
+}
+
+void Console::PrintReadlineError(const std::string &str)
+{
+    fLogI << kRed << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintGeneralHelp()
+{
+    return ReadlineColor::PrintGeneralHelp(fLogI, GetName());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintCommands()
+{
+    return ReadlineColor::PrintCommands(fLogI);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintKeyBindings()
+{
+    return ReadlineColor::PrintKeyBindings(fLogI);
+}
+
+void Console::Lock()
+{
+    // FIXME: Check missing
+    fLogO.Display(true);
+    fLogO.SetBacklog(false);
+    fLogO.SetNullOutput(false);
+}
+
+void Console::Unlock()
+{
+    // FIXME: Check missing
+    fLogO.SetNullOutput(true);
+    fLogO.SetBacklog(true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Processes the command provided by the Shell-class.
+//!
+//! @returns
+//!    whether a command was successfully processed or could not be found
+//
+bool Console::Process(const string &str)
+{
+    if (ReadlineColor::Process(fLogI, str))
+        return true;
+
+    if (str.substr(0, 3)==".w ")
+    {
+        Lock();
+        usleep(stoul(str.substr(3))*1000);
+        Unlock();
+        return true;
+    }
+
+    if (Readline::Process(str))
+        return true;
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Before readline starts flush the buffer to display all stuff which was
+//! buffered since the last readline call returned.
+//
+void Console::Startup()
+{
+    // Call readline's startup (just in case, it is empty)
+    Readline::Startup();
+
+    // First flush the buffer of the stream which is synchronous
+    // with the prompt
+    fLogI.Display(true);
+
+    // Now flush the stream which is asychronous
+    fLogO.Display(true);
+
+    // The order has the advantage that output initiated by the prompt
+    // is not interrupter by the synchronous stream
+}
+
+// --------------------------------------------------------------------------
+//
+//! Flush the buffer if we are in continous mode, and call Readline's
+//! EventHook to update the prompt.
+//
+void Console::EventHook(bool)
+{
+    // If the output is continous and we are going to output something
+    // first jump back to the beginning of the line (well, that
+    // doesn't work well if the input line is already two lines)
+    // and then flush the buffer.
+    const bool newline = fContinous && fLogO.GetSizeBacklog()>0;
+    if (newline)
+    {
+        // Clear the line we are going to overwrite
+        std::cout << "\r\033[0K";
+        fLogO.Display(true);
+    }
+
+    // Call Readline's EventHook to update the prompt
+    // and signal readline so that a new prompt is displayed
+    Readline::EventHook(newline);
+}
+
+string Console::GetLinePrompt() const
+{
+    const string siz = fLogO.GetSizeStr();
+
+    ostringstream str;
+    str << '[' << GetLine();
+    return fContinous ? str.str()+']' : str.str()+':'+siz+']';
+}
+
+// --------------------------------------------------------------------------
+//
+//! Before Readline::Run() is called the buffer is flushed as well as
+//! after the Run() loop has exited.
+//! command processing. This keeps things as seperated as possible,
+//! although there is no gurantee.
+//
+void Console::Run(const char *)
+{
+    // Flush the buffer before we print the boot message
+    fLogO.Display(true);
+
+    ReadlineColor::PrintBootMsg(fLogI, GetName());
+
+    // Flush the buffer before we start out readline loop
+    fLogI.Display(true);
+    fLogO.Display(true);
+
+    // Now run readlines main loop
+    Readline::Run();
+
+    // flush buffer to display
+    fLogI.Display(true);
+    fLogO.Display(true);
+}
+
+// **************************************************************************
+/** @class ConsoleStream
+
+@brief This is an extension to the Readline class provding a colored output
+
+This in an extension to the Readline class. It's purpose is just to have a
+colored output stream available. It's main idea is that it is used in
+environments without user interaction as a replacement the Console class.
+This is interesting to be able to do everything identical as if Console
+would be used, but Run() does not prompt but just wait until Stop()
+was called. The advantage is that some functions of Readline can be used
+like Execute and the history (just for Execute() commands of course)
+
+ */
+// **************************************************************************
+
+ConsoleStream::~ConsoleStream()
+{
+    fLogO.Display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Instantiate a console stream. It will create a single WindowLog object
+//! which is returned as input and output stream.
+//!
+//! @param name
+//!     The name of the program passed to the Readline constructor
+//!
+ConsoleStream::ConsoleStream(const char *name) : Readline(name)
+{
+    fLogO.SetBacklog(false);
+    fLogO.SetNullOutput(false);
+    ReadlineColor::PrintBootMsg(fLogO, GetName(), false);
+}
+
+void ConsoleStream::PrintReadlineError(const std::string &str)
+{
+    fLogO << kRed << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just usleep until Stop() was called.
+//
+void ConsoleStream::Run(const char *)
+{
+    while (!IsStopped())
+    {
+        const string buf = GetExternalInput();
+        SetExternalInput("");
+        if (!buf.empty())
+            ProcessLine(buf);
+
+        usleep(100000);
+    }
+}
Index: branches/FACT++_part_filenames/src/Console.h
===================================================================
--- branches/FACT++_part_filenames/src/Console.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Console.h	(revision 18732)
@@ -0,0 +1,75 @@
+#ifndef FACT_Console
+#define FACT_Console
+
+#include "Readline.h"
+#include "WindowLog.h"
+
+class ConsoleStream : public Readline
+{
+private:
+    WindowLog fLogO;
+
+    void PrintReadlineError(const std::string &str);
+
+public:
+    ConsoleStream(const char *name);
+    ~ConsoleStream();
+
+    void SetNullOutput(bool null) { fLogO.SetNullOutput(null); }
+
+    // I/O
+    WindowLog &GetStreamOut() { return fLogO; }
+    WindowLog &GetStreamIn()  { return fLogO; }
+
+    const WindowLog &GetStreamOut() const { return fLogO; }
+    const WindowLog &GetStreamIn()  const { return fLogO; }
+
+    void Lock() { }
+    void Run(const char * = 0);
+    void Unlock() { }
+};
+
+
+
+class Console : public Readline
+{
+private:
+    WindowLog fLogO;
+    WindowLog fLogI;
+
+    bool fContinous;
+
+    void PrintReadlineError(const std::string &str);
+
+public:
+    Console(const char *name);
+    ~Console();
+
+    // Console
+    void SetContinous(bool cont) { fContinous = cont; }
+    bool IsContinous() const { return fContinous; }
+
+    // I/O
+    WindowLog &GetStreamOut() { return fLogO; }
+    WindowLog &GetStreamIn()  { return fLogI; }
+
+    const WindowLog &GetStreamOut() const { return fLogO; }
+    const WindowLog &GetStreamIn()  const { return fLogI; }
+
+    // Readline
+    bool PrintGeneralHelp();
+    bool PrintCommands();
+    bool PrintKeyBindings();
+
+    void Lock();
+    bool Process(const std::string &str);
+    void Unlock();
+
+    std::string GetLinePrompt() const;
+
+    void Startup();
+    void EventHook(bool);
+    void Run(const char * = 0);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Converter.cc
===================================================================
--- branches/FACT++_part_filenames/src/Converter.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Converter.cc	(revision 18732)
@@ -0,0 +1,1089 @@
+// **************************************************************************
+/** @class Converter
+
+@brief A compiler for the DIM data format string
+
+The Converter class interprets arguments in a string accoring to the
+given format definition and produces a corresponding memory block from it
+which can be attached to an event later.
+
+The format is given according to the Dim format description:
+
+  The format parameter specifies the contents of the structure in the
+  form T:N[;T:N]*[;T] where T is the item type: (I)nteger, (C)haracter,
+  (L)ong, (S)hort, (F)loat, (D)ouble, X(tra long) and N is the
+  number of such items. The type alone at the end means all following items
+  are of the same type. Example: "I:3;F:2;C" means 3 Integers, 2 Floats and
+  characters until the end. The format parameter is used for
+  communicating between different platforms.
+
+Note, that the strange notation T:N[;T:N]*[;T] is meant to be a regular
+expression. An Xtra-long is a 'long long'.
+
+Since Dim itself never really interpretes the format string, the programmer
+is responsible to make sure that the delivered data and the interpretation
+is consistent. Therefore the provided class can be of some help.
+
+For example:
+
+\code
+   Converter c(cout, "I:1;F:2;I:2", );
+   vector<char> v = c.GetVector("COMMAND 1 2.5 4.2 3 4");
+\endcode
+
+would produce a 20 byte data block with the integers 1, the floats
+2.5 and 4.2, and the intergers 3 and 4, in this order.
+
+The opposite direction is also possible
+
+\code
+   Converter c(cout, "I:1;F:2;I:2");
+   cout << c.GetString(pointer, size) << endl;
+ \endcode
+
+Other conversion functions also exist.
+
+To check if the compilation of the format string was successfull
+the valid() member functio is provided.
+
+The format parameter \b W(ord) is dedicated to this kind of conversion and
+not understood by Dim. In addition there are \b O(ptions) which are like
+Words but can be omitted. They should only be used at the end of the string.
+Both can be encapsulated in quotationmarks '"'. Nested quotationmarks
+are not supported. \b B(ool) is also special. It evaluates true/false,
+yes/no, on/off, 1/0.
+
+The non-DIM like format options can be switched on and off by using the
+strict argument in the constructor. In general DimCommands can use these
+options, but DimServices not.
+
+@remark Note that all values are interpreted as signed, except the single
+char (e.g. C:5)
+
+*/
+// **************************************************************************
+#include "Converter.h"
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+
+#include <cctype>    // std::tolower
+#include <algorithm> // std::transform
+
+#include <boost/regex.hpp>
+#include <boost/tokenizer.hpp>
+
+#include "tools.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! This function is supposed to remove all whitespaces from the format
+//! string to allow easier regular expressions later.
+//!
+//! @param s
+//!     string to be cleaned
+//!
+//! @returns
+//!     string cleaned from whitespaces
+//
+std::string Converter::Clean(std::string s)
+{
+    while (1)
+    {
+        const size_t pos = s.find_last_of(' ');
+        if (pos==string::npos)
+            break;
+        s.erase(pos, pos+1);
+    }
+
+    return s;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of val in a binary representation to the
+//! vector v
+//!
+//! @tparam
+//!     data type of the variable which should be added
+//!
+//! @param val
+//!     reference to the data
+//!
+//! @param v
+//!     vector<char> to which the binary copy should be added
+//!
+template <class T>
+void Converter::GetBinImp(std::vector<char> &v, const T &val) const
+{
+    wout << " (" << val << ")";
+
+    v.insert(v.end(),
+             reinterpret_cast<const char*>(&val),
+             reinterpret_cast<const char*>(&val+1));
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of val as a boost::any object to the
+//! vector v
+//!
+//! @tparam
+//!     data type of the variable which should be added
+//!
+//! @param val
+//!     reference to the data
+//!
+//! @param v
+//!     vector<boost::any> to which the value should be added
+//!
+template <class T>
+void Converter::GetBinImp(std::vector<boost::any> &v, const T &val) const
+{
+    wout << " (" << val << ")";
+
+    v.push_back(val);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of the provided string at the end of the vector v.
+//! vector v
+//!
+//! @param val
+//!     reference to the string
+//!
+//! @param v
+//!     vector<char> to which the value should be added
+//!
+void Converter::GetBinString(std::vector<char> &v, const string &val) const
+{
+    wout << " (" << val << ")";
+
+    v.insert(v.end(), val.begin(), val.end()+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of the provided string at the end of the vector v.
+//! vector v
+//!
+//! @param val
+//!     reference to the string
+//!
+//! @param v
+//!     vector<boost::any> to which the value should be added
+//!
+void Converter::GetBinString(std::vector<boost::any> &v, const string &val) const
+{
+    wout << " (" << val << ")";
+
+    v.push_back(val);
+    v.push_back('\n');
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into the provided type.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @tparam
+//!     Type of the data to be returned
+//!
+//! @returns
+//!     The interpreted data
+//!
+template <class T>
+T Converter::Get(std::stringstream &line) const
+{
+    char c;
+    line >> c;
+    if (!line)
+        return T();
+
+    if (c=='0')
+    {
+        if (line.peek()==-1)
+        {
+            line.clear(ios::eofbit);
+            return 0;
+        }
+
+        if (line.peek()=='x')
+        {
+            line >> c;
+            line >> hex;
+        }
+        else
+        {
+            line.unget();
+            line >> oct;
+        }
+    }
+    else
+    {
+        line.unget();
+        line >> dec;
+    }
+
+
+    T val;
+    line >> val;
+    return val;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into bool. It allows to use lexical
+//! boolean representations like yes/no, on/off, true/false and of
+//! course 0/1. If the conversion fails the failbit is set.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The boolean. 0 in case of failure
+//!
+bool Converter::GetBool(std::stringstream &line) const
+{
+    string buf;
+    line >> buf;
+    transform(buf.begin(), buf.end(), buf.begin(), ::tolower);
+
+    if (buf=="yes" || buf=="true" || buf=="on" || buf=="1")
+        return true;
+
+    if (buf=="no" || buf=="false" || buf=="off" || buf=="0")
+        return false;
+
+    line.clear(ios::failbit);
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into a string. Leading whitespaces are
+//! skipped. Everything up to the next whitespace is returned.
+//! strings can be encapsulated into escape characters ("). Note, that
+//! they cannot be nested.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The string
+//!
+string Converter::GetString(std::stringstream &line) const
+{
+    while (line.peek()==' ')
+        line.get();
+
+    string buf;
+    if (line.peek()=='\"')
+    {
+        line.get();
+        getline(line, buf, '\"');
+        if (line.peek()==-1)
+            line.clear(ios::eofbit);
+    }
+    else
+        line >> buf;
+
+    return buf;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into a string. Leading whitespaces are
+//! skipped. Everything until the end-of-line is returned. A trailing
+//! \0 is added.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The string
+//!
+string Converter::GetStringEol(stringstream &line) const
+{
+    line >> noskipws;
+
+    const istream_iterator<char> eol; // end-of-line iterator
+    const string text(istream_iterator<char>(line), eol);
+
+    string str = Tools::Trim(text);
+    if (str.length()>=2)
+    {
+        const char b = str[0];
+        const char e = str[str.length()-1];
+
+        if ((b=='\"' && e=='\"') || (b=='\'' && e=='\''))
+        {
+            typedef boost::escaped_list_separator<char> separator;
+            const boost::tokenizer<separator> tok(str, separator("\\", " ", "\"'"));
+
+            str = *tok.begin();
+        }
+    }
+
+    return str + '\0';
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from a binary block into a string. The type of the expected
+//! value is defined by the template parameter.
+//!
+//! @param ptr
+//!     A refrenece to the pointer of the binary representation to be
+//!     interpreted. The pointer is incremented by the sizeof the type.
+//!
+//! @tparam T
+//!     Expected type
+//!
+//! @returns
+//!     The string
+//!
+template<class T>
+string Converter::GetString(const char* &ptr) const
+{
+    const T &t = *reinterpret_cast<const T*>(ptr);
+
+    ostringstream stream;
+    stream << t;
+    ptr += sizeof(T);
+
+    return stream.str();
+}
+
+template<char>
+string Converter::GetString(const char* &ptr) const
+{
+    ostringstream stream;
+    stream << (int64_t)*ptr;
+    ptr += 1;
+
+    return stream.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Convert the pointer using GetString into a string and add it (prefixed
+//! by a whaitespace) to the given string.
+//!
+//! @param str
+//!     Reference to the string to which the ptr should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the sze of the template argument
+//!
+//! @tparam T
+//!     Type as which the binary data should be interpreted
+//!
+template<class T>
+void Converter::Add(string &str, const char* &ptr) const
+{
+    str += ' ' + GetString<T>(ptr);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Convert the pointer into a boost::any object and add it to the
+//! provided vector
+//!
+//! @param vec
+//!     Vector to which the boost::any object should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+//! @tparam T
+//!     Type as which the binary data should be interpreted
+//!
+template<class T>
+void Converter::Add(vector<boost::any> &vec, const char* &ptr) const
+{
+    vec.push_back(*reinterpret_cast<const T*>(ptr));
+    ptr += sizeof(T);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add the string pointed to by ptr to the given string.
+//!
+//! @param str
+//!     Reference to the string to which the ptr should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+void Converter::AddString(string &str, const char* &ptr) const
+{
+    const string txt(ptr);
+    str += ' '+txt;
+    ptr += txt.length()+1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add the string pointed to by ptr as boost::any to the provided vector
+//!
+//! @param vec
+//!     Vector to which the boost::any object should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+void Converter::AddString(vector<boost::any> &vec, const char* &ptr) const
+{
+    const string txt(ptr);
+    vec.push_back(txt);
+    ptr += txt.length()+1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Compiles the format string into fList. See Compile() for more details.
+//!
+//! @param out
+//!     Output stream to which possible logging is redirected
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::Converter(std::ostream &out, const std::string &fmt, bool strict)
+: wout(out), fFormat(Clean(fmt)), fList(Compile(out, fmt, strict))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Compiles the format string into fList.
+//!
+//! Output by default is redirected to cout.
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::Converter(const std::string &fmt, bool strict)
+: wout(cout), fFormat(Clean(fmt)), fList(Compile(fmt, strict))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts the provided format string into a vector.
+//!
+//! @tparam T
+//!     Kind of data to be returned. This can either be boost::any objects
+//!     or a bnary data-block (char).
+//!
+//! @param str
+//!     Data to be converted. For details see class reference
+//!
+//! @returns
+//!    A vector of the given template type containing the arguments. In
+//!    case of failure an empty vector is returned.
+//!
+//! @throws
+//!    std::runtime_error if the conversion was not successfull
+//!
+template <class T>
+vector<T> Converter::Get(const std::string &str) const
+{
+    if (!valid())
+        throw runtime_error("Compiled format invalid!");
+
+    // If the format is empty we are already done
+    if (empty() && str.empty())
+    {
+        wout << endl;
+        return vector<T>();
+    }
+
+    int arg = 0;
+    stringstream line(str);
+
+    vector<T> data;
+
+    for (Converter::FormatList::const_iterator i=fList.begin(); i<fList.end()-1; i++)
+    {
+        if (*i->first.first == typeid(string))
+        {
+            GetBinString(data, GetStringEol(line));
+            line.clear(ios::eofbit);
+            continue;
+        }
+
+        // Get as many items from the input line as requested
+        for (int j=0; j<i->second.first; j++)
+        {
+            switch (i->first.first->name()[0])
+            {
+            case 'b': GetBinImp(data, GetBool(line)); break;
+            case 's': GetBinImp(data, Get<short>    (line)); break;
+            case 'i': GetBinImp(data, Get<int>      (line)); break;
+            case 'l': GetBinImp(data, Get<long>     (line)); break;
+            case 'f': GetBinImp(data, Get<float>    (line)); break;
+            case 'd': GetBinImp(data, Get<double>   (line)); break;
+            case 'x': GetBinImp(data, Get<long long>(line)); break;
+            case 'c':
+                {
+                    const unsigned short val = Get<unsigned short>(line);
+                    if (val>255)
+                        line.setstate(ios::failbit);
+                    GetBinImp(data, static_cast<unsigned char>(val));
+                }
+                break;
+            case 'N':
+                GetBinString(data, GetString(line));
+                if (*i->first.first == typeid(O))
+                    line.clear(ios::goodbit|(line.rdstate()&ios::eofbit));
+                break;
+            default:
+                // This should never happen!
+                throw runtime_error("Format '"+string(i->first.first->name())+" not supported!");
+            }
+
+            arg++;
+        }
+
+        if (!line)
+            break;
+    }
+    wout << endl;
+
+    // Something wrong with the conversion (e.g. 5.5 for an int)
+    if (line.fail() && !line.eof())
+    {
+        line.clear(); // This is necesasary to get a proper response from tellg()
+
+        ostringstream err;
+        err << "Error converting argument at " << arg << " [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    // Not enough arguments, we have not reached the end
+    if (line.fail() && line.eof())
+    {
+        line.clear();
+
+        ostringstream err;
+        err << "Not enough arguments [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())+1) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    // Too many arguments, we have not reached the end
+    // Unfortunately, this can also mean that there is something
+    // wrong with the last argument
+    if (line.good() && !line.eof())
+    {
+        ostringstream err;
+        err << "More arguments available than expected [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())+1) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    return data;
+
+}
+
+std::vector<boost::any> Converter::GetAny(const std::string &str) const
+{
+    return Get<boost::any>(str);
+}
+
+std::vector<char> Converter::GetVector(const std::string &str) const
+{
+    return Get<char>(str);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts the provided data block into a vector of boost::any or
+//! a string.
+//!
+//! @tparam T
+//!     Kind of data to be returned. This can either be boost::any objects
+//!     or a string
+//!
+//! @returns
+//!    A vector of the given template type containing the arguments. In
+//!    case of failure an empty vector is returned.
+//!
+//! @throws
+//!    std::runtime_error if the conversion was not successfull
+//!
+template<class T>
+T Converter::Get(const void *dat, size_t size) const
+{
+    if (!valid())
+        throw runtime_error("Compiled format invalid!");
+
+    if (dat==0)
+        throw runtime_error("Data pointer == NULL!");
+
+    const char *ptr = reinterpret_cast<const char *>(dat);
+
+    T text;
+    for (Converter::FormatList::const_iterator i=fList.begin(); i<fList.end()-1; i++)
+    {
+        if (ptr-size>dat)
+        {
+            ostringstream err;
+            err << "Format description [fmt=" << fFormat << "|size=" << GetSize() << "] exceeds available data size (" << size << ")";
+            throw runtime_error(err.str());
+        }
+
+        if (*i->first.first == typeid(string))
+        {
+            if (size>0)
+                AddString(text, ptr);
+            if (ptr-size<=dat)
+                return text;
+            break;
+        }
+
+        // Get as many items from the input line as requested
+        for (int j=0; j<i->second.first; j++)
+        {
+            switch (i->first.first->name()[0])
+            {
+            case 'b': Add<bool>     (text, ptr); break;
+            case 'c': Add<char>     (text, ptr); break;
+            case 's': Add<short>    (text, ptr); break;
+            case 'i': Add<int>      (text, ptr); break;
+            case 'l': Add<long>     (text, ptr); break;
+            case 'f': Add<float>    (text, ptr); break;
+            case 'd': Add<double>   (text, ptr); break;
+            case 'x': Add<long long>(text, ptr); break;
+            case 'N': AddString(text, ptr);      break;
+
+            case 'v':
+                // This should never happen!
+                throw runtime_error("Type 'void' not supported!");
+            default:
+                throw runtime_error("TypeId '"+string(i->first.first->name())+"' not known!");
+            }
+        }
+    }
+
+    if (ptr-size!=dat)
+    {
+        ostringstream err;
+        err << "Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "|size=" << GetSize() <<"]";
+        throw runtime_error(err.str());
+    }
+
+    return text;
+}
+
+std::vector<boost::any> Converter::GetAny(const void *dat, size_t size) const
+{
+    return Get<vector<boost::any>>(dat, size);
+}
+
+std::vector<char> Converter::GetVector(const void *dat, size_t size) const
+{
+    const string ref = GetString(dat, size);
+
+    vector<char> data;
+    data.insert(data.begin(), ref.begin()+1, ref.end());
+    data.push_back(0);
+
+    return data;
+}
+
+string Converter::GetString(const void *dat, size_t size) const
+{
+    const string s = Get<string>(dat, size);
+    return s.empty() ? s : s.substr(1);
+}
+
+template<class T>
+Converter::Type Converter::GetType()
+{
+    Type t;
+    t.first  = &typeid(T);
+    t.second = sizeof(T);
+    return t;
+}
+
+template<class T>
+Converter::Type Converter::GetVoid()
+{
+    Type t;
+    t.first  = &typeid(T);
+    t.second = 0;
+    return t;
+}
+
+// --------------------------------------------------------------------------
+//
+//! static function to compile a format string.
+//!
+//! @param out
+//!     Output stream to which possible logging is redirected
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::FormatList Converter::Compile(std::ostream &out, const std::string &fmt, bool strict)
+{
+    ostringstream text;
+
+    // Access both, the data and the format through a stringstream
+    stringstream stream(fmt);
+
+    // For better performance we could use sregex
+    static const boost::regex expr1("^([CSILFDXBOW])(:([1-9]+[0-9]*))?$");
+    static const boost::regex expr2("^([CSILFDX])(:([1-9]+[0-9]*))?$");
+
+    FormatList list;
+    Format   format;
+
+    // Tokenize the format
+    string buffer;
+    while (getline(stream, buffer, ';'))
+    {
+        boost::smatch what;
+        if (!boost::regex_match(buffer, what, strict?expr2:expr1))
+        {
+            out << kRed << "Wrong format string '" << buffer << "'!" << endl;
+            return FormatList();
+        }
+
+        const string t = what[1]; // type id
+        const string n = what[3]; // counter
+
+        const int cnt = n.empty() ? 0 : stoi(n);
+
+        // if the :N part was not given assume 1
+        format.second.first = cnt == 0 ? 1 : cnt;
+
+        /*
+        if (strict && t[0]=='C' && cnt>0)
+        {
+            out << kRed << "Dim doesn't support the format C with N>0!" << endl;
+            return FormatList();
+        }*/
+
+        // Check if the format is just C (without a number)
+        // That would mean that it is a \0 terminated string
+        if (t[0]=='C' && cnt==0)
+        {
+            format.first = GetType<string>();
+            list.push_back(format);
+            format.second.second = 0; // end position not known
+            break;
+        }
+
+        // Get as many items from the input line as requested
+        switch (t[0])
+        {
+        case 'B':  format.first = GetType<bool>();      break;
+        case 'C':  format.first = GetType<char>();      break;
+        case 'S':  format.first = GetType<short>();     break;
+        case 'I':  format.first = GetType<int>();       break;
+        case 'L':  format.first = GetType<long>();      break;
+        case 'F':  format.first = GetType<float>();     break;
+        case 'D':  format.first = GetType<double>();    break;
+        case 'X':  format.first = GetType<long long>(); break;
+        case 'O':  format.first = GetVoid<O>();         break;
+        case 'W':  format.first = GetVoid<W>();         break;
+        default:
+            // This should never happen!
+            out << kRed << "Format '" << t[0] << " not known!" << endl;
+            return list;
+        }
+
+        list.push_back(format);
+        format.second.second += format.first.second * format.second.first;
+    }
+
+    format.first = GetVoid<void>();
+    format.second.first = 0;
+
+    list.push_back(format);
+
+    return list;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Same as Compile(ostream&,string&,bool) but cout is used as the default
+//! output stream.
+//!
+//!
+Converter::FormatList Converter::Compile(const std::string &fmt, bool strict)
+{
+    return Compile(cout, fmt, strict);
+}
+
+vector<string> Converter::Regex(const string &expr, const string &line)
+{
+    const boost::regex reg(expr);
+
+    boost::smatch what;
+    if (!boost::regex_match(line, what, reg, boost::match_extra))
+        return vector<string>();
+
+    vector<string> ret;
+    for (unsigned int i=0; i<what.size(); i++)
+        ret.push_back(what[i]);
+
+    return ret;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param dest
+//!    Array to which the destination data is written
+//! @param src
+//!    Array with the source data according to the format stored in the
+//!    Converter
+//! @param size
+//!    size of the destination data in bytes
+//!
+void Converter::ToFits(void *dest, const void *src, size_t size) const
+{
+   // crawl through the src buffer and copy the data appropriately to the
+   // destination buffer
+   // Assumption: the string is always last. This way we
+   // use the provided size to determine the number
+   // of character to copy
+
+   char       *charDest = static_cast<char*>(dest);
+   const char *charSrc  = static_cast<const char*>(src);
+
+   // We skip the last element 'v'
+   for (Converter::FormatList::const_iterator i=fList.begin(); i!=fList.end()-1; i++)
+   {
+       /*
+        // For speed reasons we don't do a check in the loop
+       if (charDest-size>dest || charSrc-size>src)
+       {
+           ostringstream err;
+           err << "Format description [fmt=" << fFormat << "] exceeds available data size (" << size << ")";
+           throw runtime_error(err.str());
+       }
+       */
+
+       // Skip strings (must be the last, so we could just skip it)
+       const char type = i->first.first->name()[0];
+       if (type=='S')
+       {
+           charSrc += strlen(charSrc)+1;
+           continue;
+       }
+
+       const int s = i->first.second;      // size of element
+       const int n = i->second.first;      // number of elements
+
+       // Check if there are types with unknown sizes
+       if (s==0 || n==0)
+           throw runtime_error(string("Type '")+type+"' not supported converting to FITS.");
+
+       // Let the compiler do some optimization
+       switch (s)
+       {
+       case 1: memcpy(charDest, charSrc, s*n); charSrc+=s*n; charDest+=s*n; break;
+       case 2: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+2, charDest); charSrc+=2; charDest+=2; } break;
+       case 4: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+4, charDest); charSrc+=4; charDest+=4; } break;
+       case 8: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+8, charDest); charSrc+=8; charDest+=8; } break;
+       }
+   }
+
+   if (charDest-size!=dest/* || charSrc-size!=src*/)
+   {
+       ostringstream err;
+       err << "ToFits - Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "|size=" << GetSize() << "]";
+       throw runtime_error(err.str());
+   }
+}
+
+vector<string> Converter::ToStrings(const void *src/*, size_t size*/) const
+{
+   const char *charSrc = static_cast<const char*>(src);
+
+   vector<string> rc;
+
+   for (Converter::FormatList::const_iterator i=fList.begin(); i!=fList.end(); i++)
+   {
+       /*
+       if (charSrc-size>src)
+       {
+           ostringstream err;
+           err << "Format description [fmt=" << fFormat << "] exceeds available data size (" << size << ")";
+           throw runtime_error(err.str());
+       }*/
+
+       const char type = i->first.first->name()[0];
+       if (type=='v')
+           break;
+
+       if (type=='S' || type=='N')
+       {
+           const string str(charSrc);
+           rc.push_back(str);
+           charSrc += str.length()+1;
+           continue;
+       }
+
+       // string types
+       //if (string("bsilfdxc").find_first_of(type)==string::npos)
+       //    throw runtime_error(string("Type '")+type+"' not supported converting to FITS.");
+
+       const int s = i->first.second;      // size of element
+       const int n = i->second.first;      // number of elements
+
+       charSrc  += s*n;
+   }
+
+   return rc;
+
+   /*
+   if (charSrc-size!=src)
+   {
+       ostringstream err;
+       err << "Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "]";
+       throw runtime_error(err.str());
+   }*/
+}
+
+vector<char> Converter::ToFits(const void *src, size_t size) const
+{
+    vector<char> dest(size);
+    ToFits(dest.data(), src, size);
+    return dest;
+}
+
+string Converter::ToFormat(const vector<string> &fits)
+{
+    ostringstream str;
+    for (vector<string>::const_iterator it=fits.begin(); it!=fits.end(); it++)
+    {
+        size_t id=0;
+        int n;
+
+        try
+        {
+            n = stoi(*it, &id);
+        }
+        catch (exception&)
+        {
+            n  = 1;
+        }
+
+        if (n==0)
+            continue;
+
+        switch ((*it)[id])
+        {
+        case 'A':
+        case 'L': 
+        case 'B': str << ";C:" << n; break;
+        case 'J': str << ";I:" << n; break;
+        case 'I': str << ";S:" << n; break;
+        case 'K': str << ";X:" << n; break;
+        case 'E': str << ";F:" << n; break;
+        case 'D': str << ";D:" << n; break;
+        default:
+            throw runtime_error("ToFormat - id not known.");
+        }
+    }
+
+    return str.str().substr(1);
+}
+
+vector<string> Converter::GetFitsFormat() const
+{
+    //we've got a nice structure describing the format of this service's messages.
+    //Let's create the appropriate FITS columns
+    vector<string> vec;
+    for (FormatList::const_iterator it=fList.begin(); it!=fList.end(); it++)
+    {
+         ostringstream dataQualifier;
+         dataQualifier << it->second.first;
+
+         switch (it->first.first->name()[0])
+         {
+         case 'c': dataQualifier << 'B'; break;
+         case 's': dataQualifier << 'I'; break;
+         case 'i': dataQualifier << 'J'; break;
+         case 'l': dataQualifier << 'J'; break;
+         case 'f': dataQualifier << 'E'; break;
+         case 'd': dataQualifier << 'D'; break;
+         case 'x': dataQualifier << 'K'; break;
+         case 'v':
+         case 'S': //we skip the variable length strings
+         case 'N':
+             continue;
+
+         default:
+             throw runtime_error(string("GetFitsFormat - unknown FITS format [")+it->first.first->name()[0]+"]");
+         };
+
+         vec.push_back(dataQualifier.str());
+    }
+
+    return vec;
+}
+
+void Converter::Print(std::ostream &out) const
+{
+    for (FormatList::const_iterator i=fList.begin(); i!=fList.end(); i++)
+    {
+        out << "Type=" << i->first.first->name() << "[" << i->first.second << "]  ";
+        out << "N=" << i->second.first << "  ";
+        out << "offset=" << i->second.second << endl;
+    }
+}
+
+void Converter::Print() const
+{
+    return Print(cout);
+}
Index: branches/FACT++_part_filenames/src/Converter.h
===================================================================
--- branches/FACT++_part_filenames/src/Converter.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Converter.h	(revision 18732)
@@ -0,0 +1,179 @@
+#ifndef FACT_Converter
+#define FACT_Converter
+
+#include <math.h>
+
+#include <vector>
+#include <iomanip>
+#include <sstream>
+
+#include <boost/any.hpp>
+
+#include <stdexcept>
+
+#include <iostream>
+
+class Converter
+{
+public:
+    typedef std::pair<const std::type_info *, int> Type;
+    typedef std::pair<int, int>                    Offset;
+    typedef std::pair<Type, Offset>                Format;
+    typedef std::vector<Format>                    FormatList;
+
+    struct O { };
+    struct W { };
+
+    static std::string Clean(std::string s);
+
+private:
+    std::ostream &wout;        /// ostream to which output is redirected
+
+    const std::string fFormat; /// Original format string
+    const FormatList  fList;   /// Compiled format description
+
+    template <class T>
+        T Get(std::stringstream &line) const;
+
+    bool        GetBool(std::stringstream &line) const;
+    std::string GetString(std::stringstream &line) const;
+    std::string GetStringEol(std::stringstream &line) const;
+
+    template<class T>
+        void GetBinImp(std::vector<char> &v, const T &val) const;
+    template<class T>
+        void GetBinImp(std::vector<boost::any> &v, const T &val) const;
+
+    void GetBinString(std::vector<char> &v, const std::string &val) const;
+    void GetBinString(std::vector<boost::any> &v, const std::string &val) const;
+
+    template<class T>
+        std::string GetString(const char *&data) const;
+    template<char>
+        std::string GetString(const char* &ptr) const;
+
+    template<class T>
+        static Type GetType();
+    template<class T>
+        static Type GetVoid();
+
+    template <class T>
+        std::vector<T> Get(const std::string &str) const;
+    template <class T>
+        T Get(const void *d, size_t size) const;
+
+
+
+    template<class T>
+        void Add(std::string &str, const char* &ptr) const;
+    void AddString(std::string &str, const char* &ptr) const;
+    template<class T>
+        void Add(std::vector<boost::any> &vec, const char* &ptr) const;
+    void AddString(std::vector<boost::any> &vec, const char* &ptr) const;
+
+
+public:
+    Converter(std::ostream &out, const std::string &fmt, bool strict=true);
+    Converter(const std::string &fmt, bool strict=true);
+
+    /// @returns whether the interpreted format was valid but empty ("")
+    bool empty() const { return fList.size()==1 && fList.back().first.second==0; }
+
+    /// @returns whether the compilation was successfull
+    bool valid() const { return !fList.empty() && fList.back().first.second==0; }
+
+    /// @returns true if the compilation failed
+    bool operator!() const { return !valid(); }
+
+    const FormatList &GetList() const { return fList; }
+    size_t GetSize() const { return fList.size()==0 ? 0 : fList.back().second.second; }
+
+    static FormatList Compile(std::ostream &out, const std::string &fmt, bool strict=false);
+    static FormatList Compile(const std::string &fmt, bool strict=false);
+
+    std::string             GetString(const void *d, size_t size) const;
+    std::vector<char>       GetVector(const void *d, size_t size) const;
+    std::vector<boost::any> GetAny(const void *d, size_t size) const;
+
+    std::vector<boost::any> GetAny(const std::string &str) const;
+    std::vector<char>       GetVector(const std::string &str) const;
+
+    std::vector<std::string> ToStrings(const void *src/*, size_t size*/) const;
+    void ToFits(void* dest, const void* src, size_t size) const;
+
+    std::vector<char> ToFits(const void* src, size_t size) const; 
+    std::vector<std::string> GetFitsFormat() const;
+
+    static std::string ToFormat(const std::vector<std::string> &fits);
+
+    template<typename T>
+        static std::string GetHex(const void *dat, size_t size, size_t col=0, bool prefix=true)
+    {
+        if (size%sizeof(T)!=0)
+            throw std::runtime_error("GetHex: Total not dividable by typesize.");
+
+        const T *ptr = reinterpret_cast<const T*>(dat);
+
+        std::ostringstream text;
+        text << std::hex;
+
+        const size_t w = nearbyint(ceil(log2(size+1)))/4+1;
+
+        for (size_t i=0; i<size/sizeof(T); i++)
+        {
+            if (prefix && col!=0 && i%col==0)
+                text << std::setfill('0') << std::setw(w) << i << "| ";
+
+            text << std::setfill('0') << std::setw(2*sizeof(T));
+            text << (unsigned int)ptr[i] << ':';
+
+            if (col!=0 && i%col==col-1)
+                text << '\n';
+
+        }
+
+        return text.str();
+    }
+
+    template<typename T, typename S>
+        static std::string GetHex(const S &s, size_t col=0, bool prefix=true)
+    {
+        return GetHex<T>(&s, sizeof(S), col, prefix);
+    }
+
+    void Print(std::ostream &out) const;
+    void Print() const;
+
+    static std::vector<std::string> Regex(const std::string &expr, const std::string &line);
+};
+
+#endif
+
+// ***************************************************************************
+/** @template GetHex(const void *dat, size_t size, size_t col, bool prefix)
+
+Converts from a binary block into a hex representation.
+
+@param dat
+    Pointer to the data block
+
+@param size
+    Size of the data block (in bytes)
+
+@param col
+    Number of columns before new line (zero <default> to write a
+    continous stream
+
+@param prefix
+    Boolean which defines whether each line should be prefixed with a counter,
+    the default is true. It is ignored if col==0
+
+@tparam T
+    type to which the data should be converted. Most usefull types are
+    unsigned byte, unsigned short, unsigned int, uint8_t, uint16_t, ...
+
+@returns
+    The string
+
+**/
+// ***************************************************************************
Index: branches/FACT++_part_filenames/src/DataCalib.cc
===================================================================
--- branches/FACT++_part_filenames/src/DataCalib.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataCalib.cc	(revision 18732)
@@ -0,0 +1,362 @@
+#include "DataCalib.h"
+
+#include "EventBuilder.h"
+#include "FitsFile.h"
+#include "DimDescriptionService.h"
+
+#include "externals/fits.h"
+
+using namespace std;
+
+DrsCalibration DataCalib::fData;
+bool DataCalib::fProcessing = false;
+vector<float> DataCalib::fStats(1440*1024*6+160*1024*2+4);
+
+void DataCalib::Restart()
+{
+    fData.Clear();
+
+    reinterpret_cast<uint32_t*>(fStats.data())[0] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[1] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[2] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[3] = 0;
+
+    int i=0;
+    while (i<1024*1440*2+4)  // Set mean and RMS to 0
+        fStats[i++] = 0;
+    while (i<1024*1440*3+4)
+        fStats[i++] = 2000./4096; // Set mean to 0.5
+    while (i<1440*1024*6+160*1024*2+4)
+        fStats[i++] = 0;   // Set everything else to 0
+
+    fProcessing = false;
+}
+
+bool DataCalib::ResetTrgOff(DimDescribedService &dim, DimDescribedService &runs)
+{
+    if (fData.fStep!=3)
+        return false;
+
+    for (int i=1024*1440*4+4; i<1440*1024*6+160*1024*2+4; i++)
+        fStats[i] = 0;
+
+    reinterpret_cast<uint32_t*>(fStats.data())[0] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[3] = 0;
+
+    fData.fStep = 1;
+    fData.fDateRunBeg[2] = "1970-01-01T00:00:00";
+    fData.fDateRunEnd[2] = "1970-01-01T00:00:00";
+    fData.fDateEnd = fData.fDateRunEnd[1];
+    Update(dim, runs);
+    fData.fStep = 2;
+
+    return true;
+}
+
+void DataCalib::Update(DimDescribedService &dim, DimDescribedService &runs)
+{
+    const uint16_t roi = fData.fRoi;
+    const uint16_t ntm = fData.fNumTm;
+
+    vector<float> buf(1440*1024*6+160*1024*2+4);
+
+    memcpy(buf.data(), fStats.data(), (4*1024*1440+4)*sizeof(float));
+
+    for (int i=0; i<1440; i++)
+    {
+        memcpy(buf.data()+4+1440*1024*4 + i*1024, fStats.data()+4 + 4*1024*1440 + roi*i,            roi*sizeof(float));
+        memcpy(buf.data()+4+1440*1024*5 + i*1024, fStats.data()+4 + 4*1024*1440 + roi*1440 + roi*i, roi*sizeof(float));
+    }
+
+    /*
+    for (int i=0; i<ntm; i++)
+    {
+        memcpy(buf.data()+4+1440*1024*6          + i*1024, fStats.data()+4 + 4*1024*1440 + 2*roi*1440,       roi*sizeof(float));
+        memcpy(buf.data()+4+1440*1024*6+160*1024 + i*1024, fStats.data()+4 + 4*1024*1440 + 2*roi*1440+i*roi, roi*sizeof(float));
+    }*/
+
+#warning Time marker channels not sent
+
+    const Time time(fData.fDateObs);
+    const uint32_t night = time.NightAsInt();
+
+    dim.setQuality(fData.fStep);
+    dim.setData(buf);
+    dim.Update(time);
+
+    vector<uint32_t> data(5);
+    memcpy(data.data(), buf.data(), 4*sizeof(uint32_t));
+    data[4] = night<19700000 ? 0 : night;
+
+    runs.setQuality(fData.fStep);
+    runs.setData(data);
+    runs.Update(time);
+}
+
+bool DataCalib::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    if (h.NPix != 1440)
+    {
+        Error("Number of pixels in header for run "+to_string(GetRunId())+" not 1440.");
+        return false;
+    }
+
+    if (fProcessing)
+    {
+        Warn("Previous DRS calibration run not yet finished (current run "+to_string(GetRunId())+")");
+        return false;
+    }
+
+    if (fData.fStep==3)
+    {
+        Warn("DRS Calibration already finished before current run "+to_string(GetRunId())+"... please restart!");
+        return false;
+    }
+
+    if (fData.fStep!=2 && h.Nroi != 1024)
+    {
+        ostringstream msg;
+        msg << "Region of interest of run " << GetRunId() << " not 1024, but " << h.Nroi << " in step " << fData.fStep <<  " ... as it ought to be.";
+        Error(msg);
+        return false;
+    }
+
+    vector<uint16_t> dac(8);
+/*
+    // We don't check consistency over several boards because this is done
+    // by the eventCheck routine already
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        if (hh.start_package_flag==0)
+            continue;
+
+        for (int j=0; j<8; j++)
+            dac[j] = hh.dac[j];
+
+        break;
+    }
+
+    for (int i=1; i<7; i++)
+    {
+        if (i==3 || dac[i]==dac[i+1])
+            continue;
+
+        ostringstream msg;
+        msg << "Values of DAC" << i << " (" << dac[i] << ") and DAC" << i+1 <<" (" << dac[i+1] << ") do not match... cannot take DRS calibration!";
+        fMsg.Error(msg);
+        return false;
+    }
+
+    if (fData.fStep>0)
+    {
+        for (int j=0; j<8; j++)
+        {
+            if (fData.fDAC[j]==dac[j])
+                continue;
+
+            ostringstream msg;
+            msg << "DAC value from previous run (DAC" << j << "=" << fData.fDAC[j] << ") and current run ";
+            msg << "(DAC" << j << "=" << dac[j] << ") inconsistent... cannot take DRS calibration!";
+            fMsg.Error(msg);
+            return false;
+        }
+    }
+
+    memcpy(fData.fDAC, dac.data(), 8*sizeof(uint16_t));
+*/
+    fProcessing = true;
+
+    const bool hastm = h.Nroi<=512 && h.NroiTM>=2*h.Nroi;
+
+    Reset();
+    InitSize(hastm ? 1600 : 1440, h.Nroi);
+
+    fData.fRoi   = fNumSamples;
+    fData.fNumTm = hastm ? 160 : 0;
+
+    return DataWriteFits2::Open(h, d);
+}
+
+bool DataCalib::WriteEvt(const EVT_CTRL2 &evt)
+{
+    // FIXME: SET StartPix to 0 if StartPix is -1
+
+    const EVENT &e = *evt.fEvent;
+
+    if (fData.fStep==0)
+    {
+        AddRel(e.Adc_Data, e.StartPix);
+    }
+    if (fData.fStep==1)
+    {
+        AddRel(e.Adc_Data, e.StartPix, fData.fOffset.data(), fData.fNumOffset);
+    }
+    if (fData.fStep==2)
+    {
+        AddAbs(e.Adc_Data, e.StartPix, fData.fOffset.data(), fData.fNumOffset);
+    }
+
+    return DataWriteFits2::WriteEvt(evt);
+}
+
+bool DataCalib::ReadFits(const string &str, MessageImp &msg)
+{
+    if (fProcessing)
+    {
+        msg.Error("Reading "+str+" failed: DRS calibration in process.");
+        return false;
+    }
+
+    try
+    {
+        const string txt = fData.ReadFitsImp(str, fStats);
+        if (txt.empty())
+            return true;
+
+        msg.Error(txt);
+        return false;
+    }
+    catch (const runtime_error &e)
+    {
+        msg.Error("Exception reading "+str+": "+e.what());
+        return false;
+    }
+}
+/*
+void DataCalib::WriteFitsImp(const string &filename, const vector<float> &vec) const
+{
+    const uint16_t roi = fData.fRoi;
+    const uint16_t ntm = fData.fNumTm;
+
+    const size_t n = 1440*1024*4 + 1440*roi*2 + ntm*roi*2 + 3;
+
+    // The vector has a fixed size
+    //if (vec.size()!=n+1)
+    //    throw runtime_error("Size of vector does not match region-of-interest");
+
+    ofits file(filename.c_str());
+
+    file.AddColumnInt("RunNumberBaseline");
+    file.AddColumnInt("RunNumberGain");
+    file.AddColumnInt("RunNumberTriggerOffset");
+
+    file.AddColumnFloat(1024*1440, "BaselineMean",        "mV");
+    file.AddColumnFloat(1024*1440, "BaselineRms",         "mV");
+    file.AddColumnFloat(1024*1440, "GainMean",            "mV");
+    file.AddColumnFloat(1024*1440, "GainRms",             "mV");
+    file.AddColumnFloat( roi*1440, "TriggerOffsetMean",   "mV");
+    file.AddColumnFloat( roi*1440, "TriggerOffsetRms",    "mV");
+    file.AddColumnFloat( roi*ntm,  "TriggerOffsetTMMean", "mV");
+    file.AddColumnFloat( roi*ntm,  "TriggerOffsetTMRms",  "mV");
+
+    DataWriteFits2::WriteDefaultKeys(file);
+
+    file.SetInt("STEP",     fData.fStep, "");
+
+    file.SetInt("ADCRANGE", 2000, "Dynamic range of the ADC in mV");
+    file.SetInt("DACRANGE", 2500, "Dynamic range of the DAC in mV");
+    file.SetInt("ADC",      12,   "Resolution of ADC in bits");
+    file.SetInt("DAC",      16,   "Resolution of DAC in bits");
+    file.SetInt("NPIX",     1440, "Number of channels in the camera");
+    file.SetInt("NTM",      ntm,  "Number of time marker channels");
+    file.SetInt("NROI",     roi,  "Region of interest");
+
+    file.SetInt("NBOFFSET", fData.fNumOffset,       "Num of entries for offset calibration");
+    file.SetInt("NBGAIN",   fData.fNumGain/1953125, "Num of entries for gain calibration");
+    file.SetInt("NBTRGOFF", fData.fNumTrgOff,       "Num of entries for trigger offset calibration");
+
+    // file.WriteKeyNT("DAC_A",    fData.fDAC[0],    "Level of DAC 0 in DAC counts")   ||
+    // file.WriteKeyNT("DAC_B",    fData.fDAC[1],    "Leval of DAC 1-3 in DAC counts") ||
+    // file.WriteKeyNT("DAC_C",    fData.fDAC[4],    "Leval of DAC 4-7 in DAC counts") ||
+
+    file.WriteTableHeader("DrsCalibration");
+    file.WriteRow(vec.data()+1, n*sizeof(float));
+}
+*/
+bool DataCalib::Close(const EVT_CTRL2 &evt)
+{
+    if (fNumEntries==0)
+    {
+        ostringstream str;
+        str << "DRS calibration run (run=" << GetRunId() << ", step=" << fData.fStep << ", roi=" << fData.fRoi << ") has 0 events.";
+        Warn(str);
+    }
+
+    if (fData.fStep==0)
+    {
+        fData.fOffset.assign(fSum.begin(), fSum.end());
+        fData.fNumOffset = fNumEntries;
+
+        for (int i=0; i<1024*1440; i++)
+            fData.fGain[i] = 4096*fNumEntries;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+4, 2000./4096);
+        reinterpret_cast<uint32_t*>(fStats.data())[1] = GetRunId();;
+    }
+    if (fData.fStep==1)
+    {
+        fData.fGain.assign(fSum.begin(), fSum.end());
+        fData.fNumGain = fNumEntries;
+
+        // DAC:  0..2.5V == 0..65535            2500*50000   625*50000  625*3125
+        // V-mV: 1000                           ----------   ---------  --------
+        //fNumGain *= 2500*50000;                  65536       16384      1024
+        //for (int i=0; i<1024*1440; i++)
+        //    fGain[i] *= 65536;
+        fData.fNumGain *= 1953125;
+        for (int i=0; i<1024*1440; i++)
+            fData.fGain[i] *= 1024;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+1024*1440*2+4, 2000./4096/fData.fNumOffset);//0.5);
+        reinterpret_cast<uint32_t*>(fStats.data())[2] = GetRunId();;
+    }
+    if (fData.fStep==2)
+    {
+        fData.fTrgOff.assign(fSum.begin(), fSum.end());
+        fData.fNumTrgOff = fNumEntries;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+1024*1440*4+4, 2000./4096/fData.fNumOffset);//0.5);
+        reinterpret_cast<uint32_t*>(fStats.data())[0] = fNumSamples;
+        reinterpret_cast<uint32_t*>(fStats.data())[3] = GetRunId();
+    }
+
+    const string beg = GetTstart().Iso();
+    const string end = GetTstop().Iso();
+
+    if (fData.fStep==0)
+        fData.fDateObs = beg;
+    fData.fDateEnd = end;
+
+    fData.fDateRunBeg[fData.fStep] = beg;
+    fData.fDateRunEnd[fData.fStep] = end;
+
+    if (fData.fStep<=2)
+    {
+        const string filename = FormFileName("drs.fits");
+        try
+        {
+            fData.WriteFitsImp(filename, fStats, GetNight());
+
+            ostringstream str;
+            str << "Wrote DRS calibration data (run=" << GetRunId() << ", step=" << fData.fStep << ", roi=" << fData.fRoi << ") to '" << filename << "'";
+            Info(str);
+        }
+        catch (const exception &e)
+        {
+            Error("Exception writing run "+to_string(GetRunId())+" '"+filename+"': "+e.what());
+        }
+    }
+
+    Update(fDim, fDimRuns);
+
+    fData.fStep++;
+
+    fProcessing = false;
+
+    return DataWriteFits2::Close(evt);
+}
Index: branches/FACT++_part_filenames/src/DataCalib.h
===================================================================
--- branches/FACT++_part_filenames/src/DataCalib.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataCalib.h	(revision 18732)
@@ -0,0 +1,57 @@
+#ifndef FACT_DataCalib
+#define FACT_DataCalib
+
+#include "DataWriteFits2.h"
+#include "externals/DrsCalib.h"
+
+class DimDescribedService;
+
+using namespace std;
+
+class DataCalib : public DataWriteFits2, public DrsCalibrate
+{
+    static DrsCalibration fData;
+
+    static std::vector<float> fStats;     /// Storage for mean and rms values
+
+    /// State of the DRS calibration: Positiove numbers mean that
+    /// we are in a run, negative mean that it is closed
+    static bool fProcessing;
+
+    DimDescribedService &fDim;     // DimService through which statistics updates are transmitted
+    DimDescribedService &fDimRuns; // DimService through which statistics updates are transmitted
+
+//    uint16_t fDAC[8];
+
+//    void WriteFitsImp(const std::string &filename, const std::vector<float> &vec) const;
+
+    int GetDrsStep() const { return fData.fStep; }
+
+public:
+    DataCalib(const std::string &path, uint64_t night, uint32_t id, const DrsCalibration &calib, DimDescribedService &dim, DimDescribedService &runs, MessageImp &imp) : DataWriteFits2(path, night, id, calib, imp), fDim(dim), fDimRuns(runs)
+    {
+    }
+
+    static void Restart();
+    static bool ResetTrgOff(DimDescribedService &dim, DimDescribedService &runs);
+    static void Update(DimDescribedService &dim, DimDescribedService &runs);
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+
+    //static void Apply(int16_t *val, const int16_t *start, uint32_t roi);
+    static void Apply(float *vec, int16_t *val, const int16_t *start, uint32_t roi)
+    {
+        fData.Apply(vec, val, start, roi);
+    }
+
+    static bool ReadFits(const string &fname, MessageImp &msg);
+
+    static bool IsValid() { return fData.IsValid(); }
+    static int  GetStep() { return fData.fStep; }
+
+    static const DrsCalibration &GetCalibration() { return fData; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DataProcessorImp.cc
===================================================================
--- branches/FACT++_part_filenames/src/DataProcessorImp.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataProcessorImp.cc	(revision 18732)
@@ -0,0 +1,105 @@
+#include "DataProcessorImp.h"
+
+#include <boost/filesystem.hpp>
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+#include "tools.h"
+
+using namespace std;
+
+
+// --------------------------------------------------------------------------
+//
+//! This creates an appropriate file name for a particular run number and type
+//! @param runNumberq the run number for which a filename is to be created
+//! @param runType an int describing the kind of run. 0=Data, 1=Pedestal, 2=Calibration, 3=Calibrated data
+//! @param extension a string containing the extension to be appened to the file name
+//
+string DataProcessorImp::FormFileName(const string &path, uint64_t night, uint32_t runid, const string &extension)
+{
+    ostringstream name;
+
+    if (!path.empty())
+    {
+        name << path;
+        if (path[path.length()-1] != '/')
+            name << '/';
+    }
+
+    name << Tools::Form("%04d/%02d/%02d/", night/10000, (night/100)%100, night%100);
+
+    try
+    {
+        boost::filesystem::create_directories(name.str());
+    }
+    catch (const runtime_error &)
+    {
+        // File creation will fail anyway
+        //Error(e.what());
+    }
+
+    name << night << '_' << setfill('0') << setw(3) << runid << '.' << extension;
+    return name.str();
+}
+
+// =======================================================================
+
+bool DataDump::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    fFileName = "/dev/null";
+
+    ostringstream str;
+    str << this << " - "
+        << "OPEN_FILE #" << GetRunId() << ":"
+        << " Ver=" << h.Version
+        << " Nb="  << h.NBoard
+        << " Np="  << h.NPix
+        << " NTm=" << h.NTm
+        << " roi=" << h.Nroi
+        << " Typ=" << d.name;
+
+    Debug(str);
+
+    fTime = Time();
+
+    return true;
+}
+
+bool DataDump::WriteEvt(const EVT_CTRL2 &e)
+{
+    const Time now;
+    if (now-fTime<boost::posix_time::seconds(5))
+        return true;
+
+    fTime = now;
+
+    ostringstream str;
+    str << this << " - EVENT #" << e.evNum << " / " << e.trgNum;
+    Debug(str);
+
+    return true;
+}
+
+bool DataDump::Close(const EVT_CTRL2 &)
+{
+    ostringstream str;
+    str << this << " - CLOSE FILE #" << GetRunId();
+
+    Debug(str);
+
+    return true;
+}
+
+// =======================================================================
+
+bool DataDebug::WriteEvt(const EVT_CTRL2 &e)
+{
+    cout << "WRITE_EVENT #" << GetRunId() << " (" << e.evNum << ")" << endl;
+    cout << " Typ=" << e.trgTyp << endl;
+    cout << " roi=" << e.nRoi << endl;
+    cout << " tim=" << e.time.tv_sec << endl;
+
+    return true;
+}
+
Index: branches/FACT++_part_filenames/src/DataProcessorImp.h
===================================================================
--- branches/FACT++_part_filenames/src/DataProcessorImp.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataProcessorImp.h	(revision 18732)
@@ -0,0 +1,73 @@
+#ifndef FACT_DataProcessorImp
+#define FACT_DataProcessorImp
+
+#include "MessageImp.h"
+
+struct RUN_HEAD;
+struct EVT_CTRL2;
+struct RUN_CTRL2;
+
+namespace FAD
+{
+    struct RunDescription;
+};
+
+class DataProcessorImp : public MessageImp
+{
+    std::string fPath;
+    uint32_t    fNight;
+    uint32_t    fRunId;
+
+    int Write(const Time &time, const std::string &txt, int qos=kMessage)
+    {
+        return fMsg.Write(time, txt, qos);
+    }
+
+protected:
+    MessageImp &fMsg;
+    std::string fFileName;
+
+public:
+    DataProcessorImp(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : fPath(path), fNight(night), fRunId(id), fMsg(imp) { }
+    virtual ~DataProcessorImp() { }
+
+    virtual bool Open(const RUN_HEAD &h, const FAD::RunDescription &desc) = 0;
+    virtual bool WriteEvt(const EVT_CTRL2 &) = 0;
+    virtual bool Close(const EVT_CTRL2 &) = 0;
+
+    const std::string &GetFileName() const { return fFileName; }
+
+    std::string GetPath() const { return fPath; }
+    uint32_t    GetNight() const { return fNight; }
+    uint32_t    GetRunId() const { return fRunId; }
+
+    static std::string FormFileName(const std::string &path, uint64_t night, uint32_t runid, const std::string &extension);
+    std::string FormFileName(const std::string &extension)
+    {
+        return FormFileName(fPath, fNight, fRunId, extension);
+    }
+};
+
+#include "Time.h"
+
+class DataDump : public DataProcessorImp
+{
+    Time fTime;
+
+public:
+    DataDump(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataProcessorImp(path, night, id, imp) { }
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+};
+
+class DataDebug : public DataDump
+{
+public:
+    DataDebug(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataDump(path, night, id, imp) { }
+
+    bool WriteEvt(const EVT_CTRL2 &);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DataWriteFits.cc
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteFits.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteFits.cc	(revision 18732)
@@ -0,0 +1,295 @@
+#include "DataWriteFits.h"
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+#include "Converter.h"
+
+
+using namespace std;
+
+DataWriteFits::~DataWriteFits()
+{
+    if (fFile.IsOpen())
+    {
+        WriteFooter();
+        fFile.Close();
+    }
+
+    delete fConv;
+}
+
+template <typename T>
+    void DataWriteFits::WriteKey(const string &name, const int idx, const T &value, const string &comment)
+{
+    ostringstream str;
+    str << name << idx;
+
+    ostringstream com;
+    com << "Board " << setw(2) << idx << ": " << comment;
+
+    fFile.WriteKey(str.str(), value, com.str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! DataWriteFits constructor. This is the one that should be used, not the default one (parameter-less)
+//! @param runid This parameter should probably be removed. I first thought it was the run number, but apparently it is not
+//! @param h a pointer to the RUN_HEAD structure that contains the informations relative to this run
+//
+bool DataWriteFits::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    if (fConv)
+    {
+        Error("DataWriteFits::Open called twice.");
+        return false;
+    }
+
+    const int16_t realRoiTM = (h.NroiTM >= 2*h.Nroi && h.Nroi<=512) ? h.Nroi : 0;
+
+    fFile.AddColumn('I', "EventNum");
+    fFile.AddColumn('I', "TriggerNum");
+    fFile.AddColumn('S', "TriggerType");
+    fFile.AddColumn('I', "NumBoards");
+    fFile.AddColumn('C', "Errors",              4);
+    fFile.AddColumn('I', "SoftTrig");
+    fFile.AddColumn('I', "UnixTimeUTC",         2);
+    fFile.AddColumn('I', "BoardTime",           NBOARDS);
+    fFile.AddColumn('S', "StartCellData",       NPIX);
+    fFile.AddColumn('S', "StartCellTimeMarker", NTMARK);
+    fFile.AddColumn('S', "Data",                h.NPix*h.Nroi);	
+    fFile.AddColumn('S', "TimeMarker",          h.NTm*realRoiTM);
+
+    // Write length of physical pipeline (1024)
+    fConv = new Converter(Converter::ToFormat(fFile.GetColumnTypes()));
+
+    const size_t sz = (h.NPix*h.Nroi + h.NTm*realRoiTM)*2;
+    if (fConv->GetSize()-sz+4!=sizeof(EVENT))
+    {
+        ostringstream str;
+        str << "The EVENT structure size (" << sizeof(EVENT) << ") doesn't match the described FITS row (";
+        str << fConv->GetSize()-sz+4 << ")";
+        Error(str);
+        return false;
+    }
+
+    //Form filename, based on runid and run-type
+    fFileName = FormFileName("fits");
+
+    if (!fFile.OpenFile(fFileName))
+        return false;
+
+    if (!fFile.OpenTable("Events"))
+        return false;
+
+    if (!fFile.WriteDefaultKeys("fadctrl"))
+        return false;
+
+    Info("==> TODO: Write sampling frequency...");
+
+    //write header data
+    //first the "standard" keys
+    try
+    {
+        fFile.WriteKey("BLDVER",   h.Version,  "Builder version");
+        fFile.WriteKey("RUNID",    GetRunId(),  "Run number");
+//        fFile.WriteKey("RUNTYPE",  h.RunType,  "Type of run");
+        fFile.WriteKey("NBOARD",   h.NBoard,   "Number of acquisition boards");
+        fFile.WriteKey("NPIX",     h.NPix,     "Number of pixels");
+        fFile.WriteKey("NTMARK",   h.NTm,      "Number of time marker channels");
+        fFile.WriteKey("NCELLS",   1024,        "Maximum number of slices per pixels");
+        fFile.WriteKey("NROI",     h.Nroi,     "Number of slices per pixels");
+        fFile.WriteKey("NROITM",   realRoiTM,   "Number of slices per time-marker");
+
+        const uint16_t realOffset = (h.NroiTM > h.Nroi) ?  h.NroiTM - 2*h.Nroi : 0;
+        fFile.WriteKey("TMSHIFT",  realOffset,  "Shift of the start of the time marker readout wrt to data");
+
+        //FIXME should we also put the start and stop time of the received data ?
+        //now the events header related variables
+        fFile.WriteKey("CAMERA",   "MGeomCamFACT", "");
+        fFile.WriteKey("DAQ",      "DRS4",         "");
+        fFile.WriteKey("ADCRANGE", 2000,        "Dynamic range in mV");
+        fFile.WriteKey("ADC",      12,          "Resolution in bits");
+        fFile.WriteKey("RUNTYPE",  d.name,      "File type according to FAD configuration");
+
+        // Write a single key for:
+        // -----------------------
+        // Start package flag
+        // package length
+        // version number
+        // status
+        // Prescaler
+
+        // Write 40 kays for (?)
+        // Phaseshift
+        // DAC
+
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            // Header values whihc won't change during the run
+            WriteKey("ID",    i, hh.board_id,   "Board ID");
+            WriteKey("FWVER", i, hh.version_no, "Firmware Version");
+
+            ostringstream dna;
+            dna << "0x" << hex << hh.DNA;
+            WriteKey("DNA", i, dna.str(), "Unique FPGA device identifier (DNA)");
+        }
+
+        // FIXME: Calculate average ref clock frequency
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            if (hh.start_package_flag==0)
+                continue;
+
+            fFile.WriteKey("BOARD", i, "Board number for RUN, PRESC, PHASE and DAC");
+            // fFile.WriteKey("RUN",   hh.runnumber, "Run number");
+            fFile.WriteKey("PRESC", hh.trigger_generator_prescaler, "Trigger generator prescaler");
+            fFile.WriteKey("PHASE", (int16_t)hh.adc_clock_phase_shift, "ADC clock phase shift");
+
+            for (int j=0; j<8; j++)
+            {
+                ostringstream dac, cmt;
+                dac << "DAC" << j;
+                cmt << "Command value for " << dac.str();
+                fFile.WriteKey(dac.str(), hh.dac[j], cmt.str());
+            }
+
+            break;
+        }
+
+        double avg = 0;
+        int    cnt = 0;
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            if (hh.start_package_flag==0)
+                continue;
+
+            avg += hh.REFCLK_frequency;
+            cnt ++;
+        }
+
+        // FIXME: I cannot write a double! WHY?
+        fFile.WriteKey("REFCLK", avg/cnt*2.048, "Average reference clock frequency in Hz");
+
+        fFile.WriteKey("DRSCALIB", GetDrsStep()>=0, "This file belongs to a DRS calibration");
+        if (GetDrsStep()>=0)
+            fFile.WriteKey("DRSSTEP", GetDrsStep(), "Step of the DRS calibration");
+
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed in '"+fFileName+"': "+e.message());
+        return false;
+    }
+
+    fTstart[0] = h.RunTime;
+    fTstart[1] = h.RunUsec;
+
+    fTstop[0] = 0;
+    fTstop[1] = 0;
+
+    fTriggerCounter.fill(0);
+
+    //Last but not least, add header keys that will be updated when closing the file
+    return WriteFooter();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes one event to the file
+//! @param e the pointer to the EVENT
+//
+bool DataWriteFits::WriteEvt(const EVT_CTRL2 &evt)
+{
+    if (!fFile.AddRow())
+        return false;
+
+    // Remember the counter of the last written event
+    fTriggerCounter = evt.triggerCounter;
+
+    // Remember the time of the last event
+    fTstop[0] = evt.time.tv_sec;
+    fTstop[1] = evt.time.tv_usec;
+
+    const EVENT &e = *evt.fEvent;
+
+    const int realRoiTM = (e.RoiTM > e.Roi) ? e.Roi : 0;
+    const size_t sz = sizeof(EVENT) + sizeof(e.StartPix)*e.Roi+sizeof(e.StartTM)*realRoiTM; //ETIENNE from RoiTm to Roi
+
+    const vector<char> data = fConv->ToFits(reinterpret_cast<const char*>(&e)+4, sz-4);
+
+    return fFile.WriteData(data.data(), data.size());
+}
+
+bool DataWriteFits::WriteFooter()
+{
+    try
+    {
+        /*
+        fFile.WriteKey("NBEVTOK",  rt ? rt->nEventsOk  : uint32_t(0),
+                       "How many events were written");
+
+        fFile.WriteKey("NBEVTREJ", rt ? rt->nEventsRej : uint32_t(0),
+                       "How many events were rejected by SW-trig");
+
+        fFile.WriteKey("NBEVTBAD", rt ? rt->nEventsBad : uint32_t(0),
+                       "How many events were rejected by Error");
+        */
+
+        //FIXME shouldn't we convert start and stop time to MjD first ?
+        //FIXME shouldn't we also add an MjD reference ?
+
+        const Time start(fTstart[0], fTstart[1]);
+        const Time stop (fTstop[0],  fTstop[1]);
+
+        fFile.WriteKey("TSTARTI",  uint32_t(floor(start.UnixDate())),
+                       "Time when first event received (integral part)");
+        fFile.WriteKey("TSTARTF",  fmod(start.UnixDate(), 1),
+                       "Time when first event received (fractional part)");
+        fFile.WriteKey("TSTOPI",   uint32_t(floor(stop.UnixDate())),
+                       "Time when last event received (integral part)");
+        fFile.WriteKey("TSTOPF",   fmod(stop.UnixDate(), 1),
+                       "Time when last event received (fractional part)");
+        fFile.WriteKey("DATE-OBS", start.Iso(),
+                       "Time when first event received");
+        fFile.WriteKey("DATE-END", stop.Iso(),
+                       "Time when last event received");
+
+        fFile.WriteKey("NTRG",     fTriggerCounter[0], "No of physics triggered events");
+        fFile.WriteKey("NTRGPED",  fTriggerCounter[1], "No of pure pedestal triggered events");
+        fFile.WriteKey("NTRGLPE",  fTriggerCounter[2], "No of external light pulser triggered events");
+        fFile.WriteKey("NTRGTIM",  fTriggerCounter[3], "No of time calibration triggered events");
+        fFile.WriteKey("NTRGLPI",  fTriggerCounter[4], "No of internal light pulser triggered events");
+        fFile.WriteKey("NTRGEXT1", fTriggerCounter[5], "No of triggers from ext1 triggered events");
+        fFile.WriteKey("NTRGEXT2", fTriggerCounter[6], "No of triggers from ext2 triggered events");
+        fFile.WriteKey("NTRGMISC", fTriggerCounter[7], "No of all other triggered events");
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed in '"+fFile.GetName()+"': "+e.message());
+        return false;
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Closes the file, and before this it write the TAIL data
+//! @param rt the pointer to the RUN_TAIL data structure
+//
+bool DataWriteFits::Close(const EVT_CTRL2 &)
+{
+    if (!fFile.IsOpen())
+        return false;
+
+    WriteFooter();
+
+    fFile.Close();
+
+    return true;
+}
Index: branches/FACT++_part_filenames/src/DataWriteFits.h
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteFits.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteFits.h	(revision 18732)
@@ -0,0 +1,42 @@
+#ifndef FACT_DataWriteFits
+#define FACT_DataWriteFits
+
+#include "DataProcessorImp.h"
+#include "FitsFile.h"
+
+#include <array>
+
+class Converter;
+
+class DataWriteFits : public DataProcessorImp
+{
+    Converter *fConv;
+
+    FitsFile fFile;
+
+    std::array<uint32_t, 8> fTriggerCounter;
+
+    uint32_t fTstart[2];
+    uint32_t fTstop[2];
+
+    template <typename T>
+        void WriteKey(const string &name, const int idx, const T &value, const string &comment);
+
+    bool WriteFooter();
+
+    virtual int GetDrsStep() const { return -1; }
+
+public:
+    DataWriteFits(const std::string path, uint64_t night,  uint32_t runid, MessageImp &imp) :
+        DataProcessorImp(path, night, runid, imp), fConv(0), fFile(imp)
+    {
+    }
+
+    ~DataWriteFits();
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DataWriteFits2.cc
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteFits2.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteFits2.cc	(revision 18732)
@@ -0,0 +1,357 @@
+#include "DataWriteFits2.h"
+
+#include <boost/filesystem.hpp>
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+
+#include "externals/factofits.h"
+#include "externals/DrsCalib.h"
+
+using namespace std;
+
+DataWriteFits2::DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, MessageImp &imp)
+    : DataProcessorImp(path, night, runid, imp)
+{
+    fFile = std::make_shared<ofits>();
+}
+
+DataWriteFits2::DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, const DrsCalibration &cal, MessageImp &imp)
+    : DataProcessorImp(path, night, runid, imp)
+{
+    factofits *file = new factofits;
+    file->SetDrsCalibration(cal);
+    fFile = std::shared_ptr<ofits>(file);
+}
+
+void DataWriteFits2::WriteHeader(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    const int16_t realRoiTM = (h.NroiTM >= 2*h.Nroi && h.Nroi<=512) ? h.Nroi : 0;
+
+    fFile->AddColumnInt("EventNum", "uint32", "FAD board event counter");
+    fFile->AddColumnInt("TriggerNum", "uint32", "FTM board trigger counter");
+    fFile->AddColumnShort("TriggerType", "uint16", "FTM board trigger type");
+    fFile->AddColumnInt("NumBoards", "uint32", "Number of connected boards");
+    fFile->AddColumnInt(2, "UnixTimeUTC", "uint32", "Unix time seconds and microseconds");
+    fFile->AddColumnInt(NBOARDS, "BoardTime", "uint32", "Board internal time counter");
+    fFile->AddColumnShort(NPIX, "StartCellData", "uint16", "DRS4 start cell of readout");
+    fFile->AddColumnShort(NTMARK, "StartCellTimeMarker", "uint16", "DRS4 start cell of readout time marker");
+
+    vector<uint16_t> processing(2);
+    processing[0] = FITS::kFactSmoothing;
+    processing[1] = FITS::kFactHuffman16;
+
+    const FITS::Compression comp(processing, FITS::kOrderByRow);
+
+    fFile->AddColumnShort(comp, h.NPix*h.Nroi,   "Data",       "int16", "Digitized data");
+    fFile->AddColumnShort(comp, h.NTm*realRoiTM, "TimeMarker", "int16", "Digitized time marker - if available");
+
+    const size_t sz = (h.NPix*h.Nroi + h.NTm*realRoiTM)*2;
+    if (fFile->GetBytesPerRow()-sz+4!=sizeof(EVENT))
+    {
+        ostringstream str;
+        str << "The EVENT structure size (" << sizeof(EVENT) << ") doesn't match the described FITS row (";
+        str << fFile->GetBytesPerRow()-sz+4 << ")";
+        throw runtime_error(str.str());
+    }
+
+    // =============== Default keys for all files ================
+    fFile->SetDefaultKeys();
+    fFile->SetInt("NIGHT", GetNight(), "Night as int");
+
+    // ================ Header keys for raw-data =================
+    fFile->SetInt("BLDVER",   h.Version,  "Builder version");
+    fFile->SetInt("RUNID",    GetRunId(),  "Run number");
+    fFile->SetInt("NBOARD",   h.NBoard,   "Number of acquisition boards");
+    fFile->SetInt("NPIX",     h.NPix,     "Number of pixels");
+    fFile->SetInt("NTMARK",   h.NTm,      "Number of time marker channels");
+    fFile->SetInt("NCELLS",   1024,        "Maximum number of slices per pixels");
+    fFile->SetInt("NROI",     h.Nroi,     "Number of slices per pixels");
+    fFile->SetInt("NROITM",   realRoiTM,   "Number of slices per time-marker");
+
+    const uint16_t realOffset = (h.NroiTM > h.Nroi) ?  h.NroiTM - 2*h.Nroi : 0;
+    fFile->SetInt("TMSHIFT",  realOffset,  "Shift of marker readout w.r.t. to data");
+
+    //FIXME should we also put the start and stop time of the received data ?
+    //now the events header related variables
+    fFile->SetStr("CAMERA",   "MGeomCamFACT", "MARS camera geometry class");
+    fFile->SetStr("DAQ",      "DRS4",         "Data acquisition type");
+    fFile->SetInt("ADCRANGE", 2000,        "Dynamic range in mV");
+    fFile->SetInt("ADC",      12,          "Resolution in bits");
+    fFile->SetStr("RUNTYPE",  d.name,      "File type according to FAD configuration");
+
+    // Write a single key for:
+    // -----------------------
+    // Start package flag
+    // package length
+    // version number
+    // status
+    // Prescaler
+
+    // Write 40 keys for (?)
+    // Phaseshift
+    // DAC
+
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        ostringstream sout;
+        sout << "Board " << setw(2) << i<< ": ";
+
+        const string num = to_string(i);
+
+        // Header values whihc won't change during the run
+        fFile->SetInt("ID"+num,    hh.board_id,   sout.str()+"Board ID");
+        fFile->SetInt("FWVER"+num, hh.version_no, sout.str()+"Firmware Version");
+        fFile->SetHex("DNA"+num,   hh.DNA,        sout.str()+"Unique FPGA device identifier (DNA)");
+    }
+
+    // FIXME: Calculate average ref clock frequency
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+        if (hh.start_package_flag==0)
+            continue;
+
+        fFile->SetInt("BOARD", i, "Board number for RUN, PRESC, PHASE and DAC");
+        fFile->SetInt("PRESC", hh.trigger_generator_prescaler, "Trigger generator prescaler");
+        fFile->SetInt("PHASE", (int16_t)hh.adc_clock_phase_shift, "ADC clock phase shift");
+
+        for (int j=0; j<8; j++)
+        {
+            ostringstream dac, cmt;
+            dac << "DAC" << j;
+            cmt << "Command value for " << dac.str();
+            fFile->SetInt(dac.str(), hh.dac[j], cmt.str());
+        }
+
+        break;
+    }
+
+    double avg = 0;
+    int    cnt = 0;
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        if (hh.start_package_flag==0)
+            continue;
+
+        avg += hh.REFCLK_frequency;
+        cnt ++;
+    }
+
+    // FIXME: I cannot write a double! WHY?
+    fFile->SetFloat("REFCLK", avg/cnt*2.048, "Average reference clock frequency in Hz");
+
+    fFile->SetBool("DRSCALIB", GetDrsStep()>=0, "This file belongs to a DRS calibration");
+    if (GetDrsStep()>=0)
+        fFile->SetInt("DRSSTEP", GetDrsStep(), "Step of the DRS calibration");
+
+    fTstart[0] = h.RunTime;
+    fTstart[1] = h.RunUsec;
+
+    fTstop[0] = 0;
+    fTstop[1] = 0;
+
+    fTriggerCounter.fill(0);
+
+    WriteFooter();
+
+    fFile->WriteTableHeader("Events");
+};
+
+// --------------------------------------------------------------------------
+//
+//! DataWriteFits constructor. This is the one that should be used, not the default one (parameter-less)
+//! @param runid This parameter should probably be removed. I first thought it was the run number, but apparently it is not
+//! @param h a pointer to the RUN_HEAD structure that contains the informations relative to this run
+//
+bool DataWriteFits2::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    //Form filename, based on runid and run-type
+    fFileName = FormFileName(dynamic_pointer_cast<factofits>(fFile)?"fits.fz":"fits");
+
+    if (boost::filesystem::exists(fFileName))
+    {
+        Error("ofits - file '"+fFileName+"' already exists.");
+        return false;
+    }
+
+    zofits *fits = dynamic_cast<zofits*>(fFile.get());
+    if (fits)
+    {
+        const uint32_t nrpt = zofits::DefaultNumRowsPerTile();
+
+        // Maximum number of events if taken with 100Hz
+        // (If no limit requested, maxtime is 24*60*60)
+        const uint32_t ntime = d.maxtime*100/nrpt;
+
+        // Maximum number of events if taken as number
+        // (If no limit requested, maxevts is INT32_MAX)
+        const uint32_t nevts = d.maxevt/nrpt+1;
+
+        // get the minimum of all three
+        uint32_t num = zofits::DefaultMaxNumTiles();
+        if (ntime<num)
+            num = ntime;
+        if (nevts<num)
+            num = nevts;
+
+        fits->SetNumTiles(num);
+    }
+
+    try
+    {
+        fFile->open(fFileName.c_str());
+    }
+    catch (const exception &e)
+    {
+        Error("ofits::open() failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    try
+    {
+        WriteHeader(h, d);
+    }
+    catch (const exception &e)
+    {
+        Error("ofits - Writing header failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::write() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes one event to the file
+//! @param e the pointer to the EVENT
+//
+bool DataWriteFits2::WriteEvt(const EVT_CTRL2 &evt)
+{
+    // Remember the counter of the last written event
+    fTriggerCounter = evt.triggerCounter;
+
+    // Remember the time of the last event
+    fTstop[0] = evt.time.tv_sec;
+    fTstop[1] = evt.time.tv_usec;
+
+    const EVENT &e = *evt.fEvent;
+
+    const int realRoiTM = (e.RoiTM > e.Roi) ? e.Roi : 0;
+    const size_t sz = sizeof(EVENT) + sizeof(e.StartPix)*e.Roi+sizeof(e.StartTM)*realRoiTM; //ETIENNE from RoiTm to Roi
+
+    try
+    {
+        fFile->WriteRow(reinterpret_cast<const char*>(&e)+4, sz-4);
+    }
+    catch (const exception &ex)
+    {
+        Error("ofits::WriteRow failed for '"+fFileName+"': "+ex.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "fstream::write() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
+
+void DataWriteFits2::WriteFooter()
+{
+    //FIXME shouldn't we convert start and stop time to MjD first ?
+    //FIXME shouldn't we also add an MjD reference ?
+
+    const Time start(fTstart[0], fTstart[1]);
+    const Time stop (fTstop[0],  fTstop[1]);
+
+    fFile->SetInt("TSTARTI",  uint32_t(floor(start.UnixDate())),
+                  "Time when first evt received (integral part)");
+    fFile->SetFloat("TSTARTF",  fmod(start.UnixDate(), 1),
+                    "Time when first evt received (fractional part)");
+    fFile->SetInt("TSTOPI",   uint32_t(floor(stop.UnixDate())),
+                  "Time when last evt received (integral part)");
+    fFile->SetFloat("TSTOPF",   fmod(stop.UnixDate(), 1),
+                    "Time when last evt received (fractional part)");
+    fFile->SetStr("DATE-OBS", start.Iso(),
+                  "Time when first event received");
+    fFile->SetStr("DATE-END", stop.Iso(),
+                  "Time when last event received");
+
+    fFile->SetInt("NTRG",     fTriggerCounter[0], "No of physics triggered events");
+    fFile->SetInt("NTRGPED",  fTriggerCounter[1], "No of pure pedestal triggered events");
+    fFile->SetInt("NTRGLPE",  fTriggerCounter[2], "No of external light pulser triggered events");
+    fFile->SetInt("NTRGTIM",  fTriggerCounter[3], "No of time calibration triggered events");
+    fFile->SetInt("NTRGLPI",  fTriggerCounter[4], "No of internal light pulser triggered events");
+    fFile->SetInt("NTRGEXT1", fTriggerCounter[5], "No of triggers from ext1 triggered events");
+    fFile->SetInt("NTRGEXT2", fTriggerCounter[6], "No of triggers from ext2 triggered events");
+    fFile->SetInt("NTRGMISC", fTriggerCounter[7], "No of all other triggered events");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Closes the file, and before this it write the TAIL data
+//! @param rt the pointer to the RUN_TAIL data structure
+//
+bool DataWriteFits2::Close(const EVT_CTRL2 &)
+{
+    if (!fFile->is_open())
+    {
+        Error("DataWriteFits2::Close() called but file '"+fFileName+"' not open.");
+        return false;
+    }
+
+    try
+    {
+        WriteFooter();
+    }
+    catch (const exception &e)
+    {
+        Error("ofits - Setting footer key values failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    try
+    {
+        fFile->close();
+    }
+    catch (const exception &e)
+    {
+        Error("ofits::close() failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::close() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
Index: branches/FACT++_part_filenames/src/DataWriteFits2.h
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteFits2.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteFits2.h	(revision 18732)
@@ -0,0 +1,38 @@
+#ifndef FACT_DataWriteFits2
+#define FACT_DataWriteFits2
+
+#include "DataProcessorImp.h"
+
+#include <array>
+
+class ofits;
+
+class DrsCalibration;
+
+class DataWriteFits2 : public DataProcessorImp
+{
+    std::shared_ptr<ofits> fFile;
+
+    std::array<uint32_t, 8> fTriggerCounter;
+
+    uint32_t fTstart[2];
+    uint32_t fTstop[2];
+
+    void WriteHeader(const RUN_HEAD &h, const FAD::RunDescription &d);
+    void WriteFooter();
+
+    virtual int GetDrsStep() const { return -1; }
+
+public:
+    DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, MessageImp &imp);
+    DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, const DrsCalibration &cal, MessageImp &imp);
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &e);
+    bool Close(const EVT_CTRL2 &);
+
+    Time GetTstart() const { return Time(fTstart[0], fTstart[1]); }
+    Time GetTstop() const  { return Time(fTstop[0],  fTstop[1]);  }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DataWriteRaw.cc
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteRaw.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteRaw.cc	(revision 18732)
@@ -0,0 +1,127 @@
+#include "DataWriteRaw.h"
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+
+using namespace std;
+
+void DataWriteRaw::WriteBlockHeader(uint32_t type, uint32_t ver, uint32_t cnt, uint32_t len)
+{
+    const uint32_t val[4] = { type, ver, cnt, len };
+
+    fOut.write(reinterpret_cast<const char*>(val), sizeof(val));
+}
+
+template<typename T>
+void DataWriteRaw::WriteValue(const T &t)
+{
+    fOut.write(reinterpret_cast<const char*>(&t), sizeof(T));
+}
+
+bool DataWriteRaw::Open(const RUN_HEAD &h, const FAD::RunDescription &)
+{
+    const string name = FormFileName("bin");
+    if (access(name.c_str(), F_OK)==0)
+    {
+        Error("File '"+name+"' already exists.");
+        return false;
+    }
+
+    fFileName = name;
+
+    errno = 0;
+    fOut.open(name.c_str(), ios_base::out);
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << name << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    fCounter = 0;
+
+    static uint32_t FACT = 0xFAC77e1e;
+
+    fOut.write(reinterpret_cast<char*>(&FACT), 4);
+
+    WriteBlockHeader(kIdentifier, 1, 0, 8);
+    WriteValue(uint32_t(0));
+    WriteValue(GetRunId());
+
+    WriteBlockHeader(kRunHeader, 1, 0, sizeof(RUN_HEAD)-sizeof(PEVNT_HEADER*));
+    fOut.write(reinterpret_cast<const char*>(&h), sizeof(RUN_HEAD)-sizeof(PEVNT_HEADER*));
+
+    for (int i=0; i<40; i++)
+    {
+        WriteBlockHeader(kBoardHeader, 1, i, sizeof(PEVNT_HEADER));
+        fOut.write(reinterpret_cast<const char*>(h.FADhead+i), sizeof(PEVNT_HEADER));
+    }
+
+    // FIXME: Split this
+    const vector<char> block(sizeof(uint32_t)/*+sizeof(RUN_TAIL)*/);
+    WriteBlockHeader(kRunSummary, 1, 0, block.size());
+
+    fPosTail = fOut.tellp();
+    fOut.write(block.data(), block.size());
+
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::write() failed for '" << name << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    return true;
+}
+
+bool DataWriteRaw::WriteEvt(const EVT_CTRL2 &evt)
+{
+    const EVENT &e = *evt.fEvent;
+
+    const int sh = sizeof(EVENT)-2 + NPIX*e.Roi*2;
+
+    WriteBlockHeader(kEvent, 1, fCounter++, sh);
+    fOut.write(reinterpret_cast<const char*>(&e)+2, sh);
+    return true;
+}
+
+bool DataWriteRaw::Close()
+{
+    WriteBlockHeader(kEndOfFile, 0, 0, 0);
+
+    /*
+    if (tail)
+    {
+        fOut.seekp(fPosTail);
+
+        WriteValue(uint32_t(1));
+        fOut.write(reinterpret_cast<const char*>(tail), sizeof(RUN_TAIL));
+    }*/
+
+    if (!fOut)
+    {
+        ostringstream str;
+
+        str << "ofstream::write() failed for '" << GetFileName() << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    fOut.close();
+
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::close() failed for '" << GetFileName() << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    return true;
+}
Index: branches/FACT++_part_filenames/src/DataWriteRaw.h
===================================================================
--- branches/FACT++_part_filenames/src/DataWriteRaw.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DataWriteRaw.h	(revision 18732)
@@ -0,0 +1,89 @@
+#ifndef FACT_DataWriteRaw
+#define FACT_DataWriteRaw
+
+#include "DataProcessorImp.h"
+
+class DataWriteRaw : public DataProcessorImp
+{
+    std::ofstream fOut;
+
+    off_t fPosTail;
+
+    uint32_t fCounter;
+
+
+    // WRITE uint32_t 0xFAC77e1e  (FACT Tele)
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 1
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE uint32_t TELESCOPE ID
+    // WRITE uint32_t RUNID
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 2
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE          HEADER
+    // ===
+    // [ 40 TIMES
+    //    WRITE uint32_t TYPE(>0)       == 3
+    //    WRITE uint32_t ID(>0)         == 0..39
+    //    WRITE uint32_t VERSION(>0)    == 1
+    //    WRITE uint32_t LENGTH
+    //    -
+    //    WRITE          BOARD-HEADER
+    // ]
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 4
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE          FOOTER (empty)
+    // ===
+    // [ N times
+    //    WRITE uint32_t TYPE(>0)       == 10
+    //    WRITE uint32_t ID(>0)         == counter
+    //    WRITE uint32_t VERSION(>0)    == 1
+    //    WRITE uint32_t LENGTH HEADER
+    //    -
+    //    WRITE          HEADER+DATA
+    // ]
+    // ===
+    // WRITE uint32_t TYPE   ==0
+    // WRITE uint32_t VERSION==0
+    // WRITE uint32_t LENGTH ==0
+    // ===
+    // Go back and write footer
+
+    void WriteBlockHeader(uint32_t type, uint32_t ver, uint32_t cnt, uint32_t len);
+
+    template<typename T>
+        void WriteValue(const T &t);
+
+
+public:
+    DataWriteRaw(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataProcessorImp(path, night, id, imp), fPosTail(0) { }
+    ~DataWriteRaw() { if (fOut.is_open()) Close(); }
+
+    enum
+    {
+        kEndOfFile = 0,
+        kIdentifier = 1,
+        kRunHeader,
+        kBoardHeader,
+        kRunSummary,
+        kEvent,
+    };
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &) { return Close(); }
+    bool Close();
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Database.h
===================================================================
--- branches/FACT++_part_filenames/src/Database.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Database.h	(revision 18732)
@@ -0,0 +1,66 @@
+#ifndef FACT_Database
+#define FACT_Database
+
+#include <exception>
+#include <boost/regex.hpp>
+
+#include <mysql++/mysql++.h>
+
+struct DatabaseName
+{
+    std::string user;
+    std::string passwd;
+    std::string server;
+    std::string db;
+    int port;
+
+    DatabaseName(const std::string &database)
+    {
+        static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+
+        boost::smatch what;
+        if (!boost::regex_match(database, what, expr, boost::match_extra))
+            throw std::runtime_error("Couldn't parse database URI '"+database+"'.");
+
+        if (what.size()!=10)
+            throw std::runtime_error("Error parsing database URI '"+database+"'.");
+
+        user   = what[2];
+        passwd = what[4];
+        server = what[5];
+        db     = what[9];
+
+        try
+        {
+            port = stoi(std::string(what[7]));
+        }
+        catch (...)
+        {
+            port = 0;
+        }
+    }
+
+    std::string uri() const
+    {
+        std::string rc;
+        if (!user.empty())
+            rc += user+"@";
+        rc += server;
+        if (port)
+            rc += ":"+std::to_string(port);
+        if (!db.empty())
+            rc += "/"+db;
+        return rc;
+    }
+};
+
+class Database : public DatabaseName, public mysqlpp::Connection
+{
+public:
+    Database(const std::string &desc) : DatabaseName(desc),
+        mysqlpp::Connection(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port)
+    {
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Description.cc
===================================================================
--- branches/FACT++_part_filenames/src/Description.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Description.cc	(revision 18732)
@@ -0,0 +1,181 @@
+// **************************************************************************
+/** @struct Description
+
+@brief A struct which stores a name, a unit and a comment
+
+To have proper descriptions of commands and services in the network
+(and later proper informations in the FITS files) this struct provides
+a simple storage for a name, a unit and a comment.
+
+Assume you want to write a descriptive string for a command with three arguments.
+It could look like this:
+
+   COMMAND=Description|int[addr]:Address range (from - to)|val[byte]:Value to be set
+
+Description is a general description of the command or service itself,
+int and val are the names of the arguments (e.g. names of FITS columns),
+addr and byte have the meaning of a unit (e.g. unit of FITS column)
+and the text after the colon is a description of the arguments
+(e.g. comment of a FITS column). The description must not contain a
+line-break character \n.
+
+Such a string can then be converted with SplitDescription into a vector
+of Description objects, each containing the name, the unit and a
+comment indivdually. The first object will contain COMMAND as name and
+Description as comment. The unit will remain empty.
+
+You can omit either the name, the unit or the comment or any
+combination of them. The descriptions of the individual format strings
+are separated by a vertical line. If you want to enclose the name into
+[]-braces (e.g. marking an optional argument in a dim command), you
+have add empty brackets for the units.
+
+For a suggestion for rules for the names please have a look at:
+http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/ofwg_recomm/r15.html
+
+For units please see:
+http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/ogip_93_001.html
+
+*/
+// **************************************************************************
+#include "Description.h"
+
+#include <sstream>
+
+#include "tools.h"
+
+using namespace std;
+using namespace Tools;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Description object
+//!
+//! @param n
+//!     Name of the Description, e.g. "temp"
+//!
+//! @param c
+//!     Descriptive text of the Description, e.g. "Temperature of the moon"
+//!
+//! @param u
+//!     Unit of the Description, e.g. "K"
+//
+Description::Description(const string &n, const string &c, const string &u)
+    : name(Trim(n)), comment(Trim(c)), unit(Trim(u))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function breaks down a descriptive string into its components.
+//! For details see class reference.
+//!
+//! @param buffer
+//!     string which should be broekn into pieces
+//!
+//! @returns
+//!     A vector<Description> containing all the descriptions found.
+//!     The first entry contains the Description members name and comment,
+//!     corresponding to the service or command name the Description
+//!     list is for and its corresponding description.
+//
+vector<Description> Description::SplitDescription(const string &buffer)
+{
+    const size_t p0 = buffer.find_first_of('=');
+
+    const string svc  = buffer.substr(0, p0);
+    const string desc = buffer.substr(p0+1);
+
+    const size_t p = desc.find_first_of('|');
+
+    // Extract a general description
+    const string d = Trim(desc.substr(0, p));
+
+    vector<Description> vec;
+    vec.emplace_back(svc, d);
+
+    if (p==string::npos)
+        return vec;
+
+    string buf;
+    stringstream stream(desc.substr(p+1));
+    while (getline(stream, buf, '|'))
+    {
+        if (buf.empty())
+            continue;
+
+        const size_t p1 = buf.find_first_of(':');
+
+        const string comment = p1==string::npos ? "" : buf.substr(p1+1);
+        if (p1!=string::npos)
+            buf.erase(p1);
+
+        const size_t p2 = buf.find_last_of('[');
+        const size_t p3 = buf.find_last_of(']');
+
+        const bool hasunit = p2<p3 && p2!=string::npos;
+
+        const string unit = hasunit ? buf.substr(p2+1, p3-p2-1) : "";
+        const string name = hasunit ? buf.substr(0, p2) : buf;
+
+        vec.emplace_back(name, comment, unit);
+    }
+
+    return vec;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Returns a string with an html formatted text containing the descriptions
+//! as returned by SplitDescription
+//!
+//! @param vec
+//!     vector of Description for the individual arguments. First
+//!     element is the global description of the command or service.
+//!
+//! @returns
+//!     string with html formatted text
+//
+string Description::GetHtmlDescription(const vector<Description> &vec)
+{
+    stringstream str;
+    str << "<H3>" << vec[0].name << "</H3>";
+
+    str << "Usage:";
+    for (vector<Description>::const_iterator i=vec.begin()+1; i!=vec.end(); i++)
+        str << "&nbsp;<font color='maroon'>&lt;" << i->name <<    "&gt;</font>";
+
+    if (vec.size()==1)
+        str << " &lt;no arguments&gt;";
+
+    str << "<P>" << vec[0].comment << "<P>";
+
+    str << "<table>";
+
+    for (vector<Description>::const_iterator i=vec.begin()+1; i!=vec.end(); i++)
+    {
+        str << "<tr>"
+            "<td><font color='maroon'>" << i->name <<     "</font>";
+
+        if (i->unit.empty() && !i->comment.empty() && !i->name.empty())
+            str << ':';
+
+        str << "</td>";
+
+        if (!i->unit.empty())
+            str << "<td><font color='green'>[" << i->unit <<    "]</font>";
+
+        if (!i->unit.empty() && !i->comment.empty())
+            str << ':';
+
+        str <<
+            "</td>"
+            "<td><font color='navy'>"   << i->comment <<  "</font></td>"
+            "</tr>";
+    }
+
+    str << "</table>";
+
+    return str.str();
+}
Index: branches/FACT++_part_filenames/src/Description.h
===================================================================
--- branches/FACT++_part_filenames/src/Description.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Description.h	(revision 18732)
@@ -0,0 +1,19 @@
+#ifndef FACT_Description
+#define FACT_Description
+
+#include <string>
+#include <vector>
+
+struct Description
+{
+    std::string name;
+    std::string comment;
+    std::string unit;
+
+    static std::vector<Description> SplitDescription(const std::string &buffer);
+    static std::string GetHtmlDescription(const std::vector<Description> &vec);
+
+    Description(const std::string &n, const std::string &c, const std::string &u="");
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Dim.h
===================================================================
--- branches/FACT++_part_filenames/src/Dim.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Dim.h	(revision 18732)
@@ -0,0 +1,106 @@
+#ifndef FACT_Dim
+#define FACT_Dim
+
+#include "DimSetup.h"
+
+#include <string>
+#include <vector>
+
+#include "dic.hxx"
+
+namespace Dim
+{
+    // --------------------------------------------------------------------------
+    //
+    //! Simplification wrapper to send a command without data
+    //!
+    //! Example:
+    //!   - Dim::SendCommand("SERVER/COMMAND");
+    //!
+    //! @param command
+    //!     Dim command identifier
+    //!
+    //! @returns
+    //!     the return value of DimClient::sendCommand
+    //!
+    inline bool SendCommand(const std::string &command)
+    {
+        return DimClient::sendCommand(command.c_str(), NULL, 0);
+    }
+    inline void SendCommandNB(const std::string &command)
+    {
+        DimClient::sendCommandNB(command.c_str(), NULL, 0);
+    }
+
+    // --------------------------------------------------------------------------
+    //
+    //! Simplification wrapper to send a command with the given data
+    //!
+    //! Example:
+    //!   - Dim::SendCommand("SERVER/COMMAND", uint16_t(42));
+    //!   - struct tm t; Dim::SendCommand("SERVER/TIME", t);
+    //!
+    //! @param command
+    //!     Dim command identifier
+    //!
+    //! @param t
+    //!     object to be sent, the pointer to the data to be sent is
+    //!     set to &t
+    //!
+    //! @tparam T
+    //!     type of the data to be sent. The size of the data to be sent
+    //!     is determined as sizeof(T)
+    //!
+    //! @returns
+    //!     the return value of DimClient::sendCommand
+    //!
+    template<typename T>
+        inline bool SendCommand(const std::string &command, const T &t)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<T*>(&t), sizeof(t));
+    }
+
+    template<>
+        inline bool SendCommand(const std::string &command, const std::string &t)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<char*>(t.c_str()), t.length()+1);
+    }
+
+    template<typename T>
+        inline bool SendCommand(const std::string &command, const std::vector<T> &v)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<char*>(v.data()), v.size()*sizeof(T));
+    }
+
+    inline bool SendCommand(const std::string &command, const void *d, size_t s)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<void*>(d), s);
+    }
+
+    // -------------------------------------------------------------------------
+
+    template<typename T>
+        inline void SendCommandNB(const std::string &command, const T &t)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<T*>(&t), sizeof(t));
+    }
+
+    template<>
+        inline void SendCommandNB(const std::string &command, const std::string &t)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<char*>(t.c_str()), t.length()+1);
+    }
+
+    template<typename T>
+        inline void SendCommandNB(const std::string &command, const std::vector<T> &v)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<T*>(v.data()), v.size()*sizeof(T));
+    }
+
+    inline void SendCommandNB(const std::string &command, const void *d, size_t s)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<void*>(d), s);
+    }
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/DimData.h
===================================================================
--- branches/FACT++_part_filenames/src/DimData.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimData.h	(revision 18732)
@@ -0,0 +1,42 @@
+#ifndef FACT_DimData
+
+struct DimData
+{
+    const int               qos;
+    const std::string       name;
+    const std::string       format;
+    const std::vector<char> data;
+    const Time              time;
+
+    Time extract(DimInfo *inf) const
+    {
+        // Must be called in exactly this order!
+        const int tsec = inf->getTimestamp();
+        const int tms  = inf->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+
+    DimData(DimInfo *inf) : qos(inf->getQuality()),
+        name(inf->getName()),
+        format(inf->getFormat()),
+        data(inf->getString(), inf->getString()+inf->getSize()),
+        time(extract(inf))
+    {
+    }
+
+    template<typename T>
+        T get(uint32_t offset=0) const { return *reinterpret_cast<const T*>(data.data()+offset); }
+
+    template<typename T>
+        const T *ptr(uint32_t offset=0) const { return reinterpret_cast<const T*>(data.data()+offset); }
+
+    template<typename T>
+        const T &ref(uint32_t offset=0) const { return *reinterpret_cast<const T*>(data.data()+offset); }
+
+    const char *c_str() const { return (char*)data.data(); }
+
+    size_t size() const { return data.size(); }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DimDescriptionService.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimDescriptionService.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimDescriptionService.cc	(revision 18732)
@@ -0,0 +1,175 @@
+// **************************************************************************
+/** @class DimDescriptionService
+
+@brief A DimService which broadcasts descriptions for services and commands
+
+The DimDescriptionService creates a service with the name of the server like
+SERVER/SERVICE_DESC. This is meant in addition to the SERVICE_LIST service
+of each node to contain a description of the service and its arguments.
+
+Assume you have created a service (or command) with the format I:2;F:1
+a valid description string would look like
+
+   Description|int[addr]:Address range (from - to)|val[byte]:Value to be set
+
+Description is a general description of the command or service itself,
+int and val are the names of the arguments (e.g. names of FITS columns),
+addr and byte have the meaning of a unit (e.g. unit of FITS column)
+and the text after the colon is a description of the arguments
+(e.g. comment of a FITS column). The description must not contain a
+line-break character \n.
+
+You can omit either the name, the unit or the comment or any combination of them.
+The descriptions of the individual format strings are separated by a vertical line.
+
+The description should contain as many descriptions as format chunks, e.g.
+
+ - I:1          should contain one description chunks
+ - I:1;F:1      should contain two description chunks
+ - I:2;F:1      should contain two description chunks
+ - I:2;I:1;F:1  should contain three description chunks
+
+*/
+// **************************************************************************
+#include "DimDescriptionService.h"
+
+#include <stdexcept>
+
+#include "dis.hxx"
+#include "Time.h"
+
+using namespace std;
+
+DimService *DimDescriptionService::fService = 0;
+int         DimDescriptionService::fCount   = 0;
+std::string DimDescriptionService::fData    = "";
+
+set<string> DimDescribedService::fServices;
+
+// --------------------------------------------------------------------------
+//
+//! When the constructor is first called, a service with the name
+//! SERVER/SERVICE_DESC is created. The server name SERVER is retrieved
+//! from DimServer::itsName. If DimServer::itsName is empty, the
+//! server name is extracted from the given name as the part before the
+//! first '/'. A string "name=format\n" is added to fData and stored
+//! in fDescription.
+//!
+//! A counter fCount for the number of instantiations is increased.
+//!
+//! @param name
+//!     The name of the service or command to be described, e.g. SERVER/COMMAND
+//!
+//! @param desc
+//!     A description string. For details see class reference
+//!
+//! @throws
+//!     If a server name couldn't be reliably determined a logic_error
+//!     exception is thrown; if the given description contains a '\n'
+//!     also a logic_error is thrown.
+//
+DimDescriptionService::DimDescriptionService(const std::string &name, const std::string &desc)
+{
+    string server = DimServer::itsName ? DimServer::itsName : "";
+    if (server.empty())
+    {
+        const size_t p = name.find_first_of('/');
+        if (p==string::npos)
+            throw logic_error("Could not determine server name");
+
+        server = name.substr(0, p);
+    }
+
+    if (desc.find_first_of('\n')!=string::npos)
+            throw logic_error("Description for "+name+" contains '\\n'");
+
+    if (!fService)
+    {
+        fService = new DimService((server+"/SERVICE_DESC").c_str(), const_cast<char*>(""));
+        fData =
+            server + "/SERVICE_DESC"
+            "=Descriptions of services or commands and there arguments"
+            "|Description[string]:For a detailed "
+            "explanation of the descriptive string see the class reference "
+            "of DimDescriptionService.\n" +
+            server + "/CLIENT_LIST"
+            "=Native Dim service: A list of all connected clients\n" +
+            server + "/VERSION_NUMBER"
+            "=Native Dim service: Version number of Dim in use"
+            "|DimVer[int]:Version*100+Release (e.g. V19r17 = 1917)\n" +
+            server + "/EXIT"
+            "=This is a native Dim command: Exit program"
+            "remotely. FACT++ programs use the given number as return code."
+            "|Rc[int]:Return code, under normal circumstances this should be 0 or 1 (42 will call exit() directly, 0x42 will call abort() directly.\n" +
+            server + "/SERVICE_LIST"
+            "=Native Dim service: List of services, commands and formats"
+            "|ServiceList[string]:For details see the Dim manual.\n";
+    }
+
+
+    fCount++;
+
+    fDescription = name + '=' + desc;
+
+    if (fData.find(fDescription+'\n')!=std::string::npos)
+        return;
+
+    fData += fDescription + '\n';
+
+    const Time t;
+    fService->setTimestamp(t.Time_t(), t.ms());
+    fService->setData(const_cast<char*>(fData.c_str()));
+    fService->updateService();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! If fDescription is found in fData it is removed from fData.
+//! The counter fCount is decreased and fService deleted if the counter
+//! reached 0.
+//
+DimDescriptionService::~DimDescriptionService()
+{
+    const size_t pos = fData.find(fDescription+'\n');
+    if (pos!=std::string::npos)
+        fData.replace(pos, fDescription.size()+1, "");
+
+    if (--fCount>0)
+        return;
+
+    delete fService;
+    fService=0;
+}
+
+void DimDescribedService::setTime(const Time &t)
+{
+    setTimestamp(t.Time_t(), t.ms());
+}
+
+void DimDescribedService::setTime()
+{
+    setTime(Time());
+}
+
+int DimDescribedService::Update(const Time &t)
+{
+    setTime(t);
+    return updateService();
+}
+
+int DimDescribedService::Update()
+{
+    return Update(Time());
+}
+
+int DimDescribedService::Update(const string &data)
+{
+    return Update(data.data());
+}
+
+int DimDescribedService::Update(const char *data)
+{
+    setData(data);
+    return Update();
+}
Index: branches/FACT++_part_filenames/src/DimDescriptionService.h
===================================================================
--- branches/FACT++_part_filenames/src/DimDescriptionService.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimDescriptionService.h	(revision 18732)
@@ -0,0 +1,130 @@
+#ifndef FACT_DimDescriptionService
+#define FACT_DimDescriptionService
+
+#include <set>
+#include <array>
+#include <string>
+#include <vector>
+
+class Time;
+class DimService;
+
+class DimDescriptionService
+{
+    static int         fCount;     /// Counter to count the number of instatiations
+    static DimService *fService;   /// Pointer to the DimService distributing the desscriptions
+    static std::string fData;      /// Data to be distributed with the service
+
+    std::string fDescription;      /// Local storage for the applied description
+
+public:
+    DimDescriptionService(const std::string &name, const std::string &format);
+    virtual ~DimDescriptionService();
+
+    std::string GetDescription() const { return fDescription; }
+};
+
+#include "dis.hxx"
+
+class DimDescribedService : public DimDescriptionService, public DimService
+{
+    static std::set<std::string> fServices;
+
+public:
+    template<typename T>
+    DimDescribedService(const std::string &name, const T &val, const char *desc)
+        : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), const_cast<T&>(val))
+    {
+        fServices.insert(getName());
+        setQuality(0);
+    }
+
+    template<typename T>
+    DimDescribedService(const std::string &name, const char *format, const T &val, const char *desc)
+        : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), format, const_cast<T*>(&val), sizeof(T))
+    {
+        fServices.insert(getName());
+        setQuality(0);
+    }
+
+    DimDescribedService(const std::string &name, const char *format, const char *desc)
+       : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), format, (void*)NULL, 0)
+    {
+        fServices.insert(getName());
+        setQuality(0);
+        // FIXME: compare number of ; with number of |
+    }
+
+    ~DimDescribedService()
+    {
+        fServices.erase(getName());
+    }
+
+    static const std::set<std::string> &GetServices() { return fServices; }
+
+    void setData(const void *ptr, size_t sz)
+    {
+        DimService::setData(const_cast<void*>(ptr), sz);
+    }
+
+    void setData(const char *str)
+    {
+        DimService::setData(const_cast<char*>(str));
+    }
+
+    void setData(const std::string &str)
+    {
+        setData(str.data());
+    }
+
+    template<class T>
+    void setData(const T &data)
+    {
+        setData(&data, sizeof(T));
+    }
+
+    template<typename T>
+    void setData(const std::vector<T> &data)
+    {
+        setData(data.data(), data.size()*sizeof(T));
+    }
+
+    template<class T, size_t N>
+    void setData(const std::array<T, N> &data)
+    {
+        setData(data.data(), N*sizeof(T));
+    }
+
+    void setTime(const Time &t);
+    void setTime();
+
+    int Update();
+    int Update(const Time &t);
+    int Update(const std::string &data);
+    int Update(const char *data);
+
+    template<class T>
+    int Update(const T &data)
+    {
+        setData(&data, sizeof(T));
+        return Update();
+    }
+
+    template<typename T>
+    int Update(const std::vector<T> &data)
+    {
+        setData(data);
+        return Update();
+    }
+
+    template<class T, size_t N>
+    int Update(const std::array<T, N> &data)
+    {
+        setData(data);
+        return Update();
+    }
+
+    // FIXME: Implement callback with boost::function instead of Pointer to this
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DimErrorRedirecter.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimErrorRedirecter.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimErrorRedirecter.cc	(revision 18732)
@@ -0,0 +1,111 @@
+// **************************************************************************
+/** @class DimErrorRedirecter
+
+@brief A base class taking care of padding, exit handler and error handlers
+
+This class first switches off padding for the DimServer and the DimClient
+(dis and dic). Furthermore, it redirects both error handlers to the
+DimErrorRedirecter. Redirect the exit handler.
+
+Only one instance of this class is allowed, since all Dim handlers are
+global.
+
+In the destructor of the class the handlers are correctly restored.
+The padding setup is kept.
+
+For FACT++ all Dim data is transmitted without padding!
+
+To catch the error messages overwrite the errorHandler. The errorHandler
+of the DimErrorRedirecter redirects the error messages to the logging
+stream given in the constructor.
+
+To catch the exit requests overwrite the exitHandler.
+
+*/
+// **************************************************************************
+#include "DimErrorRedirecter.h"
+
+#include <dic.hxx>
+
+#include "WindowLog.h"
+#include "MessageImp.h"
+
+using namespace std;
+
+int DimErrorRedirecter::fDimErrorRedireterCnt = 0;
+
+// --------------------------------------------------------------------------
+//
+//! - disable padding for dim server and dim client
+//! - redirect DimClient error handler
+//! - redirect DimServer error handler
+//! - set exit handler of DimServer
+//
+DimErrorRedirecter::DimErrorRedirecter(MessageImp &imp) : fMsg(imp)
+{
+    if (fDimErrorRedireterCnt++)
+        throw logic_error("ERROR - More than one instance of MyHandlers.");
+
+    dic_disable_padding();
+    dis_disable_padding();
+
+    DimServer::addExitHandler(this);
+    DimServer::addErrorHandler(this);
+    DimClient::addErrorHandler(this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! - reset DimClient error handler
+//! - reset DimServer error handler
+//! - reset exit handler of DimServer
+//
+DimErrorRedirecter::~DimErrorRedirecter()
+{
+    DimClient::addErrorHandler(0);
+    DimServer::addErrorHandler(0);
+    DimServer::addExitHandler(0);
+}
+
+void DimErrorRedirecter::errorHandler(int severity, int code, char *msg)
+{
+    static const string id = "<DIM> ";
+
+    switch (severity)
+    {
+    case DIM_FATAL:   fMsg.Fatal(id+msg); break;
+    case DIM_ERROR:   fMsg.Error(id+msg); break;
+    case DIM_WARNING: fMsg.Warn(id+msg);  break;
+    case DIM_INFO:    fMsg.Info(id+msg);  break;
+    default:
+        ostringstream str;
+        str << "DIM message with unknown severity (" << severity << "): ";
+        str << msg << " (" << code << ")";
+        fMsg.Warn(str);
+        break;
+    }
+
+    /*
+     DIMDNSUNDEF	DIM_FATAL	DIM_DNS_NODE undefined
+     DIMDNSREFUS	DIM_FATAL	DIM_DNS refuses connection
+     DIMDNSDUPLC	DIM_FATAL	Service already exists in DNS
+     DIMDNSEXIT	        DIM_FATAL	DNS requests server to EXIT
+     DIMDNSTMOUT	DIM_WARNING	Server failed sending Watchdog
+
+     DIMDNSCNERR	DIM_ERROR	Connection to DNS failed
+     DIMDNSCNEST	DIM_INFO	Connection to DNS established
+
+     DIMSVCDUPLC	DIM_ERROR	Service already exists in Server
+     DIMSVCFORMT	DIM_ERROR	Bad format string for service
+     DIMSVCINVAL	DIM_ERROR	Invalid Service ID
+
+     DIMTCPRDERR	DIM_ERROR	TCP/IP read error
+     DIMTCPWRRTY	DIM_WARNING	TCP/IP write error - Retrying
+     DIMTCPWRTMO	DIM_ERROR	TCP/IP write error - Disconnected
+     DIMTCPLNERR	DIM_ERROR	TCP/IP listen error
+     DIMTCPOPERR	DIM_ERROR	TCP/IP open server error
+     DIMTCPCNERR	DIM_ERROR	TCP/IP connection error
+     DIMTCPCNEST	DIM_INFO	TCP/IP connection established
+     */
+}
+
Index: branches/FACT++_part_filenames/src/DimErrorRedirecter.h
===================================================================
--- branches/FACT++_part_filenames/src/DimErrorRedirecter.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimErrorRedirecter.h	(revision 18732)
@@ -0,0 +1,23 @@
+#ifndef FACT_DimErrorRedirecter
+#define FACT_DimErrorRedirecter
+
+#include <dis.hxx>
+
+class MessageImp;
+
+class DimErrorRedirecter : public DimErrorHandler, public DimExitHandler
+{
+private:
+    static int fDimErrorRedireterCnt;
+
+    MessageImp &fMsg;
+
+    void errorHandler(int severity, int code, char *msg);
+    void exitHandler(int code) { exit(code); }
+
+public:
+    DimErrorRedirecter(MessageImp &imp);
+    ~DimErrorRedirecter();
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DimLoggerCheck.h
===================================================================
--- branches/FACT++_part_filenames/src/DimLoggerCheck.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimLoggerCheck.h	(revision 18732)
@@ -0,0 +1,73 @@
+#ifndef FACT_DimLoggerCheck
+#define FACT_DimLoggerCheck
+
+#include <set>
+#include <string>
+#include <functional>
+
+#include "tools.h"
+#include "EventImp.h"
+#include "DimDescriptionService.h"
+
+class DimLoggerCheck
+{
+   //typedef std::function<int(const EventImp &)> callback;
+    typedef std::function<int(const std::map<const std::string, const int> &)> callback;
+
+    callback fCallback;
+
+    const std::string name;
+    std::map<const std::string, const int> list;
+
+    virtual int Handler(const EventImp &evt)
+    {
+        using namespace std;
+
+        const set<string>   vserv = DimDescribedService::GetServices();
+        const vector<string> ltxt = Tools::Split(evt.GetString(), "\n");
+
+        map<string, int> vsubs;
+        for (auto it=ltxt.begin(); it!=ltxt.end(); it++)
+        {
+            const vector<string> col = Tools::Split(*it, ",");
+
+            if (col.size()==2 && col[0].substr(0, name.size()+1)==name+"/")
+                vsubs[col[0]] = atoi(col[1].c_str());
+        }
+
+        list.clear();
+        for (auto it=vserv.begin(); it!=vserv.end(); it++)
+        {
+            const auto is = vsubs.find(*it);
+            list.insert(make_pair(it->substr(name.size()+1), is==vsubs.end() ? -2 : is->second));
+        }
+
+        list.erase("STATE_LIST");
+
+        return fCallback ? fCallback(list) : StateMachineImp::kSM_KeepState;
+    }
+
+public:
+    DimLoggerCheck() { }
+    DimLoggerCheck(const std::string &n) : name(n)
+    {
+    }
+    virtual ~DimLoggerCheck()
+    {
+    }
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe("DATA_LOGGER/SUBSCRIPTIONS")
+            (imp.Wrap(std::bind(&DimLoggerCheck::Handler, this, std::placeholders::_1)));
+    }
+
+    void SetCallback(const callback &cb)
+    {
+        fCallback = cb;
+    }
+
+    const std::map<const std::string, const int> &GetList() const { return list; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DimNetwork.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimNetwork.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimNetwork.cc	(revision 18732)
@@ -0,0 +1,142 @@
+#include "DimNetwork.h"
+
+StateClient::StateClient(const std::string &name, MessageImp &imp) :
+    MessageDimRX(name, imp), fState(-2),
+    fInfoState((name + "/STATE").c_str(), (void*)NULL, 0, this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Extract the information about the state and its message. Store the
+//! state and redirect the message to fMsg.
+//
+void StateClient::infoHandler()
+{
+    DimInfo *curr = getInfo(); // get current DimInfo address
+    if (!curr)
+        return;
+
+    if (curr==&fInfoState)
+    {
+        const bool disconnected = fInfoState.getSize()==0;
+
+        // Make sure getTimestamp is called _before_ getTimestampMillisecs
+        const int tsec = fInfoState.getTimestamp();
+        const int tms  = fInfoState.getTimestampMillisecs();
+
+        fState     = disconnected ? -2 : fInfoState.getQuality();
+        fStateTime = Time(tsec, tms*1000);
+
+        const string name = fInfoState.getName();
+
+        fMsg.StateChanged(fStateTime, name.substr(0, name.length()-6),
+                          disconnected ? "" : fInfoState.getString(), fState);
+
+        return;
+    }
+
+    MessageDimRX::infoHandler();
+}
+
+// ==========================================================================
+
+// --------------------------------------------------------------------------
+//
+//! Delete all StateClient objects from teh list and clear the list.
+//
+void DimNetwork::DeleteClientList()
+{
+    for (ClientList::iterator i=fClientList.begin();
+         i!=fClientList.end(); i++)
+        delete i->second;
+
+    fClientList.clear();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the StateClient for the given server. Don't forget to
+//! call this function if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be added
+//!
+//! @throws
+//!     a runtime_error is the server is already in the list
+//
+void DimNetwork::AddServer(const string &s)
+{
+    DimServiceInfoListImp::AddServer(s);
+    if (s=="DIM_DNS")
+        return;
+
+    // Check if this server is already in the list.
+    // This should never happen if Dim works reliable
+    const ClientList::iterator v = fClientList.find(s);
+    if (v!=fClientList.end())
+    {
+        stringstream err;
+        err << "Server '" << s << "' in list not as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    // Add the new server to the server list
+    fClientList[s] = new StateClient(s, *this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the StateClient for the given server. Don't forget to
+//! call this function if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be removed
+//!
+//! @throws
+//!     a runtime_error is the server to be removed is not in the list
+//
+void DimNetwork::RemoveServer(string s)
+{
+    DimServiceInfoListImp::RemoveServer(s);
+    if (s=="DIM_DNS")
+        return;
+
+    const ClientList::iterator v = fClientList.find(s);
+    if (v==fClientList.end())
+    {
+        stringstream err;
+        err << "Server '" << s << "' not in list as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    // Remove the server from the server list
+    delete v->second;
+
+    fClientList.erase(v);
+}
+
+// --------------------------------------------------------------------------
+//
+//! RemovesAll StateClients. Don't forget to call this function if it
+//! is overwritten in a derived class.
+//!
+void DimNetwork::RemoveAllServers()
+{
+    DimServiceInfoListImp::RemoveAllServers();
+    DeleteClientList();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param server
+//!    server for which the current state should be returned
+//!
+//! @returns
+//!    the current state of the given server, -2 if the server was not found
+//!
+int DimNetwork::GetCurrentState(const string &server) const
+{
+    const ClientList::const_iterator v = fClientList.find(server);
+    return v==fClientList.end() ? -2 : v->second->GetState();
+}
Index: branches/FACT++_part_filenames/src/DimNetwork.h
===================================================================
--- branches/FACT++_part_filenames/src/DimNetwork.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimNetwork.h	(revision 18732)
@@ -0,0 +1,89 @@
+#ifndef FACT_DimNetwork
+#define FACT_DimNetwork
+
+// **************************************************************************
+/** @class StateClient
+
+@brief A simple Dim client diriving from MessageDimRX subscribing to the STATE service
+
+This is a simple dim client which subscribes to the MESSAGE and STATE
+service of a server. It stores the last state and its time as well as
+the last message sent.
+
+**/
+// **************************************************************************
+#include "MessageDim.h"
+#include "Time.h"
+
+class StateClient : public MessageDimRX
+{
+private:
+    Time fStateTime;           /// Combine into one MTime (together with value)
+    int  fState;               /// -2 not initialized, -1 not connected, 0>= state of client
+
+    DimStampedInfo fInfoState; /// The dim service subscription
+
+protected:
+    void infoHandler();
+
+public:
+    StateClient(const std::string &name, MessageImp &imp);
+
+    bool IsConnected() const { return fState>=0; }
+    int  GetState() const    { return fState;    }
+
+    const char *GetName() const { return const_cast<DimStampedInfo&>(fInfoState).getName(); }
+};
+
+
+
+// **************************************************************************
+/** @class DimNetwork
+
+@brief Implements automatic subscription to MESSAGE and STATE services
+
+This class derives from DimServiceInfoList, so that it has a full
+overview of all commands and services existing in the current Dim
+network. In addition it automatically subscribes to all available
+MESSAGE and STATE services and redirects them to its MessageImp base class.
+
+@todo
+- maybe the StateClient can be abondoned, this way it would be possible
+  to subscribe to only available MESSAGE and STATE services
+
+**/
+// **************************************************************************
+#include "DimServiceInfoList.h"
+#include "DimErrorRedirecter.h"
+
+using namespace std;
+
+class DimNetwork : public MessageImp, public DimErrorRedirecter, public DimServiceInfoListImp
+{
+private:
+    void DeleteClientList();
+
+protected:
+    typedef std::map<const std::string, StateClient*> ClientList;
+
+    ClientList fClientList; /// A list with all MESSAGE services to which we subscribed
+
+    void AddServer(const std::string &s);
+    void RemoveServer(std::string s);
+    void RemoveAllServers();
+
+public:
+    DimNetwork(std::ostream &out=std::cout)
+        : MessageImp(out), DimErrorRedirecter(static_cast<MessageImp&>(*this))
+    {
+    }
+    ~DimNetwork()
+    {
+        DeleteClientList();
+    }
+
+    int GetCurrentState(const string &server) const;
+};
+
+
+#endif
Index: branches/FACT++_part_filenames/src/DimServerList.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimServerList.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimServerList.cc	(revision 18732)
@@ -0,0 +1,143 @@
+// **************************************************************************
+/** @class DimServerList
+
+@brief Maintains a list of all servers based on DIS_DNS/SERVER_LIST
+
+This class describes to the service DIS_DNS/SERVER_LIST of the name server.
+Thus it always contains an up-to-date list of all servers connected
+to the dns server.
+
+Whenever a server is added or removed, or all servers are removed from the
+#list (the dns itself went offline), the follwoing virtual functions are
+called:
+
+- virtual void AddServer(const std::string &)
+- virtual void RemoveServer(const std::string)
+- virtual void RemoveAllServers()
+
+If overwritten the implementations of the base class doesn't need to be
+called, because it's empty.
+
+@Bugs When a server silently disappears and reappears the service has
+not correctly been deleted from the list and an exception is thrown.
+It is not clear what a better handling here is. Maybe a server is
+first removed from the list before it gets re-added if already in the list?
+
+*/
+// **************************************************************************
+#include "DimServerList.h"
+
+#include <sstream>
+#include <algorithm>
+#include <stdexcept>
+
+using namespace std;
+
+
+
+// --------------------------------------------------------------------------
+//
+//! Constructs the DimServerList. Subscribes a DimInfo to
+//! DIS_DNS/SERVER_LIST.
+//
+DimServerList::DimServerList(DimServerListImp *list) : fList(list),
+    fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Whenever the service with the server list is updated this functions
+//! changes the contents of the list and calls RemoveAllServers(),
+//! RemoveServer() and AddServer() where appropriate.
+//
+void DimServerList::infoHandler()
+{
+    if (getInfo()!=&fDimServers)
+        return;
+
+    // Get the received string from the handler
+    const string str = fDimServers.getString();
+
+    // Check if it starts with + or -
+    if (str[0]!='-' && str[0]!='+')
+    {
+        fList->RemoveAllServers();
+        fServerList.clear();
+    }
+
+    // Create a stringstream to tokenize the received string
+    stringstream stream(str);
+
+    // Loop over the seperating tokens
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        // The first part before the first @ is the server name
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is not found in the list.
+            // This should never happen if Dim works reliable
+            const ServerList::iterator v = find(fServerList.begin(), fServerList.end(), trunc);
+            if (v==fServerList.end())
+            {
+                //stringstream err;
+                //err << "DimServerList: Server '" << trunc << "' not in list as it ought to be.";
+                //throw runtime_error(err.str());
+            }
+
+            fList->RemoveServer(trunc);
+            fServerList.erase(v);
+
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is already in the list.
+            // This should never happen if Dim works reliable
+            const ServerList::iterator v = find(fServerList.begin(), fServerList.end(), trunc);
+            if (v!=fServerList.end())
+            {
+                fList->RemoveServer(trunc);
+                fServerList.erase(v);
+
+                //stringstream err;
+                //err << "DimServerList: Server '" << trunc << "' in list not as it ought to be.";
+                //throw runtime_error(err.str());
+            }
+
+            fServerList.push_back(trunc);
+            fList->AddServer(trunc);
+
+            continue;
+        }
+
+        // In any other case we just add the entry to the list
+        fServerList.push_back(server);
+        fList->AddServer(server);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param server
+//!     server-name to check for
+//!
+//! @returns
+//!     whether the server with the given name is online or not
+//!
+bool DimServerList::HasServer(const std::string &server) const
+{
+    return find(fServerList.begin(), fServerList.end(), server)!=fServerList.end();
+}
Index: branches/FACT++_part_filenames/src/DimServerList.h
===================================================================
--- branches/FACT++_part_filenames/src/DimServerList.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimServerList.h	(revision 18732)
@@ -0,0 +1,92 @@
+#ifndef FACT_DimServerList
+#define FACT_DimServerList
+
+#include <vector>
+#include <string>
+
+#include "dic.hxx"
+
+class DimServerListImp;
+
+class DimServerList : public DimInfoHandler
+{
+public:
+    typedef std::vector<std::string> ServerList;
+
+private:
+    DimServerListImp *fList;
+    ServerList fServerList;  /// A list with the available servers
+    DimInfo    fDimServers;  /// A DimInfo to retrieve the SERVER_LIST from teh DNS server
+
+protected:
+    void infoHandler();
+
+public:
+    DimServerList(DimServerListImp *list);
+
+    /// @returns a reference to the list of servers
+    const ServerList &GetServerList() const { return fServerList; }
+
+    /// @returns whether the given server is in the list or not
+    /// @param server string with the server which availability should be checked
+    bool HasServer(const std::string &server) const;
+};
+
+class DimServerListImp
+{
+    DimServerList fList;
+
+public:
+    DimServerListImp() : fList(this) { }
+    virtual ~DimServerListImp() { }
+
+    virtual void AddServer(const std::string &) { };
+    virtual void RemoveServer(std::string) { };
+    virtual void RemoveAllServers() { };
+
+    /// @returns a reference to the list of servers
+    const DimServerList::ServerList &GetServerList() const { return fList.GetServerList(); }
+
+    /// @returns whether the given server is in the list or not
+    /// @param server string with the server which availability should be checked
+    bool HasServer(const std::string &server) const { return fList.HasServer(server); }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn DimServerList::AddServer(const std::string &server)
+
+This virtual function is called as a callback whenever a new server appears
+to be available on the dns.
+
+The default is to do nothing.
+
+@param server
+   Server name of the server which was added
+
+**/
+// ***************************************************************************
+/** @fn DimServerList::RemoveServer(const std::string &server)
+
+This virtual function is called as a callback whenever a server disappears
+from the dns.
+
+The default is to do nothing.
+
+@param server
+   Server name of the server which was removed
+
+
+**/
+// ***************************************************************************
+/** @fn DimServerList::RemoveAllServers()
+
+This virtual function is called as a callback whenever a all servers
+disappear, e.g. the dns has vanished.
+
+The default is to do nothing.
+
+
+**/
+// ***************************************************************************
Index: branches/FACT++_part_filenames/src/DimServiceInfoList.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimServiceInfoList.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimServiceInfoList.cc	(revision 18732)
@@ -0,0 +1,754 @@
+// **************************************************************************
+/** @class DimServiceInfoList
+
+@brief Maintains a list of all services available in the Dim network
+
+The idea of this class is to maintain a list of services available
+in the Dim network as well as state descriptions if available.
+
+Therefore, it subscribes to the SERVICE_LIST, SERVICE_DESC and STATE_LIST
+services of all servers.
+
+To maintain the list it derives from DimServerList which maintains
+a list of all servers.
+
+To maintain the subscriptions it overwrites:
+
+- void DimServerList::AddServer(const std::string &s)
+- void DimServerList::RemoveServer(const std::string &s)
+- void DimServerList::RemoveAllServers()
+
+If a derived class also overwrites these functions it must be ensured that
+the member functions of DimServiceInfoList are still called properly.
+
+Whenever a service is added or removed, or all services of one server
+is removed the following virtual functions are called:
+
+- virtual void AddService(const std::string &server, const std::string &service, const std::string &fmt, bool iscmd)
+- virtual void RemoveService(const std::string &server, const std::string &service, bool iscmd)
+- virtual void RemoveAllServices(const std::string &server)
+
+Note, that these functions are not called from the RemoveServer() and
+RemoveAllServer() functions. It might be a difference whether all services
+were removed but the server is still online or the server went offline.
+
+If a description or a state was added, this is signaled though:
+
+- virtual void AddDescription(const std::string &server, const std::string &service, const std::vector<Description> &vec)
+- virtual void AddStates(const std::string &server, const std::vector<State> &vec)
+
+Note, that Descriptions and States are never removed except a service or
+server goes offline. It is expected that if a service comes online also
+the list of descritions is sent again.
+
+*/
+// **************************************************************************
+#include "DimServiceInfoList.h"
+
+#include <sstream>
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! A helper to shorten the call to create a DimInfo.
+//!
+//! @param str
+//!    name of the server to which we want to subscribe
+//!
+//! @param svc
+//!    name of the servic on the server to which we want to subscribe
+//!
+//! @returns
+//!    a pointer to the newly created DimInfo
+//!
+DimInfo *DimServiceInfoList::CreateDimInfo(const string &str, const string &svc) const
+{
+    return new DimInfo((str+'/'+svc).c_str(),
+                       const_cast<char*>(""),
+                       const_cast<DimServiceInfoList*>(this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for the given server. Don't forget to call this function
+//! if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be added
+//!
+//! @throws
+//!     a runtime_error is the server is already in the list
+//
+void DimServiceInfoList::AddServer(const string &s)
+{
+    // Check if this server is already in the list.
+    // This should never happen if Dim works reliable
+    const ServiceInfoList::iterator v = fServiceInfoList.find(s);
+    if (v!=fServiceInfoList.end())
+    {
+        stringstream err;
+        err << "DimServiceInfoList: Server '" << s << "' in list not as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    fServiceInfoList[s].push_back(CreateSL(s));
+    fServiceInfoList[s].push_back(CreateFMT(s));
+    fServiceInfoList[s].push_back(CreateDS(s));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for the given server, as well as the stored informations.
+//! Don't forget to call this function if it is overwritten in a derived
+//! class.
+//!
+//! @param s
+//!     server which should be removed. We need to make a copy, otherwise
+//!     RemoveServer will destroy the staring the reference is pointing to
+//!
+//! @throws
+//!     a runtime_error is the server to be removed is not in the list
+//
+void DimServiceInfoList::RemoveServer(const string s)
+{
+    fList->RemoveAllServices(s);
+
+    const ServiceInfoList::iterator v = fServiceInfoList.find(s);
+    if (v==fServiceInfoList.end())
+        return;
+    /*
+    {
+        stringstream err;
+        err << "DimServiceInfoList: Server '" << s << "' not in list as it ought to be.";
+        throw runtime_error(err.str());
+    }*/
+
+    // Remove the server from the server list
+    delete v->second[0];
+    delete v->second[1];
+    delete v->second[2];
+
+    fServiceInfoList.erase(v);
+    fServiceList.erase(s);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for all servers, as well as all stored informations.
+//! Don't forget to call this function if it is overwritten in a derived
+//! class.
+//!
+void DimServiceInfoList::RemoveAllServers()
+{
+    while (!fServiceInfoList.empty())
+        RemoveServer(fServiceInfoList.begin()->first);
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! This function processes the update of the SERVICE_LIST, SERVICE_DESC,
+//! and STATE_LIST updates.
+//!
+//! Whenever a service is added or removed or all services of a server are
+//! removed (the list is newly sent completely) the virtual functions
+//! AddService(), RemoveService() and RemoveAllServices() aee called.
+//!
+//! If a new description or a new state is added, the virtual functions
+//! AddDescription() and AddStates() respectively are called.
+//
+void DimServiceInfoList::infoHandler()
+{
+    // Get the name of the service
+    const string svc = getInfo()->getName();
+
+    // Get the server name from the service name
+    const string server  = svc.substr(0, svc.find_first_of('/'));
+    const string service = svc.substr(svc.find_first_of('/')+1);
+
+    if (service=="SERVICE_LIST")
+    {
+        // For easy and fast access get the corresponding reference
+        TypeList &list = fServiceList[server].first;
+
+        const string str = getInfo()->getString();
+
+        // WHAT's THIS???
+        if (str.length()==0)
+            return;
+
+        // Initialize the entry with an empty list
+        if (str[0]!='+' && str[0]!='-')
+        {
+            fList->RemoveAllServices(server);
+            list.clear();
+        }
+
+        string buffer;
+
+        // Tokenize the stream into lines
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            // Get the type and compare it with fType
+            const string type = buffer.substr(buffer.find_last_of('|')+1);
+            if (type=="RPC")
+                continue;
+
+            /*
+            const bool iscmd = type=="CMD";
+            if (type!=fType && fType!="*")
+                continue;
+                */
+
+            // Get format, name and command name
+            const string fmt  = buffer.substr(buffer.find_first_of('|')+1, buffer.find_last_of('|')-buffer.find_first_of('|')-1);
+            const string name = buffer.substr(buffer.find_first_of('/')+1, buffer.find_first_of('|')-buffer.find_first_of('/')-1);
+            //const string cmd  = buffer.substr(0, buffer.find_first_of('|'));
+
+            const bool iscmd = type=="CMD";
+
+            // FIXME: Do we need to check that the buffer starts with SERVER ?
+
+            if (buffer[0]=='-')
+            {
+                // Check if this server is not found in the list.
+                // This should never happen if Dim works reliable
+                const TypeList::iterator v = list.find(name);
+                /*
+                if (v==list.end())
+                {
+                    stringstream err;
+                    err << "DimServiceInfoList: Service '" << server << "/" << name << "' not in list as it ought to be.";
+                    // Seems to happen why more than one client is subscribed
+                    // and e.g. the datalogger is immediately quit
+                    throw runtime_error(err.str());
+                }*/
+
+                fList->RemoveService(server, name, iscmd);
+                if (v!=list.end())
+                    list.erase(v);
+
+                continue;
+            }
+
+            if (buffer[0]=='+')
+            {
+                // Check if this server is not found in the list.
+                // This should never happen if Dim works reliable
+                const TypeList::iterator v = list.find(name);
+                if (v!=list.end())
+                {
+                    stringstream err;
+                    err << "DimServiceInfoList: Service '" << server << "/" << name << "' already in list not as it ought to be.";
+                    throw runtime_error(err.str());
+                }
+
+                list[name] = make_pair(fmt, iscmd);
+                fList->AddService(server, name, fmt, iscmd);
+
+                continue;
+            }
+
+            // Add name the the list
+            list[name] = make_pair(fmt, iscmd);
+            fList->AddService(server, name, fmt, iscmd);
+        }
+
+        return;
+    }
+
+    if (service=="SERVICE_DESC")
+    {
+        // For easy and fast access get the corresponding reference
+        DescriptionList &list = fServiceList[server].second;
+
+        list.clear();
+
+        string buffer;
+
+        stringstream stream(getInfo()->getString());
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            const vector<Description> v = Description::SplitDescription(buffer);
+
+            const string name    = v[0].name.substr(v[0].name.find_first_of('/')+1);
+            const string comment = v[0].comment;
+
+            list[name] = make_pair(comment, vector<Description>(v.begin()+1, v.end()));
+
+            fList->AddDescription(server, name, v);
+        }
+
+        return;
+    }
+
+    if (service=="STATE_LIST")
+    {
+        vector<State> &vec = fServiceList[server].third;
+        vec = State::SplitStates(getInfo()->getString());
+        fList->AddStates(server, vec);
+
+        return;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all services available for the given server.
+//! Depending on iscmd either only services or only commands are returned.
+//!
+//! @param server
+//!     server for which the list should be returned
+//! 
+//! @param iscmd
+//!     true if only commands should be returned, false for services
+//!
+//! @returns
+//!     a vector<string> which contains all the service or command names for
+//!     the given server. The names returned are always SERVER/SERVICE
+//!     If the server was not fund an empty vector is returned.
+//
+vector<string> DimServiceInfoList::GetServiceList(const std::string &server, bool iscmd) const
+{
+    const ServiceList::const_iterator m = fServiceList.find(server);
+    if (m==fServiceList.end())
+        return vector<string>();
+
+    const TypeList &list = m->second.first;
+
+    vector<string> vec;
+    for (TypeList::const_iterator i=list.begin(); i!=list.end(); i++)
+        if (i->second.second==iscmd)
+            vec.push_back(server+'/'+i->first);
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all services available in the network.
+//! Depending on iscmd either only services or only commands are returned.
+//!
+//! @param iscmd
+//!     true if only commands should be returned, false for services
+//!
+//! @returns
+//!     a vector<string> which contains all the service or command names in
+//!     the network. The names returned are always SERVER/SERVICE
+//
+vector<string> DimServiceInfoList::GetServiceList(bool iscmd) const
+{
+    vector<string> vec;
+    for (ServiceList::const_iterator m=fServiceList.begin(); m!=fServiceList.end(); m++)
+    {
+        const TypeList &list = m->second.first;
+
+        for (TypeList::const_iterator i=list.begin(); i!=list.end(); i++)
+            if (i->second.second==iscmd)
+                vec.push_back(m->first+'/'+i->first);
+    }
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all descriptions for the given service on the
+//! given server. Service in this context can also be a command.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param service
+//!     Service/command name to look for
+//!
+//! @returns
+//!     a vector<Description> which contains all argument descriptions for
+//!     the given service or command. The first entry contains the name
+//!     and the general description for the given service. If the server
+//!     or service was not found an empty vector is returned.
+//
+std::vector<Description> DimServiceInfoList::GetDescription(const std::string &server, const std::string &service) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return vector<Description>();
+
+    const DescriptionList &descs = s->second.second;
+
+    const DescriptionList::const_iterator d = descs.find(service);
+    if (d==descs.end())
+        return vector<Description>();
+
+    vector<Description> vec;
+    vec.push_back(Description(service, d->second.first));
+    vec.insert(vec.end(), d->second.second.begin(), d->second.second.end());
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all states associated with the given server.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @returns
+//!     a vector<State> which contains all state descriptions for
+//!     the given server. If the server or service was not found an
+//!     empty vector is returned.
+//
+vector<State> DimServiceInfoList::GetStates(const std::string &server) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return vector<State>();
+
+    return s->second.third;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the Description of the state as defined by the arguments.
+//! given server. Service in this context can also be a command.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param state
+//!     The state index to look for (e.g. 1)
+//!
+//! @returns
+//!     The State object containing the description. If the server was
+//!     not found the State object will contain the index -3, if the
+//!     state was not found -2.
+//
+State DimServiceInfoList::GetState(const std::string &server, int state) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+    {
+        stringstream str;
+        str << "DimServiceInfoList::GetState: Searching for state #" << state << " server " << server << " not found.";
+        return State(-3, "Server not found", str.str());
+    }
+
+    const std::vector<State> &v = s->second.third;
+
+    for (vector<State>::const_iterator i=v.begin(); i!=v.end(); i++)
+        if (i->index==state)
+            return *i;
+
+    stringstream str;
+    str << "DimServiceInfoList::GetState: State #" << state << " not found on server " << server << ".";
+    return State(-2, "State not found", str.str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns whether the given service on the given server is a command
+//! or not.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param service
+//!     The service name to look for
+//!
+//! @returns
+//!     1 if it is a command, 0 if it is a service, -1 if the service
+//!     was not found on the server, -2 if the server was not found.
+//
+int DimServiceInfoList::IsCommand(const std::string &server, const std::string &service) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return -2;
+
+    const TypeList &list = s->second.first;
+
+    const TypeList::const_iterator t = list.find(service);
+    if (t==list.end())
+        return -1;
+
+    return t->second.second;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Print the full available documentation (description) of all available
+//! services or comments to the the given stream.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param iscmd
+//!   true if all commands should be printed, false for services.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @param service
+//!    if a service is given, only information for this service is printed
+//!
+//! @returns
+//!    the number of descriptions found
+//
+int DimServiceInfoList::PrintDescription(std::ostream &out, bool iscmd, const string &serv, const string &service) const
+{
+    int rc = 0;
+    for (ServiceList::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const TypeList        &types = i->second.first;
+        const DescriptionList &descs = i->second.second;
+
+        for (TypeList::const_iterator t=types.begin(); t!=types.end(); t++)
+        {
+            if (!service.empty() && t->first!=service)
+                continue;
+
+            if (t->second.second!=iscmd)
+                continue;
+
+            rc++;
+
+            out << " " << t->first;
+
+            // Check t->second->first for command or service
+            const string fmt = t->second.first;
+            if (!fmt.empty())
+                out << '[' << fmt << ']';
+
+            const DescriptionList::const_iterator d = descs.find(t->first);
+            if (d==descs.end())
+            {
+                out << endl;
+                continue;
+            }
+
+            const string comment         = d->second.first;
+            const vector<Description> &v = d->second.second;
+
+            for (vector<Description>::const_iterator j=v.begin(); j!=v.end(); j++)
+                out << " <" << j->name << ">";
+            out << endl;
+
+            if (!comment.empty())
+                out << "    " << comment << endl;
+
+            for (vector<Description>::const_iterator j=v.begin(); j!=v.end(); j++)
+            {
+                out << "    " << kGreen << j->name;
+                if (!j->comment.empty())
+                    out << kReset << ": " << kBlue << j->comment;
+                if (!j->unit.empty())
+                    out << kYellow << " [" << j->unit << "]";
+                out << endl;
+            }
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the full list of stated for the given server.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @returns
+//!    the number of states found
+//
+int DimServiceInfoList::PrintStates(std::ostream &out, const string &serv) const
+{
+    int rc = 0;
+    for (ServiceList::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const vector<State> &v = i->second.third;
+
+        if (v.empty())
+            out << "   <no states>" << endl;
+        else
+            rc++;
+
+        for (vector<State>::const_iterator s=v.begin(); s!=v.end(); s++)
+        {
+            out << kBold   << setw(5) << s->index << kReset << ": ";
+            out << kYellow << s->name;
+            out << kBlue   << " (" << s->comment << ")" << endl;
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Tries to send a dim command according to the arguments.
+//! The command given is evaluated according to the available format string.
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @throws
+//!    runtime_error if the server or command was not found, or if the
+//!    format associated with the command could not be properly parsed,
+//!    or if the command could not successfully be emitted.
+//!
+void DimServiceInfoList::SendDimCommand(const string &server, string str, ostream &lout) const
+{
+    str = Tools::Trim(str);
+
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    const string cmd = server + '/' + name;
+
+    const ServiceList::const_iterator m = fServiceList.find(server);
+    if (m==fServiceList.end())
+        throw runtime_error("Unkown server '"+server+"'");
+
+    const TypeList &services = m->second.first;
+
+    const TypeList::const_iterator t = services.find(name);
+    if (t==services.end())
+        throw runtime_error("Command '"+name+"' not known on server '"+server+"'");
+
+    if (!t->second.second)
+        throw runtime_error("'"+server+"/"+name+" not a command.");
+
+    // Get the format of the event data
+    const string fmt = t->second.first;
+
+    // Avoid compiler warning of unused parameter
+    lout << flush;
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+#ifndef DEBUG
+    ostringstream sout;
+    const Converter conv(sout, fmt, false);
+#else
+    const Converter conv(lout, fmt, false);
+#endif
+    if (!conv)
+        throw runtime_error("Couldn't properly parse the format... ignored.");
+
+#ifdef DEBUG
+    lout << kBlue << cmd;
+#endif
+    const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+    lout << kBlue << " [" << v.size() << "]" << endl;
+#endif
+
+    DimClient::sendCommandNB(cmd.c_str(), (void*)v.data(), v.size());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Catches the runtime_erros thrown by
+//!    SendDimCommand(const string &, string, ostream &)
+//! and redirects the error message to the output stream.
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @returns
+//!    true if SendDimComment didn't throw an exception, false otherwise
+//!
+bool DimServiceInfoList::SendDimCommand(ostream &lout, const string &server, const string &str) const
+{
+    try
+    {
+        SendDimCommand(server, str, lout);
+        //lout << kGreen << "Command emitted successfully to " << server << "." << endl;
+        return true;
+    }
+    catch (const runtime_error &e)
+    {
+        lout << kRed << e.what() << endl;
+        return false;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls SendDimCommand(const string &, string, ostream &) and dumps
+//! the output.
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @throws
+//!    see SendDimCommand(const string &, string, ostream &)
+//
+void DimServiceInfoList::SendDimCommand(const std::string &server, const std::string &str) const
+{
+    ostringstream dummy;
+    SendDimCommand(server, str, dummy);
+}
+
+DimServiceInfoList::DimServiceInfoList(DimServiceInfoListImp *list) : DimServerList(list), fList(list) { }
Index: branches/FACT++_part_filenames/src/DimServiceInfoList.h
===================================================================
--- branches/FACT++_part_filenames/src/DimServiceInfoList.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimServiceInfoList.h	(revision 18732)
@@ -0,0 +1,217 @@
+#ifndef FACT_DimServiceInfoList
+#define FACT_DimServiceInfoList
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include "State.h"
+#include "Description.h"
+#include "DimServerList.h"
+
+class DimInfo;
+class DimServiceInfoListImp;
+
+class DimServiceInfoList : public DimServerList
+{
+public:
+
+    typedef std::map<const std::string, std::vector<DimInfo*>> ServiceInfoList;
+
+    //                   Format   IsCmd
+    typedef std::pair<std::string, bool> ServiceType;
+
+    //                 name of service  Format/description
+    typedef std::map<const std::string, ServiceType> TypeList;
+
+    //                 ServiceName                 comment      list of descriptions
+    typedef std::map<const std::string, std::pair<std::string, std::vector<Description>>> DescriptionList;
+
+    struct ServerInfo
+    {
+        TypeList           first;   /// Format and description of the service
+        DescriptionList    second;  /// Description of the arguments
+        std::vector<State> third;   /// Available states of the server
+    };
+
+    //                   Server         ServerInfo
+    typedef std::map<const std::string, ServerInfo> ServiceList;
+
+private:
+    DimServiceInfoListImp *fList;
+    ServiceInfoList fServiceInfoList; /// A map storing the service description to retrieve all informations
+    ServiceList     fServiceList;     /// A mal containing all the available informations
+
+    DimInfo *CreateDimInfo(const std::string &str, const std::string &svc) const;
+    DimInfo *CreateSL(const std::string &str) const { return CreateDimInfo(str, "SERVICE_LIST"); }
+    DimInfo *CreateFMT(const std::string &str) const { return CreateDimInfo(str, "SERVICE_DESC"); }
+    DimInfo *CreateDS(const std::string &str) const { return CreateDimInfo(str, "STATE_LIST"); }
+
+public:
+    void AddServer(const std::string &s);
+    void RemoveServer(std::string);
+    void RemoveAllServers();
+
+protected:
+    void infoHandler();
+
+public:
+    DimServiceInfoList(DimServiceInfoListImp *list);
+    ~DimServiceInfoList() {  }
+
+    std::vector<std::string> GetServiceList(bool iscmd=false) const;
+    std::vector<std::string> GetServiceList(const std::string &server, bool iscmd=false) const;
+
+    std::vector<Description> GetDescription(const std::string &server, const std::string &service) const;
+    std::vector<State>       GetStates(const std::string &server) const;
+    State                    GetState(const std::string &server, int state) const;
+
+    int IsCommand(const std::string &server, const std::string &service) const;
+
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const;
+    int PrintStates(std::ostream &out, const std::string &serv="") const;
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const;
+    void SendDimCommand(const std::string &server, std::string str, std::ostream &lout) const;
+    void SendDimCommand(const std::string &server, const std::string &str) const;
+};
+
+class DimServiceInfoListImp : public DimServerListImp
+{
+public:
+    DimServiceInfoList fInfo;
+
+protected:
+    virtual void AddServer(const std::string &s) { fInfo.AddServer(s); }
+    virtual void RemoveServer(std::string s)     { fInfo.RemoveServer(s); }
+    virtual void RemoveAllServers()              { fInfo.RemoveAllServers(); }
+
+public:
+    virtual void AddService(const std::string &, const std::string &, const std::string &, bool) { }
+    virtual void RemoveService(std::string, std::string, bool) { }
+    virtual void RemoveAllServices(const std::string &) { }
+    virtual void AddDescription(const std::string &, const std::string &, const std::vector<Description> &) { }
+    virtual void AddStates(const std::string &, const std::vector<State> &) { }
+
+public:
+    DimServiceInfoListImp() : fInfo(this) { }
+    ~DimServiceInfoListImp() { fInfo.RemoveAllServers(); }
+
+    std::vector<std::string> GetServiceList(bool iscmd=false) const
+    { return fInfo.GetServiceList(iscmd); }
+    std::vector<std::string> GetServiceList(const std::string &server, bool iscmd=false) const
+    { return fInfo.GetServiceList(server, iscmd); }
+
+    std::vector<std::string> GetCommandList() const { return GetServiceList(true); }
+    std::vector<std::string> GetCommandList(const std::string &server) const { return GetServiceList(server, true); }
+
+    std::vector<Description> GetDescription(const std::string &server, const std::string &service) const
+    { return fInfo.GetDescription(server, service); }
+    std::vector<State>       GetStates(const std::string &server) const
+    { return fInfo.GetStates(server); }
+    State                    GetState(const std::string &server, int state) const
+    { return fInfo.GetState(server, state); }
+
+    int IsCommand(const std::string &server, const std::string &service) const
+    { return fInfo.IsCommand(server, service); }
+
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const
+    { return fInfo.PrintDescription(out, iscmd, serv, service); }
+    int PrintStates(std::ostream &out, const std::string &serv="") const
+    { return fInfo.PrintStates(out, serv); }
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const
+    { return fInfo.SendDimCommand(lout, server, str); }
+    void SendDimCommand(const std::string &server, std::string str, std::ostream &lout) const
+    { return fInfo.SendDimCommand(server, str, lout); }
+    void SendDimCommand(const std::string &server, const std::string &str) const
+    { return fInfo.SendDimCommand(server, str); }
+};
+
+
+
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddService(const std::string &server, const std::string &service, const std::string &fmt, bool iscmd)
+
+This virtual function is called as a callback whenever a new service appears.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+@param service
+   Service name which appeared
+
+@param fmt
+   Dim format string associated with the service
+
+@param iscmd
+   boolean which is true if it is a command, and false if it is a service
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::RemoveService(const std::string &server, const std::string &service, bool iscmd)
+
+This virtual function is called as a callback whenever a service disappears.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+@param service
+   Service name which appeared
+
+@param iscmd
+   boolean which is true if it is a command, and false if it is a service
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::RemoveAllServices(const std::string &server)
+
+This virtual function is called as a callback whenever a server disappears,
+or the list must be cleared because a new list has been retrieved.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddDescription(const std::string &server, const std::string &service, const std::vector<Description> &vec)
+
+This virtual function is called as a callback whenever a new description
+was received.
+The default is to do nothing.
+
+@param server
+   Server name of the server for which something was received
+
+@param service
+   Service name for which the description weer received
+
+@param vec
+   vector<Description> associated with this service. The first entry in the
+   list belongs to the service itself, each consecutive entry to its arguments
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddStates(const std::string &server, const std::vector<State> &vec)
+
+This virtual function is called as a callback whenever a new list of states
+was received.
+The default is to do nothing.
+
+@param server
+   Server name for which the list was received
+
+@param vec
+   vector<State> associated with this server.
+
+**/
+// ***************************************************************************
+
+#endif
Index: branches/FACT++_part_filenames/src/DimSetup.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimSetup.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimSetup.cc	(revision 18732)
@@ -0,0 +1,188 @@
+// **************************************************************************
+/** @namespace Dim
+
+@brief Namespace to host some global Dim helper functions
+
+*/
+// **************************************************************************
+#include "Dim.h"
+
+/*
+#include <netdb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+*/
+#include <boost/asio.hpp>
+
+#include <iostream>
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Tries to determine the local IP address with which we will connect
+//! to the DIM dns.
+//!
+//! The local IP address is necessary because in some circumstances
+//! Dim needs the IP address of the connecting machine (DIM_HOST_NODE)
+//! for the clients to correctly connect to them. So what we would
+//! need is the IP address over which the machine is reachable from
+//! the client. Unfortunately, we have no access to the client
+//! connection, hence, we have to find the best guess of an address
+//! which is not our own machine and hope it is routed over the
+//! standard ethernet interface over which other clients will connect.
+//!
+//! To not send random packages over the network we use a local
+//! IP address. To make sure it is something which leaves the network
+//! card and is not just our machine, we can use a broadcast address.
+//! Consequently, the deafult has been chosen to be "192.168.0.255"
+//!
+//! @param dns
+//!     Address of the Dim-dns
+//!
+//! @returns
+//!     The IP Address through which the connection to the DNS will
+//!     take place.
+//!
+//! @todo
+//!     Implement a --host command line option (just in case)
+//!
+string Dim::GetLocalIp(const string &dns)
+{
+    using namespace boost::asio;
+    using namespace boost::asio::ip;
+
+    cout << "Trying to resolve local IP address..." << endl;
+
+    boost::system::error_code ec;
+
+    boost::asio::io_service io_service;
+
+    udp::socket socket(io_service);
+
+    udp::resolver resolver(io_service);
+    udp::resolver::query query(dns, "0");
+    udp::resolver::iterator iterator = resolver.resolve(query, ec);
+    if (ec)
+    {
+        //cout << "WARNING - Failure in name-resolution of '" << dns << ":0': ";
+        cout << "WARNING - Could not resolve local ip address: ";
+        cout << ec.message() << " (" << ec << ")" << endl;
+        return dns;
+    }
+
+    for (; iterator != udp::resolver::iterator(); ++iterator)
+    {
+        udp::endpoint endpoint = *iterator;
+        socket.connect(endpoint, ec);
+        if (ec)
+        {
+            cout << "WARNING - Could not resolve local ip address: ";
+            cout << ec.message() << " (" << ec << ")" << endl;
+            continue;
+        }
+
+        const string addr = socket.local_endpoint().address().to_v4().to_string();
+        return addr;
+    }
+
+    return "localhost";
+
+/*
+    struct addrinfo hints, *servinfo, *p;
+
+    memset(&hints, 0, sizeof hints);
+    hints.ai_family   = AF_INET; //AF_UNSPEC; // use AF_INET6 to force IPv6
+    hints.ai_socktype = SOCK_STREAM;
+
+    int rv;
+    if ((rv = getaddrinfo(dns.c_str(), NULL, &hints, &servinfo)) != 0)
+    {
+        cout << "WARNING - getaddrinfo: " << gai_strerror(rv) << endl;
+        return dns;
+    }
+
+    // loop through all the results and connect to the first we can
+    for (p=servinfo; p; p=p->ai_next)
+    {
+        const int sock = socket(AF_INET, SOCK_DGRAM, 0);
+        if (sock==-1)
+            continue;
+
+        if (connect(sock, p->ai_addr, p->ai_addrlen)==-1)
+        {
+            cout << "WARNING - connect: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        sockaddr_in name;
+        socklen_t namelen = sizeof(name);
+        if (getsockname(sock, (sockaddr*)&name, &namelen)==-1)
+        {
+            cout << "WARNING - getsockname: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        char buffer[16];
+        if (!inet_ntop(AF_INET, &name.sin_addr, buffer, 16))
+        {
+            cout << "WARNING - inet_ntop: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        close(sock);
+
+        freeaddrinfo(servinfo); // all done with this structure
+
+        cout << "DIM_HOST_NODE=" << buffer << endl;
+        return buffer;
+    }
+
+    freeaddrinfo(servinfo); // all done with this structure
+
+    return dns;
+*/
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the environment variable DIM_DNS_NODE to the given string and
+//! DIM_HOST_NODE to the IP-address through which this machine connects
+//! to the dns.
+//!
+//! @param dns
+//!     Address of the Dim-dns
+//!
+void Dim::Setup(const std::string &dns, const std::string &host)
+{
+    if (dns.empty())
+    {
+        setenv("DIM_DNS_NODE", "...", 1);
+        //unsetenv("DIM_DNS_NODE");
+        //unsetenv("DIM_HOST_NODE");
+        return;
+    }
+
+    const string loc = host.empty() ? Dim::GetLocalIp(dns.c_str()) : host;
+
+    setenv("DIM_DNS_NODE",  dns.c_str(), 1);
+    setenv("DIM_HOST_NODE", loc.c_str(), 1);
+
+    cout << "Setting DIM_DNS_NODE =" << dns << endl;
+    cout << "Setting DIM_HOST_NODE=" << loc << endl;
+}
+
+extern "C"
+{
+    const char *GetLocalIp()
+    {
+        static string rc;
+        rc = Dim::GetLocalIp();
+        cout << "Setting DIM_HOST_NODE=" << rc << endl;
+        return rc.c_str();
+    }
+}
Index: branches/FACT++_part_filenames/src/DimSetup.h
===================================================================
--- branches/FACT++_part_filenames/src/DimSetup.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimSetup.h	(revision 18732)
@@ -0,0 +1,13 @@
+#ifndef FACT_DimSetup
+#define FACT_DimSetup
+
+#include <string>
+
+namespace Dim
+{
+    //std::string GetLocalIp(const std::string &dns="192.168.0.255");
+    std::string GetLocalIp(const std::string &dns="10.0.100.1");
+    void Setup(const std::string &dns="", const std::string &host="");
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/DimState.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimState.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimState.cc	(revision 18732)
@@ -0,0 +1,107 @@
+#include "DimState.h"
+
+using namespace std;
+using namespace boost;
+
+void DimDnsServerList::HandlerServerImp(const EventImp &evt)
+{
+    if (evt.GetSize()==0)
+        return;
+
+    time = evt.GetTime();
+    msg  = evt.GetString();
+
+    typedef char_separator<char> separator;
+    const tokenizer<separator> tok(msg, separator("|"));
+
+    for (auto it=tok.begin(); it!=tok.end(); it++)
+    {
+        const size_t p = it->find_first_of('@');
+        if (p==string::npos)
+            continue;
+
+        // The first part before the first @ is the server name
+        string server = it->substr(0, p);
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            fServerList.erase(server.substr(1));
+            CallbackServerRemove(server.substr(1));
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+            server = server.substr(1);
+
+        // Check if this server is already in the list.
+        // This should never happen if Dim works reliable
+        if (fServerList.insert(server).second)
+            CallbackServerAdd(server);
+    }
+}
+
+void DimDnsServiceList::HandlerServiceListImp(const EventImp &evt)
+{
+    if (evt.GetSize()==0)
+        return;
+
+    // Get the name of the service
+    //const string svc = getInfo()->getName();
+
+    // Get the server name from the service name
+    //const string server  = svc.substr(0, svc.find_first_of('/'));
+    //const string service = svc.substr(svc.find_first_of('/')+1);
+
+    msg  = evt.GetString();
+    time = evt.GetTime();
+
+    // Initialize the entry with an empty list
+    //if (msg[0]!='+' && msg[0]!='-')
+    //    return;
+
+    typedef char_separator<char> separator;
+    const tokenizer<separator> tok(msg, separator("\n"));
+
+    for (auto it=tok.begin(); it!=tok.end(); it++)
+    {
+        string str = *it;
+
+        if (str[0]=='-')
+            continue;
+
+        if (str[0]=='+')
+            str = str.substr(1);
+
+        const size_t last_pipe = str.find_last_of('|');
+
+        // Get the type and compare it with fType
+        const string type = str.substr(last_pipe+1);
+        if (type=="RPC")
+            continue;
+
+        //const bool iscmd = type=="CMD";
+        //if (type!=fType && fType!="*")
+        //    continue;
+
+        const size_t first_pipe  = str.find_first_of('|');
+        const size_t first_slash = str.find_first_of('/');
+
+        // Get format, name and command name
+        Service service;
+        service.server  = str.substr(0, first_slash);
+        service.name    = str.substr(0, first_pipe);
+        service.service = str.substr(first_slash+1, first_pipe-first_slash-1);
+        service.format  = str.substr(first_pipe +1, last_pipe -first_pipe -1);
+        service.iscmd   = type=="CMD";
+
+        const auto v = find(fServiceList.begin(), fServiceList.end(), service.name);
+        if (v!=fServiceList.end())
+            continue;
+
+        CallbackServiceAdd(service);
+    }
+}
Index: branches/FACT++_part_filenames/src/DimState.h
===================================================================
--- branches/FACT++_part_filenames/src/DimState.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimState.h	(revision 18732)
@@ -0,0 +1,460 @@
+#ifndef FACT_DimState
+#define FACT_DimState
+
+#include <set>
+#include <string>
+#include <functional>
+
+#include "State.h"
+#include "Service.h"
+#include "EventImp.h"
+#include "WindowLog.h"
+#include "Description.h"
+#include "StateMachineImp.h"
+
+class DimState
+{
+public:
+    enum
+    {
+        kOffline      = -256,
+        kNotAvailable = -257,
+    };
+
+protected:
+    typedef std::function<int(const EventImp &)> callback;
+
+    callback fCallback;
+
+    void HandlerImp(const EventImp &evt)
+    {
+        const bool disconnected = evt.GetSize()==0;
+
+        last = cur;
+        cur  = std::make_pair(evt.GetTime(), disconnected ? kOffline : evt.GetQoS());
+
+        msg = disconnected ? "" : evt.GetString();
+    }
+
+    int Callback(const EventImp &evt)
+    {
+        return fCallback ? fCallback(evt) : StateMachineImp::kSM_KeepState;
+    }
+
+    virtual int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+        return Callback(evt);
+    }
+
+public:
+    DimState() { }
+    DimState(const std::string &n, const std::string s="STATE") : server(n),
+        service(n+"/"+s),
+        last(std::make_pair(Time(), kOffline)), cur(std::make_pair(Time(), kOffline))
+    {
+    }
+    virtual ~DimState()
+    {
+    }
+
+    /*const*/ std::string server;
+    /*const*/ std::string service;
+
+    std::pair<Time, int32_t> last;
+    std::pair<Time, int32_t> cur;
+    std::string msg;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(service)
+            (imp.Wrap(std::bind(&DimState::Handler, this, std::placeholders::_1)));
+    }
+
+    void SetCallback(const callback &cb)
+    {
+        fCallback = cb;
+    }
+
+    const Time    &time() const  { return cur.first; }
+    const int32_t &state() const { return cur.second; }
+
+    bool online() const { return state()>kOffline; }
+
+    virtual State description() const { return State(kNotAvailable, ""); }
+};
+
+inline std::ostream &operator<<(std::ostream& out, const DimState &s)
+{
+    const State rc = s.description();
+
+    out << s.time().GetAsStr("%H:%M:%S.%f").substr(0, 12) << " - ";
+    out << kBold << s.server;
+
+    if (s.state()==DimState::kOffline)
+        return out << ": Offline";
+
+    if (rc.index==DimState::kNotAvailable)
+        return out;
+
+    out << ": ";
+
+//    if (rc.index==-2)
+//        out << s.state();
+//    else
+        out << rc.name << "[" << rc.index << "]";
+
+    if (!rc.comment.empty())
+        out << " - " << kBlue << rc.comment;
+
+    return out;
+}
+
+
+class DimDescribedState : public DimState
+{
+    typedef std::function<void()> callback_desc;
+
+    callback_desc fCallbackStates;
+
+    virtual void CallbackStates()
+    {
+        if (fCallbackStates)
+            fCallbackStates();
+    }
+
+
+public:
+    DimDescribedState(const std::string &n) : DimState(n)
+    {
+    }
+
+    std::vector<State> states;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(server+"/STATE_LIST")
+            (imp.Wrap(std::bind(&DimDescribedState::HandleDesc, this, std::placeholders::_1)));
+
+        DimState::Subscribe(imp);
+    }
+
+    void SetCallbackStates(const callback_desc &cb)
+    {
+        fCallbackStates = cb;
+    }
+
+    int HandleDesc(const EventImp &evt)
+    {
+        if (evt.GetSize()>0)
+        {
+            states = State::SplitStates(evt.GetString());
+            states.emplace_back(kOffline, "Offline");
+
+            CallbackStates();
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    State description() const
+    {
+        for (auto it=states.begin(); it!=states.end(); it++)
+            if (it->index==state())
+                return State(it->index, it->name, it->comment, time());
+
+        return State(kNotAvailable, "n/a");
+    }
+};
+
+class DimDescriptions : public DimDescribedState
+{
+    typedef std::function<void()> callback_desc;
+
+    callback_desc fCallbackDescriptions;
+
+    virtual void CallbackDescriptions()
+    {
+        if (fCallbackDescriptions)
+            fCallbackDescriptions();
+    }
+
+public:
+    DimDescriptions(const std::string &n) : DimDescribedState(n)
+    {
+    }
+
+    std::vector<std::vector<Description>> descriptions;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(server+"/SERVICE_DESC")
+            (imp.Wrap(std::bind(&DimDescriptions::HandleServiceDesc, this, std::placeholders::_1)));
+
+        DimDescribedState::Subscribe(imp);
+    }
+
+    void SetCallbackDescriptions(const callback_desc &cb)
+    {
+        fCallbackDescriptions = cb;
+    }
+
+
+    int HandleServiceDesc(const EventImp &evt)
+    {
+        descriptions.clear();
+        if (evt.GetSize()>0)
+        {
+            std::string buf;
+            std::stringstream stream(evt.GetString());
+            while (getline(stream, buf, '\n'))
+                descriptions.push_back(Description::SplitDescription(buf));
+        }
+
+        CallbackDescriptions();
+
+        return StateMachineImp::kSM_KeepState;
+    }
+};
+
+class DimVersion : public DimState
+{
+    int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+
+        cur.second = evt.GetSize()==4 ? evt.GetInt() : kOffline;
+        if (cur.second==0)
+            cur.second=kOffline;
+
+        return Callback(evt);
+    }
+
+public:
+    DimVersion() : DimState("DIS_DNS", "VERSION_NUMBER") { }
+
+    std::string version() const
+    {
+        if (!online())
+            return "Offline";
+
+        std::ostringstream out;
+        out << "V" << state()/100 << 'r' << state()%100;
+        return out.str();
+    }
+
+    State description() const
+    {
+        return State(state(), version(), "", time());
+    }
+};
+
+class DimControl : public DimState
+{
+    std::map<std::string, callback> fCallbacks;
+
+    int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+
+        shortmsg    = msg;
+        file        = "";
+        scriptdepth = -1;
+
+        // Find begining of descriptor
+        const size_t p0 = msg.find_first_of(' ');
+        if (p0==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        // Find begining of filename
+        const size_t p1 = msg.find_first_of(':');
+        if (p1==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        // Find end of filename
+        const size_t p2 = msg.find_last_of('[');
+        if (p2==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        scriptdepth = atoi(msg.c_str()+p0+1);
+        file = msg.substr(p1+1, p2-p1-1);
+
+        shortmsg.insert(0, msg.substr(p0+1, p1-p0));
+        shortmsg.erase(p1+1,p2-p0-1);
+
+        const int rc = Callback(evt);
+
+        const auto func = fCallbacks.find(file);
+        if (func==fCallbacks.end())
+            return rc;
+
+        // Call callback
+        return func->second(evt);
+    }
+
+
+public:
+    DimControl() : DimState("DIM_CONTROL") { }
+
+    std::string file;
+    std::string shortmsg;
+    int scriptdepth;
+
+    void AddCallback(const std::string &script, const callback &cb)
+    {
+        fCallbacks[script] = cb;
+    }
+
+    State description() const
+    {
+        return State(state(), "Current label", "", time());
+    }
+};
+
+class DimDnsServerList
+{
+protected:
+    typedef std::function<void(const std::string &)> callback_srv;
+    typedef std::function<void(const EventImp &)>    callback_evt;
+
+    callback_srv fCallbackServerAdd;
+    callback_srv fCallbackServerRemove;
+    callback_evt fCallbackServerEvent;
+
+    std::set<std::string> fServerList;
+
+    void HandlerServerImp(const EventImp &evt);
+
+    virtual void CallbackServerAdd(const std::string &str)
+    {
+        if (fCallbackServerAdd)
+            fCallbackServerAdd(str);
+    }
+    virtual void CallbackServerRemove(const std::string &str)
+    {
+        if (fCallbackServerRemove)
+            fCallbackServerRemove(str);
+    }
+    virtual void CallbackServerEvent(const EventImp &evt)
+    {
+        if (fCallbackServerEvent)
+            fCallbackServerEvent(evt);
+    }
+    virtual int HandlerServer(const EventImp &evt)
+    {
+        HandlerServerImp(evt);
+        CallbackServerEvent(evt);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+public:
+    DimDnsServerList() 
+    {
+    }
+    virtual ~DimDnsServerList()
+    {
+    }
+
+    Time  time;
+    std::string msg;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe("DIS_DNS/SERVER_LIST")
+            (imp.Wrap(std::bind(&DimDnsServerList::HandlerServer, this, std::placeholders::_1)));
+    }
+
+    void SetCallbackServerAdd(const callback_srv &cb)
+    {
+        fCallbackServerAdd = cb;
+    }
+
+    void SetCallbackServerRemove(const callback_srv &cb)
+    {
+        fCallbackServerRemove = cb;
+    }
+
+    void SetCallbackServerEvent(const callback_evt &cb)
+    {
+        fCallbackServerEvent = cb;
+    }
+
+    //const Time &time() const { return time; }
+    //const std::string &msg() const { return msg; }
+};
+
+class DimDnsServiceList : public DimDnsServerList
+{
+    StateMachineImp *fStateMachine;
+
+    typedef std::function<void(const Service &)> callback_svc;
+
+    callback_svc fCallbackServiceAdd;
+    //callback_evt fCallbackServiceEvt;
+
+    std::vector<std::string> fServiceList;
+
+    std::set<std::string> fServers;
+
+    void CallbackServerAdd(const std::string &server)
+    {
+        DimDnsServerList::CallbackServerAdd(server);
+
+        if (fServers.find(server)!=fServers.end())
+            return;
+
+        fStateMachine->Subscribe(server+"/SERVICE_LIST")
+            (fStateMachine->Wrap(std::bind(&DimDnsServiceList::HandlerServiceList, this, std::placeholders::_1)));
+
+        fServers.insert(server);
+    }
+
+    void HandlerServiceListImp(const EventImp &evt);
+
+/*
+    virtual void CallbackServiceEvt(const EventImp &evt)
+    {
+        if (fCallbackServiceEvt)
+            fCallbackServiceEvt(evt);
+    }
+*/
+    virtual int HandlerServiceList(const EventImp &evt)
+    {
+        HandlerServiceListImp(evt);
+        //CallbackServiceEvent(evt);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+
+    virtual void CallbackServiceAdd(const Service &service)
+    {
+        if (fCallbackServiceAdd)
+            fCallbackServiceAdd(service);
+    }
+
+public:
+    DimDnsServiceList() : fStateMachine(0)
+    {
+    }
+
+    void Subscribe(StateMachineImp &imp)
+    {
+        fStateMachine = &imp;
+        DimDnsServerList::Subscribe(imp);
+    }
+
+    void SetCallbackServiceAdd(const callback_svc &cb)
+    {
+        fCallbackServiceAdd = cb;
+    }
+/*
+    void SetCallbackServiceEvt(const callback_svc &cb)
+    {
+        fCallbackServiceEvt = cb;
+    }
+*/
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/DimWriteStatistics.cc
===================================================================
--- branches/FACT++_part_filenames/src/DimWriteStatistics.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimWriteStatistics.cc	(revision 18732)
@@ -0,0 +1,261 @@
+//*************************************************************************************
+/** @class DimWriteStatistics
+
+ @brief provides a statistics service telling the free space on disk and the total size written so far
+
+*/
+//*************************************************************************************
+#include "DimWriteStatistics.h"
+
+#include <sys/statvfs.h> //for getting disk free space
+#include <sys/stat.h>    //for getting files sizes
+
+#include <boost/filesystem.hpp>
+
+#include "Time.h"
+
+using namespace std;
+using namespace boost::posix_time;
+
+// --------------------------------------------------------------------------
+//
+//! Constructor with correct service name. The state machine using this object should give it
+//! its own name as a parameter
+//! @param serverName the name of the server which created this object
+//
+DimWriteStatistics::DimWriteStatistics(const string& server, MessageImp &log) :
+    fLog(log),
+    fDimService(server + "/STATS",  "X:1;X:1;X:1;X:1",
+                "Statistics about size written"
+                "|FreeSpace[bytes]:Free space on disk"
+                "|Written[bytes]:Bytes written in total"
+                "|Rate[bytes]:Bytes written since last update"
+                "|Elapsed[ms]:Milliseconds elapsed since last update"),
+    fCurrentFolder("."),
+    fUpdateInterval(1000),
+    fBaseSize(0),
+    fDebug(false)
+{
+    fThread = boost::thread(boost::bind(&DimWriteStatistics::UpdateService, this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Destructor. Stop thread by setting fUpdateInterval to 0 and join the
+//! thread.
+//
+DimWriteStatistics::~DimWriteStatistics()
+{
+    fUpdateInterval = 0;
+
+    // This blocks for fPeriod duration, but maybe canceling the thread
+    // could be more dangerous leaving Dim in an undefined state.
+    fThread.interrupt();
+}
+
+int DimWriteStatistics::Write(const Time &t, const string &txt, int qos)
+{
+    return fLog.Write(t, txt, qos);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the free space of the current base path
+//! @return the available free space on disk, in bytes
+//
+int64_t DimWriteStatistics::GetFreeSpace()
+{
+    struct statvfs vfs;
+    if (statvfs(fCurrentFolder.c_str(), &vfs))
+        return -1;
+
+    return vfs.f_bsize*vfs.f_bavail;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the size on disk of a given file, in bytes
+//! @param file the filename for which the size should be retrieved
+//! @return the size of the file, in bytes
+//
+int64_t DimWriteStatistics::GetFileSizeOnDisk(const string& file, MessageImp &log)
+{
+     errno = 0;
+     struct stat st;
+     if (!stat(file.c_str(), &st))
+         return st.st_size;
+
+     //ignoring error #2: no such file or directory is not an error for new files
+     if (errno == 0 || errno == 2)
+         return 0;
+
+     ostringstream str;
+     str << "stat() failed for '" << file << "': " << strerror(errno) << " [errno=" << errno << "]";
+     log.Error(str);
+
+     return -1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the given path exists
+//
+bool DimWriteStatistics::DoesPathExist(string path, MessageImp &log)
+{
+    namespace fs = boost::filesystem;
+
+    if (path.empty())
+        path = ".";
+
+    const fs::path fullPath = fs::system_complete(fs::path(path));
+
+    if (!fs::exists(fullPath))
+       return false;
+
+    if (!fs::is_directory(fullPath))
+    {
+        log.Error("Path given for checking '" + path + "' designate a file name. Please provide a path name only");
+        return false;
+    }
+
+    if (access(path.c_str(), R_OK|W_OK|X_OK) != 0)
+    {
+        log.Error("Missing read, write or execute permissions on directory '" + path + "'");
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the current folder
+//! @param folder the path to the folder
+//
+bool DimWriteStatistics::SetCurrentFolder(const string& folder)
+{
+    struct statvfs vfs;
+    if (statvfs(folder.empty()?".":folder.c_str(), &vfs))
+    {
+        fLog.Error("statvfs() failed for '"+folder+"'... ignoring it.");
+        return false;
+    }
+
+    fCurrentFolder = folder.empty()?".":folder;
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Updates the service. This is the function executed by the thread
+//
+void DimWriteStatistics::UpdateService()
+{
+    Time previousTime;
+    uint64_t previousSize = 0;
+
+    while (1)
+    {
+        if (fUpdateInterval==0)
+        {
+            boost::this_thread::interruption_point();
+            boost::this_thread::yield();
+            continue;
+        }
+
+        Stats data;
+
+        for (set<string>::const_iterator it = fOpenedFiles.begin(); it != fOpenedFiles.end(); it++)
+            data.sizeWritten += GetFileSizeOnDisk(*it);
+        data.sizeWritten -= fBaseSize;
+
+        const Time cTime = Time();
+
+        data.freeSpace   = GetFreeSpace();
+        data.rateWritten = data.sizeWritten-previousSize;
+        data.timeElapsed = (cTime - previousTime).total_milliseconds();
+
+        previousSize = data.sizeWritten;
+        previousTime = cTime;
+
+        fDimService.setData(data);
+        fDimService.Update(cTime);
+
+        fStats = data;
+
+        if (fDebug)
+        {
+            ostringstream str;
+            str << "Written: " << fStats.sizeWritten/1000 << " kB; writing rate: ";
+            str << fStats.rateWritten/fStats.timeElapsed << " kB/s; free space: ";
+            str << fStats.freeSpace/1000000 << " MB";
+            fLog.Debug(str);
+        }
+
+        boost::this_thread::sleep(milliseconds(fUpdateInterval));
+    }
+}
+// --------------------------------------------------------------------------
+//
+//! Let the object know that a new file has been opened
+//! @param fileName the full name of the file newly opened
+//! @return whether this file could be stated or not
+//
+bool DimWriteStatistics::FileOpened(const string& fileName)
+{
+    if (fOpenedFiles.find(fileName) != fOpenedFiles.end())
+        return false;
+
+    //Add a newly opened file, and remember its original size
+    const int64_t newSize = GetFileSizeOnDisk(fileName);
+    if (newSize == -1)
+        return false;
+
+    fBaseSize += newSize;
+    fOpenedFiles.insert(fileName);
+
+    return true;
+}
+// --------------------------------------------------------------------------
+//
+//! Set the debug mode on and off
+//! @param debug the new mode (true or false)
+//
+void DimWriteStatistics::SetDebugMode(bool debug)
+{
+    fDebug = debug;
+
+    if (fDebug)
+        fLog.Debug("Debug mode is now on.");
+}
+// --------------------------------------------------------------------------
+//
+//! Set the update of the service interval
+//! @param duration the duration between two services update, in second
+//
+void DimWriteStatistics::SetUpdateInterval(const int16_t duration)
+{
+    if (!finite(duration))
+    {
+        fLog.Error("Provided update interval is not a valid float... discarding.");
+        return;
+    }
+    if (uint16_t(duration) == fUpdateInterval)
+    {
+        fLog.Warn("Statistics update interval not modified. Supplied value already in use.");
+        return;
+    }
+
+    if (duration <= 0)
+        fLog.Message("Statistics are now OFF.");
+    else
+    {
+        ostringstream str;
+        str << "Statistics update interval is now " << duration << " seconds";
+        fLog.Message(str);
+    }
+
+    fUpdateInterval = duration<0 ? 0 : duration;
+}
Index: branches/FACT++_part_filenames/src/DimWriteStatistics.h
===================================================================
--- branches/FACT++_part_filenames/src/DimWriteStatistics.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/DimWriteStatistics.h	(revision 18732)
@@ -0,0 +1,86 @@
+#ifndef FACT_DimWriteStatistics
+#define FACT_DimWriteStatistics
+
+#include <set>
+#include <string>
+
+// Keep these two together! Otheriwse it won't compile
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+
+#include "MessageImp.h"
+#include "DimDescriptionService.h"
+
+class DimWriteStatistics
+{
+public:
+    struct Stats
+    {
+        uint64_t freeSpace;
+        uint64_t sizeWritten;
+        uint64_t rateWritten;
+        uint64_t timeElapsed;
+
+        Stats() : freeSpace(0), sizeWritten(0), rateWritten(0), timeElapsed(0) { }
+    };
+
+private:
+    MessageImp &fLog;
+
+    DimDescribedService   fDimService;
+
+    std::string           fCurrentFolder;   /// Current folder being watched for free space
+    uint16_t              fUpdateInterval;  /// Duration, in millisecond between two service updates. 0 means no more updates
+    size_t                fBaseSize;        /// Total base size of all opened files
+    std::set<std::string> fOpenedFiles;     /// List of all opened files. set is used to easily check for entries
+
+    /// Bool indicating if debug information should be printed
+    bool fDebug;
+
+    /// The data structure holding the stat data
+    Stats fStats;
+
+    /// The boost thread used to update the service
+    boost::thread fThread;                  
+
+    ///Main loop
+    void UpdateService();
+
+    ///Returns the free space on the disk of the folder being watched (fCurrentFolder)
+    int64_t GetFreeSpace();
+
+    ///Returns the size on disk of a given file
+    int64_t GetFileSizeOnDisk(const std::string& file) { return GetFileSizeOnDisk(file, fLog); }
+
+    int Write(const Time &t, const std::string &txt, int qos);
+
+public:
+    ///Constructor
+    DimWriteStatistics(const std::string& serverName, MessageImp &log);
+
+    ///Default destructor
+    ~DimWriteStatistics();
+
+    ///Configures that current folder where files are written to
+    bool SetCurrentFolder(const std::string& folder);
+
+    bool FileOpened(const std::string& fileName);
+
+    void SetDebugMode(bool);
+    void SetUpdateInterval(const int16_t millisec);
+
+    const Stats &GetTotalSizeWritten() const { return fStats; }
+    uint16_t GetUpdateInterval() const { return fUpdateInterval; }
+
+    ///Returns the size on disk of a given file
+    static int64_t GetFileSizeOnDisk(const std::string& file, MessageImp &imp);
+
+    static bool DoesPathExist(std::string path, MessageImp &log);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Event.cc
===================================================================
--- branches/FACT++_part_filenames/src/Event.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Event.cc	(revision 18732)
@@ -0,0 +1,90 @@
+// **************************************************************************
+/** @class Event
+
+@brief Concerete implementation of an EventImp stroring name, format, data and time
+
+This is the implementation of an event which can be posted to a state
+machine, hosting all the data itself. In addition to the base class
+it has storage for name, format, the data and a time stamp.
+
+*/
+// **************************************************************************
+#include "Event.h"
+
+#include <iostream>
+
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Store the name in fName and the format in fFormat. Initializes fTime
+//! to an invalid time.
+//!
+//! @param name
+//!    Name given to the event
+//!
+//! @param fmt
+//!    If the event has data attached (like arguments of commands)
+//!    the format can be given here. How the format string is defined
+//!    is defined within the dim libarary. It is used in console
+//!    and shell access to properly format the data sent with the event
+//!
+//! <B>From the dim manual:</B>
+//!    The format parameter specifies the contents of the structure in
+//!    the form T:N[;T:N]*[;T] where T is the item type: (I)nteger,
+//!    (C)haracter, (L)ong, (S)hort, (F)loat, (D)ouble, and N is the
+//!    number of such items. The type alone at the end means all
+//!    following items are of the same type. Example: "I:3;F:2;C" means
+//!    3 Integers, 2 Floats and Characters until the end. The format
+//!    parameter is used for communicating between different platforms.
+//!
+//
+Event::Event(const string &name, const string &fmt) :
+    fName(name), fFormat(fmt), fTime(Time::none), fQoS(0), fEmpty(true)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Copies the all contents from an EventImp. Note, that also the data
+//! area is copied. If the name contains a slash ('/') everything before
+//! the slash is removed.
+//!
+//! @param evt
+//!    Reference to an object of type EventImp.
+//
+Event::Event(const EventImp &evt) : EventImp(evt),
+fName(evt.GetName()), fFormat(evt.GetFormat()),
+fData(evt.GetText(), evt.GetText()+evt.GetSize()), fTime(evt.GetTime()),
+fQoS(evt.GetQoS()), fEmpty(evt.IsEmpty())
+{
+    const size_t pos = fName.find_first_of('/');
+    if (pos!=string::npos)
+        fName = fName.substr(pos+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Copies the all contents from an EventImp. fData is initialized from the
+//! given memory. If the name contains a slash ('/') everything before
+//! the slash is removed.
+//!
+//! @param evt
+//!    Reference to an object of type EventImp.
+//!
+//! @param ptr
+//!    Pointer to the memory region to be copied.
+//!
+//! @param siz
+//!    Size of the memory region to be copied.
+//
+Event::Event(const EventImp &evt, const char *ptr, size_t siz) : EventImp(evt),
+fName(evt.GetName()), fFormat(evt.GetFormat()),
+fData(ptr, ptr+siz), fTime(evt.GetTime()), fQoS(evt.GetQoS()), fEmpty(ptr==0)
+{
+    const size_t pos = fName.find_first_of('/');
+    if (pos!=string::npos)
+        fName = fName.substr(pos+1);
+}
Index: branches/FACT++_part_filenames/src/Event.h
===================================================================
--- branches/FACT++_part_filenames/src/Event.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Event.h	(revision 18732)
@@ -0,0 +1,61 @@
+#ifndef FACT_Event
+#define FACT_Event
+
+#include "EventImp.h"
+
+class Event : public EventImp
+{
+private:
+    std::string fName;        /// A name associated with the event
+    std::string fFormat;      /// A string describing the format of the data
+    std::string fDescription; /// A human readable description of the event
+
+    std::vector<char> fData;  /// Data associated with this event
+
+    Time  fTime;              /// Time stamp
+    int   fQoS;               /// Quality of service
+    bool  fEmpty;             /// Empty is true if received event was a NULL pointer
+
+public:
+    Event() : fQoS(0), fEmpty(true) { }
+    /// Constructs an event as a combination of an EventImp and a DimCommand
+    Event(const std::string &name, const std::string &fmt="");
+    /// Copy constructor
+    Event(const EventImp &imp);
+    Event(const EventImp &imp, const char *ptr, size_t siz);
+
+    void SetDescription(const std::string &str) { fDescription=str; }
+    std::string GetDescription() const { return fDescription; }
+
+    /// Return the stored name of the event
+    std::string GetName() const { return fName; }
+    /// Return the stored format of the data
+    std::string GetFormat() const { return fFormat; }
+
+    /// Return a pointer to the data region
+    const void *GetData() const { return &*fData.begin(); }
+    /// Return the size of the data
+    size_t      GetSize() const { return fData.size(); }
+
+    /// Return reference to a time stamp
+    Time GetTime() const { return fTime; }
+    /// Return Quality of Service
+    int  GetQoS() const  { return fQoS; }
+    /// Return if event is not just zero size but empty
+    bool IsEmpty() const { return fEmpty; }
+
+    void SetTime() { fTime = Time(); }
+    void SetData(const std::vector<char> &data) { fData = data; }
+    void SetData(const void *ptr, size_t siz) {
+        const char *c = reinterpret_cast<const char*>(ptr);
+        fData = std::vector<char>(c, c+siz); }
+
+    void SetInt(int i) { SetData(&i, sizeof(i)); }
+    void SetFloat(float f) { SetData(&f, sizeof(f)); }
+    void SetDouble(float d) { SetData(&d, sizeof(d)); }
+    void SetShort(short s) { SetData(&s, sizeof(s)); }
+    void SetText(const char *txt) { SetData(txt, strlen(txt)+1); }
+    void SetString(const std::string &str) { SetData(str.c_str(), str.length()+1); }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/EventBuilder.cc
===================================================================
--- branches/FACT++_part_filenames/src/EventBuilder.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventBuilder.cc	(revision 18732)
@@ -0,0 +1,1574 @@
+#include <poll.h>
+#include <sys/time.h>
+#include <sys/epoll.h>
+#include <netinet/tcp.h>
+
+#include <cstring>
+#include <cstdarg>
+#include <list>
+#include <queue>
+
+#include <boost/algorithm/string/join.hpp>
+
+#include "../externals/Queue.h"
+
+#include "MessageImp.h"
+#include "EventBuilder.h"
+#include "HeadersFAD.h"
+
+using namespace std;
+
+#define MIN_LEN  32    // min #bytes needed to interpret FADheader
+#define MAX_LEN  81920 // one max evt = 1024*2*36 + 8*36 + 72 + 4 = 74092  (data+boardheader+eventheader+endflag)
+
+//#define COMPLETE_EVENTS
+//#define USE_POLL
+//#define USE_EPOLL
+//#define USE_SELECT
+//#define COMPLETE_EPOLL
+//#define PRIORITY_QUEUE
+
+// Reading only 1024: 13:  77Hz, 87%
+// Reading only 1024: 12:  78Hz, 46%
+// Reading only  300:  4: 250Hz, 92%
+// Reading only  300:  3: 258Hz, 40%
+
+// Reading only four threads 1024: 13:  77Hz, 60%
+// Reading only four threads 1024: 12:  78Hz, 46%
+// Reading only four threads  300:  4: 250Hz, 92%
+// Reading only four threads  300:  3: 258Hz, 40%
+
+// Default  300:  4: 249Hz, 92%
+// Default  300:  3: 261Hz, 40%
+// Default 1024: 13:  76Hz, 93%
+// Default 1024: 12:  79Hz, 46%
+
+// Poll [selected] 1024: 13:  63Hz, 45%
+// Poll [selected] 1024: 14:  63Hz, 63%
+// Poll [selected] 1024: 15:  64Hz, 80%
+// Poll [selected]  300:  4: 230Hz, 47%
+// Poll [selected]  300:  3: 200Hz, 94%
+
+// Poll [all]      1024: 13:  65Hz, 47%
+// Poll [all]      1024: 14:  64Hz, 59%
+// Poll [all]      1024: 15:  62Hz, 67%
+// Poll [all]       300:  4: 230Hz, 47%
+// Poll [all]       300:  3: 230Hz, 35%
+
+// ==========================================================================
+
+bool runOpen(const EVT_CTRL2 &evt);
+bool runWrite(const EVT_CTRL2 &evt);
+void runClose(const EVT_CTRL2 &run);
+void applyCalib(const EVT_CTRL2 &evt, const size_t &size);
+void factOut(int severity, const char *message);
+void factReportIncomplete (uint64_t rep);
+void gotNewRun(RUN_CTRL2 &run);
+void runFinished();
+void factStat(const GUI_STAT &gj);
+bool eventCheck(const EVT_CTRL2 &evt);
+void debugHead(void *buf);
+
+// ==========================================================================
+
+int g_reset;
+
+size_t g_maxMem;                //maximum memory allowed for buffer
+
+uint16_t g_evtTimeout;           // timeout (sec) for one event
+
+FACT_SOCK g_port[NBOARDS];      // .addr=string of IP-addr in dotted-decimal "ddd.ddd.ddd.ddd"
+
+uint gi_NumConnect[NBOARDS];    //4 crates * 10 boards
+
+GUI_STAT gj;
+
+// ==========================================================================
+
+namespace Memory
+{
+    uint64_t inuse     = 0;
+    uint64_t allocated = 0;
+
+    uint64_t max_inuse = 0;
+
+    std::mutex mtx;
+
+    std::forward_list<void*> memory;
+
+    void *malloc()
+    {
+        // No free slot available, next alloc would exceed max memory
+        if (memory.empty() && allocated+MAX_TOT_MEM>g_maxMem)
+            return NULL;
+
+        // We will return this amount of memory
+        // This is not 100% thread safe, but it is not a super accurate measure anyway
+        inuse += MAX_TOT_MEM;
+        if (inuse>max_inuse)
+            max_inuse = inuse;
+
+        if (memory.empty())
+        {
+            // No free slot available, allocate a new one
+            allocated += MAX_TOT_MEM;
+            return  new char[MAX_TOT_MEM];
+        }
+
+        // Get the next free slot from the stack and return it
+        const std::lock_guard<std::mutex> lock(mtx);
+
+        void *mem = memory.front();
+        memory.pop_front();
+        return mem;
+    };
+
+    void free(void *mem)
+    {
+        if (!mem)
+            return;
+
+        // Decrease the amont of memory in use accordingly
+        inuse -= MAX_TOT_MEM;
+
+        // If the maximum memory has changed, we might be over the limit.
+        // In this case: free a slot
+        if (allocated>g_maxMem)
+        {
+            delete [] (char*)mem;
+            allocated -= MAX_TOT_MEM;
+            return;
+        }
+
+        const std::lock_guard<std::mutex> lock(mtx);
+        memory.push_front(mem);
+    }
+
+};
+
+// ==========================================================================
+
+void factPrintf(int severity, const char *fmt, ...)
+{
+    char str[1000];
+
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(str, 1000, fmt, ap);
+    va_end(ap);
+
+    factOut(severity, str);
+}
+
+// ==========================================================================
+
+struct READ_STRUCT
+{
+    enum buftyp_t
+    {
+        kStream,
+        kHeader,
+        kData,
+#ifdef COMPLETE_EVENTS
+        kWait
+#endif
+    };
+
+    // ---------- connection ----------
+
+    static uint activeSockets;
+
+    int  sockId;       // socket id (board number)
+    int  socket;       // socket handle
+    bool connected;    // is this socket connected?
+
+    struct sockaddr_in SockAddr;  // Socket address copied from wrapper during socket creation
+
+    // ------------ epoll -------------
+
+    static int  fd_epoll;
+    static epoll_event events[NBOARDS];
+
+    static void init();
+    static void close();
+    static int  wait();
+    static READ_STRUCT *get(int i) { return reinterpret_cast<READ_STRUCT*>(events[i].data.ptr); }
+
+    // ------------ buffer ------------
+
+    buftyp_t  bufTyp;  // what are we reading at the moment: 0=header 1=data -1=skip ...
+
+    uint32_t  bufLen;  // number of bytes left to read
+    uint8_t  *bufPos;  // next byte to read to the buffer next
+
+    union
+    {
+        uint8_t  B[MAX_LEN];
+        uint16_t S[MAX_LEN / 2];
+        uint32_t I[MAX_LEN / 4];
+        uint64_t L[MAX_LEN / 8];
+        PEVNT_HEADER H;
+    };
+
+    timeval  time;
+    uint64_t totBytes;  // total received bytes
+    uint64_t relBytes;  // total released bytes
+    uint32_t skip;      // number of bytes skipped before start of event
+
+    uint32_t len() const { return uint32_t(H.package_length)*2; }
+
+    void swapHeader();
+    void swapData();
+
+    // --------------------------------
+
+    READ_STRUCT() : socket(-1), connected(false), totBytes(0), relBytes(0)
+    {
+        if (fd_epoll<0)
+            init();
+    }
+    ~READ_STRUCT()
+    {
+        destroy();
+    }
+
+    void destroy();
+    bool create(sockaddr_in addr);
+    bool check(int, sockaddr_in addr);
+    bool read();
+
+};
+
+#ifdef PRIORITY_QUEUE
+struct READ_STRUCTcomp
+{
+    bool operator()(const READ_STRUCT *r1, const READ_STRUCT *r2)
+    {
+        const int64_t rel1 = r1->totBytes - r1->relBytes;
+        const int64_t rel2 = r2->totBytes - r2->relBytes;
+        return rel1 > rel2;
+    }
+};
+#endif
+
+int READ_STRUCT::wait()
+{
+    // wait for something to do...
+    const int rc = epoll_wait(fd_epoll, events, NBOARDS, 100); // max, timeout[ms]
+    if (rc>=0)
+        return rc;
+
+    if (errno==EINTR) // timout or signal interruption
+        return 0;
+
+    factPrintf(MessageImp::kError, "epoll_wait failed: %m (rc=%d)", errno);
+    return -1;
+}
+
+uint READ_STRUCT::activeSockets = 0;
+int READ_STRUCT::fd_epoll = -1;
+epoll_event READ_STRUCT::events[NBOARDS];
+
+void READ_STRUCT::init()
+{
+    if (fd_epoll>=0)
+        return;
+
+#ifdef USE_EPOLL
+    fd_epoll = epoll_create(NBOARDS);
+    if (fd_epoll<0)
+    {
+        factPrintf(MessageImp::kError, "Waiting for data failed: %d (epoll_create,rc=%d)", errno);
+        return;
+    }
+#endif
+}
+
+void READ_STRUCT::close()
+{
+#ifdef USE_EPOLL
+    if (fd_epoll>=0 && ::close(fd_epoll)>0)
+        factPrintf(MessageImp::kFatal, "Closing epoll failed: %m (close,rc=%d)", errno);
+#endif
+
+    fd_epoll = -1;
+}
+
+bool READ_STRUCT::create(sockaddr_in sockAddr)
+{
+    if (socket>=0)
+        return false;
+
+    const int port = ntohs(sockAddr.sin_port) + 1;
+
+    SockAddr.sin_family = sockAddr.sin_family;
+    SockAddr.sin_addr   = sockAddr.sin_addr;
+    SockAddr.sin_port   = htons(port);
+
+    if ((socket = ::socket(PF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0)) <= 0)
+    {
+        factPrintf(MessageImp::kFatal, "Generating socket %d failed: %m (socket,rc=%d)", sockId, errno);
+        socket = -1;
+        return false;
+    }
+
+    int optval = 1;
+    if (setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_NODELAY for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 1;
+    if (setsockopt (socket, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting SO_KEEPALIVE for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 10;                 //start after 10 seconds
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPIDLE, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPIDLE for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 10;                 //do every 10 seconds
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPINTVL, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPINTVL for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 2;                  //close after 2 unsuccessful tries
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPCNT, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPCNT for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    factPrintf(MessageImp::kInfo, "Generated socket %d (%d)", sockId, socket);
+
+    //connected = false;
+    activeSockets++;
+
+    return true;
+}
+
+void READ_STRUCT::destroy()
+{
+    if (socket<0)
+        return;
+
+#ifdef USE_EPOLL
+    // strictly speaking this should not be necessary
+    if (fd_epoll>=0 && connected && epoll_ctl(fd_epoll, EPOLL_CTL_DEL, socket, NULL)<0)
+        factPrintf(MessageImp::kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+#endif
+
+    if (::close(socket) > 0)
+        factPrintf(MessageImp::kFatal, "Closing socket %d failed: %m (close,rc=%d)", sockId, errno);
+    else
+        factPrintf(MessageImp::kInfo, "Closed socket %d (%d)", sockId, socket);
+
+    // Set the socket to "not connected"
+    socket = -1;
+    connected = false;
+    activeSockets--;
+    bufLen = 0;
+}
+
+bool READ_STRUCT::check(int sockDef, sockaddr_in addr)
+{
+    // Continue in the most most likely case (performance)
+    //if (socket>=0 && sockDef!=0 && connected)
+    //    return;
+    const int old = socket;
+
+    // socket open, but should not be open
+    if (socket>=0 && sockDef==0)
+        destroy();
+
+    // Socket closed, but should be open
+    if (socket<0 && sockDef!=0)
+        create(addr); //generate address and socket
+
+    const bool retval = old!=socket;
+
+    // Socket closed
+    if (socket<0)
+        return retval;
+
+    // Socket open and connected: Nothing to do
+    if (connected)
+        return retval;
+
+    //try to connect if not yet done
+    const int rc = connect(socket, (struct sockaddr *) &SockAddr, sizeof(SockAddr));
+    if (rc == -1)
+        return retval;
+
+    connected = true;
+
+    if (sockDef<0)
+    {
+        bufTyp = READ_STRUCT::kStream; // full data to be skipped
+        bufLen = MAX_LEN;              // huge for skipping
+    }
+    else
+    {
+        bufTyp = READ_STRUCT::kHeader;  // expect a header
+        bufLen = sizeof(PEVNT_HEADER);  // max size to read at begining
+    }
+
+    bufPos   = B;  // no byte read so far
+    skip     = 0;  // start empty
+    totBytes = 0;
+    relBytes = 0;
+
+    factPrintf(MessageImp::kInfo, "Connected socket %d (%d)", sockId, socket);
+
+#ifdef USE_EPOLL
+    epoll_event ev;
+    ev.events = EPOLLIN;
+    ev.data.ptr = this;  // user data (union: ev.ptr)
+    if (epoll_ctl(fd_epoll, EPOLL_CTL_ADD, socket, &ev)<0)
+        factPrintf(MessageImp::kError, "epoll_ctl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+#endif
+
+    return retval;
+}
+
+bool READ_STRUCT::read()
+{
+    if (!connected)
+        return false;
+
+    if (bufLen==0)
+        return true;
+
+    const int32_t jrd = recv(socket, bufPos, bufLen, MSG_DONTWAIT);
+    // recv failed
+    if (jrd<0)
+    {
+        // There was just nothing waiting
+        if (errno==EWOULDBLOCK || errno==EAGAIN)
+            return false;
+
+        factPrintf(MessageImp::kError, "Reading from socket %d failed: %m (recv,rc=%d)", sockId, errno);
+        return false;
+    }
+
+    // connection was closed ...
+    if (jrd==0)
+    {
+        factPrintf(MessageImp::kInfo, "Socket %d closed by FAD", sockId);
+
+        destroy();//DestroySocket(rd[i]); //generate address and socket
+        return false;
+    }
+
+    totBytes += jrd;
+
+    // are we skipping this board ...
+    if (bufTyp==kStream)
+        return false;
+
+    if (bufPos==B)
+        gettimeofday(&time, NULL);
+
+    bufPos += jrd;  //==> prepare for continuation
+    bufLen -= jrd;
+
+    // not yet all read
+    return bufLen==0;
+}
+
+void READ_STRUCT::swapHeader()
+{
+    S[1]  = ntohs(S[1]);    // package_length (bytes not swapped!)
+    S[2]  = ntohs(S[2]);    // version_no
+    S[3]  = ntohs(S[3]);    // PLLLCK
+    S[4]  = ntohs(S[4]);    // trigger_crc
+    S[5]  = ntohs(S[5]);    // trigger_type
+
+    I[3]  = ntohl(I[3]);    // trigger_id
+    I[4]  = ntohl(I[4]);    // fad_evt_counter
+    I[5]  = ntohl(I[5]);    // REFCLK_frequency
+
+    S[12] = ntohs(S[12]);   // board id
+    S[13] = ntohs(S[13]);   // adc_clock_phase_shift
+    S[14] = ntohs(S[14]);   // number_of_triggers_to_generate
+    S[15] = ntohs(S[15]);   // trigger_generator_prescaler
+
+    I[10] = ntohl(I[10]);   // runnumber;
+    I[11] = ntohl(I[11]);   // time;
+
+    // Use back inserter??
+    for (int s=24; s<24+NTemp+NDAC; s++)
+        S[s] = ntohs(S[s]); // drs_temperature / dac
+}
+
+void READ_STRUCT::swapData()
+{
+    // swapEventHeaderBytes: End of the header. to channels now
+
+    int i = 36;
+    for (int ePatchesCount = 0; ePatchesCount<4*9; ePatchesCount++)
+    {
+        S[i+0] = ntohs(S[i+0]);//id
+        S[i+1] = ntohs(S[i+1]);//start_cell
+        S[i+2] = ntohs(S[i+2]);//roi
+        S[i+3] = ntohs(S[i+3]);//filling
+
+        i += 4+S[i+2];//skip the pixel data
+    }
+}
+
+// ==========================================================================
+
+bool checkRoiConsistency(const READ_STRUCT &rd, uint16_t roi[])
+{
+    int xjr = -1;
+    int xkr = -1;
+
+    //points to the very first roi
+    int roiPtr = sizeof(PEVNT_HEADER)/2 + 2;
+
+    roi[0] = ntohs(rd.S[roiPtr]);
+
+    for (int jr = 0; jr < 9; jr++)
+    {
+        roi[jr] = ntohs(rd.S[roiPtr]);
+
+        if (roi[jr]>1024)
+        {
+            factPrintf(MessageImp::kError, "Illegal roi in channel %d (allowed: roi<=1024)", jr, roi[jr]);
+            return false;
+        }
+
+        // Check that the roi of pixels jr are compatible with the one of pixel 0
+        if (jr!=8 && roi[jr]!=roi[0])
+        {
+            xjr = jr;
+            break;
+        }
+
+        // Check that the roi of all other DRS chips on boards are compatible
+        for (int kr = 1; kr < 4; kr++)
+        {
+            const int kroi = ntohs(rd.S[roiPtr]);
+            if (kroi != roi[jr])
+            {
+                xjr = jr;
+                xkr = kr;
+                break;
+            }
+            roiPtr += kroi+4;
+        }
+    }
+
+    if (xjr>=0)
+    {
+        if (xkr<0)
+            factPrintf(MessageImp::kFatal, "Inconsistent Roi accross chips [DRS=%d], expected %d, got %d", xjr, roi[0], roi[xjr]);
+        else
+            factPrintf(MessageImp::kFatal, "Inconsistent Roi accross channels [DRS=%d Ch=%d], expected %d, got %d", xjr, xkr, roi[xjr], ntohs(rd.S[roiPtr]));
+
+        return false;
+    }
+
+    if (roi[8] < roi[0])
+    {
+        factPrintf(MessageImp::kError, "Mismatch of roi (%d) in channel 8. Should be larger or equal than the roi (%d) in channel 0.", roi[8], roi[0]);
+        return false;
+    }
+
+    return true;
+}
+
+list<shared_ptr<EVT_CTRL2>> evtCtrl;
+
+shared_ptr<EVT_CTRL2> mBufEvt(const READ_STRUCT &rd, shared_ptr<RUN_CTRL2> &actrun)
+{
+    /*
+     checkroi consistence
+     find existing entry
+     if no entry, try to allocate memory
+     if entry and memory, init event structure
+     */
+
+    uint16_t nRoi[9];
+    if (!checkRoiConsistency(rd, nRoi))
+        return shared_ptr<EVT_CTRL2>();
+
+    for (auto it=evtCtrl.rbegin(); it!=evtCtrl.rend(); it++)
+    {
+        // A reference is enough because the evtCtrl holds the shared_ptr anyway
+        const shared_ptr<EVT_CTRL2> &evt = *it;
+
+        // If the run is different, go on searching.
+        // We cannot stop searching if a lower run-id is found as in
+        // the case of the events, because theoretically, there
+        // can be the same run on two different days.
+        if (rd.H.runnumber != evt->runNum)
+            continue;
+
+        // If the ID of the new event if higher than the last one stored
+        // in that run, we have to assign a new slot (leave the loop)
+        if (rd.H.fad_evt_counter > evt->evNum/* && runID == evtCtrl[k].runNum*/)
+            break;
+
+        if (rd.H.fad_evt_counter != evt->evNum/* || runID != evtCtrl[k].runNum*/)
+            continue;
+
+        // We have found an entry with the same runID and evtID
+        // Check if ROI is consistent
+        if (evt->nRoi != nRoi[0] || evt->nRoiTM != nRoi[8])
+        {
+            factPrintf(MessageImp::kError, "Mismatch of roi within event. Expected roi=%d and roi_tm=%d, got %d and %d.",
+                       evt->nRoi, evt->nRoiTM, nRoi[0], nRoi[8]);
+            return shared_ptr<EVT_CTRL2>();
+        }
+
+        // It is maybe not likely, but the header of this board might have
+        // arrived earlier. (We could also update the run-info, but
+        // this should not make a difference here)
+        if ((rd.time.tv_sec==evt->time.tv_sec && rd.time.tv_usec<evt->time.tv_usec) ||
+            rd.time.tv_sec<evt->time.tv_sec)
+            evt->time = rd.time;
+
+        //everything seems fine so far ==> use this slot ....
+        return evt;
+    }
+
+    if (actrun->runId==rd.H.runnumber && (actrun->roi0 != nRoi[0] || actrun->roi8 != nRoi[8]))
+    {
+        factPrintf(MessageImp::kError, "Mismatch of roi within run. Expected roi=%d and roi_tm=%d, got %d and %d (runID=%d, evID=%d)",
+                   actrun->roi0, actrun->roi8, nRoi[0], nRoi[8], rd.H.runnumber, rd.H.fad_evt_counter);
+        return shared_ptr<EVT_CTRL2>();
+    }
+
+    EVT_CTRL2 *evt = new EVT_CTRL2;
+
+    evt->time   = rd.time;
+
+    evt->runNum = rd.H.runnumber;
+    evt->evNum  = rd.H.fad_evt_counter;
+
+    evt->trgNum = rd.H.trigger_id;
+    evt->trgTyp = rd.H.trigger_type;
+
+    evt->nRoi   = nRoi[0];
+    evt->nRoiTM = nRoi[8];
+
+    //evt->firstBoard = rd.sockId;
+
+    const bool newrun = actrun->runId != rd.H.runnumber;
+    if (newrun)
+    {
+        // Since we have started a new run, we know already when to close the
+        // previous run in terms of number of events
+        actrun->maxEvt = actrun->lastEvt;
+
+        factPrintf(MessageImp::kInfo, "New run %d (evt=%d) registered with roi=%d(%d), prev=%d",
+                   rd.H.runnumber, rd.H.fad_evt_counter, nRoi[0], nRoi[8], actrun->runId);
+
+        // The new run is the active run now
+        actrun = make_shared<RUN_CTRL2>();
+
+        const time_t &tsec = evt->time.tv_sec;
+
+        actrun->openTime  = tsec;
+        actrun->closeTime = tsec + 3600 * 24; // max time allowed
+        actrun->runId     = rd.H.runnumber;
+        actrun->roi0      = nRoi[0];  // FIXME: Make obsolete!
+        actrun->roi8      = nRoi[8];  // FIXME: Make obsolete!
+
+        // Signal the fadctrl that a new run has been started
+        // Note this is the only place at which we can ensure that
+        // gotnewRun is called only once
+        gotNewRun(*actrun);
+    }
+
+    // Keep pointer to run of this event
+    evt->runCtrl = actrun;
+
+    // Increase the number of events we have started to receive in this run
+    actrun->lastTime = evt->time.tv_sec;  // Time when the last event was received
+    actrun->lastEvt++;
+
+    // An event can be the first and the last, but not the last and the first.
+    // Therefore gotNewRun is called before runFinished.
+    // runFinished signals that the last event of a run was just received. Processing
+    // might still be ongoing, but we can start a new run.
+    const bool cond1 = actrun->lastEvt  < actrun->maxEvt;     // max number of events not reached
+    const bool cond2 = actrun->lastTime < actrun->closeTime;  // max time not reached
+    if (!cond1 || !cond2)
+        runFinished();
+
+    // We don't mind here that this is not common to all events,
+    // because every coming event will fullfil the condition as well.
+    if (!cond1)
+        evt->closeRequest |= kRequestMaxEvtsReached;
+    if (!cond2)
+        evt->closeRequest |= kRequestMaxTimeReached;
+
+    // Secure access to evtCtrl against access in CloseRunFile
+    // This should be the last... otherwise we can run into threading issues
+    // if the event is accessed before it is fully initialized.
+    evtCtrl.emplace_back(evt);
+    return evtCtrl.back();
+}
+
+
+void copyData(const READ_STRUCT &rBuf, EVT_CTRL2 *evt)
+{
+    const int i = rBuf.sockId;
+
+    memcpy(evt->FADhead+i, &rBuf.H, sizeof(PEVNT_HEADER));
+
+    int src = sizeof(PEVNT_HEADER) / 2;  // Header is 72 byte = 36 shorts
+
+    // consistency of ROIs have been checked already (is it all correct?)
+    const uint16_t &roi = rBuf.S[src+2];
+
+    // different sort in FAD board.....
+    EVENT *event = evt->fEvent;
+    for (int px = 0; px < 9; px++)
+    {
+        for (int drs = 0; drs < 4; drs++)
+        {
+            const int16_t pixC = rBuf.S[src+1];    // start-cell
+            const int16_t pixR = rBuf.S[src+2];    // roi
+            //here we should check if pixH is correct ....
+
+            const int pixS = i*36 + drs*9 + px;
+
+            event->StartPix[pixS] = pixC;
+
+            memcpy(event->Adc_Data + pixS*roi, &rBuf.S[src+4], roi * 2);
+
+            src += 4+pixR;
+
+            // Treatment for ch 9 (TM channel)
+            if (px != 8)
+                continue;
+
+            const int tmS = i*4 + drs;
+
+            //and we have additional TM info
+            if (pixR > roi)
+            {
+                event->StartTM[tmS] = (pixC + pixR - roi) % 1024;
+
+                memcpy(event->Adc_Data + tmS*roi + NPIX*roi, &rBuf.S[src - roi], roi * 2);
+            }
+            else
+            {
+                event->StartTM[tmS] = -1;
+            }
+        }
+    }
+}
+
+// ==========================================================================
+
+uint64_t reportIncomplete(const shared_ptr<EVT_CTRL2> &evt, const char *txt)
+{
+    factPrintf(MessageImp::kWarn, "skip incomplete evt (run=%d, evt=%d, n=%d, %s)",
+               evt->runNum, evt->evNum, evtCtrl.size(), txt);
+
+    uint64_t report = 0;
+
+    char str[1000];
+
+    int ik=0;
+    for (int ib=0; ib<NBOARDS; ib++)
+    {
+        if (ib%10==0)
+            str[ik++] = '|';
+
+        const int jb = evt->board[ib];
+        if (jb>=0) // data received from that board
+        {
+            str[ik++] = '0'+(jb%10);
+            continue;
+        }
+
+        // FIXME: This is not synchronous... it reports
+        // accoridng to the current connection status, not w.r.t. to the
+        // one when the event was taken.
+        if (gi_NumConnect[ib]==0) // board not connected
+        {
+            str[ik++] = 'x';
+            continue;
+        }
+
+        // data from this board lost
+        str[ik++] = '.';
+        report |= ((uint64_t)1)<<ib;
+    }
+
+    str[ik++] = '|';
+    str[ik]   = 0;
+
+    factOut(MessageImp::kWarn, str);
+
+    return report;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+bool proc1(const shared_ptr<EVT_CTRL2> &);
+
+Queue<shared_ptr<EVT_CTRL2>> processingQueue1(bind(&proc1, placeholders::_1));
+
+bool proc1(const shared_ptr<EVT_CTRL2> &evt)
+{
+    applyCalib(*evt, processingQueue1.size());
+    return true;
+}
+
+// If this is not convenient anymore, it could be replaced by
+// a command queue, to which command+data is posted,
+// (e.g. runOpen+runInfo, runClose+runInfo, evtWrite+evtInfo)
+bool writeEvt(const shared_ptr<EVT_CTRL2> &evt)
+{
+    //const shared_ptr<RUN_CTRL2> &run = evt->runCtrl;
+    RUN_CTRL2 &run = *evt->runCtrl;
+
+    // Is this a valid event or just an empty event to trigger run close?
+    // If this is not an empty event open the new run-file
+    // Empty events are there to trigger run-closing conditions
+    if (evt->valid())
+    {
+        // File not yet open
+        if (run.fileStat==kFileNotYetOpen)
+        {
+            // runOpen will close a previous run, if still open
+            if (!runOpen(*evt))
+            {
+                factPrintf(MessageImp::kError, "Could not open new file for run %d (evt=%d, runOpen failed)", evt->runNum, evt->evNum);
+                run.fileStat = kFileClosed;
+                return true;
+            }
+
+            factPrintf(MessageImp::kInfo, "Opened new file for run %d (evt=%d)", evt->runNum, evt->evNum);
+            run.fileStat = kFileOpen;
+        }
+
+        // Here we have a valid calibration and can go on with that.
+        // It is important that _all_ events are sent for calibration (except broken ones)
+        processingQueue1.post(evt);
+    }
+
+    // File already closed
+    if (run.fileStat==kFileClosed)
+        return true;
+
+    // If we will have a software trigger which prevents single events from writing,
+    // the logic of writing the stop time and the trigger counters need to be adapted.
+    // Currently it is just the values of the last valid event.
+    bool rc1 = true;
+    if (evt->valid())
+    {
+        rc1 = runWrite(*evt);
+        if (!rc1)
+            factPrintf(MessageImp::kError, "Writing event %d for run %d failed (runWrite)", evt->evNum, evt->runNum);
+    }
+
+    // File not open... no need to close or to check for close
+    // ... this is the case if CloseRunFile was called before any file was opened.
+    if (run.fileStat!=kFileOpen)
+        return true;
+
+    // File is not yet to be closed.
+    if (rc1 && evt->closeRequest==kRequestNone)
+        return true;
+
+    runClose(*evt);
+    run.fileStat = kFileClosed;
+
+    vector<string> reason;
+    if (evt->closeRequest&kRequestManual)
+        reason.emplace_back("close requested");
+    if (evt->closeRequest&kRequestTimeout)
+        reason.emplace_back("receive timeout");
+    if (evt->closeRequest&kRequestConnectionChange)
+        reason.emplace_back("connection changed");
+    if (evt->closeRequest&kRequestEventCheckFailed)
+        reason.emplace_back("event check failed");
+    if (evt->closeRequest&kRequestMaxTimeReached)
+        reason.push_back(to_string(run.closeTime-run.openTime)+"s reached");
+    if (evt->closeRequest&kRequestMaxEvtsReached)
+        reason.push_back(to_string(run.maxEvt)+" evts reached");
+    if (!rc1)
+        reason.emplace_back("runWrite failed");
+
+    const string str = boost::algorithm::join(reason, ", ");
+    factPrintf(MessageImp::kInfo, "File closed because %s",  str.c_str());
+
+    return true;
+}
+
+Queue<shared_ptr<EVT_CTRL2>> secondaryQueue(bind(&writeEvt, placeholders::_1));
+
+bool procEvt(const shared_ptr<EVT_CTRL2> &evt)
+{
+    RUN_CTRL2 &run = *evt->runCtrl;
+
+    bool check = true;
+    if (evt->valid())
+    {
+        EVENT *event = evt->fEvent;
+
+        // This is already done in initMemory()
+        //event->Roi         = evt->runCtrl->roi0;
+        //event->RoiTM       = evt->runCtrl->roi8;
+        //event->EventNum    = evt->evNum;
+        //event->TriggerNum  = evt->trgNum;
+        //event->TriggerType = evt->trgTyp;
+
+        event->NumBoards = evt->nBoard;
+
+        event->PCTime = evt->time.tv_sec;
+        event->PCUsec = evt->time.tv_usec;
+
+        for (int ib=0; ib<NBOARDS; ib++)
+            event->BoardTime[ib] = evt->FADhead[ib].time;
+
+        check = eventCheck(*evt);
+
+        // If the event is valid, increase the trigger counter accordingly
+        if (check)
+        {
+            // Physics trigger
+            if (evt->trgTyp && !(evt->trgTyp & FAD::EventHeader::kAll))
+                run.triggerCounter[0]++;
+            // Pure pedestal trigger
+            else  if ((evt->trgTyp&FAD::EventHeader::kPedestal) && !(evt->trgTyp&FAD::EventHeader::kTIM))
+                run.triggerCounter[1]++;
+            // external light pulser trigger
+            else if (evt->trgTyp & FAD::EventHeader::kLPext)
+                run.triggerCounter[2]++;
+            // time calibration triggers
+            else if (evt->trgTyp & (FAD::EventHeader::kTIM|FAD::EventHeader::kPedestal))
+                run.triggerCounter[3]++;
+            // internal light pulser trigger
+            else if (evt->trgTyp & FAD::EventHeader::kLPint)
+                run.triggerCounter[4]++;
+            // external trigger input 1
+            else if (evt->trgTyp & FAD::EventHeader::kExt1)
+                run.triggerCounter[5]++;
+            // external trigger input 2
+            else if (evt->trgTyp & FAD::EventHeader::kExt2)
+                run.triggerCounter[6]++;
+            // other triggers
+            else
+                run.triggerCounter[7]++;
+        }
+    }
+
+    // If this is an invalid event, the current triggerCounter needs to be copied
+    // because runClose will use that one to update the TRIGGER_COUNTER.
+    // When closing the file, the trigger counter of the last successfully
+    // written event is used.
+    evt->triggerCounter = run.triggerCounter;
+
+    // If event check has failed, skip the event and post a close request instead.
+    // Otherwise, if file is open post the event for being written
+    if (!check)
+        secondaryQueue.emplace(new EVT_CTRL2(kRequestEventCheckFailed, evt->runCtrl));
+    else
+        secondaryQueue.post(evt);
+
+    return true;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+/*
+ task 1-4:
+
+ lock1()-lock4();
+ while (1)
+ {
+       wait for signal [lockN];  // unlocked
+
+       while (n!=10)
+         wait sockets;
+         read;
+
+       lockM();
+       finished[n] = true;
+       signal(mainloop);
+       unlockM();
+ }
+
+
+ mainloop:
+
+ while (1)
+ {
+       lockM();
+       while (!finished[0] || !finished[1] ...)
+          wait for signal [lockM];  // unlocked... signals can be sent
+       finished[0-1] = false;
+       unlockM()
+
+       copy data to queue    // locked
+
+       lockN[0-3];
+       signalN[0-3];
+       unlockN[0-3];
+ }
+
+
+ */
+
+/*
+    while (g_reset)
+    {
+        shared_ptr<EVT_CTRL2> evt = new shared_ptr<>;
+
+        // Check that all sockets are connected
+
+        for (int i=0; i<40; i++)
+            if (rd[i].connected && epoll_ctl(fd_epoll, EPOLL_CTL_ADD, socket, NULL)<0)
+               factPrintf(kError, "epoll_ctrl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+
+        while (g_reset)
+        {
+           if (READ_STRUCT::wait()<0)
+              break;
+
+           if (rc_epoll==0)
+              break;
+
+           for (int jj=0; jj<rc_epoll; jj++)
+           {
+              READ_STRUCT *rs = READ_STRUCT::get(jj);
+              if (!rs->connected)
+                  continue;
+
+              const bool rc_read = rs->read();
+              if (!rc_read)
+                  continue;
+
+              if (rs->bufTyp==READ_STRUCT::kHeader)
+              {
+                  [...]
+              }
+
+              [...]
+
+              if (epoll_ctl(fd_epoll, EPOLL_CTL_DEL, socket, NULL)<0)
+                 factPrintf(kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+           }
+
+           if (once_a_second)
+           {
+              if (evt==timeout)
+                  break;
+           }
+        }
+
+        if (evt.nBoards==actBoards)
+            primaryQueue.post(evt);
+    }
+*/
+
+Queue<shared_ptr<EVT_CTRL2>> primaryQueue(bind(&procEvt, placeholders::_1));
+
+// This corresponds more or less to fFile... should we merge both?
+shared_ptr<RUN_CTRL2> actrun;
+
+void CloseRunFile()
+{
+    // Currently we need actrun here, to be able to set kFileClosed.
+    // Apart from that we have to ensure that there is an open file at all
+    // which we can close.
+    // Submission to the primary queue ensures that the event
+    // is placed at the right place in the processing chain.
+    // (Corresponds to the correct run)
+    primaryQueue.emplace(new EVT_CTRL2(kRequestManual, actrun));
+}
+
+bool mainloop(READ_STRUCT *rd)
+{
+    factPrintf(MessageImp::kInfo, "Starting EventBuilder main loop");
+
+    primaryQueue.start();
+    secondaryQueue.start();
+    processingQueue1.start();;
+
+    actrun = make_shared<RUN_CTRL2>();
+
+    //time in seconds
+    time_t gi_SecTime = time(NULL)-1;
+
+    //loop until global variable g_runStat claims stop
+    g_reset = 0;
+    while (g_reset == 0)
+    {
+#ifdef USE_POLL
+        int    pp[40];
+        int    nn = 0;
+        pollfd fds[40];
+        for (int i=0; i<40; i++)
+        {
+            if (rd[i].socket>=0 && rd[i].connected && rd[i].bufLen>0)
+            {
+                fds[nn].fd = rd[i].socket;
+                fds[nn].events = POLLIN;
+                pp[nn] = i;
+                nn++;
+            }
+        }
+
+        const int rc_epoll = poll(fds, nn, 100);
+        if (rc_epoll<0)
+            break;
+#endif
+
+#ifdef USE_SELECT
+        fd_set readfs;
+        FD_ZERO(&readfs);
+        int nfsd = 0;
+        for (int i=0; i<NBOARDS; i++)
+            if (rd[i].socket>=0 && rd[i].connected && rd[i].bufLen>0)
+            {
+                FD_SET(rd[i].socket, &readfs);
+                if (rd[i].socket>nfsd)
+                    nfsd = rd[i].socket;
+            }
+
+        timeval tv;
+        tv.tv_sec = 0;
+        tv.tv_usec = 100000;
+        const int rc_select = select(nfsd+1, &readfs, NULL, NULL, &tv);
+        // 0: timeout
+        // -1: error
+        if (rc_select<0)
+        {
+            factPrintf(MessageImp::kError, "Waiting for data failed: %d (select,rc=%d)", errno);
+            continue;
+        }
+#endif
+
+#ifdef USE_EPOLL
+        const int rc_epoll = READ_STRUCT::wait();
+        if (rc_epoll<0)
+            break;
+#endif
+
+#ifdef PRIORITY_QUEUE
+        priority_queue<READ_STRUCT*, vector<READ_STRUCT*>, READ_STRUCTcomp> prio;
+
+        for (int i=0; i<NBOARDS; i++)
+            if (rd[i].connected)
+                prio.push(rd+i);
+
+        if (!prio.empty()) do
+#endif
+
+
+#ifdef USE_POLL
+        for (int jj=0; jj<nn; jj++)
+#endif
+#ifdef USE_EPOLL
+        for (int jj=0; jj<rc_epoll; jj++)
+#endif
+#if !defined(USE_EPOLL) && !defined(USE_POLL) && !defined(PRIORITY_QUEUE)
+        for (int jj=0; jj<NBOARDS; jj++)
+#endif
+        {
+#ifdef PRIORITY_QUEUE
+            READ_STRUCT *rs = prio.top();
+#endif
+#ifdef USE_SELECT
+            if (!FD_ISSET(rs->socket, &readfs))
+                continue;
+#endif
+
+#ifdef USE_POLL
+            if ((fds[jj].revents&POLLIN)==0)
+                continue;
+#endif
+
+#ifdef USE_EPOLL
+            // FIXME: How to get i?
+            READ_STRUCT *rs = READ_STRUCT::get(jj);
+#endif
+
+#ifdef USE_POLL
+            // FIXME: How to get i?
+            READ_STRUCT *rs = &rd[pp[jj]];
+#endif
+
+#if !defined(USE_POLL) && !defined(USE_EPOLL) && !defined(PRIORITY_QUEUE)
+            const int i = (jj%4)*10 + (jj/4);
+            READ_STRUCT *rs = &rd[i];
+#endif
+
+#ifdef COMPLETE_EVENTS
+            if (rs->bufTyp==READ_STRUCT::kWait)
+                continue;
+#endif
+
+            // ==================================================================
+
+            const bool rc_read = rs->read();
+
+            // Connect might have gotten closed during read
+            gi_NumConnect[rs->sockId] = rs->connected;
+            gj.numConn[rs->sockId]    = rs->connected;
+
+            // Read either failed or disconnected, or the buffer is not yet full
+            if (!rc_read)
+                continue;
+
+            // ==================================================================
+
+            if (rs->bufTyp==READ_STRUCT::kHeader)
+            {
+                //check if startflag correct; else shift block ....
+                // FIXME: This is not enough... this combination of
+                //        bytes can be anywhere... at least the end bytes
+                //        must be checked somewhere, too.
+                uint k;
+                for (k=0; k<sizeof(PEVNT_HEADER)-1; k++)
+                {
+                    if (rs->B[k]==0xfb && rs->B[k+1] == 0x01)
+                        break;
+                }
+                rs->skip += k;
+
+                //no start of header found
+                if (k==sizeof(PEVNT_HEADER)-1)
+                {
+                    rs->B[0]   = rs->B[sizeof(PEVNT_HEADER)-1];
+                    rs->bufPos = rs->B+1;
+                    rs->bufLen = sizeof(PEVNT_HEADER)-1;
+                    continue;
+                }
+
+                if (k > 0)
+                {
+                    memmove(rs->B, rs->B+k, sizeof(PEVNT_HEADER)-k);
+
+                    rs->bufPos -= k;
+                    rs->bufLen += k;
+
+                    continue; // We need to read more (bufLen>0)
+                }
+
+                if (rs->skip>0)
+                {
+                    factPrintf(MessageImp::kInfo, "Skipped %d bytes on port %d", rs->skip, rs->sockId);
+                    rs->skip = 0;
+                }
+
+                // Swap the header entries from network to host order
+                rs->swapHeader();
+
+                rs->bufTyp = READ_STRUCT::kData;
+                rs->bufLen = rs->len() - sizeof(PEVNT_HEADER);
+
+                debugHead(rs->B);  // i and fadBoard not used
+
+                continue;
+            }
+
+            const uint16_t &end = *reinterpret_cast<uint16_t*>(rs->bufPos-2);
+            if (end != 0xfe04)
+            {
+                factPrintf(MessageImp::kError, "End-of-event flag wrong on socket %2d for event %d (len=%d), got %04x",
+                           rs->sockId, rs->H.fad_evt_counter, rs->len(), end);
+
+                // ready to read next header
+                rs->bufTyp = READ_STRUCT::kHeader;
+                rs->bufLen = sizeof(PEVNT_HEADER);
+                rs->bufPos = rs->B;
+                // FIXME: What to do with the validity flag?
+                continue;
+            }
+
+            // get index into mBuffer for this event (create if needed)
+            const shared_ptr<EVT_CTRL2> evt = mBufEvt(*rs, actrun);
+
+            // We have a valid entry, but no memory has yet been allocated
+            if (evt && !evt->initMemory())
+            {
+                const time_t tm = time(NULL);
+                if (evt->runCtrl->reportMem==tm)
+                    continue;
+
+                factPrintf(MessageImp::kError, "No free memory left for %d (run=%d)", evt->evNum, evt->runNum);
+                evt->runCtrl->reportMem = tm;
+                continue;
+            }
+
+            // ready to read next header
+            rs->bufTyp = READ_STRUCT::kHeader;
+            rs->bufLen = sizeof(PEVNT_HEADER);
+            rs->bufPos = rs->B;
+
+            // Fatal error occured. Event cannot be processed. Skip it. Start reading next header.
+            if (!evt)
+                continue;
+
+            // This should never happen
+            if (evt->board[rs->sockId] != -1)
+            {
+                factPrintf(MessageImp::kError, "Got event %5d from board %3d (i=%3d, len=%5d) twice.",
+                           evt->evNum, rs->sockId, jj, rs->len());
+                // FIXME: What to do with the validity flag?
+                continue; // Continue reading next header
+            }
+
+            // Swap the data entries (board headers) from network to host order
+            rs->swapData();
+
+            // Copy data from rd[i] to mBuffer[evID]
+            copyData(*rs, evt.get());
+
+#ifdef COMPLETE_EVENTS
+            // Do not read anmymore from this board until the whole event has been received
+            rs->bufTyp = READ_STRUCT::kWait;
+#endif
+            // now we have stored a new board contents into Event structure
+            evt->board[rs->sockId] = rs->sockId;
+            evt->header = evt->FADhead+rs->sockId;
+            evt->nBoard++;
+
+#ifdef COMPLETE_EPOLL
+            if (epoll_ctl(READ_STRUCT::fd_epoll, EPOLL_CTL_DEL, rs->socket, NULL)<0)
+            {
+                factPrintf(MessageImp::kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+                break;
+            }
+#endif
+            // event not yet complete
+            if (evt->nBoard < READ_STRUCT::activeSockets)
+                continue;
+
+            // All previous events are now flagged as incomplete ("expired")
+            // and will be removed. (This is a bit tricky, because pop_front()
+            // would invalidate the current iterator if not done _after_ the increment)
+            for (auto it=evtCtrl.begin(); it!=evtCtrl.end(); )
+            {
+                const bool found = it->get()==evt.get();
+                if (!found)
+                    reportIncomplete(*it, "expired");
+                else
+                    primaryQueue.post(evt);
+
+                // package_len is 0 if nothing was received.
+                for (int ib=0; ib<40; ib++)
+                    rd[ib].relBytes += uint32_t((*it)->FADhead[ib].package_length)*2;
+
+                // The counter must be increased _before_ the pop_front,
+                // otherwise the counter is invalidated by the pop_front!
+                it++;
+                evtCtrl.pop_front();
+
+                // We reached the current event, so we are done
+                if (found)
+                    break;
+            }
+
+#ifdef COMPLETE_EPOLL
+            for (int j=0; j<40; j++)
+            {
+                epoll_event ev;
+                ev.events = EPOLLIN;
+                ev.data.ptr = &rd[j];  // user data (union: ev.ptr)
+                if (epoll_ctl(READ_STRUCT::fd_epoll, EPOLL_CTL_ADD, rd[j].socket, &ev)<0)
+                {
+                    factPrintf(MessageImp::kError, "epoll_ctl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+                    return;
+                }
+            }
+#endif
+
+#ifdef COMPLETE_EVENTS
+            for (int j=0; j<40; j++)
+            {
+                //if (rs->bufTyp==READ_STRUCT::kWait)
+                {
+                    rs->bufTyp = READ_STRUCT::kHeader;
+                    rs->bufLen = sizeof(PEVNT_HEADER);
+                    rs->bufPos = rs->B;
+                }
+            }
+#endif
+        } // end for loop over all sockets
+#ifdef PRIORITY_QUEUE
+        while (0); // convert continue into break ;)
+#endif
+
+        // ==================================================================
+
+        const time_t actTime = time(NULL);
+        if (actTime == gi_SecTime)
+        {
+#if !defined(USE_SELECT) && !defined(USE_EPOLL) && !defined(USE_POLL)
+            if (evtCtrl.empty())
+                usleep(actTime-actrun->lastTime>300 ? 10000 : 1);
+#endif
+            continue;
+        }
+        gi_SecTime = actTime;
+
+        // ==================================================================
+        //loop over all active events and flag those older than read-timeout
+        //delete those that are written to disk ....
+
+        // This could be improved having the pointer which separates the queue with
+        // the incomplete events from the queue with the complete events
+        for (auto it=evtCtrl.begin(); it!=evtCtrl.end(); )
+        {
+            // A reference is enough because the shared_ptr is hold by the evtCtrl
+            const shared_ptr<EVT_CTRL2> &evt = *it;
+
+            // The first event is the oldest. If the first event within the
+            // timeout window was received, we can stop searching further.
+            if (evt->time.tv_sec+g_evtTimeout>=actTime)
+                break;
+
+            // The counter must be increased _before_ the pop_front,
+            // otherwise the counter is invalidated by the pop_front!
+            it++;
+
+            // This timeout is caused because complete data from one or more
+            // boards has been received, but the memory could not be allocated.
+            // There is no reason why we should not go on waiting for
+            // memory to become free. However, the FADs will disconnect
+            // after 60s due to their keep-alive timeout, but the event builder
+            // will still wait for memory to become available.
+            // Currently, the only possibility to free the memory from the
+            // evtCtrl to restart the event builder (STOP/START).
+            if (!evt->valid())
+                continue;
+
+            // This will result in the emission of a dim service.
+            // It doesn't matter if that takes comparably long,
+            // because we have to stop the run anyway.
+            const uint64_t rep = reportIncomplete(evt, "timeout");
+            factReportIncomplete(rep);
+
+            // At least the data from one boards is complete...
+            // package_len is 0 when nothing was received from this board
+            for (int ib=0; ib<40; ib++)
+                rd[ib].relBytes += uint32_t(evt->FADhead[ib].package_length)*2;
+
+            evtCtrl.pop_front();
+        }
+
+        // =================================================================
+
+        gj.bufNew   = evtCtrl.size();            //# incomplete events in buffer
+        gj.bufEvt   = primaryQueue.size();       //# complete events in buffer
+        gj.bufWrite = secondaryQueue.size();     //# complete events in buffer
+        gj.bufProc  = processingQueue1.size();   //# complete events in buffer
+        gj.bufTot   = Memory::max_inuse/MAX_TOT_MEM;
+        gj.usdMem   = Memory::max_inuse;
+        gj.totMem   = Memory::allocated;
+        gj.maxMem   = g_maxMem;
+
+        gj.deltaT = 1000; // temporary, must be improved
+
+        bool changed = false;
+
+        static vector<uint64_t> store(NBOARDS);
+
+        for (int ib=0; ib<NBOARDS; ib++)
+        {
+            gj.rateBytes[ib] = store[ib]>rd[ib].totBytes ? rd[ib].totBytes : rd[ib].totBytes-store[ib];
+            gj.relBytes[ib]  = rd[ib].totBytes-rd[ib].relBytes;
+
+            store[ib] = rd[ib].totBytes;
+
+            if (rd[ib].check(g_port[ib].sockDef, g_port[ib].sockAddr))
+                changed = true;
+
+            gi_NumConnect[ib] = rd[ib].connected;
+            gj.numConn[ib]    = rd[ib].connected;
+        }
+
+        factStat(gj);
+
+        Memory::max_inuse = 0;
+
+        // =================================================================
+
+        // This is a fake event to trigger possible run-closing conditions once a second
+        // FIXME: This is not yet ideal because a file would never be closed
+        //        if a new file has been started and no events of the new file
+        //        have been received yet
+        int request = kRequestNone;
+
+        // If nothing was received for more than 5min, close file
+        if (actTime-actrun->lastTime>300)
+            request |= kRequestTimeout;
+
+        // If connection status has changed
+        if (changed)
+            request |= kRequestConnectionChange;
+
+        if (request!=kRequestNone)
+            runFinished();
+
+        if (actrun->fileStat==kFileOpen)
+            primaryQueue.emplace(new EVT_CTRL2(request, actrun));
+    }
+
+    //   1: Stop, wait for event to get processed
+    //   2: Stop, finish immediately
+    // 101: Restart, wait for events to get processed
+    // 101: Restart, finish immediately
+    //
+    const int gi_reset = g_reset;
+
+    const bool abort = gi_reset%100==2;
+
+    factPrintf(MessageImp::kInfo, "Stop reading ... RESET=%d (%s threads)", gi_reset, abort?"abort":"join");
+
+    primaryQueue.wait(abort);
+    secondaryQueue.wait(abort);
+    processingQueue1.wait(abort);
+
+    // Here we also destroy all runCtrl structures and hence close all open files
+    evtCtrl.clear();
+    actrun.reset();
+
+    factPrintf(MessageImp::kInfo, "Exit read Process...");
+    factPrintf(MessageImp::kInfo, "%llu Bytes flagged as in-use.", Memory::inuse);
+
+    factStat(gj);
+
+    return gi_reset>=100;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+void StartEvtBuild()
+{
+    factPrintf(MessageImp::kInfo, "Starting EventBuilder++");
+
+    memset(gi_NumConnect, 0, NBOARDS*sizeof(*gi_NumConnect));
+
+    memset(&gj, 0, sizeof(GUI_STAT));
+
+    gj.usdMem   = Memory::inuse;
+    gj.totMem   = Memory::allocated;
+    gj.maxMem   = g_maxMem;
+
+
+    READ_STRUCT rd[NBOARDS];
+
+    // This is only that every socket knows its id (maybe we replace that by arrays instead of an array of sockets)
+    for (int i=0; i<NBOARDS; i++)
+        rd[i].sockId = i;
+
+    while (mainloop(rd));
+
+    //must close all open sockets ...
+    factPrintf(MessageImp::kInfo, "Close all sockets...");
+
+    READ_STRUCT::close();
+
+    // Now all sockets get closed. This is not reflected in gi_NumConnect
+    // The current workaround is to count all sockets as closed when the thread is not running
+    factPrintf(MessageImp::kInfo, "EventBuilder++ closed");
+}
Index: branches/FACT++_part_filenames/src/EventBuilder.h
===================================================================
--- branches/FACT++_part_filenames/src/EventBuilder.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventBuilder.h	(revision 18732)
@@ -0,0 +1,209 @@
+#ifndef FACT_EventBuilder
+#define FACT_EventBuilder
+
+#include "FAD.h"
+
+#include <list>
+#include <array>
+#include <forward_list>
+
+namespace std
+{
+    class mutex;
+}
+
+
+/* global variables; 
+   to avoid race canoditions, only one thread is allowed to write 
+   the name of the variable defines which process shall write it:
+
+   g_XXX : main control thread
+   gi_XX : input thread (reading from camera)
+   gw_XX : write thread (writing to disk)
+   qp_XX : processing thread(s) (processing data, eg. soft-trig)
+
+*/
+extern int  g_reset     ;  //>0 = reset different levels of eventbuilder
+extern size_t g_maxMem  ;  //maximum memory allowed for buffer
+extern uint16_t g_evtTimeout;  //timeout (sec) for one event
+
+extern FACT_SOCK g_port[NBOARDS] ;  // .port = baseport, .addr=string of IP-addr in dotted-decimal "ddd.ddd.ddd.ddd"
+
+extern uint gi_NumConnect[NBOARDS];   //4 crates * 10 boards
+
+class DrsCalibration;
+
+enum FileStatus_t
+{
+    kFileNotYetOpen,
+    kFileOpen,
+    kFileClosed
+};
+
+enum CloseRequest_t
+{
+    kRequestNone             =    0,
+    kRequestManual           = 1<<1,
+    kRequestTimeout          = 1<<2,
+    kRequestConnectionChange = 1<<3,
+    kRequestEventCheckFailed = 1<<4,
+    kRequestMaxEvtsReached   = 1<<5,
+    kRequestMaxTimeReached   = 1<<6
+};
+
+
+struct RUN_CTRL2
+{
+    int64_t runId ;      // Run number
+
+    time_t reportMem;        // initMemory has reported no memory once (set outside of class)
+
+    time_t openTime;     // Time when first event (first board) was received
+    time_t lastTime;     // Time when last event was received (set when first board data received)
+    time_t closeTime;    // Time when run should be closed
+    uint32_t night;      // night as int as determined for this run
+
+    uint32_t lastEvt;    // number of events received (counted when the first board was received)
+    uint32_t maxEvt;     // maximum number which should be written to file
+
+    uint16_t roi0;       // roi for normal pixels
+    uint16_t roi8;       // roi for pixels8
+
+    std::string runType;
+
+    FileStatus_t fileStat;
+
+    std::array<uint32_t, 8> triggerCounter;  // triggerCounter must only be manipulated in procEvt to keep it thread safe
+
+    std::shared_ptr<DrsCalibration> calib;
+    std::list<std::array<int16_t,1440>> prevStart; // History for start cells of previous events (for step calibration)
+
+    RUN_CTRL2() : runId(-1), reportMem(0), lastTime(0), lastEvt(0), maxEvt(1<<31), fileStat(kFileNotYetOpen)
+    {
+        triggerCounter.fill(0);
+
+        // runId   = -1;
+        // fileId  = kFileNotYetOpen;
+        // lastEvt =  0;    // Number of events partially started to read
+        // actEvt  =  0;    // Number of written events
+        // maxEvt  = 1<<31; // max number events allowed (~2400min @ 250Hz)
+
+    }
+    //~RUN_CTRL2();
+};
+
+#define MAX_HEAD_MEM (NBOARDS * sizeof(PEVNT_HEADER))
+#define MAX_TOT_MEM (sizeof(EVENT) + (NPIX+NTMARK)*1024*2 + MAX_HEAD_MEM)
+
+namespace Memory
+{
+    extern uint64_t inuse;
+    extern uint64_t allocated;
+
+    extern uint64_t max_inuse;
+
+    extern std::mutex mtx;
+
+    extern std::forward_list<void*> memory;
+
+    extern void *malloc();
+    extern void  free(void *mem);
+};
+
+struct EVT_CTRL2
+{
+    uint32_t  runNum;  // header->runnumber;
+    uint32_t  evNum;   // header->fad_evt_counter
+
+    uint32_t  trgNum;  // header->trigger_id
+    uint32_t  trgTyp;  // header->trigger_type
+    uint32_t  fadLen;
+
+    //uint16_t  firstBoard; // first board from which data was received
+    uint16_t  nBoard;
+    int16_t   board[NBOARDS];
+
+    uint16_t  nRoi;
+    uint16_t  nRoiTM;
+
+    timeval   time;
+
+    PEVNT_HEADER *FADhead; // Pointer to the whole allocated memory
+    EVENT        *fEvent;  // Pointer to the event data itself
+    PEVNT_HEADER *header;  // Pointer to a valid header within FADhead
+
+    int closeRequest;
+
+    std::array<uint32_t, 8> triggerCounter;  // triggerCounter must only be manipulated in procEvt to keep it thread safe
+
+    std::shared_ptr<RUN_CTRL2> runCtrl;
+
+    // Be carefull with this constructor... writeEvt can seg fault
+    // it gets an empty runCtrl
+    EVT_CTRL2() : nBoard(0), FADhead(0), header(0), closeRequest(kRequestNone)
+    {
+        //flag all boards as unused
+        std::fill(board,  board+NBOARDS, -1);
+    }
+    /*
+    EVT_CTRL2(CloseRequest_t req) : nBoard(0), FADhead(0), header(0), reportMem(false), closeRequest(req), runCtrl(new RUN_CTRL2)
+    {
+        //flag all boards as unused
+        std::fill(board, board+NBOARDS, -1);
+        }*/
+
+    EVT_CTRL2(int req, const std::shared_ptr<RUN_CTRL2> &run) : nBoard(0), FADhead(0), header(0), closeRequest(req), runCtrl(run)
+    {
+        //flag all boards as unused
+        std::fill(board, board+NBOARDS, -1);
+    }
+    ~EVT_CTRL2()
+    {
+        Memory::free(FADhead);
+    }
+
+    operator RUN_HEAD() const
+    {
+        RUN_HEAD rh;
+
+        rh.Nroi    = nRoi;
+        rh.NroiTM  = nRoiTM;
+        rh.RunTime = time.tv_sec;
+        rh.RunUsec = time.tv_usec;
+
+        memcpy(rh.FADhead, FADhead, NBOARDS*sizeof(PEVNT_HEADER));
+
+        return rh;
+    }
+
+    bool valid() const { return header; }
+
+    bool initMemory()
+    {
+        // We have a valid entry, but no memory has yet been allocated
+        if (FADhead)
+            return true;
+
+        FADhead = (PEVNT_HEADER*)Memory::malloc();
+        if (!FADhead)
+            return false;
+
+        fEvent = reinterpret_cast<EVENT*>(FADhead+NBOARDS);
+
+        memset(FADhead, 0, (NPIX+NTMARK)*2*nRoi+NBOARDS*sizeof(PEVNT_HEADER)+sizeof(EVENT));
+
+        //flag all pixels as unused, flag all TMark as unused
+        std::fill(fEvent->StartPix, fEvent->StartPix+NPIX,   -1);
+        std::fill(fEvent->StartTM,  fEvent->StartTM +NTMARK, -1);
+
+        fEvent->Roi         = nRoi;
+        fEvent->RoiTM       = nRoiTM;
+        fEvent->EventNum    = evNum;
+        fEvent->TriggerNum  = trgNum;
+        fEvent->TriggerType = trgTyp;
+
+        return true;
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/EventBuilderWrapper.h
===================================================================
--- branches/FACT++_part_filenames/src/EventBuilderWrapper.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventBuilderWrapper.h	(revision 18732)
@@ -0,0 +1,1510 @@
+#ifndef FACT_EventBuilderWrapper
+#define FACT_EventBuilderWrapper
+
+#include <sstream>
+
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+#include <boost/filesystem.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+
+#include "DimWriteStatistics.h"
+
+#include "DataCalib.h"
+#include "DataWriteRaw.h"
+
+#ifdef HAVE_FITS
+#include "DataWriteFits.h"
+#else
+#define DataWriteFits DataWriteFits2
+#endif
+
+#include "DataWriteFits2.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace fs = boost::filesystem;
+
+using ba::ip::tcp;
+
+using namespace std;
+
+// ========================================================================
+
+#include "EventBuilder.h"
+
+void StartEvtBuild();
+void CloseRunFile();
+
+// ========================================================================
+
+class EventBuilderWrapper
+{
+public:
+    // FIXME
+    static EventBuilderWrapper *This;
+
+    MessageImp &fMsg;
+
+private:
+    boost::thread fThreadMain;
+
+    enum
+    {
+        kCurrent   = 0,
+        kTotal     = 1,
+        kEventId   = 2,
+        kTriggerId = 3,
+    };
+
+    FAD::FileFormat_t fFileFormat;
+
+    //uint32_t fMaxRun;
+    uint32_t fLastOpened;
+    uint32_t fLastClosed;
+    array<uint32_t,4> fNumEvts;
+
+    DimWriteStatistics  fDimWriteStats;
+    DimDescribedService fDimRuns;
+    DimDescribedService fDimEvents;
+    DimDescribedService fDimTrigger;
+    DimDescribedService fDimRawData;
+    DimDescribedService fDimEventData;
+    DimDescribedService fDimFeedbackData;
+    DimDescribedService fDimFwVersion;
+    DimDescribedService fDimRunNumber;
+    DimDescribedService fDimStatus;
+    DimDescribedService fDimDNA;
+    DimDescribedService fDimTemperature;
+    DimDescribedService fDimPrescaler;
+    DimDescribedService fDimRefClock;
+    DimDescribedService fDimRoi;
+    DimDescribedService fDimDac;
+    DimDescribedService fDimDrsRuns;
+    DimDescribedService fDimDrsCalibration;
+    DimDescribedService fDimStatistics1;
+    //DimDescribedService fDimStatistics2;
+    DimDescribedService fDimFileFormat;
+    DimDescribedService fDimIncomplete;
+
+    struct EventData
+    {
+        uint32_t runNum;
+        uint32_t evNum;
+        float data[4*1440];
+    }  __attribute__((__packed__));
+
+    Queue<pair<Time,GUI_STAT>>                      fQueueStatistics1;
+    Queue<tuple<Time,bool,FAD::EventHeader>>        fQueueProcHeader;
+    Queue<pair<Time,array<uint32_t,4>>>             fQueueEvents;
+    Queue<tuple<Time,char,array<uint32_t,8>>>       fQueueTrigger;
+    Queue<pair<Time,array<uint16_t,2>>>             fQueueRoi;
+    Queue<vector<char>>                             fQueueRawData;
+    Queue<tuple<Time,uint32_t,EventData/*array<float,1440*4>*/>> fQueueEventData;
+    Queue<tuple<Time, array<uint32_t,40>, array<int16_t,160>>> fQueueTempRefClk;
+
+    string   fPath;
+    uint32_t fNightAsInt;
+    uint32_t fRunNumber;
+    int64_t  fRunInProgress;
+
+    array<uint16_t,2> fVecRoi;
+    pair<float,EventData/*array<float, 1440*4>*/> fMaxEvent; // Maximum event from applyCalib
+
+protected:
+    bool InitRunNumber(const string &path="")
+    {
+        if (!path.empty())
+        {
+            if (!DimWriteStatistics::DoesPathExist(path, fMsg))
+            {
+                fMsg.Error("Data path "+path+" does not exist!");
+                return false;
+            }
+
+            fPath = path;
+            fDimWriteStats.SetCurrentFolder(fPath);
+
+            fMsg.Info("Data path set to "+path+".");
+        }
+
+        // Get current night
+        const Time now;
+
+        const uint32_t night = now.NightAsInt();
+        if (night==fNightAsInt)
+            return true;
+
+        const string crosscheck = now.GetPrevSunRise().GetAsStr("%Y%m%d");
+        if (crosscheck!=to_string(night))
+        {
+            fMsg.Warn("The crosscheck for the night failed. "+crosscheck+" is not equal to "+to_string(night)+"... keeping old one.");
+            fMsg.Warn("This is a severe error. Please restart fadctrl.");
+            return true;
+        }
+
+        // In some circumstances, I do not understand yet (but I guess it can happen
+        // when the shared objects are re-compiled while the program is not
+        // re-started), it can happen that the returned value is wrong by one day.
+        // So this is just another check to avoid problems.
+        const uint32_t night_test = Time(now-boost::posix_time::seconds(1)).NightAsInt();
+        if (night_test != night)
+            return true;
+
+        // And another check. Let's read the clock again.
+        // In both cases a false condition is no error and can happen. But if it happens,
+        // the bahaviour will change a fraction of a second later and the conditon
+        // will be true. No run should be taken just around that moment and if one
+        // is taken, then the date doesn't matter.
+        if (Time().NightAsInt() != night)
+            return true;
+
+        if (night<fNightAsInt)
+        {
+            fMsg.Warn("New night "+to_string(night)+" ["+now.GetAsStr()+"] before current night "+to_string(night)+"... keeping old one.");
+            fMsg.Warn("Please check the system clock.");
+            return true;
+        }
+
+        // Check for run numbers
+        fRunNumber = 1000;
+
+        while (--fRunNumber>0)
+        {
+            const string name = DataProcessorImp::FormFileName(fPath, night, fRunNumber, "");
+
+            if (access((name+"bin").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits.fz").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits.gz").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"drs.fits").c_str(), F_OK) == 0)
+                break;
+        }
+
+        // This is now the first file which does not exist
+        fRunNumber++;
+        fLastOpened = 0;
+
+        // Check if we have exceeded the maximum
+        if (fRunNumber==1000)
+        {
+            fMsg.Error("You have a file with run-number 1000 in "+fPath+" ["+to_string(night)+"]");
+            return false;
+        }
+
+        ostringstream str;
+        if (fNightAsInt==0)
+            str << "First night...";
+        else
+            str << "Night has changed from " << fNightAsInt << " [" << now << "]... ";
+        str << " next run-number is " << night << "-" << setfill('0') << setw(3) << fRunNumber << " [" << (fPath.empty()?".":fPath) << "]";
+        fMsg.Message(str);
+
+        fNightAsInt = night;
+
+        return true;
+    }
+
+public:
+    EventBuilderWrapper(MessageImp &imp) : fMsg(imp),
+        fFileFormat(FAD::kNone), /*fMaxRun(0),*/ fLastOpened(0), fLastClosed(0),
+        fDimWriteStats  ("FAD_CONTROL", imp),
+        fDimRuns        ("FAD_CONTROL/RUNS",               "I:2;C",
+                                                           "Run files statistics"
+                                                           "|stats[int]:last opened or closed run"
+                                                           "|file[string]:filename of last opened file"),
+        fDimEvents      ("FAD_CONTROL/EVENTS",             "I:4",
+                                                           "Event counts"
+                                                           "|evtsCount[int]:Num evts cur. run, total (all run), evt ID, trig. Num"),
+        fDimTrigger     ("FAD_CONTROL/TRIGGER_COUNTER",    "I:1;I:1;I:1;I:1;I:1;I:1;I:1;I:1",
+                                                           "Trigger counter"
+                                                           "|N_trg[uint32]:Number of physics triggers"
+                                                           "|N_ped[uint32]:Number of pure pedestal triggers"
+                                                           "|N_lpe[uint32]:Number of external light pulser triggers"
+                                                           "|N_tim[uint32]:Number of time calibration triggers"
+                                                           "|N_lpi[uint32]:Number of internal light pulser triggers"
+                                                           "|N_ext1[uint32]:Number of external triggers at input ext1"
+                                                           "|N_ext2[uint32]:Number of external triggers at input ext2"
+                                                           "|N_misc[uint32]:Number of all other triggers"),
+        fDimRawData     ("FAD_CONTROL/RAW_DATA",           "S:1;S:1;I:1;I:1;S:1;I:1;I:2;I:40;S:1440;S:160;F",
+                                                           "|roi[uint16]:number of samples per pixel"
+                                                           "|roi_tm[uint16]:number of samples per time-marker channel"
+                                                           "|num_fad[uint32]:event number from FADs"
+                                                           "|num_ftm[uint32]:trigger number from FTM"
+                                                           "|type[uint16]:trigger type from FTM"
+                                                           "|num_boards[uint32]:number of active boards"
+                                                           "|time[uint32]:PC time as unix time stamp"
+                                                           "|time_board[uint32]:Time stamp of FAD boards"
+                                                           "|start_pix[int16]:start sample of pixels"
+                                                           "|start_tm[int16]:start sample of time marker channels"
+                                                           "|adc[int16]:adc data"),
+        fDimEventData   ("FAD_CONTROL/EVENT_DATA",         "I:1;I:1;F:1440;F:1440;F:1440;F:1440", "|run:|evt:|avg:|rms:|max:|pos"),
+        fDimFeedbackData("FAD_CONTROL/FEEDBACK_DATA",      "F:1440", ""),
+        fDimFwVersion   ("FAD_CONTROL/FIRMWARE_VERSION",   "F:42",
+                                                           "Firmware version number of fad boards"
+                                                           "|firmware[float]:Version number of firmware, for each board. 40=min, 41=max"),
+        fDimRunNumber   ("FAD_CONTROL/RUN_NUMBER",         "I:42",
+                                                           "Run numbers coming from FAD boards"
+                                                           "|runNumbers[int]:current run number of each FAD board. 40=min, 41=max"),
+        fDimStatus      ("FAD_CONTROL/STATUS",             "S:42",
+                                                           "Status of FAD boards"
+                                                           "|status[bitpattern]:Status of each FAD board. Maybe buggy"),
+        fDimDNA         ("FAD_CONTROL/DNA",                "X:40",
+                                                           "DNA of FAD boards"
+                                                           "|DNA[hex]:Hex identifier of each FAD board"),
+        fDimTemperature ("FAD_CONTROL/TEMPERATURE",        "S:1;F:160",
+                                                           "DRS temperatures"
+                                                           "|cnt[uint16]:Counter of averaged values"
+                                                           "|temp[deg C]:average temp of all DRS chips"),
+        fDimPrescaler   ("FAD_CONTROL/PRESCALER",          "S:42",
+                                                           "Trigger generator prescaler of fad boards"
+                                                           "|prescaler[int]:Trigger generator prescaler value, for each board"),
+        fDimRefClock    ("FAD_CONTROL/REFERENCE_CLOCK",    "S:1;F:40",
+                                                           "Reference clock of FAD boards"
+                                                           "|cnt[uint16]:Counter of averaged values"
+                                                           "|clk[Hz]:Averaged clock of ref clocks of FAD boards"),
+        fDimRoi         ("FAD_CONTROL/REGION_OF_INTEREST", "S:2",  "roi:|roi_rm:"),
+        fDimDac         ("FAD_CONTROL/DAC",                "S:336",
+                                                           "DAC settings of each FAD board"
+                                                           "|DAC[int]:DAC counts, sequentially DAC 0 board 0, 0/1, 0/2... (plus min max)"),
+        fDimDrsRuns     ("FAD_CONTROL/DRS_RUNS",           "I:1;I:3;I:1",
+                                                           "|roi:Region of interest of secondary baseline"
+                                                           "|run:Run numbers of DRS runs (0=none)"
+                                                           "|night:Night as int of the first run (0 if none)"),
+        fDimDrsCalibration("FAD_CONTROL/DRS_CALIBRATION",  "I:1;I:3;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:163840;F:163840",
+                                                           "|roi:Region of interest of secondary baseline"
+                                                           "|run:Run numbers of DRS runs (0=none)"),
+        fDimStatistics1 ("FAD_CONTROL/STATISTICS1",        "I:5;X:3;I:1;I:2;C:40;I:40;I:40",
+                                                           "Event Builder status for GUI display"
+                                                           "|bufferInfo[int]:Events in buffer, incomp., comp., write, proc., tot."
+                                                           "|memInfo[int]:total mem allocated, used mem, max memory"
+                                                           "|deltaT[ms]:Time in ms for rates"
+                                                           "|rateNew[int]:Number of new start events received"
+                                                           "|numConn[int]:Number of connections per board"
+                                                           "|rateBytes[int]:Bytes read during last cylce"
+                                                           "|relBytes[int]:Relative number of total bytes received (received - released)"),
+        fDimFileFormat("FAD_CONTROL/FILE_FORMAT",          "S:1", "|format[int]:Current file format"),
+        fDimIncomplete("FAD_CONTROL/INCOMPLETE",           "X:1", "|incomplete[bits]:bit_index=c*10+b. board b(0..3) in crate c(0..9)"),
+        // It is important to instantiate them after the DimServices
+        fQueueStatistics1(std::bind(&EventBuilderWrapper::UpdateDimStatistics1, this, placeholders::_1)),
+        fQueueProcHeader( std::bind(&EventBuilderWrapper::procHeader,           this, placeholders::_1)),
+        fQueueEvents(     std::bind(&EventBuilderWrapper::UpdateDimEvents,      this, placeholders::_1)),
+        fQueueTrigger(    std::bind(&EventBuilderWrapper::UpdateDimTrigger,     this, placeholders::_1)),
+        fQueueRoi(        std::bind(&EventBuilderWrapper::UpdateDimRoi,         this, placeholders::_1)),
+        fQueueRawData(    std::bind(&EventBuilderWrapper::UpdateDimRawData,     this, placeholders::_1)),
+        fQueueEventData(  std::bind(&EventBuilderWrapper::UpdateDimEventData,   this, placeholders::_1)),
+        fQueueTempRefClk( std::bind(&EventBuilderWrapper::UpdateDimTempRefClk,  this, placeholders::_1)),
+        fNightAsInt(0), fRunInProgress(-1),
+        fMaxEvent(make_pair(-FLT_MAX, EventData()/*array<float,1440*4>()*/))
+    {
+        if (This)
+            throw logic_error("EventBuilderWrapper cannot be instantiated twice.");
+
+        This = this;
+
+        fVecRoi.fill(0);
+
+        memset(fNumEvts.data(), 0, sizeof(fNumEvts));
+        fDimEvents.Update(fNumEvts);
+
+        for (size_t i=0; i<40; i++)
+            ConnectSlot(i, tcp::endpoint());
+    }
+
+    virtual ~EventBuilderWrapper()
+    {
+        Abort();
+
+        // FIXME: Used timed_join and abort afterwards
+        //        What's the maximum time the eb need to abort?
+        fThreadMain.join();
+    }
+
+    map<uint32_t, FAD::RunDescription> fExpectedRuns;
+
+    mutex mtx_newrun;
+
+    uint32_t StartNewRun(int64_t maxtime, int64_t maxevt, const pair<string, FAD::Configuration> &ref)
+    {
+        if (maxtime<=0 || maxtime>24*60*60)
+            maxtime = 24*60*60;
+        if (maxevt<=0 || maxevt>INT32_MAX)
+            maxevt  = INT32_MAX;
+
+        if (!InitRunNumber())
+            return 0;
+
+        const FAD::RunDescription descr =
+        {
+            uint32_t(maxtime),
+            uint32_t(maxevt),
+            fNightAsInt,
+            ref.first,
+            ref.second,
+        };
+
+        const lock_guard<mutex> lock(mtx_newrun);
+        fExpectedRuns[fRunNumber] = descr;
+        return fRunNumber++;
+    }
+
+    bool IsThreadRunning()
+    {
+        return fThreadMain.joinable();
+    }
+
+    void SetMaxMemory(unsigned int mb) const
+    {
+        g_maxMem = size_t(mb)*1000000;
+    }
+    void SetEventTimeout(uint16_t to) const
+    {
+        g_evtTimeout = to;
+    }
+
+    void StartThread(const vector<tcp::endpoint> &addr)
+    {
+        if (IsThreadRunning())
+        {
+            fMsg.Warn("Start - EventBuilder still running");
+            return;
+        }
+
+        //fLastMessage.clear();
+
+        for (size_t i=0; i<40; i++)
+            ConnectSlot(i, addr[i]);
+
+        fMsg.Message("Starting EventBuilder thread");
+
+        fThreadMain = boost::thread(StartEvtBuild);
+
+        // Run a detached thread which ensures that our thread
+        // is joined so that it is not joinable anymore once
+        // it is finished (I think this is similar to
+        // boost::thread_guard, but I could not figure out
+        // how it works)
+        std::thread([this] { this->fThreadMain.join(); }).detach();
+    }
+
+    void ConnectSlot(unsigned int i, const tcp::endpoint &addr)
+    {
+        if (i>39)
+            return;
+
+        fRunInProgress = -1;
+
+        if (addr==tcp::endpoint())
+        {
+            // In this order
+            g_port[i].sockDef = 0;
+
+            fDimIncomplete.setQuality(0);
+            fDimIncomplete.Update(uint64_t(0));
+            return;
+        }
+
+        struct sockaddr_in sockaddr; //IP for each socket
+        sockaddr.sin_family      = AF_INET;
+        sockaddr.sin_addr.s_addr = htonl(addr.address().to_v4().to_ulong());
+        sockaddr.sin_port        = htons(addr.port());
+        memcpy(&g_port[i].sockAddr, &sockaddr, sizeof(struct sockaddr_in));
+
+        // In this order
+        g_port[i].sockDef = 1;
+
+        fDimIncomplete.setQuality(0);
+        fDimIncomplete.Update(uint64_t(0));
+    }
+
+    void IgnoreSlot(unsigned int i)
+    {
+        if (i>39)
+            return;
+
+        if (g_port[i].sockAddr.sin_port==0)
+            return;
+
+        g_port[i].sockDef = -1;
+    }
+
+
+    void Abort()
+    {
+        fMsg.Message("Signal abort to EventBuilder thread...");
+        g_reset = 2;
+    }
+
+    void ResetThread(bool soft)
+    {
+        fMsg.Message("Signal reset to EventBuilder thread...");
+        g_reset = soft ? 101 : 102;
+    }
+
+    void Exit()
+    {
+        fMsg.Message("Signal exit to EventBuilder thread...");
+        g_reset = 1;
+    }
+
+    bool IsConnected(int i) const     { return gi_NumConnect[i]==1; }
+    bool IsConnecting(int i) const    { return gi_NumConnect[i]==0 && g_port[i].sockDef!=0; }
+    bool IsDisconnected(int i) const  { return gi_NumConnect[i]==0 && g_port[i].sockDef==0; }
+    bool IsRunInProgress() const { return fRunInProgress>=0; }
+
+    void SetIgnore(int i, bool b) const { if (g_port[i].sockDef!=0) g_port[i].sockDef=b?-1:1; }
+    bool IsIgnored(int i) const { return g_port[i].sockDef==-1; }
+
+    void SetOutputFormat(FAD::FileFormat_t f)
+    {
+        const bool changed = f!=fFileFormat;
+
+        fFileFormat = f;
+        fDimFileFormat.Update(uint16_t(f));
+
+        string msg = "File format set to: ";
+        switch (f)
+	{
+        case FAD::kNone:    msg += "kNone.";   break;
+        case FAD::kDebug:   msg += "kDebug.";  break;
+        case FAD::kFits:    msg += "kFits.";   break;
+        case FAD::kZFits:   msg += "kZFits.";  break;
+        case FAD::kCfitsio: msg += "kCfitsio"; break;
+        case FAD::kRaw:     msg += "kRaw";     break;
+        case FAD::kCalib:
+            DataCalib::Restart();
+            DataCalib::Update(fDimDrsCalibration, fDimDrsRuns);
+            fMsg.Message("Resetted DRS calibration.");
+            return;
+        }
+
+        if (changed)
+            fMsg.Message(msg);
+    }
+
+    virtual int ResetSecondaryDrsBaseline()
+    {
+        if (DataCalib::ResetTrgOff(fDimDrsCalibration, fDimDrsRuns))
+        {
+            fFileFormat = FAD::kCalib;
+            fDimFileFormat.Update(uint16_t(fFileFormat));
+            fMsg.Message("Resetted DRS calibration for secondary baseline.");
+        }
+        else
+            fMsg.Warn("Could not reset DRS calibration of secondary baseline.");
+
+        return 0;
+    }
+
+    void LoadDrsCalibration(const char *fname)
+    {
+        if (!DataCalib::ReadFits(fname, fMsg))
+            return;
+
+        fMsg.Info("Successfully loaded DRS calibration from "+string(fname));
+        DataCalib::Update(fDimDrsCalibration, fDimDrsRuns);
+    }
+
+    virtual int CloseOpenFiles() { CloseRunFile(); fRunInProgress = -1; return 0; }
+
+
+    // -------------- Mapped event builder callbacks ------------------
+
+    void UpdateRuns(const string &fname="")
+    {
+        uint32_t values[2] =
+        {
+            fLastOpened,
+            fLastClosed
+        };
+
+        vector<char> data(sizeof(values)+fname.size()+1);
+        memcpy(data.data(), values, sizeof(values));
+        strcpy(data.data()+sizeof(values), fname.c_str());
+        fDimRuns.setQuality((bool)fFile);
+        fDimRuns.Update(data);
+
+        if (!fname.empty())
+            fDimWriteStats.FileOpened(fname);
+    }
+
+    shared_ptr<DataProcessorImp> fFile;
+
+    bool UpdateDimEvents(const pair<Time,array<uint32_t,4>> &stat)
+    {
+        fDimEvents.setData(stat.second.data(), sizeof(uint32_t)*4);
+        fDimEvents.Update(stat.first);
+        return true;
+    }
+
+    bool UpdateDimTrigger(const tuple<Time,char,array<uint32_t,8>> &stat)
+    {
+        fDimTrigger.setQuality(get<1>(stat));
+        fDimTrigger.setData(get<2>(stat).data(), sizeof(uint32_t)*8);
+        fDimTrigger.Update(get<0>(stat));
+        return true;
+    }
+
+    bool runOpen(const EVT_CTRL2 &evt)
+    {
+        const uint32_t night = evt.runCtrl->night;
+        const uint32_t runid = evt.runNum>0 ? evt.runNum : time(NULL);
+
+        // If there is still an open file: close it
+        if (fFile)
+            runClose(evt);
+
+        // Keep a copy of the currently valid drs calibration
+        // and associate it to the run control structure
+        evt.runCtrl->calib = make_shared<DrsCalibration>(DataCalib::GetCalibration());
+
+        // Crate the file
+        DataProcessorImp *file = 0;
+        switch (fFileFormat)
+        {
+        case FAD::kNone:    file = new DataDump(fPath, night, runid,  fMsg); break;
+        case FAD::kDebug:   file = new DataDebug(fPath, night, runid, fMsg); break;
+        case FAD::kCfitsio: file = new DataWriteFits(fPath, night, runid,  fMsg); break;
+        case FAD::kFits:    file = new DataWriteFits2(fPath, night, runid, fMsg); break;
+        case FAD::kZFits:   file = new DataWriteFits2(fPath, night, runid, *evt.runCtrl->calib, fMsg); break;
+	case FAD::kRaw:     file = new DataWriteRaw(fPath, night, runid, fMsg); break;
+	case FAD::kCalib:   file = new DataCalib(fPath, night, runid, *evt.runCtrl->calib, fDimDrsCalibration, fDimDrsRuns, fMsg); break;
+        }
+
+        try
+        {
+            // Try to open the file
+            FAD::RunDescription desc;
+            desc.maxevt  = evt.runCtrl->maxEvt;
+            desc.maxtime = evt.runCtrl->closeTime - evt.runCtrl->openTime;
+            desc.name    = evt.runCtrl->runType;
+
+            if (!file->Open(evt, desc))
+                return false;
+        }
+        catch (const exception &e)
+        {
+            fMsg.Error("Exception trying to open file: "+string(e.what()));
+            return false;
+        }
+
+        fLastOpened = runid;
+
+        // Signal that a file is open
+        fFile = shared_ptr<DataProcessorImp>(file);
+
+        // Now do all the calls which potentially block (dim)
+
+        // Time for update runs before time for update events
+        UpdateRuns(file->GetFileName());
+        fNumEvts[kEventId]   = 0;
+        fNumEvts[kTriggerId] = 0;
+        fNumEvts[kCurrent]   = 0;
+
+        const Time time;
+
+        fQueueEvents.emplace(time, fNumEvts);
+        fQueueTrigger.emplace(time, 'o', evt.triggerCounter);
+
+        ostringstream str;
+        str << "Opened: " << file->GetFileName() << " (" << file->GetRunId() << ")";
+        fMsg.Info(str);
+
+        return true;
+    }
+
+    bool runWrite(const EVT_CTRL2 &e)
+    {
+        /*
+        const size_t size = sizeof(EVENT)+1440*(evt.Roi+evt.RoiTM)*2;
+        vector evt(e.fEvent, e.fEvent+size);
+
+        const EVENT &evt = *reinterpret_cast<EVENT*>(evt.data());
+
+        int16_t *val = evt.Adc_Data;
+        const int16_t *off = e.runCtrl->zcalib.data();
+        for (const int16_t *start=evt.StartPix; start<evt.StartPix+1440; val+=1024, off+=1024, start++)
+        {
+            if (*start<0)
+                continue;
+
+            for (size_t i=0; i<roi; i++)
+                val[i] -= offset[(*start+i)%1024];
+        }*/
+
+        if (!fFile->WriteEvt(e))
+            return false;
+
+        //const EVENT &evt = *e.fEvent;
+
+        fNumEvts[kCurrent]++;
+        fNumEvts[kEventId]   = e.evNum;//evt.EventNum;
+        fNumEvts[kTriggerId] = e.trgNum;//evt.TriggerNum;
+        fNumEvts[kTotal]++;
+
+        static Time oldt(boost::date_time::neg_infin);
+        Time newt;
+        if (newt>oldt+boost::posix_time::seconds(1))
+        {
+            fQueueEvents.emplace(newt, fNumEvts);
+            fQueueTrigger.emplace(newt, 'w', e.triggerCounter);
+            oldt = newt;
+        }
+
+        return true;
+    }
+
+    void runClose(const EVT_CTRL2 &evt)
+    {
+        if (!fFile)
+            return;
+
+        // It can happen that runFinished was never called
+        // (e.g. runWrite failed)
+        if (fRunInProgress==fFile->GetRunId())
+            fRunInProgress = -1;
+
+        // Close the file
+        const bool rc = fFile->Close(evt);
+
+        fLastClosed = fFile->GetRunId();
+
+        ostringstream str;
+        str << "Closed: " << fFile->GetFileName() << " (" << fFile->GetRunId() << ")";
+        if (!rc)
+            str << "... failed!";
+
+        // Signal that the file is closed
+
+        fFile.reset();
+
+        // Now do all the calls which can potentially block (dim)
+
+        CloseRun(fLastClosed); 
+
+        // Time for update events before time for update runs
+        const Time time;
+
+        fQueueEvents.emplace(time, fNumEvts);
+        fQueueTrigger.emplace(time, 'c', evt.triggerCounter);
+
+        UpdateRuns();
+
+        // Do the potentially blocking call after all others
+        rc ? fMsg.Info(str) : fMsg.Error(str);
+
+        // If a Drs Calibration has just been finished, all following events
+        // should also be processed with this calibration.
+        // Note that this is a generally dangerous operation. Here, the previous
+        // DRS calibration shared_ptr gets freed and if it is the last in use,
+        // the memory will vanish. If another thread accesses that pointer,
+        // it _must_ make a copy of the shared_ptr first to ensure that
+        // the memory will stay in scope until the end of its operation.
+        const DrsCalibration &cal = DataCalib::GetCalibration();
+
+        RUN_CTRL2 &run = *evt.runCtrl;
+        if (!run.calib || run.calib->fStep != cal.fStep || run.calib->fRoi!=cal.fRoi)
+            run.calib = make_shared<DrsCalibration>(cal);
+    }
+
+    virtual void CloseRun(uint32_t /*runid*/) { }
+
+    bool UpdateDimRoi(const pair<Time, array<uint16_t,2>> &roi)
+    {
+        fDimRoi.setData(roi.second.data(), sizeof(uint16_t)*2);
+        fDimRoi.Update(roi.first);
+        return true;
+    }
+
+    bool UpdateDimTempRefClk(const tuple<Time, array<uint32_t,40>, array<int16_t,160>> &dat)
+    {
+        const auto delay = boost::posix_time::seconds(5);
+
+        const Time &tm = get<0>(dat);
+
+        const array<uint32_t,40> &clk = get<1>(dat);
+        const array<int16_t,160> &tmp = get<2>(dat);
+
+        // --------------- RefClock ---------------
+
+        // history, add current data to history
+        static list<pair<Time,array<uint32_t,40>>> listclk;
+        listclk.emplace_back(tm, clk);
+
+        // --------------- Temperatures ---------------
+
+        // history, add current data to history
+        static list<pair<Time,array<int16_t,160>>> listtmp;
+        listtmp.emplace_back(tm, tmp);
+
+        // ========== Update dim services once a second =========
+
+        static Time oldt(boost::date_time::neg_infin);
+        Time newt;
+
+        if (newt<oldt+delay)
+            return true;
+
+        oldt = newt;
+
+        // --------------- RefClock ---------------
+
+        // remove expired data from history
+        while (1)
+        {
+            auto it=listclk.begin();
+            if (it==listclk.end() || it->first+delay>tm)
+                break;
+            listclk.pop_front();
+        }
+
+        // Structure for dim service
+        struct Clock
+        {
+            uint16_t num;
+            float val[40];
+            Clock() { memset(this, 0, sizeof(Clock)); }
+        } __attribute__((__packed__));
+
+        // Calculate average and fll structure
+        vector<uint16_t> clknum(40);
+
+        Clock avgclk;
+        avgclk.num = listclk.size();
+        for (auto it=listclk.begin(); it!=listclk.end(); it++)
+            for (int i=0; i<40; i++)
+                if (it->second[i]!=UINT32_MAX)
+                {
+                    avgclk.val[i] += it->second[i];
+                    clknum[i]++;
+                }
+        for (int i=0; i<40; i++)
+            avgclk.val[i] *= 2.048/clknum[i];
+
+        // Update dim service
+        fDimRefClock.setData(avgclk);
+        fDimRefClock.Update(tm);
+
+        listclk.clear();
+
+        // --------------- Temperatures ---------------
+
+        // remove expired data from history
+        while (1)
+        {
+            auto it=listtmp.begin();
+            if (it==listtmp.end() || it->first+delay>tm)
+                break;
+            listtmp.pop_front();
+        }
+
+        // Structure for dim service
+        struct Temp
+        {
+            uint16_t num;
+            float val[160];
+            Temp() { memset(this, 0, sizeof(Temp)); }
+        } __attribute__((__packed__));
+
+        // Calculate average and fll structure
+        vector<uint32_t> tmpnum(160);
+
+        Temp avgtmp;
+        avgtmp.num = listtmp.size();
+        for (auto it=listtmp.begin(); it!=listtmp.end(); it++)
+            for (int i=0; i<160; i++)
+                if (it->second[i]!=INT16_MIN)
+                {
+                    avgtmp.val[i] += it->second[i];
+                    tmpnum[i]++;
+                }
+        for (int i=0; i<160; i++)
+            avgtmp.val[i] /= tmpnum[i]*16;
+
+        // Update dim service
+        fDimTemperature.setData(avgtmp);
+        fDimTemperature.Update(tm);
+
+        listtmp.clear();
+
+        return true;
+    }
+
+    bool eventCheck(const EVT_CTRL2 &evt)
+    {
+        const EVENT *event = evt.fEvent;
+
+        const Time tm(evt.time);
+
+	const array<uint16_t,2> roi = {{ event->Roi, event->RoiTM }};
+
+	if (roi!=fVecRoi)
+        {
+            fQueueRoi.emplace(tm, roi);
+	    fVecRoi = roi;
+	}
+
+        const FAD::EventHeader *beg = reinterpret_cast<const FAD::EventHeader*>(evt.FADhead);
+        const FAD::EventHeader *end = reinterpret_cast<const FAD::EventHeader*>(evt.FADhead)+40;
+
+        // FIMXE: Compare with target configuration
+
+        // Copy data to array
+        array<uint32_t,40> clk;
+        array<int16_t,160> tmp;
+
+        for (int i=0; i<40; i++)
+            clk[i] = UINT32_MAX;
+
+        for (int i=0; i<160; i++)
+            tmp[i] = INT16_MIN;
+
+        //fill(clk.data(), clk.data()+ 40, UINT32_MAX);
+        //fill(tmp.data(), tmp.data()+160,  INT16_MIN);
+
+        for (const FAD::EventHeader *ptr=beg; ptr!=end; ptr++)
+        {
+            // FIXME: Compare with expectations!!!
+            if (ptr->fStartDelimiter==0)
+            {
+                if (ptr==beg)
+                    beg++;
+                continue;
+            }
+
+            clk[ptr->Id()] = ptr->fFreqRefClock;
+            for (int i=0; i<4; i++)
+                tmp[ptr->Id()*4+i] = ptr->fTempDrs[i];
+
+            if (beg->fStatus != ptr->fStatus)
+            {
+                fMsg.Error("Inconsistency in FAD status detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fRunNumber != ptr->fRunNumber)
+            {
+                fMsg.Error("Inconsistent run number detected.... closing run.");
+                return false;
+            }
+
+            /*
+            if (beg->fVersion != ptr->fVersion)
+            {
+                Error("Inconsist firmware version detected.... closing run.");
+                CloseRunFile(runNr, 0, 0);
+                break;
+                }
+                */
+            if (beg->fEventCounter != ptr->fEventCounter)
+            {
+                fMsg.Error("Inconsistent FAD event number detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fTriggerCounter != ptr->fTriggerCounter)
+            {
+                fMsg.Error("Inconsistent FTM trigger number detected.... closing run.");
+                return false;
+            }
+
+            // FIXME: Check with first event!
+            if (beg->fAdcClockPhaseShift != ptr->fAdcClockPhaseShift)
+            {
+                fMsg.Error("Inconsistent phase shift detected.... closing run.");
+                return false;
+            }
+
+            // FIXME: Check with first event!
+            if (memcmp(beg->fDac, ptr->fDac, sizeof(beg->fDac)))
+            {
+                fMsg.Error("Inconsistent DAC values detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fTriggerType != ptr->fTriggerType)
+            {
+                fMsg.Error("Inconsistent trigger type detected.... closing run.");
+                return false;
+            }
+        }
+
+        // check REFCLK_frequency
+        // check consistency with command configuration
+        // how to log errors?
+        // need gotNewRun/closedRun to know it is finished
+
+        fQueueTempRefClk.emplace(tm, clk, tmp);
+
+        if (evt.runCtrl->fileStat == kFileClosed)
+        {
+            static Time oldt(boost::date_time::neg_infin);
+            if (tm>oldt+boost::posix_time::seconds(1))
+            {
+                fQueueTrigger.emplace(tm, 0, evt.runCtrl->triggerCounter);
+                oldt = tm;
+            }
+        }
+
+        return true;
+    }
+
+    Time fLastDimRawData;
+    Time fLastDimEventData;
+
+    bool UpdateDimRawData(const vector<char> &v)
+    {
+        const EVENT *evt = reinterpret_cast<const EVENT*>(v.data());
+
+        fDimRawData.setData(v);
+        fDimRawData.setQuality(evt->TriggerType);
+        fDimRawData.Update(Time(evt->PCTime, evt->PCUsec));
+
+        return true;
+    }
+
+    bool UpdateDimEventData(const tuple<Time,uint32_t,EventData/*array<float, 1440*4>*/> &tup)
+    {
+        fDimEventData.setQuality(get<1>(tup));
+        fDimEventData.setData(get<2>(tup));
+        fDimEventData.Update(get<0>(tup));
+
+        return true;
+    }
+
+    void applyCalib(const EVT_CTRL2 &evt, const size_t &size)
+    {
+        const EVENT   *event = evt.fEvent;
+        const int16_t *start = event->StartPix;
+
+        // Get the reference to the run associated information
+        RUN_CTRL2 &run = *evt.runCtrl;
+
+        if (size==1) // If there is more than one event waiting (including this one), throw them away
+        {
+            Time now;
+
+            // ------------------- Copy event data to new memory --------------------
+            // (to make it thread safe; a static buffer might improve memory handling)
+            const uint16_t roi = event->Roi;
+
+            // ------------------- Apply full DRS calibration ------------------------
+            // (Is that necessray, or would a simple offset correct do well already?)
+
+            // This is a very important step. Making a copy of the shared pointer ensures
+            // that another thread (here: runClose) can set a new shared_ptr with new
+            // data without this thread being affected. If we just did run.calib->Apply
+            // the shared_pointer in use here might vanash during the processing, the
+            // memory is freed and we access invalid memory. It is not important
+            // which memory we acces (the old or the new one) because it is just for
+            // display purpose anyway.
+            const shared_ptr<DrsCalibration> cal = run.calib;
+
+            // There seems to be a problem using std::array... maybe the size is too big?
+            // array<float, (1440+160)*1024> vec2;
+            vector<float> vec((1440+160)*roi);
+            cal->Apply(vec.data(), event->Adc_Data, start, roi);
+
+            // ------------------- Appy DRS-step correction --------------------------
+            for (auto it=run.prevStart.begin(); it!=run.prevStart.end(); it++)
+            {
+                DrsCalibrate::CorrectStep(vec.data(), 1440, roi, it->data(), start, roi+10);
+                DrsCalibrate::CorrectStep(vec.data(), 1440, roi, it->data(), start, 3);
+            }
+
+            // ------------------------- Remove spikes --------------------------------
+            DrsCalibrate::RemoveSpikes4(vec.data(), roi);
+
+            // -------------- Update raw data dim sevice (VERY SLOW) -----------------
+            if (fQueueRawData.empty() && now>fLastDimRawData+boost::posix_time::seconds(5))
+            {
+                vector<char> data1(sizeof(EVENT)+vec.size()*sizeof(float));
+                memcpy(data1.data(), event, sizeof(EVENT));
+                memcpy(data1.data()+sizeof(EVENT), vec.data(), vec.size()*sizeof(float));
+                fQueueRawData.emplace(data1);
+
+                fLastDimRawData = now;
+            }
+
+            // ------------------------- Basic statistics -----------------------------
+            DrsCalibrate::SlidingAverage(vec.data(), roi, 10);
+
+            // If this is a cosmic event
+            EventData edat;
+            edat.runNum = evt.runNum;
+            edat.evNum  = evt.evNum;
+            //array<float, 1440*4> stats; // Mean, RMS, Max, Pos
+            const float max = DrsCalibrate::GetPixelStats(edat.data, vec.data(), roi, 15, 5);
+            if (evt.trgTyp==0 && max>fMaxEvent.first)
+                fMaxEvent = make_pair(max, edat);
+
+            // ------------------ Update dim service (statistics) ---------------------
+
+            if (fQueueEventData.empty() && now>fLastDimEventData+boost::posix_time::milliseconds(4999))
+            {
+                edat.evNum  = evt.evNum;
+                edat.runNum = evt.runNum;
+
+                fQueueEventData.emplace(evt.time, evt.trgTyp, evt.trgTyp==0 ? fMaxEvent.second : edat);
+                if (evt.trgTyp==0)
+                    fMaxEvent.first = -FLT_MAX;
+
+                fLastDimEventData = now;
+            }
+
+            // === SendFeedbackData(PEVNT_HEADER *fadhd, EVENT *event)
+            //
+            //    if (!ptr->HasTriggerLPext() && !ptr->HasTriggerLPint())
+            //        return;
+            //
+            //    vector<float> data2(1440); // Mean, RMS, Max, Pos, first, last
+            //    DrsCalibrate::GetPixelMax(data2.data(), data.data(), event->Roi, 0, event->Roi-1);
+            //
+            //    fDimFeedbackData.Update(data2);
+        }
+
+        // Keep the start cells of the last five events for further corrections
+        // As a performance improvement we could also just store the
+        // pointers to the last five events...
+        // What if a new run is started? Do we mind?
+        auto &l = run.prevStart; // History for start cells of previous events (for step calibration)
+
+        if (l.size()<5)
+            l.emplace_front();
+        else
+        {
+            auto it = l.end();
+            l.splice(l.begin(), l, --it);
+        }
+
+        memcpy(l.front().data(), start, 1440*sizeof(int16_t));
+    }
+
+    bool IsRunWaiting()
+    {
+        const lock_guard<mutex> lock(mtx_newrun);
+        return fExpectedRuns.find(fRunNumber-1)!=fExpectedRuns.end();
+    }
+
+    uint32_t GetRunNumber() const
+    {
+        return fRunNumber;
+    }
+
+    bool IncreaseRunNumber(uint32_t run)
+    {
+        if (!InitRunNumber())
+            return false;
+
+        if (run<fRunNumber)
+        {
+            ostringstream msg;
+            msg <<
+                "Run number " << run << " smaller than next available "
+                "run number " << fRunNumber << " in " << fPath << " [" << fNightAsInt << "]";
+            fMsg.Error(msg);
+            return false;
+        }
+
+        fRunNumber = run;
+
+        return true;
+    }
+
+    void gotNewRun(RUN_CTRL2 &run)
+    {
+        // This is to secure iteration over fExpectedRuns
+        const lock_guard<mutex> lock(mtx_newrun);
+
+        map<uint32_t,FAD::RunDescription>::iterator it = fExpectedRuns.begin();
+        while (it!=fExpectedRuns.end())
+        {
+            if (it->first<run.runId)
+            {
+                ostringstream str;
+                str << "runOpen - Missed run " << it->first << ".";
+                fMsg.Info(str);
+
+                // Increase the iterator first, it becomes invalid with the next call
+                const auto is = it++;
+                fExpectedRuns.erase(is);
+                continue;
+            }
+
+            if (it->first==run.runId)
+                break;
+
+            it++;
+        }
+
+        if (it==fExpectedRuns.end())
+        {
+            ostringstream str;
+            str << "runOpen - Run " << run.runId << " wasn't expected (maybe manual triggers)";
+            fMsg.Warn(str);
+
+            // This is not ideal, but the best we can do
+            run.night = fNightAsInt;
+
+            return;
+        }
+
+        const FAD::RunDescription &conf = it->second;
+
+        run.runType   = conf.name;
+        run.maxEvt    = conf.maxevt;
+        run.closeTime = conf.maxtime + run.openTime;
+        run.night     = conf.night;
+
+        fExpectedRuns.erase(it);
+
+        // Now signal the fadctrl (configuration process that a run is in progress)
+        // Maybe this could be done earlier, but we are talking about a
+        // negligible time scale here.
+        fRunInProgress = run.runId;
+    }
+
+    void runFinished()
+    {
+        // This is called when the last event of a run (run time exceeded or
+        // max number of events exceeded) has been received.
+        fRunInProgress = -1;
+    }
+
+    //map<boost::thread::id, string> fLastMessage;
+
+    void factOut(int severity, const char *message)
+    {
+        ostringstream str;
+        str << "EventBuilder: " << message;
+
+        /*
+        string &old = fLastMessage[boost::this_thread::get_id()];
+
+        if (str.str()==old)
+            return;
+        old = str.str();
+        */
+
+        fMsg.Update(str, severity);
+    }
+
+/*
+    void factStat(int64_t *stat, int len)
+    {
+        if (len!=7)
+        {
+            fMsg.Warn("factStat received unknown number of values.");
+            return;
+        }
+
+        vector<int64_t> data(1, g_maxMem);
+        data.insert(data.end(), stat, stat+len);
+
+        static vector<int64_t> last(8);
+        if (data==last)
+            return;
+        last = data;
+
+        fDimStatistics.Update(data);
+
+        //   len ist die Laenge des arrays.
+        //   array[4] enthaelt wieviele bytes im Buffer aktuell belegt sind; daran
+        //   kannst Du pruefen, ob die 100MB voll sind ....
+
+        ostringstream str;
+        str
+            << "Wait=" << stat[0] << " "
+            << "Skip=" << stat[1] << " "
+            << "Del="  << stat[2] << " "
+            << "Tot="  << stat[3] << " "
+            << "Mem="  << stat[4] << "/" << g_maxMem << " "
+            << "Read=" << stat[5] << " "
+            << "Conn=" << stat[6];
+
+        fMsg.Info(str);
+    }
+    */
+
+    bool UpdateDimStatistics1(const pair<Time,GUI_STAT> &stat)
+    {
+        fDimStatistics1.setData(&stat.second, sizeof(GUI_STAT));
+        fDimStatistics1.Update(stat.first);
+
+        return true;
+    }
+
+    void factStat(const GUI_STAT &stat)
+    {
+        fQueueStatistics1.emplace(Time(), stat);
+    }
+
+    void factReportIncomplete(uint64_t rep)
+    {
+        fDimIncomplete.setQuality(1);
+        fDimIncomplete.Update(rep);
+    }
+
+    array<FAD::EventHeader, 40> fVecHeader;
+
+    template<typename T, class S>
+    array<T, 42> Compare(const S *vec, const T *t)
+    {
+        const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(vec);
+
+        const T *min = NULL;
+        const T *val = NULL;
+        const T *max = NULL;
+
+        array<T, 42> arr;
+
+        // bool rc = true;
+        for (int i=0; i<40; i++)
+        {
+            const char *base = reinterpret_cast<const char*>(vec+i);
+            const T *ref = reinterpret_cast<const T*>(base+offset);
+
+            arr[i] = *ref;
+
+            if (gi_NumConnect[i]==0)
+            {
+                arr[i] = 0;
+                continue;
+            }
+
+            if (!val)
+            {
+                min = ref;
+                val = ref;
+                max = ref;
+            }
+
+            if (*ref<*min)
+                min = ref;
+
+            if (*ref>*max)
+                max = ref;
+
+            // if (*val!=*ref)
+            //     rc = false;
+        }
+
+        arr[40] = val ? *min : 1;
+        arr[41] = val ? *max : 0;
+
+        return arr;
+    }
+
+    template<typename T>
+    array<T, 42> CompareBits(const FAD::EventHeader *h, const T *t)
+    {
+        const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(h);
+
+        T val = 0;
+        T rc  = 0;
+
+        array<T, 42> vec;
+
+        bool first = true;
+
+        for (int i=0; i<40; i++)
+        {
+            const char *base = reinterpret_cast<const char*>(&fVecHeader[i]);
+            const T *ref = reinterpret_cast<const T*>(base+offset);
+
+            vec[i+2] = *ref;
+
+            if (gi_NumConnect[i]==0)
+            {
+                vec[i+2] = 0;
+                continue;
+            }
+
+            if (first)
+            {
+                first = false;
+                val = *ref;
+                rc = 0;
+            }
+
+            rc |= val^*ref;
+        }
+
+        vec[0] = rc;
+        vec[1] = val;
+
+        return vec;
+    }
+
+    template<typename T, size_t N>
+    void Update(DimDescribedService &svc, const array<T, N> &data, const Time &t=Time(), int n=N)
+    {
+        svc.setData(const_cast<T*>(data.data()), sizeof(T)*n);
+        svc.Update(t);
+    }
+
+    template<typename T>
+        void Print(const char *name, const pair<bool,array<T, 43>> &data)
+    {
+        cout << name << "|" << data.first << "|" << data.second[1] << "|" << data.second[0] << "<x<" << data.second[1] << ":";
+        for (int i=0; i<40;i++)
+            cout << " " << data.second[i+3];
+        cout << endl;
+    }
+
+    vector<uint> fNumConnected;
+
+    bool procHeader(const tuple<Time,bool,FAD::EventHeader> &dat)
+    {
+        const Time             &t = get<0>(dat);
+        const bool        changed = get<1>(dat);
+        const FAD::EventHeader &h = get<2>(dat);
+
+        const FAD::EventHeader old = fVecHeader[h.Id()];
+        fVecHeader[h.Id()] = h;
+
+        if (old.fVersion != h.fVersion || changed)
+        {
+            const array<uint16_t,42> ver = Compare(&fVecHeader[0], &fVecHeader[0].fVersion);
+
+            array<float,42> data;
+            for (int i=0; i<42; i++)
+            {
+                ostringstream str;
+                str << (ver[i]>>8) << '.' << (ver[i]&0xff);
+                data[i] = stof(str.str());
+            }
+            Update(fDimFwVersion, data, t);
+        }
+
+        if (old.fRunNumber != h.fRunNumber || changed)
+        {
+            const array<uint32_t,42> run = Compare(&fVecHeader[0], &fVecHeader[0].fRunNumber);
+            fDimRunNumber.setData(&run[0], 42*sizeof(uint32_t));
+            fDimRunNumber.Update(t);
+        }
+
+        if (old.fTriggerGeneratorPrescaler != h.fTriggerGeneratorPrescaler || changed)
+        {
+            const array<uint16_t,42> pre = Compare(&fVecHeader[0], &fVecHeader[0].fTriggerGeneratorPrescaler);
+            fDimPrescaler.setData(&pre[0], 42*sizeof(uint16_t));
+            fDimPrescaler.Update(t);
+        }
+
+        if (old.fDNA != h.fDNA || changed)
+        {
+            const array<uint64_t,42> dna = Compare(&fVecHeader[0], &fVecHeader[0].fDNA);
+            Update(fDimDNA, dna, t, 40);
+        }
+
+        if (old.fStatus != h.fStatus || changed)
+        {
+            const array<uint16_t,42> sts = CompareBits(&fVecHeader[0], &fVecHeader[0].fStatus);
+            Update(fDimStatus, sts, t);
+        }
+
+        if (memcmp(old.fDac, h.fDac, sizeof(h.fDac)) || changed)
+        {
+            array<uint16_t, FAD::kNumDac*42> dacs;
+
+            for (int i=0; i<FAD::kNumDac; i++)
+            {
+                const array<uint16_t, 42> dac = Compare(&fVecHeader[0], &fVecHeader[0].fDac[i]);
+                memcpy(&dacs[i*42], &dac[0], sizeof(uint16_t)*42);
+            }
+
+            Update(fDimDac, dacs, t);
+        }
+
+        return true;
+    }
+
+    void debugHead(const FAD::EventHeader &h)
+    {
+        const uint16_t id = h.Id();
+        if (id>39) 
+            return;
+
+        if (fNumConnected.size()!=40)
+	    fNumConnected.resize(40);
+
+	const vector<uint> con(gi_NumConnect, gi_NumConnect+40);
+
+	const bool changed = con!=fNumConnected || !IsThreadRunning();
+
+        fNumConnected = con;
+
+        fQueueProcHeader.emplace(Time(), changed, h);
+    }
+};
+
+EventBuilderWrapper *EventBuilderWrapper::This = 0;
+
+// ----------- Event builder callbacks implementation ---------------
+bool runOpen(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->runOpen(evt);
+}
+
+bool runWrite(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->runWrite(evt);
+}
+
+void runClose(const EVT_CTRL2 &evt)
+{
+    EventBuilderWrapper::This->runClose(evt);
+}
+
+bool eventCheck(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->eventCheck(evt);
+}
+
+void gotNewRun(RUN_CTRL2 &run)
+{
+    EventBuilderWrapper::This->gotNewRun(run);
+}
+
+void runFinished()
+{
+    EventBuilderWrapper::This->runFinished();
+}
+
+void applyCalib(const EVT_CTRL2 &evt, const size_t &size)
+{
+    EventBuilderWrapper::This->applyCalib(evt, size);
+}
+
+void factOut(int severity, const char *message)
+{
+    EventBuilderWrapper::This->factOut(severity, message);
+}
+
+void factStat(const GUI_STAT &stat)
+{
+    EventBuilderWrapper::This->factStat(stat);
+}
+
+void factReportIncomplete(uint64_t rep)
+{
+    EventBuilderWrapper::This->factReportIncomplete(rep);
+}
+
+// ------
+
+void debugHead(void *buf)
+{
+    const FAD::EventHeader &h = *reinterpret_cast<FAD::EventHeader*>(buf);
+    EventBuilderWrapper::This->debugHead(h);
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/EventDim.h
===================================================================
--- branches/FACT++_part_filenames/src/EventDim.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventDim.h	(revision 18732)
@@ -0,0 +1,68 @@
+// **************************************************************************
+/** @class EventDim
+
+@brief Concerete implementation of an EventImp as a DimCommand
+
+This is the implementation of an event which can be posted to a state
+machine via the DIM network.
+
+@todo
+- Add reference to DIM docu
+- improve docu
+
+*/
+// **************************************************************************
+#ifndef FACT_EventDim
+#define FACT_EventDim
+
+#include "EventImp.h"
+
+#include "dis.hxx" // DimCommand
+
+#include "DimDescriptionService.h"
+
+class EventDim : public EventImp, public DimCommand
+{
+    DimDescriptionService *fDescription;
+
+public:
+    EventDim(const std::string &name, const std::string &format, DimCommandHandler *handler)
+        : EventImp(), DimCommand(name.c_str(), format.c_str(), handler), fDescription(0)
+    {
+        // Initialize these values from DimCommand, because DimCommand
+        // does not yet do it.
+        itsData   = 0;
+        itsSize   = 0;
+
+        secs      = 0;
+        millisecs = 0;
+    }
+    ~EventDim()
+    {
+        delete fDescription;
+    }
+    void SetDescription(const std::string &str)
+    {
+        if (fDescription)
+            delete fDescription;
+        fDescription = new DimDescriptionService(GetName(), str);
+    }
+    std::string GetDescription() const { return fDescription ? fDescription->GetDescription() : ""; }
+
+    std::string GetName() const   { return const_cast<EventDim*>(this)->getName(); }
+    std::string GetFormat() const { return const_cast<EventDim*>(this)->getFormat(); }
+
+    const void *GetData() const   { return const_cast<EventDim*>(this)->getData(); }
+    size_t      GetSize() const   { return const_cast<EventDim*>(this)->getSize(); }
+
+    Time GetTime() const
+    {
+        // Must be in exactly this order!
+        const int tsec = const_cast<EventDim*>(this)->getTimestamp();
+        const int tms  = const_cast<EventDim*>(this)->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/EventImp.cc
===================================================================
--- branches/FACT++_part_filenames/src/EventImp.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventImp.cc	(revision 18732)
@@ -0,0 +1,306 @@
+// **************************************************************************
+/** @class EventImp
+
+@brief A general base-class describing events issues in a state machine
+
+@section General purpose
+
+The general purpose of this class is to describe an event which can
+occur in one of our StateMachines. It provides pointers to data
+associated with the event, a target state and stores the states in which
+issuing this event is allowed. The target state might be negative to
+describe that no transition of the state is requested.
+
+Such an event canjust be a description of an event, but can also be
+an issued event which already contain data.
+
+The format can, but need not, contain the format of the data area.
+As a rule, it should follow the format also used in the DIM network.
+
+
+@section Assigning functions to an event
+
+To any event a function call can be assigned. Thanks to boost::bind there
+are various and different very powerful ways to do that. 
+
+The function assigned with AssignFunction must return int. When it is
+executed it is given a const reference of the current event as an argument,
+i.e. if you want to get such a reference in your function, you can reference
+it using the placeholder _1. (Remark: it is allowe to omit the _1 placeholder
+if no reference to the EventImp object is needed)
+
+A few examples:
+
+\code
+   int function(const EventImp &evt, int i, const char *txt) { return i; }
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(function, _1, 7, "hallo"));
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+When the function is executed later via ExecFunc() in will get a reference
+to the executing EventImp as its first argument (indicated by '_1'), it will
+get 7 and "hallo" as second and third argument.
+
+\code
+   int function(int i, const char *txt, const EventImp &evt) { return i; }
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(function, 7, "hallo", _1));
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+Is the same example than the one above, but the arguments are in a different
+order.
+
+\code
+   class A
+   {
+      int function(const EventImp &evt, int i, const char *txt)
+      {
+         cout << this << endl; return i;
+      }
+   };
+
+   A a;
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(&A::function, &a, _1, 7, "hallo"));
+   cout << evt.Exec() << endl;
+   // &a
+   // 7
+\endcode
+
+The advanatge of boost::bind is that it also works for member functions
+of classes. In this case the first argument after the function-pointer
+\b must be a pointer to a valid class-object. This can also be \em this
+if called from within a class object.
+
+Also note that everything (as usual) which is not a reference is copied
+when the bind function is invoked. If you want to distribute a reference
+instead use ref(something), like
+
+\code
+   int function(int &i)  { return i; }
+
+   int j = 5;
+   EventImp evt;
+   evt.AssignFunction(bind(function, ref(j));
+   j = 7;
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+Note, that you are responsible for the validity, that means: Do not
+destroy your object (eg. reference to j) while bind might still be called
+later, or a pointer to \em this.
+
+@section References
+   - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
+
+@todo
+   Add link to DIM format
+
+*/
+// **************************************************************************
+#include "EventImp.h"
+
+#include <sstream>
+
+#include "Time.h"
+#include "WindowLog.h"
+#include "Description.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Copy the contents of an EventImp (fTargetState, fAllowedStates and
+//!  fFunction)
+//
+EventImp::EventImp(const EventImp &cmd) : fAllowedStates(cmd.fAllowedStates),
+    fFunction(cmd.fFunction)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! If the state is 0 or positive add it to fAllowedStates
+//!
+//! @param state
+//!     The state which should be added
+//
+void EventImp::AddAllowedState(int state)
+{
+    if (state>=0)
+        fAllowedStates.push_back(state);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add all states in the string to fAllowedStates.
+//! 
+//! @param states
+//!    A string containing the states. They can either be separated by
+//!    whitespaces or commas, e.g. "1 2 3 4" or "1, 7, 9, 10". Note that
+//!    no real consistency check is done.
+//
+void EventImp::AddAllowedStates(const string &states)
+{
+    stringstream stream(states);
+
+    const bool sep = stream.str().find(',')==string::npos;
+
+    string buffer;
+    while (getline(stream, buffer, sep ? ' ' : ','))
+        AddAllowedState(stoi(buffer));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return whether the given state is in the list of allowed states.
+//! 
+//! @param state
+//!    The state to look for in fAllowedStates
+//!
+//! @returns
+//!    If the given state is negative returns false. If the list of allowed
+//!    states is empty return true. Otherwise return whether the state
+//!    is found in fAllowedList or not.
+//
+bool EventImp::IsStateAllowed(int state) const
+{
+    // States with negative values are internal states and are
+    // never allowed
+    // if (state<0)
+    //    return false;
+
+    // In case no allowed state is explicitly set
+    // all positive states are allowed
+    if (fAllowedStates.size()==0)
+        return true;
+
+    return find(fAllowedStates.begin(), fAllowedStates.end(), state)!=fAllowedStates.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the event data converted to a std::string. Trailing redundant
+//!          \0's are removed.
+//!
+string EventImp::GetString() const
+{
+    size_t s = GetSize()-1;
+    while (s>0 && GetText()[s]==0)
+        s--;
+
+    return std::string(GetText(), s+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the contents of the event to the given stream.
+//!
+//! @param out
+//!    An ostream to which the output should be redirected.
+//!
+//! @param strip
+//!    defines whether a possible SERVER name in the event name
+//!    should be stripped or not.
+//!
+void EventImp::Print(ostream &out, bool strip) const
+{
+    if (GetDescription().empty())
+        return;
+
+    out << " -";
+
+    const string str = GetName();
+    if (!str.empty())
+        out << kBold << str.substr(strip?str.find_first_of('/')+1:0) << kReset << "-";
+
+    const string fmt = GetFormat();
+
+    if (!str.empty() && !fmt.empty())
+        out << " ";
+
+    if (!fmt.empty())
+        out << "[" << fmt << "]";
+
+    vector<Description> v = Description::SplitDescription(GetDescription());
+
+    if (!GetDescription().empty())
+    {
+        out << kBold;
+        for (vector<Description>::const_iterator j=v.begin()+1;
+             j!=v.end(); j++)
+            out << " <" << j->name << ">";
+        out << kReset;
+    }
+
+    for (unsigned int i=0; i<fAllowedStates.size(); i++)
+        out << " " << fAllowedStates[i];
+
+    const Time tm = GetTime();
+
+    const bool t = tm!=Time::None && tm!=Time(1970,1,1);
+    const bool s = GetSize()>0;
+
+    if (s || t)
+        out << "(";
+    if (t)
+        out << tm.GetAsStr("%H:%M:%S.%f");
+    if (s && t)
+        out << "/";
+    if (s)
+        out << "size=" << GetSize();
+    if (s || t)
+        out << ")";
+    out << endl;
+
+    if (GetDescription().empty())
+    {
+        out << endl;
+        return;
+    }
+
+    out << "     " << v[0].comment << endl;
+
+    for (vector<Description>::const_iterator j=v.begin()+1;
+         j!=v.end(); j++)
+    {
+        out << "      ||" << kGreen << j->name;
+        if (!j->comment.empty())
+            out << kReset << ": " << kBlue << j->comment;
+        if (!j->unit.empty())
+            out << kYellow << " [" << j->unit << "]";
+        out << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Print(std::cout)
+//!
+//! @param strip
+//!    defines whether a possible SERVER name in the event name
+//!    should be stripped or not.
+//
+void EventImp::Print(bool strip) const
+{
+    Print(cout, strip);
+}
+
+string EventImp::GetTimeAsStr(const char *fmt) const
+{
+    return GetTime().GetAsStr(fmt);
+}
+
+uint64_t EventImp::GetJavaDate() const
+{
+    return GetTime().JavaDate();
+}
Index: branches/FACT++_part_filenames/src/EventImp.h
===================================================================
--- branches/FACT++_part_filenames/src/EventImp.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/EventImp.h	(revision 18732)
@@ -0,0 +1,104 @@
+#ifndef FACT_EventImp
+#define FACT_EventImp
+
+#include <string>
+#include <vector>
+
+#include <functional>
+
+#include "Time.h"
+
+class EventImp
+{
+    std::vector<int> fAllowedStates; /// List of states in which this event is allowed
+
+    /// http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html
+    std::function<int(const EventImp &)> fFunction;
+
+public:
+    /// Constructor. Stores the target state given.
+    EventImp() { }
+    /// Copy constructor
+    EventImp(const EventImp &cmd);
+    virtual ~EventImp() {}
+
+    // Description
+    virtual void SetDescription(const std::string &) { }
+    virtual std::string GetDescription() const { return ""; }
+
+    // Function handling
+    EventImp &AssignFunction(const std::function<int(const EventImp &)> &func=std::function<int(const EventImp &)>()) { fFunction = func; return *this; }
+    bool HasFunc() const { return (bool)fFunction; }
+    int ExecFunc() const { return fFunction ? fFunction(*this) : -1; }
+
+    // Configuration helper
+    EventImp &operator()(const std::function<int(const EventImp &)> &func) { return AssignFunction(func); }
+    EventImp &operator()(const std::string str) { SetDescription(str); return *this; }
+    EventImp &operator()(const char *str) { SetDescription(str); return *this; }
+    EventImp &operator()(int state) { fAllowedStates.push_back(state); return *this; }
+
+    // Print contents
+    virtual void Print(std::ostream &out, bool strip=false) const;
+    virtual void Print(bool strip=false) const;
+
+    // Handling of the states
+    void AddAllowedState(int state);
+    void AddAllowedStates(const std::string &states);
+
+    bool IsStateAllowed(int state) const;
+
+    // virtual function to return the data as stored in the derived classes
+    virtual std::string GetName() const   { return ""; }
+    virtual std::string GetFormat() const { return ""; }
+
+    virtual const void *GetData() const { return 0; }
+    virtual size_t      GetSize() const { return 0; }
+
+    virtual Time GetTime() const { return Time::None; }
+    virtual int  GetQoS() const  { return 0; }
+    virtual bool IsEmpty() const { return GetData()==0; }
+
+    std::string GetTimeAsStr(const char *fmt) const;
+    uint64_t GetJavaDate() const;
+
+    // Generalized access operators
+    template<typename T>
+        T Get(size_t offset=0) const
+    {
+        if (offset>=GetSize())
+            throw std::logic_error("EventImp::Get - offset out of range.");
+        return *reinterpret_cast<const T*>(GetText()+offset);
+    }
+
+    template<typename T>
+        const T *Ptr(size_t offset=0) const
+    {
+        if (offset>=GetSize())
+            throw std::logic_error("EventImp::Ptr - offset out of range.");
+        return reinterpret_cast<const T*>(GetText()+offset);
+    }
+
+    template<typename T>
+        const T &Ref(size_t offset=0) const
+    {
+        return *Ptr<T>(offset);
+    }
+
+    // Getter for all the data contained (name, format, data and time)
+    const char *GetText() const { return reinterpret_cast<const char*>(GetData()); }
+
+    bool     GetBool() const   { return Get<uint8_t>()!=0; }
+    int16_t  GetShort() const  { return Get<int16_t>();    }
+    uint16_t GetUShort() const { return Get<uint16_t>();   }
+    int32_t  GetInt() const    { return Get<int32_t>();    }
+    uint32_t GetUInt() const   { return Get<uint32_t>();   }
+    int64_t  GetXtra() const   { return Get<int64_t>();    }
+    uint64_t GetUXtra() const  { return Get<int64_t>();    }
+    float    GetFloat() const  { return Get<float>();      }
+    double   GetDouble() const { return Get<double>();     }
+
+    std::vector<char> GetVector() const { return std::vector<char>(GetText(), GetText()+GetSize()); }
+    std::string       GetString() const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/FACT.cc
===================================================================
--- branches/FACT++_part_filenames/src/FACT.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/FACT.cc	(revision 18732)
@@ -0,0 +1,65 @@
+// **************************************************************************
+/** @namespace FACT
+
+@brief Namespace to help with some general things in the program initialization
+
+*/
+// **************************************************************************
+#include "FACT.h"
+
+#include <iostream>
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+// --------------------------------------------------------------------------
+//
+//! Print version information about FACT++
+//!
+//! From help2man:
+//!
+//! The first line of the --version information is assumed to be in one
+//! of the following formats:
+//!
+//! \verbatim
+//!  - <version>
+//!  - <program> <version>
+//!  - {GNU,Free} <program> <version>
+//!  - <program> ({GNU,Free} <package>) <version>
+//!  - <program> - {GNU,Free} <package> <version>
+//! \endverbatim
+//!
+//!  and separated from any copyright/author details by a blank line.
+//!
+//! Handle multi-line bug reporting sections of the form:
+//!
+//! \verbatim
+//!  - Report <program> bugs to <addr>
+//!  - GNU <package> home page: <url>
+//!  - ...
+//! \endverbatim
+//!
+//! @param name
+//!     name of the program (usually argv[0]). A possible leading "lt-"
+//!     is removed.
+//!
+void FACT::PrintVersion(const char *name)
+{
+#if BOOST_VERSION < 104600
+    const std::string n = boost::filesystem::path(name).filename();
+#else
+    const std::string n = boost::filesystem::path(name).filename().string();
+#endif
+
+    std::cout <<
+        n << " - " PACKAGE_STRING "\n"
+        "\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n"
+        "Report bugs to <" PACKAGE_BUGREPORT ">\n"
+        "Home page: " PACKAGE_URL "\n"
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << std::endl;
+}
Index: branches/FACT++_part_filenames/src/FACT.h
===================================================================
--- branches/FACT++_part_filenames/src/FACT.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/FACT.h	(revision 18732)
@@ -0,0 +1,9 @@
+#ifndef FACT_FACT
+#define FACT_FACT
+
+namespace FACT
+{
+    void PrintVersion(const char *name);
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/FAD.h
===================================================================
--- branches/FACT++_part_filenames/src/FAD.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/FAD.h	(revision 18732)
@@ -0,0 +1,159 @@
+#ifndef FACT_FAD_H
+#define FACT_FAD_H
+
+//---------------------------------------------------------------
+//
+// FAD internal structures
+//
+//---------------------------------------------------------------
+
+#define NTemp          4
+#define NDAC           8
+
+typedef struct {
+
+  uint16_t start_package_flag;
+  uint16_t package_length;
+  uint16_t version_no;
+  uint16_t PLLLCK;
+
+  uint16_t trigger_crc;
+  uint16_t trigger_type;
+  uint32_t trigger_id;
+
+  uint32_t fad_evt_counter;
+  uint32_t REFCLK_frequency;
+
+  uint16_t board_id;
+  uint8_t  zeroes;
+   int8_t  adc_clock_phase_shift;
+  uint16_t number_of_triggers_to_generate;
+  uint16_t trigger_generator_prescaler;
+
+  uint64_t DNA;
+
+  uint32_t time;
+  uint32_t runnumber;
+
+  int16_t  drs_temperature[NTemp];
+
+  uint16_t  dac[NDAC];
+
+} __attribute__((__packed__)) PEVNT_HEADER;
+
+typedef struct {
+uint16_t id;
+uint16_t start_cell;
+uint16_t roi;
+uint16_t filling;
+ int16_t adc_data[];
+} __attribute__((__packed__)) PCHANNEL;
+
+
+typedef struct {
+uint16_t package_crc;
+uint16_t end_package_flag;
+} __attribute__((__packed__)) PEVNT_FOOTER;
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+//---------------------------------------------------------------
+//
+// Data structures
+//
+//---------------------------------------------------------------
+
+typedef struct _EVENT {
+  uint16_t Roi ;            // #slices per pixel (same for all pixels)
+  uint16_t RoiTM ;          // #slices per pixel (same for all tmarks) [ 0 or Roi ]
+  uint32_t EventNum ;       // EventNumber as from FADs
+  uint32_t TriggerNum ;     // EventNumber as from FTM
+  uint16_t TriggerType ;    // Trigger Type from FTM
+
+  uint32_t NumBoards ;      // number of active boards included
+
+  uint32_t PCTime ;         // epoch
+  uint32_t PCUsec ;         // micro-seconds
+
+  uint32_t BoardTime[NBOARDS];//
+
+   int16_t StartPix[NPIX];  // First Channel per Pixel (Pixels sorted according Software ID)  ; -1 if not filled
+
+   int16_t StartTM[NTMARK]; // First Channel for TimeMark (sorted Hardware ID) ; -1 if not filled
+
+   int16_t Adc_Data[];     // final length defined by malloc ....
+
+} __attribute__((__packed__)) EVENT ;
+
+//---------------------------------------------------------------
+
+struct RUN_HEAD
+{
+  uint32_t Version ;
+  uint32_t RunType ;
+  uint32_t RunTime ;  //unix epoch for first event
+  uint32_t RunUsec ;  //microseconds
+  uint16_t NBoard  ;  //#boards (always 40)
+  uint16_t NPix ;     //#pixels (always 1440)
+  uint16_t NTm  ;     //#TM     (always 160)
+  uint16_t Nroi ;     //roi for pixels
+  uint16_t NroiTM ;   //roi for TM  <=0 if TM is empty 
+
+//headers of all FAD-boards for first event ==> all FAD configs
+  PEVNT_HEADER FADhead[NBOARDS];    // [ NBoards ] sorted Board Headers (according Hardware ID)
+
+  RUN_HEAD() : Version(1), RunType(-1), NBoard(NBOARDS), NPix(NPIX), NTm(NTMARK)
+  {
+  }
+
+
+//do we also have info about FTM config we want to add here ???
+} __attribute__((__packed__));
+
+
+//---------------------------------------------------------------
+
+// FIXME: This doesn't neet to be here... it is inlcuded in all
+//        data processors
+
+#include <netinet/in.h>
+
+typedef struct {
+   struct sockaddr_in sockAddr ;
+   int    sockDef ; //<0 not defined/ ==0 not to be used/ >0 used
+} FACT_SOCK ;    //internal to eventbuilder
+
+
+//---------------------------------------------------------------
+
+typedef struct {
+  //info about (current state of) the buffer 
+   uint32_t bufNew ;            //# incomplete events in buffer (evtCtrl)
+   uint32_t bufEvt ;            //# complete events in buffer  (primaryQueue)
+   uint32_t bufWrite ;          //# events in write queue (secondaryQueue)
+   uint32_t bufProc ;           //# events in processing queue (processingQueue1)
+   uint32_t bufTot ;            //# total events currently in buffer (this corresponds to totMem)
+
+   uint64_t totMem;             //# Bytes available in Buffer
+   uint64_t usdMem;             //# Bytes currently used
+   uint64_t maxMem;             //max # Bytes used during past cycle
+
+  //rates
+   int32_t  deltaT ;            //time in milli-seconds for rates
+   int32_t  rateNew ;           //#New start events recieved
+   int32_t  rateWrite ;         //#Complete events written (or flushed)
+
+  //connections
+   int8_t   numConn[NBOARDS] ;  //#connections per board (at the moment)
+   uint32_t rateBytes[NBOARDS];  //#Bytes read (counter)
+   int32_t  relBytes[NBOARDS];   //#Bytes read this cycle  **
+
+  // ** // if counter and rates exist, do only update the rates in
+  // ** // real time; 
+  // ** // counters will be updated only once per cycle based on rates
+
+}  __attribute__((__packed__)) GUI_STAT ;         //EventBuilder Status
+
+#endif
Index: branches/FACT++_part_filenames/src/Fits.cc
===================================================================
--- branches/FACT++_part_filenames/src/Fits.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Fits.cc	(revision 18732)
@@ -0,0 +1,493 @@
+// **************************************************************************
+/** @class FactFits
+
+@brief FITS writter for the FACT project. 
+
+The FactFits class is able to open, manage and update FITS files. 
+
+The file columns should be given to the class before the file is openned. Once
+a file has been created, the structure of its columns cannot be changed. Only
+row can be added.
+
+This class relies on the CCfits and CFitsIO packages.
+
+*/
+// **************************************************************************
+#include "Fits.h"
+
+#include "Time.h"
+#include "Converter.h"
+#include "MessageImp.h"
+
+#include <sys/stat.h> //for file stats
+#include <cstdio> // for file rename
+#include <cerrno>
+
+#include <boost/algorithm/string/predicate.hpp>
+
+using namespace std;
+using namespace CCfits;
+
+// --------------------------------------------------------------------------
+//
+//! This gives a standard variable to the file writter. 
+//! This variable should not be related to the DIM service being logged. 
+//! @param desc the description of the variable to add
+//! @param dataFormat the FITS data format corresponding to the variable to add.
+//! @param dataPointer the memory location where the variable is stored
+//! @param numDataBytes the number of bytes taken by the variable
+//
+void Fits::AddStandardColumn(const Description& desc, const string &dataFormat, void* dataPointer, long unsigned int numDataBytes)
+{
+    //check if entry already exist
+    for (vector<Description>::const_iterator it=fStandardColDesc.begin(); it != fStandardColDesc.end(); it++)
+        if (it->name == desc.name)
+            return;
+
+    fStandardColDesc.push_back(desc);
+    fStandardFormats.push_back(dataFormat);
+    fStandardPointers.push_back(dataPointer);
+    fStandardNumBytes.push_back(numDataBytes);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This gives the file writter access to the DIM data
+//! @param desc a vector containing the description of all the columns to log
+//! @param dataFormat a vector containing the FITS data format of all the columsn to log
+//! @param dataPointer the memory location where the DIM data starts
+//! @param numDataBytes the number of bytes taken by the DIM data. 
+//! @param out Message object to use for propagating messages
+//	
+void Fits::InitDataColumns(const vector<Description> &desc, const vector<string>& dataFormat, MessageImp* out)
+{
+    fDataFormats = dataFormat;
+
+    if ((desc.size() == 0) && (dataFormat.size() == 0))
+    {
+        fDataColDesc.clear();
+        return;
+    }
+
+    //we will copy this information here. It duplicates the data, which is not great,
+    // but it is the easiest way of doing it right now
+    if (
+        (desc.size() == dataFormat.size()+1) || // regular service
+        (desc.size() == dataFormat.size()+2)    // service with ending string. skipped in fits
+       )
+    {
+        //services have one (or two) more description than columns. skip the first entry while copying as it describes the table itself.
+
+        fDataColDesc.clear();
+
+        fTableDesc = desc[0].comment;
+        if (fTableDesc.size() > 68)
+        {
+            out->Warn("Table description '" + fTableDesc + "' exceeds 68 chars... truncated.");
+            fTableDesc = fTableDesc.substr(0,68);
+        }
+
+        for (unsigned int i=0; i<dataFormat.size(); i++)
+        {
+            string name = desc[i+1].name;
+            if (name.length() > 68)
+            {
+                out->Warn("Column name '" + name + "' exceeds 68 chars... truncated.");
+                name = name.substr(0, 68);
+            }
+
+            string comment = desc[i+1].comment;
+            if (comment.length() + name.length() > 71)
+            {
+                out->Warn("Column '" + name + " / " + comment + "' exceeds 68 chars... truncated.");
+                comment = comment.substr(0,68);
+            }
+
+            string unit = desc[i+1].unit;
+            if (unit.length() > 68)
+            {
+                out->Warn("Unit '" + name + "' exceeds 68 chars... truncated.");
+                unit = comment.substr(0,68);
+            }
+
+            const size_t p = fDataFormats[i].find_last_of('B');
+            if ((boost::iequals(unit, "text") || boost::iequals(unit, "string")) && p!=string::npos)
+            {
+                out->Info("Column '" + name + "' detected to be an ascii string (FITS format 'A').");
+                fDataFormats[i].replace(p, 1, "A");
+            }
+
+            fDataColDesc.push_back(Description(name, comment, unit));
+        }
+        return;
+    }
+
+    {//if we arrived here, this means that the columns descriptions could not be parsed
+        ostringstream str;
+        str << "Expected " << dataFormat.size() << " descriptions of columns, got " << (int)(desc.size())-1 << " for service: ";
+        if (desc.size() > 0)
+            str << desc[0].name;
+        else
+            str << "<unknown>";
+
+        out->Warn(str.str());
+    }
+
+    fDataColDesc.clear();
+ //   fDataColDesc.push_back(Description("service", "comment", "unit"));
+    for (unsigned int i=0;i<dataFormat.size();i++)
+    {
+        ostringstream stt;
+        stt << "Data" << i;
+        fDataColDesc.push_back(Description(stt.str(), "", ""));
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! This opens the FITS file (after the columns have been passed)
+//! @param fileName the filename with complete or relative path of the file to open
+//! @param tableName the name of the table that will receive the logged data.
+//! @param file a pointer to an existing FITS file. If NULL, file will be opened and managed internally
+//! @param fitsCounter a pointer to the integer keeping track of the opened FITS files
+//! @param out a pointer to the MessageImp that should be used to log errors
+//! @param runNumber the runNumber for which this file is opened. 0 means nightly file.
+//
+bool Fits::Open(const string& fileName, const string& tableName, uint32_t* fitsCounter, MessageImp* out, int runNumber, FITS* file)
+{
+    fRunNumber = runNumber;
+    fMess = out;
+    fFileName = fileName;
+
+    if (fFile)
+    {
+        fMess->Error("File already open...");
+        return false;
+    }
+
+    fFile = new FitsFile(*fMess);
+
+    if (file == NULL)
+    {
+        if (!fFile->OpenFile(fileName, true))
+            return false;
+
+        fNumOpenFitsFiles = fitsCounter;
+        (*fNumOpenFitsFiles)++;
+    }
+    else
+    {
+        if (!fFile->SetFile(file))
+            return false;
+    }
+
+    //concatenate the standard and data columns
+    //do it the inneficient way first: its easier and faster to code.
+    for (unsigned int i=0;i<fStandardColDesc.size();i++)
+    {
+        fFile->AddColumn(fStandardColDesc[i].name, fStandardFormats[i],
+                         fStandardColDesc[i].unit);
+    }
+
+    for (unsigned int i=0; i<fDataColDesc.size(); i++)
+    {
+        string name = fDataColDesc[i].name;
+        if (name.empty())
+        {
+            ostringstream stt;
+            stt << "Data" << i;
+            name = stt.str();
+        }
+//cout << endl << "#####adding column: " << name << " " << fDataFormats[i] << " " << fDataColDesc[i].unit << endl << endl;
+        fFile->AddColumn(name, fDataFormats[i], fDataColDesc[i].unit);
+    }
+
+    try
+    {
+        if (!fFile->OpenNewTable(tableName, 100))
+        {
+            Close();
+            //if the file already exist, then the column names must have changed
+            //let's move the file and try to open it again.
+            string fileNameWithoutFits = fFileName.substr(0, fileName.size()-4);
+            int counter = 0;
+            while (counter < 100)
+            {
+                ostringstream newFileName;
+                newFileName << fileNameWithoutFits << counter << ".fits";
+                ifstream testStream(newFileName.str().c_str());
+                if (!testStream)
+                {
+                    if (rename(fFileName.c_str(), newFileName.str().c_str()))
+                        return false;
+                    break;
+                }
+                counter++;
+            }
+            if (counter == 100)
+                return false;
+            //now we open it again.
+            fFile = new FitsFile(*fMess);
+            if (file == NULL)
+            {
+                if (!fFile->OpenFile(fileName, true))
+                    return false;
+                fNumOpenFitsFiles = fitsCounter;
+                (*fNumOpenFitsFiles)++;
+            }
+            else
+            {
+                if (!fFile->SetFile(file))
+                    return false;
+            }
+            //YES, we must also redo that thing here...
+            //concatenate the standard and data columns
+            //do it the inneficient way first: its easier and faster to code.
+            for (unsigned int i=0;i<fStandardColDesc.size();i++)
+            {
+                fFile->AddColumn(fStandardColDesc[i].name, fStandardFormats[i],
+                                 fStandardColDesc[i].unit);
+            }
+
+            for (unsigned int i=0; i<fDataColDesc.size(); i++)
+            {
+                string name = fDataColDesc[i].name;
+                if (name.empty())
+                {
+                    ostringstream stt;
+                    stt << "Data" << i;
+                    name = stt.str();
+                }
+        //cout << endl << "#####adding column: " << name << " " << fDataFormats[i] << " " << fDataColDesc[i].unit << endl << endl;
+                fFile->AddColumn(name, fDataFormats[i], fDataColDesc[i].unit);
+            }
+            if (!fFile->OpenNewTable(tableName, 100))
+            {
+                Close();
+                return false;
+            }
+        }
+
+        fCopyBuffer.resize(fFile->GetDataSize());
+//write header comments
+
+        ostringstream str;
+        for (unsigned int i=0;i<fStandardColDesc.size();i++)
+        {
+            str.str("");
+            str << "TTYPE" << i+1;
+            fFile->WriteKeyNT(str.str(), fStandardColDesc[i].name, fStandardColDesc[i].comment);
+            str.str("");
+            str << "TCOMM" << i+1;
+            fFile->WriteKeyNT(str.str(), fStandardColDesc[i].comment, "");
+        }
+
+        for (unsigned int i=0; i<fDataColDesc.size(); i++)
+        {
+            string name = fDataColDesc[i].name;
+            if (name.empty())
+            {
+                ostringstream stt;
+                stt << "Data" << i;
+                name = stt.str();
+            }
+            str.str("");
+            str << "TTYPE" << i+fStandardColDesc.size()+1;
+            fFile->WriteKeyNT(str.str(), name, fDataColDesc[i].comment);
+            str.str("");
+            str << "TCOMM" << i+fStandardColDesc.size()+1;
+            fFile->WriteKeyNT(str.str(), fDataColDesc[i].comment, "");
+        }
+
+        fFile->WriteKeyNT("COMMENT", fTableDesc, "");
+
+        if (fFile->GetNumRows() == 0)
+        {//if new file, then write header keys -> reset fEndMjD used as flag
+            fEndMjD = 0;
+        }
+        else
+        {//file is beingn updated. Prevent from overriding header keys
+            fEndMjD = Time().Mjd();
+        }
+
+        return fFile->GetNumRows()==0 ? WriteHeaderKeys() : true;
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        cout << "Exception !" << endl;
+        fMess->Error("Opening or creating table '"+tableName+"' in '"+fileName+"': "+e.message());
+
+        fFile->fTable = NULL;
+        Close();
+        return false;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes the standard header 
+//
+bool Fits::WriteHeaderKeys()
+{
+    if (!fFile->fTable)
+        return false;
+
+    if (!fFile->WriteDefaultKeys("datalogger"))
+        return false;
+
+    if (!fFile->WriteKeyNT("TSTARTI",  0, "Time when first event received (integral part)")   ||
+        !fFile->WriteKeyNT("TSTARTF",  0, "Time when first event received (fractional part)") ||
+        !fFile->WriteKeyNT("TSTOPI",   0, "Time when last event received (integral part)")    ||
+        !fFile->WriteKeyNT("TSTOPF",   0, "Time when last event received (fractional part)")  ||
+        !fFile->WriteKeyNT("DATE-OBS", 0, "Time when first event received") ||
+        !fFile->WriteKeyNT("DATE-END", 0, "Time when last event received") ||
+        !fFile->WriteKeyNT("RUNID", fRunNumber, "Run number. 0 means not run file"))
+        return false;
+
+    return true;
+}
+void Fits::MoveFileToCorruptedFile()
+{
+    ostringstream corruptName;
+    struct stat st;
+    int append = 0;
+    corruptName << fFileName << "corrupt" << append;
+    while (!stat(corruptName.str().c_str(), &st))
+    {
+        append++;
+        corruptName.str("");
+        corruptName << fFileName << "corrupt" << append;
+    }
+    if (rename(fFileName.c_str(), corruptName.str().c_str()) != 0)
+    {
+        ostringstream str;
+        str << "rename() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        fMess->Error(str);
+        return;
+    }
+
+    fMess->Message("Renamed file " + fFileName + " to " + corruptName.str());
+
+}
+// --------------------------------------------------------------------------
+//
+//! This writes one line of data to the file.
+//! @param conv the converter corresponding to the service being logged
+//
+bool Fits::Write(const Converter &conv, const void* data)
+{
+    //first copy the standard variables to the copy buffer
+    int shift = 0;
+    for (unsigned int i=0;i<fStandardNumBytes.size();i++)
+    {
+        const char *charSrc = reinterpret_cast<char*>(fStandardPointers[i]);
+        reverse_copy(charSrc, charSrc+fStandardNumBytes[i], fCopyBuffer.data()+shift);
+        shift += fStandardNumBytes[i];
+    }
+    try
+    {
+        //now take care of the DIM data. The Converter is here for that purpose
+        conv.ToFits(fCopyBuffer.data()+shift, data, fCopyBuffer.size()-shift);
+    }
+    catch (const runtime_error &e)
+    {
+        ostringstream str;
+        str << fFile->GetName() << ": " << e.what();
+        fMess->Error(str);
+        return false;
+    }
+
+    // This is not necessary, is it?
+    // fFile->fTable->makeThisCurrent();
+    if (!fFile->AddRow())
+    {
+        Close();
+        MoveFileToCorruptedFile();
+        return false;
+    }
+    if (!fFile->WriteData(fCopyBuffer))
+    {
+        Close();
+        return false;
+    }
+    const double tm = *reinterpret_cast<double*>(fStandardPointers[0]);
+
+    //the first standard variable is the current MjD
+    if (fEndMjD==0)
+    {
+        // FIXME: Check error?
+        fFile->WriteKeyNT("TSTARTI", uint32_t(floor(tm)),      "Time when first event received (integral part)");
+        fFile->WriteKeyNT("TSTARTF", fmod(tm, 1),              "Time when first event received (fractional part)");
+        fFile->WriteKeyNT("TSTOPI",  uint32_t(floor(fEndMjD)), "Time when last event received (integral part)");
+        fFile->WriteKeyNT("TSTOPF",  fmod(fEndMjD, 1),         "Time when last event received (fractional part)");
+
+        fFile->WriteKeyNT("DATE-OBS", Time(tm+40587).Iso(),
+                          "Time when first event received");
+
+        fFile->WriteKeyNT("DATE-END", Time(fEndMjD+40587).Iso(),
+                          "Time when last event received");
+    }
+
+    fEndMjD = tm;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This closes the currently openned FITS file. 
+//! it also updates the header to reflect the time of the last logged row
+//	
+void Fits::Close() 
+{
+    if (!fFile)
+        return;
+    if (fFile->IsOpen() && fFile->IsOwner())
+    {
+        // FIMXE: Check for error? (It is allowed that fFile is NULL)
+        fFile->WriteKeyNT("TSTOPI", uint32_t(floor(fEndMjD)), "Time when last event received (integral part)");
+        fFile->WriteKeyNT("TSTOPF", fmod(fEndMjD, 1),         "Time when last event received (fractional part)");
+
+        fFile->WriteKeyNT("DATE-END", Time(fEndMjD+40587).Iso(),
+                          "Time when last event received");
+    }
+    if (fFile->IsOwner())
+    {
+        if (fNumOpenFitsFiles != NULL)
+            (*fNumOpenFitsFiles)--;
+    }
+    const string name = fFile->GetName();
+    delete fFile;
+    fFile = NULL;
+    fMess->Info("Closed: "+name);
+//    fMess = NULL;
+}
+
+void Fits::Flush()
+{
+    if (!fFile)
+        return;
+
+    fFile->Flush();
+}
+// --------------------------------------------------------------------------
+//! Returns the size on the disk of the Fits file being written.
+int Fits::GetWrittenSize() const
+{
+    if (!IsOpen())
+        return 0;
+
+    struct stat st;
+    if (stat(fFile->GetName().c_str(), &st))
+        return 0;
+
+    return st.st_size;
+}
+
+/*
+ To be done:
+ - Check the check for column names in opennewtable
+ - If Open return false we end in an infinite loop (at least if
+   the dynamic cats to Bintable fails.
+
+*/
Index: branches/FACT++_part_filenames/src/Fits.h
===================================================================
--- branches/FACT++_part_filenames/src/Fits.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Fits.h	(revision 18732)
@@ -0,0 +1,98 @@
+#ifndef FACT_Fits
+#define FACT_Fits
+
+#include "Description.h"
+#include "FitsFile.h"
+
+class Converter;
+
+using namespace std;
+
+class Fits
+{
+private:
+    FitsFile *fFile;
+    string fFileName;
+
+    ///Name of the "standard", i.e. data found in every fits file
+    ///TODO make these variable static so that they are shared by every object.
+    ///TODO add also a static boolean to initialize these only once
+    vector<Description> fStandardColDesc;
+    ///Format of the standard columns.
+    vector<string> fStandardFormats;
+    ///the pointers to the standard variables
+    vector<void*> fStandardPointers;
+    ///the number of bytes taken by each standard variable
+    vector<int> fStandardNumBytes;
+
+    ///the vector of data column names
+    vector<Description> fDataColDesc;
+    //Description of the table
+    string fTableDesc;
+    ///the data format of the data columns
+    vector<string> fDataFormats;
+
+    ///the copy buffer. Required to put the standard and data variable in contguous memory
+    vector<char> fCopyBuffer;
+    ///to keep track of the time of the latest written entry (to update the header when closing the file)
+    double fEndMjD;
+    ///Keep track of number of opened fits
+    uint32_t* fNumOpenFitsFiles;
+    ///were to log the errors
+    MessageImp* fMess;
+
+    ///Write the FITS header keys
+    bool WriteHeaderKeys();
+    //if a write error occurs
+    void MoveFileToCorruptedFile();
+
+
+
+public:
+    ///current run number being logged
+    int32_t fRunNumber;
+
+    Fits() : fFile(NULL),
+        fEndMjD(0.0),
+        fNumOpenFitsFiles(NULL),
+        fMess(NULL),
+        fRunNumber(0)
+    {}
+
+    virtual ~Fits()
+    {
+        Close();
+    }
+
+    ///returns wether or not the file is currently open or not
+    bool IsOpen() const { return fFile != NULL && fFile->IsOpen(); }
+
+    ///Adds a column that exists in all FITS files
+    void AddStandardColumn(const Description& desc, const string &dataFormat, void* dataPointer, long unsigned int numDataBytes);
+
+    ///Adds columns specific to the service being logged.
+    void InitDataColumns(const vector<Description> &desc, const vector<string>& dataFormat, MessageImp* out);
+
+    ///Opens a FITS file
+    bool Open(const string& fileName, const string& tableName,  uint32_t* fitsCounter, MessageImp* out, int runNumber, CCfits::FITS *file=0);//ostream& out);
+
+    ///Write one line of data. Use the given converter.
+    bool Write(const Converter &conv, const void* data);
+
+    ///Close the currently opened file.
+    void Close();
+
+    ///Flush the currently opened file to disk.
+    void Flush();
+
+    ///Get the size currently written on the disk
+    int GetWrittenSize() const;
+
+    string GetName() const { return fFile ? fFile->GetName() : ""; }
+
+};//Fits
+
+
+#endif /*FITS_H_*/
+
+// WriteToFITS vs Open/Close
Index: branches/FACT++_part_filenames/src/FitsFile.cc
===================================================================
--- branches/FACT++_part_filenames/src/FitsFile.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/FitsFile.cc	(revision 18732)
@@ -0,0 +1,495 @@
+// **************************************************************************
+/** @class FitsFile
+
+@brief FITS writter for the FACT project. 
+
+The FactFits class is able to open, manage and update FITS files. 
+
+The file columns should be given to the class before the file is openned. Once
+a file has been created, the structure of its columns cannot be changed. Only
+row can be added.
+
+This class relies on the CCfits and CFitsIO packages.
+
+*/
+// **************************************************************************
+#include "FitsFile.h"
+
+using namespace std;
+using namespace CCfits;
+
+bool FitsFile::WriteDefaultKeys(const string &prgname, float version)
+{
+    if (!fTable)
+        return false;
+
+    try
+    {
+        const Time now;
+        WriteKey("TELESCOP", "FACT", "Telescope that acquired this data");
+        WriteKey("PACKAGE",   PACKAGE_NAME, "Package name");
+        WriteKey("VERSION",   PACKAGE_VERSION, "Package description");
+        WriteKey("CREATOR",  prgname, "Program that wrote this file");
+        WriteKey("EXTREL",   version, "Release Number");
+        WriteKey("COMPILED",  __DATE__ " " __TIME__, "Compile time");
+        WriteKey("REVISION",  REVISION, "SVN revision");
+        WriteKey("ORIGIN",   "FACT", "Institution that wrote the file");
+        WriteKey("DATE",     now.Iso(), "File creation date");
+        WriteKey("NIGHT",    now.NightAsInt(), "Night as int");
+        WriteKey("TIMESYS",  "UTC", "Time system");
+        WriteKey("TIMEUNIT", "d",   "Time given in days w.r.t. to MJDREF");
+        WriteKey("MJDREF",   40587, "Store times in UNIX time (for convenience, seconds since 1970/1/1)");
+
+        //WriteKey("CONTACT",   PACKAGE_BUGREPORT, "Current package maintainer");
+        //WriteKey("URL",       PACKAGE_URL, "Current repositiory location");
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed for '"+fTable->name()+"' in '"+fFile->name()+"': "+e.message());
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new column to the vectors storing the column data.
+//! @param names the vector of string storing the columns names
+//! @param types the vector of string storing the FITS data format
+//! @param numElems the number of elements in this column
+//! @param type the char describing the FITS data format
+//! @param name the name of the particular column to be added.
+//
+void FitsFile::AddColumn(char type, const string &name, int numElems, const string &unit)
+{
+    fColNames.push_back(name);
+    fColUnits.push_back(unit);
+
+    ostringstream str;
+    if (numElems != 1)
+        str << numElems;
+
+    switch (toupper(type))
+    {
+    case 'B': str << 'L'; break; // logical
+    case 'C': str << 'B'; break; // byte
+    case 'S': str << 'I'; break; // short
+    case 'I': str << 'J'; break; // int
+    case 'X': str << 'K'; break; // long long
+    case 'F': str << 'E'; break; // float
+    case 'D': str << 'D'; break; // double
+    }
+
+    fColTypes.push_back(str.str());
+}
+
+void FitsFile::AddColumn(const string &name, const string &format, const string &unit)
+{
+    fColNames.push_back(name);
+    fColUnits.push_back(unit);
+    fColTypes.push_back(format);
+}
+
+bool FitsFile::OpenFile(const string &filename, bool allow_open)
+{
+    if (fFile || fTable)
+    {
+        Error("FitsFile::OpenFile - File already open.");
+        return false;
+    }
+    // fFileName = fileName;
+    if (!allow_open && access(filename.c_str(), F_OK)==0)
+    {
+        Error("File '"+filename+"' already existing.");
+        return false;
+    }
+    //create the FITS object
+    try
+    {
+        fFile = new CCfits::FITS(filename, CCfits::RWmode::Write);
+    }
+    catch (CCfits::FitsException e)
+    {
+        Error("CCfits::FITS failed for '"+filename+"': "+e.message());
+        return false;
+    }
+    /*
+     "SIMPLE  =                    T / file does conform to FITS standard             "
+     "BITPIX  =                    8 / number of bits per data pixel                  "
+     "NAXIS   =                    0 / number of data axes                            "
+     "EXTEND  =                    T / FITS dataset may contain extensions            "
+     "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+     "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+     "END                                                                             ";
+     */
+
+    fIsOwner = true;
+
+    return true;
+}
+
+void FitsFile::ResetColumns()
+{
+    fColNames.clear();
+    fColTypes.clear();
+    fColUnits.clear();
+}
+
+bool FitsFile::SetFile(CCfits::FITS *file)
+{
+    if (!file)
+    {
+        Error("Fits::SetFile failed: NULL argument.");
+        return false;
+    }
+
+    if (fFile)
+    {
+        Error("Fits::SetFile failed: File already set.");
+        return false;
+    }
+
+    fFile = file;
+    fIsOwner = false;
+
+    return true;
+}
+
+bool FitsFile::OpenTable(const string &tablename)
+{
+    if (!fFile)
+    {
+        Error("FitsFile::OpenTable - No file open.");
+        return false;
+    }
+    if (fTable)
+    {
+        Error("FitsFile::OpenTable - Table already open.");
+        return false;
+    }
+
+    //actually create the table
+    CCfits::Table *table = 0;
+    try
+    {
+        table = fFile->addTable(tablename, 0, fColNames, fColTypes, fColUnits);
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addTable failed for '"+tablename+"' in '"+fFile->name()+"': "+e.message());
+        return false;
+    }
+
+    if (table->rows() != 0)
+    {
+        Error("FITS table '"+tablename+"' created in '"+fFile->name()+"' on the fly looks non-empty.");
+        return false;
+    }
+
+    // Set this as last - we use it for IsOpen()
+    fTable = table;
+    fNumRows = 0;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This looks for a suitable table in the fits file, i.e. that corresponds to the name and column names. (no format check yet)
+//! @param tableName. the base table name to be obtained. If not suitable, numbers are appened to the name
+//! @param allNames. the name of all columns
+//! @param allDataTypes. the data types of all columns
+//! @param allUnits. the units of the columns
+//! @return a pointer to the newly retrieved/created table
+//
+bool FitsFile::OpenNewTable(const string &tableName, int maxtry)
+{
+    if (!fFile)
+    {
+        Error("FitsFile::OpenNewTable - No file open.");
+        return false;
+    }
+
+    if (fTable)
+    {
+        Error("FitsFile::OpenNewTable - Table already open.");
+        return false;
+    }
+
+    //first, let's check if the table already exist in the file
+    fFile->read(vector<string>(1, tableName));
+
+    // FIXME: Check for fFile and fTable
+    const multimap<string, CCfits::ExtHDU *> &extMap = fFile->extension();
+
+    for (int i=0; i<maxtry; i++)
+    {
+        //if (i==10)
+        //    fMess->Warn("Already 10 different tables with different formats exist in this file. Please consider re-creating the file entirely (i.e. delete it please)");
+
+        ostringstream str;
+        str << tableName;
+        if (i != 0)
+            str << "-" << i;
+
+        const string tname = str.str();
+
+        const multimap<string,CCfits::ExtHDU*>::const_iterator it = extMap.find(tname);
+
+        //current table name does not exist yet. return its associated fits table newly created
+        if (it == extMap.end())
+        {
+            // What is this for?
+            //for (multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin();
+            //     it!= extMap.end(); it++)
+            //    fMess->Debug(it->first);
+
+            return OpenTable(tname);
+        }
+
+        CCfits::Table *table = dynamic_cast<CCfits::Table*>(it->second);
+
+        // something wrong happened while getting the table pointer
+        if (!table)
+        {
+            Error("HDU '"+tname+"' found in file, but it is not a proper CCfits::Table.");
+            return false;
+        }
+
+        //now check that the table columns are the same
+        //as the service columns
+        table->makeThisCurrent();
+
+        // FIXME: To be checked...
+        /*
+         const map<string, Column*> cMap = table->column();
+         for (vector<string>::const_iterator ii=fFile->fColNames;
+         ii!=fFile->fColNames.end(); ii++)
+         if (cMap.find(*ii) == cMap.end())
+         continue;
+         */
+
+        fNumRows = table->rows();
+
+        // ----------- This is just a simple sanity check ----------
+
+        // This is not necessary this is done already in
+        // findSuitableTable (either directly or indirectly through OpenTable)
+        // fFile->fTable->makeThisCurrent();
+
+        //If the file already existed, then we must load its data to memory before writing to it.
+        if (fNumRows>0)
+        {
+            CCfits::BinTable* bTable = dynamic_cast<CCfits::BinTable*>(table);
+            if (!bTable)
+            {
+                Error("Table '"+tableName+"' found in '"+fFile->name()+"' is not a binary table.");
+                return false;
+            }
+
+            //read the table binary data.
+            vector<string> colName;
+            bTable->readData(true, colName);
+
+            // double check that the data was indeed read from the disk.
+            // Go through the fTable instead as colName is empty (yes, it is !)
+            const map<string,CCfits::Column*> &cMap = table->column();
+
+            //check that the existing columns are the same as the ones we want to write
+            for (map<string, CCfits::Column*>::const_iterator mapIt = cMap.begin(); mapIt != cMap.end(); mapIt++)
+            {
+                bool found = false;
+                for (unsigned int ii=0;ii<fColNames.size();ii++)
+                {
+                    if (mapIt->first == fColNames[ii])
+                    {
+                        found = true;
+                        if (mapIt->second->format() != fColTypes[ii])
+                        {
+                            Error("Column "+fColNames[ii]+" has wrong format ("+fColTypes[ii]+" vs "+mapIt->second->format()+" in file)");
+                            return false;
+                        }
+                    }
+                }
+                if (!found)
+                {
+                    Error("Column "+mapIt->first+" only exist in written file");
+                    return false;
+                }
+            }
+            //now we know that all the file's columns are requested. Let's do it the other way around
+            for (unsigned int ii=0;ii<fColNames.size();ii++)
+            {
+                bool found = false;
+                for (map<string, CCfits::Column*>::const_iterator mapIt = cMap.begin(); mapIt != cMap.end(); mapIt++)
+                {
+                    if (fColNames[ii] == mapIt->first)
+                    {
+                        found = true;
+                        if (fColTypes[ii] != mapIt->second->format())
+                        {
+                            Error("Column "+fColNames[ii]+" has wrong format ("+fColTypes[ii]+" vs "+mapIt->second->format()+" in file)");
+                            return false;
+                        }
+                    }
+                }
+                if (!found)
+                {
+                    Error("Column "+fColNames[ii]+" only exist in requested description");
+                    return false;
+                }
+            }
+
+            for (map<string,CCfits::Column*>::const_iterator cMapIt = cMap.begin();
+                 cMapIt != cMap.end(); cMapIt++)
+            {
+                if (!cMapIt->second->isRead())
+                {
+                    Error("Reading column '"+cMapIt->first+"' back from '"+fFile->name()+"' failed.");
+                    return false;
+                }
+            }
+        }
+
+        // Set this as last - we use it for IsOpen()
+        fTable = table;
+
+        return true;
+    }
+
+    ostringstream str;
+    str << "FitsFile::OpenNewTable failed - more than " << maxtry << " tables tried." << endl;
+    Error(str);
+
+    return false;
+}
+
+bool FitsFile::AddRow()
+{
+    if (!fFile || !fTable)
+    {
+        Error("FitsFile::AddRow - No table open.");
+        return false;
+    }
+
+    //insert a new row (1==number of rows to insert)
+    int status(0);
+    fits_insert_rows(fFile->fitsPointer(), fNumRows, 1, &status);
+
+    // Status is also directly returned, but we need to give the
+    // pointer anyway
+    if (status)
+    {
+        char text[30];//max length of cfitsio error strings (from doc)
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Inserting row " << fNumRows << " failed in '"+fFile->name()+"': " << text << " (fits_insert_rows,rc=" << status << ")";
+        Error(str);
+
+        return false;
+    }
+
+    fNumRows++;
+    fCursor = 1;
+
+    return true;
+}
+
+bool FitsFile::WriteData(size_t &start, const void *ptr, size_t size)
+{
+    if (!fFile || !fTable)
+    {
+        Error("FitsFile::AddRow - No table open.");
+        return false;
+    }
+
+    int status = 0;
+    fits_write_tblbytes(fFile->fitsPointer(), fNumRows, start, size,
+                        (unsigned char*)ptr, &status);
+
+    // Status is also directly returned, but we need to give the
+    // pointer anyway
+    if (status)
+    {
+        char text[30];//max length of cfitsio error strings (from doc)
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Writing row " << fNumRows << " failed in '"+fFile->name()+"': " << text << " (file_write_tblbytes,rc=" << status << ")";
+        Error(str);
+    }
+
+    start += size;
+    return status==0;
+}
+
+void FitsFile::Close()
+{
+    if (!fFile)
+        return;
+
+    if (fIsOwner)
+    {
+        const string name = fFile->name();
+        delete fFile;
+    }
+
+    //WARNING: do NOT delete the table as it gets deleted by the
+    // fFile object
+    fFile = NULL;
+    fTable = NULL;
+}
+
+void FitsFile::Flush()
+{
+    if (!fFile)
+        return;
+
+    int status = 0;
+    fits_flush_file(fFile->fitsPointer(), &status);
+
+    if (status)
+    {
+        char text[30];
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Flushing file " << fFile->name() << " failed: " << text << " (fits_flush_file, rc=" << status << ")";
+        Error(str);
+    }
+}
+size_t FitsFile::GetDataSize() const
+{
+    size_t size = 0;
+
+    for (vector<string>::const_iterator it=fColTypes.begin();
+         it!=fColTypes.end(); it++)
+    {
+        size_t id=0;
+
+        int n=1;
+        try { n = stoi(*it, &id); }
+        catch (const exception&) { }
+
+        if (n==0)
+            continue;
+
+        switch ((*it)[id])
+        {
+        case 'L':
+        case 'A': size += n*1; break; // ascii
+        case 'B': size += n*1; break; // logical/byte
+        case 'I': size += n*2; break; // short
+        case 'J': size += n*4; break; // int
+        case 'K': size += n*8; break; // long long
+        case 'E': size += n*4; break; // float
+        case 'D': size += n*8; break; // double
+        default:
+            throw runtime_error("FitsFile::GetDataSize - id not known.");
+        }
+    }
+
+    return size;
+}
Index: branches/FACT++_part_filenames/src/FitsFile.h
===================================================================
--- branches/FACT++_part_filenames/src/FitsFile.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/FitsFile.h	(revision 18732)
@@ -0,0 +1,109 @@
+#ifndef FACT_FitsFile
+#define FACT_FitsFile
+
+#include <CCfits/CCfits>
+
+#include "MessageImp.h"
+#include "Time.h"
+
+class FitsFile : public MessageImp
+{
+public:
+    MessageImp &fMsg;
+
+    std::vector<std::string> fColNames;
+    std::vector<std::string> fColTypes;
+    std::vector<std::string> fColUnits;
+
+    CCfits::FITS*  fFile;        /// The pointer to the CCfits FITS file
+    CCfits::Table* fTable;       /// The pointer to the CCfits binary table
+
+    size_t fNumRows;             ///the number of rows that have been written already to the FITS file.
+    size_t fCursor;
+
+    bool fIsOwner;
+
+    int Write(const Time &time, const std::string &txt, int qos)
+    {
+        return fMsg.Write(time, txt, qos);
+    }
+
+public:
+    FitsFile(MessageImp &imp) :
+        fMsg(imp), fFile(0), fTable(0), fNumRows(0), fCursor(0)
+    {
+    }
+    ~FitsFile() { Close(); }
+
+    bool WriteDefaultKeys(const string &prgname, float version=1.0);
+
+    void AddColumn(char type, const string &name, int numElems=1, const string &unit="");
+    void AddColumn(const string &name, const string &format, const string &unit="");
+    void AddColumn(char type, const string &name, const string &unit)
+    {
+        AddColumn(type, name, 1, unit);
+    }
+
+    void ResetColumns();
+
+    bool OpenFile(const string &filename, bool allow_open=false);
+    bool SetFile(CCfits::FITS *file=0);
+    bool OpenTable(const string &tablename);
+    bool OpenNewTable(const string &tableName, int maxtry=1);
+
+    template <typename T>
+    void WriteKey(const string &name, const T &value, const string &comment)
+    {
+        if (fTable)
+            fTable->addKey(name, value, comment);
+    }
+
+    template <typename T>
+        bool WriteKeyNT(const string &name, const T &value, const string &comment)
+    {
+        if (!fTable)
+            return false;
+
+        try
+        {
+            fTable->addKey(name, value, comment);
+        }
+        catch (CCfits::FitsException e)
+        {
+            Error("CCfits::Table::addKey failed for '"+name+"' in '"+fFile->name()+'/'+fTable->name()+"': "+e.message());
+            return false;
+        }
+
+        return true;
+    }
+
+    bool AddRow();
+    bool WriteData(size_t &start, const void *ptr, size_t size);
+    bool WriteData(const void *ptr, size_t size)
+    {
+        return WriteData(fCursor, ptr, size);
+    }
+
+    template<typename T>
+        bool WriteData(const std::vector<T> &vec)
+    {
+        return WriteData(fCursor, vec.data(), vec.size()*sizeof(T));
+    }
+
+    void Close();
+
+    void Flush();
+
+    bool IsOpen() const { return fFile && fTable; }
+
+    const std::vector<std::string> &GetColumnTypes() const { return fColTypes; }
+    string GetName() const { return fFile ? fFile->name() : "<no file open>"; }
+    bool IsOwner() const { return fIsOwner; }
+
+    size_t GetDataSize() const;
+
+    size_t GetNumRows() const { return fNumRows; }
+
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersAgilent.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersAgilent.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersAgilent.h	(revision 18732)
@@ -0,0 +1,31 @@
+#ifndef FACT_HeadersAgilent
+#define FACT_HeadersAgilent
+
+namespace Agilent
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kVoltageOff,
+            kVoltageLow,
+            kVoltageOn,
+            kVoltageHigh,
+        };
+    }
+
+    struct Data
+    {
+        float fVoltageSet;
+        float fVoltageMeasured;
+
+        float fCurrentLimit;
+        float fCurrentMeasured;
+
+        Data() : fVoltageSet(-1), fVoltageMeasured(-1), fCurrentLimit(-1), fCurrentMeasured(-1) { }
+    };
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersBIAS.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersBIAS.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersBIAS.h	(revision 18732)
@@ -0,0 +1,52 @@
+#ifndef FACT_HeadersBIAS
+#define FACT_HeadersBIAS
+
+namespace BIAS
+{
+    enum
+    {
+        kNumBoards           = 13,
+        kNumChannelsPerBoard = 32,
+        kNumChannels = kNumBoards*kNumChannelsPerBoard
+    };
+
+    enum Command_t
+    {
+        // Communication commands
+        kCmdReset         =  0,
+        kCmdRead          =  1,
+        kCmdGlobalSet     =  2,
+        kCmdChannelSet    =  3,
+
+        // Internal command names
+        kResetChannels    = 0x10|kCmdChannelSet,
+        kUpdate           = 0x10|kCmdRead,
+        kExpertChannelSet = 0x14|kCmdChannelSet,
+        kSynchronize      = 0x1e,
+    };
+
+    enum
+    {
+        kMaxDac = 0xfff
+    };
+
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,//StateMachineImp::kSM_UserMode,
+            kConnecting,
+            kInitializing,
+            kConnected,
+            kRamping,
+            kOverCurrent,
+            kVoltageOff,
+            kNotReferenced,
+            kVoltageOn,
+            kExpertMode, // 'forward' declaration to be used in StateMachineBias
+            kLocked,
+        };
+    }
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersDrive.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersDrive.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersDrive.h	(revision 18732)
@@ -0,0 +1,93 @@
+#ifndef FACT_HeadersDrive
+#define FACT_HeadersDrive
+
+namespace Drive
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kLocked,
+            kUnavailable,    // IndraDrives not connected
+            kAvailable,      // IndraDrives connected, but not in Af
+            kBlocked,        // Drive blocked by manual operation of emergency button
+            kArmed,          // IndraDrives Af, not yet initialized
+            kInitialized,    // IndraDrives Af, initialized
+            kStopping,
+            kParking,
+            kMoving,
+            kTracking,
+            kOnTrack,
+
+            kPositioningFailed = /*StateMachineImp::kSM_Error*/0x100+1,
+            kAllowedRangeExceeded,
+            kInvalidCoordinates,
+            //kSpeedLimitExceeded,
+        };
+    };
+
+    struct DimPointing
+    {
+    } __attribute__((__packed__));
+
+    struct DimTracking
+    {
+    } __attribute__((__packed__));
+/*
+    struct DimStarguider
+    {
+        double fMissZd;
+        double fMissAz;
+
+        double fNominalZd;
+        double fNominalAz;
+
+        double fCenterX;
+        double fCenterY;
+
+        double fBrightness;
+
+        uint16_t fNumCorrelated;
+        uint16_t fNumLeds;
+        uint16_t fNumRings;
+        uint16_t fNumStars;
+
+    } __attribute__((__packed__));
+*/
+    struct DimTPoint
+    {
+        double fRa;
+        double fDec;
+
+        double fNominalZd;
+        double fNominalAz;
+
+        double fPointingZd;
+        double fPointingAz;
+
+        double fFeedbackZd;
+        double fFeedbackAz;
+
+        uint16_t fNumLeds;
+        uint16_t fNumRings;
+ 
+        double fCenterX;
+        double fCenterY;
+        double fCenterMag;
+
+        double fStarX;
+        double fStarY;
+        double fStarMag;
+
+        double fRotation;
+
+        double fDx;
+        double fDy;
+
+        double fRealMag;
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersEventServer.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersEventServer.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersEventServer.h	(revision 18732)
@@ -0,0 +1,16 @@
+#ifndef FACT_HeadersEventServer
+#define FACT_HeadersEventServer
+
+namespace EventServer
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kIdle = 1,
+            kStandby,
+            kRunning,
+        };
+    };
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersFAD.cc
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFAD.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFAD.cc	(revision 18732)
@@ -0,0 +1,97 @@
+#include "HeadersFAD.h"
+
+#include <string.h>
+
+#include <iomanip>
+
+using namespace std;
+
+void FAD::EventHeader::print(std::ostream &out) const
+{
+    out << "Delimiter:  " << hex << fStartDelimiter;
+    out << (fStartDelimiter==kDelimiterStart?" (ok)":" (WRONG)") << endl;
+    out << " (Crate=" << dec << Crate() << ", Board=" << Board() << ", Version=" << (fVersion>>8) << "." << (fVersion&0xff) << ", DNA=" << hex << fDNA <<")" << endl;
+
+    out << dec;
+    out << "PkgLength:  " << fPackageLength << endl;
+
+    out << "RunNumber:  " << fRunNumber << endl;
+    out << "Time:       " << setprecision(3) << fixed << fTimeStamp/10000. << "s" << endl;
+    out << "EvtCounter: " << fEventCounter << " of " << fNumTriggersToGenerate << endl;
+    out << "Trigger:    Type=" << hex << fTriggerType << dec << " Counter=" << fTriggerCounter << " Crc=0x" << hex << fTriggerCrc << endl;
+
+    out << "            N/40  = " << dec << GetTriggerLogic() << endl;
+    out << "            TRG   =";
+
+    if (IsTriggerPhys())
+        out << " phys";
+    if (HasTriggerPed())
+        out << " ped";
+    if (HasTriggerLPext())
+        out << " LPext";
+    if (HasTriggerLPint())
+        out << " LPint";
+    if (HasTIMsource())
+        out << " TIM";
+    if (HasTriggerExt1())
+        out << " ext1";
+    if (HasTriggerExt2())
+        out << " ext2";
+    out << endl;
+
+    out << "            LPset = " << GetTriggerLPset() << endl;
+
+    out << "RefClock:   " << dec << fFreqRefClock << " (approx. " << fFreqRefClock*2.048 <<  "GHz)" << endl;
+    out << "PhaseShift: " << fAdcClockPhaseShift << endl;
+    out << "Prescaler:  " << fTriggerGeneratorPrescaler << endl;
+
+    out << "DAC:       " << dec;
+    for (int i=0; i<kNumDac; i++)
+        out << " " << fDac[i];
+    out << endl;
+
+    out << "Temp:      " << dec;
+    for (int i=0; i<kNumTemp; i++)
+        out << " " << GetTemp(i);
+    out << endl;
+
+    out << "Status=" << hex << fStatus << endl;
+    // PllLock -> 1111
+    out << "  RefClk locked (PLLLCK):  ";
+    if ((PLLLCK()&15)==15)
+        out << "all";
+    else
+        if (PLLLCK()==0)
+            out << "none";
+        else
+            out
+                << "0:" << ((PLLLCK()&1)?"yes":"no") << " "
+                << "1:" << ((PLLLCK()&2)?"yes":"no") << " "
+                << "2:" << ((PLLLCK()&4)?"yes":"no") << " "
+                << "3:" << ((PLLLCK()&8)?"yes":"no") << endl;
+//    if (IsRefClockTooHigh())
+//        out << " (too high)";
+    if (IsRefClockTooLow())
+        out << " (too low)";
+    out << endl;
+    out << "  Domino wave (Denable):     " << (HasDenable()?"enabled":"disabled") << endl;
+    out << "  DRS sampling (Dwrite):     " << (HasDwrite()?"enabled":"disabled") << endl;
+    out << "  Dig.clock manager (DCM):   " << (IsDcmLocked()?"locked":"unlocked");
+    out << " / " << (IsDcmReady()?"ready":"not ready") << endl;
+    out << "  SPI Serial Clock (SCLK):   " << (HasSpiSclk()?"enabled":"disabled") << endl;
+    out << "  Busy enabled:              ";
+    if (HasBusyOn())
+        out << "constantly enabled" << endl;
+    else
+        out << (HasBusyOff()?"constantly disabled":"normal") << endl;
+    out << "  Trigger line enabled:      " << (HasTriggerEnabled()?"enabled":"disabled") << endl;
+    out << "  Continous trigger enabled: " << (HasContTriggerEnabled()?"enabled":"disabled") << endl;
+    out << "  Data transmission socket:  " << (IsInSock17Mode()?"Socket 1-7":"Sockets 0") << endl;
+}
+
+void FAD::ChannelHeader::print(std::ostream &out) const
+{
+    out << "Chip=" << dec << Chip() << " Ch=" << Channel() << ":";
+    out << " StartCell=" << fStartCell;
+    out << " ROI=" << fRegionOfInterest << endl;
+}
Index: branches/FACT++_part_filenames/src/HeadersFAD.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFAD.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFAD.h	(revision 18732)
@@ -0,0 +1,393 @@
+#ifndef FACT_HeadersFAD
+#define FACT_HeadersFAD
+
+#ifdef __cplusplus
+#include <ostream>
+
+// For debugging
+#include <iostream>
+
+#include "ByteOrder.h"
+
+// ====================================================================
+
+namespace FAD
+{
+#endif
+    enum Enable
+    {
+        kCmdDrsEnable         = 0x0600,  // CMD_DENABLE/CMD_DISABLE
+        kCmdDwrite            = 0x0800,  // CMD_DWRITE_RUN/CMD_DWRITE_STOP
+        kCmdSclk              = 0x1000,  // CMD_SCLK_ON/OFF
+        kCmdSrclk             = 0x1500,  // CMD_SRCLK_ON/OFF
+        kCmdTriggerLine       = 0x1800,  // CMD_TRIGGERS_ON/CMD_TRIGGERS_OFF
+        kCmdContTrigger       = 0x1f00,
+        kCmdRun               = 0x2200,  // CMD_Start/Stop
+        kCmdBusyOff           = 0x2400,  //
+        kCmdBusyOn            = 0x3200,  //
+        kCmdResetEventCounter = 0x2A00,  //
+        kCmdSocket            = 0x3000,  // CMD_mode_command/CMD_mode_all_sockets
+        kCmdSingleTrigger     = 0xA000,  // CMD_Trigger
+    };
+
+    enum Commands
+    {
+        kCmdWriteExecute      = 0x0400,         // Configure FAD with the current config ram
+
+        kCmdWrite             = 0x0500,         // write to Config-RAM
+        kCmdWriteRoi          = kCmdWrite|0x00, // Baseaddress ROI-Values
+        kCmdWriteDac          = kCmdWrite|0x24, // Baseaddress DAC-Values
+
+        kCmdWriteRate         = kCmdWrite|0x2c, // Continous trigger rate
+        kCmdWriteRunNumberMSW = kCmdWrite|0x2d, // Run Number most  significant word
+        kCmdWriteRunNumberLSW = kCmdWrite|0x2e, // Run Number least significant word
+
+        /*
+         kCmdRead            = 0x0a00,         // read from Config-RAM
+         kCmdReadRoi         = kCmdRead|0x00,  // Baseaddress ROI-Values
+         kCmdReadDac         = kCmdRead|0x24,  // Baseaddress DAC-Values
+         */
+
+        kCmdPhaseIncrease   = 0x1200,         // CMD_PS_DIRINC
+        kCmdPhaseDecrease   = 0x1300,         // CMD_PS_DIRDEC
+        kCmdPhaseApply      = 0x1400,         // CMD_PS_DO
+        kCmdPhaseReset      = 0x1700,         // CMD_PS_RESET
+    };
+
+    namespace State
+    {
+        enum States
+        {
+            // State Machine states
+            kOffline = 1,   // StateMachineImp::kSM_UserMode
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kConfiguring1,
+            kConfiguring2,
+            kConfiguring3,
+            kConfigured,
+            kRunInProgress
+        };
+    }
+
+    enum FileFormat_t
+    {
+        kNone = 0,  // Nothing is written just some little output in the log-stream
+        kDebug,     // The contents of the headers are output to the console
+        kFits,      // FITS file written with streamer class ofits
+        kRaw,       // Raw binary streams are written
+        kCalib,     // DRS calibration in progress
+        kCfitsio,   // FITS file written with cfitsio
+        kZFits,     // Compressed FITS file written
+    };
+
+    enum
+    {
+        kMaxBins            = 1024,
+        kNumTemp            = 4,
+        kNumDac             = 8,
+        kNumChips           = 4,
+        kNumChannelsPerChip = 9,
+        kNumChannels        = kNumChips*kNumChannelsPerChip,
+    };
+
+    enum
+    {
+        kMaxRegAddr   = 0xff,    // Highest address in config-ram
+        kMaxRegValue  = 0xffff,
+        kMaxDacAddr   = kNumDac-1,
+        kMaxDacValue  = 0xffff,
+        kMaxRoiAddr   = kNumChannels-1,
+        kMaxRoiValue  = kMaxBins,
+        kMaxRunNumber = 0xffffffff,
+    };
+
+    enum
+    {
+        kDelimiterStart = 0xfb01,
+        kDelimiterEnd   = 0x04fe,
+    };
+
+    // --------------------------------------------------------
+
+    struct EventHeader
+    {
+#ifdef __cplusplus
+        enum Bits
+        {
+            kDenable       = 1<<11,
+            kDwrite        = 1<<10,
+            //kRefClkTooHigh = 1<< 9,
+            kRefClkTooLow  = 1<< 8,
+            kDcmLocked     = 1<< 7,
+            kDcmReady      = 1<< 6,
+            kSpiSclk       = 1<< 5,
+            kBusyOff       = 1<< 4,  // Busy continously off
+            kTriggerLine   = 1<< 3,  // Trigger line enabled
+            kContTrigger   = 1<< 2,  // Cont trigger enabled
+            kSock17        = 1<< 1,  // Socket 1-7 for data transfer
+            kBusyOn        = 1<< 0,  // Busy continously on
+        };
+
+        enum TriggerType
+        {
+            kLPext    = 0x0100,
+            kLPint    = 0x0200,
+            kPedestal = 0x0400,
+            kLPset    = 0x7800,
+            kTIM      = 0x8000,
+
+            kExt1     = 0x0001,
+            kExt2     = 0x0002,
+            kAll      = kLPext|kLPint|kTIM|kPedestal|kExt1|kExt2
+        };
+#endif
+        // Einmalig:     (new header changes entry in array --> send only if array changed)
+        // ----------------------------------
+        // Event builder stores an array with all available values.
+        // Disconnected boards are removed (replaced by def values)
+        // Any received header information is immediately put in the array.
+        // The array is transmitted whenever it changes.
+        // This will usually happen only very rarely when a new connection
+        // is opened.
+        //
+        // Array[40] of BoardId
+        // Array[40] of Version
+        // Array[40] of DNA
+
+        // Slow changes: (new header changes entry in array --> send only if arra changed)
+        // -------------------------------------------
+        // Event builder stores an array with all available values.
+        // Disconnected boards can be kept in the arrays.
+        // Any received header information is immediately put in the array.
+        // The array is transmitted whenever it changes.
+        //
+        // Connection status (disconnected, connecting, connected) / Array[40]
+        // Consistency of PLLLCK       / Array[  40] of PLLLCK
+        // Consistency of Trigger type / Array[  40] of trigger type
+        // Consistency of ROI          / Array[1440] of ROI
+        // Consistency of RefClock     / Array[  40] of ref clock
+        // Consistency of DAC values   / Array[ 400] of DAC values
+        // Consistency of run number   / Array[  40] of Run numbers
+
+        // Fast changes  (new header changes value --> send only if something changed)
+        // -------------------
+        // Event builder stores an internal array of all boards and
+        //  transmits the min/max values determined from the array
+        //  only if they have changed. Disconnected boards are not considered.
+        //
+        // Maximum/minimum Event counter of all boards in memory + board id
+        // Maximum/minimum time stamp    of all boards in memory + board id
+        // Maximum/minimum temp          of all boards in memory + board id
+
+        // Unknown:
+        // ------------------
+        // Trigger Id ?
+        // TriggerGeneratorPrescaler ?
+        // Number of Triggers to generate ?
+
+
+        // ------------------------------------------------------------
+
+        uint16_t fStartDelimiter;     // 0x04FE
+        uint16_t fPackageLength;
+        uint16_t fVersion;
+        uint16_t fStatus;
+        //
+        uint16_t fTriggerCrc;          // Receiver timeout / CRC ; 1 byte each
+        uint16_t fTriggerType;
+        uint32_t fTriggerCounter;
+        //
+        uint32_t fEventCounter;
+        uint32_t fFreqRefClock;
+        //
+        uint16_t fBoardId;
+        uint16_t fAdcClockPhaseShift;
+        uint16_t fNumTriggersToGenerate;
+        uint16_t fTriggerGeneratorPrescaler;
+        //
+        uint64_t fDNA; // Xilinx DNA
+        //
+        uint32_t fTimeStamp;
+        uint32_t fRunNumber;
+        //
+        int16_t  fTempDrs[kNumTemp];   // In units of 1/16 deg(?)
+        //
+        uint16_t fDac[kNumDac];
+        //
+#ifdef __cplusplus
+        EventHeader() { init(*this); }
+        EventHeader(const uint16_t *ptr)
+        {
+            *this = std::vector<uint16_t>(ptr, ptr+sizeof(EventHeader)/2);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fEventCounter);
+            Reverse(&fTriggerCounter);
+            Reverse(&fFreqRefClock);
+            Reverse(&fTimeStamp);
+            Reverse(&fRunNumber);
+
+            for (int i=0; i<8; i+=2)
+                std::swap(reinterpret_cast<uint8_t*>(&fDNA)[i],
+                          reinterpret_cast<uint8_t*>(&fDNA)[i+1]);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            EventHeader h(*this);
+
+            Reverse(&h.fEventCounter);
+            Reverse(&h.fFreqRefClock);
+            Reverse(&h.fTimeStamp);
+            Reverse(&h.fRunNumber);
+
+            for (int i=0; i<8; i+=2)
+                std::swap(reinterpret_cast<uint8_t*>(&h.fDNA)[i],
+                          reinterpret_cast<uint8_t*>(&h.fDNA)[i+1]);
+
+            return htoncpy(h);
+        }
+
+        bool operator==(const EventHeader &h) const
+        {
+            return
+                (fStatus&~(kSock17|kBusyOn)) == (h.fStatus&~(kSock17|kBusyOn)) &&
+                fRunNumber == h.fRunNumber &&
+                fEventCounter == h.fEventCounter &&
+                fAdcClockPhaseShift == h.fAdcClockPhaseShift &&
+                fTriggerGeneratorPrescaler == h.fTriggerGeneratorPrescaler &&
+                memcmp(fDac, h.fDac, sizeof(fDac))==0;
+        }
+        bool operator!=(const EventHeader &h) const { return !operator==(h); }
+
+        float GetTemp(int i) const { return fTempDrs[i]/16.; }
+
+        uint8_t PLLLCK() const         { return fStatus>>12; }
+
+        bool HasDenable() const        { return fStatus&kDenable; }
+        bool HasDwrite() const         { return fStatus&kDwrite; }
+//        bool IsRefClockTooHigh() const { return fStatus&kRefClkTooHigh; }
+        bool IsRefClockTooLow() const  { return fStatus&kRefClkTooLow; }
+        bool IsDcmLocked() const       { return fStatus&kDcmLocked; }
+        bool IsDcmReady() const        { return fStatus&kDcmReady; }
+        bool HasSpiSclk() const        { return fStatus&kSpiSclk; }
+        bool HasBusyOn() const         { return fStatus&kBusyOn; }
+        bool HasBusyOff() const        { return fStatus&kBusyOff; }
+        bool HasTriggerEnabled() const { return fStatus&kTriggerLine; }
+        bool HasContTriggerEnabled() const { return fStatus&kContTrigger; }
+        bool IsInSock17Mode() const    { return fStatus&kSock17; }
+
+        int  GetTriggerLogic() const { return (fTriggerType>>2)&0x3f; }
+        bool HasTriggerExt1() const  { return fTriggerType&kExt1; }
+        bool HasTriggerExt2() const  { return fTriggerType&kExt2; }
+        bool HasTIMsource() const    { return fTriggerType&kTIM; }
+        bool HasTriggerLPext() const { return fTriggerType&kLPext; }
+        bool HasTriggerLPint() const { return fTriggerType&kLPint; }
+        bool HasTriggerPed() const   { return fTriggerType&kPedestal; }
+        bool IsTriggerPhys() const   { return !(fTriggerType&kAll); }
+        int  GetTriggerLPset() const { return (fTriggerType&kLPset)>>11; }
+
+        uint16_t Crate() const { return fBoardId>>8; }
+        uint16_t Board() const { return fBoardId&0xff; }
+
+        uint16_t Id() const { return Crate()*10+Board(); }
+
+        void Enable(Bits pos, bool enable=true)
+        {
+            if (enable)
+                fStatus |= pos;
+            else
+                fStatus &= ~pos;
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+#endif
+
+    } __attribute__((__packed__));
+
+    struct ChannelHeader
+    {
+        uint16_t fId;
+        uint16_t fStartCell;
+        uint16_t fRegionOfInterest;
+        uint16_t fDummy;
+        // uint16_t fData[];
+
+#ifdef __cplusplus
+        ChannelHeader() { init(*this); }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            ChannelHeader h(*this);
+            return htoncpy(h);
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        uint16_t Chip() const    { return fId>>4; }
+        uint16_t Channel() const { return fId&0xf; }
+#endif
+    } __attribute__((__packed__));
+
+    // Package ends with:
+    //   0x4242
+    //   0x04fe
+
+    struct Configuration
+    {
+        bool     fDwrite;
+        bool     fDenable;
+        bool     fContinousTrigger;
+        uint16_t fTriggerRate;
+        uint16_t fRoi[FAD::kNumChannelsPerChip];
+        uint16_t fDac[FAD::kNumDac];
+
+#ifdef __cplusplus
+        Configuration() { init(*this); }
+#endif
+    };
+
+    struct RunDescription
+    {
+        uint32_t maxtime;
+        uint32_t maxevt;
+        uint32_t night;
+
+        std::string name;
+
+        Configuration reference;
+    };
+
+    // --------------------------------------------------------------------
+#ifdef __cplusplus
+    inline std::ostream &operator<<(std::ostream &out, const EventHeader &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const ChannelHeader &h)
+    {
+        h.print(out);
+        return out;
+    }
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersFSC.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFSC.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFSC.h	(revision 18732)
@@ -0,0 +1,51 @@
+#ifndef FACT_HeadersFSC
+#define FACT_HeadersFSC
+
+namespace FSC
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected    = 2,
+        };
+    }
+
+    enum {
+        kNumResistanceChannels = 64,
+        kNumResistanceRegs     =  8,
+        kNumVoltageChannels    = 84,
+        kNumVoltageRegs        = 11
+    };
+
+
+    struct BinaryOutput_t
+    {
+        uint8_t  ad7719_readings_since_last_muxing;
+        uint8_t  ad7719_current_channel;
+        uint32_t ad7719_current_reading;
+        uint8_t  ad7719_enables[kNumResistanceRegs];
+        uint8_t  ad7719_channels_ready[kNumResistanceRegs];
+        uint32_t ad7719_values[kNumResistanceChannels];
+        uint16_t ad7719_values_checksum;
+
+        uint8_t  adc_readings_since_last_muxing;
+        uint8_t  adc_current_channel;
+        uint16_t adc_current_reading;
+        uint8_t  adc_enables[kNumVoltageRegs];
+        uint8_t  adc_channels_ready[kNumVoltageRegs];
+        uint16_t adc_values[kNumVoltageChannels];
+        uint16_t adc_values_checksum;
+
+        uint8_t  ad7719_measured_all;    // treat it as a bool
+        uint8_t  adc_measured_all;       // treat it as a bool
+
+        uint8_t  app_reset_source;
+        uint32_t time_sec;
+        uint16_t time_ms;
+    } __attribute__((__packed__));
+}
+
+#endif
+
Index: branches/FACT++_part_filenames/src/HeadersFTM.cc
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFTM.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFTM.cc	(revision 18732)
@@ -0,0 +1,209 @@
+#include "HeadersFTM.h"
+
+#include <string.h>
+
+#include <iomanip>
+
+#include "Converter.h"
+
+using namespace std;
+
+void FTM::Header::print(std::ostream &out) const
+{
+    out << "State=" << std::dec << (fState&kFtmStates);
+    switch (fState&kFtmStates)
+    {
+    case kFtmIdle:    out << " [idle]";    break;
+    case kFtmConfig:  out << " [config]";  break;
+    case kFtmRunning: out << " [running]"; break;
+    case kFtmCalib:   out << " [calib]";   break;
+    }
+
+    out << "  Type=" << fType;
+    switch (fType)
+    {
+    case kHeader:      out << " [header]";    break;
+    case kStaticData:  out << " [static]";    break;
+    case kDynamicData: out << " [dynamic]";   break;
+    case kFtuList:     out << " [ftulist]";   break;
+    case kErrorList:   out << " [errorlist]"; break;
+    case kRegister:    out << " [register]";  break;
+    }
+
+    out << "  (len=" << fDataSize << ")";
+    out << "  Id=0x" << std::hex << fBoardId;
+    out << "  FW=" << fFirmwareId;
+    out << "  TriggerCounter=" << std::dec << fTriggerCounter;
+    out << "  TimeStamp=" << fTimeStamp;
+    if (fState&kFtmLocked)
+        out << "  [locked]";
+    else
+        out << "  [unlocked]";
+    out << std::endl;
+}
+
+void FTM::FtuResponse::print(std::ostream &out) const
+{
+    out << std::hex << "Pings=" << ((fPingAddr>>8)&0x3);
+    out << "  Addr=" << std::setw(2) << (fPingAddr&0x1f);
+    out << "  DNA=" << std::setw(16) << fDNA;
+    out << " ErrorCounter=" << std::dec << fErrorCounter << std::endl;
+}
+
+void FTM::FtuList::print(std::ostream &out) const
+{
+    out << "Number of boards responded: " << std::dec << fNumBoards << " (";
+    out << fNumBoardsCrate[0] << ", ";
+    out << fNumBoardsCrate[1] << ", ";
+    out << fNumBoardsCrate[2] << ", ";
+    out << fNumBoardsCrate[3] << ")" << std::endl;
+    out << "Active boards: " << std::hex;
+    out << std::setfill('0');
+    out << std::setw(4) << fActiveFTU[0];
+    out << std::setw(4) << fActiveFTU[1];
+    out << std::setw(4) << fActiveFTU[2];
+    out << std::setw(4) << fActiveFTU[3] << std::dec << std::endl;
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fFTU[c][b];
+        }
+}
+
+void FTM::DynamicDataBoard::print(std::ostream &out) const
+{
+    out << "Rate=" << std::setw(5) << fRateTotal << " (";
+    out << std::setw(5) << fRatePatch[0] << ", ";
+    out << std::setw(5) << fRatePatch[1] << ", ";
+    out << std::setw(5) << fRatePatch[2] << ", ";
+    out << std::setw(5) << fRatePatch[3] << ") ";
+    out << "Overflow=" << fOverflow << " ";
+    out << "CrcError=" << fCrcError << std::endl;
+}
+
+void FTM::DynamicData::print(std::ostream &out) const
+{
+    out << "OnTime=" << std::dec << fOnTimeCounter << " ";
+    out << "Temp=(";
+    out << fTempSensor[0] << ",";
+    out << fTempSensor[1] << ",";
+    out << fTempSensor[2] << ",";
+    out << fTempSensor[3] << ")" << std::endl;
+
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fBoard[c][b];
+        }
+}
+
+void FTM::StaticDataBoard::print(std::ostream &out) const
+{
+    out << "Enable=( " << std::hex;
+    for (int i=0; i<4; i++)
+        out << std::setw(4) << fEnable[i] << " ";
+    out << ")  " << std::dec;
+
+    out << "DAC A=" << fDAC[0] << " ";
+    out << "B=" << fDAC[1] << " ";
+    out << "C=" << fDAC[2] << " ";
+    out << "D=" << fDAC[3] << " ";
+    out << "H=" << fDAC[4] << "  ";
+
+    out << "Prescaling=" << fPrescaling << endl;
+}
+
+void FTM::StaticData::print(std::ostream &out) const
+{
+    out << std::hex;
+    out << "General settings: ";
+    if (IsEnabled(kTrigger))
+        out << " Trigger";
+    if (IsEnabled(kPedestal))
+        out << " Pedestal";
+    if (IsEnabled(kLPint))
+        out << " LPint";
+    if (IsEnabled(kLPext))
+        out << " LPext";
+    if (IsEnabled(kExt1))
+        out << " Ext1";
+    if (IsEnabled(kExt2))
+        out << " Ext2";
+    if (IsEnabled(kVeto))
+        out << " Veto";
+    if (IsEnabled(kClockConditioner))
+        out << " ClockCond";
+    out << " (" << fGeneralSettings << ")" << endl;
+    out << "Status LEDs:       " << fStatusLEDs << endl;
+    out << std::dec;
+    out << "TriggerInterval:   " << fTriggerInterval << " ms" << endl;
+    out << "TriggerSequence:   ";
+    out <<  (fTriggerSequence     &0x1f) << ":";
+    out << ((fTriggerSequence>> 5)&0x1f) << ":";
+    out << ((fTriggerSequence>>10)&0x1f) << " (LPint:LPext:PED)" << endl;
+    out << "Coinc. physics:    " << std::setw(2) << fMultiplicityPhysics << "/N  ";
+    out << fWindowPhysics*4+8 << "ns" << endl;
+    out << "Coinc. calib:      " << std::setw(2) << fMultiplicityCalib << "/N  ";
+    out << fWindowCalib*4+8 << "ns" << endl;
+    out << "Trigger delay:     " << fDelayTrigger*4+8 << "ns" << endl;
+    out << "Time marker delay: " << fDelayTimeMarker*4+8 << "ns" << endl;
+    out << "Dead time:         " << fDeadTime*4+8 << "ns" << endl;
+    out << "Light pulser (int): " << dec << (int)fIntensityLPint;
+    if (fEnableLPint&kGroup1)
+        out << " + Group1";
+    if (fEnableLPint&kGroup2)
+        out << " + Group2";
+    out << endl;
+    out << "Light pulser (ext): " << dec << (int)fIntensityLPext;
+    if (fEnableLPext&kGroup1)
+        out << " + Group1";
+    if (fEnableLPext&kGroup2)
+        out << " + Group2";
+    out << endl;
+    out << "Clock conditioner:";
+    out << std::hex << setfill('0');
+    for (int i=0; i<8; i++)
+        out << " " << setw(8) << fClockConditioner[i];
+    out << endl;
+    out << "Active FTUs:       ";
+    out << fActiveFTU[0] << " ";
+    out << fActiveFTU[1] << " ";
+    out << fActiveFTU[2] << " ";
+    out << fActiveFTU[3] << endl;
+    out << std::dec;
+
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fBoard[c][b];
+        }
+}
+
+void FTM::Error::print(std::ostream &out) const
+{
+    out << dec;
+    out << "ERROR: Num Calls   = " << fNumCalls;
+    if (fNumCalls==0)
+        out << " (too many)";
+    out << endl;
+    out << "       Delimiter   = " << (fDelimiter=='@'?"ok":"wrong") << endl;
+    out << "       Path        = ";
+    if (fSrcAddress==0xc0)
+        out << "FTM(192)";
+    else
+        out << "FTU(" << (fSrcAddress &0x3) << ":" << (fSrcAddress >>2) << ")";
+    out << " --> ";
+    if (fDestAddress==0xc0)
+        out << "FTM(192)";
+    else
+        out << "FTU(" << (fDestAddress&0x3) << ":" << (fDestAddress>>2) << ")";
+    out << endl;
+    out << "       FirmwareId  = " << hex << fFirmwareId << endl;
+    out << "       Command     = " << hex << fCommand << endl;
+    out << "       CRC counter = " << dec << fCrcErrorCounter << endl;
+    out << "       CRC         = " << hex << fCrcCheckSum << endl;
+    out << "       Data: " << Converter::GetHex<unsigned short>(fData, 0, false) << endl;
+}
Index: branches/FACT++_part_filenames/src/HeadersFTM.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFTM.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFTM.h	(revision 18732)
@@ -0,0 +1,826 @@
+#ifndef FACT_HeadersFTM
+#define FACT_HeadersFTM
+
+#include <ostream>
+
+// For debugging
+#include <iostream>
+
+#include "ByteOrder.h"
+
+// ====================================================================
+
+
+namespace FTM
+{
+    enum States
+    {
+        kFtmUndefined = 0,
+
+        // FTM internal states
+        kFtmIdle    = 1, ///< Trigger output disabled, configuration possible
+        kFtmConfig  = 2, ///< FTM and FTUs are being reconfigured
+        kFtmRunning = 3, ///< Trigger output enabled, configuration ignored
+        kFtmCalib   = 4,
+
+        kFtmStates  = 0x0ff,
+        kFtmLocked  = 0x100,
+
+    };
+
+    // idle:    not locked: 0x2711
+    // running: not locked: 0x2713
+
+    namespace State
+    {
+        enum StateMachine
+        {
+            kDisconnected = 1,
+            kConnected,
+            kIdle,
+            kValid,
+            kTriggerOn,
+            kConfiguring1,
+            kConfiguring2,
+            kConfigured1,
+            kConfigured2,
+
+            kConfigError1 = 0x101,
+            kConfigError2 = 0x102,
+            //kConfigError3 = 0x103,
+        };
+    }
+
+    /// Command codes for FTM communication
+    enum Commands
+    {
+        // First word
+        kCmdRead           = 0x0001, ///< Request data
+        kCmdWrite          = 0x0002, ///< Send data
+        kCmdStartRun       = 0x0004, ///< Enable the trigger output
+        kCmdStopRun        = 0x0008, ///< Disable the trigger output
+        kCmdPing           = 0x0010, ///< Ping all FTUs (get FTU list)
+        kCmdCrateReset     = 0x0020, ///< Reboot (no power cycle) all FTUs and FADs of one crate
+        kCmdDisableReports = 0x0040, ///< Disable transmission of rate-reports (dynamic data)
+        kCmdConfigFTU      = 0x0080, ///< Configure single FTU board
+        kCmdToggleLed      = 0xc000,
+
+        // second word for read and write
+        kCmdStaticData     = 0x0001, ///< Specifies that static (configuration) data is read/written
+        kCmdDynamicData    = 0x0002, ///< Specifies that dynamic data is read/written
+        kCmdRegister       = 0x0004, ///< Specifies that a register is read/written
+
+        // second word for StartRun
+        kStartRun          = 0x0001, ///< ...until kCmdStopRun
+        kTakeNevents       = 0x0002, ///< ...fixed number of events
+
+        // second word for kCmdCrateReset
+        kResetCrate0       = 0x0001,
+        kResetCrate1       = 0x0002,
+        kResetCrate2       = 0x0004,
+        kResetCrate3       = 0x0008,
+    };
+
+
+    /// Types sent in the header of the following data
+    enum Types
+    {
+        kHeader      = 0,  ///< Local extension to identify a header in fCounter
+        kStaticData  = 1,  ///< Static (configuration) data
+        kDynamicData = 2,  ///< Dynamic data (rates)
+        kFtuList     = 3,  ///< FTU list (answer of ping)
+        kErrorList   = 4,  ///< Error list (error when FTU communication failed)
+        kRegister    = 5,  ///< A requested register value
+    };
+
+    // --------------------------------------------------------------------
+
+    enum Delimiter
+    {
+        kDelimiterStart = 0xfb01, ///< Start delimiter send before each header
+        kDelimiterEnd   = 0x04fe  ///< End delimiter send after each data block
+    };
+
+    struct Header
+    {
+        uint16_t fDelimiter;      ///< Start delimiter
+        uint16_t fType;           ///< Type of the data to be received after the header
+        uint16_t fDataSize;       ///< Size in words to be received after the header (incl end delim.)
+        uint16_t fState;          ///< State of the FTM central state machine
+        uint64_t fBoardId;        ///< FPGA device DNA (unique chip id)
+        uint16_t fFirmwareId;     ///< Version number
+        uint32_t fTriggerCounter; ///< FTM internal counter of all trigger decision independant of trigger-line enable/disable (reset: start/stop run)
+        uint64_t fTimeStamp;      ///< Internal counter (micro-seconds, reset: start/stop run)
+
+        Header() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            Header h(*this);
+
+            Reverse(&h.fBoardId);
+            Reverse(&h.fTriggerCounter);
+            Reverse(&h.fTimeStamp);
+
+            return htoncpy(h);
+        }
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fBoardId);
+            Reverse(&fTriggerCounter);
+            Reverse(&fTimeStamp);
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct DimPassport
+    {
+        uint64_t fBoardId;
+        uint16_t fFirmwareId;
+
+        DimPassport(const Header &h) :
+            fBoardId(h.fBoardId),
+            fFirmwareId(h.fFirmwareId)
+        {
+        }
+    } __attribute__((__packed__));
+
+    /*
+    struct DimTriggerCounter
+    {
+        uint64_t fTimeStamp;
+        uint32_t fTriggerCounter;
+
+        DimTriggerCounter(const Header &h) :
+            fTimeStamp(h.fTimeStamp),
+            fTriggerCounter(h.fTriggerCounter)
+       {
+        }
+    } __attribute__((__packed__));
+    */
+
+    struct StaticDataBoard
+    {
+        uint16_t fEnable[4];   /// enable of 4x9 pixels coded as 4x9bits
+        uint16_t fDAC[5];      /// 0-3 (A-D) Threshold of patches, 4 (H) Threshold for N out of 4 (12 bit each)
+        uint16_t fPrescaling;  /// Internal readout time of FTUs for trigger counter
+
+        StaticDataBoard() { init(*this); }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct StaticData
+    {
+        enum Limits
+        {
+            kMaxMultiplicity    = 40,      ///< Minimum required trigger multiplicity
+            kMaxWindow          = 0xf,     ///< (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+            kMaxDeadTime        = 0xffff,  ///< (4ns * x + 8ns)
+            kMaxDelayTimeMarker = 0x3ff,   ///< (4ns * x + 8ns)
+            kMaxDelayTrigger    = 0x3ff,   ///< (4ns * x + 8ns)
+            kMaxTriggerInterval = 0x3ff,   ///< 
+            kMaxIntensity       = 0x7f,
+            kMaxSequence        = 0x1f,
+            kMaxDAC             = 0xfff,
+            kMaxAddr            = 0xfff,
+            kMaxPatchIdx        = 159,
+            kMaxPixelIdx        = 1439,
+            kMaskSettings       = 0xf,
+            kMaskLEDs           = 0xf,
+        };
+
+        enum GeneralSettings
+        {
+            kTrigger    = 0x80,  ///< Physics trigger decision (PhysicTrigger)
+            kPedestal   = 0x40,  ///< Pedestal trigger (artifical)
+            kLPint      = 0x20,  ///< Enable artificial trigger after light pulse (LP2)
+            kLPext      = 0x10,  ///< Enable trigger decision after light pulse (CalibrationTrigger, LP1)
+            kExt2       = 0x08,  ///< External trigger signal 2
+            kExt1       = 0x04,  ///< External trigger signal 1
+            kVeto       = 0x02,  ///< Veto trigger decision / artifical triggers
+            kClockConditioner = 0x01,  ///< Select clock conditioner frequency (1) / time marker (0) as output
+        };
+
+        enum LightPulserEnable
+        {
+            kGroup1 = 0x40,
+            kGroup2 = 0x80,
+        };
+
+        uint16_t fGeneralSettings;         /// Enable for different trigger types / select for TIM/ClockConditioner output (only 8 bit used)
+        uint16_t fStatusLEDs;              /// only 8 bit used
+        uint16_t fTriggerInterval;         /// [ms] Interval between two artificial triggers (no matter which type) minimum 1ms, 10 bit
+        uint16_t fTriggerSequence;         /// Ratio between trigger types send as artificial trigger (in this order) 3x5bit
+        uint8_t  fIntensityLPext;          /// Intensity of LEDs (0-127)
+        uint8_t  fEnableLPext;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fIntensityLPint;          /// Intensity of LEDs (0-127)
+        uint8_t  fEnableLPint;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint32_t fDummy0;
+        uint16_t fMultiplicityPhysics;     /// Required trigger multiplicity for physcis triggers (0-40)
+        uint16_t fMultiplicityCalib;       /// Required trigger multiplicity calibration (LPext) triggers (0-40)
+        uint16_t fDelayTrigger;            /// (4ns * x + 8ns) FTM internal programmable delay between trigger decision and output
+        uint16_t fDelayTimeMarker;         /// (4ns * x + 8ns) FTM internal programmable delay between trigger descision and time marker output
+        uint16_t fDeadTime;                /// (4ns * x + 8ns) FTM internal programmable dead time after trigger decision
+        uint32_t fClockConditioner[8];     /// R0, R1, R8, R9, R11, R13, R14, R15
+        uint16_t fWindowPhysics;           /// (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+        uint16_t fWindowCalib;             /// (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+        uint16_t fDummy1;
+
+        StaticDataBoard fBoard[4][10];      // 4 crates * 10 boards (Crate0/FTU0 == readout time of FTUs)
+
+        uint16_t fActiveFTU[4];             // 4 crates * 10 bits   (FTU enable)
+
+        StaticData() { init(*this); }
+        StaticData(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            for (int i=0; i<8; i++)
+                Reverse(fClockConditioner+i);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            StaticData d(*this);
+            for (int i=0; i<8; i++)
+                Reverse(d.fClockConditioner+i);
+
+            return htoncpy(d);
+        }
+
+        bool operator==(StaticData d) const
+        {
+            for (int i=0; i<4; i++)
+                for (int j=0; j<10; j++)
+                    memcpy(d.fBoard[i][j].fDAC, fBoard[i][j].fDAC, sizeof(uint16_t)*5);
+            return memcmp(this, &d, sizeof(StaticData))==0;
+        }
+
+        bool valid() const { static StaticData empty; return memcmp(this, &empty, sizeof(FTM::StaticData))!=0; }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        StaticDataBoard &operator[](int i) { return fBoard[i/10][i%10]; }
+        const StaticDataBoard &operator[](int i) const { return fBoard[i/10][i%10]; }
+
+        void EnableFTU(int i)  { fActiveFTU[i/10] |=  (1<<(i%10)); }
+        void DisableFTU(int i) { fActiveFTU[i/10] &= ~(1<<(i%10)); }
+
+        void EnableAllFTU()    { for (int i=0; i<4; i++) fActiveFTU[i] = 0x3ff; }
+        void DisableAllFTU()   { for (int i=0; i<4; i++) fActiveFTU[i] = 0;     }
+
+        void EnableLPint(LightPulserEnable group, bool enable)
+        {
+            if (enable)
+                fEnableLPint |= group;
+            else
+                fEnableLPint &= ~group;
+        }
+
+        void EnableLPext(LightPulserEnable group, bool enable)
+        {
+            if (enable)
+                fEnableLPext |= group;
+            else
+                fEnableLPext &= ~group;
+        }
+
+        void ToggleFTU(int i)  { fActiveFTU[i/10] ^= (1<<(i%10)); }
+
+        void Enable(GeneralSettings type, bool enable)
+        {
+	    if (enable)
+		fGeneralSettings |= uint16_t(type);
+	    else
+                fGeneralSettings &= ~uint16_t(type);
+        }
+
+        bool IsEnabled(GeneralSettings type) const { return fGeneralSettings&uint16_t(type); }
+
+        uint16_t *EnablePixel(int idx, bool enable)
+        {
+            const int pixel = idx%9;
+            const int patch = (idx/9)%4;
+            const int board = (idx/9)/4;
+
+            uint16_t &pix = fBoard[board/10][board%10].fEnable[patch];
+
+            if (enable)
+                pix |= (1<<pixel);
+            else
+                pix &= ~(1<<pixel);
+
+            return &pix;
+        }
+
+        void EnablePatch(int idx, bool enable)
+        {
+            const int patch = idx%4;
+            const int board = idx/4;
+
+            fBoard[board/10][board%10].fEnable[patch] = enable ? 0x1ff : 0;
+        }
+
+        void EnableAllPixel()
+        {
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    for (int p=0; p<4; p++)
+                        fBoard[c][b].fEnable[p] = 0x1ff;
+        }
+
+        bool Enabled(uint16_t idx) const
+        {
+            const int pixel = idx%9;
+            const int patch = (idx/9)%4;
+            const int board = (idx/9)/4;
+
+            return (fBoard[board/10][board%10].fEnable[patch]>>pixel)&1;
+        }
+
+        uint8_t GetSequencePed() const   { return (fTriggerSequence>>10)&0x1f; }
+        uint8_t GetSequenceLPint() const { return (fTriggerSequence>> 5)&0x1f; }
+        uint8_t GetSequenceLPext() const { return (fTriggerSequence)    &0x1f; }
+
+        void SetSequence(uint8_t ped, uint8_t lpint, uint8_t lpext)
+        {
+            fTriggerSequence = ((ped&0x1f)<<10)|((lpint&0x1f)<<5)|(lpext&0x1f);
+
+            Enable(kPedestal, ped  >0);
+            Enable(kLPext,    lpext>0);
+            Enable(kLPint,    lpint>0);
+        }
+
+        void SetClockRegister(const uint64_t reg[])
+        {
+            for (int i=0; i<8; i++)
+                fClockConditioner[i] = reg[i];
+        }
+
+        void SetPrescaling(uint16_t val)
+        {
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fBoard[c][b].fPrescaling = val;
+        }
+
+    } __attribute__((__packed__));
+
+    // DimStructures must be a multiple of two... I don't know why
+    struct DimStaticData
+    {
+        uint64_t fTimeStamp;
+        //8
+        uint16_t fGeneralSettings;         // only 8 bit used
+        uint16_t fStatusLEDs;              // only 8 bit used
+        uint64_t fActiveFTU;               // 40 bits in row
+        //20
+        uint16_t fTriggerInterval;         // only 10 bit used
+        //22
+        uint16_t fTriggerSeqLPint;         // only 5bits used
+        uint16_t fTriggerSeqLPext;         // only 5bits used
+        uint16_t fTriggerSeqPed;           // only 5bits used
+        // 28
+        uint8_t  fEnableLPint;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fEnableLPext;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fIntensityLPint;          /// Intensity of LEDs (0-127)
+        uint8_t  fIntensityLPext;          /// Intensity of LEDs (0-127)
+        //32
+        uint16_t fMultiplicityPhysics;      // 0-40
+        uint16_t fMultiplicityCalib;        // 0-40
+        //36
+        uint16_t fWindowPhysics;
+        uint16_t fWindowCalib;
+        //40
+        uint16_t fDelayTrigger;
+        uint16_t fDelayTimeMarker;
+        uint32_t fDeadTime;
+        //48
+        uint32_t fClockConditioner[8];
+        //64
+        uint16_t fEnable[90];  // 160*9bit = 180byte
+        uint16_t fThreshold[160];
+        uint16_t fMultiplicity[40];     // N out of 4
+        uint16_t fPrescaling[40];
+        // 640+64 = 704
+
+        bool HasTrigger() const     { return fGeneralSettings & StaticData::kTrigger; }
+        bool HasPedestal() const    { return fGeneralSettings & StaticData::kPedestal; }
+        bool HasLPext() const       { return fGeneralSettings & StaticData::kLPext; }
+        bool HasLPint() const       { return fGeneralSettings & StaticData::kLPint; }
+        bool HasExt2() const        { return fGeneralSettings & StaticData::kExt2; }
+        bool HasExt1() const        { return fGeneralSettings & StaticData::kExt1; }
+        bool HasVeto() const        { return fGeneralSettings & StaticData::kVeto; }
+        bool HasClockConditioner() const { return fGeneralSettings & StaticData::kClockConditioner; }
+
+        bool HasLPextG1() const { return fEnableLPext&StaticData::kGroup1; }
+        bool HasLPextG2() const { return fEnableLPext&StaticData::kGroup2; }
+        bool HasLPintG1() const { return fEnableLPint&StaticData::kGroup1; }
+        bool HasLPintG2() const { return fEnableLPint&StaticData::kGroup2; }
+
+        bool IsActive(int i) const { return fActiveFTU&(uint64_t(1)<<i); }
+        bool IsEnabled(int i) const { return fEnable[i/16]&(1<<(i%16)); }
+
+        DimStaticData() { memset(this, 0, sizeof(DimStaticData)); }
+
+        DimStaticData(const Header &h, const StaticData &d) :
+            fTimeStamp(h.fTimeStamp),
+            fGeneralSettings(d.fGeneralSettings),
+            fStatusLEDs(d.fStatusLEDs),
+            fActiveFTU( uint64_t(d.fActiveFTU[0])      |
+                       (uint64_t(d.fActiveFTU[1])<<10) |
+                       (uint64_t(d.fActiveFTU[2])<<20) |
+                       (uint64_t(d.fActiveFTU[3])<<30)),
+            fTriggerInterval(d.fTriggerInterval),
+            fTriggerSeqLPint((d.fTriggerSequence>>5)&0x1f),
+            fTriggerSeqLPext((d.fTriggerSequence)&0x1f),
+            fTriggerSeqPed((d.fTriggerSequence>>10)&0x1f),
+            fEnableLPint(d.fEnableLPint),
+            fEnableLPext(d.fEnableLPext),
+            fIntensityLPint(d.fIntensityLPint),
+            fIntensityLPext(d.fIntensityLPext),
+            fMultiplicityPhysics(d.fMultiplicityPhysics),
+            fMultiplicityCalib(d.fMultiplicityCalib),
+            fWindowPhysics(d.fWindowPhysics*4+8),
+            fWindowCalib(d.fWindowCalib*4+8),
+            fDelayTrigger(d.fDelayTrigger*4+8),
+            fDelayTimeMarker(d.fDelayTimeMarker*4+8),
+            fDeadTime(uint32_t(d.fDeadTime)*4+8)
+        {
+            memcpy(fClockConditioner, d.fClockConditioner, sizeof(uint32_t)*8);
+
+            uint16_t src[160];
+            for (int i=0; i<40; i++)
+            {
+                for (int j=0; j<4; j++)
+                {
+                    src[i*4+j] = d[i].fEnable[j];
+                    fThreshold[i*4+j] = d[i].fDAC[j];
+                }
+
+                fMultiplicity[i] = d[i].fDAC[4];
+                fPrescaling[i] = d[i].fPrescaling+1;
+            }
+            bitcpy(fEnable, 90, src, 160, 9);
+        }
+
+    } __attribute__((__packed__));
+
+
+    struct DynamicDataBoard
+    {
+        uint32_t fRatePatch[4];   // Patch 0,1,2,3
+        uint32_t fRateTotal;      // Sum
+
+        uint16_t fOverflow;       // Patches: bits 0-3, total 4
+        uint16_t fCrcError;
+
+        void print(std::ostream &out) const;
+
+        void reverse()
+        {
+            for (int i=0; i<4; i++)
+                Reverse(fRatePatch+i);
+
+            Reverse(&fRateTotal);
+        }
+
+        uint32_t &operator[](int i) { return fRatePatch[i]; }
+
+    }  __attribute__((__packed__));
+
+
+    struct DynamicData
+    {
+        uint64_t fOnTimeCounter;
+        uint16_t fTempSensor[4];  // U45, U46, U48, U49
+
+        DynamicDataBoard fBoard[4][10];      // 4 crates * 10 boards
+
+        DynamicData() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            DynamicData d(*this);
+
+            Reverse(&d.fOnTimeCounter);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    d.fBoard[c][b].reverse();
+
+            return htoncpy(d);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fOnTimeCounter);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fBoard[c][b].reverse();
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        DynamicDataBoard &operator[](int i) { return fBoard[i/10][i%10]; }
+        const DynamicDataBoard &operator[](int i) const { return fBoard[i/10][i%10]; }
+
+    } __attribute__((__packed__));
+
+
+    struct DimDynamicData
+    {
+        uint64_t fTimeStamp;
+
+        uint64_t fOnTimeCounter;
+        float    fTempSensor[4];
+
+        uint32_t fRatePatch[160];
+
+        uint32_t fRateBoard[40];
+        uint16_t fRateOverflow[40];
+
+        uint16_t fPrescaling[40];
+
+        uint16_t fCrcError[40];
+
+        uint16_t fState;
+
+        DimDynamicData(const Header &h, const DynamicData &d, const StaticData &s) :
+            fTimeStamp(h.fTimeStamp),
+            fOnTimeCounter(d.fOnTimeCounter),
+            fState(h.fState)
+        {
+            for (int i=0; i<4; i++)
+                fTempSensor[i] = d.fTempSensor[i];
+
+            for (int i=0; i<40; i++)
+            {
+                fRateBoard[i]    = d[i].fRateTotal;
+                fRateOverflow[i] = d[i].fOverflow;
+                fCrcError[i]     = d[i].fCrcError;
+                for (int j=0; j<4; j++)
+                    fRatePatch[i*4+j] = d[i].fRatePatch[j];
+
+                fPrescaling[i] = s[i].fPrescaling+1;
+            }
+        }
+
+    } __attribute__((__packed__));
+
+    struct DimTriggerRates
+    {
+        uint64_t fTimeStamp;
+        uint64_t fOnTimeCounter;
+        uint32_t fTriggerCounter;
+        float    fTriggerRate;
+        float    fBoardRate[40];
+        float    fPatchRate[160];
+
+        float fElapsedTime;
+        float fOnTime;
+
+        DimTriggerRates() { memset(this, 0, sizeof(DimTriggerRates)); }
+
+        DimTriggerRates(const Header &h, const DynamicData &d, const StaticData &s, float rate, float et, float ot) :
+            fTimeStamp(h.fTimeStamp), fOnTimeCounter(d.fOnTimeCounter),
+            fTriggerCounter(h.fTriggerCounter), fTriggerRate(rate),
+            fElapsedTime(et), fOnTime(ot)
+        {
+            for (int i=0; i<40; i++)
+            {
+                if ((d[i].fOverflow>>4)&1)
+                    fBoardRate[i] = float(UINT32_MAX+1)*2/(s[i].fPrescaling+1);
+                else
+                    fBoardRate[i] = float(d[i].fRateTotal)*2/(s[i].fPrescaling+1);
+
+                // FIXME: Include fCrcError in calculation
+                //fRateOverflow[i] = d[i].fOverflow;
+                for (int j=0; j<4; j++)
+                    if ((d[i].fOverflow>>j)&1)
+                        fPatchRate[i*4+j] = float(UINT32_MAX+1)*2/(s[i].fPrescaling+1);
+                    else
+                        fPatchRate[i*4+j] = float(d[i].fRatePatch[j])*2/(s[i].fPrescaling+1);
+            }
+        }
+
+    } __attribute__((__packed__));
+
+
+    struct FtuResponse
+    {
+        uint16_t fPingAddr;       // Number of Pings and addr (pings= see error)
+        uint64_t fDNA;
+        uint16_t fErrorCounter;   //
+
+        void reverse() { Reverse(&fDNA); }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct FtuList
+    {
+        uint16_t fNumBoards;         /// Total number of boards responded
+        uint16_t fNumBoardsCrate[4]; /// Num of board responded in crate 0-3
+        uint16_t fActiveFTU[4];      /// List of active FTU boards in crate 0-3
+
+        FtuResponse fFTU[4][10];
+
+        FtuList() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            FtuList d(*this);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    d.fFTU[c][b].reverse();
+
+            return htoncpy(d);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fFTU[c][b].reverse();
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        FtuResponse &operator[](int i) { return fFTU[i/10][i%10]; }
+        const FtuResponse &operator[](int i) const { return fFTU[i/10][i%10]; }
+
+    } __attribute__((__packed__));
+
+    struct DimFtuList
+    {
+        uint64_t fTimeStamp;
+        uint64_t fActiveFTU;
+
+        uint16_t fNumBoards;          /// Number of boards answered in total
+        uint8_t  fNumBoardsCrate[4];  /// Number of boards answered per crate
+
+        uint64_t fDNA[40];            /// DNA of FTU board
+        uint8_t  fAddr[40];           /// Address of FTU board
+        uint8_t  fPing[40];           /// Number of pings until response (same as in Error)
+
+        DimFtuList(const Header &h, const FtuList &d) :
+            fTimeStamp(h.fTimeStamp),
+            fActiveFTU( uint64_t(d.fActiveFTU[0])      |
+                       (uint64_t(d.fActiveFTU[1])<<10) |
+                       (uint64_t(d.fActiveFTU[2])<<20) |
+                       (uint64_t(d.fActiveFTU[3])<<30)),
+            fNumBoards(d.fNumBoards)
+        {
+            for (int i=0; i<4; i++)
+                fNumBoardsCrate[i] = d.fNumBoardsCrate[i];
+
+            for (int i=0; i<40; i++)
+            {
+                fDNA[i]  =  d[i].fDNA;
+                fAddr[i] =  d[i].fPingAddr&0x3f;
+                fPing[i] = (d[i].fPingAddr>>8)&0x3;
+            }
+        }
+
+        bool IsActive(int i) const { return fActiveFTU&(uint64_t(1)<<i); }
+
+    } __attribute__((__packed__));
+
+
+    struct Error
+    {
+        uint16_t fNumCalls;   // 0=error, >1 needed repetition but successfull
+
+        uint16_t fDelimiter;
+        uint16_t fDestAddress;
+        uint16_t fSrcAddress;
+        uint16_t fFirmwareId;
+        uint16_t fCommand;
+        uint16_t fData[21];
+        uint16_t fCrcErrorCounter;
+        uint16_t fCrcCheckSum;
+
+        Error() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            return htoncpy(*this);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec) { ntohcpy(vec, *this); }
+
+        void clear() { reset(*this); }
+
+        uint16_t &operator[](int idx) { return fData[idx]; }
+        const uint16_t &operator[](int idx) const { return fData[idx]; }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct DimError
+    {
+        uint64_t fTimeStamp;
+        Error    fError;
+
+        DimError(const Header &h, const Error &e) :
+            fTimeStamp(h.fTimeStamp),
+            fError(e)
+        {
+            fError.fDestAddress = (e.fDestAddress&0x3)*10 + ((e.fDestAddress>>2)&0xf);
+            fError.fSrcAddress  = (e.fSrcAddress &0x3)*10 + ((e.fSrcAddress >>2)&0xf);
+        }
+
+    }  __attribute__((__packed__));
+
+    /*
+    struct Command
+    {
+        uint16_t fStartDelimiter;
+        uint16_t fCommand;
+        uint16_t fParam[3];
+
+        Command() { init(*this); }
+
+        void HtoN() { hton(*this); }
+        void NtoH() { ntoh(*this); }
+
+        void operator=(const std::vector<uint16_t> &vec) { ntohcpy(vec, *this); }
+
+        void clear() { reset(*this); }
+
+
+     } __attribute__((__packed__));
+    */
+
+    // --------------------------------------------------------------------
+
+    inline std::ostream &operator<<(std::ostream &out, const FtuResponse &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const Header &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+
+    inline std::ostream &operator<<(std::ostream &out, const FtuList &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const DynamicDataBoard &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const DynamicData &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const StaticDataBoard &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const StaticData &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const Error &h)
+    {
+        h.print(out);
+        return out;
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersFeedback.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersFeedback.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersFeedback.h	(revision 18732)
@@ -0,0 +1,30 @@
+#ifndef FACT_HeadersFeedback
+#define FACT_HeadersFeedback
+
+namespace Feedback
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+
+            kCalibrating,
+            kCalibrated,
+
+            kWaitingForData,
+            kInProgress,
+
+            kWarning,
+            kCritical,
+            kOnStandby,
+
+
+        };
+    }
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersGCN.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersGCN.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersGCN.h	(revision 18732)
@@ -0,0 +1,149 @@
+#ifndef FACT_HeadersGCN
+#define FACT_HeadersGCN
+
+namespace GCN
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected    = 2,
+            kValid        = 3,
+        };
+
+    }
+
+    struct PaketType_t
+    {
+        int16_t type;
+        string  name;
+        string  description;
+    };
+
+    static const PaketType_t kTypes[] =
+    {   // inactive, ACTIVE[1], T-Only[-], in-work[+]
+        { 1,   /*   */ "GRB_COORDS",	           "BATSE Trigger coords (the first GCN Notice Type)" },
+        { 2,   /* 1 */ "TEST_COORDS",	           "Test coords" },
+        { 3,   /* 1 */ "IM_ALIVE",	           "I'm alive socket packet every 60 sec" },
+        { 4,   /* 1 */ "KILL_SOCKET",	           "Kill a socket connection" },
+        { 11,  /*   */ "MAXBC",	                   "MAXC1/BC" },
+        { 21,  /*   */ "BRAD_COORDS",	           "Special Test coords packet for BRADFORD" },
+        { 22,  /*   */ "GRB_FINAL",	           "Final BATSE coords" },
+        { 24,  /*   */ "HUNTS_SRC",	 	   "Huntsville LOCBURST GRB coords (HitL)" },
+        { 25,  /*   */ "ALEXIS_SRC",	           "ALEXIS Transient coords" },
+        { 26,  /*   */ "XTE_PCA_ALERT",	           "XTE-PCA ToO Observation Scheduled" },
+        { 27,  /*   */ "XTE_PCA_SRC",	           "XTE-PCA GRB coords" },
+        { 28,  /*   */ "XTE_ASM_ALERT",	           "XTE-ASM Alert" },
+        { 29,  /*   */ "XTE_ASM_SRC",	           "XTE-ASM GRB coords" },
+        { 30,  /*   */ "COMPTEL_SRC",	           "COMPTEL GRB coords" },
+        { 31,  /*   */ "IPN_RAW",	           "IPN_RAW GRB annulus coords (position is center of Annulus)" },
+        { 32,  /*   */ "IPN_SEG",	           "IPN+POS GRB annulus seg (kind of a cheat to allow error filter)" },
+        { 33,  /*   */ "SAX_WFC_ALERT",	           "SAX-WFC Alert" },
+        { 34,  /*   */ "SAX_WFC_SRC",	 	   "SAX-WFC GRB coords" },
+        { 35,  /*   */ "SAX_NFI_ALERT",	           "SAX-NFI Alert" },
+        { 36,  /*   */ "SAX_NFI_SRC",	           "SAX-NFI GRB coords" },
+        { 37,  /*   */ "XTE_ASM_TRANS",	 	   "XTE-ASM TRANSIENT coords" },
+        { 38,  /* 1 */ "spare38",	           "(spare; used for s/w development testing)" },
+        { 39,  /* 1 */ "IPN_POS",	           "IPN Position coords" },
+        { 40,  /*   */ "HETE_ALERT_SRC",	   "HETE Trigger Alert" },
+        { 41,  /*   */ "HETE_UPDATE_SRC",	   "HETE Update position (multiples)" },
+        { 42,  /*   */ "HETE_FINAL_SRC",	   "HETE Last/Final position" },
+        { 43,  /*   */ "HETE_GNDANA_SRC",	   "HETE position from Ground Analysis (HitL)" },
+        { 44,  /* 1 */ "HETE_TEST",	           "HETE TEST" },
+        { 45,  /* 1 */ "GRB_CNTRPART",	           "GRB Counterpart coordinates" },
+        { 46,  /* 1 */ "SWIFT_TOO_FOM",	           "SWIFT TOO-form of the FOM" },
+        { 47,  /* 1 */ "SWIFT_TOO_SC_SLEW",	   "SWIFT TOO-form of the SC_SLEW" },
+        { 48,  /* - */ "DOW_TOD",	           "Day-of-Week Time-of-Day end2end testing" },
+        { 50,  /* 1 */ "spare50",	           "(spare; not yet assigned)" },
+        { 51,  /* 1 */ "INTEGRAL_POINTDIR",	   "INTEGRAL Pointing Direction" },
+        { 52,  /* 1 */ "INTEGRAL_SPIACS",	   "INTEGRAL SPIACS" },
+        { 53,  /* 1 */ "INTEGRAL_WAKEUP",	   "INTEGRAL Wakeup" },
+        { 54,  /* 1 */ "INTEGRAL_REFINED",	   "INTEGRAL Refined" },
+        { 55,  /* 1 */ "INTEGRAL_OFFLINE",	   "INTEGRAL Offline (HitL)" },
+        { 56,  /* 1 */ "INTEGRAL_WEAK",	           "INTEGRAL Weak" },
+        { 57,  /* + */ "AAVSO",	                   "AAVSO" },
+        { 58,  /*   */ "MILAGRO_POS",	           "MILAGRO Position" },
+        { 59,  /* 1 */ "KONUS_LC",	           "KONUS Lightcurve" },
+        { 60,  /* 1 */ "SWIFT_BAT_GRB_ALERT",	   "BAT ALERT. Never transmitted by the s/c." },
+        { 61,  /* 1 */ "SWIFT_BAT_GRB_POS_ACK",	   "BAT GRB Position Acknowledge" },
+        { 62,  /* 1 */ "SWIFT_BAT_GRB_POS_NACK",   "BAT GRB Position NOT_Ack (pos not found)." },
+        { 63,  /* 1 */ "SWIFT_BAT_GRB_LC",	   "BAT GRB Lightcurve" },
+        { 64,  /* - */ "SWIFT_BAT_SCALEDMAP",	   "BAT Scaled Map" },
+        { 65,  /* 1 */ "SWIFT_FOM_OBS",	           "BAT FOM to Observe (FOM_2OBSAT)" },
+        { 66,  /* 1 */ "SWIFT_SC_SLEW",	           "BAT S/C to Slew (FOSC_2OBSAT)" },
+        { 67,  /* 1 */ "SWIFT_XRT_POSITION",	   "XRT Position" },
+        { 68,  /* - */ "SWIFT_XRT_SPECTRUM",	   "XRT Spectrum" },
+        { 69,  /* 1 */ "SWIFT_XRT_IMAGE",	   "XRT Image (aka postage stamp)" },
+        { 70,  /* - */ "SWIFT_XRT_LC",	           "XRT Lightcurve (aka Prompt)" },
+        { 71,  /* 1 */ "SWIFT_XRT_CENTROID",	   "XRT Centroid Error (Pos Nack)" },
+        { 72,  /* 1 */ "SWIFT_UVOT_DBURST",	   "UVOT DarkBurst (aka Neighbor, aka GeNie)" },
+        { 73,  /* 1 */ "SWIFT_UVOT_FCHART",	   "UVOT Finding Chart" },
+        { 76,  /* + */ "SWIFT_BAT_GRB_LC_PROC",	   "BAT GRB Lightcurve processed" },
+        { 77,  /* - */ "SWIFT_XRT_SPECTRUM_PROC",  "XRT Spectrum processed" },
+        { 78,  /* 1 */ "SWIFT_XRT_IMAGE_PROC",	   "XRT Image processed" },
+        { 79,  /* 1 */ "SWIFT_UVOT_DBURST_PROC",   "UVOT DarkBurst proc mesg (aka Neighbor)" },
+        { 80,  /* 1 */ "SWIFT_UVOT_FCHART_PROC",   "UVOT Finding Chart processed" },
+        { 81,  /* 1 */ "SWIFT_UVOT_POS",	   "UVOT Position" },
+        { 82,  /* 1 */ "SWIFT_BAT_GRB_POS_TEST",   "BAT GRB Position Test" },
+        { 83,  /* 1 */ "SWIFT_POINTDIR",	   "Pointing Direction" },
+        { 84,  /* 1 */ "SWIFT_BAT_TRANS",	   "BAT Hard X-ray Transient coords" },
+        { 85,  /* - */ "SWIFT_XRT_THRESHPIX",	   "XRT Thresholded-Pixel-list" },
+        { 86,  /* - */ "SWIFT_XRT_THRESHPIX_PROC", "XRT Thresholded-Pixel-list processed" },
+        { 87,  /* - */ "SWIFT_XRT_SPER",	   "XRT Single-Pixel-Event-Report" },
+        { 88,  /* - */ "SWIFT_XRT_SPER_PROC",	   "XRT Single-Pixel-Event-Report processed" },
+        { 89,  /* 1 */ "SWIFT_UVOT_POS_NACK",	   "UVOT Position Nack (contains BATs/XRTs position)" },
+        { 90,  /* - */ "SWIFT_BAT_ALARM_SHORT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 91,  /* - */ "SWIFT_BAT_ALARM_LONG",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 92,  /* - */ "SWIFT_UVOT_EMERGENCY",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 93,  /* - */ "SWIFT_XRT_EMERGENCY",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 94,  /* - */ "SWIFT_FOM_PPT_ARG_ERR",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 95,  /* - */ "SWIFT_FOM_SAFE_POINT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 96,  /* - */ "SWIFT_FOM_SLEW_ABORT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 97,  /* 1 */ "SWIFT_BAT_QL_POS",	   "BAT Quick Look Position (1-6 sec sooner)" },
+        { 98,  /* 1 */ "SWIFT_BAT_SUB_THRESHOLD",  "BAT Sub-Threshold Position" },
+        { 99,  /* 1 */ "SWIFT_BAT_SLEW_POS",	   "BAT Burst/Trans Pos during slewing" },
+        { 100, /* 1 */ "AGILE_GRB_WAKEUP",	   "AGILE GRB Wake-Up Position" },
+        { 101, /* 1 */ "AGILE_GRB_GROUND",	   "AGILE GRB Prompt Position" },
+        { 102, /* 1 */ "AGILE_GRB_REFINED",	   "AGILE GRB Refined Position" },
+        { 107, /* 1 */ "AGILE_POINTDIR",	   "AGILE Pointing Direction" },
+        { 108, /* + */ "AGILE_TRANS",	           "AGILE Transient Position" },
+        { 109, /* 1 */ "AGILE_GRB_POS_TEST",	   "AGILE GRB Position Test" },
+        { 110, /* 1 */ "FERMI_GBM_ALERT",	   "GBM Alert" },
+        { 111, /* 1 */ "FERMI_GBM_FLT_POS",	   "GBM Flightt-calculated Position" },
+        { 112, /* 1 */ "FERMI_GBM_GND_POS",	   "GBM Ground-calculated Position" },
+        { 113, /* + */ "FERMI_GBM_LC",	           "GBM Lightcurve" },
+        { 114, /* - */ "FERMI_GBM_GND_INTERNAL",   "GBM Gnd-calc Internal (beyond 112)" },
+        { 115, /* 1 */ "FERMI_GBM_FIN_POS",	   "GBM Final Position HitL or Offline" },
+        { 118, /* + */ "FERMI_GBM_TRANS",	   "GBM Transient Position" },
+        { 119, /* 1 */ "FERMI_GBM_POS_TEST",	   "GBM Position Test" },
+        { 120, /* - */ "FERMI_LAT_POS_INI",	   "LAT Position Initial" },
+        { 121, /* 1 */ "FERMI_LAT_POS_UPD",	   "LAT Position Update" },
+        { 122, /* - */ "FERMI_LAT_POS_DIAG",	   "LAT Position Diagnostic" },
+        { 123, /* + */ "FERMI_LAT_TRANS",	   "LAT Transient Position (previously unknown source)" },
+        { 124, /* 1 */ "FERMI_LAT_POS_TEST",	   "LAT Position Test (like UPD only)" },
+        { 125, /* + */ "FERMI_LAT_MONITOR",	   "LAT Monitor (eg Blazar, AGN, etc)" },
+        { 126, /* 1 */ "FERMI_SC_SLEW",	           "Spcecraft Slew" },
+        { 127, /* 1 */ "FERMI_LAT_GND",	           "LAT Ground-analysis refined Pos" },
+        { 128, /* + */ "FERMI_LAT_OFFLINE",	   "LAT Ground-analysis Trigger Pos, Offline" },
+        { 129, /* 1 */ "FERMI_POINTDIR",	   "Pointing Direction" },
+        { 130, /* 1 */ "SIMBADNED",	           "SIMBAD/NED Search Results" },
+        { 131, /* + */ "PIOTS_OT_POS",	           "Pi-Of-The-Sky Optical Transient Pos" },
+        { 132, /* + */ "KAIT_SN",	           "KAIT SuperNova" },
+        { 133, /* 1 */ "SWIFT_BAT_MONITOR",	   "Swift BAT Transient Monitor LC page event" },
+        { 134, /* 1 */ "MAXI_UNKNOWN",	           "MAXI previously Unknown source transient (GRBs or other x-ray trans)" },
+        { 135, /* 1 */ "MAXI_KNOWN",	           "MAXI previously Known source transient (already in some catalog)" },
+        { 136, /* 1 */ "MAXI_TEST",	           "MAXI Test notice (for the Unknown type)" },
+        { 137, /* + */ "OGLE",	                   "OGLE lensing event (Inten, yes; but not Signif)" },
+        { 138, /* + */ "CBAT",	                   "CBAT" },
+        { 139, /* + */ "MOA",	                   "MOA lensing event (turn off inten for now!!!)" },
+        { 140, /* 1 */ "SWIFT_BAT_SUBSUB",	   "BAT SubSubThreshold trigger" },
+        { 141, /* 1 */ "SWIFT_BAT_KNOWN_SRC",	   "Known source detected in ach BAT image" },
+        { 142, /* 1 */ "VOE_1.1_IM_ALIVE",	   "I'm alive socket packet sent every 60 sec" },
+        { 143, /* 1 */ "VOE_2.0_IM_ALIVE",	   "I'm alive socket packet sent every 60 sec" },
+        { 148, /* 1 */ "SUZAKU_LC",	           "SUZAKU-WAM Lightcurve" },
+        { -1,          "",                         "" },
+    };
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersGPS.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersGPS.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersGPS.h	(revision 18732)
@@ -0,0 +1,31 @@
+#ifndef FACT_HeadersGPS
+#define FACT_HeadersGPS
+
+namespace GPS
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kDisabled,
+            kEnabled,
+            kLocked
+        };
+    };
+
+    struct NEMA
+    {
+        float    time;
+        float    lat;
+        float    lng;
+        float    hdop;
+        float    height;
+        float    geosep;
+        uint16_t count;
+        uint16_t qos;
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersLid.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersLid.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersLid.h	(revision 18732)
@@ -0,0 +1,24 @@
+#ifndef FACT_HeadersLid
+#define FACT_HeadersLid
+
+namespace Lid
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kUnidentified,
+            kInconsistent,
+            kUnknown,
+            kPowerProblem,
+            kOvercurrent,
+            kClosed,
+            kOpen,
+            kMoving,
+            kLocked
+        };
+    };
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersMCP.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersMCP.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersMCP.h	(revision 18732)
@@ -0,0 +1,29 @@
+#ifndef FACT_HeadersMCP
+#define FACT_HeadersMCP
+
+namespace MCP
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kIdle,
+            kDummy, // Doesn't exist, kept to keep the numbers
+            kConfiguring1,
+            kConfiguring2,
+            kConfiguring3,
+            kCrateReset0,
+            kCrateReset1,
+            kCrateReset2,
+            kCrateReset3,
+            kConfigured,
+            kTriggerOn,
+            kTakingData,
+        };
+    }
+}
+#endif
Index: branches/FACT++_part_filenames/src/HeadersMagicLidar.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersMagicLidar.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersMagicLidar.h	(revision 18732)
@@ -0,0 +1,36 @@
+#ifndef FACT_HeadersMagicLidar
+#define FACT_HeadersMagicLidar
+
+namespace MagicLidar
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimLidar
+    {
+        DimLidar() { memset(this, 0, sizeof(DimLidar)); }
+
+        float fZd;
+        float fAz;
+        //float fCHE;
+        //float fCOT;
+        //float fPBL;
+
+        float fT3;
+        float fT6;
+        float fT9;
+        float fT12;
+
+        float fCloudBaseHeight;
+
+    } __attribute__((__packed__));
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersMagicWeather.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersMagicWeather.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersMagicWeather.h	(revision 18732)
@@ -0,0 +1,33 @@
+#ifndef FACT_HeadersMagicWeather
+#define FACT_HeadersMagicWeather
+
+namespace MagicWeather
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimWeather
+    {
+        DimWeather() { memset(this, 0, sizeof(DimWeather)); }
+
+        uint16_t fStatus;
+
+        float    fTemp;
+        float    fDew;
+        float    fHum;
+        float    fPress;
+        float    fWind;
+        float    fGusts;
+        float    fDir;
+
+    } __attribute__((__packed__));
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersPFmini.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersPFmini.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersPFmini.h	(revision 18732)
@@ -0,0 +1,23 @@
+#ifndef FACT_HeadersPFmini
+#define FACT_HeadersPFmini
+
+namespace PFmini
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving
+        };
+    };
+
+    struct Data
+    {
+        float    hum;
+        float    temp;
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersPower.cc
===================================================================
--- branches/FACT++_part_filenames/src/HeadersPower.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersPower.cc	(revision 18732)
@@ -0,0 +1,80 @@
+#include "HeadersPower.h"
+
+#include <string>
+#include <iomanip>
+#include <iostream>
+
+#include <QString>
+#include <QtXml/QDomNamedNodeMap>
+
+#include "WindowLog.h"
+
+using namespace std;
+using namespace Power;
+
+bool Status::Set(bool &rc, const QString &value)
+{
+    rc = value.toInt();
+    return true;
+}
+
+bool Status::Set(const QDomNamedNodeMap &map)
+{
+    if (!map.contains("id") || !map.contains("title"))
+        return false;
+
+    QString item  = map.namedItem("id").nodeValue();
+    QString value = map.namedItem("title").nodeValue();
+
+    if (item==(QString("flow_meter")))
+        return Set(fWaterFlowOk, value);
+
+    if (item==(QString("level")))
+        return Set(fWaterLevelOk, value);
+
+    if (item==(QString("bias_power")))
+        return Set(fPwrBiasOn, value);
+
+    if (item==(QString("power_24v")))
+        return Set(fPwr24VOn, value);
+
+    if (item==(QString("pump")))
+        return Set(fPwrPumpOn, value);
+
+    if (item==(QString("drive_power")))
+        return Set(fPwrDriveOn, value);
+
+    if (item==(QString("drive_on")))
+        return Set(fDriveMainSwitchOn, value);
+
+    if (item==(QString("drive_enable")))
+        return Set(fDriveFeedbackOn, value);
+
+    return false;
+}
+
+void Status::Print(ostream &out, const char *title, const bool &val, const char *t, const char *f)
+{
+    out << setw(9) << title << " : ";
+    if (val)
+        out << kGreen << t << kReset << '\n';
+    else
+        out << kRed   << f << kReset << '\n';
+}
+
+void Status::Print(ostream &out)
+{
+    out << kReset << '\n';
+    out << "------- WATER -------\n";
+    Print(out, "level",    fWaterLevelOk, "ok", "low");
+    Print(out, "flow",     fWaterFlowOk,  "ok", "low");
+    out << "------- POWER -------\n";
+    Print(out, "24V",      fPwr24VOn);
+    Print(out, "pump",     fPwrPumpOn);
+    Print(out, "bias",     fPwrBiasOn);
+    Print(out, "drive",    fPwrDriveOn);
+    out << "------- DRIVE -------\n";
+    Print(out, "feedback", fDriveFeedbackOn,   "on", "off");
+    Print(out, "main",     fDriveMainSwitchOn, "on", "off");
+    out << "---------------------" << endl;
+}
Index: branches/FACT++_part_filenames/src/HeadersPower.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersPower.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersPower.h	(revision 18732)
@@ -0,0 +1,65 @@
+#ifndef FACT_HeadersPower
+#define FACT_HeadersPower
+
+#include <iosfwd>
+#include <stdint.h>
+
+class QString;
+class QDomNamedNodeMap;
+
+namespace Power
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kSystemOff,
+            kCameraOn  =  4,
+            kBiasOn    =  8,
+            kDriveOn   = 16,
+            kCameraOff = kBiasOn|kDriveOn,
+            kBiasOff   = kCameraOn|kDriveOn,
+            kDriveOff  = kCameraOn|kBiasOn,
+            kSystemOn  = kCameraOn|kBiasOn|kDriveOn,
+            kCoolingFailure
+        };
+    };
+
+    struct Status
+    {
+        bool fWaterLevelOk;
+        bool fWaterFlowOk;
+
+        bool fPwr24VOn;
+        bool fPwrPumpOn;
+        bool fPwrBiasOn;
+        bool fPwrDriveOn;
+
+        bool fDriveMainSwitchOn;
+        bool fDriveFeedbackOn;
+
+        Status() { }
+
+        bool Set(bool &rc, const QString &value);
+        bool Set(const QDomNamedNodeMap &map);
+
+        void Print(std::ostream &out, const char *title, const bool &val, const char *t="enabled", const char *f="disabled");
+        void Print(std::ostream &out);      
+
+        uint8_t GetVal() const
+        {
+            return
+                fWaterLevelOk      <<0 |
+                fWaterFlowOk       <<1 |
+                fPwr24VOn          <<2 |
+                fPwrPumpOn         <<3 |
+                fPwrDriveOn        <<4 |
+                fDriveMainSwitchOn <<5 |
+                fDriveFeedbackOn   <<6;
+        }
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersRateControl.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersRateControl.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersRateControl.h	(revision 18732)
@@ -0,0 +1,30 @@
+#ifndef FACT_HeadersRateControl
+#define FACT_HeadersRateControl
+
+namespace RateControl
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,              // obsolete, not used
+            kConnected,
+
+            kSettingGlobalThreshold,
+            kGlobalThresholdSet,
+
+            kInProgress,
+        };
+    };
+
+    struct DimThreshold
+    {
+        uint16_t threshold;
+        double   begin;
+        double   end;
+    }  __attribute__((__packed__));
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersRateScan.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersRateScan.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersRateScan.h	(revision 18732)
@@ -0,0 +1,21 @@
+#ifndef FACT_HeadersRateScan
+#define FACT_HeadersRateScan
+
+namespace RateScan
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kConfiguring,
+            kInProgress,
+            kPaused,
+        };
+    }
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/HeadersSQM.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersSQM.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersSQM.h	(revision 18732)
@@ -0,0 +1,27 @@
+#ifndef FACT_HeadersSQM
+#define FACT_HeadersSQM
+
+namespace SQM
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kInvalid,
+            kValid,
+        };
+    };
+
+    struct Data
+    {
+        float    mag;        // Magnitude per square arc second (0.00m upper brightness limit)
+        uint32_t freq;       // Frequency of sensor in Hz
+        uint32_t counts;     // Period of sensor in counts (counts occur at 14.7456MHz/32)
+        float    period;     // Period of sensor in seconds (millisecond resolution)
+        float    temp;       // Temperature measured at light sensor in degC
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersTNGWeather.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersTNGWeather.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersTNGWeather.h	(revision 18732)
@@ -0,0 +1,42 @@
+#ifndef FACT_HeadersTNGWeather
+#define FACT_HeadersTNGWeather
+
+namespace TNGWeather
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimWeather
+    {
+        DimWeather() { memset(this, 0, sizeof(DimWeather)); }
+
+        float  fTemperature;
+        float  fTempTrend;
+        float  fDewPoint;
+        float  fHumidity;
+        float  fAirPressure;
+        float  fWindSpeed;
+        float  fWindDirection;
+        float  fDustTotal;
+        float  fSolarimeter;
+
+    } __attribute__((__packed__));
+
+    struct DimSeeing
+    {
+        DimSeeing() { memset(this, 0, sizeof(DimSeeing)); }
+
+        float  fSeeing;
+        float  fSeeingMed;
+        float  fSeeingStdev;
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/FACT++_part_filenames/src/HeadersTemperature.h
===================================================================
--- branches/FACT++_part_filenames/src/HeadersTemperature.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/HeadersTemperature.h	(revision 18732)
@@ -0,0 +1,16 @@
+#ifndef FACT_HeadersTemperature
+#define FACT_HeadersTemperature
+
+namespace Temperature
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kValid
+        };
+    };
+};
+#endif
Index: branches/FACT++_part_filenames/src/InterpreterV8.cc
===================================================================
--- branches/FACT++_part_filenames/src/InterpreterV8.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/InterpreterV8.cc	(revision 18732)
@@ -0,0 +1,2977 @@
+#include "InterpreterV8.h"
+
+#ifdef HAVE_V8
+
+#include <fstream>
+#include <sstream>
+#include <iomanip>
+
+#include <sys/stat.h>
+
+#include <boost/tokenizer.hpp>
+#include <boost/algorithm/string/join.hpp>
+
+#ifdef HAVE_NOVA
+#include "externals/nova.h"
+#endif
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include <v8.h>
+
+#include "dim.h"
+#include "tools.h"
+#include "Readline.h"
+#include "externals/izstream.h"
+
+#include "WindowLog.h"
+
+using namespace std;
+using namespace v8;
+
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateLocal;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateSky;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateEvent;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateDescription;
+//v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateDatabase;
+
+
+// ==========================================================================
+//                           Some documentation
+// ==========================================================================
+//
+// Threads:
+// --------
+// In most cases Js* and other calls to native C++ code could be wrapped
+// with an Unlocker to allow possible other JavaScipt 'threads' to run
+// during that time. However, all of these calls should take much less than
+// the preemption time of 10ms, so it would just be a waste of tim.
+//
+// Termination:
+// ------------
+// Each thread running V8 code needs to be signalled individually for
+// termination. Therefor a list of V8 thread ids is created.
+//
+// If termination has already be signalled, no thread should start running
+// anymore (thy could, e.g., wait for their locking). So after locking
+// it has to be checked if the thread was terminated already. Note
+// that all calls to Terminate() must be locked to ensure that fThreadId
+// is correct when it is checked.
+//
+// The current thread id must be added to fThreadIds _before_ any
+// function is called after Locking and before execution is given
+// back to JavaScript, e.g. in script->Run(). So until the thread
+// is added to the list Terminate will not be executed. If Terminate
+// is then executed, it is ensured that the current thread is
+// already in the list. If terminate has been called before
+// the Locking, the check for the validiy of fThreadId ensures that
+// nothing is executed.
+//
+// Empty handles:
+// --------------
+// If exceution is terminated, V8 calls might return with empty handles,
+// e.g. Date::New(). Therefore, the returned handles of these calls have to
+// be checked in all placed to avoid that V8 will core dump.
+//
+// HandleScope:
+// ------------
+// A handle scope is a garbage collector and collects all handles created
+// until it goes out of scope. Handles which are not needed anymore are
+// then deleted. To return a handle from a HandleScope you need to use
+// Close(). E.g., String::AsciiValue does not create a new handle and
+// hence does not need a HandleScope. Any ::New will need a handle scope.
+// Forgetting the HandleScope could in principle fill your memory,
+// but everything is properly deleted by the global HandleScope at
+// script termination.
+//
+// Here is another good reference for v8, also containing some
+// good explanations for the meaning of handles, persistent handles
+// and weak handles: http://create.tpsitulsa.com/wiki/V8_Cookbook
+//
+// ==========================================================================
+//                            Simple interface
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncExit(const Arguments &)
+{
+    V8::TerminateExecution(fThreadId);
+
+    // we have to throw an excption to make sure that the
+    // calling thread does not go on executing until it
+    // has realized that it should terminate
+    return ThrowException(Null());
+}
+
+Handle<Value> InterpreterV8::FuncSleep(const Arguments& args)
+{
+    if (args.Length()==0)
+    {
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+        return Undefined();
+    }
+
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 1 must be an uint32."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+    const string code =
+        "(function(){"
+        "var t=new Date();"
+        "while ((new Date()-t)<"+to_string(args[0]->Int32Value())+") v8.sleep();"
+        "})();";
+
+    return ExecuteInternal(code);
+}
+
+Handle<Value> InterpreterV8::FuncTimeout(const Arguments &args)
+{
+    if (args.Length()<2)
+        return ThrowException(String::New("Number of arguments must be at least two."));
+
+    if (!args[0]->IsNull() && !args[0]->IsInt32())
+        return ThrowException(String::New("Argument 0 not null and not an int32."));
+
+    if (!args[1]->IsFunction())
+        return ThrowException(String::New("Argument 1 not a function."));
+
+    if (args.Length()>2 && !args[2]->IsObject())
+        return ThrowException(String::New("Argument 2 not an object."));
+
+    const int32_t timeout = args[0]->IsNull() ? 0 : args[0]->Int32Value();
+    const bool    null    = args[0]->IsNull();
+
+    HandleScope handle_scope;
+
+    Handle<Function> func = Handle<Function>::Cast(args[1]);
+
+    const int nn = args.Length()==2 ? 0 : args.Length()-3;
+
+    Handle<Value> argv[nn];
+    for (int i=0; i<nn; i++)
+        argv[i] = args[i+3];
+
+    Time t;
+    while (1)
+    {
+        const Handle<Value> rc = args.Length()<3 ? func->Call(func, nn, argv) : func->Call(args[2]->ToObject(), nn, argv);
+        if (rc.IsEmpty())
+            return Undefined();
+
+        if (!rc->IsUndefined())
+            return handle_scope.Close(rc);
+
+        if (!null && Time()-t>=boost::posix_time::milliseconds(abs(timeout)))
+            break;
+
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+    }
+
+    if (timeout<0)
+        return Undefined();
+
+    const string str = "Waiting for func to return a defined value timed out.";
+    return ThrowException(String::New(str.c_str()));
+}
+
+void InterpreterV8::Thread(int &id, Persistent<Object> _this, Persistent<Function> func, uint32_t ms)
+{
+    const Locker lock;
+
+    if (fThreadId<0)
+    {
+        id = -1;
+        return;
+    }
+
+    // Warning: As soon as id is set, the parent of this thread might terminate
+    //          and hance the reference to id does not exist anymore. So, id
+    //          is just a kind of return value and must not be used at all
+    //          otherwise.
+
+    const int id_local = V8::GetCurrentThreadId();
+    id = id_local;
+    fThreadIds.insert(id_local);
+
+    const HandleScope handle_scope;
+
+    func->CreationContext()->Enter();
+
+    TryCatch exception;
+
+    const bool rc = ms==0 || !ExecuteInternal("v8.sleep("+to_string(ms)+");").IsEmpty();
+    if (rc)
+    {
+        if (_this.IsEmpty())
+            func->Call(func, 0, NULL);
+        else
+            func->Call(_this, 0, NULL);
+    }
+
+    func.Dispose();
+    _this.Dispose();
+
+    fThreadIds.erase(id_local);
+
+    if (!HandleException(exception, "thread"))
+        V8::TerminateExecution(fThreadId);
+
+    func->CreationContext()->Exit();
+}
+
+Handle<Value> InterpreterV8::FuncThread(const Arguments& args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Thread must be called as constructor."));
+
+    if (args.Length()!=2 && args.Length()!=3)
+        return ThrowException(String::New("Number of arguments must be two or three."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 0 not an uint32."));
+
+    if (!args[1]->IsFunction())
+        return ThrowException(String::New("Argument 1 not a function."));
+
+    if (args.Length()==3 && !args[2]->IsObject())
+        return ThrowException(String::New("Argument 2 not an object."));
+
+    //if (!args.IsConstructCall())
+    //    return Constructor(args);
+
+    const HandleScope handle_scope;
+
+    Handle<Function> handle = Handle<Function>::Cast(args[1]);
+
+    Persistent<Function> func =  Persistent<Function>::New(handle);
+    Persistent<Object> _this;
+    if (args.Length()==3)
+        _this = Persistent<Object>::New(args[2]->ToObject());
+
+    const uint32_t ms = args[0]->Uint32Value();
+
+    int id=-2;
+    fThreads.push_back(thread(bind(&InterpreterV8::Thread, this, ref(id), _this, func, ms)));
+    {
+        // Allow the thread to lock, so we can get the thread id.
+        const Unlocker unlock;
+        while (id==-2)
+            usleep(1);
+    }
+
+    Handle<Object> self = args.This();
+
+    self->Set(String::New("id"), Integer::NewFromUnsigned(id), ReadOnly);
+    self->Set(String::New("kill"), FunctionTemplate::New(WrapKill)->GetFunction(), ReadOnly);
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncKill(const Arguments& args)
+{
+    const uint32_t id = args.This()->Get(String::New("id"))->Uint32Value();
+
+    V8::TerminateExecution(id);
+
+    return Boolean::New(fThreadIds.erase(id));
+}
+
+Handle<Value> InterpreterV8::FuncSend(const Arguments& args)
+{
+    if (args.Length()==0)
+        return ThrowException(String::New("Number of arguments must be at least 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    const String::AsciiValue str(args[0]);
+
+    string command = *str;
+
+    if (command.length()==0)
+        return ThrowException(String::New("Server name empty."));
+
+    if (args.Length()==0)
+    {
+        if (command.find_first_of('/')==string::npos)
+            command += "/";
+    }
+
+    // Escape all string arguments. All others can be kept as they are.
+    for (int i=1; i<args.Length(); i++)
+    {
+        string arg = *String::AsciiValue(args[i]);
+
+        // Escape string
+        if (args[i]->IsString())
+        {
+            boost::replace_all(arg, "\\", "\\\\");
+            boost::replace_all(arg, "'", "\\'");
+            boost::replace_all(arg, "\"", "\\\"");
+        }
+
+        command += " "+arg;
+    }
+
+    try
+    {
+        return Boolean::New(JsSend(command));
+    }
+    catch (const runtime_error &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+}
+
+// ==========================================================================
+//                               State control
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncWait(const Arguments& args)
+{
+    if (args.Length()!=2 && args.Length()!=3)
+        return ThrowException(String::New("Number of arguments must be 2 or 3."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 not a string."));
+
+    if (!args[1]->IsInt32() && !args[1]->IsString())
+        return ThrowException(String::New("Argument 2 not an int32 and not a string."));
+
+    if (args.Length()==3 && !args[2]->IsInt32() && !args[2]->IsUndefined())
+        return ThrowException(String::New("Argument 3 not an int32 and not undefined."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+
+    const string index   = args[1]->IsInt32() ? "s.index" : "s.name";
+    const bool   timeout = args.Length()==3 && !args[2]->IsUndefined();
+    const string arg0    = *String::AsciiValue(args[0]);
+    const string state   = args[1]->IsString() ? *String::AsciiValue(args[1]) : "";
+    const string arg1    = args[1]->IsString() ? ("\""+state+"\"") : to_string(args[1]->Int32Value());
+    const bool   isNot   = arg0[0]=='!';
+    const string name    = isNot ? arg0.substr(1) : arg0;
+
+    if (arg0.find_first_of("\"'")!=string::npos)
+        return ThrowException(String::New("Server name must not contain quotation marks."));
+
+    if (args[1]->IsString())
+        if (state.find_first_of("\"'")!=string::npos)
+            return ThrowException(String::New("State name must not contain quotation marks."));
+
+    string code =  "(function(name,state,ms)"
+                   "{";
+    if (timeout)
+        code +=       "var t = new Date();";
+    code +=           "while (1)"
+                      "{"
+                         "var s = dim.state(name);"
+                         "if(!s)throw new Error('Waiting for state "+arg1+" of server "+arg0+" failed.');";
+    if (isNot)
+        code +=
+                         "if(state!="+index+")return true;";
+    else
+        code +=
+                         "if(state=="+index+")return true;";
+    if (timeout)
+        code +=          "if((new Date()-t)>Math.abs(ms))break;";
+
+    code +=              "v8.sleep();"
+                      "}";
+    if (timeout)
+        code +=    "if(ms>0)throw new Error('Waiting for state "+arg1+" of server "+arg0+" timed out.');";
+    code +=        "return false;"
+                   "})('"+name+"',"+arg1;
+    if (timeout)
+        code +=    "," + (args[2]->IsUndefined()?"undefined":to_string(args[2]->Int32Value()));
+    code +=        ");";
+
+    return ExecuteInternal(code);
+}
+
+Handle<Value> InterpreterV8::FuncState(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    // Return state.name/state.index
+
+    const String::AsciiValue str(args[0]);
+
+    const State rc = JsState(*str);
+    if (rc.index<=-256)
+        return Undefined();
+
+    HandleScope handle_scope;
+
+    Handle<Object> obj = Object::New();
+
+    obj->Set(String::New("server"), String::New(*str),            ReadOnly);
+    obj->Set(String::New("index"),  Integer::New(rc.index),       ReadOnly);
+    obj->Set(String::New("name"),   String::New(rc.name.c_str()), ReadOnly);
+
+    const Local<Value> date = Date::New(rc.time.JavaDate());
+    if (rc.index>-256 && !date.IsEmpty())
+        obj->Set(String::New("time"),  date);
+
+    return handle_scope.Close(obj);
+}
+
+Handle<Value> InterpreterV8::FuncNewState(const Arguments& args)
+{
+    if (args.Length()<1 || args.Length()>3)
+        return ThrowException(String::New("Number of arguments must be 1, 2 or 3."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 1 must be an uint32."));
+    if (args.Length()>1 && !args[1]->IsString())
+        return ThrowException(String::New("Argument 2 must be a string."));
+    if (args.Length()>2 && !args[2]->IsString())
+        return ThrowException(String::New("Argument 3 must be a string."));
+
+    const uint32_t index   = args[0]->Int32Value();
+    const string   name    = *String::AsciiValue(args[1]);
+    const string   comment = *String::AsciiValue(args[2]);
+
+    if (index<10 || index>255)
+        return ThrowException(String::New("State must be in the range [10, 255]."));
+
+    if (name.empty())
+        return ThrowException(String::New("State name must not be empty."));
+
+    if (name.find_first_of(':')!=string::npos || name.find_first_of('=')!=string::npos)
+        return ThrowException(String::New("State name must not contain : or =."));
+
+    struct Find : State
+    {
+        Find(int idx, const string &n) : State(idx, n) { }
+        bool operator()(const pair<int, string> &p) { return index==p.first || name==p.second; }
+    };
+
+    if (find_if(fStates.begin(), fStates.end(), Find(index, name))!=fStates.end())
+    {
+        const string what =
+            "State index ["+to_string(index)+"] or name ["+name+"] already defined.";
+
+        return ThrowException(String::New(what.c_str()));
+    }
+
+    return Boolean::New(JsNewState(index, name, comment));
+}
+
+Handle<Value> InterpreterV8::FuncSetState(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsUint32() && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be an unint32 or a  string."));
+
+    int index = -2;
+    if (args[0]->IsUint32())
+    {
+        index = args[0]->Int32Value();
+    }
+    else
+    {
+        const string name = *String::AsciiValue(args[0]);
+        index = JsGetState(name);
+        if (index==-2)
+            return ThrowException(String::New(("State '"+name+"' not found.").c_str()));
+    }
+
+    if (index<10 || index>255)
+        return ThrowException(String::New("State must be in the range [10, 255]."));
+
+    return Boolean::New(JsSetState(index));
+}
+
+Handle<Value> InterpreterV8::FuncGetState(const Arguments& args)
+{
+    if (args.Length()>0)
+        return ThrowException(String::New("getState must not take arguments."));
+
+    const State state = JsGetCurrentState();
+
+    HandleScope handle_scope;
+
+    Handle<Object> rc = Object::New();
+    if (rc.IsEmpty())
+        return Undefined();
+
+    rc->Set(String::New("index"), Integer::New(state.index), ReadOnly);
+    rc->Set(String::New("name"), String::New(state.name.c_str()), ReadOnly);
+    rc->Set(String::New("description"), String::New(state.comment.c_str()), ReadOnly);
+
+    return handle_scope.Close(rc);
+}
+
+Handle<Value> InterpreterV8::FuncGetStates(const Arguments& args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("getStates must not take more than one arguments."));
+
+    if (args.Length()==1 && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const string server = args.Length()==1 ? *String::AsciiValue(args[0]) : "DIM_CONTROL";
+
+    const vector<State> states = JsGetStates(server);
+
+    HandleScope handle_scope;
+
+    Handle<Object> list = Object::New();
+    if (list.IsEmpty())
+        return Undefined();
+
+    for (auto it=states.begin(); it!=states.end(); it++)
+    {
+        Handle<Value> entry = StringObject::New(String::New(it->name.c_str()));
+        if (entry.IsEmpty())
+            return Undefined();
+
+        StringObject::Cast(*entry)->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+        list->Set(Integer::New(it->index), entry, ReadOnly);
+    }
+
+    return handle_scope.Close(list);
+}
+
+Handle<Value> InterpreterV8::FuncGetDescription(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("getDescription must take exactly one argument."));
+
+    if (args.Length()==1 && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const string service = *String::AsciiValue(args[0]);
+
+    const vector<Description> descriptions = JsGetDescription(service);
+    const set<Service> services = JsGetServices();
+
+    auto is=services.begin();
+    for (; is!=services.end(); is++)
+        if (is->name==service)
+            break;
+
+    if (is==services.end())
+        return Undefined();
+
+    HandleScope handle_scope;
+
+    Handle<Object> arr = fTemplateDescription->GetFunction()->NewInstance();//Object::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    auto it=descriptions.begin();
+    arr->Set(String::New("name"), String::New(it->name.c_str()), ReadOnly);
+    if (!it->comment.empty())
+        arr->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+    if (is!=services.end())
+    {
+        arr->Set(String::New("server"), String::New(is->server.c_str()), ReadOnly);
+        arr->Set(String::New("service"), String::New(is->service.c_str()), ReadOnly);
+        arr->Set(String::New("isCommand"), Boolean::New(is->iscmd), ReadOnly);
+        if (!is->format.empty())
+            arr->Set(String::New("format"), String::New(is->format.c_str()), ReadOnly);
+    }
+
+    uint32_t i=0;
+    for (it++; it!=descriptions.end(); it++)
+    {
+        Handle<Object> obj = Object::New();
+        if (obj.IsEmpty())
+            return Undefined();
+
+        if (!it->name.empty())
+            obj->Set(String::New("name"), String::New(it->name.c_str()), ReadOnly);
+        if (!it->comment.empty())
+            obj->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+        if (!it->unit.empty())
+            obj->Set(String::New("unit"), String::New(it->unit.c_str()), ReadOnly);
+
+        arr->Set(i++, obj);
+    }
+
+    return handle_scope.Close(arr);
+}
+
+Handle<Value> InterpreterV8::FuncGetServices(const Arguments& args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("getServices must not take more than two argument."));
+
+    if (args.Length()>=1 && !args[0]->IsString())
+        return ThrowException(String::New("First argument must be a string."));
+
+    if (args.Length()==2 && !args[1]->IsBoolean())
+        return ThrowException(String::New("Second argument must be a boolean."));
+
+    string arg0 = args.Length() ? *String::AsciiValue(args[0]) : "";
+    if (arg0=="*")
+        arg0=="";
+
+    const set<Service> services = JsGetServices();
+
+    HandleScope handle_scope;
+
+    Handle<Array> arr = Array::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    uint32_t i=0;
+    for (auto is=services.begin(); is!=services.end(); is++)
+    {
+        if (!arg0.empty() && is->name.find(arg0)!=0)
+            continue;
+
+        if (args.Length()==2 && args[1]->BooleanValue()!=is->iscmd)
+            continue;
+
+        Handle<Object> obj = Object::New();
+        if (obj.IsEmpty())
+            return Undefined();
+
+        obj->Set(String::New("name"), String::New(is->name.c_str()), ReadOnly);
+        obj->Set(String::New("server"), String::New(is->server.c_str()), ReadOnly);
+        obj->Set(String::New("service"), String::New(is->service.c_str()), ReadOnly);
+        obj->Set(String::New("isCommand"), Boolean::New(is->iscmd), ReadOnly);
+        if (!is->format.empty())
+            obj->Set(String::New("format"), String::New(is->format.c_str()), ReadOnly);
+
+        arr->Set(i++, obj);
+    }
+
+    return handle_scope.Close(arr);
+}
+
+// ==========================================================================
+//                             Internal functions
+// ==========================================================================
+
+
+// The callback that is invoked by v8 whenever the JavaScript 'print'
+// function is called.  Prints its arguments on stdout separated by
+// spaces and ending with a newline.
+Handle<Value> InterpreterV8::FuncLog(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsPrint(*str);
+    }
+
+    if (args.Length()==0)
+        JsPrint();
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncAlarm(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsAlarm(*str);
+    }
+
+    if (args.Length()==0)
+        JsAlarm();
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncOut(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsOut(*str);
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncWarn(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsWarn(*str);
+    }
+    return Undefined();
+}
+
+// The callback that is invoked by v8 whenever the JavaScript 'load'
+// function is called.  Loads, compiles and executes its argument
+// JavaScript file.
+Handle<Value> InterpreterV8::FuncInclude(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be one."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const String::AsciiValue file(args[0]);
+    if (*file == NULL)
+        return ThrowException(String::New("File name missing."));
+
+    if (strlen(*file)==0)
+        return ThrowException(String::New("File name empty."));
+
+    izstream fin(*file);
+    if (!fin)
+        return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
+
+    string buffer;
+    getline(fin, buffer, '\0');
+
+    if ((fin.fail() && !fin.eof()) || fin.bad())
+        return ThrowException(String::New(strerror(errno)));
+
+    if (buffer.length()>1 && buffer[0]=='#' && buffer[1]=='!')
+        buffer.insert(0, "//");
+
+    return ExecuteCode(buffer, *file);
+}
+
+Handle<Value> InterpreterV8::FuncFile(const Arguments& args)
+{
+    if (args.Length()!=1 && args.Length()!=2)
+        return ThrowException(String::New("Number of arguments must be one or two."));
+
+    const String::AsciiValue file(args[0]);
+    if (*file == NULL)
+        return ThrowException(String::New("File name missing"));
+
+    if (args.Length()==2 && !args[1]->IsString())
+        return ThrowException(String::New("Second argument must be a string."));
+
+    const string delim = args.Length()==2 ? *String::AsciiValue(args[1]) : "";
+
+    if (args.Length()==2 && delim.size()!=1)
+        return ThrowException(String::New("Second argument must be a string of length 1."));
+
+    HandleScope handle_scope;
+
+    izstream fin(*file);
+    if (!fin)
+        return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
+
+    if (args.Length()==1)
+    {
+        string buffer;
+        getline(fin, buffer, '\0');
+        if ((fin.fail() && !fin.eof()) || fin.bad())
+            return ThrowException(String::New(strerror(errno)));
+
+        Handle<Value> str = StringObject::New(String::New(buffer.c_str()));
+        StringObject::Cast(*str)->Set(String::New("name"), String::New(*file));
+        return handle_scope.Close(str);
+    }
+
+    Handle<Array> arr = Array::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    int i=0;
+    string buffer;
+    while (getline(fin, buffer, delim[0]))
+        arr->Set(i++, String::New(buffer.c_str()));
+
+    if ((fin.fail() && !fin.eof()) || fin.bad())
+        return ThrowException(String::New(strerror(errno)));
+
+    arr->Set(String::New("name"),  String::New(*file));
+    arr->Set(String::New("delim"), String::New(delim.c_str(), 1));
+
+    return handle_scope.Close(arr);
+}
+
+// ==========================================================================
+//                                 Mail
+// ==========================================================================
+
+Handle<Value> InterpreterV8::ConstructorMail(const Arguments &args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Mail must be called as constructor"));
+
+    if (args.Length()!=1 || !args[0]->IsString())
+        return ThrowException(String::New("Constructor must be called with a single string as argument"));
+
+    HandleScope handle_scope;
+
+    Handle<Array> rec = Array::New();
+    Handle<Array> att = Array::New();
+    Handle<Array> bcc = Array::New();
+    Handle<Array> cc  = Array::New();
+    Handle<Array> txt = Array::New();
+    if (rec.IsEmpty() || att.IsEmpty() || bcc.IsEmpty() || cc.IsEmpty() || txt.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+
+    self->Set(String::New("subject"),     args[0]->ToString(), ReadOnly);
+    self->Set(String::New("recipients"),  rec, ReadOnly);
+    self->Set(String::New("attachments"), att, ReadOnly);
+    self->Set(String::New("bcc"),         bcc, ReadOnly);
+    self->Set(String::New("cc"),          cc,  ReadOnly);
+    self->Set(String::New("text"),        txt, ReadOnly);
+
+    self->Set(String::New("send"), FunctionTemplate::New(WrapSendMail)->GetFunction(), ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+vector<string> InterpreterV8::ValueToArray(const Handle<Value> &val, bool only)
+{
+    vector<string> rc;
+
+    Handle<Array> arr = Handle<Array>::Cast(val);
+    for (uint32_t i=0; i<arr->Length(); i++)
+    {
+        Handle<Value> obj = arr->Get(i);
+        if (obj.IsEmpty())
+            continue;
+
+        if (obj->IsNull() || obj->IsUndefined())
+            continue;
+
+        if (only && !obj->IsString())
+            continue;
+
+        rc.push_back(*String::AsciiValue(obj->ToString()));
+    }
+
+    return rc;
+}
+
+Handle<Value> InterpreterV8::FuncSendMail(const Arguments& args)
+{
+    HandleScope handle_scope;
+
+    if (args.Length()>1)
+        return ThrowException(String::New("Only one argument allowed."));
+
+    if (args.Length()==1 && !args[0]->IsBoolean())
+        return ThrowException(String::New("Argument must be a boolean."));
+
+    const bool block = args.Length()==0 || args[0]->BooleanValue();
+
+    const Handle<Value> sub = args.This()->Get(String::New("subject"));
+    const Handle<Value> rec = args.This()->Get(String::New("recipients"));
+    const Handle<Value> txt = args.This()->Get(String::New("text"));
+    const Handle<Value> att = args.This()->Get(String::New("attachments"));
+    const Handle<Value> bcc = args.This()->Get(String::New("bcc"));
+    const Handle<Value> cc  = args.This()->Get(String::New("cc"));
+
+    const vector<string> vrec = ValueToArray(rec);
+    const vector<string> vtxt = ValueToArray(txt, false);
+    const vector<string> vatt = ValueToArray(att);
+    const vector<string> vbcc = ValueToArray(bcc);
+    const vector<string> vcc  = ValueToArray(cc);
+
+    if (vrec.size()==0)
+        return ThrowException(String::New("At least one valid string is required in 'recipients'."));
+    if (vtxt.size()==0)
+        return ThrowException(String::New("At least one valid string is required in 'text'."));
+
+    const string subject = *String::AsciiValue(sub->ToString());
+
+    FILE *pipe = popen(("from=no-reply@fact-project.org mailx -~ "+vrec[0]).c_str(), "w");
+    if (!pipe)
+        return ThrowException(String::New(strerror(errno)));
+
+    fprintf(pipe, "%s", ("~s"+subject+"\n").c_str());
+    for (auto it=vrec.begin()+1; it<vrec.end(); it++)
+        fprintf(pipe, "%s", ("~t"+*it+"\n").c_str());
+    for (auto it=vbcc.begin(); it<vbcc.end(); it++)
+        fprintf(pipe, "%s", ("~b"+*it+"\n").c_str());
+    for (auto it=vcc.begin(); it<vcc.end(); it++)
+        fprintf(pipe, "%s", ("~c"+*it+"\n").c_str());
+    for (auto it=vatt.begin(); it<vatt.end(); it++)
+        fprintf(pipe, "%s", ("~@"+*it+"\n").c_str());  // Must not contain white spaces
+
+    for (auto it=vtxt.begin(); it<vtxt.end(); it++)
+        fwrite((*it+"\n").c_str(), it->length()+1, 1, pipe);
+
+    fprintf(pipe, "\n---\nsent by dimctrl");
+
+    if (!block)
+        return Undefined();
+
+    const int rc = pclose(pipe);
+
+    const Locker lock;
+    return handle_scope.Close(Integer::New(WEXITSTATUS(rc)));
+}
+
+// ==========================================================================
+//                                 Curl
+// ==========================================================================
+
+Handle<Value> InterpreterV8::ConstructorCurl(const Arguments &args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Curl must be called as constructor"));
+
+    if (args.Length()!=1 || !args[0]->IsString())
+        return ThrowException(String::New("Constructor must be called with a single string as argument"));
+
+    HandleScope handle_scope;
+
+    Handle<Array> data = Array::New();
+    if (data.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+
+    self->Set(String::New("url"),  args[0]->ToString(), ReadOnly);
+    self->Set(String::New("data"), data, ReadOnly);
+
+    self->Set(String::New("send"), FunctionTemplate::New(WrapSendCurl)->GetFunction(), ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Value> InterpreterV8::FuncSendCurl(const Arguments& args)
+{
+    HandleScope handle_scope;
+
+    if (args.Length()>1)
+        return ThrowException(String::New("Only one argument allowed."));
+
+    if (args.Length()==1 && !args[0]->IsBoolean())
+        return ThrowException(String::New("Argument must be a boolean."));
+
+    const bool block = args.Length()==0 || args[0]->BooleanValue();
+
+    const Handle<Value> url  = args.This()->Get(String::New("url"));
+    const Handle<Value> data = args.This()->Get(String::New("data"));
+
+    const vector<string> vdata = ValueToArray(data);
+    const string sdata = boost::algorithm::join(vdata, "&");
+
+    const string surl = *String::AsciiValue(url->ToString());
+
+    string cmd = "curl -sSf ";
+    if (!sdata.empty())
+        cmd += "--data '"+sdata+"' ";
+    cmd += "'http://"+surl+"' 2>&1 ";
+
+    FILE *pipe = popen(cmd.c_str(), "r");
+    if (!pipe)
+        return ThrowException(String::New(strerror(errno)));
+
+    if (!block)
+        return Undefined();
+
+    string txt;
+
+    while (!feof(pipe))
+    {
+        char buf[1025];
+        if (fgets(buf, 1024, pipe)==NULL)
+            break;
+        txt += buf;
+    }
+
+    const int rc = pclose(pipe);
+
+    Handle<Object> obj = Object::New();
+
+    obj->Set(String::New("cmd"), String::New(cmd.c_str()));
+    obj->Set(String::New("data"), String::New(txt.c_str()));
+    obj->Set(String::New("rc"), Integer::NewFromUnsigned(WEXITSTATUS(rc)));
+
+    const Locker lock;
+    return handle_scope.Close(obj);
+}
+
+// ==========================================================================
+//                                 Database
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncDbClose(const Arguments &args)
+{
+    void *ptr = External::Unwrap(args.This()->GetInternalField(0));
+    if (!ptr)
+        return Boolean::New(false);
+
+#ifdef HAVE_SQL
+    Database *db = reinterpret_cast<Database*>(ptr);
+    auto it = find(fDatabases.begin(), fDatabases.end(), db);
+    fDatabases.erase(it);
+    delete db;
+#endif
+
+    HandleScope handle_scope;
+
+    args.This()->SetInternalField(0, External::New(0));
+
+    return handle_scope.Close(Boolean::New(true));
+}
+
+Handle<Value> InterpreterV8::FuncDbQuery(const Arguments &args)
+{
+    if (args.Length()==0)
+        return ThrowException(String::New("Arguments expected."));
+
+    void *ptr = External::Unwrap(args.This()->GetInternalField(0));
+    if (!ptr)
+        return Undefined();
+
+    string query;
+    for (int i=0; i<args.Length(); i++)
+        query += string(" ") + *String::AsciiValue(args[i]);
+    query.erase(0, 1);
+
+#ifdef HAVE_SQL
+    try
+    {
+        HandleScope handle_scope;
+
+        Database *db = reinterpret_cast<Database*>(ptr);
+
+        const mysqlpp::StoreQueryResult res = db->query(query).store();
+
+        Handle<Array> ret = Array::New();
+        if (ret.IsEmpty())
+            return Undefined();
+
+        ret->Set(String::New("table"), String::New(res.table()),   ReadOnly);
+        ret->Set(String::New("query"), String::New(query.c_str()), ReadOnly);
+
+        Handle<Array> cols = Array::New();
+        if (cols.IsEmpty())
+            return Undefined();
+
+        int irow=0;
+        for (vector<mysqlpp::Row>::const_iterator it=res.begin(); it<res.end(); it++)
+        {
+            Handle<Object> row = Object::New();
+            if (row.IsEmpty())
+                return Undefined();
+
+            const mysqlpp::FieldNames *list = it->field_list().list;
+
+            for (size_t i=0; i<it->size(); i++)
+            {
+                const Handle<Value> name = String::New((*list)[i].c_str());
+                if (irow==0)
+                    cols->Set(i, name);
+
+                if ((*it)[i].is_null())
+                {
+                    row->Set(name, Undefined(), ReadOnly);
+                    continue;
+                }
+
+                const string sql_type = (*it)[i].type().sql_name();
+
+                const bool uns = sql_type.find("UNSIGNED")==string::npos;
+
+                if (sql_type.find("BIGINT")!=string::npos)
+                {
+                    if (uns)
+                    {
+                        const uint64_t val = (uint64_t)(*it)[i];
+                        if (val>UINT32_MAX)
+                            row->Set(name, Number::New(val), ReadOnly);
+                        else
+                            row->Set(name, Integer::NewFromUnsigned(val), ReadOnly);
+                    }
+                    else
+                    {
+                        const int64_t val = (int64_t)(*it)[i];
+                        if (val<INT32_MIN || val>INT32_MAX)
+                            row->Set(name, Number::New(val), ReadOnly);
+                        else
+                            row->Set(name, Integer::NewFromUnsigned(val), ReadOnly);
+                    }
+                    continue;
+                }
+
+                // 32 bit
+                if (sql_type.find("INT")!=string::npos)
+                {
+                    if (uns)
+                        row->Set(name, Integer::NewFromUnsigned((uint32_t)(*it)[i]), ReadOnly);
+                    else
+                        row->Set(name, Integer::New((int32_t)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("BOOL")!=string::npos )
+                {
+                    row->Set(name, Boolean::New((bool)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("FLOAT")!=string::npos)
+                {
+                    ostringstream val;
+                    val << setprecision(7) << (float)(*it)[i];
+                    row->Set(name, Number::New(stod(val.str())), ReadOnly);
+                    continue;
+
+                }
+                if (sql_type.find("DOUBLE")!=string::npos)
+                {
+                    row->Set(name, Number::New((double)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("CHAR")!=string::npos ||
+                    sql_type.find("TEXT")!=string::npos)
+                {
+                    row->Set(name, String::New((const char*)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                time_t date = 0;
+                if (sql_type.find("TIMESTAMP")!=string::npos)
+                    date = mysqlpp::Time((*it)[i]);
+
+                if (sql_type.find("DATETIME")!=string::npos)
+                    date = mysqlpp::DateTime((*it)[i]);
+
+                if (sql_type.find(" DATE ")!=string::npos)
+                    date = mysqlpp::Date((*it)[i]);
+
+                if (date>0)
+                {
+                    // It is important to catch the exception thrown
+                    // by Date::New in case of thread termination!
+                    const Local<Value> val = Date::New(date*1000);
+                    if (val.IsEmpty())
+                        return Undefined();
+
+                    row->Set(name, val, ReadOnly);
+                }
+            }
+
+            ret->Set(irow++, row);
+        }
+
+        if (irow>0)
+            ret->Set(String::New("cols"), cols, ReadOnly);
+
+        return handle_scope.Close(ret);
+    }
+    catch (const exception &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+#endif
+}
+
+Handle<Value> InterpreterV8::FuncDatabase(const Arguments &args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Database must be called as constructor."));
+
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 not a string."));
+
+#ifdef HAVE_SQL
+    try
+    {
+        HandleScope handle_scope;
+
+        //if (!args.IsConstructCall())
+        //    return Constructor(fTemplateDatabase, args);
+
+        Database *db = new Database(*String::AsciiValue(args[0]));
+        fDatabases.push_back(db);
+
+        Handle<Object> self = args.This();
+        self->Set(String::New("user"),     String::New(db->user.c_str()), ReadOnly);
+        self->Set(String::New("server"),   String::New(db->server.c_str()), ReadOnly);
+        self->Set(String::New("database"), String::New(db->db.c_str()), ReadOnly);
+        self->Set(String::New("port"),     db->port==0?Undefined():Integer::NewFromUnsigned(db->port), ReadOnly);
+        self->Set(String::New("query"),    FunctionTemplate::New(WrapDbQuery)->GetFunction(), ReadOnly);
+        self->Set(String::New("close"),    FunctionTemplate::New(WrapDbClose)->GetFunction(),   ReadOnly);
+        self->SetInternalField(0, External::New(db));
+
+        return handle_scope.Close(self);
+    }
+    catch (const exception &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+#endif
+}
+
+// ==========================================================================
+//                                 Services
+// ==========================================================================
+
+Handle<Value> InterpreterV8::Convert(char type, const char* &ptr)
+{
+    // Dim values are always unsigned per (FACT++) definition
+    switch (type)
+    {
+    case 'F':
+        {
+            // Remove the "imprecision" effect coming from casting a float to
+            // a double and then showing it with double precision
+            ostringstream val;
+            val << setprecision(7) << *reinterpret_cast<const float*>(ptr);
+            ptr += 4;
+            return Number::New(stod(val.str()));
+        }
+    case 'D':  { Handle<Value> v=Number::New(*reinterpret_cast<const double*>(ptr)); ptr+=8; return v; }
+    case 'I':
+    case 'L':  { Handle<Value> v=Integer::NewFromUnsigned(*reinterpret_cast<const uint32_t*>(ptr)); ptr += 4; return v; }
+    case 'X':
+        {
+            const int64_t val = *reinterpret_cast<const int64_t*>(ptr);
+            ptr += 8;
+            if (val>=0 && val<=UINT32_MAX)
+                return Integer::NewFromUnsigned(val);
+            if (val>=INT32_MIN && val<0)
+                return Integer::New(val);
+            return Number::New(val);
+        }
+    case 'S':  { Handle<Value> v=Integer::NewFromUnsigned(*reinterpret_cast<const uint16_t*>(ptr)); ptr += 2; return v; }
+    case 'C':  { Handle<Value> v=Integer::NewFromUnsigned((uint16_t)*reinterpret_cast<const uint8_t*>(ptr));  ptr += 1; return v; }
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncClose(const Arguments &args)
+{
+    HandleScope handle_scope;
+
+    //const void *ptr = Local<External>::Cast(args.Holder()->GetInternalField(0))->Value();
+
+    const String::AsciiValue str(args.This()->Get(String::New("name")));
+
+    const auto it = fReverseMap.find(*str);
+    if (it!=fReverseMap.end())
+    {
+        it->second.Dispose();
+        fReverseMap.erase(it);
+    }
+
+    args.This()->Set(String::New("isOpen"), Boolean::New(false), ReadOnly);
+
+    return handle_scope.Close(Boolean::New(JsUnsubscribe(*str)));
+}
+
+Handle<Value> InterpreterV8::ConvertEvent(const EventImp *evt, uint64_t counter, const char *str)
+{
+    const vector<Description> vec = JsDescription(str);
+
+    Handle<Object> ret = fTemplateEvent->GetFunction()->NewInstance();//Object::New();
+    if (ret.IsEmpty())
+        return Undefined();
+
+    const Local<Value> date = Date::New(evt->GetJavaDate());
+    if (date.IsEmpty())
+        return Undefined();
+
+    ret->Set(String::New("name"),    String::New(str),              ReadOnly);
+    ret->Set(String::New("format"),  String::New(evt->GetFormat().c_str()), ReadOnly);
+    ret->Set(String::New("qos"),     Integer::New(evt->GetQoS()),   ReadOnly);
+    ret->Set(String::New("size"),    Integer::New(evt->GetSize()),  ReadOnly);
+    ret->Set(String::New("counter"), Integer::New(counter),         ReadOnly);
+    if (evt->GetJavaDate()>0)
+        ret->Set(String::New("time"), date, ReadOnly);
+
+    // If names are available data will also be provided as an
+    // object. If an empty event was received, but names are available,
+    // the object will be empty. Otherwise 'obj' will be undefined.
+    // obj===undefined:               no data received
+    // obj!==undefined, length==0:    names for event available
+    // obj!==undefined, obj.length>0: names available, data received
+    Handle<Object> named = Object::New();
+    if (vec.size()>0)
+        ret->Set(String::New("obj"), named, ReadOnly);
+
+    // If no event was received (usually a disconnection event in
+    // the context of FACT++), no data is returned
+    if (evt->IsEmpty())
+        return ret;
+
+    // If valid data was received, but the size was zero, then
+    // null is returned as data
+    // data===undefined: no data received
+    // data===null:      event received, but no data
+    // data.length>0:    event received, contains data
+    if (evt->GetSize()==0 || evt->GetFormat().empty())
+    {
+        ret->Set(String::New("data"), Null(), ReadOnly);
+        return ret;
+    }
+
+    // It seems a copy is required either in the boost which comes with
+    // Ubuntu 16.04 or in gcc5 ?!
+    const string fmt = evt->GetFormat();
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(fmt, separator(";:"));
+
+    const vector<string> tok(tokenizer.begin(), tokenizer.end());
+
+    Handle<Object> arr = tok.size()>1 ? Array::New() : ret;
+    if (arr.IsEmpty())
+        return Undefined();
+
+    const char *ptr = evt->GetText();
+    const char *end = evt->GetText()+evt->GetSize();
+
+    try
+    {
+        size_t pos = 1;
+        for (auto it=tok.begin(); it<tok.end() && ptr<end; it++, pos++)
+        {
+            char type = (*it)[0];
+            it++;
+
+            string name = pos<vec.size() ? vec[pos].name : "";
+            if (tok.size()==1)
+                name = "data";
+
+            // Get element size
+            uint32_t sz = 1;
+            switch (type)
+            {
+            case 'X':
+            case 'D': sz = 8; break;
+            case 'F':
+            case 'I':
+            case 'L': sz = 4; break;
+            case 'S': sz = 2; break;
+            case 'C': sz = 1; break;
+            }
+
+            // Check if no number is attached if the size of the
+            // received data is consistent with the format string
+            if (it==tok.end() && (end-ptr)%sz>0)
+                return Exception::Error(String::New(("Number of received bytes ["+to_string(evt->GetSize())+"] does not match format ["+evt->GetFormat()+"]").c_str()));
+
+            // Check if format has a number attached.
+            // If no number is attached calculate number of elements
+            const uint32_t cnt = it==tok.end() ? (end-ptr)/sz : stoi(it->c_str());
+
+            // is_str: Array of type C but unknown size (String)
+            // is_one: Array of known size, but size is 1 (I:1)
+            const bool is_str = type=='C' && it==tok.end();
+            const bool is_one = cnt==1    && it!=tok.end();
+
+            Handle<Value> v;
+
+            if (is_str)
+                v = String::New(ptr);
+            if (is_one)
+                v = Convert(type, ptr);
+
+            // Array of known (I:5) or unknown size (I), but no string
+            if (!is_str && !is_one)
+            {
+                Handle<Object> a = Array::New(cnt);
+                if (a.IsEmpty())
+                    return Undefined();
+
+                for (uint32_t i=0; i<cnt; i++)
+                    a->Set(i, Convert(type, ptr));
+
+                v = a;
+            }
+
+            if (tok.size()>1)
+                arr->Set(pos-1, v);
+            else
+                ret->Set(String::New("data"), v, ReadOnly);
+
+            if (!name.empty())
+            {
+                const Handle<String> n = String::New(name.c_str());
+                named->Set(n, v);
+            }
+        }
+
+        if (tok.size()>1)
+            ret->Set(String::New("data"), arr, ReadOnly);
+
+        return ret;
+    }
+    catch (...)
+    {
+        return Exception::Error(String::New(("Format string conversion '"+evt->GetFormat()+"' failed.").c_str()));
+    }
+}
+/*
+Handle<Value> InterpreterV8::FuncGetData(const Arguments &args)
+{
+    HandleScope handle_scope;
+
+    const String::AsciiValue str(args.Holder()->Get(String::New("name")));
+
+    const pair<uint64_t, EventImp *> p = JsGetEvent(*str);
+
+    const EventImp *evt = p.second;
+    if (!evt)
+        return Undefined();
+
+    //if (counter==cnt)
+    //    return info.Holder();//Holder()->Get(String::New("data"));
+
+    Handle<Value> ret = ConvertEvent(evt, p.first, *str);
+    return ret->IsNativeError() ? ThrowException(ret) : handle_scope.Close(ret);
+}
+*/
+Handle<Value> InterpreterV8::FuncGetData(const Arguments &args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("Number of arguments must not be greater than 2."));
+
+    if (args.Length()>=1 && !args[0]->IsInt32() && !args[0]->IsNull())
+        return ThrowException(String::New("Argument 1 not an uint32."));
+
+    if (args.Length()==2 && !args[1]->IsBoolean())
+        return ThrowException(String::New("Argument 2 not a boolean."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+    const bool    null    = args.Length()>=1 && args[0]->IsNull();
+    const int32_t timeout = args.Length()>=1 ? args[0]->Int32Value() : 0;
+    const bool    named   = args.Length()<2 || args[1]->BooleanValue();
+
+    HandleScope handle_scope;
+
+    const Handle<String> data   = String::New("data");
+    const Handle<String> object = String::New("obj");
+
+    const String::AsciiValue name(args.Holder()->Get(String::New("name")));
+
+    TryCatch exception;
+
+    Time t;
+    while (!exception.HasCaught())
+    {
+        const pair<uint64_t, EventImp *> p = JsGetEvent(*name);
+
+        const EventImp *evt = p.second;
+        if (evt)
+        {
+            const Handle<Value> val = ConvertEvent(evt, p.first, *name);
+            if (val->IsNativeError())
+                return ThrowException(val);
+
+            // Protect against the return of an exception
+            if (val->IsObject())
+            {
+                const Handle<Object> event = val->ToObject();
+                const Handle<Value>  obj   = event->Get(named?object:data);
+                if (!obj.IsEmpty())
+                {
+                    if (!named)
+                    {
+                        // No names (no 'obj'), but 'data'
+                        if (!obj->IsUndefined())
+                            return handle_scope.Close(val);
+                    }
+                    else
+                    {
+                        // Has names and data was received?
+                        if (obj->IsObject() && obj->ToObject()->GetOwnPropertyNames()->Length()>0)
+                            return handle_scope.Close(val);
+                    }
+                }
+            }
+        }
+
+        if (args.Length()==0)
+            break;
+
+        if (!null && Time()-t>=boost::posix_time::milliseconds(abs(timeout)))
+            break;
+
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+    }
+
+    // This hides the location of the exception, which is wanted.
+    if (exception.HasCaught())
+        return exception.ReThrow();
+
+    if (timeout<0)
+        return Undefined();
+
+    const string str = "Waiting for a valid event of "+string(*name)+" timed out.";
+    return ThrowException(String::New(str.c_str()));
+}
+
+
+// This is a callback from the RemoteControl piping event handling
+// to the java script ---> in test phase!
+void InterpreterV8::JsHandleEvent(const EventImp &evt, uint64_t cnt, const string &service)
+{
+    // FIXME: This blocks service updates, we have to run this
+    //        in a dedicated thread.
+    const Locker locker;
+
+    if (fThreadId<0)
+        return;
+
+    const auto it = fReverseMap.find(service);
+    if (it==fReverseMap.end())
+        return;
+
+    const HandleScope handle_scope;
+
+    Handle<Object> obj = it->second;
+
+    const Handle<String> onchange = String::New("onchange");
+    if (!obj->Has(onchange))
+        return;
+
+    const Handle<Value> val = obj->Get(onchange);
+    if (!val->IsFunction())
+        return;
+
+    obj->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    Handle<Value> ret = ConvertEvent(&evt, cnt, service.c_str());
+    if (ret->IsObject())
+        Handle<Function>::Cast(val)->Call(obj, 1, &ret);
+
+    fThreadIds.erase(id);
+
+    if (!HandleException(exception, "Service.onchange"))
+        V8::TerminateExecution(fThreadId);
+
+    if (ret->IsNativeError())
+    {
+        JsException(service+".onchange callback - "+*String::AsciiValue(ret));
+        V8::TerminateExecution(fThreadId);
+    }
+
+    obj->CreationContext()->Exit();
+}
+
+Handle<Value> InterpreterV8::OnChangeSet(Local<String> prop, Local<Value> value, const AccessorInfo &)
+{
+    // Returns the value if the setter intercepts the request. Otherwise, returns an empty handle.
+    const string server = *String::AsciiValue(prop);
+    auto it = fStateCallbacks.find(server);
+
+    if (it!=fStateCallbacks.end())
+    {
+        it->second.Dispose();
+        fStateCallbacks.erase(it);
+    }
+
+    if (value->IsFunction())
+        fStateCallbacks[server] = Persistent<Object>::New(value->ToObject());
+
+    return Handle<Value>();
+}
+
+void InterpreterV8::JsHandleState(const std::string &server, const State &state)
+{
+    // FIXME: This blocks service updates, we have to run this
+    //        in a dedicated thread.
+    const Locker locker;
+
+    if (fThreadId<0)
+        return;
+
+    auto it = fStateCallbacks.find(server);
+    if (it==fStateCallbacks.end())
+    {
+        it = fStateCallbacks.find("*");
+        if (it==fStateCallbacks.end())
+            return;
+    }
+
+    const HandleScope handle_scope;
+
+    it->second->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    Handle<ObjectTemplate> obj = ObjectTemplate::New();
+    obj->Set(String::New("server"),  String::New(server.c_str()), ReadOnly);
+
+    if (state.index>-256)
+    {
+        obj->Set(String::New("index"),   Integer::New(state.index),          ReadOnly);
+        obj->Set(String::New("name"),    String::New(state.name.c_str()),    ReadOnly);
+        obj->Set(String::New("comment"), String::New(state.comment.c_str()), ReadOnly);
+        const Local<Value> date = Date::New(state.time.JavaDate());
+        if (!date.IsEmpty())
+            obj->Set(String::New("time"), date);
+    }
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    Handle<Value> args[] = { obj->NewInstance() };
+    Handle<Function> fun = Handle<Function>(Function::Cast(*it->second));
+    fun->Call(fun, 1, args);
+
+    fThreadIds.erase(id);
+
+    if (!HandleException(exception, "dim.onchange"))
+        V8::TerminateExecution(fThreadId);
+
+    it->second->CreationContext()->Exit();
+}
+
+// ==========================================================================
+//                           Interrupt handling
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncSetInterrupt(const Arguments &args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be 1."));
+
+    if (!args[0]->IsNull() && !args[0]->IsUndefined() && !args[0]->IsFunction())
+        return ThrowException(String::New("Argument not a function, null or undefined."));
+
+    if (args[0]->IsNull() || args[0]->IsUndefined())
+    {
+        fInterruptCallback.Dispose();
+        fInterruptCallback.Clear();
+        return Undefined();
+    }
+
+    // Returns the value if the setter intercepts the request. Otherwise, returns an empty handle.
+    fInterruptCallback = Persistent<Object>::New(args[0]->ToObject());
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::HandleInterruptImp(string str, uint64_t time)
+{
+    if (fInterruptCallback.IsEmpty())
+        return Handle<Value>();
+
+    const size_t p = str.find_last_of('\n');
+
+    const string usr = p==string::npos?"":str.substr(p+1);
+
+    string irq = p==string::npos?str:str.substr(0, p);
+    const map<string,string> data = Tools::Split(irq, true);
+
+    Local<Value>  irq_str = String::New(irq.c_str());
+    Local<Value>  usr_str = String::New(usr.c_str());
+    Local<Value>  date    = Date::New(time);
+    Handle<Object> arr    = Array::New(data.size());
+
+    if (date.IsEmpty() || arr.IsEmpty())
+        return Handle<Value>();
+
+    for (auto it=data.begin(); it!=data.end(); it++)
+        arr->Set(String::New(it->first.c_str()), String::New(it->second.c_str()));
+
+    Handle<Value> args[] = { irq_str, arr, date, usr_str };
+    Handle<Function> fun = Handle<Function>(Function::Cast(*fInterruptCallback));
+
+    return fun->Call(fun, 4, args);
+}
+
+int InterpreterV8::JsHandleInterrupt(const EventImp &evt)
+{
+    // FIXME: This blocks service updates, we have to run this
+    //        in a dedicated thread.
+    const Locker locker;
+
+    if (fThreadId<0 || fInterruptCallback.IsEmpty())
+        return -42;
+
+    const HandleScope handle_scope;
+
+    fInterruptCallback->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    const Handle<Value> val = HandleInterruptImp(evt.GetString(), evt.GetJavaDate());
+
+    fThreadIds.erase(id);
+
+    const int rc = !val.IsEmpty() && val->IsInt32() ? val->Int32Value() : 0;
+
+    if (!HandleException(exception, "interrupt"))
+        V8::TerminateExecution(fThreadId);
+
+    fInterruptCallback->CreationContext()->Exit();
+
+    return rc<10 || rc>255 ? -42 : rc;
+}
+
+Handle<Value> InterpreterV8::FuncTriggerInterrupt(const Arguments &args)
+{
+    string data;
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+
+        if (string(*str).find_first_of('\n')!=string::npos)
+            return ThrowException(String::New("No argument must contain line breaks."));
+
+        if (!*str)
+            continue;
+
+        data += *str;
+        data += ' ';
+    }
+
+    HandleScope handle_scope;
+
+    const Handle<Value> rc = HandleInterruptImp(Tools::Trim(data), Time().JavaDate());
+    return handle_scope.Close(rc);
+}
+
+// ==========================================================================
+//                           Class 'Subscription'
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncSubscription(const Arguments &args)
+{
+    if (args.Length()!=1 && args.Length()!=2)
+        return ThrowException(String::New("Number of arguments must be one or two."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    if (args.Length()==2 && !args[1]->IsFunction())
+        return ThrowException(String::New("Argument 2 must be a function."));
+
+    const String::AsciiValue str(args[0]);
+
+    if (!args.IsConstructCall())
+    {
+        const auto it = fReverseMap.find(*str);
+        if (it!=fReverseMap.end())
+            return it->second;
+
+        return Undefined();
+    }
+
+    const HandleScope handle_scope;
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("get"),    FunctionTemplate::New(WrapGetData)->GetFunction(),  ReadOnly);
+    self->Set(String::New("close"),  FunctionTemplate::New(WrapClose)->GetFunction(),    ReadOnly);
+    self->Set(String::New("name"),   String::New(*str), ReadOnly);
+    self->Set(String::New("isOpen"), Boolean::New(true));
+
+    if (args.Length()==2)
+        self->Set(String::New("onchange"), args[1]);
+
+    fReverseMap[*str] = Persistent<Object>::New(self);
+
+    void *ptr = JsSubscribe(*str);
+    if (ptr==0)
+        return ThrowException(String::New(("Subscription to '"+string(*str)+"' already exists.").c_str()));
+
+    self->SetInternalField(0, External::New(ptr));
+
+    return Undefined();
+
+    // Persistent<Object> p = Persistent<Object>::New(obj->NewInstance());
+    // obj.MakeWeak((void*)1, Cleanup);
+    // return obj;
+}
+
+// ==========================================================================
+//                            Astrometry
+// ==========================================================================
+#ifdef HAVE_NOVA
+
+double InterpreterV8::GetDataMember(const Arguments &args, const char *name)
+{
+    return args.This()->Get(String::New(name))->NumberValue();
+}
+
+Handle<Value> InterpreterV8::CalcDist(const Arguments &args, const bool local)
+{
+    if (args.Length()!=2)
+        return ThrowException(String::New("dist must not be called with two arguments."));
+
+    if (!args[0]->IsObject() || !args[1]->IsObject())
+        return ThrowException(String::New("at least one argument not an object."));
+
+    HandleScope handle_scope;
+
+    Handle<Object> obj[2] =
+    {
+        Handle<Object>::Cast(args[0]),
+        Handle<Object>::Cast(args[1])
+    };
+
+    const Handle<String> s_theta = String::New(local?"zd":"dec"); // was: zd
+    const Handle<String> s_phi   = String::New(local?"az":"ra");  // was: az
+
+    const double conv_t = M_PI/180;
+    const double conv_p = local ? -M_PI/180 : M_PI/12;
+    const double offset = local ? 0 : M_PI;
+
+    const double theta0 = offset - obj[0]->Get(s_theta)->NumberValue() * conv_t;
+    const double phi0   =          obj[0]->Get(s_phi  )->NumberValue() * conv_p;
+    const double theta1 = offset - obj[1]->Get(s_theta)->NumberValue() * conv_t;
+    const double phi1   =          obj[1]->Get(s_phi  )->NumberValue() * conv_p;
+
+    if (!finite(theta0) || !finite(theta1) || !finite(phi0) || !finite(phi1))
+        return ThrowException(String::New("some values not valid or not finite."));
+
+    /*
+    const double x0 = sin(zd0) * cos(az0);   // az0 -= az0
+    const double y0 = sin(zd0) * sin(az0);   // az0 -= az0
+    const double z0 = cos(zd0);
+
+    const double x1 = sin(zd1) * cos(az1);   // az1 -= az0
+    const double y1 = sin(zd1) * sin(az1);   // az1 -= az0
+    const double z1 = cos(zd1);
+
+    const double res = acos(x0*x1 + y0*y1 + z0*z1) * 180/M_PI;
+    */
+
+    // cos(az1-az0) = cos(az1)*cos(az0) + sin(az1)*sin(az0)
+
+    const double x = sin(theta0) * sin(theta1) * cos(phi1-phi0);
+    const double y = cos(theta0) * cos(theta1);
+
+    const double res = acos(x + y) * 180/M_PI;
+
+    return handle_scope.Close(Number::New(res));
+}
+
+Handle<Value> InterpreterV8::LocalDist(const Arguments &args)
+{
+    return CalcDist(args, true);
+}
+
+Handle<Value> InterpreterV8::SkyDist(const Arguments &args)
+{
+    return CalcDist(args, false);
+}
+
+Handle<Value> InterpreterV8::MoonDisk(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("disk must not be called with more than one argument."));
+
+    const uint64_t v = uint64_t(args[0]->NumberValue());
+    const Time utc = args.Length()==0 ? Time() : Time(v/1000, v%1000);
+
+    return Number::New(Nova::GetLunarDisk(utc.JD()));
+}
+
+Handle<Value> InterpreterV8::LocalToSky(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("toSky must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    Nova::ZdAzPosn hrz;
+    hrz.zd = GetDataMember(args, "zd");
+    hrz.az = GetDataMember(args, "az");
+
+    if (!finite(hrz.zd) || !finite(hrz.az))
+        return ThrowException(String::New("zd and az must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::EquPosn equ = Nova::GetEquFromHrz(hrz, utc.JD());
+
+    // -----------------------------
+
+    Handle<Value> arg[] = { Number::New(equ.ra/15), Number::New(equ.dec), date };
+    return handle_scope.Close(fTemplateSky->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::SkyToLocal(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("toLocal must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    Nova::EquPosn equ;
+    equ.ra  = GetDataMember(args, "ra")*15;
+    equ.dec = GetDataMember(args, "dec");
+
+    if (!finite(equ.ra) || !finite(equ.dec))
+        return ThrowException(String::New("Ra and dec must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(equ, utc.JD());
+
+    Handle<Value> arg[] = { Number::New(hrz.zd), Number::New(hrz.az), date };
+    return handle_scope.Close(fTemplateLocal->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::MoonToLocal(const Arguments &args)
+{
+    if (args.Length()>0)
+        return ThrowException(String::New("toLocal must not be called with arguments."));
+
+    Nova::EquPosn equ;
+    equ.ra  = GetDataMember(args, "ra")*15;
+    equ.dec = GetDataMember(args, "dec");
+
+    if (!finite(equ.ra) || !finite(equ.dec))
+        return ThrowException(String::New("ra and dec must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date = args.This()->Get(String::New("time"));
+    if (date.IsEmpty() || date->IsUndefined() )
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(equ, utc.JD());
+
+    Handle<Value> arg[] = { Number::New(hrz.zd), Number::New(hrz.az), date };
+    return handle_scope.Close(fTemplateLocal->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::ConstructorMoon(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("Moon constructor must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::EquPosn equ = Nova::GetLunarEquCoords(utc.JD(), 0.01);
+
+    // ----------------------------
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(MoonToLocal)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("ra"),      Number::New(equ.ra/15),  ReadOnly);
+    self->Set(String::New("dec"),     Number::New(equ.dec),    ReadOnly);
+    self->Set(String::New("toLocal"), function,                ReadOnly);
+    self->Set(String::New("time"),    date,                    ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Value> InterpreterV8::ConstructorSky(const Arguments &args)
+{
+    if (args.Length()<2 || args.Length()>3)
+        return ThrowException(String::New("Sky constructor takes two or three arguments."));
+
+    if (args.Length()==3 && !args[2]->IsDate())
+        return ThrowException(String::New("Third argument must be a Date."));
+
+    const double ra  = args[0]->NumberValue();
+    const double dec = args[1]->NumberValue();
+
+    if (!finite(ra) || !finite(dec))
+        return ThrowException(String::New("Both arguments to Sky must be valid numbers."));
+
+    // ----------------------------
+
+    HandleScope handle_scope;
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(SkyToLocal)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("ra"),      Number::New(ra),  ReadOnly);
+    self->Set(String::New("dec"),     Number::New(dec), ReadOnly);
+    self->Set(String::New("toLocal"), function,         ReadOnly);
+    if (args.Length()==3)
+        self->Set(String::New("time"), args[2], ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Value> InterpreterV8::ConstructorLocal(const Arguments &args)
+{
+    if (args.Length()<2 || args.Length()>3)
+        return ThrowException(String::New("Local constructor takes two or three arguments."));
+
+    if (args.Length()==3 && !args[2]->IsDate())
+        return ThrowException(String::New("Third argument must be a Date."));
+
+    const double zd = args[0]->NumberValue();
+    const double az = args[1]->NumberValue();
+
+    if (!finite(zd) || !finite(az))
+        return ThrowException(String::New("Both arguments to Local must be valid numbers."));
+
+    // --------------------
+
+    HandleScope handle_scope;
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(LocalToSky)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("zd"),    Number::New(zd), ReadOnly);
+    self->Set(String::New("az"),    Number::New(az), ReadOnly);
+    self->Set(String::New("toSky"), function,        ReadOnly);
+    if (args.Length()==3)
+        self->Set(String::New("time"), args[2], ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Object> InterpreterV8::ConstructRiseSet(const Handle<Value> time, const Nova::RstTime &rst, const bool &rc)
+{
+    Handle<Object> obj = Object::New();
+    obj->Set(String::New("time"), time, ReadOnly);
+
+    const uint64_t v = uint64_t(time->NumberValue());
+    const double jd = Time(v/1000, v%1000).JD();
+
+    const bool isUp = rc>0 ||
+        (rst.rise<rst.set && (jd>rst.rise && jd<rst.set)) ||
+        (rst.rise>rst.set && (jd<rst.set  || jd>rst.rise));
+
+    obj->Set(String::New("isUp"), Boolean::New(rc>=0 && isUp), ReadOnly);
+
+    if (rc!=0)
+        return obj;
+
+    Handle<Value> rise  = Date::New(Time(rst.rise).JavaDate());
+    Handle<Value> set   = Date::New(Time(rst.set).JavaDate());
+    Handle<Value> trans = Date::New(Time(rst.transit).JavaDate());
+    if (rise.IsEmpty() || set.IsEmpty() || trans.IsEmpty())
+        return Handle<Object>();
+
+    obj->Set(String::New("rise"), rise, ReadOnly);
+    obj->Set(String::New("set"), set, ReadOnly);
+    obj->Set(String::New("transit"), trans, ReadOnly);
+
+    return obj;
+}
+
+Handle<Value> InterpreterV8::SunHorizon(const Arguments &args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("Sun.horizon must not be called with one or two arguments."));
+
+    if (args.Length()==2 && !args[1]->IsDate())
+        return ThrowException(String::New("Second argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    double hrz = NAN;
+    if (args.Length()==0 || args[0]->IsNull())
+        hrz = LN_SOLAR_STANDART_HORIZON;
+    if (args.Length()>0 && args[0]->IsNumber())
+        hrz = args[0]->NumberValue();
+    if (args.Length()>0 && args[0]->IsString())
+    {
+        string arg(Tools::Trim(*String::AsciiValue(args[0])));
+        transform(arg.begin(), arg.end(), arg.begin(), ::tolower);
+
+        if (arg==string("horizon").substr(0, arg.length()))
+            hrz = LN_SOLAR_STANDART_HORIZON;
+        if (arg==string("civil").substr(0, arg.length()))
+            hrz = LN_SOLAR_CIVIL_HORIZON;
+        if (arg==string("nautical").substr(0, arg.length()))
+            hrz = LN_SOLAR_NAUTIC_HORIZON;
+        if (arg==string("fact").substr(0, arg.length()))
+            hrz = -13;
+        if (arg==string("astronomical").substr(0, arg.length()))
+            hrz = LN_SOLAR_ASTRONOMICAL_HORIZON;
+    }
+
+    if (!finite(hrz))
+        return ThrowException(String::New("Second argument did not yield a valid number."));
+
+    const Local<Value> date =
+        args.Length()<2 ? Date::New(Time().JavaDate()) : args[1];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun;
+    const int rc = ln_get_solar_rst_horizon(utc.JD()-0.5, &obs, hrz, &sun);
+    Handle<Object> rst = ConstructRiseSet(date, sun, rc);
+    rst->Set(String::New("horizon"), Number::New(hrz));
+    return handle_scope.Close(rst);
+};
+
+Handle<Value> InterpreterV8::MoonHorizon(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("Moon.horizon must not be called with one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time moon;
+    const int rc = ln_get_lunar_rst(utc.JD()-0.5, &obs, &moon);
+    Handle<Object> rst = ConstructRiseSet(date, moon, rc);
+    return handle_scope.Close(rst);
+};
+#endif
+
+// ==========================================================================
+//                            Process control
+// ==========================================================================
+
+bool InterpreterV8::HandleException(TryCatch& try_catch, const char *where)
+{
+    if (!try_catch.HasCaught() || !try_catch.CanContinue())
+        return true;
+
+    const HandleScope handle_scope;
+
+    Handle<Value> except = try_catch.Exception();
+    if (except.IsEmpty() || except->IsNull())
+        return true;
+
+    const String::AsciiValue exception(except);
+
+    const Handle<Message> message = try_catch.Message();
+    if (message.IsEmpty())
+        return false;
+
+    ostringstream out;
+
+    if (!message->GetScriptResourceName()->IsUndefined())
+    {
+        // Print (filename):(line number): (message).
+        const String::AsciiValue filename(message->GetScriptResourceName());
+        if (filename.length()>0)
+        {
+            out << *filename;
+            if (message->GetLineNumber()>0)
+                out << ": l." << message->GetLineNumber();
+            if (*exception)
+                out << ": ";
+        }
+    }
+
+    if (*exception)
+        out << *exception;
+
+    out << " [" << where << "]";
+
+    JsException(out.str());
+
+    // Print line of source code.
+    const String::AsciiValue sourceline(message->GetSourceLine());
+    if (*sourceline)
+        JsException(*sourceline);
+
+    // Print wavy underline (GetUnderline is deprecated).
+    const int start = message->GetStartColumn();
+    const int end   = message->GetEndColumn();
+
+    out.str("");
+    if (start>0)
+        out << setfill(' ') << setw(start) << ' ';
+    out << setfill('^') << setw(end-start) << '^';
+
+    JsException(out.str());
+
+    const String::AsciiValue stack_trace(try_catch.StackTrace());
+    if (stack_trace.length()<=0)
+        return false;
+
+    if (!*stack_trace)
+        return false;
+
+    const string trace(*stack_trace);
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(trace, separator("\n"));
+
+    // maybe skip: "    at internal:"
+    // maybe skip: "    at unknown source:"
+
+    auto it = tokenizer.begin();
+    JsException("");
+    while (it!=tokenizer.end())
+        JsException(*it++);
+
+    return false;
+}
+
+Handle<Value> InterpreterV8::ExecuteInternal(const string &code)
+{
+    // Try/catch and re-throw hides our internal code from
+    // the displayed exception showing the origin and shows
+    // the user function instead.
+    TryCatch exception;
+
+    const Handle<Value> result = ExecuteCode(code);
+
+    // This hides the location of the exception in the internal code,
+    // which is wanted.
+    if (exception.HasCaught())
+        exception.ReThrow();
+
+    return result;
+}
+
+Handle<Value> InterpreterV8::ExecuteCode(const string &code, const string &file)
+{
+    HandleScope handle_scope;
+
+    const Handle<String> source = String::New(code.c_str(), code.size());
+    const Handle<String> origin = String::New(file.c_str());
+    if (source.IsEmpty())
+        return Undefined();
+
+    const Handle<Script> script = Script::Compile(source, origin);
+    if (script.IsEmpty())
+        return Undefined();
+
+    const Handle<String> __date__ = String::New("__DATE__");
+    const Handle<String> __file__ = String::New("__FILE__");
+
+    Handle<Value> save_date;
+    Handle<Value> save_file;
+
+    Handle<Object> global = Context::GetCurrent()->Global();
+    if (!global.IsEmpty())
+    {
+        struct stat attrib;
+        if (stat(file.c_str(), &attrib)==0)
+        {
+            save_date = global->Get(__date__);
+            save_file = global->Get(__file__);
+
+            global->Set(__file__, String::New(file.c_str()));
+
+            const Local<Value> date = Date::New(attrib.st_mtime*1000);
+            if (!date.IsEmpty())
+                global->Set(__date__, date);
+        }
+    }
+
+    const Handle<Value> rc = script->Run();
+    if (rc.IsEmpty())
+        return Undefined();
+
+    if (!global.IsEmpty() && !save_date.IsEmpty())
+    {
+        global->ForceSet(__date__, save_date);
+        global->ForceSet(__file__, save_file);
+    }
+
+    return handle_scope.Close(rc);
+}
+
+void InterpreterV8::ExecuteConsole()
+{
+    JsSetState(3);
+
+    WindowLog lout;
+    lout << "\n " << kUnderline << " JavaScript interpreter " << kReset << " (enter '.q' to quit)\n" << endl;
+
+    Readline::StaticPushHistory("java.his");
+
+    string command;
+    while (1)
+    {
+        // Create a local handle scope so that left-overs from single
+        // console inputs will not fill up the memory
+        const HandleScope handle_scope;
+
+        // Unlocking is necessary for the preemption to work
+        const Unlocker global_unlock;
+
+        const string buffer = Tools::Trim(Readline::StaticPrompt(command.empty() ? "JS> " : " \\> "));
+        if (buffer==".q")
+            break;
+
+        // buffer empty, do nothing
+        if (buffer.empty())
+            continue;
+
+        // Compose command
+        if (!command.empty())
+            command += ' ';
+        command += buffer;
+
+        // If line ends with a backslash, allow addition of next line
+        auto back = command.rbegin();
+        if (*back=='\\')
+        {
+            *back = ' ';
+            command = Tools::Trim(command);
+            continue;
+        }
+
+        // Locking is necessary to be able to execute java script code
+        const Locker lock;
+
+        // Catch exceptions during code compilation
+        TryCatch exception;
+
+        // Execute code which was entered
+        const Handle<Value> rc = ExecuteCode(command, "console");
+
+        // If all went well and the result wasn't undefined then print
+        // the returned value.
+        if (!rc->IsUndefined() && !rc->IsFunction())
+            JsResult(*String::AsciiValue(rc));
+
+        if (!HandleException(exception, "console"))
+            lout << endl;
+
+        // Stop all other threads
+        for (auto it=fThreadIds.begin(); it!=fThreadIds.end(); it++)
+            V8::TerminateExecution(*it);
+
+        // Allow the java scripts (threads) to run and hence to terminate
+        const Unlocker unlock;
+
+        // Wait until all threads are terminated
+        while (!fThreadIds.empty())
+            usleep(1000);
+
+        // command has been executed, collect new command
+        command = "";
+    }
+
+    lout << endl;
+
+    Readline::StaticPopHistory("java.his");
+}
+
+// ==========================================================================
+//                                  CORE
+// ==========================================================================
+
+InterpreterV8::InterpreterV8() : fThreadId(-1)
+{
+    const string ver(V8::GetVersion());
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(ver, separator("."));
+
+    const vector<string> tok(tokenizer.begin(), tokenizer.end());
+
+    const int major = tok.size()>0 ? stol(tok[0]) : -1;
+    const int minor = tok.size()>1 ? stol(tok[1]) : -1;
+    const int build = tok.size()>2 ? stol(tok[2]) : -1;
+
+    if (major>3 || (major==3 && minor>9) || (major==3 && minor==9 && build>10))
+    {
+        const string argv = "--use_strict";
+        V8::SetFlagsFromString(argv.c_str(), argv.size());
+    }
+
+    /*
+     const string argv1 = "--prof";
+     const string argv2 = "--noprof-lazy";
+
+     V8::SetFlagsFromString(argv1.c_str(), argv1.size());
+     V8::SetFlagsFromString(argv2.c_str(), argv2.size());
+     */
+
+    This = this;
+}
+
+Handle<Value> InterpreterV8::Constructor(/*Handle<FunctionTemplate> T,*/ const Arguments &args)
+{
+    Handle<Value> argv[args.Length()];
+
+    for (int i=0; i<args.Length(); i++)
+        argv[i] = args[i];
+
+    return args.Callee()->NewInstance(args.Length(), argv);
+}
+
+
+void InterpreterV8::AddFormatToGlobal()// const
+{
+    const string code =
+        "String.form = function(str, arr)"
+        "{"
+            "var i = -1;"
+            "function callback(exp, p0, p1, p2, p3, p4/*, pos, str*/)"
+            "{"
+                "if (exp=='%%')"
+                    "return '%';"
+                ""
+                "if (arr[++i]===undefined)"
+                    "return undefined;"
+                ""
+                "var exp  = p2 ? parseInt(p2.substr(1)) : undefined;"
+                "var base = p3 ? parseInt(p3.substr(1)) : undefined;"
+                ""
+                "var val;"
+                "switch (p4)"
+                "{"
+                "case 's': val = arr[i]; break;"
+                "case 'c': val = arr[i][0]; break;"
+                "case 'f': val = parseFloat(arr[i]).toFixed(exp); break;"
+                "case 'p': val = parseFloat(arr[i]).toPrecision(exp); break;"
+                "case 'e': val = parseFloat(arr[i]).toExponential(exp); break;"
+                "case 'x': val = parseInt(arr[i]).toString(base?base:16); break;"
+                "case 'd': val = parseFloat(parseInt(arr[i], base?base:10).toPrecision(exp)).toFixed(0); break;"
+                //"default:\n"
+                //"    throw new SyntaxError('Conversion specifier '+p4+' unknown.');\n"
+                "}"
+                ""
+                "val = typeof(val)=='object' ? JSON.stringify(val) : val.toString(base);"
+                ""
+                "var sz = parseInt(p1); /* padding size */"
+                "var ch = p1 && p1[0]=='0' ? '0' : ' '; /* isnull? */"
+                "while (val.length<sz)"
+                    "val = p0 !== undefined ? val+ch : ch+val; /* isminus? */"
+                ""
+                "return val;"
+            "}"
+            ""
+            "var regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd])/g;"
+            "return str.replace(regex, callback);"
+        "}"
+        "\n"
+        "String.prototype.$ = function()"
+        "{"
+            "return String.form(this, Array.prototype.slice.call(arguments));"
+        "}"
+        "\n"
+        "String.prototype.count = function(c,i)"
+        "{"
+            "return (this.match(new RegExp(c,i?'gi':'g'))||[]).length;"
+        "}"/*
+        "\n"
+        "var format = function()"
+        "{"
+            "return dim.format(arguments[0], Array.prototype.slice.call(arguments,1));"
+        "}"*/;
+
+    // ExcuteInternal does not work properly here...
+    // If suring compilation an exception is thrown, it will not work
+    Handle<Script> script = Script::New(String::New(code.c_str()), String::New("internal"));
+    if (!script.IsEmpty())
+        script->Run();
+}
+
+void InterpreterV8::JsLoad(const std::string &)
+{
+    Readline::SetScriptDepth(1);
+}
+
+void InterpreterV8::JsEnd(const std::string &)
+{
+    Readline::SetScriptDepth(0);
+}
+
+bool InterpreterV8::JsRun(const string &filename, const map<string, string> &map)
+{
+    const Locker locker;
+    fThreadId = V8::GetCurrentThreadId();
+
+    JsPrint(string("JavaScript Engine V8 ")+V8::GetVersion());
+
+    JsLoad(filename);
+
+    const HandleScope handle_scope;
+
+    // Create a template for the global object.
+    Handle<ObjectTemplate> dim = ObjectTemplate::New();
+    dim->Set(String::New("log"),       FunctionTemplate::New(WrapLog),       ReadOnly);
+    dim->Set(String::New("alarm"),     FunctionTemplate::New(WrapAlarm),     ReadOnly);
+    dim->Set(String::New("wait"),      FunctionTemplate::New(WrapWait),      ReadOnly);
+    dim->Set(String::New("send"),      FunctionTemplate::New(WrapSend),      ReadOnly);
+    dim->Set(String::New("state"),     FunctionTemplate::New(WrapState),     ReadOnly);
+    dim->Set(String::New("version"),   Integer::New(DIM_VERSION_NUMBER),     ReadOnly);
+    dim->Set(String::New("getStates"), FunctionTemplate::New(WrapGetStates), ReadOnly);
+    dim->Set(String::New("getDescription"), FunctionTemplate::New(WrapGetDescription), ReadOnly);
+    dim->Set(String::New("getServices"), FunctionTemplate::New(WrapGetServices), ReadOnly);
+
+    Handle<ObjectTemplate> dimctrl = ObjectTemplate::New();
+    dimctrl->Set(String::New("defineState"), FunctionTemplate::New(WrapNewState),  ReadOnly);
+    dimctrl->Set(String::New("setState"),    FunctionTemplate::New(WrapSetState),  ReadOnly);
+    dimctrl->Set(String::New("getState"),    FunctionTemplate::New(WrapGetState),  ReadOnly);
+    dimctrl->Set(String::New("setInterruptHandler"), FunctionTemplate::New(WrapSetInterrupt), ReadOnly);
+    dimctrl->Set(String::New("triggerInterrupt"), FunctionTemplate::New(WrapTriggerInterrupt), ReadOnly);
+
+    Handle<ObjectTemplate> v8 = ObjectTemplate::New();
+    v8->Set(String::New("sleep"),   FunctionTemplate::New(WrapSleep), ReadOnly);
+    v8->Set(String::New("timeout"), FunctionTemplate::New(WrapTimeout), ReadOnly);
+    v8->Set(String::New("version"), String::New(V8::GetVersion()),    ReadOnly);
+
+    Handle<ObjectTemplate> console = ObjectTemplate::New();
+    console->Set(String::New("out"), FunctionTemplate::New(WrapOut), ReadOnly);
+    console->Set(String::New("warn"), FunctionTemplate::New(WrapWarn), ReadOnly);
+
+    Handle<ObjectTemplate> onchange = ObjectTemplate::New();
+    onchange->SetNamedPropertyHandler(OnChangeGet, WrapOnChangeSet);
+    dim->Set(String::New("onchange"), onchange);
+
+    Handle<ObjectTemplate> global = ObjectTemplate::New();
+    global->Set(String::New("v8"),      v8,      ReadOnly);
+    global->Set(String::New("dim"),     dim,     ReadOnly);
+    global->Set(String::New("dimctrl"), dimctrl, ReadOnly);
+    global->Set(String::New("console"), console, ReadOnly);
+    global->Set(String::New("include"), FunctionTemplate::New(WrapInclude),                ReadOnly);
+    global->Set(String::New("exit"),    FunctionTemplate::New(WrapExit),                   ReadOnly);
+
+    Handle<FunctionTemplate> sub = FunctionTemplate::New(WrapSubscription);
+    sub->SetClassName(String::New("Subscription"));
+    sub->InstanceTemplate()->SetInternalFieldCount(1);
+    global->Set(String::New("Subscription"), sub, ReadOnly);
+
+#ifdef HAVE_SQL
+    Handle<FunctionTemplate> db = FunctionTemplate::New(WrapDatabase);
+    db->SetClassName(String::New("Database"));
+    db->InstanceTemplate()->SetInternalFieldCount(1);
+    global->Set(String::New("Database"), db, ReadOnly);
+#endif
+
+    Handle<FunctionTemplate> thread = FunctionTemplate::New(WrapThread);
+    thread->SetClassName(String::New("Thread"));
+    global->Set(String::New("Thread"), thread, ReadOnly);
+
+    Handle<FunctionTemplate> file = FunctionTemplate::New(WrapFile);
+    file->SetClassName(String::New("File"));
+    global->Set(String::New("File"), file, ReadOnly);
+
+    Handle<FunctionTemplate> evt = FunctionTemplate::New();
+    evt->SetClassName(String::New("Event"));
+    global->Set(String::New("Event"), evt, ReadOnly);
+
+    Handle<FunctionTemplate> desc = FunctionTemplate::New();
+    desc->SetClassName(String::New("Description"));
+    global->Set(String::New("Description"), desc, ReadOnly);
+
+    fTemplateEvent = evt;
+    fTemplateDescription = desc;
+
+#ifdef HAVE_MAILX
+    Handle<FunctionTemplate> mail = FunctionTemplate::New(ConstructorMail);
+    mail->SetClassName(String::New("Mail"));
+    global->Set(String::New("Mail"), mail, ReadOnly);
+#endif
+
+#ifdef HAVE_CURL
+    Handle<FunctionTemplate> curl = FunctionTemplate::New(ConstructorCurl);
+    mail->SetClassName(String::New("Curl"));
+    global->Set(String::New("Curl"), curl, ReadOnly);
+#endif
+
+#ifdef HAVE_NOVA
+    Handle<FunctionTemplate> sky = FunctionTemplate::New(ConstructorSky);
+    sky->SetClassName(String::New("Sky"));
+    sky->Set(String::New("dist"),  FunctionTemplate::New(SkyDist), ReadOnly);
+    global->Set(String::New("Sky"), sky, ReadOnly);
+
+    Handle<FunctionTemplate> loc = FunctionTemplate::New(ConstructorLocal);
+    loc->SetClassName(String::New("Local"));
+    loc->Set(String::New("dist"),  FunctionTemplate::New(LocalDist), ReadOnly);
+    global->Set(String::New("Local"), loc, ReadOnly);
+
+    Handle<FunctionTemplate> moon = FunctionTemplate::New(ConstructorMoon);
+    moon->SetClassName(String::New("Moon"));
+    moon->Set(String::New("disk"), FunctionTemplate::New(MoonDisk), ReadOnly);
+    moon->Set(String::New("horizon"), FunctionTemplate::New(MoonHorizon), ReadOnly);
+    global->Set(String::New("Moon"), moon, ReadOnly);
+
+    Handle<FunctionTemplate> sun = FunctionTemplate::New();
+    sun->SetClassName(String::New("Sun"));
+    sun->Set(String::New("horizon"), FunctionTemplate::New(SunHorizon), ReadOnly);
+    global->Set(String::New("Sun"), sun, ReadOnly);
+
+    fTemplateLocal = loc;
+    fTemplateSky   = sky;
+#endif
+
+    // Persistent
+    Persistent<Context> context = Context::New(NULL, global);
+    if (context.IsEmpty())
+    {
+        JsException("Creation of global context failed...");
+        JsEnd(filename);
+        return false;
+    }
+
+    // Switch off eval(). It is not possible to track it's exceptions.
+    context->AllowCodeGenerationFromStrings(false);
+
+    Context::Scope scope(context);
+
+    Handle<Array> args = Array::New(map.size());
+    for (auto it=map.begin(); it!=map.end(); it++)
+        args->Set(String::New(it->first.c_str()), String::New(it->second.c_str()));
+    context->Global()->Set(String::New("$"),   args, ReadOnly);
+    context->Global()->Set(String::New("arg"), args, ReadOnly);
+
+    const Local<Value> starttime = Date::New(Time().JavaDate());
+    if (!starttime.IsEmpty())
+        context->Global()->Set(String::New("__START__"), starttime, ReadOnly);
+
+    //V8::ResumeProfiler();
+
+    TryCatch exception;
+
+    AddFormatToGlobal();
+
+    if (!exception.HasCaught())
+    {
+        JsStart(filename);
+
+        Locker::StartPreemption(10);
+
+        if (filename.empty())
+            ExecuteConsole();
+        else
+        {
+            // We call script->Run because it is the only way to
+            // catch exceptions.
+            const Handle<String> source = String::New(("include('"+filename+"');").c_str());
+            const Handle<String> origin = String::New("main");
+            const Handle<Script> script = Script::Compile(source, origin);
+            if (!script.IsEmpty())
+            {
+                JsSetState(3);
+                script->Run();
+            }
+        }
+
+        Locker::StopPreemption();
+
+        // Stop all other threads
+        for (auto it=fThreadIds.begin(); it!=fThreadIds.end(); it++)
+            V8::TerminateExecution(*it);
+        fThreadIds.clear();
+    }
+
+    // Handle an exception
+    /*const bool rc =*/ HandleException(exception, "main");
+
+    // IsProfilerPaused()
+    // V8::PauseProfiler();
+
+    // -----
+    // This is how an exit handler could look like, but there is no way to interrupt it
+    // -----
+    // Handle<Object> obj = Handle<Object>::Cast(context->Global()->Get(String::New("dim")));
+    // if (!obj.IsEmpty())
+    // {
+    //     Handle<Value> onexit = obj->Get(String::New("onexit"));
+    //     if (!onexit->IsUndefined())
+    //         Handle<Function>::Cast(onexit)->NewInstance(0, NULL); // argc, argv
+    //     // Handle<Object> result = Handle<Function>::Cast(onexit)->NewInstance(0, NULL); // argc, argv
+    // }
+
+    //context->Exit();
+
+    // The threads are started already and wait to get the lock
+    // So we have to unlock (manual preemtion) so that they get
+    // the signal to terminate.
+    {
+        const Unlocker unlock;
+
+        for (auto it=fThreads.begin(); it!=fThreads.end(); it++)
+            it->join();
+        fThreads.clear();
+    }
+
+    // Now we can dispose all persistent handles from state callbacks
+    for (auto it=fStateCallbacks.begin(); it!=fStateCallbacks.end(); it++)
+        it->second.Dispose();
+    fStateCallbacks.clear();
+
+    // Now we can dispose the persistent interrupt handler
+    fInterruptCallback.Dispose();
+    fInterruptCallback.Clear();
+
+    // Now we can dispose all persistent handles from reverse maps
+    for (auto it=fReverseMap.begin(); it!=fReverseMap.end(); it++)
+        it->second.Dispose();
+    fReverseMap.clear();
+
+#ifdef HAVE_SQL
+    // ...and close all database handles
+    for (auto it=fDatabases.begin(); it!=fDatabases.end(); it++)
+        delete *it;
+    fDatabases.clear();
+#endif
+
+    fStates.clear();
+
+    context.Dispose();
+
+    JsEnd(filename);
+
+    return true;
+}
+
+void InterpreterV8::JsStop()
+{
+    Locker locker;
+    V8::TerminateExecution(This->fThreadId);
+}
+
+vector<string> InterpreterV8::JsGetCommandList(const char *, int) const
+{
+    vector<string> rc;
+
+    rc.emplace_back("for (");
+    rc.emplace_back("while (");
+    rc.emplace_back("if (");
+    rc.emplace_back("switch (");
+    rc.emplace_back("case ");
+    rc.emplace_back("var ");
+    rc.emplace_back("function ");
+    rc.emplace_back("Date(");
+    rc.emplace_back("new Date(");
+    rc.emplace_back("'use strict';");
+    rc.emplace_back("undefined");
+    rc.emplace_back("null");
+    rc.emplace_back("delete ");
+
+    rc.emplace_back("dim.log(");
+    rc.emplace_back("dim.alarm(");
+    rc.emplace_back("dim.wait(");
+    rc.emplace_back("dim.send(");
+    rc.emplace_back("dim.state(");
+    rc.emplace_back("dim.version");
+    rc.emplace_back("dim.getStates(");
+    rc.emplace_back("dim.getDescription(");
+    rc.emplace_back("dim.getServices(");
+
+    rc.emplace_back("dimctrl.defineState(");
+    rc.emplace_back("dimctrl.setState(");
+    rc.emplace_back("dimctrl.getState(");
+    rc.emplace_back("dimctrl.setInterruptHandler(");
+    rc.emplace_back("dimctrl.triggerInterrupt(");
+
+    rc.emplace_back("v8.sleep(");
+    rc.emplace_back("v8.timeout(");
+    rc.emplace_back("v8.version()");
+
+    rc.emplace_back("console.out(");
+    rc.emplace_back("console.warn(");
+
+    rc.emplace_back("include(");
+    rc.emplace_back("exit()");
+
+#ifdef HAVE_SQL
+    rc.emplace_back("Database(");
+    rc.emplace_back("new Database(");
+
+    rc.emplace_back(".table");
+    rc.emplace_back(".user");
+    rc.emplace_back(".database");
+    rc.emplace_back(".port");
+    rc.emplace_back(".query");
+#endif
+
+    rc.emplace_back("Subscription(");
+    rc.emplace_back("new Subscription(");
+
+    rc.emplace_back("Thread(");
+    rc.emplace_back("new Thread(");
+
+    rc.emplace_back("File(");
+    rc.emplace_back("new File(");
+
+    rc.emplace_back("Event(");
+    rc.emplace_back("new Event(");
+
+    rc.emplace_back("Description(");
+    rc.emplace_back("new Description(");
+
+#ifdef HAVE_MAILX
+    rc.emplace_back("Mail(");
+    rc.emplace_back("new Mail(");
+
+    rc.emplace_back(".subject");
+    rc.emplace_back(".receipients");
+    rc.emplace_back(".attachments");
+    rc.emplace_back(".bcc");
+    rc.emplace_back(".cc");
+    rc.emplace_back(".text");
+    rc.emplace_back(".send(");
+#endif
+
+#ifdef HAVE_CURL
+    rc.emplace_back("Curl(");
+    rc.emplace_back("new Curl(");
+
+    rc.emplace_back(".url");
+    rc.emplace_back(".user");
+    rc.emplace_back(".data");
+//    rc.emplace_back(".send("); -> MAILX
+#endif
+
+#ifdef HAVE_NOVA
+    rc.emplace_back("Sky(");
+    rc.emplace_back("new Sky(");
+
+    rc.emplace_back("Sky.dist");
+    rc.emplace_back("Local(");
+
+    rc.emplace_back("new Local(");
+    rc.emplace_back("Local.dist");
+
+    rc.emplace_back("Moon(");
+    rc.emplace_back("new Moon(");
+    rc.emplace_back("Moon.disk(");
+    rc.emplace_back("Moon.horizon(");
+
+    rc.emplace_back("Sun.horizon(");
+
+    rc.emplace_back(".zd");
+    rc.emplace_back(".az");
+    rc.emplace_back(".ra");
+    rc.emplace_back(".dec");
+
+    rc.emplace_back(".toLocal(");
+    rc.emplace_back(".toSky(");
+    rc.emplace_back(".rise");
+    rc.emplace_back(".set");
+    rc.emplace_back(".transit");
+    rc.emplace_back(".isUp");
+
+    rc.emplace_back("horizon");
+    rc.emplace_back("civil");
+    rc.emplace_back("nautical");
+    rc.emplace_back("astronomical");
+#endif
+
+    rc.emplace_back(".server");
+    rc.emplace_back(".service");
+    rc.emplace_back(".name");
+    rc.emplace_back(".isCommand");
+    rc.emplace_back(".format");
+    rc.emplace_back(".description");
+    rc.emplace_back(".unit");
+    rc.emplace_back(".delim");
+    rc.emplace_back(".isOpen");
+
+    rc.emplace_back(".qos");
+    rc.emplace_back(".size");
+    rc.emplace_back(".counter");
+    rc.emplace_back(".type");
+    rc.emplace_back(".obj");
+    rc.emplace_back(".data");
+    rc.emplace_back(".comment");
+    rc.emplace_back(".index");
+    rc.emplace_back(".time");
+    rc.emplace_back(".close()");
+    rc.emplace_back(".onchange");
+    rc.emplace_back(".get(");
+
+
+    rc.emplace_back("__DATE__");
+    rc.emplace_back("__FILE__");
+
+    return rc;
+}
+
+#endif
+
+InterpreterV8 *InterpreterV8::This = 0;
Index: branches/FACT++_part_filenames/src/InterpreterV8.h
===================================================================
--- branches/FACT++_part_filenames/src/InterpreterV8.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/InterpreterV8.h	(revision 18732)
@@ -0,0 +1,238 @@
+#ifndef FACT_InterpreterV8
+#define FACT_InterpreterV8
+
+#include <map>
+#include <set>
+#include <list>
+#include <string>
+#include <thread>
+
+#ifdef HAVE_V8
+#include <v8.h>
+#endif
+
+#include "State.h"
+#include "Service.h"
+#include "Description.h"
+#include "EventImp.h"
+
+class Database;
+
+#ifdef HAVE_NOVA
+struct ln_rst_time;
+#endif
+
+class InterpreterV8
+{
+    static InterpreterV8 *This;
+
+    // The main thread id, needed to be able to terminate
+    // the thread forcefully from 'the outside'
+    int fThreadId;
+    std::set<int> fThreadIds;
+
+    // A loookup table which allows to indentify the
+    // the JavaScript object corrsponding to the
+    // service name (for checking of an .onchange
+    // subscription exists for that object)
+    std::map<std::string, v8::Persistent<v8::Object>> fReverseMap;
+
+    // Lookup table for the callbacks in cases of state changes
+    std::map<std::string, v8::Persistent<v8::Object>> fStateCallbacks;
+
+    // List of all threads
+    std::vector<std::thread> fThreads;
+
+    // List of all states already set
+    std::vector<std::pair<int, std::string>> fStates;
+
+    // Interrupt handler
+    v8::Persistent<v8::Object> fInterruptCallback;
+
+    static v8::Handle<v8::FunctionTemplate> fTemplateLocal;
+    static v8::Handle<v8::FunctionTemplate> fTemplateSky;
+    static v8::Handle<v8::FunctionTemplate> fTemplateEvent;
+    static v8::Handle<v8::FunctionTemplate> fTemplateDescription;
+
+#ifdef HAVE_SQL
+    std::list<Database*> fDatabases;
+#endif
+
+#ifdef HAVE_V8
+    bool HandleException(v8::TryCatch &try_catch, const char *where);
+    void ExecuteConsole();
+    v8::Handle<v8::Value> ExecuteCode(const std::string &code, const std::string &file="internal");
+    v8::Handle<v8::Value> ExecuteInternal(const std::string &code);
+
+    void Thread(int &id, v8::Persistent<v8::Object> _this, v8::Persistent<v8::Function> func, uint32_t ms);
+
+    std::vector<std::string> ValueToArray(const v8::Handle<v8::Value> &val, bool only=true);
+
+    v8::Handle<v8::Value> FuncWait(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSend(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSleep(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncTimeout(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncThread(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncKill(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncLog(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncAlarm(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncOut(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncWarn(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncFile(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSendMail(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSendCurl(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncInclude(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncExit(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSetState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetStates(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetDescription(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetServices(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncNewState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSetInterrupt(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncTriggerInterrupt(const v8::Arguments& args);
+    //v8::Handle<v8::Value> FuncOpen(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSubscription(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetData(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncClose(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncQuery(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDatabase(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDbQuery(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDbClose(const v8::Arguments &args);
+    v8::Handle<v8::Value> OnChangeSet(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::AccessorInfo &);
+
+    static v8::Handle<v8::Value> Constructor(const v8::Arguments &args);
+
+    static v8::Handle<v8::Value> ConstructorMail(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorCurl(const v8::Arguments &args);
+
+#ifdef HAVE_NOVA
+    static double GetDataMember(const v8::Arguments &args, const char *name);
+
+    static v8::Handle<v8::Value> CalcDist(const v8::Arguments &args, const bool);
+
+    static v8::Handle<v8::Value> LocalToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> LocalDist(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyDist(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonDisk(const v8::Arguments &args);
+    static v8::Handle<v8::Value> LocalToSky(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyToLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonToLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorMoon(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorSky(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonHorizon(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SunHorizon(const v8::Arguments &args);
+    static v8::Handle<v8::Object> ConstructRiseSet(const v8::Handle<v8::Value>, const ln_rst_time &, const bool &);
+#endif
+
+    static v8::Handle<v8::Value> WrapInclude(const v8::Arguments &args)  { if (This) return This->FuncInclude(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapFile(const v8::Arguments &args)     { if (This) return This->FuncFile(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSendMail(const v8::Arguments &args) { if (This) return This->FuncSendMail(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSendCurl(const v8::Arguments &args) { if (This) return This->FuncSendCurl(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapLog(const v8::Arguments &args)      { if (This) return This->FuncLog(args);      else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapAlarm(const v8::Arguments &args)    { if (This) return This->FuncAlarm(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapOut(const v8::Arguments &args)      { if (This) return This->FuncOut(args);      else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapWarn(const v8::Arguments &args)     { if (This) return This->FuncWarn(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapWait(const v8::Arguments &args)     { if (This) return This->FuncWait(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSend(const v8::Arguments &args)     { if (This) return This->FuncSend(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSleep(const v8::Arguments &args)    { if (This) return This->FuncSleep(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapTimeout(const v8::Arguments &args)  { if (This) return This->FuncTimeout(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapThread(const v8::Arguments &args)   { if (This) return This->FuncThread(args);   else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapKill(const v8::Arguments &args)     { if (This) return This->FuncKill(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapExit(const v8::Arguments &args)     { if (This) return This->FuncExit(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapState(const v8::Arguments &args)    { if (This) return This->FuncState(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapNewState(const v8::Arguments &args) { if (This) return This->FuncNewState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSetState(const v8::Arguments &args) { if (This) return This->FuncSetState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetState(const v8::Arguments &args) { if (This) return This->FuncGetState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetStates(const v8::Arguments &args){ if (This) return This->FuncGetStates(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetDescription(const v8::Arguments &args){ if (This) return This->FuncGetDescription(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetServices(const v8::Arguments &args){ if (This) return This->FuncGetServices(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSetInterrupt(const v8::Arguments &args){ if (This) return This->FuncSetInterrupt(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapTriggerInterrupt(const v8::Arguments &args){ if (This) return This->FuncTriggerInterrupt(args);else return v8::Undefined(); }
+    //static v8::Handle<v8::Value> WrapOpen(const v8::Arguments &args)     { if (This) return This->FuncOpen(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSubscription(const v8::Arguments &args){ if (This) return This->FuncSubscription(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetData(const v8::Arguments &args)  { if (This) return This->FuncGetData(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapClose(const v8::Arguments &args)    { if (This) return This->FuncClose(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapQuery(const v8::Arguments &args)    { if (This) return This->FuncQuery(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDatabase(const v8::Arguments &args) { if (This) return This->FuncDatabase(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDbQuery(const v8::Arguments &args)  { if (This) return This->FuncDbQuery(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDbClose(const v8::Arguments &args)  { if (This) return This->FuncDbClose(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapOnChangeSet(v8::Local<v8::String> prop, v8::Local<v8::Value> value, const v8::AccessorInfo &info)
+    {
+        if (This) return This->OnChangeSet(prop, value, info);  else return v8::Undefined();
+    }
+
+    static v8::Handle<v8::Value> OnChangeGet(v8::Local<v8::String>, const v8::AccessorInfo &)
+    {
+        return v8::Handle<v8::Value>();
+    }
+
+    static v8::Handle<v8::Value> Convert(char type, const char* &ptr);
+    v8::Handle<v8::Value> ConvertEvent(const EventImp *evt, uint64_t, const char *str);
+#endif
+
+    v8::Handle<v8::Value> HandleInterruptImp(std::string, uint64_t);
+
+public:
+    InterpreterV8();
+    virtual ~InterpreterV8()
+    {
+        This = 0;
+
+#ifdef HAVE_V8
+        //v8::Locker locker;
+        v8::V8::Dispose();
+#endif
+    }
+
+    std::vector<std::string> JsGetCommandList(const char *, int) const;
+
+    virtual void  JsLoad(const std::string & = "");
+    virtual void  JsStart(const std::string &) { }
+    virtual void  JsEnd(const std::string & = "");
+    virtual void  JsPrint(const std::string & = "") { }
+    virtual void  JsAlarm(const std::string & = "") { }
+    virtual void  JsOut(const std::string &) { }
+    virtual void  JsWarn(const std::string &) { }
+    virtual void  JsResult(const std::string &) { }
+    virtual void  JsException(const std::string &) { }
+    virtual bool  JsSend(const std::string &) { return true; }
+    //virtual void  JsSleep(uint32_t) { }
+    //virtual int   JsWait(const std::string &, int32_t, uint32_t) { return -1; };
+    virtual State JsState(const std::string &) { return State(); };
+    virtual void *JsSubscribe(const std::string &) { return 0; };
+    virtual bool  JsUnsubscribe(const std::string &) { return false; };
+
+    virtual bool  JsNewState(int, const std::string&, const std::string&) { return false; }
+    virtual bool  JsSetState(int) { return false; }
+    virtual bool  JsHasState(int) const { return false; }
+    virtual bool  JsHasState(const std::string &) const { return false; }
+    virtual int   JsGetState(const std::string &) const { return -2; }
+    virtual State JsGetCurrentState() const { return State(); }
+    virtual std::vector<State> JsGetStates(const std::string &) { return std::vector<State>(); }
+    virtual std::set<Service> JsGetServices() { return std::set<Service>(); }
+    virtual std::vector<Description> JsGetDescription(const std::string &) { return std::vector<Description>(); }
+
+    virtual std::vector<Description> JsDescription(const std::string &) { return std::vector<Description>(); };
+    virtual std::pair<uint64_t, EventImp *> JsGetEvent(const std::string &) { return std::make_pair(0, (EventImp*)0); };
+
+    int JsHandleInterrupt(const EventImp &);
+    void JsHandleEvent(const EventImp &, uint64_t, const std::string &);
+    void JsHandleState(const std::string &, const State &);
+
+    void AddFormatToGlobal();
+
+    bool JsRun(const std::string &, const std::map<std::string,std::string> & = std::map<std::string,std::string>());
+    static void JsStop();
+};
+
+#ifndef HAVE_V8
+inline bool InterpreterV8::JsRun(const std::string &, const std::map<std::string,std::string> &) { return false; }
+inline void InterpreterV8::JsStop() { }
+#endif
+
+#endif
Index: branches/FACT++_part_filenames/src/LocalControl.h
===================================================================
--- branches/FACT++_part_filenames/src/LocalControl.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/LocalControl.h	(revision 18732)
@@ -0,0 +1,232 @@
+#ifndef FACT_LocalControl
+#define FACT_LocalControl
+
+#include <ostream>
+
+// **************************************************************************
+/** @class LocalControl
+
+@brief Implements a local control for a StateMachine based on a Readline class
+
+This template implements all functions which overwrite any function from the
+Readline class needed for a local control of a state machien. Since
+several derivatives of the Readline class implement different kind of
+Readline access, this class can be derived by any of them due to its
+template argument. However, the normal case will be deriving it from
+either Console or Shell.
+
+@tparam T
+   The base class for RemoteControl. Either Readlien or a class
+   deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "tools.h"
+
+#include "WindowLog.h"
+#include "StateMachineImp.h"
+
+using namespace std;
+
+template <class T>
+class LocalControl : public T
+{
+private:
+    char **Completion(const char *text, int pos, int)
+    {
+        return pos>0 ? 0 : T::Complete(fStateMachine->GetEventNames(), text);
+    }
+
+protected:
+    StateMachineImp *fStateMachine;
+
+    std::ostream &lout;
+
+    std::string fName;
+
+    LocalControl(const char *name) : T(name), 
+        fStateMachine(0), lout(T::GetStreamIn()),
+#if BOOST_VERSION < 104600
+        fName(boost::filesystem::path(name).filename())
+#else
+        fName(boost::filesystem::path(name).filename().string())
+#endif
+    { }
+
+    bool PrintGeneralHelp()
+    {
+        T::PrintGeneralHelp();
+        lout << " " << kUnderline << "Specific commands:" << endl;
+        lout << kBold << "   ac,allowed   " << kReset << "Display a list of all currently allowed commands." << endl;
+        lout << kBold << "   st,states    " << kReset << "Display a list of the available states with description." << endl;
+        lout << kBold << "   > <text>     " << kReset << "Echo <text> to the output stream" << endl;
+        lout << kBold << "   .s           " << kReset << "Wait for the state-machine to change to the given state.\n";
+        lout <<          "                "              "     .s <server> [<state> [<timeout> [<label>]]]\n";
+        lout <<          "                "              "<server>  The server for which state to wait (e.g. FTM_CONTROL)\n";
+        lout <<          "                "              "<state>   The state id (see 'states') for which to wait (e.g. 3)\n";
+        lout <<          "                "              "<imeout>  A timeout in millisenconds how long to wait (e.g. 500)\n";
+        lout <<          "                "              "<label>   A label until which everything is skipped in case of timeout\n";
+        lout << endl;
+        return true;
+    }
+    bool PrintCommands()
+    {
+        lout << endl << kBold << "List of commands:" << endl;
+        fStateMachine->PrintListOfEvents(lout);
+        lout << endl;
+
+        return true;
+    }
+
+    bool Process(const std::string &str)
+    {
+        if (str.substr(0, 2)=="h " || str.substr(0, 5)=="help ")
+        {
+            lout << endl;
+            fStateMachine->PrintListOfEvents(lout, str.substr(str.find_first_of(' ')+1));
+            lout << endl;
+
+            return true;
+        }
+        if (str=="states" || str=="st")
+        {
+            fStateMachine->PrintListOfStates(lout);
+            return true;
+        }
+        if (str=="allowed" || str=="ac")
+        {
+            lout << endl << kBold << "List of commands allowed in current state:" << endl;
+            fStateMachine->PrintListOfAllowedEvents(lout);
+            lout << endl;
+            return true;
+        }
+
+        if (str.substr(0, 3)==".s ")
+        {
+            istringstream in(str.substr(3));
+
+            int state=-100, ms=0;
+            in >> state >> ms;
+
+            if (state==-100)
+            {
+                lout << kRed << "Couldn't parse state id in '" << str.substr(3) << "'" << endl;
+                return true;
+            }
+
+            const Time timeout = ms<=0 ? Time(Time::none) : Time()+boost::posix_time::millisec(ms);
+
+            while (fStateMachine->GetCurrentState()!=state && timeout>Time() && !T::IsScriptStopped())
+                usleep(1);
+
+            if (fStateMachine->GetCurrentState()==state)
+                return true;
+
+            int label = -1;
+            in >> label;
+            if (in.fail() && !in.eof())
+            {
+                lout << kRed << "Invalid label in '" << str.substr(3) << "'" << endl;
+                T::StopScript();
+                return true;
+            }
+            T::SetLabel(label);
+
+            return true;
+        }
+
+        if (str[0]=='>')
+        {
+            fStateMachine->Comment(Tools::Trim(str.substr(1)));
+            return true;
+        }
+
+        if (T::Process(str))
+            return true;
+
+        return !fStateMachine->PostEvent(lout, str);
+    }
+
+public:
+
+    void SetReceiver(StateMachineImp &imp) { fStateMachine = &imp; }
+};
+
+// **************************************************************************
+/** @class LocalStream
+
+@brief Derives the LocalControl from ConsoleStream
+
+This is basically a LocalControl, which derives through the template
+argument from the ConsoleStream class. 
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+class LocalStream : public LocalControl<ConsoleStream>
+{
+public:
+    LocalStream(const char *name, bool null = false)
+        : LocalControl<ConsoleStream>(name) { SetNullOutput(null); }
+};
+
+// **************************************************************************
+/** @class LocalConsole
+
+@brief Derives the LocalControl from Control and adds prompt
+
+This is basically a LocalControl, which derives through the template
+argument from the Console class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "tools.h"
+
+class LocalConsole : public LocalControl<Console>
+{
+public:
+    LocalConsole(const char *name, bool continous=false)
+        : LocalControl<Console>(name)
+    {
+        SetContinous(continous);
+    }
+
+    string GetUpdatePrompt() const
+    {
+        return GetLinePrompt()+" "
+            "\033[34m\033[1m"+fName+"\033[0m:"
+            "\033[32m\033[1m"+fStateMachine->GetStateName()+"\033[0m> ";
+    }
+};
+
+// **************************************************************************
+/** @class LocalShell
+
+@brief Derives the LocalControl from Shell and adds a colored prompt
+
+This is basically a LocalControl, which derives through the template
+argument from the Shell class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class LocalShell : public LocalControl<Shell>
+{
+public:
+    LocalShell(const char *name, bool = false)
+        : LocalControl<Shell>(name) { }
+
+    string GetUpdatePrompt() const
+    {
+        return GetLinePrompt()+' '+fName+':'+fStateMachine->GetStateName()+"> ";
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Main.h
===================================================================
--- branches/FACT++_part_filenames/src/Main.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Main.h	(revision 18732)
@@ -0,0 +1,270 @@
+#ifndef FACT_Main
+#define FACT_Main
+
+#include <map>
+#include <thread>
+#include <functional>
+
+#include <boost/filesystem.hpp>
+
+#include "dim.h"
+
+#include "Dim.h"
+#include "Time.h"
+#include "MainImp.h"
+#include "Readline.h"
+#include "WindowLog.h"
+#include "MessageImp.h"
+#include "Configuration.h"
+
+namespace Main
+{
+    using namespace std;
+    namespace fs = boost::filesystem;
+
+    void SetupConfiguration(Configuration &conf)
+    {
+        const string n = conf.GetName()+".log";
+
+        po::options_description config("Program options");
+        config.add_options()
+            ("dns",        var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+            ("host",       var<string>(),                  "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+            ("log,l",      var<string>(n), "Name of local log-file")
+            ("logpath",    var<string>(),  "Absolute path to log-files (default: excutable's directory)")
+            ("no-log",     po_switch(),    "Supress log-file")
+            ("append-log", po_bool(),      "Append log information to local log-file")
+            ("null",       po_switch(),    "Suppresses almost all console output - including errors (only available without --console option)")
+            ("console,c",  var<int>(),     "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+            ("cmd",        vars<string>(), "Execute one or more commands at startup")
+            ("exec,e",     vars<string>(), "Execute one or more scrips at startup ('file:N' - start at label N)")
+            ("arg:*",      var<string>(),  "Arguments for script execution with --exc, e.g. --arg:ra='12.5436'")
+            ("home",       var<string>(),  "Path to home directory (used as default for logpath if standard log files not writable)")
+            ("quit",       po_switch(),    "Quit after startup");
+        ;
+
+        conf.AddEnv("dns",  "DIM_DNS_NODE");
+        conf.AddEnv("host", "DIM_HOST_NODE");
+        conf.AddEnv("home", "HOME");
+
+        conf.AddOptions(config);
+    }
+
+    void PrintUsage()
+    {
+        cout <<
+            "Files:\n"
+            "The following files are written by each program by default\n"
+            "  program.evt:   A log of all executed of skipped events\n"
+            "  program.his:   The history accessible by Pg-up/dn\n"
+            "  program.log:   All output piped to the log-stream\n"
+            << endl;
+    }
+
+    template<class T>
+    void PrintHelp()
+    {
+        Dim::Setup();
+
+        ofstream fout("/dev/null");
+
+        T io_service(fout);
+
+        io_service.PrintListOfStates(cout);
+        cout << "\nList of available commands:\n";
+        io_service.PrintListOfEvents(cout);
+        cout << "\n";
+    }
+
+    void Thread(MainImp *io_service, bool dummy, int &rc)
+    {
+        // This is necessary so that the StateMachien Thread can signal the
+        // Readline to exit
+        rc = io_service->Run(dummy);
+        Readline::Stop();
+    }
+
+    template<class T, class S>
+    int execute(Configuration &conf, bool dummy=false)
+    {
+        Dim::Setup(conf.Get<string>("dns"), conf.Has("host")?conf.Get<string>("host"):"");
+
+        // -----------------------------------------------------------------
+        const fs::path program(conf.GetName());
+
+        // Split path to program into path and filename
+        const string prgpath = program.parent_path().string();
+
+#if BOOST_VERSION < 104600
+        const string prgname = program.filename();
+#else
+        const string prgname = program.filename().string();
+#endif
+
+        fs::path path = conf.Has("logpath") ? conf.Get<string>("logpath") : "";
+
+        // No explicit path given
+        if (path.empty())
+        {
+            path = prgpath.empty() ? "." : prgpath;
+
+            // default path not accessible
+            if (access(prgpath.c_str(), W_OK))
+            {
+                path = ".";
+
+                if (conf.Has("home"))
+                {
+                    path  = conf.Get<string>("home");
+                    path /= ".fact++";
+                }
+            }
+        }
+
+        // Create directories if necessary
+        fs::create_directories(path);
+
+        // -----------------------------------------------------------------
+
+        static T shell((path/prgname).string().c_str(),
+                       conf.Has("console") ? conf.Get<int>("console")!=1 : conf.Get<bool>("null"));
+
+        WindowLog &win  = shell.GetStreamIn();
+        WindowLog &wout = shell.GetStreamOut();
+
+        // Switching off buffering is not strictly necessary, since
+        // the destructor of shell should flush everything still buffered,
+        // nevertheless it helps to debug problems in the initialization
+        // sequence.
+        const bool backlog = wout.GetBacklog();
+        const bool null    = wout.GetNullOutput();
+        if (conf.Has("console") || !conf.Get<bool>("null"))
+        {
+            wout.SetBacklog(false);
+            wout.SetNullOutput(false);
+            wout.Display(true);
+        }
+
+        if (conf.Has("log") && !conf.Get<bool>("no-log"))
+        {
+#if BOOST_VERSION < 104600
+            const fs::path file = fs::path(conf.Get<string>("log")).filename();
+#else
+            const fs::path file = fs::path(conf.Get<string>("log")).filename();
+#endif
+            if (!wout.OpenLogFile((path/file).string(), conf.Get<bool>("append-log")))
+                win << kYellow << "WARNING - Couldn't open log-file " << (path/file).string() << ": " << strerror(errno) << endl;
+        }
+
+        S io_service(wout);
+
+        const Time now;
+        io_service.Write(now, "/----------------------- Program ------------------------");
+        io_service.Write(now, "| Program:  " PACKAGE_STRING " ("+prgname+":"+to_string(getpid())+")");
+        io_service.Write(now, "| CallPath: "+prgpath);
+        io_service.Write(now, "| Compiled: " __DATE__ " " __TIME__ );
+        io_service.Write(now, "| Revision: " REVISION);
+        io_service.Write(now, "| DIM:      v"+to_string(DIM_VERSION_NUMBER/100)+"r"+to_string(DIM_VERSION_NUMBER%100)+" ("+io_service.GetName()+")");
+        io_service.Write(now, "| Contact:  " PACKAGE_BUGREPORT);
+        io_service.Write(now, "| URL:      " PACKAGE_URL);
+        io_service.Write(now, "| Start:    "+now.GetAsStr("%c"));
+        io_service.Write(now, "\\----------------------- Options ------------------------");
+        const multimap<string,string> mmap = conf.GetOptions();
+        for (auto it=mmap.begin(); it!=mmap.end(); it++)
+            io_service.Write(now, ": "+it->first+(it->second.empty()?"":" = ")+it->second);
+
+        const map<string,string> &args = conf.GetOptions<string>("arg:");
+        if (!args.empty())
+        {
+            io_service.Write(now, "------------------------ Arguments ----------------------", MessageImp::kMessage);
+
+            for (auto it=args.begin(); it!=args.end(); it++)
+            {
+                ostringstream str;
+                str.setf(ios_base::left);
+                str << ": " << it->first << " = " << it->second;
+                io_service.Write(now, str.str(), MessageImp::kMessage);
+            }
+        }
+
+        io_service.Write(now, "\\------------------- Evaluating options -----------------");
+        const int rc = io_service.EvalOptions(conf);
+        if (rc>=0)
+        {
+            ostringstream str;
+            str << "Exit triggered by EvalOptions with rc=" << rc;
+            io_service.Write(now, str.str(), rc==0?MessageImp::kInfo:MessageImp::kError);
+            return rc;
+        }
+
+        const map<string,string> &wco = conf.GetWildcardOptions();
+        if (!wco.empty())
+        {
+            io_service.Write(now, "------------- Unrecognized wildcard options -------------", MessageImp::kWarn);
+
+            size_t max = 0;
+            for (auto it=wco.begin(); it!=wco.end(); it++)
+                if (it->second.length()>max)
+                    max = it->second.length();
+
+            for (auto it=wco.begin(); it!=wco.end(); it++)
+            {
+                ostringstream str;
+                str.setf(ios_base::left);
+                str << setw(max+1) << it->second << " : " << it->first;
+                io_service.Write(now, str.str(), MessageImp::kWarn);
+            }
+            io_service.Write(now, "Unrecognized options found, will exit with rc=127", MessageImp::kError);
+            return 127;
+        }
+
+        io_service.Message("==================== Starting main loop =================");
+
+        if (conf.Has("console") || !conf.Get<bool>("null"))
+        {
+            wout.SetNullOutput(null);
+            wout.SetBacklog(backlog);
+        }
+
+        shell.SetReceiver(io_service);
+
+        //    boost::thread t(boost::bind(&AutoScheduler<S>::Run, &io_service));
+        int ret = 0;
+        thread t(bind(Main::Thread, &io_service, dummy, ref(ret)));
+
+        // Wait until state machine is ready (The only case I can imagine
+        // in which the state will never chane is when DIM triggers
+        // an exit before the state machine has been started at all.
+        // Hopefully checking the readline (see Threed) should fix
+        // that -- difficult to test.)
+        while ((io_service.GetCurrentState()<StateMachineImp::kSM_Ready ||
+                !io_service.MessageQueueEmpty()) && !shell.IsStopped())
+            usleep(1);
+
+        // Execute command line commands
+        const vector<string> v1 = conf.Vec<string>("cmd");
+        for (vector<string>::const_iterator it=v1.begin(); it!=v1.end(); it++)
+            shell.ProcessLine(*it);
+
+        const vector<string> v2 = conf.Vec<string>("exec");
+        for (vector<string>::const_iterator it=v2.begin(); it!=v2.end(); it++)
+            shell.Execute(*it, args);
+
+        // Run the shell if no immediate exit was requested
+        if (!conf.Get<bool>("quit"))
+            shell.Run();
+
+        io_service.Stop();           // Signal Loop-thread to stop
+        // io_service.Close();       // Obsolete, done by the destructor
+        // wout << "join: " << t.timed_join(boost::posix_time::milliseconds(0)) << endl;
+
+        // Wait until the StateMachine has finished its thread
+        // before returning and destroying the dim objects which might
+        // still be in use.
+        t.join();
+
+        return ret;
+    }
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/MainImp.h
===================================================================
--- branches/FACT++_part_filenames/src/MainImp.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/MainImp.h	(revision 18732)
@@ -0,0 +1,12 @@
+#ifndef FACT_MainImp
+#define FACT_MainImp
+
+class MainImp
+{
+public:
+    virtual ~MainImp() {}
+    virtual int Run(bool) = 0;
+    virtual void Stop(int) = 0;
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/MessageDim.cc
===================================================================
--- branches/FACT++_part_filenames/src/MessageDim.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/MessageDim.cc	(revision 18732)
@@ -0,0 +1,164 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// **************************************************************************
+/** @class MessageDimTX
+
+@brief Based on MessageImp, redirects log-output to a Dim service MESSAGE
+
+This is a special DimService which offers SERVER/MESSAGE to the DimNetwork
+and redirects output issued via its base-class MessageImp to the Dim
+service. The severity of the message is send as qualiy of service of
+the service message.
+
+@section Examples
+
+ - A simple and usefull example can be found in \ref log.cc and \ref logtime.cc
+
+**/
+// **************************************************************************
+
+// --------------------------------------------------------------------------
+//
+//! Constructs a DimService with the name SERVER/MESSAGE. And passes the
+//! given ostream down to the MessageImp base.
+//!
+//! @param name
+//!    Name of the message server to which we want to subscribe, e.g. DRIVE
+//!
+//! @param out
+//!    ostream passed to MessageImp. It is used to redirect the output to.
+//
+MessageDimTX::MessageDimTX(const std::string &name, std::ostream &out)
+    : DimDescribedService(name + "/MESSAGE", const_cast<char*>("C"),
+                          "A general logging service providing a quality of service (severity)"
+                          "|Message[string]:The message"),
+    MessageImp(out), fDebug(false),
+    fMsgQueue(std::bind(&MessageDimTX::UpdateService, this, placeholders::_1))
+{
+    // This is a message which will never arrive because
+    // the time to establish a client-sever connection is
+    // too short.
+    Message("MessageDimTX started.");
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+MessageDimTX::~MessageDimTX()
+{
+    // Everything here will never be sent by dim because the
+    // dim services have been stopped already. This is necessary,
+    // to have them available already during startup
+    Message("MessageDimTX shutting down ["+to_string(fMsgQueue.size())+"]");
+    fMsgQueue.wait();
+}
+
+bool MessageDimTX::UpdateService(const tuple<Time,string,int> &data)
+{
+    setData(get<1>(data));
+    setQuality(get<2>(data));
+
+    const int rc = DimDescribedService::Update(get<0>(data));
+    if (rc==0 && fDebug)
+        Out() << " !! " << get<0>(data).GetAsStr() << " - Sending failed!" << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! First calls MessageImp::Write to output the message tobe transmitted
+//! also to a local logging stream. Then the Dim service is updated.
+//! If sending of the message failed a message is written to the
+//! logging stream stored in MessageImp. It is intentionally not
+//! output through Update to make it look different than usual
+//! transmitted messages.
+//
+int MessageDimTX::Write(const Time &t, const string &txt, int qos)
+{
+    MessageImp::Write(t, txt, qos);
+    fMsgQueue.emplace(t, txt, qos);
+    return 1;
+}
+
+// **************************************************************************
+/** @class MessageDimRX
+
+@brief Based on MessageImp, subscribes to a MESSAGE service in the Dim network
+
+This is a special DimInfoHandler. It subscribes to a service SERVER/MESSAGE
+on the DimNetwork and redirects all received output to its base class
+MessageImp view MessageImp::Write. the quality of service received with
+each service update is passed as severity.
+
+@section Examples
+
+ - A simple and usefull example can be found in \ref log.cc and \ref logtime.cc
+
+ @todo Maybe it is not a good idea that MessageImp is a base class,
+ maybe it should be a reference given in the constructor
+
+**/
+// **************************************************************************
+
+// --------------------------------------------------------------------------
+//
+//! Setup a DimStamedInfo service subscription for SERVER/MESSAGE
+//!
+//! @param name
+//!    the name of the SERVER
+//!
+//! @param imp
+//!    A reference to MessageImo to which messages will be redirected
+//
+MessageDimRX::MessageDimRX(const std::string &name, MessageImp &imp)
+: fMinLogLevel(0), fConnected(false), fMsg(imp),
+fDimMessage((name+"/MESSAGE").c_str(), (void*)NULL, 0, this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! If the server has been disconnected write a simple log-message.
+//! Skip all received messages which have a severity smaller than
+//! fMinLogLevel. Write any other message with MessageImp::Write.
+//
+void MessageDimRX::infoHandler()
+{
+    if (getInfo()!=&fDimMessage)
+        return;
+
+    const string name   = fDimMessage.getName();
+    const string server = name.substr(0, name.find_first_of('/'));
+
+    fConnected = fDimMessage.getSize()!=0;
+
+    // The server is diconnected. Do nothing
+    if (!fConnected)
+    {
+        // We cannot print this message because it is produced by
+        // every server which doesn't have the MESSAGE service, too.
+        //fMsg.Message(server+": Disconnected.");
+        return;
+    }
+
+    // skip all messages with a severity smaller than the minimum log level
+    if (fDimMessage.getQuality()<fMinLogLevel)
+        return;
+
+    const string msg = server+": "+fDimMessage.getString();
+
+    // Make sure getTimestamp is called _before_ getTimestampMillisecs
+    // Must be in exactly this order!
+    const int tsec = fDimMessage.getTimestamp();
+    const int tms  = fDimMessage.getTimestampMillisecs();
+
+    // Write the received message to the output
+    fMsg.Write(Time(tsec, tms*1000), msg, fDimMessage.getQuality());
+}
Index: branches/FACT++_part_filenames/src/MessageDim.h
===================================================================
--- branches/FACT++_part_filenames/src/MessageDim.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/MessageDim.h	(revision 18732)
@@ -0,0 +1,56 @@
+#ifndef FACT_MessageDim
+#define FACT_MessageDim
+
+#include "MessageImp.h"
+#include "DimDescriptionService.h"
+//#include <dis.hxx> // DimService
+
+#include "../externals/Queue.h"
+
+class MessageDimTX : public DimDescribedService, public MessageImp
+{
+private:
+    bool fDebug;
+
+    Queue<std::tuple<Time,std::string,int>> fMsgQueue;
+
+    bool UpdateService(const std::tuple<Time,std::string,int> &data);
+
+public:
+    MessageDimTX(const std::string &name, std::ostream &out=std::cout);
+    ~MessageDimTX();
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    void SetDebug(bool b=true) { fDebug=b; }
+
+    bool MessageQueueEmpty() const { return fMsgQueue.empty(); }
+};
+
+
+
+#include <dic.hxx> // DimStampedInfo
+
+class MessageDimRX : public DimInfoHandler
+{
+private:
+    int  fMinLogLevel;
+    bool fConnected;
+
+protected:
+    MessageImp &fMsg;
+
+private:
+    DimStampedInfo fDimMessage;
+
+protected:
+    void infoHandler();
+
+public:
+    MessageDimRX(const std::string &name, MessageImp &imp);
+
+    void SetMinLogLevel(int min=0) { fMinLogLevel=min; }
+    bool IsConnected() const { return fConnected; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/MessageImp.cc
===================================================================
--- branches/FACT++_part_filenames/src/MessageImp.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/MessageImp.cc	(revision 18732)
@@ -0,0 +1,182 @@
+// **************************************************************************
+/** @class MessageImp
+
+@brief The base implementation of a distributed messaging system
+
+
+Overwriting the Write() member function allows to change the look and
+feel and also the target of the messages issued through a MessageImp
+
+**/
+// **************************************************************************
+#include "MessageImp.h"
+
+#include <stdarg.h>
+
+#include <mutex>
+
+#include "tools.h"
+#include "Time.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Stores a reference to the given ostream in fOut. This is the stream to
+//! which all messaged issued are redirected by default if Write() has
+//! not been overwritten doing something else
+//!
+//! The stored reference can be accessed by either
+//!    operator()() or Out()
+//!
+//! Note, that you have to ensure the stream which is references doesn't
+//! go out of scope while in use by MessageImp or one of its derivatives.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//
+MessageImp::MessageImp(ostream &out) : fOut(out)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a special write function formatting a string when the
+//! state of a state machine has changed.
+//! 
+//! If the state is <-1 nothing is done.
+//!
+//! Calls the virtual function IndicateStateChange
+//!
+//! @param time
+//!    The time assigned to the message
+//!
+//! @param server
+//!    The server name which is emitting the state change
+//!
+//! @param msg
+//!    The message text
+//!
+//! @param state
+//!    The new state of the system
+//
+void MessageImp::StateChanged(const Time &time, const string &server, const string &msg, int state)
+{
+    if (state<-1)
+        return;
+
+    ostringstream out;
+    out << server << ": Changed state to " << state << " '" << msg << "' received.";
+
+    Write(time, out.str(), MessageImp::kInfo);
+
+    IndicateStateChange(time, server);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The basic implementation of the output of a message to the output
+//! stream. This can overwritten by inheriting classes. The default is
+//! to redirect the message to the stream fOut. In addition colors
+//! from WindowLog are used depending on the severity. The color are ignored
+//! if the stream is not of type WindowLog.
+//!
+//! The default message has the form:
+//!     ## 2011-02-22 11:13:32.000754 - Text message.
+//!
+//! while ## is a placeholder depending on the severity of the message, e.g.
+//!
+//!     kMessage:  default    ->
+//!     kInfo:     green      I>
+//!     kWarn:     yellow     W>
+//!     kError:    red        E>
+//!     kAlarm     red        E>
+//!     kFatal:    red-blink  !>
+//!     kDebug:    blue
+//!     default:   bold       >>
+//!
+//! @param time
+//!    The time assigned to the message
+//!
+//! @param txt
+//!    The message text
+//!
+//! @param severity
+//!    The severity of the message
+//
+int MessageImp::WriteImp(const Time &time, const string &txt, int severity)
+{
+    if (severity==kAlarm && txt.length()==0)
+        return 0;
+
+    static mutex mtx;
+    const lock_guard<mutex> guard(mtx);
+
+    switch (severity)
+    {
+    case kMessage: fOut << kDefault       << " -> "; break;
+    case kComment: fOut << kDefault       << " #> "; break;
+    case kInfo:    fOut << kGreen         << " I> "; break;
+    case kWarn:    fOut << kYellow        << " W> "; break;
+    case kError:
+    case kAlarm:   fOut << kRed           << " E> "; break;
+    case kFatal:   fOut << kRed << kBlink << " !> "; break;
+    case kDebug:   fOut << kBlue          << "    "; break;
+    default:       fOut << kBold          << " >> "; break;
+    }
+    fOut << time.GetAsStr("%H:%M:%S.%f") << " - " << txt << endl;
+
+    return 0;
+}
+
+int MessageImp::Write(const Time &time, const string &txt, int severity)
+{
+    const uint32_t mjd = time.Mjd();
+
+    if (fLastMjd != mjd)
+        WriteImp(time, "=================== "+time.GetAsStr("%Y-%m-%d")+" ["+to_string(mjd)+"] ==================");
+
+    fLastMjd = mjd;
+
+    WriteImp(time, txt, severity);
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Write with the current time the message text and the severity.
+//!
+//! @param txt
+//!    The message text to be passed to Write
+//!
+//! @param severity
+//!    The severity of the message to be passed to Write
+//
+int MessageImp::Update(const string &txt, int severity)
+{
+    Write(Time(), txt, severity);
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just a helper to format the message according to the user input.
+//! See the documentation of printf for details.
+//!
+//! @param severity
+//!    The severity of the message to be passed to Write
+//!
+//! @param fmt
+//!    Format string according to which the text is formatted
+//
+/*
+int MessageImp::Update(int severity, const char *fmt, ...)
+{
+    va_list ap;
+    va_start(ap, fmt);
+    string str = Tools::Format(fmt, ap);
+    va_end(ap);
+    return Update(str, severity);
+}
+*/
Index: branches/FACT++_part_filenames/src/MessageImp.h
===================================================================
--- branches/FACT++_part_filenames/src/MessageImp.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/MessageImp.h	(revision 18732)
@@ -0,0 +1,93 @@
+#ifndef FACT_MessageImp
+#define FACT_MessageImp
+
+#include <string>
+#include <sstream>
+#include <iostream>
+
+class Time;
+
+class MessageImp
+{
+public:
+    /// Severity of a message
+    enum Severity
+    {
+        kMessage = 10, ///< Just a message, usually obsolete
+        kInfo    = 20, ///< An info telling something which can be interesting to know
+        kWarn    = 30, ///< A warning, things that somehow might result in unexpected or unwanted bahaviour
+        kError   = 40, ///< Error, something unexpected happened, but can still be handled by the program
+        kAlarm   = 45, ///< Error, something unexpected happened, but needs user intervention (i.e. it needs a signal to the user)
+        kFatal   = 50, ///< An error which cannot be handled at all happend, the only solution is program termination
+        kComment = 90, ///< A comment which is always printed
+        kDebug   = 99, ///< A message used for debugging only
+    };
+
+private:
+    std::ostream &fOut; /// The ostream to which by default Write redirects its output
+    uint32_t fLastMjd;  /// Mjd of last message
+
+    int WriteImp(const Time &time, const std::string &txt, int qos=kMessage);
+
+public:
+    MessageImp(std::ostream &out=std::cout);
+    virtual ~MessageImp() { }
+
+    virtual void IndicateStateChange(const Time &, const std::string &) { }
+    void StateChanged(const Time &time, const std::string &server, const std::string &msg, int state);
+    virtual int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+    int Update(const std::string &txt, int severity=kMessage);
+    int Update(const char *txt, int severity=kMessage) { return Update(std::string(txt), severity); }
+    int Update(const std::ostringstream &str, int severity=kMessage) { return Update(str.str(), severity); }
+//    int Update(int qos, const char *fmt, ...);
+
+    int Debug(const std::string &str)    { return Update(str, kDebug);   }
+    int Message(const std::string &str)  { return Update(str, kMessage); }
+    int Info(const std::string &str)     { return Update(str, kInfo);    }
+    int Warn(const std::string &str)     { return Update(str, kWarn);    }
+    int Error(const std::string &str)    { return Update(str, kError);   }
+    int Alarm(const std::string &str)    { return Update(str, kAlarm);   }
+    int Fatal(const std::string &str)    { return Update(str, kFatal);   }
+    int Comment(const std::string &str)  { return Update(str, kComment); }
+
+    int Debug(const char *txt)   { return Debug(std::string(txt));   }
+    int Message(const char *txt) { return Message(std::string(txt)); }
+    int Info(const char *txt)    { return Info(std::string(txt));    }
+    int Warn(const char *txt)    { return Warn(std::string(txt));    }
+    int Error(const char *txt)   { return Error(std::string(txt));   }
+    int Alarm(const char *txt)   { return Alarm(std::string(txt));   }
+    int Fatal(const char *txt)   { return Fatal(std::string(txt));   }
+    int Comment(const char *txt) { return Comment(std::string(txt)); }
+
+    int Debug(const std::ostringstream &str)   { return Debug(str.str());   }
+    int Message(const std::ostringstream &str) { return Message(str.str()); }
+    int Info(const std::ostringstream &str)    { return Info(str.str());    }
+    int Warn(const std::ostringstream &str)    { return Warn(str.str());    }
+    int Alarm(const std::ostringstream &str)   { return Alarm(str.str());   }
+    int Error(const std::ostringstream &str)   { return Error(str.str());   }
+    int Fatal(const std::ostringstream &str)   { return Fatal(str.str());   }
+    int Comment(const std::ostringstream &str) { return Comment(str.str()); }
+
+    std::ostream &operator()() const { return fOut; }
+    std::ostream &Out() const { return fOut; }
+
+    virtual bool MessageQueueEmpty() const { return true; }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn MessageImp::IndicateStateChange(const Time &time, const std::string &server)
+
+This function is called to indicate a state change by StateChanged() to
+derived classes.
+
+@param time
+   Time at which the state change happened
+
+@param server
+   Server which emitted the state change
+
+**/
+// ***************************************************************************
Index: branches/FACT++_part_filenames/src/PixelMap.cc
===================================================================
--- branches/FACT++_part_filenames/src/PixelMap.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/PixelMap.cc	(revision 18732)
@@ -0,0 +1,69 @@
+#include "externals/PixelMap.h"
+
+using namespace std;
+
+#include <boost/regex.hpp>
+#include <mysql++/mysql++.h>
+
+void BiasMap::Retrieve(const std::string &database)
+{
+    static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+    // 2: user
+    // 4: pass
+    // 5: server
+    // 7: port
+    // 9: db
+
+    boost::smatch what;
+    if (!boost::regex_match(database, what, expr, boost::match_extra))
+        throw runtime_error("Couldn't parse '"+database+"'.");
+
+    if (what.size()!=10)
+        throw runtime_error("Error parsing '"+database+"'.");
+
+    const string user   = what[2];
+    const string passwd = what[4];
+    const string server = what[5];
+    const string db     = what[9];
+    const int port      = atoi(string(what[7]).c_str());
+
+    mysqlpp::Connection conn(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port);
+
+    const mysqlpp::StoreQueryResult res =
+        conn.query("SELECT fPatchNumber, AVG(fVoltageNom), fOffset "
+                   " FROM GapdVoltages "
+                   " LEFT JOIN BiasOffsets USING(fPatchNumber) "
+                   " GROUP BY fPatchNumber").store();
+
+    clear();
+
+    int l = 0;
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+    {
+        const int id = (*v)[0];
+
+        if (id<0 || id>416)
+        {
+            ostringstream str;
+            str << "Invalid channel id " << id << " received from database.";
+            throw runtime_error(str.str());
+        }
+
+        BiasMapEntry entry;
+
+        entry.hv_board   = id/32;
+        entry.hv_channel = id%32;
+        entry.Vnom       = (*v)[1];
+        entry.Voff       = (*v)[2];
+
+        (*this)[id] = entry;
+
+        l++;
+    }
+
+    if (l!=416)
+        throw runtime_error("Number of rows retrieved from the database does not match 416.");
+
+    if (size()!=416)
+        throw runtime_error("Number of entries retrived from database does not match 416.");
+}
Index: branches/FACT++_part_filenames/src/Readline.cc
===================================================================
--- branches/FACT++_part_filenames/src/Readline.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Readline.cc	(revision 18732)
@@ -0,0 +1,1556 @@
+// **************************************************************************
+/** @class Readline
+
+@brief C++ wrapper for GNU's readline library
+
+This class is meant as a C++ wrapper around GNU's readline library.
+Note that because readline uses a global namespace only one instance
+of this class can exist at a time. Instantiating a second object after
+a first one was deleted might show unexpected results.
+
+When the object is instantiated readline's history is read from a file.
+At destruction the history in memory is copied back to that file.
+The history file will be truncated to fMaxLines.
+
+By overloading the Readline class the function used for auto-completion
+can be overwritten.
+
+Simple example:
+
+\code
+
+   Readline rl("MyProg"); // will read the history from "MyProg.his"
+   while (1)
+   {
+        string txt = rl.Prompt("prompt> ");
+        if (txt=="quit)
+           break;
+
+        // ... do something ...
+
+        rl.AddHistory(txt);
+   }
+
+   // On destruction the history will be written to the file
+
+\endcode
+
+Simpler example (you need to implement the Process() function)
+
+\code
+
+   Readline rl("MyProg"); // will read the history from "MyProg.his"
+   rl.Run("prompt> ");
+
+   // On destruction the history will be written to the file
+
+\endcode
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.rendezvousalpha.com/f/bash_d596c169?fn=1670">GNU Readline (src code)</A>
+
+ */
+// **************************************************************************
+#include "Readline.h"
+
+#include <sstream>
+#include <fstream>
+#include <iostream>
+
+#include <sys/ioctl.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "tools.h"
+#include "Time.h"
+
+namespace fs = boost::filesystem;
+
+using namespace std;
+
+Readline   *Readline::This   =  0;
+bool        Readline::fStopScript = false;
+int         Readline::fScriptDepth = 0;
+std::string Readline::fScript;
+std::string Readline::fExternalInput;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Readline object. The constructor reads the history from a
+//! history file. The filename is compiled by adding ".his" to the
+//! supplied argument. The name oif the history file is stored in fName.
+//!
+//! Since readline has a global namespace, the creation of only one
+//! Readline instance is allowed.
+//!
+//! The provided program name is supplied to readline by means of
+//! rl_readline_name.
+//!
+//! Readlines default callback frunction for completions is redirected
+//! to CompletionImp which in turn will call Completion, which can be
+//! overwritten by the user.
+//!
+//! Bind some default key sequences like Page-up/-down for searching forward
+//! and backward in history.
+//!
+//! @param prgname
+//!    The prefix of the history filename. Usually the program name, which
+//!    can be initialized by argv[0].
+//
+Readline::Readline(const char *prgname) :
+    fMaxLines(500), fLine(0), fSection(-4), fLabel(-1), fCompletion(0)
+{
+    if (This)
+    {
+        cout << "ERROR - Readline can only be instatiated once!" << endl;
+        exit(-1);
+    }
+
+    This = this;
+
+    // Alternative completion function
+    rl_attempted_completion_function = rl_ncurses_completion_function;
+
+    // Program name
+#if BOOST_VERSION < 104600
+    static const string fname = boost::filesystem::path(prgname).filename();
+#else
+    static const string fname = boost::filesystem::path(prgname).filename().string();
+#endif
+    rl_readline_name = fname.c_str();
+
+    // Compile filename for history file
+    fName = string(prgname)+".his";
+
+    // Read history file
+    read_history(fName.c_str());
+    //if (read_history(fName.c_str()))
+    //    cout << "WARNING - Reading " << fName << ": " << strerror(errno) << endl;
+
+    fCommandLog.open(string(prgname)+".evt");
+
+    // Setup the readline callback which are needed to redirect
+    // the otuput properly to our ncurses panel
+    rl_getc_function                   = rl_ncurses_getc;
+    rl_startup_hook                    = rl_ncurses_startup;
+    rl_redisplay_function              = rl_ncurses_redisplay;
+    rl_event_hook                      = rl_ncurses_event_hook;
+    rl_completion_display_matches_hook = rl_ncurses_completion_display;
+
+    // Bind delete, page up, page down
+    rl_bind_keyseq("\e[1~",  rl_named_function("beginning-of-line"));
+    rl_bind_keyseq("\e[3~",  rl_named_function("delete-char"));
+    rl_bind_keyseq("\e[4~",  rl_named_function("end-of-line"));
+    rl_bind_keyseq("\e[5~",  rl_named_function("history-search-backward"));
+    rl_bind_keyseq("\e[6~",  rl_named_function("history-search-forward"));
+    rl_bind_keyseq("\033[1;3F", rl_named_function("kill-line"));
+    rl_bind_keyseq("\033[1;5D", rl_named_function("backward-word"));
+    rl_bind_keyseq("\033[1;5C", rl_named_function("forward-word"));
+    rl_bind_key(25, rl_named_function("kill-whole-line"));
+
+    //for (int i=0; i<10; i++) cout << (int)getchar() << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file with the name stored in fName.
+//! In addition the written file is truncated to fMaxLines to keep the
+//! file of a reasonable size. The number of lines fMaxLines can be set
+//! by SetMaxLines before the destructor is called. Setting fMaxLines
+//! to 0 or a negative value switches automatic truncation off.
+//
+Readline::~Readline()
+{
+    // Write current history to file
+    if (write_history(fName.c_str()))
+        cout << "WARNING - Write " << fName.c_str() << ": " << strerror(errno) << endl;
+
+    // Truncate file
+    if (fMaxLines>0 && history_truncate_file(fName.c_str(), fMaxLines))
+        cout << "WARNING - Truncate " << fName.c_str() << ": " << strerror(errno) << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This wraps the given readline function such that the output can be
+//! redirected from thr rl_outstream to the given C++ ostream.
+//!
+//! @param out
+//!    The stream to which the output should be redirected.
+//!
+//! @param function
+//!    Takes a function of type bool(*)() as argument
+//!
+//! @returns
+//!    The return value of the function
+//
+bool Readline::RedirectionWrapper(ostream &out, bool (*function)())
+{
+    FILE *save = SetStreamOut(tmpfile());
+    const bool rc = function();
+    FILE *file = SetStreamOut(save);
+
+    const bool empty = ftell(file)==0;
+
+    rewind(file);
+
+    if (empty)
+    {
+        out << " <empty>" << endl;
+        fclose(file);
+        return rc;
+    }
+
+    while (1)
+    {
+        const int c = getc(file);
+        if (feof(file))
+            break;
+        out << (char)c;
+    }
+    out << endl;
+
+    fclose(file);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_getc_function, calls Getc
+//
+int Readline::rl_ncurses_getc(FILE *f)
+{
+    return This->Getc(f);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_startup_hook, calls Startup.
+//! A function called just before readline prints the first prompt.
+//
+int Readline::rl_ncurses_startup()
+{
+    This->Startup();
+    return 0; // What is this for?
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_redisplay_function, calls Redisplay.
+//! Readline will call indirectly to update the display with the current
+//! contents of the editing buffer. 
+//
+void Readline::rl_ncurses_redisplay()
+{
+    This->Redisplay();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_event_hook, calls Update().
+//! A function called periodically when readline is waiting for
+//! terminal input.
+//!
+int Readline::rl_ncurses_event_hook()
+{
+    This->EventHook();
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_completion_display_matches_hook,
+//! calls CompletionDisplayImp
+//!
+//! A function to be called when completing a word would normally display
+//! the list of possible matches. This function is called in lieu of
+//! Readline displaying the list. It takes three arguments:
+//! (char **matches, int num_matches, int max_length) where matches is
+//! the array of matching strings, num_matches is the number of strings
+//! in that array, and max_length is the length of the longest string in
+//! that array. Readline provides a convenience function,
+//! rl_display_match_list, that takes care of doing the display to
+//! Readline's output stream. 
+//
+void Readline::rl_ncurses_completion_display(char **matches, int num, int max)
+{
+    This->CompletionDisplay(matches, num, max);
+}
+
+char **Readline::rl_ncurses_completion_function(const char *text, int start, int end)
+{
+    return This->Completion(text, start, end);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls the default rl_getc function.
+//
+int  Readline::Getc(FILE *f)
+{
+    return rl_getc(f);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: Do nothing.
+//
+void Readline::Startup()
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! The default is to redisplay the prompt which is gotten from
+//! GetUpdatePrompt(). If GetUpdatePrompt() returns an empty string the
+//! prompt is kept untouched. This can be used to keep a prompt updated
+//! with some information (e.g. time) just by overwriting GetUpdatePrompt()
+//!
+void Readline::EventHook(bool newline)
+{
+    const string cpy = fExternalInput;
+    fExternalInput = "";
+
+    if (!cpy.empty())
+    {
+        rl_replace_line(cpy.c_str(), 1);
+        rl_done = 1;
+    }
+
+    string p = GetUpdatePrompt();
+    if (p.empty())
+        p = rl_prompt;
+
+    if (newline)
+        rl_on_new_line();
+
+    if (rl_prompt==p && !newline)
+        return;
+
+    UpdatePrompt(p);
+
+    int w, h;
+    rl_get_screen_size(&h, &w);
+    cout << '\r' << string(w+1, ' ') << '\r';
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Called from Prompt and PromptEOF after readline has returned. It is
+//! meant as the opposite of Startup (called after readline finsihes)
+//! The default is to do nothing.
+//!
+//! @param buf
+//!    A pointer to the buffer returned by readline
+//
+void Readline::Shutdown(const char *)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: call rl_redisplay()
+//
+
+void Readline::Redisplay()
+{
+    static int W=-1, H=-1;
+
+    int w, h;
+    rl_get_screen_size(&h, &w);
+    if (W==w && h==H)
+    {
+        rl_redisplay();
+        return;
+    }
+
+    cout << '\r' << string(w+1, ' ') << '\r';
+
+    W=w;
+    H=h;
+
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: call rl_completion_display_matches()
+//
+void Readline::CompletionDisplay(char **matches, int num, int max)
+{
+    rl_display_match_list(matches, num, max);
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper for the compilation of a completion-list.
+//! It compares the two inputs (str and txt) to a maximum of the size of
+//! txt. If they match, memory is allocated with malloc and a pointer to
+//! the null-terminated version of str is returned.
+//!
+//! @param str
+//!    A reference to the string which is checked (e.g. "Makefile.am")
+//!
+//! @param txt
+//!    A reference to the part of the string the user has already typed,
+//!    e.g. "Makef"
+//!
+//! @returns
+//!    A pointer to memory allocated with malloc containing the string str
+//
+char *Readline::Compare(const string &str, const string &txt)
+{
+    /*return strncmp(str.c_str(), txt.c_str(), txt.length())==0 ? */
+    return strncasecmp(str.c_str(), txt.c_str(), txt.length())==0 ?
+        strndup(str.c_str(), str.length()) : 0;
+}
+
+char **Readline::CompletionMatches(const char *text, char *(*func)(const char*, int))
+{
+    return rl_completion_matches(text, func);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The given vector should be a reference to a vector of strings
+//! containing all possible matches. The actual match-making is then
+//! done in Complete(const char *, int)
+//!
+//! The pointer fCompletion is redirected to the vector for the run time
+//! of the function, but restored afterwards. So by this you can set a
+//! default completion list in case Complete is not called or Completion
+//! not overloaded.
+//!
+//! @param v
+//!    reference to a vector of strings with all possible matches
+//!
+//! @param text
+//!    the text which should be matched (it is just propagated to
+//!    Readline::Completion)
+//!
+char **Readline::Complete(const vector<string> &v, const char *text)
+{
+    const vector<string> *save = fCompletion;
+
+    fCompletion = &v;
+    char **rc = rl_completion_matches(const_cast<char*>(text), CompleteImp);
+    fCompletion = save;
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! If fCompletion==0 the default is to call readline's
+//! rl_filename_completion_function. Otherwise the contents of fCompletion
+//! are returned. To change fCompletion either initialize it via
+//! SetCompletion() (in this case you must ensure the life time of the
+//! object) or call
+//!    Complete(const vector<string>&, const char*)
+//! from
+//!    Completion(const char * int, int)
+//!
+//! This is the so called generator function, the readline manual says
+//! about this function:
+//!
+//!   The generator function is called repeatedly from
+//!   rl_completion_matches(), returning a string each time. The arguments
+//!   to the generator function are text and state. text is the partial word
+//!   to be completed. state is zero the first time the function is called,
+//!   allowing the generator to perform any necessary initialization, and a
+//!   positive non-zero integer for each subsequent call. The generator
+//!   function returns (char *)NULL to inform rl_completion_matches() that
+//!   there are no more possibilities left. Usually the generator function
+//!   computes the list of possible completions when state is zero, and
+//!   returns them one at a time on subsequent calls. Each string the
+//!   generator function returns as a match must be allocated with malloc();
+//!   Readline frees the strings when it has finished with them.
+//
+char *Readline::Complete(const char* text, int state)
+{
+    if (fCompletion==0)
+        return rl_filename_completion_function(text, state);
+
+    static vector<string>::const_iterator pos;
+    if (state==0)
+        pos = fCompletion->begin();
+
+    while (pos!=fCompletion->end())
+    {
+        char *rc = Compare(*pos++, text);
+        if (rc)
+            return rc;
+    }
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Complete()
+//
+char *Readline::CompleteImp(const char* text, int state)
+{
+    return This->Complete(text, state);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The readline manual says about this function:
+//!
+//!   A  pointer to an alternative function to create matches. The
+//!   function is called with text, start, and end. start and end are
+//!   indices in rl_line_buffer saying what the boundaries of text are.
+//!   If this function exists and returns NULL, or if this variable is
+//!   set to NULL, then rl_complete() will call the value of
+//!   rl_completion_entry_function to generate matches, otherwise the
+//!   array of strings returned will be used.
+//!
+//! This function is virtual and can be overwritten. It defaults to
+//! a call to rl_completion_matches with CompleteImp as an argument
+//! which defaults to filename completion, but can also be overwritten.
+//!
+//! It is suggested that you call
+//!    Complete(const vector<string>&, const char*)
+//! from here.
+//!
+//! @param text
+//!    A pointer to a char array conatining the text which should be
+//!    completed. The text is null-terminated.
+//!
+//! @param start
+//!    The start index within readline's line buffer rl_line_buffer,
+//!    at which the text starts which presumably should be completed.
+//!
+//! @param end
+//!    The end index within readline's line buffer rl_line_buffer,
+//!    at which the text ends which presumably should be completed.
+//!
+//! @returns
+//!    An array of strings which were allocated with malloc and which
+//!    will be freed by readline with the possible matches.
+//
+char **Readline::Completion(const char *text, int /*start*/, int /*end*/)
+{
+    // To do filename completion call
+    return rl_completion_matches((char*)text, CompleteImp);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the given string to the history buffer of readline's history by
+//! calling add_history. 
+//!
+//! @param str
+//!    A reference to a string which should be added to readline's
+//!    history.
+//!
+//! @param skip
+//!    If skip is 1 and str matches the last added entry in the history,
+//!    the entry is skipped. If skip==2, all entries matching str are
+//!    removed from the history before the new entry is added as last one.
+//!    <skip==2 is the default>
+//
+void Readline::AddToHistory(const string &str, int skip)
+{
+    if (skip==1 && fLastLine==str)
+        return;
+
+    if (str.empty())
+        return;
+
+    int p = -1;
+    while (skip==2)
+    {
+        p = history_search_pos(str.c_str(), 0, p+1);
+        if (p<0)
+            break;
+
+        HIST_ENTRY *e = remove_history(p--);
+
+        free(e->line);
+        free(e);
+    }
+
+    add_history(str.c_str());
+    fLastLine = str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     a string containing [{fLine}]
+//
+string Readline::GetLinePrompt() const
+{
+    ostringstream str;
+    str << '[' << fLine << ']';
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_set_prompt. This can be used from readline's callback function
+//! to change the prompt while a call to the readline function is in
+//! progress.
+//!
+//! @param prompt
+//!     The new prompt to be shown
+//
+void Readline::UpdatePrompt(const string &prompt) const
+{
+    rl_set_prompt(prompt.c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is used to bind a key sequence via a call to
+//! rl_bind_keyseq.
+//!
+//! Readline's manual says about this function:
+//!
+//!   Bind the key sequence represented by the string keyseq to the
+//!   function function, beginning in the current keymap. This makes
+//!   new keymaps as necessary. The return value is non-zero if keyseq
+//!   is invalid.
+//!
+//! Key sequences are escaped sequences of characters read from an input
+//! stream when a special key is pressed. This is necessary because
+//! there are usually more keys and possible combinations than ascii codes.
+//!
+//! Possible key sequences are for example:
+//!   "\033OP"       F1
+//!   "\033[1;5A"    Ctrl+up
+//!   "\033[1;5B"    Ctrl+down
+//!   "\033[1;3A"    Alt+up
+//!   "\033[1;3B"    Alt+down
+//!   "\033[5;3~"    Alt+page up
+//!   "\033[6;3~"    Alt+page down
+//!   "\033+"        Alt++
+//!   "\033-"        Alt+-
+//!   "\033\t"       Alt+tab
+//!   "\033[1~"      Alt+tab
+//!
+//! @param seq
+//!     The key sequence to be bound
+//!
+//! @param func
+//!     A function of type "int func(int, int)
+//
+void Readline::BindKeySequence(const char *seq, int (*func)(int, int))
+{
+    rl_bind_keyseq(seq, func);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_variable_dumper(1)
+//!
+//!   Print the readline variable names and their current values
+//!   to rl_outstream. If readable is non-zero, the list is formatted
+//!   in such a way that it can be made part of an inputrc file and
+//!   re-read.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpVariables()
+{
+    rl_variable_dumper(1);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_function_dumper(1)
+//!
+//!   Print the readline function names and the key sequences currently
+//!   bound to them to rl_outstream. If readable is non-zero, the list
+//!   is formatted in such a way that it can be made part of an inputrc
+//!   file and re-read.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpFunctions()
+{
+    rl_function_dumper(1);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_list_funmap_names()
+//!
+//!    Print the names of all bindable Readline functions to rl_outstream.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpFunmap()
+{
+    rl_list_funmap_names();
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets rl_outstream (the stdio stream to which Readline performs output)
+//! to the new stream.
+//!
+//! @param f
+//!    The new stdio stream to which readline should perform its output
+//!
+//! @return
+//!    The old stream to which readline was performing output
+//
+FILE *Readline::SetStreamOut(FILE *f)
+{
+    FILE *rc = rl_outstream;
+    rl_outstream = f;
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets rl_instream (the stdio stream from which Readline reads input)
+//! to the new stream.
+//!
+//! @param f
+//!    The new stdio stream from which readline should read its input
+//!
+//! @return
+//!    The old stream from which readline was reading it input
+//
+FILE *Readline::SetStreamIn(FILE *f)
+{
+    FILE *rc = rl_instream;
+    rl_instream = f;
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_display_prompt (the prompt which should currently be
+//! displayed on the screen) while a readline command is in progress
+//
+string Readline::GetPrompt()
+{
+    return rl_display_prompt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_line_buffer (the current input line which should currently be
+//! displayed on the screen) while a readline command is in progress
+//!
+//! The length of the current line buffer (rl_end) is available as
+//! GetLineBuffer().size()
+//!
+//! Note that after readline has returned the contents of rl_end might
+//! not reflect the correct buffer length anymore, hence, the returned buffer
+//! might be truncated.
+//
+string Readline::GetBuffer()
+{
+    return string(rl_line_buffer, rl_end);
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_point (the current cursor position within the line buffer)
+//
+int Readline::GetCursor()
+{
+    return rl_point;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return strlen(rl_display_prompt) + rl_point
+//
+int Readline::GetAbsCursor()
+{
+    return strlen(rl_display_prompt) + rl_point;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_end (the current total length of the line buffer)
+//! Note that after readline has returned the contents of rl_end might
+//! not reflect the correct buffer length anymore.
+//
+int Readline::GetBufferLength()
+{
+    return rl_end;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return the length of the prompt plus the length of the line buffer
+//
+int Readline::GetLineLength()
+{
+    return strlen(rl_display_prompt) + rl_end;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls: Function: void rl_resize_terminal()
+//! Update Readline's internal screen size by reading values from the kernel.
+//
+void Readline::Resize()
+{
+    rl_resize_terminal();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls: Function: void rl_set_screen_size (int rows, int cols)
+//! Set Readline's idea of the terminal size to rows rows and cols columns.
+//!
+//! @param width
+//!    Number of columns
+//!
+//! @param height
+//!    Number of rows
+//
+void Readline::Resize(int width, int height)
+{
+    rl_set_screen_size(height, width);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the number of cols readline assumes the screen size to be
+//
+int Readline::GetCols() const
+{
+    int rows, cols;
+    rl_get_screen_size(&rows, &cols);
+    return cols;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the number of rows readline assumes the screen size to be
+//
+int Readline::GetRows() const
+{
+    int rows, cols;
+    rl_get_screen_size(&rows, &cols);
+    return rows;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return a list of pointer to the history contents
+//
+vector<const char*> Readline::GetHistory() const
+{
+    HIST_ENTRY **next = history_list();
+
+    vector<const char*> v;
+
+    for (; *next; next++)
+        v.push_back((*next)->line);
+
+    return v;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Clear readline history (calls clear_history())
+//!
+//! @returns
+//!     always true
+//
+bool Readline::ClearHistory()
+{
+    clear_history();
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the current history on rl_outstream
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpHistory()
+{
+    HIST_ENTRY **next = history_list();
+
+    if (!next)
+        return true;
+
+    for (; *next; next++)
+        fprintf(rl_outstream, "%s\n", (*next)->line);
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Execute a shell command through a pipe. Write stdout to rl_outstream
+//!
+//! @param cmd
+//!     Command to be executed
+//!
+//! @returns
+//!     always true
+//
+bool Readline::ExecuteShellCommand(const string &cmd)
+{
+    FILE *pipe = popen(cmd.c_str(), "r");
+    if (!pipe)
+    {
+        fprintf(rl_outstream, "ERROR - Could not create pipe '%s': %m\n", cmd.c_str());
+        return true;
+    }
+
+    while (1)
+    {
+        char buf[1024];
+
+        const size_t sz = fread(buf, 1, 1024, pipe);
+
+        fwrite(buf, 1, sz, rl_outstream);
+
+        if (feof(pipe) || ferror(pipe))
+            break;
+    }
+
+    if (ferror(pipe))
+        fprintf(rl_outstream, "ERROR - Reading from pipe '%s': %m\n", cmd.c_str());
+
+    pclose(pipe);
+
+    fprintf(rl_outstream, "\n");
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the available commands. This is intended for being overwritten
+//! by deriving classes.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintCommands()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Commands:\n");
+    fprintf(rl_outstream, "   No application specific commands defined.\n");
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a general help message. This is intended for being overwritten
+//! by deriving classes.
+//!
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintGeneralHelp()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " General help:\n");
+    fprintf(rl_outstream, "   h,help       Print this help message\n");
+    fprintf(rl_outstream, "   clear        Clear history buffer\n");
+    fprintf(rl_outstream, "   lh,history   Dump the history buffer to the screen\n");
+    fprintf(rl_outstream, "   v,variables  Dump readline variables\n");
+    fprintf(rl_outstream, "   f,functions  Dump readline functions\n");
+    fprintf(rl_outstream, "   m,funmap     Dump readline funmap\n");
+    fprintf(rl_outstream, "   c,commands   Dump available commands\n");
+    fprintf(rl_outstream, "   k,keylist    Dump key bindings\n");
+    fprintf(rl_outstream, "   .! command   Execute a shell command\n");
+    fprintf(rl_outstream, "   .w n         Sleep n milliseconds\n");
+    fprintf(rl_outstream, "   .x file ..   Execute a script of commands (+optional argumnets)\n");
+    fprintf(rl_outstream, "   .x file:N .. Execute a script of commands, start at label N\n");
+    fprintf(rl_outstream, "   .j N         Forward jump to label N\n");
+    fprintf(rl_outstream, "   .lt f0 f1 N  If float f0 lower than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .gt f0 f1 N  If float f0 greater than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .eq i0 i1 N  If int i0 equal int i1, jump to label N\n");
+    fprintf(rl_outstream, "   : N          Defines a label (N=number)\n");
+    fprintf(rl_outstream, "   # comment    Ignored\n");
+    fprintf(rl_outstream, "   .q,quit      Quit\n");
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " The command history is automatically loaded and saves to\n");
+    fprintf(rl_outstream, " and from %s.\n", GetName().c_str());
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a help text about key bindings. This is intended for being
+//! overwritten by deriving classes.
+//!
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintKeyBindings()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Key bindings:\n");
+    fprintf(rl_outstream, "   Page-up         Search backward in history\n");
+    fprintf(rl_outstream, "   Page-dn         Search forward in history\n");
+    fprintf(rl_outstream, "   Ctrl-left       One word backward\n");
+    fprintf(rl_outstream, "   Ctrl-right      One word forward\n");
+    fprintf(rl_outstream, "   Home            Beginning of line\n");
+    fprintf(rl_outstream, "   End             End of line\n");
+    fprintf(rl_outstream, "   Ctrl-d          Quit\n");
+    fprintf(rl_outstream, "   Ctrl-y          Delete line\n");
+    fprintf(rl_outstream, "   Alt-end/Ctrl-k  Delete until the end of the line\n");
+    fprintf(rl_outstream, "   F1              Toggle visibility of upper panel\n");
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Default key-bindings are identical with your bash.\n");
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+bool Readline::PreProcess(const string &str)
+{
+    // ----------- Labels -------------
+
+    if (str[0]==':')
+    {
+        try
+        {
+            fSection = stoi(str.substr(1));
+            SetSection(fSection);
+
+            if (fLabel!=fSection)
+                return true;
+        }
+        catch (const logic_error &e)
+        {
+            fCommandLog << "# ERROR[" << fScriptDepth << "] - Inavlid label '" << str.substr(1) << "'" << endl;
+            fLabel = -2;
+            return true;
+        }
+
+        fLabel=-1;
+        return false;
+    }
+
+    if (fLabel>=0)
+    {
+        fCommandLog << "# SKIP[" << fScriptDepth << "]: " << fLabel << " - " << str << endl;
+        return true;
+    }
+
+    if (str.substr(0, 3)==".j ")
+    {
+        fLabel = atoi(str.substr(3).c_str());
+        return false;
+    }
+
+    return Process(str);
+
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+bool Readline::Process(const string &str)
+{
+    // ----------- Common commands -------------
+
+    if (str.substr(0, 3)==".w ")
+    {
+         usleep(stoi(str.substr(3))*1000);
+         return true;
+    }
+
+    if (str.substr(0, 3)==".x ")
+    {
+        string opt(str.substr(3));
+
+        map<string,string> data = Tools::Split(opt);
+        if (opt.size()==0)
+        {
+            if (data.size()==0)
+                PrintReadlineError("Filename missing.");
+            else
+                PrintReadlineError("Equal sign missing in argument '"+data.begin()->first+"'");
+
+            return true;
+        }
+
+        const string save  = fScript;
+        const int save_sec = fSection;
+        Execute(opt, data);
+        fScript = save;
+        if (save_sec!=-4)
+        {
+            fSection = save_sec;
+            SetSection(save_sec);
+        }
+
+        return true;
+    }
+
+    if (str.substr(0, 2)==".!")
+    {
+         ExecuteShellCommand(str.substr(2));
+         return true;
+    }
+
+    if (str.substr(0, 4)==".gt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 > v1)
+            fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".lt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 < v1)
+           fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".eq ")
+    {
+        istringstream in(str.substr(4));
+
+        int v0, v1, label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0==v1)
+            fLabel = label;
+
+        return true;
+    }
+
+
+    // ----------- Readline static -------------
+
+    if (str=="clear")
+        return ClearHistory();
+
+    if (str=="lh" || str=="history")
+        return DumpHistory();
+
+    if (str=="v" || str=="variables")
+        return DumpVariables();
+
+    if (str=="f" || str=="functions")
+        return DumpFunctions();
+
+    if (str=="m" || str=="funmap")
+        return DumpFunmap();
+
+    // ---------- Readline virtual -------------
+
+    if (str=="h" || str=="help")
+        return PrintGeneralHelp();
+
+    if (str=="c" || str=="commands")
+        return PrintCommands();
+
+    if (str=="k" || str=="keylist")
+        return PrintKeyBindings();
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a wrapper around the call to readline. It encapsultes
+//! the return buffer into a std::string and deletes the memory allocated
+//! by readline. Furthermore, it removes leading and trailing whitespaces
+//! before return the result. The result is returned in the given
+//! argument containing the prompt. Before the function returns Shutdown()
+//! is called (as opposed to Startup when readline starts)
+//!
+//! @param str
+//!    The prompt which is to be shown by the readline libarary. it is
+//!    directly given to the call to readline. The result of the
+//!    readline call is returned in this string.
+//!
+//! @returns
+//!    true if the call succeeded as usual, false if EOF was detected
+//!    by the readline call.
+//
+bool Readline::PromptEOF(string &str)
+{
+    char *buf = readline(str.c_str());
+    Shutdown(buf);
+
+    // Happens when EOF is encountered
+    if (!buf)
+        return false;
+
+    str = Tools::Trim(buf);
+
+    free(buf);
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a wrapper around the call to readline. It encapsultes
+//! the return buffer into a std::string and deletes the memory allocated
+//! by readline. Furthermore, it removes leading and trailing whitespaces
+//! before return the result. Before the function returns Shutdown() is
+//! called (as opposed to Startup when readline starts)
+//!
+//! @param prompt
+//!    The prompt which is to be shown by the readline libarary. it is
+//!    directly given to the call to readline.
+//!
+//! @returns
+//!    The result of the readline call
+//
+string Readline::Prompt(const string &prompt)
+{
+    char *buf = readline(prompt.c_str());
+
+    Shutdown(buf ? buf : "");
+
+    const string str = !buf || (rl_done && rl_pending_input==4)
+        ? ".q" : Tools::Trim(buf);
+
+    free(buf);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file defined by fName and
+//! replaces the history by the data from the given file.
+//!
+//! @param fname
+//!    Name of the history file to read
+//!
+void Readline::StaticPushHistory(const string &fname="")
+{
+    fs::path his = fs::path(This->fName).parent_path();
+    his /= fname;
+
+    write_history(This->fName.c_str());
+    stifle_history(0);
+    unstifle_history();
+    read_history(his.string().c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file with the given name
+//! and replaces the history by the file defined by fName.
+//!
+//! @param fname
+//!    Name of the history file to write (it will be truncated to 1000 lines)
+//!
+void Readline::StaticPopHistory(const string &fname="")
+{
+    fs::path his = fs::path(This->fName).parent_path();
+    his /= fname;
+
+    write_history(his.string().c_str());
+    history_truncate_file(his.string().c_str(), 1000);
+
+    stifle_history(0);
+    unstifle_history();
+    read_history(This->fName.c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just calls readline and thus allows to just prompt for something.
+//! Adds everything to the history except '.q'
+//!
+//! @param prompt
+//!    Prompt to be displayed
+//!
+//! @return
+//!    String entered by the user ('.q' is Ctrl-d is pressed)
+//!
+string Readline::StaticPrompt(const string &prompt)
+{
+    char *buf = readline(prompt.c_str());
+    if (!buf)
+        return ".q";
+
+    const string str(buf);
+    if (Tools::Trim(str)!=".q" && !Tools::Trim(str).empty())
+        if (history_length==0 || history_search_pos(str.c_str(), -1, history_length-1)!=history_length-1)
+            add_history(buf);
+
+    free(buf);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Process a single line. All lines are added to the history, but only
+//! accepted lines are written to the command log. In this case fLine is
+//! increased by one.
+//! Comment (starting with #) are removed from the command-line. A # can be
+//! escaped with quotation marks "#"
+//
+void Readline::ProcessLine(const string &str)
+{
+    const string cmd = Tools::Uncomment(str);
+
+    if (!cmd.empty())
+    {
+        const bool rc = PreProcess(cmd);
+
+        AddToHistory(cmd);
+
+        if (rc)
+            return;
+
+        fLine++;
+    }
+
+    fCommandLog << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This implements a loop over readline calls. A prompt to issue can be
+//! given. If it is NULL, the prompt is retrieved from GetUpdatePrompt().
+//! It is updated regularly by means of calls to GetUpdatePrompt() from
+//! EventHook(). If Prompt() returns with "quit" or ".q" the loop is
+//! exited. If ".qqq" is entered exit(-1) is called. In case of ".qqqqqq"
+//! abort(). Both ways to exit the program are not recommended. Empty
+//! inputs are ignored. After that Process() with the returned string
+//! is called. If Process returns true the input is not counted and not
+//! added to the history, otherwise the line counter is increased
+//! and the input is added to the history.
+//!
+//! @param prompt
+//!    The prompt to be issued or NULL if GetUPdatePrompt should be used
+//!    instead.
+//!
+void Readline::Run(const char *prompt)
+{
+    fLine = 0;
+    while (1)
+    {
+        // Before we start we have to make sure that the
+        // screen looks like and is ordered like expected.
+        const string str = Prompt(prompt?prompt:GetUpdatePrompt());
+        if (str.empty())
+            continue;
+
+        if (str=="quit" || str==".q")
+            break;
+
+        if (str==".qqq")
+            exit(128);
+
+        if (str==".qqqqqq")
+            abort();
+
+        ProcessLine(str);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Executes commands read from an ascii file as they were typed in
+//! the console. Empty lines and lines beginning with # are ignored.
+//!
+//! @param fname
+//!    Filename of file to read
+//!
+//! @param args
+//!    Arguments to be passed to the script. A search and replace
+//!    will be done for ${arg}
+//!
+//! @returns
+//!    -1 if the file couldn't be read and the number of commands for which
+//!    Process() was callled otherwise
+//!
+int Readline::Execute(const string &fname, const map<string,string> &args)
+{
+    // this could do the same:
+    //    rl_instream = fopen(str.c_str(), "r");
+
+    if (IsStopped())
+        return 0;
+
+    string name = Tools::Trim(fname);
+    fScript = name;
+
+    fSection = -3;
+    SetSection(-3);
+    fLabel = -1;
+
+    const size_t p = name.find_last_of(':');
+    if (p!=string::npos)
+    {
+        fLabel = atoi(name.substr(p+1).c_str());
+        name = name.substr(0, p);
+    }
+
+    ifstream fin(name.c_str());
+    if (!fin)
+    {
+        fSection = -4;
+        SetSection(-4);
+        return -1;
+    }
+
+    if (fScriptDepth++==0)
+        fStopScript = false;
+
+    fCommandLog << "# " << Time() << " - " << name << " (START[" << fScriptDepth<< "]";
+    if (fLabel>=0)
+        fCommandLog << ':' << fLabel;
+    fCommandLog << ")" << endl;
+
+    fSection = -1;
+    SetSection(-1);
+
+    int rc = 0;
+
+    string buffer;
+    while (getline(fin, buffer, '\n') && !fStopScript)
+    {
+        buffer = Tools::Trim(buffer);
+        if (buffer.empty())
+            continue;
+
+        rc++;
+
+        if (buffer=="quit" || buffer==".q")
+        {
+            Stop();
+            break;
+        }
+
+        // find and replace arguments
+        for (auto it=args.begin(); it!=args.end(); it++)
+        {
+            const string find = "${"+it->first+"}";
+            for (size_t pos=0; (pos=buffer.find(find, pos))!=string::npos; pos+=find.length())
+                buffer.replace(pos, find.size(), it->second);
+        }
+
+        // process line
+        ProcessLine(buffer);
+    }
+
+    fCommandLog << "# " << Time() << " - " << name << " (FINISHED[" << fScriptDepth<< "])" << endl;
+
+    if (--fScriptDepth==0)
+        fStopScript = false;
+
+    fLabel = -1;
+    fSection = -4;
+    SetSection(-4);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Stops the readline execution. It fakes the end of an editing by
+//! setting rl_done to 1. To distinguish this from a normal edit,
+//! rl_pending_input is set to EOT.
+//!
+void Readline::Stop()
+{
+    rl_done          = 1;
+    rl_pending_input = 4; // EOT (end of transmission, ctrl-d)
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    the status of rl_done and rl_pending_input. If rl_done==1 and
+//!    rl_pending_input==4 true is returned, false otherwise.
+//!    This can be used to check if Stop() was called. If readline is
+//!    not in operation.
+//!
+bool Readline::IsStopped() const
+{
+    return rl_done==1 && rl_pending_input==4;
+};
+
+void Readline::PrintReadlineError(const std::string &str)
+{
+    fprintf(rl_outstream, "%s\n", str.c_str());
+}
Index: branches/FACT++_part_filenames/src/Readline.h
===================================================================
--- branches/FACT++_part_filenames/src/Readline.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Readline.h	(revision 18732)
@@ -0,0 +1,153 @@
+#ifndef FACT_Readline
+#define FACT_Readline
+
+#include <map>
+#include <string>
+#include <vector>
+#include <fstream>
+#include <iostream>
+
+class Readline
+{
+public:
+    static bool RedirectionWrapper(std::ostream &out, bool (*function)());
+
+protected:
+    /// A pointer to the unique instance of Readline to let the static
+    /// functions used as callback for readline call member function
+    /// with an object. This makes overwriting easier.
+    static Readline *This;
+
+private:
+    std::string fName;     /// Filename for the history file compiled in the constructor
+    int fMaxLines;         /// Maximum number of lines in the history file
+
+    std::ofstream fCommandLog;
+
+    std::string fLastLine; /// Last line adde to history
+
+    int fLine;
+    int fSection;
+    int fLabel;
+    static int  fScriptDepth;
+    static bool fStopScript;
+
+    static std::string fExternalInput;
+
+    /// Static member function which are used to adapt readline to ncurses
+    static int    rl_ncurses_getc(FILE *);
+    static int    rl_ncurses_startup();
+    static void   rl_ncurses_redisplay();
+    static int    rl_ncurses_event_hook();
+    static void   rl_ncurses_completion_display(char **matches, int num, int max);
+    static char **rl_ncurses_completion_function(const char *text, int start, int end);
+    static char   *CompleteImp(const char* text, int state);
+
+
+protected:
+    static std::string fScript;
+
+    /// The non static implementations of the callback funtions above
+    virtual int  Getc(FILE *);
+    virtual void Startup();
+    virtual void EventHook(bool newline=false);
+    virtual void Shutdown(const char *buf);
+    virtual void Redisplay();
+    virtual void CompletionDisplay(char **matches, int num, int max);
+
+    /// Functions dealing with auto completion
+    virtual char *Complete(const char* text, int state);
+    virtual char **Completion(const char *text, int start, int end);
+
+    /// Pointer to a list of possible matched for auto-completion
+    const std::vector<std::string> *fCompletion; 
+    void SetCompletion(const std::vector<std::string> *v) { fCompletion = v; }
+    char **Complete(const std::vector<std::string> &v, const char *text);
+
+    ///
+    virtual void SetSection(int) { }
+    virtual void PrintReadlineError(const std::string &str);
+
+public:
+    Readline(const char *prgname);
+    virtual ~Readline();
+
+    // Access to readline
+    void BindKeySequence(const char *seq, int (*func)(int, int));
+
+    static  bool DumpVariables();
+    static  bool DumpFunctions();
+    static  bool DumpFunmap();
+    static  bool DumpHistory();
+
+    virtual bool PrintGeneralHelp();
+    virtual bool PrintCommands();
+    virtual bool PrintKeyBindings();
+
+    // History functions
+    std::string GetName() const { return fName; }
+
+    void AddToHistory(const std::string &str, int skip=2);
+    static bool ClearHistory();
+    std::vector<const char*> GetHistory() const;
+
+    void SetMaxSize(int lines) { fMaxLines = lines; }
+
+    // Prompting
+    void UpdatePrompt(const std::string &prompt) const;
+    void UpdatePrompt() const { UpdatePrompt(GetUpdatePrompt()); }
+
+    virtual bool PreProcess(const std::string &str);
+    virtual bool Process(const std::string &str);
+    virtual std::string GetUpdatePrompt() const { return ""; }
+    virtual bool PromptEOF(std::string &str);
+    virtual std::string Prompt(const std::string &prompt);
+    virtual void Run(const char *prompt=0);
+    static  void Stop();
+    virtual bool ExecuteShellCommand(const std::string &cmd);
+    int          Execute(const std::string &fname, const std::map<std::string,std::string> &args=std::map<std::string,std::string>());
+    bool         IsStopped() const;
+    void         ProcessLine(const std::string &str);
+    void         SetLabel(int l) { fLabel = l; }
+    static void  StopScript() { fStopScript = true; }
+    static bool  IsScriptStopped() { return fStopScript; }
+    static int   GetScriptDepth() { return fScriptDepth; }
+    static void  SetScriptDepth(unsigned int d) { fScriptDepth=d; }
+    static void  SetExternalInput(const std::string &inp) { fExternalInput = inp; }
+
+    static std::string GetScript() { return fScript; }
+    static std::string GetExternalInput() { return fExternalInput; }
+
+    int GetLine() const { return fLine; }
+    virtual std::string GetLinePrompt() const;
+
+    // Helper
+    static char  *Compare(const std::string &str, const std::string &txt);
+    static char **CompletionMatches(const char *text, char *(*func)(const char*, int));
+
+    // I/O Streams
+    static FILE *SetStreamOut(FILE *f);
+    static FILE *SetStreamIn(FILE *f);
+
+    // Other global readline variables
+    static std::string GetPrompt();
+    static std::string GetBuffer();
+    static int GetAbsCursor();
+    static int GetCursor();
+    static int GetBufferLength();
+    static int GetLineLength();
+
+    // Screen size
+    static void Resize();
+    static void Resize(int w, int h);
+    int GetCols() const;
+    int GetRows() const;
+
+    static Readline *Instance() { return This; }
+
+    static void        StaticPushHistory(const std::string &fname);
+    static std::string StaticPrompt(const std::string &prompt);
+    static void        StaticPopHistory(const std::string &fname);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/ReadlineColor.cc
===================================================================
--- branches/FACT++_part_filenames/src/ReadlineColor.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ReadlineColor.cc	(revision 18732)
@@ -0,0 +1,256 @@
+// **************************************************************************
+/** @namespace ReadlineColor
+
+@brief A fewer helper functions to apply color attributes and redirect the output
+
+ */
+// **************************************************************************
+#include "ReadlineColor.h"
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "Time.h"
+#include "Readline.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintBootMsg(ostream &out, const string &name, bool interactive)
+{
+#if BOOST_VERSION < 104600
+    const string n = boost::filesystem::path(name).stem();
+#else
+    const string n = boost::filesystem::path(name).stem().string();
+#endif
+
+    out << kBlue << kBold << kUnderline << "\n Master Control Program (compiled " __DATE__ " " __TIME__ << ") " << endl;
+    out << kBlue <<
+        "\n"
+        "  ENCOM MX 16-923 USER # 0" << int(Time().Mjd()) << Time::fmt(" %H:%M:%S") << Time() << Time::reset << " INFORMATION\n"
+        "\n"
+        "  TELESCOPE CONTROL PROGRAM: " << n << "\n"
+        "  ANNEXED BY FACT COLLABORATION\n"
+        "  ORIGINAL PROGRAM WRITTEN BY T.BRETZ\n"
+        "  THIS INFORMATION " << kUnderline << "PRIORITY ONE"
+        << endl;
+    out << kBlue << "  END OF LINE\n" << endl;
+
+    if (!interactive)
+        return true;
+
+    out << "Enter 'h' for help." << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintCommands(ostream &out)
+{
+    out << endl;
+    out << " " << kUnderline << " Commands:" << endl;
+    out << "   No application specific commands defined." << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the available ncurses attributes, like color.
+//!
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintAttributes(ostream &out)
+{
+    out << endl;
+    out << " Attributes:" << endl;
+    out << "   " << kReset      << "kReset" << endl;
+    out << "   " << kNormal     << "kNormal" << endl;
+    out << "   " << kHighlight  << "kHighlight" << endl;
+    out << "   " << kReverse    << "kReverse" << endl;
+    out << "   " << kUnderline  << "kUnderline" << endl;
+    out << "   " << kBlink      << "kBlink" << endl;
+    out << "   " << kDim        << "kDim" << endl;
+    out << "   " << kBold       << "kBold" << endl;
+    out << "   " << kProtect    << "kProtect" << endl;
+    out << "   " << kInvisible  << "kInvisible" << endl;
+    out << "   " << kAltCharset << "kAltCharset" << kReset << "  (kAltCharset)" << endl;
+    out << endl;
+    out << " Colors:" << endl;
+    out << "   " << kDefault << "kDefault  " << kBold << "+  kBold" << endl;
+    out << "   " << kRed     << "kRed      " << kBold << "+  kBold" << endl;
+    out << "   " << kGreen   << "kGreen    " << kBold << "+  kBold" << endl;
+    out << "   " << kYellow  << "kYellow   " << kBold << "+  kBold" << endl;
+    out << "   " << kBlue    << "kBlue     " << kBold << "+  kBold" << endl;
+    out << "   " << kMagenta << "kMagenta  " << kBold << "+  kBold" << endl;
+    out << "   " << kCyan    << "kCyan     " << kBold << "+  kBold" << endl;
+    out << "   " << kWhite   << "kWhite    " << kBold << "+  kBold" << endl;
+    out << "   " << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the keybindings available due to the Shell class
+//!
+//! @returns
+//!    always true
+//!
+//! @todo
+//!    Update output
+//
+bool ReadlineColor::PrintKeyBindings(ostream &out)
+{
+    out << endl;
+    out << " " << kUnderline << "Key bindings:" << endl << endl;;
+    out << "  Default key-bindings are identical with your bash." << endl;
+    out << endl;
+    out << kBold << "   Page-up         " << kReset << "Search backward in history" << endl;
+    out << kBold << "   Page-dn         " << kReset << "Search forward in history" << endl;
+    out << kBold << "   Ctrl-left       " << kReset << "One word backward" << endl;
+    out << kBold << "   Ctrl-right      " << kReset << "One word forward" << endl;
+    out << kBold << "   Home            " << kReset << "Beginning of line" << endl;
+    out << kBold << "   End             " << kReset << "End of line" << endl;
+    out << kBold << "   Ctrl-d          " << kReset << "Quit" << endl;
+    out << kBold << "   Ctrl-y          " << kReset << "Delete line" << endl;
+    out << kBold << "   Alt-end/Ctrl-k  " << kReset << "Delete until the end of the line" << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a general help text which also includes the commands pre-defined
+//! by the Shell class.
+//!
+//! @returns
+//!    always true
+//!
+//! @todo
+//!    Get it up-to-date
+//
+bool ReadlineColor::PrintGeneralHelp(ostream &out, const string &name)
+{
+    out << endl;
+    out << " " << kUnderline << "General help:" << endl << endl;
+    out << "  The command history is automatically loaded and saves to" << endl;
+    out << "  and from " << name << endl;
+    out << endl;
+    out << kBold << "   h,help       " << kReset << "Print this help message\n";
+    out << kBold << "   clear        " << kReset << "Clear history buffer\n";
+    out << kBold << "   lh,history   " << kReset << "Dump the history buffer to the screen\n";
+    out << kBold << "   v,variable   " << kReset << "Dump readline variables\n";
+    out << kBold << "   f,function   " << kReset << "Dump readline functions\n";
+    out << kBold << "   m,funmap     " << kReset << "Dump readline funmap\n";
+    out << kBold << "   c,command    " << kReset << "Dump available commands\n";
+    out << kBold << "   k,keylist    " << kReset << "Dump key bindings\n";
+    out << kBold << "   a,attrs      " << kReset << "Dump available stream attributes\n";
+    out << kBold << "   .! command   " << kReset << "Execute a shell command\n";
+    out << kBold << "   .w n         " << kReset << "Sleep n milliseconds\n";
+    out << kBold << "   .x filename  " << kReset << "Execute a script of commands (+optional arguments)\n";
+    out << kBold << "   .x file:N    " << kReset << "Execute a script of commands, start at label N\n";
+    out << kBold << "   .j N         " << kReset << "Forward jump to label N\n";
+    out << kBold << "   .lt f0 f1 N  " << kReset << "If float f0 lower than float f1, jump to label N\n";
+    out << kBold << "   .gt f0 f1 N  " << kReset << "If float f0 greater than float f1, jump to label N\n";
+    out << kBold << "   .eq i0 i1 N  " << kReset << "If int i0 equal int i1, jump to label N\n";
+    out << kBold << "   : N          " << kReset << "Defines a label (N=number)\n";
+    out << kBold << "   # comment    " << kReset << "Ignored\n";
+    out << kBold << "   .q,quit      " << kReset << "Quit" << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Execute a shell command through a pipe. Write stdout to rl_outstream
+//!
+//! @param cmd
+//!     Command to be executed
+//!
+//! @returns
+//!     always true
+//
+bool ReadlineColor::ExecuteShellCommand(ostream &out, const string &cmd)
+{
+    FILE *pipe = popen(cmd.c_str(), "r");
+    if (!pipe)
+    {
+        out << kRed << "ERROR - Could not create pipe '" << cmd << "': " << strerror(errno) << " [" << errno << "]" << endl;
+        return true;
+    }
+
+    while (1)
+    {
+        char buf[1024];
+
+        const size_t sz = fread(buf, 1, 1024, pipe);
+        out.write(buf, sz);
+
+        if (feof(pipe) || ferror(pipe))
+            break;
+    }
+
+    out << endl;
+
+    if (ferror(pipe))
+        out << kRed << "ERROR - Reading from pipe '" << cmd << "': " << strerror(errno) << " [" << errno << "]" << endl;
+
+    pclose(pipe);
+
+    return true;
+}
+
+
+bool ReadlineColor::Process(ostream &out, const string &str)
+{
+    // ----------- Readline -----------
+
+    if (str.substr(0, 2)==".!")
+         return ExecuteShellCommand(out, str.substr(2));
+
+    if (str=="lh" || str=="history")
+    {
+        out << endl << kBold << "History:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpHistory);
+    }
+
+    if (str=="v" || str=="variable")
+    {
+        out << endl << kBold << "Variables:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpVariables);
+    }
+
+    if (str=="f" || str=="function")
+    {
+        out << endl << kBold << "Functions:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpFunctions);
+    }
+
+    if (str=="m" || str=="funmap")
+    {
+        out << endl << kBold << "Funmap:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpFunmap);
+    }
+
+    // ------------ ReadlineWindow -------------
+
+    if (str=="a" || str=="attrs")
+        return PrintAttributes(out);
+
+    return false;
+}
Index: branches/FACT++_part_filenames/src/ReadlineColor.h
===================================================================
--- branches/FACT++_part_filenames/src/ReadlineColor.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ReadlineColor.h	(revision 18732)
@@ -0,0 +1,20 @@
+#ifndef FACT_ReadlineColor
+#define FACT_ReadlineColor
+
+#include <ostream>
+
+namespace ReadlineColor
+{
+    bool ExecuteShellCommand(std::ostream &out, const std::string &cmd);
+
+    bool PrintBootMsg(std::ostream &out, const std::string &name, bool interactive=true);
+    bool PrintAttributes(std::ostream &out);
+
+    bool PrintGeneralHelp(std::ostream &out, const std::string &name);
+    bool PrintCommands(std::ostream &out);
+    bool PrintKeyBindings(std::ostream &out);
+
+    bool Process(std::ostream &out, const std::string &str);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/ReadlineWindow.cc
===================================================================
--- branches/FACT++_part_filenames/src/ReadlineWindow.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ReadlineWindow.cc	(revision 18732)
@@ -0,0 +1,363 @@
+// **************************************************************************
+/** @class ReadlineWindow
+
+@brief Helper to redirect readline's in- and output to an ncurses window
+
+The idea of this class is to allow the use of the readline functionality
+within a ncurses window. Therefore, several callback and hook function
+of the readline libarary are redirected, which allow to redirect the
+window's input stream to readline and the readline output to the
+window.
+
+After instantisation a pointer to a ncurses WINDOW must be given to the
+object to 'bind' readline to this window.
+
+In addition the color of the readline prompt can be set using the
+SetPromptColor() member function. Note that the given color must
+be the index of a COLOR_PAIR. For details on this see the ncurses
+documentation
+
+If ncurses will use more than one window on the screen it might
+be necessary to redraw the screen before the cursor is displayed.
+Therefore, the Refresh() function must be overwritten. It is called
+before the cursor is put to its final location in the readline line
+and after all update to the screen was performed.
+
+Refresh() can be used to force a redisplay of the current input line
+from a derived class. This might be necessary after changes top the
+screen or window size.
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+**/
+// **************************************************************************
+#include "Shell.h"
+
+#include <sstream>
+#include <iostream>
+#include <string.h> // strlen
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Propagate prgname to the Readline constructor.
+//! Initialize fPromtX and fPromtY to 0.
+//! Set fWindow to 0. 
+//!
+//! @param prgname
+//!    see Readline::Readline()
+//!
+//! @todo
+//!    Maybe we should add sanity check for fWindow==0 in the functions?
+//!
+ReadlineWindow::ReadlineWindow(const char *prgname) : Readline(prgname),
+    fWindow(0), fPromptX(0), fPromptY(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the window in which the readline prompt and all readline output
+//! is displayed. Sets the readline screen size (rl_set_screen_size)
+//! accoring to the size of the window.
+//!
+//! Setup all necessry callback functions. To redirect readline input
+//! and output properly.
+//!
+//! @param w
+//!    Pointer to a ncurses WINDOW.
+//
+void ReadlineWindow::SetWindow(WINDOW *w)
+{
+    if (!w)
+        return;
+
+    // Get size of the window
+    int width, height;
+    getmaxyx(w, height, width);
+
+    // Propagate the size to the readline library
+    Resize(width, height);
+
+    // Finally set the pointer to the panel in which we are supposed to
+    // operate
+    fWindow = w;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Callback function for readlines rl_getc_function. Apart from redirecting
+//! the input from the window to the readline libarary, it also checks if
+//! the input forced scrolling of the window contents and in this case
+//! adapt fPromptY.
+//!
+//! @return
+//!    the character read by wgetch
+//
+/*
+int ReadlineWindow::Getc(FILE *)
+{
+    /// ====   It seems this is obsolete because we will get teh scrolling
+    //         from the continous call to event hook anyway
+
+    // Get size of the window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Get current cursor position
+    int x0, y0, y1, x1;
+    getyx(fWindow, y0, x0);
+
+    // Read a character from stream in window
+    const int c = wgetch(fWindow);
+
+    // Get new cursor position
+    getyx(fWindow, y1, x1);
+
+    // Find out whether the last character initiated a scroll
+    if (y0==lines-1 && y1==lines-1 && x1==0 && x0==cols-1)
+        fPromptY--;
+
+    // return character
+    return c;
+}
+*/
+
+// --------------------------------------------------------------------------
+//
+//! Store the current cursor position in fPromptX/Y
+//
+void ReadlineWindow::Startup()
+{
+    getyx(fWindow, fPromptY, fPromptX);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Move the cursor to the position stored in fPromptX/Y which should
+//! correspond to the beginning of the output line
+//
+void ReadlineWindow::RewindCursor() const
+{
+    wmove(fWindow, fPromptY, fPromptX);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The event hook which is called regularly when a readline call is in
+//! progress. We use this to synchronously upadte our prompt (mainly
+//! the current cursor position) and refresh the screen, so that all
+//! changes get displayed soon.
+//!
+//! By default, this will be called at most ten times a second if there
+//! is no keyboard input.
+//
+void ReadlineWindow::EventHook(bool)
+{
+    Readline::EventHook();
+    Redisplay();
+    /*
+     * This doesn't work if the contents of the line changes, e.g. when
+     * the prompt is replaced
+
+    // Refresh the screen
+    Refresh();
+
+    // Now move the cursor to its expected position
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    const int pos = fPromptY*cols + fPromptX + GetAbsCursor();
+    wmove(fWindow, pos/cols, pos%cols);
+
+    // Make the cursor movement visible on the screen
+    wrefresh(fWindow);
+    */
+
+    // The lines above are just a simplified version of Redisplay()
+    // which skips all the output.
+}
+
+// --------------------------------------------------------------------------
+//
+//! This basically implement displaying the whole line, starting with the
+//! prompt and the rl_line_buffer. It also checks if displaying it
+//! results in a scroll of the window and adapt fPromptY accordingly.
+//!
+//! The prompt is displayed in the color defined by fColor.
+//!
+//! Before the cursor position is finally set a screen refresh (Refresh())
+//! is initiated to ensure that nothing afterwards will change the cursor
+//! position. It might be necessary to overwrite this function.
+//!
+//! @todo fix docu
+//
+void ReadlineWindow::Redisplay()
+{
+    // Move to the beginning of the output
+    wmove(fWindow, fPromptY, fPromptX);
+
+    // Get site of the window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    const string prompt = GetPrompt();
+    const string buffer = GetBuffer();
+
+    // Issue promt and redisplay text
+    wattron(fWindow, fColor);
+    wprintw(fWindow, "%s", prompt.c_str());
+    wattroff(fWindow, fColor);
+    wprintw(fWindow, "%s", buffer.c_str());
+
+    // Clear everything after that
+    wclrtobot(fWindow);
+
+    // Calculate absolute position in window or beginning of output
+    int xy = fPromptY*cols + fPromptX;
+
+    // Calculate position of end of prompt
+    xy += prompt.length();
+
+    // Calculate position of cursor and end of output
+    const int cur = xy + GetCursor();
+    const int end = xy + buffer.size();
+
+    // Calculate if the above output scrolled the window and by how many lines
+    int scrolls = end/cols - lines + 1;
+
+    if (scrolls<0)
+        scrolls = 0;
+
+    fPromptY -= scrolls;
+
+    // new position
+    const int px = cur%cols;
+    const int py = scrolls>=1 ? cur/cols - scrolls : cur/cols;
+
+    // Make sure that whatever happens while typing the correct
+    // screen is shown (otherwise the top-panel disappears when
+    // we scroll)
+    Refresh();
+
+    // Move the cursor to the cursor position
+    wmove(fWindow, py, px);
+
+    // Make changes visible on screen
+    wrefresh(fWindow);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Callback function to display the finally compiled list of completion
+//! options. Adapts fPromtY for the number of scrolled lines.
+//!
+//! @param matches
+//!    A list with the matches found. The first element contains
+//!    what was completed. The length of the list is therefore
+//!    num+1.
+//!
+//! @param num
+//!    Number of possible completion entries in the list.
+//!
+//! @param max
+//!    maximum length of the entries
+//!
+//! @todo
+//!    Maybe we can use rl_outstream here if we find a way to redirect
+//!    the stream to us instead of a file.
+//
+void ReadlineWindow::CompletionDisplay(char **matches, int num, int max)
+{
+    // Increase maximum size by two to get gaps in between the columns
+    max += 2; // Two whitespaces in between the output
+
+    // Get size of window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Allow an empty space at the end of the lines for a '\n'
+    cols--;
+
+    // calculate the final number columns
+    const int ncols = cols / max;
+
+    // Compile a proper format string
+    ostringstream fmt;
+    fmt << "%-" << max << 's';
+
+    // loop over all entries and display them
+    int l=0;
+    for (int i=0; i<num; i++)
+    {
+        // Check if we have to put a line-break
+        if (i%ncols==0)
+        {
+            if ((max+0)*ncols < cols)
+                wprintw(fWindow, "\n");
+            l++;
+        }
+
+        // Display an entry
+        wprintw(fWindow, fmt.str().c_str(), matches[i+1]);
+    }
+
+    // Display an empty line after the list
+    if ((num-1)%ncols>0)
+        wprintw(fWindow, "\n");
+    wprintw(fWindow, "\n");
+
+    // Get new cursor position
+    int x, y;
+    getyx(fWindow, y, x);
+
+    // Clear everything behind the list
+    wclrtobot(fWindow);
+
+    // Adapt fPromptY for the number of scrolled lines if any.
+    if (y==lines-1)
+        fPromptY = lines-1;
+
+    // Display anything
+    wrefresh(fWindow);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites Shutdown() of Readline. After Readline::Prompt has
+//! returned a Redisplay() is forced to ensure a proper display of
+//! everything. Finally, the display line is ended by a \n.
+//!
+//! @param buf
+//!    The buffer returned by the readline call
+//
+void ReadlineWindow::Shutdown(const char *buf)
+{
+    // Move the cursor to the end of the total line entered by the user
+    // (the user might have pressed return in the middle of the line)...
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Calculate absolute position in window or beginning of output
+    // We can't take a pointer to the buffer because rl_end is not
+    // valid anymore at the end of a readline call
+    int xy = fPromptY*cols + fPromptX + GetPrompt().size() + strlen(buf);
+    wmove(fWindow, xy/cols, xy%cols);
+
+    // ...and output a newline. We have to do the manually.
+    wprintw(fWindow, "\n");
+
+    // refresh the screen
+    wrefresh(fWindow);
+
+    // This might have scrolled the window
+    if (xy/cols==lines-1)
+        fPromptY--;
+}
Index: branches/FACT++_part_filenames/src/ReadlineWindow.h
===================================================================
--- branches/FACT++_part_filenames/src/ReadlineWindow.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ReadlineWindow.h	(revision 18732)
@@ -0,0 +1,42 @@
+#ifndef FACT_ReadlineWindow
+#define FACT_ReadlineWindow
+
+#include "Readline.h"
+
+typedef struct _win_st WINDOW;
+
+class ReadlineWindow : public Readline
+{
+    WINDOW *fWindow; /// Pointer to the panel for the input stream
+
+    int fPromptX;    /// When the readline call is issued the x position at which the output will start is stored here
+    int fPromptY;    /// When the readline call is issued the y position at which the output will start is stored here
+
+    int fColor;      /// Color index in which the prompt should be displayed
+
+protected:
+    // The implementations of the callback funtions
+    //int  Getc(FILE *);
+    void Startup();
+    void Redisplay();
+    void EventHook(bool = false);
+    void CompletionDisplay(char **matches, int num, int max);
+
+    // Refresh the display before setting the cursor position
+    virtual void Refresh() { }
+
+    // Callback after readline has returned
+    void Shutdown(const char *buf);
+
+public:
+    ReadlineWindow(const char *prgname);
+
+    // Initialization
+    void SetWindow(WINDOW *w);
+    void SetColorPrompt(int col) { fColor = col; }
+
+    // Move cursor to start of last prompt
+    void RewindCursor() const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/RemoteControl.cc
===================================================================
--- branches/FACT++_part_filenames/src/RemoteControl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/RemoteControl.cc	(revision 18732)
@@ -0,0 +1,103 @@
+#include "RemoteControl.h"
+
+// ==========================================================================
+
+bool RemoteControlImp::ProcessCommand(const std::string &str, bool change)
+{
+    if (fCurrentServer.empty())
+    {
+        const size_t p1 = str.find_first_of(' ');
+        const size_t p2 = str.find_first_of('/');
+
+        const bool is_cmd = p2!=string::npos && p1>p2;
+
+        string s = str;
+        if (is_cmd)
+            s = str.substr(0, p2);
+
+        if (p2<p1 && p2!=str.length()-1)
+        {
+            const string c = str.substr(p2+1);
+            return SendDimCommand(lout, s, c, !change);
+        }
+
+        if (HasServer(s))
+        {
+            if (!change)
+                return SendDimCommand(lout, str, "", !change);
+
+            fCurrentServer = s;
+            return true;
+        }
+
+        if (!change && is_cmd)
+            throw runtime_error("Unkown server '"+s+"'");
+
+        if (change)
+            lout << kRed << "Unkown server '" << s << "'" << endl;
+
+        return false;
+    }
+
+    if (!fCurrentServer.empty() && str=="..")
+    {
+        fCurrentServer = "";
+        return true;
+    }
+    return SendDimCommand(lout, fCurrentServer, str, !change);
+}
+
+// ==========================================================================
+
+#include "tools.h"
+
+string RemoteConsole::GetUpdatePrompt() const
+{
+    if (fImp->GetCurrentState()>=3)
+        return "";
+
+    // If we are continously flushing the buffer omit the buffer size
+    // If we are buffering show the buffer size
+    const string beg = GetLinePrompt();
+
+    // If we have not cd'ed to a server show only the line start
+    if (fCurrentServer.empty() || !fImp)
+        return beg + "> ";
+
+    // Check if we have cd'ed to a valid server
+    const State state = fImp->GetServerState(fCurrentServer);
+    if (state.index==-256)
+        return beg + "> ";
+
+    // The server
+    const string serv = "\033[34m\033[1m"+fCurrentServer+"\033[0m";
+
+    // If no match found or something wrong found just output the server
+    if (state.index<-1)
+        return beg + " " + serv + "> ";
+
+    // If everything found add the state to the server
+    return beg + " " + serv + ":\033[32m\033[1m" + state.name + "\033[0m> ";
+}
+
+string RemoteShell::GetUpdatePrompt() const
+{
+    // If we are continously flushing the buffer omit the buffer size
+    // If we are buffering show the buffer size
+    const string beg = GetLinePrompt();
+
+    // If we have not cd'ed to a server show only the line start
+    if (fCurrentServer.empty() || !fImp)
+        return beg + "> ";
+
+    const State state = fImp->GetServerState(fCurrentServer);
+    if (state.index==-256)
+        return beg + "> ";//Form("\n[%d] \033[34m\033[1m%s\033[0m> ", GetLine(), fCurrentServer.c_str());
+
+    // If no match found or something wrong found just output the server
+    if (state.index<-1)
+        return beg + " " + fCurrentServer + "> ";
+
+    // If everything found add the state to the server
+    return beg + " " + fCurrentServer + ":" + state.name + "> ";
+}
Index: branches/FACT++_part_filenames/src/RemoteControl.h
===================================================================
--- branches/FACT++_part_filenames/src/RemoteControl.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/RemoteControl.h	(revision 18732)
@@ -0,0 +1,599 @@
+#ifndef FACT_RemoteControl
+#define FACT_RemoteControl
+
+// **************************************************************************
+/** @class RemoteControlImp
+
+@brief This implements the basic functions of a remote control via dim
+
+Through a ServiceList object this object subscribes to all available
+SERVICE_LISTs  in the dim network. This allows to keep an up-to-date
+list of all servers and services. Its ProcessCommand member function
+allows to emit commands according to the services found in the network.
+Its infoHandler() is called as an update notifier from the ClientList
+object.
+
+**/
+// **************************************************************************
+#include <string>
+
+using namespace std;
+
+class RemoteControlImp
+{
+protected:
+    std::ostream &lin;           /// Output stream for local synchrounous output
+    std::ostream &lout;          /// Output stream for local synchrounous output
+
+    std::string fCurrentServer;  /// The server to which we currently cd'ed
+
+protected:
+    // Redirect asynchronous output to the output window
+    RemoteControlImp(std::ostream &out, std::ostream &in) : lin(out), lout(in)
+    {
+    }
+    virtual ~RemoteControlImp() { }
+    bool ProcessCommand(const std::string &str, bool change=true);
+
+    virtual bool HasServer(const std::string &) { return false; }
+    virtual bool SendDimCommand(ostream &, const std::string &, const std::string &, bool = false) { return false; }
+};
+
+// **************************************************************************
+/** @class RemoteControl
+
+@brief Implements a remote control based on a Readline class for the dim network
+
+This template implements all functions which overwrite any function from the
+Readline class. Since several derivatives of the Readline class implement
+different kind of Readline access, this class can be derived by any of them
+due to its template argument. However, the normal case will be
+deriving it from either Console or Shell.
+
+@tparam T
+   The base class for RemoteControl. Either Readlien or a class
+    deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include "StateMachineDimControl.h"
+
+#include "InterpreterV8.h"
+#include "ReadlineColor.h"
+#include "Event.h"
+#include "tools.h"
+
+template <class T>
+class RemoteControl : public T, public RemoteControlImp, public InterpreterV8
+{
+protected:
+    StateMachineDimControl *fImp;
+
+    void SetSection(int s) { if (fImp) fImp->ChangeState(s); }
+
+    int Write(const Time &time, const std::string &txt, int qos=MessageImp::kMessage)
+    {
+        if (!fImp)
+            return 0;
+        return fImp ? fImp->Write(time, txt, qos) : MessageImp::Write(time, txt, qos);
+    }
+
+    void exitHandler(int code) { if (dynamic_cast<MainImp*>(fImp)) dynamic_cast<MainImp*>(fImp)->Stop(code); else exit(code); }
+
+    // ==================== Readline tab-completion =====================
+
+    static void append(std::string &str)
+    {
+        str.append("/");
+    }
+    static void chop(std::string &str)
+    {
+        const size_t p = str.find_first_of('/');
+        if (p!=string::npos)
+            str = str.substr(p+1);
+    }
+
+    // This funtion defines which generator should be called.
+    // If it returns 0 the standard readline generator are called.
+    // Otherwise set the right generator with rl_completion_matches.
+    char **Completion(const char *text, int start, int)
+    {
+        if (T::fScript=="java")
+        {
+            return T::Complete(JsGetCommandList(text, start), text);
+        }
+
+        // Get the whole buffer before the tab-position
+        const string b = string(T::GetBuffer());
+        const string s = b.substr(0, start);
+        const string l = Tools::Trim(s.c_str());
+        if (l.empty())
+        {
+            if (fCurrentServer.empty())
+            {
+                const size_t p1 = b.find_first_of(' ');
+                const size_t p2 = b.find_first_of('/');
+
+                if (p1==string::npos && p2!=string::npos)
+                    return T::Complete(GetCommandList(), text);
+
+                std::vector<std::string> v = GetServerList();
+                for_each(v.begin(), v.end(), RemoteControl::append);
+                return T::Complete(v, text);
+            }
+            else
+            {
+                std::vector<std::string> v = GetCommandList(fCurrentServer);
+                for_each(v.begin(), v.end(), RemoteControl::chop);
+                return T::Complete(v, text);
+            }
+        }
+        return T::Complete(GetCommandList(l), text);
+    }
+
+    void EventHook(bool newline)
+    {
+        if (fImp && !fImp->HasServer(fCurrentServer))
+            fCurrentServer = "";
+
+        T::EventHook(newline);
+    }
+
+    // ===== Interface to access the DIM network through the StateMachine ====
+
+    bool HasServer(const std::string &server) { return fImp ? fImp->HasServer(server) : false; }
+    vector<string> GetServerList() const { return fImp ? fImp->GetServerList() : vector<string>(); }
+    vector<string> GetCommandList(const string &server) const { return fImp ? fImp->GetCommandList(server) : vector<string>(); }
+    vector<string> GetCommandList() const { return fImp ? fImp->GetCommandList() : vector<string>(); }
+    int PrintStates(std::ostream &out, const std::string &serv="") const { return fImp ? fImp->PrintStates(out, serv) : 0; }
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const
+    { return fImp ? fImp->PrintDescription(out, iscmd, serv, service) : 0; }
+    bool SendDimCommand(ostream &out, const std::string &server, const std::string &str, bool do_throw=false)
+    {
+        if (do_throw)
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
+
+        try
+        {
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
+        }
+        catch (const runtime_error &e)
+        {
+            lout << kRed << e.what() << endl;
+            return false;
+        }
+    }
+
+    // ============ Pseudo-callback interface for the JavaScrip engine =======
+
+    void  JsLoad(const std::string &)         { SetSection(-3); InterpreterV8::JsLoad(); }
+    void  JsStart(const std::string &)        { SetSection(-2); }
+    void  JsEnd(const std::string &)          { UnsubscribeAll(); InterpreterV8::JsEnd(); SetSection(-4); }
+    bool  JsSend(const std::string &str)      { return ProcessCommand(str, false); }
+    void  JsOut(const std::string &msg)       { lin << kDefault << msg << endl; }
+    void  JsWarn(const std::string &msg)      { lin << kYellow << msg << endl; }
+    void  JsResult(const std::string &msg)    { lin << kBlue << " = " << msg << '\n' << endl; }
+    void  JsPrint(const std::string &msg)     { if (fImp) fImp->Comment(msg); }
+    void  JsAlarm(const std::string &msg)     { if (fImp) fImp->Alarm(msg); }
+    void  JsException(const std::string &str) { if (fImp) fImp->Error(str.empty()?"|":("| "+str)); }
+    bool  JsHasState(int s) const             { return fImp && fImp->HasState(s); }
+    bool  JsHasState(const string &n) const   { return fImp && (fImp->GetStateIndex(n)!=StateMachineImp::kSM_NotAvailable); }
+    bool  JsSetState(int s)                   { if (!fImp || fImp->GetCurrentState()<2) return false; SetSection(s-4); return true; }
+    int   JsGetState(const string &n) const   { return fImp ? fImp->GetStateIndex(n) : StateMachineImp::kSM_NotAvailable; }
+    vector<State> JsGetStates(const string &server) { return fImp ? fImp->GetStates(server) : vector<State>(); }
+    set<Service> JsGetServices() { return fImp ? fImp->GetServiceList() : set<Service>(); }
+    vector<Description> JsGetDescription(const string &server) { return fImp ? fImp->GetDescription(server) : vector<Description>(); }
+    State JsGetCurrentState() const
+    {
+        if (!fImp)
+            return State();
+        const int idx = fImp->GetCurrentState();
+        return State(idx, fImp->GetStateName(idx), fImp->GetStateDescription(idx));
+    }
+    State JsState(const std::string &server)  { return fImp ? fImp->GetServerState(server) : State(-256, string()); }
+    bool  JsNewState(int s, const string &n, const string &c)
+    {
+        return fImp && fImp->AddStateName(s, n, c);
+    }
+
+    /*
+    void JsSleep(uint32_t ms)
+    {
+        const Time timeout = Time()+boost::posix_time::millisec(ms==0?1:ms);
+
+        T::Lock();
+
+        while (timeout>Time() && !T::IsScriptStopped())
+            usleep(1);
+
+        T::Unlock();
+    }*/
+
+    int JsWait(const string &server, int32_t state, uint32_t ms)
+    {
+        if (!fImp)
+        {
+            lout << kRed << "RemoteControl class not fully initialized." << endl;
+            T::StopScript();
+            return -1;
+        }
+
+        if (!HasServer(server))
+        {
+            lout << kRed << "Server '" << server << "' not found." << endl;
+            T::StopScript();
+            return -1;
+        }
+
+        T::Lock();
+
+        const Time timeout = ms<=0 ? Time(Time::none) : Time()+boost::posix_time::millisec(ms);
+
+        int rc = 0;
+        do
+        {
+            State st = fImp->GetServerState(server);
+            if (st.index==-256)
+            {
+                lout << kRed << "Server '" << server << "' disconnected." << endl;
+                T::StopScript();
+                return -1;
+            }
+            if (st.index==state)
+            {
+                rc = 1;
+                break;
+            }
+
+            usleep(1);
+        }
+        while (timeout>Time() && !T::IsScriptStopped());
+
+        T::Unlock();
+
+        return rc;
+    }
+
+    vector<Description> JsDescription(const string &service)
+    {
+        return fImp ? fImp->GetDescription(service) :  vector<Description>();
+    }
+
+    struct EventInfo
+    {
+        EventImp *ptr;
+        uint64_t counter;
+        Event data;
+        EventInfo(EventImp *p) : ptr(p), counter(0) { }
+    };
+
+    // Keep a copy of the data for access by V8
+    map<string, EventInfo> fInfo;
+    std::mutex fMutex;
+
+    pair<uint64_t, EventImp *> JsGetEvent(const std::string &service)
+    {
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        const auto it = fInfo.find(service);
+
+        // No subscription for this event available
+        if (it==fInfo.end())
+            return make_pair(0, static_cast<EventImp*>(NULL));
+
+        EventInfo &info = it->second;
+
+        // No event was received yet
+        if (info.counter==0)
+            return make_pair(0, static_cast<EventImp*>(NULL));
+
+        return make_pair(info.counter-1, (EventImp*)&info.data);
+    }
+
+    int Handle(const EventImp &evt, const string &service)
+    {
+        // This function is called from the StateMachine
+        fMutex.lock();
+
+        const auto it = fInfo.find(service);
+
+        // This should never happen... but just in case.
+        if (it==fInfo.end())
+        {
+            fMutex.unlock();
+            return StateMachineImp::kSM_KeepState;
+        }
+
+        EventInfo &info = it->second;
+
+        const uint64_t cnt = ++info.counter;
+        info.data = static_cast<Event>(evt);
+
+        fMutex.unlock();
+
+        JsHandleEvent(evt, cnt, service);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    void *JsSubscribe(const std::string &service)
+    {
+        if (!fImp)
+            return 0;
+
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        // Do not subscribe twice
+        if (fInfo.find(service)!=fInfo.end())
+            return 0;
+
+        EventImp *ptr = &fImp->Subscribe(service)(fImp->Wrap(bind(&RemoteControl<T>::Handle, this, placeholders::_1, service)));
+        fInfo.insert(make_pair(service, EventInfo(ptr)));
+        return ptr;
+    }
+
+    bool JsUnsubscribe(const std::string &service)
+    {
+        if (!fImp)
+            return false;
+
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        const auto it = fInfo.find(service);
+        if (it==fInfo.end())
+            return false;
+
+        fImp->Unsubscribe(it->second.ptr);
+        fInfo.erase(it);
+
+        return true;
+    }
+
+    void UnsubscribeAll()
+    {
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        for (auto it=fInfo.begin(); it!=fInfo.end(); it++)
+            fImp->Unsubscribe(it->second.ptr);
+
+        fInfo.clear();
+    }
+
+    // ===========================================================================
+
+
+public:
+    // Redirect asynchronous output to the output window
+    RemoteControl(const char *name) : T(name),
+        RemoteControlImp(T::GetStreamOut(), T::GetStreamIn()), fImp(0)
+    {
+    }
+
+    bool PrintGeneralHelp()
+    {
+        T::PrintGeneralHelp();
+        lout << " " << kUnderline << "Specific commands:\n";
+        lout << kBold << "   h,help <arg> " << kReset << "List help text for given server or command.\n";
+        lout << kBold << "   svc,services " << kReset << "List all services in the network.\n";
+        lout << kBold << "   st,states    " << kReset << "List all states in the network.\n";
+        lout << kBold << "   > <text>     " << kReset << "Echo <text> to the output stream\n";
+        lout << kBold << "   .s           " << kReset << "Wait for the state-machine to change to the given state.\n";
+        lout <<          "                "              "     .s <server> [<state> [<timeout> [<label>]]]\n";
+        lout <<          "                "              "<server>  The server for which state to wait (e.g. FTM_CONTROL)\n";
+        lout <<          "                "              "<state>   The state id (see 'states') for which to wait (e.g. 3)\n";
+        lout <<          "                "              "<imeout>  A timeout in millisenconds how long to wait (e.g. 500)\n";
+        lout <<          "                "              "<label>   A label (number) until which everything is skipped in case of timeout\n";
+        lout << kBold << "   .js file     " << kReset << "Execute a JavaScript\n";
+        if (!StateMachineDimControl::fIsServer)
+            lout << kBold << "   .java        " << kReset << "Start JavaScript interpreter\n";
+        lout << endl;
+        return true;
+    }
+
+    bool PrintCommands()
+    {
+        lout << endl << kBold << "List of commands:" << endl;
+        PrintDescription(lout, true);
+        return true;
+    }
+
+    // returns whether a command should be put into the history
+    bool Process(const std::string &str)
+    {
+        if (str.substr(0, 2)=="h " || str.substr(0, 5)=="help ")
+        {
+            const size_t p1 = str.find_first_of(' ');
+            const string svc = str.substr(p1+1);
+
+            const size_t p3 = svc.find_first_of('/');
+            const string s = svc.substr(0, p3);
+            const string c = p3==string::npos?"":svc.substr(p3+1);
+
+            lout << endl;
+            if (!fCurrentServer.empty())
+            {
+                if (PrintDescription(lout, true, fCurrentServer, svc)==0)
+                    lout << "   " << svc << ": <not found>" << endl;
+            }
+            else
+            {
+                if (PrintDescription(lout, true, s, c)==0)
+                    lout << "   <no matches found>" <<endl;
+            }
+
+            return true;
+        }
+
+        if (str.substr(0, 4)==".js ")
+        {
+            string opt(str.substr(4));
+
+            map<string,string> data = Tools::Split(opt, true);
+            if (opt.size()==0)
+            {
+                if (data.size()==0)
+                    lout << kRed << "JavaScript filename missing." << endl;
+                else
+                    lout << kRed << "Equal sign missing in argument '" << data.begin()->first << "'" << endl;
+
+                return true;
+            }
+
+            T::fScript = opt;
+
+            T::Lock();
+            JsRun(opt, data);
+            T::Unlock();
+
+            return true;
+        }
+
+        if (str==".java" && !StateMachineDimControl::fIsServer)
+        {
+            T::fScript = "java";
+
+            T::Lock();
+            JsRun("");
+            T::Unlock();
+
+            T::fScript = "";
+
+            return true;
+        }
+
+        if (str.substr(0, 3)==".s ")
+        {
+            istringstream in(str.substr(3));
+
+            int state=-100, ms=0;
+            string server;
+
+            in >> server >> state >> ms;
+            if (state==-100)
+            {
+                lout << kRed << "Couldn't parse state id in '" << str.substr(3) << "'" << endl;
+                return true;
+            }
+
+            T::Lock();
+            const int rc = JsWait(server, state, ms);
+            T::Unlock();
+
+            if (rc<0 || rc==1)
+                return true;
+
+            int label = -1;
+            in >> label;
+            if (in.fail() && !in.eof())
+            {
+                lout << kRed << "Invalid label in '" << str.substr(3) << "'" << endl;
+                T::StopScript();
+                return true;
+            }
+            T::SetLabel(label);
+
+            return true;
+        }
+
+        if (str[0]=='>')
+        {
+            fImp->Comment(Tools::Trim(str.substr(1)));
+            return true;
+        }
+
+        if (ReadlineColor::Process(lout, str))
+            return true;
+
+        if (T::Process(str))
+            return true;
+
+        if (str=="services" || str=="svc")
+        {
+            PrintDescription(lout, false);
+            return true;
+        }
+
+        if (str=="states" || str=="st")
+        {
+            PrintStates(lout);
+            return true;
+        }
+
+        return !ProcessCommand(str);
+    }
+
+    void SetReceiver(StateMachineDimControl &imp)
+    {
+        fImp = &imp;
+        fImp->SetStateCallback(bind(&InterpreterV8::JsHandleState, this, placeholders::_1, placeholders::_2));
+        fImp->SetInterruptHandler(bind(&InterpreterV8::JsHandleInterrupt, this, placeholders::_1));
+    }
+};
+
+
+
+// **************************************************************************
+/** @class RemoteStream
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+class RemoteStream : public RemoteControl<ConsoleStream>
+{
+public:
+    RemoteStream(const char *name, bool null = false)
+        : RemoteControl<ConsoleStream>(name) { SetNullOutput(null); }
+};
+
+// **************************************************************************
+/** @class RemoteConsole
+
+@brief Derives the RemoteControl from Control and adds a proper prompt
+
+This is basically a RemoteControl, which derives through the template
+argument from the Console class. It enhances the functionality of
+the remote control with a proper updated prompt.
+
+ */
+// **************************************************************************
+
+class RemoteConsole : public RemoteControl<Console>
+{
+public:
+    RemoteConsole(const char *name, bool continous=false) :
+        RemoteControl<Console>(name)
+    {
+        SetContinous(continous);
+    }
+    string GetUpdatePrompt() const;
+};
+
+// **************************************************************************
+/** @class RemoteShell
+
+@brief Derives the RemoteControl from Shell and adds colored prompt
+
+This is basically a RemoteControl, which derives through the template
+argument from the Shell class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class RemoteShell : public RemoteControl<Shell>
+{
+public:
+    RemoteShell(const char *name, bool = false) :
+        RemoteControl<Shell>(name)
+    {
+    }
+    string GetUpdatePrompt() const;
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/RowChecker.cc
===================================================================
--- branches/FACT++_part_filenames/src/RowChecker.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/RowChecker.cc	(revision 18732)
@@ -0,0 +1,114 @@
+/*
+ * RowChecker.cc
+ *
+ *  Created on: Dec 20, 2011
+ *      Author: lyard
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <cstring>
+#include <sstream>
+
+using namespace std;
+
+
+//usage RowChecker <name of file> <size of header> <size of line> <mjdref> <givenLines>
+int main(int argc, char** argv)
+{
+
+    if (argc < 6)
+        return 0;
+
+    fstream file(argv[1]);
+
+    int headLen = atoi(argv[2]);
+    int lineWidth = atoi(argv[3]);
+    double mjdRef = atof(argv[4]);
+    int numLines = atoi(argv[5]);
+
+    int totalBytes = headLen;
+    file.seekp(headLen);
+
+    char* buf = new char[lineWidth];
+
+    double currentTime = 0;
+    char timeBuf[16];
+    int realNumRows = 0;
+
+    while (file.read(buf, lineWidth))
+    {
+        timeBuf[0] = buf[7];
+        timeBuf[1] = buf[6];
+        timeBuf[2] = buf[5];
+        timeBuf[3] = buf[4];
+        timeBuf[4] = buf[3];
+        timeBuf[5] = buf[2];
+        timeBuf[6] = buf[1];
+        timeBuf[7] = buf[0];
+        currentTime = reinterpret_cast<double*>(timeBuf)[0];
+
+        if (realNumRows >= numLines)
+        {
+            if (currentTime + mjdRef > 60000 || currentTime + mjdRef < 10000)
+                break;
+            if (currentTime + mjdRef > 20000 && currentTime + mjdRef < 50000)
+                break;
+        }
+//fix the time column if required.
+        if (currentTime > 50000 && currentTime < 60000)
+        {
+            currentTime -= 40587;
+            reinterpret_cast<double*>(timeBuf)[0] = currentTime;
+            file.seekp(totalBytes);
+            file.put(timeBuf[7]);
+            file.put(timeBuf[6]);
+            file.put(timeBuf[5]);
+            file.put(timeBuf[4]);
+            file.put(timeBuf[3]);
+            file.put(timeBuf[2]);
+            file.put(timeBuf[1]);
+            file.put(timeBuf[0]);
+            file.seekp(totalBytes + lineWidth);
+        }
+
+        realNumRows++;
+        totalBytes += lineWidth;
+    }
+    //now update the number of lines of the file
+    file.close();
+    file.open(argv[1]);
+    file.seekp(2880);
+    delete[] buf;
+    buf = new char[81];
+    buf[80] = 0;
+    bool changeDone = false;
+    int seeked = 2880;
+    if (realNumRows == numLines)
+        changeDone = true;
+
+    while (file.good() && !changeDone)
+    {
+        file.read(buf, 80);
+        string str(buf);
+
+        if (str.substr(0,9) == "NAXIS2  =")
+        {
+            ostringstream ss;
+            ss << realNumRows;
+            file.seekp(seeked + 30 - ss.str().size());
+            for (int i=0;i<ss.str().size();i++)
+                file.put(ss.str()[i]);
+            changeDone = true;
+            break;
+        }
+        seeked += 80;
+    }
+    if (!changeDone)
+        cout << -1;
+    else
+        cout << realNumRows;
+    file.close();
+    return realNumRows;
+}
Index: branches/FACT++_part_filenames/src/Service.h
===================================================================
--- branches/FACT++_part_filenames/src/Service.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Service.h	(revision 18732)
@@ -0,0 +1,17 @@
+#ifndef FACT_Service
+#define FACT_Service
+
+struct Service
+{
+    std::string name;
+    std::string server;
+    std::string service;
+    std::string format;
+    bool   iscmd;
+};
+
+inline bool operator<(const Service& left, const Service& right)
+{
+    return left.name < right.name;
+}
+#endif
Index: branches/FACT++_part_filenames/src/ServiceDim.h
===================================================================
--- branches/FACT++_part_filenames/src/ServiceDim.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ServiceDim.h	(revision 18732)
@@ -0,0 +1,46 @@
+// **************************************************************************
+/** @class EventDim
+
+@brief Implementation of an EventImp as a DimStampedInfo
+
+This is the implementation of an event which can be posted to a state
+machine via the DIM network.
+
+@todo
+- Add reference to DIM docu
+- improve docu
+
+*/
+// **************************************************************************
+#ifndef FACT_ServiceDim
+#define FACT_ServiceDim
+
+#include "EventImp.h"
+#include "dic.hxx"
+
+class ServiceDim : public EventImp, public DimStampedInfo
+{
+public:
+    ServiceDim(const std::string &name, DimInfoHandler *handler)
+        : EventImp(), DimStampedInfo(name.c_str(), (void*)NULL, 0, handler)
+    {
+    }
+    std::string GetName() const   { return const_cast<ServiceDim*>(this)->getName(); }
+    std::string GetFormat() const { return const_cast<ServiceDim*>(this)->getFormat(); }
+
+    const void *GetData() const   { return const_cast<ServiceDim*>(this)->getData(); }
+    size_t      GetSize() const   { return const_cast<ServiceDim*>(this)->getSize(); }
+
+    Time GetTime() const
+    {
+        // Must be in exactly this order!
+        const int tsec = const_cast<ServiceDim*>(this)->getTimestamp();
+        const int tms  = const_cast<ServiceDim*>(this)->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+
+    int GetQoS() const { return const_cast<ServiceDim*>(this)->getQuality(); }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/ServiceList.cc
===================================================================
--- branches/FACT++_part_filenames/src/ServiceList.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ServiceList.cc	(revision 18732)
@@ -0,0 +1,782 @@
+// **************************************************************************
+/** @class ServiceList
+
+@brief Maintains a list of all servers and services available in the Dim nbetwork
+
+The idea of this class is to maintain a list of servers and services
+available in the Dim network. The servers are retrieved by subscribing to
+DIS_DNS/SERVER_LIST. The services are retrieved by subscribing to all
+servers SERVICE_LIST service.
+
+The server names and the corresponidng DimInfo ovjects for their service
+lists are stored in fServerList.
+
+The services of all servers are stored in the fServiceList.
+
+From the services a lookup table fFormatList is created storing the
+received formats of all services/commands. The format list is only
+updated. So it might happen that formats for commands not available
+anymore are still in the list.
+
+Whether commands or services are stored can be selected in the constructor
+by the type argument. Use "CMD" for commands and "" for services.
+
+
+@todo
+- Resolve the dependancy on WindowLog, maybe we can issue the log-messages
+  via MessageImp or we provide more general modfiers (loike in MLogManip)
+- Maybe we also get updates (+/-) on the SERVCIE_LIST?
+- check if we really need our own logging stream
+- Implement fType=="*"
+
+*/
+// **************************************************************************
+#include "ServiceList.h"
+
+#include <sstream>
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Instantiates the default output-stream, subscribes to the Dim service
+//! DIS_DNS/SERVER_LIST, which is supposed to contain all servers available
+//! in the network, sets fType to type and inistialises fHandler with 0
+//!
+//! @param type
+//!    The type of rows which is filtered out of the retrieved server list.
+//!    Use "CMD" for commands and "" for services.
+//!
+//! @param out
+//!    A log-stream to which errors are sent. This however is something
+//!    which should not happen anyway.
+//
+ServiceList::ServiceList(const char *type, ostream &out) :
+    wout(out), fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this),
+    fType(type), fHandler(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Instantiates the default output-stream, subscribes to the Dim service
+//! DIS_DNS/SERVER_LIST, which is supposed to contain all servers available
+//! in the network, sets fType to "CMD" and inistialises fHandler with 0
+//!
+//! @param out
+//!    A log-stream to which errors are sent. This however is something
+//!    which should not happen anyway.
+//
+ServiceList::ServiceList(ostream &out) :
+    wout(out), fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this),
+    fType(""), fHandler(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Delete the allocated memory from fServerList
+//
+ServiceList::~ServiceList()
+{
+    for (ServerMap::iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+            delete i->second.first;
+            delete i->second.second;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! The infoHandler which is called when an update to one of our subscribed
+//! services is available. If it is the service list, it calls
+//! ProcessServerList() and ProcessServiceList() otherwise.
+//!
+//! After the update has been processed the infoHandler() of fHandler
+//! is called if fHandler is available to signal an update to a parent
+//! class.
+//
+void ServiceList::infoHandler()
+{
+    if (getInfo()==&fDimServers)
+        ProcessServerList();
+    else
+        ProcessServiceList(*getInfo());
+
+    if (fHandler)
+    {
+        fHandler->itsService = 0;
+        fHandler->infoHandler();
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! A helper to shorten the call to create a DimInfo.
+//!
+//! @param str
+//!    name of the server to which we want to subscribe
+//!
+//! @param svc
+//!    name of the servic on the server to which we want to subscribe
+//!
+//! @returns
+//!    a pointer to the newly created DimInfo
+//!
+DimInfo *ServiceList::CreateDimInfo(const string &str, const string &svc) const
+{
+    return new DimInfo((str+'/'+svc).c_str(),
+                       const_cast<char*>(""),
+                       const_cast<ServiceList*>(this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function processes the update of the DIS_DNS/SERVER_LIST update.
+//! After this function the server list should be up-to-date again.
+//!
+//! For each new server a SERVER/SERVICE_LIST service subscription is
+//! created and stored in the fServerList. For each removed server
+//! the corresponding object are deleted, as well as the corresponding
+//! entries from the fServiceList.
+//!
+void ServiceList::ProcessServerList()
+{
+    // Get the received string from the handler
+    const string str = fDimServers.getString();
+
+    // Check if it starts with + or -
+    if (str[0]!='-' && str[0]!='+')
+    {
+        // If it doesn't start with + or - remove all existing servers
+        // we have received a full server list
+        for (ServerMap::iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+        {
+            delete i->second.first;
+            delete i->second.second;
+
+            ServiceMap::iterator x = fServiceList.find(i->first);
+            fServiceList.erase(x);
+            //wout << "Delete: " << i->first << endl;
+        }
+
+        fServerList.clear();
+    }
+
+    // Create a stringstream to tokenize the received string
+    stringstream stream(str);
+
+    // Loop over the seperating tokens
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        // The first part before the first @ is the server name
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is not found in the list.
+            // This should never happen if Dim works reliable
+            const ServerMap::iterator v = fServerList.find(trunc);
+            if (v==fServerList.end())
+            {
+                wout << kRed << "Server '" << trunc << "' not in list as it ought to be." << endl;
+                continue;
+            }
+
+            // Remove the server from the server list
+            delete v->second.first;
+            delete v->second.second;
+            fServerList.erase(v);
+
+            // Remove the server from the command list
+            ServiceMap::iterator w = fServiceList.find(trunc);
+            fServiceList.erase(w);
+
+            wout << " -> " << Time().GetAsStr() << " - " << trunc << "/SERVICE_LIST: Disconnected." << endl;
+            //wout << "Remove: " << server << endl;
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is already in the list.
+            // This should never happen if Dim works reliable
+            const ServerMap::iterator v = fServerList.find(trunc);
+            if (v!=fServerList.end())
+            {
+                wout << kRed << "Server '" << trunc << "' in list not as it ought to be." << endl;
+                continue;
+            }
+
+            // Add the new server to the server list
+            fServerList[trunc] = make_pair(CreateSL(trunc), CreateFMT(trunc));
+
+            wout << " -> " << Time().GetAsStr() << " - " << trunc << "/SERVICE_LIST: Connected." << endl;
+            //wout << "Add   : " << server << endl;
+            continue;
+        }
+
+        // In any other case we just add the entry to the list
+        fServerList[server] = make_pair(CreateSL(server), CreateFMT(server));
+        //wout << "Add  0: " << server << endl;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Process an update of the SERVICE_LIST service of the given DimInfo
+//!
+//! All services found are stored in the fServiceList map to be accessible
+//! through the server name. Their format is format is stored in the
+//! fFormatList. Note, that the list if only updated. So it will also
+//! contain services which are not available anymore. For an up-to-date
+//! list of service use fServiceList
+//!
+//! Only entries matching the fType data member are stored.
+//!
+//! @todo
+//!    Make sure that we do not receive +/- updates on the SERVICE_LIST
+//!    like on the SERVER_LIST
+//!
+void ServiceList::ProcessServiceList(DimInfo &info)
+{
+    const string str = info.getString();
+    if (str.empty())
+        return;
+
+    // Get the name of the service
+    string buffer = info.getName();
+
+    if (buffer.find("SERVICE_DESC")!=buffer.length()-12)
+    {
+        // Get the server name from the service name
+        const string server = buffer.substr(0, buffer.find_first_of('/'));
+
+        // Initialize the entry with an empty list
+        if (str[0]!='+')
+            fServiceList[server] = vector<string>();
+
+        // For easy and fast access get the corresponding reference
+        vector<string> &list = fServiceList[server];
+
+        // Tokenize the stream into lines
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            // Get the type and compare it with fType
+            const string type = buffer.substr(buffer.find_last_of('|')+1);
+            if (type!=fType)
+                continue;
+
+            // Get format, name and command name
+            const string fmt  = buffer.substr(buffer.find_first_of('|')+1, buffer.find_last_of('|')-buffer.find_first_of('|')-1);
+            const string name = buffer.substr(buffer.find_first_of('/')+1, buffer.find_first_of('|')-buffer.find_first_of('/')-1);
+            const string cmd  = buffer.substr(0, buffer.find_first_of('|'));
+
+            // Add name the the list
+            list.push_back(name);
+
+            // Add format to the list
+            fFormatList[cmd] = fmt;
+        }
+    }
+    else
+    {
+        fDescriptionMap.clear();
+
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            const vector<Description> v = Description::SplitDescription(buffer);
+
+            const string svc = v[0].name;
+
+            fDescriptionMap[svc]  = v[0].comment;
+            fDescriptionList[svc] = vector<Description>(v.begin()+1, v.end());
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    the list of servers as a vector of strings.
+//
+vector<string> ServiceList::GetServerList() const
+{
+    vector<string> v;
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+        v.push_back(i->first);
+
+    return v;
+}
+
+vector<string> ServiceList::GetServiceList(const std::string &server) const
+{
+    const ServiceMap::const_iterator m = fServiceList.find(server);
+    return m==end() ? vector<string>() : m->second;
+}
+
+vector<string> ServiceList::GetServiceList() const
+{
+    vector<string> vec;
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+        const string server = i->first;
+
+        const vector<string> v = GetServiceList(server);
+
+        for (vector<string>::const_iterator s=v.begin(); s<v.end(); s++)
+            vec.push_back(server+"/"+*s);
+    }
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the format of a command or service
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    the format corresponding to the given service. If the service is not
+//!    found an empty string is returned.
+//
+string ServiceList::GetFormat(const string &service) const
+{
+    const StringMap::const_iterator i = fFormatList.find(service);
+    return i==fFormatList.end() ? "" : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the format of a command or service
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    the format corresponding to the given service. If the service is not
+//!    found an empty string is returned.
+//
+string ServiceList::GetFormat(const string &server, const string &name) const
+{
+    return GetFormat(server+'/'+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the Description vector of a command or service
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    a vector of Description objects corresponding to the arguments
+//!
+//
+vector<Description> ServiceList::GetDescriptions(const string &service) const
+{
+    const DescriptionMap::const_iterator i = fDescriptionList.find(service);
+    return i==fDescriptionList.end() ? vector<Description>() : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the Description vector of a command or service
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    a vector of Description objects corresponding to the arguments
+//
+vector<Description> ServiceList::GetDescriptions(const string &server, const string &name) const
+{
+    return GetDescriptions(server+'/'+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a description describing the given command or service if available.
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    string with the stored comment
+//!
+//
+string ServiceList::GetComment(const string &service) const
+{
+    const StringMap::const_iterator i = fDescriptionMap.find(service);
+    return i==fDescriptionMap.end() ? "" : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a description describing the given command or service if available.
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    string with the stored comment
+//
+string ServiceList::GetComment(const string &server, const string &name) const
+{
+    return GetComment(server+"/"+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if a server is existing.
+//!
+//! @param name
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!    true if the server is found in fServiceList, false otherwise
+//
+bool ServiceList::HasServer(const string &name) const
+{
+    return fServiceList.find(name)!=end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if a given service is existing.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @param service
+//!     Name of a service, e.g. EXIT
+//!
+//! @returns
+//!    true if the service is found in fServiceList, false otherwise.
+//
+bool ServiceList::HasService(const string &server, const string &service) const
+{
+    ServiceMap::const_iterator v = fServiceList.find(server);
+    if (v==end())
+        return false;
+
+    const vector<string> &w = v->second;
+    return find(w.begin(), w.end(), service)!=w.end();
+}
+
+bool ServiceList::HasService(const string &svc) const
+{
+    const size_t p = svc.find_first_of('/');
+    if (p==string::npos)
+        return false;
+
+    return HasService(svc.substr(0, p), svc.substr(p+1));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns an iterator to the begin of ta vector<string> which will
+//! contain the service names of the given server.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!    an iterator to the vector of strings with the service names
+//!    for the given server. If none is found it returns
+//!    vector<string>().end()
+//
+vector<string>::const_iterator ServiceList::begin(const string &server) const
+{
+    ServiceMap::const_iterator i = fServiceList.find(server);
+    if (i==end())
+        return vector<string>().end();
+
+    return i->second.begin();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns an iterator to the end of ta vector<string> which will
+//! contain the service names of the given server.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!     an iterator to the vector of strings with the service names
+//!    for the given server. If none is found it returns
+//!    vector<string>().end()
+//
+vector<string>::const_iterator ServiceList::end(const string &server) const
+{
+    ServiceMap::const_iterator i = fServiceList.find(server);
+    if (i==end())
+        return vector<string>().end();
+
+    return i->second.end();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Print the stored list of servers to the given stream.
+//!
+//! @param out
+//!    ostream to which the server names stored in fServerList are dumped
+//!
+void ServiceList::PrintServerList(ostream &out) const
+{
+    out << endl << kBold << "ServerList:" << endl;
+
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+        const string &server = i->first;
+        DimInfo *ptr1 = i->second.first;
+        DimInfo *ptr2 = i->second.second;
+
+        out << " " << server << " " << ptr1->getName() << "|" << ptr2->getName() << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the stored list of services to the given stream.
+//!
+//! @param out
+//!    ostream to which the services names stored in fServiceList are dumped
+//!
+void ServiceList::PrintServiceList(ostream &out) const
+{
+    out << endl << kBold << "ServiceList:" << endl;
+
+    for (ServiceMap::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+        const vector<string> &lst = i->second;
+
+        out << " " << server << endl;
+
+        for (vector<string>::const_iterator j=lst.begin(); j!=lst.end(); j++)
+            out << "  " << *j << " [" << GetFormat(server, *j) << "]" << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the full available documentation (description) of all available
+//! services or comments to the the given stream.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @param service
+//!    if a service is given, only information for this service is printed
+//
+int ServiceList::PrintDescription(std::ostream &out, const string &serv, const string &service) const
+{
+    int rc = 0;
+    for (ServiceMap::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const vector<string> &lst = i->second;
+        for (vector<string>::const_iterator s=lst.begin(); s!=lst.end(); s++)
+        {
+            if (!service.empty() && *s!=service)
+                continue;
+
+            rc++;
+
+            out << " " << *s;
+
+            const string fmt = GetFormat(server, *s);
+            if (!fmt.empty())
+                out << '[' << fmt << ']';
+
+            const string svc = server + '/' + *s;
+
+            const DescriptionMap::const_iterator v = fDescriptionList.find(svc);
+            if (v==fDescriptionList.end())
+            {
+                out << endl;
+                continue;
+            }
+
+            for (vector<Description>::const_iterator j=v->second.begin();
+                 j!=v->second.end(); j++)
+                out << " <" << j->name << ">";
+            out << endl;
+
+            const StringMap::const_iterator d = fDescriptionMap.find(svc);
+            if (d!=fDescriptionMap.end() && !d->second.empty())
+                out << "    " << d->second << endl;
+
+            for (vector<Description>::const_iterator j=v->second.begin();
+                 j!=v->second.end(); j++)
+            {
+                out << "    " << kGreen << j->name;
+                if (!j->comment.empty())
+                    out << kReset << ": " << kBlue << j->comment;
+                if (!j->unit.empty())
+                    out << kYellow << " [" << j->unit << "]";
+                out << endl;
+            }
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Request a SERVER_LIST from the name server and a SERVICE_LIST from all
+//! servers in the list. Dumps the result to the given ostream.
+//!
+//! @param out
+//!    ostream to which the received info is redirected
+//!
+void ServiceList::DumpServiceList(ostream &out)
+{
+    DimCurrentInfo info1("DIS_DNS/SERVER_LIST", const_cast<char*>(""));
+
+    stringstream stream(info1.getString());
+
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        out << kBold << " " << server << endl;
+
+        DimCurrentInfo info2((server+"/SERVICE_LIST").c_str(), const_cast<char*>(""));
+
+        string buffer2;
+
+        stringstream stream2(info2.getString());
+        while (getline(stream2, buffer2, '\n'))
+        {
+            if (buffer2.empty())
+                continue;
+
+            out << "  " << buffer2 << endl;
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Tries to send a dim command according to the arguments.
+//! The command given is evaluated according to the available format string.
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @returns
+//!    If parsing the string was successfull and the command exists in the
+//!    network true is returned, false otherwise.
+//!
+bool ServiceList::SendDimCommand(ostream &lout, const string &server, const string &str) const
+{
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    const string cmd = server + '/' + name;
+
+    if (!HasService(server, name))
+    {
+        lout << kRed << "Unkown command '" << cmd << "'" << endl;
+        return false;
+    }
+
+    // Get the format of the event data
+    const string fmt = GetFormat(cmd);
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+    const Converter conv(lout, fmt, false);
+    if (!conv)
+    {
+        lout << kRed << "Couldn't properly parse the format... ignored." << endl;
+        return false;
+    }
+
+    try
+    {
+        lout << kBlue << cmd;
+        const vector<char> v = conv.GetVector(str.substr(p0));
+        lout << endl;
+
+        const int rc = DimClient::sendCommand(cmd.c_str(), (void*)v.data(), v.size());
+        if (rc)
+            lout << kGreen << "Command " << cmd << " emitted successfully to DimClient." << endl;
+        else
+            lout << kRed << "ERROR - Sending command " << cmd << " failed." << endl;
+    }
+    catch (const std::runtime_error &e)
+    {
+        lout << endl << kRed << e.what() << endl;
+        return false;
+    }
+
+    return true;
+}
Index: branches/FACT++_part_filenames/src/ServiceList.h
===================================================================
--- branches/FACT++_part_filenames/src/ServiceList.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/ServiceList.h	(revision 18732)
@@ -0,0 +1,94 @@
+#ifndef FACT_ServiceList
+#define FACT_ServiceList
+
+#include <map>
+#include <vector>
+#include <string>
+#include <iostream>
+
+#include "dic.hxx"
+#include "dis.hxx"
+
+#include "Description.h"
+
+class ServiceList : public DimClient
+{
+public:
+    typedef std::map<const std::string, std::pair<DimInfo*, DimInfo*>> ServerMap;
+    typedef std::map<const std::string, std::vector<std::string>>      ServiceMap;
+    typedef std::map<const std::string, std::string>                   StringMap;
+    typedef std::map<const std::string, std::vector<Description>>      DescriptionMap;
+
+private:
+    std::ostream &wout;        /// stream for redirection of the output
+
+    DimInfo fDimServers;       /// A DimInfo to retrieve the SERVER_LIST from teh DNS server
+
+    const std::string fType;   /// A filter for the type of the services to be collected, e.g. CMD
+
+    ServerMap      fServerList;      /// A map storing server names and a DimInfo for their SERVICE_LIST
+    ServiceMap     fServiceList;     /// A map storing server names and vector with all their available commands
+    StringMap      fFormatList;      /// A map storing all commands and their format strings
+    StringMap      fDescriptionMap;  /// A map storing all descriptions for commands and services
+    DescriptionMap fDescriptionList; /// A map storing all descriptions for arguments of command and services
+
+    DimInfoHandler *fHandler;  /// A callback to signal updates
+
+    DimInfo *CreateDimInfo(const std::string &str, const std::string &svc) const;
+
+    DimInfo *CreateSL(const std::string &str) const { return CreateDimInfo(str, "SERVICE_LIST"); }
+    DimInfo *CreateFMT(const std::string &str) const { return CreateDimInfo(str, "SERVICE_DESC"); }
+
+    void ProcessServerList();
+    void ProcessServiceList(DimInfo &info);
+
+    void infoHandler();
+
+public:
+    ServiceList(const char *type, std::ostream &out=std::cout);
+    ServiceList(std::ostream &out=std::cout);
+    ~ServiceList();
+
+    void SetHandler(DimInfoHandler *handler=0) { fHandler=handler; }
+
+    std::vector<std::string> GetServerList() const;
+    std::vector<std::string> GetServiceList() const;
+    std::vector<std::string> GetServiceList(const std::string &server) const;
+
+    bool HasServer(const std::string &name) const;
+    bool HasService(const std::string &server, const std::string &service) const;
+    bool HasService(const std::string &service) const;
+
+    ServiceMap::const_iterator begin() const { return fServiceList.begin(); }
+    ServiceMap::const_iterator end() const  { return fServiceList.end(); }
+
+    std::vector<std::string>::const_iterator begin(const std::string &server) const;
+    std::vector<std::string>::const_iterator end(const std::string &server) const;
+
+    std::string GetFormat(const std::string &server, const std::string &name) const;
+    std::string GetFormat(const std::string &service) const;
+
+    std::string GetComment(const std::string &server, const std::string &name) const;
+    std::string GetComment(const std::string &service) const;
+
+    std::vector<Description> GetDescriptions(const std::string &server, const std::string &name) const;
+    std::vector<Description> GetDescriptions(const std::string &service) const;
+
+    void PrintServerList(std::ostream &out) const;
+    void PrintServiceList(std::ostream &out) const;
+    int  PrintDescription(std::ostream &out, const std::string &serv="", const std::string &svc="") const;
+    void PrintServerList() const { PrintServerList(wout); }
+    void PrintServiceList() const { PrintServiceList(wout); }
+    int  PrintDescription(const std::string &serv="", const std::string &svc="") const { return PrintDescription(wout, serv, svc); }
+
+    static void DumpServiceList(std::ostream &out);
+    void DumpServiceList() const { DumpServiceList(wout); }
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const;
+    bool SendDimCommand(const std::string &server, const std::string &str) const
+    {
+        return SendDimCommand(std::cout, server, str);
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/Shell.cc
===================================================================
--- branches/FACT++_part_filenames/src/Shell.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Shell.cc	(revision 18732)
@@ -0,0 +1,513 @@
+// **************************************************************************
+/** @class Shell
+
+@brief Implementation of a console based user shell with an input and output window
+
+Shell is based on the ReadlineWindow class. It creates two windows
+(panels) using ncurses which are used for input and output. The output
+window panel is displayed on top of the input panel, but can be hidden
+for example by pressing F1.
+
+The idea is that continous messages like logging messages do not interfere
+with the input area, although one still has both diplayed in the same
+console window.
+
+To get a list of the command and functions supported by Shell
+type 'h' or 'help' at a command line prompt.
+
+The usage is quite simple. Instantiate an object of Shell with the
+programname as an argument. For its meaning see the base class
+documentation Readline::Readline(). The created input- and output-
+stream can be accessed through GetStreamIn() and GetStreamOut()
+whihc are both ostreams, one redirected to the input window and the
+other one redirected to the output window. Especially, GetStreamIn()
+should not be used while the Readline prompt is in progress, but can for
+example be used to display errors about what was entered.
+
+The recommanded way of usage is:
+
+\code
+
+   static Shell shell("myprog"); // readline will read the myprog.his history file
+
+   while (1)
+   {
+        string txt = shell.Prompt("prompt> ");
+        if (txt=="quit)
+           break;
+
+        // ... do something ...
+
+        shell.AddHistory(txt);
+   }
+
+   // On destruction redline will write the current history to the file
+   // By declaring the Shell static the correct terminal is restored even
+   // the program got killed (not if killed with SIGABRT)
+
+\endcode
+
+If for some reason the terminal is not correctly restored type (maybe blindly)
+<I>reset</I> in your console. This should restor everything back to normal.
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+
+@todo
+ - Introduce the possibility to scroll in both windows
+ - Add redisplay functionality for both panels if the console was resized
+
+*/
+// **************************************************************************
+#include "Shell.h"
+
+#include <fstream>
+#include <iostream>
+
+#include <signal.h>    // SIGWINCH
+#include <sys/wait.h>  // waitpid
+#include <sys/ioctl.h> // ioctl
+
+#include <panel.h>
+
+#define FORK_ALLOWED
+
+using namespace std;
+
+Shell *Shell::This = 0;
+
+// --------------------------------------------------------------------------
+//
+//! This initializes the Ncurses environment. Since the ncurses environment
+//! is global only one instance of this class is allowed.
+//!
+//! The first 8 color pairs (COLOR_PAIR) are set to the first 8 color
+//! with default background.
+//!
+//! The shells windows and panels are created. And their pointers are
+//! propagated to the two associated WindowLog streams.
+//!
+//! Also some key bindings are initialized.
+//
+Shell::Shell(const char *prgname) : ReadlineWindow(prgname),
+    fPanelHeight(13), fIsVisible(1), fLine(0)
+{
+    if (stdscr!=0)
+    {
+        endwin();
+        cout << "ERROR - Only one instance of class Shell is allowed." << endl;
+        exit(-1);
+    }
+
+    This = this;
+
+    // ---------------------- Setup ncurses -------------------------
+
+    initscr();		      // Start curses mode
+
+    cbreak();		      // Line buffering disabled, Pass on
+    noecho();                 // Switch off echo mode
+    nonl();                   // Associate return with CR
+
+    intrflush(stdscr, FALSE);
+    keypad(stdscr, FALSE);    // Switch off keymapping for function keys
+
+    start_color();            // Initialize ncurses colors
+    use_default_colors();     // Assign terminal default colors to -1
+    //assume_default_colors(-1, -1); // standard terminal colors assigned to pair 0
+
+    // Setup colors
+    for (int i=1; i<8; i++)
+        init_pair(i, i, -1);  // -1: def background
+
+    signal(SIGWINCH, HandleResizeImp);  // Attach HandleResize to SIGWINCH signal
+
+    // ---------------------- Setup pansl --------------------------
+
+    // Create the necessary windows
+    WINDOW *wins[4];
+    CreateWindows(wins);
+
+    // Initialize the panels
+    fPanelIn    = new_panel(wins[0]);
+    fPanelFrame = new_panel(wins[1]);
+    fPanelOut   = new_panel(wins[2]);
+
+    win.SetWindow(wins[0]);
+    wout.SetWindow(wins[2]);
+
+    // Get the panels into the right order for startup
+    ShowHide(1);
+
+    // Setup Readline
+    SetWindow(wins[0]);
+    SetColorPrompt(COLOR_PAIR(COLOR_BLUE));
+
+    // ------------------- Setup key bindings -----------------------
+    BindKeySequence("\033OP",    rl_proc_F1);
+    BindKeySequence("\033[1;5B", rl_scroll_top);
+    BindKeySequence("\033[1;5A", rl_scroll_top);
+    BindKeySequence("\033[1;3A", rl_scroll_bot);
+    BindKeySequence("\033[1;3B", rl_scroll_bot);
+    BindKeySequence("\033[5;3~", rl_top_inc);
+    BindKeySequence("\033[6;3~", rl_top_dec);
+    BindKeySequence("\033+",     rl_top_resize);
+    BindKeySequence("\033-",     rl_top_resize);
+
+    /*
+     rl_bind_keyseq("\033\t",   rl_complete); // Meta-Tab
+     rl_bind_keyseq("\033[1~",  home); // Home (console)
+     rl_bind_keyseq("\033[H",   home); // Home (x)
+     rl_bind_keyseq("\033[4~",  end); // End (console)
+     rl_bind_keyseq("\033[F",   end); // End (x)
+     rl_bind_keyseq("\033[A",   up); // Up
+     rl_bind_keyseq("\033[B",   down); // Down
+     rl_bind_keyseq("\033[[B",  accept); // F2 (console)
+     rl_bind_keyseq("\033OQ",   accept); // F2 (x)
+     rl_bind_keyseq("\033[21~", cancel); // F10
+     */
+
+    // Ctrl+dn:   \033[1;5B
+    // Ctrl+up:   \033[1;5A
+    // Alt+up:    \033[1;3A
+    // Alt+dn:    \033[1;3B
+    // Alt+pg up: \033[5;3~
+    // Alt+pg dn: \033[6;3~
+}
+
+// --------------------------------------------------------------------------
+//
+//! Ends the ncurses environment by calling endwin().
+//
+Shell::~Shell()
+{
+    // Maybe not needed because the window is more or less valid until the
+    // object is destructed anyway.
+    //win.SetWindow(0);
+    //wout.SetWindow(0);
+    //SetWindow(0);
+
+    endwin();
+    cout << "The end." << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function gets the windows into the expected order which is:
+//!
+//! @param v
+//!    - \b 0:  Do not show the output panel
+//!    - \b 1:  Show the output panel
+//!    - \b -1: Toggle the visibility of the output panel
+//!    - \b -2: Just update the panels, do not change their visibility
+//
+void Shell::ShowHide(int v)
+{
+    if (v>-2)
+        fIsVisible = v==-1 ? !fIsVisible : v;
+
+    if (fIsVisible)
+    {
+        show_panel(fPanelIn);
+        show_panel(fPanelFrame);
+        show_panel(fPanelOut);
+    }
+    else
+    {
+        show_panel(fPanelIn);
+        hide_panel(fPanelFrame);
+        hide_panel(fPanelOut);
+    }
+
+    update_panels();
+    doupdate();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Creates the windows to be used as panels and draws a frame around one
+//!
+//! @param w
+//!    pointers to the three windows which have been created are returned
+//!
+//! @param all
+//!   If all is false do not (re-)create the bottom or input-window
+//
+void Shell::CreateWindows(WINDOW *w[3], int all)
+{
+    int maxx, maxy;
+    getmaxyx(stdscr, maxy, maxx);
+
+    int separator = maxy-fPanelHeight;
+
+    WINDOW *new_in    = all ? newwin(maxy,    maxx,   0, 0) : 0;
+    WINDOW *new_frame = newwin(separator-1,   maxx,   0, 0);
+    WINDOW *new_out   = newwin(separator-1-2, maxx-2, 1, 1);
+
+    box(new_frame,     0,0);
+    wmove(new_frame,   0, 1);
+    waddch(new_frame,  ACS_RTEE);
+    wprintw(new_frame, " F1 ");
+    waddch(new_frame,  ACS_LTEE);
+
+    scrollok(new_out, true);
+    leaveok (new_out, true);
+
+    if (new_in)
+    {
+        scrollok(new_in, true);  // Allow scrolling
+        leaveok (new_in, false);  // Move the cursor with the output
+
+        wmove(new_in, maxy-1, 0);
+    }
+
+    w[0] = new_in;
+    w[1] = new_frame;
+    w[2] = new_out;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Key binding for F1. Toggles upper panel by calling ShowHide(-1)
+//
+int Shell::rl_proc_F1(int /*cnt*/, int /*key*/)
+{
+    This->ShowHide(-1); // toggle
+    return 0;
+}
+
+int Shell::rl_scroll_top(int, int key)
+{
+    This->win << "Scroll " << key << endl;
+    return 0;
+}
+
+int Shell::rl_scroll_bot(int, int key)
+{
+    This->win << "Scroll " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_inc(int, int key)
+{
+    This->win << "Increase " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_dec(int, int key)
+{
+    This->win << "Increase " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_resize(int, int key)
+{
+    This->Resize(key=='+' ? This->fPanelHeight-1 : This->fPanelHeight+1);
+    return 0;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Signal handler for SIGWINCH, calls HandleResize
+//
+void Shell::HandleResizeImp(int)
+{
+    This->HandleResize();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Signal handler for SIGWINCH. It resizes the terminal and all panels
+//! according to the new terminal size and redisplay the backlog buffer
+//! in both windows
+//!
+//! @todo
+//!   Maybe there are more efficient ways than to display the whole buffers
+//
+void Shell::HandleResize()
+{
+    // Get the new terminal size
+    struct winsize w;
+    ioctl(0, TIOCGWINSZ, &w);
+
+    // propagate it to the terminal
+    resize_term(w.ws_row, w.ws_col);
+
+    // Store the pointer to the old windows
+    WINDOW *w_in    = panel_window(fPanelIn);
+    WINDOW *w_frame = panel_window(fPanelFrame);
+    WINDOW *w_out   = panel_window(fPanelOut);
+
+    // Create new windows
+    WINDOW *wins[3];
+    CreateWindows(wins);
+
+    // Redirect the streams and the readline output to the new windows
+    win.SetWindow(wins[0]);
+    wout.SetWindow(wins[2]);
+
+    SetWindow(wins[0]);
+
+    // Replace windows in the panels
+    replace_panel(fPanelIn,    wins[0]);
+    replace_panel(fPanelFrame, wins[1]);
+    replace_panel(fPanelOut,   wins[2]);
+
+    // delete the old obsolete windows
+    delwin(w_in);
+    delwin(w_out);
+    delwin(w_frame);
+
+    // FIXME:  NEEDED also in Redisplay panel
+    //Redisplay();
+
+    // Redisplay their contents
+    win.Display();
+    wout.Display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This resized the top panel or output panel as requested by the argument.
+//! The argument is the number of lines which are kept free for the input
+//! panel below the top panel
+//!
+//! @returns
+//!    always true
+//
+bool Shell::Resize(int h)
+{
+    // Get curretn terminal size
+    int lines, cols;
+    getmaxyx(stdscr, lines, cols);
+
+    // Check if we are in a valid range
+    if (h<1 || h>lines-5)
+        return false;
+
+    // Set new height for panel to be kept free
+    fPanelHeight = h;
+
+    // Store the pointers of the old windows associated with the panels
+    // which should be resized
+    WINDOW *w_frame = panel_window(fPanelFrame);
+    WINDOW *w_out   = panel_window(fPanelOut);
+
+    // Create new windows
+    WINDOW *wins[3];
+    CreateWindows(wins, false);
+
+    // Redirect the output stream to the new window
+    wout.SetWindow(wins[2]);
+
+    // Replace the windows associated with the panels
+    replace_panel(fPanelFrame, wins[1]);
+    replace_panel(fPanelOut,   wins[2]);
+
+    // delete the ols windows
+    delwin(w_out);
+    delwin(w_frame);
+
+    // FIXME:  NEEDED also in Redisplay panel
+    //Redisplay();
+
+    // Redisplay the contents
+    wout.Display();
+
+    return true;
+}
+
+bool Shell::PrintKeyBindings()
+{
+    ReadlineColor::PrintKeyBindings(win);
+    win << " " << kUnderline << "Special key bindings:" << endl << endl;;
+    win << kBold << "   F1              " << kReset << "Toggle visibility of upper panel" << endl;
+    win << endl;
+    return true;
+}
+
+bool Shell::PrintGeneralHelp()
+{
+    ReadlineColor::PrintGeneralHelp(win, GetName());
+    win << kBold << "   hide         " << kReset << "Hide upper panel." << endl;
+    win << kBold << "   show         " << kReset << "Show upper panel." << endl;
+    win << kBold << "   height <h>   " << kReset << "Set height of upper panel to h." << endl;
+    win << endl;
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Processes the command provided by the Shell-class.
+//!
+//! @returns
+//!    whether a command was successfully processed or could not be found
+//
+bool Shell::Process(const string &str)
+{
+    // Implement readline commands:
+    //   rl set     (rl_variable_bind(..))
+    //   rl_read_init_file(filename)
+    //  int rl_add_defun (const char *name, rl_command_func_t *function, int key)
+
+    if (ReadlineColor::Process(win, str))
+        return true;
+
+    if (Readline::Process(str))
+        return true;
+
+    // ----------- ReadlineNcurses -----------
+
+    if (string(str)=="hide")
+    {
+        ShowHide(0);
+        return true;
+    }
+    if (string(str)=="show")
+    {
+        ShowHide(1);
+        return true;
+    }
+
+    if (str.substr(0, 7)=="height ")
+    {
+        int h;
+        sscanf(str.c_str()+7, "%d", &h);
+        return Resize(h);
+    }
+
+    if (str=="d")
+    {
+        wout.Display();
+        return true;
+    }
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites Shutdown. It's main purpose is to re-output
+//! the prompt and the buffer using the WindowLog stream so that it is
+//! buffered in its backlog.
+//!
+//! @param buf
+//!    A pointer to the buffer returned by readline
+//!
+void Shell::Shutdown(const char *buf)
+{
+    ReadlineWindow::Shutdown(buf);
+
+    // Now move the cursor to the start of the prompt
+    RewindCursor();
+
+    // Output the text ourself to get it into the backlog
+    // buffer of win. We cannot use GetBuffer() because rl_end
+    // is not updated finally.
+    win << kBlue << GetPrompt() << kReset << buf << endl;
+}
Index: branches/FACT++_part_filenames/src/Shell.h
===================================================================
--- branches/FACT++_part_filenames/src/Shell.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Shell.h	(revision 18732)
@@ -0,0 +1,79 @@
+#ifndef FACT_Shell
+#define FACT_Shell
+
+#include "ReadlineWindow.h"
+#include "ReadlineColor.h"
+#include "WindowLog.h"
+
+class WindowLog;
+
+typedef struct panel PANEL;
+
+class Shell : public ReadlineWindow
+{
+protected:
+    static Shell *This; /// pointer to our glocal object to get the static member functions into scope
+
+    WindowLog win;//(&fPanelIn);    // FIXME: Ref
+    WindowLog wout;//(&fPanelOut);  // FIXME: Ref
+
+private:
+    PANEL *fPanelIn;    /// Pointer to the panel for the input stream
+    PANEL *fPanelFrame; /// Pointer to the panel for the frame around the output
+    PANEL *fPanelOut;   /// Pointer to the panel for the output stream
+
+    int fPanelHeight;   /// Space between the bottom of the screen and the output panel
+    int fIsVisible;     /// Flag whether the output panel is visible or not (for toggle operations)
+
+    int fLine;
+
+    // Callback function for key presses
+    static int rl_proc_F1(int cnt, int key);
+    static int rl_scroll_top(int cnt, int key);
+    static int rl_scroll_bot(int cnt, int key);
+    static int rl_top_inc(int cnt, int key);
+    static int rl_top_dec(int cnt, int key);
+    static int rl_top_resize(int cnt, int key);
+
+    /// Static member function used as callback for a signal which is
+    /// emitted by the system if the size of the console window has changed
+    static void HandleResizeImp(int dummy);
+
+    /// Non static member function called by HandleResize
+    void HandleResize();
+
+    /// Helper for the constructor and window resizing to create the windows and panels
+    void CreateWindows(WINDOW *w[3], int all=true);
+
+    // Action after readline finished
+    void Shutdown(const char *);
+
+public:
+    Shell(const char *prgname);
+    ~Shell();
+
+    bool Resize(int h);
+    void ShowHide(int v);
+    void Refresh() { ShowHide(-2); }
+
+    bool PrintCommands() { return ReadlineColor::PrintCommands(win); }
+    bool PrintGeneralHelp();
+    bool PrintKeyBindings();
+
+    bool Process(const std::string &str);
+
+    void Lock() { }
+    void Run(const char * = "")
+    {
+        ReadlineColor::PrintBootMsg(win, GetName());
+        ReadlineWindow::Run();
+    }
+    void Unlock() { }
+
+    WindowLog &GetStreamOut() { return wout; }
+    WindowLog &GetStreamIn() { return win; }
+    const WindowLog &GetStreamOut() const { return wout; }
+    const WindowLog &GetStreamIn() const { return win; }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/State.cc
===================================================================
--- branches/FACT++_part_filenames/src/State.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/State.cc	(revision 18732)
@@ -0,0 +1,86 @@
+// **************************************************************************
+/** @struct State
+
+@brief A struct which stores an index, a comment and a name of a State
+
+To have proper descriptions of states in the network, this struct provides
+a simple storage for the properties of a state.
+
+Assume you want to write a descriptive string for a state machine
+with two states, it could look like this:
+
+"1:Disconnected=Connection not established\n2:Connected=Connection established."
+
+Such a string can then be converted with SplitStates into a vector
+of State objects.
+
+*/
+// **************************************************************************
+#include "State.h"
+
+#include <sstream>
+#include <algorithm>
+
+#include "tools.h"
+
+using namespace std;
+using namespace Tools;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Description object
+//!
+//! @param i
+//!     Index of the state, e.g. 1
+//!
+//! @param n
+//!     Name of the state, e.g. 'Connected'
+//!
+//! @param c
+//!     Descriptive text of the state, e.g. "Connection to hardware established."
+//
+State::State(int i, const std::string &n, const std::string &c, const Time &t)
+    : index(i), name(Trim(n)), comment(Trim(c)), time(t)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function breaks down a descriptive string into its components.
+//! For details see class reference.
+//!
+//! @param buffer
+//!     string which should be broekn into pieces
+//!
+//! @returns
+//!     A vector<State> containing all the states found.
+//
+vector<State> State::SplitStates(const string &buffer)
+{
+    vector<State> vec;
+
+    string buf;
+    stringstream stream(buffer);
+    while (getline(stream, buf, '\n'))
+    {
+        if (buf.empty())
+            continue;
+
+        const size_t p1 = buf.find_first_of(':');
+        const size_t p2 = buf.find_first_of('=');
+
+        stringstream s(buf.substr(0, p1));
+
+        int index;
+        s >> index;
+
+        const string name    = buf.substr(p1+1, p2-p1-1);
+        const string comment = p2==string::npos ? "" : buf.substr(p2+1);
+
+        vec.emplace_back(index, name, comment);
+    }
+
+    sort(vec.begin(), vec.end(), State::Compare);
+
+    return vec;
+}
Index: branches/FACT++_part_filenames/src/State.h
===================================================================
--- branches/FACT++_part_filenames/src/State.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/State.h	(revision 18732)
@@ -0,0 +1,23 @@
+#ifndef FACT_State
+#define FACT_State
+
+#include <string>
+#include <vector>
+
+#include "Time.h"
+
+struct State
+{
+    int         index;    /// Index (e.g. 1)
+    std::string name;     /// Name (e.g. 'Connected')
+    std::string comment;  /// Description (e.g. 'Connection to hardware established.')
+    Time        time;     /// Time of state change
+
+    static std::vector<State> SplitStates(const std::string &buffer);
+
+    static bool Compare(const State &i, const State &j) { return i.index<j.index; }
+
+    State(int i=-256, const std::string &n="", const std::string &c="", const Time &t=Time(Time::none));
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/StateMachine.cc
===================================================================
--- branches/FACT++_part_filenames/src/StateMachine.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachine.cc	(revision 18732)
@@ -0,0 +1,72 @@
+// **************************************************************************
+/** @class StateMachine
+
+ @brief Class for a state machine implementation just on the console
+
+This class implements a StateMachine which is to be controlled from the
+console. It redirects all output posted via MessageImp to the console
+and, if the stream is a WindowLog, adds colors.
+
+When constructing the Dim network is started and while dstruction it is
+stopped.
+
+@todo
+   Do we really need to create Event-objects? Shouldn't we add a
+   ProcessEvent function which takes an event as argument instead?
+   Or something else which easily allows to add data to the events?
+
+*/
+// **************************************************************************
+#include "StateMachine.h"
+
+#include "WindowLog.h"
+
+#include "Event.h"
+#include "Time.h"
+#include "Shell.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddTransition to create an Event object
+//! instead of an EventImp object. The event name propagated is name.
+//!
+//! For parameter description see StateMachineImp.
+//!
+EventImp *StateMachine::CreateEvent(const string &name, const string &fmt)
+{
+    return new Event(GetName()+'/'+name, fmt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is (analog to StateMachineDim::commandHandler()) the function which
+//! is called if an event from the console is received. It then is
+//! supposed to send the event to the messge queue or handle it directly
+//! if the machine was not yet started.
+//!
+//! If fCurrentState is smaller than 0 or we are in kSM_FatalError state,
+//! all incoming commands are ignored.
+//!
+//! The commandHandler will go through the list of available commands
+//! (fListOfEventss). If the received command was recognized, it is added
+//! via PostCommand into the fifo.
+//!
+//! @todo
+//!    - Fix the exit when cmd is not of type EventImp
+//!    - Do we need a possibility to suppress a call to "HandleEvent"
+//!      or is a state<0 enough?
+//
+bool StateMachine::ProcessCommand(const std::string &str, const char *ptr, size_t siz)
+{
+    EventImp *evt = FindEvent(str);
+    if (!evt)
+        return false;
+
+    PostEvent(*evt, ptr, siz);
+    return true;
+}
+
Index: branches/FACT++_part_filenames/src/StateMachine.h
===================================================================
--- branches/FACT++_part_filenames/src/StateMachine.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachine.h	(revision 18732)
@@ -0,0 +1,23 @@
+#ifndef FACT_StateMachine
+#define FACT_StateMachine
+
+#include "StateMachineImp.h"
+
+class StateMachine : public StateMachineImp
+{
+protected:
+    EventImp *CreateEvent(const std::string &name, const std::string &fmt);
+
+public:
+    StateMachine(std::ostream &out, const std::string &name="") :
+        StateMachineImp(out, name)
+    {
+    }
+
+    bool ProcessCommand(const std::string &str, const char *ptr, size_t siz);
+    bool ProcessCommand(const EventImp &evt);
+    bool ProcessCommand(const std::string &str) { return ProcessCommand(str, 0, 0); }
+
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/StateMachineAsio.h
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineAsio.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineAsio.h	(revision 18732)
@@ -0,0 +1,94 @@
+#ifndef FACT_StateMachineAsio
+#define FACT_StateMachineAsio
+
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+
+template <class T>
+class StateMachineAsio : public T, public boost::asio::io_service, public boost::asio::io_service::work
+{
+    boost::asio::deadline_timer fTrigger;
+
+    void HandleTrigger(const boost::system::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=boost::asio::error::basic_errors::operation_aborted)
+            return;
+
+        fTrigger.expires_from_now(boost::posix_time::microseconds(10000));
+        fTrigger.async_wait(boost::bind(&StateMachineAsio::HandleTrigger,
+                                        this, boost::asio::placeholders::error));
+
+        if (!T::HandleNewState(Execute(), 0, "by HandleTrigger()"))
+            Stop(-1);
+    }
+
+    void Handler()
+    {
+        const auto ptr = T::PopEvent();
+        if (!T::HandleEvent(*ptr))
+            Stop(-1);
+    }
+
+    void PushEvent(Event *cmd)
+    {
+        T::PushEvent(cmd);
+        post(boost::bind(&StateMachineAsio::Handler, this));
+    }
+
+    int Execute()=0;
+
+    int Run(bool)
+    {
+        fTrigger.expires_from_now(boost::posix_time::microseconds(0));
+        fTrigger.async_wait(boost::bind(&StateMachineAsio::HandleTrigger,
+                                        this, boost::asio::placeholders::error));
+
+        T::SetCurrentState(StateMachineImp::kSM_Ready, "by Run()");
+
+        T::fRunning = true;
+
+        while (run_one())
+        {
+            if (!T::HandleNewState(Execute(), 0, "by Run()"))
+                Stop(-1);
+        }
+        reset();
+
+        T::fRunning = false;
+
+        if (T::fExitRequested==-1)
+        {
+            T::Fatal("Fatal Error occured... shutting down.");
+            return -1;
+        }
+
+        T::SetCurrentState(StateMachineImp::kSM_NotReady, "due to return from Run().");
+
+        const int exitcode = T::fExitRequested-1;
+        T::fExitRequested = 0;
+        return exitcode;
+    }
+
+
+public:
+    StateMachineAsio(std::ostream &out, const std::string &server) :
+        T(out, server), boost::asio::io_service::work(static_cast<boost::asio::io_service&>(*this)),
+        fTrigger(static_cast<boost::asio::io_service&>(*this))
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+    }
+
+    void Stop(int code=0)
+    {
+        T::Stop(code);
+        stop();
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/StateMachineDim.cc
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineDim.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineDim.cc	(revision 18732)
@@ -0,0 +1,240 @@
+// **************************************************************************
+/** @class StateMachineDim
+
+This class implements a StateMachine within a Dim network. It redirects
+all output posted via MessageImp to a service called "NAME/MESSAGE"
+while name is the name of the machine given in the constructor. In
+addition two services are offered: NAME/STATE and NAME/VERSION.
+NAME/STATE propagates any state change to the netork.
+
+When constructing the Dim network is started and while dstruction it is
+stopped.
+
+@todo
+    Proper support for versioning
+
+*/
+// **************************************************************************
+#include "StateMachineDim.h"
+
+#include "tools.h"
+
+#include "EventDim.h"
+#include "ServiceDim.h"
+
+using namespace std;
+
+const int StateMachineDim::fVersion = 42;
+
+// --------------------------------------------------------------------------
+//
+//! The constrcutor first initialized DimStart with the given machine name.
+//! DimStart is just a wrapper which constructor calls DimServer::start()
+//! to ensure that initializing the Dim sub-system, is the first what is
+//! done.
+//!
+//! The second objet instantiated is the MessageDim class which offers
+//! the MESSAGE service used to broadcast logging messages to other
+//! Dim clients.
+//!
+//! After this the services STATE and VERSION are setup. STATE will
+//! be used to broadcast the state of the machine. Version broadcasts
+//! the global version number of the StateMachineDim implementation
+//!
+//! After redirecting the handler which handels dim's EXIT command
+//! to ourself (it will then call StateMachineDim::exitHandler) and
+//! adding human readable state names for the default states
+//! implemented by StateMachingImp the state is set to kSM_Initializing.
+//! Warning: The EXIT handler is global!
+//!
+//! @param name
+//!    The name with which the dim-services should be prefixed, e.g.
+//!    "DRIVE" will lead to "DRIVE/SERVICE". It is also propagated
+//!    to DimServer::start()
+//!
+//! @param out
+//!    A refrence to an ostream which allows to redirect the log-output
+//!    to something else than cout. The default is cout. The reference
+//!    is propagated to fLog
+//!
+//! @todo
+//!    - Shell the VERSION be set from the derived class?
+//
+StateMachineDim::StateMachineDim(ostream &out, const std::string &name)
+    : DimLog(out, name), DimStart(name, DimLog::fLog), StateMachineImp(out, name),
+    fDescriptionStates(name+"/STATE_LIST", "C",
+                       "Provides a list with descriptions for each service."
+                       "|StateList[string]:A \\n separated list of the form id:name=description"),
+    fSrvState(name+"/STATE", "C",
+              "Provides the state of the state machine as quality of service."
+              "|Text[string]:A human readable string sent by the last state change.")
+    //    fSrvVersion((name+"/VERSION").c_str(), const_cast<int&>(fVersion)),
+{
+    SetDefaultStateNames();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddTransition to create a EventDim
+//! instead of an Event object. The event name propagated to the EventDim
+//! is fName+"/"+name.
+//!
+//! For parameter description see StateMachineImp.
+//!
+EventImp *StateMachineDim::CreateEvent(const string &name, const string &fmt)
+{
+    return new EventDim(GetName()+"/"+name, fmt, this);
+}
+
+EventImp *StateMachineDim::CreateService(const string &name)
+{
+    return new ServiceDim(name, this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddStateName. In addition to storing the
+//! state locally it is also propagated through Dim in the STATE_LIST
+//! service. 
+//!
+//! @param state
+//!    Number of the state to which a name should be assigned
+//!
+//! @param name
+//!    A name which should be assigned to the state, e.g. "Tracking"
+//!
+//! @param doc
+//!    A explanatory text describing the state
+//!
+bool StateMachineDim::AddStateName(const int state, const std::string &name, const std::string &doc)
+{
+    if (name.empty())
+        return false;
+
+    const bool rc = HasState(state) || GetStateIndex(name)!=kSM_NotAvailable;
+
+    StateMachineImp::AddStateName(state, name, doc);
+
+    string str;
+    for (auto it=fStateNames.begin(); it!=fStateNames.end(); it++)
+        str += to_string(it->first)+':'+it->second.first+'='+it->second.second+'\n';
+
+    fDescriptionStates.Update(str);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::SetCurrentState. In addition to
+//! calling StateMachineImo::SetCurrentState the new state is also
+//! distributed via the DimService STATE.
+//!
+//! For parameter description see StateMachineImp.
+//!
+string StateMachineDim::SetCurrentState(int state, const char *txt, const std::string &cmd)
+{
+    const string msg = StateMachineImp::SetCurrentState(state, txt, cmd);
+    if (msg.empty())
+        return "";
+
+    fSrvState.setQuality(state);
+    fSrvState.Update(msg);
+
+    return msg;
+}
+
+// --------------------------------------------------------------------------
+//
+//! In the case of dim this secures HandleEvent against dim's commandHandler
+//!
+void StateMachineDim::Lock()
+{
+    dim_lock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! In the case of dim this secures HandleEvent against dim's commandHandler
+//!
+void StateMachineDim::UnLock()
+{
+    dim_unlock();
+}
+
+void StateMachineDim::infoHandler()
+{
+    DimInfo *inf = getInfo();
+    if (!inf)
+        return;
+
+    const EventImp *evt = dynamic_cast<EventImp*>(inf);
+
+    if (HasEvent(evt))
+        PostEvent(*evt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwritten DimCommand::commandHandler()
+//!
+//! If fCurrentState is smaller than 0 or we are in kSM_FatalError state,
+//! all incoming commands are ignored.
+//!
+//! The commandHandler will go through the list of available commands
+//! (fListOfEventss). If the received command was recognized, it is added
+//! via PushCommand into the fifo.
+//!
+//! @todo
+//!    - Fix the exit when cmd is not of type EventImp
+//!    - Fix docu
+//!    - Do we need a possibility to suppress a call to "HandleEvent"
+//!      or is a state<0 enough?
+//
+void StateMachineDim::commandHandler()
+{
+    DimCommand *cmd = getCommand();
+    if (!cmd)
+        return;
+
+    const EventImp *evt = dynamic_cast<EventImp*>(cmd);
+
+    if (HasEvent(evt))
+        PostEvent(*evt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites MessageImp::Update. This redirects output issued via
+//! MessageImp to MessageDim object.
+//
+int StateMachineDim::Write(const Time &time, const string &txt, int qos)
+{
+    return DimLog::fLog.Write(time, txt, qos);
+}
+
+// --------------------------------------------------------------------------
+//
+//! exitHandler of the DimServer. The EXIT command is implemented by each
+//! DimServer automatically. exitHandler calls Stop(code) and exit(-1)
+//! in case the received exit-value is a special number (42). abort()
+//! is called if 0x42 is received.
+//!
+//! @param code
+//!    value which is passed to Stop(code)
+//
+void StateMachineDim::exitHandler(int code)
+{
+    Out() << " -- " << Time().GetAsStr() << " - EXIT(" << code << ") command received." << endl;
+    if (code<0) // negative values reserved for internal use
+    {
+        Out() << " -- " << Time().GetAsStr() << ": ignored." << endl;
+        return;
+    }
+
+    Stop(code);
+    if (code==42)
+        exit(128);
+    if (code==0x42)
+        abort();
+}
Index: branches/FACT++_part_filenames/src/StateMachineDim.h
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineDim.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineDim.h	(revision 18732)
@@ -0,0 +1,106 @@
+#ifndef FACT_StateMachineDim
+#define FACT_StateMachineDim
+
+// ***************************************************************************
+/**
+ @class DimLog
+
+ @brief Ensures that the MessageDimTX is initialized before errors could be redirected to it
+
+**/
+// ***************************************************************************
+#include "MessageDim.h"       // MessageDimTX
+
+class DimLog
+{
+    friend class StateMachineDim;
+
+    MessageDimTX fLog;
+    DimLog(std::ostream &out, const std::string &name) : fLog(name, out) { }
+};
+
+// ***************************************************************************
+/**
+ @class DimStart
+
+ @brief Ensures calling DimServer::start() in its constructor and DimServer::stop() in its destructor
+
+**/
+// ***************************************************************************
+#include "DimErrorRedirecter.h"
+
+class DimStart : public DimErrorRedirecter
+{
+    const bool fIsValidServer;
+
+protected:
+    DimStart(const std::string &name, MessageImp &imp) : DimErrorRedirecter(imp), fIsValidServer(!name.empty())
+    {
+        DimClient::setNoDataCopy();
+        if (fIsValidServer)
+        {
+            DimServer::start(name.c_str());
+
+            // Give some time to come up before
+            // the first log messages are sent
+            sleep(1);
+        }
+    }
+    ~DimStart()
+    {
+        if (!fIsValidServer)
+            return;
+
+        // Give some time for pending log messages to be
+        // transmitted before the network is stopped
+        sleep(1);
+        DimServer::stop();
+    }
+};
+
+// ***************************************************************************
+/**
+ @class StateMachineDim
+
+ @brief Class for a state machine implementation within a DIM network
+
+**/
+// ***************************************************************************
+#include "StateMachine.h"     // StateMachien
+
+class StateMachineDim : public DimCommandHandler, public DimInfoHandler, public DimLog, public DimStart, public StateMachineImp
+{
+private:
+    static const int fVersion;   /// Version number
+
+    DimDescribedService fDescriptionStates; /// DimService propagating the state descriptions
+    DimDescribedService fSrvState;          /// DimService offering fCurrentState
+//    DimService fSrvVersion;        /// DimService offering fVersion
+
+    void exitHandler(int code);  /// Overwritten DimCommand::exitHandler.
+    void commandHandler();       /// Overwritten DimCommand::commandHandler 
+    void infoHandler();          /// Overwritten DimInfo::infoHandler
+
+    EventImp *CreateEvent(const std::string &name, const std::string &fmt);
+    EventImp *CreateService(const std::string &name);
+
+protected:
+    /// This is an internal function to do some action in case of
+    /// a state change, like updating the corresponding service.
+    std::string SetCurrentState(int state, const char *txt="", const std::string &cmd="");
+
+    void Lock();
+    void UnLock();
+
+public:
+    StateMachineDim(std::ostream &out=std::cout, const std::string &name="DEFAULT");
+
+    /// Redirect our own logging to fLog
+    int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+    bool AddStateName(const int state, const std::string &name, const std::string &doc="");
+
+    bool MessageQueueEmpty() const { return DimLog::fLog.MessageQueueEmpty(); }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/StateMachineDimControl.cc
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineDimControl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineDimControl.cc	(revision 18732)
@@ -0,0 +1,619 @@
+#include "StateMachineDimControl.h"
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Readline.h"
+#include "InterpreterV8.h"
+#include "Configuration.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+bool StateMachineDimControl::fIsServer = false;
+
+string StateMachineDimControl::Line(const string &txt, char fill)
+{
+    const int n = (55-txt.length())/2;
+
+    ostringstream out;
+    out << setfill(fill);
+    out << setw(n) << fill << ' ';
+    out << txt;
+    out << ' ' << setw(n) << fill;
+
+    if (2*n+txt.length()+2 != 57)
+        out << fill;
+
+    return out.str();
+}
+
+int StateMachineDimControl::ChangeState(int qos, const Time &, int scriptdepth, string scriptfile, string user)
+{
+    string msg;
+    /*
+    switch (qos)
+    {
+    case -4: msg = "End";       break;
+    case -3: msg = "Loading";   break;
+    case -2: msg = "Compiling"; break;
+    case -1: msg = "Running";   break;
+    default:
+        {
+            ostringstream out;
+            out << "Label " << qos;
+            msg = out.str();
+        }
+    }
+    */
+
+    //if (qos<0)
+        msg += to_string(scriptdepth);
+
+    msg += ":"+scriptfile+"["+user+":"+to_string(getpid())+"]";
+
+    //if (fDebug)
+    //Write(time, Line(msg, qos<-1 ? '=' :'-'), MessageImp::kInternal);
+
+    if (qos==-4)
+        fScriptUser = fUser;
+
+    SetCurrentState(qos+4, msg.c_str());
+    //SetCurrentState(qos+4, Line(msg, qos<-1 ? '=' :'-').c_str());
+    return GetCurrentState();
+
+    //return qos+4;
+}
+
+int StateMachineDimControl::ChangeState(int state)
+{
+    return ChangeState(state, Time(), Readline::GetScriptDepth(), Readline::GetScript(), fScriptUser);
+        /*
+         === This might be necessary for thread safety,
+         === but it break that the signal for the start of a new
+         === script arrives synchronously before the first output
+         === from the script
+
+        // Post an anonymous event to the event loop
+        Event evt("");
+        evt.AssignFunction(bind(&StateMachineDimControl::ChangeState, this,
+                                qos, time, Readline::GetScriptDepth(),
+                                Readline::GetScript(), fScriptUser));
+        return PostEvent(evt);
+        */
+}
+
+int StateMachineDimControl::StartScript(const EventImp &imp, const string &cmd)
+{
+    string opt(imp.GetString());
+
+    const map<string,string> data = Tools::Split(opt, true);
+    if (imp.GetSize()==0 || opt.size()==0 || opt[0]==0)
+    {
+        Error("File name missing in DIM_CONTROL/START");
+        return GetCurrentState();
+    }
+
+    if (fDebug)
+        Debug("Start '"+opt+"' received.");
+
+    if (fDebug)
+        Debug("Received data: "+imp.GetString());
+
+    const auto user = data.find("user");
+    fScriptUser = user==data.end() ? fUser : user->second;
+
+    if (fDebug)
+    {
+        for (auto it=data.begin(); it!=data.end(); it++)
+            Debug("   Arg: "+it->first+" = "+it->second);
+    }
+
+    string emit = cmd+imp.GetString();
+    if (cmd==".js ")
+        emit += fArgumentsJS;
+
+    Readline::SetExternalInput(emit);
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::StopScript(const EventImp &imp)
+{
+    const string str(imp.GetString());
+
+    string msg("Stop received");
+    msg += str.empty() ? "." : " ["+str+"]";
+
+    Info(msg);
+
+    Readline::StopScript();
+    InterpreterV8::JsStop();
+    return GetCurrentState();
+}
+
+void StateMachineDimControl::Stop(int code)
+{
+    InterpreterV8::JsStop();
+    StateMachineDim::Stop(code);
+}
+
+int StateMachineDimControl::InterruptScript(const EventImp &evt)
+{
+    if (!fInterruptHandler)
+        return GetCurrentState();
+
+    string str = evt.GetString();
+
+    const size_t p = str.find_last_of('\n');
+    if (p!=string::npos)
+        str[p] = ':';
+
+    if (GetCurrentState()<3)
+    {
+        Warn("Interrupt request received ["+str+"]... but no running script.");
+        return GetCurrentState();
+    }
+
+    Info("Interrupt request received ["+str+"]");
+    return fInterruptHandler(evt);
+}
+
+bool StateMachineDimControl::SendDimCommand(const string &server, string str, ostream &lout)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    if (fServerList.find(server)==fServerList.end())
+        throw runtime_error("SendDimCommand - Server '"+server+"' not online.");
+
+    str = Tools::Trim(str);
+
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    for (auto is=fServiceList.begin(); is!=fServiceList.end(); is++)
+    {
+        if (str.empty() && is->server==server)
+            return true;
+
+        if (is->server!=server || is->service!=name)
+            continue;
+
+        if (!is->iscmd)
+            throw runtime_error("'"+server+"/"+name+" not a command.");
+
+        // Avoid compiler warning of unused parameter
+        lout << flush;
+
+        // Convert the user entered data according to the format string
+        // into a data block which will be attached to the event
+#ifndef DEBUG
+        ostringstream sout;
+        const Converter conv(sout, is->format, false);
+#else
+        const Converter conv(lout, is->format, false);
+#endif
+        if (!conv)
+            throw runtime_error("Couldn't properly parse the format... ignored.");
+
+#ifdef DEBUG
+        lout << kBlue << server << '/' << name;
+#endif
+        const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+        lout << kBlue << " [" << v.size() << "]" << endl;
+#endif
+        const string cmd = server + '/' + name;
+        const int rc = DimClient::sendCommand(cmd.c_str(), (void*)v.data(), v.size());
+        if (!rc)
+            throw runtime_error("ERROR - Sending command "+cmd+" failed.");
+
+        return true;
+    }
+
+    if (!str.empty())
+        throw runtime_error("SendDimCommand - Format information for "+server+"/"+name+" not yet available.");
+
+    return false;
+}
+
+int StateMachineDimControl::PrintStates(std::ostream &out, const std::string &serv)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    int rc = 0;
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+    {
+        if (!serv.empty() && *it!=serv)
+            continue;
+
+        out << kRed << "----- " << *it << " -----" << endl;
+
+        int cnt = 0;
+        for (auto is=fStateDescriptionList.begin(); is!=fStateDescriptionList.end(); is++)
+        {
+            const string &server = is->first.first;
+
+            if (server!=*it)
+                continue;
+
+            const int32_t &state   = is->first.second;
+            const string  &name    = is->second.first;
+            const string  &comment = is->second.second;
+
+            out << kBold   << setw(5) << state << kReset << ": ";
+            out << kYellow << name;
+            if (!comment.empty())
+                out << kBlue   << " (" << comment << ")";
+            out << endl;
+
+            cnt++;
+        }
+
+        if (cnt==0)
+            out << "   <no states>" << endl;
+        else
+            rc++;
+
+        out << endl;
+    }
+
+    return rc;
+}
+
+int StateMachineDimControl::PrintDescription(std::ostream &out, bool iscmd, const std::string &serv, const std::string &service)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    int rc = 0;
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+    {
+        if (!serv.empty() && *it!=serv)
+            continue;
+
+        out << kRed << "----- " << *it << " -----" << endl << endl;
+
+        for (auto is=fServiceList.begin(); is!=fServiceList.end(); is++)
+        {
+            if (is->server!=*it)
+                continue;
+
+            if (!service.empty() && is->service!=service)
+                continue;
+
+            if (is->iscmd!=iscmd)
+                continue;
+
+            rc++;
+
+            out << " " << is->service;
+            if (!is->format.empty())
+                out << '[' << is->format << ']';
+
+            const auto id = fServiceDescriptionList.find(*it+"/"+is->service);
+            if (id!=fServiceDescriptionList.end())
+            {
+                const vector<Description> &v = id->second;
+
+                for (auto j=v.begin()+1; j!=v.end(); j++)
+                    out << " <" << j->name << ">";
+                out << endl;
+
+                if (!v[0].comment.empty())
+                    out << "    " << v[0].comment << endl;
+
+                for (auto j=v.begin()+1; j!=v.end(); j++)
+                {
+                    out << "    " << kGreen << j->name;
+                    if (!j->comment.empty())
+                        out << kReset << ": " << kBlue << j->comment;
+                    if (!j->unit.empty())
+                        out << kYellow << " [" << j->unit << "]";
+                    out << endl;
+                }
+            }
+            out << endl;
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+int StateMachineDimControl::HandleStateChange(const string &server, DimDescriptions *dim)
+{
+    fMutex.lock();
+    const State descr = dim->description();
+    const State state = State(dim->state(), descr.index==DimState::kNotAvailable?"":descr.name, descr.comment, dim->cur.first);
+    fCurrentStateList[server] = state;
+    fMutex.unlock();
+
+    fStateCallback(server, state);
+
+    return GetCurrentState();
+}
+
+State StateMachineDimControl::GetServerState(const std::string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto it = fCurrentStateList.find(server);
+    return it==fCurrentStateList.end() ? State() : it->second;
+}
+
+int StateMachineDimControl::HandleStates(const string &server, DimDescriptions *dim)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto is = fCurrentStateList.find(server);
+    for (auto it=dim->states.begin(); it!=dim->states.end(); it++)
+    {
+        fStateDescriptionList[make_pair(server, it->index)] = make_pair(it->name, it->comment);
+        if (is==fCurrentStateList.end())
+            continue;
+
+        State &s = is->second;
+        if (s.index==it->index)
+        {
+            s.name    = it->name;
+            s.comment = it->comment;
+        }
+    }
+
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::HandleDescriptions(DimDescriptions *dim)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    for (auto it=dim->descriptions.begin(); it!=dim->descriptions.end(); it++)
+        fServiceDescriptionList[it->front().name].assign(it->begin(), it->end());
+
+    return GetCurrentState();
+}
+
+std::vector<Description> StateMachineDimControl::GetDescription(const std::string &service)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto it = fServiceDescriptionList.find(service);
+    return it==fServiceDescriptionList.end() ? vector<Description>() : it->second;
+}
+
+int StateMachineDimControl::HandleServerAdd(const string &server)
+{
+    if (server!="DIS_DNS")
+    {
+        struct Find : string
+        {
+            Find(const string &ref) : string(ref) { }
+            bool operator()(const DimDescriptions *dim) { return *this==dim->server; }
+        };
+
+        if (find_if(fDimDescriptionsList.begin(), fDimDescriptionsList.end(),
+                    Find(server))==fDimDescriptionsList.end())
+        {
+            DimDescriptions *d = new DimDescriptions(server);
+
+            fDimDescriptionsList.push_back(d);
+            d->SetCallback(bind(&StateMachineDimControl::HandleStateChange, this, server, d));
+            d->SetCallbackStates(bind(&StateMachineDimControl::HandleStates, this, server, d));
+            d->SetCallbackDescriptions(bind(&StateMachineDimControl::HandleDescriptions, this, d));
+            d->Subscribe(*this);
+        }
+    }
+
+    // Make a copy of the list to be able to
+    // lock the access to the list
+
+    const lock_guard<mutex> guard(fMutex);
+    fServerList.insert(server);
+
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::HandleServerRemove(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+    fServerList.erase(server);
+
+    return GetCurrentState();
+}
+
+vector<string> StateMachineDimControl::GetServerList()
+{
+    vector<string> rc;
+
+    const lock_guard<mutex> guard(fMutex);
+
+    rc.reserve(fServerList.size());
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+        rc.push_back(*it);
+
+    return rc;
+}
+
+vector<string> StateMachineDimControl::GetCommandList(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const string  s = server.substr(0, server.length()-1);
+
+    if (fServerList.find(s)==fServerList.end())
+        return vector<string>();
+
+    vector<string> rc;
+
+    for (auto it=fServiceList.begin(); it!=fServiceList.end(); it++)
+        if (it->iscmd && it->server==s)
+            rc.push_back(server+it->service);
+
+    return rc;
+}
+
+vector<string> StateMachineDimControl::GetCommandList()
+{
+    vector<string> rc;
+
+    const lock_guard<mutex> guard(fMutex);
+
+    for (auto it=fServiceList.begin(); it!=fServiceList.end(); it++)
+        if (it->iscmd)
+            rc.push_back(it->server+"/"+it->service);
+
+    return rc;
+}
+
+set<Service> StateMachineDimControl::GetServiceList()
+{
+    const lock_guard<mutex> guard(fMutex);
+    return fServiceList;
+}
+
+vector<State> StateMachineDimControl::GetStates(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    vector<State> rc;
+
+    for (auto it=fStateDescriptionList.begin(); it!=fStateDescriptionList.end(); it++)
+    {
+        if (it->first.first!=server)
+            continue;
+
+        rc.emplace_back(it->first.second, it->second.first, it->second.second);
+    }
+
+    return rc;
+}
+
+
+int StateMachineDimControl::HandleAddService(const Service &svc)
+{
+    // Make a copy of the list to be able to
+    // lock the access to the list
+    const lock_guard<mutex> guard(fMutex);
+    fServiceList.insert(svc);
+
+    return GetCurrentState();
+}
+
+bool StateMachineDimControl::HasServer(const std::string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+    return fServerList.find(server)!=fServerList.end();
+}
+
+StateMachineDimControl::StateMachineDimControl(ostream &out) : StateMachineDim(out, fIsServer?"DIM_CONTROL":"")
+{
+    fDim.Subscribe(*this);
+    fDimList.Subscribe(*this);
+
+    fDimList.SetCallbackServerAdd   (bind(&StateMachineDimControl::HandleServerAdd,    this, placeholders::_1));
+    fDimList.SetCallbackServerRemove(bind(&StateMachineDimControl::HandleServerRemove, this, placeholders::_1));
+    fDimList.SetCallbackServiceAdd  (bind(&StateMachineDimControl::HandleAddService,   this, placeholders::_1));
+
+    // State names
+    AddStateName(0, "Idle",      "No script currently in processing.");
+    AddStateName(1, "Loading",   "Script is loading.");
+    AddStateName(2, "Compiling", "JavaScript is compiling.");
+    AddStateName(3, "Running",   "Script is running.");
+
+    AddEvent("START", "C", 0)
+        (bind(&StateMachineDimControl::StartScript, this, placeholders::_1, ".js "))
+        ("Start a JavaScript");
+
+    AddEvent("EXECUTE", "C", 0)
+        (bind(&StateMachineDimControl::StartScript, this, placeholders::_1, ".x "))
+        ("Execute a batch script");
+
+    AddEvent("STOP", "C")
+        (bind(&StateMachineDimControl::StopScript, this, placeholders::_1))
+        ("Stop a runnning batch script or JavaScript");
+
+    AddEvent("INTERRUPT", "C")
+        (bind(&StateMachineDimControl::InterruptScript, this, placeholders::_1))
+        ("Send an interrupt request (IRQ) to a running JavaScript");
+}
+
+StateMachineDimControl::~StateMachineDimControl()
+{
+    for (auto it=fDimDescriptionsList.begin(); it!=fDimDescriptionsList.end(); it++)
+        delete *it;
+}
+
+int StateMachineDimControl::EvalOptions(Configuration &conf)
+{
+    fDebug = conf.Get<bool>("debug");
+    fUser  = conf.Get<string>("user");
+    fScriptUser = fUser;
+
+    // FIXME: Check fUser for quotes!
+
+    const map<string, string> &js = conf.GetOptions<string>("JavaScript.");
+    for (auto it=js.begin(); it!=js.end(); it++)
+    {
+        string key = it->first;
+        string val = it->second;
+
+        // Escape key
+        boost::replace_all(key, "\\", "\\\\");
+        boost::replace_all(key, "'", "\\'");
+        boost::replace_all(key, "\"", "\\\"");
+
+        // Escape value
+        boost::replace_all(val, "\\", "\\\\");
+        boost::replace_all(val, "'", "\\'");
+        boost::replace_all(val, "\"", "\\\"");
+
+        fArgumentsJS += " '"+key +"'='"+val+"'";
+    }
+
+    // fVerbosity = 40;
+
+    // if (conf.Has("verbosity"))
+    //     fVerbosity = conf.Get<uint32_t>("verbosity");
+
+    // if (conf.Get<bool>("quiet"))
+    //     fVerbosity = 90;
+
+#if BOOST_VERSION < 104600
+    const string fname = boost::filesystem::path(conf.GetName()).filename();
+#else
+    const string fname = boost::filesystem::path(conf.GetName()).filename().string();
+#endif
+
+    if (fname=="dimserver")
+        return -1;
+
+    if (conf.Get<bool>("stop"))
+        return !Dim::SendCommand("DIM_CONTROL/STOP", fUser);
+
+    if (conf.Has("interrupt"))
+        return !Dim::SendCommand("DIM_CONTROL/INTERRUPT", conf.Get<string>("interrupt")+"\n"+fUser);
+
+    if (conf.Has("start"))
+        return !Dim::SendCommand("DIM_CONTROL/START", conf.Get<string>("start")+" user='"+fUser+"'"+fArgumentsJS);
+
+    if (conf.Has("batch"))
+        return !Dim::SendCommand("DIM_CONTROL/EXECUTE", conf.Get<string>("batch")+" user='"+fUser+"'");
+
+    if (conf.Has("msg"))
+        return !Dim::SendCommand("CHAT/MSG", fUser+": "+conf.Get<string>("msg"));
+
+    if (conf.Has("restart"))
+        return !Dim::SendCommand(conf.Get<string>("restart")+"/EXIT", uint32_t(126));
+
+    return -1;
+}
Index: branches/FACT++_part_filenames/src/StateMachineDimControl.h
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineDimControl.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineDimControl.h	(revision 18732)
@@ -0,0 +1,88 @@
+#ifndef FACT_StateMachineDimControl
+#define FACT_StateMachineDimControl
+
+#include <set>
+
+#include "DimState.h"
+#include "StateMachineDim.h"
+
+class Configuration;
+
+class StateMachineDimControl : public StateMachineDim
+{
+    std::mutex fMutex;
+
+    std::vector<DimDescriptions*> fDimDescriptionsList;
+
+    std::set<std::string> fServerList;
+    std::set<Service> fServiceList;
+    std::map<std::string, std::vector<std::string>> fCommandList;
+    std::map<std::string, State> fCurrentStateList;
+    std::map<std::pair<std::string, int32_t>, std::pair<std::string, std::string>> fStateDescriptionList;
+    std::map<std::string, std::vector<Description>> fServiceDescriptionList;
+
+    std::function<void(const std::string &, const State&)> fStateCallback;
+
+    DimVersion fDim;
+    DimDnsServiceList fDimList;
+
+    int  fVerbosity;
+    bool fDebug;
+
+    std::string fUser;
+    std::string fScriptUser;
+
+    /// Default arguments provided to very java script
+    std::string fArgumentsJS;
+
+    std::function<int(const EventImp &)> fInterruptHandler;
+
+    std::string Line(const std::string &txt, char fill);
+
+public:
+    static bool fIsServer;
+
+    int ChangeState(int qos, const Time &time, int scriptdepth, std::string scriptfile, std::string user);
+    int ChangeState(int state);
+
+    int StartScript(const EventImp &imp, const std::string &cmd);
+    int StopScript(const EventImp &imp);
+    int InterruptScript(const EventImp &imp);
+
+    int HandleStateChange(const std::string &server, DimDescriptions *state);
+    int HandleDescriptions(DimDescriptions *state);
+    int HandleStates(const std::string &server, DimDescriptions *state);
+    int HandleServerAdd(const std::string &server);
+    int HandleServerRemove(const std::string &server);
+    int HandleAddService(const Service &svc);
+
+    bool HasServer(const std::string &server);
+
+    std::vector<std::string> GetServerList();
+    std::vector<std::string> GetCommandList(const std::string &server);
+    std::vector<std::string> GetCommandList();
+    std::vector<Description> GetDescription(const std::string &service);
+    std::vector<State>       GetStates(const std::string &server);
+    std::set<Service>        GetServiceList();
+
+    int PrintStates(std::ostream &out, const std::string &serv="");
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="");
+
+    State GetServerState(const std::string &server);
+
+    bool SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
+
+    void SetStateCallback(const std::function<void(const std::string &, const State &)> &func) { fStateCallback = func; }
+
+    void SetInterruptHandler(const std::function<int(const EventImp &)> &func=std::function<int(const EventImp &)>()) { fInterruptHandler = func; }
+
+    void Stop(int code=0);
+
+public:
+    StateMachineDimControl(std::ostream &out=std::cout);
+    ~StateMachineDimControl();
+
+    int EvalOptions(Configuration &conf);
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/StateMachineImp.cc
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineImp.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineImp.cc	(revision 18732)
@@ -0,0 +1,1076 @@
+// **************************************************************************
+/** @class StateMachineImp
+
+ @brief Base class for a state machine implementation
+
+ \dot
+  digraph example {
+      node [shape=record, fontname=Helvetica, fontsize=10];
+      s [ label="Constructor" style="rounded"  color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      a [ label="State -3 (kSM_NotReady)"      color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      b [ label="State -2 (kSM_Initializing)"  color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      c [ label="State -1 (kSM_Configuring)"   color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      y [ label="State 0 (kSM_Ready)"                        URL="\ref StateMachineImp::Run"];
+      r [ label="User states (Running)" ];
+      e [ label="State 256 (kSM_Error)" ];
+      f [ label="State 65535 (kSM_FatalError)" color="red"   URL="\ref StateMachineImp::Run"];
+
+      // ---- manual means: command or program introduced ----
+
+      // Startup from Run() to Ready
+      s -> a [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+      a -> b [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+      b -> c [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+
+      c -> y [ arrowhead="open" color="red"  style="solid" URL="\ref StateMachineImp::Run" ]; // prg: Run()
+
+      y -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+      r -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+      e -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+
+      e -> y [ arrowhead="open" color="red"  style="dashed" ]; // CMD: RESET (e.g.)
+
+      y -> e [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      r -> e [ arrowhead="open" color="blue" style="solid"  ]; // prg
+
+      y -> r [ arrowhead="open" color="blue" style="dashed" ]; // CMD/PRG
+      r -> y [ arrowhead="open" color="blue" style="dashed" ]; // CMD/PRG
+
+      y -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      r -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      e -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+  }
+  \enddot
+
+  - <B>Red box</B>: Internal states. Events which are received are
+    discarded.
+  - <B>Black box</B>: State machine running. Events are accepted and
+    processed according to the implemented functions Transition(),
+    Configuration() and Execute(). Events are accepted accoding to the
+    lookup table of allowed transitions.
+  - <B>Red solid arrow</B>: A transition initiated by the program itself.
+  - <b>Dashed arrows in general</b>: Transitions which can be initiated
+    by a dim-command or get inistiated by the program.
+  - <b>Solid arrows in general</b>: These transitions are always initiated by
+    the program.
+  - <B>Red dashed</B>: Suggested RESET event (should be implemented by
+    the derived class)
+  - <B>Black dashed arrow</B>: Exit from the main loop. This can either
+    happen by the Dim-provided EXIT-command or a call to StateMachineDim::Stop.
+  - <B>Black arrows</B>: Other events or transitions which can be
+    implemented by the derived class.
+  - <B>Dotted black arrow</B>: Exit from the main-loop which is initiated
+    by the program itself through StateMachineDim::Stop() and not by the
+    state machine itself (Execute(), Configure() and Transition())
+  - <b>Blue dashed arrows</b>: Transitions which happen either by receiving
+    a event or are initiated from the state machine itself
+    (by return values of (Execute(), Configure() and Transition())
+  - <b>Blue solid</b>: Transitions which cannot be initiated by dim
+    event but only by the state machine itself.
+  - From the program point of view the fatal error is identical with
+    the kSM_Configuring state, i.e. it is returned from the main-loop.
+    Usually this will result in program termination. However, depending
+    on the state the program might decide to use different cleaning
+    routines.
+
+@todo
+   - A proper and correct cleanup after an EXIT or Stop() is missing.
+     maybe we have to force a state 0 first?
+*/
+// **************************************************************************
+#include "StateMachineImp.h"
+
+#include "Time.h"
+#include "Event.h"
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! The state of the state machine (fCurrentState) is initialized with
+//! kSM_NotReady
+//!
+//! Default state names for kSM_NotReady, kSM_Ready, kSM_Error and
+//! kSM_FatalError are set via AddStateName.
+//!
+//! fExitRequested is set to 0, fRunning to false.
+//!
+//! Furthermore, the ostream is propagated to MessageImp, as well as
+//! stored in fOut.
+//!
+//! MessageImp is used for messages which are distributed (e.g. via DIM),
+//! fOut is used for messages which are only displayed on the local console.
+//!
+//! Subsequent, i.e. derived classes should setup all allowed state
+//! transitions as well as all allowed configuration event by
+//! AddEvent and AddStateName.
+//!
+//! @param out
+//!    A refrence to an ostream which allows to redirect the log-output
+//!    to something else than cout. The default is cout. The reference
+//!    is propagated to fLog
+//!
+//! @param name
+//!    The server name stored in fName
+//!
+//
+StateMachineImp::StateMachineImp(ostream &out, const std::string &name)
+    : MessageImp(out), fName(name), fCurrentState(kSM_NotReady),
+    fBufferEvents(true), fRunning(false), fExitRequested(0)
+{
+    SetDefaultStateNames();
+}
+
+// --------------------------------------------------------------------------
+//
+//! delete all object stored in fListOfEvent and in fEventQueue
+//
+StateMachineImp::~StateMachineImp()
+{
+    // For this to work EventImp must be the first class from which
+    // the object inherits
+    for (vector<EventImp*>::iterator cmd=fListOfEvents.begin(); cmd!=fListOfEvents.end(); cmd++)
+        delete *cmd;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the default state names. This function should be called in
+//! derived classes again if they overwrite SetStateName().
+//
+void StateMachineImp::SetDefaultStateNames()
+{
+    AddStateName(kSM_NotReady,   "NotReady", "State machine not ready, events are ignored.");
+    AddStateName(kSM_Ready,      "Ready",    "State machine ready to receive events.");
+    AddStateName(kSM_Error,      "ERROR",    "Common error state.");
+    AddStateName(kSM_FatalError, "FATAL",    "A fatal error occured, the eventloop is stopped.");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Puts the given event into the fifo. The fifo will take over ownership.
+//! Access to fEventQueue is encapsulated by fMutex.
+//!
+//! @param cmd
+//!    Pointer to an object of type Event to be stored in the fifo
+//!
+//! @todo
+//!    Can we also allow EventImp?
+//
+void StateMachineImp::PushEvent(Event *cmd)
+{
+    const lock_guard<mutex> guard(fMutex);
+    fEventQueue.emplace_back(cmd);
+    fCond.notify_one();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get an event from the fifo. We will take over the owenership of the
+//! object. The pointer is deleted from the fifo. Access of fEventQueue
+//! is encapsulated by fMutex.
+//!
+//! @returns
+//!    A pointer to an Event object
+//
+shared_ptr<Event> StateMachineImp::PopEvent()
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    // Get the next event from the stack
+    // and remove event from the stack
+    const shared_ptr<Event> cmd = fEventQueue.front();
+    fEventQueue.pop_front();
+    return cmd;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. The data
+//! is not given as binary data but as a string instead. It is converted
+//! according to the format of the corresponding event and an event
+//! is posted to the queue if successfull.
+//!
+//! @param lout
+//!    Stream to which output should be redirected
+//!    event should be for.
+//!
+//! @param str
+//!    Command with data, e.g. "COMMAND 1 2 3 4 5 test"
+//!
+//! @returns
+//!    false if no event was posted to the queue. If
+//!    PostEvent(EventImp&,const char*, size_t) was called return its
+//!    return value
+//
+bool StateMachineImp::PostEvent(ostream &lout, const string &str)
+{
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Compile the command which will be sent to the state-machine
+    const string name = fName + "/" + str.substr(0, p0);
+
+    // Check if this command is existing at all
+    EventImp *evt = FindEvent(name);
+    if (!evt)
+    {
+        lout << kRed << "Unknown command '" << name << "'" << endl;
+        return false;
+    }
+
+    // Get the format of the event data
+    const string fmt = evt->GetFormat();
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+#ifndef DEBUG
+    ostringstream sout;
+    const Converter conv(sout, fmt, false);
+#else
+    const Converter conv(lout, fmt, false);
+#endif
+    if (!conv)
+    {
+        lout << kRed << "Couldn't properly parse the format... ignored." << endl;
+        return false;
+    }
+
+    try
+    {
+#ifdef DEBUG
+        lout << kBlue << name;
+#endif
+        const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+        lout << endl;
+#endif
+
+        return PostEvent(*evt, v.data(), v.size());
+    }
+    catch (const std::runtime_error &e)
+    {
+        lout << endl << kRed << e.what() << endl;
+    }
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. If the
+//! event loop has not yet been started with Run() the command is directly
+//! handled by HandleEvent.
+//!
+//! Events posted when the state machine is in a negative state or
+//! kSM_FatalError are ignored.
+//!
+//! A new event is created and its data contents initialized with the
+//! specified memory.
+//!
+//! @param evt
+//!    The event to be posted. The precise contents depend on what the
+//!    event should be for.
+//!
+//! @param ptr
+//!    pointer to the memory which should be attached to the event
+//!
+//! @param siz
+//!    size of the memory which should be attached to the event
+//!
+//! @returns
+//!    false if the event is ignored, true otherwise.
+//!
+//! @todo
+//!    - Shell we check for the validity of a command at the current state, too?
+//!    - should we also get the output stream as an argument here?
+//
+bool StateMachineImp::PostEvent(const EventImp &evt, const char *ptr, size_t siz)
+{
+    if (/*GetCurrentState()<0 ||*/ GetCurrentState()==kSM_FatalError)
+    {
+        Out() << kYellow << "State<0 or FatalError: Event ignored." << endl;
+        return false;
+    }
+
+    if (IsRunning() || fBufferEvents)
+    {
+        Event *event = new Event(evt, ptr, siz);
+        //Debug("Posted: "+event->GetName());
+        PushEvent(event);
+    }
+    else
+    {
+        // FIXME: Is this thread safe? (Yes, because the data is copied)
+        // But two handlers could be called at the same time. Do we
+        // need to lock the handlers? (Dim + console)
+        // FIXME: Is copying of the data necessary?
+        const Event event(evt, ptr, siz);
+        Lock();
+        HandleEvent(event);
+        UnLock();
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. If the
+//! event loop has not yet been started with Run() the command is directly
+//! handled by HandleEvent.
+//!
+//! Events posted when the state machine is in a negative state or
+//! kSM_FatalError are ignored.
+//!
+//! @param evt
+//!    The event to be posted. The precise contents depend on what the
+//!    event should be for.
+//!
+//! @returns
+//!    false if the event is ignored, true otherwise.
+//!
+//! @todo
+//!    - Shell we check for the validity of a command at the current state, too?
+//!    - should we also get the output stream as an argument here?
+//
+bool StateMachineImp::PostEvent(const EventImp &evt)
+{
+    if (/*GetCurrentState()<0 ||*/ GetCurrentState()==kSM_FatalError)
+    {
+        Out() << kYellow << "State<0 or FatalError: Event ignored." << endl;
+        return false;
+    }
+
+    if (IsRunning() || fBufferEvents)
+        PushEvent(new Event(evt));
+    else
+    {
+        // FIXME: Is this thread safe? (Yes, because it is only used
+        // by Dim and this is thread safe) But two handlers could
+        // be called at the same time. Do we need to lock the handlers?
+        HandleEvent(evt);
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return all event names of the StateMachine
+//!
+//! @returns
+//!    A vector of strings with all event names of the state machine.
+//!    The event names all have the SERVER/ pre-fix removed.
+//
+const vector<string> StateMachineImp::GetEventNames()
+{
+    vector<string> v;
+
+    const string &name = fName + "/";
+    const int     len  = name.length();
+
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator i=fListOfEvents.begin();
+         i!=fListOfEvents.end(); i++)
+    {
+        const string evt = (*i)->GetName();
+
+        v.push_back(evt.substr(0, len)==name ? evt.substr(len) : evt);
+    }
+
+    return v;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call for each event in fListEvents its Print function with the given
+//! stream.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//!
+//! @param evt
+//!    if given only the given event is selected
+//
+void StateMachineImp::PrintListOfEvents(ostream &out, const string &evt)
+{
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if (evt.empty() || GetName()+'/'+evt==(*c)->GetName())
+            (*c)->Print(out, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call for each event in fListEvents its Print function with the given
+//! stream if it is an allowed event in the current state.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//!
+//
+void StateMachineImp::PrintListOfAllowedEvents(ostream &out)
+{
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if ((*c)->IsStateAllowed(fCurrentState))
+            (*c)->Print(out, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call PrintListOfEvents with fOut as the output stream
+//!
+//! @param str
+//!    if given only the given event is selected
+//
+//
+void StateMachineImp::PrintListOfEvents(const string &str)
+{
+    PrintListOfEvents(Out(), str);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all states with descriptions.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//
+void StateMachineImp::PrintListOfStates(std::ostream &out) const
+{
+    out << endl;
+    out << kBold << "List of available states:" << endl;
+    for (StateNames::const_iterator i=fStateNames.begin(); i!=fStateNames.end(); i++)
+    {
+        ostringstream state;
+        state << i->first;
+        out << " -[" << kBold << state.str() << kReset << "]:" << setfill(' ') << setw(6-state.str().length()) << ' ' << kYellow << i->second.first << kBlue << " (" << i->second.second << ")" << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all states with descriptions.
+//
+void StateMachineImp::PrintListOfStates() const
+{
+    PrintListOfStates(Out());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check whether an event (same pointer!) is in fListOfEvents
+//!
+//! @returns
+//!    true if the event was found, false otherwise
+//
+bool StateMachineImp::HasEvent(const EventImp *cmd)
+{
+    // Find the event from the list of commands and queue it
+    const lock_guard<mutex> guard(fMutexEvt);
+    return find(fListOfEvents.begin(), fListOfEvents.end(), cmd)!=fListOfEvents.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check whether an event with the given name is found in fListOfEvents.
+//! Note that currently there is no mechanism which ensures that not two
+//! events have the same name.
+//!
+//! @returns
+//!    true if the event was found, false otherwise
+//
+EventImp *StateMachineImp::FindEvent(const string &evt)
+{
+    // Find the command from the list of commands and queue it
+    const lock_guard<mutex> guard(fMutexEvt);
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if (evt == (*c)->GetName())
+            return *c;
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Via a call to CreateEvent a new event is created with the
+//! given targetstate, name and format. 
+//!
+//! The allowed states are passed to the new event and a message
+//! is written to the output-stream.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param states
+//!    A comma sepeareted list of ints, e.g. "1, 4, 5, 9" with states
+//!    in which this new state transition is allowed and will be accepted.
+//!
+//! @param fmt
+//!    A format as defined by the dim system can be given for the command.
+//!    However, it has no real meaning except that it is stored within the
+//!    DimCommand object. However, the user must make sure that the data of
+//!    received commands is properly extracted. No check is done.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, const string &states, const string &fmt)
+{
+    EventImp *evt = CreateEvent(name, fmt);
+
+    evt->AddAllowedStates(states);
+
+#ifdef DEBUG
+    Out() << ":   " << Time().GetAsStr("%H:%M:%S.%f");
+    Out() << " - Adding command " << evt->GetName();
+    Out() << endl;
+#endif
+
+    const lock_guard<mutex> guard(fMutexEvt);
+    fListOfEvents.push_back(evt);
+    return *evt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Therefore an instance of type DimEvent is created and added
+//! to the list of available commands fListOfEvents.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param s1, s2, s3, s4, s5
+//!    A list of states from which a transition to targetstate is allowed
+//!    by this command.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, int s1, int s2, int s3, int s4, int s5)
+{
+    ostringstream str;
+    str << s1 << ' '  << s2 << ' ' << s3 << ' ' << s4 << ' ' << s5;
+    return AddEvent(name, str.str(), "");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Therefore an instance of type DimEvent is created and added
+//! to the list of available commands fListOfEvents.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param fmt
+//!    A format as defined by the dim system can be given for the command.
+//!    However, it has no real meaning except that it is stored within the
+//!    DimCommand object. However, the user must make sure that the data of
+//!    received commands is properly extracted. No check is done.
+//!
+//! @param s1, s2, s3, s4, s5
+//!    A list of states from which a transition to targetstate is allowed
+//!    by this command.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, const string &fmt, int s1, int s2, int s3, int s4, int s5)
+{
+    ostringstream str;
+    str << s1 << ' '  << s2 << ' ' << s3 << ' ' << s4 << ' ' << s5;
+    return AddEvent(name, str.str(), fmt);
+}
+
+EventImp *StateMachineImp::CreateService(const string &)
+{
+    return new EventImp();
+}
+
+// --------------------------------------------------------------------------
+//
+EventImp &StateMachineImp::Subscribe(const string &name)
+{
+    EventImp *evt = CreateService(name);
+
+    const lock_guard<mutex> guard(fMutexEvt);
+    fListOfEvents.push_back(evt);
+    return *evt;
+}
+
+void StateMachineImp::Unsubscribe(EventImp *evt)
+{
+    {
+        const lock_guard<mutex> guard(fMutexEvt);
+
+        auto it = find(fListOfEvents.begin(), fListOfEvents.end(), evt);
+        if (it==fListOfEvents.end())
+            return;
+
+        fListOfEvents.erase(it);
+    }
+    delete evt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! To be able to name states, i.e. present the current state in human
+//! readable for to the user, a string can be assigned to each state.
+//! For each state this function can be called only once, i.e. state name
+//! cannot be overwritten.
+//!
+//! Be aware that two states should not have the same name!
+//!
+//! @param state
+//!    Number of the state to which a name should be assigned
+//!
+//! @param name
+//!    A name which should be assigned to the state, e.g. "Tracking"
+//!
+//! @param doc
+//!    A explanatory text describing the state
+//!
+bool StateMachineImp::AddStateName(const int state, const std::string &name, const std::string &doc)
+{
+    //auto it = fStateNames.find(state);
+
+    //if (/*it!=fStateNames.end() &&*/ !it->second.first.empty())
+    //    return false;
+
+    fStateNames[state] = make_pair(name, doc);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a state's index by its name.
+//!
+//! @param name
+//!    Name of the state to search for
+//!
+//! @returns
+//!    Index of the state if found, kSM_NotAvailable otherwise
+//!
+int StateMachineImp::GetStateIndex(const string &name) const
+{
+    for (auto it=fStateNames.begin(); it!=fStateNames.end(); it++)
+        if (it->second.first==name)
+            return it->first;
+
+    return kSM_NotAvailable;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The state name as stored in fStateNames is returned, corresponding
+//!    to the state given. If no name exists the number is returned
+//!    as string.
+//!
+const string StateMachineImp::GetStateName(int state) const
+{
+    const StateNames::const_iterator i = fStateNames.find(state);
+    return i==fStateNames.end() || i->second.first.empty() ? to_string(state) : i->second.first;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which should be checked
+//!
+//! @returns
+//!    true if a nam for this state already exists, false otherwise
+//!
+bool StateMachineImp::HasState(int state) const
+{
+    return fStateNames.find(state) != fStateNames.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The description of a state name as stored in fStateNames is returned,
+//!    corresponding to the state given. If no name exists an empty string is
+//!    returned.
+//!
+const string StateMachineImp::GetStateDesc(int state) const
+{
+    const StateNames::const_iterator i = fStateNames.find(state);
+    return i==fStateNames.end() ? "" : i->second.second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This functions works in analogy to GetStateName, but the state number
+//! is added in []-parenthesis after the state name if it is available.
+//!
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The state name as stored in fStateName is returned corresponding
+//!    to the state given plus the state number added in []-parenthesis.
+//!    If no name exists the number is returned as string.
+//!
+//
+const string StateMachineImp::GetStateDescription(int state) const
+{
+    const string &str = GetStateName(state);
+
+    ostringstream s;
+    s << state;
+    if (str==s.str())
+        return str;
+
+    return str.empty() ? s.str() : (str+'['+s.str()+']');
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a helpter function to do all the corresponding action
+//! if the state machine decides to change its state.
+//!
+//! If state is equal to the current state (fCurrentState) nothing is done.
+//! Then the service STATE (fSrcState) is updated with the new state
+//! and the text message and updateService() is called to distribute
+//! the update to all clients.
+//!
+//! In addition a log message is created and set via UpdateMsg.
+//!
+//! @param state
+//!    The new state which should be applied
+//!
+//! @param txt
+//!    A text corresponding to the state change which is distributed
+//!    together with the state itself for convinience.
+//!
+//! @param cmd
+//!    This argument can be used to give an additional name of the function
+//!    which is reponsible for the state change. It will be included in the
+//!    message
+//!
+//! @return
+//!    return the new state which was set or -1 in case of no change
+//
+string StateMachineImp::SetCurrentState(int state, const char *txt, const std::string &cmd)
+{
+    if (state==fCurrentState)
+    {
+        Out() << " -- " << Time().GetAsStr("%H:%M:%S.%f") << " - State " << GetStateDescription(state) << " already set... ";
+        if (!cmd.empty())
+            Out() << "'" << cmd << "' ignored.";
+        Out() << endl;
+        return "";
+    }
+
+    const int old = fCurrentState;
+
+    const string nold = GetStateDescription(old);
+    const string nnew = GetStateDescription(state);
+
+    string msg = nnew + " " + txt;
+    if (!cmd.empty())
+        msg += " (" + cmd + ")";
+
+    fCurrentState = state;
+
+    // State might have changed already again...
+    // Not very likely, but possible. That's why state is used
+    // instead of fCurrentState.
+
+    ostringstream str;
+    str << "State Transition from " << nold << " to " << nnew << " (" << txt;
+    if (!cmd.empty())
+        str << ": " << cmd;
+    str << ")";
+    Message(str);
+
+    return msg;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function handles a new state issued by one of the event handlers.
+//!
+//! @param newstate
+//!    A possible new state
+//!
+//! @param evt
+//!    A pointer to the event which was responsible for the state change,
+//!    NULL if no event was responsible.
+//!
+//! @param txt
+//!    Text which is issued if the current state has changed and the new
+//!    state is identical to the target state as stored in the event
+//!    reference, or when no alternative text was given, or the pointer to
+//!    evt is NULL.
+//!
+//! @param alt
+//!    An alternative text which is issues when the newstate of a state change
+//!    doesn't match the expected target state.
+//!
+//! @returns
+//!    false if newstate is kSM_FatalError, true otherwise
+//
+bool StateMachineImp::HandleNewState(int newstate, const EventImp *evt,
+                                     const char *txt)
+{
+    if (newstate==kSM_FatalError)
+        return false;
+
+    if (newstate==fCurrentState || newstate==kSM_KeepState)
+        return true;
+
+    SetCurrentState(newstate, txt, evt ? evt->GetName() : "");
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the event handler. Depending on the type of event it calles
+//! the function associated with the event, the Transition() or
+//! Configure() function.
+//!
+//! It first checks if the given even is valid in the current state. If
+//! it is not valid the function returns with true.
+//!
+//! If it is valid, it is checked whether a function is associated with
+//! the event. If this is the case, evt.Exec() is called and HandleNewState
+//! called with its return value. 
+//!
+//! If the event's target state is negative (unnamed Event) the Configure()
+//! function is called with the event as argument and HandleNewState with
+//! its returned new state.
+//!
+//! If the event's target state is 0 or positive (named Event) the
+//! Transition() function is called with the event as argument and
+//! HandleNewState with its returned new state.
+//!
+//! In all three cases the return value of HandleNewState is returned.
+//!
+//! Any of the three commands should usually return the current state
+//! or (in case of the Transition() command) return the new state. However,
+//! all three command can issue a state change by returning a new state.
+//! However, this will just change the internal state. Any action which
+//! is connected with the state change must have been executed already.
+//!
+//! @param evt
+//!    a reference to the event which should be handled
+//!
+//! @returns
+//!    false in case one of the commands changed the state to kSM_FataError,
+//!    true otherwise
+//
+bool StateMachineImp::HandleEvent(const EventImp &evt)
+{
+    if (!evt.HasFunc())
+    {
+        Warn(evt.GetName()+": No function assigned... ignored.");
+        return true;
+
+    }
+
+#ifdef DEBUG
+    ostringstream out;
+    out << "Handle: " << evt.GetName() << "[" << evt.GetSize() << "]";
+    Debug(out);
+#endif
+
+    // Check if the received command is allow in the current state
+    if (!evt.IsStateAllowed(fCurrentState))
+    {
+        Warn(evt.GetName()+": Not allowed in state "+GetStateDescription()+"... ignored.");
+        return true;
+    }
+
+    return HandleNewState(evt.ExecFunc(), &evt,
+                          "by ExecFunc function-call");
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the main loop, or what could be called the running state
+//! machine. The flow diagram below shows what the loop is actually doing.
+//! It's main purpose is to serialize command excecution and the main
+//! loop in the state machine (e.g. the tracking loop)
+//!
+//! Leaving the loop can be forced by setting fExitRequested to another
+//! value than zero. This is done automatically if dim's EXIT command
+//! is received or can be forced by calling Stop().
+//!
+//! As long as no new command arrives the Execute() command is called
+//! continously. This should implement the current action which
+//! should be performed in the current state, e.g. calculating a
+//! new command value and sending it to the hardware.
+//!
+//! If a command is received it is put into the fifo by the commandHandler().
+//! The main loop now checks the fifo. If commands are in the fifo, it is
+//! checked whether the command is valid ithin this state or not. If it is
+//! not valid it is ignored. If it is valid the corresponding action
+//! is performed. This can either be a call to Configure() (when no state
+//! change is connected to the command) or Transition() (if the command
+//! involves a state change).
+//! In both cases areference to the received command (Command) is
+//! passed to the function. Note that after the functions have finished
+//! the command will go out of scope and be deleted.
+//!
+//! None of the commands should take to long for execution. Otherwise the
+//! response time of the main loop will become too slow.
+//!
+//! Any of the three commands should usually return the current state
+//! or (in case of the Transition() command) return the new state. However,
+//! all three command can issue a state change by returning a new state.
+//! However, this will just change the internal state. Any action which
+//! is connected with the state change must have been executed already.
+//!
+//!
+//!
+//!  \dot
+//!   digraph Run {
+//!       node  [ shape=record, fontname=Helvetica, fontsize=10 ];
+//!       edge  [ labelfontname=Helvetica, labelfontsize=8 ];
+//!       start0 [ label="Run()" style="rounded"];
+//!       start1 [ label="fExitRequested=0\nfRunning=true\nSetCurrentState(kSM_Ready)"];
+//!       cond1  [ label="Is fExitRequested==0?"];
+//!       exec   [ label="HandleNewState(Execute())"];
+//!       fifo   [ label="Any event in FIFO?"];
+//!       get    [ label="Get event from FIFO\n Is event allowed within the current state?" ];
+//!       handle [ label="HandleEvent()" ];
+//!       exit1  [ label="fRunning=false\nSetCurrentState(kSM_FatalError)\n return -1" style="rounded"];
+//!       exit2  [ label="fRunning=false\nSetCurrentState(kSM_NotReady)\n return fExitRequested-1" style="rounded"];
+//!
+//!       start0   -> start1   [ weight=8 ];
+//!       start1   -> cond1    [ weight=8 ];
+//!
+//!       cond1:e  -> exit2:n  [ taillabel="true"  ];
+//!       cond1    -> exec     [ taillabel="false"  weight=8 ];
+//!
+//!       exec     -> fifo     [ taillabel="true"   weight=8 ];
+//!       exec:e   -> exit1:e  [ taillabel="false" ];
+//!
+//!       fifo     -> cond1    [ taillabel="false" ];
+//!       fifo     -> get      [ taillabel="true"   weight=8 ];
+//!
+//!       get      -> handle   [ taillabel="true"  ];
+//!
+//!       handle:s -> exit1:n  [ taillabel="false"  weight=8 ];
+//!       handle   -> cond1    [ taillabel="true"  ];
+//!   }
+//!   \enddot
+//!
+//! @param dummy
+//!    If this parameter is set to treu then no action is executed
+//!    and now events are dispatched from the event list. It is usefull
+//!    if functions are assigned directly to any event to simulate
+//!    a running loop (e.g. block until Stop() was called or fExitRequested
+//!    was set by an EXIT command.  If dummy==true, fRunning is not set
+//!    to true to allow handling events directly from the event handler.
+//!
+//! @returns
+//!    In the case of a a fatal error -1 is returned, fExitRequested-1 in all
+//!    other cases (This corresponds to the exit code either received by the
+//!    EXIT event or given to the Stop() function)
+//!
+//! @todo  Fix docu (kSM_SetReady, HandleEvent)
+//
+int StateMachineImp::Run(bool dummy)
+{
+    if (fCurrentState>=kSM_Ready)
+    {
+        Error("Run() can only be called in the NotReady state.");
+        return -1;
+    }
+
+    if (!fExitRequested)
+    {
+        fRunning = !dummy;
+
+        SetCurrentState(kSM_Ready, "by Run()");
+
+        std::unique_lock<std::mutex> lock(fMutex);
+        fMutex.unlock();
+
+        while (1)
+        {
+            fMutex.lock();
+            if (IsQueueEmpty())
+                fCond.wait_for(lock, chrono::microseconds(10000));
+            fMutex.unlock();
+
+            if (fExitRequested)
+                break;
+
+            if (dummy)
+                continue;
+
+            // If the command stack is empty go on with processing in the
+            // current state
+            if (!IsQueueEmpty())
+            {
+                // Pop the next command which arrived from the stack
+                const shared_ptr<Event> cmd(PopEvent());
+                if (!HandleEvent(*cmd))
+                    break;
+            }
+
+            // Execute a step in the current state of the state machine
+            if (!HandleNewState(Execute(), 0, "by Execute-command"))
+                break;
+        }
+
+        fRunning = false;
+
+        if (!fExitRequested)
+        {
+            Fatal("Fatal Error occured... shutting down.");
+            return -1;
+        }
+
+        SetCurrentState(kSM_NotReady, "due to return from Run().");
+    }
+
+    const int exitcode = fExitRequested-1;
+
+    // Prepare for next call
+    fExitRequested = 0;
+
+    return exitcode;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function can be called to stop the loop of a running state machine.
+//! Run() will then return with a return value corresponding to the value
+//! given as argument.
+//!
+//! Note that this is a dangerous operation, because as soon as one of the
+//! three state machine commands returns (Execute(), Configure() and
+//! Transition()) the loop will be left and Run(9 will return. The program
+//! is then responsible of correctly cleaning up the mess which might be left
+//! behind.
+//!
+//! @param code
+//!    int with which Run() should return when returning.
+//
+void StateMachineImp::Stop(int code)
+{
+    fExitRequested = code+1;
+}
Index: branches/FACT++_part_filenames/src/StateMachineImp.h
===================================================================
--- branches/FACT++_part_filenames/src/StateMachineImp.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/StateMachineImp.h	(revision 18732)
@@ -0,0 +1,259 @@
+#ifndef FACT_StateMachineImp
+#define FACT_StateMachineImp
+
+#include <map>
+#include <list>
+#include <mutex>
+#include <vector>
+#include <memory>
+#include <condition_variable>
+
+#include "MainImp.h"
+#include "MessageImp.h"
+
+class Event;
+class EventImp;
+
+class StateMachineImp : public MainImp, public MessageImp
+{
+public:
+    /// A list of default states available to any state machine.
+    /// Derived classes must define different state-number for
+    /// their purpose
+    enum DefaultStates_t
+    {
+        kSM_KeepState    =    -42,  ///< 
+        kSM_NotAvailable =     -2,  ///< Possible return value for GetStateIndex
+        kSM_NotReady     =     -1,  ///< Mainloop not running, state machine stopped
+        kSM_Ready        =      0,  ///< Mainloop running, state machine in operation
+        kSM_UserMode     =      1,  ///< First user defined mode (to be used in derived classes' enums)
+        kSM_Error        =  0x100,  ///< Error states should be between 0x100 and 0xffff
+        kSM_FatalError   = 0xffff,  ///< Fatal error: stop program
+    };
+
+private:
+    std::string fName;   /// Name of the state-machine / server (e.g. DRIVE)
+
+    int fCurrentState;   /// Current state of the state machine
+
+    typedef std::map<const int, std::pair<std::string, std::string>> StateNames;
+
+protected:
+    /// Human readable names associated with the states
+    StateNames fStateNames;
+
+private:
+    std::vector<EventImp*> fListOfEvents; /// List of available commands as setup by user
+    std::list<std::shared_ptr<Event>> fEventQueue;   /// Event queue (fifo) for the received commands
+
+    std::mutex fMutex;    /// Mutex to ensure thread-safe access to the command fifo
+    std::mutex fMutexEvt; /// Mutex to ensure thread-safe access to the command fifo
+
+    std::condition_variable fCond; /// Conditional to signal run the an event is waiting
+
+    bool fBufferEvents;  /// Flag if events should be buffered outside the event loop
+
+protected:
+    bool fRunning;       /// Machine is in main-loop
+    int  fExitRequested; /// This is a flag which is set true if the main loop should stop
+
+    /// Push a command into the fifo. The fifo takes over ownership
+    virtual void PushEvent(Event *cmd);
+    /// Pop a command from the fifo.
+    std::shared_ptr<Event> PopEvent();
+
+    bool HandleNewState(int newstate, const EventImp *evt, const char *txt);
+
+protected:
+    /// Is called continously to execute actions in the current state
+    virtual int Execute() { return fCurrentState; }
+    /// Is called when a configuration event is to be processed (no transition of state)
+    //virtual int Configure(const Event &) { return kSM_FatalError; }
+    /// Is called when a transition change event is to be processed (from one state to another) is received
+    //virtual int Transition(const Event &) { return kSM_FatalError; }
+
+private:
+    virtual EventImp *CreateEvent(const std::string &name, const std::string &fmt) = 0;
+    virtual EventImp *CreateService(const std::string &);
+
+    virtual void Lock() { }
+    virtual void UnLock() { }
+
+    int Wrapper(const std::function<int(const EventImp &)> &f, const EventImp &imp)
+    {
+        const int rc = f(imp);
+        return rc==kSM_KeepState ? GetCurrentState() : rc;
+    }
+
+protected:
+
+    bool HandleEvent(const EventImp &evt);
+
+    /// This is an internal function to do some action in case of
+    /// a state change, like updating the corresponding service.
+    virtual std::string SetCurrentState(int state, const char *txt="", const std::string &cmd="");
+
+    EventImp &AddEvent(const std::string &name, const std::string &states, const std::string &fmt);
+    EventImp &AddEvent(const std::string &name, int s1=-1, int s2=-1, int s3=-1, int s4=-1, int s5=-1);
+    EventImp &AddEvent(const std::string &name, const std::string &fmt, int s1=-1, int s2=-1, int s3=-1, int s4=-1, int s5=-1);
+
+    virtual bool AddStateName(const int state, const std::string &name, const std::string &doc="");
+
+    void SetDefaultStateNames();
+
+public:
+    StateMachineImp(std::ostream &out=std::cout, const std::string &name="");
+    ~StateMachineImp();
+
+    std::function<int(const EventImp &)> Wrap(const std::function<int(const EventImp &)> &func)
+    {
+        return bind(&StateMachineImp::Wrapper, this, func, std::placeholders::_1);
+    }
+
+    const std::string &GetName() const { return fName; }
+
+    EventImp &Subscribe(const std::string &name);
+    void Unsubscribe(EventImp *evt);
+
+    /// return the current state of the machine
+    int GetCurrentState() const { return fCurrentState; }
+
+    void SetReady()    { SetCurrentState(kSM_Ready, "set manually");    }
+    void SetNotReady() { SetCurrentState(kSM_NotReady, "set manually"); }
+
+    /// Start the mainloop
+    virtual int Run(bool dummy);
+    int Run() { return Run(false); }
+
+    /// Request to stop the mainloop
+    virtual void Stop(int code=0);
+
+    /// Used to check if the main loop is already running or still running
+    bool IsRunning() const { return fRunning; }
+
+    /// Used to enable or disable buffering of events outside of the main loop
+    void EnableBuffer(bool b=true) { fBufferEvents=b; }
+
+    /// Post an event to the event queue
+    bool PostEvent(std::ostream &lout, const std::string &str);
+    bool PostEvent(const std::string &evt) { return PostEvent(std::cout, evt); }
+    bool PostEvent(const EventImp &evt);
+    bool PostEvent(const EventImp &evt, const char *ptr, size_t siz);
+
+    // Event handling
+    bool HasEvent(const EventImp *cmd);
+    EventImp *FindEvent(const std::string &evt);
+
+    bool IsQueueEmpty() const { return fEventQueue.empty(); }
+
+    //const std::vector<EventImp*> &GetListOfEvents() const { return fListOfEvents; }
+    const std::vector<std::string> GetEventNames();
+
+    void PrintListOfEvents(std::ostream &out, const std::string &evt="");
+    void PrintListOfEvents(const std::string &str="");
+
+    void PrintListOfAllowedEvents(std::ostream &out);
+    void PrintListOfAllowedEvents();
+
+    void PrintListOfStates(std::ostream &out) const;
+    void PrintListOfStates() const;
+
+
+    int GetStateIndex(const std::string &name) const;
+    bool HasState(int index) const;
+
+    const std::string GetStateName(int state) const;
+    const std::string GetStateName() const { return GetStateName(fCurrentState); }
+
+    const std::string GetStateDesc(int state) const;
+    const std::string GetStateDesc() const { return GetStateDesc(fCurrentState); }
+
+    const std::string GetStateDescription(int state) const;
+    const std::string GetStateDescription() const { return GetStateDescription(fCurrentState); }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn StateMachineImp::Execute()
+
+This is what the state machine is doing in a certain state
+continously. In an idle state this might just be doing nothing.
+
+In the tracking state of the drive system this might be sending
+new command values to the drive based on its current position.
+
+The current state of the state machine can be accessed by GetCurrentState()
+
+@returns
+   Usually it should just return the current state. However, sometimes
+   execution might lead to a new state, e.g. when a hardware error
+   is detected. In this case a new state can be returned to put the state
+   machine into a different state. Note, that the function is responsible
+   of doing all actions connected with the state change itself.
+   If not overwritten it returns the current status.
+
+**/
+// ***************************************************************************
+/** @fn StateMachineImp::Configure(const Event &evt)
+
+This function is called when a configuration event is to be processed.
+
+The current state of the state machine is accessible via GetCurrentState().
+
+The issued event and its corresponding data is accessible through
+evn. (see Event and DimEvent for details) Usually such an event
+will not change the state. In this case fCurrentState will be returned.
+However, to allow the machine to go into an error state it is possible
+to change the state by giving a different return value. When the
+Configure function is called the validity of the state transition has
+already been checked.
+
+@param evt
+   A reference to an Event object with the event which should
+   be processed. Note that the cmd-object will get deleted after the
+   function has returned.
+
+@returns
+   Usually it should just return the current state. However, sometimes
+   a configuration command which was not intended to change the state
+   has to change the state, e.g. to go to an error state. Return any
+   other state than GetCurrentState() can put the state machine into
+   a different state.  Note, that the function is responsible
+   of doing all actions connected with the state change itself.
+   If not overwritten it returns kSM_FatalError.
+
+**/
+// ***************************************************************************
+/** @fn StateMachineImp::Transition(const Event &evt)
+
+This function is called if a state transision was requested.
+
+The current state of the state machine is accessible via GetCurrentState().
+
+The new state is accessible via evt.GetTargetState().
+
+The event and its corresponding data is accessible through evt.
+(see DimCommand and DimEvent for details) If the transition was
+successfull the new status should be returned. If it was unsuccessfull
+either the old or any other new status will be returned.
+
+When the Transition function is called the validity of the state
+transition has already been checked.
+
+@param evt
+   A reference to an Event object with the event which should
+   be processed. Note that the cmd-object will get deleted after the
+   function has returned.
+
+@returns
+   Usually it should return the new state. However, sometimes
+   a transition command might has to change the state to a different
+   state than the one requested (e.g. an error has occured) In this
+   case it is also allowed to return a different state.  Note, that the
+   function is responsible of doing all actions connected with the
+   state change itself.
+   If not overwritten it returns kSM_FatalError.
+
+**/
+// ***************************************************************************
Index: branches/FACT++_part_filenames/src/Time.cc
===================================================================
--- branches/FACT++_part_filenames/src/Time.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/Time.cc	(revision 18732)
@@ -0,0 +1,481 @@
+// **************************************************************************
+/** @class Time
+
+@brief Adds some functionality to boost::posix_time::ptime for our needs
+
+This is basically a wrapper around boost::posix_time::ptime which is made
+to adapt the functionality to our needs. Time can store the current
+data and time with a precision up to nanoseconds if provided by the
+undrlaying system, otherwise microsecond precision is used.
+
+It main purpose is to provide needed constructors and simplyfy the
+conversion of dates and times from and to a string/stream.
+
+Note that posix_time (as Posix times have) has a limited range. You cannot
+use it for example for very early years of the last century.
+
+@section Examples
+
+ - An example can be found in \ref time.cc
+
+@section References
+
+ - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">BOOST++ date_time (V1.45.0)</A>
+
+**/
+// **************************************************************************
+#include "Time.h"
+
+#ifdef HAVE_LIBNOVA
+#include "../externals/nova.h"
+#endif
+
+using namespace std;
+using namespace boost::posix_time;
+
+const boost::gregorian::date Time::fUnixOffset(1970, 1, 1);
+
+const Time Time::None(Time::none);
+
+// strftime
+const _time_format Time::reset  = 0;
+const _time_format Time::def    = "%c";
+const _time_format Time::std    = "%x %X%F";
+const _time_format Time::sql    = "%Y-%m-%d %H:%M:%S.%f";
+const _time_format Time::ssql   = "%Y-%m-%d %H:%M:%S";
+const _time_format Time::iso    = "%Y-%m-%dT%H:%M:%S%F%q";
+const _time_format Time::magic  = "%Y %m %d %H %M %S %f";
+const _time_format Time::smagic = "%Y %m %d %H %M %S";
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object with either UTC or local time, or without any
+//! particular time.
+//!
+//! @param typ
+//!    enum as defined in Time::init_t
+//
+Time::Time(enum init_t typ)
+{
+    switch (typ)
+    {
+    case utc:
+        *this = microsec_clock::universal_time();
+        break;
+    case local:
+        *this = microsec_clock::local_time();
+        break;
+    case none:
+        break;
+    }
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object with a date_time::special_value, e.g.
+//!
+//!  - neg_infin
+//!  - pos_infin
+//!  - not_a_date_time
+//!  - max_date_time
+//!  - min_date_time
+//!
+//!
+//! @param val
+//!    date_time::special_value
+//
+Time::Time(const boost::date_time::special_values &val) : ptime(val)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object from seconds since 1970/1/1 and number of
+//! milliseconds, as for example returned by gettimeofday()
+//!
+//! @param tm
+//!    seconds since 1970/1/1
+//!
+//! @param millisec
+//!    number of milliseconds
+//
+Time::Time(const time_t &tm, const suseconds_t &usec)
+: ptime(fUnixOffset, time_duration(0, 0, tm, usec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object from a struct timeval.
+//!
+//! @param tv
+//!    struct timeval
+//!
+Time::Time(const timeval &tv)
+: ptime(fUnixOffset, time_duration(0, 0, tv.tv_sec, tv.tv_usec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time from a date and time.
+//!
+//! @param year, month, day, hh, mm, ss, microsec
+//!    A full date and time down to microsecond precision. From the end
+//!    arguments can be omitted.
+//!
+Time::Time(short year, unsigned char month, unsigned char day,
+           unsigned char hh, unsigned char mm, unsigned char ss, unsigned int microsec)
+// Last argument is fractional_seconds ( correct with num_fractional_digits() )
+: ptime(boost::gregorian::date(year, month, day),
+        time_duration(hh, mm, ss, microsec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the Time object to a given MJD. Note that this involves
+//! conversion from double. So converting forth and back many many
+//! times might results in drifts.
+//!
+//! @param mjd
+//!    Modified Julian Date
+//!
+void Time::Mjd(double mjd)
+{
+    if (mjd > 2400000.5)
+        mjd -= 2400000.5;
+
+    // Convert MJD to ticks since offset
+    mjd -= 40587;
+    mjd *= 24*60*60*time_duration::ticks_per_second();
+
+    *this = ptime(fUnixOffset, time_duration(0, 0, 0, mjd));
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the seconds of the day including the fractional seconds.
+//!
+double Time::SecondsOfDay() const
+{
+    const time_duration tod = time_of_day();
+
+    const double frac = double(tod.fractional_seconds())/time_duration::ticks_per_second();
+    const double sec  = tod.total_seconds()+frac;
+
+    return sec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the current MJD. Note that this involves
+//! conversion to double. So converting forth and back many many
+//! times might results in drifts.
+//!
+//! @returns
+//!    Modified Julian Date
+//!
+double Time::Mjd() const
+{
+    return date().modjulian_day()+SecondsOfDay()/(24*60*60);
+
+    /*
+     const time_duration mjd = *this - ptime(fUnixOffset);
+     const double sec = mjd.total_seconds()+mjd.fractional_seconds()/1e6;
+     return sec/(24*60*60)+40587;
+     */
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns seconds since 1970/1/1
+//
+double Time::UnixTime() const
+{
+    return (date().modjulian_day()-40587)*24*60*60 + SecondsOfDay();
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns days since 1970/1/1
+//
+double Time::UnixDate() const
+{
+    return (date().modjulian_day()-40587) + SecondsOfDay()/(24*60*60);
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns seconds since 1970/1/1
+//
+time_t Time::Time_t() const
+{
+    return (date().modjulian_day()-40587)*24*60*60 + time_of_day().total_seconds();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the time in a format needed for root's TAxis
+//!
+double Time::RootTime() const
+{
+    return (date().modjulian_day()-49718)*24*60*60 + SecondsOfDay();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a string with the contents of the Time object formated
+//! as defined in format.
+//!
+//! @param format
+//!    format description of the string to be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+//! @returns
+//!    A string with the time formatted as requested. Note some special
+//!    strings might be returned in case the time is invalid.
+//
+string Time::GetAsStr(const char *format) const
+{
+    stringstream out;
+    out << Time::fmt(format) << *this;
+    return out.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     a human readable string which complies with ISO 8601, in the
+//!    "CCYY-MM-DDThh:mm:ss.f"
+//
+string Time::Iso() const
+{
+    stringstream out;
+    out << Time::iso << *this;
+    return out.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the time of the Time object to a time corresponding to
+//! the one given as argument. It is evaluated according to the given
+//! format.
+//!
+//! @param str
+//!    The time as a string which should be converted to the Time object
+//!
+//! @param format
+//!    format description of the string to be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+void Time::SetFromStr(const string &str, const char *format)
+{
+    // FIXME: exception handline
+    stringstream stream;
+    stream << str;
+    stream >> Time::fmt(format) >> *this;
+}
+
+string Time::MinutesTo(const Time &time) const
+{
+    ostringstream str;
+    if (time>*this)
+        str << time-*this;
+    else
+        str << *this-time;
+    return str.str().substr(0, 5);
+}
+
+string Time::SecondsTo(const Time &time) const
+{
+    ostringstream str;
+    if (time>*this)
+        str << time-*this;
+    else
+        str << *this-time;
+    return str.str().substr(str.str().substr(0, 3)=="00:" ? 3 : 0, 5);
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     The time of the previous sun-rise, relative to given horizon in degree,
+//!     for the coordinates of the ORM, La Palma.
+//!     if libnova was not compiled in, it will return the next noon.
+//!
+//!  @throws
+//!     a runtime_error exception is thrown if the calculation of the sun-rise
+//!     by libnova fails (this would happen if libnova thinks the sun is
+//!     circumpolar which should never happen at La Palma)
+//
+Time Time::GetPrevSunRise(double horizon) const
+{
+#ifdef HAVE_LIBNOVA
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst_horizon(JD()-0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    if (Time(sun_day.rise)<*this)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst_horizon(JD()-1.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    return Time(sun_day.rise);
+#else
+    return Time(floor(Mjd()-0.5)+0.5);
+#endif
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     The time of the next sun-rise, relative to given horizon in degree,
+//!     for the coordinates of the ORM, La Palma.
+//!     if libnova was not compiled in, it will return the next noon.
+//!
+//!  @throws
+//!     a runtime_error exception is thrown if the calculation of the sun-rise
+//!     by libnova fails (this would happen if libnova thinks the sun is
+//!     circumpolar which should never happen at La Palma)
+//
+Time Time::GetNextSunRise(double horizon) const
+{
+#ifdef HAVE_LIBNOVA
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst_horizon(JD()-0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    if (Time(sun_day.rise)>=*this)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst_horizon(JD()+0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    return Time(sun_day.rise);
+#else
+    return Time(floor(Mjd()+0.5))+0.5;
+#endif
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls GetPrevSunRise(LN_SOLAR_STANDART_HORIZON)
+//
+Time Time::GetPrevSunRise() const
+{
+    return GetPrevSunRise(LN_SOLAR_STANDART_HORIZON);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls GetNextSunRise(LN_SOLAR_STANDART_HORIZON)
+//
+Time Time::GetNextSunRise() const
+{
+    return GetNextSunRise(LN_SOLAR_STANDART_HORIZON);
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     Returns an int corresponding to the current sun-cycle, that means
+//!     the day of the last sun-rise w.r.t. this Time.
+//!     YYYYMMDD, e.g. 20111224 for Christmas eve 2011
+//!
+//! @remark
+//!     Before March 30th 2013, 12:00 noon was the reference and the
+//!     returned value belonged to the day of sun-set within the
+//!     24h period between two noon's.
+//
+uint32_t Time::NightAsInt() const
+{
+    const Time tm = GetPrevSunRise();
+    return tm.Y()*10000 + tm.M()*100 + tm.D();
+}
+
+// --------------------------------------------------------------------------
+//
+//! A stream manipulator which sets the streams Time output format
+//! as defined in the argument.
+//!
+//! @param format
+//!    format description of the manipulator be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+//! @returns
+//!    a stream manipulator for the given format
+//!
+const _time_format Time::fmt(const char *format)
+{
+    return format;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the locale discription of the stream (the way how a time is
+//! output) to the format defined by the given manipulator.
+//!
+//! Example:
+//! \code
+//!    Time t();
+//!    cout << Time::fmt("%Y:%m:%d %H:%M:%S.%f") << t << endl;
+//! \endcode
+//!
+//! @param out
+//!    Reference to the stream
+//!
+//! @param f
+//!    Time format described by a manipulator
+//!
+//! @returns
+//!    A reference to the stream
+//!
+ostream &operator<<(ostream &out, const _time_format &f)
+{
+    const locale loc(locale::classic(),
+                     f.ptr==0 ? 0 : new time_facet(f.ptr));
+
+    out.imbue(loc);
+
+    return out;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the locale discription of the stream (the way how a time is
+//! input) to the format defined by the given manipulator.
+//!
+//! Example:
+//! \code
+//!    stringstream s;
+//!    s << "09.09.1974 21:59";
+//!
+//!    Time t;
+//!    s >> Time::fmt("%d.%m.%Y %H:%M") >> t;
+//! \endcode
+//!
+//! @param in
+//!    Reference to the stream
+//!
+//! @param f
+//!    Time format described by a manipulator
+//!
+//! @returns
+//!    A reference to the stream
+//!
+istream &operator>>(istream &in, const _time_format &f)
+{
+    const locale loc(locale::classic(),
+                     f.ptr==0 ? 0 : new time_input_facet(f.ptr));
+
+    in.imbue(loc);
+
+    return in;
+}
Index: branches/FACT++_part_filenames/src/Time.h
===================================================================
--- branches/FACT++_part_filenames/src/Time.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Time.h	(revision 18732)
@@ -0,0 +1,128 @@
+#ifndef FACT_Time
+#define FACT_Time
+
+#include <boost/date_time/local_time/local_time.hpp>
+
+// **************************************************************************
+/** @class _time_format
+
+@brief Helper to manipulate the input and output format of a time in a stream
+
+This class represents a stream manipulator. It is used to change the input
+or output format of a Time (or boost::posix_time) object to and from a
+stream.
+
+**/
+// **************************************************************************
+class _time_format
+{
+    friend std::ostream &operator<<(std::ostream &out, const _time_format &f);
+    friend std::istream &operator>>(std::istream &in,  const _time_format &f);
+private:
+    const char *ptr; /// pointer given to the iostreams
+
+public:
+    /// initialize ptr with what should be passed to the iostreams
+    _time_format(const char *txt) : ptr(txt) { }
+    std::string str() const { return ptr; }
+};
+
+class Time : public boost::posix_time::ptime
+{
+public:
+    /// A none-time, this can be used as a simple representation of an invalid time
+    static const Time None;
+
+    /// A stream manipulator to set the output/input format
+    static const _time_format fmt(const char *txt=0);
+
+    static const _time_format reset;   /// Remove the format description from the stream
+    static const _time_format def;     /// set to format to the locale default
+    static const _time_format std;     /// set to format to the iso standard
+    static const _time_format sql;     /// set to format to the sql format
+    static const _time_format ssql;    /// set to format to the sql format (without the fraction of seconds)
+    static const _time_format iso;     /// set to format to the extended iso standard
+    static const _time_format magic;   /// set to format to the MAGIC report format
+    static const _time_format smagic;  /// set to format to the MAGIC report format (without the fraction of seconds)
+
+    /// Enum used in the instantisation of the class to change the inititalisation value
+    enum init_t
+    {
+        none,  ///< Do not initialize the time
+        utc,   ///< Initialize with UTC
+        local  ///< Initialize with local time
+    };
+
+public:
+    /// Points to the famous 1/1/1970, the standard offset for unix times
+    const static boost::gregorian::date fUnixOffset;
+
+public:
+    // Constructors
+    Time(enum init_t type=utc);
+    Time(const boost::date_time::special_values &val);
+    Time(const time_t &tm, const suseconds_t &us);
+    Time(const timeval &tm);
+    Time(const ptime &pt) : boost::posix_time::ptime(pt) { }
+    Time(short year, unsigned char month, unsigned char day,
+         unsigned char h=0, unsigned char m=0, unsigned char s=0,
+         unsigned int us=0);
+    Time(double mjd) { Mjd(mjd); }
+    Time(const std::string &str)
+    {
+        std::stringstream stream;
+        stream << str;
+        stream >> Time::iso >> *this;
+    }
+
+    // Convesion from and to a string
+    std::string GetAsStr(const char *fmt="%Y-%m-%d %H:%M:%S") const;
+    void SetFromStr(const std::string &str, const char *fmt="%Y-%m-%d %H:%M:%S");
+
+    std::string Iso() const;
+
+    // Conversion to and from MJD
+    void Mjd(double mjd);
+    double Mjd() const;
+    double JD() const { return Mjd()+2400000.5; }
+
+    // Check validity
+    bool IsValid() const   { return *this != boost::date_time::not_special; }
+    bool operator!() const { return *this == boost::date_time::not_special; }
+
+    // Getter
+    unsigned short Y() const  { return date().year(); }
+    unsigned short M() const  { return date().month(); }
+    unsigned short D() const  { return date().day(); }
+
+    unsigned short h() const  { return time_of_day().hours(); }
+    unsigned short m() const  { return time_of_day().minutes(); }
+    unsigned short s() const  { return time_of_day().seconds(); }
+
+    unsigned int   ms() const { return time_of_day().total_milliseconds()%1000; }
+    unsigned int   us() const { return time_of_day().total_microseconds()%1000000; }
+
+    double SecondsOfDay() const;
+
+    time_t Time_t() const;
+    double UnixTime() const;
+    double UnixDate() const;
+    double RootTime() const;
+    uint64_t JavaDate() const { return IsValid() ? uint64_t(UnixTime()*1000) : 0; }
+
+    std::string MinutesTo(const Time & = Time()) const;
+    std::string SecondsTo(const Time & = Time()) const;
+
+    Time GetPrevSunRise(double horizon) const;
+    Time GetNextSunRise(double horizon) const;
+
+    Time GetPrevSunRise() const;
+    Time GetNextSunRise() const;
+
+    uint32_t NightAsInt() const;
+};
+
+std::ostream &operator<<(std::ostream &out, const _time_format &f);
+std::istream &operator>>(std::istream &in,  const _time_format &f);
+
+#endif
Index: branches/FACT++_part_filenames/src/Timers.h
===================================================================
--- branches/FACT++_part_filenames/src/Timers.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/Timers.h	(revision 18732)
@@ -0,0 +1,43 @@
+class Timers
+{
+private:
+    std::ostream &fOut;
+
+    Time fT[4];
+
+    int fSum[2];
+    int fCnt;
+
+    int fNwait;
+
+public:
+    Timers(std::ostream &out=std::cout) : fOut(out) { fSum[0] = fSum[1] = fCnt = fNwait = 0;/*fT[0] = Time(); fT[1] = Time(); fT[2] = Time(); fT[3] = Time();*/ }
+
+    void SetT() { fT[1] = Time(); }
+
+    void Proc(bool cond, int maxwait=5000, int interval=10000)
+    {
+        fT[2] = Time();
+
+        fSum[0] += (fT[2]-fT[1]).total_microseconds();
+        fSum[1] += (fT[1]-fT[3]).total_microseconds();
+        fCnt++;
+
+        if (cond)
+        {
+            usleep(std::max(maxwait-(int)(fT[2]-fT[3]).total_microseconds(), 1));
+            fNwait++;
+        }
+
+        const int diff = (fT[2]-fT[0]).total_milliseconds();
+        if (diff > interval)
+        {
+            fOut << "Rate(10s):  poll=" << fSum[0]/fCnt << "us   exec=" << fSum[1]/fCnt << "us   (" << fNwait <<"/" << fCnt << ")" << std::endl;
+
+            fSum[0] = fSum[1] = fCnt = fNwait = 0;
+            fT[0] = Time();
+        }
+
+        fT[3] = Time();
+    }
+};
Index: branches/FACT++_part_filenames/src/WindowLog.cc
===================================================================
--- branches/FACT++_part_filenames/src/WindowLog.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/WindowLog.cc	(revision 18732)
@@ -0,0 +1,406 @@
+// **************************************************************************
+/** @class WindowLog
+
+@brief A C++ ostream to an ncurses window supporting attributes and colors
+
+@section References
+
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+@todo
+   improve docu
+
+
+**/
+// **************************************************************************
+#include "WindowLog.h"
+
+#include <sstream>
+#include <iostream>
+#include <algorithm>
+
+#include <curses.h>
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Delete the contents of the backlog
+//
+void WindowLog::EmptyBacklog()
+{
+    fMuxBacklog.lock();
+    fBacklog.clear();
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Display the backlog. If fWindow is NULL then it is flushed to cout
+//! otherwise to the window (including the colors and attributes)
+//!
+//! Access to cout, the backlog and the window is encapsulated in mutices.
+//
+void WindowLog::Display(bool empty)
+{
+    if (!fWindow)
+    {
+        fMuxBacklog.lock();
+        fMuxCout.lock();
+
+        cout.write(fBacklog.data(), fBacklog.size());
+        cout.flush();
+
+        if (empty)
+            fBacklog.clear();
+
+        fMuxCout.unlock();
+        fMuxBacklog.unlock();
+        return;
+    }
+
+    const int w = getmaxx(fWindow);
+
+    fMuxBacklog.lock();
+    fMuxWindow.lock();
+    //vector<char>::iterator p0 = fBacklog.begin();
+
+    int lines = 0;
+    int x     = 0;
+
+    for (unsigned int i=0; i<fBacklog.size(); i++)
+    {
+        if (fAttributes.find(i)!=fAttributes.end())
+            fAttributes[i]==-1 ? wattrset(fWindow, 0) : wattron(fWindow, fAttributes[i]);
+
+        if (fBacklog[i]=='\n')
+        {
+            // The attribute is added to the backlog in WriteBuffer
+            //wattrset(fWindow, 0);
+            lines += x/w + 1;
+            x=0;
+        }
+        wprintw(fWindow, "%c", fBacklog[i]);
+        x++;
+    }
+
+    if (empty)
+        fBacklog.clear();
+
+    fMuxWindow.unlock();
+    fMuxBacklog.unlock();
+
+    lines += x/w;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Open a log-file into which any of the following output is written. If a
+//! log-file is alraedy open it is closed.
+//! before the new file is opened or an old one closed the current buffer
+//! is flushed.
+//!
+//! @param filename
+//!    The filename of the file to open
+//!
+//! @returns
+//!    Whether the log-file stream is open or not
+//
+bool WindowLog::OpenLogFile(const string &filename, bool append)
+{
+    fMuxFile.lock();
+    flush();
+
+    if (fLogFile.is_open())
+        fLogFile.close();
+
+    fLogFile.open(filename, append ? ios::app|ios::out : ios::out);
+    if (append)
+        fLogFile << '\n';
+
+    fMuxFile.unlock();
+
+    return fLogFile.is_open();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Close an open log-file
+//
+void WindowLog::CloseLogFile()
+{
+    fMuxFile.lock();
+    fLogFile.close();
+    fMuxFile.unlock();
+}
+
+bool WindowLog::WriteFile(const string &sout)
+{
+    fMuxFile.lock();
+    fLogFile << sout;
+    fLogFile.flush();
+    fMuxFile.unlock();
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the function which writes the stream physically to a device.
+//! If you want to add a new device this must be done here.
+//!
+//! If the backlog is enabled, the contents are put into the backlog.
+//! if fWindow is NULL the contents are flushed to cout, otherwise
+//! to the window defined by fWindow.
+//!
+//! In addition the contents are flushed to the log-file if open.
+//! If fIsNull is true any output on the screen (cout or fWindow) is
+//! suppressed.
+//!
+//! @todo
+//!    Truncate the backlog
+//
+void WindowLog::WriteBuffer()
+{
+    // Store the number of characters in the buffer which should be flushed
+    const int len = fPPtr - fBase;
+
+    // restart writing to the buffer at its first char
+    fPPtr = fBase;
+
+    // If the is nothing to output, we are done
+    if (len<=0)
+        return;
+
+    // FIXME: Truncate backlog!
+
+    // If fWindow is set, output everything to the window, otherwise
+    // to cout
+    if (!fIsNull)
+    {
+        if (fWindow)
+        {
+            fMuxWindow.lock();
+            if (!fIsNull)
+            {
+                const string sout = string(fBase, len);
+                wprintw(fWindow, "%s", sout.c_str());
+            }
+            // If the stream got flushed due to a line break
+            // reset all attributes
+            if (fBase[len-1]=='\n')
+                wattrset(fWindow, 0);
+            fMuxWindow.unlock();
+        }
+        else
+        {
+            fMuxCout.lock();
+            cout.write(fBase, len);// << sout;
+            // If the stream got flushed due to a line break
+            // reset all attributes
+            if (fBase[len-1]=='\n')
+                cout << "\033[0m";
+            cout.flush();
+            fMuxCout.unlock();
+        }
+    }
+
+    // Add the buffer to the backlog
+    if (fEnableBacklog)
+    {
+        fMuxBacklog.lock();
+        fBacklog.insert(fBacklog.end(), fBase, fBase+len);
+
+        // If the stream got flushed due to a line break
+        // add the reset of all attributes to the backlog
+        if (fBase[len-1]=='\n')
+        {
+            if (!fWindow)
+            {
+                const char *reset = "\033[0m";
+                fBacklog.insert(fBacklog.end(), reset, reset+4);
+
+            }
+            else
+                fAttributes[fBacklog.size()] = -1;
+        }
+        fMuxBacklog.unlock();
+    }
+
+    fQueueFile.emplace(fBase, len);
+    /*
+    // Output everything also to the log-file
+    fMuxFile.lock();
+    fLogFile << sout;
+    //fLogFile.flush();
+    fMuxFile.unlock();
+    */
+    // If we are flushing because of an EOL, we reset also all attributes
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is called to flush the buffer of the streaming devices
+//
+int WindowLog::sync()
+{
+    WriteBuffer();
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function comes from streambuf and should output the buffer to
+//! the device (flush, endl) or handle a buffer overflow (too many chars)
+//! If a real overflow happens i contains the next chars which doesn't
+//! fit into the buffer anymore.If the buffer is not really filled,
+//! i is EOF(-1).
+//
+int WindowLog::overflow(int i) // i=EOF means not a real overflow
+{
+    *fPPtr++ = (char)i;
+
+    if (fPPtr == fEPtr)
+        WriteBuffer();
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the size of the backlog buffer as string.
+//!
+//! @returns
+//!     Size of the backlog as a string, e.g. "1k"
+//
+string WindowLog::GetSizeStr() const
+{
+    int s = GetSizeBacklog()/1000;
+    if (s==0)
+        return "0";
+
+    char u = 'k';
+    if (s>999)
+    {
+        s/=1000;
+        u = 'M';
+    }
+
+    ostringstream str;
+    str << s << u;
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     the ANSI code corresponding to the attributes
+//
+string WindowLog::GetAnsiAttr(int m)
+{
+    if (m==kReset || m==kDefault)
+        return "\033[0m";
+
+    string rc;
+
+    if ((m&COLOR_PAIR(kRed)    )==COLOR_PAIR(kRed)    )  rc += "\033[31m";
+    if ((m&COLOR_PAIR(kGreen)  )==COLOR_PAIR(kGreen)  )  rc += "\033[32m";
+    if ((m&COLOR_PAIR(kYellow) )==COLOR_PAIR(kYellow) )  rc += "\033[33m";
+    if ((m&COLOR_PAIR(kBlue)   )==COLOR_PAIR(kBlue)   )  rc += "\033[34m";
+    if ((m&COLOR_PAIR(kMagenta))==COLOR_PAIR(kMagenta))  rc += "\033[35m";
+    if ((m&COLOR_PAIR(kCyan)   )==COLOR_PAIR(kCyan)   )  rc += "\033[36m";
+    if ((m&COLOR_PAIR(kWhite)  )==COLOR_PAIR(kWhite)  )  rc += "\033[0m\033[1m";
+
+    if ((m&kBold     )==kBold     )  rc += "\033[1m";
+    if ((m&kDim      )==kDim      )  rc += "\033[2m";
+    if ((m&kUnderline)==kUnderline)  rc += "\033[4m";
+    if ((m&kBlink    )==kBlink    )  rc += "\033[5m";
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add color to the stream according to the attribute. If fWindow is not
+//! set this is an ANSI color code, otherwise the window's output
+//! attributes are set.
+//! It is also added to the backlog. Access to the backlog is encapsulated
+//! into its mutex.
+//
+void WindowLog::AddColor(int m)
+{
+    const int col = COLOR_PAIR(m);
+
+    if (!fWindow)
+        // We don't have to flush here, because the attributes are simply
+        // part of the stream
+        *this << GetAnsiAttr(col);
+    else
+    {
+        // Before we change the attributes we have to flush the screen
+        // otherwise we would have to buffer them until we flush the
+        // contents
+        flush();
+        wattron(fWindow, col);
+    }
+
+    fMuxBacklog.lock();
+    fAttributes[fBacklog.size()] |= col;
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add attributes to the stream according to the attribute. If fWindow is
+//! not set this is an ANSI code, otherwise the window's output
+//! attributes are set.
+//! It is also added to the backlog. Access to the backlog is encapsulated
+//! into its mutex.
+//
+void WindowLog::AddAttr(int m)
+{
+    if (!fWindow)
+        // We don't have to flush here, because the attributes are simply
+        // part of the stream
+        *this << GetAnsiAttr(m);
+    else
+    {
+        // Before we change the attributes we have to flush the screen
+        // otherwise we would have to buffer them until we flush the
+        // contents
+        flush();
+        m==kReset ? wattrset(fWindow, 0) : wattron(fWindow, m);
+    }
+
+    fMuxBacklog.lock();
+    m==kReset ?
+        fAttributes[fBacklog.size()] = -1 :
+        fAttributes[fBacklog.size()] |= m;
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+std::ostream &operator<<(std::ostream &lout, WindowLogColor m)
+{
+    WindowLog *log=dynamic_cast<WindowLog*>(lout.rdbuf());
+    if (log)
+        log->AddColor(m);
+    return lout;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m)
+{
+    WindowLog *log=dynamic_cast<WindowLog*>(lout.rdbuf());
+    if (log)
+        log->AddAttr(m);
+    return lout;
+}
Index: branches/FACT++_part_filenames/src/WindowLog.h
===================================================================
--- branches/FACT++_part_filenames/src/WindowLog.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/WindowLog.h	(revision 18732)
@@ -0,0 +1,148 @@
+#ifndef FACT_WindowLog
+#define FACT_WindowLog
+
+#include <map>
+#include <mutex>
+#include <vector>
+#include <fstream>
+
+#include <ncurses.h> // A_NORMAL etc
+
+#include "../externals/Queue.h"
+
+/// Stream manipulators to change the color of a WindowLog stream
+enum WindowLogColor
+{
+    kDefault = 0,  ///< Set default colors
+    kRed     = 1,  ///< Set color Red
+    kGreen   = 2,  ///< Set color Green
+    kYellow  = 3,  ///< Set color Yellow
+    kBlue    = 4,  ///< Set color Blue
+    kMagenta = 5,  ///< Set color Magenta
+    kCyan    = 6,  ///< Set color Cyan
+    kWhite   = 7,  ///< Set color White
+};
+
+/// Stream manipulators to change the attributes of a WindowLog stream
+enum WindowLogAttrs
+{
+    kReset      = -1,            ///< Reset all attributes
+    kNormal     = A_NORMAL,      ///< Set attribute Normal
+    kHighlight  = A_STANDOUT,    ///< Set attribute Highlight
+    kUnderline  = A_UNDERLINE,   ///< Set attribute Underline
+    kReverse    = A_REVERSE,     ///< Set attribute Reverse
+    kBlink      = A_BLINK,       ///< Set attribute Blink
+    kDim        = A_DIM,         ///< Set attribute Dim
+    kBold       = A_BOLD,        ///< Set attribute Bold
+    kProtect    = A_PROTECT,     ///< Set attribute Protect
+    kInvisible  = A_INVIS,       ///< Set attribute Invisible
+    kAltCharset = A_ALTCHARSET,  ///< Set attribute Alternative charset
+};
+/*
+enum WindowLogManip
+{
+    kLogOn   = 1,
+    kLogOff  = 2,
+    kNullOn  = 3,
+    kNullOff = 4,
+};
+*/
+class WindowLog : public std::streambuf, public std::ostream
+{
+    friend std::ostream &operator<<(std::ostream &lout, WindowLogColor m);
+    friend std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m);
+    //friend std::ostream &operator<<(std::ostream &lout, WindowLogManip m);
+private:
+    static const int fgBufferSize = 160;
+
+    char        fBuffer;               ///
+    char        fBase[fgBufferSize+1]; /// Buffer to store the data in
+    char       *fPPtr;                 /// Pointer to present position in buffer
+    const char *fEPtr;                 /// Pointer to end of buffer
+
+    WINDOW     *fWindow;               /// Pointer to an ncurses Window
+
+    std::vector<char>  fBacklog;       /// Backlog storage
+    std::map<int, int> fAttributes;    /// Storage for attributes (backlog)
+
+    std::ofstream fLogFile;    /// Stream for redirection to a log-file
+
+    bool fIsNull;              /// Switch to toggle off physical output to the screen
+    bool fEnableBacklog;       /// Switch to toggle storage in the backlog on or off
+
+    std::mutex fMuxBacklog;    /// Mutex securing backlog access
+    std::mutex fMuxFile;       /// Mutex securing file access
+    std::mutex fMuxCout;       /// Mutex securing output to cout
+    std::mutex fMuxWindow;     /// Mutex securing output to fWindow
+
+    Queue<std::string> fQueueFile;
+
+    static std::string GetAnsiAttr(int m);
+
+    void AddAttr(int m);
+    void AddColor(int m);
+
+    bool WriteFile(const std::string &);
+    void WriteBuffer();
+
+    int sync();
+    int overflow(int i); // i=EOF means not a real overflow
+
+public:
+    // --------------------------------------------------------------------------
+    //
+    //! Default constructor which initializes the streamer and sets the device
+    //! which is used for the output
+    //!
+    //! Switch on backlog
+    //! Switch on screen output
+    //
+    WindowLog() : std::ostream(this), fPPtr(fBase), fEPtr(fBase+fgBufferSize), fWindow(0), fIsNull(false), fEnableBacklog(true),
+        fQueueFile(std::bind(&WindowLog::WriteFile, this, std::placeholders::_1))
+    {
+        //fLogFile.rdbuf()->pubsetbuf(0,0); // Switch off buffering
+        setp(&fBuffer, &fBuffer+1);
+        *this << '\0';
+    }
+    WindowLog(WindowLog const& log) : std::ios(), std::streambuf(), std::ostream((std::streambuf*)&log), fWindow(log.fWindow), fIsNull(false), fEnableBacklog(true),
+        fQueueFile(bind(&WindowLog::WriteFile, this, std::placeholders::_1))
+    {
+        //fLogFile.rdbuf()->pubsetbuf(0,0); // Switch off buffering
+    }
+    ~WindowLog()
+    {
+        fQueueFile.wait(false);
+    }
+
+    /// Redirect the output to an ncurses WINDOW instead of cout
+    void SetWindow(WINDOW *w) { fWindow=w; }
+
+    /// Open a log-file
+    bool OpenLogFile(const std::string &filename, bool append=false);
+
+    /// Close a log-file
+    void CloseLogFile();
+
+    /// Display backlog
+    void Display(bool empty=false);
+
+    /// Empty backlog
+    void EmptyBacklog();
+
+    /// Get the current size of the backlog in bytes
+    size_t GetSizeBacklog() const { return fBacklog.size(); }
+    std::string GetSizeStr() const;
+
+    /// Switch on or off any physical output to the screen (cout or fWindow)
+    void SetNullOutput(bool n=true) { fIsNull=n; }
+    bool GetNullOutput() const { return fIsNull; }
+
+    /// Switch on or off any storage in the backlog
+    void SetBacklog(bool n=true) { fEnableBacklog=n; }
+    bool GetBacklog() const { return fEnableBacklog; }
+};
+
+std::ostream &operator<<(std::ostream &lout, WindowLogColor m);
+std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m);
+
+#endif
Index: branches/FACT++_part_filenames/src/agilentctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/agilentctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/agilentctrl.cc	(revision 18732)
@@ -0,0 +1,605 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+
+#include "tools.h"
+
+#include "HeadersAgilent.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace Agilent;
+
+// ------------------------------------------------------------------------
+
+class ConnectionAgilent : public Connection
+{
+public:
+    static string fMode;
+
+private:
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    uint16_t fInterval;
+
+    boost::asio::deadline_timer fTimeout;
+    boost::asio::deadline_timer fTimeoutPowerCycle;
+    boost::asio::streambuf fBuffer;
+
+    Data fData;
+
+    Time fLastReceived;
+    Time fLastCommand;
+
+protected:
+
+    virtual void UpdateDim(const Data &)
+    {
+    }
+
+    void RequestStatus()
+    {
+        if (IsConnected())
+            PostMessage(string("*IDN?\nvolt?\nmeas:volt?\nmeas:curr?\ncurr?\n"));
+
+        fTimeout.expires_from_now(boost::posix_time::seconds(fInterval));
+        fTimeout.async_wait(boost::bind(&ConnectionAgilent::HandleStatusTimer,
+                                        this, dummy::error));
+    }
+
+
+    void HandleStatusTimer(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Status request timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        RequestStatus();
+    }
+
+    void HandlePowerCycle(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Power cycle timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        SetPower(true);
+    }
+
+private:
+    void StartRead(int line=0)
+    {
+        ba::async_read_until(*this, fBuffer, "\n",
+                             boost::bind(&ConnectionAgilent::HandleReceivedData, this,
+                                         dummy::error, dummy::bytes_transferred, line+1));
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int line)
+    {
+
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (FTM).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+
+        if (fDebugRx)
+        {
+            Out() << kBold << "Received (" << bytes_received << ", " << fBuffer.size() << " bytes):" << endl;
+            Out() << "-----\n" << string(ba::buffer_cast<const char*>(fBuffer.data()), bytes_received) << "-----\n";
+        }
+
+        istream is(&fBuffer);
+
+        string str;
+        getline(is, str, '\n');
+
+        try
+        {
+            switch (line)
+            {
+            case 1:  Out() << "ID: " << str << endl; break;
+            case 2:  fData.fVoltageSet      = stof(str); break;
+            case 3:  fData.fVoltageMeasured = stof(str); break;
+            case 4:  fData.fCurrentMeasured = stof(str); break;
+            case 5:  fData.fCurrentLimit    = stof(str); break;
+            default:
+                return;
+            }
+        }
+        catch (const exception &e)
+        {
+            Error("String conversion failed for '"+str+" ("+e.what()+")");
+
+            // We need to synchronize the stream again
+            PostClose(true);
+            return;
+        }
+
+        if (line==5)
+        {
+            if (fIsVerbose)
+            {
+                Out() << "Voltage: " << fData.fVoltageMeasured << "V/" << fData.fVoltageSet   << "V\n";
+                Out() << "Current: " << fData.fCurrentMeasured << "A/" << fData.fCurrentLimit << "A\n" << endl;
+            }
+
+            UpdateDim(fData);
+
+            fLastReceived = Time();
+
+            line = 0;
+
+        }
+
+        StartRead(line);
+    }
+
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fBuffer.prepare(1000);
+
+        StartRead();
+        RequestStatus();
+    }
+
+public:
+
+    ConnectionAgilent(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fDebugRx(false), fTimeout(ioservice), fTimeoutPowerCycle(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    bool SetPower(bool on)
+    {
+        if (!IsConnected())
+            return false;
+
+        if (fLastCommand+boost::posix_time::seconds(59)>Time())
+        {
+            Error("Last power command within the last 59 seconds... ignored.");
+            return false;
+        }
+
+        PostMessage("outp "+string(on?"on":"off")+"\n*IDN?\nvolt?\nmeas:volt?\nmeas:curr?\ncurr?\n");
+        fLastCommand = Time();
+
+        // Stop any pending power cycling
+        fTimeoutPowerCycle.cancel();
+
+        return true;
+    }
+
+    void PowerCycle(uint16_t seconds)
+    {
+        if (!SetPower(false))
+            return;
+
+        fTimeoutPowerCycle.expires_from_now(boost::posix_time::seconds(seconds));
+        fTimeoutPowerCycle.async_wait(boost::bind(&ConnectionAgilent::HandlePowerCycle,
+                                                  this, dummy::error));
+    }
+
+    int GetState()
+    {
+        if (!IsConnected())
+            return State::kDisconnected;
+
+        if (fLastReceived+boost::posix_time::seconds(fInterval*2)<Time())
+            return State::kDisconnected;
+
+        if (fData.fCurrentMeasured<0)
+            return State::kConnected;
+
+        if (fData.fVoltageMeasured<0.1)
+            return State::kVoltageOff;
+
+        if (fData.fVoltageMeasured<fData.fVoltageSet-0.1)
+            return State::kVoltageLow;
+
+        if (fData.fVoltageMeasured>fData.fVoltageSet+0.1)
+            return State::kVoltageHigh;
+
+        return State::kVoltageOn;
+    }
+};
+
+string ConnectionAgilent::fMode;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimAgilent : public ConnectionAgilent
+{
+private:
+
+    DimDescribedService fDim;
+
+    void UpdateDim(const Data &data)
+    {
+        fDim.Update(data);
+    }
+
+public:
+    ConnectionDimAgilent(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionAgilent(ioservice, imp),
+        fDim("AGILENT_CONTROL_"+fMode+"/DATA", "F:1;F:1;F:1;F:1",
+             "|U_nom[V]: Nominal output voltage"
+             "|U_mes[V]: Measured output voltage"
+             "|I_max[A]: Current limit"
+             "|I_mes[A]: Measured current")
+    {
+        // nothing happens here.
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineAgilent : public StateMachineAsio<T>
+{
+private:
+    S fAgilent;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fAgilent.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fAgilent.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fAgilent.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fAgilent.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fAgilent.GetState();
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetPower(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetPower", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetPower(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int PowerCycle(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PowerCyle", 2))
+            return T::kSM_FatalError;
+
+        if (evt.GetShort()<60)
+        {
+            T::Warn("Power cycle delays of less than 60s not allowed.");
+            return T::GetCurrentState();
+        }
+
+        fAgilent.PowerCycle(evt.GetShort());
+
+        return T::GetCurrentState();
+    }
+
+
+public:
+    StateMachineAgilent(ostream &out=cout) :
+        StateMachineAsio<T>(out, "AGILENT_CONTROL_"+S::fMode), fAgilent(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                        "Agilent not connected via ethernet.");
+        T::AddStateName(State::kConnected, "Connected",
+                        "Ethernet connection to Agilent established, but not data received yet.");
+
+        T::AddStateName(State::kVoltageOff, "VoltageOff",
+                        "The measured output voltage is lower than 0.1V");
+        T::AddStateName(State::kVoltageLow, "VoltageLow",
+                        "The measured output voltage is higher than 0.1V, but lower than the command voltage");
+        T::AddStateName(State::kVoltageOn, "VoltageOn",
+                        "The measured output voltage is higher than 0.1V and comparable to the command voltage");
+        T::AddStateName(State::kVoltageHigh, "VoltageHigh",
+                        "The measured output voltage is higher than the command voltage!");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineAgilent::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachineAgilent::SetVerbosity, this, placeholders::_1))
+            ("set debug state"
+             "|debug[bool]:disable or enable verbosity for received raw data (yes/no)");
+
+        T::AddEvent("SET_POWER", "B:1")
+            (bind(&StateMachineAgilent::SetPower, this, placeholders::_1))
+            ("Enable or disable power output"
+             "|output[bool]:set power output to 'on' or 'off'");
+
+        T::AddEvent("POWER_CYCLE", "S:1")
+            (bind(&StateMachineAgilent::PowerCycle, this, placeholders::_1))
+            ("Power cycle the power output"
+             "|delay[short]:Defines the delay between switching off and on.");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineAgilent::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineAgilent::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to Agilent, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fAgilent.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fAgilent.SetEndpoint(url);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fAgilent.SetVerbose(!conf.Get<bool>("quiet"));
+        fAgilent.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fAgilent.SetInterval(conf.Get<uint16_t>("interval"));
+
+        SetEndpoint(conf.Get<string>("addr.", S::fMode));
+
+        const std::vector<std::string> opts = conf.GetWildcardOptions("addr.*");
+        for (auto it=opts.begin(); it!=opts.end(); it++)
+            conf.Get<string>(*it);
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineAgilent<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("agilent_ctrl control options");
+    control.add_options()
+        ("no-dim",    po_bool(),         "Disable dim services")
+        ("mode,m",    var<string>()->required(), "Mode (e.g. 24V, 50V, 80V)")
+        ("addr.*",    var<string>(),     "Network address of Agilent specified by mode")
+        ("debug-rx",  po_bool(false),    "Enable raw debug output wehen receiving data")
+        ("interval",  var<uint16_t>(15), "Interval in seconds in which the Agilent status is requested")
+        ("quiet,q",   po_bool(true),     "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    po::positional_options_description p;
+    p.add("mode", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The agilentctrl controls the FACT Agilent power supplies.\n\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: agilentctrl [-c type] [OPTIONS] mode\n"
+        "  or:  agilentctrl [OPTIONS] mode\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineAgilent<StateMachine, ConnectionAgilent>>();
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    ConnectionAgilent::fMode = conf.Get<string>("mode");
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionAgilent>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimAgilent>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionAgilent>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionAgilent>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimAgilent>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimAgilent>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/argv.cc
===================================================================
--- branches/FACT++_part_filenames/src/argv.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/argv.cc	(revision 18732)
@@ -0,0 +1,246 @@
+#include "Configuration.h"
+
+#include <iostream>
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//!  Main Doxygen/Autotools integration example program.
+//!
+//!  @param conf  Number of command line options.
+//!  @param opt  The command line options.
+//!  @return      The exit status.
+//
+void SetupConfiguration(Configuration &conf, int &opt)
+{
+    /*
+     // Default in case the option was not specified
+     typed_value* default_value(const T& v)
+     typed_value* default_value(const T& v, const std::string& textual)
+
+     // Default value in case the option was given
+     //    forces -o    to become -o5
+     //    forces --opt to become --opt=3
+     typed_value* implicit_value(const T &v)
+     typed_value* implicit_value(const T &v, const std::string& textual)
+
+     // notifier function when the final value is determined
+     typed_value* notifier(function1<void, const T&> f)
+
+     /// Merge values from different sources (e.g. file, command line)
+     typed_value* composing()
+
+     // Specifies that the value can span multiple tokens.
+     typed_value* multitoken()
+     typed_value* zero_tokens()
+
+     // Specifies that the value must occur.
+     typed_value* required()
+     */
+
+    // To merge the options from several parsers (e.g. comand_line and
+    // config file) use po_strings()->composing()
+    /*
+    po::options_description generic("Generic options");
+    generic.add_options()
+        ("help-config",   "Print available configuration file options.")
+        ("help-env",      "Print available environment variables.")
+        ("help",          "Print available commandline options.")
+        ("print-unknown", "Print unrecognized options.")
+        ("config", po_string("config.txt"), "Set configuration file name.")
+        ;
+
+
+    // Declare the supported options.
+    po::options_description generic("Generaic options");
+    generic.add_options()
+//        ("testreq",     po_int()->required(),         "set compression level (madatory)")
+        ("default",     po_string("my_default"),      "set compression level")
+        ("unknown",     po_int(1),                    "set compression level")
+        ("U",           po_int(2)->implicit_value(1), "set compression level")
+        ;
+      */
+    // Declare a group of options that will be
+    // allowed both on command line and in
+    // config file
+    po::options_description config("Configuration");
+    config.add_options()
+        ("compression",    var<int>(),                      "set compression level")
+        ("optimization",   var<int>(10, &opt),              "optimization level")
+        ("test-def",       var<int>(42),                    "optimization level")
+        ("include-path,I", vars<string>()/*->composing()*/, "include path")
+        ("test,T",         vars<string>()/*->composing()*/, "include path")
+        ("file1",          vars<string>(),                   "include path")
+        ("int1",           var<int>(),                      "include path")
+        ("Int2",           var<int>(),                      "include path")
+        ("Int1",           var<int>(),                      "include path")
+        ("test-db",        var<string>("database"),                      "include path")
+        ("float1",         var<double>(),                   "include path")
+//        (",A",          po_float(),                    "include path")
+        ("radec",         po::value<vector<double>>(),                    "include path")
+        ("switch",        po_switch(),                    "include path")
+        ("bool",          var<bool>()->implicit_value(true),                    "include path")
+        ;
+
+    // !!! Option which are "shorted" must be placed last.
+    //     Can this be switched off?
+
+    po::options_description sections("Sections");
+    config.add_options()
+        ("unregistered",            var<string>(),                    "include path")
+        ("Section1.unregistered",   var<string>(),                    "include path")
+//        ("Section2*",               po_string(),                    "include path")
+        // The latter accepts all options starting with Section2.
+        ;
+
+    // Hidden options, will be allowed both on command line and
+    // in config file, but will not be shown to the user.
+    po::options_description hidden("Hidden options");
+    hidden.add_options()
+        ("input-file",  vars<string>(), "input file")
+        ("output-file", vars<string>(), "output file")
+        ("test-file",   vars<string>(), "test file")
+        ;
+
+    po::options_description env("Environment options");
+    env.add_options()
+        ("linux", var<string>(), "LINUX env")
+        ("path",  var<string>(), "PATH env")
+        ("dns",   var<string>(), "DIM_DNS_SERVER env")
+        ;
+
+    conf.AddEnv("linux", "LINUX");
+    conf.AddEnv("path",  "PATH");
+    conf.AddEnv("dns",   "DIM_DNS_SERVER");
+
+    // define translation from position to name
+    po::positional_options_description p;
+    p.add("output-file", 2); // The first 2 positional options is output-file
+    p.add("test-file",   3); // The next three positional options is output-file
+    p.add("input-file", -1); // All others go to...
+
+    conf.AddOptionsCommandline(config);
+    conf.AddOptionsCommandline(sections);
+    conf.AddOptionsCommandline(hidden, false);
+
+    conf.AddOptionsConfigfile(config);
+    conf.AddOptionsConfigfile(sections);
+    conf.AddOptionsConfigfile(hidden, false);
+
+    conf.AddOptionsEnvironment(env);
+
+    conf.AddOptionsDatabase(config);
+
+    conf.SetArgumentPositions(p);
+}
+
+
+int main(int argc, const char **argv)
+{
+    int opt;
+
+    Configuration conf(argv[0]);
+    SetupConfiguration(conf, opt);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+    catch (std::exception &e)
+    {
+#if BOOST_VERSION > 104000
+        po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+        if (MO)
+            cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+        else
+#endif
+            cout << "Error: " << e.what() << endl;
+        cout << endl;
+
+        return -1;
+    }
+
+    if (conf.HasHelp() || conf.HasPrint())
+        return -1;
+
+    cout << "------------------------------" << endl;
+
+    cout << "Program " << argv[0] << " started successfully." << endl;
+
+    cout << conf.Has("switch") << " " << conf.Get<bool>("switch") << endl;
+    cout << conf.Has("bool") << " " << conf.Get<bool>("bool") << endl;
+
+    return 0;
+/*
+    if (vm.count("compression"))
+        cout << "Compression level was set to " << vm["compression"].as<int>() << ".\n";
+    else
+        cout << "Compression level was not set.\n";
+
+
+    cout << "Test default is always: " << vm["test-def"].as<int>() << "\n";
+    cout << "Optimization level is " << vm["optimization"].as<int>() << "\n";
+    //cout << "Int2: " << vm["Int2"].as<int>() << "\n";
+
+    cout << conf.GetString("unregistered") << endl;
+    cout << conf.GetString("Section1.unregistered") << endl;
+    cout << conf.Has("Section2.unregistered") << endl;
+    cout << conf.GetString("Section2.Section3.unregistered") << endl;
+    cout << "test-db: " << conf.GetString("test-db") << endl;
+
+
+    if (vm.count("include-path"))
+    {
+        vector<string> v = vm["include-path"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Incl P: " << *s << endl;
+    }
+
+    if (vm.count("input-file"))
+    {
+        vector<string> v = vm["input-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Incl F: " << *s << endl;
+    }
+
+    if (vm.count("output-file"))
+    {
+        vector<string> v = vm["output-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Out: " << *s << endl;
+    }
+
+    if (vm.count("test-file"))
+    {
+        vector<string> v = vm["test-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Testf: " << *s << endl;
+    }
+
+    cout << "Linux: " << conf.Get<string>("linux") << endl;
+
+    if (vm.count("path"))
+        cout << "Path: "   << vm["path"].as<string>()  << endl;
+    if (vm.count("file1"))
+        cout << "File1: "  << vm["file1"].as<string>() << endl;
+    if (vm.count("int1"))
+        cout << "Int1: "   << vm["int1"].as<int>()     << endl;
+    if (vm.count("float1"))
+        cout << "Float1: " << vm["float1"].as<float>() << endl;
+
+    if (vm.count("test"))
+    {
+        vector<string> v = vm["test"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Test: " << *s << endl;
+    }*/
+}
+// ***************************************************************************
+/** @example argv.cc
+
+Example for the usage of the class Configuration
+
+**/
+// ***************************************************************************
Index: branches/FACT++_part_filenames/src/biasctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/biasctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/biasctrl.cc	(revision 18732)
@@ -0,0 +1,2399 @@
+#include <functional>
+
+#include <boost/bind.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "ConnectionUSB.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+#include "HeadersBIAS.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std::placeholders;
+using namespace std;
+
+// We can do that because we do not include other headers than HeadersBIAS
+using namespace BIAS;
+
+// ------------------------------------------------------------------------
+
+class ConnectionBias : public ConnectionUSB
+{
+    boost::asio::deadline_timer fSyncTimer;
+    boost::asio::deadline_timer fRampTimer;
+    boost::asio::deadline_timer fUpdateTimer;
+
+    vector<uint8_t> fBuffer;
+    vector<uint8_t> fBufferRamp;
+    vector<uint8_t> fBufferUpdate;
+
+    bool fIsVerbose;
+    bool fIsDummyMode;
+
+    vector<bool>     fPresent;
+
+    int64_t fWrapCounter;
+    int64_t fSendCounter;
+
+    int16_t fGlobalDacCmd;      // Command value to be reached
+
+    int16_t fRampStep;
+    int16_t fRampTime;
+
+    uint32_t fUpdateTime;
+    uint16_t fSyncTime;
+    uint32_t fReconnectDelay;
+
+    int  fIsInitializing;
+    bool fIsRamping;
+    int  fWaitingForAnswer;
+
+    vector<uint64_t> fCounter;
+
+    Time fLastConnect;
+
+    int32_t  fEmergencyLimit;
+    bool     fEmergencyShutdown;
+
+protected:
+
+    vector<int16_t>  fCurrent;     // Current in ADC units (12bit = 5mA)
+
+    virtual void UpdateV(const Time = Time())
+    {
+    }
+
+    virtual void UpdateVgapd()
+    {
+    }
+
+public:
+    virtual void UpdateVA()
+    {
+    }
+
+    // ====================================================
+
+protected:
+    vector<float> fOperationVoltage;      // Operation voltage of GAPDs
+    //vector<float> fChannelOffset;         // User defined channel offset
+
+    vector<float> fCalibrationOffset;     // Bias crate channel offset
+    vector<float> fCalibrationSlope;      // Bias crate channel slope
+
+    float fVoltageMaxAbs;  // Maximum voltage
+    float fVoltageMaxRel;  // Maximum voltgage above (what?)
+
+    vector<uint16_t> fDacTarget;    // Target values
+    vector<uint16_t> fDacCommand;   // Last sent command value
+    vector<uint16_t> fDacActual;    // Actual value
+
+    // ====================================================
+
+private:
+    vector<char> GetCmd(uint16_t board, uint16_t channel, Command_t cmd, uint16_t dac=0)
+    {
+        vector<char> data(3);
+
+        /*
+        if (board>kNumBoards)
+            return;
+        if (channel>kNumChannelsPerBoard)
+            return;
+        if (dac>0xfff)
+            return;
+        */
+
+        data[0] = (cmd<<5) | (board<<1) | (((channel&16)>>4) & 1);
+        data[1] = (channel<<4) | (dac>>8);
+        data[2] =  dac&0xff;
+
+        return data;
+    }
+
+    vector<char> GetCmd(Command_t cmd, uint16_t id=0, uint16_t dac=0)
+    {
+        const unsigned int board   = id/kNumChannelsPerBoard;
+        const unsigned int channel = id%kNumChannelsPerBoard;
+
+        return GetCmd(board, channel, cmd, dac);
+    }
+
+    bool CheckMessageLength(int received, int expected, const string &msg)
+    {
+        if (received==expected)
+            return true;
+
+        ostringstream str;
+        str << msg << ": Expected " << expected << " bytes in answer, but got " << received << endl;
+        Error(str);
+
+        return false;
+    }
+
+    bool EvalAnswer(const uint8_t *answer, uint16_t id, int command)
+    {
+        answer += id*3;
+
+        const uint16_t status = (answer[0]>>7)&1;
+        const uint16_t wrap   = (answer[0]>>4)&7;
+        const uint16_t ddd    = ((uint16_t(answer[0])&0xf)<<8) | answer[1];
+        const uint16_t error  = (answer[2]>>4)&0xf;
+        const uint16_t board  =  answer[2]&0xf;
+
+        // 0x10 00 7f
+        //   status = 0
+        //   wrap   = 1
+        //   ddd    = 0
+        //   error  = not present
+        //   board  = 15
+
+        /*
+        Out() << dec << setw(2) << board << '|' << wrap << " ";
+        if (id%8==7)
+            Out() << endl;
+            */
+
+        if (fWrapCounter>=0)
+        {
+            if ((fWrapCounter+1)%8 != wrap)
+            {
+                ostringstream msg;
+                msg << "Corrupted answer (id=" << id << "): received wrap counter " << wrap << " doesn't match last one " << fWrapCounter << " ";
+                msg << " (fSendCounter=" << fSendCounter << ")";
+                Error(msg);
+                return false;
+            }
+        }
+
+        fWrapCounter = wrap;
+
+        if (command==kSynchronize)
+        {
+            ostringstream msg;
+            msg << hex << setfill('0');
+            msg << "Initial answer received: 0x";
+            msg << setw(2) << (int)answer[2];
+            msg << setw(2) << (int)answer[1];
+            msg << setw(2) << (int)answer[0];
+            Message(msg);
+
+            if (status!=0 || ddd!=0 || error!=0 || board!=0)
+            {
+                Warn("Initial answer doesn't seem to be a reset as naively expected.");
+
+                //ostringstream msg;
+                //msg << hex << setfill('0');
+                //msg << "S=" << status << " D=" << ddd << " E=" << error << " B=" << board;
+                //Message(msg);
+            }
+
+            fSendCounter = wrap;
+
+            msg.str("");
+            msg << "Setting fSendCounter to " << wrap;
+            Info(msg);
+
+            return true;
+        }
+
+        if (error==0x8) // No device
+        {
+            Message("Reset button on crate pressed!");
+            RampAllDacs(0);
+            return true;
+        }
+
+        if (command==kCmdReset)
+        {
+            if (status==0 && ddd==0 && error==0 && board==0)
+            {
+                Message("Reset successfully executed.");
+                return true;
+            }
+
+            Warn("Answer to 'reset' command contains unexpected data.");
+            return false;
+        }
+
+        if (command==kCmdGlobalSet)
+        {
+            if (status==0 && ddd==0 && error==0 && board==0)
+            {
+                for (int i=0; i<kNumChannels; i++)
+                    fDacActual[i] = fGlobalDacCmd;
+
+                fGlobalDacCmd = -1;
+
+                return true;
+            }
+
+            Warn("Answer to 'global set' command contains unexpected data.");
+            return false;
+        }
+
+        if ((command&0xff)==kExpertChannelSet)
+            id = command>>8;
+
+        const int cmd = command&3;
+
+        if (cmd==kCmdRead || cmd==kCmdChannelSet)
+        {
+            if (board!=id/kNumChannelsPerBoard)
+            {
+                ostringstream out;
+                out << "Talked to board " << id/kNumChannelsPerBoard << ", but got answer from board " <<  board << " (fSendCounter=" << fSendCounter << ")";
+                Error(out);
+                return false;
+            }
+
+            // Not present
+            if (error==0x7 || error==0xf)
+            {
+                fPresent[board] = false;
+                fCurrent[id]    = 0x8000;
+                return true;
+            }
+
+            // There is no -0 therefore we make a trick and replace it by -1.
+            // This is not harmfull, because typical zero currents are in the
+            // order of one to three bits anyway and they are never stable.
+            fCurrent[id]    = status ? -(ddd==0?1:ddd) : ddd;
+            fPresent[board] = true;
+
+            if (!fEmergencyShutdown)
+            {
+                if (fCurrent[id]<0)
+                {
+                    Warn("OverCurrent detected.");
+                    fEmergencyShutdown = true;
+                }
+
+                if (fEmergencyLimit>0 && fCurrent[id]>fEmergencyLimit && !fEmergencyShutdown)
+                {
+                    Warn("Emergency limit exceeded.");
+                    fEmergencyShutdown = true;
+                }
+
+                if (fEmergencyShutdown)
+                {
+                    Error("Emergency ramp down initiated.");
+                    Dim::SendCommandNB("MCP/STOP");
+                    RampAllDacs(0);
+                }
+            }
+        }
+
+        if (cmd==kCmdChannelSet)
+            fDacActual[id] = fDacCommand[id];
+
+        return true;
+
+    }
+
+private:
+    void DelayedReconnect()
+    {
+        const Time now;
+
+        // If we have been connected without a diconnect for at least 60s
+        // we can reset the delay.
+        if (now-fLastConnect>boost::posix_time::seconds(60))
+            fReconnectDelay = 1;
+
+        ostringstream msg;
+        msg << "Automatic reconnect in " << fReconnectDelay << "s after being connected for ";
+        msg << (now-fLastConnect).seconds() << "s";
+        Info(msg);
+
+        CloseImp(fReconnectDelay);
+        fReconnectDelay *= 2;
+    }
+
+    void HandleReceivedData(const vector<uint8_t> &buf, size_t bytes_received, int command, int send_counter)
+    {
+#ifdef DEBUG
+    ofstream fout("received.txt", ios::app);
+    fout << Time() << ": ";
+    for (unsigned int i=0; i<bytes_received; i++)
+        fout << hex << setfill('0') << setw(2) << (uint16_t)buf[i];
+    fout << endl;
+#endif
+
+        // Now print the received message if requested by the user
+        if (fIsVerbose/* && command!=kUpdate*/)
+        {
+            Out() << endl << kBold << dec << "Data received (size=" << bytes_received << "):" << endl;
+            Out() << " Command=" << command << " fWrapCounter=" << fWrapCounter << " fSendCounter=" << fSendCounter << " fIsInitializing=" << fIsInitializing << " fIsRamping=" << fIsRamping;
+            Out() << hex << setfill('0');
+
+            for (size_t i=0; i<bytes_received/3; i++)
+            {
+                if (i%8==0)
+                    Out() << '\n' << setw(2) << bytes_received/24 << "| ";
+
+                Out() << setw(2) << uint16_t(buf[i*3+2]);
+                Out() << setw(2) << uint16_t(buf[i*3+1]);
+                Out() << setw(2) << uint16_t(buf[i*3+0]) << " ";
+            }
+            Out() << endl;
+        }
+
+        const int cmd = command&0xf;
+
+        // Check the number of received_byted according to the answer expected
+        if ((cmd==kSynchronize      && !CheckMessageLength(bytes_received, 3,                "Synchronization")) ||
+            (cmd==kCmdReset         && !CheckMessageLength(bytes_received, 3,                "CmdReset"))        ||
+            (cmd==kCmdRead          && !CheckMessageLength(bytes_received, 3*kNumChannels,   "CmdRead"))         ||
+            (cmd==kCmdChannelSet    && !CheckMessageLength(bytes_received, 3*kNumChannels,   "CmdChannelSet"))   ||
+            (cmd==kExpertChannelSet && !CheckMessageLength(bytes_received, 3,                "CmdExpertChannelSet")))
+        {
+            CloseImp(-1);
+            return;
+        }
+
+        // Now evaluate the whole bunch of messages
+        for (size_t i=0; i<bytes_received/3; i++)
+        {
+            if (!EvalAnswer(buf.data(), i, command))
+            {
+                DelayedReconnect();
+                return;
+            }
+        }
+
+        if (command==kSynchronize)
+        {
+            Message("Stream successfully synchronized.");
+            fIsInitializing = 2;
+
+            // Cancel sending of the next 0
+            fSyncTimer.cancel();
+            fCounter[0]++;
+
+            // Start continous reading of all channels
+            ScheduleUpdate(100);
+            return;
+        }
+
+        if (send_counter%8 != fWrapCounter)
+        {
+            ostringstream msg;
+            msg << "Corrupted answer: received wrap counter " << fWrapCounter  << " is not send counter " << send_counter << "%8.";
+            Error(msg);
+
+            DelayedReconnect();
+        }
+
+
+        // Check if new values have been received
+        if (cmd==kCmdRead || cmd==kCmdChannelSet || cmd==kExpertChannelSet)
+            UpdateVA();
+
+        // ----- Take action depending on what is going on -----
+
+        if (command==kCmdReset)
+        {
+            Message("Reset command successfully answered...");
+
+            fCounter[1]++;
+
+            // Re-start cyclic reading of values after a short time
+            // to allow the currents to become stable. This ensures that
+            // we get an update soon but wait long enough to get reasonable
+            // values
+            fUpdateTimer.cancel();
+
+            if (fUpdateTime==0)
+                ReadAllChannels(true);
+            else
+            {
+                Message("...restarting automatic readout.");
+                ScheduleUpdate(100);
+            }
+        }
+
+        if (command==kResetChannels)
+        {
+            ExpertReset(false);
+            fCounter[5]++;
+        }
+
+        if (command==kUpdate)
+        {
+            ScheduleUpdate(fUpdateTime);
+            fCounter[2]++;
+        }
+
+        // If we are ramping, schedule a new ramp step
+        if (command==kCmdChannelSet && fIsRamping)
+        {
+            bool oc = false;
+            for (int ch=0; ch<kNumChannels; ch++)
+                if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
+                    oc = true;
+
+            if (oc)
+            {
+                if (!fEmergencyShutdown)
+                {
+                    Warn("OverCurrent detected - emergency ramp down initiated.");
+                    Dim::SendCommandNB("MCP/STOP");
+                    RampAllDacs(0);
+                    fEmergencyShutdown = true;
+                }
+            }
+            else
+                ScheduleRampStep();
+
+            fCounter[3]++;
+        }
+
+        if (command==kCmdRead)
+            fCounter[4]++;
+
+        if ((command&0xff)==kExpertChannelSet)
+            fCounter[6]++;
+
+        if (command==kCmdGlobalSet)
+            fCounter[7]++;
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int command, int send_counter)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                ostringstream msg;
+                msg << "Connection closed by remote host (BIAS, fSendCounter=" << fSendCounter << ")";
+                Warn(msg);
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            CloseImp(-1);//err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        // Check if the number of received bytes is correctly dividable by 3
+        // This check should never fail - just for sanity
+        if (bytes_received%3)
+        {
+            Error("Number of received bytes not a multiple of 3, can't read data.");
+            CloseImp(-1);
+            return;
+        }
+
+        // We have three different parallel streams:
+        //  1) The setting of voltages due to ramping
+        //  2) The cynclic request of the currents
+        //  3) Answers to commands
+        // For each of these three streams an own buffer is needed, otherwise
+        // a buffer which is filled in the background might overwrite
+        // a buffer which is currently evaluated. In all other programs
+        // this is no problem because the boards don't answer and if
+        // they do the answer identifies itself. Consequently,
+        // there is always only one async_read in progress. Here we have
+        // three streams which need to be connected somehow to the
+        // commands.
+
+        // Maybe a better possibility would be to setup a command
+        // queue (each command will be queued in a buffer)
+        // and whenever an answer has been received, a new async_read is
+        // scheduled.
+        // Build a command queue<pair<command, vector<char>>>
+        ///  This replaces the send counter and the command argument
+        //   in handleReceivedData
+
+        switch (command&0xff)
+        {
+        case kSynchronize:
+        case kCmdReset:
+        case kExpertChannelSet:
+        case kCmdGlobalSet:
+        case kResetChannels:
+        case kCmdRead:
+            HandleReceivedData(fBuffer, bytes_received, command, send_counter);
+            fWaitingForAnswer = -1;
+            return;
+
+        case kCmdChannelSet:
+            HandleReceivedData(fBufferRamp, bytes_received, command, send_counter);
+            return;
+
+        case kUpdate:
+            HandleReceivedData(fBufferUpdate, bytes_received, command, send_counter);
+            return;
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    void HandleSyncTimer(int counter, const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            if (fIsInitializing==1)
+                Warn("Synchronization aborted...");
+            // case 0 and 2 should not happen
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Synchronization timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+        {
+            Warn("Synchronization in progress, but disconnected.");
+            return;
+        }
+
+        ostringstream msg;
+        msg << "Synchronization time expired (" << counter << ")";
+        Info(msg);
+
+        if (fIsInitializing)
+        {
+            PostMessage("\0", 1);
+
+            if (counter==2)
+            {
+                Error("Synchronization attempt timed out.");
+                CloseImp(-1);
+                return;
+            }
+
+            ScheduleSync(counter+1);
+            return;
+        }
+
+        Info("Synchronisation successfull.");
+    }
+
+    void ScheduleSync(int counter=0)
+    {
+        fSyncTimer.expires_from_now(boost::posix_time::milliseconds(fSyncTime));
+        fSyncTimer.async_wait(boost::bind(&ConnectionBias::HandleSyncTimer, this, counter, dummy::error));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        // We connect for the first time or haven't received
+        // a valid warp counter yet... this procedure also sets
+        // our volatges to 0 if we have connected but never received
+        // any answer.
+        if (fWrapCounter<0)
+        {
+            fDacTarget.assign(kNumChannels, 0);
+            fDacCommand.assign(kNumChannels, 0);
+            fDacActual.assign(kNumChannels, 0);
+        }
+
+        // Reset everything....
+        fSendCounter    = -1;
+        fWrapCounter    = -1;
+        fGlobalDacCmd   = -1;
+        fIsInitializing =  1;
+        fIsRamping      = false;
+
+        fLastConnect = Time();
+
+        // Send a single 0 (and possible two consecutive 0's
+        // to make sure we are in sync with the device)
+        PostMessage("\0", 1);
+        AsyncRead(ba::buffer(fBuffer, 3), kSynchronize, 0);//++fSendCounter);
+        fWaitingForAnswer = kSynchronize;
+
+        // Wait for some time before sending the next 0
+        ScheduleSync();
+    }
+
+    // --------------------------------------------------------------------
+
+    void HandleUpdateTimer(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            Warn("Update timer aborted...");
+            fIsRamping = false;
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Update timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+            return;
+
+        if (fUpdateTime==0 && fIsInitializing!=2)
+            return;
+
+        if (fIsRamping)
+            ScheduleUpdate(fUpdateTime);
+        else
+            ReadAllChannels(true);
+
+        fIsInitializing = 0;
+    }
+
+    void ScheduleUpdate(int millisec)
+    {
+        fUpdateTimer.expires_from_now(boost::posix_time::milliseconds(millisec));
+        fUpdateTimer.async_wait(boost::bind(&ConnectionBias::HandleUpdateTimer, this, dummy::error));
+    }
+
+    // --------------------------------------------------------------------
+
+    void PrintLineCmdDac(int b, int ch, const vector<uint16_t> &dac)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+4; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " " << setw(4) << int32_t(dac[id])<<"/"<<fDacActual[id] << ":" << setw(5) << ConvertDacToVolt(id, fDacTarget[id]);
+        }
+        Out() << endl;
+    }
+
+    void PrintCommandDac(const vector<uint16_t> &dac)
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineCmdDac(b,  0, dac);
+            PrintLineCmdDac(b,  4, dac);
+            PrintLineCmdDac(b,  8, dac);
+            PrintLineCmdDac(b, 12, dac);
+            PrintLineCmdDac(b, 16, dac);
+            PrintLineCmdDac(b, 20, dac);
+            PrintLineCmdDac(b, 24, dac);
+            PrintLineCmdDac(b, 28, dac);
+        }
+    }
+
+    void SetAllChannels(const vector<uint16_t> &dac, bool special=false)
+    {
+        if (fIsDummyMode)
+        {
+            PrintCommandDac(dac);
+            return;
+        }
+
+        vector<char> data;
+        data.reserve(kNumChannels*3);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            // FIXME: dac[ch] += calib_offset
+            const vector<char> cmd = GetCmd(kCmdChannelSet, ch, dac[ch]);
+            data.insert(data.end(), cmd.begin(), cmd.end());
+
+            fDacCommand[ch] = dac[ch];
+        }
+
+        fSendCounter += kNumChannels;
+
+        PostMessage(data);
+        AsyncRead(ba::buffer(special ? fBuffer : fBufferRamp, kNumChannels*3),
+                  special ? kResetChannels : kCmdChannelSet, fSendCounter);
+
+        if (special)
+            fWaitingForAnswer = kResetChannels;
+    }
+
+    uint16_t RampOneStep(uint16_t ch)
+    {
+        if (fDacTarget[ch]>fDacActual[ch])
+            return fDacActual[ch]+fRampStep>fDacTarget[ch] ? fDacTarget[ch] : fDacActual[ch]+fRampStep;
+
+        if (fDacTarget[ch]<fDacActual[ch])
+            return fDacActual[ch]-fRampStep<fDacTarget[ch] ? fDacTarget[ch] : fDacActual[ch]-fRampStep;
+
+        return fDacActual[ch];
+    }
+
+    bool RampOneStep()
+    {
+        if (fRampTime<0)
+        {
+            Warn("Ramping step time not yet set... ramping not started.");
+            return false;
+        }
+        if (fRampStep<0)
+        {
+            Warn("Ramping step not yet set... ramping not started.");
+            return false;
+        }
+
+        vector<uint16_t> dac(kNumChannels);
+
+        bool identical = true;
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            dac[ch] = RampOneStep(ch);
+            if (dac[ch]!=fDacActual[ch] && fPresent[ch/kNumChannelsPerBoard])
+                identical = false;
+        }
+
+        if (identical)
+        {
+            Info("Ramping: target values reached.");
+            return false;
+        }
+
+        if (fWaitingForAnswer<0)
+        {
+            SetAllChannels(dac);
+            return true;
+        }
+
+        ostringstream msg;
+        msg << "RampOneStep while waiting for answer to last command (id=" << fWaitingForAnswer << ")... ramp step delayed.";
+        Warn(msg);
+
+        // Delay ramping
+        ScheduleRampStep();
+        return true;
+    }
+
+    void HandleRampTimer(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            Warn("Ramping aborted...");
+            fIsRamping = false;
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Ramping timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            fIsRamping = false;
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+        {
+            Warn("Ramping in progress, but disconnected.");
+            fIsRamping = false;
+            return;
+        }
+
+        if (!fIsRamping)
+        {
+            Error("Ramp handler called although no ramping in progress.");
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fRampTimer.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        fIsRamping = RampOneStep();
+    }
+
+    void ScheduleRampStep()
+    {
+        fRampTimer.expires_from_now(boost::posix_time::milliseconds(fRampTime));
+        fRampTimer.async_wait(boost::bind(&ConnectionBias::HandleRampTimer, this, dummy::error));
+    }
+
+public:
+    ConnectionBias(ba::io_service& ioservice, MessageImp &imp) : ConnectionUSB(ioservice, imp()),
+        fSyncTimer(ioservice),
+        fRampTimer(ioservice),
+        fUpdateTimer(ioservice),
+        fBuffer(3*kNumChannels),
+        fBufferRamp(3*kNumChannels),
+        fBufferUpdate(3*kNumChannels),
+        fIsVerbose(false),
+        fIsDummyMode(false),
+        fPresent(kNumBoards),
+        fWrapCounter(-1),
+        fRampStep(-1),
+        fRampTime(-1),
+        fUpdateTime(3000),
+        fSyncTime(333),
+        fReconnectDelay(1),
+        fIsRamping(false),
+        fWaitingForAnswer(-1),
+        fCounter(8),
+        fEmergencyLimit(0),
+        fEmergencyShutdown(false),
+        fCurrent(kNumChannels),
+        fOperationVoltage(kNumChannels, 0),
+        //fChannelOffset(kNumChannels),
+        fCalibrationOffset(kNumChannels),
+        fCalibrationSlope(kNumChannels, 90000),
+        fVoltageMaxAbs(75),
+        fVoltageMaxRel(2),
+        fDacTarget(kNumChannels),
+        fDacCommand(kNumChannels),
+        fDacActual(kNumChannels)
+    {
+        SetLogStream(&imp);
+    }
+
+    // --------------------------------------------------------------------
+
+    bool CheckDac(uint16_t dac)
+    {
+        if (dac<4096)
+            return true;
+
+        ostringstream msg;
+        msg << "CheckDac - Dac value of " << dac << " exceeds maximum of 4095.";
+        Error(msg);
+        return false;
+    }
+
+    bool CheckChannel(uint16_t ch)
+    {
+        if (ch<kNumChannels)
+            return true;
+
+        ostringstream msg;
+        msg << "CheckChannel - Channel " << ch << " out of range [0;" << kNumChannels-1 << "].";
+        Error(msg);
+        return false;
+    }
+
+    bool CheckChannelVoltage(uint16_t ch, float volt)
+    {
+        if (volt>fVoltageMaxAbs)
+        {
+            ostringstream msg;
+            msg << "CheckChannelVoltage - Set voltage " << volt << "V of channel " << ch << " exceeds absolute limit of " << fVoltageMaxAbs << "V.";
+            Warn(msg);
+            return false;
+        }
+
+        if (fOperationVoltage[ch]<=0)
+            return true;
+
+        if (volt>fOperationVoltage[ch]+fVoltageMaxRel) // FIXME: fVoltageMaxRel!!!
+        {
+            ostringstream msg;
+            msg << "CheckChannelVoltage - Set voltage " << volt << "V of channel " << ch << " exceeds limit of " << fVoltageMaxRel << "V above operation voltage " << fOperationVoltage[ch] << "V + limit " << fVoltageMaxRel << "V.";
+            Error(msg);
+            return false;
+        }
+
+        return true;
+    }
+
+    // --------------------------------------------------------------------
+
+    bool RampSingleChannelDac(uint16_t ch, uint16_t dac)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+        if (!CheckDac(dac))
+            return false;
+
+        fDacTarget[ch] = dac;
+        UpdateV();
+
+        if (!fIsRamping)
+            fIsRamping = RampOneStep();
+
+        return true;
+    }
+
+    bool RampAllChannelsDac(const vector<uint16_t> &dac)
+    {
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (!CheckDac(dac[ch]))
+                return false;
+
+        fDacTarget = dac;
+        UpdateV();
+
+        if (!fIsRamping)
+            fIsRamping = RampOneStep();
+
+        return true;
+    }
+
+    bool RampAllDacs(uint16_t dac)
+    {
+        return RampAllChannelsDac(vector<uint16_t>(kNumChannels, dac));
+    }
+
+    // --------------------------------------------------------------------
+
+    uint16_t ConvertVoltToDac(uint16_t ch, double volt)
+    {
+        if (fCalibrationSlope[ch]<=0)
+            return 0;
+
+        const double current = (volt-fCalibrationOffset[ch])/fCalibrationSlope[ch];
+        return current<0 ? 0 : nearbyint(current*4096000); // Current [A] to dac [ /= 1mA/4096]
+    }
+
+    double ConvertDacToVolt(uint16_t ch, uint16_t dac)
+    {
+        if (fCalibrationSlope[ch]<=0)
+            return 0;
+
+        const double current = dac/4096000.;  // Convert dac to current [A] [ *= 1mA/4096]
+        return current*fCalibrationSlope[ch] + fCalibrationOffset[ch];
+    }
+
+    // --------------------------------------------------------------------
+
+    bool RampSingleChannelVoltage(uint16_t ch, float volt)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+        if (!CheckChannelVoltage(ch, volt))
+            return false;
+
+        const uint16_t dac = ConvertVoltToDac(ch, volt);
+        return RampSingleChannelDac(ch, dac);
+    }
+
+    bool RampAllChannelsVoltage(const vector<float> &volt)
+    {
+        vector<uint16_t> dac(kNumChannels);
+        for (size_t ch=0; ch<kNumChannels; ch++)
+        {
+            if (!CheckChannelVoltage(ch, volt[ch]))
+                return false;
+
+            dac[ch] = ConvertVoltToDac(ch, volt[ch]);
+        }
+
+        return RampAllChannelsDac(dac);
+    }
+
+    bool RampAllVoltages(float volt)
+    {
+        return RampAllChannelsVoltage(vector<float>(kNumChannels, volt));
+    }
+
+    // --------------------------------------------------------------------
+
+    /*
+    bool RampSingleChannelOffset(uint16_t ch, float offset, bool relative)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+//        if (relative)
+//            offset += fDacActual[ch]*90./4096 - fBreakdownVoltage[ch];
+
+        const float volt = fBreakdownVoltage[ch]>0 ? fBreakdownVoltage[ch] + offset : 0;
+
+        if (!RampSingleChannelVoltage(ch, volt))
+            return false;
+
+        fChannelOffset[ch] = offset;
+
+        return true;
+    }
+
+    bool RampAllChannelsOffset(vector<float> offset, bool relative)
+    {
+        vector<float> volt(kNumChannels);
+
+//        if (relative)
+//            for (size_t ch=0; ch<kNumChannels; ch++)
+//                offset[ch] += fDacActual[ch]*90./4096 - fBreakdownVoltage[ch];
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            volt[ch] = fBreakdownVoltage[ch]>0 ? fBreakdownVoltage[ch] + offset[ch] : 0;
+
+        if (!RampAllChannelsVoltage(volt))
+            return false;
+
+        fChannelOffset = offset;
+
+        return true;
+    }
+
+    bool RampAllOffsets(float offset, bool relative)
+    {
+        return RampAllChannelsOffset(vector<float>(kNumChannels, offset), relative);
+    }
+    */
+
+    /*
+    bool RampSingleChannelOvervoltage(float offset)
+    {
+        return RampAllChannelsOvervoltage(vector<float>(kNumChannels, offset));
+    }
+    bool RampAllOvervoltages(const vector<float> &overvoltage)
+    {
+        vector<float> volt(kNumChannels);
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            volt[ch] = fBreakdownVoltage[ch] + fOvervoltage[ch] + fChannelOffset[ch];
+
+#warning What about empty channels?
+
+        if (!RampAllChannelsVoltage(volt))
+            return false;
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            fOvervoltage[ch] = overvoltage[ch];
+
+        return true;
+    }*/
+
+    // --------------------------------------------------------------------
+
+    void OverCurrentReset()
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "OverCurrentReset - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        if (fIsRamping)
+        {
+            Warn("OverCurrentReset - Ramping in progres.");
+            RampStop();
+        }
+
+        vector<uint16_t> dac(fDacActual);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fCurrent[ch]<0)
+                dac[ch] = 0;
+
+        SetAllChannels(dac, true);
+    }
+
+    void ReadAllChannels(bool special = false)
+    {
+        if (!special && fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ReadAllChannels - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        vector<char> data;
+        data.reserve(kNumChannels*3);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            const vector<char> cmd = GetCmd(kCmdRead, ch);
+            data.insert(data.end(), cmd.begin(), cmd.end());
+        }
+
+        fSendCounter += kNumChannels;
+
+        PostMessage(data);
+        AsyncRead(ba::buffer(special ? fBufferUpdate : fBuffer, kNumChannels*3),
+                  special ? kUpdate : kCmdRead, fSendCounter);
+
+        if (!special)
+            fWaitingForAnswer = kCmdRead;
+    }
+
+    bool SetReferences(const vector<float> &volt, const vector<float> &offset, const vector<float> &slope)
+    {
+        if (volt.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << volt.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+        if (offset.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << offset.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+        if (slope.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << slope.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+
+        fOperationVoltage  = volt;
+        fCalibrationOffset = offset;
+        fCalibrationSlope  = slope;
+
+        UpdateVgapd();
+
+        return true;
+    }
+
+    // --------------------------------------------------------------------
+
+    void RampStop()
+    {
+        fRampTimer.cancel();
+        fIsRamping = false;
+
+        Message("Ramping stopped.");
+    }
+
+    void RampStart()
+    {
+        if (fIsRamping)
+        {
+            Warn("RampStart - Ramping already in progress... ignored.");
+            return;
+        }
+
+        fIsRamping = RampOneStep();
+    }
+
+    void SetRampTime(uint16_t val)
+    {
+        fRampTime = val;
+    }
+
+    void SetRampStep(uint16_t val)
+    {
+        fRampStep = val;
+    }
+
+    uint16_t GetRampStepVolt() const
+    {
+        return fRampStep*90./4096;
+    }
+
+    bool IsRamping() const { return fIsRamping; }
+
+    // -------------------------------------------------------------------
+
+    void ExpertReset(bool expert_mode=true)
+    {
+        if (expert_mode && fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertReset - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        if (expert_mode)
+            Warn("EXPERT MODE: Sending reset.");
+
+        PostMessage(GetCmd(kCmdReset));
+        AsyncRead(ba::buffer(fBuffer, 3), kCmdReset, ++fSendCounter);
+        fWaitingForAnswer = kCmdReset;
+    }
+
+
+    bool ExpertChannelSetDac(uint16_t ch, uint16_t dac)
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertChannelSetDac - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return false;
+        }
+
+        if (!CheckDac(dac))
+            return false;
+
+        fDacCommand[ch] = dac;
+
+        ostringstream msg;
+        msg << "EXPERT MODE: Sending 'ChannelSet' (set ch " << ch << " to DAC=" << dac << ")";
+        Warn(msg);
+
+        // FIXME: dac += calib_offset
+        PostMessage(GetCmd(kCmdChannelSet, ch, dac));
+        AsyncRead(ba::buffer(fBuffer, 3), kExpertChannelSet|(ch<<8), ++fSendCounter);
+        fWaitingForAnswer = kExpertChannelSet|(ch<<8);
+
+        return true;
+    }
+
+    bool ExpertChannelSetVolt(uint16_t ch, double volt)
+    {
+        return ExpertChannelSetDac(ch, volt*4096/90.);
+    }
+
+    bool ExpertGlobalSetDac(uint16_t dac)
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertGlobalSetDac - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return false;
+        }
+
+        if (!CheckDac(dac))
+            return false;
+
+        if (fGlobalDacCmd>=0)
+        {
+            Error("ExpertGlobalSetDac - Still waiting for previous answer to 'GlobalSet'");
+            return false;
+        }
+
+        fGlobalDacCmd = dac;
+
+        ostringstream msg;
+        msg << "EXPERT MODE: Sending 'GlobalSet' (DAC=" << dac << ")";
+        Warn(msg);
+
+        PostMessage(GetCmd(kCmdGlobalSet, 0, dac));
+        AsyncRead(ba::buffer(fBuffer, 3), kCmdGlobalSet, ++fSendCounter);
+        fWaitingForAnswer = kCmdGlobalSet;
+
+        return true;
+    }
+
+    bool ExpertGlobalSetVolt(float volt)
+    {
+        return ExpertGlobalSetDac(volt*4096/90);
+    }
+
+    // --------------------------------------------------------------------
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDummyMode(bool b)
+    {
+        fIsDummyMode = b;
+    }
+
+    void PrintInfo()
+    {
+        Out() << endl << kBold << dec << '\n';
+        Out() << "fWrapCounter    = " << fWrapCounter << '\n';
+        Out() << "fSendCounter    = " << fSendCounter%8 << " (" << fSendCounter << ")" << '\n';
+        Out() << "fIsInitializing = " << fIsInitializing << '\n';
+        Out() << "fIsRamping      = " << fIsRamping << '\n';
+        Out() << "Answer counter:" << '\n';
+        Out() << " - Synchronization: " << fCounter[0] << '\n';
+        Out() << " - Reset:           " << fCounter[1] << '\n';
+        Out() << " - Request update:  " << fCounter[2] << '\n';
+        Out() << " - Ramp step:       " << fCounter[3] << '\n';
+        Out() << " - Read:            " << fCounter[4] << '\n';
+        Out() << " - Reset channels:  " << fCounter[5] << '\n';
+        Out() << " - Global set:      " << fCounter[7] << '\n';
+        Out() << " - Channel set:     " << fCounter[6] << '\n' << endl;
+    }
+
+    void PrintLineA(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+8; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << (fCurrent[id]<0?kRed:kGreen);
+            Out() << " " << setw(7) << abs(fCurrent[id])*5000/4096.;
+        }
+        Out() << endl;
+
+    }
+
+    void PrintA()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineA(b,  0);
+            PrintLineA(b,  8);
+            PrintLineA(b, 16);
+            PrintLineA(b, 24);
+        }
+    }
+
+    void PrintLineV(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+4; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " ";
+            Out() << (fDacActual[id]==fDacTarget[id]?kGreen:kRed);
+            //Out() << setw(5) << fDacActual[id]*90/4096. << '/';
+            //Out() << setw(5) << fDacTarget[id]*90/4096.;
+
+            Out() << setw(5) << ConvertDacToVolt(id, fDacActual[id]) << '/';
+            Out() << setw(5) << ConvertDacToVolt(id, fDacTarget[id]);
+        }
+        Out() << endl;
+    }
+
+    void PrintV()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineV(b,  0);
+            PrintLineV(b,  4);
+            PrintLineV(b,  8);
+            PrintLineV(b, 12);
+            PrintLineV(b, 16);
+            PrintLineV(b, 20);
+            PrintLineV(b, 24);
+            PrintLineV(b, 28);
+        }
+    }
+
+    void PrintLineGapd(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+8; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " " << setw(5) << fOperationVoltage[id];
+        }
+        Out() << endl;
+    }
+
+    void PrintReferenceVoltage()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineGapd(b,  0);
+            PrintLineGapd(b,  8);
+            PrintLineGapd(b, 16);
+            PrintLineGapd(b, 24);
+        }
+    }
+
+    // -------------------------------------------------------------------
+
+    void SetUpdateInterval(uint32_t val)
+    {
+        fUpdateTime = val;
+
+        if (!IsConnected() || fIsInitializing)
+            return;
+
+        fUpdateTimer.cancel();
+
+        if (fUpdateTime>0)
+            ScheduleUpdate(fUpdateTime);
+    }
+
+    void SetSyncDelay(uint16_t val)
+    {
+        fSyncTime = val;
+    }
+
+    void SetVoltMaxAbs(float max)
+    {
+        if (max>90)
+            max = 90;
+        if (max<0)
+            max = 0;
+
+        fVoltageMaxAbs = max;
+    }
+
+    void SetVoltMaxRel(float max)
+    {
+        if (max>90)
+            max = 90;
+        if (max<0)
+            max = 0;
+
+        fVoltageMaxRel = max;
+    }
+
+    uint16_t GetVoltMaxAbs() const
+    {
+        return fVoltageMaxAbs;
+    }
+
+    uint16_t GetVoltMaxRel() const
+    {
+        return fVoltageMaxRel;
+    }
+
+    State::states_t GetStatus()
+    {
+        if (!IsConnected())
+            return State::kDisconnected;
+
+        if (IsConnecting())
+            return State::kConnecting;
+
+        if (fIsInitializing)
+            return State::kInitializing;
+
+        if (fIsRamping)
+            return State::kRamping;
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
+                return State::kOverCurrent;
+
+        bool isoff = true;
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=0)
+                isoff = false;
+        if (isoff)
+            return State::kVoltageOff;
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=fDacTarget[ch])
+                return State::kNotReferenced;
+
+        return State::kVoltageOn;
+    }
+
+    void SetReconnectDelay(uint32_t delay=1)
+    {
+        fReconnectDelay = delay;
+    }
+
+    void SetEmergencyLimit(int32_t limit=0)
+    {
+        fEmergencyLimit = limit;
+    }
+
+    void ResetEmergencyShutdown()
+    {
+        fEmergencyShutdown = false;
+    }
+
+    bool IsEmergencyShutdown() const
+    {
+        return fEmergencyShutdown;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimBias : public ConnectionBias
+{
+private:
+
+    DimDescribedService fDimCurrent;
+    DimDescribedService fDimDac;
+    DimDescribedService fDimVolt;
+    DimDescribedService fDimGapd;
+
+public:
+    void UpdateVA()
+    {
+        const Time now;
+
+        UpdateV(now);
+
+        fDimCurrent.setTime(now);
+        fDimCurrent.Update(fCurrent);
+    }
+
+private:
+    void UpdateV(const Time now=Time())
+    {
+        const bool rc = !memcmp(fDacActual.data(), fDacTarget.data(), kNumChannels*2);
+
+        vector<uint16_t> val(2*kNumChannels);
+        memcpy(val.data(),              fDacActual.data(), kNumChannels*2);
+        memcpy(val.data()+kNumChannels, fDacTarget.data(), kNumChannels*2);
+        fDimDac.setTime(now);
+        fDimDac.setQuality(rc);
+        fDimDac.Update(val);
+
+        vector<float> volt(kNumChannels);
+        for (float ch=0; ch<kNumChannels; ch++)
+            volt[ch] = ConvertDacToVolt(ch, fDacActual[ch]);
+        fDimVolt.setTime(now);
+        fDimVolt.setQuality(rc);
+        fDimVolt.Update(volt);
+    }
+
+    void UpdateVgapd()
+    {
+        vector<float> volt;
+        volt.reserve(3*kNumChannels);
+        volt.insert(volt.end(), fOperationVoltage.begin(),   fOperationVoltage.end());
+        volt.insert(volt.end(), fCalibrationOffset.begin(),  fCalibrationOffset.end());
+        volt.insert(volt.end(), fCalibrationSlope.begin(),   fCalibrationSlope.end());
+        fDimGapd.Update(volt);
+    }
+
+public:
+    ConnectionDimBias(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionBias(ioservice, imp),
+        fDimCurrent("BIAS_CONTROL/CURRENT", "S:416",
+                    "|I[dac]:Bias current (conversion: 5000uA/4096dac)"),
+        fDimDac("BIAS_CONTROL/DAC", "S:416;S:416",
+                "|U[dac]:Current dac setting"
+                "|Uref[dac]:Reference dac setting"),
+        fDimVolt("BIAS_CONTROL/VOLTAGE", "F:416",
+                 "|Uout[V]:Output voltage"),
+        fDimGapd("BIAS_CONTROL/NOMINAL", "F:416;F:416;F:416",
+                 "|Uop[V]:Nominal operation voltage at 25deg C"
+                 "|Uoff[V]:Bias crate channel calibration offsets"
+                 "|Rcal[Ohm]:Bias crate channel calibration slope")
+    {
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineBias : public StateMachineAsio<T>
+{
+    int Wrap(boost::function<void()> f)
+    {
+        f();
+        return T::GetCurrentState();
+    }
+
+    function<int(const EventImp &)> Wrapper(function<void()> func)
+    {
+        return bind(&StateMachineBias::Wrap, this, func);
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+private:
+    S fBias;
+
+    bool fExpertMode;
+
+    Time fSunRise;
+
+    // --------------------------------------------------------------------
+
+    // SET_GLOBAL_DAC_VALUE
+    int SetGlobalDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetGlobalDac", 2))
+            return false;
+
+        fBias.RampAllDacs(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    // SET_ALL_CHANNELS_DAC
+    int SetAllChannelsDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAllChannelsDac", 2*416))
+            return false;
+
+        const uint16_t *ptr = evt.Ptr<uint16_t>();
+
+        fBias.RampAllChannelsDac(vector<uint16_t>(ptr, ptr+416));
+
+        return T::GetCurrentState();
+    }
+
+    // SET_CHANNEL_DAC_VALUE
+    int SetChannelDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetChannelDac", 4))
+            return false;
+
+        fBias.RampSingleChannelDac(evt.Get<uint16_t>(), evt.Get<uint16_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+    // SET_CHANNEL_VOLTAGE
+    int SetChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetChannelVolt", 6))
+            return false;
+
+        fBias.RampSingleChannelVoltage(evt.GetUShort(), evt.Get<float>(2));
+
+        return T::GetCurrentState();
+    }
+
+    // SET_GLOBAL_VOLTAGE
+    int SetGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetGlobalVolt", 4))
+            return false;
+
+        fBias.RampAllVoltages(evt.GetFloat());
+
+        return T::GetCurrentState();
+    }
+
+    // SET_ALL_CHANNELS_VOLTAGES
+    int SetAllChannelsVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAllChannelsVolt", 4*kNumChannels))
+            return false;
+
+        const float *ptr = evt.Ptr<float>();
+        fBias.RampAllChannelsVoltage(vector<float>(ptr, ptr+kNumChannels));
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+/*    // INCREASE_GLOBAL_VOLTAGE
+    int IncGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncGlobalVolt", 4))
+            return false;
+
+        fBias.RampAllOffsets(evt.GetFloat(), true);
+
+        return T::GetCurrentState();
+    }
+
+    // INCREASE_CHANNEL_VOLTAGE
+    int IncChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncChannelVolt", 6))
+            return false;
+
+        fBias.RampSingleChannelOffset(evt.Get<uint16_t>(), evt.Get<float>(2), true);
+
+        return T::GetCurrentState();
+    }
+
+    // INCREASE_ALL_CHANNELS_VOLTAGES
+    int IncAllChannelsVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncAllChannelsVolt", 4*kNumChannels))
+            return false;
+
+        const float *ptr = evt.Ptr<float>();
+        fBias.RampAllChannelsOffset(vector<float>(ptr, ptr+416), true);
+
+        return T::GetCurrentState();
+    }
+*/
+    // --------------------------------------------------------------------
+
+    int ExpertSetGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetGlobalVolt", 4))
+            return false;
+
+        fBias.ExpertGlobalSetVolt(evt.GetFloat());
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetGlobalDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetGlobalDac", 2))
+            return false;
+
+        fBias.ExpertGlobalSetDac(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetChannelVolt", 6))
+            return false;
+
+        fBias.ExpertChannelSetVolt(evt.GetUShort(), evt.Get<float>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetChannelDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetChannelDac", 4))
+            return false;
+
+        fBias.ExpertChannelSetDac(evt.Get<uint16_t>(), evt.Get<uint16_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertLoadMapFile(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+        {
+            T::Warn("ExpertLoadMapFile - No file name given.");
+            return T::GetCurrentState();
+        }
+
+        if (fBias.GetStatus()!=State::kVoltageOff)
+        {
+            T::Warn("ExpertLoadMapFile - Voltage must have been turned off.");
+            return T::GetCurrentState();
+        }
+
+        BiasMap map;
+
+        try
+        {
+            map.Read(evt.GetText());
+        }
+        catch (const runtime_error &e)
+        {
+            T::Warn("Getting reference voltages failed: "+string(e.what()));
+            return T::GetCurrentState();
+        }
+
+        if (!fBias.SetReferences(map.Vgapd(), map.Voffset(), map.Vslope()))
+        {
+            T::Warn("Setting reference voltages failed.");
+            return T::GetCurrentState();
+        }
+
+        fBias.UpdateVA();
+
+        T::Info("Successfully loaded new mapping '"+evt.GetString()+"'");
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+    int SetUpdateInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetUpdateInterval", 4))
+            return false;
+
+        fBias.SetUpdateInterval(evt.Get<int32_t>()<0 ? 0 : evt.Get<uint32_t>());
+
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fBias.PostClose(-1);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fBias.PostClose(-1);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fBias.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fBias.SetReconnectDelay();
+        fBias.PostClose(0);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fBias.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDummyMode(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDummyMode", 1))
+            return T::kSM_FatalError;
+
+        fBias.SetDummyMode(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetExpertMode(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetExpertMode", 1))
+            return T::kSM_FatalError;
+
+        fExpertMode = evt.GetBool();
+
+        if (fExpertMode)
+            T::Warn("Expert commands enabled -- please ensure that you EXACTLY know what you do. These commands can destroy the system.");
+
+        return T::GetCurrentState();
+    }
+
+    int Shutdown(const string &reason)
+    {
+        fBias.RampAllDacs(0);
+        T::Info("Emergency shutdown initiated ["+reason+"].");
+        return State::kLocked;
+    }
+
+    int Unlock()
+    {
+        fBias.ResetEmergencyShutdown();
+        return fBias.GetStatus();
+    }
+
+    int Execute()
+    {
+        const int state = fBias.GetStatus();
+
+        if (fBias.IsEmergencyShutdown()/* && state>State::kInitializing && state<State::kExpertMode*/)
+        {
+            // This needs to be repeated for the case that in between a different command was processed
+            fBias.RampAllDacs(0);
+            return State::kLocked;
+        }
+
+        const Time now;
+        if (now>fSunRise)
+        {
+            const bool shutdown =
+                state==State::kRamping       ||
+                state==State::kVoltageOn     ||
+                state==State::kNotReferenced ||
+                state==State::kOverCurrent;
+
+            if (shutdown)
+                Shutdown("beginning of civil twilight");
+
+            fSunRise = now.GetNextSunRise(-6);
+
+            ostringstream msg;
+            msg << "During next sun-rise nautical twilight will end at " << fSunRise;
+            T::Info(msg);
+
+            if (shutdown)
+                return State::kLocked;
+        }
+
+        if (T::GetCurrentState()==State::kLocked)
+            return T::GetCurrentState();
+
+        if (fExpertMode && state>=State::kConnected)
+            return State::kExpertMode;
+
+        return state;
+    }
+
+public:
+    StateMachineBias(ostream &out=cout) :
+        StateMachineAsio<T>(out, "BIAS_CONTROL"), fBias(*this, *this),
+        fExpertMode(false), fSunRise(Time().GetNextSunRise(-6))
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                        "Bias-power supply not connected via USB.");
+
+        T::AddStateName(State::kConnecting, "Connecting",
+                        "Trying to establish USB connection to bias-power supply.");
+
+        T::AddStateName(State::kInitializing, "Initializing",
+                        "USB connection to bias-power supply established, synchronizing USB stream.");
+
+        T::AddStateName(State::kConnected, "Connected",
+                        "USB connection to bias-power supply established.");
+
+        T::AddStateName(State::kNotReferenced, "NotReferenced",
+                        "Internal reference voltage does not match last sent voltage.");
+
+        T::AddStateName(State::kVoltageOff, "VoltageOff",
+                        "All voltages are supposed to be switched off.");
+
+        T::AddStateName(State::kVoltageOn, "VoltageOn",
+                        "At least one voltage is switched on and all are at reference.");
+
+        T::AddStateName(State::kOverCurrent, "OverCurrent",
+                        "At least one channel is in over current state.");
+
+        T::AddStateName(State::kExpertMode, "ExpertMode",
+                        "Special (risky!) mode to directly send command to the bias-power supply.");
+
+        T::AddStateName(State::kRamping, "Ramping",
+                        "Voltage ramping in progress.");
+
+        T::AddStateName(State::kLocked, "Locked",
+                        "Locked due to emergency shutdown, no commands accepted except UNLOCK.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineBias::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("ENABLE_DUMMY_MODE", "B:1")
+            (bind(&StateMachineBias::SetDummyMode, this, placeholders::_1))
+            ("Enable dummy mode. In this mode SetAllChannels prints informations instead of sending anything to the bias crate."
+             "|enable[bool]:disable or enable dummy mode");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected, State::kVoltageOff)
+            (bind(&StateMachineBias::Disconnect, this))
+            ("disconnect from USB");
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected, State::kVoltageOff)
+            (bind(&StateMachineBias::Reconnect, this, placeholders::_1))
+            ("(Re)connect USB connection to Bias power supply, a new address can be given"
+             "|tty[string]:new USB address");
+
+
+        T::AddEvent("SET_UPDATE_INTERVAL", "I:1")
+            (bind(&StateMachineBias::SetUpdateInterval, this, placeholders::_1))
+            ("Set the updat einterval how often the currents are requested"
+             "|interval[ms]:Update interval in milliseconds");
+
+
+
+        T::AddEvent("REQUEST_STATUS", State::kConnected, State::kVoltageOn, State::kVoltageOff, State::kNotReferenced, State::kOverCurrent)
+            (Wrapper(bind(&ConnectionBias::ReadAllChannels, &fBias, false)))
+            ("Asynchronously request the status (current) of all channels.");
+
+        T::AddEvent("RESET_OVER_CURRENT_STATUS", State::kOverCurrent)
+            (Wrapper(bind(&ConnectionBias::OverCurrentReset, &fBias)))
+            ("Set all channels in over current state to 0V and send a system reset to reset the over current flags.");
+
+
+        T::AddEvent("SET_CHANNEL_DAC", "S:1;S:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetChannelDac, this, placeholders::_1))
+            ("Set a new target value in DAC counts for a single channel. Starts ramping if necessary."
+             "|channel[short]:Channel for which to set the target voltage [0-415]"
+             "|voltage[dac]:Target voltage in DAC units for the given channel");
+        T::AddEvent("SET_GLOBAL_DAC", "S:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetGlobalDac, this, placeholders::_1))
+            ("Set a new target value for all channels in DAC counts. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|voltage[dac]:Global target voltage in DAC counts.");
+        T::AddEvent("SET_ALL_CHANNELS_DAC", "S:416")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetAllChannelsDac, this, placeholders::_1))
+            ("Set a new target value for all channels in DAC counts. Starts ramping if necessary."
+             "|voltage[dac]:Global target voltage in DAC counts for all channels");
+
+
+        T::AddEvent("SET_CHANNEL_VOLTAGE", "S:1;F:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetChannelVolt, this, placeholders::_1))
+            ("Set a new target voltage for a single channel. Starts ramping if necessary."
+             "|channel[short]:Channel for which to set the target voltage [0-415]"
+             "|voltage[V]:Target voltage in volts for the given channel (will be converted to DAC units)");
+        T::AddEvent("SET_GLOBAL_VOLTAGE", "F:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetGlobalVolt, this, placeholders::_1))
+            ("Set a new target voltage for all channels. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|voltage[V]:Global target voltage in volts (will be converted to DAC units)");
+        T::AddEvent("SET_ALL_CHANNELS_VOLTAGE", "F:416")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetAllChannelsVolt, this, placeholders::_1))
+            ("Set all channels to the given new reference voltage. Starts ramping if necessary."
+             "|voltage[V]:New reference voltage for all channels");
+
+/*
+        T::AddEvent("INCREASE_CHANNEL_VOLTAGE", "S:1;F:1", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncChannelVolt, this, placeholders::_1))
+            ("Increases the voltage of all channels by the given offset. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|channel[short]:Channel for which to adapt the voltage [0-415]"
+             "|offset[V]:Offset to be added to all channels (will be converted to DAC counts)");
+        T::AddEvent("INCREASE_GLOBAL_VOLTAGE", "F:1", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncGlobalVolt, this, placeholders::_1))
+            ("Increases the voltage of all channels by the given offset. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|offset[V]:Offset to be added to all channels (will be converted to DAC counts)");
+        T::AddEvent("INCREASE_ALL_CHANNELS_VOLTAGE", "F:416", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncAllChannelsVolt, this, placeholders::_1))
+            ("Add the given voltages to the current reference voltages. Starts ramping if necessary."
+             "offset[V]:Offsets to be added to the reference voltage of all channels in volts");
+*/
+
+
+
+        T::AddEvent("SET_ZERO_VOLTAGE")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (Wrapper(bind(&ConnectionBias::RampAllDacs, &fBias, 0)))
+            ("Set all channels to a zero reference voltage. Starts ramping if necessary.");
+        T::AddEvent("SHUTDOWN")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::Shutdown, this, "user request"))
+            ("Same as SET_ZERO_VOLTAGE; but goes to locked state afterwards.");
+
+        T::AddEvent("UNLOCK", State::kLocked)
+            (bind(&StateMachineBias::Unlock, this))
+            ("Unlock if in locked state.");
+
+
+
+
+
+        T::AddEvent("STOP", State::kConnected, State::kRamping)
+            (Wrapper(bind(&ConnectionBias::RampStop, &fBias)))
+            ("Stop an on-going ramping");
+
+        T::AddEvent("START", State::kConnected, State::kNotReferenced)
+            (Wrapper(bind(&ConnectionBias::RampStart, &fBias)))
+            ("Start a ramping if no ramping is in progress and if reference values differ from current voltages");
+
+
+
+        T::AddEvent("PRINT_INFO")
+            (Wrapper(bind(&ConnectionBias::PrintInfo, &fBias)))
+            ("Print a table with all current read back with the last request operation");
+        T::AddEvent("PRINT_CURRENTS")
+            (Wrapper(bind(&ConnectionBias::PrintA, &fBias)))
+            ("Print a table with all current read back with the last request operation");
+        T::AddEvent("PRINT_VOLTAGES")
+            (Wrapper(bind(&ConnectionBias::PrintV, &fBias)))
+            ("Print a table with all voltages (current and reference voltages as currently in memory)");
+        T::AddEvent("PRINT_GAPD_REFERENCE_VOLTAGES")
+            (Wrapper(bind(&ConnectionBias::PrintReferenceVoltage, &fBias)))
+            ("Print the G-APD reference values (breakdown voltage + overvoltage) obtained from file");
+
+
+        T::AddEvent("EXPERT_MODE", "B:1")
+            (bind(&StateMachineBias::SetExpertMode, this, placeholders::_1))
+            ("Enable usage of expert commands (note that for safty reasons the are exclusive with the standard commands)");
+
+        T::AddEvent("EXPERT_RESET", State::kExpertMode)
+            (Wrapper(bind(&ConnectionBias::ExpertReset, &fBias, true)))
+            ("Send the RESET command (note that this is possibly harmfull command)");
+
+        T::AddEvent("EXPERT_SET_GLOBAL_VOLTAGE", "F:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetGlobalVolt, this, placeholders::_1))
+            ("Send the global set command. The given voltage is converted to DAC counts.");
+
+        T::AddEvent("EXPERT_SET_GLOBAL_DAC", "S:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetGlobalDac, this, placeholders::_1))
+            ("Send the global set command.");
+
+        T::AddEvent("EXPERT_SET_CHANNEL_VOLTAGE", "S:1;F:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetChannelVolt, this, placeholders::_1))
+            ("Send a single channel set command. The given voltage is converted to DAC commands.");
+
+        T::AddEvent("EXPERT_SET_CHANNEL_DAC", "S:1;S:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetChannelDac, this, placeholders::_1))
+            ("Send a single channel set command.");
+
+        T::AddEvent("EXPERT_LOAD_MAP_FILE", "C", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertLoadMapFile, this, placeholders::_1))
+            ("Load a new mapping file.");
+    }
+
+    ~StateMachineBias() { T::Warn("TODO: Implement rampming at shutdown!"); }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // FIXME: Read calib_offset
+        // FIXME: Check calib offset being smaller than +/-0.25V
+
+        fBias.SetVerbose(!conf.Get<bool>("quiet"));
+        fBias.SetDummyMode(conf.Get<bool>("dummy-mode"));
+
+        if (conf.Has("dev"))
+        {
+            fBias.SetEndpoint(conf.Get<string>("dev"));
+            T::Message("Setting device to "+fBias.URL());
+        }
+
+        const uint16_t step = conf.Get<uint16_t>("ramp-step");
+        const uint16_t time = conf.Get<uint16_t>("ramp-delay");
+
+        if (step>230) // 5V
+        {
+            T::Error("ramp-step exceeds allowed range.");
+            return 1;
+        }
+
+        fBias.SetRampStep(step);
+        fBias.SetRampTime(time);
+        fBias.SetUpdateInterval(conf.Get<uint32_t>("update-interval"));
+        fBias.SetEmergencyLimit(conf.Get<uint16_t>("emergency-limit"));
+        fBias.SetSyncDelay(conf.Get<uint16_t>("sync-delay"));
+
+        ostringstream str1, str2;
+        str1 << "Ramping in effective steps of " << fBias.GetRampStepVolt() << "V";
+        str2 << "Ramping with a delay per step of " << time << "ms";
+        T::Message(str1);
+        T::Message(str2);
+
+        // --------------------------------------------------------------------------
+
+        const float maxabsv = conf.Get<float>("volt-max-abs");
+        const float maxrelv = conf.Get<float>("volt-max-rel");
+        if (maxabsv>90)
+        {
+            T::Error("volt-max exceeds 90V.");
+            return 2;
+        }
+        if (maxabsv>75)
+            T::Warn("volt-max exceeds 75V.");
+        if (maxabsv<70)
+            T::Warn("volt-max below 70V.");
+        if (maxabsv<0)
+        {
+            T::Error("volt-max negative.");
+            return 3;
+        }
+
+        fBias.SetVoltMaxAbs(maxabsv);
+        fBias.SetVoltMaxRel(maxrelv);
+
+        ostringstream str3, str4;
+        str3 << "Effective maximum allowed absolute voltage: " << fBias.GetVoltMaxAbs() << "V";
+        str4 << "Effective maximum difference w.r.t to G-APD reference: " << fBias.GetVoltMaxRel() << "V";
+        T::Message(str3);
+        T::Message(str4);
+
+        // --------------------------------------------------------------------------
+
+        BiasMap map;
+
+        if (!conf.Has("bias-map-file") && !conf.Has("bias-database"))
+        {
+            T::Error("Neither bias-map-file not bias-database specified.");
+            return 5;
+        }
+
+        try
+        {
+            if (conf.Has("bias-map-file"))
+                map.Read(conf.Get<string>("bias-map-file"));
+
+            //if (conf.Has("bias-database"))
+            //    map.Retrieve(conf.Get<string>("bias-database"));
+        }
+        catch (const runtime_error &e)
+        {
+            T::Error("Getting reference voltages failed: "+string(e.what()));
+            return 7;
+        }
+
+        if (!fBias.SetReferences(map.Vgapd(), map.Voffset(), map.Vslope()))
+        {
+            T::Error("Setting reference voltages failed.");
+            return 8;
+        }
+
+        // --------------------------------------------------------------------------
+
+        if (conf.Has("dev"))
+            fBias.Connect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineBias<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("BIAS control options");
+    control.add_options()
+        ("no-dim,d",        po_bool(),  "Disable dim services")
+        ("dev",             var<string>(),       "Device address of USB port to bias-power supply")
+        ("quiet,q",         po_bool(true),       "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("dummy-mode",      po_bool(),           "Dummy mode - SetAllChannels prints info instead of sending new values.")
+        ("ramp-delay",      var<uint16_t>(15),   "Delay between the answer of one ramping step and sending the next ramp command to all channels in milliseconds.")
+        ("ramp-step",       var<uint16_t>(46),   "Maximum step in DAC counts during ramping (Volt = DAC*90/4096)")
+        ("update-interval", var<uint32_t>(3000), "Interval between two current requests in milliseconds")
+        ("sync-delay",      var<uint16_t>(500),  "Delay between sending the inital 0's after a newly established connection to synchronize the output stream in milliseconds")
+        ("volt-max-abs",    var<float>(75),      "Absolte upper limit for the voltage (in Volts)")
+        ("volt-max-rel",    var<float>(3.5),     "Relative upper limit for the voltage w.r.t. the G-APD reference voltage (in Volts)")
+        ("bias-map-file",   var<string>(),       "File with nominal and offset voltages for each channel.")
+        ("bias-database",   var<string>(),       "")
+        ("emergency-limit", var<uint16_t>(2200), "A current limit in ADC counts which, if exceeded, will initiate an emergency shutdown (0=off)")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The biasctrl program controls the bias-power supply boards.\n"
+        "\n"
+        "Note: At default the program is started without a command line (user) "
+        "interface. In this case Actions/Commands are available via Dim "
+        "exclusively.\n"
+        "Use the -c option to start the program with a command line interface.\n"
+        "\n"
+        "In the running application:\n"
+        "Use h or help to print a short help message about its usage.\n"
+        "\n"
+        "Usage: biasctrl [-c type] [OPTIONS]\n"
+        "  or:  biasctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineBias<StateMachine,ConnectionBias>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionBias>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimBias>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionBias>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionBias>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimBias>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimBias>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/chatclient.cc
===================================================================
--- branches/FACT++_part_filenames/src/chatclient.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/chatclient.cc	(revision 18732)
@@ -0,0 +1,93 @@
+#include <boost/filesystem.hpp>
+
+#include "Configuration.h"
+#include "ChatClient.h"
+#include "DimSetup.h"
+
+using namespace std;
+
+template <class T>
+void RunShell(Configuration &conf)
+{
+    // A normal kill will call its destructor! (Very nice feature ;) )
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog &win  = shell.GetStreamIn();
+    WindowLog &wout = shell.GetStreamOut();
+
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            win << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    shell.Run();
+}
+
+
+// ========================================================================
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host",      var<string>(""),                "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ("console,c", var<int>(0),    "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The chatclient is a simple Dim based chatclient.\n"
+        "\n"
+        "The chatclient is always started with user intercation. "
+        "Just enter a message. It will be broadcasted through the chatserv, "
+        "which need to be running."
+        "\n"
+        "Usage: chatclient [-c type] [OPTIONS]\n"
+        "  or:  chatclient [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    if (conf.Get<int>("console")==0)
+        RunShell<ChatShell>(conf);
+    else
+        RunShell<ChatConsole>(conf);
+
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/chatserv.cc
===================================================================
--- branches/FACT++_part_filenames/src/chatserv.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/chatserv.cc	(revision 18732)
@@ -0,0 +1,103 @@
+#include <iostream>
+
+#include "Dim.h"
+#include "EventImp.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+#include "ReadlineColor.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host",      var<string>(""),                "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The chatserv is a Dim-based chat server.\n"
+        "\n"
+        "It is a non-interactive program which acts as a relay of messages "
+        "sent via a Dim command CHAT/MSG and which are redirected to the "
+        "logging service CHAT/MESSAGE.\n"
+        "\n"
+        "Usage: chatserv [OPTIONS]\n"
+        "  or:  chatserv [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+class ChatServer : public StateMachineDim
+{
+private:
+    int HandleMsg(const EventImp &evt)
+    {
+        Comment(evt.GetString());
+        return GetCurrentState();
+    }
+public:
+    ChatServer(ostream &lout) : StateMachineDim(lout, "CHAT")
+    {
+        AddEvent("MSG", "C")
+            (bind(&ChatServer::HandleMsg, this, placeholders::_1))
+            ("|msg[string]:message to be distributed");
+    }
+};
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    WindowLog log;
+
+    ReadlineColor::PrintBootMsg(log, conf.GetName(), false);
+
+    if (conf.Has("log"))
+        if (!log.OpenLogFile(conf.Get<string>("log")))
+            cerr << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    return ChatServer(log).Run();
+}
+
+// **************************************************************************
+/** @example chatserv.cc
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/src/corruptFileFixer.cc
===================================================================
--- branches/FACT++_part_filenames/src/corruptFileFixer.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/corruptFileFixer.cc	(revision 18732)
@@ -0,0 +1,346 @@
+/*
+ * corruptFileFixer.cc
+ *
+ *  Takes a compressed fits file as an input, and copy the "good" part of it to a <filename>_recovered.fits.fz
+ *  No tstart or tstop nor checksums are updated. For this the script fixHeaderKeys.sh should be used along with the ftools
+ *
+ *  How to compile me:
+ *
+ * setenv PATH /gpfs/fact/swdev/root_v5.32.00/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin
+ *
+ * setenv LD_LIBRARY_PATH /lib64:/home/isdc/lyard/FACT++/.libs:/gpfs/fact/swdev/root_v5.32.00/lib:/swdev_nfs/FACT++/.libs:
+ *
+ * g++ -o corruptZFitsFixer --std=c++0x src/corruptFileFixer.cc -I./externals -DHAVE_ZLIB
+ *
+ *
+ *  Created on: Aug 23, 2016
+ *      Author: lyard
+ */
+
+#include <iostream>
+#include <fstream>
+#include <list>
+
+#include "factfits.h"
+
+using namespace std;
+
+
+    template<size_t N>
+        void revcpy(char *dest, const char *src, int num)
+    {
+        const char *pend = src + num*N;
+        for (const char *ptr = src; ptr<pend; ptr+=N, dest+=N)
+            std::reverse_copy(ptr, ptr+N, dest);
+    }
+
+    string format_integer(unsigned long value)
+    {
+        ostringstream str;
+        str << "          ";
+        if (value < 10000000000) str << " ";
+        if (value <  1000000000) str << " ";
+        if (value <   100000000) str << " ";
+        if (value <    10000000) str << " ";
+        if (value <     1000000) str << " ";
+        if (value <      100000) str << " ";
+        if (value <       10000) str << " ";
+        if (value <        1000) str << " ";
+        if (value <         100) str << " ";
+        if (value <          10) str << " ";
+        str << value << " ";
+        return str.str();
+    }
+
+
+int main(int argc, char** argv)
+{
+    if (argc != 2)
+    {
+        cout << "Only one argument please: the input filename" << endl;
+        return -1;
+    }
+
+    ifstream input(argv[1], ios::in | ios::binary);
+
+    if (!input)
+    {
+        cout << "Impossible to open file named \"" << argv[1] << "\"" << endl;
+        return -2;
+    }
+
+    //First look for the calibration table and make sure that it is complete otherwise there is nothing that we can do
+    //read data by 80 chars chunks
+    char*        fits_buffer  = new char[81];
+    fits_buffer[80] = 0;
+    unsigned int n_lines_read = 0;
+    unsigned int num_start_tables = 0;
+    unsigned int num_end_tables   = 0;
+    streampos start_of_table_header = 0;
+
+    //read fits "rows" until we arrive at the end of the data table header, i.e. 3 END and 2 XTENSION
+    while (num_start_tables != 2 || num_end_tables != 3)
+    {
+        input.read(fits_buffer, 80);
+        if (input.eof()) break;
+        n_lines_read++;
+        if (!strcmp(fits_buffer, "XTENSION= 'BINTABLE'           / binary table extension                         "))
+        {
+            num_start_tables ++;
+            if (num_start_tables == 2)
+                start_of_table_header = input.tellg() - streampos(80);
+        }
+        if (!strcmp(fits_buffer, "END                                                                             "))
+            num_end_tables++;
+        //look for relevant header keywords to be updated and remember their address in the file
+        if (num_start_tables == 2)
+        {//display the broken table header, for informatio
+            //TODO make sure that this is a data run, otherwise constants used below will not work
+            cout << fits_buffer << endl;
+        }
+    }
+
+    if (num_start_tables != 2 || num_end_tables != 3)
+    {
+        cout << "Could not reach the end of the data table header: nothing could be recovered... sorry." << endl;
+        return -2;
+    }
+
+    //we are now at the end of the data table header. Progress until the start of the data, i.e. move to 36 - (n_lines_read%36)
+    int i_end = (36-(n_lines_read%36));
+
+    for (int i=0;i<i_end; i++)
+    {
+        input.read(fits_buffer, 80);
+        if (input.eof()) break;
+        n_lines_read++;
+    }
+
+    streampos catalog_beginning     = input.tellg();
+    size_t    catalog_reserved_size = 4800000;
+    //we passed the header padding: skip the data and reserved catalog space
+    input.seekg(catalog_beginning + (streampos)(catalog_reserved_size));
+    n_lines_read += 60000;
+
+    //get a list of valid tiles
+    list<FITS::TileHeader> good_tiles;
+    //remember where the data starts
+    streampos data_beginning = input.tellg();
+    streampos previous_tile_begin = input.tellg();
+    //read the very first tile header
+    input.read(fits_buffer, 80);
+
+    if (memcmp(fits_buffer, "TILE", 4))
+    {
+        cout << "Compressed data does not start by string TILE: nothing could be recovered, sorry." << endl;
+        return -4;
+    }
+
+    FITS::TileHeader* thead = reinterpret_cast<FITS::TileHeader*>(fits_buffer);
+    FITS::TileHeader  previous_tile = *thead;
+    //previous_tile has the previous tile header. Move forward, and remember the previous valid tile every time we find a new valid header
+    while (!input.eof())
+    {
+        //skip previous tile
+        input.seekg(previous_tile_begin + (streampos)(thead->size));
+        streampos this_tile_start = input.tellg();
+        input.read(fits_buffer, 80);
+        if (input.eof())
+            break;
+        if (fits_buffer[0] != 'T' || fits_buffer[1] != 'I' || fits_buffer[2] != 'L' || fits_buffer[3] != 'E')
+            break;
+
+        //we've found a new valid tile header: remember the previous one
+        good_tiles.push_back(previous_tile);
+        previous_tile = *thead;
+        previous_tile_begin = this_tile_start;
+    }
+
+    unsigned int num_tiles_recovered = good_tiles.size();
+    //done.
+    cout << "We have found " << num_tiles_recovered << " valid tiles. Recovering catalog now " << endl;
+
+    std::vector<std::vector<std::pair<int64_t, int64_t> > > catalog;
+
+    FITS::BlockHeader bhead;
+
+    streamoff offset_in_heap = 0;
+    streamoff valid_data = 0;
+    unsigned int num_cols    = 9;
+    input.close();
+    input.open(argv[1], ios::in | ios::binary);
+    input.seekg(data_beginning);
+    for (unsigned int i=0;i<num_tiles_recovered;i++)
+    {
+        input.read(fits_buffer, sizeof(FITS::TileHeader));
+        if (!input.good())
+            break;
+        if (memcmp(thead->id, "TILE", 4))
+            break;
+
+        catalog.emplace_back();
+        offset_in_heap += sizeof(FITS::TileHeader);
+
+        //skip through the columns
+        for (unsigned int i=0;i<num_cols;i++)
+        {
+            input.read((char*)(&bhead), sizeof(FITS::BlockHeader));
+            if (!input.good())
+            {
+                break;
+            }
+            catalog.back().emplace_back((int64_t)(bhead.size), offset_in_heap);
+            offset_in_heap += bhead.size;
+            input.seekg(data_beginning + offset_in_heap);
+        }
+
+        //at the very last, 0 size time-something column
+        catalog.back().emplace_back(0,0);
+
+        if (!input.good())
+        {
+            catalog.pop_back();
+            break;
+        }
+        valid_data = offset_in_heap;
+    }
+
+    if (catalog.size() != num_tiles_recovered)
+        cout << "Notice: some apparently OK tiles are in fact corrupted: could only recover " << catalog.size() << " tiles." << endl;
+
+    string recovered_filename(argv[1]);
+    recovered_filename = recovered_filename + ".recovered";
+
+    cout << "Catalog recovered. Now writing " << recovered_filename << endl;
+
+    ifstream test_input(recovered_filename.c_str(), ios::in | ios::binary);
+
+    if (test_input)
+    {
+        cout << "Error: output file already exists. Aborting. " << endl;
+        return -10;
+    }
+
+    ofstream output(recovered_filename.c_str(), ios::out | ios::binary);
+    input.close();
+    input.open(argv[1], ios::in | ios::binary);
+
+    cout << "Writing calibration table...";
+    cout.flush();
+    //first skip the early section of the file: basic fits table, and calibration table
+    while (input.tellg() != start_of_table_header)
+    {
+        input.read(fits_buffer, 80);
+        output.write(fits_buffer, 80);
+    }
+
+    cout << "done." << endl << "Writing updated table header...";
+    cout.flush();
+
+    ostringstream updated_key;
+    //calculate updated header keys
+    unsigned long theap  = 160*num_tiles_recovered;
+    unsigned long pcount = valid_data + catalog_reserved_size - theap;
+
+    while (input.tellg() != catalog_beginning)
+    {
+        input.read(fits_buffer, 80);
+        if (!memcmp(fits_buffer, "NAXIS2", 6))
+        {
+            updated_key.str("");
+            updated_key << "NAXIS2  =" << format_integer(num_tiles_recovered) << "/ number of rows in table                        ";
+            output.write(updated_key.str().c_str(), 80);
+            continue;
+        }
+        if (!memcmp(fits_buffer, "PCOUNT", 6))
+        {
+            updated_key.str("");
+            updated_key << "PCOUNT  =" << format_integer(pcount) << "/ size of special data area                      ";
+            output.write(updated_key.str().c_str(), 80);
+            continue;
+        }
+        if (!memcmp(fits_buffer, "ZNAXIS2", 7))
+        {
+            updated_key.str("");
+            updated_key << "ZNAXIS2 =" << format_integer(num_tiles_recovered) << "/ Number of uncompressed rows                    ";
+            output.write(updated_key.str().c_str(), 80);
+            continue;
+        }
+        if (!memcmp(fits_buffer, "ZHEAPPTR", 8))
+        {
+            updated_key.str("");
+            updated_key << "ZHEAPPTR=" << format_integer(catalog_reserved_size) << "                                                 ";
+            output.write(updated_key.str().c_str(), 80);
+            continue;
+        }
+        if (!memcmp(fits_buffer, "THEAP", 5))
+        {
+            updated_key.str("");
+            updated_key << "THEAP   =" << format_integer(theap) << "                                                 ";
+            output.write(updated_key.str().c_str(), 80);
+            continue;
+        }
+
+        output.write(fits_buffer, 80);
+    }
+cout << "num tiles recovered: " << num_tiles_recovered << endl;
+cout << "pcount: " << pcount << endl;
+cout << "catalog_reserved_size: " << catalog_reserved_size << endl;
+cout << "theap: " << theap << endl;
+cout << "offset in heap: " << offset_in_heap << endl;
+cout << "valid data:     " << valid_data << endl;
+    cout << "done." << endl << "Writing updated catalog...";
+    cout.flush();
+
+    //write the catalog itself
+    vector<char> swapped_catalog(catalog_reserved_size);
+    unsigned int shift = 0;
+    for (auto it=catalog.cbegin(); it!=catalog.cend(); it++)
+    {
+        revcpy<sizeof(uint64_t)>(swapped_catalog.data() + shift, (char*)(it->data()), (num_cols+1)*2);
+        shift += 160;
+    }
+
+    if (catalog.size() < 30000)
+        memset(swapped_catalog.data()+shift, 0, catalog_reserved_size - shift);
+
+    output.write(swapped_catalog.data(), catalog_reserved_size);
+
+    cout << "done." << endl << "Writing recovered data...";
+    cout.flush();
+
+    //write the actual data
+    input.seekg(input.tellg() + (streampos)(catalog_reserved_size));
+cout << "starting writing data at " << output.tellp() << endl;
+    unsigned int actual_data_size = pcount + theap - catalog_reserved_size;
+    unsigned int i=0;
+    for (;i<actual_data_size-80;i+=80)
+    {
+        input.read(fits_buffer, 80);
+        output.write(fits_buffer, 80);
+    }
+
+    input.read(fits_buffer, actual_data_size%80);
+    output.write(fits_buffer, actual_data_size%80);
+cout << "ended writing data at " << output.tellp() << endl;
+    cout << "done." << endl << "Writing FITS padding...";
+    cout.flush();
+cout << "Current extra chars: " << output.tellp()%(80*36) << endl;
+cout << "Will write " << 2880 - output.tellp()%(2880) << " filling bytes while at byte " << output.tellp() << endl;
+    //eventually write the fits padding
+    if (output.tellp()%(80*36) > 0)
+    {
+        std::vector<char> filler(2880-output.tellp()%(2880), 0);
+        output.write(filler.data(), filler.size());
+    }
+    output.close();
+    cout << "All done !." << endl;
+    cout << "TSTOP is also most likely invalid, so:" << endl;
+    cout << "      - run /swdev_nfs/FACT++/fitsdump <filename> -c UnixTimeUTC --minmax --nozero" << endl;
+    cout << "      - update header key using e.g. fv" << endl;
+    cout << "Checksums are now invalid: please run fchecksum <filename> update+ datasum+ " << endl;
+    return 0;
+}
+
+
+
Index: branches/FACT++_part_filenames/src/cosyctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/cosyctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/cosyctrl.cc	(revision 18732)
@@ -0,0 +1,1737 @@
+#include <boost/regex.hpp>
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "HeadersDrive.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace Drive;
+
+// ------------------------------------------------------------------------
+
+class ConnectionDrive : public Connection
+{
+    int  fState;
+
+    bool fIsVerbose;
+
+    // --verbose
+    // --hex-out
+    // --dynamic-out
+    // --load-file
+    // --leds
+    // --trigger-interval
+    // --physcis-coincidence
+    // --calib-coincidence
+    // --physcis-window
+    // --physcis-window
+    // --trigger-delay
+    // --time-marker-delay
+    // --dead-time
+    // --clock-conditioner-r0
+    // --clock-conditioner-r1
+    // --clock-conditioner-r8
+    // --clock-conditioner-r9
+    // --clock-conditioner-r11
+    // --clock-conditioner-r13
+    // --clock-conditioner-r14
+    // --clock-conditioner-r15
+    // ...
+
+    virtual void UpdatePointing(const Time &, const array<double, 2> &)
+    {
+    }
+
+    virtual void UpdateTracking(const Time &, const array<double, 8> &)
+    {
+    }
+
+    virtual void UpdateStatus(const Time &, const array<uint8_t, 3> &)
+    {
+    }
+
+    virtual void UpdateStarguider(const Time &, const DimStarguider &)
+    {
+    }
+
+    virtual void UpdateTPoint(const Time &, const DimTPoint &, const string &)
+    {
+    }
+
+public:
+    virtual void UpdateSource(const string & = "", bool = false)
+    {
+    }
+    virtual void UpdateSource(const array<double, 6> &, const string& = "")
+    {
+    }
+
+protected:
+    map<uint16_t, int> fCounter;
+
+    ba::streambuf fBuffer;
+
+public:
+    static Time ReadTime(istream &in)
+    {
+        uint16_t y, m, d, hh, mm, ss, ms;
+        in >> y >> m >> d >> hh >> mm >> ss >> ms;
+
+        return Time(y, m, d, hh, mm, ss, ms*1000);
+    }
+
+    static double ReadAngle(istream &in)
+    {
+        char     sgn;
+        uint16_t d, m;
+        float    s;
+
+        in >> sgn >> d >> m >> s;
+
+        const double ret = ((60.0 * (60.0 * (double)d + (double)m) + s))/3600.;
+        return sgn=='-' ? -ret : ret;
+    }
+
+    double GetDevAbs(double nomzd, double meszd, double devaz)
+    {
+        nomzd *= M_PI/180;
+        meszd *= M_PI/180;
+        devaz *= M_PI/180;
+
+        const double x = sin(meszd) * sin(nomzd) * cos(devaz);
+        const double y = cos(meszd) * cos(nomzd);
+
+        return acos(x + y) * 180/M_PI;
+    }
+
+    uint16_t fDeviationLimit;
+    uint16_t fDeviationCounter;
+    uint16_t fDeviationMax;
+
+    vector<double> fDevBuffer;
+    uint64_t       fDevCount;
+
+    uint64_t fTrackingCounter;
+
+    void ProcessDriveStatus(const string &line)
+    {
+        Message(line);
+    }
+
+    bool ProcessStargReport(const string &line)
+    {
+        istringstream stream(line);
+
+        // 0: Error
+        // 1: Standby
+        // 2: Monitoring
+        uint16_t status1;
+        stream >> status1;
+        /*const Time t1 = */ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 = */ReadTime(stream);
+
+        double misszd, missaz;
+        stream >> misszd >> missaz;
+
+        const double zd = ReadAngle(stream);
+        const double az = ReadAngle(stream);
+
+        double cx, cy;
+        stream >> cx >> cy;
+
+        int ncor;
+        stream >> ncor;
+
+        double bright, mjd;
+        stream >> bright >> mjd;
+
+        int nled, nring, nstars;
+        stream >> nled >> nring >> nstars;
+
+        if (stream.fail())
+            return false;
+
+        DimStarguider data;
+
+        data.fMissZd = misszd;
+        data.fMissAz = missaz;
+        data.fNominalZd = zd;
+        data.fNominalAz = az;
+        data.fCenterX = cx;
+        data.fCenterY = cy;
+        data.fNumCorrelated = ncor;
+        data.fBrightness = bright;
+        data.fNumLeds = nled;
+        data.fNumRings = nring;
+        data.fNumStars = nstars;
+
+        UpdateStarguider(Time(mjd), data);
+
+        return true;
+    }
+
+    bool ProcessTpointReport(const string &line)
+    {
+        istringstream stream(line);
+
+        uint16_t status1;
+        stream >> status1;
+        const Time t1 = ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 =*/ ReadTime(stream);
+
+        char type;
+        stream >> type;
+        if (type != 'T')
+            return false;
+
+        double az1, alt1, az2, alt2, ra, dec, dzd, daz;
+        stream >> az1 >> alt1 >> az2 >> alt2 >> ra >> dec >> dzd >> daz;
+
+        // c: center, s:start
+        double mjd, cmag, smag, cx, cy, sx, sy;
+        stream >> mjd >> cmag >> smag >> cx >> cy >> sx >> sy;
+
+        int nled, nring, nstar, ncor;
+        stream >> nled >> nring >> nstar >> ncor;
+
+        double bright, mag;
+        stream >> bright >> mag;
+
+        string name;
+        stream >> name;
+
+        if (stream.fail())
+            return false;
+
+        DimTPoint tpoint;
+
+        tpoint.fRa         = ra;
+        tpoint.fDec        = dec;
+
+        tpoint.fNominalZd  = 90-alt1-dzd;
+        tpoint.fNominalAz  = az1 +daz;
+
+        tpoint.fPointingZd = 90-alt1;
+        tpoint.fPointingAz = az1;
+
+        tpoint.fFeedbackZd = 90-alt2;
+        tpoint.fFeedbackAz = az2;
+
+        tpoint.fNumLeds    = nled;
+        tpoint.fNumRings   = nring;
+
+        tpoint.fCenterX    = cx;
+        tpoint.fCenterY    = cy;
+        tpoint.fCenterMag  = cmag;
+
+        tpoint.fStarX      = sx;
+        tpoint.fStarY      = sy;
+        tpoint.fStarMag    = smag;
+
+        tpoint.fRealMag    = mag;
+
+        UpdateTPoint(t1, tpoint, name);
+
+        return true;
+    }
+
+    bool ProcessDriveReport(const string &line)
+    {
+        // DRIVE-REPORT M1
+        // 01 2011 05 14 11 31 19 038
+        // 02 1858 11 17 00 00 00 000
+        // + 000 00 000 + 000 00 000
+        // + 000 00 000
+        // 55695.480081
+        // + 000 00 000 + 000 00 000
+        // + 000 00 000 + 000 00 000
+        // 0000.000 0000.000
+        // 0 2
+
+        // status
+        // year month day hour minute seconds millisec
+        // year month day hour minute seconds millisec
+        // ra(+ h m s) dec(+ d m s) ha(+ h m s)
+        // mjd
+        // zd(+ d m s) az(+ d m s)
+        // zd(+ d m s) az(+ d m s)
+        // zd_err az_err
+        // armed(0=unlocked, 1=locked)
+        // stgmd(0=none, 1=starguider, 2=starguider off)
+        istringstream stream(line);
+
+        uint16_t status1;
+        stream >> status1;
+        const Time t1 = ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 =*/ ReadTime(stream);
+
+        const double ra  = ReadAngle(stream);
+        const double dec = ReadAngle(stream);
+        const double ha  = ReadAngle(stream);
+
+        double mjd;
+        stream >> mjd;
+
+        const double zd1 = ReadAngle(stream);  // Nominal (zd/az asynchronous, dev  synchronous, mjd  synchronous with zd)
+        const double az1 = ReadAngle(stream);  // Nominal (zd/az asynchronous, dev  synchronous, mjd  synchronous with z)
+        const double zd2 = ReadAngle(stream);  // Masured (zd/az  synchronous, dev asynchronous, mjd asynchronous)
+        const double az2 = ReadAngle(stream);  // Measurd (zd/az  synchronous, dev asynchronous, mjd asynchronous)
+
+        double zd_err, az_err;
+        stream >> zd_err;                      // Deviation = Nominal - Measured
+        stream >> az_err;                      // Deviation = Nominal - Measured
+
+        uint16_t armed, stgmd;
+        stream >> armed;
+        stream >> stgmd;
+
+        uint32_t pdo3;
+        stream >> hex >> pdo3;
+
+        if (stream.fail())
+            return false;
+
+        // Status 0: Error
+        // Status 1: Stopped
+        // Status 3: Stopping || Moving
+        // Status 4: Tracking
+        if (status1==0)
+            status1 = StateMachineImp::kSM_Error - Drive::State::kNotReady;
+
+        const bool ready = (pdo3&0xef00ef)==0xef00ef;
+        if (!ready)
+            fState = Drive::State::kNotReady;
+        else
+            fState = status1==1 ?
+                Drive::State::kReady+armed :
+                Drive::State::kNotReady+status1;
+
+        // kDisconnected = 1,
+        // kConnected,
+        // kNotReady,
+        // kReady,
+        // kArmed,
+        // kMoving,
+        // kTracking,
+        // kOnTrack,
+
+        // pdo3:
+        //   1 Ab
+        //   2 1
+        //   4 Emergency
+        //   8 OverVolt
+        //  10 Move (Drehen-soll)
+        //  20 Af
+        //  40 1
+        //  80 Power on Az
+        // ------------------
+        // 100 NOT UPS Alarm
+        // 200 UPS on Battery
+        // 400 UPS charging
+
+        // Power cut: 2ef02ef
+        // charging:  4ef04ef
+
+        // Convert to deg
+        zd_err /= 3600;
+        az_err /= 3600;
+
+        // Calculate absolut deviation on the sky
+
+        const double dev = GetDevAbs(zd1, zd1-zd_err, az_err)*3600;
+
+        fDevBuffer[fDevCount++%5] = dev;
+
+        const uint8_t cnt    = fDevCount<5 ? fDevCount : 5;
+        const double  avgdev = accumulate(fDevBuffer.begin(), fDevBuffer.begin()+cnt, 0)/cnt;
+
+        // If any other state than tracking or a deviation
+        // larger than 60, reset the counter
+        if (fState!=State::kTracking || avgdev>fDeviationLimit)
+            fTrackingCounter = 0;
+        else
+            fTrackingCounter++;
+
+        // If in tracking, at least five consecutive reports (5s)
+        // must be below 60arcsec deviation, this is considered OnTrack
+        if (fState==State::kTracking && fTrackingCounter>=fDeviationCounter)
+            fState = State::kOnTrack;
+
+        // Having th state as Tracking will reset the counter
+        if (fState==State::kOnTrack && avgdev>fDeviationMax)
+            fState = State::kTracking;
+
+        if (fState!=State::kTracking && fState!=State::kOnTrack)
+            fDevCount = 0;
+
+        // 206 206         ce ce       pwr vlt emcy fs        |  pwr vlt emcy fs
+        // 239 239         ef ef       pwr vlt emcy fs bb rf  |  pwr vlt emcy fs bb rf
+        // 111  78         6f 4e           vlt emcy fs bb rf  |          emcy fs bb
+
+        /*
+        fArmed     = data[3]&0x01; // armed status
+        fPosActive = data[3]&0x02; // positioning active
+        fRpmActive = data[3]&0x04; // RPM mode switched on
+                  // data[3]&0x08; //  - unused -
+                  // data[3]&0x10; //  - unused -
+                  // data[3]&0x20; //  - unused -
+        //fInControl = data[3]&0x40; // motor uncontrolled
+                  // data[3]&0x80; // axis resetted (after errclr, motor stop, motor on)
+
+        fStatus = data[3];
+    }
+
+    const LWORD_t stat = data[0] | (data[1]<<8);
+    if (fStatusPdo3!=stat)
+    {
+        gLog << inf << MTime(-1) << ": " << GetNodeName() << " - PDO3(0x" << hex << (int)stat << dec << ") = ";
+        const Bool_t ready  = stat&0x001;
+        const Bool_t fuse   = stat&0x002;
+        const Bool_t emcy   = stat&0x004;
+        const Bool_t vltg   = stat&0x008;
+        const Bool_t mode   = stat&0x010;
+        const Bool_t rf     = stat&0x020;
+        const Bool_t brake  = stat&0x040;
+        const Bool_t power  = stat&0x080;
+        const Bool_t alarm  = stat&0x100;  // UPS Alarm      (FACT only)
+        const Bool_t batt   = stat&0x200;  // UPS on battery (FACT only)
+        const Bool_t charge = stat&0x400;  // UPS charging   (FACT only)
+        if (ready)  gLog << "DKC-Ready ";
+        if (fuse)   gLog << "FuseOk ";
+        if (emcy)   gLog << "EmcyOk ";
+        if (vltg)   gLog << "OvervoltOk ";
+        if (mode)   gLog << "SwitchToManualMode ";
+        if (rf)     gLog << "RF ";
+        if (brake)  gLog << "BrakeOpen ";
+        if (power)  gLog << "PowerOn ";
+        if (alarm)  gLog << "UPS-PowerLoss ";
+        if (batt)   gLog << "UPS-OnBattery ";
+        if (charge) gLog << "UPS-Charging ";
+        gLog << endl;
+
+        fStatusPdo3 = stat;
+        }*/
+
+        // ((stat1&0xffff)<<16)|(stat2&0xffff)
+                                                                              // no alarm, no batt, no charge
+        const array<uint8_t, 3> state = {{ uint8_t(pdo3>>16), uint8_t(pdo3), uint8_t(pdo3>>24) }};
+        UpdateStatus(t1, state);
+
+        const array<double, 2> point = {{ zd2, az2 }};
+        UpdatePointing(t1, point);
+
+        const array<double, 8> track =
+        {{
+            ra, dec, ha,
+            zd1, az1,
+            zd_err, az_err,
+            dev
+        }};
+        if (mjd>0)
+            UpdateTracking(Time(mjd), track);
+
+        // ---- DIM ----> t1 as event time
+        //                status1
+        //                mjd
+        //                ra/dec/ha
+        //                zd/az (nominal)
+        //                zd/az (current)
+        //                err(zd/az)
+        //                [armed] [stgmd]
+
+        // Maybe:
+        // POINTING_POSITION --> t1, zd/az (current), [armed, stgmd, status1]
+        //
+        // if (mjd>0)
+        // TRACKING_POSITION --> mjd, zd/az (nominal), err(zd/az)
+        //                       ra/dec, ha(not well defined),
+        //                       [Nominal + Error == Current]
+
+        // MJD is the time which corresponds to the nominal position
+        // t1  is the time which corresponds to the current position/HA
+
+        return true;
+    }
+
+protected:
+    void HandleReceivedReport(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (cosy).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string line;
+        getline(is, line);
+
+        if (fIsVerbose)
+            Out() << line << endl;
+
+        StartReadReport();
+
+        if (line.substr(0, 13)=="DRIVE-STATUS ")
+        {
+            ProcessDriveStatus(line.substr(70));
+            return;
+        }
+
+        if (line.substr(0, 13)=="STARG-REPORT ")
+        {
+            ProcessStargReport(line.substr(16));
+            return;
+        }
+
+        if (line.substr(0, 14)=="TPOINT-REPORT ")
+        {
+            ProcessTpointReport(line.substr(17));
+            return;
+        }
+
+        if (line.substr(0, 13)=="DRIVE-REPORT ")
+        {
+            ProcessDriveReport(line.substr(16));
+            return;
+        }
+    }
+
+    void StartReadReport()
+    {
+        boost::asio::async_read_until(*this, fBuffer, '\n',
+                                      boost::bind(&ConnectionDrive::HandleReceivedReport, this,
+                                                  dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void KeepAlive()
+    {
+        PostMessage(string("KEEP_ALIVE"));
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(10));
+        fKeepAlive.async_wait(boost::bind(&ConnectionDrive::HandleKeepAlive,
+                                          this, dummy::error));
+    }
+
+    void HandleKeepAlive(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        KeepAlive();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        StartReadReport();
+        KeepAlive();
+    }
+
+    /*
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            stringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+
+        PostClose();
+    }*/
+
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionDrive(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fState(-1), fIsVerbose(true),
+        fDeviationLimit(120), fDeviationCounter(5), fDeviationMax(240),
+        fDevBuffer(5), fDevCount(0),
+        fTrackingCounter(0), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDeviationCondition(uint16_t limit, uint16_t counter, uint16_t max)
+    {
+        fDeviationLimit   = limit;
+        fDeviationCounter = counter;
+        fDeviationMax     = max;
+    }
+
+    int GetState() const
+    {
+        if (!IsConnected())
+            return 1;
+        if (IsConnected() && fState<0)
+            return 2;
+        return fState;
+    }
+};
+
+const uint16_t ConnectionkMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimDrive : public ConnectionDrive
+{
+private:
+    DimDescribedService fDimPointing;
+    DimDescribedService fDimTracking;
+    DimDescribedService fDimSource;
+    DimDescribedService fDimTPoint;
+    DimDescribedService fDimStatus;
+
+    void UpdatePointing(const Time &t, const array<double, 2> &arr)
+    {
+        fDimPointing.setData(arr);
+        fDimPointing.Update(t);
+    }
+
+    void UpdateTracking(const Time &t,const array<double, 8> &arr)
+    {
+        fDimTracking.setData(arr);
+        fDimTracking.Update(t);
+    }
+
+    void UpdateStatus(const Time &t, const array<uint8_t, 3> &arr)
+    {
+        fDimStatus.setData(arr);
+        fDimStatus.Update(t);
+    }
+
+    void UpdateTPoint(const Time &t, const DimTPoint &data,
+                      const string &name)
+    {
+        vector<char> dim(sizeof(data)+name.length()+1);
+        memcpy(dim.data(), &data, sizeof(data));
+        memcpy(dim.data()+sizeof(data), name.c_str(), name.length()+1);
+
+        fDimTPoint.setData(dim);
+        fDimTPoint.Update(t);
+    }
+
+public:
+    ConnectionDimDrive(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionDrive(ioservice, imp),
+        fDimPointing("DRIVE_CONTROL/POINTING_POSITION", "D:1;D:1",
+                     "|Zd[deg]:Zenith distance (encoder readout)"
+                     "|Az[deg]:Azimuth angle (encoder readout)"),
+        fDimTracking("DRIVE_CONTROL/TRACKING_POSITION", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1",
+                     "|Ra[h]:Command right ascension"
+                     "|Dec[deg]:Command declination"
+                     "|Ha[h]:Corresponding hour angle"
+                     "|Zd[deg]:Nominal zenith distance"
+                     "|Az[deg]:Nominal azimuth angle"
+                     "|dZd[deg]:Control deviation Zd"
+                     "|dAz[deg]:Control deviation Az"
+                     "|dev[arcsec]:Absolute control deviation"),
+        fDimSource("DRIVE_CONTROL/SOURCE_POSITION", "D:1;D:1;D:1;D:1;D:1;D:1;C:31",
+                     "|Ra_src[h]:Source right ascension"
+                     "|Dec_src[deg]:Source declination"
+                     "|Ra_cmd[h]:Command right ascension"
+                     "|Dec_cmd[deg]:Command declination"
+                     "|Offset[deg]:Wobble offset"
+                     "|Angle[deg]:Wobble angle"
+                     "|Name[string]:Source name if available"),
+        fDimTPoint("DRIVE_CONTROL/TPOINT_DATA", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;S:1;S:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;C",
+                   "|Ra[h]:Command right ascension"
+                   "|Dec[deg]:Command declination"
+                   "|Zd_nom[deg]:Nominal zenith distance"
+                   "|Az_nom[deg]:Nominal azimuth angle"
+                   "|Zd_cur[deg]:Current zenith distance (calculated from image)"
+                   "|Az_cur[deg]:Current azimuth angle (calculated from image)"
+                   "|Zd_enc[deg]:Feedback zenith axis (from encoder)"
+                   "|Az_enc[deg]:Feedback azimuth angle (from encoder)"
+                   "|N_leds[cnt]:Number of detected LEDs"
+                   "|N_rings[cnt]:Number of rings used to calculate the camera center"
+                   "|Xc[pix]:X position of center in CCD camera frame"
+                   "|Yc[pix]:Y position of center in CCD camera frame"
+                   "|Ic[au]:Average intensity (LED intensity weighted with their frequency of occurance in the calculation)"
+                   "|Xs[pix]:X position of start in CCD camera frame"
+                   "|Ys[pix]:Y position of star in CCD camera frame"
+                   "|Ms[mag]:Artifical magnitude of star (calculated form image))"
+                   "|Mc[mag]:Catalog magnitude of star"
+                   "|name[string]:Name of star"),
+        fDimStatus("DRIVE_CONTROL/STATUS", "C:2;C:1", "")
+
+    {
+    }
+
+    void UpdateSource(const string &name="", bool tracking=false)
+    {
+        vector<char> dat(6*sizeof(double)+31, 0);
+        strncpy(dat.data()+6*sizeof(double), name.c_str(), 30);
+
+        fDimSource.setQuality(tracking);
+        fDimSource.Update(dat);
+    }
+
+    void UpdateSource(const array<double, 6> &arr, const string &name="")
+    {
+        vector<char> dat(6*sizeof(double)+31, 0);
+        memcpy(dat.data(), arr.data(), 6*sizeof(double));
+        strncpy(dat.data()+6*sizeof(double), name.c_str(), 30);
+
+        fDimSource.setQuality(1);
+        fDimSource.Update(dat);
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineDrive : public StateMachineAsio<T>
+{
+private:
+    S fDrive;
+
+    string fDatabase;
+
+    typedef map<string, Source> sources;
+    sources fSources;
+
+    string fLastCommand;  // Last tracking (RADEC) command
+    int fAutoResume;      // 0: disabled, 1: enables, 2: resuming
+    Time fAutoResumeTime;
+
+    // Status 0: Error
+    // Status 1: Unlocked
+    // Status 2: Locked
+    // Status 3: Stopping || Moving
+    // Status 4: Tracking
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    enum Coordinates
+    {
+        kPoint,
+        kTrackSlow,
+        kTrackFast
+    };
+
+    string AngleToStr(double angle)
+    {
+        /* Handle sign */
+        const char sgn = angle<0?'-':'+';
+
+        /* Round interval and express in smallest units required */
+        double a = round(3600. * fabs(angle)); // deg to seconds
+
+        /* Separate into fields */
+        const double ad = trunc(a/3600.);
+        a -= ad * 3600.;
+        const double am = trunc(a/60.);
+        a -= am * 60.;
+        const double as = trunc(a);
+
+        /* Return results */
+        ostringstream str;
+        str << sgn << " " << uint16_t(ad) << " " << uint16_t(am) << " " << as;
+        return str.str();
+    }
+
+    int SendCommand(const string &str)
+    {
+        // This happens if fLastCommand should be send,
+        // but the last command was not a tracking command
+        if (str.empty())
+        {
+            T::Info("Last command was not a tracking command. RESUME ignored.");
+            return T::GetCurrentState();
+        }
+
+        fLastCommand = str.compare(0, 6, "RADEC ")==0 ? str : "";
+
+        fDrive.PostMessage(str);
+        T::Message("Sending: "+str);
+
+        return T::GetCurrentState();
+    }
+
+    int TrackCelest(const string &cmd, const string &source)
+    {
+        SendCommand(cmd);
+
+        fDrive.UpdateSource(source, true);
+
+        return T::GetCurrentState();
+    }
+
+    int Park()
+    {
+        SendCommand("PREPS Park");
+        fDrive.UpdateSource("Park");
+
+        // FIXME: Go to locked state only when park position properly reached
+        return Drive::State::kLocked;
+    }
+
+    int SendStop()
+    {
+        SendCommand("STOP!");
+        fDrive.UpdateSource();
+
+        return T::GetCurrentState();
+    }
+
+    int Resume()
+    {
+        if (fLastCommand.empty())
+        {
+            T::Info("Last command was not a tracking command. RESUME ignored.");
+            return T::GetCurrentState();
+        }
+
+        
+        T::Info("Resume: "+fLastCommand);
+        return SendCommand(fLastCommand);
+    }
+
+    int SendCoordinates(const EventImp &evt, const Coordinates type)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCoordinates", 16))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        string command;
+
+        switch (type)
+        {
+        case kPoint:      command += "ZDAZ ";  break;
+        case kTrackSlow:  command += "RADEC "; break;
+        case kTrackFast:  command += "GRB ";   break;
+        }
+
+        if (type!=kPoint)
+        {
+            const array<double, 6> dim = {{ dat[0], dat[1], dat[0], dat[1], 0, 0 }};
+            fDrive.UpdateSource(dim);
+        }
+        else
+            fDrive.UpdateSource("", false);
+
+
+        command += AngleToStr(dat[0]) + ' ' + AngleToStr(dat[1]);
+        return SendCommand(command);
+    }
+
+    int StartWobble(const double &srcra,  const double &srcdec,
+                    const double &woboff, const double &wobang,
+                    const string name="")
+    {
+        const double ra  = srcra *M_PI/12;
+        const double dec = srcdec*M_PI/180;
+        const double off = woboff*M_PI/180;
+        const double dir = wobang*M_PI/180;
+
+        const double cosdir = cos(dir);
+        const double sindir = sin(dir);
+        const double cosoff = cos(off);
+        const double sinoff = sin(off);
+        const double cosdec = cos(dec);
+        const double sindec = sin(dec);
+
+        if (off==0)
+        {
+            const array<double, 6> dim = {{ srcra, srcdec, srcra, srcdec, 0, 0 }};
+            fDrive.UpdateSource(dim, name);
+
+            string command = "RADEC ";
+            command += AngleToStr(srcra) + ' ' + AngleToStr(srcdec);
+            return SendCommand(command);
+        }
+
+        const double sintheta = sindec*cosoff + cosdec*sinoff*cosdir;
+        if (sintheta >= 1)
+        {
+            T::Error("cos(Zd) > 1");
+            return T::GetCurrentState();
+        }
+
+        const double costheta = sqrt(1 - sintheta*sintheta);
+
+        const double cosdeltara = (cosoff - sindec*sintheta)/(cosdec*costheta);
+        const double sindeltara = sindir*sinoff/costheta;
+
+        const double ndec = asin(sintheta)*180/M_PI;
+        const double nra  = (atan2(sindeltara, cosdeltara) + ra)*12/M_PI;
+
+        const array<double, 6> dim = {{ srcra, srcdec, nra, ndec, woboff, wobang }};
+        fDrive.UpdateSource(dim, name);
+
+        string command = "RADEC ";
+        command += AngleToStr(nra) + ' ' + AngleToStr(ndec);
+        return SendCommand(command);
+    }
+
+    int Wobble(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Wobble", 32))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        return StartWobble(dat[0], dat[1], dat[2], dat[3]);
+    }
+
+    const sources::const_iterator GetSourceFromDB(const char *ptr, const char *last)
+    {
+        if (find(ptr, last, '\0')==last)
+        {
+            T::Fatal("TrackWobble - The name transmitted by dim is not null-terminated.");
+            throw uint32_t(T::kSM_FatalError);
+        }
+
+        const string name(ptr);
+
+        const sources::const_iterator it = fSources.find(name);
+        if (it==fSources.end())
+        {
+            T::Error("Source '"+name+"' not found in list.");
+            throw uint32_t(T::GetCurrentState());
+        }
+
+        return it;
+    }
+
+    int TrackWobble(const EventImp &evt)
+    {
+        if (evt.GetSize()<=2)
+        {
+            ostringstream msg;
+            msg << "Track - Received event has " << evt.GetSize() << " bytes, but expected at least 3.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const uint16_t wobble = evt.GetUShort();
+        if (wobble!=1 && wobble!=2)
+        {
+            ostringstream msg;
+            msg << "TrackWobble - Wobble id " << wobble << " undefined, only 1 and 2 allowed.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const char *ptr  = evt.Ptr<char>(2);
+        const char *last = ptr+evt.GetSize()-2;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            return StartWobble(src.ra, src.dec, src.offset, src.angle[wobble-1], name);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+    }
+
+    int StartTrackWobble(const char *ptr, size_t size, const double &offset=0, const double &angle=0)
+    {
+        const char *last = ptr+size;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            return StartWobble(src.ra, src.dec, offset, angle, name);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+
+    }
+
+    int Track(const EventImp &evt)
+    {
+        if (evt.GetSize()<=16)
+        {
+            ostringstream msg;
+            msg << "Track - Received event has " << evt.GetSize() << " bytes, but expected at least 17.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const double *dat  = evt.Ptr<double>();
+        const char   *ptr  = evt.Ptr<char>(16);
+        const size_t  size = evt.GetSize()-16;
+
+        return StartTrackWobble(ptr, size, dat[0], dat[1]);
+    }
+
+    int TrackOn(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+        {
+            ostringstream msg;
+            msg << "TrackOn - Received event has " << evt.GetSize() << " bytes, but expected at least 1.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        return StartTrackWobble(evt.Ptr<char>(), evt.GetSize());
+    }
+
+
+    int TakeTPoint(const EventImp &evt)
+    {
+        if (evt.GetSize()<=4)
+        {
+            ostringstream msg;
+            msg << "TakePoint - Received event has " << evt.GetSize() << " bytes, but expected at least 5.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const float  mag  = evt.Get<float>();
+        const char  *ptr  = evt.Ptr<char>(4);
+
+        string src(ptr);
+
+        while (src.find_first_of(' ')!=string::npos)
+            src.erase(src.find_first_of(' '), 1);
+
+        SendCommand("TPOIN "+src+" "+to_string(mag));;
+
+        return T::GetCurrentState();
+    }
+
+    int SetLedBrightness(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetLedBrightness", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *led = evt.Ptr<uint32_t>();
+
+        return SendCommand("LEDS "+to_string(led[0])+" "+to_string(led[1]));
+    }
+
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fDrive.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetAutoResume(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAutoResume", 1))
+            return T::kSM_FatalError;
+
+        fAutoResume = evt.GetBool();
+
+        return T::GetCurrentState();
+    }
+
+    int Unlock()
+    {
+        if (fDrive.GetState()==StateMachineImp::kSM_Error)
+        {
+            T::Warn("Drive in error - maybe no connection to electronics... trying to send STOP.");
+            SendStop();
+        }
+
+        return Drive::State::kNotReady;
+    }
+
+    int Print()
+    {
+        for (auto it=fSources.begin(); it!=fSources.end(); it++)
+        {
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            T::Out() << name << ",";
+            T::Out() << src.ra       << "," << src.dec      << "," << src.offset << ",";
+            T::Out() << src.angle[0] << "," << src.angle[1] << endl;
+        }
+        return T::GetCurrentState();
+    }
+
+    int ReloadSources()
+    {
+        try
+        {
+            ReadDatabase();
+        }
+        catch (const exception &e)
+        {
+            T::Error("Reading sources from databse failed: "+string(e.what()));
+        }
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fDrive.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fDrive.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fDrive.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fDrive.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    Time fSunRise;
+    /*
+    int ShiftSunRise()
+    {
+        const Time sunrise = fSunRise;
+
+        fSunRise = Time().GetNextSunRise();
+
+        if (sunrise==fSunRise)
+            return Drive::State::kLocked;
+
+        ostringstream msg;
+        msg << "Next sun-rise will be at " << fSunRise;
+        T::Info(msg);
+
+        return Drive::State::kLocked;
+    }*/
+
+    int Execute()
+    {
+        /*
+        if (T::GetCurrentState()==Drive::State::kLocked)
+            return ShiftSunRise();
+
+        if (T::GetCurrentState()>Drive::State::kLocked)
+        {
+            if (Time()>fSunRise)
+                return Park();
+        }*/
+
+        const Time now;
+
+
+        if (now>fSunRise)
+        {
+            if (T::GetCurrentState()>Drive::State::kLocked)
+                return Park();
+
+            if (T::GetCurrentState()==Drive::State::kLocked)
+            {
+                fSunRise = now.GetNextSunRise();
+
+                ostringstream msg;
+                msg << "Next sun-rise will be at " << fSunRise;
+                T::Info(msg);
+
+                return Drive::State::kLocked;
+            }
+        }
+
+        if (T::GetCurrentState()==Drive::State::kLocked)
+            return Drive::State::kLocked;
+
+        const int state = fDrive.GetState();
+
+        if (!fLastCommand.empty())
+        {
+            // If auto resume is enabled and the drive is in error,
+            // resume tracking
+            if (state==StateMachineImp::kSM_Error)
+            {
+                if (fAutoResume==1)
+                {
+                    Resume();
+                    fAutoResume = 2;
+                    fAutoResumeTime = now;
+                }
+
+                if (fAutoResume==2 && fAutoResumeTime+boost::posix_time::seconds(5)<now)
+                {
+                    Resume();
+                    fAutoResume = 3;
+                }
+            }
+            else
+            {
+                // If drive got out of the error state,
+                // enable auto resume again
+                if (fAutoResume>1)
+                    fAutoResume = 1;
+            }
+        }
+
+        return state;
+    }
+
+
+public:
+    StateMachineDrive(ostream &out=cout) :
+        StateMachineAsio<T>(out, "DRIVE_CONTROL"), fDrive(*this, *this),
+        fAutoResume(false), fSunRise(Time().GetNextSunRise())
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "No connection to cosy");
+
+        T::AddStateName(State::kConnected, "Connected",
+                        "Cosy connected, drive stopped");
+
+        T::AddStateName(State::kNotReady, "NotReady",
+                        "Drive system not ready for movement");
+
+        T::AddStateName(State::kLocked, "Locked",
+                        "Drive system is locked (will not accept commands)");
+
+        T::AddStateName(State::kReady, "Ready",
+                        "Drive system ready for movement");
+
+        T::AddStateName(State::kArmed, "Armed",
+                        "Cosy armed, drive stopped");
+
+        T::AddStateName(State::kMoving, "Moving",
+                        "Telescope moving");
+
+        T::AddStateName(State::kTracking, "Tracking",
+                        "Telescope is in tracking mode");
+
+        T::AddStateName(State::kOnTrack, "OnTrack",
+                        "Telescope tracking stable");
+
+        // State::kIdle
+        // State::kArmed
+        // State::kMoving
+        // State::kTracking
+
+        // Init
+        // -----------
+        // "ARM lock"
+        // "STGMD off"
+
+        /*
+         [ ] WAIT   -> WM_WAIT
+         [x] STOP!  -> WM_STOP
+         [x] RADEC  ra(+ d m s.f)  dec(+ d m s.f)
+         [x] GRB    ra(+ d m s.f)  dec(+ d m s.f)
+         [x] ZDAZ   zd(+ d m s.f)  az (+ d m s.f)
+         [ ] CELEST id offset angle
+         [ ] MOON   wobble offset
+         [ ] PREPS  string
+         [ ] TPOIN  star mag
+         [ ] ARM    lock/unlock
+         [ ] STGMD  on/off
+         */
+
+        // Drive Commands
+        T::AddEvent("MOVE_TO", "D:2", State::kArmed)  // ->ZDAZ
+            (bind(&StateMachineDrive::SendCoordinates, this, placeholders::_1, kPoint))
+            ("Move the telescope to the given local coordinates"
+             "|Zd[deg]:Zenith distance"
+             "|Az[deg]:Azimuth");
+
+        T::AddEvent("TRACK", "D:2", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::SendCoordinates, this, placeholders::_1, kTrackSlow))
+            ("Move the telescope to the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination");
+
+        T::AddEvent("WOBBLE", "D:4", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Wobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle");
+
+        T::AddEvent("TRACK_SOURCE", "D:2;C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Track, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_WOBBLE", "S:1;C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackWobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|id:Wobble angle id (1 or 2)"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_ON", "C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackOn, this, placeholders::_1))
+            ("Move the telescope to the given position and start tracking"
+             "|Name[string]:Source name");
+
+        T::AddEvent("RESUME", StateMachineImp::kSM_Error)
+            (bind(&StateMachineDrive::Resume, this))
+            ("If drive is in Error state, this can b used to resume the last tracking command, if the last command sent to cosy was a tracking command.");
+
+        T::AddEvent("MOON", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "MOON 0 0", "Moon"))
+            ("Start tracking the moon");
+        T::AddEvent("VENUS", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 2 0 0", "Venus"))
+            ("Start tracking Venus");
+        T::AddEvent("MARS", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 4 0 0", "Mars"))
+            ("Start tracking Mars");
+        T::AddEvent("JUPITER", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 5 0 0", "Jupiter"))
+            ("Start tracking Jupiter");
+        T::AddEvent("SATURN", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 6 0 0", "Saturn"))
+            ("Start tracking Saturn");
+
+        T::AddEvent("PARK", State::kArmed, State::kMoving, State::kTracking, State::kOnTrack, 0x100)
+            (bind(&StateMachineDrive::Park, this))
+            ("Park the telescope");
+
+        T::AddEvent("TAKE_TPOINT")
+            (bind(&StateMachineDrive::SendCommand, this, "TPOIN FACT 0"))
+            ("Take a TPoint");
+
+        T::AddEvent("TPOINT", "F:1;C")
+            (bind(&StateMachineDrive::TakeTPoint, this, placeholders::_1))
+            ("Take a TPoint (given values will be written to the TPoint files)"
+             "|mag[float]:Magnitude of the star"
+             "|name[string]:Name of the star");
+
+        T::AddEvent("SET_LED_BRIGHTNESS", "I:2")
+            (bind(&StateMachineDrive::SetLedBrightness, this, placeholders::_1))
+            ("Set the LED brightness of the top and bottom leds"
+             "|top[au]:Allowed range 0-32767 for top LEDs"
+             "|bot[au]:Allowed range 0-32767 for bottom LEDs");
+
+        T::AddEvent("LEDS_OFF")
+            (bind(&StateMachineDrive::SendCommand, this, "LEDS 0 0"))
+            ("Switch off TPoint LEDs");
+
+        T::AddEvent("STOP")
+            (bind(&StateMachineDrive::SendStop, this))
+            ("Stop any kind of movement.");
+
+//        T::AddEvent("ARM", State::kConnected)
+//            (bind(&StateMachineSendCommand, this, "ARM lock"))
+//            ("");
+
+        T::AddEvent("UNLOCK", Drive::State::kLocked)
+            (bind(&StateMachineDrive::Unlock, this))
+            ("Unlock locked state.");
+
+        T::AddEvent("SET_AUTORESUME", "B:1")
+            (bind(&StateMachineDrive::SetAutoResume, this, placeholders::_1))
+            ("Enable/disable auto resume"
+             "|resume[bool]:if enabled, drive is tracking and goes to error state, the last tracking command is repeated automatically.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineDrive::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected, State::kArmed)
+            (bind(&StateMachineDrive::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected, State::kArmed)
+            (bind(&StateMachineDrive::Reconnect, this, placeholders::_1))
+            ("(Re)connect Ethernet connection to cosy, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+
+        T::AddEvent("PRINT")
+            (bind(&StateMachineDrive::Print, this))
+            ("Print source list.");
+
+        T::AddEvent("RELOAD_SOURCES")
+            (bind(&StateMachineDrive::ReloadSources, this))
+            ("Reload sources from database after database has changed..");
+
+        fDrive.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fDrive.SetEndpoint(url);
+    }
+
+    bool AddSource(const string &name, const Source &src)
+    {
+        const auto it = fSources.find(name);
+        if (it!=fSources.end())
+            T::Warn("Source '"+name+"' already in list... overwriting.");
+
+        fSources[name] = src;
+        return it==fSources.end();
+    }
+
+    void ReadDatabase(bool print=true)
+    {
+#ifdef HAVE_SQL
+        Database db(fDatabase);
+
+        T::Message("Connected to '"+db.uri()+"'");
+
+        const mysqlpp::StoreQueryResult res =
+            db.query("SELECT fSourceName, fRightAscension, fDeclination, fWobbleOffset, fWobbleAngle0, fWobbleAngle1 FROM Source").store();
+
+        fSources.clear();
+        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+        {
+            const string name = (*v)[0].c_str();
+
+            Source src;
+            src.ra  = (*v)[1];
+            src.dec = (*v)[2];
+            src.offset = (*v)[3];
+            src.angle[0] = (*v)[4];
+            src.angle[1] = (*v)[5];
+            AddSource(name, src);
+
+            if (!print)
+                continue;
+
+            ostringstream msg;
+            msg << " " << name << setprecision(8) << ":   Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            msg << " Wobble=[" << src.offset << "," << src.angle[0] << "," << src.angle[1] << "]";
+            T::Message(msg);
+        }
+#else
+        T::Warn("MySQL support not compiled into the program.");
+#endif
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        if (!fSunRise)
+            return 1;
+
+        fDrive.SetVerbose(!conf.Get<bool>("quiet"));
+
+        const vector<string> &vec = conf.Vec<string>("source");
+
+        for (vector<string>::const_iterator it=vec.begin(); it!=vec.end(); it++)
+        {
+            istringstream stream(*it);
+
+            string name;
+
+            int i=0;
+
+            Source src;
+
+            string buffer;
+            while (getline(stream, buffer, ','))
+            {
+                istringstream is(buffer);
+
+                switch (i++)
+                {
+                case 0: name = buffer; break;
+                case 1: src.ra  = ConnectionDrive::ReadAngle(is); break;
+                case 2: src.dec = ConnectionDrive::ReadAngle(is); break;
+                case 3: is >> src.offset; break;
+                case 4: is >> src.angle[0]; break;
+                case 5: is >> src.angle[1]; break;
+                }
+
+                if (is.fail())
+                    break;
+            }
+
+            if (i==3 || i==6)
+            {
+                AddSource(name, src);
+                continue;
+            }
+
+            T::Warn("Resource 'source' not correctly formatted: '"+*it+"'");
+        }
+
+        fDrive.SetDeviationCondition(conf.Get<uint16_t>("deviation-limit"),
+                                     conf.Get<uint16_t>("deviation-count"),
+                                     conf.Get<uint16_t>("deviation-max"));
+
+        fAutoResume = conf.Get<bool>("auto-resume");
+
+        if (conf.Has("source-database"))
+        {
+            fDatabase = conf.Get<string>("source-database");
+            ReadDatabase();
+        }
+
+        if (fSunRise.IsValid())
+        {
+            ostringstream msg;
+            msg << "Next sun-rise will be at " << fSunRise;
+            T::Message(msg);
+        }
+
+        // The possibility to connect should be last, so that
+        // everything else is already initialized.
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineDrive<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string def = "localhost:7404";
+
+    po::options_description control("Drive control options");
+    control.add_options()
+        ("no-dim,d",        po_switch(),        "Disable dim services")
+        ("addr,a",          var<string>(def),   "Network address of cosy")
+        ("quiet,q",         po_bool(true),      "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("source-database", var<string>(),      "Database link as in\n\tuser:password@server[:port]/database.")
+        ("source",          vars<string>(),     "Additional source entry in the form \"name,hh:mm:ss,dd:mm:ss\"")
+        ("deviation-limit", var<uint16_t>(90),  "Deviation limit in arcsec to get 'OnTrack'")
+        ("deviation-count", var<uint16_t>(3),   "Minimum number of reported deviation below deviation-limit to get 'OnTrack'")
+        ("deviation-max",   var<uint16_t>(180), "Maximum deviation in arcsec allowed to keep status 'OnTrack'")
+        ("auto-resume",     po_bool(false),     "Enable auto result during tracking if connection is lost")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The cosyctrl is an interface to cosy.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: cosyctrl [-c type] [OPTIONS]\n"
+        "  or:  cosyctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineDrive<StateMachine,ConnectionDrive>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionDrive>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/datalogger.cc
===================================================================
--- branches/FACT++_part_filenames/src/datalogger.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/datalogger.cc	(revision 18732)
@@ -0,0 +1,2413 @@
+//****************************************************************
+/** @class DataLogger 
+  
+  @brief Logs all message and infos between the services
+  
+  This is the main logging class facility. 
+  It derives from StateMachineDim and DimInfoHandler. the first parent is here to enforce 
+  a state machine behaviour, while the second one is meant to make the dataLogger receive
+  dim services to which it subscribed from.
+  The possible states and transitions of the machine are:
+  \dot
+  // FIXME FIXME: Error states missing...
+  digraph datalogger
+  { 
+     node [shape=record, fontname=Helvetica, fontsize=10];
+  
+     srt  [label="Start" style="rounded"]
+     rdy  [label="Ready"]
+     nop  [label="NightlyOpen"]
+     wait [label="WaitingRun"]
+     log  [label="Logging"]
+
+     //e    [label="Error" color="red"];
+     //c    [label="BadFolder" color="red"]
+     
+     
+     cmd_start  [label="START"              shape="none" height="0"]
+     cmd_stop   [label="STOP"               shape="none" height="0"]
+     cmd_stopr  [label="STOP_RUN_LOGGING"   shape="none" height="0"]
+     cmd_startr [label="START_RUN_LOGGING"  shape="none" height="0"]
+     
+     { rank=same; cmd_startr cmd_stopr }
+     { rank=same; cmd_start  cmd_stop  }
+     
+  
+     srt  -> rdy  
+       
+     rdy -> cmd_start   [ arrowhead="open" dir="both" arrowtail="tee" weight=10 ]
+     cmd_start -> nop   
+
+     nop  -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     wait -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     log  -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     cmd_stop -> rdy    
+
+     wait -> cmd_stopr  [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     log  -> cmd_stopr  [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     cmd_stopr -> nop   
+
+     nop -> cmd_startr  [ arrowhead="none" dir="both" arrowtail="inv" weight=10 ]
+     rdy -> cmd_startr  [ arrowhead="none" dir="both" arrowtail="inv" ]
+     cmd_startr -> wait [ weight=10 ]
+
+
+     wait -> log
+     log  -> wait
+  }
+  \enddot
+
+  For questions or bug report, please contact Etienne Lyard (etienne.lyard@unige.ch) or Thomas Bretz.
+ */
+ //****************************************************************
+#include <unistd.h>      //for getting stat of opened files
+//#include <sys/statvfs.h> //for getting disk free space
+//#include <sys/stat.h>    //for getting files sizes
+#include <fstream>
+#include <functional>
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Converter.h"
+#include "DimWriteStatistics.h"
+
+#include "Description.h"
+//#include "DimNetwork.h"
+
+#ifdef HAVE_FITS
+#include "Fits.h"
+#endif
+
+#include "DimState.h"
+
+#ifdef HAVE_LIBNOVA
+#include <libnova/solar.h>
+#include <libnova/rise_set.h>
+#endif
+
+//Dim structures
+///distributes the number of opened subscriptions and fits files
+struct NumSubAndFitsType {
+    uint32_t numSubscriptions;
+    uint32_t numOpenFits;
+};
+///distributes which files were opened.
+struct OpenFileToDim {
+    uint32_t code;
+    char fileName[FILENAME_MAX];
+};
+
+///Run number record. Used to keep track of which run numbers are still active
+struct RunNumberType {
+
+    ///the actual run number
+    int32_t runNumber;
+    ///the time at which the run number was received
+    Time time;
+    ///default constructor
+    RunNumberType()
+    {
+        runNumber = 0;
+    }
+    ///default destructor
+    ~RunNumberType()
+    {
+
+    }
+};
+
+EventImp nullEventImp;
+///Dim subscription type. Stores all the relevant info to handle a Dim subscription
+struct SubscriptionType
+{
+#ifdef HAVE_FITS
+    ///Nightly FITS output file
+    Fits    nightlyFile;
+#endif
+    ///the server
+    string server;
+    ///the service
+    string service;
+    ///the converter for outputting the data according to the format
+    shared_ptr<Converter> fConv;
+    ///the original format string. So that we can check if format is changing over time
+    string format;
+    ///the current run number used by this subscription
+    int32_t runNumber;
+    ///time of the latest received event
+    Time lastReceivedEvent;
+    ///whether or not the fits buffer was allocated already
+    bool fitsBufferAllocated;
+    ///the actual dimInfo pointer (must be the last in the list to ensure
+    /// that it is the first which is deleted -- and consequently none of
+    /// the other members can still be in use in an infoHandler)
+    //DIM_REPLACE
+    //shared_ptr<DimStampedInfo> dimInfo;
+    unsigned int index;
+    ///counter to know if format has changed during operations
+    unsigned int increment;
+
+    ///Dim info constructor
+    //DIM_REPLACE
+//    SubscriptionType(DimStampedInfo* info=NULL)
+    SubscriptionType()
+    {
+        fConv = shared_ptr<Converter>();
+        runNumber = 0;
+        lastReceivedEvent = Time::None;
+        fitsBufferAllocated = false;
+        // Should be the last instantiated to make sure that all other
+        // variables which might be used are already initialized
+        //DIM_REPLACE
+        //dimInfo = shared_ptr<DimStampedInfo>(info);
+        index = 0;
+        increment = 0;
+    }
+    ///default destructor
+    ~SubscriptionType()
+    {
+    }
+};
+
+class DataLogger : public StateMachineDim
+//DIM_REPLACE
+//, DimServiceInfoListImp
+{
+public:
+    /// The list of existing states specific to the DataLogger
+    enum
+    {
+        kSM_NightlyOpen     = 20,    ///< Nightly file openned and writing
+        kSM_WaitingRun      = 30,    ///< waiting for the run number to open the run file
+        kSM_Logging         = 40,    ///< both files openned and writing
+        kSM_BadFolder       = 0x101, ///< the folder specified for Nightly logging does not exist or has bad permissions
+        kSM_RunWriteError   = 0x103, ///< Denotes that an error occured while writing a run file (text or fits).
+        kSM_DailyWriteError = 0x103, ///< Denots that an error occured while writing a daily file (text or fits).
+    } localstates_t;
+    
+    DataLogger(ostream &out);
+    ~DataLogger(); 
+
+    int EvalOptions(Configuration& conf);
+
+private:
+    /************************************************
+     * MEMBER VARIABLES
+     ************************************************/
+    /// ofstream for the NightlyLogfile
+    ofstream fNightlyLogFile;
+    /// Log stream to fNightlyLogFile
+    MessageImp fNightlyLogImp;
+    /// ofstream for the Nightly report file
+//    ofstream fNightlyReportFile;
+    /// base path of files
+    string fFilePath;
+    ///run numbers
+    list<RunNumberType> fRunNumber;
+    ///old run numbers time-out delay (in seconds)
+    uint32_t fRunNumberTimeout;
+    ///previous run number. to check if changed while logging
+    int fPreviousRunNumber;
+    ///Current Service Quality
+    int fQuality;
+    ///Modified Julian Date
+    double fMjD;
+    ///for obtaining the name of the existing services
+//    ServiceList fServiceList;
+    typedef map<const string, map<string, SubscriptionType> > SubscriptionsListType;
+    ///All the services to which we have subscribed to, sorted by server name.
+    SubscriptionsListType fServiceSubscriptions;
+    ///full name of the nightly log file
+    string fFullNightlyLogFileName;
+    ///full name of the nightly report file
+    string fFullNightlyReportFileName;
+    ///variable to track when the statistic were last calculated
+//    Time fPreviousStatsUpdateTime;
+    Time fPreviousOldRunNumberCheck;
+    ///boolean to know whether we should close and reopen daily files or not
+    bool fDailyFileDayChangedAlready;
+
+    DimWriteStatistics fFilesStats;
+
+    ///map and mutex for storing services description
+    map<string, vector<Description> > fServiceDescriptionList;
+    mutex fMutex;
+    int HandleDescriptions(DimDescriptions* desc);
+    vector<Description> GetDescription(const string& server, const string& service);
+private:
+    /***************************************************
+     * DIM INFO HANDLER
+     ***************************************************/
+    //overloading of DIM's infoHandler function
+    int infoCallback(const EventImp& evt, unsigned int infoIndex);
+
+//    Time GetSunRise(const Time &time=Time());
+
+    /***************************************************
+     * TRANSITION FUNCTIONS
+     ***************************************************/
+    ///Reporting method for the services info received
+    void Report(const EventImp& evt, SubscriptionType& sub);
+
+    ///Configuration of the nightly file path
+    int ConfigureFilePath(const Event& evt);
+    ///print the current state of the dataLogger
+    int PrintState(const Event& evt);
+    ///checks whether or not the current info being treated is a run number
+    void CheckForRunNumber(const EventImp& evt, unsigned int index);
+    /// start transition
+    int Start();
+    ///from waiting to logging transition
+    //int StartRun();
+    // from logging to waiting transition
+    int StopRunLogging();
+    ///stop and reset transition
+    int GoToReady();
+    ///from NightlyOpen to waiting transition
+    int NightlyToWaitRun();
+    ///from wait for run number to nightly open
+    int BackToNightlyOpen();
+#ifdef HAVE_FITS
+    ///Open fits files
+    void OpenFITSFiles(SubscriptionType& sub);
+    ///Write data to FITS files
+    void WriteToFITS(SubscriptionType& sub, const void* data);
+    ///Allocate the buffers required for fits
+    void AllocateFITSBuffers(SubscriptionType& sub);
+#endif//has_fits
+
+    /***************************************
+     * DIM SERVICES PROVIDED BY THE DATA LOGGER
+     ***************************************/
+    ///monitoring notification loop
+    void ServicesMonitoring();
+    inline void NotifyOpenedFile(const string &name, int type, DimDescribedService* service);
+    ///Service for opened files
+    DimDescribedService* fOpenedNightlyFiles;
+    DimDescribedService* fOpenedRunFiles;
+    DimDescribedService* fNumSubAndFits;
+    NumSubAndFitsType fNumSubAndFitsData;
+
+    ///Service for broadcasting subscription status
+    DimDescribedService* fCurrentSubscription;
+    ///Number of seconds since the last update of the subscribed list
+    int fCurrentSubscriptionUpdateRate;
+    ///The last time in seconds of the day when the service was update
+    Time fLastSubscriptionUpdate;
+    ///update the service
+    void updateSubscriptionList();
+    ///set the duration between two updates. a zero or negative value disables the service updates
+    int setSubscriptionListUpdateTimeLapse(const Event& evt);
+    /***************************************************
+     * DATA LOGGER's CONFIGURATION STUFF
+     ***************************************************/
+    ///black/white listing
+    set<string> fBlackList;
+    set<string> fWhiteList;
+    ///list of services to be grouped
+    set<string> fGrouping;
+    ///configuration flags
+    bool fDebugIsOn;
+    bool fOpenedFilesIsOn;
+    bool fNumSubAndFitsIsOn;
+    //functions for controlling the services behavior
+    int SetDebugOnOff(const Event& evt);
+    int SetStatsPeriod(const Event& evt);
+    int SetOpenedFilesOnOff(const Event& evt);
+    int SetNumSubsAndFitsOnOff(const Event& evt);
+    int SetRunTimeoutDelay(const Event& evt);
+
+    ///boolean to prevent DIM update while desctructing the dataLogger
+    bool fDestructing;    
+    /***************************************************
+     * UTILITIES
+     ***************************************************/
+    ///vectors to keep track of opened Fits files, for grouping purposes.
+    map<string, vector<string> > fOpenedNightlyFits;
+    ///creates a group fits file based on a list of files to be grouped
+    void CreateFitsGrouping(map<string, vector<string> >& filesToGroup);
+
+    bool OpenStreamImp(ofstream &stream, const string &filename, bool mightbeopen);
+    bool OpenStream(shared_ptr<ofstream> stream, const string &filename);
+    ///Open the relevant text files related to a particular run
+//    int OpenRunFile(RunNumberType& run);
+    ///add a new run number
+    void AddNewRunNumber(int64_t newRun, Time time);
+    std::vector<int64_t> previousRunNumbers;
+    ///removes the oldest run number, and close the relevant files.
+    void RemoveOldestRunNumber();
+    ///retrieves the size of a file
+    off_t GetFileSize(const string&);
+    ///Get the digits of year, month and day for filenames and paths
+//    void GetYearMonthDayForFiles(unsigned short& year, unsigned short& month, unsigned short& day);
+    ///Appends the relevant year month day to a given path
+//    void AppendYearMonthDaytoPath(string& path);
+    ///Form the files path
+    string CompileFileNameWithPath(const string &path, const string &service, const string & extension);
+    ///Form the file names only
+    string CompileFileName(const string& service, const string& extension, const Time& time=Time()) const;
+    ///Check whether service is in black and/or white list
+    bool ShouldSubscribe(const string& server, const string& service);
+    ///Subscribe to a given server and service
+//    EventImp& SubscribeTo(const string& server, const string& service);
+    ///Open a text file and checks for ofstream status
+    bool OpenTextFile(ofstream& stream, const string& name);
+    ///Checks if the input osftream is in error state, and if so close it.
+    bool CheckForOfstreamError(ofstream& out, bool isDailyStream);
+    ///Goes to Write error states
+    void GoToRunWriteErrorState();
+    void GoToNightlyWriteErrorState();
+    ///Checks if a given path exist
+    bool DoesPathExist(string path);
+    ///Check if old run numbers can be trimmed, and if so, do it
+    void TrimOldRunNumbers();
+    ///Create a given directory
+    bool CreateDirectory(const string &path);
+    /***************************************************
+    * INHERITED FROM DimServiceInfoList
+    ***************************************************/
+    ///Add a new server subscription
+    void AddServer(const string& server);
+    ///Add a new service subscription
+    void AddService(const Service& svc);
+    ///Remove a given service subscription
+    //FIXME unused
+    void RemoveService(const string, const string, bool);
+    ///Remove all the services associated with a given server
+    //FIXME unused
+    void RemoveAllServices(const string&);
+    ///pointer to the dim's subscription that should distribute the run numbers.
+    //DIM_REPLACE
+    //DimInfo* fRunNumberService;
+    unsigned int fRunNumberService;
+    /***************************************************
+     * Overwritten from MessageImp
+    ***************************************************/
+    vector<string> backLogBuffer;
+    bool shouldBackLog;
+    bool fShouldAutoStart;
+    bool fAutoStarted;
+
+    //Current day variable. Used to close nightly files when night changes
+    Time fCurrentDay;
+    Time lastFlush;
+
+    DimDnsServiceList fDimList;
+    vector<DimDescriptions*> fServerDescriptionsList;
+
+    //counter for keeping tracker of services
+    unsigned int servicesCounter;
+public:
+    int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+}; //DataLogger
+
+
+/**
+ * @brief the two methods below were copied from StateMachineDimControl.cc
+ *
+ */
+int DataLogger::HandleDescriptions(DimDescriptions* desc)
+{
+    fMutex.lock();
+    for (auto it=desc->descriptions.begin(); it != desc->descriptions.end(); it++) {
+        if (fDebugIsOn)
+        {
+            Debug("Adding description for service: " + it->front().name);
+        }
+        fServiceDescriptionList[it->front().name].assign(it->begin(), it->end());
+    }
+    fMutex.unlock();
+
+    return GetCurrentState();
+}
+/**
+ *  UPDATE SUBSCRIPTION LIST. Updates the subscription list service if enough time has passed.
+ *                            Otherwise does nothing
+ */
+void DataLogger::updateSubscriptionList()
+{
+    if (fCurrentSubscriptionUpdateRate <= 0) return;
+    Time timeNow;
+    //if less than the update rate time has passed, just return
+    if (timeNow - fLastSubscriptionUpdate < boost::posix_time::seconds(fCurrentSubscriptionUpdateRate))
+        return;
+    //TODO remove me !
+//    cout << "Updating subscription list with: " << endl;
+
+    fLastSubscriptionUpdate = timeNow;
+
+    //update service !
+    ostringstream output;
+    for (auto serverIt=fServiceSubscriptions.begin();serverIt!=fServiceSubscriptions.end(); serverIt++)
+    {
+        if (serverIt->first == "DATA_LOGGER")
+            continue;
+        for (auto serviceIt=serverIt->second.begin(); serviceIt!=serverIt->second.end(); serviceIt++)
+        {
+            output << serverIt->first << "/" << serviceIt->first << ",";
+            if (serviceIt->second.lastReceivedEvent != Time::None)
+                output << (timeNow - serviceIt->second.lastReceivedEvent).total_seconds();
+            else
+                output << "-1";
+            output << "\n";
+        }
+    }
+//TODO remove me !
+//cout << output.str();
+    fCurrentSubscription->setData(output.str().c_str(), output.str().size()+1);
+    fCurrentSubscription->setQuality(0);
+    fCurrentSubscription->Update();
+}
+int DataLogger::setSubscriptionListUpdateTimeLapse(const Event& evt)
+{
+    fCurrentSubscriptionUpdateRate = evt.GetInt();
+
+    return GetCurrentState();
+}
+vector<Description> DataLogger::GetDescription(const string& server, const string& service)
+{
+    const lock_guard<mutex> guard(fMutex);
+    const auto it = fServiceDescriptionList.find(server+"/"+service);
+    return it==fServiceDescriptionList.end()?vector<Description>():it->second;
+}
+// --------------------------------------------------------------------------
+//
+//! Overwritten write function. This way we directly log the datalogger's messages, without going through dim's dns,
+//! thus increasing robustness.
+//! @param time: see MessageImp class param
+//! @param txt: see MessageImp class param
+//! @param qos: see MessageImp class param
+//! @return see MessageImp class param
+//
+int DataLogger::Write(const Time&time, const std::string& txt, int qos)
+{
+    ostringstream ss;
+    ss << "datalogger: " << txt;
+    if (fNightlyLogFile.is_open())
+    {
+        fNightlyLogImp.Write(time, ss.str(), qos);
+    }
+    else if (shouldBackLog)
+    {
+             ostringstream str;
+             MessageImp mimp(str);
+             mimp.Write(time, ss.str(), qos);
+             backLogBuffer.push_back(str.str());
+         }
+    return StateMachineDim::Write(time, ss.str(), qos);
+}
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the creation has been successfull
+//
+bool DataLogger::CreateDirectory(const string &path)
+{
+    try
+    {
+        boost::filesystem::create_directories(path);
+        return true;
+    }
+    catch (const runtime_error &e)
+    {
+        Error(e.what());
+        return false;
+    }
+}
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the given path exists
+//
+bool DataLogger::DoesPathExist(string path)
+{
+    return DimWriteStatistics::DoesPathExist(path, *this);
+}
+
+void DataLogger::AddServer(const string& server)
+{
+    Info("Got request to add server " + server );
+    if (server != "DIS_DNS")
+    {
+        for (auto it=fServerDescriptionsList.begin(); it != fServerDescriptionsList.end(); it++)
+            if ((*it)->server == server)
+            {
+                if (fDebugIsOn)
+                {
+                    ostringstream str;
+                    str << "Already got description for server " << server << ". Ignoring." << endl;
+                    Debug(str.str());
+                    return;
+                }
+            }
+        DimDescriptions* d = new DimDescriptions(server);
+        d->SetCallbackDescriptions(bind(&DataLogger::HandleDescriptions, this, d));
+        d->Subscribe(*this);
+        fServerDescriptionsList.push_back(d);
+    }
+
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new service subscription
+//! @param server the server for which the subscription should be created
+//! @param service the service for which the subscription should be created
+//! @param isCmd whether this is a Dim Command or not. Commands are not logged
+//
+void DataLogger::AddService(const Service& svc)
+{
+    const string& serverr = svc.server;
+    //FIX in order to get rid of the '+' that sometimes makes it all the way to me
+    string server = serverr;
+    if (server.size() > 0 && server[0] == '+')
+    {
+        server = server.substr(1);
+        Warn("Got a service beginning with +. This is not supposed to happen");
+    }
+//    server = server.substr(1);
+
+    const string& service = svc.service;
+    const bool isCmd = svc.iscmd;
+
+   //dataLogger does not subscribe to commands
+    if (isCmd)
+        return;
+
+    Info("Got request to add service: "+server+"/"+service);
+
+    //check the given subscription against black and white lists
+    if (!ShouldSubscribe(server, service))
+        return;
+
+    map<string, SubscriptionType> &list = fServiceSubscriptions[server];
+
+    if (list.find(service) != list.end())
+    {
+        if (list[service].format != svc.format)
+        {
+            if (list[service].nightlyFile.IsOpen())
+            {
+                string fileName = list[service].nightlyFile.GetName();
+                if (fileName == "")
+                {
+                    Error("Something went wrong while dealing with new format of "+server+"/"+service+" file tagged as open but filename is empty. Aborting");
+                    return;
+                }
+                list[service].nightlyFile.Close();
+                list[service].increment++;
+                Warn("Format of "+server+"/"+service+" has changed. Closing "+fileName);
+/*                string fileNameWithoutFits = fileName.substr(0, fileName.size()-4);
+                int counter=0;
+                while (counter < 100)
+                {
+                    ostringstream newFileName;
+                    newFileName << fileNameWithoutFits << counter << ".fits";
+                    ifstream testStream(newFileName.str());
+                    if (!testStream) //fileName available
+                    {
+                        rename(fileName.c_str(), newFileName.str().c_str());
+                        break;
+                    }
+                    counter++;
+                }
+                if (counter==100)
+                    Error("Could not rename "+fileName+" after 100 trials (because of format change). Aborting");
+*/
+                //reallocate the fits buffer...
+                list[service].fitsBufferAllocated = false;
+            }
+            list[service].fConv = shared_ptr<Converter>(new Converter(Out(), svc.format));
+            list[service].format = svc.format;
+        }
+        if (fDebugIsOn)
+            Debug("Service " + server + "/" + service + " is already in the dataLogger's list... ignoring update.");
+        return;
+    }
+    //DIM_REPLACE
+//    list[service].dimInfo.reset(SubscribeTo(server, service));
+    if (fDebugIsOn)
+        Debug("Subscribing to service "+server+"/"+service);
+    Subscribe(server + "/" + service)
+        (bind(&DataLogger::infoCallback, this, placeholders::_1, servicesCounter));
+    list[service].server  = server;
+    list[service].service = service;
+    list[service].format = svc.format;
+    list[service].index = servicesCounter;
+    fNumSubAndFitsData.numSubscriptions++;
+    //check if this is the run numbers service
+    if ((server == "FAD_CONTROL") && (service == "START_RUN"))
+        fRunNumberService = servicesCounter;
+    servicesCounter++;
+    Info("Added subscription to " + server + "/" + service);
+}
+// --------------------------------------------------------------------------
+//
+//! Remove a given service subscription
+//! @param server the server for which the subscription should be removed
+//! @param service the service that should be removed
+//! @param isCmd whether or not this is a command
+//
+void DataLogger::RemoveService(string server, string service, bool isCmd)
+{
+
+    Info("Got request to remove service: "+server+"/"+service);
+    if (fDestructing)//this function is called by the super class, after the destructor has deleted its own subscriptions
+        return;
+//FIXME unused
+    return;
+
+    if (isCmd)
+        return;
+
+    if (fServiceSubscriptions.find(server) == fServiceSubscriptions.end())
+    {
+        Error("Request to remove service "+service+" from server "+server+", but service not found.");
+        return;
+    }
+
+    if (fServiceSubscriptions[server].erase(service) != 1)
+    {
+        //check the given subscription against black and white lists
+        if (!ShouldSubscribe(server, service))
+            return;
+
+        Error("Subscription "+server+"/"+service+" could not be removed as it is not present");
+        return;
+    }
+    fNumSubAndFitsData.numSubscriptions--;
+
+    if ((server == "FAD_CONTROL") && (service == "START_RUN"))
+        fRunNumberService = 0;
+
+    Info("Removed subscription to " + server + "/" + service);
+}
+// --------------------------------------------------------------------------
+//
+//! Remove all the services associated with a given server
+//! @param server the server for which all the services should be removed
+//
+void DataLogger::RemoveAllServices(const string& server)
+{
+    Info("Got request for removing all services from: "+server);
+    if (fServiceSubscriptions.find(server)==fServiceSubscriptions.end())
+    {
+        Warn("Request to remove all services, but corresponding server " + server + " not found.");
+        return;
+    }
+//FIXME unused
+    return;
+    fNumSubAndFitsData.numSubscriptions -= fServiceSubscriptions[server].size();
+
+    fServiceSubscriptions[server].clear();
+    fServiceSubscriptions.erase(server);
+
+    if (server == "FAD_CONTROL")
+        fRunNumberService = 0;
+
+    if (fDebugIsOn)
+        Debug("Removed all subscriptions to " + server + "/");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if the given ofstream is in error state and if so, close it
+//! @param out the ofstream that should be checked
+//
+bool DataLogger::CheckForOfstreamError(ofstream& out, bool isDailyStream)
+{
+    if (out.good())
+        return true;
+
+    Error("An error occured while writing to a text file. Closing it");
+    if (out.is_open())
+        out.close();
+    if (isDailyStream)
+        GoToNightlyWriteErrorState();
+    else
+        GoToRunWriteErrorState();
+
+    return false;
+}
+
+bool DataLogger::OpenStreamImp(ofstream &stream, const string &filename, bool mightbeopen)
+{
+    if (stream.is_open())
+    {
+        if (!mightbeopen)
+            Error(filename+" was already open when trying to open it.");
+        return mightbeopen;
+    }
+
+    errno = 0;
+    stream.open(filename.c_str(), ios_base::out | ios_base::app);
+    if (!stream /*|| errno!=0*/)
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << filename << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    if (!stream.is_open())
+    {
+        Error("File "+filename+" not open as it ought to be.");
+        return false;
+    }
+
+    Info("Opened: "+filename);
+
+    return true;
+}
+
+bool DataLogger::OpenStream(shared_ptr<ofstream> stream, const string &filename)
+{
+    return OpenStreamImp(*stream, filename, false);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Open a text file and checks for error code
+//! @param stream the ofstream for which the file should be opened
+//! @name the file name
+//
+bool DataLogger::OpenTextFile(ofstream& stream, const string& name)
+{
+    return OpenStreamImp(stream, name, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Create a new dim subscription to a given server and service
+//! @param server the server name
+//! @param service the service name
+//
+/*EventImp& DataLogger::SubscribeTo(const string& server, const string& service)
+{
+
+    //DIM_REPLACE
+    //return new DimStampedInfo((server + "/" + service).c_str(), (void*)NULL, 0, this);
+    EventImp& newSubscription = Subscribe(server + "/" + service);
+    newSubscription.bind(&infoHandler, this, placeholders::_1);
+    return newSubscription;
+}*/
+// --------------------------------------------------------------------------
+//
+//! Check whether a service should be subscribed to, based on the black/white list entries
+//! @param server the server name associated with the service being checked
+//! @param service the service name associated with the service being checked
+//
+bool DataLogger::ShouldSubscribe(const string& server, const string& service)
+{
+    if ((fBlackList.find(server + "/") != fBlackList.end()) ||
+         (fBlackList.find(server + "/" + service) != fBlackList.end()) ||
+         (fBlackList.find("/" + service) != fBlackList.end()))
+		 {
+		     if (fWhiteList.size()>0 &&
+        		(fWhiteList.find(server + "/" + service) != fWhiteList.end()))
+				{
+					if (fDebugIsOn)
+						Debug("White list saved service " + server + "/" + service + " from blacklisting");
+        			return true;
+				}
+			if (fDebugIsOn)
+				Debug("Blacklist banned service " + server + "/" + service);
+		 	return false;
+		}
+    return true;
+}
+// --------------------------------------------------------------------------
+//
+//! Compiles a file name
+//! @param path the base path where to put the file
+//! @param time the time at which the file is created
+//! @param service the service name, if any
+//! @param extension the extension to add, if any
+//
+string DataLogger::CompileFileName(const string& service, const string& extension, const Time& time) const
+{
+    ostringstream str;
+
+    const Time ftime(time);//removed this as already done by nightAsInt: -boost::posix_time::hours(12));
+    str << ftime.NightAsInt();
+
+    if (!service.empty())
+        str << '.' << service;
+
+    if (!extension.empty())
+        str << "." << extension;
+
+    return str.str();
+}
+
+string DataLogger::CompileFileNameWithPath(const string& path, const string& service, const string& extension)
+{
+    ostringstream str;
+
+    const Time time;
+
+    //calculate time suitable for naming files.
+    //fCurrentDay is 30 minutes after upcoming sunrise. So just use 12 hours before then
+    const Time ftime = fCurrentDay-boost::posix_time::hours(12);
+
+    //output it
+    str << path << ftime.GetAsStr("/%Y/%m/%d");
+
+    //check if target directory exist
+    if (!DoesPathExist(str.str()))
+        CreateDirectory(str.str());
+
+    str << '/' << CompileFileName(service, extension, ftime);//fCurrentDay);
+
+    return str.str();
+
+
+}
+
+// --------------------------------------------------------------------------
+//
+//!retrieves the size on disk of a file
+//! @param fileName the full file name for which the size on disk should be retrieved
+//! @return the size of the file on disk, in bytes. 0 if the file does not exist or if an error occured
+//
+off_t DataLogger::GetFileSize(const string& fileName)
+{
+    return DimWriteStatistics::GetFileSizeOnDisk(fileName, *this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the oldest run number and closes the fits files that should be closed
+//! Also creates the fits grouping file
+//
+void DataLogger::RemoveOldestRunNumber()
+{
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Removing run number " << fRunNumber.front().runNumber;
+        Debug(str);
+    }
+    //remove the entry
+    fRunNumber.pop_front();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default constructor. The name of the machine is given DATA_LOGGER
+//! and the state is set to kSM_Ready at the end of the function.
+//
+//!Setup the allows states, configs and transitions for the data logger
+//
+DataLogger::DataLogger(ostream &out) : StateMachineDim(out, "DATA_LOGGER"),
+fNightlyLogImp(fNightlyLogFile), fFilesStats("DATA_LOGGER", *this)
+{
+    shouldBackLog = true;
+
+    servicesCounter=1;
+
+    //initialize member data
+    fFilePath = ".";
+
+    fDimList.Subscribe(*this);
+    fDimList.SetCallbackServerAdd(bind(&DataLogger::AddServer, this, placeholders::_1));
+    fDimList.SetCallbackServiceAdd(bind(&DataLogger::AddService, this, placeholders::_1));
+
+    //calculate time "centered" around noon instead of midnight
+    const Time timeNow;
+//    const Time nowMinusTwelve = timeNow-boost::posix_time::hours(12);
+    //the "current day" is actually the next closing time of nightly files
+    //the next closing time is 30 minutes after upcoming sunrise.
+    //If we are within 30 minutes after sunrise, closing time is soon
+    fCurrentDay = Time().GetNextSunRise();//GetSunRise(Time()-boost::posix_time::minutes(30)) + boost::posix_time::minutes(30);//(int)(nowMinusTwelve.Mjd());//nowMinusTwelve.M()*31 + nowMinusTwelve.D();//assume 31 days per month. we do not really care, only want unique number per day of the year
+    lastFlush = Time();
+
+    //Give a name to this machine's specific states
+    AddStateName(kSM_NightlyOpen,      "NightlyFileOpen",  "The summary files for the night are open.");
+    AddStateName(kSM_WaitingRun,       "WaitForRun",       "The summary files for the night are open and we wait for a run to be started.");
+    AddStateName(kSM_Logging,          "Logging",          "The summary files for the night and the files for a single run are open.");
+    AddStateName(kSM_BadFolder,        "ErrInvalidFolder", "The folder for the files is not invalid.");
+    AddStateName(kSM_DailyWriteError,  "ErrDailyWrite",    "An error occured while writing to a daily (and run) file.");
+    AddStateName(kSM_RunWriteError,    "ErrRunWrite",      "An error occured while writing to a run file.");
+
+    // Add the possible transitions for this machine
+    AddEvent("START", kSM_Ready, kSM_BadFolder)
+        (bind(&DataLogger::Start, this))
+        ("Start the nightly logging. Nightly file location must be specified already");
+
+    AddEvent("STOP", kSM_NightlyOpen, kSM_WaitingRun, kSM_Logging, kSM_DailyWriteError, kSM_RunWriteError)
+        (bind(&DataLogger::GoToReady, this))
+        ("Stop all data logging, close all files.");
+
+    AddEvent("RESET", kSM_Error, kSM_BadFolder, kSM_DailyWriteError, kSM_RunWriteError)
+        (bind(&DataLogger::GoToReady, this))
+        ("Transition to exit error states. Closes the any open file.");
+
+    AddEvent("START_RUN_LOGGING", /*kSM_Logging,*/ kSM_NightlyOpen, kSM_Ready)
+        (bind(&DataLogger::NightlyToWaitRun, this))
+        ("Go to waiting for run number state. In this state with any received run-number a new file is opened.");
+
+    AddEvent("STOP_RUN_LOGGING", kSM_WaitingRun, kSM_Logging)
+        (bind(&DataLogger::BackToNightlyOpen, this))
+        ("Go from the wait for run to nightly open state.");
+
+     // Provide a print command
+     AddEvent("PRINT_INFO")
+            (bind(&DataLogger::PrintState, this, placeholders::_1))
+            ("Print information about the internal status of the data logger.");
+
+
+     OpenFileToDim fToDim;
+     fToDim.code = 0;
+     fToDim.fileName[0] = '\0';
+
+     fOpenedNightlyFiles = new DimDescribedService(GetName() + "/FILENAME_NIGHTLY", "I:1;C", fToDim,
+                               "Path and base name used for the nightly files."
+                               "|Type[int]:type of open files (1=log, 2=rep, 4=fits)"
+                               "|Name[string]:path and base file name");
+
+     fOpenedRunFiles = new DimDescribedService(GetName() + "/FILENAME_RUN", "I:1;C", fToDim,
+                               "Path and base name used for the run files."
+                               "|Type[int]:type of open files (1=log, 2=rep, 4=fits)"
+                               "|Name[string]:path and base file name");
+
+     fNumSubAndFitsData.numSubscriptions = 0;
+     fNumSubAndFitsData.numOpenFits = 0;
+     fNumSubAndFits = new DimDescribedService(GetName() + "/NUM_SUBS", "I:2", fNumSubAndFitsData,
+                               "Num. open files + num. subscribed services"
+                               "|NSubAndOpenFiles[int]:Num. of subs and open files");
+
+     //services parameters
+     fDebugIsOn         = false;
+     fOpenedFilesIsOn   = true;
+     fNumSubAndFitsIsOn = true;
+
+     string emptyString="";
+     //Subscription list service
+     fCurrentSubscription = new DimDescribedService(GetName() + "/SUBSCRIPTIONS", "C", emptyString.c_str(),
+                                     "List of all the services subscribed by datalogger, except the ones provided by itself."
+                                     "|Liste[string]:list of logged services and the delay in seconds since last update");
+     fCurrentSubscriptionUpdateRate = 60; //by default, 1 minute between each update
+     fLastSubscriptionUpdate = timeNow;
+
+     // provide services control commands
+     AddEvent("SET_DEBUG_MODE", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetDebugOnOff, this, placeholders::_1))
+         ("Switch debug mode on or off. Debug mode prints information about every service written to a file."
+          "|Enable[bool]:Enable of disable debug mode (yes/no).");
+
+     AddEvent("SET_STATISTICS_UPDATE_INTERVAL", "S:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetStatsPeriod, this, placeholders::_1))
+         ("Interval in which the data-logger statistics service (STATS) is updated."
+          "|Interval[ms]:Value in milliseconds (<=0: no update).");
+
+     AddEvent("ENABLE_FILENAME_SERVICES", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetOpenedFilesOnOff ,this, placeholders::_1))
+         ("Switch service which distributes information about the open files on or off."
+          "|Enable[bool]:Enable of disable filename services (yes/no).");
+
+     AddEvent("ENABLE_NUMSUBS_SERVICE", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetNumSubsAndFitsOnOff, this, placeholders::_1))
+         ("Switch the service which distributes information about the number of subscriptions and open files on or off."
+          "|Enable[bool]:Enable of disable NUM_SUBS service (yes/no).");
+
+     AddEvent("SET_RUN_TIMEOUT", "L:1", kSM_Ready, kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun)
+         (bind(&DataLogger::SetRunTimeoutDelay, this, placeholders::_1))
+         ("Set the timeout delay for old run numbers."
+          "|timeout[min]:Time out in minutes after which files for expired runs are closed.");
+     //Provide access to the duration between two updates of the service list
+     AddEvent("SET_SERVICE_LIST_UPDATE_INTERVAL", "I:1", kSM_Ready, kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun)
+         (bind(&DataLogger::setSubscriptionListUpdateTimeLapse, this, placeholders::_1))
+         ("Set the min interval between two services-list updates."
+          "|duration[sec]:The interval between two updates, in seconds.");
+
+     fDestructing = false;
+
+     fPreviousOldRunNumberCheck = Time().Mjd();
+
+     fDailyFileDayChangedAlready = true;
+     fRunNumberTimeout = 60000; //default run-timeout set to 1 minute
+     fRunNumber.push_back(RunNumberType());
+     fRunNumber.back().runNumber = -1;
+     fRunNumber.back().time = Time();
+     NotifyOpenedFile("", 0, fOpenedNightlyFiles);
+     NotifyOpenedFile("", 0, fOpenedRunFiles);
+
+     fRunNumberService = 0;
+
+     fShouldAutoStart = false;
+     fAutoStarted = false;
+
+
+     if(fDebugIsOn)
+     {
+         Debug("DataLogger Init Done.");
+     }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Destructor
+//
+DataLogger::~DataLogger()
+{
+    if (fDebugIsOn)
+        Debug("DataLogger destruction starts");    
+
+    //this boolean should not be required anymore
+    fDestructing = true;
+
+    //now clear the services subscriptions
+    dim_lock();
+    fServiceSubscriptions.clear();
+    dim_unlock();
+
+    //clear any remaining run number (should remain only one)
+    while (fRunNumber.size() > 0)
+    {
+         RemoveOldestRunNumber();
+    }
+    //go to the ready state. i.e. close all files, run-wise first
+    GoToReady();
+
+    Info("Will soon close the daily log file");
+
+    delete fOpenedNightlyFiles;
+    delete fOpenedRunFiles;
+    delete fNumSubAndFits;
+    delete fCurrentSubscription;
+
+    if (fNightlyLogFile.is_open())//this file is the only one that has not been closed by GoToReady
+    {
+        fNightlyLogFile << endl;
+        fNightlyLogFile.close();
+    }
+    if (!fNightlyLogFile.is_open())
+        Info("Daily log file was closed indeed");
+    else
+        Warn("Seems like there was a problem while closing the daily log file.");
+    for (auto it=fServerDescriptionsList.begin(); it!= fServerDescriptionsList.end(); it++)
+        delete *it;
+
+    if (fDebugIsOn)
+        Debug("DataLogger desctruction ends");    
+}
+
+// --------------------------------------------------------------------------
+//
+//! checks if old run numbers should be trimmed and if so, do it
+//
+void DataLogger::TrimOldRunNumbers()
+{
+    const Time cTime = Time();
+
+    if (cTime - fPreviousOldRunNumberCheck < boost::posix_time::milliseconds(fRunNumberTimeout))
+        return;
+
+    while (fRunNumber.size() > 1 && (cTime - fRunNumber.back().time) > boost::posix_time::milliseconds(fRunNumberTimeout))
+    {
+         RemoveOldestRunNumber();
+    }
+    fPreviousOldRunNumberCheck = cTime;
+}
+// --------------------------------------------------------------------------
+//
+//! Inherited from DimInfo. Handles all the Infos to which we subscribed, and log them
+//
+int DataLogger::infoCallback(const EventImp& evt, unsigned int subIndex)
+{
+//    if (fDebugIsOn)
+//    {
+//        ostringstream str;
+//        str << "Got infoCallback called with service index= " << subIndex;
+//        Debug(str.str());
+//    }
+
+    if ((GetCurrentState() == kSM_Ready) &&  (!fAutoStarted) && fShouldAutoStart)
+    {
+        fAutoStarted = true;
+        SetCurrentState(Start(), "infoCallback");
+//        SetCurrentState(NightlyToWaitRun());
+    }
+    else
+    {
+        if (GetCurrentState() > kSM_Ready)
+            fAutoStarted = true;
+    }
+
+
+    //check if the service pointer corresponds to something that we subscribed to
+    //this is a fix for a bug that provides bad Infos when a server starts
+    bool found = false;
+    SubscriptionsListType::iterator x;
+    map<string, SubscriptionType>::iterator y;
+    for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+    {//find current service is subscriptions
+     //Edit: this should be useless now... remove it sometimes ?
+        for (y=x->second.begin(); y!=x->second.end();y++)
+            if (y->second.index == subIndex)
+            {
+                found = true;    
+                break;
+            }
+        if (found)
+            break;
+    }
+
+    if (!found && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Service " << evt.GetName() << " not found in subscriptions" << endl;
+        Debug(str.str());
+    }
+    if (!found)
+        return GetCurrentState();
+
+
+    if (evt.GetSize() == 0 && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Got 0 size for " << evt.GetName() << endl;
+        Debug(str.str());
+    }
+    if (evt.GetSize() == 0)
+        return GetCurrentState();
+
+    if (evt.GetFormat() == "" && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Got no format for " << evt.GetName() << endl;
+        Debug(str.str());
+    }
+    if (evt.GetFormat() == "")
+        return GetCurrentState();
+
+//    cout.precision(20);
+//    cout << "Orig timestamp: " << Time(I->getTimestamp(), I->getTimestampMillisecs()*1000).Mjd() << endl;
+    // FIXME: Here we have to check if we have received the
+    //        service with the run-number.
+    //        CheckForRunNumber(I); has been removed because we have to
+    //        subscribe to this service anyway and hence we have the pointer
+    //        (no need to check for the name)
+    CheckForRunNumber(evt, subIndex);
+
+    Report(evt, y->second);
+
+    //remove old run numbers
+    TrimOldRunNumbers();
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new active run number
+//! @param newRun the new run number
+//! @param time the time at which the new run number was issued
+//
+void DataLogger::AddNewRunNumber(int64_t newRun, Time time)
+{
+
+    if (newRun > 0xffffffff)
+    {
+        Error("New run number too large, out of range. Ignoring.");
+        return;
+    }
+    for (std::vector<int64_t>::const_iterator it=previousRunNumbers.begin(); it != previousRunNumbers.end(); it++)
+    {
+        if (*it == newRun)
+        {
+            Error("Newly provided run number has already been used (or is still in use). Going to error state");
+            SetCurrentState(kSM_BadFolder, "AddNewRunNumber");
+            return;
+        }
+    }
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Adding new run number " << newRun << " issued at " << time;
+        Debug(str);
+    }
+    //Add new run number to run number list
+    fRunNumber.push_back(RunNumberType());
+    fRunNumber.back().runNumber = int32_t(newRun);
+    fRunNumber.back().time = time;
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "The new run number is: " << fRunNumber.back().runNumber;
+        Debug(str);
+    }
+    if (GetCurrentState() != kSM_Logging && GetCurrentState() != kSM_WaitingRun )
+        return;
+
+    if (newRun > 0 && GetCurrentState()  == kSM_WaitingRun)
+        SetCurrentState(kSM_Logging, "AddNewRunNumber");
+    if (newRun < 0 && GetCurrentState() == kSM_Logging)
+        SetCurrentState(kSM_WaitingRun, "AddNewRunNumber");
+}
+// --------------------------------------------------------------------------
+//
+//! Checks whether or not the current info is a run number.
+//! If so, then remember it. A run number is required to open the run-log file
+//! @param I
+//!        the current DimInfo
+//
+void DataLogger::CheckForRunNumber(const EventImp& evt, unsigned int index)
+{
+    if (index != fRunNumberService)
+        return;
+//    int64_t newRun = reinterpret_cast<const uint64_t*>(evt.GetData())[0];
+    AddNewRunNumber(evt.GetXtra(), evt.GetTime());
+}
+// --------------------------------------------------------------------------
+//
+//! Get SunRise. Copied from drivectrl.cc
+//! Used to know when to close and reopen files
+//!
+/*
+Time DataLogger::GetSunRise(const Time &time)
+{
+#ifdef HAVE_LIBNOVA
+    const double lon = -(17.+53./60+26.525/3600);
+    const double lat =   28.+45./60+42.462/3600;
+
+    ln_lnlat_posn observer;
+    observer.lng = lon;
+    observer.lat = lat;
+
+    // This caluclates the sun-rise of the next day after 12:00 noon
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst(time.JD(), &observer, &sun_day)==1)
+    {
+        Fatal("GetSunRise reported the sun to be circumpolar!");
+        return Time(Time::none);
+    }
+
+    if (Time(sun_day.rise)>=time)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst(time.JD()+0.5, &observer, &sun_day)==1)
+    {
+        Fatal("GetSunRise reported the sun to be circumpolar!");
+        return Time(Time::none);
+    }
+
+    return Time(sun_day.rise);
+#else
+    return time;
+#endif
+}
+*/
+// --------------------------------------------------------------------------
+//
+//! write infos to log files.
+//! @param I
+//!     The current DimInfo 
+//! @param sub
+//!        The dataLogger's subscription corresponding to this DimInfo
+//
+void DataLogger::Report(const EventImp& evt, SubscriptionType& sub)
+{
+    const string fmt(evt.GetFormat());
+
+    const bool isItaReport = fmt!="C";
+
+    if (!fNightlyLogFile.is_open())
+        return;
+
+    if (fDebugIsOn && string(evt.GetName())!="DATA_LOGGER/MESSAGE")
+    {
+        ostringstream str;
+        str << "Logging " << evt.GetName() << " [" << evt.GetFormat() << "] (" << evt.GetSize() << ")";
+        Debug(str);
+    }
+
+    //
+    // Check whether we should close and reopen daily text files or not
+    // calculate time "centered" around noon instead of midnight
+    // if number of days has changed, then files should be closed and reopenned.
+    const Time timeNow;
+//    const Time nowMinusTwelve = timeNow-boost::posix_time::hours(12);
+//    int newDayNumber = (int)(nowMinusTwelve.Mjd());
+
+    //also check if we should flush the nightly files
+    if (lastFlush < timeNow-boost::posix_time::minutes(1))
+    {
+        lastFlush = timeNow;
+        SubscriptionsListType::iterator x;
+        map<string, SubscriptionType>::iterator y;
+        for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+        {//find current service is subscriptions
+            for (y=x->second.begin(); y!=x->second.end();y++)
+                if (y->second.nightlyFile.IsOpen())
+                {
+                    y->second.nightlyFile.Flush();
+                }
+        }
+        if (fDebugIsOn)
+            Debug("Just flushed nightly fits files to the disk");
+    }
+    //check if we should close and reopen the nightly files
+    if (timeNow > fCurrentDay)//GetSunRise(fCurrentDay)+boost::posix_time::minutes(30)) //if we went past 30 minutes after sunrise
+    {
+        //set the next closing time. If we are here, we have passed 30 minutes after sunrise.
+        fCurrentDay = timeNow.GetNextSunRise();//GetSunRise(timeNow-boost::posix_time::minutes(30))+boost::posix_time::minutes(30);
+        //crawl through the subcriptions and close any open nightly file
+        SubscriptionsListType::iterator x;
+        map<string, SubscriptionType>::iterator y;
+        for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+        {//find current service is subscriptions
+            for (y=x->second.begin(); y!=x->second.end();y++)
+            {
+                if (y->second.nightlyFile.IsOpen())
+                {
+                    y->second.nightlyFile.Close();
+                }
+                y->second.increment = 0;
+            }
+        }
+
+        if (fDebugIsOn)
+            Debug("Day have changed! Closing and reopening nightly files");
+
+        fNightlyLogFile << endl;
+        fNightlyLogFile.close();
+//        fNightlyReportFile.close();
+
+        Info("Closed: "+fFullNightlyLogFileName);
+//        Info("Closed: "+fFullNightlyReportFileName);
+
+        fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+        if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+        {
+            GoToReady();
+            SetCurrentState(kSM_BadFolder, "Report");
+            return;
+        }
+        fNightlyLogFile << endl;
+
+//        fFullNightlyReportFileName = CompileFileNameWithPath(fFilePath, "", "rep");
+//        if (!OpenTextFile(fNightlyReportFile, fFullNightlyReportFileName))
+//        {
+//            GoToReady();
+//            SetCurrentState(kSM_BadFolder, "Report");
+//            return;
+//        }
+    }
+    //create the converter for that service
+    if (!sub.fConv)
+    {
+        sub.fConv = shared_ptr<Converter>(new Converter(Out(), evt.GetFormat()));
+        if (!sub.fConv->valid())
+        {
+            ostringstream str;
+            str << "Couldn't properly parse the format... service " << evt.GetName() << " ignored.";
+            Error(str);
+            return;    
+        }
+    }
+    //construct the header
+    ostringstream header;
+    const Time cTime(evt.GetTime());
+    fQuality = evt.GetQoS();
+
+    //update subscription last received time
+    sub.lastReceivedEvent = cTime;
+    //update subscription list service if required
+    updateSubscriptionList();
+
+    fMjD = cTime.Mjd() ? cTime.Mjd()-40587 : 0;
+
+    if (isItaReport)
+    {
+//DISABLED REPORT WRITING BY THOMAS REQUEST
+        //write text header
+/*        string serviceName = (sub.service == "MESSAGE") ? "" : "_"+sub.service;
+        header << sub.server << serviceName << " " << fQuality << " ";
+        header << evt.GetTime() << " ";
+
+        string text;
+        try
+        {
+            text = sub.fConv->GetString(evt.GetData(), evt.GetSize());
+        }
+        catch (const runtime_error &e)
+        {
+            ostringstream str;
+            str << "Parsing service " << evt.GetName();
+            str << " failed: " << e.what() << " removing the subscription to " << sub.server << "/" << sub.service;
+            Warn(str);
+            //remove this subscription from the list.
+            //because these operators use references to elements, and because they're supposed here to erase these objects on the way, I'm not too sure... so duplicate the names !
+            RemoveService(sub.server, sub.service, false);
+            return;
+        }
+
+        if (text.empty())
+        {
+            ostringstream str;
+            str << "Service " << evt.GetName() << " sent an empty string";
+            Info(str);
+            return;
+        }
+        //replace bizarre characters by white space
+        replace(text.begin(), text.end(), '\n', '\\');
+        replace_if(text.begin(), text.end(), ptr_fun<int, int>(&iscntrl), ' ');
+        
+        //write entry to Nightly report
+        if (fNightlyReportFile.is_open())
+        {
+            fNightlyReportFile << header.str() << text << endl;
+            if (!CheckForOfstreamError(fNightlyReportFile, true))
+                return;
+        }
+*/
+#ifdef HAVE_FITS
+        //check if the last received event was before noon and if current one is after noon.
+        //if so, close the file so that it gets reopened.
+//        sub.lastReceivedEvent = cTime;
+        if (!sub.nightlyFile.IsOpen())
+            if (GetCurrentState() != kSM_Ready)
+                OpenFITSFiles(sub);
+        WriteToFITS(sub, evt.GetData());
+#endif
+    }
+    else
+    {//write entry to Nightly log
+        vector<string> strings;
+        try
+        {
+           strings = sub.fConv->ToStrings(evt.GetData());
+        }
+        catch (const runtime_error &e)
+        {
+            ostringstream str;
+            str << "Parsing service " << evt.GetName();
+            str << " failed: " << e.what() << " removing the subscription for now.";
+            Error(str);
+            //remove this subscription from the list.
+            //because these operators use references to elements, and because they're supposed here to erase these objects on the way, I'm not too sure... so duplicate the names !
+            RemoveService(sub.server, sub.service, false);
+            return;
+        }
+        if (strings.size() > 1)
+        {
+            ostringstream err;
+            err << "There was more than one string message in service " << evt.GetName() << " going to fatal error state";
+            Error(err.str());
+        }
+
+        bool isMessage = (sub.service == "MESSAGE");
+        ostringstream msg;
+        string serviceName = isMessage ? "" : "_"+sub.service;
+        msg << sub.server << serviceName;
+
+
+        //in case of non messages message (i.e. binary data written to logs)
+        //we override the quality before writing to .log, otherwise it will wrongly decorate the log entry
+        //because fQuality is really the system state in some cases.
+        //so save a backup of the original value before writing to fits
+        int backup_quality = fQuality;
+
+        //fix the quality of non message "messages"
+        if (!isMessage)
+        {
+            msg << "[" << fQuality << "]";
+            fQuality = kMessage;
+        }
+
+        //special case for alarm reset
+        if (isMessage && (fQuality == kAlarm) && (strings[0] == ""))
+        {
+            fQuality = kInfo;
+            strings[0] = "Alarm reset";
+        }
+        msg << ": " << strings[0];
+
+        if (fNightlyLogFile.is_open())
+        {
+            fNightlyLogImp.Write(cTime, msg.str().c_str(), fQuality);
+            if (!CheckForOfstreamError(fNightlyLogFile, true))
+                return;
+        }
+
+        //in case we have overriden the fQuality before writing to log, restore the original value before writing to FITS
+        if (!isMessage)
+            fQuality = backup_quality;
+
+//        sub.lastReceivedEvent = cTime;
+        if (!sub.nightlyFile.IsOpen())
+            if (GetCurrentState() != kSM_Ready)
+                OpenFITSFiles(sub);
+        WriteToFITS(sub, evt.GetData());
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! print the dataLogger's current state. invoked by the PRINT command
+//! @param evt
+//!        the current event. Not used by the method
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::PrintState(const Event& )
+{
+    Message("------------------------------------------");
+    Message("------- DATA LOGGER CURRENT STATE --------");
+    Message("------------------------------------------");
+
+    //print the path configuration
+#if BOOST_VERSION < 104600
+    Message("File path:    " + boost::filesystem::system_complete(boost::filesystem::path(fFilePath)).directory_string());
+#else
+    Message("File path:    " + boost::filesystem::system_complete(boost::filesystem::path(fFilePath)).parent_path().string());
+#endif
+
+    //print active run numbers
+    ostringstream str;
+    //timeout value
+    str << "Timeout delay for old run numbers: " << fRunNumberTimeout << " ms";
+    Message(str);
+    str.str("");
+    str << "Active Run Numbers:";
+    for (list<RunNumberType>::const_iterator it=fRunNumber.begin(); it!=fRunNumber.end(); it++)
+        str << " " << it->runNumber;
+    if (fRunNumber.empty())
+        str << " <none>";
+    Message(str);
+
+    //print all the open files. 
+    Message("------------ OPEN FILES ----------------");
+    if (fNightlyLogFile.is_open())
+        Message("Nightly log-file:    "+fFullNightlyLogFileName);
+
+//    if (fNightlyReportFile.is_open())
+ //       Message("Nightly report-file: "+fFullNightlyReportFileName);
+
+    const DimWriteStatistics::Stats statVar = fFilesStats.GetTotalSizeWritten();
+ //   /*const bool statWarning =*/ calculateTotalSizeWritten(statVar, true);
+#ifdef HAVE_FITS
+    str.str("");
+    str << "Number of open FITS files: " << fNumSubAndFitsData.numOpenFits;
+    Message(str);
+    // FIXME: Print list of open FITS files
+#else
+    Message("FITS output disabled at compilation");
+#endif
+    Message("----------------- STATS ------------------");
+    if (fFilesStats.GetUpdateInterval()>0)
+    {
+        str.str("");
+        str << "Statistics are updated every " << fFilesStats.GetUpdateInterval() << " ms";
+        Message(str);
+    }
+    else
+        Message("Statistics updates are currently disabled.");
+    str.str("");
+    str << "Total Size written: " << statVar.sizeWritten/1000 << " kB";
+        Message(str);
+    str.str("");
+    str << "Disk free space:    " << statVar.freeSpace/1000000   << " MB";
+    Message(str);
+
+    Message("------------ DIM SUBSCRIPTIONS -----------");
+    str.str("");
+    str << "There are " << fNumSubAndFitsData.numSubscriptions << " active DIM subscriptions.";
+    Message(str);
+    for (map<const string, map<string, SubscriptionType> >::const_iterator it=fServiceSubscriptions.begin(); it!= fServiceSubscriptions.end();it++)
+    {
+        Message("Server "+it->first);
+        for (map<string, SubscriptionType>::const_iterator it2=it->second.begin(); it2!=it->second.end(); it2++)
+            Message(" -> "+it2->first);
+    }
+    Message("--------------- BLOCK LIST ---------------");
+    for (set<string>::const_iterator it=fBlackList.begin(); it != fBlackList.end(); it++)
+        Message(" -> "+*it);
+    if (fBlackList.empty())
+        Message(" <empty>");
+
+    Message("--------------- ALLOW LIST ---------------");
+    for (set<string>::const_iterator it=fWhiteList.begin(); it != fWhiteList.end(); it++)
+        Message(" -> "+*it);
+    if (fWhiteList.empty())
+        Message(" <empty>");
+
+    Message("-------------- GROUPING LIST -------------");
+    Message("The following servers and/or services will");
+    Message("be grouped into a single fits file:");
+    for (set<string>::const_iterator it=fGrouping.begin(); it != fGrouping.end(); it++)
+        Message(" -> "+*it);
+    if (fGrouping.empty())
+        Message(" <no grouping>");
+
+    Message("------------------------------------------");
+    Message("-------- END OF DATA LOGGER STATE --------");
+    Message("------------------------------------------");
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! turn debug mode on and off
+//! @param evt
+//!        the current event. contains the instruction string: On, Off, on, off, ON, OFF, 0 or 1
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetDebugOnOff(const Event& evt)
+{
+    const bool backupDebug = fDebugIsOn;
+
+    fDebugIsOn = evt.GetBool();
+
+    if (fDebugIsOn == backupDebug)
+        Message("Debug mode was already in the requested state.");
+
+    ostringstream str;
+    str << "Debug mode is now " << fDebugIsOn;
+    Message(str);
+
+    fFilesStats.SetDebugMode(fDebugIsOn);
+
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the statistics update period duration. 0 disables the statistics
+//! @param evt
+//!        the current event. contains the new duration.
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetStatsPeriod(const Event& evt)
+{
+    fFilesStats.SetUpdateInterval(evt.GetShort());
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the opened files service on or off. 
+//! @param evt
+//!        the current event. contains the instruction string. similar to setdebugonoff
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetOpenedFilesOnOff(const Event& evt)
+{
+    const bool backupOpened = fOpenedFilesIsOn;
+
+    fOpenedFilesIsOn = evt.GetBool();
+
+    if (fOpenedFilesIsOn == backupOpened)
+        Message("Opened files service mode was already in the requested state.");
+
+    ostringstream str;
+    str << "Opened files service mode is now " << fOpenedFilesIsOn;
+    Message(str);
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! set the number of subscriptions and opened fits on and off
+//! @param evt
+//!        the current event. contains the instruction string. similar to setdebugonoff
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetNumSubsAndFitsOnOff(const Event& evt)
+{
+    const bool backupSubs = fNumSubAndFitsIsOn;
+
+    fNumSubAndFitsIsOn = evt.GetBool();
+
+    if (fNumSubAndFitsIsOn == backupSubs)
+        Message("Number of subscriptions service mode was already in the requested state");
+
+    ostringstream str;
+    str << "Number of subscriptions service mode is now " << fNumSubAndFitsIsOn;
+    Message(str);
+
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the timeout delay for old run numbers
+//! @param evt
+//!        the current event. contains the timeout delay long value
+//! @returns
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetRunTimeoutDelay(const Event& evt)
+{
+    if (evt.GetUInt() == 0)
+    {
+        Error("Timeout delays for old run numbers must be greater than 0... ignored.");
+        return GetCurrentState();
+    }
+
+    if (fRunNumberTimeout == evt.GetUInt())
+        Message("New timeout for old run numbers is same value as previous one.");
+
+    fRunNumberTimeout = evt.GetUInt();
+
+    ostringstream str;
+    str  << "Timeout delay for old run numbers is now " << fRunNumberTimeout << " ms";
+    Message(str);
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Notifies the DIM service that a particular file was opened
+//! @ param name the base name of the opened file, i.e. without path nor extension. 
+//!     WARNING: use string instead of string& because I pass values that do not convert to string&.
+//!        this is not a problem though because file are not opened so often.
+//! @ param type the type of the opened file. 0 = none open, 1 = log, 2 = text, 4 = fits
+inline void DataLogger::NotifyOpenedFile(const string &name, int type, DimDescribedService* service)
+{
+    if (!fOpenedFilesIsOn)
+        return;
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Updating " << service->getName() << " file '" << name << "' (type=" << type << ")";
+        Debug(str);
+
+        str.str("");
+        str << "Num subscriptions: " << fNumSubAndFitsData.numSubscriptions << " Num open FITS files: " << fNumSubAndFitsData.numOpenFits;
+        Debug(str);
+    }
+
+    if (name.size()+1 > FILENAME_MAX)
+    {
+        Error("Provided file name '" + name + "' is longer than allowed file name length.");
+        return;
+    }
+
+    OpenFileToDim fToDim;
+    fToDim.code = type;
+    memcpy(fToDim.fileName, name.c_str(), name.size()+1);
+
+    service->setData(reinterpret_cast<void*>(&fToDim), name.size()+1+sizeof(uint32_t));
+    service->setQuality(0);
+    service->Update();
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the Start transition.
+//! Concatenates the given path for the Nightly file and the filename itself (based on the day), 
+//! and tries to open it.
+//! @returns 
+//!        kSM_NightlyOpen if success, kSM_BadFolder if failure
+int DataLogger::Start()
+{
+    if (fDebugIsOn)
+    {
+        Debug("Starting...");    
+    }
+    fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+    bool nightlyLogOpen = fNightlyLogFile.is_open();
+    if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+        return kSM_BadFolder;
+    if (!nightlyLogOpen)
+        fNightlyLogFile << endl;
+
+//    fFullNightlyReportFileName = CompileFileNameWithPath(fFilePath, "", "rep");
+//    if (!OpenTextFile(fNightlyReportFile, fFullNightlyReportFileName))
+//    {
+//        fNightlyLogFile.close();
+//        Info("Closed: "+fFullNightlyReportFileName);
+//        return kSM_BadFolder;
+//    }
+
+    fFilesStats.FileOpened(fFullNightlyLogFileName);
+//    fFilesStats.FileOpened(fFullNightlyReportFileName);
+    //notify that a new file has been opened.
+    const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+    NotifyOpenedFile(baseFileName, 3, fOpenedNightlyFiles);
+
+    fOpenedNightlyFits.clear();
+    
+    return kSM_NightlyOpen;     
+}
+
+#ifdef HAVE_FITS
+// --------------------------------------------------------------------------
+//
+//! open if required a the FITS files corresponding to a given subscription
+//! @param sub
+//!     the current DimInfo subscription being examined
+void DataLogger::OpenFITSFiles(SubscriptionType& sub)
+{
+    string serviceName(sub.server + "_" + sub.service);//evt.GetName());
+
+    for (unsigned int i=0;i<serviceName.size(); i++)
+    {
+        if (serviceName[i] == '/')
+        {
+            serviceName[i] = '_';
+            break;    
+        }    
+    }
+    //we open the NightlyFile anyway, otherwise this function shouldn't have been called.
+    if (!sub.nightlyFile.IsOpen())
+    {
+        string incrementedServiceName = serviceName;
+        if (sub.increment != 0)
+        {
+            ostringstream str;
+            str << "." << sub.increment;
+            incrementedServiceName += str.str();
+        }
+        const string partialName = CompileFileNameWithPath(fFilePath, incrementedServiceName, "fits");
+
+        const string fileNameOnly = partialName.substr(partialName.find_last_of('/')+1, partialName.size());
+        if (!sub.fitsBufferAllocated)
+            AllocateFITSBuffers(sub);
+        //get the size of the file we're about to open
+        if (fFilesStats.FileOpened(partialName))
+            fOpenedNightlyFits[fileNameOnly].push_back(serviceName);
+
+        if (!sub.nightlyFile.Open(partialName, serviceName, &fNumSubAndFitsData.numOpenFits, this, 0))
+        {
+            GoToRunWriteErrorState();
+            return;
+        }
+
+        ostringstream str;
+        str << "Opened: " << partialName << " (Nfits=" << fNumSubAndFitsData.numOpenFits << ")";
+        Info(str);
+
+        //notify the opening
+        const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+        NotifyOpenedFile(baseFileName, 7, fOpenedNightlyFiles);
+        if (fNumSubAndFitsIsOn)
+            fNumSubAndFits->Update();
+    }
+
+}    
+// --------------------------------------------------------------------------
+//
+//! Allocates the required memory for a given pair of fits files (nightly and run)
+//! @param sub the subscription of interest.
+//
+void DataLogger::AllocateFITSBuffers(SubscriptionType& sub)
+{
+    //Init the time columns of the file
+    Description dateDesc(string("Time"), string("Modified Julian Date"), string("MJD"));
+    sub.nightlyFile.AddStandardColumn(dateDesc, "1D", &fMjD, sizeof(double));
+
+    Description QoSDesc("QoS", "Quality of service", "");
+    sub.nightlyFile.AddStandardColumn(QoSDesc, "1J", &fQuality, sizeof(int));
+
+    // Compilation failed
+    if (!sub.fConv->valid())
+    {
+        Error("Compilation of format string failed.");
+        return;
+    }
+
+    //we've got a nice structure describing the format of this service's messages.
+    //Let's create the appropriate FITS columns
+    const vector<string> dataFormatsLocal = sub.fConv->GetFitsFormat();
+
+    ostringstream str;
+    str << "Initializing data columns for service " << sub.server << "/" << sub.service;
+    Info(str);
+    sub.nightlyFile.InitDataColumns(GetDescription(sub.server, sub.service), dataFormatsLocal, this);
+
+    sub.fitsBufferAllocated = true;
+}
+// --------------------------------------------------------------------------
+//
+//! write a dimInfo data to its corresponding FITS files
+//
+//FIXME: DO I REALLY NEED THE EVENT IMP HERE ???
+void DataLogger::WriteToFITS(SubscriptionType& sub, const void* data)
+{
+        //nightly File status (open or not) already checked
+        if (sub.nightlyFile.IsOpen())
+        {
+            if (!sub.nightlyFile.Write(*sub.fConv.get(), data))
+            {
+                RemoveService(sub.server, sub.service, false);
+                GoToNightlyWriteErrorState();
+                return;
+            }
+         }
+}
+#endif //if has_fits
+// --------------------------------------------------------------------------
+//
+//! Go to Run Write Error State
+//      A write error has occurred. Checks what is the current state and take appropriate action
+void DataLogger::GoToRunWriteErrorState()
+{
+    if ((GetCurrentState() != kSM_RunWriteError) &&
+        (GetCurrentState() != kSM_DailyWriteError))
+        SetCurrentState(kSM_RunWriteError, "GoToRunWriteErrorState");
+}
+// --------------------------------------------------------------------------
+//
+//! Go to Nightly Write Error State
+//      A write error has occurred. Checks what is the current state and take appropriate action
+void DataLogger::GoToNightlyWriteErrorState()
+{
+    if (GetCurrentState() != kSM_DailyWriteError)
+        SetCurrentState(kSM_DailyWriteError, "GoToNightlyWriteErrorState");
+}
+
+
+#ifdef HAVE_FITS
+// --------------------------------------------------------------------------
+//
+//! Create a fits group file with all the run-fits that were written (either daily or run)
+//! @param filesToGroup a map of filenames mapping to table names to be grouped (i.e. a
+//!        single file can contain several tables to group
+//! @param runNumber the run number that should be used for grouping. 0 means nightly group
+//
+void DataLogger::CreateFitsGrouping(map<string, vector<string> > & filesToGroup)
+{
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Creating fits group for nightly files";
+        Debug(str);
+    }
+    //create the FITS group corresponding to the ending run.
+    CCfits::FITS* groupFile;
+    unsigned int numFilesToGroup = 0;
+    unsigned int maxCharLength = 0;
+    for (map<string, vector<string> >::const_iterator it=filesToGroup.begin(); it != filesToGroup.end(); it++)
+    {
+        //add the number of tables in this file to the total number to group
+        numFilesToGroup += it->second.size();
+        //check the length of all the strings to be written, to determine the max string length to write
+        if (it->first.size() > maxCharLength)
+            maxCharLength = it->first.size();
+        for (vector<string>::const_iterator jt=it->second.begin(); jt != it->second.end(); jt++)
+            if (jt->size() > maxCharLength)
+                maxCharLength = jt->size();
+    }
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "There are " << numFilesToGroup << " tables to group";
+        Debug(str);
+    }
+    if (numFilesToGroup <= 1)
+    {
+        filesToGroup.clear();
+        return;
+    }
+    const string groupName = CompileFileNameWithPath(fFilePath, "", "fits");
+
+    Info("Creating FITS group in: "+groupName);
+
+    CCfits::Table* groupTable;
+
+    try
+    {
+        groupFile = new CCfits::FITS(groupName, CCfits::RWmode::Write);
+        //setup the column names
+        ostringstream pathTypeName;
+        pathTypeName << maxCharLength << "A";
+        vector<string> names;
+        vector<string> dataTypes;
+        names.emplace_back("MEMBER_XTENSION");
+        dataTypes.emplace_back("8A");
+        names.emplace_back("MEMBER_URI_TYPE");
+        dataTypes.emplace_back("3A");
+        names.emplace_back("MEMBER_LOCATION");
+        dataTypes.push_back(pathTypeName.str());
+        names.emplace_back("MEMBER_NAME");
+        dataTypes.push_back(pathTypeName.str());
+        names.emplace_back("MEMBER_VERSION");
+        dataTypes.emplace_back("1J");
+        names.emplace_back("MEMBER_POSITION");
+        dataTypes.emplace_back("1J");
+
+        groupTable = groupFile->addTable("GROUPING", numFilesToGroup, names, dataTypes);
+//TODO handle the case when the logger was stopped and restarted during the same day, i.e. the grouping file must be updated
+     }
+     catch (CCfits::FitsException e)
+     {
+         ostringstream str;
+         str << "Creating FITS table GROUPING in " << groupName << ": " << e.message();
+         Error(str);
+         return;
+     }
+     try
+     {
+         groupTable->addKey("GRPNAME", "FACT_RAW_DATA", "Data from the FACT telescope");
+     }
+     catch (CCfits::FitsException e)
+     {
+         Error("CCfits::Table::addKey failed for 'GRPNAME' in '"+groupName+"-GROUPING': "+e.message());
+         return;
+     }
+    //CCfits seems to be buggy somehow: can't use the column's function "write": it create a compilation error: maybe strings were not thought about.
+    //use cfitsio routines instead
+    groupTable->makeThisCurrent();
+    //create appropriate buffer.
+    const unsigned int n = 8 + 3 + 2*maxCharLength + 1 + 8; //+1 for trailling character
+
+    vector<char> realBuffer(n);
+
+    char *startOfExtension = realBuffer.data();
+    char *startOfURI       = realBuffer.data()+8;
+    char *startOfLocation  = realBuffer.data()+8+3;
+    char *startOfName      = realBuffer.data()+8+3+maxCharLength;
+
+    strcpy(startOfExtension, "BINTABLE");
+    strcpy(startOfURI,       "URL");
+
+    realBuffer[8+3+2*maxCharLength+3] = 1;
+    realBuffer[8+3+2*maxCharLength+7] = 1;
+
+    int i=1;
+    for (map<string, vector<string> >::const_iterator it=filesToGroup.begin(); it!=filesToGroup.end(); it++)
+        for (vector<string>::const_iterator jt=it->second.begin(); jt != it->second.end(); jt++, i++)
+        {
+            memset(startOfLocation, 0, 2*maxCharLength+1+8);
+
+            strcpy(startOfLocation, it->first.c_str());
+            strcpy(startOfName,     jt->c_str());
+
+            if (fDebugIsOn)
+            {
+                ostringstream str;
+                str << "Grouping " << it->first << " " << *jt;
+                Debug(str);
+            }
+
+            int status = 0;
+            fits_write_tblbytes(groupFile->fitsPointer(), i, 1, 8+3+2*maxCharLength +8,
+                                reinterpret_cast<unsigned char*>(realBuffer.data()), &status);
+            if (status)
+            {
+                char text[30];//max length of cfitsio error strings (from doc)
+                fits_get_errstatus(status, text);
+                ostringstream str;
+                str << "Writing FITS row " << i << " in " << groupName << ": " << text << " (file_write_tblbytes, rc=" << status << ")";
+                Error(str);
+                GoToRunWriteErrorState();
+                delete groupFile;
+                return;
+            }
+        }
+
+    filesToGroup.clear();
+    delete groupFile;
+}
+#endif //HAVE_FITS
+
+// --------------------------------------------------------------------------
+//
+//! Implements the StopRun transition.
+//! Attempts to close the run file.
+//! @returns
+//!        kSM_WaitingRun if success, kSM_FatalError otherwise
+int DataLogger::StopRunLogging()
+{
+
+    if (fDebugIsOn)
+    {
+        Debug("Stopping Run Logging...");    
+    }
+
+    if (fNumSubAndFitsIsOn)
+        fNumSubAndFits->Update();
+
+    while (fRunNumber.size() > 0)
+    {
+        RemoveOldestRunNumber();
+    }
+    return kSM_WaitingRun;
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the Stop and Reset transitions.
+//! Attempts to close any openned file.
+//! @returns
+//!     kSM_Ready
+int DataLogger::GoToReady()
+{
+   if (fDebugIsOn)
+   {
+        Debug("Going to the Ready state...");
+   }
+   if (GetCurrentState() == kSM_Logging || GetCurrentState() == kSM_WaitingRun)
+       StopRunLogging();
+
+   //it may be that dim tries to write a dimInfo while we're closing files. Prevent that
+   const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+
+//    if (fNightlyReportFile.is_open())
+//    {
+//        fNightlyReportFile.close();
+//        Info("Closed: "+baseFileName+".rep");
+//    }
+#ifdef HAVE_FITS
+    for (SubscriptionsListType::iterator i = fServiceSubscriptions.begin(); i != fServiceSubscriptions.end(); i++)
+        for (map<string, SubscriptionType>::iterator j = i->second.begin(); j != i->second.end(); j++)
+        {
+            if (j->second.nightlyFile.IsOpen())
+                j->second.nightlyFile.Close();
+        }
+#endif
+    if (GetCurrentState() == kSM_Logging || 
+        GetCurrentState() == kSM_WaitingRun || 
+        GetCurrentState() == kSM_NightlyOpen)
+    { 
+        NotifyOpenedFile("", 0, fOpenedNightlyFiles);
+        if (fNumSubAndFitsIsOn)
+            fNumSubAndFits->Update();
+    }
+#ifdef HAVE_FITS
+    CreateFitsGrouping(fOpenedNightlyFits);
+#endif
+    return kSM_Ready;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Implements the transition towards kSM_WaitingRun
+//! If current state is kSM_Ready, then tries to go to nightlyOpen state first.
+//!    @returns
+//!        kSM_WaitingRun or kSM_BadFolder
+int DataLogger::NightlyToWaitRun()
+{
+    int cState = GetCurrentState();
+
+    if (cState == kSM_Ready)
+        cState = Start();
+
+    if (cState != kSM_NightlyOpen)
+        return GetCurrentState();
+
+    if (fDebugIsOn)
+    {
+        Debug("Going to Wait Run Number state...");    
+    }
+    return kSM_WaitingRun;    
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the transition from wait for run number to nightly open
+//! Does nothing really.
+//!    @returns
+//!        kSM_WaitingRun
+int DataLogger::BackToNightlyOpen()
+{
+    if (GetCurrentState()==kSM_Logging)
+        StopRunLogging();
+
+    if (fDebugIsOn)
+    {
+        Debug("Going to NightlyOpen state...");
+    }
+    return kSM_NightlyOpen;
+}
+// --------------------------------------------------------------------------
+//
+//! Setup Logger's configuration from a Configuration object
+//! @param conf the configuration object that should be used
+//!
+int DataLogger::EvalOptions(Configuration& conf)
+{
+    fDebugIsOn = conf.Get<bool>("debug");
+    fFilesStats.SetDebugMode(fDebugIsOn);
+
+    //Set the block or allow list
+    fBlackList.clear();
+    fWhiteList.clear();
+
+    //Adding entries that should ALWAYS be ignored
+    fBlackList.insert("DATA_LOGGER/MESSAGE");
+    fBlackList.insert("DATA_LOGGER/SUBSCRIPTIONS");
+    fBlackList.insert("/SERVICE_LIST");
+    fBlackList.insert("DIS_DNS/");
+
+    //set the black list, white list and the goruping
+    const vector<string> vec1 = conf.Vec<string>("block");
+    const vector<string> vec2 = conf.Vec<string>("allow");
+    const vector<string> vec3 = conf.Vec<string>("group");
+
+    fBlackList.insert(vec1.begin(), vec1.end());
+    fWhiteList.insert(vec2.begin(), vec2.end());
+    fGrouping.insert( vec3.begin(), vec3.end());
+
+    //set the old run numbers timeout delay
+    if (conf.Has("run-timeout"))
+    {
+        const uint32_t timeout = conf.Get<uint32_t>("run-timeout");
+        if (timeout == 0)
+        {
+            Error("Time out delay for old run numbers must not be 0.");
+            return 1;
+        }
+        fRunNumberTimeout = timeout;
+    }
+
+    //configure the run files directory
+    if (conf.Has("destination-folder"))
+     {
+         const string folder = conf.Get<string>("destination-folder");
+         if (!fFilesStats.SetCurrentFolder(folder))
+             return 2;
+
+         fFilePath = folder;
+         fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+         if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+             return 3;
+
+         fNightlyLogFile << endl;
+         NotifyOpenedFile(fFullNightlyLogFileName, 1, fOpenedNightlyFiles);
+         for (vector<string>::iterator it=backLogBuffer.begin();it!=backLogBuffer.end();it++)
+             fNightlyLogFile << *it;
+     }
+
+    shouldBackLog = false;
+    backLogBuffer.clear();
+
+    //configure the interval between statistics updates
+    if (conf.Has("stats-interval"))
+        fFilesStats.SetUpdateInterval(conf.Get<int16_t>("stats-interval"));
+
+    //configure if the filenames service is on or off
+    fOpenedFilesIsOn = !conf.Get<bool>("no-filename-service");
+
+    //configure if the number of subscriptions and fits files is on or off.
+    fNumSubAndFitsIsOn = !conf.Get<bool>("no-numsubs-service");
+    //should we open the daily files at startup ?
+    if (conf.Has("start-daily-files"))
+        if (conf.Get<bool>("start-daily-files"))
+        {
+            fShouldAutoStart = true;
+        }
+    if (conf.Has("service-list-interval"))
+        fCurrentSubscriptionUpdateRate = conf.Get<int32_t>("service-list-interval");
+    return -1;
+}
+
+
+#include "Main.h"
+
+// --------------------------------------------------------------------------
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, DataLogger>(conf);//, true);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The data logger connects to all available Dim services and "
+        "writes them to ascii and fits files.\n"
+        "\n"
+        "The default is that the program is started without user interaction. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usage can be brought to the screen.\n"
+        "\n"
+        "Usage: datalogger [-c type] [OPTIONS]\n"
+        "  or:  datalogger [OPTIONS]\n";
+    cout << endl;
+
+}
+// --------------------------------------------------------------------------
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+    cout <<
+        "\n"
+        "If the allow list has any element, only the servers and/or services "
+        "specified in the list will be used for subscription. The black list "
+        "will disable service subscription and has higher priority than the "
+        "allow list. If the allow list is not present by default all services "
+        "will be subscribed."
+        "\n"
+        "For example, block=DIS_DNS/ will skip all the services offered by "
+        "the DIS_DNS server, while block=/SERVICE_LIST will skip all the "
+        "SERVICE_LIST services offered by any server and DIS_DNS/SERVICE_LIST "
+        "will skip DIS_DNS/SERVICE_LIST.\n"
+        << endl;
+
+    Main::PrintHelp<DataLogger>();
+}
+
+// --------------------------------------------------------------------------
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description configs("DataLogger options");
+    configs.add_options()
+        ("block,b",             vars<string>(),  "Black-list to block services")
+        ("allow,a",             vars<string>(),  "White-list to only allowe certain services")
+        ("debug,d",             po_bool(),       "Debug mode. Print clear text of received service reports.")
+        ("group,g",             vars<string>(),  "Grouping of services into a single run-Fits")
+        ("run-timeout",         var<uint32_t>(), "Time out delay for old run numbers in milliseconds.")
+        ("destination-folder",  var<string>(),   "Base path for the nightly and run files")
+        ("stats-interval",      var<int16_t>(),  "Interval in milliseconds for write statistics update")
+        ("no-filename-service", po_bool(),       "Disable update of filename service")
+        ("no-numsubs-service",  po_bool(),       "Disable update of number-of-subscriptions service")
+        ("start-daily-files",   po_bool(),       "Starts the logger in DailyFileOpen instead of Ready")
+        ("service-list-interval", var<int32_t>(), "Interval between two updates of the service SUBSCRIPTIONS")
+        ;
+
+    conf.AddOptions(configs);
+}
+// --------------------------------------------------------------------------
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+            return RunShell<LocalStream>(conf);
+
+        // Console access w/ and w/o Dim
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell>(conf);
+        else
+            return RunShell<LocalConsole>(conf);
+    }
+
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/dclient5.cc
===================================================================
--- branches/FACT++_part_filenames/src/dclient5.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/dclient5.cc	(revision 18732)
@@ -0,0 +1,703 @@
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+
+using ba::deadline_timer;
+using ba::ip::tcp;
+
+using namespace std;
+
+
+// ------------------------------------------------------------------------
+
+#include "LocalControl.h"
+
+// ------------------------------------------------------------------------
+
+class ConnectionFAD : public Connection
+{
+    MessageImp &fMsg;
+
+    int state;
+
+    char fReadBuffer[1000];
+
+public:
+    void ConnectionEstablished()
+    {
+        StartAsyncRead();
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        return;
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // 125: Operation canceled
+
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+
+            str << "HandleReadTimeout: " << error.message() << " (" << error << ")";// << endl;
+            if (error==ba::error::misc_errors::eof)
+                Warn(str); // Connection: EOF (closed by remote host)
+            else
+                Error(str);
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > deadline_timer::traits_type::now())
+            return;
+
+        Error("fInTimeout has expired...");
+
+       PostClose();
+    }
+
+    void HandleReceivedData(const bs::error_code& error, size_t bytes_received, int)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || error)
+        {
+            // 107: Transport endpoint is not connected
+            // 125: Operation canceled
+            if (error && error!=ba::error::basic_errors::not_connected)
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+                Error(str);
+            }
+            PostClose(error!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        string txt;
+
+        if (bytes_received==2)
+        {
+            txt = string(fReadBuffer, bytes_received);
+            //std::vector<char> buf(128);
+            //bytes_transferred = sock.receive(boost::asio::buffer(d3));
+
+            fMsg() << "Received b=" << bytes_received << ": " << (int)fReadBuffer[0] << " " << (int)txt[0] << " '" << txt << "' " << " " << error.message() << "  (" << error << ")" << endl;
+
+            if (fReadBuffer[0]=='T')
+            {
+                // AsyncRead + Deadline
+                // Do all manipulation to the buffer BEFORE this call!
+                AsyncRead(ba::buffer(fReadBuffer+2, 21)/*,
+                          &Connection::HandleReceivedData*/);
+                AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+            }
+            else
+            {
+                // AsyncRead + Deadline
+                // Do all manipulation to the buffer BEFORE this call!
+                AsyncRead(ba::buffer(fReadBuffer+2, 35)/*,
+                          &Connection::HandleReceivedData*/);
+                AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+            }
+        }
+        else
+        {
+            txt = string(fReadBuffer, bytes_received+2);
+            const int s = atoi(fReadBuffer+35);
+            if (s==9)
+                Info("Requested time received: "+txt);
+            else
+                state = s;
+
+            Out() << "Received b=" << bytes_received << ": " << (int)fReadBuffer[0] << " " << (int)txt[0] << " '" << txt << "' " << " " << error.message() << "  (" << error << ")" << endl;
+            memset(fReadBuffer, 0, 100);
+
+            // Do all manipulation to the buffer BEFORE this call!
+            AsyncRead(ba::buffer(fReadBuffer, 2)/*,
+                      &Connection::HandleReceivedData*/);
+
+
+        }
+    }
+
+    int GetState() const { return state; }
+
+    void StartAsyncRead()
+    {
+        // Start also a dealine_time for a proper timeout
+        // Therefore we must know how often we expect messages
+        // FIXME: Add deadline_counter
+
+        memset(fReadBuffer, 0, 100);
+
+        // AsyncRead + Deadline
+        AsyncRead(ba::buffer(fReadBuffer, 2)/*,
+                  &Connection::HandleReceivedData*/);
+        AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+    }
+
+    /*
+     ConnectionFAD(ba::io_service& io_service, const string &addr, int port) :
+     Connection(io_service, addr, port), state(0) { }
+     ConnectionFAD(ba::io_service& io_service, const string &addr, const string &port) :
+     Connection(io_service, addr, port), state(0) { }
+     */
+
+    ConnectionFAD(ba::io_service& ioservice, MessageImp &imp) :
+    Connection(ioservice, imp()), fMsg(imp), state(0)
+    {
+    }
+};
+
+template <class T>
+class StateMachineFAD : public T, public ba::io_service
+{
+public:
+    enum states_t
+    {
+        kSM_Disconnected = 1,
+        kSM_Connecting,
+        kSM_Connected,
+        kSM_Running,
+        kSM_SomeRunning,
+        kSM_Starting,
+        kSM_Stopping,
+        kSM_Reconnect,
+        kSM_SetUrl,
+    };
+
+    ConnectionFAD c1;
+    ConnectionFAD c2;
+    ConnectionFAD c3;
+    ConnectionFAD c4;
+    ConnectionFAD c5;
+    ConnectionFAD c6;
+    ConnectionFAD c7;
+    ConnectionFAD c8;
+    ConnectionFAD c9;
+
+    /*
+    int Write(const Time &time, const char *txt, int qos)
+    {
+        return T::Write(time, txt, qos);
+    }
+    */
+    Timers fTimers;
+
+    StateMachineFAD(const string &name="", ostream &out=cout) :
+        T(out, name),
+        c1(*this, *this), c2(*this, *this), c3(*this, *this), c4(*this, *this),
+        c5(*this, *this), c6(*this, *this), c7(*this, *this), c8(*this, *this),
+        c9(*this, *this), fTimers(out)
+    {
+//        c1.SetEndpoint();
+        c2.SetEndpoint("localhost", 4001);
+        c3.SetEndpoint("ftmboard1.ethz.ch", 5000);
+        c4.SetEndpoint("localhost", 4003);
+        c5.SetEndpoint("localhost", 4004);
+        c6.SetEndpoint("localhost", 4005);
+        c7.SetEndpoint("localhost", 4006);
+        c8.SetEndpoint("localhost", 4007);
+        c9.SetEndpoint("localhost", 4008);
+
+        c1.SetLogStream(this);
+        c2.SetLogStream(this);
+        c3.SetLogStream(this);
+        c4.SetLogStream(this);
+        c5.SetLogStream(this);
+        c6.SetLogStream(this);
+        c7.SetLogStream(this);
+        c8.SetLogStream(this);
+        c9.SetLogStream(this);
+
+        c1.StartConnect(); // This sets the connection to "open"
+        c2.StartConnect(); // This sets the connection to "open"
+        c3.StartConnect(); // This sets the connection to "open"
+        //c4.StartConnect(); // This sets the connection to "open"
+        //c5.StartConnect(); // This sets the connection to "open"
+        //c6.StartConnect(); // This sets the connection to "open"
+        //c7.StartConnect(); // This sets the connection to "open"
+        //c8.StartConnect(); // This sets the connection to "open"
+        //c9.StartConnect(); // This sets the connection to "open"
+
+        AddStateName(kSM_Disconnected,  "Disconnected");
+        AddStateName(kSM_Connecting,    "Connecting"); // Some connected
+        AddStateName(kSM_Connected,     "Connected");
+        AddStateName(kSM_Running,       "Running");
+        AddStateName(kSM_SomeRunning,   "SomeRunning");
+        AddStateName(kSM_Starting,      "Starting");
+        AddStateName(kSM_Stopping,      "Stopping");
+
+        AddEvent(kSM_Running,   "START", kSM_Connected).
+            AssignFunction(boost::bind(&StateMachineFAD::Start, this, _1, 5));
+        AddEvent(kSM_Connected, "STOP",  kSM_Running);
+
+        AddEvent("TIME", kSM_Running);
+        AddEvent("LED",  kSM_Connected);
+
+        T::AddEvent("TESTI",    "I");
+        T::AddEvent("TESTI2",   "I:2");
+        T::AddEvent("TESTIF",   "I:2;F:2");
+        T::AddEvent("TESTIC",   "I:2;C");
+
+        T::AddEvent("CMD", "C").
+            AssignFunction(boost::bind(&StateMachineFAD::Command, this, _1));
+
+        AddEvent(kSM_Reconnect, "RECONNECT");
+
+        AddEvent(kSM_SetUrl, "SETURL", "C");
+    }
+
+    int Command(const EventImp &evt)
+    {
+        string cmd = evt.GetText();
+
+        size_t p0 = cmd.find_first_of(' ');
+        if (p0==string::npos)
+            p0 = cmd.length();
+
+    T::Out() << "\nCommand: '" << cmd.substr(0, p0) << "'" << cmd.substr(p0)<< "'" << endl;
+    /*
+    const Converter c(T::Out(), "B:5;I:2;F;W;O;C", "yes no false 0 1 31 42 11.12 \"test hallo\" ");
+
+     T::Out() << c.GetRc() << endl;
+     T::Out() << c.N() << endl;
+     T::Out() << c.Get<bool>(0) << endl;
+     T::Out() << c.Get<bool>(1) << endl;
+     T::Out() << c.Get<bool>(2) << endl;
+     T::Out() << c.Get<bool>(3) << endl;
+     T::Out() << c.Get<bool>(4) << endl;
+     T::Out() << c.Get<int>(5) << endl;
+     T::Out() << c.Get<int>(6) << endl;
+     T::Out() << c.Get<float>(7) << endl;
+     T::Out() << c.Get<int>(7) << endl;
+     T::Out() << c.Get<string>(8) << endl;
+     T::Out() << c.Get<string>(9) << endl;
+     T::Out() << c.Get<string>(10) << endl;
+     */
+     return T::GetCurrentState();
+    }
+    int Start(const EventImp &evt, int i)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kSM_Running:    // We are coming from kRunning
+        case kSM_Starting:   // We are coming from kConnected
+            T::Out() << "Received Start(" << i << ")" << endl;
+            c1.PostMessage("START", 10);
+            c2.PostMessage("START", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+        }
+        return T::kSM_FatalError;
+    }
+
+    void Close()
+    {
+        c1.PostClose();
+        c2.PostClose();
+        c3.PostClose();
+        c4.PostClose();
+        c5.PostClose();
+        c6.PostClose();
+        c7.PostClose();
+        c8.PostClose();
+        c9.PostClose();
+    }
+
+
+    int Execute()
+    {
+        // Dispatch at most one handler from the queue. In contrary
+        // to run_run(), it doesn't wait until a handler is available
+        // which can be dispatched, so poll_one() might return with 0
+        // handlers dispatched. The handlers are always dispatched
+        // synchronously.
+
+        fTimers.SetT();
+        const int n = poll_one();
+        fTimers.Proc(n==0 && T::IsQueueEmpty());
+
+//        return c3.IsConnected() ? kSM_Connected : kSM_Disconnected;
+
+
+        // None is connected
+        if (!c1.IsConnected() && !c2.IsConnected())
+            return kSM_Disconnected;
+
+        // Some are connected
+        if (c1.IsConnected()!=c2.IsConnected())
+            return kSM_Connecting;
+
+        if (c1.GetState()==0 && c2.GetState()==0 && T::GetCurrentState()!=kSM_Starting)
+            return kSM_Connected;
+
+        if (c1.GetState()==1 && c2.GetState()==1 && T::GetCurrentState()!=kSM_Stopping)
+            return kSM_Running;
+
+        return kSM_SomeRunning;//GetCurrentState();
+    }
+
+    int Transition(const Event &evt)
+    {
+        ConnectionFAD *con1 = &c1;
+        ConnectionFAD *con2 = &c2;
+
+        switch (evt.GetTargetState())
+        {
+        case kSM_SetUrl:
+            T::Out() << evt.GetText() << endl;
+            c1.SetEndpoint(evt.GetText());
+            return T::GetCurrentState();
+        case kSM_Reconnect:
+            // Close all connections
+            c1.PostClose(false);
+            c2.PostClose(false);
+            c3.PostClose(false);
+
+            // Now wait until all connection have been closed and
+            // all pending handlers have been processed
+            poll();
+
+            // Now we can reopen the connection
+            c1.PostClose(true);
+            c2.PostClose(true);
+            c3.PostClose(true);
+
+
+            //c4.PostClose(true);
+            //c5.PostClose(true);
+            //c6.PostClose(true);
+            //c7.PostClose(true);
+            //c8.PostClose(true);
+            //c9.PostClose(true);
+            return T::GetCurrentState();
+        case kSM_Running: // We are coming from kRunning
+        case kSM_Starting:   // We are coming from kConnected
+            T::Out() << "Received START" << endl;
+            con1->PostMessage("START", 10);
+            con2->PostMessage("START", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+            return kSM_Starting; //GetCurrentState();
+
+        case kSM_Connected:   // We are coming from kConnected
+        case kSM_Stopping: // We are coming from kRunning
+            T::Out() << "Received STOP" << endl;
+            con1->PostMessage("STOP", 10);
+            con2->PostMessage("STOP", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+            return kSM_Stopping;//GetCurrentState();
+        }
+
+        return T::kSM_FatalError; //evt.GetTargetState();
+    }
+    int Configure(const Event &evt)
+    {
+        if (evt.GetName()=="TIME")
+        {
+            c1.PostMessage("TIME", 10);
+            c2.PostMessage("TIME", 10);
+        }
+
+        vector<char> v(2);
+        v[0] = 0xc0;
+        v[1] = 0x00;
+
+        if (evt.GetName()=="LED")
+            c3.PostMessage(v);
+
+        return T::GetCurrentState();
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template<class S>
+int RunDim(Configuration &conf)
+{
+    /*
+     initscr();		      // Start curses mode
+     cbreak();		      // Line buffering disabled, Pass on
+     intrflush(stdscr, FALSE);
+     start_color();            // Initialize ncurses colors
+     use_default_colors();     // Assign terminal default colors to -1
+     for (int i=1; i<8; i++)
+        init_pair(i, i, -1);  // -1: def background
+        scrollok(stdscr, true);
+        */
+
+    WindowLog wout;
+
+    //log.SetWindow(stdscr);
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            wout << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    // Start io_service.Run to use the StateMachineImp::Run() loop
+    // Start io_service.run to only use the commandHandler command detaching
+    StateMachineFAD<S> io_service("DATA_LOGGER", wout);
+    io_service.Run();
+
+    return 0;
+}
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog &win  = shell.GetStreamIn();
+    WindowLog &wout = shell.GetStreamOut();
+
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            win << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    StateMachineFAD<S> io_service("DATA_LOGGER", wout);
+    shell.SetReceiver(io_service);
+
+    boost::thread t(boost::bind(&StateMachineFAD<S>::Run, &io_service));
+
+    //io_service.SetReady();
+
+    shell.Run();                 // Run the shell
+    io_service.Stop();           // Signal Loop-thread to stop
+    // io_service.Close();       // Obsolete, done by the destructor
+    // wout << "join: " << t.timed_join(boost::posix_time::milliseconds(0)) << endl;
+
+    // Wait until the StateMachine has finished its thread
+    // before returning and destroying the dim objects which might
+    // still be in use.
+    t.join();
+
+    return 0;
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The console connects to all available Dim Servers and allows to "
+        "easily access all of their commands.\n"
+        "\n"
+        "Usage: test3 [-c type] [OPTIONS]\n"
+        "  or:  test3 [OPTIONS]\n"
+        "\n"
+        "Options:\n"
+        "The following describes the available commandline options. "
+        "For further details on how command line option are parsed "
+        "and in which order which configuration sources are accessed "
+        "please refer to the class reference of the Configuration class.";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    cout << "\n"
+        "The default is that the program is started without user interaction. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen."
+        << endl;
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+/*
+ The first line of the --version information is assumed to be in one
+ of the following formats:
+
+   <version>
+   <program> <version>
+   {GNU,Free} <program> <version>
+   <program> ({GNU,Free} <package>) <version>
+   <program> - {GNU,Free} <package> <version>
+
+ and separated from any copyright/author details by a blank line.
+
+ Handle multi-line bug reporting sections of the form:
+
+   Report <program> bugs to <addr>
+   GNU <package> home page: <url>
+   ...
+*/
+void PrintVersion(const char *name)
+{
+    cout <<
+        name << " - "PACKAGE_STRING"\n"
+        "\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n"
+        "Report bugs to <"PACKAGE_BUGREPORT">\n"
+        "Home page: "PACKAGE_URL"\n"
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << endl;
+}
+
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),  "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("console,c", var<int>(),     "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+        ;
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+    catch (std::exception &e)
+    {
+#if BOOST_VERSION > 104000
+        po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+        if (MO)
+            cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+        else
+#endif
+            cout << "Error: " << e.what() << endl;
+        cout << endl;
+
+        return -1;
+    }
+
+    if (conf.HasPrint())
+        return -1;
+
+    if (conf.HasVersion())
+    {
+        PrintVersion(argv[0]);
+        return -1;
+    }
+
+    if (conf.HasHelp())
+    {
+        PrintHelp();
+        return -1;
+    }
+
+    // To allow overwriting of DIM_DNS_NODE set 0 to 1
+    setenv("DIM_DNS_NODE", conf.Get<string>("dns").c_str(), 1);
+
+    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunDim<StateMachine>(conf);
+            else
+                return RunDim<StateMachineDim>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+    catch (std::exception& e)
+    {
+        std::cerr << "Exception: " << e.what() << "\n";
+    }
+
+    return 0;
+}
+
+/*
+class FADctrlDim : public StateMachineFAD<StateMachineDim>
+{
+public:
+FADctrlDim(const std::string &name="DATA_LOGGER", std::ostream &out=std::cout)
+: StateMachineFAD<StateMachineDim>(out, name) { }
+};
+
+ class FADctrlLocalShell : public StateMachineFAD<StateMachine>
+{
+public:
+    ostream &win;
+
+    FADctrlLocalShell(std::ostream &out, std::ostream &out2)
+        : StateMachineFAD<StateMachine>(out), win(out2) { }
+
+    FADctrlLocalShell(std::ostream &out=std::cout)
+        : StateMachineFAD<StateMachine>(out), win(out) { }
+
+};
+*/
Index: branches/FACT++_part_filenames/src/dimctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/dimctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/dimctrl.cc	(revision 18732)
@@ -0,0 +1,140 @@
+#include "StateMachineDimControl.h"
+
+//#include <sys/stat.h>
+
+#include "RemoteControl.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+namespace fs = boost::filesystem;
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    StateMachineDimControl::fIsServer = fname=="dimserver";
+    return Main::execute<T, StateMachineDimControl>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    po::options_description control("Options ("+fname+")");
+    control.add_options()
+        ("force-console", po_switch(),     "Forces console mode in server-mode.")
+        ("debug",         po_bool(false),  "Print the labels for debugging purpose")
+        ("user,u",        var<string>(""), "A user name - just for logging purposes (default is ${USER})")
+        ("JavaScript.*",  var<string>(),   "Additional arguments which are provided to JavaScripts started in a dimctrl server via the START command")
+        ;
+
+    if (fname!="dimserver")
+    {
+        control.add_options()
+            ("batch",   var<string>(), "Start a batch script with the given name at the given label (script.dim[:N]) on the dimctrl-server")
+            ("start",   var<string>(), "Start a java script with the given name on the dimctrl-server")
+            ("stop",    po_switch(),   "Stop a currently running script on the dimctrl-server")
+            ("interrupt", var<string>()->implicit_value(""), "Send an interrupt request (IRQ) to a running JavaScript.")
+            ("restart", var<string>(), "Send 'EXIT 126' to the given server")
+            ("msg",     var<string>(), "Send a message to the chat server.")
+            ;
+    }
+
+    conf.AddEnv("user", "USER");
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The dim control is a central master for the dim network.\n"
+        "\n"
+        "The program can be started as a dim server, so that it is visible "
+        "in the dim network to other clients. If started as a client (dimctrl), "
+        "it can only interact passively with the dim network. The usual case "
+        "should be to have one server running (dimserver) and control it from "
+        "a dimctrl started.\n"
+        "\n"
+        "Usage: dimctrl [-c type] [OPTIONS]\n"
+        "  or:  dimctrl [OPTIONS]\n"
+        "  or:  dimserver [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineDimControl>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    //chmod(argv[0], 04775);
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (conf.Get<bool>("force-console") && !conf.Has("console"))
+        throw runtime_error("--force-console must be used with --console/-c");
+
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    if (fname=="dimserver" && !conf.Get<bool>("force-console"))
+        conf.Remove("console");
+
+    if (!conf.Has("console"))
+        return RunShell<RemoteStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<RemoteShell>(conf);
+    else
+        return RunShell<RemoteConsole>(conf);
+}
Index: branches/FACT++_part_filenames/src/dns.c
===================================================================
--- branches/FACT++_part_filenames/src/dns.c	(revision 18732)
+++ branches/FACT++_part_filenames/src/dns.c	(revision 18732)
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+
+extern const char *GetLocalIp();
+
+int local_main(int argc, char **argv);
+
+int main(int argc, char **argv)
+{
+    setenv("DIM_HOST_NODE", GetLocalIp(), 1);
+
+    return local_main(argc, argv);
+}
+
+#define main local_main
+#include "dim/src/dns.c"
Index: branches/FACT++_part_filenames/src/drivectrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/drivectrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/drivectrl.cc	(revision 18732)
@@ -0,0 +1,3195 @@
+#include <boost/regex.hpp>
+#include <boost/algorithm/string.hpp>
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "HeadersDrive.h"
+
+#include "pal.h"
+#include "externals/nova.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+using namespace Drive;
+
+// ------------------------------------------------------------------------
+
+// The Nova classes are in degree. This is to be used in rad
+struct RaDec
+{
+    double ra;  // [rad]
+    double dec; // [rad]
+    RaDec() : ra(0), dec(0) { }
+    RaDec(double _ra, double _dec) : ra(_ra), dec(_dec) { }
+};
+
+struct RaDecHa : RaDec
+{
+    double ha;  // [rad]
+    RaDecHa() : ha(0) { }
+    RaDecHa(double _ra, double _dec, double _ha) : RaDec(_ra, _dec), ha(_ha) { }
+};
+
+struct Local
+{
+    double zd;
+    double az;
+
+    Local(double _zd=0, double _az=0) : zd(_zd), az(_az) { }
+};
+
+struct Velocity : Local
+{
+    Velocity(double _zd=0, double _az=0) : Local(_zd, _az) { }
+    Velocity operator/(double f) const { return Velocity(zd/f, az/f); }
+    Velocity operator*(double f) const { return Velocity(zd*f, az*f); }
+};
+
+struct Encoder : Local // [units: revolutions]
+{
+    Encoder(double _zd=0, double _az=0) : Local(_zd, _az) { }
+
+    Encoder &operator*=(double f) { zd*=f; az*=f; return *this; }
+    Encoder &operator-=(const Encoder &enc) { zd-=enc.zd; az-=enc.az; return *this; }
+    Encoder operator*(double f) const { return Encoder(zd*f, az*f); }
+    Velocity operator/(double t) const { return Velocity(zd/t, az/t); }
+    Encoder Abs() const { return Encoder(fabs(zd), fabs(az)); }
+};
+
+struct ZdAz : Local // [units: rad]
+{
+    ZdAz(double _zd=0, double _az=0) : Local(_zd, _az) { }
+    ZdAz operator*(const double &f) const { return ZdAz(zd*f, az*f); }
+};
+
+struct Acceleration : Local
+{
+    Acceleration(double _zd=0, double _az=0) : Local(_zd, _az) { }
+    bool operator>(const Acceleration &a) const
+    {
+        return zd>a.zd || az>a.az;
+    }
+};
+
+Encoder operator-(const Encoder &a, const Encoder &b)
+{
+    return Encoder(a.zd-b.zd, a.az-b.az);
+}
+Velocity operator-(const Encoder &a, const Velocity &b)
+{
+    return Velocity(a.zd-b.zd, a.az-b.az);
+}
+Velocity operator-(const Velocity &a, const Velocity &b)
+{
+    return Velocity(a.zd-b.zd, a.az-b.az);
+}
+Encoder operator/(const Encoder &a, const Encoder &b)
+{
+    return Encoder(a.zd/b.zd, a.az/b.az);
+}
+
+struct Weather
+{
+    float hum;
+    float temp;
+    float press;
+    Time time;
+};
+
+struct Source
+{
+    Source() : ra(0), dec(0), mag(0), offset(0)
+    {
+        angles[0] = -90;
+        angles[1] =  90;
+    }
+
+    string name;
+    double ra;    // [h]
+    double dec;   // [deg]
+    double mag;
+
+    double offset;
+    array<double, 2> angles;
+};
+
+enum Planets_t
+{
+    kENone     = -1,
+    kESun      =  0,
+    kEMercury  =  1,
+    kEVenus    =  2,
+    kEMoon     =  3, // earth moon barycentre
+    kEMars     =  4,
+    kEJupiter  =  5,
+    kESaturn   =  6,
+    kEUranus   =  7,
+    kENeptune  =  8,
+    kEPluto    =  9,
+};
+
+// ------------------------------------------------------------------------
+
+struct PointingSetup
+{
+    Source    source;        // Informations about source to track       [h/deg]
+    Planets_t planet;        // Id of the planet if tracking a planet
+    double    start;         // Starting time of wobble observation      [mjd]
+    double    orbit_period;  // Time for one revolution (0:off)          [day]
+    double    wobble_offset; // Distance of wobble position              [rad]
+    double    wobble_angle;  // Starting phi angle of wobble observation [rad]
+
+    PointingSetup(Planets_t p=kENone) : planet(p), start(Time::none), orbit_period(0) { }
+};
+
+struct PointingData
+{
+    // Pointing direction of the opticl axis of the telescope
+    RaDec     source;        // Informations about source to track      [rad/rad]
+    RaDec     pointing;      // Catalog coordinates (J2000, FK5)        [rad/rad] pointing position
+    RaDecHa   apparent;      // Apparent position on the sky            [rad/rad]
+    ZdAz      sky;           // Apparent position on the sky            [rad/rad]
+    Encoder   mount;         // Encoder position corresponding to 'sky' [deg/deg]
+    double    mjd;
+};
+
+class PointingModel
+{
+private:
+    double fIe;    // [rad] Index Error in Elevation
+    double fIa;    // [rad] Index Error in Azimuth
+    double fFlop;  // [rad] Vertical Sag
+    double fNpae;  // [rad] Az-El Nonperpendicularity
+    double fCa;    // [rad] Left-Right Collimation Error
+    double fAn;    // [rad] Azimuth Axis Misalignment (N-S, 1st order)
+    double fAw;    // [rad] Azimuth Axis Misalignment (E-W, 1st order)
+    double fAn2;   // [rad] Azimuth Axis Misalignment (N-S, 2nd order)
+    double fAw2;   // [rad] Azimuth Axis Misalignment (E-W, 2nd order)
+    double fTf;    // [rad] Tube fluxture (sin)
+    double fTx;    // [rad] Tube fluxture (tan)
+    double fNrx;   // [rad] Nasmyth rotator displacement, horizontal
+    double fNry;   // [rad] Nasmyth rotator displacement, vertical
+    double fCrx;   // [rad] Alt/Az Coude Displacement (N-S)
+    double fCry;   // [rad] Alt/Az Coude Displacement (E-W)
+    double fEces;  // [rad] Elevation Centering Error (sin)
+    double fAces;  // [rad] Azimuth Centering Error (sin)
+    double fEcec;  // [rad] Elevation Centering Error (cos)
+    double fAcec;  // [rad] Azimuth Centering Error (cos)
+
+public:
+
+    void Load(const string &name)
+    {
+        /*
+         ! MMT 1987 July 8
+         ! T   36   7.3622   41.448  -0.0481
+         !   IA        -37.5465    20.80602
+         !   IE        -13.9180     1.25217
+         !   NPAE       +7.0751    26.44763
+         !   CA         -6.9149    32.05358
+         !   AN         +0.5053     1.40956
+         !   AW         -2.2016     1.37480
+         ! END
+         */
+
+        ifstream fin(name);
+        if (!fin)
+            throw runtime_error("Cannot open file "+name+": "+strerror(errno));
+
+        map<string,double> coeff;
+
+        string buf;
+        while (getline(fin, buf))
+        {
+            buf = Tools::Trim(buf);
+
+            vector<string> vec;
+            boost::split(vec, buf, boost::is_any_of(" "), boost::token_compress_on);
+            if (vec.size()<2)
+                continue;
+
+            coeff[vec[0]] = atof(vec[1].c_str()) * M_PI/180;
+        }
+
+        fIe    = coeff["IE"];    // [rad] Index Error in Elevation
+        fIa    = coeff["IA"];    // [rad] Index Error in Azimuth
+        fFlop  = coeff["FLOP"];  // [rad] Vertical Sag
+        fNpae  = coeff["NPAE"];  // [rad] Az-El Nonperpendicularity
+        fCa    = coeff["CA"];    // [rad] Left-Right Collimation Error
+        fAn    = coeff["AN"];    // [rad] Azimuth Axis Misalignment (N-S, 1st order)
+        fAw    = coeff["AW"];    // [rad] Azimuth Axis Misalignment (E-W, 1st order)
+        fAn2   = coeff["AN2"];   // [rad] Azimuth Axis Misalignment (N-S, 2nd order)
+        fAw2   = coeff["AW2"];   // [rad] Azimuth Axis Misalignment (E-W, 2nd order)
+        fTf    = coeff["TF"];    // [rad] Tube fluxture (sin)
+        fTx    = coeff["TX"];    // [rad] Tube fluxture (tan)
+        fNrx   = coeff["NRX"];   // [rad] Nasmyth rotator displacement, horizontal
+        fNry   = coeff["NRY"];   // [rad] Nasmyth rotator displacement, vertical
+        fCrx   = coeff["CRX"];   // [rad] Alt/Az Coude Displacement (N-S)
+        fCry   = coeff["CRY"];   // [rad] Alt/Az Coude Displacement (E-W)
+        fEces  = coeff["ECES"];  // [rad] Elevation Centering Error (sin)
+        fAces  = coeff["ACES"];  // [rad] Azimuth Centering Error (sin)
+        fEcec  = coeff["ECEC"];  // [rad] Elevation Centering Error (cos)
+        fAcec  = coeff["ACEC"];  // [rad] Azimuth Centering Error (cos)
+    }
+
+    struct AltAz
+    {
+        double alt;
+        double az;
+
+        AltAz(double _alt, double _az) : alt(_alt), az(_az) { }
+        AltAz(const ZdAz &za) : alt(M_PI/2-za.zd), az(za.az) { }
+
+        AltAz &operator+=(const AltAz &aa) { alt += aa.alt; az+=aa.az; return *this; }
+        AltAz &operator-=(const AltAz &aa) { alt -= aa.alt; az-=aa.az; return *this; }
+    };
+
+    double Sign(double val, double alt) const
+    {
+        // Some pointing corrections are defined as Delta ZA, which
+        // is (P. Wallace) defined [0,90]deg while Alt is defined
+        // [0,180]deg
+        return (M_PI/2-alt < 0 ? -val : val);
+    }
+
+    Encoder SkyToMount(AltAz p)
+    {
+        const AltAz CRX(-fCrx*sin(p.az-p.alt),  fCrx*cos(p.az-p.alt)/cos(p.alt));
+        const AltAz CRY(-fCry*cos(p.az-p.alt), -fCry*sin(p.az-p.alt)/cos(p.alt));
+        p += CRX;
+        p += CRY;
+
+        const AltAz NRX(fNrx*sin(p.alt), -fNrx);
+        const AltAz NRY(fNry*cos(p.alt), -fNry*tan(p.alt));
+        p += NRX;
+        p += NRY;
+
+        const AltAz CES(-fEces*sin(p.alt), -fAces*sin(p.az));
+        const AltAz CEC(-fEcec*cos(p.alt), -fAcec*cos(p.az));
+        p += CES;
+        p += CEC;
+
+        const AltAz TX(Sign(fTx/tan(p.alt), p.alt), 0);
+        const AltAz TF(Sign(fTf*cos(p.alt), p.alt), 0);
+        //p += TX;
+        p += TF;
+
+        const AltAz CA(0, -fCa/cos(p.alt));
+        p += CA;
+
+        const AltAz NPAE(0, -fNpae*tan(p.alt));
+        p += NPAE;
+
+        const AltAz AW2( fAw2*sin(p.az*2), -fAw2*cos(p.az*2)*tan(p.alt));
+        const AltAz AN2(-fAn2*cos(p.az*2), -fAn2*sin(p.az*2)*tan(p.alt));
+        const AltAz AW1( fAw *sin(p.az),   -fAw *cos(p.az)  *tan(p.alt));
+        const AltAz AN1(-fAn *cos(p.az),   -fAn *sin(p.az)  *tan(p.alt));
+        p += AW2;
+        p += AN2;
+        p += AW1;
+        p += AN1;
+
+        const AltAz FLOP(Sign(fFlop, p.alt), 0);
+        p += FLOP;
+
+        const AltAz I(fIe, fIa);
+        p += I;
+
+        return Encoder(90 - p.alt*180/M_PI, p.az *180/M_PI);
+    }
+
+    ZdAz MountToSky(const Encoder &mnt) const
+    {
+        AltAz p(M_PI/2-mnt.zd*M_PI/180, mnt.az*M_PI/180);
+
+        const AltAz I(fIe, fIa);
+        p -= I;
+
+        const AltAz FLOP(Sign(fFlop, p.alt), 0);
+        p -= FLOP;
+
+        const AltAz AW1( fAw *sin(p.az),   -fAw *cos(p.az)  *tan(p.alt));
+        const AltAz AN1(-fAn *cos(p.az),   -fAn *sin(p.az)  *tan(p.alt));
+        const AltAz AW2( fAw2*sin(p.az*2), -fAw2*cos(p.az*2)*tan(p.alt));
+        const AltAz AN2(-fAn2*cos(p.az*2), -fAn2*sin(p.az*2)*tan(p.alt));
+        p -= AW1;
+        p -= AN1;
+        p -= AW2;
+        p -= AN2;
+
+        const AltAz NPAE(0, -fNpae*tan(p.alt));
+        p -= NPAE;
+
+        const AltAz CA(0, -fCa/cos(p.alt));
+        p -= CA;
+
+        const AltAz TF(Sign(fTf*cos(p.alt), p.alt), 0);
+        const AltAz TX(Sign(fTx/tan(p.alt), p.alt), 0);
+        p -= TF;
+        //p -= TX;
+
+        const AltAz CEC(-fEcec*cos(p.alt), -fAcec*cos(p.az));
+        const AltAz CES(-fEces*sin(p.alt), -fAces*sin(p.az));
+        p -= CEC;
+        p -= CES;
+
+        const AltAz NRY(fNry*cos(p.alt), -fNry*tan(p.alt));
+        const AltAz NRX(fNrx*sin(p.alt), -fNrx);
+        p -= NRY;
+        p -= NRX;
+
+        const AltAz CRY(-fCry*cos(p.az-p.alt), -fCry*sin(p.az-p.alt)/cos(p.alt));
+        const AltAz CRX(-fCrx*sin(p.az-p.alt),  fCrx*cos(p.az-p.alt)/cos(p.alt));
+        p -= CRY;
+        p -= CRX;
+
+        return ZdAz(M_PI/2-p.alt, p.az);
+    }
+
+    PointingData CalcPointingPos(const PointingSetup &setup, double _mjd, const Weather &weather, uint16_t timeout, bool tpoint=false)
+    {
+        PointingData out;
+        out.mjd = _mjd;
+
+        const double elong  = Nova::ORM().lng * M_PI/180;
+        const double lat    = Nova::ORM().lat * M_PI/180;
+        const double height = 2200;
+
+        const bool   valid  = weather.time+boost::posix_time::seconds(timeout) > Time();
+
+        const double temp   = valid ? weather.temp  :   10;
+        const double hum    = valid ? weather.hum   : 0.25;
+        const double press  = valid ? weather.press :  780;
+
+        const double dtt = palDtt(_mjd);  // 32.184 + 35
+
+        const double tdb = _mjd + dtt/3600/24;
+        const double dut = 0;
+
+        // prepare calculation: Mean Place to geocentric apperent
+        // (UTC would also do, except for the moon?)
+        double fAmprms[21];
+        palMappa(2000.0, tdb, fAmprms);        // Epoche, TDB
+
+        // prepare: Apperent to observed place
+        double fAoprms[14];
+        palAoppa(_mjd, dut,                    // mjd, Delta UT=UT1-UTC
+                 elong, lat, height,           // long, lat, height
+                 0, 0,                         // polar motion x, y-coordinate (radians)
+                 273.155+temp, press, hum,     // temp, pressure, humidity
+                 0.40, 0.0065,                 // wavelength, tropo lapse rate
+                 fAoprms);
+
+        out.source.ra  = setup.source.ra  * M_PI/ 12;
+        out.source.dec = setup.source.dec * M_PI/180;
+
+        if (setup.planet!=kENone)
+        {
+            // coordinates of planet: topocentric, equatorial, J2000
+            // One can use TT instead of TDB for all planets (except the moon?)
+            double ra, dec, diam;
+            palRdplan(tdb, setup.planet, elong, lat, &ra, &dec, &diam);
+
+            // ---- apparent to mean ----
+            palAmpqk(ra, dec, fAmprms, &out.source.ra, &out.source.dec);
+        }
+
+        if (setup.wobble_offset<=0 || tpoint)
+        {
+            out.pointing.dec = out.source.dec;
+            out.pointing.ra  = out.source.ra;
+        }
+        else
+        {
+            const double dphi =
+                setup.orbit_period==0 ? 0 : 2*M_PI*(_mjd-setup.start)/setup.orbit_period;
+
+            const double phi = setup.wobble_angle + dphi;
+
+            const double cosdir = cos(phi);
+            const double sindir = sin(phi);
+            const double cosoff = cos(setup.wobble_offset);
+            const double sinoff = sin(setup.wobble_offset);
+            const double cosdec = cos(out.source.dec);
+            const double sindec = sin(out.source.dec);
+
+            const double sintheta = sindec*cosoff + cosdec*sinoff*cosdir;
+
+            const double costheta = sintheta>1 ? 0 : sqrt(1 - sintheta*sintheta);
+
+            const double cosdeltara = (cosoff - sindec*sintheta)/(cosdec*costheta);
+            const double sindeltara = sindir*sinoff/costheta;
+
+            out.pointing.dec = asin(sintheta);
+            out.pointing.ra  = atan2(sindeltara, cosdeltara) + out.source.ra;
+        }
+
+        // ---- Mean to apparent ----
+        double r=0, d=0;
+        palMapqkz(out.pointing.ra, out.pointing.dec, fAmprms, &r, &d);
+
+        //
+        // Doesn't work - don't know why
+        //
+        //    slaMapqk (radec.Ra(), radec.Dec(), rdpm.Ra(), rdpm.Dec(),
+        //              0, 0, (double*)fAmprms, &r, &d);
+        //
+
+        // -- apparent to observed --
+        palAopqk(r, d, fAoprms,
+                 &out.sky.az,        // observed azimuth (radians: N=0,E=90) [-pi, pi]
+                 &out.sky.zd,        // observed zenith distance (radians)   [-pi/2, pi/2]
+                 &out.apparent.ha,   // observed hour angle (radians)
+                 &out.apparent.dec,  // observed declination (radians)
+                 &out.apparent.ra);  // observed right ascension (radians)
+
+        // ----- fix ambiguity -----
+        if (out.sky.zd<0)
+        {
+            out.sky.zd  = -out.sky.zd;
+            out.sky.az +=  out.sky.az<0 ? M_PI : -M_PI;
+        }
+
+        // Star culminating behind zenith and Az between ~90 and ~180deg
+        if (out.source.dec<lat && out.sky.az>0)
+            out.sky.az -= 2*M_PI;
+
+        out.mount = SkyToMount(out.sky);
+
+        return out;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+
+class ConnectionDrive : public Connection
+{
+    uint16_t fVerbosity;
+
+public:
+    virtual void UpdatePointing(const Time &, const array<double, 2> &)
+    {
+    }
+
+    virtual void UpdateTracking(const Time &, const array<double, 12> &)
+    {
+    }
+
+    virtual void UpdateStatus(const Time &, const array<uint8_t, 3> &)
+    {
+    }
+
+    virtual void UpdateTPoint(const Time &, const DimTPoint &, const string &)
+    {
+    }
+
+    virtual void UpdateSource(const Time &, const string &, bool)
+    {
+    }
+    virtual void UpdateSource(const Time &,const array<double, 5> &, const string& = "")
+    {
+    }
+
+private:
+    enum NodeId_t
+    {
+        kNodeAz = 1,
+        kNodeZd = 3
+    };
+
+    enum
+    {
+        kRxNodeguard = 0xe,
+        kRxPdo1      = 3,
+        kRxPdo2      = 5,
+        kRxPdo3      = 7,
+        kRxPdo4      = 9,
+        kRxSdo       = 0xb,
+        kRxSdo4      = 0x40|0x3,
+        kRxSdo2      = 0x40|0xb,
+        kRxSdo1      = 0x40|0xf,
+        kRxSdoOk     = 0x60,
+        kRxSdoErr    = 0x80,
+
+        kTxSdo       = 0x40,
+        kTxSdo4      = 0x20|0x3,
+        kTxSdo2      = 0x20|0xb,
+        kTxSdo1      = 0x20|0xf,
+    };
+
+    void SendCanFrame(uint16_t cobid,
+                      uint8_t m0=0, uint8_t m1=0, uint8_t m2=0, uint8_t m3=0,
+                      uint8_t m4=0, uint8_t m5=0, uint8_t m6=0, uint8_t m7=0)
+    {
+        const uint16_t desc = (cobid<<5) | 8;
+
+        vector<uint8_t> data(11);
+        data[0] = 10;
+        data[1] = desc>>8;
+        data[2] = desc&0xff;
+
+        const uint8_t msg[8] = { m0, m1, m2, m3, m4, m5, m6, m7 };
+        memcpy(data.data()+3, msg, 8);
+
+        PostMessage(data);
+    }
+
+    enum Index_t
+    {
+        kReqArmed      = 0x1000,
+        kReqPDO        = 0x1001,
+        kReqErrStat    = 0x1003,
+        kReqSoftVer    = 0x100a,
+        kReqKeepAlive  = 0x100b,
+        kReqVel        = 0x2002,
+        kReqVelRes     = 0x6002,
+        kReqVelMax     = 0x6003,
+        kReqPos        = 0x6004,
+        kReqPosRes     = 0x6501,
+
+        kSetArmed      = 0x1000,
+        kSetPointVel   = 0x2002,
+        kSetAcc        = 0x2003,
+        kSetRpmMode    = 0x3006,
+        kSetTrackVel   = 0x3007,
+        kSetLedVoltage = 0x4000,
+        kSetPosition   = 0x6004,
+    };
+
+    static uint32_t String(uint8_t b0=0, uint8_t b1=0, uint8_t b2=0, uint8_t b3=0)
+    {
+        return uint32_t(b0)<<24 | uint32_t(b1)<<16 | uint32_t(b2)<<8 | uint32_t(b3);
+    }
+
+    uint32_t fVelRes[2];
+    uint32_t fVelMax[2];
+    uint32_t fPosRes[2];
+
+    uint32_t fErrCode[2];
+
+    void HandleSdo(const uint8_t &node, const uint16_t &idx, const uint8_t &subidx,
+                   const uint32_t &val, const Time &tv)
+    {
+        if (fVerbosity>0)
+        {
+            ostringstream out;
+            out << hex;
+            out << "SDO[" << int(node) << "] " << idx << "/" << int(subidx) << ": " << val << dec;
+            Out() << out.str() << endl;
+        }
+
+        switch (idx)
+        {
+        case kReqArmed:
+            //fArmed = val==1;
+            return;
+
+        case kReqErrStat:
+            {
+                fErrCode[node/2] = (val>>8);
+                LogErrorCode(node);
+            }
+            return;
+
+        case kReqSoftVer:
+            //fSoftVersion = val;
+            return;
+
+        case kReqKeepAlive:
+            // Do not display, this is used for CheckConnection
+            fIsInitialized[node/2] = true;
+            return;
+
+        case kReqVel:
+            //fVel = val;
+            return;
+
+        case kReqPos:
+            switch (subidx)
+            {
+            case 0:
+                fPdoPos1[node/2] = val;
+                fPdoTime1[node/2] = tv;
+                fHasChangedPos1[node/2] = true;
+                return;
+            case 1:
+                fPdoPos2[node/2] = val;
+                fPdoTime2[node/2] = tv;
+                fHasChangedPos2[node/2] = true;
+                return;
+            }
+            break;
+
+        case kReqVelRes:
+            fVelRes[node/2] = val;
+            return;
+
+        case kReqVelMax:
+            fVelMax[node/2] = val;
+            return;
+
+        case kReqPosRes:
+            fPosRes[node/2] = val;
+            return;
+        }
+
+        ostringstream str;
+        str << "HandleSDO: Idx=0x"<< hex << idx << "/" << (int)subidx;
+        str << ", val=0x" << val;
+        Warn(str);
+    }
+
+    void HandleSdoOk(const uint8_t &node, const uint16_t &idx, const uint8_t &subidx,
+                     const Time &)
+    {
+        ostringstream out;
+        out << hex;
+        out << "SDO-OK[" << int(node) << "] " << idx << "/" << int(subidx) << dec << "   ";
+
+        switch (idx)
+        {
+        case kSetArmed:
+            out << "(Armed state set)";
+            break;
+            /*
+        case 0x1001:
+            Out() << inf2 << "- " << GetNodeName() << ": PDOs requested." << endl;
+            return;
+            */
+        case kSetPointVel:
+            out << "(Pointing velocity set)";
+            break;
+
+        case kSetAcc:
+            out << "(Acceleration set)";
+            break;
+
+        case kSetRpmMode:
+            out << "(RPM mode set)";
+            break;
+
+        case kSetLedVoltage:
+            out << "(LED Voltage set)";
+            Info(out);
+            return;
+              /*
+        case 0x3007:
+            //Out() << inf2 << "- Velocity set (" << GetNodeName() << ")" << endl;
+            return;
+
+        case 0x4000:
+            HandleNodeguard(tv);
+            return;
+
+        case 0x6000:
+            Out() << inf2 << "- " << GetNodeName() << ": Rotation direction set." << endl;
+            return;
+
+        case 0x6002:
+            Out() << inf2 << "- " << GetNodeName() << ": Velocity resolution set." << endl;
+            return;
+            */
+        case kSetPosition:
+            out << "(Absolute positioning started)";
+            break;
+              /*
+        case 0x6005:
+            Out() << inf2 << "- " << GetNodeName() << ": Relative positioning started." << endl;
+            fPosActive = kTRUE; // Make sure that the status is set correctly already before the first PDO
+            return;*/
+        }
+        /*
+        Out() << warn << setfill('0') << "WARNING - Nodedrv::HandleSDOOK: ";
+        Out() << "Node #" << dec << (int)fId << ": Sdo=" << hex << idx  << "/" << (int)subidx << " set.";
+        Out() << endl;
+        */
+
+        if (fVerbosity>1)
+            Out() << out.str() << endl;
+    }
+
+    void HandleSdoError(const uint8_t &node, const uint16_t &idx, const uint8_t &subidx,
+                        const Time &)
+    {
+        ostringstream out;
+        out << hex;
+        out << "SDO-ERR[" << int(node) << "] " << idx << "/" << int(subidx) << dec;
+        Out() << out.str() << endl;
+    }
+
+
+    int32_t fPdoPos1[2];
+    int32_t fPdoPos2[2];
+
+    Time fPdoTime1[2];
+public:
+    Time fPdoTime2[2];
+private:
+    bool fHasChangedPos1[2];
+    bool fHasChangedPos2[2];
+
+    void HandlePdo1(const uint8_t &node, const uint8_t *data, const Time &tv)
+    {
+        const uint32_t pos1 = (data[3]<<24) | (data[2]<<16) | (data[1]<<8) | data[0];
+        const uint32_t pos2 = (data[7]<<24) | (data[6]<<16) | (data[5]<<8) | data[4];
+
+        if (fVerbosity>2)
+            Out() << Time().GetAsStr("%M:%S.%f") << " PDO1[" << (int)node << "] " << 360.*int32_t(pos1)/fPosRes[node/2] << " " << 360.*int32_t(pos2)/fPosRes[node/2] << endl;
+
+        // Once every few milliseconds!
+
+        fPdoPos1[node/2]  = pos1;
+        fPdoTime1[node/2] = tv;
+        fHasChangedPos1[node/2] = true;
+
+        fPdoPos2[node/2]  = pos2;
+        fPdoTime2[node/2] = tv;
+        fHasChangedPos2[node/2] = true;
+    }
+
+    uint8_t  fStatusAxis[2];
+    uint8_t  fStatusSys;
+
+    enum {
+        kUpsAlarm     = 0x01,  // UPS Alarm      (FACT only)
+        kUpsBattery   = 0x02,  // UPS on battery (FACT only)
+        kUpsCharging  = 0x04,  // UPS charging   (FACT only)
+        kEmergencyOk  = 0x10,  // Emergency button released
+        kOvervoltOk   = 0x20,  // Overvoltage protection ok
+        kManualMode   = 0x40,  // Manual mode button pressed
+
+        kAxisBb       = 0x01,  // IndraDrive reports Bb (Regler betriebsbereit)
+        kAxisMoving   = 0x02,  // SPS reports
+        kAxisRpmMode  = 0x04,  // SPS reports
+        kAxisRf       = 0x20,  // IndraDrive reports Rf (Regler freigegeben)
+        kAxisHasPower = 0x80   // IndraDrive reports axis power on
+    };
+
+    //std::function<void(const Time &, const array<uint8_t, 3>&)> fUpdateStatus;
+
+    void HandlePdo3(const uint8_t &node, const uint8_t *data, const Time &tv)
+    {
+        /*
+         TX1M_STATUS.0  := 1;
+         TX1M_STATUS.1  := ((NOT X_in_Standstill OR NOT X_in_AntriebHalt) AND (NOT X_PC_VStart AND NOT X_in_Pos)) OR X_PC_AnnounceStartMovement;
+         TX1M_STATUS.2  := X_PC_VStart;
+         TX1M_STATUS.6  := NOT X_ist_freigegeben;
+
+         TX3M_STATUS.0  := X_ist_betriebsbereit;
+         TX3M_STATUS.1  := 1;
+         TX3M_STATUS.2  := Not_Aus_IO;
+         TX3M_STATUS.3  := UeberspannungsSchutz_OK;
+         TX3M_STATUS.4  := FB_soll_drehen_links OR FB_soll_drehen_rechts OR FB_soll_schwenk_auf OR FB_soll_schwenk_ab;
+         TX3M_STATUS.5  := X_ist_freigegeben;
+         TX3M_STATUS.6  := 1;
+         TX3M_STATUS.7  := LeistungEinAz;
+
+         TX3M_STATUS.8  := NOT UPS_ALARM;
+         TX3M_STATUS.9  := UPS_BattMode;
+         TX3M_STATUS.10 := UPS_Charging;
+         */
+
+        const uint8_t sys = ((data[0] & 0x1c)<<2) | (data[1]);
+        if (fStatusSys!=sys)
+        {
+            fStatusSys = sys;
+
+            const bool alarm  = sys&kUpsAlarm;    // 01     TX3M.8  100
+            const bool batt   = sys&kUpsBattery;  // 02     TX3M.9  200
+            const bool charge = sys&kUpsCharging; // 04     TX3M.10 400
+            const bool emcy   = sys&kEmergencyOk; // 10     TX3M.2  04
+            const bool vltg   = sys&kOvervoltOk;  // 20     TX3M.3  08
+            const bool mode   = sys&kManualMode;  // 40     TX3M.4  10
+
+            ostringstream out;
+            if (alarm)  out << " UPS-PowerLoss";
+            if (batt)   out << " UPS-OnBattery";
+            if (charge) out << " UPS-Charging";
+            if (emcy)   out << " EmcyOk";
+            if (vltg)   out << " OvervoltOk";
+            if (mode)   out << " ManualMove";
+
+            Info("New system status["+to_string(node)+"]:"+out.str());
+            if (fVerbosity>1)
+                Out() << "PDO3[" << (int)node << "] StatusSys=" << hex << (int)fStatusSys << dec << endl;
+        }
+
+        const uint8_t axis = (data[0]&0xa1) | (data[3]&0x06);
+        if (fStatusAxis[node/2]!=axis)
+        {
+            fStatusAxis[node/2] = axis;
+
+            const bool ready  = axis&kAxisBb;       // 01
+            const bool move   = axis&kAxisMoving;   // 02
+            const bool rpm    = axis&kAxisRpmMode;  // 04
+            const bool rf     = axis&kAxisRf;       // 20
+            const bool power  = axis&kAxisHasPower; // 80
+
+            ostringstream out;
+            if (ready)  out << " DKC-Ready";
+            if (move)   out << " Moving";
+            if (rpm)    out << " RpmMode";
+            if (rf)     out << " RF";
+            if (power)  out << " PowerOn";
+
+            Info("New axis status["+to_string(node)+"]:"+out.str());
+            if (fVerbosity>1)
+                Out() << "PDO3[" << (int)node << "] StatusAxis=" << hex << (int)fStatusAxis[node/2] << dec << endl;
+        }
+
+        array<uint8_t, 3> arr = {{ fStatusAxis[0], fStatusAxis[1], fStatusSys }};
+        UpdateStatus(tv, arr);
+    }
+
+    string ErrCodeToString(uint32_t code) const
+    {
+        switch (code)
+        {
+        case 0: return "offline";
+        case 0xa000: case 0xa0000:
+        case 0xa001: case 0xa0001:
+        case 0xa002: case 0xa0002:
+        case 0xa003: case 0xa0003: return "Communication phase "+to_string(code&0xf);
+        case 0xa010: case 0xa0010: return "Drive HALT";
+        case 0xa012: case 0xa0012: return "Control and power section ready for operation";
+        case 0xa013: case 0xa0013: return "Ready for power on";
+        case 0xa100: case 0xa0100: return "Drive in Torque mode";
+        case 0xa101: case 0xa0101: return "Drive in Velocity mode";
+        case 0xa102: case 0xa0102: return "Position control mode with encoder 1";
+        case 0xa103: case 0xa0103: return "Position control mode with encoder 2";
+        case 0xa104: case 0xa0104: return "Position control mode with encoder 1, lagless";
+        case 0xa105: case 0xa0105: return "Position control mode with encoder 2, lagless";
+        case 0xa106: case 0xa0106: return "Drive controlled interpolated positioning with encoder 1";
+        case 0xa107: case 0xa0107: return "Drive controlled interpolated positioning with encoder 2";
+        case 0xa108: case 0xa0108: return "Drive controlled interpolated positioning with encoder 1, lagless";
+        case 0xa109: case 0xa0109: return "Drive controlled interpolated positioning with encoder 2, lagless";
+        //case 0xa146: return "Drive controlled interpolated relative positioning with encoder 1";
+        //case 0xa147: return "Drive controlled interpolated relative positioning with encoder 2";
+        //case 0xa148: return "Drive controlled interpolated relative positioning lagless with encoder 1";
+        //case 0xa149: return "Drive controlled interpolated relative positioning lagless with encoder 2";
+        case 0xa150: case 0xa0150: return "Drive controlled positioning with encoder 1";
+        case 0xa151: case 0xa0151: return "Drive controlled positioning with encoder 1, lagless";
+        case 0xa152: case 0xa0152: return "Drive controlled positioning with encoder 2";
+        case 0xa153: case 0xa0153: return "Drive controlled positioning with encoder 2, lagless";
+        case 0xa208:               return "Jog mode positive";
+        case 0xa218:               return "Jog mode negative";
+        case 0xa400: case 0xa4000: return "Automatic drive check and adjustment";
+        case 0xa401: case 0xa4001: return "Drive decelerating to standstill";
+        case 0xa800: case 0xa0800: return "Unknown operation mode";
+        case 0xc217:               return "Motor encoder reading error";
+        case 0xc218:               return "Shaft encoder reading error";
+        case 0xc220:               return "Motor encoder initialization error";
+        case 0xc221:               return "Shaft encoder initialization error";
+        case 0xc300:               return "Command: set absolute measure";
+        case 0xc400: case 0xc0400: return "Switching to parameter mode";
+        case 0xc401: case 0xc0401: return "Drive active, switching mode not allowed";
+        case 0xc500: case 0xc0500: return "Error reset";
+        case 0xc600: case 0xc0600: return "Drive controlled homing procedure";
+        case 0xe225:               return "Motor overload";
+        case 0xe249: case 0xe2049: return "Positioning command velocity exceeds limit bipolar";
+        case 0xe250:               return "Drive overtemp warning";
+        case 0xe251:               return "Motor overtemp warning";
+        case 0xe252:               return "Bleeder overtemp warning";
+        case 0xe257:               return "Continous current limit active";
+                     case 0xe2819: return "Main power failure";
+        case 0xe259:               return "Command velocity limit active";
+                     case 0xe8260: return "Torque limit active";
+        case 0xe264:               return "Target position out of numerical range";
+        case 0xe829: case 0xe8029: return "Positive position limit exceeded";
+        case 0xe830: case 0xe8030: return "Negative position limit exceeded";
+        case 0xe831:               return "Position limit reached during jog";
+        case 0xe834:               return "Emergency-Stop";
+        case 0xe842:               return "Both end-switches activated";
+        case 0xe843:               return "Positive end-switch activated";
+        case 0xe844:               return "Negative end-switch activated";
+        case 0xf218: case 0xf2018: return "Amplifier overtemp shutdown";
+        case 0xf219: case 0xf2019: return "Motor overtemp shutdown";
+        case 0xf220:               return "Bleeder overload shutdown";
+        case 0xf221: case 0xf2021: return "Motor temperature surveillance defective";
+                     case 0xf2022: return "Unit temperature surveillance defective";
+        case 0xf224:               return "Maximum breaking time exceeded";
+                     case 0xf2025: return "Drive not ready for power on";
+        case 0xf228: case 0xf2028: return "Excessive control deviation";
+        case 0xf250:               return "Overflow of target position preset memory";
+        case 0xf257: case 0xf2057: return "Command position out of range";
+        case 0xf269:               return "Error during release of the motor holding brake";
+        case 0xf276:               return "Absolute encoder moved out of monitoring window";
+                     case 0xf2074: return "Absolute encoder 1 moved out of monitoring window";
+                     case 0xf2075: return "Absolute encoder 2 moved out of monitoring window";
+                     case 0xf2174: return "Lost reference of motor encoder";
+        case 0xf409: case 0xf4009: return "Bus error on Profibus interface";
+        case 0xf434:               return "Emergency-Stop";
+        case 0xf629:               return "Positive position limit exceeded";
+        case 0xf630:               return "Negative position limit exceeded";
+        case 0xf634:               return "Emergency-Stop";
+        case 0xf643:               return "Positive end-switch activated";
+        case 0xf644:               return "Negative end-switch activated";
+                     case 0xf8069: return "15V DC error";
+        case 0xf870: case 0xf8070: return "24V DC error";
+        case 0xf878: case 0xf8078: return "Velocity loop error";
+                     case 0xf8079: return "Velocity limit exceeded";
+                     case 0xf2026: return "Undervoltage in power section";
+        }
+        return "unknown";
+    }
+
+    void LogErrorCode(uint32_t node)
+    {
+        const uint8_t typ = fErrCode[node/2]>>16;
+
+        ostringstream out;
+        out << "IndraDrive ";
+        out << (node==1?"Az":"Zd");
+        out << " [" << hex << fErrCode[node/2];
+        out << "]: ";
+        out << ErrCodeToString(fErrCode[node/2]);
+        out << (typ==0xf || typ==0xe ? "!" : ".");
+
+        switch (typ)
+        {
+        case 0xf: Error(out);   break;
+        case 0xe: Warn(out);    break;
+        case 0xa: Info(out);    break;
+        case 0x0:
+        case 0xc:
+        case 0xd: Message(out); break;
+        default:  Fatal(out);   break;
+        }
+    }
+
+    void HandlePdo2(const uint8_t &node, const uint8_t *data, const Time &)
+    {
+        fErrCode[node/2] = (data[4]<<24) | (data[5]<<16) | (data[6]<<8) | data[7];
+
+        if (fVerbosity>0)
+            Out() << "PDO2[" << int(node) << "] err=" << hex << fErrCode[node/2] << endl;
+
+        LogErrorCode(node);
+   }
+
+    struct SDO
+    {
+        uint8_t  node;
+        uint8_t  req;
+        uint16_t idx;
+        uint8_t  subidx;
+        uint32_t val;
+
+        SDO(uint8_t n, uint8_t r, uint16_t i, uint8_t s, uint32_t v=0)
+            : node(n), req(r&0xf), idx(i), subidx(s), val(v) { }
+
+        bool operator==(const SDO &s) const
+        {
+            return node==s.node && idx==s.idx && subidx==s.subidx;
+        }
+    };
+
+    struct Timeout_t : SDO, ba::deadline_timer
+    {
+
+        Timeout_t(ba::io_service& ioservice,
+                  uint8_t n, uint8_t r, uint16_t i, uint8_t s, uint32_t v, uint16_t millisec) : SDO(n, r, i, s, v),
+            ba::deadline_timer(ioservice)
+        {
+            expires_from_now(boost::posix_time::milliseconds(millisec));
+        }
+        // get_io_service()
+    };
+
+    std::list<Timeout_t> fTimeouts;
+
+    vector<uint8_t> fData;
+
+    void HandleReceivedData(const boost::system::error_code& err, size_t bytes_received, int)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received!=11 || fData[0]!=10 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (cosy).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        Time now;
+
+        const uint16_t desc  = fData[1]<<8 | fData[2];
+        const uint16_t cobid = desc>>5;
+
+        const uint8_t *data  = fData.data()+3;
+
+        const uint16_t fcode = cobid >> 7;
+        const uint8_t  node  = cobid & 0x1f;
+
+        switch (fcode)
+        {
+        case kRxNodeguard:
+            Out() << "Received nodeguard" << endl;
+            //HandleNodeguard(node, now);
+            break;
+
+        case kRxSdo:
+            {
+                const uint8_t  cmd    = data[0];
+                const uint16_t idx    = data[1] | (data[2]<<8);
+                const uint8_t  subidx = data[3];
+                const uint32_t dat    = data[4] | (data[5]<<8) | (data[6]<<16) | (data[7]<<24);
+
+                const auto it = find(fTimeouts.begin(), fTimeouts.end(), SDO(node, cmd, idx, subidx));
+                if (it!=fTimeouts.end())
+                {
+                    // This will call the handler and in turn remove the object from the list
+                    it->cancel();
+                }
+                else
+                {
+                    ostringstream str;
+                    str << hex;
+                    str << "Unexpected SDO (";
+                    str << uint32_t(node) << ": ";
+                    str << ((cmd&0xf)==kTxSdo?"RX ":"TX ");
+                    str << idx << "/" << uint32_t(subidx) << ")";
+
+                    Warn(str);
+                }
+
+                switch (cmd)
+                {
+                case kRxSdo4:       // answer to 0x40 with 4 bytes of data
+                    HandleSdo(node, idx, subidx, dat, now);
+                    break;
+
+                case kRxSdo2:       // answer to 0x40 with 2 bytes of data
+                    HandleSdo(node, idx, subidx, dat&0xffff, now);
+                    break;
+
+                case kRxSdo1:       // answer to 0x40 with 1 byte  of data
+                    HandleSdo(node, idx, subidx, dat&0xff, now);
+                    break;
+
+                case kRxSdoOk:     // answer to a SDO_TX message
+                    HandleSdoOk(node, idx, subidx, now);
+                    break;
+
+                case kRxSdoErr:   // error message
+                    HandleSdoError(node, idx, subidx, now);
+                    break;
+
+                default:
+                    {
+                        ostringstream out;
+                        out << "Invalid SDO command code " << hex << cmd << " received.";
+                        Error(out);
+                        PostClose(false);
+                        return;
+                    }
+                }
+            }
+            break;
+
+        case kRxPdo1:
+            HandlePdo1(node, data, now);
+            break;
+
+        case kRxPdo2:
+            HandlePdo2(node, data, now);
+            break;
+
+        case kRxPdo3:
+            HandlePdo3(node, data, now);
+            break;
+
+        default:
+            {
+                ostringstream out;
+                out << "Invalid function code " << hex << fcode << " received.";
+                Error(out);
+                PostClose(false);
+                return;
+            }
+        }
+
+        StartReadReport();
+    }
+
+    void StartReadReport()
+    {
+        ba::async_read(*this, ba::buffer(fData),
+                       boost::bind(&ConnectionDrive::HandleReceivedData, this,
+                                   ba::placeholders::error, ba::placeholders::bytes_transferred, 0));
+
+        //AsyncWait(fInTimeout, 35000, &Connection::HandleReadTimeout); // 30s
+    }
+
+    bool fIsInitialized[2];
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        //Info("Connection to PLC established.");
+
+        fIsInitialized[0] = false;
+        fIsInitialized[1] = false;
+
+        SendSdo(kNodeZd, kSetArmed, 1);
+        SendSdo(kNodeAz, kSetArmed, 1);
+
+        RequestSdo(kNodeZd, kReqErrStat);
+        RequestSdo(kNodeAz, kReqErrStat);
+
+        SetRpmMode(false);
+
+        RequestSdo(kNodeZd, kReqPosRes);
+        RequestSdo(kNodeAz, kReqPosRes);
+
+        RequestSdo(kNodeZd, kReqVelRes);
+        RequestSdo(kNodeAz, kReqVelRes);
+
+        RequestSdo(kNodeZd, kReqVelMax);
+        RequestSdo(kNodeAz, kReqVelMax);
+
+        RequestSdo(kNodeZd, kReqPos, 0);
+        RequestSdo(kNodeAz, kReqPos, 0);
+        RequestSdo(kNodeZd, kReqPos, 1);
+        RequestSdo(kNodeAz, kReqPos, 1);
+
+        RequestSdo(kNodeZd, kReqKeepAlive);
+        RequestSdo(kNodeAz, kReqKeepAlive);
+
+        StartReadReport();
+    }
+
+    void HandleTimeoutImp(const std::list<Timeout_t>::iterator &ref, const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "SDO timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            //PostClose();
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (ref->expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        ostringstream str;
+        str << hex;
+        str << "SDO timeout (";
+        str << uint32_t(ref->node) << ": ";
+        str << (ref->req==kTxSdo?"RX ":"TX ");
+        str << ref->idx << "/" << uint32_t(ref->subidx) << " [" << ref->val << "] ";
+        str << to_simple_string(ref->expires_from_now());
+        str << ")";
+
+        Warn(str);
+
+        //PostClose();
+    }
+
+    void HandleTimeout(const std::list<Timeout_t>::iterator &ref, const bs::error_code &error)
+    {
+        HandleTimeoutImp(ref, error);
+        fTimeouts.erase(ref);
+    }
+
+    void SendSdoRequest(uint8_t node, uint8_t req,
+                        uint16_t idx, uint8_t subidx, uint32_t val=0)
+    {
+        if (fVerbosity>1)
+            Out() << "SDO-" << (req==kTxSdo?"REQ":"SET") << "[" << int(node) << "] " << idx << "/" << int(subidx) << " = " << val << endl;
+
+
+        SendCanFrame(0x600|(node&0x1f), req, idx&0xff, idx>>8, subidx,
+                     val&0xff, (val>>8)&0xff, (val>>16)&0xff, (val>>24)&0xff);
+
+        // - The boost::asio::basic_deadline_timer::expires_from_now()
+        //   function cancels any pending asynchronous waits, and returns
+        //   the number of asynchronous waits that were cancelled. If it
+        //   returns 0 then you were too late and the wait handler has
+        //   already been executed, or will soon be executed. If it
+        //   returns 1 then the wait handler was successfully cancelled.
+        // - If a wait handler is cancelled, the bs::error_code passed to
+        //   it contains the value bs::error::operation_aborted.
+
+        const uint32_t milliseconds = 3000;
+        fTimeouts.emplace_front(get_io_service(), node, req, idx, subidx, val, milliseconds);
+
+        const std::list<Timeout_t>::iterator &timeout = fTimeouts.begin();
+
+        timeout->async_wait(boost::bind(&ConnectionDrive::HandleTimeout, this, timeout, ba::placeholders::error));
+    }
+
+public:
+    ConnectionDrive(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fVerbosity(0), fData(11)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbosity(const uint16_t &v)
+    {
+        fVerbosity = v;
+    }
+
+    uint16_t GetVerbosity() const
+    {
+        return fVerbosity;
+    }
+
+    void RequestSdo(uint8_t node, uint16_t idx, uint8_t subidx=0)
+    {
+        SendSdoRequest(node, kTxSdo, idx, subidx);
+    }
+    void SendSdo(uint8_t node, uint16_t idx, uint8_t subidx, uint32_t val)
+    {
+        SendSdoRequest(node, kTxSdo4, idx, subidx, val);
+    }
+
+    void SendSdo(uint8_t node, uint16_t idx, uint32_t val)
+    {
+        SendSdo(node, idx, 0, val);
+    }
+
+    bool IsMoving() const
+    {
+        return (fStatusAxis[0]&kAxisMoving)  || (fStatusAxis[1]&kAxisMoving)
+            || (fStatusAxis[0]&kAxisRpmMode) || (fStatusAxis[1]&kAxisRpmMode);
+    }
+
+    bool IsInitialized() const
+    {
+        // All important information has been successfully requested from the
+        // SPS and the power control units are in RF (Regler freigegeben)
+        return fIsInitialized[0] && fIsInitialized[1];
+    }
+
+    bool HasError() const
+    {
+        const uint8_t typ0 = fErrCode[0]>>16;
+        const uint8_t typ1 = fErrCode[1]>>16;
+        return typ0==0xe || typ0==0xf || typ1==0xe || typ1==0xf;
+    }
+
+    bool IsOnline() const
+    {
+        return fErrCode[0]!=0 && fErrCode[1]!=0;
+    }
+
+    bool IsReady() const
+    {
+        return fStatusAxis[0]&kAxisRf && fStatusAxis[1]&kAxisRf;
+    }
+
+    bool IsBlocked() const
+    {
+        return (fStatusSys&kEmergencyOk)==0 || (fStatusSys&kManualMode);
+    }
+
+    Encoder GetSePos() const // [rev]
+    {
+        return Encoder(double(fPdoPos2[1])/fPosRes[1], double(fPdoPos2[0])/fPosRes[0]);
+    }
+
+    double GetSeTime() const // [rev]
+    {
+        // The maximum difference here should not be larger than 100ms.
+        // So th error we make on both axes should not exceed 50ms;
+        return (Time(fPdoTime2[0]).Mjd()+Time(fPdoTime2[1]).Mjd())/2;
+    }
+
+    Encoder GetVelUnit() const
+    {
+        return Encoder(fVelMax[1], fVelMax[0]);
+    }
+
+    void SetRpmMode(bool mode)
+    {
+        const uint32_t val = mode ? String('s','t','r','t') : String('s','t','o','p');
+        SendSdo(kNodeAz, kSetRpmMode, val);
+        SendSdo(kNodeZd, kSetRpmMode, val);
+    }
+
+    void SetAcceleration(const Acceleration &acc)
+    {
+        SendSdo(kNodeAz, kSetAcc, lrint(acc.az*1000000000+0.5));
+        SendSdo(kNodeZd, kSetAcc, lrint(acc.zd*1000000000+0.5));
+    }
+
+    void SetPointingVelocity(const Velocity &vel, double scale=1)
+    {
+        SendSdo(kNodeAz, kSetPointVel, lrint(vel.az*fVelMax[0]*scale));
+        SendSdo(kNodeZd, kSetPointVel, lrint(vel.zd*fVelMax[1]*scale));
+    }
+    void SetTrackingVelocity(const Velocity &vel)
+    {
+        SendSdo(kNodeAz, kSetTrackVel, lrint(vel.az*fVelRes[0]));
+        SendSdo(kNodeZd, kSetTrackVel, lrint(vel.zd*fVelRes[1]));
+    }
+
+    void StartAbsolutePositioning(const Encoder &enc, bool zd, bool az)
+    {
+        if (az) SendSdo(kNodeAz, kSetPosition, lrint(enc.az*fPosRes[0]));
+        if (zd) SendSdo(kNodeZd, kSetPosition, lrint(enc.zd*fPosRes[1]));
+
+        // Make sure that the status is set correctly already before the first PDO
+        if (az) fStatusAxis[0] |= 0x02;
+        if (zd) fStatusAxis[1] |= 0x02;
+
+        // FIXME: UpdateDim?
+    }
+
+    void SetLedVoltage(const uint32_t &v1, const uint32_t &v2)
+    {
+        SendSdo(kNodeAz, 0x4000, v1);
+        SendSdo(kNodeZd, 0x4000, v2);
+    }
+};
+
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimDrive : public ConnectionDrive
+{
+private:
+    DimDescribedService fDimPointing;
+    DimDescribedService fDimTracking;
+    DimDescribedService fDimSource;
+    DimDescribedService fDimTPoint;
+    DimDescribedService fDimStatus;
+
+    // Update dim from a different thread to ensure that these
+    // updates cannot block the main eventloop which eventually
+    // also checks the timeouts
+    Queue<pair<Time,array<double, 2>>>   fQueuePointing;
+    Queue<pair<Time,array<double, 12>>>  fQueueTracking;
+    Queue<tuple<Time,vector<char>,bool>> fQueueSource;
+    Queue<pair<Time,vector<char>>>       fQueueTPoint;
+    Queue<pair<Time,array<uint8_t, 3>>>  fQueueStatus;
+
+    bool SendPointing(const pair<Time,array<double,2>> &p)
+    {
+        fDimPointing.setData(p.second);
+        fDimPointing.Update(p.first);
+        return true;
+    }
+
+    bool SendTracking(const pair<Time,array<double, 12>> &p)
+    {
+        fDimTracking.setData(p.second);
+        fDimTracking.Update(p.first);
+        return true;
+    }
+
+    bool SendSource(const tuple<Time,vector<char>,bool> &t)
+    {
+        const Time         &time     = get<0>(t);
+        const vector<char> &data     = get<1>(t);
+        const bool         &tracking = get<2>(t);
+
+        fDimSource.setQuality(tracking);
+        fDimSource.setData(data);
+        fDimSource.Update(time);
+        return true;
+    }
+
+    bool SendStatus(const pair<Time,array<uint8_t, 3>> &p)
+    {
+        fDimStatus.setData(p.second);
+        fDimStatus.Update(p.first);
+        return true;
+    }
+
+    bool SendTPoint(const pair<Time,vector<char>> &p)
+    {
+        fDimTPoint.setData(p.second);
+        fDimTPoint.Update(p.first);
+        return true;
+    }
+
+public:
+    void UpdatePointing(const Time &t, const array<double, 2> &arr)
+    {
+        fQueuePointing.emplace(t, arr);
+    }
+
+    void UpdateTracking(const Time &t,const array<double, 12> &arr)
+    {
+        fQueueTracking.emplace(t, arr);
+    }
+
+    void UpdateStatus(const Time &t, const array<uint8_t, 3> &arr)
+    {
+        fQueueStatus.emplace(t, arr);
+    }
+
+    void UpdateTPoint(const Time &t, const DimTPoint &data,
+                      const string &name)
+    {
+        vector<char> dim(sizeof(data)+name.length()+1);
+        memcpy(dim.data(), &data, sizeof(data));
+        memcpy(dim.data()+sizeof(data), name.c_str(), name.length()+1);
+
+        fQueueTPoint.emplace(t, dim);
+    }
+
+    void UpdateSource(const Time &t, const string &name, bool tracking)
+    {
+        vector<char> dat(5*sizeof(double)+31, 0);
+        strncpy(dat.data()+5*sizeof(double), name.c_str(), 30);
+
+        fQueueSource.emplace(t, dat, tracking);
+    }
+
+    void UpdateSource(const Time &t, const array<double, 5> &arr, const string &name="")
+    {
+        vector<char> dat(5*sizeof(double)+31, 0);
+        memcpy(dat.data(), arr.data(), 5*sizeof(double));
+        strncpy(dat.data()+5*sizeof(double), name.c_str(), 30);
+
+        fQueueSource.emplace(t, dat, true);
+    }
+
+public:
+    ConnectionDimDrive(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionDrive(ioservice, imp),
+        fDimPointing("DRIVE_CONTROL/POINTING_POSITION", "D:1;D:1",
+                     "|Zd[deg]:Zenith distance (derived from encoder readout)"
+                     "|Az[deg]:Azimuth angle (derived from encoder readout)"),
+        fDimTracking("DRIVE_CONTROL/TRACKING_POSITION", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1",
+                     "|Ra[h]:Command right ascension pointing direction (J2000)"
+                     "|Dec[deg]:Command declination pointing direction (J2000)"
+                     "|Ha[h]:Hour angle pointing direction"
+                     "|SrcRa[h]:Right ascension source (J2000)"
+                     "|SrcDec[deg]:Declination source (J2000)"
+                     "|SrcHa[h]:Hour angle source"
+                     "|Zd[deg]:Nominal zenith distance"
+                     "|Az[deg]:Nominal azimuth angle"
+                     "|dZd[deg]:Control deviation Zd"
+                     "|dAz[deg]:Control deviation Az"
+                     "|dev[arcsec]:Absolute control deviation"
+                     "|avgdev[arcsec]:Average control deviation used to define OnTrack"),
+        fDimSource("DRIVE_CONTROL/SOURCE_POSITION", "D:1;D:1;D:1;D:1;D:1;C:31",
+                     "|Ra_src[h]:Source right ascension"
+                     "|Dec_src[deg]:Source declination"
+                     "|Offset[deg]:Wobble offset"
+                     "|Angle[deg]:Wobble angle"
+                     "|Period[min]:Time for one orbit"
+                     "|Name[string]:Source name if available"),
+        fDimTPoint("DRIVE_CONTROL/TPOINT_DATA", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;S:1;S:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;C",
+                   "|Ra[h]:Command right ascension"
+                   "|Dec[deg]:Command declination"
+                   "|Zd_nom[deg]:Nominal zenith distance"
+                   "|Az_nom[deg]:Nominal azimuth angle"
+                   "|Zd_cur[deg]:Current zenith distance (calculated from image)"
+                   "|Az_cur[deg]:Current azimuth angle (calculated from image)"
+                   "|Zd_enc[deg]:Feedback zenith axis (from encoder)"
+                   "|Az_enc[deg]:Feedback azimuth angle (from encoder)"
+                   "|N_leds[cnt]:Number of detected LEDs"
+                   "|N_rings[cnt]:Number of rings used to calculate the camera center"
+                   "|Xc[pix]:X position of center in CCD camera frame"
+                   "|Yc[pix]:Y position of center in CCD camera frame"
+                   "|Ic[au]:Average intensity (LED intensity weighted with their frequency of occurance in the calculation)"
+                   "|Xs[pix]:X position of start in CCD camera frame"
+                   "|Ys[pix]:Y position of star in CCD camera frame"
+                   "|Ms[mag]:Artifical magnitude of star (calculated from image)"
+                   "|Phi[deg]:Rotation angle of image derived from detected LEDs"
+                   "|Mc[mag]:Catalog magnitude of star"
+                   "|Dx[arcsec]:De-rotated dx"
+                   "|Dy[arcsec]:De-rotated dy"
+                   "|Name[string]:Name of star"),
+        fDimStatus("DRIVE_CONTROL/STATUS", "C:2;C:1", ""),
+        fQueuePointing(std::bind(&ConnectionDimDrive::SendPointing, this, placeholders::_1)),
+        fQueueTracking(std::bind(&ConnectionDimDrive::SendTracking, this, placeholders::_1)),
+        fQueueSource(  std::bind(&ConnectionDimDrive::SendSource,   this, placeholders::_1)),
+        fQueueTPoint(  std::bind(&ConnectionDimDrive::SendTPoint,   this, placeholders::_1)),
+        fQueueStatus(  std::bind(&ConnectionDimDrive::SendStatus,   this, placeholders::_1))
+    {
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineDrive : public StateMachineAsio<T>
+{
+private:
+    S fDrive;
+
+    ba::deadline_timer fTrackingLoop;
+
+    string fDatabase;
+
+    typedef map<string, Source> sources;
+    sources fSources;
+
+    Weather fWeather;
+    uint16_t fWeatherTimeout;
+
+    ZdAz fParkingPos;
+
+    PointingModel fPointingModel;
+    PointingSetup fPointingSetup;
+    Encoder       fMovementTarget;
+
+    Time fSunRise;
+
+    Encoder fPointingMin;
+    Encoder fPointingMax;
+
+    uint16_t fDeviationLimit;
+    uint16_t fDeviationCounter;
+    uint16_t fDeviationMax;
+
+    vector<double> fDevBuffer;
+    uint64_t       fDevCount;
+
+    uint64_t fTrackingCounter;
+
+
+    // --------------------- DIM Sending ------------------
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    // --------------------- DIM Receiving ------------------
+
+    int HandleWeatherData(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "HandleWeatherData", 7*4+2))
+        {
+            fWeather.time = Time(Time::none);
+            return T::GetCurrentState();
+        }
+
+        const float *ptr = evt.Ptr<float>(2);
+
+        fWeather.temp  = ptr[0];
+        fWeather.hum   = ptr[2];
+        fWeather.press = ptr[3];
+        fWeather.time  = evt.GetTime();
+
+        return T::GetCurrentState();
+    }
+
+    int HandleTPoint(const EventImp &evt)
+    {
+        // Skip disconnect events
+        if (evt.GetSize()==0)
+            return T::GetCurrentState();
+
+        // skip invalid events
+        if (!CheckEventSize(evt.GetSize(), "HandleTPoint", 11*8))
+            return T::GetCurrentState();
+
+        // skip event which are older than one minute
+        if (Time().UnixTime()-evt.GetTime().UnixTime()>60)
+            return T::GetCurrentState();
+
+        // Original code in slaTps2c:
+        //
+        // From the tangent plane coordinates of a star of known RA,Dec,
+        // determine the RA,Dec of the tangent point.
+
+        const double *ptr = evt.Ptr<double>();
+
+        // Tangent plane rectangular coordinates
+        const double dx = ptr[0] * M_PI/648000; // [arcsec -> rad]
+        const double dy = ptr[1] * M_PI/648000; // [arcsec -> rad]
+
+        const PointingData data = fPointingModel.CalcPointingPos(fPointingSetup, evt.GetTime().Mjd(), fWeather, fWeatherTimeout, true);
+
+        const double x2 =     dx*dx;
+        const double y2 = 1 + dy*dy;
+
+        const double sd  = cos(data.sky.zd);//sin(M_PI/2-sky.zd);
+        const double cd  = sin(data.sky.zd);//cos(M_PI/2-sky.zd);
+        const double sdf = sd*sqrt(x2+y2);
+        const double r2  = cd*cd*y2 - sd*sd*x2;
+
+        // Case of no solution ("at the pole") or
+        // two solutions ("over the pole solution")
+        if (r2<0 || fabs(sdf)>=1)
+        {
+            T::Warn("Could not determine pointing direction from TPoint.");
+            return T::GetCurrentState();
+        }
+
+        const double r   = sqrt(r2);
+        const double s   = sdf - dy * r;
+        const double c   = sdf * dy + r;
+        const double phi = atan2(dx, r);
+
+        // Spherical coordinates of tangent point
+        const double az = fmod(data.sky.az-phi + 2*M_PI, 2*M_PI);
+        const double zd = M_PI/2 - atan2(s, c);
+
+        const Encoder dev = fDrive.GetSePos()*360 - data.mount;
+
+        // --- Output TPoint ---
+
+        const string fname = "tpoints-"+to_string(evt.GetTime().NightAsInt())+".txt";
+        //time.GetAsStr("/%Y/%m/%d");
+
+        const bool exist = boost::filesystem::exists(fname);
+
+        ofstream fout(fname, ios::app);
+        if (!exist)
+        {
+            fout << "FACT Model  TPOINT data file" << endl;
+            fout << ": ALTAZ" << endl;
+            fout << "49 48 0 ";
+            fout << evt.GetTime() << endl;
+        }
+        fout << setprecision(7);
+        fout << fmod(az*180/M_PI+360, 360) << " ";
+        fout << 90-zd*180/M_PI << " ";
+        fout << fmod(data.mount.az+360, 360) << " ";
+        fout << 90-data.mount.zd << " ";
+        fout << dev.az  << " ";    // delta az
+        fout << -dev.zd << " ";    // delta el
+        fout << 90-data.sky.zd * 180/M_PI << " ";
+        fout << data.sky.az * 180/M_PI << " ";
+        fout << setprecision(10);
+        fout << data.mjd << " ";
+        fout << setprecision(7);
+        fout << ptr[6] << " ";  // center.mag
+        fout << ptr[9] << " ";  // star.mag
+        fout << ptr[4] << " ";  // center.x
+        fout << ptr[5] << " ";  // center.y
+        fout << ptr[7] << " ";  // star.x
+        fout << ptr[8] << " ";  // star.y
+        fout << ptr[2] << " ";  // num leds
+        fout << ptr[3] << " ";  // num rings
+        fout << ptr[0] << " ";  // dx (de-rotated)
+        fout << ptr[1] << " ";  // dy (de-rotated)
+        fout << ptr[10] << " "; // rotation angle
+        fout << fPointingSetup.source.mag << " ";
+        fout << fPointingSetup.source.name;
+        fout << endl;
+
+        DimTPoint dim;
+        dim.fRa         = data.pointing.ra  *  12/M_PI;
+        dim.fDec        = data.pointing.dec * 180/M_PI;
+        dim.fNominalZd  = data.sky.zd * 180/M_PI;
+        dim.fNominalAz  = data.sky.az * 180/M_PI;
+        dim.fPointingZd = zd * 180/M_PI;
+        dim.fPointingAz = az * 180/M_PI;
+        dim.fFeedbackZd = data.mount.zd;
+        dim.fFeedbackAz = data.mount.az;
+        dim.fNumLeds    = uint16_t(ptr[2]);
+        dim.fNumRings   = uint16_t(ptr[3]);
+        dim.fCenterX    = ptr[4];
+        dim.fCenterY    = ptr[5];
+        dim.fCenterMag  = ptr[6];
+        dim.fStarX      = ptr[7];
+        dim.fStarY      = ptr[8];
+        dim.fStarMag    = ptr[9];
+        dim.fRotation   = ptr[10];
+        dim.fDx         = ptr[0];
+        dim.fDy         = ptr[1];
+        dim.fRealMag    = fPointingSetup.source.mag;
+
+        fDrive.UpdateTPoint(evt.GetTime(), dim, fPointingSetup.source.name);
+
+        ostringstream txt;
+        txt << "TPoint recorded [" << zd*180/M_PI << "/" << az*180/M_PI << " | "
+            << data.sky.zd*180/M_PI << "/" << data.sky.az*180/M_PI << " | "
+            << data.mount.zd << "/" << data.mount.az << " | "
+            << dx*180/M_PI << "/" << dy*180/M_PI << "]";
+        T::Info(txt);
+
+        return T::GetCurrentState();
+    }
+
+    // -------------------------- Helpers -----------------------------------
+
+    double GetDevAbs(double nomzd, double meszd, double devaz)
+    {
+        nomzd *= M_PI/180;
+        meszd *= M_PI/180;
+        devaz *= M_PI/180;
+
+        const double x = sin(meszd) * sin(nomzd) * cos(devaz);
+        const double y = cos(meszd) * cos(nomzd);
+
+        return acos(x + y) * 180/M_PI;
+    }
+
+    double ReadAngle(istream &in)
+    {
+        char     sgn;
+        uint16_t d, m;
+        float    s;
+
+        in >> sgn >> d >> m >> s;
+
+        const double ret = ((60.0 * (60.0 * (double)d + (double)m) + s))/3600.;
+        return sgn=='-' ? -ret : ret;
+    }
+
+    bool CheckRange(ZdAz pos)
+    {
+        if (pos.zd<fPointingMin.zd)
+        {
+            T::Error("Zenith distance "+to_string(pos.zd)+" below limit "+to_string(fPointingMin.zd));
+            return false;
+        }
+
+        if (pos.zd>fPointingMax.zd)
+        {
+            T::Error("Zenith distance "+to_string(pos.zd)+" exceeds limit "+to_string(fPointingMax.zd));
+            return false;
+        }
+
+        if (pos.az<fPointingMin.az)
+        {
+            T::Error("Azimuth angle "+to_string(pos.az)+" below limit "+to_string(fPointingMin.az));
+            return false;
+        }
+
+        if (pos.az>fPointingMax.az)
+        {
+            T::Error("Azimuth angle "+to_string(pos.az)+" exceeds limit "+to_string(fPointingMax.az));
+            return false;
+        }
+
+        return true;
+    }
+
+    PointingData CalcPointingPos(double mjd)
+    {
+        return fPointingModel.CalcPointingPos(fPointingSetup, mjd, fWeather, fWeatherTimeout);
+    }
+
+    // ----------------------------- SDO Commands ------------------------------
+
+    int RequestSdo(const EventImp &evt)
+    {
+        // FIXME: STop telescope
+        if (!CheckEventSize(evt.GetSize(), "RequestSdo", 6))
+            return T::kSM_FatalError;
+
+        const uint16_t node   = evt.Get<uint16_t>();
+        const uint16_t index  = evt.Get<uint16_t>(2);
+        const uint16_t subidx = evt.Get<uint16_t>(4);
+
+        if (node!=1 && node !=3)
+        {
+            T::Error("Node id must be 1 (az) or 3 (zd).");
+            return T::GetCurrentState();
+        }
+
+        if (subidx>0xff)
+        {
+            T::Error("Subindex must not be larger than 255.");
+            return T::GetCurrentState();
+        }
+
+        fDrive.RequestSdo(node, index, subidx);
+
+        return T::GetCurrentState();
+    }
+
+    int SendSdo(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendSdo", 6+8))
+            return T::kSM_FatalError;
+
+        const uint16_t node   = evt.Get<uint16_t>();
+        const uint16_t index  = evt.Get<uint16_t>(2);
+        const uint16_t subidx = evt.Get<uint16_t>(4);
+        const uint64_t value  = evt.Get<uint64_t>(6);
+
+        if (node!=1 && node!=3)
+        {
+            T::Error("Node id must be 1 (az) or 3 (zd).");
+            return T::GetCurrentState();
+        }
+
+        if (subidx>0xff)
+        {
+            T::Error("Subindex must not be larger than 255.");
+            return T::GetCurrentState();
+        }
+
+        fDrive.SendSdo(node, index, subidx, value);
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------- Moving and tracking ---------------------
+
+    uint16_t fStep;
+    bool     fIsTracking;
+    Acceleration fAccPointing;
+    Acceleration fAccTracking;
+    Acceleration fAccMax;
+    double fMaxPointingResidual;
+    double fMaxParkingResidual;
+    double fPointingVelocity;
+
+    int InitMovement(const ZdAz &sky, bool tracking=false, const string &name="")
+    {
+        fMovementTarget = fPointingModel.SkyToMount(sky);
+
+        // Check whether bending is valid!
+        if (!CheckRange(sky*(180/M_PI)))
+            return StopMovement();
+
+        fStep = 0;
+        fIsTracking = tracking;
+
+        fDrive.SetRpmMode(false); // *NEW*  (Stop a previous tracking to avoid the pointing command to be ignored)
+        fDrive.SetAcceleration(fAccPointing);
+
+        if (!tracking)
+            fDrive.UpdateSource(Time(), name, false);
+        else
+        {
+            const array<double, 5> dim =
+            {{
+                fPointingSetup.source.ra,
+                fPointingSetup.source.dec,
+                fPointingSetup.wobble_offset * 180/M_PI,
+                fPointingSetup.wobble_angle  * 180/M_PI,
+                fPointingSetup.orbit_period  * 24*60
+            }};
+            fDrive.UpdateSource(fPointingSetup.start, dim, fPointingSetup.source.name);
+        }
+
+        return State::kMoving;
+    }
+
+    int MoveTo(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "MoveTo", 16))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        ostringstream out;
+        out << "Pointing telescope to Zd=" << dat[0] << "deg Az=" << dat[1] << "deg";
+        T::Message(out);
+
+        return InitMovement(ZdAz(dat[0]*M_PI/180, dat[1]*M_PI/180));
+    }
+
+    int InitTracking()
+    {
+        fPointingSetup.start = Time().Mjd();
+
+        const PointingData data = CalcPointingPos(fPointingSetup.start);
+
+        ostringstream out;
+        out << "Tracking position now at Zd=" << data.sky.zd*180/M_PI << "deg Az=" << data.sky.az*180/M_PI << "deg";
+        T::Info(out);
+
+        return InitMovement(data.sky, true);
+    }
+
+    int StartTracking(const Source &src, double offset, double angle, double period=0)
+    {
+        if (src.ra<0 || src.ra>=24)
+        {
+            ostringstream out;
+            out << "Right ascension out of range [0;24[: Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            if (!src.name.empty())
+                out << " [" << src.name << "]";
+            T::Error(out);
+            return State::kInvalidCoordinates;
+        }
+        if (src.dec<-90 || src.dec>90)
+        {
+            ostringstream out;
+            out << "Declination out of range [-90;90]: Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            if (!src.name.empty())
+                out << " [" << src.name << "]";
+            T::Error(out);
+            return State::kInvalidCoordinates;
+        }
+
+        ostringstream out;
+        out << "Tracking Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+        if (!src.name.empty())
+            out << " [" << src.name << "]";
+        T::Info(out);
+
+        fPointingSetup.planet        = kENone;
+        fPointingSetup.source        = src;
+        fPointingSetup.orbit_period  = period / 1440;      // [min->day]
+        fPointingSetup.wobble_angle  = angle  * M_PI/180;  // [deg->rad]
+        fPointingSetup.wobble_offset = offset * M_PI/180;  // [deg->rad]
+
+        return InitTracking();
+    }
+
+    int TrackCelest(const Planets_t &p)
+    {
+        switch (p)
+        {
+        case kEMoon:    fPointingSetup.source.name = "Moon";    break;
+        case kEVenus:   fPointingSetup.source.name = "Venus";   break;
+        case kEMars:    fPointingSetup.source.name = "Mars";    break;
+        case kEJupiter: fPointingSetup.source.name = "Jupiter"; break;
+        case kESaturn:  fPointingSetup.source.name = "Saturn";  break;
+        default:
+             T::Error("TrackCelest - Celestial object "+to_string(p)+" not yet supported.");
+             return T::GetCurrentState();
+        }
+
+        fPointingSetup.planet = p;
+        fPointingSetup.wobble_offset = 0;
+
+        fDrive.UpdateSource(Time(), fPointingSetup.source.name, true);
+
+        return InitTracking();
+    }
+
+    int Park()
+    {
+        ostringstream out;
+        out << "Parking telescope at Zd=" << fParkingPos.zd << "deg Az=" << fParkingPos.az << "deg";
+        T::Message(out);
+
+        const int rc = InitMovement(ZdAz(fParkingPos.zd*M_PI/180, fParkingPos.az*M_PI/180), false, "Park");
+        return rc==State::kMoving ? State::kParking : rc;
+    }
+
+    int Wobble(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Wobble", 32))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        Source src;
+        src.ra  = dat[0];
+        src.dec = dat[1];
+        return StartTracking(src, dat[2], dat[3]);
+    }
+
+    int Orbit(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Orbit", 40))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        Source src;
+        src.ra  = dat[0];
+        src.dec = dat[1];
+        return StartTracking(src, dat[2], dat[3], dat[4]);
+    }
+
+    const sources::const_iterator GetSourceFromDB(const char *ptr, const char *last)
+    {
+        if (find(ptr, last, '\0')==last)
+        {
+            T::Fatal("TrackWobble - The name transmitted by dim is not null-terminated.");
+            throw uint32_t(T::kSM_FatalError);
+        }
+
+        const string name(ptr);
+
+        const sources::const_iterator it = fSources.find(name);
+        if (it==fSources.end())
+        {
+            T::Error("Source '"+name+"' not found in list.");
+            throw uint32_t(T::GetCurrentState());
+        }
+
+        return it;
+    }
+
+    int TrackWobble(const EventImp &evt)
+    {
+        if (evt.GetSize()<2)
+        {
+            ostringstream msg;
+            msg << "TrackWobble - Received event has " << evt.GetSize() << " bytes, but expected at least 3.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        if (evt.GetSize()==2)
+        {
+            ostringstream msg;
+            msg << "TrackWobble - Source name missing.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const uint16_t wobble = evt.GetUShort();
+        if (wobble!=1 && wobble!=2)
+        {
+            ostringstream msg;
+            msg << "TrackWobble - Wobble id " << wobble << " undefined, only 1 and 2 allowed.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const char *ptr  = evt.Ptr<char>(2);
+        const char *last = ptr+evt.GetSize()-2;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const Source &src = it->second;
+            return StartTracking(src, src.offset, src.angles[wobble-1]);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+    }
+
+    int StartTrackWobble(const char *ptr, size_t size, const double &offset=0, const double &angle=0, double time=0)
+    {
+        const char *last = ptr+size;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const Source &src = it->second;
+            return StartTracking(src, offset<0?0.6/*src.offset*/:offset, angle, time);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+    }
+
+    int Track(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Track", 16))
+            return T::kSM_FatalError;
+
+        Source src;
+
+        src.name   = "";
+        src.ra     = evt.Get<double>(0);
+        src.dec    = evt.Get<double>(8);
+
+        return StartTracking(src, 0, 0);
+    }
+
+    int TrackSource(const EventImp &evt)
+    {
+        if (evt.GetSize()<16)
+        {
+            ostringstream msg;
+            msg << "TrackOn - Received event has " << evt.GetSize() << " bytes, but expected at least 17.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        if (evt.GetSize()==16)
+        {
+            ostringstream msg;
+            msg << "TrackOn - Source name missing.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const double offset = evt.Get<double>(0);
+        const double angle  = evt.Get<double>(8);
+
+        return StartTrackWobble(evt.Ptr<char>(16), evt.GetSize()-16, offset, angle);
+    }
+
+    int TrackOn(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+        {
+            ostringstream msg;
+            msg << "TrackOn - Source name missing.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        return StartTrackWobble(evt.Ptr<char>(), evt.GetSize());
+    }
+
+    int TrackOrbit(const EventImp &evt)
+    {
+        if (evt.GetSize()<16)
+        {
+            ostringstream msg;
+            msg << "TrackOrbit - Received event has " << evt.GetSize() << " bytes, but expected at least 17.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+        if (evt.GetSize()==16)
+        {
+            ostringstream msg;
+            msg << "TrackOrbit - Source name missing.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const double angle = evt.Get<double>(0);
+        const double time  = evt.Get<double>(8);
+
+        return StartTrackWobble(evt.Ptr<char>(16), evt.GetSize()-16, -1, angle, time);
+    }
+
+    int StopMovement()
+    {
+        fDrive.SetAcceleration(fAccMax);
+        fDrive.SetRpmMode(false);
+
+        fTrackingLoop.cancel();
+
+        fDrive.UpdateSource(Time(), "", false);
+
+        return State::kStopping;
+    }
+
+    int ResetError()
+    {
+        const int rc = CheckState();
+        return rc>0 ? rc : State::kInitialized;
+    }
+
+    // --------------------- Others ---------------------
+
+    int TPoint()
+    {
+        T::Info("TPoint initiated.");
+        Dim::SendCommandNB("TPOINT/EXECUTE");
+        return T::GetCurrentState();
+    }
+
+    int Screenshot(const EventImp &evt)
+    {
+        if (evt.GetSize()<2)
+        {
+            ostringstream msg;
+            msg << "Screenshot - Received event has " << evt.GetSize() << " bytes, but expected at least 2.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        if (evt.GetSize()==2)
+        {
+            ostringstream msg;
+            msg << "Screenshot - Filename missing.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        T::Info("Screenshot initiated.");
+        Dim::SendCommandNB("TPOINT/SCREENSHOT", evt.GetData(), evt.GetSize());
+        return T::GetCurrentState();
+    }
+
+    int SetLedBrightness(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetLedBrightness", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *led = evt.Ptr<uint32_t>();
+
+        fDrive.SetLedVoltage(led[0], led[1]);
+
+        return T::GetCurrentState();
+    }
+
+    int SetLedsOff()
+    {
+        fDrive.SetLedVoltage(0, 0);
+        return T::GetCurrentState();
+    }
+
+    // --------------------- Internal ---------------------
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 2))
+            return T::kSM_FatalError;
+
+        fDrive.SetVerbosity(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    int Print()
+    {
+        for (auto it=fSources.begin(); it!=fSources.end(); it++)
+        {
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            T::Out() << name << ",";
+            T::Out() << src.ra        << "," << src.dec       << "," << src.offset << ",";
+            T::Out() << src.angles[0] << "," << src.angles[1] << endl;
+        }
+        return T::GetCurrentState();
+    }
+
+    int Unlock()
+    {
+        const int rc = CheckState();
+        return rc<0 ? State::kInitialized : rc;
+    }
+
+    int ReloadSources()
+    {
+        try
+        {
+            ReadDatabase();
+        }
+        catch (const exception &e)
+        {
+            T::Error("Reading sources from databse failed: "+string(e.what()));
+        }
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fDrive.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fDrive.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fDrive.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fDrive.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    // ========================= Tracking code =============================
+
+    int UpdateTrackingPosition()
+    {
+        // First calculate deviation between
+        // command position and nominal position
+        //fPointing.mount = sepos; // [deg] ref pos for alignment
+        const PointingData data = CalcPointingPos(fDrive.GetSeTime());
+
+        // Get current position and calculate deviation
+        const Encoder sepos = fDrive.GetSePos()*360; // [deg]
+        const Encoder dev   = sepos - data.mount;
+
+        // Calculate absolut deviation on the sky
+        const double absdev = GetDevAbs(data.mount.zd, sepos.zd, dev.az)*3600;
+
+        // Smoothing
+        fDevBuffer[fDevCount++%5] = absdev;
+
+        // Calculate average
+        const uint8_t cnt    = fDevCount<5 ? fDevCount : 5;
+        const double  avgdev = accumulate(fDevBuffer.begin(), fDevBuffer.begin()+cnt, 0.)/cnt;
+
+        // Count the consecutive number of avgdev below fDeviationLimit
+        if (avgdev<fDeviationLimit)
+            fTrackingCounter++;
+        else
+            fTrackingCounter = 0;
+
+        const double ha = fmod(fDrive.GetSeTime(),1)*24 - Nova::ORM().lng/15;
+
+        array<double, 12> dim;
+        dim[0]  = data.pointing.ra      *  12/M_PI; // Ra     [h]   optical axis
+        dim[1]  = data.pointing.dec     * 180/M_PI; // Dec    [deg] optical axis
+        dim[2]  = ha - data.pointing.ra;            // Ha     [h]   optical axis
+        dim[3]  = data.source.ra        *  12/M_PI; // SrcRa  [h]   source position
+        dim[4]  = data.source.dec       * 180/M_PI; // SrcDec [deg] source position
+        dim[5]  = ha - data.source.ra;              // SrcHa  [h]   source position
+        dim[6]  = data.sky.zd           * 180/M_PI; // Zd     [deg] optical axis
+        dim[7]  = data.sky.az           * 180/M_PI; // Az     [deg] optical axis
+        dim[8]  = dev.zd;                           // dZd    [deg] control deviation
+        dim[9]  = dev.az;                           // dAz    [deg] control deviation
+        dim[10] = absdev;                           // dev [arcsec] absolute control deviation
+        dim[11] = avgdev;                           // dev [arcsec] average control deviation
+
+        fDrive.UpdateTracking(fDrive.GetSeTime(), dim);
+
+        if (fDrive.GetVerbosity())
+            T::Out() << Time().GetAsStr("    %H:%M:%S.%f") << " - Deviation   [deg]    " << absdev << "\"|" << avgdev << "\"|" << fDevCount<< "  dZd=" << dev.zd*3600 << "\" dAz=" << dev.az*3600 << "\"" << endl;
+
+        // Maximum deviation execeeded -> fall back to Tracking state
+        if (T::GetCurrentState()==State::kOnTrack && avgdev>fDeviationMax)
+            return State::kTracking;
+
+        // Condition for OnTrack state achieved -> enhance to OnTrack state
+        if (T::GetCurrentState()==State::kTracking && fTrackingCounter>=fDeviationCounter)
+            return State::kOnTrack;
+
+        // No state change
+        return T::GetCurrentState();
+    }
+
+    void UpdatePointingPosition()
+    {
+        const Encoder sepos = fDrive.GetSePos()*360; // [deg] ref pos for alignment
+
+        const ZdAz pos = fPointingModel.MountToSky(sepos);
+
+        array<double, 2> data;
+        data[0] = pos.zd*180/M_PI;   // Zd  [deg]
+        data[1] = pos.az*180/M_PI;   // Az  [deg]
+        fDrive.UpdatePointing(fDrive.GetSeTime(), data);
+
+        if (fDrive.GetVerbosity())
+        T::Out() << Time().GetAsStr("    %H:%M:%S.%f") << " - Position    [deg]    " << pos.zd*180/M_PI << " " << pos.az*180/M_PI << endl;
+    }
+
+    void TrackingLoop(const boost::system::error_code &error=boost::system::error_code())
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "TrackingLoop: " << error.message() << " (" << error << ")";// << endl;
+            T::Error(str);
+            return;
+        }
+
+        if (T::GetCurrentState()!=State::kTracking &&
+            T::GetCurrentState()!=State::kOnTrack)
+            return;
+
+        //
+        // Update speed as often as possible.
+        // make sure, that dt is around 10 times larger than the
+        // update time
+        //
+        // The loop should not be executed faster than the ramp of
+        // a change in the velocity can be followed.
+        //
+        fTrackingLoop.expires_from_now(boost::posix_time::milliseconds(250));
+
+        const double mjd = Time().Mjd();
+
+        // I assume that it takes about 50ms for the value to be
+        // transmitted and the drive needs time to follow as well (maybe
+        // more than 50ms), therefore the calculated speec is calculated
+        // for a moment 50ms in the future
+        const PointingData data  = CalcPointingPos(fDrive.GetSeTime());
+        const PointingData data0 = CalcPointingPos(mjd-0.45/24/3600);
+        const PointingData data1 = CalcPointingPos(mjd+0.55/24/3600);
+
+        const Encoder dest  = data.mount *(1./360);  // [rev]
+        const Encoder dest0 = data0.mount*(1./360);  // [rev]
+        const Encoder dest1 = data1.mount*(1./360);  // [rev]
+ 
+        if (!CheckRange(data1.sky))
+        {
+            StopMovement();
+            T::HandleNewState(State::kAllowedRangeExceeded, 0, "by TrackingLoop");
+            return;
+        }
+
+        // Current position
+        const Encoder sepos = fDrive.GetSePos(); // [rev]
+
+        // Now calculate the current velocity
+        const Encoder dist = dest1 - dest0;      // [rev] Distance between t-1s and t+1s
+        const Velocity vel = dist/(1./60);       // [rev/min] Actual velocity of the pointing position
+
+        const Encoder dev  = sepos - dest;       // [rev] Current control deviation
+        const Velocity vt  = vel - dev/(1./60);  // [rev/min] Correct velocity by recent control deviation
+                                                 // correct control deviation with 5s
+        if (fDrive.GetVerbosity()>1)
+        {
+             T::Out() << "Ideal position [deg]  " << dest.zd *360    << " " << dest.az *360    << endl;
+             T::Out() << "Encoder pos.   [deg]  " << sepos.zd*360    << " " << sepos.az*360    << endl;
+             T::Out() << "Deviation   [arcmin]  " << dev.zd  *360*60 << " " << dev.az  *360*60 << endl;
+             T::Out() << "Distance 1s [arcmin]  " << dist.zd *360*60 << " " << dist.az *360*60 << endl;
+             T::Out() << "Velocity 1s    [rpm]  " << vt.zd           << " " << vt.az           << endl;
+             T::Out() << "Delta T (enc)   [ms]  " << fabs(mjd-fDrive.fPdoTime2[0].Mjd())*24*3600*1000 << endl;
+             T::Out() << "Delta T (now)   [ms]  " << (Time().Mjd()-mjd)*24*3600*1000 << endl;
+        }
+
+        // Tracking loop every 250ms
+        // Vorsteuerung 2s
+        // Delta T (enc) 5ms, every 5th, 25ms
+        // Delta T (now) equal dist 5ms-35 plus equal dist 25-55 (0.2%-2% of 2s)
+
+        //
+        // FIXME: check if the drive is fast enough to follow the star
+        //
+        // Velocity units (would be 100 for %)
+
+        fDrive.SetTrackingVelocity(vt);
+
+        fTrackingLoop.async_wait(boost::bind(&StateMachineDrive::TrackingLoop,
+                                             this, ba::placeholders::error));
+    }
+
+    // =====================================================================
+
+    int CheckState()
+    {
+        if (!fDrive.IsConnected())
+            return State::kDisconnected;
+
+        if (!fDrive.IsOnline())
+            return State::kUnavailable;
+
+        // FIXME: This can prevent parking in case e.g.
+        // of e8029 Position limit exceeded
+        if (fDrive.HasError())
+        {
+            if (T::GetCurrentState()==State::kOnTrack  ||
+                T::GetCurrentState()==State::kTracking ||
+                T::GetCurrentState()==State::kMoving   ||
+                T::GetCurrentState()==State::kParking)
+                return StopMovement();
+
+            if (T::GetCurrentState()==State::kStopping && fDrive.IsMoving())
+                return State::kStopping;
+
+            return StateMachineImp::kSM_Error;
+        }
+
+        // This can happen if one of the drives is not in RF.
+        // Usually this only happens when the drive is not yet in RF
+        // or an error was just cleared. Usually there is no way that
+        // a drive goes below the RF state during operation without
+        // a warning or error message.
+        if (fDrive.IsOnline() && fDrive.IsBlocked())
+            return State::kBlocked;
+
+        if (fDrive.IsOnline() && !fDrive.IsReady())
+            return State::kAvailable;
+
+        // This is the case as soon as the init commands were send
+        // after a connection to the SPS was established
+        if (fDrive.IsOnline() && fDrive.IsReady() && !fDrive.IsInitialized())
+            return State::kArmed;
+
+        return -1;
+    }
+
+    int Execute()
+    {
+        const Time now;
+        if (now>fSunRise && T::GetCurrentState()!=State::kParking)
+        {
+            fSunRise = now.GetNextSunRise();
+
+            ostringstream msg;
+            msg << "Next sun-rise will be at " << fSunRise;
+            T::Info(msg);
+
+            if (T::GetCurrentState()>State::kArmed && T::GetCurrentState()!=StateMachineImp::kError)
+                return Park();
+        }
+
+        if (T::GetCurrentState()==State::kLocked)
+            return State::kLocked;
+
+        // FIXME: Send STOP if IsPositioning or RpmActive but no
+        // Moving or Tracking state
+
+        const int rc = CheckState();
+        if (rc>0)
+            return rc;
+
+        // Once every second
+        static time_t lastTime = 0;
+        const time_t tm = time(NULL);
+        if (lastTime!=tm && fDrive.IsInitialized())
+        {
+            lastTime=tm;
+
+            UpdatePointingPosition();
+
+            if (T::GetCurrentState()==State::kTracking || T::GetCurrentState()==State::kOnTrack)
+                return UpdateTrackingPosition();
+        }
+
+        if (T::GetCurrentState()==State::kStopping && !fDrive.IsMoving())
+            return State::kArmed;
+
+        if ((T::GetCurrentState()==State::kMoving ||
+             T::GetCurrentState()==State::kParking) && !fDrive.IsMoving())
+        {
+            if (fIsTracking && fStep==1)
+            {
+                // Init tracking
+                fDrive.SetAcceleration(fAccTracking);
+                fDrive.SetRpmMode(true);
+
+                fDevCount = 0;
+                fTrackingCounter = 0;
+
+                fTrackingLoop.expires_from_now(boost::posix_time::milliseconds(1));
+                fTrackingLoop.async_wait(boost::bind(&StateMachineDrive::TrackingLoop,
+                                                     this, ba::placeholders::error));
+
+                fPointingSetup.start = Time().Mjd();
+
+                const PointingData data = CalcPointingPos(fPointingSetup.start);
+
+                ostringstream out;
+                out << "Start tracking at Ra=" << data.pointing.ra*12/M_PI << "h Dec=" << data.pointing.dec*180/M_PI << "deg";
+                T::Info(out);
+
+                return State::kTracking;
+            }
+
+            // Get feedback 2
+            const Encoder dest  = fMovementTarget*(1./360); // [rev]
+            const Encoder sepos = fDrive.GetSePos();        // [rev]
+
+            // Calculate residual to move deviation
+            const Encoder dist  = dest - sepos;             // [rev]
+
+            // Check which axis should still be moved
+            Encoder cd = dist;              // [rev]
+            cd *= T::GetCurrentState()==State::kParking ? 1./fMaxParkingResidual : 1./fMaxPointingResidual;  // Scale to units of the maximum residual
+            cd = cd.Abs();
+
+            // Check if there is a control deviation on the axis
+            const bool cdzd = cd.zd>1;
+            const bool cdaz = cd.az>1;
+
+            if (!fIsTracking)
+            {
+                // check if we reached the correct position already
+                if (!cdzd && !cdaz)
+                {
+                    T::Info("Target position reached in "+to_string(fStep)+" steps.");
+                    return T::GetCurrentState()==State::kParking ? State::kLocked : State::kArmed;
+                }
+
+                if (fStep==10)
+                {
+                    T::Error("Target position not reached in "+to_string(fStep)+" steps.");
+                    return State::kPositioningFailed;
+                }
+            }
+
+            const Encoder t = dist.Abs()/fDrive.GetVelUnit();
+
+            const Velocity vel =
+                t.zd > t.az ?
+                Velocity(1, t.zd==0?0:t.az/t.zd) :
+                Velocity(t.az==0?0:t.zd/t.az, 1);
+
+            if (fDrive.GetVerbosity())
+            {
+                T::Out() << "Moving step         " << fStep << endl;
+                T::Out() << "Encoder      [deg]  " << sepos.zd*360 << " " << sepos.az*360 << endl;
+                T::Out() << "Destination  [deg]  " << dest.zd *360 << " " << dest.az *360 << endl;
+                T::Out() << "Residual     [deg]  " << dist.zd *360 << " " << dist.az *360 << endl;
+                T::Out() << "Residual/max  [1]   " << cd.zd        << " " << cd.az        << endl;
+                T::Out() << "Rel. time     [1]   " << t.zd         << " " << t.az         << endl;
+                T::Out() << "Rel. velocity [1]   " << vel.zd       << " " << vel.az       << endl;
+            }
+
+            fDrive.SetPointingVelocity(vel, fPointingVelocity);
+            fDrive.StartAbsolutePositioning(dest, cdzd, cdaz);
+
+            ostringstream out;
+            if (fStep==0)
+                out << "Moving to encoder Zd=" << dest.zd*360 << "deg Az=" << dest.az*360 << "deg";
+            else
+                out << "Moving residual of dZd=" << dist.zd*360*60 << "' dAz=" << dist.az*360*60 << "'";
+            T::Info(out);
+
+            fStep++;
+        }
+
+        return T::GetCurrentState()>=State::kInitialized ?
+            T::GetCurrentState() : State::kInitialized;
+    }
+
+public:
+    StateMachineDrive(ostream &out=cout) :
+        StateMachineAsio<T>(out, "DRIVE_CONTROL"), fDrive(*this, *this),
+        fTrackingLoop(*this), fSunRise(Time().GetNextSunRise()), fDevBuffer(5)
+    {
+
+        T::Subscribe("MAGIC_WEATHER/DATA")
+            (bind(&StateMachineDrive::HandleWeatherData, this, placeholders::_1));
+
+        T::Subscribe("TPOINT/DATA")
+            (bind(&StateMachineDrive::HandleTPoint, this, placeholders::_1));
+
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                        "No connection to SPS");
+        T::AddStateName(State::kConnected, "Connected",
+                        "Connection to SPS, no information received yet");
+
+        T::AddStateName(State::kLocked, "Locked",
+                        "Drive system is locked (will not accept commands)");
+
+        T::AddStateName(State::kUnavailable, "Unavailable",
+                        "Connected to SPS, no connection to at least one IndraDrives");
+        T::AddStateName(State::kAvailable, "Available",
+                        "Connected to SPS and to IndraDrives, but at least one drive not in RF");
+        T::AddStateName(State::kBlocked, "Blocked",
+                        "Drive system is blocked by manual operation or a pressed emergeny button");
+        T::AddStateName(State::kArmed, "Armed",
+                        "Connected to SPS and IndraDrives in RF, but not yet initialized");
+        T::AddStateName(State::kInitialized, "Initialized",
+                        "Connected to SPS and IndraDrives in RF and initialized");
+
+        T::AddStateName(State::kStopping, "Stopping",
+                        "Stop command sent, waiting for telescope to be still");
+        T::AddStateName(State::kParking, "Parking",
+                        "Telescope in parking operation, waiting for telescope to be still");
+        T::AddStateName(State::kMoving, "Moving",
+                        "Telescope moving");
+        T::AddStateName(State::kTracking, "Tracking",
+                        "Telescope in tracking mode");
+        T::AddStateName(State::kOnTrack, "OnTrack",
+                        "Telescope tracking stable");
+
+        T::AddStateName(State::kPositioningFailed, "PositioningFailed",
+                        "Target position was not reached within ten steps");
+        T::AddStateName(State::kAllowedRangeExceeded, "OutOfRange",
+                        "Telecope went out of range during tracking");
+        T::AddStateName(State::kInvalidCoordinates, "InvalidCoordinates",
+                        "Tracking coordinates out of range");
+
+
+        T::AddEvent("REQUEST_SDO", "S:3", State::kArmed)
+            (bind(&StateMachineDrive::RequestSdo, this, placeholders::_1))
+            ("Request an SDO from the drive"
+             "|node[uint32]:Node identifier (1:az, 3:zd)"
+             "|index[uint32]:SDO index"
+             "|subindex[uint32]:SDO subindex");
+
+        T::AddEvent("SET_SDO", "S:3;X:1", State::kArmed)
+            (bind(&StateMachineDrive::SendSdo, this, placeholders::_1))
+            ("Request an SDO from the drive"
+             "|node[uint32]:Node identifier (1:az, 3:zd)"
+             "|index[uint32]:SDO index"
+             "|subindex[uint32]:SDO subindex"
+             "|value[uint64]:Value");
+
+        // Drive Commands
+        T::AddEvent("MOVE_TO", "D:2", State::kInitialized)  // ->ZDAZ
+            (bind(&StateMachineDrive::MoveTo, this, placeholders::_1))
+            ("Move the telescope to the given local sky coordinates"
+             "|Zd[deg]:Zenith distance"
+             "|Az[deg]:Azimuth");
+
+        T::AddEvent("TRACK", "D:2", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Track, this, placeholders::_1))
+            ("Move the telescope to the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination");
+
+        T::AddEvent("WOBBLE", "D:4", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Wobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle");
+
+        T::AddEvent("ORBIT", "D:5", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Orbit, this, placeholders::_1))
+            ("Move the telescope in a circle around the source"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Starting angle"
+             "|Period[min]:Time for one orbit");
+
+        T::AddEvent("TRACK_SOURCE", "D:2;C", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackSource, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_WOBBLE", "S:1;C", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackWobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|Id:Wobble angle id (1 or 2)"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_ORBIT", "D:2;C", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackOrbit, this, placeholders::_1))
+            ("Move the telescope in a circle around the source"
+             "|Angle[deg]:Starting angle"
+             "|Period[min]:Time for one orbit"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_ON", "C", State::kInitialized, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackOn, this, placeholders::_1))
+            ("Move the telescope to the given position and start tracking"
+             "|Name[string]:Source name");
+
+        T::AddEvent("MOON", State::kInitialized, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, kEMoon))
+            ("Start tracking the moon");
+        T::AddEvent("VENUS", State::kInitialized, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, kEVenus))
+            ("Start tracking Venus");
+        T::AddEvent("MARS", State::kInitialized, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, kEMars))
+            ("Start tracking Mars");
+        T::AddEvent("JUPITER", State::kInitialized, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, kEJupiter))
+            ("Start tracking Jupiter");
+        T::AddEvent("SATURN", State::kInitialized, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, kESaturn))
+            ("Start tracking Saturn");
+
+        // FIXME: What to do in error state?
+        T::AddEvent("PARK", State::kInitialized, State::kMoving, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::Park, this))
+            ("Park the telescope");
+
+        T::AddEvent("STOP")(State::kUnavailable)(State::kAvailable)(State::kArmed)(State::kInitialized)(State::kStopping)(State::kParking)(State::kMoving)(State::kTracking)(State::kOnTrack)
+            (bind(&StateMachineDrive::StopMovement, this))
+            ("Stop any kind of movement.");
+
+        T::AddEvent("RESET", State::kPositioningFailed, State::kAllowedRangeExceeded)
+            (bind(&StateMachineDrive::ResetError, this))
+            ("Acknoledge an internal error (PositioningFailed, AllowedRangeExceeded)");
+
+        T::AddEvent("TPOINT", State::kOnTrack)
+            (bind(&StateMachineDrive::TPoint, this))
+            ("Take a TPoint");
+
+        T::AddEvent("SCREENSHOT", "B:1;C")
+            (bind(&StateMachineDrive::Screenshot, this, placeholders::_1))
+            ("Take a screenshot"
+             "|color[bool]:False if just the gray image should be saved."
+             "|name[string]:Filename");
+
+        T::AddEvent("SET_LED_BRIGHTNESS", "I:2")
+            (bind(&StateMachineDrive::SetLedBrightness, this, placeholders::_1))
+            ("Set the LED brightness of the top and bottom leds"
+             "|top[au]:Allowed range 0-32767 for top LEDs"
+             "|bot[au]:Allowed range 0-32767 for bottom LEDs");
+
+        T::AddEvent("LEDS_OFF")
+            (bind(&StateMachineDrive::SetLedsOff, this))
+            ("Switch off TPoint LEDs");
+
+        T::AddEvent("UNLOCK", Drive::State::kLocked)
+            (bind(&StateMachineDrive::Unlock, this))
+            ("Unlock locked state.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSITY", "S:1")
+            (bind(&StateMachineDrive::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[uint16]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineDrive::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineDrive::Reconnect, this, placeholders::_1))
+            ("(Re)connect Ethernet connection to SPS, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+
+        T::AddEvent("PRINT")
+            (bind(&StateMachineDrive::Print, this))
+            ("Print source list.");
+
+        T::AddEvent("RELOAD_SOURCES", State::kDisconnected, State::kConnected, State::kArmed, State::kInitialized, State::kLocked)
+            (bind(&StateMachineDrive::ReloadSources, this))
+            ("Reload sources from database after database has changed..");
+
+
+        //fDrive.SetUpdateStatus(std::bind(&StateMachineDrive::UpdateStatus, this, placeholders::_1, placeholders::_2));
+        fDrive.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fDrive.SetEndpoint(url);
+    }
+
+    bool AddSource(const string &name, const Source &src)
+    {
+        const auto it = fSources.find(name);
+        if (it!=fSources.end())
+            T::Warn("Source '"+name+"' already in list... overwriting.");
+
+        fSources[name] = src;
+        return it==fSources.end();
+    }
+
+    void ReadDatabase(bool print=true)
+    {
+#ifdef HAVE_SQL
+        Database db(fDatabase);
+
+        T::Message("Connected to '"+db.uri()+"'");
+
+        const mysqlpp::StoreQueryResult res =
+            db.query("SELECT fSourceName, fRightAscension, fDeclination, fWobbleOffset, fWobbleAngle0, fWobbleAngle1, fMagnitude FROM Source").store();
+
+        fSources.clear();
+        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+        {
+            const string name = (*v)[0].c_str();
+
+            Source src;
+            src.name = name;
+            src.ra  = (*v)[1];
+            src.dec = (*v)[2];
+            src.offset = (*v)[3];
+            src.angles[0] = (*v)[4];
+            src.angles[1] = (*v)[5];
+            src.mag = (*v)[6] ? double((*v)[6]) : 0;
+            AddSource(name, src);
+
+            if (!print)
+                continue;
+
+            ostringstream msg;
+            msg << " " << name << setprecision(8) << ":   Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            msg << " Wobble=[" << src.offset << "," << src.angles[0] << "," << src.angles[1] << "] Mag=" << src.mag;
+            T::Message(msg);
+        }
+#else
+        T::Warn("MySQL support not compiled into the program.");
+#endif
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        if (!fSunRise)
+            return 1;
+
+        fDrive.SetVerbose(!conf.Get<bool>("quiet"));
+
+        fMaxPointingResidual = conf.Get<double>("pointing.max.residual");
+        fPointingVelocity    = conf.Get<double>("pointing.velocity");
+
+        fPointingMin = Encoder(conf.Get<double>("pointing.min.zd"),
+                               conf.Get<double>("pointing.min.az"));
+        fPointingMax = Encoder(conf.Get<double>("pointing.max.zd"),
+                               conf.Get<double>("pointing.max.az"));
+
+        fParkingPos.zd = conf.Has("parking-pos.zd") ? conf.Get<double>("parking-pos.zd") : 90;
+        fParkingPos.az = conf.Has("parking-pos.az") ? conf.Get<double>("parking-pos.az") :  0;
+        fMaxParkingResidual = conf.Get<double>("parking-pos.residual");
+
+        if (!CheckRange(fParkingPos))
+            return 2;
+
+        fAccPointing = Acceleration(conf.Get<double>("pointing.acceleration.zd"),
+                                    conf.Get<double>("pointing.acceleration.az"));
+        fAccTracking = Acceleration(conf.Get<double>("tracking.acceleration.zd"),
+                                    conf.Get<double>("tracking.acceleration.az"));
+        fAccMax      = Acceleration(conf.Get<double>("acceleration.max.zd"),
+                                    conf.Get<double>("acceleration.max.az"));
+
+        fWeatherTimeout = conf.Get<uint16_t>("weather-timeout");
+
+        if (fAccPointing>fAccMax)
+        {
+            T::Error("Pointing acceleration exceeds maximum acceleration.");
+            return 3;
+        }
+
+        if (fAccTracking>fAccMax)
+        {
+            T::Error("Tracking acceleration exceeds maximum acceleration.");
+            return 4;
+        }
+
+        fDeviationLimit   = conf.Get<uint16_t>("deviation-limit");
+        fDeviationCounter = conf.Get<uint16_t>("deviation-count");
+        fDeviationMax     = conf.Get<uint16_t>("deviation-max");
+
+        const string fname = conf.Get<string>("pointing.model-file");
+
+        try
+        {
+            fPointingModel.Load(fname);
+        }
+        catch (const exception &e)
+        {
+            T::Error(e.what());
+            return 5;
+        }
+
+        const vector<string> &vec = conf.Vec<string>("source");
+
+        for (vector<string>::const_iterator it=vec.begin(); it!=vec.end(); it++)
+        {
+            istringstream stream(*it);
+
+            string name;
+
+            int i=0;
+
+            Source src;
+
+            string buffer;
+            while (getline(stream, buffer, ','))
+            {
+                istringstream is(buffer);
+
+                switch (i++)
+                {
+                case 0: name = buffer; break;
+                case 1: src.ra  = ReadAngle(is); break;
+                case 2: src.dec = ReadAngle(is); break;
+                case 3: is >> src.offset; break;
+                case 4: is >> src.angles[0]; break;
+                case 5: is >> src.angles[1]; break;
+                }
+
+                if (is.fail())
+                    break;
+            }
+
+            if (i==3 || i==6)
+            {
+                AddSource(name, src);
+                continue;
+            }
+
+            T::Warn("Resource 'source' not correctly formatted: '"+*it+"'");
+        }
+
+        //fAutoResume = conf.Get<bool>("auto-resume");
+
+        if (conf.Has("source-database"))
+        {
+            fDatabase = conf.Get<string>("source-database");
+            ReadDatabase();
+        }
+
+        if (fSunRise.IsValid())
+        {
+            ostringstream msg;
+            msg << "Next sun-rise will be at " << fSunRise;
+            T::Message(msg);
+        }
+
+        // The possibility to connect should be last, so that
+        // everything else is already initialized.
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineDrive<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Drive control options");
+    control.add_options()
+        ("quiet,q",                  po_bool(),                 "Disable debug messages")
+        ("no-dim,d",                 po_switch(),               "Disable dim services")
+        ("addr,a",                   var<string>("sps:5357"),   "Network address of cosy")
+        ("verbosity,v",              var<uint16_t>(0),          "Vervosity level (0=off; 1=major updates; 2=most updates; 3=frequent updates)")
+        ("pointing.model-file",      var<string>()->required(), "Name of the file with the pointing model in use")
+        ("pointing.max.zd",          var<double>( 104.9),       "Maximum allowed zenith angle in sky pointing coordinates [deg]")
+        ("pointing.max.az",          var<double>(  85.0),       "Maximum allowed azimuth angle in sky pointing coordinates [deg]")
+        ("pointing.min.zd",          var<double>(-104.9),       "Minimum allowed zenith angle in sky pointing coordinates [deg]")
+        ("pointing.min.az",          var<double>(-295.0),       "Minimum allowed azimuth angle in sky pointing coordinates [deg]")
+        ("pointing.max.residual",    var<double>(1./32768),     "Maximum residual for a pointing operation [revolutions]")
+        ("pointing.velocity",        var<double>(0.3),          "Moving velocity when pointing [% max]")
+        ("pointing.acceleration.az", var<double>(0.01),         "Acceleration for azimuth axis for pointing operations")
+        ("pointing.acceleration.zd", var<double>(0.03),         "Acceleration for zenith axis for pointing operations")
+        ("tracking.acceleration.az", var<double>(0.01),         "Acceleration for azimuth axis during tracking operations")
+        ("tracking.acceleration.zd", var<double>(0.01),         "Acceleration for zenith axis during tracking operations")
+        ("parking-pos.zd",           var<double>(101),          "Parking position zenith angle in sky pointing coordinates [deg]")
+        ("parking-pos.az",           var<double>(0),            "Parking position azimuth angle in sky pointing coordinates [deg]")
+        ("parking-pos.residual",     var<double>(0.5/360),      "Maximum residual for a parking position [revolutions]")
+        ("acceleration.max.az",      var<double>(0.03),         "Maximum allowed acceleration value for azimuth axis")
+        ("acceleration.max.zd",      var<double>(0.09),         "Maximum allowed acceleration value for zenith axis")
+        ("weather-timeout",          var<uint16_t>(300),        "Timeout [sec] for weather data (after timeout default values are used)")
+        ("deviation-limit",          var<uint16_t>(90),         "Deviation limit in arcsec to get 'OnTrack'")
+        ("deviation-count",          var<uint16_t>(3),          "Minimum number of reported deviation below deviation-limit to get 'OnTrack'")
+        ("deviation-max",            var<uint16_t>(180),        "Maximum deviation in arcsec allowed to keep status 'OnTrack'")
+        ("source-database",          var<string>(),             "Database link as in\n\tuser:password@server[:port]/database.")
+        ("source",                   vars<string>(),            "Additional source entry in the form \"name,hh:mm:ss,dd:mm:ss\"")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The drivectrl is an interface to the drive PLC.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: drivectrl [-c type] [OPTIONS]\n"
+        "  or:  drivectrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineDrive<StateMachine,ConnectionDrive>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionDrive>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/dserver2.cc
===================================================================
--- branches/FACT++_part_filenames/src/dserver2.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/dserver2.cc	(revision 18732)
@@ -0,0 +1,333 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+int Port = 0;
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+
+private:
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(ba::const_buffers_1 buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::seconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    static int inst;
+    int instance;
+    ba::deadline_timer deadline_;
+
+    std::string message_;
+    std::string message2;
+    std::string msg_in;
+
+    char mybuffer[10000];
+
+    int state;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        instance(inst++), deadline_(ioservice)
+    {
+        deadline_.expires_at(boost::posix_time::pos_infin);
+        state=0;
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        string str = string(mybuffer, bytes_received);
+        cout << "Received b=" << bytes_received << ": '" << str << "' " << error.message() << " (" << error << ")" << endl;
+
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            deadline_.cancel();
+            return;
+        }
+
+        if (strcmp(mybuffer, "START")==0 && state==0)
+            state = 1;
+
+        if (strcmp(mybuffer, "STOP")==0 && state==1)
+            state = 0;
+
+        if (strcmp(mybuffer, "TIME")==0)
+        {
+            stringstream msg;
+            msg << "s-" << Port << ": " << Time() << " 9";
+            message2 = msg.str();
+
+            AsyncWrite(ba::buffer(message2.c_str(), 37));
+
+            cout << msg.str() << endl;
+        }
+
+        AsyncRead(ba::buffer(mybuffer, 10));
+    }
+
+    void check_deadline(const boost::system::error_code &)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (deadline_.expires_at() <= ba::deadline_timer::traits_type::now())
+        {
+            stringstream str;
+            str << "s-" << Port << ": " << Time() << " " << state;
+
+            message_ = str.str();
+
+            // The deadline has passed. Stop the session. The other
+            // actors will terminate as soon as possible.
+            AsyncWrite(ba::buffer(message_.c_str(), 37));
+            AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+            cout << str.str() << endl;
+
+            return;
+        }
+
+        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        message_ = "This is the first msg. ";
+
+        // Ownership of buffer must be valid until Handler is called.
+
+        // Emit something to be written to the socket
+        AsyncRead(ba::buffer(mybuffer, 10));
+
+        // async_read_until
+        AsyncWrite(ba::buffer(message_));
+
+        // Whenever the time expires we will schedule a new message to be sent
+        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+    }
+};
+
+
+int tcp_connection::inst = 0;
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+int main(int argc, const char **argv)
+{
+    try
+    {
+        ba::io_service io_service;
+
+        Port = argc==2 ? lexical_cast<int>(argv[1]) : 5000;
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        cout << "end." << endl;
+    }
+    catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/FACT++_part_filenames/src/evtserver.cc
===================================================================
--- branches/FACT++_part_filenames/src/evtserver.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/evtserver.cc	(revision 18732)
@@ -0,0 +1,393 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFAD.h"
+#include "HeadersEventServer.h"
+
+#include "externals/fits.h"
+#include "externals/nova.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineEventServer : public StateMachineDim
+{
+    DimDescribedState fDimFadControl;
+
+    string        fAuxPath;
+    string        fOutPath;
+    uint32_t      fStartDate;
+    uint32_t      fNight;
+    uint32_t      fInterval;
+
+    fits         *fIn;
+
+    uint32_t      fQoS;
+    double        fTime;
+    uint32_t      fRun;
+    uint32_t      fEvt;
+    //vector<float> fAvg;
+    //vector<float> fRms;
+    vector<float> fMax;
+    //vector<float> fPos;
+
+    Time fTimer;
+
+private:
+
+    int Execute()
+    {
+        if (GetCurrentState()==StateMachineImp::kSM_Ready)
+            return EventServer::State::kRunning;
+
+        // Nothing to do if not started
+        if (GetCurrentState()==EventServer::State::kIdle)
+            return EventServer::State::kIdle;
+
+        if (fDimFadControl.state()==FAD::State::kRunInProgress)
+            return EventServer::State::kStandby;
+
+        // Run only once in 5s
+        const Time now;
+        if (now<fTimer+boost::posix_time::milliseconds(fInterval))
+            return GetCurrentState();
+        fTimer = now;
+
+        // Running is only allowed when sun is up
+        const Nova::RstTime rst = Nova::GetSolarRst(now.JD()-0.5);
+        const bool isUp =
+            (rst.rise<rst.set && (now.JD()>rst.rise && now.JD()<rst.set)) ||
+            (rst.rise>rst.set && (now.JD()<rst.set  || now.JD()>rst.rise));
+
+        // FIXME: What about errors?
+        if (!isUp)
+            return EventServer::State::kStandby;
+
+        // Check if file has to be changed
+        const uint32_t night = fStartDate>0 ? fStartDate : Time().NightAsInt()-1;
+
+        if (fNight!=night)
+        {
+            fNight = night;
+
+            delete fIn;
+
+            const string name = fAuxPath + Tools::Form("/%04d/%02d/%02d/%08d.FAD_CONTROL_EVENT_DATA.fits", night/10000, (night/100)%100, night%100, night);
+
+            fIn = new fits(name);
+            if (!fIn->is_open())
+            {
+                Error(string("Failed to open "+name+": ")+strerror(errno));
+                return StateMachineImp::kSM_Error;
+            }
+
+            // Requiered columns
+            try
+            {
+                fIn->SetRefAddress("QoS",  fQoS);
+                fIn->SetRefAddress("Time", fTime);
+                fIn->SetVecAddress("max",  fMax);
+                //fIn->SetVecAddress(fRms);
+                //fIn->SetVecAddress(fMax);
+                //fIn->SetVecAddress(fPos);
+            }
+            catch (const runtime_error &e)
+            {
+                delete fIn;
+                fIn = 0;
+
+                Error("Failed to open "+name+": "+e.what());
+                return StateMachineImp::kSM_Error;
+            }
+
+            // Non requiered columns
+            fRun = 0;
+            fEvt = 0;
+            try
+            {
+                fIn->SetRefAddress("run",  fRun);
+                fIn->SetRefAddress("evt",  fEvt);
+            }
+            catch (const runtime_error &e) { }
+
+            Info("File "+name+" open.");
+        }
+
+        if (GetCurrentState()==StateMachineImp::kSM_Error)
+            return  StateMachineImp::kSM_Error;
+
+        // Get next data event
+        vector<float> sorted;
+        while (1)
+        {
+            if (!fIn->GetNextRow())
+            {
+                fNight = 0;
+                return EventServer::State::kRunning;
+            }
+
+            // Select a
+            if (fQoS & FAD::EventHeader::kAll)
+                continue;
+
+            for (int i=0; i<1440; i++)
+                fMax[i] /= 1000;
+
+            for (int i=8; i<1440; i+=9)
+                fMax[i] = fMax[i-2];
+
+            // construct output
+            sorted = fMax;
+            sort(sorted.begin(), sorted.end());
+
+            const double med = sorted[719];
+
+            vector<float> dev(1440);
+            for (int i=0; i<1440; i++)
+                dev[i] = fabs(sorted[i]-med);
+            sort(dev.begin(), dev.end());
+
+            const double deviation = dev[uint32_t(0.682689477208650697*1440)];
+
+            // In a typical shower or muon ring, the first
+            // few pixels will have comparable brightness,
+            // in a NSB event not. Therefore, the 4th brightest
+            // pixel is a good reference.
+            if (sorted[1439-3]>med+deviation*5)
+                break;
+        }
+
+        const double scale = max(0.25f, sorted[1436]);
+
+        ostringstream out;
+        out << Time(fTime+40587).JavaDate() << '\n';
+        out << "0\n";
+        out << scale << '\n';
+        out << setprecision(3);
+        if (fRun>0)
+            //out << "DEMO [" << fEvt << "]\nDEMO [" << fRun << "]\nDEMO\x7f";
+            out << fEvt << '\n' << fRun << "\nDEMO\x7f";
+        else
+            out << "DEMO\nDEMO\nDEMO\x7f";
+
+        //out << sorted[1439] << '\n';
+        //out << sorted[719]  << '\n';
+        //out << sorted[0]    << '\x7f';
+
+        // The valid range is from 1 to 127
+        // \0 is used to seperate different curves
+        vector<uint8_t> val(1440);
+        for (uint64_t i=0; i<1440; i++)
+        {
+            float range = nearbyint(126*fMax[i]/scale); // [-2V; 2V]
+            if (range>126)
+                range=126;
+            if (range<0)
+                range=0;
+            val[i] = (uint8_t)range;
+        }
+
+        const char *ptr = reinterpret_cast<char*>(val.data());
+        out.write(ptr, val.size()*sizeof(uint8_t));
+        out << '\x7f';
+
+        if (fOutPath=="-")
+            Out() << out.str();
+        else
+            ofstream(fOutPath+"/cam-fadcontrol-eventdata.bin") << out.str();
+
+        return EventServer::State::kRunning;
+    }
+
+    int StartServer()
+    {
+        fStartDate = 0;
+        return EventServer::State::kRunning;
+    }
+
+    int StopServer()
+    {
+        delete fIn;
+        fIn = 0;
+
+        return EventServer::State::kIdle;
+    }
+
+    int StartDate(const EventImp &evt)
+    {
+        fStartDate = evt.GetUInt();
+        return EventServer::State::kRunning;
+    }
+
+
+public:
+    StateMachineEventServer(ostream &out=cout) : StateMachineDim(out, "EVENT_SERVER"),
+        fDimFadControl("FAD_CONTROL"), fStartDate(0), fNight(0), fIn(0), fMax(1440)
+
+    {
+        fDimFadControl.Subscribe(*this);
+
+        // State names
+        AddStateName(EventServer::State::kIdle, "Idle",
+                     "Event server stopped.");
+        AddStateName(EventServer::State::kRunning, "Running",
+                     "Reading events file and writing to output.");
+        AddStateName(EventServer::State::kStandby, "Standby",
+                     "No events are processed, either the sun is down or fadctrl in kRunInProgress.");
+
+
+        AddEvent("START", EventServer::State::kIdle, EventServer::State::kRunning, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StartServer, this))
+            ("Start serving the smartfact camera file");
+
+        AddEvent("START_DATE", "I:1", EventServer::State::kIdle, EventServer::State::kRunning, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StartDate, this, placeholders::_1))
+            ("Start serving the smartfact camera file with the events from the given date"
+             "|uint32[yyyymmdd]:Integer representing the date from which the data should be read");
+
+        AddEvent("STOP", EventServer::State::kRunning, EventServer::State::kStandby, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StopServer, this))
+            ("Stop serving the smartfact camera file");
+    }
+    ~StateMachineEventServer()
+    {
+        delete fIn;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fAuxPath  = conf.Get<string>("aux-path");
+        fOutPath  = conf.Get<string>("out-path");
+        fInterval = conf.Get<uint32_t>("interval");
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineEventServer>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Event server options");
+    control.add_options()
+        ("aux-path", var<string>("/fact/aux"), "The root path to the auxilary files.")
+        ("out-path", var<string>("www/smartfact/data"), "Path where the output camera file should be written.")
+        ("interval", var<uint32_t>(5000), "Interval of updates in milliseconds.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The event server copies events from fits files to the smartfact data.\n"
+        "\n"
+        "Usage: evtserver [-c type] [OPTIONS]\n"
+        "  or:  evtserver [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineEventServer>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/fad.cc
===================================================================
--- branches/FACT++_part_filenames/src/fad.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fad.cc	(revision 18732)
@@ -0,0 +1,771 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+#include "Converter.h"
+
+#include "HeadersFAD.h"
+
+#include "dis.hxx"
+#include "Dim.h"
+
+using namespace std;
+using namespace FAD;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+class tcp_connection;
+
+class Trigger : public DimCommandHandler
+{
+    DimCommand fCmd;
+
+    vector<tcp_connection*> vec;
+
+public:
+    Trigger() : fCmd("FAD/TRIGGER", "I:1", this)
+    {
+    }
+
+    void Add(tcp_connection *ptr)
+    {
+        vec.push_back(ptr);
+    }
+
+    void Remove(tcp_connection *ptr)
+    {
+        vec.erase(find(vec.begin(), vec.end(), ptr));
+    }
+
+    void commandHandler();
+};
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+public:
+    static Trigger fTrigger;
+
+    const int fBoardId;
+
+    double   fStartTime;
+
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(ba::ip::tcp::socket *socket, const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*socket, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::milliseconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice, int boardid) : ba::ip::tcp::socket(ioservice),
+        fBoardId(boardid), fRamRoi(kNumChannels), fTriggerSendData(ioservice),
+        fTriggerEnabled(false)
+    {
+        fTrigger.Add(this);
+    }
+    void PostTrigger(uint32_t triggerid)
+    {
+        if (fTriggerEnabled)
+            get_io_service().post(boost::bind(&tcp_connection::SendData, this, triggerid));
+    }
+
+    // Callback when writing was successfull or failed
+#ifdef DEBUG_TX
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent[" << fBoardId << "]: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+        fOutQueue.pop_front();
+    }
+#else
+    void HandleSentData(const boost::system::error_code&, size_t)
+    {
+        fOutQueue.pop_front();
+    }
+#endif
+
+    vector<uint16_t> fBufCommand;
+
+    vector<uint16_t> fCommand;
+
+    FAD::EventHeader   fHeader;
+    FAD::EventHeader   fRam;
+    FAD::ChannelHeader fChHeader[kNumChannels];
+
+    vector<uint16_t> fRamRoi;
+
+    ba::deadline_timer fTriggerSendData;
+
+    bool fTriggerEnabled;
+    bool fCommandSocket;
+
+    int fSocket;
+
+    deque<vector<uint16_t>> fOutQueue;
+
+    void SendData(uint32_t triggerid)
+    {
+        if (fOutQueue.size()>3)
+            return;
+
+        fHeader.fPackageLength = sizeof(EventHeader)/2+1;
+        fHeader.fEventCounter++;
+        fHeader.fTriggerCounter = triggerid;
+        fHeader.fTimeStamp = uint32_t((Time(Time::utc).UnixTime()-fStartTime)*10000);
+        fHeader.fFreqRefClock = 997+rand()/(RAND_MAX/7);
+
+        /* Trigger ID
+
+        * Byte[4]: Bit 0:    ext1
+        * Byte[4]: Bit 1:    ext2
+        * Byte[4]: Bit 2-7:  n/40
+        * Byte[5]: Bit 0: LP_1
+        * Byte[5]: Bit 1: LP_2
+        * Byte[5]: Bit 2: Pedestal
+        * Byte[5]: Bit 3:
+        * Byte[5]: Bit 4:
+        * Byte[5]: Bit 5:
+        * Byte[5]: Bit 6:
+        * Byte[5]: Bit 7: TIM source
+
+        */
+
+        for (int i=0; i<FAD::kNumTemp; i++)
+            fHeader.fTempDrs[i] = (42.+fBoardId/40.+float(rand())/RAND_MAX*5)*16;
+
+        // Header, channel header, end delimiter
+        size_t sz = sizeof(fHeader) + kNumChannels*sizeof(FAD::ChannelHeader) + 2;
+        // Data
+        for (int i=0; i<kNumChannels; i++)
+            sz += fChHeader[i].fRegionOfInterest*2;
+
+        vector<uint16_t> evtbuf;
+        evtbuf.reserve(sz);
+
+        for (int i=0; i<kNumChannels; i++)
+        {
+            fChHeader[i].fStartCell = int64_t(1023)*rand()/RAND_MAX;
+
+             vector<int16_t> data(fChHeader[i].fRegionOfInterest, -1024+0x42+i/9+fHeader.fDac[1]/32);
+
+            for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
+            {
+                const int rel =  ii;
+                const int abs = (ii+fChHeader[i].fStartCell)%fChHeader[i].fRegionOfInterest;
+
+                data[rel] +=  6.*rand()/RAND_MAX +  5*exp(-rel/10); // sigma=10
+                data[rel] += 15*sin(2*3.1415*abs/512); // sigma=10
+            }
+
+            if (triggerid>0)
+            {
+                int    p    =   5.*rand()/RAND_MAX+ 20;
+                double rndm = 500.*rand()/RAND_MAX+500;
+                for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
+                    data[ii] += rndm*exp(-0.5*(ii-p)*(ii-p)/25); // sigma=10
+            }
+
+            const vector<uint16_t> buf = fChHeader[i].HtoN();
+
+            evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
+            evtbuf.insert(evtbuf.end(), data.begin(), data.end());
+
+            fHeader.fPackageLength += sizeof(ChannelHeader)/2;
+            fHeader.fPackageLength += fChHeader[i].fRegionOfInterest;
+        }
+
+        evtbuf.push_back(htons(FAD::kDelimiterEnd));
+
+        const vector<uint16_t> h = fHeader.HtoN();
+
+        evtbuf.insert(evtbuf.begin(), h.begin(), h.end());
+
+        fOutQueue.push_back(evtbuf);
+
+        if (fCommandSocket)
+            AsyncWrite(this, ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
+        else
+        {
+            if (fSockets.size()==0)
+                return;
+
+            fSocket++;
+            fSocket %= fSockets.size();
+
+            AsyncWrite(fSockets[fSocket].get(), ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
+        }
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        if (fTriggerEnabled)
+            SendData(0);
+
+        AsyncWait(fTriggerSendData, fHeader.fTriggerGeneratorPrescaler, &tcp_connection::TriggerSendData);
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            return;
+        }
+
+        // No command received yet
+        if (fCommand.size()==0)
+        {
+            transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                      fBufCommand.begin(), ntohs);
+
+            switch (fBufCommand[0])
+            {
+            case kCmdDrsEnable:
+            case kCmdDrsEnable+0x100:
+                fHeader.Enable(FAD::EventHeader::kDenable, fBufCommand[0]==kCmdDrsEnable);
+                cout << "-> DrsEnable " << fBoardId << " " << (fBufCommand[0]==kCmdDrsEnable) << endl;
+                break;
+
+            case kCmdDwrite:
+            case kCmdDwrite+0x100:
+                fHeader.Enable(FAD::EventHeader::kDwrite, fBufCommand[0]==kCmdDwrite);
+                cout << "-> Dwrite " << fBoardId << " " << (fBufCommand[0]==kCmdDwrite) << endl;
+                break;
+
+            case kCmdTriggerLine:
+            case kCmdTriggerLine+0x100:
+                cout << "-> Trigger line " << fBoardId << " " << (fBufCommand[0]==kCmdTriggerLine) << endl;
+                fTriggerEnabled = fBufCommand[0]==kCmdTriggerLine;
+                fHeader.Enable(FAD::EventHeader::kTriggerLine, fTriggerEnabled);
+                break;
+
+            case kCmdSclk:
+            case kCmdSclk+0x100:
+                cout << "-> Sclk " << fBoardId << endl;
+                fHeader.Enable(FAD::EventHeader::kSpiSclk, fBufCommand[0]==kCmdSclk);
+                break;
+
+            case kCmdSrclk:
+            case kCmdSrclk+0x100:
+                cout << "-> Srclk " << fBoardId << endl;
+                break;
+
+            case kCmdRun:
+            case kCmdRun+0x100:
+                fStartTime = Time(Time::utc).UnixTime();
+                cout << "-> Run " << fBoardId << endl;
+                break;
+
+            case kCmdBusyOff:
+            case kCmdBusyOff+0x100:
+                cout << "-> BusyOff " << fBoardId << " " << (fBufCommand[0]==kCmdBusyOff) << endl;
+                fHeader.Enable(FAD::EventHeader::kBusyOff, fBufCommand[0]==kCmdBusyOff);
+                break;
+
+            case kCmdBusyOn:
+            case kCmdBusyOn+0x100:
+                cout << "-> BusyOn " << fBoardId << " " << (fBufCommand[0]==kCmdBusyOn) << endl;
+                fHeader.Enable(FAD::EventHeader::kBusyOn, fBufCommand[0]==kCmdBusyOn);
+                break;
+
+            case kCmdSocket:
+            case kCmdSocket+0x100:
+                cout << "-> Socket " << fBoardId << " " << (fBufCommand[0]==kCmdSocket) << endl;
+                fCommandSocket = fBufCommand[0]==kCmdSocket;
+                fHeader.Enable(FAD::EventHeader::kSock17, !fCommandSocket);
+                break;
+
+            case kCmdContTrigger:
+            case kCmdContTrigger+0x100:
+                if (fBufCommand[0]==kCmdContTrigger)
+                    AsyncWait(fTriggerSendData, 0, &tcp_connection::TriggerSendData);
+                else
+                    fTriggerSendData.cancel();
+                fHeader.Enable(FAD::EventHeader::kContTrigger, fBufCommand[0]==kCmdContTrigger);
+                cout << "-> ContTrig " << fBoardId << " " << (fBufCommand[0]==kCmdContTrigger) << endl;
+                break;
+
+            case kCmdResetEventCounter:
+                cout << "-> ResetId " << fBoardId << endl;
+                fHeader.fEventCounter = 0;
+                break;
+
+            case kCmdSingleTrigger:
+                cout << "-> Trigger " << fBoardId << endl;
+                SendData(0);
+                break;
+
+            case kCmdWriteExecute:
+                cout << "-> Execute " << fBoardId << endl;
+                memcpy(fHeader.fDac, fRam.fDac, sizeof(fHeader.fDac));
+                for (int i=0; i<kNumChannels; i++)
+                    fChHeader[i].fRegionOfInterest = fRamRoi[i];
+                fHeader.fRunNumber = fRam.fRunNumber;
+                break;
+
+            case kCmdWriteRunNumberMSW:
+                fCommand = fBufCommand;
+                break;
+
+            case kCmdWriteRunNumberLSW:
+                fCommand = fBufCommand;
+                break;
+
+            default:
+                if (fBufCommand[0]>=kCmdWriteRoi && fBufCommand[0]<kCmdWriteRoi+kNumChannels)
+                {
+                    fCommand.resize(2);
+                    fCommand[0] = kCmdWriteRoi;
+                    fCommand[1] = fBufCommand[0]-kCmdWriteRoi;
+                    break;
+                }
+                if (fBufCommand[0]>= kCmdWriteDac && fBufCommand[0]<kCmdWriteDac+kNumDac)
+                {
+                    fCommand.resize(2);
+                    fCommand[0] = kCmdWriteDac;
+                    fCommand[1] = fBufCommand[0]-kCmdWriteDac;
+                    break;
+                }
+                if (fBufCommand[0]==kCmdWriteRate)
+                {
+                    fCommand.resize(1);
+                    fCommand[0] = kCmdWriteRate;
+                    break;
+                }
+
+                cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+                cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+                return;
+            }
+
+            fBufCommand.resize(1);
+            AsyncRead(ba::buffer(fBufCommand));
+            return;
+        }
+
+        transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                  fBufCommand.begin(), ntohs);
+
+        switch (fCommand[0])
+        {
+        case kCmdWriteRunNumberMSW:
+            fRam.fRunNumber &= 0xffff;
+            fRam.fRunNumber |= fBufCommand[0]<<16;
+            cout << "-> Set RunNumber " << fBoardId << " MSW" << endl;
+            break;
+        case kCmdWriteRunNumberLSW:
+            fRam.fRunNumber &= 0xffff0000;
+            fRam.fRunNumber |= fBufCommand[0];
+            cout << "-> Set RunNumber " << fBoardId << " LSW" << endl;
+            break;
+        case kCmdWriteRoi:
+            cout << "-> Set " << fBoardId << " Roi[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
+            //fChHeader[fCommand[1]].fRegionOfInterest = fBufCommand[0];
+            fRamRoi[fCommand[1]] = fBufCommand[0];
+            break;
+
+        case kCmdWriteDac:
+            cout << "-> Set " << fBoardId << " Dac[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
+            fRam.fDac[fCommand[1]] = fBufCommand[0];
+            break;
+
+        case kCmdWriteRate:
+            cout << "-> Set " << fBoardId << " Rate =" << fBufCommand[0] << endl;
+            fHeader.fTriggerGeneratorPrescaler = fBufCommand[0];
+            break;
+        }
+
+        fCommand.resize(0);
+
+        fBufCommand.resize(1);
+        AsyncRead(ba::buffer(fBufCommand));
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service, int boardid)
+    {
+        return shared_ptr(new tcp_connection(io_service, boardid));
+    }
+
+    void start()
+    {
+        // Ownership of buffer must be valid until Handler is called.
+
+        fTriggerEnabled=false;
+        fCommandSocket=true;
+
+        fHeader.fStartDelimiter = FAD::kDelimiterStart;
+        fHeader.fVersion = 0x104;
+        fHeader.fBoardId = (fBoardId%10) | ((fBoardId/10)<<8);
+        fHeader.fRunNumber = 0;
+        fHeader.fDNA = reinterpret_cast<uint64_t>(this);
+        fHeader.fTriggerGeneratorPrescaler = 100;
+        fHeader.fStatus = 0xf<<12 |
+            FAD::EventHeader::kDenable    |
+            FAD::EventHeader::kDwrite     |
+            FAD::EventHeader::kDcmLocked  |
+            FAD::EventHeader::kDcmReady   |
+            FAD::EventHeader::kSpiSclk;
+
+
+        fStartTime = Time(Time::utc).UnixTime();
+
+        for (int i=0; i<kNumChannels; i++)
+        {
+            fChHeader[i].fId = (i%9) | ((i/9)<<4);
+            fChHeader[i].fRegionOfInterest = 0;
+        }
+
+        // Emit something to be written to the socket
+        fBufCommand.resize(1);
+        AsyncRead(ba::buffer(fBufCommand));
+
+//        AsyncWait(fTriggerDynData, 1, &tcp_connection::SendDynData);
+
+//        AsyncWrite(ba::buffer(ba::const_buffer(&fHeader, sizeof(FTM::Header))));
+//        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+    }
+
+    vector<boost::shared_ptr<ba::ip::tcp::socket>> fSockets;
+
+    ~tcp_connection()
+    {
+        fTrigger.Remove(this);
+        fSockets.clear();
+    }
+
+    void handle_accept(boost::shared_ptr<ba::ip::tcp::socket> socket, int port, const boost::system::error_code&/* error*/)
+    {
+        cout << this << " Added one socket[" << fBoardId << "] " << socket->remote_endpoint().address().to_v4().to_string();
+        cout << ":"<< port << endl;
+        fSockets.push_back(socket);
+    }
+};
+
+Trigger tcp_connection::fTrigger;
+
+void Trigger::commandHandler()
+{
+    if (!getCommand())
+        return;
+
+    for (vector<tcp_connection*>::iterator it=vec.begin();
+         it!=vec.end(); it++)
+        (*it)->PostTrigger(getCommand()->getInt());
+}
+
+
+class tcp_server
+{
+    tcp::acceptor acc0;
+    tcp::acceptor acc1;
+    tcp::acceptor acc2;
+    tcp::acceptor acc3;
+    tcp::acceptor acc4;
+    tcp::acceptor acc5;
+    tcp::acceptor acc6;
+    tcp::acceptor acc7;
+
+    int fBoardId;
+
+public:
+    tcp_server(ba::io_service& ioservice, int port, int board) :
+        acc0(ioservice, tcp::endpoint(tcp::v4(), port)),
+        acc1(ioservice, tcp::endpoint(tcp::v4(), port+1)),
+        acc2(ioservice, tcp::endpoint(tcp::v4(), port+2)),
+        acc3(ioservice, tcp::endpoint(tcp::v4(), port+3)),
+        acc4(ioservice, tcp::endpoint(tcp::v4(), port+4)),
+        acc5(ioservice, tcp::endpoint(tcp::v4(), port+5)),
+        acc6(ioservice, tcp::endpoint(tcp::v4(), port+6)),
+        acc7(ioservice, tcp::endpoint(tcp::v4(), port+7)),
+        fBoardId(board)
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept(tcp_connection::shared_ptr dest, tcp::acceptor &acc)
+    {
+        boost::shared_ptr<ba::ip::tcp::socket> connection =
+            boost::shared_ptr<ba::ip::tcp::socket>(new ba::ip::tcp::socket(acc.get_io_service()));
+
+        acc.async_accept(*connection,
+                          boost::bind(&tcp_connection::handle_accept,
+                                      dest, connection,
+                                      acc.local_endpoint().port(),
+                                      ba::placeholders::error));
+    }
+
+    void start_accept()
+    {
+        cout << "Start accept[" << fBoardId << "] " << acc0.local_endpoint().port() << "..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/acc0.get_io_service(), fBoardId);
+
+        cout << new_connection.get() << " ";
+
+        // This will accept a connection without blocking
+        acc0.async_accept(*new_connection,
+                          boost::bind(&tcp_server::handle_accept,
+                                      this,
+                                      new_connection,
+                                      ba::placeholders::error));
+
+        start_accept(new_connection, acc1);
+        start_accept(new_connection, acc2);
+        start_accept(new_connection, acc3);
+        start_accept(new_connection, acc4);
+        start_accept(new_connection, acc5);
+        start_accept(new_connection, acc6);
+        start_accept(new_connection, acc7);
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << new_connection.get() << " Handle accept[" << fBoardId << "]["<<new_connection->fBoardId<<"]..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+#include "Configuration.h"
+
+void SetupConfiguration(::Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"), "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("port,p",    var<uint16_t>(4000), "")
+        ("num,n",     var<uint16_t>(40),   "")
+        ;
+
+    po::positional_options_description p;
+    p.add("port", 1); // The first positional options
+    p.add("num",  1); // The second positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char **argv)
+{
+    ::Configuration conf(argv[0]);
+
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+    if (conf.HasVersion() || conf.HasPrint() || conf.HasHelp())
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    DimServer::start("FAD");
+
+    //try
+    {
+        ba::io_service io_service;
+
+        const uint16_t n = conf.Get<uint16_t>("num");
+        uint16_t port = conf.Get<uint16_t>("port");
+
+        vector<shared_ptr<tcp_server>> servers;
+
+        for (int i=0; i<n; i++)
+        {
+            shared_ptr<tcp_server> server(new tcp_server(io_service, port, i));
+            servers.push_back(server);
+
+            port += 8;
+        }
+
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/FACT++_part_filenames/src/fadctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/fadctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fadctrl.cc	(revision 18732)
@@ -0,0 +1,2342 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+#include "HeadersFAD.h"
+
+#include "tools.h"
+
+#include "DimDescriptionService.h"
+#include "EventBuilderWrapper.h"
+
+#include "../externals/zofits.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using ba::ip::tcp;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFAD : public Connection
+{
+    uint16_t fSlot;
+//    tcp::endpoint fEndpoint;
+
+    vector<uint16_t> fBuffer;
+
+protected:
+    FAD::EventHeader   fEventHeader;
+    FAD::ChannelHeader fChannelHeader[FAD::kNumChannels];
+
+private:
+    bool fIsVerbose;
+    bool fIsHexOutput;
+    bool fIsDataOutput;
+    bool fBlockTransmission;
+
+    uint64_t fCounter;
+
+    FAD::EventHeader fBufEventHeader;
+    vector<uint16_t> fTargetRoi;
+
+protected:
+    void PrintEventHeader()
+    {
+        Out() << endl << kBold << "Header received (N=" << dec << fCounter << "):" << endl;
+        Out() << fEventHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fEventHeader, 16) << endl;
+    }
+
+    void PrintChannelHeaders()
+    {
+        Out() << dec << endl;
+
+        for (unsigned int c=0; c<FAD::kNumChips; c++)
+        {
+            Out() << "ROI|" << fEventHeader.Crate() << ":" << fEventHeader.Board() << ":" << c << ":";
+            for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
+		Out() << " " << setw(4) << fChannelHeader[c+ch*FAD::kNumChips].fRegionOfInterest;
+            Out() << endl;
+        }
+
+        Out() << "CEL|" << fEventHeader.Crate() << ":" <<fEventHeader.Board() << ": ";
+        for (unsigned int c=0; c<FAD::kNumChips; c++)
+        {
+            if (0)//fIsFullChannelHeader)
+            {
+                for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
+                    Out() << " " << setw(4) << fChannelHeader[c+ch*FAD::kNumChips].fStartCell;
+                Out() << endl;
+            }
+            else
+            {
+                Out() << " ";
+                const uint16_t cel = fChannelHeader[c*FAD::kNumChannelsPerChip].fStartCell;
+                for (unsigned int ch=1; ch<FAD::kNumChannelsPerChip; ch++)
+                    if (cel!=fChannelHeader[c+ch*FAD::kNumChips].fStartCell)
+                    {
+                        Out() << "!";
+                        break;
+                    }
+                Out() << cel;
+            }
+        }
+        Out() << endl;
+
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fChannelHeader, 16) << endl;
+
+    }
+
+    virtual void UpdateFirstHeader()
+    {
+    }
+
+    virtual void UpdateEventHeader()
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose)
+            PrintEventHeader();
+    }
+
+    virtual void UpdateChannelHeaders()
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose)
+            PrintChannelHeaders();
+
+    }
+
+    virtual void UpdateData(const uint16_t *data, size_t sz)
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose && fIsDataOutput)
+            Out() << Converter::GetHex<uint16_t>(data, sz, 16, true) << endl;
+    }
+
+private:
+    enum
+    {
+        kReadHeader = 1,
+        kReadData   = 2,
+    };
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int type)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection to "+URL()+" closed by remote host (FAD).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            //PostClose(err!=ba::error::basic_errors::operation_aborted);
+            PostClose(false);
+            return;
+        }
+
+        if (type==kReadHeader)
+        {
+            if (bytes_received!=sizeof(FAD::EventHeader))
+            {
+                ostringstream str;
+                str << "Bytes received (" << bytes_received << " don't match header size " << sizeof(FAD::EventHeader);
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fEventHeader = fBuffer;
+
+            if (fEventHeader.fStartDelimiter!=FAD::kDelimiterStart)
+            {
+                ostringstream str;
+                str << "Invalid header received: start delimiter wrong, received ";
+                str << hex << fEventHeader.fStartDelimiter << ", expected " << FAD::kDelimiterStart << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            if (fCounter==0)
+                UpdateFirstHeader();
+
+            UpdateEventHeader();
+
+            EventBuilderWrapper::This->debugHead(fEventHeader);
+
+            fBuffer.resize(fEventHeader.fPackageLength-sizeof(FAD::EventHeader)/2);
+            AsyncRead(ba::buffer(fBuffer), kReadData);
+            AsyncWait(fInTimeout, 2000, &Connection::HandleReadTimeout);
+
+            return;
+        }
+
+        fInTimeout.cancel();
+
+        if (ntohs(fBuffer.back())!=FAD::kDelimiterEnd)
+        {
+            ostringstream str;
+            str << "Invalid data received: end delimiter wrong, received ";
+            str << hex << ntohs(fBuffer.back()) << ", expected " << FAD::kDelimiterEnd << ".";
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        uint8_t *ptr = reinterpret_cast<uint8_t*>(fBuffer.data());
+        uint8_t *end = ptr + fBuffer.size()*2;
+        for (unsigned int i=0; i<FAD::kNumChannels; i++)
+        {
+            if (ptr+sizeof(FAD::ChannelHeader) > end)
+            {
+                Error("Channel header exceeds buffer size.");
+                PostClose(false);
+                return;
+            }
+
+            fChannelHeader[i] = vector<uint16_t>((uint16_t*)ptr, (uint16_t*)ptr+sizeof(FAD::ChannelHeader)/2);
+            ptr += sizeof(FAD::ChannelHeader);
+
+            //UpdateChannelHeader(i);
+
+            if (ptr+fChannelHeader[i].fRegionOfInterest*2 > end)
+            {
+                Error("Data block exceeds buffer size.");
+                PostClose(false);
+                return;
+            }
+
+            const uint16_t *data = reinterpret_cast<uint16_t*>(ptr);
+            UpdateData(data, fChannelHeader[i].fRegionOfInterest*2);
+            ptr += fChannelHeader[i].fRegionOfInterest*2;
+        }
+
+        if (fIsVerbose)
+            UpdateChannelHeaders();
+
+        fCounter++;
+
+        fBuffer.resize(sizeof(FAD::EventHeader)/2);
+        AsyncRead(ba::buffer(fBuffer), kReadHeader);
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+        PostClose(false);
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fBufEventHeader.clear();
+        fBufEventHeader.fEventCounter = 1;
+        fBufEventHeader.fStatus = 0xf000|
+            FAD::EventHeader::kDenable|
+            FAD::EventHeader::kDwrite|
+            FAD::EventHeader::kDcmLocked|
+            FAD::EventHeader::kDcmReady|
+            FAD::EventHeader::kSpiSclk;
+
+        fEventHeader.clear();
+        for (unsigned int i=0; i<FAD::kNumChannels; i++)
+            fChannelHeader[i].clear();
+
+        fCounter = 0;
+
+        fBuffer.resize(sizeof(FAD::EventHeader)/2);
+        AsyncRead(ba::buffer(fBuffer), kReadHeader);
+
+//        for (int i=0; i<36; i++)
+//            CmdSetRoi(i, 100);
+
+//        Cmd(FAD::kCmdTriggerLine, true);
+//        Cmd(FAD::kCmdSingleTrigger);
+    }
+
+public:
+    void PostCmd(std::vector<uint16_t> cmd)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+        msg << " (+ " << cmd.size()-1 << " bytes data)";
+        Message(msg);
+#endif
+        transform(cmd.begin(), cmd.end(), cmd.begin(), htons);
+
+        PostMessage(cmd);
+    }
+
+    void PostCmd(uint16_t cmd)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd;
+        Message(msg);
+#endif
+        cmd = htons(cmd);
+        PostMessage(&cmd, sizeof(uint16_t));
+    }
+
+    void PostCmd(uint16_t cmd, uint16_t data)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd;
+        msg << " 0x" << setw(4) << setfill('0') << data;
+        Message(msg);
+#endif
+        const uint16_t d[2] = { htons(cmd), htons(data) };
+        PostMessage(d, sizeof(d));
+    }
+
+public:
+    ConnectionFAD(ba::io_service& ioservice, MessageImp &imp, uint16_t slot) :
+        Connection(ioservice, imp()), fSlot(slot),
+        fIsVerbose(false), fIsHexOutput(false), fIsDataOutput(false),
+        fBlockTransmission(false), fCounter(0),
+        fTargetRoi(FAD::kNumChannels)
+    {
+        // Maximum possible needed space:
+        // The full header, all channels with all DRS bins
+        // Two trailing shorts
+        fBuffer.reserve(sizeof(FAD::EventHeader) + FAD::kNumChannels*(sizeof(FAD::ChannelHeader) + FAD::kMaxBins*sizeof(uint16_t)) + 2*sizeof(uint16_t));
+
+        SetLogStream(&imp);
+    }
+
+    void Cmd(FAD::Enable cmd, bool on=true)
+    {
+        switch (cmd)
+        {
+        case FAD::kCmdDrsEnable:   fBufEventHeader.Enable(FAD::EventHeader::kDenable,     on);  break;
+        case FAD::kCmdDwrite:      fBufEventHeader.Enable(FAD::EventHeader::kDwrite,      on);  break;
+        case FAD::kCmdTriggerLine: fBufEventHeader.Enable(FAD::EventHeader::kTriggerLine, on);  break;
+        case FAD::kCmdBusyOn:      fBufEventHeader.Enable(FAD::EventHeader::kBusyOn,      on);  break;
+        case FAD::kCmdBusyOff:     fBufEventHeader.Enable(FAD::EventHeader::kBusyOff,     on);  break;
+        case FAD::kCmdContTrigger: fBufEventHeader.Enable(FAD::EventHeader::kContTrigger, on);  break;
+        case FAD::kCmdSocket:      fBufEventHeader.Enable(FAD::EventHeader::kSock17,      !on); break;
+        default:
+            break;
+        }
+
+        PostCmd(cmd + (on ? 0 : 0x100));
+    }
+
+    // ------------------------------
+
+    // IMPLEMENT: Abs/Rel
+    void CmdPhaseShift(int16_t val)
+    {
+        vector<uint16_t> cmd(abs(val)+2, FAD::kCmdPhaseApply);
+        cmd[0] = FAD::kCmdPhaseReset;
+        cmd[1] = val<0 ? FAD::kCmdPhaseDecrease : FAD::kCmdPhaseIncrease;
+        PostCmd(cmd);
+    }
+
+    bool CmdSetTriggerRate(int32_t val)
+    {
+        if (val<0 || val>0xffff)
+            return false;
+
+        fBufEventHeader.fTriggerGeneratorPrescaler = val;
+        PostCmd(FAD::kCmdWriteRate, val);//uint8_t(1000./val/12.5));
+        //PostCmd(FAD::kCmdWriteExecute);
+
+        return true;
+    }
+
+    void CmdSetRunNumber(uint32_t num)
+    {
+        fBufEventHeader.fRunNumber = num;
+
+        PostCmd(FAD::kCmdWriteRunNumberLSW, num&0xffff);
+        PostCmd(FAD::kCmdWriteRunNumberMSW, num>>16);
+        PostCmd(FAD::kCmdWriteExecute);
+    }
+
+    void CmdSetRegister(uint8_t addr, uint16_t val)
+    {
+        // Allowed addr:  [0, MAX_ADDR]
+        // Allowed value: [0, MAX_VAL]
+        PostCmd(FAD::kCmdWrite + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+    }
+
+    bool CmdSetDacValue(int8_t addr, uint16_t val)
+    {
+        if (addr<0)
+        {
+            for (unsigned int i=0; i<=FAD::kMaxDacAddr; i++)
+            {
+                fBufEventHeader.fDac[i] = val;
+                PostCmd(FAD::kCmdWriteDac + i, val);
+            }
+            PostCmd(FAD::kCmdWriteExecute);
+            return true;
+        }
+
+        if (uint8_t(addr)>FAD::kMaxDacAddr) // NDAC
+            return false;
+
+        fBufEventHeader.fDac[addr] = val;
+
+        PostCmd(FAD::kCmdWriteDac + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+        return true;
+    }
+
+    bool CmdSetRoi(int8_t addr, uint16_t val)
+    {
+        if (val>FAD::kMaxRoiValue)
+            return false;
+
+        if (addr<0)
+        {
+            for (unsigned int i=0; i<=FAD::kMaxRoiAddr; i++)
+            {
+                fTargetRoi[i] = val;
+                PostCmd(FAD::kCmdWriteRoi + i, val);
+            }
+            PostCmd(FAD::kCmdWriteExecute);
+            return true;
+        }
+
+        if (uint8_t(addr)>FAD::kMaxRoiAddr)
+            return false;
+
+        fTargetRoi[addr] = val;
+
+        PostCmd(FAD::kCmdWriteRoi + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+        return true;
+    }
+
+    bool CmdSetRoi(uint16_t val) { return CmdSetRoi(-1, val); }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetHexOutput(bool b)
+    {
+        fIsHexOutput = b;
+    }
+
+    void SetDataOutput(bool b)
+    {
+        fIsDataOutput = b;
+    }
+
+    void SetBlockTransmission(bool b)
+    {
+        fBlockTransmission = b;
+    }
+
+    bool IsTransmissionBlocked() const
+    {
+        return fBlockTransmission;
+    }
+
+    void PrintEvent()
+    {
+        if (fCounter>0)
+        {
+            PrintEventHeader();
+            PrintChannelHeaders();
+        }
+        else
+            Out() << "No event received yet." << endl;
+    }
+
+    bool HasCorrectRoi() const
+    {
+        for (int i=0; i<FAD::kNumChannels; i++)
+            if (fTargetRoi[i]!=fChannelHeader[i].fRegionOfInterest)
+                return false;
+
+        return true;
+    }
+
+    bool HasCorrectHeader() const
+    {
+        return fEventHeader==fBufEventHeader;
+    }
+
+    bool IsConfigured() const
+    {
+        return HasCorrectRoi() && HasCorrectHeader();
+    }
+
+    void PrintCheckHeader()
+    {
+        Out() << "================================================================================" << endl;
+        fEventHeader.print(Out());
+        Out() << "--------------------------------------------------------------------------------" << endl;
+        fBufEventHeader.print(Out());
+        Out() << "================================================================================" << endl;
+    }
+
+    const FAD::EventHeader &GetConfiguration() const { return fBufEventHeader; }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T>
+class StateMachineFAD : public StateMachineAsio<T>, public EventBuilderWrapper
+{
+private:
+    typedef map<uint8_t, ConnectionFAD*> BoardList;
+
+    BoardList fBoards;
+
+    bool fIsVerbose;
+    bool fIsHexOutput;
+    bool fIsDataOutput;
+    bool fDebugTx;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Cmd(FAD::Enable command)
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(command);
+
+        return T::GetCurrentState();
+    }
+
+    int SendCmd(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCmd", 4))
+            return T::kSM_FatalError;
+
+        if (evt.GetUInt()>0xffff)
+        {
+            T::Warn("Command value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->PostCmd(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+
+    int SendCmdData(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCmdData", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *ptr = evt.Ptr<uint32_t>();
+
+        if (ptr[0]>0xffff)
+        {
+            T::Warn("Command value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        if (ptr[1]>0xffff)
+        {
+            T::Warn("Data value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->PostCmd(ptr[0], ptr[1]);
+
+        return T::GetCurrentState();
+    }
+
+    int CmdEnable(const EventImp &evt, FAD::Enable command)
+    {
+        if (!CheckEventSize(evt.GetSize(), "CmdEnable", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(command, evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    bool Check(const uint32_t *dat, uint32_t maxaddr, uint32_t maxval)
+    {
+        if (dat[0]>maxaddr)
+        {
+            ostringstream msg;
+            msg << hex << "Address " << dat[0] << " out of range, max=" << maxaddr << ".";
+            T::Error(msg);
+            return false;
+        }
+
+        if (dat[1]>maxval)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range, max=" << maxval << ".";
+            T::Error(msg);
+            return false;
+        }
+
+        return true;
+    }
+
+    int SetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRegister", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *dat = evt.Ptr<uint32_t>();
+
+        if (!Check(dat, FAD::kMaxRegAddr, FAD::kMaxRegValue))
+            return T::GetCurrentState();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetRegister(dat[0], dat[1]);
+
+        return T::GetCurrentState();
+    }
+
+    int SetRoi(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRoi", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *dat = evt.Ptr<int32_t>();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            if (!i->second->CmdSetRoi(dat[0], dat[1]))
+            {
+                ostringstream msg;
+                msg << hex << "Channel " << dat[0] << " or Value " << dat[1] << " out of range.";
+                T::Error(msg);
+                return T::GetCurrentState();
+            }
+
+
+        return T::GetCurrentState();
+    }
+
+    int SetDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDac", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *dat = evt.Ptr<int32_t>();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            if (!i->second->CmdSetDacValue(dat[0], dat[1]))
+            {
+                ostringstream msg;
+                msg << hex << "Channel " << dat[0] << " or Value " << dat[1] << " out of range.";
+                T::Error(msg);
+                return T::GetCurrentState();
+            }
+
+        return T::GetCurrentState();
+    }
+
+    int Trigger(int n)
+    {
+        for (int nn=0; nn<n; nn++)
+            for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+                i->second->Cmd(FAD::kCmdSingleTrigger);
+
+        return T::GetCurrentState();
+    }
+
+    int SendTriggers(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendTriggers", 4))
+            return T::kSM_FatalError;
+
+        Trigger(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+/*
+    int StartRun(const EventImp &evt, bool start)
+    {
+        if (!CheckEventSize(evt.GetSize(), "StartRun", 0))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(FAD::kCmdRun, start);
+
+        return T::GetCurrentState();
+    }
+*/
+    int PhaseShift(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PhaseShift", 2))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdPhaseShift(evt.GetShort());
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerRate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerRate", 4))
+            return T::kSM_FatalError;
+
+        if (evt.GetUInt()>0xffff)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << evt.GetUShort() << " out of range, max=" << 0xffff << "(?)";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetTriggerRate(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+
+    int SetRunNumber(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRunNumber", 8))
+            return T::kSM_FatalError;
+
+        const uint64_t num = evt.GetUXtra();
+
+        if (num<=0 || num>FAD::kMaxRunNumber)
+        {
+            ostringstream msg;
+            msg << "Run number " << num << " out of range [1;" << FAD::kMaxRunNumber << "]";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        if (!IncreaseRunNumber(num))
+            return T::GetCurrentState();
+ 
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetRunNumber(GetRunNumber());
+
+        return T::GetCurrentState();
+    }
+
+    int SetMaxMemoryBuffer(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetMaxMemoryBuffer", 2))
+            return T::kSM_FatalError;
+
+        const int16_t mem = evt.GetShort();
+
+        if (mem<=0)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << mem << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        SetMaxMemory(mem);
+
+        return T::GetCurrentState();
+    }
+
+    int SetEventTimeoutSec(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetEventTimeoutSec", 2))
+            return T::kSM_FatalError;
+
+        const int16_t sec = evt.GetShort();
+
+        if (sec<=0)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << sec << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        SetEventTimeout(sec);
+
+        return T::GetCurrentState();
+    }
+
+    int SetFileFormat(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetFileFormat", 2))
+            return T::kSM_FatalError;
+
+        const uint16_t fmt = evt.GetUShort();
+
+        // A simple way to make sure that no invalid file format
+        // is passed to the event builder
+	switch (fmt)
+	{
+        case FAD::kNone:
+        case FAD::kDebug:
+        case FAD::kFits:
+        case FAD::kZFits:
+        case FAD::kCfitsio:
+        case FAD::kRaw:
+        case FAD::kCalib:
+            SetOutputFormat(FAD::FileFormat_t(fmt));
+            break;
+	default:
+            T::Error("File format unknonw.");
+            return T::GetCurrentState();
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int StartDrsCalibration()
+    {
+        SetOutputFormat(FAD::kCalib);
+        return T::GetCurrentState();
+    }
+
+    int ResetSecondaryDrsBaseline()
+    {
+        EventBuilderWrapper::ResetSecondaryDrsBaseline();
+        return T::GetCurrentState();
+    }
+
+    int LoadDrsCalibration(const EventImp &evt)
+    {
+        EventBuilderWrapper::LoadDrsCalibration(evt.GetText());
+        return T::GetCurrentState();
+    }
+/*
+    int Test(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Test", 2))
+            return T::kSM_FatalError;
+
+
+        SetMode(evt.GetShort());
+
+        return T::GetCurrentState();
+    }*/
+
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetHexOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetHexOutput", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetHexOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDataOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDataOutput", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetDataOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugTx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugTx", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetDebugTx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    const BoardList::iterator GetSlot(uint16_t slot)
+    {
+        const BoardList::iterator it=fBoards.find(slot);
+        if (it==fBoards.end())
+        {
+            ostringstream str;
+            str << "Slot " << slot << " not found.";
+            T::Warn(str);
+        }
+
+        return it;
+    }
+
+    int PrintEvent(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PrintEvent", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.Get<int16_t>();
+
+        if (slot<0)
+        {
+            for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+                i->second->PrintEvent();
+        }
+        else
+        {
+            const BoardList::iterator it=GetSlot(slot);
+            if (it!=fBoards.end())
+                it->second->PrintEvent();
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetBlockTransmission(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetBlockTransmission", 3))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.Get<int32_t>();
+
+        const BoardList::iterator it=GetSlot(slot);
+        if (it!=fBoards.end())
+            it->second->SetBlockTransmission(evt.Get<uint8_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int SetBlockTransmissionRange(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetBlockTransmissionRange", 5))
+            return T::kSM_FatalError;
+
+        const int16_t *slot  = evt.Ptr<int16_t>();
+        const bool     block = evt.Get<uint8_t>(4);
+
+        for (int i=slot[0]; i<=slot[1]; i++)
+        {
+            const BoardList::iterator it=GetSlot(i);
+            if (it!=fBoards.end())
+                it->second->SetBlockTransmission(block);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetIgnoreSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIgnoreSlot", 3))
+            return T::kSM_FatalError;
+
+        const uint16_t slot = evt.Get<uint16_t>();
+
+        if (slot>39)
+        {
+            T::Warn("Slot out of range (0-39).");
+            return T::GetCurrentState();
+        }
+
+        SetIgnore(slot, evt.Get<uint8_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int SetIgnoreSlots(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIgnoreSlots", 5))
+            return T::kSM_FatalError;
+
+        const int16_t *slot  = evt.Ptr<int16_t>();
+        const bool     block = evt.Get<uint8_t>(4);
+
+        if (slot[0]<0 || slot[1]>39 || slot[0]>slot[1])
+        {
+            T::Warn("Slot out of range.");
+            return T::GetCurrentState();
+        }
+
+        for (int i=slot[0]; i<=slot[1]; i++)
+            SetIgnore(i, block);
+
+        return T::GetCurrentState();
+    }
+
+    int StartConfigure(const EventImp &evt)
+    {
+        const string name = evt.Ptr<char>(16);
+
+        fTargetConfig = fConfigs.find(name);
+        if (fTargetConfig==fConfigs.end())
+        {
+            T::Error("StartConfigure - Run-type '"+name+"' not found.");
+            return T::GetCurrentState();
+        }
+
+        // FIXME: What about an error state?
+        const uint32_t runno = StartNewRun(evt.Get<int64_t>(), evt.Get<int64_t>(8), *fTargetConfig);
+        if (runno==0)
+            return FAD::State::kConnected;
+
+        ostringstream str;
+        str << "Starting configuration for run " << runno << " (" << name << ")";
+        T::Message(str.str());
+
+        if (runno>=1000)
+            T::Warn("Run number exceeds logical maximum of 999 - this is no problem for writing but might give raise to problems in the analysis.");
+
+        const FAD::Configuration &conf = fTargetConfig->second;
+
+        for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+        {
+            ConnectionFAD &fad  = *it->second;
+
+            fad.Cmd(FAD::kCmdBusyOn,      true);  // continously on
+            fad.Cmd(FAD::kCmdTriggerLine, false);
+            fad.Cmd(FAD::kCmdContTrigger, false);
+            fad.Cmd(FAD::kCmdSocket,      true);
+            fad.Cmd(FAD::kCmdBusyOff,     false);  // normal when BusyOn==0
+
+            fad.Cmd(FAD::kCmdDwrite,      conf.fDwrite);
+            fad.Cmd(FAD::kCmdDrsEnable,   conf.fDenable);
+
+            for (int i=0; i<FAD::kNumDac; i++)
+                fad.CmdSetDacValue(i, conf.fDac[i]);
+
+            for (int i=0; i<FAD::kNumChips; i++)
+                for (int j=0; j<FAD::kNumChannelsPerChip; j++)
+                    fad.CmdSetRoi(i*FAD::kNumChannelsPerChip+j, conf.fRoi[j]);
+
+            fad.CmdSetTriggerRate(conf.fTriggerRate);
+            fad.CmdSetRunNumber(runno);
+            fad.Cmd(FAD::kCmdResetEventCounter);
+            fad.Cmd(FAD::kCmdTriggerLine, true);
+            //fad.Cmd(FAD::kCmdSingleTrigger);
+            //fad.Cmd(FAD::kCmdTriggerLine, true);
+        }
+
+        // Now the old run is stopped already. So all other servers can start a new run
+        // (Note that we might need another step which only checks if the continous trigger
+        //  is wwitched off, too)
+        const int64_t runs[2] = { runno, runno+1 };
+        fDimStartRun.Update(runs);
+
+        return FAD::State::kConfiguring1;
+    }
+
+    int ResetConfig()
+    {
+        const int64_t runs[2] = { -1, GetRunNumber() };
+        fDimStartRun.Update(runs);
+
+        return FAD::State::kConnected;
+    }
+
+    void CloseRun(uint32_t runid)
+    {
+        if (runid==GetRunNumber()-1)
+            ResetConfig();
+    }
+
+    int AddAddress(const EventImp &evt)
+    {
+        const string addr = Tools::Trim(evt.GetText());
+
+        const tcp::endpoint endpoint = GetEndpoint(addr);
+        if (endpoint==tcp::endpoint())
+            return T::GetCurrentState();
+
+        for (BoardList::const_iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+        {
+            if (i->second->GetEndpoint()==endpoint)
+            {
+               T::Warn("Address "+addr+" already known.... ignored.");
+               return T::GetCurrentState();
+            }
+        }
+
+        AddEndpoint(endpoint);
+
+        return T::GetCurrentState();
+    }
+
+    int RemoveSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "RemoveSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        ConnectSlot(slot, tcp::endpoint());
+
+        delete it->second;
+        fBoards.erase(it);
+
+        return T::GetCurrentState();
+    }
+
+    int ListSlots()
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+        {
+            const int           &idx = i->first;
+            const ConnectionFAD *fad = i->second;
+
+            ostringstream str;
+            str << "Slot " << setw(2) << idx << ": " << fad->GetEndpoint();
+
+            if (fad->IsConnecting())
+                str << " (0:connecting, ";
+            else
+            {
+                if (fad->IsClosed())
+                    str << " (0:disconnected, ";
+                if (fad->IsConnected())
+                    str << " (0:connected, ";
+            }
+
+            switch (fStatus2[idx])
+            {
+            case 0:  str << "1:disconnected)"; break;
+            case 8:  str << "1:connected)";     break;
+            default: str << "1:connecting)";    break;
+            }
+
+            if (fad->IsTransmissionBlocked())
+                str << " [cmd_blocked]";
+
+            if (fStatus2[idx]==8 && IsIgnored(idx))
+                str << " [data_ignored]";
+
+            if (fad->IsConnected() && fStatus2[idx]==8 && fad->IsConfigured())
+                str << " [configured]";
+
+            T::Out() << str.str() << endl;
+        }
+
+        T::Out() << "Event builder thread:";
+        if (!IsThreadRunning())
+            T::Out() << " not";
+        T::Out() << " running" << endl;
+
+        // FIXME: Output state
+
+        return T::GetCurrentState();
+    }
+
+    void EnableConnection(ConnectionFAD *ptr, bool enable=true)
+    {
+        if (!enable)
+        {
+            ptr->PostClose(false);
+            return;
+        }
+
+        if (!ptr->IsDisconnected())
+        {
+            ostringstream str;
+            str << ptr->GetEndpoint();
+
+            T::Warn("Connection to "+str.str()+" already in progress.");
+            return;
+        }
+
+	ptr->StartConnect();
+    }
+
+    void EnableAll(bool enable=true)
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            EnableConnection(i->second, enable);
+    }
+
+    int CloseOpenFiles()
+    {
+        EventBuilderWrapper::CloseOpenFiles();
+        return T::GetCurrentState();
+    }
+
+    int EnableSlot(const EventImp &evt, bool enable)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        EnableConnection(it->second, enable);
+        ConnectSlot(it->first, enable ? it->second->GetEndpoint() : tcp::endpoint());
+
+        return T::GetCurrentState();
+    }
+
+    int ToggleSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ToggleSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        const bool enable = it->second->IsDisconnected();
+
+        EnableConnection(it->second, enable);
+        ConnectSlot(it->first, enable ? it->second->GetEndpoint() : tcp::endpoint());
+
+        return T::GetCurrentState();
+    }
+
+    int StartConnection()
+    {
+        vector<tcp::endpoint> addr(40);
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            addr[i->first] = i->second->GetEndpoint();
+
+        StartThread(addr);
+        EnableAll(true);
+
+        return T::GetCurrentState();
+    }
+
+    int StopConnection()
+    {
+        Exit();
+        EnableAll(false);
+        return T::GetCurrentState();
+    }
+
+    int AbortConnection()
+    {
+        Abort();
+        EnableAll(false);
+        return T::GetCurrentState();
+    }
+
+    int Reset(bool soft)
+    {
+        ResetThread(soft);
+        return T::GetCurrentState();
+    }
+
+    // ============================================================================
+
+    int SetupZFits(const EventImp &evt, const std::function<void(int32_t)> &func)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetupZFits", 2))
+            return T::kSM_FatalError;
+
+        func(evt.GetShort());
+        return T::GetCurrentState();
+    }
+
+
+    // ============================================================================
+/*
+    bool ProcessReconnection(const list<ReconnectionSlot>::iterator &it)
+    {
+        auto board = GetSlot(it->slot);
+        if (board==fBoards.end())
+            return false;
+
+        ConnectionFAD *fad  = board->second;
+
+        // ----------------------------------------------
+        // Disconnect
+        // ----------------------------------------------
+        if (it->state==0)
+        {
+            if (!fad->IsConnected())
+                return false;
+
+            EnableConnection(fad, false);
+            ConnectSlot(it->slot, tcp::endpoint());
+
+            it->time  = Time();
+            it->state = 1;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for disconnect or timeout
+        // ----------------------------------------------
+        if (it->state==1)
+        {
+            if (!fad->IsDisconnected() && it->time+boost::posix_time::seconds(10)>Time())
+                return true;
+
+            it->time  = Time();
+            it->state = 2;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for timeout after disconnect / Re-connect
+        // ----------------------------------------------
+        if (it->state==2)
+        {
+            if (it->time+boost::posix_time::seconds(3)>Time())
+                return true;
+
+            EnableConnection(fad, true);
+            ConnectSlot(it->slot, fad->GetEndpoint());
+
+            it->time  = Time();
+            it->state = 3;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for connect or timeout / Re-start
+        // ----------------------------------------------
+        if (!fad->IsConnected() && it->time+boost::posix_time::seconds(10)>Time())
+            return true;
+
+        // 'Fix' the information which got lost during re-connection
+        fad->Cmd(FAD::kCmdBusyOff,     false);
+        fad->Cmd(FAD::kCmdSocket,      false);
+        fad->Cmd(FAD::kCmdTriggerLine, true);
+
+        return false;
+    }
+*/
+    // ============================================================================
+
+    vector<uint8_t> fStatus1;
+    vector<uint8_t> fStatus2;
+    bool            fStatusT;
+
+    int Execute()
+    {
+        // ===== Evaluate connection status =====
+
+        uint16_t nclosed1     = 0;
+        uint16_t nconnecting1 = 0;
+        uint16_t nconnecting2 = 0;
+        uint16_t nconnected1  = 0;
+        uint16_t nconnected2  = 0;
+        uint16_t nconfigured  = 0;
+
+        vector<uint8_t> stat1(40);
+        vector<uint8_t> stat2(40);
+
+        int cnt = 0; // counter for enabled board
+
+        const bool runs = IsThreadRunning();
+
+        for (int idx=0; idx<40; idx++)
+        {
+            // ----- Command socket -----
+            const BoardList::const_iterator &slot = fBoards.find(idx);
+            if (slot!=fBoards.end())
+            {
+                const ConnectionFAD *c = slot->second;
+                if (c->IsDisconnected())
+                {
+                    stat1[idx] = 0;
+                    nclosed1++;
+
+                    //DisconnectSlot(idx);
+                }
+                if (c->IsConnecting())
+                {
+                    stat1[idx] = 1;
+                    nconnecting1++;
+                }
+                if (c->IsConnected())
+                {
+                    stat1[idx] = 2;
+                    nconnected1++;
+
+                    if (c->IsConfigured())
+                    {
+                        stat1[idx] = 3;
+                        nconfigured++;
+                    }
+                }
+
+                cnt++;
+            }
+
+            // ----- Event builder -----
+
+            stat2[idx] = 0; // disconnected
+            if (!runs)
+                continue;
+
+            if (IsConnecting(idx))
+            {
+                nconnecting2++;
+                stat2[idx] = 1; // connecting
+            }
+
+            if (IsConnected(idx))
+            {
+                nconnected2++;
+                stat2[idx] = 8; // connected
+            }
+        }
+
+        // ===== Send connection status via dim =====
+
+        if (fStatus1!=stat1 || fStatus2!=stat2 || fStatusT!=runs)
+        {
+            fStatus1 = stat1;
+            fStatus2 = stat2;
+            fStatusT = runs;
+            UpdateConnectionStatus(stat1, stat2, runs);
+        }
+
+        // ===== Return connection status =====
+
+        // Keep the state during reconnection (theoretically, can only be WritingData)
+/*        if (fReconnectionList.size()>0)
+        {
+            bool isnew = true;
+            for (auto it=fReconnectionList.begin(); it!=fReconnectionList.end(); it++)
+                if (it->state>0)
+                {
+                    isnew = false;
+                    break;
+                }
+
+            if (isnew)
+            {
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdBusyOn, true);  // continously on
+            }
+
+            // Loop over all scheduled re-connections
+            for (auto it=fReconnectionList.begin(); it!=fReconnectionList.end(); it++)
+            {
+                if (ProcessReconnection(it))
+                    continue;
+
+                const lock_guard<mutex> guard(fMutexReconnect);
+                fReconnectionList.erase(it);
+            }
+
+            if (fReconnectionList.size()==0)
+            {
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdBusyOff, false);
+            }
+
+            return T::GetCurrentState();
+        }
+*/
+        // fadctrl:       Always connecting if not disabled
+        // event builder:
+        if (nconnecting1==0 && nconnected1>0 && nconnected2==nconnected1)
+        {
+            if (T::GetCurrentState()==FAD::State::kConfiguring1)
+            {
+                // Wait until the configuration commands to all boards
+                // have been sent and achknowledged
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    if (!it->second->IsTxQueueEmpty())
+                        return FAD::State::kConfiguring1;
+
+                // Note that if there are less than 40 boards, this
+                // can be so fast that the single trigger still
+                // comes to early, and a short watiting is necessary :(
+
+                // Now we can sent the trigger
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdSingleTrigger);
+
+                return FAD::State::kConfiguring2;
+            }
+
+            // If all boards are configured and we are configuring
+            // go on and start the FADs
+            if (T::GetCurrentState()==FAD::State::kConfiguring2)
+            {
+                // If not all boards have yet received the proper
+                // configuration
+                if (nconfigured!=nconnected1)
+                    return FAD::State::kConfiguring2;
+
+                // FIXME: Distinguish between not all boards have received
+                // the configuration and the configuration is not consistent
+
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                {
+                    ConnectionFAD &fad  = *it->second;
+
+                    // Make sure that after switching on the trigger line
+                    // there needs to be some waiting before all boards
+                    // can be assumed to be listening
+                    fad.Cmd(FAD::kCmdResetEventCounter);
+                    fad.Cmd(FAD::kCmdSocket,      false);
+                    //fad.Cmd(FAD::kCmdTriggerLine, true);
+                    if (fTargetConfig->second.fContinousTrigger)
+                        fad.Cmd(FAD::kCmdContTrigger, true);
+                    fad.Cmd(FAD::kCmdBusyOn,      false);  // continously on
+
+                    // FIXME: How do we find out when the FADs
+                    //        successfully enabled the trigger lines?
+                }
+
+//                const lock_guard<mutex> guard(fMutexReconnect);
+//                fReconnectionList.clear();
+
+                return FAD::State::kConfiguring3;
+            }
+
+            if (T::GetCurrentState()==FAD::State::kConfiguring3)
+            {
+                // Wait until the configuration commands to all boards
+                // have been sent and achknowledged
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    if (!it->second->IsTxQueueEmpty())
+                        return FAD::State::kConfiguring3;
+
+                return FAD::State::kConfigured;
+            }
+
+            if (T::GetCurrentState()==FAD::State::kConfigured)
+            {
+                // Stay in Configured as long as we have a valid
+                // configuration and the run has not yet been started
+                // (means the the event builder has received its
+                // first event)
+                if (IsRunWaiting() && nconfigured==nconnected1)
+                    return FAD::State::kConfigured;
+
+                if (!IsRunWaiting())
+                    T::Message("Run successfully started... first data received.");
+                if (nconfigured!=nconnected1)
+                    T::Message("Configuration of some boards changed.");
+            }
+
+            // FIXME: Rename WritingData to TakingData
+            return IsRunInProgress() ? FAD::State::kRunInProgress : FAD::State::kConnected;
+        }
+
+        if (nconnecting1>0 || nconnecting2>0 || nconnected1!=nconnected2)
+            return FAD::State::kConnecting;
+
+        // nconnected1 == nconnected2 == 0
+        return runs ? FAD::State::kDisconnected : FAD::State::kOffline;
+    }
+
+    void AddEndpoint(const tcp::endpoint &addr)
+    {
+        int i=0;
+        while (i<40)
+        {
+            if (fBoards.find(i)==fBoards.end())
+                break;
+            i++;
+        }
+
+        if (i==40)
+        {
+            T::Warn("Not more than 40 slots allowed.");
+            return;
+        }
+
+        ConnectionFAD *fad = new ConnectionFAD(*this, *this, i);
+
+        fad->SetEndpoint(addr);
+        fad->SetVerbose(fIsVerbose);
+        fad->SetHexOutput(fIsHexOutput);
+        fad->SetDataOutput(fIsDataOutput);
+        fad->SetDebugTx(fDebugTx);
+
+        fBoards[i] = fad;
+    }
+
+
+    DimDescribedService fDimStartRun;
+    DimDescribedService fDimConnection;
+
+    void UpdateConnectionStatus(const vector<uint8_t> &stat1, const vector<uint8_t> &stat2, bool thread)
+    {
+        vector<uint8_t> stat(41);
+
+        for (int i=0; i<40; i++)
+            stat[i] = stat1[i]|(stat2[i]<<3);
+
+        stat[40] = thread;
+
+        fDimConnection.Update(stat);
+    }
+
+public:
+    StateMachineFAD(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FAD_CONTROL"),
+        EventBuilderWrapper(*static_cast<MessageImp*>(this)),
+        fStatus1(40), fStatus2(40), fStatusT(false),
+        fDimStartRun("FAD_CONTROL/START_RUN", "X:1;X:1",
+                                              "Run numbers"
+                                              "|run[idx]:Run no of last conf'd run (-1 if reset or none config'd yet)"
+                                              "|next[idx]:Run number which will be assigned to next configuration"),
+        fDimConnection("FAD_CONTROL/CONNECTIONS", "C:40;C:1",
+                                                  "Connection status of FAD boards"
+                                                  "|status[bitpattern]:lower bits stat1, upper bits stat2, for every board. 40=thread"
+                                                  "|thread[bool]:true or false whether the event builder threads are running")
+    {
+        ResetConfig();
+        SetOutputFormat(FAD::kNone);
+
+        // State names
+        T::AddStateName(FAD::State::kOffline, "Disengaged",
+                        "All enabled FAD boards are disconnected and the event-builer thread is not running.");
+
+        T::AddStateName(FAD::State::kDisconnected, "Disconnected",
+                        "All enabled FAD boards are disconnected, but the event-builder thread is running.");
+
+        T::AddStateName(FAD::State::kConnecting, "Connecting",
+                        "Only some enabled FAD boards are connected.");
+
+        T::AddStateName(FAD::State::kConnected, "Connected",
+                        "All enabled FAD boards are connected..");
+
+        T::AddStateName(FAD::State::kConfiguring1, "Configuring1",
+                        "Waiting 3 seconds for all FADs to be configured before requesting configuration.");
+
+        T::AddStateName(FAD::State::kConfiguring2, "Configuring2",
+                        "Waiting until all boards returned their configuration and they are valid.");
+
+        T::AddStateName(FAD::State::kConfiguring3, "Configuring3",
+                        "Waiting until 'enable trigger line' was sent to all boards.");
+
+        T::AddStateName(FAD::State::kConfigured, "Configured",
+                        "The configuration of all boards was successfully cross checked. Waiting for events with a new run number to receive.");
+
+        T::AddStateName(FAD::State::kRunInProgress, "RunInProgress",
+                        "Events currently received by the event builder will be flagged to be written, no end-of-run event occured yet.");
+
+        // FAD Commands
+        T::AddEvent("SEND_CMD", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendCmd, this, placeholders::_1))
+            ("Send a command to the FADs. Values between 0 and 0xffff are allowed."
+             "|command[uint16]:Command to be transmittted.");
+        T::AddEvent("SEND_DATA", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendCmdData, this, placeholders::_1))
+            ("Send a command with data to the FADs. Values between 0 and 0xffff are allowed."
+             "|command[uint16]:Command to be transmittted."
+             "|data[uint16]:Data to be sent with the command.");
+
+        T::AddEvent("ENABLE_SRCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSrclk))
+            ("Set SRCLK");
+        T::AddEvent("ENABLE_BUSY_OFF", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOff))
+            ("Set BUSY continously low");
+        T::AddEvent("ENABLE_BUSY_ON", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOn))
+            ("Set BUSY constantly high (has priority over BUSY_OFF)");
+        T::AddEvent("ENABLE_SCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSclk))
+            ("Set SCLK");
+        T::AddEvent("ENABLE_DRS", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDrsEnable))
+            ("Switch Domino wave");
+        T::AddEvent("ENABLE_DWRITE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDwrite))
+            ("Set Dwrite (possibly high / always low)");
+        T::AddEvent("ENABLE_CONTINOUS_TRIGGER", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdContTrigger))
+            ("Enable continous (internal) trigger.");
+        T::AddEvent("ENABLE_TRIGGER_LINE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdTriggerLine))
+            ("Incoming triggers can be accepted/will not be accepted");
+        T::AddEvent("ENABLE_COMMAND_SOCKET_MODE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSocket))
+            ("Set debug mode (yes: dump events through command socket, no=dump events through other sockets)");
+
+        T::AddEvent("SET_TRIGGER_RATE", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetTriggerRate, this, placeholders::_1))
+            ("Enable continous trigger");
+        T::AddEvent("SEND_SINGLE_TRIGGER")
+            (bind(&StateMachineFAD::Trigger, this, 1))
+            ("Issue software triggers");
+        T::AddEvent("SEND_N_TRIGGERS", "I", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendTriggers, this, placeholders::_1))
+            ("Issue N software triggers (note that these are the triggers sent, not the triggers executed)"
+             "|N[int]: Number of triggers to be sent to the board.");
+        /*
+        T::AddEvent("START_RUN", "", FAD::kConnecting, FAD::kConnected, FAD::kRunInProgress)
+            (bind(&StateMachineFAD::StartRun, this, placeholders::_1, true))
+            ("Set FAD DAQ mode. when started, no configurations must be send.");
+        T::AddEvent("STOP_RUN", FAD::kConnecting, FAD::kConnected, FAD::kRunInProgress)
+            (bind(&StateMachineFAD::StartRun, this, placeholders::_1, false))
+            ("");
+            */
+        T::AddEvent("PHASE_SHIFT", "S:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::PhaseShift, this, placeholders::_1))
+            ("Adjust ADC phase (in 'steps')"
+             "|phase[short]");
+
+        T::AddEvent("RESET_EVENT_COUNTER", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Cmd, this, FAD::kCmdResetEventCounter))
+            ("Reset the FAD boards' event counter to 0.");
+
+        T::AddEvent("SET_RUN_NUMBER", "X:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRunNumber, this, placeholders::_1))
+            ("Sent a new run-number to the boards"
+             "|num[int]:Run number");
+
+        T::AddEvent("SET_MAX_MEMORY", "S:1")
+            (bind(&StateMachineFAD::SetMaxMemoryBuffer, this, placeholders::_1))
+            ("Set maximum memory buffer size allowed to be consumed by the EventBuilder to buffer events."
+             "|memory[short]:Buffer size in Mega-bytes.");
+
+        T::AddEvent("SET_EVENT_TIMEOUT", "S:1")
+            (bind(&StateMachineFAD::SetEventTimeoutSec, this, placeholders::_1))
+            ("Set the timeout after which an event expires which was not completely received yet."
+             "|timeout[sec]:Timeout in seconds [1;32767]");
+
+        T::AddEvent("SET_REGISTER", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRegister, this, placeholders::_1))
+            ("set register to value"
+            "|addr[short]:Address of register"
+            "|val[short]:Value to be set");
+
+        // FIXME:  Maybe add a mask which channels should be set?
+        T::AddEvent("SET_REGION_OF_INTEREST", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRoi, this, placeholders::_1))
+            ("Set region-of-interest to value"
+            "|channel[short]:Channel on each chip for which the ROI is set (0-8), -1 for all"
+            "|val[short]:Value to be set");
+
+        // FIXME:  Maybe add a mask which channels should be set?
+        T::AddEvent("SET_DAC_VALUE", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetDac, this, placeholders::_1))
+            ("Set DAC numbers in range to value"
+            "|addr[short]:Address of register (-1 for all)"
+            "|val[short]:Value to be set");
+
+        T::AddEvent("CONFIGURE", "X:2;C", FAD::State::kConnected, FAD::State::kConfigured, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::StartConfigure, this, placeholders::_1))
+            ("Configure a new run. If the internla trigger is enabled this might even start a new run."
+             "|time_max[s]:Maximum time before the run is closed in seconds (0: unlimited)"
+             "|num_max[int]:Maximum number of events before the run is closed in seconds (0: unlimited)"
+             "|run_type[string]:Run type which describes the runs");
+
+        T::AddEvent("RESET_CONFIGURE", FAD::State::kConfiguring1, FAD::State::kConfiguring2, FAD::State::kConfiguring3, FAD::State::kConfigured)
+            (bind(&StateMachineFAD::ResetConfig, this))
+            ("If configuration failed and the fadctrl is waiting for something, use this to reset the state.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFAD::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("SET_HEX_OUTPUT", "B:1")
+            (bind(&StateMachineFAD::SetHexOutput, this, placeholders::_1))
+            ("Enable or disable hex output for received data"
+             "|hexout[bool]:disable or enable hex output for received data (yes/no)");
+
+        T::AddEvent("SET_DATA_OUTPUT", "B:1")
+            (bind(&StateMachineFAD::SetDataOutput, this, placeholders::_1))
+            ("Enable or disable printing of the received adc data to the console"
+             "|dataout[bool]:disable or enable data output for received data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_TX", "B:1")
+            (bind(&StateMachineFAD::SetDebugTx, this, placeholders::_1))
+	    ("Enable or disable the output of messages in case of successfull data transmission to the boards."
+	     "|debug[bool]:disable or enable debug output for transmitted data (yes/no)");
+
+        T::AddEvent("PRINT_EVENT", "S:1")
+            (bind(&StateMachineFAD::PrintEvent, this, placeholders::_1))
+            ("Print (last) event"
+             "|board[short]:slot from which the event should be printed (-1 for all)");
+
+        T::AddEvent("BLOCK_TRANSMISSION", "S:1;B:1")
+            (bind(&StateMachineFAD::SetBlockTransmission, this, placeholders::_1))
+            ("Blocks the transmission of commands to the given slot. Use with care! For debugging pupose only!"
+             "|slot[short]:Slot to which the command transmission should be blocked (0-39)"
+             "|enable[bool]:Whether the command transmission should be blockes (yes) or allowed (no)");
+
+        T::AddEvent("BLOCK_TRANSMISSION_RANGE", "S:2;B:1")
+            (bind(&StateMachineFAD::SetBlockTransmissionRange, this, placeholders::_1))
+            ("Blocks the transmission of commands to the given range of slots. Use with care! For debugging pupose only!"
+             "|first[short]:First slot to which the command transmission should be blocked (0-39)"
+             "|last[short]:Last slot to which the command transmission should be blocked (0-39)"
+             "|enable[bool]:Whether the command transmission should be blockes (yes) or allowed (no)");
+
+        T::AddEvent("IGNORE_EVENTS", "S:1;B:1")
+            (bind(&StateMachineFAD::SetIgnoreSlot, this, placeholders::_1))
+            ("Instructs the event-builder to ignore events from the given slot but still read the data from the socket."
+             "|slot[short]:Slot from which the data should be ignored when building events"
+             "|enable[bool]:Whether the event builder should ignore data from this slot (yes) or allowed (no)");
+
+        T::AddEvent("IGNORE_EVENTS_RANGE", "S:2;B:1")
+            (bind(&StateMachineFAD::SetIgnoreSlots, this, placeholders::_1))
+            ("Instructs the event-builder to ignore events from the given slot but still read the data from the socket."
+             "|first[short]:First slot from which the data should be ignored when building events"
+             "|last[short]:Last slot from which the data should be ignored when building events"
+             "|enable[bool]:Whether the event builder should ignore data from this slot (yes) or allowed (no)");
+
+        T::AddEvent("CLOSE_OPEN_FILES", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CloseOpenFiles, this))
+            ("Close all run files opened by the EventBuilder.");
+
+        //T::AddEvent("TEST", "S:1")
+        //   (bind(&StateMachineFAD::Test, this, placeholders::_1))
+        //    ("");
+
+
+
+        // Conenction commands
+        T::AddEvent("START", FAD::State::kOffline)
+            (bind(&StateMachineFAD::StartConnection, this))
+            ("Start EventBuilder thread and connect all valid slots.");
+
+        T::AddEvent("STOP",  FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::StopConnection, this))
+            ("Stop EventBuilder thread (still write buffered events) and disconnect all slots.");
+
+        T::AddEvent("ABORT", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::AbortConnection, this))
+            ("Immediately abort EventBuilder thread and disconnect all slots.");
+
+        T::AddEvent("SOFT_RESET", FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Reset, this, true))
+            ("Wait for buffers to drain, close all files and reinitialize event builder thread.");
+
+        T::AddEvent("HARD_RESET", FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Reset, this, false))
+            ("Free all buffers, close all files and reinitialize event builder thread.");
+
+        T::AddEvent("CONNECT", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, true))
+            ("Connect a disconnected slot.");
+
+        T::AddEvent("DISCONNECT", "S:1", FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, false))
+            ("Disconnect a connected slot.");
+
+        T::AddEvent("TOGGLE", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::ToggleSlot, this, placeholders::_1))
+            ("Toggle the status of a slot.");
+
+        T::AddEvent("SET_FILE_FORMAT", "S:1")
+            (bind(&StateMachineFAD::SetFileFormat, this, placeholders::_1))
+            ("Set the output file format (see FAD::FileFormat_t)");
+
+        T::AddEvent("START_DRS_CALIBRATION")
+            (bind(&StateMachineFAD::StartDrsCalibration, this))
+            ("Start a drs calibration (shortcut for SET_FILEFORMAT 4)");
+
+        T::AddEvent("RESET_SECONDARY_DRS_BASELINE")
+            (bind(&StateMachineFAD::ResetSecondaryDrsBaseline, this))
+            ("Reset the secondary drs baseline (e.g. to change roi)");
+
+        T::AddEvent("LOAD_DRS_CALIBRATION", "C")
+            (bind(&StateMachineFAD::LoadDrsCalibration, this, placeholders::_1))
+            ("Load a DRS calibration file"
+             "|absolute path");
+
+
+        // --------- Setup compression of FITS files -----------
+        T::AddEvent("SET_ZFITS_DEFAULT_NUM_THREADS", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultNumThreads))
+            ("Set the number of compression threads to use (+1 for writing)"
+             "|num[int]:Number of threads");
+        T::AddEvent("SET_ZFITS_DEFAULT_MAX_MEMORY", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultMaxMemory))
+            ("Set the maximum amount of memory zfits will use for compression"
+             "|mem[int]:Memory in MB");
+        T::AddEvent("SET_ZFITS_DEFAULT_NUM_TILES", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultMaxNumTiles))
+            ("Set the number of tiles with which the catalog is initialized"
+             "|num[int]:Number of tiles");
+        T::AddEvent("SET_ZFITS_DEFAULT_ROWS_PER_TILE", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultNumRowsPerTile))
+            ("Set the number of rows which are compressed into one tile"
+             "|num[int]:Number of rows per tile");
+
+
+        T::AddEvent("ADD_ADDRESS", "C", FAD::State::kOffline)
+            (bind(&StateMachineFAD::AddAddress, this, placeholders::_1))
+            ("Add the address of a DRS4 board to the first free slot"
+             "|IP[string]:address in the format <address:port>");
+        T::AddEvent("REMOVE_SLOT", "S:1", FAD::State::kOffline)
+            (bind(&StateMachineFAD::RemoveSlot, this, placeholders::_1))
+            ("Remove the Iaddress in slot n. For a list see LIST"
+             "|slot[short]:Remove the address in slot n from the list");
+        T::AddEvent("LIST_SLOTS")
+            (bind(&StateMachineFAD::ListSlots, this))
+            ("Print a list of all available board addressesa and whether they are enabled");
+    }
+
+    ~StateMachineFAD()
+    {
+        for (BoardList::const_iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            delete i->second;
+        fBoards.clear();
+    }
+
+    tcp::endpoint GetEndpoint(const string &base)
+    {
+        const size_t p0 = base.find_first_of(':');
+        const size_t p1 = base.find_last_of(':');
+
+        if (p0==string::npos || p0!=p1)
+        {
+           T::Out() << kRed << "GetEndpoint - Wrong format ('host:port' expected)" << endl;
+           return tcp::endpoint();
+        }
+
+        tcp::resolver resolver(StateMachineAsio<T>::get_io_service());
+
+        boost::system::error_code ec;
+
+        const tcp::resolver::query query(base.substr(0, p0), base.substr(p0+1));
+        const tcp::resolver::iterator iterator = resolver.resolve(query, ec);
+
+        if (ec)
+        {
+           T::Out() << kRed << "GetEndpoint - Couldn't resolve endpoint '" << base << "': " << ec.message();
+           return tcp::endpoint();
+        }
+
+        return *iterator;
+    }
+
+    typedef map<string, FAD::Configuration> Configs;
+    Configs fConfigs;
+    Configs::const_iterator fTargetConfig;
+
+
+    template<class V>
+    bool CheckConfigVal(Configuration &conf, V max, const string &name, const string &sub)
+    {
+        if (!conf.HasDef(name, sub))
+        {
+            T::Error("Neither "+name+"default nor "+name+sub+" found.");
+            return false;
+        }
+
+        const V val = conf.GetDef<V>(name, sub);
+
+        if (val<=max)
+            return true;
+
+        ostringstream str;
+        str << name << sub << "=" << val << " exceeds allowed maximum of " << max << "!";
+        T::Error(str);
+
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- General setup ---------
+        fIsVerbose = !conf.Get<bool>("quiet");
+        fIsHexOutput = conf.Get<bool>("hex-out");
+        fIsDataOutput = conf.Get<bool>("data-out");
+        fDebugTx = conf.Get<bool>("debug-tx");
+
+        // --------- Setup compression of FITS files -----------
+        if (conf.Has("zfits.num-threads"))
+            zofits::DefaultNumThreads(conf.Get<int32_t>("zfits.num-threads"));
+        if (conf.Has("zfits.max-mem"))
+            zofits::DefaultMaxMemory(conf.Get<uint32_t>("zfits.max-mem")*1000);
+        if (conf.Has("zfits.num-tiles"))
+            zofits::DefaultMaxNumTiles(conf.Get<uint32_t>("zfits.num-tiles"));
+        if (conf.Has("zfits.num-rows"))
+            zofits::DefaultNumRowsPerTile(conf.Get<uint32_t>("zfits.num-rows"));
+
+        // ---------- Setup event builder ---------
+        SetMaxMemory(conf.Get<unsigned int>("max-mem"));
+        SetEventTimeout(conf.Get<uint16_t>("event-timeout"));
+
+        if (!InitRunNumber(conf.Get<string>("destination-folder")))
+            return 1;
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.size()==0)
+            T::Warn("No run-types defined.");
+        else
+            T::Message("Defining run-types");
+        for (vector<string>::const_iterator it=types.begin();
+             it!=types.end(); it++)
+        {
+            T::Message(" -> "+ *it);
+
+            if (fConfigs.count(*it)>0)
+            {
+                T::Error("Run-type "+*it+" defined twice.");
+                return 2;
+            }
+
+            FAD::Configuration target;
+
+            if (!CheckConfigVal<bool>(conf, true, "enable-drs.",               *it) ||
+                !CheckConfigVal<bool>(conf, true, "enable-dwrite.",            *it) ||
+                !CheckConfigVal<bool>(conf, true, "enable-continous-trigger.", *it))
+                return 3;
+
+            target.fDenable          = conf.GetDef<bool>("enable-drs.", *it);
+            target.fDwrite           = conf.GetDef<bool>("enable-dwrite.", *it);
+            target.fContinousTrigger = conf.GetDef<bool>("enable-continous-trigger.", *it);
+
+            target.fTriggerRate = 0;
+            //if (target.fContinousTrigger)
+            {
+                if (!CheckConfigVal<uint16_t>(conf, 0xffff, "trigger-rate.", *it))
+                    return 4;
+
+                target.fTriggerRate = conf.GetDef<uint16_t>("trigger-rate.", *it);
+            }
+
+            for (int i=0; i<FAD::kNumChannelsPerChip; i++)
+            {
+                ostringstream str;
+                str << "roi-ch" << i << '.';
+
+                if (!CheckConfigVal<uint16_t>(conf, FAD::kMaxRoiValue, "roi.",    *it) &&
+                    !CheckConfigVal<uint16_t>(conf, FAD::kMaxRoiValue, str.str(), *it))
+                    return 5;
+
+                target.fRoi[i] = conf.HasDef(str.str(), *it) ?
+                    conf.GetDef<uint16_t>(str.str(), *it) :
+                    conf.GetDef<uint16_t>("roi.",    *it);
+            }
+
+            for (int i=0; i<FAD::kNumDac; i++)
+            {
+                ostringstream str;
+                str << "dac-" << i << '.';
+
+                if (!CheckConfigVal<uint16_t>(conf, FAD::kMaxDacValue, "dac.",    *it) &&
+                    !CheckConfigVal<uint16_t>(conf, FAD::kMaxDacValue, str.str(), *it))
+                    return 6;
+
+                target.fDac[i] = conf.HasDef(str.str(), *it) ?
+                    conf.GetDef<uint16_t>(str.str(), *it) :
+                    conf.GetDef<uint16_t>("dac.",    *it);
+            }
+
+            fConfigs[*it] = target;
+        }
+
+        // FIXME: Add a check about unsused configurations
+
+        // ---------- Setup board addresses for fake-fad ---------
+
+        if (conf.Has("debug-addr"))
+        {
+            const string addr = conf.Get<string>("debug-addr");
+            const int    num  = conf.Get<unsigned int>("debug-num");
+
+            const tcp::endpoint endpoint = GetEndpoint(addr);
+            if (endpoint==tcp::endpoint())
+                return 7;
+
+            for (int i=0; i<num; i++)
+                AddEndpoint(tcp::endpoint(endpoint.address(), endpoint.port()+8*i));
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+        }
+
+        // ---------- Setup board addresses for the real camera ---------
+
+        if (conf.Has("base-addr"))
+        {
+            string base = conf.Get<string>("base-addr");
+
+            if (base=="def" || base =="default")
+                base = "10.0.128.128:31919";
+
+            const tcp::endpoint endpoint = GetEndpoint(base);
+            if (endpoint==tcp::endpoint())
+                return 8;
+
+            const ba::ip::address_v4::bytes_type ip = endpoint.address().to_v4().to_bytes();
+
+            if (ip[2]>250 || ip[3]>244)
+            {
+                T::Out() << kRed << "EvalConfiguration - IP address given by --base-addr out-of-range." << endl;
+                return 9;
+            }
+
+            for (int crate=0; crate<4; crate++)
+                for (int board=0; board<10; board++)
+                {
+                    ba::ip::address_v4::bytes_type target = endpoint.address().to_v4().to_bytes();
+                    target[2] += crate;
+                    target[3] += board;
+
+                    AddEndpoint(tcp::endpoint(ba::ip::address_v4(target), endpoint.port()));
+                }
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+
+        }
+
+        // ---------- Setup board addresses one by one ---------
+
+        if (conf.Has("addr"))
+        {
+            const vector<string> addrs = conf.Vec<string>("addr");
+            for (vector<string>::const_iterator i=addrs.begin(); i<addrs.end(); i++)
+            {
+                const tcp::endpoint endpoint = GetEndpoint(*i);
+                if (endpoint==tcp::endpoint())
+                    return 10;
+
+                AddEndpoint(endpoint);
+            }
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+        }
+        return -1;
+    }
+
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFAD<S>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FAD control options");
+    control.add_options()
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages in clear text.")
+        ("hex-out",  po_bool(), "Enable printing contents of all printed messages also as hex data.")
+        ("data-out", po_bool(), "Enable printing received event data.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    po::options_description connect("FAD connection options");
+    connect.add_options()
+        ("addr",        vars<string>(), "Network address of FAD")
+        ("base-addr",   var<string>(),  "Base address of all FAD")
+        ("debug-num,n", var<unsigned int>(40),  "Sets the number of fake boards to be connected locally")
+        ("debug-addr",  var<string>(),  "")
+        ("start",       po_bool(false), "Start the connction immediately after boot")
+        ;
+
+    po::options_description builder("Event builder options");
+    builder.add_options()
+        ("max-mem",            var<unsigned int>(100), "Maximum memory the event builder thread is allowed to consume for its event buffer")
+        ("event-timeout",      var<uint16_t>(30),      "After how many seconds is an event considered to be timed out? (<=0: disabled)")
+        ("destination-folder", var<string>(""),        "Destination folder (base folder) for the event builder binary data files.")
+        ;
+
+    po::options_description zfits("FITS compression options");
+    zfits.add_options()
+        ("zfits.num-threads", var<int32_t>(),  "Number of threads to spawn writing compressed FITS files")
+        ("zfits.max-mem",     var<uint32_t>(), "Maximum amount of memory to be allocated by FITS compression in MB")
+        ("zfits.num-tiles",   var<uint32_t>(), "Maximum number of tiles in the catalog")
+        ("zfits.num-rows",    var<uint32_t>(), "Maximum number of rows per tile")
+        ;
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",                     vars<string>(),        "Run type, e.g. data, pedestal, drs-calibration, light-pulser")
+        ("enable-dwrite.*",              var<bool>(),           "")
+        ("enable-drs.*",                 var<bool>(),           "")
+        ("enable-continous-trigger.*",   var<bool>(),           "")
+        ("trigger-rate.*",               var<uint16_t>(),       "")
+        ("dac.*",                        var<uint16_t>(),       "")
+        ("dac-0.*",                      var<uint16_t>(),       "")
+        ("dac-1.*",                      var<uint16_t>(),       "")
+        ("dac-2.*",                      var<uint16_t>(),       "")
+        ("dac-3.*",                      var<uint16_t>(),       "")
+        ("dac-4.*",                      var<uint16_t>(),       "")
+        ("dac-5.*",                      var<uint16_t>(),       "")
+        ("dac-6.*",                      var<uint16_t>(),       "")
+        ("dac-7.*",                      var<uint16_t>(),       "")
+        ("roi.*",                        var<uint16_t>(),       "")
+        ("roi-ch0.*",                    var<uint16_t>(),       "")
+        ("roi-ch1.*",                    var<uint16_t>(),       "")
+        ("roi-ch2.*",                    var<uint16_t>(),       "")
+        ("roi-ch3.*",                    var<uint16_t>(),       "")
+        ("roi-ch4.*",                    var<uint16_t>(),       "")
+        ("roi-ch5.*",                    var<uint16_t>(),       "")
+        ("roi-ch6.*",                    var<uint16_t>(),       "")
+        ("roi-ch7.*",                    var<uint16_t>(),       "")
+        ("roi-ch8.*",                    var<uint16_t>(),       "")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(control);
+    conf.AddOptions(connect);
+    conf.AddOptions(builder);
+    conf.AddOptions(zfits);
+    conf.AddOptions(runtype);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The fadctrl controls the FAD boards.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fadctrl [-c type] [OPTIONS]\n"
+        "  or:  fadctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFAD<StateMachine>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+//    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine>(conf);
+//            else
+                return RunShell<LocalStream, StateMachineDim>(conf);
+        }
+
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+/*    catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/feedback.cc
===================================================================
--- branches/FACT++_part_filenames/src/feedback.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/feedback.cc	(revision 18732)
@@ -0,0 +1,1464 @@
+#include <valarray>
+#include <algorithm>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFSC.h"
+#include "HeadersBIAS.h"
+#include "HeadersFeedback.h"
+
+#include "DimState.h"
+#include "DimDescriptionService.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class StateMachineFeedback : public StateMachineDim
+{
+private:
+    PixelMap fMap;
+
+    bool fIsVerbose;
+
+    DimVersion fDim;
+
+    DimDescribedState fDimFSC;
+    DimDescribedState fDimBias;
+
+    DimDescribedService fDimCalibration;
+    DimDescribedService fDimCalibration2;
+    DimDescribedService fDimCalibrationR8;
+    DimDescribedService fDimCurrents;
+    DimDescribedService fDimOffsets;
+
+    vector<float>    fCalibCurrentMes[6]; // Measured calibration current at six different levels
+    vector<float>    fCalibVoltage[6];    // Corresponding voltage as reported by biasctrl
+
+    vector<int64_t>  fCurrentsAvg;
+    vector<int64_t>  fCurrentsRms;
+
+    vector<float>    fVoltGapd;     // Nominal breakdown voltage + 1.1V
+    vector<float>    fBiasVolt;     // Output voltage as reported by bias crate (voltage between R10 and R8)
+    vector<float>    fBiasR9;       // 
+    vector<uint16_t> fBiasDac;      // Dac value corresponding to the voltage setting
+
+    vector<float>    fCalibration;
+    vector<float>    fCalibDeltaI;
+    vector<float>    fCalibR8;
+
+     int64_t fCursorCur;
+
+    Time fTimeCalib;
+    Time fTimeTemp;
+    Time fTimeCritical;
+
+    double fUserOffset;
+    double fVoltageReduction;
+    vector<double> fTempOffset;
+    float fTempOffsetAvg;
+    float fTempOffsetRms;
+    double fTempCoefficient;
+    double fTemp;
+
+    vector<double> fVoltOffset;
+
+    uint16_t fMoonMode;
+
+    uint16_t fCurrentRequestInterval;
+    uint16_t fNumCalibIgnore;
+    uint16_t fNumCalibRequests;
+    uint16_t fCalibStep;
+
+    uint16_t fTimeoutCritical;
+
+    // ============================= Handle Services ========================
+
+    int HandleBiasStateChange()
+    {
+        if (fDimBias.state()==BIAS::State::kVoltageOn && GetCurrentState()==Feedback::State::kCalibrating)
+        {
+            Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+            Info("Starting calibration step "+to_string(fCalibStep));
+        }
+
+        if (fDimBias.state()==BIAS::State::kVoltageOff && GetCurrentState()>=Feedback::State::kInProgress)
+            return Feedback::State::kCalibrated;
+
+        return GetCurrentState();
+    }
+    // ============================= Handle Services ========================
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        // Disconnected
+        if (has==0)
+            return false;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    int HandleBiasNom(const EventImp &evt)
+    {
+        if (evt.GetSize()>=BIAS::kNumChannels*sizeof(float))
+        {
+            fVoltGapd.assign(evt.Ptr<float>(), evt.Ptr<float>()+BIAS::kNumChannels);
+            fBiasR9.assign(evt.Ptr<float>()+2*BIAS::kNumChannels, evt.Ptr<float>()+3*BIAS::kNumChannels);
+
+            for (int i=0; i<320; i++)
+                fVoltGapd[i] += 1.1;
+
+            Info("Nominal bias voltages and calibration resistor received.");
+        }
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasVoltage(const EventImp &evt)
+    {
+        if (evt.GetSize()>=BIAS::kNumChannels*sizeof(float))
+            fBiasVolt.assign(evt.Ptr<float>(), evt.Ptr<float>()+BIAS::kNumChannels);
+        return GetCurrentState();
+    }
+
+    int HandleBiasDac(const EventImp &evt)
+    {
+        if (evt.GetSize()>=BIAS::kNumChannels*sizeof(uint16_t))
+            fBiasDac.assign(evt.Ptr<uint16_t>(), evt.Ptr<uint16_t>()+BIAS::kNumChannels);
+        return GetCurrentState();
+    }
+
+    int HandleCameraTemp(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "HandleCameraTemp", 323*sizeof(float)))
+        {
+            fTimeTemp = Time(Time::none);
+            return GetCurrentState();
+        }
+
+        //fTempOffset = (avgt-25)*0.0561765; // [V] From Hamamatsu datasheet
+        //fTempOffset = (avgt-25)*0.05678; // [V] From Hamamatsu datasheet plus our own measurement (gein vs. temperature)
+
+        const float *ptr = evt.Ptr<float>(4);
+
+        fTimeTemp = evt.GetTime();
+        fTemp     = evt.Get<float>(321*4);
+
+        fTempOffsetAvg = (fTemp-25)*fTempCoefficient;
+        fTempOffsetRms =  evt.Get<float>(322*4)*fTempCoefficient;
+
+        fTempOffset.resize(320);
+        for (int i=0; i<320; i++)
+            fTempOffset[i] = (ptr[i]-25)*fTempCoefficient;
+
+        return GetCurrentState();
+    }
+
+    pair<vector<float>, vector<float>> AverageCurrents(const int16_t *ptr, int n)
+    {
+        if (fCursorCur++>=0)
+        {
+            for (int i=0; i<BIAS::kNumChannels; i++)
+            {
+                fCurrentsAvg[i] += ptr[i];
+                fCurrentsRms[i] += ptr[i]*ptr[i];
+            }
+        }
+
+        if (fCursorCur<n)
+            return make_pair(vector<float>(), vector<float>());
+
+        const double conv = 5e-3/4096;
+
+        vector<float> rms(BIAS::kNumChannels);
+        vector<float> avg(BIAS::kNumChannels);
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            avg[i]  = double(fCurrentsAvg[i])/fCursorCur * conv;
+            rms[i]  = double(fCurrentsRms[i])/fCursorCur * conv * conv;
+            rms[i] -= avg[i]*avg[i];
+            rms[i]  = rms[i]<0 ? 0 : sqrt(rms[i]);
+        }
+
+        return make_pair(avg, rms);
+    }
+
+    int HandleCalibration(const EventImp &evt)
+    {
+        if (fDimBias.state()!=BIAS::State::kVoltageOn)
+            return GetCurrentState();
+
+        const uint16_t dac = 256+512*fCalibStep; // Command value
+
+        // Only the channels which are no spare channels are ramped
+        // Due to the shortcut, only 319 channels are ramped, so only
+        // 320 and not 319 are expected to have the correct day setting
+        if (std::count(fBiasDac.begin(), fBiasDac.end(), dac)!=319/*320*/)
+            return GetCurrentState();
+
+        const auto rc = AverageCurrents(evt.Ptr<int16_t>(), fNumCalibRequests);
+        if (rc.first.size()==0)
+        {
+            Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+            return GetCurrentState();
+        }
+
+        const vector<float> &avg = rc.first;
+        const vector<float> &rms = rc.second;
+
+        // Current through resistor R8
+        fCalibCurrentMes[fCalibStep] = avg;       // [A]
+        fCalibVoltage[fCalibStep]    = fBiasVolt; // [V]
+
+        // ------------------------- Update calibration data --------------------
+
+        struct cal_data
+        {
+            uint32_t dac;
+            float    U[BIAS::kNumChannels];
+            float    Iavg[BIAS::kNumChannels];
+            float    Irms[BIAS::kNumChannels];
+
+            cal_data() { memset(this, 0, sizeof(cal_data)); }
+        } __attribute__((__packed__));
+
+        cal_data cal;
+        cal.dac = dac;
+        memcpy(cal.U,    fBiasVolt.data(), BIAS::kNumChannels*sizeof(float));
+        memcpy(cal.Iavg, avg.data(),       BIAS::kNumChannels*sizeof(float));
+        memcpy(cal.Irms, rms.data(),       BIAS::kNumChannels*sizeof(float));
+
+        fDimCalibration2.setData(cal);
+        fDimCalibration2.Update(fTimeCalib);
+
+        // -------------------- Start next calibration steo ---------------------
+
+        if (++fCalibStep<6)
+        {
+            fCursorCur  = -fNumCalibIgnore;
+            fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+            fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+            // Ramp all channels to the calibration setting except the one
+            // with a shortcut
+            vector<uint16_t> vec(BIAS::kNumChannels, uint16_t(256+512*fCalibStep));
+            vec[272] = 0;
+            Dim::SendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_DAC", vec);
+
+            //Dim::SendCommandNB("BIAS_CONTROL/SET_GLOBAL_DAC", uint16_t(256+512*fCalibStep));
+
+            return GetCurrentState();
+        }
+
+        // --------------- Calculate old style calibration ----------------------
+
+        fCalibration.resize(BIAS::kNumChannels*4);
+
+        float *pavg  = fCalibration.data();
+        float *prms  = fCalibration.data()+BIAS::kNumChannels;
+        float *pres  = fCalibration.data()+BIAS::kNumChannels*2;
+        float *pUmes = fCalibration.data()+BIAS::kNumChannels*3;
+
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            const double I = fCalibCurrentMes[5][i]; // [A]
+            const double U = fBiasVolt[i];           // [V]
+
+            pavg[i]  = I*1e6;                        // [uA]
+            prms[i]  = rms[i]*1e6;                   // [uA]
+            pres[i]  = U/I;                          // [Ohm]
+            pUmes[i] = U;                            // [V]
+        }
+
+        fDimCalibration.setData(fCalibration);
+        fDimCalibration.Update(fTimeCalib);
+
+        // -------------------- New style calibration --------------------------
+
+        fCalibDeltaI.resize(BIAS::kNumChannels);
+        fCalibR8.resize(BIAS::kNumChannels);
+
+        // Linear regression of the values at 256+512*N for N={ 3, 4, 5 }
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            // x: Idac
+            // y: Iadc
+
+            double x  = 0;
+            double y  = 0;
+            double xx = 0;
+            double xy = 0;
+
+            const int beg = 3;
+            const int end = 5;
+            const int len = end-beg+1;
+
+            for (int j=beg; j<=end; j++)
+            {
+                const double Idac = (256+512*j)*1e-3/4096;
+
+                x  += Idac;
+                xx += Idac*Idac;
+                y  += fCalibCurrentMes[j][i];
+                xy += fCalibCurrentMes[j][i]*Idac;
+            }
+
+            const double m1 = xy - x*y / len;
+            const double m2 = xx - x*x / len;
+
+            const double m = m2==0 ? 0 : m1/m2;
+
+            const double t = (y - m*x) / len;
+
+            fCalibDeltaI[i] = t;     // [A]
+            fCalibR8[i]     = 100/m; // [Ohm]
+        }
+
+        vector<float> v;
+        v.reserve(BIAS::kNumChannels*2);
+        v.insert(v.end(), fCalibDeltaI.begin(), fCalibDeltaI.end());
+        v.insert(v.end(), fCalibR8.begin(),     fCalibR8.end());
+
+        fDimCalibrationR8.setData(v);
+        fDimCalibrationR8.Update(fTimeCalib);
+
+        // ---------------------------------------------------------------------
+
+        Info("Calibration successfully done.");
+        Dim::SendCommandNB("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+
+        return Feedback::State::kCalibrated;
+    }
+
+    int CheckLimits(const float *I)
+    {
+        const float fAbsoluteMedianCurrentLimit   = 85;
+        const float fRelativePixelCurrentLimit3   = 20;
+        const float fRelativePixelCurrentLimit0   = 45;
+
+        const float fAbsolutePixelCurrentLimit3   = fAbsoluteMedianCurrentLimit + fRelativePixelCurrentLimit3;
+        const float fAbsolutePixelCurrentLimit0   = fAbsoluteMedianCurrentLimit + fRelativePixelCurrentLimit0;
+
+        const float fRelativeCurrentLimitWarning  = 10;//10;
+        const float fRelativeCurrentLimitCritical = 15;//20;
+        const float fRelativeCurrentLimitShutdown = 25;
+
+        fTimeoutCritical = 3000; // 5s
+
+        // Copy the calibrated currents
+        vector<float> v(I, I+320);
+
+        // Exclude the crazy patches (that's currently the best which could be done)
+        v[66]  = 0;
+        v[191] = 0;
+        v[193] = 0;
+
+        sort(v.begin(), v.end());
+
+        const float &imax0 = v[319];
+        const float &imax3 = v[316];
+        const float &imed  = v[161];
+
+        const bool shutdown =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitShutdown ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitShutdown ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitShutdown;
+
+        const bool critical =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitCritical ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitCritical ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitCritical;
+
+        const bool warning =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitWarning ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitWarning ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitWarning;
+
+        bool standby = GetCurrentState()==Feedback::State::kOnStandby;
+
+        if (standby)
+        {
+            // On Standby
+            if (fVoltageReduction==0 &&
+                imed <fAbsoluteMedianCurrentLimit &&
+                imax3<fAbsolutePixelCurrentLimit3 &&
+                imax0<fAbsolutePixelCurrentLimit0)
+            {
+                // Currents are back at nominal value and currents are again
+                // below the current limit, switching back to standard operation.
+                return Feedback::State::kInProgress;
+            }
+        }
+
+        // Shutdown level
+        if (!standby && shutdown)
+        {
+            // Currents exceed the shutdown limit, operation is switched
+            // immediately to voltage reduced operation
+
+            // Just in case (FIXME: Is that really the right location?)
+            Dim::SendCommandNB("FAD_CONTROL/CLOSE_ALL_OPEN_FILES");
+
+            Error("Current limit for shutdown exceeded.... switching to standby mode.");
+
+            standby = true;
+        }
+
+        // Critical level
+        if (!standby && critical)
+        {
+            // This is a state transition from InProgress or Warning to Critical.
+            // Keep the transition time.
+            if (GetCurrentState()==Feedback::State::kInProgress || GetCurrentState()==Feedback::State::kWarning)
+            {
+                Info("Critical current limit exceeded.... waiting for "+to_string(fTimeoutCritical)+" ms.");
+                fTimeCritical = Time();
+            }
+
+            // Critical is only allowed for fTimeoutCritical milliseconds.
+            // After this time, the operation is changed to reduced voltage.
+            if (Time()<fTimeCritical+boost::posix_time::milliseconds(fTimeoutCritical))
+                return Feedback::State::kCritical;
+
+            // Just in case (FIXME: Is that really the right location?)
+            Dim::SendCommandNB("FAD_CONTROL/CLOSE_ALL_OPEN_FILES");
+
+            // Currents in critical state
+            Warn("Critical current limit exceeded timeout.... switching to standby mode.");
+
+            standby = true;
+        }
+
+        // Warning level (is just informational)
+        if (!standby && warning)
+            return Feedback::State::kWarning;
+
+        // keep voltage
+        return standby ? Feedback::State::kOnStandby : Feedback::State::kInProgress;
+    }
+
+    int HandleBiasCurrent(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "HandleBiasCurrent", BIAS::kNumChannels*sizeof(uint16_t)))
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()<Feedback::State::kCalibrating)
+            return GetCurrentState();
+
+        // ------------------------------- HandleCalibration -----------------------------------
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return HandleCalibration(evt);
+
+        // ---------------------- Calibrated, WaitingForData, InProgress -----------------------
+
+        // We are waiting but no valid temperature yet, go on waiting
+        if (GetCurrentState()==Feedback::State::kWaitingForData &&
+            (!fTimeTemp.IsValid() || Time()-fTimeTemp>boost::posix_time::minutes(5)))
+            return GetCurrentState();
+
+        // We are waiting but biasctrl is still in ramping (this might
+        // be the case if the feedback was started with a new overvoltage
+        // while the last ramping command was still in progress)
+        if (GetCurrentState()==Feedback::State::kWaitingForData &&
+            fDimBias.state()==BIAS::State::kRamping)
+            return GetCurrentState();
+
+        // We are already in progress but no valid temperature update anymore
+        if (GetCurrentState()>=Feedback::State::kInProgress &&
+            (!fTimeTemp.IsValid() || Time()-fTimeTemp>boost::posix_time::minutes(5)))
+        {
+            Warn("Current control in progress, but last received temperature older than 5min... switching voltage off.");
+            Dim::SendCommandNB("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+            return Feedback::State::kCalibrated;
+        }
+
+        // ---------------------- Calibrated, WaitingForData, InProgress -----------------------
+
+        const int Navg = fDimBias.state()!=BIAS::State::kVoltageOn ? 1 : 3;
+
+        const vector<float> &Imes = AverageCurrents(evt.Ptr<int16_t>(), Navg).first;
+        if (Imes.size()==0)
+            return GetCurrentState();
+
+        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+        fCurrentsRms.assign(BIAS::kNumChannels, 0);
+        fCursorCur = 0;
+
+        // -------------------------------------------------------------------------------------
+        // Inner patches to be blocked (operated below the operation voltage) in moon mode
+
+        static const array<int, 14> inner0 =
+        {{
+             62,  63, 130, 131, 132, 133, 134,
+            135, 222, 223, 292, 293, 294, 295,
+        }};
+
+        static const array<int, 23> inner1 =
+        {{
+             58,  59,  60,  61, 129, 138, 139, 140, 141, 142, 143, 218,
+            219, 220, 221, 290, 291, 298, 299, 300, 301, 302, 303,
+        }};
+
+        static const array<int, 43> inner2 =
+        {{
+             42,  43,  44,  45,  55,  56,  57,  70,  71,  78,  79,
+             96,  97,  98,  99, 102, 103, 128, 136, 137, 159, 202,
+            203, 204, 205, 214, 216, 217, 228, 230, 231, 256, 257,
+            258, 259, 262, 263, 288, 289, 296, 297, 310, 318
+        }};
+
+        // -------------------------------------------------------------------------------------
+
+        // Nominal overvoltage (w.r.t. the bias setup values)
+        const double voltageoffset = GetCurrentState()<Feedback::State::kWaitingForData ? 0 : fUserOffset;
+
+        double avg[2] = {   0,   0 };
+        double min[2] = {  90,  90 };
+        double max[2] = { -90, -90 };
+        int    num[3] = {   0,   0,   0 };
+
+        vector<double> med[3];
+        med[0].resize(BIAS::kNumChannels);
+        med[1].resize(BIAS::kNumChannels);
+        med[2].resize(BIAS::kNumChannels);
+
+        struct dim_data
+        {
+            float I[BIAS::kNumChannels];
+            float Iavg;
+            float Irms;
+            float Imed;
+            float Idev;
+            uint32_t N;
+            float Tdiff;
+            float Uov[BIAS::kNumChannels];
+            float Unom;
+            float dUtemp;
+
+            dim_data() { memset(this, 0, sizeof(dim_data)); }
+        } __attribute__((__packed__));
+
+        int Ndev[3] = { 0, 0, 0 };
+
+        dim_data data;
+
+        data.Unom   = voltageoffset;
+        data.dUtemp = fTempOffsetAvg;
+
+        vector<float> vec(BIAS::kNumChannels);
+
+        // ================================= old =======================
+        // Pixel  583: 5 31 == 191 (5)  C2 B3 P3
+        // Pixel  830: 2  2 ==  66 (4)  C0 B8 P1
+        // Pixel 1401: 6  1 == 193 (5)  C2 B4 P0
+
+        double UdrpAvg = 0;
+        double UdrpRms = 0;
+
+        for (int i=0; i<320/*BIAS::kNumChannels*/; i++)
+        {
+            const PixelMapEntry &hv = fMap.hv(i);
+            if (!hv)
+                continue;
+
+            // Check if this is a blocked channel
+            // 272 is the one with the shortcut
+            const bool blocked =
+                (fMoonMode>0 && std::find(inner0.begin(), inner0.end(), i)!=inner0.end()) ||
+                (fMoonMode>1 && std::find(inner1.begin(), inner1.end(), i)!=inner1.end()) ||
+                (fMoonMode>2 && std::find(inner2.begin(), inner2.end(), i)!=inner2.end()) ||
+                i==272;
+
+            // Number of G-APDs in this patch
+            const int N = hv.count();
+
+            // Average measured ADC value for this channel
+            // FIXME: This is a workaround for the problem with the
+            // readout of bias voltage channel 263
+            const double adc = Imes[i]/* * (5e-3/4096)*/; // [A]
+
+            // Current through ~100 Ohm measurement resistor
+            //const double I8 = (adc-fCalibDeltaI[i])*fCalibR8[i]/100;
+            const double I8 = adc-fCalibDeltaI[i];
+
+            // Current through calibration resistors (R9)
+            // This is uncalibrated, but since the corresponding calibrated
+            // value I8 is subtracted, the difference should yield a correct value
+            const double I9 = fBiasDac[i] * (1e-3/4096);//U9/R9;   [A]
+
+            // Current in R4/R5 branch
+            //const double Iout = I8 - I9;//I8>I9 ? I8 - I9 : 0;
+            const double Iout = I8 - I9*100/fCalibR8[i];//I8>I9 ? I8 - I9 : 0;
+
+            // Applied voltage at calibration resistors, according to biasctrl
+            const double U9 = fBiasVolt[i];
+
+            //          new    I8 - I9*100/fCalibR8       100
+            // change = --- = ---------------------- =  --------  = 0.8
+            //          old    I8*fCalibR8/100 - I9     fCalibR8
+
+            // Serial resistors (one 1kOhm at the output of the bias crate, one 1kOhm in the camera)
+            const double R4 = 2000;
+
+            // Serial resistor of the individual G-APDs plus 50 Ohm termination
+            double R5 = 3900./N + 50;
+
+            // This is assuming that the broken pixels have a 390 Ohm instead of 3900 Ohm serial resistor
+            if (i==66 || i==193)               // Pixel 830(66) / Pixel 583(191)
+                R5 = 1./((N-1)/3900.+1/1000.);
+            if (i==191)                        // Pixel 1399(193)
+                R5 = 1./((N-1)/3900.+1/390.);
+            if (i==17 || i==206)               // dead pixel 923(80) / dead pixel 424(927)
+                R5 = 3900./(N-1);              // cannot identify third dead pixel in light-pulser data
+
+            // The measurement resistor
+            const double R8 = 0;
+
+            // Total resistance of branch with diodes (R4+R5)
+            // Assuming that the voltage output of the OpAMP is linear
+            // with the DAC setting and not the voltage at R9, the
+            // additional voltage drop at R8 must be taken into account
+            const double R = R4 + R5 + R8;
+
+            // For the patches with a broken resistor - ignoring the G-APD resistance -
+            // we get:
+            //
+            // I[R=3900] =  Iout *      1/(10+(N-1))  = Iout        /(N+9)
+            // I[R= 390] =  Iout * (1 - 1/(10+(N-1))) = Iout * (N+8)/(N+9)
+            //
+            // I[R=390] / I[R=3900] = N+8
+            //
+            // Udrp = Iout*3900/(N+9) + Iout*1000 + Iout*1000 = Iout * R
+
+            // Voltage drop in R4/R5 branch (for the G-APDs with correct resistor)
+            // The voltage drop should not be <0, otherwise an unphysical value
+            // would be amplified when Uset is calculated.
+            const double Udrp = Iout<0 ? 0 : R*Iout;
+
+            // Nominal operation voltage with correction for temperature dependence
+            const double Uop = fVoltGapd[i] + fVoltOffset[i] + fTempOffset[i]
+                + (blocked ? -5 : 0);
+
+            // Current overvoltage (at a G-APD with the correct 3900 Ohm resistor)
+            // expressed w.r.t. to the operation voltage
+            const double Uov = (U9-Udrp)-Uop>-1.4 ? (U9-Udrp)-Uop : -1.4;
+
+            // The current through one G-APD is the sum divided by the number of G-APDs
+            // (assuming identical serial resistors)
+            double Iapd = Iout/N;
+
+            // Rtot = Uapd/Iout
+            // Ich  = Uapd/Rch = (Rtot*Iout) / Rch = Rtot/Rch * Iout
+            //
+            // Rtot = 3900/N
+            // Rch  = 3900
+            //
+            // Rtot = 1./((N-1)/3900 + 1/X)       X=390 or X=1000
+            // Rch  = 3900
+            //
+            // Rtot/Rch =   1/((N-1)/3900 + 1/X)/3900
+            // Rtot/Rch =   1/( [ X*(N-1) + 3900 ] / [ 3900 * X ])/3900
+            // Rtot/Rch =   X/( [ X*(N-1)/3900 + 1 ] )/3900
+            // Rtot/Rch =   X/( [ X*(N-1) + 3900 ] )
+            // Rtot/Rch =   1/( [ (N-1) + 3900/X ] )
+            //
+            // Rtot/Rch[390Ohm]  =  1/( [ N + 9.0 ] )
+            // Rtot/Rch[1000Ohm] =  1/( [ N + 2.9 ] )
+            //
+            // In this and the previosu case we neglect the resistance of the G-APDs, but we can make an
+            // assumption: The differential resistance depends more on the NSB than on the PDE,
+            // thus it is at least comparable for all G-APDs in the patch. In addition, although the
+            // G-APD with the 390Ohm serial resistor has the wrong voltage applied, this does not
+            // significantly influences the ohmic resistor or the G-APD because the differential
+            // resistor is large enough that the increase of the overvoltage does not dramatically
+            // increase the current flow as compared to the total current flow.
+            if (i==66 || i==193)           // Iout/13 15.8   / Iout/14  16.8
+                Iapd = Iout/(N+2.9);
+            if (i==191)                    // Iout/7.9  38.3
+                Iapd = Iout/(N+9);
+            if (i==17 || i==206)
+                Iapd = Iout/(N-1);
+
+            // The differential resistance of the G-APD, i.e. the dependence of the
+            // current above the breakdown voltage, is given by
+            //const double Rapd = Uov/Iapd;
+            // This allows us to estimate the current Iov at the overvoltage we want to apply
+            //const double Iov = overvoltage/Rapd;
+
+            // Estimate set point for over-voltage (voltage drop at the target point)
+            // This estimation is based on the linear increase of the
+            // gain with voltage and the increase of the crosstalk with
+            // voltage, as measured with the overvoltage-tests (OVTEST)
+            /*
+             Uov+0.44<0.022 ?
+                Ubd + overvoltage + Udrp*exp(0.6*(overvoltage-Uov))*pow((overvoltage+0.44), 0.6) :
+                Ubd + overvoltage + Udrp*exp(0.6*(overvoltage-Uov))*pow((overvoltage+0.44)/(Uov+0.44), 0.6);
+             */
+            const double Uset =
+                Uov+1.4<0.022 ?
+                Uop + voltageoffset + Udrp*exp(0.6*(voltageoffset-Uov))*pow((voltageoffset+1.4),           0.6) :
+                Uop + voltageoffset + Udrp*exp(0.6*(voltageoffset-Uov))*pow((voltageoffset+1.4)/(Uov+1.4), 0.6);
+
+            if (fabs(voltageoffset-Uov)>0.033)
+                Ndev[0]++;
+            if (fabs(voltageoffset-Uov)>0.022)
+                Ndev[1]++;
+            if (fabs(voltageoffset-Uov)>0.011)
+                Ndev[2]++;
+
+            // Voltage set point
+            vec[i] = Uset;
+
+            const double iapd = Iapd*1e6; // A --> uA
+
+            data.I[i]   = iapd;
+            data.Uov[i] = Uov;
+
+            if (!blocked)
+            {
+                const int g = hv.group();
+
+                med[g][num[g]] = Uov;
+                avg[g] += Uov;
+                num[g]++;
+
+                if (Uov<min[g])
+                    min[g] = Uov;
+                if (Uov>max[g])
+                    max[g] = Uov;
+
+                data.Iavg += iapd;
+                data.Irms += iapd*iapd;
+
+                med[2][num[2]++] = iapd;
+
+                UdrpAvg += Udrp;
+                UdrpRms += Udrp*Udrp;
+            }
+        }
+
+
+        // ---------------------------- Calculate statistics ----------------------------------
+
+        // average and rms
+        data.Iavg /= num[2];
+        data.Irms /= num[2];
+        data.Irms -= data.Iavg*data.Iavg;
+
+        data.N = num[2];
+        data.Irms = data.Irms<0 ? 0: sqrt(data.Irms);
+
+        // median
+        sort(med[2].data(), med[2].data()+num[2]);
+
+        data.Imed = num[2]%2 ? med[2][num[2]/2] : (med[2][num[2]/2-1]+med[2][num[2]/2])/2;
+
+        // deviation
+        for (int i=0; i<num[2]; i++)
+            med[2][i] = fabs(med[2][i]-data.Imed);
+
+        sort(med[2].data(), med[2].data()+num[2]);
+
+        data.Idev = med[2][uint32_t(0.682689477208650697*num[2])];
+
+        // time difference to calibration
+        data.Tdiff = evt.GetTime().UnixTime()-fTimeCalib.UnixTime();
+
+        // Average overvoltage
+        const double Uov = (avg[0]+avg[1])/(num[0]+num[1]);
+
+        // ------------------------------- Update voltages ------------------------------------
+
+        int newstate = GetCurrentState();
+
+        if (GetCurrentState()!=Feedback::State::kCalibrated) // WaitingForData, OnStandby, InProgress, kWarning, kCritical
+        {
+            if (fDimBias.state()!=BIAS::State::kRamping)
+            {
+                newstate = CheckLimits(data.I);
+
+                // standby and change reduction level of voltage
+                if (newstate==Feedback::State::kOnStandby)
+                {
+                    // Calculate average applied overvoltage and estimate an offset
+                    // to reach fAbsoluteMedianCurrentLimit
+                    float fAbsoluteMedianCurrentLimit = 85;
+                    const double deltaU = (Uov+1.4)*(1-pow(fAbsoluteMedianCurrentLimit/data.Imed, 1./1.7));
+
+                    if (fVoltageReduction+deltaU<0.033)
+                        fVoltageReduction = 0;
+                    else
+                    {
+                        fVoltageReduction += deltaU;
+
+                        for (int i=0; i<320; i++)
+                            vec[i] -= fVoltageReduction;
+                    }
+                }
+
+                // FIXME: What if the brightest pixel gets too bright???
+                // FIXME: What if fVolatgeReduction > U1.4V?
+
+                // set voltage in 262 -> current in 262/263
+                vec[263] = vec[262]-fVoltGapd[262]+fVoltGapd[263];
+
+                // Do not ramp the channel with a shortcut
+                vec[272] = 0;
+
+//            if (fDimBias.state()!=BIAS::State::kRamping)
+//            {
+                DimClient::sendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_VOLTAGE",
+                                         vec.data(), BIAS::kNumChannels*sizeof(float));
+
+                UdrpAvg /= 320;
+                UdrpRms /= 320;
+                UdrpRms -= UdrpAvg*UdrpAvg;
+                UdrpRms  = UdrpRms<0 ? 0 : sqrt(UdrpRms);
+
+                ostringstream msg;
+                msg << fixed;
+                msg << setprecision(2) << "dU(" << fTemp << "degC)="
+                    << setprecision(3) << fTempOffsetAvg << "V+-" << fTempOffsetRms << "  Udrp="
+                    << UdrpAvg << "V+-" << UdrpRms;
+                msg.unsetf(ios_base::floatfield);
+
+                if (fVoltageReduction==0)
+                    msg << " Unom=" << voltageoffset << "V";
+                else
+                    msg << " Ured=" << fVoltageReduction << "V";
+
+                msg << " Uov=" << Uov;
+                msg << " Imed=" << data.Imed << "uA [N=" << Ndev[0] << "/" << Ndev[1] << "/" << Ndev[2] << "]";
+                Info(msg);
+            }
+        }
+        else
+        {
+            if (fDimBias.state()==BIAS::State::kVoltageOn)
+            {
+                ostringstream msg;
+                msg << setprecision(4) << "Current status: dU(" << fTemp << "degC)=" << fTempOffsetAvg << "V+-" << fTempOffsetRms << ", Unom=" << voltageoffset << "V, Uov=" << (num[0]+num[1]>0?(avg[0]+avg[1])/(num[0]+num[1]):0) << " [N=" << Ndev[0] << "/" << Ndev[1] << "/" << Ndev[2] << "]";
+                Info(msg);
+            }
+        }
+
+        //if (GetCurrentState()>=Feedback::State::kOnStandby &&
+        //    fDimBias.state()==BIAS::State::kRamping)
+        //    return newstate;
+
+        // --------------------------------- Console out --------------------------------------
+
+        if (fIsVerbose && fDimBias.state()!=BIAS::State::kRamping)
+        {
+            sort(med[0].begin(), med[0].begin()+num[0]);
+            sort(med[1].begin(), med[1].begin()+num[1]);
+
+            ostringstream msg;
+            msg << "   Avg0=" << setw(7) << avg[0]/num[0]    << "  |  Avg1=" << setw(7) << avg[1]/num[1];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Med0=" << setw(7) << med[0][num[0]/2] << "  |  Med1=" << setw(7) << med[1][num[1]/2];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Min0=" << setw(7) << min[0]           << "  |  Min1=" << setw(7) << min[1];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Max0=" << setw(7) << max[0]           << "  |  Max1=" << setw(7) << max[1];
+            Debug(msg);
+        }
+
+        // ---------------------------- Calibrated Currents -----------------------------------
+
+        // FIXME:
+        //  + Current overvoltage
+        //  + Temp offset
+        //  + User offset
+        //  + Command overvoltage
+        fDimCurrents.setQuality(GetCurrentState());
+        fDimCurrents.setData(&data, sizeof(dim_data));
+        fDimCurrents.Update(evt.GetTime());
+
+        // FIXME: To be checked
+        return GetCurrentState()==Feedback::State::kCalibrated ? Feedback::State::kCalibrated : newstate;
+    }
+
+    // ======================================================================
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFSC << endl;
+        Out() << fDimBias << endl;
+
+        return GetCurrentState();
+    }
+
+    int PrintCalibration()
+    {
+        /*
+        if (fCalibration.size()==0)
+        {
+            Out() << "No calibration performed so far." << endl;
+            return GetCurrentState();
+        }
+
+        const float *avg = fCalibration.data();
+        const float *rms = fCalibration.data()+BIAS::kNumChannels;
+        const float *res = fCalibration.data()+BIAS::kNumChannels*2;
+
+        Out() << "Average current at " << fCalibrationOffset << "V below G-APD operation voltage:\n";
+
+        for (int k=0; k<13; k++)
+            for (int j=0; j<8; j++)
+            {
+                Out() << setw(2) << k << "|" << setw(2) << j*4 << "|";
+                for (int i=0; i<4; i++)
+                    Out() << Tools::Form(" %6.1f+-%4.1f", avg[k*32+j*4+i], rms[k*32+j*4+i]);
+                Out() << '\n';
+            }
+        Out() << '\n';
+
+        Out() << "Measured calibration resistor:\n";
+        for (int k=0; k<13; k++)
+            for (int j=0; j<4; j++)
+            {
+                Out() << setw(2) << k << "|" << setw(2) << j*8 << "|";
+                for (int i=0; i<8; i++)
+                    Out() << Tools::Form(" %5.0f", res[k*32+j*8+i]);
+                Out() << '\n';
+            }
+
+        Out() << flush;
+        */
+        return GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return kSM_FatalError;
+
+        fIsVerbose = evt.GetBool();
+
+        return GetCurrentState();
+    }
+
+    int SetCurrentRequestInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCurrentRequestInterval", 2))
+            return kSM_FatalError;
+
+        fCurrentRequestInterval = evt.GetUShort();
+
+        Info("New current request interval: "+to_string(fCurrentRequestInterval)+"ms");
+
+        return GetCurrentState();
+    }
+
+    int SetMoonMode(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetMoonMode", 2))
+            return kSM_FatalError;
+
+        fMoonMode = evt.GetUShort();
+        if (fMoonMode>3)
+            fMoonMode=3;
+
+        Info("New moon mode: "+to_string(fMoonMode));
+
+        return GetCurrentState();
+    }
+
+    int Calibrate()
+    {
+        if (fDimBias.state()!=BIAS::State::kVoltageOff)
+        {
+            Warn("Calibration can only be started when biasctrl is in state VoltageOff.");
+            return GetCurrentState();
+        }
+
+        Message("Starting calibration (ignore="+to_string(fNumCalibIgnore)+", N="+to_string(fNumCalibRequests)+")");
+
+        fCursorCur  = -fNumCalibIgnore;
+        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+        fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+        fBiasDac.assign(BIAS::kNumChannels, 0);
+
+        fCalibStep = 3;
+        fTimeCalib = Time();
+
+        // Ramp all channels to the calibration setting except the one
+        // with a shortcut
+        vector<uint16_t> vec(BIAS::kNumChannels, uint16_t(256+512*fCalibStep));
+        vec[272] = 0;
+        Dim::SendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_DAC", vec);
+
+        //Dim::SendCommandNB("BIAS_CONTROL/SET_GLOBAL_DAC", uint16_t(256+512*fCalibStep));
+
+        return Feedback::State::kCalibrating;
+    }
+
+    int Start(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Start", 4))
+            return kSM_FatalError;
+
+        /*
+        if (fDimBias.state()==BIAS::State::kRamping)
+        {
+            Warn("Feedback can not be started when biasctrl is in state Ramping.");
+            return GetCurrentState();
+        }*/
+
+        fUserOffset = evt.GetFloat()-1.1;
+        fVoltageReduction = 0;
+
+        fCursorCur = 0;
+
+        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+        fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+        ostringstream out;
+        out << "Starting feedback with an offset of " << fUserOffset << "V";
+        Message(out);
+
+        if (fMoonMode>0)
+            Message("Moon mode "+to_string(fMoonMode)+" turned on.");
+
+        return Feedback::State::kWaitingForData;
+    }
+
+    int StopFeedback()
+    {
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()>Feedback::State::kCalibrated)
+            return Feedback::State::kCalibrated;
+
+        return GetCurrentState();
+    }
+
+    bool LoadOffsets(const string &file)
+    {
+        vector<double> data(BIAS::kNumChannels);
+
+        ifstream fin(file);
+
+        int cnt = 0;
+        while (fin && cnt<320)
+            fin >> data[cnt++];
+
+        if (cnt!=320)
+        {
+            Error("Reading offsets from "+file+" failed [N="+to_string(cnt-1)+"]");
+            return false;
+        }
+
+        fVoltOffset = data;
+
+        fDimOffsets.Update(fVoltOffset);
+
+        Info("New voltage offsets loaded from "+file);
+        return true;
+
+    }
+
+    int LoadOffset(const EventImp &evt)
+    {
+        LoadOffsets(evt.GetText());
+        return GetCurrentState();
+    }
+
+    int ResetOffset()
+    {
+        fVoltOffset.assign(BIAS::kNumChannels, 0);
+
+        fDimOffsets.Update(fVoltOffset);
+
+        Info("Voltage offsets resetted.");
+        return GetCurrentState();
+    }
+
+    int SaveCalibration()
+    {
+        ofstream fout("feedback-calib.bin");
+
+        double mjd = fTimeCalib.Mjd();
+        fout.write((char*)&mjd, sizeof(double));
+        fout.write((char*)fCalibDeltaI.data(), BIAS::kNumChannels*sizeof(float));
+        fout.write((char*)fCalibR8.data(),     BIAS::kNumChannels*sizeof(float));
+
+        return GetCurrentState();
+    }
+
+    int LoadCalibration()
+    {
+        ifstream fin("feedback-calib.bin");
+
+        double mjd;
+
+        vector<float> di(BIAS::kNumChannels);
+        vector<float> r8(BIAS::kNumChannels);
+
+        fin.read((char*)&mjd, sizeof(double));
+        fin.read((char*)di.data(), BIAS::kNumChannels*sizeof(float));
+        fin.read((char*)r8.data(), BIAS::kNumChannels*sizeof(float));
+
+        if (!fin)
+        {
+            Warn("Reading of calibration failed.");
+            return GetCurrentState();
+        }
+
+        fTimeCalib.Mjd(mjd);
+        fCalibDeltaI = di;
+        fCalibR8 = r8;
+
+        return Feedback::State::kCalibrated;
+    }
+
+
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return Feedback::State::kDimNetworkNA;
+
+        const bool bias = fDimBias.state() >= BIAS::State::kConnecting;
+        const bool fsc  = fDimFSC.state()  >= FSC::State::kConnected;
+
+        // All subsystems are not connected
+        if (!bias && !fsc)
+            return Feedback::State::kDisconnected;
+
+        // Not all subsystems are yet connected
+        if (!bias || !fsc)
+            return Feedback::State::kConnecting;
+
+        if (GetCurrentState()<Feedback::State::kCalibrating)
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()==Feedback::State::kConnected)
+            return GetCurrentState();
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return GetCurrentState();
+
+        // kCalibrated, kWaitingForData, kInProgress
+
+        if (fDimBias.state()==BIAS::State::kVoltageOn || (fDimBias.state()==BIAS::State::kVoltageOff && GetCurrentState()==Feedback::State::kWaitingForData))
+        {
+            static Time past;
+            if (fCurrentRequestInterval>0 && Time()-past>boost::posix_time::milliseconds(fCurrentRequestInterval))
+            {
+                Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+                past = Time();
+            }
+        }
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineFeedback(ostream &out=cout) : StateMachineDim(out, "FEEDBACK"),
+        fIsVerbose(false), 
+        //---
+        fDimFSC("FSC_CONTROL"),
+        fDimBias("BIAS_CONTROL"),
+        //---
+        fDimCalibration("FEEDBACK/CALIBRATION", "F:416;F:416;F:416;F:416",
+                        "Current offsets"
+                        "|Avg[uA]:Average offset at dac=256+5*512"
+                        "|Rms[uA]:Rms of Avg"
+                        "|R[Ohm]:Measured calibration resistor"
+                        "|U[V]:Corresponding voltage reported by biasctrl"),
+        fDimCalibration2("FEEDBACK/CALIBRATION_STEPS", "I:1;F:416;F:416;F:416",
+                        "Calibration of the R8 resistor"
+                        "|DAC[dac]:DAC setting"
+                        "|U[V]:Corresponding voltages reported by biasctrl"
+                        "|Iavg[uA]:Averaged measured current"
+                        "|Irms[uA]:Rms measured current"),
+        fDimCalibrationR8("FEEDBACK/CALIBRATION_R8", "F:416;F:416",
+                          "Calibration of R8"
+                          "|DeltaI[uA]:Average offset"
+                          "|R8[Ohm]:Measured effective resistor R8"),
+        fDimCurrents("FEEDBACK/CALIBRATED_CURRENTS", "F:416;F:1;F:1;F:1;F:1;I:1;F:1;F:416;F:1;F:1",
+                     "Calibrated currents"
+                     "|I[uA]:Calibrated currents per pixel"
+                     "|I_avg[uA]:Average calibrated current (N channels)"
+                     "|I_rms[uA]:Rms of calibrated current (N channels)"
+                     "|I_med[uA]:Median calibrated current (N channels)"
+                     "|I_dev[uA]:Deviation of calibrated current (N channels)"
+                     "|N[uint16]:Number of valid values"
+                     "|T_diff[s]:Time difference to calibration"
+                     "|U_ov[V]:Calculated overvoltage w.r.t. operation voltage"
+                     "|U_nom[V]:Nominal overvoltage w.r.t. operation voltage"
+                     "|dU_temp[V]:Correction calculated from temperature"
+                    ),
+        fDimOffsets("FEEDBACK/OFFSETS", "F:416",
+                    "Offsets operation voltages"
+                    "|U[V]:Offset per bias channels"),
+        fVoltOffset(BIAS::kNumChannels),
+        fMoonMode(0),
+        fCurrentRequestInterval(0),
+        fNumCalibIgnore(30),
+        fNumCalibRequests(300)
+    {
+        fDim.Subscribe(*this);
+        fDimFSC.Subscribe(*this);
+        fDimBias.Subscribe(*this);
+
+        fDimBias.SetCallback(bind(&StateMachineFeedback::HandleBiasStateChange, this));
+
+        Subscribe("BIAS_CONTROL/CURRENT")
+            (bind(&StateMachineFeedback::HandleBiasCurrent, this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/VOLTAGE")
+            (bind(&StateMachineFeedback::HandleBiasVoltage, this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/DAC")
+            (bind(&StateMachineFeedback::HandleBiasDac,     this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/NOMINAL")
+            (bind(&StateMachineFeedback::HandleBiasNom,     this, placeholders::_1));
+        Subscribe("FSC_CONTROL/BIAS_TEMP")
+            (bind(&StateMachineFeedback::HandleCameraTemp,  this, placeholders::_1));
+
+        // State names
+        AddStateName(Feedback::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(Feedback::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+        AddStateName(Feedback::State::kConnecting, "Connecting",
+                     "Either biasctrl or fscctrl not connected.");
+        AddStateName(Feedback::State::kConnected, "Connected",
+                     "biasctrl and fscctrl are available and connected with their hardware.");
+
+        AddStateName(Feedback::State::kCalibrating, "Calibrating",
+                     "Bias crate calibrating in progress.");
+        AddStateName(Feedback::State::kCalibrated, "Calibrated",
+                     "Bias crate calibrated.");
+
+        AddStateName(Feedback::State::kWaitingForData, "WaitingForData",
+                     "Current control started, waiting for valid temperature and current data.");
+
+        AddStateName(Feedback::State::kOnStandby, "OnStandby",
+                     "Current control in progress but with limited voltage.");
+        AddStateName(Feedback::State::kInProgress, "InProgress",
+                     "Current control in progress.");
+        AddStateName(Feedback::State::kWarning, "Warning",
+                     "Current control in progress but current warning level exceeded.");
+        AddStateName(Feedback::State::kCritical, "Critical",
+                     "Current control in progress but critical current limit exceeded.");
+
+
+        /*
+        AddEvent("SET_CURRENT_REQUEST_INTERVAL")
+            (bind(&StateMachineFeedback::SetCurrentRequestInterval, this, placeholders::_1))
+            ("|interval[ms]:Interval between two current requests in modes which need that.");
+        */
+
+        AddEvent("CALIBRATE", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::Calibrate, this))
+            ("");
+
+        AddEvent("START", "F:1", Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::Start, this, placeholders::_1))
+            ("Start the current/temperature control loop"
+             "|Uov[V]:Overvoltage to be applied (standard value is 1.1V)");
+
+        AddEvent("STOP")
+            (bind(&StateMachineFeedback::StopFeedback, this))
+            ("Stop any control loop");
+
+        AddEvent("LOAD_OFFSETS", "C", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::LoadOffset, this, placeholders::_1))
+            ("");
+        AddEvent("RESET_OFFSETS", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::ResetOffset, this))
+            ("");
+
+
+        AddEvent("SAVE_CALIBRATION", Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::SaveCalibration, this))
+            ("");
+        AddEvent("LOAD_CALIBRATION", Feedback::State::kConnected)
+            (bind(&StateMachineFeedback::LoadCalibration, this))
+            ("");
+
+        AddEvent("SET_MOON_MODE", "S:1", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::SetMoonMode, this, placeholders::_1))
+            ("Operate central pixels at 5V below nominal voltage. 0:off, 1:minimal, 2:medium, 3:maximum size.");
+
+
+        AddEvent("PRINT")
+            (bind(&StateMachineFeedback::Print, this))
+            ("");
+        AddEvent("PRINT_CALIBRATION")
+            (bind(&StateMachineFeedback::PrintCalibration, this))
+            ("");
+
+        // Verbosity commands
+        AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFeedback::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity when calculating overvoltage");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fIsVerbose = !conf.Get<bool>("quiet");
+
+        if (!fMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fCurrentRequestInterval = conf.Get<uint16_t>("current-request-interval");
+        fNumCalibIgnore         = conf.Get<uint16_t>("num-calib-ignore");
+        fNumCalibRequests       = conf.Get<uint16_t>("num-calib-average");
+        fTempCoefficient        = conf.Get<double>("temp-coefficient");
+
+        if (conf.Has("offset-file"))
+            LoadOffsets(conf.Get<string>("offset-file"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFeedback>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Feedback options");
+    control.add_options()
+        ("quiet,q", po_bool(true), "Disable printing more information on average overvoltagecontents of all received messages (except dynamic data) in clear text.")
+        ("pixel-map-file",      var<string>()->required(), "Pixel mapping file. Used here to get the default reference voltage.")
+        ("current-request-interval",  var<uint16_t>(1000), "Interval between two current requests.")
+        ("num-calib-ignore",    var<uint16_t>(30), "Number of current requests to be ignored before averaging")
+        ("num-calib-average",   var<uint16_t>(300), "Number of current requests to be averaged")
+        ("temp-coefficient",    var<double>()->required(), "Temp. coefficient [V/K]")
+        ("offset-file",         var<string>(), "File with operation voltage offsets")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The feedback control the BIAS voltages based on the calibration signal.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: feedback [-c type] [OPTIONS]\n"
+        "  or:  feedback [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFeedback>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/fitsCompressor.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsCompressor.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsCompressor.cc	(revision 18732)
@@ -0,0 +1,2133 @@
+/*
+ * fitsCompressor.cc
+ *
+ *  Created on: May 7, 2013
+ *      Author: lyard
+ */
+
+
+#include "Configuration.h"
+#include "../externals/factfits.h"
+#include "../externals/ofits.h"
+#include "../externals/checksum.h"
+
+#include <map>
+#include <fstream>
+#include <sstream>
+#include <iostream>
+
+
+using namespace std;
+
+class CompressedFitsFile
+{
+public:
+    class HeaderEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            HeaderEntry(): _key(""),
+                           _value(""),
+                           _comment(""),
+                           _fitsString("")
+            {
+            }
+
+            /**
+             * Regular constructor.
+             * @param key the name of the keyword entry
+             * @param value its value
+             * @param comment an optionnal comment to be placed after the value
+             */
+            template<typename T>
+            HeaderEntry(const string& k,
+                        const T& val,
+                        const string& comm) : _key(k),
+                                              _value(""),
+                                              _comment(comm),
+                                              _fitsString("")
+            {
+                setValue(val);
+            }
+
+            /**
+             * From fits.h
+             */
+            string Trim(const string &str, char c=' ')
+            {
+                // Trim Both leading and trailing spaces
+                const size_t pstart = str.find_first_not_of(c); // Find the first character position after excluding leading blank spaces
+                const size_t pend   = str.find_last_not_of(c);  // Find the first character position from reverse af
+
+                // if all spaces or empty return an empty string
+                if (string::npos==pstart || string::npos==pend)
+                    return string();
+
+                return str.substr(pstart, pend-pstart+1);
+            }
+            /**
+             *  Constructor from the original fits entry
+             */
+            HeaderEntry(const string& line)
+            {
+                _fitsString = line.data();
+
+                //parse the line
+                _key = Trim(line.substr(0,8));
+                //COMMENT and/or HISTORY values
+                if (line.substr(8,2)!= "= ")
+                {
+                    _value = "";
+                    _comment = Trim(line.substr(10));
+                    return;
+                }
+                string next=line.substr(10);
+                const size_t slash = next.find_first_of('/');
+                _value = Trim(Trim(Trim(next.substr(0, slash)), '\''));
+                _comment = Trim(next.substr(slash+1));
+            }
+            /**
+             *  Alternative constroctor from the fits entry
+             */
+            HeaderEntry(const vector<char>& lineVec)
+            {
+                HeaderEntry(string(lineVec.data()));
+            }
+            /**
+             *  Destructor
+             */
+            virtual ~HeaderEntry(){}
+
+            const string& value()      const {return _value;}
+            const string& key()        const {return _key;}
+            const string& comment()    const {return _comment;}
+            const string& fitsString() const {return _fitsString;}
+
+            /**
+             * Set a keyword value.
+             * @param value The value to be set
+             * @param update whether the value already exist or not. To be modified soon.
+             */
+            template<typename T>
+            void setValue(const T& val)
+            {
+                ostringstream str;
+                str << val;
+                _value = str.str();
+                buildFitsString();
+            };
+            /**
+             *  Set the comment for a given entry
+             */
+            void setComment(const string& comm)
+            {
+                _comment = comm;
+                buildFitsString();
+            }
+
+        private:
+            /**
+             *  Construct the FITS header string from the key, value and comment
+             */
+            void buildFitsString()
+            {
+                ostringstream str;
+                unsigned int totSize = 0;
+
+                // Tuncate the key if required
+                if (_key.length() > 8)
+                {
+                    str << _key.substr(0, 8);
+                    totSize += 8;
+                }
+                else
+                {
+                    str << _key;
+                    totSize += _key.length();
+                }
+
+                // Append space if key is less than 8 chars long
+                for (int i=totSize; i<8;i++)
+                {
+                    str << " ";
+                    totSize++;
+                }
+
+                // Add separator
+                str << "= ";
+                totSize += 2;
+
+                // Format value
+                if (_value.length() < 20)
+                    for (;totSize<30-_value.length();totSize++)
+                        str << " ";
+
+                if (_value.length() > 70)
+                {
+                    str << _value.substr(0,70);
+                    totSize += 70;
+                }
+                else
+                {
+                    str << _value;
+                    totSize += _value.size();
+                }
+
+                // If there is space remaining, add comment area
+                if (totSize < 77)
+                {
+                    str << " / ";
+                    totSize += 3;
+                    if (totSize < 80)
+                    {
+                        unsigned int commentSize = 80 - totSize;
+                        if (_comment.length() > commentSize)
+                        {
+                            str << _comment.substr(0,commentSize);
+                            totSize += commentSize;
+                        }
+                        else
+                        {
+                            str << _comment;
+                            totSize += _comment.length();
+                        }
+                    }
+                }
+
+                // If there is yet some free space, fill up the entry with spaces
+                for (int i=totSize; i<80;i++)
+                    str << " ";
+
+                _fitsString = str.str();
+
+                // Check for correct completion
+                if (_fitsString.length() != 80)
+                    cout << "Error |" << _fitsString << "| is not of length 80" << endl;
+            }
+
+            string _key;        ///< the key (name) of the header entry
+            string _value;      ///< the value of the header entry
+            string _comment;    ///< the comment associated to the header entry
+            string _fitsString; ///< the string that will be written to the fits file
+    };
+
+    /**
+     *  Supported compressions
+     */
+    typedef enum
+    {
+        UNCOMPRESSED,
+        SMOOTHMAN
+    } FitsCompression;
+
+    /**
+     *  Columns class
+     */
+    class ColumnEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            ColumnEntry();
+
+            /**
+             *  Default destructor
+             */
+            virtual ~ColumnEntry(){}
+
+            /**
+             *  Constructor from values
+             *  @param n the column name
+             *  @param t the column type
+             *  @param numof the number of entries in the column
+             *  @param comp the compression type for this column
+             */
+            ColumnEntry(const string& n,
+                        char          t,
+                        int           numOf,
+                        BlockHeader&   head,
+                        vector<uint16_t>& seq) : _name(n),
+                                                 _num(numOf),
+                                                 _typeSize(0),
+                                                 _offset(0),
+                                                 _type(t),
+                                                 _description(""),
+                                                 _header(head),
+                                                 _compSequence(seq)
+            {
+                switch (t)
+                {
+                    case 'L':
+                    case 'A':
+                    case 'B': _typeSize = 1; break;
+                    case 'I': _typeSize = 2; break;
+                    case 'J':
+                    case 'E': _typeSize = 4; break;
+                    case 'K':
+                    case 'D': _typeSize = 8; break;
+                    default:
+                    cout << "Error: typename " << t << " missing in the current implementation" << endl;
+                };
+
+                ostringstream str;
+                str << "data format of field: ";
+
+                switch (t)
+                {
+                    case 'L': str << "1-byte BOOL"; break;
+                    case 'A': str << "1-byte CHAR"; break;
+                    case 'B': str << "BYTE"; break;
+                    case 'I': str << "2-byte INTEGER"; break;
+                    case 'J': str << "4-byte INTEGER"; break;
+                    case 'K': str << "8-byte INTEGER"; break;
+                    case 'E': str << "4-byte FLOAT"; break;
+                    case 'D': str << "8-byte FLOAT"; break;
+                }
+
+                _description = str.str();
+            }
+
+            const string& name()                 const { return _name;};
+            int           width()                const { return _num*_typeSize;};
+            int           offset()               const { return _offset; };
+            int           numElems()             const { return _num; };
+            int           sizeOfElems()          const { return _typeSize;};
+            void          setOffset(int off)           { _offset = off;};
+            char          type()                 const { return _type;};
+            string        getDescription()       const { return _description;}
+            BlockHeader& getBlockHeader()  { return _header;}
+            const vector<uint16_t>& getCompressionSequence() const { return _compSequence;}
+            const char& getColumnOrdering() const { return _header.ordering;}
+
+
+            string        getCompressionString() const
+            {
+                return "FACT";
+             /*
+                ostringstream str;
+                for (uint32_t i=0;i<_compSequence.size();i++)
+                switch (_compSequence[i])
+                {
+                    case FACT_RAW: if (str.str().size() == 0) str << "RAW"; break;
+                    case FACT_SMOOTHING: str << "SMOOTHING "; break;
+                    case FACT_HUFFMAN16: str << "HUFFMAN16 "; break;
+                };
+                return str.str();*/
+            }
+
+        private:
+
+            string _name;          ///< name of the column
+            int     _num;          ///< number of elements contained in one row of this column
+            int    _typeSize;      ///< the number of bytes taken by one element
+            int    _offset;        ///< the offset of the column, in bytes, from the beginning of one row
+            char   _type;          ///< the type of the column, as specified by the fits documentation
+            string _description;   ///< a description for the column. It will be placed in the header
+            BlockHeader _header;
+            vector<uint16_t> _compSequence;
+    };
+
+    public:
+        ///@brief default constructor. Assigns a default number of rows and tiles
+        CompressedFitsFile(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsFile();
+
+        ///@brief get the header of the file
+        vector<HeaderEntry>& getHeaderEntries() { return _header;}
+
+    protected:
+        ///@brief protected function to allocate the intermediate buffers
+        bool reallocateBuffers();
+
+        //FITS related stuff
+        vector<HeaderEntry>  _header;         ///< Header keys
+        vector<ColumnEntry>  _columns;        ///< Columns in the file
+        uint32_t             _numTiles;       ///< Number of tiles (i.e. groups of rows)
+        uint32_t             _numRowsPerTile; ///< Number of rows per tile
+        uint32_t             _totalNumRows;   ///< Total number of raws
+        uint32_t             _rowWidth;       ///< Total number of bytes in one row
+        bool                 _headerFlushed;  ///< Flag telling whether the header record is synchronized with the data on disk
+        char*                _buffer;         ///< Memory buffer to store rows while they are not compressed
+        Checksum             _checksum;       ///< Checksum for asserting the consistency of the data
+        fstream              _file;           ///< The actual file streamer for accessing disk data
+
+        //compression related stuff
+        typedef pair<int64_t, int64_t> CatalogEntry;
+        typedef vector<CatalogEntry>   CatalogRow;
+        typedef vector<CatalogRow>     CatalogType;
+        CatalogType _catalog;              ///< Catalog, i.e. the main table that points to the compressed data.
+        uint64_t                 _heapPtr; ///< the address in the file of the heap area
+        vector<char*> _transposedBuffer;   ///< Memory buffer to store rows while they are transposed
+        vector<char*> _compressedBuffer;   ///< Memory buffer to store rows while they are compressed
+
+        //thread related stuff
+        uint32_t          _numThreads;    ///< The number of threads that will be used to compress
+        uint32_t          _threadIndex;   ///< A variable to assign threads indices
+        vector<pthread_t> _thread;        ///< The thread handler of the compressor
+        vector<uint32_t>  _threadNumRows; ///< Total number of rows for thread to compress
+        vector<uint32_t>  _threadStatus;  ///< Flag telling whether the buffer to be transposed (and compressed) is full or empty
+
+        //thread states. Not all used, but they do not hurt
+        static const uint32_t       _THREAD_WAIT_; ///< Thread doing nothing
+        static const uint32_t   _THREAD_COMPRESS_; ///< Thread working, compressing
+        static const uint32_t _THREAD_DECOMPRESS_; ///< Thread working, decompressing
+        static const uint32_t      _THREAD_WRITE_; ///< Thread writing data to disk
+        static const uint32_t       _THREAD_READ_; ///< Thread reading data from disk
+        static const uint32_t       _THREAD_EXIT_; ///< Thread exiting
+
+        static HeaderEntry _dummyHeaderEntry; ///< Dummy entry for returning if requested on is not found
+};
+
+class CompressedFitsWriter : public CompressedFitsFile
+{
+    public:
+        ///@brief Default constructor. 100 tiles of 100 rows each are assigned by default
+        CompressedFitsWriter(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsWriter();
+
+        ///@brief add one column to the file
+        bool addColumn(const ColumnEntry& column);
+
+        ///@brief sets a given header key
+        bool setHeaderKey(const HeaderEntry&);
+
+        bool changeHeaderKey(const string& origName, const string& newName);
+
+        ///@brief open a new fits file
+        bool open(const string& fileName, const string& tableName="Data");
+
+        ///@brief close the opened file
+        bool close();
+
+        ///@brief write one row of data, already placed in bufferToWrite. Does the byte-swapping
+        bool writeBinaryRow(const char* bufferToWrite);
+
+        uint32_t getRowWidth();
+
+        ///@brief assign a given (already loaded) drs calibration
+        void setDrsCalib(int16_t* data);
+
+        ///@brief set the number of worker threads compressing the data.
+        bool setNumWorkingThreads(uint32_t num);
+
+    private:
+        ///@brief compresses one buffer of data, the one given by threadIndex
+        uint64_t compressBuffer(uint32_t threadIndex);
+
+        ///@brief writes an already compressed buffer to disk
+        bool writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite);
+
+        ///@brief add the header checksum to the datasum
+        void addHeaderChecksum(Checksum& checksum);
+
+        ///@brief write the header. If closingFile is set to true, checksum is calculated
+        void writeHeader(bool closingFile = false);
+
+        ///@brief write the compressed data catalog. If closingFile is set to true, checksum is calculated
+        void writeCatalog(bool closingFile=false);
+
+        /// FIXME this was a bad idea. Move everything to the regular header
+        vector<HeaderEntry> _defaultHeader;
+
+        /// the main function compressing the data
+        static void* threadFunction(void* context);
+
+        /// Write the drs calibration to disk, if any
+        void writeDrsCalib();
+
+        /// Copy and transpose (or semi-transpose) one tile of data
+        void copyTransposeTile(uint32_t index);
+
+        /// Specific compression functions
+        uint32_t compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t      compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t    compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t       applySMOOTHING(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+
+        int32_t         _checkOffset;  ///< offset to the data pointer to calculate the checksum
+        int16_t*        _drsCalibData; ///< array of the Drs baseline mean
+        int32_t         _threadLooper; ///< Which thread will deal with the upcoming bunch of data ?
+        pthread_mutex_t _mutex;        ///< mutex for compressing threads
+
+
+        static string _emptyBlock; ///< an empty block to be apened at the end of a file so that its length is a multiple of 2880
+        static string _fitsHeader; ///< the default header to be written in every fits file
+};
+
+const uint32_t CompressedFitsFile::_THREAD_WAIT_      = 0;
+const uint32_t CompressedFitsFile::_THREAD_COMPRESS_  = 1;
+const uint32_t CompressedFitsFile::_THREAD_DECOMPRESS_= 2;
+const uint32_t CompressedFitsFile::_THREAD_WRITE_     = 3;
+const uint32_t CompressedFitsFile::_THREAD_READ_      = 4;
+const uint32_t CompressedFitsFile::_THREAD_EXIT_      = 5;
+
+template<>
+void CompressedFitsFile::HeaderEntry::setValue(const string& v)
+{
+    string val = v;
+    if (val.size() > 2 && val[0] == '\'')
+    {
+        size_t pos = val.find_last_of("'");
+        if (pos != string::npos && pos != 0)
+            val = val.substr(1, pos-1);
+    }
+    ostringstream str;
+
+    str << "'" << val << "'";
+    for (int i=str.str().length(); i<20;i++)
+        str << " ";
+    _value = str.str();
+    buildFitsString();
+}
+
+/**
+ * Default header to be written in all fits files
+ */
+string CompressedFitsWriter::_fitsHeader = "SIMPLE  =                    T / file does conform to FITS standard             "
+                    "BITPIX  =                    8 / number of bits per data pixel                  "
+                    "NAXIS   =                    0 / number of data axes                            "
+                    "EXTEND  =                    T / FITS dataset may contain extensions            "
+                    "CHECKSUM= '4AcB48bA4AbA45bA'   / Checksum for the whole HDU                     "
+                    "DATASUM = '         0'         / Checksum for the data block                    "
+                    "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+                    "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+                    "END                                                                             "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+/**
+ * Empty block to be appenned at the end of files, so that the length matches multiple of 2880 bytes
+ *
+ */
+string CompressedFitsWriter::_emptyBlock = "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+CompressedFitsFile::HeaderEntry CompressedFitsFile::_dummyHeaderEntry;
+/****************************************************************
+ *              SUPER CLASS DEFAULT CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::CompressedFitsFile(uint32_t numTiles,
+                                       uint32_t numRowsPerTile) : _header(),
+                                                                 _columns(),
+                                                                 _numTiles(numTiles),
+                                                                 _numRowsPerTile(numRowsPerTile),
+                                                                 _totalNumRows(0),
+                                                                 _rowWidth(0),
+                                                                 _headerFlushed(false),
+                                                                 _buffer(NULL),
+                                                                 _checksum(0),
+                                                                 _heapPtr(0),
+                                                                 _transposedBuffer(1),
+                                                                 _compressedBuffer(1),
+                                                                 _numThreads(1),
+                                                                 _threadIndex(0),
+                                                                 _thread(1),
+                                                                 _threadNumRows(1),
+                                                                 _threadStatus(1)
+{
+    _catalog.resize(_numTiles);
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus[0] = _THREAD_WAIT_;
+    _threadNumRows[0] = 0;
+}
+
+/****************************************************************
+ *              SUPER CLASS DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::~CompressedFitsFile()
+{
+    if (_buffer != NULL)
+    {
+        _buffer = _buffer-4;
+        delete[] _buffer;
+        _buffer = NULL;
+        for (uint32_t i=0;i<_numThreads;i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+            _transposedBuffer[i] = NULL;
+            _compressedBuffer[i] = NULL;
+        }
+    }
+    if (_file.is_open())
+        _file.close();
+}
+
+/****************************************************************
+ *              REALLOCATE BUFFER
+ ****************************************************************/
+bool CompressedFitsFile::reallocateBuffers()
+{
+    if (_buffer)
+    {
+        _buffer = _buffer - 4;
+        delete[] _buffer;
+        for (uint32_t i=0;i<_compressedBuffer.size();i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+        }
+    }
+    _buffer = new char[_rowWidth*_numRowsPerTile + 12];
+    if (_buffer == NULL) return false;
+    memset(_buffer, 0, 4);
+    _buffer = _buffer + 4;
+    if (_compressedBuffer.size() != _numThreads)
+    {
+        _transposedBuffer.resize(_numThreads);
+        _compressedBuffer.resize(_numThreads);
+    }
+    for (uint32_t i=0;i<_numThreads;i++)
+    {
+        _transposedBuffer[i] = new char[_rowWidth*_numRowsPerTile];
+        _compressedBuffer[i] = new char[_rowWidth*_numRowsPerTile + _columns.size() + sizeof(TileHeader) + 12]; //use a bit more memory for compression flags and checksumming
+        if (_transposedBuffer[i] == NULL || _compressedBuffer[i] == NULL)
+            return false;
+        //shift the compressed buffer by 4 bytes, for checksum calculation
+        memset(_compressedBuffer[i], 0, 4);
+        _compressedBuffer[i] = _compressedBuffer[i]+4;
+        //initialize the tile header
+        TileHeader tileHeader;
+        memcpy(_compressedBuffer[i], &tileHeader, sizeof(TileHeader));
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  DEFAULT WRITER CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::CompressedFitsWriter(uint32_t numTiles,
+                                           uint32_t numRowsPerTile) : CompressedFitsFile(numTiles, numRowsPerTile),
+                                                                    _checkOffset(0),
+                                                                    _drsCalibData(NULL),
+                                                                    _threadLooper(0)
+{
+    _defaultHeader.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    _defaultHeader.push_back(HeaderEntry("BITPIX", 8, "8-bit bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS", 2, "2-dimensional binary table"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS1", _rowWidth, "width of table in bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS2", numTiles, "num of rows in table"));
+    _defaultHeader.push_back(HeaderEntry("PCOUNT", 0, "size of special data area"));
+    _defaultHeader.push_back(HeaderEntry("GCOUNT", 1, "one data group (required keyword)"));
+    _defaultHeader.push_back(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+    _defaultHeader.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    _defaultHeader.push_back(HeaderEntry("DATASUM",  "         0", "Checksum for the data block"));
+    //compression stuff
+    _defaultHeader.push_back(HeaderEntry("ZTABLE", "T", "Table is compressed"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS1", 0, "Width of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS2", 0, "Number of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZPCOUNT", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZHEAPPTR", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZTILELEN", numRowsPerTile, "Number of rows per tile"));
+    _defaultHeader.push_back(HeaderEntry("THEAP", 0, ""));
+
+    pthread_mutex_init(&_mutex, NULL);
+}
+
+/****************************************************************
+ *              DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::~CompressedFitsWriter()
+{
+    pthread_mutex_destroy(&_mutex);
+}
+
+/****************************************************************
+ *              SET THE POINTER TO THE DRS CALIBRATION
+ ****************************************************************/
+void CompressedFitsWriter::setDrsCalib(int16_t* data)
+{
+    _drsCalibData = data;
+}
+
+/****************************************************************
+ *                  SET NUM WORKING THREADS
+ ****************************************************************/
+bool CompressedFitsWriter::setNumWorkingThreads(uint32_t num)
+{
+    if (_file.is_open())
+        return false;
+    if (num < 1 || num > 64)
+    {
+        cout << "ERROR: num threads must be between 1 and 64. Ignoring" << endl;
+        return false;
+    }
+    _numThreads = num;
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus.resize(num);
+    _thread.resize(num);
+    _threadNumRows.resize(num);
+    for (uint32_t i=0;i<num;i++)
+    {
+        _threadNumRows[i] = 0;
+        _threadStatus[i] = _THREAD_WAIT_;
+    }
+    return reallocateBuffers();
+}
+
+/****************************************************************
+ *              WRITE DRS CALIBRATION TO FILE
+ ****************************************************************/
+void CompressedFitsWriter::writeDrsCalib()
+{
+    //if file was not loaded, ignore
+    if (_drsCalibData == NULL)
+        return;
+    uint64_t whereDidIStart = _file.tellp();
+    vector<HeaderEntry> header;
+    header.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    header.push_back(HeaderEntry("BITPIX"  , 8                     , "8-bit bytes"));
+    header.push_back(HeaderEntry("NAXIS"   , 2                     , "2-dimensional binary table"));
+    header.push_back(HeaderEntry("NAXIS1"  , 1024*1440*2           , "width of table in bytes"));
+    header.push_back(HeaderEntry("NAXIS2"  , 1                     , "number of rows in table"));
+    header.push_back(HeaderEntry("PCOUNT"  , 0                     , "size of special data area"));
+    header.push_back(HeaderEntry("GCOUNT"  , 1                     , "one data group (required keyword)"));
+    header.push_back(HeaderEntry("TFIELDS" , 1                     , "number of fields in each row"));
+    header.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    header.push_back(HeaderEntry("DATASUM" ,  "         0"         , "Checksum for the data block"));
+    header.push_back(HeaderEntry("EXTNAME" , "'ZDrsCellOffsets'    ", "name of this binary table extension"));
+    header.push_back(HeaderEntry("TTYPE1"  , "'OffsetCalibration' ", "label for field   1"));
+    header.push_back(HeaderEntry("TFORM1"  , "'1474560I'          ", "data format of field: 2-byte INTEGER"));
+
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    //End the header
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+    //now write the data itself
+    int16_t* swappedBytes = new int16_t[1024];
+    Checksum checksum;
+    for (int32_t i=0;i<1440;i++)
+    {
+        memcpy(swappedBytes, &(_drsCalibData[i*1024]), 2048);
+        for (int32_t j=0;j<2048;j+=2)
+        {
+            int8_t inter;
+            inter = reinterpret_cast<int8_t*>(swappedBytes)[j];
+            reinterpret_cast<int8_t*>(swappedBytes)[j] = reinterpret_cast<int8_t*>(swappedBytes)[j+1];
+            reinterpret_cast<int8_t*>(swappedBytes)[j+1] = inter;
+        }
+        _file.write(reinterpret_cast<char*>(swappedBytes), 2048);
+        checksum.add(reinterpret_cast<char*>(swappedBytes), 2048);
+    }
+    uint64_t whereDidIStop = _file.tellp();
+    delete[] swappedBytes;
+    //No need to pad the data, as (1440*1024*2)%2880==0
+
+    //calculate the checksum from the header
+    ostringstream str;
+    str << checksum.val();
+    header[9] = HeaderEntry("DATASUM", str.str(), "Checksum for the data block");
+    for (vector<HeaderEntry>::iterator it=header.begin();it!=header.end(); it++)
+        checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+    //udpate the checksum keyword
+    header[8] = HeaderEntry("CHECKSUM", checksum.str(), "Checksum for the whole HDU");
+    //and eventually re-write the header data
+    _file.seekp(whereDidIStart);
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    _file.seekp(whereDidIStop);
+}
+
+/****************************************************************
+ *              ADD COLUMN
+ ****************************************************************/
+bool CompressedFitsWriter::addColumn(const ColumnEntry& column)
+{
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: cannot add new columns once first row has been written" << endl;
+        return false;
+    }
+    for (vector<ColumnEntry>::iterator it=_columns.begin(); it != _columns.end(); it++)
+    {
+        if (it->name() == column.name())
+        {
+            cout << "Warning: column already exist (" << column.name() << "). Ignoring" << endl;
+            return false;
+        }
+    }
+    _columns.push_back(column);
+    _columns.back().setOffset(_rowWidth);
+    _rowWidth += column.width();
+    reallocateBuffers();
+
+    ostringstream str, str2, str3;
+    str << "TTYPE" << _columns.size();
+    str2 << column.name();
+    str3 << "label for field ";
+    if (_columns.size() < 10) str3 << " ";
+    if (_columns.size() < 100) str3 << " ";
+    str3 << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "TFORM" << _columns.size();
+    str2 << "1QB";
+    str3 << "data format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZFORM" << _columns.size();
+    str2 << column.numElems() << column.type();
+    str3 << "Original format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZCTYP" << _columns.size();
+    str2 << column.getCompressionString();
+    str3 << "Comp. Scheme of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    //resize the catalog vector accordingly
+    for (uint32_t i=0;i<_numTiles;i++)
+    {
+        _catalog[i].resize(_columns.size());
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+            _catalog[i][j] = make_pair(0,0);
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  SET HEADER KEY
+ ****************************************************************/
+bool CompressedFitsWriter::setHeaderKey(const HeaderEntry& entry)
+{
+    HeaderEntry ent = entry;
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: new header keys (" << entry.key() << ") must be set before the first row is written. Ignoring." << endl;
+        return false;
+    }
+    _header.push_back(entry);
+    _headerFlushed = false;
+    return true;
+}
+
+bool CompressedFitsWriter::changeHeaderKey(const string& origName, const string& newName)
+{
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    return false;
+}
+/****************************************************************
+ *              OPEN
+ ****************************************************************/
+bool CompressedFitsWriter::open(const string& fileName, const string& tableName)
+{
+     _file.open(fileName.c_str(), ios_base::out);
+    if (!_file.is_open())
+    {
+        cout << "Error: Could not open the file (" << fileName << ")." << endl;
+        return false;
+    }
+    _defaultHeader.push_back(HeaderEntry("EXTNAME", tableName, "name of this binary table extension"));
+    _headerFlushed = false;
+    _threadIndex = 0;
+    //create requested number of threads
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_create(&(_thread[i]), NULL, threadFunction, this);
+    //wait for the threads to start
+    while (_numThreads != _threadIndex)
+        usleep(1000);
+    //set the writing fence to the last thread
+    _threadIndex = _numThreads-1;
+    return (_file.good());
+}
+
+/****************************************************************
+ *              WRITE HEADER
+ ****************************************************************/
+void CompressedFitsWriter::writeHeader(bool closingFile)
+{
+    if (_headerFlushed)
+        return;
+    if (!_file.is_open())
+        return;
+
+    long cPos = _file.tellp();
+
+    _file.seekp(0);
+
+    _file.write(_fitsHeader.c_str(), 2880);
+
+    //Write the DRS calib table here !
+    writeDrsCalib();
+
+    //we are now at the beginning of the main table. Write its header
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+
+    _headerFlushed = true;
+
+    here = _file.tellp();
+
+    if (here%2880)
+        cout << "Error: seems that header did not finish at the end of a block." << endl;
+
+    if (here > cPos && cPos != 0)
+    {
+        cout << "Error, entries were added after the first row was written. This is not supposed to happen." << endl;
+        return;
+    }
+
+    here = _file.tellp();
+    writeCatalog(closingFile);
+
+    here = _file.tellp() - here;
+    _heapPtr = here;
+
+    if (cPos != 0)
+        _file.seekp(cPos);
+}
+
+/****************************************************************
+ *              WRITE CATALOG
+ *  WARNING: writeCatalog is only meant to be used by writeHeader.
+ *  external usage will most likely corrupt the file
+ ****************************************************************/
+void CompressedFitsWriter::writeCatalog(bool closingFile)
+{
+    uint32_t sizeWritten = 0;
+    for (uint32_t i=0;i<_catalog.size();i++)
+    {
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+        {
+            //swap the bytes
+            int8_t swappedEntry[16];
+            swappedEntry[0] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[7];
+            swappedEntry[1] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[6];
+            swappedEntry[2] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[5];
+            swappedEntry[3] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[4];
+            swappedEntry[4] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[3];
+            swappedEntry[5] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[2];
+            swappedEntry[6] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[1];
+            swappedEntry[7] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[0];
+
+            swappedEntry[8] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[7];
+            swappedEntry[9] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[6];
+            swappedEntry[10] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[5];
+            swappedEntry[11] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[4];
+            swappedEntry[12] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[3];
+            swappedEntry[13] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[2];
+            swappedEntry[14] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[1];
+            swappedEntry[15] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[0];
+            if (closingFile)
+            {
+                _checksum.add(reinterpret_cast<char*>(swappedEntry), 16);
+            }
+            _file.write(reinterpret_cast<char*>(&swappedEntry[0]), 2*sizeof(int64_t));
+            sizeWritten += 2*sizeof(int64_t);
+        }
+    }
+
+    //we do not reserve space for now because fverify does not like that.
+    //TODO bug should be fixed in the new version. Install it on the cluster and restor space reservation
+    return ;
+
+    //write the padding so that the HEAP section starts at a 2880 bytes boundary
+    if (sizeWritten % 2880 != 0)
+    {
+        vector<char> nullVec(2880 - sizeWritten%2880, 0);
+        _file.write(nullVec.data(), 2880 - sizeWritten%2880);
+    }
+}
+
+/****************************************************************
+ *              ADD HEADER CHECKSUM
+ ****************************************************************/
+void CompressedFitsWriter::addHeaderChecksum(Checksum& checksum)
+{
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin();it!=_defaultHeader.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (_defaultHeader.size() + _header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+}
+
+/****************************************************************
+ *                  CLOSE
+ ****************************************************************/
+bool CompressedFitsWriter::close()
+{
+    for (uint32_t i=0;i<_numThreads;i++)
+        while (_threadStatus[i] != _THREAD_WAIT_)
+            usleep(100000);
+    for (uint32_t i=0;i<_numThreads;i++)
+        _threadStatus[i] = _THREAD_EXIT_;
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_join(_thread[i], NULL);
+    //flush the rows that were not written yet
+    if (_totalNumRows%_numRowsPerTile != 0)
+    {
+        copyTransposeTile(0);
+
+        _threadNumRows[0] = _totalNumRows;
+        uint32_t numBytes = compressBuffer(0);
+        writeCompressedDataToDisk(0, numBytes);
+    }
+    //compression stuff
+    setHeaderKey(HeaderEntry("ZNAXIS1", _rowWidth, "Width of uncompressed rows"));
+    setHeaderKey(HeaderEntry("ZNAXIS2", _totalNumRows, "Number of uncompressed rows"));
+    //TODO calculate the real offset from the main table to the start of the HEAP data area
+    setHeaderKey(HeaderEntry("ZHEAPPTR", _heapPtr, ""));
+    setHeaderKey(HeaderEntry("THEAP", _heapPtr, ""));
+
+    //regular stuff
+    if (_catalog.size() > 0)
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", 2*sizeof(int64_t)*_catalog[0].size(), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", _numTiles, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        int64_t heapSize = 0;
+        int64_t compressedOffset = 0;
+        for (uint32_t i=0;i<_catalog.size();i++)
+        {
+            compressedOffset += sizeof(TileHeader);
+            heapSize += sizeof(TileHeader);
+            for (uint32_t j=0;j<_catalog[i].size();j++)
+            {
+                heapSize += _catalog[i][j].first;
+//		cout << "heapSize: " << heapSize << endl;
+                //set the catalog offsets to their actual values
+                _catalog[i][j].second = compressedOffset;
+                compressedOffset += _catalog[i][j].first;
+                //special case if entry has zero length
+                if (_catalog[i][j].first == 0) _catalog[i][j].second = 0;
+            }
+        }
+        setHeaderKey(HeaderEntry("PCOUNT", heapSize, "size of special data area"));
+    }
+    else
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", _columns.size()*2*sizeof(int64_t), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", 0, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        setHeaderKey(HeaderEntry("PCOUNT", 0, "size of special data area"));
+        changeHeaderKey("THEAP", "ZHEAP");
+    }
+    ostringstream str;
+
+    writeHeader(true);
+
+    str.str("");
+    str << _checksum.val();
+
+    setHeaderKey(HeaderEntry("DATASUM", str.str(), ""));
+    addHeaderChecksum(_checksum);
+    setHeaderKey(HeaderEntry("CHECKSUM", _checksum.str(), ""));
+    //update header value
+    writeHeader();
+    //update file length
+    long here = _file.tellp();
+    if (here%2880)
+    {
+        vector<char> nullVec(2880 - here%2880, 0);
+        _file.write(nullVec.data(), 2880 - here%2880);
+    }
+    _file.close();
+    return true;
+}
+
+/****************************************************************
+ *                  COPY TRANSPOSE TILE
+ ****************************************************************/
+void CompressedFitsWriter::copyTransposeTile(uint32_t index)
+{
+    uint32_t thisRoundNumRows = (_totalNumRows%_numRowsPerTile) ? _totalNumRows%_numRowsPerTile : _numRowsPerTile;
+
+    //copy the tile and transpose it
+    uint32_t offset = 0;
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        switch (_columns[i].getColumnOrdering())//getCompression())
+        {
+            case FITS::kOrderByRow:
+                for (uint32_t k=0;k<thisRoundNumRows;k++)
+                {//regular, "semi-transposed" copy
+                    memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset()], _columns[i].sizeOfElems()*_columns[i].numElems());
+                    offset += _columns[i].sizeOfElems()*_columns[i].numElems();
+                }
+            break;
+
+            case FITS::kOrderByCol :
+                for (int j=0;j<_columns[i].numElems();j++)
+                    for (uint32_t k=0;k<thisRoundNumRows;k++)
+                    {//transposed copy
+                        memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset() + _columns[i].sizeOfElems()*j], _columns[i].sizeOfElems());
+                        offset += _columns[i].sizeOfElems();
+                    }
+            break;
+            default:
+                    cout << "Error: unknown column ordering: " << _columns[i].getColumnOrdering() << endl;
+
+        };
+    }
+}
+
+/****************************************************************
+ *          WRITE BINARY ROW
+ ****************************************************************/
+bool CompressedFitsWriter::writeBinaryRow(const char* bufferToWrite)
+{
+    if (_totalNumRows == 0)
+        writeHeader();
+
+    memcpy(&_buffer[_rowWidth*(_totalNumRows%_numRowsPerTile)], bufferToWrite, _rowWidth);
+    _totalNumRows++;
+    if (_totalNumRows%_numRowsPerTile == 0)
+    {
+        //which is the next thread that we should use ?
+        while (_threadStatus[_threadLooper] == _THREAD_COMPRESS_)
+            usleep(100000);
+
+        copyTransposeTile(_threadLooper);
+
+        while (_threadStatus[_threadLooper] != _THREAD_WAIT_)
+            usleep(100000);
+
+        _threadNumRows[_threadLooper] = _totalNumRows;
+        _threadStatus[_threadLooper] = _THREAD_COMPRESS_;
+        _threadLooper = (_threadLooper+1)%_numThreads;
+    }
+    return _file.good();
+}
+
+uint32_t CompressedFitsWriter::getRowWidth()
+{
+    return _rowWidth;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    memcpy(dest, src, numRows*sizeOfElems*numRowElems);
+    return numRows*sizeOfElems*numRowElems;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    string huffmanOutput;
+    uint32_t previousHuffmanSize = 0;
+    if (numRows < 2)
+    {//if we have less than 2 elems to compress, Huffman encoder does not work (and has no point). Just return larger size than uncompressed to trigger the raw storage.
+        return numRows*sizeOfElems*numRowElems + 1000;
+    }
+    if (sizeOfElems < 2 )
+    {
+        cout << "Fatal ERROR: HUFMANN can only encode short or longer types" << endl;
+        return 0;
+    }
+    uint32_t huffmanOffset = 0;
+    for (uint32_t j=0;j<numRowElems;j++)
+    {
+        Huffman::Encode(huffmanOutput,
+                        reinterpret_cast<const uint16_t*>(&src[j*sizeOfElems*numRows]),
+                        numRows*(sizeOfElems/2));
+        reinterpret_cast<uint32_t*>(&dest[huffmanOffset])[0] = huffmanOutput.size() - previousHuffmanSize;
+        huffmanOffset += sizeof(uint32_t);
+        previousHuffmanSize = huffmanOutput.size();
+    }
+    const size_t totalSize = huffmanOutput.size() + huffmanOffset;
+
+    //only copy if not larger than not-compressed size
+    if (totalSize < numRows*sizeOfElems*numRowElems)
+        memcpy(&dest[huffmanOffset], huffmanOutput.data(), huffmanOutput.size());
+
+    return totalSize;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+    //call the huffman transposed
+    return compressHUFFMAN(dest, src, numRowElems, sizeOfElems, numRows);
+}
+
+uint32_t CompressedFitsWriter::applySMOOTHING(char* , char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+
+    return numRows*sizeOfElems*numRowElems;
+}
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint64_t CompressedFitsWriter::compressBuffer(uint32_t threadIndex)
+{
+    uint32_t thisRoundNumRows = (_threadNumRows[threadIndex]%_numRowsPerTile) ? _threadNumRows[threadIndex]%_numRowsPerTile : _numRowsPerTile;
+    uint32_t offset=0;
+    uint32_t currentCatalogRow = (_threadNumRows[threadIndex]-1)/_numRowsPerTile;
+    uint64_t compressedOffset = sizeof(TileHeader); //skip the 'TILE' marker and tile size entry
+
+    //now compress each column one by one by calling compression on arrays
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        _catalog[currentCatalogRow][i].second = compressedOffset;
+
+        if (_columns[i].numElems() == 0) continue;
+
+        BlockHeader& head = _columns[i].getBlockHeader();
+        const vector<uint16_t>& sequence = _columns[i].getCompressionSequence();
+        //set the default byte telling if uncompressed the compressed Flag
+        uint64_t previousOffset = compressedOffset;
+        //skip header data
+        compressedOffset += sizeof(BlockHeader) + sizeof(uint16_t)*sequence.size();
+
+        for (uint32_t j=0;j<sequence.size(); j++)
+        {
+            switch (sequence[j])
+            {
+                case FITS::kFactRaw:
+//                    if (head.numProcs == 1)
+                        compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactSmoothing:
+                        applySMOOTHING(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactHuffman16:
+                    if (head.ordering == FITS::kOrderByCol)
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                    else
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), _columns[i].numElems(), _columns[i].sizeOfElems(),  thisRoundNumRows);
+                break;
+                default:
+                    cout << "ERROR: Unkown compression sequence entry: " << sequence[i] << endl;
+                break;
+            }
+        }
+
+        //check if compressed size is larger than uncompressed
+        if (sequence[0] != FITS::kFactRaw &&
+            compressedOffset - previousOffset > _columns[i].sizeOfElems()*_columns[i].numElems()*thisRoundNumRows+sizeof(BlockHeader)+sizeof(uint16_t)*sequence.size())
+        {//if so set flag and redo it uncompressed
+            cout << "REDOING UNCOMPRESSED" << endl;
+            compressedOffset = previousOffset + sizeof(BlockHeader) + 1;
+            compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+            BlockHeader he;
+            he.size = compressedOffset - previousOffset;
+            he.numProcs = 1;
+            he.ordering = FITS::kOrderByRow;
+            memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&he), sizeof(BlockHeader));
+            _compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)] = FITS::kFactRaw;
+            offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+           _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+           continue;
+        }
+        head.size = compressedOffset - previousOffset;
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&head), sizeof(BlockHeader));
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)]), sequence.data(), sizeof(uint16_t)*sequence.size());
+
+         offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+        _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+    }
+
+    TileHeader tHead(thisRoundNumRows, compressedOffset);
+    memcpy(_compressedBuffer[threadIndex], &tHead, sizeof(TileHeader));
+    return compressedOffset;
+}
+
+/****************************************************************
+ *              WRITE COMPRESS DATA TO DISK
+ ****************************************************************/
+bool CompressedFitsWriter::writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite)
+{
+    char* checkSumPointer = _compressedBuffer[threadID];
+    int32_t extraBytes = 0;
+    uint32_t sizeToChecksum = sizeToWrite;
+    if (_checkOffset != 0)
+    {//should we extend the array to the left ?
+        sizeToChecksum += _checkOffset;
+        checkSumPointer -= _checkOffset;
+        memset(checkSumPointer, 0, _checkOffset);
+    }
+    if (sizeToChecksum%4 != 0)
+    {//should we extend the array to the right ?
+        extraBytes = 4 - (sizeToChecksum%4);
+        memset(checkSumPointer+sizeToChecksum, 0,extraBytes);
+        sizeToChecksum += extraBytes;
+    }
+    //do the checksum
+    _checksum.add(checkSumPointer, sizeToChecksum);
+//    cout << endl << "Checksum: " << _checksum.val() << endl;
+    _checkOffset = (4 - extraBytes)%4;
+    //write data to disk
+    _file.write(_compressedBuffer[threadID], sizeToWrite);
+    return _file.good();
+}
+
+/****************************************************************
+ *              WRITER THREAD LOOP
+ ****************************************************************/
+void* CompressedFitsWriter::threadFunction(void* context)
+{
+    CompressedFitsWriter* myself =static_cast<CompressedFitsWriter*>(context);
+
+    uint32_t myID = 0;
+    pthread_mutex_lock(&(myself->_mutex));
+    myID = myself->_threadIndex++;
+    pthread_mutex_unlock(&(myself->_mutex));
+    uint32_t threadToWaitForBeforeWriting = (myID == 0) ? myself->_numThreads-1 : myID-1;
+
+    while (myself->_threadStatus[myID] != _THREAD_EXIT_)
+    {
+        while (myself->_threadStatus[myID] == _THREAD_WAIT_)
+            usleep(100000);
+        if (myself->_threadStatus[myID] != _THREAD_COMPRESS_)
+            continue;
+        uint32_t numBytes = myself->compressBuffer(myID);
+        myself->_threadStatus[myID] = _THREAD_WRITE_;
+
+        //wait for the previous data to be written
+        while (myself->_threadIndex != threadToWaitForBeforeWriting)
+            usleep(1000);
+        //do the actual writing to disk
+        pthread_mutex_lock(&(myself->_mutex));
+        myself->writeCompressedDataToDisk(myID, numBytes);
+        myself->_threadIndex = myID;
+        pthread_mutex_unlock(&(myself->_mutex));
+        myself->_threadStatus[myID] = _THREAD_WAIT_;
+    }
+    return NULL;
+}
+
+/****************************************************************
+ *                 PRINT USAGE
+ ****************************************************************/
+void printUsage()
+{
+    cout << endl;
+    cout << "The FACT-Fits compressor reads an input Fits file from FACT"
+            " and compresses it.\n It can use a drs calibration in order to"
+            " improve the compression ratio. If so, the input calibration"
+            " is embedded into the compressed file.\n"
+            " By default, the Data column will be compressed using SMOOTHMAN (Thomas' algorithm)"
+            " while other columns will be compressed with the AMPLITUDE coding (Veritas)"
+            "Usage: Compressed_Fits_Test <inputFile>";
+    cout << endl;
+}
+
+/****************************************************************
+ *                  PRINT HELP
+ ****************************************************************/
+void printHelp()
+{
+    cout << endl;
+    cout << "The inputFile is required. It must have fits in its filename and the compressed file will be written in the same folder. "
+            "The fz extension will be added, replacing the .gz one if required \n"
+            "If output is specified, then it will replace the automatically generated output filename\n"
+            "If --drs, followed by a drs calib then it will be applied to the data before compressing\n"
+            "rowPerTile can be used to tune how many rows are in each tile. Default is 100\n"
+            "threads gives the number of threads to use. Cannot be less than the default (1)\n"
+            "compression explicitely gives the compression scheme to use for a given column. The syntax is:\n"
+            "<ColumnName>=<CompressionScheme> with <CompressionScheme> one of the following:\n"
+            "UNCOMPRESSED\n"
+            "AMPLITUDE\n"
+            "HUFFMAN\n"
+            "SMOOTHMAN\n"
+            "INT_WAVELET\n"
+            "\n"
+            "--quiet removes any textual output, except error messages\n"
+            "--verify makes the compressor check the compressed data. It will read it back, and compare the reconstructed CHECKSUM and DATASUM with the original file values."
+            ;
+    cout << endl << endl;
+}
+
+/****************************************************************
+ *                  SETUP CONFIGURATION
+ ****************************************************************/
+void setupConfiguration(Configuration& conf)
+{
+    po::options_description configs("FitsCompressor options");
+    configs.add_options()
+            ("inputFile,i",   vars<string>(),      "Input file")
+            ("drs,d",         var<string>(),       "Input drs calibration file")
+            ("rowPerTile,r",  var<unsigned int>(), "Number of rows per tile. Default is 100")
+            ("output,o",      var<string>(),       "Output file. If empty, .fz is appened to the original name")
+            ("threads,t",     var<unsigned int>(), "Number of threads to use for compression")
+            ("compression,c", vars<string>(),      "which compression to use for which column. Syntax <colName>=<compressionScheme>")
+            ("quiet,q",       po_switch(),         "Should the program display any text at all ?")
+            ("verify,v",      po_switch(),         "Should we verify the data that has been compressed ?")
+            ;
+    po::positional_options_description positional;
+    positional.add("inputFile", -1);
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(positional);
+}
+
+/****************************************************************
+ *                  MAIN
+ ****************************************************************/
+int main(int argc, const char** argv)
+{
+     Configuration conf(argv[0]);
+     conf.SetPrintUsage(printUsage);
+     setupConfiguration(conf);
+
+     if (!conf.DoParse(argc, argv, printHelp))
+         return -1;
+
+     //initialize the file names to nothing.
+     string fileNameIn = "";
+     string fileNameOut = "";
+     string drsFileName = "";
+     uint32_t numRowsPerTile = 100;
+     bool displayText=true;
+
+    //parse configuration
+    if (conf.Get<bool>("quiet")) displayText = false;
+    const vector<string> inputFileNameVec = conf.Vec<string>("inputFile");
+    if (inputFileNameVec.size() != 1)
+    {
+       cout << "Error: ";
+       if (inputFileNameVec.size() == 0) cout << "no";
+       else cout << inputFileNameVec.size();
+       cout << " input file(s) given. Expected one. Aborting. Input:" << endl;;
+       for (unsigned int i=0;i<inputFileNameVec.size(); i++)
+           cout << inputFileNameVec[i] << endl;
+       return -1;
+    }
+
+    //Assign the input filename
+    fileNameIn = inputFileNameVec[0];
+
+    //Check if we have a drs calib too
+    if (conf.Has("drs")) drsFileName = conf.Get<string>("drs");
+
+    //Should we verify the data ?
+    bool verifyDataPlease = false;
+    if (conf.Has("verify")) verifyDataPlease = conf.Get<bool>("verify");
+
+
+    //should we use a specific output filename ?
+    if (conf.Has("output"))
+        fileNameOut = conf.Get<string>("output");
+    else
+    {
+        size_t pos = fileNameIn.find(".fits");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: input file does not seems ot be fits. Aborting." << endl;
+            return -1;
+        }
+        fileNameOut = fileNameIn + ".fz";
+    }
+
+
+    //should we use specific compression on some columns ?
+    const vector<string> columnsCompression = conf.Vec<string>("compression");
+
+    //split up values between column names and compression scheme
+    vector<std::pair<string, string>> compressions;
+    for (unsigned int i=0;i<columnsCompression.size();i++)
+    {
+        size_t pos = columnsCompression[i].find_first_of("=");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: Something wrong occured while parsing " << columnsCompression[i] << ". Aborting." << endl;
+            return -1;
+        }
+        string comp = columnsCompression[i].substr(pos+1);
+        if (comp != "UNCOMPRESSED" && comp != "AMPLITUDE" && comp != "HUFFMAN" &&
+            comp != "SMOOTHMAN" && comp != "INT_WAVELET")
+        {
+            cout << "Unkown compression scheme requested (" << comp << "). Aborting." << endl;
+            return -1;
+        }
+        compressions.push_back(make_pair(columnsCompression[i].substr(0, pos), comp));
+    }
+
+    //How many rows per tile should we use ?
+    if (conf.Has("rowPerTile")) numRowsPerTile = conf.Get<unsigned int>("rowPerTile");
+
+    /************************************************************************************
+     *  Done reading configuration. Open relevant files
+     ************************************************************************************/
+
+    //Open input's fits file
+    factfits inFile(fileNameIn);
+
+    if (inFile.IsCompressedFITS())
+    {
+        cout << "ERROR: input file is already a compressed fits. Cannot be compressed again: Aborting." << endl;
+        return -1;
+    }
+
+    //decide how many tiles should be put in the compressed file
+    uint32_t originalNumRows = inFile.GetNumRows();
+    uint32_t numTiles = (originalNumRows%numRowsPerTile) ? (originalNumRows/numRowsPerTile)+1 : originalNumRows/numRowsPerTile;
+    CompressedFitsWriter outFile(numTiles, numRowsPerTile);
+
+    //should we use a specific number of threads for compressing ?
+    unsigned int numThreads = 1;
+    if (conf.Has("threads"))
+    {
+        numThreads = conf.Get<unsigned int>("threads");
+        outFile.setNumWorkingThreads(numThreads);
+    }
+
+    if (!outFile.open(fileNameOut))
+    {
+        cout << "Error: could not open " << fileNameOut << " for writing" << endl;
+        return -1;
+    }
+
+    //Because the file to open MUST be given by the constructor, I must use a pointer instead
+    factfits* drsFile = NULL;
+    //try to open the Drs file. If any.
+    if (drsFileName != "")
+    {
+        try
+        {
+            drsFile = new factfits(drsFileName);
+        }
+        catch (...)
+        {
+            cout << "Error: could not open " << drsFileName << " for calibration" << endl;
+            return -1;
+        }
+    }
+
+    if (displayText)
+    {
+        cout << endl;
+        cout << "**********************" << endl;
+        cout << "Will compress from    : " << fileNameIn << endl;
+        cout << "to                    : " << fileNameOut << endl;
+        if (drsFileName != "")
+            cout << "while calibrating with: " << drsFileName << endl;
+        cout << "Compression will use  : " << numThreads << " worker threads" << endl;
+        cout << "Data will be verified : ";
+        if (verifyDataPlease)
+            cout << "yes" << endl;
+        else
+            cout << "no (WARNING !)" << endl;
+        cout << "**********************" << endl;
+        cout << endl;
+    }
+
+    /************************************************************************************
+     *  Done opening input files. Allocate memory and configure output file
+     ************************************************************************************/
+
+    //allocate the buffer for temporary storage of each read/written row
+    uint32_t rowWidth = inFile.GetUInt("NAXIS1");
+    char* buffer = new char[rowWidth + 12];
+    memset(buffer, 0, 4);
+    buffer = buffer+4;
+
+    //get the source columns
+    const fits::Table::Columns& columns = inFile.GetColumns();
+    const fits::Table::SortedColumns& sortedColumns = inFile.GetSortedColumns();
+    if (displayText)
+        cout << "Input file has " << columns.size() << " columns and " << inFile.GetNumRows() << " rows" << endl;
+
+    //Add columns.
+    uint32_t totalRowWidth = 0;
+    for (uint32_t i=0;i<sortedColumns.size(); i++)
+    {
+        //get column name
+        ostringstream str;
+        str << "TTYPE" << i+1;
+        string colName = inFile.GetStr(str.str());
+        if (displayText)
+        {
+            cout << "Column " << colName;
+            for (uint32_t j=colName.size();j<21;j++)
+                cout << " ";
+            cout << " -> ";
+        }
+
+        //get header structures
+        BlockHeader rawHeader;
+        BlockHeader smoothmanHeader(0, FITS::kOrderByRow, 2);
+        vector<uint16_t> rawProcessings(1);
+        rawProcessings[0] = FITS::kFactRaw;
+        vector<uint16_t> smoothmanProcessings(2);
+        smoothmanProcessings[0] = FITS::kFactSmoothing;
+        smoothmanProcessings[1] = FITS::kFactHuffman16;
+//        smoothmanProcessings[2] = FACT_RAW;
+
+        totalRowWidth += sortedColumns[i].bytes;
+
+        //first lets see if we do have an explicit request
+        bool explicitRequest = false;
+        for (unsigned int j=0;j<compressions.size();j++)
+        {
+            if (compressions[j].first == colName)
+            {
+                explicitRequest = true;
+                if (displayText) cout << compressions[j].second << endl;
+                if (compressions[j].second == "UNCOMPRESSED")
+                    outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type, sortedColumns[i].num, rawHeader, rawProcessings));
+                if (compressions[j].second == "SMOOTHMAN")
+                    outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, smoothmanHeader, smoothmanProcessings));
+                break;
+            }
+        }
+
+        if (explicitRequest) continue;
+
+        if (colName != "Data")
+        {
+            if (displayText) cout << "UNCOMPRESSED" << endl;
+            outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, rawHeader, rawProcessings));
+        }
+        else
+        {
+            if (displayText) cout << "SMOOTHMAN" << endl;
+            outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, smoothmanHeader, smoothmanProcessings));
+        }
+    }
+
+    //translate original header entries to their Z-version
+    const fits::Table::Keys& header = inFile.GetKeys();
+    for (fits::Table::Keys::const_iterator i=header.begin(); i!= header.end(); i++)
+    {
+        string k = i->first;//header[i].key();
+        if (k == "XTENSION" || k == "BITPIX" || k == "PCOUNT" || k == "GCOUNT" || k == "TFIELDS")
+            continue;
+        if (k == "CHECKSUM")
+        {
+            outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("ZCHKSUM", i->second.value, i->second.comment));
+            continue;
+        }
+        if (k == "DATASUM")
+        {
+            outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("ZDTASUM", i->second.value, i->second.comment));
+            continue;
+        }
+        k = k.substr(0,5);
+        if (k == "TTYPE" || k == "TFORM")
+        {
+            string tmpKey = i->second.fitsString;
+            tmpKey[0] = 'Z';
+            outFile.setHeaderKey(tmpKey);
+            continue;
+        }
+        if (k == "NAXIS")
+            continue;
+        outFile.setHeaderKey(i->second.fitsString);
+//        cout << i->first << endl;
+    }
+
+    outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("RAWSUM", "         0", "Checksum of raw littlen endian data"));
+
+    //deal with the DRS calib
+    int16_t* drsCalib16 = NULL;
+
+    //load the drs calib. data
+    int32_t startCellOffset = -1;
+    if (drsFileName != "")
+    {
+        drsCalib16 = new int16_t[1440*1024];
+        float* drsCalibFloat = NULL;
+        try
+        {
+            drsCalibFloat = reinterpret_cast<float*>(drsFile->SetPtrAddress("BaselineMean"));
+        }
+        catch (...)
+        {
+            cout << "Could not find column BaselineMean in drs calibration file " << drsFileName << ". Aborting" << endl;
+            return -1;
+        }
+
+        //read the calibration and calculate its integer value
+        drsFile->GetNextRow();
+        for (uint32_t i=0;i<1440*1024;i++)
+            drsCalib16[i] = (int16_t)(drsCalibFloat[i]*4096.f/2000.f);
+
+
+        //get the start cells offsets
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+            if (it->first == "StartCellData")
+            {
+                startCellOffset = it->second.offset;
+                if (it->second.type != 'I')
+                {
+                    cout << "Wrong type for the StartCellData Column: " << it->second.type << " instead of I expected"<< endl;
+                    return -1;
+                }
+            }
+
+        if (startCellOffset == -1)
+        {
+            cout << "WARNING: Could not find StartCellData in input file " << fileNameIn << ". Doing it uncalibrated"<< endl;
+        }
+        else
+        {
+            //assign it to the ouput file
+            outFile.setDrsCalib(drsCalib16);
+        }
+    }
+
+    /************************************************************************************
+     *  Done configuring compression. Do the real job now !
+     ************************************************************************************/
+
+    if (displayText) cout << "Converting file..." << endl;
+
+    int numSlices = -1;
+    int32_t dataOffset = -1;
+
+    //Get the pointer to the column that must be drs-calibrated
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+        if (it->first == "Data")
+        {
+            numSlices = it->second.num;
+            dataOffset = it->second.offset;
+        }
+    if (numSlices % 1440 != 0)
+    {
+        cout << "seems like the number of samples is not a multiple of 1440. Aborting." << endl;
+        return -1;
+    }
+    if (dataOffset == -1)
+    {
+        cout << "Could not find the column Data in the input file. Aborting." << endl;
+        return -1;
+    }
+
+    numSlices /= 1440;
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    vector<void*>   readPointers;
+    vector<int32_t> readOffsets;
+    vector<int32_t> readElemSize;
+    vector<int32_t> readNumElems;
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(inFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    Checksum rawsum;
+    //Convert each row one after the other
+    ostringstream wrongChannels;
+    map<int, int> wrongChannelsMap;
+    map<int, int> wrongChannelsLastValues;
+    for (uint32_t i=0;i<1440;i++)
+    {
+        wrongChannelsMap[i] = 0;
+        wrongChannelsLastValues[i] = 0;
+    }
+    for (uint32_t i=0;i<inFile.GetNumRows();i++)
+    {
+        if (displayText) cout << "\r Row " << i+1 << flush;
+        if (!inFile.GetNextRow())
+        {
+            cout << "ERROR: file has less rows than advertized. aborting" << endl;
+            exit(0);
+        }
+        //copy from inFile internal structures to buffer
+        int32_t count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+
+        char* checkSumPointer = buffer;
+        const int chkOffset = (i*totalRowWidth)%4;
+        checkSumPointer -= chkOffset;
+        uint32_t sizeToChecksum = totalRowWidth + chkOffset;
+        if (sizeToChecksum%4 != 0)
+        {
+            int32_t extraBytes = 4 - (sizeToChecksum%4);
+            memset(checkSumPointer+sizeToChecksum, 0, extraBytes);
+            sizeToChecksum += extraBytes;
+        }
+        rawsum.add(checkSumPointer, sizeToChecksum, false);
+
+        if (startCellOffset != -1)
+        {//drs calibrate this data
+            for (int j=0;j<1440;j++)
+            {
+                const int thisStartCell = reinterpret_cast<int16_t*>(&buffer[startCellOffset])[j];
+                if (thisStartCell > 1023)
+                {
+                    wrongChannelsMap[j]++;
+                    wrongChannelsLastValues[j] = thisStartCell;
+                    wrongChannels << j;
+                }
+                if (thisStartCell < 0)  continue;
+                for (int k=0;k<numSlices;k++)
+                    reinterpret_cast<int16_t*>(&buffer[dataOffset])[numSlices*j + k] -= drsCalib16[1024*j + (thisStartCell+k)%1024];
+            }
+        }
+        outFile.writeBinaryRow(buffer);
+    };
+
+    if (wrongChannels.str() != "")
+    {
+        cout << "ERROR: Wrong channels: ";
+        for (uint32_t i=0;i<1440;i++)
+        {
+            if (wrongChannelsMap[i] != 0)
+                cout << i << "(" << wrongChannelsMap[i] << "|" << wrongChannelsLastValues[i] << ") ";
+        }
+        cout << endl;
+        exit(-1);
+    }
+    ostringstream strSum;
+    strSum << rawsum.val();
+    outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("RAWSUM", strSum.str(), "Checksum of raw littlen endian data"));
+
+    //Get table name for later use in case the compressed file is to be verified
+    string tableName = inFile.GetStr("EXTNAME");
+
+    if (displayText) cout << endl << "Done. Flushing output file..." << endl;
+
+    inFile.close();
+    if (!outFile.close())
+    {
+        cout << "Something went wrong while writing the catalog: negative index" << endl;
+        return false;
+    }
+
+    if (drsCalib16 != NULL)
+        delete[] drsCalib16;
+
+    if (displayText) cout << "Done." << endl;
+
+    /************************************************************************************
+     *  Actual job done. Should we verify what we did ?
+     ************************************************************************************/
+
+    if (verifyDataPlease)
+    {
+        if (displayText) cout << "Now verify data..." << endl;
+    }
+    else
+        return 0;
+
+    //get a compressed reader
+//TEMP try to copy the file too
+//    string copyName("/gpfs/scratch/fact/etienne/copyFile.fz");
+//    string copyName(fileNameOut+".copy");
+    string copyName("");
+    factfits verifyFile(fileNameOut, copyName, tableName, false);
+
+    //and the header of the compressed file
+    const fits::Table::Keys& header2 = verifyFile.GetKeys();
+
+    //get a non-compressed writer
+    ofits reconstructedFile;
+
+    //figure out its name: /dev/null unless otherwise specified
+    string reconstructedName = fileNameOut+".recons";
+    reconstructedName = "/dev/null";
+    reconstructedFile.open(reconstructedName.c_str(), false);
+
+    //reconstruct the original columns from the compressed file.
+    string origChecksumStr;
+    string origDatasum;
+
+    //reset tablename value so that it is re-read from compressed table's header
+    tableName = "";
+
+    /************************************************************************************
+     *  Reconstruction setup done. Rebuild original header
+     ************************************************************************************/
+
+    //re-tranlate the keys
+    for (fits::Table::Keys::const_iterator it=header2.begin(); it!= header2.end(); it++)
+    {
+        string k = it->first;
+        if (k == "XTENSION" || k == "BITPIX"  || k == "PCOUNT"   || k == "GCOUNT" ||
+            k == "TFIELDS"  || k == "ZTABLE"  || k == "ZNAXIS1"  || k == "ZNAXIS2" ||
+            k == "ZHEAPPTR" || k == "ZPCOUNT" || k == "ZTILELEN" || k == "THEAP" ||
+            k == "CHECKSUM" || k == "DATASUM" || k == "FCTCPVER" || k == "ZHEAP")
+        {
+            continue;
+        }
+
+        if (k == "ZCHKSUM")
+        {
+            reconstructedFile.SetKeyComment("CHECKSUM", it->second.comment);
+            origChecksumStr = it->second.value;
+            continue;
+        }
+        if (k == "RAWSUM")
+        {
+            continue;
+        }
+
+        if (k == "ZDTASUM")
+        {
+            reconstructedFile.SetKeyComment("DATASUM",  it->second.comment);
+            origDatasum = it->second.value;
+            continue;
+        }
+
+        if (k == "EXTNAME")
+        {
+            tableName = it->second.value;
+        }
+
+        k = k.substr(0,5);
+
+        if (k == "TTYPE")
+        {//we have an original column name here.
+         //manually deal with these in order to preserve the ordering (easier than re-constructing yet another list on the fly)
+            continue;
+        }
+
+        if (k == "TFORM" || k == "NAXIS" || k == "ZCTYP" )
+        {
+            continue;
+        }
+
+        if (k == "ZFORM" || k == "ZTYPE")
+        {
+            string tmpKey = it->second.fitsString;
+            tmpKey[0] = 'T';
+            reconstructedFile.SetKeyFromFitsString(tmpKey);
+            continue;
+        }
+
+        reconstructedFile.SetKeyFromFitsString(it->second.fitsString);
+    }
+
+    if (tableName == "")
+    {
+        cout << "Error: table name from file " << fileNameOut << " could not be found. Aborting" << endl;
+        return -1;
+    }
+
+    //Restore the original columns
+    for (uint32_t numCol=1; numCol<10000; numCol++)
+    {
+        ostringstream str;
+        str << numCol;
+        if (!verifyFile.HasKey("TTYPE"+str.str())) break;
+
+        string ttype    = verifyFile.GetStr("TTYPE"+str.str());
+        string tform    = verifyFile.GetStr("ZFORM"+str.str());
+        char   type     = tform[tform.size()-1];
+        string number   = tform.substr(0, tform.size()-1);
+        int    numElems = atoi(number.c_str());
+
+        if (number == "") numElems=1;
+
+        reconstructedFile.AddColumn(numElems, type, ttype, "", "", false);
+    }
+
+    reconstructedFile.WriteTableHeader(tableName.c_str());
+
+    /************************************************************************************
+     *  Original header restored. Do the data
+     ************************************************************************************/
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    readPointers.clear();
+    readOffsets.clear();
+    readElemSize.clear();
+    readNumElems.clear();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(verifyFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    //do the actual reconstruction work
+    uint32_t i=1;
+    while (i<=verifyFile.GetNumRows() && verifyFile.GetNextRow())
+    {
+        int count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+        if (displayText) cout << "\r Row " << i << flush;
+        reconstructedFile.WriteRow(buffer, rowWidth);
+        i++;
+    }
+
+    if (displayText) cout << endl;
+
+    //close reconstruction input and output
+//    Do NOT close the verify file, otherwise data cannot be flushed to copy file
+//    verifyFile.close();
+    if (!verifyFile.IsFileOk())
+        cout << "ERROR: file checksums seems wrong" << endl;
+
+    if (!reconstructedFile.close())
+    {
+        cout << "ERROR: disk probably full..." << endl;
+        return -1;
+    }
+
+    //get original and reconstructed checksum and datasum
+    std::pair<string, int> origChecksum = make_pair(origChecksumStr, atoi(origDatasum.c_str()));
+    std::pair<string, int> newChecksum = reconstructedFile.GetChecksumData();
+
+    //verify that no mistake was made
+    if (origChecksum.second != newChecksum.second)
+    {
+        cout << "ERROR: datasums are NOT identical: " << (uint32_t)(origChecksum.second) << " vs " << (uint32_t)(newChecksum.second) << endl;
+        return -1;
+    }
+    if (origChecksum.first != newChecksum.first)
+    {
+        cout << "WARNING: checksums are NOT Identical: " << origChecksum.first << " vs " << newChecksum.first << endl;
+    }
+    else
+    {
+        if (true) cout << "Ok" << endl;
+    }
+
+    buffer = buffer-4;
+    delete[] buffer;
+    return 0;
+}
+
Index: branches/FACT++_part_filenames/src/fitsDecompressor.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsDecompressor.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsDecompressor.cc	(revision 18732)
@@ -0,0 +1,1850 @@
+/*
+ * fitsCompressor.cc
+ *
+ *  Created on: May 7, 2013
+ *      Author: lyard
+ */
+
+
+#include "Configuration.h"
+#include "../externals/factfits.h"
+#include "../externals/ofits.h"
+#include "../externals/checksum.h"
+
+#include <map>
+#include <fstream>
+#include <sstream>
+#include <iostream>
+
+
+using namespace std;
+
+class CompressedFitsFile
+{
+public:
+    class HeaderEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            HeaderEntry(): _key(""),
+                           _value(""),
+                           _comment(""),
+                           _fitsString("")
+            {
+            }
+
+            /**
+             * Regular constructor.
+             * @param key the name of the keyword entry
+             * @param value its value
+             * @param comment an optionnal comment to be placed after the value
+             */
+            template<typename T>
+            HeaderEntry(const string& k,
+                        const T& val,
+                        const string& comm) : _key(k),
+                                              _value(""),
+                                              _comment(comm),
+                                              _fitsString("")
+            {
+                setValue(val);
+            }
+
+            /**
+             * From fits.h
+             */
+            string Trim(const string &str, char c=' ')
+            {
+                // Trim Both leading and trailing spaces
+                const size_t pstart = str.find_first_not_of(c); // Find the first character position after excluding leading blank spaces
+                const size_t pend   = str.find_last_not_of(c);  // Find the first character position from reverse af
+
+                // if all spaces or empty return an empty string
+                if (string::npos==pstart || string::npos==pend)
+                    return string();
+
+                return str.substr(pstart, pend-pstart+1);
+            }
+            /**
+             *  Constructor from the original fits entry
+             */
+            HeaderEntry(const string& line)
+            {
+                _fitsString = line.data();
+
+                //parse the line
+                _key = Trim(line.substr(0,8));
+                //COMMENT and/or HISTORY values
+                if (line.substr(8,2)!= "= ")
+                {
+                    _value = "";
+                    _comment = Trim(line.substr(10));
+                    return;
+                }
+                string next=line.substr(10);
+                const size_t slash = next.find_first_of('/');
+                _value = Trim(Trim(Trim(next.substr(0, slash)), '\''));
+                _comment = Trim(next.substr(slash+1));
+            }
+            /**
+             *  Alternative constroctor from the fits entry
+             */
+            HeaderEntry(const vector<char>& lineVec)
+            {
+                HeaderEntry(string(lineVec.data()));
+            }
+            /**
+             *  Destructor
+             */
+            virtual ~HeaderEntry(){}
+
+            const string& value()      const {return _value;}
+            const string& key()        const {return _key;}
+            const string& comment()    const {return _comment;}
+            const string& fitsString() const {return _fitsString;}
+
+            /**
+             * Set a keyword value.
+             * @param value The value to be set
+             * @param update whether the value already exist or not. To be modified soon.
+             */
+            template<typename T>
+            void setValue(const T& val)
+            {
+                ostringstream str;
+                str << val;
+                _value = str.str();
+                buildFitsString();
+            };
+            /**
+             *  Set the comment for a given entry
+             */
+            void setComment(const string& comm)
+            {
+                _comment = comm;
+                buildFitsString();
+            }
+
+        private:
+            /**
+             *  Construct the FITS header string from the key, value and comment
+             */
+            void buildFitsString()
+            {
+                ostringstream str;
+                unsigned int totSize = 0;
+
+                // Tuncate the key if required
+                if (_key.length() > 8)
+                {
+                    str << _key.substr(0, 8);
+                    totSize += 8;
+                }
+                else
+                {
+                    str << _key;
+                    totSize += _key.length();
+                }
+
+                // Append space if key is less than 8 chars long
+                for (int i=totSize; i<8;i++)
+                {
+                    str << " ";
+                    totSize++;
+                }
+
+                // Add separator
+                str << "= ";
+                totSize += 2;
+
+                // Format value
+                if (_value.length() < 20)
+                    for (;totSize<30-_value.length();totSize++)
+                        str << " ";
+
+                if (_value.length() > 70)
+                {
+                    str << _value.substr(0,70);
+                    totSize += 70;
+                }
+                else
+                {
+                    str << _value;
+                    totSize += _value.size();
+                }
+
+                // If there is space remaining, add comment area
+                if (totSize < 77)
+                {
+                    str << " / ";
+                    totSize += 3;
+                    if (totSize < 80)
+                    {
+                        unsigned int commentSize = 80 - totSize;
+                        if (_comment.length() > commentSize)
+                        {
+                            str << _comment.substr(0,commentSize);
+                            totSize += commentSize;
+                        }
+                        else
+                        {
+                            str << _comment;
+                            totSize += _comment.length();
+                        }
+                    }
+                }
+
+                // If there is yet some free space, fill up the entry with spaces
+                for (int i=totSize; i<80;i++)
+                    str << " ";
+
+                _fitsString = str.str();
+
+                // Check for correct completion
+                if (_fitsString.length() != 80)
+                    cout << "Error |" << _fitsString << "| is not of length 80" << endl;
+            }
+
+            string _key;        ///< the key (name) of the header entry
+            string _value;      ///< the value of the header entry
+            string _comment;    ///< the comment associated to the header entry
+            string _fitsString; ///< the string that will be written to the fits file
+    };
+
+    /**
+     *  Supported compressions
+     */
+    typedef enum
+    {
+        UNCOMPRESSED,
+        SMOOTHMAN
+    } FitsCompression;
+
+    /**
+     *  Columns class
+     */
+    class ColumnEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            ColumnEntry();
+
+            /**
+             *  Default destructor
+             */
+            virtual ~ColumnEntry(){}
+
+            /**
+             *  Constructor from values
+             *  @param n the column name
+             *  @param t the column type
+             *  @param numof the number of entries in the column
+             *  @param comp the compression type for this column
+             */
+            ColumnEntry(const string& n,
+                        char          t,
+                        int           numOf,
+                        BlockHeader&   head,
+                        vector<uint16_t>& seq) : _name(n),
+                                                 _num(numOf),
+                                                 _typeSize(0),
+                                                 _offset(0),
+                                                 _type(t),
+                                                 _description(""),
+                                                 _header(head),
+                                                 _compSequence(seq)
+            {
+                switch (t)
+                {
+                    case 'L':
+                    case 'A':
+                    case 'B': _typeSize = 1; break;
+                    case 'I': _typeSize = 2; break;
+                    case 'J':
+                    case 'E': _typeSize = 4; break;
+                    case 'K':
+                    case 'D': _typeSize = 8; break;
+                    default:
+                    cout << "Error: typename " << t << " missing in the current implementation" << endl;
+                };
+
+                ostringstream str;
+                str << "data format of field: ";
+
+                switch (t)
+                {
+                    case 'L': str << "1-byte BOOL"; break;
+                    case 'A': str << "1-byte CHAR"; break;
+                    case 'B': str << "BYTE"; break;
+                    case 'I': str << "2-byte INTEGER"; break;
+                    case 'J': str << "4-byte INTEGER"; break;
+                    case 'K': str << "8-byte INTEGER"; break;
+                    case 'E': str << "4-byte FLOAT"; break;
+                    case 'D': str << "8-byte FLOAT"; break;
+                }
+
+                _description = str.str();
+            }
+
+            const string& name()                 const { return _name;};
+            int           width()                const { return _num*_typeSize;};
+            int           offset()               const { return _offset; };
+            int           numElems()             const { return _num; };
+            int           sizeOfElems()          const { return _typeSize;};
+            void          setOffset(int off)           { _offset = off;};
+            char          type()                 const { return _type;};
+            string        getDescription()       const { return _description;}
+            BlockHeader& getBlockHeader()  { return _header;}
+            const vector<uint16_t>& getCompressionSequence() const { return _compSequence;}
+            const char& getColumnOrdering() const { return _header.ordering;}
+
+
+            string        getCompressionString() const
+            {
+                return "FACT";
+             /*
+                ostringstream str;
+                for (uint32_t i=0;i<_compSequence.size();i++)
+                switch (_compSequence[i])
+                {
+                    case FACT_RAW: if (str.str().size() == 0) str << "RAW"; break;
+                    case FACT_SMOOTHING: str << "SMOOTHING "; break;
+                    case FACT_HUFFMAN16: str << "HUFFMAN16 "; break;
+                };
+                return str.str();*/
+            }
+
+        private:
+
+            string _name;          ///< name of the column
+            int     _num;          ///< number of elements contained in one row of this column
+            int    _typeSize;      ///< the number of bytes taken by one element
+            int    _offset;        ///< the offset of the column, in bytes, from the beginning of one row
+            char   _type;          ///< the type of the column, as specified by the fits documentation
+            string _description;   ///< a description for the column. It will be placed in the header
+            BlockHeader _header;
+            vector<uint16_t> _compSequence;
+    };
+
+    public:
+        ///@brief default constructor. Assigns a default number of rows and tiles
+        CompressedFitsFile(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsFile();
+
+        ///@brief get the header of the file
+        vector<HeaderEntry>& getHeaderEntries() { return _header;}
+
+    protected:
+        ///@brief protected function to allocate the intermediate buffers
+        bool reallocateBuffers();
+
+        //FITS related stuff
+        vector<HeaderEntry>  _header;         ///< Header keys
+        vector<ColumnEntry>  _columns;        ///< Columns in the file
+        uint32_t             _numTiles;       ///< Number of tiles (i.e. groups of rows)
+        uint32_t             _numRowsPerTile; ///< Number of rows per tile
+        uint32_t             _totalNumRows;   ///< Total number of raws
+        uint32_t             _rowWidth;       ///< Total number of bytes in one row
+        bool                 _headerFlushed;  ///< Flag telling whether the header record is synchronized with the data on disk
+        char*                _buffer;         ///< Memory buffer to store rows while they are not compressed
+        Checksum             _checksum;       ///< Checksum for asserting the consistency of the data
+        fstream              _file;           ///< The actual file streamer for accessing disk data
+
+        //compression related stuff
+        typedef pair<int64_t, int64_t> CatalogEntry;
+        typedef vector<CatalogEntry>   CatalogRow;
+        typedef vector<CatalogRow>     CatalogType;
+        CatalogType _catalog;              ///< Catalog, i.e. the main table that points to the compressed data.
+        uint64_t                 _heapPtr; ///< the address in the file of the heap area
+        vector<char*> _transposedBuffer;   ///< Memory buffer to store rows while they are transposed
+        vector<char*> _compressedBuffer;   ///< Memory buffer to store rows while they are compressed
+
+        //thread related stuff
+        uint32_t          _numThreads;    ///< The number of threads that will be used to compress
+        uint32_t          _threadIndex;   ///< A variable to assign threads indices
+        vector<pthread_t> _thread;        ///< The thread handler of the compressor
+        vector<uint32_t>  _threadNumRows; ///< Total number of rows for thread to compress
+        vector<uint32_t>  _threadStatus;  ///< Flag telling whether the buffer to be transposed (and compressed) is full or empty
+
+        //thread states. Not all used, but they do not hurt
+        static const uint32_t       _THREAD_WAIT_; ///< Thread doing nothing
+        static const uint32_t   _THREAD_COMPRESS_; ///< Thread working, compressing
+        static const uint32_t _THREAD_DECOMPRESS_; ///< Thread working, decompressing
+        static const uint32_t      _THREAD_WRITE_; ///< Thread writing data to disk
+        static const uint32_t       _THREAD_READ_; ///< Thread reading data from disk
+        static const uint32_t       _THREAD_EXIT_; ///< Thread exiting
+
+        static HeaderEntry _dummyHeaderEntry; ///< Dummy entry for returning if requested on is not found
+};
+
+class CompressedFitsWriter : public CompressedFitsFile
+{
+    public:
+        ///@brief Default constructor. 100 tiles of 100 rows each are assigned by default
+        CompressedFitsWriter(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsWriter();
+
+        ///@brief add one column to the file
+        bool addColumn(const ColumnEntry& column);
+
+        ///@brief sets a given header key
+        bool setHeaderKey(const HeaderEntry&);
+
+        bool changeHeaderKey(const string& origName, const string& newName);
+
+        ///@brief open a new fits file
+        bool open(const string& fileName, const string& tableName="Data");
+
+        ///@brief close the opened file
+        bool close();
+
+        ///@brief write one row of data, already placed in bufferToWrite. Does the byte-swapping
+        bool writeBinaryRow(const char* bufferToWrite);
+
+        uint32_t getRowWidth();
+
+        ///@brief assign a given (already loaded) drs calibration
+        void setDrsCalib(int16_t* data);
+
+        ///@brief set the number of worker threads compressing the data.
+        bool setNumWorkingThreads(uint32_t num);
+
+    private:
+        ///@brief compresses one buffer of data, the one given by threadIndex
+        uint64_t compressBuffer(uint32_t threadIndex);
+
+        ///@brief writes an already compressed buffer to disk
+        bool writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite);
+
+        ///@brief add the header checksum to the datasum
+        void addHeaderChecksum(Checksum& checksum);
+
+        ///@brief write the header. If closingFile is set to true, checksum is calculated
+        void writeHeader(bool closingFile = false);
+
+        ///@brief write the compressed data catalog. If closingFile is set to true, checksum is calculated
+        void writeCatalog(bool closingFile=false);
+
+        /// FIXME this was a bad idea. Move everything to the regular header
+        vector<HeaderEntry> _defaultHeader;
+
+        /// the main function compressing the data
+        static void* threadFunction(void* context);
+
+        /// Write the drs calibration to disk, if any
+        void writeDrsCalib();
+
+        /// Copy and transpose (or semi-transpose) one tile of data
+        void copyTransposeTile(uint32_t index);
+
+        /// Specific compression functions
+        uint32_t compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t      compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t    compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t       applySMOOTHING(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+
+        int32_t         _checkOffset;  ///< offset to the data pointer to calculate the checksum
+        int16_t*        _drsCalibData; ///< array of the Drs baseline mean
+        int32_t         _threadLooper; ///< Which thread will deal with the upcoming bunch of data ?
+        pthread_mutex_t _mutex;        ///< mutex for compressing threads
+
+
+        static string _emptyBlock; ///< an empty block to be apened at the end of a file so that its length is a multiple of 2880
+        static string _fitsHeader; ///< the default header to be written in every fits file
+};
+
+const uint32_t CompressedFitsFile::_THREAD_WAIT_      = 0;
+const uint32_t CompressedFitsFile::_THREAD_COMPRESS_  = 1;
+const uint32_t CompressedFitsFile::_THREAD_DECOMPRESS_= 2;
+const uint32_t CompressedFitsFile::_THREAD_WRITE_     = 3;
+const uint32_t CompressedFitsFile::_THREAD_READ_      = 4;
+const uint32_t CompressedFitsFile::_THREAD_EXIT_      = 5;
+
+template<>
+void CompressedFitsFile::HeaderEntry::setValue(const string& v)
+{
+    string val = v;
+    if (val.size() > 2 && val[0] == '\'')
+    {
+        size_t pos = val.find_last_of("'");
+        if (pos != string::npos && pos != 0)
+            val = val.substr(1, pos-1);
+    }
+    ostringstream str;
+
+    str << "'" << val << "'";
+    for (int i=str.str().length(); i<20;i++)
+        str << " ";
+    _value = str.str();
+    buildFitsString();
+}
+
+/**
+ * Default header to be written in all fits files
+ */
+string CompressedFitsWriter::_fitsHeader = "SIMPLE  =                    T / file does conform to FITS standard             "
+                    "BITPIX  =                    8 / number of bits per data pixel                  "
+                    "NAXIS   =                    0 / number of data axes                            "
+                    "EXTEND  =                    T / FITS dataset may contain extensions            "
+                    "CHECKSUM= '4AcB48bA4AbA45bA'   / Checksum for the whole HDU                     "
+                    "DATASUM = '         0'         / Checksum for the data block                    "
+                    "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+                    "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+                    "END                                                                             "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+/**
+ * Empty block to be appenned at the end of files, so that the length matches multiple of 2880 bytes
+ *
+ */
+string CompressedFitsWriter::_emptyBlock = "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+CompressedFitsFile::HeaderEntry CompressedFitsFile::_dummyHeaderEntry;
+/****************************************************************
+ *              SUPER CLASS DEFAULT CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::CompressedFitsFile(uint32_t numTiles,
+                                       uint32_t numRowsPerTile) : _header(),
+                                                                 _columns(),
+                                                                 _numTiles(numTiles),
+                                                                 _numRowsPerTile(numRowsPerTile),
+                                                                 _totalNumRows(0),
+                                                                 _rowWidth(0),
+                                                                 _headerFlushed(false),
+                                                                 _buffer(NULL),
+                                                                 _checksum(0),
+                                                                 _heapPtr(0),
+                                                                 _transposedBuffer(1),
+                                                                 _compressedBuffer(1),
+                                                                 _numThreads(1),
+                                                                 _threadIndex(0),
+                                                                 _thread(1),
+                                                                 _threadNumRows(1),
+                                                                 _threadStatus(1)
+{
+    _catalog.resize(_numTiles);
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus[0] = _THREAD_WAIT_;
+    _threadNumRows[0] = 0;
+}
+
+/****************************************************************
+ *              SUPER CLASS DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::~CompressedFitsFile()
+{
+    if (_buffer != NULL)
+    {
+        _buffer = _buffer-4;
+        delete[] _buffer;
+        _buffer = NULL;
+        for (uint32_t i=0;i<_numThreads;i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+            _transposedBuffer[i] = NULL;
+            _compressedBuffer[i] = NULL;
+        }
+    }
+    if (_file.is_open())
+        _file.close();
+}
+
+/****************************************************************
+ *              REALLOCATE BUFFER
+ ****************************************************************/
+bool CompressedFitsFile::reallocateBuffers()
+{
+    if (_buffer)
+    {
+        _buffer = _buffer - 4;
+        delete[] _buffer;
+        for (uint32_t i=0;i<_compressedBuffer.size();i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+        }
+    }
+    _buffer = new char[_rowWidth*_numRowsPerTile + 12];
+    if (_buffer == NULL) return false;
+    memset(_buffer, 0, 4);
+    _buffer = _buffer + 4;
+    if (_compressedBuffer.size() != _numThreads)
+    {
+        _transposedBuffer.resize(_numThreads);
+        _compressedBuffer.resize(_numThreads);
+    }
+    for (uint32_t i=0;i<_numThreads;i++)
+    {
+        _transposedBuffer[i] = new char[_rowWidth*_numRowsPerTile];
+        _compressedBuffer[i] = new char[_rowWidth*_numRowsPerTile + _columns.size() + sizeof(TileHeader) + 12]; //use a bit more memory for compression flags and checksumming
+        if (_transposedBuffer[i] == NULL || _compressedBuffer[i] == NULL)
+            return false;
+        //shift the compressed buffer by 4 bytes, for checksum calculation
+        memset(_compressedBuffer[i], 0, 4);
+        _compressedBuffer[i] = _compressedBuffer[i]+4;
+        //initialize the tile header
+        TileHeader tileHeader;
+        memcpy(_compressedBuffer[i], &tileHeader, sizeof(TileHeader));
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  DEFAULT WRITER CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::CompressedFitsWriter(uint32_t numTiles,
+                                           uint32_t numRowsPerTile) : CompressedFitsFile(numTiles, numRowsPerTile),
+                                                                    _checkOffset(0),
+                                                                    _drsCalibData(NULL),
+                                                                    _threadLooper(0)
+{
+    _defaultHeader.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    _defaultHeader.push_back(HeaderEntry("BITPIX", 8, "8-bit bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS", 2, "2-dimensional binary table"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS1", _rowWidth, "width of table in bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS2", numTiles, "num of rows in table"));
+    _defaultHeader.push_back(HeaderEntry("PCOUNT", 0, "size of special data area"));
+    _defaultHeader.push_back(HeaderEntry("GCOUNT", 1, "one data group (required keyword)"));
+    _defaultHeader.push_back(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+    _defaultHeader.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    _defaultHeader.push_back(HeaderEntry("DATASUM",  "         0", "Checksum for the data block"));
+    //compression stuff
+    _defaultHeader.push_back(HeaderEntry("ZTABLE", "T", "Table is compressed"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS1", 0, "Width of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS2", 0, "Number of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZPCOUNT", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZHEAPPTR", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZTILELEN", numRowsPerTile, "Number of rows per tile"));
+    _defaultHeader.push_back(HeaderEntry("THEAP", 0, ""));
+
+    pthread_mutex_init(&_mutex, NULL);
+}
+
+/****************************************************************
+ *              DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::~CompressedFitsWriter()
+{
+    pthread_mutex_destroy(&_mutex);
+}
+
+/****************************************************************
+ *              SET THE POINTER TO THE DRS CALIBRATION
+ ****************************************************************/
+void CompressedFitsWriter::setDrsCalib(int16_t* data)
+{
+    _drsCalibData = data;
+}
+
+/****************************************************************
+ *                  SET NUM WORKING THREADS
+ ****************************************************************/
+bool CompressedFitsWriter::setNumWorkingThreads(uint32_t num)
+{
+    if (_file.is_open())
+        return false;
+    if (num < 1 || num > 64)
+    {
+        cout << "ERROR: num threads must be between 1 and 64. Ignoring" << endl;
+        return false;
+    }
+    _numThreads = num;
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus.resize(num);
+    _thread.resize(num);
+    _threadNumRows.resize(num);
+    for (uint32_t i=0;i<num;i++)
+    {
+        _threadNumRows[i] = 0;
+        _threadStatus[i] = _THREAD_WAIT_;
+    }
+    return reallocateBuffers();
+}
+
+/****************************************************************
+ *              WRITE DRS CALIBRATION TO FILE
+ ****************************************************************/
+void CompressedFitsWriter::writeDrsCalib()
+{
+    //if file was not loaded, ignore
+    if (_drsCalibData == NULL)
+        return;
+    uint64_t whereDidIStart = _file.tellp();
+    vector<HeaderEntry> header;
+    header.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    header.push_back(HeaderEntry("BITPIX"  , 8                     , "8-bit bytes"));
+    header.push_back(HeaderEntry("NAXIS"   , 2                     , "2-dimensional binary table"));
+    header.push_back(HeaderEntry("NAXIS1"  , 1024*1440*2           , "width of table in bytes"));
+    header.push_back(HeaderEntry("NAXIS2"  , 1                     , "number of rows in table"));
+    header.push_back(HeaderEntry("PCOUNT"  , 0                     , "size of special data area"));
+    header.push_back(HeaderEntry("GCOUNT"  , 1                     , "one data group (required keyword)"));
+    header.push_back(HeaderEntry("TFIELDS" , 1                     , "number of fields in each row"));
+    header.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    header.push_back(HeaderEntry("DATASUM" ,  "         0"         , "Checksum for the data block"));
+    header.push_back(HeaderEntry("EXTNAME" , "'ZDrsCellOffsets'    ", "name of this binary table extension"));
+    header.push_back(HeaderEntry("TTYPE1"  , "'OffsetCalibration' ", "label for field   1"));
+    header.push_back(HeaderEntry("TFORM1"  , "'1474560I'          ", "data format of field: 2-byte INTEGER"));
+
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    //End the header
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+    //now write the data itself
+    int16_t* swappedBytes = new int16_t[1024];
+    Checksum checksum;
+    for (int32_t i=0;i<1440;i++)
+    {
+        memcpy(swappedBytes, &(_drsCalibData[i*1024]), 2048);
+        for (int32_t j=0;j<2048;j+=2)
+        {
+            int8_t inter;
+            inter = reinterpret_cast<int8_t*>(swappedBytes)[j];
+            reinterpret_cast<int8_t*>(swappedBytes)[j] = reinterpret_cast<int8_t*>(swappedBytes)[j+1];
+            reinterpret_cast<int8_t*>(swappedBytes)[j+1] = inter;
+        }
+        _file.write(reinterpret_cast<char*>(swappedBytes), 2048);
+        checksum.add(reinterpret_cast<char*>(swappedBytes), 2048);
+    }
+    uint64_t whereDidIStop = _file.tellp();
+    delete[] swappedBytes;
+    //No need to pad the data, as (1440*1024*2)%2880==0
+
+    //calculate the checksum from the header
+    ostringstream str;
+    str << checksum.val();
+    header[9] = HeaderEntry("DATASUM", str.str(), "Checksum for the data block");
+    for (vector<HeaderEntry>::iterator it=header.begin();it!=header.end(); it++)
+        checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+    //udpate the checksum keyword
+    header[8] = HeaderEntry("CHECKSUM", checksum.str(), "Checksum for the whole HDU");
+    //and eventually re-write the header data
+    _file.seekp(whereDidIStart);
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    _file.seekp(whereDidIStop);
+}
+
+/****************************************************************
+ *              ADD COLUMN
+ ****************************************************************/
+bool CompressedFitsWriter::addColumn(const ColumnEntry& column)
+{
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: cannot add new columns once first row has been written" << endl;
+        return false;
+    }
+    for (vector<ColumnEntry>::iterator it=_columns.begin(); it != _columns.end(); it++)
+    {
+        if (it->name() == column.name())
+        {
+            cout << "Warning: column already exist (" << column.name() << "). Ignoring" << endl;
+            return false;
+        }
+    }
+    _columns.push_back(column);
+    _columns.back().setOffset(_rowWidth);
+    _rowWidth += column.width();
+    reallocateBuffers();
+
+    ostringstream str, str2, str3;
+    str << "TTYPE" << _columns.size();
+    str2 << column.name();
+    str3 << "label for field ";
+    if (_columns.size() < 10) str3 << " ";
+    if (_columns.size() < 100) str3 << " ";
+    str3 << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "TFORM" << _columns.size();
+    str2 << "1QB";
+    str3 << "data format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZFORM" << _columns.size();
+    str2 << column.numElems() << column.type();
+    str3 << "Original format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZCTYP" << _columns.size();
+    str2 << column.getCompressionString();
+    str3 << "Comp. Scheme of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    //resize the catalog vector accordingly
+    for (uint32_t i=0;i<_numTiles;i++)
+    {
+        _catalog[i].resize(_columns.size());
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+            _catalog[i][j] = make_pair(0,0);
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  SET HEADER KEY
+ ****************************************************************/
+bool CompressedFitsWriter::setHeaderKey(const HeaderEntry& entry)
+{
+    HeaderEntry ent = entry;
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: new header keys (" << entry.key() << ") must be set before the first row is written. Ignoring." << endl;
+        return false;
+    }
+    _header.push_back(entry);
+    _headerFlushed = false;
+    return true;
+}
+
+bool CompressedFitsWriter::changeHeaderKey(const string& origName, const string& newName)
+{
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    return false;
+}
+/****************************************************************
+ *              OPEN
+ ****************************************************************/
+bool CompressedFitsWriter::open(const string& fileName, const string& tableName)
+{
+     _file.open(fileName.c_str(), ios_base::out);
+    if (!_file.is_open())
+    {
+        cout << "Error: Could not open the file (" << fileName << ")." << endl;
+        return false;
+    }
+    _defaultHeader.push_back(HeaderEntry("EXTNAME", tableName, "name of this binary table extension"));
+    _headerFlushed = false;
+    _threadIndex = 0;
+    //create requested number of threads
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_create(&(_thread[i]), NULL, threadFunction, this);
+    //wait for the threads to start
+    while (_numThreads != _threadIndex)
+        usleep(1000);
+    //set the writing fence to the last thread
+    _threadIndex = _numThreads-1;
+    return (_file.good());
+}
+
+/****************************************************************
+ *              WRITE HEADER
+ ****************************************************************/
+void CompressedFitsWriter::writeHeader(bool closingFile)
+{
+    if (_headerFlushed)
+        return;
+    if (!_file.is_open())
+        return;
+
+    long cPos = _file.tellp();
+
+    _file.seekp(0);
+
+    _file.write(_fitsHeader.c_str(), 2880);
+
+    //Write the DRS calib table here !
+    writeDrsCalib();
+
+    //we are now at the beginning of the main table. Write its header
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+
+    _headerFlushed = true;
+
+    here = _file.tellp();
+
+    if (here%2880)
+        cout << "Error: seems that header did not finish at the end of a block." << endl;
+
+    if (here > cPos && cPos != 0)
+    {
+        cout << "Error, entries were added after the first row was written. This is not supposed to happen." << endl;
+        return;
+    }
+
+    here = _file.tellp();
+    writeCatalog(closingFile);
+
+    here = _file.tellp() - here;
+    _heapPtr = here;
+
+    if (cPos != 0)
+        _file.seekp(cPos);
+}
+
+/****************************************************************
+ *              WRITE CATALOG
+ *  WARNING: writeCatalog is only meant to be used by writeHeader.
+ *  external usage will most likely corrupt the file
+ ****************************************************************/
+void CompressedFitsWriter::writeCatalog(bool closingFile)
+{
+    uint32_t sizeWritten = 0;
+    for (uint32_t i=0;i<_catalog.size();i++)
+    {
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+        {
+            //swap the bytes
+            int8_t swappedEntry[16];
+            swappedEntry[0] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[7];
+            swappedEntry[1] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[6];
+            swappedEntry[2] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[5];
+            swappedEntry[3] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[4];
+            swappedEntry[4] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[3];
+            swappedEntry[5] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[2];
+            swappedEntry[6] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[1];
+            swappedEntry[7] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[0];
+
+            swappedEntry[8] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[7];
+            swappedEntry[9] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[6];
+            swappedEntry[10] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[5];
+            swappedEntry[11] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[4];
+            swappedEntry[12] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[3];
+            swappedEntry[13] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[2];
+            swappedEntry[14] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[1];
+            swappedEntry[15] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[0];
+            if (closingFile)
+            {
+                _checksum.add(reinterpret_cast<char*>(swappedEntry), 16);
+            }
+            _file.write(reinterpret_cast<char*>(&swappedEntry[0]), 2*sizeof(int64_t));
+            sizeWritten += 2*sizeof(int64_t);
+        }
+    }
+
+    //we do not reserve space for now because fverify does not like that.
+    //TODO bug should be fixed in the new version. Install it on the cluster and restor space reservation
+    return ;
+
+    //write the padding so that the HEAP section starts at a 2880 bytes boundary
+    if (sizeWritten % 2880 != 0)
+    {
+        vector<char> nullVec(2880 - sizeWritten%2880, 0);
+        _file.write(nullVec.data(), 2880 - sizeWritten%2880);
+    }
+}
+
+/****************************************************************
+ *              ADD HEADER CHECKSUM
+ ****************************************************************/
+void CompressedFitsWriter::addHeaderChecksum(Checksum& checksum)
+{
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin();it!=_defaultHeader.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (_defaultHeader.size() + _header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+}
+
+/****************************************************************
+ *                  CLOSE
+ ****************************************************************/
+bool CompressedFitsWriter::close()
+{
+    for (uint32_t i=0;i<_numThreads;i++)
+        while (_threadStatus[i] != _THREAD_WAIT_)
+            usleep(100000);
+    for (uint32_t i=0;i<_numThreads;i++)
+        _threadStatus[i] = _THREAD_EXIT_;
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_join(_thread[i], NULL);
+    //flush the rows that were not written yet
+    if (_totalNumRows%_numRowsPerTile != 0)
+    {
+        copyTransposeTile(0);
+
+        _threadNumRows[0] = _totalNumRows;
+        uint32_t numBytes = compressBuffer(0);
+        writeCompressedDataToDisk(0, numBytes);
+    }
+    //compression stuff
+    setHeaderKey(HeaderEntry("ZNAXIS1", _rowWidth, "Width of uncompressed rows"));
+    setHeaderKey(HeaderEntry("ZNAXIS2", _totalNumRows, "Number of uncompressed rows"));
+    //TODO calculate the real offset from the main table to the start of the HEAP data area
+    setHeaderKey(HeaderEntry("ZHEAPPTR", _heapPtr, ""));
+    setHeaderKey(HeaderEntry("THEAP", _heapPtr, ""));
+
+    //regular stuff
+    if (_catalog.size() > 0)
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", 2*sizeof(int64_t)*_catalog[0].size(), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", _numTiles, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        int64_t heapSize = 0;
+        int64_t compressedOffset = 0;
+        for (uint32_t i=0;i<_catalog.size();i++)
+        {
+            compressedOffset += sizeof(TileHeader);
+            heapSize += sizeof(TileHeader);
+            for (uint32_t j=0;j<_catalog[i].size();j++)
+            {
+                heapSize += _catalog[i][j].first;
+//      cout << "heapSize: " << heapSize << endl;
+                //set the catalog offsets to their actual values
+                _catalog[i][j].second = compressedOffset;
+                compressedOffset += _catalog[i][j].first;
+                //special case if entry has zero length
+                if (_catalog[i][j].first == 0) _catalog[i][j].second = 0;
+            }
+        }
+        setHeaderKey(HeaderEntry("PCOUNT", heapSize, "size of special data area"));
+    }
+    else
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", _columns.size()*2*sizeof(int64_t), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", 0, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        setHeaderKey(HeaderEntry("PCOUNT", 0, "size of special data area"));
+        changeHeaderKey("THEAP", "ZHEAP");
+    }
+    ostringstream str;
+
+    writeHeader(true);
+
+    str.str("");
+    str << _checksum.val();
+
+    setHeaderKey(HeaderEntry("DATASUM", str.str(), ""));
+    addHeaderChecksum(_checksum);
+    setHeaderKey(HeaderEntry("CHECKSUM", _checksum.str(), ""));
+    //update header value
+    writeHeader();
+    //update file length
+    long here = _file.tellp();
+    if (here%2880)
+    {
+        vector<char> nullVec(2880 - here%2880, 0);
+        _file.write(nullVec.data(), 2880 - here%2880);
+    }
+    _file.close();
+    return true;
+}
+
+/****************************************************************
+ *                  COPY TRANSPOSE TILE
+ ****************************************************************/
+void CompressedFitsWriter::copyTransposeTile(uint32_t index)
+{
+    uint32_t thisRoundNumRows = (_totalNumRows%_numRowsPerTile) ? _totalNumRows%_numRowsPerTile : _numRowsPerTile;
+
+    //copy the tile and transpose it
+    uint32_t offset = 0;
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        switch (_columns[i].getColumnOrdering())//getCompression())
+        {
+            case FITS::kOrderByRow:
+                for (uint32_t k=0;k<thisRoundNumRows;k++)
+                {//regular, "semi-transposed" copy
+                    memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset()], _columns[i].sizeOfElems()*_columns[i].numElems());
+                    offset += _columns[i].sizeOfElems()*_columns[i].numElems();
+                }
+            break;
+
+            case FITS::kOrderByCol :
+                for (int j=0;j<_columns[i].numElems();j++)
+                    for (uint32_t k=0;k<thisRoundNumRows;k++)
+                    {//transposed copy
+                        memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset() + _columns[i].sizeOfElems()*j], _columns[i].sizeOfElems());
+                        offset += _columns[i].sizeOfElems();
+                    }
+            break;
+            default:
+                    cout << "Error: unknown column ordering: " << _columns[i].getColumnOrdering() << endl;
+
+        };
+    }
+}
+
+/****************************************************************
+ *          WRITE BINARY ROW
+ ****************************************************************/
+bool CompressedFitsWriter::writeBinaryRow(const char* bufferToWrite)
+{
+    if (_totalNumRows == 0)
+        writeHeader();
+
+    memcpy(&_buffer[_rowWidth*(_totalNumRows%_numRowsPerTile)], bufferToWrite, _rowWidth);
+    _totalNumRows++;
+    if (_totalNumRows%_numRowsPerTile == 0)
+    {
+        //which is the next thread that we should use ?
+        while (_threadStatus[_threadLooper] == _THREAD_COMPRESS_)
+            usleep(100000);
+
+        copyTransposeTile(_threadLooper);
+
+        while (_threadStatus[_threadLooper] != _THREAD_WAIT_)
+            usleep(100000);
+
+        _threadNumRows[_threadLooper] = _totalNumRows;
+        _threadStatus[_threadLooper] = _THREAD_COMPRESS_;
+        _threadLooper = (_threadLooper+1)%_numThreads;
+    }
+    return _file.good();
+}
+
+uint32_t CompressedFitsWriter::getRowWidth()
+{
+    return _rowWidth;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    memcpy(dest, src, numRows*sizeOfElems*numRowElems);
+    return numRows*sizeOfElems*numRowElems;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    string huffmanOutput;
+    uint32_t previousHuffmanSize = 0;
+    if (numRows < 2)
+    {//if we have less than 2 elems to compress, Huffman encoder does not work (and has no point). Just return larger size than uncompressed to trigger the raw storage.
+        return numRows*sizeOfElems*numRowElems + 1000;
+    }
+    if (sizeOfElems < 2 )
+    {
+        cout << "Fatal ERROR: HUFMANN can only encode short or longer types" << endl;
+        return 0;
+    }
+    uint32_t huffmanOffset = 0;
+    for (uint32_t j=0;j<numRowElems;j++)
+    {
+        Huffman::Encode(huffmanOutput,
+                        reinterpret_cast<const uint16_t*>(&src[j*sizeOfElems*numRows]),
+                        numRows*(sizeOfElems/2));
+        reinterpret_cast<uint32_t*>(&dest[huffmanOffset])[0] = huffmanOutput.size() - previousHuffmanSize;
+        huffmanOffset += sizeof(uint32_t);
+        previousHuffmanSize = huffmanOutput.size();
+    }
+    const size_t totalSize = huffmanOutput.size() + huffmanOffset;
+
+    //only copy if not larger than not-compressed size
+    if (totalSize < numRows*sizeOfElems*numRowElems)
+        memcpy(&dest[huffmanOffset], huffmanOutput.data(), huffmanOutput.size());
+
+    return totalSize;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+    //call the huffman transposed
+    return compressHUFFMAN(dest, src, numRowElems, sizeOfElems, numRows);
+}
+
+uint32_t CompressedFitsWriter::applySMOOTHING(char* , char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+
+    return numRows*sizeOfElems*numRowElems;
+}
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint64_t CompressedFitsWriter::compressBuffer(uint32_t threadIndex)
+{
+    uint32_t thisRoundNumRows = (_threadNumRows[threadIndex]%_numRowsPerTile) ? _threadNumRows[threadIndex]%_numRowsPerTile : _numRowsPerTile;
+    uint32_t offset=0;
+    uint32_t currentCatalogRow = (_threadNumRows[threadIndex]-1)/_numRowsPerTile;
+    uint64_t compressedOffset = sizeof(TileHeader); //skip the 'TILE' marker and tile size entry
+
+    //now compress each column one by one by calling compression on arrays
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        _catalog[currentCatalogRow][i].second = compressedOffset;
+
+        if (_columns[i].numElems() == 0) continue;
+
+        BlockHeader& head = _columns[i].getBlockHeader();
+        const vector<uint16_t>& sequence = _columns[i].getCompressionSequence();
+        //set the default byte telling if uncompressed the compressed Flag
+        uint64_t previousOffset = compressedOffset;
+        //skip header data
+        compressedOffset += sizeof(BlockHeader) + sizeof(uint16_t)*sequence.size();
+
+        for (uint32_t j=0;j<sequence.size(); j++)
+        {
+            switch (sequence[j])
+            {
+                case FITS::kFactRaw:
+//                    if (head.numProcs == 1)
+                        compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactSmoothing:
+                        applySMOOTHING(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactHuffman16:
+                    if (head.ordering == FITS::kOrderByCol)
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                    else
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), _columns[i].numElems(), _columns[i].sizeOfElems(),  thisRoundNumRows);
+                break;
+                default:
+                    cout << "ERROR: Unkown compression sequence entry: " << sequence[i] << endl;
+                break;
+            }
+        }
+
+        //check if compressed size is larger than uncompressed
+        if (sequence[0] != FITS::kFactRaw &&
+            compressedOffset - previousOffset > _columns[i].sizeOfElems()*_columns[i].numElems()*thisRoundNumRows+sizeof(BlockHeader)+sizeof(uint16_t)*sequence.size())
+        {//if so set flag and redo it uncompressed
+            cout << "REDOING UNCOMPRESSED" << endl;
+            compressedOffset = previousOffset + sizeof(BlockHeader) + 1;
+            compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+            BlockHeader he;
+            he.size = compressedOffset - previousOffset;
+            he.numProcs = 1;
+            he.ordering = FITS::kOrderByRow;
+            memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&he), sizeof(BlockHeader));
+            _compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)] = FITS::kFactRaw;
+            offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+           _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+           continue;
+        }
+        head.size = compressedOffset - previousOffset;
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&head), sizeof(BlockHeader));
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)]), sequence.data(), sizeof(uint16_t)*sequence.size());
+
+         offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+        _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+    }
+
+    TileHeader tHead(thisRoundNumRows, compressedOffset);
+    memcpy(_compressedBuffer[threadIndex], &tHead, sizeof(TileHeader));
+    return compressedOffset;
+}
+
+/****************************************************************
+ *              WRITE COMPRESS DATA TO DISK
+ ****************************************************************/
+bool CompressedFitsWriter::writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite)
+{
+    char* checkSumPointer = _compressedBuffer[threadID];
+    int32_t extraBytes = 0;
+    uint32_t sizeToChecksum = sizeToWrite;
+    if (_checkOffset != 0)
+    {//should we extend the array to the left ?
+        sizeToChecksum += _checkOffset;
+        checkSumPointer -= _checkOffset;
+        memset(checkSumPointer, 0, _checkOffset);
+    }
+    if (sizeToChecksum%4 != 0)
+    {//should we extend the array to the right ?
+        extraBytes = 4 - (sizeToChecksum%4);
+        memset(checkSumPointer+sizeToChecksum, 0,extraBytes);
+        sizeToChecksum += extraBytes;
+    }
+    //do the checksum
+    _checksum.add(checkSumPointer, sizeToChecksum);
+//    cout << endl << "Checksum: " << _checksum.val() << endl;
+    _checkOffset = (4 - extraBytes)%4;
+    //write data to disk
+    _file.write(_compressedBuffer[threadID], sizeToWrite);
+    return _file.good();
+}
+
+/****************************************************************
+ *              WRITER THREAD LOOP
+ ****************************************************************/
+void* CompressedFitsWriter::threadFunction(void* context)
+{
+    CompressedFitsWriter* myself =static_cast<CompressedFitsWriter*>(context);
+
+    uint32_t myID = 0;
+    pthread_mutex_lock(&(myself->_mutex));
+    myID = myself->_threadIndex++;
+    pthread_mutex_unlock(&(myself->_mutex));
+    uint32_t threadToWaitForBeforeWriting = (myID == 0) ? myself->_numThreads-1 : myID-1;
+
+    while (myself->_threadStatus[myID] != _THREAD_EXIT_)
+    {
+        while (myself->_threadStatus[myID] == _THREAD_WAIT_)
+            usleep(100000);
+        if (myself->_threadStatus[myID] != _THREAD_COMPRESS_)
+            continue;
+        uint32_t numBytes = myself->compressBuffer(myID);
+        myself->_threadStatus[myID] = _THREAD_WRITE_;
+
+        //wait for the previous data to be written
+        while (myself->_threadIndex != threadToWaitForBeforeWriting)
+            usleep(1000);
+        //do the actual writing to disk
+        pthread_mutex_lock(&(myself->_mutex));
+        myself->writeCompressedDataToDisk(myID, numBytes);
+        myself->_threadIndex = myID;
+        pthread_mutex_unlock(&(myself->_mutex));
+        myself->_threadStatus[myID] = _THREAD_WAIT_;
+    }
+    return NULL;
+}
+
+/****************************************************************
+ *                 PRINT USAGE
+ ****************************************************************/
+void printUsage()
+{
+    cout << endl;
+    cout << "The FACT-Fits compressor reads an input Fits file from FACT"
+            " and compresses it.\n It can use a drs calibration in order to"
+            " improve the compression ratio. If so, the input calibration"
+            " is embedded into the compressed file.\n"
+            " By default, the Data column will be compressed using SMOOTHMAN (Thomas' algorithm)"
+            " while other columns will be compressed with the AMPLITUDE coding (Veritas)"
+            "Usage: Compressed_Fits_Test <inputFile>";
+    cout << endl;
+}
+
+/****************************************************************
+ *                  PRINT HELP
+ ****************************************************************/
+void printHelp()
+{
+    cout << endl;
+    cout << "The inputFile is required. It must have fits in its filename and the compressed file will be written in the same folder. "
+            "The fz extension will be added, replacing the .gz one if required \n"
+            "If output is specified, then it will replace the automatically generated output filename\n"
+            "If --drs, followed by a drs calib then it will be applied to the data before compressing\n"
+            "rowPerTile can be used to tune how many rows are in each tile. Default is 100\n"
+            "threads gives the number of threads to use. Cannot be less than the default (1)\n"
+            "compression explicitely gives the compression scheme to use for a given column. The syntax is:\n"
+            "<ColumnName>=<CompressionScheme> with <CompressionScheme> one of the following:\n"
+            "UNCOMPRESSED\n"
+            "AMPLITUDE\n"
+            "HUFFMAN\n"
+            "SMOOTHMAN\n"
+            "INT_WAVELET\n"
+            "\n"
+            "--quiet removes any textual output, except error messages\n"
+            "--verify makes the compressor check the compressed data. It will read it back, and compare the reconstructed CHECKSUM and DATASUM with the original file values."
+            ;
+    cout << endl << endl;
+}
+
+/****************************************************************
+ *                  SETUP CONFIGURATION
+ ****************************************************************/
+void setupConfiguration(Configuration& conf)
+{
+    po::options_description configs("FitsCompressor options");
+    configs.add_options()
+            ("inputFile,i",   vars<string>(),      "Input file")
+            ("drs,d",         var<string>(),       "Input drs calibration file")
+            ("rowPerTile,r",  var<unsigned int>(), "Number of rows per tile. Default is 100")
+            ("output,o",      var<string>(),       "Output file. If empty, .fz is appened to the original name")
+            ("threads,t",     var<unsigned int>(), "Number of threads to use for compression")
+            ("compression,c", vars<string>(),      "which compression to use for which column. Syntax <colName>=<compressionScheme>")
+            ("quiet,q",       po_switch(),         "Should the program display any text at all ?")
+            ("verify,v",      po_switch(),         "Should we verify the data that has been compressed ?")
+            ;
+    po::positional_options_description positional;
+    positional.add("inputFile", -1);
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(positional);
+}
+
+/****************************************************************
+ *                  MAIN
+ ****************************************************************/
+int main(int argc, const char** argv)
+{
+     Configuration conf(argv[0]);
+     conf.SetPrintUsage(printUsage);
+     setupConfiguration(conf);
+
+     if (!conf.DoParse(argc, argv, printHelp))
+         return -1;
+
+     //initialize the file names to nothing.
+     string fileNameIn = "";
+     string fileNameOut = "";
+     string drsFileName = "";
+     uint32_t numRowsPerTile = 100;
+     bool displayText=true;
+
+    //parse configuration
+    if (conf.Get<bool>("quiet")) displayText = false;
+    const vector<string> inputFileNameVec = conf.Vec<string>("inputFile");
+    if (inputFileNameVec.size() != 1)
+    {
+       cout << "Error: ";
+       if (inputFileNameVec.size() == 0) cout << "no";
+       else cout << inputFileNameVec.size();
+       cout << " input file(s) given. Expected one. Aborting. Input:" << endl;;
+       for (unsigned int i=0;i<inputFileNameVec.size(); i++)
+           cout << inputFileNameVec[i] << endl;
+       return -1;
+    }
+
+    //Assign the input filename
+    fileNameIn = inputFileNameVec[0];
+
+    //Check if we have a drs calib too
+    if (conf.Has("drs")) drsFileName = conf.Get<string>("drs");
+
+    //Should we verify the data ?
+    bool verifyDataPlease = false;
+    if (conf.Has("verify")) verifyDataPlease = conf.Get<bool>("verify");
+
+
+    //should we use a specific output filename ?
+    if (conf.Has("output"))
+        fileNameOut = conf.Get<string>("output");
+    else
+    {
+        size_t pos = fileNameIn.find(".fits.fz");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: input file does not seems ot be fits. Aborting." << endl;
+            return -1;
+        }
+        fileNameOut = fileNameIn.substr(0, pos) + ".fits";
+    }
+
+
+    //should we use specific compression on some columns ?
+    const vector<string> columnsCompression = conf.Vec<string>("compression");
+
+    //split up values between column names and compression scheme
+    vector<std::pair<string, string>> compressions;
+        for (unsigned int i=0;i<columnsCompression.size();i++)
+    {
+        size_t pos = columnsCompression[i].find_first_of("=");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: Something wrong occured while parsing " << columnsCompression[i] << ". Aborting." << endl;
+            return -1;
+        }
+        string comp = columnsCompression[i].substr(pos+1);
+        if (comp != "UNCOMPRESSED" && comp != "AMPLITUDE" && comp != "HUFFMAN" &&
+            comp != "SMOOTHMAN" && comp != "INT_WAVELET")
+        {
+            cout << "Unkown compression scheme requested (" << comp << "). Aborting." << endl;
+            return -1;
+        }
+        compressions.push_back(make_pair(columnsCompression[i].substr(0, pos), comp));
+    }
+
+    //How many rows per tile should we use ?
+    if (conf.Has("rowPerTile")) numRowsPerTile = conf.Get<unsigned int>("rowPerTile");
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done reading configuration. Open relevant files
+    //////////////////////////////////////////////////////////////////////////////////////
+
+
+    //Open input's fits file
+    factfits inFile(fileNameIn, "", "Events", false);
+
+    if (!inFile.IsCompressedFITS())
+    {
+        cout << "ERROR: input file is NOT a compressed fits. Cannot be decompressed: Aborting." << endl;
+        return -1;
+    }
+
+    //decide how many tiles should be put in the compressed file
+    uint32_t originalNumRows = inFile.GetNumRows();
+    uint32_t numTiles = (originalNumRows%numRowsPerTile) ? (originalNumRows/numRowsPerTile)+1 : originalNumRows/numRowsPerTile;
+//    CompressedFitsWriter outFile(numTiles, numRowsPerTile);
+
+    //should we use a specific number of threads for compressing ?
+    unsigned int numThreads = 1;
+    if (conf.Has("threads"))
+    {
+        numThreads = conf.Get<unsigned int>("threads");
+//        outFile.setNumWorkingThreads(numThreads);
+    }
+
+
+
+    //Because the file to open MUST be given by the constructor, I must use a pointer instead
+    factfits* drsFile = NULL;
+    //try to open the Drs file. If any.
+    if (drsFileName != "")
+    {
+        try
+        {
+            drsFile = new factfits(drsFileName);
+        }
+        catch (...)
+        {
+            cout << "Error: could not open " << drsFileName << " for calibration" << endl;
+            return -1;
+        }
+    }
+
+    if (displayText)
+    {
+        cout << endl;
+        cout << "**********************" << endl;
+        cout << "Will decompress from    : " << fileNameIn << endl;
+        cout << "to                    : " << fileNameOut << endl;
+        cout << "**********************" << endl;
+        cout << endl;
+    }
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done opening input files. Allocate memory and configure output file
+    //////////////////////////////////////////////////////////////////////////////////////
+
+    //allocate the buffer for temporary storage of each read/written row
+    uint32_t rowWidth = inFile.GetUInt("ZNAXIS1");
+    char* buffer = new char[rowWidth + 12];
+    memset(buffer, 0, 4);
+    buffer = buffer+4;
+
+    //get the source columns
+    const fits::Table::Columns& columns = inFile.GetColumns();
+    const fits::Table::SortedColumns& sortedColumns = inFile.GetSortedColumns();
+    if (displayText)
+        cout << "Input file has " << columns.size() << " columns and " << inFile.GetNumRows() << " rows" << endl;
+
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done configuring compression. Do the real job now !
+    //////////////////////////////////////////////////////////////////////////////////////
+    vector<void*>   readPointers;
+    vector<int32_t> readOffsets;
+    vector<int32_t> readElemSize;
+    vector<int32_t> readNumElems;
+    //Get table name for later use in case the compressed file is to be verified
+    string tableName = inFile.GetStr("EXTNAME");
+
+
+    //and the header of the compressed file
+    const fits::Table::Keys& header2 = inFile.GetKeys();
+
+    //get a non-compressed writer
+    ofits reconstructedFile;
+
+    //figure out its name: /dev/null unless otherwise specified
+    string reconstructedName = fileNameOut;
+    reconstructedFile.open(reconstructedName.c_str(), false);
+
+    //reconstruct the original columns from the compressed file.
+    string origChecksumStr;
+    string origDatasum;
+
+    //reset tablename value so that it is re-read from compressed table's header
+    tableName = "";
+
+    /************************************************************************************
+     *  Reconstruction setup done. Rebuild original header
+     ************************************************************************************/
+
+    //re-tranlate the keys
+    for (fits::Table::Keys::const_iterator it=header2.begin(); it!= header2.end(); it++)
+    {
+        string k = it->first;
+        if (k == "XTENSION" || k == "BITPIX"  || k == "PCOUNT"   || k == "GCOUNT" ||
+            k == "TFIELDS"  || k == "ZTABLE"  || k == "ZNAXIS1"  || k == "ZNAXIS2" ||
+            k == "ZHEAPPTR" || k == "ZPCOUNT" || k == "ZTILELEN" || k == "THEAP" ||
+            k == "CHECKSUM" || k == "DATASUM" || k == "FCTCPVER" || k == "ZHEAP")
+        {
+            continue;
+        }
+
+        if (k == "ZCHKSUM")
+        {
+            reconstructedFile.SetKeyComment("CHECKSUM", it->second.comment);
+            origChecksumStr = it->second.value;
+            continue;
+        }
+        if (k == "RAWSUM")
+        {
+            continue;
+        }
+
+        if (k == "ZDTASUM")
+        {
+            reconstructedFile.SetKeyComment("DATASUM",  it->second.comment);
+            origDatasum = it->second.value;
+            continue;
+        }
+
+        if (k == "EXTNAME")
+        {
+            tableName = it->second.value;
+        }
+
+        k = k.substr(0,5);
+
+        if (k == "TTYPE")
+        {//we have an original column name here.
+         //manually deal with these in order to preserve the ordering (easier than re-constructing yet another list on the fly)
+            continue;
+        }
+
+        if (k == "TFORM" || k == "NAXIS" || k == "ZCTYP" )
+        {
+            continue;
+        }
+
+        if (k == "ZFORM" || k == "ZTYPE")
+        {
+            string tmpKey = it->second.fitsString;
+            tmpKey[0] = 'T';
+            reconstructedFile.SetKeyFromFitsString(tmpKey);
+            continue;
+        }
+
+        reconstructedFile.SetKeyFromFitsString(it->second.fitsString);
+    }
+
+    if (tableName == "")
+    {
+        cout << "Error: table name from file " << fileNameOut << " could not be found. Aborting" << endl;
+        return -1;
+    }
+
+    //Restore the original columns
+    for (uint32_t numCol=1; numCol<10000; numCol++)
+    {
+        ostringstream str;
+        str << numCol;
+        if (!inFile.HasKey("TTYPE"+str.str())) break;
+
+        string ttype    = inFile.GetStr("TTYPE"+str.str());
+        string tform    = inFile.GetStr("ZFORM"+str.str());
+        char   type     = tform[tform.size()-1];
+        string number   = tform.substr(0, tform.size()-1);
+        int    numElems = atoi(number.c_str());
+
+        if (number == "") numElems=1;
+
+        reconstructedFile.AddColumn(numElems, type, ttype, "", "", false);
+    }
+
+    reconstructedFile.WriteTableHeader(tableName.c_str());
+
+    /************************************************************************************
+     *  Original header restored. Do the data
+     ************************************************************************************/
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    readPointers.clear();
+    readOffsets.clear();
+    readElemSize.clear();
+    readNumElems.clear();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(inFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    //do the actual reconstruction work
+    uint32_t i=1;
+    while (i<=inFile.GetNumRows() && inFile.GetNextRow())
+    {
+        int count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+        if (displayText) cout << "\r Row " << i << flush;
+        reconstructedFile.WriteRow(buffer, rowWidth);
+        if (!reconstructedFile.good())
+        {
+            cout << "ERROR: no space left on device (probably)" << endl;
+            return -1;
+        }
+        i++;
+    }
+
+    if (displayText) cout << endl;
+
+    //close reconstruction input and output
+//    Do NOT close the verify file, otherwise data cannot be flushed to copy file
+//    verifyFile.close();
+    if (!inFile.IsFileOk())
+        cout << "ERROR: file checksums seems wrong" << endl;
+
+    if (!reconstructedFile.close())
+    {
+        cout << "ERROR: disk probably full..." <<endl;
+        return -1;
+    }
+
+    //get original and reconstructed checksum and datasum
+    std::pair<string, int> origChecksum = make_pair(origChecksumStr, atoi(origDatasum.c_str()));
+    std::pair<string, int> newChecksum = reconstructedFile.GetChecksumData();
+
+    //verify that no mistake was made
+    if (origChecksum.second != newChecksum.second)
+    {
+        cout << "ERROR: datasums are NOT identical: " << (uint32_t)(origChecksum.second) << " vs " << (uint32_t)(newChecksum.second) << endl;
+        return -1;
+    }
+    if (origChecksum.first != newChecksum.first)
+    {
+        cout << "WARNING: checksums are NOT Identical: " << origChecksum.first << " vs " << newChecksum.first << endl;
+    }
+    else
+    {
+        if (true) cout << "Ok" << endl;
+    }
+
+    buffer = buffer-4;
+    delete[] buffer;
+    return 0;
+}
+
Index: branches/FACT++_part_filenames/src/fitsHacker.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsHacker.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsHacker.cc	(revision 18732)
@@ -0,0 +1,133 @@
+/*
+ * fitsHacker.cc
+ *
+ *  Created on: Sep 8, 2011
+ *      Author: lyard
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <cstring>
+
+using namespace std;
+/*
+ * Usage: fitsHacker <nameOfFileToHack> <numberOfBytesToSkip> <WhichCharactersToPutAfterShift>(optionnal)
+ *
+ *
+ *
+ */
+
+enum ModeT {seekingHDU,
+            foundHDU,
+            fixedEND,
+            reachedHeaderEnd};
+
+int main(int argc, char** argv)
+{
+    if (argc < 2)
+        return 0;
+
+/* ENDfixer */
+    fstream file(argv[1]);
+
+    char c[81];
+    c[80] = 0;
+    int seeking=0;
+
+    ModeT mode = seekingHDU;
+
+    bool reallyFixedEnd = false;
+    int endAddress = 0;
+
+    while (mode != fixedEND)
+    {
+        file.read(c, 80);
+        if (!file.good()) {
+            cout << 0;
+            return 0;
+        }
+        string str(c);
+//        cout << c << endl;
+        if (str.substr(0, 9) == "XTENSION=")
+            mode = foundHDU;
+
+        if (mode == foundHDU && str=="END                                                                             ")
+        {
+            mode = fixedEND;
+            endAddress = seeking;
+//            cout << "found END at " << endAddress << endl;
+        }
+        if (mode == foundHDU && str =="                                                                                ")
+        {
+            file.seekp(seeking);
+            file.put('E');
+            file.put('N');
+            file.put('D');
+            mode = fixedEND;
+            reallyFixedEnd = true;
+            endAddress = seeking;
+//            cout << "added END at " << endAddress << endl;
+        }
+
+        seeking+=80;
+    }
+
+    file.seekp(seeking-1);
+    while (mode != reachedHeaderEnd)
+    {
+        file.read(c, 80);
+        if (!file.good()) {
+            cout << 0;
+            return 0;
+        }
+        string str(c);
+
+        if (str =="                                                                                ")
+            seeking+=80;
+        else
+            mode = reachedHeaderEnd;
+    }
+
+    file.close();
+
+    if (seeking % 2880 != 0)
+    {
+        cout << "Error: header length not acceptable" << endl;
+        return 0;
+    }
+
+    if (((seeking - endAddress)/80) > 35)
+    {
+        cout << "Error: too much header space after END keyword" << endl;
+        return 0;
+    }
+
+    cout << seeking;
+
+    return seeking;
+
+/* FITS HACKER
+    file.get(data, shift);
+
+    for (int i=0;i<shift;i++)
+    {
+        if (i%80 == 0)
+            cout << "||| " << endl;
+        cout << data[i];
+    }
+    cout << endl;
+    if (argc < 4)
+        return 0;
+
+    int length = strlen(argv[3]);
+
+
+    file.seekp(shift-1);
+    for (int i=0;i<length;i++)
+        file.put(argv[3][i]);
+
+    file.close();
+
+    delete[] data;*/
+}
Index: branches/FACT++_part_filenames/src/fitscheck.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitscheck.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitscheck.cc	(revision 18732)
@@ -0,0 +1,99 @@
+//****************************************************************
+/** 
+
+ */
+ //****************************************************************
+#include "Configuration.h"
+
+#include "externals/fits.h"
+
+using namespace std;
+
+
+void PrintUsage()
+{
+    cout <<
+        "fitscheck is a tool to verify the checksums in a fits file.\n"
+        "\n"
+        "Usage: fitscheck [OPTIONS] fitsfile\n"
+        //"  or:  fitscheck [OPTIONS]\n"
+        "\n"
+        "Return values:\n"
+        " 0:  in case of success\n"
+        " 1:  if the file could not be opened\n"
+        " 2:  if the header checksum could not be varified and\n"
+        " 3:  if the header checksum is ok but the data checksum could not be verified.\n"
+        "\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitscheck options");
+    configs.add_options()
+        ("fitsfile,f",  var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                     , "Name of FITS file")
+        ;
+
+    po::positional_options_description p;
+    p.add("fitsfile", 1); // The first positional options
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    if (!conf.Has("fitsfile"))
+    {
+        cerr << "Filename required." << endl;
+        return -1;
+    }
+
+    const string fname = conf.Get<string>("fitsfile");
+
+    cout << "Reading '" << fname << "'.." << flush;
+
+    fits file(fname.c_str());
+    if (!file)
+    {
+        cout << "fits::open() failed: " << strerror(errno) << " [errno=" << errno << "]";
+        return 1;
+    }
+
+    if (!file.IsHeaderOk())
+    {
+        cout << " header checksum could not be verified." << endl;
+        return 2;
+    }
+
+    const size_t n = file.GetNumRows()/10;
+
+    while (file.GetNextRow())
+        if (file.GetRow()<n && file.GetRow()%n==0)
+            cout << '.' << flush;
+
+    if (!file.IsFileOk())
+    {
+        cout << " data checksum could not be verified." << endl;
+        return 3;
+    }
+
+    cout << " file ok." << endl;
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/fitsdump.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsdump.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsdump.cc	(revision 18732)
@@ -0,0 +1,1194 @@
+//****************************************************************
+/** @class FitsDumper
+
+  @brief Dumps contents of fits tables to stdout or a file
+
+ */
+ //****************************************************************
+#include "Configuration.h"
+
+#include <float.h>
+
+#include <map>
+#include <fstream>
+
+#include <boost/regex.hpp>
+
+#include "tools.h"
+#include "Time.h"
+#include "externals/factfits.h"
+
+#ifdef HAVE_ROOT
+#include "TFormula.h"
+#endif
+
+using namespace std;
+
+struct MyColumn
+{
+    string name;
+
+    fits::Table::Column col;
+
+    uint32_t first;
+    uint32_t last;
+
+    void *ptr;
+};
+
+struct minMaxStruct
+{
+    double min;
+    double max;
+    long double average;
+    long double squared;
+    long numValues;
+    minMaxStruct() : min(FLT_MAX), max(-FLT_MAX), average(0), squared(0), numValues(0) { }
+
+    void add(long double val)
+    {
+        average += val;
+        squared += val*val;
+
+        if (val<min)
+            min = val;
+
+        if (val>max)
+            max = val;
+
+        numValues++;
+    }
+};
+
+
+class FitsDumper : public factfits
+{
+private:
+    string fFilename;
+
+    // Convert CCfits::ValueType into a human readable string
+    string ValueTypeToStr(char type) const;
+
+    /// Lists all columns of an open file
+    void List();                          
+    void ListFileContent() const;
+    void ListHeader(const string& filename);
+    void ListKeywords(ostream &);
+
+    vector<MyColumn> InitColumns(vector<string> list);
+    vector<MyColumn> InitColumnsRoot(vector<string> &list);
+
+    double GetDouble(const MyColumn &, size_t) const;
+    int64_t GetInteger(const MyColumn &, size_t) const;
+    string Format(const string &fmt, const double &val) const;
+    string Format(const string &fmt, const MyColumn &, size_t) const;
+
+    ///Display the selected columns values VS time
+    void Dump(ostream &, const vector<string> &, const vector<MyColumn> &, const string &, size_t, size_t, const string &);
+    void DumpRoot(ostream &, const vector<string> &, const string &, size_t, size_t, const string &);
+    void DumpMinMax(ostream &, const vector<MyColumn> &, size_t, size_t, bool);
+    void DumpStats(ostream &, const vector<MyColumn> &, const string &, size_t, size_t);
+
+public:
+    FitsDumper(const string &fname, const string &tablename);
+
+    ///Configures the fitsLoader from the config file and/or command arguments.
+    int Exec(Configuration& conf);
+};
+
+// --------------------------------------------------------------------------
+//
+//! Constructor
+//! @param out
+//!        the ostream where to redirect the outputs
+//
+FitsDumper::FitsDumper(const string &fname, const string &tablename) : factfits(fname, tablename), fFilename(fname)
+{
+}
+
+string FitsDumper::ValueTypeToStr(char type) const
+{
+    switch (type)
+    {
+        case 'L': return "bool(8)";
+        case 'A': return "char(8)";
+        case 'B': return "byte(8)";
+        case 'I': return "short(16)";
+        case 'J': return "int(32)";
+        case 'K': return "int(64)";
+        case 'E': return "float(32)";
+        case 'D': return "double(64)";
+    default:
+        return "unknown";
+    }
+}
+
+void FitsDumper::List()
+{
+    const fits::Table::Keys    &fKeyMap = GetKeys();
+    const fits::Table::Columns &fColMap = GetColumns();
+
+    cout << "\nFile: " << fFilename << "\n";
+
+    cout << " " << fKeyMap.find("EXTNAME")->second.value << " [";
+    cout << GetNumRows() << "]\n";
+
+    for (auto it = fColMap.begin(); it != fColMap.end(); it++)
+    {
+        cout << "   " << it->first << "[" << it->second.num << "] (" << it->second.unit << ":" << ValueTypeToStr(it->second.type) << ") ";
+        for (auto jt = fKeyMap.begin(); jt != fKeyMap.end(); jt++)
+            if (jt->second.value == it->first)
+                cout << "/ " << jt->second.comment << endl;
+    }
+
+    cout << endl;
+}
+
+void FitsDumper::ListKeywords(ostream &fout)
+{
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    for (auto it=fKeyMap.begin(); it != fKeyMap.end(); it++)
+    {
+        fout << "## " << ::left << setw(8) << it->first << "= ";
+
+        if (it->second.type=='T')
+            fout << ::left  << setw(20) << ("'"+it->second.value+"'");
+        else
+            fout << ::right << setw(20) << it->second.value;
+
+        if (!it->second.comment.empty())
+            fout << " / " << it->second.comment;
+        fout << '\n';
+    }
+
+    fout << flush;
+}
+
+void FitsDumper::ListFileContent() const
+{
+    const std::vector<std::string> &tables = GetTables();
+
+    cout << "File " << fFilename << " has " << tables.size() << " table(s): " << endl;
+    for (auto it=tables.begin(); it!=tables.end(); it++)
+        cout << " * " << *it << endl;
+}
+
+void FitsDumper::ListHeader(const string& filename)
+{
+    ostream fout(cout.rdbuf());
+
+    ofstream sout;
+    if (filename!="-")
+    {
+        sout.open(filename);
+        if (!sout)
+        {
+            cerr << "Cannot open output stream " << filename << ": " << strerror(errno) << endl;
+            return;
+        }
+        fout.rdbuf(sout.rdbuf());
+    }
+
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    fout << "\nTable: " << fKeyMap.find("EXTNAME")->second.value << " (rows=" << GetNumRows() << ")\n";
+    if (fKeyMap.find("COMMENT") != fKeyMap.end())
+        fout << "Comment: \t" << fKeyMap.find("COMMENT")->second.value << "\n";
+
+    ListKeywords(fout);
+    fout << endl;
+}
+
+vector<MyColumn> FitsDumper::InitColumns(vector<string> names)
+{
+    static const boost::regex expr("([[:word:].]+)(\\[([[:digit:]]+)?(:)?([[:digit:]]+)?\\])?");
+
+    const fits::Table::Columns &fColMap = GetColumns();
+
+    if (names.empty())
+        for (auto it=fColMap.begin(); it!=fColMap.end(); it++)
+            if (it->second.num>0)
+                names.push_back(it->first);
+
+    vector<MyColumn> vec;
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        boost::smatch what;
+        if (!boost::regex_match(*it, what, expr, boost::match_extra))
+        {
+            cerr << "Couldn't parse expression '" << *it << "' " << endl;
+            return vector<MyColumn>();
+        }
+
+        const string name = what[1];
+
+        const auto iter = fColMap.find(name);
+        if (iter==fColMap.end())
+        {
+            cerr << "ERROR - Column '" << name << "' not found in table." << endl;
+            return vector<MyColumn>();
+        }
+
+        const fits::Table::Column &col = iter->second;
+
+        const string val0  = what[3];
+        const string delim = what[4];
+        const string val1  = what[5];
+
+        const uint32_t first = atol(val0.c_str());
+        const uint32_t last  = (val0.empty() && delim.empty()) ? col.num-1 : (val1.empty() ? first : atoi(val1.c_str()));
+
+        if (first>=col.num)
+        {
+            cerr << "ERROR - First index " << first << " for column " << name << " exceeds number of elements " << col.num << endl;
+            return vector<MyColumn>();
+        }
+
+        if (last>=col.num)
+        {
+            cerr << "ERROR - Last index " << last << " for column " << name << " exceeds number of elements " << col.num << endl;
+            return vector<MyColumn>();
+        }
+
+        if (first>last)
+        {
+            cerr << "ERROR - Last index " << last << " for column " << name << " exceeds first index " << first << endl;
+            return vector<MyColumn>();
+        }
+
+        MyColumn mycol;
+
+        mycol.name  = name;
+        mycol.col   = col;
+        mycol.first = first;
+        mycol.last  = last;
+        mycol.ptr   = SetPtrAddress(name);
+
+        vec.push_back(mycol);
+    }
+
+    return vec;
+}
+
+double FitsDumper::GetDouble(const MyColumn &it, size_t i) const
+{
+    switch (it.col.type)
+    {
+    case 'A':
+        return reinterpret_cast<const char*>(it.ptr)[i];
+
+    case 'L':
+        return reinterpret_cast<const bool*>(it.ptr)[i];
+
+    case 'B':
+        return (unsigned int)reinterpret_cast<const uint8_t*>(it.ptr)[i];
+
+    case 'I':
+        return reinterpret_cast<const int16_t*>(it.ptr)[i];
+
+    case 'J':
+        return reinterpret_cast<const int32_t*>(it.ptr)[i];
+
+    case 'K':
+        return reinterpret_cast<const int64_t*>(it.ptr)[i];
+
+    case 'E':
+        return reinterpret_cast<const float*>(it.ptr)[i];
+
+    case 'D':
+        return reinterpret_cast<const double*>(it.ptr)[i];
+    }
+
+    return 0;
+}
+
+int64_t FitsDumper::GetInteger(const MyColumn &it, size_t i) const
+{
+    switch (it.col.type)
+    {
+    case 'A':
+        return reinterpret_cast<const char*>(it.ptr)[i];
+
+    case 'L':
+        return reinterpret_cast<const bool*>(it.ptr)[i];
+
+    case 'B':
+        return (unsigned int)reinterpret_cast<const uint8_t*>(it.ptr)[i];
+
+    case 'I':
+        return reinterpret_cast<const int16_t*>(it.ptr)[i];
+
+    case 'J':
+        return reinterpret_cast<const int32_t*>(it.ptr)[i];
+
+    case 'K':
+        return reinterpret_cast<const int64_t*>(it.ptr)[i];
+
+    case 'E':
+        return reinterpret_cast<const float*>(it.ptr)[i];
+
+    case 'D':
+        return reinterpret_cast<const double*>(it.ptr)[i];
+    }
+
+    return 0;
+}
+
+string FitsDumper::Format(const string &format, const MyColumn &col, size_t i) const
+{
+    switch (*format.rbegin())
+    {
+    case 'd':
+    case 'i':
+    case 'o':
+    case 'u':
+    case 'x':
+    case 'X':
+        return Tools::Form(format.c_str(), GetDouble(col, i));
+
+    case 'e':
+    case 'E':
+    case 'f':
+    case 'F':
+    case 'g':
+    case 'G':
+    case 'a':
+    case 'A':
+        return Tools::Form(format.c_str(), GetInteger(col, i));
+
+    case 'h':
+        {
+            string rc = Tools::Scientific(GetDouble(col, i));
+            *remove_if(rc.begin(), rc.end(), ::isspace)=0;
+            return rc;
+        }
+    }
+
+    return "";
+}
+
+string FitsDumper::Format(const string &format, const double &val) const
+{
+    switch (*format.rbegin())
+    {
+    case 'd':
+    case 'i':
+    case 'o':
+    case 'u':
+    case 'x':
+    case 'X':
+        return Tools::Form(format.c_str(), int64_t(val));
+
+    case 'e':
+    case 'E':
+    case 'f':
+    case 'F':
+    case 'g':
+    case 'G':
+    case 'a':
+    case 'A':
+        return Tools::Form(format.c_str(), val);
+
+    case 'h':
+        {
+            string rc = Tools::Scientific(val);
+            *remove_if(rc.begin(), rc.end(), ::isspace)=0;
+            return rc;
+        }
+    }
+
+    return "";
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Perform the actual dump, based on the current parameters
+//
+#ifdef HAVE_ROOT
+void FitsDumper::Dump(ostream &fout, const vector<string> &format, const vector<MyColumn> &cols, const string &filter, size_t first, size_t limit, const string &filename)
+#else
+void FitsDumper::Dump(ostream &fout, const vector<string> &format, const vector<MyColumn> &cols, const string &, size_t first, size_t limit, const string &filename)
+#endif
+{
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+#ifdef HAVE_ROOT
+    TFormula select;
+    if (!filter.empty() && select.Compile(filter.c_str()))
+        throw runtime_error("Syntax Error: TFormula::Compile failed for '"+filter+"'");
+#endif
+
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "## Fits file:  \t" << fFilename << '\n';
+    if (filename!="-")
+        fout << "## File:      \t" << filename << '\n';
+    fout << "## Table:     \t" << fKeyMap.find("EXTNAME")->second.value << '\n';
+    fout << "## NumRows:   \t" << GetNumRows() << '\n';
+    fout << "## Comment:   \t" << ((fKeyMap.find("COMMENT") != fKeyMap.end()) ? fKeyMap.find("COMMENT")->second.value : "") << '\n';
+#ifdef HAVE_ROOT
+    if (!filter.empty())
+        fout << "## Selection: \t" << select.GetExpFormula() << '\n';
+#endif
+    fout << "## --------------------------------------------------------------------------\n";
+    ListKeywords(fout);
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "#\n";
+
+    size_t num = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        fout << "# " << it->name;
+
+        if (it->first==it->last)
+        {
+            if (it->first!=0)
+                fout << "[" << it->first << "]";
+        }
+        else
+            fout << "[" << it->first << ":" << it->last << "]";
+
+        if (!it->col.unit.empty())
+            fout << ": " << it->col.unit;
+        fout << '\n';
+
+        num += it->last-it->first+1;
+    }
+    fout << "#" << endl;
+
+    // -----------------------------------------------------------------
+
+#ifdef HAVE_ROOT
+    vector<Double_t> data(num+1);
+#endif
+
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        size_t p = 0;
+
+#ifdef HAVE_ROOT
+        data[p++] = first-1;
+#endif
+
+        ostringstream sout;
+        sout.precision(fout.precision());
+        sout.flags(fout.flags());
+
+        uint32_t col = 0;
+        for (auto it=cols.begin(); it!=cols.end(); it++, col++)
+        {
+            string msg;
+            for (uint32_t i=it->first; i<=it->last; i++, p++)
+            {
+                if (col<format.size())
+                    sout << Format("%"+format[col], *it, i) << " ";
+                else
+                {
+                    switch (it->col.type)
+                    {
+                    case 'A':
+                        msg += reinterpret_cast<const char*>(it->ptr)[i];
+                        break;
+                    case 'B':
+                        sout << (unsigned int)reinterpret_cast<const unsigned char*>(it->ptr)[i] << " ";
+                        break;
+                    case 'L':
+                        sout << reinterpret_cast<const bool*>(it->ptr)[i] << " ";
+                        break;
+                    case 'I':
+                        sout << reinterpret_cast<const int16_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'J':
+                        sout << reinterpret_cast<const int32_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'K':
+                        sout << reinterpret_cast<const int64_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'E':
+                        sout << reinterpret_cast<const float*>(it->ptr)[i] << " ";
+                        break;
+                    case 'D':
+                        sout << reinterpret_cast<const double*>(it->ptr)[i] << " ";
+                        break;
+                    default:
+                        ;
+                    }
+                }
+#ifdef HAVE_ROOT
+                if (!filter.empty())
+                    data[p] = GetDouble(*it, i);
+#endif
+            }
+
+            if (it->col.type=='A')
+                sout << "'" << msg.c_str() << "' ";
+        }
+#ifdef HAVE_ROOT
+        if (!filter.empty() && select.EvalPar(0, data.data())<0.5)
+            continue;
+#endif
+        fout << sout.str() << endl;
+    }
+}
+
+vector<MyColumn> FitsDumper::InitColumnsRoot(vector<string> &names)
+{
+    static const boost::regex expr("[^\\[]([[:word:].]+)(\\[([[:digit:]]+)\\])?");
+
+    const fits::Table::Columns &cols = GetColumns();
+
+    vector<MyColumn> vec;
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        if (it->empty())
+            continue;
+
+        *it = ' '+*it;
+
+        string::const_iterator ibeg = it->begin();
+        string::const_iterator iend = it->end();
+
+        boost::smatch what;
+        while (boost::regex_search(ibeg, iend, what, expr, boost::match_extra))
+        {
+            const string all  = what[0];
+            const string name = what[1];
+            const size_t idx  = atol(string(what[3]).c_str());
+
+            // Check if found colum is valid
+            const auto ic = cols.find(name);
+            if (ic==cols.end())
+            {
+                ibeg++;
+                //cout << "Column '" << name << "' does not exist." << endl;
+                //return vector<MyColumn>();
+                continue;
+            }
+            if (idx>=ic->second.num)
+            {
+                cout << "Column '" << name << "' has no index " << idx << "." << endl;
+                return vector<MyColumn>();
+            }
+
+            // find index if column already exists
+            size_t p = 0;
+            for (; p<vec.size(); p++)
+                if (vec[p].name==name)
+                    break;
+
+            const string id = '['+to_string(p)+']';
+
+            // Replace might reallocate the memory. Therefore, we cannot use what[0].first
+            // directly but have to store the offset
+            const size_t offset = what[0].first - it->begin();
+
+            it->replace(ibeg-it->begin()+what.position(1), what.length()-1, id);
+
+            ibeg = it->begin() + offset + id.size();
+            iend = it->end();
+
+            if (p<vec.size())
+                continue;
+
+            // Column not found, add new column
+            MyColumn mycol;
+
+            mycol.name  = name;
+            mycol.col   = ic->second;
+            mycol.first = idx;
+            mycol.last  = idx;
+            mycol.ptr   = SetPtrAddress(name);
+
+            vec.push_back(mycol);
+        }
+    }
+
+    ostringstream id;
+    id << '[' << vec.size() << ']';
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        while (1)
+        {
+            auto p = it->find_first_of('#');
+            if (p==string::npos)
+                break;
+
+            it->replace(p, 1, id.str());
+        }
+    }
+
+    //cout << endl;
+    //for (size_t i=0; i<vec.size(); i++)
+    //    cout << "val[" << i << "] = " << vec[i].name << '[' << vec[i].first << ']' << endl;
+    //cout << endl;
+
+    return vec;
+}
+
+#ifdef HAVE_ROOT
+void FitsDumper::DumpRoot(ostream &fout, const vector<string> &cols, const string &filter, size_t first, size_t limit, const string &filename)
+#else
+void FitsDumper::DumpRoot(ostream &, const vector<string> &, const string &, size_t, size_t, const string &)
+#endif
+{
+#ifdef HAVE_ROOT
+    vector<string> names(cols);
+    names.insert(names.begin(), filter);
+
+    const vector<MyColumn> vec = InitColumnsRoot(names);
+    if (vec.empty())
+        return;
+
+    vector<TFormula> form(names.size());
+
+    auto ifo = form.begin();
+    for (auto it=names.begin(); it!=names.end(); it++, ifo++)
+    {
+        if (!it->empty() && ifo->Compile(it->c_str()))
+            throw runtime_error("Syntax Error: TFormula::Compile failed for '"+*it+"'");
+    }
+
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "## Fits file:  \t" << fFilename << '\n';
+    if (filename!="-")
+        fout << "## File:      \t" << filename << '\n';
+    fout << "## Table:     \t" << fKeyMap.find("EXTNAME")->second.value << '\n';
+    fout << "## NumRows:   \t" << GetNumRows() << '\n';
+    fout << "## Comment:   \t" << ((fKeyMap.find("COMMENT") != fKeyMap.end()) ? fKeyMap.find("COMMENT")->second.value : "") << '\n';
+    fout << "## --------------------------------------------------------------------------\n";
+    ListKeywords(fout);
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "##\n";
+    if (!filter.empty())
+        fout << "## Selection: " << form[0].GetExpFormula() << "\n##\n";
+
+    size_t num = 0;
+    for (auto it=vec.begin(); it!=vec.end(); it++, num++)
+    {
+        fout << "## [" << num << "] = " << it->name;
+
+        if (it->first==it->last)
+        {
+            if (it->first!=0)
+                fout << "[" << it->first << "]";
+        }
+        else
+            fout << "[" << it->first << ":" << it->last << "]";
+
+        if (!it->col.unit.empty())
+            fout << ": " << it->col.unit;
+        fout << '\n';
+    }
+    fout << "##\n";
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "#\n";
+
+    fout << "# ";
+    for (auto it=form.begin()+1; it!=form.end(); it++)
+        fout << " \"" << it->GetExpFormula() << "\"";
+    fout << "\n#" << endl;
+
+    // -----------------------------------------------------------------
+
+    vector<Double_t> data(vec.size()+1);
+
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        size_t p = 0;
+        for (auto it=vec.begin(); it!=vec.end(); it++, p++)
+            data[p] = GetDouble(*it, it->first);
+
+        data[p] = first;
+
+        if (!filter.empty() && form[0].EvalPar(0, data.data())<0.5)
+            continue;
+
+        for (auto iform=form.begin()+1; iform!=form.end(); iform++)
+            fout << iform->EvalPar(0, data.data()) << " ";
+
+        fout << endl;
+    }
+#endif
+}
+
+void FitsDumper::DumpMinMax(ostream &fout, const vector<MyColumn> &cols, size_t first, size_t limit, bool fNoZeroPlease)
+{
+    vector<minMaxStruct> statData(cols.size());
+
+    // Loop over all columns in our list of requested columns
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        auto statsIt = statData.begin();
+
+        for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+        {
+            if ((it->name=="UnixTimeUTC" || it->name=="PCTime") && it->first==0 && it->last==1)
+            {
+                const uint32_t *val = reinterpret_cast<const uint32_t*>(it->ptr);
+                if (fNoZeroPlease && val[0]==0 && val[1]==0)
+                    continue;
+
+                statsIt->add(Time(val[0], val[1]).Mjd());
+                continue;
+            }
+
+            for (uint32_t i=it->first; i<=it->last; i++)
+            {
+                const double cValue = GetDouble(*it, i);
+
+                if (fNoZeroPlease && cValue == 0)
+                    continue;
+
+                statsIt->add(cValue);
+            }
+        }
+    }
+
+    // okay. So now I've got ALL the data, loaded.
+    // let's do the summing and averaging in a safe way (i.e. avoid overflow
+    // of variables as much as possible)
+    auto statsIt = statData.begin();
+    for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+    {
+        fout << "\n[" << it->name << ':' << it->first;
+        if (it->first!=it->last)
+            fout << ':' << it->last;
+        fout << "]\n";
+
+        if (statsIt->numValues == 0)
+        {
+            fout << "Min: -\nMax: -\nAvg: -\nRms: -" << endl;
+            continue;
+        }
+
+        const long &num = statsIt->numValues;
+
+        long double &avg = statsIt->average;
+        long double &rms = statsIt->squared;
+
+        avg /= num;
+        rms /= num;
+        rms += avg*avg;
+        rms  = rms<0 ? 0 : sqrt(rms);
+
+        fout << "Min: " << statsIt->min << '\n';
+        fout << "Max: " << statsIt->max << '\n';
+        fout << "Avg: " << avg << '\n';
+        fout << "Rms: " << rms << endl;
+    }
+}
+
+template<typename T>
+void displayStats(vector<char> &array, ostream& out)
+{
+    const size_t numElems = array.size()/sizeof(T);
+    if (numElems == 0)
+    {
+        out << "Min: -\nMax: -\nMed: -\nAvg: -\nRms: -" << endl;
+        return;
+    }
+
+    T *val = reinterpret_cast<T*>(array.data());
+
+    sort(val, val+numElems);
+
+    out << "Min: " << double(val[0]) << '\n';
+    out << "Max: " << double(val[numElems-1]) << '\n';
+
+    if (numElems%2 == 0)
+        out << "Med: " << (double(val[numElems/2-1]) + double(val[numElems/2]))/2 << '\n';
+    else
+        out << "Med: " << double(val[numElems/2]) << '\n';
+
+    long double avg = 0;
+    long double rms = 0;
+    for (uint32_t i=0;i<numElems;i++)
+    {
+        const long double v = val[i];
+        avg += v;
+        rms += v*v;
+    }
+
+    avg /= numElems;
+    rms /= numElems;
+    rms -= avg*avg;
+    rms  = rms<0 ? 0 : sqrt(rms);
+
+
+    out << "Avg: " << avg << '\n';
+    out << "Rms: " << rms << endl;
+}
+
+#ifdef HAVE_ROOT
+void FitsDumper::DumpStats(ostream &fout, const vector<MyColumn> &cols, const string &filter, size_t first, size_t limit)
+#else
+void FitsDumper::DumpStats(ostream &fout, const vector<MyColumn> &cols, const string &, size_t first, size_t limit)
+#endif
+{
+#ifdef HAVE_ROOT
+    TFormula select;
+    if (!filter.empty() && select.Compile(filter.c_str()))
+        throw runtime_error("Syntax Error: TFormula::Compile failed for '"+filter+"'");
+#endif
+
+    // Loop over all columns in our list of requested columns
+    vector<vector<char>> statData;
+
+    const size_t rows = limit==0 || GetNumRows()<limit ? GetNumRows() : limit;
+
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+        statData.emplace_back(vector<char>(it->col.size*rows*(it->last-it->first+1)));
+
+#ifdef HAVE_ROOT
+    size_t num = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+        num += it->last-it->first+1;
+
+    vector<Double_t> data(num+1);
+#endif
+
+    // Loop over all columns in our list of requested columns
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    uint64_t counter = 0;
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+#ifdef HAVE_ROOT
+        if (!filter.empty())
+        {
+            size_t p = 0;
+
+            data[p++] = first-1;
+
+            for (auto it=cols.begin(); it!=cols.end(); it++)
+                for (uint32_t i=it->first; i<=it->last; i++, p++)
+                    data[p] = GetDouble(*it, i);
+
+            if (select.EvalPar(0, data.data())<0.5)
+                continue;
+        }
+#endif
+
+        auto statsIt = statData.begin();
+        for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+        {
+            const char *src = reinterpret_cast<const char*>(it->ptr);
+            const size_t sz = (it->last-it->first+1)*it->col.size;
+            memcpy(statsIt->data()+counter*sz, src+it->first*it->col.size, sz);
+        }
+
+        counter++;
+    }
+
+    auto statsIt = statData.begin();
+    for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+    {
+        fout << "\n[" << it->name << ':' << it->first;
+        if (it->last!=it->first)
+            fout << ':' << it->last;
+        fout << "]\n";
+
+        const size_t sz = (it->last-it->first+1)*it->col.size;
+        statsIt->resize(counter*sz);
+
+        switch (it->col.type)
+        {
+        case 'L':
+            displayStats<bool>(*statsIt, fout);
+            break;
+        case 'B':
+            displayStats<char>(*statsIt, fout);
+            break;
+        case 'I':
+            displayStats<int16_t>(*statsIt, fout);
+            break;
+        case 'J':
+            displayStats<int32_t>(*statsIt, fout);
+            break;
+        case 'K':
+            displayStats<int64_t>(*statsIt, fout);
+            break;
+        case 'E':
+            displayStats<float>(*statsIt, fout);
+            break;
+        case 'D':
+            displayStats<double>(*statsIt, fout);
+            break;
+        default:
+            ;
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the configuration parameters
+//! @param conf
+//!             the configuration object
+//
+int FitsDumper::Exec(Configuration& conf)
+{
+    if (conf.Get<bool>("list"))
+        List();
+
+    if (conf.Get<bool>("filecontent"))
+        ListFileContent();
+
+    if (conf.Get<bool>("header"))
+        ListHeader(conf.Get<string>("outfile"));
+
+
+    if (conf.Get<bool>("header") || conf.Get<bool>("list") || conf.Get<bool>("filecontent"))
+        return 1;
+
+    // ------------------------------------------------------------
+
+    if (conf.Get<bool>("minmax") && conf.Get<bool>("stat"))
+    {
+        cerr << "Invalid combination of options: cannot do stats and minmax." << endl;
+        return -1;
+    }
+    if (conf.Get<bool>("stat") && conf.Get<bool>("nozero"))
+    {
+        cerr << "Invalid combination of options: nozero only works with minmax." << endl;
+        return -1;
+    }
+
+    if (conf.Get<bool>("scientific") && conf.Get<bool>("fixed"))
+    {
+        cerr << "Switched --scientific and --fixed are mutually exclusive." << endl;
+        return -1;
+    }
+
+    if (conf.Has("%") && conf.Has("%%"))
+    {
+        cerr << "Switched --% and --%% are mutually exclusive." << endl;
+        return -1;
+    }
+
+    // ------------------------------------------------------------
+
+    const string filename = conf.Get<string>("outfile");
+
+    ostream fout(cout.rdbuf());
+
+    ofstream sout;
+    if (filename!="-")
+    {
+        sout.open(filename);
+        if (!sout)
+        {
+            cerr << "Cannot open output stream " << filename << ": " << strerror(errno) << endl;
+            return false;
+        }
+        fout.rdbuf(sout.rdbuf());
+    }
+
+    fout.precision(conf.Get<int>("precision"));
+    if (conf.Get<bool>("fixed"))
+        fout << fixed;
+    if (conf.Get<bool>("scientific"))
+        fout << scientific;
+
+    const string filter = conf.Has("filter") ? conf.Get<string>("filter") : "";
+    const size_t first  = conf.Get<size_t>("first");
+    const size_t limit  = conf.Get<size_t>("limit");
+
+#ifdef HAVE_ROOT
+    if (conf.Get<bool>("root"))
+    {
+        DumpRoot(fout, conf.Vec<string>("col"), filter, first, limit, filename);
+        return 0;
+    }
+#endif
+
+    const vector<string> format = conf.Vec<string>("%");
+    for (auto it=format.begin(); it<format.end(); it++)
+    {
+        static const boost::regex expr("-?[0-9]*[.]?[0-9]*[diouxXeEfFgGaAh]");
+
+        boost::smatch what;
+        if (!boost::regex_match(*it, what, expr, boost::match_extra))
+        {
+            cerr << "Format '" << *it << "' not supported." << endl;
+            return -1;
+        }
+    }
+
+    const vector<MyColumn> cols = InitColumns(conf.Vec<string>("col"));
+    if (cols.empty())
+        return false;
+
+    if (conf.Get<bool>("minmax"))
+    {
+        DumpMinMax(fout, cols, first, limit, conf.Get<bool>("nozero"));
+        return 0;
+    }
+
+    if (conf.Get<bool>("stat"))
+    {
+        DumpStats(fout, cols, filter, first, limit);
+        return 0;
+    }
+
+    Dump(fout, format, cols, filter, first, limit, filename);
+
+    return 0;
+}
+
+void PrintUsage()
+{
+    cout <<
+        "fitsdump is a tool to dump data from a FITS table as ascii.\n"
+        "\n"
+        "Usage: fitsdump [OPTIONS] fitsfile col col ... \n"
+        "  or:  fitsdump [OPTIONS]\n"
+        "\n"
+        "Addressing a column:\n"
+        "  ColumnName:         Will address all fields of a column\n"
+        "  ColumnName[n]:      Will address the n-th field of a column (starts with 0)\n"
+        "  ColumnName[n1:n2]:  Will address all fields between n1 and including n2\n"
+#ifdef HAVE_ROOT
+        "\n"
+        "Selecting a column:\n"
+        "  Commandline option:  --filter\n"
+        "  Explanation:  Such a selection is evaluated using TFormula, hence, every "
+        "mathematical operation allowed in TFormula is allowed there, too. "
+        "The reference is the column index as printed in the output stream, "
+        "starting with 1. The index 0 is reserved for the row number.\n"
+#endif
+        ;
+    cout << endl;
+}
+
+void PrintHelp()
+{
+#ifdef HAVE_ROOT
+    cout <<
+        "\n\n"
+        "Examples:\n"
+        "In --root mode, fitsdump support TFormula's syntax for all columns and the filter "
+        "You can then refer to a column or a (single) index of the column just by its name "
+        "If the index is omitted, 0 is assumed. Note that the [x:y] syntax in this mode is "
+        "not supported\n"
+        "\n"
+        "  fitsdump Zd --filter=\"[0]>20 && cos([1])*TMath::RadToDeg()<45\"\n"
+        "\n"
+        "The columns can also be addressed with their names\n"
+        "\n"
+        "  fitsdump -r \"(Zd+Err)*TMath::DegToRad()\" --filter=\"[0]<25 && [1]<0.05\"\n"
+        "\n"
+        "is identical to\n"
+        "\n"
+        "  fitsdump -r \"(Zd[0]+Err[0])*TMath::DegToRad()\" --filter=\"[0]<25 && [1]<0.05\"\n"
+        "\n"
+        "A special placeholder exists for the row number\n"
+        "\n"
+        "  fitsdump -r \"#\" --filter=\"#>10 && #<100\"\n"
+        "\n"
+        "To format a single column you can do\n"
+        "\n"
+        "  fitsdump col1 -%.1f col2 -%d\n"
+        "\n"
+        "A special format is provided converting to 'human readable format'\n"
+        "\n"
+        "  fitsdump col1 -%h\n"
+        "\n";
+    cout << endl;
+#endif
+}
+
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitsdump options");
+    configs.add_options()
+        ("filecontent", po_switch(),            "List the number of tables in the file, along with their name")
+        ("header,h",    po_switch(),            "Dump header of given table")
+        ("list,l",      po_switch(),            "List all tables and columns in file")
+        ("fitsfile",    var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                              , "Name of FITS file")
+        ("col,c",       vars<string>(),         "List of columns to dump\narg is a list of columns, separated by a space.\nAdditionnally, a list of sub-columns can be added\ne.g. Data[3] will dump sub-column 3 of column Data\nData[3:4] will dump sub-columns 3 and 4\nOmitting this argument dump the entire column\nnote: all indices start at zero")
+        ("outfile,o",   var<string>("-"),       "Name of output file (-:/dev/stdout)")
+        ("precision,p", var<int>(20),           "Precision of ofstream")
+        ("stat,s",      po_switch(),            "Perform statistics instead of dump")
+        ("minmax,m",    po_switch(),            "Calculates min and max of data")
+        ("nozero,z",    po_switch(),            "skip 0 values for stats")
+        ("fixed",       po_switch(),            "Switch output stream to floating point values in fixed-point notation")
+        ("scientific",  po_switch(),            "Switch output stream to floating point values in scientific notation")
+        ("%,%",         vars<string>(),         "Format for the output (currently not available in root-mode)")
+        ("force",       po_switch(),            "Force reading the fits file even if END key is missing")
+        ("first",       var<size_t>(size_t(0)), "First number of row to read")
+        ("limit",       var<size_t>(size_t(0)), "Limit for the maximum number of rows to read (0=unlimited)")
+        ("tablename,t", var<string>(""),        "Name of the table to open. If not specified, first binary table is opened")
+#ifdef HAVE_ROOT
+        ("root,r",      po_switch(),            "Enable root mode")
+        ("filter,f",    var<string>(""),        "Filter to restrict the selection of events (e.g. '[0]>10 && [0]<20';  does not work with stat and minmax yet)")
+#endif
+        ;
+
+    po::positional_options_description p;
+    p.add("fitsfile",  1); // The first positional options
+    p.add("col",      -1); // All others
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    if (!conf.Has("fitsfile"))
+    {
+        cerr << "Filename required." << endl;
+        return -1;
+    }
+
+    FitsDumper loader(conf.Get<string>("fitsfile"), conf.Get<string>("tablename"));
+    if (!loader)
+    {
+        cerr << "ERROR - Opening " << conf.Get<string>("fitsfile");
+        cerr << " failed: " << strerror(errno) << endl;
+        return -1;
+    }
+
+    return loader.Exec(conf);
+}
Index: branches/FACT++_part_filenames/src/fitsloader.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsloader.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsloader.cc	(revision 18732)
@@ -0,0 +1,689 @@
+//****************************************************************
+/** @class FitsLoader
+
+  @brief Load a given Fits file and table, and dump selected columns if requested.
+
+  It derives from StateMachineDim. the first parent is here to enforce
+  a state machine behaviour
+  The possible states and transitions of the machine are:
+  \dot
+  digraph FitsLoader {
+          node [shape=record, fontname=Helvetica, fontsize=10];
+      e [label="Error" color="red"];
+   r [label="Ready"]
+   d [label="FileLoaded"]
+
+  e -> r
+  r -> e
+  r -> d
+  d -> r
+   }
+  \enddot
+ */
+ //****************************************************************
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+#include "LocalControl.h"
+#include "Description.h"
+
+
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+
+#include <iostream>
+
+#include <CCfits/CCfits>
+
+class FitsLoader : public StateMachineDim
+{
+
+public:
+    enum
+    {
+        kSM_FileLoaded = 20,
+    } localstates_t;
+
+    FitsLoader(ostream& out);
+    ~FitsLoader();
+
+    ///Define command names
+    static const char* fLoadFits;
+    static const char* fUnloadFits;
+    static const char* fListColumns;
+    static const char* fDumpColumns;
+    static const char* fClearDumpList;
+    static const char* fDoDump;
+    static const char* fConfigFileName;
+    static const char* fConfigTableName;
+    static const char* fConfigPrecName;
+    static const char* fConfigFileOutName;
+
+private:
+    ///Name of the fits file to load
+    string fFileName;
+    ///Name of the table to load from the  file
+    string fTableName;
+    ///FITS pointer
+    CCfits::FITS* fFile;
+    ///Table pointer
+    CCfits::Table* fTable;
+    ///Precision of the ofstream. Used to output a given number of significant digits for floats or doubles
+    int fStreamPrecision;
+    ///Name of the output file
+    string fFileOut;
+    ///map between the column names and their CCfits objects
+    map<string, CCfits::Column*> fColMap;
+    ///List of the column names to be dumped
+    vector<string> fDumpList;
+    ///Transition from ready to fileLoaded.
+    int LoadPlease();
+    ///Transition from fileLoaded to ready
+    int UnloadPlease();
+    ///Lists the loaded column names
+    int ListColumnsPlease(const Event&);
+    ///Add a column name to the dump list
+    int AddDumpColumnsPlease(const Event&);
+    ///Clear the dump list
+    int ClearDumpListPlease(const Event&);
+    ///Perform the dumping, based on the current dump list
+    int DoDumpPlease(const Event&);
+    ///Set the name of the Fits file to be loaded
+    int ConfigFileNamePlease(const Event&);
+    ///Set the name of the table to be loaded
+    int ConfigTableNamePlease(const Event&);
+    ///Set the ofstream precision
+    int SetOFStreamPrecisionPlease(const Event&);
+    ///Set the name of the output file
+    int SetFileOutPlease(const Event&);
+    ///Calculate the buffer size required to read a row of the fits table, as well as the offsets to each column
+    vector<int> CalculateBufferSize();
+    ///Write a single row of the selected data
+    void writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer);
+
+public:
+    ///Configures the fitsLoader from the config file and/or command arguments.
+    void SetupConfig(Configuration& conf);
+};
+
+const char* FitsLoader::fLoadFits = "load";
+const char* FitsLoader::fUnloadFits = "unload";
+const char* FitsLoader::fListColumns = "list_columns";
+const char* FitsLoader::fDumpColumns = "add_dump";
+const char* FitsLoader::fClearDumpList = "clear_dump";
+const char* FitsLoader::fDoDump = "dump";
+const char* FitsLoader::fConfigFileName = "set_file";
+const char* FitsLoader::fConfigTableName = "set_table";
+const char* FitsLoader::fConfigPrecName = "set_prec";
+const char* FitsLoader::fConfigFileOutName = "set_outfile";
+
+// --------------------------------------------------------------------------
+//
+//! Set the name of the output file
+//! @param evt
+//!        the event transporting the file name
+//
+int FitsLoader::SetFileOutPlease(const Event& evt)
+{
+    fFileOut = evt.GetText();
+    ostringstream str;
+    str << "Output file is now " << fFileOut;
+    Message(str);
+    return 0;
+}
+// --------------------------------------------------------------------------
+//
+//! Set the precision of the ofstream. So that an appropriate number of significant digits are outputted.
+//! @param evt
+//!        the event transporting the precision
+//
+int FitsLoader::SetOFStreamPrecisionPlease(const Event& evt)
+{
+    fStreamPrecision = evt.GetInt();
+    ostringstream str;
+    str << "ofstream precision is now " << fStreamPrecision;
+    Message(str);
+    return 0;
+}
+// --------------------------------------------------------------------------
+//
+//! Writes a single row of the selected FITS data to the output file.
+//! @param offsets
+//!         a vector containing the offsets to the columns (in bytes)
+//! @param targetFile
+//!         the ofstream where to write to
+//! @param fitsBuffer
+//!         the memory were the row has been loaded by cfitsio
+//
+void FitsLoader::writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer)
+{
+    targetFile.precision(fStreamPrecision);
+    map<string, CCfits::Column*>::iterator it;
+   for (it=fColMap.begin(); it != fColMap.end(); it++)
+    {
+        bool found = false;
+        for (vector<string>::iterator jt=fDumpList.begin(); jt != fDumpList.end(); jt++)
+        {
+            if (it->first == *jt)
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+            continue;
+       int offset = offsets[it->second->index()-1];
+       const char* charSrc = reinterpret_cast<char*>(&fitsBuffer[offset]);
+        unsigned char copyBuffer[30];//max size of a single variable
+        for (int width = 0; width<it->second->width(); width++)
+        {
+            switch (it->second->type())
+            {
+            case CCfits::Tbyte:
+                targetFile << *charSrc;
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tushort:
+                targetFile << *reinterpret_cast<const unsigned short*>(charSrc);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tshort:
+                targetFile << *reinterpret_cast<const short*>(charSrc);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tuint:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned int), copyBuffer);
+                //warning suppressed in gcc4.0.2
+                targetFile << *reinterpret_cast<unsigned int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tint:
+                reverse_copy(charSrc, charSrc+sizeof(int), copyBuffer);
+                targetFile << *reinterpret_cast<int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tulong:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned long), copyBuffer);
+                targetFile << *reinterpret_cast<unsigned long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlong:
+                reverse_copy(charSrc, charSrc+sizeof(long), copyBuffer);
+                targetFile << *reinterpret_cast<long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlonglong:
+                reverse_copy(charSrc, charSrc+sizeof(long long), copyBuffer);
+                targetFile << *reinterpret_cast<long long*>(copyBuffer);
+                charSrc += sizeof(long long);
+            break;
+            case CCfits::Tfloat:
+                reverse_copy(charSrc, charSrc+sizeof(float), copyBuffer);
+                targetFile << *reinterpret_cast<float*>(copyBuffer);
+                charSrc += sizeof(float);
+            break;
+            case CCfits::Tdouble:
+                reverse_copy(charSrc, charSrc+sizeof(double), copyBuffer);
+                targetFile << *reinterpret_cast<double*>(copyBuffer);
+                charSrc += sizeof(double);
+            break;
+            case CCfits::Tnull:
+            case CCfits::Tbit:
+            case CCfits::Tlogical:
+            case CCfits::Tstring:
+            case CCfits::Tcomplex:
+            case CCfits::Tdblcomplex:
+            case CCfits::VTbit:
+            case CCfits::VTbyte:
+            case CCfits::VTlogical:
+            case CCfits::VTushort:
+            case CCfits::VTshort:
+            case CCfits::VTuint:
+            case CCfits::VTint:
+            case CCfits::VTulong:
+            case CCfits::VTlong:
+            case CCfits::VTlonglong:
+            case CCfits::VTfloat:
+            case CCfits::VTdouble:
+            case CCfits::VTcomplex:
+            case CCfits::VTdblcomplex:
+                Error("Data type not implemented yet.");
+                return;
+            break;
+            default:
+                Error("THIS SHOULD NEVER BE REACHED");
+                return;
+            }//switch
+            targetFile << " ";
+        }//width loop
+    }//iterator over the columns
+    targetFile << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calculates the required buffer size for reading one row of the current table.
+//! Also calculates the offsets to all the columns
+//
+vector<int> FitsLoader::CalculateBufferSize()
+{
+    vector<int> result;
+    map<int,int> sizes;
+    int size = 0;
+
+    for (map<string, CCfits::Column*>::iterator it=fColMap.begin(); it != fColMap.end(); it++)
+    {
+        int width = it->second->width();
+        switch (it->second->type())
+        {
+        case CCfits::Tbyte:
+        case CCfits::Tushort:
+        case CCfits::Tshort:
+            Message("short");
+            sizes[it->second->index()] =  sizeof(char)*width;
+        break;
+        case CCfits::Tuint:
+        case CCfits::Tint:
+            Message("int");
+            sizes[it->second->index()] =  sizeof(int)*width;
+        break;
+        case CCfits::Tulong:
+        case CCfits::Tlong:
+            Message("long");
+            sizes[it->second->index()] = sizeof(int)*width;
+        break;
+        case CCfits::Tlonglong:
+            Message("longlong");
+            sizes[it->second->index()] =  sizeof(long long)*width;
+        break;
+        case CCfits::Tfloat:
+            Message("float");
+            sizes[it->second->index()] =  sizeof(float)*width;
+        break;
+        case CCfits::Tdouble:
+            Message("double");
+            sizes[it->second->index()] =  sizeof(double)*width;
+        break;
+        case CCfits::Tnull:
+        case CCfits::Tbit:
+        case CCfits::Tlogical:
+        case CCfits::Tstring:
+        case CCfits::Tcomplex:
+        case CCfits::Tdblcomplex:
+        case CCfits::VTbit:
+        case CCfits::VTbyte:
+        case CCfits::VTlogical:
+        case CCfits::VTushort:
+        case CCfits::VTshort:
+        case CCfits::VTuint:
+        case CCfits::VTint:
+        case CCfits::VTulong:
+        case CCfits::VTlong:
+        case CCfits::VTlonglong:
+        case CCfits::VTfloat:
+        case CCfits::VTdouble:
+        case CCfits::VTcomplex:
+        case CCfits::VTdblcomplex:
+            Error("Data type not implemented yet.");
+            return vector<int>();
+        break;
+        default:
+            Error("THIS SHOULD NEVER BE REACHED");
+            return vector<int>();
+        }
+    }
+    //calculate the offsets in the vector.
+    int checkIndex = 1;
+    for (map<int,int>::iterator it=sizes.begin(); it != sizes.end(); it++)
+    {
+        result.push_back(size);
+        size += it->second;
+        if (it->first != checkIndex)
+        {
+            ostringstream str;
+            str << "Expected index " << checkIndex << " found " << it->first;
+            Error(str);
+        }
+        checkIndex++;
+    }
+    result.push_back(size);
+    return result;
+}
+// --------------------------------------------------------------------------
+//
+//! Constructor
+//! @param out
+//!        the ostream where to redirect the outputs
+//
+FitsLoader::FitsLoader(ostream& out) : StateMachineDim(out, "FITS_LOADER")
+{
+    //Add the existing states
+    AddStateName(kSM_FileLoaded,  "FileLoaded", "A Fits file has been loaded");
+
+    //Add the possible transitions
+    AddEvent(kSM_FileLoaded, fLoadFits, kSM_Ready)
+            (boost::bind(&FitsLoader::LoadPlease, this))
+            ("Loads the given Fits file");
+    AddEvent(kSM_Ready, fUnloadFits, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::UnloadPlease, this))
+            ("Unloads the given Fits file");
+
+    //Add the possible configurations
+    AddEvent(fListColumns, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ListColumnsPlease, this, _1))
+            ("List the columns that were loaded from that file");
+    AddEvent(fDumpColumns, "C", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::AddDumpColumnsPlease, this, _1))
+            ("Add a given column to the dumping list");
+    AddEvent(fClearDumpList, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ClearDumpListPlease, this, _1))
+            ("Clear the dumping list");
+    AddEvent(fDoDump, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::DoDumpPlease, this, _1))
+            ("Perform the dump of columns data, based on the to dump list");
+    AddEvent(fConfigFileName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ConfigFileNamePlease, this, _1))
+            ("Gives the name of the Fits file to be loaded");
+    AddEvent(fConfigTableName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ConfigTableNamePlease, this, _1))
+            ("Gives the name of the Table to be loaded");
+    AddEvent(fConfigPrecName, "I", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::SetOFStreamPrecisionPlease, this, _1))
+            ("Set the precision of the ofstream, i.e. the number of significant digits being outputted");
+    AddEvent(fConfigFileOutName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::SetFileOutPlease, this, _1))
+            ("Set the name of the outputted file.");
+
+    fFile = NULL;
+    fStreamPrecision = 20;
+
+}
+// --------------------------------------------------------------------------
+//
+//! Destructor
+//
+FitsLoader::~FitsLoader()
+{
+    if (fFile)
+        delete fFile;
+    fFile = NULL;
+}
+// --------------------------------------------------------------------------
+//
+//! Loads the fits file based on the current parameters
+//
+int FitsLoader::LoadPlease()
+{
+    ostringstream str;
+    try
+    {
+        fFile = new CCfits::FITS(fFileName);
+    }
+    catch (CCfits::FitsException e)
+     {
+         str << "Could not open FITS file " << fFileName << " reason: " << e.message();
+         Error(str);
+         return kSM_Ready;
+     }
+    str.str("");
+    const multimap< string, CCfits::ExtHDU * > extMap = fFile->extension();
+    if (extMap.find(fTableName) == extMap.end())
+    {
+        str.str("");
+        str << "Could not open table " << fTableName << ". Tables in file are: ";
+        for (std::multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin(); it != extMap.end(); it++)
+            str << it->first << " ";
+        Error(str);
+        return kSM_Ready;
+    }
+    else
+        fTable = dynamic_cast<CCfits::Table*>(extMap.find(fTableName)->second);
+    int numRows = fTable->rows();
+    str.str("");
+    str << "Loaded table has " << numRows << " rows";
+    Message(str);
+
+    fColMap = fTable->column();
+    if (fDumpList.size() != 0)
+    {
+        bool should_clear = false;
+        for (vector<string>::iterator it=fDumpList.begin(); it!= fDumpList.end(); it++)
+        {
+            if (fColMap.find(*it) == fColMap.end())
+            {
+                should_clear = true;
+                Error("Config-given dump list contains invalid entry " + *it + " clearing the list");
+            }
+        }
+        if (should_clear)
+            fDumpList.clear();
+    }
+    return kSM_FileLoaded;
+}
+// --------------------------------------------------------------------------
+//
+//! Unloads the Fits file
+//
+int FitsLoader::UnloadPlease()
+{
+    if (fFile)
+        delete fFile;
+    else
+        Error("Error: Fits file is  NULL while it should not have been");
+    fFile = NULL;
+    return kSM_Ready;
+}
+// --------------------------------------------------------------------------
+//
+//! List the columns that are in the loaded Fits table
+//
+int FitsLoader::ListColumnsPlease(const Event&)
+{
+    Message("Columns in the loaded table are:");
+    map<string, CCfits::Column*>::iterator it;
+    for (it=fColMap.begin(); it != fColMap.end(); it++)
+        Message(it->first);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Add a given column name  to the list of columns to dump
+//! @param evt
+//!        the event transporting the column name
+//
+int FitsLoader::AddDumpColumnsPlease(const Event& evt)
+{
+    string evtText(evt.GetText());
+    //TODO check that this column indeed exist in the file
+    if (fColMap.find(evtText) != fColMap.end())
+        fDumpList.push_back(evtText);
+    else
+        Error("Could not find column " + evtText + " int table");
+    Message("New dump list:");
+    for (vector<string>::iterator it=fDumpList.begin(); it != fDumpList.end(); it++)
+        Message(*it);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Clear the list of columns to dump
+//
+int FitsLoader::ClearDumpListPlease(const Event&)
+{
+    fDumpList.clear();
+    Message("Dump list is now empty");
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Perform the actual dump, based on the current parameters
+//
+int FitsLoader::DoDumpPlease(const Event&)
+{
+    fTable->makeThisCurrent();
+    vector<int> offsets = CalculateBufferSize();
+    int size = offsets[offsets.size()-1];
+    offsets.pop_back();
+    unsigned char* fitsBuffer = new unsigned char[size];
+
+    ofstream targetFile(fFileOut);
+    int status = 0;
+
+    for (int i=1;i<=fTable->rows(); i++)
+    {
+        fits_read_tblbytes(fFile->fitsPointer(), i, 1, size, fitsBuffer, &status);
+        if (status)
+        {
+            ostringstream str;
+            str << "An error occurred while reading fits row #" << i << " error code: " << status;
+            Error(str);
+            str.str("");
+            for (unsigned int j=0;j<offsets.size(); j++)
+                str << offsets[j] << " ";
+            Error(str);
+        }
+        writeValuesFromFits(offsets, targetFile, fitsBuffer);
+    }
+    delete[] fitsBuffer;
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Set the name of the intput Fits file
+//! @param evt
+//!        the event transporting the file name
+//
+int FitsLoader::ConfigFileNamePlease(const Event& evt)
+{
+    fFileName = string(evt.GetText());
+    Message("New Fits file: " + fFileName);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Set the name of the input table
+//! @param evt
+//!        the event transporting the table name
+//
+int FitsLoader::ConfigTableNamePlease(const Event& evt)
+{
+    fTableName = string(evt.GetText());
+    Message("New Fits table: " + fTableName);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Retrieves the configuration parameters
+//! @param conf
+//!             the configuration object
+//
+void FitsLoader::SetupConfig(Configuration& conf)
+{
+    if (conf.Has("outfile"))
+    {
+        fFileOut = conf.Get<string>("outfile");
+        Message("Output file is: " + fFileOut);
+    }
+    if (conf.Has("fitsfile"))
+    {
+        fFileName = conf.Get<string>("fitsfile");
+        Message("Input fits is: " + fFileName);
+    }
+    if (conf.Has("tablename"))
+    {
+        fTableName = conf.Get<string>("tablename");
+        Message("Input Table is: " + fTableName);
+    }
+    if (conf.Has("dump"))
+    {
+        fDumpList = conf.Get<vector<string>>("dump");
+        Message("Dump list is:");
+        for (vector<string>::iterator it=fDumpList.begin(); it != fDumpList.end(); it++)
+            Message(*it);
+    }
+    if (conf.Has("precision"))
+    {
+        fStreamPrecision = conf.Get<int>("precision");
+
+        ostringstream str;
+        str << "OFStream precision is: " << fStreamPrecision;
+        Message(str);
+    }
+}
+void RunThread(FitsLoader* loader)
+{
+    loader->Run(true);
+    Readline::Stop();
+}
+template<class T>
+int RunShell(Configuration& conf)
+{
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog& wout = shell.GetStreamOut();
+
+    FitsLoader loader(wout);
+    loader.SetupConfig(conf);
+    shell.SetReceiver(loader);
+
+    boost::thread t(boost::bind(RunThread, &loader));
+
+    shell.Run();
+
+    loader.Stop();
+
+    t.join();
+
+    return 0;
+}
+void PrintUsage()
+{
+    cout << "This is a usage. to be completed" << endl;
+}
+void PrintHelp()
+{
+    cout << "This is the help. I know, not so helpfull at the moment..." << endl;
+}
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configp("Programm options");
+    configp.add_options()
+            ("console,c", var<int>(), "Use console (0=shell, 1=simple buffered, X=simple unbuffered)");
+
+    po::options_description configs("Fits Loader options");
+    configs.add_options()
+            ("outfile,o", var<string>(), "Output file")
+            ("fitsfile,f", var<string>(), "Input Fits file")
+            ("tablename,t", var<string>(), "Input Table")
+            ("dump,d", vars<string>(), "List of columns to dump")
+            ("precision,p", var<int>(), "Precision of ofstream")
+            ;
+//    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(configp);
+    conf.AddOptions(configs);
+}
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+//    if (!conf.Has("console"))
+//        return Run(conf);
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/fitsselect.cc
===================================================================
--- branches/FACT++_part_filenames/src/fitsselect.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fitsselect.cc	(revision 18732)
@@ -0,0 +1,137 @@
+#include "Configuration.h"
+
+#include "externals/factfits.h"
+#include "externals/factofits.h"
+
+using namespace std;
+
+void PrintUsage()
+{
+    cout <<
+        "fitsselect is....\n"
+        "\n"
+        "Usage: fitsselect rawfile eventlist outfile\n"
+        "\n"
+        ;
+    cout << endl;
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitsdump options");
+    configs.add_options()
+        ("infile",    var<string>()->required(), "")
+        ("outfile",   var<string>()->required(), "")
+        ("eventlist", var<string>()->required(), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("infile",    1); // The first positional options
+    p.add("eventlist", 1); // The second positional options
+    p.add("outfile",  -1); // All others
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))//, PrintHelp))
+        return -1;
+
+    const string infile = conf.Get<string>("infile");
+
+    const string outfile   = conf.Get<string>("outfile");
+    const string eventlist = conf.Get<string>("eventlist");
+
+    set<uint32_t> list;
+    ifstream fin(eventlist.c_str());
+    while (1)
+    {
+        uint32_t evt;
+        fin >> evt;
+        if (!fin)
+            break;
+
+        list.insert(evt);
+    }
+
+    factfits  inf(infile.c_str(), "Events", false);
+    factofits outf(outfile.c_str());
+
+    outf.SetDrsCalibration(inf.GetOffsetCalibration());
+
+    uint32_t rowWidth = inf.HasKey("ZNAXIS1") ? inf.GetUInt("ZNAXIS1") : inf.GetUInt("ZNAXIS2");
+
+    vector<char> buffer(rowWidth);
+
+    outf.CopyKeys(inf);
+
+    vector<pair<void*, char*>> pointers;
+
+    unsigned int count = 0;
+
+    uint32_t *evtNum = 0;
+
+    const fits::Table::Columns& columns = inf.GetColumns();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!=columns.end(); it++)
+    {
+        const fits::Table::Column &col = it->second;
+
+        if (it->first=="Data" || it->first=="TimeMarker")
+        {
+            vector<uint16_t> processing(2);
+            processing[0] = FITS::kFactSmoothing;
+            processing[1] = FITS::kFactHuffman16;
+
+            const FITS::Compression comp(processing, FITS::kOrderByRow);
+
+            outf.AddColumn(comp, col.num, col.type, it->first, col.unit, "");
+        }
+        else
+            outf.AddColumn(col.num, col.type, it->first, col.unit, "");
+
+        void *ptr = inf.SetPtrAddress(it->first);
+        pointers.emplace_back(ptr, buffer.data()+count);
+        count += col.num*col.size;
+
+        if (it->first=="EventNum")
+            evtNum = reinterpret_cast<uint32_t*>(ptr);
+    }
+
+    if (evtNum==0)
+        throw runtime_error("Colum EventNum not found.");
+
+    if (count!=rowWidth)
+        throw runtime_error("Size mismatch.");
+
+    inf.PrintColumns();
+
+    outf.WriteTableHeader(inf.GetStr("EXTNAME").c_str());
+
+    while (inf.GetNextRow())
+    {
+        if (list.find(*evtNum)==list.end())
+            continue;
+
+        int i=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++, i++)
+            memcpy(pointers[i].second, pointers[i].first, it->second.num*it->second.size);
+
+        outf.WriteRow(buffer.data(), rowWidth);
+        if (!outf)
+            throw runtime_error("Write stream failure.");
+    }
+
+    if (!inf.good())
+        throw runtime_error("Read stream failure.");
+
+    if (!outf.close())
+        throw runtime_error("Write stream failure.");
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/fsc.cc
===================================================================
--- branches/FACT++_part_filenames/src/fsc.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fsc.cc	(revision 18732)
@@ -0,0 +1,303 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+
+#include "HeadersFTM.h"
+
+using namespace std;
+using namespace FTM;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+// ------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+private:
+
+    /*
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }*/
+
+    void AsyncWrite(const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::seconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    ba::deadline_timer fTriggerSendData;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        fTriggerSendData(ioservice)
+    {
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    stringstream fBuffer;
+
+    void SendData()
+    {
+        fBuffer.str("");
+        fBuffer <<
+            "status: 00000538 \n"
+            "time_s: 764.755 \n"
+            "VOLTAGES \n"
+            " \n"
+            "enable:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111  00001111 \n"
+            "  done:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111  00001111 \n"
+            "values:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 \n"
+            "RESISTANCES \n"
+            " \n"
+            "enable:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 \n"
+            "  done:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 \n"
+            "values: \n"
+            "1000.16 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "1197.07 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "558.59 677.92 817.26 989.39 1200.35 1503.06 1799.90 2204.18 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "end.\n";
+
+        AsyncWrite(ba::buffer(ba::const_buffer(fBuffer.str().c_str(), fBuffer.str().length())));
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        SendData();
+
+        AsyncWait(fTriggerSendData, 1, &tcp_connection::TriggerSendData);
+    }
+
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        AsyncWait(fTriggerSendData, 1, &tcp_connection::TriggerSendData);
+    }
+};
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+int main(int argc, const char **argv)
+{
+    //try
+    {
+        ba::io_service io_service;
+
+        int Port = argc==2 ? lexical_cast<int>(argv[1]) : 5000;
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/FACT++_part_filenames/src/fscctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/fscctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/fscctrl.cc	(revision 18732)
@@ -0,0 +1,991 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+#include "externals/Interpolator2D.h"
+
+#include "tools.h"
+
+#include "HeadersFSC.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace FSC;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFSC : public Connection
+{
+    FSC::BinaryOutput_t fMsg;       // A single message
+
+    bool fIsVerbose;
+    bool fIsAutoReconnect;
+
+    size_t fNumConsecutiveErrors;   // Number of consecutive messages with errors
+    size_t fNumConsecutiveMessages; // Number of consecutive message which are ok
+
+    boost::asio::deadline_timer fReconnectTimeout;
+
+protected:
+    vector<Interpolator2D::vec> fPositionsSensors;
+    vector<Interpolator2D::vec> fPositionsBias;
+
+    virtual void UpdateTemp(float, const vector<float> &)
+    {
+    }
+
+    virtual void UpdateHum(float, const vector<float>&) 
+    {
+    }
+
+    virtual void UpdateVolt(float, const vector<float>&) 
+    {
+    }
+
+    virtual void UpdateCur(float, const vector<float>&) 
+    {
+    }
+
+private:
+    //
+    // From: http://de.wikipedia.org/wiki/Pt100
+    //
+    double GetTempPT1000(double R) const 
+    {
+        // This is precise within the range 5degC and 25degC
+        // by 3e-3 degC. At 0degC and 30degC it overestimates the
+        // temperature by 0.025 degC. At -10degC it is ~0.9degC
+        // and at 40degC ~0.05degC.
+        const double x = R/1000;
+        return -193.804 + 96.0651*x + 134.673*x*x - 36.9091*x*x*x;
+
+        //for a reasonable range:
+        // R=970 -> -7.6 degC
+        // R=1300 -> 77.6 degC
+
+        //const double R0 = 1000; // 1kOhm
+        //const double a = 3.893e-3;
+        //return (R/R0 - 1)/a;
+    }
+
+    bool CheckChecksum()
+    {
+        const uint16_t volt_checksum = Tools::Fletcher16(fMsg.adc_values,    kNumVoltageChannels);
+        const uint16_t resi_checksum = Tools::Fletcher16(fMsg.ad7719_values, kNumResistanceChannels);
+
+        const bool volt_ok = volt_checksum == fMsg.adc_values_checksum;
+        const bool resi_ok = resi_checksum == fMsg.ad7719_values_checksum;
+
+        if (volt_ok && resi_ok)
+            return true;
+
+        fNumConsecutiveErrors++;
+
+        ostringstream out;
+        out << "Checksum error (V:";
+        out << hex << setfill('0');
+
+        if (volt_ok)
+            out << "----|----";
+        else
+        {
+            out << setw(4) << volt_checksum;
+            out << "|";
+            out << setw(4) << fMsg.adc_values_checksum;
+        }
+
+        out << ", R:";
+
+        if (resi_ok)
+            out << "----|----";
+        else
+        {
+            out << setw(4) << resi_checksum;
+            out << "|";
+            out << setw(4) << fMsg.ad7719_values_checksum;
+        }
+
+        out << ",  " << dec;
+        out << "Nok=" << fNumConsecutiveMessages << ", ";
+        out << "Nerr=" << fNumConsecutiveErrors << ")";
+
+        Warn(out);
+
+        fNumConsecutiveMessages = 0;
+
+        return false;
+    }
+
+    bool ProcessMessage()
+    {
+        if (fIsVerbose)
+           Out() << "Received one_message of FSC::BinaryOutput_t ... will now process it" << endl;
+
+        if (!CheckChecksum())
+            return false;
+
+        // That looks a bit odd because it copies the values twice for no reason.
+        // This is historical and keeps the following code consistent with the
+        // previous code which was reading ascii data from the fsc
+        vector<float> volt(kNumVoltageChannels);
+        vector<float> resist(kNumResistanceChannels);
+
+        const float time = fMsg.time_sec + fMsg.time_ms/1000.;
+
+        // We want to convert the pure ADC values from the FSC board to mV and kOhm respectively
+        // So we do:
+        for (unsigned int i=0; i<volt.size(); i++)
+            volt[i] = fMsg.adc_values[i]*0.1;
+
+        for (unsigned int i=0; i<resist.size(); i++)
+            resist[i] = fMsg.ad7719_values[i] * (6.25 * 1024) / (1 << 25);
+
+        int mapv[] =
+        {
+            0, 16, 24,  8,
+            1, 17, 25,  9,
+            2, 18, 26, 10,
+            //
+            3, 19, 27, 11,
+            4, 20, 28, 12,
+            5, 21, 29, 13,
+            //
+            32, 36, 33, 34, 37, 38,
+            //
+            -1
+        };
+
+        int mapc[] =
+        {
+            40, 56, 64, 48,
+            41, 57, 65, 49,
+            42, 58, 66, 50,
+            //
+            43, 59, 67, 51,
+            44, 60, 68, 52,
+            45, 61, 69, 53,
+            //
+            72, 76, 73, 74, 77, 78,
+            //
+            -1
+        };
+
+
+        int maprh[] =
+        {
+            80, 81, 82, 83, -1
+        };
+
+        int offrh[] =
+        {
+            821, 822, 816, 822,
+        };
+
+        int mapt[] =
+        {
+            // sensor compartment temperatures
+            0,  1,  2,  3,  4,  5,  6, 56, 57, 58, 59, 60,
+            61, 62, 32, 33, 34, 35, 36, 63, 37, 38, 39, 24,
+            25, 26, 27, 28, 29, 30, 31,
+            // crate temperatures (0-3, back/front)
+            12, 13, 52, 53, 44, 46, 20, 21,
+            //crate power supply temperatures (0-3)
+            8, 9, 48, 49, 40, 41, 16, 17,
+            // aux power supplies (FTM-side top/bot, FSC-side top/bot)
+            45, 50, 19, 42,
+            // backpanel (FTM-side top/bot, FSC-side top/bot)
+            11, 51, 18, 43,
+            // switch boxes (top front/back, bottom front/back)
+            15, 14, 47, 10,
+            //
+            -1
+        };
+
+        vector<float> voltages;
+        vector<float> currents;
+        vector<float> humidities;
+        vector<float> temperatures;
+
+        for (int *pv=mapv; *pv>=0; pv++)
+            voltages.push_back(volt[*pv]*0.001);
+
+        for (int *pc=mapc; *pc>=0; pc++)
+            currents.push_back(volt[*pc]*0.005);
+
+        for (int idx=0; idx<4; idx++)
+        {
+            voltages[idx +8] *= -1;
+            voltages[idx+20] *= -1;
+            currents[idx +8] *= -1;
+            currents[idx+20] *= -1;
+        }
+        voltages[12] *=  2;
+        voltages[13] *=  2;
+        voltages[14] *=  2;
+        voltages[15] *=  2;
+
+        voltages[24] *=  2;
+        voltages[25] *=  2;
+
+        voltages[27] *= -1;
+        voltages[29] *= -1;
+
+        currents[27] *= -1;
+        currents[29] *= -1;
+
+        int idx=0;
+        for (int *ph=maprh; *ph>=0; ph++, idx++)
+            humidities.push_back((volt[*ph]-offrh[idx])*0.0313);
+
+        //1019=4.8
+        //1005=1.3
+        //970=-7.6
+        //1300=76
+        for (int *pt=mapt; *pt>=0; pt++)
+            //temperatures.push_back(resist[*pt]>800&&resist[*pt]<2000 ? GetTempPT1000(resist[*pt]) : 0);
+            temperatures.push_back(resist[*pt]>970&&resist[*pt]<1300 ? GetTempPT1000(resist[*pt]) : 0);
+            //temperatures.push_back(resist[*pt]>1019&&resist[*pt]<1300 ? GetTempPT1000(resist[*pt]) : 0);
+
+        // 0 = 3-(3+0)%4
+        // 3 = 3-(3+1)%4
+        // 2 = 3-(3+2)%4
+        // 1 = 3-(3+3)%4
+
+        /*
+         index	unit	offset	scale	crate	for board:
+         0	mV	0	1	0	FAD  3.3V
+         24	mV	0	1	1	FAD  3.3V
+         16	mV	0	1	2	FAD  3.3V
+         8	mV	0	1	3	FAD  3.3V
+
+         1	mV	0	1	0	FAD  3.3V
+         25	mV	0	1	1	FAD  3.3V
+         17	mV	0	1	2	FAD  3.3V
+         9	mV	0	1	3	FAD  3.3V
+
+         2	mV	0	-1	0	FAD  -2.0V
+         26	mV	0	-1	1	FAD  -2.0V
+         18	mV	0	-1	2	FAD  -2.0V
+         10	mV	0	-1	3	FAD  -2.0V
+
+         --
+
+         3	mV	0	1	0	FPA  5.0V
+         27	mV	0	1	1	FPA  5.0V
+         19	mV	0	1	2	FPA  5.0V
+         11	mV	0	1	3	FPA  5.0V
+
+         4	mV	0	1	0	FPA  3.3V
+         28	mV	0	1	1	FPA  3.3V
+         20	mV	0	1	2	FPA  3.3V
+         12	mV	0	1	3	FPA  3.3V
+
+         5	mV	0	-1	0	FPA  -3.3V
+         29	mV	0	-1	1	FPA  -3.3V
+         21	mV	0	-1	2	FPA  -3.3V
+         13	mV	0	-1	3	FPA  -3.3V
+
+         --
+
+         32	mV	0	1	bottom	ETH   5V
+         36	mV	0	1	top	ETH   5V
+
+         33	mV	0	1	bottom	FTM   3.3V
+         34	mV	0	-1	bottom	FTM  -3.3V
+
+         37	mV	0	1	top	FFC   3.3V
+         38	mV	0	-1	top	FLP  -3.3V
+
+         -----
+
+         40	mA	0	5	0	FAD
+         64	mA	0	5	1	FAD
+         56	mA	0	5	2	FAD
+         48	mA	0	5	3	FAD
+
+         41	mA	0	5	0	FAD
+         65	mA	0	5	1	FAD
+         57	mA	0	5	2	FAD
+         49	mA	0	5	3	FAD
+
+         42	mA	0	-5	0	FAD
+         66	mA	0	-5	1	FAD
+         58	mA	0	-5	2	FAD
+         50	mA	0	-5	3	FAD
+
+         --
+
+         43	mA	0	5	0	FPA
+         67	mA	0	5	1	FPA
+         59	mA	0	5	2	FPA
+         51	mA	0	5	3	FPA
+
+         44	mA	0	5	0	FPA
+         68	mA	0	5	1	FPA
+         60	mA	0	5	2	FPA
+         52	mA	0	5	3	FPA
+
+         45	mA	0	-5	0	FPA
+         69	mA	0	-5	1	FPA
+         61	mA	0	-5	2	FPA
+         53	mA	0	-5	3	FPA
+
+         ---
+
+         72	mA	0	5	bottom	ETH
+         76	mA	0	5	top	ETH
+
+         73	mA	0	5	bottom	FTM
+         74	mA	0	-5	bottom	FTM
+
+         77	mA	0	5	top	FFC
+         78	mA	0	-5	top	FLP
+
+         ----
+
+         80	% RH	-821	0.0313		FSP000
+         81	% RH	-822	0.0313		FSP221
+         82	% RH	-816	0.0313		Sector0
+         83	% RH	-822	0.0313		Sector2
+         */
+
+        // TEMPERATURES
+        // 31 x Sensor plate
+        //  8 x Crate
+        // 12 x PS
+        //  4 x Backpanel
+        //  4 x Switchbox
+
+
+
+        /*
+         0	ohms	FSP	000
+         1	ohms	FSP	010
+         2	ohms	FSP	023
+         3	ohms	FSP	043
+         4	ohms	FSP	072
+         5	ohms	FSP	080
+         6	ohms	FSP	092
+         56	ohms	FSP	103
+         57	ohms	FSP	111
+         58	ohms	FSP	121
+         59	ohms	FSP	152
+         60	ohms	FSP	163
+         61	ohms	FSP	171
+         62	ohms	FSP	192
+         32	ohms	FSP	200
+         33	ohms	FSP	210
+         34	ohms	FSP	223
+         35	ohms	FSP	233
+         36	ohms	FSP	243
+         63	ohms	FSP	252
+         37	ohms	FSP	280
+         38	ohms	FSP	283
+         39	ohms	FSP	293
+         24	ohms	FSP	311
+         25	ohms	FSP	321
+         26	ohms	FSP	343
+         27	ohms	FSP	352
+         28	ohms	FSP	363
+         29	ohms	FSP	371
+         30	ohms	FSP	381
+         31	ohms	FSP	392
+         8	ohms	Crate0	?
+         9	ohms	Crate0	?
+         48	ohms	Crate1	?
+         49	ohms	Crate1	?
+         40	ohms	Crate2	?
+         41	ohms	Crate2	?
+         16	ohms	Crate3	?
+         17	ohms	Crate3	?
+         10	ohms	PS	Crate 0
+         11	ohms	PS	Crate 0
+         50	ohms	PS	Crate 1
+         51	ohms	PS	Crate 1
+         42	ohms	PS	Crate 2
+         43	ohms	PS	Crate 2
+         18	ohms	PS	Crate 3
+         19	ohms	PS	Crate 3
+         12	ohms	PS	Aux0
+         52	ohms	PS	Aux0
+         20	ohms	PS	Aux1
+         44	ohms	PS	Aux1
+         13	ohms	Backpanel	?
+         21	ohms	Backpanel	?
+         45	ohms	Backpanel	?
+         53	ohms	Backpanel	?
+         14	ohms	Switchbox0	?
+         15	ohms	Switchbox0	?
+         46	ohms	Switchbox1	?
+         47	ohms	Switchbox1	?
+         7	ohms	nc	nc
+         22	ohms	nc	nc
+         23	ohms	nc	nc
+         54	ohms	nc	nc
+         55	ohms	nc	nc
+         */
+
+        if (fIsVerbose)
+        {
+            for (size_t i=0; i<resist.size(); i++)
+                //if (resist[i]>800 && resist[i]<2000)
+                if (resist[i]>970 && resist[i]<1300)
+                //if (resist[i]>1019 && resist[i]<1300)
+                    Out() << setw(2) << i << " - " << setw(4) << (int)resist[i] << ": " << setprecision(1) << fixed << GetTempPT1000(resist[i]) << endl;
+                else
+                    Out() << setw(2) << i << " - " << setw(4) << (int)resist[i] << ": " << "----" << endl;
+        }
+
+        UpdateTemp(time, temperatures);
+        UpdateVolt(time, voltages);
+        UpdateCur( time, currents);
+        UpdateHum( time, humidities);
+
+        fNumConsecutiveErrors = 0;
+        fNumConsecutiveMessages++;
+
+        return true;
+    }
+
+    void StartRead()
+    {
+        ba::async_read(*this, ba::buffer(&fMsg, sizeof(FSC::BinaryOutput_t)),
+                       boost::bind(&ConnectionFSC::HandleRead, this,
+                                   dummy::error, dummy::bytes_transferred));
+
+        AsyncWait(fInTimeout, 35000, &Connection::HandleReadTimeout); // 30s
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                return;
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        if (!ProcessMessage())
+        {
+            fIsAutoReconnect = true;
+            fReconnectTimeout.expires_from_now(boost::posix_time::seconds(10));
+            fReconnectTimeout.async_wait(boost::bind(&ConnectionFSC::HandleReconnectTimeout,
+                                                     this, dummy::error));
+            PostClose(true);
+            return;
+        }
+
+        StartRead();
+    }
+
+    void ConnectionEstablished()
+    {
+        fNumConsecutiveErrors   = 0;
+        fNumConsecutiveMessages = 0;
+        fIsAutoReconnect = false;
+
+        StartRead();
+    }
+
+    void HandleReconnectTimeout(const bs::error_code &)
+    {
+        fIsAutoReconnect = false;
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+
+        PostClose();
+    }
+
+public:
+    ConnectionFSC(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(false), fIsAutoReconnect(false), fReconnectTimeout(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetPositionsSensors(const vector<Interpolator2D::vec> &vec)
+    {
+        fPositionsSensors = vec;
+    }
+
+    void SetPositionsBias(const vector<Interpolator2D::vec> &vec)
+    {
+        fPositionsBias = vec;
+    }
+
+    bool IsOpen() const
+    {
+        return IsConnected() || fIsAutoReconnect;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimFSC : public ConnectionFSC
+{
+private:
+
+    vector<double> fLastRms;
+
+    DimDescribedService fDimTemp;
+    DimDescribedService fDimTemp2;
+    DimDescribedService fDimHum;
+    DimDescribedService fDimVolt;
+    DimDescribedService fDimCurrent;
+
+    void Update(DimDescribedService &svc, vector<float> data, float time) const
+    {
+        data.insert(data.begin(), time);
+        svc.Update(data);
+    }
+
+    void UpdateTemp(float time, const vector<float> &temp)
+    {
+        Update(fDimTemp, temp, time);
+
+        vector<double> T;
+        vector<Interpolator2D::vec> xy;
+
+        T.reserve(31);
+        xy.reserve(31);
+
+        double avg = 0;
+        double rms = 0;
+
+        // Create a list of all valid sensors
+        for (int i=0; i<31; i++)
+            if (temp[i]!=0)
+            {
+                T.emplace_back(temp[i]);
+                xy.emplace_back(fPositionsSensors[i]);
+
+                avg += temp[i];
+                rms += temp[i]*temp[i];
+            }
+
+        if (T.size()==0)
+        {
+            Warn("No valid sensor temperatures.");
+            return;
+        }
+
+        avg /= T.size();
+        rms /= T.size();
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        // Clean broken reports
+        const double cut_val = 0.015;
+        const bool reject = rms>4 || (fabs(fLastRms[0]-fLastRms[1])<=cut_val && fabs(rms-fLastRms[0])>cut_val);
+
+        fLastRms[1] = fLastRms[0];
+        fLastRms[0] = rms;
+
+        if (reject)
+        {
+            Warn("Suspicious temperature values rejecte for BIAS_TEMP.");
+            return;
+        }
+
+        // Create interpolator for the corresponding sensor positions
+        Interpolator2D inter(xy);
+
+        // Calculate weights for the output positions
+        if (!inter.SetOutputGrid(fPositionsBias))
+        {
+            Warn("Temperature values rejecte for BIAS_TEMP (calculation of weights failed).");
+            return;
+        }
+
+        // Interpolate the data
+        T = inter.Interpolate(T);
+
+        avg = 0;
+        rms = 0;
+        for (int i=0; i<320; i++)
+        {
+            avg += T[i];
+            rms += T[i]*T[i];
+        }
+
+        avg /= 320;
+        rms /= 320;
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        vector<float> out;
+        out.reserve(322);
+        out.assign(T.cbegin(), T.cend());
+        out.emplace_back(avg);
+        out.emplace_back(rms);
+
+        // Update the Dim service with the interpolated positions
+        Update(fDimTemp2, out, time);
+    }
+
+    void UpdateHum(float time, const vector<float> &hum)
+    {
+        Update(fDimHum, hum, time);
+    }
+
+    void UpdateVolt(float time, const vector<float> &volt)
+    {
+        Update(fDimVolt, volt, time);
+    }
+
+    void UpdateCur(float time, const vector<float> &curr)
+    {
+        Update(fDimCurrent, curr, time);
+    }
+
+public:
+    ConnectionDimFSC(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionFSC(ioservice, imp), fLastRms(2),
+        fDimTemp   ("FSC_CONTROL/TEMPERATURE", "F:1;F:31;F:8;F:8;F:4;F:4;F:4",
+                    "|t[s]:FSC uptime"
+                    "|T_sens[deg C]:Sensor compartment temperatures"
+                    "|T_crate[deg C]:Temperatures crate 0 (back/front), 1 (b/f), 2 (b/f), 3 (b/f)"
+                    "|T_ps[deg C]:Temp power supplies crate 0 (back/front), 1, 2, 3"
+                    "|T_aux[deg C]:Auxiliary power supply temperatures FTM (top/bottom), FSC (t/b)"
+                    "|T_back[deg C]:FTM backpanel temperatures FTM (top/bottom), FSC (top/bottom)"
+                    "|T_eth[deg C]:Ethernet switches temperatures top (front/back), bottom (f/b)"),
+        fDimTemp2  ("FSC_CONTROL/BIAS_TEMP", "F:1;F:320;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|T[deg C]:Interpolated temperatures at bias patch positions"
+                    "|T_avg[deg C]:Average temperature calculated from all patches"
+                    "|T_rms[deg C]:Temperature RMS calculated from all patches"),
+        fDimHum    ("FSC_CONTROL/HUMIDITY", "F:1;F:4",
+                    "|t[s]:FSC uptime"
+                    "|H[%]:Humidity sensors readout"),
+        fDimVolt   ("FSC_CONTROL/VOLTAGE",
+                    "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|FAD_Ud[V]:FAD digital (crate 0-3)"
+                    "|FAD_Up[V]:FAD positive (crate 0-3)"
+                    "|FAD_Un[V]:FAD negative (crate 0-3)"
+                    "|FPA_Ud[V]:FPA digital (crate 0-3)"
+                    "|FPA_Up[V]:FPA positive (crate 0-3)"
+                    "|FPA_Un[V]:FPA negative (crate 0-3)"
+                    "|ETH_U[V]:Ethernet switch (pos/neg)"
+                    "|FTM_U[V]:FTM - trigger master (pos/neg)"
+                    "|FFC_U[V]:FFC"
+                    "|FLP_U[V]:FLP - light pulser"),
+        fDimCurrent("FSC_CONTROL/CURRENT", "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|FAD_Id[A]:FAD digital (crate 0-3)"
+                    "|FAD_Ip[A]:FAD positive (crate 0-3)"
+                    "|FAD_In[A]:FAD negative (crate 0-3)"
+                    "|FPA_Id[A]:FPA digital (crate 0-3)"
+                    "|FPA_Ip[A]:FPA positive (crate 0-3)"
+                    "|FPA_In[A]:FPA negative (crate 0-3)"
+                    "|ETH_I[A]:Ethernet switch (pos/neg)"
+                    "|FTM_I[A]:FTM - trigger master (pos/neg)"
+                    "|FFC_I[A]:FFC"
+                    "|FLP_I[A]:FLP - light pulser")
+    {
+        fLastRms[0] = 1.5;
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineFSC : public StateMachineAsio<T>
+{
+private:
+    S fFSC;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fFSC.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fFSC.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fFSC.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fFSC.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fFSC.IsOpen() ? State::kConnected : State::kDisconnected;
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fFSC.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineFSC(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FSC_CONTROL"), fFSC(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "FSC board not connected via ethernet.");
+
+        T::AddStateName(State::kConnected, "Connected",
+                     "Ethernet connection to FSC established.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFSC::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineFSC::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineFSC::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FSC, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fFSC.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fFSC.SetEndpoint(url);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fFSC.SetVerbose(!conf.Get<bool>("quiet"));
+
+        const string fname1 = conf.Get<string>("sensor-pos-file");
+        const auto v1 = Interpolator2D::ReadGrid(fname1);
+        if (v1.size() != 31)
+        {
+            T::Error("Reading sensor positions from "+fname1+"failed ("+to_string(v1.size())+")");
+            return 1;
+        }
+
+        const string fname2 = conf.Get<string>("patch-pos-file");
+        const auto v2 = Interpolator2D::ReadGrid(fname2);
+        if (v2.size() != 320)
+        {
+            T::Error("Reading bias patch positions from "+fname2+"failed ("+to_string(v2.size())+")");
+            return 1;
+        }
+
+        fFSC.SetPositionsSensors(v1);
+        fFSC.SetPositionsBias(v2);
+
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFSC<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FSC control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        var<string>("localhost:5000"),  "Network address of FSC")
+        ("sensor-pos-file", var<string>()->required(),  "File with the positions of the 31 temperature sensors")
+        ("patch-pos-file",  var<string>()->required(),  "File with the positions of the 320 bias patches")
+        ("quiet,q",       po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The fscctrl controls the FSC (FACT Slow Control) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fscctrl [-c type] [OPTIONS]\n"
+        "  or:  fscctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFSC<StateMachine, ConnectionFSC>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimFSC>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimFSC>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/ftm.cc
===================================================================
--- branches/FACT++_part_filenames/src/ftm.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ftm.cc	(revision 18732)
@@ -0,0 +1,713 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+#include "Converter.h"
+
+#include "Dim.h"
+#include "HeadersFTM.h"
+
+using namespace std;
+using namespace FTM;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+int Port = 0;
+
+// ------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+private:
+
+    double fStartTime;
+
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::milliseconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    ba::deadline_timer fTriggerDynData;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        fTriggerDynData(ioservice), fTriggerSendData(ioservice)
+    {
+        //deadline_.expires_at(boost::posix_time::pos_infin);
+
+        fHeader.fDelimiter=kDelimiterStart;
+        fHeader.fState=FTM::kFtmIdle|FTM::kFtmLocked;
+        fHeader.fBoardId=0xaffe;
+        fHeader.fFirmwareId=0x42;
+
+        fDelimiter = htons(kDelimiterEnd);
+
+        fStaticData.clear();
+
+        fStaticData.fMultiplicityPhysics = 1;
+        fStaticData.fMultiplicityCalib   = 40;
+        fStaticData.fWindowCalib         = 1;
+        fStaticData.fWindowPhysics       = 0;
+        fStaticData.fDelayTrigger        = 21;
+        fStaticData.fDelayTimeMarker     = 42;
+        fStaticData.fDeadTime            = 84;
+
+        fStaticData.fClockConditioner[0] = 100;
+        fStaticData.fClockConditioner[1] = 1;
+        fStaticData.fClockConditioner[2] = 8;
+        fStaticData.fClockConditioner[3] = 9;
+        fStaticData.fClockConditioner[4] = 11;
+        fStaticData.fClockConditioner[5] = 13;
+        fStaticData.fClockConditioner[6] = 14;
+        fStaticData.fClockConditioner[7] = 15;
+
+        fStaticData.fTriggerSequence = 1 | (2<<5) | (3<<10);
+
+        fStaticData.fGeneralSettings =
+            FTM::StaticData::kTrigger |
+            FTM::StaticData::kLPext   |
+            FTM::StaticData::kPedestal;
+
+        fStaticData.fActiveFTU[0] = 0x3ff;
+        fStaticData.fActiveFTU[3] = 0x3ff;
+
+        for (int i=0; i<40; i++)
+        {
+            for (int p=0; p<4; p++)
+                fStaticData[i].fEnable[p] = 0x1ff;
+
+            for (int p=0; p<5; p++)
+                fStaticData[i].fDAC[p]    = (p+1)*10;
+
+            fStaticData[i].fPrescaling    = 42;
+        }
+
+        for (unsigned long long i=0; i<40; i++)
+        {
+            fFtuList[i].fDNA      = (i<<48)|(i<<32)|(i<<16)|i;
+            fFtuList[i].fPingAddr = (1<<8) | i;
+        }
+
+        fFtuList[1].fPingAddr = (1<<9) | 1;
+        fFtuList[0].fPingAddr = 0;
+
+        fFtuList.fNumBoards = 19;
+        fFtuList.fNumBoardsCrate[0] = 9;
+        fFtuList.fNumBoardsCrate[1] = 0;
+        fFtuList.fNumBoardsCrate[2] = 0;
+        fFtuList.fNumBoardsCrate[3] = 10;
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    vector<uint16_t> fBufCommand;
+    vector<uint16_t> fBufHeader;
+    vector<uint16_t> fBufFtuList;
+    vector<uint16_t> fBufStaticData;
+    vector<uint16_t> fBufDynamicData;
+
+    vector<uint16_t> fCommand;
+    FTM::Header      fHeader;
+    FTM::FtuList     fFtuList;
+    FTM::StaticData  fStaticData;
+    FTM::DynamicData fDynamicData;
+
+    //vector<uint16_t> fStaticData;
+
+    uint16_t fDelimiter;
+    uint16_t fBufRegister;
+
+    uint16_t fCounter;
+    uint16_t fTimeStamp;
+
+    bool fReportsDisabled;
+
+    ba::deadline_timer fTriggerSendData;
+
+    void SendDynamicData()
+    {
+        if (fReportsDisabled)
+            return;
+
+        //if (fHeader.fState == FTM::kFtmRunning)
+        //    fDynamicData.fOnTimeCounter = lrint(Time().UnixTime()-fStartTime);
+
+        fDynamicData.fTempSensor[0] = (23. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[1] = (55. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[2] = (39. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[3] = (42. + (6.*rand()/RAND_MAX-3))*10;
+
+        for (int i=0; i<40; i++)
+            for (int p=0; p<4; p++)
+                fDynamicData[i].fRatePatch[p] = (1000 + (float(rand())/RAND_MAX-0.5)*25*p);
+
+        fHeader.fType=kDynamicData;     // FtuList
+        fHeader.fDataSize=sizeof(FTM::DynamicData)/2+1;
+        fHeader.fTriggerCounter = fCounter;
+        fHeader.fTimeStamp = fTimeStamp++*1000000;//lrint(Time().UnixTime());
+
+        fBufHeader      = fHeader.HtoN();
+        fBufDynamicData = fDynamicData.HtoN();
+
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],      fBufHeader.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufDynamicData[0], sizeof(FTM::DynamicData))));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+    }
+
+    void SendStaticData()
+    {
+        fHeader.fType=kStaticData;     // FtuList
+        fHeader.fDataSize=sizeof(FTM::StaticData)/2+1;
+        fHeader.fTriggerCounter = fCounter;
+        fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+        for (int i=0; i<4; i++)
+            fFtuList.fActiveFTU[i] = fStaticData.fActiveFTU[i];
+
+        fBufHeader     = fHeader.HtoN();
+        fBufStaticData = fStaticData.HtoN();
+
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],     fBufHeader.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufStaticData[0], fBufStaticData.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            return;
+        }
+
+        // No command received yet
+        if (fCommand.size()==0)
+        {
+            transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                      fBufCommand.begin(), ntohs);
+
+            if (fBufCommand[0]!='@')
+            {
+                cout << "Inavlid command: 0x" << hex << fBufCommand[0] << dec << endl;
+                cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+                cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+                return;
+            }
+
+            switch (fBufCommand[1])
+            {
+            case kCmdToggleLed:
+                cout << "-> TOGGLE_LED" << endl;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdPing:
+                cout << "-> PING" << endl;
+
+                fHeader.fType=kFtuList;     // FtuList
+                fHeader.fDataSize=sizeof(FTM::FtuList)/2+1;
+                fHeader.fTriggerCounter = fCounter;
+                fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+                fFtuList[1].fPingAddr = ((rand()&1)<<9) | 1;
+                fFtuList[0].fPingAddr = ((rand()&1)<<8);
+
+                fBufHeader  = fHeader.HtoN();
+                fBufFtuList = fFtuList.HtoN();
+
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],  fBufHeader.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufFtuList[0], fBufFtuList.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdRead: // kCmdRead
+                cout << "-> READ" << endl;
+                switch (fBufCommand[2])
+                {
+                case kCmdStaticData:
+                    cout << "-> STATIC" << endl;
+
+                    SendStaticData();
+
+                    fBufCommand.resize(5);
+                    AsyncRead(ba::buffer(fBufCommand));
+
+                    return;
+
+                case kCmdDynamicData:
+                    cout << "-> DYNAMIC" << endl;
+
+                    SendDynamicData();
+
+                    fBufCommand.resize(5);
+                    AsyncRead(ba::buffer(fBufCommand));
+
+                    return;
+
+                case kCmdRegister:
+                    fCommand = fBufCommand;
+                    cout << "-> REGISTER" << endl;
+
+                    fBufCommand.resize(1);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+                }
+                break;
+
+
+            case kCmdWrite:
+                switch (fBufCommand[2])
+                {
+                case kCmdRegister:
+                    fCommand = fBufCommand;
+                    cout << "-> REGISTER" << endl;
+
+                    fBufCommand.resize(2);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+
+                case kCmdStaticData:
+                    fCommand = fBufCommand;
+                    cout << "-> STATIC DATA" << endl;
+
+                    fBufCommand.resize(sizeof(StaticData)/2);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+                }
+                break;
+
+            case kCmdDisableReports:
+                cout << "-> DISABLE REPORTS " << !fBufCommand[2] << endl;
+                fReportsDisabled = !fBufCommand[2];
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdConfigFTU:
+                cout << "-> Configure FTU " << (fBufCommand[2]&0xff) << " " << (fBufCommand[2]>>8) << endl;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdStartRun:
+                fHeader.fState = FTM::kFtmRunning|FTM::kFtmLocked;
+
+                fStartTime = Time().UnixTime();
+
+                fCounter = 0;
+                fTimeStamp = 0;
+                fHeader.fTriggerCounter = fCounter;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+
+                AsyncWait(fTriggerSendData, 0, &tcp_connection::TriggerSendData);
+                return;
+
+            case kCmdStopRun:
+                fHeader.fState = FTM::kFtmIdle|FTM::kFtmLocked;
+
+                fTriggerSendData.cancel();
+
+                fCounter = 0;
+                fTimeStamp = 0;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+            }
+
+            cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+            cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+            return;
+        }
+
+        // Command data received
+
+        // Prepare reception of next command
+        switch (fCommand[1])
+        {
+        case kCmdRead: // kCmdRead
+            {
+                const uint16_t addr = ntohs(fBufCommand[0]);
+                const uint16_t val  = reinterpret_cast<uint16_t*>(&fStaticData)[addr];
+
+                cout << "-> GET REGISTER[" << addr << "]=" << val << endl;
+
+                fHeader.fType=kRegister;     // FtuList
+                fHeader.fDataSize=2;
+                fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+                fBufHeader = fHeader.HtoN();
+                fBufStaticData[addr] = htons(val);
+
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0], fBufHeader.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufStaticData[addr], 2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+                break;
+            }
+
+        case kCmdWrite:
+            switch (fCommand[2])
+            {
+            case kCmdRegister:
+                {
+                    const uint16_t addr = ntohs(fBufCommand[0]);
+                    const uint16_t val  = ntohs(fBufCommand[1]);
+
+                    cout << "-> SET REGISTER[" << addr << "]=" << val << endl;
+
+                    reinterpret_cast<uint16_t*>(&fStaticData)[addr] = val;
+                }
+                break;
+
+            case kCmdStaticData:
+                {
+                    cout << "-> SET STATIC DATA" << endl;
+                    fStaticData = fBufCommand;
+                }
+                break;
+            }
+            break;
+        }
+
+        fCommand.resize(0);
+
+        fBufCommand.resize(5);
+        AsyncRead(ba::buffer(fBufCommand));
+    }
+
+    void SendDynData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+
+        if (fTriggerDynData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        SendDynamicData();
+
+        AsyncWait(fTriggerDynData, 1000, &tcp_connection::SendDynData);
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+
+        if (fStaticData.IsEnabled(StaticData::kTrigger))
+            Dim::SendCommand("FAD/TRIGGER", fCounter++);
+
+        const uint16_t time = 100*float(rand())/RAND_MAX+50;
+
+        AsyncWait(fTriggerSendData, time, &tcp_connection::TriggerSendData);
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        // Ownership of buffer must be valid until Handler is called.
+
+        // Emit something to be written to the socket
+        fBufCommand.resize(5);
+        AsyncRead(ba::buffer(fBufCommand));
+
+        AsyncWait(fTriggerDynData, 1000, &tcp_connection::SendDynData);
+
+//        AsyncWrite(ba::buffer(ba::const_buffer(&fHeader, sizeof(FTM::Header))));
+//        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+    }
+};
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+#include "Configuration.h"
+
+void SetupConfiguration(::Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"), "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("port,p",    var<uint16_t>(5000), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("port", 1); // The first positional options
+    p.add("num",  1); // The second positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char **argv)
+{
+    ::Configuration conf(argv[0]);
+
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+    if (conf.HasVersion() || conf.HasPrint() || conf.HasHelp())
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    //try
+    {
+        ba::io_service io_service;
+
+        Port = conf.Get<uint16_t>("port");
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/FACT++_part_filenames/src/ftmctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/ftmctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ftmctrl.cc	(revision 18732)
@@ -0,0 +1,2881 @@
+#include <array>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+#include "HeadersFTM.h"
+
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFTM : public Connection
+{
+public:
+    enum States
+    {
+        // State Machine states
+        kDisconnected = StateMachineImp::kSM_UserMode,
+        kConnected,
+        kIdle,
+        kConfigured,  // Returned if idle and fBufStaticData==fStaticData
+        kTriggerOn,
+    };
+
+private:
+    vector<uint16_t> fBuffer;
+
+    bool fHasHeader;
+
+    bool fIsVerbose;
+    bool fIsDynamicOut;
+    bool fIsHexOutput;
+
+protected:
+    map<uint16_t, uint32_t> fCounter;
+
+    FTM::Header      fHeader;
+    FTM::FtuList     fFtuList;
+    FTM::StaticData  fStaticData;    // fStaticBufferTx
+    FTM::DynamicData fDynamicData;
+    FTM::Error       fError;
+
+    FTM::StaticData  fBufStaticData; // fStaticBufferRx
+
+    virtual void UpdateFirstHeader()
+    {
+        // FIXME: Message() ?
+        Out() << endl << kBold << "First header received:" << endl;
+        Out() << fHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fHeader, 16) << endl;
+    }
+
+    virtual void UpdateHeader()
+    {
+        // emit service with trigger counter from header
+        if (!fIsVerbose)
+            return;
+
+        if (fHeader.fType==FTM::kDynamicData && !fIsDynamicOut)
+            return;
+
+        Out() << endl << kBold << "Header received:" << endl;
+        Out() << fHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fHeader, 16) << endl;
+    }
+
+    virtual void UpdateFtuList()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kBold << "FtuList received:" << endl;
+        Out() << fFtuList;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fFtuList, 16) << endl;
+    }
+
+    virtual void UpdateStaticData()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kBold << "Static data received:" << endl;
+        Out() << fStaticData;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fStaticData, 16) << endl;
+    }
+
+    virtual void UpdateDynamicData()
+    {
+        if (!fIsDynamicOut)
+            return;
+
+        Out() << endl << kBold << "Dynamic data received:" << endl;
+        Out() << fDynamicData;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fDynamicData, 16) << endl;
+    }
+
+    virtual void UpdateError()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kRed << "Error received:" << endl;
+        Out() << fError;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fError, 16) << endl;
+    }
+
+    virtual void UpdateCounter()
+    {
+        if (!fIsVerbose)
+            return;
+
+        if (!fIsDynamicOut)
+            return;
+
+        Out() << "Received: ";
+        Out() << "H=" << fCounter[FTM::kHeader] << "  ";
+        Out() << "S=" << fCounter[FTM::kStaticData] << "  ";
+        Out() << "D=" << fCounter[FTM::kDynamicData] << "  ";
+        Out() << "F=" << fCounter[FTM::kFtuList] << "  ";
+        Out() << "E=" << fCounter[FTM::kErrorList] << "  ";
+        Out() << "R=" << fCounter[FTM::kRegister] << endl;
+    }
+
+    bool CheckConsistency(FTM::StaticData &data)
+    {
+        bool warn1 = false;
+        if (data.IsEnabled(FTM::StaticData::kPedestal) != (data.GetSequencePed()  >0) ||
+            data.IsEnabled(FTM::StaticData::kLPint)    != (data.GetSequenceLPint()>0) ||
+            data.IsEnabled(FTM::StaticData::kLPext)    != (data.GetSequenceLPext()>0))
+        {
+            warn1 = true;
+            data.Enable(FTM::StaticData::kPedestal, data.GetSequencePed()>0);
+            data.Enable(FTM::StaticData::kLPint,    data.GetSequenceLPint()>0);
+            data.Enable(FTM::StaticData::kLPext,    data.GetSequenceLPext()>0);
+        }
+
+        bool warn2 = false;
+        const uint16_t ref = data[0].fPrescaling;
+        for (int i=1; i<40; i++)
+        {
+            if (data[i].fPrescaling != ref)
+            {
+                warn2 = true;
+                data[i].fPrescaling = ref;
+            }
+        }
+
+        bool warn3 = false;
+        for (int i=0; i<4; i++)
+            if (data.fActiveFTU[i]!=0x3ff)
+            {
+                warn3 = true;
+                data.fActiveFTU[i]=0x3ff;
+            }
+
+
+
+        if (warn1)
+            Warn("GeneralSettings not consistent with trigger sequence.");
+        if (warn2)
+            Warn("Prescaling not consistent for all boards.");
+        if (warn3)
+            Warn("Not all FTUs are enabled - enable all FTUs.");
+
+        return !warn1 && !warn2 && !warn3;
+    }
+
+private:
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int /*type*/)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (FTM).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        // If we have not yet received a header we expect one now
+        // This could be moved to a HandleReceivedHeader function
+        if (!fHasHeader)
+        {
+            if (bytes_received!=sizeof(FTM::Header))
+            {
+                ostringstream str;
+                str << "Excepted " << sizeof(FTM::Header) << " bytes (FTM::Header) but received " << bytes_received << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fHeader = fBuffer;
+
+            // Check the data integrity
+            if (fHeader.fDelimiter!=FTM::kDelimiterStart)
+            {
+                ostringstream str;
+                str << "Invalid header received: start delimiter wrong, received ";
+                str << hex << fHeader.fDelimiter << ", expected " << FTM::kDelimiterStart << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fHasHeader = true;
+
+            // Convert FTM state into FtmCtrl state
+            if (++fCounter[FTM::kHeader]==1)
+                UpdateFirstHeader();
+
+            UpdateCounter();
+            UpdateHeader();
+
+            // Start reading of data
+            switch (fHeader.fType)
+            {
+            case FTM::kStaticData:
+            case FTM::kDynamicData:
+            case FTM::kFtuList:
+            case FTM::kRegister:
+            case FTM::kErrorList:
+                // This is not very efficient because the space is reallocated
+                // maybe we can check if the capacity of the std::vector
+                // is ever decreased. If not, everythign is fine.
+                fBuffer.resize(fHeader.fDataSize);
+                AsyncRead(ba::buffer(fBuffer));
+                AsyncWait(fInTimeout, 1000, &Connection::HandleReadTimeout);
+                return;
+
+            default:
+                ostringstream str;
+                str << "Unknonw type " << fHeader.fType << " in received header." << endl;
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            return;
+        }
+
+        // Check the data integrity (check end delimiter)
+        if (ntohs(fBuffer.back())!=FTM::kDelimiterEnd)
+        {
+            ostringstream str;
+            str << "Invalid data received: end delimiter wrong, received ";
+            str << hex << ntohs(fBuffer.back()) << ", expected " << FTM::kDelimiterEnd << ".";
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        // Remove end delimiter
+        fBuffer.pop_back();
+
+        try
+        {
+            // If we have already received a header this is the data now
+            // This could be moved to a HandleReceivedData function
+
+            fCounter[fHeader.fType]++;
+            UpdateCounter();
+
+            switch (fHeader.fType)
+            {
+            case FTM::kFtuList:
+                fFtuList = fBuffer;
+                UpdateFtuList();
+                break;
+
+            case FTM::kStaticData:
+                if (fCounter[FTM::kStaticData]==1)
+                {
+                    // This check is only done at startup
+                    FTM::StaticData data(fBuffer);
+                    if (!CheckConsistency(data))
+                    {
+                        CmdSendStatDat(data);
+                        CmdPing(); // FIXME: Only needed in case of warn3
+                        break;
+                    }
+                }
+
+                fStaticData = fBuffer;
+
+                // is this the first received static data block?
+                if (!fBufStaticData.valid())
+                    fBufStaticData = fStaticData;
+
+                UpdateStaticData();
+                break;
+
+            case FTM::kDynamicData:
+                fDynamicData = fBuffer;
+                UpdateDynamicData();
+                break;
+
+            case FTM::kRegister:
+                if (fIsVerbose)
+                {
+                    Out() << endl << kBold << "Register received: " << endl;
+                    Out() << "Addr:  " << ntohs(fBuffer[0]) << endl;
+                    Out() << "Value: " << ntohs(fBuffer[1]) << endl;
+                }
+                break;
+
+            case FTM::kErrorList:
+                fError = fBuffer;
+                UpdateError();
+                break;
+
+            default:
+                ostringstream str;
+                str << "Unknonw type " << fHeader.fType << " in header." << endl;
+                Error(str);
+                PostClose(false);
+                return;
+            }
+        }
+        catch (const logic_error &e)
+        {
+            ostringstream str;
+            str << "Exception converting buffer into data structure: " << e.what();
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        fInTimeout.cancel();
+
+        //fHeader.clear();
+        fHasHeader = false;
+        fBuffer.resize(sizeof(FTM::Header)/2);
+        AsyncRead(ba::buffer(fBuffer));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fCounter.clear();
+        fBufStaticData.clear();
+
+        fHeader.clear();
+        fHasHeader = false;
+        fBuffer.resize(sizeof(FTM::Header)/2);
+        AsyncRead(ba::buffer(fBuffer));
+
+//        if (!fDefaultSetup.empty())
+//            LoadStaticData(fDefaultSetup);
+
+        // Get a header and configdata!
+        CmdReqStatDat();
+
+        // get the DNA of the FTUs
+        CmdPing();
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout ("+to_simple_string(fInTimeout.expires_from_now())+") reading data from "+URL());
+
+        PostClose();
+    }
+
+    template<size_t N>
+    void PostCmd(array<uint16_t, N> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+
+        if (fIsVerbose)
+        {
+            ostringstream msg;
+            msg << "Sending command:" << hex;
+            msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+            msg << " 0x" << setw(4) << setfill('0') << u1;
+            msg << " 0x" << setw(4) << setfill('0') << u2;
+            msg << " 0x" << setw(4) << setfill('0') << u3;
+            msg << " 0x" << setw(4) << setfill('0') << u4;
+            msg << " (+" << dec << dat.size() << " words)";
+            Message(msg);
+        }
+
+        vector<uint16_t> out(cmd.size()+dat.size());
+
+        transform(cmd.begin(), cmd.end(), out.begin(), htons);
+        transform(dat.begin(), dat.end(), out.begin()+cmd.size(), htons);
+
+        PostMessage(out);
+    }
+
+    void PostCmd(vector<uint16_t> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+
+        if (fIsVerbose)
+        {
+            ostringstream msg;
+            msg << "Sending command:" << hex;
+            msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+            msg << " 0x" << setw(4) << setfill('0') << u1;
+            msg << " 0x" << setw(4) << setfill('0') << u2;
+            msg << " 0x" << setw(4) << setfill('0') << u3;
+            msg << " 0x" << setw(4) << setfill('0') << u4;
+            msg << " (+" << dec << dat.size() << " words)";
+            Message(msg);
+        }
+
+        vector<uint16_t> out(cmd.size()+dat.size());
+
+        transform(cmd.begin(), cmd.end(), out.begin(), htons);
+        copy(dat.begin(), dat.end(), out.begin()+cmd.size());
+
+        PostMessage(out);
+    }
+
+    void PostCmd(uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        PostCmd(array<uint16_t, 0>(), u1, u2, u3, u4);
+    }
+public:
+
+//    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionFTM(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fIsDynamicOut(true), fIsHexOutput(true)
+    {
+        SetLogStream(&imp);
+    }
+
+    void CmdToggleLed()
+    {
+        PostCmd(FTM::kCmdToggleLed);
+    }
+
+    void CmdPing()
+    {
+        PostCmd(FTM::kCmdPing);
+    }
+
+    void CmdReqDynDat()
+    {
+        PostCmd(FTM::kCmdRead, FTM::kCmdDynamicData);
+    }
+
+    void CmdReqStatDat()
+    {
+        PostCmd(FTM::kCmdRead, FTM::kCmdStaticData);
+    }
+
+    void CmdSendStatDat(const FTM::StaticData &data)
+    {
+        fBufStaticData = data;
+
+        PostCmd(data.HtoN(), FTM::kCmdWrite, FTM::kCmdStaticData);
+
+        // Request the changed configuration to ensure the
+        // change is distributed in the network
+        CmdReqStatDat();
+    }
+
+    void CmdStartRun(bool log=true)
+    {
+        PostCmd(FTM::kCmdStartRun, FTM::kStartRun);
+        CmdGetRegister(0);
+
+        if (log)
+            Info("Sending start trigger.");
+    }
+
+    void CmdStopRun()
+    {
+        PostCmd(FTM::kCmdStopRun);
+        CmdGetRegister(0);
+
+        Info("Sending stop trigger.");
+    }
+
+    void CmdTakeNevents(uint32_t n)
+    {
+        const array<uint16_t, 2> data = {{ uint16_t(n>>16), uint16_t(n&0xffff) }};
+        PostCmd(data, FTM::kCmdStartRun, FTM::kTakeNevents);
+
+        // Update state information by requesting a new header
+        CmdGetRegister(0);
+    }
+
+    bool CmdSetRegister(uint16_t addr, uint16_t val)
+    {
+        if (addr>FTM::StaticData::kMaxAddr)
+            return false;
+
+        const array<uint16_t, 2> data = {{ addr, val }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = val;
+
+        // Request the changed configuration to ensure the
+        // change is distributed in the network
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool CmdGetRegister(uint16_t addr)
+    {
+        if (addr>FTM::StaticData::kMaxAddr)
+            return false;
+
+        const array<uint16_t, 1> data = {{ addr }};
+        PostCmd(data, FTM::kCmdRead, FTM::kCmdRegister);
+
+        return true;
+    }
+
+    bool CmdResetCrate(uint16_t addr)
+    {
+        if (addr>3)
+            return false;
+
+        PostCmd(FTM::kCmdCrateReset, 1<<addr);
+        Info("Sending crate reset for crate "+to_string(addr));
+
+        return true;
+    }
+
+    bool CmdResetCamera()
+    {
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate0);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate1);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate2);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate3);
+
+        Info("Sending camera reset");
+
+        return true;
+    }
+
+    bool CmdDisableReports(bool b)
+    {
+        PostCmd(FTM::kCmdDisableReports, b ? uint16_t(0) : uint16_t(1));
+        return true;
+    }
+
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetHexOutput(bool b)
+    {
+        fIsHexOutput = b;
+    }
+
+    void SetDynamicOut(bool b)
+    {
+        fIsDynamicOut = b;
+    }
+/*
+    void SetDefaultSetup(const string &file)
+    {
+        fDefaultSetup = file;
+    }
+*/
+
+    bool LoadStaticData(string name)
+    {
+        if (name.rfind(".bin")!=name.length()-4)
+            name += ".bin";
+
+        ifstream fin(name);
+        if (!fin)
+            return false;
+
+        FTM::StaticData data;
+
+        fin.read(reinterpret_cast<char*>(&data), sizeof(FTM::StaticData));
+
+        if (fin.gcount()<streamsize(sizeof(FTM::StaticData)))
+            return false;
+
+        if (fin.fail() || fin.eof())
+            return false;
+
+        if (fin.peek()!=-1)
+            return false;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SaveStaticData(string name) const
+    {
+        if (name.rfind(".bin")!=name.length()-4)
+            name += ".bin";
+
+        ofstream fout(name);
+        if (!fout)
+            return false;
+
+        fout.write(reinterpret_cast<const char*>(&fStaticData), sizeof(FTM::StaticData));
+
+        return !fout.bad();
+    }
+
+    bool SetThreshold(int32_t patch, int32_t value)
+    {
+        if (patch>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        if (value<0 || value>FTM::StaticData::kMaxDAC)
+            return false;
+
+        if (patch<0)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            bool ident = true;
+            for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+                if (data[i/4].fDAC[i%4] != value)
+                {
+                    ident = false;
+                    break;
+                }
+
+            if (ident)
+                return true;
+
+            for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+                data[i/4].fDAC[i%4] = value;
+
+            // Maybe move to a "COMMIT" command?
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+          if (data[patch/4].fDAC[patch%4] == value)
+             return true;
+          */
+ 
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(&fStaticData[patch/4].fDAC[patch%4])-uintptr_t(&fStaticData))/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> data = {{ addr, uint16_t(value) }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = value;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (patch/40) | (((patch/4)%10)<<8));
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetSelectedThresholds(const int32_t *th)
+    {
+        for (int i=0; i<FTM::StaticData::kMaxPatchIdx; i++)
+            if (th[i]>FTM::StaticData::kMaxDAC)
+                return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+        {
+            if (th[i]<0 || fBufStaticData[i/4].fDAC[i%4]==th[i])
+                continue;
+
+            // Calculate offset in static data block
+            const uint16_t addr = (uintptr_t(&fStaticData[i/4].fDAC[i%4])-uintptr_t(&fStaticData))/2;
+
+            reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = th[i];
+
+            // From CmdSetRegister
+            const array<uint16_t, 2> arr = {{ addr, uint16_t(th[i]) }};
+            PostCmd(arr, FTM::kCmdWrite, FTM::kCmdRegister);
+            PostCmd(FTM::kCmdConfigFTU, (i/40) | (((i/4)%10)<<8));
+        }
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetAllThresholds(const int32_t *th)
+    {
+        for (int i=0; i<FTM::StaticData::kMaxPatchIdx; i++)
+            if (th[i]<0 || th[i]>FTM::StaticData::kMaxDAC)
+                return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+            data[i/4].fDAC[i%4] = th[i];
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetNoutof4(int32_t patch, int32_t value)
+    {
+        if (patch>=FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        if (value<0 || value>FTM::StaticData::kMaxDAC)
+            return false;
+
+        if (patch<0)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            bool ident = true;
+            for (int i=0; i<FTM::StaticData::kMaxMultiplicity; i++)
+                if (data[i].fDAC[4] != value)
+                {
+                    ident = false;
+                    break;
+                }
+
+            if (ident)
+                return true;
+
+            for (int i=0; i<=FTM::StaticData::kMaxMultiplicity; i++)
+                data[i].fDAC[4] = value;
+
+            // Maybe move to a "COMMIT" command?
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+         if (data[patch/4].fDAC[patch%4] == value)
+            return true;
+
+         data[patch/4].fDAC[patch%4] = value;
+
+         CmdSendStatDat(data);
+         return true;
+         */
+
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(&fStaticData[patch].fDAC[4])-uintptr_t(&fStaticData))/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> data = {{ addr, uint16_t(value) }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = value;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (patch/40) | (((patch/4)%10)<<8));
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetPrescaling(uint32_t value)
+    {
+        if (value>0xffff)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        bool ident = true;
+        for (int i=0; i<40; i++)
+            if (data[i].fPrescaling != value)
+            {
+                ident = false;
+                break;
+            }
+
+        if (ident)
+            return true;
+
+        data.SetPrescaling(value);
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnableFTU(int32_t board, bool enable)
+    {
+        if (board>39)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (board<0)
+        {
+            if (enable)
+                data.EnableAllFTU();
+            else
+                data.DisableAllFTU();
+        }
+        else
+        {
+            if (enable)
+                data.EnableFTU(board);
+            else
+                data.DisableFTU(board);
+
+        }
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool ToggleFTU(uint32_t board)
+    {
+        if (board>39)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.ToggleFTU(board);
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetVal(uint16_t *dest, uint32_t val, uint32_t max)
+    {
+        if (val>max)
+            return false;
+
+        if (*dest==val)
+            return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        dest = reinterpret_cast<uint16_t*>(&data) + (dest - reinterpret_cast<uint16_t*>(&fStaticData));
+
+        *dest = val;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerInterval(uint32_t val)
+    {
+        return SetVal(&fStaticData.fTriggerInterval, val,
+                      FTM::StaticData::kMaxTriggerInterval);
+    }
+
+    bool SetTriggerDelay(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDelayTrigger, val,
+                      FTM::StaticData::kMaxDelayTrigger);
+    }
+
+    bool SetTimeMarkerDelay(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDelayTimeMarker, val,
+                      FTM::StaticData::kMaxDelayTimeMarker);
+    }
+
+    bool SetDeadTime(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDeadTime, val,
+                      FTM::StaticData::kMaxDeadTime);
+    }
+
+    void Enable(FTM::StaticData::GeneralSettings type, bool enable)
+    {
+        //if (fStaticData.IsEnabled(type)==enable)
+        //    return;
+
+        FTM::StaticData data(fBufStaticData);
+        data.Enable(type, enable);
+        CmdSendStatDat(data);
+    }
+
+    bool SetTriggerSeq(const uint16_t d[3])
+    {
+	if (d[0]>FTM::StaticData::kMaxSequence ||
+            d[1]>FTM::StaticData::kMaxSequence ||
+            d[2]>FTM::StaticData::kMaxSequence)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        /*
+         data.Enable(FTM::StaticData::kPedestal, d[0]>0);
+         data.Enable(FTM::StaticData::kLPext,    d[1]>0);
+         data.Enable(FTM::StaticData::kLPint,    d[2]>0);
+         */
+
+        data.SetSequence(d[0], d[2], d[1]);
+
+        //if (fStaticData.fTriggerSeq     !=data.fTriggerSequence ||
+        //    fStaticData.fGeneralSettings!=data.fGeneralSettings)
+        //    CmdSendStatDat(data);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerMultiplicity(uint16_t n)
+    {
+        if (n==0 || n>FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        //if (n==fBufStaticData.fMultiplicityPhysics)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fMultiplicityPhysics = n;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerWindow(uint16_t win)
+    {
+        if (win>FTM::StaticData::kMaxWindow)
+            return false;
+
+        //if (win==fStaticData.fWindowPhysics)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fWindowPhysics = win;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetCalibMultiplicity(uint16_t n)
+    {
+        if (n==0 || n>FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        //if (n==fStaticData.fMultiplicityCalib)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fMultiplicityCalib = n;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetCalibWindow(uint16_t win)
+    {
+        if (win>FTM::StaticData::kMaxWindow)
+            return false;
+
+        //if (win==fStaticData.fWindowCalib)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fWindowCalib = win;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetClockRegister(const uint64_t reg[])
+    {
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<8; i++)
+            if (reg[i]>0xffffffff)
+                return false;
+
+        data.SetClockRegister(reg);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnableLP(FTM::StaticData::GeneralSettings lp, FTM::StaticData::LightPulserEnable group, bool enable)
+    {
+        if (lp!=FTM::StaticData::kLPint && lp!=FTM::StaticData::kLPext)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (lp==FTM::StaticData::kLPint)
+            data.EnableLPint(group, enable);
+
+        if (lp==FTM::StaticData::kLPext)
+            data.EnableLPext(group, enable);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetIntensity(FTM::StaticData::GeneralSettings lp, uint16_t intensity)
+    {
+        if (intensity>FTM::StaticData::kMaxIntensity)
+            return false;
+
+        if (lp!=FTM::StaticData::kLPint && lp!=FTM::StaticData::kLPext)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (lp==FTM::StaticData::kLPint)
+            data.fIntensityLPint = intensity;
+
+        if (lp==FTM::StaticData::kLPext)
+            data.fIntensityLPext = intensity;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnablePixel(int16_t idx, bool enable)
+    {
+        if (idx<-1 || idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        if (idx==-1)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+                data.EnablePixel(i, enable);
+
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+         data.EnablePixel(idx, enable);
+         CmdSendStatDat(data);
+         return true;
+         */
+
+        FTM::StaticData data(fBufStaticData);
+
+        const uintptr_t base = uintptr_t(&data);
+        const uint16_t *mem  = data.EnablePixel(idx, enable);
+
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(mem)-base)/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> cmd = {{ addr, *mem }};
+        PostCmd(cmd, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = *mem;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (idx/360) | (((idx/36)%10)<<8));
+
+        // Now request the register back to ensure consistency
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool DisableAllPixelsExcept(uint16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            data.EnablePixel(i, i==idx);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool DisableAllPatchesExcept(int16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            data.EnablePixel(i, i/9==idx);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnablePatch(int16_t idx, bool enable)
+    {
+        if (idx>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            if (i/9==idx)
+                data.EnablePixel(i, enable);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool TogglePixel(uint16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.EnablePixel(idx, !fBufStaticData.Enabled(idx));
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    States GetState() const
+    {
+        if (!IsConnected())
+            return kDisconnected; // rc=1
+
+        switch (fHeader.fState&FTM::kFtmStates)
+        {
+        case FTM::kFtmUndefined:  // 0
+            return fBufStaticData.valid() ? kConnected :  kDisconnected;    // rc=2
+
+        case FTM::kFtmRunning:    // 3
+        case FTM::kFtmCalib:      // 4
+            return kTriggerOn;    // rc=4
+
+        case FTM::kFtmIdle:      // 1
+        case FTM::kFtmConfig:    // 2          //  rc=7          // rc=3
+            return fStaticData == fBufStaticData ? kConfigured : kIdle;
+        }
+
+        throw runtime_error("ConnectionFTM::GetState - Impossible code reached.");
+    }
+
+    // If fState==2, the clock conditioner will always be reported as unlocked
+    //bool IsLocked() const { return fHeader.fState&FTM::kFtmLocked; }
+
+    uint32_t GetCounter(FTM::Types type) { return fCounter[type]; }
+
+    const FTM::StaticData &GetStaticData() const { return fStaticData; }
+};
+
+//const uint16_t ConnectionFTM::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimFTM : public ConnectionFTM
+{
+private:
+
+    DimDescribedService fDimPassport;
+    DimDescribedService fDimTriggerRates;
+    DimDescribedService fDimError;
+    DimDescribedService fDimFtuList;
+    DimDescribedService fDimStaticData;
+    DimDescribedService fDimDynamicData;
+    DimDescribedService fDimCounter;
+
+    uint64_t fTimeStamp;
+    uint64_t fTimeStampOn;
+    uint32_t fTriggerCounter;
+    uint64_t fPrevState;
+
+    void UpdateFirstHeader()
+    {
+        ConnectionFTM::UpdateFirstHeader();
+
+        const FTM::DimPassport data(fHeader);
+        fDimPassport.Update(data);
+    }
+
+    /*
+    void UpdateHeader()
+    {
+        ConnectionFTM::UpdateHeader();
+
+        if (fHeader.fType!=FTM::kDynamicData)
+            return;
+
+        const FTM::DimTriggerCounter data(fHeader);
+        fDimTriggerCounter.Update(data);
+    }*/
+
+    void UpdateFtuList()
+    {
+        ConnectionFTM::UpdateFtuList();
+
+        const FTM::DimFtuList data(fHeader, fFtuList);
+        fDimFtuList.Update(data);
+    }
+
+    void UpdateStaticData()
+    {
+        ConnectionFTM::UpdateStaticData();
+
+        const FTM::DimStaticData data(fHeader, fStaticData);
+        fDimStaticData.setQuality(fHeader.fState);
+        fDimStaticData.Update(data);
+    }
+
+    void UpdateDynamicData()
+    {
+        ConnectionFTM::UpdateDynamicData();
+
+        const FTM::DimDynamicData data(fHeader, fDynamicData, fStaticData);
+        fDimDynamicData.setQuality(fHeader.fState);
+        fDimDynamicData.Update(data);
+
+        uint64_t odiff = fDynamicData.fOnTimeCounter;
+        uint32_t cdiff = fHeader.fTriggerCounter;
+        uint64_t tdiff = fHeader.fTimeStamp;
+
+        // The easiest way to detect whether the counters have been
+        // reset or not is to detect a state change, because with
+        // every state change they are reset. However, there are cases
+        // when the trigger is switched on already (data run) and
+        // the trigger is turned off ans switched on again within
+        // a very short time, that the state of the previous and the
+        // new report is the same. So in addition we have to check
+        // for other indications. Any counter decreasing is a hint.
+        // None of them should ever decrease. So all three are checked.
+        const uint8_t state = fHeader.fState & FTM::States::kFtmStates;
+
+        const bool first = state!=fPrevState ||
+            fHeader.fTimeStamp<fTimeStamp ||
+            fHeader.fTriggerCounter<fTriggerCounter ||
+            fDynamicData.fOnTimeCounter<fTimeStampOn;
+
+        if (!first)
+        {
+            tdiff -= fTimeStamp;
+            odiff -= fTimeStampOn;
+            cdiff -= fTriggerCounter;
+        }
+
+        // The observation time calculated in the first report is most likely
+        // too large because the previous report is taken as reference,
+        // but this is the best what could be done.
+        const float rate = tdiff==0 ? 0 : 1e6*cdiff/tdiff;
+
+        fTimeStamp      = fHeader.fTimeStamp;
+        fTimeStampOn    = fDynamicData.fOnTimeCounter;
+        fTriggerCounter = fHeader.fTriggerCounter;
+        fPrevState      = state;
+
+        const FTM::DimTriggerRates rates(fHeader, fDynamicData, fStaticData,
+                                         rate, tdiff*1e-6, odiff*1e-6);
+
+        fDimTriggerRates.setQuality(fHeader.fState);
+        fDimTriggerRates.Update(rates);
+    }
+
+    void UpdateError()
+    {
+        ConnectionFTM::UpdateError();
+
+        const FTM::DimError data(fHeader, fError);
+        fDimError.Update(data);
+    }
+
+    void UpdateCounter()
+    {
+        ConnectionFTM::UpdateCounter();
+
+        const uint32_t counter[6] =
+        {
+            fCounter[FTM::kHeader],
+            fCounter[FTM::kStaticData],
+            fCounter[FTM::kDynamicData],
+            fCounter[FTM::kFtuList],
+            fCounter[FTM::kErrorList],
+            fCounter[FTM::kRegister],
+        };
+
+        fDimCounter.setQuality(fHeader.fState);
+        fDimCounter.Update(counter);
+    }
+
+public:
+    ConnectionDimFTM(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionFTM(ioservice, imp),
+        fDimPassport      ("FTM_CONTROL/PASSPORT",        "X:1;S:1",
+                                                          "Info about the FTM and FPGA version"
+                                                          "|BoardId[int]:BoardId, hexCode"
+                                                          "|DNA[int]:DNA of the FTM board"),
+        fDimTriggerRates  ("FTM_CONTROL/TRIGGER_RATES",   "X:1;X:1;I:1;F:1;F:40;F:160;F:1;F:1",
+                                                          "Patch,Board,Camera trigger rates"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|OnTimeCounter[us]:Effective on-time, ie. FTM triggers (eg. w/o busy)"
+                                                          "|TriggerCounter[int]:Counter of triggers since enabled or disabled"
+                                                          "|TriggerRate[Hz]:Trigger rate"
+                                                          "|BoardRate[Hz]:Trigger rate of individual FTUs"
+                                                          "|PatchRate[Hz]:Trigger rate of individual patches"
+                                                          "|ElapsedTime[s]:Time elapsed since previous report"
+                                                          "|OnTime[s]:OnTime elapsed since previous report"),
+        fDimError         ("FTM_CONTROL/ERROR",           "X:1;S:1;S:28", ""),
+        fDimFtuList       ("FTM_CONTROL/FTU_LIST",        "X:1;X:1;S:1;C:4;X:40;C:40;C:40",
+                                                          "Logs the changes of status of the FTUs"
+                                                          "|FTMtimeStamp[us]:Time in microseconds"
+                                                          "|ActiveFTU[bitpattern]:Description of enabled FTUs"
+                                                          "|NumBoards[int]:Total number of enabled FTUs"
+                                                          "|NumBoardsCrate[int]:Total number of enabled FTUs per crate"
+                                                          "|DNA[hexCode]:Hex code identifier of FTUs"
+                                                          "|Addr[bitpattern]:Crate address (hardware) of FTUs"
+                                                          "|Ping[int]:Number of pings until FTU response"),
+        fDimStaticData    ("FTM_CONTROL/STATIC_DATA",     "X:1;S:1;S:1;X:1;S:1;S:3;C:4;S:1;S:1;S:1;S:1;S:1;S:1;I:1;I:8;S:90;S:160;S:40;S:40",
+                                                          "Configuration of FTM and FTUs"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|GeneralSettings[bitpattern]:Status of the FTM settings (cf. FTM doc)"
+                                                          "|LEDStatus[bitpattern]:Not Used"
+                                                          "|ActiveFTU[bitpattern]:List of enabled FTUs"
+                                                          "|TriggerInterval[bitpattern]:Period of cal. and ped. events (cf. FTM doc)"
+                                                          "|TriggerSeq[int]:Sequence of calib. and pedestal events (LPint, LPext, Ped)"
+                                                          "|LPSettings[bitpattern]:Settings of LP, enabled int, ext, intensity int, ext"
+                                                          "|PhysTrigMult[int]:N for N out of 40 logic on FTM (Physics)"
+                                                          "|CalibTrigMult[int]: N for N out of 40 logic on FTM (Calib)"
+                                                          "|PhysTrigWindow[ns]:Coincidence window for N out of 40 (Physics)"
+                                                          "|CalibTrigWindow[ns]:Coincidence window for N out of 40 (Calib)"
+                                                          "|TrigDelay[ns]:Trigger delay applied on FTM"
+                                                          "|TMDelay[ns]:TM delay applied on FTM"
+                                                          "|DeadTime[ns]:Dead time applied after each event on the FTM"
+                                                          "|ClkCond[bitpattern]:Clock conditionner settings on the FTM (DRS sampling freq.)"
+                                                          "|PixEnabled[bitpattern]:Enabled pixels, pckd in 90 shorts (160*9bits=180bytes)"
+                                                          "|PatchThresh[DACcounts]:Threshold of the trigger patches"
+                                                          "|Multiplicity[DACcounts]:N out of 4 logic settings per FTU"
+                                                          "|Prescaling[500ms]:Update rate of the rate counter"),
+        fDimDynamicData   ("FTM_CONTROL/DYNAMIC_DATA",    "X:1;X:1;F:4;I:160;I:40;S:40;S:40;S:40;S:1",
+                                                          "Regular reports sent by FTM"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|OnTimeCounter[us]:Ontime, i.e. FTM processes triggers (e.g. No FAD busy)"
+                                                          "|Temperatures[Nan]:not yet defined nor used (wanna be FTM onboard temps)"
+                                                          "|TriggerPatchCounter[int]:counting since last update (prescaling)"
+                                                          "|BoardsCounter[int]:FTU board counting after N out of 4 and since last update"
+                                                          "|RateOverflow[bitpattern]:bits 0-4=patches overflow, 5=board overflow, 1 per board"
+                                                          "|Prescaling[500ms]:Update rate of the rate counter"
+                                                          "|CrcError[int]:Number of checksum error in RS485 communication"
+                                                          "|State[int]:State value of the FTM firmware (cf. FTM doc)"),
+        fDimCounter       ("FTM_CONTROL/COUNTER",         "I:1;I:1;I:1;I:1;I:1;I:1",
+                                                          "Communication statistics to or from FTM control and FTM"
+                                                          "|NumHeaders[int]:Num. of headers (any header) received by ftm control"
+                                                          "|NumStaticData[int]:Num. of static data blocks (ftm and ftu settings)"
+                                                          "|NumDynamicData[int]:Num. of dynamic data blocks (e.g. rates)"
+                                                          "|NumFtuList[int]:Num. of FTU list (FTU identifiers, answer from ping)"
+                                                          "|NumErrors[int]:Num. of error messages"
+                                                          "|NumRegister[int]:Num. of answers from a single register accesess"),
+        fTimeStamp(0), fTimeStampOn(0), fTriggerCounter(0), fPrevState(0)
+    {
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineFTM : public StateMachineAsio<T>
+{
+    int Wrap(function<void()> f)
+    {
+        f();
+        return T::GetCurrentState();
+    }
+
+    function<int(const EventImp &)> Wrapper(function<void()> func)
+    {
+        return bind(&StateMachineFTM::Wrap, this, func);
+    }
+
+private:
+    S fFTM;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRegister", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *dat = evt.Ptr<uint32_t>();
+
+        if (dat[1]>uint16_t(-1))
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+
+        if (dat[0]>uint16_t(-1) || !fFTM.CmdSetRegister(dat[0], dat[1]))
+        {
+            ostringstream msg;
+            msg << hex << "Address " << dat[0] << " out of range.";
+            T::Error(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int GetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "GetRegister", 4))
+            return T::kSM_FatalError;
+
+        const unsigned int addr = evt.GetInt();
+        if (addr>uint16_t(-1) || !fFTM.CmdGetRegister(addr))
+        {
+            ostringstream msg;
+            msg << hex << "Address " << addr << " out of range.";
+            T::Error(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int StartRun()
+    {
+        // This is a workaround... it seems that the FTM ignored the 'trigger on'
+        // as long as it is still sending thresholds to the FTUs (and it seems
+        // that this is the only command/confguration) which gets ignored.
+        // So if we are configuring, we resent this command until we got a
+        // reasonable answer (TriggerOn) back from the FTM.
+        // There is no need to send the command here, because Execute
+        // will be called immediately after this anyway before any
+        // answer could be processed. So it would just guarantee that
+        // the command is sent twice for no reason.
+
+        fFTM.CmdStartRun();
+
+        if (T::GetCurrentState()!=FTM::State::kConfigured1)
+            return T::GetCurrentState();
+
+        fCounterReg = fFTM.GetCounter(FTM::kRegister);
+        return FTM::State::kConfigured2;
+    }
+
+    int TakeNevents(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "TakeNevents", 4))
+            return T::kSM_FatalError;
+
+        const unsigned int dat = evt.GetUInt();
+
+        /*
+        if (dat[1]>uint32_t(-1))
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }*/
+
+        fFTM.CmdTakeNevents(dat);
+
+        return T::GetCurrentState();
+    }
+
+    int DisableReports(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableReports", 1))
+            return T::kSM_FatalError;
+
+        fFTM.CmdDisableReports(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetHexOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetHexOutput", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetHexOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDynamicOut(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDynamicOut", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetDynamicOut(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int LoadStaticData(const EventImp &evt)
+    {
+        if (fFTM.LoadStaticData(evt.GetString()))
+            return T::GetCurrentState();
+
+        ostringstream msg;
+        msg << "Loading static data from file '" << evt.GetString() << "' failed ";
+
+        if (errno)
+            msg << "(" << strerror(errno) << ")";
+        else
+            msg << "(wrong size, expected " << sizeof(FTM::StaticData) << " bytes)";
+
+        T::Warn(msg);
+
+        return T::GetCurrentState();
+    }
+
+    int SaveStaticData(const EventImp &evt)
+    {
+        if (fFTM.SaveStaticData(evt.GetString()))
+            return T::GetCurrentState();
+
+        ostringstream msg;
+        msg << "Writing static data to file '" << evt.GetString() << "' failed ";
+        msg << "(" << strerror(errno) << ")";
+
+        T::Warn(msg);
+
+        return T::GetCurrentState();
+    }
+
+    int SetThreshold(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetThreshold", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+
+        if (!fFTM.SetThreshold(data[0], data[1]))
+        {
+            ostringstream msg;
+            msg << "SetThreshold - Maximum allowed patch number 159, valid value range 0-0xffff (got: " << data[0] << " " << data[1] << ")";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetSelectedThresholds(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetSelectedThresholds", 160*4))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+        if (!fFTM.SetSelectedThresholds(data))
+        {
+            ostringstream msg;
+            msg << "SetSelectedThresholds - Value out of range, maximum 0xffff.";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetAllThresholds(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAllThresholds", 160*4))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+        if (!fFTM.SetAllThresholds(data))
+        {
+            ostringstream msg;
+            msg << "SetAllThresholds - Value out of range [0; 0xffff]";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetNoutof4(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetNoutof4", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+
+        if (!fFTM.SetNoutof4(data[0], data[1]))
+            T::Warn("SetNoutof4 - Maximum allowed board number 39, valid value range 0-0xffff");
+
+        return T::GetCurrentState();
+    }
+
+    int EnableFTU(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableFTU", 5))
+            return T::kSM_FatalError;
+
+        const int32_t &board  = evt.Get<int32_t>();
+        const int8_t  &enable = evt.Get<int8_t>(4);
+
+        if (!fFTM.EnableFTU(board, enable))
+            T::Warn("EnableFTU - Board number must be <40.");
+
+        return T::GetCurrentState();
+    }
+
+    int ToggleFTU(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ToggleFTU", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.ToggleFTU(evt.GetInt()))
+            T::Warn("ToggleFTU - Allowed range of boards 0-39.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerInterval", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerInterval(evt.GetInt()))
+            T::Warn("SetTriggerInterval - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerDelay(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerDelay", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerDelay(evt.GetInt()))
+            T::Warn("SetTriggerDealy - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTimeMarkerDelay(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTimeMarkerDelay", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTimeMarkerDelay(evt.GetInt()))
+            T::Warn("SetTimeMarkerDelay - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetPrescaling(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetPrescaling", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetPrescaling(evt.GetInt()-1))
+            T::Warn("SetPrescaling - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerSeq(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerSeq", 6))
+            return T::kSM_FatalError;
+
+        const uint16_t *data = evt.Ptr<uint16_t>();
+
+        if (!fFTM.SetTriggerSeq(data))
+            T::Warn("SetTriggerSeq - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetDeadTime(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDeadTime", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetDeadTime(evt.GetInt()))
+            T::Warn("SetDeadTime - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerMultiplicity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerMultiplicity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerMultiplicity(evt.GetUShort()))
+            T::Warn("SetTriggerMultiplicity -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetCalibMultiplicity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCalibMultiplicity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetCalibMultiplicity(evt.GetUShort()))
+            T::Warn("SetCalibMultiplicity -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerWindow(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerWindow", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerWindow(evt.GetUShort()))
+            T::Warn("SetTriggerWindow -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetCalibWindow(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCalibWindow", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetCalibWindow(evt.GetUShort()))
+            T::Warn("SetCalibWindow -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetClockRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetClockRegister", 8*8))
+            return T::kSM_FatalError;
+
+        const uint64_t *reg = evt.Ptr<uint64_t>();
+
+        if (!fFTM.SetClockRegister(reg))
+            T::Warn("SetClockRegister - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetClockFrequency(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetClockFrequency", 2))
+            return T::kSM_FatalError;
+
+        const map<uint16_t,array<uint64_t, 8>>::const_iterator it =
+            fClockCondSetup.find(evt.GetUShort());
+
+        if (it==fClockCondSetup.end())
+        {
+            T::Warn("SetClockFrequency - Frequency not supported.");
+            return T::GetCurrentState();
+        }
+
+        if (!fFTM.SetClockRegister(it->second.data()))
+            T::Warn("SetClockFrequency - Register values out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int EnableLP(const EventImp &evt, FTM::StaticData::GeneralSettings lp, FTM::StaticData::LightPulserEnable group)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableLP", 1))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnableLP(lp, group, evt.GetBool()))
+            T::Warn("EnableLP - Invalid light pulser id.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetIntensity(const EventImp &evt, FTM::StaticData::GeneralSettings lp)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIntensity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetIntensity(lp, evt.GetShort()))
+            T::Warn("SetIntensity - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int Enable(const EventImp &evt, FTM::StaticData::GeneralSettings type)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Enable", 1))
+            return T::kSM_FatalError;
+
+        fFTM.Enable(type, evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int EnablePixel(const EventImp &evt, bool b)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnablePixel", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnablePixel(evt.GetUShort(), b))
+            T::Warn("EnablePixel -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int DisableAllPixelsExcept(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableAllPixelsExcept", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.DisableAllPixelsExcept(evt.GetUShort()))
+            T::Warn("DisableAllPixelsExcept -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int DisableAllPatchesExcept(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableAllPatchesExcept", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.DisableAllPatchesExcept(evt.GetUShort()))
+            T::Warn("DisableAllPatchesExcept -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int EnablePatch(const EventImp &evt, bool enable)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnablePatch", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnablePatch(evt.GetUShort(), enable))
+            T::Warn("EnablePatch -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int TogglePixel(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "TogglePixel", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.TogglePixel(evt.GetUShort()))
+            T::Warn("TogglePixel -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int ResetCrate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ResetCrate", 2))
+            return T::kSM_FatalError;
+
+        fFTM.CmdResetCrate(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fFTM.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fFTM.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fFTM.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fFTM.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    /*
+    int Transition(const Event &evt)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kDisconnected:
+        case kConnected:
+        }
+
+        return T::kSM_FatalError;
+    }*/
+
+    uint32_t fCounterReg;
+    uint32_t fCounterStat;
+
+    typedef map<string, FTM::StaticData> Configs;
+    Configs fConfigs;
+    Configs::const_iterator fTargetConfig;
+
+    int ConfigureFTM(const EventImp &evt)
+    {
+        const string name = evt.GetText();
+
+        fTargetConfig = fConfigs.find(name);
+        if (fTargetConfig==fConfigs.end())
+        {
+            T::Error("ConfigureFTM - Run-type '"+name+"' not found.");
+            return T::GetCurrentState();
+        }
+
+        T::Message("Starting configuration for '"+name+"' ["+to_string(fFTM.IsTxQueueEmpty())+"]");
+
+        fCounterReg = fFTM.GetCounter(FTM::kRegister);
+        fFTM.CmdStopRun();
+
+        return FTM::State::kConfiguring1;
+    }
+
+    int ResetConfig()
+    {
+        return fFTM.GetState();
+    }
+
+    int Execute()
+    {
+        // If FTM is neither in data taking nor idle,
+        // leave configuration state
+        switch (fFTM.GetState())
+        {
+        case ConnectionFTM::kDisconnected: return FTM::State::kDisconnected;
+        case ConnectionFTM::kConnected:    return FTM::State::kConnected;
+        default:
+            break;
+        }
+
+        // FIXME: Add timeouts and go to error state
+        //        so that a configuration error can be handled
+        switch (T::GetCurrentState())
+        {
+        case FTM::State::kConfiguring1:
+            // If FTM has received an anwer to the stop_run command
+            // the counter for the registers has been increased
+            if (fFTM.GetCounter(FTM::kRegister)<=fCounterReg)
+                return FTM::State::kConfiguring1;
+
+            // If now the state is not idle as expected this means we had
+            // an error (maybe old events waiting in the queue)
+            if (fFTM.GetState()!=ConnectionFTM::kIdle &&
+                fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError1;
+
+            fCounterStat = fFTM.GetCounter(FTM::kStaticData);
+
+            fFTM.CmdSendStatDat(fTargetConfig->second);
+
+            T::Message("Trigger successfully disabled... sending new configuration.");
+
+            // Next state is: wait for the answer to our configuration
+            return FTM::State::kConfiguring2;
+
+        case FTM::State::kConfiguring2:
+        case FTM::State::kConfigured1:
+            // If FTM has received an anwer to the CmdSendStatDat
+            // the counter for static data has been increased
+            if (fFTM.GetCounter(FTM::kStaticData)<=fCounterStat)
+                break;
+
+            // If now the configuration is not what we expected
+            // we had an error (maybe old events waiting in the queue?)
+            if (fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError2;
+
+            // Check configuration again when a new static data block
+            // will be received
+            fCounterStat = fFTM.GetCounter(FTM::kStaticData);
+
+            // This is also displayed when the ratecontrol sends its configuration...
+            if (T::GetCurrentState()==FTM::State::kConfiguring2)
+                T::Message("Sending new configuration was successfull.");
+            else
+                T::Message("Configuration successfully updated.");
+
+            // Next state is: wait for the answer to our configuration
+            return FTM::State::kConfigured1;
+
+        // This state is set by StartRun [START_TRIGGER]
+        case FTM::State::kConfigured2:
+            // No answer to the CmdStartRun received yet... go on waiting
+            if (fFTM.GetCounter(FTM::kRegister)<=fCounterReg)
+                return FTM::State::kConfigured2;
+
+            // Answer received and trigger enable acknowledged
+            if (fFTM.GetState()==ConnectionFTM::kTriggerOn)
+                return FTM::State::kTriggerOn;
+
+            // If the trigger is not enabled, but the configuration
+            // has changed go to error state (should never happen)
+            if (fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError2;
+
+            // Send a new command... the previous one might have gone
+            // ignored by the ftm because it was just after a
+            // threshold setting during the configured state
+            fFTM.CmdStartRun(false);
+
+            // Set counter to wait for answer.
+            fCounterReg = fFTM.GetCounter(FTM::kRegister);
+
+            // Go on waiting for a proper acknowledge of the trigger enable
+            return FTM::State::kConfigured2;
+
+        case FTM::State::kConfigError1:
+        case FTM::State::kConfigError2:
+        //case FTM::State::kConfigError3:
+            break;
+
+        default:
+            switch (fFTM.GetState())
+            {
+            case ConnectionFTM::kIdle:         return FTM::State::kIdle;
+            case ConnectionFTM::kConfigured:   return FTM::State::kValid;
+            case ConnectionFTM::kTriggerOn:    return FTM::State::kTriggerOn;
+            default:
+                throw runtime_error("StateMachineFTM - Execute() - Inavlid state.");
+            }
+        }
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineFTM(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FTM_CONTROL"), fFTM(*this, *this)
+    {
+        // State names
+        T::AddStateName(FTM::State::kDisconnected, "Disconnected",
+                        "FTM board not connected via ethernet.");
+
+        T::AddStateName(FTM::State::kConnected, "Connected",
+                        "Ethernet connection to FTM established (no state received yet).");
+
+        T::AddStateName(FTM::State::kIdle, "Idle",
+                        "Ethernet connection to FTM established, FTM in idle state.");
+
+        T::AddStateName(FTM::State::kValid, "Valid",
+                        "FTM in idle state and the last sent and received static data block are bitwise identical.");
+
+        T::AddStateName(FTM::State::kConfiguring1, "Configuring1",
+                        "Command to disable run sent... waiting for response.");
+        T::AddStateName(FTM::State::kConfiguring2, "Configuring2",
+                        "New configuration sent... waiting for response.");
+        T::AddStateName(FTM::State::kConfigured1,   "Configured1",
+                        "Received answer identical with target configuration.");
+        T::AddStateName(FTM::State::kConfigured2, "Configured2",
+                        "Waiting for acknowledge of trigger enable.");
+
+        T::AddStateName(FTM::State::kTriggerOn, "TriggerOn",
+                        "Ethernet connection to FTM established, FTM trigger output to FADs enabled.");
+
+        T::AddStateName(FTM::State::kConfigError1, "ErrorInConfig1", "Unexpected state received from FTM");
+        T::AddStateName(FTM::State::kConfigError2, "ErrorInConfig2", "Unexpected state received from FTM");
+        //T::AddStateName(FTM::State::kConfigError3, "ClockCondError", "Clock conditioner not locked");
+
+        // FTM Commands
+        T::AddEvent("TOGGLE_LED", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdToggleLed, &fFTM)))
+            ("toggle led");
+
+        T::AddEvent("PING", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdPing, &fFTM)))
+            ("send ping");
+
+        T::AddEvent("REQUEST_DYNAMIC_DATA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdReqDynDat, &fFTM)))
+            ("request transmission of dynamic data block");
+
+        T::AddEvent("REQUEST_STATIC_DATA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdReqStatDat, &fFTM)))
+            ("request transmission of static data from FTM to memory");
+
+        T::AddEvent("GET_REGISTER", "I", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::GetRegister, this, placeholders::_1))
+            ("read register from address addr"
+            "|addr[short]:Address of register");
+
+        T::AddEvent("SET_REGISTER", "I:2", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetRegister, this, placeholders::_1))
+            ("set register to value"
+            "|addr[short]:Address of register"
+            "|val[short]:Value to be set");
+
+        T::AddEvent("START_TRIGGER", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1, FTM::State::kConfigured2)
+            (bind(&StateMachineFTM::StartRun, this))
+            ("start a run (start distributing triggers)");
+
+        T::AddEvent("STOP_TRIGGER", FTM::State::kTriggerOn)
+            (Wrapper(bind(&ConnectionFTM::CmdStopRun, &fFTM)))
+            ("stop a run (stop distributing triggers)");
+
+        T::AddEvent("TAKE_N_EVENTS", "I", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::TakeNevents, this, placeholders::_1))
+            ("take n events (distribute n triggers)|number[int]:Number of events to be taken");
+
+        T::AddEvent("DISABLE_REPORTS", "B", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableReports, this, placeholders::_1))
+            ("disable sending rate reports"
+             "|status[bool]:disable or enable that the FTM sends rate reports (yes/no)");
+
+        T::AddEvent("SET_THRESHOLD", "I:2", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetThreshold, this, placeholders::_1))
+            ("Set the comparator threshold"
+             "|Patch[idx]:Index of the patch (0-159), -1 for all"
+             "|Threshold[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_SELECTED_THRESHOLDS", "I:160", FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetSelectedThresholds, this, placeholders::_1))
+            ("Set the comparator thresholds. Only thresholds which are different and >=0 are sent."
+             "|Thresholds[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_ALL_THRESHOLDS", "I:160", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1)
+            (bind(&StateMachineFTM::SetAllThresholds, this, placeholders::_1))
+            ("Set the comparator thresholds"
+             "|Thresholds[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_N_OUT_OF_4", "I:2", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetNoutof4, this, placeholders::_1))
+            ("Set the comparator threshold"
+             "|Board[idx]:Index of the board (0-39), -1 for all"
+             "|Threshold[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_PRESCALING", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetPrescaling, this, placeholders::_1))
+            ("Sets the FTU readout time intervals"
+             "|time[0.5s]:The interval is given in units of 0.5s, i.e. 1 means 0.5s, 2 means 1s, ...");
+
+        T::AddEvent("ENABLE_FTU", "I:1;B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableFTU, this, placeholders::_1))
+            ("Enable or disable FTU"
+             "|Board[idx]:Index of the board (0-39), -1 for all"
+             "|Enable[bool]:Whether FTU should be enabled or disabled (yes/no)");
+
+        T::AddEvent("DISABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, false))
+            ("(-1 or all)");
+
+        T::AddEvent("ENABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, true))
+            ("(-1 or all)");
+
+        T::AddEvent("DISABLE_ALL_PIXELS_EXCEPT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableAllPixelsExcept, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("DISABLE_ALL_PATCHES_EXCEPT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableAllPatchesExcept, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("ENABLE_PATCH", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, true))
+            ("");
+
+        T::AddEvent("DISABLE_PATCH", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, false))
+            ("");
+
+        T::AddEvent("TOGGLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::TogglePixel, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("TOGGLE_FTU", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::ToggleFTU, this, placeholders::_1))
+            ("Toggle status of FTU (this is mainly meant to be used in the GUI)"
+             "|Board[idx]:Index of the board (0-39)");
+
+        T::AddEvent("SET_TRIGGER_INTERVAL", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerInterval, this, placeholders::_1))
+            ("Sets the trigger interval which is the distance between two consecutive artificial triggers."
+             "|interval[ms]:The applied trigger interval in millisecond (min 1ms / 10bit)");
+
+        T::AddEvent("SET_TRIGGER_DELAY", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerDelay, this, placeholders::_1))
+            (""
+             "|delay[int]:The applied trigger delay is: delay*4ns+8ns");
+
+        T::AddEvent("SET_TIME_MARKER_DELAY", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTimeMarkerDelay, this, placeholders::_1))
+            (""
+            "|delay[int]:The applied time marker delay is: delay*4ns+8ns");
+
+        T::AddEvent("SET_DEAD_TIME", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetDeadTime, this, placeholders::_1))
+            (""
+            "|dead_time[int]:The applied dead time is: dead_time*4ns+8ns");
+
+        T::AddEvent("ENABLE_TRIGGER", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kTrigger))
+            ("Switch on the physics trigger"
+             "|Enable[bool]:Enable physics trigger (yes/no)");
+
+        // FIXME: Switch on/off depending on sequence
+        T::AddEvent("ENABLE_EXT1", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt1))
+            ("Switch on the triggers through the first external line"
+             "|Enable[bool]:Enable ext1 trigger (yes/no)");
+
+        // FIXME: Switch on/off depending on sequence
+        T::AddEvent("ENABLE_EXT2", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt2))
+            ("Switch on the triggers through the second external line"
+             "|Enable[bool]:Enable ext2 trigger (yes/no)");
+
+        T::AddEvent("ENABLE_VETO", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kVeto))
+            ("Enable veto line"
+             "|Enable[bool]:Enable veto (yes/no)");
+
+        T::AddEvent("ENABLE_CLOCK_CONDITIONER", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kClockConditioner))
+            ("Enable clock conidtioner output in favor of time marker output"
+             "|Enable[bool]:Enable clock conditioner (yes/no)");
+
+        T::AddEvent("ENABLE_GROUP1_LPINT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup1))
+            ("");
+        T::AddEvent("ENABLE_GROUP1_LPEXT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup1))
+            ("");
+        T::AddEvent("ENABLE_GROUP2_LPINT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup2))
+            ("");
+        T::AddEvent("ENABLE_GROUP2_LPEXT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup2))
+            ("");
+        T::AddEvent("SET_INTENSITY_LPINT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPint))
+            ("");
+        T::AddEvent("SET_INTENSITY_LPEXT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPext))
+            ("");
+
+
+        T::AddEvent("SET_TRIGGER_SEQUENCE", "S:3", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerSeq, this, placeholders::_1))
+            ("Setup the sequence of artificial triggers produced by the FTM"
+             "|Ped[short]:number of pedestal triggers in a row"
+             "|LPext[short]:number of triggers of the external light pulser"
+             "|LPint[short]:number of triggers of the internal light pulser");
+
+        T::AddEvent("SET_TRIGGER_MULTIPLICITY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerMultiplicity, this, placeholders::_1))
+            ("Setup the Multiplicity condition for physcis triggers"
+             "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
+
+        T::AddEvent("SET_TRIGGER_WINDOW", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerWindow, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CALIBRATION_MULTIPLICITY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetCalibMultiplicity, this, placeholders::_1))
+            ("Setup the Multiplicity condition for artificial (calibration) triggers"
+             "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
+
+        T::AddEvent("SET_CALIBRATION_WINDOW", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetCalibWindow, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CLOCK_FREQUENCY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetClockFrequency, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CLOCK_REGISTER", "X:8", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetClockRegister, this, placeholders::_1))
+            ("");
+
+        // A new configure will first stop the FTM this means
+        // we can allow it in idle _and_ taking data
+        T::AddEvent("CONFIGURE", "C")(FTM::State::kIdle)(FTM::State::kValid)(FTM::State::kConfiguring1)(FTM::State::kConfiguring2)(FTM::State::kConfigured1)(FTM::State::kConfigured2)(FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::ConfigureFTM, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("RESET_CONFIGURE")(FTM::State::kConfiguring1)(FTM::State::kConfiguring2)(FTM::State::kConfigured1)(FTM::State::kConfigured2)(FTM::State::kConfigError1)(FTM::State::kConfigError2)(FTM::State::kConfigError2)
+            (bind(&StateMachineFTM::ResetConfig, this))
+            ("Reset states during a configuration or in case of configuration error");
+
+
+
+        T::AddEvent("RESET_CRATE", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::ResetCrate, this, placeholders::_1))
+            ("Reset one of the crates 0-3"
+             "|crate[short]:Crate number to be reseted (0-3)");
+
+        T::AddEvent("RESET_CAMERA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdResetCamera, &fFTM)))
+            ("Reset all crates. The commands are sent in the order 0,1,2,3");
+
+
+        // Load/save static data block
+        T::AddEvent("SAVE", "C", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SaveStaticData, this, placeholders::_1))
+            ("Saves the static data (FTM configuration) from memory to a file"
+             "|filename[string]:Filename (can include a path), .bin is automatically added");
+
+        T::AddEvent("LOAD", "C", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::LoadStaticData, this, placeholders::_1))
+            ("Loads the static data (FTM configuration) from a file into memory and sends it to the FTM"
+             "|filename[string]:Filename (can include a path), .bin is automatically added");
+
+
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineFTM::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("SET_HEX_OUTPUT", "B")
+            (bind(&StateMachineFTM::SetHexOutput, this, placeholders::_1))
+            ("enable or disable hex output for received data"
+             "|hexout[bool]:disable or enable hex output for received data (yes/no)");
+
+        T::AddEvent("SET_DYNAMIC_OUTPUT", "B")
+            (bind(&StateMachineFTM::SetDynamicOut, this, placeholders::_1))
+            ("enable or disable output for received dynamic data (data is still broadcasted via Dim)"
+             "|dynout[bool]:disable or enable output for dynamic data (yes/no)");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", FTM::State::kConnected, FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", FTM::State::kDisconnected, FTM::State::kConnected, FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fFTM.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fFTM.SetEndpoint(url);
+    }
+
+    map<uint16_t, array<uint64_t, 8>> fClockCondSetup;
+
+    template<class V>
+    bool CheckConfigVal(Configuration &conf, V max, const string &name, const string &sub)
+    {
+        if (!conf.HasDef(name, sub))
+        {
+            T::Error("Neither "+name+"default nor "+name+sub+" found.");
+            return false;
+        }
+
+        const V val = conf.GetDef<V>(name, sub);
+
+        if (val<=max)
+            return true;
+
+        ostringstream str;
+        str << name << sub << "=" << val << " exceeds allowed maximum of " << max << "!";
+        T::Error(str);
+
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- General setup ----------
+        fFTM.SetVerbose(!conf.Get<bool>("quiet"));
+        fFTM.SetHexOutput(conf.Get<bool>("hex-out"));
+        fFTM.SetDynamicOut(conf.Get<bool>("dynamic-out"));
+
+        // ---------- Setup clock conditioner frequencies ----------
+        const vector<uint16_t> freq = conf.Vec<uint16_t>("clock-conditioner.frequency");
+        if (freq.empty())
+            T::Warn("No frequencies for the clock-conditioner defined.");
+        else
+            T::Message("Defining clock conditioner frequencies");
+        for (vector<uint16_t>::const_iterator it=freq.begin();
+             it!=freq.end(); it++)
+        {
+            if (fClockCondSetup.count(*it)>0)
+            {
+                T::Error("clock-conditioner frequency defined twice.");
+                return 1;
+            }
+
+            if (!conf.HasDef("clock-conditioner.R0.",  *it) ||
+                !conf.HasDef("clock-conditioner.R1.",  *it) ||
+                !conf.HasDef("clock-conditioner.R8.",  *it) ||
+                !conf.HasDef("clock-conditioner.R9.",  *it) ||
+                !conf.HasDef("clock-conditioner.R11.", *it) ||
+                !conf.HasDef("clock-conditioner.R13.", *it) ||
+                !conf.HasDef("clock-conditioner.R14.", *it) ||
+                !conf.HasDef("clock-conditioner.R15.", *it))
+            {
+                T::Error("clock-conditioner values incomplete.");
+                return 1;
+            }
+
+            array<uint64_t, 8> &arr = fClockCondSetup[*it];
+
+            arr[0] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R0.",  *it);
+            arr[1] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R1.",  *it);
+            arr[2] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R8.",  *it);
+            arr[3] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R9.",  *it);
+            arr[4] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R11.", *it);
+            arr[5] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R13.", *it);
+            arr[6] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R14.", *it);
+            arr[7] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R15.", *it);
+
+            ostringstream out;
+            out << " -> " << setw(4) << *it << "MHz:" << hex << setfill('0');
+            for (int i=0; i<8; i++)
+                out << " " << setw(8) << arr[i];
+            T::Message(out.str());
+        }
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.empty())
+            T::Warn("No run-types defined.");
+        else
+            T::Message("Defining run-types");
+        for (vector<string>::const_iterator it=types.begin();
+             it!=types.end(); it++)
+        {
+            T::Message(" -> "+ *it);
+
+            if (fConfigs.count(*it)>0)
+            {
+                T::Error("Run-type "+*it+" defined twice.");
+                return 2;
+            }
+
+            if (!conf.HasDef("sampling-frequency.", *it))
+            {
+                T::Error("Neither sampling-frequency."+*it+" nor sampling-frequency.default found.");
+                return 2;
+            }
+
+            const uint16_t frq = conf.GetDef<uint16_t>("sampling-frequency.", *it);
+
+            FTM::StaticData data;
+            data.SetClockRegister(fClockCondSetup[frq].data());
+
+            // Trigger sequence ped:lp1:lp2
+            // (data. is used here as an abbreviation for FTM::StaticData::
+            if (!CheckConfigVal<bool>    (conf, true,                     "trigger.enable-trigger.",              *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-external-1.",           *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-external-2.",           *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-veto.",                 *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-clock-conditioner.",    *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.external.enable-group1.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.external.enable-group2.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.internal.enable-group1.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.internal.enable-group2.", *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.pedestal.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.lp-ext.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.lp-int.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxTriggerInterval, "trigger.sequence.interval.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxMultiplicity,    "trigger.multiplicity-physics.",        *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxMultiplicity,    "trigger.multiplicity-calib.",          *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxWindow,          "trigger.coincidence-window-physics.",  *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxWindow,          "trigger.coincidence-window-calib.",    *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDeadTime,        "trigger.dead-time.",                   *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDelayTrigger,    "trigger.delay.",                       *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDelayTimeMarker, "trigger.time-marker-delay.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, 0xffff,                   "ftu-report-interval.",                 *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxIntensity,       "light-pulser.external.intensity.",     *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxIntensity,       "light-pulser.internal.intensity.",     *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDAC,             "trigger.threshold.patch.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDAC,             "trigger.threshold.logic.",             *it) ||
+                0)
+                return 2;
+
+            data.Enable(data.kTrigger,          conf.GetDef<bool>("trigger.enable-trigger.",           *it));
+            data.Enable(data.kExt1,             conf.GetDef<bool>("trigger.enable-external-1.",        *it));
+            data.Enable(data.kExt2,             conf.GetDef<bool>("trigger.enable-external-2.",        *it));
+            data.Enable(data.kVeto,             conf.GetDef<bool>("trigger.enable-veto.",              *it));
+            data.Enable(data.kClockConditioner, conf.GetDef<bool>("trigger.enable-clock-conditioner.", *it));
+
+            data.EnableLPint(data.kGroup1, conf.GetDef<bool>("light-pulser.internal.enable-group1.", *it));
+            data.EnableLPint(data.kGroup2, conf.GetDef<bool>("light-pulser.internal.enable-group2.", *it));
+            data.EnableLPext(data.kGroup1, conf.GetDef<bool>("light-pulser.external.enable-group1.", *it));
+            data.EnableLPext(data.kGroup2, conf.GetDef<bool>("light-pulser.external.enable-group2.", *it));
+
+            // [ms] Interval between two artificial triggers (no matter which type) minimum 1ms, 10 bit
+            data.fIntensityLPint      = conf.GetDef<uint16_t>("light-pulser.internal.intensity.", *it);
+            data.fIntensityLPext      = conf.GetDef<uint16_t>("light-pulser.external.intensity.", *it);
+            data.fTriggerInterval     = conf.GetDef<uint16_t>("trigger.sequence.interval.",          *it);
+            data.fMultiplicityPhysics = conf.GetDef<uint16_t>("trigger.multiplicity-physics.",       *it);
+            data.fMultiplicityCalib   = conf.GetDef<uint16_t>("trigger.multiplicity-calib.",         *it);
+            data.fWindowPhysics       = conf.GetDef<uint16_t>("trigger.coincidence-window-physics.", *it); /// (4ns * x + 8ns)
+            data.fWindowCalib         = conf.GetDef<uint16_t>("trigger.coincidence-window-calib.",   *it); /// (4ns * x + 8ns)
+            data.fDelayTrigger        = conf.GetDef<uint16_t>("trigger.delay.",              *it); /// (4ns * x + 8ns)
+            data.fDelayTimeMarker     = conf.GetDef<uint16_t>("trigger.time-marker-delay.",  *it); /// (4ns * x + 8ns)
+            data.fDeadTime            = conf.GetDef<uint16_t>("trigger.dead-time.",          *it); /// (4ns * x + 8ns)
+
+            data.SetPrescaling(conf.GetDef<uint16_t>("ftu-report-interval.", *it));
+
+            const uint16_t seqped = conf.GetDef<uint16_t>("trigger.sequence.pedestal.",  *it);
+            const uint16_t seqint = conf.GetDef<uint16_t>("trigger.sequence.lp-int.",    *it);
+            const uint16_t seqext = conf.GetDef<uint16_t>("trigger.sequence.lp-ext.",    *it);
+
+            data.SetSequence(seqped, seqint, seqext);
+
+            data.EnableAllFTU();
+            data.EnableAllPixel();
+
+            const vector<uint16_t> pat1 = conf.Vec<uint16_t>("trigger.disable-patch.default");
+            const vector<uint16_t> pat2 = conf.Vec<uint16_t>("trigger.disable-patch."+*it);
+
+            const vector<uint16_t> pix1 = conf.Vec<uint16_t>("trigger.disable-pixel.default");
+            const vector<uint16_t> pix2 = conf.Vec<uint16_t>("trigger.disable-pixel."+*it);
+
+            const vector<uint16_t> ftu1 = conf.Vec<uint16_t>("disable-ftu.default");
+            const vector<uint16_t> ftu2 = conf.Vec<uint16_t>("disable-ftu."+*it);
+
+            vector<uint16_t> ftu, pat, pix;
+            ftu.insert(ftu.end(), ftu1.begin(), ftu1.end());
+            ftu.insert(ftu.end(), ftu2.begin(), ftu2.end());
+            pat.insert(pat.end(), pat1.begin(), pat1.end());
+            pat.insert(pat.end(), pat2.begin(), pat2.end());
+            pix.insert(pix.end(), pix1.begin(), pix1.end());
+            pix.insert(pix.end(), pix2.begin(), pix2.end());
+
+            for (vector<uint16_t>::const_iterator ip=ftu.begin(); ip!=ftu.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPatchIdx)
+                {
+                    ostringstream str;
+                    str << "disable-ftu.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPatchIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.DisableFTU(*ip);
+            }
+            for (vector<uint16_t>::const_iterator ip=pat.begin(); ip!=pat.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPatchIdx)
+                {
+                    ostringstream str;
+                    str << "trigger.disable-patch.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPatchIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.EnablePatch(*ip, false);
+            }
+            for (vector<uint16_t>::const_iterator ip=pix.begin(); ip!=pix.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPixelIdx)
+                {
+                    ostringstream str;
+                    str << "trigger.disable-pixel.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPixelIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.EnablePixel(*ip, false);
+            }
+
+            const uint16_t th0 = conf.GetDef<uint16_t>("trigger.threshold.patch.", *it);
+            const uint16_t th1 = conf.GetDef<uint16_t>("trigger.threshold.logic.", *it);
+
+            for (int i=0; i<40; i++)
+            {
+                data[i].fDAC[0] = th0;
+                data[i].fDAC[1] = th0;
+                data[i].fDAC[2] = th0;
+                data[i].fDAC[3] = th0;
+                data[i].fDAC[4] = th1;
+            }
+
+            fConfigs[*it] = data;
+
+            // trigger.threshold.dac-0:
+
+            /*
+             threshold-A  data[n].fDAC[0] = val
+             threshold-B  data[n].fDAC[1] = val
+             threshold-C  data[n].fDAC[2] = val
+             threshold-D  data[n].fDAC[3] = val
+             threshold-H  data[n].fDAC[4] = val
+             */
+
+            // kMaxDAC = 0xfff,
+        }
+
+        // FIXME: Add a check about unsused configurations
+
+        // ---------- FOR TESTING PURPOSE ---------
+
+        //        fFTM.SetDefaultSetup(conf.Get<string>("default-setup"));
+        fConfigs["test"] = FTM::StaticData();
+
+        // ---------- Setup connection endpoint ---------
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFTM<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        var<string>("localhost:5000"),  "Network address of FTM")
+        ("quiet,q",       po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("hex-out",       po_bool(),  "Enable printing contents of all printed messages also as hex data.")
+        ("dynamic-out",   po_bool(),  "Enable printing received dynamic data.")
+//        ("default-setup", var<string>(), "Binary file with static data loaded whenever a connection to the FTM was established.")
+        ;
+
+    po::options_description freq("Sampling frequency setup");
+    freq.add_options()
+        ("clock-conditioner.frequency",  vars<uint16_t>(),      "Frequencies for which to setup the clock-conditioner (replace the * in the following options by this definition)")
+        ("clock-conditioner.R0.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R0")
+        ("clock-conditioner.R1.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R1")
+        ("clock-conditioner.R8.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R8")
+        ("clock-conditioner.R9.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R9")
+        ("clock-conditioner.R11.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R11")
+        ("clock-conditioner.R13.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R13")
+        ("clock-conditioner.R14.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R14")
+        ("clock-conditioner.R15.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R15");
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",                     vars<string>(),        "Name of run-types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("sampling-frequency.*",         var<uint16_t>(),       "Sampling frequency as defined in the clock-conditioner.frequency")
+        ("trigger.enable-trigger.*",             var<bool>(),   "Enable trigger output of physics trigger")
+        ("trigger.enable-external-1.*",          var<bool>(),   "Enable external trigger line 1")
+        ("trigger.enable-external-2.*",          var<bool>(),   "Enable external trigger line 2")
+        ("trigger.enable-veto.*",                var<bool>(),   "Enable veto line")
+        ("trigger.enable-clock-conditioner.*",   var<bool>(),   "")
+        ("trigger.sequence.interval.*",          var<uint16_t>(),  "Interval between two artifical triggers in units of ms")
+        ("trigger.sequence.pedestal.*",          var<uint16_t>(),  "Number of pedestal events in the sequence of artificial triggers")
+        ("trigger.sequence.lp-int.*",            var<uint16_t>(),  "Number of LPint events in the sequence of artificial triggers")
+        ("trigger.sequence.lp-ext.*",            var<uint16_t>(),  "Number of LPext events in the sequence of artificial triggers")
+        ("trigger.multiplicity-physics.*",       var<uint16_t>(),  "Multiplicity for physics events (n out of 40)")
+        ("trigger.multiplicity-calib.*",         var<uint16_t>(),  "Multiplicity for LPext events (n out of 40)")
+        ("trigger.coincidence-window-physics.*", var<uint16_t>(),  "Coincidence window for physics triggers in units of n*4ns+8ns")
+        ("trigger.coincidence-window-calib.*",   var<uint16_t>(),  "Coincidence window for LPext triggers in units of n*4ns+8ns")
+        ("trigger.dead-time.*",                  var<uint16_t>(),  "Dead time after trigger in units of n*4ns+8ns")
+        ("trigger.delay.*",                      var<uint16_t>(),  "Delay of the trigger send to the FAD boards after a trigger in units of n*4ns+8ns")
+        ("trigger.time-marker-delay.*",          var<uint16_t>(),  "Delay of the time-marker after a trigger in units of n*4ns+8ns")
+        ("trigger.disable-pixel.*",              vars<uint16_t>(), "")
+        ("trigger.disable-patch.*",              vars<uint16_t>(), "")
+        ("trigger.threshold.patch.*",            var<uint16_t>(),  "")
+        ("trigger.threshold.logic.*",            var<uint16_t>(),  "")
+        ("ftu-report-interval.*",                var<uint16_t>(),  "")
+        ("disable-ftu.*",                        vars<uint16_t>(), "")
+        ("light-pulser.external.enable-group1.*", var<bool>(),     "Enable LED group 1 of external light pulser")
+        ("light-pulser.external.enable-group2.*", var<bool>(),     "Enable LED group 2 of external light pulser")
+        ("light-pulser.internal.enable-group1.*", var<bool>(),     "Enable LED group 1 of internal light pulser")
+        ("light-pulser.internal.enable-group2.*", var<bool>(),     "Enable LED group 2 of internal light pulser")
+        ("light-pulser.external.intensity.*",     var<uint16_t>(), "Intensity of external light pulser")
+        ("light-pulser.internal.intensity.*",     var<uint16_t>(), "Intensity of internal light pulser")
+        ;
+
+    conf.AddOptions(control);
+    conf.AddOptions(freq);
+    conf.AddOptions(runtype);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ftmctrl controls the FTM (FACT Trigger Master) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: ftmctrl [-c type] [OPTIONS]\n"
+        "  or:  ftmctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionFTM>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimFTM>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFTM>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFTM>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimFTM>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimFTM>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/gcn.cc
===================================================================
--- branches/FACT++_part_filenames/src/gcn.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/gcn.cc	(revision 18732)
@@ -0,0 +1,649 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "../externals/nova.h"
+
+#include "HeadersGCN.h"
+
+#include <QtXml/QDomDocument>
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace GCN;
+
+// ------------------------------------------------------------------------
+
+class ConnectionGCN : public Connection
+{
+private:
+    map<uint16_t, GCN::PaketType_t> fTypes;
+
+    vector<string> fEndPoints;
+    int fEndPoint;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    uint32_t     fRxSize;
+    vector<char> fRxData;
+
+    Time fLastKeepAlive;
+
+    GCN::PaketType_t GetType(const QDomElement &what)
+    {
+        const QDomNodeList param = what.elementsByTagName("Param");
+        for (int i=0; i<param.count(); i++)
+        {
+            const QDomElement elem = param.at(i).toElement();
+            if (elem.attribute("name").toStdString()!="Packet_Type")
+                continue;
+
+            const uint16_t val = elem.attribute("value").toUInt();
+            const auto it = fTypes.find(val);
+            if (it!=fTypes.end())
+                return it->second;
+
+            Warn("Unknown paket type "+to_string(val)+".");
+        }
+
+        return { -1, "", "" };
+    }
+
+
+    int ProcessXml(const QDomElement &root)
+    {
+        if (root.isNull())
+            return -1;
+
+        const string role = root.attribute("role", "").toStdString();
+        const string name = root.tagName().toStdString();
+
+        // A full description can be found at http://voevent.dc3.com/schema/default.html
+
+        if (name=="trn:Transport")
+        {
+            if (role=="iamalive")
+            {
+                const QDomElement orig = root.firstChildElement("Origin");
+                const QDomElement time = root.firstChildElement("TimeStamp");
+                if (orig.isNull() || time.isNull())
+                    return -1;
+
+                fLastKeepAlive = Time(time.text().toStdString());
+
+                if (fIsVerbose)
+                {
+                    Out() << Time().GetAsStr() << " ----- " << name << " [" << role << "] -----" << endl;
+                    Out() << " " << time.tagName().toStdString() << " = " << fLastKeepAlive.GetAsStr() << '\n';
+                    Out() << " " << orig.tagName().toStdString() << " = " << orig.text().toStdString() << '\n';
+                    Out() << endl;
+                }
+
+                return true;
+            }
+
+            return false;
+        }
+
+        ofstream fout("gcn.stream", ios::app);
+        fout << "------------------------------------------------------------------------------\n" << fRxData.data() << endl;
+
+        if (name=="voe:VOEvent")
+        {
+            // WHAT: http://gcn.gsfc.nasa.gov/tech_describe.html
+            const QDomElement who  = root.firstChildElement("Who");
+            const QDomElement what = root.firstChildElement("What");
+            const QDomElement when = root.firstChildElement("WhereWhen");
+            //const QDomElement how  = root.firstChildElement("How");
+            //const QDomElement why  = root.firstChildElement("Why");
+            //const QDomElement cite = root.firstChildElement("Citations");
+            //const QDomElement desc = root.firstChildElement("Description");
+            //const QDomElement ref  = root.firstChildElement("Reference");
+            if (who.isNull() || what.isNull() || when.isNull())
+                return -1;
+
+            const QDomElement date   = who.firstChildElement("Date");
+            const QDomElement author = who.firstChildElement("Author");
+            const QDomElement sname  = author.firstChildElement("shortName");
+            const QDomElement desc   = what.firstChildElement("Description");
+
+            const QDomElement obsdat = when.firstChildElement("ObsDataLocation");
+            const QDomElement obsloc = obsdat.firstChildElement("ObservationLocation");
+            const QDomElement coord  = obsloc.firstChildElement("AstroCoords");
+
+            const QDomElement time   = coord.firstChildElement("Time").firstChildElement("TimeInstant").firstChildElement("ISOTime");
+            const QDomElement pos2d  = coord.firstChildElement("Position2D");
+            const QDomElement name1  = pos2d.firstChildElement("Name1");
+            const QDomElement name2  = pos2d.firstChildElement("Name2");
+            const QDomElement val2   = pos2d.firstChildElement("Value2");
+            const QDomElement c1     = val2.firstChildElement("C1");
+            const QDomElement c2     = val2.firstChildElement("C2");
+            const QDomElement errad  = pos2d.firstChildElement("Error2Radius");
+
+            if (date.isNull()   || author.isNull() || sname.isNull() || desc.isNull() ||
+                obsdat.isNull() || obsloc.isNull() || coord.isNull() || time.isNull() ||
+                pos2d.isNull()  || name1.isNull()  || name2.isNull() || val2.isNull() ||
+                c1.isNull()     || c2.isNull()     || errad.isNull())
+                return -1;
+
+            const GCN::PaketType_t ptype = GetType(what);
+
+            //  59/31: Konus LC / IPN raw         [observation]
+            //   110:  Fermi GBM (ART)            [observation]  (Initial)       // Stop data taking
+            //   111:  Fermi GBM (FLT)            [observation]  (after ~2s)     // Start pointing/run
+            //   112:  Fermi GBM (GND)            [observation]  (after 2-20s)   // Refine pointing
+            //   115:  Fermi GBM position         [observation]  (final ~hours)
+            //
+            //    51:  Intergal pointdir              [utility]
+            //    83:  Swift pointdir                 [utility]
+            //   129:  Fermi pointdir                 [utility]
+            //
+            //     2:  Test coord             (      1)  [test]
+            //    44:  HETE test              ( 41- 43)  [test]
+            //    52:  Integral SPIACS                   [test]
+            //    53:  Integral Wakeup                   [test]
+            //    54:  Integral refined                  [test]
+            //    55:  Integral Offline                  [test]
+            //    56:  Integral Weak                     [test]
+            //    82:  BAT   GRB pos test     (     61)  [test]
+            //   109:  AGILE GRB pos test     (100-103)  [test]
+            //   119:  Fermi GRB pos test     (111-113)  [test]
+            //   124:  Fermi LAT pos upd test (120-122)  [test]
+            //   136:  MAXI coord test        (    134)  [test]
+            //
+            // Integral: RA=1.2343, Dec=2.3456
+            //
+
+            /*
+             54
+             ==
+             <Group name="Test_mpos" >
+               <Param name="Test_Notice"              value="true" />
+             </Group>
+
+
+             82
+             ==
+             <Group name="Solution_Status" >
+               <Param name="Test_Submission"          value="false" />
+             </Group>
+
+
+             115
+             ===
+             2013-07-20 19:04:13: TIME = 2013-07-20 02:46:40
+
+             <Group name="Trigger_ID" >
+               <Param name="Test_Submission"       value="false" />
+             </Group>
+             */
+
+            const string unit = pos2d.attribute("unit").toStdString();
+
+            const double ra  = c1.text().toDouble();
+            const double dec = c2.text().toDouble();
+            const double err = errad.text().toDouble();
+
+            const string n1 = name1.text().toStdString();
+            const string n2 = name2.text().toStdString();
+
+            Out() << Time(date.text().toStdString()).GetAsStr() << " ----- " << sname.text().toStdString() << " [" << role << "]\n";
+            Out() << "[" << desc.text().toStdString()  << "]\n";
+            Out() << ptype.name << "[" << ptype.type << "]: " << ptype.description << endl;
+            Out() << left;
+            Out() << "  " << setw(5) << "TIME" << "= " << Time(time.text().toStdString()).GetAsStr() << '\n';
+            Out() << "  " << setw(5) << n1     << "= " << ra  << unit << '\n';
+            Out() << "  " << setw(5) << n2     << "= " << dec << unit << '\n';
+            Out() << "  " << setw(5) << "ERR"  << "= " << err << unit << '\n';
+
+            if (n1=="RA" && n2=="Dec" && unit=="deg")
+            {
+                const double jd = Time().JD();
+
+                Nova::EquPosn equ;
+                equ.ra  = ra;
+                equ.dec = dec; 
+
+                const Nova::ZdAzPosn pos = Nova::GetHrzFromEqu(equ, jd);
+                const Nova::EquPosn moon = Nova::GetLunarEquCoords(jd);
+                const Nova::ZdAzPosn sun = Nova::GetHrzFromEqu(Nova::GetSolarEquCoords(jd), jd);
+
+                const double disk = Nova::GetLunarDisk(jd);
+                const double dist = Nova::GetAngularSeparation(equ, moon);
+
+                Out() << "  " << setw(5) << "ZD"   << "= " << pos.zd << "deg\n";
+                Out() << "  " << setw(5) << "Az"   << "= " << pos.az << "deg\n";
+
+                Out() << "  " << setw(5) << "MOON" << "= " << int(disk*100) << "%\n";
+                Out() << "  " << setw(5) << "DIST" << "= " << dist << "deg\n";
+
+                if (dist>10 && dist<170 && pos.zd<80 && sun.zd>108)
+                {
+                    Out() << "  visible ";
+                    if (pos.zd<70)
+                        Out() << '+';
+                    if (pos.zd<60)
+                        Out() << '+';
+                    if (pos.zd<45)
+                        Out() << '+';
+                    Out() << '\n';
+                }
+            }
+
+            Out() << endl;
+
+            if (role=="observation")
+            {
+                return true;
+            }
+
+            if (role=="test")
+            {
+                return true;
+            }
+
+            if (role=="retraction")
+            {
+                return true;
+            }
+
+            if (role=="utility")
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        Out() << Time().GetAsStr() << " ----- " << name << " [" << role << "] -----" << endl;
+
+        return false;
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int type)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (GCN).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        if (type==0)
+        {
+            fRxSize = ntohl(fRxSize);
+            fRxData.assign(fRxSize+1, 0);
+            ba::async_read(*this, ba::buffer(fRxData, fRxSize),
+                             boost::bind(&ConnectionGCN::HandleReceivedData, this,
+                                         dummy::error, dummy::bytes_transferred, 1));
+            return;
+        }
+
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------\n";
+            Out() << fRxData.data() << '\n';
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRxData.data()), false))
+        {
+            Warn("Parsing of xml failed [0].");
+            PostClose(false);
+            return;
+        }
+
+        if (fDebugRx)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const int rc = ProcessXml(doc.documentElement());
+        if (rc<0)
+        {
+            Warn("Parsing of xml failed [1].");
+            PostClose(false);
+            return;
+        }
+
+        if (!rc)
+        {
+            Out() << "------------------------------------------------------\n";
+            Out() << doc.toString().toStdString() << '\n';
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        StartRead();
+    }
+
+    void StartRead()
+    {
+        ba::async_read(*this, ba::buffer(&fRxSize, 4),
+                       boost::bind(&ConnectionGCN::HandleReceivedData, this,
+                                   dummy::error, dummy::bytes_transferred, 0));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        StartRead();
+    }
+
+public:
+    ConnectionGCN(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(false), fDebugRx(false), fLastKeepAlive(Time::none)
+    {
+        SetLogStream(&imp);
+
+        for (auto it=GCN::kTypes; it->type>0; it++)
+            fTypes[it->type] = *it;
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetEndPoints(const vector<string> &v)
+    {
+        fEndPoints = v;
+        fEndPoint = 0;
+    }
+
+    void StartConnect()
+    {
+        if (fEndPoints.size()>0)
+            SetEndpoint(fEndPoints[fEndPoint++%fEndPoints.size()]);
+        Connection::StartConnect();
+    }
+
+    bool IsValid()
+    {
+        return fLastKeepAlive.IsValid() ? Time()-fLastKeepAlive<boost::posix_time::minutes(2) : false;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimGCN : public ConnectionGCN
+{
+private:
+
+public:
+    ConnectionDimGCN(ba::io_service& ioservice, MessageImp &imp) : ConnectionGCN(ioservice, imp)
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineGCN : public StateMachineAsio<T>
+{
+private:
+    S fGCN;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fGCN.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fGCN.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fGCN.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fGCN.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        if (!fGCN.IsConnected())
+            return State::kDisconnected;
+
+        return fGCN.IsValid() ? State::kValid : State::kConnected;
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fGCN.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fGCN.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineGCN(ostream &out=cout) :
+        StateMachineAsio<T>(out, "GCN"), fGCN(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "No connection to GCN.");
+        T::AddStateName(State::kConnected, "Connected",
+                     "Connection to GCN established.");
+        T::AddStateName(State::kValid, "Valid",
+                     "Connection valid (keep alive received within past 2min)");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineGCN::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachineGCN::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineGCN::Disconnect, this))
+            ("disconnect from ethernet");
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineGCN::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fGCN.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        vector<string> v;
+        v.push_back(url);
+        fGCN.SetEndPoints(v);
+    }
+
+    vector<string> fEndPoints;
+
+    int EvalOptions(Configuration &conf)
+    {
+        fGCN.SetVerbose(!conf.Get<bool>("quiet"));
+        fGCN.SetEndPoints(conf.Vec<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineGCN<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FTM control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        vars<string>(),  "Network addresses of GCN server")
+        ("quiet,q",       po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The gcn reads and evaluates alerts from the GCN network.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: gcn [-c type] [OPTIONS]\n"
+        "  or:  gcn [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineGCN<StateMachine, ConnectionGCN>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionGCN>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimGCN>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionGCN>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionGCN>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimGCN>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimGCN>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/getevent.cc
===================================================================
--- branches/FACT++_part_filenames/src/getevent.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/getevent.cc	(revision 18732)
@@ -0,0 +1,256 @@
+#include <valarray>
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "externals/zfits.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Program options");
+    control.add_options()
+        ("target,t", var<string>()->required(),  "")
+        ("event,e",  var<uint32_t>(), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("target", 1); // The first positional options
+    p.add("event",  2); // The second positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "Retrieve an event from a file in binary representation.\n"
+        "\n"
+        "Usage: getevent [-c type] [OPTIONS]\n"
+        "  or:  getevent [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    //Main::PrintHelp<StateMachineEventServer>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+/*
+boost::filesystem::recursive_directory_iterator createRIterator(boost::filesystem::path path)
+{
+    try
+    {
+        return boost::filesystem::recursive_directory_iterator(path);
+    }
+    catch(boost::filesystem::filesystem_error& fex)
+    {
+        std::cout << fex.what() << std::endl;
+        return boost::filesystem::recursive_directory_iterator();
+    }
+}
+
+void dump(boost::filesystem::path path, int level)
+{
+    try
+    {
+        std::cout << (boost::filesystem::is_directory(path) ? 'D' : ' ') << ' ';
+        std::cout << (boost::filesystem::is_symlink(path) ? 'L' : ' ') << ' ';
+
+        for(int i = 0; i < level; ++i)
+            std::cout << ' ';
+
+        std::cout << path.filename() << std::endl;
+    }
+    catch(boost::filesystem::filesystem_error& fex)
+    {
+        std::cout << fex.what() << std::endl;
+    }
+}
+
+void plainListTree(boost::filesystem::path path) // 1.
+{
+    dump(path, 0);
+ 
+    boost::filesystem::recursive_directory_iterator it = createRIterator(path);
+    boost::filesystem::recursive_directory_iterator end;
+ 
+    while(it != end) // 2.
+    {
+        dump(*it, it.level()); // 3.
+ 
+        if (boost::filesystem::is_directory(*it) && boost::filesystem::is_symlink(*it)) // 4.
+            it.no_push();
+ 
+        try
+        {
+            ++it; // 5.
+        }
+        catch(std::exception& ex)
+        {
+            std::cout << ex.what() << std::endl;
+            it.no_push(); // 6.
+            try { ++it; } catch(...) { std::cout << "!!" << std::endl; return; } // 7.
+        }
+    }
+}
+*/
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    const string name = conf.Get<string>("target");
+/*
+    if (!conf.Has("event"))
+    {
+        plainListTree(name);
+        return 0;
+    }
+*/
+    const uint32_t event = conf.Has("event") ? conf.Get<uint32_t>("event") : 0;
+
+    zfits file(name);
+    if (!file)
+    {
+        cerr << name << ": " <<  strerror(errno) << endl;
+        return 1;
+    }
+
+    // Php can only read 32bit ints
+    const uint32_t nRows = file.GetNumRows();
+
+    const uint32_t nRoi = file.GetUInt("NROI");
+    const uint32_t nPix = file.GetUInt("NPIX");
+
+    const bool     isMC = file.HasKey("ISMC") && file.GetStr("ISMC")=="T";
+
+    // Is drs calibration file?
+    const int8_t step = file.HasKey("STEP") ? file.GetUInt("STEP") : -1;
+
+    const string strbeg = isMC ? "DATE" : "RUN"+to_string(step)+"-BEG";
+    const string strend = isMC ? "DATE" : "RUN"+to_string(step)+"-END";
+
+    const double start = step==-1 && !isMC ? file.GetUInt("TSTARTI")+file.GetFloat("TSTARTF") : Time(file.GetStr(strbeg)).UnixDate();
+    const double stop  = step==-1 && !isMC ? file.GetUInt("TSTOPI")+file.GetFloat("TSTOPF")   : Time(file.GetStr(strend)).UnixDate();
+
+    const bool     isDrsCalib = file.HasKey("DRSCALIB") &&  file.GetStr("DRSCALIB")=="T";
+    const int16_t  drsStep    = isDrsCalib ? file.GetUInt("DRSSTEP") : step;
+    const string   runType    = step==-1 ? file.GetStr("RUNTYPE") : "";
+    const uint16_t scale      = file.HasKey("SCALE") ? file.GetUInt("SCALE") : (step==-1?0:10);
+
+    vector<char>     run(80);
+    vector<int16_t>  data(nRoi*nPix);
+    vector<float>    mean(nRoi*nPix);
+    vector<uint32_t> unixTimeUTC(2);
+
+    //uint32_t boardTime[40];
+    uint32_t eventNum;
+    //uint32_t numBoards;
+    //uint16_t startCellData[1440];
+    //uint16_t startCellTimeMarker[160];
+    //uint32_t triggerNum;
+    uint16_t triggerType;
+
+    if (step==-1)
+    {
+        file.SetRefAddress("EventNum", eventNum);
+        //file.SetRefAddress("TriggerNum", triggerNum);
+        file.SetRefAddress("TriggerType", triggerType);
+        if (!isMC)
+            file.SetVecAddress("UnixTimeUTC", unixTimeUTC);
+    }
+
+    float energy, impact, phi, theta;
+    if (isMC)
+    {
+        file.SetRefAddress("MMcEvtBasic.fEnergy", energy);
+        file.SetRefAddress("MMcEvtBasic.fImpact", impact);
+        file.SetRefAddress("MMcEvtBasic.fTelescopeTheta", theta);
+        file.SetRefAddress("MMcEvtBasic.fTelescopePhi", phi);
+    }
+
+    switch (step)
+    {
+    case 0:  file.SetVecAddress("BaselineMean",      mean); strcpy( run.data(), "DRS (pedestal 1024)"); break;
+    case 1:  file.SetVecAddress("GainMean",          mean); strcpy( run.data(), "DRS (gain)");          break;
+    case 2:  file.SetVecAddress("TriggerOffsetMean", mean); strcpy( run.data(), "DRS (pedestal roi)");  break;
+    default: file.SetVecAddress("Data",              data); strncpy(run.data(), runType.c_str(), 79);   break;
+    }
+
+    if (!file.GetRow(step==-1 ? event : 0))
+        return 2;
+
+    if (step!=-1)
+        for (uint32_t i=0; i<nRoi*nPix; i++)
+            data[i] = round(mean[i]*10);
+
+    cout.write(run.data(),                80);
+    cout.write((char*)&start,             sizeof(double));
+    cout.write((char*)&stop,              sizeof(double));
+    cout.write((char*)&drsStep,           sizeof(drsStep));
+    cout.write((char*)&nRows,             sizeof(nRows));
+    cout.write((char*)&scale,             sizeof(scale));
+
+    cout.write((char*)&nRoi,              sizeof(nRoi));
+    cout.write((char*)&nPix,              sizeof(nPix));
+    cout.write((char*)&eventNum,          sizeof(eventNum));
+    //cout.write((char*)&triggerNum,        sizeof(triggerNum));
+    cout.write((char*)&triggerType,       sizeof(triggerType));
+    cout.write((char*)unixTimeUTC.data(), sizeof(uint32_t)*2);
+    cout.write((char*)data.data(),        sizeof(int16_t)*nRoi*nPix);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/gpsctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/gpsctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/gpsctrl.cc	(revision 18732)
@@ -0,0 +1,597 @@
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersGPS.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionGPS : public Connection
+{
+protected:
+    virtual void Update(const GPS::NEMA &)
+    {
+    }
+
+private:
+    bool fIsVerbose;
+
+    Time fLastReport;
+
+    int fState;
+
+    float ConvLngLat(const string &l) const
+    {
+        const double   lf = stof(l);
+        const uint32_t li = stoi(l);
+
+        const double min = fmod(lf, 100);
+        const double deg = li/100;
+
+        return deg + min/60;
+    }
+
+    float ConvTm(const string &t) const
+    {
+        const double   tf = stof(t);
+        const uint32_t ti = stoi(t);
+
+        const double h = ti/10000;
+        const double m = (ti/100)%100;
+        const double s = fmod(tf, 100);
+
+        return h/24 + m/1440 + s/86400;
+    }
+
+    bool ParseAnswer(const string &buffer)
+    {
+        if (buffer=="Invalid command, type help")
+        {
+            Error("Command was ignored by GPS.");
+            return false;
+        }
+
+        // answer to get_status or veto_[on|off|60]
+        if (buffer=="veto_60" || buffer=="veto 60 now on")
+        {
+            if (fState!=GPS::State::kLocked)
+                fState = GPS::State::kEnabled;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }
+        if (buffer=="veto_on" || buffer=="veto now on")
+        {
+            fState = GPS::State::kDisabled;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }
+        /*
+        if (buffer=="veto_off" || buffer=="veto now off")
+        {
+            fState = GPS::State::kVetoOff;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }*/
+
+        // answer to get_nema
+        if (buffer[0]=='$')
+        {
+            /*
+             1    = UTC of Position
+             2    = Latitude
+             3    = N or S
+             4    = Longitude
+             5    = E or W
+             6    = GPS quality indicator (0=invalid; 1=GPS fix;
+                    2=Diff. GPS fix)
+             7    = Number of satellites in use [not those in view]
+             8    = Horizontal dilution of position
+             9    = Antenna altitude above/below mean sea level (geoid)
+             10   = Meters  (Antenna height unit)
+             11   = Geoidal separation (Diff. between WGS-84 earth ellipsoid
+                    and mean sea level.  -=geoid is below WGS-84 ellipsoid)
+             12   = Meters  (Units of geoidal separation)
+             13   = Age in seconds since last update from diff.
+                    reference station
+             14   = Diff. reference station ID#
+             */
+
+            const vector<string> cs = Tools::Split(buffer, "$*");
+            if (cs.size()!=3)
+                throw runtime_error("syntax error");
+
+            // check checksum
+            uint8_t c = cs[1][0];
+            for (size_t i=1; i<cs[1].size(); i++)
+                c ^= cs[1][i];
+
+            stringstream ss;
+            ss << std::hex << cs[2];
+
+            unsigned int x;
+            ss >> x;
+
+            if (x!=c)
+                throw runtime_error("checksum error");
+
+            // interpret contents
+            const vector<string> dat = Tools::Split(cs[1], ",");
+            if (dat.size()!=15)
+                throw runtime_error("size mismatch");
+            if (dat[0]!="GPGGA")
+                throw runtime_error("type mismatch");
+            if (dat[5]!="W" && dat[5]!="E")
+                throw runtime_error("longitude type unknown");
+            if (dat[10]!="M")
+                throw runtime_error("height unit unknown");
+            if (dat[12]!="M")
+                throw runtime_error("hdop unit unknown");
+            if (!dat[13].empty())
+                throw runtime_error("unexpected data at position 13");
+            if (dat[14]!="0000")
+                throw runtime_error("unexpected data at position 14");
+
+            GPS::NEMA nema;
+            nema.time   = ConvTm(dat[1]);
+            nema.lat    = dat[3]=="N" ? ConvLngLat(dat[2]) : -ConvLngLat(dat[3]);
+            nema.lng    = dat[5]=="W" ? ConvLngLat(dat[4]) : -ConvLngLat(dat[4]);
+            nema.qos    = stoi(dat[6]);
+            nema.count  = stoi(dat[7]);
+            nema.hdop   = stof(dat[8]);
+            nema.height = stof(dat[9]);
+            nema.geosep = stof(dat[11]);
+
+            if (fabs(nema.time-fmod(Time().Mjd(), 1))*24*3600>5)
+            {
+                Error("Time mismatch: GPS time deviates from PC time by more than 5s");
+                return false;
+            }
+
+            if (fState>=GPS::State::kEnabled)
+                fState = nema.qos==1 ? GPS::State::kLocked : GPS::State::kEnabled;
+
+            Update(nema);
+
+            return true;
+        }
+
+        return false;
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string buffer;
+        if (!getline(is, buffer, '\n'))
+        {
+            Error("Received message does not contain \\n... closing connection.");
+            PostClose(false);
+            return;
+        }
+        buffer = buffer.substr(0, buffer.size()-1);
+
+        if (fIsVerbose)
+            Out() << buffer << endl;
+
+        try
+        {
+            if (!ParseAnswer(buffer))
+            {
+                Error("Received: "+buffer);
+                PostClose(false);
+                return;
+            }
+        }
+        catch (const exception &e)
+        {
+            Error("Parsing NEMA message failed ["+string(e.what())+"]");
+            Error("Received: "+buffer);
+            PostClose(false);
+            return;
+        }
+
+        fLastReport = Time();
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_until(*this, fBuffer, '\n',
+                         boost::bind(&ConnectionGPS::HandleRead, this,
+                                     dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        PostMessage(string("get_status\r\n"), 12);
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fState = GPS::State::kConnected;
+
+        StartReadReport();
+        Request(true);
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionGPS(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void Request(bool immediate=false)
+    {
+        double mjd = Time().Mjd();
+
+        if (!immediate)
+            mjd = (ceil(mjd*24*60+0.01)+0.5)/(24*60);
+
+        fKeepAlive.expires_at(Time(mjd));
+        fKeepAlive.async_wait(boost::bind(&ConnectionGPS::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetState() const
+    {
+        if (!IsConnected())
+            return GPS::State::kDisconnected;
+
+        if (fState!=GPS::State::kConnected && fLastReport+boost::posix_time::seconds(105) < Time())
+            return StateMachineImp::kSM_Error;
+
+        return fState;
+    }
+};
+
+const uint16_t ConnectionGPS::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionGPS
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionGPS(ioservice, imp),
+        fDim("GPS_CONTROL/NEMA", "F:1;F:1;F:1;F:1;F:1;F:1;S:1;S:1",
+             "NEMA message from the GPS module"
+             "|time[utc]:Time of day as fraction of day (UTC)"
+             "|lat[deg]:Latitude"
+             "|long[deg]:Longitude"
+             "|hdop:Horizontal delution of precision"
+             "|height[m]:Antenna altitude above mean sea level (geoid)"
+             "|geosep[m]:Geoidal sep.(Diff. between WGS-84 earth ellipsoid and mean sea lvl)"
+             "|count:Number of satellites in use (not those in view)"
+             "|quality:GPS quality indicator (see Venus manual)")
+    {
+    }
+    void Update(const GPS::NEMA &nema)
+    {
+        fDim.Update(nema);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineGPSControl : public StateMachineAsio<T>
+{
+private:
+    S fGPS;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fGPS.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fGPS.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fGPS.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fGPS.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fGPS.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Send(const string &cmd)
+    {
+        const string tx = cmd+"\r\n";
+        fGPS.PostMessage(tx, tx.size());
+        return T::GetCurrentState();
+    }
+
+    int SendCommand(const EventImp &evt)
+    {
+        return Send(evt.GetString());
+    }
+
+    int Execute()
+    {
+        return fGPS.GetState();
+    }
+
+
+public:
+    StateMachineGPSControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "GPS_CONTROL"), fGPS(*this, *this)
+    {
+        // State names
+        T::AddStateName(GPS::State::kDisconnected, "Disconnected",
+                        "No connection to web-server could be established recently");
+
+        T::AddStateName(GPS::State::kConnected, "Connected",
+                        "Connection established, but status still not known");
+
+        T::AddStateName(GPS::State::kDisabled, "Disabled",
+                        "Veto is on, no trigger will be emitted");
+
+        T::AddStateName(GPS::State::kEnabled, "Enabled",
+                        "System enabled, waiting for satellites");
+
+        T::AddStateName(GPS::State::kLocked, "Locked",
+                        "One trigger per second will be send, but the one at the exact minute is vetoed");
+
+        // Commands
+        T::AddEvent("SEND_COMMAND", "C")
+            (bind(&StateMachineGPSControl::SendCommand, this, placeholders::_1))
+            ("Send command to GPS");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineGPSControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("ENABLE")
+            (bind(&StateMachineGPSControl::Send, this, "veto_60"))
+            ("Enable trigger signal once a second vetoed at every exact minute");
+
+        T::AddEvent("DISABLE")
+            (bind(&StateMachineGPSControl::Send, this, "veto_on"))
+            ("Diable trigger output");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachineGPSControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachineGPSControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to GPS, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fGPS.SetVerbose(!conf.Get<bool>("quiet"));
+        fGPS.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fGPS.SetEndpoint(conf.Get<string>("addr"));
+        fGPS.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineGPSControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("GPS control");
+    control.add_options()
+        ("no-dim,d", po_switch(), "Disable dim services")
+        ("addr,a",   var<string>("gps:23"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The gpsctrl is an interface to the GPS hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: gpsctrl [-c type] [OPTIONS]\n"
+        "  or:  gpsctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionGPS>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionGPS>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionGPS>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/lidctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/lidctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/lidctrl.cc	(revision 18732)
@@ -0,0 +1,764 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include <QtXml/QDomDocument>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersLid.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionLid : public Connection
+{
+protected:
+
+    struct Lid
+    {
+        int id;
+
+        float position;
+        float current;
+        string status;
+
+        Lid(int i) : id(i) { }
+
+        bool Set(const QDomNamedNodeMap &map)
+        {
+            if (!map.contains("id") || !map.contains("value"))
+                return false;
+
+            QString item  = map.namedItem("id").nodeValue();
+            QString value = map.namedItem("value").nodeValue();
+
+            const char c = '0'+id;
+
+            if (item==(QString("cur")+c))
+            {
+                current = value.toFloat();
+                return true;
+            }
+
+            if (item==(QString("pos")+c))
+            {
+                position = value.toFloat();
+                return true;
+            }
+
+            if (item==(QString("lid")+c))
+            {
+                status = value.toStdString();
+                return true;
+            }
+
+            return false;
+        }
+
+        void Print(ostream &out)
+        {
+            out << "Lid" << id << " @ " << position << " / " << current << "A [" << status << "]" << endl;
+        }
+
+    };
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    Lid fLid1;
+    Lid fLid2;
+
+    virtual void Update(const Lid &, const Lid &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fIsVerbose)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        fRdfData.insert(0, "<?xml version=\"1.0\"?>\n");
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRdfData.c_str()), false))
+        {
+            Warn("Parsing of html failed.");
+            return;
+        }
+
+        if (fIsVerbose)
+        {
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const QDomNodeList imageElems = doc.elementsByTagName("span"); // "input"
+
+        /*
+        // elementById
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            QDomElement e = imageElems.item(i).toElement();
+            Out() << "<" << e.tagName().toStdString() << " ";
+
+            QDomNamedNodeMap att = e.attributes();
+
+            for (int j=0; j<att.size(); j++)
+            {
+                Out() << att.item(j).nodeName().toStdString() << "=";
+                Out() << att.item(j).nodeValue().toStdString() << " ";
+            }
+            Out() << "> " << e.text().toStdString() << endl;
+        }*/
+
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            const QDomElement e = imageElems.item(i).toElement();
+
+            const QDomNamedNodeMap att = e.attributes();
+
+            fLid1.Set(att);
+            fLid2.Set(att);
+        }
+
+        if (fIsVerbose)
+        {
+            fLid1.Print(Out());
+            fLid2.Print(Out());
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        Update(fLid1, fLid2);
+
+        fRdfData = "";
+
+        if ((fLid1.status!="Open" && fLid1.status!="Closed" && fLid1.status!="Power Problem" && fLid1.status!="Unknown" && fLid1.status!="Overcurrent") ||
+            (fLid2.status!="Open" && fLid2.status!="Closed" && fLid2.status!="Power Problem" && fLid2.status!="Unknown" && fLid1.status!="Overcurrent"))
+            Warn("Lid reported status unknown by lidctrl ("+fLid1.status+"/"+fLid2.status+")");
+
+        fLastReport = Time();
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                //Warn("Connection closed by remote host.");
+                ProcessAnswer();
+                PostClose(false);
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        //cout << "." << flush;
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+            {
+                ProcessAnswer();
+            }
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionLid::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest(string cmd, const string &args="")
+    {
+        cmd += " "+fSite+" HTTP/1.1\r\n"
+            //"Connection: Keep-Alive\r\n"
+            ;
+
+        ostringstream msg;
+        msg << args.length();
+
+        cmd += "Content-Length: ";
+        cmd += msg.str();
+        cmd +="\r\n";
+
+        if (args.length()>0)
+            cmd += "\r\n"+args + "\r\n";
+
+        cmd += "\r\n";
+
+        //cout << "Post: " << cmd << endl;
+        PostMessage(cmd);
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+    void ConnectionFailed()
+    {
+        StartConnect();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionLid(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none),
+        fLid1(1), fLid2(2), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+
+        fLid1.status = "";
+        fLid2.status = "";
+        //PostRequest("POST", post);
+    }
+
+    void Request()
+    {
+        PostRequest("POST", fNextCommand);
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionLid::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        using namespace Lid;
+
+        // Timeout
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)<Time())
+            return State::kDisconnected;
+
+        // Unidentified state detected
+        if ((!fLid1.status.empty() && fLid1.status!="Open" && fLid1.status!="Closed" && fLid1.status!="Power Problem" && fLid1.status!="Unknown" && fLid1.status!="Overcurrent") ||
+            (!fLid2.status.empty() && fLid2.status!="Open" && fLid2.status!="Closed" && fLid2.status!="Power Problem" && fLid2.status!="Unknown" && fLid2.status!="Overcurrent"))
+            return State::kUnidentified;
+
+        // This is an assumption, but the best we have...
+        if (fLid1.status=="Closed" && fLid2.status=="Power Problem")
+            return State::kClosed;
+        if (fLid2.status=="Closed" && fLid1.status=="Power Problem")
+            return State::kClosed;
+        if (fLid1.status=="Open" && fLid2.status=="Power Problem")
+            return State::kOpen;
+        if (fLid2.status=="Open" && fLid1.status=="Power Problem")
+            return State::kOpen;
+
+        // Inconsistency
+        if (fLid1.status!=fLid2.status)
+            return State::kInconsistent;
+
+        // Unknown
+        if (fLid1.status=="Unknown")
+            return State::kUnknown;
+
+        // Power Problem
+        if (fLid1.status=="Power Problem")
+            return State::kPowerProblem;
+
+        // Overcurrent
+        if (fLid1.status=="Overcurrent")
+            return State::kOvercurrent;
+
+        // Closed
+        if (fLid1.status=="Closed")
+            return State::kClosed;
+
+        // Open
+        if (fLid1.status=="Open")
+            return State::kOpen;
+
+        return State::kConnected;
+    }
+};
+
+const uint16_t ConnectionLid::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionLid
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionLid(ioservice, imp),
+        fDim("LID_CONTROL/DATA", "S:2;F:2;F:2",
+             "|status[bool]:Lid1/2 open or closed"
+             "|I[A]:Lid1/2 current"
+             "|P[dac]:Lid1/2 hall sensor position in averaged dac counts")
+    {
+    }
+
+    void Update(const Lid &l1, const Lid &l2)
+    {
+        struct DimData
+        {
+            int16_t status[2];
+            float   current[2];
+            float   position[2];
+
+            DimData() { status[0] = status[1] = -1; }
+
+        } __attribute__((__packed__));
+
+        DimData data;
+
+        if (l1.status=="Unknown")
+            data.status[0] = 3;
+        if (l1.status=="Power Problem")
+            data.status[0] = 2;
+        if (l1.status=="Open")
+            data.status[0] = 1;
+        if (l1.status=="Closed")
+            data.status[0] = 0;
+
+        if (l2.status=="Unknown")
+            data.status[1] = 3;
+        if (l2.status=="Power Problem")
+            data.status[1] = 2;
+        if (l2.status=="Open")
+            data.status[1] = 1;
+        if (l2.status=="Closed")
+            data.status[1] = 0;
+
+        data.current[0]  = l1.current;
+        data.current[1]  = l2.current;
+
+        data.position[0] = l1.position;
+        data.position[1] = l2.position;
+
+        fDim.setQuality(GetState());
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineLidControl : public StateMachineAsio<T>
+{
+private:
+    S fLid;
+    Time fLastCommand;
+    Time fSunRise;
+
+    uint16_t fTimeToMove;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fLid.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Post(const EventImp &evt)
+    {
+        fLid.Post(evt.GetText());
+        return T::GetCurrentState();
+    }
+
+    int Open()
+    {
+        fLastCommand = Time();
+        fLid.Post("Button5=");
+        return Lid::State::kMoving;
+    }
+    int Close()
+    {
+        fLastCommand = Time();
+        fLid.Post("Button6=");
+        return Lid::State::kMoving;
+
+    }
+    /*
+    int MoveMotor(const EventImp &evt, int mid)
+    {
+        if (!CheckEventSize(evt.GetSize(), "MoveMotor", 2))
+            return T::kSM_FatalError;
+
+        if (evt.GetUShort()>0xfff)
+        {
+            ostringstream msg;
+            msg << "Position " << evt.GetUShort() << " for motor " << mid+1 << " out of range [0,1023].";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        fLid.MoveMotor(mid, evt.GetUShort());
+
+        return T::GetCurrentState();
+    }*/
+
+    int Unlock()
+    {
+        return fLid.GetState();
+    }
+
+    int Execute()
+    {
+        const int rc = fLid.GetState();
+        const int state = T::GetCurrentState();
+
+        if (state==Lid::State::kMoving &&
+            (rc==Lid::State::kConnected || rc==Lid::State::kDisconnected) &&
+            fLastCommand+boost::posix_time::seconds(fTimeToMove+fLid.GetInterval()) > Time())
+        {
+            return Lid::State::kMoving;
+        }
+
+        const Time now;
+        if (now>fSunRise)
+        {
+            if (state!=Lid::State::kClosed && state!=Lid::State::kLocked && state>Lid::State::kDisconnected)
+            {
+                T::Error("Lidctrl not in 'Closed' at end of nautical twilight!");
+                Close();
+            }
+
+            fSunRise = now.GetNextSunRise(-6);
+
+            ostringstream msg;
+            msg << "During next sun-rise nautical twilight will end at " << fSunRise;
+            T::Info(msg);
+
+            return Lid::State::kLocked;
+        }
+
+        return rc==Lid::State::kConnected ? state : rc;
+    }
+
+
+public:
+    StateMachineLidControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "LID_CONTROL"), fLid(*this, *this),
+        fSunRise(Time().GetNextSunRise(-6))
+    {
+        // State names
+        T::AddStateName(Lid::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Lid::State::kConnected, "Connected",
+                     "Connection established, but status still not known");
+
+        T::AddStateName(Lid::State::kUnidentified, "Unidentified",
+                     "At least one lid reported a state which could not be identified by lidctrl");
+
+        T::AddStateName(Lid::State::kInconsistent, "Inconsistent",
+                     "Both lids show different states");
+
+        T::AddStateName(Lid::State::kUnknown, "Unknown",
+                     "Arduino reports at least one lids in an unknown status");
+
+        T::AddStateName(Lid::State::kPowerProblem, "PowerProblem",
+                     "Arduino reports both lids to have a power problem (might also be that both are at the end switches)");
+
+        T::AddStateName(Lid::State::kOvercurrent, "Overcurrent",
+                     "Arduino reports both lids to have a overcurrent (might also be that both are at the end switches)");
+
+        T::AddStateName(Lid::State::kClosed, "Closed",
+                     "Both lids are closed");
+
+        T::AddStateName(Lid::State::kOpen, "Open",
+                     "Both lids are open");
+
+        T::AddStateName(Lid::State::kMoving, "Moving",
+                     "Lids are supposed to move, waiting for next status");
+
+        T::AddStateName(Lid::State::kLocked, "Locked",
+                        "Locked, no commands accepted except UNLOCK.");
+
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineLidControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("OPEN", Lid::State::kUnidentified, Lid::State::kInconsistent, Lid::State::kUnknown, Lid::State::kPowerProblem, Lid::State::kClosed)
+            (bind(&StateMachineLidControl::Open, this))
+            ("Open the lids");
+
+        T::AddEvent("CLOSE")(Lid::State::kUnidentified)(Lid::State::kInconsistent)(Lid::State::kUnknown)(Lid::State::kOvercurrent)(Lid::State::kPowerProblem)(Lid::State::kOpen)
+            (bind(&StateMachineLidControl::Close, this))
+            ("Close the lids");
+
+        T::AddEvent("POST", "C")(Lid::State::kUnidentified)(Lid::State::kInconsistent)(Lid::State::kUnknown)(Lid::State::kOvercurrent)(Lid::State::kPowerProblem)(Lid::State::kOpen)(Lid::State::kClosed)(Lid::State::kMoving)
+            (bind(&StateMachineLidControl::Post, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("UNLOCK", Lid::State::kLocked)
+            (bind(&StateMachineLidControl::Unlock, this))
+            ("Unlock if in locked state.");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fLid.SetVerbose(!conf.Get<bool>("quiet"));
+        fLid.SetInterval(conf.Get<uint16_t>("interval"));
+        fLid.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fLid.SetSite(conf.Get<string>("url"));
+        fLid.SetEndpoint(conf.Get<string>("addr"));
+        fLid.StartConnect();
+
+        fTimeToMove = conf.Get<uint16_t>("time-to-move");
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineLidControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Lid control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>(""),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>(""),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(5), "Interval between two updates on the server in seconds")
+        ("time-to-move", var<uint16_t>(20), "Expected minimum time the lid taks to open/close")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The lidctrl is an interface to the LID control hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: lidctrl [-c type] [OPTIONS]\n"
+        "  or:  lidctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionLid>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionLid>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionLid>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/log.cc
===================================================================
--- branches/FACT++_part_filenames/src/log.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/log.cc	(revision 18732)
@@ -0,0 +1,43 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+
+#include <iostream>
+
+int main(int, const char **argv)
+{
+    // We could use putenv to make the Configure class change the value...
+    setenv("DIM_DNS_NODE", "localhost", 0);
+
+    // Get the name of the server we should subscribe to from the cmd line
+    const std::string server = argv[1] ? argv[1] : "TIME";
+
+    // Some info on the console
+    std::cout << "Subscribing to " << server << "/MESSAGE...\n" << std::endl;
+
+    // Create a message handler (default: redirects to stdout)
+    MessageImp msg;
+
+    // Subscribe to SERVER/MESSAGE and start output
+    MessageDimRX msgrx(server, msg);
+
+    // Just do nothing ;)
+    while (1)
+        usleep(1);
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example log.cc
+
+This is a simple example which subscribes to the message service of one
+dedicated dim client. It can be used to remotely log its log-messages.
+
+To redirect the output to a file use the shell redirection or the
+tee-program.
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/src/logtime.cc
===================================================================
--- branches/FACT++_part_filenames/src/logtime.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/logtime.cc	(revision 18732)
@@ -0,0 +1,57 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+#include "Time.h"
+
+#include <iostream>
+
+int main(int, const char **)
+{
+   // We could use putenv to make the Configure class change the value...
+    setenv("DIM_DNS_NODE", "localhost", 0);
+
+    // Start a DimServer called TIME
+    DimServer::start("TIME");
+
+
+
+    // Some info on the console
+    std::cout << "Offering TIME/MESSAGE...\n" << std::endl;
+
+    // Setup a DimService called TIME/MESSAGE
+    MessageDimTX msg("TIME");
+    while (1)
+    {
+        // Send current time
+        msg.Message(Time().GetAsStr());
+
+        // wait approximately one second
+        usleep(1000000);
+
+        //std::cout << DimServer::getClientName() << std::endl;
+        //std::cout << DimServer::getClientId() << std::endl;
+        //std::cout << DimServer::getDnsPort() << std::endl;
+        std::cout << "con: " << dis_get_conn_id() << std::endl;
+
+        char **ids = DimServer::getClientServices();
+
+        while (*ids)
+        {
+            std::cout << *ids << std::endl;
+            ids++;
+        }
+    }
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example logtime.cc
+
+This is a simple example how to log messages through the Dim network
+using MessageDimTX. Here we are offering the time once a second.
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/FACT++_part_filenames/src/magiclidar.cc
===================================================================
--- branches/FACT++_part_filenames/src/magiclidar.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/magiclidar.cc	(revision 18732)
@@ -0,0 +1,571 @@
+#include <boost/array.hpp>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersMagicLidar.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace MagicLidar;
+
+// ------------------------------------------------------------------------
+
+class ConnectionLidar : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateLidar(const Time &, const DimLidar &)
+    {
+    }
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        fLastReception = Time();
+
+        const string str(fArray.data(), bytes_received);
+        memset(fArray.data(), 0, fArray.size());
+
+        if (fIsVerbose)
+            Out() << str << endl;
+
+        bool isheader = true;
+
+        DimLidar data;
+
+        int hh=0, mm=0, ss=0, y=0, m=0, d=0;
+
+        bool keepalive = false;
+        bool failed = false;
+
+        stringstream is(str);
+        string line;
+        while (getline(is, line))
+        {
+            if (line.size()==1 && line[0]==13)
+            {
+                isheader = false;
+                continue;
+            }
+
+            if (isheader)
+            {
+                const size_t p = line.find_first_of(": ");
+                if (p==string::npos)
+                    continue;
+
+                std::transform(line.begin(), line.end(), line.begin(), (int(&)(int))std::tolower);
+
+                const string key = line.substr(0, p);
+                const string val = line.substr(p+2);
+
+                if (key=="connection" && val=="keep-alive")
+                    keepalive = true;
+            }
+            else
+            {
+                try
+                {
+                    if (line.substr(0, 2)=="ZD")
+                        data.fZd = stoi(line.substr(2));
+                    if (line.substr(0, 2)=="AZ")
+                        data.fAz = stof(line.substr(2));
+
+                    //if (line.substr(0, 3)=="PBL")
+                    //    data.fPBL = stof(line.substr(3));
+                    //if (line.substr(0, 3)=="CHE")
+                    //    data.fCHE = stof(line.substr(3));
+                    //if (line.substr(0, 3)=="COT")
+                    //    data.fCOT = stof(line.substr(3));
+
+                    if (line.substr(0, 2)=="T3")
+                        data.fT3 = stof(line.substr(2));
+                    if (line.substr(0, 2)=="T6")
+                        data.fT6 = stof(line.substr(2));
+                    if (line.substr(0, 2)=="T9")
+                        data.fT9 = stof(line.substr(2));
+                    if (line.substr(0, 3)=="T12")
+                        data.fT12 = stof(line.substr(3));
+
+                    if (line.substr(0, 3)=="CLB")
+                        data.fCloudBaseHeight = stof(line.substr(3));
+
+                    if (line.substr(0, 4)=="HOUR")
+                        hh = stoi(line.substr(4));
+                    if (line.substr(0, 6)=="MINUTS")
+                        mm = stoi(line.substr(6));
+                    if (line.substr(0, 7)=="SECONDS")
+                        ss = stoi(line.substr(7));
+
+                    if (line.substr(0, 4)=="YEAR")
+                        y = stoi(line.substr(4));
+                    if (line.substr(0, 5)=="MONTH")
+                        m = stoi(line.substr(5));
+                    if (line.substr(0, 3)=="DAY")
+                        d = stoi(line.substr(3));
+                }
+                catch (const exception &e)
+                {
+                    Warn("Conversion of received data failed");
+                    failed = true;
+                    break;
+                }
+            }
+        }
+
+        if (!keepalive)
+            PostClose(false);
+
+        if (failed)
+            return;
+
+        try
+        {
+            const Time tm = Time(y>999 ? y : 2000+y, m, d, hh, mm, ss);
+            if (tm==fLastReport)
+                return;
+
+            fLastReport = tm;
+
+            if (data.fT3==0 && data.fT6==0 && data.fT9==0 && data.fT12==0)
+                return;
+
+            ostringstream msg;
+            msg << tm.GetAsStr("%H:%M:%S") << ":"
+                //<< " PBL=" << data.fPBL
+                //<< " CHE=" << data.fCHE
+                //<< " COT=" << data.fCOT
+                << " T3-12=" << data.fT3
+                << "/" << data.fT6
+                << "/" << data.fT9
+                << "/" << data.fT12
+                << " H="  << data.fCloudBaseHeight/1000 << "km"
+                << " Zd="  << data.fZd  << "°"
+                << " Az="  << data.fAz  << "°";
+            Message(msg);
+
+            UpdateLidar(tm, data);
+        }
+        catch (const exception &e)
+        {
+            Warn("Corrupted time received.");
+        }
+
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionLidar::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "Accept: */*\r\n"
+            "Content-Type: application/octet-stream\r\n"
+            "User-Agent: FACT\r\n"
+            "Host: www.fact-project.org\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Connection: Keep-Alive\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval/2));
+        fKeepAlive.async_wait(boost::bind(&ConnectionLidar::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionLidar(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fLastReception(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3;
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2;
+
+        return 1;
+
+    }
+};
+
+const uint16_t ConnectionLidar::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimLidar : public ConnectionLidar
+{
+private:
+
+    DimDescribedService fDimLidar;
+
+    virtual void UpdateLidar(const Time &t, const DimLidar &data)
+    {
+        fDimLidar.setData(&data, sizeof(DimLidar));
+        fDimLidar.Update(t);
+    }
+
+public:
+    ConnectionDimLidar(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionLidar(ioservice, imp),
+        fDimLidar("MAGIC_LIDAR/DATA", "F:1;F:1;F:1;F:1;F:1;F:1;F:1",
+                  "|Zd[deg]:Pointing direction zenith distance"
+                  "|Az[deg]:Pointing direction azimuth"
+                  "|T3[1]:Transmission below 3km normalized to 1"
+                  "|T6[1]:Transmission below 6km normalized to 1"
+                  "|T9[1]:Transmission below 9km normalized to 1"
+                  "|T12[1]:Transmission below 12km normalized to 1"
+                  "|CLB[m]:Cloud base height")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineLidar : public StateMachineAsio<T>
+{
+private:
+    S fLidar;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fLidar.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fLidar.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fLidar.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        poll();
+
+        if (evt.GetBool())
+            fLidar.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fLidar.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fLidar.GetState();
+    }
+
+
+public:
+    StateMachineLidar(ostream &out=cout) :
+        StateMachineAsio<T>(out, "MAGIC_LIDAR"), fLidar(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineLidar::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineLidar::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineLidar::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fLidar.SetVerbose(!conf.Get<bool>("quiet"));
+        fLidar.SetInterval(conf.Get<uint16_t>("interval"));
+        fLidar.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fLidar.SetSite(conf.Get<string>("url"));
+        fLidar.SetEndpoint(conf.Get<string>("addr"));
+        fLidar.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineLidar<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("MAGIC lidar control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("www.magic.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/site/weather/lidar_data.txt"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(30), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The magiclidar is an interface to the MAGIC lidar data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: magiclidar [-c type] [OPTIONS]\n"
+        "  or:  magiclidar [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionLidar>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimLidar>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionLidar>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionLidar>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimLidar>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimLidar>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/magicweather.cc
===================================================================
--- branches/FACT++_part_filenames/src/magicweather.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/magicweather.cc	(revision 18732)
@@ -0,0 +1,562 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersMagicWeather.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace MagicWeather;
+
+// ------------------------------------------------------------------------
+
+class ConnectionWeather : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateWeather(const Time &, const DimWeather &)
+    {
+    }
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        fLastReception = Time();
+
+        const string str(fArray.data(), bytes_received);
+        memset(fArray.data(), 0, fArray.size());
+
+        if (fIsVerbose)
+            Out() << str << endl;
+
+        bool isheader = true;
+
+        DimWeather data;
+
+        int hh=0, mm=0, ss=0, y=0, m=0, d=0;
+
+        bool keepalive = false;
+
+        stringstream is(str);
+        string line;
+        while (getline(is, line))
+        {
+            if (line.size()==1 && line[0]==13)
+            {
+                isheader = false;
+                continue;
+            }
+
+            if (isheader)
+            {
+                const size_t p = line.find_first_of(": ");
+                if (p==string::npos)
+                    continue;
+
+                std::transform(line.begin(), line.end(), line.begin(), (int(&)(int))std::tolower);
+
+                const string key = line.substr(0, p);
+                const string val = line.substr(p+2);
+
+                if (key=="connection" && val=="keep-alive")
+                    keepalive = true;
+            }
+            else
+            {
+                if (line.substr(0, 2)=="ST")
+                    data.fStatus = stoi(line.substr(2));
+
+                if (line.substr(0, 2)=="TE")
+                    data.fTemp = stof(line.substr(2));
+
+                if (line.substr(0, 2)=="DP")
+                    data.fDew = stof(line.substr(2));
+
+                if (line.substr(0, 3)=="HUM")
+                    data.fHum = stof(line.substr(3));
+
+                if (line.substr(0, 2)=="WS")
+                    data.fWind = stof(line.substr(2));
+
+                if (line.substr(0, 3)=="MWD")
+                    data.fDir = stof(line.substr(3));
+
+                if (line.substr(0, 2)=="WP")
+                    data.fGusts = stof(line.substr(2));
+
+                if (line.substr(0, 5)=="PRESS")
+                    data.fPress = stof(line.substr(5));
+
+                if (line.substr(0, 4)=="HOUR")
+                    hh = stoi(line.substr(4));
+
+                if (line.substr(0, 6)=="MINUTS")
+                    mm = stoi(line.substr(6));
+
+                if (line.substr(0, 7)=="SECONDS")
+                    ss = stoi(line.substr(7));
+
+                if (line.substr(0, 4)=="YEAR")
+                    y = stoi(line.substr(4));
+
+                if (line.substr(0, 5)=="MONTH")
+                    m = stoi(line.substr(5));
+
+                if (line.substr(0, 3)=="DAY")
+                    d = stoi(line.substr(3));
+            }
+        }
+
+        if (!keepalive)
+            PostClose(false);
+
+        try
+        {
+            const Time tm = Time(2000+y, m, d, hh, mm, ss);
+            if (tm==fLastReport)
+                return;
+
+            ostringstream msg;
+            msg << tm.GetAsStr("%H:%M:%S") << "[" << data.fStatus << "]:"
+                << " T="    << data.fTemp  << "°C"
+                << " H="    << data.fHum   << "%"
+                << " P="    << data.fPress << "hPa"
+                << " Td="   << data.fDew   << "°C"
+                << " V="    << data.fWind  << "km/h"
+                << " Vmax=" << data.fGusts << "km/h"
+                << " dir="  << data.fDir   << "°";
+            Message(msg);
+
+            UpdateWeather(tm, data);
+
+            fLastReport = tm;
+        }
+        catch (const exception &e)
+        {
+            Warn("Corrupted time received.");
+        }
+
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionWeather::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    ba::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "Accept: */*\r\n"
+            "Content-Type: application/octet-stream\r\n"
+            "User-Agent: FACT\r\n"
+            "Host: www.fact-project.org\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Connection: Keep-Alive\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval/2));
+        fKeepAlive.async_wait(boost::bind(&ConnectionWeather::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionWeather(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fLastReception(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3;
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2;
+
+        return 1;
+
+    }
+};
+
+const uint16_t ConnectionWeather::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionWeather
+{
+private:
+
+    DimDescribedService fDimWeather;
+
+    virtual void UpdateWeather(const Time &t, const DimWeather &data)
+    {
+        fDimWeather.setData(&data, sizeof(DimWeather));
+        fDimWeather.Update(t);
+    }
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionWeather(ioservice, imp),
+        fDimWeather("MAGIC_WEATHER/DATA", "S:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1",
+                     "|stat:Status"
+                     "|T[deg C]:Temperature"
+                     "|T_dew[deg C]:Dew point"
+                     "|H[%]:Humidity"
+                     "|P[hPa]:Air pressure"
+                     "|v[km/h]:Wind speed"
+                     "|v_max[km/h]:Wind gusts"
+                     "|d[deg]:Wind direction (N-E)")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineWeather : public StateMachineAsio<T>
+{
+private:
+    S fWeather;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fWeather.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fWeather.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fWeather.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fWeather.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fWeather.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fWeather.GetState();
+    }
+
+public:
+    StateMachineWeather(ostream &out=cout) :
+        StateMachineAsio<T>(out, "MAGIC_WEATHER"), fWeather(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineWeather::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineWeather::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineWeather::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fWeather.SetVerbose(!conf.Get<bool>("quiet"));
+        fWeather.SetInterval(conf.Get<uint16_t>("interval"));
+        fWeather.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fWeather.SetSite(conf.Get<string>("url"));
+        fWeather.SetEndpoint(conf.Get<string>("addr"));
+        fWeather.StartConnect();
+
+        return -1;
+    }
+};
+
+
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineWeather<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("MAGIC weather control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("www.magic.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/site/weather/weather_data.txt"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(30), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The magicweather is an interface to the MAGIC weather data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: magicweather [-c type] [OPTIONS]\n"
+        "  or:  magicweather [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionWeather>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/makedata.cc
===================================================================
--- branches/FACT++_part_filenames/src/makedata.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/makedata.cc	(revision 18732)
@@ -0,0 +1,162 @@
+#include "externals/Prediction.h"
+
+#include "Database.h"
+
+#include "Time.h"
+#include "Configuration.h"
+
+using namespace std;
+using namespace Nova;
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("source-name", var<string>(), "Source name")
+        ("date-time", var<string>(), "SQL time (UTC)")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("max-current", var<double>(75), "Maximum current to display in other plots.")
+        ("max-zd", var<double>(75), "Maximum zenith distance to display in other plots")
+        ("no-limits", po_switch(), "Switch off limits in plots")
+        ;
+
+    po::positional_options_description p;
+    p.add("source-name", 1); // The 1st positional options
+    p.add("date-time",   2); // The 2nd positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "makedata - The astronomy data listing\n"
+        "\n"
+//        "Calculates several plots for the sources in the database\n"
+//        "helpful or needed for scheduling. The Plot is always calculated\n"
+//        "for the night which starts at the same so. So no matter if\n"
+//        "you specify '1974-09-09 00:00:00' or '1974-09-09 21:56:00'\n"
+//        "the plots will refer to the night 1974-09-09/1974-09-10.\n"
+//        "The advantage is that specification of the date as in\n"
+//        "1974-09-09 is enough. Time axis starts and ends at nautical\n"
+//        "twilight which is 12deg below horizon.\n"
+//        "\n"
+        "Usage: makedata sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+/*
+    if (!conf.Has("source-name"))
+    {
+        cout << "ERROR - --source-name missing." << endl;
+        return 1;
+    }
+*/
+    // ------------------ Eval config ---------------------
+
+    Time time;
+    if (conf.Has("date-time"))
+        time.SetFromStr(conf.Get<string>("date-time"));
+
+    const double max_current = conf.Get<double>("max-current");
+    const double max_zd      = conf.Get<double>("max-zd");
+    const double no_limits   = conf.Get<bool>("no-limits");
+
+    // -12: nautical
+    const RstTime sun_set  = GetSolarRst(time.JD()-0.5, -12);   // Sun set with the same date than th provided date
+    const RstTime sun_rise = GetSolarRst(time.JD()+0.5, -12);  // Sun rise on the following day
+
+    const double jd  = floor(time.Mjd())+2400001;
+    const double mjd = floor(time.Mjd())+49718+0.5;
+
+
+    const double jd0 = fmod(sun_set.set,   1);   // ~0.3
+    const double jd1 = fmod(sun_rise.rise, 1);   // ~0.8
+
+    cout << Time::iso << time << ", " << mjd-49718 << ", ";
+    cout << jd0  << ", ";
+    cout << jd1 << "\n";
+
+    if (!conf.Has("source-name"))
+        return 1;
+
+    const string source_name = conf.Get<string>("source-name");
+    const string fDatabase   = conf.Get<string>("source-database");
+
+    // ------------- Get Sources from databasse ---------------------
+
+    const mysqlpp::StoreQueryResult res =
+        Database(fDatabase).query("SELECT fRightAscension, fDeclination FROM Source WHERE fSourceName='"+source_name+"'").store();
+
+    // ------------- Create canvases and frames ---------------------
+
+    vector<mysqlpp::Row>::const_iterator row=res.begin();
+    if (row==res.end())
+        return 1;
+
+    EquPosn pos;
+    pos.ra  = double((*row)[0])*15;
+    pos.dec = double((*row)[1]);
+
+    // Loop over 24 hours
+    for (int i=0; i<24*12; i++)
+    {
+        const double h = double(i)/(24*12);
+
+        // check if it is betwene sun-rise and sun-set
+        if (h<jd0 || h>jd1)
+            continue;
+
+        const SolarObjects so(jd+h);
+
+        // get local position of source
+        const HrzPosn hrz = GetHrzFromEqu(pos, jd+h);
+
+        // get current prediction
+        const double cur = FACT::PredictI(so, pos);
+
+        // Relative  energy threshold prediction
+        const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+
+        // Add points to curve
+        // const double axis = (mjd+h)*24*3600;
+
+        Time t(mjd-49718);
+        t += boost::posix_time::minutes(i*5);
+
+        cout << t << ", " << h << ", ";
+
+        if (no_limits || cur<max_current)
+            cout << hrz.alt;
+        cout << ", ";
+
+        if (no_limits || 90-hrz.alt<max_zd)
+            cout << cur;
+        cout << ", ";
+
+        if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            cout << ratio*cur/6.2;
+        cout << ", ";
+
+        if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            cout << GetAngularSeparation(so.fMoonEqu, pos);
+        cout << "\n";
+    }
+
+    cout << flush;
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/makeplots.cc
===================================================================
--- branches/FACT++_part_filenames/src/makeplots.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/makeplots.cc	(revision 18732)
@@ -0,0 +1,329 @@
+#include "externals/Prediction.h"
+
+#include "Database.h"
+
+#include "Time.h"
+#include "Configuration.h"
+
+#include <TROOT.h>
+#include <TH1.h>
+#include <TGraph.h>
+#include <TCanvas.h>
+#include <TLegend.h>
+
+using namespace std;
+using namespace Nova;
+
+// ------------------------------------------------------------------------
+
+void CheckForGap(TCanvas &c, TGraph &g, double axis)
+{
+    if (g.GetN()==0 || axis-g.GetX()[g.GetN()-1]<450)
+        return;
+
+    c.cd();
+    ((TGraph*)g.DrawClone("C"))->SetBit(kCanDelete);
+    while (g.GetN())
+        g.RemovePoint(0);
+}
+
+void DrawClone(TCanvas &c, TGraph &g)
+{
+    if (g.GetN()==0)
+        return;
+
+    c.cd();
+    ((TGraph*)g.DrawClone("C"))->SetBit(kCanDelete);
+}
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Makeplots");
+    control.add_options()
+        //("ra",        var<double>(), "Source right ascension")
+        //("dec",       var<double>(), "Source declination")
+        ("date-time", var<string>(), "SQL time (UTC)")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("max-current", var<double>(100), "Maximum current to display in other plots.")
+        ("max-zd", var<double>(50), "Maximum zenith distance to display in other plots")
+        ("no-limits", po_switch(), "Switch off limits in plots")
+        ;
+
+    po::positional_options_description p;
+    p.add("date-time", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "makeplots - The astronomy plotter\n"
+        "\n"
+        "Calculates several plots for the sources in the database\n"
+        "helpful or needed for scheduling. The Plot is always calculated\n"
+        "for the night which starts at the same so. So no matter if\n"
+        "you specify '1974-09-09 00:00:00' or '1974-09-09 21:56:00'\n"
+        "the plots will refer to the night 1974-09-09/1974-09-10.\n"
+        "The advantage is that specification of the date as in\n"
+        "1974-09-09 is enough. Time axis starts and ends at nautical\n"
+        "twilight which is 12deg below horizon.\n"
+        "\n"
+        "Usage: makeplots sql-datetime\n";
+//        "Usage: makeplots sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    gROOT->SetBatch();
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+//    if (conf.Has("ra")^conf.Has("dec"))
+//    {
+//        cout << "ERROR - Either --ra or --dec missing." << endl;
+//        return 1;
+//    }
+
+    // ------------------ Eval config ---------------------
+
+    Time time;
+    if (conf.Has("date-time"))
+        time.SetFromStr(conf.Get<string>("date-time"));
+
+    const double max_current = conf.Get<double>("max-current");
+    const double max_zd      = conf.Get<double>("max-zd");
+    const double no_limits   = conf.Get<bool>("no-limits");
+
+    // -12: nautical
+    // Sun set with the same date than th provided date
+    // Sun rise on the following day
+    const RstTime sun_set  = GetSolarRst(time.JD()-0.5, -12);
+    const RstTime sun_rise = GetSolarRst(time.JD()+0.5, -12);
+
+    const double jd = floor(time.Mjd())+2400001;
+
+    cout << "Time: " << time     << endl;
+    cout << "Base: " << Time(jd-0.5) << endl;
+    cout << "Set:  " << Time(sun_set.set)   << endl;
+    cout << "Rise: " << Time(sun_rise.rise) << endl;
+
+    const double sunset  = sun_set.set;
+    const double sunrise = sun_rise.rise;
+
+    const string fDatabase = conf.Get<string>("source-database");
+
+    // ------------- Get Sources from databasse ---------------------
+
+    const mysqlpp::StoreQueryResult res =
+        Database(fDatabase).query("SELECT fSourceName, fRightAscension, fDeclination FROM Source WHERE fSourceTypeKEY=1").store();
+
+    // ------------- Create canvases and frames ---------------------
+
+    // It is important to use an offset which is larger than
+    // 1970-01-01 00:00:00. This one will not work if your
+    // local time zone is positive!
+    TH1S hframe("", "", 1, Time(sunset).Mjd()*24*3600, Time(sunrise).Mjd()*24*3600);
+    hframe.SetStats(kFALSE);
+    hframe.GetXaxis()->SetTimeFormat("%Hh%M%F1995-01-01 00:00:00 GMT");
+    hframe.GetXaxis()->SetTitle((Time(jd).GetAsStr("%d/%m/%Y")+"  -  "+Time(jd+1).GetAsStr("%d/%m/%Y")+"  [UTC]").c_str());
+    hframe.GetXaxis()->CenterTitle();
+    hframe.GetYaxis()->CenterTitle();
+    hframe.GetXaxis()->SetTimeDisplay(true);
+    hframe.GetYaxis()->SetTitleSize(0.040);
+    hframe.GetXaxis()->SetTitleSize(0.040);
+    hframe.GetXaxis()->SetTitleOffset(1.1);
+    hframe.GetYaxis()->SetLabelSize(0.040);
+    hframe.GetXaxis()->SetLabelSize(0.040);
+
+    TCanvas c1;
+    c1.SetFillColor(kWhite);
+    c1.SetBorderMode(0);
+    c1.SetFrameBorderMode(0);
+    c1.SetLeftMargin(0.085);
+    c1.SetRightMargin(0.01);
+    c1.SetTopMargin(0.03);
+    c1.SetGrid();
+    hframe.GetYaxis()->SetTitle("Altitude [deg]");
+    hframe.SetMinimum(15);
+    hframe.SetMaximum(90);
+    hframe.DrawCopy();
+
+    TCanvas c2;
+    c2.SetFillColor(kWhite);
+    c2.SetBorderMode(0);
+    c2.SetFrameBorderMode(0);
+    c2.SetLeftMargin(0.085);
+    c2.SetRightMargin(0.01);
+    c2.SetTopMargin(0.03);
+    c2.SetGrid();
+    hframe.GetYaxis()->SetTitle("Predicted Current [#muA]");
+    hframe.SetMinimum(0);
+    hframe.SetMaximum(100);
+    hframe.DrawCopy();
+
+    TCanvas c3;
+    c3.SetFillColor(kWhite);
+    c3.SetBorderMode(0);
+    c3.SetFrameBorderMode(0);
+    c3.SetLeftMargin(0.085);
+    c3.SetRightMargin(0.01);
+    c3.SetTopMargin(0.03);
+    c3.SetGrid();
+    c3.SetLogy();
+    hframe.GetYaxis()->SetTitle("Estimated relative threshold");
+    hframe.GetYaxis()->SetMoreLogLabels();
+    hframe.SetMinimum(0.9);
+    hframe.SetMaximum(11);
+    hframe.DrawCopy();
+
+    TCanvas c4;
+    c4.SetFillColor(kWhite);
+    c4.SetBorderMode(0);
+    c4.SetFrameBorderMode(0);
+    c4.SetLeftMargin(0.085);
+    c4.SetRightMargin(0.01);
+    c4.SetTopMargin(0.03);
+    c4.SetGrid();
+    hframe.GetYaxis()->SetTitle("Distance to moon [deg]");
+    hframe.SetMinimum(0);
+    hframe.SetMaximum(180);
+    hframe.DrawCopy();
+
+    Int_t color[] = { kBlack, kRed, kBlue, kGreen, kCyan, kMagenta };
+    Int_t style[] = { kSolid, kDashed, kDotted };
+
+    TLegend leg(0, 0, 1, 1);
+
+    // ------------- Loop over sources ---------------------
+
+    Int_t cnt=0;
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++, cnt++)
+    {
+        // Eval row
+        const string name = (*v)[0].c_str();
+
+        EquPosn pos;
+        pos.ra  = double((*v)[1])*15;
+        pos.dec = double((*v)[2]);
+
+        // Create graphs
+        TGraph g1, g2, g3, g4, gr, gm;
+        g1.SetName(name.data());
+        g2.SetName(name.data());
+        g3.SetName(name.data());
+        g4.SetName(name.data());
+        g1.SetLineWidth(2);
+        g2.SetLineWidth(2);
+        g3.SetLineWidth(2);
+        g4.SetLineWidth(2);
+        gm.SetLineWidth(1);
+        g1.SetLineStyle(style[cnt/6]);
+        g2.SetLineStyle(style[cnt/6]);
+        g3.SetLineStyle(style[cnt/6]);
+        g4.SetLineStyle(style[cnt/6]);
+        g1.SetLineColor(color[cnt%6]);
+        g2.SetLineColor(color[cnt%6]);
+        g3.SetLineColor(color[cnt%6]);
+        g4.SetLineColor(color[cnt%6]);
+        gm.SetLineColor(kYellow);
+
+        if (cnt==0)
+            leg.AddEntry(gm.Clone(), "Moon", "l");
+        leg.AddEntry(g1.Clone(), name.data(), "l");
+
+        // Loop over 24 hours
+        for (double h=0; h<1; h+=1./(24*12))
+        {
+            const SolarObjects so(jd+h);
+
+            // get local position of source
+            const HrzPosn hrz = GetHrzFromEqu(pos, so.fJD);
+
+            if (v==res.begin())
+                cout << Time(so.fJD) <<" " << 90-so.fMoonHrz.alt <<  endl;
+
+            const double cur = FACT::PredictI(so, pos);
+
+            // Relative  energy threshold prediction
+            const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+
+            // Add points to curve
+            const double axis = Time(so.fJD).Mjd()*24*3600;
+
+            // If there is a gap of more than one bin, start a new curve
+            CheckForGap(c1, g1, axis);
+            CheckForGap(c1, gm, axis);
+            CheckForGap(c2, g2, axis);
+            CheckForGap(c3, g3, axis);
+            CheckForGap(c4, g4, axis);
+
+            // Add data
+            if (no_limits || cur<max_current)
+                g1.SetPoint(g1.GetN(), axis, hrz.alt);
+
+            if (no_limits || 90-hrz.alt<max_zd)
+                g2.SetPoint(g2.GetN(), axis, cur);
+
+            if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+                g3.SetPoint(g3.GetN(), axis, ratio*pow(cur/6.2, 0.394));
+
+            if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            {
+                const double angle = GetAngularSeparation(so.fMoonEqu, pos);
+                g4.SetPoint(g4.GetN(), axis, angle);
+            }
+
+            if (cnt==0)
+                gm.SetPoint(gm.GetN(), axis, so.fMoonHrz.alt);
+        }
+
+        if (cnt==0)
+            DrawClone(c1, gm);
+
+        DrawClone(c1, g1);
+        DrawClone(c2, g2);
+        DrawClone(c3, g3);
+        DrawClone(c4, g4);
+    }
+
+
+    // Save three plots
+    TCanvas c5;
+    c5.SetFillColor(kWhite);
+    c5.SetBorderMode(0);
+    c5.SetFrameBorderMode(0);
+    leg.Draw();
+
+    const string t = Time(jd).GetAsStr("%Y%m%d");
+
+    c1.SaveAs((t+"-ZenithDistance.eps").c_str());
+    c2.SaveAs((t+"-PredictedCurrent.eps").c_str());
+    c3.SaveAs((t+"-RelativeThreshold.eps").c_str());
+    c4.SaveAs((t+"-MoonDist.eps").c_str());
+    c5.SaveAs((t+"-Legend.eps").c_str());
+
+    c1.SaveAs((t+"-ZenithDistance.root").c_str());
+    c2.SaveAs((t+"-PredictedCurrent.root").c_str());
+    c3.SaveAs((t+"-RelativeThreshold.root").c_str());
+    c4.SaveAs((t+"-MoonDist.root").c_str());
+
+    c1.Print((t+".pdf(").c_str(), "pdf");
+    c2.Print((t+".pdf" ).c_str(), "pdf");
+    c3.Print((t+".pdf" ).c_str(), "pdf");
+    c4.Print((t+".pdf" ).c_str(), "pdf");
+    c5.Print((t+".pdf)").c_str(), "pdf");
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/makeschedule.cc
===================================================================
--- branches/FACT++_part_filenames/src/makeschedule.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/makeschedule.cc	(revision 18732)
@@ -0,0 +1,799 @@
+#include "externals/Prediction.h"
+
+#include <boost/algorithm/string/join.hpp>
+
+#include "Database.h"
+
+#include "tools.h"
+#include "Time.h"
+#include "Configuration.h"
+
+using namespace std;
+using namespace Nova;
+
+// -----------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Makeschedule");
+    control.add_options()
+        ("date", var<string>(), "SQL time (UTC), e.g. '2016-12-24' (equiv. '2016-12-24 12:00:00' to '2016-12-25 11:59:59')")
+        ("source-database", var<string>()->required(), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("schedule-database", var<string>(), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("max-current", var<double>(90), "Global maximum current limit in uA")
+        ("max-zd", var<double>(75), "Global zenith distance limit in degree")
+        ("source", vars<string>(), "List of all TeV sources to be included, names according to the database")
+        ("setup.*", var<double>(), "Setup for the sources to be observed")
+        ("preobs.*", vars<string>(), "Prescheduled observations")
+        ("startup.offset", var<double>(15), "Determines how many minutes the startup is scheduled before data-taking.start [0;120]")
+        ("data-taking.start", var<double>(-12), "Begin of data-taking in degree of sun below horizon")
+        ("data-taking.end", var<double>(-13.75), "End of data-taking in degree of sun below horizon")
+        ("enter-schedule-into-database", var<bool>(), "Enter schedule into database (required schedule-database, false: dry-run)")
+        ;
+
+    po::positional_options_description p;
+    p.add("date", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "makeschedule - Creates an automatic schedule\n"
+        "\n"
+        "Usage: makeschedule [yyyy-mm-dd]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+#ifdef HAVE_ROOT
+    cout <<
+        "First for each minute of the night a list is calculated of all "
+        "selected sources fulfiling all global and all source specific "
+        "constraints, e.g. on the zenith distance or the current.\n"
+        "\n"
+        "The remaining source list is sorted by the relative threshold, "
+        "while the threshold is weighted with a user defined source "
+        "specific penalty. The first source of the list is taken to "
+        "be observed.\n"
+        "\n"
+        "In a next step the first and last source of the resulting schedule "
+        "are evaluated. If their observation time is below 40', it is tried "
+        "to extend it to 40min. If this violates one of the criteria mentioned "
+        "above or gives an observation time for the neighbouring source of "
+        "less than 40min, try to replace it by the neighbouring source. "
+        "If this also does not fulfil the requirements, the original "
+        "schedule remains unchanged.\n"
+        "\n"
+        "Now a similar check is run for all intermediate sources. They are "
+        "checked (from the beginning to the end, one by one), if they have "
+        "an observation time of less than 40min. In this case, it is tried "
+        "to remove them. The observation of the two neighbouring sources is "
+        "extended to their penalized point of equal relative threshold. "
+        "If this solution would not fulfil all criteria, no change is made.\n"
+        "\n"
+        "In a last step, all remaining sources with less than 5min "
+        "observation time are replaced with sleep and sleep after startup "
+        "or before shutdown are removed.\n"
+        "\n"
+        "\n"
+        "Examples:\n"
+        "\n"
+        "  makeschedule 2016-12-24\n"
+        "\n"
+        "Calculate the Christmas schedule for 2016 using all TeV sources from the\n"
+        "database. If the date is omitted the current date is used.\n"
+        "\n"
+        "  makeschedule --source='Mrk 421' --source='Mrk 501' --source='Crab'\n"
+        "\n"
+        "Use only the mentioned sources to calculate the schedule.\n"
+        "\n"
+        "  makeschedule --source=Crab --setup.Crab.max-zd=30\n"
+        "\n"
+        "Limit the zenith distance of Crab into the range [0;30]deg.\n"
+        "\n"
+        "  makeschedule --source=Crab --setup.Crab.max-current=50\n"
+        "\n"
+        "Limit the maximum estimated current of Crab at 50uA.\n"
+        "\n"
+        "  makeschedule --source='IC 310' '--setup.IC 310.penalty=1.2'\n"
+        "\n"
+        "Multiply IC310's estimated relative threshold by a factor 1.2\n"
+        "\n";
+    cout << endl;
+#endif
+}
+
+
+struct MyDouble
+{
+    double val;
+    bool valid;
+    MyDouble(Configuration &conf, const string &str) : val(0)
+    {
+        valid = conf.Has(str);
+        if (valid)
+            val = conf.Get<double>(str);
+    }
+    MyDouble() : val(0), valid(false) {}
+};
+
+/*
+struct MinMax
+{
+    MyDouble min;
+    MyDouble max;
+    MinMax(Configuration &conf, const string &str)
+    {
+        min = MyDouble(conf, str+".min");
+        max = MyDouble(conf, str+".max");
+    }
+    MinMax() {}
+};
+*/
+
+struct Source
+{
+    // Global limits
+    static double max_current;
+    static double max_zd;
+
+    // Source descrition
+    string name;
+    uint16_t key;
+    EquPosn equ;
+
+    // Source specific limits
+    MyDouble maxzd;
+    MyDouble maxcurrent;
+    double penalty;
+
+    // Possible observation time
+    double begin;
+    double end;
+
+    // Threshold (sorting reference)
+    double threshold;
+
+    double duration() const { return end-begin; };
+
+    // Pre-observations (e.g. ratescan)
+    vector<string> preobs;
+
+    Source(const string &n="", uint16_t k=-1) : name(n), key(k), begin(0), threshold(std::numeric_limits<double>::max()) { }
+
+    //bool IsSpecial() const { return threshold==std::numeric_limits<double>::max(); }
+
+    double zd(const double &jd) const
+    {
+        return 90-GetHrzFromEqu(equ, jd).alt;
+    }
+
+    bool valid(const SolarObjects &so) const
+    {
+        const HrzPosn hrz     = GetHrzFromEqu(equ, so.fJD);
+        const double  current = FACT::PredictI(so, equ);
+
+        if (current>max_current)
+            return false;
+
+        if (hrz.alt<=0 || 90-hrz.alt>max_zd)
+            return false;
+
+        if (maxzd.valid && 90-hrz.alt>maxzd.val)
+            return false;
+
+        if (maxcurrent.valid && current>maxcurrent.val)
+            return false;
+
+        return true;
+    }
+
+    bool IsRangeValid(const double &jd_begin, const double &jd_end) const
+    {
+        const uint32_t n = nearbyint((jd_end-jd_begin)*24*60);
+        for (uint32_t i=0; i<n; i++)
+            if (!valid(SolarObjects(jd_begin+i/24./60.)))
+                return false;
+
+        return true;
+    }
+
+    double getThreshold(const SolarObjects &so) const
+    {
+        const HrzPosn hrz = GetHrzFromEqu(equ, so.fJD);
+        const double  current = FACT::PredictI(so, equ);
+
+        const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+
+        return penalty*ratio*pow(current/6.2, 0.394);
+    }
+
+    bool calcThreshold(const SolarObjects &so)
+    {
+        const HrzPosn hrz     = GetHrzFromEqu(equ, so.fJD);
+        const double  current = FACT::PredictI(so, equ);
+
+        if (current>max_current)
+            return false;
+
+        if (hrz.alt<=0 || 90-hrz.alt>max_zd)
+            return false;
+
+        if (maxzd.valid && 90-hrz.alt>maxzd.val)
+            return false;
+
+        if (maxcurrent.valid && current>maxcurrent.val)
+            return false;
+
+        const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+        threshold = penalty*ratio*pow(current/6.2, 0.394);
+
+        return true;
+    }
+};
+
+double Source::max_zd;
+double Source::max_current;
+
+bool SortByThreshold(const Source &i, const Source &j) { return i.threshold<j.threshold; }
+
+bool RescheduleFirstSources(vector<Source> &obs)
+{
+    if (obs.size()<2 || obs[0].duration()>=40./24/60 || obs[0].name=="SLEEP" || obs[1].name=="SLEEP")
+        return false;
+
+    cout << "First source [" << obs[0].name << "] detected < 40min" << endl;
+
+    const double obs1_duration = obs[1].end - obs[0].begin - 40./24/60;
+    const double obs0_end      =              obs[0].begin + 40./24/60;
+
+    // Check that:
+    //  - the duration for the shrunken source obs[1] is still above 40min
+    //  - obs[0] does not exceed 60deg at the end of its new window
+    //  - obs[0] does not exceed any limit within the new window
+
+    if (obs1_duration>=40./24/60 && obs[0].IsRangeValid(obs[0].end, obs0_end))
+    {
+        obs[0].end   = obs0_end;
+        obs[1].begin = obs0_end;
+
+        cout << "First source [" << obs[0].name << "] extended to 40min" << endl;
+
+        return false;
+    }
+
+    // Try to remove the first source, check if second source fullfills all limits
+    if (obs[1].IsRangeValid(obs[0].begin, obs[0].end))
+    {
+        cout << "First source [" << obs[0].name << "] removed" << endl;
+
+        obs[1].begin = obs[0].begin;
+        obs.erase(obs.begin());
+
+        return true;
+    }
+
+    // Try to remove the second source, check if the first source fullfills all limits
+    if (obs[0].IsRangeValid(obs[1].begin, obs[1].end))
+    {
+        cout << "Second source [" << obs[1].name << "] removed" << endl;
+
+        obs[0].end = obs[1].end;
+        obs.erase(obs.begin()+1);
+
+        if (obs.size()==0 || obs[0].name!=obs[1].name)
+            return true;
+
+        obs[0].end = obs[1].end;
+        obs.erase(obs.begin()+1);
+
+        cout << "Combined first two indentical sources [" << obs[0].name << "] into one observation" << endl;
+
+        return true;
+    }
+
+    cout << "No reschedule possible within limit." << endl;
+
+    return false;
+}
+
+bool RescheduleLastSources(vector<Source> &obs)
+{
+    // If observation time is smaller than 40min for the first source
+    // extend it to 40min if zenith angle will not go above 60deg.
+    const int last = obs.size()-1;
+    if (obs.size()<2 || obs[last].duration()>=40./24/60 || obs[last].name=="SLEEP" || obs[last-1].name=="SLEEP")
+        return false;
+
+    cout << "Last source [" << obs[last].name << "] detected < 40min" << endl;
+
+    const double obs1_duration = obs[last].end - 40./24/60 - obs[last-1].begin;
+    const double obs0_begin    = obs[last].end - 40./24/60;
+
+    // Check that:
+    //  - the duration for the shrunken source obs[1] is still above 40min
+    //  - obs[0] does not exceed 60deg at the end of its new window
+    //  - obs[0] does not exceed any limit within the new window
+
+    if (obs1_duration>=40./24/60 && obs[last].IsRangeValid(obs0_begin, obs[last].begin))
+    {
+        obs[last].begin = obs0_begin;
+        obs[last-1].end = obs0_begin;
+
+        cout << "Last source [" << obs[last].name << "] extended to 40min" << endl;
+
+        return false;
+    }
+
+    // Try to remove the last source, check if second source fullfills all limits
+    if (obs[last-1].IsRangeValid(obs[last].begin, obs[last].end))
+    {
+        cout << "Last source [" << obs[last].name << "] removed" << endl;
+
+        obs[last-1].end = obs[last].end;
+        obs.pop_back();
+
+        return true;
+    }
+
+    // Try to remove the second last source, check if the first source fullfills all limits
+    if (obs[last].IsRangeValid(obs[last-1].begin, obs[last-1].end))
+    {
+        cout << "Second last source [" << obs[last-1].name << "] removed" << endl;
+
+        obs[last].begin = obs[last-1].begin;
+        obs.erase(obs.begin()+obs.size()-2);
+
+        if (obs.size()==0 || obs[last-1].name!=obs[last-2].name)
+            return true;
+
+        obs[last-2].end = obs[last-1].end;
+        obs.pop_back();
+
+        cout << "Combined last two indentical sources [" << obs[last-1].name << "] into one observation" << endl;
+
+        return true;
+    }
+
+    cout << "No reschedule possible within limit." << endl;
+
+    return false;
+}
+
+bool RescheduleIntermediateSources(vector<Source> &obs)
+{
+    for (size_t i=1; i<obs.size()-1; i++)
+    {
+        if (obs[i].duration()>=40./24/60)
+            continue;
+
+        if (obs[i-1].name=="SLEEP" && obs[i+1].name=="SLEEP")
+            continue;
+
+        cout << "Intermediate source [" << obs[i].name << "] detected < 40min" << endl;
+
+        double intersection = -1;
+
+        if (obs[i-1].name=="SLEEP")
+            intersection = obs[i].begin;
+
+        if (obs[i+1].name=="SLEEP")
+            intersection = obs[i].end;
+
+        if (obs[i-1].name==obs[i+1].name)
+            intersection = obs[i].begin;
+
+        if (intersection<0)
+        {
+            const uint32_t n = nearbyint((obs[i].end-obs[i].begin)*24*60);
+            for (uint32_t ii=0; ii<n; ii++)
+            {
+                const double jd = obs[i].begin+ii/24./60.;
+
+                const SolarObjects so(jd);
+                if (obs[i-1].getThreshold(so)>=obs[i+1].getThreshold(so))
+                {
+                    intersection = jd;
+                    break;
+                }
+            }
+        }
+
+        if ((obs[i-1].name!="SLEEP" && !obs[i-1].IsRangeValid(obs[i-1].end, intersection)) ||
+            (obs[i+1].name!="SLEEP" && !obs[i+1].IsRangeValid(intersection, obs[i+1].begin)))
+        {
+            cout << "No reschedule possible within limits." << endl;
+            continue;
+        }
+
+        cout << "Intermediate source [" << obs[i].name << "] removed" << endl;
+
+        const bool underflow = obs[i-1].duration()*24*60<40 || obs[i+1].duration()*24*60<40;
+
+        obs[i-1].end   = intersection;
+        obs[i+1].begin = intersection;
+        obs.erase(obs.begin()+i);
+
+        i--;
+
+        if (obs.size()>1 && obs[i].name==obs[i+1].name)
+        {
+            obs[i].end = obs[i+1].end;
+            obs.erase(obs.begin()+i+1);
+
+            cout << "Combined two surrounding indentical sources [" << obs[i].name << "] into one observation" << endl;
+
+            i--;
+
+            continue;
+        }
+
+        if (underflow)
+            cout << "WARNING - Neighbor source < 40min as well." << endl;
+    }
+    return false;
+}
+
+void RemoveMiniSources(vector<Source> &obs)
+{
+    for (size_t i=1; i<obs.size()-1; i++)
+    {
+        if (obs[i].duration()>=5./24/60)
+            continue;
+
+        if (obs[i-1].name=="SLEEP" && obs[i+1].name=="SLEEP")
+            continue;
+
+        cout << "Mini source [" << obs[i].name << "] detected < 5min" << endl;
+
+        if (obs[i-1].name=="SLEEP" && obs[i+1].name=="SLEEP")
+        {
+            obs[i-1].end = obs[i+2].begin;
+
+            obs.erase(obs.begin()+i+1);
+            obs.erase(obs.begin()+i);
+
+            i -= 2;
+
+            cout << "Combined two surrounding sleep into one" << endl;
+
+            continue;
+        }
+
+        if (obs[i-1].name=="SLEEP")
+        {
+            obs[i-1].end = obs[i+1].begin;
+            obs.erase(obs.begin()+i);
+            i--;
+
+            cout << "Extended previous sleep" << endl;
+
+            continue;
+        }
+
+        if (obs[i+1].name=="SLEEP")
+        {
+            obs[i+1].begin = obs[i-1].end;
+            obs.erase(obs.begin()+i);
+
+            cout << "Extended following sleep" << endl;
+
+            i--;
+            continue;
+        }
+    }
+}
+
+void CheckStartupAndShutdown(vector<Source> &obs)
+{
+    if (obs.front().name=="SLEEP")
+    {
+        obs.erase(obs.begin());
+        cout << "Detected sleep after startup... removed." << endl;
+    }
+
+    if (obs.back().name=="SLEEP")
+    {
+        obs.pop_back();
+        cout << "Detected sleep before shutdown... removed." << endl;
+    }
+}
+
+void Print(const vector<Source> &obs, double startup_offset)
+{
+    cout << Time(obs[0].begin-startup_offset).GetAsStr() << "  STARTUP\n";
+    for (const auto& src: obs)
+    {
+        string tm = Time(src.begin).GetAsStr();
+        if (src.preobs.size()>0)
+        {
+            for (const auto& pre: src.preobs)
+            {
+                cout << tm << "  " << pre << "\n";
+                tm = "                   ";
+            }
+        }
+
+        cout << tm << "  " << src.name << " [";
+        cout << src.duration()*24*60 << "'";
+        if (src.name!="SLEEP")
+            cout << Tools::Form("; %.1f/%.1f", src.zd(src.begin), src.zd(src.end));
+        cout << "]";
+
+        if (src.duration()*24*60<40)
+            cout << " (!)";
+
+        cout << "\n";
+    }
+    cout << Time(obs.back().end).GetAsStr() << "  SHUTDOWN" << endl;
+}
+
+int FillSql(Database &db, int enter, const vector<Source> &obs, double startup_offset)
+{
+    const string query0 = "SELECT COUNT(*) FROM Schedule WHERE DATE(ADDTIME(fStart, '-12:00')) = '"+Time(obs[0].begin).GetAsStr("%Y-%m-%d")+"'";
+
+    const mysqlpp::StoreQueryResult res0 = db.query(query0).store();
+
+    if (res0.num_rows()!=1)
+    {
+        cout << "Check for schedule size failed." << endl;
+        return 10;
+    }
+
+    if (uint32_t(res0[0][0])!=0)
+    {
+        cout << "Schedule not empty." << endl;
+        return 11;
+    }
+
+    const mysqlpp::StoreQueryResult res1 = db.query("SELECT fMeasurementTypeName, fMeasurementTypeKEY FROM MeasurementType").store();
+    map<string, uint32_t> types;
+    for (const auto &row: res1)
+        types.insert(make_pair(string(row[0]), uint32_t(row[1])));
+
+    ostringstream str;
+    str << "INSERT INTO Schedule (fStart, fUser, fMeasurementID, fMeasurementTypeKEY, fSourceKEY) VALUES ";
+
+    str << "('" << Time(obs[0].begin-startup_offset).GetAsStr() << "', 'auto', 0, " << types["Startup"] << ", NULL),\n"; // [Startup]\n";
+    for (const auto& src: obs)
+    {
+        string tm = Time(src.begin).GetAsStr();
+
+        /*
+         if (src.preobs.size()>0)
+         {
+         for (const auto& pre: src.preobs)
+         {
+         str << tm << "  " << pre << "\n";
+         tm = "                   ";
+         }
+         }*/
+
+        if (src.name!="SLEEP")
+            str << "('" << tm << "', 'auto', 0, " << types["Data"] << ", " << src.key << "),\n"; // [Data: " << src.name << "]\n";
+        else
+            str << "('" << tm << "', 'auto', 0, " << types["Sleep"] << ", NULL),\n"; // [Sleep]\n";
+    }
+
+    str << "('" << Time(obs.back().end).GetAsStr() << "', 'auto', 0, " << types["Shutdown"] << ", NULL)";// [Shutdown]";
+
+    if (enter<0)
+    {
+        cout << str.str() << endl;
+        return 0;
+    }
+
+    db.query(str.str()).exec();
+
+    cout << "Schedule entered successfully into database." << endl;
+    return 0;
+}
+
+int main(int argc, const char* argv[])
+{
+//    gROOT->SetBatch();
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // ------------------ Eval config ---------------------
+
+    const int enter = conf.Has("enter-schedule-into-database") ? (conf.Get<bool>("enter-schedule-into-database") ? 1 : -1) : 0;
+    if (enter && !conf.Has("schedule-database"))
+        throw runtime_error("enter-schedule-into-database required schedule-database.");
+
+    Time time;
+    if (conf.Has("date"))
+        time.SetFromStr(conf.Get<string>("date")+" 12:00:00");
+
+    if (enter && floor(time.JD())<ceil(Time().JD()))
+        throw runtime_error("Only future schedules can be entered into the database.");
+
+    Source::max_current = conf.Get<double>("max-current");
+    Source::max_zd      = conf.Get<double>("max-zd");
+
+    const double startup_offset = conf.Get<double>("startup.offset")/60/24;
+
+    const double angle_sun_set  = conf.Get<double>("data-taking.start");
+    const double angle_sun_rise = conf.Get<double>("data-taking.end");
+
+    if (startup_offset<0 || startup_offset>120)
+        throw runtime_error("Only values [0;120] are allowed for startup.offset");
+
+    if (angle_sun_set>-6)
+        throw runtime_error("datataking.start not allowed before sun at -6deg");
+
+    if (angle_sun_rise>-6)
+        throw runtime_error("datataking.end not allowed after sun at -6deg");
+
+    // -12: nautical
+    // Sun set with the same date than th provided date
+    // Sun rise on the following day
+    const RstTime sun_set  = GetSolarRst(floor(time.JD())-0.5, angle_sun_set);
+    const RstTime sun_rise = GetSolarRst(floor(time.JD())+0.5, angle_sun_rise);
+
+    const double sunset  = ceil(sun_set.set*24*60)   /24/60 + 1e-9;
+    const double sunrise = floor(sun_rise.rise*24*60)/24/60 + 1e-9;
+
+    cout << "\n";
+
+    cout << "Date: " << Time(floor(sunset)).GetAsStr() << "\n";
+    cout << "Set:  " << Time(sunset).GetAsStr()  << "  [" << Time(sun_set.set)   << "]\n";
+    cout << "Rise: " << Time(sunrise).GetAsStr() << "  [" << Time(sun_rise.rise) << "]\n";
+
+    cout << "\n";
+
+    cout << "Global maximum current:  " << Source::max_current << " uA/pix\n";
+    cout << "Global zenith distance:  " << Source::max_zd << " deg\n";
+
+    cout << "\n";
+
+    // ------------- Get Sources from databasse ---------------------
+
+    const vector<string> ourcenames = conf.Vec<string>("source");
+    const vector<string> sourcenames = conf.Vec<string>("source");
+    cout << "Nsources = " << sourcenames.size() << "\n";
+
+    string query = "SELECT fSourceName, fSourceKEY, fRightAscension, fDeclination FROM Source WHERE fSourceTypeKEY=1";
+    if (sourcenames.size()>0)
+        query += " AND fSourceName IN ('" + boost::algorithm::join(sourcenames, "', '")+"')";
+
+    const string sourcedb = conf.Get<string>("source-database");
+    const mysqlpp::StoreQueryResult res =
+        Database(sourcedb).query(query).store();
+
+    // ------------------ Eval config ---------------------
+
+    vector<Source> sources;
+    for (const auto &row: res)
+    {
+        const string name = string(row[0]);
+
+        Source src(name, row[1]);
+
+        src.equ.ra  = double(row[2])*15;
+        src.equ.dec = double(row[3]);
+
+        src.maxzd = MyDouble(conf, "setup."+name+".max-zd");
+        src.maxcurrent = MyDouble(conf, "setup."+name+".max-current");
+        src.penalty = conf.Has("setup."+name+".penalty") ?
+            conf.Get<double>("setup."+name+".penalty") : 1;
+
+        src.preobs = conf.Vec<string>("preobs."+name);
+
+
+        cout << "[" << name << "]";
+
+        if (src.maxzd.valid)
+            cout << " Zd<" << src.maxzd.val;
+        if (src.penalty!=1)
+            cout << " Penalty=" << src.penalty;
+
+        cout << " " << boost::algorithm::join(src.preobs, "+") << endl;
+
+        /*
+         RstTime t1 = GetObjectRst(floor(sunset)-1, src.equ);
+         RstTime t2 = GetObjectRst(floor(sunset),   src.equ);
+
+         src.rst.transit = t1.transit<floor(sunset) ? t2.transit : t1.transit;
+         src.rst.rise = t1.rise>src.rst.transit ? t2.rise : t1.rise;
+         src.rst.set  = t1.set <src.rst.transit ? t2.set  : t1.set;
+         */
+
+        sources.emplace_back(src);
+    }
+    cout << endl;
+
+    // -------------------------------------------------------------------------
+
+    vector<Source> obs;
+
+    const uint32_t n = nearbyint((sunrise-sunset)*24*60);
+    for (uint32_t i=0; i<n; i++)
+    {
+        const double jd = sunset + i/24./60.;
+
+        const SolarObjects so(jd);
+
+        vector<Source> vis;
+        for (auto& src: sources)
+        {
+            if (src.calcThreshold(so))
+                vis.emplace_back(src);
+        }
+
+        // In case no source was found, add a sleep source
+        Source src("SLEEP");
+        vis.emplace_back(src);
+
+        // Source has higher priority if minimum observation time not yet fullfilled
+        sort(vis.begin(), vis.end(), SortByThreshold);
+
+        if (obs.size()>0 && obs.back().name==vis[0].name)
+            continue;
+
+        vis[0].begin = jd;
+        obs.emplace_back(vis[0]);
+    }
+
+    if (obs.size()==0)
+    {
+        cout << "No source found." << endl;
+        return 1;
+    }
+
+    // -------------------------------------------------------------------------
+
+    for (auto it=obs.begin(); it<obs.end()-1; it++)
+        it[0].end = it[1].begin;
+    obs.back().end = sunrise;
+
+    // -------------------------------------------------------------------------
+
+    Print(obs, startup_offset);
+    cout << endl;
+
+    // -------------------------------------------------------------------------
+
+    while (RescheduleFirstSources(obs));
+    while (RescheduleLastSources(obs));
+    while (RescheduleIntermediateSources(obs));
+
+    RemoveMiniSources(obs);
+    CheckStartupAndShutdown(obs);
+
+    // ---------------------------------------------------------------------
+
+    cout << endl;
+    Print(obs, startup_offset);
+    cout << endl;
+
+    // ---------------------------------------------------------------------
+
+    if (!enter)
+        return 0;
+
+    const string scheduledb = conf.Get<string>("schedule-database");
+
+    Database db(scheduledb);
+
+    if (enter>0)
+        db.query("LOCK TABLES Schedule WRITE");
+
+    const int rc = FillSql(db, enter, obs, startup_offset);
+
+    if (enter>0)
+        db.query("UNLOCK TABLES");
+
+    // ---------------------------------------------------------------------
+
+    return rc;
+}
Index: branches/FACT++_part_filenames/src/mcp.cc
===================================================================
--- branches/FACT++_part_filenames/src/mcp.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/mcp.cc	(revision 18732)
@@ -0,0 +1,706 @@
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersFAD.h"
+#include "HeadersMCP.h"
+#include "HeadersRateControl.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineMCP : public StateMachineDim
+{
+private:
+    vector<bool> fFadConnected;
+    vector<bool> fFadNeedsReset;
+
+    vector<bool> fFadCratesForReset;
+    vector<bool> fFadBoardsForConnection;
+
+    uint16_t fNumConnectedFtu;
+    uint16_t fNumConnectedFad;
+
+    uint16_t fNumReset;
+
+    DimVersion fDim;
+    DimDescribedState fDimFTM;
+    DimDescribedState fDimFAD;
+    DimDescribedState fDimLog;
+    DimDescribedState fDimRC;
+
+    DimDescribedService fService;
+
+    Time fFadTimeout;
+
+    int HandleFadConnections(const EventImp &d)
+    {
+        if (d.GetSize()!=41)
+            return GetCurrentState();
+
+        const uint8_t *ptr = d.Ptr<uint8_t>();
+
+        fNumConnectedFad = 0;
+        fFadConnected.assign(40, false);
+
+        vector<bool> reset(4);
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            // disconnected: ignore
+            if (stat1==0 && stat2==0)
+                continue;
+
+            fFadConnected[i] = true;
+
+            if (stat1>=2 && stat2==8)
+                fNumConnectedFad++;
+
+            // Does not need reset
+            if (stat1>2 && stat2==8)
+                continue;
+
+            // Not configured (stat1==2?kLedGreen:kLedGreenCheck)
+            // Connection problem (stat1==1&&stat2==1?kLedRed:kLedOrange)
+            reset[i/10] = true;
+        }
+        return GetCurrentState();
+    }
+
+    int HandleFtmStaticData(const EventImp &d)
+    {
+        if (d.GetSize()!=sizeof(FTM::DimStaticData))
+            return GetCurrentState();
+
+        const FTM::DimStaticData &sdata = d.Ref<FTM::DimStaticData>();
+
+        fNumConnectedFtu = 0;
+        for (int i=0; i<40; i++)
+        {
+            if (sdata.IsActive(i))
+                fNumConnectedFtu++;
+        }
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim    << endl;
+        Out() << fDimFTM << endl;
+        Out() << fDimFAD << endl;
+        Out() << fDimLog << endl;
+        Out() << fDimRC  << endl;
+
+        return GetCurrentState();
+    }
+
+    int GetReady()
+    {
+        return GetCurrentState();
+    }
+
+    int StopRun()
+    {
+	if (fDimFTM.state()==FTM::State::kTriggerOn)
+	{
+            Message("Stopping FTM");
+	    Dim::SendCommandNB("FTM_CONTROL/STOP_TRIGGER");
+	}
+
+        // FIXME: Do step 2 only when FTM is stopped
+        if (fDimFAD.state()==FAD::State::kConnected || fDimFAD.state()==FAD::State::kRunInProgress)
+        {
+            //Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE",      bool(false));
+	    Message("Stopping FAD");
+            Dim::SendCommandNB("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", bool(false));
+            if (fDimFAD.state()==FAD::State::kRunInProgress)
+                Dim::SendCommandNB("FAD_CONTROL/CLOSE_OPEN_FILES");
+        }
+
+        return GetCurrentState();
+    }
+
+    int Reset()
+    {
+        if (GetCurrentState()<MCP::State::kConfiguring1 ||
+            GetCurrentState()>MCP::State::kConfigured)
+            return GetCurrentState();
+
+        fRunType = "";
+	Message("Reseting configuration states of FAD and FTM");
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+	Dim::SendCommandNB("FAD_CONTROL/RESET_CONFIGURE");
+	Dim::SendCommandNB("RATE_CONTROL/STOP");
+
+        Update(MCP::State::kIdle);
+        return MCP::State::kIdle;
+        /*
+        // FIMXE: Handle error states!
+        if (fDimLog.state()>=20)//kSM_NightlyOpen
+            Dim::SendCommand("DATA_LOGGER/STOP");
+
+        if (fDimLog.state()==0)
+            Dim::SendCommand("DATA_LOGGER/WAIT_FOR_RUN_NUMBER");
+
+        if (fDimFAD.state()==FAD::State::kConnected)
+        {
+            Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", bool(false));
+            Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", bool(false));
+        }
+
+        if (fDimFTM.state()==FTM::State::kTakingData)
+            Dim::SendCommand("FTM_CONTROL/STOP");
+
+        return GetCurrentState(); */
+    }
+
+    int64_t fMaxTime;
+    int64_t fNumEvents;
+    string  fRunType;
+
+    int StartRun(const EventImp &evt)
+    {
+        if (!fDimFTM.online())
+        {
+            Error("No connection to ftmcontrol (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimFAD.online())
+        {
+            Warn("No connection to fadcontrol (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimLog.online())
+        {
+            Warn("No connection to datalogger (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimRC.online())
+        {
+            Warn("No connection to ratecontrol (see PRINT).");
+            return GetCurrentState();
+        }
+
+        fMaxTime   = evt.Get<int64_t>();
+        fNumEvents = evt.Get<int64_t>(8);
+        fRunType   = evt.Ptr<char>(16);
+
+        fNumReset  = 0;
+
+        ostringstream str;
+        str << "Starting configuration '" << fRunType << "' for new run";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << " [";
+        if (fNumEvents>0)
+            str << fNumEvents << " events";
+        if (fNumEvents>0 && fMaxTime>0)
+            str << " / ";
+        if (fMaxTime>0)
+            str << fMaxTime << "s";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << "]";
+        Message(str);
+
+        // Strictly speaking, it is not necessary, but
+        // stopping the ratecontrol before we configure
+        // the FTM ensures that no threshold setting commands
+        // interfere with the configuration of the FTM.
+        if (fDimRC.state()!=RateControl::State::kConnected)
+        {
+            Dim::SendCommandNB("RATE_CONTROL/STOP");
+            Message("Stopping ratecontrol");
+        }
+
+        if (fDimLog.state()<30/*kSM_WaitForRun*/)
+        {
+            Dim::SendCommandNB("DATA_LOGGER/START_RUN_LOGGING");
+            Message("Starting datalogger");
+        }
+
+        Update(MCP::State::kConfiguring1);
+        return MCP::State::kConfiguring1;
+    }
+
+    struct Value
+    {
+        uint64_t time;
+        uint64_t nevts;
+        char type[];
+    };
+
+    Value *GetBuffer()
+    {
+        const size_t len = sizeof(Value)+fRunType.length()+1;
+
+        char *buf = new char[len];
+
+        Value *val = reinterpret_cast<Value*>(buf);
+
+        val->time  = fMaxTime;
+        val->nevts = fNumEvents;
+
+        strcpy(val->type, fRunType.c_str());
+
+        return val;
+    }
+
+    void Update(int newstate)
+    {
+        Value *buf = GetBuffer();
+        fService.setQuality(newstate);
+        fService.setData(buf, sizeof(Value)+fRunType.length()+1);
+        fService.Update();
+        delete buf;
+    }
+
+    void ConfigureFAD()
+    {
+        Value *buf = GetBuffer();
+
+        Dim::SendCommandNB("FAD_CONTROL/CONFIGURE", buf, sizeof(Value)+fRunType.length()+1);
+	Message("Configuring FAD");
+
+        delete buf;
+    }
+
+    int HandleStateChange()
+    {
+        if (!fDim.online())
+            return MCP::State::kDimNetworkNA;
+
+        if (fDimFTM.state() >= FTM::State::kConnected &&
+            fDimFAD.state() >= FAD::State::kConnected &&
+            fDimLog.state() >= kSM_Ready)
+            return GetCurrentState()<=MCP::State::kIdle ? MCP::State::kIdle : GetCurrentState();
+
+        if (fDimFTM.state() >-2 &&
+            fDimFAD.state() >-2 &&
+            fDimLog.state() >-2 &&
+            fDimRC.state()  >-2)
+            return MCP::State::kConnected;
+
+        if (fDimFTM.state() >-2 ||
+            fDimFAD.state() >-2 ||
+            fDimLog.state() >-2 ||
+            fDimRC.state()  >-2)
+            return MCP::State::kConnecting;
+
+        return MCP::State::kDisconnected;
+    }
+
+    int Execute()
+    {
+        // ========================================================
+
+        if (GetCurrentState()==MCP::State::kConfiguring1)
+        {
+            if (fDimRC.state()!=RateControl::State::kConnected)
+                return MCP::State::kConfiguring1;
+
+            Dim::SendCommandNB("FTM_CONTROL/CONFIGURE", fRunType);
+            Message("Configuring Trigger (FTM)");
+
+            Update(MCP::State::kConfiguring2);
+            return MCP::State::kConfiguring2;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfiguring2)
+        {
+            if (fDimFTM.state() != FTM::State::kConfigured1 ||
+                fDimLog.state()<30 || fDimLog.state()>0xff ||
+                fDimRC.state()!=RateControl::State::kConnected)
+                return MCP::State::kConfiguring2;
+
+            // For calibration, ratecontrol will globally set all threshold
+            // to make sure that does not interfer with the configuration,
+            // it is only done when the ftm reports Configured
+            Dim::SendCommandNB("RATE_CONTROL/CALIBRATE_RUN", fRunType);
+            Message("Starting Rate Control");
+
+            ConfigureFAD();
+
+            fFadTimeout = Time();
+
+            Update(MCP::State::kConfiguring3);
+            return MCP::State::kConfiguring3;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfiguring3)
+        {
+            /*
+            // If everything is configured but the FADs
+            // we run into a timeout and some FAD need to be reset
+            // then we start an automatic crate reset
+            if (fDimFTM.state() == FTM::State::kConfigured &&
+                fDimFAD.state() != FAD::State::kConfigured &&
+                //fDimRC.state()  >  RateControl::State::kSettingGlobalThreshold &&
+                fFadTimeout+boost::posix_time::seconds(15)<Time() &&
+                count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0)
+            {
+                Update(MCP::State::kCrateReset0);
+                return MCP::State::kCrateReset0;
+            }
+            */
+            // If something is not yet properly configured: keep state
+            if (fDimFTM.state() != FTM::State::kConfigured1 ||
+                fDimFAD.state() != FAD::State::kConfigured ||
+                fDimRC.state()  <= RateControl::State::kSettingGlobalThreshold)
+                return MCP::State::kConfiguring3;
+
+            // Note that before the trigger is started, the ratecontrol
+            // must not be InProgress. In rare cases there is interference.
+            Dim::SendCommandNB("FTM_CONTROL/START_TRIGGER");
+            Message("Starting Trigger (FTM)");
+
+            Update(MCP::State::kConfigured);
+            return MCP::State::kConfigured;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfigured)
+        {
+            if (fDimFTM.state() != FTM::State::kTriggerOn)
+                return MCP::State::kConfigured;
+
+            Update(MCP::State::kTriggerOn);
+            return MCP::State::kTriggerOn;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kTriggerOn)
+        {
+            if (fDimFTM.state() != FTM::State::kTriggerOn)
+            {
+                Update(MCP::State::kIdle);
+                return MCP::State::kIdle;
+            }
+
+            if (fDimFAD.state() != FAD::State::kRunInProgress)
+                return MCP::State::kTriggerOn;
+
+            Update(MCP::State::kTakingData);
+            return MCP::State::kTakingData;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kTakingData)
+        {
+            if (/*fDimFTM.state()==FTM::State::kTriggerOn &&*/
+                fDimFAD.state()==FAD::State::kRunInProgress)
+                return MCP::State::kTakingData;
+
+            Update(MCP::State::kIdle);
+            return MCP::State::kIdle;
+        }
+
+        // ========================================================
+        /*
+        if (GetCurrentState()==MCP::State::kCrateReset0)
+        {
+            static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 0 };
+
+            Dim::SendCommandNB("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+
+            fFadCratesForReset      = fFadNeedsReset;
+            fFadBoardsForConnection = fFadConnected;
+
+            for (int c=0; c<4; c++)
+                if (fFadNeedsReset[c])
+                    for (int b=0; b<10; b++)
+                        Dim::SendCommandNB("FAD_CONTROL/DISCONNECT", uint16_t(c*10+b));
+
+            fNumReset++;
+
+            Update(MCP::State::kCrateReset1);
+            return MCP::State::kCrateReset1;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset1)
+        {
+            if (fNumConnectedFtu>0 || count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0)
+                return MCP::State::kCrateReset1;
+
+            for (int i=0; i<4; i++)
+                if (fFadCratesForReset[i])
+                    Dim::SendCommandNB("FAD_CONTROL/RESET_CRATE", uint16_t(i));
+
+            fFadTimeout = Time();
+
+            Update(MCP::State::kCrateReset2);
+            return MCP::State::kCrateReset2;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset2)
+        {
+            if (fFadTimeout+boost::posix_time::seconds(45)>Time())
+                return MCP::State::kCrateReset2;
+
+            static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 1 };
+
+            Dim::SendCommandNB("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+
+            for (int c=0; c<4; c++)
+                if (fFadCratesForReset[c])
+                    for (int b=0; b<10; b++)
+                        if (fFadBoardsForConnection[c*10+b])
+                            Dim::SendCommandNB("FAD_CONTROL/CONNECT", uint16_t(c*10+b));
+
+            Update(MCP::State::kCrateReset3);
+            return MCP::State::kCrateReset3;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset3)
+        {
+            if (fNumConnectedFtu<40 || fFadBoardsForConnection!=fFadConnected)
+                return MCP::State::kCrateReset3;
+
+            if (count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0 && fNumReset<6)
+            {
+                Update(MCP::State::kCrateReset0);
+                return MCP::State::kCrateReset0;
+            }
+
+            // restart configuration
+            Update(MCP::State::kConfiguring1);
+            return MCP::State::kConfiguring1;
+        }
+        */
+        // ========================================================
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineMCP(ostream &out=cout) : StateMachineDim(out, "MCP"),
+        fFadNeedsReset(4), fNumConnectedFtu(40),
+        fDimFTM("FTM_CONTROL"),
+        fDimFAD("FAD_CONTROL"),
+        fDimLog("DATA_LOGGER"),
+        fDimRC("RATE_CONTROL"),
+        fService("MCP/CONFIGURATION", "X:1;X:1;C", "Run configuration information"
+                 "|MaxTime[s]:Maximum time before the run gets stopped"
+                 "|MaxEvents[num]:Maximum number of events before the run gets stopped"
+                 "|Name[text]:Name of the chosen configuration")
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimFAD.Subscribe(*this);
+        fDimLog.Subscribe(*this);
+        fDimRC.Subscribe(*this);
+
+        fDim.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimFTM.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimFAD.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimLog.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimRC.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+
+        Subscribe("FAD_CONTROL/CONNECTIONS")
+            (bind(&StateMachineMCP::HandleFadConnections, this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineMCP::HandleFtmStaticData, this, placeholders::_1));
+
+        // State names
+        AddStateName(MCP::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "DIM dns server not available.");
+        AddStateName(MCP::State::kDisconnected, "Disconnected",
+                     "Neither ftmctrl, fadctrl, datalogger nor rate control online.");
+        AddStateName(MCP::State::kConnecting, "Connecting",
+                     "Either ftmctrl, fadctrl, datalogger or rate control not online.");
+        AddStateName(MCP::State::kConnected, "Connected",
+                     "All needed subsystems online.");
+        AddStateName(MCP::State::kIdle, "Idle",
+                     "Waiting for next configuration command");
+        AddStateName(MCP::State::kConfiguring1, "Configuring1",
+                     "Starting configuration procedure, checking datalogger/ratecontrol state");
+        AddStateName(MCP::State::kConfiguring2, "Configuring2",
+                     "Starting ratecontrol, waiting for FTM to get configured and Datalogger to get ready");
+        AddStateName(MCP::State::kConfiguring3, "Configuring3",
+                     "Waiting for FADs and ratecontrol to get ready");
+        /*
+        AddStateName(MCP::State::kCrateReset0, "CrateReset0",
+                     "Disabling FTUs, disconnecting FADs");
+        AddStateName(MCP::State::kCrateReset1, "CrateReset1",
+                     "Waiting for FTUs to be disabled and for FADs to be disconnected");
+        AddStateName(MCP::State::kCrateReset2, "CrateReset2",
+                     "Waiting 45s");
+        AddStateName(MCP::State::kCrateReset3, "CrateReset3",
+                     "Waiting for FTUs to be enabled and for FADs to be re-connected");
+        */
+        AddStateName(MCP::State::kConfigured, "Configured",
+                     "Everything is configured, trigger will be switched on now");
+        AddStateName(MCP::State::kTriggerOn, "TriggerOn",
+                     "The trigger is switched on, waiting for FAD to receive data");
+        AddStateName(MCP::State::kTakingData, "TakingData",
+                     "The trigger is switched on, FADs are sending data");
+
+
+        AddEvent("START", "X:2;C")//, MCP::State::kIdle)
+            (bind(&StateMachineMCP::StartRun, this, placeholders::_1))
+            ("Start the configuration and data taking for a run-type of a pre-defined setup"
+             "|TimeMax[s]:Maximum number of seconds before the run will be closed automatically"
+             "|NumMax[count]:Maximum number events before the run will be closed automatically"
+             "|Name[text]:Name of the configuration to be used for taking data");
+
+        AddEvent("STOP")
+            (bind(&StateMachineMCP::StopRun, this))
+            ("Stops the trigger (either disables the FTM trigger or the internal DRS trigger)");
+
+        AddEvent("RESET")
+            (bind(&StateMachineMCP::Reset, this))
+            ("If a configuration blockes because a system cannot configure itself properly, "
+             "this command can be called to leave the configuration procedure. The command "
+             "is also propagated to FTM and FAD");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineMCP::Print, this))
+            ("Print the states and connection status of all systems connected to the MCP.");
+    }
+
+    int EvalOptions(Configuration &)
+    {
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineMCP>(conf);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ftmctrl controls the FSC (FACT Slow Control) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fscctrl [-c type] [OPTIONS]\n"
+        "  or:  fscctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineMCP>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/moon.cc
===================================================================
--- branches/FACT++_part_filenames/src/moon.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/moon.cc	(revision 18732)
@@ -0,0 +1,213 @@
+#include <libnova/solar.h>
+#include <libnova/lunar.h>
+#include <libnova/rise_set.h>
+#include <libnova/transform.h>
+
+#include "Time.h"
+#include "Configuration.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class Moon
+{
+public:
+    Time time;
+
+    double ra;
+    double dec;
+
+    double zd;
+    double az;
+
+    double disk;
+
+    bool visible;
+
+    Time fRise;
+    Time fTransit;
+    Time fSet;
+
+    int state;
+
+    Moon() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Moon(double lon, double lat, const Time &t=Time()) : time(t)
+    {
+        const double JD = time.JD();
+
+        ln_lnlat_posn observer;
+        observer.lng = lon;
+        observer.lat = lat;
+
+        ln_rst_time moon;
+        ln_get_lunar_rst(JD-0.5, &observer, &moon);
+
+        fRise    = Time(moon.rise);
+        fTransit = Time(moon.transit);
+        fSet     = Time(moon.set);
+
+        //visible =
+        //    ((JD>moon.rise && JD<moon.set ) && moon.rise<moon.set) ||
+        //    ((JD<moon.set  || JD>moon.rise) && moon.rise>moon.set);
+
+        const bool is_up      = JD>moon.rise;
+        const bool is_sinking = JD>moon.transit;
+        const bool is_dn      = JD>moon.set;
+
+        ln_get_lunar_rst(JD+0.5, &observer, &moon);
+        if (is_up)
+            fRise = Time(moon.rise);
+        if (is_sinking)
+            fTransit = Time(moon.transit);
+        if (is_dn)
+            fSet = Time(moon.set);
+
+        ln_equ_posn pos;
+        ln_get_lunar_equ_coords(JD, &pos);
+
+        ln_hrz_posn hrz;
+        ln_get_hrz_from_equ (&pos, &observer, JD, &hrz);
+        az =    hrz.az;
+        zd = 90-hrz.alt;
+
+        ra  = pos.ra/15;
+        dec = pos.dec;
+
+        disk = ln_get_lunar_disk(JD)*100;
+        state = 0;
+        if (fRise   <fTransit && fRise   <fSet)     state = 0;  // not visible
+        if (fTransit<fSet     && fTransit<fRise)    state = 1;  // before culm
+        if (fSet    <fRise    && fSet    <fTransit) state = 2;  // after culm
+
+        visible = state!=0;
+
+        // 0: not visible
+        // 1: visible before cul
+        // 2: visible after cul
+    }
+
+    double Angle(double r, double d) const
+    {
+        const double theta0 = M_PI/2-d*M_PI/180;
+        const double phi0   = r*M_PI/12;
+
+        const double theta1 = M_PI/2-dec*M_PI/180;
+        const double phi1   = ra*M_PI/12;
+
+        const double x0 = sin(theta0) * cos(phi0);
+        const double y0 = sin(theta0) * sin(phi0);
+        const double z0 = cos(theta0);
+
+        const double x1 = sin(theta1) * cos(phi1);
+        const double y1 = sin(theta1) * sin(phi1);
+        const double z1 = cos(theta1);
+
+        double arg = x0*x1 + y0*y1 + z0*z1;
+        if(arg >  1.0) arg =  1.0;
+        if(arg < -1.0) arg = -1.0;
+
+        return acos(arg) * 180/M_PI;
+    }
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("ra",        var<double>(), "Source right ascension")
+        ("dec",       var<double>(), "Source declination")
+        ("date-time", var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                   , "SQL time (UTC)")
+        ;
+
+    po::positional_options_description p;
+    p.add("date-time", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "moon - The moon calculator\n"
+        "\n"
+        "Usage: moon sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+    if (conf.Has("ra")^conf.Has("dec"))
+    {
+        cout << "ERROR - Either --ra or --dec missing." << endl;
+        return 1;
+    }
+
+    Time time;
+    time.SetFromStr(conf.Get<string>("date-time"));
+
+    ln_lnlat_posn observer;
+    observer.lng = -(17.+53./60+26.525/3600);
+    observer.lat =   28.+45./60+42.462/3600; 
+
+    Moon moon(observer.lng, observer.lat, time);
+
+    cout << setprecision(15);
+    cout << time.GetAsStr() << '\n';
+
+    ln_equ_posn pos;
+    ln_hrz_posn hrz;
+    ln_get_solar_equ_coords(time.JD(), &pos);
+    ln_get_hrz_from_equ(&pos, &observer, time.JD(), &hrz);
+    cout << 90-hrz.alt   << '\n';
+
+    const double   kSynMonth = 29.53058868; // synodic month (new Moon to new Moon)
+    const double   kEpoch0   = 44240.37917; // First full moon after 1980/1/1
+    const double   kInstall  = 393;         // Moon period if FACT installation
+    const uint32_t period    = floor(((time.Mjd()-kEpoch0)/kSynMonth-kInstall));
+
+    cout << period       << '\n';
+    cout << moon.visible << '\n';
+    cout << moon.disk    << '\n';
+    cout << moon.zd      << '\n';
+
+    if (conf.Has("ra") && conf.Has("dec"))
+    {
+        pos.ra  = conf.Get<double>("ra")*15;
+        pos.dec = conf.Get<double>("dec");
+
+        cout << moon.Angle(pos.ra/15, pos.dec) << '\n';
+
+        // Trick 17
+        moon.ra  = pos.ra;
+        moon.dec = pos.dec;
+
+        // Sun distance
+        cout << moon.Angle(pos.ra/15, pos.dec) << '\n';
+    }
+
+    cout << endl;
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/pfminictrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/pfminictrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/pfminictrl.cc	(revision 18732)
@@ -0,0 +1,430 @@
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersPFmini.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionPFmini : public Connection
+{
+protected:
+    virtual void Update(const PFmini::Data &)
+    {
+    }
+
+private:
+    bool fIsVerbose;
+    uint16_t fInterval;
+
+    bool fReceived;
+
+    int fState;
+
+    vector<int16_t> fBuffer;
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int /*type*/)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || (err && err!=ba::error::eof))
+        {
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(false);
+            return;
+        }
+
+        const uint16_t chk0 = Tools::Fletcher16(fBuffer.data(), 2);
+        const uint16_t chk1 = uint16_t(fBuffer[2]);
+
+        if (chk0!=chk1)
+        {
+            ostringstream out;
+            out << "Checksum error (";
+            out << hex << setfill('0');
+            out << setw(4) << fBuffer[0] << ":";
+            out << setw(4) << fBuffer[1] << "|";
+            out << setw(4) << fBuffer[2] << "!=";
+            out << setw(4) << chk1 << ")";
+
+            Error(out);
+
+            PostClose(false);
+
+            return;
+        }
+
+        PFmini::Data data;
+        data.hum  = 110*fBuffer[0]/1024.;
+        data.temp = 110*fBuffer[1]/1024.-20;
+
+        Update(data);
+
+        ostringstream msg;
+        msg << fixed << setprecision(1) << "H=" << data.hum << "% T=" << data.temp << "°C"   ;
+        Message(msg);
+
+        fState = PFmini::State::kReceiving;
+        fReceived = true;
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // Re-open connection
+        PostClose(true);
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << " timed out: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!fReceived)
+            PostClose(false);
+    }
+
+    void Request()
+    {
+        fReceived = false;
+
+        string cmd =  "GET / HTTP/1.1\r\n\r\n";
+        PostMessage(cmd);
+
+        fBuffer.resize(6);
+        AsyncRead(ba::buffer(fBuffer));
+        AsyncWait(fInTimeout, 3000, &Connection::HandleReadTimeout);
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionPFmini::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        // Keep state kReceiving
+        if (fState<PFmini::State::kConnected)
+            fState = PFmini::State::kConnected;
+
+        Request();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionPFmini(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    int GetState() const
+    {
+        if (!is_open())
+            return PFmini::State::kDisconnected;
+
+        return fState;
+    }
+};
+
+const uint16_t ConnectionPFmini::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionPFmini
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionPFmini(ioservice, imp),
+        fDim("PFMINI_CONTROL/DATA", "F:1;F:1",
+             "Humidity and temperature as read out from the PFmini arduino"
+             "|Humidity[%]:Measures humidity"
+             "|Temperature[deg]:Measured temperature")
+    {
+    }
+
+    void Update(const PFmini::Data &data)
+    {
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePFminiControl : public StateMachineAsio<T>
+{
+private:
+    S fPFmini;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fPFmini.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fPFmini.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fPFmini.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fPFmini.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPFmini.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fPFmini.GetState();
+    }
+
+
+public:
+    StateMachinePFminiControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "PFMINI_CONTROL"), fPFmini(*this, *this)
+    {
+        // State names
+        T::AddStateName(PFmini::State::kDisconnected, "Disconnected",
+                        "No connection to web-server could be established recently");
+
+        T::AddStateName(PFmini::State::kConnected, "Connected",
+                        "Connection established, but status still not known");
+
+        T::AddStateName(PFmini::State::kReceiving, "Receiving",
+                        "Connection established, receiving reports");
+
+        // Commands
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachinePFminiControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachinePFminiControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachinePFminiControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to PFmini, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPFmini.SetVerbose(!conf.Get<bool>("quiet"));
+        fPFmini.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPFmini.SetEndpoint(conf.Get<string>("addr"));
+        fPFmini.SetInterval(conf.Get<uint16_t>("interval"));
+        fPFmini.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePFminiControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("PFmini control");
+    control.add_options()
+        ("no-dim,d", po_switch(), "Disable dim services")
+        ("addr,a",   var<string>("10.0.130.140:80"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ("interval", var<uint16_t>(15), "Interval in seconds at which a report is requested.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The pfminictrl is an interface to the PFmini arduino.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: pfminictrlö [-c type] [OPTIONS]\n"
+        "  or:  pfminictrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionPFmini>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionPFmini>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionPFmini>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/pwrctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/pwrctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/pwrctrl.cc	(revision 18732)
@@ -0,0 +1,590 @@
+#include <boost/array.hpp>
+
+#include <string>
+
+#include <QtXml/QDomDocument>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersPower.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionInterlock : public Connection
+{
+protected:
+    bool fIsValid;
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    Power::Status fStatus;
+
+    virtual void Update(const Power::Status &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1==string::npos)
+        {
+            Warn("HTTP header not found.");
+            PostClose(false);
+            return;
+        }
+
+        fRdfData.erase(0, p1+4);
+        fRdfData.insert(0, "<?xml version=\"1.0\"?>\n");
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRdfData.c_str()), false))
+        {
+            Warn("Parsing of html failed.");
+            PostClose(false);
+            return;
+        }
+
+        if (fDebugRx)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const QDomNodeList imageElems = doc.elementsByTagName("span");
+
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            const QDomElement e = imageElems.item(i).toElement();
+
+            const QDomNamedNodeMap att = e.attributes();
+
+            if (fStatus.Set(att))
+                fIsValid = true;
+        }
+
+        if (fIsVerbose)
+            fStatus.Print(Out());
+
+        Update(fStatus);
+
+        fRdfData = "";
+
+        fLastReport = Time();
+        PostClose(false);
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                if (!fRdfData.empty())
+                    ProcessAnswer();
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+                ProcessAnswer();
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionInterlock::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionInterlock(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsValid(false), fIsVerbose(true), fDebugRx(false), fLastReport(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+    }
+
+    void Request()
+    {
+        string cmd = "GET " + fSite;
+
+        if (!fNextCommand.empty())
+            cmd += "?" + fNextCommand;
+
+        cmd += " HTTP/1.1\r\n";
+        cmd += "\r\n";
+
+        PostMessage(cmd);
+
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionInterlock::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        // Timeout
+        if (!fLastReport.IsValid() || Time()>fLastReport+boost::posix_time::seconds(fInterval*3))
+            return Power::State::kDisconnected;
+
+        // No data received yet
+        if (!fIsValid)
+            return Power::State::kConnected;
+
+        /*
+         bool fWaterFlowOk;
+         bool fWaterLevelOk;
+         bool fPwrBiasOn;
+         bool fPwr24VOn;
+         bool fPwrPumpOn;
+         bool fPwrDriveOn;
+         bool fDriveMainSwitchOn;
+         bool fDriveFeedbackOn;
+        */
+
+        if (!fStatus.fWaterLevelOk || (fStatus.fPwrPumpOn && !fStatus.fWaterFlowOk))
+            return Power::State::kCoolingFailure;
+
+        const int rc =
+            (fStatus.fPwrBiasOn       ? Power::State::kBiasOn   : 0) |
+            (fStatus.fPwrPumpOn       ? Power::State::kCameraOn : 0) |
+            (fStatus.fDriveFeedbackOn ? Power::State::kDriveOn  : 0);
+
+        return rc==0 ? Power::State::kSystemOff : rc;
+    }
+};
+
+const uint16_t ConnectionInterlock::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionInterlock
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionInterlock(ioservice, imp),
+        fDim("PWR_CONTROL/DATA", "C:1;C:1;C:1;C:1;C:1;C:1;C:1;C:1",
+             "|water_lvl[bool]:Water level ok"
+             "|water_flow[bool]:Water flowing"
+             "|pwr_24V[bool]:24V power enabled"
+             "|pwr_pump[bool]:Pump power enabled"
+             "|pwr_bias[bool]:Bias power enabled"
+             "|pwr_drive[bool]:Drive power enabled (command value)"
+             "|main_drive[bool]:Drive manual main switch on"
+             "|feedback_drive[bool]:Drive power on (feedback value)")
+    {
+    }
+
+    void Update(const Power::Status &status)
+    {
+        fDim.setQuality(status.GetVal());
+        fDim.Update(status);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePowerControl : public StateMachineAsio<T>
+{
+private:
+    S fPower;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Post(const EventImp &evt)
+    {
+        fPower.Post(evt.GetText());
+        return T::GetCurrentState();
+    }
+
+    int SetCameraPower(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCameraPower", 1))
+            return T::kSM_FatalError;
+
+        fLastCommand = Time();
+        fPower.Post(evt.GetBool() ? "cam_on=Camera+ON" : "cam_off=Camera+OFF");
+        return T::GetCurrentState();
+    }
+
+    int ToggleDrive()
+    {
+        fLastCommand = Time();
+        fPower.Post("dt=Drive+ON%2FOFF");
+        return T::GetCurrentState();
+
+    }
+
+    int Execute()
+    {
+        const int rc = fPower.GetState();
+
+        if (rc==Power::State::kCoolingFailure && T::GetCurrentState()!=Power::State::kCoolingFailure)
+            T::Error("Power control unit reported cooling failure.");
+
+        return fPower.GetState();
+    }
+
+
+public:
+    StateMachinePowerControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "PWR_CONTROL"), fPower(*this, *this)
+    {
+        // State names
+        T::AddStateName(Power::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Power::State::kConnected, "Connected",
+                     "Connection established, but status still not known");
+
+        T::AddStateName(Power::State::kSystemOff, "PowerOff",
+                     "Camera, Bias and Drive power off");
+
+        T::AddStateName(Power::State::kBiasOn, "BiasOn",
+                     "Camera and Drive power off, Bias on");
+
+        T::AddStateName(Power::State::kDriveOn, "DriveOn",
+                     "Camera and Bias power off, Drive on");
+
+        T::AddStateName(Power::State::kCameraOn, "CameraOn",
+                     "Drive and Bias power off, Camera on");
+
+        T::AddStateName(Power::State::kBiasOff, "BiasOff",
+                     "Camera and Drive power on, Bias off");
+
+        T::AddStateName(Power::State::kDriveOff, "DriveOff",
+                     "Camera and Bias power on, Drive off");
+
+        T::AddStateName(Power::State::kCameraOff, "CameraOff",
+                     "Drive and Bias power on, Camera off");
+
+        T::AddStateName(Power::State::kSystemOn, "SystemOn",
+                     "Camera, Bias and drive power on");
+
+        T::AddStateName(Power::State::kCoolingFailure, "CoolingFailure",
+                     "The cooling unit has failed, the interlock has switched off");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachinePowerControl::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for interpreted data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachinePowerControl::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+        T::AddEvent("CAMERA_POWER", "B:1")
+            (bind(&StateMachinePowerControl::SetCameraPower, this, placeholders::_1))
+            ("Switch camera power"
+             "|power[bool]:Switch camera power 'on' or 'off'");
+
+        T::AddEvent("TOGGLE_DRIVE")
+            (bind(&StateMachinePowerControl::ToggleDrive, this))
+            ("Toggle drive power");
+
+        T::AddEvent("POST", "C")
+            (bind(&StateMachinePowerControl::Post, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPower.SetVerbose(!conf.Get<bool>("quiet"));
+        fPower.SetInterval(conf.Get<uint16_t>("interval"));
+        fPower.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPower.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fPower.SetSite(conf.Get<string>("url"));
+        fPower.SetEndpoint(conf.Get<string>("addr"));
+        fPower.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePowerControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Interlock control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>(""),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>(""),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(5), "Interval between two updates on the server in seconds")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ("debug-rx",   po_bool(), "Enable debugging for received data.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The pwrctrl is an interface to the interlock hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: pwrctrl [-c type] [OPTIONS]\n"
+        "  or:  pwrctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionInterlock>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionInterlock>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionInterlock>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/queue.h
===================================================================
--- branches/FACT++_part_filenames/src/queue.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/queue.h	(revision 18732)
@@ -0,0 +1,198 @@
+#ifndef FACT_Queue
+#define FACT_Queue
+
+#include <list>
+#include <thread>
+#include <condition_variable>
+
+template<class T>
+class Queue
+{
+    size_t fSize;                 // Only necessary for before C++11
+
+    std::list<T> fList;
+
+    std::mutex fMutex;        // Mutex needed for the conditional
+    std::condition_variable fCond; // Conditional
+
+    enum state_t
+    {
+        kIdle,
+        kRun,
+        kStop,
+        kAbort,
+    };
+
+    state_t fState;               // Stop signal for the thread
+
+    typedef std::function<void(const T &)> callback;
+    callback fCallback;       // Callback function called by the thread
+
+    std::thread fThread;      // Handle to the thread
+
+    void Thread()
+    {
+        std::unique_lock<std::mutex> lock(fMutex);
+
+        while (1)
+        {
+            while (fList.empty() && fState==kRun)
+                fCond.wait(lock);
+
+            if (fState==kAbort)
+                break;
+
+            if (fState==kStop && fList.empty())
+                break;
+
+            const T &val = fList.front();
+
+            // Theoretically, we can loose a signal here, but this is
+            // not a problem, because then we detect a non-empty queue
+            lock.unlock();
+
+            if (fCallback)
+                fCallback(val);
+
+            lock.lock();
+
+            fList.pop_front();
+            fSize--;
+        }
+
+        fList.clear();
+        fSize = 0;
+
+        fState = kIdle;
+    }
+
+public:
+    Queue(const callback &f) : fSize(0), fState(kIdle), fCallback(f)
+    {
+        start();
+    }
+    ~Queue()
+    {
+        wait(true);
+    }
+
+    bool start()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState!=kIdle)
+            return false;
+
+        fState = kRun;
+        fThread = std::thread(std::bind(&Queue::Thread, this));
+        return true;
+    }
+
+    bool stop()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fState = kStop;
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool abort()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fState = kAbort;
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool wait(bool abrt=false)
+    {
+        {
+            const std::lock_guard<std::mutex> lock(fMutex);
+            if (fState==kIdle)
+                return false;
+
+            if (fState==kRun)
+            {
+                fState = abrt ? kAbort : kStop;
+                fCond.notify_one();
+            }
+        }
+
+        fThread.join();
+        return true;
+    }
+
+    bool post(const T &val)
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.push_back(val);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename... _Args>
+        bool emplace(_Args&&... __args)
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.emplace_back(__args...);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool post(T &&val) { return emplace(std::move(val)); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    bool move(std::list<T>&& x, typename std::list<T>::iterator i)
+#else
+    bool move(std::list<T>& x, typename std::list<T>::iterator i)
+#endif
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.splice(fList.end(), x, i);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    bool move(std::list<T>& x, typename std::list<T>::iterator i) { return move(std::move(x), i); }
+#endif
+
+    size_t size() const
+    {
+        return fSize;
+    }
+
+    bool empty() const
+    {
+        return fSize==0;
+    }
+};
+
+#endif
Index: branches/FACT++_part_filenames/src/ratecontrol.cc
===================================================================
--- branches/FACT++_part_filenames/src/ratecontrol.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ratecontrol.cc	(revision 18732)
@@ -0,0 +1,1002 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersLid.h"
+#include "HeadersDrive.h"
+#include "HeadersRateScan.h"
+#include "HeadersRateControl.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineRateControl : public StateMachineDim//, public DimInfoHandler
+{
+private:
+    struct config
+    {
+        uint16_t fCalibrationType;
+        uint16_t fTargetRate;
+        uint16_t fMinThreshold;
+        uint16_t fAverageTime;
+        uint16_t fRequiredEvents;
+    };
+
+    map<string, config> fRunTypes;
+
+    PixelMap fMap;
+
+    bool fPhysTriggerEnabled;
+    bool fTriggerOn;
+
+    vector<bool> fBlock;
+
+    DimVersion fDim;
+    DimDescribedState fDimFTM;
+    DimDescribedState fDimRS;
+    DimDescribedState fDimLid;
+    DimDescribedState fDimDrive;
+
+    DimDescribedService fDimThreshold;
+
+    float  fTargetRate;
+    float  fTriggerRate;
+
+    uint16_t fThresholdMin;
+    uint16_t fThresholdReference;
+
+    uint16_t fAverageTime;
+    uint16_t fRequiredEvents;
+
+    list<pair<Time,float>> fCurrentsMed;
+    list<pair<Time,float>> fCurrentsDev;
+    list<pair<Time,vector<float>>> fCurrentsVec;
+
+    bool fVerbose;
+    bool fCalibrateByCurrent;
+
+    uint64_t fCounter;
+
+    Time fCalibrationTimeStart;
+
+    bool CheckEventSize(const EventImp &evt, size_t size)
+    {
+        if (size_t(evt.GetSize())==size)
+            return true;
+
+        if (evt.GetSize()==0)
+            return false;
+
+        ostringstream msg;
+        msg << evt.GetName() << " - Received event has " << evt.GetSize() << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    vector<uint32_t> fThresholds;
+
+    void PrintThresholds(const FTM::DimStaticData &sdata)
+    {
+        if (!fVerbose)
+            return;
+
+        if (fThresholds.empty())
+            return;
+
+        if (GetCurrentState()<=RateControl::State::kConnected)
+            return;
+
+        Out() << "Min. DAC=" << fThresholdMin << endl;
+
+        for (int j=0; j<10; j++)
+        {
+            for (int k=0; k<4; k++)
+            {
+                for (int i=0; i<4; i++)
+                {
+                    const int p = i + k*4 + j*16;
+
+                    if (fThresholds[p]!=fThresholdMin)
+                        Out() << setw(3) << fThresholds[p];
+                    else
+                        Out() << " - ";
+
+                    if (fThresholds[p]!=sdata.fThreshold[p])
+                        Out() << "!";
+                    else
+                        Out() << " ";
+                }
+
+                Out() << "   ";
+            }
+            Out() << endl;
+        }
+        Out() << endl;
+    }
+
+    // RETURN VALUE
+    bool Step(int idx, float step)
+    {
+        uint32_t diff = fThresholds[idx]+int16_t(truncf(step));
+        if (diff<fThresholdMin)
+            diff=fThresholdMin;
+        if (diff>0xffff)
+            diff = 0xffff;
+
+        if (diff==fThresholds[idx])
+            return false;
+
+        if (fVerbose)
+        {
+            Out() << "Apply: Patch " << setw(3) << idx << " [" << idx/40 << "|" << (idx/4)%10 << "|" << idx%4 << "]";
+            Out() << (step>0 ? " += " : " -= ");
+            Out() << fabs(step) << " (old=" << fThresholds[idx] << ", new=" << diff << ")" << endl;
+        }
+
+        fThresholds[idx] = diff;
+        fBlock[idx/4] = true;
+
+        return true;
+    }
+
+    void ProcessPatches(const FTM::DimTriggerRates &sdata)
+    {
+
+        // Caluclate Median and deviation
+        vector<float> medb(sdata.fBoardRate, sdata.fBoardRate+40);
+        vector<float> medp(sdata.fPatchRate, sdata.fPatchRate+160);
+
+        sort(medb.begin(), medb.end());
+        sort(medp.begin(), medp.end());
+
+        vector<float> devb(40);
+        for (int i=0; i<40; i++)
+            devb[i] = fabs(sdata.fBoardRate[i]-medb[i]);
+
+        vector<float> devp(160);
+        for (int i=0; i<160; i++)
+            devp[i] = fabs(sdata.fPatchRate[i]-medp[i]);
+
+        sort(devb.begin(), devb.end());
+        sort(devp.begin(), devp.end());
+
+        const double mb = (medb[19]+medb[20])/2;
+        const double mp = (medp[79]+medp[80])/2;
+
+        const double db = devb[27];
+        const double dp = devp[109];
+
+        // If any is zero there is something wrong
+        if (mb==0 || mp==0 || db==0 || dp==0)
+            return;
+
+        if (fVerbose)
+            Out() << Tools::Form("Boards: Med=%3.1f +- %3.1f Hz   Patches: Med=%3.1f +- %3.1f Hz", mb, db, mp, dp) << endl;
+
+        bool changed = false;
+
+        for (int i=0; i<40; i++)
+        {
+            if (fBlock[i])
+            {
+                fBlock[i] = false;
+                continue;
+            }
+
+            int maxi = -1;
+
+            const float dif = fabs(sdata.fBoardRate[i]-mb)/db;
+            if (dif>3)
+            {
+                if (fVerbose)
+                    Out() << "Board " << setw(3) << i << ": " << dif << " dev away from med" << endl;
+
+                float max = sdata.fPatchRate[i*4];
+                maxi = 0;
+
+                for (int j=1; j<4; j++)
+                    if (sdata.fPatchRate[i*4+j]>max)
+                    {
+                        max = sdata.fPatchRate[i*4+j];
+                        maxi = j;
+                    }
+            }
+
+            for (int j=0; j<4; j++)
+            {
+                // For the noise pixel correct down to median+3*deviation
+                if (maxi==j)
+                {
+                    // This is the step which has to be performed to go from
+                    // a NSB rate of sdata.fPatchRate[i*4+j]
+
+
+                    const float step = (log10(sdata.fPatchRate[i*4+j])-log10(mp+3.5*dp))/0.039;
+                    //  * (dif-5)/dif
+                    changed |= Step(i*4+j, step);
+                    continue;
+                }
+
+                // For pixels below the median correct also back to median+3*deviation
+                if (sdata.fPatchRate[i*4+j]<mp)
+                {
+                    const float step = (log10(sdata.fPatchRate[i*4+j])-log10(mp+3.5*dp))/0.039;
+                    changed |= Step(i*4+j, step);
+                    continue;
+                }
+
+                const float step =  -1.5*(log10(mp+dp)-log10(mp))/0.039;
+                changed |= Step(i*4+j, step);
+            }
+        }
+
+        if (changed)
+            Dim::SendCommandNB("FTM_CONTROL/SET_SELECTED_THRESHOLDS", fThresholds);
+    }
+
+    int ProcessCamera(const FTM::DimTriggerRates &sdata)
+    {
+        if (fCounter++==0)
+            return GetCurrentState();
+
+        // Caluclate Median and deviation
+        vector<float> medb(sdata.fBoardRate, sdata.fBoardRate+40);
+
+        sort(medb.begin(), medb.end());
+
+        vector<float> devb(40);
+        for (int i=0; i<40; i++)
+            devb[i] = fabs(sdata.fBoardRate[i]-medb[i]);
+
+        sort(devb.begin(), devb.end());
+
+        double mb = (medb[19]+medb[20])/2;
+        double db = devb[27];
+
+        // If any is zero there is something wrong
+        if (mb==0 || db==0)
+        {
+            Warn("The median or the deviation of all board rates is zero... cannot calibrate.");
+            return GetCurrentState();
+        }
+
+        double avg = 0;
+        int    num = 0;
+
+        for (int i=0; i<40; i++)
+        {
+            if ( fabs(sdata.fBoardRate[i]-mb)<2.5*db)
+            {
+                avg += sdata.fBoardRate[i];
+                num++;
+            }
+        }
+
+        fTriggerRate = avg/num * 40;
+
+        if (fVerbose)
+        {
+            Out() << "Board:  Median=" << mb << " Dev=" << db << endl;
+            Out() << "Camera: " << fTriggerRate << " (" << sdata.fTriggerRate << ", n=" << num << ")" << endl;
+            Out() << "Target: " << fTargetRate << endl;
+        }
+
+        if (sdata.fTriggerRate<fTriggerRate)
+            fTriggerRate = sdata.fTriggerRate;
+
+        // ----------------------
+
+        /*
+        if (avg>0 && avg<fTargetRate)
+        {
+            // I am assuming here (and at other places) the the answer from the FTM when setting
+            // the new threshold always arrives faster than the next rate update.
+            fThresholdMin = fThresholds[0];
+            Out() << "Setting fThresholdMin to " << fThresholds[0] << endl;
+        }
+        */
+
+        if (fTriggerRate>0 && fTriggerRate<fTargetRate)
+        {
+            fThresholds.assign(160, fThresholdMin);
+
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(0);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Measured rate " << fTriggerRate << "Hz below target rate " << fTargetRate << "... minimum threshold set to " << fThresholdMin;
+            Info(out);
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        // This is a step towards a threshold at which the NSB rate is equal the target rate
+        // +1 to avoid getting a step of 0
+        const float step = (log10(fTriggerRate)-log10(fTargetRate))/0.039 + 1;
+
+        const uint16_t diff = fThresholdMin+int16_t(truncf(step));
+        if (diff<=fThresholdMin)
+        {
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(1);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Next step would be 0... minimum threshold set to " << fThresholdMin;
+            Info(out);
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        if (fVerbose)
+        {
+            //Out() << idx/40 << "|" << (idx/4)%10 << "|" << idx%4;
+            Out() << fThresholdMin;
+            Out() << (step>0 ? " += " : " -= ");
+            Out() << step << " (" << diff << ")" << endl;
+        }
+
+        const uint32_t val[2] = { uint32_t(-1),  diff };
+        Dim::SendCommandNB("FTM_CONTROL/SET_THRESHOLD", val);
+
+        fThresholdMin = diff;
+
+        return GetCurrentState();
+    }
+
+    int HandleStaticData(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, sizeof(FTM::DimStaticData)))
+            return GetCurrentState();
+
+        const FTM::DimStaticData &sdata = *static_cast<const FTM::DimStaticData*>(evt.GetData());
+        fPhysTriggerEnabled = sdata.HasTrigger();
+        fTriggerOn = (evt.GetQoS()&FTM::kFtmStates)==FTM::kFtmRunning;
+
+        Out() << "\n" << evt.GetTime() << ": " << (bool)fTriggerOn << " " << (bool)fPhysTriggerEnabled << endl;
+        PrintThresholds(sdata);
+
+        if (GetCurrentState()==RateControl::State::kSettingGlobalThreshold && fCalibrateByCurrent)
+        {
+            if (fThresholds.empty())
+                return RateControl::State::kSettingGlobalThreshold;
+
+            if (!std::equal(sdata.fThreshold, sdata.fThreshold+160, fThresholds.begin()))
+                return RateControl::State::kSettingGlobalThreshold;
+
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        fThresholds.assign(sdata.fThreshold, sdata.fThreshold+160);
+
+        return GetCurrentState();
+    }
+
+    int HandleTriggerRates(const EventImp &evt)
+    {
+        fTriggerOn = (evt.GetQoS()&FTM::kFtmStates)==FTM::kFtmRunning;
+
+        if (fThresholds.empty())
+            return GetCurrentState();
+
+        if (GetCurrentState()<=RateControl::State::kConnected ||
+            GetCurrentState()==RateControl::State::kGlobalThresholdSet)
+            return GetCurrentState();
+
+        if (!CheckEventSize(evt, sizeof(FTM::DimTriggerRates)))
+            return GetCurrentState();
+
+        const FTM::DimTriggerRates &sdata = *static_cast<const FTM::DimTriggerRates*>(evt.GetData());
+
+        if (GetCurrentState()==RateControl::State::kSettingGlobalThreshold && !fCalibrateByCurrent)
+            return ProcessCamera(sdata);
+
+        if (GetCurrentState()==RateControl::State::kInProgress)
+            ProcessPatches(sdata);
+
+        return GetCurrentState();
+    }
+
+    int HandleCalibratedCurrents(const EventImp &evt)
+    {
+        // Check if received event is valid
+        if (!CheckEventSize(evt, (2*416+8)*4))
+            return GetCurrentState();
+
+        // Record only currents when the drive is tracking to avoid
+        // bias from the movement
+        if (fDimDrive.state()<Drive::State::kTracking || fDimLid.state()==Lid::State::kClosed)
+            return GetCurrentState();
+
+        // Get time and median current (FIXME: check N?)
+        const Time &time = evt.GetTime();
+        const float med  = evt.Get<float>(416*4+4+4);
+        const float dev  = evt.Get<float>(416*4+4+4+4);
+        const float *cur = evt.Ptr<float>();
+
+        // Keep all median currents of the past 10 seconds
+        fCurrentsMed.emplace_back(time, med);
+        fCurrentsDev.emplace_back(time, dev);
+        fCurrentsVec.emplace_back(time, vector<float>(cur, cur+320));
+        while (!fCurrentsMed.empty())
+        {
+            if (time-fCurrentsMed.front().first<boost::posix_time::seconds(fAverageTime))
+                break;
+
+            fCurrentsMed.pop_front();
+            fCurrentsDev.pop_front();
+            fCurrentsVec.pop_front();
+        }
+
+        // If we are not doing a calibration no further action necessary
+        if (!fCalibrateByCurrent)
+            return GetCurrentState();
+
+        // We are not setting thresholds at all
+        if (GetCurrentState()!=RateControl::State::kSettingGlobalThreshold)
+            return GetCurrentState();
+
+        // Target thresholds have been assigned already
+        if (!fThresholds.empty())
+            return GetCurrentState();
+
+        // We want at least 8 values for averaging
+        if (fCurrentsMed.size()<fRequiredEvents)
+            return GetCurrentState();
+
+        // Calculate avera and rms of median
+        double avg = 0;
+        double rms = 0;
+        for (auto it=fCurrentsMed.begin(); it!=fCurrentsMed.end(); it++)
+        {
+            avg += it->second;
+            rms += it->second*it->second;
+        }
+        avg /= fCurrentsMed.size();
+        rms /= fCurrentsMed.size();
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        double avg_dev = 0;
+        for (auto it=fCurrentsDev.begin(); it!=fCurrentsDev.end(); it++)
+            avg_dev += it->second;
+        avg_dev /= fCurrentsMed.size();
+
+        // One could recalculate the median of all pixels including the
+        // correction for the three crazy pixels, but that is three out
+        // of 320. The effect on the median should be negligible anyhow.
+        vector<double> vec(160);
+        for (auto it=fCurrentsVec.begin(); it!=fCurrentsVec.end(); it++)
+            for (int i=0; i<320; i++)
+            {
+                const PixelMapEntry &hv = fMap.hv(i);
+                if (hv)
+                    vec[hv.hw()/9] += it->second[i]*hv.count();
+            }
+
+        //fThresholdMin = max(uint16_t(36.0833*pow(avg, 0.638393)+184.037), fThresholdReference);
+        //fThresholdMin = max(uint16_t(42.4*pow(avg, 0.642)+182), fThresholdReference);
+        //fThresholdMin = max(uint16_t(41.6*pow(avg+1, 0.642)+175), fThresholdReference);
+        //fThresholdMin = max(uint16_t(42.3*pow(avg, 0.655)+190), fThresholdReference);
+        //fThresholdMin = max(uint16_t(46.6*pow(avg, 0.627)+187), fThresholdReference);
+        fThresholdMin = max(uint16_t(156.3*pow(avg, 0.3925)+1), fThresholdReference);
+        //fThresholdMin = max(uint16_t(41.6*pow(avg, 0.642)+175), fThresholdReference);
+        fThresholds.assign(160, fThresholdMin);
+
+        int counter = 1;
+
+        double avg2 = 0;
+        for (int i=0; i<160; i++)
+        {
+            vec[i] /= fCurrentsVec.size()*9;
+
+            avg2 += vec[i];
+
+            if (vec[i]>avg+3.5*avg_dev)
+            {
+                fThresholds[i] = max(uint16_t(40.5*pow(vec[i], 0.642)+164), fThresholdMin);
+
+                counter++;
+            }
+        }
+        avg2 /= 160;
+
+
+        Dim::SendCommandNB("FTM_CONTROL/SET_ALL_THRESHOLDS", fThresholds);
+
+
+        const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+        fDimThreshold.setQuality(2);
+        fDimThreshold.Update(data);
+
+        //Info("Sent a total of "+to_string(counter)+" commands for threshold setting");
+
+        ostringstream out;
+        out << setprecision(3);
+        out << "Measured average current " << avg << "uA +- " << rms << "uA [N=" << fCurrentsMed.size() << "]... minimum threshold set to " << fThresholdMin;
+        Info(out);
+        Info("Set "+to_string(counter)+" individual thresholds.");
+
+        fTriggerOn = false;
+        fPhysTriggerEnabled = false;
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int Calibrate()
+    {
+        const int32_t val[2] = { -1, fThresholdReference };
+        Dim::SendCommandNB("FTM_CONTROL/SET_THRESHOLD", val);
+
+        fThresholds.assign(160, fThresholdReference);
+
+        fThresholdMin = fThresholdReference;
+        fTriggerRate  = -1;
+        fCounter      = 0;
+        fBlock.assign(160, false);
+
+        fCalibrateByCurrent = false;
+        fCalibrationTimeStart = Time();
+
+        ostringstream out;
+        out << "Rate calibration started at a threshold of " << fThresholdReference << " with a target rate of " << fTargetRate << " Hz";
+        Info(out);
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int CalibrateByCurrent()
+    {
+        fCounter = 0;
+        fCalibrateByCurrent = true;
+        fCalibrationTimeStart = Time();
+        fBlock.assign(160, false);
+
+        fThresholds.clear();
+
+        ostringstream out;
+        out << "Rate calibration by current with min. threshold of " << fThresholdReference << ".";
+        Info(out);
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int CalibrateRun(const EventImp &evt)
+    {
+        const string name = evt.GetText();
+
+        auto it = fRunTypes.find(name);
+        if (it==fRunTypes.end())
+        {
+            Info("CalibrateRun - Run-type '"+name+"' not found... trying 'default'.");
+
+            it = fRunTypes.find("default");
+            if (it==fRunTypes.end())
+            {
+                Error("CalibrateRun - Run-type 'default' not found.");
+                return GetCurrentState();
+            }
+        }
+
+        const config &conf = it->second;
+
+        if (conf.fCalibrationType!=0)
+        {
+
+            if (!fPhysTriggerEnabled)
+            {
+                Info("Calibration requested, but physics trigger not enabled... CALIBRATE command ignored.");
+
+                fTriggerOn = false;
+                fPhysTriggerEnabled = false;
+                return RateControl::State::kGlobalThresholdSet;
+            }
+
+            if (fDimLid.state()==Lid::State::kClosed)
+            {
+                Info("Calibration requested, but lid closed... setting all thresholds to "+to_string(conf.fMinThreshold)+".");
+
+                const int32_t val[2] = { -1, conf.fMinThreshold };
+                Dim::SendCommandNB("FTM_CONTROL/SET_THRESHOLD", val);
+
+                fThresholds.assign(160, conf.fMinThreshold);
+
+                const double mjd = Time().Mjd();
+
+                const RateControl::DimThreshold data = { conf.fMinThreshold, mjd, mjd };
+                fDimThreshold.setQuality(3);
+                fDimThreshold.Update(data);
+
+                fCalibrateByCurrent = true;
+                fTriggerOn = false;
+                fPhysTriggerEnabled = false;
+                return RateControl::State::kSettingGlobalThreshold;
+            }
+
+            if (fDimDrive.state()<Drive::State::kMoving)
+                Warn("Calibration requested, but drive not even moving...");
+        }
+
+        switch (conf.fCalibrationType)
+        {
+        case 0:
+            Info("No calibration requested.");
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+            break;
+
+        case 1:
+            fThresholdReference = conf.fMinThreshold;
+            fTargetRate = conf.fTargetRate;
+            return Calibrate();
+
+        case 2:
+            fThresholdReference = conf.fMinThreshold;
+            fAverageTime = conf.fAverageTime;
+            fRequiredEvents = conf.fRequiredEvents;
+            return CalibrateByCurrent();
+        }
+
+        Error("CalibrateRun - Calibration type "+to_string(conf.fCalibrationType)+" unknown.");
+        return GetCurrentState();
+    }
+
+    int StopRC()
+    {
+        Info("Stop received.");
+        return RateControl::State::kConnected;
+    }
+
+    int SetMinThreshold(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        // FIXME: Check missing
+
+        fThresholdReference = evt.GetUShort();
+
+        return GetCurrentState();
+    }
+
+    int SetTargetRate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fTargetRate = evt.GetFloat();
+
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFTM << endl;
+        Out() << fDimRS << endl;
+        Out() << fDimLid << endl;
+        Out() << fDimDrive << endl;
+
+        return GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 1))
+            return kSM_FatalError;
+
+        fVerbose = evt.GetBool();
+
+        return GetCurrentState();
+    }
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return RateControl::State::kDimNetworkNA;
+
+        // All subsystems are not connected
+        if (fDimFTM.state()<FTM::State::kConnected || fDimDrive.state()<Drive::State::kConnected)
+            return RateControl::State::kDisconnected;
+
+        // Do not allow any action while a ratescan is configured or in progress
+        if (fDimRS.state()>=RateScan::State::kConfiguring)
+            return RateControl::State::kConnected;
+
+        switch (GetCurrentState())
+        {
+        case RateControl::State::kSettingGlobalThreshold:
+            return RateControl::State::kSettingGlobalThreshold;
+
+        case RateControl::State::kGlobalThresholdSet:
+
+            // Wait for the trigger to get switched on before starting control loop
+            if (fTriggerOn && fPhysTriggerEnabled)
+                return RateControl::State::kInProgress;
+
+            return RateControl::State::kGlobalThresholdSet;
+
+        case RateControl::State::kInProgress:
+
+            // Go back to connected when the trigger has been switched off
+            if (!fTriggerOn || !fPhysTriggerEnabled)
+                return RateControl::State::kConnected;
+
+            return RateControl::State::kInProgress;
+        }
+
+        return RateControl::State::kConnected;
+    }
+
+public:
+    StateMachineRateControl(ostream &out=cout) : StateMachineDim(out, "RATE_CONTROL"),
+        fPhysTriggerEnabled(false), fTriggerOn(false), fBlock(40),
+        fDimFTM("FTM_CONTROL"),
+        fDimRS("RATE_SCAN"),
+        fDimLid("LID_CONTROL"),
+        fDimDrive("DRIVE_CONTROL"),
+        fDimThreshold("RATE_CONTROL/THRESHOLD", "S:1;D:1;D:1",
+                      "Resulting threshold after calibration"
+                      "|threshold[dac]:Resulting threshold from calibration"
+                      "|begin[mjd]:Start time of calibration"
+                      "|end[mjd]:End time of calibration")
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimRS.Subscribe(*this);
+        fDimLid.Subscribe(*this);
+        fDimDrive.Subscribe(*this);
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineRateControl::HandleTriggerRates, this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineRateControl::HandleStaticData,   this, placeholders::_1));
+        Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
+            (bind(&StateMachineRateControl::HandleCalibratedCurrents, this, placeholders::_1));
+
+        // State names
+        AddStateName(RateControl::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(RateControl::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+
+        AddStateName(RateControl::State::kConnected, "Connected",
+                     "All needed subsystems are connected to their hardware, no action is performed.");
+
+        AddStateName(RateControl::State::kSettingGlobalThreshold, "Calibrating",
+                     "A global minimum threshold is currently determined.");
+
+        AddStateName(RateControl::State::kGlobalThresholdSet, "GlobalThresholdSet",
+                     "A global threshold has ben set, waiting for the trigger to be switched on.");
+
+        AddStateName(RateControl::State::kInProgress, "InProgress",
+                     "Rate control in progress.");
+
+        AddEvent("CALIBRATE")
+            (bind(&StateMachineRateControl::Calibrate, this))
+            ("Start a search for a reasonable minimum global threshold");
+
+        AddEvent("CALIBRATE_BY_CURRENT")
+            (bind(&StateMachineRateControl::CalibrateByCurrent, this))
+            ("Set the global threshold from the median current");
+
+        AddEvent("CALIBRATE_RUN", "C")
+            (bind(&StateMachineRateControl::CalibrateRun, this, placeholders::_1))
+            ("Start a threshold calibration as defined in the setup for this run-type, state change to InProgress is delayed until trigger enabled");
+
+        AddEvent("STOP", RateControl::State::kSettingGlobalThreshold, RateControl::State::kGlobalThresholdSet, RateControl::State::kInProgress)
+            (bind(&StateMachineRateControl::StopRC, this))
+            ("Stop a calibration or ratescan in progress");
+
+        AddEvent("SET_MIN_THRESHOLD", "I:1")
+            (bind(&StateMachineRateControl::SetMinThreshold, this, placeholders::_1))
+            ("Set a minimum threshold at which th rate control starts calibrating");
+
+        AddEvent("SET_TARGET_RATE", "F:1")
+            (bind(&StateMachineRateControl::SetTargetRate, this, placeholders::_1))
+            ("Set a target trigger rate for the calibration");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineRateControl::Print, this))
+            ("Print current status");
+
+        AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineRateControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+    }
+
+    bool GetConfig(Configuration &conf, const string &name, const string &sub, uint16_t &rc)
+    {
+        if (conf.HasDef(name, sub))
+        {
+            rc = conf.GetDef<uint16_t>(name, sub);
+            return true;
+        }
+
+        Error("Neither "+name+"default nor "+name+sub+" found.");
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fVerbose = !conf.Get<bool>("quiet");
+
+        if (!fMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fThresholdReference = 300;
+        fThresholdMin       = 300;
+        fTargetRate         =  75;
+
+        fAverageTime        =  10;
+        fRequiredEvents     =   8;
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.empty())
+            Warn("No run-types defined.");
+        else
+            Message("Defining run-types");
+
+        for (auto it=types.begin(); it!=types.end(); it++)
+        {
+            Message(" -> "+ *it);
+
+            if (fRunTypes.count(*it)>0)
+            {
+                Error("Run-type "+*it+" defined twice.");
+                return 1;
+            }
+
+            config &c = fRunTypes[*it];
+            if (!GetConfig(conf, "calibration-type.", *it, c.fCalibrationType) ||
+                !GetConfig(conf, "target-rate.",      *it, c.fTargetRate)      ||
+                !GetConfig(conf, "min-threshold.",    *it, c.fMinThreshold)    ||
+                !GetConfig(conf, "average-time.",     *it, c.fAverageTime)     ||
+                !GetConfig(conf, "required-events.",  *it, c.fRequiredEvents))
+                return 2;
+        }
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineRateControl>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Rate control options");
+    control.add_options()
+        ("quiet,q", po_bool(),  "Disable printing more informations during rate control.")
+        ("pixel-map-file", var<string>()->required(), "Pixel mapping file. Used here to get the default reference voltage.")
+       //("max-wait",   var<uint16_t>(150), "The maximum number of seconds to wait to get the anticipated resolution for a point.")
+       // ("resolution", var<double>(0.05) , "The minimum resolution required for a single data point.")
+        ;
+
+    conf.AddOptions(control);
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",           vars<string>(),  "Name of run-types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("calibration-type.*", var<uint16_t>(), "Calibration type (0: none, 1: by rate, 2: by current)")
+        ("target-rate.*",      var<uint16_t>(), "Target rate for calibration by rate")
+        ("min-threshold.*",    var<uint16_t>(), "Minimum threshold which can be applied in a calibration")
+        ("average-time.*",     var<uint16_t>(), "Time in seconds to average the currents for a calibration by current.")
+        ("required-events.*",  var<uint16_t>(), "Number of required current events to start a calibration by current.");
+    ;
+
+    conf.AddOptions(runtype);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ratecontrol program is a keep the rate reasonable low.\n"
+        "\n"
+        "Usage: ratecontrol [-c type] [OPTIONS]\n"
+        "  or:  ratecontrol [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineRateControl>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/ratescan.cc
===================================================================
--- branches/FACT++_part_filenames/src/ratescan.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/ratescan.cc	(revision 18732)
@@ -0,0 +1,691 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersRateScan.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineRateScan : public StateMachineDim
+{
+private:
+    struct config
+    {
+        int fCounterMax;
+        float fResolution;
+    };
+    map<string, config> fTypes;
+
+    DimVersion fDim;
+
+    DimDescribedState   fDimFTM;
+    DimDescribedService fDimData;
+    DimDescribedService fDimProc;
+
+    bool fAutoPause;
+
+    int fCounter;
+    int fCounterMax;
+
+    int fThreshold;
+    int fThresholdMin;
+    int fThresholdMax;
+    int fThresholdStep;
+    int fThresholdStepDyn;
+
+    double fRate;
+    double fRateBoard[40];
+    double fRatePatch[160];
+
+    double fOnTime;
+
+    uint64_t fStartTime;
+
+    float fResolution;
+
+    enum reference_t
+    {
+        kCamera,
+        kBoard,
+        kPatch
+    };
+
+    reference_t fReference;
+    uint16_t    fReferenceIdx;
+
+    string fCommand;
+
+    void UpdateProc()
+    {
+        const array<uint32_t,3> v = {{ uint32_t(fThresholdMin), uint32_t(fThresholdMax), uint32_t(fThresholdStep) }};
+        fDimProc.Update(v);
+    }
+
+    bool CheckEventSize(const EventImp &evt, size_t size)
+    {
+        if (size_t(evt.GetSize())==size)
+            return true;
+
+        if (evt.GetSize()==0)
+            return false;
+
+        ostringstream msg;
+        msg << evt.GetName() << " - Received event has " << evt.GetSize() << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    int HandleTriggerRates(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, sizeof(FTM::DimTriggerRates)))
+            return GetCurrentState();
+
+        if (GetCurrentState()<RateScan::State::kInProgress)
+            return GetCurrentState();
+
+        const FTM::DimTriggerRates &sdata = *static_cast<const FTM::DimTriggerRates*>(evt.GetData());
+
+        if (++fCounter<0)
+            return GetCurrentState();
+
+        if (GetCurrentState()==RateScan::State::kPaused)
+            fCounter=0;
+
+        if (fCounter==0)
+        {
+            fRate = 0;
+
+            memset(fRateBoard, 0,  40*sizeof(double));
+            memset(fRatePatch, 0, 160*sizeof(double));
+
+            fOnTime = 0;
+            return GetCurrentState();
+        }
+/*
+        if (sdata.fTriggerRate==0)
+        {
+            Message("Rate scan stopped due zero trigger rate.");
+            fThreshold = -1;
+            return;
+        }
+*/
+
+        fRate += sdata.fTriggerRate;
+        for (int i=0; i<40; i++)
+            fRateBoard[i] += sdata.fBoardRate[i];
+        for (int i=0; i<160; i++)
+            fRatePatch[i] += sdata.fPatchRate[i];
+
+        double reference = fRate;
+        if (fReference==kBoard)
+            reference = fRateBoard[fReferenceIdx];
+        if (fReference==kPatch)
+            reference = fRatePatch[fReferenceIdx];
+
+        fOnTime += sdata.fOnTime;
+
+        reference *= sdata.fElapsedTime;
+
+        if ((reference==0 || sqrt(reference)>fResolution*reference) && fCounter<fCounterMax)
+        {
+            ostringstream out;
+            out << "Triggers so far: " << reference;
+            if (reference>0)
+                out << " (" << sqrt(reference)/reference << ")";
+            Info(out);
+
+            return GetCurrentState();
+        }
+
+        const double   time = sdata.fElapsedTime*fCounter;
+        const uint32_t th   = fThreshold;
+
+        float data[2+3+1+40+160];
+        memcpy(data,   &fStartTime, 8);
+        memcpy(data+2, &th, 4);
+        data[3] = time;         // total elapsed time
+        data[4] = fOnTime/time; // relative on time
+        data[5] = fRate/fCounter;
+        for (int i=0; i<40; i++)
+            data[i+6] = fRateBoard[i]/fCounter;
+        for (int i=0; i<160; i++)
+            data[i+46] = fRatePatch[i]/fCounter;
+
+        ostringstream sout1, sout2, sout3;
+
+        sout1 << th << " " << data[5];
+        for (int i=0; i<200; i++)
+            sout2 << " " << data[i+6];
+        sout3 << " " << data[3] << " " << data[4];
+
+        Info(sout1.str());
+
+        //ofstream fout("ratescan.txt", ios::app);
+        //fout << sout1.str() << sout2.str() << sout3.str() << endl;
+
+        fDimData.setQuality(fCommand=="FTM_CONTROL/SET_THRESHOLD");
+        fDimData.setData(data, sizeof(data));
+        fDimData.Update();
+
+        fThreshold += fThresholdStep;
+
+        if (fCounter>=fCounterMax)
+        {
+            Message("Rate scan stopped due to timeout.");
+            //Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+            return RateScan::State::kConnected;
+        }
+
+        if (fThreshold>fThresholdMax)
+        {
+            Message("Rate scan finished.");
+            //Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+            return RateScan::State::kConnected;
+        }
+
+        // Does this need to be shifted upwards?
+        if (fCounter>1 && fThresholdStepDyn>0)
+        {
+            //const double scale = fCounter/reference/fResolution/fResolution;
+            //const double step  = floor(scale*fThresholdStepDyn);
+
+            fThresholdStep = fCounter*fThresholdStepDyn;
+        }
+
+        //fCounter = -2;  // FIXME: In principle one missed report is enough
+        fCounter = -1;
+
+        const int32_t cmd[2] = { -1, fThreshold };
+        Dim::SendCommandNB(fCommand.c_str(), cmd);
+
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFTM << endl;
+
+        return GetCurrentState();
+    }
+
+    int StartRateScan(const EventImp &evt, const string &command)
+    {
+        //FIXME: check at least that size>12
+        //if (!CheckEventSize(evt, 12))
+        //    return kSM_FatalError;
+
+        const string fType = evt.Ptr<char>(12);
+
+        auto it = fTypes.find(fType);
+        if (it==fTypes.end())
+        {
+            Info("StartRateScan - Type '"+fType+"' not found... trying 'default'.");
+
+            it = fTypes.find("default");
+            if (it==fTypes.end())
+            {
+                Error("StartRateScan - Type 'default' not found.");
+                return GetCurrentState();
+            }
+        }
+
+        fCounterMax = it->second.fCounterMax;
+        fResolution = it->second.fResolution;
+
+        fCommand = "FTM_CONTROL/"+command;
+
+        const int32_t step = evt.Get<int32_t>(8);
+
+        fThresholdMin  = evt.Get<uint32_t>();
+        fThresholdMax  = evt.Get<uint32_t>(4);
+        fThresholdStep = abs(step);
+
+        fThresholdStepDyn = step<0 ? -step : 0;
+
+        UpdateProc();
+
+        //Dim::SendCommand("FAD_CONTROL/SET_FILE_FORMAT", uint16_t(0));
+        Dim::SendCommandNB("FTM_CONTROL/CONFIGURE", string("ratescan"));
+
+        Message("Configuration for ratescan started.");
+
+        return RateScan::State::kConfiguring;
+    }
+
+    int HandleFtmStateChange(/*const EventImp &evt*/)
+    {
+        // ftmctrl connected to FTM
+        if (GetCurrentState()!=RateScan::State::kConfiguring)
+            return GetCurrentState();
+
+        if (fDimFTM.state()!=FTM::State::kConfigured1)
+            return GetCurrentState();
+
+        const int32_t data[2] = { -1, fThresholdMin };
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+        Dim::SendCommandNB(fCommand, data);
+
+        fThreshold = fThresholdMin;
+        fCounter = -2;
+
+        const Time now;
+        fStartTime = trunc(now.UnixTime());
+
+        /*
+        ofstream fout("ratescan.txt", ios::app);
+        fout << "# ----- " << now << " (" << fStartTime << ") -----\n";
+        fout << "# Command: " << fCommand << '\n';
+        fout << "# Reference: ";
+        switch (fReference)
+        {
+        case kCamera: fout << "Camera"; break;
+        case kBoard:  fout << "Board #" << fReferenceIdx; break;
+        case kPatch:  fout << "Patch #" << fReferenceIdx; break;
+        }
+        fout << '\n';
+        fout << "# -----" << endl;
+        */
+
+        ostringstream msg;
+        msg << "Rate scan " << now << "(" << fStartTime << ") from " << fThresholdMin << " to ";
+        msg << fThresholdMax << " in steps of " << fThresholdStep;
+        msg << " with a resolution of " << fResolution ;
+        msg << " and max-wait " << fCounterMax  ;
+        msg << " started.";
+        Message(msg);
+
+        if (!fAutoPause)
+            return RateScan::State::kInProgress;
+
+        fAutoPause = false;
+
+        return RateScan::State::kPaused;
+    }
+
+    int StopRateScan()
+    {
+        if (GetCurrentState()<RateScan::State::kConfiguring)
+            return GetCurrentState();
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+        Message("Rate scan manually stopped.");
+
+        return RateScan::State::kConnected;
+    }
+
+    int SetReferenceCamera()
+    {
+        fReference = kCamera;
+
+        return GetCurrentState();
+    }
+
+    int SetReferenceBoard(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        if (evt.GetUInt()>39)
+        {
+            Error("SetReferenceBoard - Board index out of range [0;39]");
+            return GetCurrentState();
+        }
+
+        fReference    = kBoard;
+        fReferenceIdx = evt.GetUInt();
+
+        return GetCurrentState();
+    }
+
+    int SetReferencePatch(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        if (evt.GetUInt()>159)
+        {
+            Error("SetReferencePatch - Patch index out of range [0;159]");
+            return GetCurrentState();
+        }
+
+        fReference    = kPatch;
+        fReferenceIdx = evt.GetUInt();
+
+        return GetCurrentState();
+    }
+
+    int ChangeStepSize(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fThresholdStep = evt.Get<uint32_t>();
+
+        ostringstream msg;
+        msg << "New step size " << fThresholdStep;
+        Info(msg);
+
+        UpdateProc();
+
+        return GetCurrentState();
+    }
+
+    int ChangeMaximum(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fThresholdMax = evt.Get<uint32_t>();
+
+        return GetCurrentState();
+    }
+
+    int TriggerAutoPause()
+    {
+        fAutoPause = true;
+        return GetCurrentState();
+    }
+
+    int Pause()
+    {
+        return RateScan::State::kPaused;
+    }
+
+    int Resume()
+    {
+        return RateScan::State::kInProgress;
+    }
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return RateScan::State::kDimNetworkNA;
+
+        // All subsystems are not connected
+        if (fDimFTM.state()<FTM::State::kConnected)
+            return RateScan::State::kDisconnected;
+
+        // ftmctrl connected to FTM
+        if (GetCurrentState()<=RateScan::State::kDisconnected)
+            return RateScan::State::kConnected;
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineRateScan(ostream &out=cout) : StateMachineDim(out, "RATE_SCAN"),
+        fDimFTM("FTM_CONTROL"),
+        fDimData("RATE_SCAN/DATA", "X:1;I:1;F:1;F:1;F:1;F:40;F:160",
+                 "|Id[s]:Start time used to identify measurement (UnixTime)"
+                 "|Threshold[dac]:Threshold in DAC counts"
+                 "|ElapsedTime[s]:Real elapsed time"
+                 "|RelOnTime[ratio]:Relative on time"
+                 "|TriggerRate[Hz]:Camera trigger rate"
+                 "|BoardRate[Hz]:Board trigger rates"
+                 "|PatchRate[Hz]:Patch trigger rates"),
+        fDimProc("RATE_SCAN/PROCESS_DATA", "I:1;I:1;I:1",
+                 "Rate scan process data"
+                 "|min[DAC]:Value at which scan was started"
+                 "|max[DAC]:Value at which scan will end"
+                 "|step[DAC]:Step size for scan"),
+        fAutoPause(false), fThreshold(-1), fReference(kCamera), fReferenceIdx(0)
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimFTM.SetCallback(bind(&StateMachineRateScan::HandleFtmStateChange, this));
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineRateScan::HandleTriggerRates, this, placeholders::_1));
+
+        // State names
+        AddStateName(RateScan::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(RateScan::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+
+        AddStateName(RateScan::State::kConnected, "Connected",
+                     "All needed subsystems are connected to their hardware, no action is performed.");
+
+        AddStateName(RateScan::State::kConfiguring, "Configuring",
+                     "Waiting for FTM to get 'Configured'.");
+
+        AddStateName(RateScan::State::kInProgress, "InProgress",
+                     "Rate scan in progress.");
+
+        AddStateName(RateScan::State::kPaused, "Paused",
+                     "Rate scan in progress but paused.");
+
+        AddEvent("START_THRESHOLD_SCAN", "I:3;C", RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::StartRateScan, this, placeholders::_1, "SET_THRESHOLD"))
+            ("Start rate scan for the threshold in the defined range"
+             "|min[int]:Start value in DAC counts"
+             "|max[int]:Limiting value in DAC counts"
+             "|step[int]:Single step in DAC counts"
+             "|type[text]:Ratescan type");
+
+        AddEvent("START_N_OUT_OF_4_SCAN", "I:3", RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::StartRateScan, this, placeholders::_1, "SET_N_OUT_OF_4"))
+            ("Start rate scan for N-out-of-4 in the defined range"
+             "|min[int]:Start value in DAC counts"
+             "|max[int]:Limiting value in DAC counts"
+             "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_STEP_SIZE", "I:1", RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::ChangeStepSize, this, placeholders::_1))
+            ("Change the step size during a ratescan in progress"
+             "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_MAXIMUM", "I:1", RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::ChangeMaximum, this, placeholders::_1))
+            ("Change the maximum limit during a ratescan in progress"
+             "|max[int]:Limiting value in DAC counts");
+
+        AddEvent("STOP", RateScan::State::kConfiguring, RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::StopRateScan, this))
+            ("Stop a ratescan in progress");
+
+        AddEvent("SET_REFERENCE_CAMERA", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferenceCamera, this))
+            ("Use the camera trigger rate as reference for the reolution");
+        AddEvent("SET_REFERENCE_BOARD", "I:1", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferenceBoard, this, placeholders::_1))
+            ("Use the given board trigger-rate as reference for the reolution"
+             "|board[idx]:Index of the board (4*crate+board)");
+        AddEvent("SET_REFERENCE_PATCH", "I:1", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferencePatch, this, placeholders::_1))
+            ("Use the given patch trigger-rate as reference for the reolution"
+             "|patch[idx]:Index of the patch (360*crate+36*board+patch)");
+
+        AddEvent("TRIGGER_AUTO_PAUSE", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::TriggerAutoPause, this))
+            ("Enable an automatic pause for the next ratescan, after it got configured.");
+
+        AddEvent("PAUSE", RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::Pause, this))
+            ("Pause a ratescan in progress");
+        AddEvent("RESUME", RateScan::State::kPaused)
+            (bind(&StateMachineRateScan::Resume, this))
+            ("Resume a paused ratescan");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineRateScan::Print, this))
+            ("");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("type");
+        if (types.empty())
+            Warn("No types defined.");
+        else
+            Message("Defining types");
+
+        for (auto it=types.begin(); it!=types.end(); it++)
+        {
+            Message(" -> "+ *it);
+
+            if (fTypes.count(*it)>0)
+            {
+                Error("Type "+*it+" defined twice.");
+                return 1;
+            }
+
+            config &c = fTypes[*it];
+            if (conf.HasDef("max-wait.", *it))
+                c.fCounterMax = conf.GetDef<int>("max-wait.", *it);
+            else
+            {
+                Error("Neither max-wait.default nor max-wait."+*it+" found.");
+                return 2;
+            }
+            if (conf.HasDef("resolution.", *it))
+                c.fResolution = conf.GetDef<double>("resolution.", *it);
+            else
+            {
+                Error("Neither resolution.default nor resolution."+*it+" found.");
+                return 2;
+            }
+        }
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineRateScan>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description type("Ratescan type configuration");
+    type.add_options()
+        ("type",           vars<string>(),  "Name of ratescan types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("max-wait.*",   var<int>(), "The maximum number of seconds to wait to get the anticipated resolution for a point.")
+        ("resolution.*", var<double>() , "The minimum resolution required for a single data point.")
+    ;
+
+    conf.AddOptions(type);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ratescan program is a tool for automation of rate scans.\n"
+        "\n"
+        "Usage: ratescan [-c type] [OPTIONS]\n"
+        "  or:  ratescan [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineRateScan>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/rootifysql.cc
===================================================================
--- branches/FACT++_part_filenames/src/rootifysql.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/rootifysql.cc	(revision 18732)
@@ -0,0 +1,335 @@
+#include "Database.h"
+
+#include "Time.h"
+#include "Configuration.h"
+
+#include <TROOT.h>
+#include <TSystem.h>
+#include <TFile.h>
+#include <TTree.h>
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Rootify SQL");
+    control.add_options()
+        ("uri,u",         var<string>()->required(),   "Database link as in\n\tuser:password@server[:port]/database.")
+        ("query,q",       var<string>(""),             "MySQL query (overwrites --file)")
+        ("file",          var<string>("rootify.sql"),  "An ASCII file with the MySQL query (overwrites --query)")
+        ("ignore-null,i", po_switch(),                 "Do not skip rows containing any NULL field")
+        ("out,o",         var<string>("rootify.root"), "Output root file name")
+        ("force,f",       po_switch(),                 "Force overwriting an existing root file ('RECREATE')")
+        ("update",        po_switch(),                 "Update an existing root file with the new tree ('UPDATE')")
+        ("compression,c", var<uint16_t>(1),            "zlib compression level for the root file")
+        ("tree,t",        var<string>("Result"),       "Name of the root tree")
+        ("display,d",     po_switch(),                 "Displays contents on the screen (most usefull in combination with mysql statements as SHOW or EXPLAIN)")
+        ("null,n",        po_switch(),                 "Redirect the output file to /dev/null")
+        ("delimiter",     var<string>(""),             "The delimiter used if contents are displayed with --display (default=\\t)")
+        ("verbose,v",     var<uint16_t>(1),            "Verbosity (0: quiet, 1: default, 2: more, 3, ...)")
+        ;
+
+    po::positional_options_description p;
+    p.add("file", 1); // The 1st positional options
+    p.add("out",  2); // The 2nd positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "rootifysql - Converts the result of a mysql query into a root file\n"
+        "\n"
+        "For convenience, this documentation uses the extended version of the options, "
+        "refer to the output below to get the abbreviations.\n"
+        "\n"
+        "Writes the result of a mysql query into a root file. For each column, a branch is "
+        "created of type double with the field name as name. This is usually the column name "
+        "if not specified otherwise by the AS mysql directive.\n"
+        "\n"
+        "Columns with CHAR or VARCHAR as field type are ignored. DATETIME, DATE and TIME "
+        "columns are converted to unix time (time_t). Rows containing any file which is "
+        "NULL are skipped if not suppressed by the --ignore-null option. Ideally, the query "
+        "is compiled in a way that no NULL field is returned. With the --display option the "
+        "result of the request is printed on the screen (NULL skipping still in action). "
+        "This can be useful to create an ascii file or to show results as 'SHOW DATABASES' "
+        "or 'EXPLAIN table'. To redirect the contents into an ascii file, the option -v0 "
+        "is useful. To suppredd writing to an output file --null can be used.\n"
+        "\n"
+        "The default is to read the query from a file called rootify.sql. Except if a different "
+        "filename is specified by the --file option or a query is given with --query.\n"
+        "\n"
+        "Comments in the query-file can be placed according to the SQL standard inline "
+        "/*comment*/ or on individual lines introduces with # or --.\n"
+        "\n"
+        "In case of succes, 0 is returned, a value>0 otherwise.\n"
+        "\n"
+        "Usage: rootifysql [rootify.sql [rootify.root]] [-u URI] [-q query|-f file] [-i] [-o out] [-f] [-cN] [-t tree] [-vN]\n"
+        "\n"
+        ;
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    Time start;
+
+    gROOT->SetBatch();
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+    // ----------------------------- Evaluate options --------------------------
+    const string   uri         = conf.Get<string>("uri");
+    const string   out         = conf.Get<string>("out");
+    const string   file        = conf.Get<string>("file");
+    const string   tree        = conf.Get<string>("tree");
+    const bool     force       = conf.Get<bool>("force");
+    const bool     ignore      = conf.Get<bool>("ignore-null");
+    const bool     update      = conf.Get<bool>("update");
+    const bool     display     = conf.Get<bool>("display");
+    const bool     noout       = conf.Get<bool>("null");
+    const uint16_t verbose     = conf.Get<uint16_t>("verbose");
+    const uint16_t compression = conf.Get<uint16_t>("compression");
+    const string   delimiter   = conf.Get<string>("delimiter");
+    // -------------------------------------------------------------------------
+
+    if (verbose>0)
+        cout << "\n--------------------- Rootify SQL ----------------------" << endl;
+
+    string query  = conf.Get<string>("query");
+    if (query.empty())
+    {
+        if (verbose>0)
+            cout << "Reading query from file '" << file << "'." << endl;
+
+        ifstream fin(file);
+        if (!fin)
+        {
+            cerr << "Could not open '" << file << "': " << strerror(errno) << endl;
+            return 1;
+        }
+        getline(fin, query, (char)fin.eof());
+    }
+
+    if (query.empty())
+    {
+        cerr << "No query specified." << endl;
+        return 2;
+    }
+
+    // -------------------------- Check for file permssion ---------------------
+    // Strictly speaking, checking for write permission and existance is not necessary,
+    // but it is convenient that the user does not find out that it failed after
+    // waiting long for the query result
+    //
+    // I am using root here instead of boost to be
+    // consistent with the access pattern by TFile
+    TString path(noout?"/dev/null":out.c_str());
+    gSystem->ExpandPathName(path);
+
+    if (!noout)
+    {
+        FileStat_t stat;
+        const Int_t  exist = !gSystem->GetPathInfo(path, stat);
+        const Bool_t write = !gSystem->AccessPathName(path,  kWritePermission) && R_ISREG(stat.fMode);
+
+        if ((update && !exist) || (update && exist && !write) || (force && exist && !write))
+        {
+            cerr << "File '" << path << "' is not writable." << endl;
+            return 3;
+        }
+
+        if (!update && !force && exist)
+        {
+            cerr << "File '" << path << "' already exists." << endl;
+            return 4;
+        }
+    }
+    // -------------------------------------------------------------------------
+
+    if (query.back()!='\n')
+        query += '\n';
+
+    if (verbose>2)
+        cout << '\n' << query << endl;
+
+    if (verbose>0)
+        cout << "Requesting data..." << endl;
+
+    Time start2;
+
+    // -------------------------- Request data from database -------------------
+    const mysqlpp::StoreQueryResult res =
+        Database(uri).query(query).store();
+    // -------------------------------------------------------------------------
+
+    if (verbose>0)
+    {
+        cout << res.size() << " rows received." << endl;
+        cout << "Query time: " << Time().UnixTime()-start2.UnixTime() << "s" << endl;
+    }
+
+    if (res.empty())
+    {
+        cerr << "Nothing to write." << endl;
+        return 5;
+    }
+
+    if (verbose>0)
+        cout << "Opening file '" << path << "' [compression=" << compression << "]..." << endl;
+
+    // ----------------------------- Open output file --------------------------
+    TFile tfile(path, update?"UPDATE":(force?"RECREATE":"CREATE"), "Rootify SQL", compression);
+    if (tfile.IsZombie())
+        return 6;
+    // -------------------------------------------------------------------------
+
+    const mysqlpp::Row &r = res.front();
+
+    if (verbose>0)
+        cout << "Trying to setup " << r.size() << " branches..." << endl;
+
+    if (verbose>1)
+        cout << endl;
+
+    const mysqlpp::FieldNames &l = *r.field_list().list;
+
+    vector<double>  buf(l.size());
+    vector<uint8_t> typ(l.size(),'n');
+
+    UInt_t cols = 0;
+
+    // -------------------- Configure branches of TTree ------------------------
+    TTree *ttree = new TTree(tree.c_str(), query.c_str());
+    for (size_t i=0; i<l.size(); i++)
+    {
+        const string t = r[i].type().sql_name();
+
+        if (t.find("DATETIME")!=string::npos)
+            typ[i] = 'd';
+        else
+            if (t.find("DATE")!=string::npos)
+                typ[i] = 'D';
+            else
+                if (t.find("TIME")!=string::npos)
+                    typ[i] = 'T';
+                else
+                    if (t.find("VARCHAR")!=string::npos)
+                        typ[i] = 'V';
+                    else
+                        if (t.find("CHAR")!=string::npos)
+                            typ[i] = 'C';
+
+        const bool use = typ[i]!='V' && typ[i]!='C';
+
+        if (verbose>1)
+            cout << (use?" + ":" - ") << l[i].c_str() << " [" << t << "] {" << typ[i] << "}\n";
+
+        if (use)
+        {
+            ttree->Branch(l[i].c_str(), buf.data()+i);
+            cols++;
+        }
+    }
+    // -------------------------------------------------------------------------
+
+    if (verbose>1)
+        cout << endl;
+    if (verbose>0)
+        cout << "Configured " << cols << " branches.\nFilling branches..." << endl;
+
+    if (display)
+    {
+        cout << endl;
+        cout << "#";
+        for (size_t i=0; i<l.size(); i++)
+            cout << ' ' << l[i].c_str();
+        cout << endl;
+    }
+
+    // ---------------------- Fill TTree with DB data --------------------------
+    size_t skip = 0;
+    for (auto row=res.begin(); row<res.end(); row++)
+    {
+        ostringstream sout;
+
+        size_t idx=0;
+        for (auto col=row->begin(); col!=row->end(); col++, idx++)
+        {
+            if (display)
+            {
+                if (idx>0)
+                    sout << (delimiter.empty()?"\t":delimiter);
+                sout << col->c_str();
+            }
+
+            if (!ignore && col->is_null())
+            {
+                skip++;
+                break;
+            }
+
+            switch (typ[idx])
+            {
+            case 'd':
+                buf[idx] = time_t((mysqlpp::DateTime)(*col));
+                break;
+
+            case 'D':
+                buf[idx] = time_t((mysqlpp::Date)(*col));
+                break;
+
+            case 'T':
+                buf[idx] = time_t((mysqlpp::Time)(*col));
+                break;
+
+            case 'V':
+            case 'C':
+                break;
+
+            default:
+                buf[idx] = atof(col->c_str());
+            }
+        }
+
+        if (idx==row->size())
+        {
+            ttree->Fill();
+            if (display)
+                cout << sout.str() << endl;
+        }
+    }
+    // -------------------------------------------------------------------------
+
+    if (display)
+        cout << '\n' << endl;
+
+    if (verbose>0)
+    {
+        if (skip>0)
+            cout << skip << " rows skipped due to NULL field." << endl;
+
+        cout << ttree->GetEntries() << " rows filled into tree." << endl;
+    }
+
+    ttree->Write();
+    tfile.Close();
+
+    if (verbose>0)
+    {
+        cout << "File closed.\n";
+        cout << "Execution time: " << Time().UnixTime()-start.UnixTime() << "s\n";
+        cout << "--------------------------------------------------------" << endl;
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/scheduler.cc
===================================================================
--- branches/FACT++_part_filenames/src/scheduler.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/scheduler.cc	(revision 18732)
@@ -0,0 +1,834 @@
+#include <vector>
+
+#include <boost/regex.hpp>
+
+#include <mysql++/mysql++.h>
+
+#include "Dim.h"
+#include "Time.h"
+#include "Event.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+
+#include "tools.h"
+
+using namespace std;
+using namespace boost::gregorian;
+using namespace boost::posix_time;
+
+// things to be done/checked/changed
+// * --schedule-database should be required
+// * move definition of config parameters to AutoScheduler class
+//   + read in from config
+// * in some (all?) loops iterator over vector can be replaced by counter
+
+// other things to do
+//
+// define what to transmit as info/warn/error
+
+
+// config parameters:
+//   mintime
+//   runtimec
+//   runtimep
+//   repostime
+
+// missing:
+//
+// calculate time for std obs
+// calculate sun set/rise
+//
+// return errors and other otherput from sendcommand to webinterface
+
+// in which cases should the scheduler go in error state?
+//   when db is unavailable
+// does one also need a 'set scheduler to ready' function then?
+// do we want any error state at all?
+
+
+// =========================================================================
+
+template <class T>
+class AutoScheduler : public T
+{
+    bool fNextIsPreview;
+public:
+    enum states_t
+    {
+        kSM_Scheduling=1,
+        kSM_Comitting,
+    };
+
+    struct ObservationParameters
+    {
+        int obskey;
+        int obsmode;
+        int obstype;
+        int splitflag;
+        int telsetup;
+        float fluxweight;
+        float slope;
+        float flux;
+        float ra;
+        float dec;
+        ptime start;
+        ptime stop;
+        time_duration duration_db;
+        string sourcename;
+        int sourcekey;
+    };
+
+    struct FixedObs
+    {
+        int obskey;
+        int sourcekey;
+        string sourcename;
+        int obsmode;
+        int obstype;
+        int telsetup;
+        float ra;
+        float dec;
+        ptime start;
+        ptime stop;
+    };
+
+    // will need other types of obs
+    // FloatingObs (duration < stop-start + splitflag no)
+    // FloatingSplittedObs (duration < stop-start + splitflag yes)
+    // FixedSlot, i.e. just block a time slot
+
+    struct StdObs
+    {
+        int obskey_std;
+        int sourcekey_std;
+        string sourcename_std;
+        int obsmode_std;
+        int obstype_std;
+        int telsetup_std;
+        float fluxweight_std;
+        float slope_std;
+        float flux_std;
+        float ra_std;
+        float dec_std;
+        ptime obsstdstart;
+        ptime obsstdstop;
+    };
+
+    struct ScheduledObs
+    {
+        int obskey_obs;
+        int sourcekey_obs;
+        string sourcename_obs;
+        int obsmode_obs;
+        int obstype_obs;
+        int telsetup_obs;
+        ptime obsstart;
+        ptime obsstop;
+    };
+
+    struct ScheduledRun
+    {
+        //int runnumber; // to be seen, if runnumber is needed
+        int obskey_run;
+        int runtype;
+        int sourcekey_run;
+        string sourcename_run;//for convenience
+        int obsmode_run;
+        int obstype_run;
+        int telsetup_run;
+        ptime runstart;
+        ptime runstop;
+    };
+
+    string fDatabase;
+    string fDBName;
+    int fDurationCalRun; //unit: minutes
+    int fDurationPedRun; //unit: minutes
+    int fDurationRepos; //unit: minutes
+
+    int Schedule()
+    {
+        bool error = false;
+
+        time_duration runtimec(0, fDurationCalRun, 0);
+        time_duration runtimep(0, fDurationPedRun, 0);
+        time_duration repostime(0, fDurationRepos, 0);
+        time_duration mintime(1, 0, 0);
+
+        const ptime startsched(microsec_clock::local_time());
+        const ptime stopsched=startsched+years(1);
+
+        ostringstream str;
+        str << "Scheduling for the period from " << startsched << " to " << stopsched;
+        T::Message(str);
+
+        static const boost::regex expr("([[:word:].-]+):(.+)@([[:word:].-]+)(:([[:digit:]]+))?/([[:word:].-]+)");
+        // 2: user
+        // 4: pass
+        // 5: server
+        // 7: port
+        // 9: db
+
+        boost::smatch what;
+        if (!boost::regex_match(fDatabase, what, expr, boost::match_extra))
+        {
+            ostringstream msg;
+            msg << "Regex to parse database '" << fDatabase << "' empty.";
+            T::Error(msg);
+            return T::kSM_Error;
+        }
+
+        if (what.size()!=7)
+        {
+            ostringstream msg;
+            msg << "Parsing database name failed: '" << fDatabase << "'";
+            T::Error(msg);
+            return T::kSM_Error;
+        }
+
+        const string user   = what[1];
+        const string passwd = what[2];
+        const string server = what[3];
+        const string db     = fDBName.empty() ? what[6] : fDBName;
+        const int    port   = stoi(what[5]);
+
+        ostringstream dbnamemsg;
+        dbnamemsg << "Scheduling started -> using database " << db << ".";
+        T::Message(dbnamemsg);
+
+        str.str("");
+        str << "Connecting to '";
+        if (!user.empty())
+            str << user << "@";
+        str << server;
+        if (port)
+            str << ":" << port;
+        if (!db.empty())
+            str << "/" << db;
+        str << "'";
+        T::Info(str);
+
+        mysqlpp::Connection conn(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port);
+        /* throws exceptions
+        if (!conn.connected())
+        {
+            ostringstream msg;
+            msg << "MySQL connection error: " << conn.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        // get observation parameters from DB
+        // maybe order by priority?
+        const mysqlpp::StoreQueryResult res =
+            conn.query("SELECT fObservationKEY, fStartTime, fStopTime, fDuration, fSourceName, fSourceKEY, fSplitFlag, fFluxWeight, fSlope, fFlux, fRightAscension, fDeclination, fObservationModeKEY, fObservationTypeKEY , fTelescopeSetupKEY FROM ObservationParameters LEFT JOIN Source USING(fSourceKEY) ORDER BY fStartTime").store();
+        // FIXME: Maybe we have to check for a successfull
+        //        query but an empty result
+        /* thorws exceptions?
+        if (!res)
+        {
+            ostringstream msg;
+            msg << "MySQL query failed: " << query.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        str.str("");
+        str << "Found " << res.num_rows() << " Observation Parameter sets.";
+        T::Debug(str);
+
+        ObservationParameters olist[res.num_rows()];
+        vector<FixedObs>     obsfixedlist;
+        vector<StdObs>       obsstdlist;
+        vector<ScheduledObs> obslist;
+        vector<ScheduledRun> runlist;
+
+        // loop over observation parameters from DB
+        // fill these parameters into FixedObs and StdObs
+        int counter=0;
+        int counter2=0;
+        int counter3=0;
+        cout << "Obs: <obskey> <sourcename>(<sourcekey>, <fluxweight>) from <starttime> to <stoptime>" << endl;
+        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+        {
+            cout << "  Obs: " << (*v)[0].c_str() << " " << (*v)[4].c_str() << "(" << (*v)[5].c_str() << flush;
+            cout << ", " << (*v)[7].c_str() << ")" << flush;
+            cout << " from " << (*v)[1].c_str() << " to " << (*v)[2].c_str() << endl;
+
+            //0: obskey
+            //1: startime
+            //2: stoptime
+            //3: duration
+            //4: sourcename
+            //5: sourcekey
+            //6: splitflag
+            //7: fluxweight
+            //8: slope
+            //9: flux
+            //10: ra
+            //11: dec
+            //12: obsmode
+            //13: obstype
+            //14: telsetup
+            stringstream t1;
+            stringstream t2;
+            stringstream t3;
+            t1 << (*v)[1].c_str();
+            t2 << (*v)[2].c_str();
+            t3 << (*v)[3].c_str();
+
+            //boost::posix_time::time_duration mintime(0,conf.Get<int>("mintime"), 0);
+            t1 >> Time::sql >> olist[counter].start;
+            t2 >> Time::sql >> olist[counter].stop;
+            t3 >> olist[counter].duration_db;
+            const time_period period(olist[counter].start, olist[counter].stop);
+
+            olist[counter].sourcename=(*v)[4].c_str();
+            olist[counter].sourcekey=(*v)[5];
+
+            if (!(*v)[0].is_null())
+                olist[counter].obskey=(*v)[0];
+            if (!(*v)[12].is_null())
+                olist[counter].obsmode=(*v)[12];
+            if (!(*v)[13].is_null())
+                olist[counter].obstype=(*v)[13];
+            if (!(*v)[14].is_null())
+                olist[counter].telsetup=(*v)[14];
+            if (!(*v)[6].is_null())
+                olist[counter].splitflag=(*v)[6];
+            if (!(*v)[7].is_null())
+                olist[counter].fluxweight=(*v)[7];
+            else
+                olist[counter].fluxweight=0;//set fluxweight to 0 for check below
+            if (!(*v)[8].is_null())
+                olist[counter].slope=(*v)[8];
+            if (!(*v)[9].is_null())
+                olist[counter].flux=(*v)[9];
+            if (!(*v)[10].is_null())
+                olist[counter].ra=(*v)[10];
+            if (!(*v)[11].is_null())
+                olist[counter].dec=(*v)[11];
+
+            // time_duration cannot be used, as only up to 99 hours are handeled
+            // const time_duration duration = period.length();
+
+            /*
+            if (olist[counter].stoptime < olist[counter].starttime+mintime)
+                cout << "  ====> WARN: Observation too short. " << endl;
+
+            if (olist[counter].starttime.is_not_a_date_time())
+                cout << "  WARN: starttime not a date_time. " << endl;
+            else
+                cout << "  start:   " << Time::sql << olist[counter].starttime << endl;
+            if (olist[counter].stoptime.is_not_a_date_time())
+                cout << "  WARN: stoptime not a date_time. " << endl;
+            else
+                cout << "  stop:   " << Time::sql << olist[counter].stoptime << endl;
+            if (!(olist[counter].starttime.is_not_a_date_time() || olist[counter].stoptime.is_not_a_date_time()))
+                cout << "  diff:   " << period << endl;
+            if (olist[counter].stoptime < olist[counter].starttime)
+                cout << "  ====> WARN: stop time (" << olist[counter].stoptime << ") < start time (" << olist[counter].starttime << "). " << endl;
+            cout << "diff:   " << duration << flush;
+            cout << "dur_db:   " << olist[counter].duration_db << endl;
+            */
+
+            // always filled: obstype
+            //
+            // fixed observations:
+            //   filled: starttime, stoptime
+            //   not filled: fluxweight
+            //   maybe filled: obsmode, telsetup, source (not filled for FixedSlotObs)
+            //   maybe filled: duration (filled for FloatingObs and FloatingSplittedObs)
+            //   maybe filled: splitflag (filled for FloatingSplittedObs)
+            //
+            // std observations:
+            //   filled: fluxweight, telsetup, obsmore, source
+            //   not filled: starttime, stoptime, duration
+
+            // fixed observations
+            if (!(olist[counter].stop.is_not_a_date_time()
+                  && olist[counter].start.is_not_a_date_time())
+                && olist[counter].fluxweight==0
+               )
+            {
+                obsfixedlist.resize(counter2+1);
+                obsfixedlist[counter2].start=olist[counter].start;
+                obsfixedlist[counter2].stop=olist[counter].stop;
+                obsfixedlist[counter2].sourcename=olist[counter].sourcename;
+                obsfixedlist[counter2].obskey=olist[counter].obskey;
+                obsfixedlist[counter2].obstype=olist[counter].obstype;
+                obsfixedlist[counter2].obsmode=olist[counter].obsmode;
+                obsfixedlist[counter2].telsetup=olist[counter].telsetup;
+                obsfixedlist[counter2].sourcekey=olist[counter].sourcekey;
+                obsfixedlist[counter2].ra=olist[counter].ra;
+                obsfixedlist[counter2].dec=olist[counter].dec;
+                counter2++;
+            }
+
+            // std obs
+            if (olist[counter].stop.is_not_a_date_time()
+                  && olist[counter].start.is_not_a_date_time()
+                && olist[counter].fluxweight>0
+               )
+            {
+                obsstdlist.resize(counter3+1);
+                obsstdlist[counter3].sourcename_std=olist[counter].sourcename;
+                obsstdlist[counter3].obskey_std=olist[counter].obskey;
+                obsstdlist[counter3].obsmode_std=olist[counter].obsmode;
+                obsstdlist[counter3].obstype_std=olist[counter].obstype;
+                obsstdlist[counter3].telsetup_std=olist[counter].telsetup;
+                obsstdlist[counter3].sourcekey_std=olist[counter].sourcekey;
+                obsstdlist[counter3].fluxweight_std=olist[counter].fluxweight;
+                obsstdlist[counter3].flux_std=olist[counter].flux;
+                obsstdlist[counter3].slope_std=olist[counter].slope;
+                obsstdlist[counter3].ra_std=olist[counter].ra;
+                obsstdlist[counter3].dec_std=olist[counter].dec;
+                counter3++;
+            }
+
+            counter++;
+        }
+        ostringstream fixedobsmsg;
+        fixedobsmsg << obsfixedlist.size() << " fixed observations found. ";
+        T::Message(fixedobsmsg);
+        cout << obsfixedlist.size() << " fixed observations found. " << endl;
+
+        ostringstream stdobsmsg;
+        stdobsmsg << obsstdlist.size() << " standard observations found. ";
+        T::Message(stdobsmsg);
+        cout << obsstdlist.size() << " standard observations found. " << endl;
+
+        // loop to add the fixed observations to the ScheduledObs list
+        // performed checks:
+        //   * overlap of fixed observations: the overlap is split half-half
+        //   * check for scheduling time range: only take into account fixed obs within the range
+        // missing checks and evaluation
+        //   * check for mintime (pb with overlap checks)
+        //   * check for sun
+        //   * check for moon
+        counter2=0;
+        int skipcounter=0;
+        ptime finalobsfixedstart;
+        ptime finalobsfixedstop;
+        time_duration delta0(0,0,0);
+
+        cout << "Fixed Observations: " << endl;
+        for (struct vector<FixedObs>::const_iterator vobs=obsfixedlist.begin(); vobs!=obsfixedlist.end(); vobs++)
+        {
+            if (obsfixedlist[counter2].start < startsched
+                || obsfixedlist[counter2].stop > stopsched)
+            {
+                ostringstream skipfixedobsmsg;
+                skipfixedobsmsg << "Skip 1 fixed observation (obskey ";
+                skipfixedobsmsg << obsfixedlist[counter2].obskey;
+                skipfixedobsmsg << ") as it is out of scheduling time range.";
+                T::Message(skipfixedobsmsg);
+
+                counter2++;
+                skipcounter++;
+                continue;
+            }
+            counter3=0;
+
+            time_duration delta1=delta0;
+            time_duration delta2=delta0;
+
+            finalobsfixedstart=obsfixedlist[counter2].start;
+            finalobsfixedstop=obsfixedlist[counter2].stop;
+
+            for (struct vector<FixedObs>::const_iterator vobs5=obsfixedlist.begin(); vobs5!=obsfixedlist.end(); vobs5++)
+            {
+                if (vobs5->start < obsfixedlist[counter2].stop
+                    && obsfixedlist[counter2].stop <= vobs5->stop
+                    && obsfixedlist[counter2].start <= vobs5->start
+                    && counter2!=counter3)
+                {
+                    delta1=(obsfixedlist[counter2].stop-vobs5->start)/2;
+                    finalobsfixedstop=obsfixedlist[counter2].stop-delta1;
+
+                    ostringstream warndelta1;
+                    warndelta1 << "Overlap between two fixed observations (";
+                    warndelta1 << obsfixedlist[counter2].obskey << " ";
+                    warndelta1 << vobs5->obskey << "). The stoptime of ";
+                    warndelta1 << obsfixedlist[counter2].obskey << " has been changed.";
+                    T::Warn(warndelta1);
+                }
+                if (vobs5->start <= obsfixedlist[counter2].start
+                    && obsfixedlist[counter2].start < vobs5->stop
+                    && obsfixedlist[counter2].stop >= vobs5->stop
+                    && counter2!=counter3)
+                {
+                    delta2=(vobs5->stop-obsfixedlist[counter2].start)/2;
+                    finalobsfixedstart=obsfixedlist[counter2].start+delta2;
+
+                    ostringstream warndelta2;
+                    warndelta2 << "Overlap between two fixed observations (";
+                    warndelta2 << obsfixedlist[counter2].obskey << " ";
+                    warndelta2 << vobs5->obskey << "). The starttime of ";
+                    warndelta2 << obsfixedlist[counter2].obskey << " has been changed.";
+
+                    T::Warn(warndelta2);
+                }
+                counter3++;
+            }
+
+            const int num=counter2-skipcounter;
+            obslist.resize(num+1);
+            obslist[num].obsstart=finalobsfixedstart;
+            obslist[num].obsstop=finalobsfixedstop;
+            obslist[num].sourcename_obs=obsfixedlist[counter2].sourcename;
+            obslist[num].obsmode_obs=obsfixedlist[counter2].obsmode;
+            obslist[num].obstype_obs=obsfixedlist[counter2].obstype;
+            obslist[num].telsetup_obs=obsfixedlist[counter2].telsetup;
+            obslist[num].sourcekey_obs=obsfixedlist[counter2].sourcekey;
+            obslist[num].obskey_obs=obsfixedlist[counter2].obskey;
+            counter2++;
+
+            cout << "  " << vobs->sourcename <<  " " << vobs->start;
+            cout << " - " << vobs->stop << endl;
+        }
+        ostringstream obsmsg;
+        obsmsg << "Added " << obslist.size() << " fixed observations to ScheduledObs. ";
+        T::Message(obsmsg);
+        cout << "Added " << obslist.size() << " fixed observations to ScheduledObs. " << endl;
+
+        for (int i=0; i<(int)obsstdlist.size(); i++)
+        {
+            for (int j=0; j<(int)obsstdlist.size(); j++)
+            {
+                if (obsstdlist[i].sourcekey_std == obsstdlist[j].sourcekey_std && i!=j)
+                {
+                    cout << "One double sourcekey in std observations: " << obsstdlist[j].sourcekey_std << endl;
+                    ostringstream errdoublestd;
+                    errdoublestd << "One double sourcekey in std observations: " << obsstdlist[j].sourcekey_std << " (" << obsstdlist[j].sourcename_std << ").";
+                    T::Error(errdoublestd);
+                    T::Message("Scheduling stopped.");
+                    return error ? T::kSM_Error : T::kSM_Ready;
+                }
+            }
+        }
+
+        // loop over nights
+        //   calculate sunset and sunrise
+        //   check if there is already scheduled obs in that night
+        //
+
+        // in this loop the standard observations shall be
+        // checked, evaluated
+        // the observation times shall be calculated
+        // and the observations added to the ScheduledObs list
+        cout << "Standard Observations: " << endl;
+        for (struct vector<StdObs>::const_iterator vobs2=obsstdlist.begin(); vobs2!=obsstdlist.end(); vobs2++)
+        {
+            cout << "  " << vobs2->sourcename_std << endl;
+        }
+
+        // in this loop the ScheduledRuns are filled
+        //  (only data runs -> no runtype yet)
+        // might be merged with next loop
+        counter2=0;
+        for (struct vector<ScheduledObs>::const_iterator vobs3=obslist.begin(); vobs3!=obslist.end(); vobs3++)
+        {
+            runlist.resize(counter2+1);
+            runlist[counter2].runstart=obslist[counter2].obsstart;
+            runlist[counter2].runstop=obslist[counter2].obsstop;
+            runlist[counter2].sourcename_run=obslist[counter2].sourcename_obs;
+            runlist[counter2].obsmode_run=obslist[counter2].obsmode_obs;
+            runlist[counter2].obstype_run=obslist[counter2].obstype_obs;
+            runlist[counter2].telsetup_run=obslist[counter2].telsetup_obs;
+            runlist[counter2].sourcekey_run=obslist[counter2].sourcekey_obs;
+            runlist[counter2].obskey_run=obslist[counter2].obskey_obs;
+            counter2++;
+            //cout << (*vobs3).sourcename_obs << endl;
+        }
+
+        //delete old scheduled runs from the DB
+        const mysqlpp::SimpleResult res0 =
+            conn.query("DELETE FROM ScheduledRun").execute();
+        // FIXME: Maybe we have to check for a successfull
+        //        query but an empty result
+        /* throws exceptions
+        if (!res0)
+        {
+            ostringstream msg;
+            msg << "MySQL query failed: " << query0.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        // in this loop the ScheduledRuns are inserted to the DB
+        //   before the runtimes are adapted according to
+        //   duration of P-Run, C-Run and repositioning
+        counter3=0;
+        int insertcount=0;
+        ptime finalstarttime;
+        ptime finalstoptime;
+        for (struct vector<ScheduledRun>::const_iterator vobs4=runlist.begin(); vobs4!=runlist.end(); vobs4++)
+        {
+            for (int i=2; i<5; i++)
+            {
+                switch(i)
+                {
+                case 2:
+                    finalstarttime=runlist[counter3].runstart+repostime+runtimec+runtimep;
+                    finalstoptime=runlist[counter3].runstop;
+                    break;
+                case 3:
+                    finalstarttime=runlist[counter3].runstart+repostime;
+                    finalstoptime=runlist[counter3].runstart+runtimep+repostime;
+                    break;
+                case 4:
+                    finalstarttime=runlist[counter3].runstart+runtimep+repostime;
+                    finalstoptime=runlist[counter3].runstart+repostime+runtimep+runtimec;
+                    break;
+                }
+                ostringstream q1;
+                //cout << (*vobs4).sourcename_run << endl;
+                q1 << "INSERT ScheduledRun set fStartTime='" << Time::sql << finalstarttime;
+                q1 << "', fStopTime='" << Time::sql << finalstoptime;
+                q1 << "', fSourceKEY='" << (*vobs4).sourcekey_run;
+                q1 << "', fObservationKEY='" << (*vobs4).obskey_run;
+                q1 << "', fRunTypeKEY='" << i;
+                q1 << "', fTelescopeSetupKEY='" << (*vobs4).telsetup_run;
+                q1 << "', fObservationTypeKEY='" << (*vobs4).obstype_run;
+                q1 << "', fObservationModeKEY='" << (*vobs4).obsmode_run;
+                q1 << "'";
+
+                //cout << "executing query: " << q1.str() << endl;
+
+                const mysqlpp::SimpleResult res1 = conn.query(q1.str()).execute();
+                // FIXME: Maybe we have to check for a successfull
+                //        query but an empty result
+                /* throws exceptions
+                if (!res1)
+                {
+                    ostringstream msg;
+                    msg << "MySQL query failed: " << query1.error();
+                    T::Error(str);
+                    return T::kSM_Error;
+                }*/
+                insertcount++;
+            }
+            counter3++;
+        }
+        ostringstream insertmsg;
+        insertmsg << "Inserted " << insertcount << " runs into the DB.";
+        T::Message(insertmsg);
+        //usleep(3000000);
+        T::Message("Scheduling done.");
+
+        return error;
+    }
+
+    /*
+    // commit probably done by webinterface
+    int Commit()
+    {
+        ostringstream str;
+        str << "Comitting preview (id=" << fSessionId << ")";
+        T::Message(str);
+
+        usleep(3000000);
+        T::Message("Comitted.");
+
+        fSessionId = -1;
+
+        bool error = false;
+        return error ? T::kSM_Error : T::kSM_Ready;
+    }
+    */
+
+    AutoScheduler(ostream &out=cout) : T(out, "SCHEDULER"), fNextIsPreview(true), fDBName("")
+    {
+        AddStateName(kSM_Scheduling, "Scheduling", "Scheduling in progress.");
+
+        AddEvent(kSM_Scheduling, "SCHEDULE", "C", T::kSM_Ready)
+            ("FIXME FIXME FIXME (explanation for the command)"
+             "|database[string]:FIXME FIXME FIMXE (meaning and format)");
+
+        AddEvent(T::kSM_Ready, "RESET", T::kSM_Error)
+            ("Reset command to get out of the error state");
+
+        //AddEvent(kSM_Comitting,  "COMMIT",   T::kSM_Ready);
+
+        T::PrintListOfEvents();
+    }
+
+    int Execute()
+    {
+        switch (T::GetCurrentState())
+        {
+        case kSM_Scheduling:
+            try
+            {
+                return Schedule() ? T::kSM_Error : T::kSM_Ready;
+            }
+            catch (const mysqlpp::Exception &e)
+            {
+                T::Error(string("MySQL: ")+e.what());
+                return T::kSM_Error;
+            }
+
+            // This does an autmatic reset (FOR TESTING ONLY)
+        case T::kSM_Error:
+            return T::kSM_Ready;
+        }
+        return T::GetCurrentState();
+    }
+
+    int Transition(const Event &evt)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kSM_Scheduling:
+            if (evt.GetSize()>0)
+                fDBName = evt.GetText();
+            break;
+        }
+
+        return evt.GetTargetState();
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fDatabase       = conf.Get<string>("schedule-database");
+        fDurationCalRun = conf.Get<int>("duration-cal-run");
+        fDurationPedRun = conf.Get<int>("duration-ped-run");
+        fDurationRepos  = conf.Get<int>("duration-repos");
+
+        if (!conf.Has("schedule"))
+            return -1;
+
+        fDBName = conf.Get<string>("schedule");
+        return Schedule();
+    }
+
+};
+
+
+// ------------------------------------------------------------------------
+#include "Main.h"
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, AutoScheduler<S>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Scheduler options");
+    control.add_options()
+        ("no-dim",    po_switch(),    "Disable dim services")
+        ("schedule-database", var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,  "Database link as in\n\tuser:password@server[:port]/database\nOverwrites options from the default configuration file.")
+        ("schedule",          var<string>(),  "")
+        ("mintime",           var<int>(),     "minimum observation time")
+        ("duration-cal-run",  var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of calibration run [min]")
+        ("duration-ped-run",  var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of pedestal run [min]")
+        ("duration-repos",    var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of repositioning [min]")
+        ;
+
+    po::positional_options_description p;
+    p.add("schedule", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The scheduler... TEXT MISSING\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: scheduler [-c type] [OPTIONS] <schedule-database>\n"
+        "  or:  scheduler [OPTIONS] <schedule-database>\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+//    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+/*    catch (std::exception& e)
+    {
+        std::cerr << "Exception: " << e.what() << "\n";
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/showlog.cc
===================================================================
--- branches/FACT++_part_filenames/src/showlog.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/showlog.cc	(revision 18732)
@@ -0,0 +1,203 @@
+#include <boost/regex.hpp>
+
+#include "Time.h"
+#include "tools.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Showlog");
+    control.add_options()
+        ("file,f",    vars<string>(), "File names of log-files to be read.")
+        ("begin,b",   var<string>(), "Start time to be displayed (e.g. 20:00:12)")
+        ("end,e",     var<string>(), "End time to be displayed (e.g. 21:00:13)")
+        ("verbose,v", var<int16_t>()->implicit_value(true)->default_value(8), "Verbosity level (0:only fatal errors, 8:everything)")
+        ("color,c",   po_switch(), "Process a file which already contains color codes")
+        ("strip,s",   po_switch(), "Strip color codes completely")
+        ;
+
+    po::positional_options_description p;
+    p.add("file", -1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "showlog - Log file converter\n"
+        "\n"
+        "This tool can be used to convert the log-files written by the\n"
+        "datalogger back to colored output, limit the displayed time\n"
+        "range and limit the displayed severity of the messages.\n"
+        "Note that this tool will not work by default on logs containing\n"
+        "already colored output as the logs directly written by the programs.\n"
+        "Use -c or --color to process color coded files.\n"
+        "\n"
+        "The default is to read from stdin if no filoename as given. If, as "
+        "a filename, just a number between 2000000 and 21000000 is given, "
+        "e.g. 20111016 a log with the name /fact/aux/2011/10/16/20111016.log "
+        "is read.\n"
+        "\n"
+        "Usage: showlog [-c] [-vN] [-b start] [-e end] [file1 ...]\n"
+        "  or:  showlog [-c] [-vN] [-b start] [-e end] YYYYMMDD\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    cout <<
+        "\n"
+        "Examples:\n"
+        " cat temperature.log | showlog -c -v2\n"
+        " showlog -c temperature.log -v2\n"
+        " cat 20130909.log | showlog -v2\n"
+        " showlog 20130909.log -v2\n"
+        "\n";
+    cout << endl;
+}
+
+
+void showlog(string fname, const Time &tbeg, const Time &tend, int16_t severity, bool color, bool strip)
+{
+    // Alternatives
+    // \x1B\[[0-9;]*[mK]
+    // \x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
+    // \x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]
+    const boost::regex reg("\x1B\[([0-9]{1,3}(;[0-9]{1,3})?[a-zA-Z]");
+
+    const uint32_t night = atoi(fname.c_str());
+    if (night>20000000 && night<21000000 &&to_string(night)==fname)
+        fname = Tools::Form("/fact/aux/%04d/%02d/%02d/%d.log",
+                            night/10000, (night/100)%100, night%100, night);
+
+    if (!fname.empty())
+        cerr << "Reading " << fname << endl;
+
+    ifstream fin(fname.empty() ? "/dev/stdin" : fname.c_str());
+    if (!fin)
+        throw runtime_error(strerror(errno));
+
+    string buffer;
+
+    WindowLog log;
+
+    Time tprev;
+
+    while (getline(fin, buffer, '\n'))
+    {
+        if (color || strip)
+            buffer = boost::regex_replace(buffer, reg, "");
+
+        if (buffer.size()==0)
+            continue;
+
+        if (buffer.size()>18)
+        {
+            const string tm = buffer.substr(4, 15);
+
+            const Time t("1970-01-01 "+tm);
+
+            if (tbeg.IsValid() && !tend.IsValid() && t<tbeg)
+                continue;
+
+            if (tend.IsValid() && !tbeg.IsValid() && t>tend)
+                continue;
+
+            if (tbeg.IsValid() && tend.IsValid())
+            {
+                if (tend>tbeg)
+                {
+                    if (t<tbeg)
+                        continue;
+                    if (t>tend)
+                        continue;
+                }
+                else
+                {
+                    if (t>tbeg)
+                        continue;
+                    if (t<tend)
+                        continue;
+                }
+            }
+        }
+
+        if (buffer.size()>1 && !strip)
+        {
+            int16_t lvl = -1;
+            switch (buffer[1])
+            {
+            case ' ': lvl = 7; break; // kDebug
+            case '#': lvl = 6; break; // kComment
+            case '-': lvl = 5; break; // kMessage
+            case '>': lvl = 4; break;
+            case 'I': lvl = 3; break; // kInfo
+            case 'W': lvl = 2; break; // kWarn
+            case 'E': lvl = 1; break; // kError/kAlarm
+            case '!': lvl = 0; break; // kFatal
+            }
+
+            if (lvl>severity)
+                continue;
+
+            switch (buffer[1])
+            {
+            case ' ': log << kBlue;          break; // kDebug
+            case '#': log << kDefault;       break; // kComment
+            case '-': log << kDefault;       break; // kMessage
+            case '>': log << kBold;          break;
+            case 'I': log << kGreen;         break; // kInfo
+            case 'W': log << kYellow;        break; // kWarn
+            case 'E': log << kRed;           break; // kError/kAlarm
+            case '!': log << kRed << kBlink; break; // kFatal
+            }
+        }
+
+        (strip?cout:log) << buffer << endl;
+    }
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    const vector<string> files = conf.Vec<string>("file");
+
+    Time tbeg(Time::none);
+    Time tend(Time::none);
+
+    if (conf.Has("begin"))
+    {
+        std::stringstream stream;
+        stream << "1970-01-01 " << conf.Get<string>("begin");
+        stream >> Time::iso >> tbeg;
+    }
+
+    if (conf.Has("end"))
+    {
+        std::stringstream stream;
+        stream << "1970-01-01 " << conf.Get<string>("end");
+        stream >> Time::iso >> tend;
+    }
+
+    if (files.size()==0)
+        showlog("", tbeg, tend, conf.Get<int16_t>("verbose"), conf.Get<bool>("color"), conf.Get<bool>("strip"));
+
+    for (auto it=files.begin(); it!=files.end(); it++)
+        showlog(*it, tbeg, tend, conf.Get<int16_t>("verbose"), conf.Get<bool>("color"), conf.Get<bool>("strip"));
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/simpleFitsDumper.cc
===================================================================
--- branches/FACT++_part_filenames/src/simpleFitsDumper.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/simpleFitsDumper.cc	(revision 18732)
@@ -0,0 +1,275 @@
+#include <map>
+#include <vector>
+#include <iostream>
+#include <fstream>
+
+#include <CCfits/CCfits>
+
+using namespace std;
+
+void writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer, vector<string> dumpList, map<string, CCfits::Column*>& colMap)
+{
+   targetFile.precision(20);
+   map<string, CCfits::Column*>::iterator it;
+   for (it=colMap.begin(); it != colMap.end(); it++)
+    {
+        bool found = false;
+        for (vector<string>::iterator jt=dumpList.begin(); jt != dumpList.end(); jt++)
+        {
+            if (it->first == *jt)
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+            continue;
+       int offset = offsets[it->second->index()-1];
+       const char* charSrc = reinterpret_cast<char*>(&fitsBuffer[offset]);
+        unsigned char copyBuffer[30];//max size of a single variable
+        for (int width = 0; width<it->second->width(); width++)
+        {
+            switch (it->second->type())
+            {
+            case CCfits::Tbyte:
+                targetFile << *charSrc;
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tushort:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned short), copyBuffer);
+                targetFile << *reinterpret_cast<const unsigned short*>(copyBuffer);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tshort:
+                reverse_copy(charSrc, charSrc+sizeof(short), copyBuffer);
+                targetFile << *reinterpret_cast<const short*>(copyBuffer);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tuint:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned int), copyBuffer);
+                //warning suppressed in gcc4.0.2
+                targetFile << *reinterpret_cast<unsigned int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tint:
+                reverse_copy(charSrc, charSrc+sizeof(int), copyBuffer);
+                targetFile << *reinterpret_cast<int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tulong:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned long), copyBuffer);
+                targetFile << *reinterpret_cast<unsigned long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlong:
+                reverse_copy(charSrc, charSrc+sizeof(long), copyBuffer);
+                targetFile << *reinterpret_cast<long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlonglong:
+                reverse_copy(charSrc, charSrc+sizeof(long long), copyBuffer);
+                targetFile << *reinterpret_cast<long long*>(copyBuffer);
+                charSrc += sizeof(long long);
+            break;
+            case CCfits::Tfloat:
+                reverse_copy(charSrc, charSrc+sizeof(float), copyBuffer);
+                targetFile << *reinterpret_cast<float*>(copyBuffer);
+                charSrc += sizeof(float);
+            break;
+            case CCfits::Tdouble:
+                reverse_copy(charSrc, charSrc+sizeof(double), copyBuffer);
+                targetFile << *reinterpret_cast<double*>(copyBuffer);
+                charSrc += sizeof(double);
+            break;
+            case CCfits::Tnull:
+            case CCfits::Tbit:
+            case CCfits::Tlogical:
+            case CCfits::Tstring:
+            case CCfits::Tcomplex:
+            case CCfits::Tdblcomplex:
+            case CCfits::VTbit:
+            case CCfits::VTbyte:
+            case CCfits::VTlogical:
+            case CCfits::VTushort:
+            case CCfits::VTshort:
+            case CCfits::VTuint:
+            case CCfits::VTint:
+            case CCfits::VTulong:
+            case CCfits::VTlong:
+            case CCfits::VTlonglong:
+            case CCfits::VTfloat:
+            case CCfits::VTdouble:
+            case CCfits::VTcomplex:
+            case CCfits::VTdblcomplex:
+                cout << "Data type not implemented yet." << endl;
+                return;
+            break;
+            default:
+                cout << "THIS SHOULD NEVER BE REACHED" << endl;
+                return;
+            }//switch
+            targetFile << " ";
+        }//width loop
+    }//iterator over the columns
+    targetFile << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calculates the required buffer size for reading one row of the current table.
+//! Also calculates the offsets to all the columns
+//
+vector<int> CalculateBufferSize(map<string, CCfits::Column*>& colMap)
+{
+    vector<int> result;
+    map<int,int> sizes;
+    int size = 0;
+
+    for (map<string, CCfits::Column*>::iterator it=colMap.begin(); it != colMap.end(); it++)
+    {
+        int width = it->second->width();
+        switch (it->second->type())
+        {
+        case CCfits::Tbyte:
+        case CCfits::Tushort:
+        case CCfits::Tshort:
+            sizes[it->second->index()] =  sizeof(char)*width;
+        break;
+        case CCfits::Tuint:
+        case CCfits::Tint:
+            sizes[it->second->index()] =  sizeof(int)*width;
+        break;
+        case CCfits::Tulong:
+        case CCfits::Tlong:
+            sizes[it->second->index()] = sizeof(int)*width;
+        break;
+        case CCfits::Tlonglong:
+            sizes[it->second->index()] =  sizeof(long long)*width;
+        break;
+        case CCfits::Tfloat:
+            sizes[it->second->index()] =  sizeof(float)*width;
+        break;
+        case CCfits::Tdouble:
+            sizes[it->second->index()] =  sizeof(double)*width;
+        break;
+        case CCfits::Tnull:
+        case CCfits::Tbit:
+        case CCfits::Tlogical:
+        case CCfits::Tstring:
+        case CCfits::Tcomplex:
+        case CCfits::Tdblcomplex:
+        case CCfits::VTbit:
+        case CCfits::VTbyte:
+        case CCfits::VTlogical:
+        case CCfits::VTushort:
+        case CCfits::VTshort:
+        case CCfits::VTuint:
+        case CCfits::VTint:
+        case CCfits::VTulong:
+        case CCfits::VTlong:
+        case CCfits::VTlonglong:
+        case CCfits::VTfloat:
+        case CCfits::VTdouble:
+        case CCfits::VTcomplex:
+        case CCfits::VTdblcomplex:
+            cout << "Data type not implemented yet." << endl;
+            return vector<int>();
+        break;
+        default:
+            cout << "THIS SHOULD NEVER BE REACHED" << endl;
+            return vector<int>();
+        }
+    }
+    //calculate the offsets in the vector.
+    int checkIndex = 1;
+    for (map<int,int>::iterator it=sizes.begin(); it != sizes.end(); it++)
+    {
+        result.push_back(size);
+        size += it->second;
+        if (it->first != checkIndex)
+        {
+            cout << "Expected index " << checkIndex << " found " << it->first << endl;
+        }
+        checkIndex++;
+    }
+    result.push_back(size);
+    return result;
+}
+
+int main(int argc, const char** argv)
+{
+    //set the names of the file and table to be loaded
+    string fileNameToLoad = "test.fits";
+    string tableNameToLoad = "FACT-TIME_ETIENNE";
+    //set the vector of columns to be dumped
+    vector<string> columnsToDump;
+    columnsToDump.push_back("Data0");
+    columnsToDump.push_back("Data1");
+    //set the name of the output text file
+    string outputFile = "output.txt";
+
+    //load the fits file
+    CCfits::FITS* file = NULL;
+    try
+    {
+        file = new CCfits::FITS(fileNameToLoad);
+    }
+    catch (CCfits::FitsException e)
+    {
+         cout << "Could not open FITS file " << fileNameToLoad << " reason: " << e.message() << endl;
+         return -1;
+    }
+    //check if the selected table indeed exists in the loaded file. If so, load it. Otherwise display the existing tables
+    CCfits::Table* table;
+    const multimap< string, CCfits::ExtHDU * > extMap = file->extension();
+    if (extMap.find(tableNameToLoad) == extMap.end())
+    {
+        cout << "Could not open table " << tableNameToLoad << ". Tables in file are: " << endl;
+        for (std::multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin(); it != extMap.end(); it++)
+            cout << it->first << " ";
+        cout << endl;
+        delete file;
+        return -1;
+    }
+    else
+        table = dynamic_cast<CCfits::Table*>(extMap.find(tableNameToLoad)->second);
+    int numRows = table->rows();
+    //check that the given column names are indeed part of that table
+    map<string, CCfits::Column*> colMap = table->column();
+    if (columnsToDump.size() != 0)
+    {
+        for (vector<string>::iterator it=columnsToDump.begin(); it!= columnsToDump.end(); it++)
+        {
+            if (colMap.find(*it) == colMap.end())
+            {
+                cout << "Config-given dump list contains invalid entry " << *it << endl;
+                delete file;
+                return -1;
+            }
+        }
+    }
+    //dump the requested columns
+    table->makeThisCurrent();
+    vector<int> offsets = CalculateBufferSize(colMap);
+    int size = offsets[offsets.size()-1];
+    offsets.pop_back();
+    unsigned char* fitsBuffer = new unsigned char[size];
+
+    ofstream targetFile(outputFile.c_str());
+    int status = 0;
+
+    for (int i=1;i<=table->rows(); i++)
+    {
+        fits_read_tblbytes(file->fitsPointer(), i, 1, size, fitsBuffer, &status);
+        if (status)
+        {
+            cout << "An error occurred while reading fits row #" << i << " error code: " << status << endl;
+            for (unsigned int j=0;j<offsets.size(); j++)
+                cout << offsets[j] << " ";
+            cout << endl;
+        }
+        writeValuesFromFits(offsets, targetFile, fitsBuffer, columnsToDump, colMap);
+    }
+    delete file;
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/skypeclient.cc
===================================================================
--- branches/FACT++_part_filenames/src/skypeclient.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/skypeclient.cc	(revision 18732)
@@ -0,0 +1,781 @@
+#include <iostream>
+
+#include "EventImp.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+#include "LocalControl.h"
+
+#include <boost/tokenizer.hpp>
+
+#include <dbus/dbus-glib-lowlevel.h>
+
+using namespace std;
+
+class SkypeClient : public StateMachineDim
+{
+private:
+    static const string fAuthorizationMsg;
+
+    enum {
+        kStateDisconnected = 1,
+        kStateConnected = 2,
+    };
+
+    Time fLastConnect;
+
+    DBusConnection *fBus;
+    GMainLoop *fLoop;
+
+    vector<string> fContacts;
+
+    string fUser;
+
+    bool fAllowRaw;
+
+    uint64_t fLastReadMessage;
+
+    string Contact(const string &id) const
+    {
+        if (id.size()==0)
+            return "";
+
+        if (id[0]!='#')
+            return "";
+
+        const size_t p = id.find_first_of('/');
+        if (p==string::npos)
+            return "";
+
+        return id.substr(1, p-1);
+    }
+
+
+
+    static DBusHandlerResult NotifyHandler(DBusConnection *, DBusMessage *dbus_msg, void *user_data)
+    {
+        static_cast<SkypeClient*>(user_data)->HandleDBusMessage(dbus_msg);
+        static_cast<SkypeClient*>(user_data)->Minimize();
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    int HandleMsg(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+            return GetCurrentState();
+
+        for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+            SendSkypeMessage(*it, evt.GetString());
+
+        ostringstream msg;
+        msg << evt.GetString() << " [" << fContacts.size() << "]";
+
+        Info(msg);
+
+        return GetCurrentState();
+    }
+
+    int HandleRaw(const EventImp &evt)
+    {
+        if (evt.GetSize()==0 || !fAllowRaw)
+            return GetCurrentState();
+
+        SendDBusMessage(evt.GetString());
+
+        return GetCurrentState();
+    }
+
+    int HandleCall()
+    {
+        int cnt = 0;
+        for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+        {
+            const string user = Contact(*it);
+            if (user.empty())
+                continue;
+
+            SendDBusMessageNB("CALL "+user);
+
+            cnt++;
+        }
+
+        ostringstream msg;
+        msg << "CALLING [" << cnt << "/" << fContacts.size() << "]";
+
+        Info(msg);
+
+        return GetCurrentState();
+    }
+
+    int HandleSMS(const EventImp &/*sms*/)
+    {
+        /*
+         -> CREATE SMS OUTGOING +0123456789
+            <- SMS 821 STATUS COMPOSING
+            <- SMS 821 PRICE 0
+            <- SMS 821 TIMESTAMP 0
+            <- SMS 821 PRICE_PRECISION 3
+            <- SMS 821 PRICE_CURRENCY EUR
+            <- SMS 821 STATUS COMPOSING
+            <- SMS 821 TARGET_NUMBERS +0123456789
+            <- SMS 821 PRICE -1
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ANALYZING
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ACCEPTABLE
+            <- SMS 821 PRICE 78
+
+         //-------------------------------------------------------------------
+         // Now let's add two more target numbers (in addition to original)
+         -> SET SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 PRICE -1
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ANALYZING, +37259877307=TARGET_ANALYZING
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ACCEPTABLE, +37259877307=TARGET_ACCEPTABLE
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ACCEPTABLE, +37259877307=TARGET_ACCEPTABLE
+            <- SMS 1702 PRICE 234
+
+            TARGET_ANALYZING
+            TARGET_UNDEFINED
+            TARGET_ACCEPTABLE
+            TARGET_NOT_ROUTABLE
+            TARGET_DELIVERY_PENDING
+            TARGET_DELIVERY_SUCCESSFUL
+            TARGET_DELIVERY_FAILED
+            UNKNOWN
+
+         // ----------------------------------------------------------------
+         // This is how to set the message text property
+         // Note that you will get two identical lines in response
+         -> SET SMS 821 BODY "test 123 test 223 test 333"
+            <- SMS 821 BODY "test 123 test 223 test 333"
+            <- SMS 821 BODY "test 123 test 223 test 333"
+
+         // ----------------------------------------------------------------
+         // Now lets try to send the message
+         -> ALTER SMS 821 SEND
+            <- ALTER SMS 821 SEND
+            <- SMS 821 STATUS SENDING_TO_SERVER
+            <- SMS 821 TIMESTAMP 1174058095
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ACCEPTABLE
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_DELIVERY_FAILED
+            <- SMS 821 FAILUREREASON INSUFFICIENT_FUNDS
+            <- SMS 821 STATUS FAILED
+            <- SMS 821 IS_FAILED_UNSEEN TRUE
+
+            STATUS
+             RECEIVED                   the message has been received (but not tagged as read)
+             READ                       the message has been tagged as read
+             COMPOSING                  the message has been created but not yet sent
+             SENDING_TO_SERVER          the message is in process of being sent to server
+             SENT_TO_SERVER             the message has been sent to server
+             DELIVERED                  server has confirmed that the message is sent out to recepient
+             SOME_TARGETS_FAILED        server reports failure to deliver the message to one of the recepients within 24h
+             FAILED                     the message has failed, possible reason may be found in FAILUREREASON property
+             UNKNOWN                    message status is unknown
+
+            FAILUREREASON
+             MISC_ERROR                 indicates failure to supply a meaningful error message
+             SERVER_CONNECT_FAILED      unable to connect to SMS server
+             NO_SMS_CAPABILITY          recepient is unable to receive SMS messages
+             INSUFFICIENT_FUNDS         insufficient Skype Credit to send an SMS message
+             INVALID_CONFIRMATION_CODE  set when an erroneous code was submitted in a CONFIRMATION_CODE_SUBMIT message
+             USER_BLOCKED               user is blocked from the server
+             IP_BLOCKED                 user IP is blocked from the server
+             NODE_BLOCKED               user p2p network node has been blocked from the server
+             UNKNOWN                    default failure code
+             NO_SENDERID_CAPABILITY     Set when a CONFIRMATION_CODE_REQUEST SMS message is sent with a mobile phone number containing country code of either USA, Taiwan or China. Setting reply-to number from Skype SMS’s to your mobile number is not supported in these countries. Added in Skype version 3.5 (protocol 8).
+
+         // ----------------------------------------------------------------
+         // As sending the message failed (not enough Skype credit),
+         // lets delete the message
+         -> DELETE SMS 821
+            <- DELETE SMS 821
+            */
+
+        return GetCurrentState();
+    }
+
+    string SendDBusMessage(const string &cmd, bool display=true)
+    {
+        DBusMessage *send = GetDBusMessage(cmd);
+        if (!send)
+            return "";
+
+        DBusError error;
+        dbus_error_init(&error);
+
+        // Send the message and wait for reply
+        if (display)
+            Info("TX: "+cmd);
+        DBusMessage *reply=
+            dbus_connection_send_with_reply_and_block(fBus, send,
+                                                      -1,//DBUS_TIMEOUT_USE_DEFAULT,
+                                                      &error);
+        /*
+        DBusPendingCall *pending = 0;
+        if (!dbus_connection_send_with_reply (fBus, send,
+                                              &pending, DBUS_TIMEOUT_USE_DEFAULT))
+            return "";
+
+        if (!pending)
+            return "";
+
+        bool = dbus_pending_call_get_completed(pending);
+        //dbus_pending_call_block(pending);
+        DBusMessage *reply = dbus_pending_call_steal_reply(pending);
+        dbus_pending_call_unref(pending);
+        */
+
+        if (!reply)
+        {
+            Error("dbus_connection_send_with_reply_and_block: "+string(error.message));
+            dbus_error_free(&error);
+            return "";
+        }
+
+        // Get Skype's reply string
+        const char *ack = 0;
+        dbus_message_get_args(reply, 0, DBUS_TYPE_STRING, &ack, DBUS_TYPE_INVALID);
+
+        if (display)
+            Info("RX: "+string(ack));
+
+        const string rc = ack;
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+        dbus_message_unref(reply);
+
+        return rc;
+    }
+
+    DBusMessage *GetDBusMessage(const string &cmd)
+    {
+        // Create a message to be sent to Skype
+
+        // Constructs a new message to invoke a method on a remote object.
+        // Sets the service the message should be sent to "com.Skype.API"
+        // Sets the object path the message should be sent to "/com/Skype"
+        // Sets the interface to invoke method on to "com.Skype.API"
+        // Sets the method to invoke to "Invoke"
+        DBusMessage *send=
+            dbus_message_new_method_call("com.Skype.API", "/com/Skype",
+                                         "com.Skype.API", "Invoke");
+        if (!send)
+        {
+            Error("dbus_message_new_method_call failed.");
+            return NULL;
+        }
+
+        // Set the argument of the Invoke method
+        // Sets arg to be an argument to be passed to the Invoke method.
+        // It is an input argument. It has a type string.
+        // There are no output arguments.
+        const char *msg = cmd.c_str();
+        dbus_message_append_args(send,
+                                 DBUS_TYPE_STRING, &msg,
+                                 DBUS_TYPE_INVALID);
+
+        return send;
+    }
+
+    bool Minimize()
+    {
+        DBusMessage *send = GetDBusMessage("MINIMIZE");
+        if (!send)
+            return false;
+
+        // Send the message and ignore the reply
+        const bool rc = dbus_connection_send(fBus, send, NULL);
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+
+        return rc;
+    }
+
+    bool SendDBusMessageNB(const string &cmd)
+    {
+        DBusMessage *send = GetDBusMessage(cmd);
+        if (!send)
+            return false;
+
+        // Send the message and ignore the reply
+        Info("TX: "+cmd);
+        const bool rc = dbus_connection_send(fBus, send, NULL);
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+
+        return rc;
+    }
+
+    bool SendSkypeMessage(const string &chat, const string &msg)
+    {
+        return SendDBusMessageNB("CHATMESSAGE "+chat+" "+msg);
+/*
+        // SendDBusMessage(bus, "CHAT CREATE "+user);
+
+        const string rc = SendDBusMessage("CHATMESSAGE "+chat+" "+msg);
+
+        const vector<string> vec = Split(rc);
+        if (vec[0]=="ERROR")
+        {
+            auto it = find(fContacts.begin(), fContacts.end(), chat);
+            if (it!=fContacts.end())
+                fContacts.erase(it);
+            return false;
+        }
+
+        return true;
+        */
+    }
+    vector<string> Split(const string &msg)
+    {
+        using namespace boost;
+
+        typedef char_separator<char> separator;
+        const tokenizer<separator> tok(msg, separator(" "));
+
+        vector<string> vec;
+        for (auto it=tok.begin(); it!=tok.end(); it++)
+            vec.push_back((*it)[0]==0?it->substr(1):*it);
+
+        return vec;
+    }
+
+    void HandleDBusMessage(DBusMessage *dbus_msg)
+    {
+        if (GetCurrentState()!=kStateConnected)
+            return;
+
+        // CALL target1, target2, target3
+        // SET CALL <id> STATUS FINISHED
+
+        // Stores the argument passed to the Notify method
+        // into notify_argument.
+
+        char *notify_argument=0;
+        dbus_message_get_args(dbus_msg, 0,
+                              DBUS_TYPE_STRING, &notify_argument,
+                              DBUS_TYPE_INVALID);
+
+        Info("Notify: "+string(notify_argument));
+
+        const vector<string> vec = Split(notify_argument);
+
+        if (vec[0]=="CURRENTUSERHANDLE")
+        {
+            if (vec[1]!=fUser)
+            {
+                Error("Wrong user '"+vec[1]+"' logged in, '"+fUser+"' expected!");
+                fNewState = kStateDisconnected;
+                return;
+            }
+        }
+
+        if (vec[0]=="CONNSTATUS")
+        {
+            // OFFLINE / CONNECTING / PAUSING / ONLINE
+            if (vec[1]!="ONLINE")
+            {
+                Error("Connection status '"+vec[1]+"'");
+                fNewState = kStateDisconnected;
+                return;
+            }
+        }
+
+        if (vec[0]=="USERSTATUS")
+        {
+            if (vec[1]!="ONLINE")
+            {
+                Info("Skype user not visible... setting online.");
+                SendDBusMessageNB("SET USERSTATUS ONLINE");
+            }
+        }
+
+       // USER rtlprmft RECEIVEDAUTHREQUEST Please allow me to see when you are online
+ 
+        if (vec[0]=="USER")
+        {
+            if (vec[2]=="ONLINESTATUS")
+            {
+                if (vec[3]=="OFFLINE")
+                {
+                }
+                Info("User '"+vec[1]+"' changed status to '"+vec[3]+"'");
+            }
+
+            // Answer authorization requests
+            if (vec[2]=="RECEIVEDAUTHREQUEST")
+                SendDBusMessageNB("SET USER "+vec[1]+" BUDDYSTATUS 2 "+fAuthorizationMsg);
+
+            //if (vec[2]=="NROF_AUTHED_BUDDIES")
+            //    cout << vec[1] << " --> " << vec[3];
+        }
+
+        if (vec[0]=="GROUP")
+        {
+            // 1: gorup id
+            // 2: NROFUSERS
+            // 3: n
+        }
+
+        if (vec[0]=="CHATMESSAGE")
+        {
+            if (vec[2]=="STATUS" && (vec[3]=="RECEIVED"|| vec[3]=="READ"))
+            {
+                const uint64_t last = stoll(vec[1]);
+
+                // Check if message has already been processed: Sometimes
+                // some messages are received twice as READ/READ
+                if (last<=fLastReadMessage)
+                    return;
+                fLastReadMessage = last;
+
+                string rc;
+
+                rc=SendDBusMessage("GET CHATMESSAGE "+vec[1]+" CHATNAME");
+
+                const string id = Split(rc)[3];
+
+                rc=SendDBusMessage("GET CHATMESSAGE "+vec[1]+" BODY");
+
+                const size_t p = rc.find(" BODY ");
+                if (p==string::npos)
+                {
+                    cout<< "BODY TAG NOT FOUND|" << rc << "|" << endl;
+                    return;
+                }
+
+                rc = Tools::Trim(rc.substr(rc.find(" BODY ")+6));
+
+                if (rc=="start")
+                {
+                    auto it = find(fContacts.begin(), fContacts.end(), id);
+                    if (it==fContacts.end())
+                    {
+                        SendSkypeMessage(id, "Successfully subscribed.");
+                        fContacts.push_back(id);
+                    }
+                    else
+                        SendSkypeMessage(id, "You are already subscribed.");
+
+                    return;
+                }
+                if (rc=="stop")
+                {
+                    auto it = find(fContacts.begin(), fContacts.end(), id);
+                    if (it!=fContacts.end())
+                    {
+                        SendSkypeMessage(id, "Successfully un-subscribed.");
+                        fContacts.erase(it);
+                    }
+                    else
+                        SendSkypeMessage(id, "You were not subscribed.");
+
+                    return;
+                }
+
+                if (rc=="status")
+                {
+                    for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+                    {
+                        if (*it==vec[1])
+                        {
+                            SendSkypeMessage(id, "You are subscribed.");
+                            return;
+                        }
+                    }
+                    SendSkypeMessage(id, "You are not subscribed.");
+                    return;
+                }
+
+                SendSkypeMessage(id, "SYNTAX ERROR\n\nAvailable commands:\nPlease use either 'start', 'stop' or 'status'");
+
+            }
+        }
+
+        if (vec[0]=="CHAT")
+        {
+            const string id = vec[1];
+            if (vec[2]=="ACTIVITY_TIMESTAMP")
+            {
+                //SendDBusMessage("CHAT CREATE "+Contact(vec[1]));
+                //Info(vec[2]);
+                // ALTER CHAT DISBAND
+            }
+            if (vec[2]=="MYROLE")
+            {
+            }
+            if (vec[2]=="MEMBERS")
+            {
+            }
+            if (vec[2]=="ACTIVEMEMBERS")
+            {
+            }
+            if (vec[2]=="STATUS")
+            {
+                // vec[3]=="DIALOG")
+            }
+            if (vec[2]=="TIMESTAMP")
+            {
+            }
+            if (vec[2]=="DIALOG_PARTNER")
+            {
+            }
+            if (vec[2]=="FRIENDLYNAME")
+            {
+                // Notify: CHAT #maggiyy/$rtlprmft;da26ea52b3e70e65 FRIENDLYNAME Lamouette | noch ne message
+            }
+        }
+
+        if (vec[0]=="CALL")
+        {
+            if (vec[2]=="STATUS" && vec[2]=="INPROGRESS")
+                SendDBusMessageNB("SET CALL "+vec[1]+ "STATUS FINISHED");
+
+            // CALL 1501 STATUS UNPLACED
+            // CALL 1501 STATUS ROUTING
+            // CALL 1501 STATUS RINGING
+        }
+
+    }
+
+    int HandleDisconnect()
+    {
+        return kStateDisconnected;
+    }
+
+    int HandleConnect()
+    {
+        fLastConnect = Time();
+
+        // Enable client connection to Skype
+        if (SendDBusMessage("NAME FACT++")!="OK")
+            return kStateDisconnected;
+
+        // Negotiate protocol version
+        if (SendDBusMessage("PROTOCOL 5")!="PROTOCOL 5")
+            return kStateDisconnected;
+
+        // Now we are connected: Minimize the window...
+        SendDBusMessageNB("MINIMIZE");
+
+        // ... and switch off the away message
+        SendDBusMessageNB("SET AUTOAWAY OFF");
+
+        // Check for unauthorized users and...
+        const string rc = SendDBusMessage("SEARCH USERSWAITINGMYAUTHORIZATION");
+
+        // ...authorize them
+        vector<string> users = Split(rc);
+
+        if (users[0]!="USERS")
+        {
+            Error("Unexpected answer received '"+rc+"'");
+            return kStateDisconnected;
+        }
+
+        for (auto it=users.begin()+1; it!=users.end(); it++)
+        {
+            const size_t p = it->length()-1;
+            if (it->at(p)==',')
+                it->erase(p);
+
+            SendDBusMessageNB("SET USER "+*it+" BUDDYSTATUS 2 "+fAuthorizationMsg);
+        }
+
+        return kStateConnected;
+    }
+
+    Time fLastPing;
+    int fNewState;
+
+    int Execute()
+    {
+        fNewState = -1;
+
+        static GMainContext *context = g_main_loop_get_context(fLoop);
+        g_main_context_iteration(context, FALSE);
+
+        if (fNewState>0)
+            return fNewState;
+
+        const Time now;
+
+        if (GetCurrentState()>kStateDisconnected)
+        {
+            if (now-fLastPing>boost::posix_time::seconds(15))
+            {
+                if (SendDBusMessage("PING", false)!="PONG")
+                    return kStateDisconnected;
+
+                fLastPing = now;
+            }
+
+            return GetCurrentState();
+        }
+
+        if (now-fLastConnect>boost::posix_time::minutes(1))
+            return HandleConnect();
+
+        return GetCurrentState();
+    }
+
+public:
+    SkypeClient(ostream &lout) : StateMachineDim(lout, "SKYPE"),
+        fLastConnect(Time()-boost::posix_time::minutes(5)), fLoop(0),
+        fLastReadMessage(0)
+    {
+        AddStateName(kStateDisconnected, "Disonnected", "");
+        AddStateName(kStateConnected,    "Connected",   "");
+
+        AddEvent("MSG", "C", kStateConnected)
+            (bind(&SkypeClient::HandleMsg, this, placeholders::_1))
+            ("|msg[string]:message to be distributed");
+
+        AddEvent("RAW", "C")
+            (bind(&SkypeClient::HandleRaw, this, placeholders::_1))
+            ("|msg[string]:send a raw message to the Skype API");
+
+        AddEvent("CALL", "", kStateConnected)
+            (bind(&SkypeClient::HandleCall, this))
+            ("");
+
+        AddEvent("CONNECT", kStateDisconnected)
+            (bind(&SkypeClient::HandleConnect, this))
+            ("");
+
+        AddEvent("DISCONNECT", kStateConnected)
+            (bind(&SkypeClient::HandleDisconnect, this))
+            ("");
+
+        fLoop = g_main_loop_new(NULL, FALSE);
+    }
+    ~SkypeClient()
+    {
+        g_main_loop_unref(fLoop);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fUser = conf.Get<string>("user");
+        fAllowRaw = conf.Get<bool>("allow-raw");
+
+        // Get a connection to the session bus.
+        DBusError error;
+        dbus_error_init(&error);
+
+        fBus = dbus_bus_get(DBUS_BUS_SESSION, &error);
+        if (!fBus)
+        {
+            Error("dbus_bus_get failed: "+string(error.message));
+            dbus_error_free(&error);
+            return 1;
+        }
+
+        // Set up this connection to work in a GLib event loop.
+        dbus_connection_setup_with_g_main(fBus, NULL);
+
+        // Install notify handler to process Skype's notifications.
+        // The Skype-to-client method call.
+        DBusObjectPathVTable vtable;
+        vtable.message_function = SkypeClient::NotifyHandler;
+
+        // We will process messages with the object path "/com/Skype/Client".
+        const dbus_bool_t check =
+            dbus_connection_register_object_path(fBus, "/com/Skype/Client",
+                                                 &vtable, this);
+        if (!check)
+        {
+            Error("dbus_connection_register_object_path failed.");
+            return 2;
+        }
+
+        return -1;
+    }
+
+    int Write(const Time &time, const string &txt, int severity=MessageImp::kMessage)
+    {
+        return MessageImp::Write(time, txt, severity);
+    }
+};
+
+const string SkypeClient::fAuthorizationMsg =
+    "This is an automatic client of the FACT project (www.fact-project.org). "
+    "If you haven't tried to get in contact with this bot, feel free to block it. "
+    "In case of problems or questions please contact system@fact-project.org.";
+
+
+// -------------------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Skype client options");
+    config.add_options()
+        ("user", var<string>("www.fact-project.org"), "If a user is given only connection to a skype with this user are accepted.")
+        ("allow-raw", po_bool(false), "This allows sending raw messages to the SKype API (for debugging)")
+        ;
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The skypeclient is a Dim to Skype interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: skypeclient [OPTIONS]\n"
+        "  or:  skypeclient [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+
+#include "Main.h"
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+        return Main::execute<LocalStream, SkypeClient>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return Main::execute<LocalShell, SkypeClient>(conf);
+    else
+        return Main::execute<LocalConsole, SkypeClient>(conf);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/smartfact.cc
===================================================================
--- branches/FACT++_part_filenames/src/smartfact.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/smartfact.cc	(revision 18732)
@@ -0,0 +1,3522 @@
+#ifdef HAVE_NOVA
+#include "externals/Prediction.h"
+#endif
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include <sys/stat.h> //for file stats
+#include <sys/statvfs.h> //for file statvfs
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "DimWriteStatistics.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFAD.h"
+#include "HeadersBIAS.h"
+#include "HeadersFTM.h"
+#include "HeadersFSC.h"
+#include "HeadersGPS.h"
+#include "HeadersSQM.h"
+#include "HeadersMCP.h"
+#include "HeadersLid.h"
+#include "HeadersDrive.h"
+#include "HeadersPower.h"
+#include "HeadersPFmini.h"
+#include "HeadersAgilent.h"
+#include "HeadersFeedback.h"
+#include "HeadersRateScan.h"
+#include "HeadersRateControl.h"
+#include "HeadersTNGWeather.h"
+#include "HeadersMagicLidar.h"
+#include "HeadersMagicWeather.h"
+#include "HeadersTemperature.h"
+
+#include <boost/filesystem.hpp>
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+/*
+template<class T>
+    class buffer : public deque<T>
+    {
+        int32_t max_size;
+
+    public:
+        buffer(int32_t max=-1) : max_size(max) { }
+        const T &operator=(const T &t) const { push_back(t); if (max_size>0 && deque<T>::size()>max_size) deque<T>::pop_front(); }
+        operator T() const { return deque<T>::size()>0 ? deque<T>::back() : T(); }
+        bool valid() const { return deque<T>::size()>0; }
+    };
+*/
+
+// ------------------------------------------------------------------------
+
+namespace HTML
+{
+    const static string kWhite  = "#ffffff";
+    const static string kYellow = "#fffff0";
+    const static string kRed    = "#fff8f0";
+    const static string kGreen  = "#f0fff0";
+    const static string kBlue   = "#f0f0ff";
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class Sun
+{
+public:
+    Time time;
+
+    // This is always the time of the next...
+    Time fSunRise00;
+    Time fSunRise06;
+    Time fSunRise12;
+    Time fSunRise18;
+
+    Time fSunSet00;
+    Time fSunSet06;
+    Time fSunSet12;
+    Time fSunSet18;
+
+    int state;
+    string description;
+    string color;
+
+    bool isday;
+    bool visible;
+
+    Nova::RstTime Rst(double jd, double hrz=LN_SOLAR_STANDART_HORIZON)
+    {
+        Nova::RstTime rs = Nova::GetSolarRst(jd-0.5, hrz);
+        if (jd>rs.rise || jd>rs.set)
+        {
+            const Nova::RstTime rs2 = Nova::GetSolarRst(jd+0.5, hrz);
+            if (jd>rs.rise)
+                rs.rise = rs2.rise;
+            if (jd>rs.set)
+                rs.set = rs2.set;
+        }
+        return rs;
+    }
+
+public:
+    Sun() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Sun(const Time &t) :  time(t)
+    {
+#ifdef HAVE_LIBNOVA
+        // get Julian day from local time
+        const double JD = time.JD();
+
+        // >0deg           : day
+        //  -6deg -   0deg : civil        twilight
+        // -12deg -  -6deg : nautical     twilight
+        // -18deg - -12deg : astronomical twilight
+        // <-18deg         : night
+
+        const Nova::RstTime sun00 = Rst(JD);
+        const Nova::RstTime sun06 = Rst(JD,  -6);
+        const Nova::RstTime sun12 = Rst(JD, -12);
+        const Nova::RstTime sun18 = Rst(JD, -18);
+
+        fSunRise00 = sun00.rise;
+        fSunRise06 = sun06.rise;
+        fSunRise12 = sun12.rise;
+        fSunRise18 = sun18.rise;
+
+        fSunSet00  = sun00.set;
+        fSunSet06  = sun06.set;
+        fSunSet12  = sun12.set;
+        fSunSet18  = sun18.set;
+
+        array<double,8> arr =
+        {{
+            sun00.set,
+            sun06.set,
+            sun12.set,
+            sun18.set,
+            sun18.rise,
+            sun12.rise,
+            sun06.rise,
+            sun00.rise,
+        }};
+
+
+        state = std::min_element(arr.begin(), arr.end())-arr.begin();
+
+        string name[] =
+        {
+            "day time",
+            "civil twilight",
+            "nautical twilight",
+            "astron. twilight",
+            "dark time",
+            "astron. twilight",
+            "nautical twilight",
+            "civil twilight"
+        };
+
+        description = name[state];
+
+        const string txt = fSunRise18<fSunSet18 ?
+            time.MinutesTo(fSunRise18)+"&uarr;" :
+            time.MinutesTo(fSunSet18)+"&darr;";
+
+        description += " ["+txt+"]";
+
+        isday = state==0;
+
+        switch (state)
+        {
+        case 0:                  color = HTML::kRed;     break;
+        case 1: case 2:          color = HTML::kYellow;  break;
+        case 3: case 4:  case 5: color = HTML::kGreen;   break;
+        case 6: case 7:          color = HTML::kYellow;  break;
+        }
+
+        visible = state==0;
+
+        /*
+         // Warning: return code of 1 means circumpolar and is not checked!
+        Nova::RstTime sun_day          = Nova::GetSolarRst(JD-0.5);
+        Nova::RstTime sun_civil        = Nova::GetSolarRst(JD-0.5,  -6);
+        Nova::RstTime sun_astronomical = Nova::GetSolarRst(JD-0.5, -12);
+        Nova::RstTime sun_dark         = Nova::GetSolarRst(JD-0.5, -18);
+
+        fSetDayTime       = Time(sun_day.set);
+        fSetCivil         = Time(sun_civil.set);
+        fSetAstronomical  = Time(sun_astronomical.set);
+        fSetDarkTime      = Time(sun_dark.set);
+
+        fRiseDayTime      = Time(sun_day.rise);
+        fRiseCivil        = Time(sun_civil.rise);
+        fRiseAstronomical = Time(sun_astronomical.rise);
+        fRiseDarkTime     = Time(sun_dark.rise);
+
+        const bool is_day   = JD>sun_day.rise;
+        const bool is_night = JD>sun_dark.set;
+
+        sun_day          = Nova::GetSolarRst(JD+0.5);
+        sun_civil        = Nova::GetSolarRst(JD+0.5,  -6);
+        sun_astronomical = Nova::GetSolarRst(JD+0.5, -12);
+        sun_dark         = Nova::GetSolarRst(JD+0.5, -18);
+
+        if (is_day)
+        {
+            fRiseDayTime      = Time(sun_day.rise);
+            fRiseCivil        = Time(sun_civil.rise);
+            fRiseAstronomical = Time(sun_astronomical.rise);
+            fRiseDarkTime     = Time(sun_dark.rise);
+        }
+
+        if (is_night)
+        {
+            fSetDayTime      = Time(sun_day.set);
+            fSetCivil        = Time(sun_civil.set);
+            fSetAstronomical = Time(sun_astronomical.set);
+            fSetDarkTime     = Time(sun_dark.set);
+        }
+
+        // case 0: midnight to sun-rise | !is_day && !is_night | rise/set  | -> isday=0
+        // case 1: sun-rise to sun-set  |  is_day && !is_night | set /rise | -> isday=1
+        // case 2: sun-set  to midnight |  is_day &&  is_night | rise/set  | -> isday=0
+
+        isday = is_day^is_night;
+
+        Time fRiseDayTime;      //   0: Start of day time (=end of civil twilight)
+        Time fRiseCivil;        //  -6: End of nautical twilight
+        Time fRiseAstronomical; // -12: End of astron. twilight
+        Time fRiseDarkTime;     // -18: End of dark time
+
+        Time fSetDayTime;       //   0: End of day time (=start of civil twilight)
+        Time fSetCivil;         //  -6: Start of nautical twilight
+        Time fSetAstronomical;  // -12: Start of astron. twilight
+        Time fSetDarkTime;      // -18: Start of dark time
+
+        state = isday ? 4 : 0;               // 0 [-> Day time       ]
+        if (time>fSetDayTime)       state++; // 1 [-> Civil  twilight]
+        if (time>fSetCivil)         state++; // 2 [-> Naut.  twilight]
+        if (time>fSetAstronomical)  state++; // 3 [-> Astro. twilight]
+        if (time>fSetDarkTime)      state++; // 4 [-> Dark time      ]
+
+        if (time>fRiseDarkTime)     state++; // 5 [-> Astro. twilight]
+        if (time>fRiseAstronomical) state++; // 6 [-> Naut.  twilight]
+        if (time>fRiseCivil)        state++; // 7 [-> Civil  twilight]
+        if (time>fRiseDayTime)      state++; // 8 [-> Day time       ]
+
+        string name[] =
+        {
+            "dark time",          // 0
+            "astron. twilight",   // 1
+            "civil twilight",     // 2
+            "sunrise",            // 3
+            "day time",           // 4
+            "sunset",             // 5
+            "civil twilight",     // 6
+            "astron. twilight",   // 7
+            "dark time"           // 8
+        };
+
+        description = name[state];
+
+        const string arr = isday ?
+            fSetDarkTime.MinutesTo(time)+"&darr;" :
+            fRiseDarkTime.MinutesTo(time)+"&uarr;";
+
+        description += " ["+arr+"]";
+
+        switch (state)
+        {
+        case 0: case 1:  color = HTML::kGreen;   break;
+        case 2: case 3:  color = HTML::kYellow;  break;
+        case 4:          color = HTML::kRed;     break;
+        case 5: case 6:  color = HTML::kYellow;  break;
+        case 7: case 8:  color = HTML::kGreen;   break;
+        }
+
+        visible = state>=3 && state<=5;
+        */
+#endif
+    }
+};
+
+class Moon
+{
+public:
+    Time time;
+
+    double ra;
+    double dec;
+
+    double zd;
+    double az;
+
+    double disk;
+
+    bool visible;
+
+    Time fRise;
+    Time fTransit;
+    Time fSet;
+
+    string description;
+    string color;
+
+    int state;
+
+    Moon() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Moon(const Time &t) : time(t)
+    {
+#ifdef HAVE_LIBNOVA
+        const double JD = time.JD();
+
+        Nova::RstTime moon = Nova::GetLunarRst(JD-0.5);
+
+        fRise    = Time(moon.rise);
+        fTransit = Time(moon.transit);
+        fSet     = Time(moon.set);
+
+        //visible =
+        //    ((JD>moon.rise && JD<moon.set ) && moon.rise<moon.set) ||
+        //    ((JD<moon.set  || JD>moon.rise) && moon.rise>moon.set);
+
+        const bool is_up      = JD>moon.rise;
+        const bool is_sinking = JD>moon.transit;
+        const bool is_dn      = JD>moon.set;
+
+        moon = Nova::GetLunarRst(JD+0.5);
+        if (is_up)
+            fRise = Time(moon.rise);
+        if (is_sinking)
+            fTransit = Time(moon.transit);
+        if (is_dn)
+            fSet = Time(moon.set);
+
+        const Nova::EquPosn  pos = Nova::GetLunarEquCoords(JD);
+        const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(pos, JD);
+
+        az = hrz.az;
+        zd = hrz.zd;
+
+        ra  = pos.ra/15;
+        dec = pos.dec;
+
+        disk = Nova::GetLunarDisk(JD)*100;
+        state = 0;
+        if (fRise   <fTransit && fRise   <fSet)     state = 0;  // not visible
+        if (fTransit<fSet     && fTransit<fRise)    state = 1;  // before culm
+        if (fSet    <fRise    && fSet    <fTransit) state = 2;  // after culm
+
+        visible = state!=0;
+
+        // 0: not visible
+        // 1: visible before cul
+        // 2: visible after cul
+
+        if (!visible || disk<25)
+            color = HTML::kGreen;
+        else
+            color = disk>75 ? HTML::kRed : HTML::kYellow;
+
+        const string arr = fSet<fRise ?
+            fSet.MinutesTo(time) +"&darr;" :
+            fRise.MinutesTo(time)+"&uarr;";
+
+        ostringstream out;
+        out << setprecision(2);
+        out << (visible?"visible ":"") << (disk<0.1?0:disk) << "% [" << arr << "]";
+
+        description = out.str();
+#endif
+    }
+
+    double Angle(double r, double d) const
+    {
+        const double theta0 = M_PI/2-d*M_PI/180;
+        const double phi0   = r*M_PI/12;
+
+        const double theta1 = M_PI/2-dec*M_PI/180;
+        const double phi1   = ra*M_PI/12;
+
+        const double x0 = sin(theta0) * cos(phi0);
+        const double y0 = sin(theta0) * sin(phi0);
+        const double z0 = cos(theta0);
+
+        const double x1 = sin(theta1) * cos(phi1);
+        const double y1 = sin(theta1) * sin(phi1);
+        const double z1 = cos(theta1);
+
+        double arg = x0*x1 + y0*y1 + z0*z1;
+        if(arg >  1.0) arg =  1.0;
+        if(arg < -1.0) arg = -1.0;
+
+        return acos(arg) * 180/M_PI;
+    }
+
+    static string Color(double angle)
+    {
+        if (angle<10 || angle>150)
+            return HTML::kRed;
+        if (angle<20 || angle>140)
+            return HTML::kYellow;
+        return HTML::kGreen;
+    }
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class StateMachineSmartFACT : public StateMachineDim
+{
+public:
+    static bool fIsServer;
+
+private:
+    enum states_t
+    {
+        kStateDimNetworkNA = 1,
+        kStateRunning,
+    };
+
+    // ------------------------- History classes -----------------------
+
+    struct EventElement
+    {
+        Time time;
+        string msg;
+
+        EventElement(const Time &t, const string &s) : time(t), msg(s) { }
+    };
+
+    class EventHist : public list<EventElement>
+    {
+        const boost::posix_time::time_duration deltat; //boost::posix_time::pos_infin
+        const uint64_t max;
+
+    public:
+        EventHist(const boost::posix_time::time_duration &dt=boost::posix_time::hours(12), uint64_t mx=UINT64_MAX) : deltat(dt), max(mx) { }
+
+        void add(const string &s, const Time &t=Time())
+        {
+            while (!empty() && (front().time+deltat<t || size()>max))
+                pop_front();
+
+            emplace_back(t, s);
+        }
+
+        void clean()
+        {
+            for (auto it=begin(); it!=end();)
+                if (!it->time)
+                {
+                    const auto is = it++;
+                    erase(is);
+                }
+        }
+
+        string get() const
+        {
+            ostringstream out;
+
+            string last = "";
+            for (auto it=begin(); it!=end(); it++)
+            {
+                const string tm = it->time.GetAsStr("%H:%M:%S ");
+                out << (tm!=last?tm:"--:--:-- ") << it->msg << "<br/>";
+                last = tm;
+            }
+
+            return out.str();
+        }
+        string rget() const
+        {
+            ostringstream out;
+
+            for (auto it=rbegin(); it!=rend(); it++)
+                out << it->time.GetAsStr("%H:%M:%S ") << it->msg << "<br/>";
+
+            return out.str();
+        }
+    };
+
+    // ------------------------- Internal variables -----------------------
+
+    const Time fRunTime;
+
+    PixelMap fPixelMap;
+
+    string fDatabase;
+
+    Time fLastUpdate;
+    Time fLastAstroCalc;
+
+    string fPath;
+
+    // ----------------------------- Data storage -------------------------
+
+    EventHist fControlMessageHist;
+    EventHist fControlAlarmHist;
+    int32_t   fControlScriptDepth;
+
+     int32_t  fMcpConfigurationState;   // For consistency
+     int64_t  fMcpConfigurationMaxTime;
+     int64_t  fMcpConfigurationMaxEvents;
+    string    fMcpConfigurationName;
+    Time      fMcpConfigurationRunStart;
+    EventHist fMcpConfigurationHist;
+    bool fLastRunFinishedWithZeroEvents;
+
+    enum weather_t { kWeatherBegin=0, kTemp = kWeatherBegin, kDew, kHum, kPress, kWind, kGusts, kDir, kWeatherEnd = kDir+1 };
+    deque<float> fMagicWeatherHist[kWeatherEnd];
+
+    deque<float> fTngWeatherDustHist;
+    Time  fTngWeatherDustTime;
+
+    vector<float> fBiasControlVoltageVec;
+
+    float  fBiasControlPowerTot;
+    float  fBiasControlVoltageMed;
+    float  fBiasControlCurrentMed;
+    float  fBiasControlCurrentMax;
+
+    deque<float> fBiasControlCurrentHist;
+    deque<float> fFscControlTemperatureHist;
+
+    float fFscControlHumidityAvg;
+
+    deque<float> fPfMiniHumidityHist;
+    deque<float> fPfMiniTemperatureHist;
+
+    deque<float> fTemperatureControlHist;
+
+    float  fDriveControlPointingZd;
+    string fDriveControlPointingAz;
+    string fDriveControlSourceName;
+    float  fDriveControlMoonDist;
+
+    deque<float> fDriveControlTrackingDevHist;
+
+     int64_t fFadControlNumEvents;
+     int64_t fFadControlStartRun;
+     int32_t fFadControlDrsStep;
+    vector<uint32_t> fFadControlDrsRuns;
+
+    deque<float> fFtmControlTriggerRateHist;
+     int32_t     fFtmControlTriggerRateTooLow;
+     int         fFtmControlState;
+
+    float fFtmPatchThresholdMed;
+    float fFtmBoardThresholdMed;
+
+    bool fFtmControlFtuOk;
+
+    deque<float> fRateControlThreshold;
+
+    uint64_t  fRateScanDataId;
+    uint8_t   fRateScanBoard;
+    deque<float> fRateScanDataHist[41];
+
+    set<string> fErrorList;
+    EventHist   fErrorHist;
+    EventHist   fChatHist;
+
+    uint64_t fFreeSpace;
+
+    Sun   fSun;
+    Moon  fMoon;
+
+    // --------------------------- File header ----------------------------
+
+    Time   fAudioTime;
+    string fAudioName;
+
+    string Header(const Time &d)
+    {
+        ostringstream msg;
+        msg << d.JavaDate() << '\t' << fAudioTime.JavaDate() << '\t' << fAudioName;
+        return msg.str();
+    }
+
+    string Header(const EventImp &d)
+    {
+        return Header(d.GetTime());
+    }
+
+    void SetAudio(const string &name)
+    {
+        fAudioName = name;
+        fAudioTime = Time();
+    }
+
+    // ------------- Initialize variables before the Dim stuff ------------
+
+    DimVersion fDimDNS;
+    DimControl fDimControl;
+    DimDescribedState fDimMcp;
+    DimDescribedState fDimDataLogger;
+    DimDescribedState fDimDriveControl;
+    DimDescribedState fDimTimeCheck;
+    DimDescribedState fDimMagicWeather;
+    DimDescribedState fDimMagicLidar;
+    DimDescribedState fDimTngWeather;
+    DimDescribedState fDimTemperature;
+    DimDescribedState fDimFeedback;
+    DimDescribedState fDimBiasControl;
+    DimDescribedState fDimFtmControl;
+    DimDescribedState fDimFadControl;
+    DimDescribedState fDimFscControl;
+    DimDescribedState fDimPfMiniControl;
+    DimDescribedState fDimGpsControl;
+    DimDescribedState fDimSqmControl;
+    DimDescribedState fDimAgilentControl24;
+    DimDescribedState fDimAgilentControl50;
+    DimDescribedState fDimAgilentControl80;
+    DimDescribedState fDimPwrControl;
+    DimDescribedState fDimLidControl;
+    DimDescribedState fDimRateControl;
+    DimDescribedState fDimRateScan;
+    DimDescribedState fDimChat;
+    DimDescribedState fDimSkypeClient;
+
+    // -------------------------------------------------------------------
+
+    string GetDir(const double angle)
+    {
+        static const char *dir[] =
+        {
+            "N", "NNE", "NE", "ENE",
+            "E", "ESE", "SE", "SSE",
+            "S", "SSW", "SW", "WSW",
+            "W", "WNW", "NW", "NNW"
+        };
+
+        const uint16_t idx = uint16_t(floor(angle/22.5+16.5))%16;
+        return dir[idx];
+    }
+
+    // -------------------------------------------------------------------
+
+    bool CheckDataSize(const EventImp &d, const char *name, size_t size, bool min=false)
+    {
+        if (d.GetSize()==0)
+            return false;
+
+        if ((!min && d.GetSize()==size) || (min && d.GetSize()>size))
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received service has " << d.GetSize() << " bytes, but expected ";
+        if (min)
+            msg << "more than ";
+        msg << size << ".";
+        Warn(msg);
+        return false;
+    }
+
+    // -------------------------------------------------------------------
+
+    template<class T>
+        void WriteBinaryVec(const Time &tm, const string &fname, const vector<T> &vec, double scale, double offset=0, const string &title="", const string &col="")
+    {
+        if (vec.empty())
+            return;
+
+        ostringstream out;
+        out << tm.JavaDate() << '\n';
+        out << offset << '\n';
+        out << offset+scale << '\n';
+        out << setprecision(3);
+        if (!title.empty())
+            out << title <<  '\x7f';
+        else
+        {
+            const Statistics stat(vec[0]);
+            out << stat.min << '\n';
+            out << stat.med << '\n';
+            out << stat.max << '\x7f';
+        }
+        if (!col.empty())
+            out << col;
+        for (auto it=vec.cbegin(); it!=vec.cend(); it++)
+        {
+            // The valid range is from 1 to 127
+            // \0 is used to seperate different curves
+            vector<uint8_t> val(it->size());
+            for (uint64_t i=0; i<it->size(); i++)
+            {
+                float range = nearbyint(126*(double(it->at(i))-offset)/scale); // [-2V; 2V]
+                if (range>126)
+                    range=126;
+                if (range<0)
+                    range=0;
+                val[i] = (uint8_t)range;
+            }
+
+            const char *ptr = reinterpret_cast<char*>(val.data());
+            out.write(ptr, val.size()*sizeof(uint8_t));
+            out << '\x7f';
+        }
+
+        ofstream(fPath+"/"+fname+".bin") << out.str();
+    }
+    /*
+    template<class T>
+        void WriteBinaryVec(const EventImp &d, const string &fname, const vector<T> &vec, double scale, double offset=0, const string &title="")
+    {
+        WriteBinaryVec(d.GetTime(), fname, vec, scale, offset, title);
+    }
+
+    template<class T>
+        void WriteBinary(const Time &tm, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(tm, fname, vector<T>(&t, &t+1), scale, offset);
+    }
+
+    template<class T>
+        void WriteBinary(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset);
+    }*/
+
+    template<class T>
+        void WriteHist(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset, "", "000");
+    }
+
+    template<class T>
+        void WriteCam(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset, "", "");
+    }
+
+
+    // -------------------------------------------------------------------
+
+    struct Statistics
+    {
+        float min;
+        float max;
+        float med;
+        float avg;
+        //float rms;
+
+        template<class T>
+            Statistics(const T &t, size_t offset_min=0, size_t offset_max=0)
+            : min(0), max(0), med(0), avg(0)
+        {
+            if (t.empty())
+                return;
+
+            T copy(t);
+            sort(copy.begin(), copy.end());
+
+            if (offset_min>t.size())
+                offset_min = 0;
+            if (offset_max>t.size())
+                offset_max = 0;
+
+            min = copy[offset_min];
+            max = copy[copy.size()-1-offset_max];
+            avg = accumulate (t.begin(), t.end(), 0.)/t.size();
+
+            const size_t p = copy.size()/2;
+            med = copy.size()%2 ? copy[p] : (copy[p-1]+copy[p])/2.;
+        }
+    };
+
+    void HandleControlMessageImp(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return;
+
+        fControlMessageHist.add(d.GetText(), d.GetTime());
+
+        ostringstream out;
+        out << setprecision(3);
+        out << Header(d) << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fControlMessageHist.get() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/scriptlog.data") << out.str();
+    }
+
+    int HandleDimControlMessage(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return GetCurrentState();
+
+        if (d.GetQoS()==MessageImp::kAlarm)
+        {
+            if (d.GetSize()<2)
+                for (auto it=fControlAlarmHist.begin(); it!=fControlAlarmHist.end(); it++)
+                    it->time = Time(Time::none);
+            else
+                fControlAlarmHist.add(d.GetText(), d.GetTime());
+        }
+
+        if (d.GetQoS()==MessageImp::kComment && d.GetSize()>1)
+            HandleControlMessageImp(d);
+
+        return GetCurrentState();
+    }
+
+    int HandleControlStateChange(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return StateMachineImp::kSM_KeepState;
+
+        if (fDimControl.scriptdepth>0)
+            return StateMachineImp::kSM_KeepState;
+
+        if (d.GetQoS()>=2)
+            return StateMachineImp::kSM_KeepState;
+
+#if BOOST_VERSION < 104600
+        const string file = boost::filesystem::path(fDimControl.file).filename();
+#else
+        const string file = boost::filesystem::path(fDimControl.file).filename().string();
+#endif
+
+        // [0] DimControl::kIdle
+        // [1] DimControl::kLoading
+        // [2] DimControl::kCompiling
+        // [3] DimControl::kRunning
+        if (d.GetQoS()==1)
+        {
+            fControlMessageHist.clear();
+            HandleControlMessageImp(Event(d, "========================================", 41));
+        }
+
+        HandleControlMessageImp(Event(d, ("----- "+fDimControl.shortmsg+" -----").data(), fDimControl.shortmsg.length()+13));
+        if (!file.empty() && d.GetQoS()<2)
+            HandleControlMessageImp(Event(d, file.data(), file.length()+1));
+
+        // Note that this will also "ding" just after program startup
+        // if the dimctrl is still in state -3
+        if (d.GetQoS()==0)
+        {
+            HandleControlMessageImp(Event(d, "========================================", 41));
+            if (fDimControl.last.second!=DimState::kOffline)
+                SetAudio("ding");
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    void AddMcpConfigurationHist(const EventImp &d, const string &msg)
+    {
+        fMcpConfigurationHist.add(msg, d.GetTime());
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fMcpConfigurationHist.rget() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/observations.data") << out.str();
+    }
+
+    int HandleFscControlStateChange(const EventImp &d)
+    {
+        const int32_t &last  = fDimFscControl.last.second;
+        const int32_t &state = fDimFscControl.state();
+
+        if (last==DimState::kOffline || state==DimState::kOffline)
+            return StateMachineImp::kSM_KeepState;
+
+        if (last<FSC::State::kConnected && state==FSC::State::kConnected)
+        {
+            AddMcpConfigurationHist(d, "<B>FSC swiched on</B>");
+            //SetAudio("startup");
+        }
+
+        if (last==FSC::State::kConnected && state<FSC::State::kConnected)
+        {
+            AddMcpConfigurationHist(d, "<B>FSC swiched off</B>");
+            //SetAudio("shutdown");
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    int HandleMcpConfiguration(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Mcp:Configuration", 16, true))
+        {
+            fMcpConfigurationState     = DimState::kOffline;
+            fMcpConfigurationMaxTime   = 0;
+            fMcpConfigurationMaxEvents = 0;
+            fMcpConfigurationName      = "";
+            fMcpConfigurationRunStart  = Time(Time::none);
+            return GetCurrentState();
+        }
+
+        // If a run ends...
+        if (fMcpConfigurationState==MCP::State::kTakingData && d.GetQoS()==MCP::State::kIdle)
+        {
+            // ...and no script is running just play a simple 'tick'
+            // ...and a script is running just play a simple 'tick'
+            if (/*fDimControl.state()<-2 &&*/ fDimControl.scriptdepth==0)
+                SetAudio("dong");
+            else
+                SetAudio("losticks");
+
+            fLastRunFinishedWithZeroEvents = fFadControlNumEvents==0;
+
+            ostringstream out;
+            out << "<#darkred>" << d.Ptr<char>(16);
+            if (!fDriveControlSourceName.empty())
+                out << " [" << fDriveControlSourceName << ']';
+            out << " (N=" << fFadControlNumEvents << ')';
+            out << "</#>";
+
+            AddMcpConfigurationHist(d, out.str());
+        }
+
+        if (d.GetQoS()==MCP::State::kTakingData)
+        {
+            fMcpConfigurationRunStart = Time();
+            SetAudio("losticks");
+
+            ostringstream out;
+            out << "<#darkgreen>" << fMcpConfigurationName;
+            if (!fDriveControlSourceName.empty())
+                out << " [" << fDriveControlSourceName << ']';
+            if (fFadControlStartRun>0)
+                out << " (Run " << fFadControlStartRun << ')';
+            out << "</#>";
+
+            AddMcpConfigurationHist(d, out.str());
+        }
+
+        fMcpConfigurationState     = d.GetQoS();
+        fMcpConfigurationMaxTime   = d.Get<uint64_t>();
+        fMcpConfigurationMaxEvents = d.Get<uint64_t>(8);
+        fMcpConfigurationName      = d.Ptr<char>(16);
+
+        return GetCurrentState();
+    }
+
+    void WriteWeather(const EventImp &d, const string &name, int i, float min, float max)
+    {
+        const Statistics stat(fMagicWeatherHist[i]);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fMagicWeatherHist[i].back() << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+
+        ofstream(fPath+"/"+name+".data") << out.str();
+
+        WriteHist(d, "hist-magicweather-"+name, fMagicWeatherHist[i], max-min, min);
+    }
+
+    int HandleMagicWeatherData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "MagicWeather:Data", 7*4+2))
+            return GetCurrentState();
+
+        // Store a history of the last 300 entries
+        for (int i=kWeatherBegin; i<kWeatherEnd; i++)
+        {
+            fMagicWeatherHist[i].push_back(d.Ptr<float>(2)[i]);
+            if (fMagicWeatherHist[i].size()>300)
+                fMagicWeatherHist[i].pop_front();
+        }
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        if (fSun.time.IsValid() && fMoon.time.IsValid())
+        {
+            out << fSun.color << '\t' << fSun.description << '\n';
+            out << setprecision(2);
+            out << (fSun.isday?HTML::kWhite:fMoon.color) << '\t' << fMoon.description << '\n';
+        }
+        else
+            out << "\n\n";
+        out << setprecision(3);
+        for (int i=0; i<6; i++)
+            out << HTML::kWhite << '\t' << fMagicWeatherHist[i].back() << '\n';
+        out << HTML::kWhite << '\t' << GetDir(fMagicWeatherHist[kDir].back()) << '\n';
+        out << HTML::kWhite << '\t';
+        if (!fTngWeatherDustHist.empty())
+            out << fTngWeatherDustHist.back() << '\t' << fTngWeatherDustTime.GetAsStr("%H:%M") << '\n';
+        else
+            out << "\t\n";
+
+        ofstream(fPath+"/weather.data") << out.str();
+
+        WriteWeather(d, "temp",  kTemp,   -5,   35);
+        WriteWeather(d, "dew",   kDew,    -5,   35);
+        WriteWeather(d, "hum",   kHum,     0,  100);
+        WriteWeather(d, "wind",  kWind,    0,  100);
+        WriteWeather(d, "gusts", kGusts,   0,  100);
+        WriteWeather(d, "press", kPress, 700, 1000);
+
+        return GetCurrentState();
+    }
+
+    int HandleTngWeatherDust(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "TngWeather:Dust", 4))
+            return GetCurrentState();
+
+        fTngWeatherDustTime = d.GetTime();
+
+        fTngWeatherDustHist.push_back(d.GetFloat());
+        if (fTngWeatherDustHist.size()>300)
+                fTngWeatherDustHist.pop_front();
+
+        const Statistics stat(fTngWeatherDustHist);
+
+        const double scale = stat.max>0 ? pow(10, ceil(log10(stat.max))) : 0;
+
+        WriteHist(d, "hist-tng-dust", fTngWeatherDustHist, scale);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        ofstream(fPath+"/tngdust.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveControlStateChange(const EventImp &d)
+    {
+        const int32_t &last  = fDimFscControl.last.second;
+        const int32_t &state = fDimFscControl.state();
+
+        if (last==DimState::kOffline || state==DimState::kOffline)
+            return StateMachineImp::kSM_KeepState;
+
+        if (last<Drive::State::kInitialized && state>=Drive::State::kInitialized)
+            AddMcpConfigurationHist(d, "Drive ready");
+
+        if (last>=Drive::State::kInitialized && state<Drive::State::kInitialized)
+            AddMcpConfigurationHist(d, "Drive not ready");
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    int HandleDrivePointing(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Pointing", 16))
+            return GetCurrentState();
+
+        fDriveControlPointingZd = d.Get<double>();
+
+        const double az = d.Get<double>(8);
+
+        fDriveControlPointingAz = GetDir(az);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << setprecision(0) << fixed;
+        out << HTML::kWhite << '\t' << az << '\t' << fDriveControlPointingAz << '\n';
+        out << HTML::kWhite << '\t' << fDriveControlPointingZd << '\n';
+
+        ofstream(fPath+"/pointing.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveTracking(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Tracking", 96))
+            return GetCurrentState();
+
+
+
+        const double Ra  = d.Get<double>(0*8);
+        const double Dec = d.Get<double>(1*8);
+        const double Zd  = d.Get<double>(6*8);
+        const double Az  = d.Get<double>(7*8);
+
+        const double dev = d.Get<double>(11*8);
+
+        fDriveControlTrackingDevHist.push_back(dev);
+        if (fDriveControlTrackingDevHist.size()>300)
+            fDriveControlTrackingDevHist.pop_front();
+
+        WriteHist(d, "hist-control-deviation", fDriveControlTrackingDevHist, 120);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fDriveControlSourceName << '\n';
+        out << setprecision(5);
+        out << HTML::kWhite << '\t' << Ra  << '\n';
+        out << HTML::kWhite << '\t' << Dec << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << Zd  << '\n';
+        out << HTML::kWhite << '\t' << Az  << '\n';
+        out << HTML::kWhite << '\t' << dev << '\n';
+
+        fDriveControlMoonDist = -1;
+
+        if (fMoon.visible)
+        {
+            const double angle = fMoon.Angle(Ra, Dec);
+            out << Moon::Color(angle) << '\t' << setprecision(3) << angle << '\n';
+
+            fDriveControlMoonDist = angle;
+        }
+        else
+            out << HTML::kWhite << "\t&mdash; \n";
+
+        ofstream(fPath+"/tracking.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveSource(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Source", 5*8+31))
+            return GetCurrentState();
+
+        const double *ptr = d.Ptr<double>();
+
+        const double ra     = ptr[0];  // Ra[h]
+        const double dec    = ptr[1];  // Dec[deg]
+        const double woff   = ptr[2];  // Wobble offset [deg]
+        const double wang   = ptr[3];  // Wobble angle  [deg]
+        const double period = ptr[4];  // Wobble angle  [deg]
+
+        fDriveControlSourceName = d.Ptr<char>(5*8);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fDriveControlSourceName << '\n';
+        out << setprecision(5);
+        out << HTML::kWhite << '\t' << ra  << '\n';
+        out << HTML::kWhite << '\t' << dec << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << woff << '\n';
+        out << HTML::kWhite << '\t' << wang << '\n';
+        out << HTML::kWhite << '\t' << period << '\n';
+
+        ofstream(fPath+"/source.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFeedbackCalibratedCurrents(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Feedback:CalibratedCurrents", (416+1+1+1+1+1+416+1+1)*sizeof(float)+sizeof(uint32_t)))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>();
+
+        double power_tot = 0;
+        double power_apd = 0;
+
+        if (fBiasControlVoltageVec.size()>0)
+        {
+            // Calibrate the data (subtract offset)
+            for (int i=0; i<320; i++)
+            {
+                // Exclude crazy pixels
+                if (i==66 || i==191 || i==193)
+                    continue;
+
+                // Group index (0 or 1) of the of the pixel (4 or 5 pixel patch)
+                const int N = fPixelMap.hv(i).count();
+
+                // Serial resistor of the individual G-APDs
+                double R5 = 3900/N;
+
+                // This is also valid for the patches with wrong resistors,
+                // because Iapd is a factor f larger but R a factor f smaller
+                double Iapd = ptr[i] * 1e-6;  // [A]
+                double Iout = Iapd*N;         // [A]
+
+                double UdrpCam =     1000 *Iout;  // Voltage seen by everything in Camera
+                double UdrpApd = (R5+2000)*Iout;  // Voltage seen by G-APD
+
+                const double pwrCam = Iout * (fBiasControlVoltageVec[i]-UdrpCam);
+                const double pwrApd = Iout * (fBiasControlVoltageVec[i]-UdrpApd);
+
+                // Total power participated in the camera at the G-APD
+                // and the serial resistors (total voltage minus voltage
+                // drop at resistors in bias crate)
+                power_tot += pwrCam;
+
+                // Power consumption per G-APD
+                power_apd += pwrApd;
+            }
+        }
+
+        // Divide by number of summed channels, convert to mW
+        power_apd /= (320-3)*1e-3; // [mW]
+
+        if (power_tot<1e-3)
+            power_tot = 0;
+        if (power_apd<1e-3)
+            power_apd = 0;
+
+        fBiasControlPowerTot = power_tot;
+
+        // --------------------------------------------------------
+
+        // Get the maximum of each patch
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            val[idx] = ptr[i];
+        }
+
+        // Write the 160 patch values to a file
+        WriteCam(d, "cam-biascontrol-current", val, 100);
+
+        // --------------------------------------------------------
+
+        // After being displayed, exclude the patches with
+        // the crazy pixels from the statsitics
+
+        vector<float> cpy(ptr, ptr+320);
+        cpy[66]  = 0;
+        cpy[191] = 0;
+        cpy[193] = 0;
+        const Statistics stat(cpy);
+
+        // Exclude the three crazy channels
+        fBiasControlCurrentMed = stat.med;
+        fBiasControlCurrentMax = stat.max;
+
+        // Store a history of the last 60 entries
+        fBiasControlCurrentHist.push_back(fBiasControlCurrentMed);
+        if (fBiasControlCurrentHist.size()>360)
+            fBiasControlCurrentHist.pop_front();
+
+        // write the history to a file
+        WriteHist(d, "hist-biascontrol-current", fBiasControlCurrentHist, 125);
+
+        // --------------------------------------------------------
+
+        string col1 = HTML::kGreen;
+        string col2 = HTML::kGreen;
+        string col3 = HTML::kGreen;
+        string col4 = HTML::kGreen;
+
+        if (stat.min>90)
+            col1 = HTML::kYellow;
+        if (stat.min>110)
+            col1 = HTML::kRed;
+
+        if (stat.med>90)
+            col2 = HTML::kYellow;
+        if (stat.med>110)
+            col2 = HTML::kRed;
+
+        if (stat.avg>90)
+            col3 = HTML::kYellow;
+        if (stat.avg>110)
+            col3 = HTML::kRed;
+
+        if (stat.max>90)
+            col4 = HTML::kYellow;
+        if (stat.max>110)
+            col4 = HTML::kRed;
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kGreen << '\t' << "yes" << '\n';
+        out << col1 << '\t' << stat.min << '\n';
+        out << col2 << '\t' << stat.med << '\n';
+        out << col3 << '\t' << stat.avg << '\n';
+        out << col4 << '\t' << stat.max << '\n';
+        out << HTML::kWhite << '\t' << power_tot << "W [" << power_apd << "mW]\n";
+        ofstream(fPath+"/current.data") << out.str();
+
+        // --------------------------------------------------------
+
+        const float Unom = ptr[2*416+6];
+        const float Utmp = ptr[2*416+7];
+
+        vector<float> Uov(ptr+416+6, ptr+416+6+320);
+
+        WriteCam(d, "cam-feedback-overvoltage", Uov, 0.2, -0.1);
+
+        const Statistics stat2(Uov);
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << Utmp << '\n';
+        out << HTML::kWhite << '\t' << Unom << '\n';
+        out << HTML::kWhite << '\t' << stat2.min << '\n';
+        out << HTML::kWhite << '\t' << stat2.med << '\n';
+        out << HTML::kWhite << '\t' << stat2.avg << '\n';
+        out << HTML::kWhite << '\t' << stat2.max << '\n';
+        ofstream(fPath+"/feedback.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasCurrent(const EventImp &d)
+    {
+        if (fDimFeedback.state()>=Feedback::State::kCalibrated)
+            return GetCurrentState();
+
+        if (!CheckDataSize(d, "BiasControl:Current", 832))
+            return GetCurrentState();
+
+        // Convert dac counts to uA
+        vector<float> v(320);
+        for (int i=0; i<320; i++)
+            v[i] = d.Ptr<uint16_t>()[i] * 5000./4096;
+
+        fBiasControlPowerTot = 0;
+
+        // Get the maximum of each patch
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const PixelMapEntry &hv = fPixelMap.hv(i);
+            if (!hv)
+                continue;
+
+            const int idx = (hv.hw()/9)*2+hv.group();
+            val[idx] = v[i];
+        }
+
+        // Write the 160 patch values to a file
+        WriteCam(d, "cam-biascontrol-current", val, 1000);
+
+        const Statistics stat(v, 0, 3);
+
+        // Exclude the three crazy channels
+        fBiasControlCurrentMed = stat.med;
+        fBiasControlCurrentMax = stat.max;
+
+        // Store a history of the last 60 entries
+        fBiasControlCurrentHist.push_back(fBiasControlCurrentMed);
+        if (fBiasControlCurrentHist.size()>360)
+            fBiasControlCurrentHist.pop_front();
+
+        // write the history to a file
+        WriteHist(d, "hist-biascontrol-current", fBiasControlCurrentHist, 1000);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite<< '\t' << "no" << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.med << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+        out << HTML::kWhite << '\t' << "---\n";
+        ofstream(fPath+"/current.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasVoltage(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "BiasControl:Voltage", 1664))
+        {
+            fBiasControlVoltageVec.clear();
+            return GetCurrentState();
+        }
+
+        fBiasControlVoltageVec.assign(d.Ptr<float>(), d.Ptr<float>()+320);
+
+        const Statistics stat(fBiasControlVoltageVec);
+
+        fBiasControlVoltageMed = stat.med;
+
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            val[idx] = fBiasControlVoltageVec[i];
+        }
+
+        if (fDimBiasControl.state()==BIAS::State::kVoltageOn || fDimBiasControl.state()==BIAS::State::kRamping)
+            WriteCam(d, "cam-biascontrol-voltage", val, 10, 65);
+        else
+            WriteCam(d, "cam-biascontrol-voltage", val, 75);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.med << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+        ofstream(fPath+"/voltage.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadEvents(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:Events", 4*4))
+        {
+            fFadControlNumEvents = -1;
+            return GetCurrentState();
+        }
+
+        fFadControlNumEvents = d.Get<uint32_t>();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadStartRun(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:StartRun", 16))
+        {
+            fFadControlStartRun = -1;
+            return GetCurrentState();
+        }
+
+        fFadControlStartRun = d.Get<int64_t>();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadDrsRuns(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:DrsRuns", 5*4))
+        {
+            fFadControlDrsStep = -1;
+            return GetCurrentState();
+        }
+
+        const uint32_t *ptr = d.Ptr<uint32_t>();
+        fFadControlDrsStep    = ptr[0];
+        fFadControlDrsRuns[0] = ptr[1];
+        fFadControlDrsRuns[1] = ptr[2];
+        fFadControlDrsRuns[2] = ptr[3];
+
+        return GetCurrentState();
+    }
+
+    int HandleFadConnections(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:Connections", 41))
+        {
+            //fStatusEventBuilderLabel->setText("Offline");
+            return GetCurrentState();
+        }
+
+        string rc(40, '-'); // orange/red [45]
+
+        const uint8_t *ptr = d.Ptr<uint8_t>();
+
+        int c[4] = { '.', '.', '.', '.' };
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            if (stat1==0 && stat2==0)
+                rc[i] = '.'; // gray [46]
+            else
+                if (stat1>=2 && stat2==8)
+                    rc[i] = stat1==2?'+':'*';  // green [43] : check [42]
+
+            if (rc[i]<c[i/10])
+                c[i/10] = rc[i];
+        }
+
+        string col[4];
+        for (int i=0; i<4; i++)
+            switch (c[i])
+            {
+            case '.': col[i]=HTML::kWhite;  break;
+            case '-': col[i]=HTML::kRed;    break;
+            case '+': col[i]=HTML::kYellow; break;
+            case '*': col[i]=HTML::kGreen;  break;
+            }
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << col[0] << '\t' << rc.substr( 0, 10) << '\n';
+        out << col[1] << '\t' << rc.substr(10, 10) << '\n';
+        out << col[2] << '\t' << rc.substr(20, 10) << '\n';
+        out << col[3] << '\t' << rc.substr(30, 10) << '\n';
+        ofstream(fPath+"/fad.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    /*
+    int HandleFtmControlStateChange()
+    {
+        const int32_t &last  = fDimFtmControl.last.second;
+        const int32_t &state = fDimFtmControl.state();
+
+        // If a new run has been started ensure that the counter
+        // is reset. The reset in HandleFtmTriggerRates might
+        // arrive only after the run was started.
+        if (last!=FTM::State::kTriggerOn && state==MCP::State::kTriggerOn)
+            fFtmControlTriggerRateTooLow = -1;
+
+        return StateMachineImp::kSM_KeepState;
+    }*/
+
+
+    int HandleFtmTriggerRates(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:TriggerRates", 24+160+640+8))
+        {
+            fFtmControlTriggerRateTooLow = 0;
+            return GetCurrentState();
+        }
+
+        const FTM::DimTriggerRates &dim = d.Ref<FTM::DimTriggerRates>();
+
+        // If the trigger rate is too low...
+        // ... and the run was not just started (can lead to very small elapsed times)
+        // ... and the trigger is switched on
+        // ... and there was no state change (then the trigger was started or stopped)
+        fFtmControlTriggerRateTooLow =
+            dim.fTriggerRate<1 && dim.fElapsedTime>0.45 &&
+            (fFtmControlState&FTM::kFtmStates)==FTM::kFtmRunning &&
+            (fFtmControlState&FTM::kFtmStates)==(d.GetQoS()&FTM::kFtmStates);
+
+        fFtmControlState = d.GetQoS();
+
+        const float *brates = dim.fBoardRate; // Board rate
+        const float *prates = dim.fPatchRate; // Patch rate
+
+        // Store a history of the last 60 entries
+        fFtmControlTriggerRateHist.push_back(dim.fTriggerRate);
+        if (fFtmControlTriggerRateHist.size()>300)
+            fFtmControlTriggerRateHist.pop_front();
+
+        // FIXME: Add statistics for all kind of rates
+
+        WriteHist(d, "hist-ftmcontrol-triggerrate",
+                  fFtmControlTriggerRateHist, 100);
+        WriteCam(d, "cam-ftmcontrol-boardrates",
+                 vector<float>(brates, brates+40), 10);
+        WriteCam(d, "cam-ftmcontrol-patchrates",
+                 vector<float>(prates, prates+160), 10);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << dim.fTriggerRate << '\n';
+
+        ofstream(fPath+"/trigger.data") << out.str();
+
+        const Statistics bstat(vector<float>(brates, brates+ 40));
+        const Statistics pstat(vector<float>(prates, prates+160));
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << bstat.min << '\n';
+        out << HTML::kWhite << '\t' << bstat.med << '\n';
+        out << HTML::kWhite << '\t' << bstat.avg << '\n';
+        out << HTML::kWhite << '\t' << bstat.max << '\n';
+        ofstream(fPath+"/boardrates.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << pstat.min << '\n';
+        out << HTML::kWhite << '\t' << pstat.med << '\n';
+        out << HTML::kWhite << '\t' << pstat.avg << '\n';
+        out << HTML::kWhite << '\t' << pstat.max << '\n';
+        ofstream(fPath+"/patchrates.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFtmStaticData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:StaticData", sizeof(FTM::DimStaticData)))
+            return GetCurrentState();
+
+        // If the FTM is in state Configuring, the clock conditioner
+        // is always reported to be unlocked
+        fFtmControlState = d.GetQoS();
+
+        const FTM::DimStaticData &dat = d.Ref<FTM::DimStaticData>();
+
+        vector<uint16_t> vecp(dat.fThreshold, dat.fThreshold+160);
+        vector<uint16_t> vecb(dat.fMultiplicity, dat.fMultiplicity+40);
+
+        WriteCam(d, "cam-ftmcontrol-thresholds-patch", vecp, 1000);
+        WriteCam(d, "cam-ftmcontrol-thresholds-board", vecb,  100);
+
+        const Statistics statp(vecp);
+        const Statistics statb(vecb);
+
+        fFtmPatchThresholdMed = statp.med;
+        fFtmBoardThresholdMed = statb.med;
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statb.min << '\n';
+        out << HTML::kWhite << '\t' << statb.med << '\n';
+        out << HTML::kWhite << '\t' << statb.max << '\n';
+        ofstream(fPath+"/thresholds-board.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statp.min << '\n';
+        out << HTML::kWhite << '\t' << statp.med << '\n';
+        out << HTML::kWhite << '\t' << statp.max << '\n';
+        ofstream(fPath+"/thresholds-patch.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statb.med << '\n';
+        out << HTML::kWhite << '\t' << statp.med << '\n';
+        ofstream(fPath+"/thresholds.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << dat.fTriggerInterval << '\n';
+        out << HTML::kWhite << '\t';
+        if (dat.HasPedestal())
+            out << dat.fTriggerSeqPed;
+        else
+            out << "&ndash;";
+        out << ':';
+        if (dat.HasLPext())
+            out << dat.fTriggerSeqLPext;
+        else
+            out << "&ndash;";
+        out << ':';
+        if (dat.HasLPint())
+            out << dat.fTriggerSeqLPint;
+        else
+            out << "&ndash;";
+        out << '\n';
+
+        out << HTML::kWhite << '\t' << (dat.HasTrigger()?"on":"off") << " / " << (dat.HasExt1()?"on":"off") << " / " << (dat.HasExt2()?"on":"off") << '\n';
+        out << HTML::kWhite << '\t' << (dat.HasVeto()?"on":"off") << " / " << (dat.HasClockConditioner()?"time cal":"marker") << '\n';
+        out << HTML::kWhite << '\t' << dat.fMultiplicityPhysics << " / " << dat.fMultiplicityCalib << '\n';
+        out << HTML::kWhite << '\t' << dat.fWindowPhysics << '\t' << dat.fWindowCalib << '\n';
+        out << HTML::kWhite << '\t' << dat.fDelayTrigger << '\t' << dat.fDelayTimeMarker << '\n';
+        out << HTML::kWhite << '\t' << dat.fDeadTime << '\n';
+
+        int64_t vp = dat.fPrescaling[0];
+        for (int i=1; i<40; i++)
+            if (vp!=dat.fPrescaling[i])
+                vp = -1;
+
+        if (vp<0)
+            out << HTML::kYellow << "\tdifferent\n";
+        else
+            out << HTML::kWhite  << '\t' << 0.5*vp << "\n";
+
+        ofstream(fPath+"/ftm.data") << out.str();
+
+        // Active FTUs: IsActive(i)
+        // Enabled Pix: IsEnabled(i)
+
+        return GetCurrentState();
+    }
+
+    int HandleFtmFtuList(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:FtuList", sizeof(FTM::DimFtuList)))
+            return GetCurrentState();
+
+        const FTM::DimFtuList &sdata = d.Ref<FTM::DimFtuList>();
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        int cnt = 0;
+        for (int i=0; i<4; i++)
+        {
+            out << HTML::kWhite << '\t';
+            for (int j=0; j<10; j++)
+                if (sdata.IsActive(i*10+j))
+                {
+                    if (sdata.fPing[i*10+j]==1)
+                    {
+                        out << '*';
+                        cnt++;
+                    }
+                    else
+                        out << sdata.fPing[i*10+j];
+                }
+                else
+                    out << '-';
+            out << '\n';
+        }
+
+        fFtmControlFtuOk = cnt==40;
+
+        ofstream(fPath+"/ftu.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadEventData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:EventData", 23048))
+            return GetCurrentState();
+
+        //const uint32_t run = d.GetUint();
+        //const uint32_t evt = d.GetUint(4);
+
+        const float *dat = d.Ptr<float>(8+1440*sizeof(float)*2);
+
+        /*
+        vector<float> max(320, 0);
+        for (int i=0; i<1440; i++)
+        {
+            if (i%9==8)
+                continue;
+
+            const int idx = (fPixelMap.hw(i).hw()/9)*2+fPixelMap.hw(i).group();
+            const double v = dat[i]/1000;
+            //if (v>max[idx])
+            //    max[idx]=v;
+
+            max[idx] += v/4;
+            } */
+
+        vector<float> val(1440);
+        for (int i=0; i<1440; i++)
+            val[i] = dat[i%9==8 ? i-2 : i]/1000;
+
+        vector<float> sorted(val);
+        nth_element(sorted.begin(), sorted.begin()+3, sorted.end(),
+                    std::greater<float>());
+
+        const uint32_t trig = d.GetQoS() & FAD::EventHeader::kLPext;
+
+        const float min = fFadControlDrsRuns[0]==0 ? -1 : 0;
+
+        float scale = 2;
+        if (trig&FAD::EventHeader::kLPext)
+            scale = 1;
+        if (trig&FAD::EventHeader::kPedestal)
+            scale = 0.25;
+        if (trig==0)
+            scale = max(0.25f, sorted[3]);
+
+        // assume it is drs-gain
+        //if ((trig&FAD::EventHeader::kPedestal) && fFadControlDrsRuns[0]>0 && fFadControlDrsRuns[1]==0)
+        //    min = 0.75;
+
+        WriteCam(d, "cam-fadcontrol-eventdata", val, scale, min);
+
+        return GetCurrentState();
+    }
+
+    int HandleStats(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Stats", 4*8))
+        {
+            fFreeSpace = UINT64_MAX;
+            return GetCurrentState();
+        }
+
+        const DimWriteStatistics::Stats &s = d.Ref<DimWriteStatistics::Stats>();
+        fFreeSpace = s.freeSpace;
+
+        return GetCurrentState();
+    }
+
+    int HandleFscTemperature(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:Temperature", 240))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+
+        double avg =   0;
+        double rms =   0;
+        double min =  99;
+        double max = -99;
+
+        int num = 0;
+        for (const float *t=ptr; t<ptr+31; t++)
+        {
+            if (*t==0)
+                continue;
+
+            if (*t>max)
+                max = *t;
+
+            if (*t<min)
+                min = *t;
+
+            avg += *t;
+            rms += *t * *t;
+
+            num++;
+        }
+
+        avg /= num;
+        rms /= num;
+        rms += avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        // Clean broken reports
+        static double pre_rms1 = 1.5;
+        static double pre_rms2 = 0;
+
+        const double cut = pre_rms1 + 0.1;
+
+        const bool reject = rms>cut && pre_rms2<cut;
+
+        pre_rms2 = pre_rms1;
+        pre_rms1 = rms;
+
+        if (reject)
+            return GetCurrentState();
+
+
+        if (!fMagicWeatherHist[kTemp].empty())
+        {
+            fFscControlTemperatureHist.push_back(avg-fMagicWeatherHist[kTemp].back());
+            if (fFscControlTemperatureHist.size()>300)
+                fFscControlTemperatureHist.pop_front();
+        }
+
+        const Statistics stat(fFscControlTemperatureHist);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << fFscControlHumidityAvg << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+
+        ofstream(fPath+"/fsc.data") << out.str();
+
+        WriteHist(d, "hist-fsccontrol-temperature",
+                  fFscControlTemperatureHist, 10);
+
+        out.str("");
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << max << '\n';
+        out << HTML::kWhite << '\t' << avg << '\n';
+        out << HTML::kWhite << '\t' << min << '\n';
+
+        ofstream(fPath+"/camtemp.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFscBiasTemp(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:BiasTemp", 323*4))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+        const float avg = d.Get<float>(321*4);
+        //const float rms = d.Get<float>(322*4);
+
+        vector<double> tout(320);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            tout[idx] = ptr[i];
+        }
+
+        WriteCam(d, "cam-fsccontrol-temperature", tout, 3, avg-1.75);
+
+        return GetCurrentState();
+    }
+
+    int HandleFscHumidity(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:Humidity", 5*4))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+
+        double avg =0;
+        int num = 0;
+
+        for (const float *t=ptr; t<ptr+4; t++)
+            if (*t>0 && *t<=100 && t!=ptr+2 /*excl broken sensor*/)
+            {
+                avg += *t;
+                num++;
+            }
+
+        fFscControlHumidityAvg = num>0 ? avg/num : 0;
+
+        return GetCurrentState();
+    }
+
+    int HandlePfMiniData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "PfMini:Data", sizeof(PFmini::Data)))
+            return GetCurrentState();
+
+        const PFmini::Data &data = d.Ref<PFmini::Data>();
+
+        ostringstream out;
+
+        out << fixed << setprecision(1);
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kGreen << '\t' << data.temp << '\n';
+        out << HTML::kGreen << '\t' << data.hum  << '\n';
+
+        ofstream(fPath+"/pfmini.data") << out.str();
+
+        fPfMiniTemperatureHist.push_back(data.temp);
+        if (fPfMiniTemperatureHist.size()>60*4) // 1h
+            fPfMiniTemperatureHist.pop_front();
+
+        fPfMiniHumidityHist.push_back(data.hum);
+        if (fPfMiniHumidityHist.size()>60*4) // 1h
+            fPfMiniHumidityHist.pop_front();
+
+        WriteHist(d, "hist-pfmini-temp",
+                  fPfMiniTemperatureHist, 45, 0);
+
+        WriteHist(d, "hist-pfmini-hum",
+                  fPfMiniHumidityHist, 100, 0);
+
+        return GetCurrentState();
+    }
+
+    int HandleGpsNema(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "GpsControl:Nema", sizeof(GPS::NEMA)))
+            return GetCurrentState();
+
+        const GPS::NEMA &nema = d.Ref<GPS::NEMA>();
+
+        ostringstream out;
+
+        out << fixed;
+        out << d.GetJavaDate() << '\n';
+
+        switch (nema.qos)
+        {
+        case 1:  out << HTML::kGreen << "\tGPS fix [1]\n"; break;
+        case 2:  out << HTML::kGreen << "\tDifferential fix [2]\n"; break;
+        default: out << HTML::kRed << "\tinvalid [" << nema.qos << "]\n"; break;
+        }
+
+        out << HTML::kWhite << '\t' << nema.count << '\n';
+        out << HTML::kWhite << '\t' << Time(floor(Time().Mjd())+nema.time).GetAsStr("%H:%M:%S") << '\n';
+        out << HTML::kWhite << '\t' << setprecision(4) << nema.lat    << '\n';
+        out << HTML::kWhite << '\t' << setprecision(4) << nema.lng    << '\n';
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.height << "\n";
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.hdop   << "\n";
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.geosep << "\n";
+
+        ofstream(fPath+"/gps.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleSqmData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "SqmControl:Data", sizeof(SQM::Data)))
+            return GetCurrentState();
+
+        const SQM::Data &data = d.Ref<SQM::Data>();
+
+        ostringstream out;
+
+        out << fixed;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << setprecision(2) << data.mag    << '\n';
+        out << HTML::kWhite << '\t' <<                    data.freq   << '\n';
+        out << HTML::kWhite << '\t' <<                    data.counts << '\n';
+        out << HTML::kWhite << '\t' << setprecision(3) << data.period << '\n';
+        out << HTML::kWhite << '\t' << setprecision(1) << data.temp   << "\n";
+
+        ofstream(fPath+"/sqm.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    string GetTempColor(float t)
+    {
+        if (t>25 && t<30)
+            return HTML::kGreen;
+
+        if (t<20 || t>35)
+            return HTML::kRed;
+
+        return HTML::kYellow;
+    }
+
+    int HandleTemperatureData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Temperature:Data", 3*sizeof(float)))
+            return GetCurrentState();
+
+        const float *temp = d.Ptr<float>();
+
+        ostringstream out;
+
+        out << fixed << setprecision(1);
+        out << d.GetJavaDate() << '\n';
+
+        out << GetTempColor(temp[1]) << '\t' << temp[1] << '\n';
+        out << GetTempColor(temp[0]) << '\t' << temp[0] << '\n';
+        out << GetTempColor(temp[2]) << '\t' << temp[2] << '\n';
+
+        ofstream(fPath+"/temperature.data") << out.str();
+
+        fTemperatureControlHist.push_back(temp[0]);
+        if (fTemperatureControlHist.size()>60) // 1h
+            fTemperatureControlHist.pop_front();
+
+        WriteHist(d, "hist-temperaturecontrol",
+                  fTemperatureControlHist, 45, 0);
+
+        return GetCurrentState();
+    }
+
+    int HandleAgilentData(const EventImp &d, const string &ext)
+    {
+        if (!CheckDataSize(d, ("Agilent"+ext+":Data").c_str(), 4*sizeof(float)))
+            return GetCurrentState();
+
+        const float *data = d.Ptr<float>();
+
+        ostringstream out;
+
+        out << fixed << setprecision(1);
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << data[0] << '\n';
+        out << HTML::kWhite << '\t' << data[1] << '\n';
+        out << HTML::kWhite << '\t' << data[2] << '\n';
+        out << HTML::kWhite << '\t' << data[3] << '\n';
+
+        ofstream(fPath+"/agilent"+ext+".data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleRateScanData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "RateScan:Data", 824))
+            return GetCurrentState();
+
+        const uint64_t id   = d.Get<uint64_t>();
+        const float   *rate = d.Ptr<float>(20);
+
+        if (fRateScanDataId!=id)
+        {
+            for (int i=0; i<41; i++)
+                fRateScanDataHist[i].clear();
+            fRateScanDataId = id;
+        }
+        fRateScanDataHist[0].push_back(log10(rate[0]));
+
+        double max = 0;
+        for (int i=1; i<41; i++)
+        {
+            fRateScanDataHist[i].push_back(log10(rate[i]));
+            if (rate[i]>max)
+                max = rate[i];
+        }
+
+        // Cycle by time!
+        fRateScanBoard ++;
+        fRateScanBoard %= 40;
+
+        WriteHist(d, "hist-ratescan",      fRateScanDataHist[0],                10, -2);
+        WriteCam(d,  "cam-ratescan-board", fRateScanDataHist[fRateScanBoard+1], 10, -4);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << fFtmBoardThresholdMed << '\n';
+        out << HTML::kWhite << '\t' << fFtmPatchThresholdMed << '\n';
+        out << HTML::kWhite << '\t' << floor(pow(10, fRateScanDataHist[0].back())+.5) << '\n';
+        out << HTML::kWhite << '\t' << floor(max+.5) << '\n';
+
+        ofstream(fPath+"/ratescan.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << int(fRateScanBoard) << '\n';
+        out << HTML::kWhite << '\t' << pow(10, fRateScanDataHist[fRateScanBoard+1].back()) << '\n';
+
+        ofstream(fPath+"/ratescan_board.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleRateControlThreshold(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "RateControl:Threshold", 18))
+            return GetCurrentState();
+
+        const uint16_t th = d.Get<uint16_t>();
+
+        fRateControlThreshold.push_back(th);
+        if (fRateControlThreshold.size()>300)
+            fRateControlThreshold.pop_front();
+
+        WriteHist(d, "hist-ratecontrol-threshold", fRateControlThreshold, 1000);
+
+        return GetCurrentState();
+    }
+
+    int HandleChatMsg(const EventImp &d)
+    {
+        if (d.GetSize()==0 || d.GetQoS()!=MessageImp::kComment)
+            return GetCurrentState();
+
+        if (Time()<d.GetTime()+boost::posix_time::minutes(1))
+            SetAudio("message");
+
+        fChatHist.add(d.GetText(), d.GetTime());
+
+        ostringstream out;
+        out << setprecision(3);
+        out << Header(d) << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fChatHist.rget() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/chat.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    // -------------------------------------------------------------------
+
+    int HandleDoTest(const EventImp &d)
+    {
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        switch (d.GetQoS())
+        {
+        case -3: out << HTML::kWhite << "\tNot running\n"; break;
+        case -2: out << HTML::kBlue  << "\tLoading\n";     break;
+        case -1: out << HTML::kBlue  << "\tStarted\n";     break;
+        default: out << HTML::kGreen << "\tRunning [" << d.GetQoS() << "]\n"; break;
+        }
+
+        ofstream(fPath+"/dotest.data") << out.str();
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    // -------------------------------------------------------------------
+
+    /*
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }*/
+
+    int Print() const
+    {
+        Out() << fDimDNS            << endl;
+        Out() << fDimMcp            << endl;
+        Out() << fDimControl        << endl;
+        Out() << fDimDataLogger     << endl;
+        Out() << fDimDriveControl   << endl;
+        Out() << fDimTimeCheck      << endl;
+        Out() << fDimFadControl     << endl;
+        Out() << fDimFtmControl     << endl;
+        Out() << fDimBiasControl    << endl;
+        Out() << fDimFeedback       << endl;
+        Out() << fDimRateControl    << endl;
+        Out() << fDimFscControl     << endl;
+        Out() << fDimAgilentControl24 << endl;
+        Out() << fDimAgilentControl50 << endl;
+        Out() << fDimAgilentControl80 << endl;
+        Out() << fDimPwrControl     << endl;
+        Out() << fDimLidControl     << endl;
+        Out() << fDimMagicWeather   << endl;
+        Out() << fDimTngWeather     << endl;
+        Out() << fDimMagicLidar     << endl;
+        Out() << fDimTemperature    << endl;
+        Out() << fDimRateScan       << endl;
+        Out() << fDimChat           << endl;
+        Out() << fDimSkypeClient    << endl;
+
+        return GetCurrentState();
+    }
+
+    string GetStateHtml(const DimState &state, int green) const
+    {
+        if (!state.online())
+            return HTML::kWhite+"\t&mdash;\n";
+
+        if (&state==&fDimControl)
+            return HTML::kGreen +'\t'+(state.state()==0?"Idle":fDimControl.shortmsg)+'\n';
+
+        const State rc = state.description();
+
+        // Sate not found in list, server online (-3: offline; -2: not found)
+        if (rc.index==-2)
+        {
+            ostringstream out;
+            out << HTML::kWhite << '\t' << state.state() << '\n';
+            return out.str();
+        }
+
+        //ostringstream msg;
+        //msg << HTML::kWhite << '\t' << rc.name << " [" << rc.index << "]\n";
+        //return msg.str();
+
+        if (rc.index<0)
+            return HTML::kWhite + "\t&mdash;\n";
+
+        string col = HTML::kGreen;
+        if (rc.index<green)
+            col = HTML::kYellow;
+        if (rc.index>0xff)
+            col = HTML::kRed;
+
+        return col + '\t' + rc.name + '\n';
+    }
+
+    bool SetError(bool b, const string &err)
+    {
+        if (!b)
+        {
+            fErrorList.erase(err);
+            return 0;
+        }
+
+        const bool isnew = fErrorList.insert(err).second;
+        if (isnew)
+            fErrorHist.add(err);
+
+        return isnew;
+    }
+
+#ifdef HAVE_NOVA
+
+    //vector<pair<Nova::EquPosn, double>> fMoonCoords;
+
+    vector<Nova::SolarObjects> fCoordinates;
+
+    void CalcCoordinates(double jd)
+    {
+        jd = floor(jd);
+
+        fCoordinates.clear();
+        for (double h=0; h<1; h+=1./(24*12))
+            fCoordinates.emplace_back(jd+h);
+    }
+
+    pair<vector<float>, pair<Time, float>> GetVisibility(Nova::EquPosn *src=0)
+    {
+        const double sunset  = fSun.fSunSet12.JD()-1;
+        const double sunrise = fSun.fSunRise12.JD();
+
+        Nova::EquPosn  moon;
+        Nova::EquPosn *pos = src ? src : &moon;
+
+        double max   = 0;
+        double maxjd = 0;
+
+        int cnt = 0;
+
+        vector<float> alt;
+        for (auto it=fCoordinates.begin(); it!=fCoordinates.end(); it++)
+        {
+            if (src==0)
+                moon = it->fMoonEqu;
+
+            const Nova::HrzPosn hrz = Nova::GetHrzFromEqu(*pos, it->fJD);
+
+            if (it->fJD>sunset && it->fJD<sunrise)
+                alt.push_back(hrz.alt);
+
+            if (hrz.alt>max)
+            {
+                max   = hrz.alt;
+                maxjd = it->fJD;
+            }
+
+            if (it->fJD>sunset && it->fJD<sunrise && hrz.alt>15)
+                cnt++;
+        }
+
+        if (max<=15 || cnt==0)
+            return make_pair(vector<float>(), make_pair(Time(), 0));
+
+        return make_pair(alt, make_pair(maxjd, maxjd>sunset&&maxjd<sunrise?max:0));
+    }
+
+    pair<vector<float>, pair<Time, float>> GetLightCondition(const Nova::EquPosn &src_pos)
+    {
+        const double sunset  = fSun.fSunSet12.JD()-1;
+        const double sunrise = fSun.fSunRise12.JD();
+
+        double max   = -1;
+        double maxjd =  0;
+
+        int cnt = 0;
+
+        vector<float> vec;
+        for (auto it=fCoordinates.begin(); it!=fCoordinates.end(); it++)
+        {
+            double cur = -1;
+
+            if (it->fJD>sunset && it->fJD<sunrise)
+            {
+                cur = FACT::PredictI(*it, src_pos);
+                vec.push_back(cur);
+            }
+
+            if (cur>max)
+            {
+                max   = cur;
+                maxjd = it->fJD;
+            }
+
+            if (it->fJD>sunset && it->fJD<sunrise && cur>0)
+                cnt++;
+        }
+
+        if (max<=0 || cnt==0)
+            return make_pair(vector<float>(), make_pair(Time(), 0));
+
+        return make_pair(vec, make_pair(maxjd, maxjd>sunset&&maxjd<sunrise?max:-1));
+    }
+#endif
+
+    void UpdateAstronomy()
+    {
+        Time now;
+
+        CalcCoordinates(now.JD());
+
+        fSun  = Sun (now);
+        fMoon = Moon(now);
+
+        vector<string> color(8, HTML::kWhite);
+        color[fSun.state] = HTML::kBlue;
+
+        ostringstream out;
+        out << setprecision(3);
+        out << now.JavaDate() << '\n';
+        out << color[4] << '\t' << fSun.fSunRise18.GetAsStr("%H:%M") << '\n';
+        out << color[5] << '\t' << fSun.fSunRise12.GetAsStr("%H:%M") << '\n';
+        out << color[6] << '\t' << fSun.fSunRise06.GetAsStr("%H:%M") << '\n';
+        out << color[7] << '\t' << fSun.fSunRise00.GetAsStr("%H:%M") << '\n';
+
+        out << color[0] << '\t' << fSun.fSunSet00.GetAsStr("%H:%M") << '\n';
+        out << color[1] << '\t' << fSun.fSunSet06.GetAsStr("%H:%M") << '\n';
+        out << color[2] << '\t' << fSun.fSunSet12.GetAsStr("%H:%M") << '\n';
+        out << color[3] << '\t' << fSun.fSunSet18.GetAsStr("%H:%M") << '\n';
+
+        ofstream(fPath+"/sun.data") << out.str();
+
+        color.assign(3, HTML::kWhite);
+        color[fMoon.state%3] = HTML::kBlue;
+
+        out.str("");
+        out << now.JavaDate() << '\n';
+
+        out << color[0] << '\t' << fMoon.fRise.GetAsStr("%H:%M") << '\n';
+        out << color[1] << '\t' << fMoon.fTransit.GetAsStr("%H:%M") << '\n';
+        out << color[2] << '\t' << fMoon.fSet.GetAsStr("%H:%M") << '\n';
+
+        out << (fSun.isday?HTML::kWhite:fMoon.color) << '\t' << fMoon.description << '\n';
+
+        if (!fMoon.visible)
+            out << HTML::kWhite << "\t&mdash;\t\n";
+        else
+        {
+            string col = HTML::kWhite;
+            if (!fSun.isday)
+            {
+                col = HTML::kGreen;
+                if (fMoon.zd>25)
+                    col = HTML::kYellow;
+                if (fMoon.zd>45 && fMoon.zd<80)
+                    col = HTML::kRed;
+                if (fMoon.zd>=80)
+                    col = HTML::kRed;
+            }
+            out << col << '\t' << fMoon.zd << '\t' << GetDir(fMoon.az) << '\n';
+        }
+
+        ostringstream out2, out3, out4;
+        out2 << setprecision(3);
+        out2 << now.JavaDate() << '\n';
+        out3 << now.JavaDate() << '\n';
+        out4 << now.JavaDate() << '\n';
+
+        struct Entry
+        {
+            string name;
+            float value;
+            int color;
+            Entry(const string &n, float v, int c) : name(n), value(v), color(c%8) { }
+
+            const string &Col() const
+            {
+                // If this list is updatd the number count in the constructor needs
+                // to be updated, too
+                static const string hcol[] = { "888", "8cf", "c8f", "bbb", "8fc", "cf8", "f8c", "fc8" };
+                return hcol[color];
+            }
+
+            vector<float> GetColor(double scale, double offset=0) const
+            {
+                vector<float> rc(3);
+                rc[0] = double(Col()[0])*scale/126+offset;
+                rc[1] = double(Col()[1])*scale/126+offset;
+                rc[2] = double(Col()[2])*scale/126+offset;
+                return rc;
+            }
+        };
+
+        multimap<Time, Entry> culmination;
+        multimap<Time, Entry> lightcond;
+        vector<vector<float>> alt;
+        vector<vector<float>> cur;
+
+#ifdef HAVE_NOVA
+        int ccol = 0;
+        int lcol = 0;
+
+        /*const*/ pair<vector<float>, pair<Time, float>> vism = GetVisibility();
+        if (!vism.first.empty())
+        {
+            const Entry entry("Moon", vism.second.second, ccol);
+            culmination.insert(make_pair(vism.second.first, entry));
+            const vector<float> col = entry.GetColor(75, 15);
+            vism.first.insert(vism.first.begin(), col.begin(), col.end());
+            alt.push_back(vism.first);
+
+            ccol++;
+        }
+#endif
+
+#ifdef HAVE_SQL
+        try
+        {
+            const mysqlpp::StoreQueryResult res =
+                Database(fDatabase).query("SELECT fSourceName, fRightAscension, fDeclination FROM Source WHERE fSourceTypeKEY=1").store();
+
+            out  << HTML::kWhite << '\t';
+            out2 << HTML::kWhite << '\t';
+            out3 << HTML::kWhite << '\t';
+            out4 << HTML::kWhite << '\t';
+
+            for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+            {
+                const string name = (*v)[0].c_str();
+                const double ra   = (*v)[1];
+                const double dec  = (*v)[2];
+#ifdef HAVE_NOVA
+                Nova::EquPosn pos;
+                pos.ra  = ra*15;
+                pos.dec = dec;
+
+                const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(pos, now.JD());
+
+                /*const*/ pair<vector<float>, pair<Time, float>> vis = GetVisibility(&pos);
+                if (!vis.first.empty())
+                {
+                    const Entry entry(name, vis.second.second, ccol);
+                    culmination.insert(make_pair(vis.second.first, entry));
+                    const vector<float> col = entry.GetColor(75, 15);
+                    vis.first.insert(vis.first.begin(), col.begin(), col.end());
+                    alt.push_back(vis.first);
+
+                    ccol++;
+
+                    /*const*/ pair<vector<float>, pair<Time, float>> lc = GetLightCondition(pos);
+                    if (!lc.first.empty())
+                    {
+                        const Entry entry2(name, lc.second.second, lcol);
+                        lightcond.insert(make_pair(lc.second.first, entry2));
+                        const vector<float> col2 = entry2.GetColor(100);
+                        lc.first.insert(lc.first.begin(), col2.begin(), col2.end());
+                        cur.push_back(lc.first);
+
+                        lcol++;
+                    }
+                }
+
+                string col = HTML::kWhite;
+                if (hrz.zd<85)
+                    col = HTML::kRed;
+                if (hrz.zd<65)
+                    col = HTML::kYellow;
+                if (hrz.zd<30)
+                    col = HTML::kGreen;
+
+                out2 << "<tr bgcolor='" << col << "'>";
+                out2 << "<td>" << name << "</td>";
+                if (hrz.zd<85)
+                {
+                    out2 << "<td>" << hrz.zd << "&deg;</td>";
+                    out2 << "<td>" << GetDir(hrz.az) << "</td>";
+                }
+                else
+                    out2 << "<td/><td/>";
+                out2 << "</tr>";
+#endif
+                const int32_t angle = fMoon.Angle(ra, dec);
+
+                out << "<tr bgcolor='" << Moon::Color(angle) << "'>";
+                out << "<td>" << name << "</td>";
+                out << "<td>" << round(angle) << "&deg;</td>";
+                out << "</tr>";
+            }
+
+            for (auto it=culmination.begin(); it!=culmination.end(); it++)
+            {
+                const Entry &e = it->second;
+                if (it!=culmination.begin())
+                    out3 << ", ";
+                out3 << "<B#" << e.Col() << ">" << e.name << "</B>";
+                if (e.value>0)
+                    out3 << " [" << nearbyint(90-e.value) << "&deg;]";
+            }
+
+            out4 << setprecision(3);
+
+            for (auto it=lightcond.begin(); it!=lightcond.end(); it++)
+            {
+                const Entry &e = it->second;
+                if (it!=lightcond.begin())
+                    out4 << ", ";
+                out4 << "<B#" << e.Col() << ">" << e.name << "</B>";
+                if (e.value>0)
+                    out4 << " [" << nearbyint(e.value) << "]";
+            }
+
+            const Time st = fSun.fSunSet12;;
+            const Time rs = fSun.fSunRise12;
+
+            ostringstream title;
+            title << st.GetAsStr("%H:%M");
+            title << " / ";
+            title << ((rs>st?rs-st:st-rs)/20).minutes();
+            title << "' / ";
+            title << rs.GetAsStr("%H:%M");
+
+            out  << '\n';
+            out2 << '\n';
+            out3 << '\n';
+            out4 << '\n';
+            out  << HTML::kWhite << '\t' << Time()-now << '\n';
+            out2 << HTML::kWhite << '\t' << Time()-now << '\n';
+
+            WriteBinaryVec(now, "hist-visibility",         alt,  75, 15, "Alt "+title.str());
+            WriteBinaryVec(now, "hist-current-prediction", cur, 100,  0, "I "  +title.str());
+        }
+        catch (const exception &e)
+        {
+            out  << '\n';
+            out2 << '\n';
+            out  << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out2 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out3 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out4 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+        }
+#endif
+
+        ofstream(fPath+"/moon.data") << out.str();
+        ofstream(fPath+"/source-list.data") << out2.str();
+        ofstream(fPath+"/visibility.data") << out3.str();
+        ofstream(fPath+"/current-prediction.data") << out4.str();
+    }
+
+    int Execute()
+    {
+        Time now;
+        if (now-fLastUpdate<boost::posix_time::seconds(1))
+            return fDimDNS.online() ? kStateRunning : kStateDimNetworkNA;
+        fLastUpdate=now;
+
+        // ==============================================================
+
+        bool reqscript = false;
+
+#ifdef HAVE_SQL
+        try
+        {
+            const string query = Tools::Form("SELECT COUNT(*) FROM calendar.Data WHERE NOT u LIKE 'moon' AND y=%d AND m=%d AND d=%d",
+                                             now.NightAsInt()/10000, (now.NightAsInt()/100)%100-1, now.NightAsInt()%100);
+
+            const mysqlpp::StoreQueryResult res = Database(fDatabase).query(query).store();
+
+            const uint32_t cnt = res[0][0];
+
+            reqscript = cnt>0 && (fSun.state==3 || fSun.state==4);
+        }
+        catch (const exception &e)
+        {
+            Out() << e.what() << endl;
+        }
+#endif
+        // ==============================================================
+
+        struct statvfs vfs;
+        statvfs("/daq", &vfs);
+
+        const uint64_t freedaq = vfs.f_bsize*vfs.f_bavail;
+
+        // ==============================================================
+
+        const bool data_taking =
+            fDimMcp.state()==MCP::State::kTriggerOn ||
+            fDimMcp.state()==MCP::State::kTakingData;
+
+        const bool data_run =
+            fMcpConfigurationName=="data" ||
+            fMcpConfigurationName=="data-rt";
+
+        const bool bias_on =
+            fDimBiasControl.state()==BIAS::State::kRamping     ||
+            fDimBiasControl.state()==BIAS::State::kOverCurrent ||
+            fDimBiasControl.state()==BIAS::State::kVoltageOn;
+
+        const bool calibrated =
+            fDimFeedback.state()>=Feedback::State::kCalibrated;
+
+        const bool haderr = !fErrorList.empty();
+
+        bool newerr = false;
+
+        newerr |= SetError(!fDimDNS.online(),
+                           "<b><#darkred>DIM network not available</#></b>");
+        newerr |= SetError(!fDimControl.online(),
+                           "<b>no dimctrl server available</b>");
+        newerr |= SetError(fDimDataLogger.state()<20 || fDimDataLogger.state()>40,
+                           "<b>datalogger not ready</b>");
+
+        newerr |= SetError(fDimControl.state()!=3 && reqscript,
+                           "<b>No script running during datataking time.</b>");
+
+        //newerr |= SetError(fDimDriveControl.state()==Drive::State::kLocked,
+        //                   "<b><#darkred>Drive in LOCKED state, drive was automatically parked</#></b>");
+
+        newerr |= SetError(fDimDriveControl.state()>0xff && data_taking && data_run,
+                           "Drive in ERROR state during data-run");
+        newerr |= SetError(fDriveControlMoonDist>155,
+                           "Moon within the field-of-view of the cones");
+        newerr |= SetError(fDriveControlMoonDist>=0 && fDriveControlMoonDist<3,
+                           "Moon within the field-of-view of the camera");
+
+        newerr |= SetError(fDimBiasControl.state()<BIAS::State::kRamping && data_taking && data_run,
+                           "BIAS not operating during data-run");
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kOverCurrent,
+                           "BIAS channels in OverCurrent");
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kNotReferenced,
+                           "BIAS voltage not at reference");
+
+        newerr |= SetError(fDimFeedback.state()==Feedback::State::kOnStandby,
+                           "Feedback in standby due to high currents");
+
+
+        newerr |= SetError(bias_on && calibrated && fBiasControlCurrentMed>115,
+                           "Median current (excl. crazy) exceeds 115&micro;A/pix");
+        newerr |= SetError(bias_on && calibrated && fBiasControlCurrentMax>160,
+                           "Maximum current (excl. crazy) exceeds 160&micro;A/pix");
+
+        newerr |= SetError(fFscControlHumidityAvg>60,
+                           "Average camera humidity exceed 60%");
+
+        newerr |= SetError(!fPfMiniHumidityHist.empty() && fPfMiniHumidityHist.back()>50,
+                           "Camera humidity inside camera exceeds 50% (PFmini)");
+        newerr |= SetError(!fTemperatureControlHist.empty() && (fTemperatureControlHist.back()<25.5 || fTemperatureControlHist.back()>28.5),
+                           "Container temperature outside [25.5;28.5]&deg;C");
+
+        newerr |= SetError(!fMagicWeatherHist[kHum].empty() && fMagicWeatherHist[kHum].back()>98 && fDimLidControl.state()==Lid::State::kOpen,
+                           "Outside humidity exceeds 98% while lid is open");
+        newerr |= SetError(!fMagicWeatherHist[kGusts].empty() && fMagicWeatherHist[kGusts].back()>50 && (fDimDriveControl.state()==Drive::State::kTracking||fDimDriveControl.state()==Drive::State::kOnTrack),
+                           "Wind gusts exceed 50km/h during tracking");
+
+        newerr |= SetError(fDimFscControl.state()>=FSC::State::kConnected && !fFscControlTemperatureHist.empty() && fFscControlTemperatureHist.back()>15,
+                           "Sensor temperature exceeds outside temperature by more than 15&deg;C");
+
+        newerr |= SetError(fFtmControlTriggerRateTooLow>0,
+                           "Trigger rate below 1Hz while trigger switched on");
+
+        newerr |= SetError(fFtmControlState!=FTM::kFtmConfig && (fFtmControlState&FTM::kFtmLocked)==0,
+                           "FTM - clock conditioner not locked!");
+
+        newerr |= SetError(fDimTimeCheck.state()==1,
+                           "Warning NTP time difference of drive PC exceeds 1s");
+        newerr |= SetError(fDimTimeCheck.state()<1,
+                           "Warning timecheck not running");
+
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kVoltageOn &&
+                           fDimFeedback.state()<Feedback::State::kCalibrating &&
+                           fBiasControlVoltageMed>3,
+                           "Bias voltage switched on, but bias crate not calibrated");
+
+        newerr |= SetError(fLastRunFinishedWithZeroEvents,
+                           "Last run finshed, but contained zero events.");
+
+        newerr |= SetError(fFreeSpace<uint64_t(50000000000),
+                           "Less than 50GB disk space left on newdaq.");
+
+        newerr |= SetError(freedaq<uint64_t(800000000000),
+                           "Less than 800GB disk space left on daq.");
+
+        newerr |= SetError(fDimPwrControl.state()==Power::State::kCoolingFailure,
+                           "Cooling unit reports failure!");
+
+        for (auto it=fControlAlarmHist.begin(); it!=fControlAlarmHist.end(); it++)
+            newerr |= SetError(it->time.IsValid(), it->msg);
+        fControlAlarmHist.clean();;
+
+        fLastRunFinishedWithZeroEvents = false;
+
+        // FTM in Connected instead of Idle --> power cyclen
+
+        /* // Check offline and disconnected status?
+          Out() << fDimMcp          << endl;
+          Out() << fDimControl      << endl;
+          Out() << fDimDataLogger   << endl;
+          Out() << fDimDriveControl << endl;
+          Out() << fDimFadControl   << endl;
+          Out() << fDimFtmControl   << endl;
+          Out() << fDimBiasControl  << endl;
+          Out() << fDimFeedback     << endl;
+          Out() << fDimRateControl  << endl;
+          Out() << fDimFscControl   << endl;
+          Out() << fDimMagicWeather << endl;
+          Out() << fDimRateScan     << endl;
+          Out() << fDimChat         << endl;
+          */
+
+        // FTU in error
+        // FAD lost
+
+        // --------------------------------------------------------------
+        ostringstream out;
+
+        if (newerr)
+        {
+            SetAudio("error");
+
+            out << now.JavaDate() << '\n';
+            out << HTML::kWhite << '\t';
+            out << "<->" << fErrorHist.rget() << "<->";
+            out << '\n';
+
+            ofstream(fPath+"/errorhist.data") << out.str();
+        }
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t';
+        for (auto it=fErrorList.begin(); it!=fErrorList.end(); it++)
+            out << *it << "<br/>";
+        out << '\n';
+
+        if (haderr || !fErrorList.empty())
+            ofstream(fPath+"/error.data") << out.str();
+
+        // ==============================================================
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+        out << setprecision(3);
+
+        // -------------- System status --------------
+        if (fDimDNS.online() && fDimMcp.state()>=MCP::State::kIdle) // Idle
+        {
+            string col = HTML::kBlue;
+            switch (fMcpConfigurationState)
+            {
+            case MCP::State::kIdle:
+            case DimState::kOffline:
+                col = HTML::kWhite;
+                break;
+            case MCP::State::kConfiguring1:
+            case MCP::State::kConfiguring2:
+            case MCP::State::kConfiguring3:
+            case MCP::State::kConfigured:
+            case MCP::State::kTriggerOn:
+                col = HTML::kBlue;
+                break;
+            case MCP::State::kTakingData:
+                col = HTML::kBlue;
+                if (fDimFadControl.state()==FAD::State::kRunInProgress)
+                    col = HTML::kGreen;
+                break;
+            }
+
+            const bool other =
+                fDimRateControl.state()==RateControl::State::kSettingGlobalThreshold ||
+                fDimLidControl.state()==Lid::State::kMoving ||
+                fDimRateScan.state()==RateScan::State::kInProgress;
+
+            if (other)
+                col = HTML::kBlue;
+
+            out << col << '\t';
+
+            if (!other)
+            {
+                const string conf = fMcpConfigurationName.length()>0?" ["+fMcpConfigurationName+"]":"";
+                switch (fMcpConfigurationState)
+                {
+                case MCP::State::kIdle:
+                    out << "Idle" << conf;
+                    break;
+                case MCP::State::kConfiguring1:
+                case MCP::State::kConfiguring2:
+                case MCP::State::kConfiguring3:
+                    out << "Configuring" << conf;
+                    break;
+                case MCP::State::kConfigured:
+                    out << "Configured" << conf;
+                    break;
+                case MCP::State::kTriggerOn:
+                case MCP::State::kTakingData:
+                    out << fMcpConfigurationName;
+                    if (fFadControlDrsRuns[2]>0)
+                        out << "(" << fFadControlDrsRuns[2] << ")";
+                    break;
+                }
+            }
+            else
+                if (fDimRateControl.state()==RateControl::State::kSettingGlobalThreshold)
+                    out << "Calibrating threshold";
+                else
+                    if (fDimRateScan.state()==RateScan::State::kInProgress)
+                        out << "Rate scan in progress";
+                    else
+                        if (fDimLidControl.state()==Lid::State::kMoving)
+                            out << "Lid moving";
+
+
+            if (fMcpConfigurationState>MCP::State::kConfigured &&
+                fDimRateControl.state()!=RateControl::State::kSettingGlobalThreshold)
+            {
+                ostringstream evt;
+                if (fMcpConfigurationMaxEvents>0)
+                {
+                    const int64_t de = int64_t(fMcpConfigurationMaxEvents) - int64_t(fFadControlNumEvents);
+                    if (de>=0 && fMcpConfigurationState==MCP::State::kTakingData)
+                        evt << de;
+                    else
+                        evt << fMcpConfigurationMaxEvents;
+                }
+                else
+                {
+                    if (fMcpConfigurationState==MCP::State::kTakingData)
+                    {
+                        if (fFadControlNumEvents>2999)
+                            evt << floor(fFadControlNumEvents/1000) << 'k';
+                        else
+                            evt << fFadControlNumEvents;
+                    }
+                }
+
+                ostringstream tim;
+                if (fMcpConfigurationMaxTime>0)
+                {
+                    const uint32_t dt = (Time()-fMcpConfigurationRunStart).total_seconds();
+                    if (dt<=fMcpConfigurationMaxTime && fMcpConfigurationState==MCP::State::kTakingData)
+                        tim << fMcpConfigurationMaxTime-dt << 's';
+                    else
+                        tim << fMcpConfigurationMaxTime << 's';
+                }
+                else
+                {
+                    if (fMcpConfigurationState==MCP::State::kTakingData)
+                        tim << fMcpConfigurationRunStart.SecondsTo();
+                }
+
+                const bool has_evt = !evt.str().empty();
+                const bool has_tim = !tim.str().empty();
+
+                if (has_evt || has_tim)
+                    out << " [";
+                out << evt.str();
+                if (has_evt && has_tim)
+                    out << '/';
+                out << tim.str();
+                if (has_evt || has_tim)
+                    out << ']';
+            }
+        }
+        else
+            out << HTML::kWhite;
+        out << '\n';
+
+        // ------------------ Drive -----------------
+        if (fDimDNS.online() && fDimDriveControl.state()>=Drive::State::kInitialized)   // Armed, Moving, Tracking, OnTrack, Error
+        {
+            const uint32_t dev = !fDriveControlTrackingDevHist.empty() ? round(fDriveControlTrackingDevHist.back()) : 0;
+            const State rc = fDimDriveControl.description();
+            string col = HTML::kGreen;
+            if (fDimDriveControl.state()==Drive::State::kInitialized)  // Armed
+                col = HTML::kWhite;
+            if (fDimDriveControl.state()>Drive::State::kInitialized && // Moving
+                fDimDriveControl.state()<Drive::State::kTracking)
+                col = HTML::kBlue;
+            if (fDimDriveControl.state()==Drive::State::kTracking ||   // Tracking
+                fDimDriveControl.state()==Drive::State::kOnTrack) 
+            {
+                if (dev>60)   // ~1.5mm
+                    col = HTML::kYellow;
+                if (dev>120)  // ~1/4 of a pixel ~ 2.5mm
+                    col = HTML::kRed;
+            }
+            if (fDimDriveControl.state()>0xff)
+                col = HTML::kRed;
+            out << col << '\t';
+
+            //out << rc.name << '\t';
+            out << fDriveControlPointingAz << ' ';
+            out << fDriveControlPointingZd  << "&deg;";
+            out << setprecision(2);
+            if (fDimDriveControl.state()==Drive::State::kTracking ||
+                fDimDriveControl.state()==Drive::State::kOnTrack)      // Tracking
+            {
+                out << " &plusmn; " << dev << '"';
+                if (!fDriveControlSourceName.empty())
+                    out << " [" << fDriveControlSourceName  << ']';
+            }
+            if (fDimDriveControl.state()>Drive::State::kInitialized && // Moving
+                fDimDriveControl.state()<Drive::State::kTracking)
+                out << " &#10227;";
+            out << setprecision(3);
+        }
+        else
+            out << HTML::kWhite << '\t';
+
+        if (fSun.time.IsValid() && fMoon.time.IsValid())
+        {
+            if (fSun.visible)
+            {
+                out << " &#9788;";
+                if (fDimDriveControl.state()<Drive::State::kInitialized)
+                    out << " [" << fSun.fSunSet12.MinutesTo() << "&darr;]";
+            }
+            else
+                if (!fSun.visible && fMoon.visible)
+                {
+                    out << " &#9790;";
+                    if (fDimDriveControl.state()<Drive::State::kInitialized)
+                        out << " [" << fMoon.disk << "%]";
+                }
+        }
+        if (fDimDNS.online() && fDimDriveControl.state()>0xff)
+            out << " <ERR>";
+        if (fDimDNS.online() && fDimDriveControl.state()==Drive::State::kLocked)
+            out << " &otimes;";
+        out << '\n';
+
+        // ------------------- FSC ------------------
+        if (fDimDNS.online() && fDimFscControl.state()>FSC::State::kDisconnected && !fFscControlTemperatureHist.empty())
+        {
+            string col = HTML::kGreen;
+            if (fFscControlTemperatureHist.back()>9)
+                col = HTML::kYellow;
+            if (fFscControlTemperatureHist.back()>15)
+                col = HTML::kRed;
+
+            out << col << '\t' << fFscControlTemperatureHist.back() << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        // --------------- MagicWeather -------------
+        if (fDimDNS.online() && fDimMagicWeather.state()==MagicWeather::State::kReceiving && !fMagicWeatherHist[kWeatherBegin].empty())
+        {
+            /*
+            const float diff = fMagicWeatherHist[kTemp].back()-fMagicWeatherHist[kDew].back();
+            string col1 = HTML::kRed;
+            if (diff>0.3)
+                col1 = HTML::kYellow;
+            if (diff>0.7)
+                col1 = HTML::kGreen;
+                */
+
+            const float wind = fMagicWeatherHist[kGusts].back();
+            const float hum  = fMagicWeatherHist[kHum].back();
+            string col = HTML::kGreen;
+            if (wind>35 || hum>95)
+                col = HTML::kYellow;
+            if (wind>45 || hum>98)
+                col = HTML::kRed;
+
+            out << col << '\t';
+            out << fMagicWeatherHist[kHum].back()   << '\t';
+            out << setprecision(2);
+            out << fMagicWeatherHist[kGusts].back() << '\n';
+            out << setprecision(3);
+        }
+        else
+            out << HTML::kWhite << "\n";
+
+        // --------------- FtmControl -------------
+        if (fDimDNS.online() && fDimFtmControl.state()==FTM::State::kTriggerOn)
+        {
+            string col = HTML::kGreen;
+            if (!fFtmControlTriggerRateHist.empty())
+            {
+                if (fFtmControlTriggerRateHist.back()<15)
+                    col = HTML::kYellow;
+                if (fFtmControlTriggerRateHist.back()>100)
+                    col = HTML::kRed;
+
+                out << col << '\t' << fFtmControlTriggerRateHist.back() << " Hz";
+            }
+
+            if (bias_on)
+                out << " (" << setprecision(4) << fFtmPatchThresholdMed << ')';
+            out << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        // --------------- BiasControl -------------
+        const bool bias_off = fDimBiasControl.state()==BIAS::State::kVoltageOff;
+        const bool bias_oc  = fDimBiasControl.state()==BIAS::State::kOverCurrent;
+
+        if (fDimDNS.online() && (bias_on || bias_off))
+        {
+
+            string col = fBiasControlVoltageMed>3?HTML::kGreen:HTML::kWhite;
+            if (bias_on)
+            {
+                if (fBiasControlCurrentMed>95 || fBiasControlCurrentMax>135)
+                    col = HTML::kYellow;
+                if (fBiasControlCurrentMed>100 || fBiasControlCurrentMax>140)
+                    col = HTML::kRed;
+            }
+
+            // Bias in overcurrent => Red
+            if (bias_oc)
+                col = HTML::kRed;
+
+            // MCP in ReadyForDatataking/Configuring/Configured/TriggerOn/TakingData
+            // and Bias not in "data-taking state' => Red
+            if (fMcpConfigurationState>MCP::State::kIdle && !bias_on)
+                col = HTML::kWhite;
+
+            const bool cal = fDimFeedback.state()>=Feedback::State::kCalibrated;
+
+            // Feedback is currently calibrating => Blue
+            if (fDimFeedback.state()==Feedback::State::kCalibrating)
+            {
+                out << HTML::kBlue << '\t';
+                out << "***\t";
+                out << "***\t";
+            }
+            else
+            {
+                out << col << '\t';
+                out << setprecision(fBiasControlCurrentMed<100?2:3);
+                out << (bias_off ? 0 : (fBiasControlCurrentMed<10?fBiasControlCurrentMed:floor(fBiasControlCurrentMed))) << '\t';
+                if (bias_oc)
+                    out << "(OC) ";
+                else
+                {
+                    if (cal)
+                    {
+                        out << setprecision(fBiasControlCurrentMax<100?2:3);
+                        out << (bias_off ? 0 : (fBiasControlCurrentMax<10?fBiasControlCurrentMax:floor(fBiasControlCurrentMax)));
+                    }
+                    else
+                        out << "&mdash; ";
+                }
+                out << '\t';
+            }
+            if (cal && fDimFeedback.state()!=Feedback::State::kCalibrating)
+                out << setprecision(2) << fBiasControlPowerTot << " W";
+            else
+                out << setprecision(3) << (bias_off ? 0 : fBiasControlVoltageMed) << " V";
+            out << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        ofstream(fPath+"/fact.data") << out.str();
+
+        // ==============================================================
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+
+        if (!fDimDNS.online())
+            out << HTML::kWhite << "\tOffline\n\n\n\n\n\n\n\n\n\n\n\n\n";
+        else
+        {
+            ostringstream dt;
+            dt << (Time()-fRunTime);
+
+            out << HTML::kGreen << '\t' << fDimDNS.version() << '\n';
+
+            out << GetStateHtml(fDimControl,        0);
+            out << GetStateHtml(fDimMcp,            MCP::State::kConnected);
+            out << GetStateHtml(fDimDataLogger,     1);
+            out << GetStateHtml(fDimDriveControl,   Drive::State::kConnected);
+            out << GetStateHtml(fDimTimeCheck,      1);
+            out << GetStateHtml(fDimFadControl,     FAD::State::kConnected);
+            out << GetStateHtml(fDimFtmControl,     FTM::State::kConnected);
+            out << GetStateHtml(fDimBiasControl,    BIAS::State::kConnected);
+            out << GetStateHtml(fDimFeedback,       Feedback::State::kConnected);
+            out << GetStateHtml(fDimRateControl,    RateControl::State::kConnected);
+            out << GetStateHtml(fDimFscControl,     FSC::State::kConnected);
+            out << GetStateHtml(fDimPfMiniControl,  PFmini::State::kConnected);
+            out << GetStateHtml(fDimGpsControl,     GPS::State::kConnected);
+            out << GetStateHtml(fDimSqmControl,     SQM::State::kConnected);
+            out << GetStateHtml(fDimAgilentControl24, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimAgilentControl50, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimAgilentControl80, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimPwrControl,     Power::State::kSystemOff);
+            out << GetStateHtml(fDimLidControl,     Lid::State::kConnected);
+            out << GetStateHtml(fDimRateScan,       RateScan::State::kConnected);
+            out << GetStateHtml(fDimMagicWeather,   MagicWeather::State::kConnected);
+            out << GetStateHtml(fDimTngWeather,     TNGWeather::State::kConnected);
+            out << GetStateHtml(fDimMagicLidar,     MagicLidar::State::kConnected);
+            out << GetStateHtml(fDimTemperature,    Temperature::State::kValid);
+            out << GetStateHtml(fDimChat,           0);
+            out << GetStateHtml(fDimSkypeClient,    1);
+
+            string col = HTML::kRed;
+            if (fFreeSpace>uint64_t(199999999999))
+                col = HTML::kYellow;
+            if (fFreeSpace>uint64_t(999999999999))
+                col = HTML::kGreen;
+            if (fFreeSpace==UINT64_MAX)
+                col = HTML::kWhite;
+
+            out << col << '\t' << Tools::Scientific(fFreeSpace) << "B\n";
+
+            col = HTML::kRed;
+            if (freedaq>uint64_t(999999999999))
+                col = HTML::kYellow;
+            if (freedaq>uint64_t(149999999999))
+                col = HTML::kGreen;
+            if (freedaq==UINT64_MAX)
+                col = HTML::kWhite;
+
+            out << col << '\t' << Tools::Scientific(freedaq) << "B\n";
+
+            out << HTML::kGreen << '\t' << dt.str().substr(0, dt.str().length()-7) << '\n';
+        }
+
+        ofstream(fPath+"/status.data") << out.str();
+
+        if (now-fLastAstroCalc>boost::posix_time::seconds(15))
+        {
+            UpdateAstronomy();
+            fLastAstroCalc = now;
+        }
+
+        return fDimDNS.online() ? kStateRunning : kStateDimNetworkNA;
+    }
+
+
+public:
+    StateMachineSmartFACT(ostream &out=cout) : StateMachineDim(out, fIsServer?"SMART_FACT":""),
+        fLastAstroCalc(boost::date_time::neg_infin),
+        fPath("www/smartfact/data"),
+        fControlScriptDepth(0),
+        fMcpConfigurationState(DimState::kOffline),
+        fMcpConfigurationMaxTime(0),
+        fMcpConfigurationMaxEvents(0),
+        fLastRunFinishedWithZeroEvents(false),
+        fTngWeatherDustTime(Time::none),
+        fBiasControlVoltageMed(0),
+        fBiasControlCurrentMed(0),
+        fBiasControlCurrentMax(0),
+        fFscControlHumidityAvg(0),
+        fDriveControlMoonDist(-1),
+        fFadControlNumEvents(0),
+        fFadControlDrsRuns(3),
+        fFtmControlState(FTM::kFtmLocked),
+        fRateScanDataId(0),
+        fRateScanBoard(0),
+        fFreeSpace(UINT64_MAX),
+        // ---
+        fDimMcp           ("MCP"),
+        fDimDataLogger    ("DATA_LOGGER"),
+        fDimDriveControl  ("DRIVE_CONTROL"),
+        fDimTimeCheck     ("TIME_CHECK"),
+        fDimMagicWeather  ("MAGIC_WEATHER"),
+        fDimMagicLidar    ("MAGIC_LIDAR"),
+        fDimTngWeather    ("TNG_WEATHER"),
+        fDimTemperature   ("TEMPERATURE"),
+        fDimFeedback      ("FEEDBACK"),
+        fDimBiasControl   ("BIAS_CONTROL"),
+        fDimFtmControl    ("FTM_CONTROL"),
+        fDimFadControl    ("FAD_CONTROL"),
+        fDimFscControl    ("FSC_CONTROL"),
+        fDimPfMiniControl ("PFMINI_CONTROL"),
+        fDimGpsControl    ("GPS_CONTROL"),
+        fDimSqmControl    ("SQM_CONTROL"),
+        fDimAgilentControl24("AGILENT_CONTROL_24V"),
+        fDimAgilentControl50("AGILENT_CONTROL_50V"),
+        fDimAgilentControl80("AGILENT_CONTROL_80V"),
+        fDimPwrControl    ("PWR_CONTROL"),
+        fDimLidControl    ("LID_CONTROL"),
+        fDimRateControl   ("RATE_CONTROL"),
+        fDimRateScan      ("RATE_SCAN"),
+        fDimChat          ("CHAT"),
+        fDimSkypeClient   ("SKYPE_CLIENT")
+    {
+        fDimDNS.Subscribe(*this);
+        fDimControl.Subscribe(*this);
+        fDimMcp.Subscribe(*this);
+        fDimDataLogger.Subscribe(*this);
+        fDimDriveControl.Subscribe(*this);
+        fDimTimeCheck.Subscribe(*this);
+        fDimMagicWeather.Subscribe(*this);
+        fDimMagicLidar.Subscribe(*this);
+        fDimTngWeather.Subscribe(*this);
+        fDimTemperature.Subscribe(*this);
+        fDimFeedback.Subscribe(*this);
+        fDimBiasControl.Subscribe(*this);
+        fDimFtmControl.Subscribe(*this);
+        fDimFadControl.Subscribe(*this);
+        fDimFscControl.Subscribe(*this);
+        fDimPfMiniControl.Subscribe(*this);
+        fDimGpsControl.Subscribe(*this);
+        fDimSqmControl.Subscribe(*this);
+        fDimAgilentControl24.Subscribe(*this);
+        fDimAgilentControl50.Subscribe(*this);
+        fDimAgilentControl80.Subscribe(*this);
+        fDimPwrControl.Subscribe(*this);
+        fDimLidControl.Subscribe(*this);
+        fDimRateControl.Subscribe(*this);
+        fDimRateScan.Subscribe(*this);
+        fDimChat.Subscribe(*this);
+        fDimSkypeClient.Subscribe(*this);
+
+        fDimFscControl.SetCallback(bind(&StateMachineSmartFACT::HandleFscControlStateChange, this, placeholders::_1));
+        //fDimFtmControl.SetCallback(bind(&StateMachineSmartFACT::HandleFtmControlStateChange, this));
+        fDimDriveControl.SetCallback(bind(&StateMachineSmartFACT::HandleDriveControlStateChange, this, placeholders::_1));
+        fDimControl.SetCallback(bind(&StateMachineSmartFACT::HandleControlStateChange, this, placeholders::_1));
+        fDimControl.AddCallback("dotest.dim", bind(&StateMachineSmartFACT::HandleDoTest, this, placeholders::_1));
+
+        Subscribe("DIM_CONTROL/MESSAGE")
+            (bind(&StateMachineSmartFACT::HandleDimControlMessage,   this, placeholders::_1));
+
+        Subscribe("MCP/CONFIGURATION")
+            (bind(&StateMachineSmartFACT::HandleMcpConfiguration,    this, placeholders::_1));
+
+        Subscribe("DRIVE_CONTROL/POINTING_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDrivePointing,       this, placeholders::_1));
+        Subscribe("DRIVE_CONTROL/TRACKING_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDriveTracking,       this, placeholders::_1));
+        Subscribe("DRIVE_CONTROL/SOURCE_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDriveSource,         this, placeholders::_1));
+
+        Subscribe("FSC_CONTROL/TEMPERATURE")
+            (bind(&StateMachineSmartFACT::HandleFscTemperature,      this, placeholders::_1));
+        Subscribe("FSC_CONTROL/HUMIDITY")
+            (bind(&StateMachineSmartFACT::HandleFscHumidity,         this, placeholders::_1));
+        Subscribe("FSC_CONTROL/BIAS_TEMP")
+            (bind(&StateMachineSmartFACT::HandleFscBiasTemp,         this, placeholders::_1));
+
+        Subscribe("PFMINI_CONTROL/DATA")
+            (bind(&StateMachineSmartFACT::HandlePfMiniData,          this, placeholders::_1));
+
+        Subscribe("GPS_CONTROL/NEMA")
+            (bind(&StateMachineSmartFACT::HandleGpsNema,             this, placeholders::_1));
+
+        Subscribe("SQM_CONTROL/DATA")
+            (bind(&StateMachineSmartFACT::HandleSqmData,             this, placeholders::_1));
+
+        Subscribe("TEMPERATURE/DATA")
+            (bind(&StateMachineSmartFACT::HandleTemperatureData,     this, placeholders::_1));
+
+        Subscribe("AGILENT_CONTROL_24V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "24"));
+        Subscribe("AGILENT_CONTROL_50V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "50"));
+        Subscribe("AGILENT_CONTROL_80V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "80"));
+
+        Subscribe("MAGIC_WEATHER/DATA")
+            (bind(&StateMachineSmartFACT::HandleMagicWeatherData,    this, placeholders::_1));
+        Subscribe("TNG_WEATHER/DUST")
+            (bind(&StateMachineSmartFACT::HandleTngWeatherDust,      this, placeholders::_1));
+
+        Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
+            (bind(&StateMachineSmartFACT::HandleFeedbackCalibratedCurrents, this, placeholders::_1));
+
+        Subscribe("BIAS_CONTROL/VOLTAGE")
+            (bind(&StateMachineSmartFACT::HandleBiasVoltage,         this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/CURRENT")
+            (bind(&StateMachineSmartFACT::HandleBiasCurrent,         this, placeholders::_1));
+
+        Subscribe("FAD_CONTROL/CONNECTIONS")
+            (bind(&StateMachineSmartFACT::HandleFadConnections,      this, placeholders::_1));
+        Subscribe("FAD_CONTROL/EVENTS")
+            (bind(&StateMachineSmartFACT::HandleFadEvents,           this, placeholders::_1));
+        Subscribe("FAD_CONTROL/START_RUN")
+            (bind(&StateMachineSmartFACT::HandleFadStartRun,         this, placeholders::_1));
+        Subscribe("FAD_CONTROL/DRS_RUNS")
+            (bind(&StateMachineSmartFACT::HandleFadDrsRuns,          this, placeholders::_1));
+        Subscribe("FAD_CONTROL/EVENT_DATA")
+            (bind(&StateMachineSmartFACT::HandleFadEventData,        this, placeholders::_1));
+        Subscribe("FAD_CONTROL/STATS")
+            (bind(&StateMachineSmartFACT::HandleStats,               this, placeholders::_1));
+
+        Subscribe("DATA_LOGGER/STATS")
+            (bind(&StateMachineSmartFACT::HandleStats,               this, placeholders::_1));
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineSmartFACT::HandleFtmTriggerRates,     this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineSmartFACT::HandleFtmStaticData,       this, placeholders::_1));
+        Subscribe("FTM_CONTROL/FTU_LIST")
+            (bind(&StateMachineSmartFACT::HandleFtmFtuList,          this, placeholders::_1));
+
+        Subscribe("RATE_CONTROL/THRESHOLD")
+            (bind(&StateMachineSmartFACT::HandleRateControlThreshold,this, placeholders::_1));
+
+        Subscribe("RATE_SCAN/DATA")
+            (bind(&StateMachineSmartFACT::HandleRateScanData,        this, placeholders::_1));
+
+        Subscribe("CHAT/MESSAGE")
+            (bind(&StateMachineSmartFACT::HandleChatMsg,             this, placeholders::_1));
+
+
+        // =================================================================
+
+        // State names
+        AddStateName(kStateDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(kStateRunning, "Running", "");
+
+        // =================================================================
+
+        AddEvent("PRINT")
+            (bind(&StateMachineSmartFACT::Print, this))
+            ("Print a list of the states of all connected servers.");
+
+    }
+    int EvalOptions(Configuration &conf)
+    {
+        if (!fPixelMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fPath     = conf.Get<string>("path");
+        fDatabase = conf.Get<string>("source-database");
+
+        struct stat st;
+        if (stat(fPath.c_str(), &st))
+        {
+            Error(fPath+" does not exist!");
+            return 2;
+        }
+
+        if ((st.st_mode&S_IFDIR)==0)
+        {
+            Error(fPath+" not a directory!");
+            return 3;
+        }
+
+        if ((st.st_mode&S_IWUSR)==0)
+        {
+            Error(fPath+" has no write permission!");
+            return 4;
+        }
+
+        if ((st.st_mode&S_IXUSR)==0)
+        {
+            Error(fPath+" has no execute permission!");
+            return 5;
+        }
+
+        ostringstream out;
+        out << Time().JavaDate() << '\n';
+
+        ofstream(fPath+"/error.data") << out.str();
+
+        return -1;
+    }
+};
+
+bool StateMachineSmartFACT::fIsServer = false;
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    StateMachineSmartFACT::fIsServer = !conf.Get<bool>("client");
+    return Main::execute<T, StateMachineSmartFACT>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("pixel-map-file",  var<string>()->required(),     "Pixel mapping file. Used here to get the default reference voltage")
+        ("path",            var<string>("www/smartfact/data"), "Output path for the data-files")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("client",          po_bool(false), "For a standalone client choose this option.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "SmartFACT is a tool writing the files needed for the SmartFACT web interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: smartfact [-c type] [OPTIONS]\n"
+        "  or:  smartfact [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineSmartFACT>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/sqmctrl.cc
===================================================================
--- branches/FACT++_part_filenames/src/sqmctrl.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/sqmctrl.cc	(revision 18732)
@@ -0,0 +1,534 @@
+#include <boost/algorithm/string.hpp>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersSQM.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionSQM : public Connection
+{
+protected:
+    virtual void Update(const SQM::Data &)
+    {
+    }
+
+private:
+    bool     fIsVerbose;
+    bool     fFirstMessage;
+    bool     fValid;
+    uint16_t fTimeout;
+
+    boost::asio::streambuf fBuffer;
+
+    boost::asio::deadline_timer fTrigger;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(false);//err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string buffer;
+        if (!getline(is, buffer, '\n'))
+        {
+            Fatal("Received message does not contain \\n... closing connection.");
+            PostClose(false);
+            return;
+        }
+
+        buffer = buffer.substr(0, buffer.size()-1);
+
+        if (fIsVerbose)
+        {
+            Out() << Time().GetAsStr("%H:%M:%S.%f") << "[" << buffer.size() << "]: " << buffer << "|" << endl;
+            // Out() << Time().GetAsStr("%H:%M:%S.%f") << "[ " << vec.size() << "]: ";
+            // for (auto it=vec.begin(); it!=vec.end(); it++)
+            //     Out() << *it << "|";
+            // Out() << endl;
+        }
+
+        vector<string> vec;
+        boost::split(vec, buffer, boost::is_any_of(","));
+
+        try
+        {
+            if (vec.size()!=6)
+                throw runtime_error("Unknown number of fields in received data");
+
+            if (vec[0]!="r")
+                throw runtime_error("Not a proper answer");
+
+            SQM::Data data;
+
+            data.mag    = stof(vec[1]);
+            data.freq   = stol(vec[2]);
+            data.counts = stol(vec[3]);
+            data.period = stof(vec[4]);
+            data.temp   = stof(vec[5]);
+
+            Update(data);
+
+            fValid = true;
+        }
+        catch (const exception &e)
+        {
+            if (fFirstMessage)
+                Warn("Parsing first message failed ["+string(e.what())+"]");
+            else
+            {
+                Error("Parsing received message failed ["+string(e.what())+"]");
+                Error("Received: "+buffer);
+                PostClose(false);
+                return;
+            }
+        }
+
+        // Send next request in fTimeout milliseconds calculated from
+        // the last request onwards.
+        fTrigger.expires_at(fTrigger.expires_at()+boost::posix_time::milliseconds(fTimeout));
+        fTrigger.async_wait(boost::bind(&ConnectionSQM::HandleRequestTrigger,
+                                        this, dummy::error));
+
+        fFirstMessage = false;
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "ReadTimeout of " << URL() << " failed: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            fValid = false;
+            PostClose(true);
+            return;
+        }
+
+        // This is called if the deadline has been shifted
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        ostringstream str;
+        str << "No valid answer received from " << URL() << " within " << ceil(fTimeout*1.5) << "ms";
+        Error(str);
+
+        PostClose(false);
+
+        fInTimeout.expires_from_now(boost::posix_time::milliseconds(1000));
+        fInTimeout.async_wait(boost::bind(&ConnectionSQM::HandleReadTimeout,
+                                          this, dummy::error));
+    }
+
+    void HandleRequestTrigger(const bs::error_code &error)
+    {
+
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "RequestTrigger failed of " << URL() << " failed: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            //PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTrigger.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        StartReadReport();
+    }
+
+    void StartReadReport()
+    {
+        PostMessage(string("rx\n"), 3);
+
+        // Do not schedule two reads
+        if (!fFirstMessage)
+        {
+            async_read_until(*this, fBuffer, '\n',
+                             boost::bind(&ConnectionSQM::HandleRead, this,
+                                         dummy::error, dummy::bytes_transferred));
+        }
+
+        fInTimeout.expires_from_now(boost::posix_time::milliseconds(fTimeout*1.5));
+        fInTimeout.async_wait(boost::bind(&ConnectionSQM::HandleReadTimeout,
+                                          this, dummy::error));
+    }
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fValid = false;
+        fFirstMessage = true;
+
+        // Empty a possible buffer first before we start reading
+        // otherwise reading and writing might not be consecutive
+        async_read_until(*this, fBuffer, '\n',
+                         boost::bind(&ConnectionSQM::HandleRead, this,
+                                     dummy::error, dummy::bytes_transferred));
+
+        // If there was no immediate answer, send a request
+        fTrigger.expires_at(Time()+boost::posix_time::milliseconds(1000));
+        fTrigger.async_wait(boost::bind(&ConnectionSQM::HandleRequestTrigger,
+                                        this, dummy::error));
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionSQM(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fTimeout(0), fTrigger(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetTimeout(uint16_t t)
+    {
+        fTimeout = t;
+    }
+
+    int GetState() const
+    {
+        if (!is_open())
+            return  SQM::State::kDisconnected;
+
+        return fValid ? SQM::State::kValid : SQM::State::kConnected;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionSQM
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionSQM(ioservice, imp),
+        fDim("SQM_CONTROL/DATA", "F:1;I:1;I:1;F:1;F:1",
+             "Data received from sky quality meter"
+             "|Mag[mag/arcsec^2]:Magnitude (0 means upper brightness limit)"
+             "|Freq[Hz]:Frequency of sensor"
+             "|Counts:Period of sensor (counts occur at 14.7456MHz/32)"
+             "|Period[s]:Period of sensor"
+             "|Temp[deg C]:Sensor temperature in deg C")
+    {
+    }
+
+    void Update(const SQM::Data &data)
+    {
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineSQMControl : public StateMachineAsio<T>
+{
+private:
+    S fSQM;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fSQM.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fSQM.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fSQM.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fSQM.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fSQM.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Send(const string &cmd)
+    {
+        const string tx = cmd+"\r\n";
+        fSQM.PostMessage(tx, tx.size());
+        return T::GetCurrentState();
+    }
+
+    int SendCommand(const EventImp &evt)
+    {
+        return Send(evt.GetString());
+    }
+
+    int Execute()
+    {
+        return fSQM.GetState();
+    }
+
+
+public:
+    StateMachineSQMControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "SQM_CONTROL"), fSQM(*this, *this)
+    {
+        // State names
+        T::AddStateName(SQM::State::kDisconnected, "Disconnected",
+                        "No connection to Sky Quality Meter");
+
+        T::AddStateName(SQM::State::kConnected, "Connected",
+                        "Connection established, but no valid message received");
+
+        T::AddStateName(SQM::State::kValid, "Valid",
+                        "Valid message received");
+
+        // Commands
+        //T::AddEvent("SEND_COMMAND", "C")
+        //    (bind(&StateMachineSQMControl::SendCommand, this, placeholders::_1))
+        //    ("Send command to SQM");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineSQMControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        //T::AddEvent("ENABLE")
+        //    (bind(&StateMachineSQMControl::Send, this, "veto_60"))
+        //    ("Enable trigger signal once a second vetoed at every exact minute");
+
+        //T::AddEvent("DISABLE")
+        //    (bind(&StateMachineSQMControl::Send, this, "veto_on"))
+        //    ("Diable trigger output");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachineSQMControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachineSQMControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to SQM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fSQM.SetVerbose(!conf.Get<bool>("quiet"));
+        fSQM.SetTimeout(conf.Get<uint16_t>("request-interval"));
+        fSQM.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fSQM.SetEndpoint(conf.Get<string>("addr"));
+        fSQM.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineSQMControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("SQM control");
+    control.add_options()
+        ("no-dim,d",         po_switch(),         "Disable dim services")
+        ("addr,a",           var<string>("10.0.100.208:10001"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",          po_bool(true),       "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx",         po_bool(),           "Enable debugging of ethernet transmission.")
+        ("request-interval", var<uint16_t>(5000), "How often to request a report [milliseconds].")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The sqmctrl is an interface to the Sky Quality Meter.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: sqmctrl [-c type] [OPTIONS]\n"
+        "  or:  sqmctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionSQM>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionSQM>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionSQM>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/temperature.cc
===================================================================
--- branches/FACT++_part_filenames/src/temperature.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/temperature.cc	(revision 18732)
@@ -0,0 +1,513 @@
+#if BOOST_VERSION < 104600
+#include <assert.h>
+#endif
+
+#include <boost/array.hpp>
+
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/json_parser.hpp>
+
+#include <string>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersTemperature.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace pt = boost::property_tree;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionPowerSwitch : public Connection
+{
+protected:
+    bool fIsValid;
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    int fStatus;
+
+    virtual void Update(const vector<float> &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1==string::npos)
+        {
+            Warn("HTTP header not found.");
+            PostClose(false);
+            return;
+        }
+
+        fRdfData.erase(0, p1+4);
+
+        vector<float> temp(3);
+        try
+        {
+            std::stringstream ss;
+            ss << fRdfData;
+
+            pt::ptree tree;
+            pt::read_json(ss, tree);
+
+            const pt::ptree sub2 = tree.get_child("sensor_values.").begin()->second;
+            const pt::ptree sub3 = sub2.get_child("values").begin()->second.begin()->second;
+
+            temp[0] = sub3.get_child("v").get_value<float>();
+
+            auto sub = sub3.get_child("st.").begin();
+
+            temp[1] = sub++->second.get_value<float>();
+            temp[2] = sub->second.get_value<float>();
+        }
+        catch (std::exception const& e)
+        {
+            Warn("Parsing of JSON failed: "+string(e.what()));
+
+            fStatus = Temperature::State::kConnected;
+
+            PostClose(false);
+            return;
+        }
+
+        fRdfData = "";
+
+        Update(temp);
+
+        ostringstream msg;
+        msg << "T="    << temp[0] << "°C"
+            << " Tmin=" << temp[1] << "°C"
+            << " Tmax=" << temp[2] << "°C";
+        Message(msg);
+
+        fStatus = Temperature::State::kValid;
+
+        fLastReport = Time();
+        PostClose(false);
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                if (!fRdfData.empty())
+                    ProcessAnswer();
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+                ProcessAnswer();
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionPowerSwitch::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionPowerSwitch(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsValid(false), fIsVerbose(true), fDebugRx(false), fLastReport(Time::none),
+        fStatus(Temperature::State::kDisconnected), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+    }
+
+    void Request()
+    {
+        string cmd = "GET " + fSite;
+
+        if (!fNextCommand.empty())
+            cmd += "?" + fNextCommand;
+
+        cmd += " HTTP/1.1\r\n";
+        cmd += "\r\n";
+
+        PostMessage(cmd);
+
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionPowerSwitch::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        // Timeout
+        if (!fLastReport.IsValid() || Time()>fLastReport+boost::posix_time::seconds(fInterval*3))
+            return Temperature::State::kDisconnected;
+
+        return fStatus;
+    }
+};
+
+const uint16_t ConnectionPowerSwitch::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimPowerSwitch : public ConnectionPowerSwitch
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimPowerSwitch(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionPowerSwitch(ioservice, imp),
+        fDim("TEMPERATURE/DATA", "F:1;F:1;F:1",
+             "Temperature readout from power switch"
+             "|T[degC]:Current temperature"
+             "|Tmin[degC]:24h minimum"
+             "|Tmax[degC]:24h maximum")
+    {
+    }
+
+    void Update(const vector<float> &temp)
+    {
+        fDim.Update(temp);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePowerControl : public StateMachineAsio<T>
+{
+private:
+    S fPower;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fPower.GetState();
+    }
+
+
+public:
+    StateMachinePowerControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "TEMPERATURE"), fPower(*this, *this)
+    {
+        // State names
+        T::AddStateName(Temperature::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Temperature::State::kConnected, "Connected",
+                     "Connection established, but no valid data received");
+
+        T::AddStateName(Temperature::State::kValid, "Valid",
+                     "Connection established, received data valid");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachinePowerControl::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for interpreted data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachinePowerControl::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPower.SetVerbose(!conf.Get<bool>("quiet"));
+        fPower.SetInterval(conf.Get<uint16_t>("interval"));
+        fPower.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPower.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fPower.SetSite(conf.Get<string>("url"));
+        fPower.SetEndpoint(conf.Get<string>("addr"));
+        fPower.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePowerControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Lid control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>("10.0.100.234:80"),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>("/statusjsn.js?components=18179&_=1365876572736"),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(60), "Interval between two updates on the server in seconds")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ("debug-rx",   po_bool(), "Enable debugging for received data.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The temperature is an interface to readout the temperature from the power switch.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: temperature [-c type] [OPTIONS]\n"
+        "  or:  temperature [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionPowerSwitch>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionPowerSwitch>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionPowerSwitch>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+    }
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/time.cc
===================================================================
--- branches/FACT++_part_filenames/src/time.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/time.cc	(revision 18732)
@@ -0,0 +1,112 @@
+#include "Time.h"
+
+#include <iostream>
+
+using namespace std;
+using namespace boost::posix_time;
+
+int main(int, char **)
+{
+    // Print the local time in the default representation of cout
+    cout << endl;
+    cout << "Local Time:   " << Time(Time::local) << endl;
+
+    // Print UTC in several different representations
+    Time utc; 
+    cout << "Universal CT: " << utc << endl;
+    cout << "User defined: " << Time::fmt("%Y=%m=%d %H=%M=%S.%f") << utc << endl;
+    cout << "SQL-format:   " << Time::sql << utc << endl;
+    cout << "ISO-format:   " << Time::iso << utc << endl;
+    cout << "Default:      " << Time::reset << utc << endl;
+    cout << endl;
+
+    // Copy the UTC into a stringstream and show it on the screen
+    stringstream str;
+    str << "stringstream: " << Time::sql << utc;
+    cout << str.str() << endl;
+    cout << endl;
+
+    // Calculate the corresponsing MJD and shoud MJD and corresponding UTC
+    const double mjd1 = utc.Mjd();
+    cout << "Mjd:   " << Time::sql << utc << " (" << mjd1 << ")" << endl;
+
+    // Set utc to the previously calculated MJD
+    utc.Mjd(mjd1);
+
+    // Re-calcualte MJD from this
+    const double mjd2 = utc.Mjd();
+
+    // Show the newly calculated MJD and time and the difference between both
+    cout << "Mjd:   " << Time::sql << utc << " (" << mjd2 << ")" << endl;
+    cout << "Diff:  " << mjd1 - mjd2 << endl;
+    cout << endl;
+
+    // Instantiate a Time object with an artificial time
+    const Time bd(1974, 9, 9, 21, 59, 42, 123456);
+
+    // Show it in two different representations
+    cout << "Loc default:  " << Time::def << bd << endl;
+    cout << "Standard:     " << Time::std << bd << endl;
+    cout << endl;
+
+    // Clear the stringstream contents
+    str.str("");
+
+    // Stream the time in its sql representation into the stringstream
+    str << Time::ssql << bd;
+
+    // Stream a time from the stringstream considering an sql representation
+    // into a Time object
+    Time tm;
+    str >> Time::ssql >> tm;
+
+    // Output stream and interpreted time
+    cout << "Stream: " << str.str() << endl; 
+    cout << "Time:   " << Time::ssql << tm << endl;
+    cout << endl;
+
+    // Print the individual elements of the date and the time
+    cout << "Elements: ";
+    cout << tm.Y() << " " << tm.M() << " " << tm.D() << " " ;
+    cout << tm.h() << " " << tm.m() << " " << tm.s() << " " ;
+    cout << tm.us() << endl;
+    cout << endl;
+
+    // Set and get a Time from a string
+    const string s = "2042-12-24 12:42:42";
+
+    Time tstr;
+    tstr.SetFromStr(s);
+    cout << "String:      " << s << endl;
+    cout << "TimeFromStr: " << tstr.GetAsStr() << endl;
+    cout << endl;
+
+    // Calculate with times
+    const Time t0;
+    Time t1 = t0;
+    cout << "T0  =          " << t0 << endl;
+    cout << "T1  =          " << t1 << endl;
+    t1 += hours(4242);
+    cout << "T1 += 4242h:   " << t1 << endl;
+    t1 += minutes(42);
+    cout << "T1 += 42min:   " << t1 << endl;
+    t1 += seconds(42);
+    cout << "T1 += 42sec:   " << t1 << endl;
+    cout << endl;
+
+    cout << "T1 - T0 = " << t1-t0 << endl;
+
+    const time_duration diff = t1-t0;
+    cout << "T1 - T0 = " << diff.total_seconds() << "sec" << endl;
+    cout << endl;
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example time.cc
+
+Example for the usage of the class Time
+
+**/
+// **************************************************************************
Index: branches/FACT++_part_filenames/src/timecheck.cc
===================================================================
--- branches/FACT++_part_filenames/src/timecheck.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/timecheck.cc	(revision 18732)
@@ -0,0 +1,236 @@
+#include "StateMachineDim.h"
+
+#include "tools.h"
+#include "Time.h"
+#include "Configuration.h"
+#include "LocalControl.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class StateMachineTimeCheck : public StateMachineDim
+{
+private:
+    Time fLastUpdate;
+
+    string   fServer;
+    uint16_t fInterval;
+
+    DimDescribedService fService;
+
+    enum
+    {
+        kStateOutOfRange = 1,
+        kStateRunning    = 2,
+    };
+
+    // ------------- Initialize variables before the Dim stuff ------------
+
+    int Execute()
+    {
+        Time now;
+        if (now-fLastUpdate<boost::posix_time::minutes(fInterval))
+            return kStateRunning;
+
+        fLastUpdate=now;
+
+        const string cmd = "ntpdate -q "+fServer;
+
+        Info("Calling '"+cmd+"'");
+
+        // !!!!! Warning: this is a blocking operation !!!!!
+        FILE *pipe = popen(cmd.c_str(), "r");
+        if (!pipe)
+        {
+            const string err = strerror(errno);
+            Error("Could not create pipe '"+cmd+"': "+err);
+            return 0x100;
+        }
+
+        vector<string> args;
+
+        string line;
+        while (1)
+        {
+            const int rc = fgetc(pipe);
+            if (rc==EOF || rc=='\n')
+            {
+                args.push_back(Tools::Trim(line));
+                break;
+            }
+
+            if (rc==',')
+            {
+                args.push_back(Tools::Trim(line));
+                line = "";
+                continue;
+            }
+
+            line += static_cast<unsigned char>(rc);
+        }
+        pclose(pipe);
+
+        if (args.size()!=4)
+        {
+            Error("First returned line contains other than four arguments (separated by commas)");
+            return 0x100;
+        }
+
+        if (args[2].substr(0, 7)!="offset ")
+        {
+            Error("Argument 3 '"+args[2]+"' is not what it ought to be.");
+            return 0x100;
+        }
+
+        try
+        {
+            const float offset = stof(args[2].substr(7));
+            fService.Update(offset);
+
+            const string msg = "NTP: "+fServer+" returned: "+args[2]+" ms";
+
+            if (offset>=1000)
+            {
+                Warn(msg);
+                return kStateOutOfRange;
+            }
+
+            Message(msg);
+
+        }
+        catch (const exception &e)
+        {
+            Error("Converting offset '"+args[2]+"' to float failed: "+e.what());
+            return 0x100;
+        }
+
+        return kStateRunning;
+    }
+
+    int Trigger()
+    {
+        fLastUpdate = Time()-boost::posix_time::minutes(fInterval);
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineTimeCheck(ostream &out=cout) : StateMachineDim(out, "TIME_CHECK"),
+        fService("TIME_CHECK/OFFSET", "F:1", "Time offset measured with ntp|offset[ms]:Time offset in milliseconds")
+    {
+        // State names
+        AddStateName(kStateRunning,    "Valid",      "Last check was valid.");
+        AddStateName(kStateOutOfRange, "OutOfRange", "Last time check exceeded 1s.");
+
+        AddEvent("TRIGGER");
+            (bind(&StateMachineTimeCheck::Trigger, this))
+            ("Trigger update");
+
+    }
+    int EvalOptions(Configuration &conf)
+    {
+        fServer   = conf.Get<string>("ntp-server");
+        fInterval = conf.Get<uint16_t>("interval");
+        if (fInterval==0)
+            fInterval=1;
+
+        Trigger();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineTimeCheck>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Time check");
+    control.add_options()
+        ("ntp-server", var<string>("hora.roa.es"),  "The ntp server to be queried")
+        ("interval",   var<uint16_t>(15),           "Interval in minutes the ntp server should be queried")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    /*
+    cout <<
+        "SmartFACT is a tool writing the files needed for the SmartFACT web interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: smartfact [-c type] [OPTIONS]\n"
+        "  or:  smartfact [OPTIONS]\n";
+    cout << endl;*/
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineTimeCheck>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/tngweather.cc
===================================================================
--- branches/FACT++_part_filenames/src/tngweather.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/tngweather.cc	(revision 18732)
@@ -0,0 +1,654 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersTNGWeather.h"
+
+#include <QtXml/QDomDocument>
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace TNGWeather;
+
+
+class ConnectionWeather : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateWeather(const Time &, const DimWeather &)
+    {
+    }
+
+    virtual void UpdateSeeing(const Time &, const DimSeeing &)
+    {
+    }
+
+    virtual void UpdateDust(const Time &, const float &)
+    {
+    }
+
+    string fRdfData;
+    float  fDust;
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    Time fLastSeeing;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        const size_t end = fRdfData.find("\r\n\r\n");
+        if (end==string::npos)
+        {
+            Out() << "Received data corrupted [1]." << endl;
+            Out() << fRdfData << endl;
+            return;
+        }
+
+        string data(fRdfData);
+        data.erase(0, end+4);
+
+        size_t pos = 0;
+        while (1)
+        {
+            const size_t chunk = data.find("\r\n", pos);
+            if (chunk==0 || chunk==string::npos)
+            {
+                StartReadReport();
+                return;
+            }
+
+            size_t len = 0;
+            stringstream val(data.substr(pos, chunk-pos));
+            val >> hex >> len;
+
+            data.erase(pos, chunk-pos+2);
+            if (len==0)
+                break;
+
+            pos += len+2; // Count trailing \r\n of chunk
+        }
+
+
+        fLastReception = Time();
+        fRdfData = "";
+        PostClose(false);
+
+        if (fIsVerbose)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << data << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(data.data()), false))
+        {
+            Warn("Parsing of xml failed [0].");
+            PostClose(false);
+            return;
+        }
+
+        if (fIsVerbose)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const QDomElement root    = doc.documentElement();
+        const QDomElement channel = root.firstChildElement("channel");
+        const QDomElement item    = channel.firstChildElement("item");
+
+        const QDomElement see   = item.firstChildElement("tngw:dimmSeeing");
+        const QDomElement mjd   = item.firstChildElement("tngw:dimmSeeing.date");
+        const QDomElement med   = item.firstChildElement("tngw:dimmSeeing.median");
+        const QDomElement sdev  = item.firstChildElement("tngw:dimmSeeing.stdev");
+        const QDomElement dust  = item.firstChildElement("tngw:dustTotal");
+        const QDomElement trend = item.firstChildElement("tngw:trend");
+        const QDomElement pres  = item.firstChildElement("tngw:airPressure");
+        const QDomElement dew   = item.firstChildElement("tngw:dewPoint");
+        const QDomElement wdir  = item.firstChildElement("tngw:windDirection");
+        const QDomElement speed = item.firstChildElement("tngw:windSpeed");
+        const QDomElement hum   = item.firstChildElement("tngw:hum");
+        const QDomElement tmp   = item.firstChildElement("tngw:temperature");
+        const QDomElement solar = item.firstChildElement("tngw:solarimeter");
+        const QDomElement date  = item.firstChildElement("tngw:date");
+
+        if (see.isNull()  || mjd.isNull()   || med.isNull()  || sdev.isNull() ||
+            dust.isNull() || trend.isNull() || pres.isNull() || dew.isNull()  ||
+            wdir.isNull() || speed.isNull() || hum.isNull()  || tmp.isNull()  ||
+            solar.isNull()|| date.isNull())
+        {
+            Warn("Parsing of xml failed [1].");
+            PostClose(false);
+            return;
+        }
+
+        DimWeather w;
+        w.fDustTotal     = dust .text().toFloat();
+        w.fTempTrend     = trend.text().toFloat();
+        w.fAirPressure   = pres .text().toFloat();
+        w.fDewPoint      = dew  .text().toFloat();
+        w.fWindDirection = wdir .text().toFloat();
+        w.fWindSpeed     = speed.text().toFloat()*3.6;
+        w.fHumidity      = hum  .text().toFloat();
+        w.fTemperature   = tmp  .text().toFloat();
+        w.fSolarimeter   = solar.text().toFloat();
+
+        DimSeeing s;
+        s.fSeeing        = see  .text().toFloat();
+        s.fSeeingMed     = med  .text().toFloat();
+        s.fSeeingStdev   = sdev .text().toFloat();
+
+        const string dateObj = date.text().toStdString();
+        const string dateSee = mjd .text().toStdString();
+
+        Time timeObj(dateObj);
+        Time timeSee(dateSee);
+        if (!timeObj.IsValid())
+        {
+            struct tm tm;
+
+            vector<char> buf(255);
+            if (strptime(dateObj.c_str(), "%c", &tm))
+                timeObj = Time(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+                               tm.tm_hour,      tm.tm_min,   tm.tm_sec);
+        }
+
+        if (!timeSee.IsValid())
+        {
+            struct tm tm;
+
+            vector<char> buf(255);
+            if (strptime(dateSee.c_str(), "%c", &tm))
+                timeSee = Time(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+                               tm.tm_hour,      tm.tm_min,   tm.tm_sec);
+
+            Warn("Seeing time invalid ["+dateObj+"]");
+        }
+
+        if (!timeObj.IsValid())
+            throw runtime_error("object time invalid");
+
+        if (timeObj!=fLastReport && fIsVerbose)
+        {
+            Out() << endl;
+            Out() << "Date:           " << timeObj          << endl;
+            Out() << "DustTotal:      " << w.fDustTotal     << " ugr/m^2" << endl;
+            Out() << "AirPressure:    " << w.fAirPressure   << " mbar"    << endl;
+            Out() << "DewPoint:       " << w.fDewPoint      << " deg C"   << endl;
+            Out() << "WindDirection:  " << w.fWindDirection << " deg"     << endl;
+            Out() << "WindSpeed:      " << w.fWindSpeed     << " m/s"     << endl;
+            Out() << "Humidity:       " << w.fHumidity      << "%"        << endl;
+            Out() << "Temperature:    " << w.fTemperature   << " deg C"   << endl;
+            Out() << "TempTrend 24h:  " << w.fTempTrend     << " deg C"   << endl;
+            Out() << "Solarimeter:    " << w.fSolarimeter   << " W/m^2"   << endl;
+            Out() << endl;
+            Out() << "Seeing:         " << s.fSeeing << " arcsec [" << timeSee << "]" << endl;
+            Out() << "Seeing:         " << s.fSeeingMed << " +- " << s.fSeeingStdev << endl;
+            Out() << endl;
+        }
+
+        fLastReport = timeObj;
+
+        UpdateWeather(timeObj, w);
+
+        if (timeSee.IsValid() && fLastSeeing!=timeSee)
+        {
+            UpdateSeeing(timeSee, s);
+            fLastSeeing = timeSee;
+        }
+
+        if (fDust==w.fDustTotal)
+            return;
+
+        UpdateDust(timeObj, w.fDustTotal);
+        fDust = w.fDustTotal;
+
+        ostringstream out;
+        out << setprecision(3) << "Dust: " << fDust << "ug/m^3 [" << timeObj << "]";
+        Message(out);
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionWeather::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "User-Agent: FACT tngweather\r\n"
+            "Accept: */*\r\n"
+            "Host: "+URL()+"\r\n"
+            "Connection: close\r\n"//Keep-Alive\r\n"
+            "Content-Type: application/rss+xml\r\n"
+            "User-Agent: FACT\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionWeather::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionWeather(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fDust(-1),
+        fLastReport(Time::none), fLastReception(Time::none), fLastSeeing(Time::none),
+        fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3; // receiving
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2; // connected
+
+        return 1; // Disconnected
+    }
+};
+
+const uint16_t ConnectionWeather::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionWeather
+{
+private:
+    DimDescribedService fDimWeather;
+    DimDescribedService fDimAtmosphere;
+    DimDescribedService fDimSeeing;
+
+    virtual void UpdateWeather(const Time &t, const DimWeather &data)
+    {
+        fDimWeather.setData(&data, sizeof(DimWeather));
+        fDimWeather.Update(t);
+    }
+
+    virtual void UpdateDust(const Time &t, const float &dust)
+    {
+        fDimAtmosphere.setData(&dust, sizeof(float));
+        fDimAtmosphere.Update(t);
+    }
+
+    virtual void UpdateSeeing(const Time &t, const DimSeeing &see)
+    {
+        fDimSeeing.setData(&see, sizeof(DimSeeing));
+        fDimSeeing.Update(t);
+    }
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionWeather(ioservice, imp),
+        fDimWeather("TNG_WEATHER/DATA", "F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1",
+                     "|T[deg C]:Temperature"
+                     "|DeltaT[deg C]:Temperature trend 24h"
+                     "|T_dew[deg C]:Dew point"
+                     "|H[%]:Humidity"
+                     "|P[mbar]:Air pressure"
+                     "|v[km/h]:Wind speed"
+                     "|d[deg]:Wind direction (N-E)"
+                     "|Dust[ug/m^3]:Dust (total)"
+                     "|Solarimeter[W/m^2]:Solarimeter"),
+        fDimAtmosphere("TNG_WEATHER/DUST", "F:1",
+                       "|Dust[ug/m^3]:Dust (total)"),
+        fDimSeeing("TNG_WEATHER/SEEING", "F:1;F:1;F:1",
+                   "|Seeing[arcsec]:Seeing"
+                   "|Seeing[arcsec]:Seeing Median"
+                   "|SeeingStdev[arcsec]:Seeing Stdev")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineWeather : public StateMachineAsio<T>
+{
+private:
+    S fWeather;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fWeather.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fWeather.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fWeather.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        poll();
+
+        if (evt.GetBool())
+            fWeather.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fWeather.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fWeather.GetState();
+    }
+
+
+public:
+    StateMachineWeather(ostream &out=cout) :
+        StateMachineAsio<T>(out, "TNG_WEATHER"), fWeather(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineWeather::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineWeather::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineWeather::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fWeather.SetVerbose(!conf.Get<bool>("quiet"));
+        fWeather.SetInterval(conf.Get<uint16_t>("interval"));
+        fWeather.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fWeather.SetSite(conf.Get<string>("url"));
+        fWeather.SetEndpoint(conf.Get<string>("addr"));
+        fWeather.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineWeather<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("TNG weather control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("tngweb.tng.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/api/meteo/weather/feed.xml"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(300), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The tngweather is an interface to the TNG weather data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: tngweather [-c type] [OPTIONS]\n"
+        "  or:  tngweather [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionWeather>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/FACT++_part_filenames/src/tools.cc
===================================================================
--- branches/FACT++_part_filenames/src/tools.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/tools.cc	(revision 18732)
@@ -0,0 +1,302 @@
+// **************************************************************************
+/** @file tools.cc
+
+@todo
+   - Resolve the dependancies with dim
+   - Move code to a more appropriate place
+   - put stuff in namespaces
+*/
+// **************************************************************************
+#include "tools.h"
+
+#include <stdarg.h>
+#include <iomanip>
+#include <sstream>
+
+#include <boost/tokenizer.hpp>
+#include <boost/algorithm/string.hpp>
+
+using namespace std;
+
+string Tools::Format(const char *fmt, va_list &ap)
+{
+    int n=256;
+
+    char *ret=0;
+    while (1)
+    {
+        ret = new char[n+1];
+
+        const int sz = vsnprintf(ret, n, fmt, ap);
+        if (sz<=n)
+            break;
+
+        n *= 2;
+        delete [] ret;
+    };
+
+    string str(ret);
+
+    delete [] ret;
+
+    return str;
+}
+
+string Tools::Form(const char *fmt, ...)
+{
+    va_list ap;
+    va_start(ap, fmt);
+
+    string str = Format(fmt, ap);
+
+    va_end(ap);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces.
+//!
+//! @param buf
+//!    a pointer to the char array from which the whitespaces should be
+//!    removed
+//!
+//! @returns
+//!    a std::string with the whitespaces removed from buf
+//
+string Tools::Trim(const string &str)
+{
+    // Trim Both leading and trailing spaces
+    const size_t start = str.find_first_not_of(' '); // Find the first character position after excluding leading blank spaces
+    const size_t end   = str.find_last_not_of(' ');  // Find the first character position from reverse af
+
+    // if all spaces or empty return an empty string
+    if (string::npos==start || string::npos==end)
+        return string();
+
+    return str.substr(start, end-start+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces and
+//! if available leading and trailing quotes, can be either ' or "
+//!
+//! @param buf
+//!    a pointer to the char array to be trimmed
+//!
+//! @returns
+//!    a std::string with the content trimmed
+//
+string Tools::TrimQuotes(const string &str)
+{
+    string rc = Trim(str);
+    if (rc.length()<2)
+        return rc;
+
+    const char b = rc[0];
+    const char e = rc[rc.length()-1];
+
+    if ((b=='\"' && e=='\"') || (b=='\'' && e=='\''))
+        return rc.substr(1, rc.length()-2);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces.
+//!
+//! Usage example:
+//!
+//! \code
+//!    string str = "     Dies ist ein test fuer einen ganz     langen Satz "
+//!        "und ob er korrekt umgebrochen und formatiert wird. Alles "
+//!        "nur ein simpler test aber trotzdem ganz wichtig.";
+//!
+//!    cout << setfill('-') << setw(40) << "+" << endl;
+//!    while (1)
+//!    {
+//!        const string rc = Tools::Wrap(str, 40);
+//!        if (rc.empty())
+//!            break;
+//!        cout << rc << endl;
+//!    }
+//! \endcode
+//!
+string Tools::Wrap(string &str, size_t width)
+{
+    const size_t pos = str.length()<width ? string::npos : str.find_last_of(' ', width);
+    if (pos==string::npos)
+    {
+        const string rc = str;
+        str = "";
+        return rc;
+    }
+
+    const size_t indent = str.find_first_not_of(' ');
+
+    const string rc = str.substr(0, pos);
+    const size_t p2 = str.find_first_not_of(' ', pos+1);
+
+    str = str.substr(0, indent) + str.substr(p2==string::npos ? pos+1 : p2);
+
+    return rc;
+}
+
+string Tools::Scientific(uint64_t val)
+{
+    ostringstream rc;
+    rc << setprecision(1) << fixed;
+
+    if (val<1000)
+    {
+        rc << val << " ";
+        return rc.str();
+    }
+
+    if (val<3000)
+    {
+        rc << val/1000. << " k";
+        return rc.str();
+    }
+
+    if (val<1000000)
+    {
+        rc << val/1000 << " k";
+        return rc.str();
+    }
+
+    if (val<3000000)
+    {
+        rc << val/1000000. << " M";
+        return rc.str();
+    }
+
+    if (val<1000000000)
+    {
+        rc << val/1000000 << " M";
+        return rc.str();
+    }
+
+    if (val<3000000000)
+    {
+        rc << val/1000000000. << " G";
+        return rc.str();
+    }
+
+    if (val<1000000000000)
+    {
+        rc << val/1000000000 << " G";
+        return rc.str();
+    }
+
+    if (val<3000000000000)
+    {
+        rc << val/1000000000000. << " T";
+        return rc.str();
+    }
+
+    if (val<1000000000000000)
+    {
+        rc << val/1000000000000 << " T";
+        return rc.str();
+    }
+
+    if (val<3000000000000000)
+    {
+        rc << val/1000000000000000. << " P";
+        return rc.str();
+    }
+
+    rc << val/1000000000000000. << " P";
+    return rc.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Splits a string into a filename and command line arguments, like:
+//!
+//!    file.txt arg1=argument1 arg2="argument 2" arg3="argument \"3\""
+//!
+//! 'file.txt' will be returned on opt, the arguments will be returned in
+//! the returned map.
+//!
+//! If the returned file name is empty, an error has occured:
+//!   If the map is also empty the file name was empty, if the map has
+//!   one entry then for this entry the equal sign was missing.
+//!
+map<string,string> Tools::Split(string &opt, bool allow)
+{
+    using namespace boost;
+    typedef escaped_list_separator<char> separator;
+
+    const string data(opt);
+
+    const tokenizer<separator> tok(data, separator("\\", " ", "\"'"));
+
+    auto it=tok.begin();
+    if (it==tok.end())
+    {
+        opt = "";
+        return map<string,string>();
+    }
+
+    opt = string(*it).find_first_of('=')==string::npos ? *it++ : "";
+
+    map<string,string> rc;
+
+    int i=-1;
+
+    for (; it!=tok.end(); it++)
+    {
+        if (it->empty())
+            continue;
+
+        i++;
+
+        const size_t pos = it->find_first_of('=');
+        if (pos==string::npos)
+        {
+            if (allow)
+            {
+                rc[to_string(i)] = *it;
+                continue;
+            }
+
+            opt = "";
+            rc.clear();
+            rc[*it] = "";
+            return rc;
+        }
+
+        rc[it->substr(0, pos)] = it->substr(pos+1);
+    }
+
+    return rc;
+}
+
+vector<string> Tools::Split(const string &str, const string &delim)
+{
+    vector<string> rc;
+    boost::split(rc, str, boost::is_any_of(delim));
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the string with a comment (introduced by a #) stripped. The
+//! comment mark can be escaped by either \# or "#"
+//!
+string Tools::Uncomment(const string &opt)
+{
+    using namespace boost;
+    typedef escaped_list_separator<char> separator;
+
+    const auto it = tokenizer<separator>(opt, separator("\\", "#", "\"'")).begin();
+
+    const int charPos = it.base() - opt.begin();
+
+    return charPos<1 ? "" : opt.substr(0, opt[charPos-1]=='#' ? charPos-1 : charPos);
+}
Index: branches/FACT++_part_filenames/src/tools.h
===================================================================
--- branches/FACT++_part_filenames/src/tools.h	(revision 18732)
+++ branches/FACT++_part_filenames/src/tools.h	(revision 18732)
@@ -0,0 +1,53 @@
+#ifndef FACT_Tools
+#define FACT_Tools
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace Tools
+{
+    std::string Format(const char *fmt, va_list &ap);
+    std::string Form(const char *fmt, ...);
+    std::string Trim(const std::string &str);
+    std::string TrimQuotes(const std::string &str);
+    std::string Wrap(std::string &str, size_t width=78);
+    std::string Scientific(uint64_t val);
+
+    std::map<std::string,std::string> Split(std::string &, bool = false);
+    std::vector<std::string> Split(const std::string &, const std::string &);
+    std::string Uncomment(const std::string &opt);
+
+    template<typename T>
+        uint16_t Fletcher16(const T *t, size_t cnt)
+    {
+        const uint8_t *data = reinterpret_cast<const uint8_t*>(t);
+
+        size_t bytes = cnt*sizeof(T);
+
+        uint16_t sum1 = 0xff;
+        uint16_t sum2 = 0xff;
+
+        while (bytes) 
+        {
+            size_t tlen = bytes > 20 ? 20 : bytes;
+            bytes -= tlen;
+
+            do {
+                sum2 += sum1 += *data++;
+            } while (--tlen);
+
+            sum1 = (sum1 & 0xff) + (sum1 >> 8);
+            sum2 = (sum2 & 0xff) + (sum2 >> 8);
+        }
+
+        // Second reduction step to reduce sums to 8 bits
+        sum1 = (sum1 & 0xff) + (sum1 >> 8);
+        sum2 = (sum2 & 0xff) + (sum2 >> 8);
+
+        return sum2 << 8 | sum1;
+    }
+
+}
+
+#endif
Index: branches/FACT++_part_filenames/src/triggerschedule.cc
===================================================================
--- branches/FACT++_part_filenames/src/triggerschedule.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/triggerschedule.cc	(revision 18732)
@@ -0,0 +1,74 @@
+#include <iostream>
+#include <dic.hxx>
+
+#include "Dim.h"
+#include "Configuration.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description config("Configuration");
+    config.add_options()
+        ("dns",                    var<string>("localhost"),  "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("schedule-database-name", var<string>(), "Database name for scheduling")
+        ;
+
+    po::positional_options_description p;
+    p.add("schedule-database-name", 1); // The first positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The triggerschedule triggers the scheduler.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: triggerschedule [-c type] [OPTIONS] <schedule-database-name>\n"
+        "  or:  triggerschedule [OPTIONS] <schedule-database-name>\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    cout <<
+        "\n"
+        "The method sendCommand(...) will wait for the command to "
+        "be actualy sent to the server and return a completion code "
+        "of:\n"
+        " 0 - if it was successfully sent.\n"
+        " 1 - if it couldn't be delivered.\n "
+        << endl;
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    const string dbname = conf.Get<string>("schedule-database-name");
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    const int rc = DimClient::sendCommand("SCHEDULER/SCHEDULE", dbname.c_str());
+    if (!rc)
+        cerr << "Sending failed!" << endl;
+    else
+        cout << "Command issued successfully." << endl;
+
+    return !rc;
+}
Index: branches/FACT++_part_filenames/src/webServer.c
===================================================================
--- branches/FACT++_part_filenames/src/webServer.c	(revision 18732)
+++ branches/FACT++_part_filenames/src/webServer.c	(revision 18732)
@@ -0,0 +1,24 @@
+#include <string.h>
+#include <unistd.h>
+
+int local_main(int argc, char **argv);
+
+int main(int argc, char **argv)
+{
+    if (argc) {}
+
+    char currwd[1024];
+    strcpy(currwd, argv[0]);
+
+    char *ptr = strrchr(currwd,'/');
+    if (ptr)
+        *ptr = '\0';
+
+    strcpy(ptr, "/../dim/WebDID/");
+
+    char *arg[2] = { currwd, argv[1] };
+    return local_main(2, arg);
+}
+
+#define main local_main
+#include "dim/src/webDid/webServer.c"
Index: branches/FACT++_part_filenames/src/zfits.cc
===================================================================
--- branches/FACT++_part_filenames/src/zfits.cc	(revision 18732)
+++ branches/FACT++_part_filenames/src/zfits.cc	(revision 18732)
@@ -0,0 +1,455 @@
+#include <fstream>
+#include <iostream>
+#include <algorithm>
+#include <map>
+#include <vector>
+
+#include "Configuration.h"
+
+#include "externals/fits.h"
+#include "externals/huffman.h"
+
+#include "Time.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("zfits");
+    control.add_options()
+        ("in",           var<string>()->required(), "")
+        ("out",          var<string>(),             "")
+        ("decompress,d", po_switch(),               "")
+        ("force,f",      var<string>(),             "Force overwrite of output file")
+        ;
+
+    po::positional_options_description p;
+    p.add("in",  1); // The 1st positional options
+    p.add("out", 2); // The 2nd positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "zfits - A fits compressor\n"
+        "\n"
+        "\n"
+        "Usage: zfits [-d] input.fits[.gz] [output.zf]\n";
+    cout << endl;
+}
+
+
+string ReplaceEnd(const string &str, const string &expr, const string &repl)
+{
+    string out(str);
+
+    const size_t p = out.rfind(expr);
+    if (p==out.size()-expr.length())
+        out.replace(p, expr.length(), repl);
+
+    return out;
+}
+
+
+string ReplaceExt(const string &name, bool decomp)
+{
+    if (decomp)
+        return ReplaceEnd(name, ".zfits", ".fits");
+
+    string out = ReplaceEnd(name, ".fits",    ".zfits");
+    return ReplaceEnd(out, ".fits.gz", ".zfits");
+}
+
+int Compress(const string &ifile, const string &ofile)
+{
+    // when to print some info on the screen (every f percent)
+    float frac = 0.01;
+
+    // open a fits file
+    fits f(ifile);
+
+    // open output file
+    ofstream fout(ofile);
+
+    // counters for total size and compressed size
+    uint64_t tot = 0;
+    uint64_t com = 0;
+
+    // very simple timer
+    double sec = 0;
+
+    // Produce a lookup table with all informations about the
+    // columns in the same order as they are in the file
+    const fits::Table::Columns &cols= f.GetColumns();
+
+    struct col_t : fits::Table::Column
+    {
+        string name;
+        void *ptr;
+    };
+
+
+    map<size_t, col_t> columns;
+
+    size_t row_tot = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        col_t c;
+
+        c.offset = it->second.offset;
+        c.size   = it->second.size;
+        c.num    = it->second.num;
+        c.name   = it->first;
+        c.ptr    = f.SetPtrAddress(it->first);
+
+        columns[c.offset] = c;
+
+        row_tot += c.size*c.num;
+    }
+
+    // copy the header from the input to the output file
+    // and prefix the output file as a compressed fits file
+    string header;
+    header.resize(f.tellg());
+
+    f.seekg(0);
+    f.read((char*)header.c_str(), header.size());
+
+    char m[2];
+    m[0] = 'z'+128;
+    m[1] = 'f'+128;
+
+    const size_t hlen = 0;
+
+    size_t hs = header.size();
+
+    fout.write(m, 2);                           // magic number
+    fout.write((char*)&hlen, sizeof(size_t));   // length of possible header data (e.g. file version, compression algorithm)
+    fout.write((char*)&hs,   sizeof(size_t));   // size of FITS header
+    fout.write(header.c_str(), header.size());  // uncompressed FITS header
+
+    tot += header.size();
+    com += header.size()+2+2*sizeof(size_t);
+
+    cout << fixed;
+
+    Time start;
+
+    // loop over all rows
+    vector<char> cache(row_tot);
+    while (f.GetNextRow())
+    {
+        // pointer to the start of the cache for the data of one row
+        char *out = cache.data();
+
+        // mask stroing which column have been compressed and which not
+        vector<uint8_t> mask(cols.size()/8 + 1);
+
+        // loop over all columns
+        uint32_t icol = 0;
+        for (auto it=columns.begin(); it!=columns.end(); it++, icol++)
+        {
+            // size of cell in bytes
+            const size_t len_col = it->second.size * it->second.num;
+
+            // get pointer to data
+            int16_t *ptr = (int16_t*)it->second.ptr;
+
+            // If the column is the data, preprocess the data
+            /*
+            if (it->second.name=="Data")
+            {
+                int16_t *end = ptr+1440*300-4-(1440*300)%2;
+                int16_t *beg = ptr;
+
+                while (end>=beg)
+                {
+                    const int16_t avg = (end[0] + end[1])/2;
+                    end[2] -= avg;
+                    end[3] -= avg;
+                    end -=2;
+                }
+            }*/
+
+            // do not try to compress less than 32bytes
+            if (len_col>32 && it->second.size==2)
+            {
+                Time now;
+
+                // perform 16bit hoffman (option for 8bit missing, skip 64bit)
+                // (what to do with floats?)
+                string buf;
+                /*int len =*/ Huffman::Encode(buf, (uint16_t*)ptr, len_col/2);
+
+                sec += Time().UnixTime()-now.UnixTime();
+
+                // check if data was really compressed
+                if (buf.size()<len_col)
+                {
+                    // copy compressed data into output cache
+                    memcpy(out, buf.c_str(), buf.size());
+                    out += buf.size();
+
+                    // update mask
+                    const uint64_t bit = (icol%8);
+                    mask[icol/8] |= (1<<bit);
+
+                    continue;
+                }
+            }
+
+            // just copy the data if it has not been compressed
+            memcpy(out, (char*)ptr, len_col);
+            out += len_col;
+        }
+
+        // calcualte size of output buffer
+        const size_t sz = out-cache.data();
+
+        // update counters
+        tot += row_tot;
+        com += sz + mask.size();
+
+        // write the compression mask and the (partly) copmpressed data stream
+        fout.write((char*)mask.data(), mask.size());
+        fout.write(cache.data(), sz);
+
+      	 //if (sz2<0 || memcmp(data, dest3.data(), 432000*2)!=0)
+         //   cout << "grrrr" << endl;
+
+        const float proc = float(f.GetRow())/f.GetNumRows();
+        if (proc>frac)
+        {
+            const double elep = Time().UnixTime()-start.UnixTime();
+            cout << "\r" << setprecision(0) << setw(3) << 100*proc << "% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s in:" << tot/1000000/elep << "MB/s" << flush;
+            frac += 0.01;
+        }
+    }
+
+    const double elep = Time().UnixTime()-start.UnixTime();
+    cout << setprecision(0) << "\r100% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:"  << sec << "s in:" << tot/1000000/elep << "MB/s" << endl;
+
+    return 0;
+}
+
+template<size_t N>
+void revcpy(char *dest, const char *src, int num)
+{
+    const char *pend = src + num*N;
+    for (const char *ptr = src; ptr<pend; ptr+=N, dest+=N)
+        reverse_copy(ptr, ptr+N, dest);
+}
+
+int Decompress(const string &ifile, const string &ofile)
+{
+    // open a fits file
+    ifstream fin(ifile);
+
+    // open output file
+    ofstream fout(ofile);
+
+    // get and check magic number
+    unsigned char m[2];
+    fin.read((char*)m, 2);
+    if (m[0]!='z'+128 || m[1]!='f'+128)
+        throw runtime_error("File not a compressed fits file.");
+
+    // get length of additional header information
+    size_t hlen = 0;
+    fin.read((char*)&hlen, sizeof(size_t));
+    if (hlen>0)
+        throw runtime_error("Only Version-zero files supported.");
+
+    // get size of FITS header
+    size_t hs = 0;
+    fin.read((char*)&hs, sizeof(size_t));
+    if (!fin)
+        throw runtime_error("Could not access header size.");
+
+    // copy the header from the input to the output file
+    // and prefix the output file as a compressed fits file
+    string header;
+    header.resize(hs);
+
+    fin.read((char*)header.c_str(), header.size());
+    fout.write((char*)header.c_str(), header.size());
+    if (!fin)
+        throw runtime_error("Could not read full header");
+
+    string templ("tmpXXXXXX");
+    int fd = mkstemp((char*)templ.c_str());
+    const ssize_t rc = write(fd, header.c_str(), header.size());
+    close(fd);
+
+    if (rc<0)
+        throw runtime_error("Could not write to temporary file: "+string(strerror(errno)));
+
+    // open the output file to get the header parsed
+    fits info(templ);
+
+    remove(templ.c_str());
+
+    // get the maximum size of one row and a list
+    // of all columns ordered by their offset
+    size_t row_tot = 0;
+    const fits::Table::Columns &cols = info.GetColumns();
+    map<size_t, fits::Table::Column> columns;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        columns[it->second.offset] = it->second;
+        row_tot += it->second.num*it->second.size;
+    }
+
+    // very simple timer
+    double sec = 0;
+    double frac = 0;
+
+    size_t com = 2+hs+2*sizeof(size_t);
+    size_t tot = hs;
+
+    const size_t masklen = cols.size()/8+1;
+
+    // loop over all rows
+    vector<char> buf(row_tot+masklen);
+    vector<char> swap(row_tot);
+    uint32_t offset = 0;
+
+    const uint64_t nrows = info.GetUInt("NAXIS2");
+
+    Time start;
+
+    cout << fixed;
+    for (uint32_t irow=0; irow<nrows; irow++)
+    {
+        fin.read(buf.data()+offset, buf.size()-offset);
+
+        const uint8_t *mask = reinterpret_cast<uint8_t*>(buf.data());
+        offset = masklen;
+
+        char *ptr = swap.data();
+
+        uint32_t icol = 0;
+        for (auto it=columns.begin(); it!= columns.end(); it++, icol++)
+        {
+            const size_t &num  = it->second.num;
+            const size_t &size = it->second.size;
+
+            if (mask[icol/8]&(1<<(icol%8)))
+            {
+                Time now;
+
+                vector<uint16_t> out(num*size/2);
+                int len = Huffman::Decode((uint8_t*)buf.data()+offset, buf.size()-offset, out);
+                if (len<0)
+                    throw runtime_error("Decoding failed.");
+
+                sec += Time().UnixTime()-now.UnixTime();
+
+                offset += len;
+
+                revcpy<2>(ptr, (char*)out.data(), num);
+            }
+            else
+            {
+                switch (size)
+                {
+                case 1: memcpy   (ptr, buf.data()+offset, num*size); break;
+                case 2: revcpy<2>(ptr, buf.data()+offset, num);      break;
+                case 4: revcpy<4>(ptr, buf.data()+offset, num);      break;
+                case 8: revcpy<8>(ptr, buf.data()+offset, num);      break;
+                }
+
+                offset += num*size;
+            }
+
+            ptr += num*size;
+        }
+
+        com += offset+masklen;
+        tot += row_tot;
+
+        fout.write((char*)swap.data(), swap.size());
+
+        memmove(buf.data(), buf.data()+offset, buf.size()-offset);
+        offset = buf.size()-offset;
+
+        if (!fout)
+            throw runtime_error("Error writing to output file");
+
+        const float proc = float(irow)/nrows;
+        if (proc>frac)
+        {
+            const double elep = Time().UnixTime()-start.UnixTime();
+            cout << "\r" << setprecision(0) << setw(3) << 100*proc << "% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s out:" << tot/1000000/elep << "MB/s" << flush;
+            frac += 0.01;
+        }
+    }
+
+    const double elep = Time().UnixTime()-start.UnixTime();
+    cout << setprecision(0) << "\r100% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s out:" << tot/1000000/elep << "MB/s" << endl;
+
+    return 0;
+}
+
+int main(int argc, const char **argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+    const bool decomp = conf.Get<bool>("decompress");
+
+    const string ifile = conf.Get<string>("in");
+    const string ofile = conf.Has("out") ? conf.Get<string>("out") : ReplaceExt(ifile, decomp);
+
+    return decomp ? Decompress(ifile, ofile) : Compress(ifile, ofile);
+
+    /*
+    // reading and writing files which just contain the binary data
+    // For simplicity I assume ROI=300
+
+    ifstream finx( "20130117_082.fits.pu");
+    ofstream foutx("20130117_082.fits.puz");
+
+    while (1)
+    {
+        string str;
+        str.resize(432000*2);
+
+        finx.read((char*)str.c_str(), 432000*2);
+        if (!finx)
+            break;
+
+        // Preprocess the data, e.g. subtract median pixelwise
+        for (int i=0; i<1440; i++)
+        {
+            int16_t *chunk = (int16_t*)str.c_str()+i*300;
+            sort(chunk, chunk+300);
+
+            int16_t med = chunk[149];
+
+            for (int j=0; j<300; j++)
+                chunk[j] -= med;
+        }
+
+        // do huffman encoding on shorts
+        string buf;
+        int len = huffmans_encode(buf, (uint16_t*)str.c_str(), 432000);
+
+        // if the result is smaller than the original data write
+        // the result, otherwise the original data
+        if (buf.size()<432000*2)
+            foutx.write(buf.c_str(), buf.size());
+        else
+            foutx.write(str.c_str(), 432000);
+    }
+
+    return 0;
+    */
+}
Index: branches/FACT++_part_filenames/start.sh
===================================================================
--- branches/FACT++_part_filenames/start.sh	(revision 18732)
+++ branches/FACT++_part_filenames/start.sh	(revision 18732)
@@ -0,0 +1,86 @@
+#!/bin/bash --login
+
+cd `dirname "$0"`
+
+CALL=`basename "$0"`
+LINK=`readlink "$0"`
+
+if [ -n "$LINK" -a $CALL != 'start.sh' ]; then
+   DIR=`dirname "$LINK"`
+   PRG=$DIR/$CALL
+   CMD=$PRG" "$*
+else
+   DIR=`dirname "$0"`
+   PRG=$DIR/$1
+   CMD=$DIR/$*
+fi
+
+if [ "$CALL" = "fadctrl" ]; then
+   NICE="ionice -c 2 -n 0"
+fi
+
+# echo DIR=$DIR
+# echo PRG=$PRG
+# echo CMD=$CMD
+
+while [ true ]; do
+
+   reset
+
+   if [ -n "$RC" ]; then
+      echo LAST RETURN CODE=$RC [`date -u`]
+   fi
+
+   echo COMMAND=$NICE $CMD
+   echo
+
+   if [ ! -x $PRG ]; then
+      echo $1 not available... waiting 5s.
+      sleep 5
+      continue
+   fi
+
+   if [ -e $DIR/compiling.lock ]; then
+      echo Compilation in progress... waiting 1s.
+      sleep 1
+      continue
+   fi
+
+   $NICE $CMD
+   RC=$?
+
+   echo RETURN CODE=$RC [`date -u`]
+   echo
+
+   # HUP    1  exit
+   # INT    2  exit
+   # QUIT   3  core
+   # ILL    4  core
+   # TRAP   5  core
+   # ABRT   6  core
+   # FPE    8  core
+   # KILL   9  exit
+   # SEGV  11  core
+   # PIPE  13  exit
+   # ALRM  14  exit
+   # TERM  15  exit
+
+   # 0    (User requested exit from the command line)
+   # 1-   (Eval options failed, return code of StateMachineImp::Run)
+   # 126  (exit requested from recompile.sh)
+   # 127  (problem with option parsing or no program start, like --help)
+   # 128  (exit(128))
+   # 134  (ABRT, double corruption, abort())
+   # 139  (SEGV, 128+11)
+   # 255  (exception)
+
+   if [ $RC -eq 126 ]; then
+      continue
+   fi
+
+   # RC<=128 || RC==KILL || RC=TERM || RC=exception
+   if [ $RC -le 128 ] || [ $RC -eq 137 ] || [ $RC -eq 143 ] || [ $RC -eq 255 ] ]; then
+      exit
+   fi
+
+done
Index: branches/FACT++_part_filenames/www/schedule/config.template.php
===================================================================
--- branches/FACT++_part_filenames/www/schedule/config.template.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/config.template.php	(revision 18732)
@@ -0,0 +1,9 @@
+<?PHP
+
+$path = "/home/fact/FACT++";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/FACT++_part_filenames/www/schedule/index.css
===================================================================
--- branches/FACT++_part_filenames/www/schedule/index.css	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/index.css	(revision 18732)
@@ -0,0 +1,550 @@
+.DynarchCalendar-titleCont
+{
+    width:100%;
+}
+
+.highlight
+{
+    color: #0A0 !important;
+    font-weight: bold;
+}
+
+.selected
+{
+    border:1px solid;
+}
+
+.overlay
+{
+    background-color: rgba(0, 0, 0, 0.5);
+    color: #333;
+    position: fixed;
+    z-index: 400;
+    width: 100%;
+    height: 100%;
+    top: 0px;
+    left: 0px;
+    display:none;
+    overflow:auto;
+    border:1px solid gray;
+}
+
+.close
+{
+    width: 13px;
+    height: 18px;
+    background-color: blue;
+    color:black;
+}
+
+/* This is for firefox */
+[disabled] {
+  color:#444;
+}
+/*
+table.myTable
+{
+	width:100%;
+}
+
+.myTable td
+{
+	border: solid 1px #cecece;
+}
+
+.myTable td.first
+{
+	width:190px;
+}
+
+.myTable td.last
+{
+	width:50px;
+}
+*/
+*{
+    margin: 0px;
+    padding: 0px;
+}
+
+img, fieldset
+{
+    padding: 0px;
+    border: none;
+    margin: 0px;
+    line-height: 0px;
+}
+
+a
+{
+    color: #ffffff;
+    text-decoration: none;
+    font-weight: bold;
+}
+
+a:hover
+{
+    text-decoration: none;
+    color: #0870d7;
+}
+/*
+h2
+{
+    font: 24px Arial, Helvetica, sans-serif;
+    font-weight: normal;
+    color: #0870d7;
+    padding: 30px 0px 10px 40px;
+}*/
+
+/*h3{
+	background: url(images/title.png) no-repeat top left;
+	font: 18px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	height: 43px;
+	width: 265px;
+	text-align: center;
+	line-height: 43px;
+	font-weight: normal;
+	
+}*/
+
+body
+{
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 18px;
+    color: #ffffff;
+    background: #000 url(images/bg.jpg) no-repeat center 87px;
+	
+}
+
+#bg2
+{
+    background: url(images/bg2.png) repeat-x top;
+    height: 87px;
+    position: absolute;
+    width: 100%;
+}
+
+#wrapper1
+{
+    position: relative;
+    width:900px;
+    margin: 0 auto;
+}
+
+.clear
+{
+    clear: both;
+}
+
+/*
+	menu
+*/
+
+#header2
+{
+    height: 91px;
+    width: 900px;
+    margin: 0 93px;
+}
+
+#header2 ul
+{
+    padding-left: 0px;
+    list-style: none;
+    width: 800px;
+    margin: 0 auto;
+}
+
+#header2 ul li li2
+{
+    display: inline;
+}
+
+#header2 ul li a
+{
+    font: 24px  Arial, Helvetica, sans-serif;
+    color: #ffffff;
+    text-align: center;
+    font-weight: normal;
+    text-decoration: none;
+    display: block;
+    float: left;
+    width: 620px;
+    height: 120px;
+    line-height: 91px;
+    font-family:broadway;
+    font-size: 3em;
+}
+
+#header2 ul li2
+{
+    font-size: .6em;
+    font-family:broadway;
+    color: #ffffff;
+    width: 620px;
+    height: 120px;
+    line-height: 91px;
+}
+
+#header2 ul li li2 a:hover,  #menu ul li .active
+{
+    color: #FF0;
+}
+
+
+/*logo*/
+/*
+#logo{
+	width: 1032px;
+	margin: 0 auto;
+	height: 112px;
+	padding-top: 50px;
+	padding-left: 60px;
+	
+}
+
+#logo h1 a{
+	font: 14px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#logo a small{
+	font: 12px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+#prew_img{
+	background: url(images/img_prew.png) no-repeat top left;
+	height: 297px;
+	width: 1054px;
+	margin: 0 auto;
+}
+*/
+
+/*
+	Content
+*/
+#content_bg_top
+{
+    background: url(images/content_top.png) no-repeat top left;
+    height: 10px;
+}
+/*
+#content_bg_bot
+{
+    background: url(images/content_bot.png) no-repeat bottom left;
+    height: 10px;
+}*/
+
+#content_box
+{
+    background: url(images/content_repeat.png);
+    padding:0px 12px;
+}
+
+/*
+header
+*/
+/*
+#header {
+	background: url(images/header.jpg) no-repeat left top;
+	height: 326px;
+	width: 876px;
+}
+*/
+
+/*
+download_box
+*/
+/*
+#download_box{
+	
+	width: 876px;
+	height: 112px;
+	
+}
+
+#download_box p {
+	color: #303030;
+	font: 12px Arial, Helvetica, sans-serif;
+	font-weight: normal;
+}
+#download_box p a {
+	color: #303030;
+	font: 12px Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	
+}
+#download_box p a:hover {
+	color: #0870d7;
+}
+#download_left {
+	padding: 25px 0px 10px 25px;
+	float:left;
+	width: 638px;
+}
+
+#download_right a{
+	font: 18px Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	text-align: center;
+	line-height: 56px;
+	width: 195px;
+	height: 56px;
+	text-transform: uppercase;
+	background: url(images/download_button.png) no-repeat top left;
+	display: block;
+	float: right;
+	margin: 38px 15px 0px 0px;
+}
+
+#download_right a:hover{
+		color: #ffffff;
+}
+*/
+/*
+column_box
+*/
+#column_box
+{
+    padding-left: 15px;
+    padding-bottom: 30px;
+}
+
+#column_box a
+{
+    color: #666666;
+}
+
+#column_box a:hover
+{
+    color: #ffffff;
+}
+
+#column_box p
+{
+    color: #666666;
+    padding-top: 5px;
+}
+
+#column1
+{
+    float: left;
+    width: 280px;
+}
+
+#column2
+{
+    float: left;
+    width: 260px;
+}
+
+#column3
+{
+    float: left;
+    width: 580px;
+}
+
+#column2
+{
+    margin: 0px 40px;
+}
+/*
+	footer_top
+*/
+
+
+
+/*
+#footer_top{
+	padding-top: 35px;	
+}
+
+
+#footer_top a{
+	color: #ffffff;
+	font-weight: bold;
+}
+
+#footer_top a:hover{
+	color: #0870d7;
+}
+
+#footer_top p{
+	color: #ffffff;
+	line-height: 20px;
+}
+
+#footer_column1, #footer_column2, #footer_column3{
+	width: 265px;
+	float: left;
+}
+
+.footer_text{
+	background: url(images/footer_top_border.png) no-repeat top left;
+	padding: 10px 0px 10px 20px;
+}
+
+#footer_column2{
+	padding: 0px 38px 0px 31px;
+}
+
+.foot_pad{
+    padding-left: 45px;
+	padding-top: 10px;
+}
+
+
+.ls{
+    list-style: none;
+    padding-left: 0px;
+}
+
+.ls li{
+    background: url(images/ls1.gif) no-repeat 0px 6px;
+    margin-bottom: 8px;
+    padding-left: 15px;
+}
+*/
+/*
+	footer_bot
+*/
+
+#footer_bot
+{
+    padding: 25px;
+    text-align: center;
+}
+
+.button
+{
+    cursor:pointer;
+    border-top: 1px solid #96d1f8;
+    background: #65a9d7;
+    background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+    background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+    background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+    background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+    background: -o-linear-gradient(top, #3e779d, #65a9d7);
+    padding: 3px 6px;
+    -webkit-border-radius: 6px;
+    -moz-border-radius: 6px;
+    border-radius: 6px;
+    -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+    -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+    box-shadow: rgba(0,0,0,1) 0 1px 0;
+    text-shadow: rgba(0,0,0,.4) 0 1px 0;
+    color: white;
+    font-size: 14px;
+    font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+    text-decoration: none;
+    vertical-align: middle;
+}
+
+.button:hover
+{
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+}
+
+.button:active
+{
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+}
+
+#button
+{
+   border-top: 1px solid #96d1f8;
+   background: #65a9d7;
+   background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+   background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+   background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+   background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+   background: -o-linear-gradient(top, #3e779d, #65a9d7);
+   padding: 3px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: white;
+   font-size: 12px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+}
+
+#button:hover
+{
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+}
+
+#button:active
+{
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+}
+/*
+ .buttonc {
+	cursor:pointer;
+   border-top: 1px solid #96d1f8;
+  
+   padding: -1px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: black;
+   font-size: 14px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+
+   #buttonc {
+   border-top: 1px solid #96d1f8;
+   background: #65a9d7;
+   background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+   background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+   background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+   background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+   background: -o-linear-gradient(top, #3e779d, #65a9d7);
+   padding: 3px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: white;
+   font-size: 12px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+#buttonc:hover {
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+   }
+#buttonc:active {
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+   }
+ */
Index: branches/FACT++_part_filenames/www/schedule/index.html
===================================================================
--- branches/FACT++_part_filenames/www/schedule/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/index.html	(revision 18732)
@@ -0,0 +1,152 @@
+<!DOCTYLE HTML>
+<html>
+<head>
+   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+   <title>FACT Scheduling</title>
+   <meta name="keywords" content="" />
+   <meta name="description" content="" />
+
+   <script src="jquery-2.1.0.min.js"></script>
+   <script src="jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.js"></script>
+
+   <script src="JSCal2-1.8/src/js/jscal2.js"></script>
+   <script src="JSCal2-1.8/src/js/lang/en.js"></script>
+
+   <script src="index.js"></script>
+
+   <link rel="stylesheet" href="jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css"/>
+   <link rel="stylesheet" href="index.css" media="screen" />
+
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/jscal2.css" />
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/border-radius.css" />
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/steel/steel.css" />
+</head>
+
+<body style="background-color: #000;">
+<div id="wait" style="background:rgba(0,0,0,0.75) url('images/helium-anim-trans.gif') no-repeat center center;z-index:400;position:fixed;top:0px;left:0px;width:100%;height:100%;text-align:center;vertical-align:middle;"></div>
+<div id="bg2"></div>
+<div id="wrapper1">
+   <div id="header2">
+      <ul>
+         <li><a href="http://www.fact-project.org">FACT <li2>OBSERVATION SCHEDULING</li2></a></li>
+      </ul>
+      <div class="clear"></div>
+   </div>	
+   <div id="content_bg_top"></div>
+   <div id="content_box">
+      <div id="column_box">
+         <div id="column1">
+	    <div id="calendar">
+      	       <div id="cont"></div>
+            </div>
+	 </div>
+	 <div id="column3"></div>
+         <div class="clear"></div>
+      </div>
+      <div style="width:100%;">
+         <table width="100%">
+            <tr>
+               <td style="font-weight:bold;">TIME:&nbsp;&nbsp;</td>
+               <td id="clock" style="white-space:nowrap; font-size:16px; font-weight:bold; color:#FFFF00"></td>
+               <td style="text-align:right;width:100%;">
+                  <input type="button" class="button"  id="load" value="Load Night"  title="Click to load given night"/>
+                  <input type="date"                   id="loaddate"                 title="Date to load a schedule from."/>&nbsp;&nbsp;
+                  <input type="button" class="button"  id="save" value="SAVE"        title="Click to save"/>
+                  <input type="date"   disabled="true" readonly="true" id="savedate" title="Date to which the schedule is saved."/>&nbsp;&nbsp;
+                  <input type="button" class="button"  id="help" value="HELP"        title="Click to view help" align="left"/>
+               </td>
+            </tr>
+         </table>
+      </div>
+      <div style="border:2px solid white; width:100%;">
+         <table width="100%" id="TableHolder" >
+	    <tr>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%; font-weight:bold;" align="center"><div id="time" style="white-space:nowrap;"></div></td>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%;">Measurement</td>
+               <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%;">Source</td>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; ">Value</td>
+	    </tr>
+	 </table>
+      </div>
+	
+      <div id="footer_bot">
+         <p>&copy; 2014 FACT Project, Implemented by Western Mindanao State University (<strong><a href="http://www.wmsu.edu.ph">WMSU</a>, Philippines</strong>)</p>
+      </div>
+   </div>
+   <div id="debug"></div>
+</div>
+<div id="Overlay" name="Overlay" class="overlay">
+    <div style="padding-top:25px;padding-bottom:15px;padding-left:25%;padding-right:25%;">
+    <div style="background-color:black;color:white;padding:15px;">
+    <div style="color:white;small-caps;"><span id="close" class="close">X</span> To close click here or press Esc.</div>
+    <BR>
+    <!--<hr><br>-->
+    <H1>HELP</H1>
+    <div style="font-size:17px;padding-top:5px;font-family:'Times New Roman';text-align:justify;">
+    
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Loading a schedule</H3>
+    To load a schedule click on the corresponding date in the calendar. If
+    you click on <B>SAVE</B> the schedule will be saved to the date shown in the box close to the
+    <B>SAVE</B> button. It is always identical with the last calender date you clicked.
+    <p>
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Remarks about saving</H3>
+    If saving fails, an error message is displayed. If it was supposed to be successful,
+    the schedule of the selected date is newly loaded and displayed.
+    <p>
+    
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Replacing a schedule</H3>
+    You can overwrite a schedule with the schedule from a different date by entering the
+    date in the box close to <B>Load Night</B> and either pressing Enter or the <B>Load Night</B>
+    button.
+    <p>
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Disabled entries</H3>
+    Entries which are at the time the schedule is loaded already in the past, are 
+    disabled and cannot be changed. This is because they might already have been processed
+    by the scheduler and are currently executed.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Color of times</H3>
+    For the current night, entries which are before the current time are
+    displayed in red, entries which are later, are displayed in green. Colors are updated
+    interactively.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Scheduling</H3>
+    Note that the last entry display in red will most probably be the first one
+    executed by the scheduler. If the scheduler (Main.js) is running, it will just replace
+    the next entry in the schedule and be executed completely. If the scheduler (Main.js) is not
+    running, still the last red entry will be the first one to be executed, but since
+    it is the first one executed by the script, the script assumes that it failed and
+    was restarted. Therefore, only the last of its observations (usually <I>data</I>)
+    is executed.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Suspend</H3>
+    If a <I>suspend</I> is scheduled, all further observations are discarded. The
+    <I>suspend</I> itself is just a <I>sleep</I>. If very soon, a new observation
+    will be started, it is best to schedule the <I>suspend</I> before it, otherwise
+    the observation might get started before the <I>suspend</I> is executed. Note
+    that a suspend does <b>not</b> interrupt the current observation, but will work
+    as a normal entry, i.e. the previous measurement (usually a <i>data</i> run) will
+    be finished before the suspend is executed.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Resume</H3>
+    If a <I>resume</I> is scheduled, it has the same effect as if the preceeding
+    <i>suspend</i> was removed. That effectively means that the last observation
+    which was scheduled before the <i>resume</i> will be executed as it if just became
+    valid. Consequently, if it is scheduled close to the change of observation, 
+    it makes sense to schedule it after this observation, to avoid that the previous
+    observation becomes effective.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Options</H3>
+    Options are ecoded as JSON object (search google for details). The meaning of
+    their properties is defined by the task to be executed. The starting and
+    closing brace must be omitted. Note that for a correct JSON object, the property
+    names must be enclosed in double quotation marks ("...").
+    </div>
+    </div>
+    </div>
+</div>
+
+</body>
+
+</html>
Index: branches/FACT++_part_filenames/www/schedule/index.js
===================================================================
--- branches/FACT++_part_filenames/www/schedule/index.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/index.js	(revision 18732)
@@ -0,0 +1,782 @@
+'use strict';
+
+function pad(n)
+{
+    return (n<10) ? '0' + n : n;
+}
+
+function getYMD(d)
+{
+    return d.getUTCFullYear()+'-'+pad(d.getUTCMonth()+1)+'-'+pad(d.getUTCDate());
+}
+
+function updateClock()
+{
+    var now = new Date();
+    var s = getYMD(now)+' '+pad(now.getUTCHours())+':'+pad(now.getUTCMinutes())+' UTC';
+    $('#clock').html(s);
+
+    var table = document.getElementById("TableHolder");
+
+    if (!table.isTonight)
+        return;
+
+    var rows = table.childNodes;
+
+    for (var i=2; i<rows.length; i++)
+    {
+        var el = rows[i].firstChild.firstChild;
+
+        // FIXME: replace by classes?
+        if (!el.valueAsDate)
+        {
+//            el.setAttribute("style", "color:#000000");
+            continue;
+        }
+
+        var t0 = now.getTime()%86400000;
+        var t1 = el.valueAsDate%86400000;
+        if (t1<43200000)
+            t1 += 86400000;
+
+        el.setAttribute("style", t1>t0 ? "color:darkgreen" : "color:darkred");
+    }
+};
+
+function addEmptyRow(prev, start)
+{
+    var empty =
+    {
+        fStart: "0000/00/00 "+(start?start:""),
+        fMeasurementTypeKey:0,
+        fMeasurementID:0,
+        fSourceKEY:0,
+    };
+
+    addRow(empty, false, prev);
+}
+
+function debug(txt)
+{
+    var dbg = document.getElementById("debug");
+    dbg.appendChild(document.createTextNode(txt));
+    dbg.appendChild(document.createElement("br"));
+}
+
+function addRow(row, disabled, prev)
+{
+    var table = document.getElementById("TableHolder");
+
+    var sources = table.sources;
+    var measurements = table.measurements;
+
+    var tr = document.createElement("tr");
+    tr.setAttribute("width", "100%");
+
+    if (!prev)
+        table.appendChild(tr);
+    else
+        table.insertBefore(tr, prev.nextSibling);
+
+    // ---------- column 1 ----------
+
+    var input1t = document.createElement("input");
+    input1t.setAttribute("type","time");
+    input1t.setAttribute("size","10");
+    input1t.setAttribute("autofocus","true");
+    if (row.fMeasurementID!=0)
+        input1t.setAttribute("hidden", "true");
+    input1t.setAttribute("value", row.fStart.substr(11));
+    if (disabled)
+        input1t.setAttribute("disabled", "true");
+
+    /*
+    input1t.onblur = function()
+    {
+        var prevRow = tr.previousSibling;
+        while (prevRow && prevRow.firstChild.firstChild.hidden)
+            prevRow = prevRow.previousSibling;
+
+        var nextRow = tr.nextSibling;
+        while (nextRow && nextRow.firstChild.firstChild.hidden)
+            nextRow = nextRow.nextSibling;
+
+        var prevEl = prevRow ? prevRow.firstChild : undefined;
+        var nextEl = nextRow ? nextRow.firstChild : undefined;
+
+        var prevTime = "";
+        if (prevEl && prevEl.firstChild.constructor.name=="HTMLInputElement")
+            prevTime = prevEl.firstChild.value;
+
+        var nextTime = "";
+        if (nextEl && nextEl.firstChild.constructor.name=="HTMLInputElement")
+            nextTime = nextEl.firstChild.value;
+
+        alert(prevTime+"/"+input1t.value+"/"+nextTime);
+    }*/
+
+    var td1 = document.createElement("td");
+    td1.setAttribute("style","white-space:nowrap;padding-left:4px;padding-right:2px;");
+    td1.setAttribute("align","center");
+    td1.appendChild(input1t);
+
+    // Check if this is the transition from disabled to enabled.
+    // In this case enable all previous [+]
+    if (tr.previousSibling && tr.previousSibling.firstChild.firstChild.disabled && !disabled)
+    {
+        var prevRow = tr.previousSibling;
+
+        var tm = prevRow.firstChild.firstChild.value;
+        while (1)
+        {
+            prevRow.firstChild.childNodes[1].removeAttribute("disabled");
+            prevRow = prevRow.previousSibling;
+            if (prevRow.firstChild.firstChild.value!=tm)
+                break;
+        }
+    }
+
+    var input1p = document.createElement("input");
+    input1p.setAttribute("style","width:20px");
+    input1p.setAttribute("type","button");
+    input1p.setAttribute("value","+");
+    if (row.fMeasurementID!=0)
+        input1p.setAttribute("hidden", "true");
+    // FIXME: Enable if this is the last "+" in tonight
+    if (disabled && ! (table.isTonight && row.last))
+        input1p.setAttribute("disabled", "true");
+    input1p.onclick = function()
+    {
+        // FiXME: Do not allow deleting of last line
+        var nextRow = tr;
+        while (nextRow.nextSibling)
+        {
+            if (!nextRow.nextSibling.firstChild.firstChild.hidden)
+                break;
+
+            nextRow = nextRow.nextSibling;
+        }
+
+        addEmptyRow(nextRow, input1t.value);
+    }
+    td1.appendChild(input1p);
+
+    var input1m = document.createElement("input");
+    input1m.setAttribute("style","width:20px");
+    input1m.setAttribute("type","button");
+    input1m.setAttribute("value","-");
+    if (row.fMeasurementID!=0)
+        input1m.setAttribute("hidden", "true");
+    if (disabled)
+        input1m.setAttribute("disabled", "true");
+    input1m.setAttribute("data-toggle", "tooltip");
+    if (row.fScheduleID)
+        input1m.setAttribute("title", row.fScheduleID+" ["+row.fLastUpdate+"]");
+    input1m.onclick = function()
+    {
+        //if (table.childNodes.length==3)
+        //    return;
+
+        var nextRow = tr.nextSibling;
+        table.removeChild(tr);
+
+        while (nextRow)
+        {
+            var inp = nextRow.firstChild.firstChild;
+            if (!inp.hidden)
+                break;
+
+            var xx = nextRow;
+            nextRow = nextRow.nextSibling;
+            table.removeChild(xx);
+        }
+
+        if (table.childNodes.length==2)
+            addEmptyRow();
+    }
+    td1.appendChild(input1m);
+
+    tr.appendChild(td1);
+
+    // ---------- column 2 -----------
+
+    var select2 = document.createElement("select");
+    // select2.setAttribute("style", "width:100px");
+    select2.setAttribute("class", "measurement");
+    if (disabled)
+        select2.setAttribute("disabled", "true");
+
+    for (var i=0; i<measurements.length; i++)
+    {
+        var option = document.createElement("option");
+        select2.appendChild(option);
+        option.setAttribute('value', measurements[i].key);
+        option.appendChild(document.createTextNode(measurements[i].val));
+        if (row.fMeasurementTypeKey==measurements[i].key)
+            select2.selectedIndex = i;
+    }
+
+    var td2 = document.createElement("td");
+    td2.setAttribute("style","white-space:nowrap;padding-left:2px;padding-right:2px;");
+    td2.setAttribute("align","center");
+    td2.appendChild(select2);
+
+    var input2 = document.createElement("input");
+    input2.setAttribute("type","button");
+    input2.setAttribute("value","+");
+    input2.setAttribute("style","width:20px");
+    if (disabled)
+        input2.setAttribute("disabled", "true");
+    input2.onclick = function()
+    {
+        var empty =
+        {
+            fStart: row.fStart,
+            fMeasurementTypeKey:0,
+            fMeasurementID:-1,
+            fSourceKEY:0,
+        };
+
+        addRow(empty, false, tr);
+    }
+    td2.appendChild(input2);
+
+    input2 = document.createElement("input");
+    input2.setAttribute("type","button");
+    input2.setAttribute("style","width:20px");
+    input2.setAttribute("value","-");
+    if (disabled)
+        input2.setAttribute("disabled", "true");
+    input2.onclick = function()
+    {
+        //if (table.childNodes.length==3)
+        //    return;
+
+        if (!tr.firstChild.childNodes[0].hidden)
+        {
+            var tm = tr.firstChild.childNodes[0].value;
+
+            var nextRow = tr.nextSibling;
+            if (nextRow)
+            {
+                var e = nextRow.firstChild.childNodes;
+                e[0].removeAttribute("hidden");
+                e[1].removeAttribute("hidden");
+                e[2].removeAttribute("hidden");
+                e[0].value = tm;
+            }
+        }
+        table.removeChild(tr);
+
+        if (table.childNodes.length==2)
+            addEmptyRow();
+    }
+    td2.appendChild(input2);
+
+    tr.appendChild(td2);
+
+    // ---------- column 3 -----------
+
+    var select3 = document.createElement("select");
+    //select3.setAttribute("style", "width:100px");
+    select3.setAttribute("class", "sources");
+    if (disabled)
+        select3.setAttribute("disabled", "true");
+
+    for (var i=0; i<sources.length; i++)
+    {
+        var option = document.createElement("option");
+        select3.appendChild(option);
+        option.setAttribute('value', sources[i].key);
+        option.appendChild(document.createTextNode(sources[i].val));
+        if (row.fSourceKey==sources[i].key)
+            select3.selectedIndex = i;
+    }
+
+    var td3 = document.createElement("td");
+    td3.setAttribute("style","white-space:nowrap;padding-left:2px;padding-right:2px;");
+    td3.setAttribute("align","center");
+    td3.appendChild(select3);
+
+    tr.appendChild(td3);
+
+    // ---------- column 4 ------------
+
+    var input4 = document.createElement("input");
+    input4.setAttribute("type","text");
+    input4.setAttribute("style","width:100%");
+    input4.setAttribute("placeholder","JSON object");
+    if (row.fData)
+        input4.setAttribute("value",row.fData);
+    if (disabled)
+        input4.setAttribute("disabled","true");
+
+    var td4 = document.createElement("td");
+    td4.setAttribute("style", "padding-left:2px;padding-right:4px;");
+    td4.setAttribute("align","center");
+    td4.appendChild(input4);
+
+    tr.appendChild(td4);
+}
+
+function setupCalendar(result, date)
+{
+    debug("cal="+date);
+
+    date = date.replace('-','');
+    date = date.replace('-','');
+
+    var dates = { };
+
+    for (var i=0; i<result.length; i++)
+    {
+        result[i].d = result[i].d.replace('-','');
+        result[i].d = result[i].d.replace('-','');
+
+        dates[result[i].d] = { klass: "highlight", tooltip: "Schedule set." };
+    }
+
+    dates[date] = { klass: "selected", tooltip: "Currently selected." };
+
+    function getDateInfo(date, wantsClassName)
+    {
+        var as_number = Calendar.dateToInt(date);
+        return dates[as_number];
+    };
+
+    var cont = document.getElementById("cont");
+    while (cont.firstChild)
+        cont.removeChild(cont.firstChild);
+
+    var setup =
+    {
+        cont: "cont",
+        selectionType: Calendar.SEL_MULTIPLE,
+        bottomBar: false,
+        date:parseInt(date),
+        dateInfo:getDateInfo
+    };
+
+    debug("cal.date="+date);
+
+    var cal = Calendar.setup(setup); 
+    cal.addEventListener("onSelect", function(){ loadDay(this.selection.print("%Y-%m-%d")); });
+}
+
+
+function onDataReceived(result)
+{
+    var table = document.getElementById("TableHolder");
+    if (!table.currentDay)
+        return;
+
+    // Split the results of the different queries
+    // They are separated by newlines
+    var data = result.split('\\n');
+    if (data.length<5)
+    {
+        alert("Malformed result returned["+data.length+"]:\n"+data[data.length-1]);
+        return;
+    }
+
+    debug("table.currentDay="+table.currentDay);
+
+    // Decode the results into variables
+
+    // Does that work in all browsers, or do we need "YYYY-MM-DDTHH:MM:SSZ" ?
+    //data[0] = data[0].replace('-', '/');
+    //data[0] = data[0].replace('-', '/');
+
+    // year, month, day, hours, minutes, seconds, milliseconds
+    var tonight      = new String(table.currentDay);
+    var day          = new Date(table.currentDay);
+    var dates        = JSON.parse(data[0]);
+    var sources      = JSON.parse(data[1]);
+    var measurements = JSON.parse(data[2]);
+    var schedule     = JSON.parse(data[3]);
+
+    if (data[4])
+        alert(data[4]);
+
+    var ld = document.getElementById("loaddate");
+    ld.setAttribute("size","10");
+
+    ld.value = table.prevDay;
+
+    // First update the calender
+    setupCalendar(dates, tonight);
+
+    // Add a fake source to the list of sources to allow 'deselection' of source
+    sources.splice(0, 0, { key: 0, val: "---" });
+
+    table.sources = sources;
+    table.measurements = measurements;
+
+    // Enable or disable the SAVE and LoadPrev button
+    var save  = document.getElementById("save");
+    var load  = document.getElementById("load");
+    var ldate = document.getElementById("loaddate");
+
+    if (day.getTime()+36*3600*1000>table.loadTime)
+    {
+        save.removeAttribute("disabled");
+        load.removeAttribute("disabled");
+        ldate.removeAttribute("disabled");
+
+
+        // If this is a dayin the future, but no schedule is in the db,
+        // create an empty one
+        if (schedule.length==0)
+            addEmptyRow();
+    }
+    else
+    {
+        save.setAttribute("disabled", "true");
+        load.setAttribute("disabled", "true");
+        ldate.setAttribute("disabled", "true");
+    }
+
+    // Update the header of the date/time column
+    var tm = document.getElementById("time");
+    while (tm.firstChild)
+        tm.removeChild(tm.firstChild);
+
+    var nxt = new Date(day.getTime()+24*3600*1000);
+
+    var d1 = pad(day.getUTCMonth()+1)+'-'+pad(day.getUTCDate());
+    var d2 = pad(nxt.getUTCMonth()+1)+'-'+pad(nxt.getUTCDate());
+
+    tm.appendChild(document.createTextNode(d1+ " / "+d2));
+
+    var offset = new Date(table.loadedDay).getTime();
+
+    // other day loaded and tonight
+
+    if (!table.isTonight || !table.loadedDay)
+        table.cutTime = "12:00:00";
+
+    // Now loop over all rows and add them one by one to the table
+    for (var i=0; i<schedule.length; i++)
+    {
+        schedule[i].last   = schedule[schedule.length-1].fStart==schedule[i].fStart;
+        schedule[i].fStart = schedule[i].fStart.replace('-', '/');
+        schedule[i].fStart = schedule[i].fStart.replace('-', '/');
+
+        var stamp = new Date(schedule[i].fStart+" UTC");
+
+        if (table.loadedDay)
+            stamp = new Date(stamp.getTime()+day.getTime()-offset);
+
+        var disabled = stamp.getTime()<table.loadTime && !table.loadedDay;
+        if (disabled)
+            table.cutTime = pad(stamp.getUTCHours())+":"+pad(stamp.getUTCMinutes())+":"+pad(stamp.getUTCSeconds());
+
+        addRow(schedule[i], disabled);
+    }
+
+    debug("currentDay="+table.currentDay);
+    debug("nextDay="+table.nextDay);
+    debug("isTonight="+table.isTonight);
+    debug("cutTime="+table.cutTime);
+}
+
+function loadDay(date, dateToLoad)
+{
+    // Clean elements from table before new elements are added
+    var table = document.getElementById("TableHolder");
+
+    // In very rare cases (fast and frequent clicks on a date with a long schedule)
+    // the event listened of the calender returns a wrong value
+    if (new String(date).length!=10)
+        return;
+
+    var dbg = document.getElementById("debug");
+    while (dbg.firstChild)
+        dbg.removeChild(dbg.firstChild);
+
+    debug("loadDay="+date+"|"+dateToLoad);
+
+    var count = 0;
+
+    var cut;
+    while (table.childNodes.length>2)
+    {
+        var cols = table.lastChild.childNodes;
+        var time = cols[0].firstChild;
+
+        if (time.disabled)
+        {
+            debug("disabled="+time.value);
+
+            if (dateToLoad)
+            {
+                cut = time.value;
+                break;
+            }
+        }
+
+        count++;
+        table.removeChild(table.lastChild);
+    }
+
+    debug(count+" lines removed ");
+
+    document.getElementById("savedate").value = date;
+
+    // it helps to know if this is tonight or not
+    var now   = new Date();
+    var day   = new Date(date);
+    var night = getYMD(new Date(now.getTime()-12*3600*1000));
+
+    table.isTonight  = date==night;
+    table.currentDay = date;
+    table.loadedDay  = dateToLoad;
+    table.loadTime   = now.getTime();
+
+    if (!table.isTonight || !table.loadedDay)
+        table.cutTime = undefined;
+
+    // remember the currently displayed day (FIXME: Move to table property?)
+    table.prevDay = getYMD(new Date(day.getTime()-24*3600*1000));
+    table.nextDay = getYMD(new Date(day.getTime()+24*3600*1000));
+
+    debug("day="+date+"|"+date.length);
+    debug("dayToLoad="+table.loadedDay);
+    debug("cut="+cut);
+
+    var data = "n="+(dateToLoad?dateToLoad:date);
+    if (cut && (!table.isTonight || table.loadedDay))
+        data += "&t="+cut;
+
+    debug("data="+data);
+
+    // request data from the datanbase and on reception, display the data
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "load.php",
+        data:    data,
+        success: onDataReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[0] - Request failed!"); else alert("ERROR[0] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onReady()
+{
+     if (location.href.search('debug')==-1)
+        $("#debug").hide();
+
+    /*---------------------------------------------------------------------------------------------
+     Initialize jQuery datapicker (type='date' not supported by firefox)
+     ----------------------------------------------------------------------------------------------*/
+
+     if ($('input').prop('type') != 'date' ) 
+     {
+        var date_opt =
+        {
+            dateFormat: 'yy-mm-dd',
+            showButtonPanel: true,
+            showOtherMonths: true,
+            selectOtherMonths: true,
+            autoSize: true,
+        }
+
+        $('[type="date"]').datepicker(date_opt);
+     }
+     
+    /*---------------------------------------------------------------------------------------------
+     Initialize jQuery tooltips
+     ----------------------------------------------------------------------------------------------*/
+
+     //$(document).ready(function(){$('[data-toggle="tooltip"]').tooltip();});
+     $('[data-toggle="tooltip"]').tooltip();
+
+    /*---------------------------------------------------------------------------------------------
+     Prevent any user interaction during AJAX requests
+     ----------------------------------------------------------------------------------------------*/
+
+    $(document).ajaxStart(function() { $('#wait').fadeIn(); }).ajaxStop(function() { $('#wait').fadeOut(200); });
+
+    /*---------------------------------------------------------------------------------------------
+     Check if a dedicated day was requested, if not start with the current day.
+     Load the data from the database and display the calendar and the data.
+     ----------------------------------------------------------------------------------------------*/
+
+    var reg = /^\?day=(20[123][0-9]-[01][0-9]-[0123][0-9])/;
+    var res = reg.exec(location.search);
+
+    var day;
+    if (!res)
+    {
+        var now = new Date();
+
+        if (now.getUTCHours()<12)
+            now = new Date(now.getTime()-12*3600*1000);
+
+        day = getYMD(now);
+    }
+    else
+        day = res[1];
+
+    loadDay(day);
+
+    /*---------------------------------------------------------------------------------------------
+     Start updating the clock
+     ----------------------------------------------------------------------------------------------*/
+
+    updateClock();
+    setInterval(updateClock, 1000);
+
+    /*---------------------------------------------------------------------------------------------
+     Loading of previous data. Get the previous date with existing data through PreviousData.php
+     Same Shedule.ph passed to load on the controls with extra parameter 'prev' to indicate that
+     data is from previous schedule.
+     ----------------------------------------------------------------------------------------------*/
+
+    // FIXME: Do not overwrite the disabled part of the schedule if it is TONIGHT!!!!
+
+    function onLoad()
+    {
+        var cd = document.getElementById("TableHolder");
+        var dt = document.getElementById("loaddate");
+        loadDay(cd.currentDay, dt.value);
+    }
+
+    $('#load').click(onLoad);
+    $('#loaddate').keypress(function(event) { if (event.which==13) { onLoad(); } event.preventDefault(); });
+
+    /*---------------------------------------------------------------------------------------------
+     Savng and updating of schedule. Data array is generated from the current table to be submitted
+     to saveSchedule.php for the execution of queries.
+     ----------------------------------------------------------------------------------------------*/
+
+    function onSaveClick()
+    {
+        var table = document.getElementById("TableHolder");
+
+        var rows = table.childNodes;
+
+        var schedule = [];
+
+        // cutTime is the last time of a measurement which is past
+        // and should not be updated. This assumes that all
+        // time values are sequential.
+        //var cutTime  = "12:00:00";
+        //var prevTime = new Date(currentDay+" 12:00:00");
+
+        // FIXME: Make sure dates are sequentiel
+
+        for (var i=2; i<rows.length; i++)
+        {
+            var cols = rows[i].childNodes;
+
+            var time     = cols[0].firstChild.value;
+            var measure  = cols[1].firstChild.value;
+            var source   = cols[2].firstChild.value;
+            var value    = cols[3].firstChild.value;
+            var hidden   = cols[0].firstChild.hidden;
+            var disabled = cols[0].firstChild.disabled;
+
+            if (!hidden && !time && rows.length!=3)
+            {
+                alert("ERROR - Invalid time fields detected.");
+                return;
+            }
+
+            /*
+            if (!hidden)
+            {
+                // This is just to check the times... theoretically,
+                // these times could be sent, so that the php does not
+                // have to do that again, or should the php check things
+                // to ensure that it cannot be hacked?
+                var t = time;
+                t = t.replace(':','');
+                t = t.replace(':','');
+
+                t = new Date(t<120000 ? currentDay+" "+time : nextDay+" "+time);
+
+                if (t.getTime()<prevTime.getTime())
+                {
+                    alert("Times not sequential... cannot save schedule.");
+                    return;
+                }
+
+                prevTime = t;
+            }
+
+            if (disabled)
+            {
+                // if (cutTime>time) // no time yet!
+                cutTime = time;
+                continue;
+            }*/
+
+            if (disabled)
+                continue;
+
+            if (hidden)
+                time = null;
+
+            schedule.push([ time, measure, source, value ]);
+        }
+
+        if (schedule.length==0)
+        {
+            alert("No active tasks - nothing to be saved.");
+            return;
+        }
+
+        //alert(table.isTonight+"/"+table.cutTime+"/"+schedule.length);
+
+        var data = "n="+table.currentDay+"&d="+JSON.stringify(schedule);
+        if (table.isTonight)
+            data += "&t="+table.cutTime;
+
+        $.ajax({
+           type:    "POST",
+           cache:   false,
+           url:     "save.php",
+           data:    data,
+           success: function(result) { if (result.length==0) { /*alert("Success.");*/ loadDay(table.currentDay); } else alert("ERROR - "+result); },
+           error:   function(xhr) { if (xhr.status==0) alert("ERROR[1] - Unauthorized!"); else alert("ERROR[1] - "+xhr.statusText+" ["+xhr.status+"]"); }
+        });
+    }
+
+    $('#save').click(onSaveClick);
+
+
+    function onHelp()
+    {
+        var ov  = $("#Overlay");
+        var pos = $("#help").offset();
+        //var doc = $(document);
+        ov.css({
+           left:   pos.left + 'px',
+           top:    pos.top + 'px',
+           width:  0,
+           height: 0
+        })
+        .show()
+        .animate({
+           left:   0,
+           top:    0,
+           width:  '100%',
+           height: '100%'
+        }, "slow");
+
+        event.preventDefault();
+    }
+
+    function onClose()
+    {
+        $("#Overlay").hide("slow");
+    }
+
+    $('#help').click(onHelp);
+    $(document).keydown(function(event) { if (event.which==27) { onClose(); event.preventDefault(); } });
+    $('#close').click(onClose);
+
+}
+
+$('document').ready(onReady);
Index: branches/FACT++_part_filenames/www/schedule/load.php
===================================================================
--- branches/FACT++_part_filenames/www/schedule/load.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/load.php	(revision 18732)
@@ -0,0 +1,63 @@
+<?php
+
+
+if (!isset($_POST['n']))
+   return header('HTTP/1.0 400 Syntax error.');
+
+// ================================================================
+//                       Database interaction
+// ================================================================
+
+function query($query)
+{
+   $sql = mysql_query($query);
+   if (!$sql)
+   	die(mysql_error());
+
+   $rows = array();
+   while($row = mysql_fetch_assoc($sql))
+      $rows[] = $row;
+
+   print(json_encode($rows).'\n');
+}
+
+// ----------------------------------------------------------------
+
+$cut = "";
+if (isset($_POST['t']))
+{
+    $cut = $_POST['n'].' '.$_POST['t'];
+
+    $d = new DateTime($cut);
+    if ($d->format("His")<120000)
+    {
+        $d->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+        $cut = $d->format("Y-m-d H:i:s");
+    }
+
+    $cut = " AND fStart>'".$cut."' ";
+}
+
+// ----------------------------------------------------------------
+
+require_once 'config.php';
+
+$db = mysql_connect($dbhost,$dbuser,$dbpass);
+if (!$db)
+   die(mysql_error());
+
+if (!mysql_select_db($dbname, $db))
+   die(mysql_error());
+
+/*mixed date_sunrise ( int $timestamp [, int $format = SUNFUNCS_RET_STRING [, float $latitude = ini_get("date.default_latitude") [, float $longitude = ini_get("date.default_longitude") [, float $zenith = ini_get("date.sunrise_zenith") [, float $gmt_offset = 0 ]]]]] )*/
+
+query("SELECT DISTINCT(DATE(ADDTIME(fStart, '-12:00'))) AS 'd' FROM Schedule");
+query("SELECT fSourceKEY AS 'key', fSourceName AS 'val' FROM Source WHERE fSourceTypeKEY=1");
+query("SELECT fMeasurementTypeKEY AS 'key', fMeasurementTypeName AS 'val' FROM MeasurementType");
+query("SELECT * FROM Schedule WHERE DATE(ADDTIME(fStart, '-12:00:00')) = '".$_POST['n']."'".$cut."ORDER BY fStart ASC, fMeasurementID ASC");
+
+//sleep(3);
+
+//print($test1."|".$test2."|".$test3."|SELECT * FROM Schedule WHERE DATE(ADDTIME(fStart, '-12:00:00')) = '".$_POST['day']."'".$cut."ORDER BY fScheduleID ASC, fMeasurementID ASC\n");
+
+?>
Index: branches/FACT++_part_filenames/www/schedule/save.php
===================================================================
--- branches/FACT++_part_filenames/www/schedule/save.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/schedule/save.php	(revision 18732)
@@ -0,0 +1,268 @@
+<?php
+
+if (!isset($_POST['n']) || !isset($_POST['d']))
+    return header('HTTP/1.0 400 Syntax error.');
+
+require_once 'config.php';
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return "Unauthorized.";
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Authorization failed.";
+}
+
+// --------------------------------------------------------------------
+
+if (isset($_GET['logout']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return;
+
+    return header('HTTP/1.0 401 Successfull logout!');
+}
+
+// --------------------------------------------------------------------
+
+$rc = login();
+if ($rc!="")
+{
+    header('WWW-Authenticate: Basic realm="FACT Schedule"');
+    return header('HTTP/1.0 401 '.$rc);
+}
+
+// ====================================================================
+
+// This is the day/night from which the data is to be deleted
+// and to which the data is to be submitted
+$day  = $_POST['n'];
+
+// This is the time of the last diabled entry (or the time from which
+// on the data should be deleted/submitted)
+// Note that there is no sanity check yet, therefore the data and the
+// time variable must be consistent
+// FIXME: This should be 11:59:59 the prev day to allow for 12:00 being
+// the first possible entry, but this makes things below more complicated
+$time = isset($_POST['t']) ? $_POST['t'] : "12:00:00";
+
+// The data to be submitted
+$data = json_decode($_POST['d']);
+
+// Get user
+$user = $_SERVER['PHP_AUTH_USER'];
+
+// FIXME: Make sure that the date is valid (in the future)?
+
+// ----------------------------------------------------------------
+
+// Calculate the date for the next day, to have the correct
+//date after midnight as well
+$date = new DateTime($day);
+$date->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+$nextDay = $date->format('Y-m-d');
+
+// ----------------------------------------------------------------
+
+// Calculate the lower limit from which on data should be deleted.
+// This is either noon (if the date is in the future) or the provided
+// time (different from 12:00:00) during the night
+$cut = $day." ".$time;
+
+$d = new DateTime($cut);
+
+// If the time lays before noon, it belongs to the next day
+if ($d->format("His")<120000)
+{
+    $d->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+    $cut = $d->format("Y-m-d H:i:s");
+}
+
+// ================================================================
+
+$db = mysql_connect($dbhost,$dbuser,$dbpass);
+if (!$db)
+    die(mysql_error());
+
+if (!mysql_select_db($dbname, $db))
+    die(mysql_error());
+
+$query = "SELECT * FROM MeasurementType";
+
+$sql = mysql_query($query);
+if (!$sql)
+    die(mysql_error());
+
+$measurements = array();
+while($row = mysql_fetch_assoc($sql))
+    $measurements[$row['fMeasurementTypeKey']] = $row;
+
+// ----------------------------------------------------------------
+
+// Now create the queries with the correct dates (date and time)
+// from the posted data and the times therein
+$queries = array();
+
+array_push($queries, "LOCK TABLES Schedule WRITE");
+array_push($queries, "DELETE FROM Schedule WHERE fStart>'".$cut."' AND DATE(ADDTIME(fStart, '-12:00')) = '".$day."'");
+
+// ----------------------------------------------------------------
+
+$last = $cut;
+
+if (count($data)!=1 || !empty($data[0][0])) // empty schedule
+foreach ($data as $row)
+{
+    $t = $row[0]; // time
+
+    // If there is a time set (first task in an observation),
+    // remember the time, if not this is just a measurement
+    // within an observation so duplicate the time
+    if (!isset($t))
+    {
+        $t = $save;
+        $id++;
+    }
+    else
+    {
+        $save = $t;
+        $id = 0;
+    }
+
+    // Check if the time is before noon. If it is before noon,
+    // it belongs to the next day
+    $d = date_parse($t);
+    $t = $d['hour']<12 ? $nextDay." ".$t : $day." ".$t;
+
+    if ($d==FALSE)
+        die("Could not parse time '".$t."' with date_parse");
+
+    // Check all but the last task in a measurement whether
+    // the are not unlimited
+    if ($last==$t)
+    {
+        if ($measurements[$m]['fIsUnlimited']==true)
+            die("Unlimited task '".$measurements[$m]['fMeasurementTypeName']."' detected before end of observation\n[".$last."|".($id-1)."]");
+    }
+
+    if ($last>$t)
+        die("Times not sequential\n[".$last."|".$t."]");
+
+    $last = $t;
+
+    $m = $row[1]; // measurement
+    $s = $row[2]; // source
+    $v = $row[3]; // value
+
+    // Check if task need source or must not have a source
+    if ($measurements[$m]['fNeedsSource']==true && $s==0)
+        die("Task '".$measurements[$m]['fMeasurementTypeName']."' needs source.\n[".$t."|".$id."]");
+    if ($measurements[$m]['fNeedsSource']!=true && $s>0)
+        die("Task '".$measurements[$m]['fMeasurementTypeName']."' must not have source.\n[".$t."|".$id."]");
+
+    // Compile query
+    $query = "INSERT INTO Schedule SET";
+    $query .= " fStart='".$t."'";
+    $query .= ",fMeasurementID=".$id;
+    $query .= ",fMeasurementTypeKey=".$m;
+    $query .= ",fUser='".$user."'";
+    if ($s>0)
+        $query .= ",fSourceKey=".$s;
+
+    // Check if this is a valid JSON object
+    if (!json_decode('{'.$v.'}'))
+    {
+        switch (json_last_error())
+        {
+        case JSON_ERROR_NONE:             break;
+        case JSON_ERROR_DEPTH:            $err = 'Maximum stack depth exceeded'; break;
+        case JSON_ERROR_STATE_MISMATCH:   $err = 'Invalid or malformed JSON';    break;
+        case JSON_ERROR_CTRL_CHAR:        $err = 'Unexpected control character'; break;
+        case JSON_ERROR_SYNTAX:           $err = 'Syntax error';                 break;
+        case JSON_ERROR_UTF8:             $err = 'Malformed UTF-8 characters';   break;
+        default:                          $err = 'Unknown error';                break;
+        }
+
+        if (isset($err))
+            die($err." at ".$t." [entry #".($id+1)."]:\n".$v);
+    }
+
+    // PHP >= 5.5.0
+    // if (!json_decode('{'.$v.'}'))
+    //    die("Invalid option at ".$t.": ".$v." [JSON - ".json_last_error_msg()."]");
+
+
+
+    if ($v)
+        $query .= ",fData='".$v."'";
+
+    // add query to the list of queries
+    array_push($queries, $query);
+}
+
+array_push($queries, "UNLOCK TABLES");
+
+// ================================================================
+//                       Database interaction
+// ================================================================
+
+foreach ($queries as $query)
+    if (!mysql_query($query))
+        die(mysql_error());
+
+mysql_close($db);
+
+?>
Index: branches/FACT++_part_filenames/www/shift/calendar.css
===================================================================
--- branches/FACT++_part_filenames/www/shift/calendar.css	(revision 18732)
+++ branches/FACT++_part_filenames/www/shift/calendar.css	(revision 18732)
@@ -0,0 +1,128 @@
+/**********************************************************************
+*          Calendar JavaScript [DOM] v3.1 by Michael Loesler           *
+************************************************************************
+* Copyright (C) 2005-10 by Michael Loesler, http//derletztekick.com    *
+*                                                                      *
+*                                                                      *
+* 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 <http://www.gnu.org/licenses/>  *
+* or write to the                                                      *
+* Free Software Foundation, Inc.,                                      *
+* 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.            *
+*                                                                      *
+ **********************************************************************/
+
+			html, body { 
+				background-color: #ECECEC;
+				font-family: verdana, arial, sans-serif; 
+			}
+				
+			#calendar { /* Fuer IE <= 6 */
+				text-align: center;
+			}
+    
+			#calendar table thead th{ 
+				font-weight: bold; 
+				font-size: 0.75em;
+				line-height: 1.5em;				
+				color: #BFBFC1; 
+				text-align: center;
+				background-color: #112A5D;
+			}
+			
+			#calendar table thead th.weekday{ 
+				font-weight: bold; 
+				font-size: 0.66em;
+				line-height: 1.5em;
+				color: #112A5D; 
+				text-align: center;
+				background-color: #CCD2D8;
+				border: solid #112A5D 1px;
+			}
+
+			#calendar table tbody td, #calendar table tfoot td{ 
+				font-weight: normal; 
+				font-size: 0.66em;
+				line-height: 1.5em;
+				/*width: 2.0em;*/
+				padding-left: 0.6em; 
+				padding-right: 0.6em; 
+				color: #0E224B; 
+				text-align: right;
+				border: 1px solid #CCD2D8;
+                                vertical-align:top;
+                                font-weight:bolder;
+			}
+			
+			#calendar table tfoot td {
+				font-size: 0.65em;
+				border: none;
+			}
+			
+			#calendar table tfoot td.clock {
+				text-align: left;
+			}
+
+			#calendar table tfoot td.logout {
+				text-align: right;
+			}
+			
+			#calendar table tbody td.saturday{ 
+				color: #9A2525;
+				font-weight: normal;
+			}
+			
+			#calendar table tbody td.sunday{ 
+				color: #9A2525;
+				font-weight: bold;
+			}
+			
+			#calendar table tbody td.weekend{ 
+				color: #9A2525;
+			}
+			
+			#calendar table tbody td.today{
+				/*background-color: #A7B5F7;*/
+                                border:3px solid #FC8298;
+			}
+
+			#calendar table tbody td.enabled{
+				background-color: #E8F5C7;
+			}
+			#calendar table tbody div.institute{
+				background-color: #C8D5A7;
+                                text-align:center;
+                                font-size:1.25em;
+			}
+			#calendar table tbody td.choosen{
+                                border:2px solid #808080;
+			}
+			
+			#calendar table thead th.prev_year, #calendar table thead th.next_year {
+				margin: 0.1em;
+				padding: 0.1em;
+				line-height: 0.75em;
+				font-size: 0.65em;
+			}
+			
+			#calendar table tbody td.last_month, #calendar table tbody td.next_month {
+				color: 	#a3afc4;
+			}
+			
+			#calendar table{
+				border-collapse: collapse;
+				border: solid #112A5D 2px;
+				padding: 0;
+				margin:0;
+				background-color: #F6F6F6;
+			}
Index: branches/FACT++_part_filenames/www/shift/calendar.js
===================================================================
--- branches/FACT++_part_filenames/www/shift/calendar.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/shift/calendar.js	(revision 18732)
@@ -0,0 +1,916 @@
+/**********************************************************************
+*          Calendar JavaScript [DOM] v3.11 by Michael Loesler          *
+************************************************************************
+* Copyright (C) 2005-09 by Michael Loesler, http//derletztekick.com    *
+*                                                                      *
+*                                                                      *
+* 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 <http://www.gnu.org/licenses/>  *
+* or write to the                                                      *
+* Free Software Foundation, Inc.,                                      *
+* 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.            *
+*                                                                      *
+ **********************************************************************/
+/*
+function logout()
+{
+    var xmlHttp = new XMLHttpRequest();
+    xmlHttp.open('POST', "calendar.php?logout=1", true);
+    xmlHttp.onload = function ()
+    {
+        if (xmlHttp.status!=200)
+        {
+            alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+            return;
+        }
+
+        alert("Logout successful!");
+    };
+
+    xmlHttp.send();
+}
+*/
+function resize()
+{
+    var table = document.getElementById("table");
+
+    var W = window.innerWidth;
+    var H = window.innerHeight;
+
+    table.style.width =W+"px";
+    table.style.height=H+"px";
+}
+
+var institutes= ["Shift", "Debug", "moon", "ETHZ", "ISDC", "TUDO", "UNIWUE" ];
+
+function CalendarJS()
+{
+    this.now       = new Date();
+    this.dayname   = ["Mo","Tu","We","Th","Fr","Sa","So"];
+    this.monthname = ["January","February","March","April","May","June","July","August","September","October","November","December"];
+    this.tooltip   = ["previous month","next month","current date","last year","next year"];
+    this.monthCell = document.createElement("th");
+    this.tableHead = null;
+    this.tableFoot = null;
+    this.parEl     = null;
+
+    this.init = function( id, initDate )
+    {
+        this.now       = initDate ? initDate : new Date();
+        this.date      = this.now.getDate();
+        this.month     = this.mm = this.now.getMonth();
+        this.year      = this.yy = this.now.getFullYear();
+        this.monthCell.appendChild(document.createTextNode( this.monthname[this.mm]+"\u00a0"+this.yy ));
+
+        this.tableHead = this.createTableHead();
+        this.tableFoot = this.createTableFoot();
+
+        this.parEl = document.getElementById( id );
+        this.show();
+
+        if (!initDate)
+            this.checkDate();
+    };
+
+    this.checkDate = function()
+    {
+        var self  = this;
+        var today = new Date();
+
+        if (this.date != today.getDate())
+        {
+            this.tableHead = this.createTableHead();
+            this.tableFoot = this.createTableFoot();
+
+            this.date = today.getDate();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+
+            this.month = today.getMonth();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+
+            this.year  = today.getFullYear();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+        }
+        window.setTimeout(function() { self.checkDate(); }, Math.abs(new Date(this.year, this.month, this.date, 24, 0, 0)-this.now));
+    },
+
+    this.removeElements = function( Obj )
+    {
+        while( Obj.childNodes.length > 0)
+            Obj.removeChild(Obj.lastChild);
+
+        return Obj;
+    };
+
+    this.show = function()
+    {
+        this.parEl = this.removeElements( this.parEl );
+        this.monthCell.firstChild.replaceData(0, this.monthCell.firstChild.nodeValue.length, this.monthname[this.mm]+"\u00a0"+this.yy);
+
+        var table = document.createElement("table");
+        table.id = "table";
+
+        this.parEl.appendChild( table );
+
+        table.appendChild( this.tableHead );
+        table.appendChild( this.tableFoot );
+
+        table.appendChild( this.createTableBody(window.innerHeight-table.offsetHeight) );
+ 
+        resize();
+    };
+
+    this.createTableFoot = function()
+    {
+        var tfoot = document.createElement("tfoot");
+
+        var tr = document.createElement("tr");
+        var td = document.createElement("td");
+        td.height = "1%";
+        td.colSpan = 7;
+        td.style.padding="3px 3px";
+        tfoot.appendChild(tr);
+        tr.appendChild(td);
+        var table = document.createElement("table");
+        table.width="100%";
+        td.appendChild(table);
+        tr = document.createElement("tr");
+        table.appendChild(tr);
+        for (var i=0; i<institutes.length; i++)
+        {
+            td = document.createElement("td");
+            td.width=100/institutes.length+"%";
+            td.setAttribute("style", "text-align:center;font-size:1em;border:solid #112A5D 2px;padding:3px 3px;");
+            td.changeUser = this.changeUser;
+            td.onclick = function(e) { this.changeUser(); }
+            td.appendChild(document.createTextNode(institutes[i]));
+            tr.appendChild(td);
+
+            if (i==0)
+                td.style.backgroundColor = "yellow";
+        }
+        document.getElementById("body").setAttribute("data-user", institutes[0]);
+
+
+        tr = document.createElement("tr");
+        td = document.createElement("td");
+        td.colSpan = 7;
+        td.style.paddingLeft = "0px";
+        td.style.paddingTop  = "0px";
+        td.height = "1%";
+        var form  = document.createElement("form");
+        var input = document.createElement("textarea");
+        input.overflow    = "auto";
+        input.wrap        = "virtual";
+        input.id          = "comment";
+        input.value       = "enter comment here";
+        input.style.color = "#888";
+        input.style.width = "100%";
+        input.rows        = 5;
+        input.title       = "Enter a comment. Click somewhere in the calender to store the comment.";
+        input.onchange    = function() { pushComment(); };
+        input.onfocus     = function() { if (input.value=="enter comment here" && input.style.color!="black") input.value=""; input.style.color="black"; };
+        input.onblur      = function() { input.style.color="#888"; if (input.value=="") input.value="enter comment here"; };
+        form.appendChild(input);
+        td.appendChild( form );
+        tr.appendChild( td );
+        tfoot.appendChild(tr);
+
+        tr = document.createElement("tr");
+
+        var td = document.createElement("td");
+        td.height="1%";
+        td.colSpan=7;
+        tr.appendChild(td);
+
+        var tab = document.createElement("table");
+        var tr2 = document.createElement("tr");
+        tab.width="100%";
+        tab.cellSpacing=0;
+        tab.cellPadding=0;
+        tab.style.borderWidth = 0;
+        tab.style.fontSize = "1.5em";
+        tab.style.marginBottom = "2px";
+        td.appendChild(tab);
+        tab.appendChild(tr2);
+
+        var tm = this.getCell( "td", this.timeTrigger(), "clock" );
+        tm.style.whiteSpace="nowrap";
+        tm.style.paddingLeft = "0px";
+        tm.style.width="33%";
+        tr2.appendChild( tm );
+
+        var self = this;
+        window.setInterval(function() { tm.firstChild.nodeValue = self.timeTrigger(); }, 500);
+
+        var td = document.createElement("td");
+        td.style.width="33%";
+        td.style.textAlign="center";
+        var a = document.createElement("a");
+        a.href = "overview.png";
+        a.style.whiteSpace="nowrap";
+        a.appendChild(document.createTextNode("click here for help"));
+        td.appendChild(a);
+        tr2.appendChild( td );
+
+        td = this.getCell( "td", "logout", "logout");
+        td.style.width="33%";
+        td.onclick = function(e) { logout(); }
+        td.style.paddingRight = "0px";
+        tr2.appendChild( td );
+
+        tfoot.appendChild( tr );
+
+        return tfoot;
+    }
+
+    this.createTableHead = function()
+    {
+        var thead = document.createElement("thead");
+        thead.style.height="1%";
+        var tr = document.createElement("tr");
+        var th = this.getCell( "th", "\u00AB", "prev_month" );
+
+        th.rowSpan = 2;
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("prev"); };
+        th.title = this.tooltip[0];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        this.monthCell.Instanz = this;
+        this.monthCell.rowSpan = 2;
+        this.monthCell.colSpan = 4;
+        this.monthCell.onclick = function() { this.Instanz.switchMonth("current"); };
+        this.monthCell.title = this.tooltip[2];
+
+        try { this.monthCell.style.cursor = "pointer"; } catch(e){ this.monthCell.style.cursor = "hand"; }
+        tr.appendChild( this.monthCell );
+
+        th = this.getCell( "th", "\u00BB", "next_month" );
+        th.rowSpan = 2;
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("next"); };
+        th.title = this.tooltip[1];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        th = this.getCell( "th", "\u02c4", "prev_year" );
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("prev_year"); };
+        th.title = this.tooltip[3];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        thead.appendChild( tr );
+
+        tr = document.createElement("tr");
+        th = this.getCell( "th", "\u02c5", "next_year" );
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("next_year"); };
+        th.title = this.tooltip[4];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        thead.appendChild( tr );
+
+        tr = document.createElement('tr');
+        for (var i=0; i<this.dayname.length; i++)
+        {
+            var th = this.getCell("th", this.dayname[i], "weekday" );
+            th.width=100/7+"%";
+            tr.appendChild( th );
+        }
+
+        thead.appendChild( tr );
+
+        return thead;
+    },
+
+    this.createTableBody = function(height)
+    {
+        var dayspermonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+        var sevendaysaweek = 0;
+        var begin = new Date(this.yy, this.mm, 1);
+        var firstday = begin.getDay()-1;
+        if (firstday < 0)
+            firstday = 6;
+        if ((this.yy%4==0) && ((this.yy%100!=0) || (this.yy%400==0)))
+            dayspermonth[1] = 29;
+
+        var tbody = document.createElement("tbody");
+        var tr    = document.createElement('tr');
+
+        tbody.height="100%";
+
+        var height="";//"20%";//100/8+"%";
+
+        if (firstday == 0)
+        {
+            for (var i=0; i<this.dayname.length; i++)
+            {
+                var prevMonth = (this.mm == 0)?11:this.mm-1;
+                var td = this.getCell( "td", dayspermonth[prevMonth]-6+i, "last_month" );
+                td.style.height=height;
+                tr.appendChild( td );
+            }
+            tbody.appendChild( tr );
+            tr = document.createElement('tr');
+        }
+
+        for (var i=0; i<firstday; i++, sevendaysaweek++)
+        {
+            var prevMonth = (this.mm == 0)?11:this.mm-1;
+            var td = this.getCell( "td", dayspermonth[prevMonth]-firstday+i+1, "last_month" );
+            td.style.height=height;
+            tr.appendChild( td );
+        }
+
+        for (var i=1; i<=dayspermonth[this.mm]; i++, sevendaysaweek++)
+        {
+            if (this.dayname.length == sevendaysaweek)
+            {
+                tbody.appendChild( tr );
+                tr = document.createElement('tr');
+                sevendaysaweek = 0;
+            }
+
+            var td = null;
+            if (i==this.date && this.mm==this.month && this.yy==this.year && (sevendaysaweek == 5 || sevendaysaweek == 6))
+                td = this.getCell( "td", i, "today weekend" );
+            else
+                if (i==this.date && this.mm==this.month && this.yy==this.year)
+                    td = this.getCell( "td", i, "today" );
+                else
+                    if (sevendaysaweek == 5 || sevendaysaweek == 6)
+                        td = this.getCell( "td", i, "weekend" );
+                    else
+                        td = this.getCell( "td", i, null);
+
+            td.setDate    = this.setDate;
+            td.chooseDate = this.chooseDate;
+            td.dd = i;
+            td.mm = this.mm;
+            td.yy = this.yy;
+            td.id = this.mm+"-"+i;
+            td.title = "Click to select this date.";
+
+            td.style.height=height;
+
+            td.onclick = function(e) {
+                this.chooseDate();
+            };
+
+            var tab = document.createElement("table");
+            tab.width="100%";
+            tab.style.border = 0;
+            tab.style.padding = 0;
+            tab.style.margin = 0;
+            tab.style.fontSize = "1.5em";
+            tab.style.backgroundColor = "transparent";
+            var tr0 = document.createElement("tr");
+            var td0 = document.createElement("td");
+            var td1 = document.createElement("td");
+            td0.style.textAlign = "left";
+            td1.style.textAlign = "right";
+            td1.style.textWeight= "normal";
+            td0.style.color = "lightgray";
+            td0.style.border=0;
+            td1.style.border=0;
+            td0.style.padding=0;
+            td1.style.padding=0;
+            tab.appendChild(tr0);
+            tr0.appendChild(td0);
+            tr0.appendChild(td1);
+            //td0.appendChild(document.createTextNode(txt));
+
+            td1.appendChild(td.firstChild);
+            td.appendChild(tab);
+
+            var IP    = this.getMoonPhase(this.yy, this.mm, i);
+            var str   = this.getMoonPhaseStr(IP);
+            var phase = 100-Math.abs(IP-0.5)*200;
+            var txt   = parseInt(phase+0.5,10)+"%";
+            if (phase>50)
+                td0.style.color = "gray";
+            if (phase<3.4)
+            {
+                txt = "o";
+                td0.style.textWeight = "bolder";
+                td0.style.fontSize = "0.7em";
+                td0.style.color = "darkgreen";
+            }
+            if (phase>96.6)
+            {
+                txt = "&bull;";
+                td0.style.textWeight = "bolder";
+                td0.style.fontSize = "0.8em";
+                td0.style.color = "darkred";
+            }
+            tab.title = str;
+            td0.innerHTML = txt;
+
+            var sp = document.createElement("span");
+            sp.appendChild(document.createTextNode("*"));
+            sp.style.color="darkred";
+            sp.style.display="none";
+            td1.appendChild(sp);
+
+
+            tr.appendChild( td );
+        }
+
+        var daysNextMonth = 1;
+        for (var i=sevendaysaweek; i<this.dayname.length; i++)
+            tr.appendChild( this.getCell( "td", daysNextMonth++, "next_month"  ) );
+
+        tbody.appendChild( tr );
+
+        while (tbody.getElementsByTagName("tr").length<6) {
+            tr = document.createElement('tr');
+            for (var i=0; i<this.dayname.length; i++)
+            {
+                var td = this.getCell( "td", daysNextMonth++, "next_month"  );
+                td.style.height=height;
+                tr.appendChild( td );
+            }
+            tbody.appendChild( tr );
+        }
+
+        requestAll(this.yy, this.mm);
+        requestAllComments(this.yy, this.mm);
+        if (this.year==this.yy && this.month==this.mm)
+            requestComment(this.year, this.month, this.date);
+        else
+        {
+            var c = document.getElementById("comment");
+            c.color="#888";
+            c.value="enter comment here";
+        }
+
+        return tbody;
+    };
+
+    this.getCalendarWeek = function(j,m,t)
+    {
+        var cwDate = this.now;
+        if (!t)
+        {
+            j = cwDate.getFullYear();
+            m = cwDate.getMonth();
+            t = cwDate.getDate();
+        }
+        cwDate = new Date(j,m,t);
+
+        var doDat = new Date(cwDate.getTime() + (3-((cwDate.getDay()+6) % 7)) * 86400000);
+        cwYear = doDat.getFullYear();
+
+        var doCW = new Date(new Date(cwYear,0,4).getTime() + (3-((new Date(cwYear,0,4).getDay()+6) % 7)) * 86400000);
+        cw = Math.floor(1.5+(doDat.getTime()-doCW.getTime())/86400000/7);
+        return cw;
+    };
+
+    function request(td)
+    {
+        var user = document.getElementById("body").getAttribute("data-user");
+        var uri = "calendar.php?toggle&y="+td.yy+"&m="+td.mm+"&d="+td.dd;
+
+        if (user!="Shift" && user!="Debug")
+            uri += "&u="+user;
+
+        uri += "&x="+(user=="Debug"?1:0);
+
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            var lines = xmlHttp.responseText.split('\n');
+            if (lines.length==0)
+                return;
+
+            while (td.childNodes.length>1)
+                td.removeChild(td.lastChild);
+
+            for (var i=0; i<lines.length; i++)
+            {
+                var x = lines[i].split('\t');
+                if (x.length!=3)
+                    continue;
+
+                var div = document.createElement("div");
+                div.style.fontWeight="normal";
+                div.appendChild(document.createTextNode(x[2]=="1"?'('+x[1]+')':x[1]));
+                td.appendChild(div);
+
+                for (var j=0; j<institutes.length; j++)
+                    if (x[1]==institutes[j])
+                    {
+                        div.className += " institute";
+                        break;
+                    }
+            }
+
+            if (td.childNodes.length>1)
+                td.className += " enabled";
+            else
+                td.className = td.className.replace(/enabled/g, "");
+        };
+
+        xmlHttp.send();
+    }
+
+    function logout()
+    {
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', "calendar.php?logout", true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=401)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            alert(xmlHttp.statusText);
+        };
+
+        xmlHttp.send();
+    }
+
+    function pushComment()
+    {
+        var c = document.getElementById("comment");
+
+        var y = c.getAttribute("data-y");
+        var m = c.getAttribute("data-m");
+        var d = c.getAttribute("data-d");
+        var v = c.value;
+
+        var uri = "calendar.php?y="+y+"&m="+m+"&d="+d+"&c="+encodeURIComponent(v);
+
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            alert("Comment inserted successfully.");
+
+            var td = document.getElementById(m+"-"+d);
+            var sp = td.firstChild.firstChild.lastChild.lastChild;
+            if (v=="")
+            {
+                sp.style.display="none";
+                td.title="Click to select this date.";
+            }
+            else
+            {
+                sp.style.display="";
+                td.title=v;
+            }
+
+        };
+
+        xmlHttp.send();
+    }
+
+    function requestComment(yy, mm, dd)
+    {
+        var c = document.getElementById("comment");
+
+        var y = c.getAttribute("data-y");
+        var m = c.getAttribute("data-m");
+        var d = c.getAttribute("data-d");
+
+        if (y==yy && m==mm && d==dd)
+            return;
+
+        var uri = "calendar.php?comment&y="+yy+"&m="+mm+"&d="+dd;
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            var td = document.getElementById(mm+"-"+dd);
+            var sp = td.firstChild.firstChild.lastChild.lastChild;
+
+            if (sp!=undefined)
+            {
+                c.color="#888";
+                if (xmlHttp.responseText=="")
+                {
+                    c.value="enter comment here";
+                    sp.style.display="none";
+                    td.title="";
+                }
+                else
+                {
+                    c.value = xmlHttp.responseText;
+                    sp.style.display="";
+                    td.title=xmlHttp.responseText;
+                }
+            }
+
+            c.setAttribute("data-y", yy);
+            c.setAttribute("data-m", mm);
+            c.setAttribute("data-d", dd);
+        };
+
+        xmlHttp.send();
+    }
+
+    var xmlReqAll = null;
+    function requestAll(yy, mm)
+    {
+        if (xmlReqAll)
+            xmlReqAll.abort();
+
+        var uri = "calendar.php?y="+yy+"&m="+mm;
+
+        xmlReqAll = new XMLHttpRequest();
+        xmlReqAll.open('POST', uri, true);
+        xmlReqAll.onload = function ()
+        {
+            if (xmlReqAll.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlReqAll.statusText+" ["+xmlReqAll.status+"]");
+                return;
+            }
+
+            var lines = xmlReqAll.responseText.split('\n');
+            if (lines.length==0)
+                return;
+
+            for (var i=0; i<lines.length; i++)
+            {
+                var x = lines[i].split('\t');
+                if (x.length!=3)
+                    continue;
+
+                var td = document.getElementById(mm+"-"+x[0]);
+
+                var div = document.createElement("div");
+                div.style.fontWeight="normal";
+                div.appendChild(document.createTextNode(x[2]=="1"?'('+x[1]+')':x[1]));
+                td.appendChild(div);
+
+                for (var j=0; j<institutes.length; j++)
+                    if (x[1]==institutes[j])
+                    {
+                        div.className += " institute";
+                        break;
+                    }
+
+                td.className += " enabled";
+            }
+        };
+
+        xmlReqAll.send();
+    }
+
+    var xmlReqCom = null;
+    function requestAllComments(yy, mm)
+    {
+        if (xmlReqCom)
+            xmlReqCom.abort();
+
+        var uri = "calendar.php?comment&y="+yy+"&m="+mm;
+        xmlReqCom = new XMLHttpRequest();
+        xmlReqCom.open('POST', uri, true);
+        xmlReqCom.onload = function ()
+        {
+            if (xmlReqCom.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlReqCom.statusText+" ["+xmlReqCom.status+"]");
+                return;
+            }
+
+            if (xmlReqCom.responseText<4)
+                return;
+
+            var pos = 6;
+
+            while (pos<xmlReqCom.responseText.length)
+            {
+                var len = parseInt(xmlReqCom.responseText.substr(pos-6, 4), 10);
+                var dd  = parseInt(xmlReqCom.responseText.substr(pos-2, 2), 10);
+                var com = xmlReqCom.responseText.substr(pos, len);
+                pos += len+6;
+
+                if (com!="")
+                {
+                    var td = document.getElementById(mm+"-"+dd);
+                    var sp = td.firstChild.firstChild.lastChild.lastChild;
+                    sp.style.display="";
+                    td.title=com;
+                }
+            }
+        };
+
+        xmlReqCom.send();
+    }
+
+    this.setDate = function()
+    {
+        request(this);
+    };
+
+    this.changeUser = function()
+    {
+        var sib = this.nextSibling;
+        while (sib)
+        {
+            sib.style.backgroundColor = "";
+            sib = sib.nextSibling;
+        }
+
+        sib = this.previousSibling;
+        while (sib)
+        {
+            sib.style.backgroundColor = "";
+            sib = sib.previousSibling;
+        }
+
+        this.style.backgroundColor = "yellow";
+
+        document.getElementById("body").setAttribute("data-user", this.firstChild.textContent);
+    };
+
+    this.chooseDate = function()
+    {
+        while (document.getElementsByClassName("choosen")[0])
+        {
+            var e = document.getElementsByClassName("choosen")[0];
+            e.title = "Click to select this date.";
+            e.className = e.className.replace(/choosen/g, "");
+            e.onclick = function() {
+                this.chooseDate();
+            };
+        }
+
+        this.className += " choosen";
+        this.title = "Click again to add or remove your name.";
+
+        requestComment(this.yy, this.mm, this.dd);
+
+        this.onclick = function() {
+            this.setDate();
+        };
+    };
+
+    this.timeTrigger = function()
+    {
+        var now = new Date();
+        var ss  = (now.getSeconds()<10)?"0"+now.getSeconds():now.getSeconds();
+        var mm  = (now.getMinutes()<10)?"0"+now.getMinutes():now.getMinutes();
+        var hh  = (now.getHours()  <10)?"0"+now.getHours()  :now.getHours();
+
+        var kw = "KW" + this.getCalendarWeek(this.year, this.month, this.date);
+        var str = hh+":"+mm+":"+ss+"\u00a0["+kw+"]";
+        return str;
+    };
+
+    this.getCell = function(tag, str, cssClass)
+    {
+        var El = document.createElement( tag );
+        El.appendChild(document.createTextNode( str ));
+        if (cssClass != null)
+            El.className = cssClass;
+        return El;
+    },
+
+    this.switchMonth = function( s )
+    {
+        switch (s)
+        {
+        case "prev":
+            this.yy = (this.mm == 0) ? this.yy-1 : this.yy;
+            this.mm = (this.mm == 0) ? 11        : this.mm-1;
+            break;
+
+        case "next":
+            this.yy = (this.mm == 11) ? this.yy+1 : this.yy;
+            this.mm = (this.mm == 11) ? 0         : this.mm+1;
+            break;
+
+        case "prev_year":
+            this.yy = this.yy-1;
+            break;
+
+        case "next_year":
+            this.yy = this.yy+1;
+            break;
+
+        case "current":
+            this.yy = this.year;
+            this.mm = this.month;
+            break;
+        }
+        this.show();
+    }
+
+    this.getMoonPhase = function(Y, M, D)
+    {
+        // M=0..11 --> 1..12
+        M += 1;
+
+        // calculate the Julian date at 12h UT
+        var YY = Y - Math.floor( ( 12 - M ) / 10 );
+        var MM = ( M + 9 ) % 12;
+
+        var K1 = Math.floor( 365.25 * ( YY + 4712 ) );
+        var K2 = Math.floor( 30.6 * MM + 0.5 );
+        var K3 = Math.floor( Math.floor( ( YY / 100 ) + 49 ) * 0.75 ) - 38;
+
+        var JD = K1 + K2 + D + 59;  // for dates in Julian calendar
+        if ( JD > 2299160 )         // for Gregorian calendar
+            JD = JD - K3;
+
+        // calculate moon's age in days
+        var IP = ( ( JD - 2451550.1 ) / 29.530588853 ) % 1;
+
+        return IP;
+
+        // Moon's age
+        //var AG = IP*29.53;
+    }
+
+    this.getMoonPhaseStr = function(IP)
+    {
+        var phase = " ("+(100-Math.abs(IP-0.5)*200).toPrecision(2)+"%)";
+
+        if (IP*16 < 1) return "New moon" + phase;
+        if (IP*16 < 3) return "Evening crescent" + phase;
+        if (IP*16 < 5) return "First quarter" + phase;
+        if (IP*16 < 7) return "Waxing gibbous" + phase;
+        if (IP*16 < 9) return "Full moon" + phase;
+        if (IP*16 <11) return "Waning gibbous" + phase;
+        if (IP*16 <13) return "Last quarter" + phase;
+        if (IP*16 <15) return "Morning crescent" + phase;
+
+        return "New moon"+phase;
+    }
+}
+
+var DOMContentLoaded = false;
+function addContentLoadListener (func)
+{
+    if (document.addEventListener)
+    {
+        var DOMContentLoadFunction = function ()
+        {
+            window.DOMContentLoaded = true;
+            func();
+        };
+
+        document.addEventListener("DOMContentLoaded", DOMContentLoadFunction, false);
+    }
+
+    var oldfunc = (window.onload || new Function());
+
+    window.onload = function ()
+    {
+        if (!window.DOMContentLoaded)
+        {
+            oldfunc();
+            func();
+        }
+    };
+}
+
+addContentLoadListener( function() {
+new CalendarJS().init("calendar");
+//new CalendarJS().init("calendar", new Date(2009, 1, 15));
+} );
Index: branches/FACT++_part_filenames/www/shift/calendar.php
===================================================================
--- branches/FACT++_part_filenames/www/shift/calendar.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/shift/calendar.php	(revision 18732)
@@ -0,0 +1,181 @@
+<?PHP
+
+require_once("config.php");
+
+function log_sql_error($query, $error)
+{
+    if (!file_exists("log/"))
+        mkdir("log/", 0777, true);
+
+    $file = fopen("log/mysql.log", "a");
+    fwrite($file, date("Y-m-d H:i:s")."\n".$query."\n".$error."\n\n");
+    fclose($file);
+
+    return header('HTTP/1.0 500 '.$error);
+}
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+if (isset($_GET['logout']))
+{
+    Header( "HTTP/1.0 401 Logout successfull!");
+    exit();
+}
+
+if (!isset($_GET['y']) || !isset($_GET['m']))
+    return;
+
+$y = $_GET['y'];
+$m = $_GET['m'];
+
+if (!mysql_connect($dbhost, $dbuser, $dbpass))
+    return log_sql_error("connect: ".$dbhost."[".$dbuser."]", mysql_error());
+
+if (!mysql_select_db($dbname))
+    return log_sql_error("select_db: ".$dbname, mysql_error());
+
+if (isset($_GET['comment']))
+{
+    $query = "SELECT d, c FROM Comments WHERE y=".$y." AND m=".$m;
+    if (isset($_GET['d']))
+        $query .= " AND d=".$_GET['d'];
+
+    $result = mysql_query($query);
+    if (!$result)
+        return log_sql_error($query, mysql_error());
+
+    if (isset($_GET['d']))
+    {
+        $row = mysql_fetch_array($result, MYSQL_NUM);
+        print($row[1]);
+        return;
+    }
+
+    while ($row = mysql_fetch_array($result, MYSQL_NUM))
+    {
+        printf("%04d%02d%s", strlen($row[1]), $row[0], $row[1]);
+    }
+
+    return;
+}
+
+if (isset($_GET['d']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+    {
+        header('WWW-Authenticate: Basic realm="Shift schedule"');
+        header('HTTP/1.0 401 Unauthorized');
+        return;
+    }
+
+    $rc = login();
+    if ($rc!="")
+    {
+        header('HTTP/1.0 401 '.$rc);
+        return;
+    }
+
+    $d = $_GET['d'];
+
+    if (isset($_GET['c']))
+    {
+        $c = $_GET['c'];
+
+        $query = "DELETE FROM Comments WHERE y=".$y." AND m=".$m." AND d=".$d;
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+
+        if (strlen($c)<=0)
+            return;
+
+        $query = "INSERT Comments SET y=".$y.", m=".$m.", d=".$d.", c='".$c."'";
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+
+        return;
+    }
+
+    $u = isset($_GET['u']) ? $_GET['u'] : $_SERVER['PHP_AUTH_USER'];
+
+    $query = "DELETE FROM Data WHERE y=".$y." AND m=".$m." AND d=".$d." AND u='".$u."'";
+    if (!mysql_query($query))
+        return log_sql_error($query, mysql_error());
+
+    if (mysql_affected_rows()==0)
+    {
+        $x = $_GET['x'];
+
+        $query = "INSERT Data SET y=".$y.", m=".$m.", d=".$d.", x=".$x.", u='".$u."'";
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+    }
+}
+
+$query = "SELECT d, u, x FROM Data WHERE y=".$y." AND m=".$m;
+if (isset($_GET['d']))
+    $query .= " AND d=".$_GET['d'];
+
+$result = mysql_query($query);
+if (!$result)
+    if (!mysql_query($query))
+        return log_sql_error($query, mysql_error());
+
+while ($row = mysql_fetch_array($result, MYSQL_NUM))
+    print($row[0]."\t".$row[1]."\t".$row[2]."\n");
+?>
Index: branches/FACT++_part_filenames/www/shift/config.template.php
===================================================================
--- branches/FACT++_part_filenames/www/shift/config.template.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/shift/config.template.php	(revision 18732)
@@ -0,0 +1,12 @@
+<?PHP
+
+$dbhost = "mysql.host.com";
+$dbuser = "user";
+$dbpass = "password";
+$dbname = "calendar";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/FACT++_part_filenames/www/shift/index.html
===================================================================
--- branches/FACT++_part_filenames/www/shift/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/www/shift/index.html	(revision 18732)
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+   <title>FACT shift schedule</title>
+   <link rel="stylesheet" media="screen" href="./calendar.css" type="text/css" />
+   <script type="text/javascript" src="./calendar.js"></script>
+   <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0" />
+</head>
+<body id="body" onresize="resize();">
+<div id="calendar" style="position:fixed;top:0;left:0;overflow:hidden;"/>
+</body>
+</html>
Index: branches/FACT++_part_filenames/www/showlog/index.css
===================================================================
--- branches/FACT++_part_filenames/www/showlog/index.css	(revision 18732)
+++ branches/FACT++_part_filenames/www/showlog/index.css	(revision 18732)
@@ -0,0 +1,75 @@
+.up {
+    padding:0 5px 4px 7px;
+    position:fixed;
+    top:0;
+    right:0;
+    background-color:#ebe7e6;
+}
+
+.dn {
+    padding:0 5px 4px 7px;
+    padding-top:0px;
+    position:fixed;
+    bottom:0;
+    right:0;
+    background-color:#ebe7e6;
+}
+
+#nav {
+    position:fixed;
+    right:90px;
+    top:0;
+    background-color:#ebe7e6;
+}
+
+#nav ul {
+    list-style-type:none;
+    margin:0;
+    padding:0;
+}
+
+#nav li {
+    float:left;
+    padding:0;
+    margin:0;
+}
+
+#nav li a {
+    padding:0 9px 4px 11px;
+    display:block;
+    color:#000; 
+    color:navy;
+    text-decoration:none; 
+    solid #ccc; 
+}
+
+#nav li a:hover { 
+    color:#f00; 
+}
+
+#nav ul ul {
+    display:none; 
+    position:absolute; 
+    z-index:999; 
+}
+
+#nav li li { 
+    float:none; 
+}
+
+#nav li li a { 
+    background:#EBE7E6!important; 
+    text-align:left; 
+    height:auto; 
+    line-height:1; 
+    width:auto; 
+    padding:4px 20px 4px 22px; 
+    border:1px solid #D0D0D0; 
+    border-top:none; 
+    margin-right:0; 
+}
+
+/* IE6 Bugfix... */
+* html li li { 
+    display:inline; 
+} 
Index: branches/FACT++_part_filenames/www/showlog/index.php
===================================================================
--- branches/FACT++_part_filenames/www/showlog/index.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/showlog/index.php	(revision 18732)
@@ -0,0 +1,434 @@
+<?php
+
+require_once("../smartfact/config.php");
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+/*
+function ascii2entities($string)
+{
+    for ($i=128; $i<256; $i++)
+    {
+        $entity  = htmlentities(chr($i), ENT_QUOTES, 'cp1252');
+        $temp    = substr($entity, 0, 1);
+        $temp   .= substr($entity, -1, 1);
+        $string  = str_replace(chr($i), $temp!='&;'?'':$entity, $string);
+    }
+    return $string;
+}
+*/
+
+function ansi_decode($matches)
+{
+    static $colors =
+        array(
+              'black',
+              'maroon',
+              'green',
+              'olive',
+              'navy',
+              'purple',
+              'teal',
+              'silver',
+              'gray',
+              'red',
+              'lime',
+              'yellow',
+              'blue',
+              'fuchsia',
+              'aqua',
+              'white'
+             );
+
+    // Default styles.
+    static $styles =
+        array(
+              'background'   => null,  // Default is defined by the stylesheet.
+              'blink'        => false,
+              'bold'         => false,
+              'color'        => null,  // Default is defined by the stylesheet.
+              //'inverse'      => false, // Cannot be expressed in terms of CSS!
+              'italic'       => false, // Not supported by DarkOwl's ANSI.
+              'line-through' => false, // Not supported by DarkOwl's ANSI.
+              'underline'    => false,
+             );
+
+    static $css = '';
+
+    // Copy the previous styles.
+    $newstyles = $styles;
+    // Extract the codes from the escape sequences.
+    preg_match_all('/\d+/', $matches[0], $matches);
+
+    // Walk through the codes.
+    foreach ($matches[0] as $code)
+    {
+        switch ($code)
+        {
+        case '0':
+            // Reset all styles.
+            $newstyles['background']   = null;
+            $newstyles['blink']        = false;
+            $newstyles['bold']         = false;
+            $newstyles['color']        = null;
+            //              $newstyles['inverse']      = false;
+            $newstyles['italic']       = false;
+            $newstyles['line-through'] = false;
+            $newstyles['underline']    = false;
+            break;
+
+        case '1':
+            // Set the bold style.
+            $newstyles['bold'] = true;
+            break;
+
+        case '3':
+            // Set the italic style.
+            $newstyles['italic'] = true;
+            break;
+
+        case '4':
+        case '21': // Actually double underline, but CSS doesn't support that yet.
+            // Set the underline style.
+            $newstyles['underline'] = true;
+            break;
+
+        case '5':
+        case '6': // Actually rapid blinking, but CSS doesn't support that.
+            // Set the blink style.
+            $newstyles['blink'] = true;
+            break;
+
+//          case '7':
+//              // Set the inverse style.
+//              $newstyles['inverse'] = true;
+//              break;
+
+        case '9':
+            // Set the line-through style.
+            $newstyles['line-through'] = true;
+            break;
+
+        case '2': // Previously incorrectly interpreted by Pueblo/UE as cancel bold, now still supported for backward compatibility.
+        case '22':
+            // Reset the bold style.
+            $newstyles['bold'] = false;
+            break;
+
+        case '23':
+            // Reset the italic style.
+            $newstyles['italic'] = false;
+            break;
+
+        case '24':
+            // Reset the underline style.
+            $newstyles['underline'] = false;
+            break;
+
+        case '25':
+            // Reset the blink style.
+            $newstyles['blink'] = false;
+            break;
+
+//          case '27':
+//              // Reset the inverse style.
+//              $newstyles['inverse'] = false;
+//              break;
+
+        case '29':
+            // Reset the line-through style.
+            $newstyles['line-through'] = false;
+            break;
+
+        case '30': case '31': case '32': case '33': case '34': case '35': case '36': case '37':
+            // Set the foreground color.
+            $newstyles['color'] = $code - 30;
+            break;
+
+        case '39':
+            // Reset the foreground color.
+            $newstyles['color'] = null;
+            break;
+
+        case '40': case '41': case '42': case '43': case '44': case '45': case '46': case '47':
+            // Set the background color.
+            $newstyles['background'] = $code - 40;
+            break;
+
+        case '49':
+            // Reset the background color.
+            $newstyles['background'] = null;
+            break;
+
+        default:
+            // Unsupported code; simply ignore.
+            break;
+        }
+    }
+
+    // Styles are effectively unchanged; return nothing.
+    if ($newstyles === $styles)
+        return '';
+
+    // Copy the new styles.
+    $styles = $newstyles;
+    // If there's a previous CSS in effect, close the <span>.
+    $html = $css ? '</span>' : '';
+    // Generate CSS.
+    $css = '';
+
+    // background-color property.
+    if (!is_null($styles['background']))
+        $css .= ($css ? ';' : '') . "background-color:{$colors[$styles['background']]}";
+
+    // text-decoration property.
+    if ($styles['blink'] || $styles['line-through'] || $styles['underline'])
+    {
+        $css .= ($css ? ';' : '') . 'text-decoration:';
+
+        if ($styles['blink'])
+            $css .= 'blink';
+
+        if ($styles['line-through'])
+            $css .= 'line-through';
+
+        if ($styles['underline'])
+            $css .= 'underline';
+    }
+
+    // font-weight property.
+    if ($styles['bold'] && is_null($styles['color']))
+        $css .= ($css ? ';' : '') . 'font-weight:bold';
+
+    // color property.
+    if (!is_null($styles['color']))
+        $css .= ($css ? ';' : '') . "color:{$colors[$styles['color'] | $styles['bold'] << 3]}";
+
+    // font-style property.
+    if ($styles['italic'])
+        $css .= ($css ? ';' : '') . 'font-style:italic';
+
+    // Generate and return the HTML.
+    if ($css)
+        $html .= "<span style=\"$css\">";
+
+    return $html;
+}
+
+function ansi2html($str)
+{
+    // Replace database strings
+    $str = preg_replace("/\ (([[:word:].-]+)(:[^ ]+)?(@))?([[:word:].-]+)(:([[:digit:]]+))?(\/([[:word:].-]+))/", " $2$4$5$8", $str);
+
+    // Replace special characters to their corresponding HTML entities
+    //$str = ascii2entities($str);
+    $str = htmlentities($str, ENT_NOQUOTES);
+
+    // Replace ANSI codes.
+    $str = preg_replace_callback('/(?:\e\[\d+(?:;\d+)*m)+/', 'ansi_decode', "$str\033[0m");
+
+    // Strip ASCII bell.
+    // $str = str_replace("\007", '', $str);
+
+    // Replace \n
+    // $str = str_replace("\n", "<br/>\n", $str);
+
+    // Return the parsed string.
+    return $str;
+}
+
+if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+{
+    header('WWW-Authenticate: Basic realm="SmartFACT++"');
+    header('HTTP/1.1 401 Unauthorized');
+    return;
+}
+
+$rc = login();
+if ($rc!="")
+    return header('HTTP/1.1 401 '.$rc);
+
+$refresh = isset($_GET['refresh']) ? $_GET['refresh'] : -1;
+if ($refresh>0 && $refresh<60)
+   $refresh = 60;
+
+unset($_GET['refresh']);
+
+$prg = empty($_GET['log']) ? "dimserver" : $_GET['log'];
+$dir = empty($_GET['dir']) ? "" : $_GET['dir'];
+
+if (!strpos($prg, "/")===false || !strpos($dir, "/")===false)
+{
+    header('HTTP/1.1 403 Access forbidden.');
+    print("HTTP/1.1 403 Access forbidden.\n");
+    return;
+}
+
+if (empty($_GET['dir']))
+{
+    if ($prg=="schedule")
+        $prg = "scripts/schedule.js";
+
+    $filename = "/users/fact/operation/".$prg;
+    if (is_link($filename))
+        $filename = "/users/fact/operation/".dirname(readlink($filename))."/".$prg.".log";
+}
+
+if (empty($filename))
+    $filename = "/users/fact/".$dir."/".$prg.".log";
+
+$size = filesize($filename);
+
+$file=array();
+$fp = fopen($filename, "r");
+
+if ($fp===false)
+{
+    header('HTTP/1.1 403 Access forbidden.');
+    print("Access forbidden.\n");
+    return;
+}
+
+fseek($fp, -min(10000000, $size), SEEK_END);
+fgets($fp);
+while(!feof($fp))
+{
+   $line = fgets($fp);
+   array_push($file, $line);
+}
+fclose($fp);
+
+
+$dir  = basename(dirname($filename));
+$name = basename($filename);
+?>
+
+<!DOCTYPE HTML>
+<html>
+<head>
+<?php
+if ($refresh>0)
+   print("<meta http-equiv='refresh' content='".$refresh."'>\n");
+?>
+<meta charset="UTF-8">
+<title><?php print($dir." - ".$name);?></title>
+<link rel="stylesheet" type="text/css" href="index.css" />
+<script src="jquery-2.0.0.min.js" type="text/javascript"></script>
+<script>
+$(function(){
+   $("#nav li:has(ul)").hover(function(){
+      $(this).find("ul").slideDown(200);
+   }, function(){
+      $(this).find("ul").hide();
+   });
+});
+</script>
+</head>
+<body onload="if (location.hash.length==0) location.hash = '#bottom';">
+<a class="up" href="#top">go to top &uarr;</a>
+<span id="nav">
+   <ul>
+      <li>
+	 <a>Logs</a>
+            <ul>
+	       <li><a href="?log=biasctrl">biasctrl</a></li>
+	       <li><a href="?log=agilentctrl">agilentctrl</a></li>
+	       <li><a href="?log=chatserv">chatserv</a></li>
+	       <li><a href="?log=datalogger">datalogger</a></li>
+	       <li><a href="?log=dimserver"><b>dimserver</b></a></li>
+	       <li><a href="?log=dimctrl">dimctrl</a></li>
+	       <li><a href="?log=drivectrl">drivectrl</a></li>
+	       <li><a href="?log=fadctrl">fadctrl</a></li>
+	       <li><a href="?log=feedback">feedback</a></li>
+	       <li><a href="?log=fscctrl">fscctrl</a></li>
+	       <li><a href="?log=ftmctrl">ftmctrl</a></li>
+	       <li><a href="?log=gcn">gcn</a></li>
+	       <li><a href="?log=gpsctrl">gpsctrl</a></li>
+	       <li><a href="?log=lidctrl">lidctrl</a></li>
+	       <li><a href="?log=magiclidar">magiclidar</a></li>
+	       <li><a href="?log=magicweather">magicweather</a></li>
+	       <li><a href="?log=mcp">mcp</a></li>
+	       <li><a href="?log=pwrctrl">pwrctrl</a></li>
+	       <li><a href="?log=ratecontrol">ratecontrol</a></li>
+	       <li><a href="?log=ratescan">ratescan</a></li>
+	       <li><a href="?log=sqmctrl">sqmctrl</a></li>
+	       <li><a href="?log=temperature">temperature</a></li>
+	       <li><a href="?log=timecheck">timecheck</a></li>
+	       <li><a href="?log=tngweather">tngweather</a></li>
+	       <li><a href="?log=pfminictrl">pfminictrl</a></li>
+            </ul>
+      </li>
+   </ul>
+</span>
+</span>
+<a class="dn" href="#bottom">go to bottom &darr;</a>
+
+
+<H2 id="top"><?php printf("%s - %s   (%dkB)", $dir, $name, $size/1000);?></H2>
+
+<pre style="font-size:small;font-family:'Lucida Console',Monaco,monospace">
+<?php
+foreach ($file as $line)
+    print(ansi2html(substr($line, 0, -1))."\n");
+?>
+
+</pre>
+<div id="bottom"></div>
+</body>
+</html>
Index: branches/FACT++_part_filenames/www/showlog/jquery-2.0.0.min.js
===================================================================
--- branches/FACT++_part_filenames/www/showlog/jquery-2.0.0.min.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/showlog/jquery-2.0.0.min.js	(revision 18732)
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],f="2.0.0",p=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=f.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return p.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,f,p,h,d,g,m,y="sizzle"+-new Date,v=e.document,b={},w=0,T=0,C=ot(),k=ot(),N=ot(),E=!1,S=function(){return 0},j=typeof undefined,D=1<<31,A=[],L=A.pop,q=A.push,H=A.push,O=A.slice,F=A.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=M.replace("w","w#"),$="\\["+R+"*("+M+")"+R+"*(?:([*^$|!~]?=)"+R+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+R+"*\\]",B=":("+M+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",I=RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=RegExp("^"+R+"*,"+R+"*"),_=RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),X=RegExp(R+"*[+~]"),U=RegExp("="+R+"*([^\\]'\"]*)"+R+"*\\]","g"),Y=RegExp(B),V=RegExp("^"+W+"$"),G={ID:RegExp("^#("+M+")"),CLASS:RegExp("^\\.("+M+")"),TAG:RegExp("^("+M.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+B),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),"boolean":RegExp("^(?:"+P+")$","i"),needsContext:RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},J=/^[^{]+\{\s*\[native \w/,Q=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,et=/'|\\/g,tt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,nt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{H.apply(A=O.call(v.childNodes),v.childNodes),A[v.childNodes.length].nodeType}catch(rt){H={apply:A.length?function(e,t){q.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function it(e){return J.test(e+"")}function ot(){var e,t=[];return e=function(n,i){return t.push(n+=" ")>r.cacheLength&&delete e[t.shift()],e[n]=i}}function st(e){return e[y]=!0,e}function at(e){var t=c.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ut(e,t,n,r){var i,o,s,a,u,f,d,g,x,w;if((t?t.ownerDocument||t:v)!==c&&l(t),t=t||c,n=n||[],!e||"string"!=typeof e)return n;if(1!==(a=t.nodeType)&&9!==a)return[];if(p&&!r){if(i=Q.exec(e))if(s=i[1]){if(9===a){if(o=t.getElementById(s),!o||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&m(t,o)&&o.id===s)return n.push(o),n}else{if(i[2])return H.apply(n,t.getElementsByTagName(e)),n;if((s=i[3])&&b.getElementsByClassName&&t.getElementsByClassName)return H.apply(n,t.getElementsByClassName(s)),n}if(b.qsa&&(!h||!h.test(e))){if(g=d=y,x=t,w=9===a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(d=t.getAttribute("id"))?g=d.replace(et,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=f.length;while(u--)f[u]=g+mt(f[u]);x=X.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return H.apply(n,x.querySelectorAll(w)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(I,"$1"),t,n,r)}o=ut.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},l=ut.setDocument=function(e){var t=e?e.ownerDocument||e:v;return t!==c&&9===t.nodeType&&t.documentElement?(c=t,f=t.documentElement,p=!o(t),b.getElementsByTagName=at(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),b.attributes=at(function(e){return e.className="i",!e.getAttribute("className")}),b.getElementsByClassName=at(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),b.sortDetached=at(function(e){return 1&e.compareDocumentPosition(c.createElement("div"))}),b.getById=at(function(e){return f.appendChild(e).id=y,!t.getElementsByName||!t.getElementsByName(y).length}),b.getById?(r.find.ID=function(e,t){if(typeof t.getElementById!==j&&p){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){return e.getAttribute("id")===t}}):(r.find.ID=function(e,t){if(typeof t.getElementById!==j&&p){var n=t.getElementById(e);return n?n.id===e||typeof n.getAttributeNode!==j&&n.getAttributeNode("id").value===e?[n]:undefined:[]}},r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),r.find.TAG=b.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=b.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&p?t.getElementsByClassName(e):undefined},d=[],h=[],(b.qsa=it(t.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+R+"*(?:value|"+P+")"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){var t=c.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&h.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(b.matchesSelector=it(g=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){b.disconnectedMatch=g.call(e,"div"),g.call(e,"[s!='']:x"),d.push("!=",B)}),h=h.length&&RegExp(h.join("|")),d=d.length&&RegExp(d.join("|")),m=it(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,n){if(e===n)return E=!0,0;var r=n.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(n);return r?1&r||!b.sortDetached&&n.compareDocumentPosition(e)===r?e===t||m(v,e)?-1:n===t||m(v,n)?1:u?F.call(u,e)-F.call(u,n):0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],l=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:u?F.call(u,e)-F.call(u,n):0;if(o===s)return lt(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)l.unshift(r);while(a[i]===l[i])i++;return i?lt(a[i],l[i]):a[i]===v?-1:l[i]===v?1:0},c):c},ut.matches=function(e,t){return ut(e,null,null,t)},ut.matchesSelector=function(e,t){if((e.ownerDocument||e)!==c&&l(e),t=t.replace(U,"='$1']"),!(!b.matchesSelector||!p||d&&d.test(t)||h&&h.test(t)))try{var n=g.call(e,t);if(n||b.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return ut(t,c,null,[e]).length>0},ut.contains=function(e,t){return(e.ownerDocument||e)!==c&&l(e),m(e,t)},ut.attr=function(e,t){(e.ownerDocument||e)!==c&&l(e);var n=r.attrHandle[t.toLowerCase()],i=n&&n(e,t,!p);return i===undefined?b.attributes||!p?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null:i},ut.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ut.uniqueSort=function(e){var t,n=[],r=0,i=0;if(E=!b.detectDuplicates,u=!b.sortStable&&e.slice(0),e.sort(S),E){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return e};function lt(e,t){var n=t&&e,r=n&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ct(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}function ft(e,t,n){var r;return n?undefined:r=e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ht(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function dt(e){return st(function(t){return t=+t,st(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}i=ut.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r];r++)n+=i(t);return n},r=ut.selectors={cacheLength:50,createPseudo:st,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(tt,nt),e[3]=(e[4]||e[5]||"").replace(tt,nt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ut.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ut.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return G.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&Y.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(tt,nt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ut.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){f=t;while(f=f[g])if(a?f.nodeName.toLowerCase()===v:1===f.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[y]||(m[y]={}),l=c[e]||[],h=l[0]===w&&l[1],p=l[0]===w&&l[2],f=h&&m.childNodes[h];while(f=++h&&f&&f[g]||(p=h=0)||d.pop())if(1===f.nodeType&&++p&&f===t){c[e]=[w,h,p];break}}else if(x&&(l=(t[y]||(t[y]={}))[e])&&l[0]===w)p=l[1];else while(f=++h&&f&&f[g]||(p=h=0)||d.pop())if((a?f.nodeName.toLowerCase()===v:1===f.nodeType)&&++p&&(x&&((f[y]||(f[y]={}))[e]=[w,p]),f===t))break;return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ut.error("unsupported pseudo: "+e);return i[y]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?st(function(e,n){var r,o=i(e,t),s=o.length;while(s--)r=F.call(e,o[s]),e[r]=!(n[r]=o[s])}):function(e){return i(e,0,n)}):i}},pseudos:{not:st(function(e){var t=[],n=[],r=s(e.replace(I,"$1"));return r[y]?st(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:st(function(e){return function(t){return ut(e,t).length>0}}),contains:st(function(e){return function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:st(function(e){return V.test(e||"")||ut.error("unsupported lang: "+e),e=e.replace(tt,nt).toLowerCase(),function(t){var n;do if(n=p?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===c.activeElement&&(!c.hasFocus||c.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Z.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:dt(function(){return[0]}),last:dt(function(e,t){return[t-1]}),eq:dt(function(e,t,n){return[0>n?n+t:n]}),even:dt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:dt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:dt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:dt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=ht(t);function gt(e,t){var n,i,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=r.preFilter;while(a){(!n||(i=z.exec(a)))&&(i&&(a=a.slice(i[0].length)||a),u.push(o=[])),n=!1,(i=_.exec(a))&&(n=i.shift(),o.push({value:n,type:i[0].replace(I," ")}),a=a.slice(n.length));for(s in r.filter)!(i=G[s].exec(a))||l[s]&&!(i=l[s](i))||(n=i.shift(),o.push({value:n,type:s,matches:i}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ut.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,r){var i=t.dir,o=r&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,r,a){var u,l,c,f=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,r,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[y]||(t[y]={}),(l=c[i])&&l[0]===f){if((u=l[1])===!0||u===n)return u===!0}else if(l=c[i]=[f],l[1]=e(t,r,a)||n,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[y]&&(r=bt(r)),i&&!i[y]&&(i=bt(i,o)),st(function(o,s,a,u){var l,c,f,p=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,p,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(f=l[c])&&(y[h[c]]=!(m[h[c]]=f))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(f=y[c])&&l.push(m[c]=f);i(null,y=[],l,u)}c=y.length;while(c--)(f=y[c])&&(l=i?F.call(o,f):p[c])>-1&&(o[l]=!(s[l]=f))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):H.apply(s,y)})}function wt(e){var t,n,i,o=e.length,s=r.relative[e[0].type],u=s||r.relative[" "],l=s?1:0,c=yt(function(e){return e===t},u,!0),f=yt(function(e){return F.call(t,e)>-1},u,!0),p=[function(e,n,r){return!s&&(r||n!==a)||((t=n).nodeType?c(e,n,r):f(e,n,r))}];for(;o>l;l++)if(n=r.relative[e[l].type])p=[yt(vt(p),n)];else{if(n=r.filter[e[l].type].apply(null,e[l].matches),n[y]){for(i=++l;o>i;i++)if(r.relative[e[i].type])break;return bt(l>1&&vt(p),l>1&&mt(e.slice(0,l-1)).replace(I,"$1"),n,i>l&&wt(e.slice(l,i)),o>i&&wt(e=e.slice(i)),o>i&&mt(e))}p.push(n)}return vt(p)}function Tt(e,t){var i=0,o=t.length>0,s=e.length>0,u=function(u,l,f,p,h){var d,g,m,y=[],v=0,x="0",b=u&&[],T=null!=h,C=a,k=u||s&&r.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(a=l!==c&&l,n=i);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,f)){p.push(d);break}T&&(w=N,n=++i)}o&&((d=!m&&d)&&v--,u&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,f);if(u){if(v>0)while(x--)b[x]||y[x]||(y[x]=L.call(p));y=xt(y)}H.apply(p,y),T&&!u&&y.length>0&&v+t.length>1&&ut.uniqueSort(p)}return T&&(w=N,a=C),b};return o?st(u):u}s=ut.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[y]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ut(e,t[r],n);return n}function kt(e,t,n,i){var o,a,u,l,c,f=gt(e);if(!i&&1===f.length){if(a=f[0]=f[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&p&&r.relative[a[1].type]){if(t=(r.find.ID(u.matches[0].replace(tt,nt),t)||[])[0],!t)return n;e=e.slice(a.shift().value.length)}o=G.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],r.relative[l=u.type])break;if((c=r.find[l])&&(i=c(u.matches[0].replace(tt,nt),X.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=i.length&&mt(a),!e)return H.apply(n,i),n;break}}}return s(e,f)(i,t,!p,n,X.test(e)),n}r.pseudos.nth=r.pseudos.eq;function Nt(){}Nt.prototype=r.filters=r.pseudos,r.setFilters=new Nt,b.sortStable=y.split("").sort(S).join("")===y,l(),[0,0].sort(S),b.detectDuplicates=E,at(function(e){if(e.innerHTML="<a href='#'></a>","#"!==e.firstChild.getAttribute("href")){var t="type|href|height|width".split("|"),n=t.length;while(n--)r.attrHandle[t[n]]=ft}}),at(function(e){if(null!=e.getAttribute("disabled")){var t=P.split("|"),n=t.length;while(n--)r.attrHandle[t[n]]=ct}}),x.find=ut,x.expr=ut.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ut.uniqueSort,x.text=ut.getText,x.isXMLDoc=ut.isXML,x.contains=ut.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(f){for(t=e.memory&&f,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(f[0],f[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!a||n&&!u||(r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))this.cache[i]=t;else for(r in t)o[r]=t[r]},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){return t===undefined||t&&"string"==typeof t&&n===undefined?this.get(e,t):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i=this.key(e),o=this.cache[i];if(t===undefined)this.cache[i]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):t in o?r=[t]:(r=x.camelCase(t),r=r in o?[r]:r.match(w)||[]),n=r.length;while(n--)delete o[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){delete this.cache[this.key(e)]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.substring(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);
+x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,i="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,s=0,a=x(this),u=t,l=e.match(w)||[];while(o=l[s++])u=i?u:!a.hasClass(o),a[u?"addClass":"removeClass"](o)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i,o=x(this);1===this.nodeType&&(i=r?e.call(this,n,o.val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.boolean.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.boolean.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.boolean.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,f,p,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(p=x.event.special[d]||{},d=(o?p.delegateType:p.bindType)||d,p=x.event.special[d]||{},f=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,p.setup&&p.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,f):h.push(f),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){f=x.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,f,p,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),p=x.event.special[d]||{},i||!p.trigger||p.trigger.apply(r,n)!==!1)){if(!i&&!p.noBubble&&!x.isWindow(r)){for(l=p.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:p.bindType||d,f=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),f&&f.apply(a,n),f=c&&a[c],f&&x.acceptData(a)&&f.apply&&f.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||p._default&&p._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return 3===e.target.nodeType&&(e.target=e.target.parentNode),s.filter?s.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=x.expr.match.needsContext,Q={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return t=this,this.pushStack(x(e).filter(function(){for(r=0;i>r;r++)if(x.contains(t[r],this))return!0}));for(n=[],r=0;i>r;r++)x.find(e,this[r],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(Z(this,e||[],!0))},filter:function(e){return this.pushStack(Z(this,e||[],!1))},is:function(e){return!!e&&("string"==typeof e?J.test(e)?x(e,this.context).index(this[0])>=0:x.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],s=J.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function K(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return K(e,"nextSibling")},prev:function(e){return K(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(Q[e]||x.unique(i),"p"===e[0]&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function Z(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var et=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,tt=/<([\w:]+)/,nt=/<|&#?\w+;/,rt=/<(?:script|style|link)/i,it=/^(?:checkbox|radio)$/i,ot=/checked\s*(?:[^=]|=\s*.checked.)/i,st=/^$|\/(?:java|ecma)script/i,at=/^true\/(.*)/,ut=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,lt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};lt.optgroup=lt.option,lt.tbody=lt.tfoot=lt.colgroup=lt.caption=lt.col=lt.thead,lt.th=lt.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ct(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ct(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(gt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&ht(gt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(gt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!rt.test(e)&&!lt[(tt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(et,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(gt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=p.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,f=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&ot.test(d))return this.each(function(r){var i=f.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(gt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,gt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,pt),l=0;s>l;l++)a=o[l],st.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(ut,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=gt(a),o=gt(e),r=0,i=o.length;i>r;r++)mt(o[r],s[r]);if(t)if(n)for(o=o||gt(e),s=s||gt(a),r=0,i=o.length;i>r;r++)dt(o[r],s[r]);else dt(e,a);return s=gt(a,"script"),s.length>0&&ht(s,!u&&gt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,f=e.length,p=t.createDocumentFragment(),h=[];for(;f>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(nt.test(i)){o=o||p.appendChild(t.createElement("div")),s=(tt.exec(i)||["",""])[1].toLowerCase(),a=lt[s]||lt._default,o.innerHTML=a[1]+i.replace(et,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.firstChild;x.merge(h,o.childNodes),o=p.firstChild,o.textContent=""}else h.push(t.createTextNode(i));p.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=gt(p.appendChild(i),"script"),u&&ht(o),n)){l=0;while(i=o[l++])st.test(i.type||"")&&n.push(i)}return p},cleanData:function(e){var t,n,r,i=e.length,o=0,s=x.event.special;for(;i>o;o++){if(n=e[o],x.acceptData(n)&&(t=q.access(n)))for(r in t.events)s[r]?x.event.remove(n,r):x.removeEvent(n,r,t.handle);L.discard(n),q.discard(n)}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"text",async:!1,global:!1,success:x.globalEval})}});function ct(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function pt(e){var t=at.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function ht(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function dt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=x.extend({},o),l=o.events,q.set(t,s),l)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function gt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function mt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&it.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var yt,vt,xt=/^(none|table(?!-c[ea]).+)/,bt=/^margin/,wt=RegExp("^("+b+")(.*)$","i"),Tt=RegExp("^("+b+")(?!px)[a-z%]+$","i"),Ct=RegExp("^([+-])=("+b+")","i"),kt={BODY:"block"},Nt={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:0,fontWeight:400},St=["Top","Right","Bottom","Left"],jt=["Webkit","O","Moz","ms"];function Dt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=jt.length;while(i--)if(t=jt[i]+n,t in e)return t;return r}function At(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function Lt(t){return e.getComputedStyle(t,null)}function qt(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&At(r)&&(o[s]=q.access(r,"olddisplay",Pt(r.nodeName)))):o[s]||(i=At(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=Lt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return qt(this,!0)},hide:function(){return qt(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:At(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=yt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=Dt(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=Ct.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=Dt(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=yt(e,t,r)),"normal"===i&&t in Et&&(i=Et[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),yt=function(e,t,n){var r,i,o,s=n||Lt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Tt.test(a)&&bt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ht(e,t,n){var r=wt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ot(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+St[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+St[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+St[o]+"Width",!0,i))):(s+=x.css(e,"padding"+St[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+St[o]+"Width",!0,i)));return s}function Ft(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Lt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=yt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Tt.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ot(e,t,n||(s?"border":"content"),r,o)+"px"}function Pt(e){var t=o,n=kt[e];return n||(n=Rt(e,t),"none"!==n&&n||(vt=(vt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(vt[0].contentWindow||vt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Rt(e,t),vt.detach()),kt[e]=n),n}function Rt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&xt.test(x.css(e,"display"))?x.swap(e,Nt,function(){return Ft(e,t,r)}):Ft(e,t,r):undefined},set:function(e,n,r){var i=r&&Lt(e);return Ht(e,n,r?Ot(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},yt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=yt(e,t),Tt.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+St[r]+t]=o[r]||o[r-2]||o[0];return i}},bt.test(e)||(x.cssHooks[e+t].set=Ht)});var Mt=/%20/g,Wt=/\[\]$/,$t=/\r?\n/g,Bt=/^(?:submit|button|image|reset|file)$/i,It=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&It.test(this.nodeName)&&!Bt.test(e)&&(this.checked||!it.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace($t,"\r\n")}}):{name:t.name,value:n.replace($t,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)zt(n,e[n],t,i);return r.join("&").replace(Mt,"+")};function zt(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||Wt.test(e)?r(e,i):zt(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)zt(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var _t,Xt,Ut=x.now(),Yt=/\?/,Vt=/#.*$/,Gt=/([?&])_=[^&]*/,Jt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Kt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,tn=x.fn.load,nn={},rn={},on="*/".concat("*");try{Xt=i.href}catch(sn){Xt=o.createElement("a"),Xt.href="",Xt=Xt.href}_t=en.exec(Xt.toLowerCase())||[];function an(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];
+if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function un(e,t,n,r){var i={},o=e===rn;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function ln(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&tn)return tn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Xt,type:"GET",isLocal:Qt.test(_t[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":on,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ln(ln(e,x.ajaxSettings),t):ln(x.ajaxSettings,e)},ajaxPrefilter:an(nn),ajaxTransport:an(rn),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),f=c.context||c,p=c.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Jt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Xt)+"").replace(Vt,"").replace(Zt,_t[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=en.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===_t[1]&&a[2]===_t[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(_t[3]||("http:"===_t[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),un(nn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Kt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Yt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Gt.test(r)?r.replace(Gt,"$1_="+Ut++):r+(Yt.test(r)?"&":"?")+"_="+Ut++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+on+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(f,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=un(rn,c,t,T)){T.readyState=1,u&&p.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=cn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(f,[m,C,T]):h.rejectWith(f,[T,C,y]),T.statusCode(g),g=undefined,u&&p.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(f,[T,C]),u&&(p.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function cn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(f){return{state:"parsererror",error:s?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var pn=[],hn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=pn.pop()||x.expando+"_"+Ut++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(hn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&hn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(hn,"$1"+i):t.jsonp!==!1&&(t.url+=(Yt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,pn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var dn=x.ajaxSettings.xhr(),gn={0:200,1223:204},mn=0,yn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in yn)yn[e]();yn=undefined}),x.support.cors=!!dn&&"withCredentials"in dn,x.support.ajax=dn=!!dn,x.ajaxTransport(function(e){var t;return x.support.cors||dn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete yn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(gn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=yn[o=mn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var vn,xn,bn=/^(?:toggle|show|hide)$/,wn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Tn=/queueHooks$/,Cn=[Dn],kn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=wn.exec(t),s=i.cur(),a=+s||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(x.cssNumber[e]?"":"px"),"px"!==r&&a){a=x.css(i.elem,e,!0)||n||1;do u=u||".5",a/=u,x.style(i.elem,e,a+r);while(u!==(u=i.cur()/s)&&1!==u&&--l)}i.unit=r,i.start=a,i.end=o[1]?a+(o[1]+1)*n:n}return i}]};function Nn(){return setTimeout(function(){vn=undefined}),vn=x.now()}function En(e,t){x.each(t,function(t,n){var r=(kn[t]||[]).concat(kn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function Sn(e,t,n){var r,i,o=0,s=Cn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=vn||Nn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:vn||Nn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(jn(c,l.opts.specialEasing);s>o;o++)if(r=Cn[o].call(l,e,c,l.opts))return r;return En(l,c),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function jn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(Sn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],kn[n]=kn[n]||[],kn[n].unshift(t)},prefilter:function(e,t){t?Cn.unshift(e):Cn.push(e)}});function Dn(e,t,n){var r,i,o,s,a,u,l,c,f,p=this,h=e.style,d={},g=[],m=e.nodeType&&At(e);n.queue||(c=x._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,x.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),a=q.get(e,"fxshow");for(r in t)if(o=t[r],bn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show")){if("show"!==o||a===undefined||a[r]===undefined)continue;m=!0}g.push(r)}if(s=g.length){a=q.get(e,"fxshow")||q.access(e,"fxshow",{}),"hidden"in a&&(m=a.hidden),u&&(a.hidden=!m),m?x(e).show():p.done(function(){x(e).hide()}),p.done(function(){var t;q.remove(e,"fxshow");for(t in d)x.style(e,t,d[t])});for(r=0;s>r;r++)i=g[r],l=p.createTween(i,m?a[i]:0),d[i]=a[i]||x.style(e,i),i in a||(a[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function An(e,t,n,r,i){return new An.prototype.init(e,t,n,r,i)}x.Tween=An,An.prototype={constructor:An,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=An.propHooks[this.prop];return e&&e.get?e.get(this):An.propHooks._default.get(this)},run:function(e){var t,n=An.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):An.propHooks._default.set(this),this}},An.prototype.init.prototype=An.prototype,An.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},An.propHooks.scrollTop=An.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(Ln(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(At).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=Sn(this,x.extend({},e),o);s.finish=function(){t.stop(!0)},(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Tn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function Ln(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=St[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:Ln("show"),slideUp:Ln("hide"),slideToggle:Ln("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=An.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(vn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),vn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){xn||(xn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(xn),xn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=qn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),f=x(e),p={};"static"===c&&(e.style.position="relative"),a=f.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=f.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(p.top=t.top-a.top+s),null!=t.left&&(p.left=t.left-a.left+i),"using"in t?t.using.call(e,p):f.css(p)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=qn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function qn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
Index: branches/FACT++_part_filenames/www/smartfact/config.template.php
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/config.template.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/config.template.php	(revision 18732)
@@ -0,0 +1,9 @@
+<?PHP
+
+$path = "/home/fact/FACT++";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/FACT++_part_filenames/www/smartfact/index.css
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/index.css	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/index.css	(revision 18732)
@@ -0,0 +1,288 @@
+body {
+ 	overflow-x: hidden;
+        overflow-y: auto;
+}
+
+.thead {
+	background: #23a0da url(img/gradient.png) bottom left repeat-x;
+	color: #09415b;
+	padding: 2px 6px 2px 6px;
+/*	padding: 4px 6px;*/
+	border-color: #1379a8;
+	border-style: solid;
+	border-width: 1px 1px 1px 1px;
+	text-shadow: 0 1px 0 #37b2eb;
+	/*-moz-border-radius: 5px 5px 0 0;*/
+	/*-webkit-border-top-left-radius: 5px;*/
+	/*-webkit-border-top-right-radius: 5px;*/
+	font-size: 13px;
+}
+.thead td
+{
+	vertical-align:middle;
+}
+
+/*
+.thead a {
+	color: #09415b;
+	text-decoration: none;
+}
+
+.tcat {
+	background: #444;
+	color: #fff;
+	padding: 4px 6px;
+	font-size: 12px;
+}
+
+.tcat a {
+	color: #fff;
+}
+*/
+
+.tcol0 {
+	border-left: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+        text-align:left;
+        padding-left:5px;
+        margin:0;
+}
+
+.tcol1 {
+	border-bottom: 1px solid #ccc;
+        padding-left:3px;
+        padding-right:3px;
+        margin:0;
+}
+
+.tcol2 {
+	border-right: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+        text-align:right;
+        margin:0;
+        padding-right:5px;
+}
+/*
+.description {
+        text-align:left;
+}*/
+
+.tcell1 {
+        font-weight:bolder;
+        text-align:left;
+}
+
+.tcell2 {
+        text-align:right;
+}
+
+.tcell2l {
+        text-align:left;
+}
+
+.tcell2l pre {
+	display:inline;
+        color:darkblue;
+        font-weight:bold;
+/*        font-size:15px;*/
+}
+
+.tcell2 pre {
+	display:inline;
+        color:darkblue;
+        font-weight:bold;
+/*        font-size:15px;*/
+}
+
+/*
+.tcell3 {
+        text-align:center;
+}*/
+
+/*
+.trow3 {
+	background: #eee;
+	border-bottom: 1px solid #ccc;
+	padding: 4px;
+}
+*/
+
+.icon_black {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 0px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   background-color: rgba(0, 0, 0, 0);
+   background-image: url(img/icons-18-black.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   box-shadow: rgba(255, 255, 255, 0.398438) 0px 1px 0px 0px;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_white {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   background-color: rgba(0, 0, 0, 0.398438);
+   background-image: url(img/icons-18-white.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_login {
+   background-image: url(img/icons-18-white.png);
+   background-repeat: no-repeat;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_color {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   /*background-color: rgba(0, 0, 0, 0.398438);*/
+   background-image: url(img/icons.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   /*box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1.;
+}
+
+/*
+.trow_shaded {
+	background: #ffdde0;
+	border-bottom: 1px solid #fcc;
+}
+
+.trow_selected td {
+	background: #FFFBD9;
+}
+
+.trow_sep {
+	background: #ddd;
+	color: #555;
+	padding: 4px;
+	text-align: center;
+
+	font-size: 12px;
+	font-weight: bold;
+}
+*/
+.tfoot {
+	background: #737373 url(img/gradient.png) bottom left repeat-x;
+	color: #fff;
+	border-color: #525252;
+	border-style: solid;
+	border-width: 1px 1px 1px 1px;
+	vertical-align: middle;
+	padding: 0px 6px 0px 6px;
+	/*-moz-border-radius: 0 0 5px 5px;*/
+	/*-webkit-border-bottom-left-radius: 5px;*/
+	/*-webkit-border-bottom-right-radius: 5px;*/
+	text-shadow: 0 -1px 0 #333;
+	/*font-size: 10px;*/
+}
+
+.tfoot td {
+	vertical-align:middle;
+}
+/*
+.tfoot a {
+	color: #fff;
+	text-decoration: none;
+}*/
+
+.container {
+ 	padding: 0;
+        margin: 0;
+        width: 100%;
+        border-left:  1px solid #ccc;
+        border-right: 1px solid #ccc;
+}
+
+h1 {
+ 	margin:0;
+}
+
+h2 {
+ 	margin:0;
+}
+
+h3 {
+ 	margin:0;
+ 	color:#206;
+}
+
+h4 {
+ 	margin:0;
+ 	color:#206;
+}
+
+.astro {
+	width:100%;
+}
+
+.astro td:nth-child(1) {
+        padding:0px 0px 0px 5px;
+        margin:0;
+}
+.astro td:nth-child(2) {
+	text-align:right;
+        padding:0px 5px 0px 0px;
+        margin:0;
+}
+.astro td:nth-child(3) {
+	text-align:center;
+        padding:0px 5px 0px 0px;
+        margin:0;
+}
+
+.sources B {
+	background:#eef;
+        padding-left:4px;
+        padding-right:4px;
+}
+
+.help P {
+	text-align:justify;
+}
+.help li {
+        padding-left:4px;
+        margin-bottom:1ex;
+}
+.help li:nth-child(1) {
+	background:#f0fff0;
+}
+.help li:nth-child(2) {
+	background:#fffff0;
+}
+.help li:nth-child(3) {
+	background:#fff8f0;
+}
+.help li:nth-child(4) {
+	background:#fcfcfc;
+}
+.help li:nth-child(5) {
+	background:#f0f0ff;
+}
Index: branches/FACT++_part_filenames/www/smartfact/index.html
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/index.html	(revision 18732)
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<html>
+
+<head>
+  <title>SmartFACT++</title>
+  <script src="index.js"></script>
+  <link rel="stylesheet" type="text/css" href="index.css" />
+  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=0, minimum-scale=1, maximum-scale=1, target-densitydpi=device-dpi" />
+</head>
+
+<body id="body" onload="onload();" onresize="onresize();">
+<audio autoplay id="audio">
+  <source type="audio/mp3"/>
+  <source type="audio/ogg"/>
+</audio>
+</body>
+</html>
Index: branches/FACT++_part_filenames/www/smartfact/index.js
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/index.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/index.js	(revision 18732)
@@ -0,0 +1,1605 @@
+"use strict";
+
+var debug = false;
+
+var codedMap = "966676:6:A;68656364626Y?\\?;A=A<AGADAN4K4i5g5h5o506W?Z?]?_?>A@A?AJAIAFACAM4J4H4f5d5e5l5m5n516X?[?^?N?P?AA1ABAVAUAKAHAEAO4L4I4G4E4c5a5b5M6j5k5V6Y6\\6_6G?J?O?Q?S?2A4A3AYAXAWAbA_AnAkAhA3404F4D4B4`5^5_5J6K6L6S6T6W6Z6]6E?H?K?M?R?T?V?5A7A6A\\A[AZAeAdAaA^AmAjAgA24o3m3C4A4?4]5[5\\5G6H6I6P6Q6R6U6X6[6^6F?I?L?<?>?U?;@=@8Ah@9AMALA]ABCACfAcA`AoAlAiA4414n3l3<4@4>425Z5X5Y5D6E6F698N6O608E8H8K8H>K>N>?>B>=???A?<@>@@@i@k@j@PAOANAECDCCC<C9CZCWCTC=3:3734313=4;4943515o4W5U5V5A6B6C6687888m7n7C8F8I8F>I>L>=>@>C>E>@?B?D??@A@C@l@n@m@SARAQAHCGCFC?C>C;C8CYCVCSC<393633303n2:4846405n4l4T5R5S5>6?6@6384858j7k7l7o7D8G8J8G>J>M>>>A>D>4>6>C?3?5?B@2@4@o@_@0ALBKBTA0CoBIC8D7D@C=C:C[CXCUC>3;3835323o2m2k27454j3m4k4i4Q5O5P5C7<6=6g71828o8h7i7S9<8?8B8Q>T>W>@=C=F=e<h<5>7>9>4?6?8?3@5@7@`@b@a@OBNBMB3C2C1C;D:D9D_D\\DQCNCKCF3C3@3>2;282Z1W1l2j2h2k3i3g3j4h4f4N5L5M5@7A7B7d7e7f7l8m8n8P9Q9:8=8@8O>R>U>>=A=D=c<f<i<k<8>:><>7?9?;?6@8@:@c@e@d@RBQBPB6C5C4C>D=D<DbDaD^D[DPCMCJCE3B3?3=2:272Y1V1T1i2g2e2h3f3d3g4e4c4K5I5J5=7>7?7a7b7c7i8j8k8M9N9O9R9;8>8A8P>S>V>?=B=E=d<g<j<Z<\\<;>k=m=:?j>l>9@i?k?f@V@g@CBBBSBgBfB7CoCnC?DSDRDcD`D]DRCOCLCG3D3A3?2<292[1X1U1S1Q1f2d2b2e3c3a3d4b4`4H5F5G5:7;7<7^7_7`7f8g8h8J9K9L97:::=:@:C:F:I:I=L=O=7=:===n<1=[<]<_<l=n=0>k>m>o>j?l?n?W@Y@X@FBEBDBjBiBhB2D1D0DVDUDTDCE@EOELEIEXEUERE5222o1l1i1f1c1`1R1P1N1c2a2_2b3`3^3a4_4]4<5:5;5778797[7\\7]7c8d8e8G9H9I94:5:8:;:>:A:D:G:G=J=M=5=8=;=l<o<2=4=^<`<b<o=1>3>n>0?2?m?o?1@Z@\\@[@IBHBGBmBlBkB5D4D3DYDXDWDFEEEBE?ENEKEHEWETEQE4212n1k1h1e1b1_1]1O1M1K1`2^2\\2_3]3[3^4\\4Z4957585475767X7Y7Z7`8a8b8D9E9F91:2:3:6:9:<:?:B:E:H:H=K=N=6=9=<=m<0=3=d;f;a<H<J<2>b=d=1?a>c>0@`?b?]@D@^@:B9BJB^B]BnBfCeC6DJDIDZDnDmDGEDEAEPEMEJEYEVESE623202m1j1g1d1a1^1\\1[0L1J1?1]2[2Y2\\3Z3X3[4Y4W4654555172737U7V7W7]8^8_8A9B9C9e9o90:n9g:j:m:L:O:R:U:X:[:];`;c;T;W;Z;7<9<e;g;i;I<K<M<c=e=g=b>d>f>a?c?e?E@G@F@=B<B;BaB`B_BiChCgCMDLDKD1E0EoD9E7E<F9F6FaE^E[EjEgEdER0O0L0I0F0C0n0l0\\0Z0X0@1>1<1Z2X2V2Y3W3U3X4V4T4E5C5D5n6o607R7S7T7Z8[8\\8>9?9@9b9c9d9l9m9e:h:k:J:M:P:S:V:Y:[;^;a;R;U;X;6<8<:<;<h;j;l;L<N<P<f=h=j=e>g>i>d?f?h?N@Q@H@@B?B>BdBcBbBlCkCjCPDODND4E3E2E;E:E8E6E;F8F5F`E]EZEiEfEcEQ0N0K0H0E0B0m0k0j0Y0W0U0=1;191W2U2S2V3T3R3U4S4Q4B5@5A5k6l6m6O7P7Q7W8X8Y8;9<9=9_9`9a9j9k9\\:_:f:i:l:K:N:Q:T:W:Z:\\;_;b;S;V;Y;C<E<G<<<m;k;1<2<O<Q<S<i=[=P=h>X>Z>g?M@O@R@U@S@J@I@AB1B0BeBTB\\CmCAD@DQDiDhD5EdD<E4F2F0F=F:F7FbE_E\\EkEhEeES0P0M0J0G0D011o0h0g0e0V0T0`0:181Q2T2R2H2S3Q3P3R4P4K3?5=5>5c6i6j6h6M7N7L7U8V8T899:9W9]9^9\\9g9h9i9]:`:c:5;2;o:>;;;8;P;M;J;G;D;A;?<A<D<F<=<><n;o;3<5<R<T<Y=Z=Q=R=Y>[>\\>^>P@T@L@K@5B4B3B2BVBUB^C]CCDBDkDjDfDeD>E=E3F1FnElE@FCFFFIFLFOF;0>0A0205080513101i0f0d0c0b0_0I1H1D1P2O2G2F2D2O3N3M3J3H3a6b6e6f6g6I7J7K7R8S8397989V9Y9Z9[9f9^:a:d:4;1;n:=;:;7;O;L;I;F;C;@;@<B<0<4<U<V<X<`=]=\\=S=U=W=]>_>`>8B7B6BZBXBWB_CaC`CFDEDDDlDgDoEmE>FAFDFGFJFMF90<0?0003060714121a0^0]0G1C1B1N2L2E2C2B2@2L3I3`6d6E7F7G7H7O8Q8192969T9U9X96;3;0;?;<;9;Q;N;K;H;E;B;W<Y<^=_=a=T=V=X=\\B[BYBdCcCbCHDGD?FBFEFHFKFNF:0=0@0104070F1E1A1M2K2J2I2A2D7L8M8N8P809495961b:";
+var map = new Array(1440);
+
+function $(id) { return document.getElementById(id); }
+function $new(name) { return document.createElement(name); }
+function $txt(txt) { return document.createTextNode(txt); }
+function trim(str) { return str.replace(/^\s\s*/, "").replace(/\s*\s$/, ""); }
+function valid(str) { if (!str) return false; if (str.length==0) return false; return true;}
+function isSliding() { var z = $("body").visiblePage/*getAttribute("data-visible")*/; return $("table"+z) ? $("table"+z).offsetLeft!=0 : false; }
+function htmlDecode(input) { var e = $new('div'); e.innerHTML = input; return e.firstChild ? e.firstChild.nodeValue : input; }
+function setUTC(el, time) { var str = time.toUTCString(); var utc = str.substr(str.length-12, 8); el.innerHTML = "&#8226;&nbsp;"+utc+"&nbsp;UTC&nbsp;&#8226;"; }
+
+function cycleCol(el)
+{
+    var col = el.dotColor;//el.getAttribute("data-color");
+    col++;
+    col %= 31;
+    el.dotColor = col; //setAttribute("data-color", col);
+    if (col>16)
+        col = 31-col;
+    var hex = col.toString(16);
+    el.style.color = "#"+hex+"0"+hex+"0"+hex+"f";
+}
+
+function onload()
+{
+    try
+    {
+        var xmlLoad = new XMLHttpRequest();
+        xmlLoad.open('POST', "index.php?load", true);
+        xmlLoad.setRequestHeader("Cache-Control", "no-cache");
+        xmlLoad.setRequestHeader("If-Match", "*");
+        xmlLoad.onload = function()
+        {
+            if (xmlLoad.status==401)
+                login("");
+
+            if (xmlLoad.status!=200)
+            {
+                //alert("ERROR[0] - HTTP request '"+xmlLoad.statusText+" ["+xmlLoad.status+"]");
+                //return;
+            }
+
+            if (xmlLoad.status==200)
+                login(xmlLoad.responseText);
+        };
+        xmlLoad.send(null);
+    }
+    catch(e)
+    {
+        // FIXME: Add a message to the body.
+        alert("Your browser doesn't support dynamic reload.");
+        return;
+    }
+
+    var name = location.hash.length==0 ? "fact" : location.hash.substr(1);
+
+    var args = location.search.substr(1).split('&');
+
+    for (var i=0; i<args.length; i++)
+    {
+        switch (args[i])
+        {
+        //case "max":     $("body").setAttribute("data-max",     "yes"); continue;
+        //case "noslide": $("body").setAttribute("data-noslide", "yes"); continue;
+        case "max":     $("body").displayMax     = true; continue;
+        case "noslide": $("body").displayNoslide = true; continue;
+        case "sound":   $("body").sound          = true; continue;
+        }
+
+        var entry = args[i].split('=');
+        if (entry.length!=2)
+            continue;
+
+        switch (entry[0])
+        {
+        case "w": $("body").displayFixedWidth  = entry[1]; break; //setAttribute("data-width",  entry[1]); break;
+        case "h": $("body").displayFixedHeight = entry[1]; break; //setAttribute("data-height", entry[1]); break;
+        }
+    }
+
+    /*
+     alert("0 -- "+navigator.appCodeName+"\n"+
+          "1 -- "+navigator.appName+"\n"+
+          "2 -- "+navigator.appVersion+"\n"+
+          "3 -- "+navigator.platform+"\n"+
+          "4 -- "+navigator.userAgent);
+          */
+    loadPage(name, 0, 0);
+}
+
+function login(user)
+{
+    var z = $("body").visiblePage;
+    var l = $("login"+z);
+
+    $("body").user = user;
+
+    if (l)
+    {
+        l.setAttribute("style", "background-position:-"+(user?"720":"755")+"px 50%;");
+        l.alt = user;
+    }
+}
+
+function onresize()
+{
+    var z = $("body").visiblePage/*getAttribute("data-visible")*/;
+
+    //$("table"+z).style.width="100%";
+    $("image"+z).style.width="1px";
+    $("canvas"+z).width=1;
+
+    doresize(z);
+
+}
+
+function loadPage(name, z, dz)
+{
+    if (isSliding())
+        return;
+
+    var xmlPage = new XMLHttpRequest();
+    xmlPage.open('GET', "struct/"+name+'.page', true);
+    xmlPage.setRequestHeader("Cache-Control", "no-cache");
+    xmlPage.setRequestHeader("If-Match", "*");
+    xmlPage.onload = function ()
+    {
+        if (xmlPage.status!=200)
+        {
+            alert("ERROR[0] - HTTP request '"+name+".page': "+xmlPage.statusText+" ["+xmlPage.status+"]");
+            //setTimeout("loadPage('+name+')", 5000);
+            /****** invalidate ******/
+            return;
+        }
+
+        if (!isSliding())
+        {
+            buildPage(name, xmlPage.responseText, z, dz);
+            changePage(z, z+dz);
+        }
+
+        //changePage(name, xmlHttp.resposeText);
+        //slideOut(name, xmlHttp.responseText);
+        //displayPage(name, xmlHttp.responseText);
+        //onresize(true);
+    };
+
+    xmlPage.send(null);
+
+    location.hash = name;
+}
+
+function sendCommand(command)
+{
+    if (command=="stop")
+    {
+        if (!confirm("Do you really want to stop a running script?"))
+            return;
+    }
+
+    var debug = false;
+
+    var uri = "index.php?";
+    if (debug==true)
+        uri += "debug&";
+    uri += command;
+
+    var xmlCmd = new XMLHttpRequest();
+    xmlCmd.open('POST', uri, true);
+    xmlCmd.setRequestHeader("Cache-Control", "no-cache");
+    xmlCmd.setRequestHeader("If-Match", "*");
+    xmlCmd.onload = function ()
+    {
+        if (xmlCmd.status==401)
+            login("");
+
+        if (xmlCmd.status!=200)
+        {
+            alert("ERROR[1] - HTTP request: "+xmlCmd.statusText+" ["+xmlCmd.status+"]");
+            return;
+        }
+
+        if (xmlCmd.responseText.length==0)
+        {
+            alert("No proper acknowledgment of command execution received.");
+            return;
+        }
+
+        var txt = xmlCmd.responseText.split('\n');
+        login(txt[0]);
+        if (txt.length>1)
+            alert(xmlCmd.responseText);
+        else
+            alert("Command submitted.");
+    };
+    xmlCmd.send(null);
+}
+
+
+function submit(script, isIrq)
+{
+    var inputs = document.getElementsByTagName("input");
+
+    var args = isIrq ? "interrupt="+script : "start="+script+".js";
+
+    for (var i=0; i<inputs.length; i++)
+        args += "&"+inputs[i].name+"="+inputs[i].value;
+
+    var selects = document.getElementsByTagName("select");
+    for (var i=0; i<selects.length; i++)
+        args += "&"+selects[i].name+"="+selects[i].value;
+
+    sendCommand(args);
+}
+
+function buildPage(name, text, oldz, dz)
+{
+    var fname = dz==0 ? "fact" : $("table"+oldz).pageName;//getAttribute("data-file");
+
+    var z = oldz + dz;
+
+    var lines = text.split('\n');
+
+    if (lines.length==0)
+    {
+        alert("buildPage - received data empty.");
+        return;
+    }
+
+    if (lines[0].length==0)
+    {
+        alert("buildPage - title missing");
+        return;
+    }
+
+    $("audio").date = new Date();
+
+    var title  = lines[0];
+    var is_cmd = title[0]=='*' || title[0]=='!';
+    var is_irq = title[0]=='!';
+    var script = title.split('|');
+    if (is_cmd)
+    {
+        title = script.length>=1 ? script[0].substr(1) : title.substr(1);
+        script = script.length>=1 ? script[1] : name;
+    }
+
+    // ==================================================================
+
+    var th = $new("thead");
+    th.colSpan = 3;
+    th.width = "100%";
+
+    var htr = $new("tr");
+    th.appendChild(htr);
+
+    var htd = $new("td");
+    htd.setAttribute("class", "thead");
+    htd.colSpan = 3;
+    htd.width = "100%";
+    htr.appendChild(htd);
+
+    // -------------
+
+    var htab = $new("table");
+    htab.width = "100%";
+    htd.appendChild(htab);
+
+    var hhtr = $new("tr");
+    htab.appendChild(hhtr);
+
+    var htd0 = $new("td");
+    var htd1 = $new("td");
+    var htd2 = $new("td");
+    var htd3 = $new("td");
+    var htd4 = $new("td");
+    var htd5 = $new("td");
+    var htd6 = $new("td");
+    htd0.setAttribute("class", "tcell1");
+    htd1.setAttribute("class", "tcell2");
+    htd2.setAttribute("class", "tcell1");
+    htd2.setAttribute("width", "1px");
+    htd3.setAttribute("class", "tcell1");
+    htd3.setAttribute("width", "1px");
+    htd4.setAttribute("width", "1px");
+    htd5.setAttribute("width", "1px");
+    htd6.setAttribute("width", "1px");
+    hhtr.appendChild(htd6);
+    hhtr.appendChild(htd4);
+    hhtr.appendChild(htd3);
+    hhtr.appendChild(htd0);
+    hhtr.appendChild(htd1);
+    hhtr.appendChild(htd2);
+    hhtr.appendChild(htd5);
+
+    var div0 = $new("div");
+    var div1 = $new("div");
+    var div2 = $new("div");
+    var div3 = $new("div");
+    var div4 = $new("div");
+    var div5 = $new("div");
+    div0.id = "login"+z;
+    div0.alt = $("body").user;
+    div4.id = "warn"+z;
+    div5.id = "speaker"+z;
+    div0.setAttribute("class", "icon_login");
+    div2.setAttribute("class", "icon_white");
+    div4.setAttribute("class", "icon_color");
+    div5.setAttribute("class", "icon_color");
+    div0.setAttribute("style", "background-position:-"+($("body").user?"720":"755")+"px 50%;");
+    div2.setAttribute("style", "background-position:-396px 50%;");
+    div4.setAttribute("style", "background-position:-12px -13px;display:none;");
+    div5.setAttribute("style", "background-position:-189px -57px;");
+    div0.onclick = function () { sendCommand("logout"); };
+    div2.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage(fname,   z, -dz); };
+    div4.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('error', z,  +1); };
+
+    if (name=="fact")
+    {
+        div3.setAttribute("class", "icon_color");
+        div3.setAttribute("style", "background-position:-58px -146px;");
+    }
+    else
+    {
+        div3.setAttribute("class", "icon_white");
+        div3.setAttribute("style", "background-position:-575px 50%;");
+        div3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('fact',  z,  -1); };
+    }
+
+    var sp0 = $new("span");
+    var sp1 = $new("span");
+    var sp2 = $new("span");
+    sp0.id = "ldot" +z;
+    sp1.id = "title"+z;
+    sp2.id = "rdot" +z;
+    sp1.setAttribute("style", "font-size:large;");
+    //sp0.setAttribute("data-color", "3");
+    //sp2.setAttribute("data-color", "3");
+    sp0.dotColor = 3;
+    sp2.dotColor = 3;
+    sp0.appendChild($txt(" \u2022 "));
+    sp1.appendChild($txt(title));
+    sp2.appendChild($txt(" \u2022 "));
+    if (is_cmd)
+    {
+        sp1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; submit(script, is_irq); this.style.backgroundColor=''; };
+    }
+    else
+    {
+        if (name!='control')
+            sp1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.15)'; loadPage('control', z, +1); };
+    }
+
+    div1.setAttribute("style", "font-size:small;");
+    div1.id = "reporttime"+z;
+    div1.appendChild($txt("---"));
+
+    div1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; sendCommand('stop'); this.style.backgroundColor=''; };
+
+    htd0.appendChild(sp0);
+    htd0.appendChild(sp1);
+    htd0.appendChild(sp2);
+
+    htd6.appendChild(div0);     // Login
+    htd1.appendChild(div1);
+    if (dz!=0/* && z+dz!=0*/)
+        htd2.appendChild(div2); // back
+    htd3.appendChild(div3);     // home
+    htd4.appendChild(div4);     // Warning
+    htd5.appendChild(div5);     // Speaker
+
+    // ==================================================================
+
+    var tf = $new("tfoot");
+
+    var ftr = $new("tr");
+    tf.appendChild(ftr);
+
+    var ftd = $new("td");
+    ftd.setAttribute("class",   "tfoot");
+    ftd.width = "100%";
+    ftd.colSpan = 3;
+    ftr.appendChild(ftd);
+
+    var ftab = $new("table");
+    ftab.width = "100%";
+    ftd.appendChild(ftab);
+
+    var ftdH = $new("td");
+    var ftd0 = $new("td");
+    var ftd1 = $new("td");
+    var ftd2 = $new("td");
+    var ftd3 = $new("td");
+    var ftd4 = $new("td");
+    ftdH.setAttribute("width", "1px");
+    ftd2.setAttribute("width", "1px");
+    ftd3.setAttribute("width", "1px");
+    ftd4.setAttribute("width", "1px");
+
+    ftdH.setAttribute("class", "tcell1");
+    ftd0.setAttribute("class", "tcell1");
+    ftd1.setAttribute("class", "tcell2");
+    ftd2.setAttribute("class", "tcell2");
+    ftd3.setAttribute("class", "tcell2");
+    ftd4.setAttribute("class", "tcell2");
+
+    ftab.appendChild(ftdH);
+    ftab.appendChild(ftd0);
+    ftab.appendChild(ftd1);
+    ftab.appendChild(ftd2);
+    ftab.appendChild(ftd3);
+    ftab.appendChild(ftd4);
+
+    var fdivH = $new("div");
+    var fdiv0 = $new("span");
+    var fdiv1 = $new("span");
+    var fdiv2 = $new("div");
+    var fdiv3 = $new("div");
+    var fdiv4 = $new("div");
+    ftd0.style.paddingLeft = "5px";
+    fdiv4.id="cmd"+z;
+
+    fdiv2.setAttribute("class", "icon_white");
+    fdiv3.setAttribute("class", "icon_white");
+    fdiv4.setAttribute("class", "icon_white");
+    fdiv2.setAttribute("style", "background-position:-72px 50%;");
+    fdiv4.setAttribute("style", "background-position:-432px 50%;");
+    fdiv2.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; sendCommand('stop'); this.style.backgroundColor=''; };
+    if (is_cmd)
+    {
+        fdiv3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; submit(script, is_irq); this.style.backgroundColor=''; };
+        fdiv3.setAttribute("style", "background-position:-109px 50%;");
+    }
+    else
+    {
+        fdiv3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('control', z,  +1); };
+        fdiv3.setAttribute("style", "background-position:-289px 50%;");
+    }
+
+    if (name.substr(0, 5)=="help-")
+    {
+        fdivH.setAttribute("class", "icon_color");
+        fdivH.setAttribute("style", "background-position:-408px -57px;");
+        //fdivH.setAttribute("style", "background-position:-13px -57px;");
+    }
+    else
+    {
+        fdivH.setAttribute("class", "icon_white");
+        fdivH.setAttribute("style", "background-position:-611px 50%;");
+        fdivH.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('help-'+name, z, +1); };
+    }
+    fdiv4.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('scriptlog', z,  +1); };
+
+
+    fdiv0.setAttribute("style", "font-size:large;");
+    fdiv1.setAttribute("style", "font-size:small;");
+    fdiv1.id = "localtime"+z;
+
+    fdiv0.onclick = function () { window.location='https://www.fact-project.org/logbook/misc.php?action=mobile'; }
+    fdiv0.appendChild($txt("logbook"));
+    fdiv1.appendChild($txt("loading..."));
+
+    ftdH.appendChild(fdivH);
+    ftd0.appendChild(fdiv0);
+    ftd1.appendChild(fdiv1);
+    ftd2.appendChild(fdiv2);
+    if (is_cmd || name!='control')
+        ftd3.appendChild(fdiv3);
+    if (name!='scriptlog')
+        ftd4.appendChild(fdiv4);
+
+    // ==================================================================
+
+    var tbody = $new("tbody");
+
+    for (var i=0; i<lines.length; i++)
+    {
+        lines[i] = trim(lines[i]);
+
+        if (lines[i][0] == '#')
+            lines.splice(i--, 1);
+    }
+
+    // Concatenate consecutive lines until they have at least two colons
+    for (var i=2; i<lines.length; i++)
+    {
+        if (lines[i].length==0)
+            continue;
+
+        while (i<lines.length)
+        {
+            var cols = lines[i-1].split('|');
+            if (cols.length>=3)
+                break;
+
+            lines[i-1] += lines[i].length==0 ? '<p/>' : " "+lines[i];
+            lines.splice(i,1);
+        }
+    }
+
+    var counter = 1;
+    for (var i=1; i<lines.length; i++)
+    {
+        lines[i] = trim(lines[i]);
+
+        if (lines[i].length==0)
+            continue;
+
+        var cols = lines[i].split('|');
+        if (cols.length != 3 && cols.length !=4)
+        {
+            alert("Wrong number of columns in line #"+i+" in '"+name+"': '"+lines[i]+"' N(cols)="+cols.length);
+            continue;
+        }
+
+        var check = cols[1].split("=");
+
+        if (check.length>1 && (check[0]=="camera" || check[0]=="hist"))
+        {
+            var data = cols[1].substring(check[0].length+1).split("/");
+
+            var tr = $new("tr");
+            tr.setAttribute("class", "row");
+            //tr.setAttribute("style", "margin:0;padding:0;");
+
+            var td = $new("td");
+            td.setAttribute("class", "container");
+            td.id = "container";
+            td.colSpan = 3;
+            tr.appendChild(td);
+
+            var canv = $new("canvas");
+            canv.id = "canvas"+z;
+            canv.width = "1";
+            canv.height = "1";
+            //canv.onclick = function () { save(); }
+            //canv.setAttribute("data-type", check[0]);
+            //canv.setAttribute("data-file", data[0]);
+            //canv.setAttribute("data-data", cols[1].substring(check[0].length+data[0].length+2));
+            canv.dataType = check[0];
+            canv.fileName = data[0];
+            canv.dataUnit = htmlDecode(cols[1].substring(check[0].length+data[0].length+2));
+//            canv.setAttribute("style", "display:none;");
+            td.appendChild(canv);
+
+            var img = $new("img");
+            img.src = "img/dummy.png";//needed in firefox
+            img.id = "image"+z;
+            img.setAttribute("style", "width:1px;height:15px;display:none;");
+            td.appendChild(img);
+
+            tbody.appendChild(tr);
+            continue;
+        }
+
+        var tr = $new("tr");
+        tr.setAttribute("class", "row");
+
+        if (valid(cols[0]))
+        {
+            tr.linkName = cols[0];
+            tr.onclick = function () { this.style.background='#ccb'; loadPage(this.linkName, z, -1); };
+        }
+
+        if (valid(cols[3]))
+        {
+            tr.linkName = cols[3];
+            tr.onclick = function () { this.style.background='#cbb'; loadPage(this.linkName, z, +1); };
+        }
+
+        var td0 = $new("td");
+        td0.setAttribute("class", "tcol0");
+        tr.appendChild(td0);
+
+        if (check.length>0 && check[0]=="image")
+        {
+            var img = $new("img");
+            img.style.width="100%";
+            img.style.display="block";
+            img.src = "img/"+check[1];
+            td0.style.paddingLeft=0;
+            td0.style.border=0;
+            td0.colSpan=3;
+            td0.appendChild(img);
+
+            tbody.appendChild(tr);
+            continue;
+        }
+
+        if (valid(cols[0]))
+        {
+            var sp = $new("div");
+            sp.setAttribute("class", "icon_black");
+            sp.setAttribute("style", "background-position: -144px 50%;");
+            td0.appendChild(sp);
+        }
+
+        var td1 = $new("td");
+        td1.setAttribute("class", "tcol1");
+        td1.width = "100%";
+        tr.appendChild(td1);
+
+        var td2 = $new("td");
+        td2.setAttribute("class", "tcol2");
+        td2.width = "18px";
+
+        if (valid(cols[3]))
+        {
+            var sp = $new("div");
+            sp.setAttribute("class", "icon_black");
+            sp.setAttribute("style", "background-position: -108px 50%;");
+            td2.appendChild(sp);
+        }
+        tr.appendChild(td2);
+
+        var tab = $new("table");
+        tab.width = "100%";
+        td1.appendChild(tab);
+
+        var innertr = $new("tr");
+        tab.appendChild(innertr);
+
+        var cell1 = $new("td");
+        cell1.setAttribute("class", "tcell1");
+
+        var cell2 = $new("td");
+        cell2.setAttribute("class", valid(cols[1]) ? "tcell2" : "tcell2l");
+
+        if (check.length>0 && check[0]=="select")
+        {
+            var args = check[1].split('/');
+
+            if (args.length<2)
+                alert("Argument name missing for'"+check[1]+"'");
+            else
+            {
+                var div = $new("div");
+                div.innerHTML = args[0];
+                cell1.appendChild(div);
+
+                var input = $new("SELECT");
+                input.name = args[1];
+                for (var j=2; j<args.length; j++)
+                    input.options.add(new Option(args[j]));
+                cell2.appendChild(input);
+            }
+
+        }
+        if (check.length>0 && check[0]=="input")
+        {
+            var opt = check[1].split('/');
+
+            if (opt.length<2)
+                alert("Argument name missing for'"+check[1]+"'");
+            else
+            {
+                var div = $new("div");
+                div.innerHTML = opt[0];
+                cell1.appendChild(div);
+
+                var input = $new("input");
+                input.name = opt[1];
+                input.type = "text";
+                input.maxlength = 80;
+                input.style.textAlign = "right";
+                input.style.width = "100%";
+                if (opt.length>2)
+                    input.value=opt[2];
+
+                cell2.appendChild(input);
+            }
+        }
+        if (check.length>0 && check[0]=="checkbox")
+        {
+            var opt = check[1].split('/');
+
+            var div = $new("div");
+            div.innerHTML = opt[0];
+            cell1.appendChild(div);
+
+            var input = $new("input");
+            input.type  = "checkbox";
+            input.name  = opt[1];
+            input.onclick = function() { this.value=this.checked; };
+            var c = opt.length>2 && opt[2]=="1";
+            input.checked = c;
+            input.value = c;
+
+            cell2.appendChild(input);
+        }
+        if (check.length==0 || (check[0]!="input" && check[0]!="select" && check[0]!="checkbox"))
+        {
+            var div = $new("div");
+            div.innerHTML = cols[1];
+            cell1.appendChild(div);
+
+            if (cols.length>2 && cols[2].length>0)
+            {
+                cell2.id = "data"+z+"-"+counter;
+                cell2.dataFormat = cols[2];
+                cell2.appendChild($txt("---"));
+                counter++;
+            }
+            else
+                cell1.setAttribute("class", "description");
+        }
+
+        innertr.appendChild(cell1);
+        innertr.appendChild(cell2);
+
+        tbody.appendChild(tr);
+    }
+
+    // ==================================================================
+
+    if (debug == true)
+    {
+        tr = $new("tr");
+        tr.setAttribute("class", "row");
+
+        td = $new("td");
+        td.id = "debug"+z;
+        td.colSpan = 3;
+        tr.appendChild(td);
+
+        tbody.appendChild(tr);
+    }
+
+    // ==================================================================
+
+    var table = $("table"+z);
+    if (table)
+        $("body").removeChild(table);
+
+    table = $new("table");
+    table.id = "table"+z;
+    table.border = 0;
+    table.cellSpacing = 0;
+    table.cellPadding = "0px";
+    //table.setAttribute("style", "overflow:hidden;position:fixed;top:0px;left:"+window.innerWidth+"px;")
+    table.setAttribute("style",
+                       "position:fixed;width:100%;top:0px;"+
+                       "left:"+window.innerWidth+"px;");
+
+    table.appendChild(th);
+    table.appendChild(tbody);
+    table.appendChild(tf);
+
+    $("body").appendChild(table);
+
+    // ==================================================================
+
+    /*
+     // Scrollbar for just the body
+     table.style.position  = "fixed";
+     th.style.position     = "aboslute";
+     tf.style.position     = "aboslute";
+     tbody.style.overflowY = "auto";
+     tbody.style.display   = "block";
+     tbody.style.height    = (window.innerHeight-th.clientHeight-tf.clientHeight)+"px";
+     tbody.id = "tbody"+z;
+     th.id    = "thead"+z;
+     tf.id    = "tfoot"+z;
+     */
+
+    // ==================================================================
+
+    table.pageName = name;//setAttribute("data-file", name);
+    table.counter = counter;
+
+    // This is needed so that the page is extended in height
+    // _before_ the sliding (in case it contains graphics
+    doresize(z);
+}
+
+function doresize(z)
+{
+    var img  = $("image"+z);
+    var canv = $("canvas"+z);
+    if (!img || !canv)
+        return;
+
+    var h = $("table"+z).offsetHeight;
+    if (h == 0)
+        return;
+
+    // ===========================================
+    /*
+     var tb = $("tbody"+z);
+     var hw = $("thead"+z).clientHeight;
+     var fw = $("tfoot"+z).clientHeight;
+
+     tb.style.height = (window.innerHeight-hw-fw)+"px";
+     */
+    // ===========================================
+
+    var fixedw = $("body").displayFixedWidth;//getAttribute("data-width");
+    var fixedh = $("body").displayFixedHeight;//getAttribute("data-height");
+
+    var W = fixedw>0 ? fixedw : window.innerWidth;
+    var H = fixedh>0 ? fixedh : window.innerHeight;
+
+    //var max = $("body").getAttribute("data-max")=="yes";
+    var max = $("body").displayMax;
+
+    var ih = max ? W : H - h + parseInt(img.style.height, 10);
+
+    // This might create the scroll bar
+
+    if (img.style.height!=ih+"px")
+        img.style.height = ih+"px";
+    if (canv.height!=ih)
+        canv.height = ih;
+
+    // now we can evaluate the correct view-port
+    // (-2 is the border size of the parent element 'container')
+    //var sW = (fixedw ? fixedw : $("table"+z).scrollWidth)-2;
+    var sW = fixedw ? fixedw : canv.parentNode.clientWidth;
+
+    if (img.style.width!=sW+"px")
+        img.style.width = sW+"px";
+    if (canv.width!=sW)
+        canv.width = sW;
+
+    // ------ debug -----
+    if (debug == true)
+    {
+        $('debug'+z).innerHTML = "";
+        $('debug'+z).innerHTML += "|W="+W +"/"+H;
+        $('debug'+z).innerHTML += "|H="+h+"/"+$("table"+z).offsetHeight+"/"+img.offsetHeight;
+        $('debug'+z).innerHTML += "|I="+img.style.height+"+"+H+"-"+h;
+    }
+}
+
+var intervalSlide = null;
+
+function changePage(oldz, newz)
+{
+    // No page displayed yet
+    if (oldz==newz)
+    {
+        var tab = $("table"+newz);
+
+        tab.style.left="0px";
+        tab.style.position="absolute";
+
+        $("body").visiblePage = newz; //.setAttribute("data-visible", newz);
+
+        doresize(newz);
+
+        //setInterval(refresh_text, 1000);
+        //setInterval(refresh_graphics, 5000);
+
+        refresh_text();
+
+        // first: decode the pixel mapping!
+        var sum = 1036080;
+        for (var i=0; i<1440; i++)
+        {
+            var d0 = codedMap.charCodeAt(i*2)  -48;
+            var d1 = codedMap.charCodeAt(i*2+1)-48;
+
+            map[i] = d0 | (d1<<6);
+            sum -= map[i];
+        }
+        if (sum!=0)
+            alert("Pixel mapping table corrupted!");
+
+        refresh_graphics();
+        return;
+    }
+
+    var W = window.innerWidth;
+    if (W==0 || $("body").displayNoslide)//$("body").getAttribute("data-noslide")=="yes")
+    {
+        $("body").visiblePage = newz;//setAttribute("data-visible", newz);
+        $("body").removeChild($("table"+oldz));
+        $("table"+newz).style.left="0px";
+        return;
+    }
+
+    if (newz>oldz)
+        $("table"+newz).style.left = W+"px";
+    else
+        $("table"+newz).style.left = (-W-1)+"px";
+
+    $("body").visiblePage = newz;//setAttribute("data-visible", newz);
+
+    // This is needed on my mobile to ensure that te browser
+    // doesn't try to zoom during shifting
+    $("table"+newz).style.position="fixed";
+    $("table"+oldz).style.position="fixed";
+
+    intervalSlide = setInterval(function (){doShift(oldz,newz);}, 75);
+}
+
+function doShift(oldz, newz)
+{
+    var t0 = $("table"+oldz);
+    var t1 = $("table"+newz);
+
+    if (t0.style.display=="none")
+    {
+        clearInterval(intervalSlide);
+        $("body").removeChild(t0);
+
+        t1.style.position="absolute";
+
+        // Now the scroll bar might have to appear or disappear
+        doresize(newz);
+        return;
+    }
+
+    var x0 = t0.offsetLeft;
+    var x1 = t1.offsetLeft;
+
+    var W = window.innerWidth;
+
+    if (newz<oldz)
+    {
+        x0 += W/5;
+        x1 += W/5;
+    }
+
+    if (newz>oldz)
+    {
+        x0 -= W/5;
+        x1 -= W/5;
+    }
+
+    if ((newz<oldz && x1>=0) || (newz>oldz && x1<=0))
+    {
+        t0.style.display="none";
+        x1 = 0;
+    }
+
+    t0.style.left = x0+"px";
+    t1.style.left = x1+"px";
+}
+
+var timeoutText = null;
+var timeoutGraphics = null;
+
+var test_counter = 0;
+
+function refresh_text()
+{
+    var z=$("body").visiblePage;//getAttribute("data-visible");
+
+    var fname = $("table"+z).pageName;//getAttribute("data-file");
+    var counter = $("table"+z).counter;//getAttribute("data-file");
+
+    var is_help = fname.substr(0,5)=="help-";
+
+    // Is sliding, no file defined or just help text?
+    if (isSliding() || !valid(fname) || is_help)
+    {
+        if (is_help)
+        {
+            setUTC($("localtime"+z), new Date());
+            $("reporttime"+z).innerHTML="";
+        }
+            
+        // invalidate?
+        timeoutText = setTimeout(refresh_text, 1000);
+        return;
+    }
+            
+    var xmlText = new XMLHttpRequest();
+    xmlText.open('GET', "data/"+fname+'.data', true);
+    xmlText.setRequestHeader("Cache-Control", "no-cache");
+    xmlText.setRequestHeader("If-Match", "*");
+    xmlText.onload = function ()
+    {
+//        if (xmlText.status==412)
+//        {
+//            timeoutText = setTimeout(refresh_text, 3000);
+//            return;
+//        }
+
+        if (counter>1 && xmlText.status!=200 && xmlText.status!=412)
+        {
+            alert("ERROR[2] - HTTP request '"+fname+".data': "+xmlText.statusText+" ["+xmlText.status+"]");
+            timeoutText = setTimeout(refresh_text, 10000);
+            return;
+        }
+
+        if (!isSliding())
+        {
+            cycleCol($("ldot"+z));
+            update_text(fname, counter>1 ? xmlText.responseText : undefined);
+            doresize(z); 
+        }
+        timeoutText = setTimeout(refresh_text, 3000);
+    };
+    xmlText.send(null);
+}
+
+var date0 = null;
+
+var test = 0;
+function update_text(fname, result)
+{
+    var z=$("body").visiblePage;//getAttribute("data-visible");
+    var table = $("table"+z);
+
+    if (table.pageName/*getAttribute("data-file")*/ != fname)
+        return;
+
+    // ----------------------------------------------------
+    var now = new Date();
+
+    var ltime = $("localtime"+z);
+    setUTC(ltime, now);
+
+    if (!result)
+        return;
+
+    var rtime = $("reporttime"+z);
+    var tokens = result.split('\n');
+    var header = tokens[0].split('\t');
+
+    // File corrupted / should we remove the date?)
+    if ((header.length>5 || header.length==2 || header.length==0) && header[0].length!=13)
+    {
+        // we ignore corrupted files for one minute
+        if (date0==null || date0.getTime()+60000<now.getTime())
+            rtime.style.color = "darkred";
+
+        return;
+    }
+
+    // File OK
+    date0 = now;
+
+    var stamp = new Date();
+    stamp.setTime(header[0]);
+
+    // File older than 1min
+    if (stamp.getTime()+60000<now.getTime())
+        rtime.style.color = "darkred";
+    else
+        rtime.style.color = "";
+
+    setUTC(rtime, stamp);
+
+    $("warn"+z).style.display = header.length>=4 && header[3]=='1' ? "" : "none";
+
+    if (header.length>=5)
+        $("cmd"+z).style.backgroundColor = header[4]=='1' ? "darkgreen" : "darkred";
+
+    // ----------------------------------------------------
+
+    if (header.length>=3 && $("body").sound)
+    {
+        $("speaker"+z).style.display = "none";
+
+        var audio = $("audio");
+
+        var audio_date = new Date();
+        audio_date.setTime(header[1]);
+
+        // Time stamp of audio file must be newer than page load
+        //  or last audio play respecitvely
+        if (audio_date>audio.date && header[2].length>0)
+        {
+            var name = "audio/"+header[2];
+
+            var mp3 = $new("SOURCE");
+            var ogg = $new("SOURCE");
+            mp3.src = name+".mp3";
+            ogg.src = name+".ogg";
+            mp3.type = "audio/mp3";
+            ogg.type = "audio/ogg";
+
+            audio.replaceChild(mp3, audio.firstChild);
+            audio.replaceChild(ogg, audio.lastChild);
+
+            audio.load();
+            audio.play();
+
+            audio.date = audio_date;
+        }
+    }
+
+    // ----------------------------------------------------
+
+    //var p = table.tBodies.length==3 ? 1 : 0;
+    //var tbody = table.tBodies[p];
+
+    for (var line=1; line<tokens.length; line++)
+    {
+        if (tokens[line].length==0)
+            continue;
+
+        var e = $("data"+z+"-"+line);
+        if (!e)
+            continue;
+
+        var form = e.dataFormat;//getAttribute("data-form");
+        if (!form)
+            continue;
+
+        var cols = tokens[line].split('\t');
+        for (var col=1; col<cols.length; col++)
+            form = form.replace("\$"+(col-1), cols[col].length==0 ? "&mdash;" : cols[col]);
+
+        if (cols.length<=1)
+            form = "&mdash;";
+
+        form = form.replace(/<B#(.*?)>/g, "<b style='background:#$1'>");
+        form = form.replace(/<#(.*?)>/g, "<font color='$1'>");
+        form = form.replace(/<([\+-])>/g, "<font size='$11'>");
+        form = form.replace(/<\/([#\+-])>/g, "</font>");
+        form = form.replace(/([0-9][0-9]):([0-9][0-9]):([0-9][0-9])/g,
+                            "<pre>$1</pre>:<pre>$2</pre>:<pre>$3</pre>");
+        form = form.replace(/--:--:--/g, "<pre>  </pre> <pre>  </pre> <pre>  </pre>");
+
+        var newe = $new("div");
+        newe.innerHTML = form;
+        e.replaceChild(newe, e.lastChild);
+
+        e.parentNode.parentNode.parentNode.parentNode.style.background=cols[0];
+    }
+}
+
+// http://billmill.org/static/canvastutorial/index.html
+// http://www.netmagazine.com/tutorials/learning-basics-html5-canvas
+// http://www.alistapart.com/articles/responsive-web-design/
+
+function refresh_graphics()
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+
+    var canvas = $("canvas"+z);
+
+    // Is sliding or no data file defined?
+    var fname = canvas==null ? "" : canvas.fileName;//getAttribute("data-file");
+    if (isSliding() || !valid(fname))
+    {
+        // invalidate?
+        timeoutGraphics = setTimeout(refresh_graphics, 3000);
+        return;
+    }
+
+    var xmlGfx = new XMLHttpRequest();
+    xmlGfx.open('GET', "data/"+fname, true);
+    xmlGfx.setRequestHeader("Cache-Control", "no-cache");
+    xmlGfx.setRequestHeader("If-Match", "*");
+    xmlGfx.onload = function ()
+    {
+//        if (xmlGfx.status==412)
+//        {
+//            timeoutGraphics = setTimeout(refresh_graphics, 5000);
+//            return;
+//        }
+
+        if (xmlGfx.status!=200 && xmlGfx.status!=412)
+        {
+            alert("ERROR[3] - Request '"+fname+"': "+xmlGfx.statusText+" ["+xmlGfx.status+"]");
+            timeoutGraphics = setTimeout(refresh_graphics, 10000);
+            //****** invalidate ******
+            return;
+        }
+
+        if (!isSliding())
+        {
+            cycleCol($("rdot"+z));
+            process_eventdata(xmlGfx.responseText);
+        }
+        timeoutGraphics = setTimeout(refresh_graphics, 5000)
+    };
+    xmlGfx.send(null);
+}
+
+
+function hueToRGB(hue)
+{
+    hue /= 3;
+    hue %= 6;
+
+    if (hue<1) return parseInt(255*hue,     10);
+    if (hue<3) return parseInt(255,         10);
+    if (hue<4) return parseInt(255*(4-hue), 10);
+
+    return 0.
+}
+
+function hueToHex(flt)
+{
+    var s = hueToRGB(flt).toString(16);
+    return s.length==2 ? s : "0"+s;
+}
+
+function HLStoRGB(hue)
+{
+    hue *= 14;
+
+    var sr = hueToHex(20-hue);
+    var sg = hueToHex(14-hue);
+    var sb = hueToHex(26-hue);
+
+    return sr+sg+sb;
+}
+
+function color(col)
+{
+    if (col==65533)
+        return HLStoRGB(0);
+
+    var hue = col/126;
+    return HLStoRGB(hue);
+}
+
+function toHex(str, idx)
+{
+    var ch = str[idx].toString(16);
+    return ch.length==2 ? ch : "0"+ch;
+}
+
+function drawHex(ctx, x, y, col)
+{
+    ctx.fillStyle = "#"+color(col);
+
+    ctx.save();
+
+    ctx.translate(x, y);
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.fill();
+
+    ctx.restore();
+}
+
+function drawDisc(ctx, x, y, r, col)
+{
+    ctx.fillStyle = "#"+color(col);
+
+    ctx.save();
+
+    ctx.translate(x, y);
+
+    ctx.beginPath();
+    ctx.arc(0, 0, r, 0, Math.PI*2, true);
+    ctx.fill();
+
+    ctx.restore();
+}
+
+function beginDrawCam(scale)
+{
+    var z    = $("body").visiblePage;//getAttribute("data-visible");
+    var canv = $("canvas"+z);
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    var ctx = canv.getContext("2d");
+
+    ctx.save();
+    ctx.translate(canv.width/2, canv.height/2);
+    ctx.scale(w*2, w*2);
+
+    return ctx;
+}
+
+/**
+ * @constructor
+ */
+function Position(s, ring, i)
+{
+    switch (s)
+    {
+    case 1: this.x =  ring     - i*0.5;  this.y =       + i; break;
+    case 2: this.x =  ring*0.5 - i;      this.y =  ring    ; break;
+    case 3: this.x = -ring*0.5 - i*0.5;  this.y =  ring - i; break;
+    case 4: this.x = -ring     + i*0.5;  this.y =       - i; break;
+    case 5: this.x = -ring*0.5 + i;      this.y = -ring    ; break;
+    case 0: this.x =  ring*0.5 + i*0.5;  this.y = -ring + i; break;
+    }
+    this.d = (function () { return this.x*this.x + this.y*this.y*3/4; });
+}
+
+function drawFullCam(data)
+{
+    if (data.length!=40 && data.length!=160 && data.length!=320 && data.length!=1440)
+    {
+        alert("Camera - Received data has invalid size ("+data.length+"b)");
+        return;
+    }
+
+    var div = map.length/data.length;
+    var off = data.length==320 ? 0.2 : 0;
+
+    var ctx = beginDrawCam(83);
+    // ctx.rotate(Math.PI/3);
+
+    ctx.scale(1, Math.sqrt(3)/2);
+    ctx.translate(-0.5, 0);
+
+    drawHex(ctx, 0, 0, data.charCodeAt(parseInt(map[0]/div+off, 10)));
+
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() - pos.x > 395.75)
+                    continue;
+
+                var p = parseInt(map[cnt]/div+off, 10);
+
+                drawHex(ctx, pos.x, pos.y, data.charCodeAt(p));
+                cnt++;
+            }
+        }
+    }
+
+    drawHex(ctx, 7, -22, data.charCodeAt(parseInt(map[1438]/div+off, 10)));
+    drawHex(ctx, 7,  22, data.charCodeAt(parseInt(map[1439]/div+off, 10)));
+
+    ctx.restore();
+}
+
+function drawCam(data)
+{
+    var ctx = beginDrawCam(27);
+    ctx.rotate(Math.PI/6);
+    ctx.scale(1, Math.sqrt(3)/2);
+
+    drawHex(ctx, 0, 0, data.charCodeAt(0));
+
+    var cnt = 1;
+    for (var ring=1; ring<=7; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() > 44)
+                    continue;
+
+                if (ring==7)
+                {
+                    if (i==6 && (s==0 || s==3))
+                        continue;
+                    if (i==1 && (s==1 || s==4))
+                        continue;
+                }
+
+                drawHex(ctx, pos.x, pos.y, data.charCodeAt(cnt++));
+            }
+        }
+    }
+
+    ctx.restore();
+}
+
+function drawCamLegend(canv, data)
+{
+    var unit = canv.dataUnit;//htmlDecode(canv.getAttribute("data-data"));
+
+    var umin = data[1];
+    var umax = data[2];
+
+    var min  = data[3]+unit
+    var med  = data[4]+unit;
+    var max  = data[5]+unit;
+
+    var v0 = parseFloat(umin);
+    var v1 = parseFloat(umax);
+
+    var diff = v1-v0;
+
+    var cw = canv.width;
+    //var ch = canv.height;
+
+    var ctx = canv.getContext("2d");
+
+    ctx.font         = "8pt Arial";
+    ctx.textAlign    = "right";
+    ctx.textBaseline = "top";
+
+    for (var i=0; i<11; i++)
+    {
+        ctx.strokeStyle = "#"+color(126*i/10);
+        ctx.strokeText((v0+diff*i/10).toPrecision(3)+unit, cw-5, 125-i*12);
+    }
+
+    var mw = Math.max(ctx.measureText(min).width,
+                      ctx.measureText(med).width,
+                      ctx.measureText(max).width);
+
+    ctx.textBaseline = "top";
+    ctx.strokeStyle  = "#000";
+
+    ctx.strokeText(min, 5+mw, 5+24);
+    ctx.strokeText(med, 5+mw, 5+12);
+    ctx.strokeText(max, 5+mw, 5);
+}
+
+function drawGraph(canv, vals, data)
+{
+    var unit = canv.dataUnit;//htmlDecode(canv.getAttribute("data-data"));//.split("/");
+
+    var umin = vals[1]+unit;
+    var umax = vals[2]+unit;
+
+    var stat = vals.length==4 ? vals[3] :
+        vals[3]+unit+"   /   "+vals[4]+unit+"   /   "+vals[5]+unit;
+
+    var cw = canv.width;
+    var ch = canv.height;
+
+    var ctx = canv.getContext("2d");
+
+    var dw = 3;  // tick width
+    var fs = 8;  // font size
+
+    ctx.font      = fs+"pt Arial";
+    ctx.textAlign = "right";
+
+    var dim0 = ctx.measureText(umin);
+    var dim1 = ctx.measureText(umax);
+
+    var tw = Math.max(dim0.width, dim1.width)+dw+2;
+
+    var ml = 5+tw; // margin left
+    var mr = 10;   // margin right
+
+    var mt = 5+2*fs+4; // margin top
+    var mb = fs/2+4;   // margin bottom
+
+    var nx = 20;
+    var ny = 10;
+
+    var w = cw-ml-mr;
+    var h = ch-mt-mb;
+
+    ctx.strokeStyle = "#666";
+    ctx.fillStyle = "#"+color(100);
+
+    // --- data ---
+    var cnt = 0;
+    for (var j=1; j<data.length; j++)
+    {
+        if (data[j].length<5)
+            continue;
+
+        ctx.strokeStyle = "#"+data[j].substr(0, 3);
+        data[j] = data[j].substr(3);
+
+        ctx.beginPath();
+        ctx.moveTo(ml, ch-mb-data[j].charCodeAt(0)/126*h);
+        for (var i=1; i<data[j].length; i++)
+            ctx.lineTo(ml+w/(data[j].length-1)*i, ch-mb-data[j].charCodeAt(i)/126*h);
+
+        // --- finalize data ---
+        ctx.lineTo(cw-mr, ch-mb);
+        ctx.lineTo(ml,    ch-mb);
+        ctx.stroke();
+
+        cnt++;
+    }
+    if (cnt==1)
+        ctx.fill();
+
+    ctx.beginPath();
+
+    // --- grid ---
+
+    ctx.strokeStyle = "#eee";
+
+    for (var i=1; i<=nx; i++)
+    {
+        ctx.moveTo(ml+w*i/nx, ch-mb);
+        ctx.lineTo(ml+w*i/nx,    mt);
+    }
+    for (var i=0; i<ny; i++)
+    {
+        ctx.moveTo(ml,   mt+h*i/ny);
+        ctx.lineTo(ml+w, mt+h*i/ny);
+    }
+    ctx.stroke();
+    ctx.closePath();
+    ctx.beginPath();
+
+    ctx.strokeStyle = "#000";
+
+    // --- axes ---
+    ctx.moveTo(ml,    mt);
+    ctx.lineTo(ml,    ch-mb);
+    ctx.lineTo(cw-mr, ch-mb);
+
+    for (var i=1; i<=nx; i++)
+    {
+        ctx.moveTo(ml+w*i/nx, ch-mb-dw);
+        ctx.lineTo(ml+w*i/nx, ch-mb+dw);
+    }
+    for (var i=0; i<ny; i++)
+    {
+        ctx.moveTo(ml-dw, mt+h*i/ny);
+        ctx.lineTo(ml+dw, mt+h*i/ny);
+    }
+    ctx.stroke();
+    ctx.closePath();
+
+    ctx.textBaseline = "bottom";
+    ctx.strokeText(umin, ml-dw-2, ch-1);
+
+    ctx.textBaseline = mt>fs/2 ? "middle" : "top";
+    ctx.strokeText(umax, ml-dw-2, mt);
+
+    ctx.textBaseline = "top";
+    ctx.textAlign    = "center";
+    ctx.strokeText(stat, ml+w/2, 5);
+}
+
+function invalidateCanvas(canv)
+{
+    var ctx = canv.getContext("2d");
+
+    ctx.fillStyle = "rgba(255, 255, 255, 0.5)";
+    ctx.fillRect(0, 0, canv.width, canv.height);
+}
+
+function processGraphicsData(canv, result)
+{
+    if (result.length==0)
+        return false;
+
+    var ctx = canv.getContext("2d");
+    ctx.clearRect(0, 0, canv.width, canv.height);
+
+    var data = result.split('\x7f');
+    if (data.length<2)
+        return false;
+
+    var header = data[0].split('\n');
+    if (header.length<4)
+        return false;
+
+    switch (canv.dataType)
+    {
+        //case "camera": drawCam(result);     break;
+    case "hist":
+        drawGraph(canv, header, data);
+        break;
+    case "camera":
+        drawFullCam(data[1]);
+        drawCamLegend(canv, header);
+        break;
+    }
+
+    var now = new Date();
+    var tm  = new Date();
+    tm.setTime(header[0]);
+
+    if (tm.getTime()+60000<now.getTime())
+        return false;
+
+    //$("image"+z).src = canv.toDataURL("image/png");
+
+    return true;
+}
+
+function process_eventdata(result)
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+    var canv = $("canvas"+z);
+    if (!canv)
+        return;
+
+    if (!processGraphicsData(canv, result))
+        invalidateCanvas(canv);
+}
+
+function save()
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+
+    var canvas = $("canvas"+z);
+    var img    = canvas.toDataURL("image/png");
+
+    img = img.replace("image/png", "image/octet-stream");
+
+    document.location.href = img;
+}
+
+window['onload'] = onload;
Index: branches/FACT++_part_filenames/www/smartfact/index.php
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/index.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/index.php	(revision 18732)
@@ -0,0 +1,312 @@
+<?PHP
+
+require_once("config.php");
+
+function escape($msg)
+{
+    $msg = str_replace("\\", "\\\\", $msg);
+    $msg = str_replace('\"', '\"',   $msg);
+    return $msg;
+}
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return "Unauthorized";
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+function execute($cmd, $out)
+{
+    // Execute
+    $str = exec($cmd, $out, $rc);
+
+        // Logging (mainly for debugging)
+    $d = date("Y/m");
+    $path = "log/".$d;
+
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+
+    $file = fopen($path."/exec.log", "a");
+
+    fwrite($file, date("Y-m-d H:i:s.u").": ");
+    fwrite($file, $cmd);
+    fwrite($file, "\n");
+    if ($rc>0)
+        fwrite($file, print_r($out,true)."\n");
+    fwrite($file, "\n");
+
+    fclose($file);
+
+    return $rc;
+}
+
+// --------------------------------------------------------------------
+
+if (isset($_GET['load']))
+{
+    //require_once('log/Browscap.php');
+
+    $d = date("Y/m");
+
+    $path = "log/".$d;
+
+    if (!file_exists("log/cache"))
+        mkdir("log/cache", 0777, true);
+
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+
+    $addr = isset($_SERVER['REMOTE_ADDR'])     ? $_SERVER['REMOTE_ADDR']     : "";
+    $user = isset($_SERVER['PHP_AUTH_USER'])   ? $_SERVER['PHP_AUTH_USER']   : "";
+    $dns  = gethostbyaddr($addr);
+
+    //$bcap = new phpbrowscap\Browscap('log/cache');
+    //$info = $bcap->getBrowser();
+
+    $file = fopen($path."/smartfact.log", "a");
+    fwrite($file,
+           date("Y-m-d H:i:s\t").$addr.
+           "\t".//$info->Platform.
+           "\t".//$info->Browser.
+           "\t".//$info->Version.
+           "\t".//($info->isMobileDevice?"mobile":"").
+           "\t".$user.
+           "\t".$dns."\n");
+    fclose($file);
+
+    // http://ip-address-lookup-v4.com/ip/92.205.118.219
+
+    print($user);
+
+    return;
+}
+
+if (isset($_GET['sourcelist']))
+{
+    $server = mysql_connect($dbhost, $dbuser, $dbpass);
+    if (!$server)
+        die(mysql_error());
+
+    if (!mysql_select_db($dbname, $server))
+        die(mysql_error());
+
+    $result = mysql_query("SELECT fSourceName AS name FROM source", $server);
+    if (!$result)
+        die(mysql_error());
+
+
+//    var res = db.query("SELECT fSourceName, fRightAscension, fDeclination ",
+//              "FROM source");
+
+   // store the record of the "example" table into $row
+
+    // Print out the contents of the entry
+
+    while ($row=mysql_fetch_array($result, MYSQL_NUM))
+        print("'".$row[0]."'\n");
+
+    mysql_close($server);
+
+    return;
+}
+
+if (isset($_GET['source']) && isset($_GET['time']))
+{
+    // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+    $cmd = $path.'/makedata '.escapeshellarg($_GET['source']).' '.escapeshellarg($_GET['time']);
+
+    // Execute
+    passthru($cmd, $str);
+
+    // Logging (mainly for debugging)
+    $d = date("Y/m");
+    $path = "log/".$d;
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+    $file = fopen($path."/exec.log", "a");
+    fwrite($file, $cmd."\n".$str."\n\n");
+    fclose($file);
+
+    print_r($str);
+
+    return;
+}
+
+if (isset($_GET['logout']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return;
+
+    return header('HTTP/1.0 401 Successfull logout!');
+}
+
+// --------------------------------------------------------------------
+
+if (!isset($_GET['start']) && !isset($_GET['stop']) && !isset($_GET['interrupt']))
+    return header('HTTP/1.0 400 Command not supported');
+
+// --------------------------------------------------------------------
+
+$rc = login();
+if ($rc!="")
+{
+    header('WWW-Authenticate: Basic realm="SmartFACT++"');
+    header('HTTP/1.0 401 '.$rc);
+    return;
+}
+
+// --------------------------------------------------------------------
+
+$out = array();
+
+if (isset($_GET['stop']))
+{
+    unset($_GET['stop']);
+
+    $cmd = $path."/dimctrl --no-log --user '".$_SERVER['PHP_AUTH_USER']."' --stop 2>&1";
+
+    $rc = execute($cmd, $out);
+}
+
+if (isset($_GET['start']))
+{
+    // Filename
+    $script = '"scripts/'.$_GET['start'].'"';
+
+    unset($_GET['start']);
+
+    /*
+     $args = "";
+     foreach ($_GET as $key => $value)
+        $args .= " --arg:".$key."=".$value;
+     $str = exec($path."/dimctrl --exec ".$args, $out, $rc);
+     */
+
+    // Label
+    if (isset($_GET['label']))
+    {
+        if ($_GET['label']>=0)
+            $script .= ":".$_GET['label'];
+        unset($_GET['label']);
+    }
+
+    $msg = "";
+    if (isset($_GET['msg']))
+    {
+        $msg = $_GET['msg'];
+        unset($_GET['msg']);
+    }
+
+    // Arguments
+    if (!empty($script) && empty($msg))
+    {
+        //foreach ($_GET as $key => $value)
+        //    $args .= ' --arg:"'.$key.'='.escape($value).'"';
+
+        $args = "";
+        foreach ($_GET as $key => $value)
+            $args .= ' "'.$key.'"="'.$value.'"';
+
+        // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+        $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --start '.escapeshellarg($script.$args). " 2>&1";
+
+	$rc = execute($cmd, $out);
+    }
+
+    if (!empty($msg))
+    {
+        $msg = escape($msg);
+
+        // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+        $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --msg '.escapeshellarg($msg)." 2>&1";
+
+        $rc = execute($cmd, $out);
+    }
+
+    // -------------------------------------------
+}
+
+if (isset($_GET['interrupt']))
+{
+    $irq = $_GET['interrupt'];
+    unset($_GET['interrupt']);
+
+    $args = "";
+    foreach ($_GET as $key => $value)
+        $args .= ' "'.$key.'"="'.$value.'"';
+
+    $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --interrupt '.escapeshellarg($irq.$args)." 2>&1";
+
+    $rc = execute($cmd, $out);
+}
+
+if ($rc>1)
+    return header('HTTP/1.0 500 Execution failed [rc='.$rc."]");
+if ($rc==1)
+    return header('HTTP/1.0 500 Sending command failed.');
+
+print($_SERVER['PHP_AUTH_USER']);
+
+if (isset($_GET['debug']))
+{
+    print("\n");
+    print_r($out);
+}
+
+?>
Index: branches/FACT++_part_filenames/www/smartfact/log/Browscap.php
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/log/Browscap.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/log/Browscap.php	(revision 18732)
@@ -0,0 +1,835 @@
+<?php
+
+namespace phpbrowscap;
+
+use \Exception as BaseException;
+
+/**
+ * Browscap.ini parsing class with caching and update capabilities
+ *
+ * PHP version 5
+ *
+ * Copyright (c) 2006-2012 Jonathan Stoppani
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @package    Browscap
+ * @author     Jonathan Stoppani <jonathan@stoppani.name>
+ * @author     Vítor Brandão <noisebleed@noiselabs.org>
+ * @copyright  Copyright (c) 2006-2012 Jonathan Stoppani
+ * @version    1.0
+ * @license    http://www.opensource.org/licenses/MIT MIT License
+ * @link       https://github.com/GaretJax/phpbrowscap/
+ */
+class Browscap
+{
+    /**
+     * Current version of the class.
+     */
+    const VERSION = '1.0';
+
+    /**
+     * Different ways to access remote and local files.
+     *
+     * UPDATE_FOPEN: Uses the fopen url wrapper (use file_get_contents).
+     * UPDATE_FSOCKOPEN: Uses the socket functions (fsockopen).
+     * UPDATE_CURL: Uses the cURL extension.
+     * UPDATE_LOCAL: Updates from a local file (file_get_contents).
+     */
+    const UPDATE_FOPEN = 'URL-wrapper';
+    const UPDATE_FSOCKOPEN = 'socket';
+    const UPDATE_CURL = 'cURL';
+    const UPDATE_LOCAL = 'local';
+
+    /**
+     * Options for regex patterns.
+     *
+     * REGEX_DELIMITER: Delimiter of all the regex patterns in the whole class.
+     * REGEX_MODIFIERS: Regex modifiers.
+     */
+    const REGEX_DELIMITER = '@';
+    const REGEX_MODIFIERS = 'i';
+
+    /**
+     * The values to quote in the ini file
+     */
+    const VALUES_TO_QUOTE = 'Browser|Parent';
+
+    /**
+     * Definitions of the function used by the uasort() function to order the
+     * userAgents array.
+     *
+     * ORDER_FUNC_ARGS: Arguments that the function will take.
+     * ORDER_FUNC_LOGIC: Internal logic of the function.
+     */
+    const ORDER_FUNC_ARGS = '$a, $b';
+    const ORDER_FUNC_LOGIC = '$a=strlen($a);$b=strlen($b);return$a==$b?0:($a<$b?1:-1);';
+
+    /**
+     * The headers to be sent for checking the version and requesting the file.
+     */
+    const REQUEST_HEADERS = "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\nConnection: Close\r\n\r\n";
+
+    /**
+     * Options for auto update capabilities
+     *
+     * $remoteVerUrl: The location to use to check out if a new version of the
+     *                browscap.ini file is available.
+     * $remoteIniUrl: The location from which download the ini file.
+     *                The placeholder for the file should be represented by a %s.
+     * $timeout: The timeout for the requests.
+     * $updateInterval: The update interval in seconds.
+     * $errorInterval: The next update interval in seconds in case of an error.
+     * $doAutoUpdate: Flag to disable the automatic interval based update.
+     * $updateMethod: The method to use to update the file, has to be a value of
+     *                an UPDATE_* constant, null or false.
+     */
+    public $remoteIniUrl = 'http://browsers.garykeith.com/stream.asp?BrowsCapINI';
+    public $remoteVerUrl = 'http://browsers.garykeith.com/versions/version-date.asp';
+    public $timeout = 5;
+    public $updateInterval = 432000;  // 5 days
+    public $errorInterval = 7200;  // 2 hours
+    public $doAutoUpdate = true;
+    public $updateMethod = null;
+
+    /**
+     * The path of the local version of the browscap.ini file from which to
+     * update (to be set only if used).
+     *
+     * @var string
+     */
+    public $localFile = null;
+
+    /**
+     * The useragent to include in the requests made by the class during the
+     * update process.
+     *
+     * @var string
+     */
+    public $userAgent = 'Browser Capabilities Project - PHP Browscap/%v %m';
+
+    /**
+     * Flag to enable only lowercase indexes in the result.
+     * The cache has to be rebuilt in order to apply this option.
+     *
+     * @var bool
+     */
+    public $lowercase = false;
+
+    /**
+     * Flag to enable/disable silent error management.
+     * In case of an error during the update process the class returns an empty
+     * array/object if the update process can't take place and the browscap.ini
+     * file does not exist.
+     *
+     * @var bool
+     */
+    public $silent = false;
+
+    /**
+     * Where to store the cached PHP arrays.
+     *
+     * @var string
+     */
+    public $cacheFilename = 'cache.php';
+
+    /**
+     * Where to store the downloaded ini file.
+     *
+     * @var string
+     */
+    public $iniFilename = 'browscap.ini';
+
+    /**
+     * Path to the cache directory
+     *
+     * @var string
+     */
+    public $cacheDir = null;
+
+    /**
+     * Flag to be set to true after loading the cache
+     *
+     * @var bool
+     */
+    protected $_cacheLoaded = false;
+
+    /**
+     * Where to store the value of the included PHP cache file
+     *
+     * @var array
+     */
+    protected $_userAgents = array();
+    protected $_browsers = array();
+    protected $_patterns = array();
+    protected $_properties = array();
+
+    /**
+     * An associative array of associative arrays in the format
+     * `$arr['wrapper']['option'] = $value` passed to stream_context_create()
+     * when building a stream resource.
+     *
+     * Proxy settings are stored in this variable.
+     *
+     * @see http://www.php.net/manual/en/function.stream-context-create.php
+     *
+     * @var array
+     */
+    protected $_streamContextOptions = array();
+
+    /**
+     * A valid context resource created with stream_context_create().
+     *
+     * @see http://www.php.net/manual/en/function.stream-context-create.php
+     *
+     * @var resource
+     */
+    protected $_streamContext = null;
+
+    /**
+     * Constructor class, checks for the existence of (and loads) the cache and
+     * if needed updated the definitions
+     *
+     * @param string $cache_dir
+     */
+    public function __construct($cache_dir)
+    {
+        // has to be set to reach E_STRICT compatibility, does not affect system/app settings
+        date_default_timezone_set(date_default_timezone_get());
+
+        if (!isset($cache_dir)) {
+            throw new Exception(
+                'You have to provide a path to read/store the browscap cache file'
+            );
+        }
+
+        $old_cache_dir = $cache_dir;
+        $cache_dir = realpath($cache_dir);
+
+        if (false === $cache_dir) {
+            throw new Exception(
+                sprintf('The cache path %s is invalid. Are you sure that it exists and that you have permission to access it?', $old_cache_dir)
+            );
+        }
+
+        // Is the cache dir really the directory or is it directly the file?
+        if (substr($cache_dir, -4) === '.php') {
+            $this->cacheFilename = basename($cache_dir);
+            $this->cacheDir = dirname($cache_dir);
+        } else {
+            $this->cacheDir = $cache_dir;
+        }
+
+        $this->cacheDir .= DIRECTORY_SEPARATOR;
+    }
+
+    /**
+     * Gets the information about the browser by User Agent
+     *
+     * @param string $user_agent  the user agent string
+     * @param bool $return_array  whether return an array or an object
+     * @throws Exception
+     * @return stdObject  the object containing the browsers details. Array if
+     *                    $return_array is set to true.
+     */
+    public function getBrowser($user_agent = null, $return_array = false)
+    {
+        // Load the cache at the first request
+        if (!$this->_cacheLoaded) {
+            $cache_file = $this->cacheDir . $this->cacheFilename;
+            $ini_file = $this->cacheDir . $this->iniFilename;
+
+            // Set the interval only if needed
+            if ($this->doAutoUpdate && file_exists($ini_file)) {
+                $interval = time() - filemtime($ini_file);
+            } else {
+                $interval = 0;
+            }
+
+            // Find out if the cache needs to be updated
+            if (!file_exists($cache_file) || !file_exists($ini_file) || ($interval > $this->updateInterval)) {
+                try {
+                    $this->updateCache();
+                } catch (Exception $e) {
+                    if (file_exists($ini_file)) {
+                        // Adjust the filemtime to the $errorInterval
+                        touch($ini_file, time() - $this->updateInterval + $this->errorInterval);
+                    } elseif ($this->silent) {
+                        // Return an array if silent mode is active and the ini db doesn't exsist
+                        return array();
+                    }
+
+                    if (!$this->silent) {
+                        throw $e;
+                    }
+                }
+            }
+
+            $this->_loadCache($cache_file);
+        }
+
+        // Automatically detect the useragent
+        if (!isset($user_agent)) {
+            if (isset($_SERVER['HTTP_USER_AGENT'])) {
+                $user_agent = $_SERVER['HTTP_USER_AGENT'];
+            } else {
+                $user_agent = '';
+            }
+        }
+
+        $browser = array();
+        foreach ($this->_patterns as $key => $pattern) {
+            if (preg_match($pattern . 'i', $user_agent)) {
+                $browser = array(
+                    $user_agent, // Original useragent
+                    trim(strtolower($pattern), self::REGEX_DELIMITER),
+                    $this->_userAgents[$key]
+                );
+
+                $browser = $value = $browser + $this->_browsers[$key];
+
+                while (array_key_exists(3, $value) && $value[3]) {
+                    $value = $this->_browsers[$value[3]];
+                    $browser += $value;
+                }
+
+                if (!empty($browser[3])) {
+                    $browser[3] = $this->_userAgents[$browser[3]];
+                }
+
+                break;
+            }
+        }
+
+        // Add the keys for each property
+        $array = array();
+        foreach ($browser as $key => $value) {
+            if ($value === 'true') {
+                $value = true;
+            } elseif ($value === 'false') {
+                $value = false;
+            }
+            $array[$this->_properties[$key]] = $value;
+        }
+
+        return $return_array ? $array : (object) $array;
+    }
+
+    /**
+     * Load (auto-set) proxy settings from environment variables.
+     */
+    public function autodetectProxySettings()
+    {
+        $wrappers = array('http', 'https', 'ftp');
+
+        foreach ($wrappers as $wrapper) {
+            $url = getenv($wrapper.'_proxy');
+            if (!empty($url)) {
+                $params = array_merge(array(
+                    'port'  => null,
+                    'user'  => null,
+                    'pass'  => null,
+                    ), parse_url($url));
+                $this->addProxySettings($params['host'], $params['port'], $wrapper, $params['user'], $params['pass']);
+            }
+        }
+    }
+
+    /**
+     * Add proxy settings to the stream context array.
+     *
+     * @param string $server    Proxy server/host
+     * @param int    $port      Port
+     * @param string $wrapper   Wrapper: "http", "https", "ftp", others...
+     * @param string $username  Username (when requiring authentication)
+     * @param string $password  Password (when requiring authentication)
+     *
+     * @return Browscap
+     */
+    public function addProxySettings($server, $port = 3128, $wrapper = 'http', $username = null, $password = null)
+    {
+        $settings = array($wrapper => array(
+            'proxy'             => sprintf('tcp://%s:%d', $server, $port),
+            'request_fulluri'   => true,
+        ));
+
+        // Proxy authentication (optional)
+        if (isset($username) && isset($password)) {
+            $settings[$wrapper]['header'] = 'Proxy-Authorization: Basic '.base64_encode($username.':'.$password);
+        }
+
+        // Add these new settings to the stream context options array
+        $this->_streamContextOptions = array_merge(
+            $this->_streamContextOptions,
+            $settings
+        );
+
+        /* Return $this so we can chain addProxySettings() calls like this:
+         * $browscap->
+         *   addProxySettings('http')->
+         *   addProxySettings('https')->
+         *   addProxySettings('ftp');
+         */
+        return $this;
+    }
+
+    /**
+     * Clear proxy settings from the stream context options array.
+     *
+     * @param string $wrapper Remove settings from this wrapper only
+     *
+     * @return array Wrappers cleared
+     */
+    public function clearProxySettings($wrapper = null)
+    {
+        $wrappers = isset($wrapper) ? array($wrappers) : array_keys($this->_streamContextOptions);
+
+        $affectedProtocols = array();
+        $options = array('proxy', 'request_fulluri', 'header');
+        foreach ($wrappers as $wrapper) {
+
+            // remove wrapper options related to proxy settings
+            if (isset($this->_streamContextOptions[$wrapper]['proxy'])) {
+                foreach ($options as $option){
+                    unset($this->_streamContextOptions[$wrapper][$option]);
+                }
+
+                // remove wrapper entry if there are no other options left
+                if (empty($this->_streamContextOptions[$wrapper])) {
+                    unset($this->_streamContextOptions[$wrapper]);
+                }
+
+                $clearedWrappers[] = $wrapper;
+            }
+        }
+
+        return $clearedWrappers;
+    }
+
+    /**
+     * Returns the array of stream context options.
+     *
+     * @return array
+     */
+    public function getStreamContextOptions()
+    {
+        return $this->_streamContextOptions;
+    }
+
+    /**
+     * Parses the ini file and updates the cache files
+     *
+     * @return bool whether the file was correctly written to the disk
+     */
+    public function updateCache()
+    {
+        $ini_path = $this->cacheDir . $this->iniFilename;
+        $cache_path = $this->cacheDir . $this->cacheFilename;
+
+        // Choose the right url
+        if ($this->_getUpdateMethod() == self::UPDATE_LOCAL) {
+            $url = $this->localFile;
+        } else {
+            $url = $this->remoteIniUrl;
+        }
+
+        $this->_getRemoteIniFile($url, $ini_path);
+
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            $browsers = parse_ini_file($ini_path, true, INI_SCANNER_RAW);
+        } else {
+            $browsers = parse_ini_file($ini_path, true);
+        }
+
+        array_shift($browsers);
+
+        $this->_properties = array_keys($browsers['DefaultProperties']);
+        array_unshift(
+            $this->_properties,
+            'browser_name',
+            'browser_name_regex',
+            'browser_name_pattern',
+            'Parent'
+        );
+
+        $this->_userAgents = array_keys($browsers);
+        usort(
+            $this->_userAgents,
+            create_function(self::ORDER_FUNC_ARGS, self::ORDER_FUNC_LOGIC)
+        );
+
+        $user_agents_keys = array_flip($this->_userAgents);
+        $properties_keys = array_flip($this->_properties);
+
+        $search = array('\*', '\?');
+        $replace = array('.*', '.');
+
+        foreach ($this->_userAgents as $user_agent) {
+            $pattern = preg_quote($user_agent, self::REGEX_DELIMITER);
+            $this->_patterns[] = self::REGEX_DELIMITER
+                               . '^'
+                               . str_replace($search, $replace, $pattern)
+                               . '$'
+                               . self::REGEX_DELIMITER;
+
+            if (!empty($browsers[$user_agent]['Parent'])) {
+                $parent = $browsers[$user_agent]['Parent'];
+                $browsers[$user_agent]['Parent'] = $user_agents_keys[$parent];
+            }
+
+            foreach ($browsers[$user_agent] as $key => $value) {
+                $key = $properties_keys[$key] . ".0";
+                $browser[$key] = $value;
+            }
+
+            $this->_browsers[] = $browser;
+            unset($browser);
+        }
+        unset($user_agents_keys, $properties_keys, $browsers);
+
+        // Save the keys lowercased if needed
+        if ($this->lowercase) {
+            $this->_properties = array_map('strtolower', $this->_properties);
+        }
+
+        // Get the whole PHP code
+        $cache = $this->_buildCache();
+
+        // Save and return
+        return (bool) file_put_contents($cache_path, $cache, LOCK_EX);
+    }
+
+    /**
+     * Loads the cache into object's properties
+     *
+     * @return void
+     */
+    protected function _loadCache($cache_file)
+    {
+        require $cache_file;
+
+        $this->_browsers = $browsers;
+        $this->_userAgents = $userAgents;
+        $this->_patterns = $patterns;
+        $this->_properties = $properties;
+
+        $this->_cacheLoaded = true;
+    }
+
+    /**
+     * Parses the array to cache and creates the PHP string to write to disk
+     *
+     * @return string the PHP string to save into the cache file
+     */
+    protected function _buildCache()
+    {
+        $cacheTpl = "<?php\n\$properties=%s;\n\$browsers=%s;\n\$userAgents=%s;\n\$patterns=%s;\n";
+
+        $propertiesArray = $this->_array2string($this->_properties);
+        $patternsArray = $this->_array2string($this->_patterns);
+        $userAgentsArray = $this->_array2string($this->_userAgents);
+        $browsersArray = $this->_array2string($this->_browsers);
+
+        return sprintf(
+            $cacheTpl,
+            $propertiesArray,
+            $browsersArray,
+            $userAgentsArray,
+            $patternsArray
+        );
+    }
+
+    /**
+     * Lazy getter for the stream context resource.
+     *
+     * @return resource
+     */
+    protected function _getStreamContext($recreate = false)
+    {
+        if (!isset($this->_streamContext) || true === $recreate) {
+            $this->_streamContext = stream_context_create($this->_streamContextOptions);
+        }
+
+        return $this->_streamContext;
+    }
+
+    /**
+     * Updates the local copy of the ini file (by version checking) and adapts
+     * his syntax to the PHP ini parser
+     *
+     * @param string $url  the url of the remote server
+     * @param string $path  the path of the ini file to update
+     * @throws Exception
+     * @return bool if the ini file was updated
+     */
+    protected function _getRemoteIniFile($url, $path)
+    {
+        // Check version
+        if (file_exists($path) && filesize($path)) {
+            $local_tmstp = filemtime($path);
+
+            if ($this->_getUpdateMethod() == self::UPDATE_LOCAL) {
+                $remote_tmstp = $this->_getLocalMTime();
+            } else {
+                $remote_tmstp = $this->_getRemoteMTime();
+            }
+
+            if ($remote_tmstp < $local_tmstp) {
+                // No update needed, return
+                touch($path);
+
+                return false;
+            }
+        }
+
+        // Get updated .ini file
+        $browscap = $this->_getRemoteData($url);
+
+
+        $browscap = explode("\n", $browscap);
+
+        $pattern = self::REGEX_DELIMITER
+                 . '('
+                 . self::VALUES_TO_QUOTE
+                 . ')="?([^"]*)"?$'
+                 . self::REGEX_DELIMITER;
+
+
+        // Ok, lets read the file
+        $content = '';
+        foreach ($browscap as $subject) {
+            $subject = trim($subject);
+            $content .= preg_replace($pattern, '$1="$2"', $subject) . "\n";
+        }
+
+        if ($url != $path) {
+            if (!file_put_contents($path, $content)) {
+                throw new Exception("Could not write .ini content to $path");
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Gets the remote ini file update timestamp
+     *
+     * @throws Exception
+     * @return int the remote modification timestamp
+     */
+    protected function _getRemoteMTime()
+    {
+        $remote_datetime = $this->_getRemoteData($this->remoteVerUrl);
+        $remote_tmstp = strtotime($remote_datetime);
+
+        if (!$remote_tmstp) {
+            throw new Exception("Bad datetime format from {$this->remoteVerUrl}");
+        }
+
+        return $remote_tmstp;
+    }
+
+    /**
+     * Gets the local ini file update timestamp
+     *
+     * @throws Exception
+     * @return int the local modification timestamp
+     */
+    protected function _getLocalMTime()
+    {
+        if (!is_readable($this->localFile) || !is_file($this->localFile)) {
+            throw new Exception("Local file is not readable");
+        }
+
+        return filemtime($this->localFile);
+    }
+
+    /**
+     * Converts the given array to the PHP string which represent it.
+     * This method optimizes the PHP code and the output differs form the
+     * var_export one as the internal PHP function does not strip whitespace or
+     * convert strings to numbers.
+     *
+     * @param array $array the array to parse and convert
+     * @return string the array parsed into a PHP string
+     */
+    protected function _array2string($array)
+    {
+        $strings = array();
+
+        foreach ($array as $key => $value) {
+            if (is_int($key)) {
+                $key = '';
+            } elseif (ctype_digit((string) $key) || strpos($key, '.0')) {
+                $key = intval($key) . '=>' ;
+            } else {
+                $key = "'" . str_replace("'", "\'", $key) . "'=>" ;
+            }
+
+            if (is_array($value)) {
+                $value = $this->_array2string($value);
+            } elseif (ctype_digit((string) $value)) {
+                $value = intval($value);
+            } else {
+                $value = "'" . str_replace("'", "\'", $value) . "'";
+            }
+
+            $strings[] = $key . $value;
+        }
+
+        return 'array(' . implode(',', $strings) . ')';
+    }
+
+    /**
+     * Checks for the various possibilities offered by the current configuration
+     * of PHP to retrieve external HTTP data
+     *
+     * @return string the name of function to use to retrieve the file
+     */
+    protected function _getUpdateMethod()
+    {
+        // Caches the result
+        if ($this->updateMethod === null) {
+            if ($this->localFile !== null) {
+                $this->updateMethod = self::UPDATE_LOCAL;
+            } elseif (ini_get('allow_url_fopen') && function_exists('file_get_contents')) {
+                $this->updateMethod = self::UPDATE_FOPEN;
+            } elseif (function_exists('fsockopen')) {
+                $this->updateMethod = self::UPDATE_FSOCKOPEN;
+            } elseif (extension_loaded('curl')) {
+                $this->updateMethod = self::UPDATE_CURL;
+            } else {
+                $this->updateMethod = false;
+            }
+        }
+
+        return $this->updateMethod;
+    }
+
+    /**
+     * Retrieve the data identified by the URL
+     *
+     * @param string $url the url of the data
+     * @throws Exception
+     * @return string the retrieved data
+     */
+    protected function _getRemoteData($url)
+    {
+        ini_set('user_agent', $this->_getUserAgent());
+
+        switch ($this->_getUpdateMethod()) {
+            case self::UPDATE_LOCAL:
+                $file = file_get_contents($url);
+
+                if ($file !== false) {
+                    return $file;
+                } else {
+                    throw new Exception('Cannot open the local file');
+                }
+            case self::UPDATE_FOPEN:
+                // include proxy settings in the file_get_contents() call
+                $context = $this->_getStreamContext();
+                $file = file_get_contents($url, false, $context);
+
+                if ($file !== false) {
+                    return $file;
+                } // else try with the next possibility (break omitted)
+            case self::UPDATE_FSOCKOPEN:
+                $remote_url = parse_url($url);
+                $remote_handler = fsockopen($remote_url['host'], 80, $c, $e, $this->timeout);
+
+                if ($remote_handler) {
+                    stream_set_timeout($remote_handler, $this->timeout);
+
+                    if (isset($remote_url['query'])) {
+                        $remote_url['path'] .= '?' . $remote_url['query'];
+                    }
+
+                    $out = sprintf(
+                        self::REQUEST_HEADERS,
+                        $remote_url['path'],
+                        $remote_url['host'],
+                        $this->_getUserAgent()
+                    );
+
+                    fwrite($remote_handler, $out);
+
+                    $response = fgets($remote_handler);
+                    if (strpos($response, '200 OK') !== false) {
+                        $file = '';
+                        while (!feof($remote_handler)) {
+                            $file .= fgets($remote_handler);
+                        }
+
+                        $file = str_replace("\r\n", "\n", $file);
+                        $file = explode("\n\n", $file);
+                        array_shift($file);
+
+                        $file = implode("\n\n", $file);
+
+                        fclose($remote_handler);
+
+                        return $file;
+                    }
+                } // else try with the next possibility
+            case self::UPDATE_CURL:
+                $ch = curl_init($url);
+
+                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
+                curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
+
+                $file = curl_exec($ch);
+
+                curl_close($ch);
+
+                if ($file !== false) {
+                    return $file;
+                } // else try with the next possibility
+            case false:
+                throw new Exception('Your server can\'t connect to external resources. Please update the file manually.');
+        }
+    }
+
+    /**
+     * Format the useragent string to be used in the remote requests made by the
+     * class during the update process.
+     *
+     * @return string the formatted user agent
+     */
+    protected function _getUserAgent()
+    {
+        $ua = str_replace('%v', self::VERSION, $this->userAgent);
+        $ua = str_replace('%m', $this->_getUpdateMethod(), $ua);
+
+        return $ua;
+    }
+}
+
+/**
+ * Browscap.ini parsing class exception
+ *
+ * @package    Browscap
+ * @author     Jonathan Stoppani <jonathan@stoppani.name>
+ * @copyright  Copyright (c) 2006-2012 Jonathan Stoppani
+ * @version    1.0
+ * @license    http://www.opensource.org/licenses/MIT MIT License
+ * @link       https://github.com/GaretJax/phpbrowscap/*/
+class Exception extends BaseException
+{}
Index: branches/FACT++_part_filenames/www/smartfact/struct/agilent24.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/agilent24.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/agilent24.page	(revision 18732)
@@ -0,0 +1,5 @@
+24V Agilent (Interlock)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/agilent50.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/agilent50.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/agilent50.page	(revision 18732)
@@ -0,0 +1,5 @@
+50V Agilent (Camera)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/agilent80.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/agilent80.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/agilent80.page	(revision 18732)
@@ -0,0 +1,5 @@
+80V Agilent (Bias)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/bias.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/bias.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/bias.page	(revision 18732)
@@ -0,0 +1,6 @@
+Bias
+|Voltage||voltage
+|Current||current
+|Current prediction||current-prediction
+|Feedback||feedback
+|hist=hist-biascontrol-current.bin/ &micro;A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/boardrates.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/boardrates.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/boardrates.page	(revision 18732)
@@ -0,0 +1,6 @@
+Board rates
+trigger|Min. board rate|$0 Hz|
+trigger|Med. board rate|$0 Hz|
+trigger|Avg. board rate|$0 Hz|
+trigger|Max. board rate|$0 Hz|
+|camera=cam-ftmcontrol-boardrates.bin/ Hz|
Index: branches/FACT++_part_filenames/www/smartfact/struct/camtemp.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/camtemp.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/camtemp.page	(revision 18732)
@@ -0,0 +1,5 @@
+Sensor temp
+fsc|Max. sensor temp.|$0 &deg;C|
+fsc|Avg. sensor temp.|$0 &deg;C|
+fsc|Min. sensor temp.|$0 &deg;C|
+|camera=cam-fsccontrol-temperature.bin/ &deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/chat.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/chat.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/chat.page	(revision 18732)
@@ -0,0 +1,5 @@
+*Chat
+|<h4>Message</h4>|
+|input=/msg/|
+|<h4>Backlog</h4>|
+||$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/control-drive.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/control-drive.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/control-drive.page	(revision 18732)
@@ -0,0 +1,12 @@
+Drive Controls
+|Track position (ra/dec)||dotrackposition
+|Track source (angle/offset/name)||dotracksource
+|Track wobble (wobble/name)||dotrackwobble
+|Move telescope (zd/az)||domovetelescope
+|Park telescope||dodrivepark
+||
+|Toggle drive||dodrivetoggle
+|Unlock drive||dodriveunlock
+|Stop movement||dodrivestop
+||
+|Reset error||dodrivereset
Index: branches/FACT++_part_filenames/www/smartfact/struct/control-irq.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/control-irq.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/control-irq.page	(revision 18732)
@@ -0,0 +1,3 @@
+Interrupt Controls
+|Voltage off||irqOff
+|Shutdown||irqShutdown
Index: branches/FACT++_part_filenames/www/smartfact/struct/control-lid.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/control-lid.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/control-lid.page	(revision 18732)
@@ -0,0 +1,3 @@
+Lid Controls
+|Open lid||dolidopen
+|Close lid||dolidclose
Index: branches/FACT++_part_filenames/www/smartfact/struct/control-main.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/control-main.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/control-main.page	(revision 18732)
@@ -0,0 +1,4 @@
+*Data taking|Main
+|The '&gt;' at the bottom of the page will start 
+data taking (Main.js). Use the 'x' to stop any
+running script.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/control.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/control.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/control.page	(revision 18732)
@@ -0,0 +1,12 @@
+Control
+#|Drs Calibration||drscal
+#|Take singel pe data||singlepe
+#|Take data||takedata
+#|Drive controls||drive
+#|Crate reset||docratereset
+|Start data taking (Main.js)||control-main
+|Interrupts||control-irq
+|Drive controls||control-drive
+|Lid controls||control-lid
+|Crate reset||docratereset
+#|Test the dimctrl system||dotest
Index: branches/FACT++_part_filenames/www/smartfact/struct/current-prediction.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/current-prediction.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/current-prediction.page	(revision 18732)
@@ -0,0 +1,7 @@
+Current prediction
+|Source list||source-list
+|Source distance to moon||moon
+||
+|<h4>Max. current prediction (&micro;A/pix)</h4>||
+||<span class='sources'>$0</span>|
+|hist=hist-current-prediction.bin/&micro;A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/current.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/current.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/current.page	(revision 18732)
@@ -0,0 +1,8 @@
+Currents
+bias|Calibrated|$0|
+bias|Min. current per G-APD|$0&micro;A|
+bias|Med. current per G-APD|$0&micro;A|
+bias|Avg. current per G-APD|$0&micro;A|
+bias|Max. current per G-APD|$0&micro;A|
+bias|Power camera [G-APD]|$0|
+|camera=cam-biascontrol-current.bin/ &micro;A|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dew.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dew.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dew.page	(revision 18732)
@@ -0,0 +1,6 @@
+Dew point
+weather|Current|$0&deg;C|
+weather|Minimum|$0&deg;C|
+weather|Average|$0&deg;C|
+weather|Maximum|$0&deg;C|
+|hist=hist-magicweather-dew.bin/&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dodrivepark.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dodrivepark.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dodrivepark.page	(revision 18732)
@@ -0,0 +1,6 @@
+*Park telescope|doDrivePark
+control-drive|To park the telescope press the '&gt;' button at the bottom
+of the screen.|
+||
+|Stop telescope||dodrivestop
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/dodrivereset.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dodrivereset.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dodrivereset.page	(revision 18732)
@@ -0,0 +1,2 @@
+*Reset drive error|doDriveReset
+control-drive|Allows to reset an error in case of limits exceptions.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dodrivestop.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dodrivestop.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dodrivestop.page	(revision 18732)
@@ -0,0 +1,3 @@
+*Stop telescope|doDriveStop
+control-drive|To stop any on-going movement press the '&gt;' button at the bottom
+of the screen.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dodrivetoggle.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dodrivetoggle.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dodrivetoggle.page	(revision 18732)
@@ -0,0 +1,6 @@
+*Toggle drive|doDriveToggle
+|Status page||status
+control-drive|Execute this to turn the drive on or off. Check its status
+from the status page. Look at Power control. SystemOn means everything
+is switched on, DriveOff, everything except the drive is truned on,
+SystemOff, everything off.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dodriveunlock.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dodriveunlock.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dodriveunlock.page	(revision 18732)
@@ -0,0 +1,6 @@
+*Unlock drive|doDriveUnlock
+control-drive| After sun-rise the drive is locked and will reject all movement
+commands. To unlock the drive press the '&gt;' button at the bottom
+of the screen. Be aware that there is no way to re-lock the drive 
+and during day-time you risk severe harm. Only do that if you exactly
+know what you do!|
Index: branches/FACT++_part_filenames/www/smartfact/struct/dolidclose.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dolidclose.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dolidclose.page	(revision 18732)
@@ -0,0 +1,4 @@
+*Close Lid|doLidClose
+control-lid|To close the lid press the '&gt;' button at the bottom
+of the screen.|
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/dolidopen.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dolidopen.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dolidopen.page	(revision 18732)
@@ -0,0 +1,4 @@
+*Open Lid|doLidOpen
+control-lid|To open the lid press the '&gt;' button at the bottom
+of the screen.|
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/domovetelescope.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/domovetelescope.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/domovetelescope.page	(revision 18732)
@@ -0,0 +1,7 @@
+*Move telescope|doMoveTelescope
+control-drive|To move the telescope to the given local coordinates
+press the '&gt;' button at the bottom of the screen.|
+|input=Zenith distance (-100 - 100) [deg]/zd/|
+|input=Azimuth (-290 - 80, N&#61;0, E&#61;90) [deg]/az/|
+||
+|Stop telescope||dodrivestop
Index: branches/FACT++_part_filenames/www/smartfact/struct/dotrackposition.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dotrackposition.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dotrackposition.page	(revision 18732)
@@ -0,0 +1,8 @@
+*Track Position|doTrackPosition
+control-drive|To move the telescope of the given sky coordinates and start 
+tracking  press the '&gt;' button at the bottom
+of the screen.|
+|input=Right ascension [h]/ra/|
+|input=Declination [deg]/dec/|
+||
+|Stop telescope||dodrivestop
Index: branches/FACT++_part_filenames/www/smartfact/struct/dotracksource.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dotracksource.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dotracksource.page	(revision 18732)
@@ -0,0 +1,8 @@
+*Track Position|doTrackSource
+control-drive|To move the telescope of the given source and wobble position
+press the '&gt;' button at the bottom of the screen.|
+|input=Wobble angle (0-360) [deg]/wobble/|
+|input=Wobble offset (&gt;&#61;0) [deg]/offset/0.6/|
+|select=Source name/source/Crab/Mrk 421/Mrk 501/1ES 1218+304/1ES 1959+650/1ES 2344+51.4/PKS 2155-304/H 1426+428/Dark Patch 3|
+||
+|Stop telescope||dodrivestop
Index: branches/FACT++_part_filenames/www/smartfact/struct/dotrackwobble.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/dotrackwobble.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/dotrackwobble.page	(revision 18732)
@@ -0,0 +1,7 @@
+*Track Wobble Position|doTrackWobble
+control-drive|To move the telescope of the given source and wobble position
+press the '&gt;' button at the bottom of the screen.|
+|checkbox=Wobble position id (1:unchecked,2:checked)/wobble/0|
+|select=Source name/source/Crab/Mrk 421/Mrk 501/1ES 1218+304/1ES 1959+650/1ES 2344+51.4/PKS 2155-304/H 1426+428/Dark Patch 3|
+||
+|Stop telescope||dodrivestop
Index: branches/FACT++_part_filenames/www/smartfact/struct/error.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/error.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/error.page	(revision 18732)
@@ -0,0 +1,3 @@
+Errors
+|History||errorhist
+||$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/errorhist.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/errorhist.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/errorhist.page	(revision 18732)
@@ -0,0 +1,2 @@
+Error history
+status||$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/fact.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/fact.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/fact.page	(revision 18732)
@@ -0,0 +1,8 @@
+FACT
+|System status|$0|status
+|Drive|$0|tracking
+|Relative camera temp|$0&deg;C|fsc
+|Weather (hum/wind)|$0% / $1km/h|weather
+|Trigger rate|$0|trigger
+|G-APD (med/max)|$0&micro;A / $1&micro;A [$2]|bias
+|camera=cam-fadcontrol-eventdata.bin/ V|
Index: branches/FACT++_part_filenames/www/smartfact/struct/fad.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/fad.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/fad.page	(revision 18732)
@@ -0,0 +1,5 @@
+FAD Connections
+status|Crate 0|$0|
+status|Crate 1|$0|
+status|Crate 2|$0|
+status|Crate 3|$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/feedback.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/feedback.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/feedback.page	(revision 18732)
@@ -0,0 +1,8 @@
+Feedback
+bias|Temp Offset|$0 V|
+bias|Overvoltage nominal|$0 V|
+bias|Overvoltage min|$0 V|
+bias|Overvoltage med|$0 V|
+bias|Overvoltage avg|$0 V|
+bias|Overvoltage max|$0 V|
+|camera=cam-feedback-overvoltage.bin/ V|
Index: branches/FACT++_part_filenames/www/smartfact/struct/fsc.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/fsc.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/fsc.page	(revision 18732)
@@ -0,0 +1,6 @@
+Slow control
+fact|Average humidity|$0%
+|Min. relative temp|$0&deg;C|camtemp
+|Avg. relative temp|$0&deg;C|camtemp
+|Max. relative temp|$0&deg;C|camtemp
+|hist=hist-fsccontrol-temperature.bin/&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/ftm.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/ftm.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/ftm.page	(revision 18732)
@@ -0,0 +1,10 @@
+FTM settings
+|Trigger interval|$0 ms|
+|Artificial trigger (ped&#58;lpext&#58;lpint)|$0|
+|Trigger (phys/ext1/ext2)|$0|
+|Veto / Time marker|$0|
+|Multiplicity N/40 (phys/cal)|$0|
+|Window (phys/cal)|$0 ns / $1 ns|
+|Delay (trigger/time marker)|$0 ns / $1 ns|
+|Dead time|$0 ns|
+|FTU readout interval|$0 s|ftu
Index: branches/FACT++_part_filenames/www/smartfact/struct/ftu.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/ftu.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/ftu.page	(revision 18732)
@@ -0,0 +1,5 @@
+FTU status
+ftm|Crate 0|$0|
+ftm|Crate 1|$0|
+ftm|Crate 2|$0|
+ftm|Crate 3|$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/gps.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/gps.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/gps.page	(revision 18732)
@@ -0,0 +1,9 @@
+GPS status
+status|Quality of service|$0|
+status|Satellites in FoV|$0|
+status|GPS Time|$0|
+status|Latitude|$0&deg;|
+status|Longitude|$0&deg;|
+status|Height|$0m|
+status|Hor. dil. of prec.|$0m|
+status|Geo. separation|$0m|
Index: branches/FACT++_part_filenames/www/smartfact/struct/gusts.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/gusts.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/gusts.page	(revision 18732)
@@ -0,0 +1,6 @@
+Wind gusts
+weather|Current|$0 km/h|
+weather|Minimum|$0 km/h|
+weather|Average|$0 km/h|
+weather|Maximum|$0 km/h|
+|hist=hist-magicweather-gusts.bin|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-about.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-about.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-about.page	(revision 18732)
@@ -0,0 +1,25 @@
+About
+|image=Flynns_file.png|
+
+|
+<U><B>SmartFACT++</B></U><br/>
+<B><TT>FACT telescope web control system</tt></B>
+
+Frontend power by <B>JavaScript</B><br/>
+Backend powered by <B>boost</B> and <B>dim</B>
+
+<B>Dim homepage:</B> <A HREF="http://dim.cern.ch">dim.cern.ch</A><br/>
+<B>FACT homepage:</B> <A HREF="http://www.fact-project.org">www.fact-project.org</A>
+
+<B>Written by:</B> T.Bretz<br/>
+<B>Contact:</B> <tt><A href="emailto:thomas.bretz@epfl.ch">thomas.bretz@epfl.ch</A></tt><br/>
+<B>Copyright:</B> &copy; T.Bretz (FACT Collaboration, 2012)
+
+<B>Collaborating institutes:</b><br/>
+&nbsp;&bull; EPF Lausanne<br/>
+&nbsp;&bull; ETH Z&uuml;rich<br/>
+&nbsp;&bull; ISDC (University Geneva)<br/>
+&nbsp;&bull; TU Dortmund<br/>
+&nbsp;&bull; University W&uuml;rzburg
+|
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-binaryfile.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-binaryfile.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-binaryfile.page	(revision 18732)
@@ -0,0 +1,21 @@
+Binary-file format
+|<h4>Camera and histogram file format</h4> 
+The first line of the file always contains a thirteen-digit number
+which is the time (in UTC) corresponding to the contained data as Unix
+time (milli-seconds since 1/1/1970). The second line contains a
+floating point number (in human readable ascii format) representing the
+lower limit if the scale and the third line the upper limit. The next three
+lines contain the three numbers displayed on top of the graphics,
+usually the minumum, median and maximum data value. Everything
+after is considered to be the data. For some restrictions of the HTML
+GET mechanism available in JavaScript the data must not exceed ascii
+character 127. So the full scale displayed, either in colors or as
+graph, is from 0 to 127. Eeach ascii character represents one entry in
+the camera or the histogram. The number of entries in the histogram can
+be between 0 to hundreds, although more entries than a typical screen
+has pixels does not make much sense. Keep in mind that the data is
+reloaded every few seconds and the larger the file is the higher the
+network traffic is. For the camera the number of entries is fixed and
+must either be 40 (boards), 160 (patches), 320 (HV channels) or 1440
+(pixels). They must be ordered by crate, board, chip, group, channel. 
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-camera.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-camera.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-camera.page	(revision 18732)
@@ -0,0 +1,14 @@
+Camera
+|image=fact-camera.png|
+|
+The camera display is available in different types. It can display 40
+(board) values, 160 (patch) values, 320 (bias channel) values or
+1440 pixels. Depending on the type of input data several pixels mights
+consequently be displayed in the same color.
+|
+|<h4>min / med /max</h4>
+The minimum, median and maximum value of all values displayed in the camera.
+|
+|<h4>Scale</h4>
+The color scale of the displayed data.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-camtemp.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-camtemp.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-camtemp.page	(revision 18732)
@@ -0,0 +1,7 @@
+Sensor temperatures
+|
+The displayed values are derived from the 28 working temperature
+sensors. The displayed graphics is trigger patch wise  linearly
+interpolated or extrapolated. The color scale has its center always
+at the average of the 160 calculated temperature values and a range
+of +/- 1.5 &deg;C is displayed|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-current-prediction.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-current-prediction.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-current-prediction.page	(revision 18732)
@@ -0,0 +1,18 @@
+Current prediction
+|
+From the zenith angle of the moon, the distance to the moon and
+the moon disc, it is possible to predict the expected current per
+pixel quite accurately.
+
+The shows this predicition of all sources visible between the start of
+the astronomical twilight in the evening and the end of the
+astronomical twilight in the morning.
+
+The title shows roughly the start and end time of the time range displayed
+and the number of minutes corresponding to one of the twenty
+steps on the x-axis.
+
+To relate the curves to the sources, the maximum predicted current for
+each source is given above the graphics in brackets. The sources are ordered
+in time when the maximum is reached.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-datafile.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-datafile.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-datafile.page	(revision 18732)
@@ -0,0 +1,43 @@
+Datafile format
+|
+A datafile is a file which is automatically loaded every few seconds
+and the values displayed on a page are updated. If the page name
+is <I>mypage.page</I> the name of the corresponding data file is
+<I>mypage.data</I>.
+
+The first line of the data file always contains a thirteen-digit number
+which is the time (in UTC) corresponding to the contained data
+as Unix time (milli-seconds since 1/1/1970). Seprated with tabs, it can
+contain to additional numbers. The first one defines if the warning
+sign is displayed (&gt;=1 means that it is displayed) and the
+second defines whether the script stop sign is displayed in green or red.
+For data-files which are not guranteed to be updated in reasonable
+intervals, it is advisable to not write the two numbers at all.
+
+Each following line contains columns seperated by tabs. The first column
+contains the background color of the row. It can be given in any
+representation accepted by HTML, usually #rrggbb. The following columns
+contain values or text which will replace the $N in the format given
+in the page file, <i>e.g.</i>
+
+If the second line of the data file contains
+
+<pre>
+blue\t0\t42.0
+</pre>
+
+while \t here representas the ascii character 9 ('\t' in C and C++), and the format
+in the page files looks like
+
+<pre>
+$1 shoes and $0 socks
+</pre>
+
+the row displayed will be
+
+<pre>
+42.0 shoes and 0 socks
+</pre>
+
+with a blue background.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-description.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-description.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-description.page	(revision 18732)
@@ -0,0 +1,40 @@
+Description
+|<h4>Description tag</h4>
+There are a few special tags for the description in the page-file.
+
+The tags are
+
+<pre>
+camera=filename/unit<br/>
+hist=filename/unit<br/>
+image=filename
+</pre>
+
+In the case of camera and hist, a binary file is loaded which contains the
+data to be displayed. The file-format for this i discussed hereafter.
+In case of the image-tag an HTML image tag is included showing the
+image loaded full-width in the row.
+
+If a camera graphics is displayed, the given unit is displayed at the scale
+(note that opera browser do not support text in the graphics so far).
+
+The unit can contain HTML special characters, <I>e.g.</I> &#38;micro;A
+|
+|<h4>Input tag</h4>
+For sending arguments to script (on script-pages) also a few special
+tags are available
+
+<pre>
+input=Title/name/default<br/>
+select=Title/name/item1/item2/item3<br/>
+</pre>
+
+The title is displayed on the left side of the row. The name is the 
+argument name used later in the script to indentify the arguments.
+
+<i>input</i> creates a text input field with the default as default.
+
+<i>select</i> creates a list-box with the items in the list. The default
+is the first item.
+|
+|Binary file format||help-binaryfile
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-bias.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-bias.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-bias.page	(revision 18732)
@@ -0,0 +1,26 @@
+FACT
+|<h4>G-APD (med/max)</h4>
+Here the status of the bias system is summarized.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>DNS online, MCP taking data, FAD taking data</li>
+<li>Bias voltage switched on and median current above 60&micro;A or
+maximum current (excluding faulty pixels) above 80&micro;A</li>
+<li>Bias voltage switched on and median current above 70&micro;A or
+maximum current (excluding faulty pixels) above 90&micro;A or any patch
+in OverCurrent or MCP not Idle and bias voltage is neither well defined
+switched on (VoltageOn) nor well defined off (VoltageOff).</li>
+<li>Bias neither ramping, nor in OverCurrent, nor in the well defined
+voltage on or off state.</li>
+<li>Bias crate is currently being calibrated</li>
+</ul>
+
+If the bias crate is currently calibrated asterix' are displayed, otherwise
+median pixel current and the maximum pixel current. The maximum excludes
+the crazy pixels. If a channel is on OverCurrent <I>(OC)</I> is appended.
+If the bias crate has not yet been calibrated the maximum current is
+replaced by a dash. If the bias current have been calibarted 
+already, also the total power consumed by the G-APDs
+is displayed otherwise the median applied voltage.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-drive.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-drive.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-drive.page	(revision 18732)
@@ -0,0 +1,37 @@
+FACT
+|<h4>Drive</h4>
+The current drive status is displayed if the dim-network is online
+and the drivectrl has connection to cosy.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>Drive is tracking</li>
+<li>Drive is tracking and the control deviation is larger than one arc-minute</li>
+<li>Drive is tracking and the control deviation is larger than two arc-minutes or the drive is in ERROR state</li>
+<li>Drive is offline, or online and neither moving nor tracking</li>
+<li>Drive is moving</li>
+</ul>
+
+If the drive is online, the current pointing position is displayed. Between
+sun-rise and sun-set a sun-symbol (&#9788;) is displayed. If between
+sun-set and sun-rise the moon is above horizon, a moon-symbol (&#9790;)
+is displayed. During tracking the current control deviation is 
+displayed behin a plus-minus symbol (&plusmn;). If the source name of
+the current tracking position is available it is displayed in []-parenthesis.
+If the drive is currently moving a moving-symbol (&#10227;) is displayed.
+
+If the drive is online and in error state this is also indicated by the
+extension [ERR]. This should make it easier to detect this state.
+
+If the drive is switched off and either the sun- or the moon-symbol is
+visible, it is extended with either the time until sun-set (indicated 
+with a down-arrow &darr;) or the moon disk visibility in percent.
+When the drive is switched on, this information is omitted due to space
+reasons.
+
+The &otimes;-symbol means that the drive is locked.
+
+More detailed informations about the sun and moon can be found at the
+weather page. More detailed tracking and pointing information at the
+drive page.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-rate.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-rate.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-rate.page	(revision 18732)
@@ -0,0 +1,13 @@
+FACT
+|<h4>Trigger rate</h4>
+If the dim network is online and the trigger master (ftmctrl) in in state
+TriggerOn, the current camera trigger rate is displayed. If the
+bias voltage is swicthed on (biasctrl in state VoltageOn), also the
+median patch threshold is displayed in ()-parenthesis.
+
+<ul class='help'>
+<li>Trigger rate between 15Hz and 100Hz</li>
+<li>Trigger rate below 15Hz</li>
+<li>Trigger rate above 100Hz</li>
+</ul>
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-status.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-status.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-status.page	(revision 18732)
@@ -0,0 +1,27 @@
+FACT
+|<h4>System status</h4>
+Here the status of the whole system is summarized.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>DNS online, MCP taking data, FAD taking data</li>
+<li>n/a</li>
+<li>n/a</li>
+<li>DNS offline of MCP in idle state</li>
+<li>DNS online, MCP configuring, configured or trigger on, MCP taking data and FAD not taking data, or
+ratecontrol in SettingThreshold or ratescan in progress.</li>
+</ul>
+
+The MCP state Idle, any configuring state and configured are display
+as text <I>Idle</I>, <I>Configuring</I> or <I>Configured</I>. In
+brackets the name of the last configured, or corresponding configuration
+is displayed. In case the trigger is swicthed on or the MCP is in state
+data-taking, only the configuration name and the last available
+DRS trigger baseline calibration run is displayed in parenthesis, if
+available. For the special cases that the threshold is currently
+calibrated or a rate scan is in progress, <I>Calibrating threshold</I> or
+<I>Rate scan in progress</I> is displayed. Is the MCP is configured to take
+data or data-taking is in progress, either the length of the run to be taken
+and/or the number of events to be taken are displayed, or an estimate of 
+the remaining time and/or number.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-temp.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-temp.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-temp.page	(revision 18732)
@@ -0,0 +1,19 @@
+FACT
+|<h4>Relative camera temperature</h4>
+The difference between the average temperatur in the sensor compartment
+and the outside temperature as measured by the MAGIC weather station
+is displayed if both value are available.
+
+A green background means
+that a valid number is displayed, i.e. that the camera is
+switched on because values were recived from the slow control
+board and values are received from the MAGIC weather station.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>Relative camera temperature as usual</li>
+<li>Relative camera temperature above 9&deg;C</li>
+<li>Relative camera temperature abive 15&deg;C</li>
+</ul>
+
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact-weather.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact-weather.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact-weather.page	(revision 18732)
@@ -0,0 +1,13 @@
+FACT
+|<h4>Humidity / Wind</h4>
+If the dim network is online and magicweather is in state Receiving and
+at least one report has been received since smartfact was started,
+the current humidity and a measure for the wind gusts from the
+MAGIC weather station are displayed.
+
+<ul class='help'>
+<li>Wind gusts below 35km/h and humidity below 95%</li>
+<li>Wind gusts larger than 35km/h or humidity larger than 95%</li>
+<li>Wind gusts larger than 45km/h or humidity larger than 98%</li>
+</ul>
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-fact.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-fact.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-fact.page	(revision 18732)
@@ -0,0 +1,16 @@
+FACT
+|<H4>General help about SmartFACT++</h4>||help-main
+||
+|System status||help-fact-status
+|Drive||help-fact-drive
+|Relative camera temperature||help-fact-temp
+|Humidity / Wind||help-fact-weather
+|Trigger rate||help-fact-rate
+|G-APD (med/max)||help-fact-bias
+|<h4>Event display</h4>
+The camera display shows one of the last events sent by the fadctrl. 
+To avoid biases in the display by the time marker channels, they
+are replaced with the closest neighbor from the same patch.
+The extracted value corresponds
+to the maximum entry found in the region-of-interest.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-histogram.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-histogram.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-histogram.page	(revision 18732)
@@ -0,0 +1,14 @@
+Histogram
+|image=fact-histogram.png|
+|<h4>min / med /max</h4>
+The minimum, median and maximum value of all values displayed in the histogram.
+|
+|<h4>Scale</h4>
+The scale of the displayed coordinate system. Note that the x-axis is
+defined by the writer and the points are always equidistant in x, even
+they might not be equidistant at all.
+|
+|<h4>Data</h4>
+The data as reloaded from the server. Note that the data is quantized
+into seven bit. Hence, the resolution is limited to 128 steps.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-introduction.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-introduction.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-introduction.page	(revision 18732)
@@ -0,0 +1,32 @@
+Introduction
+|
+The idea of SmartFACT++ is simple. A backend (<I>smartfact</I>) updates some
+data-files continously which can then be retrieved from a web-server
+and the data is displayed in your browser. To keep the network traffic
+low the data is not encapsulated in html, but transmitted <I>as is</I>.
+A JavaScript, running client side, <I>i.e.</I> on the machine running
+the browser is then creating the html around it dynamically which is then
+displayed by the browser. The backend writing the data-files can be basically
+everything. In case of FACT it is a program called <I>smartfact</I> which
+subscribes to all dim-services in the dim-network which are needed.
+Whenever a service is updated, the corresponding files are also updated.
+The disadvantage is that it is difficult to mix information which is 
+not updated together in a single file and display it on a single page.
+This, <I>e.g.</I>, means that a file which is only updated every two 
+hours (because new information is only available every two hours) cannot
+reasonably store information which can change every minute, <I>e.g.</I>
+general warnings. Every page is restricted to reload a single file, to 
+keep network traffic low. A simple solution would be a php which concatenates 
+information before the information is transfered, but this is (not yet?)
+available. Consequently, all pages which are not updated frequently or
+are guranteed to be updated frequently will not show fats updateing
+information as warning. Some pages, <I>e.g.</I>, the main page are
+updated once every seconcd or few seconds rather than updated
+event-driven by the reception of a new service. These pages will then
+show informations like the current warning status of the system.
+
+The page description is reloaded whenver a page has been clicked to
+avoid a lot of network traffic at startup. The disadvantage is a little
+network traffic (in the order of a few hundred bytes) whenever a page
+is changed.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-layout.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-layout.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-layout.page	(revision 18732)
@@ -0,0 +1,37 @@
+Layout
+|<h4>Home</h4>
+Links from all other pages (except the home page itself) to the home page
+|
+|<h4>Watchdog</h4>
+The two dots on the left and the right of the title change their color
+with every retrieved data or graphics file, respectively. This is a way
+to find out if the continous retrieval is still in progress.
+|
+|<h4>Time stamp of displayed data</h4>
+Each data file which is loaded from the server comes with a time-stamp.
+This time-stamp is displayed here. This allows for example to find out
+whether the values are still valid or just the last values produced by the
+system hours ago. If this time-stamp is older than sixty seconds,
+the time is displayed in red color.
+|
+|image=fact-inactive.png|
+|<h4>Link to help page</h4>
+Links to a page giving information about the data currently displayed,
+<i>e.g.</i> meaning of background colors, etc.
+|
+|<h4>Link to control page</h4>
+A direct link to the control page from which actions can be initiated.
+|
+#|<h4>Title</h4>
+#|
+|<h4>Stop script</h4>
+If this button is pressed a STOP is sent to the script control and the script
+should be terminated. On pages which are updated regularly, the color
+shows if a script is running (green) or not (red). When the 
+button is displayed uncolored, the data is in general not updated often enough
+to deliver up-to-date information.
+|
+|<h4>Current UTC</h4>
+The current UTC time is displayed. If this does not happen anymore there
+is a problem with the JavaScript. This is a bug and should never happen.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-main.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-main.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-main.page	(revision 18732)
@@ -0,0 +1,16 @@
+SmartFACT++
+|<H4>General help</H4>||
+|The basic idea - how does it work?||help-introduction
+|Page layout (displayed elements)||help-layout
+|The camera display||help-camera
+|The histogram display||help-histogram
+|Network traffic and refresh||help-traffic
+|URL options||help-url
+|Sounds||help-sounds
+|File syntax||help-syntax
+||
+||
+#|<h4>Help for main page</h4>||help-main
+|<H4>About</H4>||help-about
+||
+|Please report bugs or problems to <A href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</A>|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-moon.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-moon.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-moon.page	(revision 18732)
@@ -0,0 +1,42 @@
+Moon
+|
+<h4>Moon rise/set</h4>
+Moon rise, moon culmination and moon set are always caluclated such
+that the time displayed refers to the next moon rise, culmination or
+set respectively. A blue background marks the next event to happen.
+
+<h4>Disk</h4>
+The moon disk is the visible brightness of the moon. The time in brackets
+is the time to the next moon set or rise, depening on which event
+happens earlier. An up-arrow denotes that it is the time to the moon rise,
+a down-arrow that it is the time to the moon set.
+
+<h4>Position</h4>
+If the moon is above horizon, its current position is displayed in local
+coordinates. The background color represents
+<ul class='help'>
+<li>The moon is above 25&deg; zenith distance</li>
+<li>The moon is between 25&deg; and 45&deg; zenith distance</li>
+<li>The moon is lower than 45&deg; zenith distance</li>
+<li>The moon is not visible</li>
+</ul>
+The assumption is that the further the moon is from the zenith, the
+more light is scattered and the more influence the moon has on
+the observations. It does not directly translate into the particular
+observation conditions or observability.
+
+<h4>Source distance to moon</h4>
+The table displays the angular distance between the sources from the
+database and the moon at any time of the day. The colors represent
+<ul class='help'>
+<li>No moon light is directly hitting the G-APDs</li>
+<li>The distance is very close to the direct or indirect field-of-view of the cones.</li>
+<li>The moon is within th efield-of-view. This condition should be avoided as much as possible.</li>
+</ul>
+
+<i>Note that the color scales are not well motivated as of today. Anybody
+is invited to investigate this issue in more details.</i>
+|
+
+
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-sounds.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-sounds.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-sounds.page	(revision 18732)
@@ -0,0 +1,87 @@
+Sounds
+|
+Sounds have to be explicitly switched on in the URL, <i>e.g.</I>
+
+<pre>
+http://[url]/?sound
+</pre>
+
+Sounds will only be available on pages with regular updates, which are
+the main page and the status page. If sounds are not available,
+a stroke out speaker is displayed.
+
+Note that these pages are only reloaded once in a few seconds. If more
+than one sound is to be played during that time only the last sound
+will be played, <I>i.e.</I> that in special circumstances some sounds
+might be missed.
+
+In the following examples of all available sounds are listed.
+|
+|<h4>Startup</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/startup.mp3"/>
+  <source type="audio/ogg" src="audio/startup.ogg"/>
+</audio><br/>
+This sound is played whenever the control-program of the slow control board
+(fscctrl) gets contact to the hardware. This is usually the case when
+the camera is switched on.
+|
+|<h4>Shutdown</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/shutdown.mp3"/>
+  <source type="audio/ogg" src="audio/shutdown.ogg"/>
+</audio><br/>
+This sound is played whenever the control-program of the slow control board
+(fscctrl) looses contact with the hardware. This is usually the case when
+the camera is switched off.
+|
+|<h4>Error</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/error.mp3"/>
+  <source type="audio/ogg" src="audio/error.ogg"/>
+</audio><br/>
+If a severe error happens, this sounds is displayed. Until the error
+remains, a warning symbol is also displayed in the upper left corner 
+and links to current error messages. A history of erros is accessible
+from the status page via the Smartfact entry.
+|
+|<h4>Script ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/ding.mp3"/>
+  <source type="audio/ogg" src="audio/ding.ogg"/>
+</audio><br/>
+A ding is played if a script has ended or been stopped.
+|
+|<h4>Manual run ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/dong.mp3"/>
+  <source type="audio/ogg" src="audio/dong.ogg"/>
+</audio><br/>
+If a run has been started manually, <I>i.e.</i> no script is running
+at the same time, a ding is played when the run end or to be more
+precise when the Master Control Program (MCP) changed its state
+from TakingData to Idle which happens when the data acquisition (fadctrl)
+leaves its state WritingData.
+|
+|<h4>Automatic run ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/losticks.mp3"/>
+  <source type="audio/ogg" src="audio/losticks.ogg"/>
+</audio><br/>
+For this tick-sound the same conditions apply than for the previous sound
+except that it is played when a script is executed while the run ends.
+The same sound is played whenever a run is started, <i>i.e.</I> the Master
+Control Program (MCP) changed its state from TriggerOn to TakingData
+which happens when the first even has been received and the data 
+acquisition (fadctrl) changed its state to WritingData.
+
+|
+|<h4>Message</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/message.mp3"/>
+  <source type="audio/ogg" src="audio/message.ogg"/>
+</audio><br/>
+This sound will be played if a new message is distributed by the chat-server.
+The chatlog and the possibility to send messages is available from the
+Chat Server entry in the status page.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-source-list.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-source-list.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-source-list.page	(revision 18732)
@@ -0,0 +1,20 @@
+Source list
+|
+The current position on the local sky in La Palma for all 
+sources available in the database is listed.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>Source above 30&deg; zenith distance. The sensitivity is at
+optimum.</li>
+<li>Source between 65&deg; and 30&deg; zenith distance. The sensitivity
+is significantly reduced compared to low zenith angle
+observations.</li>
+<li>Source between 85&deg; and 65&deg; zenith distance. Observation of
+such a source is only useful in very very special  cases. The
+sensitivity dramatically suffers from the high zenith angle.</li>
+<li>Source not visible. Source below 85&deg; zenith
+distance or below the horizon.</li>
+</ul>
+
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-status.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-status.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-status.page	(revision 18732)
@@ -0,0 +1,12 @@
+System status
+|
+The status of several servers is displayed. The background colors denote
+if a system is...
+<ul class='help'>
+<li>...connected and ready for operation</li>
+<li>...available in the network but has no connection to its
+hardware or is not ready for operation</li>
+<li style="display:none;"/>
+<li>...not available in the dim network.</li>
+</ul>
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-sun.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-sun.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-sun.page	(revision 18732)
@@ -0,0 +1,8 @@
+Sun
+|
+On this page several time are displayed related to sun-rise and sun-set.
+All times are always calculate to events in the future, <i>i.e.</i>
+all times denote the next event of that kind.
+
+The blue background shows which even will happen next.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-syntax.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-syntax.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-syntax.page	(revision 18732)
@@ -0,0 +1,60 @@
+Syntax
+|
+To write your own page you need to understand the syntax of the files.
+The first line in the file is the title. It is just the title
+displayed. If the first character is an asterix (*) then the page is
+considered a page which is intented for script submission (<I>control
+page</I>). If the page name starts with <B>help-</B>, the page is
+considered a help page and the help symbol is inactive. If the page is
+a control page, the submitted script with have the name of the page
+without extension,  with the extension <B>.dim</B>, <I>e.g.</I>
+if the page name is <I>mypage.page</I> the submitted scripts
+name is <I>mypage.dim</I>.
+
+Each following line of the file describes a row in the table and is
+split by pipes (&#124;). To use a pipe in a line you have to 
+write &#38;#124;. Lines which containes less than two pipes are
+concatenated until the number of pipes in one line is at least two. So
+the description of one row can look like
+
+<pre>
+leftlink&#124;Description&#124;format&#124;rightlink
+</pre>
+
+but also
+
+<pre>
+leftlink&#124;<br/>
+Description<br/>
+&#124;format&#124;rightlink
+</pre>
+
+If <I>leftlink</I> is available, a left arrow is displayed on the left
+and the row will link to page called <I>leftlink.page</I>. The same for
+<I>rightlink</i>, just that a right arrow is displayed on the right instead.
+Both are mutually exclusive, and can also be omotted.
+
+The <I>Description</I> is just a text which appears on the left side of
+the row in bold-face. if the format is omitted, it will fill the full
+width of the table and be displayed in normal-face. Consequently, a
+simple text entry could look like:
+
+<pre>
+&#124;<br/>
+This is my simple text entry.&lt;br/&gt;<br/>
+We can have more lines...
+
+...and even a paragraph-break.&lt;br/&gt;<br/>
+&#124;
+</pre>
+
+Every line starting with a # is ignored.
+
+The description can also have special contents (see below).
+
+If the help is not a help-page, a data file is loaded and its data is
+displayed on the right of each row according the format given.
+|
+|Special tag descriptions||help-description
+|Data file and data file format||help-datafile
+|Binary file format||help-binaryfile
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-threhsolds.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-threhsolds.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-threhsolds.page	(revision 18732)
@@ -0,0 +1,10 @@
+Thresholds
+|
+Numbers are given for the median board (N/4) and patch (discriminator)
+threshold. The graphics shows a history of the minimum allowed threshold
+determined by the rate control before the start of each run. Whenever 
+this calibration is done, <i>i.e.</i> the minimum threshold during
+data-taking is calibrated before each run, the resulting value is 
+distributed. Under normal circumstances one point in the grahics
+will therefore correspond to one data-taking run.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-tracking.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-tracking.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-tracking.page	(revision 18732)
@@ -0,0 +1,30 @@
+Tracking
+|
+When the telescope is tracking (and only during that), it propagates
+some tracking related information through the dim-network. This page
+shows the values of the latest received report.
+
+The control deviation is the deviation measured between the shaft-encoder
+position at the telescope axis and the command position by the controller.
+Theoretically, real mispointing could be larger due to additional
+bending of the structure.
+
+If a dedicated source is tracked, a source name is displayed. If
+the moon is above the horizon, the distance to the moon is displayed.
+
+The colors represent
+<ul class='help'>
+<li>No moon light is directly hitting the G-APDs</li>
+<li>The distance is very close to the direct or indirect field-of-view of the cones.</li>
+<li>The moon is within th efield-of-view. This condition should be avoided as much as possible.</li>
+</ul>
+
+<i>Note that the color scales are not well motivated as of today. Anybody
+is invited to investigate this issue in more details.</i>
+|
+|<h4>Graphics</h4>
+The graphics display the history of the control deviation. Note that it
+is only updated during tracking and the time axis is just simply binned,
+<I>i.e.</I> that one point represents one service update and they need
+not to be equidistant in time.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-traffic.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-traffic.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-traffic.page	(revision 18732)
@@ -0,0 +1,36 @@
+Network traffic
+|
+This interface is optimized for slow network connection and low network
+traffic. It is not advisable to reload the pages manually because you
+would just reload the JavaScript. The traffic should be <B>less than
+1kB/s</B> and hence suitable also for mobile connections. The layout is
+optimized for small windows and mobile phones. 
+
+The data displayed is refreshed once every three seconds, <I>i.e.</I>
+the file is reloaded from the server. The graphics display is refreshed
+once every five seconds. A new refresh is only started if the old one
+has been finished, either successfully for with an error or timeout,
+<I>i.e.</I> that slow or faulty network connection can significanly
+increase the refresh time. Whenever a refresh was performed, the color
+of the dots around the title is changed (one for the data and one for
+the graphics) to indicate that the JavaScript is still running and
+requesting data from the server. Also the time stamp at the footer is
+updated. The time-stamp of the retrieved data is displayed at the top.
+If no updated could be performed within sixty seconds or the data is
+older than sixty seconds the time stamp is displayed in red. If the
+time-stamp of the graphics is older than sixty seconds the graphics is
+grayed.
+
+In case of errors or broken connections, the time interval for
+retrieval is  increased to ten seconds, and decreased again if valid
+data was received.
+
+The timer is not newly started if a new page is loaded, hence, it might
+take a few seconds before the values will be displayed. 
+
+The typical size of a camera display is about 350 bytes, the typical
+size of the ascii data is about 100 bytes. Adding the HTML header
+which is in the order of 200 bytes, this yields an average transmission
+rate of aprroximately 200 bytes per second. This is less than one
+mega-byte in one hour, plus the data loaded for each page switch.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-trigger.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-trigger.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-trigger.page	(revision 18732)
@@ -0,0 +1,8 @@
+Trigger
+|
+<h4>Current trigger rate</h4>
+The current total camera trigger rate as received by the ftmctrl.
+
+<h4>Graphics</h4>
+The graphics shows a history of the total camera trigger rate.
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-url.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-url.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-url.page	(revision 18732)
@@ -0,0 +1,54 @@
+URL
+|
+The url you specify when calling SmartFACT++ can contain links to the
+page you intend to view first, but also special arguments for steering
+the display, <I>e.g.</I>
+
+<pre>
+http://[url]/?w=320&h=200#status
+</pre>
+
+Would open the status page (status.page) and display the content
+with a fixed size of 320x200. Both, width and height, can be omitted.
+
+Also possible
+
+<pre>
+http://[url]/?max
+</pre>
+
+Usually the graphic is adapted to fit into the viewport (the size of
+your browser window). This option instructs SmartFACT++ to display the 
+graphics always quadratically and with the full width, <I>i.e.</I> it
+might range outside of your window on the bottom of your page and a scroll
+bas would be displayed.
+
+Since SmartFACT++ is also meant for mobile devices, some compromises had
+to be made. One is that modern HTML5 techniques could not be applied to
+the fullest. If your browser has problems with switching pages, you
+can turn off the sliding effect by:
+
+<pre>
+http://[url]/?noslide
+</pre>
+
+On pages which are regularly updated, <i>i.e.</i> the main page and
+the status page, sound output for certain circumstances can be enabled
+with the sound option:
+
+<pre>
+http://[url]/?sound
+</pre>
+
+All of the options can be combined as long as they make sense, <i>e.g.</i>
+
+<pre>
+http://[url]/?noslide&sound
+</pre>
+
+In all examples above the url would usually be
+
+<pre>
+www.fact-project.org/smartfact
+</pre>
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/help-visibility.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/help-visibility.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/help-visibility.page	(revision 18732)
@@ -0,0 +1,19 @@
+Visibility
+|
+The visibility curve shows the altitude of all sources visible
+between the start of the astronomical twilight in the evening and the
+end of the astronomical twilight in the morning. It only shows sources visibly above
+65&deg; zenith distance.
+
+The title shows roughly the start and end time of the time range diaplayed
+and the number of  minutes corresponding to one of the twenty
+steps on the x-axis.
+
+To relate the curves to the visible sources, the order in which they
+culminate is given above the graphics. For sources culminating within
+the displayed time-range, also their zenith distance at culmination is
+listed. 
+
+Note that the zenith distance is counted from the zenith, while
+the altitude is counted from the horizon: Zd=90&deg;-Alt  
+|
Index: branches/FACT++_part_filenames/www/smartfact/struct/hum.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/hum.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/hum.page	(revision 18732)
@@ -0,0 +1,6 @@
+Humidity
+weather|Current|$0%|
+weather|Minimum|$0%|
+weather|Average|$0%|
+weather|Maximum|$0%|
+|hist=hist-magicweather-hum.bin/%|
Index: branches/FACT++_part_filenames/www/smartfact/struct/irqOff.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/irqOff.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/irqOff.page	(revision 18732)
@@ -0,0 +1,4 @@
+!Turn voltage off|off
+control-irq|This sends the interrupt 'off'. It is supposed to
+ramp down the camera voltage, switch off the trigger and close open files.
+No other action is taken. The Main script is stopped.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/irqShutdown.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/irqShutdown.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/irqShutdown.page	(revision 18732)
@@ -0,0 +1,3 @@
+!Shutdown|shutdown
+control-irq|This sends the interrupt 'shutdown'. It is supposed to
+run a full shutdown immediately. The Main script is stopped.|
Index: branches/FACT++_part_filenames/www/smartfact/struct/moon.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/moon.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/moon.page	(revision 18732)
@@ -0,0 +1,14 @@
+Moon
+|Rise|$0|
+|Culmination|$0|
+|Set|$0|
+||
+|Disk|$0|
+|Position|$0&deg; $1|
+||
+|Current prediction||current-prediction
+|<h4>Source distance to moon</h4>|
+||<table class='astro'>$0</table>|
+|Request time|$0|
+||
+|<h4>Sun</h4>||sun
Index: branches/FACT++_part_filenames/www/smartfact/struct/observations.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/observations.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/observations.page	(revision 18732)
@@ -0,0 +1,2 @@
+Observations
+||$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/patchrates.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/patchrates.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/patchrates.page	(revision 18732)
@@ -0,0 +1,6 @@
+Patch rates
+trigger|Min. patch rate|$0 Hz|
+trigger|Med. patch rate|$0 Hz|
+trigger|Avg. patch rate|$0 Hz|
+trigger|Max. patch rate|$0 Hz|
+|camera=cam-ftmcontrol-patchrates.bin/ Hz|
Index: branches/FACT++_part_filenames/www/smartfact/struct/pfmini-hum.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/pfmini-hum.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/pfmini-hum.page	(revision 18732)
@@ -0,0 +1,2 @@
+PFmini Humidity
+|hist=hist-pfmini-hum.bin/%|
Index: branches/FACT++_part_filenames/www/smartfact/struct/pfmini-temp.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/pfmini-temp.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/pfmini-temp.page	(revision 18732)
@@ -0,0 +1,2 @@
+PFmini Temperature
+|hist=hist-pfmini-temp.bin/&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/pfmini.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/pfmini.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/pfmini.page	(revision 18732)
@@ -0,0 +1,3 @@
+PFmini status
+|Temperature|$0&deg;C|pfmini-temp
+|Humidity|$0%|pfmini-hum
Index: branches/FACT++_part_filenames/www/smartfact/struct/pointing.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/pointing.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/pointing.page	(revision 18732)
@@ -0,0 +1,4 @@
+Pointing
+|<h4>Last known pointing position</h4>|
+tracking|Azimuth|$0&deg; [$1]|
+tracking|Zenith distance|$0&deg;|
Index: branches/FACT++_part_filenames/www/smartfact/struct/press.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/press.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/press.page	(revision 18732)
@@ -0,0 +1,6 @@
+Pressure
+weather|Current|$0 hPa|
+weather|Minimum|$0 hPa|
+weather|Average|$0 hPa|
+weather|Maximum|$0 hPa|
+|hist=hist-magicweather-press.bin/ hPa|
Index: branches/FACT++_part_filenames/www/smartfact/struct/ratescan-board.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/ratescan-board.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/ratescan-board.page	(revision 18732)
@@ -0,0 +1,4 @@
+Ratescan Board
+ratescan|Board ID|$0|
+ratescan|Rate|$0 Hz|
+|hist=hist-ratescan-board.bin/e|
Index: branches/FACT++_part_filenames/www/smartfact/struct/ratescan.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/ratescan.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/ratescan.page	(revision 18732)
@@ -0,0 +1,6 @@
+Ratescan
+status|Median board threshold|$0|
+status|Median patch threshold|$0|
+status|Camera rate|$0 Hz
+|Max board rate|$0 Hz|ratescan-board
+|hist=hist-ratescan.bin/e|
Index: branches/FACT++_part_filenames/www/smartfact/struct/scriptlog.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/scriptlog.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/scriptlog.page	(revision 18732)
@@ -0,0 +1,3 @@
+Scriptlog
+|<font color='darkred' size='-1'><B>This page might create network traffic as high as 3kB/s</B></font>|
+||$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/source-list.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/source-list.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/source-list.page	(revision 18732)
@@ -0,0 +1,6 @@
+Sources
+|Source visibility||visibility
+||
+|<h4>Source positions (Zd / Az)</h4>|
+tracking||<table class='astro'>$0</table>|
+|Request time|$0|
Index: branches/FACT++_part_filenames/www/smartfact/struct/source.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/source.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/source.page	(revision 18732)
@@ -0,0 +1,7 @@
+Source
+tracking|Source Name|$0
+tracking|Right ascension|$0 h
+tracking|Declination|$0&deg;
+tracking|Wobble offset|$0&deg;
+tracking|Wobble angle|$0&deg;
+tracking|Orbit period|$0min
Index: branches/FACT++_part_filenames/www/smartfact/struct/sqm.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/sqm.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/sqm.page	(revision 18732)
@@ -0,0 +1,6 @@
+SQM status
+status|Magnitude|$0|
+status|Sensor freq.|$0Hz|
+status|Sensor period|$0|
+status|Sensor period|$0s|
+status|Sensor temp|$0&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/status.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/status.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/status.page	(revision 18732)
@@ -0,0 +1,32 @@
+System status
+|DIM|$0|
+|Dim Control|$0|scriptlog
+|MCP|$0|observations
+|Datalogger|$0|
+|Drive control|$0|
+|Drive PC time check|$0|
+|FAD control|$0|fad
+|FTM control|$0|ftm
+|Bias control|$0|
+|Feedback|$0|
+|Rate control|$0|
+|FSC control|$0|
+|PFmini control|$0|pfmini
+|GPS control|$0|gps
+|SQM control|$0|sqm
+|Agilent control (24V)|$0|agilent24
+|Agilent control (50V)|$0|agilent50
+|Agilent control (80V)|$0|agilent80
+|Power control|$0|
+|Lid control|$0|
+|Ratescan|$0|ratescan
+|Magic Weather|$0|
+|TNG Weather|$0|
+|Magic Lidar|$0|
+|Temperature|$0|temperature
+|Chat server|$0|chat
+|Skype client|$0|
+|Free space (newdaq)|$0|
+|Free space (daq)|$0|
+|Smartfact runtime|$0|errorhist
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/sun.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/sun.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/sun.page	(revision 18732)
@@ -0,0 +1,14 @@
+Sun
+|<h4>Sun rise</h4>|
+|End of dark time|$0|
+|End of astron. twilight|$0|
+|End of nautical twilight|$0|
+|Start of day-time|$0|
+||
+|<h4>Sun set</h4>|
+|End of day-time|$0|
+|Start of nautical twilight|$0|
+|Start of astron. twilight|$0|
+|Start of dark time|$0|
+||
+|<h4>Moon</h4>||moon
Index: branches/FACT++_part_filenames/www/smartfact/struct/temp.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/temp.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/temp.page	(revision 18732)
@@ -0,0 +1,6 @@
+Temperature
+weather|Current|$0&deg;C|
+weather|Minimum|$0&deg;C|
+weather|Average|$0&deg;C|
+weather|Maximum|$0&deg;C|
+|hist=hist-magicweather-temp.bin/&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/temperature.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/temperature.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/temperature.page	(revision 18732)
@@ -0,0 +1,5 @@
+Container Temp
+status|24h Minimum|$0&deg;C|
+status|Current temp|$0&deg;C|
+status|24h Maximum|$0&deg;C|
+|hist=hist-temperaturecontrol.bin/&deg;C|
Index: branches/FACT++_part_filenames/www/smartfact/struct/thresholds-board.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/thresholds-board.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/thresholds-board.page	(revision 18732)
@@ -0,0 +1,5 @@
+Board thresholds
+thresholds|Min. board threshold|$0|
+thresholds|Med. board threshold|$0|
+thresholds|Max. board threshold|$0|
+|camera=cam-ftmcontrol-thresholds-board.bin|
Index: branches/FACT++_part_filenames/www/smartfact/struct/thresholds-patch.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/thresholds-patch.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/thresholds-patch.page	(revision 18732)
@@ -0,0 +1,5 @@
+Patch thresholds
+thresholds|Min. patch threshold|$0|
+thresholds|Med. patch threshold|$0|
+thresholds|Max. patch threshold|$0|
+|camera=cam-ftmcontrol-thresholds-patch.bin|
Index: branches/FACT++_part_filenames/www/smartfact/struct/thresholds.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/thresholds.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/thresholds.page	(revision 18732)
@@ -0,0 +1,4 @@
+Thresholds
+|Med. board threshold|$0|thresholds-board
+|Med. patch threshold|$0|thresholds-patch
+|hist=hist-ratecontrol-threshold.bin|
Index: branches/FACT++_part_filenames/www/smartfact/struct/tngdust.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/tngdust.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/tngdust.page	(revision 18732)
@@ -0,0 +1,2 @@
+Dust (TNG)
+|hist=hist-tng-dust.bin/ &micro;g/m&sup3;|
Index: branches/FACT++_part_filenames/www/smartfact/struct/tracking.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/tracking.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/tracking.page	(revision 18732)
@@ -0,0 +1,13 @@
+Tracking
+|Source list||source-list
+|Source visbility||visibility
+||
+|<h4>Last known tracking position</h4>|
+|Source Name|$0|source
+fact|Right ascension|$0 h
+fact|Declination|$0&deg;
+|Zenith distance|$0&deg;|pointing
+|Azimuth|$0&deg;|pointing
+fact|Control deviation|$0"
+fact|Distance to moon|$0&deg;
+|hist=hist-control-deviation.bin/"|
Index: branches/FACT++_part_filenames/www/smartfact/struct/trigger.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/trigger.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/trigger.page	(revision 18732)
@@ -0,0 +1,6 @@
+Trigger
+|Thresholds||thresholds
+fact|Current trigger rate|$0 Hz
+|Board rates (min/med/max)|$0 Hz / $1 Hz / $2 Hz|boardrates
+|Patch rates (min/med/max)|$0 Hz / $1 Hz / $2 Hz|patchrates
+|hist=hist-ftmcontrol-triggerrate.bin/ Hz|
Index: branches/FACT++_part_filenames/www/smartfact/struct/visibility.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/visibility.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/visibility.page	(revision 18732)
@@ -0,0 +1,6 @@
+Visibility
+|Source list||source-list
+||
+|<h4>Order of culmination (Zd)</h4>||
+||<span class='sources'>$0</span>|
+|hist=hist-visibility.bin/&deg;|
Index: branches/FACT++_part_filenames/www/smartfact/struct/voltage.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/voltage.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/voltage.page	(revision 18732)
@@ -0,0 +1,6 @@
+Voltage
+bias|Min. voltage|$0 V|
+bias|Med. voltage|$0 V|
+bias|Avg. voltage|$0 V|
+bias|Max. voltage|$0 V|
+|camera=cam-biascontrol-voltage.bin/ V|
Index: branches/FACT++_part_filenames/www/smartfact/struct/weather.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/weather.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/weather.page	(revision 18732)
@@ -0,0 +1,12 @@
+Weather
+|Sun|$0|sun
+|Moon|$0|moon
+|Temperature|$0&deg;C|temp
+|Dew point|$0&deg;C|dew
+|Humidity|$0%|hum
+|Pressure|$0 hPa|press
+|Wind speed|$0 km/h|wind
+|Wind gusts|$0 km/h|gusts
+|Wind direction|$0
+|Dust (TNG)|$0 &micro;g/m&sup3; [$1]|tngdust
+
Index: branches/FACT++_part_filenames/www/smartfact/struct/wind.page
===================================================================
--- branches/FACT++_part_filenames/www/smartfact/struct/wind.page	(revision 18732)
+++ branches/FACT++_part_filenames/www/smartfact/struct/wind.page	(revision 18732)
@@ -0,0 +1,6 @@
+Wind speed
+weather|Current|$0 km/h|
+weather|Minimum|$0 km/h|
+weather|Average|$0 km/h|
+weather|Maximum|$0 km/h|
+|hist=hist-magicweather-wind.bin|
Index: branches/FACT++_part_filenames/www/viewer/index.css
===================================================================
--- branches/FACT++_part_filenames/www/viewer/index.css	(revision 18732)
+++ branches/FACT++_part_filenames/www/viewer/index.css	(revision 18732)
@@ -0,0 +1,61 @@
+.CodeMirror { border: 0; font-size:9pt; }
+
+.cm-s-fact.CodeMirror { background: #000000; color: /*#F8F8F8*/ lightgrey; font-weight:bold; }
+.cm-s-fact .CodeMirror-selected { background: #253B76 !important; }
+.cm-s-fact .CodeMirror-gutters { background: #0C1021; border-right: 0; }
+.cm-s-fact .CodeMirror-linenumber { color: #888; }
+.cm-s-fact .CodeMirror-cursor { border-left: 1px solid #C7C7C7 !important; }
+
+.cm-s-fact .cm-keyword { color: #F8F8F8 /*#FBDE2D*/; } /* new, var, for, if, return */
+.cm-s-fact .cm-atom { color: #C8C8C8; }    /* null */
+.cm-s-fact .cm-number { color: /*red*/ #D8FA3C; }  /* 0, 1, 2, 3, ... */
+
+.cm-s-fact .cm-variable { color: #FFEA80; }  /* global variables */
+.cm-s-fact .cm-variable-2 { color:#FFB450; } /* local variables */
+.cm-s-fact .cm-property { color: #FF6400; }  /* properties */
+
+.cm-s-fact .cm-operator { color: lightblue;/*blueviolet*/ #FBDE2D;}
+.cm-s-fact .cm-comment { color: olive/*#5EAE5E*/; }
+.cm-s-fact .cm-string { color: #61CE3C; }
+.cm-s-fact .cm-string-2 { color: #61CE3C; }
+
+.cm-s-fact .CodeMirror-activeline-background {background: #252020 !important;}
+.cm-s-fact .CodeMirror-matchingbracket {color:red !important; font-weight:bold !important;}
+
+.CodeMirror-focused .cm-matchhighlight
+{
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);
+    background-position: bottom;
+    background-repeat: repeat-x;
+}
+
+/* From FTE:
+   keyword:   white
+   atom:      grey
+   variable:  grey
+   number:    red
+   operator:  dark cyan
+   comment:   military green
+   string:    yellow
+   brackets:  dark cyan
+*/
+
+.myaccordion .ui-accordion-header
+{
+    background-color: #ccc;  
+    margin: 0px;
+    font-size:10pt;
+    padding-left: 25px;
+    padding-right: 25px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
+
+.myaccordion .ui-accordion-content
+{
+    color: #000;
+    font-size: 10pt; 
+    padding-top: 1ex;
+    padding-bottom: 1em;
+    padding-left: 2ex;
+}
Index: branches/FACT++_part_filenames/www/viewer/index.html
===================================================================
--- branches/FACT++_part_filenames/www/viewer/index.html	(revision 18732)
+++ branches/FACT++_part_filenames/www/viewer/index.html	(revision 18732)
@@ -0,0 +1,648 @@
+<!DOCTYLE HTML>
+<html>
+<head>
+    <link rel="stylesheet" href="jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css"/>
+    <script src="jquery-2.1.0.min.js"></script>
+    <script src="jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js"></script>
+    
+    <link rel="stylesheet" href="codemirror-4.1/lib/codemirror.css"/>
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/myblackboard.css"/>-->
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/blackboard.css">-->
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/3024-night.css">-->
+    <link rel="stylesheet" href="codemirror-4.1/addon/display/fullscreen.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/dialog/dialog.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/fold/foldgutter.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/lint/lint.css"/>
+    <script src="codemirror-4.1.min.js"></script>
+    <!--
+    <script src="codemirror-4.1/lib/codemirror.js"></script>
+    <script src="codemirror-4.1/mode/javascript/javascript.js"></script>
+    <script src="codemirror-4.1/addon/selection/active-line.js"></script>
+    <script src="codemirror-4.1/addon/fold/brace-fold.js"></script>
+    <script src="codemirror-4.1/addon/runmode/colorize.js"></script>
+    <script src="codemirror-4.1/addon/fold/comment-fold.js"></script>
+    <script src="codemirror-4.1/addon/dialog/dialog.js"></script>
+    <script src="codemirror-4.1/addon/fold/foldcode.js"></script>
+    <script src="codemirror-4.1/addon/fold/foldgutter.js"></script>
+    <script src="codemirror-4.1/addon/display/fullscreen.js"></script>
+    <script src="codemirror-4.1/addon/hint/javascript-hint.js"></script>
+    <script src="codemirror-4.1/addon/lint/lint.js"></script>
+    <script src="codemirror-4.1/addon/lint/javascript-lint.js"></script>
+    <script src="codemirror-4.1/addon/search/match-highlighter.js"></script>
+    <script src="codemirror-4.1/addon/edit/matchbrackets.js"></script>
+    <script src="codemirror-4.1/addon/runmode/runmode.js"></script>
+    <script src="codemirror-4.1/addon/search/search.js"></script>
+    <script src="codemirror-4.1/addon/search/searchcursor.js"></script>
+    <script src="codemirror-4.1/addon/hint/show-hint.js"></script>
+    -->
+    <script src="flot-0.8.3/jquery.flot.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.selection.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.symbol.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.resize.js"></script>
+    <script src="jshint.js"></script>
+    <script src="index.js"></script>
+
+    <link rel="stylesheet" href="index.css"/>
+</head>
+
+<body>
+
+<div id='tooltip' style="z-index:1000;position:absolute;display:none;border:1px solid #fdd;padding;2px;background-color:#fee;opacity:0.8"></div>
+
+<div class="myaccordion" id="accordion5">
+   <h3><a href="#">Editor 1 (proc)</a></h3>
+   <div id="editorcontainer1fake" style="position:absolute;border:0;opacity:0"></div>
+</div>
+<div id="editorcontainer1" style="z-index:600;">
+   <form action="index.php" method="post" style="margin-bottom:0px">
+      <div id="textcontainer1">
+         <textarea id="editor1" name="editor1" type="textarea">
+return $.data[pixel];
+         </textarea>
+      </div>
+      <div class="ui-widget-content" style="background:#333;color:#eef;border-top-width:0;padding-top:2px;">
+         <input type="submit" value="Save"></input>
+         <input type="file" name="files[]" id="selectfile1"></input><output id="file1"></output>
+      </div>
+    </form>
+</div>
+
+<div class="myaccordion" id="accordion1">
+   <h3><a href="#">Editor 2 (main)</a></h3>
+   <div id="editorcontainer2fake" style="position:absolute;border:0;opacity:0"></div>
+</div>
+<div id="editorcontainer2">
+   <form action="index.php" method="post" style="margin-bottom:0px">
+      <div id="textcontainer2"> 
+         <textarea id="editor2" name="editor2" type="textarea">
+print("This output will go to the virtual Console.\n");
+
+// The four first values of pixel 1
+var arr = [ $.data[1][0], $.data[1][1], $.data[1][2], $.data[1][3] ];
+print("Pixel 1: [ "+arr+" ]\n");
+
+// Get the maximum sample from each pixel
+var rc = [new Array(1440),new Array(1440)];
+for (var p=0; p<$.event.numPix; p++)
+{
+    var max =  0;
+    var idx = -1;
+    for (var s=5; s<$.event.numRoi-60; s++)
+    {
+        // spike suppression
+        var h = ($.data[p][s]-$.data[p][s-1]) + ($.data[p][s]-$.data[p][s+1]);
+
+        if ($.data[p][s]>max && h<20)
+        {
+            max = $.data[p][s];
+            idx = s;
+        }
+    }
+    rc[0][p]=idx<0 ? null : max;
+    rc[1][p]=idx<0 ? null : idx;
+}
+
+return rc;
+         </textarea>
+      </div>
+      <div class="ui-widget-content" style="background:#333;color:white;border-top-width:0;padding-top:2px;">
+         <input type="submit" value="Save"></input>
+         <input type="file" name="files[]" id="selectfile2"></input><output id="file2"></output>
+      </div>
+   </form>
+</div>
+
+<div class="myaccordion" id="accordion" style="margin-bottom:1ex">
+   <h3><a  style="color:red" href="#">Runtime error</a></h3>
+   <div>
+      <pre id="error" style="color:red"></pre>
+   </div>
+   <h3><a href="#">Console</a></h3>
+   <div>
+      <pre style="color:green" id="console"></pre>
+   </div>
+   <h3><a href="#">Run info</a></h3>
+   <div>
+      <pre id="runinfo"></pre>
+   </div>
+   <h3><a href="#">Debug</a></h3>
+   <div id="debug">
+   </div>
+</div>
+
+<div class="ui-widget-content" style="background:#eee;margin-top:-10px">
+   <input id="submit"  type="button" onclick="onSubmit();" value="Submit"></input>
+   <span style="float:right;white-space:nowrap;">
+      <span id="txtmontecarlo" style="color:darkgrey;">MC</span>
+      <input id="montecarlo" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();" disabled="true"></input>
+      <span id="txtdrsfile">DRS</span>
+      <input id="drsfile" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();"></input>
+      <span id="txtcalibrated">Cal</span>
+      <input id="calibrated" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();"></input>
+      Run 
+      <input id="file" style="width:100px"></input>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      Evt 
+      <input id="event" style="text-align:right;" type="number" onchange="onEvent();"  value="0" min="0" max="0"    step="1"></input>/<span id="numevents">---</span>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      Pix 
+      <input id="pixel" style="text-align:right;width:50px;" type="number" onchange="onPixel();"  value="0" min="0" max="1439" step="1"></input>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      CBPX
+      <input id="cbpx-c" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="1" min="0" max="3" step="1"></input>
+      <input id="cbpx-b" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="0" min="0" max="9" step="1"></input>
+      <input id="cbpx-p" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="3" min="0" max="3" step="1"></input>
+      <input id="cbpx-x" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="6" min="0" max="8" step="1"></input>
+      =
+      <input id="cbpx"   style="text-align:right;width:50px;" type="number" onchange="onHW();"  value="393" min="0" max="1439" step="1"></input>
+   </span>
+</div>
+
+<div class="myaccordion" id="accordion2">
+   <h3><a href="#">Camera display</a></h3>
+</div>
+<div id="cameracontainer" class="ui-widget-content">
+   <table width="100%">
+      <colgroup>
+         <col style="width:38.5%;">
+         <col style="width:23%;">
+         <col style="width:38.5%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="cameramin1"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(1);"  value="0" disabled="true"></input>
+               <input id="cameraminon1" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(1);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="cameramax1"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(1);"  value="0" disabled="true"></input>
+               <input id="cameramaxon1" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(1);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center" id="eventinfo">
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min 
+               <input id="cameramin2"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(2);"  value="0" disabled="true"></input>
+               <input id="cameraminon2" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(2);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max 
+               <input id="cameramax2"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(2);"  value="0" disabled="true"></input>
+               <input id="cameramaxon2" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(2);" checked="true"></input>
+            </span>
+         </td>
+         <td>
+         </td>
+      </tr>
+   </table>
+
+   <table id="table" width="100%" border="0" style="border:0;margin:0;padding:0;">
+      <tr style="margin:0;padding:0;">
+         <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera1"></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera3"><canvas id="camera3" width="1" height="1"></canvas></td></tr>
+            </table>
+	 </td>
+	 <td style="margin:0;padding:0;" id="centercamera"><canvas id="camera1" width="1" height="1"></canvas></td>
+	 <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera2"><canvas id="camera2" width="1" height="1"></canvas></td></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera4"><canvas id="camera4" width="1" height="1"></canvas></td></tr>
+	    </table>
+	 </td>
+      </tr>
+   </table>
+
+   <table width="100%">
+      <colgroup>
+         <col style="width:38.5%;">
+         <col style="width:23%;">
+         <col style="width:38.5%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="cameramin3"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(3);"  value="0" disabled="true"></input>
+               <input id="cameraminon3" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(3);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="cameramax3"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(3);"  value="0" disabled="true"></input>
+               <input id="cameramaxon3" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(3);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center;">
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="grid"   type="checkbox" onclick="refreshCameras();" checked="true">Grid</input></span>
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="marker" type="checkbox" onclick="refreshCameras();" checked="true">Marker</input></span>
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="image"  type="checkbox" onclick="refreshCameras();">Image</input></span>
+            <!--Pixel value: 
+            <input id="value" type="text" readonly="true"  value="0" style="text-align:right;width:100px"></input>-->
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min 
+               <input id="cameramin4"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(4);"  value="0" disabled="true"></input>
+               <input id="cameraminon4" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(4);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="cameramax4"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(4);"  value="0" disabled="true"></input>
+               <input id="cameramaxon4" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(4);" checked="true"></input>
+            </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion7">
+   <h3><a href="#">Histograms</a></h3>
+</div>
+<div id="histcontainer" class="ui-widget-content">
+   <table width="100%">
+      <colgroup>
+         <col style="width:40%;">
+         <col style="width:20%;">
+         <col style="width:40%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min
+               <input id="histmin1"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(1);"  value="0" disabled="true"></input>
+               <input id="histminon1" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(1);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max
+               <input id="histmax1"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(1);"  value="0" disabled="true"></input>
+               <input id="histmaxon1" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(1);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center" id="eventinfo">
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min
+               <input id="histmin2"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(2);"  value="0" disabled="true"></input>
+               <input id="histminon2" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(2);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="histmax2"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(2);"  value="0" disabled="true"></input>
+               <input id="histmaxon2" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(2);" checked="true"></input>
+            </span>
+         </td>
+         <td>
+         </td>
+      </tr>
+   </table>
+
+   <table id="table" width="100%" border="0" style="border:0;margin:0;padding:0;">
+      <tr style="margin:0;padding:0;">
+         <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist1"></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist3"><div style="width:1px;height:1px;" id="hist3"></div></td></tr>
+            </table>
+	 </td>
+	 <td style="margin:0;padding:0;" id="centerhist"><div style="width:1px;height:1px;" id="hist1"></div></td>
+	 <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist2"><div style="width:1px;height:1px;" id="hist2"></div></td></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist4"><div style="width:1px;height:1px;" id="hist4"></div></td></tr>
+	    </table>
+	 </td>
+      </tr>
+   </table>
+
+   <table width="100%">
+      <colgroup>
+         <col style="width:50%;">
+         <col style="width:50%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="histmin3"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(3);"  value="0" disabled="true"></input>
+               <input id="histminon3" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(3);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="histmax3"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(3);"  value="0" disabled="true"></input>
+               <input id="histmaxon3" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(3);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min
+               <input id="histmin4"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(4);"  value="0" disabled="true"></input>
+               <input id="histminon4" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(4);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="histmax4"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(4);"  value="0" disabled="true"></input>
+               <input id="histmaxon4" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(4);" checked="true"></input>
+            </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion3">
+   <h3><a href="#">Waveform</a></h3>
+</div>
+<div id="waveformcontainer"  class="ui-widget-content">
+   <div id="waveform" style="width:100%;height:300px;"></div>
+   <table style="width:100%">
+      <colgroup>
+         <col style="width:33%;">
+         <col style="width:66%;">
+      </colgroup>
+      <tr>  
+         <td style="text-align:left;margin-right:2px;">
+            <span style="white-space:nowrap;float:left">
+               Xmin
+               <input id="waveformxmin"   style="width:55px;text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformxminon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+      	    </span>
+      	    <span style="white-space:nowrap;float:left">
+               Xmax
+               <input id="waveformxmax"   style="width:55px;text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformxmaxon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+      	    </span>
+     	 </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap;">
+               Ymin
+               <input id="waveformmin"   style="text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformminon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Ymax
+               <input id="waveformmax"   style="text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformmaxon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+           </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion6">
+   <h3><a href="#">Additional controls</a></h3>
+</div>
+<div id="ctrlcontainer" class="ui-widget-content">
+   <form id="controls" method="POST" style="margin-bottom:0">
+      <input id="getgeometry" type="button" onclick="onGetGeometry();" value="Get geometry"></input>
+      <input id="getcamera"   type="button" onclick="onGetCameras();" value="Get camera data"></input>
+      <input id="getwaveform" type="button" onclick="onGetWaveforms();" value="Get waveforms"></input>
+      <input id="data" name="data" type="hidden"></input>
+      <input id="name" name="name" type="hidden"></input>
+   </form>
+</div>
+
+<div class="myaccordion" id="accordion4">
+   <h3><a href="#">Help</a></h3>
+</div>
+<div id="helpcontainer" class="ui-widget-content" style="padding-left:40px;padding-right:40px;padding-bottom:40px;">
+<H1>HELP</H1>
+
+<H3>How does it work?</H3>
+When you submit a javascript to the server, it will be executed
+on a sandbox on the server. Before the event is loaded from a file
+and made available within the sandbox. Generally, the sandbox
+can easily be enhanced, e.g. with algorithms available in php.
+This can be done on request. After execution, the result returned
+by the script is then displayed in the camera display.
+
+<H3>Why Javascript?</H3>
+Simply for security reasons. To avoid tranferring the event to the client's
+browser, the script must be executed on the server side. Also Python
+and PHP offer the possibility to execute scripts within a program,
+they do not have any security feature to avoid for exmple access to the
+local disk. The V8 Javascript engine however, is very limited in
+functionality and therefore ideally suited for a sandboxed and
+therefore safe excution on the server. Any other solution is welcome.
+
+<H3>Javascript hints!</H3>
+Please note that in Javascript only basic data typed (number, etc)
+are copied in an assignment. In all other cases, only a reference
+is copied. For example, the following code snippet does not return 2
+as you might expect but 7!
+<pre>
+var arr = [ 0, 1, 2, 3 ];
+var cpy = arr;
+cpy[2] = 7;
+print(arr[2]);
+</pre>
+To avoid that, the global namespace implements a clone function.
+For exmaple, the following code snippet will return the expected output:
+<pre>
+var arr = [ 0, 1, 2, 3 ];
+var cpy = $.clone(arr);
+cpy[2] = 7;
+print(arr[2]);
+</pre>
+
+<H3>Javascript arrays</H3>
+Note that javascript arrays have some very powerful member functions. 
+For a description see for example 
+<A HREF="http://www.tutorialspoint.com/javascript/javascript_arrays_object.htm">here</A>
+or search google for function like <i>map</i> or <i>reduce</i>.
+
+<H3>The global object $</H3>
+
+The environment provides a global object (namesapce) called $ with the following members:
+<table>
+<tr><td>$.file.numEvents</td><td>Number of events in the file</td></tr>
+<tr><td>$.file.runStart</td><td>MJD of run start minus 40587 (unix time in days)</td></tr>
+<tr><td>$.file.runEnd</td><td>MJD of run end minus 40587 (unix time in days)</td></tr>
+<tr><td>$.file.drsFile</td><td>If this is a DRS calibration file, the step id, otherwise -1</td></tr>
+<tr><td>$.file.isMC</td><td>True is this was requested as Monte Carlo file</td></tr>
+<tr><td>$.file.isDRS</td><td>True if DRS calibration constants were requested</td></tr>
+<tr><td>$.file.isCalibrated</td><td>True if a calibrated file was requested</td></tr>
+<tr><td>$.event</td><td>The event header information as obtained from the file</td></tr>
+<tr><td>$.event.numRoi</td><td>Number of samples per pixel</td></tr>
+<tr><td>$.event.numPix</td><td>Number of pixels</td></tr>
+<tr><td>$.event.eventNumber</td><td>Event number</td></tr>
+<tr><td>$.event.triggerNumber</td><td>Trigger number</td></tr>
+<tr><td>$.event.triggerType</td><td>Trigger type</td></tr>
+<tr><td>$.event.trigger</td><td>Decoded trigger information</td></tr>
+<tr><td>$.event.unixTime[2]</td><td>Timestamp when the event arrived at the event builder (unix time in s and us)</td></tr>
+<tr><td>$.event.time</td><td>Date object according to unixTime (ms precision)</td></tr>
+<tr><td>$.data[numPix][numRoi]</td><td>The event data</td></tr>
+<tr><td>$.nroi</td><td>Shortcut to $.event.numRoi</td></tr>
+<tr><td>$.npix</td><td>Shortcut to $.event.numPix</td></tr>
+<tr><td>$.trigger</td><td>Shortcut to $.event.trigger</td></tr>
+<tr><td>$.neighbors</td><td>Array of 1440 arrays each containing the corresponding neighbors</td></tr>
+<tr><td>$.map</td><td>Array of 1440 entries (software index) containing the hardware indices.</td></tr>
+<tr><td>$.geom</td><td>Array of 1440 entries. Each an array with two entries, x and y. The distance between two neighbors is 1.</td></tr>
+<tr><td>$.dist(i,j)</td><td>Calculated the distance of two pixels in degree.</td></tr>
+<tr><td>$.conv</td><td>Conversion factor to convert geom and dist to degree.</td></tr>
+</table>
+
+<H3>Stack traces</H3>
+Please note that due to some interna, the line numbers in the
+stack trace shown in case of runtime errors are by one line too high.
+
+<H3>Editor 1 (proc)</H3>
+
+<I>proc</I> can return an array with numRoi entries or an array with up to 
+four sub-arrays each of nRoi entries. They will be displayed in the graph.
+The chosel pixel is available as <I>pixel</I>.
+The most simple is to just return the selected pixel data unprocssed:
+<pre>
+return $.data[pixel];
+</pre>
+
+<H3>Editor 2 (main)</H3>
+<I>main</I> should return extracted data per pixel. As <I>proc</I> it can
+return a single array or an array with up to four sub-arrays each with
+numPix entries. They are displayed in the camera displays. The function
+implemented as <I>proc</I> is accessible as <I>proc(i)</I> with <I>i</I> 
+being available in <I>proc</I> as <I>pixel</I>. A very simple extractor
+could be to return just the sample at the trigger position
+<pre>
+var rc = [];
+for (var i=0; i<$.event.numPix; i++)
+    rc[i] = $.data[i][60];
+return rc;
+</pre>
+or taking the data pre-procesed by the code of the <I>proc</I>-function:
+<pre>
+var rc = [];
+for (var i=0; i<$.event.numPix; i++)
+    rc[i] = proc(i)[60];
+return rc;
+</pre>
+
+Note that the precise access to the result of proc might depend on what
+exactly is retruned by proc (an array, or an array with sub-arrays).
+
+Pixel which are not returned (<tt>undefind</tt> or <tt>null</tt>) are
+not displayed. This allows to show cleaned images as well or test
+image cleaning algorithms.
+
+<H3>What is the data?</H3>
+The data are all data files found in disks in La Palma (to be precise:
+on daq's disks). The data is raw-data but with the most recent 
+DRS calibration (only the 1024-cell offset calibration) 
+applied, while the application is done in intergers, i.e. the
+fractional part of the calibration constant is removed. 
+(This is basically what is written in our FITS files as part of the
+lossless compression process). No spike or jump removal is applied.
+
+<H3>The editor</H3>
+Key bindings of the editor can be found at 
+<A HREF="http://codemirror.net/doc/manual.html#commands">Codemirror</A>.
+In addition the following binding are defined: Tab - Auto indent;
+F11 - Switch to fullscreen; Esc - In fullscreen mode to 
+leave fullscreen; Ctrl-r - replace; Ctrl-y - Delete the line under the cursor;
+Ctrl-. (dot) - Fold code; Ctrl-Down (cursor down) - Autocomplete.
+
+<H3>How to change the file?</H3>
+Start typing the date in the filename field. The available files 
+will be filtered as you type. To select a file you need to select
+it fom the pull down.
+
+<H3>What is the meaning of the DRS and Cal checkboxes?</H3>
+For some files, files which contain calibrated data are available. 
+This means that the DRS calibration (offset (1024), gain and offset
+(roi)) has been applied. Enabling the checkbox will show this data
+instead of the raw data. Note that the precision is limited to 0.1mV.
+In some cases files were taken to deduce this calibration constants
+(DRS files). This is done in four steps: offset, gain, offset (1024),
+offset (roi). These steps are called 0, 1, 2 and 2 respectively. If the
+checkbox Drs is enabled, the corresponding calibration constants as
+stored in the .drs.fits file, are shown, which is
+<I>BaselineMean</I> [0], <I>GainMean</I> [1] and <I>TriggerOffsetMean</I> [2].
+
+<H3>What is the meaning of the MC checkbox?</h3>
+Currently, it is only to indicate whether the chosen file
+is a Monte Carlo file or not. At the moment, all available
+Monte Carlo file have a four-digit <I>year</I> starting with
+a 0.
+
+<H3>Are there Monte Carlo files available?</H3>
+Yes, there are. Monte Carlo files have the date 0000/00/00 and  the
+praticle ID as run-number (1: gamma, 6: muon, 14: proton). To my
+understanding, the run-numbers 100, 101 and 102 refer to pedestals with
+closed shutter (100 and 101) and open shutter (102).
+
+<H3>How to change the displayed pixel?</H3>
+Enter the pixel number on the corresponding field or its hwardware 
+address. As soon as you acknowledge your change (e.g. remove focus 
+by clicking somewhere else) the pixel contents gets displayed.
+
+<H3>How to Save/Load a script?</H3>
+To load a file choose a file fro your local hard drive via the
+file selection dialog. To save the contents of the editor, press
+Save.
+
+<H3>Submit</H3>
+If you have changed the script and you want to run it on the current event
+press Submit. The Javascript will be executed for this event on
+the server.
+
+<!--<H3>Autosubmit</H3>
+If Autosumit is enabled, the script will be submitted each time
+the file name or the event number is changed and executed.-->
+
+<H3>Pixel value</H3>
+To display the value returned for a pixel just click on the pixel.
+The value will be displayed in the Pixel field. This will also
+display the corresponding waveform in the graph.
+
+<H3>Min/max values</H3>
+Min and max values for the plot and the graph can be determined
+automatically or manully. To set the to a fixed value, enable the
+min and/or max field and enter the value of your choice. It will
+survive changing files, events or pixel.
+
+<H3>What is the meaning of the image?</H3>
+The image is a representation of the first and second moment of the
+distribution of the pixel values. The first moment is the center-of-gravity
+of the distirbution, the major and minor axis represent the standard 
+deviation around the center-of-gravity (<i>width</I> and <i>length</I>). 
+The line represents an estimate for the distance of the center-of-gravity
+to the origin of the primary particle (<i>disp</i>). Due to the lack
+of more information, it is a very simple estimate using
+disp=1.42*(1-width/length).
+
+<H3>What are the additional controls</H3>
+<i>Get geometry</i>: You will get a file with the pixel positions in arbitrary units.
+The three columns are the pixel index, and the x and y coordinate 
+in degree.<br>
+<i>Get camera data</i>: You will get a file with the data from the currently
+displayed cameras. The columns are pixel index and value of the cameras
+1, 2, 3 and 4.<br>
+<i>Get waveforms</i>: You will get a file with the data from the currently
+displayed waveforms. The columns are sample index and amplitude  of the waveforms
+1, 2, 3 and 4.
+
+<H3>Why is loading the page so slow?</H3>
+The total contents of the javascript libraries is about 1MB which
+all have to be treasferred to the browser. In addition the loading
+and processing of the event takes up to 1s so that the loading
+time of the page might be untypically slow. Once finished,
+the amaount of code to load can be decreased.
+
+<H3>How to unzoom the plot?</H3>
+Double click on the plot.
+
+</div>
+
+
+</body>
+</html>
Index: branches/FACT++_part_filenames/www/viewer/index.js
===================================================================
--- branches/FACT++_part_filenames/www/viewer/index.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/viewer/index.js	(revision 18732)
@@ -0,0 +1,1606 @@
+'use strict';
+
+// ==========================================================================
+
+function onRightMouseClick(event)
+{
+    if (event.button!=2)
+        return;
+
+    var strData = event.target.toDataURL("image/png");
+
+    var img = document.createElement("img");
+    img.src = strData;
+
+    $(img).css({ "z-index": "9999", "position": "absolute" });
+    $(img).insertBefore($(event.target));
+
+    setTimeout(function () { $(img).remove(); }, 100);
+}
+
+(function ($)
+ {
+
+    $.plot.plugins.push({
+        init: function(plot, classes)
+            {
+                plot.hooks.bindEvents.push(function(plot, eventHolder) { eventHolder.mousedown(onRightMouseClick); });
+                plot.hooks.shutdown.push(function(plot, eventHolder) { eventHolder.unbind("mousedown", onRightMouseClick); });
+            },
+        name: 'saveAsImage',
+        version: '1.0'
+    });
+
+ })(jQuery);
+
+// ==========================================================================
+
+var editor1;
+var editor2;
+var plot;
+
+function debug(txt)
+{
+    var dbg = document.getElementById("debug");
+    dbg.appendChild(document.createTextNode(txt));
+    dbg.appendChild(document.createElement("br"));
+}
+
+function setupAccordion(accordion, container, inactive)
+{
+    function onAccordion(event, ui)
+    {
+        if (ui.oldHeader.length==0)
+            $(container).slideDown(400);
+        else
+            $(container).slideUp(400);
+    }
+
+    var config = { collapsible: true };
+
+    if (inactive)
+    {
+        config.active = false;
+        $(container).hide();
+    }
+
+    var acc = $(accordion);
+
+    acc.accordion(config);
+    acc.on("accordionbeforeactivate", onAccordion);
+}
+
+function onResize(event, ui)
+{
+    if (!ui.size)
+        return;
+
+    $(event.target.id).css({marginRight:'2px'});
+
+    var editor = event.target.id=="textcontainer1" ? editor1 : editor2;
+
+    editor.setSize("100%", ui.size.height);
+    editor.refresh();
+}
+
+function setSize(id, w, h)
+{
+    w = parseInt(w);
+    h = parseInt(h);
+
+    $("#"+id).width(w);
+    $("#"+id).height(h);
+
+    document.getElementById(id).width=w;
+    document.getElementById(id).height=h;
+}
+
+function onResizeGrid(id)
+{
+    var w = document.getElementById(id+"container").clientWidth/4;
+
+    var offy = 0;
+    var offx = 5;
+
+    var cont = document.getElementById("center"+id).childNodes[0];
+
+    var nn;
+    if (cont)
+    {
+        nn = parseInt(cont.id[cont.id.length-1]);
+        setSize(id+nn, w*2, w*2);
+    }
+
+    if (nn!=1)
+        setSize(id+'1', w-offx, w-offy);
+    if (nn!=2)
+        setSize(id+'2', w-offx, w-offy);
+    if (nn!=3)
+        setSize(id+'3', w-offx, w-offy);
+    if (nn!=4)
+        setSize(id+'4', w-offx, w-offy);
+
+    document.getElementById("center"+id).width=parseInt(w*2);
+
+    setSize('cont'+id+'1', w, w);
+    setSize('cont'+id+'2', w, w);
+    setSize('cont'+id+'3', w, w);
+    setSize('cont'+id+'4', w, w);
+}
+
+function onResizeCameras(event, ui)
+{
+    onResizeGrid('camera');
+
+    drawFullCam("camera1");
+    drawFullCam("camera2");
+    drawFullCam("camera3");
+    drawFullCam("camera4");
+}
+
+function onResizeHistograms(event, ui)
+{
+    onResizeGrid('hist');
+}
+
+function createEditor(textarea)
+{
+    var editor;
+
+    var config =
+    {
+        //value: "function myScript(){return 100;}\n",
+        mode:  { name: "text/typescript", globalVars: true },
+        indentUnit: 4,
+        styleActiveLine: true,
+        matchBrackets: true,
+        lineNumbers: true,
+        foldGutter: true,
+        lint: true,
+        highlightSelectionMatches: {showToken: /\w/},
+        gutters: ["CodeMirror-lint-markers", "CodeMirror-linenumbers", "CodeMirror-foldgutter"],
+        extraKeys: {
+            //"Ctrl-D": "duplicateLine",
+            //"Alt--": "goToBracket",
+            //"Ctrl-H": "findPrev",
+            "Ctrl-Down": "autocomplete",
+            "Tab": "indentAuto",
+            "Ctrl-Y": "deleteLine",
+            "Ctrl-.": function(cm) {
+                cm.foldCode(cm.getCursor());
+            },
+            "F11": function(cm) {
+                editor.setOption("fullScreen", !editor.getOption("fullScreen"));
+            },
+            "Ctrl-R": function(cm) {
+                editor.execCommand("replace");
+            },
+            "Esc": function(cm) {
+                if (editor.getOption("fullScreen")) editor.setOption("fullScreen", false);
+            },
+            "Enter": function(cm) {
+                editor.execCommand("indentAuto");
+                editor.execCommand("newlineAndIndent");
+            },
+        }
+    };
+
+    editor = CodeMirror.fromTextArea(document.getElementById(textarea), config);
+    editor.setOption("theme", "fact");
+
+    return editor;
+}
+
+function colorizeHTML(textarea)
+{
+    var config =
+    {
+        //value: "function myScript(){return 100;}\n",
+        mode:  { name: "text/typescript", globalVars: true },
+        readOnly: true,
+    };
+
+    CodeMirror.fromTextArea(document.getElementById(textarea), config);
+}
+
+function setFileChecks(file)
+{
+    var list = document.getElementById("file").data;
+    if (!list)
+        return;
+
+    if (!file)
+        file = document.getElementById("file").value;
+
+    var drs  = document.getElementById("drsfile");
+
+    var hasDrs = list[file]&2;
+    var hasCal = list[file]&4;
+    var isMC   = list[file]&8;
+
+    if (!hasDrs || isMC)
+        $('#drsfile').prop('checked', false);
+    if (!hasCal || isMC)
+        $('#calibrated').prop('checked', false);
+
+    $('#calibrated').prop('disabled', (!hasCal && !drs.checked) || isMC);
+    $('#drsfile').prop('disabled',     !hasDrs || isMC);
+
+    $('#txtcalibrated').css('color', (!hasCal && !drs.checked) || isMC ? 'darkgrey' : 'black');
+    $('#txtdrsfile').css(   'color',  !hasDrs || isMC                  ? 'darkgrey' : 'black');
+    $('#txtmontecarlo').css('color',  !isMC                            ? 'darkgrey' : 'black');
+
+    $('#montecarlo').prop('checked', isMC);
+}
+
+function disableControls(disabled)
+{
+    $('#submit').prop('disabled', disabled);
+    $('#getcamera').prop('disabled', disabled);
+    $('#getwaveforms').prop('disabled', disabled);
+    $('#event').prop('disabled', disabled);
+    $('#pixel').prop('disabled', disabled);
+    $('#cbpx').prop('disabled', disabled);
+    $('#cbpx-c').prop('disabled', disabled);
+    $('#cbpx-b').prop('disabled', disabled);
+    $('#cbpx-p').prop('disabled', disabled);
+    $('#cbpx-x').prop('disabled', disabled);
+    $('#file').prop('disabled', disabled);
+
+    if (disabled)
+    {
+        $('#calibrated').prop('disabled', true);
+        $('#drsfile').prop('disabled', true);
+        $('#montecarlo').prop('disabled', true);
+    }
+    else
+        setFileChecks();
+}
+
+function onGetCameras()
+{
+    var arr =
+    [
+     document.getElementById("camera1").dataAbs,
+     document.getElementById("camera2").dataAbs,
+     document.getElementById("camera3").dataAbs,
+     document.getElementById("camera4").dataAbs,
+     ];
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('cameras.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onGetWaveforms()
+{
+    var arr = document.getElementById("waveform").data;
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('waveforms.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onGetGeometry()
+{
+    var sqrt32 = Math.sqrt(3)/2;
+    
+    var arr = [ new Array(1440), new Array(1440) ];
+
+    for (var i=0; i<1440; i++)
+    {
+        arr[0][i] = coord[i][0]*0.1111;
+        arr[1][i] = coord[i][1]*0.1111*sqrt32;
+    }
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('geometry.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onReady()
+{
+    CodeMirror.colorize(null, 'javascript');
+
+    //$('input,select').keypress(function(event) { return event.keyCode != 13; });
+
+    //colorizeHTML("code0");
+    //colorizeHTML("code1");
+
+    $("#accordion").accordion({collapsible:true,active:false,heightStyle:'content'});
+    $("#accordion").find('h3').filter(':contains(Runtime)').hide();
+    if (location.href.search('debug')==-1)
+        $("#accordion").find('h3').filter(':contains(Debug)').hide();
+
+    $("#textcontainer1").resizable({handles:"s",autoHide:true,});
+    $("#textcontainer1").on("resize", onResize);
+
+    $("#textcontainer2").resizable({handles:"s",autoHide:true,});
+    $("#textcontainer2").on("resize", onResize);
+
+    $("#cameracontainer").on("resize", onResizeCameras);
+    onResizeCameras();
+
+    $("#histcontainer").on("resize", onResizeHistograms);
+    onResizeHistograms();
+
+    $("#contcamera1").click(onClickContCamera);
+    $("#contcamera2").click(onClickContCamera);
+    $("#contcamera3").click(onClickContCamera);
+    $("#contcamera4").click(onClickContCamera);
+
+    $("#conthist1").click(onClickContHist);
+    $("#conthist2").click(onClickContHist);
+    $("#conthist3").click(onClickContHist);
+    $("#conthist4").click(onClickContHist);
+
+    $("#camera1").click(onClick);
+    $("#camera2").click(onClick);
+    $("#camera3").click(onClick);
+    $("#camera4").click(onClick);
+
+    $('#camera1').mousedown(onRightMouseClick);
+    $('#camera2').mousedown(onRightMouseClick);
+    $('#camera3').mousedown(onRightMouseClick);
+    $('#camera4').mousedown(onRightMouseClick);
+
+    editor1 = createEditor("editor1");
+    editor2 = createEditor("editor2");
+
+    setupAccordion('#accordion5', '#editorcontainer1', true);
+    setupAccordion('#accordion1', '#editorcontainer2');
+
+    $('#accordion5').on("accordionactivate", function() { $('#editorcontainer1fake').hide(); editor1.refresh();  });
+    $('#accordion1').on("accordionactivate", function() { $('#editorcontainer2fake').hide(); editor2.refresh();  });
+
+    setupAccordion('#accordion2', '#cameracontainer');
+    setupAccordion('#accordion7', '#histcontainer', true);
+    setupAccordion('#accordion3', '#waveformcontainer');
+    setupAccordion('#accordion4', '#helpcontainer', true);
+    setupAccordion('#accordion6', '#ctrlcontainer', true);
+
+    $("#selectfile1").on('change', onFile);
+    $("#selectfile2").on('change', onFile);
+
+    $(document).ajaxStart(function() { disableControls(true) }).ajaxStop(function() { disableControls(false); });
+
+
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "index.php",
+        success: onFilelistReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[0] - Request failed!"); else alert("ERROR[0] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onFileSelect(event, ui)
+{
+    setFileChecks(ui.item.value);
+    document.getElementById("event").value = 0;
+    onSubmit(ui.item.value);
+}
+
+function onFilelistReceived(result)
+{
+    //var dbg = document.getElementById("debug");
+
+    //var pre = document.createElement("pre");
+    //pre.appendChild(document.createTextNode(rc));
+    //dbg.appendChild(pre);
+
+    var rc;
+    try
+    {
+        rc = JSON.parse(result);
+    }
+    catch (e)
+    {
+        alert("ERROR[0] - Decoding answer:\n"+e);
+        debug(result);
+        return;
+    }
+
+    document.getElementById("file").data = rc;
+
+    var list = [ ];
+    for (var file in rc)
+        list.push(file);
+
+    var opts =
+    {
+        source: list,
+        select: onFileSelect,
+        position: { my: "right top", at: "right bottom", collision: "flipfit" },
+    };
+
+    $("#file").autocomplete(opts);
+    //document.getElementById("file").value = "2014/04/17-181";
+
+    //onSubmit("2014/04/17-181");
+}
+
+function setZoom(xfrom, xto, yfrom, yto)
+{
+    var xaxis = plot.getXAxes()[0];
+    var yaxis = plot.getYAxes()[0];
+
+    if (xfrom!==undefined)
+        xaxis.options.min = xfrom;
+    if (xto!==undefined)
+        xaxis.options.max = xto;
+
+    if (yfrom!==undefined)
+        yaxis.options.min = yfrom;
+    if (yto!==undefined)
+        yaxis.options.max = yto;
+
+    plot.setupGrid();
+    plot.draw();
+    plot.clearSelection();
+}
+
+function onPlotHover(event, pos, item)
+{
+    if (!item)
+    {
+        $("#tooltip").hide();//fadeOut(100);
+        return;
+    }
+
+    var x = item.datapoint[0].toFixed(2);
+    var y = item.datapoint[1].toFixed(2);
+
+    var tooltip = $("#tooltip");
+    tooltip.html(parseInt(x) + " / " + y);
+    tooltip.css({top: item.pageY-20, left: item.pageX+5});
+    tooltip.show();//fadeIn(200);
+}
+
+function drawHist(n)
+{
+    var canv = document.getElementById("camera"+n);
+    var hist = document.getElementById("hist"+n);
+
+    var xmin  = parseFloat(document.getElementById("histmin"+n).value);
+    var xmax  = parseFloat(document.getElementById("histmax"+n).value);
+    var nbins = 100;//parseInt(xmax-xmin);
+    var step  = (xmax-xmin)/nbins;
+    if (step<1)
+    {
+        step = 1;
+        nbins = parseInt(xmax-xmin)+1;
+    }
+
+    var bins = new Array(nbins);
+    for (var i=0; i<nbins; i++)
+        bins[i] = [ xmin+i*step, 0 ];
+
+    var data = canv.dataAbs;
+    for (var i=0; i<1440; i++)
+        if (data[i]!==undefined/* && data[i]!==null*/)
+        {
+            var ix = parseInt((data[i]-xmin)/step);
+            if (ix>=0 && ix<nbins)
+                bins[ix][1] ++;
+        }
+
+    var opts =
+    {
+        grid: {
+            hoverable: true,
+        }
+    };
+
+    var hist = $.plot("#hist"+n, [ { data:bins, bars: {show:true} } ], opts);
+    $('#hist'+n).bind("plothover", onPlotHover);
+}
+
+function processCameraData(n, data)
+{
+    var canv = document.getElementById("camera"+n);
+    canv.dataRel = null;
+
+    if (!Array.isArray(data))
+        return;
+
+    canv.dataAbs = new Array(1440);
+    for (var i=0; i<1440; i++)
+    {
+        var val = data[map[i]];
+        if (!isNaN(val) && val!==null)
+            canv.dataAbs[i] = val;
+    }
+
+    canv.min = Math.min.apply(Math, canv.dataAbs.filter(function(e){return e!==undefined;}));
+    canv.max = Math.max.apply(Math, canv.dataAbs.filter(function(e){return e!==undefined;}));
+
+    canv.dataRel = new Array(1440);
+    for (var i=0; i<1440; i++)
+    {
+        var val = canv.dataAbs[i];
+        if (val!==undefined)
+            canv.dataRel[i] = (val-canv.min)/canv.max;
+    }
+
+    if (document.getElementById("cameraminon"+n).checked)
+        document.getElementById("cameramin"+n).value = canv.min;
+    if (document.getElementById("cameramaxon"+n).checked)
+        document.getElementById("cameramax"+n).value = canv.max;
+
+    // ---------------------------
+
+    var hist = document.getElementById("hist"+n);
+
+    hist.min = canv.min;
+    hist.max = canv.max;
+
+    if (document.getElementById("histminon"+n).checked)
+        document.getElementById("histmin"+n).value = canv.min;
+    if (document.getElementById("histmaxon"+n).checked)
+        document.getElementById("histmax"+n).value = canv.max;
+
+    drawHist(n);
+}
+
+function onDataReceived(result)
+{
+    var err = document.getElementById("error");
+    var dbg = document.getElementById("debug");
+    var con = document.getElementById("console");
+
+    //var pre = document.createElement("pre");
+    //pre.appendChild(document.createTextNode(rc));
+    //dbg.appendChild(pre);
+
+    var rc;
+    try
+    {
+        rc = JSON.parse(result);
+        if (!rc)
+            return;
+    }
+    catch (e)
+    {
+        alert("ERROR[1] - Decoding answer:\n"+e);
+        debug(result);
+        return;
+    }
+
+    var evt = rc.event;
+    var file = rc.file;
+
+    document.getElementById("event").max = file.numEvents-1;
+    var el = document.getElementById("numevents");
+    if (el.firstChild)
+        el.removeChild(el.firstChild);
+    el.appendChild(document.createTextNode(file.numEvents));
+
+    var infotxt = "<pre>";
+    infotxt += "\nStart time: "+new Date(file.runStart*24*3600*1000).toUTCString();
+    infotxt += "\nEnd   time: "+new Date(file.runEnd*24*3600*1000).toUTCString();
+    infotxt += "\nRun   type: "+file.runType;
+    if (file.drsFile>=0)
+        infotxt += " [drs-step "+file.drsFile+"]";
+
+    $("#runinfo").html(infotxt);
+    $("#eventinfo").html("Trigger: "+evt.trigger.join(' | ')+" [0x"+evt.triggerType.toString(16)+"]");
+
+    if (rc.ret)
+    {
+        while (con.lastChild)
+            con.removeChild(con.lastChild);
+    }
+
+    if (rc.err)
+    {
+        while (err.lastChild)
+            err.removeChild(err.lastChild);
+
+        err.appendChild(document.createTextNode("Javascript runtime exception: "+rc.err.file+":"+rc.err.lineNumber));
+        err.appendChild(document.createTextNode("\n"));
+        err.appendChild(document.createTextNode(rc.err.sourceLine));
+        err.appendChild(document.createTextNode("\n"));
+        err.appendChild(document.createTextNode(rc.err.trace));
+
+        var editor = rc.err.file=="main" ? editor2 : editor1;
+        editor.setCursor(rc.err.lineNumber-1, 1);
+
+        $("#accordion").find('h3').filter(':contains(Runtime)').show();
+        $("#accordion").accordion("option", "active", 0);
+    }
+
+    if (rc.debug!==undefined)
+    {
+        con.appendChild(document.createTextNode(rc.debug));
+
+        debug("PHP execution:");
+        debug("Time Javascripts = "+(rc.timeJs[0]*1000).toFixed(2)+","+(rc.timeJs[1]*1000).toFixed(2)+","+(rc.timeJs[2]*1000).toFixed(2)+ " [ms]");
+    }
+
+    if (rc.ret!==undefined && Array.isArray(rc.ret))
+    {
+        var now = new Date();
+
+        if (rc.ret[0] instanceof Object)
+            processCameraData(1, rc.ret[0]);
+        else
+            processCameraData(1, rc.ret);
+
+        if (rc.ret.length>1)
+            processCameraData(2, rc.ret[1]);
+
+        if (rc.ret.length>2)
+            processCameraData(3, rc.ret[2]);
+
+        if (rc.ret.length>3)
+            processCameraData(4, rc.ret[3]);
+
+        debug("Calc Time = "+(new Date()-now)+" ms");
+    }
+
+    // We have to redraw all of them to display the changed pixel value
+    onCameraMinMax(1);
+    onCameraMinMax(2);
+    onCameraMinMax(3);
+    onCameraMinMax(4);
+
+    debug("Total time = "+(rc.timePhp*1000).toFixed(1)+" ms");
+    debug("Peak memory = "+rc.memory+" MiB");
+
+    if (Array.isArray(rc.waveform))
+    {
+        var waveform = document.getElementById("waveform");
+        waveform.data = [ ];
+
+        var data = [
+                    { label: "[0] ", data: new Array(evt.numRoi) },
+                    { label: "[1] ", data: new Array(evt.numRoi) },
+                    { label: "[2] ", data: new Array(evt.numRoi) },
+                    { label: "[3] ", data: new Array(evt.numRoi) },
+                    ];
+
+        var min = [];
+        var max = [];
+        if (Array.isArray(rc.waveform) && rc.waveform.length==evt.numRoi)
+        {
+            min.push(Math.min.apply(Math, rc.waveform));
+            max.push(Math.max.apply(Math, rc.waveform));
+
+            var d = data[0].data;
+            for (var i=0; i<evt.numRoi; i++)
+                d[i] = [ i, rc.waveform[i] ];
+
+            waveform.data[0] = rc.waveform;
+        }
+
+        for (var j=0; j<4; j++)
+        {
+            var ref = rc.waveform[j];
+
+            if (Array.isArray(ref) && ref.length==evt.numRoi)
+            {
+                min.push(Math.min.apply(Math, ref));
+                max.push(Math.max.apply(Math, ref));
+
+                var d = data[j].data;
+                for (var i=0; i<evt.numRoi; i++)
+                    d[i] = [ i, ref[i] ];
+
+                waveform.data[j] = ref;
+            }
+        }
+
+        waveform.ymin = Math.min.apply(Math, min);
+        waveform.ymax = Math.max.apply(Math, max);
+        waveform.xmin = 0;
+        waveform.xmax = evt.numRoi;
+
+        if (document.getElementById("waveformxminon").checked)
+            document.getElementById("waveformxmin").value = waveform.xmin;
+        if (document.getElementById("waveformxmaxon").checked)
+            document.getElementById("waveformxmax").value = waveform.xmax;
+
+        if (document.getElementById("waveformminon").checked)
+            document.getElementById("waveformmin").value = waveform.ymin;
+        if (document.getElementById("waveformmaxon").checked)
+            document.getElementById("waveformmax").value = waveform.ymax;
+
+        var xmin = document.getElementById("waveformxminon").checked ? waveform.xmin : parseInt(document.getElementById("waveformxmin").value);
+        var xmax = document.getElementById("waveformxmaxon").checked ? waveform.xmax : parseInt(document.getElementById("waveformxmax").value);
+
+        var ymin = document.getElementById("waveformminon").checked ? waveform.ymin : parseInt(document.getElementById("waveformmin").value);
+        var ymax = document.getElementById("waveformmaxon").checked ? waveform.ymax : parseInt(document.getElementById("waveformmax").value);
+
+        var opts =
+        {
+           xaxis: {
+               min: xmin-1,
+               max: xmax+1,
+           },
+           yaxis: {
+               min: ymin-5,
+               max: ymax+5,
+           },
+           series: {
+               lines: {
+                   show: true
+               },
+               points: {
+                   show: true,
+                   symbol: 'cross',
+               }
+           },
+           selection: {
+               mode: "xy"
+           },
+           grid: {
+               hoverable: true,
+           }
+        };
+
+        plot = $.plot("#waveform", data, opts);
+
+        waveform = $('#waveform');
+        waveform.bind("plotselected", function (event, ranges)
+                      {
+                          setZoom(ranges.xaxis.from, ranges.xaxis.to,
+                                  ranges.yaxis.from, ranges.yaxis.to);
+                      });
+
+        waveform.dblclick(function ()
+                          {
+                              var waveform = document.getElementById("waveform");
+                              setZoom(waveform.xmin-1, waveform.xmax+1, waveform.ymin-5, waveform.ymax+5);
+                          });
+        waveform.bind("plothover", onPlotHover);
+    }
+}
+
+function onSubmit(file, pixelOnly)
+{
+    if (!file)
+        file = document.getElementById("file").value;
+
+    var dbg = document.getElementById("debug");
+    while (dbg.lastChild)
+        dbg.removeChild(dbg.lastChild);
+
+    var active = $("#accordion").accordion("option", "active");
+    if (active==0)
+    {
+        $("#accordion").accordion("option", "active", false);
+        $("#accordion").find('h3').filter(':contains(Runtime)').hide();
+    }
+
+    var calibrated = document.getElementById("calibrated");
+    var drsfile    = document.getElementById("drsfile");
+    var montecarlo = document.getElementById("montecarlo");
+    var ismc       = montecarlo.checked;
+    var calib      = !calibrated.disabled && calibrated.checked;
+    var drs        = !drsfile.disabled && drsfile.checked;
+    var event      = document.getElementById("event").value;
+    var pixel      = document.getElementById("pixel").value;
+    var source1    = editor1.getValue();
+    var source2    = editor2.getValue();
+
+    var uri = "file="+file+"&event="+event+"&pixel="+map[pixel];
+    uri += "&source1="+encodeURIComponent(source1);
+    if (!pixelOnly)
+        uri += "&source2="+encodeURIComponent(source2);
+    if (calib)
+        uri += "&calibrated=1";
+    if (drs)
+        uri += "&drsfile=1";
+    if (ismc)
+        uri += "&montecarlo=1";
+
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "index.php",
+        data:    uri,
+        success: onDataReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[1] - Request failed!"); else alert("ERROR[1] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onFile(event, ui)
+{
+    var f = event.target.files[0];
+    if (!f)
+        return;
+
+    if (!f.type.match('text/plain') && !f.type.match('application/javascript') && !f.type.match('application/x-javascript'))
+    {
+        alert("ERROR - Unknown file type: "+f.type);
+        return;
+    }
+
+    var id     = event.target.id;
+    var editor = id[id.length-1]=='1' ? editor1 : editor2;
+
+    var reader = new FileReader();
+
+    // Closure to capture the file information.
+    reader.onload = (function(theFile) { return function(e) { editor.setValue(e.target.result); }; })(f);
+    // onloadstart
+    // onloadend
+    // onprogress
+
+    // Read in the text file
+    reader.readAsText(f);
+}
+
+function refreshCameras()
+{
+    drawFullCam("camera1");
+    drawFullCam("camera2");
+    drawFullCam("camera3");
+    drawFullCam("camera4");
+}
+
+function onEvent()
+{
+    onSubmit();
+}
+
+function checkPixel()
+{
+    var pix  = parseInt(document.getElementById("pixel").value);
+    var c    = parseInt(document.getElementById("cbpx-c").value);
+    var b    = parseInt(document.getElementById("cbpx-b").value);
+    var p    = parseInt(document.getElementById("cbpx-p").value);
+    var x    = parseInt(document.getElementById("cbpx-x").value);
+    var cbpx = parseInt(document.getElementById("cbpx").value);;
+
+    if (pix >=0 && pix <1440 &&
+        c   >=0 && c   <   4 &&
+        b   >=0 && b   <  10 &&
+        p   >=0 && p   <   4 &&
+        x   >=0 && x   <   9 &&
+        cbpx>=0 && cbpx<1440)
+        return;
+
+    document.getElementById("pixel").value = 0;
+    document.getElementById("cbpx-c").value = 1;
+    document.getElementById("cbpx-b").value = 0;
+    document.getElementById("cbpx-p").value = 3;
+    document.getElementById("cbpx-x").value = 6;
+    document.getElementById("cbpx").value = 393;
+}
+
+
+function onPixel()
+{
+    checkPixel();
+
+    var p = parseInt(document.getElementById("pixel").value);
+
+    var cbpx = map[p];
+
+    document.getElementById("cbpx-c").value = parseInt((cbpx/360));
+    document.getElementById("cbpx-b").value = parseInt((cbpx/36)%10);
+    document.getElementById("cbpx-p").value = parseInt((cbpx/9)%4);
+    document.getElementById("cbpx-x").value = parseInt((cbpx%9));
+    document.getElementById("cbpx").value = parseInt(cbpx);
+
+    onSubmit("", true);
+}
+
+function onCBPX()
+{
+    checkPixel();
+
+    var c = parseInt(document.getElementById("cbpx-c").value);
+    var b = parseInt(document.getElementById("cbpx-b").value);
+    var p = parseInt(document.getElementById("cbpx-p").value);
+    var x = parseInt(document.getElementById("cbpx-x").value);
+
+    var cbpx = c*360 + b*36 + p*9 + x;
+
+    document.getElementById("cbpx").value = parseInt(cbpx);
+    document.getElementById("pixel").value = map.indexOf(cbpx);
+
+    onSubmit("", true);
+}
+
+function onHW()
+{
+    checkPixel();
+
+    var cbpx = parseInt(document.getElementById("cbpx").value);;
+
+    document.getElementById("cbpx-c").value = parseInt((cbpx/360));
+    document.getElementById("cbpx-b").value = parseInt((cbpx/36)%10);
+    document.getElementById("cbpx-p").value = parseInt((cbpx/9)%4);
+    document.getElementById("cbpx-x").value = parseInt((cbpx%9));
+
+    document.getElementById("pixel").value = map.indexOf(cbpx);
+
+    onSubmit("", true);
+}
+
+function isInside(x, y, mouse)
+{
+    var dist = Math.sqrt((mouse.x-x)*(mouse.x-x)+(mouse.y-y)*(mouse.y-y));
+    return dist<0.5;
+
+    /*
+    ctx.translate(x, y);
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.fill();
+
+    ctx.restore();
+    */
+}
+
+var inprogress = { };
+function moveElement(id, n, target, callback)
+{
+    if (inprogress[id]==n || inprogress[id]<0)
+        return;
+
+    inprogress[id] = target ? -n : n;
+
+    var element   = $("#"+id+n); //Allow passing in either a JQuery object or selector
+    var newParent = $(target ? target : "#cont"+id+n); //Allow passing in either a JQuery object or selector
+
+    var oldOffset = element.offset();
+
+    var newOffset = newParent.offset();
+
+    var w = newParent.width();
+    var h = newParent.height();
+
+    var temp = element.appendTo('body');
+    temp.css('position', 'absolute')
+        .css('left', oldOffset.left)
+        .css('top',  oldOffset.top)
+        .css('zIndex', 999);
+
+    temp.animate( {'top': newOffset.top, 'left':newOffset.left, 'width':w, 'height': h},
+    'slow', function()
+    {
+        temp = temp.appendTo(newParent);
+        temp.css('position', 'relative');
+        temp.css('width', '');
+        temp.css('height', '');
+        temp.css('zIndex', '');
+        temp.css('left', '0');
+        temp.css('top', '0');
+
+        setSize(id+n, w, h);
+
+        if (callback)
+            callback(id+n);
+
+        inprogress[id] = 0;
+    });
+}
+
+function onClickCont(event, callback)
+{
+    var id = event.target.id;
+    if (!id)
+        id = event.target.parentNode.id;
+
+    var n = parseInt(id[id.length-1]);
+    var type = id.substr(0, id.length-1);
+
+    if (id.substr(0, 4)=="cont")
+        id = id.substr(4, id.length-4);
+    if (type.substr(0, 4)=="cont")
+        type = type.substr(4, type.length-4);
+
+    if (id.substr(0, type.length)==type)
+    {
+        var cont = document.getElementById("center"+type).childNodes[0];
+        if (cont)
+        {
+            var nn = parseInt(cont.id[cont.id.length-1]);
+            moveElement(type, nn, null, callback);
+        }
+        moveElement(type, n, "#center"+type, callback);
+
+    }
+    else
+        moveElement(type, n, null, callback);
+
+}
+
+function onClickContCamera(event)
+{
+    onClickCont(event, function(el) { drawFullCam(el); });
+}
+
+function onClickContHist(event)
+{
+    onClickCont(event);
+}
+
+function onClick(event)
+{
+    var cont = document.getElementById("centercamera").childNodes[0];
+    if (!cont)
+        return;
+
+    if (cont.id!=event.target.id)
+        return;
+
+    // get click position relative to canvas
+    var rect = event.target.getBoundingClientRect();
+
+    var x =  event.clientX - rect.left;
+    var y =  event.clientY - rect.top;
+
+    var mouse = { x: x, y: y };
+
+    // convert click position to pixel index
+    var index = getIndex(event.target.id, mouse);
+    if (index<0)
+        return;
+
+    document.getElementById("pixel").value = index;
+
+    onPixel();
+}
+
+function getClickPosition(event)
+{
+    var rect = event.target.getBoundingClientRect();
+
+    var x =  event.clientX - rect.left;
+    var y =  event.clientY - rect.top;
+
+    return { x: x, y: y };
+}
+
+function onMinMax(id, n)
+{
+    var el = document.getElementById(id+n);
+
+    el.zmin = document.getElementById(id+"min"+n).value;
+    el.zmax = document.getElementById(id+"max"+n).value;
+}
+
+function onCameraMinMax(n)
+{
+    onMinMax("camera", n);
+    drawFullCam("camera"+n);
+}
+
+function onHistMinMax(n)
+{
+    onMinMax("hist", n);
+    drawHist(n);
+}
+
+function onMinMaxOn(id, n)
+{
+    var el = document.getElementById(id+n);
+
+    var redraw;
+    if (document.getElementById(id+"minon"+n).checked)
+    {
+        document.getElementById(id+"min"+n).setAttribute("disabled", "true");
+        document.getElementById(id+"min"+n).value = el.min;
+        redraw = true;
+    }
+    else
+        document.getElementById(id+"min"+n).removeAttribute("disabled");
+
+    if (document.getElementById(id+"maxon"+n).checked)
+    {
+        document.getElementById(id+"max"+n).setAttribute("disabled", "true");
+        document.getElementById(id+"max"+n).value = el.max;
+        redraw = true;
+    }
+    else
+        document.getElementById(id+"max"+n).removeAttribute("disabled");
+
+    return redraw;
+}
+
+function onCameraMinMaxOn(n)
+{
+    if (onMinMaxOn("camera", n))
+        onCameraMinMax(n);
+}
+
+function onHistMinMaxOn(n)
+{
+    if (onMinMaxOn("hist", n))
+        onHistMinMax(n);
+}
+
+function onWaveformMinMax()
+{
+    var wf = document.getElementById("waveform");
+
+    var xmin, xmax, ymin, ymax;
+
+    var redraw;
+    if (!document.getElementById("waveformxminon").checked)
+        xmin = document.getElementById("waveformxmin").value;
+    if (!document.getElementById("waveformxmaxon").checked)
+        xmax = document.getElementById("waveformxmax").value;
+    if (!document.getElementById("waveformminon").checked)
+        ymin = document.getElementById("waveformmin").value;
+    if (!document.getElementById("waveformmaxon").checked)
+        ymax = document.getElementById("waveformmax").value;
+
+    setZoom(xmin, xmax, ymin, ymax);
+
+}
+
+function onWaveformMinMaxOn()
+{
+    var wf = document.getElementById("waveform");
+
+    var xmin, xmax, ymin, ymax;
+
+    var redraw;
+    if (document.getElementById("waveformxminon").checked)
+    {
+        document.getElementById("waveformxmin").setAttribute("disabled", "true");
+        document.getElementById("waveformxmin").value = wf.xmin;
+        xmin = wf.xmin-1;
+    }
+    else
+        document.getElementById("waveformxmin").removeAttribute("disabled");
+
+    if (document.getElementById("waveformxmaxon").checked)
+    {
+        document.getElementById("waveformxmax").setAttribute("disabled", "true");
+        document.getElementById("waveformxmax").value = wf.xmax;
+        xmax = wf.xmax+1;
+    }
+    else
+        document.getElementById("waveformxmax").removeAttribute("disabled");
+
+    if (document.getElementById("waveformminon").checked)
+    {
+        document.getElementById("waveformmin").setAttribute("disabled", "true");
+        document.getElementById("waveformmin").value = wf.ymin;
+        ymin = wf.ymin-5;
+    }
+    else
+        document.getElementById("waveformmin").removeAttribute("disabled");
+
+    if (document.getElementById("waveformmaxon").checked)
+    {
+        document.getElementById("waveformmax").setAttribute("disabled", "true");
+        document.getElementById("waveformmax").value = wf.ymax;
+        ymax = wf.ymax+5;
+    }
+    else
+        document.getElementById("waveformmax").removeAttribute("disabled");
+
+    setZoom(xmin, xmax, ymin, ymax);
+}
+
+//document.addEventListener("click", getClickPosition, false);
+
+$(document).ready(onReady);
+
+// ================================== Pixel mapping =================================================
+
+var map = new Array(1440);
+
+function initPixelMap()
+{
+    var codedMap = "966676:6:A;68656364626Y?\\?;A=A<AGADAN4K4i5g5h5o506W?Z?]?_?>A@A?AJAIAFACAM4J4H4f5d5e5l5m5n516X?[?^?N?P?AA1ABAVAUAKAHAEAO4L4I4G4E4c5a5b5M6j5k5V6Y6\\6_6G?J?O?Q?S?2A4A3AYAXAWAbA_AnAkAhA3404F4D4B4`5^5_5J6K6L6S6T6W6Z6]6E?H?K?M?R?T?V?5A7A6A\\A[AZAeAdAaA^AmAjAgA24o3m3C4A4?4]5[5\\5G6H6I6P6Q6R6U6X6[6^6F?I?L?<?>?U?;@=@8Ah@9AMALA]ABCACfAcA`AoAlAiA4414n3l3<4@4>425Z5X5Y5D6E6F698N6O608E8H8K8H>K>N>?>B>=???A?<@>@@@i@k@j@PAOANAECDCCC<C9CZCWCTC=3:3734313=4;4943515o4W5U5V5A6B6C6687888m7n7C8F8I8F>I>L>=>@>C>E>@?B?D??@A@C@l@n@m@SARAQAHCGCFC?C>C;C8CYCVCSC<393633303n2:4846405n4l4T5R5S5>6?6@6384858j7k7l7o7D8G8J8G>J>M>>>A>D>4>6>C?3?5?B@2@4@o@_@0ALBKBTA0CoBIC8D7D@C=C:C[CXCUC>3;3835323o2m2k27454j3m4k4i4Q5O5P5C7<6=6g71828o8h7i7S9<8?8B8Q>T>W>@=C=F=e<h<5>7>9>4?6?8?3@5@7@`@b@a@OBNBMB3C2C1C;D:D9D_D\\DQCNCKCF3C3@3>2;282Z1W1l2j2h2k3i3g3j4h4f4N5L5M5@7A7B7d7e7f7l8m8n8P9Q9:8=8@8O>R>U>>=A=D=c<f<i<k<8>:><>7?9?;?6@8@:@c@e@d@RBQBPB6C5C4C>D=D<DbDaD^D[DPCMCJCE3B3?3=2:272Y1V1T1i2g2e2h3f3d3g4e4c4K5I5J5=7>7?7a7b7c7i8j8k8M9N9O9R9;8>8A8P>S>V>?=B=E=d<g<j<Z<\\<;>k=m=:?j>l>9@i?k?f@V@g@CBBBSBgBfB7CoCnC?DSDRDcD`D]DRCOCLCG3D3A3?2<292[1X1U1S1Q1f2d2b2e3c3a3d4b4`4H5F5G5:7;7<7^7_7`7f8g8h8J9K9L97:::=:@:C:F:I:I=L=O=7=:===n<1=[<]<_<l=n=0>k>m>o>j?l?n?W@Y@X@FBEBDBjBiBhB2D1D0DVDUDTDCE@EOELEIEXEUERE5222o1l1i1f1c1`1R1P1N1c2a2_2b3`3^3a4_4]4<5:5;5778797[7\\7]7c8d8e8G9H9I94:5:8:;:>:A:D:G:G=J=M=5=8=;=l<o<2=4=^<`<b<o=1>3>n>0?2?m?o?1@Z@\\@[@IBHBGBmBlBkB5D4D3DYDXDWDFEEEBE?ENEKEHEWETEQE4212n1k1h1e1b1_1]1O1M1K1`2^2\\2_3]3[3^4\\4Z4957585475767X7Y7Z7`8a8b8D9E9F91:2:3:6:9:<:?:B:E:H:H=K=N=6=9=<=m<0=3=d;f;a<H<J<2>b=d=1?a>c>0@`?b?]@D@^@:B9BJB^B]BnBfCeC6DJDIDZDnDmDGEDEAEPEMEJEYEVESE623202m1j1g1d1a1^1\\1[0L1J1?1]2[2Y2\\3Z3X3[4Y4W4654555172737U7V7W7]8^8_8A9B9C9e9o90:n9g:j:m:L:O:R:U:X:[:];`;c;T;W;Z;7<9<e;g;i;I<K<M<c=e=g=b>d>f>a?c?e?E@G@F@=B<B;BaB`B_BiChCgCMDLDKD1E0EoD9E7E<F9F6FaE^E[EjEgEdER0O0L0I0F0C0n0l0\\0Z0X0@1>1<1Z2X2V2Y3W3U3X4V4T4E5C5D5n6o607R7S7T7Z8[8\\8>9?9@9b9c9d9l9m9e:h:k:J:M:P:S:V:Y:[;^;a;R;U;X;6<8<:<;<h;j;l;L<N<P<f=h=j=e>g>i>d?f?h?N@Q@H@@B?B>BdBcBbBlCkCjCPDODND4E3E2E;E:E8E6E;F8F5F`E]EZEiEfEcEQ0N0K0H0E0B0m0k0j0Y0W0U0=1;191W2U2S2V3T3R3U4S4Q4B5@5A5k6l6m6O7P7Q7W8X8Y8;9<9=9_9`9a9j9k9\\:_:f:i:l:K:N:Q:T:W:Z:\\;_;b;S;V;Y;C<E<G<<<m;k;1<2<O<Q<S<i=[=P=h>X>Z>g?M@O@R@U@S@J@I@AB1B0BeBTB\\CmCAD@DQDiDhD5EdD<E4F2F0F=F:F7FbE_E\\EkEhEeES0P0M0J0G0D011o0h0g0e0V0T0`0:181Q2T2R2H2S3Q3P3R4P4K3?5=5>5c6i6j6h6M7N7L7U8V8T899:9W9]9^9\\9g9h9i9]:`:c:5;2;o:>;;;8;P;M;J;G;D;A;?<A<D<F<=<><n;o;3<5<R<T<Y=Z=Q=R=Y>[>\\>^>P@T@L@K@5B4B3B2BVBUB^C]CCDBDkDjDfDeD>E=E3F1FnElE@FCFFFIFLFOF;0>0A0205080513101i0f0d0c0b0_0I1H1D1P2O2G2F2D2O3N3M3J3H3a6b6e6f6g6I7J7K7R8S8397989V9Y9Z9[9f9^:a:d:4;1;n:=;:;7;O;L;I;F;C;@;@<B<0<4<U<V<X<`=]=\\=S=U=W=]>_>`>8B7B6BZBXBWB_CaC`CFDEDDDlDgDoEmE>FAFDFGFJFMF90<0?0003060714121a0^0]0G1C1B1N2L2E2C2B2@2L3I3`6d6E7F7G7H7O8Q8192969T9U9X96;3;0;?;<;9;Q;N;K;H;E;B;W<Y<^=_=a=T=V=X=\\B[BYBdCcCbCHDGD?FBFEFHFKFNF:0=0@0104070F1E1A1M2K2J2I2A2D7L8M8N8P809495961b:";
+    // first: decode the pixel mapping!
+    var sum = 1036080;
+    for (var i=0; i<1440; i++)
+    {
+        var d0 = codedMap.charCodeAt(i*2)  -48;
+        var d1 = codedMap.charCodeAt(i*2+1)-48;
+
+        map[i] = d0 | (d1<<6);
+        sum -= map[i];
+    }
+    if (sum!=0)
+        alert("Pixel mapping table corrupted!");
+}
+
+initPixelMap();
+
+// ================================== Camera Display ================================================
+
+var coord = new Array(1440);
+function initCameraCoordinates()
+{
+    coord[0] = [0, 0];
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() - pos.x > 395.75)
+                    continue;
+
+                coord[cnt++] = [ pos.x, pos.y];
+            }
+        }
+    }
+
+    coord[1438] = [7, -22];
+    coord[1439] = [7,  22];
+}
+
+initCameraCoordinates();
+
+function getIndex(id, mouse)
+{
+    var canv = document.getElementById(id);
+
+    var scale = 83;
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    //ctx.translate(canv.width/2, canv.height/2);
+    //ctx.scale(w*2, w*2);
+    //ctx.scale(1, Math.sqrt(3)/2);
+    //ctx.translate(-0.5, 0);
+
+    mouse.x -= canv.width/2;
+    mouse.y -= canv.height/2;
+    mouse.x /= w*2;
+    mouse.y /= w*2;
+    mouse.y /= Math.sqrt(3)/2;
+    mouse.x -= -0.5;
+
+    for (var i=0; i<1440; i++)
+        if (isInside(coord[i][0], coord[i][1], mouse))
+            return i;
+
+    return -1;
+}
+
+
+function hueToRGB(hue)
+{
+    hue /= 3;
+    hue %= 6;
+
+    if (hue<1) return parseInt(255*hue,     10);
+    if (hue<3) return parseInt(255,         10);
+    if (hue<4) return parseInt(255*(4-hue), 10);
+
+    return 0.
+}
+
+function hueToHex(flt)
+{
+    var s = hueToRGB(flt).toString(16);
+    return s.length==2 ? s : "0"+s;
+}
+
+function HLStoRGB(hue)
+{
+    if (isNaN(hue))
+        return "fff";
+
+    if (hue<0)
+        return "eef"; // 555
+
+    if (hue>1)
+        return "dde";//"700"; // 666
+
+    hue *= 14;
+
+    var sr = hueToHex(20-hue);
+    var sg = hueToHex(14-hue);
+    var sb = hueToHex(26-hue);
+
+    return sr+sg+sb;
+}
+
+function outlineHex(ctx)
+{
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.lineTo( 1,  1);
+}
+
+function fillHex(ctx, i, col, min, max)
+{
+    if (col===undefined/* || col===null*/)
+        return false;
+
+    var lvl = max==min ? 0.5 : (col-min)/(max-min);
+
+    ctx.fillStyle = "#"+HLStoRGB(lvl);
+
+    ctx.save();
+    ctx.translate(coord[i][0], coord[i][1]);
+    outlineHex(ctx);
+    ctx.fill();
+    ctx.restore();
+
+    return true;
+}
+
+function drawHex(ctx, i)
+{
+    ctx.save();
+    ctx.translate(coord[i][0], coord[i][1]);
+    outlineHex(ctx);
+    ctx.stroke();
+    ctx.restore();
+}
+
+
+function Position(s, ring, i)
+{
+    switch (s)
+    {
+    case 1: this.x =  ring     - i*0.5;  this.y =       + i; break;
+    case 2: this.x =  ring*0.5 - i;      this.y =  ring    ; break;
+    case 3: this.x = -ring*0.5 - i*0.5;  this.y =  ring - i; break;
+    case 4: this.x = -ring     + i*0.5;  this.y =       - i; break;
+    case 5: this.x = -ring*0.5 + i;      this.y = -ring    ; break;
+    case 0: this.x =  ring*0.5 + i*0.5;  this.y = -ring + i; break;
+    }
+    this.d = (function () { return this.x*this.x + this.y*this.y*3/4; });
+}
+
+function drawFullCam(id)
+{
+    var canv = document.getElementById(id);
+    if (!canv)
+        return;
+
+    var ctx = canv.getContext("2d");
+
+    ctx.clearRect(0, 0, canv.width, canv.height);
+
+    // ======================= Draw Graphics ======================
+
+    var data = canv.dataRel;
+    if (!data)
+        return;
+
+    var pixel = document.getElementById('pixel').value;
+
+    var min = (canv.zmin-canv.min)/canv.max;
+    var max = (canv.zmax-canv.min)/canv.max;
+
+    var scale = 83;
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    ctx.save();
+    ctx.translate(canv.width/2, canv.height/2);
+    ctx.scale(w*2, w*2);
+    // ctx.rotate(Math.PI/3);
+
+    ctx.scale(1, Math.sqrt(3)/2);
+    ctx.translate(-0.5, 0);
+
+    if (document.getElementById('grid').checked)
+    {
+        ctx.lineWidth = 0.02;
+        ctx.strokeStyle = "#000";
+        for (var i=0; i<1440; i++)
+            drawHex(ctx, i);
+    }
+
+    var hasData = false;
+    if (max>=min)
+        for (var i=0; i<1440; i++)
+            hasData |= fillHex(ctx, i, data[i], min, max);
+
+    // ======================= Draw Ellipse ======================
+
+    if (document.getElementById('image').checked)
+    {
+        var h = Hillas(canv.dataAbs, canv.zmin, canv.zmax);
+        if (h)
+        {
+            ctx.save();
+
+            ctx.scale(1, 2/Math.sqrt(3));
+
+            ctx.beginPath();
+            ctx.moveTo(0.5, 0);
+            ctx.lineTo(h.mean[0], h.mean[1]);
+
+            ctx.strokeStyle = "#CCC";
+            ctx.lineWidth = 0.1;
+            ctx.stroke();
+
+            ctx.translate(h.mean[0], h.mean[1]);
+            ctx.rotate(h.phi);
+
+            ctx.beginPath();
+            ctx.moveTo(0, -h.disp);
+            ctx.lineTo(0,  h.disp);
+
+            ctx.strokeStyle = "#888";
+            ctx.lineWidth = 0.15;
+            ctx.stroke();
+
+            ctx.save();
+            ctx.scale(h.axis[0], h.axis[1]);
+            ctx.beginPath();
+            ctx.arc(0, 0, 1, 0, 2*Math.PI);
+            ctx.restore();
+
+            ctx.strokeStyle = "#555";
+            ctx.lineWidth = 0.15;
+            ctx.stroke();
+
+            ctx.restore();
+        }
+    }
+
+    // =================== Draw Pixel marker ====================
+
+    if (document.getElementById('marker').checked)
+    {
+        // Draw marker
+        ctx.lineWidth = 0.25;
+        ctx.strokeStyle = "#000";
+        drawHex(ctx, pixel);
+    }
+
+
+    ctx.restore();
+
+    if (!hasData)
+        return;
+
+    // ======================= Draw Legend ======================
+
+    var v0 = parseFloat(canv.zmin);
+    var v1 = parseFloat(canv.zmax);
+
+    var diff = v1-v0;
+
+    var cw = canv.width;
+    //var ch = canv.height;
+
+    ctx.font         = "8pt Arial";
+    ctx.textAlign    = "right";
+    ctx.textBaseline = "top";
+
+    for (var i=0; i<11; i++)
+    {
+        ctx.strokeStyle = "#"+HLStoRGB(i/10);
+        ctx.strokeText((v0+diff*i/10).toPrecision(3), cw-5, 125-i*12);
+    }
+
+    var pval = parseFloat(canv.dataAbs[pixel]).toFixed(1);
+    var lmin = parseFloat(canv.min).toFixed(1);
+    var lmax = parseFloat(canv.max).toFixed(1);
+
+    if (isNaN(pval))
+        pval = "";
+
+    var mw = Math.max(ctx.measureText(lmin).width,
+                      ctx.measureText(pval).width,
+                      ctx.measureText(lmax).width);
+
+    ctx.textBaseline = "top";
+    ctx.strokeStyle  = "#000";
+
+    ctx.strokeText(lmax, 5+mw, 5+24);
+    ctx.strokeText(pval, 5+mw, 5+12);
+    ctx.strokeText(lmin, 5+mw, 5);
+}
+
+// ===================================================================
+
+function Hillas(data, min, max)
+{
+    var mx = 0;
+    var my = 0;
+    var sz = 0;
+
+    var mx2 = 0;
+    var my2 = 0;
+    var mxy = 0;
+
+    var cnt = 0;
+    for (var i=0; i<1440; i++)
+    {
+        if (data[i]===undefined || data[i]<min || data[i]>max)
+            continue;
+
+        sz  += data[i];
+        mx  += data[i] * coord[i][0];
+        my  += data[i] * coord[i][1];
+
+        mx2 += data[i] * coord[i][0]*coord[i][0];
+        my2 += data[i] * coord[i][1]*coord[i][1];
+        mxy += data[i] * coord[i][0]*coord[i][1];
+
+        cnt++;
+    }
+
+    if (sz==0 || cnt<3)
+        return;
+
+    // Coordinates need to be scaled in y
+    var f = Math.sqrt(3)/2;
+
+    my  *= f;
+    mxy *= f;
+    my2 *= f*f;
+
+    var xx = mx2 - mx*mx/sz;
+    var yy = my2 - my*my/sz;
+    var xy = mxy - mx*my/sz;
+
+    var d0  = yy - xx;
+    var d1  = xy*2;
+    var d2  = Math.sqrt(d0*d0 + d1*d1) + d0;
+
+    var phi = 0;
+    var cos = 0;
+    var sin = 1;
+
+    var axis1 = yy;
+    var axis2 = xx;
+
+    // Correction for scale in x
+    var ratio = xx/yy;
+
+    if (d1!=0 || d2==0)
+    {
+        var tand  = d2==0 ? 0 : d2 / d1;
+        var tand2 = tand*tand;
+
+        var s2    = tand2+1;
+        var s     = Math.sqrt(s2);
+
+        phi = Math.atan(tand)-Math.PI/2;
+        cos = 1.0 /s;
+        sin = tand/s;
+
+        axis1 = (tand2*yy + d2 + xx);
+        axis2 = (tand2*xx - d2 + yy);
+
+        ratio = axis2/axis1;
+
+        axis1 /= s2;
+        axis2 /= s2;
+    }
+
+    var length = axis1<0 ? 0 : Math.sqrt(axis1/sz);
+    var width  = axis2<0 ? 0 : Math.sqrt(axis2/sz);
+
+    return {
+        "mean":  [ mx/sz, my/sz ],
+        "axis":  [ width, length ],
+        "phi":   phi,
+        "delta": [ cos, sin ],
+        "sumw":  sz,
+        "count": cnt,
+        "disp":  1.47/0.1111*(1-Math.sqrt(ratio)),
+    };
+}
Index: branches/FACT++_part_filenames/www/viewer/index.php
===================================================================
--- branches/FACT++_part_filenames/www/viewer/index.php	(revision 18732)
+++ branches/FACT++_part_filenames/www/viewer/index.php	(revision 18732)
@@ -0,0 +1,409 @@
+<?php
+
+if (!extension_loaded('v8js'))
+    die("V8Js missing");
+
+$path = array(
+              "cal" => "/daq/www/cal/",
+              "raw" => "/daq/raw/",
+              "mc"  => "/daq/www/mc/",
+              );
+
+if (isset($_POST['editor1']) || isset($_POST['editor2']))
+{
+    $isOne = isset($_POST['editor1']);
+
+    $source = $isOne ? $_POST['editor1'] : $_POST['editor2'];
+    if (!isset($_POST['files']))
+        $name = $isOne ? "proc.js" : "main.js";
+    else
+        $name = $_POST['files'][0];
+
+    header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
+    header('Cache-Control: public'); // needed for i.e.
+    header('Content-Type: text/plain');
+    header('Content-Transfer-Encoding: Text');
+    header('Content-Disposition: attachment; filename="'.$name.'"');
+    print(str_replace("\r", "", $source));
+    return;
+}
+
+// This is a pretty weird hack because it does first convert
+// all data to ascii (json) to print it...
+if (isset($_POST['data']))
+{
+    header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
+    header('Cache-Control: public'); // needed for i.e.
+    header('Content-Type: text/plain');
+    header('Content-Transfer-Encoding: Text');
+    header('Content-Disposition: attachment; filename="'.$_POST['name'].'"');
+
+    $json = json_decode($_POST['data']);
+
+    $n   = count($json[0]);
+    $cnt = count($json);
+
+    for ($i=0; $i<$n; $i++)
+    {
+        print($i." ".$json[0][$i]);
+
+        if ($cnt>1)
+            print(" ".$json[1][$i]);
+        if ($cnt>2)
+            print(" ".$json[2][$i]);
+        if ($cnt>3)
+            print(" ".$json[3][$i]);
+        print("\n");
+    }
+    return;
+}
+
+if (!isset($_POST['file']) || !isset($_POST['event']) || !isset($_POST['pixel']))
+{
+   /*
+    function getList($path)
+    {
+        $hasdir = false;
+
+        $list = array();
+        foreach (new DirectoryIterator($path) as $file)
+        {
+           if ($file->isDot())
+              continue;
+
+           $name = $file->getFilename();
+
+
+           if ($file->isDir())
+           {
+               $list[$name] = getList($path."/".$name);
+               $hasdir = true;
+           }
+
+           if ($file->isFile() && $file->isReadable())
+           {
+               if (substr($name, 12)!=".fits.fz")
+                   continue;
+
+               array_push($list, substr($name, 9, 3));
+           }
+        }
+
+        if (!$hasdir)
+            sort($list);
+        return $list;
+    }
+    */
+
+    function getList(&$list, $path, $ext, $id, $sub = "")
+    {
+        $hasdir = false;
+
+        $dir = new DirectoryIterator($path."/".$sub);
+        foreach ($dir as $file)
+        {
+           if ($file->isDot())
+              continue;
+
+           $name = $file->getFilename();
+
+           if ($file->isDir())
+               getList($list, $path, $ext, $id, $sub."/".$name);
+
+           if (!$file->isFile() || !$file->isReadable())
+               continue;
+
+           if (substr($name, -strlen($ext))!=$ext)
+               continue;
+
+           $rc = substr($name, 0, 4)."/".substr($name, 4, 2)."/".substr($name, 6, 2)."-".substr($name, 9, 3);
+
+           if (!isset($list[$rc]))
+               $list[$rc] = 0;
+
+           $list[$rc] |= $id;
+        }
+    }
+
+    try
+    {
+        $list = array();
+        getList($list, $path['raw'], ".fits.fz",  1);
+        getList($list, $path['raw'], ".drs.fits", 2);
+        getList($list, $path['cal'], ".fits.fz",  4);
+        getList($list, $path['mc'],  ".fits.fz",  8);
+        ksort($list);
+    }
+    catch (Exception $e)
+    {
+        return header('HTTP/1.0 400 '.$e->getMessage());
+    }
+
+    print(json_encode($list));
+    return;
+}
+
+$event = intval($_POST['event']);
+$pixel = intval($_POST['pixel']);
+
+function get($handle, $format, $count = 1)
+{
+    $size = 0;
+    switch ($format)
+    {
+    case 'd': $size = 8; break;
+    case 'L': $size = 4; break;
+    case 'S': $size = 2; break;
+    case 's': $size = 2; break;
+    }
+
+    if ($size==0)
+        return;
+
+    $binary = fread($handle, $size*$count);
+    $data   = unpack($format.$count, $binary);
+
+    return $count==1 ? $data[1] : $data;
+}
+
+//ini_set("memory_limit", "64M");
+
+//define('E_FATAL',  E_ERROR | E_USER_ERROR | E_PARSE | E_CORE_ERROR |
+//        E_COMPILE_ERROR | E_RECOVERABLE_ERROR);
+
+$rc = array();
+$rc['startPhp'] = microtime(true);
+
+// ============================ Read data from file ==========================
+$file = $_POST['file'];
+
+$y = substr($file,  0, 4);
+$m = substr($file,  5, 2);
+$d = substr($file,  8, 2);
+$r = substr($file, 11, 3);
+
+$rootpath  = isset($_POST['calibrated']) && !isset($_POST['drsfile']) ? $path['cal'] : $path['raw'];
+$extension = isset($_POST['drsfile'])    ? ".drs.fits" : ".fits.fz";
+$filename  = $rootpath.$y."/".$m."/".$d."/".$y.$m.$d."_".$r.$extension;
+
+if (isset($_POST['montecarlo']))
+{
+    $rootpath  = $path['mc'];
+    $extension = ".fits.fz";
+    $filename  = $rootpath.$y.$m.$d."_".$r.$extension;
+}
+
+if (!file_exists($filename))
+    return header("HTTP/1.0 400 File '".$file."' not found.");
+
+$command = "/home/fact/FACT++/getevent ".$filename." ".$event." 2> /dev/null";
+$file = popen($command, "r");
+if (!$file)
+    return header('HTTP/1.0 400 Could not open pipe.');
+
+$evt = array();
+$fil = array();
+$fil['isMC']         = isset($_POST['montecarlo']);
+$fil['isDRS']        = isset($_POST['drsfile']);
+$fil['isCalibrated'] = isset($_POST['calibrated']);
+
+$fil['runType'] = trim(fread($file, 80));
+if (feof($file))
+   return header('HTTP/1.0 400 Data not available.');
+
+$fil['runStart']      = get($file, "d");
+$fil['runEnd']        = get($file, "d");
+$fil['drsFile']       = get($file, "s");
+$fil['numEvents']     = get($file, "L");
+$fil['scale']         = get($file, "s");
+$evt['numRoi']        = get($file, "L");
+$evt['numPix']        = get($file, "L");
+$evt['eventNumber']   = get($file, "L");
+//$evt['triggerNumber'] = get($file, "L");
+$evt['triggerType']   = get($file, "S");
+$evt['unixTime']      = get($file, "L", 2);
+
+if (isset($_POST['source1']))
+{
+    // Read the data and copy it from an associative array to an Array
+    // (this is just nicer and seems more logical)
+    $binary = array();
+    for ($i=0; $i<$evt['numPix']; $i++)
+        $binary[$i] = fread($file, 2*$evt['numRoi']);
+    /*
+    $data = array();
+    for ($i=0; $i<$evt['numPix']; $i++)
+    {
+        $var = get($file, "s", $evt['numRoi']);
+        $data[$i] = array();
+        for ($j=0; $j<$evt['numRoi']; $j++)
+            $data[$i][$j] = $var[$j+1]*0.48828125; // dac -> mV
+    }*/
+}
+
+if (feof($file))
+   return header('HTTP/1.0 400 Data from file incomplete.');
+
+pclose($file);
+
+if ($fil['numEvents']==0)
+    return header('HTTP/1.0 400 Could not read event.');
+
+// =========================== Decode trigger type ===========================
+
+$typ = $evt['triggerType'];
+$evt['trigger'] = array();
+if ($typ!=0 && ($typ & 0x8703)==0)
+    array_push($evt['trigger'], "PHYS");
+if (($typ&0x0100)!=0)
+    array_push($evt['trigger'], "LPext");
+if (($typ&0x0200)!=0)
+    array_push($evt['trigger'], "LPint");
+if (($typ&0x0400)!=0)
+    array_push($evt['trigger'], "PED");
+if (($typ&0x8000)!=0)
+    array_push($evt['trigger'], "TIM");
+if (($typ&0x0001)!=0)
+    array_push($evt['trigger'], "EXT1");
+if (($typ&0x0002)!=0)
+    array_push($evt['trigger'], "EXT2");
+
+// =============================== Some data =================================
+
+//require_once("neighbors.php");
+
+//$rc['neighbors'] = $neighbors;
+$rc['event'] = $evt;
+$rc['file']  = $fil;
+$rc['event']['index'] = $event;
+$rc['event']['pixel'] = $pixel;
+//$rc['waveform'] = $data[$pixel];
+
+// Get execution times
+$now = microtime(true);
+
+if (isset($_POST['source1']))
+{
+    // =============================== Run Javascript ============================
+
+/*
+$JS = <<< EOT
+require("path/to/module1");
+EOT;
+
+$v8 = new V8Js();
+$v8->setModuleLoader(function($module) {
+  switch ($module) {
+    case 'path/to/module1':
+      return 'print(' . json_encode($module . PHP_EOL) . ');require("./module2");';
+
+    case 'path/to/module2':
+      return 'print(' . json_encode($module . PHP_EOL) . ');require("../../module3");';
+
+    default:
+      return 'print(' . json_encode($module . PHP_EOL) . ');';
+  }
+});
+*/
+
+    // V8Js global methods:  exit, print, sleep, var_dump, require
+    //$v8 = new V8Js("$", array("data"=>"data"), extensions, flags, millisecond, bytes);
+    $v8 = new V8Js("$"/*, array("data"=>"data")*/);
+
+    //$v8 = new V8Js("$", array("data"=>"data"));
+
+    //V8Js::registerExtension("exit", "1");
+    //$v8 = new V8Js("$", array(), array("exit"));
+
+    //$v8->func = function($a) { echo "Closure with param $a\n"; };
+    //$v8->greeting = "From PHP with love!";
+
+    // This is much faster than the variables option in the constructor
+
+    $roi = $evt['numRoi'];
+
+    //$v8->data   = $data;
+    //$v8->test   = array();;
+    //$v8->data   = array();
+    $v8->nroi      = $evt['numRoi'];
+    $v8->npix      = $evt['numPix'];
+    $v8->trigger   = $evt['trigger'];
+    $v8->event     = $evt;
+    $v8->file      = $fil;
+//    $v8->neighbors = $neighbors;
+    $v8->clone     = function($data) { return $data; };
+    $v8->scale     = $fil['scale']==0 ? 2000./4096. : 1./$fil['scale'];
+    $v8->unpack    = function($i)
+    {
+        global $binary, $roi, $v8;
+        $u = unpack("s".$roi, $binary[$i]);
+        $arr = array();
+        for ($i=0; $i<$roi; $i++)
+            $arr[$i] = $u[$i+1]*$v8->scale;
+        return $arr;
+    };
+
+    //  10, 445, 91.75 MiB
+    // 376, 720, 91.75 MiB
+
+    $internal = file_get_contents("internal.js");
+
+    // Buffer output from javascript
+    ob_start();
+
+    $rc['timeJS']  = array();
+    $rc['startJs'] = microtime(true);
+
+    try
+    {
+        $v8->executeString($internal, 'internal.js');
+
+        // We unpack the data pixel by pixel and copy the array directly to the
+        // Javasscript array. This significantly decreases memory usage because
+        // we need only one of the super memory hungry php arrays of size ROI
+        // instead of 1440.
+        $JS = "$.event.time=new Date($.event.unixTime[1]*1000+$.event.unixTime[2]/1000); $.data = new Array($.event.numPix); for (var i=0; i<$.event.numPix; i++) $.data[i] = $.unpack(i);";
+        $v8->executeString($JS, 'internal');
+
+        $rc['timeJs'][0] = (microtime(true) - $rc['startJs']);
+
+        $JS = "'use strict'; function proc(pixel){\n".$_POST['source1']."\n};proc(".$pixel.");";
+        $rc['waveform'] = $v8->executeString($JS, 'proc');
+
+        $rc['timeJs'][1] = (microtime(true) - $rc['startJs']);
+
+        if (isset($_POST['source2']))
+        {
+            $JS = "'use strict'; (function main(){\n".$_POST['source2']."\n})();";
+            $rc['ret'] = $v8->executeString($JS, 'main');
+        }
+
+        // This is supposed to work, but it seems it does not...
+        //$v8->proc = $rc['ret']->proc;
+        //$rc['ret'] = $v8->executeString('PHP.proc();', 'proc');
+    }
+    catch (V8JsException $e)
+    {
+        $rc['err'] = array();
+        $rc['err']['message']    = $e->getMessage();
+        $rc['err']['file']       = $e->getJsFileName();
+        $rc['err']['sourceLine'] = $e->getJsSourceLine();
+        $rc['err']['lineNumber'] = $e->getJsLineNumber()-1;
+        $rc['err']['trace']      = $e->getJsTrace();
+    }
+
+    $rc['timeJs'][2]  = (microtime(true) - $rc['startJs']);
+
+    // Copy output buffer and clean it
+    $rc['debug'] = ob_get_contents();
+    ob_end_clean();
+}
+
+$rc['memory']  = memory_get_peak_usage(true)/1024/1024;
+$rc['timePhp'] = (microtime(true) - $rc['startPhp']);
+
+//unset($rc['neighbors']);
+
+// Output result as JSON object
+print(json_encode($rc));
+?>
Index: branches/FACT++_part_filenames/www/viewer/internal.js
===================================================================
--- branches/FACT++_part_filenames/www/viewer/internal.js	(revision 18732)
+++ branches/FACT++_part_filenames/www/viewer/internal.js	(revision 18732)
@@ -0,0 +1,1503 @@
+$.neighbors = [
+    [ 17, 15, 16, 1, 3, 2 ],
+    [ 0, 16, 4, 3 ],
+    [ 32, 17, 0, 3, 5, 29 ],
+    [ 2, 0, 1, 4, 6, 5 ],
+    [ 3, 1, 7, 6 ],
+    [ 29, 2, 3, 6, 8, 26 ],
+    [ 5, 3, 4, 7, 71, 8 ],
+    [ 6, 4, 70, 71 ],
+    [ 26, 5, 6, 71, 69, 23 ],
+    [ 1439, 1437, 1438, 10, 12, 11 ],
+    [ 9, 1438, 13, 12 ],
+    [ 1400, 1439, 9, 12, 14, 1397 ],
+    [ 11, 9, 10, 13, 15, 14 ],
+    [ 12, 10, 16, 15 ],
+    [ 1397, 11, 12, 15, 17, 35 ],
+    [ 14, 12, 13, 16, 0, 17 ],
+    [ 15, 13, 1, 0 ],
+    [ 35, 14, 15, 0, 2, 32 ],
+    [ 19, 21, 20, 65, 61, 62 ],
+    [ 116, 22, 21, 18, 62, 113 ],
+    [ 21, 23, 69, 67, 65, 18 ],
+    [ 22, 24, 23, 20, 18, 19 ],
+    [ 119, 25, 24, 21, 19, 116 ],
+    [ 24, 26, 8, 69, 20, 21 ],
+    [ 25, 27, 26, 23, 21, 22 ],
+    [ 122, 28, 27, 24, 22, 119 ],
+    [ 27, 29, 5, 8, 23, 24 ],
+    [ 28, 30, 29, 26, 24, 25 ],
+    [ 125, 31, 30, 27, 25, 122 ],
+    [ 30, 32, 2, 5, 26, 27 ],
+    [ 31, 33, 32, 29, 27, 28 ],
+    [ 128, 34, 33, 30, 28, 125 ],
+    [ 33, 35, 17, 2, 29, 30 ],
+    [ 34, 1395, 35, 32, 30, 31 ],
+    [ 131, 1396, 1395, 33, 31, 128 ],
+    [ 1395, 1397, 14, 17, 32, 33 ],
+    [ 37, 39, 38, 50, 47, 48 ],
+    [ 80, 40, 39, 36, 48, 77 ],
+    [ 39, 41, 53, 51, 50, 36 ],
+    [ 40, 42, 41, 38, 36, 37 ],
+    [ 92, 43, 42, 39, 37, 80 ],
+    [ 42, 44, 58, 53, 38, 39 ],
+    [ 43, 108, 44, 41, 39, 40 ],
+    [ 95, 109, 108, 42, 40, 92 ],
+    [ 108, 110, 60, 58, 41, 42 ],
+    [ 89, 47, 46, 86, 87 ],
+    [ 47, 50, 49, 45 ],
+    [ 48, 36, 50, 46, 45, 89 ],
+    [ 77, 37, 36, 47, 89, 74 ],
+    [ 50, 51, 46 ],
+    [ 36, 38, 51, 49, 46, 47 ],
+    [ 38, 53, 52, 49, 50 ],
+    [ 53, 55, 54, 51 ],
+    [ 41, 58, 55, 52, 51, 38 ],
+    [ 55, 56, 52 ],
+    [ 58, 59, 56, 54, 52, 53 ],
+    [ 59, 63, 57, 54, 55 ],
+    [ 63, 64, 56 ],
+    [ 44, 60, 59, 55, 53, 41 ],
+    [ 60, 61, 63, 56, 55, 58 ],
+    [ 110, 62, 61, 59, 58, 44 ],
+    [ 62, 18, 65, 63, 59, 60 ],
+    [ 113, 19, 18, 61, 60, 110 ],
+    [ 61, 65, 64, 57, 56, 59 ],
+    [ 65, 67, 66, 57, 63 ],
+    [ 18, 20, 67, 64, 63, 61 ],
+    [ 67, 68, 64 ],
+    [ 20, 69, 68, 66, 64, 65 ],
+    [ 69, 71, 70, 66, 67 ],
+    [ 23, 8, 71, 68, 67, 20 ],
+    [ 71, 7, 68 ],
+    [ 8, 6, 7, 70, 68, 69 ],
+    [ 73, 75, 74, 88, 84, 161 ],
+    [ 170, 76, 75, 72, 161, 167 ],
+    [ 75, 77, 48, 89, 88, 72 ],
+    [ 76, 78, 77, 74, 72, 73 ],
+    [ 173, 79, 78, 75, 73, 170 ],
+    [ 78, 80, 37, 48, 74, 75 ],
+    [ 79, 90, 80, 77, 75, 76 ],
+    [ 176, 91, 90, 78, 76, 173 ],
+    [ 90, 92, 40, 37, 77, 78 ],
+    [ 82, 83, 85, 157 ],
+    [ 160, 84, 83, 81, 157, 158 ],
+    [ 84, 88, 87, 85, 81, 82 ],
+    [ 161, 72, 88, 83, 82, 160 ],
+    [ 83, 87, 86, 81 ],
+    [ 87, 45, 85 ],
+    [ 88, 89, 45, 86, 85, 83 ],
+    [ 72, 74, 89, 87, 83, 84 ],
+    [ 74, 48, 47, 45, 87, 88 ],
+    [ 91, 93, 92, 80, 78, 79 ],
+    [ 179, 94, 93, 90, 79, 176 ],
+    [ 93, 95, 43, 40, 80, 90 ],
+    [ 94, 96, 95, 92, 90, 91 ],
+    [ 182, 97, 96, 93, 91, 179 ],
+    [ 96, 98, 109, 43, 92, 93 ],
+    [ 97, 99, 98, 95, 93, 94 ],
+    [ 185, 100, 99, 96, 94, 182 ],
+    [ 99, 101, 112, 109, 95, 96 ],
+    [ 100, 102, 101, 98, 96, 97 ],
+    [ 188, 103, 102, 99, 97, 185 ],
+    [ 102, 104, 115, 112, 98, 99 ],
+    [ 103, 105, 104, 101, 99, 100 ],
+    [ 191, 106, 105, 102, 100, 188 ],
+    [ 105, 107, 118, 115, 101, 102 ],
+    [ 106, 135, 107, 104, 102, 103 ],
+    [ 194, 136, 135, 105, 103, 191 ],
+    [ 135, 137, 121, 118, 104, 105 ],
+    [ 109, 111, 110, 44, 42, 43 ],
+    [ 98, 112, 111, 108, 43, 95 ],
+    [ 111, 113, 62, 60, 44, 108 ],
+    [ 112, 114, 113, 110, 108, 109 ],
+    [ 101, 115, 114, 111, 109, 98 ],
+    [ 114, 116, 19, 62, 110, 111 ],
+    [ 115, 117, 116, 113, 111, 112 ],
+    [ 104, 118, 117, 114, 112, 101 ],
+    [ 117, 119, 22, 19, 113, 114 ],
+    [ 118, 120, 119, 116, 114, 115 ],
+    [ 107, 121, 120, 117, 115, 104 ],
+    [ 120, 122, 25, 22, 116, 117 ],
+    [ 121, 123, 122, 119, 117, 118 ],
+    [ 137, 124, 123, 120, 118, 107 ],
+    [ 123, 125, 28, 25, 119, 120 ],
+    [ 124, 126, 125, 122, 120, 121 ],
+    [ 140, 127, 126, 123, 121, 137 ],
+    [ 126, 128, 31, 28, 122, 123 ],
+    [ 127, 129, 128, 125, 123, 124 ],
+    [ 143, 130, 129, 126, 124, 140 ],
+    [ 129, 131, 34, 31, 125, 126 ],
+    [ 130, 132, 131, 128, 126, 127 ],
+    [ 209, 133, 132, 129, 127, 143 ],
+    [ 132, 134, 1396, 34, 128, 129 ],
+    [ 133, 1377, 134, 131, 129, 130 ],
+    [ 212, 1378, 1377, 132, 130, 209 ],
+    [ 1377, 1379, 1399, 1396, 131, 132 ],
+    [ 136, 138, 137, 107, 105, 106 ],
+    [ 197, 139, 138, 135, 106, 194 ],
+    [ 138, 140, 124, 121, 107, 135 ],
+    [ 139, 141, 140, 137, 135, 136 ],
+    [ 200, 142, 141, 138, 136, 197 ],
+    [ 141, 143, 127, 124, 137, 138 ],
+    [ 142, 207, 143, 140, 138, 139 ],
+    [ 203, 208, 207, 141, 139, 200 ],
+    [ 207, 209, 130, 127, 140, 141 ],
+    [ 222, 223, 146, 220 ],
+    [ 146, 147, 153 ],
+    [ 223, 148, 147, 145, 144 ],
+    [ 148, 150, 149, 153, 145, 146 ],
+    [ 225, 227, 150, 147, 146, 223 ],
+    [ 150, 151, 156, 154, 153, 147 ],
+    [ 227, 152, 151, 149, 147, 148 ],
+    [ 152, 162, 159, 156, 149, 150 ],
+    [ 230, 163, 162, 151, 150, 227 ],
+    [ 147, 149, 154, 145 ],
+    [ 149, 156, 155, 153 ],
+    [ 156, 158, 157, 154 ],
+    [ 151, 159, 158, 155, 154, 149 ],
+    [ 158, 82, 81, 155 ],
+    [ 159, 160, 82, 157, 155, 156 ],
+    [ 162, 164, 160, 158, 156, 151 ],
+    [ 164, 161, 84, 82, 158, 159 ],
+    [ 167, 73, 72, 84, 160, 164 ],
+    [ 163, 165, 164, 159, 151, 152 ],
+    [ 233, 166, 165, 162, 152, 230 ],
+    [ 165, 167, 161, 160, 159, 162 ],
+    [ 166, 168, 167, 164, 162, 163 ],
+    [ 236, 169, 168, 165, 163, 233 ],
+    [ 168, 170, 73, 161, 164, 165 ],
+    [ 169, 171, 170, 167, 165, 166 ],
+    [ 239, 172, 171, 168, 166, 236 ],
+    [ 171, 173, 76, 73, 167, 168 ],
+    [ 172, 174, 173, 170, 168, 169 ],
+    [ 242, 175, 174, 171, 169, 239 ],
+    [ 174, 176, 79, 76, 170, 171 ],
+    [ 175, 177, 176, 173, 171, 172 ],
+    [ 245, 178, 177, 174, 172, 242 ],
+    [ 177, 179, 91, 79, 173, 174 ],
+    [ 178, 180, 179, 176, 174, 175 ],
+    [ 248, 181, 180, 177, 175, 245 ],
+    [ 180, 182, 94, 91, 176, 177 ],
+    [ 181, 183, 182, 179, 177, 178 ],
+    [ 251, 184, 183, 180, 178, 248 ],
+    [ 183, 185, 97, 94, 179, 180 ],
+    [ 184, 186, 185, 182, 180, 181 ],
+    [ 263, 187, 186, 183, 181, 251 ],
+    [ 186, 188, 100, 97, 182, 183 ],
+    [ 187, 189, 188, 185, 183, 184 ],
+    [ 266, 190, 189, 186, 184, 263 ],
+    [ 189, 191, 103, 100, 185, 186 ],
+    [ 190, 192, 191, 188, 186, 187 ],
+    [ 269, 193, 192, 189, 187, 266 ],
+    [ 192, 194, 106, 103, 188, 189 ],
+    [ 193, 195, 194, 191, 189, 190 ],
+    [ 254, 196, 195, 192, 190, 269 ],
+    [ 195, 197, 136, 106, 191, 192 ],
+    [ 196, 198, 197, 194, 192, 193 ],
+    [ 257, 199, 198, 195, 193, 254 ],
+    [ 198, 200, 139, 136, 194, 195 ],
+    [ 199, 201, 200, 197, 195, 196 ],
+    [ 260, 202, 201, 198, 196, 257 ],
+    [ 201, 203, 142, 139, 197, 198 ],
+    [ 202, 204, 203, 200, 198, 199 ],
+    [ 1145, 205, 204, 201, 199, 260 ],
+    [ 204, 206, 208, 142, 200, 201 ],
+    [ 205, 1251, 206, 203, 201, 202 ],
+    [ 1148, 1252, 1251, 204, 202, 1145 ],
+    [ 1251, 1253, 211, 208, 203, 204 ],
+    [ 208, 210, 209, 143, 141, 142 ],
+    [ 206, 211, 210, 207, 142, 203 ],
+    [ 210, 212, 133, 130, 143, 207 ],
+    [ 211, 213, 212, 209, 207, 208 ],
+    [ 1253, 214, 213, 210, 208, 206 ],
+    [ 213, 215, 1378, 133, 209, 210 ],
+    [ 214, 1242, 215, 212, 210, 211 ],
+    [ 1256, 1243, 1242, 213, 211, 1253 ],
+    [ 1242, 1244, 1381, 1378, 212, 213 ],
+    [ 335, 219, 218 ],
+    [ 218, 221, 220 ],
+    [ 219, 288, 221, 217, 216 ],
+    [ 338, 289, 288, 218, 216, 335 ],
+    [ 221, 222, 144, 217 ],
+    [ 288, 290, 222, 220, 217, 218 ],
+    [ 290, 224, 223, 144, 220, 221 ],
+    [ 224, 225, 148, 146, 144, 222 ],
+    [ 293, 226, 225, 223, 222, 290 ],
+    [ 226, 228, 227, 148, 223, 224 ],
+    [ 296, 229, 228, 225, 224, 293 ],
+    [ 228, 230, 152, 150, 148, 225 ],
+    [ 229, 231, 230, 227, 225, 226 ],
+    [ 299, 232, 231, 228, 226, 296 ],
+    [ 231, 233, 163, 152, 227, 228 ],
+    [ 232, 234, 233, 230, 228, 229 ],
+    [ 302, 235, 234, 231, 229, 299 ],
+    [ 234, 236, 166, 163, 230, 231 ],
+    [ 235, 237, 236, 233, 231, 232 ],
+    [ 305, 238, 237, 234, 232, 302 ],
+    [ 237, 239, 169, 166, 233, 234 ],
+    [ 238, 240, 239, 236, 234, 235 ],
+    [ 308, 241, 240, 237, 235, 305 ],
+    [ 240, 242, 172, 169, 236, 237 ],
+    [ 241, 243, 242, 239, 237, 238 ],
+    [ 311, 244, 243, 240, 238, 308 ],
+    [ 243, 245, 175, 172, 239, 240 ],
+    [ 244, 246, 245, 242, 240, 241 ],
+    [ 314, 247, 246, 243, 241, 311 ],
+    [ 246, 248, 178, 175, 242, 243 ],
+    [ 247, 249, 248, 245, 243, 244 ],
+    [ 317, 250, 249, 246, 244, 314 ],
+    [ 249, 251, 181, 178, 245, 246 ],
+    [ 250, 261, 251, 248, 246, 247 ],
+    [ 320, 262, 261, 249, 247, 317 ],
+    [ 261, 263, 184, 181, 248, 249 ],
+    [ 253, 255, 254, 269, 267, 268 ],
+    [ 278, 256, 255, 252, 268, 275 ],
+    [ 255, 257, 196, 193, 269, 252 ],
+    [ 256, 258, 257, 254, 252, 253 ],
+    [ 281, 259, 258, 255, 253, 278 ],
+    [ 258, 260, 199, 196, 254, 255 ],
+    [ 259, 1143, 260, 257, 255, 256 ],
+    [ 284, 1144, 1143, 258, 256, 281 ],
+    [ 1143, 1145, 202, 199, 257, 258 ],
+    [ 262, 264, 263, 251, 249, 250 ],
+    [ 323, 265, 264, 261, 250, 320 ],
+    [ 264, 266, 187, 184, 251, 261 ],
+    [ 265, 267, 266, 263, 261, 262 ],
+    [ 272, 268, 267, 264, 262, 323 ],
+    [ 267, 269, 190, 187, 263, 264 ],
+    [ 268, 252, 269, 266, 264, 265 ],
+    [ 275, 253, 252, 267, 265, 272 ],
+    [ 252, 254, 193, 190, 266, 267 ],
+    [ 271, 273, 272, 323, 321, 322 ],
+    [ 368, 274, 273, 270, 322, 365 ],
+    [ 273, 275, 268, 265, 323, 270 ],
+    [ 274, 276, 275, 272, 270, 271 ],
+    [ 371, 277, 276, 273, 271, 368 ],
+    [ 276, 278, 253, 268, 272, 273 ],
+    [ 277, 279, 278, 275, 273, 274 ],
+    [ 374, 280, 279, 276, 274, 371 ],
+    [ 279, 281, 256, 253, 275, 276 ],
+    [ 280, 282, 281, 278, 276, 277 ],
+    [ 377, 283, 282, 279, 277, 374 ],
+    [ 282, 284, 259, 256, 278, 279 ],
+    [ 283, 285, 284, 281, 279, 280 ],
+    [ 389, 286, 285, 282, 280, 377 ],
+    [ 285, 287, 1144, 259, 281, 282 ],
+    [ 286, 1107, 287, 284, 282, 283 ],
+    [ 392, 1108, 1107, 285, 283, 389 ],
+    [ 1107, 1109, 1147, 1144, 284, 285 ],
+    [ 289, 291, 290, 221, 218, 219 ],
+    [ 341, 292, 291, 288, 219, 338 ],
+    [ 291, 293, 224, 222, 221, 288 ],
+    [ 292, 294, 293, 290, 288, 289 ],
+    [ 326, 295, 294, 291, 289, 341 ],
+    [ 294, 296, 226, 224, 290, 291 ],
+    [ 295, 297, 296, 293, 291, 292 ],
+    [ 329, 298, 297, 294, 292, 326 ],
+    [ 297, 299, 229, 226, 293, 294 ],
+    [ 298, 300, 299, 296, 294, 295 ],
+    [ 332, 301, 300, 297, 295, 329 ],
+    [ 300, 302, 232, 229, 296, 297 ],
+    [ 301, 303, 302, 299, 297, 298 ],
+    [ 344, 304, 303, 300, 298, 332 ],
+    [ 303, 305, 235, 232, 299, 300 ],
+    [ 304, 306, 305, 302, 300, 301 ],
+    [ 347, 307, 306, 303, 301, 344 ],
+    [ 306, 308, 238, 235, 302, 303 ],
+    [ 307, 309, 308, 305, 303, 304 ],
+    [ 350, 310, 309, 306, 304, 347 ],
+    [ 309, 311, 241, 238, 305, 306 ],
+    [ 310, 312, 311, 308, 306, 307 ],
+    [ 353, 313, 312, 309, 307, 350 ],
+    [ 312, 314, 244, 241, 308, 309 ],
+    [ 313, 315, 314, 311, 309, 310 ],
+    [ 356, 316, 315, 312, 310, 353 ],
+    [ 315, 317, 247, 244, 311, 312 ],
+    [ 316, 318, 317, 314, 312, 313 ],
+    [ 359, 319, 318, 315, 313, 356 ],
+    [ 318, 320, 250, 247, 314, 315 ],
+    [ 319, 321, 320, 317, 315, 316 ],
+    [ 362, 322, 321, 318, 316, 359 ],
+    [ 321, 323, 262, 250, 317, 318 ],
+    [ 322, 270, 323, 320, 318, 319 ],
+    [ 365, 271, 270, 321, 319, 362 ],
+    [ 270, 272, 265, 262, 320, 321 ],
+    [ 325, 327, 326, 341, 339, 340 ],
+    [ 449, 328, 327, 324, 340, 446 ],
+    [ 327, 329, 295, 292, 341, 324 ],
+    [ 328, 330, 329, 326, 324, 325 ],
+    [ 452, 331, 330, 327, 325, 449 ],
+    [ 330, 332, 298, 295, 326, 327 ],
+    [ 331, 342, 332, 329, 327, 328 ],
+    [ 455, 343, 342, 330, 328, 452 ],
+    [ 342, 344, 301, 298, 329, 330 ],
+    [ 334, 336, 335 ],
+    [ 435, 337, 336, 333, 433 ],
+    [ 336, 338, 219, 216, 333 ],
+    [ 337, 339, 338, 335, 333, 334 ],
+    [ 443, 340, 339, 336, 334, 435 ],
+    [ 339, 341, 289, 219, 335, 336 ],
+    [ 340, 324, 341, 338, 336, 337 ],
+    [ 446, 325, 324, 339, 337, 443 ],
+    [ 324, 326, 292, 289, 338, 339 ],
+    [ 343, 345, 344, 332, 330, 331 ],
+    [ 458, 346, 345, 342, 331, 455 ],
+    [ 345, 347, 304, 301, 332, 342 ],
+    [ 346, 348, 347, 344, 342, 343 ],
+    [ 461, 349, 348, 345, 343, 458 ],
+    [ 348, 350, 307, 304, 344, 345 ],
+    [ 349, 351, 350, 347, 345, 346 ],
+    [ 464, 352, 351, 348, 346, 461 ],
+    [ 351, 353, 310, 307, 347, 348 ],
+    [ 352, 354, 353, 350, 348, 349 ],
+    [ 467, 355, 354, 351, 349, 464 ],
+    [ 354, 356, 313, 310, 350, 351 ],
+    [ 355, 357, 356, 353, 351, 352 ],
+    [ 398, 358, 357, 354, 352, 467 ],
+    [ 357, 359, 316, 313, 353, 354 ],
+    [ 358, 360, 359, 356, 354, 355 ],
+    [ 401, 361, 360, 357, 355, 398 ],
+    [ 360, 362, 319, 316, 356, 357 ],
+    [ 361, 363, 362, 359, 357, 358 ],
+    [ 404, 364, 363, 360, 358, 401 ],
+    [ 363, 365, 322, 319, 359, 360 ],
+    [ 364, 366, 365, 362, 360, 361 ],
+    [ 407, 367, 366, 363, 361, 404 ],
+    [ 366, 368, 271, 322, 362, 363 ],
+    [ 367, 369, 368, 365, 363, 364 ],
+    [ 410, 370, 369, 366, 364, 407 ],
+    [ 369, 371, 274, 271, 365, 366 ],
+    [ 370, 372, 371, 368, 366, 367 ],
+    [ 413, 373, 372, 369, 367, 410 ],
+    [ 372, 374, 277, 274, 368, 369 ],
+    [ 373, 375, 374, 371, 369, 370 ],
+    [ 380, 376, 375, 372, 370, 413 ],
+    [ 375, 377, 280, 277, 371, 372 ],
+    [ 376, 387, 377, 374, 372, 373 ],
+    [ 383, 388, 387, 375, 373, 380 ],
+    [ 387, 389, 283, 280, 374, 375 ],
+    [ 379, 381, 380, 413, 411, 412 ],
+    [ 422, 382, 381, 378, 412, 419 ],
+    [ 381, 383, 376, 373, 413, 378 ],
+    [ 382, 384, 383, 380, 378, 379 ],
+    [ 425, 385, 384, 381, 379, 422 ],
+    [ 384, 386, 388, 376, 380, 381 ],
+    [ 385, 999, 386, 383, 381, 382 ],
+    [ 428, 1000, 999, 384, 382, 425 ],
+    [ 999, 1001, 391, 388, 383, 384 ],
+    [ 388, 390, 389, 377, 375, 376 ],
+    [ 386, 391, 390, 387, 376, 383 ],
+    [ 390, 392, 286, 283, 377, 387 ],
+    [ 391, 393, 392, 389, 387, 388 ],
+    [ 1001, 394, 393, 390, 388, 386 ],
+    [ 393, 395, 1108, 286, 389, 390 ],
+    [ 394, 1098, 395, 392, 390, 391 ],
+    [ 1004, 1099, 1098, 393, 391, 1001 ],
+    [ 1098, 1100, 1111, 1108, 392, 393 ],
+    [ 397, 399, 398, 467, 465, 466 ],
+    [ 503, 400, 399, 396, 466, 500 ],
+    [ 399, 401, 358, 355, 467, 396 ],
+    [ 400, 402, 401, 398, 396, 397 ],
+    [ 515, 403, 402, 399, 397, 503 ],
+    [ 402, 404, 361, 358, 398, 399 ],
+    [ 403, 405, 404, 401, 399, 400 ],
+    [ 518, 406, 405, 402, 400, 515 ],
+    [ 405, 407, 364, 361, 401, 402 ],
+    [ 406, 408, 407, 404, 402, 403 ],
+    [ 521, 409, 408, 405, 403, 518 ],
+    [ 408, 410, 367, 364, 404, 405 ],
+    [ 409, 411, 410, 407, 405, 406 ],
+    [ 416, 412, 411, 408, 406, 521 ],
+    [ 411, 413, 370, 367, 407, 408 ],
+    [ 412, 378, 413, 410, 408, 409 ],
+    [ 419, 379, 378, 411, 409, 416 ],
+    [ 378, 380, 373, 370, 410, 411 ],
+    [ 415, 417, 416, 521, 519, 520 ],
+    [ 512, 418, 417, 414, 520, 509 ],
+    [ 417, 419, 412, 409, 521, 414 ],
+    [ 418, 420, 419, 416, 414, 415 ],
+    [ 533, 421, 420, 417, 415, 512 ],
+    [ 420, 422, 379, 412, 416, 417 ],
+    [ 421, 423, 422, 419, 417, 418 ],
+    [ 536, 424, 423, 420, 418, 533 ],
+    [ 423, 425, 382, 379, 419, 420 ],
+    [ 424, 426, 425, 422, 420, 421 ],
+    [ 539, 427, 426, 423, 421, 536 ],
+    [ 426, 428, 385, 382, 422, 423 ],
+    [ 427, 429, 428, 425, 423, 424 ],
+    [ 920, 430, 429, 426, 424, 539 ],
+    [ 429, 431, 1000, 385, 425, 426 ],
+    [ 430, 981, 431, 428, 426, 427 ],
+    [ 923, 982, 981, 429, 427, 920 ],
+    [ 981, 983, 1003, 1000, 428, 429 ],
+    [ 436, 437, 434 ],
+    [ 434, 435, 334 ],
+    [ 437, 441, 435, 433, 432 ],
+    [ 441, 443, 337, 334, 433, 434 ],
+    [ 469, 438, 437, 432 ],
+    [ 438, 442, 441, 434, 432, 436 ],
+    [ 439, 440, 442, 437, 436, 469 ],
+    [ 473, 477, 440, 438, 469, 470 ],
+    [ 477, 479, 445, 442, 438, 439 ],
+    [ 442, 444, 443, 435, 434, 437 ],
+    [ 440, 445, 444, 441, 437, 438 ],
+    [ 444, 446, 340, 337, 435, 441 ],
+    [ 445, 447, 446, 443, 441, 442 ],
+    [ 479, 448, 447, 444, 442, 440 ],
+    [ 447, 449, 325, 340, 443, 444 ],
+    [ 448, 450, 449, 446, 444, 445 ],
+    [ 482, 451, 450, 447, 445, 479 ],
+    [ 450, 452, 328, 325, 446, 447 ],
+    [ 451, 453, 452, 449, 447, 448 ],
+    [ 485, 454, 453, 450, 448, 482 ],
+    [ 453, 455, 331, 328, 449, 450 ],
+    [ 454, 456, 455, 452, 450, 451 ],
+    [ 488, 457, 456, 453, 451, 485 ],
+    [ 456, 458, 343, 331, 452, 453 ],
+    [ 457, 459, 458, 455, 453, 454 ],
+    [ 491, 460, 459, 456, 454, 488 ],
+    [ 459, 461, 346, 343, 455, 456 ],
+    [ 460, 462, 461, 458, 456, 457 ],
+    [ 494, 463, 462, 459, 457, 491 ],
+    [ 462, 464, 349, 346, 458, 459 ],
+    [ 463, 465, 464, 461, 459, 460 ],
+    [ 497, 466, 465, 462, 460, 494 ],
+    [ 465, 467, 352, 349, 461, 462 ],
+    [ 466, 396, 467, 464, 462, 463 ],
+    [ 500, 397, 396, 465, 463, 497 ],
+    [ 396, 398, 355, 352, 464, 465 ],
+    [ 540, 471, 470 ],
+    [ 470, 439, 438, 436 ],
+    [ 471, 473, 439, 469, 468 ],
+    [ 472, 474, 473, 470, 468, 540 ],
+    [ 543, 475, 474, 471, 540, 541 ],
+    [ 474, 478, 477, 439, 470, 471 ],
+    [ 475, 476, 478, 473, 471, 472 ],
+    [ 546, 549, 476, 474, 472, 543 ],
+    [ 549, 551, 481, 478, 474, 475 ],
+    [ 478, 480, 479, 440, 439, 473 ],
+    [ 476, 481, 480, 477, 473, 474 ],
+    [ 480, 482, 448, 445, 440, 477 ],
+    [ 481, 483, 482, 479, 477, 478 ],
+    [ 551, 484, 483, 480, 478, 476 ],
+    [ 483, 485, 451, 448, 479, 480 ],
+    [ 484, 486, 485, 482, 480, 481 ],
+    [ 554, 487, 486, 483, 481, 551 ],
+    [ 486, 488, 454, 451, 482, 483 ],
+    [ 487, 489, 488, 485, 483, 484 ],
+    [ 557, 490, 489, 486, 484, 554 ],
+    [ 489, 491, 457, 454, 485, 486 ],
+    [ 490, 492, 491, 488, 486, 487 ],
+    [ 560, 493, 492, 489, 487, 557 ],
+    [ 492, 494, 460, 457, 488, 489 ],
+    [ 493, 495, 494, 491, 489, 490 ],
+    [ 563, 496, 495, 492, 490, 560 ],
+    [ 495, 497, 463, 460, 491, 492 ],
+    [ 496, 498, 497, 494, 492, 493 ],
+    [ 566, 499, 498, 495, 493, 563 ],
+    [ 498, 500, 466, 463, 494, 495 ],
+    [ 499, 501, 500, 497, 495, 496 ],
+    [ 569, 502, 501, 498, 496, 566 ],
+    [ 501, 503, 397, 466, 497, 498 ],
+    [ 502, 513, 503, 500, 498, 499 ],
+    [ 572, 514, 513, 501, 499, 569 ],
+    [ 513, 515, 400, 397, 500, 501 ],
+    [ 505, 507, 506, 575, 573, 574 ],
+    [ 611, 508, 507, 504, 574, 608 ],
+    [ 507, 509, 520, 517, 575, 504 ],
+    [ 508, 510, 509, 506, 504, 505 ],
+    [ 524, 511, 510, 507, 505, 611 ],
+    [ 510, 512, 415, 520, 506, 507 ],
+    [ 511, 531, 512, 509, 507, 508 ],
+    [ 527, 532, 531, 510, 508, 524 ],
+    [ 531, 533, 418, 415, 509, 510 ],
+    [ 514, 516, 515, 503, 501, 502 ],
+    [ 575, 517, 516, 513, 502, 572 ],
+    [ 516, 518, 403, 400, 503, 513 ],
+    [ 517, 519, 518, 515, 513, 514 ],
+    [ 506, 520, 519, 516, 514, 575 ],
+    [ 519, 521, 406, 403, 515, 516 ],
+    [ 520, 414, 521, 518, 516, 517 ],
+    [ 509, 415, 414, 519, 517, 506 ],
+    [ 414, 416, 409, 406, 518, 519 ],
+    [ 523, 525, 524, 611, 609, 610 ],
+    [ 656, 526, 525, 522, 610, 653 ],
+    [ 525, 527, 511, 508, 611, 522 ],
+    [ 526, 528, 527, 524, 522, 523 ],
+    [ 659, 529, 528, 525, 523, 656 ],
+    [ 528, 530, 532, 511, 524, 525 ],
+    [ 529, 927, 530, 527, 525, 526 ],
+    [ 662, 928, 927, 528, 526, 659 ],
+    [ 927, 929, 535, 532, 527, 528 ],
+    [ 532, 534, 533, 512, 510, 511 ],
+    [ 530, 535, 534, 531, 511, 527 ],
+    [ 534, 536, 421, 418, 512, 531 ],
+    [ 535, 537, 536, 533, 531, 532 ],
+    [ 929, 538, 537, 534, 532, 530 ],
+    [ 537, 539, 424, 421, 533, 534 ],
+    [ 538, 918, 539, 536, 534, 535 ],
+    [ 932, 919, 918, 537, 535, 929 ],
+    [ 918, 920, 427, 424, 536, 537 ],
+    [ 541, 472, 471, 468 ],
+    [ 542, 543, 472, 540 ],
+    [ 544, 545, 543, 541 ],
+    [ 545, 546, 475, 472, 541, 542 ],
+    [ 576, 577, 545, 542 ],
+    [ 577, 547, 546, 543, 542, 544 ],
+    [ 547, 550, 549, 475, 543, 545 ],
+    [ 579, 548, 550, 546, 545, 577 ],
+    [ 585, 587, 553, 550, 547, 579 ],
+    [ 550, 552, 551, 476, 475, 546 ],
+    [ 548, 553, 552, 549, 546, 547 ],
+    [ 552, 554, 484, 481, 476, 549 ],
+    [ 553, 555, 554, 551, 549, 550 ],
+    [ 587, 556, 555, 552, 550, 548 ],
+    [ 555, 557, 487, 484, 551, 552 ],
+    [ 556, 558, 557, 554, 552, 553 ],
+    [ 590, 559, 558, 555, 553, 587 ],
+    [ 558, 560, 490, 487, 554, 555 ],
+    [ 559, 561, 560, 557, 555, 556 ],
+    [ 593, 562, 561, 558, 556, 590 ],
+    [ 561, 563, 493, 490, 557, 558 ],
+    [ 562, 564, 563, 560, 558, 559 ],
+    [ 596, 565, 564, 561, 559, 593 ],
+    [ 564, 566, 496, 493, 560, 561 ],
+    [ 565, 567, 566, 563, 561, 562 ],
+    [ 599, 568, 567, 564, 562, 596 ],
+    [ 567, 569, 499, 496, 563, 564 ],
+    [ 568, 570, 569, 566, 564, 565 ],
+    [ 602, 571, 570, 567, 565, 599 ],
+    [ 570, 572, 502, 499, 566, 567 ],
+    [ 571, 573, 572, 569, 567, 568 ],
+    [ 605, 574, 573, 570, 568, 602 ],
+    [ 573, 575, 514, 502, 569, 570 ],
+    [ 574, 504, 575, 572, 570, 571 ],
+    [ 608, 505, 504, 573, 571, 605 ],
+    [ 504, 506, 517, 514, 572, 573 ],
+    [ 580, 578, 577, 544 ],
+    [ 578, 579, 547, 545, 544, 576 ],
+    [ 582, 583, 579, 577, 576, 580 ],
+    [ 583, 585, 548, 547, 577, 578 ],
+    [ 581, 582, 578, 576 ],
+    [ 612, 582, 580 ],
+    [ 612, 584, 583, 578, 580, 581 ],
+    [ 584, 586, 585, 579, 578, 582 ],
+    [ 614, 615, 586, 583, 582, 612 ],
+    [ 586, 588, 587, 548, 579, 583 ],
+    [ 615, 589, 588, 585, 583, 584 ],
+    [ 588, 590, 556, 553, 548, 585 ],
+    [ 589, 591, 590, 587, 585, 586 ],
+    [ 623, 592, 591, 588, 586, 615 ],
+    [ 591, 593, 559, 556, 587, 588 ],
+    [ 592, 594, 593, 590, 588, 589 ],
+    [ 626, 595, 594, 591, 589, 623 ],
+    [ 594, 596, 562, 559, 590, 591 ],
+    [ 595, 597, 596, 593, 591, 592 ],
+    [ 629, 598, 597, 594, 592, 626 ],
+    [ 597, 599, 565, 562, 593, 594 ],
+    [ 598, 600, 599, 596, 594, 595 ],
+    [ 641, 601, 600, 597, 595, 629 ],
+    [ 600, 602, 568, 565, 596, 597 ],
+    [ 601, 603, 602, 599, 597, 598 ],
+    [ 644, 604, 603, 600, 598, 641 ],
+    [ 603, 605, 571, 568, 599, 600 ],
+    [ 604, 606, 605, 602, 600, 601 ],
+    [ 647, 607, 606, 603, 601, 644 ],
+    [ 606, 608, 574, 571, 602, 603 ],
+    [ 607, 609, 608, 605, 603, 604 ],
+    [ 650, 610, 609, 606, 604, 647 ],
+    [ 609, 611, 505, 574, 605, 606 ],
+    [ 610, 522, 611, 608, 606, 607 ],
+    [ 653, 523, 522, 609, 607, 650 ],
+    [ 522, 524, 508, 505, 608, 609 ],
+    [ 613, 614, 584, 582, 581 ],
+    [ 616, 617, 614, 612 ],
+    [ 617, 621, 615, 584, 612, 613 ],
+    [ 621, 623, 589, 586, 584, 614 ],
+    [ 618, 617, 613 ],
+    [ 618, 622, 621, 614, 613, 616 ],
+    [ 619, 620, 622, 617, 616 ],
+    [ 630, 631, 620, 618 ],
+    [ 631, 634, 625, 622, 618, 619 ],
+    [ 622, 624, 623, 615, 614, 617 ],
+    [ 620, 625, 624, 621, 617, 618 ],
+    [ 624, 626, 592, 589, 615, 621 ],
+    [ 625, 627, 626, 623, 621, 622 ],
+    [ 634, 628, 627, 624, 622, 620 ],
+    [ 627, 629, 595, 592, 623, 624 ],
+    [ 628, 639, 629, 626, 624, 625 ],
+    [ 636, 640, 639, 627, 625, 634 ],
+    [ 639, 641, 598, 595, 626, 627 ],
+    [ 632, 631, 619 ],
+    [ 632, 635, 634, 620, 619, 630 ],
+    [ 633, 684, 635, 631, 630 ],
+    [ 685, 684, 632 ],
+    [ 635, 636, 628, 625, 620, 631 ],
+    [ 684, 637, 636, 634, 631, 632 ],
+    [ 637, 638, 640, 628, 634, 635 ],
+    [ 687, 693, 638, 636, 635, 684 ],
+    [ 693, 695, 643, 640, 636, 637 ],
+    [ 640, 642, 641, 629, 627, 628 ],
+    [ 638, 643, 642, 639, 628, 636 ],
+    [ 642, 644, 601, 598, 629, 639 ],
+    [ 643, 645, 644, 641, 639, 640 ],
+    [ 695, 646, 645, 642, 640, 638 ],
+    [ 645, 647, 604, 601, 641, 642 ],
+    [ 646, 648, 647, 644, 642, 643 ],
+    [ 698, 649, 648, 645, 643, 695 ],
+    [ 648, 650, 607, 604, 644, 645 ],
+    [ 649, 651, 650, 647, 645, 646 ],
+    [ 701, 652, 651, 648, 646, 698 ],
+    [ 651, 653, 610, 607, 647, 648 ],
+    [ 652, 654, 653, 650, 648, 649 ],
+    [ 668, 655, 654, 651, 649, 701 ],
+    [ 654, 656, 523, 610, 650, 651 ],
+    [ 655, 657, 656, 653, 651, 652 ],
+    [ 671, 658, 657, 654, 652, 668 ],
+    [ 657, 659, 526, 523, 653, 654 ],
+    [ 658, 660, 659, 656, 654, 655 ],
+    [ 674, 661, 660, 657, 655, 671 ],
+    [ 660, 662, 529, 526, 656, 657 ],
+    [ 661, 663, 662, 659, 657, 658 ],
+    [ 677, 664, 663, 660, 658, 674 ],
+    [ 663, 665, 928, 529, 659, 660 ],
+    [ 664, 855, 665, 662, 660, 661 ],
+    [ 680, 856, 855, 663, 661, 677 ],
+    [ 855, 857, 931, 928, 662, 663 ],
+    [ 667, 669, 668, 701, 699, 700 ],
+    [ 703, 670, 669, 666, 700, 706 ],
+    [ 669, 671, 655, 652, 701, 666 ],
+    [ 670, 672, 671, 668, 666, 667 ],
+    [ 718, 673, 672, 669, 667, 703 ],
+    [ 672, 674, 658, 655, 668, 669 ],
+    [ 673, 675, 674, 671, 669, 670 ],
+    [ 715, 676, 675, 672, 670, 718 ],
+    [ 675, 677, 661, 658, 671, 672 ],
+    [ 676, 678, 677, 674, 672, 673 ],
+    [ 712, 679, 678, 675, 673, 715 ],
+    [ 678, 680, 664, 661, 674, 675 ],
+    [ 679, 681, 680, 677, 675, 676 ],
+    [ 736, 682, 681, 678, 676, 712 ],
+    [ 681, 683, 856, 664, 677, 678 ],
+    [ 682, 747, 683, 680, 678, 679 ],
+    [ 733, 748, 747, 681, 679, 736 ],
+    [ 747, 749, 859, 856, 680, 681 ],
+    [ 685, 687, 637, 635, 632, 633 ],
+    [ 686, 688, 687, 684, 633 ],
+    [ 689, 688, 685 ],
+    [ 688, 694, 693, 637, 684, 685 ],
+    [ 689, 691, 694, 687, 685, 686 ],
+    [ 690, 692, 691, 688, 686 ],
+    [ 710, 692, 689 ],
+    [ 692, 709, 697, 694, 688, 689 ],
+    [ 710, 708, 709, 691, 689, 690 ],
+    [ 694, 696, 695, 638, 637, 687 ],
+    [ 691, 697, 696, 693, 687, 688 ],
+    [ 696, 698, 646, 643, 638, 693 ],
+    [ 697, 699, 698, 695, 693, 694 ],
+    [ 709, 700, 699, 696, 694, 691 ],
+    [ 699, 701, 649, 646, 695, 696 ],
+    [ 700, 666, 701, 698, 696, 697 ],
+    [ 706, 667, 666, 699, 697, 709 ],
+    [ 666, 668, 652, 649, 698, 699 ],
+    [ 719, 717, 718, 703, 705, 704 ],
+    [ 702, 718, 670, 667, 706, 705 ],
+    [ 719, 702, 705, 707 ],
+    [ 704, 702, 703, 706, 708, 707 ],
+    [ 705, 703, 667, 700, 709, 708 ],
+    [ 704, 705, 708, 710 ],
+    [ 707, 705, 706, 709, 692, 710 ],
+    [ 708, 706, 700, 697, 691, 692 ],
+    [ 707, 708, 692, 690 ],
+    [ 737, 735, 736, 712, 714, 713 ],
+    [ 711, 736, 679, 676, 715, 714 ],
+    [ 737, 711, 714, 716 ],
+    [ 713, 711, 712, 715, 717, 716 ],
+    [ 714, 712, 676, 673, 718, 717 ],
+    [ 713, 714, 717, 719 ],
+    [ 716, 714, 715, 718, 702, 719 ],
+    [ 717, 715, 673, 670, 703, 702 ],
+    [ 716, 717, 702, 704 ],
+    [ 784, 783, 721, 723, 722 ],
+    [ 720, 783, 742, 739, 724, 723 ],
+    [ 720, 723, 725 ],
+    [ 722, 720, 721, 724, 726, 725 ],
+    [ 723, 721, 739, 754, 727, 726 ],
+    [ 722, 723, 726, 728 ],
+    [ 725, 723, 724, 727, 729, 728 ],
+    [ 726, 724, 754, 751, 730, 729 ],
+    [ 725, 726, 729, 731 ],
+    [ 728, 726, 727, 730, 732, 731 ],
+    [ 729, 727, 751, 748, 733, 732 ],
+    [ 728, 729, 732, 734 ],
+    [ 731, 729, 730, 733, 735, 734 ],
+    [ 732, 730, 748, 682, 736, 735 ],
+    [ 731, 732, 735, 737 ],
+    [ 734, 732, 733, 736, 711, 737 ],
+    [ 735, 733, 682, 679, 712, 711 ],
+    [ 734, 735, 711, 713 ],
+    [ 739, 741, 740, 755, 753, 754 ],
+    [ 721, 742, 741, 738, 754, 724 ],
+    [ 741, 743, 844, 841, 755, 738 ],
+    [ 742, 744, 743, 740, 738, 739 ],
+    [ 783, 745, 744, 741, 739, 721 ],
+    [ 744, 746, 829, 844, 740, 741 ],
+    [ 745, 774, 746, 743, 741, 742 ],
+    [ 785, 787, 774, 744, 742, 783 ],
+    [ 774, 775, 832, 829, 743, 744 ],
+    [ 748, 750, 749, 683, 681, 682 ],
+    [ 730, 751, 750, 747, 682, 733 ],
+    [ 750, 752, 862, 859, 683, 747 ],
+    [ 751, 753, 752, 749, 747, 748 ],
+    [ 727, 754, 753, 750, 748, 730 ],
+    [ 753, 755, 838, 862, 749, 750 ],
+    [ 754, 738, 755, 752, 750, 751 ],
+    [ 724, 739, 738, 753, 751, 727 ],
+    [ 738, 740, 841, 838, 752, 753 ],
+    [ 757, 759, 758, 836, 834, 835 ],
+    [ 779, 760, 759, 756, 835, 777 ],
+    [ 759, 761, 817, 814, 836, 756 ],
+    [ 760, 762, 761, 758, 756, 757 ],
+    [ 765, 763, 762, 759, 757, 779 ],
+    [ 762, 764, 793, 817, 758, 759 ],
+    [ 763, 769, 764, 761, 759, 760 ],
+    [ 766, 767, 769, 762, 760, 765 ],
+    [ 769, 770, 796, 793, 761, 762 ],
+    [ 782, 766, 763, 760, 779, 780 ],
+    [ 768, 767, 763, 765, 782 ],
+    [ 768, 772, 771, 769, 763, 766 ],
+    [ 772, 767, 766 ],
+    [ 767, 771, 770, 764, 762, 763 ],
+    [ 771, 773, 799, 796, 764, 769 ],
+    [ 772, 805, 773, 770, 769, 767 ],
+    [ 805, 771, 767, 768 ],
+    [ 805, 806, 802, 799, 770, 771 ],
+    [ 787, 776, 775, 746, 744, 745 ],
+    [ 776, 777, 835, 832, 746, 774 ],
+    [ 789, 778, 777, 775, 774, 787 ],
+    [ 778, 779, 757, 835, 775, 776 ],
+    [ 791, 780, 779, 777, 776, 789 ],
+    [ 780, 765, 760, 757, 777, 778 ],
+    [ 781, 782, 765, 779, 778, 791 ],
+    [ 782, 780, 791 ],
+    [ 766, 765, 780, 781 ],
+    [ 784, 785, 745, 742, 721, 720 ],
+    [ 786, 785, 783, 720 ],
+    [ 786, 788, 787, 745, 783, 784 ],
+    [ 788, 785, 784 ],
+    [ 788, 789, 776, 774, 745, 785 ],
+    [ 790, 789, 787, 785, 786 ],
+    [ 790, 791, 778, 776, 787, 788 ],
+    [ 791, 789, 788 ],
+    [ 781, 780, 778, 789, 790 ],
+    [ 793, 795, 794, 818, 816, 817 ],
+    [ 764, 796, 795, 792, 817, 761 ],
+    [ 795, 797, 898, 895, 818, 792 ],
+    [ 796, 798, 797, 794, 792, 793 ],
+    [ 770, 799, 798, 795, 793, 764 ],
+    [ 798, 800, 883, 898, 794, 795 ],
+    [ 799, 801, 800, 797, 795, 796 ],
+    [ 773, 802, 801, 798, 796, 770 ],
+    [ 801, 803, 886, 883, 797, 798 ],
+    [ 802, 804, 803, 800, 798, 799 ],
+    [ 806, 808, 804, 801, 799, 773 ],
+    [ 804, 873, 889, 886, 800, 801 ],
+    [ 808, 880, 873, 803, 801, 802 ],
+    [ 807, 806, 773, 771, 772 ],
+    [ 807, 809, 808, 802, 773, 805 ],
+    [ 809, 806, 805 ],
+    [ 809, 878, 880, 804, 802, 806 ],
+    [ 878, 808, 806, 807 ],
+    [ 811, 813, 812, 827, 825, 826 ],
+    [ 836, 814, 813, 810, 826, 833 ],
+    [ 813, 815, 907, 904, 827, 810 ],
+    [ 814, 816, 815, 812, 810, 811 ],
+    [ 758, 817, 816, 813, 811, 836 ],
+    [ 816, 818, 892, 907, 812, 813 ],
+    [ 817, 792, 818, 815, 813, 814 ],
+    [ 761, 793, 792, 816, 814, 758 ],
+    [ 792, 794, 895, 892, 815, 816 ],
+    [ 820, 822, 821, 854, 852, 853 ],
+    [ 845, 823, 822, 819, 853, 842 ],
+    [ 822, 824, 916, 913, 854, 819 ],
+    [ 823, 825, 824, 821, 819, 820 ],
+    [ 830, 826, 825, 822, 820, 845 ],
+    [ 825, 827, 901, 916, 821, 822 ],
+    [ 826, 810, 827, 824, 822, 823 ],
+    [ 833, 811, 810, 825, 823, 830 ],
+    [ 810, 812, 904, 901, 824, 825 ],
+    [ 829, 831, 830, 845, 843, 844 ],
+    [ 746, 832, 831, 828, 844, 743 ],
+    [ 831, 833, 826, 823, 845, 828 ],
+    [ 832, 834, 833, 830, 828, 829 ],
+    [ 775, 835, 834, 831, 829, 746 ],
+    [ 834, 836, 811, 826, 830, 831 ],
+    [ 835, 756, 836, 833, 831, 832 ],
+    [ 777, 757, 756, 834, 832, 775 ],
+    [ 756, 758, 814, 811, 833, 834 ],
+    [ 838, 840, 839, 863, 861, 862 ],
+    [ 755, 841, 840, 837, 862, 752 ],
+    [ 840, 842, 853, 850, 863, 837 ],
+    [ 841, 843, 842, 839, 837, 838 ],
+    [ 740, 844, 843, 840, 838, 755 ],
+    [ 843, 845, 820, 853, 839, 840 ],
+    [ 844, 828, 845, 842, 840, 841 ],
+    [ 743, 829, 828, 843, 841, 740 ],
+    [ 828, 830, 823, 820, 842, 843 ],
+    [ 847, 849, 848, 935, 933, 934 ],
+    [ 863, 850, 849, 846, 934, 860 ],
+    [ 849, 851, 925, 922, 935, 846 ],
+    [ 850, 852, 851, 848, 846, 847 ],
+    [ 839, 853, 852, 849, 847, 863 ],
+    [ 852, 854, 910, 925, 848, 849 ],
+    [ 853, 819, 854, 851, 849, 850 ],
+    [ 842, 820, 819, 852, 850, 839 ],
+    [ 819, 821, 913, 910, 851, 852 ],
+    [ 856, 858, 857, 665, 663, 664 ],
+    [ 683, 859, 858, 855, 664, 680 ],
+    [ 858, 860, 934, 931, 665, 855 ],
+    [ 859, 861, 860, 857, 855, 856 ],
+    [ 749, 862, 861, 858, 856, 683 ],
+    [ 861, 863, 847, 934, 857, 858 ],
+    [ 862, 837, 863, 860, 858, 859 ],
+    [ 752, 838, 837, 861, 859, 749 ],
+    [ 837, 839, 850, 847, 860, 861 ],
+    [ 865, 866, 952, 949, 890, 875 ],
+    [ 876, 867, 866, 864, 875, 874 ],
+    [ 867, 869, 937, 952, 864, 865 ],
+    [ 868, 870, 869, 866, 865, 876 ],
+    [ 870, 867, 876, 881 ],
+    [ 870, 872, 871, 937, 866, 867 ],
+    [ 872, 869, 867, 868 ],
+    [ 872, 941, 939, 937, 869 ],
+    [ 871, 869, 870 ],
+    [ 880, 877, 874, 889, 803, 804 ],
+    [ 877, 876, 865, 875, 889, 873 ],
+    [ 874, 865, 864, 890, 888, 889 ],
+    [ 881, 868, 867, 865, 874, 877 ],
+    [ 879, 881, 876, 874, 873, 880 ],
+    [ 879, 880, 808, 809 ],
+    [ 881, 877, 880, 878 ],
+    [ 878, 879, 877, 873, 804, 808 ],
+    [ 868, 876, 877, 879 ],
+    [ 883, 885, 884, 899, 897, 898 ],
+    [ 800, 886, 885, 882, 898, 797 ],
+    [ 885, 887, 961, 958, 899, 882 ],
+    [ 886, 888, 887, 884, 882, 883 ],
+    [ 803, 889, 888, 885, 883, 800 ],
+    [ 888, 890, 946, 961, 884, 885 ],
+    [ 889, 875, 890, 887, 885, 886 ],
+    [ 873, 874, 875, 888, 886, 803 ],
+    [ 875, 864, 949, 946, 887, 888 ],
+    [ 892, 894, 893, 908, 906, 907 ],
+    [ 818, 895, 894, 891, 907, 815 ],
+    [ 894, 896, 970, 967, 908, 891 ],
+    [ 895, 897, 896, 893, 891, 892 ],
+    [ 794, 898, 897, 894, 892, 818 ],
+    [ 897, 899, 955, 970, 893, 894 ],
+    [ 898, 882, 899, 896, 894, 895 ],
+    [ 797, 883, 882, 897, 895, 794 ],
+    [ 882, 884, 958, 955, 896, 897 ],
+    [ 901, 903, 902, 917, 915, 916 ],
+    [ 827, 904, 903, 900, 916, 824 ],
+    [ 903, 905, 979, 976, 917, 900 ],
+    [ 904, 906, 905, 902, 900, 901 ],
+    [ 812, 907, 906, 903, 901, 827 ],
+    [ 906, 908, 964, 979, 902, 903 ],
+    [ 907, 891, 908, 905, 903, 904 ],
+    [ 815, 892, 891, 906, 904, 812 ],
+    [ 891, 893, 967, 964, 905, 906 ],
+    [ 910, 912, 911, 926, 924, 925 ],
+    [ 854, 913, 912, 909, 925, 851 ],
+    [ 912, 914, 988, 985, 926, 909 ],
+    [ 913, 915, 914, 911, 909, 910 ],
+    [ 821, 916, 915, 912, 910, 854 ],
+    [ 915, 917, 973, 988, 911, 912 ],
+    [ 916, 900, 917, 914, 912, 913 ],
+    [ 824, 901, 900, 915, 913, 821 ],
+    [ 900, 902, 976, 973, 914, 915 ],
+    [ 919, 921, 920, 539, 537, 538 ],
+    [ 935, 922, 921, 918, 538, 932 ],
+    [ 921, 923, 430, 427, 539, 918 ],
+    [ 922, 924, 923, 920, 918, 919 ],
+    [ 848, 925, 924, 921, 919, 935 ],
+    [ 924, 926, 982, 430, 920, 921 ],
+    [ 925, 909, 926, 923, 921, 922 ],
+    [ 851, 910, 909, 924, 922, 848 ],
+    [ 909, 911, 985, 982, 923, 924 ],
+    [ 928, 930, 929, 530, 528, 529 ],
+    [ 665, 931, 930, 927, 529, 662 ],
+    [ 930, 932, 538, 535, 530, 927 ],
+    [ 931, 933, 932, 929, 927, 928 ],
+    [ 857, 934, 933, 930, 928, 665 ],
+    [ 933, 935, 919, 538, 929, 930 ],
+    [ 934, 846, 935, 932, 930, 931 ],
+    [ 860, 847, 846, 933, 931, 857 ],
+    [ 846, 848, 922, 919, 932, 933 ],
+    [ 937, 939, 938, 953, 951, 952 ],
+    [ 869, 871, 939, 936, 952, 866 ],
+    [ 939, 940, 1015, 1012, 953, 936 ],
+    [ 871, 941, 940, 938, 936, 937 ],
+    [ 941, 943, 942, 1015, 938, 939 ],
+    [ 943, 940, 939, 871 ],
+    [ 943, 944, 1056, 1053, 1015, 940 ],
+    [ 944, 942, 940, 941 ],
+    [ 1056, 942, 943 ],
+    [ 946, 948, 947, 962, 960, 961 ],
+    [ 890, 949, 948, 945, 961, 887 ],
+    [ 948, 950, 1024, 1021, 962, 945 ],
+    [ 949, 951, 950, 947, 945, 946 ],
+    [ 864, 952, 951, 948, 946, 890 ],
+    [ 951, 953, 1009, 1024, 947, 948 ],
+    [ 952, 936, 953, 950, 948, 949 ],
+    [ 866, 937, 936, 951, 949, 864 ],
+    [ 936, 938, 1012, 1009, 950, 951 ],
+    [ 955, 957, 956, 971, 969, 970 ],
+    [ 899, 958, 957, 954, 970, 896 ],
+    [ 957, 959, 1033, 1030, 971, 954 ],
+    [ 958, 960, 959, 956, 954, 955 ],
+    [ 884, 961, 960, 957, 955, 899 ],
+    [ 960, 962, 1018, 1033, 956, 957 ],
+    [ 961, 945, 962, 959, 957, 958 ],
+    [ 887, 946, 945, 960, 958, 884 ],
+    [ 945, 947, 1021, 1018, 959, 960 ],
+    [ 964, 966, 965, 980, 978, 979 ],
+    [ 908, 967, 966, 963, 979, 905 ],
+    [ 966, 968, 1042, 1039, 980, 963 ],
+    [ 967, 969, 968, 965, 963, 964 ],
+    [ 893, 970, 969, 966, 964, 908 ],
+    [ 969, 971, 1027, 1042, 965, 966 ],
+    [ 970, 954, 971, 968, 966, 967 ],
+    [ 896, 955, 954, 969, 967, 893 ],
+    [ 954, 956, 1030, 1027, 968, 969 ],
+    [ 973, 975, 974, 989, 987, 988 ],
+    [ 917, 976, 975, 972, 988, 914 ],
+    [ 975, 977, 997, 994, 989, 972 ],
+    [ 976, 978, 977, 974, 972, 973 ],
+    [ 902, 979, 978, 975, 973, 917 ],
+    [ 978, 980, 1036, 997, 974, 975 ],
+    [ 979, 963, 980, 977, 975, 976 ],
+    [ 905, 964, 963, 978, 976, 902 ],
+    [ 963, 965, 1039, 1036, 977, 978 ],
+    [ 982, 984, 983, 431, 429, 430 ],
+    [ 926, 985, 984, 981, 430, 923 ],
+    [ 984, 986, 1006, 1003, 431, 981 ],
+    [ 985, 987, 986, 983, 981, 982 ],
+    [ 911, 988, 987, 984, 982, 926 ],
+    [ 987, 989, 991, 1006, 983, 984 ],
+    [ 988, 972, 989, 986, 984, 985 ],
+    [ 914, 973, 972, 987, 985, 911 ],
+    [ 972, 974, 994, 991, 986, 987 ],
+    [ 991, 993, 992, 1007, 1005, 1006 ],
+    [ 989, 994, 993, 990, 1006, 986 ],
+    [ 993, 995, 1105, 1102, 1007, 990 ],
+    [ 994, 996, 995, 992, 990, 991 ],
+    [ 974, 997, 996, 993, 991, 989 ],
+    [ 996, 998, 1090, 1105, 992, 993 ],
+    [ 997, 1035, 998, 995, 993, 994 ],
+    [ 977, 1036, 1035, 996, 994, 974 ],
+    [ 1035, 1037, 1093, 1090, 995, 996 ],
+    [ 1000, 1002, 1001, 386, 384, 385 ],
+    [ 431, 1003, 1002, 999, 385, 428 ],
+    [ 1002, 1004, 394, 391, 386, 999 ],
+    [ 1003, 1005, 1004, 1001, 999, 1000 ],
+    [ 983, 1006, 1005, 1002, 1000, 431 ],
+    [ 1005, 1007, 1099, 394, 1001, 1002 ],
+    [ 1006, 990, 1007, 1004, 1002, 1003 ],
+    [ 986, 991, 990, 1005, 1003, 983 ],
+    [ 990, 992, 1102, 1099, 1004, 1005 ],
+    [ 1009, 1011, 1010, 1025, 1023, 1024 ],
+    [ 953, 1012, 1011, 1008, 1024, 950 ],
+    [ 1011, 1013, 1069, 1066, 1025, 1008 ],
+    [ 1012, 1014, 1013, 1010, 1008, 1009 ],
+    [ 938, 1015, 1014, 1011, 1009, 953 ],
+    [ 1014, 1016, 1045, 1069, 1010, 1011 ],
+    [ 1015, 1053, 1016, 1013, 1011, 1012 ],
+    [ 940, 942, 1053, 1014, 1012, 938 ],
+    [ 1053, 1055, 1054, 1045, 1013, 1014 ],
+    [ 1018, 1020, 1019, 1034, 1032, 1033 ],
+    [ 962, 1021, 1020, 1017, 1033, 959 ],
+    [ 1020, 1022, 1078, 1075, 1034, 1017 ],
+    [ 1021, 1023, 1022, 1019, 1017, 1018 ],
+    [ 947, 1024, 1023, 1020, 1018, 962 ],
+    [ 1023, 1025, 1063, 1078, 1019, 1020 ],
+    [ 1024, 1008, 1025, 1022, 1020, 1021 ],
+    [ 950, 1009, 1008, 1023, 1021, 947 ],
+    [ 1008, 1010, 1066, 1063, 1022, 1023 ],
+    [ 1027, 1029, 1028, 1043, 1041, 1042 ],
+    [ 971, 1030, 1029, 1026, 1042, 968 ],
+    [ 1029, 1031, 1087, 1084, 1043, 1026 ],
+    [ 1030, 1032, 1031, 1028, 1026, 1027 ],
+    [ 956, 1033, 1032, 1029, 1027, 971 ],
+    [ 1032, 1034, 1072, 1087, 1028, 1029 ],
+    [ 1033, 1017, 1034, 1031, 1029, 1030 ],
+    [ 959, 1018, 1017, 1032, 1030, 956 ],
+    [ 1017, 1019, 1075, 1072, 1031, 1032 ],
+    [ 1036, 1038, 1037, 998, 996, 997 ],
+    [ 980, 1039, 1038, 1035, 997, 977 ],
+    [ 1038, 1040, 1096, 1093, 998, 1035 ],
+    [ 1039, 1041, 1040, 1037, 1035, 1036 ],
+    [ 965, 1042, 1041, 1038, 1036, 980 ],
+    [ 1041, 1043, 1081, 1096, 1037, 1038 ],
+    [ 1042, 1026, 1043, 1040, 1038, 1039 ],
+    [ 968, 1027, 1026, 1041, 1039, 965 ],
+    [ 1026, 1028, 1084, 1081, 1040, 1041 ],
+    [ 1045, 1047, 1046, 1070, 1068, 1069 ],
+    [ 1016, 1054, 1047, 1044, 1069, 1013 ],
+    [ 1047, 1048, 1168, 1165, 1070, 1044 ],
+    [ 1054, 1057, 1048, 1046, 1044, 1045 ],
+    [ 1057, 1059, 1050, 1168, 1046, 1047 ],
+    [ 1050, 1051, 1157, 1169, 1167, 1168 ],
+    [ 1059, 1052, 1051, 1049, 1168, 1048 ],
+    [ 1052, 1160, 1157, 1049, 1050 ],
+    [ 1051, 1050, 1059 ],
+    [ 942, 1056, 1055, 1016, 1014, 1015 ],
+    [ 1055, 1058, 1057, 1047, 1045, 1016 ],
+    [ 1056, 1060, 1058, 1054, 1016, 1053 ],
+    [ 944, 1060, 1055, 1053, 942 ],
+    [ 1058, 1061, 1059, 1048, 1047, 1054 ],
+    [ 1060, 1061, 1057, 1054, 1055 ],
+    [ 1061, 1052, 1050, 1048, 1057 ],
+    [ 1058, 1055, 1056 ],
+    [ 1059, 1057, 1058 ],
+    [ 1063, 1065, 1064, 1079, 1077, 1078 ],
+    [ 1025, 1066, 1065, 1062, 1078, 1022 ],
+    [ 1065, 1067, 1177, 1174, 1079, 1062 ],
+    [ 1066, 1068, 1067, 1064, 1062, 1063 ],
+    [ 1010, 1069, 1068, 1065, 1063, 1025 ],
+    [ 1068, 1070, 1162, 1177, 1064, 1065 ],
+    [ 1069, 1044, 1070, 1067, 1065, 1066 ],
+    [ 1013, 1045, 1044, 1068, 1066, 1010 ],
+    [ 1044, 1046, 1165, 1162, 1067, 1068 ],
+    [ 1072, 1074, 1073, 1088, 1086, 1087 ],
+    [ 1034, 1075, 1074, 1071, 1087, 1031 ],
+    [ 1074, 1076, 1186, 1183, 1088, 1071 ],
+    [ 1075, 1077, 1076, 1073, 1071, 1072 ],
+    [ 1019, 1078, 1077, 1074, 1072, 1034 ],
+    [ 1077, 1079, 1171, 1186, 1073, 1074 ],
+    [ 1078, 1062, 1079, 1076, 1074, 1075 ],
+    [ 1022, 1063, 1062, 1077, 1075, 1019 ],
+    [ 1062, 1064, 1174, 1171, 1076, 1077 ],
+    [ 1081, 1083, 1082, 1097, 1095, 1096 ],
+    [ 1043, 1084, 1083, 1080, 1096, 1040 ],
+    [ 1083, 1085, 1123, 1120, 1097, 1080 ],
+    [ 1084, 1086, 1085, 1082, 1080, 1081 ],
+    [ 1028, 1087, 1086, 1083, 1081, 1043 ],
+    [ 1086, 1088, 1180, 1123, 1082, 1083 ],
+    [ 1087, 1071, 1088, 1085, 1083, 1084 ],
+    [ 1031, 1072, 1071, 1086, 1084, 1028 ],
+    [ 1071, 1073, 1183, 1180, 1085, 1086 ],
+    [ 1090, 1092, 1091, 1106, 1104, 1105 ],
+    [ 998, 1093, 1092, 1089, 1105, 995 ],
+    [ 1092, 1094, 1132, 1129, 1106, 1089 ],
+    [ 1093, 1095, 1094, 1091, 1089, 1090 ],
+    [ 1037, 1096, 1095, 1092, 1090, 998 ],
+    [ 1095, 1097, 1117, 1132, 1091, 1092 ],
+    [ 1096, 1080, 1097, 1094, 1092, 1093 ],
+    [ 1040, 1081, 1080, 1095, 1093, 1037 ],
+    [ 1080, 1082, 1120, 1117, 1094, 1095 ],
+    [ 1099, 1101, 1100, 395, 393, 394 ],
+    [ 1007, 1102, 1101, 1098, 394, 1004 ],
+    [ 1101, 1103, 1114, 1111, 395, 1098 ],
+    [ 1102, 1104, 1103, 1100, 1098, 1099 ],
+    [ 992, 1105, 1104, 1101, 1099, 1007 ],
+    [ 1104, 1106, 1126, 1114, 1100, 1101 ],
+    [ 1105, 1089, 1106, 1103, 1101, 1102 ],
+    [ 995, 1090, 1089, 1104, 1102, 992 ],
+    [ 1089, 1091, 1129, 1126, 1103, 1104 ],
+    [ 1108, 1110, 1109, 287, 285, 286 ],
+    [ 395, 1111, 1110, 1107, 286, 392 ],
+    [ 1110, 1112, 1150, 1147, 287, 1107 ],
+    [ 1111, 1113, 1112, 1109, 1107, 1108 ],
+    [ 1100, 1114, 1113, 1110, 1108, 395 ],
+    [ 1113, 1115, 1135, 1150, 1109, 1110 ],
+    [ 1114, 1125, 1115, 1112, 1110, 1111 ],
+    [ 1103, 1126, 1125, 1113, 1111, 1100 ],
+    [ 1125, 1127, 1138, 1135, 1112, 1113 ],
+    [ 1117, 1119, 1118, 1133, 1131, 1132 ],
+    [ 1097, 1120, 1119, 1116, 1132, 1094 ],
+    [ 1119, 1121, 1240, 1237, 1133, 1116 ],
+    [ 1120, 1122, 1121, 1118, 1116, 1117 ],
+    [ 1082, 1123, 1122, 1119, 1117, 1097 ],
+    [ 1122, 1124, 1216, 1240, 1118, 1119 ],
+    [ 1123, 1179, 1124, 1121, 1119, 1120 ],
+    [ 1085, 1180, 1179, 1122, 1120, 1082 ],
+    [ 1179, 1181, 1219, 1216, 1121, 1122 ],
+    [ 1126, 1128, 1127, 1115, 1113, 1114 ],
+    [ 1106, 1129, 1128, 1125, 1114, 1103 ],
+    [ 1128, 1130, 1141, 1138, 1115, 1125 ],
+    [ 1129, 1131, 1130, 1127, 1125, 1126 ],
+    [ 1091, 1132, 1131, 1128, 1126, 1106 ],
+    [ 1131, 1133, 1234, 1141, 1127, 1128 ],
+    [ 1132, 1116, 1133, 1130, 1128, 1129 ],
+    [ 1094, 1117, 1116, 1131, 1129, 1091 ],
+    [ 1116, 1118, 1237, 1234, 1130, 1131 ],
+    [ 1135, 1137, 1136, 1151, 1149, 1150 ],
+    [ 1115, 1138, 1137, 1134, 1150, 1112 ],
+    [ 1137, 1139, 1258, 1255, 1151, 1134 ],
+    [ 1138, 1140, 1139, 1136, 1134, 1135 ],
+    [ 1127, 1141, 1140, 1137, 1135, 1115 ],
+    [ 1140, 1142, 1225, 1258, 1136, 1137 ],
+    [ 1141, 1233, 1142, 1139, 1137, 1138 ],
+    [ 1130, 1234, 1233, 1140, 1138, 1127 ],
+    [ 1233, 1235, 1228, 1225, 1139, 1140 ],
+    [ 1144, 1146, 1145, 260, 258, 259 ],
+    [ 287, 1147, 1146, 1143, 259, 284 ],
+    [ 1146, 1148, 205, 202, 260, 1143 ],
+    [ 1147, 1149, 1148, 1145, 1143, 1144 ],
+    [ 1109, 1150, 1149, 1146, 1144, 287 ],
+    [ 1149, 1151, 1252, 205, 1145, 1146 ],
+    [ 1150, 1134, 1151, 1148, 1146, 1147 ],
+    [ 1112, 1135, 1134, 1149, 1147, 1109 ],
+    [ 1134, 1136, 1255, 1252, 1148, 1149 ],
+    [ 1153, 1155, 1154, 1205, 1203, 1204 ],
+    [ 1169, 1156, 1155, 1152, 1204, 1166 ],
+    [ 1155, 1194, 1192, 1190, 1205, 1152 ],
+    [ 1156, 1158, 1194, 1154, 1152, 1153 ],
+    [ 1157, 1159, 1158, 1155, 1153, 1169 ],
+    [ 1051, 1160, 1159, 1156, 1169, 1049 ],
+    [ 1159, 1194, 1155, 1156 ],
+    [ 1160, 1158, 1156, 1157 ],
+    [ 1159, 1157, 1051 ],
+    [ 1162, 1164, 1163, 1178, 1176, 1177 ],
+    [ 1070, 1165, 1164, 1161, 1177, 1067 ],
+    [ 1164, 1166, 1204, 1201, 1178, 1161 ],
+    [ 1165, 1167, 1166, 1163, 1161, 1162 ],
+    [ 1046, 1168, 1167, 1164, 1162, 1070 ],
+    [ 1167, 1169, 1153, 1204, 1163, 1164 ],
+    [ 1168, 1049, 1169, 1166, 1164, 1165 ],
+    [ 1048, 1050, 1049, 1167, 1165, 1046 ],
+    [ 1049, 1157, 1156, 1153, 1166, 1167 ],
+    [ 1171, 1173, 1172, 1187, 1185, 1186 ],
+    [ 1079, 1174, 1173, 1170, 1186, 1076 ],
+    [ 1173, 1175, 1213, 1210, 1187, 1170 ],
+    [ 1174, 1176, 1175, 1172, 1170, 1171 ],
+    [ 1064, 1177, 1176, 1173, 1171, 1079 ],
+    [ 1176, 1178, 1198, 1213, 1172, 1173 ],
+    [ 1177, 1161, 1178, 1175, 1173, 1174 ],
+    [ 1067, 1162, 1161, 1176, 1174, 1064 ],
+    [ 1161, 1163, 1201, 1198, 1175, 1176 ],
+    [ 1180, 1182, 1181, 1124, 1122, 1123 ],
+    [ 1088, 1183, 1182, 1179, 1123, 1085 ],
+    [ 1182, 1184, 1222, 1219, 1124, 1179 ],
+    [ 1183, 1185, 1184, 1181, 1179, 1180 ],
+    [ 1073, 1186, 1185, 1182, 1180, 1088 ],
+    [ 1185, 1187, 1207, 1222, 1181, 1182 ],
+    [ 1186, 1170, 1187, 1184, 1182, 1183 ],
+    [ 1076, 1171, 1170, 1185, 1183, 1073 ],
+    [ 1170, 1172, 1210, 1207, 1184, 1185 ],
+    [ 1205, 1190, 1189, 1260, 1276, 1202 ],
+    [ 1190, 1191, 1263, 1262, 1260, 1188 ],
+    [ 1154, 1192, 1191, 1189, 1188, 1205 ],
+    [ 1192, 1195, 1193, 1263, 1189, 1190 ],
+    [ 1194, 1196, 1195, 1191, 1190, 1154 ],
+    [ 1195, 1268, 1263, 1191 ],
+    [ 1158, 1196, 1192, 1154, 1155 ],
+    [ 1196, 1193, 1191, 1192 ],
+    [ 1195, 1192, 1194 ],
+    [ 1198, 1200, 1199, 1214, 1212, 1213 ],
+    [ 1178, 1201, 1200, 1197, 1213, 1175 ],
+    [ 1200, 1202, 1276, 1273, 1214, 1197 ],
+    [ 1201, 1203, 1202, 1199, 1197, 1198 ],
+    [ 1163, 1204, 1203, 1200, 1198, 1178 ],
+    [ 1203, 1205, 1188, 1276, 1199, 1200 ],
+    [ 1204, 1152, 1205, 1202, 1200, 1201 ],
+    [ 1166, 1153, 1152, 1203, 1201, 1163 ],
+    [ 1152, 1154, 1190, 1188, 1202, 1203 ],
+    [ 1207, 1209, 1208, 1223, 1221, 1222 ],
+    [ 1187, 1210, 1209, 1206, 1222, 1184 ],
+    [ 1209, 1211, 1285, 1282, 1223, 1206 ],
+    [ 1210, 1212, 1211, 1208, 1206, 1207 ],
+    [ 1172, 1213, 1212, 1209, 1207, 1187 ],
+    [ 1212, 1214, 1270, 1285, 1208, 1209 ],
+    [ 1213, 1197, 1214, 1211, 1209, 1210 ],
+    [ 1175, 1198, 1197, 1212, 1210, 1172 ],
+    [ 1197, 1199, 1273, 1270, 1211, 1212 ],
+    [ 1216, 1218, 1217, 1241, 1239, 1240 ],
+    [ 1124, 1219, 1218, 1215, 1240, 1121 ],
+    [ 1218, 1220, 1294, 1291, 1241, 1215 ],
+    [ 1219, 1221, 1220, 1217, 1215, 1216 ],
+    [ 1181, 1222, 1221, 1218, 1216, 1124 ],
+    [ 1221, 1223, 1279, 1294, 1217, 1218 ],
+    [ 1222, 1206, 1223, 1220, 1218, 1219 ],
+    [ 1184, 1207, 1206, 1221, 1219, 1181 ],
+    [ 1206, 1208, 1282, 1279, 1220, 1221 ],
+    [ 1225, 1227, 1226, 1259, 1257, 1258 ],
+    [ 1142, 1228, 1227, 1224, 1258, 1139 ],
+    [ 1227, 1229, 1249, 1246, 1259, 1224 ],
+    [ 1228, 1230, 1229, 1226, 1224, 1225 ],
+    [ 1235, 1231, 1230, 1227, 1225, 1142 ],
+    [ 1230, 1232, 1324, 1249, 1226, 1227 ],
+    [ 1231, 1287, 1232, 1229, 1227, 1228 ],
+    [ 1238, 1288, 1287, 1230, 1228, 1235 ],
+    [ 1287, 1289, 1327, 1324, 1229, 1230 ],
+    [ 1234, 1236, 1235, 1142, 1140, 1141 ],
+    [ 1133, 1237, 1236, 1233, 1141, 1130 ],
+    [ 1236, 1238, 1231, 1228, 1142, 1233 ],
+    [ 1237, 1239, 1238, 1235, 1233, 1234 ],
+    [ 1118, 1240, 1239, 1236, 1234, 1133 ],
+    [ 1239, 1241, 1288, 1231, 1235, 1236 ],
+    [ 1240, 1215, 1241, 1238, 1236, 1237 ],
+    [ 1121, 1216, 1215, 1239, 1237, 1118 ],
+    [ 1215, 1217, 1291, 1288, 1238, 1239 ],
+    [ 1243, 1245, 1244, 215, 213, 214 ],
+    [ 1259, 1246, 1245, 1242, 214, 1256 ],
+    [ 1245, 1247, 1384, 1381, 215, 1242 ],
+    [ 1246, 1248, 1247, 1244, 1242, 1243 ],
+    [ 1226, 1249, 1248, 1245, 1243, 1259 ],
+    [ 1248, 1250, 1369, 1384, 1244, 1245 ],
+    [ 1249, 1323, 1250, 1247, 1245, 1246 ],
+    [ 1229, 1324, 1323, 1248, 1246, 1226 ],
+    [ 1323, 1325, 1372, 1369, 1247, 1248 ],
+    [ 1252, 1254, 1253, 206, 204, 205 ],
+    [ 1151, 1255, 1254, 1251, 205, 1148 ],
+    [ 1254, 1256, 214, 211, 206, 1251 ],
+    [ 1255, 1257, 1256, 1253, 1251, 1252 ],
+    [ 1136, 1258, 1257, 1254, 1252, 1151 ],
+    [ 1257, 1259, 1243, 214, 1253, 1254 ],
+    [ 1258, 1224, 1259, 1256, 1254, 1255 ],
+    [ 1139, 1225, 1224, 1257, 1255, 1136 ],
+    [ 1224, 1226, 1246, 1243, 1256, 1257 ],
+    [ 1188, 1189, 1262, 1277, 1275, 1276 ],
+    [ 1262, 1265, 1264, 1299, 1297, 1277 ],
+    [ 1189, 1263, 1265, 1261, 1277, 1260 ],
+    [ 1191, 1193, 1268, 1265, 1262, 1189 ],
+    [ 1265, 1267, 1266, 1302, 1299, 1261 ],
+    [ 1263, 1268, 1267, 1264, 1261, 1262 ],
+    [ 1267, 1304, 1302, 1264 ],
+    [ 1268, 1266, 1264, 1265 ],
+    [ 1193, 1267, 1265, 1263 ],
+    [ 1270, 1272, 1271, 1286, 1284, 1285 ],
+    [ 1214, 1273, 1272, 1269, 1285, 1211 ],
+    [ 1272, 1274, 1312, 1309, 1286, 1269 ],
+    [ 1273, 1275, 1274, 1271, 1269, 1270 ],
+    [ 1199, 1276, 1275, 1272, 1270, 1214 ],
+    [ 1275, 1277, 1297, 1312, 1271, 1272 ],
+    [ 1276, 1260, 1277, 1274, 1272, 1273 ],
+    [ 1202, 1188, 1260, 1275, 1273, 1199 ],
+    [ 1260, 1262, 1261, 1297, 1274, 1275 ],
+    [ 1279, 1281, 1280, 1295, 1293, 1294 ],
+    [ 1223, 1282, 1281, 1278, 1294, 1220 ],
+    [ 1281, 1283, 1321, 1318, 1295, 1278 ],
+    [ 1282, 1284, 1283, 1280, 1278, 1279 ],
+    [ 1208, 1285, 1284, 1281, 1279, 1223 ],
+    [ 1284, 1286, 1306, 1321, 1280, 1281 ],
+    [ 1285, 1269, 1286, 1283, 1281, 1282 ],
+    [ 1211, 1270, 1269, 1284, 1282, 1208 ],
+    [ 1269, 1271, 1309, 1306, 1283, 1284 ],
+    [ 1288, 1290, 1289, 1232, 1230, 1231 ],
+    [ 1241, 1291, 1290, 1287, 1231, 1238 ],
+    [ 1290, 1292, 1330, 1327, 1232, 1287 ],
+    [ 1291, 1293, 1292, 1289, 1287, 1288 ],
+    [ 1217, 1294, 1293, 1290, 1288, 1241 ],
+    [ 1293, 1295, 1315, 1330, 1289, 1290 ],
+    [ 1294, 1278, 1295, 1292, 1290, 1291 ],
+    [ 1220, 1279, 1278, 1293, 1291, 1217 ],
+    [ 1278, 1280, 1318, 1315, 1292, 1293 ],
+    [ 1297, 1299, 1298, 1313, 1311, 1312 ],
+    [ 1277, 1261, 1299, 1296, 1312, 1274 ],
+    [ 1299, 1302, 1301, 1339, 1313, 1296 ],
+    [ 1261, 1264, 1302, 1298, 1296, 1297 ],
+    [ 1301, 1303, 1340, 1338, 1339 ],
+    [ 1302, 1304, 1303, 1300, 1339, 1298 ],
+    [ 1264, 1266, 1304, 1301, 1298, 1299 ],
+    [ 1304, 1300, 1301 ],
+    [ 1266, 1303, 1301, 1302 ],
+    [ 1306, 1308, 1307, 1322, 1320, 1321 ],
+    [ 1286, 1309, 1308, 1305, 1321, 1283 ],
+    [ 1308, 1310, 1348, 1345, 1322, 1305 ],
+    [ 1309, 1311, 1310, 1307, 1305, 1306 ],
+    [ 1271, 1312, 1311, 1308, 1306, 1286 ],
+    [ 1311, 1313, 1337, 1348, 1307, 1308 ],
+    [ 1312, 1296, 1313, 1310, 1308, 1309 ],
+    [ 1274, 1297, 1296, 1311, 1309, 1271 ],
+    [ 1296, 1298, 1339, 1337, 1310, 1311 ],
+    [ 1315, 1317, 1316, 1331, 1329, 1330 ],
+    [ 1295, 1318, 1317, 1314, 1330, 1292 ],
+    [ 1317, 1319, 1366, 1363, 1331, 1314 ],
+    [ 1318, 1320, 1319, 1316, 1314, 1315 ],
+    [ 1280, 1321, 1320, 1317, 1315, 1295 ],
+    [ 1320, 1322, 1342, 1366, 1316, 1317 ],
+    [ 1321, 1305, 1322, 1319, 1317, 1318 ],
+    [ 1283, 1306, 1305, 1320, 1318, 1280 ],
+    [ 1305, 1307, 1345, 1342, 1319, 1320 ],
+    [ 1324, 1326, 1325, 1250, 1248, 1249 ],
+    [ 1232, 1327, 1326, 1323, 1249, 1229 ],
+    [ 1326, 1328, 1375, 1372, 1250, 1323 ],
+    [ 1327, 1329, 1328, 1325, 1323, 1324 ],
+    [ 1289, 1330, 1329, 1326, 1324, 1232 ],
+    [ 1329, 1331, 1360, 1375, 1325, 1326 ],
+    [ 1330, 1314, 1331, 1328, 1326, 1327 ],
+    [ 1292, 1315, 1314, 1329, 1327, 1289 ],
+    [ 1314, 1316, 1363, 1360, 1328, 1329 ],
+    [ 1349, 1333, 1358, 1356, 1355, 1346 ],
+    [ 1334, 1335, 1358, 1332, 1349 ],
+    [ 1338, 1340, 1335, 1333, 1349, 1336 ],
+    [ 1340, 1333, 1334 ],
+    [ 1337, 1338, 1334, 1349, 1347, 1348 ],
+    [ 1313, 1339, 1338, 1336, 1348, 1310 ],
+    [ 1339, 1300, 1340, 1334, 1336, 1337 ],
+    [ 1298, 1301, 1300, 1338, 1337, 1313 ],
+    [ 1300, 1335, 1334, 1338 ],
+    [ 1342, 1344, 1343, 1367, 1365, 1366 ],
+    [ 1322, 1345, 1344, 1341, 1366, 1319 ],
+    [ 1344, 1346, 1355, 1353, 1367, 1341 ],
+    [ 1345, 1347, 1346, 1343, 1341, 1342 ],
+    [ 1307, 1348, 1347, 1344, 1342, 1322 ],
+    [ 1347, 1349, 1332, 1355, 1343, 1344 ],
+    [ 1348, 1336, 1349, 1346, 1344, 1345 ],
+    [ 1310, 1337, 1336, 1347, 1345, 1307 ],
+    [ 1336, 1334, 1333, 1332, 1346, 1347 ],
+    [ 1351, 1352, 1408, 1421, 1419, 1420 ],
+    [ 1367, 1353, 1352, 1350, 1420, 1364 ],
+    [ 1353, 1354, 1410, 1408, 1350, 1351 ],
+    [ 1343, 1355, 1354, 1352, 1351, 1367 ],
+    [ 1355, 1356, 1412, 1410, 1352, 1353 ],
+    [ 1346, 1332, 1356, 1354, 1353, 1343 ],
+    [ 1332, 1358, 1357, 1412, 1354, 1355 ],
+    [ 1358, 1412, 1356 ],
+    [ 1333, 1357, 1356, 1332 ],
+    [ 1360, 1362, 1361, 1376, 1374, 1375 ],
+    [ 1331, 1363, 1362, 1359, 1375, 1328 ],
+    [ 1362, 1364, 1420, 1417, 1376, 1359 ],
+    [ 1363, 1365, 1364, 1361, 1359, 1360 ],
+    [ 1316, 1366, 1365, 1362, 1360, 1331 ],
+    [ 1365, 1367, 1351, 1420, 1361, 1362 ],
+    [ 1366, 1341, 1367, 1364, 1362, 1363 ],
+    [ 1319, 1342, 1341, 1365, 1363, 1316 ],
+    [ 1341, 1343, 1353, 1351, 1364, 1365 ],
+    [ 1369, 1371, 1370, 1385, 1383, 1384 ],
+    [ 1250, 1372, 1371, 1368, 1384, 1247 ],
+    [ 1371, 1373, 1393, 1390, 1385, 1368 ],
+    [ 1372, 1374, 1373, 1370, 1368, 1369 ],
+    [ 1325, 1375, 1374, 1371, 1369, 1250 ],
+    [ 1374, 1376, 1414, 1393, 1370, 1371 ],
+    [ 1375, 1359, 1376, 1373, 1371, 1372 ],
+    [ 1328, 1360, 1359, 1374, 1372, 1325 ],
+    [ 1359, 1361, 1417, 1414, 1373, 1374 ],
+    [ 1378, 1380, 1379, 134, 132, 133 ],
+    [ 215, 1381, 1380, 1377, 133, 212 ],
+    [ 1380, 1382, 1402, 1399, 134, 1377 ],
+    [ 1381, 1383, 1382, 1379, 1377, 1378 ],
+    [ 1244, 1384, 1383, 1380, 1378, 215 ],
+    [ 1383, 1385, 1387, 1402, 1379, 1380 ],
+    [ 1384, 1368, 1385, 1382, 1380, 1381 ],
+    [ 1247, 1369, 1368, 1383, 1381, 1244 ],
+    [ 1368, 1370, 1390, 1387, 1382, 1383 ],
+    [ 1387, 1389, 1388, 1403, 1401, 1402 ],
+    [ 1385, 1390, 1389, 1386, 1402, 1382 ],
+    [ 1389, 1391, 1433, 1436, 1403, 1386 ],
+    [ 1390, 1392, 1391, 1388, 1386, 1387 ],
+    [ 1370, 1393, 1392, 1389, 1387, 1385 ],
+    [ 1392, 1394, 1430, 1433, 1388, 1389 ],
+    [ 1393, 1413, 1394, 1391, 1389, 1390 ],
+    [ 1373, 1414, 1413, 1392, 1390, 1370 ],
+    [ 1413, 1415, 1427, 1430, 1391, 1392 ],
+    [ 1396, 1398, 1397, 35, 33, 34 ],
+    [ 134, 1399, 1398, 1395, 34, 131 ],
+    [ 1398, 1400, 11, 14, 35, 1395 ],
+    [ 1399, 1401, 1400, 1397, 1395, 1396 ],
+    [ 1379, 1402, 1401, 1398, 1396, 134 ],
+    [ 1401, 1403, 1439, 11, 1397, 1398 ],
+    [ 1402, 1386, 1403, 1400, 1398, 1399 ],
+    [ 1382, 1387, 1386, 1401, 1399, 1379 ],
+    [ 1386, 1388, 1436, 1439, 1400, 1401 ],
+    [ 1421, 1406, 1405, 1422, 1424, 1418 ],
+    [ 1406, 1407, 1422, 1404 ],
+    [ 1408, 1409, 1407, 1405, 1404, 1421 ],
+    [ 1409, 1405, 1406 ],
+    [ 1352, 1410, 1409, 1406, 1421, 1350 ],
+    [ 1410, 1411, 1407, 1406, 1408 ],
+    [ 1354, 1412, 1411, 1409, 1408, 1352 ],
+    [ 1412, 1409, 1410 ],
+    [ 1356, 1357, 1411, 1410, 1354 ],
+    [ 1414, 1416, 1415, 1394, 1392, 1393 ],
+    [ 1376, 1417, 1416, 1413, 1393, 1373 ],
+    [ 1416, 1418, 1424, 1427, 1394, 1413 ],
+    [ 1417, 1419, 1418, 1415, 1413, 1414 ],
+    [ 1361, 1420, 1419, 1416, 1414, 1376 ],
+    [ 1419, 1421, 1404, 1424, 1415, 1416 ],
+    [ 1420, 1350, 1421, 1418, 1416, 1417 ],
+    [ 1364, 1351, 1350, 1419, 1417, 1361 ],
+    [ 1350, 1408, 1406, 1404, 1418, 1419 ],
+    [ 1404, 1405, 1423, 1425, 1424 ],
+    [ 1422, 1426, 1425 ],
+    [ 1418, 1404, 1422, 1425, 1427, 1415 ],
+    [ 1424, 1422, 1423, 1426, 1428, 1427 ],
+    [ 1425, 1423, 1429, 1428 ],
+    [ 1415, 1424, 1425, 1428, 1430, 1394 ],
+    [ 1427, 1425, 1426, 1429, 1431, 1430 ],
+    [ 1428, 1426, 1432, 1431 ],
+    [ 1394, 1427, 1428, 1431, 1433, 1391 ],
+    [ 1430, 1428, 1429, 1432, 1434, 1433 ],
+    [ 1431, 1429, 1435, 1434 ],
+    [ 1391, 1430, 1431, 1434, 1436, 1388 ],
+    [ 1433, 1431, 1432, 1435, 1437, 1436 ],
+    [ 1434, 1432, 1438, 1437 ],
+    [ 1388, 1433, 1434, 1437, 1439, 1403 ],
+    [ 1436, 1434, 1435, 1438, 9, 1439 ],
+    [ 1437, 1435, 10, 9 ],
+    [ 1403, 1436, 1437, 9, 11, 1400 ],
+];
+
+$.map = [393,390,391,394,1098,395,392,389,387,388,386,1001,1004,1099,1101,1100,1111,1108,286,283,377,375,376,383,384,999,1002,1005,1007,1102,1104,1103,1114,1113,1110,1107,285,282,280,374,372,373,380,381,382,385,1000,1003,1006,990,992,1105,1089,1106,1126,1125,1115,1112,1109,287,284,281,279,277,371,369,370,413,378,379,422,425,428,431,983,986,991,993,995,1090,1092,1091,1129,1128,1127,1138,1135,1150,1147,1144,259,256,278,276,274,368,366,367,410,411,412,419,420,423,426,429,981,984,987,989,994,996,998,1093,1095,1094,1132,1131,1130,1141,1140,1137,1134,1149,1146,1143,258,255,253,275,273,271,365,363,364,407,408,409,416,417,418,421,424,427,430,982,985,988,972,974,997,1035,1037,1096,1080,1097,1117,1116,1133,1234,1233,1142,1139,1136,1151,1148,1145,260,257,254,252,268,272,270,322,362,360,361,404,405,406,521,414,415,512,533,536,539,920,923,926,911,914,973,975,977,1036,1038,1040,1081,1083,1082,1120,1119,1118,1237,1236,1235,1228,1225,1258,1255,1252,205,202,199,196,193,269,267,265,323,321,319,359,357,358,401,402,403,518,519,520,509,510,531,534,537,918,921,924,909,912,915,917,976,978,980,1039,1041,1043,1084,1086,1085,1123,1122,1121,1240,1239,1238,1231,1230,1227,1224,1257,1254,1251,204,201,198,195,192,190,266,264,262,320,318,316,356,354,355,398,399,400,515,516,517,506,507,508,511,532,535,538,919,922,925,910,913,916,900,902,979,963,965,1042,1026,1028,1087,1071,1088,1180,1179,1124,1216,1215,1241,1288,1287,1232,1229,1226,1259,1256,1253,206,203,200,197,194,191,189,187,263,261,250,317,315,313,353,351,352,467,396,397,503,513,514,575,504,505,611,524,527,530,929,932,935,848,851,854,821,824,901,903,905,964,966,968,1027,1029,1031,1072,1074,1073,1183,1182,1181,1219,1218,1217,1291,1290,1289,1327,1324,1249,1246,1243,214,211,208,142,139,136,106,103,188,186,184,251,249,247,314,312,310,350,348,349,464,465,466,500,501,502,572,573,574,608,609,522,525,528,927,930,933,846,849,852,819,822,825,827,904,906,908,967,969,971,1030,1032,1034,1075,1077,1076,1186,1185,1184,1222,1221,1220,1294,1293,1292,1330,1329,1326,1323,1248,1245,1242,213,210,207,141,138,135,105,102,100,185,183,181,248,246,244,311,309,307,347,345,346,461,462,463,497,498,499,569,570,571,605,606,607,610,523,526,529,928,931,934,847,850,853,820,823,826,810,812,907,891,893,970,954,956,1033,1017,1019,1078,1062,1079,1171,1170,1187,1207,1206,1223,1279,1278,1295,1315,1314,1331,1328,1325,1250,1247,1244,215,212,209,143,140,137,107,104,101,99,97,182,180,178,245,243,241,308,306,304,344,342,343,458,459,460,494,495,496,566,567,568,602,603,604,647,650,653,656,659,662,665,857,860,863,839,842,845,830,833,811,813,815,892,894,896,955,957,959,1018,1020,1022,1063,1065,1064,1174,1173,1172,1210,1209,1208,1282,1281,1280,1318,1317,1316,1363,1360,1375,1372,1369,1384,1381,1378,133,130,127,124,121,118,115,112,98,96,94,179,177,175,242,240,238,305,303,301,332,330,331,455,456,457,491,492,493,563,564,565,599,600,601,644,645,648,651,654,657,660,663,855,858,861,837,840,843,828,831,834,836,814,816,818,895,897,899,958,960,962,1021,1023,1025,1066,1068,1067,1177,1176,1175,1213,1212,1211,1285,1284,1283,1321,1320,1319,1366,1365,1362,1359,1374,1371,1368,1383,1380,1377,132,129,126,123,120,117,114,111,109,95,93,91,176,174,172,239,237,235,302,300,298,329,327,328,452,453,454,488,489,490,560,561,562,596,597,598,641,642,643,646,649,652,655,658,661,664,856,859,862,838,841,844,829,832,835,756,758,817,792,794,898,882,884,961,945,947,1024,1008,1010,1069,1044,1070,1162,1161,1178,1198,1197,1214,1270,1269,1286,1306,1305,1322,1342,1341,1367,1364,1361,1376,1373,1370,1385,1382,1379,134,131,128,125,122,119,116,113,110,108,43,92,90,79,173,171,169,236,234,232,299,297,295,326,324,325,449,450,451,485,486,487,557,558,559,593,594,595,629,639,640,638,695,698,701,668,671,674,677,680,683,749,752,755,740,743,746,775,777,757,759,761,793,795,797,883,885,887,946,948,950,1009,1011,1013,1045,1047,1046,1165,1164,1163,1201,1200,1199,1273,1272,1271,1309,1308,1307,1345,1344,1343,1353,1351,1420,1417,1414,1393,1390,1387,1402,1399,1396,34,31,28,25,22,19,62,60,44,42,40,80,78,76,170,168,166,233,231,229,296,294,292,341,339,340,446,447,448,482,483,484,554,555,556,590,591,592,626,627,628,636,637,693,696,699,666,669,672,675,678,681,747,750,753,738,741,744,774,776,778,779,760,762,764,796,798,800,886,888,890,949,951,953,1012,1014,1016,1054,1057,1048,1168,1167,1166,1204,1203,1202,1276,1275,1274,1312,1311,1310,1348,1347,1346,1355,1354,1352,1350,1419,1416,1413,1392,1389,1386,1401,1398,1395,33,30,27,24,21,18,61,59,58,41,39,37,77,75,73,167,165,163,230,228,226,293,291,289,338,336,337,443,444,445,479,480,481,551,552,553,587,588,589,623,624,625,634,635,684,687,694,697,700,667,670,673,676,679,682,748,751,754,739,742,745,787,789,791,780,765,763,769,770,799,801,803,889,875,864,952,936,938,1015,1053,1055,1058,1061,1059,1050,1049,1169,1153,1152,1205,1188,1260,1277,1297,1296,1313,1337,1336,1349,1332,1356,1412,1410,1408,1421,1418,1415,1394,1391,1388,1403,1400,1397,35,32,29,26,23,20,65,63,56,55,53,38,36,48,74,72,161,164,162,152,227,225,224,290,288,219,335,333,334,435,441,442,440,477,478,476,549,550,548,585,586,615,621,622,620,631,632,633,685,688,691,709,706,703,718,715,712,736,733,730,727,724,721,783,785,788,790,781,782,766,767,771,773,802,804,873,874,865,866,937,939,940,942,1056,1060,1052,1051,1157,1156,1155,1154,1190,1189,1262,1261,1299,1298,1339,1338,1334,1333,1358,1357,1411,1409,1406,1404,1424,1427,1430,1433,1436,1439,11,14,17,2,5,8,69,67,64,57,54,52,51,50,47,89,88,84,160,159,151,150,148,223,222,221,218,216,433,434,437,438,439,473,474,475,546,547,579,583,584,614,617,618,619,630,686,689,692,708,705,702,717,714,711,735,732,729,726,723,720,784,786,768,772,805,806,808,880,877,876,867,869,871,941,943,944,1160,1159,1158,1194,1192,1191,1263,1265,1264,1302,1301,1300,1340,1335,1407,1405,1422,1425,1428,1431,1434,1437,9,12,15,0,3,6,71,68,66,49,46,45,87,83,82,158,156,149,147,146,144,220,217,432,436,469,470,471,472,543,545,577,578,582,612,613,616,710,707,704,719,716,713,737,734,731,728,725,722,807,809,878,879,881,868,870,872,1196,1195,1193,1268,1267,1266,1304,1303,1423,1426,1429,1432,1435,1438,10,13,16,1,4,7,86,85,81,157,155,154,153,145,468,540,541,542,544,576,580,581,70,690];
+
+$.geom = (function()
+{
+    var s32 = Math.sqrt(3)/2;
+
+    function Position(s, ring, i)
+    {
+        var x, y;
+        switch (s)
+        {
+        case 1: x =  ring   - i/2;  y =        - i; break;
+        case 2: x =  ring/2 - i;    y =  -ring    ; break;
+        case 3: x = -ring/2 - i/2;  y =  -ring + i; break;
+        case 4: x = -ring   + i/2;  y =        + i; break;
+        case 5: x = -ring/2 + i;    y =   ring    ; break;
+        case 0: x =  ring/2 + i/2;  y =   ring - i; break;
+        }
+
+ 	var d = x*x + y*y*3/4;
+	if (d - x > 395.75)
+           return;
+
+        return [ x, y*s32 ];
+    }
+
+    var map = $.map;
+    var geom = new Array(1440);
+    geom[map[0]] = [ 0, 0 ];
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = Position(s, ring, i);
+                if (pos===undefined)
+                    continue;
+
+                geom[map[cnt++]] = pos;
+            }
+        }
+    }
+
+    geom[map[1438]] = [ 7, -22*s32 ];
+    geom[map[1439]] = [ 7,  22*s32 ];
+
+    return geom;
+})();
+
+$.dist = function(i, j)
+{
+    var dx = $.geom[i][0]-$.geom[j][0];
+    var dy = $.geom[i][1]-$.geom[j][1];
+
+    return Math.sqrt(dx*dx + dy*dy);
+}
+
+$.conv = 0.1111;
